From c8e45ac5bfa0210057bf92f703c6b2fa7ddc087e Mon Sep 17 00:00:00 2001 From: Max Inden Date: Wed, 19 Feb 2020 20:59:32 +0100 Subject: [PATCH 001/301] docs/CODEOWNERS: Add mxinden to /utils/prometheus/ (#4991) --- docs/CODEOWNERS | 3 +++ 1 file changed, 3 insertions(+) diff --git a/docs/CODEOWNERS b/docs/CODEOWNERS index 9304f27853..701df299a3 100644 --- a/docs/CODEOWNERS +++ b/docs/CODEOWNERS @@ -75,3 +75,6 @@ # Authority discovery /client/authority-discovery/ @mxinden /frame/authority-discovery/ @mxinden + +# Prometheus endpoint +/utils/prometheus/ @mxinden -- GitLab From ab53994d74b0ad6983432050d540f834a8dc2c7f Mon Sep 17 00:00:00 2001 From: Toralf Wittner Date: Wed, 19 Feb 2020 21:00:16 +0100 Subject: [PATCH 002/301] Log kademlia errors when get/put record fails. (#4988) * Log kademlia errors when get/put record fails. The current approach makes it difficult to figure out what the underlying error was, that made the operation fail. * Formatting Co-Authored-By: Pierre Krieger Co-authored-by: Pierre Krieger --- client/network/src/discovery.rs | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/client/network/src/discovery.rs b/client/network/src/discovery.rs index a236ceb1a8..8360fce518 100644 --- a/client/network/src/discovery.rs +++ b/client/network/src/discovery.rs @@ -391,7 +391,14 @@ impl NetworkBehaviour for DiscoveryBehaviour { DiscoveryOut::ValueFound(results) } + Err(e @ libp2p::kad::GetRecordError::NotFound { .. }) => { + trace!(target: "sub-libp2p", + "Libp2p => Failed to get record: {:?}", e); + DiscoveryOut::ValueNotFound(e.into_key()) + } Err(e) => { + warn!(target: "sub-libp2p", + "Libp2p => Failed to get record: {:?}", e); DiscoveryOut::ValueNotFound(e.into_key()) } }; @@ -401,6 +408,8 @@ impl NetworkBehaviour for DiscoveryBehaviour { let ev = match res { Ok(ok) => DiscoveryOut::ValuePut(ok.key), Err(e) => { + warn!(target: "sub-libp2p", + "Libp2p => Failed to put record: {:?}", e); DiscoveryOut::ValuePutFailed(e.into_key()) } }; -- GitLab From b8efef43ca8a1401f3833b355a7e9b76d294c93d Mon Sep 17 00:00:00 2001 From: kianenigma Date: Thu, 20 Feb 2020 09:56:36 +0100 Subject: [PATCH 003/301] More docs --- frame/staking/fuzzer/Cargo.lock | 94 +++++++-------------- frame/staking/fuzzer/src/mock.rs | 4 - frame/staking/fuzzer/src/submit_solution.rs | 18 ++-- frame/staking/src/testing_utils.rs | 4 + primitives/phragmen/fuzzer/Cargo.lock | 68 ++++++--------- primitives/phragmen/fuzzer/Cargo.toml | 3 +- 6 files changed, 72 insertions(+), 119 deletions(-) diff --git a/frame/staking/fuzzer/Cargo.lock b/frame/staking/fuzzer/Cargo.lock index 421f926cb0..f784cd078a 100644 --- a/frame/staking/fuzzer/Cargo.lock +++ b/frame/staking/fuzzer/Cargo.lock @@ -317,6 +317,16 @@ dependencies = [ "static_assertions 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "frame-benchmarking" +version = "2.0.0" +dependencies = [ + "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-api 2.0.0", + "sp-runtime-interface 2.0.0", + "sp-std 2.0.0", +] + [[package]] name = "frame-metadata" version = "11.0.0" @@ -336,7 +346,7 @@ dependencies = [ "frame-support-procedural 2.0.0", "impl-trait-for-tuples 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "once_cell 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", + "once_cell 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "paste 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", @@ -513,15 +523,6 @@ dependencies = [ "crunchy 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "hashbrown" -version = "0.1.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "byteorder 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "scopeguard 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "hashbrown" version = "0.6.3" @@ -649,14 +650,6 @@ dependencies = [ "typenum 1.11.2 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "lock_api" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "scopeguard 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "lock_api" version = "0.3.3" @@ -773,17 +766,12 @@ dependencies = [ [[package]] name = "once_cell" -version = "0.1.8" +version = "1.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "once_cell" -version = "0.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" - [[package]] name = "opaque-debug" version = "0.2.3" @@ -809,6 +797,7 @@ dependencies = [ name = "pallet-balances" version = "2.0.0" dependencies = [ + "frame-benchmarking 2.0.0", "frame-support 2.0.0", "frame-system 2.0.0", "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", @@ -907,6 +896,7 @@ dependencies = [ name = "pallet-timestamp" version = "2.0.0" dependencies = [ + "frame-benchmarking 2.0.0", "frame-support 2.0.0", "frame-system 2.0.0", "impl-trait-for-tuples 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", @@ -970,15 +960,6 @@ name = "parity-wasm" version = "0.41.0" source = "registry+https://github.com/rust-lang/crates.io-index" -[[package]] -name = "parking_lot" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "lock_api 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", - "parking_lot_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "parking_lot" version = "0.9.0" @@ -998,18 +979,6 @@ dependencies = [ "parking_lot_core 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "parking_lot_core" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", - "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", - "smallvec 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "parking_lot_core" version = "0.6.2" @@ -1293,6 +1262,11 @@ name = "rustc-demangle" version = "0.1.16" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "rustc-hash" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "rustc-hex" version = "2.1.0" @@ -1322,11 +1296,6 @@ dependencies = [ "zeroize 0.9.3 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "scopeguard" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" - [[package]] name = "scopeguard" version = "1.1.0" @@ -1471,7 +1440,7 @@ dependencies = [ "hash-db 0.15.2 (registry+https://github.com/rust-lang/crates.io-index)", "hash256-std-hasher 0.15.2 (registry+https://github.com/rust-lang/crates.io-index)", "hex 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", - "impl-serde 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", + "impl-serde 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", "libsecp256k1 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1492,7 +1461,7 @@ dependencies = [ "sp-std 2.0.0", "sp-storage 2.0.0", "substrate-bip39 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "tiny-bip39 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", + "tiny-bip39 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", "tiny-keccak 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)", "twox-hash 1.5.0 (registry+https://github.com/rust-lang/crates.io-index)", "wasmi 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1792,15 +1761,15 @@ dependencies = [ [[package]] name = "tiny-bip39" -version = "0.6.2" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "failure 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "hashbrown 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", "hmac 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", - "once_cell 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", + "once_cell 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "pbkdf2 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)", + "rustc-hash 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "sha2 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -2143,7 +2112,6 @@ dependencies = [ "checksum getrandom 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)" = "7abc8dd8451921606d809ba32e95b6111925cd2906060d2dcc29c070220503eb" "checksum hash-db 0.15.2 (registry+https://github.com/rust-lang/crates.io-index)" = "d23bd4e7b5eda0d0f3a307e8b381fdc8ba9000f26fbe912250c0a4cc3956364a" "checksum hash256-std-hasher 0.15.2 (registry+https://github.com/rust-lang/crates.io-index)" = "92c171d55b98633f4ed3860808f004099b36c1cc29c42cfc53aa8591b21efcf2" -"checksum hashbrown 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "3bae29b6653b3412c2e71e9d486db9f9df5d701941d86683005efb9f2d28e3da" "checksum hashbrown 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)" = "8e6073d0ca812575946eb5f35ff68dbe519907b25c42530389ff946dc84c6ead" "checksum heck 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "20564e78d53d2bb135c343b3f47714a56af2061f1c928fdb541dc7b9fdd94205" "checksum hex 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "644f9158b2f133fd50f5fb3242878846d9eb792e445c893805ff0e3824006e35" @@ -2159,7 +2127,6 @@ dependencies = [ "checksum lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" "checksum libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)" = "d515b1f41455adea1313a4a2ac8a8a477634fbae63cc6100e3aebb207ce61558" "checksum libsecp256k1 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)" = "1fc1e2c808481a63dc6da2074752fdd4336a3c8fcc68b83db6f1fd5224ae7962" -"checksum lock_api 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "62ebf1391f6acad60e5c8b43706dde4582df75c06698ab44511d15016bc2442c" "checksum lock_api 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "79b2de95ecb4691949fea4716ca53cdbcfccb2c612e19644a8bad05edcf9f47b" "checksum log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)" = "14b6052be84e6b71ab17edffc2eeabf5c2c3ae1fdb464aae35ac50c67a44e1f7" "checksum maybe-uninit 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "60302e4db3a61da70c0cb7991976248362f30319e88850c487b9b95bbf059e00" @@ -2174,8 +2141,7 @@ dependencies = [ "checksum num-integer 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)" = "3f6ea62e9d81a77cd3ee9a2a5b9b609447857f3d358704331e4ef39eb247fcba" "checksum num-rational 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "da4dc79f9e6c81bef96148c8f6b8e72ad4541caa4a24373e900a36da07de03a3" "checksum num-traits 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)" = "c62be47e61d1842b9170f0fdeec8eba98e60e90e5446449a0545e5152acd7096" -"checksum once_cell 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "532c29a261168a45ce28948f9537ddd7a5dd272cc513b3017b1e82a88f962c37" -"checksum once_cell 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)" = "d584f08c2d717d5c23a6414fc2822b71c651560713e54fa7eace675f758a355e" +"checksum once_cell 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b1c601810575c99596d4afc46f78a678c80105117c379eb3650cf99b8a21ce5b" "checksum opaque-debug 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "2839e79665f131bdb5782e51f2c6c9599c133c6098982a54c794358bf432529c" "checksum parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "f747c06d9f3b2ad387ac881b9667298c81b1243aa9833f086e05996937c35507" "checksum parity-scale-codec-derive 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "34e513ff3e406f3ede6796dcdc83d0b32ffb86668cea1ccf7363118abeb00476" @@ -2183,9 +2149,7 @@ dependencies = [ "checksum parity-util-mem-derive 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "f557c32c6d268a07c921471619c0295f5efad3a0e76d4f97a05c091a51d110b2" "checksum parity-wasm 0.41.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ddfc878dac00da22f8f61e7af3157988424567ab01d9920b962ef7dcbd7cd865" "checksum parking_lot 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)" = "92e98c49ab0b7ce5b222f2cc9193fc4efe11c6d0bd4f648e374684a6857b1cfc" -"checksum parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ab41b4aed082705d1056416ae4468b6ea99d52599ecf3169b00088d43113e337" "checksum parking_lot 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "f842b1982eb6c2fe34036a4fbfb06dd185a3f5c8edfaacdf7d1ea10b07de6252" -"checksum parking_lot_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "94c8c7923936b28d546dfd14d4472eaf34c99b14e1c973a32b3e6d4eb04298c9" "checksum parking_lot_core 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)" = "b876b1b9e7ac6e1a74a6da34d25c42e17e8862aa409cbbbdcfc8d86c6f3bc62b" "checksum parking_lot_core 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7582838484df45743c8434fbff785e8edf260c28748353d44bc0da32e0ceabf1" "checksum paste 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "423a519e1c6e828f1e73b720f9d9ed2fa643dce8a7737fb43235ce0b41eeaa49" @@ -2218,10 +2182,10 @@ dependencies = [ "checksum regex 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "322cf97724bea3ee221b78fe25ac9c46114ebb51747ad5babd51a2fc6a8235a8" "checksum regex-syntax 0.6.14 (registry+https://github.com/rust-lang/crates.io-index)" = "b28dfe3fe9badec5dbf0a79a9cccad2cfc2ab5484bdb3e44cbd1ae8b3ba2be06" "checksum rustc-demangle 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)" = "4c691c0e608126e00913e33f0ccf3727d5fc84573623b8d65b2df340b5201783" +"checksum rustc-hash 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" "checksum rustc-hex 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "3e75f6a532d0fd9f7f13144f392b6ad56a32696bfcd9c78f797f16bbb6f072d6" "checksum rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030a" "checksum schnorrkel 0.8.5 (registry+https://github.com/rust-lang/crates.io-index)" = "eacd8381b3c37840c9c9f40472af529e49975bdcbc24f83c31059fd6539023d3" -"checksum scopeguard 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "94258f53601af11e6a49f722422f6e3425c52b06245a5cf9bc09908b174f5e27" "checksum scopeguard 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" "checksum semver 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403" "checksum semver-parser 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" @@ -2242,7 +2206,7 @@ dependencies = [ "checksum syn 1.0.14 (registry+https://github.com/rust-lang/crates.io-index)" = "af6f3550d8dff9ef7dc34d384ac6f107e5d31c8f57d9f28e0081503f547ac8f5" "checksum synstructure 0.12.3 (registry+https://github.com/rust-lang/crates.io-index)" = "67656ea1dc1b41b1451851562ea232ec2e5a80242139f7e679ceccfb5d61f545" "checksum thread_local 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "d40c6d1b69745a6ec6fb1ca717914848da4b44ae29d9b3080cbee91d72a69b14" -"checksum tiny-bip39 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)" = "c1c5676413eaeb1ea35300a0224416f57abc3bd251657e0fafc12c47ff98c060" +"checksum tiny-bip39 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1cd1fb03fe8e07d17cd851a624a9fff74642a997b67fbd1ccd77533241640d92" "checksum tiny-keccak 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "2953ca5148619bc99695c1274cb54c5275bbb913c6adad87e72eaf8db9787f69" "checksum toml 0.5.6 (registry+https://github.com/rust-lang/crates.io-index)" = "ffc92d160b1eef40665be3a05630d003936a3bc7da7421277846c2613e92c71a" "checksum tracing 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)" = "1e213bd24252abeb86a0b7060e02df677d367ce6cb772cef17e9214b8390a8d3" diff --git a/frame/staking/fuzzer/src/mock.rs b/frame/staking/fuzzer/src/mock.rs index ff9970fb2b..523088c24e 100644 --- a/frame/staking/fuzzer/src/mock.rs +++ b/frame/staking/fuzzer/src/mock.rs @@ -189,7 +189,3 @@ impl pallet_staking::Trait for Test { type SubmitTransaction = SubmitTransaction; type KeyType = sp_runtime::testing::UintAuthorityId; } - -pub fn new_test_ext() -> sp_io::TestExternalities { - frame_system::GenesisConfig::default().build_storage::().unwrap().into() -} diff --git a/frame/staking/fuzzer/src/submit_solution.rs b/frame/staking/fuzzer/src/submit_solution.rs index 60343a0022..e10e0c2a61 100644 --- a/frame/staking/fuzzer/src/submit_solution.rs +++ b/frame/staking/fuzzer/src/submit_solution.rs @@ -23,7 +23,7 @@ //! # Debugging a panic //! //! Once a panic is found, it can be debugged with -//! `cargo hfuzz run-debug submit_solution hfuzz_workspace/reduce/*.fuzz`. +//! `cargo hfuzz run-debug submit_solution hfuzz_workspace/submit_solution/*.fuzz`. use honggfuzz::fuzz; @@ -49,15 +49,18 @@ enum Mode { WeakerSubmission, } +pub fn new_test_ext() -> Result { + frame_system::GenesisConfig::default().build_storage::().map(Into::into) +} + fn main() { loop { - fuzz!(|_data: _| { - let mut ext = mock::new_test_ext(); + fuzz!(|do_reduce: bool| { + let ext = new_test_ext(); let mode: Mode = unsafe { std::mem::transmute(testing_utils::random(0, 2)) }; - let num_validators = testing_utils::random(100, 1000); - let num_nominators = testing_utils::random(100, 20_000); + let num_validators = testing_utils::random(100, 2_000); + let num_nominators = testing_utils::random(100, 2_000); let edge_per_voter = 16; - let do_reduce = true; let to_elect = testing_utils::random(100, num_validators); println!("++ instance with params {} / {} / {} / {:?} / {}", @@ -68,7 +71,7 @@ fn main() { to_elect, ); - ext.execute_with(|| { + ext.unwrap_or_default().execute_with(|| { // initial setup set_validator_count::(to_elect); setup_chain_stakers::( @@ -112,6 +115,7 @@ fn main() { // must have chosen correct number of winners. assert_eq!(winners.len() as u32, >::validator_count()); + // final call and origin let call = pallet_staking::Call::::submit_election_solution( winners, compact, diff --git a/frame/staking/src/testing_utils.rs b/frame/staking/src/testing_utils.rs index f3f83e5352..c7ae18431e 100644 --- a/frame/staking/src/testing_utils.rs +++ b/frame/staking/src/testing_utils.rs @@ -44,6 +44,7 @@ pub fn random(a: u32, b: u32) -> u32 { rand::thread_rng().gen_range(a, b) } +/// Set the desired validator count, with related storage items. pub fn set_validator_count(to_elect: u32) { ValidatorCount::put(to_elect); MinimumValidatorCount::put(to_elect/2); @@ -288,6 +289,8 @@ pub fn get_weak_solution(do_reduce: bool) (winners, compact, score) } +/// Create a solution for seq-phragmen. This uses the same internal function as used by the offchain +/// worker code. pub fn get_seq_phragmen_solution(do_reduce: bool) -> (Vec, CompactOf, PhragmenScore) { let sp_phragmen::PhragmenResult { @@ -307,6 +310,7 @@ pub fn get_seq_phragmen_solution(do_reduce: bool) ) } +/// Remove all validator, nominators, votes and exposures. pub fn clean() { >::enumerate().for_each(|(k, _)| { let ctrl = >::bonded(&k).unwrap(); diff --git a/primitives/phragmen/fuzzer/Cargo.lock b/primitives/phragmen/fuzzer/Cargo.lock index 921dc910cb..09303dde83 100644 --- a/primitives/phragmen/fuzzer/Cargo.lock +++ b/primitives/phragmen/fuzzer/Cargo.lock @@ -338,15 +338,6 @@ dependencies = [ "crunchy 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "hashbrown" -version = "0.1.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", - "scopeguard 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "hashbrown" version = "0.6.3" @@ -458,14 +449,6 @@ dependencies = [ "typenum 1.11.2 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "lock_api" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "scopeguard 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "lock_api" version = "0.3.3" @@ -573,10 +556,10 @@ dependencies = [ [[package]] name = "once_cell" -version = "0.1.8" +version = "1.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -637,11 +620,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "parking_lot" -version = "0.7.1" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "lock_api 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", - "parking_lot_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "lock_api 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot_core 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", + "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -655,11 +639,13 @@ dependencies = [ [[package]] name = "parking_lot_core" -version = "0.4.0" +version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ + "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", + "cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", + "redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)", "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", "smallvec 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", @@ -924,6 +910,11 @@ name = "rustc-demangle" version = "0.1.16" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "rustc-hash" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "rustc-hex" version = "2.1.0" @@ -953,11 +944,6 @@ dependencies = [ "zeroize 0.9.3 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "scopeguard" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" - [[package]] name = "scopeguard" version = "1.0.0" @@ -1052,7 +1038,7 @@ dependencies = [ "hash-db 0.15.2 (registry+https://github.com/rust-lang/crates.io-index)", "hash256-std-hasher 0.15.2 (registry+https://github.com/rust-lang/crates.io-index)", "hex 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "impl-serde 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", + "impl-serde 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", "libsecp256k1 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1073,7 +1059,7 @@ dependencies = [ "sp-std 2.0.0", "sp-storage 2.0.0", "substrate-bip39 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "tiny-bip39 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", + "tiny-bip39 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", "tiny-keccak 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)", "twox-hash 1.5.0 (registry+https://github.com/rust-lang/crates.io-index)", "wasmi 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1320,15 +1306,15 @@ dependencies = [ [[package]] name = "tiny-bip39" -version = "0.6.2" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "failure 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "hashbrown 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", "hmac 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", - "once_cell 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", + "once_cell 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "pbkdf2 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)", + "rustc-hash 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "sha2 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1512,7 +1498,6 @@ dependencies = [ "checksum getrandom 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)" = "7abc8dd8451921606d809ba32e95b6111925cd2906060d2dcc29c070220503eb" "checksum hash-db 0.15.2 (registry+https://github.com/rust-lang/crates.io-index)" = "d23bd4e7b5eda0d0f3a307e8b381fdc8ba9000f26fbe912250c0a4cc3956364a" "checksum hash256-std-hasher 0.15.2 (registry+https://github.com/rust-lang/crates.io-index)" = "92c171d55b98633f4ed3860808f004099b36c1cc29c42cfc53aa8591b21efcf2" -"checksum hashbrown 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "3bae29b6653b3412c2e71e9d486db9f9df5d701941d86683005efb9f2d28e3da" "checksum hashbrown 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)" = "8e6073d0ca812575946eb5f35ff68dbe519907b25c42530389ff946dc84c6ead" "checksum hex 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "023b39be39e3a2da62a94feb433e91e8bcd37676fbc8bea371daf52b7a769a3e" "checksum hmac 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)" = "5dcb5e64cda4c23119ab41ba960d1e170a774c8e4b9d9e6a9bc18aabf5e59695" @@ -1526,7 +1511,6 @@ dependencies = [ "checksum lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" "checksum libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)" = "d515b1f41455adea1313a4a2ac8a8a477634fbae63cc6100e3aebb207ce61558" "checksum libsecp256k1 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)" = "1fc1e2c808481a63dc6da2074752fdd4336a3c8fcc68b83db6f1fd5224ae7962" -"checksum lock_api 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "62ebf1391f6acad60e5c8b43706dde4582df75c06698ab44511d15016bc2442c" "checksum lock_api 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "79b2de95ecb4691949fea4716ca53cdbcfccb2c612e19644a8bad05edcf9f47b" "checksum log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)" = "14b6052be84e6b71ab17edffc2eeabf5c2c3ae1fdb464aae35ac50c67a44e1f7" "checksum maybe-uninit 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "60302e4db3a61da70c0cb7991976248362f30319e88850c487b9b95bbf059e00" @@ -1540,7 +1524,7 @@ dependencies = [ "checksum num-integer 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)" = "3f6ea62e9d81a77cd3ee9a2a5b9b609447857f3d358704331e4ef39eb247fcba" "checksum num-rational 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "da4dc79f9e6c81bef96148c8f6b8e72ad4541caa4a24373e900a36da07de03a3" "checksum num-traits 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)" = "c62be47e61d1842b9170f0fdeec8eba98e60e90e5446449a0545e5152acd7096" -"checksum once_cell 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "532c29a261168a45ce28948f9537ddd7a5dd272cc513b3017b1e82a88f962c37" +"checksum once_cell 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b1c601810575c99596d4afc46f78a678c80105117c379eb3650cf99b8a21ce5b" "checksum opaque-debug 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "2839e79665f131bdb5782e51f2c6c9599c133c6098982a54c794358bf432529c" "checksum parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "f747c06d9f3b2ad387ac881b9667298c81b1243aa9833f086e05996937c35507" "checksum parity-scale-codec-derive 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "34e513ff3e406f3ede6796dcdc83d0b32ffb86668cea1ccf7363118abeb00476" @@ -1548,8 +1532,8 @@ dependencies = [ "checksum parity-util-mem-derive 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "f557c32c6d268a07c921471619c0295f5efad3a0e76d4f97a05c091a51d110b2" "checksum parity-wasm 0.41.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ddfc878dac00da22f8f61e7af3157988424567ab01d9920b962ef7dcbd7cd865" "checksum parking_lot 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)" = "92e98c49ab0b7ce5b222f2cc9193fc4efe11c6d0bd4f648e374684a6857b1cfc" -"checksum parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ab41b4aed082705d1056416ae4468b6ea99d52599ecf3169b00088d43113e337" -"checksum parking_lot_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "94c8c7923936b28d546dfd14d4472eaf34c99b14e1c973a32b3e6d4eb04298c9" +"checksum parking_lot 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "f842b1982eb6c2fe34036a4fbfb06dd185a3f5c8edfaacdf7d1ea10b07de6252" +"checksum parking_lot_core 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)" = "b876b1b9e7ac6e1a74a6da34d25c42e17e8862aa409cbbbdcfc8d86c6f3bc62b" "checksum parking_lot_core 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7582838484df45743c8434fbff785e8edf260c28748353d44bc0da32e0ceabf1" "checksum paste 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "423a519e1c6e828f1e73b720f9d9ed2fa643dce8a7737fb43235ce0b41eeaa49" "checksum paste-impl 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "4214c9e912ef61bf42b81ba9a47e8aad1b2ffaf739ab162bf96d1e011f54e6c5" @@ -1579,10 +1563,10 @@ dependencies = [ "checksum regex 1.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "b5508c1941e4e7cb19965abef075d35a9a8b5cdf0846f30b4050e9b55dc55e87" "checksum regex-syntax 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)" = "e734e891f5b408a29efbf8309e656876276f49ab6a6ac208600b4419bd893d90" "checksum rustc-demangle 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)" = "4c691c0e608126e00913e33f0ccf3727d5fc84573623b8d65b2df340b5201783" +"checksum rustc-hash 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" "checksum rustc-hex 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "3e75f6a532d0fd9f7f13144f392b6ad56a32696bfcd9c78f797f16bbb6f072d6" "checksum rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030a" "checksum schnorrkel 0.8.5 (registry+https://github.com/rust-lang/crates.io-index)" = "eacd8381b3c37840c9c9f40472af529e49975bdcbc24f83c31059fd6539023d3" -"checksum scopeguard 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "94258f53601af11e6a49f722422f6e3425c52b06245a5cf9bc09908b174f5e27" "checksum scopeguard 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b42e15e59b18a828bbf5c58ea01debb36b9b096346de35d941dcb89009f24a0d" "checksum semver 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403" "checksum semver-parser 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" @@ -1598,7 +1582,7 @@ dependencies = [ "checksum syn 1.0.14 (registry+https://github.com/rust-lang/crates.io-index)" = "af6f3550d8dff9ef7dc34d384ac6f107e5d31c8f57d9f28e0081503f547ac8f5" "checksum synstructure 0.12.3 (registry+https://github.com/rust-lang/crates.io-index)" = "67656ea1dc1b41b1451851562ea232ec2e5a80242139f7e679ceccfb5d61f545" "checksum thread_local 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "d40c6d1b69745a6ec6fb1ca717914848da4b44ae29d9b3080cbee91d72a69b14" -"checksum tiny-bip39 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)" = "c1c5676413eaeb1ea35300a0224416f57abc3bd251657e0fafc12c47ff98c060" +"checksum tiny-bip39 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1cd1fb03fe8e07d17cd851a624a9fff74642a997b67fbd1ccd77533241640d92" "checksum tiny-keccak 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "2953ca5148619bc99695c1274cb54c5275bbb913c6adad87e72eaf8db9787f69" "checksum toml 0.5.6 (registry+https://github.com/rust-lang/crates.io-index)" = "ffc92d160b1eef40665be3a05630d003936a3bc7da7421277846c2613e92c71a" "checksum trie-db 0.20.0 (registry+https://github.com/rust-lang/crates.io-index)" = "de9222c50cc325855621271157c973da27a0dcd26fa06f8edf81020bd2333df0" diff --git a/primitives/phragmen/fuzzer/Cargo.toml b/primitives/phragmen/fuzzer/Cargo.toml index b0bb5671d3..906324cb8e 100644 --- a/primitives/phragmen/fuzzer/Cargo.toml +++ b/primitives/phragmen/fuzzer/Cargo.toml @@ -6,7 +6,8 @@ edition = "2018" [dependencies] sp-phragmen = { version = "2.0.0", path = ".." } -honggfuzz = "0.5" +#honggfuzz = "0.5" +honggfuzz = { path = "../../../../honggfuzz-rs" } rand = "0.7.3" [workspace] -- GitLab From 992aea815a753da256a9c0bff053df408532df02 Mon Sep 17 00:00:00 2001 From: Nikolay Volf Date: Thu, 20 Feb 2020 11:58:41 +0300 Subject: [PATCH 004/301] Speedup import benchmark (#4995) * use lazy matrix * speedup * Update bin/node/testing/benches/import.rs Co-Authored-By: Kian Paimani <5588131+kianenigma@users.noreply.github.com> Co-authored-by: Kian Paimani <5588131+kianenigma@users.noreply.github.com> --- bin/node/testing/benches/import.rs | 43 +++++++++++++++++++++--------- 1 file changed, 31 insertions(+), 12 deletions(-) diff --git a/bin/node/testing/benches/import.rs b/bin/node/testing/benches/import.rs index d0ec993655..79cb71b164 100644 --- a/bin/node/testing/benches/import.rs +++ b/bin/node/testing/benches/import.rs @@ -37,7 +37,7 @@ use sc_client_api::backend::Backend; criterion_group!( name = benches; - config = Criterion::default().sample_size(50).warm_up_time(std::time::Duration::from_secs(20)); + config = Criterion::default().sample_size(20).warm_up_time(std::time::Duration::from_secs(20)); targets = bench_block_import ); criterion_group!( @@ -50,7 +50,7 @@ criterion_group!( config = Criterion::default().sample_size(10); targets = profile_block_import ); -criterion_main!(benches, profile, wasm_size); +criterion_main!(benches, profile); fn bench_block_import(c: &mut Criterion) { sc_cli::init_logger(""); @@ -152,6 +152,33 @@ struct Setup { block: Block, } +struct SetupIterator { + current: usize, + finish: usize, + multiplier: usize, +} + +impl SetupIterator { + fn new(current: usize, finish: usize, multiplier: usize) -> Self { + SetupIterator { current, finish, multiplier } + } +} + +impl Iterator for SetupIterator { + type Item = Setup; + + fn next(&mut self) -> Option { + if self.current >= self.finish { return None } + + self.current += 1; + + let size = self.current * self.multiplier; + let mut db = BenchDb::new(size); + let block = db.generate_block(size); + Some(Setup { db, block }) + } +} + impl fmt::Debug for Setup { fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { write!(f, "Setup: {} tx/block", self.block.extrinsics.len()) @@ -161,14 +188,6 @@ impl fmt::Debug for Setup { fn bench_wasm_size_import(c: &mut Criterion) { sc_cli::init_logger(""); - let mut setups = Vec::new(); - - for block_size in 5..15 { - let mut db = BenchDb::new(block_size*50); - let block = db.generate_block(block_size * 50); - setups.push(Setup { db, block }); - } - c.bench_function_over_inputs("wasm_size_import", move |bencher, setup| { bencher.iter_batched( @@ -181,6 +200,6 @@ fn bench_wasm_size_import(c: &mut Criterion) { criterion::BatchSize::PerIteration, ); }, - setups, + SetupIterator::new(5, 15, 50), ); -} \ No newline at end of file +} -- GitLab From 9a47993c160145bb5c8cab6d0e04bb3edf678cfa Mon Sep 17 00:00:00 2001 From: Pierre Krieger Date: Thu, 20 Feb 2020 11:53:46 +0100 Subject: [PATCH 005/301] Remove using a network message in the chain_ops (?!?!) (#4999) --- client/service/src/chain_ops.rs | 18 ++++-------------- 1 file changed, 4 insertions(+), 14 deletions(-) diff --git a/client/service/src/chain_ops.rs b/client/service/src/chain_ops.rs index 30987170f3..f415ea213a 100644 --- a/client/service/src/chain_ops.rs +++ b/client/service/src/chain_ops.rs @@ -36,8 +36,6 @@ use sc_executor::{NativeExecutor, NativeExecutionDispatch}; use std::{io::{Read, Write, Seek}, pin::Pin}; -use sc_network::message; - /// Build a chain spec json pub fn build_spec(spec: ChainSpec, raw: bool) -> error::Result where G: RuntimeGenesis, @@ -141,21 +139,13 @@ impl< Ok(signed) => { let (header, extrinsics) = signed.block.deconstruct(); let hash = header.hash(); - let block = message::BlockData:: { - hash, - justification: signed.justification, - header: Some(header), - body: Some(extrinsics), - receipt: None, - message_queue: None - }; // import queue handles verification and importing it into the client queue.import_blocks(BlockOrigin::File, vec![ IncomingBlock:: { - hash: block.hash, - header: block.header, - body: block.body, - justification: block.justification, + hash, + header: Some(header), + body: Some(extrinsics), + justification: signed.justification, origin: None, allow_missing_state: false, import_existing: force, -- GitLab From 98c5579a32c02e43106130c868f8da3a52f05e85 Mon Sep 17 00:00:00 2001 From: Wei Tang Date: Thu, 20 Feb 2020 12:02:59 +0100 Subject: [PATCH 006/301] babe: fix deprecated function in transcript (#4996) --- client/consensus/babe/src/authorship.rs | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/client/consensus/babe/src/authorship.rs b/client/consensus/babe/src/authorship.rs index 4654f91b89..a3254d0fcb 100644 --- a/client/consensus/babe/src/authorship.rs +++ b/client/consensus/babe/src/authorship.rs @@ -86,16 +86,15 @@ pub(super) fn secondary_slot_author( Some(&expected_author.0) } -#[allow(deprecated)] pub(super) fn make_transcript( randomness: &[u8], slot_number: u64, epoch: u64, ) -> Transcript { let mut transcript = Transcript::new(&BABE_ENGINE_ID); - transcript.commit_bytes(b"slot number", &slot_number.to_le_bytes()); - transcript.commit_bytes(b"current epoch", &epoch.to_le_bytes()); - transcript.commit_bytes(b"chain randomness", randomness); + transcript.append_message(b"slot number", &slot_number.to_le_bytes()); + transcript.append_message(b"current epoch", &epoch.to_le_bytes()); + transcript.append_message(b"chain randomness", randomness); transcript } -- GitLab From 1a9b06fbc75c1f9a5798c700ff4794075072771d Mon Sep 17 00:00:00 2001 From: Seun Lanlege Date: Thu, 20 Feb 2020 13:23:47 +0100 Subject: [PATCH 007/301] fixes sc_transaction_pool::testing::fork_aware_finalization (#4976) * fixes sc_transaction_pool::testing::pool::fork_aware_finalization * adds pool status assertions --- client/transaction-pool/src/testing/pool.rs | 30 +++++++++++++-------- 1 file changed, 19 insertions(+), 11 deletions(-) diff --git a/client/transaction-pool/src/testing/pool.rs b/client/transaction-pool/src/testing/pool.rs index 37b80df9e1..6984877eef 100644 --- a/client/transaction-pool/src/testing/pool.rs +++ b/client/transaction-pool/src/testing/pool.rs @@ -384,7 +384,7 @@ fn fork_aware_finalization() { let mut canon_watchers = vec![]; let from_alice = uxt(Alice, 1); - let from_dave = uxt(Dave, 1); + let from_dave = uxt(Dave, 2); let from_bob = uxt(Bob, 1); let from_charlie = uxt(Charlie, 1); pool.api.increment_nonce(Alice.into()); @@ -405,6 +405,7 @@ fn fork_aware_finalization() { let watcher = block_on(pool.submit_and_watch(&BlockId::number(1), from_alice.clone())).expect("1. Imported"); let header = pool.api.push_block(2, vec![from_alice.clone()]); canon_watchers.push((watcher, header.hash())); + assert_eq!(pool.status().ready, 1); let event = ChainEvent::NewBlock { id: BlockId::Number(2), @@ -414,6 +415,7 @@ fn fork_aware_finalization() { }; b1 = header.hash(); block_on(pool.maintain(event)); + assert_eq!(pool.status().ready, 0); let event = ChainEvent::Finalized { hash: b1 }; block_on(pool.maintain(event)); } @@ -423,6 +425,7 @@ fn fork_aware_finalization() { let header = pool.api.push_fork_block_with_parent(b1, vec![from_dave.clone()]); from_dave_watcher = block_on(pool.submit_and_watch(&BlockId::number(1), from_dave.clone())) .expect("1. Imported"); + assert_eq!(pool.status().ready, 1); let event = ChainEvent::NewBlock { id: BlockId::Hash(header.hash()), is_new_best: true, @@ -431,11 +434,13 @@ fn fork_aware_finalization() { }; c2 = header.hash(); block_on(pool.maintain(event)); + assert_eq!(pool.status().ready, 0); } // block D2 { from_bob_watcher = block_on(pool.submit_and_watch(&BlockId::number(1), from_bob.clone())).expect("1. Imported"); + assert_eq!(pool.status().ready, 1); let header = pool.api.push_fork_block_with_parent(c2, vec![from_bob.clone()]); let event = ChainEvent::NewBlock { @@ -446,11 +451,13 @@ fn fork_aware_finalization() { }; d2 = header.hash(); block_on(pool.maintain(event)); + assert_eq!(pool.status().ready, 0); } // block C1 { let watcher = block_on(pool.submit_and_watch(&BlockId::number(1), from_charlie.clone())).expect("1.Imported"); + assert_eq!(pool.status().ready, 1); let header = pool.api.push_block(3, vec![from_charlie.clone()]); canon_watchers.push((watcher, header.hash())); @@ -461,6 +468,7 @@ fn fork_aware_finalization() { retracted: vec![c2, d2], }; block_on(pool.maintain(event)); + assert_eq!(pool.status().ready, 2); let event = ChainEvent::Finalized { hash: header.hash() }; block_on(pool.maintain(event)); } @@ -469,6 +477,7 @@ fn fork_aware_finalization() { { let xt = uxt(Eve, 0); let w = block_on(pool.submit_and_watch(&BlockId::number(1), xt.clone())).expect("1. Imported"); + assert_eq!(pool.status().ready, 3); let header = pool.api.push_block(4, vec![xt.clone()]); canon_watchers.push((w, header.hash())); @@ -480,6 +489,7 @@ fn fork_aware_finalization() { }; d1 = header.hash(); block_on(pool.maintain(event)); + assert_eq!(pool.status().ready, 2); let event = ChainEvent::Finalized { hash: d1 }; block_on(pool.maintain(event)); } @@ -488,7 +498,7 @@ fn fork_aware_finalization() { // block e1 { - let header = pool.api.push_block(5, vec![from_dave]); + let header = pool.api.push_block(5, vec![from_dave, from_bob]); e1 = header.hash(); let event = ChainEvent::NewBlock { id: BlockId::Hash(header.hash()), @@ -497,6 +507,7 @@ fn fork_aware_finalization() { retracted: vec![] }; block_on(pool.maintain(event)); + assert_eq!(pool.status().ready, 0); block_on(pool.maintain(ChainEvent::Finalized { hash: e1 })); } @@ -515,15 +526,8 @@ fn fork_aware_finalization() { assert_eq!(stream.next(), Some(TransactionStatus::Ready)); assert_eq!(stream.next(), Some(TransactionStatus::InBlock(c2.clone()))); assert_eq!(stream.next(), Some(TransactionStatus::Retracted(c2))); - - // can be either Ready, or InBlock, depending on which event comes first - assert_eq!( - match stream.next() { - Some(TransactionStatus::Ready) => stream.next(), - val @ _ => val, - }, - Some(TransactionStatus::InBlock(e1)), - ); + assert_eq!(stream.next(), Some(TransactionStatus::Ready)); + assert_eq!(stream.next(), Some(TransactionStatus::InBlock(e1))); assert_eq!(stream.next(), Some(TransactionStatus::Finalized(e1.clone()))); assert_eq!(stream.next(), None); } @@ -533,6 +537,10 @@ fn fork_aware_finalization() { assert_eq!(stream.next(), Some(TransactionStatus::Ready)); assert_eq!(stream.next(), Some(TransactionStatus::InBlock(d2.clone()))); assert_eq!(stream.next(), Some(TransactionStatus::Retracted(d2))); + assert_eq!(stream.next(), Some(TransactionStatus::Ready)); + assert_eq!(stream.next(), Some(TransactionStatus::InBlock(e1))); + assert_eq!(stream.next(), Some(TransactionStatus::Finalized(e1.clone()))); + assert_eq!(stream.next(), None); } } -- GitLab From 07740070215c74ff6d581c77daae6ed0783feafa Mon Sep 17 00:00:00 2001 From: Shawn Tabrizi Date: Thu, 20 Feb 2020 13:25:52 +0100 Subject: [PATCH 008/301] `vesting_balance` returns `Option` (#4987) * `vesting_balance` returns `Option` * bump impl --- bin/node/runtime/src/lib.rs | 2 +- frame/support/src/traits.rs | 3 ++- frame/vesting/src/lib.rs | 36 ++++++++++++++++++------------------ 3 files changed, 21 insertions(+), 20 deletions(-) diff --git a/bin/node/runtime/src/lib.rs b/bin/node/runtime/src/lib.rs index b60056e045..c4d60437a3 100644 --- a/bin/node/runtime/src/lib.rs +++ b/bin/node/runtime/src/lib.rs @@ -81,7 +81,7 @@ pub const VERSION: RuntimeVersion = RuntimeVersion { // and set impl_version to 0. If only runtime // implementation changes and behavior does not, then leave spec_version as // is and increment impl_version. - spec_version: 222, + spec_version: 223, impl_version: 0, apis: RUNTIME_API_VERSIONS, }; diff --git a/frame/support/src/traits.rs b/frame/support/src/traits.rs index 570342bf57..4730e1955e 100644 --- a/frame/support/src/traits.rs +++ b/frame/support/src/traits.rs @@ -734,7 +734,8 @@ pub trait VestingSchedule { type Currency: Currency; /// Get the amount that is currently being vested and cannot be transferred out of this account. - fn vesting_balance(who: &AccountId) -> >::Balance; + /// Returns `None` if the account has no vesting schedule. + fn vesting_balance(who: &AccountId) -> Option<>::Balance>; /// Adds a vesting schedule to a given account. /// diff --git a/frame/vesting/src/lib.rs b/frame/vesting/src/lib.rs index 15adcaaf53..dd51259842 100644 --- a/frame/vesting/src/lib.rs +++ b/frame/vesting/src/lib.rs @@ -237,13 +237,13 @@ impl VestingSchedule for Module where type Currency = T::Currency; /// Get the amount that is currently being vested and cannot be transferred out of this account. - fn vesting_balance(who: &T::AccountId) -> BalanceOf { + fn vesting_balance(who: &T::AccountId) -> Option> { if let Some(v) = Self::vesting(who) { let now = >::block_number(); let locked_now = v.locked_at::(now); - T::Currency::free_balance(who).min(locked_now) + Some(T::Currency::free_balance(who).min(locked_now)) } else { - Zero::zero() + None } } @@ -484,28 +484,28 @@ mod tests { assert_eq!(Vesting::vesting(&12), Some(user12_vesting_schedule)); // Account 12 has a vesting schedule // Account 1 has only 128 units vested from their illiquid 256 * 5 units at block 1 - assert_eq!(Vesting::vesting_balance(&1), 128 * 9); + assert_eq!(Vesting::vesting_balance(&1), Some(128 * 9)); // Account 2 has their full balance locked - assert_eq!(Vesting::vesting_balance(&2), user2_free_balance); + assert_eq!(Vesting::vesting_balance(&2), Some(user2_free_balance)); // Account 12 has only their illiquid funds locked - assert_eq!(Vesting::vesting_balance(&12), user12_free_balance - 256 * 5); + assert_eq!(Vesting::vesting_balance(&12), Some(user12_free_balance - 256 * 5)); System::set_block_number(10); assert_eq!(System::block_number(), 10); // Account 1 has fully vested by block 10 - assert_eq!(Vesting::vesting_balance(&1), 0); + assert_eq!(Vesting::vesting_balance(&1), Some(0)); // Account 2 has started vesting by block 10 - assert_eq!(Vesting::vesting_balance(&2), user2_free_balance); + assert_eq!(Vesting::vesting_balance(&2), Some(user2_free_balance)); // Account 12 has started vesting by block 10 - assert_eq!(Vesting::vesting_balance(&12), user12_free_balance - 256 * 5); + assert_eq!(Vesting::vesting_balance(&12), Some(user12_free_balance - 256 * 5)); System::set_block_number(30); assert_eq!(System::block_number(), 30); - assert_eq!(Vesting::vesting_balance(&1), 0); // Account 1 is still fully vested, and not negative - assert_eq!(Vesting::vesting_balance(&2), 0); // Account 2 has fully vested by block 30 - assert_eq!(Vesting::vesting_balance(&12), 0); // Account 2 has fully vested by block 30 + assert_eq!(Vesting::vesting_balance(&1), Some(0)); // Account 1 is still fully vested, and not negative + assert_eq!(Vesting::vesting_balance(&2), Some(0)); // Account 2 has fully vested by block 30 + assert_eq!(Vesting::vesting_balance(&12), Some(0)); // Account 2 has fully vested by block 30 }); } @@ -520,7 +520,7 @@ mod tests { let user1_free_balance = Balances::free_balance(&1); assert_eq!(user1_free_balance, 100); // Account 1 has free balance // Account 1 has only 5 units vested at block 1 (plus 50 unvested) - assert_eq!(Vesting::vesting_balance(&1), 45); + assert_eq!(Vesting::vesting_balance(&1), Some(45)); assert_noop!( Balances::transfer(Some(1).into(), 2, 56), pallet_balances::Error::::LiquidityRestrictions, @@ -538,7 +538,7 @@ mod tests { let user1_free_balance = Balances::free_balance(&1); assert_eq!(user1_free_balance, 100); // Account 1 has free balance // Account 1 has only 5 units vested at block 1 (plus 50 unvested) - assert_eq!(Vesting::vesting_balance(&1), 45); + assert_eq!(Vesting::vesting_balance(&1), Some(45)); assert_ok!(Vesting::vest(Some(1).into())); assert_ok!(Balances::transfer(Some(1).into(), 2, 55)); }); @@ -554,7 +554,7 @@ mod tests { let user1_free_balance = Balances::free_balance(&1); assert_eq!(user1_free_balance, 100); // Account 1 has free balance // Account 1 has only 5 units vested at block 1 (plus 50 unvested) - assert_eq!(Vesting::vesting_balance(&1), 45); + assert_eq!(Vesting::vesting_balance(&1), Some(45)); assert_ok!(Vesting::vest_other(Some(2).into(), 1)); assert_ok!(Balances::transfer(Some(1).into(), 2, 55)); }); @@ -577,12 +577,12 @@ mod tests { assert_eq!(user2_free_balance, 300); // Account 2 has 100 more free balance than normal // Account 1 has only 5 units vested at block 1 (plus 150 unvested) - assert_eq!(Vesting::vesting_balance(&1), 45); + assert_eq!(Vesting::vesting_balance(&1), Some(45)); assert_ok!(Vesting::vest(Some(1).into())); assert_ok!(Balances::transfer(Some(1).into(), 3, 155)); // Account 1 can send extra units gained // Account 2 has no units vested at block 1, but gained 100 - assert_eq!(Vesting::vesting_balance(&2), 200); + assert_eq!(Vesting::vesting_balance(&2), Some(200)); assert_ok!(Vesting::vest(Some(2).into())); assert_ok!(Balances::transfer(Some(2).into(), 3, 100)); // Account 2 can send extra units gained }); @@ -599,7 +599,7 @@ mod tests { assert_eq!(user12_free_balance, 2560); // Account 12 has free balance // Account 12 has liquid funds - assert_eq!(Vesting::vesting_balance(&12), user12_free_balance - 256 * 5); + assert_eq!(Vesting::vesting_balance(&12), Some(user12_free_balance - 256 * 5)); // Account 12 has delayed vesting let user12_vesting_schedule = VestingInfo { -- GitLab From d43b9f3ff94eb1f914ef77b00489bb42e5e40424 Mon Sep 17 00:00:00 2001 From: Pierre Krieger Date: Thu, 20 Feb 2020 13:27:36 +0100 Subject: [PATCH 009/301] Clean up the public API of sc-network-gossip (#5001) --- Cargo.lock | 1 - client/finality-grandpa/src/communication/tests.rs | 12 ++---------- client/network-gossip/Cargo.toml | 7 +++---- client/network-gossip/src/bridge.rs | 9 ++++----- client/network-gossip/src/lib.rs | 8 ++++---- 5 files changed, 13 insertions(+), 24 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index db15cbe591..622867dac2 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -6255,7 +6255,6 @@ dependencies = [ name = "sc-network-gossip" version = "0.8.0" dependencies = [ - "futures 0.1.29", "futures 0.3.4", "futures-timer 3.0.1", "libp2p", diff --git a/client/finality-grandpa/src/communication/tests.rs b/client/finality-grandpa/src/communication/tests.rs index 040ee4c7bb..5506512b53 100644 --- a/client/finality-grandpa/src/communication/tests.rs +++ b/client/finality-grandpa/src/communication/tests.rs @@ -44,20 +44,12 @@ pub(crate) struct TestNetwork { sender: mpsc::UnboundedSender, } -impl TestNetwork { - fn event_stream_03(&self) -> Pin + Send>> { +impl sc_network_gossip::Network for TestNetwork { + fn event_stream(&self) -> Pin + Send>> { let (tx, rx) = mpsc::unbounded(); let _ = self.sender.unbounded_send(Event::EventStream(tx)); Box::pin(rx) } -} - -impl sc_network_gossip::Network for TestNetwork { - fn event_stream(&self) -> Box + Send> { - Box::new( - self.event_stream_03().map(Ok::<_, ()>).compat() - ) - } fn report_peer(&self, who: sc_network::PeerId, cost_benefit: sc_network::ReputationChange) { let _ = self.sender.unbounded_send(Event::Report(who, cost_benefit)); diff --git a/client/network-gossip/Cargo.toml b/client/network-gossip/Cargo.toml index 98b2bd0590..8866db1f34 100644 --- a/client/network-gossip/Cargo.toml +++ b/client/network-gossip/Cargo.toml @@ -7,13 +7,12 @@ authors = ["Parity Technologies "] edition = "2018" [dependencies] -log = "0.4.8" -futures = { version = "0.3.1", features = ["compat"] } -wasm-timer = "0.2" +futures = "0.3.1" futures-timer = "3.0.1" -futures01 = { package = "futures", version = "0.1.29" } libp2p = { version = "0.16.0", default-features = false, features = ["libp2p-websocket"] } +log = "0.4.8" lru = "0.1.2" parking_lot = "0.10.0" sc-network = { version = "0.8", path = "../network" } sp-runtime = { version = "2.0.0", path = "../../primitives/runtime" } +wasm-timer = "0.2" diff --git a/client/network-gossip/src/bridge.rs b/client/network-gossip/src/bridge.rs index 87958cbc14..7968e59d07 100644 --- a/client/network-gossip/src/bridge.rs +++ b/client/network-gossip/src/bridge.rs @@ -20,8 +20,7 @@ use crate::state_machine::{ConsensusGossip, TopicNotification, PERIODIC_MAINTENA use sc_network::message::generic::ConsensusMessage; use sc_network::{Event, ReputationChange}; -use futures::{prelude::*, channel::mpsc, compat::Compat01As03}; -use futures01::stream::Stream as Stream01; +use futures::{prelude::*, channel::mpsc}; use libp2p::PeerId; use parking_lot::Mutex; use sp_runtime::{traits::Block as BlockT, ConsensusEngineId}; @@ -38,7 +37,7 @@ struct GossipEngineInner { state_machine: ConsensusGossip, network: Box + Send>, periodic_maintenance_interval: futures_timer::Delay, - network_event_stream: Compat01As03 + Send>>, + network_event_stream: Pin + Send>>, engine_id: ConsensusEngineId, } @@ -64,7 +63,7 @@ impl GossipEngine { state_machine, network: Box::new(network), periodic_maintenance_interval: futures_timer::Delay::new(PERIODIC_MAINTENANCE_INTERVAL), - network_event_stream: Compat01As03::new(network_event_stream), + network_event_stream, engine_id, })); @@ -178,7 +177,7 @@ impl Future for GossipEngineInner { fn poll(mut self: Pin<&mut Self>, cx: &mut Context) -> Poll { let this = &mut *self; - while let Poll::Ready(Some(Ok(event))) = this.network_event_stream.poll_next_unpin(cx) { + while let Poll::Ready(Some(event)) = this.network_event_stream.poll_next_unpin(cx) { match event { Event::NotificationStreamOpened { remote, engine_id: msg_engine_id, roles } => { if msg_engine_id != this.engine_id { diff --git a/client/network-gossip/src/lib.rs b/client/network-gossip/src/lib.rs index 705a27210a..c4f057a775 100644 --- a/client/network-gossip/src/lib.rs +++ b/client/network-gossip/src/lib.rs @@ -61,7 +61,7 @@ pub use self::validator::{DiscardAll, MessageIntent, Validator, ValidatorContext use futures::prelude::*; use sc_network::{specialization::NetworkSpecialization, Event, ExHashT, NetworkService, PeerId, ReputationChange}; use sp_runtime::{traits::Block as BlockT, ConsensusEngineId}; -use std::sync::Arc; +use std::{pin::Pin, sync::Arc}; mod bridge; mod state_machine; @@ -70,7 +70,7 @@ mod validator; /// Abstraction over a network. pub trait Network { /// Returns a stream of events representing what happens on the network. - fn event_stream(&self) -> Box + Send>; + fn event_stream(&self) -> Pin + Send>>; /// Adjust the reputation of a node. fn report_peer(&self, peer_id: PeerId, reputation: ReputationChange); @@ -97,8 +97,8 @@ pub trait Network { } impl, H: ExHashT> Network for Arc> { - fn event_stream(&self) -> Box + Send> { - Box::new(NetworkService::event_stream(self).map(|v| Ok::<_, ()>(v)).compat()) + fn event_stream(&self) -> Pin + Send>> { + Box::pin(NetworkService::event_stream(self)) } fn report_peer(&self, peer_id: PeerId, reputation: ReputationChange) { -- GitLab From e72d642da6d6e97a12a5bfda423ba15c20fa0911 Mon Sep 17 00:00:00 2001 From: kianenigma Date: Thu, 20 Feb 2020 14:32:34 +0100 Subject: [PATCH 010/301] Remove unused generics --- frame/staking/src/lib.rs | 13 +++--- frame/staking/src/mock.rs | 8 ++-- frame/staking/src/offchain_election.rs | 12 +++--- frame/staking/src/testing_utils.rs | 6 +-- primitives/phragmen/compact/src/assignment.rs | 9 ++-- primitives/phragmen/compact/src/lib.rs | 42 ++++++++++--------- primitives/phragmen/compact/src/staked.rs | 11 ++--- primitives/phragmen/src/lib.rs | 4 +- primitives/phragmen/src/tests.rs | 24 +++++------ 9 files changed, 65 insertions(+), 64 deletions(-) diff --git a/frame/staking/src/lib.rs b/frame/staking/src/lib.rs index 471c5ad5fc..919ab8de5f 100644 --- a/frame/staking/src/lib.rs +++ b/frame/staking/src/lib.rs @@ -631,11 +631,10 @@ impl Default for ElectionStatus { pub type BalanceOf = <::Currency as Currency<::AccountId>>::Balance; -pub type CompactOf = CompactAssignments< +pub type Compact = CompactAssignments< NominatorIndex, ValidatorIndex, OffchainAccuracy, - ::AccountId, >; type PositiveImbalanceOf = @@ -1162,7 +1161,7 @@ decl_module! { pub fn submit_election_solution( origin, winners: Vec, - compact_assignments: CompactOf, + compact_assignments: Compact, score: PhragmenScore, ) { let _who = ensure_signed(origin)?; @@ -1180,7 +1179,7 @@ decl_module! { pub fn submit_election_solution_unsigned( origin, winners: Vec, - compact_assignments: CompactOf, + compact_assignments: Compact, score: PhragmenScore, // already used and checked in ValidateUnsigned. _validator_index: u32, @@ -1768,7 +1767,7 @@ impl Module { /// of the next round. This may be called by both a signed and an unsigned transaction. fn check_and_replace_solution( winners: Vec, - compact_assignments: CompactOf, + compact_assignments: Compact, compute: ElectionCompute, claimed_score: PhragmenScore, ) -> Result<(), Error> { @@ -2591,7 +2590,7 @@ impl frame_support::unsigned::ValidateUnsigned for Module { validator_index, signature, ) = call { - use offchain_election::SignaturePayloadOf; + use offchain_election::SignaturePayload; // discard early solution if Self::era_election_status() == ElectionStatus::Close { @@ -2614,7 +2613,7 @@ impl frame_support::unsigned::ValidateUnsigned for Module { } // check signature - let payload: SignaturePayloadOf = ( + let payload: SignaturePayload = ( winners, compact, score, diff --git a/frame/staking/src/mock.rs b/frame/staking/src/mock.rs index 27e0560043..610d432c0b 100644 --- a/frame/staking/src/mock.rs +++ b/frame/staking/src/mock.rs @@ -750,7 +750,7 @@ pub fn on_offence_now( pub fn horrible_phragmen_with_post_processing( do_reduce: bool, ) -> ( - CompactOf, + Compact, Vec, PhragmenScore, ) { @@ -851,7 +851,7 @@ pub fn horrible_phragmen_with_post_processing( OffchainAccuracy, >(staked_assignment); - let compact = >::from_assignment( + let compact = Compact::from_assignment( assignments_reduced, nominator_index, validator_index, @@ -869,7 +869,7 @@ pub fn do_phragmen_with_post_processing( do_reduce: bool, tweak: impl FnOnce(&mut Vec>), ) -> ( - CompactOf, + Compact, Vec, PhragmenScore, ) { @@ -920,7 +920,7 @@ pub fn do_phragmen_with_post_processing( evaluate_support::(&support_map) }; - let compact = >::from_assignment( + let compact = Compact::from_assignment( assignments_reduced, nominator_index, validator_index, diff --git a/frame/staking/src/offchain_election.rs b/frame/staking/src/offchain_election.rs index 62b15cab6a..87176676e3 100644 --- a/frame/staking/src/offchain_election.rs +++ b/frame/staking/src/offchain_election.rs @@ -17,7 +17,7 @@ //! Helpers for offchain worker election. use crate::{ - Call, Module, Trait, ValidatorIndex, NominatorIndex, CompactOf, OffchainAccuracy, + Call, Module, Trait, ValidatorIndex, NominatorIndex, Compact, OffchainAccuracy, }; use codec::Encode; use frame_system::offchain::{SubmitUnsignedTransaction}; @@ -48,9 +48,9 @@ pub(crate) enum OffchainElectionError { } /// The type of signature data encoded with the unsigned submission -pub(crate) type SignaturePayloadOf<'a, T> = ( +pub(crate) type SignaturePayload<'a> = ( &'a [ValidatorIndex], - &'a CompactOf, + &'a Compact, &'a PhragmenScore, &'a u32, ); @@ -130,7 +130,7 @@ pub(crate) fn compute_offchain_election() -> Result<(), OffchainElecti ); // sign it. - let signature_payload: SignaturePayloadOf = + let signature_payload: SignaturePayload = (&winners, &compact, &score, &(index as u32)); let signature = pubkey.sign(&signature_payload.encode()) .ok_or(OffchainElectionError::SigningFailed)?; @@ -168,7 +168,7 @@ pub fn prepare_submission( assignments: Vec>, winners: Vec<(T::AccountId, ExtendedBalance)>, do_reduce: bool, -) -> (Vec, CompactOf, PhragmenScore) +) -> (Vec, Compact, PhragmenScore) where ExtendedBalance: From<::Inner>, { @@ -222,7 +222,7 @@ where }; // compact encode the assignment. - let compact = >::from_assignment( + let compact = Compact::from_assignment( low_accuracy_assignment, nominator_index, validator_index, diff --git a/frame/staking/src/testing_utils.rs b/frame/staking/src/testing_utils.rs index c7ae18431e..0a01b59410 100644 --- a/frame/staking/src/testing_utils.rs +++ b/frame/staking/src/testing_utils.rs @@ -144,7 +144,7 @@ pub fn setup_chain_stakers( /// Build a _really bad_ but acceptable solution for election. This should always yield a solution /// which has a less score than the seq-phragmen. pub fn get_weak_solution(do_reduce: bool) --> (Vec, CompactOf, PhragmenScore) { +-> (Vec, Compact, PhragmenScore) { use sp_std::collections::btree_map::BTreeMap; let mut backing_stake_of: BTreeMap> = BTreeMap::new(); @@ -275,7 +275,7 @@ pub fn get_weak_solution(do_reduce: bool) // compact encode the assignment. - let compact = >::from_assignment( + let compact = Compact::from_assignment( low_accuracy_assignment, nominator_index, validator_index, @@ -292,7 +292,7 @@ pub fn get_weak_solution(do_reduce: bool) /// Create a solution for seq-phragmen. This uses the same internal function as used by the offchain /// worker code. pub fn get_seq_phragmen_solution(do_reduce: bool) --> (Vec, CompactOf, PhragmenScore) { +-> (Vec, Compact, PhragmenScore) { let sp_phragmen::PhragmenResult { winners, assignments, diff --git a/primitives/phragmen/compact/src/assignment.rs b/primitives/phragmen/compact/src/assignment.rs index b81c807dec..587e482ccb 100644 --- a/primitives/phragmen/compact/src/assignment.rs +++ b/primitives/phragmen/compact/src/assignment.rs @@ -162,14 +162,13 @@ pub(crate) fn assignment( impl< #voter_type: _phragmen::codec::Codec + Default + Copy, #target_type: _phragmen::codec::Codec + Default + Copy, - A: _phragmen::codec::Codec + Default + Clone, Accuracy: _phragmen::codec::Codec + Default + Clone + _phragmen::sp_runtime::PerThing + PartialOrd, > - #ident<#voter_type, #target_type, Accuracy, A> + #ident<#voter_type, #target_type, Accuracy> { - pub fn from_assignment( + pub fn from_assignment( assignments: Vec<_phragmen::Assignment>, index_of_voter: FV, index_of_target: FT, @@ -177,12 +176,12 @@ pub(crate) fn assignment( where for<'r> FV: Fn(&'r A) -> Option<#voter_type>, for<'r> FT: Fn(&'r A) -> Option<#target_type>, + A: _phragmen::IdentifierT, { let mut compact: #ident< #voter_type, #target_type, Accuracy, - A, > = Default::default(); for _phragmen::Assignment { who, distribution } in assignments { @@ -197,7 +196,7 @@ pub(crate) fn assignment( Ok(compact) } - pub fn into_assignment( + pub fn into_assignment( self, voter_at: impl Fn(#voter_type) -> Option, target_at: impl Fn(#target_type) -> Option, diff --git a/primitives/phragmen/compact/src/lib.rs b/primitives/phragmen/compact/src/lib.rs index cc3eac63b9..724c07eedc 100644 --- a/primitives/phragmen/compact/src/lib.rs +++ b/primitives/phragmen/compact/src/lib.rs @@ -33,30 +33,16 @@ const PREFIX: &'static str = "votes"; /// Generates a struct to store the phragmen assignments in a compact way. The struct can only store /// distributions up to the given input count. The given count must be greater than 2. /// -/// 3 generic types must be given to the type -/// -/// - `V`: identifier/index type of the voter. -/// - `T`: identifier/index type of the target. -/// - `W`: any type used as the edge weight. -/// /// ```nocompile /// // generate a struct with nominator and edge weight u128, with maximum supported /// // edge per voter of 32. -/// generate_compact_solution_type(TestCompact, 32) +/// generate_compact_solution_type(pub TestCompact, 32) /// ``` /// -/// The generated structure creates one key for each possible count of distributions from 1 up to -/// the given length. A normal distribution is a tuple of `(candidate, weight)`. Typically, the -/// weight can refer to either the ratio of the voter's support or its absolute value. The following -/// rules hold regarding the compact representation: -/// - For single distribution, no weight is stored. The weight is known to be 100%. -/// - For all the rest, the weight if the last distribution is omitted. This value can be computed -/// from the rest. -/// -/// An example expansion of length 16 is as follows: +/// This generates: /// -/// ```nocompile -/// struct TestCompact { +/// ```ignore +/// pub struct TestCompact { /// votes1: Vec<(V, T)>, /// votes2: Vec<(V, (T, W), T)>, /// votes3: Vec<(V, [(T, W); 2usize], T)>, @@ -75,6 +61,22 @@ const PREFIX: &'static str = "votes"; /// votes16: Vec<(V, [(T, W); 15usize], T)>, /// } /// ``` +/// +/// The generic arguments are: +/// - `V`: identifier/index for voter (nominator) types. +/// - `T` identifier/index for candidate (validator) types. +/// - `W` weight type. +/// +/// Some conversion implementations are provided by default if +/// - `W` is u128, or +/// - `W` is anything that implements `PerThing` (such as `Perbill`) +/// +/// The ideas behind the structure are as follows: +/// +/// - For single distribution, no weight is stored. The weight is known to be 100%. +/// - For all the rest, the weight if the last distribution is omitted. This value can be computed +/// from the rest. +/// #[proc_macro] pub fn generate_compact_solution_type(item: TokenStream) -> TokenStream { let CompactSolutionDef { @@ -168,8 +170,8 @@ fn struct_def( _phragmen::codec::Encode, _phragmen::codec::Decode, )] - #vis struct #ident<#voter_type, #target_type, #weight_type, A> { - _marker: sp_std::marker::PhantomData, + #vis struct #ident<#voter_type, #target_type, #weight_type> { + // _marker: sp_std::marker::PhantomData, #singles #doubles #rest diff --git a/primitives/phragmen/compact/src/staked.rs b/primitives/phragmen/compact/src/staked.rs index 46b1d6bf7a..a7cf853f17 100644 --- a/primitives/phragmen/compact/src/staked.rs +++ b/primitives/phragmen/compact/src/staked.rs @@ -158,12 +158,11 @@ pub(crate) fn staked( impl< #voter_type: _phragmen::codec::Codec + Default + Copy, #target_type: _phragmen::codec::Codec + Default + Copy, - A: _phragmen::codec::Codec + Default + Clone, > - #ident<#voter_type, #target_type, u128, A> + #ident<#voter_type, #target_type, u128> { /// Generate self from a vector of `StakedAssignment`. - pub fn from_staked( + pub fn from_staked( assignments: Vec<_phragmen::StakedAssignment>, index_of_voter: FV, index_of_target: FT, @@ -171,8 +170,9 @@ pub(crate) fn staked( where for<'r> FV: Fn(&'r A) -> Option<#voter_type>, for<'r> FT: Fn(&'r A) -> Option<#target_type>, + A: _phragmen::IdentifierT { - let mut compact: #ident<#voter_type, #target_type, u128, A> = Default::default(); + let mut compact: #ident<#voter_type, #target_type, u128> = Default::default(); for _phragmen::StakedAssignment { who, distribution } in assignments { match distribution.len() { 0 => continue, @@ -188,7 +188,7 @@ pub(crate) fn staked( /// Convert self into `StakedAssignment`. The given function should return the total /// weight of a voter. It is used to subtract the sum of all the encoded weights to /// infer the last one. - pub fn into_staked( + pub fn into_staked( self, max_of: FM, voter_at: impl Fn(#voter_type) -> Option, @@ -197,6 +197,7 @@ pub(crate) fn staked( -> Result>, _phragmen::Error> where for<'r> FM: Fn(&'r A) -> u128, + A: _phragmen::IdentifierT, { let mut assignments: Vec<_phragmen::StakedAssignment> = Default::default(); #into_impl diff --git a/primitives/phragmen/src/lib.rs b/primitives/phragmen/src/lib.rs index 43533fd552..8e4cfec3f8 100644 --- a/primitives/phragmen/src/lib.rs +++ b/primitives/phragmen/src/lib.rs @@ -67,9 +67,9 @@ pub use sp_phragmen_compact::generate_compact_solution_type; // an aggregator trait for a generic type of a voter/target identifier. This usually maps to // substrate's account id. -pub trait IdentifierT: Clone + Eq + Default + Ord + Debug {} +pub trait IdentifierT: Clone + Eq + Default + Ord + Debug + codec::Codec {} -impl IdentifierT for T {} +impl IdentifierT for T {} /// The errors that might occur in the this crate and compact. #[derive(Debug, Eq, PartialEq)] diff --git a/primitives/phragmen/src/tests.rs b/primitives/phragmen/src/tests.rs index 59a94ad51b..f3c257b54d 100644 --- a/primitives/phragmen/src/tests.rs +++ b/primitives/phragmen/src/tests.rs @@ -600,7 +600,7 @@ mod compact { #[test] fn compact_struct_is_codec() { - let compact = TestCompact::<_, _, _, u64> { + let compact = TestCompact::<_, _, _> { votes1: vec![(2u64, 20), (4, 40)], votes2: vec![ (1, (10, Accuracy::from_percent(80)), 11), @@ -684,7 +684,7 @@ mod compact { targets.iter().position(|x| x == a).map(TryInto::try_into).unwrap().ok() }; - let compacted = >::from_assignment( + let compacted = >::from_assignment( assignments.clone(), voter_index, target_index, @@ -782,7 +782,7 @@ mod compact { targets.iter().position(|x| x == a).map(TryInto::try_into).unwrap().ok() }; - let compacted = >::from_staked( + let compacted = >::from_staked( assignments.clone(), voter_index, target_index, @@ -821,7 +821,7 @@ mod compact { fn compact_into_stake_must_report_overflow() { // The last edge which is computed from the rest should ALWAYS be positive. // in votes2 - let compact = TestCompact:: { + let compact = TestCompact:: { votes1: Default::default(), votes2: vec![(0, (1, 10), 2)], ..Default::default() @@ -836,7 +836,7 @@ mod compact { ); // in votes3 onwards - let compact = TestCompact:: { + let compact = TestCompact:: { votes1: Default::default(), votes2: Default::default(), votes3: vec![(0, [(1, 7), (2, 8)], 3)], @@ -849,7 +849,7 @@ mod compact { ); // Also if equal - let compact = TestCompact:: { + let compact = TestCompact:: { votes1: Default::default(), votes2: Default::default(), // 5 is total, we cannot leave none for 30 here. @@ -866,7 +866,7 @@ mod compact { #[test] fn compact_into_assignment_must_report_overflow() { // in votes2 - let compact = TestCompact:: { + let compact = TestCompact:: { votes1: Default::default(), votes2: vec![(0, (1, Accuracy::from_percent(100)), 2)], ..Default::default() @@ -880,7 +880,7 @@ mod compact { ); // in votes3 onwards - let compact = TestCompact:: { + let compact = TestCompact:: { votes1: Default::default(), votes2: Default::default(), votes3: vec![(0, [(1, Accuracy::from_percent(70)), (2, Accuracy::from_percent(80))], 3)], @@ -904,7 +904,7 @@ mod compact { let entity_index = |a: &AccountId| -> Option { Some(*a as u16) }; - let compacted = >::from_staked( + let compacted = >::from_staked( assignments.clone(), entity_index, entity_index, @@ -919,7 +919,7 @@ mod compact { }, ]; - let compacted = >::from_staked( + let compacted = >::from_staked( assignments.clone(), entity_index, entity_index, @@ -937,7 +937,7 @@ mod compact { }, ]; - let compacted = >::from_assignment( + let compacted = >::from_assignment( assignments.clone(), entity_index, entity_index, @@ -972,7 +972,7 @@ mod compact { targets.iter().position(|x| x == a).map(TryInto::try_into).unwrap().ok() }; - let compacted = >::from_staked( + let compacted = >::from_staked( assignments.clone(), voter_index, target_index, -- GitLab From 9f227f9ab0c6f84f4c16286ba5d2a4b09a6cdaaf Mon Sep 17 00:00:00 2001 From: kianenigma Date: Thu, 20 Feb 2020 14:46:53 +0100 Subject: [PATCH 011/301] Remove max-nominator footgun --- frame/staking/src/lib.rs | 45 ++++++++++++++------------ primitives/phragmen/compact/src/lib.rs | 8 ++++- primitives/phragmen/src/lib.rs | 9 ++++-- 3 files changed, 38 insertions(+), 24 deletions(-) diff --git a/frame/staking/src/lib.rs b/frame/staking/src/lib.rs index 919ab8de5f..db498b3a74 100644 --- a/frame/staking/src/lib.rs +++ b/frame/staking/src/lib.rs @@ -292,23 +292,23 @@ use frame_system::{ }; use sp_phragmen::{ ExtendedBalance, Assignment, PhragmenScore, PhragmenResult, build_support_map, evaluate_support, - elect, generate_compact_solution_type, is_score_better, + elect, generate_compact_solution_type, is_score_better, VotingLimit, }; const DEFAULT_MINIMUM_VALIDATOR_COUNT: u32 = 4; -pub(crate) const MAX_NOMINATIONS: usize = 16; const MAX_UNLOCKING_CHUNKS: usize = 32; const STAKING_ID: LockIdentifier = *b"staking "; -// indexable by 2 bytes +/// Maximum number of stakers that can be stored in a snapshot. pub(crate) const MAX_VALIDATORS: u32 = ValidatorIndex::max_value() as u32; pub(crate) const MAX_NOMINATORS: u32 = NominatorIndex::max_value(); -// TODO: get rid of 16 +// Note: Maximum nomination limit is set here -- 16. generate_compact_solution_type!(pub CompactAssignments, 16); /// Data type used to index nominators in the compact type pub type NominatorIndex = u32; + /// Data type used to index validators in the compact type. pub type ValidatorIndex = u16; @@ -324,6 +324,23 @@ pub type ChainAccuracy = Perbill; /// Accuracy used for off-chain phragmen. This better be small. pub type OffchainAccuracy = sp_runtime::PerU16; +/// The balance type of this module. +pub type BalanceOf = + <::Currency as Currency<::AccountId>>::Balance; + +/// The compact type for election solutions. +pub type Compact = CompactAssignments< + NominatorIndex, + ValidatorIndex, + OffchainAccuracy, +>; + +type PositiveImbalanceOf = + <::Currency as Currency<::AccountId>>::PositiveImbalance; +type NegativeImbalanceOf = + <::Currency as Currency<::AccountId>>::NegativeImbalance; +type MomentOf = <::Time as Time>::Moment; + pub mod sr25519 { mod app_sr25519 { use sp_application_crypto::{app_crypto, key_types::STAKING, sr25519}; @@ -629,20 +646,6 @@ impl Default for ElectionStatus { } } -pub type BalanceOf = - <::Currency as Currency<::AccountId>>::Balance; -pub type Compact = CompactAssignments< - NominatorIndex, - ValidatorIndex, - OffchainAccuracy, ->; - -type PositiveImbalanceOf = - <::Currency as Currency<::AccountId>>::PositiveImbalance; -type NegativeImbalanceOf = - <::Currency as Currency<::AccountId>>::NegativeImbalance; -type MomentOf = <::Time as Time>::Moment; - /// Means for interacting with a specialized version of the `session` trait. /// /// This is needed because `Staking` sets the `ValidatorIdOf` of the `pallet_session::Trait` @@ -1132,7 +1135,7 @@ decl_module! { /// E: number of edges. /// m: size of winner committee. /// n: number of nominators. - /// d: edge degree aka MAX_NOMINATIONS = 16 + /// d: edge degree (16 for now) /// v: number of on-chain validator candidates. /// /// NOTE: given a solution which is reduced, we can enable a new check the ensure `|E| < n + @@ -1390,7 +1393,7 @@ decl_module! { /// /// # /// - The transaction's complexity is proportional to the size of `targets`, - /// which is capped at `MAX_NOMINATIONS`. + /// which is capped at Compact::LIMIT. /// - Both the reads and writes follow a similar pattern. /// # #[weight = SimpleDispatchInfo::FixedNormal(750_000)] @@ -1402,7 +1405,7 @@ decl_module! { let stash = &ledger.stash; ensure!(!targets.is_empty(), Error::::EmptyTargets); let targets = targets.into_iter() - .take(MAX_NOMINATIONS) + .take(::LIMIT) .map(|t| T::Lookup::lookup(t)) .collect::, _>>()?; diff --git a/primitives/phragmen/compact/src/lib.rs b/primitives/phragmen/compact/src/lib.rs index 724c07eedc..1d6ce46bcc 100644 --- a/primitives/phragmen/compact/src/lib.rs +++ b/primitives/phragmen/compact/src/lib.rs @@ -33,7 +33,7 @@ const PREFIX: &'static str = "votes"; /// Generates a struct to store the phragmen assignments in a compact way. The struct can only store /// distributions up to the given input count. The given count must be greater than 2. /// -/// ```nocompile +/// ```ignore /// // generate a struct with nominator and edge weight u128, with maximum supported /// // edge per voter of 32. /// generate_compact_solution_type(pub TestCompact, 32) @@ -176,6 +176,12 @@ fn struct_def( #doubles #rest } + + impl<#voter_type, #target_type, #weight_type> _phragmen::VotingLimit + for #ident<#voter_type, #target_type, #weight_type> + { + const LIMIT: usize = #count; + } )) } diff --git a/primitives/phragmen/src/lib.rs b/primitives/phragmen/src/lib.rs index 8e4cfec3f8..764aeff7b3 100644 --- a/primitives/phragmen/src/lib.rs +++ b/primitives/phragmen/src/lib.rs @@ -65,8 +65,13 @@ pub use sp_runtime; // re-export the compact solution type. pub use sp_phragmen_compact::generate_compact_solution_type; -// an aggregator trait for a generic type of a voter/target identifier. This usually maps to -// substrate's account id. +/// A trait to limit the number of votes per voter. The generated compact type will implement this. +pub trait VotingLimit { + const LIMIT: usize; +} + +/// an aggregator trait for a generic type of a voter/target identifier. This usually maps to +/// substrate's account id. pub trait IdentifierT: Clone + Eq + Default + Ord + Debug + codec::Codec {} impl IdentifierT for T {} -- GitLab From 308273f85c23c1e2176c11ed5f129adc4b68fb8a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tomasz=20Drwi=C4=99ga?= Date: Thu, 20 Feb 2020 15:21:34 +0100 Subject: [PATCH 012/301] Offchain Workers: Example Pallet (#4989) * Example of offchain worker pallet. * Fix compilation issues. * Use serde_json to parse JSON. * Add some basic tests. * Working on docs. * Fix compilation * Finish docs for signed. * Work on unsigned send. * Add some tests and missing docs. * Add example of StorageValueRef * Add weight. * Extra \n * Fix im-online test. * Bump runtime. * Fix tests. * Apply suggestions from code review Co-Authored-By: Joshy Orndorff Co-Authored-By: Gavin Wood * Address review comments. Co-authored-by: Joshy Orndorff Co-authored-by: Gavin Wood --- Cargo.lock | 29 +- Cargo.toml | 1 + bin/node/runtime/src/lib.rs | 2 +- frame/example-offchain-worker/Cargo.toml | 29 ++ frame/example-offchain-worker/src/lib.rs | 548 +++++++++++++++++++++ frame/example-offchain-worker/src/tests.rs | 210 ++++++++ frame/executive/src/lib.rs | 5 + frame/im-online/src/lib.rs | 2 - frame/im-online/src/tests.rs | 15 +- primitives/core/src/offchain/testing.rs | 6 +- primitives/runtime/src/offchain/mod.rs | 2 + 11 files changed, 832 insertions(+), 17 deletions(-) create mode 100644 frame/example-offchain-worker/Cargo.toml create mode 100644 frame/example-offchain-worker/src/lib.rs create mode 100644 frame/example-offchain-worker/src/tests.rs diff --git a/Cargo.lock b/Cargo.lock index 622867dac2..2f5dd0e19f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3722,6 +3722,12 @@ version = "0.1.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "72ef4a56884ca558e5ddb05a1d1e7e1bfd9a68d9ed024c21704cc98872dae1bb" +[[package]] +name = "nohash-hasher" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "721a2bf1c26159ebf17e0a980bc4ce61f4b2fec5ec3b42d42fddd7a84a9e538f" + [[package]] name = "nohash-hasher" version = "0.2.0" @@ -4149,6 +4155,21 @@ dependencies = [ "sp-std", ] +[[package]] +name = "pallet-example-offchain-worker" +version = "2.0.0" +dependencies = [ + "frame-support", + "frame-system", + "parity-scale-codec", + "serde", + "serde_json", + "sp-core", + "sp-io", + "sp-runtime", + "sp-std", +] + [[package]] name = "pallet-finality-tracker" version = "2.0.0" @@ -6215,7 +6236,7 @@ dependencies = [ "linked_hash_set", "log 0.4.8", "lru 0.4.3", - "nohash-hasher", + "nohash-hasher 0.2.0", "parity-scale-codec", "parking_lot 0.10.0", "prost", @@ -9168,14 +9189,14 @@ checksum = "d089681aa106a86fade1b0128fb5daf07d5867a509ab036d99988dec80429a57" [[package]] name = "yamux" -version = "0.4.3" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d73295bc9d9acf89dd9336b3b5f5b57731ee72b587857dd4312721a0196b48e5" +checksum = "902f4cee32c401c211b6b69f4a3f6f4cf3515644db5bd822cf685a7dbd6201f9" dependencies = [ "bytes 0.5.4", "futures 0.3.4", "log 0.4.8", - "nohash-hasher", + "nohash-hasher 0.1.3", "parking_lot 0.10.0", "rand 0.7.3", "thiserror", diff --git a/Cargo.toml b/Cargo.toml index 350d9eafa4..1ac2beb052 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -71,6 +71,7 @@ members = [ "frame/elections", "frame/evm", "frame/example", + "frame/example-offchain-worker", "frame/executive", "frame/finality-tracker", "frame/generic-asset", diff --git a/bin/node/runtime/src/lib.rs b/bin/node/runtime/src/lib.rs index c4d60437a3..e119fa0282 100644 --- a/bin/node/runtime/src/lib.rs +++ b/bin/node/runtime/src/lib.rs @@ -82,7 +82,7 @@ pub const VERSION: RuntimeVersion = RuntimeVersion { // implementation changes and behavior does not, then leave spec_version as // is and increment impl_version. spec_version: 223, - impl_version: 0, + impl_version: 1, apis: RUNTIME_API_VERSIONS, }; diff --git a/frame/example-offchain-worker/Cargo.toml b/frame/example-offchain-worker/Cargo.toml new file mode 100644 index 0000000000..ce858cacda --- /dev/null +++ b/frame/example-offchain-worker/Cargo.toml @@ -0,0 +1,29 @@ +[package] +name = "pallet-example-offchain-worker" +version = "2.0.0" +authors = ["Parity Technologies "] +edition = "2018" + +[dependencies] +codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false } +frame-support = { version = "2.0.0", default-features = false, path = "../support" } +frame-system = { version = "2.0.0", default-features = false, path = "../system" } +serde = { version = "1.0.101", optional = true } +sp-core = { version = "2.0.0", default-features = false, path = "../../primitives/core" } +sp-io = { version = "2.0.0", default-features = false, path = "../../primitives/io" } +sp-runtime = { version = "2.0.0", default-features = false, path = "../../primitives/runtime" } +sp-std = { version = "2.0.0", default-features = false, path = "../../primitives/std" } +serde_json = { version = "1.0.46", default-features = false, features = ["alloc"] } + +[features] +default = ["std"] +std = [ + "codec/std", + "frame-support/std", + "frame-system/std", + "serde", + "sp-core/std", + "sp-io/std", + "sp-runtime/std", + "sp-std/std", +] diff --git a/frame/example-offchain-worker/src/lib.rs b/frame/example-offchain-worker/src/lib.rs new file mode 100644 index 0000000000..1c72a8be68 --- /dev/null +++ b/frame/example-offchain-worker/src/lib.rs @@ -0,0 +1,548 @@ +// Copyright 2020 Parity Technologies (UK) Ltd. +// This file is part of Substrate. + +// Substrate is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Substrate is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Substrate. If not, see . + +//! # Offchain Worker Example Module +//! +//! The Offchain Worker Example: A simple pallet demonstrating +//! concepts, APIs and structures common to most offchain workers. +//! +//! Run `cargo doc --package pallet-example-offchain-worker --open` to view this module's +//! documentation. +//! +//! - \[`pallet_example_offchain_worker::Trait`](./trait.Trait.html) +//! - \[`Call`](./enum.Call.html) +//! - \[`Module`](./struct.Module.html) +//! +//! +//! \## Overview +//! +//! In this example we are going to build a very simplistic, naive and definitely NOT +//! production-ready oracle for BTC/USD price. +//! Offchain Worker (OCW) will be triggered after every block, fetch the current price +//! and prepare either signed or unsigned transaction to feed the result back on chain. +//! The on-chain logic will simply aggregate the results and store last `64` values to compute +//! the average price. +//! Additional logic in OCW is put in place to prevent spamming the network with both signed +//! and unsigned transactions, and custom `UnsignedValidator` makes sure that there is only +//! one unsigned transaction floating in the network. +#![cfg_attr(not(feature = "std"), no_std)] + +use frame_support::{ + debug, + dispatch::DispatchResult, decl_module, decl_storage, decl_event, + traits::Get, + weights::SimpleDispatchInfo, +}; +use frame_system::{self as system, ensure_signed, ensure_none, offchain}; +use serde_json as json; +use sp_core::crypto::KeyTypeId; +use sp_runtime::{ + offchain::{http, Duration, storage::StorageValueRef}, + traits::Zero, + transaction_validity::{InvalidTransaction, ValidTransaction, TransactionValidity}, +}; + +#[cfg(test)] +mod tests; + +/// Defines application identifier for crypto keys of this module. +/// +/// Every module that deals with signatures needs to declare its unique identifier for +/// its crypto keys. +/// When offchain worker is signing transactions it's going to request keys of type +/// `KeyTypeId` from the keystore and use the ones it finds to sign the transaction. +/// The keys can be inserted manually via RPC (see `author_insertKey`). +pub const KEY_TYPE: KeyTypeId = KeyTypeId(*b"btc!"); + +/// Based on the above `KeyTypeId` we need to generate a pallet-specific crypto type wrappers. +/// We can use from supported crypto kinds (`sr25519`, `ed25519` and `ecdsa`) and augment +/// the types with this pallet-specific identifier. +pub mod crypto { + use super::KEY_TYPE; + use sp_runtime::app_crypto::{app_crypto, sr25519}; + app_crypto!(sr25519, KEY_TYPE); +} + +/// This pallet's configuration trait +pub trait Trait: frame_system::Trait { + /// The type to sign and submit transactions. + type SubmitSignedTransaction: + offchain::SubmitSignedTransaction::Call>; + /// The type to submit unsigned transactions. + type SubmitUnsignedTransaction: + offchain::SubmitUnsignedTransaction::Call>; + + /// The overarching event type. + type Event: From> + Into<::Event>; + /// The overarching dispatch call type. + type Call: From>; + + // Configuration parameters + + /// A grace period after we send transaction. + /// + /// To avoid sending too many transactions, we only attempt to send one + /// every `GRACE_PERIOD` blocks. We use Local Storage to coordinate + /// sending between distinct runs of this offchain worker. + type GracePeriod: Get; + + /// Number of blocks of cooldown after unsigned transaction is included. + /// + /// This ensures that we only accept unsigned transactions once, every `UnsignedInterval` blocks. + type UnsignedInterval: Get; +} + +decl_storage! { + trait Store for Module as Example { + /// A vector of recently submitted prices. + /// + /// This is used to calculate average price, should have bounded size. + Prices get(fn prices): Vec; + /// Defines the block when next unsigned transaction will be accepted. + /// + /// To prevent spam of unsigned (and unpayed!) transactions on the network, + /// we only allow one transaction every `T::UnsignedInterval` blocks. + /// This storage entry defines when new transaction is going to be accepted. + NextUnsignedAt get(fn next_unsigned_at): T::BlockNumber; + } +} + +decl_event!( + /// Events generated by the module. + pub enum Event where AccountId = ::AccountId { + /// Event generated when new price is accepted to contribute to the average. + NewPrice(u32, AccountId), + } +); + +decl_module! { + /// A public part of the pallet. + pub struct Module for enum Call where origin: T::Origin { + fn deposit_event() = default; + + /// Submit new price to the list. + /// + /// This method is a public function of the module and can be called from within + /// a transaction. It appends given `price` to current list of prices. + /// In our example the `offchain worker` will create, sign & submit a transaction that + /// calls this function passing the price. + /// + /// The transaction needs to be signed (see `ensure_signed`) check, so that the caller + /// pays a fee to execute it. + /// This makes sure that it's not easy (or rather cheap) to attack the chain by submitting + /// excesive transactions, but note that it doesn't ensure the price oracle is actually + /// working and receives (and provides) meaningful data. + /// This example is not focused on correctness of the oracle itself, but rather its + /// purpose is to showcase offchain worker capabilities. + #[weight = SimpleDispatchInfo::FixedNormal(10_000)] + pub fn submit_price(origin, price: u32) -> DispatchResult { + // Retrieve sender of the transaction. + let who = ensure_signed(origin)?; + // Add the price to the on-chain list. + Self::add_price(who, price); + Ok(()) + } + + /// Submit new price to the list via unsigned transaction. + /// + /// Works exactly like the `submit_price` function, but since we allow sending the + /// transaction without a signature, and hence without paying any fees, + /// we need a way to make sure that only some transactions are accepted. + /// This function can be called only once every `T::UnsignedInterval` blocks. + /// Transactions that call that function are de-duplicated on the pool level + /// via `validate_unsigned` implementation and also are rendered invalid if + /// the function has already been called in current "session". + /// + /// It's important to specify `weight` for unsigned calls as well, because even though + /// they don't charge fees, we still don't want a single block to contain unlimited + /// number of such transactions. + /// + /// This example is not focused on correctness of the oracle itself, but rather its + /// purpose is to showcase offchain worker capabilities. + #[weight = SimpleDispatchInfo::FixedNormal(10_000)] + pub fn submit_price_unsigned(origin, _block_number: T::BlockNumber, price: u32) + -> DispatchResult + { + // This ensures that the function can only be called via unsigned transaction. + ensure_none(origin)?; + // Add the price to the on-chain list, but mark it as coming from an empty address. + Self::add_price(Default::default(), price); + // now increment the block number at which we expect next unsigned transaction. + let current_block = >::block_number(); + >::put(current_block + T::UnsignedInterval::get()); + Ok(()) + } + + /// Offchain Worker entry point. + /// + /// By implementing `fn offchain_worker` within `decl_module!` you declare a new offchain + /// worker. + /// This function will be called when the node is fully synced and a new best block is + /// succesfuly imported. + /// Note that it's not guaranteed for offchain workers to run on EVERY block, there might + /// be cases where some blocks are skipped, or for some the worker runs twice (re-orgs), + /// so the code should be able to handle that. + /// You can use `Local Storage` API to coordinate runs of the worker. + fn offchain_worker(block_number: T::BlockNumber) { + // It's a good idea to add logs to your offchain workers. + // Using the `frame_support::debug` module you have access to the same API exposed by + // the `log` crate. + // Note that having logs compiled to WASM may cause the size of the blob to increase + // significantly. You can use `RuntimeDebug` custom derive to hide details of the types + // in WASM or use `debug::native` namespace to produce logs only when the worker is + // running natively. + debug::native::info!("Hello World from offchain workers!"); + + // Since off-chain workers are just part of the runtime code, they have direct access + // to the storage and other included pallets. + // + // We can easily import `frame_system` and retrieve a block hash of the parent block. + let parent_hash = >::block_hash(block_number - 1.into()); + debug::debug!("Current block: {:?} (parent hash: {:?})", block_number, parent_hash); + + // It's a good practice to keep `fn offchain_worker()` function minimal, and move most + // of the code to separate `impl` block. + // Here we call a helper function to calculate current average price. + // This function reads storage entries of the current state. + let average: Option = Self::average_price(); + debug::debug!("Current price: {:?}", average); + + // For this example we are going to send both signed and unsigned transactions + // depending on the block number. + // Usually it's enough to choose one or the other. + let should_send = Self::choose_transaction_type(block_number); + let res = match should_send { + TransactionType::Signed => Self::fetch_price_and_send_signed(), + TransactionType::Unsigned => Self::fetch_price_and_send_unsigned(block_number), + TransactionType::None => Ok(()), + }; + if let Err(e) = res { + debug::error!("Error: {}", e); + } + } + } +} + +enum TransactionType { + Signed, + Unsigned, + None, +} + +/// Most of the functions are moved outside of the `decl_module!` macro. +/// +/// This greatly helps with error messages, as the ones inside the macro +/// can sometimes be hard to debug. +impl Module { + /// Chooses which transaction type to send. + /// + /// This function serves mostly to showcase `StorageValue` helper + /// and local storage usage. + /// + /// Returns a type of transaction that should be produced in current run. + fn choose_transaction_type(block_number: T::BlockNumber) -> TransactionType { + /// A friendlier name for the error that is going to be returned in case we are in the grace + /// period. + const RECENTLY_SENT: () = (); + + // Start off by creating a reference to Local Storage value. + // Since the local storage is common for all offchain workers, it's a good practice + // to prepend your entry with the module name. + let val = StorageValueRef::persistent(b"example_ocw::last_send"); + // The Local Storage is persisted and shared between runs of the offchain workers, + // and offchain workers may run concurrently. We can use the `mutate` function, to + // write a storage entry in an atomic fashion. Under the hood it uses `compare_and_set` + // low-level method of local storage API, which means that only one worker + // will be able to "acquire a lock" and send a transaction if multiple workers + // happen to be executed concurrently. + let res = val.mutate(|last_send: Option>| { + // We match on the value decoded from the storage. The first `Option` + // indicates if the value was present in the storage at all, + // the second (inner) `Option` indicates if the value was succesfuly + // decoded to expected type (`T::BlockNumber` in our case). + match last_send { + // If we already have a value in storage and the block number is recent enough + // we avoid sending another transaction at this time. + Some(Some(block)) if block + T::GracePeriod::get() < block_number => { + Err(RECENTLY_SENT) + }, + // In every other case we attempt to acquire the lock and send a transaction. + _ => Ok(block_number) + } + }); + + // The result of `mutate` call will give us a nested `Result` type. + // The first one matches the return of the closure passed to `mutate`, i.e. + // if we return `Err` from the closure, we get an `Err` here. + // In case we return `Ok`, here we will have another (inner) `Result` that indicates + // if the value has been set to the storage correctly - i.e. if it wasn't + // written to in the meantime. + match res { + // The value has been set correctly, which means we can safely send a transaction now. + Ok(Ok(block_number)) => { + // Depending if the block is even or odd we will send a `Signed` or `Unsigned` + // transaction. + // Note that this logic doesn't really guarantee that the transactions will be sent + // in an alternating fashion (i.e. fairly distributed). Depending on the execution + // order and lock acquisition, we may end up for instance sending two `Signed` + // transactions in a row. If a strict order is desired, it's better to use + // the storage entry for that. (for instance store both block number and a flag + // indicating the type of next transaction to send). + let send_signed = block_number % 2.into() == Zero::zero(); + if send_signed { + TransactionType::Signed + } else { + TransactionType::Unsigned + } + }, + // We are in the grace period, we should not send a transaction this time. + Err(RECENTLY_SENT) => TransactionType::None, + // We wanted to send a transaction, but failed to write the block number (acquire a + // lock). This indicates that another offchain worker that was running concurrently + // most likely executed the same logic and succeeded at writing to storage. + // Thus we don't really want to send the transaction, knowing that the other run + // already did. + Ok(Err(_)) => TransactionType::None, + } + } + + /// A helper function to fetch the price and send signed transaction. + fn fetch_price_and_send_signed() -> Result<(), String> { + use system::offchain::SubmitSignedTransaction; + // Firstly we check if there are any accounts in the local keystore that are capable of + // signing the transaction. + // If not it doesn't even make sense to make external HTTP requests, since we won't be able + // to put the results back on-chain. + if !T::SubmitSignedTransaction::can_sign() { + return Err( + "No local accounts available. Consider adding one via `author_insertKey` RPC." + )? + } + + // Make an external HTTP request to fetch the current price. + // Note this call will block until response is received. + let price = Self::fetch_price().map_err(|e| format!("{:?}", e))?; + + // Received price is wrapped into a call to `submit_price` public function of this pallet. + // This means that the transaction, when executed, will simply call that function passing + // `price` as an argument. + let call = Call::submit_price(price); + + // Using `SubmitSignedTransaction` associated type we create and submit a transaction + // representing the call, we've just created. + // Submit signed will return a vector of results for all accounts that were found in the + // local keystore with expected `KEY_TYPE`. + let results = T::SubmitSignedTransaction::submit_signed(call); + for (acc, res) in &results { + match res { + Ok(()) => debug::info!("[{:?}] Submitted price of {} cents", acc, price), + Err(e) => debug::error!("[{:?}] Failed to submit transaction: {:?}", acc, e), + } + } + + Ok(()) + } + + /// A helper function to fetch the price and send unsigned transaction. + fn fetch_price_and_send_unsigned(block_number: T::BlockNumber) -> Result<(), String> { + use system::offchain::SubmitUnsignedTransaction; + // Make sure we don't fetch the price if unsigned transaction is going to be rejected + // anyway. + let next_unsigned_at = >::get(); + if next_unsigned_at > block_number { + return Err( + format!("Too early to send unsigned transaction. Next at: {:?}", next_unsigned_at) + )? + } + + // Make an external HTTP request to fetch the current price. + // Note this call will block until response is received. + let price = Self::fetch_price().map_err(|e| format!("{:?}", e))?; + + // Received price is wrapped into a call to `submit_price_unsigned` public function of this + // pallet. This means that the transaction, when executed, will simply call that function + // passing `price` as an argument. + let call = Call::submit_price_unsigned(block_number, price); + + // Now let's create an unsigned transaction out of this call and submit it to the pool. + // By default unsigned transactions are disallowed, so we need to whitelist this case + // by writing `UnsignedValidator`. Note that it's EXTREMELY important to carefuly + // implement unsigned validation logic, as any mistakes can lead to opening DoS or spam + // attack vectors. See validation logic docs for more details. + T::SubmitUnsignedTransaction::submit_unsigned(call) + .map_err(|()| "Unable to submit unsigned transaction.".into()) + + } + + /// Fetch current price and return the result in cents. + fn fetch_price() -> Result { + // We want to keep the offchain worker execution time reasonable, so we set a hard-coded + // deadline to 2s to complete the external call. + // You can also wait idefinitely for the response, however you may still get a timeout + // coming from the host machine. + let deadline = sp_io::offchain::timestamp().add(Duration::from_millis(2_000)); + // Initiate an external HTTP GET request. + // This is using high-level wrappers from `sp_runtime`, for the low-level calls that + // you can find in `sp_io`. The API is trying to be similar to `reqwest`, but + // since we are running in a custom WASM execution environment we can't simply + // import the library here. + let request = http::Request::get( + "https://min-api.cryptocompare.com/data/price?fsym=BTC&tsyms=USD" + ); + // We set the deadline for sending of the request, note that awaiting response can + // have a separate deadline. Next we send the request, before that it's also possible + // to alter request headers or stream body content in case of non-GET requests. + let pending = request + .deadline(deadline) + .send() + .map_err(|_| http::Error::IoError)?; + + // The request is already being processed by the host, we are free to do anything + // else in the worker (we can send multiple concurrent requests too). + // At some point however we probably want to check the response though, + // so we can block current thread and wait for it to finish. + // Note that since the request is being driven by the host, we don't have to wait + // for the request to have it complete, we will just not read the response. + let response = pending.try_wait(deadline) + .map_err(|_| http::Error::DeadlineReached)??; + // Let's check the status code before we proceed to reading the response. + if response.code != 200 { + debug::warn!("Unexpected status code: {}", response.code); + return Err(http::Error::Unknown); + } + + // Next we want to fully read the response body and collect it to a vector of bytes. + // Note that the return object allows you to read the body in chunks as well + // with a way to control the deadline. + let body = response.body().collect::>(); + // Next we parse the response using `serde_json`. Even though it's possible to use + // `serde_derive` and deserialize to a struct it's not recommended due to blob size + // overhead introduced by such code. Deserializing to `json::Value` is much more + // lightweight and should be preferred, especially if we only care about a small number + // of properties from the response. + let val: Result = json::from_slice(&body); + // Let's parse the price as float value. Note that you should avoid using floats in the + // runtime, it's fine to do that in the offchain worker, but we do convert it to an integer + // before submitting on-chain. + let price = val.ok().and_then(|v| v.get("USD").and_then(|v| v.as_f64())); + let price = match price { + Some(pricef) => Ok((pricef * 100.) as u32), + None => { + let s = core::str::from_utf8(&body); + debug::warn!("Unable to extract price from the response: {:?}", s); + Err(http::Error::Unknown) + } + }?; + + debug::warn!("Got price: {} cents", price); + + Ok(price) + } + + /// Add new price to the list. + fn add_price(who: T::AccountId, price: u32) { + debug::info!("Adding to the average: {}", price); + Prices::mutate(|prices| { + const MAX_LEN: usize = 64; + + if prices.len() < MAX_LEN { + prices.push(price); + } else { + prices[price as usize % MAX_LEN] = price; + } + }); + + let average = Self::average_price() + .expect("The average is not empty, because it was just mutated; qed"); + debug::info!("Current average price is: {}", average); + // here we are raising the NewPrice event + Self::deposit_event(RawEvent::NewPrice(price, who)); + } + + /// Calculate current average price. + fn average_price() -> Option { + let prices = Prices::get(); + if prices.is_empty() { + None + } else { + Some(prices.iter().fold(0_u32, |a, b| a.saturating_add(*b)) / prices.len() as u32) + } + } +} + +#[allow(deprecated)] // ValidateUnsigned +impl frame_support::unsigned::ValidateUnsigned for Module { + type Call = Call; + + /// Validate unsigned call to this module. + /// + /// By default unsigned transactions are disallowed, but implementing the validator + /// here we make sure that some particular calls (the ones produced by offchain worker) + /// are being whitelisted and marked as valid. + fn validate_unsigned(call: &Self::Call) -> TransactionValidity { + // Firstly let's check that we call the right function. + if let Call::submit_price_unsigned(block_number, new_price) = call { + // Now let's check if the transaction has any chance to succeed. + let next_unsigned_at = >::get(); + if &next_unsigned_at > block_number { + return InvalidTransaction::Stale.into(); + } + // Let's make sure to reject transactions from the future. + let current_block = >::block_number(); + if ¤t_block < block_number { + return InvalidTransaction::Future.into(); + } + + // We prioritize transactions that are more far away from current average. + // + // Note this doesn't make much sense when building an actual oracle, but this example + // is here mostly to show off offchain workers capabilities, not about building an + // oracle. + let avg_price = Self::average_price() + .map(|price| if &price > new_price { price - new_price } else { new_price - price }) + .unwrap_or(0); + + Ok(ValidTransaction { + // We set base priority to 2**20 to make sure it's included before any other + // transactions in the pool. Next we tweak the priority depending on how much + // it differs from the current average. (the more it differs the more priority it + // has). + priority: (1 << 20) + avg_price as u64, + // This transaction does not require anything else to go before into the pool. + // In theory we could require `previous_unsigned_at` transaction to go first, + // but it's not necessary in our case. + requires: vec![], + // We set the `provides` tag to be the same as `next_unsigned_at`. This makes + // sure only one transaction produced after `next_unsigned_at` will ever + // get to the transaction pool and will end up in the block. + // We can still have multiple transactions compete for the same "spot", + // and the one with higher priority will replace other one in the pool. + provides: vec![codec::Encode::encode(&(KEY_TYPE.0, next_unsigned_at))], + // The transaction is only valid for next 5 blocks. After that it's + // going to be revalidated by the pool. + longevity: 5, + // It's fine to propagate that transaction to other peers, which means it can be + // created even by nodes that don't produce blocks. + // Note that sometimes it's better to keep it for yourself (if you are the block + // producer), since for instance in some schemes others may copy your solution and + // claim a reward. + propagate: true, + }) + } else { + InvalidTransaction::Call.into() + } + } +} diff --git a/frame/example-offchain-worker/src/tests.rs b/frame/example-offchain-worker/src/tests.rs new file mode 100644 index 0000000000..6d6a82d8c9 --- /dev/null +++ b/frame/example-offchain-worker/src/tests.rs @@ -0,0 +1,210 @@ +// Copyright 2020 Parity Technologies (UK) Ltd. +// This file is part of Substrate. + +// Substrate is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Substrate is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Substrate. If not, see . + +use crate::*; + +use codec::Decode; +use frame_support::{ + assert_ok, impl_outer_origin, parameter_types, + weights::{GetDispatchInfo, Weight}, +}; +use sp_core::{ + H256, + offchain::{OffchainExt, TransactionPoolExt, testing}, + testing::KeyStore, + traits::KeystoreExt, +}; +use sp_runtime::{ + Perbill, RuntimeAppPublic, + testing::{Header, TestXt}, + traits::{BlakeTwo256, IdentityLookup, Extrinsic as ExtrinsicsT}, +}; + +impl_outer_origin! { + pub enum Origin for Test where system = frame_system {} +} + +// For testing the module, we construct most of a mock runtime. This means +// first constructing a configuration type (`Test`) which `impl`s each of the +// configuration traits of modules we want to use. +#[derive(Clone, Eq, PartialEq)] +pub struct Test; +parameter_types! { + pub const BlockHashCount: u64 = 250; + pub const MaximumBlockWeight: Weight = 1024; + pub const MaximumBlockLength: u32 = 2 * 1024; + pub const AvailableBlockRatio: Perbill = Perbill::one(); +} +impl frame_system::Trait for Test { + type Origin = Origin; + type Index = u64; + type BlockNumber = u64; + type Hash = H256; + type Call = (); + type Hashing = BlakeTwo256; + type AccountId = sp_core::sr25519::Public; + type Lookup = IdentityLookup; + type Header = Header; + type Event = (); + type BlockHashCount = BlockHashCount; + type MaximumBlockWeight = MaximumBlockWeight; + type MaximumBlockLength = MaximumBlockLength; + type AvailableBlockRatio = AvailableBlockRatio; + type Version = (); + type ModuleToIndex = (); + type OnReapAccount = (); + type OnNewAccount = (); + type AccountData = (); +} + +type Extrinsic = TestXt, ()>; +type SubmitTransaction = frame_system::offchain::TransactionSubmitter< + crypto::Public, + Test, + Extrinsic +>; + +impl frame_system::offchain::CreateTransaction for Test { + type Public = sp_core::sr25519::Public; + type Signature = sp_core::sr25519::Signature; + + fn create_transaction>( + call: ::Call, + _public: Self::Public, + _account: ::AccountId, + nonce: ::Index, + ) -> Option<(::Call, ::SignaturePayload)> { + Some((call, (nonce, ()))) + } +} + +parameter_types! { + pub const GracePeriod: u64 = 5; + pub const UnsignedInterval: u64 = 128; +} + +impl Trait for Test { + type Event = (); + type Call = Call; + type SubmitSignedTransaction = SubmitTransaction; + type SubmitUnsignedTransaction = SubmitTransaction; + type GracePeriod = GracePeriod; + type UnsignedInterval = UnsignedInterval; +} + +type Example = Module; + +#[test] +fn it_aggregates_the_price() { + sp_io::TestExternalities::default().execute_with(|| { + assert_eq!(Example::average_price(), None); + + assert_ok!(Example::submit_price(Origin::signed(Default::default()), 27)); + assert_eq!(Example::average_price(), Some(27)); + + assert_ok!(Example::submit_price(Origin::signed(Default::default()), 43)); + assert_eq!(Example::average_price(), Some(35)); + }); +} + +#[test] +fn should_make_http_call_and_parse_result() { + let (offchain, state) = testing::TestOffchainExt::new(); + let mut t = sp_io::TestExternalities::default(); + t.register_extension(OffchainExt::new(offchain)); + + price_oracle_response(&mut state.write()); + + t.execute_with(|| { + // when + let price = Example::fetch_price().unwrap(); + // then + assert_eq!(price, 15522); + }); +} + +#[test] +fn should_submit_signed_transaction_on_chain() { + const PHRASE: &str = "news slush supreme milk chapter athlete soap sausage put clutch what kitten"; + + let (offchain, offchain_state) = testing::TestOffchainExt::new(); + let (pool, pool_state) = testing::TestTransactionPoolExt::new(); + let keystore = KeyStore::new(); + keystore.write().sr25519_generate_new( + crate::crypto::Public::ID, + Some(&format!("{}/hunter1", PHRASE)) + ).unwrap(); + + + let mut t = sp_io::TestExternalities::default(); + t.register_extension(OffchainExt::new(offchain)); + t.register_extension(TransactionPoolExt::new(pool)); + t.register_extension(KeystoreExt(keystore)); + + price_oracle_response(&mut offchain_state.write()); + + t.execute_with(|| { + // when + Example::fetch_price_and_send_signed().unwrap(); + // then + let tx = pool_state.write().transactions.pop().unwrap(); + assert!(pool_state.read().transactions.is_empty()); + let tx = Extrinsic::decode(&mut &*tx).unwrap(); + assert_eq!(tx.signature.unwrap().0, 0); + assert_eq!(tx.call, Call::submit_price(15522)); + }); +} + +#[test] +fn should_submit_unsigned_transaction_on_chain() { + let (offchain, offchain_state) = testing::TestOffchainExt::new(); + let (pool, pool_state) = testing::TestTransactionPoolExt::new(); + let mut t = sp_io::TestExternalities::default(); + t.register_extension(OffchainExt::new(offchain)); + t.register_extension(TransactionPoolExt::new(pool)); + + price_oracle_response(&mut offchain_state.write()); + + t.execute_with(|| { + // when + Example::fetch_price_and_send_unsigned(1).unwrap(); + // then + let tx = pool_state.write().transactions.pop().unwrap(); + assert!(pool_state.read().transactions.is_empty()); + let tx = Extrinsic::decode(&mut &*tx).unwrap(); + assert_eq!(tx.signature, None); + assert_eq!(tx.call, Call::submit_price_unsigned(1, 15522)); + }); +} + +#[test] +fn weights_work() { + // must have a default weight. + let default_call = >::submit_price(10); + let info = default_call.get_dispatch_info(); + // aka. `let info = as GetDispatchInfo>::get_dispatch_info(&default_call);` + assert_eq!(info.weight, 10_000); +} + +fn price_oracle_response(state: &mut testing::OffchainState) { + state.expect_request(0, testing::PendingRequest { + method: "GET".into(), + uri: "https://min-api.cryptocompare.com/data/price?fsym=BTC&tsyms=USD".into(), + response: Some(br#"{"USD": 155.23}"#.to_vec()), + sent: true, + ..Default::default() + }); +} diff --git a/frame/executive/src/lib.rs b/frame/executive/src/lib.rs index 792643919d..18f4edf344 100644 --- a/frame/executive/src/lib.rs +++ b/frame/executive/src/lib.rs @@ -357,6 +357,11 @@ where &digests, frame_system::InitKind::Inspection, ); + + // Initialize logger, so the log messages are visible + // also when running WASM. + frame_support::debug::RuntimeLogger::init(); + >::offchain_worker( // to maintain backward compatibility we call module offchain workers // with parent block number. diff --git a/frame/im-online/src/lib.rs b/frame/im-online/src/lib.rs index a050ad3d8a..0132bcedd2 100644 --- a/frame/im-online/src/lib.rs +++ b/frame/im-online/src/lib.rs @@ -341,8 +341,6 @@ decl_module! { // Runs after every block. fn offchain_worker(now: T::BlockNumber) { - debug::RuntimeLogger::init(); - // Only send messages if we are a potential validator. if sp_io::offchain::is_validator() { for res in Self::send_heartbeats(now).into_iter().flatten() { diff --git a/frame/im-online/src/tests.rs b/frame/im-online/src/tests.rs index 80056023e5..4ce5dec961 100644 --- a/frame/im-online/src/tests.rs +++ b/frame/im-online/src/tests.rs @@ -192,6 +192,8 @@ fn late_heartbeat_should_fail() { #[test] fn should_generate_heartbeats() { + use sp_runtime::traits::OffchainWorker; + let mut ext = new_test_ext(); let (offchain, _state) = TestOffchainExt::new(); let (pool, state) = TestTransactionPoolExt::new(); @@ -202,6 +204,7 @@ fn should_generate_heartbeats() { // given let block = 1; System::set_block_number(block); + UintAuthorityId::set_all_keys(vec![0, 1, 2]); // buffer new validators Session::rotate_session(); // enact the change and buffer another one @@ -209,17 +212,13 @@ fn should_generate_heartbeats() { Session::rotate_session(); // when - UintAuthorityId::set_all_keys(vec![0, 1, 2]); - ImOnline::send_heartbeats(2) - .unwrap() - // make sure to consume the iterator and check there are no errors. - .collect::, _>>().unwrap(); - + ImOnline::offchain_worker(block); // then let transaction = state.write().transactions.pop().unwrap(); - // All validators have `0` as their session key, so we generate 3 transactions. + // All validators have `0` as their session key, so we generate 2 transactions. assert_eq!(state.read().transactions.len(), 2); + // check stuff about the transaction. let ex: Extrinsic = Decode::decode(&mut &*transaction).unwrap(); let heartbeat = match ex.call { @@ -228,7 +227,7 @@ fn should_generate_heartbeats() { }; assert_eq!(heartbeat, Heartbeat { - block_number: 2, + block_number: block, network_state: sp_io::offchain::network_state().unwrap(), session_index: 2, authority_index: 2, diff --git a/primitives/core/src/offchain/testing.rs b/primitives/core/src/offchain/testing.rs index 82438dd6f8..f4faee6b02 100644 --- a/primitives/core/src/offchain/testing.rs +++ b/primitives/core/src/offchain/testing.rs @@ -72,6 +72,8 @@ pub struct OffchainState { pub persistent_storage: InMemOffchainStorage, /// Local storage pub local_storage: InMemOffchainStorage, + /// Current timestamp (unix millis) + pub timestamp: u64, } impl OffchainState { @@ -144,7 +146,7 @@ impl TestOffchainExt { impl offchain::Externalities for TestOffchainExt { fn is_validator(&self) -> bool { - unimplemented!("not needed in tests so far") + true } fn network_state(&self) -> Result { @@ -155,7 +157,7 @@ impl offchain::Externalities for TestOffchainExt { } fn timestamp(&mut self) -> Timestamp { - unimplemented!("not needed in tests so far") + Timestamp::from_unix_millis(self.0.read().timestamp) } fn sleep_until(&mut self, _deadline: Timestamp) { diff --git a/primitives/runtime/src/offchain/mod.rs b/primitives/runtime/src/offchain/mod.rs index dfc15360c6..9f0f949eae 100644 --- a/primitives/runtime/src/offchain/mod.rs +++ b/primitives/runtime/src/offchain/mod.rs @@ -18,3 +18,5 @@ pub mod http; pub mod storage; + +pub use sp_core::offchain::*; -- GitLab From 99cc19d0ca171325b3c67bb595ea1e23ac39fe17 Mon Sep 17 00:00:00 2001 From: Kian Paimani <5588131+kianenigma@users.noreply.github.com> Date: Thu, 20 Feb 2020 16:46:11 +0100 Subject: [PATCH 013/301] Unsigned transactions should also note weight (#4998) * Make unsigned also note weight * Bump. * Fix tests * Better fee test * Fix another test * Update lock file --- Cargo.lock | 8913 +++++++++++++++--------------- bin/node/executor/tests/basic.rs | 11 +- bin/node/executor/tests/fees.rs | 24 +- bin/node/runtime/src/lib.rs | 4 +- frame/executive/src/lib.rs | 43 +- frame/system/src/lib.rs | 71 +- 6 files changed, 4557 insertions(+), 4509 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 2f5dd0e19f..97e56ffae2 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4,7436 +4,6980 @@ name = "Inflector" version = "0.11.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe438c63458706e03479442743baae6c88256498e6431708f6dfc520a26515d3" dependencies = [ - "lazy_static", - "regex", + "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "regex 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "adler32" version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d2e7343e7fc9de883d1b0341e0b13970f764c14101234857d2ddafa1cb1cac2" [[package]] name = "aes-ctr" version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2e5b0458ea3beae0d1d8c0f3946564f8e10f90646cf78c06b4351052058d1ee" dependencies = [ - "aes-soft", - "aesni", - "ctr", - "stream-cipher", + "aes-soft 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", + "aesni 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)", + "ctr 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", + "stream-cipher 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "aes-soft" version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cfd7e7ae3f9a1fb5c03b389fc6bb9a51400d0c13053f0dca698c832bfd893a0d" dependencies = [ - "block-cipher-trait", - "byteorder 1.3.4", - "opaque-debug", + "block-cipher-trait 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "opaque-debug 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "aesni" version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f70a6b5f971e473091ab7cfb5ffac6cde81666c4556751d8d5620ead8abf100" dependencies = [ - "block-cipher-trait", - "opaque-debug", - "stream-cipher", + "block-cipher-trait 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", + "opaque-debug 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", + "stream-cipher 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "ahash" version = "0.2.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f33b5018f120946c1dcf279194f238a9f146725593ead1c08fa47ff22b0b5d3" dependencies = [ - "const-random", + "const-random 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "aho-corasick" version = "0.7.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "743ad5a418686aad3b87fd14c43badd828cf26e214a00f92a384291cf22e1811" dependencies = [ - "memchr", + "memchr 2.3.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "ansi_term" version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee49baf6cb617b853aa8d93bf420db2383fab46d314482ca2803b40d5fde979b" dependencies = [ - "winapi 0.3.8", + "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "ansi_term" version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d52a9bb7ec0cf484c551830a7ce27bd20d67eac647e1befb56b0be4ee39a55d2" dependencies = [ - "winapi 0.3.8", + "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "anyhow" version = "1.0.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7825f6833612eb2414095684fcf6c635becf3ce97fe48cf6421321e93bfbd53c" [[package]] name = "app_dirs" version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e73a24bad9bd6a94d6395382a6c69fe071708ae4409f763c5475e14ee896313d" dependencies = [ - "ole32-sys", - "shell32-sys", - "winapi 0.2.8", - "xdg", + "ole32-sys 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "shell32-sys 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", + "xdg 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "arc-swap" version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7b8a9123b8027467bce0099fe556c628a53c8d83df0507084c31e9ba2e39aff" [[package]] name = "arrayref" version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4c527152e37cf757a3f78aae5a06fbeefdb07ccc535c980a3208ee3060dd544" [[package]] name = "arrayvec" version = "0.4.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd9fd44efafa8690358b7408d253adf110036b88f55672a933f01d616ad9b1b9" dependencies = [ - "nodrop", + "nodrop 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "arrayvec" version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cff77d8686867eceff3105329d4698d96c2391c176d5d03adc90c7389162b5b8" [[package]] name = "asn1_der" version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6fce6b6a0ffdafebd82c87e79e3f40e8d2c523e5fea5566ff6b90509bf98d638" dependencies = [ - "asn1_der_derive", + "asn1_der_derive 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "asn1_der_derive" version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d0864d84b8e07b145449be9a8537db86bf9de5ce03b913214694643b4743502" dependencies = [ - "quote 1.0.2", - "syn", + "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 1.0.14 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "assert_cmd" version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6283bac8dd7226470d491bc4737816fea4ca1fba7a2847f2e9097fd6bfb4624c" dependencies = [ - "doc-comment", - "escargot", - "predicates", - "predicates-core", - "predicates-tree", + "doc-comment 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "escargot 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", + "predicates 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "predicates-core 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "predicates-tree 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "assert_matches" version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7deb0a829ca7bcfaf5da70b073a8d128619259a7be8216a355e23f00763059e5" [[package]] name = "async-std" version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "538ecb01eb64eecd772087e5b6f7540cbc917f047727339a472dafed2185b267" -dependencies = [ - "async-task", - "broadcaster", - "crossbeam-channel", - "crossbeam-deque", - "crossbeam-utils", - "futures-core", - "futures-io", - "futures-timer 2.0.2", - "kv-log-macro", - "log 0.4.8", - "memchr", - "mio", - "mio-uds", - "num_cpus", - "once_cell", - "pin-project-lite", - "pin-utils", - "slab", +dependencies = [ + "async-task 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "broadcaster 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-channel 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-deque 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-utils 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-core 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-io 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-timer 2.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "kv-log-macro 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "memchr 2.3.2 (registry+https://github.com/rust-lang/crates.io-index)", + "mio 0.6.21 (registry+https://github.com/rust-lang/crates.io-index)", + "mio-uds 0.6.7 (registry+https://github.com/rust-lang/crates.io-index)", + "num_cpus 1.12.0 (registry+https://github.com/rust-lang/crates.io-index)", + "once_cell 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "pin-project-lite 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", + "pin-utils 0.1.0-alpha.4 (registry+https://github.com/rust-lang/crates.io-index)", + "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "async-task" version = "1.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ac2c016b079e771204030951c366db398864f5026f84a44dafb0ff20f02085d" dependencies = [ - "libc", - "winapi 0.3.8", + "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "async-tls" version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ce6977f57fa68da77ffe5542950d47e9c23d65f5bc7cb0a9f8700996913eec7" dependencies = [ - "futures 0.3.4", - "rustls", - "webpki", - "webpki-roots 0.17.0", + "futures 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "rustls 0.16.0 (registry+https://github.com/rust-lang/crates.io-index)", + "webpki 0.21.2 (registry+https://github.com/rust-lang/crates.io-index)", + "webpki-roots 0.17.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "atty" version = "0.2.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" dependencies = [ - "hermit-abi", - "libc", - "winapi 0.3.8", + "hermit-abi 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "autocfg" version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d49d90015b3c36167a20fe2810c5cd875ad504b39cff3d4eae7977e6b7c1cb2" [[package]] name = "autocfg" version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8aac770f1885fd7e387acedd76065302551364496e46b3dd00860b2f8359b9d" [[package]] name = "backtrace" -version = "0.3.43" +version = "0.3.44" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f80256bc78f67e7df7e36d77366f636ed976895d91fe2ab9efa3973e8fe8c4f" dependencies = [ - "backtrace-sys", - "cfg-if", - "libc", - "rustc-demangle", + "backtrace-sys 0.1.32 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", + "rustc-demangle 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "backtrace-sys" version = "0.1.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d6575f128516de27e3ce99689419835fce9643a9b215a14d2b5b685be018491" dependencies = [ - "cc", - "libc", + "cc 1.0.50 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "base58" version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5024ee8015f02155eee35c711107ddd9a9bf3cb689cf2a9089c97e79b6e1ae83" [[package]] name = "base64" version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "489d6c0ed21b11d038c31b6ceccca973e65d73ba3bd8ecb9a2babf5546164643" dependencies = [ - "byteorder 1.3.4", - "safemem", + "byteorder 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "safemem 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "base64" version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b25d992356d2eb0ed82172f5248873db5560c4721f564b13cb5193bda5e668e" dependencies = [ - "byteorder 1.3.4", + "byteorder 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "base64" version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b41b7ea54a0c9d92199de89e20e58d49f02f8e699814ef3fdf266f6f748d15c7" [[package]] name = "bincode" version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5753e2a71534719bf3f4e57006c3a4f0d2c672a4b676eec84161f763eca87dbf" dependencies = [ - "byteorder 1.3.4", - "serde", + "byteorder 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "bindgen" version = "0.49.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c07087f3d5731bf3fb375a81841b99597e25dc11bd3bc72d16d43adf6624a6e" dependencies = [ - "bitflags", - "cexpr", - "cfg-if", - "clang-sys", - "clap", - "env_logger 0.6.2", - "fxhash", - "lazy_static", - "log 0.4.8", - "peeking_take_while", - "proc-macro2 0.4.30", - "quote 0.6.13", - "regex", - "shlex", - "which 2.0.1", + "bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "cexpr 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", + "clang-sys 0.28.1 (registry+https://github.com/rust-lang/crates.io-index)", + "clap 2.33.0 (registry+https://github.com/rust-lang/crates.io-index)", + "env_logger 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", + "fxhash 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "peeking_take_while 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)", + "regex 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "shlex 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "which 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "bitflags" version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf1de2fe8c75bc145a2f577add951f8134889b4795d47466a54a5c846d691693" [[package]] name = "bitmask" version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5da9b3d9f6f585199287a473f4f8dfab6566cf827d15c00c219f53c645687ead" [[package]] name = "bitvec" version = "0.15.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a993f74b4c99c1908d156b8d2e0fb6277736b0ecbd833982fd1241d39b2766a6" [[package]] name = "blake2" version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94cb07b0da6a73955f8fb85d24c466778e70cda767a568229b104f0264089330" dependencies = [ - "byte-tools", - "crypto-mac", - "digest", - "opaque-debug", + "byte-tools 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "crypto-mac 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", + "digest 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", + "opaque-debug 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "blake2-rfc" version = "0.2.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d6d530bdd2d52966a6d03b7a964add7ae1a288d25214066fd4b600f0f796400" dependencies = [ - "arrayvec 0.4.12", - "constant_time_eq", + "arrayvec 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", + "constant_time_eq 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "blake2b_simd" version = "0.5.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8fb2d74254a3a0b5cac33ac9f8ed0e44aa50378d9dbb2e5d83bd21ed1dc2c8a" dependencies = [ - "arrayref", - "arrayvec 0.5.1", - "constant_time_eq", + "arrayref 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", + "arrayvec 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", + "constant_time_eq 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "block-buffer" version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0940dc441f31689269e10ac70eb1002a3a1d3ad1390e030043662eb7fe4688b" dependencies = [ - "block-padding", - "byte-tools", - "byteorder 1.3.4", - "generic-array", + "block-padding 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "byte-tools 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "generic-array 0.12.3 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "block-cipher-trait" version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c924d49bd09e7c06003acda26cd9742e796e34282ec6c1189404dee0c1f4774" dependencies = [ - "generic-array", + "generic-array 0.12.3 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "block-padding" version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa79dedbb091f449f1f39e53edf88d5dbe95f895dae6135a8d7b881fb5af73f5" dependencies = [ - "byte-tools", + "byte-tools 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "broadcaster" version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9c972e21e0d055a36cf73e4daae870941fe7a8abcd5ac3396aab9e4c126bd87" dependencies = [ - "futures-channel", - "futures-core", - "futures-sink", - "futures-util", - "parking_lot 0.10.0", - "slab", + "futures-channel 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-core 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-sink 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-util 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", + "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "browser-utils" version = "0.8.0" dependencies = [ - "chrono", - "clear_on_drop", - "console_error_panic_hook", - "console_log", - "futures 0.1.29", - "futures 0.3.4", - "futures-timer 3.0.1", - "js-sys", - "kvdb-web", - "libp2p", - "log 0.4.8", - "rand 0.6.5", - "rand 0.7.3", - "sc-chain-spec", - "sc-informant", - "sc-network", - "sc-service", - "wasm-bindgen", - "wasm-bindgen-futures", + "chrono 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", + "clear_on_drop 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", + "console_error_panic_hook 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", + "console_log 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-timer 3.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "js-sys 0.3.35 (registry+https://github.com/rust-lang/crates.io-index)", + "kvdb-web 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "libp2p 0.16.1 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)", + "sc-chain-spec 2.0.0", + "sc-informant 0.8.0", + "sc-network 0.8.0", + "sc-service 0.8.0", + "wasm-bindgen 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", + "wasm-bindgen-futures 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "bs58" version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c95ee6bba9d950218b6cc910cf62bc9e0a171d0f4537e3627b0f54d08549b188" [[package]] name = "bs58" version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b170cd256a3f9fa6b9edae3e44a7dfdfc77e8124dbc3e2612d75f9c3e2396dae" [[package]] name = "bstr" version = "0.2.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "502ae1441a0a5adb8fbd38a5955a6416b9493e92b465de5e4a9bde6a539c2c48" dependencies = [ - "lazy_static", - "memchr", - "regex-automata", - "serde", + "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "memchr 2.3.2 (registry+https://github.com/rust-lang/crates.io-index)", + "regex-automata 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "build-helper" version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bdce191bf3fa4995ce948c8c83b4640a1745457a149e73c6db75b4ffe36aad5f" dependencies = [ - "semver 0.6.0", + "semver 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "bumpalo" version = "3.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f359dc14ff8911330a51ef78022d376f25ed00248912803b58f00cb1c27f742" [[package]] name = "byte-slice-cast" version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0a5e3906bcbf133e33c1d4d95afc664ad37fbdb9f6568d8043e7ea8c27d93d3" [[package]] name = "byte-tools" version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3b5ca7a04898ad4bcd41c90c5285445ff5b791899bb1b0abdd2a2aa791211d7" [[package]] name = "byteorder" version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fc10e8cc6b2580fda3f36eb6dc5316657f812a3df879a44a66fc9f0fdbc4855" [[package]] name = "byteorder" version = "1.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08c48aae112d48ed9f069b33538ea9e3e90aa263cfa3d1c24309612b1f7472de" [[package]] name = "bytes" version = "0.4.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "206fdffcfa2df7cbe15601ef46c813fce0965eb3286db6b56c583b814b51c81c" dependencies = [ - "byteorder 1.3.4", - "either", - "iovec", + "byteorder 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "either 1.5.3 (registry+https://github.com/rust-lang/crates.io-index)", + "iovec 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "bytes" version = "0.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "130aac562c0dd69c56b3b1cc8ffd2e17be31d0b6c25b61c96b76231aa23e39e1" [[package]] name = "c2-chacha" version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "214238caa1bf3a496ec3392968969cab8549f96ff30652c9e56885329315f6bb" dependencies = [ - "ppv-lite86", + "ppv-lite86 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "c_linked_list" version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4964518bd3b4a8190e832886cdc0da9794f12e8e6c1613a9e90ff331c4c8724b" [[package]] name = "cargo_metadata" version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46e3374c604fb39d1a2f35ed5e4a4e30e60d01fab49446e08f1b3e9a90aef202" dependencies = [ - "semver 0.9.0", - "serde", - "serde_derive", - "serde_json", + "semver 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_json 1.0.48 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "cast" version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b9434b9a5aa1450faa3f9cb14ea0e8c53bb5d2b3c1bfd1ab4fc03e9f33fbfb0" dependencies = [ - "rustc_version", + "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "cc" version = "1.0.50" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95e28fa049fda1c330bcf9d723be7663a899c4679724b34c81e9f5a326aab8cd" dependencies = [ - "jobserver", + "jobserver 0.1.21 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "cexpr" version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fce5b5fb86b0c57c20c834c1b412fd09c77c8a59b9473f86272709e78874cd1d" dependencies = [ - "nom", + "nom 4.2.3 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "cfg-if" version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822" [[package]] name = "chacha20-poly1305-aead" version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77d2058ba29594f69c75e8a9018e0485e3914ca5084e3613cd64529042f5423b" dependencies = [ - "constant_time_eq", + "constant_time_eq 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "chain-spec-builder" version = "2.0.0" dependencies = [ - "ansi_term 0.12.1", - "node-cli", - "rand 0.7.3", - "sc-keystore", - "sp-core", - "structopt", + "ansi_term 0.12.1 (registry+https://github.com/rust-lang/crates.io-index)", + "node-cli 2.0.0", + "rand 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)", + "sc-keystore 2.0.0", + "sp-core 2.0.0", + "structopt 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "chrono" version = "0.4.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31850b4a4d6bae316f7a09e691c944c28299298837edc0a03f755618c23cbc01" dependencies = [ - "js-sys", - "num-integer", - "num-traits", - "time", - "wasm-bindgen", + "js-sys 0.3.35 (registry+https://github.com/rust-lang/crates.io-index)", + "num-integer 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)", + "num-traits 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", + "time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)", + "wasm-bindgen 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "clang-sys" version = "0.28.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81de550971c976f176130da4b2978d3b524eaa0fd9ac31f3ceb5ae1231fb4853" dependencies = [ - "glob 0.3.0", - "libc", - "libloading", + "glob 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", + "libloading 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "clap" version = "2.33.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5067f5bb2d80ef5d68b4c87db81601f0b75bca627bc2ef76b141d7b846a3c6d9" dependencies = [ - "ansi_term 0.11.0", - "atty", - "bitflags", - "strsim", - "textwrap", - "unicode-width", - "vec_map", + "ansi_term 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", + "atty 0.2.14 (registry+https://github.com/rust-lang/crates.io-index)", + "bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "strsim 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", + "textwrap 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", + "unicode-width 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", + "vec_map 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "clear_on_drop" version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97276801e127ffb46b66ce23f35cc96bd454fa311294bced4bbace7baa8b1d17" dependencies = [ - "cc", + "cc 1.0.50 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "cloudabi" version = "0.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ddfc5b9aa5d4507acaf872de71051dfd0e309860e88966e1051e462a077aac4f" dependencies = [ - "bitflags", + "bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "cmake" version = "0.1.42" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81fb25b677f8bf1eb325017cb6bb8452f87969db0fedb4f757b297bee78a7c62" dependencies = [ - "cc", + "cc 1.0.50 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "console_error_panic_hook" version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8d976903543e0c48546a91908f21588a680a8c8f984df9a5d69feccb2b2a211" dependencies = [ - "cfg-if", - "wasm-bindgen", + "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", + "wasm-bindgen 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "console_log" version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e7871d2947441b0fdd8e2bd1ce2a2f75304f896582c0d572162d48290683c48" dependencies = [ - "log 0.4.8", - "web-sys", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "web-sys 0.3.35 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "const-random" version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f1af9ac737b2dd2d577701e59fd09ba34822f6f2ebdb30a7647405d9e55e16a" dependencies = [ - "const-random-macro", - "proc-macro-hack", + "const-random-macro 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro-hack 0.5.11 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "const-random-macro" version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25e4c606eb459dd29f7c57b2e0879f2b6f14ee130918c2b78ccb58a9624e6c7a" dependencies = [ - "getrandom", - "proc-macro-hack", + "getrandom 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro-hack 0.5.11 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "constant_time_eq" version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "245097e9a4535ee1e3e3931fcfcd55a796a44c643e8596ff6566d68f09b87bbc" [[package]] name = "core-foundation" version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25b9e03f145fd4f2bf705e07b900cd41fc636598fe5dc452fd0db1441c3f496d" dependencies = [ - "core-foundation-sys", - "libc", + "core-foundation-sys 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "core-foundation-sys" version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7ca8a5221364ef15ce201e8ed2f609fc312682a8f4e0e3d4aa5879764e0fa3b" [[package]] name = "cranelift-bforest" version = "0.58.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd0f53d59dc9ab1c8ab68c991d8406b52b7a0aab0b15b05a3a6895579c4e5dd9" dependencies = [ - "cranelift-entity", + "cranelift-entity 0.58.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "cranelift-codegen" version = "0.58.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0381a794836fb994c47006465d46d46be072483b667f36013d993b9895117fee" dependencies = [ - "byteorder 1.3.4", - "cranelift-bforest", - "cranelift-codegen-meta", - "cranelift-codegen-shared", - "cranelift-entity", - "gimli 0.20.0", - "log 0.4.8", - "serde", - "smallvec 1.2.0", - "target-lexicon", - "thiserror", + "byteorder 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "cranelift-bforest 0.58.0 (registry+https://github.com/rust-lang/crates.io-index)", + "cranelift-codegen-meta 0.58.0 (registry+https://github.com/rust-lang/crates.io-index)", + "cranelift-codegen-shared 0.58.0 (registry+https://github.com/rust-lang/crates.io-index)", + "cranelift-entity 0.58.0 (registry+https://github.com/rust-lang/crates.io-index)", + "gimli 0.20.0 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", + "smallvec 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "target-lexicon 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", + "thiserror 1.0.11 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "cranelift-codegen-meta" version = "0.58.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "208c3c8d82bfef32a534c5020c6cfc3bc92f41388f1246b7bb98cf543331abaa" dependencies = [ - "cranelift-codegen-shared", - "cranelift-entity", + "cranelift-codegen-shared 0.58.0 (registry+https://github.com/rust-lang/crates.io-index)", + "cranelift-entity 0.58.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "cranelift-codegen-shared" version = "0.58.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea048c456a517e56fd6df8f0e3947922897e6e6f61fbc5eb557a36c7b8ff6394" [[package]] name = "cranelift-entity" version = "0.58.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c8c7ed50812194c9e9de1fa39c77b39fc9ab48173d5e7ee88b25b6a8953e9b8" dependencies = [ - "serde", + "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "cranelift-frontend" version = "0.58.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21ceb931d9f919731df1b1ecdc716b5c66384b413a7f95909d1f45441ab9bef5" dependencies = [ - "cranelift-codegen", - "log 0.4.8", - "smallvec 1.2.0", - "target-lexicon", + "cranelift-codegen 0.58.0 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "smallvec 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "target-lexicon 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "cranelift-native" version = "0.58.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "564ee82268bc25b914fcf331edfc2452f2d9ca34f976b187b4ca668beba250c8" dependencies = [ - "cranelift-codegen", - "raw-cpuid", - "target-lexicon", + "cranelift-codegen 0.58.0 (registry+https://github.com/rust-lang/crates.io-index)", + "raw-cpuid 7.0.3 (registry+https://github.com/rust-lang/crates.io-index)", + "target-lexicon 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "cranelift-wasm" version = "0.58.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de63e2271b374be5b07f359184e2126a08fb24d24a740cbc178b7e0107ddafa5" dependencies = [ - "cranelift-codegen", - "cranelift-entity", - "cranelift-frontend", - "log 0.4.8", - "serde", - "thiserror", - "wasmparser 0.48.2", + "cranelift-codegen 0.58.0 (registry+https://github.com/rust-lang/crates.io-index)", + "cranelift-entity 0.58.0 (registry+https://github.com/rust-lang/crates.io-index)", + "cranelift-frontend 0.58.0 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", + "thiserror 1.0.11 (registry+https://github.com/rust-lang/crates.io-index)", + "wasmparser 0.48.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "crc32fast" version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba125de2af0df55319f41944744ad91c71113bf74a4646efff39afe1f6842db1" dependencies = [ - "cfg-if", + "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "criterion" version = "0.2.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0363053954f3e679645fc443321ca128b7b950a6fe288cf5f9335cc22ee58394" -dependencies = [ - "atty", - "cast", - "clap", - "criterion-plot 0.3.1", - "csv", - "itertools", - "lazy_static", - "libc", - "num-traits", - "rand_core 0.3.1", - "rand_os", - "rand_xoshiro", - "rayon", - "rayon-core", - "serde", - "serde_derive", - "serde_json", - "tinytemplate", - "walkdir", +dependencies = [ + "atty 0.2.14 (registry+https://github.com/rust-lang/crates.io-index)", + "cast 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", + "clap 2.33.0 (registry+https://github.com/rust-lang/crates.io-index)", + "criterion-plot 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "csv 1.1.3 (registry+https://github.com/rust-lang/crates.io-index)", + "itertools 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", + "num-traits 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_os 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_xoshiro 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "rayon 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "rayon-core 1.7.0 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_json 1.0.48 (registry+https://github.com/rust-lang/crates.io-index)", + "tinytemplate 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)", + "walkdir 2.3.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "criterion" version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fc755679c12bda8e5523a71e4d654b6bf2e14bd838dfc48cde6559a05caf7d1" dependencies = [ - "atty", - "cast", - "clap", - "criterion-plot 0.4.1", - "csv", - "itertools", - "lazy_static", - "num-traits", - "oorandom", - "plotters", - "rayon", - "regex", - "serde", - "serde_derive", - "serde_json", - "tinytemplate", - "walkdir", + "atty 0.2.14 (registry+https://github.com/rust-lang/crates.io-index)", + "cast 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", + "clap 2.33.0 (registry+https://github.com/rust-lang/crates.io-index)", + "criterion-plot 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", + "csv 1.1.3 (registry+https://github.com/rust-lang/crates.io-index)", + "itertools 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "num-traits 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", + "oorandom 11.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "plotters 0.2.12 (registry+https://github.com/rust-lang/crates.io-index)", + "rayon 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "regex 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_json 1.0.48 (registry+https://github.com/rust-lang/crates.io-index)", + "tinytemplate 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)", + "walkdir 2.3.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "criterion-plot" version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76f9212ddf2f4a9eb2d401635190600656a1f88a932ef53d06e7fa4c7e02fb8e" dependencies = [ - "byteorder 1.3.4", - "cast", - "itertools", + "byteorder 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "cast 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", + "itertools 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "criterion-plot" version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a01e15e0ea58e8234f96146b1f91fa9d0e4dd7a38da93ff7a75d42c0b9d3a545" dependencies = [ - "cast", - "itertools", + "cast 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", + "itertools 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "crossbeam-channel" version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "acec9a3b0b3559f15aee4f90746c4e5e293b701c0f7d3925d24e01645267b68c" dependencies = [ - "crossbeam-utils", + "crossbeam-utils 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "crossbeam-deque" version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3aa945d63861bfe624b55d153a39684da1e8c0bc8fba932f7ee3a3c16cea3ca" dependencies = [ - "crossbeam-epoch", - "crossbeam-utils", + "crossbeam-epoch 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-utils 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "crossbeam-epoch" version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5064ebdbf05ce3cb95e45c8b086f72263f4166b29b97f6baff7ef7fe047b55ac" dependencies = [ - "autocfg 0.1.7", - "cfg-if", - "crossbeam-utils", - "lazy_static", - "memoffset", - "scopeguard", + "autocfg 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-utils 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "memoffset 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)", + "scopeguard 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "crossbeam-queue" version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c695eeca1e7173472a32221542ae469b3e9aac3a4fc81f7696bcad82029493db" dependencies = [ - "cfg-if", - "crossbeam-utils", + "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-utils 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "crossbeam-utils" version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce446db02cdc3165b94ae73111e570793400d0794e46125cc4056c81cbb039f4" dependencies = [ - "autocfg 0.1.7", - "cfg-if", - "lazy_static", + "autocfg 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "crunchy" version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" [[package]] name = "crypto-mac" version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4434400df11d95d556bac068ddfedd482915eb18fe8bea89bc80b6e4b1c179e5" dependencies = [ - "generic-array", - "subtle 1.0.0", + "generic-array 0.12.3 (registry+https://github.com/rust-lang/crates.io-index)", + "subtle 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "csv" version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00affe7f6ab566df61b4be3ce8cf16bc2576bca0963ceb0955e45d514bf9a279" dependencies = [ - "bstr", - "csv-core", - "itoa", - "ryu", - "serde", + "bstr 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", + "csv-core 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", + "itoa 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", + "ryu 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "csv-core" -version = "0.1.6" +version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b5cadb6b25c77aeff80ba701712494213f4a8418fcda2ee11b6560c3ad0bf4c" dependencies = [ - "memchr", + "memchr 2.3.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "ct-logs" version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d3686f5fa27dbc1d76c751300376e167c5a43387f44bb451fd1c24776e49113" dependencies = [ - "sct", + "sct 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "ctor" version = "0.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd8ce37ad4184ab2ce004c33bf6379185d3b1c95801cab51026bd271bf68eedc" dependencies = [ - "quote 1.0.2", - "syn", + "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 1.0.14 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "ctr" version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "022cd691704491df67d25d006fe8eca083098253c4d43516c2206479c58c6736" dependencies = [ - "block-cipher-trait", - "stream-cipher", + "block-cipher-trait 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", + "stream-cipher 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "cuckoofilter" version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8dd43f7cfaffe0a386636a10baea2ee05cc50df3b77bea4a456c9572a939bf1f" dependencies = [ - "byteorder 0.5.3", - "rand 0.3.23", + "byteorder 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.3.23 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "curve25519-dalek" version = "1.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b7dcd30ba50cdf88b55b033456138b7c0ac4afdc436d82e1b79f370f24cc66d" dependencies = [ - "byteorder 1.3.4", - "clear_on_drop", - "digest", - "rand_core 0.3.1", - "subtle 2.2.2", + "byteorder 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "clear_on_drop 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", + "digest 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "subtle 2.2.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "curve25519-dalek" version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26778518a7f6cffa1d25a44b602b62b979bd88adb9e99ffec546998cf3404839" dependencies = [ - "byteorder 1.3.4", - "digest", - "rand_core 0.5.1", - "subtle 2.2.2", - "zeroize 1.1.0", + "byteorder 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "digest 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_core 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", + "subtle 2.2.2 (registry+https://github.com/rust-lang/crates.io-index)", + "zeroize 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "data-encoding" version = "2.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4f47ca1860a761136924ddd2422ba77b2ea54fe8cc75b9040804a0d9d32ad97" [[package]] name = "derive_more" -version = "0.99.2" +version = "0.99.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2159be042979966de68315bce7034bb000c775f22e3e834e1c52ff78f041cae8" dependencies = [ - "proc-macro2 1.0.8", - "quote 1.0.2", - "syn", + "proc-macro2 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 1.0.14 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "difference" version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "524cbf6897b527295dff137cec09ecf3a05f4fddffd7dfcd1585403449e74198" [[package]] name = "digest" version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3d0c8c8752312f9713efd397ff63acb9f85585afbf179282e720e7704954dd5" dependencies = [ - "generic-array", + "generic-array 0.12.3 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "directories" version = "2.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "551a778172a450d7fc12e629ca3b0428d00f6afa9a43da1b630d54604e97371c" dependencies = [ - "cfg-if", - "dirs-sys", + "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", + "dirs-sys 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "dirs-sys" version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "afa0b23de8fd801745c471deffa6e12d248f962c9fd4b4c33787b055599bde7b" dependencies = [ - "cfg-if", - "libc", - "redox_users", - "winapi 0.3.8", + "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", + "redox_users 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "dns-parser" version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4d33be9473d06f75f58220f71f7a9317aca647dc061dbd3c361b0bef505fbea" dependencies = [ - "byteorder 1.3.4", - "quick-error", + "byteorder 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "quick-error 1.2.3 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "doc-comment" version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "923dea538cea0aa3025e8685b20d6ee21ef99c4f77e954a30febbaac5ec73a97" [[package]] name = "ed25519-dalek" version = "1.0.0-pre.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "978710b352437433c97b2bff193f2fb1dfd58a093f863dd95e225a19baa599a2" dependencies = [ - "clear_on_drop", - "curve25519-dalek 2.0.0", - "rand 0.7.3", - "sha2", + "clear_on_drop 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", + "curve25519-dalek 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)", + "sha2 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "either" version = "1.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb1f6b1ce1c140482ea30ddd3335fc0024ac7ee112895426e0a629a6c20adfe3" [[package]] name = "enumflags2" version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33121c8782ba948ba332dab29311b026a8716dc65a1599e5b88f392d38496af8" dependencies = [ - "enumflags2_derive", + "enumflags2_derive 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "enumflags2_derive" version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ecf634c5213044b8d54a46dd282cf5dd1f86bb5cb53e92c409cb4680a7fb9894" dependencies = [ - "proc-macro2 1.0.8", - "quote 1.0.2", - "syn", + "proc-macro2 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 1.0.14 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "env_logger" version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aafcde04e90a5226a6443b7aabdb016ba2f8307c847d524724bd9b346dd1a2d3" dependencies = [ - "atty", - "humantime", - "log 0.4.8", - "regex", - "termcolor", + "atty 0.2.14 (registry+https://github.com/rust-lang/crates.io-index)", + "humantime 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "regex 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "termcolor 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "env_logger" version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44533bbbb3bb3c1fa17d9f2e4e38bbbaf8396ba82193c4cb1b6445d711445d36" dependencies = [ - "atty", - "humantime", - "log 0.4.8", - "regex", - "termcolor", + "atty 0.2.14 (registry+https://github.com/rust-lang/crates.io-index)", + "humantime 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "regex 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "termcolor 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "environmental" version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "516aa8d7a71cb00a1c4146f0798549b93d083d4f189b3ced8f3de6b8f11ee6c4" [[package]] name = "erased-serde" version = "0.3.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd7d80305c9bd8cd78e3c753eb9fb110f83621e5211f1a3afffcc812b104daf9" dependencies = [ - "serde", + "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "errno" version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2a071601ed01b988f896ab14b95e67335d1eeb50190932a1320f7fe3cadc84e" dependencies = [ - "errno-dragonfly", - "libc", - "winapi 0.3.8", + "errno-dragonfly 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "errno-dragonfly" version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14ca354e36190500e1e1fb267c647932382b54053c50b14970856c0b00a35067" dependencies = [ - "gcc", - "libc", + "gcc 0.3.55 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "escargot" version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74cf96bec282dcdb07099f7e31d9fed323bca9435a09aba7b6d99b7617bca96d" dependencies = [ - "lazy_static", - "log 0.4.8", - "serde", - "serde_json", + "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_json 1.0.48 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "evm" version = "0.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "272f65e18a2b6449b682bfcdf6c3ccc63db0b93898d89c0fb237548bbfc764a5" dependencies = [ - "evm-core", - "evm-gasometer", - "evm-runtime", - "primitive-types", - "rlp", - "serde", - "sha3", + "evm-core 0.15.0 (registry+https://github.com/rust-lang/crates.io-index)", + "evm-gasometer 0.15.0 (registry+https://github.com/rust-lang/crates.io-index)", + "evm-runtime 0.15.0 (registry+https://github.com/rust-lang/crates.io-index)", + "primitive-types 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", + "rlp 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", + "sha3 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "evm-core" version = "0.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "66534d42e13d50f9101bed87cb568fd5aa929c600c3c13f8dadbbf39f5635945" dependencies = [ - "primitive-types", + "primitive-types 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "evm-gasometer" version = "0.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39bc5b592803ca644781fe2290b7305ea5182f7c9516d615ddfb2308c2cab639" dependencies = [ - "evm-core", - "evm-runtime", - "primitive-types", + "evm-core 0.15.0 (registry+https://github.com/rust-lang/crates.io-index)", + "evm-runtime 0.15.0 (registry+https://github.com/rust-lang/crates.io-index)", + "primitive-types 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "evm-runtime" version = "0.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "389e4b447fb26971a9c76c8aa49c0ab435f8e46e8fc46e1bc4ebf01f3c2b428f" dependencies = [ - "evm-core", - "primitive-types", - "sha3", + "evm-core 0.15.0 (registry+https://github.com/rust-lang/crates.io-index)", + "primitive-types 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", + "sha3 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "exit-future" version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e43f2f1833d64e33f15592464d6fdd70f349dda7b1a53088eb83cd94014008c5" dependencies = [ - "futures 0.3.4", + "futures 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "faerie" version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74b9ed6159e4a6212c61d9c6a86bee01876b192a64accecf58d5b5ae3b667b52" dependencies = [ - "anyhow", - "goblin", - "indexmap", - "log 0.4.8", - "scroll", - "string-interner", - "target-lexicon", - "thiserror", + "anyhow 1.0.26 (registry+https://github.com/rust-lang/crates.io-index)", + "goblin 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", + "indexmap 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "scroll 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)", + "string-interner 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", + "target-lexicon 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", + "thiserror 1.0.11 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "failure" version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8273f13c977665c5db7eb2b99ae520952fe5ac831ae4cd09d80c4c7042b5ed9" dependencies = [ - "backtrace", - "failure_derive", + "backtrace 0.3.44 (registry+https://github.com/rust-lang/crates.io-index)", + "failure_derive 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "failure_derive" version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0bc225b78e0391e4b8683440bf2e63c2deeeb2ce5189eab46e2b68c6d3725d08" dependencies = [ - "proc-macro2 1.0.8", - "quote 1.0.2", - "syn", - "synstructure", + "proc-macro2 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 1.0.14 (registry+https://github.com/rust-lang/crates.io-index)", + "synstructure 0.12.3 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "fake-simd" version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e88a8acf291dafb59c2d96e8f59828f3838bb1a70398823ade51a84de6a6deed" [[package]] name = "fallible-iterator" version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4443176a9f2c162692bd3d352d745ef9413eec5782a80d8fd6f8a1ac692a07f7" [[package]] name = "fdlimit" version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9084c55bb76efb1496328976db88320fe7d9ee86e649e83c4ecce3ba7a9a35d1" dependencies = [ - "libc", + "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "file-per-thread-logger" version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8505b75b31ef7285168dd237c4a7db3c1f3e0927e7d314e670bc98e854272fe9" dependencies = [ - "env_logger 0.6.2", - "log 0.4.8", + "env_logger 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "finality-grandpa" version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3cbb25bef9fcad97fb31e817da280b1c9174435b8769c770ee190a330dd181ea" dependencies = [ - "futures 0.3.4", - "futures-timer 2.0.2", - "log 0.4.8", - "num-traits", - "parity-scale-codec", - "parking_lot 0.9.0", - "rand 0.6.5", + "futures 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-timer 2.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "num-traits 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "fixed-hash" version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3367952ceb191f4ab95dd5685dc163ac539e36202f9fcfd0cb22f9f9c542fefc" dependencies = [ - "byteorder 1.3.4", - "libc", - "rand 0.7.3", - "rustc-hex", - "static_assertions", + "byteorder 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)", + "rustc-hex 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "static_assertions 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "fixedbitset" version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37ab347416e802de484e4d03c7316c48f1ecb56574dfd4a46a80f173ce1de04d" [[package]] name = "flate2" version = "1.0.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6bd6d6f4752952feb71363cffc9ebac9411b75b87c6ab6058c40c8900cf43c0f" dependencies = [ - "cfg-if", - "crc32fast", - "libc", - "libz-sys", - "miniz_oxide", + "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", + "crc32fast 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", + "libz-sys 1.0.25 (registry+https://github.com/rust-lang/crates.io-index)", + "miniz_oxide 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "fnv" version = "1.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2fad85553e09a6f881f739c29f0b00b0f01357c743266d478b68951ce23285f3" [[package]] name = "foreign-types" version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" dependencies = [ - "foreign-types-shared", + "foreign-types-shared 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "foreign-types-shared" version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" [[package]] name = "fork-tree" version = "2.0.0" dependencies = [ - "parity-scale-codec", + "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "frame-benchmarking" version = "2.0.0" dependencies = [ - "parity-scale-codec", - "sp-api", - "sp-runtime-interface", - "sp-std", + "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-api 2.0.0", + "sp-runtime-interface 2.0.0", + "sp-std 2.0.0", ] [[package]] name = "frame-benchmarking-cli" version = "2.0.0" dependencies = [ - "frame-benchmarking", - "parity-scale-codec", - "sc-cli", - "sc-client", - "sc-client-db", - "sc-executor", - "sc-service", - "sp-runtime", - "structopt", + "frame-benchmarking 2.0.0", + "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "sc-cli 0.8.0", + "sc-client 0.8.0", + "sc-client-db 0.8.0", + "sc-executor 0.8.0", + "sc-service 0.8.0", + "sp-runtime 2.0.0", + "structopt 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "frame-executive" version = "2.0.0" dependencies = [ - "frame-support", - "frame-system", - "hex-literal", - "pallet-balances", - "pallet-indices", - "pallet-transaction-payment", - "parity-scale-codec", - "serde", - "sp-core", - "sp-io", - "sp-runtime", - "sp-std", + "frame-support 2.0.0", + "frame-system 2.0.0", + "hex-literal 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "pallet-balances 2.0.0", + "pallet-indices 2.0.0", + "pallet-transaction-payment 2.0.0", + "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-core 2.0.0", + "sp-io 2.0.0", + "sp-runtime 2.0.0", + "sp-std 2.0.0", ] [[package]] name = "frame-metadata" version = "11.0.0" dependencies = [ - "parity-scale-codec", - "serde", - "sp-core", - "sp-std", + "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-core 2.0.0", + "sp-std 2.0.0", ] [[package]] name = "frame-support" version = "2.0.0" dependencies = [ - "bitmask", - "frame-metadata", - "frame-support-procedural", - "frame-system", - "impl-trait-for-tuples", - "log 0.4.8", - "once_cell", - "parity-scale-codec", - "paste", - "pretty_assertions", - "serde", - "sp-arithmetic", - "sp-core", - "sp-inherents", - "sp-io", - "sp-runtime", - "sp-state-machine", - "sp-std", - "tracing", + "bitmask 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", + "frame-metadata 11.0.0", + "frame-support-procedural 2.0.0", + "frame-system 2.0.0", + "impl-trait-for-tuples 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "once_cell 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "paste 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", + "pretty_assertions 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-arithmetic 2.0.0", + "sp-core 2.0.0", + "sp-inherents 2.0.0", + "sp-io 2.0.0", + "sp-runtime 2.0.0", + "sp-state-machine 0.8.0", + "sp-std 2.0.0", + "tracing 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "frame-support-procedural" version = "2.0.0" dependencies = [ - "frame-support-procedural-tools", - "proc-macro2 1.0.8", - "quote 1.0.2", - "syn", + "frame-support-procedural-tools 2.0.0", + "proc-macro2 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 1.0.14 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "frame-support-procedural-tools" version = "2.0.0" dependencies = [ - "frame-support-procedural-tools-derive", - "proc-macro-crate", - "proc-macro2 1.0.8", - "quote 1.0.2", - "syn", + "frame-support-procedural-tools-derive 2.0.0", + "proc-macro-crate 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 1.0.14 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "frame-support-procedural-tools-derive" version = "2.0.0" dependencies = [ - "proc-macro2 1.0.8", - "quote 1.0.2", - "syn", + "proc-macro2 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 1.0.14 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "frame-support-test" version = "2.0.0" dependencies = [ - "frame-support", - "parity-scale-codec", - "pretty_assertions", - "serde", - "sp-core", - "sp-inherents", - "sp-io", - "sp-runtime", - "sp-state-machine", - "trybuild", + "frame-support 2.0.0", + "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "pretty_assertions 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-core 2.0.0", + "sp-inherents 2.0.0", + "sp-io 2.0.0", + "sp-runtime 2.0.0", + "sp-state-machine 0.8.0", + "trybuild 1.0.22 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "frame-system" version = "2.0.0" dependencies = [ - "criterion 0.2.11", - "frame-support", - "impl-trait-for-tuples", - "parity-scale-codec", - "serde", - "sp-core", - "sp-externalities", - "sp-io", - "sp-runtime", - "sp-std", - "sp-version", - "substrate-test-runtime-client", + "criterion 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", + "frame-support 2.0.0", + "impl-trait-for-tuples 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-core 2.0.0", + "sp-externalities 0.8.0", + "sp-io 2.0.0", + "sp-runtime 2.0.0", + "sp-std 2.0.0", + "sp-version 2.0.0", + "substrate-test-runtime-client 2.0.0", ] [[package]] name = "frame-system-rpc-runtime-api" version = "2.0.0" dependencies = [ - "parity-scale-codec", - "sp-api", + "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-api 2.0.0", ] [[package]] name = "fs-swap" version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "921d332c89b3b61a826de38c61ee5b6e02c56806cade1b0e5d81bd71f57a71bb" dependencies = [ - "lazy_static", - "libc", - "libloading", - "winapi 0.3.8", + "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", + "libloading 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "fs2" version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9564fc758e15025b46aa6643b1b77d047d1a56a1aea6e01002ac0c7026876213" dependencies = [ - "libc", - "winapi 0.3.8", + "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "fs_extra" version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f2a4a2034423744d2cc7ca2068453168dcdb82c438419e639a26bd87839c674" [[package]] name = "fuchsia-cprng" version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a06f77d526c1a601b7c4cdd98f54b5eaabffc14d5f2f0296febdc7f357c6d3ba" [[package]] name = "fuchsia-zircon" version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e9763c69ebaae630ba35f74888db465e49e259ba1bc0eda7d06f4a067615d82" dependencies = [ - "bitflags", - "fuchsia-zircon-sys", + "bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "fuchsia-zircon-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "fuchsia-zircon-sys" version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3dcaa9ae7725d12cdb85b3ad99a434db70b468c09ded17e012d86b5c1010f7a7" [[package]] name = "futures" version = "0.1.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b980f2816d6ee8673b6517b52cb0e808a180efc92e5c19d02cdda79066703ef" [[package]] name = "futures" version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c329ae8753502fb44ae4fc2b622fa2a94652c41e795143765ba0927f92ab780" dependencies = [ - "futures-channel", - "futures-core", - "futures-executor", - "futures-io", - "futures-sink", - "futures-task", - "futures-util", + "futures-channel 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-core 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-executor 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-io 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-sink 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-task 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-util 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "futures-channel" version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0c77d04ce8edd9cb903932b608268b3fffec4163dc053b3b402bf47eac1f1a8" dependencies = [ - "futures-core", - "futures-sink", + "futures-core 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-sink 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "futures-channel-preview" version = "0.3.0-alpha.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d5e5f4df964fa9c1c2f8bddeb5c3611631cacd93baf810fc8bb2fb4b495c263a" dependencies = [ - "futures-core-preview", + "futures-core-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "futures-core" version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f25592f769825e89b92358db00d26f965761e094951ac44d3663ef25b7ac464a" [[package]] name = "futures-core-preview" version = "0.3.0-alpha.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b35b6263fb1ef523c3056565fa67b1d16f0a8604ff12b11b08c25f28a734c60a" [[package]] name = "futures-cpupool" version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab90cde24b3319636588d0c35fe03b1333857621051837ed769faefb4c2162e4" dependencies = [ - "futures 0.1.29", - "num_cpus", + "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", + "num_cpus 1.12.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "futures-diagnose" version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fdcef58a173af8148b182684c9f2d5250875adbcaff7b5794073894f9d8634a9" dependencies = [ - "futures 0.1.29", - "futures 0.3.4", - "lazy_static", - "log 0.4.8", - "parking_lot 0.9.0", - "pin-project", - "serde", - "serde_json", + "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", + "pin-project 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_json 1.0.48 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "futures-executor" version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f674f3e1bcb15b37284a90cedf55afdba482ab061c407a9c0ebbd0f3109741ba" dependencies = [ - "futures-core", - "futures-task", - "futures-util", - "num_cpus", + "futures-core 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-task 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-util 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "num_cpus 1.12.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "futures-io" version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a638959aa96152c7a4cddf50fcb1e3fede0583b27157c26e67d6f99904090dc6" [[package]] name = "futures-macro" version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a5081aa3de1f7542a794a397cde100ed903b0630152d0973479018fd85423a7" dependencies = [ - "proc-macro-hack", - "proc-macro2 1.0.8", - "quote 1.0.2", - "syn", + "proc-macro-hack 0.5.11 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 1.0.14 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "futures-sink" version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3466821b4bc114d95b087b850a724c6f83115e929bc88f1fa98a3304a944c8a6" [[package]] name = "futures-task" version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b0a34e53cf6cdcd0178aa573aed466b646eb3db769570841fda0c7ede375a27" [[package]] name = "futures-timer" version = "2.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1de7508b218029b0f01662ed8f61b1c964b3ae99d6f25462d0f55a595109df6" [[package]] name = "futures-timer" -version = "3.0.1" +version = "3.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3de1a2b2a2a33d9e60e17980b60ee061eeaae96a5abe9121db0fdb9af167a1c5" dependencies = [ - "gloo-timers", - "send_wrapper 0.4.0", + "gloo-timers 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "send_wrapper 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "futures-util" version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22766cf25d64306bedf0384da004d05c9974ab104fcc4528f1236181c18004c5" dependencies = [ - "futures 0.1.29", - "futures-channel", - "futures-core", - "futures-io", - "futures-macro", - "futures-sink", - "futures-task", - "memchr", - "pin-utils", - "proc-macro-hack", - "proc-macro-nested", - "slab", - "tokio-io", + "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-channel 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-core 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-io 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-macro 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-sink 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-task 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "memchr 2.3.2 (registry+https://github.com/rust-lang/crates.io-index)", + "pin-utils 0.1.0-alpha.4 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro-hack 0.5.11 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro-nested 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", + "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "futures-util-preview" version = "0.3.0-alpha.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ce968633c17e5f97936bd2797b6e38fb56cf16a7422319f7ec2e30d3c470e8d" dependencies = [ - "futures-channel-preview", - "futures-core-preview", - "pin-utils", - "slab", + "futures-channel-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-core-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)", + "pin-utils 0.1.0-alpha.4 (registry+https://github.com/rust-lang/crates.io-index)", + "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "futures_codec" version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a0a73299e4718f5452e45980fc1d6957a070abe308d3700b63b8673f47e1c2b3" dependencies = [ - "bytes 0.5.4", - "futures 0.3.4", - "memchr", - "pin-project", + "bytes 0.5.4 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "memchr 2.3.2 (registry+https://github.com/rust-lang/crates.io-index)", + "pin-project 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "fxhash" version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c31b6d751ae2c7f11320402d34e41349dd1016f8d5d45e48c4312bc8625af50c" dependencies = [ - "byteorder 1.3.4", + "byteorder 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "gcc" version = "0.3.55" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f5f3913fa0bfe7ee1fd8248b6b9f42a5af4b9d65ec2dd2c3c26132b950ecfc2" [[package]] name = "generic-array" version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c68f0274ae0e023facc3c97b2e00f076be70e254bc851d972503b328db79b2ec" dependencies = [ - "typenum", + "typenum 1.11.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "get_if_addrs" version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "abddb55a898d32925f3148bd281174a68eeb68bbfd9a5938a57b18f506ee4ef7" dependencies = [ - "c_linked_list", - "get_if_addrs-sys", - "libc", - "winapi 0.2.8", + "c_linked_list 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "get_if_addrs-sys 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "get_if_addrs-sys" version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d04f9fb746cf36b191c00f3ede8bde9c8e64f9f4b05ae2694a9ccf5e3f5ab48" dependencies = [ - "gcc", - "libc", + "gcc 0.3.55 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "getrandom" version = "0.1.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7abc8dd8451921606d809ba32e95b6111925cd2906060d2dcc29c070220503eb" dependencies = [ - "cfg-if", - "libc", - "wasi", - "wasm-bindgen", + "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", + "wasi 0.9.0+wasi-snapshot-preview1 (registry+https://github.com/rust-lang/crates.io-index)", + "wasm-bindgen 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "gimli" version = "0.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "162d18ae5f2e3b90a993d202f1ba17a5633c2484426f8bcae201f86194bacd00" dependencies = [ - "arrayvec 0.4.12", - "byteorder 1.3.4", - "fallible-iterator", - "indexmap", - "stable_deref_trait", + "arrayvec 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "fallible-iterator 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "indexmap 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", + "stable_deref_trait 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "gimli" version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81dd6190aad0f05ddbbf3245c54ed14ca4aa6dd32f22312b70d8f168c3e3e633" dependencies = [ - "byteorder 1.3.4", - "indexmap", + "byteorder 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "indexmap 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "glob" version = "0.2.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8be18de09a56b60ed0edf84bc9df007e30040691af7acd1c41874faac5895bfb" [[package]] name = "glob" version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b919933a397b79c37e33b77bb2aa3dc8eb6e165ad809e58ff75bc7db2e34574" [[package]] name = "globset" version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "925aa2cac82d8834e2b2a4415b6f6879757fb5c0928fc445ae76461a12eed8f2" dependencies = [ - "aho-corasick", - "bstr", - "fnv", - "log 0.4.8", - "regex", + "aho-corasick 0.7.8 (registry+https://github.com/rust-lang/crates.io-index)", + "bstr 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", + "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "regex 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "gloo-timers" version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b2d17dbd803c2fc86cb1b613adf63192046a7176f383a8302594654752c4c4a" dependencies = [ - "futures-channel", - "futures-core", - "js-sys", - "wasm-bindgen", - "web-sys", + "futures-channel 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-core 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "js-sys 0.3.35 (registry+https://github.com/rust-lang/crates.io-index)", + "wasm-bindgen 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", + "web-sys 0.3.35 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "goblin" version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3081214398d39e4bd7f2c1975f0488ed04614ffdd976c6fc7a0708278552c0da" dependencies = [ - "log 0.4.8", - "plain", - "scroll", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "plain 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", + "scroll 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "h2" version = "0.1.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a5b34c246847f938a410a03c5458c7fee2274436675e76d8b903c08efc29c462" dependencies = [ - "byteorder 1.3.4", - "bytes 0.4.12", - "fnv", - "futures 0.1.29", - "http 0.1.21", - "indexmap", - "log 0.4.8", - "slab", - "string", - "tokio-io", + "byteorder 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", + "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", + "http 0.1.21 (registry+https://github.com/rust-lang/crates.io-index)", + "indexmap 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", + "string 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "h2" version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9433d71e471c1736fd5a61b671fc0b148d7a2992f666c958d03cd8feb3b88d1" dependencies = [ - "bytes 0.5.4", - "fnv", - "futures-core", - "futures-sink", - "futures-util", - "http 0.2.0", - "indexmap", - "log 0.4.8", - "slab", - "tokio 0.2.11", - "tokio-util", + "bytes 0.5.4 (registry+https://github.com/rust-lang/crates.io-index)", + "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-core 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-sink 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-util 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "http 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "indexmap 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-util 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "hash-db" version = "0.15.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d23bd4e7b5eda0d0f3a307e8b381fdc8ba9000f26fbe912250c0a4cc3956364a" [[package]] name = "hash256-std-hasher" version = "0.15.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92c171d55b98633f4ed3860808f004099b36c1cc29c42cfc53aa8591b21efcf2" dependencies = [ - "crunchy", + "crunchy 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "hashbrown" version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1de41fb8dba9714efd92241565cdff73f78508c95697dd56787d3cba27e2353" [[package]] name = "hashbrown" version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e6073d0ca812575946eb5f35ff68dbe519907b25c42530389ff946dc84c6ead" dependencies = [ - "ahash", - "autocfg 0.1.7", + "ahash 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)", + "autocfg 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "heck" version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "20564e78d53d2bb135c343b3f47714a56af2061f1c928fdb541dc7b9fdd94205" dependencies = [ - "unicode-segmentation", + "unicode-segmentation 1.6.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "hermit-abi" -version = "0.1.6" +version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eff2656d88f158ce120947499e971d743c05dbcbed62e5bd2f38f1698bbc3772" dependencies = [ - "libc", + "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "hex" -version = "0.4.1" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76cdda6bf525062a0c9e8f14ee2b37935c86b8efb6c8b69b3c83dfb518a914af" [[package]] name = "hex-literal" version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "961de220ec9a91af2e1e5bd80d02109155695e516771762381ef8581317066e0" dependencies = [ - "hex-literal-impl", - "proc-macro-hack", + "hex-literal-impl 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro-hack 0.5.11 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "hex-literal-impl" version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d4c5c844e2fee0bf673d54c2c177f1713b3d2af2ff6e666b49cb7572e6cf42d" dependencies = [ - "proc-macro-hack", + "proc-macro-hack 0.5.11 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "hmac" version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5dcb5e64cda4c23119ab41ba960d1e170a774c8e4b9d9e6a9bc18aabf5e59695" dependencies = [ - "crypto-mac", - "digest", + "crypto-mac 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", + "digest 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "hmac-drbg" version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6e570451493f10f6581b48cdd530413b63ea9e780f544bfd3bdcaa0d89d1a7b" dependencies = [ - "digest", - "generic-array", - "hmac", + "digest 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", + "generic-array 0.12.3 (registry+https://github.com/rust-lang/crates.io-index)", + "hmac 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "http" version = "0.1.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6ccf5ede3a895d8856620237b2f02972c1bbc78d2965ad7fe8838d4a0ed41f0" dependencies = [ - "bytes 0.4.12", - "fnv", - "itoa", + "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", + "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", + "itoa 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "http" version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b708cc7f06493459026f53b9a61a7a121a5d1ec6238dee58ea4941132b30156b" dependencies = [ - "bytes 0.5.4", - "fnv", - "itoa", + "bytes 0.5.4 (registry+https://github.com/rust-lang/crates.io-index)", + "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", + "itoa 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "http-body" version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6741c859c1b2463a423a1dbce98d418e6c3c3fc720fb0d45528657320920292d" dependencies = [ - "bytes 0.4.12", - "futures 0.1.29", - "http 0.1.21", - "tokio-buf", + "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", + "http 0.1.21 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-buf 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "http-body" version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13d5ff830006f7646652e057693569bfe0d51760c0085a071769d142a205111b" dependencies = [ - "bytes 0.5.4", - "http 0.2.0", + "bytes 0.5.4 (registry+https://github.com/rust-lang/crates.io-index)", + "http 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "httparse" version = "1.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd179ae861f0c2e53da70d892f5f3029f9594be0c41dc5269cd371691b1dc2f9" [[package]] name = "humantime" version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df004cfca50ef23c36850aaaa59ad52cc70d0e90243c3c7737a4dd32dc7a3c4f" dependencies = [ - "quick-error", + "quick-error 1.2.3 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "hyper" version = "0.10.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0a0652d9a2609a968c14be1a9ea00bf4b1d64e2e1f53a1b51b6fff3a6e829273" dependencies = [ - "base64 0.9.3", - "httparse", - "language-tags", - "log 0.3.9", - "mime", - "num_cpus", - "time", - "traitobject", - "typeable", - "unicase 1.4.2", - "url 1.7.2", + "base64 0.9.3 (registry+https://github.com/rust-lang/crates.io-index)", + "httparse 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "language-tags 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", + "mime 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", + "num_cpus 1.12.0 (registry+https://github.com/rust-lang/crates.io-index)", + "time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)", + "traitobject 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "typeable 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "unicase 1.4.2 (registry+https://github.com/rust-lang/crates.io-index)", + "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "hyper" version = "0.12.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9dbe6ed1438e1f8ad955a4701e9a944938e9519f6888d12d8558b645e247d5f6" -dependencies = [ - "bytes 0.4.12", - "futures 0.1.29", - "futures-cpupool", - "h2 0.1.26", - "http 0.1.21", - "http-body 0.1.0", - "httparse", - "iovec", - "itoa", - "log 0.4.8", - "net2", - "rustc_version", - "time", - "tokio 0.1.22", - "tokio-buf", - "tokio-executor 0.1.10", - "tokio-io", - "tokio-reactor", - "tokio-tcp", - "tokio-threadpool", - "tokio-timer", - "want 0.2.0", +dependencies = [ + "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-cpupool 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", + "h2 0.1.26 (registry+https://github.com/rust-lang/crates.io-index)", + "http 0.1.21 (registry+https://github.com/rust-lang/crates.io-index)", + "http-body 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "httparse 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "iovec 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", + "itoa 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)", + "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", + "time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio 0.1.22 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-buf 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-executor 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-reactor 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-tcp 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-threadpool 0.1.18 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-timer 0.2.13 (registry+https://github.com/rust-lang/crates.io-index)", + "want 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "hyper" version = "0.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa1c527bbc634be72aa7ba31e4e4def9bbb020f5416916279b7c705cd838893e" dependencies = [ - "bytes 0.5.4", - "futures-channel", - "futures-core", - "futures-util", - "h2 0.2.1", - "http 0.2.0", - "http-body 0.3.1", - "httparse", - "itoa", - "log 0.4.8", - "net2", - "pin-project", - "time", - "tokio 0.2.11", - "tower-service", - "want 0.3.0", + "bytes 0.5.4 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-channel 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-core 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-util 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "h2 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "http 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "http-body 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "httparse 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "itoa 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)", + "pin-project 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", + "tower-service 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "want 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "hyper-rustls" version = "0.19.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6ea6215c7314d450ee45970ab8b3851ab447a0e6bafdd19e31b20a42dbb7faf" dependencies = [ - "bytes 0.5.4", - "ct-logs", - "futures-util", - "hyper 0.13.2", - "rustls", - "rustls-native-certs", - "tokio 0.2.11", - "tokio-rustls", - "webpki", + "bytes 0.5.4 (registry+https://github.com/rust-lang/crates.io-index)", + "ct-logs 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-util 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "hyper 0.13.2 (registry+https://github.com/rust-lang/crates.io-index)", + "rustls 0.16.0 (registry+https://github.com/rust-lang/crates.io-index)", + "rustls-native-certs 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-rustls 0.12.2 (registry+https://github.com/rust-lang/crates.io-index)", + "webpki 0.21.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "hyper-tls" version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a800d6aa50af4b5850b2b0f659625ce9504df908e9733b635720483be26174f" dependencies = [ - "bytes 0.4.12", - "futures 0.1.29", - "hyper 0.12.35", - "native-tls", - "tokio-io", + "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", + "hyper 0.12.35 (registry+https://github.com/rust-lang/crates.io-index)", + "native-tls 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "idna" version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38f09e0f0b1fb55fdee1f17470ad800da77af5186a1a76c026b679358b7e844e" dependencies = [ - "matches", - "unicode-bidi", - "unicode-normalization", + "matches 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", + "unicode-bidi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "unicode-normalization 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "idna" version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02e2673c30ee86b5b96a9cb52ad15718aa1f966f5ab9ad54a8b95d5ca33120a9" dependencies = [ - "matches", - "unicode-bidi", - "unicode-normalization", + "matches 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", + "unicode-bidi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "unicode-normalization 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "impl-codec" version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1be51a921b067b0eaca2fad532d9400041561aa922221cc65f95a85641c6bf53" dependencies = [ - "parity-scale-codec", + "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "impl-rlp" version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f7a72f11830b52333f36e3b09a288333888bf54380fd0ac0790a3c31ab0f3c5" dependencies = [ - "rlp", + "rlp 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "impl-serde" version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "58e3cae7e99c7ff5a995da2cf78dd0a5383740eda71d98cf7b1910c301ac69b8" dependencies = [ - "serde", + "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "impl-serde" version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5bbe9ea9b182f0fb1cabbd61f4ff9b7b7b9197955e95a7e4c27de5055eb29ff8" dependencies = [ - "serde", + "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "impl-trait-for-tuples" version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ef5550a42e3740a0e71f909d4c861056a284060af885ae7aa6242820f920d9d" dependencies = [ - "proc-macro2 1.0.8", - "quote 1.0.2", - "syn", + "proc-macro2 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 1.0.14 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "indexmap" version = "1.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "076f042c5b7b98f31d205f1249267e12a6518c1481e9dae9764af19b707d2292" dependencies = [ - "autocfg 1.0.0", + "autocfg 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "integer-sqrt" version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f65877bf7d44897a473350b1046277941cee20b263397e90869c50b6e766088b" [[package]] name = "interleaved-ordered" version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "141340095b15ed7491bd3d4ced9d20cebfb826174b6bb03386381f62b01e3d77" [[package]] name = "iovec" version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2b3ea6ff95e175473f8ffe6a7eb7c00d054240321b84c57051175fe3c1e075e" dependencies = [ - "libc", + "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "ipnet" version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a859057dc563d1388c1e816f98a1892629075fc046ed06e845b883bb8b2916fb" [[package]] name = "itertools" version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f56a2d0bc861f9165be4eb3442afd3c236d8a98afd426f65d92324ae1091a484" dependencies = [ - "either", + "either 1.5.3 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "itoa" version = "0.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8b7a7c0c47db5545ed3fef7468ee7bb5b74691498139e4b3f6a20685dc6dd8e" [[package]] name = "jobserver" version = "0.1.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c71313ebb9439f74b00d9d2dcec36440beaf57a6aa0623068441dd7cd81a7f2" dependencies = [ - "libc", + "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "js-sys" version = "0.3.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7889c7c36282151f6bf465be4700359318aef36baa951462382eae49e9577cf9" dependencies = [ - "wasm-bindgen", + "wasm-bindgen 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "jsonrpc-client-transports" version = "14.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0a9ae166c4d1f702d297cd76d4b55758ace80272ffc6dbb139fdc1bf810de40b" dependencies = [ - "failure", - "futures 0.1.29", - "hyper 0.12.35", - "hyper-tls", - "jsonrpc-core", - "jsonrpc-pubsub", - "log 0.4.8", - "serde", - "serde_json", - "tokio 0.1.22", - "url 1.7.2", - "websocket", + "failure 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", + "hyper 0.12.35 (registry+https://github.com/rust-lang/crates.io-index)", + "hyper-tls 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", + "jsonrpc-core 14.0.5 (registry+https://github.com/rust-lang/crates.io-index)", + "jsonrpc-pubsub 14.0.6 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_json 1.0.48 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio 0.1.22 (registry+https://github.com/rust-lang/crates.io-index)", + "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)", + "websocket 0.24.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "jsonrpc-core" version = "14.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe3b688648f1ef5d5072229e2d672ecb92cbff7d1c79bcf3fd5898f3f3df0970" dependencies = [ - "futures 0.1.29", - "log 0.4.8", - "serde", - "serde_derive", - "serde_json", + "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_json 1.0.48 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "jsonrpc-core-client" version = "14.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "080dc110be17701097df238fad3c816d4a478a1899dfbcf8ec8957dd40ec7304" dependencies = [ - "jsonrpc-client-transports", + "jsonrpc-client-transports 14.0.5 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "jsonrpc-derive" version = "14.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8609af8f63b626e8e211f52441fcdb6ec54f1a446606b10d5c89ae9bf8a20058" dependencies = [ - "proc-macro-crate", - "proc-macro2 1.0.8", - "quote 1.0.2", - "syn", + "proc-macro-crate 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 1.0.14 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "jsonrpc-http-server" version = "14.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "816d63997ea45d3634608edbef83ddb35e661f7c0b27b5b72f237e321f0e9807" dependencies = [ - "hyper 0.12.35", - "jsonrpc-core", - "jsonrpc-server-utils", - "log 0.4.8", - "net2", - "parking_lot 0.10.0", - "unicase 2.6.0", + "hyper 0.12.35 (registry+https://github.com/rust-lang/crates.io-index)", + "jsonrpc-core 14.0.5 (registry+https://github.com/rust-lang/crates.io-index)", + "jsonrpc-server-utils 14.0.5 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", + "unicase 2.6.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "jsonrpc-pubsub" version = "14.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b31c9b90731276fdd24d896f31bb10aecf2e5151733364ae81123186643d939" dependencies = [ - "jsonrpc-core", - "log 0.4.8", - "parking_lot 0.10.0", - "serde", + "jsonrpc-core 14.0.5 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "jsonrpc-server-utils" version = "14.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95b7635e618a0edbbe0d2a2bbbc69874277c49383fcf6c3c0414491cfb517d22" dependencies = [ - "bytes 0.4.12", - "globset", - "jsonrpc-core", - "lazy_static", - "log 0.4.8", - "tokio 0.1.22", - "tokio-codec", - "unicase 2.6.0", + "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", + "globset 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)", + "jsonrpc-core 14.0.5 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio 0.1.22 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-codec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "unicase 2.6.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "jsonrpc-ws-server" version = "14.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b94e5773b2ae66e0e02c80775ce6bbba6f15d5bb47c14ec36a36fcf94f8df851" dependencies = [ - "jsonrpc-core", - "jsonrpc-server-utils", - "log 0.4.8", - "parking_lot 0.10.0", - "slab", - "ws", + "jsonrpc-core 14.0.5 (registry+https://github.com/rust-lang/crates.io-index)", + "jsonrpc-server-utils 14.0.5 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", + "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", + "ws 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "keccak" version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67c21572b4949434e4fc1e1978b99c5f77064153c59d998bf13ecd96fb5ecba7" [[package]] name = "keccak-hasher" version = "0.15.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3468207deea1359a0e921591ae9b4c928733d94eb9d6a2eeda994cfd59f42cf8" dependencies = [ - "hash-db", - "hash256-std-hasher", - "tiny-keccak 1.5.0", + "hash-db 0.15.2 (registry+https://github.com/rust-lang/crates.io-index)", + "hash256-std-hasher 0.15.2 (registry+https://github.com/rust-lang/crates.io-index)", + "tiny-keccak 1.5.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "kernel32-sys" version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7507624b29483431c0ba2d82aece8ca6cdba9382bff4ddd0f7490560c056098d" dependencies = [ - "winapi 0.2.8", - "winapi-build", + "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "kv-log-macro" version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c54d9f465d530a752e6ebdc217e081a7a614b48cb200f6f0aee21ba6bc9aabb" dependencies = [ - "log 0.4.8", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "kvdb" version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03080afe6f42cd996da9f568d6add5d7fb5ee2ea7fb7802d2d2cbd836958fd87" dependencies = [ - "parity-bytes", - "parity-util-mem", - "smallvec 1.2.0", + "parity-bytes 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-util-mem 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", + "smallvec 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "kvdb-memorydb" version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9355274e5a9e0a7e8ef43916950eae3949024de2a8dffe4d5a6c13974a37c8e" dependencies = [ - "kvdb", - "parity-util-mem", - "parking_lot 0.10.0", + "kvdb 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-util-mem 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "kvdb-rocksdb" version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af36fd66ccd99f3f771ae39b75aaba28b952372b6debfb971134bf1f03466ab2" dependencies = [ - "fs-swap", - "interleaved-ordered", - "kvdb", - "log 0.4.8", - "num_cpus", - "owning_ref", - "parity-util-mem", - "parking_lot 0.10.0", - "regex", - "rocksdb", - "smallvec 1.2.0", + "fs-swap 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", + "interleaved-ordered 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "kvdb 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "num_cpus 1.12.0 (registry+https://github.com/rust-lang/crates.io-index)", + "owning_ref 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-util-mem 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", + "regex 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "rocksdb 0.13.0 (registry+https://github.com/rust-lang/crates.io-index)", + "smallvec 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "kvdb-web" version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a985c47b4c46429e96033ebf6eaed784a81ceccb4e5df13d63f3b9078a4df81" dependencies = [ - "futures 0.3.4", - "js-sys", - "kvdb", - "kvdb-memorydb", - "log 0.4.8", - "parity-util-mem", - "send_wrapper 0.3.0", - "wasm-bindgen", - "web-sys", + "futures 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "js-sys 0.3.35 (registry+https://github.com/rust-lang/crates.io-index)", + "kvdb 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "kvdb-memorydb 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-util-mem 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", + "send_wrapper 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "wasm-bindgen 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", + "web-sys 0.3.35 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "language-tags" version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a91d884b6667cd606bb5a69aa0c99ba811a115fc68915e7056ec08a46e93199a" [[package]] name = "lazy_static" version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" [[package]] name = "lazycell" version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b294d6fa9ee409a054354afc4352b0b9ef7ca222c69b8812cbea9e7d2bf3783f" [[package]] name = "leb128" version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3576a87f2ba00f6f106fdfcd16db1d698d648a26ad8e0573cad8537c3c362d2a" [[package]] name = "libc" version = "0.2.66" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d515b1f41455adea1313a4a2ac8a8a477634fbae63cc6100e3aebb207ce61558" [[package]] name = "libloading" version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2b111a074963af1d37a139918ac6d49ad1d0d5e47f72fd55388619691a7d753" dependencies = [ - "cc", - "winapi 0.3.8", + "cc 1.0.50 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "libp2p" -version = "0.16.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a58becf0b9585fcfbb8215bbe6e6ac187fcc180fd1026925ca180c845aa5a6e8" -dependencies = [ - "bytes 0.5.4", - "futures 0.3.4", - "lazy_static", - "libp2p-core", - "libp2p-core-derive", - "libp2p-deflate", - "libp2p-dns", - "libp2p-floodsub", - "libp2p-gossipsub", - "libp2p-identify", - "libp2p-kad", - "libp2p-mdns", - "libp2p-mplex", - "libp2p-noise", - "libp2p-ping", - "libp2p-plaintext", - "libp2p-pnet", - "libp2p-secio", - "libp2p-swarm", - "libp2p-tcp", - "libp2p-uds", - "libp2p-wasm-ext", - "libp2p-websocket", - "libp2p-yamux", - "parity-multiaddr 0.7.2", - "parity-multihash 0.2.3", - "parking_lot 0.10.0", - "pin-project", - "smallvec 1.2.0", - "wasm-timer", +version = "0.16.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "bytes 0.5.4 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "libp2p-core 0.16.0 (registry+https://github.com/rust-lang/crates.io-index)", + "libp2p-core-derive 0.16.0 (registry+https://github.com/rust-lang/crates.io-index)", + "libp2p-deflate 0.16.0 (registry+https://github.com/rust-lang/crates.io-index)", + "libp2p-dns 0.16.0 (registry+https://github.com/rust-lang/crates.io-index)", + "libp2p-floodsub 0.16.0 (registry+https://github.com/rust-lang/crates.io-index)", + "libp2p-gossipsub 0.16.0 (registry+https://github.com/rust-lang/crates.io-index)", + "libp2p-identify 0.16.0 (registry+https://github.com/rust-lang/crates.io-index)", + "libp2p-kad 0.16.1 (registry+https://github.com/rust-lang/crates.io-index)", + "libp2p-mdns 0.16.0 (registry+https://github.com/rust-lang/crates.io-index)", + "libp2p-mplex 0.16.0 (registry+https://github.com/rust-lang/crates.io-index)", + "libp2p-noise 0.16.0 (registry+https://github.com/rust-lang/crates.io-index)", + "libp2p-ping 0.16.0 (registry+https://github.com/rust-lang/crates.io-index)", + "libp2p-plaintext 0.16.0 (registry+https://github.com/rust-lang/crates.io-index)", + "libp2p-pnet 0.16.0 (registry+https://github.com/rust-lang/crates.io-index)", + "libp2p-secio 0.16.1 (registry+https://github.com/rust-lang/crates.io-index)", + "libp2p-swarm 0.16.1 (registry+https://github.com/rust-lang/crates.io-index)", + "libp2p-tcp 0.16.0 (registry+https://github.com/rust-lang/crates.io-index)", + "libp2p-uds 0.16.0 (registry+https://github.com/rust-lang/crates.io-index)", + "libp2p-wasm-ext 0.16.1 (registry+https://github.com/rust-lang/crates.io-index)", + "libp2p-websocket 0.16.0 (registry+https://github.com/rust-lang/crates.io-index)", + "libp2p-yamux 0.16.0 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-multiaddr 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-multihash 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", + "pin-project 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "smallvec 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "wasm-timer 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "libp2p-core" version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b874594c4b29de1a29f27871feba8e6cd13aa54a8a1e8f8c7cf3dfac5ca287c" -dependencies = [ - "asn1_der", - "bs58 0.3.0", - "ed25519-dalek", - "fnv", - "futures 0.3.4", - "futures-timer 3.0.1", - "lazy_static", - "libsecp256k1", - "log 0.4.8", - "multistream-select", - "parity-multiaddr 0.7.2", - "parity-multihash 0.2.3", - "parking_lot 0.10.0", - "pin-project", - "prost", - "prost-build", - "rand 0.7.3", - "ring", - "rw-stream-sink", - "sha2", - "smallvec 1.2.0", - "thiserror", - "unsigned-varint 0.3.0", - "void", - "zeroize 1.1.0", +dependencies = [ + "asn1_der 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)", + "bs58 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "ed25519-dalek 1.0.0-pre.3 (registry+https://github.com/rust-lang/crates.io-index)", + "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-timer 3.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "libsecp256k1 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "multistream-select 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-multiaddr 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-multihash 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", + "pin-project 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "prost 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", + "prost-build 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)", + "ring 0.16.11 (registry+https://github.com/rust-lang/crates.io-index)", + "rw-stream-sink 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "sha2 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", + "smallvec 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "thiserror 1.0.11 (registry+https://github.com/rust-lang/crates.io-index)", + "unsigned-varint 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "void 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "zeroize 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "libp2p-core-derive" version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96d472e9d522f588805c77801de10b957be84e10f019ca5f869fa1825b15ea9b" dependencies = [ - "quote 1.0.2", - "syn", + "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 1.0.14 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "libp2p-deflate" version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e25004d4d9837b44b22c5f1a69be1724a5168fef6cff1716b5176a972c3aa62" dependencies = [ - "flate2", - "futures 0.3.4", - "libp2p-core", + "flate2 1.0.13 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "libp2p-core 0.16.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "libp2p-dns" version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b99e552f9939b606eb4b59f7f64d9b01e3f96752f47e350fc3c5fc646ed3f649" dependencies = [ - "futures 0.3.4", - "libp2p-core", - "log 0.4.8", + "futures 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "libp2p-core 0.16.0 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "libp2p-floodsub" version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d3234f12e44f9a50351a9807b97fe7de11eb9ae4482370392ba10da6dc90722" dependencies = [ - "cuckoofilter", - "fnv", - "futures 0.3.4", - "libp2p-core", - "libp2p-swarm", - "prost", - "prost-build", - "rand 0.7.3", - "smallvec 1.2.0", + "cuckoofilter 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", + "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "libp2p-core 0.16.0 (registry+https://github.com/rust-lang/crates.io-index)", + "libp2p-swarm 0.16.1 (registry+https://github.com/rust-lang/crates.io-index)", + "prost 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", + "prost-build 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)", + "smallvec 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "libp2p-gossipsub" version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d46cb3e0841bd951cbf4feae56cdc081e6347836a644fb260c3ec554149b4006" dependencies = [ - "base64 0.11.0", - "byteorder 1.3.4", - "bytes 0.5.4", - "fnv", - "futures 0.3.4", - "futures_codec", - "libp2p-core", - "libp2p-swarm", - "log 0.4.8", - "lru 0.4.3", - "prost", - "prost-build", - "rand 0.7.3", - "sha2", - "smallvec 1.2.0", - "unsigned-varint 0.3.0", - "wasm-timer", + "base64 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes 0.5.4 (registry+https://github.com/rust-lang/crates.io-index)", + "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "futures_codec 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "libp2p-core 0.16.0 (registry+https://github.com/rust-lang/crates.io-index)", + "libp2p-swarm 0.16.1 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "lru 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", + "prost 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", + "prost-build 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)", + "sha2 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", + "smallvec 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "unsigned-varint 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "wasm-timer 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "libp2p-identify" version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfeb935a9bd41263e4f3a24b988e9f4a044f3ae89ac284e83c17fe2f84e0d66b" dependencies = [ - "futures 0.3.4", - "libp2p-core", - "libp2p-swarm", - "log 0.4.8", - "prost", - "prost-build", - "smallvec 1.2.0", - "wasm-timer", + "futures 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "libp2p-core 0.16.0 (registry+https://github.com/rust-lang/crates.io-index)", + "libp2p-swarm 0.16.1 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "prost 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", + "prost-build 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", + "smallvec 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "wasm-timer 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "libp2p-kad" -version = "0.16.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2efcff2af085e8181c421f68fe9c2b0a067379d146731925b3ac8f8e605c458" -dependencies = [ - "arrayvec 0.5.1", - "bytes 0.5.4", - "either", - "fnv", - "futures 0.3.4", - "futures_codec", - "libp2p-core", - "libp2p-swarm", - "log 0.4.8", - "parity-multihash 0.2.3", - "prost", - "prost-build", - "rand 0.7.3", - "sha2", - "smallvec 1.2.0", - "uint", - "unsigned-varint 0.3.0", - "void", - "wasm-timer", +version = "0.16.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "arrayvec 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes 0.5.4 (registry+https://github.com/rust-lang/crates.io-index)", + "either 1.5.3 (registry+https://github.com/rust-lang/crates.io-index)", + "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "futures_codec 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "libp2p-core 0.16.0 (registry+https://github.com/rust-lang/crates.io-index)", + "libp2p-swarm 0.16.1 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-multihash 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", + "prost 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", + "prost-build 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)", + "sha2 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", + "smallvec 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "uint 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)", + "unsigned-varint 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "void 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "wasm-timer 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "libp2p-mdns" version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "881fcfb360c2822db9f0e6bb6f89529621556ed9a8b038313414eda5107334de" dependencies = [ - "async-std", - "data-encoding", - "dns-parser", - "either", - "futures 0.3.4", - "lazy_static", - "libp2p-core", - "libp2p-swarm", - "log 0.4.8", - "net2", - "rand 0.7.3", - "smallvec 1.2.0", - "void", - "wasm-timer", + "async-std 1.5.0 (registry+https://github.com/rust-lang/crates.io-index)", + "data-encoding 2.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "dns-parser 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", + "either 1.5.3 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "libp2p-core 0.16.0 (registry+https://github.com/rust-lang/crates.io-index)", + "libp2p-swarm 0.16.1 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)", + "smallvec 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "void 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "wasm-timer 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "libp2p-mplex" version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8507b37ad0eed275efcde67a023c3d85af6c80768b193845b9288e848e1af95" dependencies = [ - "bytes 0.5.4", - "fnv", - "futures 0.3.4", - "futures_codec", - "libp2p-core", - "log 0.4.8", - "parking_lot 0.10.0", - "unsigned-varint 0.3.0", + "bytes 0.5.4 (registry+https://github.com/rust-lang/crates.io-index)", + "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "futures_codec 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "libp2p-core 0.16.0 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", + "unsigned-varint 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "libp2p-noise" version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac7d33809afdf6794f09fdb2f9f94e1550ae230be5bae6430a078eb96fc9e5a6" dependencies = [ - "curve25519-dalek 1.2.3", - "futures 0.3.4", - "lazy_static", - "libp2p-core", - "log 0.4.8", - "prost", - "prost-build", - "rand 0.7.3", - "sha2", - "snow", - "static_assertions", - "x25519-dalek 0.5.2", - "zeroize 1.1.0", + "curve25519-dalek 1.2.3 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "libp2p-core 0.16.0 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "prost 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", + "prost-build 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)", + "sha2 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", + "snow 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", + "static_assertions 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "x25519-dalek 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)", + "zeroize 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "libp2p-ping" version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33d22f2f228b3a828dca1cb8aa9fa331e0bc9c36510cb2c1916956e20dc85e8c" dependencies = [ - "futures 0.3.4", - "libp2p-core", - "libp2p-swarm", - "log 0.4.8", - "rand 0.7.3", - "void", - "wasm-timer", + "futures 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "libp2p-core 0.16.0 (registry+https://github.com/rust-lang/crates.io-index)", + "libp2p-swarm 0.16.1 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)", + "void 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "wasm-timer 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "libp2p-plaintext" version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56126a204d7b3382bac163143ff4125a14570b3ba76ba979103d1ae1abed1923" dependencies = [ - "bytes 0.5.4", - "futures 0.3.4", - "futures_codec", - "libp2p-core", - "log 0.4.8", - "prost", - "prost-build", - "rw-stream-sink", - "unsigned-varint 0.3.0", - "void", + "bytes 0.5.4 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "futures_codec 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "libp2p-core 0.16.0 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "prost 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", + "prost-build 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", + "rw-stream-sink 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "unsigned-varint 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "void 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "libp2p-pnet" version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b916938a8868f75180aeeffcc6a516a922d165e8fa2a90b57bad989d1ccbb57a" dependencies = [ - "futures 0.3.4", - "log 0.4.8", - "pin-project", - "rand 0.7.3", - "salsa20", - "sha3", + "futures 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "pin-project 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)", + "salsa20 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sha3 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "libp2p-secio" -version = "0.16.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec00eb9a3404ed76a0e14f637edcaa7f2b4a27a16884da4a56f2f21e166c2843" -dependencies = [ - "aes-ctr", - "ctr", - "futures 0.3.4", - "hmac", - "js-sys", - "lazy_static", - "libp2p-core", - "log 0.4.8", - "parity-send-wrapper", - "pin-project", - "prost", - "prost-build", - "quicksink", - "rand 0.7.3", - "ring", - "rw-stream-sink", - "sha2", - "static_assertions", - "twofish", - "wasm-bindgen", - "wasm-bindgen-futures", - "web-sys", +version = "0.16.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "aes-ctr 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "ctr 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "hmac 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", + "js-sys 0.3.35 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "libp2p-core 0.16.0 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-send-wrapper 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "pin-project 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "prost 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", + "prost-build 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", + "quicksink 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)", + "ring 0.16.11 (registry+https://github.com/rust-lang/crates.io-index)", + "rw-stream-sink 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "sha2 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", + "static_assertions 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "twofish 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "wasm-bindgen 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", + "wasm-bindgen-futures 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "web-sys 0.3.35 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "libp2p-swarm" -version = "0.16.0" +version = "0.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1e9f4fb84a4bfe3d3a361c1fbcd4af017ba68f0a46a77bfbcc48bf8a456d6ef" dependencies = [ - "futures 0.3.4", - "libp2p-core", - "log 0.4.8", - "smallvec 1.2.0", - "void", - "wasm-timer", + "futures 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "libp2p-core 0.16.0 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "smallvec 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "void 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "wasm-timer 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "libp2p-tcp" version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9e80ad4e3535345f3d666554ce347d3100453775611c05c60786bf9a1747a10" dependencies = [ - "async-std", - "futures 0.3.4", - "futures-timer 3.0.1", - "get_if_addrs", - "ipnet", - "libp2p-core", - "log 0.4.8", + "async-std 1.5.0 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-timer 3.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "get_if_addrs 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)", + "ipnet 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "libp2p-core 0.16.0 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "libp2p-uds" version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76d329564a43da9d0e055a5b938633c4a8ceab1f59cec133fbc4647917c07341" dependencies = [ - "async-std", - "futures 0.3.4", - "libp2p-core", - "log 0.4.8", + "async-std 1.5.0 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "libp2p-core 0.16.0 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "libp2p-wasm-ext" -version = "0.16.0" +version = "0.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39703653caa36f4afd0def39cc49a3ac0fa1d4289ca1802e417af03e4f5ef950" dependencies = [ - "futures 0.3.4", - "js-sys", - "libp2p-core", - "parity-send-wrapper", - "wasm-bindgen", - "wasm-bindgen-futures", + "futures 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "js-sys 0.3.35 (registry+https://github.com/rust-lang/crates.io-index)", + "libp2p-core 0.16.0 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-send-wrapper 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "wasm-bindgen 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", + "wasm-bindgen-futures 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "libp2p-websocket" version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5351ca9eea122081c1c0f9323164d2918cac29b5a6bfe5054d4ba8ec9447cf42" dependencies = [ - "async-tls", - "bytes 0.5.4", - "either", - "futures 0.3.4", - "libp2p-core", - "log 0.4.8", - "quicksink", - "rustls", - "rw-stream-sink", - "soketto", - "url 2.1.1", - "webpki", - "webpki-roots 0.18.0", + "async-tls 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes 0.5.4 (registry+https://github.com/rust-lang/crates.io-index)", + "either 1.5.3 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "libp2p-core 0.16.0 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "quicksink 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "rustls 0.16.0 (registry+https://github.com/rust-lang/crates.io-index)", + "rw-stream-sink 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "soketto 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", + "url 2.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "webpki 0.21.2 (registry+https://github.com/rust-lang/crates.io-index)", + "webpki-roots 0.18.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "libp2p-yamux" version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f72aa5a7273c29c6eaea09108a49feaefc7456164863f64f86a193f9e78a4b7f" dependencies = [ - "futures 0.3.4", - "libp2p-core", - "parking_lot 0.10.0", - "thiserror", - "yamux", + "futures 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "libp2p-core 0.16.0 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", + "thiserror 1.0.11 (registry+https://github.com/rust-lang/crates.io-index)", + "yamux 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "librocksdb-sys" version = "6.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0a0785e816e1e11e7599388a492c61ef80ddc2afc91e313e61662cce537809be" dependencies = [ - "bindgen", - "cc", - "glob 0.3.0", - "libc", + "bindgen 0.49.4 (registry+https://github.com/rust-lang/crates.io-index)", + "cc 1.0.50 (registry+https://github.com/rust-lang/crates.io-index)", + "glob 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "libsecp256k1" version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fc1e2c808481a63dc6da2074752fdd4336a3c8fcc68b83db6f1fd5224ae7962" dependencies = [ - "arrayref", - "crunchy", - "digest", - "hmac-drbg", - "rand 0.7.3", - "sha2", - "subtle 2.2.2", - "typenum", + "arrayref 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", + "crunchy 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", + "digest 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", + "hmac-drbg 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)", + "sha2 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", + "subtle 2.2.2 (registry+https://github.com/rust-lang/crates.io-index)", + "typenum 1.11.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "libz-sys" version = "1.0.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2eb5e43362e38e2bca2fd5f5134c4d4564a23a5c28e9b95411652021a8675ebe" dependencies = [ - "cc", - "libc", - "pkg-config", - "vcpkg", + "cc 1.0.50 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", + "pkg-config 0.3.17 (registry+https://github.com/rust-lang/crates.io-index)", + "vcpkg 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "linked-hash-map" version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae91b68aebc4ddb91978b11a1b02ddd8602a05ec19002801c5666000e05e0f83" [[package]] name = "linked_hash_set" version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c7c91c4c7bbeb4f2f7c4e5be11e6a05bd6830bc37249c47ce1ad86ad453ff9c" dependencies = [ - "linked-hash-map", + "linked-hash-map 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "lock_api" version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79b2de95ecb4691949fea4716ca53cdbcfccb2c612e19644a8bad05edcf9f47b" dependencies = [ - "scopeguard", + "scopeguard 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "log" version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e19e8d5c34a3e0e2223db8e060f9e8264aeeb5c5fc64a4ee9965c062211c024b" dependencies = [ - "log 0.4.8", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "log" version = "0.4.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14b6052be84e6b71ab17edffc2eeabf5c2c3ae1fdb464aae35ac50c67a44e1f7" dependencies = [ - "cfg-if", + "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "lru" version = "0.1.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d8f669d42c72d18514dfca8115689c5f6370a17d980cb5bd777a67f404594c8" dependencies = [ - "hashbrown 0.5.0", + "hashbrown 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "lru" version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0609345ddee5badacf857d4f547e0e5a2e987db77085c24cd887f73573a04237" dependencies = [ - "hashbrown 0.6.3", + "hashbrown 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "mach" version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86dd2487cdfea56def77b88438a2c915fb45113c5319bfe7e14306ca4cd0b0e1" dependencies = [ - "libc", + "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "matches" version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ffc5c5338469d4d3ea17d269fa8ea3512ad247247c30bd2df69e68309ed0a08" [[package]] name = "maybe-uninit" version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60302e4db3a61da70c0cb7991976248362f30319e88850c487b9b95bbf059e00" [[package]] name = "memchr" -version = "2.3.0" +version = "2.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3197e20c7edb283f87c071ddfc7a2cca8f8e0b888c242959846a6fce03c72223" -dependencies = [ - "libc", -] [[package]] name = "memoffset" version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75189eb85871ea5c2e2c15abbdd541185f63b408415e5051f5cac122d8c774b9" dependencies = [ - "rustc_version", + "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "memory-db" version = "0.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "198831fe8722331a395bc199a5d08efbc197497ef354cb4c77b969c02ffc0fc4" dependencies = [ - "ahash", - "hash-db", - "hashbrown 0.6.3", - "parity-util-mem", + "ahash 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)", + "hash-db 0.15.2 (registry+https://github.com/rust-lang/crates.io-index)", + "hashbrown 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-util-mem 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "memory_units" version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "71d96e3f3c0b6325d8ccd83c33b28acb183edcb6c67938ba104ec546854b0882" [[package]] name = "merlin" version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b0942b357c1b4d0dc43ba724674ec89c3218e6ca2b3e8269e7cb53bcecd2f6e" dependencies = [ - "byteorder 1.3.4", - "keccak", - "rand_core 0.4.2", - "zeroize 1.1.0", + "byteorder 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "keccak 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", + "zeroize 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "mime" version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba626b8a6de5da682e1caa06bdb42a335aee5a84db8e5046a3e8ab17ba0a3ae0" dependencies = [ - "log 0.3.9", + "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "miniz_oxide" version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa679ff6578b1cddee93d7e82e263b94a575e0bfced07284eb0c037c1d2416a5" dependencies = [ - "adler32", + "adler32 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "mio" version = "0.6.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "302dec22bcf6bae6dfb69c647187f4b4d0fb6f535521f7bc022430ce8e12008f" dependencies = [ - "cfg-if", - "fuchsia-zircon", - "fuchsia-zircon-sys", - "iovec", - "kernel32-sys", - "libc", - "log 0.4.8", - "miow", - "net2", - "slab", - "winapi 0.2.8", + "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", + "fuchsia-zircon 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", + "fuchsia-zircon-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", + "iovec 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", + "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "miow 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)", + "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "mio-extras" version = "2.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52403fe290012ce777c4626790c8951324a2b9e3316b3143779c72b029742f19" dependencies = [ - "lazycell", - "log 0.4.8", - "mio", - "slab", + "lazycell 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "mio 0.6.21 (registry+https://github.com/rust-lang/crates.io-index)", + "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "mio-uds" version = "0.6.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "966257a94e196b11bb43aca423754d87429960a768de9414f3691d6957abf125" dependencies = [ - "iovec", - "libc", - "mio", + "iovec 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", + "mio 0.6.21 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "miow" version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c1f2f3b1cf331de6896aabf6e9d55dca90356cc9960cca7eaaf408a355ae919" dependencies = [ - "kernel32-sys", - "net2", - "winapi 0.2.8", - "ws2_32-sys", + "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", + "net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", + "ws2_32-sys 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "more-asserts" version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0debeb9fcf88823ea64d64e4a815ab1643f33127d995978e099942ce38f25238" [[package]] name = "multimap" version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a97fbd5d00e0e37bfb10f433af8f5aaf631e739368dc9fc28286ca81ca4948dc" [[package]] name = "multistream-select" version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f938ffe420493e77c8b6cbcc3f282283f68fc889c5dcbc8e51668d5f3a01ad94" dependencies = [ - "bytes 0.5.4", - "futures 0.1.29", - "log 0.4.8", - "smallvec 1.2.0", - "tokio-io", - "unsigned-varint 0.3.0", + "bytes 0.5.4 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "smallvec 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)", + "unsigned-varint 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "names" version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef320dab323286b50fb5cdda23f61c796a72a89998ab565ca32525c5c556f2da" dependencies = [ - "rand 0.3.23", + "rand 0.3.23 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "native-tls" version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b2df1a4c22fd44a62147fd8f13dd0f95c9d8ca7b2610299b2a2f9cf8964274e" dependencies = [ - "lazy_static", - "libc", - "log 0.4.8", - "openssl", - "openssl-probe", - "openssl-sys", - "schannel", - "security-framework", - "security-framework-sys", - "tempfile", + "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "openssl 0.10.28 (registry+https://github.com/rust-lang/crates.io-index)", + "openssl-probe 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "openssl-sys 0.9.54 (registry+https://github.com/rust-lang/crates.io-index)", + "schannel 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)", + "security-framework 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "security-framework-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", + "tempfile 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "net2" version = "0.2.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42550d9fb7b6684a6d404d9fa7250c2eb2646df731d1c06afc06dcee9e1bcf88" dependencies = [ - "cfg-if", - "libc", - "winapi 0.3.8", + "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "nix" version = "0.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50e4785f2c3b7589a0d0c1dd60285e1188adac4006e8abd6dd578e1567027363" dependencies = [ - "bitflags", - "cc", - "cfg-if", - "libc", - "void", + "bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "cc 1.0.50 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", + "void 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "node-cli" version = "2.0.0" dependencies = [ - "assert_cmd", - "browser-utils", - "frame-benchmarking-cli", - "frame-support", - "frame-system", - "futures 0.3.4", - "hex-literal", - "jsonrpc-core", - "log 0.4.8", - "nix", - "node-executor", - "node-inspect", - "node-primitives", - "node-rpc", - "node-runtime", - "node-transaction-factory", - "pallet-authority-discovery", - "pallet-balances", - "pallet-contracts", - "pallet-im-online", - "pallet-indices", - "pallet-timestamp", - "pallet-transaction-payment", - "parity-scale-codec", - "rand 0.7.3", - "sc-authority-discovery", - "sc-basic-authorship", - "sc-chain-spec", - "sc-cli", - "sc-client", - "sc-client-api", - "sc-client-db", - "sc-consensus-babe", - "sc-consensus-epochs", - "sc-finality-grandpa", - "sc-keystore", - "sc-network", - "sc-offchain", - "sc-rpc", - "sc-service", - "sc-service-test", - "sc-telemetry", - "sc-tracing", - "sc-transaction-pool", - "serde", - "sp-authority-discovery", - "sp-consensus", - "sp-consensus-babe", - "sp-core", - "sp-finality-grandpa", - "sp-finality-tracker", - "sp-inherents", - "sp-io", - "sp-keyring", - "sp-runtime", - "sp-timestamp", - "sp-transaction-pool", - "structopt", - "substrate-build-script-utils", - "tempfile", - "tracing", - "vergen", - "wasm-bindgen", - "wasm-bindgen-futures", + "assert_cmd 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)", + "browser-utils 0.8.0", + "frame-benchmarking-cli 2.0.0", + "frame-support 2.0.0", + "frame-system 2.0.0", + "futures 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "hex-literal 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "jsonrpc-core 14.0.5 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "nix 0.17.0 (registry+https://github.com/rust-lang/crates.io-index)", + "node-executor 2.0.0", + "node-inspect 0.8.0", + "node-primitives 2.0.0", + "node-rpc 2.0.0", + "node-runtime 2.0.0", + "node-transaction-factory 0.8.0", + "pallet-authority-discovery 2.0.0", + "pallet-balances 2.0.0", + "pallet-contracts 2.0.0", + "pallet-im-online 2.0.0", + "pallet-indices 2.0.0", + "pallet-timestamp 2.0.0", + "pallet-transaction-payment 2.0.0", + "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)", + "sc-authority-discovery 0.8.0", + "sc-basic-authorship 0.8.0", + "sc-chain-spec 2.0.0", + "sc-cli 0.8.0", + "sc-client 0.8.0", + "sc-client-api 2.0.0", + "sc-client-db 0.8.0", + "sc-consensus-babe 0.8.0", + "sc-consensus-epochs 0.8.0", + "sc-finality-grandpa 0.8.0", + "sc-keystore 2.0.0", + "sc-network 0.8.0", + "sc-offchain 2.0.0", + "sc-rpc 2.0.0", + "sc-service 0.8.0", + "sc-service-test 2.0.0", + "sc-telemetry 2.0.0", + "sc-tracing 2.0.0", + "sc-transaction-pool 2.0.0", + "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-authority-discovery 2.0.0", + "sp-consensus 0.8.0", + "sp-consensus-babe 0.8.0", + "sp-core 2.0.0", + "sp-finality-grandpa 2.0.0", + "sp-finality-tracker 2.0.0", + "sp-inherents 2.0.0", + "sp-io 2.0.0", + "sp-keyring 2.0.0", + "sp-runtime 2.0.0", + "sp-timestamp 2.0.0", + "sp-transaction-pool 2.0.0", + "structopt 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", + "substrate-build-script-utils 2.0.0", + "tempfile 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "tracing 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", + "vergen 3.0.4 (registry+https://github.com/rust-lang/crates.io-index)", + "wasm-bindgen 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", + "wasm-bindgen-futures 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "node-executor" version = "2.0.0" dependencies = [ - "criterion 0.3.1", - "frame-benchmarking", - "frame-support", - "frame-system", - "node-primitives", - "node-runtime", - "node-testing", - "pallet-balances", - "pallet-contracts", - "pallet-grandpa", - "pallet-im-online", - "pallet-indices", - "pallet-session", - "pallet-timestamp", - "pallet-transaction-payment", - "pallet-treasury", - "parity-scale-codec", - "sc-executor", - "sp-application-crypto", - "sp-core", - "sp-io", - "sp-runtime", - "sp-state-machine", - "sp-trie", - "substrate-test-client", - "trie-root", - "wabt", + "criterion 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "frame-benchmarking 2.0.0", + "frame-support 2.0.0", + "frame-system 2.0.0", + "node-primitives 2.0.0", + "node-runtime 2.0.0", + "node-testing 2.0.0", + "pallet-balances 2.0.0", + "pallet-contracts 2.0.0", + "pallet-grandpa 2.0.0", + "pallet-im-online 2.0.0", + "pallet-indices 2.0.0", + "pallet-session 2.0.0", + "pallet-timestamp 2.0.0", + "pallet-transaction-payment 2.0.0", + "pallet-treasury 2.0.0", + "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "sc-executor 0.8.0", + "sp-application-crypto 2.0.0", + "sp-core 2.0.0", + "sp-io 2.0.0", + "sp-runtime 2.0.0", + "sp-state-machine 0.8.0", + "sp-trie 2.0.0", + "substrate-test-client 2.0.0", + "trie-root 0.16.0 (registry+https://github.com/rust-lang/crates.io-index)", + "wabt 0.9.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "node-inspect" version = "0.8.0" dependencies = [ - "derive_more", - "log 0.4.8", - "parity-scale-codec", - "sc-cli", - "sc-client-api", - "sc-service", - "sp-blockchain", - "sp-core", - "sp-runtime", - "structopt", + "derive_more 0.99.3 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "sc-cli 0.8.0", + "sc-client-api 2.0.0", + "sc-service 0.8.0", + "sp-blockchain 2.0.0", + "sp-core 2.0.0", + "sp-runtime 2.0.0", + "structopt 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "node-primitives" version = "2.0.0" dependencies = [ - "pretty_assertions", - "sp-core", - "sp-runtime", - "sp-serializer", + "pretty_assertions 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-core 2.0.0", + "sp-runtime 2.0.0", + "sp-serializer 2.0.0", ] [[package]] name = "node-rpc" version = "2.0.0" dependencies = [ - "jsonrpc-core", - "node-primitives", - "node-runtime", - "pallet-contracts-rpc", - "pallet-transaction-payment-rpc", - "sc-client", - "sc-consensus-babe", - "sc-consensus-babe-rpc", - "sc-consensus-epochs", - "sc-keystore", - "sp-api", - "sp-blockchain", - "sp-consensus", - "sp-consensus-babe", - "sp-runtime", - "sp-transaction-pool", - "substrate-frame-rpc-system", + "jsonrpc-core 14.0.5 (registry+https://github.com/rust-lang/crates.io-index)", + "node-primitives 2.0.0", + "node-runtime 2.0.0", + "pallet-contracts-rpc 0.8.0", + "pallet-transaction-payment-rpc 2.0.0", + "sc-client 0.8.0", + "sc-consensus-babe 0.8.0", + "sc-consensus-babe-rpc 0.8.0", + "sc-consensus-epochs 0.8.0", + "sc-keystore 2.0.0", + "sp-api 2.0.0", + "sp-blockchain 2.0.0", + "sp-consensus 0.8.0", + "sp-consensus-babe 0.8.0", + "sp-runtime 2.0.0", + "sp-transaction-pool 2.0.0", + "substrate-frame-rpc-system 2.0.0", ] [[package]] name = "node-rpc-client" version = "2.0.0" dependencies = [ - "env_logger 0.7.1", - "futures 0.1.29", - "hyper 0.12.35", - "jsonrpc-core-client", - "log 0.4.8", - "node-primitives", - "sc-rpc", + "env_logger 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", + "hyper 0.12.35 (registry+https://github.com/rust-lang/crates.io-index)", + "jsonrpc-core-client 14.0.5 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "node-primitives 2.0.0", + "sc-rpc 2.0.0", ] [[package]] name = "node-runtime" version = "2.0.0" dependencies = [ - "frame-benchmarking", - "frame-executive", - "frame-support", - "frame-system", - "frame-system-rpc-runtime-api", - "integer-sqrt", - "node-primitives", - "pallet-authority-discovery", - "pallet-authorship", - "pallet-babe", - "pallet-balances", - "pallet-collective", - "pallet-contracts", - "pallet-contracts-primitives", - "pallet-contracts-rpc-runtime-api", - "pallet-democracy", - "pallet-elections-phragmen", - "pallet-finality-tracker", - "pallet-grandpa", - "pallet-identity", - "pallet-im-online", - "pallet-indices", - "pallet-membership", - "pallet-offences", - "pallet-randomness-collective-flip", - "pallet-recovery", - "pallet-session", - "pallet-society", - "pallet-staking", - "pallet-staking-reward-curve", - "pallet-sudo", - "pallet-timestamp", - "pallet-transaction-payment", - "pallet-transaction-payment-rpc-runtime-api", - "pallet-treasury", - "pallet-utility", - "pallet-vesting", - "parity-scale-codec", - "rustc-hex", - "serde", - "sp-api", - "sp-authority-discovery", - "sp-block-builder", - "sp-consensus-babe", - "sp-core", - "sp-inherents", - "sp-io", - "sp-keyring", - "sp-offchain", - "sp-runtime", - "sp-session", - "sp-staking", - "sp-std", - "sp-transaction-pool", - "sp-version", - "substrate-wasm-builder-runner", + "frame-benchmarking 2.0.0", + "frame-executive 2.0.0", + "frame-support 2.0.0", + "frame-system 2.0.0", + "frame-system-rpc-runtime-api 2.0.0", + "integer-sqrt 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", + "node-primitives 2.0.0", + "pallet-authority-discovery 2.0.0", + "pallet-authorship 2.0.0", + "pallet-babe 2.0.0", + "pallet-balances 2.0.0", + "pallet-collective 2.0.0", + "pallet-contracts 2.0.0", + "pallet-contracts-primitives 2.0.0", + "pallet-contracts-rpc-runtime-api 0.8.0", + "pallet-democracy 2.0.0", + "pallet-elections-phragmen 2.0.0", + "pallet-finality-tracker 2.0.0", + "pallet-grandpa 2.0.0", + "pallet-identity 2.0.0", + "pallet-im-online 2.0.0", + "pallet-indices 2.0.0", + "pallet-membership 2.0.0", + "pallet-offences 2.0.0", + "pallet-randomness-collective-flip 2.0.0", + "pallet-recovery 2.0.0", + "pallet-session 2.0.0", + "pallet-society 2.0.0", + "pallet-staking 2.0.0", + "pallet-staking-reward-curve 2.0.0", + "pallet-sudo 2.0.0", + "pallet-timestamp 2.0.0", + "pallet-transaction-payment 2.0.0", + "pallet-transaction-payment-rpc-runtime-api 2.0.0", + "pallet-treasury 2.0.0", + "pallet-utility 2.0.0", + "pallet-vesting 2.0.0", + "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "rustc-hex 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-api 2.0.0", + "sp-authority-discovery 2.0.0", + "sp-block-builder 2.0.0", + "sp-consensus-babe 0.8.0", + "sp-core 2.0.0", + "sp-inherents 2.0.0", + "sp-io 2.0.0", + "sp-keyring 2.0.0", + "sp-offchain 2.0.0", + "sp-runtime 2.0.0", + "sp-session 2.0.0", + "sp-staking 2.0.0", + "sp-std 2.0.0", + "sp-transaction-pool 2.0.0", + "sp-version 2.0.0", + "substrate-wasm-builder-runner 1.0.5", ] [[package]] name = "node-template" version = "2.0.0" dependencies = [ - "futures 0.3.4", - "log 0.4.8", - "node-template-runtime", - "sc-basic-authorship", - "sc-cli", - "sc-client", - "sc-consensus-aura", - "sc-executor", - "sc-finality-grandpa", - "sc-network", - "sc-service", - "sc-transaction-pool", - "sp-consensus", - "sp-consensus-aura", - "sp-core", - "sp-finality-grandpa", - "sp-inherents", - "sp-runtime", - "sp-transaction-pool", - "structopt", - "substrate-build-script-utils", - "vergen", + "futures 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "node-template-runtime 2.0.0", + "sc-basic-authorship 0.8.0", + "sc-cli 0.8.0", + "sc-client 0.8.0", + "sc-consensus-aura 0.8.0", + "sc-executor 0.8.0", + "sc-finality-grandpa 0.8.0", + "sc-network 0.8.0", + "sc-service 0.8.0", + "sc-transaction-pool 2.0.0", + "sp-consensus 0.8.0", + "sp-consensus-aura 0.8.0", + "sp-core 2.0.0", + "sp-finality-grandpa 2.0.0", + "sp-inherents 2.0.0", + "sp-runtime 2.0.0", + "sp-transaction-pool 2.0.0", + "structopt 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", + "substrate-build-script-utils 2.0.0", + "vergen 3.0.4 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "node-template-runtime" version = "2.0.0" dependencies = [ - "frame-executive", - "frame-support", - "frame-system", - "pallet-aura", - "pallet-balances", - "pallet-grandpa", - "pallet-indices", - "pallet-randomness-collective-flip", - "pallet-sudo", - "pallet-template", - "pallet-timestamp", - "pallet-transaction-payment", - "parity-scale-codec", - "serde", - "sp-api", - "sp-block-builder", - "sp-consensus-aura", - "sp-core", - "sp-inherents", - "sp-io", - "sp-offchain", - "sp-runtime", - "sp-session", - "sp-std", - "sp-transaction-pool", - "sp-version", - "substrate-wasm-builder-runner", + "frame-executive 2.0.0", + "frame-support 2.0.0", + "frame-system 2.0.0", + "pallet-aura 2.0.0", + "pallet-balances 2.0.0", + "pallet-grandpa 2.0.0", + "pallet-indices 2.0.0", + "pallet-randomness-collective-flip 2.0.0", + "pallet-sudo 2.0.0", + "pallet-template 2.0.0", + "pallet-timestamp 2.0.0", + "pallet-transaction-payment 2.0.0", + "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-api 2.0.0", + "sp-block-builder 2.0.0", + "sp-consensus-aura 0.8.0", + "sp-core 2.0.0", + "sp-inherents 2.0.0", + "sp-io 2.0.0", + "sp-offchain 2.0.0", + "sp-runtime 2.0.0", + "sp-session 2.0.0", + "sp-std 2.0.0", + "sp-transaction-pool 2.0.0", + "sp-version 2.0.0", + "substrate-wasm-builder-runner 1.0.5", ] [[package]] name = "node-testing" version = "2.0.0" dependencies = [ - "criterion 0.3.1", - "frame-support", - "frame-system", - "fs_extra", - "log 0.4.8", - "node-executor", - "node-primitives", - "node-runtime", - "pallet-balances", - "pallet-contracts", - "pallet-grandpa", - "pallet-indices", - "pallet-session", - "pallet-society", - "pallet-staking", - "pallet-timestamp", - "pallet-transaction-payment", - "pallet-treasury", - "parity-scale-codec", - "sc-cli", - "sc-client", - "sc-client-api", - "sc-client-db", - "sc-executor", - "sc-service", - "sp-api", - "sp-block-builder", - "sp-blockchain", - "sp-consensus", - "sp-core", - "sp-finality-tracker", - "sp-inherents", - "sp-io", - "sp-keyring", - "sp-runtime", - "sp-timestamp", - "substrate-test-client", - "tempdir", - "wabt", + "criterion 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "frame-support 2.0.0", + "frame-system 2.0.0", + "fs_extra 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "node-executor 2.0.0", + "node-primitives 2.0.0", + "node-runtime 2.0.0", + "pallet-balances 2.0.0", + "pallet-contracts 2.0.0", + "pallet-grandpa 2.0.0", + "pallet-indices 2.0.0", + "pallet-session 2.0.0", + "pallet-society 2.0.0", + "pallet-staking 2.0.0", + "pallet-timestamp 2.0.0", + "pallet-transaction-payment 2.0.0", + "pallet-treasury 2.0.0", + "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "sc-cli 0.8.0", + "sc-client 0.8.0", + "sc-client-api 2.0.0", + "sc-client-db 0.8.0", + "sc-executor 0.8.0", + "sc-service 0.8.0", + "sp-api 2.0.0", + "sp-block-builder 2.0.0", + "sp-blockchain 2.0.0", + "sp-consensus 0.8.0", + "sp-core 2.0.0", + "sp-finality-tracker 2.0.0", + "sp-inherents 2.0.0", + "sp-io 2.0.0", + "sp-keyring 2.0.0", + "sp-runtime 2.0.0", + "sp-timestamp 2.0.0", + "substrate-test-client 2.0.0", + "tempdir 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", + "wabt 0.9.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "node-transaction-factory" version = "0.8.0" dependencies = [ - "log 0.4.8", - "parity-scale-codec", - "sc-cli", - "sc-client", - "sc-client-api", - "sc-service", - "sp-api", - "sp-block-builder", - "sp-blockchain", - "sp-consensus", - "sp-core", - "sp-runtime", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "sc-cli 0.8.0", + "sc-client 0.8.0", + "sc-client-api 2.0.0", + "sc-service 0.8.0", + "sp-api 2.0.0", + "sp-block-builder 2.0.0", + "sp-blockchain 2.0.0", + "sp-consensus 0.8.0", + "sp-core 2.0.0", + "sp-runtime 2.0.0", ] [[package]] name = "nodrop" version = "0.1.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72ef4a56884ca558e5ddb05a1d1e7e1bfd9a68d9ed024c21704cc98872dae1bb" - -[[package]] -name = "nohash-hasher" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "721a2bf1c26159ebf17e0a980bc4ce61f4b2fec5ec3b42d42fddd7a84a9e538f" [[package]] name = "nohash-hasher" version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2bf50223579dc7cdcfb3bfcacf7069ff68243f8c363f62ffa99cf000a6b9c451" [[package]] name = "nom" version = "4.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2ad2a91a8e869eeb30b9cb3119ae87773a8f4ae617f41b1eb9c154b2905f7bd6" dependencies = [ - "memchr", - "version_check 0.1.5", + "memchr 2.3.2 (registry+https://github.com/rust-lang/crates.io-index)", + "version_check 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "num-bigint" version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "090c7f9998ee0ff65aa5b723e4009f7b217707f1fb5ea551329cc4d6231fb304" dependencies = [ - "autocfg 1.0.0", - "num-integer", - "num-traits", + "autocfg 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "num-integer 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)", + "num-traits 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "num-integer" version = "0.1.42" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f6ea62e9d81a77cd3ee9a2a5b9b609447857f3d358704331e4ef39eb247fcba" dependencies = [ - "autocfg 1.0.0", - "num-traits", + "autocfg 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "num-traits 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "num-rational" version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da4dc79f9e6c81bef96148c8f6b8e72ad4541caa4a24373e900a36da07de03a3" dependencies = [ - "autocfg 1.0.0", - "num-bigint", - "num-integer", - "num-traits", + "autocfg 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "num-bigint 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", + "num-integer 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)", + "num-traits 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "num-traits" version = "0.2.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c62be47e61d1842b9170f0fdeec8eba98e60e90e5446449a0545e5152acd7096" dependencies = [ - "autocfg 1.0.0", + "autocfg 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "num_cpus" version = "1.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46203554f085ff89c235cd12f7075f3233af9b11ed7c9e16dfe2560d03313ce6" dependencies = [ - "hermit-abi", - "libc", + "hermit-abi 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "ole32-sys" version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d2c49021782e5233cd243168edfa8037574afed4eba4bbaf538b3d8d1789d8c" dependencies = [ - "winapi 0.2.8", - "winapi-build", + "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "once_cell" version = "1.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1c601810575c99596d4afc46f78a678c80105117c379eb3650cf99b8a21ce5b" dependencies = [ - "parking_lot 0.9.0", + "parking_lot 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "oorandom" version = "11.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebcec7c9c2a95cacc7cd0ecb89d8a8454eca13906f6deb55258ffff0adeb9405" [[package]] name = "opaque-debug" version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2839e79665f131bdb5782e51f2c6c9599c133c6098982a54c794358bf432529c" [[package]] name = "openssl" version = "0.10.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "973293749822d7dd6370d6da1e523b0d1db19f06c459134c658b2a4261378b52" dependencies = [ - "bitflags", - "cfg-if", - "foreign-types", - "lazy_static", - "libc", - "openssl-sys", + "bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", + "foreign-types 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", + "openssl-sys 0.9.54 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "openssl-probe" version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77af24da69f9d9341038eba93a073b1fdaaa1b788221b00a69bce9e762cb32de" [[package]] name = "openssl-sys" version = "0.9.54" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1024c0a59774200a555087a6da3f253a9095a5f344e353b212ac4c8b8e450986" dependencies = [ - "autocfg 1.0.0", - "cc", - "libc", - "pkg-config", - "vcpkg", + "autocfg 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "cc 1.0.50 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", + "pkg-config 0.3.17 (registry+https://github.com/rust-lang/crates.io-index)", + "vcpkg 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "output_vt100" version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53cdc5b785b7a58c5aad8216b3dfa114df64b0b06ae6e1501cef91df2fbdf8f9" dependencies = [ - "winapi 0.3.8", + "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "owning_ref" version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49a4b8ea2179e6a2e27411d3bca09ca6dd630821cf6894c6c7c8467a8ee7ef13" dependencies = [ - "stable_deref_trait", + "stable_deref_trait 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "pallet-assets" version = "2.0.0" dependencies = [ - "frame-support", - "frame-system", - "parity-scale-codec", - "serde", - "sp-core", - "sp-io", - "sp-runtime", - "sp-std", + "frame-support 2.0.0", + "frame-system 2.0.0", + "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-core 2.0.0", + "sp-io 2.0.0", + "sp-runtime 2.0.0", + "sp-std 2.0.0", ] [[package]] name = "pallet-aura" version = "2.0.0" dependencies = [ - "frame-support", - "frame-system", - "lazy_static", - "pallet-session", - "pallet-timestamp", - "parity-scale-codec", - "parking_lot 0.10.0", - "serde", - "sp-application-crypto", - "sp-consensus-aura", - "sp-core", - "sp-inherents", - "sp-io", - "sp-runtime", - "sp-std", - "sp-timestamp", + "frame-support 2.0.0", + "frame-system 2.0.0", + "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "pallet-session 2.0.0", + "pallet-timestamp 2.0.0", + "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-application-crypto 2.0.0", + "sp-consensus-aura 0.8.0", + "sp-core 2.0.0", + "sp-inherents 2.0.0", + "sp-io 2.0.0", + "sp-runtime 2.0.0", + "sp-std 2.0.0", + "sp-timestamp 2.0.0", ] [[package]] name = "pallet-authority-discovery" version = "2.0.0" dependencies = [ - "frame-support", - "frame-system", - "pallet-session", - "parity-scale-codec", - "serde", - "sp-application-crypto", - "sp-authority-discovery", - "sp-core", - "sp-io", - "sp-runtime", - "sp-staking", - "sp-std", + "frame-support 2.0.0", + "frame-system 2.0.0", + "pallet-session 2.0.0", + "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-application-crypto 2.0.0", + "sp-authority-discovery 2.0.0", + "sp-core 2.0.0", + "sp-io 2.0.0", + "sp-runtime 2.0.0", + "sp-staking 2.0.0", + "sp-std 2.0.0", ] [[package]] name = "pallet-authorship" version = "2.0.0" dependencies = [ - "frame-support", - "frame-system", - "impl-trait-for-tuples", - "parity-scale-codec", - "sp-authorship", - "sp-core", - "sp-inherents", - "sp-io", - "sp-runtime", - "sp-std", + "frame-support 2.0.0", + "frame-system 2.0.0", + "impl-trait-for-tuples 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-authorship 2.0.0", + "sp-core 2.0.0", + "sp-inherents 2.0.0", + "sp-io 2.0.0", + "sp-runtime 2.0.0", + "sp-std 2.0.0", ] [[package]] name = "pallet-babe" version = "2.0.0" dependencies = [ - "frame-support", - "frame-system", - "hex-literal", - "lazy_static", - "pallet-session", - "pallet-timestamp", - "parity-scale-codec", - "parking_lot 0.10.0", - "serde", - "sp-consensus-babe", - "sp-core", - "sp-inherents", - "sp-io", - "sp-runtime", - "sp-staking", - "sp-std", - "sp-timestamp", - "sp-version", - "substrate-test-runtime", + "frame-support 2.0.0", + "frame-system 2.0.0", + "hex-literal 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "pallet-session 2.0.0", + "pallet-timestamp 2.0.0", + "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-consensus-babe 0.8.0", + "sp-core 2.0.0", + "sp-inherents 2.0.0", + "sp-io 2.0.0", + "sp-runtime 2.0.0", + "sp-staking 2.0.0", + "sp-std 2.0.0", + "sp-timestamp 2.0.0", + "sp-version 2.0.0", + "substrate-test-runtime 2.0.0", ] [[package]] name = "pallet-balances" version = "2.0.0" dependencies = [ - "frame-benchmarking", - "frame-support", - "frame-system", - "pallet-transaction-payment", - "parity-scale-codec", - "serde", - "sp-core", - "sp-io", - "sp-runtime", - "sp-std", + "frame-benchmarking 2.0.0", + "frame-support 2.0.0", + "frame-system 2.0.0", + "pallet-transaction-payment 2.0.0", + "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-core 2.0.0", + "sp-io 2.0.0", + "sp-runtime 2.0.0", + "sp-std 2.0.0", ] [[package]] name = "pallet-collective" version = "2.0.0" dependencies = [ - "frame-support", - "frame-system", - "hex-literal", - "pallet-balances", - "parity-scale-codec", - "serde", - "sp-core", - "sp-io", - "sp-runtime", - "sp-std", + "frame-support 2.0.0", + "frame-system 2.0.0", + "hex-literal 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "pallet-balances 2.0.0", + "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-core 2.0.0", + "sp-io 2.0.0", + "sp-runtime 2.0.0", + "sp-std 2.0.0", ] [[package]] name = "pallet-contracts" version = "2.0.0" dependencies = [ - "assert_matches", - "frame-support", - "frame-system", - "hex-literal", - "pallet-balances", - "pallet-contracts-primitives", - "pallet-randomness-collective-flip", - "pallet-timestamp", - "parity-scale-codec", - "parity-wasm 0.41.0", - "pwasm-utils", - "serde", - "sp-core", - "sp-io", - "sp-runtime", - "sp-sandbox", - "sp-std", - "wabt", - "wasmi-validation", + "assert_matches 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "frame-support 2.0.0", + "frame-system 2.0.0", + "hex-literal 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "pallet-balances 2.0.0", + "pallet-contracts-primitives 2.0.0", + "pallet-randomness-collective-flip 2.0.0", + "pallet-timestamp 2.0.0", + "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-wasm 0.41.0 (registry+https://github.com/rust-lang/crates.io-index)", + "pwasm-utils 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-core 2.0.0", + "sp-io 2.0.0", + "sp-runtime 2.0.0", + "sp-sandbox 0.8.0", + "sp-std 2.0.0", + "wabt 0.9.2 (registry+https://github.com/rust-lang/crates.io-index)", + "wasmi-validation 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "pallet-contracts-primitives" version = "2.0.0" dependencies = [ - "parity-scale-codec", - "sp-runtime", - "sp-std", + "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-runtime 2.0.0", + "sp-std 2.0.0", ] [[package]] name = "pallet-contracts-rpc" version = "0.8.0" dependencies = [ - "jsonrpc-core", - "jsonrpc-core-client", - "jsonrpc-derive", - "pallet-contracts-primitives", - "pallet-contracts-rpc-runtime-api", - "parity-scale-codec", - "serde", - "serde_json", - "sp-api", - "sp-blockchain", - "sp-core", - "sp-rpc", - "sp-runtime", + "jsonrpc-core 14.0.5 (registry+https://github.com/rust-lang/crates.io-index)", + "jsonrpc-core-client 14.0.5 (registry+https://github.com/rust-lang/crates.io-index)", + "jsonrpc-derive 14.0.5 (registry+https://github.com/rust-lang/crates.io-index)", + "pallet-contracts-primitives 2.0.0", + "pallet-contracts-rpc-runtime-api 0.8.0", + "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_json 1.0.48 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-api 2.0.0", + "sp-blockchain 2.0.0", + "sp-core 2.0.0", + "sp-rpc 2.0.0", + "sp-runtime 2.0.0", ] [[package]] name = "pallet-contracts-rpc-runtime-api" version = "0.8.0" dependencies = [ - "pallet-contracts-primitives", - "parity-scale-codec", - "sp-api", - "sp-runtime", - "sp-std", + "pallet-contracts-primitives 2.0.0", + "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-api 2.0.0", + "sp-runtime 2.0.0", + "sp-std 2.0.0", ] [[package]] name = "pallet-democracy" version = "2.0.0" dependencies = [ - "frame-support", - "frame-system", - "hex-literal", - "pallet-balances", - "parity-scale-codec", - "serde", - "sp-core", - "sp-io", - "sp-runtime", - "sp-std", - "sp-storage", + "frame-support 2.0.0", + "frame-system 2.0.0", + "hex-literal 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "pallet-balances 2.0.0", + "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-core 2.0.0", + "sp-io 2.0.0", + "sp-runtime 2.0.0", + "sp-std 2.0.0", + "sp-storage 2.0.0", ] [[package]] name = "pallet-elections" version = "2.0.0" dependencies = [ - "frame-support", - "frame-system", - "hex-literal", - "pallet-balances", - "parity-scale-codec", - "serde", - "sp-core", - "sp-io", - "sp-runtime", - "sp-std", + "frame-support 2.0.0", + "frame-system 2.0.0", + "hex-literal 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "pallet-balances 2.0.0", + "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-core 2.0.0", + "sp-io 2.0.0", + "sp-runtime 2.0.0", + "sp-std 2.0.0", ] [[package]] name = "pallet-elections-phragmen" version = "2.0.0" dependencies = [ - "frame-support", - "frame-system", - "hex-literal", - "pallet-balances", - "parity-scale-codec", - "serde", - "sp-core", - "sp-io", - "sp-phragmen", - "sp-runtime", - "sp-std", - "substrate-test-utils", + "frame-support 2.0.0", + "frame-system 2.0.0", + "hex-literal 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "pallet-balances 2.0.0", + "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-core 2.0.0", + "sp-io 2.0.0", + "sp-phragmen 2.0.0", + "sp-runtime 2.0.0", + "sp-std 2.0.0", + "substrate-test-utils 2.0.0", ] [[package]] name = "pallet-evm" version = "2.0.0" dependencies = [ - "evm", - "frame-support", - "frame-system", - "pallet-balances", - "pallet-timestamp", - "parity-scale-codec", - "primitive-types", - "rlp", - "serde", - "sha3", - "sp-core", - "sp-io", - "sp-runtime", - "sp-std", + "evm 0.15.0 (registry+https://github.com/rust-lang/crates.io-index)", + "frame-support 2.0.0", + "frame-system 2.0.0", + "pallet-balances 2.0.0", + "pallet-timestamp 2.0.0", + "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "primitive-types 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", + "rlp 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", + "sha3 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-core 2.0.0", + "sp-io 2.0.0", + "sp-runtime 2.0.0", + "sp-std 2.0.0", ] [[package]] name = "pallet-example" version = "2.0.0" dependencies = [ - "frame-support", - "frame-system", - "pallet-balances", - "parity-scale-codec", - "serde", - "sp-core", - "sp-io", - "sp-runtime", - "sp-std", + "frame-support 2.0.0", + "frame-system 2.0.0", + "pallet-balances 2.0.0", + "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-core 2.0.0", + "sp-io 2.0.0", + "sp-runtime 2.0.0", + "sp-std 2.0.0", ] [[package]] name = "pallet-example-offchain-worker" version = "2.0.0" dependencies = [ - "frame-support", - "frame-system", - "parity-scale-codec", - "serde", - "serde_json", - "sp-core", - "sp-io", - "sp-runtime", - "sp-std", + "frame-support 2.0.0", + "frame-system 2.0.0", + "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_json 1.0.48 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-core 2.0.0", + "sp-io 2.0.0", + "sp-runtime 2.0.0", + "sp-std 2.0.0", ] [[package]] name = "pallet-finality-tracker" version = "2.0.0" dependencies = [ - "frame-support", - "frame-system", - "impl-trait-for-tuples", - "parity-scale-codec", - "serde", - "sp-core", - "sp-finality-tracker", - "sp-inherents", - "sp-io", - "sp-runtime", - "sp-std", + "frame-support 2.0.0", + "frame-system 2.0.0", + "impl-trait-for-tuples 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-core 2.0.0", + "sp-finality-tracker 2.0.0", + "sp-inherents 2.0.0", + "sp-io 2.0.0", + "sp-runtime 2.0.0", + "sp-std 2.0.0", ] [[package]] name = "pallet-generic-asset" version = "2.0.0" dependencies = [ - "frame-support", - "frame-system", - "parity-scale-codec", - "serde", - "sp-core", - "sp-io", - "sp-runtime", - "sp-std", + "frame-support 2.0.0", + "frame-system 2.0.0", + "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-core 2.0.0", + "sp-io 2.0.0", + "sp-runtime 2.0.0", + "sp-std 2.0.0", ] [[package]] name = "pallet-grandpa" version = "2.0.0" dependencies = [ - "frame-support", - "frame-system", - "pallet-finality-tracker", - "pallet-session", - "parity-scale-codec", - "serde", - "sp-core", - "sp-finality-grandpa", - "sp-io", - "sp-runtime", - "sp-staking", - "sp-std", + "frame-support 2.0.0", + "frame-system 2.0.0", + "pallet-finality-tracker 2.0.0", + "pallet-session 2.0.0", + "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-core 2.0.0", + "sp-finality-grandpa 2.0.0", + "sp-io 2.0.0", + "sp-runtime 2.0.0", + "sp-staking 2.0.0", + "sp-std 2.0.0", ] [[package]] name = "pallet-identity" version = "2.0.0" dependencies = [ - "enumflags2", - "frame-benchmarking", - "frame-support", - "frame-system", - "pallet-balances", - "parity-scale-codec", - "serde", - "sp-core", - "sp-io", - "sp-runtime", - "sp-std", + "enumflags2 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", + "frame-benchmarking 2.0.0", + "frame-support 2.0.0", + "frame-system 2.0.0", + "pallet-balances 2.0.0", + "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-core 2.0.0", + "sp-io 2.0.0", + "sp-runtime 2.0.0", + "sp-std 2.0.0", ] [[package]] name = "pallet-im-online" version = "2.0.0" dependencies = [ - "frame-support", - "frame-system", - "pallet-authorship", - "pallet-session", - "parity-scale-codec", - "serde", - "sp-application-crypto", - "sp-core", - "sp-io", - "sp-runtime", - "sp-staking", - "sp-std", + "frame-support 2.0.0", + "frame-system 2.0.0", + "pallet-authorship 2.0.0", + "pallet-session 2.0.0", + "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-application-crypto 2.0.0", + "sp-core 2.0.0", + "sp-io 2.0.0", + "sp-runtime 2.0.0", + "sp-staking 2.0.0", + "sp-std 2.0.0", ] [[package]] name = "pallet-indices" version = "2.0.0" dependencies = [ - "frame-support", - "frame-system", - "pallet-balances", - "parity-scale-codec", - "serde", - "sp-core", - "sp-io", - "sp-keyring", - "sp-runtime", - "sp-std", + "frame-support 2.0.0", + "frame-system 2.0.0", + "pallet-balances 2.0.0", + "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-core 2.0.0", + "sp-io 2.0.0", + "sp-keyring 2.0.0", + "sp-runtime 2.0.0", + "sp-std 2.0.0", ] [[package]] name = "pallet-membership" version = "2.0.0" dependencies = [ - "frame-support", - "frame-system", - "parity-scale-codec", - "serde", - "sp-core", - "sp-io", - "sp-runtime", - "sp-std", + "frame-support 2.0.0", + "frame-system 2.0.0", + "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-core 2.0.0", + "sp-io 2.0.0", + "sp-runtime 2.0.0", + "sp-std 2.0.0", ] [[package]] name = "pallet-nicks" version = "2.0.0" dependencies = [ - "frame-support", - "frame-system", - "pallet-balances", - "parity-scale-codec", - "serde", - "sp-core", - "sp-io", - "sp-runtime", - "sp-std", + "frame-support 2.0.0", + "frame-system 2.0.0", + "pallet-balances 2.0.0", + "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-core 2.0.0", + "sp-io 2.0.0", + "sp-runtime 2.0.0", + "sp-std 2.0.0", ] [[package]] name = "pallet-offences" version = "2.0.0" dependencies = [ - "frame-support", - "frame-system", - "pallet-balances", - "parity-scale-codec", - "serde", - "sp-core", - "sp-io", - "sp-runtime", - "sp-staking", - "sp-std", + "frame-support 2.0.0", + "frame-system 2.0.0", + "pallet-balances 2.0.0", + "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-core 2.0.0", + "sp-io 2.0.0", + "sp-runtime 2.0.0", + "sp-staking 2.0.0", + "sp-std 2.0.0", ] [[package]] name = "pallet-randomness-collective-flip" version = "2.0.0" dependencies = [ - "frame-support", - "frame-system", - "parity-scale-codec", - "safe-mix", - "sp-core", - "sp-io", - "sp-runtime", - "sp-std", + "frame-support 2.0.0", + "frame-system 2.0.0", + "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "safe-mix 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-core 2.0.0", + "sp-io 2.0.0", + "sp-runtime 2.0.0", + "sp-std 2.0.0", ] [[package]] name = "pallet-recovery" version = "2.0.0" dependencies = [ - "enumflags2", - "frame-support", - "frame-system", - "pallet-balances", - "parity-scale-codec", - "serde", - "sp-core", - "sp-io", - "sp-runtime", - "sp-std", + "enumflags2 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", + "frame-support 2.0.0", + "frame-system 2.0.0", + "pallet-balances 2.0.0", + "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-core 2.0.0", + "sp-io 2.0.0", + "sp-runtime 2.0.0", + "sp-std 2.0.0", ] [[package]] name = "pallet-scored-pool" version = "2.0.0" dependencies = [ - "frame-support", - "frame-system", - "pallet-balances", - "parity-scale-codec", - "serde", - "sp-core", - "sp-io", - "sp-runtime", - "sp-std", + "frame-support 2.0.0", + "frame-system 2.0.0", + "pallet-balances 2.0.0", + "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-core 2.0.0", + "sp-io 2.0.0", + "sp-runtime 2.0.0", + "sp-std 2.0.0", ] [[package]] name = "pallet-session" version = "2.0.0" dependencies = [ - "frame-support", - "frame-system", - "impl-trait-for-tuples", - "lazy_static", - "pallet-timestamp", - "parity-scale-codec", - "serde", - "sp-application-crypto", - "sp-core", - "sp-io", - "sp-runtime", - "sp-staking", - "sp-std", - "sp-trie", + "frame-support 2.0.0", + "frame-system 2.0.0", + "impl-trait-for-tuples 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "pallet-timestamp 2.0.0", + "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-application-crypto 2.0.0", + "sp-core 2.0.0", + "sp-io 2.0.0", + "sp-runtime 2.0.0", + "sp-staking 2.0.0", + "sp-std 2.0.0", + "sp-trie 2.0.0", ] [[package]] name = "pallet-society" version = "2.0.0" dependencies = [ - "frame-support", - "frame-system", - "pallet-balances", - "parity-scale-codec", - "rand_chacha 0.2.1", - "serde", - "sp-core", - "sp-io", - "sp-runtime", - "sp-std", + "frame-support 2.0.0", + "frame-system 2.0.0", + "pallet-balances 2.0.0", + "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_chacha 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-core 2.0.0", + "sp-io 2.0.0", + "sp-runtime 2.0.0", + "sp-std 2.0.0", ] [[package]] name = "pallet-staking" version = "2.0.0" dependencies = [ - "frame-support", - "frame-system", - "pallet-authorship", - "pallet-balances", - "pallet-session", - "pallet-staking-reward-curve", - "pallet-timestamp", - "parity-scale-codec", - "serde", - "sp-core", - "sp-io", - "sp-keyring", - "sp-phragmen", - "sp-runtime", - "sp-staking", - "sp-std", - "substrate-test-utils", + "frame-support 2.0.0", + "frame-system 2.0.0", + "pallet-authorship 2.0.0", + "pallet-balances 2.0.0", + "pallet-session 2.0.0", + "pallet-staking-reward-curve 2.0.0", + "pallet-timestamp 2.0.0", + "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-core 2.0.0", + "sp-io 2.0.0", + "sp-keyring 2.0.0", + "sp-phragmen 2.0.0", + "sp-runtime 2.0.0", + "sp-staking 2.0.0", + "sp-std 2.0.0", + "substrate-test-utils 2.0.0", ] [[package]] name = "pallet-staking-reward-curve" version = "2.0.0" dependencies = [ - "proc-macro-crate", - "proc-macro2 1.0.8", - "quote 1.0.2", - "sp-runtime", - "syn", + "proc-macro-crate 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-runtime 2.0.0", + "syn 1.0.14 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "pallet-sudo" version = "2.0.0" dependencies = [ - "frame-support", - "frame-system", - "parity-scale-codec", - "serde", - "sp-core", - "sp-io", - "sp-runtime", - "sp-std", + "frame-support 2.0.0", + "frame-system 2.0.0", + "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-core 2.0.0", + "sp-io 2.0.0", + "sp-runtime 2.0.0", + "sp-std 2.0.0", ] [[package]] name = "pallet-template" version = "2.0.0" dependencies = [ - "frame-support", - "frame-system", - "parity-scale-codec", - "safe-mix", - "sp-core", - "sp-io", - "sp-runtime", + "frame-support 2.0.0", + "frame-system 2.0.0", + "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "safe-mix 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-core 2.0.0", + "sp-io 2.0.0", + "sp-runtime 2.0.0", ] [[package]] name = "pallet-timestamp" version = "2.0.0" dependencies = [ - "frame-benchmarking", - "frame-support", - "frame-system", - "impl-trait-for-tuples", - "parity-scale-codec", - "serde", - "sp-core", - "sp-inherents", - "sp-io", - "sp-runtime", - "sp-std", - "sp-timestamp", + "frame-benchmarking 2.0.0", + "frame-support 2.0.0", + "frame-system 2.0.0", + "impl-trait-for-tuples 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-core 2.0.0", + "sp-inherents 2.0.0", + "sp-io 2.0.0", + "sp-runtime 2.0.0", + "sp-std 2.0.0", + "sp-timestamp 2.0.0", ] [[package]] name = "pallet-transaction-payment" version = "2.0.0" dependencies = [ - "frame-support", - "frame-system", - "pallet-balances", - "pallet-transaction-payment-rpc-runtime-api", - "parity-scale-codec", - "sp-core", - "sp-io", - "sp-runtime", - "sp-std", + "frame-support 2.0.0", + "frame-system 2.0.0", + "pallet-balances 2.0.0", + "pallet-transaction-payment-rpc-runtime-api 2.0.0", + "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-core 2.0.0", + "sp-io 2.0.0", + "sp-runtime 2.0.0", + "sp-std 2.0.0", ] [[package]] name = "pallet-transaction-payment-rpc" version = "2.0.0" dependencies = [ - "jsonrpc-core", - "jsonrpc-core-client", - "jsonrpc-derive", - "pallet-transaction-payment-rpc-runtime-api", - "parity-scale-codec", - "serde", - "sp-api", - "sp-blockchain", - "sp-core", - "sp-rpc", - "sp-runtime", + "jsonrpc-core 14.0.5 (registry+https://github.com/rust-lang/crates.io-index)", + "jsonrpc-core-client 14.0.5 (registry+https://github.com/rust-lang/crates.io-index)", + "jsonrpc-derive 14.0.5 (registry+https://github.com/rust-lang/crates.io-index)", + "pallet-transaction-payment-rpc-runtime-api 2.0.0", + "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-api 2.0.0", + "sp-blockchain 2.0.0", + "sp-core 2.0.0", + "sp-rpc 2.0.0", + "sp-runtime 2.0.0", ] [[package]] name = "pallet-transaction-payment-rpc-runtime-api" version = "2.0.0" dependencies = [ - "frame-support", - "parity-scale-codec", - "serde", - "serde_json", - "sp-api", - "sp-runtime", - "sp-std", + "frame-support 2.0.0", + "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_json 1.0.48 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-api 2.0.0", + "sp-runtime 2.0.0", + "sp-std 2.0.0", ] [[package]] name = "pallet-treasury" version = "2.0.0" dependencies = [ - "frame-support", - "frame-system", - "pallet-balances", - "parity-scale-codec", - "serde", - "sp-core", - "sp-io", - "sp-runtime", - "sp-std", + "frame-support 2.0.0", + "frame-system 2.0.0", + "pallet-balances 2.0.0", + "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-core 2.0.0", + "sp-io 2.0.0", + "sp-runtime 2.0.0", + "sp-std 2.0.0", ] [[package]] name = "pallet-utility" version = "2.0.0" dependencies = [ - "frame-support", - "frame-system", - "pallet-balances", - "parity-scale-codec", - "serde", - "sp-core", - "sp-io", - "sp-runtime", - "sp-std", + "frame-support 2.0.0", + "frame-system 2.0.0", + "pallet-balances 2.0.0", + "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-core 2.0.0", + "sp-io 2.0.0", + "sp-runtime 2.0.0", + "sp-std 2.0.0", ] [[package]] name = "pallet-vesting" version = "2.0.0" dependencies = [ - "enumflags2", - "frame-support", - "frame-system", - "hex-literal", - "pallet-balances", - "parity-scale-codec", - "serde", - "sp-core", - "sp-io", - "sp-runtime", - "sp-std", - "sp-storage", + "enumflags2 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", + "frame-support 2.0.0", + "frame-system 2.0.0", + "hex-literal 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "pallet-balances 2.0.0", + "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-core 2.0.0", + "sp-io 2.0.0", + "sp-runtime 2.0.0", + "sp-std 2.0.0", + "sp-storage 2.0.0", ] [[package]] name = "parity-bytes" version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c276d76c5333b8c2579e02d49a06733a55b8282d2d9b13e8d53b6406bd7e30a" [[package]] name = "parity-multiaddr" version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "045b3c7af871285146300da35b1932bb6e4639b66c7c98e85d06a32cbc4e8fa7" dependencies = [ - "arrayref", - "bs58 0.2.5", - "byteorder 1.3.4", - "bytes 0.4.12", - "data-encoding", - "parity-multihash 0.1.3", - "percent-encoding 1.0.1", - "serde", - "unsigned-varint 0.2.3", - "url 1.7.2", + "arrayref 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", + "bs58 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", + "data-encoding 2.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-multihash 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", + "percent-encoding 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", + "unsigned-varint 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", + "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "parity-multiaddr" version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26df883298bc3f4e92528b4c5cc9f806b791955b136da3e5e939ed9de0fd958b" dependencies = [ - "arrayref", - "bs58 0.3.0", - "byteorder 1.3.4", - "data-encoding", - "parity-multihash 0.2.3", - "percent-encoding 2.1.0", - "serde", - "static_assertions", - "unsigned-varint 0.3.0", - "url 2.1.1", + "arrayref 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", + "bs58 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "data-encoding 2.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-multihash 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", + "percent-encoding 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", + "static_assertions 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "unsigned-varint 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "url 2.1.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "parity-multihash" version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df3a17dc27848fd99e4f87eb0f8c9baba6ede0a6d555400c850ca45254ef4ce3" dependencies = [ - "blake2", - "bytes 0.4.12", - "rand 0.6.5", - "sha-1", - "sha2", - "sha3", - "unsigned-varint 0.2.3", + "blake2 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", + "sha-1 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)", + "sha2 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", + "sha3 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)", + "unsigned-varint 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "parity-multihash" version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a1cd2ba02391b81367bec529fb209019d718684fdc8ad6a712c2b536e46f775" dependencies = [ - "blake2", - "bytes 0.5.4", - "rand 0.7.3", - "sha-1", - "sha2", - "sha3", - "unsigned-varint 0.3.0", + "blake2 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes 0.5.4 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)", + "sha-1 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)", + "sha2 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", + "sha3 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)", + "unsigned-varint 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "parity-scale-codec" version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f747c06d9f3b2ad387ac881b9667298c81b1243aa9833f086e05996937c35507" dependencies = [ - "arrayvec 0.5.1", - "bitvec", - "byte-slice-cast", - "parity-scale-codec-derive", - "serde", + "arrayvec 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", + "bitvec 0.15.2 (registry+https://github.com/rust-lang/crates.io-index)", + "byte-slice-cast 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-scale-codec-derive 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "parity-scale-codec-derive" version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34e513ff3e406f3ede6796dcdc83d0b32ffb86668cea1ccf7363118abeb00476" dependencies = [ - "proc-macro-crate", - "proc-macro2 1.0.8", - "quote 1.0.2", - "syn", + "proc-macro-crate 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 1.0.14 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "parity-send-wrapper" version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa9777aa91b8ad9dd5aaa04a9b6bcb02c7f1deb952fca5a66034d5e63afc5c6f" [[package]] name = "parity-util-mem" version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef1476e40bf8f5c6776e9600983435821ca86eb9819d74a6207cca69d091406a" dependencies = [ - "cfg-if", - "impl-trait-for-tuples", - "parity-util-mem-derive", - "parking_lot 0.10.0", - "primitive-types", - "smallvec 1.2.0", - "winapi 0.3.8", + "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", + "impl-trait-for-tuples 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-util-mem-derive 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", + "primitive-types 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", + "smallvec 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "parity-util-mem-derive" version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f557c32c6d268a07c921471619c0295f5efad3a0e76d4f97a05c091a51d110b2" dependencies = [ - "proc-macro2 1.0.8", - "syn", - "synstructure", + "proc-macro2 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 1.0.14 (registry+https://github.com/rust-lang/crates.io-index)", + "synstructure 0.12.3 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "parity-wasm" version = "0.32.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16ad52817c4d343339b3bc2e26861bd21478eda0b7509acf83505727000512ac" dependencies = [ - "byteorder 1.3.4", + "byteorder 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "parity-wasm" version = "0.41.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ddfc878dac00da22f8f61e7af3157988424567ab01d9920b962ef7dcbd7cd865" [[package]] name = "parking_lot" version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f842b1982eb6c2fe34036a4fbfb06dd185a3f5c8edfaacdf7d1ea10b07de6252" dependencies = [ - "lock_api", - "parking_lot_core 0.6.2", - "rustc_version", + "lock_api 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot_core 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", + "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "parking_lot" version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92e98c49ab0b7ce5b222f2cc9193fc4efe11c6d0bd4f648e374684a6857b1cfc" dependencies = [ - "lock_api", - "parking_lot_core 0.7.0", + "lock_api 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot_core 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "parking_lot_core" version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b876b1b9e7ac6e1a74a6da34d25c42e17e8862aa409cbbbdcfc8d86c6f3bc62b" dependencies = [ - "cfg-if", - "cloudabi", - "libc", - "redox_syscall", - "rustc_version", - "smallvec 0.6.13", - "winapi 0.3.8", + "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", + "cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", + "redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)", + "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", + "smallvec 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "parking_lot_core" version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7582838484df45743c8434fbff785e8edf260c28748353d44bc0da32e0ceabf1" dependencies = [ - "cfg-if", - "cloudabi", - "libc", - "redox_syscall", - "smallvec 1.2.0", - "winapi 0.3.8", + "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", + "cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", + "redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)", + "smallvec 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "paste" version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "423a519e1c6e828f1e73b720f9d9ed2fa643dce8a7737fb43235ce0b41eeaa49" dependencies = [ - "paste-impl", - "proc-macro-hack", + "paste-impl 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro-hack 0.5.11 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "paste-impl" version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4214c9e912ef61bf42b81ba9a47e8aad1b2ffaf739ab162bf96d1e011f54e6c5" dependencies = [ - "proc-macro-hack", - "proc-macro2 1.0.8", - "quote 1.0.2", - "syn", + "proc-macro-hack 0.5.11 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 1.0.14 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "pbkdf2" version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "006c038a43a45995a9670da19e67600114740e8511d4333bf97a56e66a7542d9" dependencies = [ - "byteorder 1.3.4", - "crypto-mac", + "byteorder 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "crypto-mac 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "pdqselect" version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ec91767ecc0a0bbe558ce8c9da33c068066c57ecc8bb8477ef8c1ad3ef77c27" [[package]] name = "peeking_take_while" version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19b17cddbe7ec3f8bc800887bab5e717348c95ea2ca0b1bf0837fb964dc67099" [[package]] name = "percent-encoding" version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31010dd2e1ac33d5b46a5b413495239882813e0369f8ed8a5e266f173602f831" [[package]] name = "percent-encoding" version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4fd5641d01c8f18a23da7b6fe29298ff4b55afcccdf78973b24cf3175fee32e" [[package]] name = "petgraph" version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29c127eea4a29ec6c85d153c59dc1213f33ec74cead30fe4730aecc88cc1fd92" dependencies = [ - "fixedbitset", - "indexmap", + "fixedbitset 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "indexmap 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "pin-project" version = "0.4.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7804a463a8d9572f13453c516a5faea534a2403d7ced2f0c7e100eeff072772c" dependencies = [ - "pin-project-internal", + "pin-project-internal 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "pin-project-internal" version = "0.4.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "385322a45f2ecf3410c68d2a549a4a2685e8051d0f278e39743ff4e451cb9b3f" dependencies = [ - "proc-macro2 1.0.8", - "quote 1.0.2", - "syn", + "proc-macro2 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 1.0.14 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "pin-project-lite" version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "237844750cfbb86f67afe27eee600dfbbcb6188d734139b534cbfbf4f96792ae" [[package]] name = "pin-utils" version = "0.1.0-alpha.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5894c618ce612a3fa23881b152b608bafb8c56cfc22f434a3ba3120b40f7b587" [[package]] name = "pkg-config" version = "0.3.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05da548ad6865900e60eaba7f589cc0783590a92e940c26953ff81ddbab2d677" [[package]] name = "plain" version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4596b6d070b27117e987119b4dac604f3c58cfb0b191112e24771b2faeac1a6" [[package]] name = "plotters" version = "0.2.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e3bb8da247d27ae212529352020f3e5ee16e83c0c258061d27b08ab92675eeb" dependencies = [ - "js-sys", - "num-traits", - "wasm-bindgen", - "web-sys", + "js-sys 0.3.35 (registry+https://github.com/rust-lang/crates.io-index)", + "num-traits 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", + "wasm-bindgen 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", + "web-sys 0.3.35 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "ppv-lite86" version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74490b50b9fbe561ac330df47c08f3f33073d2d00c150f719147d7c54522fa1b" [[package]] name = "predicates" version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9bfe52247e5cc9b2f943682a85a5549fb9662245caf094504e69a2f03fe64d4" dependencies = [ - "difference", - "predicates-core", + "difference 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "predicates-core 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "predicates-core" version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06075c3a3e92559ff8929e7a280684489ea27fe44805174c3ebd9328dcb37178" [[package]] name = "predicates-tree" version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e63c4859013b38a76eca2414c64911fba30def9e3202ac461a2d22831220124" dependencies = [ - "predicates-core", - "treeline", + "predicates-core 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "treeline 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "pretty_assertions" version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f81e1644e1b54f5a68959a29aa86cde704219254669da328ecfdf6a1f09d427" dependencies = [ - "ansi_term 0.11.0", - "ctor", - "difference", - "output_vt100", + "ansi_term 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", + "ctor 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", + "difference 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "output_vt100 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "primitive-types" version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e4336f4f5d5524fa60bcbd6fe626f9223d8142a50e7053e979acdf0da41ab975" dependencies = [ - "fixed-hash", - "impl-codec", - "impl-rlp", - "impl-serde 0.3.0", - "uint", + "fixed-hash 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)", + "impl-codec 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", + "impl-rlp 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "impl-serde 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "uint 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "proc-macro-crate" version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e10d4b51f154c8a7fb96fd6dad097cb74b863943ec010ac94b9fd1be8861fe1e" dependencies = [ - "toml", + "toml 0.5.6 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "proc-macro-error" -version = "0.4.8" +version = "0.4.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "875077759af22fa20b610ad4471d8155b321c89c3f2785526c9839b099be4e0a" dependencies = [ - "proc-macro-error-attr", - "proc-macro2 1.0.8", - "quote 1.0.2", - "rustversion", - "syn", + "proc-macro-error-attr 0.4.9 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "rustversion 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 1.0.14 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "proc-macro-error-attr" -version = "0.4.8" +version = "0.4.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5717d9fa2664351a01ed73ba5ef6df09c01a521cb42cb65a061432a826f3c7a" dependencies = [ - "proc-macro2 1.0.8", - "quote 1.0.2", - "rustversion", - "syn", - "syn-mid", + "proc-macro2 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "rustversion 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 1.0.14 (registry+https://github.com/rust-lang/crates.io-index)", + "syn-mid 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "proc-macro-hack" version = "0.5.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ecd45702f76d6d3c75a80564378ae228a85f0b59d2f3ed43c91b4a69eb2ebfc5" dependencies = [ - "proc-macro2 1.0.8", - "quote 1.0.2", - "syn", + "proc-macro2 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 1.0.14 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "proc-macro-nested" version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "369a6ed065f249a159e06c45752c780bda2fb53c995718f9e484d08daa9eb42e" [[package]] name = "proc-macro2" version = "0.4.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf3d2011ab5c909338f7887f4fc896d35932e29146c12c8d01da6b22a80ba759" dependencies = [ - "unicode-xid 0.1.0", + "unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "proc-macro2" version = "1.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3acb317c6ff86a4e579dfa00fc5e6cca91ecbb4e7eb2df0468805b674eb88548" dependencies = [ - "unicode-xid 0.2.0", + "unicode-xid 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "prometheus" version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5567486d5778e2c6455b1b90ff1c558f29e751fc018130fa182e15828e728af1" dependencies = [ - "cfg-if", - "fnv", - "lazy_static", - "protobuf", - "quick-error", - "spin", + "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", + "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "protobuf 2.10.1 (registry+https://github.com/rust-lang/crates.io-index)", + "quick-error 1.2.3 (registry+https://github.com/rust-lang/crates.io-index)", + "spin 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "prometheus-exporter" version = "0.8.0" dependencies = [ - "async-std", - "derive_more", - "futures-util", - "hyper 0.13.2", - "log 0.4.8", - "prometheus", - "tokio 0.2.11", + "async-std 1.5.0 (registry+https://github.com/rust-lang/crates.io-index)", + "derive_more 0.99.3 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-util 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "hyper 0.13.2 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "prometheus 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "prost" version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce49aefe0a6144a45de32927c77bd2859a5f7677b55f220ae5b744e87389c212" dependencies = [ - "bytes 0.5.4", - "prost-derive", + "bytes 0.5.4 (registry+https://github.com/rust-lang/crates.io-index)", + "prost-derive 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "prost-build" version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02b10678c913ecbd69350e8535c3aef91a8676c0773fc1d7b95cdd196d7f2f26" dependencies = [ - "bytes 0.5.4", - "heck", - "itertools", - "log 0.4.8", - "multimap", - "petgraph", - "prost", - "prost-types", - "tempfile", - "which 3.1.0", + "bytes 0.5.4 (registry+https://github.com/rust-lang/crates.io-index)", + "heck 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "itertools 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "multimap 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", + "petgraph 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", + "prost 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", + "prost-types 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", + "tempfile 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "which 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "prost-derive" version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "537aa19b95acde10a12fec4301466386f757403de4cd4e5b4fa78fb5ecb18f72" dependencies = [ - "anyhow", - "itertools", - "proc-macro2 1.0.8", - "quote 1.0.2", - "syn", + "anyhow 1.0.26 (registry+https://github.com/rust-lang/crates.io-index)", + "itertools 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 1.0.14 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "prost-types" version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1834f67c0697c001304b75be76f67add9c89742eda3a085ad8ee0bb38c3417aa" dependencies = [ - "bytes 0.5.4", - "prost", + "bytes 0.5.4 (registry+https://github.com/rust-lang/crates.io-index)", + "prost 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "protobuf" version = "2.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6686ddd96a8dbe2687b5f2a687b2cfb520854010ec480f2d74c32e7c9873d3c5" [[package]] name = "pwasm-utils" version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f7a12f176deee919f4ba55326ee17491c8b707d0987aed822682c821b660192" dependencies = [ - "byteorder 1.3.4", - "log 0.4.8", - "parity-wasm 0.41.0", + "byteorder 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-wasm 0.41.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "quick-error" version = "1.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0" [[package]] name = "quickcheck" version = "0.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a44883e74aa97ad63db83c4bf8ca490f02b2fc02f92575e720c8551e843c945f" dependencies = [ - "env_logger 0.7.1", - "log 0.4.8", - "rand 0.7.3", - "rand_core 0.5.1", + "env_logger 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_core 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "quicksink" version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8461ef7445f61fd72d8dcd0629ce724b9131b3c2eb36e83a5d3d4161c127530" dependencies = [ - "futures-core", - "futures-sink", - "pin-project-lite", + "futures-core 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-sink 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "pin-project-lite 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "quote" version = "0.6.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ce23b6b870e8f94f81fb0a363d65d86675884b34a09043c81e5562f11c1f8e1" dependencies = [ - "proc-macro2 0.4.30", + "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "quote" version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "053a8c8bcc71fcce321828dc897a98ab9760bef03a4fc36693c231e5b3216cfe" dependencies = [ - "proc-macro2 1.0.8", + "proc-macro2 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "rand" version = "0.3.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64ac302d8f83c0c1974bf758f6b041c6c8ada916fbb44a609158ca8b064cc76c" dependencies = [ - "libc", - "rand 0.4.6", + "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "rand" version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "552840b97013b1a26992c11eac34bdd778e464601a4c2054b5f0bff7c6761293" dependencies = [ - "fuchsia-cprng", - "libc", - "rand_core 0.3.1", - "rdrand", - "winapi 0.3.8", + "fuchsia-cprng 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "rdrand 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "rand" version = "0.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d71dacdc3c88c1fde3885a3be3fbab9f35724e6ce99467f7d9c5026132184ca" dependencies = [ - "autocfg 0.1.7", - "libc", - "rand_chacha 0.1.1", - "rand_core 0.4.2", - "rand_hc 0.1.0", - "rand_isaac", - "rand_jitter", - "rand_os", - "rand_pcg", - "rand_xorshift", - "winapi 0.3.8", + "autocfg 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_chacha 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_hc 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_isaac 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_jitter 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_os 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_pcg 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_xorshift 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "rand" version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03" dependencies = [ - "getrandom", - "libc", - "rand_chacha 0.2.1", - "rand_core 0.5.1", - "rand_hc 0.2.0", + "getrandom 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_chacha 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_core 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_hc 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "rand_chacha" version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "556d3a1ca6600bfcbab7c7c91ccb085ac7fbbcd70e008a98742e7847f4f7bcef" dependencies = [ - "autocfg 0.1.7", - "rand_core 0.3.1", + "autocfg 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "rand_chacha" version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03a2a90da8c7523f554344f921aa97283eadf6ac484a6d2a7d0212fa7f8d6853" dependencies = [ - "c2-chacha", - "rand_core 0.5.1", + "c2-chacha 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_core 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "rand_core" version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a6fdeb83b075e8266dcc8762c22776f6877a63111121f5f8c7411e5be7eed4b" dependencies = [ - "rand_core 0.4.2", + "rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "rand_core" version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c33a3c44ca05fa6f1807d8e6743f3824e8509beca625669633be0acbdf509dc" [[package]] name = "rand_core" version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" dependencies = [ - "getrandom", + "getrandom 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "rand_hc" version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b40677c7be09ae76218dc623efbf7b18e34bced3f38883af07bb75630a21bc4" dependencies = [ - "rand_core 0.3.1", + "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "rand_hc" version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c" dependencies = [ - "rand_core 0.5.1", + "rand_core 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "rand_isaac" version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ded997c9d5f13925be2a6fd7e66bf1872597f759fd9dd93513dd7e92e5a5ee08" dependencies = [ - "rand_core 0.3.1", + "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "rand_jitter" version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1166d5c91dc97b88d1decc3285bb0a99ed84b05cfd0bc2341bdf2d43fc41e39b" dependencies = [ - "libc", - "rand_core 0.4.2", - "winapi 0.3.8", + "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "rand_os" version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b75f676a1e053fc562eafbb47838d67c84801e38fc1ba459e8f180deabd5071" dependencies = [ - "cloudabi", - "fuchsia-cprng", - "libc", - "rand_core 0.4.2", - "rdrand", - "wasm-bindgen", - "winapi 0.3.8", + "cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)", + "fuchsia-cprng 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", + "rdrand 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "wasm-bindgen 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "rand_pcg" version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "abf9b09b01790cfe0364f52bf32995ea3c39f4d2dd011eac241d2914146d0b44" dependencies = [ - "autocfg 0.1.7", - "rand_core 0.4.2", + "autocfg 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "rand_xorshift" version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cbf7e9e623549b0e21f6e97cf8ecf247c1a8fd2e8a992ae265314300b2455d5c" dependencies = [ - "rand_core 0.3.1", + "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "rand_xoshiro" version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03b418169fb9c46533f326efd6eed2576699c44ca92d3052a066214a8d828929" dependencies = [ - "byteorder 1.3.4", - "rand_core 0.3.1", + "byteorder 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "raw-cpuid" version = "7.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4a349ca83373cfa5d6dbb66fd76e58b2cca08da71a5f6400de0a0a6a9bceeaf" dependencies = [ - "bitflags", - "cc", - "rustc_version", + "bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "cc 1.0.50 (registry+https://github.com/rust-lang/crates.io-index)", + "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "rayon" version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db6ce3297f9c85e16621bb8cca38a06779ffc31bb8184e1be4bed2be4678a098" dependencies = [ - "crossbeam-deque", - "either", - "rayon-core", + "crossbeam-deque 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)", + "either 1.5.3 (registry+https://github.com/rust-lang/crates.io-index)", + "rayon-core 1.7.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "rayon-core" version = "1.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08a89b46efaf957e52b18062fb2f4660f8b8a4dde1807ca002690868ef2c85a9" dependencies = [ - "crossbeam-deque", - "crossbeam-queue", - "crossbeam-utils", - "lazy_static", - "num_cpus", + "crossbeam-deque 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-queue 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-utils 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "num_cpus 1.12.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "rdrand" version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "678054eb77286b51581ba43620cc911abf02758c91f93f479767aed0f90458b2" dependencies = [ - "rand_core 0.3.1", + "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "redox_syscall" version = "0.1.56" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2439c63f3f6139d1b57529d16bc3b8bb855230c8efcc5d3a896c8bea7c3b1e84" [[package]] name = "redox_users" version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09b23093265f8d200fa7b4c2c76297f47e681c655f6f1285a8780d6a022f7431" dependencies = [ - "getrandom", - "redox_syscall", - "rust-argon2", + "getrandom 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)", + "redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)", + "rust-argon2 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "regex" version = "1.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "322cf97724bea3ee221b78fe25ac9c46114ebb51747ad5babd51a2fc6a8235a8" dependencies = [ - "aho-corasick", - "memchr", - "regex-syntax", - "thread_local", + "aho-corasick 0.7.8 (registry+https://github.com/rust-lang/crates.io-index)", + "memchr 2.3.2 (registry+https://github.com/rust-lang/crates.io-index)", + "regex-syntax 0.6.14 (registry+https://github.com/rust-lang/crates.io-index)", + "thread_local 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "regex-automata" version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92b73c2a1770c255c240eaa4ee600df1704a38dc3feaa6e949e7fcd4f8dc09f9" dependencies = [ - "byteorder 1.3.4", + "byteorder 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "regex-syntax" version = "0.6.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b28dfe3fe9badec5dbf0a79a9cccad2cfc2ab5484bdb3e44cbd1ae8b3ba2be06" [[package]] name = "region" version = "2.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "448e868c6e4cfddfa49b6a72c95906c04e8547465e9536575b95c70a4044f856" dependencies = [ - "bitflags", - "libc", - "mach", - "winapi 0.3.8", + "bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", + "mach 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "remove_dir_all" version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a83fa3702a688b9359eccba92d153ac33fd2e8462f9e0e3fdf155239ea7792e" dependencies = [ - "winapi 0.3.8", + "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "ring" version = "0.16.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "741ba1704ae21999c00942f9f5944f801e977f54302af346b596287599ad1862" dependencies = [ - "cc", - "lazy_static", - "libc", - "spin", - "untrusted", - "web-sys", - "winapi 0.3.8", + "cc 1.0.50 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", + "spin 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)", + "untrusted 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", + "web-sys 0.3.35 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "rlp" version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a44d5ae8afcb238af8b75640907edc6c931efcfab2c854e81ed35fa080f84cd" dependencies = [ - "rustc-hex", + "rustc-hex 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "rocksdb" version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12069b106981c6103d3eab7dd1c86751482d0779a520b7c14954c8b586c1e643" dependencies = [ - "libc", - "librocksdb-sys", + "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", + "librocksdb-sys 6.2.4 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "rpassword" version = "4.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "99371657d3c8e4d816fb6221db98fa408242b0b53bac08f8676a41f8554fe99f" dependencies = [ - "libc", - "winapi 0.3.8", + "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "rust-argon2" version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2bc8af4bda8e1ff4932523b94d3dd20ee30a87232323eda55903ffd71d2fb017" dependencies = [ - "base64 0.11.0", - "blake2b_simd", - "constant_time_eq", - "crossbeam-utils", + "base64 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", + "blake2b_simd 0.5.10 (registry+https://github.com/rust-lang/crates.io-index)", + "constant_time_eq 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-utils 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "rustc-demangle" version = "0.1.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c691c0e608126e00913e33f0ccf3727d5fc84573623b8d65b2df340b5201783" [[package]] name = "rustc-hash" version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" [[package]] name = "rustc-hex" version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e75f6a532d0fd9f7f13144f392b6ad56a32696bfcd9c78f797f16bbb6f072d6" [[package]] name = "rustc_version" version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030a" dependencies = [ - "semver 0.9.0", + "semver 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "rustls" version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b25a18b1bf7387f0145e7f8324e700805aade3842dd3db2e74e4cdeb4677c09e" dependencies = [ - "base64 0.10.1", - "log 0.4.8", - "ring", - "sct", - "webpki", + "base64 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "ring 0.16.11 (registry+https://github.com/rust-lang/crates.io-index)", + "sct 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)", + "webpki 0.21.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "rustls-native-certs" version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "51ffebdbb48c14f84eba0b715197d673aff1dd22cc1007ca647e28483bbcc307" dependencies = [ - "openssl-probe", - "rustls", - "schannel", - "security-framework", + "openssl-probe 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "rustls 0.16.0 (registry+https://github.com/rust-lang/crates.io-index)", + "schannel 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)", + "security-framework 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "rustversion" version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3bba175698996010c4f6dce5e7f173b6eb781fce25d2cfc45e27091ce0b79f6" dependencies = [ - "proc-macro2 1.0.8", - "quote 1.0.2", - "syn", + "proc-macro2 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 1.0.14 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "rw-stream-sink" version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4da5fcb054c46f5a5dff833b129285a93d3f0179531735e6c866e8cc307d2020" dependencies = [ - "futures 0.3.4", - "pin-project", - "static_assertions", + "futures 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "pin-project 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "static_assertions 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "ryu" version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfa8506c1de11c9c4e4c38863ccbe02a305c8188e85a05a784c9e11e1c3910c8" [[package]] name = "safe-mix" version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d3d055a2582e6b00ed7a31c1524040aa391092bf636328350813f3a0605215c" dependencies = [ - "rustc_version", + "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "safemem" version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef703b7cb59335eae2eb93ceb664c0eb7ea6bf567079d843e09420219668e072" [[package]] name = "salsa20" version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2324b0e8c3bb9a586a571fdb3136f70e7e2c748de00a78043f86e0cff91f91fe" dependencies = [ - "byteorder 1.3.4", - "salsa20-core", - "stream-cipher", + "byteorder 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "salsa20-core 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", + "stream-cipher 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "salsa20-core" version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2fe6cc1b9f5a5867853ade63099de70f042f7679e408d1ffe52821c9248e6e69" dependencies = [ - "stream-cipher", + "stream-cipher 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "same-file" version = "1.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" dependencies = [ - "winapi-util", + "winapi-util 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "sc-authority-discovery" version = "0.8.0" dependencies = [ - "bytes 0.4.12", - "derive_more", - "env_logger 0.7.1", - "futures 0.3.4", - "futures-timer 3.0.1", - "libp2p", - "log 0.4.8", - "parity-scale-codec", - "prost", - "prost-build", - "quickcheck", - "rand 0.7.3", - "sc-client-api", - "sc-keystore", - "sc-network", - "sc-peerset", - "serde_json", - "sp-api", - "sp-authority-discovery", - "sp-blockchain", - "sp-core", - "sp-runtime", - "substrate-test-runtime-client", + "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", + "derive_more 0.99.3 (registry+https://github.com/rust-lang/crates.io-index)", + "env_logger 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-timer 3.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "libp2p 0.16.1 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "prost 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", + "prost-build 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", + "quickcheck 0.9.2 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)", + "sc-client-api 2.0.0", + "sc-keystore 2.0.0", + "sc-network 0.8.0", + "sc-peerset 2.0.0", + "serde_json 1.0.48 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-api 2.0.0", + "sp-authority-discovery 2.0.0", + "sp-blockchain 2.0.0", + "sp-core 2.0.0", + "sp-runtime 2.0.0", + "substrate-test-runtime-client 2.0.0", ] [[package]] name = "sc-basic-authorship" version = "0.8.0" dependencies = [ - "futures 0.3.4", - "log 0.4.8", - "parity-scale-codec", - "parking_lot 0.10.0", - "sc-block-builder", - "sc-client", - "sc-client-api", - "sc-telemetry", - "sc-transaction-pool", - "sp-api", - "sp-blockchain", - "sp-consensus", - "sp-core", - "sp-inherents", - "sp-runtime", - "sp-transaction-pool", - "substrate-test-runtime-client", - "tokio-executor 0.2.0-alpha.6", + "futures 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sc-block-builder 0.8.0", + "sc-client 0.8.0", + "sc-client-api 2.0.0", + "sc-telemetry 2.0.0", + "sc-transaction-pool 2.0.0", + "sp-api 2.0.0", + "sp-blockchain 2.0.0", + "sp-consensus 0.8.0", + "sp-core 2.0.0", + "sp-inherents 2.0.0", + "sp-runtime 2.0.0", + "sp-transaction-pool 2.0.0", + "substrate-test-runtime-client 2.0.0", + "tokio-executor 0.2.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "sc-block-builder" version = "0.8.0" dependencies = [ - "parity-scale-codec", - "sc-client-api", - "sp-api", - "sp-block-builder", - "sp-blockchain", - "sp-consensus", - "sp-core", - "sp-runtime", - "sp-state-machine", + "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "sc-client-api 2.0.0", + "sp-api 2.0.0", + "sp-block-builder 2.0.0", + "sp-blockchain 2.0.0", + "sp-consensus 0.8.0", + "sp-core 2.0.0", + "sp-runtime 2.0.0", + "sp-state-machine 0.8.0", ] [[package]] name = "sc-chain-spec" version = "2.0.0" dependencies = [ - "impl-trait-for-tuples", - "sc-chain-spec-derive", - "sc-network", - "sc-telemetry", - "serde", - "serde_json", - "sp-core", - "sp-runtime", + "impl-trait-for-tuples 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", + "sc-chain-spec-derive 2.0.0", + "sc-network 0.8.0", + "sc-telemetry 2.0.0", + "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_json 1.0.48 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-core 2.0.0", + "sp-runtime 2.0.0", ] [[package]] name = "sc-chain-spec-derive" version = "2.0.0" dependencies = [ - "proc-macro-crate", - "proc-macro2 1.0.8", - "quote 1.0.2", - "syn", + "proc-macro-crate 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 1.0.14 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "sc-cli" version = "0.8.0" dependencies = [ - "ansi_term 0.12.1", - "app_dirs", - "atty", - "chrono", - "clap", - "derive_more", - "env_logger 0.7.1", - "fdlimit", - "futures 0.3.4", - "lazy_static", - "log 0.4.8", - "names", - "parity-util-mem", - "prometheus-exporter", - "regex", - "rpassword", - "sc-client-api", - "sc-informant", - "sc-network", - "sc-service", - "sc-telemetry", - "sc-tracing", - "serde_json", - "sp-blockchain", - "sp-core", - "sp-keyring", - "sp-panic-handler", - "sp-runtime", - "sp-state-machine", - "structopt", - "tempfile", - "time", - "tokio 0.2.11", + "ansi_term 0.12.1 (registry+https://github.com/rust-lang/crates.io-index)", + "app_dirs 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "atty 0.2.14 (registry+https://github.com/rust-lang/crates.io-index)", + "chrono 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", + "clap 2.33.0 (registry+https://github.com/rust-lang/crates.io-index)", + "derive_more 0.99.3 (registry+https://github.com/rust-lang/crates.io-index)", + "env_logger 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", + "fdlimit 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "names 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-util-mem 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", + "prometheus-exporter 0.8.0", + "regex 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "rpassword 4.0.5 (registry+https://github.com/rust-lang/crates.io-index)", + "sc-client-api 2.0.0", + "sc-informant 0.8.0", + "sc-network 0.8.0", + "sc-service 0.8.0", + "sc-telemetry 2.0.0", + "sc-tracing 2.0.0", + "serde_json 1.0.48 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-blockchain 2.0.0", + "sp-core 2.0.0", + "sp-keyring 2.0.0", + "sp-panic-handler 2.0.0", + "sp-runtime 2.0.0", + "sp-state-machine 0.8.0", + "structopt 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", + "tempfile 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "sc-client" version = "0.8.0" dependencies = [ - "derive_more", - "env_logger 0.7.1", - "fnv", - "futures 0.3.4", - "hash-db", - "hex-literal", - "kvdb", - "kvdb-memorydb", - "log 0.4.8", - "parity-scale-codec", - "parking_lot 0.10.0", - "sc-block-builder", - "sc-client-api", - "sc-executor", - "sc-telemetry", - "sp-api", - "sp-blockchain", - "sp-consensus", - "sp-core", - "sp-externalities", - "sp-inherents", - "sp-keyring", - "sp-panic-handler", - "sp-runtime", - "sp-state-machine", - "sp-std", - "sp-trie", - "sp-version", - "substrate-test-runtime-client", - "tempfile", - "tracing", + "derive_more 0.99.3 (registry+https://github.com/rust-lang/crates.io-index)", + "env_logger 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", + "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "hash-db 0.15.2 (registry+https://github.com/rust-lang/crates.io-index)", + "hex-literal 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "kvdb 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "kvdb-memorydb 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sc-block-builder 0.8.0", + "sc-client-api 2.0.0", + "sc-executor 0.8.0", + "sc-telemetry 2.0.0", + "sp-api 2.0.0", + "sp-blockchain 2.0.0", + "sp-consensus 0.8.0", + "sp-core 2.0.0", + "sp-externalities 0.8.0", + "sp-inherents 2.0.0", + "sp-keyring 2.0.0", + "sp-panic-handler 2.0.0", + "sp-runtime 2.0.0", + "sp-state-machine 0.8.0", + "sp-std 2.0.0", + "sp-trie 2.0.0", + "sp-version 2.0.0", + "substrate-test-runtime-client 2.0.0", + "tempfile 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "tracing 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "sc-client-api" version = "2.0.0" dependencies = [ - "derive_more", - "fnv", - "futures 0.3.4", - "hash-db", - "hex-literal", - "kvdb", - "log 0.4.8", - "parity-scale-codec", - "parking_lot 0.10.0", - "sc-executor", - "sc-telemetry", - "sp-api", - "sp-blockchain", - "sp-consensus", - "sp-core", - "sp-externalities", - "sp-inherents", - "sp-keyring", - "sp-runtime", - "sp-state-machine", - "sp-std", - "sp-test-primitives", - "sp-transaction-pool", - "sp-trie", - "sp-version", + "derive_more 0.99.3 (registry+https://github.com/rust-lang/crates.io-index)", + "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "hash-db 0.15.2 (registry+https://github.com/rust-lang/crates.io-index)", + "hex-literal 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "kvdb 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sc-executor 0.8.0", + "sc-telemetry 2.0.0", + "sp-api 2.0.0", + "sp-blockchain 2.0.0", + "sp-consensus 0.8.0", + "sp-core 2.0.0", + "sp-externalities 0.8.0", + "sp-inherents 2.0.0", + "sp-keyring 2.0.0", + "sp-runtime 2.0.0", + "sp-state-machine 0.8.0", + "sp-std 2.0.0", + "sp-test-primitives 2.0.0", + "sp-transaction-pool 2.0.0", + "sp-trie 2.0.0", + "sp-version 2.0.0", ] [[package]] name = "sc-client-db" version = "0.8.0" dependencies = [ - "env_logger 0.7.1", - "hash-db", - "kvdb", - "kvdb-memorydb", - "kvdb-rocksdb", - "linked-hash-map", - "log 0.4.8", - "parity-scale-codec", - "parity-util-mem", - "parking_lot 0.10.0", - "quickcheck", - "rand 0.7.3", - "sc-client", - "sc-client-api", - "sc-executor", - "sc-state-db", - "sp-blockchain", - "sp-consensus", - "sp-core", - "sp-keyring", - "sp-runtime", - "sp-state-machine", - "sp-trie", - "substrate-test-runtime-client", - "tempfile", + "env_logger 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", + "hash-db 0.15.2 (registry+https://github.com/rust-lang/crates.io-index)", + "kvdb 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "kvdb-memorydb 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "kvdb-rocksdb 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", + "linked-hash-map 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-util-mem 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", + "quickcheck 0.9.2 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)", + "sc-client 0.8.0", + "sc-client-api 2.0.0", + "sc-executor 0.8.0", + "sc-state-db 0.8.0", + "sp-blockchain 2.0.0", + "sp-consensus 0.8.0", + "sp-core 2.0.0", + "sp-keyring 2.0.0", + "sp-runtime 2.0.0", + "sp-state-machine 0.8.0", + "sp-trie 2.0.0", + "substrate-test-runtime-client 2.0.0", + "tempfile 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "sc-consensus-aura" version = "0.8.0" dependencies = [ - "derive_more", - "env_logger 0.7.1", - "futures 0.1.29", - "futures 0.3.4", - "futures-timer 3.0.1", - "log 0.4.8", - "parity-scale-codec", - "parking_lot 0.10.0", - "sc-client", - "sc-client-api", - "sc-consensus-slots", - "sc-executor", - "sc-keystore", - "sc-network", - "sc-network-test", - "sc-service", - "sc-telemetry", - "sp-api", - "sp-application-crypto", - "sp-block-builder", - "sp-blockchain", - "sp-consensus", - "sp-consensus-aura", - "sp-core", - "sp-inherents", - "sp-io", - "sp-keyring", - "sp-runtime", - "sp-timestamp", - "sp-version", - "substrate-test-runtime-client", - "tempfile", - "tokio 0.1.22", + "derive_more 0.99.3 (registry+https://github.com/rust-lang/crates.io-index)", + "env_logger 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-timer 3.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sc-client 0.8.0", + "sc-client-api 2.0.0", + "sc-consensus-slots 0.8.0", + "sc-executor 0.8.0", + "sc-keystore 2.0.0", + "sc-network 0.8.0", + "sc-network-test 0.8.0", + "sc-service 0.8.0", + "sc-telemetry 2.0.0", + "sp-api 2.0.0", + "sp-application-crypto 2.0.0", + "sp-block-builder 2.0.0", + "sp-blockchain 2.0.0", + "sp-consensus 0.8.0", + "sp-consensus-aura 0.8.0", + "sp-core 2.0.0", + "sp-inherents 2.0.0", + "sp-io 2.0.0", + "sp-keyring 2.0.0", + "sp-runtime 2.0.0", + "sp-timestamp 2.0.0", + "sp-version 2.0.0", + "substrate-test-runtime-client 2.0.0", + "tempfile 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio 0.1.22 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "sc-consensus-babe" version = "0.8.0" dependencies = [ - "derive_more", - "env_logger 0.7.1", - "fork-tree", - "futures 0.1.29", - "futures 0.3.4", - "futures-timer 3.0.1", - "log 0.4.8", - "merlin", - "num-bigint", - "num-rational", - "num-traits", - "parity-scale-codec", - "parking_lot 0.10.0", - "pdqselect", - "rand 0.7.3", - "sc-block-builder", - "sc-client", - "sc-client-api", - "sc-consensus-epochs", - "sc-consensus-slots", - "sc-consensus-uncles", - "sc-executor", - "sc-keystore", - "sc-network", - "sc-network-test", - "sc-service", - "sc-telemetry", - "schnorrkel", - "serde", - "sp-api", - "sp-application-crypto", - "sp-block-builder", - "sp-blockchain", - "sp-consensus", - "sp-consensus-babe", - "sp-core", - "sp-inherents", - "sp-io", - "sp-keyring", - "sp-runtime", - "sp-timestamp", - "sp-version", - "substrate-test-runtime-client", - "tempfile", - "tokio 0.1.22", + "derive_more 0.99.3 (registry+https://github.com/rust-lang/crates.io-index)", + "env_logger 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", + "fork-tree 2.0.0", + "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-timer 3.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "merlin 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "num-bigint 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", + "num-rational 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", + "num-traits 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", + "pdqselect 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)", + "sc-block-builder 0.8.0", + "sc-client 0.8.0", + "sc-client-api 2.0.0", + "sc-consensus-epochs 0.8.0", + "sc-consensus-slots 0.8.0", + "sc-consensus-uncles 0.8.0", + "sc-executor 0.8.0", + "sc-keystore 2.0.0", + "sc-network 0.8.0", + "sc-network-test 0.8.0", + "sc-service 0.8.0", + "sc-telemetry 2.0.0", + "schnorrkel 0.8.5 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-api 2.0.0", + "sp-application-crypto 2.0.0", + "sp-block-builder 2.0.0", + "sp-blockchain 2.0.0", + "sp-consensus 0.8.0", + "sp-consensus-babe 0.8.0", + "sp-core 2.0.0", + "sp-inherents 2.0.0", + "sp-io 2.0.0", + "sp-keyring 2.0.0", + "sp-runtime 2.0.0", + "sp-timestamp 2.0.0", + "sp-version 2.0.0", + "substrate-test-runtime-client 2.0.0", + "tempfile 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio 0.1.22 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "sc-consensus-babe-rpc" version = "0.8.0" dependencies = [ - "derive_more", - "futures 0.3.4", - "jsonrpc-core", - "jsonrpc-core-client", - "jsonrpc-derive", - "sc-consensus-babe", - "sc-consensus-epochs", - "sc-keystore", - "serde", - "sp-api", - "sp-application-crypto", - "sp-blockchain", - "sp-consensus", - "sp-consensus-babe", - "sp-core", - "sp-keyring", - "sp-runtime", - "substrate-test-runtime-client", - "tempfile", + "derive_more 0.99.3 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "jsonrpc-core 14.0.5 (registry+https://github.com/rust-lang/crates.io-index)", + "jsonrpc-core-client 14.0.5 (registry+https://github.com/rust-lang/crates.io-index)", + "jsonrpc-derive 14.0.5 (registry+https://github.com/rust-lang/crates.io-index)", + "sc-consensus-babe 0.8.0", + "sc-consensus-epochs 0.8.0", + "sc-keystore 2.0.0", + "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-api 2.0.0", + "sp-application-crypto 2.0.0", + "sp-blockchain 2.0.0", + "sp-consensus 0.8.0", + "sp-consensus-babe 0.8.0", + "sp-core 2.0.0", + "sp-keyring 2.0.0", + "sp-runtime 2.0.0", + "substrate-test-runtime-client 2.0.0", + "tempfile 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "sc-consensus-epochs" version = "0.8.0" dependencies = [ - "fork-tree", - "parity-scale-codec", - "parking_lot 0.10.0", - "sc-client-api", - "sp-blockchain", - "sp-runtime", + "fork-tree 2.0.0", + "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sc-client-api 2.0.0", + "sp-blockchain 2.0.0", + "sp-runtime 2.0.0", ] [[package]] name = "sc-consensus-manual-seal" version = "0.8.0" dependencies = [ - "derive_more", - "env_logger 0.7.1", - "futures 0.3.4", - "jsonrpc-core", - "jsonrpc-core-client", - "jsonrpc-derive", - "log 0.4.8", - "parking_lot 0.10.0", - "sc-basic-authorship", - "sc-client", - "sc-client-api", - "sc-transaction-pool", - "serde", - "sp-blockchain", - "sp-consensus", - "sp-inherents", - "sp-runtime", - "sp-transaction-pool", - "substrate-test-runtime-client", - "substrate-test-runtime-transaction-pool", - "tempfile", - "tokio 0.2.11", + "derive_more 0.99.3 (registry+https://github.com/rust-lang/crates.io-index)", + "env_logger 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "jsonrpc-core 14.0.5 (registry+https://github.com/rust-lang/crates.io-index)", + "jsonrpc-core-client 14.0.5 (registry+https://github.com/rust-lang/crates.io-index)", + "jsonrpc-derive 14.0.5 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sc-basic-authorship 0.8.0", + "sc-client 0.8.0", + "sc-client-api 2.0.0", + "sc-transaction-pool 2.0.0", + "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-blockchain 2.0.0", + "sp-consensus 0.8.0", + "sp-inherents 2.0.0", + "sp-runtime 2.0.0", + "sp-transaction-pool 2.0.0", + "substrate-test-runtime-client 2.0.0", + "substrate-test-runtime-transaction-pool 2.0.0", + "tempfile 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "sc-consensus-pow" version = "0.8.0" dependencies = [ - "derive_more", - "futures 0.3.4", - "log 0.4.8", - "parity-scale-codec", - "sc-client-api", - "sp-api", - "sp-block-builder", - "sp-blockchain", - "sp-consensus", - "sp-consensus-pow", - "sp-core", - "sp-inherents", - "sp-runtime", - "sp-timestamp", + "derive_more 0.99.3 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "sc-client-api 2.0.0", + "sp-api 2.0.0", + "sp-block-builder 2.0.0", + "sp-blockchain 2.0.0", + "sp-consensus 0.8.0", + "sp-consensus-pow 0.8.0", + "sp-core 2.0.0", + "sp-inherents 2.0.0", + "sp-runtime 2.0.0", + "sp-timestamp 2.0.0", ] [[package]] name = "sc-consensus-slots" version = "0.8.0" dependencies = [ - "futures 0.3.4", - "futures-timer 3.0.1", - "log 0.4.8", - "parity-scale-codec", - "parking_lot 0.10.0", - "sc-client-api", - "sc-telemetry", - "sp-api", - "sp-blockchain", - "sp-consensus", - "sp-core", - "sp-inherents", - "sp-runtime", - "sp-state-machine", - "substrate-test-runtime-client", + "futures 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-timer 3.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sc-client-api 2.0.0", + "sc-telemetry 2.0.0", + "sp-api 2.0.0", + "sp-blockchain 2.0.0", + "sp-consensus 0.8.0", + "sp-core 2.0.0", + "sp-inherents 2.0.0", + "sp-runtime 2.0.0", + "sp-state-machine 0.8.0", + "substrate-test-runtime-client 2.0.0", ] [[package]] name = "sc-consensus-uncles" version = "0.8.0" dependencies = [ - "log 0.4.8", - "sc-client-api", - "sp-authorship", - "sp-consensus", - "sp-core", - "sp-inherents", - "sp-runtime", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "sc-client-api 2.0.0", + "sp-authorship 2.0.0", + "sp-consensus 0.8.0", + "sp-core 2.0.0", + "sp-inherents 2.0.0", + "sp-runtime 2.0.0", ] [[package]] name = "sc-executor" version = "0.8.0" dependencies = [ - "assert_matches", - "derive_more", - "hex-literal", - "lazy_static", - "libsecp256k1", - "log 0.4.8", - "parity-scale-codec", - "parity-wasm 0.41.0", - "parking_lot 0.10.0", - "sc-executor-common", - "sc-executor-wasmi", - "sc-executor-wasmtime", - "sc-runtime-test", - "sp-core", - "sp-externalities", - "sp-io", - "sp-panic-handler", - "sp-runtime-interface", - "sp-serializer", - "sp-state-machine", - "sp-trie", - "sp-version", - "sp-wasm-interface", - "substrate-test-runtime", - "test-case", - "wabt", - "wasmi", + "assert_matches 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "derive_more 0.99.3 (registry+https://github.com/rust-lang/crates.io-index)", + "hex-literal 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "libsecp256k1 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-wasm 0.41.0 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sc-executor-common 0.8.0", + "sc-executor-wasmi 0.8.0", + "sc-executor-wasmtime 0.8.0", + "sc-runtime-test 2.0.0", + "sp-core 2.0.0", + "sp-externalities 0.8.0", + "sp-io 2.0.0", + "sp-panic-handler 2.0.0", + "sp-runtime-interface 2.0.0", + "sp-serializer 2.0.0", + "sp-state-machine 0.8.0", + "sp-trie 2.0.0", + "sp-version 2.0.0", + "sp-wasm-interface 2.0.0", + "substrate-test-runtime 2.0.0", + "test-case 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", + "wabt 0.9.2 (registry+https://github.com/rust-lang/crates.io-index)", + "wasmi 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "sc-executor-common" version = "0.8.0" dependencies = [ - "derive_more", - "log 0.4.8", - "parity-scale-codec", - "sp-allocator", - "sp-core", - "sp-runtime-interface", - "sp-serializer", - "sp-wasm-interface", - "wasmi", + "derive_more 0.99.3 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-allocator 2.0.0", + "sp-core 2.0.0", + "sp-runtime-interface 2.0.0", + "sp-serializer 2.0.0", + "sp-wasm-interface 2.0.0", + "wasmi 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "sc-executor-wasmi" version = "0.8.0" dependencies = [ - "log 0.4.8", - "parity-scale-codec", - "parity-wasm 0.41.0", - "sc-executor-common", - "sp-allocator", - "sp-core", - "sp-runtime-interface", - "sp-wasm-interface", - "wasmi", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-wasm 0.41.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sc-executor-common 0.8.0", + "sp-allocator 2.0.0", + "sp-core 2.0.0", + "sp-runtime-interface 2.0.0", + "sp-wasm-interface 2.0.0", + "wasmi 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "sc-executor-wasmtime" version = "0.8.0" dependencies = [ - "assert_matches", - "log 0.4.8", - "parity-scale-codec", - "parity-wasm 0.41.0", - "sc-executor-common", - "sp-allocator", - "sp-core", - "sp-runtime-interface", - "sp-wasm-interface", - "wasmi", - "wasmtime", + "assert_matches 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-wasm 0.41.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sc-executor-common 0.8.0", + "sp-allocator 2.0.0", + "sp-core 2.0.0", + "sp-runtime-interface 2.0.0", + "sp-wasm-interface 2.0.0", + "wasmi 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", + "wasmtime 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "sc-finality-grandpa" version = "0.8.0" dependencies = [ - "assert_matches", - "env_logger 0.7.1", - "finality-grandpa", - "fork-tree", - "futures 0.1.29", - "futures 0.3.4", - "futures-timer 3.0.1", - "log 0.4.8", - "parity-scale-codec", - "parking_lot 0.10.0", - "pin-project", - "rand 0.7.3", - "sc-client", - "sc-client-api", - "sc-keystore", - "sc-network", - "sc-network-gossip", - "sc-network-test", - "sc-telemetry", - "serde_json", - "sp-api", - "sp-arithmetic", - "sp-blockchain", - "sp-consensus", - "sp-consensus-babe", - "sp-core", - "sp-finality-grandpa", - "sp-finality-tracker", - "sp-inherents", - "sp-keyring", - "sp-runtime", - "sp-state-machine", - "substrate-test-runtime-client", - "tempfile", - "tokio 0.1.22", + "assert_matches 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "env_logger 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", + "finality-grandpa 0.11.1 (registry+https://github.com/rust-lang/crates.io-index)", + "fork-tree 2.0.0", + "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-timer 3.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", + "pin-project 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)", + "sc-client 0.8.0", + "sc-client-api 2.0.0", + "sc-keystore 2.0.0", + "sc-network 0.8.0", + "sc-network-gossip 0.8.0", + "sc-network-test 0.8.0", + "sc-telemetry 2.0.0", + "serde_json 1.0.48 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-api 2.0.0", + "sp-arithmetic 2.0.0", + "sp-blockchain 2.0.0", + "sp-consensus 0.8.0", + "sp-consensus-babe 0.8.0", + "sp-core 2.0.0", + "sp-finality-grandpa 2.0.0", + "sp-finality-tracker 2.0.0", + "sp-inherents 2.0.0", + "sp-keyring 2.0.0", + "sp-runtime 2.0.0", + "sp-state-machine 0.8.0", + "substrate-test-runtime-client 2.0.0", + "tempfile 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio 0.1.22 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "sc-informant" version = "0.8.0" dependencies = [ - "ansi_term 0.12.1", - "futures 0.3.4", - "log 0.4.8", - "parity-util-mem", - "sc-client-api", - "sc-network", - "sc-service", - "sp-blockchain", - "sp-runtime", - "wasm-timer", + "ansi_term 0.12.1 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-util-mem 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", + "sc-client-api 2.0.0", + "sc-network 0.8.0", + "sc-service 0.8.0", + "sp-blockchain 2.0.0", + "sp-runtime 2.0.0", + "wasm-timer 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "sc-keystore" version = "2.0.0" dependencies = [ - "derive_more", - "hex", - "parking_lot 0.10.0", - "rand 0.7.3", - "serde_json", - "sp-application-crypto", - "sp-core", - "subtle 2.2.2", - "tempfile", + "derive_more 0.99.3 (registry+https://github.com/rust-lang/crates.io-index)", + "hex 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_json 1.0.48 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-application-crypto 2.0.0", + "sp-core 2.0.0", + "subtle 2.2.2 (registry+https://github.com/rust-lang/crates.io-index)", + "tempfile 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "sc-network" version = "0.8.0" dependencies = [ - "assert_matches", - "async-std", - "bitflags", - "bytes 0.5.4", - "derive_more", - "either", - "env_logger 0.7.1", - "erased-serde", - "fnv", - "fork-tree", - "futures 0.3.4", - "futures-timer 3.0.1", - "futures_codec", - "libp2p", - "linked-hash-map", - "linked_hash_set", - "log 0.4.8", - "lru 0.4.3", - "nohash-hasher 0.2.0", - "parity-scale-codec", - "parking_lot 0.10.0", - "prost", - "prost-build", - "quickcheck", - "rand 0.7.3", - "rustc-hex", - "sc-block-builder", - "sc-client", - "sc-client-api", - "sc-peerset", - "serde", - "serde_json", - "slog", - "slog_derive", - "smallvec 0.6.13", - "sp-arithmetic", - "sp-blockchain", - "sp-consensus", - "sp-consensus-babe", - "sp-core", - "sp-keyring", - "sp-runtime", - "sp-test-primitives", - "substrate-test-client", - "substrate-test-runtime", - "substrate-test-runtime-client", - "tempfile", - "thiserror", - "unsigned-varint 0.3.0", - "void", - "wasm-timer", - "zeroize 1.1.0", + "assert_matches 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "async-std 1.5.0 (registry+https://github.com/rust-lang/crates.io-index)", + "bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes 0.5.4 (registry+https://github.com/rust-lang/crates.io-index)", + "derive_more 0.99.3 (registry+https://github.com/rust-lang/crates.io-index)", + "either 1.5.3 (registry+https://github.com/rust-lang/crates.io-index)", + "env_logger 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", + "erased-serde 0.3.10 (registry+https://github.com/rust-lang/crates.io-index)", + "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", + "fork-tree 2.0.0", + "futures 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-timer 3.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "futures_codec 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "libp2p 0.16.1 (registry+https://github.com/rust-lang/crates.io-index)", + "linked-hash-map 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)", + "linked_hash_set 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "lru 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", + "nohash-hasher 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", + "prost 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", + "prost-build 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", + "quickcheck 0.9.2 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)", + "rustc-hex 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sc-block-builder 0.8.0", + "sc-client 0.8.0", + "sc-client-api 2.0.0", + "sc-peerset 2.0.0", + "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_json 1.0.48 (registry+https://github.com/rust-lang/crates.io-index)", + "slog 2.5.2 (registry+https://github.com/rust-lang/crates.io-index)", + "slog_derive 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "smallvec 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-arithmetic 2.0.0", + "sp-blockchain 2.0.0", + "sp-consensus 0.8.0", + "sp-consensus-babe 0.8.0", + "sp-core 2.0.0", + "sp-keyring 2.0.0", + "sp-runtime 2.0.0", + "sp-test-primitives 2.0.0", + "substrate-test-client 2.0.0", + "substrate-test-runtime 2.0.0", + "substrate-test-runtime-client 2.0.0", + "tempfile 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "thiserror 1.0.11 (registry+https://github.com/rust-lang/crates.io-index)", + "unsigned-varint 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "void 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "wasm-timer 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", + "zeroize 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "sc-network-gossip" version = "0.8.0" dependencies = [ - "futures 0.3.4", - "futures-timer 3.0.1", - "libp2p", - "log 0.4.8", - "lru 0.1.17", - "parking_lot 0.10.0", - "sc-network", - "sp-runtime", - "wasm-timer", + "futures 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-timer 3.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "libp2p 0.16.1 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "lru 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sc-network 0.8.0", + "sp-runtime 2.0.0", + "wasm-timer 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "sc-network-test" version = "0.8.0" dependencies = [ - "env_logger 0.7.1", - "futures 0.1.29", - "futures 0.3.4", - "futures-timer 3.0.1", - "libp2p", - "log 0.4.8", - "parking_lot 0.10.0", - "rand 0.7.3", - "sc-block-builder", - "sc-client", - "sc-client-api", - "sc-network", - "sp-blockchain", - "sp-consensus", - "sp-consensus-babe", - "sp-core", - "sp-runtime", - "substrate-test-runtime", - "substrate-test-runtime-client", - "tempfile", - "tokio 0.1.22", + "env_logger 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-timer 3.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "libp2p 0.16.1 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)", + "sc-block-builder 0.8.0", + "sc-client 0.8.0", + "sc-client-api 2.0.0", + "sc-network 0.8.0", + "sp-blockchain 2.0.0", + "sp-consensus 0.8.0", + "sp-consensus-babe 0.8.0", + "sp-core 2.0.0", + "sp-runtime 2.0.0", + "substrate-test-runtime 2.0.0", + "substrate-test-runtime-client 2.0.0", + "tempfile 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio 0.1.22 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "sc-offchain" version = "2.0.0" dependencies = [ - "bytes 0.5.4", - "env_logger 0.7.1", - "fnv", - "futures 0.3.4", - "futures-timer 3.0.1", - "hyper 0.13.2", - "hyper-rustls", - "log 0.4.8", - "num_cpus", - "parity-scale-codec", - "parking_lot 0.10.0", - "rand 0.7.3", - "sc-client-api", - "sc-client-db", - "sc-keystore", - "sc-network", - "sc-transaction-pool", - "sp-api", - "sp-core", - "sp-offchain", - "sp-runtime", - "sp-transaction-pool", - "substrate-test-runtime-client", - "threadpool", - "tokio 0.2.11", + "bytes 0.5.4 (registry+https://github.com/rust-lang/crates.io-index)", + "env_logger 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", + "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-timer 3.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "hyper 0.13.2 (registry+https://github.com/rust-lang/crates.io-index)", + "hyper-rustls 0.19.1 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "num_cpus 1.12.0 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)", + "sc-client-api 2.0.0", + "sc-client-db 0.8.0", + "sc-keystore 2.0.0", + "sc-network 0.8.0", + "sc-transaction-pool 2.0.0", + "sp-api 2.0.0", + "sp-core 2.0.0", + "sp-offchain 2.0.0", + "sp-runtime 2.0.0", + "sp-transaction-pool 2.0.0", + "substrate-test-runtime-client 2.0.0", + "threadpool 1.7.1 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "sc-peerset" version = "2.0.0" dependencies = [ - "futures 0.3.4", - "libp2p", - "log 0.4.8", - "rand 0.7.3", - "serde_json", - "wasm-timer", + "futures 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "libp2p 0.16.1 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_json 1.0.48 (registry+https://github.com/rust-lang/crates.io-index)", + "wasm-timer 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "sc-rpc" version = "2.0.0" dependencies = [ - "assert_matches", - "futures 0.1.29", - "futures 0.3.4", - "hash-db", - "jsonrpc-core", - "jsonrpc-pubsub", - "log 0.4.8", - "parity-scale-codec", - "parking_lot 0.10.0", - "rustc-hex", - "sc-client", - "sc-client-api", - "sc-executor", - "sc-keystore", - "sc-network", - "sc-rpc-api", - "sc-transaction-pool", - "serde_json", - "sp-api", - "sp-blockchain", - "sp-core", - "sp-io", - "sp-offchain", - "sp-rpc", - "sp-runtime", - "sp-session", - "sp-state-machine", - "sp-transaction-pool", - "sp-version", - "substrate-test-runtime-client", - "tokio 0.1.22", + "assert_matches 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "hash-db 0.15.2 (registry+https://github.com/rust-lang/crates.io-index)", + "jsonrpc-core 14.0.5 (registry+https://github.com/rust-lang/crates.io-index)", + "jsonrpc-pubsub 14.0.6 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", + "rustc-hex 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sc-client 0.8.0", + "sc-client-api 2.0.0", + "sc-executor 0.8.0", + "sc-keystore 2.0.0", + "sc-network 0.8.0", + "sc-rpc-api 0.8.0", + "sc-transaction-pool 2.0.0", + "serde_json 1.0.48 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-api 2.0.0", + "sp-blockchain 2.0.0", + "sp-core 2.0.0", + "sp-io 2.0.0", + "sp-offchain 2.0.0", + "sp-rpc 2.0.0", + "sp-runtime 2.0.0", + "sp-session 2.0.0", + "sp-state-machine 0.8.0", + "sp-transaction-pool 2.0.0", + "sp-version 2.0.0", + "substrate-test-runtime-client 2.0.0", + "tokio 0.1.22 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "sc-rpc-api" version = "0.8.0" dependencies = [ - "derive_more", - "futures 0.3.4", - "jsonrpc-core", - "jsonrpc-core-client", - "jsonrpc-derive", - "jsonrpc-pubsub", - "log 0.4.8", - "parity-scale-codec", - "parking_lot 0.10.0", - "serde", - "serde_json", - "sp-core", - "sp-rpc", - "sp-runtime", - "sp-transaction-pool", - "sp-version", + "derive_more 0.99.3 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "jsonrpc-core 14.0.5 (registry+https://github.com/rust-lang/crates.io-index)", + "jsonrpc-core-client 14.0.5 (registry+https://github.com/rust-lang/crates.io-index)", + "jsonrpc-derive 14.0.5 (registry+https://github.com/rust-lang/crates.io-index)", + "jsonrpc-pubsub 14.0.6 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_json 1.0.48 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-core 2.0.0", + "sp-rpc 2.0.0", + "sp-runtime 2.0.0", + "sp-transaction-pool 2.0.0", + "sp-version 2.0.0", ] [[package]] name = "sc-rpc-server" version = "2.0.0" dependencies = [ - "jsonrpc-core", - "jsonrpc-http-server", - "jsonrpc-pubsub", - "jsonrpc-ws-server", - "log 0.4.8", - "serde", - "serde_json", - "sp-runtime", + "jsonrpc-core 14.0.5 (registry+https://github.com/rust-lang/crates.io-index)", + "jsonrpc-http-server 14.0.6 (registry+https://github.com/rust-lang/crates.io-index)", + "jsonrpc-pubsub 14.0.6 (registry+https://github.com/rust-lang/crates.io-index)", + "jsonrpc-ws-server 14.0.6 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_json 1.0.48 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-runtime 2.0.0", ] [[package]] name = "sc-runtime-test" version = "2.0.0" dependencies = [ - "sp-allocator", - "sp-core", - "sp-io", - "sp-runtime", - "sp-sandbox", - "sp-std", - "substrate-wasm-builder-runner", + "sp-allocator 2.0.0", + "sp-core 2.0.0", + "sp-io 2.0.0", + "sp-runtime 2.0.0", + "sp-sandbox 0.8.0", + "sp-std 2.0.0", + "substrate-wasm-builder-runner 1.0.5", ] [[package]] name = "sc-service" version = "0.8.0" dependencies = [ - "derive_more", - "exit-future", - "futures 0.1.29", - "futures 0.3.4", - "futures-diagnose", - "futures-timer 3.0.1", - "lazy_static", - "log 0.4.8", - "parity-multiaddr 0.5.0", - "parity-scale-codec", - "parity-util-mem", - "parking_lot 0.10.0", - "prometheus-exporter", - "sc-chain-spec", - "sc-client", - "sc-client-api", - "sc-client-db", - "sc-executor", - "sc-finality-grandpa", - "sc-keystore", - "sc-network", - "sc-offchain", - "sc-rpc", - "sc-rpc-server", - "sc-telemetry", - "sc-tracing", - "sc-transaction-pool", - "serde", - "serde_json", - "slog", - "sp-api", - "sp-application-crypto", - "sp-blockchain", - "sp-consensus", - "sp-consensus-babe", - "sp-core", - "sp-finality-grandpa", - "sp-io", - "sp-runtime", - "sp-session", - "sp-transaction-pool", - "substrate-test-runtime-client", - "sysinfo", - "target_info", - "tokio 0.2.11", - "tracing", - "wasm-timer", + "derive_more 0.99.3 (registry+https://github.com/rust-lang/crates.io-index)", + "exit-future 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-diagnose 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-timer 3.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-multiaddr 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-util-mem 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", + "prometheus-exporter 0.8.0", + "sc-chain-spec 2.0.0", + "sc-client 0.8.0", + "sc-client-api 2.0.0", + "sc-client-db 0.8.0", + "sc-executor 0.8.0", + "sc-finality-grandpa 0.8.0", + "sc-keystore 2.0.0", + "sc-network 0.8.0", + "sc-offchain 2.0.0", + "sc-rpc 2.0.0", + "sc-rpc-server 2.0.0", + "sc-telemetry 2.0.0", + "sc-tracing 2.0.0", + "sc-transaction-pool 2.0.0", + "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_json 1.0.48 (registry+https://github.com/rust-lang/crates.io-index)", + "slog 2.5.2 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-api 2.0.0", + "sp-application-crypto 2.0.0", + "sp-blockchain 2.0.0", + "sp-consensus 0.8.0", + "sp-consensus-babe 0.8.0", + "sp-core 2.0.0", + "sp-finality-grandpa 2.0.0", + "sp-io 2.0.0", + "sp-runtime 2.0.0", + "sp-session 2.0.0", + "sp-transaction-pool 2.0.0", + "substrate-test-runtime-client 2.0.0", + "sysinfo 0.9.6 (registry+https://github.com/rust-lang/crates.io-index)", + "target_info 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", + "tracing 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", + "wasm-timer 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "sc-service-test" version = "2.0.0" dependencies = [ - "env_logger 0.7.1", - "fdlimit", - "futures 0.1.29", - "futures 0.3.4", - "log 0.4.8", - "sc-client", - "sc-network", - "sc-service", - "sp-consensus", - "sp-core", - "sp-runtime", - "sp-transaction-pool", - "tempfile", - "tokio 0.1.22", + "env_logger 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", + "fdlimit 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "sc-client 0.8.0", + "sc-network 0.8.0", + "sc-service 0.8.0", + "sp-consensus 0.8.0", + "sp-core 2.0.0", + "sp-runtime 2.0.0", + "sp-transaction-pool 2.0.0", + "tempfile 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio 0.1.22 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "sc-state-db" version = "0.8.0" dependencies = [ - "env_logger 0.7.1", - "log 0.4.8", - "parity-scale-codec", - "parking_lot 0.10.0", - "sp-core", + "env_logger 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-core 2.0.0", ] [[package]] name = "sc-telemetry" version = "2.0.0" dependencies = [ - "bytes 0.5.4", - "futures 0.3.4", - "futures-timer 3.0.1", - "libp2p", - "log 0.4.8", - "parking_lot 0.10.0", - "pin-project", - "rand 0.7.3", - "serde", - "slog", - "slog-json", - "slog-scope", - "take_mut", - "void", - "wasm-timer", + "bytes 0.5.4 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-timer 3.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "libp2p 0.16.1 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", + "pin-project 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", + "slog 2.5.2 (registry+https://github.com/rust-lang/crates.io-index)", + "slog-json 2.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "slog-scope 4.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "take_mut 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", + "void 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "wasm-timer 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "sc-tracing" version = "2.0.0" dependencies = [ - "erased-serde", - "log 0.4.8", - "parking_lot 0.10.0", - "sc-telemetry", - "serde", - "serde_json", - "slog", - "tracing", - "tracing-core", + "erased-serde 0.3.10 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sc-telemetry 2.0.0", + "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_json 1.0.48 (registry+https://github.com/rust-lang/crates.io-index)", + "slog 2.5.2 (registry+https://github.com/rust-lang/crates.io-index)", + "tracing 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", + "tracing-core 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "sc-transaction-graph" version = "2.0.0" dependencies = [ - "assert_matches", - "criterion 0.3.1", - "derive_more", - "futures 0.3.4", - "linked-hash-map", - "log 0.4.8", - "parity-scale-codec", - "parity-util-mem", - "parking_lot 0.10.0", - "serde", - "sp-blockchain", - "sp-core", - "sp-runtime", - "sp-transaction-pool", - "substrate-test-runtime", - "wasm-timer", + "assert_matches 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "criterion 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "derive_more 0.99.3 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "linked-hash-map 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-util-mem 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-blockchain 2.0.0", + "sp-core 2.0.0", + "sp-runtime 2.0.0", + "sp-transaction-pool 2.0.0", + "substrate-test-runtime 2.0.0", + "wasm-timer 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "sc-transaction-pool" version = "2.0.0" dependencies = [ - "derive_more", - "futures 0.3.4", - "futures-diagnose", - "futures-timer 2.0.2", - "log 0.4.8", - "parity-scale-codec", - "parity-util-mem", - "parking_lot 0.10.0", - "sc-client-api", - "sc-transaction-graph", - "sp-api", - "sp-blockchain", - "sp-core", - "sp-keyring", - "sp-runtime", - "sp-transaction-pool", - "substrate-test-runtime-client", - "substrate-test-runtime-transaction-pool", - "wasm-timer", + "derive_more 0.99.3 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-diagnose 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-timer 2.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-util-mem 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sc-client-api 2.0.0", + "sc-transaction-graph 2.0.0", + "sp-api 2.0.0", + "sp-blockchain 2.0.0", + "sp-core 2.0.0", + "sp-keyring 2.0.0", + "sp-runtime 2.0.0", + "sp-transaction-pool 2.0.0", + "substrate-test-runtime-client 2.0.0", + "substrate-test-runtime-transaction-pool 2.0.0", + "wasm-timer 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "schannel" version = "0.1.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "507a9e6e8ffe0a4e0ebb9a10293e62fdf7657c06f1b8bb07a8fcf697d2abf295" dependencies = [ - "lazy_static", - "winapi 0.3.8", + "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "schnorrkel" version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eacd8381b3c37840c9c9f40472af529e49975bdcbc24f83c31059fd6539023d3" dependencies = [ - "curve25519-dalek 1.2.3", - "failure", - "merlin", - "rand 0.6.5", - "rand_core 0.4.2", - "rand_os", - "sha2", - "subtle 2.2.2", - "zeroize 0.9.3", + "curve25519-dalek 1.2.3 (registry+https://github.com/rust-lang/crates.io-index)", + "failure 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", + "merlin 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_os 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", + "sha2 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", + "subtle 2.2.2 (registry+https://github.com/rust-lang/crates.io-index)", + "zeroize 0.9.3 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "scopeguard" -version = "1.0.0" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b42e15e59b18a828bbf5c58ea01debb36b9b096346de35d941dcb89009f24a0d" [[package]] name = "scroll" version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "abb2332cb595d33f7edd5700f4cbf94892e680c7f0ae56adab58a35190b66cb1" dependencies = [ - "scroll_derive", + "scroll_derive 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "scroll_derive" version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8584eea9b9ff42825b46faf46a8c24d2cff13ec152fa2a50df788b87c07ee28" dependencies = [ - "proc-macro2 1.0.8", - "quote 1.0.2", - "syn", + "proc-macro2 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 1.0.14 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "sct" version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3042af939fca8c3453b7af0f1c66e533a15a86169e39de2657310ade8f98d3c" dependencies = [ - "ring", - "untrusted", + "ring 0.16.11 (registry+https://github.com/rust-lang/crates.io-index)", + "untrusted 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "security-framework" version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ef2429d7cefe5fd28bd1d2ed41c944547d4ff84776f5935b456da44593a16df" dependencies = [ - "core-foundation", - "core-foundation-sys", - "libc", - "security-framework-sys", + "core-foundation 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)", + "core-foundation-sys 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", + "security-framework-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "security-framework-sys" version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e31493fc37615debb8c5090a7aeb4a9730bc61e77ab10b9af59f1a202284f895" dependencies = [ - "core-foundation-sys", + "core-foundation-sys 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "semver" version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a3186ec9e65071a2095434b1f5bb24838d4e8e130f584c790f6033c79943537" dependencies = [ - "semver-parser", + "semver-parser 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "semver" version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403" dependencies = [ - "semver-parser", - "serde", + "semver-parser 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "semver-parser" version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" [[package]] name = "send_wrapper" version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a0eddf2e8f50ced781f288c19f18621fa72a3779e3cb58dbf23b07469b0abeb4" [[package]] name = "send_wrapper" version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "686ef91cf020ad8d4aca9a7047641fd6add626b7b89e14546c2b6a76781cf822" [[package]] name = "send_wrapper" version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f638d531eccd6e23b980caf34876660d38e265409d8e99b397ab71eb3612fad0" [[package]] name = "serde" version = "1.0.104" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "414115f25f818d7dfccec8ee535d76949ae78584fc4f79a6f45a904bf8ab4449" dependencies = [ - "serde_derive", + "serde_derive 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "serde_derive" version = "1.0.104" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "128f9e303a5a29922045a830221b8f78ec74a5f544944f3d5984f8ec3895ef64" dependencies = [ - "proc-macro2 1.0.8", - "quote 1.0.2", - "syn", + "proc-macro2 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 1.0.14 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "serde_json" -version = "1.0.47" +version = "1.0.48" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15913895b61e0be854afd32fd4163fcd2a3df34142cf2cb961b310ce694cbf90" dependencies = [ - "itoa", - "ryu", - "serde", + "itoa 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", + "ryu 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "sha-1" version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7d94d0bede923b3cea61f3f1ff57ff8cdfd77b400fb8f9998949e0cf04163df" dependencies = [ - "block-buffer", - "digest", - "fake-simd", - "opaque-debug", + "block-buffer 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)", + "digest 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", + "fake-simd 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "opaque-debug 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "sha1" version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2579985fda508104f7587689507983eadd6a6e84dd35d6d115361f530916fa0d" [[package]] name = "sha2" version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "27044adfd2e1f077f649f59deb9490d3941d674002f7d062870a60ebe9bd47a0" dependencies = [ - "block-buffer", - "digest", - "fake-simd", - "opaque-debug", + "block-buffer 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)", + "digest 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", + "fake-simd 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "opaque-debug 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "sha3" version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd26bc0e7a2e3a7c959bc494caf58b72ee0c71d67704e9520f736ca7e4853ecf" dependencies = [ - "block-buffer", - "byte-tools", - "digest", - "keccak", - "opaque-debug", + "block-buffer 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)", + "byte-tools 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "digest 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", + "keccak 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "opaque-debug 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "shell32-sys" version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ee04b46101f57121c9da2b151988283b6beb79b34f5bb29a58ee48cb695122c" dependencies = [ - "winapi 0.2.8", - "winapi-build", + "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "shlex" version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fdf1b9db47230893d76faad238fd6097fd6d6a9245cd7a4d90dbd639536bbd2" [[package]] name = "signal-hook-registry" version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94f478ede9f64724c5d173d7bb56099ec3e2d9fc2774aac65d34b8b890405f41" dependencies = [ - "arc-swap", - "libc", + "arc-swap 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "slab" version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c111b5bd5695e56cffe5129854aa230b39c93a305372fdbb2668ca2394eea9f8" [[package]] name = "slog" version = "2.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1cc9c640a4adbfbcc11ffb95efe5aa7af7309e002adab54b185507dbf2377b99" dependencies = [ - "erased-serde", + "erased-serde 0.3.10 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "slog-json" version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ddc0d2aff1f8f325ef660d9a0eb6e6dcd20b30b3f581a5897f58bf42d061c37a" dependencies = [ - "chrono", - "erased-serde", - "serde", - "serde_json", - "slog", + "chrono 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", + "erased-serde 0.3.10 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_json 1.0.48 (registry+https://github.com/rust-lang/crates.io-index)", + "slog 2.5.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "slog-scope" version = "4.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c44c89dd8b0ae4537d1ae318353eaf7840b4869c536e31c41e963d1ea523ee6" dependencies = [ - "arc-swap", - "lazy_static", - "slog", + "arc-swap 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "slog 2.5.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "slog_derive" version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a945ec7f7ce853e89ffa36be1e27dce9a43e82ff9093bf3461c30d5da74ed11b" dependencies = [ - "proc-macro2 1.0.8", - "quote 1.0.2", - "syn", + "proc-macro2 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 1.0.14 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "smallvec" version = "0.6.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7b0758c52e15a8b5e3691eae6cc559f08eee9406e548a4477ba4e67770a82b6" dependencies = [ - "maybe-uninit", + "maybe-uninit 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "smallvec" version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c2fb2ec9bcd216a5b0d0ccf31ab17b5ed1d627960edff65bbe95d3ce221cefc" [[package]] name = "snow" version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "afb767eee7d257ba202f0b9b08673bc13b22281632ef45267b19f13100accd2f" dependencies = [ - "arrayref", - "blake2-rfc", - "chacha20-poly1305-aead", - "rand 0.7.3", - "rand_core 0.5.1", - "ring", - "rustc_version", - "sha2", - "subtle 2.2.2", - "x25519-dalek 0.6.0", + "arrayref 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", + "blake2-rfc 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)", + "chacha20-poly1305-aead 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_core 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", + "ring 0.16.11 (registry+https://github.com/rust-lang/crates.io-index)", + "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", + "sha2 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", + "subtle 2.2.2 (registry+https://github.com/rust-lang/crates.io-index)", + "x25519-dalek 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "soketto" version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c9dab3f95c9ebdf3a88268c19af668f637a3c5039c2c56ff2d40b1b2d64a25b" dependencies = [ - "base64 0.11.0", - "bytes 0.5.4", - "flate2", - "futures 0.3.4", - "http 0.2.0", - "httparse", - "log 0.4.8", - "rand 0.7.3", - "sha1", - "smallvec 1.2.0", - "static_assertions", - "thiserror", + "base64 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes 0.5.4 (registry+https://github.com/rust-lang/crates.io-index)", + "flate2 1.0.13 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "http 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "httparse 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)", + "sha1 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)", + "smallvec 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "static_assertions 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "thiserror 1.0.11 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "sourcefile" version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4bf77cb82ba8453b42b6ae1d692e4cdc92f9a47beaf89a847c8be83f4e328ad3" [[package]] name = "sp-allocator" version = "2.0.0" dependencies = [ - "derive_more", - "log 0.4.8", - "sp-core", - "sp-std", - "sp-wasm-interface", + "derive_more 0.99.3 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-core 2.0.0", + "sp-std 2.0.0", + "sp-wasm-interface 2.0.0", ] [[package]] name = "sp-api" version = "2.0.0" dependencies = [ - "hash-db", - "parity-scale-codec", - "sp-api-proc-macro", - "sp-core", - "sp-runtime", - "sp-state-machine", - "sp-std", - "sp-test-primitives", - "sp-version", + "hash-db 0.15.2 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-api-proc-macro 2.0.0", + "sp-core 2.0.0", + "sp-runtime 2.0.0", + "sp-state-machine 0.8.0", + "sp-std 2.0.0", + "sp-test-primitives 2.0.0", + "sp-version 2.0.0", ] [[package]] name = "sp-api-proc-macro" version = "2.0.0" dependencies = [ - "blake2-rfc", - "proc-macro-crate", - "proc-macro2 1.0.8", - "quote 1.0.2", - "syn", + "blake2-rfc 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro-crate 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 1.0.14 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "sp-api-test" version = "2.0.0" dependencies = [ - "criterion 0.3.1", - "parity-scale-codec", - "rustversion", - "sp-api", - "sp-blockchain", - "sp-consensus", - "sp-runtime", - "sp-state-machine", - "sp-version", - "substrate-test-runtime-client", - "trybuild", + "criterion 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "rustversion 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-api 2.0.0", + "sp-blockchain 2.0.0", + "sp-consensus 0.8.0", + "sp-runtime 2.0.0", + "sp-state-machine 0.8.0", + "sp-version 2.0.0", + "substrate-test-runtime-client 2.0.0", + "trybuild 1.0.22 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "sp-application-crypto" version = "2.0.0" dependencies = [ - "parity-scale-codec", - "serde", - "sp-core", - "sp-io", - "sp-std", + "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-core 2.0.0", + "sp-io 2.0.0", + "sp-std 2.0.0", ] [[package]] name = "sp-application-crypto-test" version = "2.0.0" dependencies = [ - "sp-api", - "sp-application-crypto", - "sp-core", - "sp-runtime", - "substrate-test-runtime-client", + "sp-api 2.0.0", + "sp-application-crypto 2.0.0", + "sp-core 2.0.0", + "sp-runtime 2.0.0", + "substrate-test-runtime-client 2.0.0", ] [[package]] name = "sp-arithmetic" version = "2.0.0" dependencies = [ - "criterion 0.3.1", - "integer-sqrt", - "num-traits", - "parity-scale-codec", - "primitive-types", - "rand 0.7.3", - "serde", - "sp-debug-derive", - "sp-std", + "criterion 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "integer-sqrt 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", + "num-traits 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "primitive-types 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-debug-derive 2.0.0", + "sp-std 2.0.0", ] [[package]] name = "sp-authority-discovery" version = "2.0.0" dependencies = [ - "parity-scale-codec", - "sp-api", - "sp-application-crypto", - "sp-runtime", - "sp-std", + "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-api 2.0.0", + "sp-application-crypto 2.0.0", + "sp-runtime 2.0.0", + "sp-std 2.0.0", ] [[package]] name = "sp-authorship" version = "2.0.0" dependencies = [ - "parity-scale-codec", - "sp-inherents", - "sp-runtime", - "sp-std", + "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-inherents 2.0.0", + "sp-runtime 2.0.0", + "sp-std 2.0.0", ] [[package]] name = "sp-block-builder" version = "2.0.0" dependencies = [ - "parity-scale-codec", - "sp-api", - "sp-inherents", - "sp-runtime", - "sp-std", + "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-api 2.0.0", + "sp-inherents 2.0.0", + "sp-runtime 2.0.0", + "sp-std 2.0.0", ] [[package]] name = "sp-blockchain" version = "2.0.0" dependencies = [ - "derive_more", - "log 0.4.8", - "lru 0.4.3", - "parity-scale-codec", - "parking_lot 0.10.0", - "sp-block-builder", - "sp-consensus", - "sp-runtime", - "sp-state-machine", + "derive_more 0.99.3 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "lru 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-block-builder 2.0.0", + "sp-consensus 0.8.0", + "sp-runtime 2.0.0", + "sp-state-machine 0.8.0", ] [[package]] name = "sp-consensus" version = "0.8.0" dependencies = [ - "derive_more", - "futures 0.3.4", - "futures-diagnose", - "futures-timer 3.0.1", - "libp2p", - "log 0.4.8", - "parity-scale-codec", - "parking_lot 0.10.0", - "serde", - "sp-core", - "sp-inherents", - "sp-runtime", - "sp-state-machine", - "sp-std", - "sp-test-primitives", - "sp-version", + "derive_more 0.99.3 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-diagnose 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-timer 3.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "libp2p 0.16.1 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-core 2.0.0", + "sp-inherents 2.0.0", + "sp-runtime 2.0.0", + "sp-state-machine 0.8.0", + "sp-std 2.0.0", + "sp-test-primitives 2.0.0", + "sp-version 2.0.0", ] [[package]] name = "sp-consensus-aura" version = "0.8.0" dependencies = [ - "parity-scale-codec", - "sp-api", - "sp-application-crypto", - "sp-inherents", - "sp-runtime", - "sp-std", - "sp-timestamp", + "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-api 2.0.0", + "sp-application-crypto 2.0.0", + "sp-inherents 2.0.0", + "sp-runtime 2.0.0", + "sp-std 2.0.0", + "sp-timestamp 2.0.0", ] [[package]] name = "sp-consensus-babe" version = "0.8.0" dependencies = [ - "parity-scale-codec", - "schnorrkel", - "sp-api", - "sp-application-crypto", - "sp-consensus", - "sp-inherents", - "sp-runtime", - "sp-std", - "sp-timestamp", + "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "schnorrkel 0.8.5 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-api 2.0.0", + "sp-application-crypto 2.0.0", + "sp-consensus 0.8.0", + "sp-inherents 2.0.0", + "sp-runtime 2.0.0", + "sp-std 2.0.0", + "sp-timestamp 2.0.0", ] [[package]] name = "sp-consensus-pow" version = "0.8.0" dependencies = [ - "parity-scale-codec", - "sp-api", - "sp-core", - "sp-runtime", - "sp-std", + "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-api 2.0.0", + "sp-core 2.0.0", + "sp-runtime 2.0.0", + "sp-std 2.0.0", ] [[package]] name = "sp-core" version = "2.0.0" dependencies = [ - "base58", - "blake2-rfc", - "byteorder 1.3.4", - "criterion 0.2.11", - "ed25519-dalek", - "hash-db", - "hash256-std-hasher", - "hex", - "hex-literal", - "impl-serde 0.3.0", - "lazy_static", - "libsecp256k1", - "log 0.4.8", - "num-traits", - "parity-scale-codec", - "parity-util-mem", - "parking_lot 0.10.0", - "pretty_assertions", - "primitive-types", - "rand 0.7.3", - "regex", - "rustc-hex", - "schnorrkel", - "serde", - "serde_json", - "sha2", - "sp-debug-derive", - "sp-externalities", - "sp-runtime-interface", - "sp-serializer", - "sp-std", - "sp-storage", - "substrate-bip39", - "tiny-bip39", - "tiny-keccak 2.0.1", - "twox-hash", - "wasmi", - "zeroize 1.1.0", + "base58 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "blake2-rfc 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "criterion 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", + "ed25519-dalek 1.0.0-pre.3 (registry+https://github.com/rust-lang/crates.io-index)", + "hash-db 0.15.2 (registry+https://github.com/rust-lang/crates.io-index)", + "hash256-std-hasher 0.15.2 (registry+https://github.com/rust-lang/crates.io-index)", + "hex 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", + "hex-literal 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "impl-serde 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "libsecp256k1 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "num-traits 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-util-mem 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", + "pretty_assertions 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", + "primitive-types 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)", + "regex 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "rustc-hex 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "schnorrkel 0.8.5 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_json 1.0.48 (registry+https://github.com/rust-lang/crates.io-index)", + "sha2 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-debug-derive 2.0.0", + "sp-externalities 0.8.0", + "sp-runtime-interface 2.0.0", + "sp-serializer 2.0.0", + "sp-std 2.0.0", + "sp-storage 2.0.0", + "substrate-bip39 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "tiny-bip39 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", + "tiny-keccak 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)", + "twox-hash 1.5.0 (registry+https://github.com/rust-lang/crates.io-index)", + "wasmi 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", + "zeroize 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "sp-debug-derive" version = "2.0.0" dependencies = [ - "proc-macro2 1.0.8", - "quote 1.0.2", - "syn", + "proc-macro2 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 1.0.14 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "sp-externalities" version = "0.8.0" dependencies = [ - "environmental", - "sp-std", - "sp-storage", + "environmental 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-std 2.0.0", + "sp-storage 2.0.0", ] [[package]] name = "sp-finality-grandpa" version = "2.0.0" dependencies = [ - "parity-scale-codec", - "serde", - "sp-api", - "sp-application-crypto", - "sp-runtime", - "sp-std", + "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-api 2.0.0", + "sp-application-crypto 2.0.0", + "sp-runtime 2.0.0", + "sp-std 2.0.0", ] [[package]] name = "sp-finality-tracker" version = "2.0.0" dependencies = [ - "parity-scale-codec", - "sp-inherents", - "sp-std", + "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-inherents 2.0.0", + "sp-std 2.0.0", ] [[package]] name = "sp-inherents" version = "2.0.0" dependencies = [ - "derive_more", - "parity-scale-codec", - "parking_lot 0.10.0", - "sp-core", - "sp-std", + "derive_more 0.99.3 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-core 2.0.0", + "sp-std 2.0.0", ] [[package]] name = "sp-io" version = "2.0.0" dependencies = [ - "hash-db", - "libsecp256k1", - "log 0.4.8", - "parity-scale-codec", - "sp-core", - "sp-externalities", - "sp-runtime-interface", - "sp-state-machine", - "sp-std", - "sp-trie", - "sp-wasm-interface", + "hash-db 0.15.2 (registry+https://github.com/rust-lang/crates.io-index)", + "libsecp256k1 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-core 2.0.0", + "sp-externalities 0.8.0", + "sp-runtime-interface 2.0.0", + "sp-state-machine 0.8.0", + "sp-std 2.0.0", + "sp-trie 2.0.0", + "sp-wasm-interface 2.0.0", ] [[package]] name = "sp-keyring" version = "2.0.0" dependencies = [ - "lazy_static", - "sp-core", - "sp-runtime", - "strum", + "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-core 2.0.0", + "sp-runtime 2.0.0", + "strum 0.16.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "sp-offchain" version = "2.0.0" dependencies = [ - "sp-api", - "sp-runtime", + "sp-api 2.0.0", + "sp-runtime 2.0.0", ] [[package]] name = "sp-panic-handler" version = "2.0.0" dependencies = [ - "backtrace", - "log 0.4.8", + "backtrace 0.3.44 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "sp-phragmen" version = "2.0.0" dependencies = [ - "rand 0.7.3", - "serde", - "sp-io", - "sp-runtime", - "sp-std", - "substrate-test-utils", + "rand 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-io 2.0.0", + "sp-runtime 2.0.0", + "sp-std 2.0.0", + "substrate-test-utils 2.0.0", ] [[package]] name = "sp-rpc" version = "2.0.0" dependencies = [ - "serde", - "serde_json", - "sp-core", + "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_json 1.0.48 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-core 2.0.0", ] [[package]] name = "sp-runtime" version = "2.0.0" dependencies = [ - "impl-trait-for-tuples", - "log 0.4.8", - "parity-scale-codec", - "parity-util-mem", - "paste", - "rand 0.7.3", - "serde", - "serde_json", - "sp-application-crypto", - "sp-arithmetic", - "sp-core", - "sp-inherents", - "sp-io", - "sp-std", + "impl-trait-for-tuples 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-util-mem 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", + "paste 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_json 1.0.48 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-application-crypto 2.0.0", + "sp-arithmetic 2.0.0", + "sp-core 2.0.0", + "sp-inherents 2.0.0", + "sp-io 2.0.0", + "sp-std 2.0.0", ] [[package]] name = "sp-runtime-interface" version = "2.0.0" dependencies = [ - "parity-scale-codec", - "primitive-types", - "rustversion", - "sp-core", - "sp-externalities", - "sp-io", - "sp-runtime-interface-proc-macro", - "sp-runtime-interface-test-wasm", - "sp-state-machine", - "sp-std", - "sp-wasm-interface", - "static_assertions", - "trybuild", + "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "primitive-types 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", + "rustversion 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-core 2.0.0", + "sp-externalities 0.8.0", + "sp-io 2.0.0", + "sp-runtime-interface-proc-macro 2.0.0", + "sp-runtime-interface-test-wasm 2.0.0", + "sp-state-machine 0.8.0", + "sp-std 2.0.0", + "sp-wasm-interface 2.0.0", + "static_assertions 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "trybuild 1.0.22 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "sp-runtime-interface-proc-macro" version = "2.0.0" dependencies = [ - "Inflector", - "proc-macro-crate", - "proc-macro2 1.0.8", - "quote 1.0.2", - "syn", + "Inflector 0.11.4 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro-crate 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 1.0.14 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "sp-runtime-interface-test" version = "2.0.0" dependencies = [ - "sc-executor", - "sp-core", - "sp-io", - "sp-runtime-interface", - "sp-runtime-interface-test-wasm", - "sp-state-machine", + "sc-executor 0.8.0", + "sp-core 2.0.0", + "sp-io 2.0.0", + "sp-runtime-interface 2.0.0", + "sp-runtime-interface-test-wasm 2.0.0", + "sp-state-machine 0.8.0", ] [[package]] name = "sp-runtime-interface-test-wasm" version = "2.0.0" dependencies = [ - "sp-core", - "sp-io", - "sp-runtime-interface", - "sp-std", - "substrate-wasm-builder-runner", + "sp-core 2.0.0", + "sp-io 2.0.0", + "sp-runtime-interface 2.0.0", + "sp-std 2.0.0", + "substrate-wasm-builder-runner 1.0.5", ] [[package]] name = "sp-sandbox" version = "0.8.0" dependencies = [ - "assert_matches", - "parity-scale-codec", - "sp-core", - "sp-io", - "sp-std", - "sp-wasm-interface", - "wabt", - "wasmi", + "assert_matches 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-core 2.0.0", + "sp-io 2.0.0", + "sp-std 2.0.0", + "sp-wasm-interface 2.0.0", + "wabt 0.9.2 (registry+https://github.com/rust-lang/crates.io-index)", + "wasmi 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "sp-serializer" version = "2.0.0" dependencies = [ - "serde", - "serde_json", + "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_json 1.0.48 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "sp-session" version = "2.0.0" dependencies = [ - "sp-api", - "sp-core", - "sp-runtime", - "sp-std", + "sp-api 2.0.0", + "sp-core 2.0.0", + "sp-runtime 2.0.0", + "sp-std 2.0.0", ] [[package]] name = "sp-staking" version = "2.0.0" dependencies = [ - "parity-scale-codec", - "sp-runtime", - "sp-std", + "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-runtime 2.0.0", + "sp-std 2.0.0", ] [[package]] name = "sp-state-machine" version = "0.8.0" dependencies = [ - "hash-db", - "hex-literal", - "log 0.4.8", - "num-traits", - "parity-scale-codec", - "parking_lot 0.10.0", - "rand 0.7.3", - "sp-core", - "sp-externalities", - "sp-panic-handler", - "sp-trie", - "trie-db", - "trie-root", + "hash-db 0.15.2 (registry+https://github.com/rust-lang/crates.io-index)", + "hex-literal 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "num-traits 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-core 2.0.0", + "sp-externalities 0.8.0", + "sp-panic-handler 2.0.0", + "sp-trie 2.0.0", + "trie-db 0.20.0 (registry+https://github.com/rust-lang/crates.io-index)", + "trie-root 0.16.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -7444,224 +6988,212 @@ version = "2.0.0" name = "sp-storage" version = "2.0.0" dependencies = [ - "impl-serde 0.2.3", - "serde", - "sp-debug-derive", - "sp-std", + "impl-serde 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-debug-derive 2.0.0", + "sp-std 2.0.0", ] [[package]] name = "sp-test-primitives" version = "2.0.0" dependencies = [ - "parity-scale-codec", - "parity-util-mem", - "serde", - "sp-application-crypto", - "sp-core", - "sp-runtime", + "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-util-mem 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-application-crypto 2.0.0", + "sp-core 2.0.0", + "sp-runtime 2.0.0", ] [[package]] name = "sp-timestamp" version = "2.0.0" dependencies = [ - "impl-trait-for-tuples", - "parity-scale-codec", - "sp-api", - "sp-inherents", - "sp-runtime", - "sp-std", - "wasm-timer", + "impl-trait-for-tuples 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-api 2.0.0", + "sp-inherents 2.0.0", + "sp-runtime 2.0.0", + "sp-std 2.0.0", + "wasm-timer 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "sp-transaction-pool" version = "2.0.0" dependencies = [ - "derive_more", - "futures 0.3.4", - "log 0.4.8", - "parity-scale-codec", - "serde", - "sp-api", - "sp-runtime", + "derive_more 0.99.3 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-api 2.0.0", + "sp-runtime 2.0.0", ] [[package]] name = "sp-trie" version = "2.0.0" dependencies = [ - "criterion 0.2.11", - "hash-db", - "hex-literal", - "memory-db", - "parity-scale-codec", - "sp-core", - "sp-std", - "trie-bench", - "trie-db", - "trie-root", - "trie-standardmap", + "criterion 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", + "hash-db 0.15.2 (registry+https://github.com/rust-lang/crates.io-index)", + "hex-literal 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "memory-db 0.19.0 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-core 2.0.0", + "sp-std 2.0.0", + "trie-bench 0.20.0 (registry+https://github.com/rust-lang/crates.io-index)", + "trie-db 0.20.0 (registry+https://github.com/rust-lang/crates.io-index)", + "trie-root 0.16.0 (registry+https://github.com/rust-lang/crates.io-index)", + "trie-standardmap 0.15.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "sp-version" version = "2.0.0" dependencies = [ - "impl-serde 0.2.3", - "parity-scale-codec", - "serde", - "sp-runtime", - "sp-std", + "impl-serde 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-runtime 2.0.0", + "sp-std 2.0.0", ] [[package]] name = "sp-wasm-interface" version = "2.0.0" dependencies = [ - "impl-trait-for-tuples", - "parity-scale-codec", - "sp-std", - "wasmi", + "impl-trait-for-tuples 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-std 2.0.0", + "wasmi 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "spin" version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d" [[package]] name = "stable_deref_trait" version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dba1a27d3efae4351c8051072d619e3ade2820635c3958d826bfea39d59b54c8" [[package]] name = "static_assertions" version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" [[package]] name = "stream-cipher" version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8131256a5896cabcf5eb04f4d6dacbe1aefda854b0d9896e09cb58829ec5638c" dependencies = [ - "generic-array", + "generic-array 0.12.3 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "string" version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d24114bfcceb867ca7f71a0d3fe45d45619ec47a6fbfa98cb14e14250bfa5d6d" dependencies = [ - "bytes 0.4.12", + "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "string-interner" version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd710eadff449a1531351b0e43eb81ea404336fa2f56c777427ab0e32a4cf183" dependencies = [ - "serde", + "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "strsim" version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ea5119cdb4c55b55d432abb513a0429384878c15dde60cc77b1c99de1a95a6a" [[package]] name = "structopt" version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1bcbed7d48956fcbb5d80c6b95aedb553513de0a1b451ea92679d999c010e98" dependencies = [ - "clap", - "lazy_static", - "structopt-derive", + "clap 2.33.0 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "structopt-derive 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "structopt-derive" version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "095064aa1f5b94d14e635d0a5684cf140c43ae40a0fd990708d38f5d669e5f64" dependencies = [ - "heck", - "proc-macro-error", - "proc-macro2 1.0.8", - "quote 1.0.2", - "syn", + "heck 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro-error 0.4.9 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 1.0.14 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "strum" version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6138f8f88a16d90134763314e3fc76fa3ed6a7db4725d6acf9a3ef95a3188d22" dependencies = [ - "strum_macros", + "strum_macros 0.16.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "strum_macros" version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0054a7df764039a6cd8592b9de84be4bec368ff081d203a7d5371cbfa8e65c81" dependencies = [ - "heck", - "proc-macro2 1.0.8", - "quote 1.0.2", - "syn", + "heck 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 1.0.14 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "subkey" version = "2.0.0" dependencies = [ - "clap", - "derive_more", - "frame-system", - "futures 0.1.29", - "hex", - "hex-literal", - "hyper 0.12.35", - "itertools", - "jsonrpc-core-client", - "libp2p", - "node-primitives", - "node-runtime", - "pallet-balances", - "pallet-transaction-payment", - "parity-scale-codec", - "rand 0.7.3", - "rpassword", - "rustc-hex", - "sc-rpc", - "serde_json", - "sp-core", - "sp-runtime", - "substrate-bip39", - "tiny-bip39", + "clap 2.33.0 (registry+https://github.com/rust-lang/crates.io-index)", + "derive_more 0.99.3 (registry+https://github.com/rust-lang/crates.io-index)", + "frame-system 2.0.0", + "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", + "hex 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", + "hex-literal 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "hyper 0.12.35 (registry+https://github.com/rust-lang/crates.io-index)", + "itertools 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)", + "jsonrpc-core-client 14.0.5 (registry+https://github.com/rust-lang/crates.io-index)", + "libp2p 0.16.1 (registry+https://github.com/rust-lang/crates.io-index)", + "node-primitives 2.0.0", + "node-runtime 2.0.0", + "pallet-balances 2.0.0", + "pallet-transaction-payment 2.0.0", + "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)", + "rpassword 4.0.5 (registry+https://github.com/rust-lang/crates.io-index)", + "rustc-hex 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sc-rpc 2.0.0", + "serde_json 1.0.48 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-core 2.0.0", + "sp-runtime 2.0.0", + "substrate-bip39 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "tiny-bip39 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "substrate-bip39" version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3be511be555a3633e71739a79e4ddff6a6aaa6579fa6114182a51d72c3eb93c5" dependencies = [ - "hmac", - "pbkdf2", - "schnorrkel", - "sha2", + "hmac 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", + "pbkdf2 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "schnorrkel 0.8.5 (registry+https://github.com/rust-lang/crates.io-index)", + "sha2 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -7672,131 +7204,131 @@ version = "2.0.0" name = "substrate-frame-rpc-support" version = "2.0.0" dependencies = [ - "frame-support", - "frame-system", - "futures 0.3.4", - "jsonrpc-client-transports", - "jsonrpc-core", - "parity-scale-codec", - "sc-rpc-api", - "serde", - "sp-storage", - "tokio 0.1.22", + "frame-support 2.0.0", + "frame-system 2.0.0", + "futures 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "jsonrpc-client-transports 14.0.5 (registry+https://github.com/rust-lang/crates.io-index)", + "jsonrpc-core 14.0.5 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "sc-rpc-api 0.8.0", + "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-storage 2.0.0", + "tokio 0.1.22 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "substrate-frame-rpc-system" version = "2.0.0" dependencies = [ - "env_logger 0.7.1", - "frame-system-rpc-runtime-api", - "futures 0.3.4", - "jsonrpc-core", - "jsonrpc-core-client", - "jsonrpc-derive", - "log 0.4.8", - "parity-scale-codec", - "sc-client", - "sc-transaction-pool", - "serde", - "sp-api", - "sp-blockchain", - "sp-core", - "sp-runtime", - "sp-transaction-pool", - "substrate-test-runtime-client", + "env_logger 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", + "frame-system-rpc-runtime-api 2.0.0", + "futures 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "jsonrpc-core 14.0.5 (registry+https://github.com/rust-lang/crates.io-index)", + "jsonrpc-core-client 14.0.5 (registry+https://github.com/rust-lang/crates.io-index)", + "jsonrpc-derive 14.0.5 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "sc-client 0.8.0", + "sc-transaction-pool 2.0.0", + "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-api 2.0.0", + "sp-blockchain 2.0.0", + "sp-core 2.0.0", + "sp-runtime 2.0.0", + "sp-transaction-pool 2.0.0", + "substrate-test-runtime-client 2.0.0", ] [[package]] name = "substrate-test-client" version = "2.0.0" dependencies = [ - "futures 0.3.4", - "hash-db", - "parity-scale-codec", - "sc-client", - "sc-client-api", - "sc-client-db", - "sc-executor", - "sp-blockchain", - "sp-consensus", - "sp-core", - "sp-keyring", - "sp-runtime", - "sp-state-machine", + "futures 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "hash-db 0.15.2 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "sc-client 0.8.0", + "sc-client-api 2.0.0", + "sc-client-db 0.8.0", + "sc-executor 0.8.0", + "sp-blockchain 2.0.0", + "sp-consensus 0.8.0", + "sp-core 2.0.0", + "sp-keyring 2.0.0", + "sp-runtime 2.0.0", + "sp-state-machine 0.8.0", ] [[package]] name = "substrate-test-runtime" version = "2.0.0" dependencies = [ - "cfg-if", - "frame-executive", - "frame-support", - "frame-system", - "frame-system-rpc-runtime-api", - "log 0.4.8", - "memory-db", - "pallet-babe", - "pallet-timestamp", - "parity-scale-codec", - "parity-util-mem", - "sc-client", - "sc-executor", - "serde", - "sp-api", - "sp-application-crypto", - "sp-block-builder", - "sp-consensus-aura", - "sp-consensus-babe", - "sp-core", - "sp-inherents", - "sp-io", - "sp-keyring", - "sp-offchain", - "sp-runtime", - "sp-runtime-interface", - "sp-session", - "sp-state-machine", - "sp-std", - "sp-transaction-pool", - "sp-trie", - "sp-version", - "substrate-test-runtime-client", - "substrate-wasm-builder-runner", - "trie-db", + "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", + "frame-executive 2.0.0", + "frame-support 2.0.0", + "frame-system 2.0.0", + "frame-system-rpc-runtime-api 2.0.0", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "memory-db 0.19.0 (registry+https://github.com/rust-lang/crates.io-index)", + "pallet-babe 2.0.0", + "pallet-timestamp 2.0.0", + "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-util-mem 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", + "sc-client 0.8.0", + "sc-executor 0.8.0", + "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-api 2.0.0", + "sp-application-crypto 2.0.0", + "sp-block-builder 2.0.0", + "sp-consensus-aura 0.8.0", + "sp-consensus-babe 0.8.0", + "sp-core 2.0.0", + "sp-inherents 2.0.0", + "sp-io 2.0.0", + "sp-keyring 2.0.0", + "sp-offchain 2.0.0", + "sp-runtime 2.0.0", + "sp-runtime-interface 2.0.0", + "sp-session 2.0.0", + "sp-state-machine 0.8.0", + "sp-std 2.0.0", + "sp-transaction-pool 2.0.0", + "sp-trie 2.0.0", + "sp-version 2.0.0", + "substrate-test-runtime-client 2.0.0", + "substrate-wasm-builder-runner 1.0.5", + "trie-db 0.20.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "substrate-test-runtime-client" version = "2.0.0" dependencies = [ - "futures 0.3.4", - "parity-scale-codec", - "sc-block-builder", - "sc-client", - "sc-client-api", - "sp-api", - "sp-blockchain", - "sp-core", - "sp-runtime", - "substrate-test-client", - "substrate-test-runtime", + "futures 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "sc-block-builder 0.8.0", + "sc-client 0.8.0", + "sc-client-api 2.0.0", + "sp-api 2.0.0", + "sp-blockchain 2.0.0", + "sp-core 2.0.0", + "sp-runtime 2.0.0", + "substrate-test-client 2.0.0", + "substrate-test-runtime 2.0.0", ] [[package]] name = "substrate-test-runtime-transaction-pool" version = "2.0.0" dependencies = [ - "derive_more", - "futures 0.3.4", - "parity-scale-codec", - "parking_lot 0.10.0", - "sc-transaction-graph", - "sp-blockchain", - "sp-runtime", - "sp-transaction-pool", - "substrate-test-runtime-client", + "derive_more 0.99.3 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sc-transaction-graph 2.0.0", + "sp-blockchain 2.0.0", + "sp-runtime 2.0.0", + "sp-transaction-pool 2.0.0", + "substrate-test-runtime-client 2.0.0", ] [[package]] @@ -7807,14 +7339,14 @@ version = "2.0.0" name = "substrate-wasm-builder" version = "1.0.9" dependencies = [ - "atty", - "build-helper", - "cargo_metadata", - "fs2", - "tempfile", - "toml", - "walkdir", - "wasm-gc-api", + "atty 0.2.14 (registry+https://github.com/rust-lang/crates.io-index)", + "build-helper 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "cargo_metadata 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)", + "fs2 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", + "tempfile 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "toml 0.5.6 (registry+https://github.com/rust-lang/crates.io-index)", + "walkdir 2.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "wasm-gc-api 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -7825,1436 +7357,1897 @@ version = "1.0.5" name = "subtle" version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d67a5a62ba6e01cb2192ff309324cb4875d0c451d55fe2319433abe7a05a8ee" [[package]] name = "subtle" version = "2.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c65d530b10ccaeac294f349038a597e435b18fb456aadd0840a623f83b9e941" [[package]] name = "syn" version = "1.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af6f3550d8dff9ef7dc34d384ac6f107e5d31c8f57d9f28e0081503f547ac8f5" dependencies = [ - "proc-macro2 1.0.8", - "quote 1.0.2", - "unicode-xid 0.2.0", + "proc-macro2 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "unicode-xid 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "syn-mid" version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7be3539f6c128a931cf19dcee741c1af532c7fd387baa739c03dd2e96479338a" dependencies = [ - "proc-macro2 1.0.8", - "quote 1.0.2", - "syn", + "proc-macro2 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 1.0.14 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "synstructure" version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67656ea1dc1b41b1451851562ea232ec2e5a80242139f7e679ceccfb5d61f545" dependencies = [ - "proc-macro2 1.0.8", - "quote 1.0.2", - "syn", - "unicode-xid 0.2.0", + "proc-macro2 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 1.0.14 (registry+https://github.com/rust-lang/crates.io-index)", + "unicode-xid 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "sysinfo" version = "0.9.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f4b2468c629cffba39c0a4425849ab3cdb03d9dfacba69684609aea04d08ff9" dependencies = [ - "cfg-if", - "doc-comment", - "libc", - "rayon", - "winapi 0.3.8", + "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", + "doc-comment 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", + "rayon 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "take_mut" version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f764005d11ee5f36500a149ace24e00e3da98b0158b3e2d53a7495660d3f4d60" [[package]] name = "target-lexicon" version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab0e7238dcc7b40a7be719a25365910f6807bd864f4cce6b2e6b873658e2b19d" [[package]] name = "target_info" version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c63f48baada5c52e65a29eef93ab4f8982681b67f9e8d29c7b05abcfec2b9ffe" [[package]] name = "tempdir" version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15f2b5fb00ccdf689e0149d1b1b3c03fead81c2b37735d812fa8bddbbf41b6d8" dependencies = [ - "rand 0.4.6", - "remove_dir_all", + "rand 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "remove_dir_all 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "tempfile" version = "3.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a6e24d9338a0a5be79593e2fa15a648add6138caa803e2d5bc782c371732ca9" dependencies = [ - "cfg-if", - "libc", - "rand 0.7.3", - "redox_syscall", - "remove_dir_all", - "winapi 0.3.8", + "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)", + "redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)", + "remove_dir_all 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "termcolor" version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb6bfa289a4d7c5766392812c0a1f4c1ba45afa1ad47803c11e1f407d846d75f" dependencies = [ - "winapi-util", + "winapi-util 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "test-case" version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a605baa797821796a751f4a959e1206079b24a4b7e1ed302b7d785d81a9276c9" dependencies = [ - "lazy_static", - "proc-macro2 1.0.8", - "quote 1.0.2", - "syn", - "version_check 0.9.1", + "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 1.0.14 (registry+https://github.com/rust-lang/crates.io-index)", + "version_check 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "textwrap" version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d326610f408c7a4eb6f51c37c330e496b08506c9457c9d34287ecc38809fb060" dependencies = [ - "unicode-width", + "unicode-width 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "thiserror" -version = "1.0.10" +version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "205684fd018ca14432b12cce6ea3d46763311a571c3d294e71ba3f01adcf1aad" dependencies = [ - "thiserror-impl", + "thiserror-impl 1.0.11 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "thiserror-impl" -version = "1.0.10" +version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57e4d2e50ca050ed44fb58309bdce3efa79948f84f9993ad1978de5eebdce5a7" dependencies = [ - "proc-macro2 1.0.8", - "quote 1.0.2", - "syn", + "proc-macro2 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 1.0.14 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "thread_local" version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d40c6d1b69745a6ec6fb1ca717914848da4b44ae29d9b3080cbee91d72a69b14" dependencies = [ - "lazy_static", + "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "threadpool" version = "1.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2f0c90a5f3459330ac8bc0d2f879c693bb7a2f59689c1083fc4ef83834da865" dependencies = [ - "num_cpus", + "num_cpus 1.12.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "time" version = "0.1.42" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db8dcfca086c1143c9270ac42a2bbd8a7ee477b78ac8e45b19abfb0cbede4b6f" dependencies = [ - "libc", - "redox_syscall", - "winapi 0.3.8", + "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", + "redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "tiny-bip39" version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1cd1fb03fe8e07d17cd851a624a9fff74642a997b67fbd1ccd77533241640d92" dependencies = [ - "failure", - "hmac", - "once_cell", - "pbkdf2", - "rand 0.7.3", - "rustc-hash", - "sha2", + "failure 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", + "hmac 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", + "once_cell 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "pbkdf2 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)", + "rustc-hash 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sha2 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "tiny-keccak" version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d8a021c69bb74a44ccedb824a046447e2c84a01df9e5c20779750acb38e11b2" dependencies = [ - "crunchy", + "crunchy 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "tiny-keccak" version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2953ca5148619bc99695c1274cb54c5275bbb913c6adad87e72eaf8db9787f69" dependencies = [ - "crunchy", + "crunchy 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "tinytemplate" version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57a3c6667d3e65eb1bc3aed6fd14011c6cbc3a0665218ab7f5daf040b9ec371a" dependencies = [ - "serde", - "serde_json", + "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_json 1.0.48 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "tokio" version = "0.1.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a09c0b5bb588872ab2f09afa13ee6e9dac11e10a0ec9e8e3ba39a5a5d530af6" dependencies = [ - "bytes 0.4.12", - "futures 0.1.29", - "mio", - "num_cpus", - "tokio-codec", - "tokio-current-thread", - "tokio-executor 0.1.10", - "tokio-fs", - "tokio-io", - "tokio-reactor", - "tokio-sync 0.1.8", - "tokio-tcp", - "tokio-threadpool", - "tokio-timer", - "tokio-udp", - "tokio-uds", + "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", + "mio 0.6.21 (registry+https://github.com/rust-lang/crates.io-index)", + "num_cpus 1.12.0 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-codec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-current-thread 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-executor 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-fs 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-reactor 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-sync 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-tcp 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-threadpool 0.1.18 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-timer 0.2.13 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-udp 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-uds 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "tokio" version = "0.2.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8fdd17989496f49cdc57978c96f0c9fe5e4a58a8bddc6813c449a4624f6a030b" dependencies = [ - "bytes 0.5.4", - "fnv", - "iovec", - "lazy_static", - "libc", - "memchr", - "mio", - "mio-uds", - "num_cpus", - "pin-project-lite", - "signal-hook-registry", - "slab", - "tokio-macros", - "winapi 0.3.8", + "bytes 0.5.4 (registry+https://github.com/rust-lang/crates.io-index)", + "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", + "iovec 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", + "memchr 2.3.2 (registry+https://github.com/rust-lang/crates.io-index)", + "mio 0.6.21 (registry+https://github.com/rust-lang/crates.io-index)", + "mio-uds 0.6.7 (registry+https://github.com/rust-lang/crates.io-index)", + "num_cpus 1.12.0 (registry+https://github.com/rust-lang/crates.io-index)", + "pin-project-lite 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", + "signal-hook-registry 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-macros 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "tokio-buf" version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8fb220f46c53859a4b7ec083e41dec9778ff0b1851c0942b211edb89e0ccdc46" dependencies = [ - "bytes 0.4.12", - "either", - "futures 0.1.29", + "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", + "either 1.5.3 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "tokio-codec" version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25b2998660ba0e70d18684de5d06b70b70a3a747469af9dea7618cc59e75976b" dependencies = [ - "bytes 0.4.12", - "futures 0.1.29", - "tokio-io", + "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "tokio-current-thread" version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1de0e32a83f131e002238d7ccde18211c0a5397f60cbfffcb112868c2e0e20e" dependencies = [ - "futures 0.1.29", - "tokio-executor 0.1.10", + "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-executor 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "tokio-executor" version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb2d1b8f4548dbf5e1f7818512e9c406860678f29c300cdf0ebac72d1a3a1671" dependencies = [ - "crossbeam-utils", - "futures 0.1.29", + "crossbeam-utils 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "tokio-executor" version = "0.2.0-alpha.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ee9ceecf69145923834ea73f32ba40c790fd877b74a7817dd0b089f1eb9c7c8" dependencies = [ - "futures-util-preview", - "lazy_static", - "tokio-sync 0.2.0-alpha.6", + "futures-util-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-sync 0.2.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "tokio-fs" version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "297a1206e0ca6302a0eed35b700d292b275256f596e2f3fea7729d5e629b6ff4" dependencies = [ - "futures 0.1.29", - "tokio-io", - "tokio-threadpool", + "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-threadpool 0.1.18 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "tokio-io" version = "0.1.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57fc868aae093479e3131e3d165c93b1c7474109d13c90ec0dda2a1bbfff0674" dependencies = [ - "bytes 0.4.12", - "futures 0.1.29", - "log 0.4.8", + "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "tokio-macros" version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4b1e7ed7d5d4c2af3d999904b0eebe76544897cdbfb2b9684bed2174ab20f7c" dependencies = [ - "proc-macro2 1.0.8", - "quote 1.0.2", - "syn", + "proc-macro2 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 1.0.14 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "tokio-reactor" version = "0.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09bc590ec4ba8ba87652da2068d150dcada2cfa2e07faae270a5e0409aa51351" dependencies = [ - "crossbeam-utils", - "futures 0.1.29", - "lazy_static", - "log 0.4.8", - "mio", - "num_cpus", - "parking_lot 0.9.0", - "slab", - "tokio-executor 0.1.10", - "tokio-io", - "tokio-sync 0.1.8", + "crossbeam-utils 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "mio 0.6.21 (registry+https://github.com/rust-lang/crates.io-index)", + "num_cpus 1.12.0 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", + "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-executor 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-sync 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "tokio-rustls" version = "0.12.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "141afec0978abae6573065a48882c6bae44c5cc61db9b511ac4abf6a09bfd9cc" dependencies = [ - "futures-core", - "rustls", - "tokio 0.2.11", - "webpki", + "futures-core 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "rustls 0.16.0 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", + "webpki 0.21.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "tokio-sync" version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "edfe50152bc8164fcc456dab7891fa9bf8beaf01c5ee7e1dd43a397c3cf87dee" dependencies = [ - "fnv", - "futures 0.1.29", + "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "tokio-sync" version = "0.2.0-alpha.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f1aaeb685540f7407ea0e27f1c9757d258c7c6bf4e3eb19da6fc59b747239d2" dependencies = [ - "fnv", - "futures-core-preview", - "futures-util-preview", + "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-core-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-util-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "tokio-tcp" version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "98df18ed66e3b72e742f185882a9e201892407957e45fbff8da17ae7a7c51f72" dependencies = [ - "bytes 0.4.12", - "futures 0.1.29", - "iovec", - "mio", - "tokio-io", - "tokio-reactor", + "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", + "iovec 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", + "mio 0.6.21 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-reactor 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "tokio-threadpool" version = "0.1.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df720b6581784c118f0eb4310796b12b1d242a7eb95f716a8367855325c25f89" dependencies = [ - "crossbeam-deque", - "crossbeam-queue", - "crossbeam-utils", - "futures 0.1.29", - "lazy_static", - "log 0.4.8", - "num_cpus", - "slab", - "tokio-executor 0.1.10", + "crossbeam-deque 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-queue 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-utils 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "num_cpus 1.12.0 (registry+https://github.com/rust-lang/crates.io-index)", + "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-executor 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "tokio-timer" version = "0.2.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93044f2d313c95ff1cb7809ce9a7a05735b012288a888b62d4434fd58c94f296" dependencies = [ - "crossbeam-utils", - "futures 0.1.29", - "slab", - "tokio-executor 0.1.10", + "crossbeam-utils 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", + "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-executor 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "tokio-tls" version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "354b8cd83825b3c20217a9dc174d6a0c67441a2fae5c41bcb1ea6679f6ae0f7c" dependencies = [ - "futures 0.1.29", - "native-tls", - "tokio-io", + "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", + "native-tls 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "tokio-udp" version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2a0b10e610b39c38b031a2fcab08e4b82f16ece36504988dcbd81dbba650d82" dependencies = [ - "bytes 0.4.12", - "futures 0.1.29", - "log 0.4.8", - "mio", - "tokio-codec", - "tokio-io", - "tokio-reactor", + "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "mio 0.6.21 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-codec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-reactor 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "tokio-uds" version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5076db410d6fdc6523df7595447629099a1fdc47b3d9f896220780fa48faf798" dependencies = [ - "bytes 0.4.12", - "futures 0.1.29", - "iovec", - "libc", - "log 0.4.8", - "mio", - "mio-uds", - "tokio-codec", - "tokio-io", - "tokio-reactor", + "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", + "iovec 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "mio 0.6.21 (registry+https://github.com/rust-lang/crates.io-index)", + "mio-uds 0.6.7 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-codec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-reactor 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "tokio-util" version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "571da51182ec208780505a32528fc5512a8fe1443ab960b3f2f3ef093cd16930" dependencies = [ - "bytes 0.5.4", - "futures-core", - "futures-sink", - "log 0.4.8", - "pin-project-lite", - "tokio 0.2.11", + "bytes 0.5.4 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-core 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-sink 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "pin-project-lite 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "toml" version = "0.5.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ffc92d160b1eef40665be3a05630d003936a3bc7da7421277846c2613e92c71a" dependencies = [ - "serde", + "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "tower-service" version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e987b6bf443f4b5b3b6f38704195592cca41c5bb7aedd3c3693c7081f8289860" [[package]] name = "tracing" version = "0.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e213bd24252abeb86a0b7060e02df677d367ce6cb772cef17e9214b8390a8d3" dependencies = [ - "cfg-if", - "tracing-attributes", - "tracing-core", + "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", + "tracing-attributes 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", + "tracing-core 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "tracing-attributes" version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04cfd395def5a60236e187e1ff905cb55668a59f29928dec05e6e1b1fd2ac1f3" dependencies = [ - "quote 1.0.2", - "syn", + "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 1.0.14 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "tracing-core" version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13a46f11e372b8bd4b4398ea54353412fdd7fd42a8370c7e543e218cf7661978" dependencies = [ - "lazy_static", + "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "traitobject" version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "efd1f82c56340fdf16f2a953d7bda4f8fdffba13d93b00844c25572110b26079" [[package]] name = "treeline" version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7f741b240f1a48843f9b8e0444fb55fb2a4ff67293b50a9179dfd5ea67f8d41" [[package]] name = "trie-bench" version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6dcd9bac85703d8f974ee1e6dfe668784b105d3385c174ad729adb7427ad5d81" dependencies = [ - "criterion 0.2.11", - "hash-db", - "keccak-hasher", - "memory-db", - "parity-scale-codec", - "trie-db", - "trie-root", - "trie-standardmap", + "criterion 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", + "hash-db 0.15.2 (registry+https://github.com/rust-lang/crates.io-index)", + "keccak-hasher 0.15.2 (registry+https://github.com/rust-lang/crates.io-index)", + "memory-db 0.19.0 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "trie-db 0.20.0 (registry+https://github.com/rust-lang/crates.io-index)", + "trie-root 0.16.0 (registry+https://github.com/rust-lang/crates.io-index)", + "trie-standardmap 0.15.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "trie-db" version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de9222c50cc325855621271157c973da27a0dcd26fa06f8edf81020bd2333df0" dependencies = [ - "hash-db", - "hashbrown 0.6.3", - "log 0.4.8", - "rustc-hex", - "smallvec 1.2.0", + "hash-db 0.15.2 (registry+https://github.com/rust-lang/crates.io-index)", + "hashbrown 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "rustc-hex 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "smallvec 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "trie-root" version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "652931506d2c1244d7217a70b99f56718a7b4161b37f04e7cd868072a99f68cd" dependencies = [ - "hash-db", + "hash-db 0.15.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "trie-standardmap" version = "0.15.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3161ba520ab28cd8e6b68e1126f1009f6e335339d1a73b978139011703264c8" dependencies = [ - "hash-db", - "keccak-hasher", + "hash-db 0.15.2 (registry+https://github.com/rust-lang/crates.io-index)", + "keccak-hasher 0.15.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "try-lock" version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e604eb7b43c06650e854be16a2a03155743d3752dd1c943f6829e26b7a36e382" [[package]] name = "trybuild" -version = "1.0.21" +version = "1.0.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f5b3f750c701725331ac78e389b5d143b7d25f6b6ffffd0d419759a9063ac5f" dependencies = [ - "glob 0.3.0", - "lazy_static", - "serde", - "serde_json", - "termcolor", - "toml", + "glob 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_json 1.0.48 (registry+https://github.com/rust-lang/crates.io-index)", + "termcolor 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "toml 0.5.6 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "twofish" version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "712d261e83e727c8e2dbb75dacac67c36e35db36a958ee504f2164fc052434e1" dependencies = [ - "block-cipher-trait", - "byteorder 1.3.4", - "opaque-debug", + "block-cipher-trait 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "opaque-debug 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "twox-hash" version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3bfd5b7557925ce778ff9b9ef90e3ade34c524b5ff10e239c69a42d546d2af56" dependencies = [ - "rand 0.7.3", + "rand 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "typeable" version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1410f6f91f21d1612654e7cc69193b0334f909dcf2c790c4826254fbb86f8887" [[package]] name = "typenum" version = "1.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d2783fe2d6b8c1101136184eb41be8b1ad379e4657050b8aaff0c79ee7575f9" [[package]] name = "uint" version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e75a4cdd7b87b28840dba13c483b9a88ee6bbf16ba5c951ee1ecfcf723078e0d" dependencies = [ - "byteorder 1.3.4", - "crunchy", - "rustc-hex", - "static_assertions", + "byteorder 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "crunchy 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", + "rustc-hex 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "static_assertions 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "unicase" version = "1.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f4765f83163b74f957c797ad9253caf97f103fb064d3999aea9568d09fc8a33" dependencies = [ - "version_check 0.1.5", + "version_check 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "unicase" version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50f37be617794602aabbeee0be4f259dc1778fabe05e2d67ee8f79326d5cb4f6" dependencies = [ - "version_check 0.9.1", + "version_check 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "unicode-bidi" version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49f2bd0c6468a8230e1db229cff8029217cf623c767ea5d60bfbd42729ea54d5" dependencies = [ - "matches", + "matches 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "unicode-normalization" version = "0.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5479532badd04e128284890390c1e876ef7a993d0570b3597ae43dfa1d59afa4" dependencies = [ - "smallvec 1.2.0", + "smallvec 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "unicode-segmentation" version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e83e153d1053cbb5a118eeff7fd5be06ed99153f00dbcd8ae310c5fb2b22edc0" [[package]] name = "unicode-width" version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "caaa9d531767d1ff2150b9332433f32a24622147e5ebb1f26409d5da67afd479" [[package]] name = "unicode-xid" version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc72304796d0818e357ead4e000d19c9c174ab23dc11093ac919054d20a6a7fc" [[package]] name = "unicode-xid" version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "826e7639553986605ec5979c7dd957c7895e93eabed50ab2ffa7f6128a75097c" [[package]] name = "unsigned-varint" version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7f0023a96687fe169081e8adce3f65e3874426b7886e9234d490af2dc077959" [[package]] name = "unsigned-varint" -version = "0.3.0" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c689459fbaeb50e56c6749275f084decfd02194ac5852e6617d95d0d3cf02eaf" dependencies = [ - "bytes 0.5.4", - "futures_codec", + "bytes 0.5.4 (registry+https://github.com/rust-lang/crates.io-index)", + "futures_codec 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "untrusted" version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60369ef7a31de49bcb3f6ca728d4ba7300d9a1658f94c727d4cab8c8d9f4aece" [[package]] name = "url" version = "1.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd4e7c0d531266369519a4aa4f399d748bd37043b00bde1e4ff1f60a120b355a" dependencies = [ - "idna 0.1.5", - "matches", - "percent-encoding 1.0.1", + "idna 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "matches 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", + "percent-encoding 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "url" version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "829d4a8476c35c9bf0bbce5a3b23f4106f79728039b726d292bb93bc106787cb" dependencies = [ - "idna 0.2.0", - "matches", - "percent-encoding 2.1.0", + "idna 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "matches 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", + "percent-encoding 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "vcpkg" version = "0.2.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fc439f2794e98976c88a2a2dafce96b930fe8010b0a256b3c2199a773933168" [[package]] name = "vec_map" version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05c78687fb1a80548ae3250346c3db86a80a7cdd77bda190189f2d0a0987c81a" [[package]] name = "vergen" version = "3.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6aba5e34f93dc7051dfad05b98a18e9156f27e7b431fe1d2398cb6061c0a1dba" dependencies = [ - "bitflags", - "chrono", - "failure", + "bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "chrono 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", + "failure 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "version_check" version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "914b1a6776c4c929a602fafd8bc742e06365d4bcbe48c30f9cca5824f70dc9dd" [[package]] name = "version_check" version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "078775d0255232fb988e6fccf26ddc9d1ac274299aaedcedce21c6f72cc533ce" [[package]] name = "void" version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d" [[package]] name = "wabt" version = "0.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c5c5c1286c6e578416982609f47594265f9d489f9b836157d403ad605a46693" dependencies = [ - "serde", - "serde_derive", - "serde_json", - "wabt-sys", + "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_json 1.0.48 (registry+https://github.com/rust-lang/crates.io-index)", + "wabt-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "wabt-sys" version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af5d153dc96aad7dc13ab90835b892c69867948112d95299e522d370c4e13a08" dependencies = [ - "cc", - "cmake", - "glob 0.2.11", + "cc 1.0.50 (registry+https://github.com/rust-lang/crates.io-index)", + "cmake 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)", + "glob 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "walkdir" version = "2.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "777182bc735b6424e1a57516d35ed72cb8019d85c8c9bf536dccb3445c1a2f7d" dependencies = [ - "same-file", - "winapi 0.3.8", - "winapi-util", + "same-file 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi-util 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "want" version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6395efa4784b027708f7451087e647ec73cc74f5d9bc2e418404248d679a230" dependencies = [ - "futures 0.1.29", - "log 0.4.8", - "try-lock", + "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "try-lock 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "want" version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ce8a968cb1cd110d136ff8b819a556d6fb6d919363c61534f6860c7eb172ba0" dependencies = [ - "log 0.4.8", - "try-lock", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "try-lock 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[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.58" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5205e9afdf42282b192e2310a5b463a6d1c1d774e30dc3c791ac37ab42d2616c" dependencies = [ - "cfg-if", - "wasm-bindgen-macro", + "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", + "wasm-bindgen-macro 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "wasm-bindgen-backend" version = "0.2.58" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11cdb95816290b525b32587d76419facd99662a07e59d3cdb560488a819d9a45" dependencies = [ - "bumpalo", - "lazy_static", - "log 0.4.8", - "proc-macro2 1.0.8", - "quote 1.0.2", - "syn", - "wasm-bindgen-shared", + "bumpalo 3.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 1.0.14 (registry+https://github.com/rust-lang/crates.io-index)", + "wasm-bindgen-shared 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "wasm-bindgen-futures" version = "0.4.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8bbdd49e3e28b40dec6a9ba8d17798245ce32b019513a845369c641b275135d9" dependencies = [ - "cfg-if", - "js-sys", - "wasm-bindgen", - "web-sys", + "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", + "js-sys 0.3.35 (registry+https://github.com/rust-lang/crates.io-index)", + "wasm-bindgen 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", + "web-sys 0.3.35 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "wasm-bindgen-macro" version = "0.2.58" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "574094772ce6921576fb6f2e3f7497b8a76273b6db092be18fc48a082de09dc3" dependencies = [ - "quote 1.0.2", - "wasm-bindgen-macro-support", + "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "wasm-bindgen-macro-support 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "wasm-bindgen-macro-support" version = "0.2.58" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e85031354f25eaebe78bb7db1c3d86140312a911a106b2e29f9cc440ce3e7668" dependencies = [ - "proc-macro2 1.0.8", - "quote 1.0.2", - "syn", - "wasm-bindgen-backend", - "wasm-bindgen-shared", + "proc-macro2 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 1.0.14 (registry+https://github.com/rust-lang/crates.io-index)", + "wasm-bindgen-backend 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", + "wasm-bindgen-shared 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "wasm-bindgen-shared" version = "0.2.58" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f5e7e61fc929f4c0dddb748b102ebf9f632e2b8d739f2016542b4de2965a9601" [[package]] name = "wasm-bindgen-webidl" version = "0.2.58" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef012a0d93fc0432df126a8eaf547b2dce25a8ce9212e1d3cbeef5c11157975d" dependencies = [ - "anyhow", - "heck", - "log 0.4.8", - "proc-macro2 1.0.8", - "quote 1.0.2", - "syn", - "wasm-bindgen-backend", - "weedle", + "anyhow 1.0.26 (registry+https://github.com/rust-lang/crates.io-index)", + "heck 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 1.0.14 (registry+https://github.com/rust-lang/crates.io-index)", + "wasm-bindgen-backend 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", + "weedle 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "wasm-gc-api" version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0c32691b6c7e6c14e7f8fd55361a9088b507aa49620fcd06c09b3a1082186b9" dependencies = [ - "log 0.4.8", - "parity-wasm 0.32.0", - "rustc-demangle", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-wasm 0.32.0 (registry+https://github.com/rust-lang/crates.io-index)", + "rustc-demangle 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "wasm-timer" version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "324c5e65a08699c9c4334ba136597ab22b85dccd4b65dd1e36ccf8f723a95b54" dependencies = [ - "futures 0.3.4", - "js-sys", - "parking_lot 0.9.0", - "pin-utils", - "send_wrapper 0.2.0", - "wasm-bindgen", - "wasm-bindgen-futures", - "web-sys", + "futures 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "js-sys 0.3.35 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", + "pin-utils 0.1.0-alpha.4 (registry+https://github.com/rust-lang/crates.io-index)", + "send_wrapper 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "wasm-bindgen 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", + "wasm-bindgen-futures 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "web-sys 0.3.35 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "wasmi" version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf617d864d25af3587aa745529f7aaa541066c876d57e050c0d0c85c61c92aff" dependencies = [ - "errno", - "libc", - "memory_units", - "num-rational", - "num-traits", - "parity-wasm 0.41.0", - "wasmi-validation", + "errno 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", + "memory_units 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "num-rational 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", + "num-traits 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-wasm 0.41.0 (registry+https://github.com/rust-lang/crates.io-index)", + "wasmi-validation 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "wasmi-validation" version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea78c597064ba73596099281e2f4cfc019075122a65cdda3205af94f0b264d93" dependencies = [ - "parity-wasm 0.41.0", + "parity-wasm 0.41.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "wasmparser" version = "0.48.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "073da89bf1c84db000dd68ce660c1b4a08e3a2d28fd1e3394ab9e7abdde4a0f8" [[package]] name = "wasmparser" -version = "0.51.1" +version = "0.51.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e41b27a1677fe28c115de49efca55dabb14f7fece2c32947ffb9b1064fe5bd4" [[package]] name = "wasmtime" version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5614d964c3e7d07a13b59aca66103c52656bd80430f0d86dc7eeb3af4f03d4a2" dependencies = [ - "anyhow", - "backtrace", - "cfg-if", - "lazy_static", - "libc", - "region", - "rustc-demangle", - "target-lexicon", - "wasmparser 0.51.1", - "wasmtime-environ", - "wasmtime-jit", - "wasmtime-runtime", - "wat", - "winapi 0.3.8", + "anyhow 1.0.26 (registry+https://github.com/rust-lang/crates.io-index)", + "backtrace 0.3.44 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", + "region 2.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "rustc-demangle 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)", + "target-lexicon 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", + "wasmparser 0.51.2 (registry+https://github.com/rust-lang/crates.io-index)", + "wasmtime-environ 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", + "wasmtime-jit 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", + "wasmtime-runtime 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", + "wat 1.0.9 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "wasmtime-debug" version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "feb5900275b4ef0b621ce725b9d5660b12825d7f7d79b392b97baf089ffab8c0" dependencies = [ - "anyhow", - "faerie", - "gimli 0.19.0", - "more-asserts", - "target-lexicon", - "thiserror", - "wasmparser 0.51.1", - "wasmtime-environ", + "anyhow 1.0.26 (registry+https://github.com/rust-lang/crates.io-index)", + "faerie 0.14.0 (registry+https://github.com/rust-lang/crates.io-index)", + "gimli 0.19.0 (registry+https://github.com/rust-lang/crates.io-index)", + "more-asserts 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "target-lexicon 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", + "thiserror 1.0.11 (registry+https://github.com/rust-lang/crates.io-index)", + "wasmparser 0.51.2 (registry+https://github.com/rust-lang/crates.io-index)", + "wasmtime-environ 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "wasmtime-environ" version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f04661851e133fb11691c4a0f92a705766b4bbf7afc06811f949e295cc8414fc" -dependencies = [ - "anyhow", - "base64 0.11.0", - "bincode", - "cranelift-codegen", - "cranelift-entity", - "cranelift-wasm", - "directories", - "errno", - "file-per-thread-logger", - "indexmap", - "libc", - "log 0.4.8", - "more-asserts", - "rayon", - "serde", - "sha2", - "thiserror", - "toml", - "wasmparser 0.51.1", - "winapi 0.3.8", - "zstd", +dependencies = [ + "anyhow 1.0.26 (registry+https://github.com/rust-lang/crates.io-index)", + "base64 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", + "bincode 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "cranelift-codegen 0.58.0 (registry+https://github.com/rust-lang/crates.io-index)", + "cranelift-entity 0.58.0 (registry+https://github.com/rust-lang/crates.io-index)", + "cranelift-wasm 0.58.0 (registry+https://github.com/rust-lang/crates.io-index)", + "directories 2.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "errno 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", + "file-per-thread-logger 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "indexmap 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "more-asserts 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "rayon 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", + "sha2 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", + "thiserror 1.0.11 (registry+https://github.com/rust-lang/crates.io-index)", + "toml 0.5.6 (registry+https://github.com/rust-lang/crates.io-index)", + "wasmparser 0.51.2 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", + "zstd 0.5.1+zstd.1.4.4 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "wasmtime-jit" version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d451353764ce55c9bb6a8b260063cfc209b7adadd277a9a872ab4563a69e357c" dependencies = [ - "anyhow", - "cfg-if", - "cranelift-codegen", - "cranelift-entity", - "cranelift-frontend", - "cranelift-native", - "cranelift-wasm", - "more-asserts", - "region", - "target-lexicon", - "thiserror", - "wasmparser 0.51.1", - "wasmtime-debug", - "wasmtime-environ", - "wasmtime-runtime", - "winapi 0.3.8", + "anyhow 1.0.26 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", + "cranelift-codegen 0.58.0 (registry+https://github.com/rust-lang/crates.io-index)", + "cranelift-entity 0.58.0 (registry+https://github.com/rust-lang/crates.io-index)", + "cranelift-frontend 0.58.0 (registry+https://github.com/rust-lang/crates.io-index)", + "cranelift-native 0.58.0 (registry+https://github.com/rust-lang/crates.io-index)", + "cranelift-wasm 0.58.0 (registry+https://github.com/rust-lang/crates.io-index)", + "more-asserts 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "region 2.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "target-lexicon 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", + "thiserror 1.0.11 (registry+https://github.com/rust-lang/crates.io-index)", + "wasmparser 0.51.2 (registry+https://github.com/rust-lang/crates.io-index)", + "wasmtime-debug 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", + "wasmtime-environ 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", + "wasmtime-runtime 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "wasmtime-runtime" version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7dbd4fc114b828cae3e405fed413df4b3814d87a92ea029640cec9ba41f0c162" dependencies = [ - "backtrace", - "cc", - "cfg-if", - "indexmap", - "libc", - "memoffset", - "more-asserts", - "region", - "thiserror", - "wasmtime-environ", - "winapi 0.3.8", + "backtrace 0.3.44 (registry+https://github.com/rust-lang/crates.io-index)", + "cc 1.0.50 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", + "indexmap 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", + "memoffset 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)", + "more-asserts 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "region 2.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "thiserror 1.0.11 (registry+https://github.com/rust-lang/crates.io-index)", + "wasmtime-environ 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "wast" -version = "7.0.0" +version = "8.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12a729d076deb29c8509fa71f2d427729f9394f9496844ed8fcab152f35d163d" dependencies = [ - "leb128", + "leb128 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "wat" -version = "1.0.8" +version = "1.0.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5795e34a4b39893653dec97e644fac85c31398e0ce1abecc48967aac83d9e8ce" dependencies = [ - "wast", + "wast 8.0.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "web-sys" version = "0.3.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aaf97caf6aa8c2b1dac90faf0db529d9d63c93846cca4911856f78a83cebf53b" dependencies = [ - "anyhow", - "js-sys", - "sourcefile", - "wasm-bindgen", - "wasm-bindgen-webidl", + "anyhow 1.0.26 (registry+https://github.com/rust-lang/crates.io-index)", + "js-sys 0.3.35 (registry+https://github.com/rust-lang/crates.io-index)", + "sourcefile 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", + "wasm-bindgen 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", + "wasm-bindgen-webidl 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "webpki" version = "0.21.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1f50e1972865d6b1adb54167d1c8ed48606004c2c9d0ea5f1eeb34d95e863ef" dependencies = [ - "ring", - "untrusted", + "ring 0.16.11 (registry+https://github.com/rust-lang/crates.io-index)", + "untrusted 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "webpki-roots" version = "0.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a262ae37dd9d60f60dd473d1158f9fbebf110ba7b6a5051c8160460f6043718b" dependencies = [ - "webpki", + "webpki 0.21.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "webpki-roots" version = "0.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91cd5736df7f12a964a5067a12c62fa38e1bd8080aff1f80bc29be7c80d19ab4" dependencies = [ - "webpki", + "webpki 0.21.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "websocket" version = "0.24.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "413b37840b9e27b340ce91b319ede10731de8c72f5bc4cb0206ec1ca4ce581d0" dependencies = [ - "bytes 0.4.12", - "futures 0.1.29", - "hyper 0.10.16", - "native-tls", - "rand 0.6.5", - "tokio-codec", - "tokio-io", - "tokio-reactor", - "tokio-tcp", - "tokio-tls", - "unicase 1.4.2", - "url 1.7.2", - "websocket-base", + "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", + "hyper 0.10.16 (registry+https://github.com/rust-lang/crates.io-index)", + "native-tls 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-codec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-reactor 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-tcp 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-tls 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "unicase 1.4.2 (registry+https://github.com/rust-lang/crates.io-index)", + "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)", + "websocket-base 0.24.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "websocket-base" version = "0.24.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e3810f0d00c4dccb54c30a4eee815e703232819dec7b007db115791c42aa374" dependencies = [ - "base64 0.10.1", - "bitflags", - "byteorder 1.3.4", - "bytes 0.4.12", - "futures 0.1.29", - "native-tls", - "rand 0.6.5", - "sha1", - "tokio-codec", - "tokio-io", - "tokio-tcp", - "tokio-tls", + "base64 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)", + "bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", + "native-tls 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", + "sha1 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-codec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-tcp 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-tls 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "weedle" version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3bb43f70885151e629e2a19ce9e50bd730fd436cfd4b666894c9ce4de9141164" dependencies = [ - "nom", + "nom 4.2.3 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "which" version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b57acb10231b9493c8472b20cb57317d0679a49e0bdbee44b3b803a6473af164" dependencies = [ - "failure", - "libc", + "failure 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "which" version = "3.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5475d47078209a02e60614f7ba5e645ef3ed60f771920ac1906d7c1cc65024c8" dependencies = [ - "libc", + "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "winapi" version = "0.2.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "167dc9d6949a9b857f3451275e911c3f44255842c1f7a76f33c55103a909087a" [[package]] name = "winapi" version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8093091eeb260906a183e6ae1abdba2ef5ef2257a21801128899c3fc699229c6" dependencies = [ - "winapi-i686-pc-windows-gnu", - "winapi-x86_64-pc-windows-gnu", + "winapi-i686-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi-x86_64-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "winapi-build" version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d315eee3b34aca4797b2da6b13ed88266e6d612562a0c46390af8299fc699bc" [[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.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ccfbf554c6ad11084fb7517daca16cfdcaccbdadba4fc336f032a8b12c2ad80" dependencies = [ - "winapi 0.3.8", + "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[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 = "ws" version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c51a2c47b5798ccc774ffb93ff536aec7c4275d722fd9c740c83cdd1af1f2d94" dependencies = [ - "byteorder 1.3.4", - "bytes 0.4.12", - "httparse", - "log 0.4.8", - "mio", - "mio-extras", - "rand 0.7.3", - "sha-1", - "slab", - "url 2.1.1", + "byteorder 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", + "httparse 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "mio 0.6.21 (registry+https://github.com/rust-lang/crates.io-index)", + "mio-extras 2.0.6 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)", + "sha-1 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)", + "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", + "url 2.1.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "ws2_32-sys" version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d59cefebd0c892fa2dd6de581e937301d8552cb44489cdff035c6187cb63fa5e" dependencies = [ - "winapi 0.2.8", - "winapi-build", + "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "x25519-dalek" version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ee1585dc1484373cbc1cee7aafda26634665cf449436fd6e24bfd1fad230538" dependencies = [ - "clear_on_drop", - "curve25519-dalek 1.2.3", - "rand_core 0.3.1", + "clear_on_drop 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", + "curve25519-dalek 1.2.3 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "x25519-dalek" version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "637ff90c9540fa3073bb577e65033069e4bae7c79d49d74aa3ffdf5342a53217" dependencies = [ - "curve25519-dalek 2.0.0", - "rand_core 0.5.1", - "zeroize 1.1.0", + "curve25519-dalek 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_core 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", + "zeroize 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "xdg" version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d089681aa106a86fade1b0128fb5daf07d5867a509ab036d99988dec80429a57" [[package]] name = "yamux" -version = "0.4.2" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "902f4cee32c401c211b6b69f4a3f6f4cf3515644db5bd822cf685a7dbd6201f9" dependencies = [ - "bytes 0.5.4", - "futures 0.3.4", - "log 0.4.8", - "nohash-hasher 0.1.3", - "parking_lot 0.10.0", - "rand 0.7.3", - "thiserror", + "bytes 0.5.4 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "nohash-hasher 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)", + "thiserror 1.0.11 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "zeroize" version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "45af6a010d13e4cf5b54c94ba5a2b2eba5596b9e46bf5875612d332a1f2b3f86" [[package]] name = "zeroize" version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3cbac2ed2ba24cc90f5e06485ac8c7c1e5449fe8911aef4d8877218af021a5b8" dependencies = [ - "zeroize_derive", + "zeroize_derive 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "zeroize_derive" version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de251eec69fc7c1bc3923403d18ececb929380e016afe103da75f396704f8ca2" dependencies = [ - "proc-macro2 1.0.8", - "quote 1.0.2", - "syn", - "synstructure", + "proc-macro2 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 1.0.14 (registry+https://github.com/rust-lang/crates.io-index)", + "synstructure 0.12.3 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "zstd" version = "0.5.1+zstd.1.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c5d978b793ae64375b80baf652919b148f6a496ac8802922d9999f5a553194f" dependencies = [ - "zstd-safe", + "zstd-safe 2.0.3+zstd.1.4.4 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "zstd-safe" version = "2.0.3+zstd.1.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bee25eac9753cfedd48133fa1736cbd23b774e253d89badbeac7d12b23848d3f" dependencies = [ - "libc", - "zstd-sys", + "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", + "zstd-sys 1.4.15+zstd.1.4.4 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "zstd-sys" version = "1.4.15+zstd.1.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89719b034dc22d240d5b407fb0a3fe6d29952c181cff9a9f95c0bd40b4f8f7d8" dependencies = [ - "cc", - "glob 0.3.0", - "libc", -] + "cc 1.0.50 (registry+https://github.com/rust-lang/crates.io-index)", + "glob 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[metadata] +"checksum Inflector 0.11.4 (registry+https://github.com/rust-lang/crates.io-index)" = "fe438c63458706e03479442743baae6c88256498e6431708f6dfc520a26515d3" +"checksum adler32 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)" = "5d2e7343e7fc9de883d1b0341e0b13970f764c14101234857d2ddafa1cb1cac2" +"checksum aes-ctr 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d2e5b0458ea3beae0d1d8c0f3946564f8e10f90646cf78c06b4351052058d1ee" +"checksum aes-soft 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "cfd7e7ae3f9a1fb5c03b389fc6bb9a51400d0c13053f0dca698c832bfd893a0d" +"checksum aesni 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "2f70a6b5f971e473091ab7cfb5ffac6cde81666c4556751d8d5620ead8abf100" +"checksum ahash 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)" = "6f33b5018f120946c1dcf279194f238a9f146725593ead1c08fa47ff22b0b5d3" +"checksum aho-corasick 0.7.8 (registry+https://github.com/rust-lang/crates.io-index)" = "743ad5a418686aad3b87fd14c43badd828cf26e214a00f92a384291cf22e1811" +"checksum ansi_term 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ee49baf6cb617b853aa8d93bf420db2383fab46d314482ca2803b40d5fde979b" +"checksum ansi_term 0.12.1 (registry+https://github.com/rust-lang/crates.io-index)" = "d52a9bb7ec0cf484c551830a7ce27bd20d67eac647e1befb56b0be4ee39a55d2" +"checksum anyhow 1.0.26 (registry+https://github.com/rust-lang/crates.io-index)" = "7825f6833612eb2414095684fcf6c635becf3ce97fe48cf6421321e93bfbd53c" +"checksum app_dirs 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "e73a24bad9bd6a94d6395382a6c69fe071708ae4409f763c5475e14ee896313d" +"checksum arc-swap 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)" = "d7b8a9123b8027467bce0099fe556c628a53c8d83df0507084c31e9ba2e39aff" +"checksum arrayref 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)" = "a4c527152e37cf757a3f78aae5a06fbeefdb07ccc535c980a3208ee3060dd544" +"checksum arrayvec 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)" = "cd9fd44efafa8690358b7408d253adf110036b88f55672a933f01d616ad9b1b9" +"checksum arrayvec 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "cff77d8686867eceff3105329d4698d96c2391c176d5d03adc90c7389162b5b8" +"checksum asn1_der 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)" = "6fce6b6a0ffdafebd82c87e79e3f40e8d2c523e5fea5566ff6b90509bf98d638" +"checksum asn1_der_derive 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "0d0864d84b8e07b145449be9a8537db86bf9de5ce03b913214694643b4743502" +"checksum assert_cmd 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)" = "6283bac8dd7226470d491bc4737816fea4ca1fba7a2847f2e9097fd6bfb4624c" +"checksum assert_matches 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7deb0a829ca7bcfaf5da70b073a8d128619259a7be8216a355e23f00763059e5" +"checksum async-std 1.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "538ecb01eb64eecd772087e5b6f7540cbc917f047727339a472dafed2185b267" +"checksum async-task 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "0ac2c016b079e771204030951c366db398864f5026f84a44dafb0ff20f02085d" +"checksum async-tls 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "6ce6977f57fa68da77ffe5542950d47e9c23d65f5bc7cb0a9f8700996913eec7" +"checksum atty 0.2.14 (registry+https://github.com/rust-lang/crates.io-index)" = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" +"checksum autocfg 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)" = "1d49d90015b3c36167a20fe2810c5cd875ad504b39cff3d4eae7977e6b7c1cb2" +"checksum autocfg 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "f8aac770f1885fd7e387acedd76065302551364496e46b3dd00860b2f8359b9d" +"checksum backtrace 0.3.44 (registry+https://github.com/rust-lang/crates.io-index)" = "e4036b9bf40f3cf16aba72a3d65e8a520fc4bafcdc7079aea8f848c58c5b5536" +"checksum backtrace-sys 0.1.32 (registry+https://github.com/rust-lang/crates.io-index)" = "5d6575f128516de27e3ce99689419835fce9643a9b215a14d2b5b685be018491" +"checksum base58 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "5024ee8015f02155eee35c711107ddd9a9bf3cb689cf2a9089c97e79b6e1ae83" +"checksum base64 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)" = "0b25d992356d2eb0ed82172f5248873db5560c4721f564b13cb5193bda5e668e" +"checksum base64 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b41b7ea54a0c9d92199de89e20e58d49f02f8e699814ef3fdf266f6f748d15c7" +"checksum base64 0.9.3 (registry+https://github.com/rust-lang/crates.io-index)" = "489d6c0ed21b11d038c31b6ceccca973e65d73ba3bd8ecb9a2babf5546164643" +"checksum bincode 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "5753e2a71534719bf3f4e57006c3a4f0d2c672a4b676eec84161f763eca87dbf" +"checksum bindgen 0.49.4 (registry+https://github.com/rust-lang/crates.io-index)" = "4c07087f3d5731bf3fb375a81841b99597e25dc11bd3bc72d16d43adf6624a6e" +"checksum bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "cf1de2fe8c75bc145a2f577add951f8134889b4795d47466a54a5c846d691693" +"checksum bitmask 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "5da9b3d9f6f585199287a473f4f8dfab6566cf827d15c00c219f53c645687ead" +"checksum bitvec 0.15.2 (registry+https://github.com/rust-lang/crates.io-index)" = "a993f74b4c99c1908d156b8d2e0fb6277736b0ecbd833982fd1241d39b2766a6" +"checksum blake2 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)" = "94cb07b0da6a73955f8fb85d24c466778e70cda767a568229b104f0264089330" +"checksum blake2-rfc 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)" = "5d6d530bdd2d52966a6d03b7a964add7ae1a288d25214066fd4b600f0f796400" +"checksum blake2b_simd 0.5.10 (registry+https://github.com/rust-lang/crates.io-index)" = "d8fb2d74254a3a0b5cac33ac9f8ed0e44aa50378d9dbb2e5d83bd21ed1dc2c8a" +"checksum block-buffer 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)" = "c0940dc441f31689269e10ac70eb1002a3a1d3ad1390e030043662eb7fe4688b" +"checksum block-cipher-trait 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)" = "1c924d49bd09e7c06003acda26cd9742e796e34282ec6c1189404dee0c1f4774" +"checksum block-padding 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "fa79dedbb091f449f1f39e53edf88d5dbe95f895dae6135a8d7b881fb5af73f5" +"checksum broadcaster 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d9c972e21e0d055a36cf73e4daae870941fe7a8abcd5ac3396aab9e4c126bd87" +"checksum bs58 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)" = "c95ee6bba9d950218b6cc910cf62bc9e0a171d0f4537e3627b0f54d08549b188" +"checksum bs58 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b170cd256a3f9fa6b9edae3e44a7dfdfc77e8124dbc3e2612d75f9c3e2396dae" +"checksum bstr 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)" = "502ae1441a0a5adb8fbd38a5955a6416b9493e92b465de5e4a9bde6a539c2c48" +"checksum build-helper 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "bdce191bf3fa4995ce948c8c83b4640a1745457a149e73c6db75b4ffe36aad5f" +"checksum bumpalo 3.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1f359dc14ff8911330a51ef78022d376f25ed00248912803b58f00cb1c27f742" +"checksum byte-slice-cast 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)" = "b0a5e3906bcbf133e33c1d4d95afc664ad37fbdb9f6568d8043e7ea8c27d93d3" +"checksum byte-tools 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "e3b5ca7a04898ad4bcd41c90c5285445ff5b791899bb1b0abdd2a2aa791211d7" +"checksum byteorder 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)" = "0fc10e8cc6b2580fda3f36eb6dc5316657f812a3df879a44a66fc9f0fdbc4855" +"checksum byteorder 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "08c48aae112d48ed9f069b33538ea9e3e90aa263cfa3d1c24309612b1f7472de" +"checksum bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)" = "206fdffcfa2df7cbe15601ef46c813fce0965eb3286db6b56c583b814b51c81c" +"checksum bytes 0.5.4 (registry+https://github.com/rust-lang/crates.io-index)" = "130aac562c0dd69c56b3b1cc8ffd2e17be31d0b6c25b61c96b76231aa23e39e1" +"checksum c2-chacha 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "214238caa1bf3a496ec3392968969cab8549f96ff30652c9e56885329315f6bb" +"checksum c_linked_list 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "4964518bd3b4a8190e832886cdc0da9794f12e8e6c1613a9e90ff331c4c8724b" +"checksum cargo_metadata 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)" = "46e3374c604fb39d1a2f35ed5e4a4e30e60d01fab49446e08f1b3e9a90aef202" +"checksum cast 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "4b9434b9a5aa1450faa3f9cb14ea0e8c53bb5d2b3c1bfd1ab4fc03e9f33fbfb0" +"checksum cc 1.0.50 (registry+https://github.com/rust-lang/crates.io-index)" = "95e28fa049fda1c330bcf9d723be7663a899c4679724b34c81e9f5a326aab8cd" +"checksum cexpr 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)" = "fce5b5fb86b0c57c20c834c1b412fd09c77c8a59b9473f86272709e78874cd1d" +"checksum cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)" = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822" +"checksum chacha20-poly1305-aead 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "77d2058ba29594f69c75e8a9018e0485e3914ca5084e3613cd64529042f5423b" +"checksum chrono 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)" = "31850b4a4d6bae316f7a09e691c944c28299298837edc0a03f755618c23cbc01" +"checksum clang-sys 0.28.1 (registry+https://github.com/rust-lang/crates.io-index)" = "81de550971c976f176130da4b2978d3b524eaa0fd9ac31f3ceb5ae1231fb4853" +"checksum clap 2.33.0 (registry+https://github.com/rust-lang/crates.io-index)" = "5067f5bb2d80ef5d68b4c87db81601f0b75bca627bc2ef76b141d7b846a3c6d9" +"checksum clear_on_drop 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "97276801e127ffb46b66ce23f35cc96bd454fa311294bced4bbace7baa8b1d17" +"checksum cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "ddfc5b9aa5d4507acaf872de71051dfd0e309860e88966e1051e462a077aac4f" +"checksum cmake 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)" = "81fb25b677f8bf1eb325017cb6bb8452f87969db0fedb4f757b297bee78a7c62" +"checksum console_error_panic_hook 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "b8d976903543e0c48546a91908f21588a680a8c8f984df9a5d69feccb2b2a211" +"checksum console_log 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "1e7871d2947441b0fdd8e2bd1ce2a2f75304f896582c0d572162d48290683c48" +"checksum const-random 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "2f1af9ac737b2dd2d577701e59fd09ba34822f6f2ebdb30a7647405d9e55e16a" +"checksum const-random-macro 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "25e4c606eb459dd29f7c57b2e0879f2b6f14ee130918c2b78ccb58a9624e6c7a" +"checksum constant_time_eq 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "245097e9a4535ee1e3e3931fcfcd55a796a44c643e8596ff6566d68f09b87bbc" +"checksum core-foundation 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)" = "25b9e03f145fd4f2bf705e07b900cd41fc636598fe5dc452fd0db1441c3f496d" +"checksum core-foundation-sys 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)" = "e7ca8a5221364ef15ce201e8ed2f609fc312682a8f4e0e3d4aa5879764e0fa3b" +"checksum cranelift-bforest 0.58.0 (registry+https://github.com/rust-lang/crates.io-index)" = "fd0f53d59dc9ab1c8ab68c991d8406b52b7a0aab0b15b05a3a6895579c4e5dd9" +"checksum cranelift-codegen 0.58.0 (registry+https://github.com/rust-lang/crates.io-index)" = "0381a794836fb994c47006465d46d46be072483b667f36013d993b9895117fee" +"checksum cranelift-codegen-meta 0.58.0 (registry+https://github.com/rust-lang/crates.io-index)" = "208c3c8d82bfef32a534c5020c6cfc3bc92f41388f1246b7bb98cf543331abaa" +"checksum cranelift-codegen-shared 0.58.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ea048c456a517e56fd6df8f0e3947922897e6e6f61fbc5eb557a36c7b8ff6394" +"checksum cranelift-entity 0.58.0 (registry+https://github.com/rust-lang/crates.io-index)" = "0c8c7ed50812194c9e9de1fa39c77b39fc9ab48173d5e7ee88b25b6a8953e9b8" +"checksum cranelift-frontend 0.58.0 (registry+https://github.com/rust-lang/crates.io-index)" = "21ceb931d9f919731df1b1ecdc716b5c66384b413a7f95909d1f45441ab9bef5" +"checksum cranelift-native 0.58.0 (registry+https://github.com/rust-lang/crates.io-index)" = "564ee82268bc25b914fcf331edfc2452f2d9ca34f976b187b4ca668beba250c8" +"checksum cranelift-wasm 0.58.0 (registry+https://github.com/rust-lang/crates.io-index)" = "de63e2271b374be5b07f359184e2126a08fb24d24a740cbc178b7e0107ddafa5" +"checksum crc32fast 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ba125de2af0df55319f41944744ad91c71113bf74a4646efff39afe1f6842db1" +"checksum criterion 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)" = "0363053954f3e679645fc443321ca128b7b950a6fe288cf5f9335cc22ee58394" +"checksum criterion 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "1fc755679c12bda8e5523a71e4d654b6bf2e14bd838dfc48cde6559a05caf7d1" +"checksum criterion-plot 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "76f9212ddf2f4a9eb2d401635190600656a1f88a932ef53d06e7fa4c7e02fb8e" +"checksum criterion-plot 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "a01e15e0ea58e8234f96146b1f91fa9d0e4dd7a38da93ff7a75d42c0b9d3a545" +"checksum crossbeam-channel 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "acec9a3b0b3559f15aee4f90746c4e5e293b701c0f7d3925d24e01645267b68c" +"checksum crossbeam-deque 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)" = "c3aa945d63861bfe624b55d153a39684da1e8c0bc8fba932f7ee3a3c16cea3ca" +"checksum crossbeam-epoch 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "5064ebdbf05ce3cb95e45c8b086f72263f4166b29b97f6baff7ef7fe047b55ac" +"checksum crossbeam-queue 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "c695eeca1e7173472a32221542ae469b3e9aac3a4fc81f7696bcad82029493db" +"checksum crossbeam-utils 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ce446db02cdc3165b94ae73111e570793400d0794e46125cc4056c81cbb039f4" +"checksum crunchy 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" +"checksum crypto-mac 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "4434400df11d95d556bac068ddfedd482915eb18fe8bea89bc80b6e4b1c179e5" +"checksum csv 1.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "00affe7f6ab566df61b4be3ce8cf16bc2576bca0963ceb0955e45d514bf9a279" +"checksum csv-core 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)" = "2b2466559f260f48ad25fe6317b3c8dac77b5bdb5763ac7d9d6103530663bc90" +"checksum ct-logs 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "4d3686f5fa27dbc1d76c751300376e167c5a43387f44bb451fd1c24776e49113" +"checksum ctor 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)" = "cd8ce37ad4184ab2ce004c33bf6379185d3b1c95801cab51026bd271bf68eedc" +"checksum ctr 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "022cd691704491df67d25d006fe8eca083098253c4d43516c2206479c58c6736" +"checksum cuckoofilter 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "8dd43f7cfaffe0a386636a10baea2ee05cc50df3b77bea4a456c9572a939bf1f" +"checksum curve25519-dalek 1.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "8b7dcd30ba50cdf88b55b033456138b7c0ac4afdc436d82e1b79f370f24cc66d" +"checksum curve25519-dalek 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "26778518a7f6cffa1d25a44b602b62b979bd88adb9e99ffec546998cf3404839" +"checksum data-encoding 2.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "f4f47ca1860a761136924ddd2422ba77b2ea54fe8cc75b9040804a0d9d32ad97" +"checksum derive_more 0.99.3 (registry+https://github.com/rust-lang/crates.io-index)" = "a806e96c59a76a5ba6e18735b6cf833344671e61e7863f2edb5c518ea2cac95c" +"checksum difference 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "524cbf6897b527295dff137cec09ecf3a05f4fddffd7dfcd1585403449e74198" +"checksum digest 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)" = "f3d0c8c8752312f9713efd397ff63acb9f85585afbf179282e720e7704954dd5" +"checksum directories 2.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "551a778172a450d7fc12e629ca3b0428d00f6afa9a43da1b630d54604e97371c" +"checksum dirs-sys 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "afa0b23de8fd801745c471deffa6e12d248f962c9fd4b4c33787b055599bde7b" +"checksum dns-parser 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "c4d33be9473d06f75f58220f71f7a9317aca647dc061dbd3c361b0bef505fbea" +"checksum doc-comment 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "923dea538cea0aa3025e8685b20d6ee21ef99c4f77e954a30febbaac5ec73a97" +"checksum ed25519-dalek 1.0.0-pre.3 (registry+https://github.com/rust-lang/crates.io-index)" = "978710b352437433c97b2bff193f2fb1dfd58a093f863dd95e225a19baa599a2" +"checksum either 1.5.3 (registry+https://github.com/rust-lang/crates.io-index)" = "bb1f6b1ce1c140482ea30ddd3335fc0024ac7ee112895426e0a629a6c20adfe3" +"checksum enumflags2 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)" = "33121c8782ba948ba332dab29311b026a8716dc65a1599e5b88f392d38496af8" +"checksum enumflags2_derive 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)" = "ecf634c5213044b8d54a46dd282cf5dd1f86bb5cb53e92c409cb4680a7fb9894" +"checksum env_logger 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)" = "aafcde04e90a5226a6443b7aabdb016ba2f8307c847d524724bd9b346dd1a2d3" +"checksum env_logger 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)" = "44533bbbb3bb3c1fa17d9f2e4e38bbbaf8396ba82193c4cb1b6445d711445d36" +"checksum environmental 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "516aa8d7a71cb00a1c4146f0798549b93d083d4f189b3ced8f3de6b8f11ee6c4" +"checksum erased-serde 0.3.10 (registry+https://github.com/rust-lang/crates.io-index)" = "cd7d80305c9bd8cd78e3c753eb9fb110f83621e5211f1a3afffcc812b104daf9" +"checksum errno 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)" = "c2a071601ed01b988f896ab14b95e67335d1eeb50190932a1320f7fe3cadc84e" +"checksum errno-dragonfly 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "14ca354e36190500e1e1fb267c647932382b54053c50b14970856c0b00a35067" +"checksum escargot 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "74cf96bec282dcdb07099f7e31d9fed323bca9435a09aba7b6d99b7617bca96d" +"checksum evm 0.15.0 (registry+https://github.com/rust-lang/crates.io-index)" = "272f65e18a2b6449b682bfcdf6c3ccc63db0b93898d89c0fb237548bbfc764a5" +"checksum evm-core 0.15.0 (registry+https://github.com/rust-lang/crates.io-index)" = "66534d42e13d50f9101bed87cb568fd5aa929c600c3c13f8dadbbf39f5635945" +"checksum evm-gasometer 0.15.0 (registry+https://github.com/rust-lang/crates.io-index)" = "39bc5b592803ca644781fe2290b7305ea5182f7c9516d615ddfb2308c2cab639" +"checksum evm-runtime 0.15.0 (registry+https://github.com/rust-lang/crates.io-index)" = "389e4b447fb26971a9c76c8aa49c0ab435f8e46e8fc46e1bc4ebf01f3c2b428f" +"checksum exit-future 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e43f2f1833d64e33f15592464d6fdd70f349dda7b1a53088eb83cd94014008c5" +"checksum faerie 0.14.0 (registry+https://github.com/rust-lang/crates.io-index)" = "74b9ed6159e4a6212c61d9c6a86bee01876b192a64accecf58d5b5ae3b667b52" +"checksum failure 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "f8273f13c977665c5db7eb2b99ae520952fe5ac831ae4cd09d80c4c7042b5ed9" +"checksum failure_derive 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "0bc225b78e0391e4b8683440bf2e63c2deeeb2ce5189eab46e2b68c6d3725d08" +"checksum fake-simd 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "e88a8acf291dafb59c2d96e8f59828f3838bb1a70398823ade51a84de6a6deed" +"checksum fallible-iterator 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "4443176a9f2c162692bd3d352d745ef9413eec5782a80d8fd6f8a1ac692a07f7" +"checksum fdlimit 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "9084c55bb76efb1496328976db88320fe7d9ee86e649e83c4ecce3ba7a9a35d1" +"checksum file-per-thread-logger 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "8505b75b31ef7285168dd237c4a7db3c1f3e0927e7d314e670bc98e854272fe9" +"checksum finality-grandpa 0.11.1 (registry+https://github.com/rust-lang/crates.io-index)" = "3cbb25bef9fcad97fb31e817da280b1c9174435b8769c770ee190a330dd181ea" +"checksum fixed-hash 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "3367952ceb191f4ab95dd5685dc163ac539e36202f9fcfd0cb22f9f9c542fefc" +"checksum fixedbitset 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "37ab347416e802de484e4d03c7316c48f1ecb56574dfd4a46a80f173ce1de04d" +"checksum flate2 1.0.13 (registry+https://github.com/rust-lang/crates.io-index)" = "6bd6d6f4752952feb71363cffc9ebac9411b75b87c6ab6058c40c8900cf43c0f" +"checksum fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)" = "2fad85553e09a6f881f739c29f0b00b0f01357c743266d478b68951ce23285f3" +"checksum foreign-types 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" +"checksum foreign-types-shared 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" +"checksum fs-swap 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)" = "921d332c89b3b61a826de38c61ee5b6e02c56806cade1b0e5d81bd71f57a71bb" +"checksum fs2 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)" = "9564fc758e15025b46aa6643b1b77d047d1a56a1aea6e01002ac0c7026876213" +"checksum fs_extra 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "5f2a4a2034423744d2cc7ca2068453168dcdb82c438419e639a26bd87839c674" +"checksum fuchsia-cprng 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "a06f77d526c1a601b7c4cdd98f54b5eaabffc14d5f2f0296febdc7f357c6d3ba" +"checksum fuchsia-zircon 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "2e9763c69ebaae630ba35f74888db465e49e259ba1bc0eda7d06f4a067615d82" +"checksum fuchsia-zircon-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "3dcaa9ae7725d12cdb85b3ad99a434db70b468c09ded17e012d86b5c1010f7a7" +"checksum futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)" = "1b980f2816d6ee8673b6517b52cb0e808a180efc92e5c19d02cdda79066703ef" +"checksum futures 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "5c329ae8753502fb44ae4fc2b622fa2a94652c41e795143765ba0927f92ab780" +"checksum futures-channel 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "f0c77d04ce8edd9cb903932b608268b3fffec4163dc053b3b402bf47eac1f1a8" +"checksum futures-channel-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)" = "d5e5f4df964fa9c1c2f8bddeb5c3611631cacd93baf810fc8bb2fb4b495c263a" +"checksum futures-core 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "f25592f769825e89b92358db00d26f965761e094951ac44d3663ef25b7ac464a" +"checksum futures-core-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)" = "b35b6263fb1ef523c3056565fa67b1d16f0a8604ff12b11b08c25f28a734c60a" +"checksum futures-cpupool 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "ab90cde24b3319636588d0c35fe03b1333857621051837ed769faefb4c2162e4" +"checksum futures-diagnose 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "fdcef58a173af8148b182684c9f2d5250875adbcaff7b5794073894f9d8634a9" +"checksum futures-executor 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "f674f3e1bcb15b37284a90cedf55afdba482ab061c407a9c0ebbd0f3109741ba" +"checksum futures-io 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "a638959aa96152c7a4cddf50fcb1e3fede0583b27157c26e67d6f99904090dc6" +"checksum futures-macro 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "9a5081aa3de1f7542a794a397cde100ed903b0630152d0973479018fd85423a7" +"checksum futures-sink 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "3466821b4bc114d95b087b850a724c6f83115e929bc88f1fa98a3304a944c8a6" +"checksum futures-task 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "7b0a34e53cf6cdcd0178aa573aed466b646eb3db769570841fda0c7ede375a27" +"checksum futures-timer 2.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "a1de7508b218029b0f01662ed8f61b1c964b3ae99d6f25462d0f55a595109df6" +"checksum futures-timer 3.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "e64b03909df88034c26dc1547e8970b91f98bdb65165d6a4e9110d94263dbb2c" +"checksum futures-util 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "22766cf25d64306bedf0384da004d05c9974ab104fcc4528f1236181c18004c5" +"checksum futures-util-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)" = "5ce968633c17e5f97936bd2797b6e38fb56cf16a7422319f7ec2e30d3c470e8d" +"checksum futures_codec 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "a0a73299e4718f5452e45980fc1d6957a070abe308d3700b63b8673f47e1c2b3" +"checksum fxhash 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "c31b6d751ae2c7f11320402d34e41349dd1016f8d5d45e48c4312bc8625af50c" +"checksum gcc 0.3.55 (registry+https://github.com/rust-lang/crates.io-index)" = "8f5f3913fa0bfe7ee1fd8248b6b9f42a5af4b9d65ec2dd2c3c26132b950ecfc2" +"checksum generic-array 0.12.3 (registry+https://github.com/rust-lang/crates.io-index)" = "c68f0274ae0e023facc3c97b2e00f076be70e254bc851d972503b328db79b2ec" +"checksum get_if_addrs 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)" = "abddb55a898d32925f3148bd281174a68eeb68bbfd9a5938a57b18f506ee4ef7" +"checksum get_if_addrs-sys 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "0d04f9fb746cf36b191c00f3ede8bde9c8e64f9f4b05ae2694a9ccf5e3f5ab48" +"checksum getrandom 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)" = "7abc8dd8451921606d809ba32e95b6111925cd2906060d2dcc29c070220503eb" +"checksum gimli 0.19.0 (registry+https://github.com/rust-lang/crates.io-index)" = "162d18ae5f2e3b90a993d202f1ba17a5633c2484426f8bcae201f86194bacd00" +"checksum gimli 0.20.0 (registry+https://github.com/rust-lang/crates.io-index)" = "81dd6190aad0f05ddbbf3245c54ed14ca4aa6dd32f22312b70d8f168c3e3e633" +"checksum glob 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)" = "8be18de09a56b60ed0edf84bc9df007e30040691af7acd1c41874faac5895bfb" +"checksum glob 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "9b919933a397b79c37e33b77bb2aa3dc8eb6e165ad809e58ff75bc7db2e34574" +"checksum globset 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)" = "925aa2cac82d8834e2b2a4415b6f6879757fb5c0928fc445ae76461a12eed8f2" +"checksum gloo-timers 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "0b2d17dbd803c2fc86cb1b613adf63192046a7176f383a8302594654752c4c4a" +"checksum goblin 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "3081214398d39e4bd7f2c1975f0488ed04614ffdd976c6fc7a0708278552c0da" +"checksum h2 0.1.26 (registry+https://github.com/rust-lang/crates.io-index)" = "a5b34c246847f938a410a03c5458c7fee2274436675e76d8b903c08efc29c462" +"checksum h2 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b9433d71e471c1736fd5a61b671fc0b148d7a2992f666c958d03cd8feb3b88d1" +"checksum hash-db 0.15.2 (registry+https://github.com/rust-lang/crates.io-index)" = "d23bd4e7b5eda0d0f3a307e8b381fdc8ba9000f26fbe912250c0a4cc3956364a" +"checksum hash256-std-hasher 0.15.2 (registry+https://github.com/rust-lang/crates.io-index)" = "92c171d55b98633f4ed3860808f004099b36c1cc29c42cfc53aa8591b21efcf2" +"checksum hashbrown 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e1de41fb8dba9714efd92241565cdff73f78508c95697dd56787d3cba27e2353" +"checksum hashbrown 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)" = "8e6073d0ca812575946eb5f35ff68dbe519907b25c42530389ff946dc84c6ead" +"checksum heck 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "20564e78d53d2bb135c343b3f47714a56af2061f1c928fdb541dc7b9fdd94205" +"checksum hermit-abi 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)" = "e2c55f143919fbc0bc77e427fe2d74cf23786d7c1875666f2fde3ac3c659bb67" +"checksum hex 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "644f9158b2f133fd50f5fb3242878846d9eb792e445c893805ff0e3824006e35" +"checksum hex-literal 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "961de220ec9a91af2e1e5bd80d02109155695e516771762381ef8581317066e0" +"checksum hex-literal-impl 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "9d4c5c844e2fee0bf673d54c2c177f1713b3d2af2ff6e666b49cb7572e6cf42d" +"checksum hmac 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)" = "5dcb5e64cda4c23119ab41ba960d1e170a774c8e4b9d9e6a9bc18aabf5e59695" +"checksum hmac-drbg 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "c6e570451493f10f6581b48cdd530413b63ea9e780f544bfd3bdcaa0d89d1a7b" +"checksum http 0.1.21 (registry+https://github.com/rust-lang/crates.io-index)" = "d6ccf5ede3a895d8856620237b2f02972c1bbc78d2965ad7fe8838d4a0ed41f0" +"checksum http 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b708cc7f06493459026f53b9a61a7a121a5d1ec6238dee58ea4941132b30156b" +"checksum http-body 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "6741c859c1b2463a423a1dbce98d418e6c3c3fc720fb0d45528657320920292d" +"checksum http-body 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "13d5ff830006f7646652e057693569bfe0d51760c0085a071769d142a205111b" +"checksum httparse 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "cd179ae861f0c2e53da70d892f5f3029f9594be0c41dc5269cd371691b1dc2f9" +"checksum humantime 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "df004cfca50ef23c36850aaaa59ad52cc70d0e90243c3c7737a4dd32dc7a3c4f" +"checksum hyper 0.10.16 (registry+https://github.com/rust-lang/crates.io-index)" = "0a0652d9a2609a968c14be1a9ea00bf4b1d64e2e1f53a1b51b6fff3a6e829273" +"checksum hyper 0.12.35 (registry+https://github.com/rust-lang/crates.io-index)" = "9dbe6ed1438e1f8ad955a4701e9a944938e9519f6888d12d8558b645e247d5f6" +"checksum hyper 0.13.2 (registry+https://github.com/rust-lang/crates.io-index)" = "fa1c527bbc634be72aa7ba31e4e4def9bbb020f5416916279b7c705cd838893e" +"checksum hyper-rustls 0.19.1 (registry+https://github.com/rust-lang/crates.io-index)" = "f6ea6215c7314d450ee45970ab8b3851ab447a0e6bafdd19e31b20a42dbb7faf" +"checksum hyper-tls 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "3a800d6aa50af4b5850b2b0f659625ce9504df908e9733b635720483be26174f" +"checksum idna 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "38f09e0f0b1fb55fdee1f17470ad800da77af5186a1a76c026b679358b7e844e" +"checksum idna 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "02e2673c30ee86b5b96a9cb52ad15718aa1f966f5ab9ad54a8b95d5ca33120a9" +"checksum impl-codec 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "1be51a921b067b0eaca2fad532d9400041561aa922221cc65f95a85641c6bf53" +"checksum impl-rlp 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "8f7a72f11830b52333f36e3b09a288333888bf54380fd0ac0790a3c31ab0f3c5" +"checksum impl-serde 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "58e3cae7e99c7ff5a995da2cf78dd0a5383740eda71d98cf7b1910c301ac69b8" +"checksum impl-serde 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "5bbe9ea9b182f0fb1cabbd61f4ff9b7b7b9197955e95a7e4c27de5055eb29ff8" +"checksum impl-trait-for-tuples 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "7ef5550a42e3740a0e71f909d4c861056a284060af885ae7aa6242820f920d9d" +"checksum indexmap 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "076f042c5b7b98f31d205f1249267e12a6518c1481e9dae9764af19b707d2292" +"checksum integer-sqrt 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "f65877bf7d44897a473350b1046277941cee20b263397e90869c50b6e766088b" +"checksum interleaved-ordered 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "141340095b15ed7491bd3d4ced9d20cebfb826174b6bb03386381f62b01e3d77" +"checksum iovec 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "b2b3ea6ff95e175473f8ffe6a7eb7c00d054240321b84c57051175fe3c1e075e" +"checksum ipnet 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "a859057dc563d1388c1e816f98a1892629075fc046ed06e845b883bb8b2916fb" +"checksum itertools 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)" = "f56a2d0bc861f9165be4eb3442afd3c236d8a98afd426f65d92324ae1091a484" +"checksum itoa 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)" = "b8b7a7c0c47db5545ed3fef7468ee7bb5b74691498139e4b3f6a20685dc6dd8e" +"checksum jobserver 0.1.21 (registry+https://github.com/rust-lang/crates.io-index)" = "5c71313ebb9439f74b00d9d2dcec36440beaf57a6aa0623068441dd7cd81a7f2" +"checksum js-sys 0.3.35 (registry+https://github.com/rust-lang/crates.io-index)" = "7889c7c36282151f6bf465be4700359318aef36baa951462382eae49e9577cf9" +"checksum jsonrpc-client-transports 14.0.5 (registry+https://github.com/rust-lang/crates.io-index)" = "0a9ae166c4d1f702d297cd76d4b55758ace80272ffc6dbb139fdc1bf810de40b" +"checksum jsonrpc-core 14.0.5 (registry+https://github.com/rust-lang/crates.io-index)" = "fe3b688648f1ef5d5072229e2d672ecb92cbff7d1c79bcf3fd5898f3f3df0970" +"checksum jsonrpc-core-client 14.0.5 (registry+https://github.com/rust-lang/crates.io-index)" = "080dc110be17701097df238fad3c816d4a478a1899dfbcf8ec8957dd40ec7304" +"checksum jsonrpc-derive 14.0.5 (registry+https://github.com/rust-lang/crates.io-index)" = "8609af8f63b626e8e211f52441fcdb6ec54f1a446606b10d5c89ae9bf8a20058" +"checksum jsonrpc-http-server 14.0.6 (registry+https://github.com/rust-lang/crates.io-index)" = "816d63997ea45d3634608edbef83ddb35e661f7c0b27b5b72f237e321f0e9807" +"checksum jsonrpc-pubsub 14.0.6 (registry+https://github.com/rust-lang/crates.io-index)" = "5b31c9b90731276fdd24d896f31bb10aecf2e5151733364ae81123186643d939" +"checksum jsonrpc-server-utils 14.0.5 (registry+https://github.com/rust-lang/crates.io-index)" = "95b7635e618a0edbbe0d2a2bbbc69874277c49383fcf6c3c0414491cfb517d22" +"checksum jsonrpc-ws-server 14.0.6 (registry+https://github.com/rust-lang/crates.io-index)" = "b94e5773b2ae66e0e02c80775ce6bbba6f15d5bb47c14ec36a36fcf94f8df851" +"checksum keccak 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "67c21572b4949434e4fc1e1978b99c5f77064153c59d998bf13ecd96fb5ecba7" +"checksum keccak-hasher 0.15.2 (registry+https://github.com/rust-lang/crates.io-index)" = "3468207deea1359a0e921591ae9b4c928733d94eb9d6a2eeda994cfd59f42cf8" +"checksum kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7507624b29483431c0ba2d82aece8ca6cdba9382bff4ddd0f7490560c056098d" +"checksum kv-log-macro 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)" = "8c54d9f465d530a752e6ebdc217e081a7a614b48cb200f6f0aee21ba6bc9aabb" +"checksum kvdb 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "03080afe6f42cd996da9f568d6add5d7fb5ee2ea7fb7802d2d2cbd836958fd87" +"checksum kvdb-memorydb 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b9355274e5a9e0a7e8ef43916950eae3949024de2a8dffe4d5a6c13974a37c8e" +"checksum kvdb-rocksdb 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "af36fd66ccd99f3f771ae39b75aaba28b952372b6debfb971134bf1f03466ab2" +"checksum kvdb-web 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7a985c47b4c46429e96033ebf6eaed784a81ceccb4e5df13d63f3b9078a4df81" +"checksum language-tags 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "a91d884b6667cd606bb5a69aa0c99ba811a115fc68915e7056ec08a46e93199a" +"checksum lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" +"checksum lazycell 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b294d6fa9ee409a054354afc4352b0b9ef7ca222c69b8812cbea9e7d2bf3783f" +"checksum leb128 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)" = "3576a87f2ba00f6f106fdfcd16db1d698d648a26ad8e0573cad8537c3c362d2a" +"checksum libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)" = "d515b1f41455adea1313a4a2ac8a8a477634fbae63cc6100e3aebb207ce61558" +"checksum libloading 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "f2b111a074963af1d37a139918ac6d49ad1d0d5e47f72fd55388619691a7d753" +"checksum libp2p 0.16.1 (registry+https://github.com/rust-lang/crates.io-index)" = "f6bf152b510950e1030f2d3dcca5f0b4017892be50348a15fd3eec8b90c826fb" +"checksum libp2p-core 0.16.0 (registry+https://github.com/rust-lang/crates.io-index)" = "3b874594c4b29de1a29f27871feba8e6cd13aa54a8a1e8f8c7cf3dfac5ca287c" +"checksum libp2p-core-derive 0.16.0 (registry+https://github.com/rust-lang/crates.io-index)" = "96d472e9d522f588805c77801de10b957be84e10f019ca5f869fa1825b15ea9b" +"checksum libp2p-deflate 0.16.0 (registry+https://github.com/rust-lang/crates.io-index)" = "2e25004d4d9837b44b22c5f1a69be1724a5168fef6cff1716b5176a972c3aa62" +"checksum libp2p-dns 0.16.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b99e552f9939b606eb4b59f7f64d9b01e3f96752f47e350fc3c5fc646ed3f649" +"checksum libp2p-floodsub 0.16.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1d3234f12e44f9a50351a9807b97fe7de11eb9ae4482370392ba10da6dc90722" +"checksum libp2p-gossipsub 0.16.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d46cb3e0841bd951cbf4feae56cdc081e6347836a644fb260c3ec554149b4006" +"checksum libp2p-identify 0.16.0 (registry+https://github.com/rust-lang/crates.io-index)" = "bfeb935a9bd41263e4f3a24b988e9f4a044f3ae89ac284e83c17fe2f84e0d66b" +"checksum libp2p-kad 0.16.1 (registry+https://github.com/rust-lang/crates.io-index)" = "76c260a92309112fff855ab2bd8f26c246c1dd380b87021abe61358dedb9748d" +"checksum libp2p-mdns 0.16.0 (registry+https://github.com/rust-lang/crates.io-index)" = "881fcfb360c2822db9f0e6bb6f89529621556ed9a8b038313414eda5107334de" +"checksum libp2p-mplex 0.16.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d8507b37ad0eed275efcde67a023c3d85af6c80768b193845b9288e848e1af95" +"checksum libp2p-noise 0.16.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ac7d33809afdf6794f09fdb2f9f94e1550ae230be5bae6430a078eb96fc9e5a6" +"checksum libp2p-ping 0.16.0 (registry+https://github.com/rust-lang/crates.io-index)" = "33d22f2f228b3a828dca1cb8aa9fa331e0bc9c36510cb2c1916956e20dc85e8c" +"checksum libp2p-plaintext 0.16.0 (registry+https://github.com/rust-lang/crates.io-index)" = "56126a204d7b3382bac163143ff4125a14570b3ba76ba979103d1ae1abed1923" +"checksum libp2p-pnet 0.16.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b916938a8868f75180aeeffcc6a516a922d165e8fa2a90b57bad989d1ccbb57a" +"checksum libp2p-secio 0.16.1 (registry+https://github.com/rust-lang/crates.io-index)" = "1219e9ecb4945d7331a05f5ffe96a1f6e28051bfa1223d4c60353c251de0354e" +"checksum libp2p-swarm 0.16.1 (registry+https://github.com/rust-lang/crates.io-index)" = "275471e7c0e88ae004660866cd54f603bd8bd1f4caef541a27f50dd8640c4d4c" +"checksum libp2p-tcp 0.16.0 (registry+https://github.com/rust-lang/crates.io-index)" = "f9e80ad4e3535345f3d666554ce347d3100453775611c05c60786bf9a1747a10" +"checksum libp2p-uds 0.16.0 (registry+https://github.com/rust-lang/crates.io-index)" = "76d329564a43da9d0e055a5b938633c4a8ceab1f59cec133fbc4647917c07341" +"checksum libp2p-wasm-ext 0.16.1 (registry+https://github.com/rust-lang/crates.io-index)" = "7d40c95ac1a9b7fb7770616e4165f34559885337f3be485b32acdd085261be3a" +"checksum libp2p-websocket 0.16.0 (registry+https://github.com/rust-lang/crates.io-index)" = "5351ca9eea122081c1c0f9323164d2918cac29b5a6bfe5054d4ba8ec9447cf42" +"checksum libp2p-yamux 0.16.0 (registry+https://github.com/rust-lang/crates.io-index)" = "f72aa5a7273c29c6eaea09108a49feaefc7456164863f64f86a193f9e78a4b7f" +"checksum librocksdb-sys 6.2.4 (registry+https://github.com/rust-lang/crates.io-index)" = "0a0785e816e1e11e7599388a492c61ef80ddc2afc91e313e61662cce537809be" +"checksum libsecp256k1 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)" = "1fc1e2c808481a63dc6da2074752fdd4336a3c8fcc68b83db6f1fd5224ae7962" +"checksum libz-sys 1.0.25 (registry+https://github.com/rust-lang/crates.io-index)" = "2eb5e43362e38e2bca2fd5f5134c4d4564a23a5c28e9b95411652021a8675ebe" +"checksum linked-hash-map 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "ae91b68aebc4ddb91978b11a1b02ddd8602a05ec19002801c5666000e05e0f83" +"checksum linked_hash_set 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "3c7c91c4c7bbeb4f2f7c4e5be11e6a05bd6830bc37249c47ce1ad86ad453ff9c" +"checksum lock_api 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "79b2de95ecb4691949fea4716ca53cdbcfccb2c612e19644a8bad05edcf9f47b" +"checksum log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)" = "e19e8d5c34a3e0e2223db8e060f9e8264aeeb5c5fc64a4ee9965c062211c024b" +"checksum log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)" = "14b6052be84e6b71ab17edffc2eeabf5c2c3ae1fdb464aae35ac50c67a44e1f7" +"checksum lru 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)" = "5d8f669d42c72d18514dfca8115689c5f6370a17d980cb5bd777a67f404594c8" +"checksum lru 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)" = "0609345ddee5badacf857d4f547e0e5a2e987db77085c24cd887f73573a04237" +"checksum mach 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "86dd2487cdfea56def77b88438a2c915fb45113c5319bfe7e14306ca4cd0b0e1" +"checksum matches 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "7ffc5c5338469d4d3ea17d269fa8ea3512ad247247c30bd2df69e68309ed0a08" +"checksum maybe-uninit 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "60302e4db3a61da70c0cb7991976248362f30319e88850c487b9b95bbf059e00" +"checksum memchr 2.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "53445de381a1f436797497c61d851644d0e8e88e6140f22872ad33a704933978" +"checksum memoffset 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)" = "75189eb85871ea5c2e2c15abbdd541185f63b408415e5051f5cac122d8c774b9" +"checksum memory-db 0.19.0 (registry+https://github.com/rust-lang/crates.io-index)" = "198831fe8722331a395bc199a5d08efbc197497ef354cb4c77b969c02ffc0fc4" +"checksum memory_units 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "71d96e3f3c0b6325d8ccd83c33b28acb183edcb6c67938ba104ec546854b0882" +"checksum merlin 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "2b0942b357c1b4d0dc43ba724674ec89c3218e6ca2b3e8269e7cb53bcecd2f6e" +"checksum mime 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)" = "ba626b8a6de5da682e1caa06bdb42a335aee5a84db8e5046a3e8ab17ba0a3ae0" +"checksum miniz_oxide 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)" = "aa679ff6578b1cddee93d7e82e263b94a575e0bfced07284eb0c037c1d2416a5" +"checksum mio 0.6.21 (registry+https://github.com/rust-lang/crates.io-index)" = "302dec22bcf6bae6dfb69c647187f4b4d0fb6f535521f7bc022430ce8e12008f" +"checksum mio-extras 2.0.6 (registry+https://github.com/rust-lang/crates.io-index)" = "52403fe290012ce777c4626790c8951324a2b9e3316b3143779c72b029742f19" +"checksum mio-uds 0.6.7 (registry+https://github.com/rust-lang/crates.io-index)" = "966257a94e196b11bb43aca423754d87429960a768de9414f3691d6957abf125" +"checksum miow 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "8c1f2f3b1cf331de6896aabf6e9d55dca90356cc9960cca7eaaf408a355ae919" +"checksum more-asserts 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "0debeb9fcf88823ea64d64e4a815ab1643f33127d995978e099942ce38f25238" +"checksum multimap 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "a97fbd5d00e0e37bfb10f433af8f5aaf631e739368dc9fc28286ca81ca4948dc" +"checksum multistream-select 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "f938ffe420493e77c8b6cbcc3f282283f68fc889c5dcbc8e51668d5f3a01ad94" +"checksum names 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ef320dab323286b50fb5cdda23f61c796a72a89998ab565ca32525c5c556f2da" +"checksum native-tls 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "4b2df1a4c22fd44a62147fd8f13dd0f95c9d8ca7b2610299b2a2f9cf8964274e" +"checksum net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)" = "42550d9fb7b6684a6d404d9fa7250c2eb2646df731d1c06afc06dcee9e1bcf88" +"checksum nix 0.17.0 (registry+https://github.com/rust-lang/crates.io-index)" = "50e4785f2c3b7589a0d0c1dd60285e1188adac4006e8abd6dd578e1567027363" +"checksum nodrop 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)" = "72ef4a56884ca558e5ddb05a1d1e7e1bfd9a68d9ed024c21704cc98872dae1bb" +"checksum nohash-hasher 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "2bf50223579dc7cdcfb3bfcacf7069ff68243f8c363f62ffa99cf000a6b9c451" +"checksum nom 4.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "2ad2a91a8e869eeb30b9cb3119ae87773a8f4ae617f41b1eb9c154b2905f7bd6" +"checksum num-bigint 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)" = "090c7f9998ee0ff65aa5b723e4009f7b217707f1fb5ea551329cc4d6231fb304" +"checksum num-integer 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)" = "3f6ea62e9d81a77cd3ee9a2a5b9b609447857f3d358704331e4ef39eb247fcba" +"checksum num-rational 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "da4dc79f9e6c81bef96148c8f6b8e72ad4541caa4a24373e900a36da07de03a3" +"checksum num-traits 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)" = "c62be47e61d1842b9170f0fdeec8eba98e60e90e5446449a0545e5152acd7096" +"checksum num_cpus 1.12.0 (registry+https://github.com/rust-lang/crates.io-index)" = "46203554f085ff89c235cd12f7075f3233af9b11ed7c9e16dfe2560d03313ce6" +"checksum ole32-sys 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "5d2c49021782e5233cd243168edfa8037574afed4eba4bbaf538b3d8d1789d8c" +"checksum once_cell 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b1c601810575c99596d4afc46f78a678c80105117c379eb3650cf99b8a21ce5b" +"checksum oorandom 11.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ebcec7c9c2a95cacc7cd0ecb89d8a8454eca13906f6deb55258ffff0adeb9405" +"checksum opaque-debug 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "2839e79665f131bdb5782e51f2c6c9599c133c6098982a54c794358bf432529c" +"checksum openssl 0.10.28 (registry+https://github.com/rust-lang/crates.io-index)" = "973293749822d7dd6370d6da1e523b0d1db19f06c459134c658b2a4261378b52" +"checksum openssl-probe 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "77af24da69f9d9341038eba93a073b1fdaaa1b788221b00a69bce9e762cb32de" +"checksum openssl-sys 0.9.54 (registry+https://github.com/rust-lang/crates.io-index)" = "1024c0a59774200a555087a6da3f253a9095a5f344e353b212ac4c8b8e450986" +"checksum output_vt100 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "53cdc5b785b7a58c5aad8216b3dfa114df64b0b06ae6e1501cef91df2fbdf8f9" +"checksum owning_ref 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "49a4b8ea2179e6a2e27411d3bca09ca6dd630821cf6894c6c7c8467a8ee7ef13" +"checksum parity-bytes 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "0c276d76c5333b8c2579e02d49a06733a55b8282d2d9b13e8d53b6406bd7e30a" +"checksum parity-multiaddr 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "045b3c7af871285146300da35b1932bb6e4639b66c7c98e85d06a32cbc4e8fa7" +"checksum parity-multiaddr 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)" = "26df883298bc3f4e92528b4c5cc9f806b791955b136da3e5e939ed9de0fd958b" +"checksum parity-multihash 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "df3a17dc27848fd99e4f87eb0f8c9baba6ede0a6d555400c850ca45254ef4ce3" +"checksum parity-multihash 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "7a1cd2ba02391b81367bec529fb209019d718684fdc8ad6a712c2b536e46f775" +"checksum parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "f747c06d9f3b2ad387ac881b9667298c81b1243aa9833f086e05996937c35507" +"checksum parity-scale-codec-derive 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "34e513ff3e406f3ede6796dcdc83d0b32ffb86668cea1ccf7363118abeb00476" +"checksum parity-send-wrapper 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "aa9777aa91b8ad9dd5aaa04a9b6bcb02c7f1deb952fca5a66034d5e63afc5c6f" +"checksum parity-util-mem 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ef1476e40bf8f5c6776e9600983435821ca86eb9819d74a6207cca69d091406a" +"checksum parity-util-mem-derive 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "f557c32c6d268a07c921471619c0295f5efad3a0e76d4f97a05c091a51d110b2" +"checksum parity-wasm 0.32.0 (registry+https://github.com/rust-lang/crates.io-index)" = "16ad52817c4d343339b3bc2e26861bd21478eda0b7509acf83505727000512ac" +"checksum parity-wasm 0.41.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ddfc878dac00da22f8f61e7af3157988424567ab01d9920b962ef7dcbd7cd865" +"checksum parking_lot 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)" = "92e98c49ab0b7ce5b222f2cc9193fc4efe11c6d0bd4f648e374684a6857b1cfc" +"checksum parking_lot 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "f842b1982eb6c2fe34036a4fbfb06dd185a3f5c8edfaacdf7d1ea10b07de6252" +"checksum parking_lot_core 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)" = "b876b1b9e7ac6e1a74a6da34d25c42e17e8862aa409cbbbdcfc8d86c6f3bc62b" +"checksum parking_lot_core 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7582838484df45743c8434fbff785e8edf260c28748353d44bc0da32e0ceabf1" +"checksum paste 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "423a519e1c6e828f1e73b720f9d9ed2fa643dce8a7737fb43235ce0b41eeaa49" +"checksum paste-impl 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "4214c9e912ef61bf42b81ba9a47e8aad1b2ffaf739ab162bf96d1e011f54e6c5" +"checksum pbkdf2 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "006c038a43a45995a9670da19e67600114740e8511d4333bf97a56e66a7542d9" +"checksum pdqselect 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "4ec91767ecc0a0bbe558ce8c9da33c068066c57ecc8bb8477ef8c1ad3ef77c27" +"checksum peeking_take_while 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "19b17cddbe7ec3f8bc800887bab5e717348c95ea2ca0b1bf0837fb964dc67099" +"checksum percent-encoding 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "31010dd2e1ac33d5b46a5b413495239882813e0369f8ed8a5e266f173602f831" +"checksum percent-encoding 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d4fd5641d01c8f18a23da7b6fe29298ff4b55afcccdf78973b24cf3175fee32e" +"checksum petgraph 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "29c127eea4a29ec6c85d153c59dc1213f33ec74cead30fe4730aecc88cc1fd92" +"checksum pin-project 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)" = "7804a463a8d9572f13453c516a5faea534a2403d7ced2f0c7e100eeff072772c" +"checksum pin-project-internal 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)" = "385322a45f2ecf3410c68d2a549a4a2685e8051d0f278e39743ff4e451cb9b3f" +"checksum pin-project-lite 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "237844750cfbb86f67afe27eee600dfbbcb6188d734139b534cbfbf4f96792ae" +"checksum pin-utils 0.1.0-alpha.4 (registry+https://github.com/rust-lang/crates.io-index)" = "5894c618ce612a3fa23881b152b608bafb8c56cfc22f434a3ba3120b40f7b587" +"checksum pkg-config 0.3.17 (registry+https://github.com/rust-lang/crates.io-index)" = "05da548ad6865900e60eaba7f589cc0783590a92e940c26953ff81ddbab2d677" +"checksum plain 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "b4596b6d070b27117e987119b4dac604f3c58cfb0b191112e24771b2faeac1a6" +"checksum plotters 0.2.12 (registry+https://github.com/rust-lang/crates.io-index)" = "4e3bb8da247d27ae212529352020f3e5ee16e83c0c258061d27b08ab92675eeb" +"checksum ppv-lite86 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)" = "74490b50b9fbe561ac330df47c08f3f33073d2d00c150f719147d7c54522fa1b" +"checksum predicates 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "a9bfe52247e5cc9b2f943682a85a5549fb9662245caf094504e69a2f03fe64d4" +"checksum predicates-core 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "06075c3a3e92559ff8929e7a280684489ea27fe44805174c3ebd9328dcb37178" +"checksum predicates-tree 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "8e63c4859013b38a76eca2414c64911fba30def9e3202ac461a2d22831220124" +"checksum pretty_assertions 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)" = "3f81e1644e1b54f5a68959a29aa86cde704219254669da328ecfdf6a1f09d427" +"checksum primitive-types 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)" = "e4336f4f5d5524fa60bcbd6fe626f9223d8142a50e7053e979acdf0da41ab975" +"checksum proc-macro-crate 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "e10d4b51f154c8a7fb96fd6dad097cb74b863943ec010ac94b9fd1be8861fe1e" +"checksum proc-macro-error 0.4.9 (registry+https://github.com/rust-lang/crates.io-index)" = "052b3c9af39c7e5e94245f820530487d19eb285faedcb40e0c3275132293f242" +"checksum proc-macro-error-attr 0.4.9 (registry+https://github.com/rust-lang/crates.io-index)" = "d175bef481c7902e63e3165627123fff3502f06ac043d3ef42d08c1246da9253" +"checksum proc-macro-hack 0.5.11 (registry+https://github.com/rust-lang/crates.io-index)" = "ecd45702f76d6d3c75a80564378ae228a85f0b59d2f3ed43c91b4a69eb2ebfc5" +"checksum proc-macro-nested 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "369a6ed065f249a159e06c45752c780bda2fb53c995718f9e484d08daa9eb42e" +"checksum proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)" = "cf3d2011ab5c909338f7887f4fc896d35932e29146c12c8d01da6b22a80ba759" +"checksum proc-macro2 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)" = "3acb317c6ff86a4e579dfa00fc5e6cca91ecbb4e7eb2df0468805b674eb88548" +"checksum prometheus 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "5567486d5778e2c6455b1b90ff1c558f29e751fc018130fa182e15828e728af1" +"checksum prost 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ce49aefe0a6144a45de32927c77bd2859a5f7677b55f220ae5b744e87389c212" +"checksum prost-build 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)" = "02b10678c913ecbd69350e8535c3aef91a8676c0773fc1d7b95cdd196d7f2f26" +"checksum prost-derive 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)" = "537aa19b95acde10a12fec4301466386f757403de4cd4e5b4fa78fb5ecb18f72" +"checksum prost-types 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)" = "1834f67c0697c001304b75be76f67add9c89742eda3a085ad8ee0bb38c3417aa" +"checksum protobuf 2.10.1 (registry+https://github.com/rust-lang/crates.io-index)" = "6686ddd96a8dbe2687b5f2a687b2cfb520854010ec480f2d74c32e7c9873d3c5" +"checksum pwasm-utils 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)" = "4f7a12f176deee919f4ba55326ee17491c8b707d0987aed822682c821b660192" +"checksum quick-error 1.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0" +"checksum quickcheck 0.9.2 (registry+https://github.com/rust-lang/crates.io-index)" = "a44883e74aa97ad63db83c4bf8ca490f02b2fc02f92575e720c8551e843c945f" +"checksum quicksink 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "a8461ef7445f61fd72d8dcd0629ce724b9131b3c2eb36e83a5d3d4161c127530" +"checksum quote 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)" = "6ce23b6b870e8f94f81fb0a363d65d86675884b34a09043c81e5562f11c1f8e1" +"checksum quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "053a8c8bcc71fcce321828dc897a98ab9760bef03a4fc36693c231e5b3216cfe" +"checksum rand 0.3.23 (registry+https://github.com/rust-lang/crates.io-index)" = "64ac302d8f83c0c1974bf758f6b041c6c8ada916fbb44a609158ca8b064cc76c" +"checksum rand 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)" = "552840b97013b1a26992c11eac34bdd778e464601a4c2054b5f0bff7c6761293" +"checksum rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)" = "6d71dacdc3c88c1fde3885a3be3fbab9f35724e6ce99467f7d9c5026132184ca" +"checksum rand 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)" = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03" +"checksum rand_chacha 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "556d3a1ca6600bfcbab7c7c91ccb085ac7fbbcd70e008a98742e7847f4f7bcef" +"checksum rand_chacha 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "03a2a90da8c7523f554344f921aa97283eadf6ac484a6d2a7d0212fa7f8d6853" +"checksum rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "7a6fdeb83b075e8266dcc8762c22776f6877a63111121f5f8c7411e5be7eed4b" +"checksum rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "9c33a3c44ca05fa6f1807d8e6743f3824e8509beca625669633be0acbdf509dc" +"checksum rand_core 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" +"checksum rand_hc 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7b40677c7be09ae76218dc623efbf7b18e34bced3f38883af07bb75630a21bc4" +"checksum rand_hc 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c" +"checksum rand_isaac 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ded997c9d5f13925be2a6fd7e66bf1872597f759fd9dd93513dd7e92e5a5ee08" +"checksum rand_jitter 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "1166d5c91dc97b88d1decc3285bb0a99ed84b05cfd0bc2341bdf2d43fc41e39b" +"checksum rand_os 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "7b75f676a1e053fc562eafbb47838d67c84801e38fc1ba459e8f180deabd5071" +"checksum rand_pcg 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "abf9b09b01790cfe0364f52bf32995ea3c39f4d2dd011eac241d2914146d0b44" +"checksum rand_xorshift 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "cbf7e9e623549b0e21f6e97cf8ecf247c1a8fd2e8a992ae265314300b2455d5c" +"checksum rand_xoshiro 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "03b418169fb9c46533f326efd6eed2576699c44ca92d3052a066214a8d828929" +"checksum raw-cpuid 7.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "b4a349ca83373cfa5d6dbb66fd76e58b2cca08da71a5f6400de0a0a6a9bceeaf" +"checksum rayon 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "db6ce3297f9c85e16621bb8cca38a06779ffc31bb8184e1be4bed2be4678a098" +"checksum rayon-core 1.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "08a89b46efaf957e52b18062fb2f4660f8b8a4dde1807ca002690868ef2c85a9" +"checksum rdrand 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "678054eb77286b51581ba43620cc911abf02758c91f93f479767aed0f90458b2" +"checksum redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)" = "2439c63f3f6139d1b57529d16bc3b8bb855230c8efcc5d3a896c8bea7c3b1e84" +"checksum redox_users 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "09b23093265f8d200fa7b4c2c76297f47e681c655f6f1285a8780d6a022f7431" +"checksum regex 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "322cf97724bea3ee221b78fe25ac9c46114ebb51747ad5babd51a2fc6a8235a8" +"checksum regex-automata 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "92b73c2a1770c255c240eaa4ee600df1704a38dc3feaa6e949e7fcd4f8dc09f9" +"checksum regex-syntax 0.6.14 (registry+https://github.com/rust-lang/crates.io-index)" = "b28dfe3fe9badec5dbf0a79a9cccad2cfc2ab5484bdb3e44cbd1ae8b3ba2be06" +"checksum region 2.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "448e868c6e4cfddfa49b6a72c95906c04e8547465e9536575b95c70a4044f856" +"checksum remove_dir_all 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "4a83fa3702a688b9359eccba92d153ac33fd2e8462f9e0e3fdf155239ea7792e" +"checksum ring 0.16.11 (registry+https://github.com/rust-lang/crates.io-index)" = "741ba1704ae21999c00942f9f5944f801e977f54302af346b596287599ad1862" +"checksum rlp 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)" = "3a44d5ae8afcb238af8b75640907edc6c931efcfab2c854e81ed35fa080f84cd" +"checksum rocksdb 0.13.0 (registry+https://github.com/rust-lang/crates.io-index)" = "12069b106981c6103d3eab7dd1c86751482d0779a520b7c14954c8b586c1e643" +"checksum rpassword 4.0.5 (registry+https://github.com/rust-lang/crates.io-index)" = "99371657d3c8e4d816fb6221db98fa408242b0b53bac08f8676a41f8554fe99f" +"checksum rust-argon2 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "2bc8af4bda8e1ff4932523b94d3dd20ee30a87232323eda55903ffd71d2fb017" +"checksum rustc-demangle 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)" = "4c691c0e608126e00913e33f0ccf3727d5fc84573623b8d65b2df340b5201783" +"checksum rustc-hash 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" +"checksum rustc-hex 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "3e75f6a532d0fd9f7f13144f392b6ad56a32696bfcd9c78f797f16bbb6f072d6" +"checksum rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030a" +"checksum rustls 0.16.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b25a18b1bf7387f0145e7f8324e700805aade3842dd3db2e74e4cdeb4677c09e" +"checksum rustls-native-certs 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "51ffebdbb48c14f84eba0b715197d673aff1dd22cc1007ca647e28483bbcc307" +"checksum rustversion 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "b3bba175698996010c4f6dce5e7f173b6eb781fce25d2cfc45e27091ce0b79f6" +"checksum rw-stream-sink 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "4da5fcb054c46f5a5dff833b129285a93d3f0179531735e6c866e8cc307d2020" +"checksum ryu 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "bfa8506c1de11c9c4e4c38863ccbe02a305c8188e85a05a784c9e11e1c3910c8" +"checksum safe-mix 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "6d3d055a2582e6b00ed7a31c1524040aa391092bf636328350813f3a0605215c" +"checksum safemem 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "ef703b7cb59335eae2eb93ceb664c0eb7ea6bf567079d843e09420219668e072" +"checksum salsa20 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "2324b0e8c3bb9a586a571fdb3136f70e7e2c748de00a78043f86e0cff91f91fe" +"checksum salsa20-core 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "2fe6cc1b9f5a5867853ade63099de70f042f7679e408d1ffe52821c9248e6e69" +"checksum same-file 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)" = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" +"checksum schannel 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)" = "507a9e6e8ffe0a4e0ebb9a10293e62fdf7657c06f1b8bb07a8fcf697d2abf295" +"checksum schnorrkel 0.8.5 (registry+https://github.com/rust-lang/crates.io-index)" = "eacd8381b3c37840c9c9f40472af529e49975bdcbc24f83c31059fd6539023d3" +"checksum scopeguard 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" +"checksum scroll 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)" = "abb2332cb595d33f7edd5700f4cbf94892e680c7f0ae56adab58a35190b66cb1" +"checksum scroll_derive 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)" = "f8584eea9b9ff42825b46faf46a8c24d2cff13ec152fa2a50df788b87c07ee28" +"checksum sct 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e3042af939fca8c3453b7af0f1c66e533a15a86169e39de2657310ade8f98d3c" +"checksum security-framework 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "8ef2429d7cefe5fd28bd1d2ed41c944547d4ff84776f5935b456da44593a16df" +"checksum security-framework-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "e31493fc37615debb8c5090a7aeb4a9730bc61e77ab10b9af59f1a202284f895" +"checksum semver 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7a3186ec9e65071a2095434b1f5bb24838d4e8e130f584c790f6033c79943537" +"checksum semver 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403" +"checksum semver-parser 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" +"checksum send_wrapper 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "a0eddf2e8f50ced781f288c19f18621fa72a3779e3cb58dbf23b07469b0abeb4" +"checksum send_wrapper 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "686ef91cf020ad8d4aca9a7047641fd6add626b7b89e14546c2b6a76781cf822" +"checksum send_wrapper 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "f638d531eccd6e23b980caf34876660d38e265409d8e99b397ab71eb3612fad0" +"checksum serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)" = "414115f25f818d7dfccec8ee535d76949ae78584fc4f79a6f45a904bf8ab4449" +"checksum serde_derive 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)" = "128f9e303a5a29922045a830221b8f78ec74a5f544944f3d5984f8ec3895ef64" +"checksum serde_json 1.0.48 (registry+https://github.com/rust-lang/crates.io-index)" = "9371ade75d4c2d6cb154141b9752cf3781ec9c05e0e5cf35060e1e70ee7b9c25" +"checksum sha-1 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)" = "f7d94d0bede923b3cea61f3f1ff57ff8cdfd77b400fb8f9998949e0cf04163df" +"checksum sha1 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "2579985fda508104f7587689507983eadd6a6e84dd35d6d115361f530916fa0d" +"checksum sha2 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)" = "27044adfd2e1f077f649f59deb9490d3941d674002f7d062870a60ebe9bd47a0" +"checksum sha3 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)" = "dd26bc0e7a2e3a7c959bc494caf58b72ee0c71d67704e9520f736ca7e4853ecf" +"checksum shell32-sys 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "9ee04b46101f57121c9da2b151988283b6beb79b34f5bb29a58ee48cb695122c" +"checksum shlex 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "7fdf1b9db47230893d76faad238fd6097fd6d6a9245cd7a4d90dbd639536bbd2" +"checksum signal-hook-registry 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "94f478ede9f64724c5d173d7bb56099ec3e2d9fc2774aac65d34b8b890405f41" +"checksum slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "c111b5bd5695e56cffe5129854aa230b39c93a305372fdbb2668ca2394eea9f8" +"checksum slog 2.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "1cc9c640a4adbfbcc11ffb95efe5aa7af7309e002adab54b185507dbf2377b99" +"checksum slog-json 2.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ddc0d2aff1f8f325ef660d9a0eb6e6dcd20b30b3f581a5897f58bf42d061c37a" +"checksum slog-scope 4.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7c44c89dd8b0ae4537d1ae318353eaf7840b4869c536e31c41e963d1ea523ee6" +"checksum slog_derive 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "a945ec7f7ce853e89ffa36be1e27dce9a43e82ff9093bf3461c30d5da74ed11b" +"checksum smallvec 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)" = "f7b0758c52e15a8b5e3691eae6cc559f08eee9406e548a4477ba4e67770a82b6" +"checksum smallvec 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "5c2fb2ec9bcd216a5b0d0ccf31ab17b5ed1d627960edff65bbe95d3ce221cefc" +"checksum snow 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)" = "afb767eee7d257ba202f0b9b08673bc13b22281632ef45267b19f13100accd2f" +"checksum soketto 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "1c9dab3f95c9ebdf3a88268c19af668f637a3c5039c2c56ff2d40b1b2d64a25b" +"checksum sourcefile 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "4bf77cb82ba8453b42b6ae1d692e4cdc92f9a47beaf89a847c8be83f4e328ad3" +"checksum spin 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d" +"checksum stable_deref_trait 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "dba1a27d3efae4351c8051072d619e3ade2820635c3958d826bfea39d59b54c8" +"checksum static_assertions 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" +"checksum stream-cipher 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "8131256a5896cabcf5eb04f4d6dacbe1aefda854b0d9896e09cb58829ec5638c" +"checksum string 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "d24114bfcceb867ca7f71a0d3fe45d45619ec47a6fbfa98cb14e14250bfa5d6d" +"checksum string-interner 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)" = "fd710eadff449a1531351b0e43eb81ea404336fa2f56c777427ab0e32a4cf183" +"checksum strsim 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "8ea5119cdb4c55b55d432abb513a0429384878c15dde60cc77b1c99de1a95a6a" +"checksum structopt 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)" = "a1bcbed7d48956fcbb5d80c6b95aedb553513de0a1b451ea92679d999c010e98" +"checksum structopt-derive 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "095064aa1f5b94d14e635d0a5684cf140c43ae40a0fd990708d38f5d669e5f64" +"checksum strum 0.16.0 (registry+https://github.com/rust-lang/crates.io-index)" = "6138f8f88a16d90134763314e3fc76fa3ed6a7db4725d6acf9a3ef95a3188d22" +"checksum strum_macros 0.16.0 (registry+https://github.com/rust-lang/crates.io-index)" = "0054a7df764039a6cd8592b9de84be4bec368ff081d203a7d5371cbfa8e65c81" +"checksum substrate-bip39 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "3be511be555a3633e71739a79e4ddff6a6aaa6579fa6114182a51d72c3eb93c5" +"checksum subtle 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "2d67a5a62ba6e01cb2192ff309324cb4875d0c451d55fe2319433abe7a05a8ee" +"checksum subtle 2.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7c65d530b10ccaeac294f349038a597e435b18fb456aadd0840a623f83b9e941" +"checksum syn 1.0.14 (registry+https://github.com/rust-lang/crates.io-index)" = "af6f3550d8dff9ef7dc34d384ac6f107e5d31c8f57d9f28e0081503f547ac8f5" +"checksum syn-mid 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7be3539f6c128a931cf19dcee741c1af532c7fd387baa739c03dd2e96479338a" +"checksum synstructure 0.12.3 (registry+https://github.com/rust-lang/crates.io-index)" = "67656ea1dc1b41b1451851562ea232ec2e5a80242139f7e679ceccfb5d61f545" +"checksum sysinfo 0.9.6 (registry+https://github.com/rust-lang/crates.io-index)" = "6f4b2468c629cffba39c0a4425849ab3cdb03d9dfacba69684609aea04d08ff9" +"checksum take_mut 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "f764005d11ee5f36500a149ace24e00e3da98b0158b3e2d53a7495660d3f4d60" +"checksum target-lexicon 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ab0e7238dcc7b40a7be719a25365910f6807bd864f4cce6b2e6b873658e2b19d" +"checksum target_info 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "c63f48baada5c52e65a29eef93ab4f8982681b67f9e8d29c7b05abcfec2b9ffe" +"checksum tempdir 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)" = "15f2b5fb00ccdf689e0149d1b1b3c03fead81c2b37735d812fa8bddbbf41b6d8" +"checksum tempfile 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7a6e24d9338a0a5be79593e2fa15a648add6138caa803e2d5bc782c371732ca9" +"checksum termcolor 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "bb6bfa289a4d7c5766392812c0a1f4c1ba45afa1ad47803c11e1f407d846d75f" +"checksum test-case 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "a605baa797821796a751f4a959e1206079b24a4b7e1ed302b7d785d81a9276c9" +"checksum textwrap 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d326610f408c7a4eb6f51c37c330e496b08506c9457c9d34287ecc38809fb060" +"checksum thiserror 1.0.11 (registry+https://github.com/rust-lang/crates.io-index)" = "ee14bf8e6767ab4c687c9e8bc003879e042a96fd67a3ba5934eadb6536bef4db" +"checksum thiserror-impl 1.0.11 (registry+https://github.com/rust-lang/crates.io-index)" = "a7b51e1fbc44b5a0840be594fbc0f960be09050f2617e61e6aa43bef97cd3ef4" +"checksum thread_local 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "d40c6d1b69745a6ec6fb1ca717914848da4b44ae29d9b3080cbee91d72a69b14" +"checksum threadpool 1.7.1 (registry+https://github.com/rust-lang/crates.io-index)" = "e2f0c90a5f3459330ac8bc0d2f879c693bb7a2f59689c1083fc4ef83834da865" +"checksum time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)" = "db8dcfca086c1143c9270ac42a2bbd8a7ee477b78ac8e45b19abfb0cbede4b6f" +"checksum tiny-bip39 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1cd1fb03fe8e07d17cd851a624a9fff74642a997b67fbd1ccd77533241640d92" +"checksum tiny-keccak 1.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1d8a021c69bb74a44ccedb824a046447e2c84a01df9e5c20779750acb38e11b2" +"checksum tiny-keccak 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "2953ca5148619bc99695c1274cb54c5275bbb913c6adad87e72eaf8db9787f69" +"checksum tinytemplate 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "57a3c6667d3e65eb1bc3aed6fd14011c6cbc3a0665218ab7f5daf040b9ec371a" +"checksum tokio 0.1.22 (registry+https://github.com/rust-lang/crates.io-index)" = "5a09c0b5bb588872ab2f09afa13ee6e9dac11e10a0ec9e8e3ba39a5a5d530af6" +"checksum tokio 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)" = "8fdd17989496f49cdc57978c96f0c9fe5e4a58a8bddc6813c449a4624f6a030b" +"checksum tokio-buf 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "8fb220f46c53859a4b7ec083e41dec9778ff0b1851c0942b211edb89e0ccdc46" +"checksum tokio-codec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "25b2998660ba0e70d18684de5d06b70b70a3a747469af9dea7618cc59e75976b" +"checksum tokio-current-thread 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)" = "b1de0e32a83f131e002238d7ccde18211c0a5397f60cbfffcb112868c2e0e20e" +"checksum tokio-executor 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)" = "fb2d1b8f4548dbf5e1f7818512e9c406860678f29c300cdf0ebac72d1a3a1671" +"checksum tokio-executor 0.2.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)" = "9ee9ceecf69145923834ea73f32ba40c790fd877b74a7817dd0b089f1eb9c7c8" +"checksum tokio-fs 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)" = "297a1206e0ca6302a0eed35b700d292b275256f596e2f3fea7729d5e629b6ff4" +"checksum tokio-io 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)" = "57fc868aae093479e3131e3d165c93b1c7474109d13c90ec0dda2a1bbfff0674" +"checksum tokio-macros 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)" = "f4b1e7ed7d5d4c2af3d999904b0eebe76544897cdbfb2b9684bed2174ab20f7c" +"checksum tokio-reactor 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)" = "09bc590ec4ba8ba87652da2068d150dcada2cfa2e07faae270a5e0409aa51351" +"checksum tokio-rustls 0.12.2 (registry+https://github.com/rust-lang/crates.io-index)" = "141afec0978abae6573065a48882c6bae44c5cc61db9b511ac4abf6a09bfd9cc" +"checksum tokio-sync 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "edfe50152bc8164fcc456dab7891fa9bf8beaf01c5ee7e1dd43a397c3cf87dee" +"checksum tokio-sync 0.2.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)" = "4f1aaeb685540f7407ea0e27f1c9757d258c7c6bf4e3eb19da6fc59b747239d2" +"checksum tokio-tcp 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "98df18ed66e3b72e742f185882a9e201892407957e45fbff8da17ae7a7c51f72" +"checksum tokio-threadpool 0.1.18 (registry+https://github.com/rust-lang/crates.io-index)" = "df720b6581784c118f0eb4310796b12b1d242a7eb95f716a8367855325c25f89" +"checksum tokio-timer 0.2.13 (registry+https://github.com/rust-lang/crates.io-index)" = "93044f2d313c95ff1cb7809ce9a7a05735b012288a888b62d4434fd58c94f296" +"checksum tokio-tls 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "354b8cd83825b3c20217a9dc174d6a0c67441a2fae5c41bcb1ea6679f6ae0f7c" +"checksum tokio-udp 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "e2a0b10e610b39c38b031a2fcab08e4b82f16ece36504988dcbd81dbba650d82" +"checksum tokio-uds 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)" = "5076db410d6fdc6523df7595447629099a1fdc47b3d9f896220780fa48faf798" +"checksum tokio-util 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "571da51182ec208780505a32528fc5512a8fe1443ab960b3f2f3ef093cd16930" +"checksum toml 0.5.6 (registry+https://github.com/rust-lang/crates.io-index)" = "ffc92d160b1eef40665be3a05630d003936a3bc7da7421277846c2613e92c71a" +"checksum tower-service 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e987b6bf443f4b5b3b6f38704195592cca41c5bb7aedd3c3693c7081f8289860" +"checksum tracing 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)" = "1e213bd24252abeb86a0b7060e02df677d367ce6cb772cef17e9214b8390a8d3" +"checksum tracing-attributes 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "04cfd395def5a60236e187e1ff905cb55668a59f29928dec05e6e1b1fd2ac1f3" +"checksum tracing-core 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)" = "13a46f11e372b8bd4b4398ea54353412fdd7fd42a8370c7e543e218cf7661978" +"checksum traitobject 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "efd1f82c56340fdf16f2a953d7bda4f8fdffba13d93b00844c25572110b26079" +"checksum treeline 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "a7f741b240f1a48843f9b8e0444fb55fb2a4ff67293b50a9179dfd5ea67f8d41" +"checksum trie-bench 0.20.0 (registry+https://github.com/rust-lang/crates.io-index)" = "6dcd9bac85703d8f974ee1e6dfe668784b105d3385c174ad729adb7427ad5d81" +"checksum trie-db 0.20.0 (registry+https://github.com/rust-lang/crates.io-index)" = "de9222c50cc325855621271157c973da27a0dcd26fa06f8edf81020bd2333df0" +"checksum trie-root 0.16.0 (registry+https://github.com/rust-lang/crates.io-index)" = "652931506d2c1244d7217a70b99f56718a7b4161b37f04e7cd868072a99f68cd" +"checksum trie-standardmap 0.15.2 (registry+https://github.com/rust-lang/crates.io-index)" = "c3161ba520ab28cd8e6b68e1126f1009f6e335339d1a73b978139011703264c8" +"checksum try-lock 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "e604eb7b43c06650e854be16a2a03155743d3752dd1c943f6829e26b7a36e382" +"checksum trybuild 1.0.22 (registry+https://github.com/rust-lang/crates.io-index)" = "5867c525891caf154503954cb743ff7f1c4ca2c3e8578f6a5af84c913aa084c8" +"checksum twofish 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "712d261e83e727c8e2dbb75dacac67c36e35db36a958ee504f2164fc052434e1" +"checksum twox-hash 1.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "3bfd5b7557925ce778ff9b9ef90e3ade34c524b5ff10e239c69a42d546d2af56" +"checksum typeable 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "1410f6f91f21d1612654e7cc69193b0334f909dcf2c790c4826254fbb86f8887" +"checksum typenum 1.11.2 (registry+https://github.com/rust-lang/crates.io-index)" = "6d2783fe2d6b8c1101136184eb41be8b1ad379e4657050b8aaff0c79ee7575f9" +"checksum uint 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)" = "e75a4cdd7b87b28840dba13c483b9a88ee6bbf16ba5c951ee1ecfcf723078e0d" +"checksum unicase 1.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7f4765f83163b74f957c797ad9253caf97f103fb064d3999aea9568d09fc8a33" +"checksum unicase 2.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "50f37be617794602aabbeee0be4f259dc1778fabe05e2d67ee8f79326d5cb4f6" +"checksum unicode-bidi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "49f2bd0c6468a8230e1db229cff8029217cf623c767ea5d60bfbd42729ea54d5" +"checksum unicode-normalization 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)" = "5479532badd04e128284890390c1e876ef7a993d0570b3597ae43dfa1d59afa4" +"checksum unicode-segmentation 1.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e83e153d1053cbb5a118eeff7fd5be06ed99153f00dbcd8ae310c5fb2b22edc0" +"checksum unicode-width 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)" = "caaa9d531767d1ff2150b9332433f32a24622147e5ebb1f26409d5da67afd479" +"checksum unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "fc72304796d0818e357ead4e000d19c9c174ab23dc11093ac919054d20a6a7fc" +"checksum unicode-xid 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "826e7639553986605ec5979c7dd957c7895e93eabed50ab2ffa7f6128a75097c" +"checksum unsigned-varint 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "a7f0023a96687fe169081e8adce3f65e3874426b7886e9234d490af2dc077959" +"checksum unsigned-varint 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "3b7ffb36714206d2f5f05d61a2bc350415c642f2c54433f0ebf829afbe41d570" +"checksum untrusted 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "60369ef7a31de49bcb3f6ca728d4ba7300d9a1658f94c727d4cab8c8d9f4aece" +"checksum url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)" = "dd4e7c0d531266369519a4aa4f399d748bd37043b00bde1e4ff1f60a120b355a" +"checksum url 2.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "829d4a8476c35c9bf0bbce5a3b23f4106f79728039b726d292bb93bc106787cb" +"checksum vcpkg 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "3fc439f2794e98976c88a2a2dafce96b930fe8010b0a256b3c2199a773933168" +"checksum vec_map 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)" = "05c78687fb1a80548ae3250346c3db86a80a7cdd77bda190189f2d0a0987c81a" +"checksum vergen 3.0.4 (registry+https://github.com/rust-lang/crates.io-index)" = "6aba5e34f93dc7051dfad05b98a18e9156f27e7b431fe1d2398cb6061c0a1dba" +"checksum version_check 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "914b1a6776c4c929a602fafd8bc742e06365d4bcbe48c30f9cca5824f70dc9dd" +"checksum version_check 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)" = "078775d0255232fb988e6fccf26ddc9d1ac274299aaedcedce21c6f72cc533ce" +"checksum void 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d" +"checksum wabt 0.9.2 (registry+https://github.com/rust-lang/crates.io-index)" = "3c5c5c1286c6e578416982609f47594265f9d489f9b836157d403ad605a46693" +"checksum wabt-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "af5d153dc96aad7dc13ab90835b892c69867948112d95299e522d370c4e13a08" +"checksum walkdir 2.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "777182bc735b6424e1a57516d35ed72cb8019d85c8c9bf536dccb3445c1a2f7d" +"checksum want 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b6395efa4784b027708f7451087e647ec73cc74f5d9bc2e418404248d679a230" +"checksum want 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1ce8a968cb1cd110d136ff8b819a556d6fb6d919363c61534f6860c7eb172ba0" +"checksum wasi 0.9.0+wasi-snapshot-preview1 (registry+https://github.com/rust-lang/crates.io-index)" = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519" +"checksum wasm-bindgen 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)" = "5205e9afdf42282b192e2310a5b463a6d1c1d774e30dc3c791ac37ab42d2616c" +"checksum wasm-bindgen-backend 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)" = "11cdb95816290b525b32587d76419facd99662a07e59d3cdb560488a819d9a45" +"checksum wasm-bindgen-futures 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)" = "8bbdd49e3e28b40dec6a9ba8d17798245ce32b019513a845369c641b275135d9" +"checksum wasm-bindgen-macro 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)" = "574094772ce6921576fb6f2e3f7497b8a76273b6db092be18fc48a082de09dc3" +"checksum wasm-bindgen-macro-support 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)" = "e85031354f25eaebe78bb7db1c3d86140312a911a106b2e29f9cc440ce3e7668" +"checksum wasm-bindgen-shared 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)" = "f5e7e61fc929f4c0dddb748b102ebf9f632e2b8d739f2016542b4de2965a9601" +"checksum wasm-bindgen-webidl 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)" = "ef012a0d93fc0432df126a8eaf547b2dce25a8ce9212e1d3cbeef5c11157975d" +"checksum wasm-gc-api 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)" = "d0c32691b6c7e6c14e7f8fd55361a9088b507aa49620fcd06c09b3a1082186b9" +"checksum wasm-timer 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)" = "324c5e65a08699c9c4334ba136597ab22b85dccd4b65dd1e36ccf8f723a95b54" +"checksum wasmi 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)" = "bf617d864d25af3587aa745529f7aaa541066c876d57e050c0d0c85c61c92aff" +"checksum wasmi-validation 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ea78c597064ba73596099281e2f4cfc019075122a65cdda3205af94f0b264d93" +"checksum wasmparser 0.48.2 (registry+https://github.com/rust-lang/crates.io-index)" = "073da89bf1c84db000dd68ce660c1b4a08e3a2d28fd1e3394ab9e7abdde4a0f8" +"checksum wasmparser 0.51.2 (registry+https://github.com/rust-lang/crates.io-index)" = "a40d24f114a3f24b459ec292019220cff6388673b4a2c0a11483665b599ef15c" +"checksum wasmtime 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)" = "5614d964c3e7d07a13b59aca66103c52656bd80430f0d86dc7eeb3af4f03d4a2" +"checksum wasmtime-debug 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)" = "feb5900275b4ef0b621ce725b9d5660b12825d7f7d79b392b97baf089ffab8c0" +"checksum wasmtime-environ 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)" = "f04661851e133fb11691c4a0f92a705766b4bbf7afc06811f949e295cc8414fc" +"checksum wasmtime-jit 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d451353764ce55c9bb6a8b260063cfc209b7adadd277a9a872ab4563a69e357c" +"checksum wasmtime-runtime 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7dbd4fc114b828cae3e405fed413df4b3814d87a92ea029640cec9ba41f0c162" +"checksum wast 8.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "3f9df3d716118a503b2f6bbb6ff46b21997ab0cc167b01de7a188e45e4b01e8d" +"checksum wat 1.0.9 (registry+https://github.com/rust-lang/crates.io-index)" = "4a927b35badc29c97d97e82689eef7f72fc936d884b3391804c1bb6cd2bdccbb" +"checksum web-sys 0.3.35 (registry+https://github.com/rust-lang/crates.io-index)" = "aaf97caf6aa8c2b1dac90faf0db529d9d63c93846cca4911856f78a83cebf53b" +"checksum webpki 0.21.2 (registry+https://github.com/rust-lang/crates.io-index)" = "f1f50e1972865d6b1adb54167d1c8ed48606004c2c9d0ea5f1eeb34d95e863ef" +"checksum webpki-roots 0.17.0 (registry+https://github.com/rust-lang/crates.io-index)" = "a262ae37dd9d60f60dd473d1158f9fbebf110ba7b6a5051c8160460f6043718b" +"checksum webpki-roots 0.18.0 (registry+https://github.com/rust-lang/crates.io-index)" = "91cd5736df7f12a964a5067a12c62fa38e1bd8080aff1f80bc29be7c80d19ab4" +"checksum websocket 0.24.0 (registry+https://github.com/rust-lang/crates.io-index)" = "413b37840b9e27b340ce91b319ede10731de8c72f5bc4cb0206ec1ca4ce581d0" +"checksum websocket-base 0.24.0 (registry+https://github.com/rust-lang/crates.io-index)" = "5e3810f0d00c4dccb54c30a4eee815e703232819dec7b007db115791c42aa374" +"checksum weedle 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)" = "3bb43f70885151e629e2a19ce9e50bd730fd436cfd4b666894c9ce4de9141164" +"checksum which 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b57acb10231b9493c8472b20cb57317d0679a49e0bdbee44b3b803a6473af164" +"checksum which 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "5475d47078209a02e60614f7ba5e645ef3ed60f771920ac1906d7c1cc65024c8" +"checksum winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "167dc9d6949a9b857f3451275e911c3f44255842c1f7a76f33c55103a909087a" +"checksum winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)" = "8093091eeb260906a183e6ae1abdba2ef5ef2257a21801128899c3fc699229c6" +"checksum winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "2d315eee3b34aca4797b2da6b13ed88266e6d612562a0c46390af8299fc699bc" +"checksum winapi-i686-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" +"checksum winapi-util 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "4ccfbf554c6ad11084fb7517daca16cfdcaccbdadba4fc336f032a8b12c2ad80" +"checksum winapi-x86_64-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" +"checksum ws 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)" = "c51a2c47b5798ccc774ffb93ff536aec7c4275d722fd9c740c83cdd1af1f2d94" +"checksum ws2_32-sys 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "d59cefebd0c892fa2dd6de581e937301d8552cb44489cdff035c6187cb63fa5e" +"checksum x25519-dalek 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7ee1585dc1484373cbc1cee7aafda26634665cf449436fd6e24bfd1fad230538" +"checksum x25519-dalek 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "637ff90c9540fa3073bb577e65033069e4bae7c79d49d74aa3ffdf5342a53217" +"checksum xdg 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d089681aa106a86fade1b0128fb5daf07d5867a509ab036d99988dec80429a57" +"checksum yamux 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)" = "d73295bc9d9acf89dd9336b3b5f5b57731ee72b587857dd4312721a0196b48e5" +"checksum zeroize 0.9.3 (registry+https://github.com/rust-lang/crates.io-index)" = "45af6a010d13e4cf5b54c94ba5a2b2eba5596b9e46bf5875612d332a1f2b3f86" +"checksum zeroize 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "3cbac2ed2ba24cc90f5e06485ac8c7c1e5449fe8911aef4d8877218af021a5b8" +"checksum zeroize_derive 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "de251eec69fc7c1bc3923403d18ececb929380e016afe103da75f396704f8ca2" +"checksum zstd 0.5.1+zstd.1.4.4 (registry+https://github.com/rust-lang/crates.io-index)" = "5c5d978b793ae64375b80baf652919b148f6a496ac8802922d9999f5a553194f" +"checksum zstd-safe 2.0.3+zstd.1.4.4 (registry+https://github.com/rust-lang/crates.io-index)" = "bee25eac9753cfedd48133fa1736cbd23b774e253d89badbeac7d12b23848d3f" +"checksum zstd-sys 1.4.15+zstd.1.4.4 (registry+https://github.com/rust-lang/crates.io-index)" = "89719b034dc22d240d5b407fb0a3fe6d29952c181cff9a9f95c0bd40b4f8f7d8" diff --git a/bin/node/executor/tests/basic.rs b/bin/node/executor/tests/basic.rs index 100bdf3fe6..972c561a2f 100644 --- a/bin/node/executor/tests/basic.rs +++ b/bin/node/executor/tests/basic.rs @@ -347,7 +347,7 @@ fn full_native_block_import_works() { }, EventRecord { phase: Phase::ApplyExtrinsic(1), - event: Event::pallet_treasury(pallet_treasury::RawEvent::Deposit(1984800000000)), + event: Event::pallet_treasury(pallet_treasury::RawEvent::Deposit(fees * 8 / 10)), topics: vec![], }, EventRecord { @@ -381,13 +381,14 @@ fn full_native_block_import_works() { ).0.unwrap(); t.execute_with(|| { + let fees = transfer_fee(&xt(), fm); assert_eq!( Balances::total_balance(&alice()), - alice_last_known_balance - 10 * DOLLARS - transfer_fee(&xt(), fm), + alice_last_known_balance - 10 * DOLLARS - fees, ); assert_eq!( Balances::total_balance(&bob()), - 179 * DOLLARS - transfer_fee(&xt(), fm), + 179 * DOLLARS - fees, ); let events = vec![ EventRecord { @@ -399,7 +400,7 @@ fn full_native_block_import_works() { }, EventRecord { phase: Phase::ApplyExtrinsic(1), - event: Event::pallet_treasury(pallet_treasury::RawEvent::Deposit(1984788199392)), + event: Event::pallet_treasury(pallet_treasury::RawEvent::Deposit(fees * 8 / 10)), topics: vec![], }, EventRecord { @@ -422,7 +423,7 @@ fn full_native_block_import_works() { }, EventRecord { phase: Phase::ApplyExtrinsic(2), - event: Event::pallet_treasury(pallet_treasury::RawEvent::Deposit(1984788199392)), + event: Event::pallet_treasury(pallet_treasury::RawEvent::Deposit(fees * 8 / 10)), topics: vec![], }, EventRecord { diff --git a/bin/node/executor/tests/fees.rs b/bin/node/executor/tests/fees.rs index ba303a6feb..374dee354f 100644 --- a/bin/node/executor/tests/fees.rs +++ b/bin/node/executor/tests/fees.rs @@ -25,13 +25,13 @@ use sp_core::{ storage::Storage, }; use sp_runtime::{ - Fixed64, + Fixed64, Perbill, traits::Convert, }; use node_runtime::{ - CheckedExtrinsic, Call, Runtime, Balances, - TransactionPayment, TransactionBaseFee, TransactionByteFee, - WeightFeeCoefficient, constants::currency::*, + CheckedExtrinsic, Call, Runtime, Balances, TransactionPayment, TransactionBaseFee, + TransactionByteFee, WeightFeeCoefficient, + constants::currency::*, }; use node_runtime::impls::LinearWeightToFee; use node_primitives::Balance; @@ -60,12 +60,12 @@ fn fee_multiplier_increases_and_decreases_on_big_weight() { GENESIS_HASH.into(), vec![ CheckedExtrinsic { - signed: None, - function: Call::Timestamp(pallet_timestamp::Call::set(42 * 1000)), + signed: None, + function: Call::Timestamp(pallet_timestamp::Call::set(42 * 1000)), }, CheckedExtrinsic { signed: Some((charlie(), signed_extra(0, 0))), - function: Call::System(frame_system::Call::fill_block()), + function: Call::System(frame_system::Call::fill_block(Perbill::from_percent(90))), } ] ); @@ -77,8 +77,8 @@ fn fee_multiplier_increases_and_decreases_on_big_weight() { block1.1.clone(), vec![ CheckedExtrinsic { - signed: None, - function: Call::Timestamp(pallet_timestamp::Call::set(52 * 1000)), + signed: None, + function: Call::Timestamp(pallet_timestamp::Call::set(52 * 1000)), }, CheckedExtrinsic { signed: Some((charlie(), signed_extra(1, 0))), @@ -87,7 +87,11 @@ fn fee_multiplier_increases_and_decreases_on_big_weight() { ] ); - println!("++ Block 1 size: {} / Block 2 size {}", block1.0.encode().len(), block2.0.encode().len()); + println!( + "++ Block 1 size: {} / Block 2 size {}", + block1.0.encode().len(), + block2.0.encode().len(), + ); // execute a big block. executor_call:: _>( diff --git a/bin/node/runtime/src/lib.rs b/bin/node/runtime/src/lib.rs index e119fa0282..617ca2257a 100644 --- a/bin/node/runtime/src/lib.rs +++ b/bin/node/runtime/src/lib.rs @@ -81,8 +81,8 @@ pub const VERSION: RuntimeVersion = RuntimeVersion { // and set impl_version to 0. If only runtime // implementation changes and behavior does not, then leave spec_version as // is and increment impl_version. - spec_version: 223, - impl_version: 1, + spec_version: 224, + impl_version: 0, apis: RUNTIME_API_VERSIONS, }; diff --git a/frame/executive/src/lib.rs b/frame/executive/src/lib.rs index 18f4edf344..e68681af19 100644 --- a/frame/executive/src/lib.rs +++ b/frame/executive/src/lib.rs @@ -546,7 +546,7 @@ mod tests { pallet_balances::GenesisConfig:: { balances: vec![(1, 211)], }.assimilate_storage(&mut t).unwrap(); - let xt = sp_runtime::testing::TestXt::new_signed(sign_extra(1, 0, 0), Call::Balances(BalancesCall::transfer(2, 69))); + let xt = TestXt::new_signed(sign_extra(1, 0, 0), Call::Balances(BalancesCall::transfer(2, 69))); let weight = xt.get_dispatch_info().weight as u64; let mut t = sp_io::TestExternalities::new(t); t.execute_with(|| { @@ -626,7 +626,7 @@ mod tests { fn bad_extrinsic_not_inserted() { let mut t = new_test_ext(1); // bad nonce check! - let xt = sp_runtime::testing::TestXt::new_signed(sign_extra(1, 30, 0), Call::Balances(BalancesCall::transfer(33, 69))); + let xt = TestXt::new_signed(sign_extra(1, 30, 0), Call::Balances(BalancesCall::transfer(33, 69))); t.execute_with(|| { Executive::initialize_block(&Header::new( 1, @@ -644,7 +644,7 @@ mod tests { fn block_weight_limit_enforced() { let mut t = new_test_ext(10000); // given: TestXt uses the encoded len as fixed Len: - let xt = sp_runtime::testing::TestXt::new_signed(sign_extra(1, 0, 0), Call::Balances(BalancesCall::transfer(33, 0))); + let xt = TestXt::new_signed(sign_extra(1, 0, 0), Call::Balances(BalancesCall::transfer(33, 0))); let encoded = xt.encode(); let encoded_len = encoded.len() as Weight; let limit = AvailableBlockRatio::get() * MaximumBlockWeight::get() - 175; @@ -661,7 +661,7 @@ mod tests { assert_eq!(>::all_extrinsics_weight(), 175); for nonce in 0..=num_to_exhaust_block { - let xt = sp_runtime::testing::TestXt::new_signed( + let xt = TestXt::new_signed( sign_extra(1, nonce.into(), 0), Call::Balances(BalancesCall::transfer(33, 0)), ); let res = Executive::apply_extrinsic(xt); @@ -681,14 +681,14 @@ mod tests { #[test] fn block_weight_and_size_is_stored_per_tx() { - let xt = sp_runtime::testing::TestXt::new_signed(sign_extra(1, 0, 0), Call::Balances(BalancesCall::transfer(33, 0))); - let x1 = sp_runtime::testing::TestXt::new_signed(sign_extra(1, 1, 0), Call::Balances(BalancesCall::transfer(33, 0))); - let x2 = sp_runtime::testing::TestXt::new_signed(sign_extra(1, 2, 0), Call::Balances(BalancesCall::transfer(33, 0))); + let xt = TestXt::new_signed(sign_extra(1, 0, 0), Call::Balances(BalancesCall::transfer(33, 0))); + let x1 = TestXt::new_signed(sign_extra(1, 1, 0), Call::Balances(BalancesCall::transfer(33, 0))); + let x2 = TestXt::new_signed(sign_extra(1, 2, 0), Call::Balances(BalancesCall::transfer(33, 0))); let len = xt.clone().encode().len() as u32; let mut t = new_test_ext(1); t.execute_with(|| { assert_eq!(>::all_extrinsics_weight(), 0); - assert_eq!(>::all_extrinsics_weight(), 0); + assert_eq!(>::all_extrinsics_len(), 0); assert!(Executive::apply_extrinsic(xt.clone()).unwrap().is_ok()); assert!(Executive::apply_extrinsic(x1.clone()).unwrap().is_ok()); @@ -701,13 +701,13 @@ mod tests { let _ = >::finalize(); assert_eq!(>::all_extrinsics_weight(), 0); - assert_eq!(>::all_extrinsics_weight(), 0); + assert_eq!(>::all_extrinsics_len(), 0); }); } #[test] fn validate_unsigned() { - let xt = sp_runtime::testing::TestXt::new_unsigned(Call::Balances(BalancesCall::set_balance(33, 69, 69))); + let xt = TestXt::new_unsigned(Call::Balances(BalancesCall::set_balance(33, 69, 69))); let mut t = new_test_ext(1); t.execute_with(|| { @@ -716,9 +716,26 @@ mod tests { }); } + #[test] + fn unsigned_weight_is_noted_when_applied() { + let xt = TestXt::new_unsigned(Call::Balances(BalancesCall::set_balance(33, 69, 69))); + let len = xt.clone().encode().len() as u32; + let mut t = new_test_ext(1); + t.execute_with(|| { + assert_eq!(>::all_extrinsics_weight(), 0); + assert_eq!(>::all_extrinsics_len(), 0); + + // This is okay -- balances transfer will panic since it requires ensure_signed. + assert_eq!(Executive::apply_extrinsic(xt), Ok(Err(DispatchError::BadOrigin))); + + assert_eq!(>::all_extrinsics_weight(), len); + assert_eq!(>::all_extrinsics_len(), len); + }); + } + #[test] fn apply_trusted_skips_signature_check_but_not_others() { - let xt1 = sp_runtime::testing::TestXt::new_signed(sign_extra(1, 0, 0), Call::Balances(BalancesCall::transfer(33, 0))) + let xt1 = TestXt::new_signed(sign_extra(1, 0, 0), Call::Balances(BalancesCall::transfer(33, 0))) .badly_signed(); let mut t = new_test_ext(1); @@ -727,7 +744,7 @@ mod tests { assert_eq!(Executive::apply_trusted_extrinsic(xt1), Ok(Ok(()))); }); - let xt2 = sp_runtime::testing::TestXt::new_signed(sign_extra(1, 0, 0), Call::Balances(BalancesCall::transfer(33, 0))) + let xt2 = TestXt::new_signed(sign_extra(1, 0, 0), Call::Balances(BalancesCall::transfer(33, 0))) .invalid(TransactionValidityError::Invalid(InvalidTransaction::Call)); t.execute_with(|| { @@ -750,7 +767,7 @@ mod tests { 110, lock, ); - let xt = sp_runtime::testing::TestXt::new_signed( + let xt = TestXt::new_signed( sign_extra(1, 0, 0), Call::System(SystemCall::remark(vec![1u8])), ); diff --git a/frame/system/src/lib.rs b/frame/system/src/lib.rs index 875a1d7cfe..ec35fe3b60 100644 --- a/frame/system/src/lib.rs +++ b/frame/system/src/lib.rs @@ -117,7 +117,7 @@ use frame_support::{ Contains, Get, ModuleToIndex, OnNewAccount, OnReapAccount, IsDeadAccount, Happened, StoredMap }, - weights::{Weight, DispatchInfo, DispatchClass, SimpleDispatchInfo}, + weights::{Weight, DispatchInfo, DispatchClass, SimpleDispatchInfo, FunctionOf}, }; use codec::{Encode, Decode, FullCodec, EncodeLike}; @@ -414,11 +414,15 @@ decl_module! { pub struct Module for enum Call where origin: T::Origin { type Error = Error; - /// A big dispatch that will disallow any other transaction to be included. + /// A dispatch that will fill the block weight up to the given ratio. // TODO: This should only be available for testing, rather than in general usage, but // that's not possible at present (since it's within the decl_module macro). - #[weight = SimpleDispatchInfo::MaxOperational] - fn fill_block(origin) { + #[weight = FunctionOf( + |(ratio,): (&Perbill,)| *ratio * T::MaximumBlockWeight::get(), + DispatchClass::Operational, + true, + )] + fn fill_block(origin, _ratio: Perbill) { ensure_root(origin)?; } @@ -1080,6 +1084,34 @@ impl CheckWeight { pub fn new() -> Self { Self(PhantomData) } + + /// Do the pre-dispatch checks. This can be applied to both signed and unsigned. + /// + /// It checks and notes the new weight and length. + fn do_pre_dispatch( + info: ::DispatchInfo, + len: usize, + ) -> Result<(), TransactionValidityError> { + let next_len = Self::check_block_length(info, len)?; + let next_weight = Self::check_weight(info)?; + AllExtrinsicsLen::put(next_len); + AllExtrinsicsWeight::put(next_weight); + Ok(()) + } + + /// Do the validate checks. This can be applied to both signed and unsigned. + /// + /// It only checks that the block weight and length limit will not exceed. + fn do_validate( + info: ::DispatchInfo, + len: usize, + ) -> TransactionValidity { + // ignore the next weight and length. If they return `Ok`, then it is below the limit. + let _ = Self::check_block_length(info, len)?; + let _ = Self::check_weight(info)?; + + Ok(ValidTransaction { priority: Self::get_priority(info), ..Default::default() }) + } } impl SignedExtension for CheckWeight { @@ -1099,11 +1131,7 @@ impl SignedExtension for CheckWeight { info: Self::DispatchInfo, len: usize, ) -> Result<(), TransactionValidityError> { - let next_len = Self::check_block_length(info, len)?; - AllExtrinsicsLen::put(next_len); - let next_weight = Self::check_weight(info)?; - AllExtrinsicsWeight::put(next_weight); - Ok(()) + Self::do_pre_dispatch(info, len) } fn validate( @@ -1113,18 +1141,23 @@ impl SignedExtension for CheckWeight { info: Self::DispatchInfo, len: usize, ) -> TransactionValidity { - // There is no point in writing to storage here since changes are discarded. This basically - // discards any transaction which is bigger than the length or weight limit **alone**, which - // is a guarantee that it will fail in the pre-dispatch phase. - if let Err(e) = Self::check_block_length(info, len) { - return Err(e); - } + Self::do_validate(info, len) + } - if let Err(e) = Self::check_weight(info) { - return Err(e); - } + fn pre_dispatch_unsigned( + _call: &Self::Call, + info: Self::DispatchInfo, + len: usize, + ) -> Result<(), TransactionValidityError> { + Self::do_pre_dispatch(info, len) + } - Ok(ValidTransaction { priority: Self::get_priority(info), ..Default::default() }) + fn validate_unsigned( + _call: &Self::Call, + info: Self::DispatchInfo, + len: usize, + ) -> TransactionValidity { + Self::do_validate(info, len) } } -- GitLab From dbeebe2cbc87662cc4bdc7e948d14da2cf30e03e Mon Sep 17 00:00:00 2001 From: Stanislav Tkach Date: Thu, 20 Feb 2020 18:03:33 +0200 Subject: [PATCH 014/301] Remove deprecated API (#4993) * Remove deprecated API * Remove (some) allow(dead_code) * Bump spec_version * Fix import, remove allow dead code. Co-authored-by: Shawn Tabrizi --- bin/node/cli/src/service.rs | 4 -- client/block-builder/src/lib.rs | 70 ++++++++++------------------- client/consensus/babe/src/lib.rs | 43 ------------------ frame/babe/src/lib.rs | 1 - frame/babe/src/mock.rs | 6 +-- frame/babe/src/tests.rs | 4 +- frame/grandpa/src/lib.rs | 1 - primitives/block-builder/src/lib.rs | 27 ----------- primitives/blockchain/src/error.rs | 13 ------ 9 files changed, 26 insertions(+), 143 deletions(-) diff --git a/bin/node/cli/src/service.rs b/bin/node/cli/src/service.rs index a882483a44..79e1f97169 100644 --- a/bin/node/cli/src/service.rs +++ b/bin/node/cli/src/service.rs @@ -264,9 +264,7 @@ macro_rules! new_full { }} } -#[allow(dead_code)] type ConcreteBlock = node_primitives::Block; -#[allow(dead_code)] type ConcreteClient = Client< Backend, @@ -275,9 +273,7 @@ type ConcreteClient = ConcreteBlock, node_runtime::RuntimeApi >; -#[allow(dead_code)] type ConcreteBackend = Backend; -#[allow(dead_code)] type ConcreteTransactionPool = sc_transaction_pool::BasicPool< sc_transaction_pool::FullChainApi, ConcreteBlock diff --git a/client/block-builder/src/lib.rs b/client/block-builder/src/lib.rs index 26bc9ecea8..9bc14cb6e9 100644 --- a/client/block-builder/src/lib.rs +++ b/client/block-builder/src/lib.rs @@ -121,7 +121,7 @@ where backend, }) } - + /// Push onto the block's list of extrinsics. /// /// This will ensure the extrinsic can be validly executed (by executing it). @@ -141,60 +141,36 @@ where let block_id = &self.block_id; let extrinsics = &mut self.extrinsics; - if self + let use_trusted = skip_signature && self .api .has_api_with::>, _>( block_id, - |version| version < 4, - )? - { - // Run compatibility fallback for v3. - self.api.map_api_result(|api| { - #[allow(deprecated)] - match api.apply_extrinsic_before_version_4_with_context( + |version| version >= 5, + )?; + + self.api.map_api_result(|api| { + let apply_result = if use_trusted { + api.apply_trusted_extrinsic_with_context( block_id, ExecutionContext::BlockConstruction, xt.clone(), - )? { - Ok(_) => { - extrinsics.push(xt); - Ok(()) - } - Err(e) => Err(ApplyExtrinsicFailed::from(e).into()), - } - }) - } else { - let use_trusted = skip_signature && self - .api - .has_api_with::>, _>( + )? + } else { + api.apply_extrinsic_with_context( block_id, - |version| version >= 5, - )?; - - self.api.map_api_result(|api| { - let apply_result = if use_trusted { - api.apply_trusted_extrinsic_with_context( - block_id, - ExecutionContext::BlockConstruction, - xt.clone(), - )? - } else { - api.apply_extrinsic_with_context( - block_id, - ExecutionContext::BlockConstruction, - xt.clone(), - )? - }; - - match apply_result { - Ok(_) => { - extrinsics.push(xt); - Ok(()) - } - Err(tx_validity) => Err(ApplyExtrinsicFailed::Validity(tx_validity).into()), + ExecutionContext::BlockConstruction, + xt.clone(), + )? + }; + + match apply_result { + Ok(_) => { + extrinsics.push(xt); + Ok(()) } - }) - } + Err(tx_validity) => Err(ApplyExtrinsicFailed::Validity(tx_validity).into()), + } + }) } /// Consume the builder to build a valid `Block` containing all pushed extrinsics. diff --git a/client/consensus/babe/src/lib.rs b/client/consensus/babe/src/lib.rs index b93619b29c..e04e112d7d 100644 --- a/client/consensus/babe/src/lib.rs +++ b/client/consensus/babe/src/lib.rs @@ -693,49 +693,6 @@ impl BabeVerifier { } } -#[allow(dead_code)] -fn median_algorithm( - median_required_blocks: u64, - slot_duration: u64, - slot_number: u64, - slot_now: u64, - time_source: &mut (Option, Vec<(Instant, u64)>), -) { - let num_timestamps = time_source.1.len(); - if num_timestamps as u64 >= median_required_blocks && median_required_blocks > 0 { - let mut new_list: Vec<_> = time_source.1.iter().map(|&(t, sl)| { - let offset: u128 = u128::from(slot_duration) - .checked_mul(1_000_000u128) // self.config.slot_duration returns milliseconds - .and_then(|x| { - x.checked_mul(u128::from(slot_number).saturating_sub(u128::from(sl))) - }) - .expect("we cannot have timespans long enough for this to overflow; qed"); - - const NANOS_PER_SEC: u32 = 1_000_000_000; - let nanos = (offset % u128::from(NANOS_PER_SEC)) as u32; - let secs = (offset / u128::from(NANOS_PER_SEC)) as u64; - - t + Duration::new(secs, nanos) - }).collect(); - - // Use a partial sort to move the median timestamp to the middle of the list - pdqselect::select(&mut new_list, num_timestamps / 2); - - let &median = new_list - .get(num_timestamps / 2) - .expect("we have at least one timestamp, so this is a valid index; qed"); - - let now = Instant::now(); - if now >= median { - time_source.0.replace(now - median); - } - - time_source.1.clear(); - } else { - time_source.1.push((Instant::now(), slot_now)) - } -} - impl Verifier for BabeVerifier where Block: BlockT, B: Backend + 'static, diff --git a/frame/babe/src/lib.rs b/frame/babe/src/lib.rs index aba3a75eb9..4dc9304fa8 100644 --- a/frame/babe/src/lib.rs +++ b/frame/babe/src/lib.rs @@ -248,7 +248,6 @@ impl pallet_session::ShouldEndSession for Module { /// A BABE equivocation offence report. /// /// When a validator released two or more blocks at the same slot. -#[allow(dead_code)] struct BabeEquivocationOffence { /// A babe slot number in which this incident happened. slot: u64, diff --git a/frame/babe/src/mock.rs b/frame/babe/src/mock.rs index efb5570c1d..aef0b4b386 100644 --- a/frame/babe/src/mock.rs +++ b/frame/babe/src/mock.rs @@ -15,17 +15,15 @@ // along with Substrate. If not, see . //! Test utilities -#![allow(dead_code, unused_imports)] use super::{Trait, Module, GenesisConfig}; -use sp_consensus_babe::AuthorityId; use sp_runtime::{ - traits::IdentityLookup, Perbill, PerThing, testing::{Header, UintAuthorityId}, impl_opaque_keys, + traits::IdentityLookup, Perbill, testing::{Header, UintAuthorityId}, impl_opaque_keys, }; use sp_version::RuntimeVersion; use frame_support::{impl_outer_origin, parameter_types, weights::Weight}; use sp_io; -use sp_core::{H256, Blake2Hasher}; +use sp_core::H256; impl_outer_origin!{ pub enum Origin for Test where system = frame_system {} diff --git a/frame/babe/src/tests.rs b/frame/babe/src/tests.rs index 976a264d7b..84f8166b10 100644 --- a/frame/babe/src/tests.rs +++ b/frame/babe/src/tests.rs @@ -17,7 +17,7 @@ //! Consensus extension module tests for BABE consensus. use super::*; -use mock::{new_test_ext, Babe, Test}; +use mock::{new_test_ext, Babe, System}; use sp_runtime::{traits::OnFinalize, testing::{Digest, DigestItem}}; use pallet_session::ShouldEndSession; @@ -66,8 +66,6 @@ fn check_module() { }) } -type System = frame_system::Module; - #[test] fn first_block_epoch_zero_start() { new_test_ext(vec![0, 1, 2, 3]).execute_with(|| { diff --git a/frame/grandpa/src/lib.rs b/frame/grandpa/src/lib.rs index 6d3223f094..3210627f91 100644 --- a/frame/grandpa/src/lib.rs +++ b/frame/grandpa/src/lib.rs @@ -481,7 +481,6 @@ struct GrandpaTimeSlot { // TODO [slashing]: Integrate this. /// A grandpa equivocation offence report. -#[allow(dead_code)] struct GrandpaEquivocationOffence { /// Time slot at which this incident happened. time_slot: GrandpaTimeSlot, diff --git a/primitives/block-builder/src/lib.rs b/primitives/block-builder/src/lib.rs index e4e98e1f40..71c2a3ccb5 100644 --- a/primitives/block-builder/src/lib.rs +++ b/primitives/block-builder/src/lib.rs @@ -22,37 +22,10 @@ use sp_runtime::{traits::Block as BlockT, ApplyExtrinsicResult}; use sp_inherents::{InherentData, CheckInherentsResult}; -/// Definitions for supporting the older version of API: v3 -/// -/// These definitions are taken from the 2c58e30246a029b53d51e5b24c31974ac539ee8b git revision. -#[deprecated(note = "These definitions here are only for compatibility reasons")] -pub mod compatibility_v3 { - use sp_runtime::{DispatchOutcome, transaction_validity}; - use codec::{Encode, Decode}; - - #[derive(Eq, PartialEq, Clone, Copy, Decode, Encode, Debug)] - pub enum ApplyError { - NoPermission, - BadState, - Validity(transaction_validity::TransactionValidityError), - } - - // `ApplyOutcome` was renamed to `DispatchOutcome` with the layout preserved. - pub type ApplyResult = Result; -} - sp_api::decl_runtime_apis! { /// The `BlockBuilder` api trait that provides the required functionality for building a block. #[api_version(5)] pub trait BlockBuilder { - /// Compatibility version of `apply_extrinsic` for v3. - /// - /// Only the return type is changed. - #[changed_in(4)] - #[allow(deprecated)] - fn apply_extrinsic(extrinsic: ::Extrinsic) - -> self::compatibility_v3::ApplyResult; - /// Apply the given extrinsic. /// /// Returns an inclusion outcome which specifies if this extrinsic is included in diff --git a/primitives/blockchain/src/error.rs b/primitives/blockchain/src/error.rs index ece20d1cf8..a4ec9c2995 100644 --- a/primitives/blockchain/src/error.rs +++ b/primitives/blockchain/src/error.rs @@ -19,8 +19,6 @@ use std::{self, error, result}; use sp_state_machine; use sp_runtime::transaction_validity::TransactionValidityError; -#[allow(deprecated)] -use sp_block_builder::compatibility_v3; use sp_consensus; use derive_more::{Display, From}; use codec::Error as CodecError; @@ -150,17 +148,6 @@ impl<'a> From<&'a str> for Error { } } -#[allow(deprecated)] -impl From for ApplyExtrinsicFailed { - fn from(e: compatibility_v3::ApplyError) -> Self { - use self::compatibility_v3::ApplyError::*; - match e { - Validity(tx_validity) => Self::Validity(tx_validity), - e => Self::Msg(format!("Apply extrinsic failed: {:?}", e)), - } - } -} - impl Error { /// Chain a blockchain error. pub fn from_blockchain(e: Box) -> Self { -- GitLab From 5135844eb77eb5dd76948a535146c0ad1df6bd0f Mon Sep 17 00:00:00 2001 From: Gavin Wood Date: Thu, 20 Feb 2020 17:20:16 +0100 Subject: [PATCH 015/301] Benchmark macro (#4962) * MAcro benchamrks * Iterative macro * Tidying it up. * Macro improvements * Bits.. * Last benchmaks. * Repo benchmark macro * Add the possibility of evaluating arbitrary expressions in a benchmaark * Better syntax and docs * Update `BenchmarkParameter` * Add `ignore` to sudo-code in docs * First try of timestamp implementation. * Fix macro docs, remove warnings. * Use macro in balances pallet. * Make some space in frame benchmarking. * Remove _benchmarks_seed variable. * Bump impl_version. Co-authored-by: Shawn Tabrizi Co-authored-by: Marcio Diaz --- Cargo.lock | 8851 +++++++++++++-------------- bin/node/runtime/src/lib.rs | 2 +- frame/balances/src/benchmarking.rs | 340 +- frame/benchmarking/Cargo.toml | 1 + frame/benchmarking/src/lib.rs | 434 +- frame/benchmarking/src/utils.rs | 97 + frame/identity/src/benchmarking.rs | 530 +- frame/identity/src/lib.rs | 20 +- frame/timestamp/src/benchmarking.rs | 87 +- 9 files changed, 5097 insertions(+), 5265 deletions(-) create mode 100644 frame/benchmarking/src/utils.rs diff --git a/Cargo.lock b/Cargo.lock index 97e56ffae2..c17bd30b0b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4,6980 +4,7428 @@ name = "Inflector" version = "0.11.4" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fe438c63458706e03479442743baae6c88256498e6431708f6dfc520a26515d3" dependencies = [ - "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "regex 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static", + "regex", ] [[package]] name = "adler32" version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d2e7343e7fc9de883d1b0341e0b13970f764c14101234857d2ddafa1cb1cac2" [[package]] name = "aes-ctr" version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2e5b0458ea3beae0d1d8c0f3946564f8e10f90646cf78c06b4351052058d1ee" dependencies = [ - "aes-soft 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", - "aesni 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)", - "ctr 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", - "stream-cipher 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", + "aes-soft", + "aesni", + "ctr", + "stream-cipher", ] [[package]] name = "aes-soft" version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cfd7e7ae3f9a1fb5c03b389fc6bb9a51400d0c13053f0dca698c832bfd893a0d" dependencies = [ - "block-cipher-trait 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", - "byteorder 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "opaque-debug 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", + "block-cipher-trait", + "byteorder 1.3.4", + "opaque-debug", ] [[package]] name = "aesni" version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2f70a6b5f971e473091ab7cfb5ffac6cde81666c4556751d8d5620ead8abf100" dependencies = [ - "block-cipher-trait 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", - "opaque-debug 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", - "stream-cipher 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", + "block-cipher-trait", + "opaque-debug", + "stream-cipher", ] [[package]] name = "ahash" version = "0.2.18" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f33b5018f120946c1dcf279194f238a9f146725593ead1c08fa47ff22b0b5d3" dependencies = [ - "const-random 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", + "const-random", ] [[package]] name = "aho-corasick" version = "0.7.8" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "743ad5a418686aad3b87fd14c43badd828cf26e214a00f92a384291cf22e1811" dependencies = [ - "memchr 2.3.2 (registry+https://github.com/rust-lang/crates.io-index)", + "memchr", ] [[package]] name = "ansi_term" version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee49baf6cb617b853aa8d93bf420db2383fab46d314482ca2803b40d5fde979b" dependencies = [ - "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.8", ] [[package]] name = "ansi_term" version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d52a9bb7ec0cf484c551830a7ce27bd20d67eac647e1befb56b0be4ee39a55d2" dependencies = [ - "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.8", ] [[package]] name = "anyhow" version = "1.0.26" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7825f6833612eb2414095684fcf6c635becf3ce97fe48cf6421321e93bfbd53c" [[package]] name = "app_dirs" version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e73a24bad9bd6a94d6395382a6c69fe071708ae4409f763c5475e14ee896313d" dependencies = [ - "ole32-sys 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "shell32-sys 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", - "xdg 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "ole32-sys", + "shell32-sys", + "winapi 0.2.8", + "xdg", ] [[package]] name = "arc-swap" version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d7b8a9123b8027467bce0099fe556c628a53c8d83df0507084c31e9ba2e39aff" [[package]] name = "arrayref" version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4c527152e37cf757a3f78aae5a06fbeefdb07ccc535c980a3208ee3060dd544" [[package]] name = "arrayvec" version = "0.4.12" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd9fd44efafa8690358b7408d253adf110036b88f55672a933f01d616ad9b1b9" dependencies = [ - "nodrop 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)", + "nodrop", ] [[package]] name = "arrayvec" version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cff77d8686867eceff3105329d4698d96c2391c176d5d03adc90c7389162b5b8" [[package]] name = "asn1_der" version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6fce6b6a0ffdafebd82c87e79e3f40e8d2c523e5fea5566ff6b90509bf98d638" dependencies = [ - "asn1_der_derive 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "asn1_der_derive", ] [[package]] name = "asn1_der_derive" version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d0864d84b8e07b145449be9a8537db86bf9de5ce03b913214694643b4743502" dependencies = [ - "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 1.0.14 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 1.0.2", + "syn", ] [[package]] name = "assert_cmd" version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6283bac8dd7226470d491bc4737816fea4ca1fba7a2847f2e9097fd6bfb4624c" dependencies = [ - "doc-comment 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "escargot 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", - "predicates 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "predicates-core 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "predicates-tree 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "doc-comment", + "escargot", + "predicates", + "predicates-core", + "predicates-tree", ] [[package]] name = "assert_matches" version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7deb0a829ca7bcfaf5da70b073a8d128619259a7be8216a355e23f00763059e5" [[package]] name = "async-std" version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "async-task 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "broadcaster 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "crossbeam-channel 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "crossbeam-deque 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)", - "crossbeam-utils 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-core 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-io 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-timer 2.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "kv-log-macro 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "memchr 2.3.2 (registry+https://github.com/rust-lang/crates.io-index)", - "mio 0.6.21 (registry+https://github.com/rust-lang/crates.io-index)", - "mio-uds 0.6.7 (registry+https://github.com/rust-lang/crates.io-index)", - "num_cpus 1.12.0 (registry+https://github.com/rust-lang/crates.io-index)", - "once_cell 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "pin-project-lite 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", - "pin-utils 0.1.0-alpha.4 (registry+https://github.com/rust-lang/crates.io-index)", - "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", +checksum = "538ecb01eb64eecd772087e5b6f7540cbc917f047727339a472dafed2185b267" +dependencies = [ + "async-task", + "broadcaster", + "crossbeam-channel", + "crossbeam-deque", + "crossbeam-utils", + "futures-core", + "futures-io", + "futures-timer 2.0.2", + "kv-log-macro", + "log 0.4.8", + "memchr", + "mio", + "mio-uds", + "num_cpus", + "once_cell", + "pin-project-lite", + "pin-utils", + "slab", ] [[package]] name = "async-task" version = "1.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ac2c016b079e771204030951c366db398864f5026f84a44dafb0ff20f02085d" dependencies = [ - "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", + "libc", + "winapi 0.3.8", ] [[package]] name = "async-tls" version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ce6977f57fa68da77ffe5542950d47e9c23d65f5bc7cb0a9f8700996913eec7" dependencies = [ - "futures 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "rustls 0.16.0 (registry+https://github.com/rust-lang/crates.io-index)", - "webpki 0.21.2 (registry+https://github.com/rust-lang/crates.io-index)", - "webpki-roots 0.17.0 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.3.4", + "rustls", + "webpki", + "webpki-roots 0.17.0", ] [[package]] name = "atty" version = "0.2.14" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" dependencies = [ - "hermit-abi 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", + "hermit-abi", + "libc", + "winapi 0.3.8", ] [[package]] name = "autocfg" version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d49d90015b3c36167a20fe2810c5cd875ad504b39cff3d4eae7977e6b7c1cb2" [[package]] name = "autocfg" version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8aac770f1885fd7e387acedd76065302551364496e46b3dd00860b2f8359b9d" [[package]] name = "backtrace" version = "0.3.44" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e4036b9bf40f3cf16aba72a3d65e8a520fc4bafcdc7079aea8f848c58c5b5536" dependencies = [ - "backtrace-sys 0.1.32 (registry+https://github.com/rust-lang/crates.io-index)", - "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", - "rustc-demangle 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)", + "backtrace-sys", + "cfg-if", + "libc", + "rustc-demangle", ] [[package]] name = "backtrace-sys" version = "0.1.32" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d6575f128516de27e3ce99689419835fce9643a9b215a14d2b5b685be018491" dependencies = [ - "cc 1.0.50 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", + "cc", + "libc", ] [[package]] name = "base58" version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5024ee8015f02155eee35c711107ddd9a9bf3cb689cf2a9089c97e79b6e1ae83" [[package]] name = "base64" version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "489d6c0ed21b11d038c31b6ceccca973e65d73ba3bd8ecb9a2babf5546164643" dependencies = [ - "byteorder 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "safemem 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder 1.3.4", + "safemem", ] [[package]] name = "base64" version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b25d992356d2eb0ed82172f5248873db5560c4721f564b13cb5193bda5e668e" dependencies = [ - "byteorder 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder 1.3.4", ] [[package]] name = "base64" version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b41b7ea54a0c9d92199de89e20e58d49f02f8e699814ef3fdf266f6f748d15c7" [[package]] name = "bincode" version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5753e2a71534719bf3f4e57006c3a4f0d2c672a4b676eec84161f763eca87dbf" dependencies = [ - "byteorder 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder 1.3.4", + "serde", ] [[package]] name = "bindgen" version = "0.49.4" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c07087f3d5731bf3fb375a81841b99597e25dc11bd3bc72d16d43adf6624a6e" dependencies = [ - "bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "cexpr 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", - "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", - "clang-sys 0.28.1 (registry+https://github.com/rust-lang/crates.io-index)", - "clap 2.33.0 (registry+https://github.com/rust-lang/crates.io-index)", - "env_logger 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", - "fxhash 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "peeking_take_while 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)", - "regex 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "shlex 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "which 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)", + "bitflags", + "cexpr", + "cfg-if", + "clang-sys", + "clap", + "env_logger 0.6.2", + "fxhash", + "lazy_static", + "log 0.4.8", + "peeking_take_while", + "proc-macro2 0.4.30", + "quote 0.6.13", + "regex", + "shlex", + "which 2.0.1", ] [[package]] name = "bitflags" version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf1de2fe8c75bc145a2f577add951f8134889b4795d47466a54a5c846d691693" [[package]] name = "bitmask" version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5da9b3d9f6f585199287a473f4f8dfab6566cf827d15c00c219f53c645687ead" [[package]] name = "bitvec" version = "0.15.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a993f74b4c99c1908d156b8d2e0fb6277736b0ecbd833982fd1241d39b2766a6" [[package]] name = "blake2" version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94cb07b0da6a73955f8fb85d24c466778e70cda767a568229b104f0264089330" dependencies = [ - "byte-tools 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "crypto-mac 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", - "digest 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", - "opaque-debug 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", + "byte-tools", + "crypto-mac", + "digest", + "opaque-debug", ] [[package]] name = "blake2-rfc" version = "0.2.18" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d6d530bdd2d52966a6d03b7a964add7ae1a288d25214066fd4b600f0f796400" dependencies = [ - "arrayvec 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", - "constant_time_eq 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "arrayvec 0.4.12", + "constant_time_eq", ] [[package]] name = "blake2b_simd" version = "0.5.10" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8fb2d74254a3a0b5cac33ac9f8ed0e44aa50378d9dbb2e5d83bd21ed1dc2c8a" dependencies = [ - "arrayref 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", - "arrayvec 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", - "constant_time_eq 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "arrayref", + "arrayvec 0.5.1", + "constant_time_eq", ] [[package]] name = "block-buffer" version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0940dc441f31689269e10ac70eb1002a3a1d3ad1390e030043662eb7fe4688b" dependencies = [ - "block-padding 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", - "byte-tools 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "byteorder 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "generic-array 0.12.3 (registry+https://github.com/rust-lang/crates.io-index)", + "block-padding", + "byte-tools", + "byteorder 1.3.4", + "generic-array", ] [[package]] name = "block-cipher-trait" version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c924d49bd09e7c06003acda26cd9742e796e34282ec6c1189404dee0c1f4774" dependencies = [ - "generic-array 0.12.3 (registry+https://github.com/rust-lang/crates.io-index)", + "generic-array", ] [[package]] name = "block-padding" version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa79dedbb091f449f1f39e53edf88d5dbe95f895dae6135a8d7b881fb5af73f5" dependencies = [ - "byte-tools 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "byte-tools", ] [[package]] name = "broadcaster" version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9c972e21e0d055a36cf73e4daae870941fe7a8abcd5ac3396aab9e4c126bd87" dependencies = [ - "futures-channel 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-core 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-sink 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-util 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "parking_lot 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", - "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-channel", + "futures-core", + "futures-sink", + "futures-util", + "parking_lot 0.10.0", + "slab", ] [[package]] name = "browser-utils" version = "0.8.0" dependencies = [ - "chrono 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", - "clear_on_drop 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", - "console_error_panic_hook 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "console_log 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-timer 3.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "js-sys 0.3.35 (registry+https://github.com/rust-lang/crates.io-index)", - "kvdb-web 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "libp2p 0.16.1 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)", - "sc-chain-spec 2.0.0", - "sc-informant 0.8.0", - "sc-network 0.8.0", - "sc-service 0.8.0", - "wasm-bindgen 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", - "wasm-bindgen-futures 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "chrono", + "clear_on_drop", + "console_error_panic_hook", + "console_log", + "futures 0.1.29", + "futures 0.3.4", + "futures-timer 3.0.2", + "js-sys", + "kvdb-web", + "libp2p", + "log 0.4.8", + "rand 0.6.5", + "rand 0.7.3", + "sc-chain-spec", + "sc-informant", + "sc-network", + "sc-service", + "wasm-bindgen", + "wasm-bindgen-futures", ] [[package]] name = "bs58" version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c95ee6bba9d950218b6cc910cf62bc9e0a171d0f4537e3627b0f54d08549b188" [[package]] name = "bs58" version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b170cd256a3f9fa6b9edae3e44a7dfdfc77e8124dbc3e2612d75f9c3e2396dae" [[package]] name = "bstr" version = "0.2.11" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "502ae1441a0a5adb8fbd38a5955a6416b9493e92b465de5e4a9bde6a539c2c48" dependencies = [ - "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "memchr 2.3.2 (registry+https://github.com/rust-lang/crates.io-index)", - "regex-automata 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static", + "memchr", + "regex-automata", + "serde", ] [[package]] name = "build-helper" version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bdce191bf3fa4995ce948c8c83b4640a1745457a149e73c6db75b4ffe36aad5f" dependencies = [ - "semver 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)", + "semver 0.6.0", ] [[package]] name = "bumpalo" version = "3.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f359dc14ff8911330a51ef78022d376f25ed00248912803b58f00cb1c27f742" [[package]] name = "byte-slice-cast" version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0a5e3906bcbf133e33c1d4d95afc664ad37fbdb9f6568d8043e7ea8c27d93d3" [[package]] name = "byte-tools" version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3b5ca7a04898ad4bcd41c90c5285445ff5b791899bb1b0abdd2a2aa791211d7" [[package]] name = "byteorder" version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fc10e8cc6b2580fda3f36eb6dc5316657f812a3df879a44a66fc9f0fdbc4855" [[package]] name = "byteorder" version = "1.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08c48aae112d48ed9f069b33538ea9e3e90aa263cfa3d1c24309612b1f7472de" [[package]] name = "bytes" version = "0.4.12" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "206fdffcfa2df7cbe15601ef46c813fce0965eb3286db6b56c583b814b51c81c" dependencies = [ - "byteorder 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "either 1.5.3 (registry+https://github.com/rust-lang/crates.io-index)", - "iovec 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder 1.3.4", + "either", + "iovec", ] [[package]] name = "bytes" version = "0.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "130aac562c0dd69c56b3b1cc8ffd2e17be31d0b6c25b61c96b76231aa23e39e1" [[package]] name = "c2-chacha" version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "214238caa1bf3a496ec3392968969cab8549f96ff30652c9e56885329315f6bb" dependencies = [ - "ppv-lite86 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", + "ppv-lite86", ] [[package]] name = "c_linked_list" version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4964518bd3b4a8190e832886cdc0da9794f12e8e6c1613a9e90ff331c4c8724b" [[package]] name = "cargo_metadata" version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46e3374c604fb39d1a2f35ed5e4a4e30e60d01fab49446e08f1b3e9a90aef202" dependencies = [ - "semver 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_json 1.0.48 (registry+https://github.com/rust-lang/crates.io-index)", + "semver 0.9.0", + "serde", + "serde_derive", + "serde_json", ] [[package]] name = "cast" version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4b9434b9a5aa1450faa3f9cb14ea0e8c53bb5d2b3c1bfd1ab4fc03e9f33fbfb0" dependencies = [ - "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", + "rustc_version", ] [[package]] name = "cc" version = "1.0.50" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95e28fa049fda1c330bcf9d723be7663a899c4679724b34c81e9f5a326aab8cd" dependencies = [ - "jobserver 0.1.21 (registry+https://github.com/rust-lang/crates.io-index)", + "jobserver", ] [[package]] name = "cexpr" version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fce5b5fb86b0c57c20c834c1b412fd09c77c8a59b9473f86272709e78874cd1d" dependencies = [ - "nom 4.2.3 (registry+https://github.com/rust-lang/crates.io-index)", + "nom", ] [[package]] name = "cfg-if" version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822" [[package]] name = "chacha20-poly1305-aead" version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77d2058ba29594f69c75e8a9018e0485e3914ca5084e3613cd64529042f5423b" dependencies = [ - "constant_time_eq 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "constant_time_eq", ] [[package]] name = "chain-spec-builder" version = "2.0.0" dependencies = [ - "ansi_term 0.12.1 (registry+https://github.com/rust-lang/crates.io-index)", - "node-cli 2.0.0", - "rand 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)", - "sc-keystore 2.0.0", - "sp-core 2.0.0", - "structopt 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", + "ansi_term 0.12.1", + "node-cli", + "rand 0.7.3", + "sc-keystore", + "sp-core", + "structopt", ] [[package]] name = "chrono" version = "0.4.10" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "31850b4a4d6bae316f7a09e691c944c28299298837edc0a03f755618c23cbc01" dependencies = [ - "js-sys 0.3.35 (registry+https://github.com/rust-lang/crates.io-index)", - "num-integer 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)", - "num-traits 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", - "time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)", - "wasm-bindgen 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", + "js-sys", + "num-integer", + "num-traits", + "time", + "wasm-bindgen", ] [[package]] name = "clang-sys" version = "0.28.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81de550971c976f176130da4b2978d3b524eaa0fd9ac31f3ceb5ae1231fb4853" dependencies = [ - "glob 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", - "libloading 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)", + "glob 0.3.0", + "libc", + "libloading", ] [[package]] name = "clap" version = "2.33.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5067f5bb2d80ef5d68b4c87db81601f0b75bca627bc2ef76b141d7b846a3c6d9" dependencies = [ - "ansi_term 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", - "atty 0.2.14 (registry+https://github.com/rust-lang/crates.io-index)", - "bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "strsim 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", - "textwrap 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", - "unicode-width 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", - "vec_map 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", + "ansi_term 0.11.0", + "atty", + "bitflags", + "strsim", + "textwrap", + "unicode-width", + "vec_map", ] [[package]] name = "clear_on_drop" version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97276801e127ffb46b66ce23f35cc96bd454fa311294bced4bbace7baa8b1d17" dependencies = [ - "cc 1.0.50 (registry+https://github.com/rust-lang/crates.io-index)", + "cc", ] [[package]] name = "cloudabi" version = "0.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ddfc5b9aa5d4507acaf872de71051dfd0e309860e88966e1051e462a077aac4f" dependencies = [ - "bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "bitflags", ] [[package]] name = "cmake" version = "0.1.42" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81fb25b677f8bf1eb325017cb6bb8452f87969db0fedb4f757b297bee78a7c62" dependencies = [ - "cc 1.0.50 (registry+https://github.com/rust-lang/crates.io-index)", + "cc", ] [[package]] name = "console_error_panic_hook" version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8d976903543e0c48546a91908f21588a680a8c8f984df9a5d69feccb2b2a211" dependencies = [ - "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", - "wasm-bindgen 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if", + "wasm-bindgen", ] [[package]] name = "console_log" version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e7871d2947441b0fdd8e2bd1ce2a2f75304f896582c0d572162d48290683c48" dependencies = [ - "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "web-sys 0.3.35 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8", + "web-sys", ] [[package]] name = "const-random" version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2f1af9ac737b2dd2d577701e59fd09ba34822f6f2ebdb30a7647405d9e55e16a" dependencies = [ - "const-random-macro 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", - "proc-macro-hack 0.5.11 (registry+https://github.com/rust-lang/crates.io-index)", + "const-random-macro", + "proc-macro-hack", ] [[package]] name = "const-random-macro" version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "25e4c606eb459dd29f7c57b2e0879f2b6f14ee130918c2b78ccb58a9624e6c7a" dependencies = [ - "getrandom 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)", - "proc-macro-hack 0.5.11 (registry+https://github.com/rust-lang/crates.io-index)", + "getrandom", + "proc-macro-hack", ] [[package]] name = "constant_time_eq" version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "245097e9a4535ee1e3e3931fcfcd55a796a44c643e8596ff6566d68f09b87bbc" [[package]] name = "core-foundation" version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "25b9e03f145fd4f2bf705e07b900cd41fc636598fe5dc452fd0db1441c3f496d" dependencies = [ - "core-foundation-sys 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", + "core-foundation-sys", + "libc", ] [[package]] name = "core-foundation-sys" version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7ca8a5221364ef15ce201e8ed2f609fc312682a8f4e0e3d4aa5879764e0fa3b" [[package]] name = "cranelift-bforest" version = "0.58.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fd0f53d59dc9ab1c8ab68c991d8406b52b7a0aab0b15b05a3a6895579c4e5dd9" dependencies = [ - "cranelift-entity 0.58.0 (registry+https://github.com/rust-lang/crates.io-index)", + "cranelift-entity", ] [[package]] name = "cranelift-codegen" version = "0.58.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0381a794836fb994c47006465d46d46be072483b667f36013d993b9895117fee" dependencies = [ - "byteorder 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "cranelift-bforest 0.58.0 (registry+https://github.com/rust-lang/crates.io-index)", - "cranelift-codegen-meta 0.58.0 (registry+https://github.com/rust-lang/crates.io-index)", - "cranelift-codegen-shared 0.58.0 (registry+https://github.com/rust-lang/crates.io-index)", - "cranelift-entity 0.58.0 (registry+https://github.com/rust-lang/crates.io-index)", - "gimli 0.20.0 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", - "smallvec 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "target-lexicon 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", - "thiserror 1.0.11 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder 1.3.4", + "cranelift-bforest", + "cranelift-codegen-meta", + "cranelift-codegen-shared", + "cranelift-entity", + "gimli 0.20.0", + "log 0.4.8", + "serde", + "smallvec 1.2.0", + "target-lexicon", + "thiserror", ] [[package]] name = "cranelift-codegen-meta" version = "0.58.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "208c3c8d82bfef32a534c5020c6cfc3bc92f41388f1246b7bb98cf543331abaa" dependencies = [ - "cranelift-codegen-shared 0.58.0 (registry+https://github.com/rust-lang/crates.io-index)", - "cranelift-entity 0.58.0 (registry+https://github.com/rust-lang/crates.io-index)", + "cranelift-codegen-shared", + "cranelift-entity", ] [[package]] name = "cranelift-codegen-shared" version = "0.58.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea048c456a517e56fd6df8f0e3947922897e6e6f61fbc5eb557a36c7b8ff6394" [[package]] name = "cranelift-entity" version = "0.58.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c8c7ed50812194c9e9de1fa39c77b39fc9ab48173d5e7ee88b25b6a8953e9b8" dependencies = [ - "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", + "serde", ] [[package]] name = "cranelift-frontend" version = "0.58.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "21ceb931d9f919731df1b1ecdc716b5c66384b413a7f95909d1f45441ab9bef5" dependencies = [ - "cranelift-codegen 0.58.0 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "smallvec 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "target-lexicon 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", + "cranelift-codegen", + "log 0.4.8", + "smallvec 1.2.0", + "target-lexicon", ] [[package]] name = "cranelift-native" version = "0.58.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "564ee82268bc25b914fcf331edfc2452f2d9ca34f976b187b4ca668beba250c8" dependencies = [ - "cranelift-codegen 0.58.0 (registry+https://github.com/rust-lang/crates.io-index)", - "raw-cpuid 7.0.3 (registry+https://github.com/rust-lang/crates.io-index)", - "target-lexicon 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", + "cranelift-codegen", + "raw-cpuid", + "target-lexicon", ] [[package]] name = "cranelift-wasm" version = "0.58.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "de63e2271b374be5b07f359184e2126a08fb24d24a740cbc178b7e0107ddafa5" dependencies = [ - "cranelift-codegen 0.58.0 (registry+https://github.com/rust-lang/crates.io-index)", - "cranelift-entity 0.58.0 (registry+https://github.com/rust-lang/crates.io-index)", - "cranelift-frontend 0.58.0 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", - "thiserror 1.0.11 (registry+https://github.com/rust-lang/crates.io-index)", - "wasmparser 0.48.2 (registry+https://github.com/rust-lang/crates.io-index)", + "cranelift-codegen", + "cranelift-entity", + "cranelift-frontend", + "log 0.4.8", + "serde", + "thiserror", + "wasmparser 0.48.2", ] [[package]] name = "crc32fast" version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba125de2af0df55319f41944744ad91c71113bf74a4646efff39afe1f6842db1" dependencies = [ - "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if", ] [[package]] name = "criterion" version = "0.2.11" source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "atty 0.2.14 (registry+https://github.com/rust-lang/crates.io-index)", - "cast 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", - "clap 2.33.0 (registry+https://github.com/rust-lang/crates.io-index)", - "criterion-plot 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "csv 1.1.3 (registry+https://github.com/rust-lang/crates.io-index)", - "itertools 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", - "num-traits 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_os 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_xoshiro 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "rayon 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "rayon-core 1.7.0 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_json 1.0.48 (registry+https://github.com/rust-lang/crates.io-index)", - "tinytemplate 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)", - "walkdir 2.3.1 (registry+https://github.com/rust-lang/crates.io-index)", +checksum = "0363053954f3e679645fc443321ca128b7b950a6fe288cf5f9335cc22ee58394" +dependencies = [ + "atty", + "cast", + "clap", + "criterion-plot 0.3.1", + "csv", + "itertools", + "lazy_static", + "libc", + "num-traits", + "rand_core 0.3.1", + "rand_os", + "rand_xoshiro", + "rayon", + "rayon-core", + "serde", + "serde_derive", + "serde_json", + "tinytemplate", + "walkdir", ] [[package]] name = "criterion" version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fc755679c12bda8e5523a71e4d654b6bf2e14bd838dfc48cde6559a05caf7d1" dependencies = [ - "atty 0.2.14 (registry+https://github.com/rust-lang/crates.io-index)", - "cast 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", - "clap 2.33.0 (registry+https://github.com/rust-lang/crates.io-index)", - "criterion-plot 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", - "csv 1.1.3 (registry+https://github.com/rust-lang/crates.io-index)", - "itertools 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "num-traits 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", - "oorandom 11.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "plotters 0.2.12 (registry+https://github.com/rust-lang/crates.io-index)", - "rayon 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "regex 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_json 1.0.48 (registry+https://github.com/rust-lang/crates.io-index)", - "tinytemplate 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)", - "walkdir 2.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "atty", + "cast", + "clap", + "criterion-plot 0.4.1", + "csv", + "itertools", + "lazy_static", + "num-traits", + "oorandom", + "plotters", + "rayon", + "regex", + "serde", + "serde_derive", + "serde_json", + "tinytemplate", + "walkdir", ] [[package]] name = "criterion-plot" version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76f9212ddf2f4a9eb2d401635190600656a1f88a932ef53d06e7fa4c7e02fb8e" dependencies = [ - "byteorder 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "cast 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", - "itertools 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder 1.3.4", + "cast", + "itertools", ] [[package]] name = "criterion-plot" version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a01e15e0ea58e8234f96146b1f91fa9d0e4dd7a38da93ff7a75d42c0b9d3a545" dependencies = [ - "cast 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", - "itertools 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)", + "cast", + "itertools", ] [[package]] name = "crossbeam-channel" version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "acec9a3b0b3559f15aee4f90746c4e5e293b701c0f7d3925d24e01645267b68c" dependencies = [ - "crossbeam-utils 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-utils", ] [[package]] name = "crossbeam-deque" version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3aa945d63861bfe624b55d153a39684da1e8c0bc8fba932f7ee3a3c16cea3ca" dependencies = [ - "crossbeam-epoch 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", - "crossbeam-utils 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-epoch", + "crossbeam-utils", ] [[package]] name = "crossbeam-epoch" version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5064ebdbf05ce3cb95e45c8b086f72263f4166b29b97f6baff7ef7fe047b55ac" dependencies = [ - "autocfg 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", - "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", - "crossbeam-utils 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "memoffset 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)", - "scopeguard 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "autocfg 0.1.7", + "cfg-if", + "crossbeam-utils", + "lazy_static", + "memoffset", + "scopeguard", ] [[package]] name = "crossbeam-queue" version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c695eeca1e7173472a32221542ae469b3e9aac3a4fc81f7696bcad82029493db" dependencies = [ - "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", - "crossbeam-utils 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if", + "crossbeam-utils", ] [[package]] name = "crossbeam-utils" version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce446db02cdc3165b94ae73111e570793400d0794e46125cc4056c81cbb039f4" dependencies = [ - "autocfg 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", - "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "autocfg 0.1.7", + "cfg-if", + "lazy_static", ] [[package]] name = "crunchy" version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" [[package]] name = "crypto-mac" version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4434400df11d95d556bac068ddfedd482915eb18fe8bea89bc80b6e4b1c179e5" dependencies = [ - "generic-array 0.12.3 (registry+https://github.com/rust-lang/crates.io-index)", - "subtle 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "generic-array", + "subtle 1.0.0", ] [[package]] name = "csv" version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00affe7f6ab566df61b4be3ce8cf16bc2576bca0963ceb0955e45d514bf9a279" dependencies = [ - "bstr 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", - "csv-core 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", - "itoa 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", - "ryu 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", + "bstr", + "csv-core", + "itoa", + "ryu", + "serde", ] [[package]] name = "csv-core" version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b2466559f260f48ad25fe6317b3c8dac77b5bdb5763ac7d9d6103530663bc90" dependencies = [ - "memchr 2.3.2 (registry+https://github.com/rust-lang/crates.io-index)", + "memchr", ] [[package]] name = "ct-logs" version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4d3686f5fa27dbc1d76c751300376e167c5a43387f44bb451fd1c24776e49113" dependencies = [ - "sct 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sct", ] [[package]] name = "ctor" version = "0.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd8ce37ad4184ab2ce004c33bf6379185d3b1c95801cab51026bd271bf68eedc" dependencies = [ - "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 1.0.14 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 1.0.2", + "syn", ] [[package]] name = "ctr" version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "022cd691704491df67d25d006fe8eca083098253c4d43516c2206479c58c6736" dependencies = [ - "block-cipher-trait 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", - "stream-cipher 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", + "block-cipher-trait", + "stream-cipher", ] [[package]] name = "cuckoofilter" version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8dd43f7cfaffe0a386636a10baea2ee05cc50df3b77bea4a456c9572a939bf1f" dependencies = [ - "byteorder 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.3.23 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder 0.5.3", + "rand 0.3.23", ] [[package]] name = "curve25519-dalek" version = "1.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b7dcd30ba50cdf88b55b033456138b7c0ac4afdc436d82e1b79f370f24cc66d" dependencies = [ - "byteorder 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "clear_on_drop 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", - "digest 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "subtle 2.2.2 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder 1.3.4", + "clear_on_drop", + "digest", + "rand_core 0.3.1", + "subtle 2.2.2", ] [[package]] name = "curve25519-dalek" version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26778518a7f6cffa1d25a44b602b62b979bd88adb9e99ffec546998cf3404839" dependencies = [ - "byteorder 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "digest 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_core 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", - "subtle 2.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "zeroize 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder 1.3.4", + "digest", + "rand_core 0.5.1", + "subtle 2.2.2", + "zeroize 1.1.0", ] [[package]] name = "data-encoding" version = "2.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4f47ca1860a761136924ddd2422ba77b2ea54fe8cc75b9040804a0d9d32ad97" [[package]] name = "derive_more" version = "0.99.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a806e96c59a76a5ba6e18735b6cf833344671e61e7863f2edb5c518ea2cac95c" dependencies = [ - "proc-macro2 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 1.0.14 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 1.0.8", + "quote 1.0.2", + "syn", ] [[package]] name = "difference" version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "524cbf6897b527295dff137cec09ecf3a05f4fddffd7dfcd1585403449e74198" [[package]] name = "digest" version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3d0c8c8752312f9713efd397ff63acb9f85585afbf179282e720e7704954dd5" dependencies = [ - "generic-array 0.12.3 (registry+https://github.com/rust-lang/crates.io-index)", + "generic-array", ] [[package]] name = "directories" version = "2.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "551a778172a450d7fc12e629ca3b0428d00f6afa9a43da1b630d54604e97371c" dependencies = [ - "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", - "dirs-sys 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if", + "dirs-sys", ] [[package]] name = "dirs-sys" version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "afa0b23de8fd801745c471deffa6e12d248f962c9fd4b4c33787b055599bde7b" dependencies = [ - "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", - "redox_users 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if", + "libc", + "redox_users", + "winapi 0.3.8", ] [[package]] name = "dns-parser" version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c4d33be9473d06f75f58220f71f7a9317aca647dc061dbd3c361b0bef505fbea" dependencies = [ - "byteorder 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "quick-error 1.2.3 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder 1.3.4", + "quick-error", ] [[package]] name = "doc-comment" version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "923dea538cea0aa3025e8685b20d6ee21ef99c4f77e954a30febbaac5ec73a97" [[package]] name = "ed25519-dalek" version = "1.0.0-pre.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "978710b352437433c97b2bff193f2fb1dfd58a093f863dd95e225a19baa599a2" dependencies = [ - "clear_on_drop 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", - "curve25519-dalek 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)", - "sha2 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", + "clear_on_drop", + "curve25519-dalek 2.0.0", + "rand 0.7.3", + "sha2", ] [[package]] name = "either" version = "1.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb1f6b1ce1c140482ea30ddd3335fc0024ac7ee112895426e0a629a6c20adfe3" [[package]] name = "enumflags2" version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33121c8782ba948ba332dab29311b026a8716dc65a1599e5b88f392d38496af8" dependencies = [ - "enumflags2_derive 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", + "enumflags2_derive", ] [[package]] name = "enumflags2_derive" version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ecf634c5213044b8d54a46dd282cf5dd1f86bb5cb53e92c409cb4680a7fb9894" dependencies = [ - "proc-macro2 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 1.0.14 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 1.0.8", + "quote 1.0.2", + "syn", ] [[package]] name = "env_logger" version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aafcde04e90a5226a6443b7aabdb016ba2f8307c847d524724bd9b346dd1a2d3" dependencies = [ - "atty 0.2.14 (registry+https://github.com/rust-lang/crates.io-index)", - "humantime 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "regex 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "termcolor 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "atty", + "humantime", + "log 0.4.8", + "regex", + "termcolor", ] [[package]] name = "env_logger" version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44533bbbb3bb3c1fa17d9f2e4e38bbbaf8396ba82193c4cb1b6445d711445d36" dependencies = [ - "atty 0.2.14 (registry+https://github.com/rust-lang/crates.io-index)", - "humantime 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "regex 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "termcolor 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "atty", + "humantime", + "log 0.4.8", + "regex", + "termcolor", ] [[package]] name = "environmental" version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "516aa8d7a71cb00a1c4146f0798549b93d083d4f189b3ced8f3de6b8f11ee6c4" [[package]] name = "erased-serde" version = "0.3.10" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd7d80305c9bd8cd78e3c753eb9fb110f83621e5211f1a3afffcc812b104daf9" dependencies = [ - "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", + "serde", ] [[package]] name = "errno" version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2a071601ed01b988f896ab14b95e67335d1eeb50190932a1320f7fe3cadc84e" dependencies = [ - "errno-dragonfly 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", + "errno-dragonfly", + "libc", + "winapi 0.3.8", ] [[package]] name = "errno-dragonfly" version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "14ca354e36190500e1e1fb267c647932382b54053c50b14970856c0b00a35067" dependencies = [ - "gcc 0.3.55 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", + "gcc", + "libc", ] [[package]] name = "escargot" version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74cf96bec282dcdb07099f7e31d9fed323bca9435a09aba7b6d99b7617bca96d" dependencies = [ - "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_json 1.0.48 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static", + "log 0.4.8", + "serde", + "serde_json", ] [[package]] name = "evm" version = "0.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "272f65e18a2b6449b682bfcdf6c3ccc63db0b93898d89c0fb237548bbfc764a5" dependencies = [ - "evm-core 0.15.0 (registry+https://github.com/rust-lang/crates.io-index)", - "evm-gasometer 0.15.0 (registry+https://github.com/rust-lang/crates.io-index)", - "evm-runtime 0.15.0 (registry+https://github.com/rust-lang/crates.io-index)", - "primitive-types 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", - "rlp 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", - "sha3 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)", + "evm-core", + "evm-gasometer", + "evm-runtime", + "primitive-types", + "rlp", + "serde", + "sha3", ] [[package]] name = "evm-core" version = "0.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "66534d42e13d50f9101bed87cb568fd5aa929c600c3c13f8dadbbf39f5635945" dependencies = [ - "primitive-types 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", + "primitive-types", ] [[package]] name = "evm-gasometer" version = "0.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "39bc5b592803ca644781fe2290b7305ea5182f7c9516d615ddfb2308c2cab639" dependencies = [ - "evm-core 0.15.0 (registry+https://github.com/rust-lang/crates.io-index)", - "evm-runtime 0.15.0 (registry+https://github.com/rust-lang/crates.io-index)", - "primitive-types 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", + "evm-core", + "evm-runtime", + "primitive-types", ] [[package]] name = "evm-runtime" version = "0.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "389e4b447fb26971a9c76c8aa49c0ab435f8e46e8fc46e1bc4ebf01f3c2b428f" dependencies = [ - "evm-core 0.15.0 (registry+https://github.com/rust-lang/crates.io-index)", - "primitive-types 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", - "sha3 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)", + "evm-core", + "primitive-types", + "sha3", ] [[package]] name = "exit-future" version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e43f2f1833d64e33f15592464d6fdd70f349dda7b1a53088eb83cd94014008c5" dependencies = [ - "futures 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.3.4", ] [[package]] name = "faerie" version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74b9ed6159e4a6212c61d9c6a86bee01876b192a64accecf58d5b5ae3b667b52" dependencies = [ - "anyhow 1.0.26 (registry+https://github.com/rust-lang/crates.io-index)", - "goblin 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", - "indexmap 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "scroll 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)", - "string-interner 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", - "target-lexicon 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", - "thiserror 1.0.11 (registry+https://github.com/rust-lang/crates.io-index)", + "anyhow", + "goblin", + "indexmap", + "log 0.4.8", + "scroll", + "string-interner", + "target-lexicon", + "thiserror", ] [[package]] name = "failure" version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8273f13c977665c5db7eb2b99ae520952fe5ac831ae4cd09d80c4c7042b5ed9" dependencies = [ - "backtrace 0.3.44 (registry+https://github.com/rust-lang/crates.io-index)", - "failure_derive 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", + "backtrace", + "failure_derive", ] [[package]] name = "failure_derive" version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0bc225b78e0391e4b8683440bf2e63c2deeeb2ce5189eab46e2b68c6d3725d08" dependencies = [ - "proc-macro2 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 1.0.14 (registry+https://github.com/rust-lang/crates.io-index)", - "synstructure 0.12.3 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 1.0.8", + "quote 1.0.2", + "syn", + "synstructure", ] [[package]] name = "fake-simd" version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e88a8acf291dafb59c2d96e8f59828f3838bb1a70398823ade51a84de6a6deed" [[package]] name = "fallible-iterator" version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4443176a9f2c162692bd3d352d745ef9413eec5782a80d8fd6f8a1ac692a07f7" [[package]] name = "fdlimit" version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9084c55bb76efb1496328976db88320fe7d9ee86e649e83c4ecce3ba7a9a35d1" dependencies = [ - "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", + "libc", ] [[package]] name = "file-per-thread-logger" version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8505b75b31ef7285168dd237c4a7db3c1f3e0927e7d314e670bc98e854272fe9" dependencies = [ - "env_logger 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "env_logger 0.6.2", + "log 0.4.8", ] [[package]] name = "finality-grandpa" version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3cbb25bef9fcad97fb31e817da280b1c9174435b8769c770ee190a330dd181ea" dependencies = [ - "futures 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-timer 2.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "num-traits 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "parking_lot 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.3.4", + "futures-timer 2.0.2", + "log 0.4.8", + "num-traits", + "parity-scale-codec", + "parking_lot 0.9.0", + "rand 0.6.5", ] [[package]] name = "fixed-hash" version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3367952ceb191f4ab95dd5685dc163ac539e36202f9fcfd0cb22f9f9c542fefc" dependencies = [ - "byteorder 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)", - "rustc-hex 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "static_assertions 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder 1.3.4", + "libc", + "rand 0.7.3", + "rustc-hex", + "static_assertions", ] [[package]] name = "fixedbitset" version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "37ab347416e802de484e4d03c7316c48f1ecb56574dfd4a46a80f173ce1de04d" [[package]] name = "flate2" version = "1.0.13" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6bd6d6f4752952feb71363cffc9ebac9411b75b87c6ab6058c40c8900cf43c0f" dependencies = [ - "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", - "crc32fast 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", - "libz-sys 1.0.25 (registry+https://github.com/rust-lang/crates.io-index)", - "miniz_oxide 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if", + "crc32fast", + "libc", + "libz-sys", + "miniz_oxide", ] [[package]] name = "fnv" version = "1.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2fad85553e09a6f881f739c29f0b00b0f01357c743266d478b68951ce23285f3" [[package]] name = "foreign-types" version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" dependencies = [ - "foreign-types-shared 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "foreign-types-shared", ] [[package]] name = "foreign-types-shared" version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" [[package]] name = "fork-tree" version = "2.0.0" dependencies = [ - "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-scale-codec", ] [[package]] name = "frame-benchmarking" version = "2.0.0" dependencies = [ - "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-api 2.0.0", - "sp-runtime-interface 2.0.0", - "sp-std 2.0.0", + "parity-scale-codec", + "sp-api", + "sp-io", + "sp-runtime-interface", + "sp-std", ] [[package]] name = "frame-benchmarking-cli" version = "2.0.0" dependencies = [ - "frame-benchmarking 2.0.0", - "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "sc-cli 0.8.0", - "sc-client 0.8.0", - "sc-client-db 0.8.0", - "sc-executor 0.8.0", - "sc-service 0.8.0", - "sp-runtime 2.0.0", - "structopt 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", + "frame-benchmarking", + "parity-scale-codec", + "sc-cli", + "sc-client", + "sc-client-db", + "sc-executor", + "sc-service", + "sp-runtime", + "structopt", ] [[package]] name = "frame-executive" version = "2.0.0" dependencies = [ - "frame-support 2.0.0", - "frame-system 2.0.0", - "hex-literal 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "pallet-balances 2.0.0", - "pallet-indices 2.0.0", - "pallet-transaction-payment 2.0.0", - "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-core 2.0.0", - "sp-io 2.0.0", - "sp-runtime 2.0.0", - "sp-std 2.0.0", + "frame-support", + "frame-system", + "hex-literal", + "pallet-balances", + "pallet-indices", + "pallet-transaction-payment", + "parity-scale-codec", + "serde", + "sp-core", + "sp-io", + "sp-runtime", + "sp-std", ] [[package]] name = "frame-metadata" version = "11.0.0" dependencies = [ - "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-core 2.0.0", - "sp-std 2.0.0", + "parity-scale-codec", + "serde", + "sp-core", + "sp-std", ] [[package]] name = "frame-support" version = "2.0.0" dependencies = [ - "bitmask 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", - "frame-metadata 11.0.0", - "frame-support-procedural 2.0.0", - "frame-system 2.0.0", - "impl-trait-for-tuples 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "once_cell 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "paste 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "pretty_assertions 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-arithmetic 2.0.0", - "sp-core 2.0.0", - "sp-inherents 2.0.0", - "sp-io 2.0.0", - "sp-runtime 2.0.0", - "sp-state-machine 0.8.0", - "sp-std 2.0.0", - "tracing 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", + "bitmask", + "frame-metadata", + "frame-support-procedural", + "frame-system", + "impl-trait-for-tuples", + "log 0.4.8", + "once_cell", + "parity-scale-codec", + "paste", + "pretty_assertions", + "serde", + "sp-arithmetic", + "sp-core", + "sp-inherents", + "sp-io", + "sp-runtime", + "sp-state-machine", + "sp-std", + "tracing", ] [[package]] name = "frame-support-procedural" version = "2.0.0" dependencies = [ - "frame-support-procedural-tools 2.0.0", - "proc-macro2 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 1.0.14 (registry+https://github.com/rust-lang/crates.io-index)", + "frame-support-procedural-tools", + "proc-macro2 1.0.8", + "quote 1.0.2", + "syn", ] [[package]] name = "frame-support-procedural-tools" version = "2.0.0" dependencies = [ - "frame-support-procedural-tools-derive 2.0.0", - "proc-macro-crate 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", - "proc-macro2 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 1.0.14 (registry+https://github.com/rust-lang/crates.io-index)", + "frame-support-procedural-tools-derive", + "proc-macro-crate", + "proc-macro2 1.0.8", + "quote 1.0.2", + "syn", ] [[package]] name = "frame-support-procedural-tools-derive" version = "2.0.0" dependencies = [ - "proc-macro2 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 1.0.14 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 1.0.8", + "quote 1.0.2", + "syn", ] [[package]] name = "frame-support-test" version = "2.0.0" dependencies = [ - "frame-support 2.0.0", - "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "pretty_assertions 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-core 2.0.0", - "sp-inherents 2.0.0", - "sp-io 2.0.0", - "sp-runtime 2.0.0", - "sp-state-machine 0.8.0", - "trybuild 1.0.22 (registry+https://github.com/rust-lang/crates.io-index)", + "frame-support", + "parity-scale-codec", + "pretty_assertions", + "serde", + "sp-core", + "sp-inherents", + "sp-io", + "sp-runtime", + "sp-state-machine", + "trybuild", ] [[package]] name = "frame-system" version = "2.0.0" dependencies = [ - "criterion 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", - "frame-support 2.0.0", - "impl-trait-for-tuples 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-core 2.0.0", - "sp-externalities 0.8.0", - "sp-io 2.0.0", - "sp-runtime 2.0.0", - "sp-std 2.0.0", - "sp-version 2.0.0", - "substrate-test-runtime-client 2.0.0", + "criterion 0.2.11", + "frame-support", + "impl-trait-for-tuples", + "parity-scale-codec", + "serde", + "sp-core", + "sp-externalities", + "sp-io", + "sp-runtime", + "sp-std", + "sp-version", + "substrate-test-runtime-client", ] [[package]] name = "frame-system-rpc-runtime-api" version = "2.0.0" dependencies = [ - "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-api 2.0.0", + "parity-scale-codec", + "sp-api", ] [[package]] name = "fs-swap" version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "921d332c89b3b61a826de38c61ee5b6e02c56806cade1b0e5d81bd71f57a71bb" dependencies = [ - "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", - "libloading 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static", + "libc", + "libloading", + "winapi 0.3.8", ] [[package]] name = "fs2" version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9564fc758e15025b46aa6643b1b77d047d1a56a1aea6e01002ac0c7026876213" dependencies = [ - "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", + "libc", + "winapi 0.3.8", ] [[package]] name = "fs_extra" version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f2a4a2034423744d2cc7ca2068453168dcdb82c438419e639a26bd87839c674" [[package]] name = "fuchsia-cprng" version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a06f77d526c1a601b7c4cdd98f54b5eaabffc14d5f2f0296febdc7f357c6d3ba" [[package]] name = "fuchsia-zircon" version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2e9763c69ebaae630ba35f74888db465e49e259ba1bc0eda7d06f4a067615d82" dependencies = [ - "bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "fuchsia-zircon-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", + "bitflags", + "fuchsia-zircon-sys", ] [[package]] name = "fuchsia-zircon-sys" version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3dcaa9ae7725d12cdb85b3ad99a434db70b468c09ded17e012d86b5c1010f7a7" [[package]] name = "futures" version = "0.1.29" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b980f2816d6ee8673b6517b52cb0e808a180efc92e5c19d02cdda79066703ef" [[package]] name = "futures" version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c329ae8753502fb44ae4fc2b622fa2a94652c41e795143765ba0927f92ab780" dependencies = [ - "futures-channel 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-core 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-executor 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-io 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-sink 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-task 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-util 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-channel", + "futures-core", + "futures-executor", + "futures-io", + "futures-sink", + "futures-task", + "futures-util", ] [[package]] name = "futures-channel" version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0c77d04ce8edd9cb903932b608268b3fffec4163dc053b3b402bf47eac1f1a8" dependencies = [ - "futures-core 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-sink 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-core", + "futures-sink", ] [[package]] name = "futures-channel-preview" version = "0.3.0-alpha.19" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d5e5f4df964fa9c1c2f8bddeb5c3611631cacd93baf810fc8bb2fb4b495c263a" dependencies = [ - "futures-core-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-core-preview", ] [[package]] name = "futures-core" version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f25592f769825e89b92358db00d26f965761e094951ac44d3663ef25b7ac464a" [[package]] name = "futures-core-preview" version = "0.3.0-alpha.19" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b35b6263fb1ef523c3056565fa67b1d16f0a8604ff12b11b08c25f28a734c60a" [[package]] name = "futures-cpupool" version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab90cde24b3319636588d0c35fe03b1333857621051837ed769faefb4c2162e4" dependencies = [ - "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", - "num_cpus 1.12.0 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.29", + "num_cpus", ] [[package]] name = "futures-diagnose" version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fdcef58a173af8148b182684c9f2d5250875adbcaff7b5794073894f9d8634a9" dependencies = [ - "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "parking_lot 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", - "pin-project 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_json 1.0.48 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.29", + "futures 0.3.4", + "lazy_static", + "log 0.4.8", + "parking_lot 0.9.0", + "pin-project", + "serde", + "serde_json", ] [[package]] name = "futures-executor" version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f674f3e1bcb15b37284a90cedf55afdba482ab061c407a9c0ebbd0f3109741ba" dependencies = [ - "futures-core 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-task 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-util 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "num_cpus 1.12.0 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-core", + "futures-task", + "futures-util", + "num_cpus", ] [[package]] name = "futures-io" version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a638959aa96152c7a4cddf50fcb1e3fede0583b27157c26e67d6f99904090dc6" [[package]] name = "futures-macro" version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a5081aa3de1f7542a794a397cde100ed903b0630152d0973479018fd85423a7" dependencies = [ - "proc-macro-hack 0.5.11 (registry+https://github.com/rust-lang/crates.io-index)", - "proc-macro2 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 1.0.14 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro-hack", + "proc-macro2 1.0.8", + "quote 1.0.2", + "syn", ] [[package]] name = "futures-sink" version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3466821b4bc114d95b087b850a724c6f83115e929bc88f1fa98a3304a944c8a6" [[package]] name = "futures-task" version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b0a34e53cf6cdcd0178aa573aed466b646eb3db769570841fda0c7ede375a27" [[package]] name = "futures-timer" version = "2.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1de7508b218029b0f01662ed8f61b1c964b3ae99d6f25462d0f55a595109df6" [[package]] name = "futures-timer" version = "3.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e64b03909df88034c26dc1547e8970b91f98bdb65165d6a4e9110d94263dbb2c" dependencies = [ - "gloo-timers 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "send_wrapper 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "gloo-timers", + "send_wrapper 0.4.0", ] [[package]] name = "futures-util" version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22766cf25d64306bedf0384da004d05c9974ab104fcc4528f1236181c18004c5" dependencies = [ - "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-channel 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-core 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-io 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-macro 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-sink 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-task 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "memchr 2.3.2 (registry+https://github.com/rust-lang/crates.io-index)", - "pin-utils 0.1.0-alpha.4 (registry+https://github.com/rust-lang/crates.io-index)", - "proc-macro-hack 0.5.11 (registry+https://github.com/rust-lang/crates.io-index)", - "proc-macro-nested 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", - "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.29", + "futures-channel", + "futures-core", + "futures-io", + "futures-macro", + "futures-sink", + "futures-task", + "memchr", + "pin-utils", + "proc-macro-hack", + "proc-macro-nested", + "slab", + "tokio-io", ] [[package]] name = "futures-util-preview" version = "0.3.0-alpha.19" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5ce968633c17e5f97936bd2797b6e38fb56cf16a7422319f7ec2e30d3c470e8d" dependencies = [ - "futures-channel-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-core-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)", - "pin-utils 0.1.0-alpha.4 (registry+https://github.com/rust-lang/crates.io-index)", - "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-channel-preview", + "futures-core-preview", + "pin-utils", + "slab", ] [[package]] name = "futures_codec" version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a0a73299e4718f5452e45980fc1d6957a070abe308d3700b63b8673f47e1c2b3" dependencies = [ - "bytes 0.5.4 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "memchr 2.3.2 (registry+https://github.com/rust-lang/crates.io-index)", - "pin-project 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes 0.5.4", + "futures 0.3.4", + "memchr", + "pin-project", ] [[package]] name = "fxhash" version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c31b6d751ae2c7f11320402d34e41349dd1016f8d5d45e48c4312bc8625af50c" dependencies = [ - "byteorder 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder 1.3.4", ] [[package]] name = "gcc" version = "0.3.55" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f5f3913fa0bfe7ee1fd8248b6b9f42a5af4b9d65ec2dd2c3c26132b950ecfc2" [[package]] name = "generic-array" version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c68f0274ae0e023facc3c97b2e00f076be70e254bc851d972503b328db79b2ec" dependencies = [ - "typenum 1.11.2 (registry+https://github.com/rust-lang/crates.io-index)", + "typenum", ] [[package]] name = "get_if_addrs" version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "abddb55a898d32925f3148bd281174a68eeb68bbfd9a5938a57b18f506ee4ef7" dependencies = [ - "c_linked_list 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "get_if_addrs-sys 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", + "c_linked_list", + "get_if_addrs-sys", + "libc", + "winapi 0.2.8", ] [[package]] name = "get_if_addrs-sys" version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d04f9fb746cf36b191c00f3ede8bde9c8e64f9f4b05ae2694a9ccf5e3f5ab48" dependencies = [ - "gcc 0.3.55 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", + "gcc", + "libc", ] [[package]] name = "getrandom" version = "0.1.14" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7abc8dd8451921606d809ba32e95b6111925cd2906060d2dcc29c070220503eb" dependencies = [ - "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", - "wasi 0.9.0+wasi-snapshot-preview1 (registry+https://github.com/rust-lang/crates.io-index)", - "wasm-bindgen 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if", + "libc", + "wasi", + "wasm-bindgen", ] [[package]] name = "gimli" version = "0.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "162d18ae5f2e3b90a993d202f1ba17a5633c2484426f8bcae201f86194bacd00" dependencies = [ - "arrayvec 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", - "byteorder 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "fallible-iterator 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "indexmap 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", - "stable_deref_trait 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "arrayvec 0.4.12", + "byteorder 1.3.4", + "fallible-iterator", + "indexmap", + "stable_deref_trait", ] [[package]] name = "gimli" version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81dd6190aad0f05ddbbf3245c54ed14ca4aa6dd32f22312b70d8f168c3e3e633" dependencies = [ - "byteorder 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "indexmap 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder 1.3.4", + "indexmap", ] [[package]] name = "glob" version = "0.2.11" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8be18de09a56b60ed0edf84bc9df007e30040691af7acd1c41874faac5895bfb" [[package]] name = "glob" version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b919933a397b79c37e33b77bb2aa3dc8eb6e165ad809e58ff75bc7db2e34574" [[package]] name = "globset" version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "925aa2cac82d8834e2b2a4415b6f6879757fb5c0928fc445ae76461a12eed8f2" dependencies = [ - "aho-corasick 0.7.8 (registry+https://github.com/rust-lang/crates.io-index)", - "bstr 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", - "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "regex 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "aho-corasick", + "bstr", + "fnv", + "log 0.4.8", + "regex", ] [[package]] name = "gloo-timers" version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b2d17dbd803c2fc86cb1b613adf63192046a7176f383a8302594654752c4c4a" dependencies = [ - "futures-channel 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-core 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "js-sys 0.3.35 (registry+https://github.com/rust-lang/crates.io-index)", - "wasm-bindgen 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", - "web-sys 0.3.35 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-channel", + "futures-core", + "js-sys", + "wasm-bindgen", + "web-sys", ] [[package]] name = "goblin" version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3081214398d39e4bd7f2c1975f0488ed04614ffdd976c6fc7a0708278552c0da" dependencies = [ - "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "plain 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", - "scroll 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8", + "plain", + "scroll", ] [[package]] name = "h2" version = "0.1.26" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a5b34c246847f938a410a03c5458c7fee2274436675e76d8b903c08efc29c462" dependencies = [ - "byteorder 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", - "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", - "http 0.1.21 (registry+https://github.com/rust-lang/crates.io-index)", - "indexmap 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", - "string 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder 1.3.4", + "bytes 0.4.12", + "fnv", + "futures 0.1.29", + "http 0.1.21", + "indexmap", + "log 0.4.8", + "slab", + "string", + "tokio-io", ] [[package]] name = "h2" version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9433d71e471c1736fd5a61b671fc0b148d7a2992f666c958d03cd8feb3b88d1" dependencies = [ - "bytes 0.5.4 (registry+https://github.com/rust-lang/crates.io-index)", - "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-core 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-sink 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-util 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "http 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "indexmap 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-util 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes 0.5.4", + "fnv", + "futures-core", + "futures-sink", + "futures-util", + "http 0.2.0", + "indexmap", + "log 0.4.8", + "slab", + "tokio 0.2.11", + "tokio-util", ] [[package]] name = "hash-db" version = "0.15.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d23bd4e7b5eda0d0f3a307e8b381fdc8ba9000f26fbe912250c0a4cc3956364a" [[package]] name = "hash256-std-hasher" version = "0.15.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92c171d55b98633f4ed3860808f004099b36c1cc29c42cfc53aa8591b21efcf2" dependencies = [ - "crunchy 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", + "crunchy", ] [[package]] name = "hashbrown" version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1de41fb8dba9714efd92241565cdff73f78508c95697dd56787d3cba27e2353" [[package]] name = "hashbrown" version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e6073d0ca812575946eb5f35ff68dbe519907b25c42530389ff946dc84c6ead" dependencies = [ - "ahash 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)", - "autocfg 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", + "ahash", + "autocfg 0.1.7", ] [[package]] name = "heck" version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "20564e78d53d2bb135c343b3f47714a56af2061f1c928fdb541dc7b9fdd94205" dependencies = [ - "unicode-segmentation 1.6.0 (registry+https://github.com/rust-lang/crates.io-index)", + "unicode-segmentation", ] [[package]] name = "hermit-abi" version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2c55f143919fbc0bc77e427fe2d74cf23786d7c1875666f2fde3ac3c659bb67" dependencies = [ - "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", + "libc", ] [[package]] name = "hex" version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "644f9158b2f133fd50f5fb3242878846d9eb792e445c893805ff0e3824006e35" [[package]] name = "hex-literal" version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "961de220ec9a91af2e1e5bd80d02109155695e516771762381ef8581317066e0" dependencies = [ - "hex-literal-impl 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "proc-macro-hack 0.5.11 (registry+https://github.com/rust-lang/crates.io-index)", + "hex-literal-impl", + "proc-macro-hack", ] [[package]] name = "hex-literal-impl" version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d4c5c844e2fee0bf673d54c2c177f1713b3d2af2ff6e666b49cb7572e6cf42d" dependencies = [ - "proc-macro-hack 0.5.11 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro-hack", ] [[package]] name = "hmac" version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5dcb5e64cda4c23119ab41ba960d1e170a774c8e4b9d9e6a9bc18aabf5e59695" dependencies = [ - "crypto-mac 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", - "digest 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", + "crypto-mac", + "digest", ] [[package]] name = "hmac-drbg" version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c6e570451493f10f6581b48cdd530413b63ea9e780f544bfd3bdcaa0d89d1a7b" dependencies = [ - "digest 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", - "generic-array 0.12.3 (registry+https://github.com/rust-lang/crates.io-index)", - "hmac 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", + "digest", + "generic-array", + "hmac", ] [[package]] name = "http" version = "0.1.21" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d6ccf5ede3a895d8856620237b2f02972c1bbc78d2965ad7fe8838d4a0ed41f0" dependencies = [ - "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", - "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", - "itoa 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes 0.4.12", + "fnv", + "itoa", ] [[package]] name = "http" version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b708cc7f06493459026f53b9a61a7a121a5d1ec6238dee58ea4941132b30156b" dependencies = [ - "bytes 0.5.4 (registry+https://github.com/rust-lang/crates.io-index)", - "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", - "itoa 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes 0.5.4", + "fnv", + "itoa", ] [[package]] name = "http-body" version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6741c859c1b2463a423a1dbce98d418e6c3c3fc720fb0d45528657320920292d" dependencies = [ - "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", - "http 0.1.21 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-buf 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes 0.4.12", + "futures 0.1.29", + "http 0.1.21", + "tokio-buf", ] [[package]] name = "http-body" version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13d5ff830006f7646652e057693569bfe0d51760c0085a071769d142a205111b" dependencies = [ - "bytes 0.5.4 (registry+https://github.com/rust-lang/crates.io-index)", - "http 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes 0.5.4", + "http 0.2.0", ] [[package]] name = "httparse" version = "1.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd179ae861f0c2e53da70d892f5f3029f9594be0c41dc5269cd371691b1dc2f9" [[package]] name = "humantime" version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df004cfca50ef23c36850aaaa59ad52cc70d0e90243c3c7737a4dd32dc7a3c4f" dependencies = [ - "quick-error 1.2.3 (registry+https://github.com/rust-lang/crates.io-index)", + "quick-error", ] [[package]] name = "hyper" version = "0.10.16" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0a0652d9a2609a968c14be1a9ea00bf4b1d64e2e1f53a1b51b6fff3a6e829273" dependencies = [ - "base64 0.9.3 (registry+https://github.com/rust-lang/crates.io-index)", - "httparse 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "language-tags 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", - "mime 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", - "num_cpus 1.12.0 (registry+https://github.com/rust-lang/crates.io-index)", - "time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)", - "traitobject 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "typeable 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "unicase 1.4.2 (registry+https://github.com/rust-lang/crates.io-index)", - "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)", + "base64 0.9.3", + "httparse", + "language-tags", + "log 0.3.9", + "mime", + "num_cpus", + "time", + "traitobject", + "typeable", + "unicase 1.4.2", + "url 1.7.2", ] [[package]] name = "hyper" version = "0.12.35" source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-cpupool 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", - "h2 0.1.26 (registry+https://github.com/rust-lang/crates.io-index)", - "http 0.1.21 (registry+https://github.com/rust-lang/crates.io-index)", - "http-body 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "httparse 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "iovec 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", - "itoa 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)", - "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", - "time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio 0.1.22 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-buf 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-executor 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-reactor 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-tcp 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-threadpool 0.1.18 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-timer 0.2.13 (registry+https://github.com/rust-lang/crates.io-index)", - "want 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", +checksum = "9dbe6ed1438e1f8ad955a4701e9a944938e9519f6888d12d8558b645e247d5f6" +dependencies = [ + "bytes 0.4.12", + "futures 0.1.29", + "futures-cpupool", + "h2 0.1.26", + "http 0.1.21", + "http-body 0.1.0", + "httparse", + "iovec", + "itoa", + "log 0.4.8", + "net2", + "rustc_version", + "time", + "tokio 0.1.22", + "tokio-buf", + "tokio-executor 0.1.10", + "tokio-io", + "tokio-reactor", + "tokio-tcp", + "tokio-threadpool", + "tokio-timer", + "want 0.2.0", ] [[package]] name = "hyper" version = "0.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa1c527bbc634be72aa7ba31e4e4def9bbb020f5416916279b7c705cd838893e" dependencies = [ - "bytes 0.5.4 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-channel 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-core 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-util 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "h2 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "http 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "http-body 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "httparse 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "itoa 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)", - "pin-project 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", - "tower-service 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "want 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes 0.5.4", + "futures-channel", + "futures-core", + "futures-util", + "h2 0.2.1", + "http 0.2.0", + "http-body 0.3.1", + "httparse", + "itoa", + "log 0.4.8", + "net2", + "pin-project", + "time", + "tokio 0.2.11", + "tower-service", + "want 0.3.0", ] [[package]] name = "hyper-rustls" version = "0.19.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6ea6215c7314d450ee45970ab8b3851ab447a0e6bafdd19e31b20a42dbb7faf" dependencies = [ - "bytes 0.5.4 (registry+https://github.com/rust-lang/crates.io-index)", - "ct-logs 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-util 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "hyper 0.13.2 (registry+https://github.com/rust-lang/crates.io-index)", - "rustls 0.16.0 (registry+https://github.com/rust-lang/crates.io-index)", - "rustls-native-certs 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-rustls 0.12.2 (registry+https://github.com/rust-lang/crates.io-index)", - "webpki 0.21.2 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes 0.5.4", + "ct-logs", + "futures-util", + "hyper 0.13.2", + "rustls", + "rustls-native-certs", + "tokio 0.2.11", + "tokio-rustls", + "webpki", ] [[package]] name = "hyper-tls" version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a800d6aa50af4b5850b2b0f659625ce9504df908e9733b635720483be26174f" dependencies = [ - "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", - "hyper 0.12.35 (registry+https://github.com/rust-lang/crates.io-index)", - "native-tls 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes 0.4.12", + "futures 0.1.29", + "hyper 0.12.35", + "native-tls", + "tokio-io", ] [[package]] name = "idna" version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38f09e0f0b1fb55fdee1f17470ad800da77af5186a1a76c026b679358b7e844e" dependencies = [ - "matches 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", - "unicode-bidi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "unicode-normalization 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", + "matches", + "unicode-bidi", + "unicode-normalization", ] [[package]] name = "idna" version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02e2673c30ee86b5b96a9cb52ad15718aa1f966f5ab9ad54a8b95d5ca33120a9" dependencies = [ - "matches 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", - "unicode-bidi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "unicode-normalization 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", + "matches", + "unicode-bidi", + "unicode-normalization", ] [[package]] name = "impl-codec" version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1be51a921b067b0eaca2fad532d9400041561aa922221cc65f95a85641c6bf53" dependencies = [ - "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-scale-codec", ] [[package]] name = "impl-rlp" version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f7a72f11830b52333f36e3b09a288333888bf54380fd0ac0790a3c31ab0f3c5" dependencies = [ - "rlp 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)", + "rlp", ] [[package]] name = "impl-serde" version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "58e3cae7e99c7ff5a995da2cf78dd0a5383740eda71d98cf7b1910c301ac69b8" dependencies = [ - "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", + "serde", ] [[package]] name = "impl-serde" version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5bbe9ea9b182f0fb1cabbd61f4ff9b7b7b9197955e95a7e4c27de5055eb29ff8" dependencies = [ - "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", + "serde", ] [[package]] name = "impl-trait-for-tuples" version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ef5550a42e3740a0e71f909d4c861056a284060af885ae7aa6242820f920d9d" dependencies = [ - "proc-macro2 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 1.0.14 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 1.0.8", + "quote 1.0.2", + "syn", ] [[package]] name = "indexmap" version = "1.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "076f042c5b7b98f31d205f1249267e12a6518c1481e9dae9764af19b707d2292" dependencies = [ - "autocfg 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "autocfg 1.0.0", ] [[package]] name = "integer-sqrt" version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f65877bf7d44897a473350b1046277941cee20b263397e90869c50b6e766088b" [[package]] name = "interleaved-ordered" version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "141340095b15ed7491bd3d4ced9d20cebfb826174b6bb03386381f62b01e3d77" [[package]] name = "iovec" version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2b3ea6ff95e175473f8ffe6a7eb7c00d054240321b84c57051175fe3c1e075e" dependencies = [ - "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", + "libc", ] [[package]] name = "ipnet" version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a859057dc563d1388c1e816f98a1892629075fc046ed06e845b883bb8b2916fb" [[package]] name = "itertools" version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f56a2d0bc861f9165be4eb3442afd3c236d8a98afd426f65d92324ae1091a484" dependencies = [ - "either 1.5.3 (registry+https://github.com/rust-lang/crates.io-index)", + "either", ] [[package]] name = "itoa" version = "0.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8b7a7c0c47db5545ed3fef7468ee7bb5b74691498139e4b3f6a20685dc6dd8e" [[package]] name = "jobserver" version = "0.1.21" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c71313ebb9439f74b00d9d2dcec36440beaf57a6aa0623068441dd7cd81a7f2" dependencies = [ - "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", + "libc", ] [[package]] name = "js-sys" version = "0.3.35" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7889c7c36282151f6bf465be4700359318aef36baa951462382eae49e9577cf9" dependencies = [ - "wasm-bindgen 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", + "wasm-bindgen", ] [[package]] name = "jsonrpc-client-transports" version = "14.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0a9ae166c4d1f702d297cd76d4b55758ace80272ffc6dbb139fdc1bf810de40b" dependencies = [ - "failure 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", - "hyper 0.12.35 (registry+https://github.com/rust-lang/crates.io-index)", - "hyper-tls 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", - "jsonrpc-core 14.0.5 (registry+https://github.com/rust-lang/crates.io-index)", - "jsonrpc-pubsub 14.0.6 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_json 1.0.48 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio 0.1.22 (registry+https://github.com/rust-lang/crates.io-index)", - "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)", - "websocket 0.24.0 (registry+https://github.com/rust-lang/crates.io-index)", + "failure", + "futures 0.1.29", + "hyper 0.12.35", + "hyper-tls", + "jsonrpc-core", + "jsonrpc-pubsub", + "log 0.4.8", + "serde", + "serde_json", + "tokio 0.1.22", + "url 1.7.2", + "websocket", ] [[package]] name = "jsonrpc-core" version = "14.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fe3b688648f1ef5d5072229e2d672ecb92cbff7d1c79bcf3fd5898f3f3df0970" dependencies = [ - "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_json 1.0.48 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.29", + "log 0.4.8", + "serde", + "serde_derive", + "serde_json", ] [[package]] name = "jsonrpc-core-client" version = "14.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "080dc110be17701097df238fad3c816d4a478a1899dfbcf8ec8957dd40ec7304" dependencies = [ - "jsonrpc-client-transports 14.0.5 (registry+https://github.com/rust-lang/crates.io-index)", + "jsonrpc-client-transports", ] [[package]] name = "jsonrpc-derive" version = "14.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8609af8f63b626e8e211f52441fcdb6ec54f1a446606b10d5c89ae9bf8a20058" dependencies = [ - "proc-macro-crate 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", - "proc-macro2 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 1.0.14 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro-crate", + "proc-macro2 1.0.8", + "quote 1.0.2", + "syn", ] [[package]] name = "jsonrpc-http-server" version = "14.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "816d63997ea45d3634608edbef83ddb35e661f7c0b27b5b72f237e321f0e9807" dependencies = [ - "hyper 0.12.35 (registry+https://github.com/rust-lang/crates.io-index)", - "jsonrpc-core 14.0.5 (registry+https://github.com/rust-lang/crates.io-index)", - "jsonrpc-server-utils 14.0.5 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)", - "parking_lot 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", - "unicase 2.6.0 (registry+https://github.com/rust-lang/crates.io-index)", + "hyper 0.12.35", + "jsonrpc-core", + "jsonrpc-server-utils", + "log 0.4.8", + "net2", + "parking_lot 0.10.0", + "unicase 2.6.0", ] [[package]] name = "jsonrpc-pubsub" version = "14.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b31c9b90731276fdd24d896f31bb10aecf2e5151733364ae81123186643d939" dependencies = [ - "jsonrpc-core 14.0.5 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "parking_lot 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", + "jsonrpc-core", + "log 0.4.8", + "parking_lot 0.10.0", + "serde", ] [[package]] name = "jsonrpc-server-utils" version = "14.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95b7635e618a0edbbe0d2a2bbbc69874277c49383fcf6c3c0414491cfb517d22" dependencies = [ - "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", - "globset 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)", - "jsonrpc-core 14.0.5 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio 0.1.22 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-codec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "unicase 2.6.0 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes 0.4.12", + "globset", + "jsonrpc-core", + "lazy_static", + "log 0.4.8", + "tokio 0.1.22", + "tokio-codec", + "unicase 2.6.0", ] [[package]] name = "jsonrpc-ws-server" version = "14.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b94e5773b2ae66e0e02c80775ce6bbba6f15d5bb47c14ec36a36fcf94f8df851" dependencies = [ - "jsonrpc-core 14.0.5 (registry+https://github.com/rust-lang/crates.io-index)", - "jsonrpc-server-utils 14.0.5 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "parking_lot 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", - "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", - "ws 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)", + "jsonrpc-core", + "jsonrpc-server-utils", + "log 0.4.8", + "parking_lot 0.10.0", + "slab", + "ws", ] [[package]] name = "keccak" version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67c21572b4949434e4fc1e1978b99c5f77064153c59d998bf13ecd96fb5ecba7" [[package]] name = "keccak-hasher" version = "0.15.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3468207deea1359a0e921591ae9b4c928733d94eb9d6a2eeda994cfd59f42cf8" dependencies = [ - "hash-db 0.15.2 (registry+https://github.com/rust-lang/crates.io-index)", - "hash256-std-hasher 0.15.2 (registry+https://github.com/rust-lang/crates.io-index)", - "tiny-keccak 1.5.0 (registry+https://github.com/rust-lang/crates.io-index)", + "hash-db", + "hash256-std-hasher", + "tiny-keccak 1.5.0", ] [[package]] name = "kernel32-sys" version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7507624b29483431c0ba2d82aece8ca6cdba9382bff4ddd0f7490560c056098d" dependencies = [ - "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.2.8", + "winapi-build", ] [[package]] name = "kv-log-macro" version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c54d9f465d530a752e6ebdc217e081a7a614b48cb200f6f0aee21ba6bc9aabb" dependencies = [ - "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8", ] [[package]] name = "kvdb" version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03080afe6f42cd996da9f568d6add5d7fb5ee2ea7fb7802d2d2cbd836958fd87" dependencies = [ - "parity-bytes 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-util-mem 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", - "smallvec 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-bytes", + "parity-util-mem", + "smallvec 1.2.0", ] [[package]] name = "kvdb-memorydb" version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9355274e5a9e0a7e8ef43916950eae3949024de2a8dffe4d5a6c13974a37c8e" dependencies = [ - "kvdb 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-util-mem 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", - "parking_lot 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", + "kvdb", + "parity-util-mem", + "parking_lot 0.10.0", ] [[package]] name = "kvdb-rocksdb" version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af36fd66ccd99f3f771ae39b75aaba28b952372b6debfb971134bf1f03466ab2" dependencies = [ - "fs-swap 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", - "interleaved-ordered 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "kvdb 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "num_cpus 1.12.0 (registry+https://github.com/rust-lang/crates.io-index)", - "owning_ref 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-util-mem 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", - "parking_lot 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", - "regex 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "rocksdb 0.13.0 (registry+https://github.com/rust-lang/crates.io-index)", - "smallvec 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "fs-swap", + "interleaved-ordered", + "kvdb", + "log 0.4.8", + "num_cpus", + "owning_ref", + "parity-util-mem", + "parking_lot 0.10.0", + "regex", + "rocksdb", + "smallvec 1.2.0", ] [[package]] name = "kvdb-web" version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a985c47b4c46429e96033ebf6eaed784a81ceccb4e5df13d63f3b9078a4df81" dependencies = [ - "futures 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "js-sys 0.3.35 (registry+https://github.com/rust-lang/crates.io-index)", - "kvdb 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "kvdb-memorydb 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-util-mem 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", - "send_wrapper 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "wasm-bindgen 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", - "web-sys 0.3.35 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.3.4", + "js-sys", + "kvdb", + "kvdb-memorydb", + "log 0.4.8", + "parity-util-mem", + "send_wrapper 0.3.0", + "wasm-bindgen", + "web-sys", ] [[package]] name = "language-tags" version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a91d884b6667cd606bb5a69aa0c99ba811a115fc68915e7056ec08a46e93199a" [[package]] name = "lazy_static" version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" [[package]] name = "lazycell" version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b294d6fa9ee409a054354afc4352b0b9ef7ca222c69b8812cbea9e7d2bf3783f" [[package]] name = "leb128" version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3576a87f2ba00f6f106fdfcd16db1d698d648a26ad8e0573cad8537c3c362d2a" [[package]] name = "libc" version = "0.2.66" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d515b1f41455adea1313a4a2ac8a8a477634fbae63cc6100e3aebb207ce61558" [[package]] name = "libloading" version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2b111a074963af1d37a139918ac6d49ad1d0d5e47f72fd55388619691a7d753" dependencies = [ - "cc 1.0.50 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", + "cc", + "winapi 0.3.8", ] [[package]] name = "libp2p" version = "0.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "bytes 0.5.4 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "libp2p-core 0.16.0 (registry+https://github.com/rust-lang/crates.io-index)", - "libp2p-core-derive 0.16.0 (registry+https://github.com/rust-lang/crates.io-index)", - "libp2p-deflate 0.16.0 (registry+https://github.com/rust-lang/crates.io-index)", - "libp2p-dns 0.16.0 (registry+https://github.com/rust-lang/crates.io-index)", - "libp2p-floodsub 0.16.0 (registry+https://github.com/rust-lang/crates.io-index)", - "libp2p-gossipsub 0.16.0 (registry+https://github.com/rust-lang/crates.io-index)", - "libp2p-identify 0.16.0 (registry+https://github.com/rust-lang/crates.io-index)", - "libp2p-kad 0.16.1 (registry+https://github.com/rust-lang/crates.io-index)", - "libp2p-mdns 0.16.0 (registry+https://github.com/rust-lang/crates.io-index)", - "libp2p-mplex 0.16.0 (registry+https://github.com/rust-lang/crates.io-index)", - "libp2p-noise 0.16.0 (registry+https://github.com/rust-lang/crates.io-index)", - "libp2p-ping 0.16.0 (registry+https://github.com/rust-lang/crates.io-index)", - "libp2p-plaintext 0.16.0 (registry+https://github.com/rust-lang/crates.io-index)", - "libp2p-pnet 0.16.0 (registry+https://github.com/rust-lang/crates.io-index)", - "libp2p-secio 0.16.1 (registry+https://github.com/rust-lang/crates.io-index)", - "libp2p-swarm 0.16.1 (registry+https://github.com/rust-lang/crates.io-index)", - "libp2p-tcp 0.16.0 (registry+https://github.com/rust-lang/crates.io-index)", - "libp2p-uds 0.16.0 (registry+https://github.com/rust-lang/crates.io-index)", - "libp2p-wasm-ext 0.16.1 (registry+https://github.com/rust-lang/crates.io-index)", - "libp2p-websocket 0.16.0 (registry+https://github.com/rust-lang/crates.io-index)", - "libp2p-yamux 0.16.0 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-multiaddr 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-multihash 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", - "parking_lot 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", - "pin-project 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "smallvec 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "wasm-timer 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", +checksum = "f6bf152b510950e1030f2d3dcca5f0b4017892be50348a15fd3eec8b90c826fb" +dependencies = [ + "bytes 0.5.4", + "futures 0.3.4", + "lazy_static", + "libp2p-core", + "libp2p-core-derive", + "libp2p-deflate", + "libp2p-dns", + "libp2p-floodsub", + "libp2p-gossipsub", + "libp2p-identify", + "libp2p-kad", + "libp2p-mdns", + "libp2p-mplex", + "libp2p-noise", + "libp2p-ping", + "libp2p-plaintext", + "libp2p-pnet", + "libp2p-secio", + "libp2p-swarm", + "libp2p-tcp", + "libp2p-uds", + "libp2p-wasm-ext", + "libp2p-websocket", + "libp2p-yamux", + "parity-multiaddr 0.7.2", + "parity-multihash 0.2.3", + "parking_lot 0.10.0", + "pin-project", + "smallvec 1.2.0", + "wasm-timer", ] [[package]] name = "libp2p-core" version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "asn1_der 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)", - "bs58 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "ed25519-dalek 1.0.0-pre.3 (registry+https://github.com/rust-lang/crates.io-index)", - "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-timer 3.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "libsecp256k1 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "multistream-select 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-multiaddr 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-multihash 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", - "parking_lot 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", - "pin-project 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "prost 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", - "prost-build 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)", - "ring 0.16.11 (registry+https://github.com/rust-lang/crates.io-index)", - "rw-stream-sink 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "sha2 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", - "smallvec 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "thiserror 1.0.11 (registry+https://github.com/rust-lang/crates.io-index)", - "unsigned-varint 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "void 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "zeroize 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", +checksum = "3b874594c4b29de1a29f27871feba8e6cd13aa54a8a1e8f8c7cf3dfac5ca287c" +dependencies = [ + "asn1_der", + "bs58 0.3.0", + "ed25519-dalek", + "fnv", + "futures 0.3.4", + "futures-timer 3.0.2", + "lazy_static", + "libsecp256k1", + "log 0.4.8", + "multistream-select", + "parity-multiaddr 0.7.2", + "parity-multihash 0.2.3", + "parking_lot 0.10.0", + "pin-project", + "prost", + "prost-build", + "rand 0.7.3", + "ring", + "rw-stream-sink", + "sha2", + "smallvec 1.2.0", + "thiserror", + "unsigned-varint 0.3.1", + "void", + "zeroize 1.1.0", ] [[package]] name = "libp2p-core-derive" version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96d472e9d522f588805c77801de10b957be84e10f019ca5f869fa1825b15ea9b" dependencies = [ - "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 1.0.14 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 1.0.2", + "syn", ] [[package]] name = "libp2p-deflate" version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2e25004d4d9837b44b22c5f1a69be1724a5168fef6cff1716b5176a972c3aa62" dependencies = [ - "flate2 1.0.13 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "libp2p-core 0.16.0 (registry+https://github.com/rust-lang/crates.io-index)", + "flate2", + "futures 0.3.4", + "libp2p-core", ] [[package]] name = "libp2p-dns" version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b99e552f9939b606eb4b59f7f64d9b01e3f96752f47e350fc3c5fc646ed3f649" dependencies = [ - "futures 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "libp2p-core 0.16.0 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.3.4", + "libp2p-core", + "log 0.4.8", ] [[package]] name = "libp2p-floodsub" version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d3234f12e44f9a50351a9807b97fe7de11eb9ae4482370392ba10da6dc90722" dependencies = [ - "cuckoofilter 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", - "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "libp2p-core 0.16.0 (registry+https://github.com/rust-lang/crates.io-index)", - "libp2p-swarm 0.16.1 (registry+https://github.com/rust-lang/crates.io-index)", - "prost 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", - "prost-build 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)", - "smallvec 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "cuckoofilter", + "fnv", + "futures 0.3.4", + "libp2p-core", + "libp2p-swarm", + "prost", + "prost-build", + "rand 0.7.3", + "smallvec 1.2.0", ] [[package]] name = "libp2p-gossipsub" version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d46cb3e0841bd951cbf4feae56cdc081e6347836a644fb260c3ec554149b4006" dependencies = [ - "base64 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", - "byteorder 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "bytes 0.5.4 (registry+https://github.com/rust-lang/crates.io-index)", - "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "futures_codec 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "libp2p-core 0.16.0 (registry+https://github.com/rust-lang/crates.io-index)", - "libp2p-swarm 0.16.1 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "lru 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", - "prost 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", - "prost-build 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)", - "sha2 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", - "smallvec 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "unsigned-varint 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "wasm-timer 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", + "base64 0.11.0", + "byteorder 1.3.4", + "bytes 0.5.4", + "fnv", + "futures 0.3.4", + "futures_codec", + "libp2p-core", + "libp2p-swarm", + "log 0.4.8", + "lru 0.4.3", + "prost", + "prost-build", + "rand 0.7.3", + "sha2", + "smallvec 1.2.0", + "unsigned-varint 0.3.1", + "wasm-timer", ] [[package]] name = "libp2p-identify" version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfeb935a9bd41263e4f3a24b988e9f4a044f3ae89ac284e83c17fe2f84e0d66b" dependencies = [ - "futures 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "libp2p-core 0.16.0 (registry+https://github.com/rust-lang/crates.io-index)", - "libp2p-swarm 0.16.1 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "prost 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", - "prost-build 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", - "smallvec 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "wasm-timer 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.3.4", + "libp2p-core", + "libp2p-swarm", + "log 0.4.8", + "prost", + "prost-build", + "smallvec 1.2.0", + "wasm-timer", ] [[package]] name = "libp2p-kad" version = "0.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "arrayvec 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", - "bytes 0.5.4 (registry+https://github.com/rust-lang/crates.io-index)", - "either 1.5.3 (registry+https://github.com/rust-lang/crates.io-index)", - "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "futures_codec 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "libp2p-core 0.16.0 (registry+https://github.com/rust-lang/crates.io-index)", - "libp2p-swarm 0.16.1 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-multihash 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", - "prost 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", - "prost-build 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)", - "sha2 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", - "smallvec 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "uint 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)", - "unsigned-varint 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "void 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "wasm-timer 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", +checksum = "76c260a92309112fff855ab2bd8f26c246c1dd380b87021abe61358dedb9748d" +dependencies = [ + "arrayvec 0.5.1", + "bytes 0.5.4", + "either", + "fnv", + "futures 0.3.4", + "futures_codec", + "libp2p-core", + "libp2p-swarm", + "log 0.4.8", + "parity-multihash 0.2.3", + "prost", + "prost-build", + "rand 0.7.3", + "sha2", + "smallvec 1.2.0", + "uint", + "unsigned-varint 0.3.1", + "void", + "wasm-timer", ] [[package]] name = "libp2p-mdns" version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "881fcfb360c2822db9f0e6bb6f89529621556ed9a8b038313414eda5107334de" dependencies = [ - "async-std 1.5.0 (registry+https://github.com/rust-lang/crates.io-index)", - "data-encoding 2.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "dns-parser 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", - "either 1.5.3 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "libp2p-core 0.16.0 (registry+https://github.com/rust-lang/crates.io-index)", - "libp2p-swarm 0.16.1 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)", - "smallvec 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "void 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "wasm-timer 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", + "async-std", + "data-encoding", + "dns-parser", + "either", + "futures 0.3.4", + "lazy_static", + "libp2p-core", + "libp2p-swarm", + "log 0.4.8", + "net2", + "rand 0.7.3", + "smallvec 1.2.0", + "void", + "wasm-timer", ] [[package]] name = "libp2p-mplex" version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8507b37ad0eed275efcde67a023c3d85af6c80768b193845b9288e848e1af95" dependencies = [ - "bytes 0.5.4 (registry+https://github.com/rust-lang/crates.io-index)", - "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "futures_codec 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "libp2p-core 0.16.0 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "parking_lot 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", - "unsigned-varint 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes 0.5.4", + "fnv", + "futures 0.3.4", + "futures_codec", + "libp2p-core", + "log 0.4.8", + "parking_lot 0.10.0", + "unsigned-varint 0.3.1", ] [[package]] name = "libp2p-noise" version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac7d33809afdf6794f09fdb2f9f94e1550ae230be5bae6430a078eb96fc9e5a6" dependencies = [ - "curve25519-dalek 1.2.3 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "libp2p-core 0.16.0 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "prost 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", - "prost-build 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)", - "sha2 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", - "snow 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", - "static_assertions 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "x25519-dalek 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)", - "zeroize 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "curve25519-dalek 1.2.3", + "futures 0.3.4", + "lazy_static", + "libp2p-core", + "log 0.4.8", + "prost", + "prost-build", + "rand 0.7.3", + "sha2", + "snow", + "static_assertions", + "x25519-dalek 0.5.2", + "zeroize 1.1.0", ] [[package]] name = "libp2p-ping" version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33d22f2f228b3a828dca1cb8aa9fa331e0bc9c36510cb2c1916956e20dc85e8c" dependencies = [ - "futures 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "libp2p-core 0.16.0 (registry+https://github.com/rust-lang/crates.io-index)", - "libp2p-swarm 0.16.1 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)", - "void 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "wasm-timer 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.3.4", + "libp2p-core", + "libp2p-swarm", + "log 0.4.8", + "rand 0.7.3", + "void", + "wasm-timer", ] [[package]] name = "libp2p-plaintext" version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56126a204d7b3382bac163143ff4125a14570b3ba76ba979103d1ae1abed1923" dependencies = [ - "bytes 0.5.4 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "futures_codec 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "libp2p-core 0.16.0 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "prost 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", - "prost-build 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", - "rw-stream-sink 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "unsigned-varint 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "void 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes 0.5.4", + "futures 0.3.4", + "futures_codec", + "libp2p-core", + "log 0.4.8", + "prost", + "prost-build", + "rw-stream-sink", + "unsigned-varint 0.3.1", + "void", ] [[package]] name = "libp2p-pnet" version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b916938a8868f75180aeeffcc6a516a922d165e8fa2a90b57bad989d1ccbb57a" dependencies = [ - "futures 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "pin-project 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)", - "salsa20 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "sha3 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.3.4", + "log 0.4.8", + "pin-project", + "rand 0.7.3", + "salsa20", + "sha3", ] [[package]] name = "libp2p-secio" version = "0.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "aes-ctr 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "ctr 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "hmac 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", - "js-sys 0.3.35 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "libp2p-core 0.16.0 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-send-wrapper 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "pin-project 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "prost 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", - "prost-build 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", - "quicksink 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)", - "ring 0.16.11 (registry+https://github.com/rust-lang/crates.io-index)", - "rw-stream-sink 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "sha2 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", - "static_assertions 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "twofish 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "wasm-bindgen 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", - "wasm-bindgen-futures 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "web-sys 0.3.35 (registry+https://github.com/rust-lang/crates.io-index)", +checksum = "1219e9ecb4945d7331a05f5ffe96a1f6e28051bfa1223d4c60353c251de0354e" +dependencies = [ + "aes-ctr", + "ctr", + "futures 0.3.4", + "hmac", + "js-sys", + "lazy_static", + "libp2p-core", + "log 0.4.8", + "parity-send-wrapper", + "pin-project", + "prost", + "prost-build", + "quicksink", + "rand 0.7.3", + "ring", + "rw-stream-sink", + "sha2", + "static_assertions", + "twofish", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", ] [[package]] name = "libp2p-swarm" version = "0.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "275471e7c0e88ae004660866cd54f603bd8bd1f4caef541a27f50dd8640c4d4c" dependencies = [ - "futures 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "libp2p-core 0.16.0 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "smallvec 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "void 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "wasm-timer 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.3.4", + "libp2p-core", + "log 0.4.8", + "smallvec 1.2.0", + "void", + "wasm-timer", ] [[package]] name = "libp2p-tcp" version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9e80ad4e3535345f3d666554ce347d3100453775611c05c60786bf9a1747a10" dependencies = [ - "async-std 1.5.0 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-timer 3.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "get_if_addrs 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)", - "ipnet 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "libp2p-core 0.16.0 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "async-std", + "futures 0.3.4", + "futures-timer 3.0.2", + "get_if_addrs", + "ipnet", + "libp2p-core", + "log 0.4.8", ] [[package]] name = "libp2p-uds" version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76d329564a43da9d0e055a5b938633c4a8ceab1f59cec133fbc4647917c07341" dependencies = [ - "async-std 1.5.0 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "libp2p-core 0.16.0 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "async-std", + "futures 0.3.4", + "libp2p-core", + "log 0.4.8", ] [[package]] name = "libp2p-wasm-ext" version = "0.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d40c95ac1a9b7fb7770616e4165f34559885337f3be485b32acdd085261be3a" dependencies = [ - "futures 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "js-sys 0.3.35 (registry+https://github.com/rust-lang/crates.io-index)", - "libp2p-core 0.16.0 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-send-wrapper 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "wasm-bindgen 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", - "wasm-bindgen-futures 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.3.4", + "js-sys", + "libp2p-core", + "parity-send-wrapper", + "wasm-bindgen", + "wasm-bindgen-futures", ] [[package]] name = "libp2p-websocket" version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5351ca9eea122081c1c0f9323164d2918cac29b5a6bfe5054d4ba8ec9447cf42" dependencies = [ - "async-tls 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)", - "bytes 0.5.4 (registry+https://github.com/rust-lang/crates.io-index)", - "either 1.5.3 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "libp2p-core 0.16.0 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "quicksink 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "rustls 0.16.0 (registry+https://github.com/rust-lang/crates.io-index)", - "rw-stream-sink 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "soketto 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", - "url 2.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "webpki 0.21.2 (registry+https://github.com/rust-lang/crates.io-index)", - "webpki-roots 0.18.0 (registry+https://github.com/rust-lang/crates.io-index)", + "async-tls", + "bytes 0.5.4", + "either", + "futures 0.3.4", + "libp2p-core", + "log 0.4.8", + "quicksink", + "rustls", + "rw-stream-sink", + "soketto", + "url 2.1.1", + "webpki", + "webpki-roots 0.18.0", ] [[package]] name = "libp2p-yamux" version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f72aa5a7273c29c6eaea09108a49feaefc7456164863f64f86a193f9e78a4b7f" dependencies = [ - "futures 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "libp2p-core 0.16.0 (registry+https://github.com/rust-lang/crates.io-index)", - "parking_lot 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", - "thiserror 1.0.11 (registry+https://github.com/rust-lang/crates.io-index)", - "yamux 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.3.4", + "libp2p-core", + "parking_lot 0.10.0", + "thiserror", + "yamux", ] [[package]] name = "librocksdb-sys" version = "6.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0a0785e816e1e11e7599388a492c61ef80ddc2afc91e313e61662cce537809be" dependencies = [ - "bindgen 0.49.4 (registry+https://github.com/rust-lang/crates.io-index)", - "cc 1.0.50 (registry+https://github.com/rust-lang/crates.io-index)", - "glob 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", + "bindgen", + "cc", + "glob 0.3.0", + "libc", ] [[package]] name = "libsecp256k1" version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fc1e2c808481a63dc6da2074752fdd4336a3c8fcc68b83db6f1fd5224ae7962" dependencies = [ - "arrayref 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", - "crunchy 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "digest 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", - "hmac-drbg 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)", - "sha2 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", - "subtle 2.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "typenum 1.11.2 (registry+https://github.com/rust-lang/crates.io-index)", + "arrayref", + "crunchy", + "digest", + "hmac-drbg", + "rand 0.7.3", + "sha2", + "subtle 2.2.2", + "typenum", ] [[package]] name = "libz-sys" version = "1.0.25" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2eb5e43362e38e2bca2fd5f5134c4d4564a23a5c28e9b95411652021a8675ebe" dependencies = [ - "cc 1.0.50 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", - "pkg-config 0.3.17 (registry+https://github.com/rust-lang/crates.io-index)", - "vcpkg 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", + "cc", + "libc", + "pkg-config", + "vcpkg", ] [[package]] name = "linked-hash-map" version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae91b68aebc4ddb91978b11a1b02ddd8602a05ec19002801c5666000e05e0f83" [[package]] name = "linked_hash_set" version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c7c91c4c7bbeb4f2f7c4e5be11e6a05bd6830bc37249c47ce1ad86ad453ff9c" dependencies = [ - "linked-hash-map 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)", + "linked-hash-map", ] [[package]] name = "lock_api" version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "79b2de95ecb4691949fea4716ca53cdbcfccb2c612e19644a8bad05edcf9f47b" dependencies = [ - "scopeguard 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "scopeguard", ] [[package]] name = "log" version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e19e8d5c34a3e0e2223db8e060f9e8264aeeb5c5fc64a4ee9965c062211c024b" dependencies = [ - "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8", ] [[package]] name = "log" version = "0.4.8" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "14b6052be84e6b71ab17edffc2eeabf5c2c3ae1fdb464aae35ac50c67a44e1f7" dependencies = [ - "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if", ] [[package]] name = "lru" version = "0.1.17" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d8f669d42c72d18514dfca8115689c5f6370a17d980cb5bd777a67f404594c8" dependencies = [ - "hashbrown 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", + "hashbrown 0.5.0", ] [[package]] name = "lru" version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0609345ddee5badacf857d4f547e0e5a2e987db77085c24cd887f73573a04237" dependencies = [ - "hashbrown 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)", + "hashbrown 0.6.3", ] [[package]] name = "mach" version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "86dd2487cdfea56def77b88438a2c915fb45113c5319bfe7e14306ca4cd0b0e1" dependencies = [ - "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", + "libc", ] [[package]] name = "matches" version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ffc5c5338469d4d3ea17d269fa8ea3512ad247247c30bd2df69e68309ed0a08" [[package]] name = "maybe-uninit" version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "60302e4db3a61da70c0cb7991976248362f30319e88850c487b9b95bbf059e00" [[package]] name = "memchr" version = "2.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53445de381a1f436797497c61d851644d0e8e88e6140f22872ad33a704933978" [[package]] name = "memoffset" version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75189eb85871ea5c2e2c15abbdd541185f63b408415e5051f5cac122d8c774b9" dependencies = [ - "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", + "rustc_version", ] [[package]] name = "memory-db" version = "0.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "198831fe8722331a395bc199a5d08efbc197497ef354cb4c77b969c02ffc0fc4" dependencies = [ - "ahash 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)", - "hash-db 0.15.2 (registry+https://github.com/rust-lang/crates.io-index)", - "hashbrown 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-util-mem 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", + "ahash", + "hash-db", + "hashbrown 0.6.3", + "parity-util-mem", ] [[package]] name = "memory_units" version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "71d96e3f3c0b6325d8ccd83c33b28acb183edcb6c67938ba104ec546854b0882" [[package]] name = "merlin" version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b0942b357c1b4d0dc43ba724674ec89c3218e6ca2b3e8269e7cb53bcecd2f6e" dependencies = [ - "byteorder 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "keccak 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", - "zeroize 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder 1.3.4", + "keccak", + "rand_core 0.4.2", + "zeroize 1.1.0", ] [[package]] name = "mime" version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba626b8a6de5da682e1caa06bdb42a335aee5a84db8e5046a3e8ab17ba0a3ae0" dependencies = [ - "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.3.9", ] [[package]] name = "miniz_oxide" version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa679ff6578b1cddee93d7e82e263b94a575e0bfced07284eb0c037c1d2416a5" dependencies = [ - "adler32 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", + "adler32", ] [[package]] name = "mio" version = "0.6.21" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "302dec22bcf6bae6dfb69c647187f4b4d0fb6f535521f7bc022430ce8e12008f" dependencies = [ - "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", - "fuchsia-zircon 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", - "fuchsia-zircon-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", - "iovec 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", - "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "miow 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)", - "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if", + "fuchsia-zircon", + "fuchsia-zircon-sys", + "iovec", + "kernel32-sys", + "libc", + "log 0.4.8", + "miow", + "net2", + "slab", + "winapi 0.2.8", ] [[package]] name = "mio-extras" version = "2.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52403fe290012ce777c4626790c8951324a2b9e3316b3143779c72b029742f19" dependencies = [ - "lazycell 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "mio 0.6.21 (registry+https://github.com/rust-lang/crates.io-index)", - "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", + "lazycell", + "log 0.4.8", + "mio", + "slab", ] [[package]] name = "mio-uds" version = "0.6.7" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "966257a94e196b11bb43aca423754d87429960a768de9414f3691d6957abf125" dependencies = [ - "iovec 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", - "mio 0.6.21 (registry+https://github.com/rust-lang/crates.io-index)", + "iovec", + "libc", + "mio", ] [[package]] name = "miow" version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c1f2f3b1cf331de6896aabf6e9d55dca90356cc9960cca7eaaf408a355ae919" dependencies = [ - "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", - "ws2_32-sys 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "kernel32-sys", + "net2", + "winapi 0.2.8", + "ws2_32-sys", ] [[package]] name = "more-asserts" version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0debeb9fcf88823ea64d64e4a815ab1643f33127d995978e099942ce38f25238" [[package]] name = "multimap" version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a97fbd5d00e0e37bfb10f433af8f5aaf631e739368dc9fc28286ca81ca4948dc" [[package]] name = "multistream-select" version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f938ffe420493e77c8b6cbcc3f282283f68fc889c5dcbc8e51668d5f3a01ad94" dependencies = [ - "bytes 0.5.4 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "smallvec 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)", - "unsigned-varint 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes 0.5.4", + "futures 0.1.29", + "log 0.4.8", + "smallvec 1.2.0", + "tokio-io", + "unsigned-varint 0.3.1", ] [[package]] name = "names" version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef320dab323286b50fb5cdda23f61c796a72a89998ab565ca32525c5c556f2da" dependencies = [ - "rand 0.3.23 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.3.23", ] [[package]] name = "native-tls" version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4b2df1a4c22fd44a62147fd8f13dd0f95c9d8ca7b2610299b2a2f9cf8964274e" dependencies = [ - "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "openssl 0.10.28 (registry+https://github.com/rust-lang/crates.io-index)", - "openssl-probe 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "openssl-sys 0.9.54 (registry+https://github.com/rust-lang/crates.io-index)", - "schannel 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)", - "security-framework 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "security-framework-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", - "tempfile 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static", + "libc", + "log 0.4.8", + "openssl", + "openssl-probe", + "openssl-sys", + "schannel", + "security-framework", + "security-framework-sys", + "tempfile", ] [[package]] name = "net2" version = "0.2.33" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42550d9fb7b6684a6d404d9fa7250c2eb2646df731d1c06afc06dcee9e1bcf88" dependencies = [ - "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if", + "libc", + "winapi 0.3.8", ] [[package]] name = "nix" version = "0.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50e4785f2c3b7589a0d0c1dd60285e1188adac4006e8abd6dd578e1567027363" dependencies = [ - "bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "cc 1.0.50 (registry+https://github.com/rust-lang/crates.io-index)", - "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", - "void 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "bitflags", + "cc", + "cfg-if", + "libc", + "void", ] [[package]] name = "node-cli" version = "2.0.0" dependencies = [ - "assert_cmd 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)", - "browser-utils 0.8.0", - "frame-benchmarking-cli 2.0.0", - "frame-support 2.0.0", - "frame-system 2.0.0", - "futures 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "hex-literal 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "jsonrpc-core 14.0.5 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "nix 0.17.0 (registry+https://github.com/rust-lang/crates.io-index)", - "node-executor 2.0.0", - "node-inspect 0.8.0", - "node-primitives 2.0.0", - "node-rpc 2.0.0", - "node-runtime 2.0.0", - "node-transaction-factory 0.8.0", - "pallet-authority-discovery 2.0.0", - "pallet-balances 2.0.0", - "pallet-contracts 2.0.0", - "pallet-im-online 2.0.0", - "pallet-indices 2.0.0", - "pallet-timestamp 2.0.0", - "pallet-transaction-payment 2.0.0", - "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)", - "sc-authority-discovery 0.8.0", - "sc-basic-authorship 0.8.0", - "sc-chain-spec 2.0.0", - "sc-cli 0.8.0", - "sc-client 0.8.0", - "sc-client-api 2.0.0", - "sc-client-db 0.8.0", - "sc-consensus-babe 0.8.0", - "sc-consensus-epochs 0.8.0", - "sc-finality-grandpa 0.8.0", - "sc-keystore 2.0.0", - "sc-network 0.8.0", - "sc-offchain 2.0.0", - "sc-rpc 2.0.0", - "sc-service 0.8.0", - "sc-service-test 2.0.0", - "sc-telemetry 2.0.0", - "sc-tracing 2.0.0", - "sc-transaction-pool 2.0.0", - "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-authority-discovery 2.0.0", - "sp-consensus 0.8.0", - "sp-consensus-babe 0.8.0", - "sp-core 2.0.0", - "sp-finality-grandpa 2.0.0", - "sp-finality-tracker 2.0.0", - "sp-inherents 2.0.0", - "sp-io 2.0.0", - "sp-keyring 2.0.0", - "sp-runtime 2.0.0", - "sp-timestamp 2.0.0", - "sp-transaction-pool 2.0.0", - "structopt 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", - "substrate-build-script-utils 2.0.0", - "tempfile 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "tracing 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", - "vergen 3.0.4 (registry+https://github.com/rust-lang/crates.io-index)", - "wasm-bindgen 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", - "wasm-bindgen-futures 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "assert_cmd", + "browser-utils", + "frame-benchmarking-cli", + "frame-support", + "frame-system", + "futures 0.3.4", + "hex-literal", + "jsonrpc-core", + "log 0.4.8", + "nix", + "node-executor", + "node-inspect", + "node-primitives", + "node-rpc", + "node-runtime", + "node-transaction-factory", + "pallet-authority-discovery", + "pallet-balances", + "pallet-contracts", + "pallet-im-online", + "pallet-indices", + "pallet-timestamp", + "pallet-transaction-payment", + "parity-scale-codec", + "rand 0.7.3", + "sc-authority-discovery", + "sc-basic-authorship", + "sc-chain-spec", + "sc-cli", + "sc-client", + "sc-client-api", + "sc-client-db", + "sc-consensus-babe", + "sc-consensus-epochs", + "sc-finality-grandpa", + "sc-keystore", + "sc-network", + "sc-offchain", + "sc-rpc", + "sc-service", + "sc-service-test", + "sc-telemetry", + "sc-tracing", + "sc-transaction-pool", + "serde", + "sp-authority-discovery", + "sp-consensus", + "sp-consensus-babe", + "sp-core", + "sp-finality-grandpa", + "sp-finality-tracker", + "sp-inherents", + "sp-io", + "sp-keyring", + "sp-runtime", + "sp-timestamp", + "sp-transaction-pool", + "structopt", + "substrate-build-script-utils", + "tempfile", + "tracing", + "vergen", + "wasm-bindgen", + "wasm-bindgen-futures", ] [[package]] name = "node-executor" version = "2.0.0" dependencies = [ - "criterion 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "frame-benchmarking 2.0.0", - "frame-support 2.0.0", - "frame-system 2.0.0", - "node-primitives 2.0.0", - "node-runtime 2.0.0", - "node-testing 2.0.0", - "pallet-balances 2.0.0", - "pallet-contracts 2.0.0", - "pallet-grandpa 2.0.0", - "pallet-im-online 2.0.0", - "pallet-indices 2.0.0", - "pallet-session 2.0.0", - "pallet-timestamp 2.0.0", - "pallet-transaction-payment 2.0.0", - "pallet-treasury 2.0.0", - "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "sc-executor 0.8.0", - "sp-application-crypto 2.0.0", - "sp-core 2.0.0", - "sp-io 2.0.0", - "sp-runtime 2.0.0", - "sp-state-machine 0.8.0", - "sp-trie 2.0.0", - "substrate-test-client 2.0.0", - "trie-root 0.16.0 (registry+https://github.com/rust-lang/crates.io-index)", - "wabt 0.9.2 (registry+https://github.com/rust-lang/crates.io-index)", + "criterion 0.3.1", + "frame-benchmarking", + "frame-support", + "frame-system", + "node-primitives", + "node-runtime", + "node-testing", + "pallet-balances", + "pallet-contracts", + "pallet-grandpa", + "pallet-im-online", + "pallet-indices", + "pallet-session", + "pallet-timestamp", + "pallet-transaction-payment", + "pallet-treasury", + "parity-scale-codec", + "sc-executor", + "sp-application-crypto", + "sp-core", + "sp-io", + "sp-runtime", + "sp-state-machine", + "sp-trie", + "substrate-test-client", + "trie-root", + "wabt", ] [[package]] name = "node-inspect" version = "0.8.0" dependencies = [ - "derive_more 0.99.3 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "sc-cli 0.8.0", - "sc-client-api 2.0.0", - "sc-service 0.8.0", - "sp-blockchain 2.0.0", - "sp-core 2.0.0", - "sp-runtime 2.0.0", - "structopt 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", + "derive_more", + "log 0.4.8", + "parity-scale-codec", + "sc-cli", + "sc-client-api", + "sc-service", + "sp-blockchain", + "sp-core", + "sp-runtime", + "structopt", ] [[package]] name = "node-primitives" version = "2.0.0" dependencies = [ - "pretty_assertions 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-core 2.0.0", - "sp-runtime 2.0.0", - "sp-serializer 2.0.0", + "pretty_assertions", + "sp-core", + "sp-runtime", + "sp-serializer", ] [[package]] name = "node-rpc" version = "2.0.0" dependencies = [ - "jsonrpc-core 14.0.5 (registry+https://github.com/rust-lang/crates.io-index)", - "node-primitives 2.0.0", - "node-runtime 2.0.0", - "pallet-contracts-rpc 0.8.0", - "pallet-transaction-payment-rpc 2.0.0", - "sc-client 0.8.0", - "sc-consensus-babe 0.8.0", - "sc-consensus-babe-rpc 0.8.0", - "sc-consensus-epochs 0.8.0", - "sc-keystore 2.0.0", - "sp-api 2.0.0", - "sp-blockchain 2.0.0", - "sp-consensus 0.8.0", - "sp-consensus-babe 0.8.0", - "sp-runtime 2.0.0", - "sp-transaction-pool 2.0.0", - "substrate-frame-rpc-system 2.0.0", + "jsonrpc-core", + "node-primitives", + "node-runtime", + "pallet-contracts-rpc", + "pallet-transaction-payment-rpc", + "sc-client", + "sc-consensus-babe", + "sc-consensus-babe-rpc", + "sc-consensus-epochs", + "sc-keystore", + "sp-api", + "sp-blockchain", + "sp-consensus", + "sp-consensus-babe", + "sp-runtime", + "sp-transaction-pool", + "substrate-frame-rpc-system", ] [[package]] name = "node-rpc-client" version = "2.0.0" dependencies = [ - "env_logger 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", - "hyper 0.12.35 (registry+https://github.com/rust-lang/crates.io-index)", - "jsonrpc-core-client 14.0.5 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "node-primitives 2.0.0", - "sc-rpc 2.0.0", + "env_logger 0.7.1", + "futures 0.1.29", + "hyper 0.12.35", + "jsonrpc-core-client", + "log 0.4.8", + "node-primitives", + "sc-rpc", ] [[package]] name = "node-runtime" version = "2.0.0" dependencies = [ - "frame-benchmarking 2.0.0", - "frame-executive 2.0.0", - "frame-support 2.0.0", - "frame-system 2.0.0", - "frame-system-rpc-runtime-api 2.0.0", - "integer-sqrt 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", - "node-primitives 2.0.0", - "pallet-authority-discovery 2.0.0", - "pallet-authorship 2.0.0", - "pallet-babe 2.0.0", - "pallet-balances 2.0.0", - "pallet-collective 2.0.0", - "pallet-contracts 2.0.0", - "pallet-contracts-primitives 2.0.0", - "pallet-contracts-rpc-runtime-api 0.8.0", - "pallet-democracy 2.0.0", - "pallet-elections-phragmen 2.0.0", - "pallet-finality-tracker 2.0.0", - "pallet-grandpa 2.0.0", - "pallet-identity 2.0.0", - "pallet-im-online 2.0.0", - "pallet-indices 2.0.0", - "pallet-membership 2.0.0", - "pallet-offences 2.0.0", - "pallet-randomness-collective-flip 2.0.0", - "pallet-recovery 2.0.0", - "pallet-session 2.0.0", - "pallet-society 2.0.0", - "pallet-staking 2.0.0", - "pallet-staking-reward-curve 2.0.0", - "pallet-sudo 2.0.0", - "pallet-timestamp 2.0.0", - "pallet-transaction-payment 2.0.0", - "pallet-transaction-payment-rpc-runtime-api 2.0.0", - "pallet-treasury 2.0.0", - "pallet-utility 2.0.0", - "pallet-vesting 2.0.0", - "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "rustc-hex 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-api 2.0.0", - "sp-authority-discovery 2.0.0", - "sp-block-builder 2.0.0", - "sp-consensus-babe 0.8.0", - "sp-core 2.0.0", - "sp-inherents 2.0.0", - "sp-io 2.0.0", - "sp-keyring 2.0.0", - "sp-offchain 2.0.0", - "sp-runtime 2.0.0", - "sp-session 2.0.0", - "sp-staking 2.0.0", - "sp-std 2.0.0", - "sp-transaction-pool 2.0.0", - "sp-version 2.0.0", - "substrate-wasm-builder-runner 1.0.5", + "frame-benchmarking", + "frame-executive", + "frame-support", + "frame-system", + "frame-system-rpc-runtime-api", + "integer-sqrt", + "node-primitives", + "pallet-authority-discovery", + "pallet-authorship", + "pallet-babe", + "pallet-balances", + "pallet-collective", + "pallet-contracts", + "pallet-contracts-primitives", + "pallet-contracts-rpc-runtime-api", + "pallet-democracy", + "pallet-elections-phragmen", + "pallet-finality-tracker", + "pallet-grandpa", + "pallet-identity", + "pallet-im-online", + "pallet-indices", + "pallet-membership", + "pallet-offences", + "pallet-randomness-collective-flip", + "pallet-recovery", + "pallet-session", + "pallet-society", + "pallet-staking", + "pallet-staking-reward-curve", + "pallet-sudo", + "pallet-timestamp", + "pallet-transaction-payment", + "pallet-transaction-payment-rpc-runtime-api", + "pallet-treasury", + "pallet-utility", + "pallet-vesting", + "parity-scale-codec", + "rustc-hex", + "serde", + "sp-api", + "sp-authority-discovery", + "sp-block-builder", + "sp-consensus-babe", + "sp-core", + "sp-inherents", + "sp-io", + "sp-keyring", + "sp-offchain", + "sp-runtime", + "sp-session", + "sp-staking", + "sp-std", + "sp-transaction-pool", + "sp-version", + "substrate-wasm-builder-runner", ] [[package]] name = "node-template" version = "2.0.0" dependencies = [ - "futures 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "node-template-runtime 2.0.0", - "sc-basic-authorship 0.8.0", - "sc-cli 0.8.0", - "sc-client 0.8.0", - "sc-consensus-aura 0.8.0", - "sc-executor 0.8.0", - "sc-finality-grandpa 0.8.0", - "sc-network 0.8.0", - "sc-service 0.8.0", - "sc-transaction-pool 2.0.0", - "sp-consensus 0.8.0", - "sp-consensus-aura 0.8.0", - "sp-core 2.0.0", - "sp-finality-grandpa 2.0.0", - "sp-inherents 2.0.0", - "sp-runtime 2.0.0", - "sp-transaction-pool 2.0.0", - "structopt 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", - "substrate-build-script-utils 2.0.0", - "vergen 3.0.4 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.3.4", + "log 0.4.8", + "node-template-runtime", + "sc-basic-authorship", + "sc-cli", + "sc-client", + "sc-consensus-aura", + "sc-executor", + "sc-finality-grandpa", + "sc-network", + "sc-service", + "sc-transaction-pool", + "sp-consensus", + "sp-consensus-aura", + "sp-core", + "sp-finality-grandpa", + "sp-inherents", + "sp-runtime", + "sp-transaction-pool", + "structopt", + "substrate-build-script-utils", + "vergen", ] [[package]] name = "node-template-runtime" version = "2.0.0" dependencies = [ - "frame-executive 2.0.0", - "frame-support 2.0.0", - "frame-system 2.0.0", - "pallet-aura 2.0.0", - "pallet-balances 2.0.0", - "pallet-grandpa 2.0.0", - "pallet-indices 2.0.0", - "pallet-randomness-collective-flip 2.0.0", - "pallet-sudo 2.0.0", - "pallet-template 2.0.0", - "pallet-timestamp 2.0.0", - "pallet-transaction-payment 2.0.0", - "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-api 2.0.0", - "sp-block-builder 2.0.0", - "sp-consensus-aura 0.8.0", - "sp-core 2.0.0", - "sp-inherents 2.0.0", - "sp-io 2.0.0", - "sp-offchain 2.0.0", - "sp-runtime 2.0.0", - "sp-session 2.0.0", - "sp-std 2.0.0", - "sp-transaction-pool 2.0.0", - "sp-version 2.0.0", - "substrate-wasm-builder-runner 1.0.5", + "frame-executive", + "frame-support", + "frame-system", + "pallet-aura", + "pallet-balances", + "pallet-grandpa", + "pallet-indices", + "pallet-randomness-collective-flip", + "pallet-sudo", + "pallet-template", + "pallet-timestamp", + "pallet-transaction-payment", + "parity-scale-codec", + "serde", + "sp-api", + "sp-block-builder", + "sp-consensus-aura", + "sp-core", + "sp-inherents", + "sp-io", + "sp-offchain", + "sp-runtime", + "sp-session", + "sp-std", + "sp-transaction-pool", + "sp-version", + "substrate-wasm-builder-runner", ] [[package]] name = "node-testing" version = "2.0.0" dependencies = [ - "criterion 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "frame-support 2.0.0", - "frame-system 2.0.0", - "fs_extra 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "node-executor 2.0.0", - "node-primitives 2.0.0", - "node-runtime 2.0.0", - "pallet-balances 2.0.0", - "pallet-contracts 2.0.0", - "pallet-grandpa 2.0.0", - "pallet-indices 2.0.0", - "pallet-session 2.0.0", - "pallet-society 2.0.0", - "pallet-staking 2.0.0", - "pallet-timestamp 2.0.0", - "pallet-transaction-payment 2.0.0", - "pallet-treasury 2.0.0", - "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "sc-cli 0.8.0", - "sc-client 0.8.0", - "sc-client-api 2.0.0", - "sc-client-db 0.8.0", - "sc-executor 0.8.0", - "sc-service 0.8.0", - "sp-api 2.0.0", - "sp-block-builder 2.0.0", - "sp-blockchain 2.0.0", - "sp-consensus 0.8.0", - "sp-core 2.0.0", - "sp-finality-tracker 2.0.0", - "sp-inherents 2.0.0", - "sp-io 2.0.0", - "sp-keyring 2.0.0", - "sp-runtime 2.0.0", - "sp-timestamp 2.0.0", - "substrate-test-client 2.0.0", - "tempdir 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", - "wabt 0.9.2 (registry+https://github.com/rust-lang/crates.io-index)", + "criterion 0.3.1", + "frame-support", + "frame-system", + "fs_extra", + "log 0.4.8", + "node-executor", + "node-primitives", + "node-runtime", + "pallet-balances", + "pallet-contracts", + "pallet-grandpa", + "pallet-indices", + "pallet-session", + "pallet-society", + "pallet-staking", + "pallet-timestamp", + "pallet-transaction-payment", + "pallet-treasury", + "parity-scale-codec", + "sc-cli", + "sc-client", + "sc-client-api", + "sc-client-db", + "sc-executor", + "sc-service", + "sp-api", + "sp-block-builder", + "sp-blockchain", + "sp-consensus", + "sp-core", + "sp-finality-tracker", + "sp-inherents", + "sp-io", + "sp-keyring", + "sp-runtime", + "sp-timestamp", + "substrate-test-client", + "tempdir", + "wabt", ] [[package]] name = "node-transaction-factory" version = "0.8.0" dependencies = [ - "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "sc-cli 0.8.0", - "sc-client 0.8.0", - "sc-client-api 2.0.0", - "sc-service 0.8.0", - "sp-api 2.0.0", - "sp-block-builder 2.0.0", - "sp-blockchain 2.0.0", - "sp-consensus 0.8.0", - "sp-core 2.0.0", - "sp-runtime 2.0.0", + "log 0.4.8", + "parity-scale-codec", + "sc-cli", + "sc-client", + "sc-client-api", + "sc-service", + "sp-api", + "sp-block-builder", + "sp-blockchain", + "sp-consensus", + "sp-core", + "sp-runtime", ] [[package]] name = "nodrop" version = "0.1.14" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72ef4a56884ca558e5ddb05a1d1e7e1bfd9a68d9ed024c21704cc98872dae1bb" [[package]] name = "nohash-hasher" version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2bf50223579dc7cdcfb3bfcacf7069ff68243f8c363f62ffa99cf000a6b9c451" [[package]] name = "nom" version = "4.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2ad2a91a8e869eeb30b9cb3119ae87773a8f4ae617f41b1eb9c154b2905f7bd6" dependencies = [ - "memchr 2.3.2 (registry+https://github.com/rust-lang/crates.io-index)", - "version_check 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "memchr", + "version_check 0.1.5", ] [[package]] name = "num-bigint" version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "090c7f9998ee0ff65aa5b723e4009f7b217707f1fb5ea551329cc4d6231fb304" dependencies = [ - "autocfg 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "num-integer 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)", - "num-traits 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", + "autocfg 1.0.0", + "num-integer", + "num-traits", ] [[package]] name = "num-integer" version = "0.1.42" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f6ea62e9d81a77cd3ee9a2a5b9b609447857f3d358704331e4ef39eb247fcba" dependencies = [ - "autocfg 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "num-traits 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", + "autocfg 1.0.0", + "num-traits", ] [[package]] name = "num-rational" version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da4dc79f9e6c81bef96148c8f6b8e72ad4541caa4a24373e900a36da07de03a3" dependencies = [ - "autocfg 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "num-bigint 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", - "num-integer 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)", - "num-traits 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", + "autocfg 1.0.0", + "num-bigint", + "num-integer", + "num-traits", ] [[package]] name = "num-traits" version = "0.2.11" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c62be47e61d1842b9170f0fdeec8eba98e60e90e5446449a0545e5152acd7096" dependencies = [ - "autocfg 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "autocfg 1.0.0", ] [[package]] name = "num_cpus" version = "1.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46203554f085ff89c235cd12f7075f3233af9b11ed7c9e16dfe2560d03313ce6" dependencies = [ - "hermit-abi 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", + "hermit-abi", + "libc", ] [[package]] name = "ole32-sys" version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d2c49021782e5233cd243168edfa8037574afed4eba4bbaf538b3d8d1789d8c" dependencies = [ - "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.2.8", + "winapi-build", ] [[package]] name = "once_cell" version = "1.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1c601810575c99596d4afc46f78a678c80105117c379eb3650cf99b8a21ce5b" dependencies = [ - "parking_lot 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot 0.9.0", ] [[package]] name = "oorandom" version = "11.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebcec7c9c2a95cacc7cd0ecb89d8a8454eca13906f6deb55258ffff0adeb9405" [[package]] name = "opaque-debug" version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2839e79665f131bdb5782e51f2c6c9599c133c6098982a54c794358bf432529c" [[package]] name = "openssl" version = "0.10.28" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "973293749822d7dd6370d6da1e523b0d1db19f06c459134c658b2a4261378b52" dependencies = [ - "bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", - "foreign-types 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", - "openssl-sys 0.9.54 (registry+https://github.com/rust-lang/crates.io-index)", + "bitflags", + "cfg-if", + "foreign-types", + "lazy_static", + "libc", + "openssl-sys", ] [[package]] name = "openssl-probe" version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77af24da69f9d9341038eba93a073b1fdaaa1b788221b00a69bce9e762cb32de" [[package]] name = "openssl-sys" version = "0.9.54" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1024c0a59774200a555087a6da3f253a9095a5f344e353b212ac4c8b8e450986" dependencies = [ - "autocfg 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "cc 1.0.50 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", - "pkg-config 0.3.17 (registry+https://github.com/rust-lang/crates.io-index)", - "vcpkg 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", + "autocfg 1.0.0", + "cc", + "libc", + "pkg-config", + "vcpkg", ] [[package]] name = "output_vt100" version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53cdc5b785b7a58c5aad8216b3dfa114df64b0b06ae6e1501cef91df2fbdf8f9" dependencies = [ - "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.8", ] [[package]] name = "owning_ref" version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49a4b8ea2179e6a2e27411d3bca09ca6dd630821cf6894c6c7c8467a8ee7ef13" dependencies = [ - "stable_deref_trait 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "stable_deref_trait", ] [[package]] name = "pallet-assets" version = "2.0.0" dependencies = [ - "frame-support 2.0.0", - "frame-system 2.0.0", - "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-core 2.0.0", - "sp-io 2.0.0", - "sp-runtime 2.0.0", - "sp-std 2.0.0", + "frame-support", + "frame-system", + "parity-scale-codec", + "serde", + "sp-core", + "sp-io", + "sp-runtime", + "sp-std", ] [[package]] name = "pallet-aura" version = "2.0.0" dependencies = [ - "frame-support 2.0.0", - "frame-system 2.0.0", - "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "pallet-session 2.0.0", - "pallet-timestamp 2.0.0", - "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "parking_lot 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-application-crypto 2.0.0", - "sp-consensus-aura 0.8.0", - "sp-core 2.0.0", - "sp-inherents 2.0.0", - "sp-io 2.0.0", - "sp-runtime 2.0.0", - "sp-std 2.0.0", - "sp-timestamp 2.0.0", + "frame-support", + "frame-system", + "lazy_static", + "pallet-session", + "pallet-timestamp", + "parity-scale-codec", + "parking_lot 0.10.0", + "serde", + "sp-application-crypto", + "sp-consensus-aura", + "sp-core", + "sp-inherents", + "sp-io", + "sp-runtime", + "sp-std", + "sp-timestamp", ] [[package]] name = "pallet-authority-discovery" version = "2.0.0" dependencies = [ - "frame-support 2.0.0", - "frame-system 2.0.0", - "pallet-session 2.0.0", - "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-application-crypto 2.0.0", - "sp-authority-discovery 2.0.0", - "sp-core 2.0.0", - "sp-io 2.0.0", - "sp-runtime 2.0.0", - "sp-staking 2.0.0", - "sp-std 2.0.0", + "frame-support", + "frame-system", + "pallet-session", + "parity-scale-codec", + "serde", + "sp-application-crypto", + "sp-authority-discovery", + "sp-core", + "sp-io", + "sp-runtime", + "sp-staking", + "sp-std", ] [[package]] name = "pallet-authorship" version = "2.0.0" dependencies = [ - "frame-support 2.0.0", - "frame-system 2.0.0", - "impl-trait-for-tuples 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-authorship 2.0.0", - "sp-core 2.0.0", - "sp-inherents 2.0.0", - "sp-io 2.0.0", - "sp-runtime 2.0.0", - "sp-std 2.0.0", + "frame-support", + "frame-system", + "impl-trait-for-tuples", + "parity-scale-codec", + "sp-authorship", + "sp-core", + "sp-inherents", + "sp-io", + "sp-runtime", + "sp-std", ] [[package]] name = "pallet-babe" version = "2.0.0" dependencies = [ - "frame-support 2.0.0", - "frame-system 2.0.0", - "hex-literal 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "pallet-session 2.0.0", - "pallet-timestamp 2.0.0", - "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "parking_lot 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-consensus-babe 0.8.0", - "sp-core 2.0.0", - "sp-inherents 2.0.0", - "sp-io 2.0.0", - "sp-runtime 2.0.0", - "sp-staking 2.0.0", - "sp-std 2.0.0", - "sp-timestamp 2.0.0", - "sp-version 2.0.0", - "substrate-test-runtime 2.0.0", + "frame-support", + "frame-system", + "hex-literal", + "lazy_static", + "pallet-session", + "pallet-timestamp", + "parity-scale-codec", + "parking_lot 0.10.0", + "serde", + "sp-consensus-babe", + "sp-core", + "sp-inherents", + "sp-io", + "sp-runtime", + "sp-staking", + "sp-std", + "sp-timestamp", + "sp-version", + "substrate-test-runtime", ] [[package]] name = "pallet-balances" version = "2.0.0" dependencies = [ - "frame-benchmarking 2.0.0", - "frame-support 2.0.0", - "frame-system 2.0.0", - "pallet-transaction-payment 2.0.0", - "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-core 2.0.0", - "sp-io 2.0.0", - "sp-runtime 2.0.0", - "sp-std 2.0.0", + "frame-benchmarking", + "frame-support", + "frame-system", + "pallet-transaction-payment", + "parity-scale-codec", + "serde", + "sp-core", + "sp-io", + "sp-runtime", + "sp-std", ] [[package]] name = "pallet-collective" version = "2.0.0" dependencies = [ - "frame-support 2.0.0", - "frame-system 2.0.0", - "hex-literal 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "pallet-balances 2.0.0", - "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-core 2.0.0", - "sp-io 2.0.0", - "sp-runtime 2.0.0", - "sp-std 2.0.0", + "frame-support", + "frame-system", + "hex-literal", + "pallet-balances", + "parity-scale-codec", + "serde", + "sp-core", + "sp-io", + "sp-runtime", + "sp-std", ] [[package]] name = "pallet-contracts" version = "2.0.0" dependencies = [ - "assert_matches 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "frame-support 2.0.0", - "frame-system 2.0.0", - "hex-literal 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "pallet-balances 2.0.0", - "pallet-contracts-primitives 2.0.0", - "pallet-randomness-collective-flip 2.0.0", - "pallet-timestamp 2.0.0", - "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-wasm 0.41.0 (registry+https://github.com/rust-lang/crates.io-index)", - "pwasm-utils 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-core 2.0.0", - "sp-io 2.0.0", - "sp-runtime 2.0.0", - "sp-sandbox 0.8.0", - "sp-std 2.0.0", - "wabt 0.9.2 (registry+https://github.com/rust-lang/crates.io-index)", - "wasmi-validation 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "assert_matches", + "frame-support", + "frame-system", + "hex-literal", + "pallet-balances", + "pallet-contracts-primitives", + "pallet-randomness-collective-flip", + "pallet-timestamp", + "parity-scale-codec", + "parity-wasm 0.41.0", + "pwasm-utils", + "serde", + "sp-core", + "sp-io", + "sp-runtime", + "sp-sandbox", + "sp-std", + "wabt", + "wasmi-validation", ] [[package]] name = "pallet-contracts-primitives" version = "2.0.0" dependencies = [ - "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-runtime 2.0.0", - "sp-std 2.0.0", + "parity-scale-codec", + "sp-runtime", + "sp-std", ] [[package]] name = "pallet-contracts-rpc" version = "0.8.0" dependencies = [ - "jsonrpc-core 14.0.5 (registry+https://github.com/rust-lang/crates.io-index)", - "jsonrpc-core-client 14.0.5 (registry+https://github.com/rust-lang/crates.io-index)", - "jsonrpc-derive 14.0.5 (registry+https://github.com/rust-lang/crates.io-index)", - "pallet-contracts-primitives 2.0.0", - "pallet-contracts-rpc-runtime-api 0.8.0", - "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_json 1.0.48 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-api 2.0.0", - "sp-blockchain 2.0.0", - "sp-core 2.0.0", - "sp-rpc 2.0.0", - "sp-runtime 2.0.0", + "jsonrpc-core", + "jsonrpc-core-client", + "jsonrpc-derive", + "pallet-contracts-primitives", + "pallet-contracts-rpc-runtime-api", + "parity-scale-codec", + "serde", + "serde_json", + "sp-api", + "sp-blockchain", + "sp-core", + "sp-rpc", + "sp-runtime", ] [[package]] name = "pallet-contracts-rpc-runtime-api" version = "0.8.0" dependencies = [ - "pallet-contracts-primitives 2.0.0", - "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-api 2.0.0", - "sp-runtime 2.0.0", - "sp-std 2.0.0", + "pallet-contracts-primitives", + "parity-scale-codec", + "sp-api", + "sp-runtime", + "sp-std", ] [[package]] name = "pallet-democracy" version = "2.0.0" dependencies = [ - "frame-support 2.0.0", - "frame-system 2.0.0", - "hex-literal 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "pallet-balances 2.0.0", - "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-core 2.0.0", - "sp-io 2.0.0", - "sp-runtime 2.0.0", - "sp-std 2.0.0", - "sp-storage 2.0.0", + "frame-support", + "frame-system", + "hex-literal", + "pallet-balances", + "parity-scale-codec", + "serde", + "sp-core", + "sp-io", + "sp-runtime", + "sp-std", + "sp-storage", ] [[package]] name = "pallet-elections" version = "2.0.0" dependencies = [ - "frame-support 2.0.0", - "frame-system 2.0.0", - "hex-literal 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "pallet-balances 2.0.0", - "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-core 2.0.0", - "sp-io 2.0.0", - "sp-runtime 2.0.0", - "sp-std 2.0.0", + "frame-support", + "frame-system", + "hex-literal", + "pallet-balances", + "parity-scale-codec", + "serde", + "sp-core", + "sp-io", + "sp-runtime", + "sp-std", ] [[package]] name = "pallet-elections-phragmen" version = "2.0.0" dependencies = [ - "frame-support 2.0.0", - "frame-system 2.0.0", - "hex-literal 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "pallet-balances 2.0.0", - "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-core 2.0.0", - "sp-io 2.0.0", - "sp-phragmen 2.0.0", - "sp-runtime 2.0.0", - "sp-std 2.0.0", - "substrate-test-utils 2.0.0", + "frame-support", + "frame-system", + "hex-literal", + "pallet-balances", + "parity-scale-codec", + "serde", + "sp-core", + "sp-io", + "sp-phragmen", + "sp-runtime", + "sp-std", + "substrate-test-utils", ] [[package]] name = "pallet-evm" version = "2.0.0" dependencies = [ - "evm 0.15.0 (registry+https://github.com/rust-lang/crates.io-index)", - "frame-support 2.0.0", - "frame-system 2.0.0", - "pallet-balances 2.0.0", - "pallet-timestamp 2.0.0", - "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "primitive-types 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", - "rlp 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", - "sha3 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-core 2.0.0", - "sp-io 2.0.0", - "sp-runtime 2.0.0", - "sp-std 2.0.0", + "evm", + "frame-support", + "frame-system", + "pallet-balances", + "pallet-timestamp", + "parity-scale-codec", + "primitive-types", + "rlp", + "serde", + "sha3", + "sp-core", + "sp-io", + "sp-runtime", + "sp-std", ] [[package]] name = "pallet-example" version = "2.0.0" dependencies = [ - "frame-support 2.0.0", - "frame-system 2.0.0", - "pallet-balances 2.0.0", - "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-core 2.0.0", - "sp-io 2.0.0", - "sp-runtime 2.0.0", - "sp-std 2.0.0", + "frame-support", + "frame-system", + "pallet-balances", + "parity-scale-codec", + "serde", + "sp-core", + "sp-io", + "sp-runtime", + "sp-std", ] [[package]] name = "pallet-example-offchain-worker" version = "2.0.0" dependencies = [ - "frame-support 2.0.0", - "frame-system 2.0.0", - "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_json 1.0.48 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-core 2.0.0", - "sp-io 2.0.0", - "sp-runtime 2.0.0", - "sp-std 2.0.0", + "frame-support", + "frame-system", + "parity-scale-codec", + "serde", + "serde_json", + "sp-core", + "sp-io", + "sp-runtime", + "sp-std", ] [[package]] name = "pallet-finality-tracker" version = "2.0.0" dependencies = [ - "frame-support 2.0.0", - "frame-system 2.0.0", - "impl-trait-for-tuples 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-core 2.0.0", - "sp-finality-tracker 2.0.0", - "sp-inherents 2.0.0", - "sp-io 2.0.0", - "sp-runtime 2.0.0", - "sp-std 2.0.0", + "frame-support", + "frame-system", + "impl-trait-for-tuples", + "parity-scale-codec", + "serde", + "sp-core", + "sp-finality-tracker", + "sp-inherents", + "sp-io", + "sp-runtime", + "sp-std", ] [[package]] name = "pallet-generic-asset" version = "2.0.0" dependencies = [ - "frame-support 2.0.0", - "frame-system 2.0.0", - "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-core 2.0.0", - "sp-io 2.0.0", - "sp-runtime 2.0.0", - "sp-std 2.0.0", + "frame-support", + "frame-system", + "parity-scale-codec", + "serde", + "sp-core", + "sp-io", + "sp-runtime", + "sp-std", ] [[package]] name = "pallet-grandpa" version = "2.0.0" dependencies = [ - "frame-support 2.0.0", - "frame-system 2.0.0", - "pallet-finality-tracker 2.0.0", - "pallet-session 2.0.0", - "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-core 2.0.0", - "sp-finality-grandpa 2.0.0", - "sp-io 2.0.0", - "sp-runtime 2.0.0", - "sp-staking 2.0.0", - "sp-std 2.0.0", + "frame-support", + "frame-system", + "pallet-finality-tracker", + "pallet-session", + "parity-scale-codec", + "serde", + "sp-core", + "sp-finality-grandpa", + "sp-io", + "sp-runtime", + "sp-staking", + "sp-std", ] [[package]] name = "pallet-identity" version = "2.0.0" dependencies = [ - "enumflags2 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", - "frame-benchmarking 2.0.0", - "frame-support 2.0.0", - "frame-system 2.0.0", - "pallet-balances 2.0.0", - "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-core 2.0.0", - "sp-io 2.0.0", - "sp-runtime 2.0.0", - "sp-std 2.0.0", + "enumflags2", + "frame-benchmarking", + "frame-support", + "frame-system", + "pallet-balances", + "parity-scale-codec", + "serde", + "sp-core", + "sp-io", + "sp-runtime", + "sp-std", ] [[package]] name = "pallet-im-online" version = "2.0.0" dependencies = [ - "frame-support 2.0.0", - "frame-system 2.0.0", - "pallet-authorship 2.0.0", - "pallet-session 2.0.0", - "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-application-crypto 2.0.0", - "sp-core 2.0.0", - "sp-io 2.0.0", - "sp-runtime 2.0.0", - "sp-staking 2.0.0", - "sp-std 2.0.0", + "frame-support", + "frame-system", + "pallet-authorship", + "pallet-session", + "parity-scale-codec", + "serde", + "sp-application-crypto", + "sp-core", + "sp-io", + "sp-runtime", + "sp-staking", + "sp-std", ] [[package]] name = "pallet-indices" version = "2.0.0" dependencies = [ - "frame-support 2.0.0", - "frame-system 2.0.0", - "pallet-balances 2.0.0", - "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-core 2.0.0", - "sp-io 2.0.0", - "sp-keyring 2.0.0", - "sp-runtime 2.0.0", - "sp-std 2.0.0", + "frame-support", + "frame-system", + "pallet-balances", + "parity-scale-codec", + "serde", + "sp-core", + "sp-io", + "sp-keyring", + "sp-runtime", + "sp-std", ] [[package]] name = "pallet-membership" version = "2.0.0" dependencies = [ - "frame-support 2.0.0", - "frame-system 2.0.0", - "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-core 2.0.0", - "sp-io 2.0.0", - "sp-runtime 2.0.0", - "sp-std 2.0.0", + "frame-support", + "frame-system", + "parity-scale-codec", + "serde", + "sp-core", + "sp-io", + "sp-runtime", + "sp-std", ] [[package]] name = "pallet-nicks" version = "2.0.0" dependencies = [ - "frame-support 2.0.0", - "frame-system 2.0.0", - "pallet-balances 2.0.0", - "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-core 2.0.0", - "sp-io 2.0.0", - "sp-runtime 2.0.0", - "sp-std 2.0.0", + "frame-support", + "frame-system", + "pallet-balances", + "parity-scale-codec", + "serde", + "sp-core", + "sp-io", + "sp-runtime", + "sp-std", ] [[package]] name = "pallet-offences" version = "2.0.0" dependencies = [ - "frame-support 2.0.0", - "frame-system 2.0.0", - "pallet-balances 2.0.0", - "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-core 2.0.0", - "sp-io 2.0.0", - "sp-runtime 2.0.0", - "sp-staking 2.0.0", - "sp-std 2.0.0", + "frame-support", + "frame-system", + "pallet-balances", + "parity-scale-codec", + "serde", + "sp-core", + "sp-io", + "sp-runtime", + "sp-staking", + "sp-std", ] [[package]] name = "pallet-randomness-collective-flip" version = "2.0.0" dependencies = [ - "frame-support 2.0.0", - "frame-system 2.0.0", - "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "safe-mix 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-core 2.0.0", - "sp-io 2.0.0", - "sp-runtime 2.0.0", - "sp-std 2.0.0", + "frame-support", + "frame-system", + "parity-scale-codec", + "safe-mix", + "sp-core", + "sp-io", + "sp-runtime", + "sp-std", ] [[package]] name = "pallet-recovery" version = "2.0.0" dependencies = [ - "enumflags2 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", - "frame-support 2.0.0", - "frame-system 2.0.0", - "pallet-balances 2.0.0", - "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-core 2.0.0", - "sp-io 2.0.0", - "sp-runtime 2.0.0", - "sp-std 2.0.0", + "enumflags2", + "frame-support", + "frame-system", + "pallet-balances", + "parity-scale-codec", + "serde", + "sp-core", + "sp-io", + "sp-runtime", + "sp-std", ] [[package]] name = "pallet-scored-pool" version = "2.0.0" dependencies = [ - "frame-support 2.0.0", - "frame-system 2.0.0", - "pallet-balances 2.0.0", - "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-core 2.0.0", - "sp-io 2.0.0", - "sp-runtime 2.0.0", - "sp-std 2.0.0", + "frame-support", + "frame-system", + "pallet-balances", + "parity-scale-codec", + "serde", + "sp-core", + "sp-io", + "sp-runtime", + "sp-std", ] [[package]] name = "pallet-session" version = "2.0.0" dependencies = [ - "frame-support 2.0.0", - "frame-system 2.0.0", - "impl-trait-for-tuples 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "pallet-timestamp 2.0.0", - "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-application-crypto 2.0.0", - "sp-core 2.0.0", - "sp-io 2.0.0", - "sp-runtime 2.0.0", - "sp-staking 2.0.0", - "sp-std 2.0.0", - "sp-trie 2.0.0", + "frame-support", + "frame-system", + "impl-trait-for-tuples", + "lazy_static", + "pallet-timestamp", + "parity-scale-codec", + "serde", + "sp-application-crypto", + "sp-core", + "sp-io", + "sp-runtime", + "sp-staking", + "sp-std", + "sp-trie", ] [[package]] name = "pallet-society" version = "2.0.0" dependencies = [ - "frame-support 2.0.0", - "frame-system 2.0.0", - "pallet-balances 2.0.0", - "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_chacha 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-core 2.0.0", - "sp-io 2.0.0", - "sp-runtime 2.0.0", - "sp-std 2.0.0", + "frame-support", + "frame-system", + "pallet-balances", + "parity-scale-codec", + "rand_chacha 0.2.1", + "serde", + "sp-core", + "sp-io", + "sp-runtime", + "sp-std", ] [[package]] name = "pallet-staking" version = "2.0.0" dependencies = [ - "frame-support 2.0.0", - "frame-system 2.0.0", - "pallet-authorship 2.0.0", - "pallet-balances 2.0.0", - "pallet-session 2.0.0", - "pallet-staking-reward-curve 2.0.0", - "pallet-timestamp 2.0.0", - "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-core 2.0.0", - "sp-io 2.0.0", - "sp-keyring 2.0.0", - "sp-phragmen 2.0.0", - "sp-runtime 2.0.0", - "sp-staking 2.0.0", - "sp-std 2.0.0", - "substrate-test-utils 2.0.0", + "frame-support", + "frame-system", + "pallet-authorship", + "pallet-balances", + "pallet-session", + "pallet-staking-reward-curve", + "pallet-timestamp", + "parity-scale-codec", + "serde", + "sp-core", + "sp-io", + "sp-keyring", + "sp-phragmen", + "sp-runtime", + "sp-staking", + "sp-std", + "substrate-test-utils", ] [[package]] name = "pallet-staking-reward-curve" version = "2.0.0" dependencies = [ - "proc-macro-crate 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", - "proc-macro2 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-runtime 2.0.0", - "syn 1.0.14 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro-crate", + "proc-macro2 1.0.8", + "quote 1.0.2", + "sp-runtime", + "syn", ] [[package]] name = "pallet-sudo" version = "2.0.0" dependencies = [ - "frame-support 2.0.0", - "frame-system 2.0.0", - "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-core 2.0.0", - "sp-io 2.0.0", - "sp-runtime 2.0.0", - "sp-std 2.0.0", + "frame-support", + "frame-system", + "parity-scale-codec", + "serde", + "sp-core", + "sp-io", + "sp-runtime", + "sp-std", ] [[package]] name = "pallet-template" version = "2.0.0" dependencies = [ - "frame-support 2.0.0", - "frame-system 2.0.0", - "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "safe-mix 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-core 2.0.0", - "sp-io 2.0.0", - "sp-runtime 2.0.0", + "frame-support", + "frame-system", + "parity-scale-codec", + "safe-mix", + "sp-core", + "sp-io", + "sp-runtime", ] [[package]] name = "pallet-timestamp" version = "2.0.0" dependencies = [ - "frame-benchmarking 2.0.0", - "frame-support 2.0.0", - "frame-system 2.0.0", - "impl-trait-for-tuples 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-core 2.0.0", - "sp-inherents 2.0.0", - "sp-io 2.0.0", - "sp-runtime 2.0.0", - "sp-std 2.0.0", - "sp-timestamp 2.0.0", + "frame-benchmarking", + "frame-support", + "frame-system", + "impl-trait-for-tuples", + "parity-scale-codec", + "serde", + "sp-core", + "sp-inherents", + "sp-io", + "sp-runtime", + "sp-std", + "sp-timestamp", ] [[package]] name = "pallet-transaction-payment" version = "2.0.0" dependencies = [ - "frame-support 2.0.0", - "frame-system 2.0.0", - "pallet-balances 2.0.0", - "pallet-transaction-payment-rpc-runtime-api 2.0.0", - "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-core 2.0.0", - "sp-io 2.0.0", - "sp-runtime 2.0.0", - "sp-std 2.0.0", + "frame-support", + "frame-system", + "pallet-balances", + "pallet-transaction-payment-rpc-runtime-api", + "parity-scale-codec", + "sp-core", + "sp-io", + "sp-runtime", + "sp-std", ] [[package]] name = "pallet-transaction-payment-rpc" version = "2.0.0" dependencies = [ - "jsonrpc-core 14.0.5 (registry+https://github.com/rust-lang/crates.io-index)", - "jsonrpc-core-client 14.0.5 (registry+https://github.com/rust-lang/crates.io-index)", - "jsonrpc-derive 14.0.5 (registry+https://github.com/rust-lang/crates.io-index)", - "pallet-transaction-payment-rpc-runtime-api 2.0.0", - "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-api 2.0.0", - "sp-blockchain 2.0.0", - "sp-core 2.0.0", - "sp-rpc 2.0.0", - "sp-runtime 2.0.0", + "jsonrpc-core", + "jsonrpc-core-client", + "jsonrpc-derive", + "pallet-transaction-payment-rpc-runtime-api", + "parity-scale-codec", + "serde", + "sp-api", + "sp-blockchain", + "sp-core", + "sp-rpc", + "sp-runtime", ] [[package]] name = "pallet-transaction-payment-rpc-runtime-api" version = "2.0.0" dependencies = [ - "frame-support 2.0.0", - "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_json 1.0.48 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-api 2.0.0", - "sp-runtime 2.0.0", - "sp-std 2.0.0", + "frame-support", + "parity-scale-codec", + "serde", + "serde_json", + "sp-api", + "sp-runtime", + "sp-std", ] [[package]] name = "pallet-treasury" version = "2.0.0" dependencies = [ - "frame-support 2.0.0", - "frame-system 2.0.0", - "pallet-balances 2.0.0", - "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-core 2.0.0", - "sp-io 2.0.0", - "sp-runtime 2.0.0", - "sp-std 2.0.0", + "frame-support", + "frame-system", + "pallet-balances", + "parity-scale-codec", + "serde", + "sp-core", + "sp-io", + "sp-runtime", + "sp-std", ] [[package]] name = "pallet-utility" version = "2.0.0" dependencies = [ - "frame-support 2.0.0", - "frame-system 2.0.0", - "pallet-balances 2.0.0", - "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-core 2.0.0", - "sp-io 2.0.0", - "sp-runtime 2.0.0", - "sp-std 2.0.0", + "frame-support", + "frame-system", + "pallet-balances", + "parity-scale-codec", + "serde", + "sp-core", + "sp-io", + "sp-runtime", + "sp-std", ] [[package]] name = "pallet-vesting" version = "2.0.0" dependencies = [ - "enumflags2 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", - "frame-support 2.0.0", - "frame-system 2.0.0", - "hex-literal 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "pallet-balances 2.0.0", - "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-core 2.0.0", - "sp-io 2.0.0", - "sp-runtime 2.0.0", - "sp-std 2.0.0", - "sp-storage 2.0.0", + "enumflags2", + "frame-support", + "frame-system", + "hex-literal", + "pallet-balances", + "parity-scale-codec", + "serde", + "sp-core", + "sp-io", + "sp-runtime", + "sp-std", + "sp-storage", ] [[package]] name = "parity-bytes" version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c276d76c5333b8c2579e02d49a06733a55b8282d2d9b13e8d53b6406bd7e30a" [[package]] name = "parity-multiaddr" version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "045b3c7af871285146300da35b1932bb6e4639b66c7c98e85d06a32cbc4e8fa7" dependencies = [ - "arrayref 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", - "bs58 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)", - "byteorder 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", - "data-encoding 2.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-multihash 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", - "percent-encoding 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", - "unsigned-varint 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", - "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)", + "arrayref", + "bs58 0.2.5", + "byteorder 1.3.4", + "bytes 0.4.12", + "data-encoding", + "parity-multihash 0.1.3", + "percent-encoding 1.0.1", + "serde", + "unsigned-varint 0.2.3", + "url 1.7.2", ] [[package]] name = "parity-multiaddr" version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26df883298bc3f4e92528b4c5cc9f806b791955b136da3e5e939ed9de0fd958b" dependencies = [ - "arrayref 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", - "bs58 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "byteorder 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "data-encoding 2.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-multihash 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", - "percent-encoding 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", - "static_assertions 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "unsigned-varint 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "url 2.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "arrayref", + "bs58 0.3.0", + "byteorder 1.3.4", + "data-encoding", + "parity-multihash 0.2.3", + "percent-encoding 2.1.0", + "serde", + "static_assertions", + "unsigned-varint 0.3.1", + "url 2.1.1", ] [[package]] name = "parity-multihash" version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df3a17dc27848fd99e4f87eb0f8c9baba6ede0a6d555400c850ca45254ef4ce3" dependencies = [ - "blake2 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", - "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", - "sha-1 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)", - "sha2 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", - "sha3 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)", - "unsigned-varint 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", + "blake2", + "bytes 0.4.12", + "rand 0.6.5", + "sha-1", + "sha2", + "sha3", + "unsigned-varint 0.2.3", ] [[package]] name = "parity-multihash" version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a1cd2ba02391b81367bec529fb209019d718684fdc8ad6a712c2b536e46f775" dependencies = [ - "blake2 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", - "bytes 0.5.4 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)", - "sha-1 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)", - "sha2 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", - "sha3 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)", - "unsigned-varint 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "blake2", + "bytes 0.5.4", + "rand 0.7.3", + "sha-1", + "sha2", + "sha3", + "unsigned-varint 0.3.1", ] [[package]] name = "parity-scale-codec" version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f747c06d9f3b2ad387ac881b9667298c81b1243aa9833f086e05996937c35507" dependencies = [ - "arrayvec 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", - "bitvec 0.15.2 (registry+https://github.com/rust-lang/crates.io-index)", - "byte-slice-cast 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-scale-codec-derive 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", + "arrayvec 0.5.1", + "bitvec", + "byte-slice-cast", + "parity-scale-codec-derive", + "serde", ] [[package]] name = "parity-scale-codec-derive" version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34e513ff3e406f3ede6796dcdc83d0b32ffb86668cea1ccf7363118abeb00476" dependencies = [ - "proc-macro-crate 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", - "proc-macro2 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 1.0.14 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro-crate", + "proc-macro2 1.0.8", + "quote 1.0.2", + "syn", ] [[package]] name = "parity-send-wrapper" version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa9777aa91b8ad9dd5aaa04a9b6bcb02c7f1deb952fca5a66034d5e63afc5c6f" [[package]] name = "parity-util-mem" version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef1476e40bf8f5c6776e9600983435821ca86eb9819d74a6207cca69d091406a" dependencies = [ - "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", - "impl-trait-for-tuples 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-util-mem-derive 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "parking_lot 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", - "primitive-types 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", - "smallvec 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if", + "impl-trait-for-tuples", + "parity-util-mem-derive", + "parking_lot 0.10.0", + "primitive-types", + "smallvec 1.2.0", + "winapi 0.3.8", ] [[package]] name = "parity-util-mem-derive" version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f557c32c6d268a07c921471619c0295f5efad3a0e76d4f97a05c091a51d110b2" dependencies = [ - "proc-macro2 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 1.0.14 (registry+https://github.com/rust-lang/crates.io-index)", - "synstructure 0.12.3 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 1.0.8", + "syn", + "synstructure", ] [[package]] name = "parity-wasm" version = "0.32.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "16ad52817c4d343339b3bc2e26861bd21478eda0b7509acf83505727000512ac" dependencies = [ - "byteorder 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder 1.3.4", ] [[package]] name = "parity-wasm" version = "0.41.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ddfc878dac00da22f8f61e7af3157988424567ab01d9920b962ef7dcbd7cd865" [[package]] name = "parking_lot" version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f842b1982eb6c2fe34036a4fbfb06dd185a3f5c8edfaacdf7d1ea10b07de6252" dependencies = [ - "lock_api 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", - "parking_lot_core 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", - "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", + "lock_api", + "parking_lot_core 0.6.2", + "rustc_version", ] [[package]] name = "parking_lot" version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92e98c49ab0b7ce5b222f2cc9193fc4efe11c6d0bd4f648e374684a6857b1cfc" dependencies = [ - "lock_api 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", - "parking_lot_core 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", + "lock_api", + "parking_lot_core 0.7.0", ] [[package]] name = "parking_lot_core" version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b876b1b9e7ac6e1a74a6da34d25c42e17e8862aa409cbbbdcfc8d86c6f3bc62b" dependencies = [ - "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", - "cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", - "redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)", - "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", - "smallvec 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if", + "cloudabi", + "libc", + "redox_syscall", + "rustc_version", + "smallvec 0.6.13", + "winapi 0.3.8", ] [[package]] name = "parking_lot_core" version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7582838484df45743c8434fbff785e8edf260c28748353d44bc0da32e0ceabf1" dependencies = [ - "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", - "cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", - "redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)", - "smallvec 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if", + "cloudabi", + "libc", + "redox_syscall", + "smallvec 1.2.0", + "winapi 0.3.8", ] [[package]] name = "paste" version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "423a519e1c6e828f1e73b720f9d9ed2fa643dce8a7737fb43235ce0b41eeaa49" dependencies = [ - "paste-impl 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "proc-macro-hack 0.5.11 (registry+https://github.com/rust-lang/crates.io-index)", + "paste-impl", + "proc-macro-hack", ] [[package]] name = "paste-impl" version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4214c9e912ef61bf42b81ba9a47e8aad1b2ffaf739ab162bf96d1e011f54e6c5" dependencies = [ - "proc-macro-hack 0.5.11 (registry+https://github.com/rust-lang/crates.io-index)", - "proc-macro2 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 1.0.14 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro-hack", + "proc-macro2 1.0.8", + "quote 1.0.2", + "syn", ] [[package]] name = "pbkdf2" version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "006c038a43a45995a9670da19e67600114740e8511d4333bf97a56e66a7542d9" dependencies = [ - "byteorder 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "crypto-mac 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder 1.3.4", + "crypto-mac", ] [[package]] name = "pdqselect" version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ec91767ecc0a0bbe558ce8c9da33c068066c57ecc8bb8477ef8c1ad3ef77c27" [[package]] name = "peeking_take_while" version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19b17cddbe7ec3f8bc800887bab5e717348c95ea2ca0b1bf0837fb964dc67099" [[package]] name = "percent-encoding" version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "31010dd2e1ac33d5b46a5b413495239882813e0369f8ed8a5e266f173602f831" [[package]] name = "percent-encoding" version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4fd5641d01c8f18a23da7b6fe29298ff4b55afcccdf78973b24cf3175fee32e" [[package]] name = "petgraph" version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29c127eea4a29ec6c85d153c59dc1213f33ec74cead30fe4730aecc88cc1fd92" dependencies = [ - "fixedbitset 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "indexmap 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", + "fixedbitset", + "indexmap", ] [[package]] name = "pin-project" version = "0.4.8" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7804a463a8d9572f13453c516a5faea534a2403d7ced2f0c7e100eeff072772c" dependencies = [ - "pin-project-internal 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "pin-project-internal", ] [[package]] name = "pin-project-internal" version = "0.4.8" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "385322a45f2ecf3410c68d2a549a4a2685e8051d0f278e39743ff4e451cb9b3f" dependencies = [ - "proc-macro2 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 1.0.14 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 1.0.8", + "quote 1.0.2", + "syn", ] [[package]] name = "pin-project-lite" version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "237844750cfbb86f67afe27eee600dfbbcb6188d734139b534cbfbf4f96792ae" [[package]] name = "pin-utils" version = "0.1.0-alpha.4" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5894c618ce612a3fa23881b152b608bafb8c56cfc22f434a3ba3120b40f7b587" [[package]] name = "pkg-config" version = "0.3.17" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05da548ad6865900e60eaba7f589cc0783590a92e940c26953ff81ddbab2d677" [[package]] name = "plain" version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4596b6d070b27117e987119b4dac604f3c58cfb0b191112e24771b2faeac1a6" [[package]] name = "plotters" version = "0.2.12" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4e3bb8da247d27ae212529352020f3e5ee16e83c0c258061d27b08ab92675eeb" dependencies = [ - "js-sys 0.3.35 (registry+https://github.com/rust-lang/crates.io-index)", - "num-traits 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", - "wasm-bindgen 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", - "web-sys 0.3.35 (registry+https://github.com/rust-lang/crates.io-index)", + "js-sys", + "num-traits", + "wasm-bindgen", + "web-sys", ] [[package]] name = "ppv-lite86" version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74490b50b9fbe561ac330df47c08f3f33073d2d00c150f719147d7c54522fa1b" [[package]] name = "predicates" version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9bfe52247e5cc9b2f943682a85a5549fb9662245caf094504e69a2f03fe64d4" dependencies = [ - "difference 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "predicates-core 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "difference", + "predicates-core", ] [[package]] name = "predicates-core" version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06075c3a3e92559ff8929e7a280684489ea27fe44805174c3ebd9328dcb37178" [[package]] name = "predicates-tree" version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e63c4859013b38a76eca2414c64911fba30def9e3202ac461a2d22831220124" dependencies = [ - "predicates-core 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "treeline 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "predicates-core", + "treeline", ] [[package]] name = "pretty_assertions" version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f81e1644e1b54f5a68959a29aa86cde704219254669da328ecfdf6a1f09d427" dependencies = [ - "ansi_term 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", - "ctor 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", - "difference 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "output_vt100 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "ansi_term 0.11.0", + "ctor", + "difference", + "output_vt100", ] [[package]] name = "primitive-types" version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e4336f4f5d5524fa60bcbd6fe626f9223d8142a50e7053e979acdf0da41ab975" dependencies = [ - "fixed-hash 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)", - "impl-codec 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", - "impl-rlp 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "impl-serde 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "uint 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)", + "fixed-hash", + "impl-codec", + "impl-rlp", + "impl-serde 0.3.0", + "uint", ] [[package]] name = "proc-macro-crate" version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e10d4b51f154c8a7fb96fd6dad097cb74b863943ec010ac94b9fd1be8861fe1e" dependencies = [ - "toml 0.5.6 (registry+https://github.com/rust-lang/crates.io-index)", + "toml", ] [[package]] name = "proc-macro-error" version = "0.4.9" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "052b3c9af39c7e5e94245f820530487d19eb285faedcb40e0c3275132293f242" dependencies = [ - "proc-macro-error-attr 0.4.9 (registry+https://github.com/rust-lang/crates.io-index)", - "proc-macro2 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "rustversion 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 1.0.14 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro-error-attr", + "proc-macro2 1.0.8", + "quote 1.0.2", + "rustversion", + "syn", ] [[package]] name = "proc-macro-error-attr" version = "0.4.9" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d175bef481c7902e63e3165627123fff3502f06ac043d3ef42d08c1246da9253" dependencies = [ - "proc-macro2 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "rustversion 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 1.0.14 (registry+https://github.com/rust-lang/crates.io-index)", - "syn-mid 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 1.0.8", + "quote 1.0.2", + "rustversion", + "syn", + "syn-mid", ] [[package]] name = "proc-macro-hack" version = "0.5.11" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ecd45702f76d6d3c75a80564378ae228a85f0b59d2f3ed43c91b4a69eb2ebfc5" dependencies = [ - "proc-macro2 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 1.0.14 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 1.0.8", + "quote 1.0.2", + "syn", ] [[package]] name = "proc-macro-nested" version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "369a6ed065f249a159e06c45752c780bda2fb53c995718f9e484d08daa9eb42e" [[package]] name = "proc-macro2" version = "0.4.30" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf3d2011ab5c909338f7887f4fc896d35932e29146c12c8d01da6b22a80ba759" dependencies = [ - "unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "unicode-xid 0.1.0", ] [[package]] name = "proc-macro2" version = "1.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3acb317c6ff86a4e579dfa00fc5e6cca91ecbb4e7eb2df0468805b674eb88548" dependencies = [ - "unicode-xid 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "unicode-xid 0.2.0", ] [[package]] name = "prometheus" version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5567486d5778e2c6455b1b90ff1c558f29e751fc018130fa182e15828e728af1" dependencies = [ - "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", - "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "protobuf 2.10.1 (registry+https://github.com/rust-lang/crates.io-index)", - "quick-error 1.2.3 (registry+https://github.com/rust-lang/crates.io-index)", - "spin 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if", + "fnv", + "lazy_static", + "protobuf", + "quick-error", + "spin", ] [[package]] name = "prometheus-exporter" version = "0.8.0" dependencies = [ - "async-std 1.5.0 (registry+https://github.com/rust-lang/crates.io-index)", - "derive_more 0.99.3 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-util 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "hyper 0.13.2 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "prometheus 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", + "async-std", + "derive_more", + "futures-util", + "hyper 0.13.2", + "log 0.4.8", + "prometheus", + "tokio 0.2.11", ] [[package]] name = "prost" version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce49aefe0a6144a45de32927c77bd2859a5f7677b55f220ae5b744e87389c212" dependencies = [ - "bytes 0.5.4 (registry+https://github.com/rust-lang/crates.io-index)", - "prost-derive 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes 0.5.4", + "prost-derive", ] [[package]] name = "prost-build" version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02b10678c913ecbd69350e8535c3aef91a8676c0773fc1d7b95cdd196d7f2f26" dependencies = [ - "bytes 0.5.4 (registry+https://github.com/rust-lang/crates.io-index)", - "heck 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "itertools 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "multimap 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", - "petgraph 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", - "prost 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", - "prost-types 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", - "tempfile 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "which 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes 0.5.4", + "heck", + "itertools", + "log 0.4.8", + "multimap", + "petgraph", + "prost", + "prost-types", + "tempfile", + "which 3.1.0", ] [[package]] name = "prost-derive" version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "537aa19b95acde10a12fec4301466386f757403de4cd4e5b4fa78fb5ecb18f72" dependencies = [ - "anyhow 1.0.26 (registry+https://github.com/rust-lang/crates.io-index)", - "itertools 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)", - "proc-macro2 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 1.0.14 (registry+https://github.com/rust-lang/crates.io-index)", + "anyhow", + "itertools", + "proc-macro2 1.0.8", + "quote 1.0.2", + "syn", ] [[package]] name = "prost-types" version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1834f67c0697c001304b75be76f67add9c89742eda3a085ad8ee0bb38c3417aa" dependencies = [ - "bytes 0.5.4 (registry+https://github.com/rust-lang/crates.io-index)", - "prost 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes 0.5.4", + "prost", ] [[package]] name = "protobuf" version = "2.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6686ddd96a8dbe2687b5f2a687b2cfb520854010ec480f2d74c32e7c9873d3c5" [[package]] name = "pwasm-utils" version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4f7a12f176deee919f4ba55326ee17491c8b707d0987aed822682c821b660192" dependencies = [ - "byteorder 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-wasm 0.41.0 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder 1.3.4", + "log 0.4.8", + "parity-wasm 0.41.0", ] [[package]] name = "quick-error" version = "1.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0" [[package]] name = "quickcheck" version = "0.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a44883e74aa97ad63db83c4bf8ca490f02b2fc02f92575e720c8551e843c945f" dependencies = [ - "env_logger 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_core 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", + "env_logger 0.7.1", + "log 0.4.8", + "rand 0.7.3", + "rand_core 0.5.1", ] [[package]] name = "quicksink" version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8461ef7445f61fd72d8dcd0629ce724b9131b3c2eb36e83a5d3d4161c127530" dependencies = [ - "futures-core 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-sink 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "pin-project-lite 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-core", + "futures-sink", + "pin-project-lite", ] [[package]] name = "quote" version = "0.6.13" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ce23b6b870e8f94f81fb0a363d65d86675884b34a09043c81e5562f11c1f8e1" dependencies = [ - "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 0.4.30", ] [[package]] name = "quote" version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "053a8c8bcc71fcce321828dc897a98ab9760bef03a4fc36693c231e5b3216cfe" dependencies = [ - "proc-macro2 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 1.0.8", ] [[package]] name = "rand" version = "0.3.23" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "64ac302d8f83c0c1974bf758f6b041c6c8ada916fbb44a609158ca8b064cc76c" dependencies = [ - "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "libc", + "rand 0.4.6", ] [[package]] name = "rand" version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "552840b97013b1a26992c11eac34bdd778e464601a4c2054b5f0bff7c6761293" dependencies = [ - "fuchsia-cprng 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "rdrand 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", + "fuchsia-cprng", + "libc", + "rand_core 0.3.1", + "rdrand", + "winapi 0.3.8", ] [[package]] name = "rand" version = "0.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d71dacdc3c88c1fde3885a3be3fbab9f35724e6ce99467f7d9c5026132184ca" dependencies = [ - "autocfg 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_chacha 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_hc 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_isaac 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_jitter 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_os 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_pcg 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_xorshift 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", + "autocfg 0.1.7", + "libc", + "rand_chacha 0.1.1", + "rand_core 0.4.2", + "rand_hc 0.1.0", + "rand_isaac", + "rand_jitter", + "rand_os", + "rand_pcg", + "rand_xorshift", + "winapi 0.3.8", ] [[package]] name = "rand" version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03" dependencies = [ - "getrandom 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_chacha 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_core 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_hc 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "getrandom", + "libc", + "rand_chacha 0.2.1", + "rand_core 0.5.1", + "rand_hc 0.2.0", ] [[package]] name = "rand_chacha" version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "556d3a1ca6600bfcbab7c7c91ccb085ac7fbbcd70e008a98742e7847f4f7bcef" dependencies = [ - "autocfg 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "autocfg 0.1.7", + "rand_core 0.3.1", ] [[package]] name = "rand_chacha" version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03a2a90da8c7523f554344f921aa97283eadf6ac484a6d2a7d0212fa7f8d6853" dependencies = [ - "c2-chacha 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_core 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", + "c2-chacha", + "rand_core 0.5.1", ] [[package]] name = "rand_core" version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a6fdeb83b075e8266dcc8762c22776f6877a63111121f5f8c7411e5be7eed4b" dependencies = [ - "rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_core 0.4.2", ] [[package]] name = "rand_core" version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c33a3c44ca05fa6f1807d8e6743f3824e8509beca625669633be0acbdf509dc" [[package]] name = "rand_core" version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" dependencies = [ - "getrandom 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)", + "getrandom", ] [[package]] name = "rand_hc" version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b40677c7be09ae76218dc623efbf7b18e34bced3f38883af07bb75630a21bc4" dependencies = [ - "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_core 0.3.1", ] [[package]] name = "rand_hc" version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c" dependencies = [ - "rand_core 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_core 0.5.1", ] [[package]] name = "rand_isaac" version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ded997c9d5f13925be2a6fd7e66bf1872597f759fd9dd93513dd7e92e5a5ee08" dependencies = [ - "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_core 0.3.1", ] [[package]] name = "rand_jitter" version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1166d5c91dc97b88d1decc3285bb0a99ed84b05cfd0bc2341bdf2d43fc41e39b" dependencies = [ - "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", + "libc", + "rand_core 0.4.2", + "winapi 0.3.8", ] [[package]] name = "rand_os" version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b75f676a1e053fc562eafbb47838d67c84801e38fc1ba459e8f180deabd5071" dependencies = [ - "cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)", - "fuchsia-cprng 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", - "rdrand 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "wasm-bindgen 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", + "cloudabi", + "fuchsia-cprng", + "libc", + "rand_core 0.4.2", + "rdrand", + "wasm-bindgen", + "winapi 0.3.8", ] [[package]] name = "rand_pcg" version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "abf9b09b01790cfe0364f52bf32995ea3c39f4d2dd011eac241d2914146d0b44" dependencies = [ - "autocfg 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", + "autocfg 0.1.7", + "rand_core 0.4.2", ] [[package]] name = "rand_xorshift" version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cbf7e9e623549b0e21f6e97cf8ecf247c1a8fd2e8a992ae265314300b2455d5c" dependencies = [ - "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_core 0.3.1", ] [[package]] name = "rand_xoshiro" version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03b418169fb9c46533f326efd6eed2576699c44ca92d3052a066214a8d828929" dependencies = [ - "byteorder 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder 1.3.4", + "rand_core 0.3.1", ] [[package]] name = "raw-cpuid" version = "7.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4a349ca83373cfa5d6dbb66fd76e58b2cca08da71a5f6400de0a0a6a9bceeaf" dependencies = [ - "bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "cc 1.0.50 (registry+https://github.com/rust-lang/crates.io-index)", - "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", + "bitflags", + "cc", + "rustc_version", ] [[package]] name = "rayon" version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db6ce3297f9c85e16621bb8cca38a06779ffc31bb8184e1be4bed2be4678a098" dependencies = [ - "crossbeam-deque 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)", - "either 1.5.3 (registry+https://github.com/rust-lang/crates.io-index)", - "rayon-core 1.7.0 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-deque", + "either", + "rayon-core", ] [[package]] name = "rayon-core" version = "1.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08a89b46efaf957e52b18062fb2f4660f8b8a4dde1807ca002690868ef2c85a9" dependencies = [ - "crossbeam-deque 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)", - "crossbeam-queue 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "crossbeam-utils 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "num_cpus 1.12.0 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-deque", + "crossbeam-queue", + "crossbeam-utils", + "lazy_static", + "num_cpus", ] [[package]] name = "rdrand" version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "678054eb77286b51581ba43620cc911abf02758c91f93f479767aed0f90458b2" dependencies = [ - "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_core 0.3.1", ] [[package]] name = "redox_syscall" version = "0.1.56" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2439c63f3f6139d1b57529d16bc3b8bb855230c8efcc5d3a896c8bea7c3b1e84" [[package]] name = "redox_users" version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09b23093265f8d200fa7b4c2c76297f47e681c655f6f1285a8780d6a022f7431" dependencies = [ - "getrandom 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)", - "redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)", - "rust-argon2 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", + "getrandom", + "redox_syscall", + "rust-argon2", ] [[package]] name = "regex" version = "1.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "322cf97724bea3ee221b78fe25ac9c46114ebb51747ad5babd51a2fc6a8235a8" dependencies = [ - "aho-corasick 0.7.8 (registry+https://github.com/rust-lang/crates.io-index)", - "memchr 2.3.2 (registry+https://github.com/rust-lang/crates.io-index)", - "regex-syntax 0.6.14 (registry+https://github.com/rust-lang/crates.io-index)", - "thread_local 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", + "aho-corasick", + "memchr", + "regex-syntax", + "thread_local", ] [[package]] name = "regex-automata" version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92b73c2a1770c255c240eaa4ee600df1704a38dc3feaa6e949e7fcd4f8dc09f9" dependencies = [ - "byteorder 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder 1.3.4", ] [[package]] name = "regex-syntax" version = "0.6.14" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b28dfe3fe9badec5dbf0a79a9cccad2cfc2ab5484bdb3e44cbd1ae8b3ba2be06" [[package]] name = "region" version = "2.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "448e868c6e4cfddfa49b6a72c95906c04e8547465e9536575b95c70a4044f856" dependencies = [ - "bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", - "mach 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", + "bitflags", + "libc", + "mach", + "winapi 0.3.8", ] [[package]] name = "remove_dir_all" version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a83fa3702a688b9359eccba92d153ac33fd2e8462f9e0e3fdf155239ea7792e" dependencies = [ - "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.8", ] [[package]] name = "ring" version = "0.16.11" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "741ba1704ae21999c00942f9f5944f801e977f54302af346b596287599ad1862" dependencies = [ - "cc 1.0.50 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", - "spin 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)", - "untrusted 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", - "web-sys 0.3.35 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", + "cc", + "lazy_static", + "libc", + "spin", + "untrusted", + "web-sys", + "winapi 0.3.8", ] [[package]] name = "rlp" version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a44d5ae8afcb238af8b75640907edc6c931efcfab2c854e81ed35fa080f84cd" dependencies = [ - "rustc-hex 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "rustc-hex", ] [[package]] name = "rocksdb" version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "12069b106981c6103d3eab7dd1c86751482d0779a520b7c14954c8b586c1e643" dependencies = [ - "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", - "librocksdb-sys 6.2.4 (registry+https://github.com/rust-lang/crates.io-index)", + "libc", + "librocksdb-sys", ] [[package]] name = "rpassword" version = "4.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "99371657d3c8e4d816fb6221db98fa408242b0b53bac08f8676a41f8554fe99f" dependencies = [ - "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", + "libc", + "winapi 0.3.8", ] [[package]] name = "rust-argon2" version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2bc8af4bda8e1ff4932523b94d3dd20ee30a87232323eda55903ffd71d2fb017" dependencies = [ - "base64 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", - "blake2b_simd 0.5.10 (registry+https://github.com/rust-lang/crates.io-index)", - "constant_time_eq 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", - "crossbeam-utils 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", + "base64 0.11.0", + "blake2b_simd", + "constant_time_eq", + "crossbeam-utils", ] [[package]] name = "rustc-demangle" version = "0.1.16" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c691c0e608126e00913e33f0ccf3727d5fc84573623b8d65b2df340b5201783" [[package]] name = "rustc-hash" version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" [[package]] name = "rustc-hex" version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3e75f6a532d0fd9f7f13144f392b6ad56a32696bfcd9c78f797f16bbb6f072d6" [[package]] name = "rustc_version" version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030a" dependencies = [ - "semver 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", + "semver 0.9.0", ] [[package]] name = "rustls" version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b25a18b1bf7387f0145e7f8324e700805aade3842dd3db2e74e4cdeb4677c09e" dependencies = [ - "base64 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "ring 0.16.11 (registry+https://github.com/rust-lang/crates.io-index)", - "sct 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)", - "webpki 0.21.2 (registry+https://github.com/rust-lang/crates.io-index)", + "base64 0.10.1", + "log 0.4.8", + "ring", + "sct", + "webpki", ] [[package]] name = "rustls-native-certs" version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51ffebdbb48c14f84eba0b715197d673aff1dd22cc1007ca647e28483bbcc307" dependencies = [ - "openssl-probe 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "rustls 0.16.0 (registry+https://github.com/rust-lang/crates.io-index)", - "schannel 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)", - "security-framework 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "openssl-probe", + "rustls", + "schannel", + "security-framework", ] [[package]] name = "rustversion" version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b3bba175698996010c4f6dce5e7f173b6eb781fce25d2cfc45e27091ce0b79f6" dependencies = [ - "proc-macro2 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 1.0.14 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 1.0.8", + "quote 1.0.2", + "syn", ] [[package]] name = "rw-stream-sink" version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4da5fcb054c46f5a5dff833b129285a93d3f0179531735e6c866e8cc307d2020" dependencies = [ - "futures 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "pin-project 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "static_assertions 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.3.4", + "pin-project", + "static_assertions", ] [[package]] name = "ryu" version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfa8506c1de11c9c4e4c38863ccbe02a305c8188e85a05a784c9e11e1c3910c8" [[package]] name = "safe-mix" version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d3d055a2582e6b00ed7a31c1524040aa391092bf636328350813f3a0605215c" dependencies = [ - "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", + "rustc_version", ] [[package]] name = "safemem" version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef703b7cb59335eae2eb93ceb664c0eb7ea6bf567079d843e09420219668e072" [[package]] name = "salsa20" version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2324b0e8c3bb9a586a571fdb3136f70e7e2c748de00a78043f86e0cff91f91fe" dependencies = [ - "byteorder 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "salsa20-core 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", - "stream-cipher 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder 1.3.4", + "salsa20-core", + "stream-cipher", ] [[package]] name = "salsa20-core" version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2fe6cc1b9f5a5867853ade63099de70f042f7679e408d1ffe52821c9248e6e69" dependencies = [ - "stream-cipher 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", + "stream-cipher", ] [[package]] name = "same-file" version = "1.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" dependencies = [ - "winapi-util 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi-util", ] [[package]] name = "sc-authority-discovery" version = "0.8.0" dependencies = [ - "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", - "derive_more 0.99.3 (registry+https://github.com/rust-lang/crates.io-index)", - "env_logger 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-timer 3.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "libp2p 0.16.1 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "prost 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", - "prost-build 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", - "quickcheck 0.9.2 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)", - "sc-client-api 2.0.0", - "sc-keystore 2.0.0", - "sc-network 0.8.0", - "sc-peerset 2.0.0", - "serde_json 1.0.48 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-api 2.0.0", - "sp-authority-discovery 2.0.0", - "sp-blockchain 2.0.0", - "sp-core 2.0.0", - "sp-runtime 2.0.0", - "substrate-test-runtime-client 2.0.0", + "bytes 0.4.12", + "derive_more", + "env_logger 0.7.1", + "futures 0.3.4", + "futures-timer 3.0.2", + "libp2p", + "log 0.4.8", + "parity-scale-codec", + "prost", + "prost-build", + "quickcheck", + "rand 0.7.3", + "sc-client-api", + "sc-keystore", + "sc-network", + "sc-peerset", + "serde_json", + "sp-api", + "sp-authority-discovery", + "sp-blockchain", + "sp-core", + "sp-runtime", + "substrate-test-runtime-client", ] [[package]] name = "sc-basic-authorship" version = "0.8.0" dependencies = [ - "futures 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "parking_lot 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", - "sc-block-builder 0.8.0", - "sc-client 0.8.0", - "sc-client-api 2.0.0", - "sc-telemetry 2.0.0", - "sc-transaction-pool 2.0.0", - "sp-api 2.0.0", - "sp-blockchain 2.0.0", - "sp-consensus 0.8.0", - "sp-core 2.0.0", - "sp-inherents 2.0.0", - "sp-runtime 2.0.0", - "sp-transaction-pool 2.0.0", - "substrate-test-runtime-client 2.0.0", - "tokio-executor 0.2.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.3.4", + "log 0.4.8", + "parity-scale-codec", + "parking_lot 0.10.0", + "sc-block-builder", + "sc-client", + "sc-client-api", + "sc-telemetry", + "sc-transaction-pool", + "sp-api", + "sp-blockchain", + "sp-consensus", + "sp-core", + "sp-inherents", + "sp-runtime", + "sp-transaction-pool", + "substrate-test-runtime-client", + "tokio-executor 0.2.0-alpha.6", ] [[package]] name = "sc-block-builder" version = "0.8.0" dependencies = [ - "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "sc-client-api 2.0.0", - "sp-api 2.0.0", - "sp-block-builder 2.0.0", - "sp-blockchain 2.0.0", - "sp-consensus 0.8.0", - "sp-core 2.0.0", - "sp-runtime 2.0.0", - "sp-state-machine 0.8.0", + "parity-scale-codec", + "sc-client-api", + "sp-api", + "sp-block-builder", + "sp-blockchain", + "sp-consensus", + "sp-core", + "sp-runtime", + "sp-state-machine", ] [[package]] name = "sc-chain-spec" version = "2.0.0" dependencies = [ - "impl-trait-for-tuples 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", - "sc-chain-spec-derive 2.0.0", - "sc-network 0.8.0", - "sc-telemetry 2.0.0", - "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_json 1.0.48 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-core 2.0.0", - "sp-runtime 2.0.0", + "impl-trait-for-tuples", + "sc-chain-spec-derive", + "sc-network", + "sc-telemetry", + "serde", + "serde_json", + "sp-core", + "sp-runtime", ] [[package]] name = "sc-chain-spec-derive" version = "2.0.0" dependencies = [ - "proc-macro-crate 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", - "proc-macro2 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 1.0.14 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro-crate", + "proc-macro2 1.0.8", + "quote 1.0.2", + "syn", ] [[package]] name = "sc-cli" version = "0.8.0" dependencies = [ - "ansi_term 0.12.1 (registry+https://github.com/rust-lang/crates.io-index)", - "app_dirs 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "atty 0.2.14 (registry+https://github.com/rust-lang/crates.io-index)", - "chrono 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", - "clap 2.33.0 (registry+https://github.com/rust-lang/crates.io-index)", - "derive_more 0.99.3 (registry+https://github.com/rust-lang/crates.io-index)", - "env_logger 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", - "fdlimit 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "names 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-util-mem 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", - "prometheus-exporter 0.8.0", - "regex 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "rpassword 4.0.5 (registry+https://github.com/rust-lang/crates.io-index)", - "sc-client-api 2.0.0", - "sc-informant 0.8.0", - "sc-network 0.8.0", - "sc-service 0.8.0", - "sc-telemetry 2.0.0", - "sc-tracing 2.0.0", - "serde_json 1.0.48 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-blockchain 2.0.0", - "sp-core 2.0.0", - "sp-keyring 2.0.0", - "sp-panic-handler 2.0.0", - "sp-runtime 2.0.0", - "sp-state-machine 0.8.0", - "structopt 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", - "tempfile 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", + "ansi_term 0.12.1", + "app_dirs", + "atty", + "chrono", + "clap", + "derive_more", + "env_logger 0.7.1", + "fdlimit", + "futures 0.3.4", + "lazy_static", + "log 0.4.8", + "names", + "parity-util-mem", + "prometheus-exporter", + "regex", + "rpassword", + "sc-client-api", + "sc-informant", + "sc-network", + "sc-service", + "sc-telemetry", + "sc-tracing", + "serde_json", + "sp-blockchain", + "sp-core", + "sp-keyring", + "sp-panic-handler", + "sp-runtime", + "sp-state-machine", + "structopt", + "tempfile", + "time", + "tokio 0.2.11", ] [[package]] name = "sc-client" version = "0.8.0" dependencies = [ - "derive_more 0.99.3 (registry+https://github.com/rust-lang/crates.io-index)", - "env_logger 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", - "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "hash-db 0.15.2 (registry+https://github.com/rust-lang/crates.io-index)", - "hex-literal 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "kvdb 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "kvdb-memorydb 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "parking_lot 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", - "sc-block-builder 0.8.0", - "sc-client-api 2.0.0", - "sc-executor 0.8.0", - "sc-telemetry 2.0.0", - "sp-api 2.0.0", - "sp-blockchain 2.0.0", - "sp-consensus 0.8.0", - "sp-core 2.0.0", - "sp-externalities 0.8.0", - "sp-inherents 2.0.0", - "sp-keyring 2.0.0", - "sp-panic-handler 2.0.0", - "sp-runtime 2.0.0", - "sp-state-machine 0.8.0", - "sp-std 2.0.0", - "sp-trie 2.0.0", - "sp-version 2.0.0", - "substrate-test-runtime-client 2.0.0", - "tempfile 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "tracing 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", + "derive_more", + "env_logger 0.7.1", + "fnv", + "futures 0.3.4", + "hash-db", + "hex-literal", + "kvdb", + "kvdb-memorydb", + "log 0.4.8", + "parity-scale-codec", + "parking_lot 0.10.0", + "sc-block-builder", + "sc-client-api", + "sc-executor", + "sc-telemetry", + "sp-api", + "sp-blockchain", + "sp-consensus", + "sp-core", + "sp-externalities", + "sp-inherents", + "sp-keyring", + "sp-panic-handler", + "sp-runtime", + "sp-state-machine", + "sp-std", + "sp-trie", + "sp-version", + "substrate-test-runtime-client", + "tempfile", + "tracing", ] [[package]] name = "sc-client-api" version = "2.0.0" dependencies = [ - "derive_more 0.99.3 (registry+https://github.com/rust-lang/crates.io-index)", - "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "hash-db 0.15.2 (registry+https://github.com/rust-lang/crates.io-index)", - "hex-literal 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "kvdb 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "parking_lot 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", - "sc-executor 0.8.0", - "sc-telemetry 2.0.0", - "sp-api 2.0.0", - "sp-blockchain 2.0.0", - "sp-consensus 0.8.0", - "sp-core 2.0.0", - "sp-externalities 0.8.0", - "sp-inherents 2.0.0", - "sp-keyring 2.0.0", - "sp-runtime 2.0.0", - "sp-state-machine 0.8.0", - "sp-std 2.0.0", - "sp-test-primitives 2.0.0", - "sp-transaction-pool 2.0.0", - "sp-trie 2.0.0", - "sp-version 2.0.0", + "derive_more", + "fnv", + "futures 0.3.4", + "hash-db", + "hex-literal", + "kvdb", + "log 0.4.8", + "parity-scale-codec", + "parking_lot 0.10.0", + "sc-executor", + "sc-telemetry", + "sp-api", + "sp-blockchain", + "sp-consensus", + "sp-core", + "sp-externalities", + "sp-inherents", + "sp-keyring", + "sp-runtime", + "sp-state-machine", + "sp-std", + "sp-test-primitives", + "sp-transaction-pool", + "sp-trie", + "sp-version", ] [[package]] name = "sc-client-db" version = "0.8.0" dependencies = [ - "env_logger 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", - "hash-db 0.15.2 (registry+https://github.com/rust-lang/crates.io-index)", - "kvdb 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "kvdb-memorydb 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "kvdb-rocksdb 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", - "linked-hash-map 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-util-mem 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", - "parking_lot 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", - "quickcheck 0.9.2 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)", - "sc-client 0.8.0", - "sc-client-api 2.0.0", - "sc-executor 0.8.0", - "sc-state-db 0.8.0", - "sp-blockchain 2.0.0", - "sp-consensus 0.8.0", - "sp-core 2.0.0", - "sp-keyring 2.0.0", - "sp-runtime 2.0.0", - "sp-state-machine 0.8.0", - "sp-trie 2.0.0", - "substrate-test-runtime-client 2.0.0", - "tempfile 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "env_logger 0.7.1", + "hash-db", + "kvdb", + "kvdb-memorydb", + "kvdb-rocksdb", + "linked-hash-map", + "log 0.4.8", + "parity-scale-codec", + "parity-util-mem", + "parking_lot 0.10.0", + "quickcheck", + "rand 0.7.3", + "sc-client", + "sc-client-api", + "sc-executor", + "sc-state-db", + "sp-blockchain", + "sp-consensus", + "sp-core", + "sp-keyring", + "sp-runtime", + "sp-state-machine", + "sp-trie", + "substrate-test-runtime-client", + "tempfile", ] [[package]] name = "sc-consensus-aura" version = "0.8.0" dependencies = [ - "derive_more 0.99.3 (registry+https://github.com/rust-lang/crates.io-index)", - "env_logger 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-timer 3.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "parking_lot 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", - "sc-client 0.8.0", - "sc-client-api 2.0.0", - "sc-consensus-slots 0.8.0", - "sc-executor 0.8.0", - "sc-keystore 2.0.0", - "sc-network 0.8.0", - "sc-network-test 0.8.0", - "sc-service 0.8.0", - "sc-telemetry 2.0.0", - "sp-api 2.0.0", - "sp-application-crypto 2.0.0", - "sp-block-builder 2.0.0", - "sp-blockchain 2.0.0", - "sp-consensus 0.8.0", - "sp-consensus-aura 0.8.0", - "sp-core 2.0.0", - "sp-inherents 2.0.0", - "sp-io 2.0.0", - "sp-keyring 2.0.0", - "sp-runtime 2.0.0", - "sp-timestamp 2.0.0", - "sp-version 2.0.0", - "substrate-test-runtime-client 2.0.0", - "tempfile 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio 0.1.22 (registry+https://github.com/rust-lang/crates.io-index)", + "derive_more", + "env_logger 0.7.1", + "futures 0.1.29", + "futures 0.3.4", + "futures-timer 3.0.2", + "log 0.4.8", + "parity-scale-codec", + "parking_lot 0.10.0", + "sc-client", + "sc-client-api", + "sc-consensus-slots", + "sc-executor", + "sc-keystore", + "sc-network", + "sc-network-test", + "sc-service", + "sc-telemetry", + "sp-api", + "sp-application-crypto", + "sp-block-builder", + "sp-blockchain", + "sp-consensus", + "sp-consensus-aura", + "sp-core", + "sp-inherents", + "sp-io", + "sp-keyring", + "sp-runtime", + "sp-timestamp", + "sp-version", + "substrate-test-runtime-client", + "tempfile", + "tokio 0.1.22", ] [[package]] name = "sc-consensus-babe" version = "0.8.0" dependencies = [ - "derive_more 0.99.3 (registry+https://github.com/rust-lang/crates.io-index)", - "env_logger 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", - "fork-tree 2.0.0", - "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-timer 3.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "merlin 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "num-bigint 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", - "num-rational 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", - "num-traits 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "parking_lot 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", - "pdqselect 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)", - "sc-block-builder 0.8.0", - "sc-client 0.8.0", - "sc-client-api 2.0.0", - "sc-consensus-epochs 0.8.0", - "sc-consensus-slots 0.8.0", - "sc-consensus-uncles 0.8.0", - "sc-executor 0.8.0", - "sc-keystore 2.0.0", - "sc-network 0.8.0", - "sc-network-test 0.8.0", - "sc-service 0.8.0", - "sc-telemetry 2.0.0", - "schnorrkel 0.8.5 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-api 2.0.0", - "sp-application-crypto 2.0.0", - "sp-block-builder 2.0.0", - "sp-blockchain 2.0.0", - "sp-consensus 0.8.0", - "sp-consensus-babe 0.8.0", - "sp-core 2.0.0", - "sp-inherents 2.0.0", - "sp-io 2.0.0", - "sp-keyring 2.0.0", - "sp-runtime 2.0.0", - "sp-timestamp 2.0.0", - "sp-version 2.0.0", - "substrate-test-runtime-client 2.0.0", - "tempfile 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio 0.1.22 (registry+https://github.com/rust-lang/crates.io-index)", + "derive_more", + "env_logger 0.7.1", + "fork-tree", + "futures 0.1.29", + "futures 0.3.4", + "futures-timer 3.0.2", + "log 0.4.8", + "merlin", + "num-bigint", + "num-rational", + "num-traits", + "parity-scale-codec", + "parking_lot 0.10.0", + "pdqselect", + "rand 0.7.3", + "sc-block-builder", + "sc-client", + "sc-client-api", + "sc-consensus-epochs", + "sc-consensus-slots", + "sc-consensus-uncles", + "sc-executor", + "sc-keystore", + "sc-network", + "sc-network-test", + "sc-service", + "sc-telemetry", + "schnorrkel", + "serde", + "sp-api", + "sp-application-crypto", + "sp-block-builder", + "sp-blockchain", + "sp-consensus", + "sp-consensus-babe", + "sp-core", + "sp-inherents", + "sp-io", + "sp-keyring", + "sp-runtime", + "sp-timestamp", + "sp-version", + "substrate-test-runtime-client", + "tempfile", + "tokio 0.1.22", ] [[package]] name = "sc-consensus-babe-rpc" version = "0.8.0" dependencies = [ - "derive_more 0.99.3 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "jsonrpc-core 14.0.5 (registry+https://github.com/rust-lang/crates.io-index)", - "jsonrpc-core-client 14.0.5 (registry+https://github.com/rust-lang/crates.io-index)", - "jsonrpc-derive 14.0.5 (registry+https://github.com/rust-lang/crates.io-index)", - "sc-consensus-babe 0.8.0", - "sc-consensus-epochs 0.8.0", - "sc-keystore 2.0.0", - "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-api 2.0.0", - "sp-application-crypto 2.0.0", - "sp-blockchain 2.0.0", - "sp-consensus 0.8.0", - "sp-consensus-babe 0.8.0", - "sp-core 2.0.0", - "sp-keyring 2.0.0", - "sp-runtime 2.0.0", - "substrate-test-runtime-client 2.0.0", - "tempfile 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "derive_more", + "futures 0.3.4", + "jsonrpc-core", + "jsonrpc-core-client", + "jsonrpc-derive", + "sc-consensus-babe", + "sc-consensus-epochs", + "sc-keystore", + "serde", + "sp-api", + "sp-application-crypto", + "sp-blockchain", + "sp-consensus", + "sp-consensus-babe", + "sp-core", + "sp-keyring", + "sp-runtime", + "substrate-test-runtime-client", + "tempfile", ] [[package]] name = "sc-consensus-epochs" version = "0.8.0" dependencies = [ - "fork-tree 2.0.0", - "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "parking_lot 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", - "sc-client-api 2.0.0", - "sp-blockchain 2.0.0", - "sp-runtime 2.0.0", + "fork-tree", + "parity-scale-codec", + "parking_lot 0.10.0", + "sc-client-api", + "sp-blockchain", + "sp-runtime", ] [[package]] name = "sc-consensus-manual-seal" version = "0.8.0" dependencies = [ - "derive_more 0.99.3 (registry+https://github.com/rust-lang/crates.io-index)", - "env_logger 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "jsonrpc-core 14.0.5 (registry+https://github.com/rust-lang/crates.io-index)", - "jsonrpc-core-client 14.0.5 (registry+https://github.com/rust-lang/crates.io-index)", - "jsonrpc-derive 14.0.5 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "parking_lot 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", - "sc-basic-authorship 0.8.0", - "sc-client 0.8.0", - "sc-client-api 2.0.0", - "sc-transaction-pool 2.0.0", - "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-blockchain 2.0.0", - "sp-consensus 0.8.0", - "sp-inherents 2.0.0", - "sp-runtime 2.0.0", - "sp-transaction-pool 2.0.0", - "substrate-test-runtime-client 2.0.0", - "substrate-test-runtime-transaction-pool 2.0.0", - "tempfile 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", + "derive_more", + "env_logger 0.7.1", + "futures 0.3.4", + "jsonrpc-core", + "jsonrpc-core-client", + "jsonrpc-derive", + "log 0.4.8", + "parking_lot 0.10.0", + "sc-basic-authorship", + "sc-client", + "sc-client-api", + "sc-transaction-pool", + "serde", + "sp-blockchain", + "sp-consensus", + "sp-inherents", + "sp-runtime", + "sp-transaction-pool", + "substrate-test-runtime-client", + "substrate-test-runtime-transaction-pool", + "tempfile", + "tokio 0.2.11", ] [[package]] name = "sc-consensus-pow" version = "0.8.0" dependencies = [ - "derive_more 0.99.3 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "sc-client-api 2.0.0", - "sp-api 2.0.0", - "sp-block-builder 2.0.0", - "sp-blockchain 2.0.0", - "sp-consensus 0.8.0", - "sp-consensus-pow 0.8.0", - "sp-core 2.0.0", - "sp-inherents 2.0.0", - "sp-runtime 2.0.0", - "sp-timestamp 2.0.0", + "derive_more", + "futures 0.3.4", + "log 0.4.8", + "parity-scale-codec", + "sc-client-api", + "sp-api", + "sp-block-builder", + "sp-blockchain", + "sp-consensus", + "sp-consensus-pow", + "sp-core", + "sp-inherents", + "sp-runtime", + "sp-timestamp", ] [[package]] name = "sc-consensus-slots" version = "0.8.0" dependencies = [ - "futures 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-timer 3.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "parking_lot 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", - "sc-client-api 2.0.0", - "sc-telemetry 2.0.0", - "sp-api 2.0.0", - "sp-blockchain 2.0.0", - "sp-consensus 0.8.0", - "sp-core 2.0.0", - "sp-inherents 2.0.0", - "sp-runtime 2.0.0", - "sp-state-machine 0.8.0", - "substrate-test-runtime-client 2.0.0", + "futures 0.3.4", + "futures-timer 3.0.2", + "log 0.4.8", + "parity-scale-codec", + "parking_lot 0.10.0", + "sc-client-api", + "sc-telemetry", + "sp-api", + "sp-blockchain", + "sp-consensus", + "sp-core", + "sp-inherents", + "sp-runtime", + "sp-state-machine", + "substrate-test-runtime-client", ] [[package]] name = "sc-consensus-uncles" version = "0.8.0" dependencies = [ - "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "sc-client-api 2.0.0", - "sp-authorship 2.0.0", - "sp-consensus 0.8.0", - "sp-core 2.0.0", - "sp-inherents 2.0.0", - "sp-runtime 2.0.0", + "log 0.4.8", + "sc-client-api", + "sp-authorship", + "sp-consensus", + "sp-core", + "sp-inherents", + "sp-runtime", ] [[package]] name = "sc-executor" version = "0.8.0" dependencies = [ - "assert_matches 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "derive_more 0.99.3 (registry+https://github.com/rust-lang/crates.io-index)", - "hex-literal 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "libsecp256k1 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-wasm 0.41.0 (registry+https://github.com/rust-lang/crates.io-index)", - "parking_lot 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", - "sc-executor-common 0.8.0", - "sc-executor-wasmi 0.8.0", - "sc-executor-wasmtime 0.8.0", - "sc-runtime-test 2.0.0", - "sp-core 2.0.0", - "sp-externalities 0.8.0", - "sp-io 2.0.0", - "sp-panic-handler 2.0.0", - "sp-runtime-interface 2.0.0", - "sp-serializer 2.0.0", - "sp-state-machine 0.8.0", - "sp-trie 2.0.0", - "sp-version 2.0.0", - "sp-wasm-interface 2.0.0", - "substrate-test-runtime 2.0.0", - "test-case 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", - "wabt 0.9.2 (registry+https://github.com/rust-lang/crates.io-index)", - "wasmi 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", + "assert_matches", + "derive_more", + "hex-literal", + "lazy_static", + "libsecp256k1", + "log 0.4.8", + "parity-scale-codec", + "parity-wasm 0.41.0", + "parking_lot 0.10.0", + "sc-executor-common", + "sc-executor-wasmi", + "sc-executor-wasmtime", + "sc-runtime-test", + "sp-core", + "sp-externalities", + "sp-io", + "sp-panic-handler", + "sp-runtime-interface", + "sp-serializer", + "sp-state-machine", + "sp-trie", + "sp-version", + "sp-wasm-interface", + "substrate-test-runtime", + "test-case", + "wabt", + "wasmi", ] [[package]] name = "sc-executor-common" version = "0.8.0" dependencies = [ - "derive_more 0.99.3 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-allocator 2.0.0", - "sp-core 2.0.0", - "sp-runtime-interface 2.0.0", - "sp-serializer 2.0.0", - "sp-wasm-interface 2.0.0", - "wasmi 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", + "derive_more", + "log 0.4.8", + "parity-scale-codec", + "sp-allocator", + "sp-core", + "sp-runtime-interface", + "sp-serializer", + "sp-wasm-interface", + "wasmi", ] [[package]] name = "sc-executor-wasmi" version = "0.8.0" dependencies = [ - "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-wasm 0.41.0 (registry+https://github.com/rust-lang/crates.io-index)", - "sc-executor-common 0.8.0", - "sp-allocator 2.0.0", - "sp-core 2.0.0", - "sp-runtime-interface 2.0.0", - "sp-wasm-interface 2.0.0", - "wasmi 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8", + "parity-scale-codec", + "parity-wasm 0.41.0", + "sc-executor-common", + "sp-allocator", + "sp-core", + "sp-runtime-interface", + "sp-wasm-interface", + "wasmi", ] [[package]] name = "sc-executor-wasmtime" version = "0.8.0" dependencies = [ - "assert_matches 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-wasm 0.41.0 (registry+https://github.com/rust-lang/crates.io-index)", - "sc-executor-common 0.8.0", - "sp-allocator 2.0.0", - "sp-core 2.0.0", - "sp-runtime-interface 2.0.0", - "sp-wasm-interface 2.0.0", - "wasmi 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", - "wasmtime 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", + "assert_matches", + "log 0.4.8", + "parity-scale-codec", + "parity-wasm 0.41.0", + "sc-executor-common", + "sp-allocator", + "sp-core", + "sp-runtime-interface", + "sp-wasm-interface", + "wasmi", + "wasmtime", ] [[package]] name = "sc-finality-grandpa" version = "0.8.0" dependencies = [ - "assert_matches 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "env_logger 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", - "finality-grandpa 0.11.1 (registry+https://github.com/rust-lang/crates.io-index)", - "fork-tree 2.0.0", - "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-timer 3.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "parking_lot 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", - "pin-project 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)", - "sc-client 0.8.0", - "sc-client-api 2.0.0", - "sc-keystore 2.0.0", - "sc-network 0.8.0", - "sc-network-gossip 0.8.0", - "sc-network-test 0.8.0", - "sc-telemetry 2.0.0", - "serde_json 1.0.48 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-api 2.0.0", - "sp-arithmetic 2.0.0", - "sp-blockchain 2.0.0", - "sp-consensus 0.8.0", - "sp-consensus-babe 0.8.0", - "sp-core 2.0.0", - "sp-finality-grandpa 2.0.0", - "sp-finality-tracker 2.0.0", - "sp-inherents 2.0.0", - "sp-keyring 2.0.0", - "sp-runtime 2.0.0", - "sp-state-machine 0.8.0", - "substrate-test-runtime-client 2.0.0", - "tempfile 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio 0.1.22 (registry+https://github.com/rust-lang/crates.io-index)", + "assert_matches", + "env_logger 0.7.1", + "finality-grandpa", + "fork-tree", + "futures 0.1.29", + "futures 0.3.4", + "futures-timer 3.0.2", + "log 0.4.8", + "parity-scale-codec", + "parking_lot 0.10.0", + "pin-project", + "rand 0.7.3", + "sc-client", + "sc-client-api", + "sc-keystore", + "sc-network", + "sc-network-gossip", + "sc-network-test", + "sc-telemetry", + "serde_json", + "sp-api", + "sp-arithmetic", + "sp-blockchain", + "sp-consensus", + "sp-consensus-babe", + "sp-core", + "sp-finality-grandpa", + "sp-finality-tracker", + "sp-inherents", + "sp-keyring", + "sp-runtime", + "sp-state-machine", + "substrate-test-runtime-client", + "tempfile", + "tokio 0.1.22", ] [[package]] name = "sc-informant" version = "0.8.0" dependencies = [ - "ansi_term 0.12.1 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-util-mem 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", - "sc-client-api 2.0.0", - "sc-network 0.8.0", - "sc-service 0.8.0", - "sp-blockchain 2.0.0", - "sp-runtime 2.0.0", - "wasm-timer 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", + "ansi_term 0.12.1", + "futures 0.3.4", + "log 0.4.8", + "parity-util-mem", + "sc-client-api", + "sc-network", + "sc-service", + "sp-blockchain", + "sp-runtime", + "wasm-timer", ] [[package]] name = "sc-keystore" version = "2.0.0" dependencies = [ - "derive_more 0.99.3 (registry+https://github.com/rust-lang/crates.io-index)", - "hex 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", - "parking_lot 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_json 1.0.48 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-application-crypto 2.0.0", - "sp-core 2.0.0", - "subtle 2.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "tempfile 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "derive_more", + "hex", + "parking_lot 0.10.0", + "rand 0.7.3", + "serde_json", + "sp-application-crypto", + "sp-core", + "subtle 2.2.2", + "tempfile", ] [[package]] name = "sc-network" version = "0.8.0" dependencies = [ - "assert_matches 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "async-std 1.5.0 (registry+https://github.com/rust-lang/crates.io-index)", - "bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "bytes 0.5.4 (registry+https://github.com/rust-lang/crates.io-index)", - "derive_more 0.99.3 (registry+https://github.com/rust-lang/crates.io-index)", - "either 1.5.3 (registry+https://github.com/rust-lang/crates.io-index)", - "env_logger 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", - "erased-serde 0.3.10 (registry+https://github.com/rust-lang/crates.io-index)", - "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", - "fork-tree 2.0.0", - "futures 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-timer 3.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "futures_codec 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "libp2p 0.16.1 (registry+https://github.com/rust-lang/crates.io-index)", - "linked-hash-map 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)", - "linked_hash_set 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "lru 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", - "nohash-hasher 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "parking_lot 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", - "prost 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", - "prost-build 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", - "quickcheck 0.9.2 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)", - "rustc-hex 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "sc-block-builder 0.8.0", - "sc-client 0.8.0", - "sc-client-api 2.0.0", - "sc-peerset 2.0.0", - "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_json 1.0.48 (registry+https://github.com/rust-lang/crates.io-index)", - "slog 2.5.2 (registry+https://github.com/rust-lang/crates.io-index)", - "slog_derive 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "smallvec 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-arithmetic 2.0.0", - "sp-blockchain 2.0.0", - "sp-consensus 0.8.0", - "sp-consensus-babe 0.8.0", - "sp-core 2.0.0", - "sp-keyring 2.0.0", - "sp-runtime 2.0.0", - "sp-test-primitives 2.0.0", - "substrate-test-client 2.0.0", - "substrate-test-runtime 2.0.0", - "substrate-test-runtime-client 2.0.0", - "tempfile 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "thiserror 1.0.11 (registry+https://github.com/rust-lang/crates.io-index)", - "unsigned-varint 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "void 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "wasm-timer 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", - "zeroize 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "assert_matches", + "async-std", + "bitflags", + "bytes 0.5.4", + "derive_more", + "either", + "env_logger 0.7.1", + "erased-serde", + "fnv", + "fork-tree", + "futures 0.3.4", + "futures-timer 3.0.2", + "futures_codec", + "libp2p", + "linked-hash-map", + "linked_hash_set", + "log 0.4.8", + "lru 0.4.3", + "nohash-hasher", + "parity-scale-codec", + "parking_lot 0.10.0", + "prost", + "prost-build", + "quickcheck", + "rand 0.7.3", + "rustc-hex", + "sc-block-builder", + "sc-client", + "sc-client-api", + "sc-peerset", + "serde", + "serde_json", + "slog", + "slog_derive", + "smallvec 0.6.13", + "sp-arithmetic", + "sp-blockchain", + "sp-consensus", + "sp-consensus-babe", + "sp-core", + "sp-keyring", + "sp-runtime", + "sp-test-primitives", + "substrate-test-client", + "substrate-test-runtime", + "substrate-test-runtime-client", + "tempfile", + "thiserror", + "unsigned-varint 0.3.1", + "void", + "wasm-timer", + "zeroize 1.1.0", ] [[package]] name = "sc-network-gossip" version = "0.8.0" dependencies = [ - "futures 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-timer 3.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "libp2p 0.16.1 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "lru 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)", - "parking_lot 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", - "sc-network 0.8.0", - "sp-runtime 2.0.0", - "wasm-timer 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.3.4", + "futures-timer 3.0.2", + "libp2p", + "log 0.4.8", + "lru 0.1.17", + "parking_lot 0.10.0", + "sc-network", + "sp-runtime", + "wasm-timer", ] [[package]] name = "sc-network-test" version = "0.8.0" dependencies = [ - "env_logger 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-timer 3.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "libp2p 0.16.1 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "parking_lot 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)", - "sc-block-builder 0.8.0", - "sc-client 0.8.0", - "sc-client-api 2.0.0", - "sc-network 0.8.0", - "sp-blockchain 2.0.0", - "sp-consensus 0.8.0", - "sp-consensus-babe 0.8.0", - "sp-core 2.0.0", - "sp-runtime 2.0.0", - "substrate-test-runtime 2.0.0", - "substrate-test-runtime-client 2.0.0", - "tempfile 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio 0.1.22 (registry+https://github.com/rust-lang/crates.io-index)", + "env_logger 0.7.1", + "futures 0.1.29", + "futures 0.3.4", + "futures-timer 3.0.2", + "libp2p", + "log 0.4.8", + "parking_lot 0.10.0", + "rand 0.7.3", + "sc-block-builder", + "sc-client", + "sc-client-api", + "sc-network", + "sp-blockchain", + "sp-consensus", + "sp-consensus-babe", + "sp-core", + "sp-runtime", + "substrate-test-runtime", + "substrate-test-runtime-client", + "tempfile", + "tokio 0.1.22", ] [[package]] name = "sc-offchain" version = "2.0.0" dependencies = [ - "bytes 0.5.4 (registry+https://github.com/rust-lang/crates.io-index)", - "env_logger 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", - "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-timer 3.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "hyper 0.13.2 (registry+https://github.com/rust-lang/crates.io-index)", - "hyper-rustls 0.19.1 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "num_cpus 1.12.0 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "parking_lot 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)", - "sc-client-api 2.0.0", - "sc-client-db 0.8.0", - "sc-keystore 2.0.0", - "sc-network 0.8.0", - "sc-transaction-pool 2.0.0", - "sp-api 2.0.0", - "sp-core 2.0.0", - "sp-offchain 2.0.0", - "sp-runtime 2.0.0", - "sp-transaction-pool 2.0.0", - "substrate-test-runtime-client 2.0.0", - "threadpool 1.7.1 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes 0.5.4", + "env_logger 0.7.1", + "fnv", + "futures 0.3.4", + "futures-timer 3.0.2", + "hyper 0.13.2", + "hyper-rustls", + "log 0.4.8", + "num_cpus", + "parity-scale-codec", + "parking_lot 0.10.0", + "rand 0.7.3", + "sc-client-api", + "sc-client-db", + "sc-keystore", + "sc-network", + "sc-transaction-pool", + "sp-api", + "sp-core", + "sp-offchain", + "sp-runtime", + "sp-transaction-pool", + "substrate-test-runtime-client", + "threadpool", + "tokio 0.2.11", ] [[package]] name = "sc-peerset" version = "2.0.0" dependencies = [ - "futures 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "libp2p 0.16.1 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_json 1.0.48 (registry+https://github.com/rust-lang/crates.io-index)", - "wasm-timer 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.3.4", + "libp2p", + "log 0.4.8", + "rand 0.7.3", + "serde_json", + "wasm-timer", ] [[package]] name = "sc-rpc" version = "2.0.0" dependencies = [ - "assert_matches 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "hash-db 0.15.2 (registry+https://github.com/rust-lang/crates.io-index)", - "jsonrpc-core 14.0.5 (registry+https://github.com/rust-lang/crates.io-index)", - "jsonrpc-pubsub 14.0.6 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "parking_lot 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", - "rustc-hex 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "sc-client 0.8.0", - "sc-client-api 2.0.0", - "sc-executor 0.8.0", - "sc-keystore 2.0.0", - "sc-network 0.8.0", - "sc-rpc-api 0.8.0", - "sc-transaction-pool 2.0.0", - "serde_json 1.0.48 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-api 2.0.0", - "sp-blockchain 2.0.0", - "sp-core 2.0.0", - "sp-io 2.0.0", - "sp-offchain 2.0.0", - "sp-rpc 2.0.0", - "sp-runtime 2.0.0", - "sp-session 2.0.0", - "sp-state-machine 0.8.0", - "sp-transaction-pool 2.0.0", - "sp-version 2.0.0", - "substrate-test-runtime-client 2.0.0", - "tokio 0.1.22 (registry+https://github.com/rust-lang/crates.io-index)", + "assert_matches", + "futures 0.1.29", + "futures 0.3.4", + "hash-db", + "jsonrpc-core", + "jsonrpc-pubsub", + "log 0.4.8", + "parity-scale-codec", + "parking_lot 0.10.0", + "rustc-hex", + "sc-client", + "sc-client-api", + "sc-executor", + "sc-keystore", + "sc-network", + "sc-rpc-api", + "sc-transaction-pool", + "serde_json", + "sp-api", + "sp-blockchain", + "sp-core", + "sp-io", + "sp-offchain", + "sp-rpc", + "sp-runtime", + "sp-session", + "sp-state-machine", + "sp-transaction-pool", + "sp-version", + "substrate-test-runtime-client", + "tokio 0.1.22", ] [[package]] name = "sc-rpc-api" version = "0.8.0" dependencies = [ - "derive_more 0.99.3 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "jsonrpc-core 14.0.5 (registry+https://github.com/rust-lang/crates.io-index)", - "jsonrpc-core-client 14.0.5 (registry+https://github.com/rust-lang/crates.io-index)", - "jsonrpc-derive 14.0.5 (registry+https://github.com/rust-lang/crates.io-index)", - "jsonrpc-pubsub 14.0.6 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "parking_lot 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_json 1.0.48 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-core 2.0.0", - "sp-rpc 2.0.0", - "sp-runtime 2.0.0", - "sp-transaction-pool 2.0.0", - "sp-version 2.0.0", + "derive_more", + "futures 0.3.4", + "jsonrpc-core", + "jsonrpc-core-client", + "jsonrpc-derive", + "jsonrpc-pubsub", + "log 0.4.8", + "parity-scale-codec", + "parking_lot 0.10.0", + "serde", + "serde_json", + "sp-core", + "sp-rpc", + "sp-runtime", + "sp-transaction-pool", + "sp-version", ] [[package]] name = "sc-rpc-server" version = "2.0.0" dependencies = [ - "jsonrpc-core 14.0.5 (registry+https://github.com/rust-lang/crates.io-index)", - "jsonrpc-http-server 14.0.6 (registry+https://github.com/rust-lang/crates.io-index)", - "jsonrpc-pubsub 14.0.6 (registry+https://github.com/rust-lang/crates.io-index)", - "jsonrpc-ws-server 14.0.6 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_json 1.0.48 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-runtime 2.0.0", + "jsonrpc-core", + "jsonrpc-http-server", + "jsonrpc-pubsub", + "jsonrpc-ws-server", + "log 0.4.8", + "serde", + "serde_json", + "sp-runtime", ] [[package]] name = "sc-runtime-test" version = "2.0.0" dependencies = [ - "sp-allocator 2.0.0", - "sp-core 2.0.0", - "sp-io 2.0.0", - "sp-runtime 2.0.0", - "sp-sandbox 0.8.0", - "sp-std 2.0.0", - "substrate-wasm-builder-runner 1.0.5", + "sp-allocator", + "sp-core", + "sp-io", + "sp-runtime", + "sp-sandbox", + "sp-std", + "substrate-wasm-builder-runner", ] [[package]] name = "sc-service" version = "0.8.0" dependencies = [ - "derive_more 0.99.3 (registry+https://github.com/rust-lang/crates.io-index)", - "exit-future 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-diagnose 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-timer 3.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-multiaddr 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-util-mem 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", - "parking_lot 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", - "prometheus-exporter 0.8.0", - "sc-chain-spec 2.0.0", - "sc-client 0.8.0", - "sc-client-api 2.0.0", - "sc-client-db 0.8.0", - "sc-executor 0.8.0", - "sc-finality-grandpa 0.8.0", - "sc-keystore 2.0.0", - "sc-network 0.8.0", - "sc-offchain 2.0.0", - "sc-rpc 2.0.0", - "sc-rpc-server 2.0.0", - "sc-telemetry 2.0.0", - "sc-tracing 2.0.0", - "sc-transaction-pool 2.0.0", - "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_json 1.0.48 (registry+https://github.com/rust-lang/crates.io-index)", - "slog 2.5.2 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-api 2.0.0", - "sp-application-crypto 2.0.0", - "sp-blockchain 2.0.0", - "sp-consensus 0.8.0", - "sp-consensus-babe 0.8.0", - "sp-core 2.0.0", - "sp-finality-grandpa 2.0.0", - "sp-io 2.0.0", - "sp-runtime 2.0.0", - "sp-session 2.0.0", - "sp-transaction-pool 2.0.0", - "substrate-test-runtime-client 2.0.0", - "sysinfo 0.9.6 (registry+https://github.com/rust-lang/crates.io-index)", - "target_info 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", - "tracing 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", - "wasm-timer 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", + "derive_more", + "exit-future", + "futures 0.1.29", + "futures 0.3.4", + "futures-diagnose", + "futures-timer 3.0.2", + "lazy_static", + "log 0.4.8", + "parity-multiaddr 0.5.0", + "parity-scale-codec", + "parity-util-mem", + "parking_lot 0.10.0", + "prometheus-exporter", + "sc-chain-spec", + "sc-client", + "sc-client-api", + "sc-client-db", + "sc-executor", + "sc-finality-grandpa", + "sc-keystore", + "sc-network", + "sc-offchain", + "sc-rpc", + "sc-rpc-server", + "sc-telemetry", + "sc-tracing", + "sc-transaction-pool", + "serde", + "serde_json", + "slog", + "sp-api", + "sp-application-crypto", + "sp-blockchain", + "sp-consensus", + "sp-consensus-babe", + "sp-core", + "sp-finality-grandpa", + "sp-io", + "sp-runtime", + "sp-session", + "sp-transaction-pool", + "substrate-test-runtime-client", + "sysinfo", + "target_info", + "tokio 0.2.11", + "tracing", + "wasm-timer", ] [[package]] name = "sc-service-test" version = "2.0.0" dependencies = [ - "env_logger 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", - "fdlimit 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "sc-client 0.8.0", - "sc-network 0.8.0", - "sc-service 0.8.0", - "sp-consensus 0.8.0", - "sp-core 2.0.0", - "sp-runtime 2.0.0", - "sp-transaction-pool 2.0.0", - "tempfile 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio 0.1.22 (registry+https://github.com/rust-lang/crates.io-index)", + "env_logger 0.7.1", + "fdlimit", + "futures 0.1.29", + "futures 0.3.4", + "log 0.4.8", + "sc-client", + "sc-network", + "sc-service", + "sp-consensus", + "sp-core", + "sp-runtime", + "sp-transaction-pool", + "tempfile", + "tokio 0.1.22", ] [[package]] name = "sc-state-db" version = "0.8.0" dependencies = [ - "env_logger 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "parking_lot 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-core 2.0.0", + "env_logger 0.7.1", + "log 0.4.8", + "parity-scale-codec", + "parking_lot 0.10.0", + "sp-core", ] [[package]] name = "sc-telemetry" version = "2.0.0" dependencies = [ - "bytes 0.5.4 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-timer 3.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "libp2p 0.16.1 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "parking_lot 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", - "pin-project 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", - "slog 2.5.2 (registry+https://github.com/rust-lang/crates.io-index)", - "slog-json 2.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "slog-scope 4.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "take_mut 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "void 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "wasm-timer 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes 0.5.4", + "futures 0.3.4", + "futures-timer 3.0.2", + "libp2p", + "log 0.4.8", + "parking_lot 0.10.0", + "pin-project", + "rand 0.7.3", + "serde", + "slog", + "slog-json", + "slog-scope", + "take_mut", + "void", + "wasm-timer", ] [[package]] name = "sc-tracing" version = "2.0.0" dependencies = [ - "erased-serde 0.3.10 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "parking_lot 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", - "sc-telemetry 2.0.0", - "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_json 1.0.48 (registry+https://github.com/rust-lang/crates.io-index)", - "slog 2.5.2 (registry+https://github.com/rust-lang/crates.io-index)", - "tracing 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", - "tracing-core 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", + "erased-serde", + "log 0.4.8", + "parking_lot 0.10.0", + "sc-telemetry", + "serde", + "serde_json", + "slog", + "tracing", + "tracing-core", ] [[package]] name = "sc-transaction-graph" version = "2.0.0" dependencies = [ - "assert_matches 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "criterion 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "derive_more 0.99.3 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "linked-hash-map 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-util-mem 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", - "parking_lot 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-blockchain 2.0.0", - "sp-core 2.0.0", - "sp-runtime 2.0.0", - "sp-transaction-pool 2.0.0", - "substrate-test-runtime 2.0.0", - "wasm-timer 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", + "assert_matches", + "criterion 0.3.1", + "derive_more", + "futures 0.3.4", + "linked-hash-map", + "log 0.4.8", + "parity-scale-codec", + "parity-util-mem", + "parking_lot 0.10.0", + "serde", + "sp-blockchain", + "sp-core", + "sp-runtime", + "sp-transaction-pool", + "substrate-test-runtime", + "wasm-timer", ] [[package]] name = "sc-transaction-pool" version = "2.0.0" dependencies = [ - "derive_more 0.99.3 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-diagnose 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-timer 2.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-util-mem 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", - "parking_lot 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", - "sc-client-api 2.0.0", - "sc-transaction-graph 2.0.0", - "sp-api 2.0.0", - "sp-blockchain 2.0.0", - "sp-core 2.0.0", - "sp-keyring 2.0.0", - "sp-runtime 2.0.0", - "sp-transaction-pool 2.0.0", - "substrate-test-runtime-client 2.0.0", - "substrate-test-runtime-transaction-pool 2.0.0", - "wasm-timer 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", + "derive_more", + "futures 0.3.4", + "futures-diagnose", + "futures-timer 2.0.2", + "log 0.4.8", + "parity-scale-codec", + "parity-util-mem", + "parking_lot 0.10.0", + "sc-client-api", + "sc-transaction-graph", + "sp-api", + "sp-blockchain", + "sp-core", + "sp-keyring", + "sp-runtime", + "sp-transaction-pool", + "substrate-test-runtime-client", + "substrate-test-runtime-transaction-pool", + "wasm-timer", ] [[package]] name = "schannel" version = "0.1.17" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "507a9e6e8ffe0a4e0ebb9a10293e62fdf7657c06f1b8bb07a8fcf697d2abf295" dependencies = [ - "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static", + "winapi 0.3.8", ] [[package]] name = "schnorrkel" version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eacd8381b3c37840c9c9f40472af529e49975bdcbc24f83c31059fd6539023d3" dependencies = [ - "curve25519-dalek 1.2.3 (registry+https://github.com/rust-lang/crates.io-index)", - "failure 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "merlin 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_os 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", - "sha2 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", - "subtle 2.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "zeroize 0.9.3 (registry+https://github.com/rust-lang/crates.io-index)", + "curve25519-dalek 1.2.3", + "failure", + "merlin", + "rand 0.6.5", + "rand_core 0.4.2", + "rand_os", + "sha2", + "subtle 2.2.2", + "zeroize 0.9.3", ] [[package]] name = "scopeguard" version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" [[package]] name = "scroll" version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "abb2332cb595d33f7edd5700f4cbf94892e680c7f0ae56adab58a35190b66cb1" dependencies = [ - "scroll_derive 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)", + "scroll_derive", ] [[package]] name = "scroll_derive" version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8584eea9b9ff42825b46faf46a8c24d2cff13ec152fa2a50df788b87c07ee28" dependencies = [ - "proc-macro2 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 1.0.14 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 1.0.8", + "quote 1.0.2", + "syn", ] [[package]] name = "sct" version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3042af939fca8c3453b7af0f1c66e533a15a86169e39de2657310ade8f98d3c" dependencies = [ - "ring 0.16.11 (registry+https://github.com/rust-lang/crates.io-index)", - "untrusted 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", + "ring", + "untrusted", ] [[package]] name = "security-framework" version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ef2429d7cefe5fd28bd1d2ed41c944547d4ff84776f5935b456da44593a16df" dependencies = [ - "core-foundation 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)", - "core-foundation-sys 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", - "security-framework-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", + "core-foundation", + "core-foundation-sys", + "libc", + "security-framework-sys", ] [[package]] name = "security-framework-sys" version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e31493fc37615debb8c5090a7aeb4a9730bc61e77ab10b9af59f1a202284f895" dependencies = [ - "core-foundation-sys 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", + "core-foundation-sys", ] [[package]] name = "semver" version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a3186ec9e65071a2095434b1f5bb24838d4e8e130f584c790f6033c79943537" dependencies = [ - "semver-parser 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", + "semver-parser", ] [[package]] name = "semver" version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403" dependencies = [ - "semver-parser 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", + "semver-parser", + "serde", ] [[package]] name = "semver-parser" version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" [[package]] name = "send_wrapper" version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a0eddf2e8f50ced781f288c19f18621fa72a3779e3cb58dbf23b07469b0abeb4" [[package]] name = "send_wrapper" version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "686ef91cf020ad8d4aca9a7047641fd6add626b7b89e14546c2b6a76781cf822" [[package]] name = "send_wrapper" version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f638d531eccd6e23b980caf34876660d38e265409d8e99b397ab71eb3612fad0" [[package]] name = "serde" version = "1.0.104" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "414115f25f818d7dfccec8ee535d76949ae78584fc4f79a6f45a904bf8ab4449" dependencies = [ - "serde_derive 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive", ] [[package]] name = "serde_derive" version = "1.0.104" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "128f9e303a5a29922045a830221b8f78ec74a5f544944f3d5984f8ec3895ef64" dependencies = [ - "proc-macro2 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 1.0.14 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 1.0.8", + "quote 1.0.2", + "syn", ] [[package]] name = "serde_json" version = "1.0.48" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9371ade75d4c2d6cb154141b9752cf3781ec9c05e0e5cf35060e1e70ee7b9c25" dependencies = [ - "itoa 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", - "ryu 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", + "itoa", + "ryu", + "serde", ] [[package]] name = "sha-1" version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7d94d0bede923b3cea61f3f1ff57ff8cdfd77b400fb8f9998949e0cf04163df" dependencies = [ - "block-buffer 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)", - "digest 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", - "fake-simd 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "opaque-debug 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", + "block-buffer", + "digest", + "fake-simd", + "opaque-debug", ] [[package]] name = "sha1" version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2579985fda508104f7587689507983eadd6a6e84dd35d6d115361f530916fa0d" [[package]] name = "sha2" version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "27044adfd2e1f077f649f59deb9490d3941d674002f7d062870a60ebe9bd47a0" dependencies = [ - "block-buffer 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)", - "digest 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", - "fake-simd 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "opaque-debug 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", + "block-buffer", + "digest", + "fake-simd", + "opaque-debug", ] [[package]] name = "sha3" version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd26bc0e7a2e3a7c959bc494caf58b72ee0c71d67704e9520f736ca7e4853ecf" dependencies = [ - "block-buffer 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)", - "byte-tools 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "digest 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", - "keccak 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "opaque-debug 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", + "block-buffer", + "byte-tools", + "digest", + "keccak", + "opaque-debug", ] [[package]] name = "shell32-sys" version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ee04b46101f57121c9da2b151988283b6beb79b34f5bb29a58ee48cb695122c" dependencies = [ - "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.2.8", + "winapi-build", ] [[package]] name = "shlex" version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7fdf1b9db47230893d76faad238fd6097fd6d6a9245cd7a4d90dbd639536bbd2" [[package]] name = "signal-hook-registry" version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94f478ede9f64724c5d173d7bb56099ec3e2d9fc2774aac65d34b8b890405f41" dependencies = [ - "arc-swap 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", + "arc-swap", + "libc", ] [[package]] name = "slab" version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c111b5bd5695e56cffe5129854aa230b39c93a305372fdbb2668ca2394eea9f8" [[package]] name = "slog" version = "2.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1cc9c640a4adbfbcc11ffb95efe5aa7af7309e002adab54b185507dbf2377b99" dependencies = [ - "erased-serde 0.3.10 (registry+https://github.com/rust-lang/crates.io-index)", + "erased-serde", ] [[package]] name = "slog-json" version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ddc0d2aff1f8f325ef660d9a0eb6e6dcd20b30b3f581a5897f58bf42d061c37a" dependencies = [ - "chrono 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", - "erased-serde 0.3.10 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_json 1.0.48 (registry+https://github.com/rust-lang/crates.io-index)", - "slog 2.5.2 (registry+https://github.com/rust-lang/crates.io-index)", + "chrono", + "erased-serde", + "serde", + "serde_json", + "slog", ] [[package]] name = "slog-scope" version = "4.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c44c89dd8b0ae4537d1ae318353eaf7840b4869c536e31c41e963d1ea523ee6" dependencies = [ - "arc-swap 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "slog 2.5.2 (registry+https://github.com/rust-lang/crates.io-index)", + "arc-swap", + "lazy_static", + "slog", ] [[package]] name = "slog_derive" version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a945ec7f7ce853e89ffa36be1e27dce9a43e82ff9093bf3461c30d5da74ed11b" dependencies = [ - "proc-macro2 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 1.0.14 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 1.0.8", + "quote 1.0.2", + "syn", ] [[package]] name = "smallvec" version = "0.6.13" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7b0758c52e15a8b5e3691eae6cc559f08eee9406e548a4477ba4e67770a82b6" dependencies = [ - "maybe-uninit 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "maybe-uninit", ] [[package]] name = "smallvec" version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c2fb2ec9bcd216a5b0d0ccf31ab17b5ed1d627960edff65bbe95d3ce221cefc" [[package]] name = "snow" version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "afb767eee7d257ba202f0b9b08673bc13b22281632ef45267b19f13100accd2f" dependencies = [ - "arrayref 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", - "blake2-rfc 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)", - "chacha20-poly1305-aead 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_core 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", - "ring 0.16.11 (registry+https://github.com/rust-lang/crates.io-index)", - "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", - "sha2 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", - "subtle 2.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "x25519-dalek 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)", + "arrayref", + "blake2-rfc", + "chacha20-poly1305-aead", + "rand 0.7.3", + "rand_core 0.5.1", + "ring", + "rustc_version", + "sha2", + "subtle 2.2.2", + "x25519-dalek 0.6.0", ] [[package]] name = "soketto" version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c9dab3f95c9ebdf3a88268c19af668f637a3c5039c2c56ff2d40b1b2d64a25b" dependencies = [ - "base64 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", - "bytes 0.5.4 (registry+https://github.com/rust-lang/crates.io-index)", - "flate2 1.0.13 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "http 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "httparse 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)", - "sha1 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)", - "smallvec 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "static_assertions 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "thiserror 1.0.11 (registry+https://github.com/rust-lang/crates.io-index)", + "base64 0.11.0", + "bytes 0.5.4", + "flate2", + "futures 0.3.4", + "http 0.2.0", + "httparse", + "log 0.4.8", + "rand 0.7.3", + "sha1", + "smallvec 1.2.0", + "static_assertions", + "thiserror", ] [[package]] name = "sourcefile" version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4bf77cb82ba8453b42b6ae1d692e4cdc92f9a47beaf89a847c8be83f4e328ad3" [[package]] name = "sp-allocator" version = "2.0.0" dependencies = [ - "derive_more 0.99.3 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-core 2.0.0", - "sp-std 2.0.0", - "sp-wasm-interface 2.0.0", + "derive_more", + "log 0.4.8", + "sp-core", + "sp-std", + "sp-wasm-interface", ] [[package]] name = "sp-api" version = "2.0.0" dependencies = [ - "hash-db 0.15.2 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-api-proc-macro 2.0.0", - "sp-core 2.0.0", - "sp-runtime 2.0.0", - "sp-state-machine 0.8.0", - "sp-std 2.0.0", - "sp-test-primitives 2.0.0", - "sp-version 2.0.0", + "hash-db", + "parity-scale-codec", + "sp-api-proc-macro", + "sp-core", + "sp-runtime", + "sp-state-machine", + "sp-std", + "sp-test-primitives", + "sp-version", ] [[package]] name = "sp-api-proc-macro" version = "2.0.0" dependencies = [ - "blake2-rfc 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)", - "proc-macro-crate 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", - "proc-macro2 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 1.0.14 (registry+https://github.com/rust-lang/crates.io-index)", + "blake2-rfc", + "proc-macro-crate", + "proc-macro2 1.0.8", + "quote 1.0.2", + "syn", ] [[package]] name = "sp-api-test" version = "2.0.0" dependencies = [ - "criterion 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "rustversion 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-api 2.0.0", - "sp-blockchain 2.0.0", - "sp-consensus 0.8.0", - "sp-runtime 2.0.0", - "sp-state-machine 0.8.0", - "sp-version 2.0.0", - "substrate-test-runtime-client 2.0.0", - "trybuild 1.0.22 (registry+https://github.com/rust-lang/crates.io-index)", + "criterion 0.3.1", + "parity-scale-codec", + "rustversion", + "sp-api", + "sp-blockchain", + "sp-consensus", + "sp-runtime", + "sp-state-machine", + "sp-version", + "substrate-test-runtime-client", + "trybuild", ] [[package]] name = "sp-application-crypto" version = "2.0.0" dependencies = [ - "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-core 2.0.0", - "sp-io 2.0.0", - "sp-std 2.0.0", + "parity-scale-codec", + "serde", + "sp-core", + "sp-io", + "sp-std", ] [[package]] name = "sp-application-crypto-test" version = "2.0.0" dependencies = [ - "sp-api 2.0.0", - "sp-application-crypto 2.0.0", - "sp-core 2.0.0", - "sp-runtime 2.0.0", - "substrate-test-runtime-client 2.0.0", + "sp-api", + "sp-application-crypto", + "sp-core", + "sp-runtime", + "substrate-test-runtime-client", ] [[package]] name = "sp-arithmetic" version = "2.0.0" dependencies = [ - "criterion 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "integer-sqrt 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", - "num-traits 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "primitive-types 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-debug-derive 2.0.0", - "sp-std 2.0.0", + "criterion 0.3.1", + "integer-sqrt", + "num-traits", + "parity-scale-codec", + "primitive-types", + "rand 0.7.3", + "serde", + "sp-debug-derive", + "sp-std", ] [[package]] name = "sp-authority-discovery" version = "2.0.0" dependencies = [ - "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-api 2.0.0", - "sp-application-crypto 2.0.0", - "sp-runtime 2.0.0", - "sp-std 2.0.0", + "parity-scale-codec", + "sp-api", + "sp-application-crypto", + "sp-runtime", + "sp-std", ] [[package]] name = "sp-authorship" version = "2.0.0" dependencies = [ - "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-inherents 2.0.0", - "sp-runtime 2.0.0", - "sp-std 2.0.0", + "parity-scale-codec", + "sp-inherents", + "sp-runtime", + "sp-std", ] [[package]] name = "sp-block-builder" version = "2.0.0" dependencies = [ - "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-api 2.0.0", - "sp-inherents 2.0.0", - "sp-runtime 2.0.0", - "sp-std 2.0.0", + "parity-scale-codec", + "sp-api", + "sp-inherents", + "sp-runtime", + "sp-std", ] [[package]] name = "sp-blockchain" version = "2.0.0" dependencies = [ - "derive_more 0.99.3 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "lru 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "parking_lot 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-block-builder 2.0.0", - "sp-consensus 0.8.0", - "sp-runtime 2.0.0", - "sp-state-machine 0.8.0", + "derive_more", + "log 0.4.8", + "lru 0.4.3", + "parity-scale-codec", + "parking_lot 0.10.0", + "sp-block-builder", + "sp-consensus", + "sp-runtime", + "sp-state-machine", ] [[package]] name = "sp-consensus" version = "0.8.0" dependencies = [ - "derive_more 0.99.3 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-diagnose 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-timer 3.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "libp2p 0.16.1 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "parking_lot 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-core 2.0.0", - "sp-inherents 2.0.0", - "sp-runtime 2.0.0", - "sp-state-machine 0.8.0", - "sp-std 2.0.0", - "sp-test-primitives 2.0.0", - "sp-version 2.0.0", + "derive_more", + "futures 0.3.4", + "futures-diagnose", + "futures-timer 3.0.2", + "libp2p", + "log 0.4.8", + "parity-scale-codec", + "parking_lot 0.10.0", + "serde", + "sp-core", + "sp-inherents", + "sp-runtime", + "sp-state-machine", + "sp-std", + "sp-test-primitives", + "sp-version", ] [[package]] name = "sp-consensus-aura" version = "0.8.0" dependencies = [ - "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-api 2.0.0", - "sp-application-crypto 2.0.0", - "sp-inherents 2.0.0", - "sp-runtime 2.0.0", - "sp-std 2.0.0", - "sp-timestamp 2.0.0", + "parity-scale-codec", + "sp-api", + "sp-application-crypto", + "sp-inherents", + "sp-runtime", + "sp-std", + "sp-timestamp", ] [[package]] name = "sp-consensus-babe" version = "0.8.0" dependencies = [ - "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "schnorrkel 0.8.5 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-api 2.0.0", - "sp-application-crypto 2.0.0", - "sp-consensus 0.8.0", - "sp-inherents 2.0.0", - "sp-runtime 2.0.0", - "sp-std 2.0.0", - "sp-timestamp 2.0.0", + "parity-scale-codec", + "schnorrkel", + "sp-api", + "sp-application-crypto", + "sp-consensus", + "sp-inherents", + "sp-runtime", + "sp-std", + "sp-timestamp", ] [[package]] name = "sp-consensus-pow" version = "0.8.0" dependencies = [ - "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-api 2.0.0", - "sp-core 2.0.0", - "sp-runtime 2.0.0", - "sp-std 2.0.0", + "parity-scale-codec", + "sp-api", + "sp-core", + "sp-runtime", + "sp-std", ] [[package]] name = "sp-core" version = "2.0.0" dependencies = [ - "base58 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "blake2-rfc 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)", - "byteorder 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "criterion 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", - "ed25519-dalek 1.0.0-pre.3 (registry+https://github.com/rust-lang/crates.io-index)", - "hash-db 0.15.2 (registry+https://github.com/rust-lang/crates.io-index)", - "hash256-std-hasher 0.15.2 (registry+https://github.com/rust-lang/crates.io-index)", - "hex 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", - "hex-literal 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "impl-serde 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "libsecp256k1 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "num-traits 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-util-mem 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", - "parking_lot 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", - "pretty_assertions 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", - "primitive-types 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)", - "regex 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "rustc-hex 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "schnorrkel 0.8.5 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_json 1.0.48 (registry+https://github.com/rust-lang/crates.io-index)", - "sha2 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-debug-derive 2.0.0", - "sp-externalities 0.8.0", - "sp-runtime-interface 2.0.0", - "sp-serializer 2.0.0", - "sp-std 2.0.0", - "sp-storage 2.0.0", - "substrate-bip39 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "tiny-bip39 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", - "tiny-keccak 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)", - "twox-hash 1.5.0 (registry+https://github.com/rust-lang/crates.io-index)", - "wasmi 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", - "zeroize 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "base58", + "blake2-rfc", + "byteorder 1.3.4", + "criterion 0.2.11", + "ed25519-dalek", + "hash-db", + "hash256-std-hasher", + "hex", + "hex-literal", + "impl-serde 0.3.0", + "lazy_static", + "libsecp256k1", + "log 0.4.8", + "num-traits", + "parity-scale-codec", + "parity-util-mem", + "parking_lot 0.10.0", + "pretty_assertions", + "primitive-types", + "rand 0.7.3", + "regex", + "rustc-hex", + "schnorrkel", + "serde", + "serde_json", + "sha2", + "sp-debug-derive", + "sp-externalities", + "sp-runtime-interface", + "sp-serializer", + "sp-std", + "sp-storage", + "substrate-bip39", + "tiny-bip39", + "tiny-keccak 2.0.1", + "twox-hash", + "wasmi", + "zeroize 1.1.0", ] [[package]] name = "sp-debug-derive" version = "2.0.0" dependencies = [ - "proc-macro2 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 1.0.14 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 1.0.8", + "quote 1.0.2", + "syn", ] [[package]] name = "sp-externalities" version = "0.8.0" dependencies = [ - "environmental 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-std 2.0.0", - "sp-storage 2.0.0", + "environmental", + "sp-std", + "sp-storage", ] [[package]] name = "sp-finality-grandpa" version = "2.0.0" dependencies = [ - "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-api 2.0.0", - "sp-application-crypto 2.0.0", - "sp-runtime 2.0.0", - "sp-std 2.0.0", + "parity-scale-codec", + "serde", + "sp-api", + "sp-application-crypto", + "sp-runtime", + "sp-std", ] [[package]] name = "sp-finality-tracker" version = "2.0.0" dependencies = [ - "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-inherents 2.0.0", - "sp-std 2.0.0", + "parity-scale-codec", + "sp-inherents", + "sp-std", ] [[package]] name = "sp-inherents" version = "2.0.0" dependencies = [ - "derive_more 0.99.3 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "parking_lot 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-core 2.0.0", - "sp-std 2.0.0", + "derive_more", + "parity-scale-codec", + "parking_lot 0.10.0", + "sp-core", + "sp-std", ] [[package]] name = "sp-io" version = "2.0.0" dependencies = [ - "hash-db 0.15.2 (registry+https://github.com/rust-lang/crates.io-index)", - "libsecp256k1 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-core 2.0.0", - "sp-externalities 0.8.0", - "sp-runtime-interface 2.0.0", - "sp-state-machine 0.8.0", - "sp-std 2.0.0", - "sp-trie 2.0.0", - "sp-wasm-interface 2.0.0", + "hash-db", + "libsecp256k1", + "log 0.4.8", + "parity-scale-codec", + "sp-core", + "sp-externalities", + "sp-runtime-interface", + "sp-state-machine", + "sp-std", + "sp-trie", + "sp-wasm-interface", ] [[package]] name = "sp-keyring" version = "2.0.0" dependencies = [ - "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-core 2.0.0", - "sp-runtime 2.0.0", - "strum 0.16.0 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static", + "sp-core", + "sp-runtime", + "strum", ] [[package]] name = "sp-offchain" version = "2.0.0" dependencies = [ - "sp-api 2.0.0", - "sp-runtime 2.0.0", + "sp-api", + "sp-runtime", ] [[package]] name = "sp-panic-handler" version = "2.0.0" dependencies = [ - "backtrace 0.3.44 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "backtrace", + "log 0.4.8", ] [[package]] name = "sp-phragmen" version = "2.0.0" dependencies = [ - "rand 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-io 2.0.0", - "sp-runtime 2.0.0", - "sp-std 2.0.0", - "substrate-test-utils 2.0.0", + "rand 0.7.3", + "serde", + "sp-io", + "sp-runtime", + "sp-std", + "substrate-test-utils", ] [[package]] name = "sp-rpc" version = "2.0.0" dependencies = [ - "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_json 1.0.48 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-core 2.0.0", + "serde", + "serde_json", + "sp-core", ] [[package]] name = "sp-runtime" version = "2.0.0" dependencies = [ - "impl-trait-for-tuples 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-util-mem 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", - "paste 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_json 1.0.48 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-application-crypto 2.0.0", - "sp-arithmetic 2.0.0", - "sp-core 2.0.0", - "sp-inherents 2.0.0", - "sp-io 2.0.0", - "sp-std 2.0.0", + "impl-trait-for-tuples", + "log 0.4.8", + "parity-scale-codec", + "parity-util-mem", + "paste", + "rand 0.7.3", + "serde", + "serde_json", + "sp-application-crypto", + "sp-arithmetic", + "sp-core", + "sp-inherents", + "sp-io", + "sp-std", ] [[package]] name = "sp-runtime-interface" version = "2.0.0" dependencies = [ - "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "primitive-types 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", - "rustversion 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-core 2.0.0", - "sp-externalities 0.8.0", - "sp-io 2.0.0", - "sp-runtime-interface-proc-macro 2.0.0", - "sp-runtime-interface-test-wasm 2.0.0", - "sp-state-machine 0.8.0", - "sp-std 2.0.0", - "sp-wasm-interface 2.0.0", - "static_assertions 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "trybuild 1.0.22 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-scale-codec", + "primitive-types", + "rustversion", + "sp-core", + "sp-externalities", + "sp-io", + "sp-runtime-interface-proc-macro", + "sp-runtime-interface-test-wasm", + "sp-state-machine", + "sp-std", + "sp-wasm-interface", + "static_assertions", + "trybuild", ] [[package]] name = "sp-runtime-interface-proc-macro" version = "2.0.0" dependencies = [ - "Inflector 0.11.4 (registry+https://github.com/rust-lang/crates.io-index)", - "proc-macro-crate 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", - "proc-macro2 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 1.0.14 (registry+https://github.com/rust-lang/crates.io-index)", + "Inflector", + "proc-macro-crate", + "proc-macro2 1.0.8", + "quote 1.0.2", + "syn", ] [[package]] name = "sp-runtime-interface-test" version = "2.0.0" dependencies = [ - "sc-executor 0.8.0", - "sp-core 2.0.0", - "sp-io 2.0.0", - "sp-runtime-interface 2.0.0", - "sp-runtime-interface-test-wasm 2.0.0", - "sp-state-machine 0.8.0", + "sc-executor", + "sp-core", + "sp-io", + "sp-runtime-interface", + "sp-runtime-interface-test-wasm", + "sp-state-machine", ] [[package]] name = "sp-runtime-interface-test-wasm" version = "2.0.0" dependencies = [ - "sp-core 2.0.0", - "sp-io 2.0.0", - "sp-runtime-interface 2.0.0", - "sp-std 2.0.0", - "substrate-wasm-builder-runner 1.0.5", + "sp-core", + "sp-io", + "sp-runtime-interface", + "sp-std", + "substrate-wasm-builder-runner", ] [[package]] name = "sp-sandbox" version = "0.8.0" dependencies = [ - "assert_matches 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-core 2.0.0", - "sp-io 2.0.0", - "sp-std 2.0.0", - "sp-wasm-interface 2.0.0", - "wabt 0.9.2 (registry+https://github.com/rust-lang/crates.io-index)", - "wasmi 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", + "assert_matches", + "parity-scale-codec", + "sp-core", + "sp-io", + "sp-std", + "sp-wasm-interface", + "wabt", + "wasmi", ] [[package]] name = "sp-serializer" version = "2.0.0" dependencies = [ - "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_json 1.0.48 (registry+https://github.com/rust-lang/crates.io-index)", + "serde", + "serde_json", ] [[package]] name = "sp-session" version = "2.0.0" dependencies = [ - "sp-api 2.0.0", - "sp-core 2.0.0", - "sp-runtime 2.0.0", - "sp-std 2.0.0", + "sp-api", + "sp-core", + "sp-runtime", + "sp-std", ] [[package]] name = "sp-staking" version = "2.0.0" dependencies = [ - "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-runtime 2.0.0", - "sp-std 2.0.0", + "parity-scale-codec", + "sp-runtime", + "sp-std", ] [[package]] name = "sp-state-machine" version = "0.8.0" dependencies = [ - "hash-db 0.15.2 (registry+https://github.com/rust-lang/crates.io-index)", - "hex-literal 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "num-traits 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "parking_lot 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-core 2.0.0", - "sp-externalities 0.8.0", - "sp-panic-handler 2.0.0", - "sp-trie 2.0.0", - "trie-db 0.20.0 (registry+https://github.com/rust-lang/crates.io-index)", - "trie-root 0.16.0 (registry+https://github.com/rust-lang/crates.io-index)", + "hash-db", + "hex-literal", + "log 0.4.8", + "num-traits", + "parity-scale-codec", + "parking_lot 0.10.0", + "rand 0.7.3", + "sp-core", + "sp-externalities", + "sp-panic-handler", + "sp-trie", + "trie-db", + "trie-root", ] [[package]] @@ -6988,212 +7436,224 @@ version = "2.0.0" name = "sp-storage" version = "2.0.0" dependencies = [ - "impl-serde 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-debug-derive 2.0.0", - "sp-std 2.0.0", + "impl-serde 0.2.3", + "serde", + "sp-debug-derive", + "sp-std", ] [[package]] name = "sp-test-primitives" version = "2.0.0" dependencies = [ - "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-util-mem 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-application-crypto 2.0.0", - "sp-core 2.0.0", - "sp-runtime 2.0.0", + "parity-scale-codec", + "parity-util-mem", + "serde", + "sp-application-crypto", + "sp-core", + "sp-runtime", ] [[package]] name = "sp-timestamp" version = "2.0.0" dependencies = [ - "impl-trait-for-tuples 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-api 2.0.0", - "sp-inherents 2.0.0", - "sp-runtime 2.0.0", - "sp-std 2.0.0", - "wasm-timer 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", + "impl-trait-for-tuples", + "parity-scale-codec", + "sp-api", + "sp-inherents", + "sp-runtime", + "sp-std", + "wasm-timer", ] [[package]] name = "sp-transaction-pool" version = "2.0.0" dependencies = [ - "derive_more 0.99.3 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-api 2.0.0", - "sp-runtime 2.0.0", + "derive_more", + "futures 0.3.4", + "log 0.4.8", + "parity-scale-codec", + "serde", + "sp-api", + "sp-runtime", ] [[package]] name = "sp-trie" version = "2.0.0" dependencies = [ - "criterion 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", - "hash-db 0.15.2 (registry+https://github.com/rust-lang/crates.io-index)", - "hex-literal 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "memory-db 0.19.0 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-core 2.0.0", - "sp-std 2.0.0", - "trie-bench 0.20.0 (registry+https://github.com/rust-lang/crates.io-index)", - "trie-db 0.20.0 (registry+https://github.com/rust-lang/crates.io-index)", - "trie-root 0.16.0 (registry+https://github.com/rust-lang/crates.io-index)", - "trie-standardmap 0.15.2 (registry+https://github.com/rust-lang/crates.io-index)", + "criterion 0.2.11", + "hash-db", + "hex-literal", + "memory-db", + "parity-scale-codec", + "sp-core", + "sp-std", + "trie-bench", + "trie-db", + "trie-root", + "trie-standardmap", ] [[package]] name = "sp-version" version = "2.0.0" dependencies = [ - "impl-serde 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-runtime 2.0.0", - "sp-std 2.0.0", + "impl-serde 0.2.3", + "parity-scale-codec", + "serde", + "sp-runtime", + "sp-std", ] [[package]] name = "sp-wasm-interface" version = "2.0.0" dependencies = [ - "impl-trait-for-tuples 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-std 2.0.0", - "wasmi 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", + "impl-trait-for-tuples", + "parity-scale-codec", + "sp-std", + "wasmi", ] [[package]] name = "spin" version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d" [[package]] name = "stable_deref_trait" version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dba1a27d3efae4351c8051072d619e3ade2820635c3958d826bfea39d59b54c8" [[package]] name = "static_assertions" version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" [[package]] name = "stream-cipher" version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8131256a5896cabcf5eb04f4d6dacbe1aefda854b0d9896e09cb58829ec5638c" dependencies = [ - "generic-array 0.12.3 (registry+https://github.com/rust-lang/crates.io-index)", + "generic-array", ] [[package]] name = "string" version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d24114bfcceb867ca7f71a0d3fe45d45619ec47a6fbfa98cb14e14250bfa5d6d" dependencies = [ - "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes 0.4.12", ] [[package]] name = "string-interner" version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fd710eadff449a1531351b0e43eb81ea404336fa2f56c777427ab0e32a4cf183" dependencies = [ - "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", + "serde", ] [[package]] name = "strsim" version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ea5119cdb4c55b55d432abb513a0429384878c15dde60cc77b1c99de1a95a6a" [[package]] name = "structopt" version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1bcbed7d48956fcbb5d80c6b95aedb553513de0a1b451ea92679d999c010e98" dependencies = [ - "clap 2.33.0 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "structopt-derive 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", + "clap", + "lazy_static", + "structopt-derive", ] [[package]] name = "structopt-derive" version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "095064aa1f5b94d14e635d0a5684cf140c43ae40a0fd990708d38f5d669e5f64" dependencies = [ - "heck 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "proc-macro-error 0.4.9 (registry+https://github.com/rust-lang/crates.io-index)", - "proc-macro2 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 1.0.14 (registry+https://github.com/rust-lang/crates.io-index)", + "heck", + "proc-macro-error", + "proc-macro2 1.0.8", + "quote 1.0.2", + "syn", ] [[package]] name = "strum" version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6138f8f88a16d90134763314e3fc76fa3ed6a7db4725d6acf9a3ef95a3188d22" dependencies = [ - "strum_macros 0.16.0 (registry+https://github.com/rust-lang/crates.io-index)", + "strum_macros", ] [[package]] name = "strum_macros" version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0054a7df764039a6cd8592b9de84be4bec368ff081d203a7d5371cbfa8e65c81" dependencies = [ - "heck 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "proc-macro2 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 1.0.14 (registry+https://github.com/rust-lang/crates.io-index)", + "heck", + "proc-macro2 1.0.8", + "quote 1.0.2", + "syn", ] [[package]] name = "subkey" version = "2.0.0" dependencies = [ - "clap 2.33.0 (registry+https://github.com/rust-lang/crates.io-index)", - "derive_more 0.99.3 (registry+https://github.com/rust-lang/crates.io-index)", - "frame-system 2.0.0", - "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", - "hex 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", - "hex-literal 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "hyper 0.12.35 (registry+https://github.com/rust-lang/crates.io-index)", - "itertools 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)", - "jsonrpc-core-client 14.0.5 (registry+https://github.com/rust-lang/crates.io-index)", - "libp2p 0.16.1 (registry+https://github.com/rust-lang/crates.io-index)", - "node-primitives 2.0.0", - "node-runtime 2.0.0", - "pallet-balances 2.0.0", - "pallet-transaction-payment 2.0.0", - "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)", - "rpassword 4.0.5 (registry+https://github.com/rust-lang/crates.io-index)", - "rustc-hex 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "sc-rpc 2.0.0", - "serde_json 1.0.48 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-core 2.0.0", - "sp-runtime 2.0.0", - "substrate-bip39 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "tiny-bip39 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", + "clap", + "derive_more", + "frame-system", + "futures 0.1.29", + "hex", + "hex-literal", + "hyper 0.12.35", + "itertools", + "jsonrpc-core-client", + "libp2p", + "node-primitives", + "node-runtime", + "pallet-balances", + "pallet-transaction-payment", + "parity-scale-codec", + "rand 0.7.3", + "rpassword", + "rustc-hex", + "sc-rpc", + "serde_json", + "sp-core", + "sp-runtime", + "substrate-bip39", + "tiny-bip39", ] [[package]] name = "substrate-bip39" version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3be511be555a3633e71739a79e4ddff6a6aaa6579fa6114182a51d72c3eb93c5" dependencies = [ - "hmac 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", - "pbkdf2 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "schnorrkel 0.8.5 (registry+https://github.com/rust-lang/crates.io-index)", - "sha2 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", + "hmac", + "pbkdf2", + "schnorrkel", + "sha2", ] [[package]] @@ -7204,131 +7664,131 @@ version = "2.0.0" name = "substrate-frame-rpc-support" version = "2.0.0" dependencies = [ - "frame-support 2.0.0", - "frame-system 2.0.0", - "futures 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "jsonrpc-client-transports 14.0.5 (registry+https://github.com/rust-lang/crates.io-index)", - "jsonrpc-core 14.0.5 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "sc-rpc-api 0.8.0", - "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-storage 2.0.0", - "tokio 0.1.22 (registry+https://github.com/rust-lang/crates.io-index)", + "frame-support", + "frame-system", + "futures 0.3.4", + "jsonrpc-client-transports", + "jsonrpc-core", + "parity-scale-codec", + "sc-rpc-api", + "serde", + "sp-storage", + "tokio 0.1.22", ] [[package]] name = "substrate-frame-rpc-system" version = "2.0.0" dependencies = [ - "env_logger 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", - "frame-system-rpc-runtime-api 2.0.0", - "futures 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "jsonrpc-core 14.0.5 (registry+https://github.com/rust-lang/crates.io-index)", - "jsonrpc-core-client 14.0.5 (registry+https://github.com/rust-lang/crates.io-index)", - "jsonrpc-derive 14.0.5 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "sc-client 0.8.0", - "sc-transaction-pool 2.0.0", - "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-api 2.0.0", - "sp-blockchain 2.0.0", - "sp-core 2.0.0", - "sp-runtime 2.0.0", - "sp-transaction-pool 2.0.0", - "substrate-test-runtime-client 2.0.0", + "env_logger 0.7.1", + "frame-system-rpc-runtime-api", + "futures 0.3.4", + "jsonrpc-core", + "jsonrpc-core-client", + "jsonrpc-derive", + "log 0.4.8", + "parity-scale-codec", + "sc-client", + "sc-transaction-pool", + "serde", + "sp-api", + "sp-blockchain", + "sp-core", + "sp-runtime", + "sp-transaction-pool", + "substrate-test-runtime-client", ] [[package]] name = "substrate-test-client" version = "2.0.0" dependencies = [ - "futures 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "hash-db 0.15.2 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "sc-client 0.8.0", - "sc-client-api 2.0.0", - "sc-client-db 0.8.0", - "sc-executor 0.8.0", - "sp-blockchain 2.0.0", - "sp-consensus 0.8.0", - "sp-core 2.0.0", - "sp-keyring 2.0.0", - "sp-runtime 2.0.0", - "sp-state-machine 0.8.0", + "futures 0.3.4", + "hash-db", + "parity-scale-codec", + "sc-client", + "sc-client-api", + "sc-client-db", + "sc-executor", + "sp-blockchain", + "sp-consensus", + "sp-core", + "sp-keyring", + "sp-runtime", + "sp-state-machine", ] [[package]] name = "substrate-test-runtime" version = "2.0.0" dependencies = [ - "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", - "frame-executive 2.0.0", - "frame-support 2.0.0", - "frame-system 2.0.0", - "frame-system-rpc-runtime-api 2.0.0", - "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "memory-db 0.19.0 (registry+https://github.com/rust-lang/crates.io-index)", - "pallet-babe 2.0.0", - "pallet-timestamp 2.0.0", - "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-util-mem 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", - "sc-client 0.8.0", - "sc-executor 0.8.0", - "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-api 2.0.0", - "sp-application-crypto 2.0.0", - "sp-block-builder 2.0.0", - "sp-consensus-aura 0.8.0", - "sp-consensus-babe 0.8.0", - "sp-core 2.0.0", - "sp-inherents 2.0.0", - "sp-io 2.0.0", - "sp-keyring 2.0.0", - "sp-offchain 2.0.0", - "sp-runtime 2.0.0", - "sp-runtime-interface 2.0.0", - "sp-session 2.0.0", - "sp-state-machine 0.8.0", - "sp-std 2.0.0", - "sp-transaction-pool 2.0.0", - "sp-trie 2.0.0", - "sp-version 2.0.0", - "substrate-test-runtime-client 2.0.0", - "substrate-wasm-builder-runner 1.0.5", - "trie-db 0.20.0 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if", + "frame-executive", + "frame-support", + "frame-system", + "frame-system-rpc-runtime-api", + "log 0.4.8", + "memory-db", + "pallet-babe", + "pallet-timestamp", + "parity-scale-codec", + "parity-util-mem", + "sc-client", + "sc-executor", + "serde", + "sp-api", + "sp-application-crypto", + "sp-block-builder", + "sp-consensus-aura", + "sp-consensus-babe", + "sp-core", + "sp-inherents", + "sp-io", + "sp-keyring", + "sp-offchain", + "sp-runtime", + "sp-runtime-interface", + "sp-session", + "sp-state-machine", + "sp-std", + "sp-transaction-pool", + "sp-trie", + "sp-version", + "substrate-test-runtime-client", + "substrate-wasm-builder-runner", + "trie-db", ] [[package]] name = "substrate-test-runtime-client" version = "2.0.0" dependencies = [ - "futures 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "sc-block-builder 0.8.0", - "sc-client 0.8.0", - "sc-client-api 2.0.0", - "sp-api 2.0.0", - "sp-blockchain 2.0.0", - "sp-core 2.0.0", - "sp-runtime 2.0.0", - "substrate-test-client 2.0.0", - "substrate-test-runtime 2.0.0", + "futures 0.3.4", + "parity-scale-codec", + "sc-block-builder", + "sc-client", + "sc-client-api", + "sp-api", + "sp-blockchain", + "sp-core", + "sp-runtime", + "substrate-test-client", + "substrate-test-runtime", ] [[package]] name = "substrate-test-runtime-transaction-pool" version = "2.0.0" dependencies = [ - "derive_more 0.99.3 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "parking_lot 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", - "sc-transaction-graph 2.0.0", - "sp-blockchain 2.0.0", - "sp-runtime 2.0.0", - "sp-transaction-pool 2.0.0", - "substrate-test-runtime-client 2.0.0", + "derive_more", + "futures 0.3.4", + "parity-scale-codec", + "parking_lot 0.10.0", + "sc-transaction-graph", + "sp-blockchain", + "sp-runtime", + "sp-transaction-pool", + "substrate-test-runtime-client", ] [[package]] @@ -7339,14 +7799,14 @@ version = "2.0.0" name = "substrate-wasm-builder" version = "1.0.9" dependencies = [ - "atty 0.2.14 (registry+https://github.com/rust-lang/crates.io-index)", - "build-helper 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "cargo_metadata 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)", - "fs2 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", - "tempfile 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "toml 0.5.6 (registry+https://github.com/rust-lang/crates.io-index)", - "walkdir 2.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "wasm-gc-api 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", + "atty", + "build-helper", + "cargo_metadata", + "fs2", + "tempfile", + "toml", + "walkdir", + "wasm-gc-api", ] [[package]] @@ -7357,1897 +7817,1436 @@ version = "1.0.5" name = "subtle" version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d67a5a62ba6e01cb2192ff309324cb4875d0c451d55fe2319433abe7a05a8ee" [[package]] name = "subtle" version = "2.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c65d530b10ccaeac294f349038a597e435b18fb456aadd0840a623f83b9e941" [[package]] name = "syn" version = "1.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af6f3550d8dff9ef7dc34d384ac6f107e5d31c8f57d9f28e0081503f547ac8f5" dependencies = [ - "proc-macro2 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "unicode-xid 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 1.0.8", + "quote 1.0.2", + "unicode-xid 0.2.0", ] [[package]] name = "syn-mid" version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7be3539f6c128a931cf19dcee741c1af532c7fd387baa739c03dd2e96479338a" dependencies = [ - "proc-macro2 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 1.0.14 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 1.0.8", + "quote 1.0.2", + "syn", ] [[package]] name = "synstructure" version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67656ea1dc1b41b1451851562ea232ec2e5a80242139f7e679ceccfb5d61f545" dependencies = [ - "proc-macro2 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 1.0.14 (registry+https://github.com/rust-lang/crates.io-index)", - "unicode-xid 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 1.0.8", + "quote 1.0.2", + "syn", + "unicode-xid 0.2.0", ] [[package]] name = "sysinfo" version = "0.9.6" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f4b2468c629cffba39c0a4425849ab3cdb03d9dfacba69684609aea04d08ff9" dependencies = [ - "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", - "doc-comment 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", - "rayon 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if", + "doc-comment", + "libc", + "rayon", + "winapi 0.3.8", ] [[package]] name = "take_mut" version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f764005d11ee5f36500a149ace24e00e3da98b0158b3e2d53a7495660d3f4d60" [[package]] name = "target-lexicon" version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab0e7238dcc7b40a7be719a25365910f6807bd864f4cce6b2e6b873658e2b19d" [[package]] name = "target_info" version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c63f48baada5c52e65a29eef93ab4f8982681b67f9e8d29c7b05abcfec2b9ffe" [[package]] name = "tempdir" version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "15f2b5fb00ccdf689e0149d1b1b3c03fead81c2b37735d812fa8bddbbf41b6d8" dependencies = [ - "rand 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", - "remove_dir_all 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.4.6", + "remove_dir_all", ] [[package]] name = "tempfile" version = "3.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a6e24d9338a0a5be79593e2fa15a648add6138caa803e2d5bc782c371732ca9" dependencies = [ - "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)", - "redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)", - "remove_dir_all 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if", + "libc", + "rand 0.7.3", + "redox_syscall", + "remove_dir_all", + "winapi 0.3.8", ] [[package]] name = "termcolor" version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb6bfa289a4d7c5766392812c0a1f4c1ba45afa1ad47803c11e1f407d846d75f" dependencies = [ - "winapi-util 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi-util", ] [[package]] name = "test-case" version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a605baa797821796a751f4a959e1206079b24a4b7e1ed302b7d785d81a9276c9" dependencies = [ - "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "proc-macro2 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 1.0.14 (registry+https://github.com/rust-lang/crates.io-index)", - "version_check 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static", + "proc-macro2 1.0.8", + "quote 1.0.2", + "syn", + "version_check 0.9.1", ] [[package]] name = "textwrap" version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d326610f408c7a4eb6f51c37c330e496b08506c9457c9d34287ecc38809fb060" dependencies = [ - "unicode-width 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", + "unicode-width", ] [[package]] name = "thiserror" version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee14bf8e6767ab4c687c9e8bc003879e042a96fd67a3ba5934eadb6536bef4db" dependencies = [ - "thiserror-impl 1.0.11 (registry+https://github.com/rust-lang/crates.io-index)", + "thiserror-impl", ] [[package]] name = "thiserror-impl" version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7b51e1fbc44b5a0840be594fbc0f960be09050f2617e61e6aa43bef97cd3ef4" dependencies = [ - "proc-macro2 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 1.0.14 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 1.0.8", + "quote 1.0.2", + "syn", ] [[package]] name = "thread_local" version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d40c6d1b69745a6ec6fb1ca717914848da4b44ae29d9b3080cbee91d72a69b14" dependencies = [ - "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static", ] [[package]] name = "threadpool" version = "1.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2f0c90a5f3459330ac8bc0d2f879c693bb7a2f59689c1083fc4ef83834da865" dependencies = [ - "num_cpus 1.12.0 (registry+https://github.com/rust-lang/crates.io-index)", + "num_cpus", ] [[package]] name = "time" version = "0.1.42" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db8dcfca086c1143c9270ac42a2bbd8a7ee477b78ac8e45b19abfb0cbede4b6f" dependencies = [ - "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", - "redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", + "libc", + "redox_syscall", + "winapi 0.3.8", ] [[package]] name = "tiny-bip39" version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1cd1fb03fe8e07d17cd851a624a9fff74642a997b67fbd1ccd77533241640d92" dependencies = [ - "failure 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "hmac 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", - "once_cell 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "pbkdf2 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)", - "rustc-hash 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "sha2 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", + "failure", + "hmac", + "once_cell", + "pbkdf2", + "rand 0.7.3", + "rustc-hash", + "sha2", ] [[package]] name = "tiny-keccak" version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d8a021c69bb74a44ccedb824a046447e2c84a01df9e5c20779750acb38e11b2" dependencies = [ - "crunchy 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", + "crunchy", ] [[package]] name = "tiny-keccak" version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2953ca5148619bc99695c1274cb54c5275bbb913c6adad87e72eaf8db9787f69" dependencies = [ - "crunchy 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", + "crunchy", ] [[package]] name = "tinytemplate" version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57a3c6667d3e65eb1bc3aed6fd14011c6cbc3a0665218ab7f5daf040b9ec371a" dependencies = [ - "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_json 1.0.48 (registry+https://github.com/rust-lang/crates.io-index)", + "serde", + "serde_json", ] [[package]] name = "tokio" version = "0.1.22" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a09c0b5bb588872ab2f09afa13ee6e9dac11e10a0ec9e8e3ba39a5a5d530af6" dependencies = [ - "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", - "mio 0.6.21 (registry+https://github.com/rust-lang/crates.io-index)", - "num_cpus 1.12.0 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-codec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-current-thread 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-executor 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-fs 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-reactor 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-sync 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-tcp 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-threadpool 0.1.18 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-timer 0.2.13 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-udp 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-uds 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes 0.4.12", + "futures 0.1.29", + "mio", + "num_cpus", + "tokio-codec", + "tokio-current-thread", + "tokio-executor 0.1.10", + "tokio-fs", + "tokio-io", + "tokio-reactor", + "tokio-sync 0.1.8", + "tokio-tcp", + "tokio-threadpool", + "tokio-timer", + "tokio-udp", + "tokio-uds", ] [[package]] name = "tokio" version = "0.2.11" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fdd17989496f49cdc57978c96f0c9fe5e4a58a8bddc6813c449a4624f6a030b" dependencies = [ - "bytes 0.5.4 (registry+https://github.com/rust-lang/crates.io-index)", - "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", - "iovec 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", - "memchr 2.3.2 (registry+https://github.com/rust-lang/crates.io-index)", - "mio 0.6.21 (registry+https://github.com/rust-lang/crates.io-index)", - "mio-uds 0.6.7 (registry+https://github.com/rust-lang/crates.io-index)", - "num_cpus 1.12.0 (registry+https://github.com/rust-lang/crates.io-index)", - "pin-project-lite 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", - "signal-hook-registry 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-macros 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes 0.5.4", + "fnv", + "iovec", + "lazy_static", + "libc", + "memchr", + "mio", + "mio-uds", + "num_cpus", + "pin-project-lite", + "signal-hook-registry", + "slab", + "tokio-macros", + "winapi 0.3.8", ] [[package]] name = "tokio-buf" version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fb220f46c53859a4b7ec083e41dec9778ff0b1851c0942b211edb89e0ccdc46" dependencies = [ - "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", - "either 1.5.3 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes 0.4.12", + "either", + "futures 0.1.29", ] [[package]] name = "tokio-codec" version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "25b2998660ba0e70d18684de5d06b70b70a3a747469af9dea7618cc59e75976b" dependencies = [ - "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes 0.4.12", + "futures 0.1.29", + "tokio-io", ] [[package]] name = "tokio-current-thread" version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1de0e32a83f131e002238d7ccde18211c0a5397f60cbfffcb112868c2e0e20e" dependencies = [ - "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-executor 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.29", + "tokio-executor 0.1.10", ] [[package]] name = "tokio-executor" version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fb2d1b8f4548dbf5e1f7818512e9c406860678f29c300cdf0ebac72d1a3a1671" dependencies = [ - "crossbeam-utils 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-utils", + "futures 0.1.29", ] [[package]] name = "tokio-executor" version = "0.2.0-alpha.6" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ee9ceecf69145923834ea73f32ba40c790fd877b74a7817dd0b089f1eb9c7c8" dependencies = [ - "futures-util-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-sync 0.2.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-util-preview", + "lazy_static", + "tokio-sync 0.2.0-alpha.6", ] [[package]] name = "tokio-fs" version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "297a1206e0ca6302a0eed35b700d292b275256f596e2f3fea7729d5e629b6ff4" dependencies = [ - "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-threadpool 0.1.18 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.29", + "tokio-io", + "tokio-threadpool", ] [[package]] name = "tokio-io" version = "0.1.13" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57fc868aae093479e3131e3d165c93b1c7474109d13c90ec0dda2a1bbfff0674" dependencies = [ - "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes 0.4.12", + "futures 0.1.29", + "log 0.4.8", ] [[package]] name = "tokio-macros" version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4b1e7ed7d5d4c2af3d999904b0eebe76544897cdbfb2b9684bed2174ab20f7c" dependencies = [ - "proc-macro2 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 1.0.14 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 1.0.8", + "quote 1.0.2", + "syn", ] [[package]] name = "tokio-reactor" version = "0.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09bc590ec4ba8ba87652da2068d150dcada2cfa2e07faae270a5e0409aa51351" dependencies = [ - "crossbeam-utils 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "mio 0.6.21 (registry+https://github.com/rust-lang/crates.io-index)", - "num_cpus 1.12.0 (registry+https://github.com/rust-lang/crates.io-index)", - "parking_lot 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", - "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-executor 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-sync 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-utils", + "futures 0.1.29", + "lazy_static", + "log 0.4.8", + "mio", + "num_cpus", + "parking_lot 0.9.0", + "slab", + "tokio-executor 0.1.10", + "tokio-io", + "tokio-sync 0.1.8", ] [[package]] name = "tokio-rustls" version = "0.12.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "141afec0978abae6573065a48882c6bae44c5cc61db9b511ac4abf6a09bfd9cc" dependencies = [ - "futures-core 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "rustls 0.16.0 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", - "webpki 0.21.2 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-core", + "rustls", + "tokio 0.2.11", + "webpki", ] [[package]] name = "tokio-sync" version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "edfe50152bc8164fcc456dab7891fa9bf8beaf01c5ee7e1dd43a397c3cf87dee" dependencies = [ - "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", + "fnv", + "futures 0.1.29", ] [[package]] name = "tokio-sync" version = "0.2.0-alpha.6" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4f1aaeb685540f7407ea0e27f1c9757d258c7c6bf4e3eb19da6fc59b747239d2" dependencies = [ - "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-core-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-util-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)", + "fnv", + "futures-core-preview", + "futures-util-preview", ] [[package]] name = "tokio-tcp" version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "98df18ed66e3b72e742f185882a9e201892407957e45fbff8da17ae7a7c51f72" dependencies = [ - "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", - "iovec 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", - "mio 0.6.21 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-reactor 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes 0.4.12", + "futures 0.1.29", + "iovec", + "mio", + "tokio-io", + "tokio-reactor", ] [[package]] name = "tokio-threadpool" version = "0.1.18" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df720b6581784c118f0eb4310796b12b1d242a7eb95f716a8367855325c25f89" dependencies = [ - "crossbeam-deque 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)", - "crossbeam-queue 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "crossbeam-utils 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "num_cpus 1.12.0 (registry+https://github.com/rust-lang/crates.io-index)", - "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-executor 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-deque", + "crossbeam-queue", + "crossbeam-utils", + "futures 0.1.29", + "lazy_static", + "log 0.4.8", + "num_cpus", + "slab", + "tokio-executor 0.1.10", ] [[package]] name = "tokio-timer" version = "0.2.13" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93044f2d313c95ff1cb7809ce9a7a05735b012288a888b62d4434fd58c94f296" dependencies = [ - "crossbeam-utils 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", - "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-executor 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-utils", + "futures 0.1.29", + "slab", + "tokio-executor 0.1.10", ] [[package]] name = "tokio-tls" version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "354b8cd83825b3c20217a9dc174d6a0c67441a2fae5c41bcb1ea6679f6ae0f7c" dependencies = [ - "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", - "native-tls 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.29", + "native-tls", + "tokio-io", ] [[package]] name = "tokio-udp" version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2a0b10e610b39c38b031a2fcab08e4b82f16ece36504988dcbd81dbba650d82" dependencies = [ - "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "mio 0.6.21 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-codec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-reactor 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes 0.4.12", + "futures 0.1.29", + "log 0.4.8", + "mio", + "tokio-codec", + "tokio-io", + "tokio-reactor", ] [[package]] name = "tokio-uds" version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5076db410d6fdc6523df7595447629099a1fdc47b3d9f896220780fa48faf798" dependencies = [ - "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", - "iovec 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "mio 0.6.21 (registry+https://github.com/rust-lang/crates.io-index)", - "mio-uds 0.6.7 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-codec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-reactor 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes 0.4.12", + "futures 0.1.29", + "iovec", + "libc", + "log 0.4.8", + "mio", + "mio-uds", + "tokio-codec", + "tokio-io", + "tokio-reactor", ] [[package]] name = "tokio-util" version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "571da51182ec208780505a32528fc5512a8fe1443ab960b3f2f3ef093cd16930" dependencies = [ - "bytes 0.5.4 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-core 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-sink 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "pin-project-lite 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes 0.5.4", + "futures-core", + "futures-sink", + "log 0.4.8", + "pin-project-lite", + "tokio 0.2.11", ] [[package]] name = "toml" version = "0.5.6" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ffc92d160b1eef40665be3a05630d003936a3bc7da7421277846c2613e92c71a" dependencies = [ - "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", + "serde", ] [[package]] name = "tower-service" version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e987b6bf443f4b5b3b6f38704195592cca41c5bb7aedd3c3693c7081f8289860" [[package]] name = "tracing" version = "0.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e213bd24252abeb86a0b7060e02df677d367ce6cb772cef17e9214b8390a8d3" dependencies = [ - "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", - "tracing-attributes 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "tracing-core 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if", + "tracing-attributes", + "tracing-core", ] [[package]] name = "tracing-attributes" version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04cfd395def5a60236e187e1ff905cb55668a59f29928dec05e6e1b1fd2ac1f3" dependencies = [ - "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 1.0.14 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 1.0.2", + "syn", ] [[package]] name = "tracing-core" version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13a46f11e372b8bd4b4398ea54353412fdd7fd42a8370c7e543e218cf7661978" dependencies = [ - "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static", ] [[package]] name = "traitobject" version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "efd1f82c56340fdf16f2a953d7bda4f8fdffba13d93b00844c25572110b26079" [[package]] name = "treeline" version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7f741b240f1a48843f9b8e0444fb55fb2a4ff67293b50a9179dfd5ea67f8d41" [[package]] name = "trie-bench" version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6dcd9bac85703d8f974ee1e6dfe668784b105d3385c174ad729adb7427ad5d81" dependencies = [ - "criterion 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", - "hash-db 0.15.2 (registry+https://github.com/rust-lang/crates.io-index)", - "keccak-hasher 0.15.2 (registry+https://github.com/rust-lang/crates.io-index)", - "memory-db 0.19.0 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "trie-db 0.20.0 (registry+https://github.com/rust-lang/crates.io-index)", - "trie-root 0.16.0 (registry+https://github.com/rust-lang/crates.io-index)", - "trie-standardmap 0.15.2 (registry+https://github.com/rust-lang/crates.io-index)", + "criterion 0.2.11", + "hash-db", + "keccak-hasher", + "memory-db", + "parity-scale-codec", + "trie-db", + "trie-root", + "trie-standardmap", ] [[package]] name = "trie-db" version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "de9222c50cc325855621271157c973da27a0dcd26fa06f8edf81020bd2333df0" dependencies = [ - "hash-db 0.15.2 (registry+https://github.com/rust-lang/crates.io-index)", - "hashbrown 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "rustc-hex 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "smallvec 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "hash-db", + "hashbrown 0.6.3", + "log 0.4.8", + "rustc-hex", + "smallvec 1.2.0", ] [[package]] name = "trie-root" version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "652931506d2c1244d7217a70b99f56718a7b4161b37f04e7cd868072a99f68cd" dependencies = [ - "hash-db 0.15.2 (registry+https://github.com/rust-lang/crates.io-index)", + "hash-db", ] [[package]] name = "trie-standardmap" version = "0.15.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3161ba520ab28cd8e6b68e1126f1009f6e335339d1a73b978139011703264c8" dependencies = [ - "hash-db 0.15.2 (registry+https://github.com/rust-lang/crates.io-index)", - "keccak-hasher 0.15.2 (registry+https://github.com/rust-lang/crates.io-index)", + "hash-db", + "keccak-hasher", ] [[package]] name = "try-lock" version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e604eb7b43c06650e854be16a2a03155743d3752dd1c943f6829e26b7a36e382" [[package]] name = "trybuild" version = "1.0.22" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5867c525891caf154503954cb743ff7f1c4ca2c3e8578f6a5af84c913aa084c8" dependencies = [ - "glob 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_json 1.0.48 (registry+https://github.com/rust-lang/crates.io-index)", - "termcolor 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "toml 0.5.6 (registry+https://github.com/rust-lang/crates.io-index)", + "glob 0.3.0", + "lazy_static", + "serde", + "serde_json", + "termcolor", + "toml", ] [[package]] name = "twofish" version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "712d261e83e727c8e2dbb75dacac67c36e35db36a958ee504f2164fc052434e1" dependencies = [ - "block-cipher-trait 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", - "byteorder 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "opaque-debug 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", + "block-cipher-trait", + "byteorder 1.3.4", + "opaque-debug", ] [[package]] name = "twox-hash" version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3bfd5b7557925ce778ff9b9ef90e3ade34c524b5ff10e239c69a42d546d2af56" dependencies = [ - "rand 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.7.3", ] [[package]] name = "typeable" version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1410f6f91f21d1612654e7cc69193b0334f909dcf2c790c4826254fbb86f8887" [[package]] name = "typenum" version = "1.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d2783fe2d6b8c1101136184eb41be8b1ad379e4657050b8aaff0c79ee7575f9" [[package]] name = "uint" version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e75a4cdd7b87b28840dba13c483b9a88ee6bbf16ba5c951ee1ecfcf723078e0d" dependencies = [ - "byteorder 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "crunchy 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "rustc-hex 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "static_assertions 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder 1.3.4", + "crunchy", + "rustc-hex", + "static_assertions", ] [[package]] name = "unicase" version = "1.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f4765f83163b74f957c797ad9253caf97f103fb064d3999aea9568d09fc8a33" dependencies = [ - "version_check 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "version_check 0.1.5", ] [[package]] name = "unicase" version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50f37be617794602aabbeee0be4f259dc1778fabe05e2d67ee8f79326d5cb4f6" dependencies = [ - "version_check 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)", + "version_check 0.9.1", ] [[package]] name = "unicode-bidi" version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49f2bd0c6468a8230e1db229cff8029217cf623c767ea5d60bfbd42729ea54d5" dependencies = [ - "matches 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", + "matches", ] [[package]] name = "unicode-normalization" version = "0.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5479532badd04e128284890390c1e876ef7a993d0570b3597ae43dfa1d59afa4" dependencies = [ - "smallvec 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "smallvec 1.2.0", ] [[package]] name = "unicode-segmentation" version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e83e153d1053cbb5a118eeff7fd5be06ed99153f00dbcd8ae310c5fb2b22edc0" [[package]] name = "unicode-width" version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "caaa9d531767d1ff2150b9332433f32a24622147e5ebb1f26409d5da67afd479" [[package]] name = "unicode-xid" version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc72304796d0818e357ead4e000d19c9c174ab23dc11093ac919054d20a6a7fc" [[package]] name = "unicode-xid" version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "826e7639553986605ec5979c7dd957c7895e93eabed50ab2ffa7f6128a75097c" [[package]] name = "unsigned-varint" version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7f0023a96687fe169081e8adce3f65e3874426b7886e9234d490af2dc077959" [[package]] name = "unsigned-varint" version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b7ffb36714206d2f5f05d61a2bc350415c642f2c54433f0ebf829afbe41d570" dependencies = [ - "bytes 0.5.4 (registry+https://github.com/rust-lang/crates.io-index)", - "futures_codec 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes 0.5.4", + "futures_codec", ] [[package]] name = "untrusted" version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "60369ef7a31de49bcb3f6ca728d4ba7300d9a1658f94c727d4cab8c8d9f4aece" [[package]] name = "url" version = "1.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd4e7c0d531266369519a4aa4f399d748bd37043b00bde1e4ff1f60a120b355a" dependencies = [ - "idna 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", - "matches 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", - "percent-encoding 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", + "idna 0.1.5", + "matches", + "percent-encoding 1.0.1", ] [[package]] name = "url" version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "829d4a8476c35c9bf0bbce5a3b23f4106f79728039b726d292bb93bc106787cb" dependencies = [ - "idna 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "matches 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", - "percent-encoding 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "idna 0.2.0", + "matches", + "percent-encoding 2.1.0", ] [[package]] name = "vcpkg" version = "0.2.8" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3fc439f2794e98976c88a2a2dafce96b930fe8010b0a256b3c2199a773933168" [[package]] name = "vec_map" version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05c78687fb1a80548ae3250346c3db86a80a7cdd77bda190189f2d0a0987c81a" [[package]] name = "vergen" version = "3.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6aba5e34f93dc7051dfad05b98a18e9156f27e7b431fe1d2398cb6061c0a1dba" dependencies = [ - "bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "chrono 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", - "failure 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", + "bitflags", + "chrono", + "failure", ] [[package]] name = "version_check" version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "914b1a6776c4c929a602fafd8bc742e06365d4bcbe48c30f9cca5824f70dc9dd" [[package]] name = "version_check" version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "078775d0255232fb988e6fccf26ddc9d1ac274299aaedcedce21c6f72cc533ce" [[package]] name = "void" version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d" [[package]] name = "wabt" version = "0.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c5c5c1286c6e578416982609f47594265f9d489f9b836157d403ad605a46693" dependencies = [ - "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_json 1.0.48 (registry+https://github.com/rust-lang/crates.io-index)", - "wabt-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", + "serde", + "serde_derive", + "serde_json", + "wabt-sys", ] [[package]] name = "wabt-sys" version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af5d153dc96aad7dc13ab90835b892c69867948112d95299e522d370c4e13a08" dependencies = [ - "cc 1.0.50 (registry+https://github.com/rust-lang/crates.io-index)", - "cmake 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)", - "glob 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", + "cc", + "cmake", + "glob 0.2.11", ] [[package]] name = "walkdir" version = "2.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "777182bc735b6424e1a57516d35ed72cb8019d85c8c9bf536dccb3445c1a2f7d" dependencies = [ - "same-file 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi-util 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", + "same-file", + "winapi 0.3.8", + "winapi-util", ] [[package]] name = "want" version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6395efa4784b027708f7451087e647ec73cc74f5d9bc2e418404248d679a230" dependencies = [ - "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "try-lock 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.29", + "log 0.4.8", + "try-lock", ] [[package]] name = "want" version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ce8a968cb1cd110d136ff8b819a556d6fb6d919363c61534f6860c7eb172ba0" dependencies = [ - "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "try-lock 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8", + "try-lock", ] [[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.58" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5205e9afdf42282b192e2310a5b463a6d1c1d774e30dc3c791ac37ab42d2616c" dependencies = [ - "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", - "wasm-bindgen-macro 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if", + "wasm-bindgen-macro", ] [[package]] name = "wasm-bindgen-backend" version = "0.2.58" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11cdb95816290b525b32587d76419facd99662a07e59d3cdb560488a819d9a45" dependencies = [ - "bumpalo 3.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "proc-macro2 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 1.0.14 (registry+https://github.com/rust-lang/crates.io-index)", - "wasm-bindgen-shared 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", + "bumpalo", + "lazy_static", + "log 0.4.8", + "proc-macro2 1.0.8", + "quote 1.0.2", + "syn", + "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-futures" version = "0.4.8" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8bbdd49e3e28b40dec6a9ba8d17798245ce32b019513a845369c641b275135d9" dependencies = [ - "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", - "js-sys 0.3.35 (registry+https://github.com/rust-lang/crates.io-index)", - "wasm-bindgen 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", - "web-sys 0.3.35 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if", + "js-sys", + "wasm-bindgen", + "web-sys", ] [[package]] name = "wasm-bindgen-macro" version = "0.2.58" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "574094772ce6921576fb6f2e3f7497b8a76273b6db092be18fc48a082de09dc3" dependencies = [ - "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "wasm-bindgen-macro-support 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 1.0.2", + "wasm-bindgen-macro-support", ] [[package]] name = "wasm-bindgen-macro-support" version = "0.2.58" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e85031354f25eaebe78bb7db1c3d86140312a911a106b2e29f9cc440ce3e7668" dependencies = [ - "proc-macro2 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 1.0.14 (registry+https://github.com/rust-lang/crates.io-index)", - "wasm-bindgen-backend 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", - "wasm-bindgen-shared 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 1.0.8", + "quote 1.0.2", + "syn", + "wasm-bindgen-backend", + "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" version = "0.2.58" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f5e7e61fc929f4c0dddb748b102ebf9f632e2b8d739f2016542b4de2965a9601" [[package]] name = "wasm-bindgen-webidl" version = "0.2.58" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef012a0d93fc0432df126a8eaf547b2dce25a8ce9212e1d3cbeef5c11157975d" dependencies = [ - "anyhow 1.0.26 (registry+https://github.com/rust-lang/crates.io-index)", - "heck 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "proc-macro2 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 1.0.14 (registry+https://github.com/rust-lang/crates.io-index)", - "wasm-bindgen-backend 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", - "weedle 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", + "anyhow", + "heck", + "log 0.4.8", + "proc-macro2 1.0.8", + "quote 1.0.2", + "syn", + "wasm-bindgen-backend", + "weedle", ] [[package]] name = "wasm-gc-api" version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d0c32691b6c7e6c14e7f8fd55361a9088b507aa49620fcd06c09b3a1082186b9" dependencies = [ - "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-wasm 0.32.0 (registry+https://github.com/rust-lang/crates.io-index)", - "rustc-demangle 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8", + "parity-wasm 0.32.0", + "rustc-demangle", ] [[package]] name = "wasm-timer" version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "324c5e65a08699c9c4334ba136597ab22b85dccd4b65dd1e36ccf8f723a95b54" dependencies = [ - "futures 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "js-sys 0.3.35 (registry+https://github.com/rust-lang/crates.io-index)", - "parking_lot 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", - "pin-utils 0.1.0-alpha.4 (registry+https://github.com/rust-lang/crates.io-index)", - "send_wrapper 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "wasm-bindgen 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", - "wasm-bindgen-futures 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "web-sys 0.3.35 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.3.4", + "js-sys", + "parking_lot 0.9.0", + "pin-utils", + "send_wrapper 0.2.0", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", ] [[package]] name = "wasmi" version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf617d864d25af3587aa745529f7aaa541066c876d57e050c0d0c85c61c92aff" dependencies = [ - "errno 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", - "memory_units 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "num-rational 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", - "num-traits 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-wasm 0.41.0 (registry+https://github.com/rust-lang/crates.io-index)", - "wasmi-validation 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "errno", + "libc", + "memory_units", + "num-rational", + "num-traits", + "parity-wasm 0.41.0", + "wasmi-validation", ] [[package]] name = "wasmi-validation" version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea78c597064ba73596099281e2f4cfc019075122a65cdda3205af94f0b264d93" dependencies = [ - "parity-wasm 0.41.0 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-wasm 0.41.0", ] [[package]] name = "wasmparser" version = "0.48.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "073da89bf1c84db000dd68ce660c1b4a08e3a2d28fd1e3394ab9e7abdde4a0f8" [[package]] name = "wasmparser" version = "0.51.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a40d24f114a3f24b459ec292019220cff6388673b4a2c0a11483665b599ef15c" [[package]] name = "wasmtime" version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5614d964c3e7d07a13b59aca66103c52656bd80430f0d86dc7eeb3af4f03d4a2" dependencies = [ - "anyhow 1.0.26 (registry+https://github.com/rust-lang/crates.io-index)", - "backtrace 0.3.44 (registry+https://github.com/rust-lang/crates.io-index)", - "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", - "region 2.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "rustc-demangle 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)", - "target-lexicon 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", - "wasmparser 0.51.2 (registry+https://github.com/rust-lang/crates.io-index)", - "wasmtime-environ 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", - "wasmtime-jit 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", - "wasmtime-runtime 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", - "wat 1.0.9 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", + "anyhow", + "backtrace", + "cfg-if", + "lazy_static", + "libc", + "region", + "rustc-demangle", + "target-lexicon", + "wasmparser 0.51.2", + "wasmtime-environ", + "wasmtime-jit", + "wasmtime-runtime", + "wat", + "winapi 0.3.8", ] [[package]] name = "wasmtime-debug" version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "feb5900275b4ef0b621ce725b9d5660b12825d7f7d79b392b97baf089ffab8c0" dependencies = [ - "anyhow 1.0.26 (registry+https://github.com/rust-lang/crates.io-index)", - "faerie 0.14.0 (registry+https://github.com/rust-lang/crates.io-index)", - "gimli 0.19.0 (registry+https://github.com/rust-lang/crates.io-index)", - "more-asserts 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "target-lexicon 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", - "thiserror 1.0.11 (registry+https://github.com/rust-lang/crates.io-index)", - "wasmparser 0.51.2 (registry+https://github.com/rust-lang/crates.io-index)", - "wasmtime-environ 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", + "anyhow", + "faerie", + "gimli 0.19.0", + "more-asserts", + "target-lexicon", + "thiserror", + "wasmparser 0.51.2", + "wasmtime-environ", ] [[package]] name = "wasmtime-environ" version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "anyhow 1.0.26 (registry+https://github.com/rust-lang/crates.io-index)", - "base64 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", - "bincode 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "cranelift-codegen 0.58.0 (registry+https://github.com/rust-lang/crates.io-index)", - "cranelift-entity 0.58.0 (registry+https://github.com/rust-lang/crates.io-index)", - "cranelift-wasm 0.58.0 (registry+https://github.com/rust-lang/crates.io-index)", - "directories 2.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "errno 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", - "file-per-thread-logger 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "indexmap 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "more-asserts 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "rayon 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", - "sha2 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", - "thiserror 1.0.11 (registry+https://github.com/rust-lang/crates.io-index)", - "toml 0.5.6 (registry+https://github.com/rust-lang/crates.io-index)", - "wasmparser 0.51.2 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", - "zstd 0.5.1+zstd.1.4.4 (registry+https://github.com/rust-lang/crates.io-index)", +checksum = "f04661851e133fb11691c4a0f92a705766b4bbf7afc06811f949e295cc8414fc" +dependencies = [ + "anyhow", + "base64 0.11.0", + "bincode", + "cranelift-codegen", + "cranelift-entity", + "cranelift-wasm", + "directories", + "errno", + "file-per-thread-logger", + "indexmap", + "libc", + "log 0.4.8", + "more-asserts", + "rayon", + "serde", + "sha2", + "thiserror", + "toml", + "wasmparser 0.51.2", + "winapi 0.3.8", + "zstd", ] [[package]] name = "wasmtime-jit" version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d451353764ce55c9bb6a8b260063cfc209b7adadd277a9a872ab4563a69e357c" dependencies = [ - "anyhow 1.0.26 (registry+https://github.com/rust-lang/crates.io-index)", - "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", - "cranelift-codegen 0.58.0 (registry+https://github.com/rust-lang/crates.io-index)", - "cranelift-entity 0.58.0 (registry+https://github.com/rust-lang/crates.io-index)", - "cranelift-frontend 0.58.0 (registry+https://github.com/rust-lang/crates.io-index)", - "cranelift-native 0.58.0 (registry+https://github.com/rust-lang/crates.io-index)", - "cranelift-wasm 0.58.0 (registry+https://github.com/rust-lang/crates.io-index)", - "more-asserts 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "region 2.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "target-lexicon 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", - "thiserror 1.0.11 (registry+https://github.com/rust-lang/crates.io-index)", - "wasmparser 0.51.2 (registry+https://github.com/rust-lang/crates.io-index)", - "wasmtime-debug 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", - "wasmtime-environ 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", - "wasmtime-runtime 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", + "anyhow", + "cfg-if", + "cranelift-codegen", + "cranelift-entity", + "cranelift-frontend", + "cranelift-native", + "cranelift-wasm", + "more-asserts", + "region", + "target-lexicon", + "thiserror", + "wasmparser 0.51.2", + "wasmtime-debug", + "wasmtime-environ", + "wasmtime-runtime", + "winapi 0.3.8", ] [[package]] name = "wasmtime-runtime" version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7dbd4fc114b828cae3e405fed413df4b3814d87a92ea029640cec9ba41f0c162" dependencies = [ - "backtrace 0.3.44 (registry+https://github.com/rust-lang/crates.io-index)", - "cc 1.0.50 (registry+https://github.com/rust-lang/crates.io-index)", - "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", - "indexmap 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", - "memoffset 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)", - "more-asserts 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "region 2.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "thiserror 1.0.11 (registry+https://github.com/rust-lang/crates.io-index)", - "wasmtime-environ 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", + "backtrace", + "cc", + "cfg-if", + "indexmap", + "libc", + "memoffset", + "more-asserts", + "region", + "thiserror", + "wasmtime-environ", + "winapi 0.3.8", ] [[package]] name = "wast" version = "8.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9df3d716118a503b2f6bbb6ff46b21997ab0cc167b01de7a188e45e4b01e8d" dependencies = [ - "leb128 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", + "leb128", ] [[package]] name = "wat" version = "1.0.9" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a927b35badc29c97d97e82689eef7f72fc936d884b3391804c1bb6cd2bdccbb" dependencies = [ - "wast 8.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "wast", ] [[package]] name = "web-sys" version = "0.3.35" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aaf97caf6aa8c2b1dac90faf0db529d9d63c93846cca4911856f78a83cebf53b" dependencies = [ - "anyhow 1.0.26 (registry+https://github.com/rust-lang/crates.io-index)", - "js-sys 0.3.35 (registry+https://github.com/rust-lang/crates.io-index)", - "sourcefile 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", - "wasm-bindgen 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", - "wasm-bindgen-webidl 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", + "anyhow", + "js-sys", + "sourcefile", + "wasm-bindgen", + "wasm-bindgen-webidl", ] [[package]] name = "webpki" version = "0.21.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1f50e1972865d6b1adb54167d1c8ed48606004c2c9d0ea5f1eeb34d95e863ef" dependencies = [ - "ring 0.16.11 (registry+https://github.com/rust-lang/crates.io-index)", - "untrusted 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", + "ring", + "untrusted", ] [[package]] name = "webpki-roots" version = "0.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a262ae37dd9d60f60dd473d1158f9fbebf110ba7b6a5051c8160460f6043718b" dependencies = [ - "webpki 0.21.2 (registry+https://github.com/rust-lang/crates.io-index)", + "webpki", ] [[package]] name = "webpki-roots" version = "0.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91cd5736df7f12a964a5067a12c62fa38e1bd8080aff1f80bc29be7c80d19ab4" dependencies = [ - "webpki 0.21.2 (registry+https://github.com/rust-lang/crates.io-index)", + "webpki", ] [[package]] name = "websocket" version = "0.24.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "413b37840b9e27b340ce91b319ede10731de8c72f5bc4cb0206ec1ca4ce581d0" dependencies = [ - "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", - "hyper 0.10.16 (registry+https://github.com/rust-lang/crates.io-index)", - "native-tls 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-codec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-reactor 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-tcp 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-tls 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "unicase 1.4.2 (registry+https://github.com/rust-lang/crates.io-index)", - "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)", - "websocket-base 0.24.0 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes 0.4.12", + "futures 0.1.29", + "hyper 0.10.16", + "native-tls", + "rand 0.6.5", + "tokio-codec", + "tokio-io", + "tokio-reactor", + "tokio-tcp", + "tokio-tls", + "unicase 1.4.2", + "url 1.7.2", + "websocket-base", ] [[package]] name = "websocket-base" version = "0.24.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e3810f0d00c4dccb54c30a4eee815e703232819dec7b007db115791c42aa374" dependencies = [ - "base64 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)", - "bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "byteorder 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", - "native-tls 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", - "sha1 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-codec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-tcp 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-tls 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "base64 0.10.1", + "bitflags", + "byteorder 1.3.4", + "bytes 0.4.12", + "futures 0.1.29", + "native-tls", + "rand 0.6.5", + "sha1", + "tokio-codec", + "tokio-io", + "tokio-tcp", + "tokio-tls", ] [[package]] name = "weedle" version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3bb43f70885151e629e2a19ce9e50bd730fd436cfd4b666894c9ce4de9141164" dependencies = [ - "nom 4.2.3 (registry+https://github.com/rust-lang/crates.io-index)", + "nom", ] [[package]] name = "which" version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b57acb10231b9493c8472b20cb57317d0679a49e0bdbee44b3b803a6473af164" dependencies = [ - "failure 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", + "failure", + "libc", ] [[package]] name = "which" version = "3.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5475d47078209a02e60614f7ba5e645ef3ed60f771920ac1906d7c1cc65024c8" dependencies = [ - "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", + "libc", ] [[package]] name = "winapi" version = "0.2.8" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "167dc9d6949a9b857f3451275e911c3f44255842c1f7a76f33c55103a909087a" [[package]] name = "winapi" version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8093091eeb260906a183e6ae1abdba2ef5ef2257a21801128899c3fc699229c6" dependencies = [ - "winapi-i686-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi-x86_64-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi-i686-pc-windows-gnu", + "winapi-x86_64-pc-windows-gnu", ] [[package]] name = "winapi-build" version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d315eee3b34aca4797b2da6b13ed88266e6d612562a0c46390af8299fc699bc" [[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.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ccfbf554c6ad11084fb7517daca16cfdcaccbdadba4fc336f032a8b12c2ad80" dependencies = [ - "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.8", ] [[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 = "ws" version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c51a2c47b5798ccc774ffb93ff536aec7c4275d722fd9c740c83cdd1af1f2d94" dependencies = [ - "byteorder 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", - "httparse 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "mio 0.6.21 (registry+https://github.com/rust-lang/crates.io-index)", - "mio-extras 2.0.6 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)", - "sha-1 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)", - "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", - "url 2.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder 1.3.4", + "bytes 0.4.12", + "httparse", + "log 0.4.8", + "mio", + "mio-extras", + "rand 0.7.3", + "sha-1", + "slab", + "url 2.1.1", ] [[package]] name = "ws2_32-sys" version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d59cefebd0c892fa2dd6de581e937301d8552cb44489cdff035c6187cb63fa5e" dependencies = [ - "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.2.8", + "winapi-build", ] [[package]] name = "x25519-dalek" version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ee1585dc1484373cbc1cee7aafda26634665cf449436fd6e24bfd1fad230538" dependencies = [ - "clear_on_drop 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", - "curve25519-dalek 1.2.3 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "clear_on_drop", + "curve25519-dalek 1.2.3", + "rand_core 0.3.1", ] [[package]] name = "x25519-dalek" version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "637ff90c9540fa3073bb577e65033069e4bae7c79d49d74aa3ffdf5342a53217" dependencies = [ - "curve25519-dalek 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_core 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", - "zeroize 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "curve25519-dalek 2.0.0", + "rand_core 0.5.1", + "zeroize 1.1.0", ] [[package]] name = "xdg" version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d089681aa106a86fade1b0128fb5daf07d5867a509ab036d99988dec80429a57" [[package]] name = "yamux" version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d73295bc9d9acf89dd9336b3b5f5b57731ee72b587857dd4312721a0196b48e5" dependencies = [ - "bytes 0.5.4 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "nohash-hasher 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "parking_lot 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)", - "thiserror 1.0.11 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes 0.5.4", + "futures 0.3.4", + "log 0.4.8", + "nohash-hasher", + "parking_lot 0.10.0", + "rand 0.7.3", + "thiserror", ] [[package]] name = "zeroize" version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "45af6a010d13e4cf5b54c94ba5a2b2eba5596b9e46bf5875612d332a1f2b3f86" [[package]] name = "zeroize" version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3cbac2ed2ba24cc90f5e06485ac8c7c1e5449fe8911aef4d8877218af021a5b8" dependencies = [ - "zeroize_derive 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "zeroize_derive", ] [[package]] name = "zeroize_derive" version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "de251eec69fc7c1bc3923403d18ececb929380e016afe103da75f396704f8ca2" dependencies = [ - "proc-macro2 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 1.0.14 (registry+https://github.com/rust-lang/crates.io-index)", - "synstructure 0.12.3 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 1.0.8", + "quote 1.0.2", + "syn", + "synstructure", ] [[package]] name = "zstd" version = "0.5.1+zstd.1.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c5d978b793ae64375b80baf652919b148f6a496ac8802922d9999f5a553194f" dependencies = [ - "zstd-safe 2.0.3+zstd.1.4.4 (registry+https://github.com/rust-lang/crates.io-index)", + "zstd-safe", ] [[package]] name = "zstd-safe" version = "2.0.3+zstd.1.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bee25eac9753cfedd48133fa1736cbd23b774e253d89badbeac7d12b23848d3f" dependencies = [ - "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", - "zstd-sys 1.4.15+zstd.1.4.4 (registry+https://github.com/rust-lang/crates.io-index)", + "libc", + "zstd-sys", ] [[package]] name = "zstd-sys" version = "1.4.15+zstd.1.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89719b034dc22d240d5b407fb0a3fe6d29952c181cff9a9f95c0bd40b4f8f7d8" dependencies = [ - "cc 1.0.50 (registry+https://github.com/rust-lang/crates.io-index)", - "glob 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[metadata] -"checksum Inflector 0.11.4 (registry+https://github.com/rust-lang/crates.io-index)" = "fe438c63458706e03479442743baae6c88256498e6431708f6dfc520a26515d3" -"checksum adler32 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)" = "5d2e7343e7fc9de883d1b0341e0b13970f764c14101234857d2ddafa1cb1cac2" -"checksum aes-ctr 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d2e5b0458ea3beae0d1d8c0f3946564f8e10f90646cf78c06b4351052058d1ee" -"checksum aes-soft 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "cfd7e7ae3f9a1fb5c03b389fc6bb9a51400d0c13053f0dca698c832bfd893a0d" -"checksum aesni 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "2f70a6b5f971e473091ab7cfb5ffac6cde81666c4556751d8d5620ead8abf100" -"checksum ahash 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)" = "6f33b5018f120946c1dcf279194f238a9f146725593ead1c08fa47ff22b0b5d3" -"checksum aho-corasick 0.7.8 (registry+https://github.com/rust-lang/crates.io-index)" = "743ad5a418686aad3b87fd14c43badd828cf26e214a00f92a384291cf22e1811" -"checksum ansi_term 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ee49baf6cb617b853aa8d93bf420db2383fab46d314482ca2803b40d5fde979b" -"checksum ansi_term 0.12.1 (registry+https://github.com/rust-lang/crates.io-index)" = "d52a9bb7ec0cf484c551830a7ce27bd20d67eac647e1befb56b0be4ee39a55d2" -"checksum anyhow 1.0.26 (registry+https://github.com/rust-lang/crates.io-index)" = "7825f6833612eb2414095684fcf6c635becf3ce97fe48cf6421321e93bfbd53c" -"checksum app_dirs 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "e73a24bad9bd6a94d6395382a6c69fe071708ae4409f763c5475e14ee896313d" -"checksum arc-swap 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)" = "d7b8a9123b8027467bce0099fe556c628a53c8d83df0507084c31e9ba2e39aff" -"checksum arrayref 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)" = "a4c527152e37cf757a3f78aae5a06fbeefdb07ccc535c980a3208ee3060dd544" -"checksum arrayvec 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)" = "cd9fd44efafa8690358b7408d253adf110036b88f55672a933f01d616ad9b1b9" -"checksum arrayvec 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "cff77d8686867eceff3105329d4698d96c2391c176d5d03adc90c7389162b5b8" -"checksum asn1_der 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)" = "6fce6b6a0ffdafebd82c87e79e3f40e8d2c523e5fea5566ff6b90509bf98d638" -"checksum asn1_der_derive 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "0d0864d84b8e07b145449be9a8537db86bf9de5ce03b913214694643b4743502" -"checksum assert_cmd 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)" = "6283bac8dd7226470d491bc4737816fea4ca1fba7a2847f2e9097fd6bfb4624c" -"checksum assert_matches 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7deb0a829ca7bcfaf5da70b073a8d128619259a7be8216a355e23f00763059e5" -"checksum async-std 1.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "538ecb01eb64eecd772087e5b6f7540cbc917f047727339a472dafed2185b267" -"checksum async-task 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "0ac2c016b079e771204030951c366db398864f5026f84a44dafb0ff20f02085d" -"checksum async-tls 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "6ce6977f57fa68da77ffe5542950d47e9c23d65f5bc7cb0a9f8700996913eec7" -"checksum atty 0.2.14 (registry+https://github.com/rust-lang/crates.io-index)" = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" -"checksum autocfg 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)" = "1d49d90015b3c36167a20fe2810c5cd875ad504b39cff3d4eae7977e6b7c1cb2" -"checksum autocfg 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "f8aac770f1885fd7e387acedd76065302551364496e46b3dd00860b2f8359b9d" -"checksum backtrace 0.3.44 (registry+https://github.com/rust-lang/crates.io-index)" = "e4036b9bf40f3cf16aba72a3d65e8a520fc4bafcdc7079aea8f848c58c5b5536" -"checksum backtrace-sys 0.1.32 (registry+https://github.com/rust-lang/crates.io-index)" = "5d6575f128516de27e3ce99689419835fce9643a9b215a14d2b5b685be018491" -"checksum base58 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "5024ee8015f02155eee35c711107ddd9a9bf3cb689cf2a9089c97e79b6e1ae83" -"checksum base64 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)" = "0b25d992356d2eb0ed82172f5248873db5560c4721f564b13cb5193bda5e668e" -"checksum base64 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b41b7ea54a0c9d92199de89e20e58d49f02f8e699814ef3fdf266f6f748d15c7" -"checksum base64 0.9.3 (registry+https://github.com/rust-lang/crates.io-index)" = "489d6c0ed21b11d038c31b6ceccca973e65d73ba3bd8ecb9a2babf5546164643" -"checksum bincode 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "5753e2a71534719bf3f4e57006c3a4f0d2c672a4b676eec84161f763eca87dbf" -"checksum bindgen 0.49.4 (registry+https://github.com/rust-lang/crates.io-index)" = "4c07087f3d5731bf3fb375a81841b99597e25dc11bd3bc72d16d43adf6624a6e" -"checksum bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "cf1de2fe8c75bc145a2f577add951f8134889b4795d47466a54a5c846d691693" -"checksum bitmask 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "5da9b3d9f6f585199287a473f4f8dfab6566cf827d15c00c219f53c645687ead" -"checksum bitvec 0.15.2 (registry+https://github.com/rust-lang/crates.io-index)" = "a993f74b4c99c1908d156b8d2e0fb6277736b0ecbd833982fd1241d39b2766a6" -"checksum blake2 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)" = "94cb07b0da6a73955f8fb85d24c466778e70cda767a568229b104f0264089330" -"checksum blake2-rfc 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)" = "5d6d530bdd2d52966a6d03b7a964add7ae1a288d25214066fd4b600f0f796400" -"checksum blake2b_simd 0.5.10 (registry+https://github.com/rust-lang/crates.io-index)" = "d8fb2d74254a3a0b5cac33ac9f8ed0e44aa50378d9dbb2e5d83bd21ed1dc2c8a" -"checksum block-buffer 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)" = "c0940dc441f31689269e10ac70eb1002a3a1d3ad1390e030043662eb7fe4688b" -"checksum block-cipher-trait 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)" = "1c924d49bd09e7c06003acda26cd9742e796e34282ec6c1189404dee0c1f4774" -"checksum block-padding 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "fa79dedbb091f449f1f39e53edf88d5dbe95f895dae6135a8d7b881fb5af73f5" -"checksum broadcaster 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d9c972e21e0d055a36cf73e4daae870941fe7a8abcd5ac3396aab9e4c126bd87" -"checksum bs58 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)" = "c95ee6bba9d950218b6cc910cf62bc9e0a171d0f4537e3627b0f54d08549b188" -"checksum bs58 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b170cd256a3f9fa6b9edae3e44a7dfdfc77e8124dbc3e2612d75f9c3e2396dae" -"checksum bstr 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)" = "502ae1441a0a5adb8fbd38a5955a6416b9493e92b465de5e4a9bde6a539c2c48" -"checksum build-helper 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "bdce191bf3fa4995ce948c8c83b4640a1745457a149e73c6db75b4ffe36aad5f" -"checksum bumpalo 3.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1f359dc14ff8911330a51ef78022d376f25ed00248912803b58f00cb1c27f742" -"checksum byte-slice-cast 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)" = "b0a5e3906bcbf133e33c1d4d95afc664ad37fbdb9f6568d8043e7ea8c27d93d3" -"checksum byte-tools 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "e3b5ca7a04898ad4bcd41c90c5285445ff5b791899bb1b0abdd2a2aa791211d7" -"checksum byteorder 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)" = "0fc10e8cc6b2580fda3f36eb6dc5316657f812a3df879a44a66fc9f0fdbc4855" -"checksum byteorder 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "08c48aae112d48ed9f069b33538ea9e3e90aa263cfa3d1c24309612b1f7472de" -"checksum bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)" = "206fdffcfa2df7cbe15601ef46c813fce0965eb3286db6b56c583b814b51c81c" -"checksum bytes 0.5.4 (registry+https://github.com/rust-lang/crates.io-index)" = "130aac562c0dd69c56b3b1cc8ffd2e17be31d0b6c25b61c96b76231aa23e39e1" -"checksum c2-chacha 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "214238caa1bf3a496ec3392968969cab8549f96ff30652c9e56885329315f6bb" -"checksum c_linked_list 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "4964518bd3b4a8190e832886cdc0da9794f12e8e6c1613a9e90ff331c4c8724b" -"checksum cargo_metadata 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)" = "46e3374c604fb39d1a2f35ed5e4a4e30e60d01fab49446e08f1b3e9a90aef202" -"checksum cast 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "4b9434b9a5aa1450faa3f9cb14ea0e8c53bb5d2b3c1bfd1ab4fc03e9f33fbfb0" -"checksum cc 1.0.50 (registry+https://github.com/rust-lang/crates.io-index)" = "95e28fa049fda1c330bcf9d723be7663a899c4679724b34c81e9f5a326aab8cd" -"checksum cexpr 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)" = "fce5b5fb86b0c57c20c834c1b412fd09c77c8a59b9473f86272709e78874cd1d" -"checksum cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)" = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822" -"checksum chacha20-poly1305-aead 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "77d2058ba29594f69c75e8a9018e0485e3914ca5084e3613cd64529042f5423b" -"checksum chrono 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)" = "31850b4a4d6bae316f7a09e691c944c28299298837edc0a03f755618c23cbc01" -"checksum clang-sys 0.28.1 (registry+https://github.com/rust-lang/crates.io-index)" = "81de550971c976f176130da4b2978d3b524eaa0fd9ac31f3ceb5ae1231fb4853" -"checksum clap 2.33.0 (registry+https://github.com/rust-lang/crates.io-index)" = "5067f5bb2d80ef5d68b4c87db81601f0b75bca627bc2ef76b141d7b846a3c6d9" -"checksum clear_on_drop 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "97276801e127ffb46b66ce23f35cc96bd454fa311294bced4bbace7baa8b1d17" -"checksum cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "ddfc5b9aa5d4507acaf872de71051dfd0e309860e88966e1051e462a077aac4f" -"checksum cmake 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)" = "81fb25b677f8bf1eb325017cb6bb8452f87969db0fedb4f757b297bee78a7c62" -"checksum console_error_panic_hook 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "b8d976903543e0c48546a91908f21588a680a8c8f984df9a5d69feccb2b2a211" -"checksum console_log 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "1e7871d2947441b0fdd8e2bd1ce2a2f75304f896582c0d572162d48290683c48" -"checksum const-random 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "2f1af9ac737b2dd2d577701e59fd09ba34822f6f2ebdb30a7647405d9e55e16a" -"checksum const-random-macro 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "25e4c606eb459dd29f7c57b2e0879f2b6f14ee130918c2b78ccb58a9624e6c7a" -"checksum constant_time_eq 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "245097e9a4535ee1e3e3931fcfcd55a796a44c643e8596ff6566d68f09b87bbc" -"checksum core-foundation 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)" = "25b9e03f145fd4f2bf705e07b900cd41fc636598fe5dc452fd0db1441c3f496d" -"checksum core-foundation-sys 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)" = "e7ca8a5221364ef15ce201e8ed2f609fc312682a8f4e0e3d4aa5879764e0fa3b" -"checksum cranelift-bforest 0.58.0 (registry+https://github.com/rust-lang/crates.io-index)" = "fd0f53d59dc9ab1c8ab68c991d8406b52b7a0aab0b15b05a3a6895579c4e5dd9" -"checksum cranelift-codegen 0.58.0 (registry+https://github.com/rust-lang/crates.io-index)" = "0381a794836fb994c47006465d46d46be072483b667f36013d993b9895117fee" -"checksum cranelift-codegen-meta 0.58.0 (registry+https://github.com/rust-lang/crates.io-index)" = "208c3c8d82bfef32a534c5020c6cfc3bc92f41388f1246b7bb98cf543331abaa" -"checksum cranelift-codegen-shared 0.58.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ea048c456a517e56fd6df8f0e3947922897e6e6f61fbc5eb557a36c7b8ff6394" -"checksum cranelift-entity 0.58.0 (registry+https://github.com/rust-lang/crates.io-index)" = "0c8c7ed50812194c9e9de1fa39c77b39fc9ab48173d5e7ee88b25b6a8953e9b8" -"checksum cranelift-frontend 0.58.0 (registry+https://github.com/rust-lang/crates.io-index)" = "21ceb931d9f919731df1b1ecdc716b5c66384b413a7f95909d1f45441ab9bef5" -"checksum cranelift-native 0.58.0 (registry+https://github.com/rust-lang/crates.io-index)" = "564ee82268bc25b914fcf331edfc2452f2d9ca34f976b187b4ca668beba250c8" -"checksum cranelift-wasm 0.58.0 (registry+https://github.com/rust-lang/crates.io-index)" = "de63e2271b374be5b07f359184e2126a08fb24d24a740cbc178b7e0107ddafa5" -"checksum crc32fast 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ba125de2af0df55319f41944744ad91c71113bf74a4646efff39afe1f6842db1" -"checksum criterion 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)" = "0363053954f3e679645fc443321ca128b7b950a6fe288cf5f9335cc22ee58394" -"checksum criterion 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "1fc755679c12bda8e5523a71e4d654b6bf2e14bd838dfc48cde6559a05caf7d1" -"checksum criterion-plot 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "76f9212ddf2f4a9eb2d401635190600656a1f88a932ef53d06e7fa4c7e02fb8e" -"checksum criterion-plot 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "a01e15e0ea58e8234f96146b1f91fa9d0e4dd7a38da93ff7a75d42c0b9d3a545" -"checksum crossbeam-channel 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "acec9a3b0b3559f15aee4f90746c4e5e293b701c0f7d3925d24e01645267b68c" -"checksum crossbeam-deque 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)" = "c3aa945d63861bfe624b55d153a39684da1e8c0bc8fba932f7ee3a3c16cea3ca" -"checksum crossbeam-epoch 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "5064ebdbf05ce3cb95e45c8b086f72263f4166b29b97f6baff7ef7fe047b55ac" -"checksum crossbeam-queue 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "c695eeca1e7173472a32221542ae469b3e9aac3a4fc81f7696bcad82029493db" -"checksum crossbeam-utils 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ce446db02cdc3165b94ae73111e570793400d0794e46125cc4056c81cbb039f4" -"checksum crunchy 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" -"checksum crypto-mac 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "4434400df11d95d556bac068ddfedd482915eb18fe8bea89bc80b6e4b1c179e5" -"checksum csv 1.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "00affe7f6ab566df61b4be3ce8cf16bc2576bca0963ceb0955e45d514bf9a279" -"checksum csv-core 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)" = "2b2466559f260f48ad25fe6317b3c8dac77b5bdb5763ac7d9d6103530663bc90" -"checksum ct-logs 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "4d3686f5fa27dbc1d76c751300376e167c5a43387f44bb451fd1c24776e49113" -"checksum ctor 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)" = "cd8ce37ad4184ab2ce004c33bf6379185d3b1c95801cab51026bd271bf68eedc" -"checksum ctr 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "022cd691704491df67d25d006fe8eca083098253c4d43516c2206479c58c6736" -"checksum cuckoofilter 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "8dd43f7cfaffe0a386636a10baea2ee05cc50df3b77bea4a456c9572a939bf1f" -"checksum curve25519-dalek 1.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "8b7dcd30ba50cdf88b55b033456138b7c0ac4afdc436d82e1b79f370f24cc66d" -"checksum curve25519-dalek 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "26778518a7f6cffa1d25a44b602b62b979bd88adb9e99ffec546998cf3404839" -"checksum data-encoding 2.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "f4f47ca1860a761136924ddd2422ba77b2ea54fe8cc75b9040804a0d9d32ad97" -"checksum derive_more 0.99.3 (registry+https://github.com/rust-lang/crates.io-index)" = "a806e96c59a76a5ba6e18735b6cf833344671e61e7863f2edb5c518ea2cac95c" -"checksum difference 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "524cbf6897b527295dff137cec09ecf3a05f4fddffd7dfcd1585403449e74198" -"checksum digest 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)" = "f3d0c8c8752312f9713efd397ff63acb9f85585afbf179282e720e7704954dd5" -"checksum directories 2.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "551a778172a450d7fc12e629ca3b0428d00f6afa9a43da1b630d54604e97371c" -"checksum dirs-sys 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "afa0b23de8fd801745c471deffa6e12d248f962c9fd4b4c33787b055599bde7b" -"checksum dns-parser 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "c4d33be9473d06f75f58220f71f7a9317aca647dc061dbd3c361b0bef505fbea" -"checksum doc-comment 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "923dea538cea0aa3025e8685b20d6ee21ef99c4f77e954a30febbaac5ec73a97" -"checksum ed25519-dalek 1.0.0-pre.3 (registry+https://github.com/rust-lang/crates.io-index)" = "978710b352437433c97b2bff193f2fb1dfd58a093f863dd95e225a19baa599a2" -"checksum either 1.5.3 (registry+https://github.com/rust-lang/crates.io-index)" = "bb1f6b1ce1c140482ea30ddd3335fc0024ac7ee112895426e0a629a6c20adfe3" -"checksum enumflags2 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)" = "33121c8782ba948ba332dab29311b026a8716dc65a1599e5b88f392d38496af8" -"checksum enumflags2_derive 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)" = "ecf634c5213044b8d54a46dd282cf5dd1f86bb5cb53e92c409cb4680a7fb9894" -"checksum env_logger 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)" = "aafcde04e90a5226a6443b7aabdb016ba2f8307c847d524724bd9b346dd1a2d3" -"checksum env_logger 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)" = "44533bbbb3bb3c1fa17d9f2e4e38bbbaf8396ba82193c4cb1b6445d711445d36" -"checksum environmental 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "516aa8d7a71cb00a1c4146f0798549b93d083d4f189b3ced8f3de6b8f11ee6c4" -"checksum erased-serde 0.3.10 (registry+https://github.com/rust-lang/crates.io-index)" = "cd7d80305c9bd8cd78e3c753eb9fb110f83621e5211f1a3afffcc812b104daf9" -"checksum errno 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)" = "c2a071601ed01b988f896ab14b95e67335d1eeb50190932a1320f7fe3cadc84e" -"checksum errno-dragonfly 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "14ca354e36190500e1e1fb267c647932382b54053c50b14970856c0b00a35067" -"checksum escargot 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "74cf96bec282dcdb07099f7e31d9fed323bca9435a09aba7b6d99b7617bca96d" -"checksum evm 0.15.0 (registry+https://github.com/rust-lang/crates.io-index)" = "272f65e18a2b6449b682bfcdf6c3ccc63db0b93898d89c0fb237548bbfc764a5" -"checksum evm-core 0.15.0 (registry+https://github.com/rust-lang/crates.io-index)" = "66534d42e13d50f9101bed87cb568fd5aa929c600c3c13f8dadbbf39f5635945" -"checksum evm-gasometer 0.15.0 (registry+https://github.com/rust-lang/crates.io-index)" = "39bc5b592803ca644781fe2290b7305ea5182f7c9516d615ddfb2308c2cab639" -"checksum evm-runtime 0.15.0 (registry+https://github.com/rust-lang/crates.io-index)" = "389e4b447fb26971a9c76c8aa49c0ab435f8e46e8fc46e1bc4ebf01f3c2b428f" -"checksum exit-future 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e43f2f1833d64e33f15592464d6fdd70f349dda7b1a53088eb83cd94014008c5" -"checksum faerie 0.14.0 (registry+https://github.com/rust-lang/crates.io-index)" = "74b9ed6159e4a6212c61d9c6a86bee01876b192a64accecf58d5b5ae3b667b52" -"checksum failure 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "f8273f13c977665c5db7eb2b99ae520952fe5ac831ae4cd09d80c4c7042b5ed9" -"checksum failure_derive 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "0bc225b78e0391e4b8683440bf2e63c2deeeb2ce5189eab46e2b68c6d3725d08" -"checksum fake-simd 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "e88a8acf291dafb59c2d96e8f59828f3838bb1a70398823ade51a84de6a6deed" -"checksum fallible-iterator 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "4443176a9f2c162692bd3d352d745ef9413eec5782a80d8fd6f8a1ac692a07f7" -"checksum fdlimit 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "9084c55bb76efb1496328976db88320fe7d9ee86e649e83c4ecce3ba7a9a35d1" -"checksum file-per-thread-logger 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "8505b75b31ef7285168dd237c4a7db3c1f3e0927e7d314e670bc98e854272fe9" -"checksum finality-grandpa 0.11.1 (registry+https://github.com/rust-lang/crates.io-index)" = "3cbb25bef9fcad97fb31e817da280b1c9174435b8769c770ee190a330dd181ea" -"checksum fixed-hash 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "3367952ceb191f4ab95dd5685dc163ac539e36202f9fcfd0cb22f9f9c542fefc" -"checksum fixedbitset 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "37ab347416e802de484e4d03c7316c48f1ecb56574dfd4a46a80f173ce1de04d" -"checksum flate2 1.0.13 (registry+https://github.com/rust-lang/crates.io-index)" = "6bd6d6f4752952feb71363cffc9ebac9411b75b87c6ab6058c40c8900cf43c0f" -"checksum fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)" = "2fad85553e09a6f881f739c29f0b00b0f01357c743266d478b68951ce23285f3" -"checksum foreign-types 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" -"checksum foreign-types-shared 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" -"checksum fs-swap 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)" = "921d332c89b3b61a826de38c61ee5b6e02c56806cade1b0e5d81bd71f57a71bb" -"checksum fs2 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)" = "9564fc758e15025b46aa6643b1b77d047d1a56a1aea6e01002ac0c7026876213" -"checksum fs_extra 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "5f2a4a2034423744d2cc7ca2068453168dcdb82c438419e639a26bd87839c674" -"checksum fuchsia-cprng 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "a06f77d526c1a601b7c4cdd98f54b5eaabffc14d5f2f0296febdc7f357c6d3ba" -"checksum fuchsia-zircon 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "2e9763c69ebaae630ba35f74888db465e49e259ba1bc0eda7d06f4a067615d82" -"checksum fuchsia-zircon-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "3dcaa9ae7725d12cdb85b3ad99a434db70b468c09ded17e012d86b5c1010f7a7" -"checksum futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)" = "1b980f2816d6ee8673b6517b52cb0e808a180efc92e5c19d02cdda79066703ef" -"checksum futures 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "5c329ae8753502fb44ae4fc2b622fa2a94652c41e795143765ba0927f92ab780" -"checksum futures-channel 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "f0c77d04ce8edd9cb903932b608268b3fffec4163dc053b3b402bf47eac1f1a8" -"checksum futures-channel-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)" = "d5e5f4df964fa9c1c2f8bddeb5c3611631cacd93baf810fc8bb2fb4b495c263a" -"checksum futures-core 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "f25592f769825e89b92358db00d26f965761e094951ac44d3663ef25b7ac464a" -"checksum futures-core-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)" = "b35b6263fb1ef523c3056565fa67b1d16f0a8604ff12b11b08c25f28a734c60a" -"checksum futures-cpupool 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "ab90cde24b3319636588d0c35fe03b1333857621051837ed769faefb4c2162e4" -"checksum futures-diagnose 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "fdcef58a173af8148b182684c9f2d5250875adbcaff7b5794073894f9d8634a9" -"checksum futures-executor 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "f674f3e1bcb15b37284a90cedf55afdba482ab061c407a9c0ebbd0f3109741ba" -"checksum futures-io 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "a638959aa96152c7a4cddf50fcb1e3fede0583b27157c26e67d6f99904090dc6" -"checksum futures-macro 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "9a5081aa3de1f7542a794a397cde100ed903b0630152d0973479018fd85423a7" -"checksum futures-sink 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "3466821b4bc114d95b087b850a724c6f83115e929bc88f1fa98a3304a944c8a6" -"checksum futures-task 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "7b0a34e53cf6cdcd0178aa573aed466b646eb3db769570841fda0c7ede375a27" -"checksum futures-timer 2.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "a1de7508b218029b0f01662ed8f61b1c964b3ae99d6f25462d0f55a595109df6" -"checksum futures-timer 3.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "e64b03909df88034c26dc1547e8970b91f98bdb65165d6a4e9110d94263dbb2c" -"checksum futures-util 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "22766cf25d64306bedf0384da004d05c9974ab104fcc4528f1236181c18004c5" -"checksum futures-util-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)" = "5ce968633c17e5f97936bd2797b6e38fb56cf16a7422319f7ec2e30d3c470e8d" -"checksum futures_codec 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "a0a73299e4718f5452e45980fc1d6957a070abe308d3700b63b8673f47e1c2b3" -"checksum fxhash 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "c31b6d751ae2c7f11320402d34e41349dd1016f8d5d45e48c4312bc8625af50c" -"checksum gcc 0.3.55 (registry+https://github.com/rust-lang/crates.io-index)" = "8f5f3913fa0bfe7ee1fd8248b6b9f42a5af4b9d65ec2dd2c3c26132b950ecfc2" -"checksum generic-array 0.12.3 (registry+https://github.com/rust-lang/crates.io-index)" = "c68f0274ae0e023facc3c97b2e00f076be70e254bc851d972503b328db79b2ec" -"checksum get_if_addrs 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)" = "abddb55a898d32925f3148bd281174a68eeb68bbfd9a5938a57b18f506ee4ef7" -"checksum get_if_addrs-sys 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "0d04f9fb746cf36b191c00f3ede8bde9c8e64f9f4b05ae2694a9ccf5e3f5ab48" -"checksum getrandom 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)" = "7abc8dd8451921606d809ba32e95b6111925cd2906060d2dcc29c070220503eb" -"checksum gimli 0.19.0 (registry+https://github.com/rust-lang/crates.io-index)" = "162d18ae5f2e3b90a993d202f1ba17a5633c2484426f8bcae201f86194bacd00" -"checksum gimli 0.20.0 (registry+https://github.com/rust-lang/crates.io-index)" = "81dd6190aad0f05ddbbf3245c54ed14ca4aa6dd32f22312b70d8f168c3e3e633" -"checksum glob 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)" = "8be18de09a56b60ed0edf84bc9df007e30040691af7acd1c41874faac5895bfb" -"checksum glob 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "9b919933a397b79c37e33b77bb2aa3dc8eb6e165ad809e58ff75bc7db2e34574" -"checksum globset 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)" = "925aa2cac82d8834e2b2a4415b6f6879757fb5c0928fc445ae76461a12eed8f2" -"checksum gloo-timers 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "0b2d17dbd803c2fc86cb1b613adf63192046a7176f383a8302594654752c4c4a" -"checksum goblin 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "3081214398d39e4bd7f2c1975f0488ed04614ffdd976c6fc7a0708278552c0da" -"checksum h2 0.1.26 (registry+https://github.com/rust-lang/crates.io-index)" = "a5b34c246847f938a410a03c5458c7fee2274436675e76d8b903c08efc29c462" -"checksum h2 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b9433d71e471c1736fd5a61b671fc0b148d7a2992f666c958d03cd8feb3b88d1" -"checksum hash-db 0.15.2 (registry+https://github.com/rust-lang/crates.io-index)" = "d23bd4e7b5eda0d0f3a307e8b381fdc8ba9000f26fbe912250c0a4cc3956364a" -"checksum hash256-std-hasher 0.15.2 (registry+https://github.com/rust-lang/crates.io-index)" = "92c171d55b98633f4ed3860808f004099b36c1cc29c42cfc53aa8591b21efcf2" -"checksum hashbrown 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e1de41fb8dba9714efd92241565cdff73f78508c95697dd56787d3cba27e2353" -"checksum hashbrown 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)" = "8e6073d0ca812575946eb5f35ff68dbe519907b25c42530389ff946dc84c6ead" -"checksum heck 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "20564e78d53d2bb135c343b3f47714a56af2061f1c928fdb541dc7b9fdd94205" -"checksum hermit-abi 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)" = "e2c55f143919fbc0bc77e427fe2d74cf23786d7c1875666f2fde3ac3c659bb67" -"checksum hex 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "644f9158b2f133fd50f5fb3242878846d9eb792e445c893805ff0e3824006e35" -"checksum hex-literal 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "961de220ec9a91af2e1e5bd80d02109155695e516771762381ef8581317066e0" -"checksum hex-literal-impl 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "9d4c5c844e2fee0bf673d54c2c177f1713b3d2af2ff6e666b49cb7572e6cf42d" -"checksum hmac 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)" = "5dcb5e64cda4c23119ab41ba960d1e170a774c8e4b9d9e6a9bc18aabf5e59695" -"checksum hmac-drbg 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "c6e570451493f10f6581b48cdd530413b63ea9e780f544bfd3bdcaa0d89d1a7b" -"checksum http 0.1.21 (registry+https://github.com/rust-lang/crates.io-index)" = "d6ccf5ede3a895d8856620237b2f02972c1bbc78d2965ad7fe8838d4a0ed41f0" -"checksum http 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b708cc7f06493459026f53b9a61a7a121a5d1ec6238dee58ea4941132b30156b" -"checksum http-body 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "6741c859c1b2463a423a1dbce98d418e6c3c3fc720fb0d45528657320920292d" -"checksum http-body 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "13d5ff830006f7646652e057693569bfe0d51760c0085a071769d142a205111b" -"checksum httparse 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "cd179ae861f0c2e53da70d892f5f3029f9594be0c41dc5269cd371691b1dc2f9" -"checksum humantime 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "df004cfca50ef23c36850aaaa59ad52cc70d0e90243c3c7737a4dd32dc7a3c4f" -"checksum hyper 0.10.16 (registry+https://github.com/rust-lang/crates.io-index)" = "0a0652d9a2609a968c14be1a9ea00bf4b1d64e2e1f53a1b51b6fff3a6e829273" -"checksum hyper 0.12.35 (registry+https://github.com/rust-lang/crates.io-index)" = "9dbe6ed1438e1f8ad955a4701e9a944938e9519f6888d12d8558b645e247d5f6" -"checksum hyper 0.13.2 (registry+https://github.com/rust-lang/crates.io-index)" = "fa1c527bbc634be72aa7ba31e4e4def9bbb020f5416916279b7c705cd838893e" -"checksum hyper-rustls 0.19.1 (registry+https://github.com/rust-lang/crates.io-index)" = "f6ea6215c7314d450ee45970ab8b3851ab447a0e6bafdd19e31b20a42dbb7faf" -"checksum hyper-tls 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "3a800d6aa50af4b5850b2b0f659625ce9504df908e9733b635720483be26174f" -"checksum idna 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "38f09e0f0b1fb55fdee1f17470ad800da77af5186a1a76c026b679358b7e844e" -"checksum idna 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "02e2673c30ee86b5b96a9cb52ad15718aa1f966f5ab9ad54a8b95d5ca33120a9" -"checksum impl-codec 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "1be51a921b067b0eaca2fad532d9400041561aa922221cc65f95a85641c6bf53" -"checksum impl-rlp 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "8f7a72f11830b52333f36e3b09a288333888bf54380fd0ac0790a3c31ab0f3c5" -"checksum impl-serde 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "58e3cae7e99c7ff5a995da2cf78dd0a5383740eda71d98cf7b1910c301ac69b8" -"checksum impl-serde 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "5bbe9ea9b182f0fb1cabbd61f4ff9b7b7b9197955e95a7e4c27de5055eb29ff8" -"checksum impl-trait-for-tuples 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "7ef5550a42e3740a0e71f909d4c861056a284060af885ae7aa6242820f920d9d" -"checksum indexmap 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "076f042c5b7b98f31d205f1249267e12a6518c1481e9dae9764af19b707d2292" -"checksum integer-sqrt 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "f65877bf7d44897a473350b1046277941cee20b263397e90869c50b6e766088b" -"checksum interleaved-ordered 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "141340095b15ed7491bd3d4ced9d20cebfb826174b6bb03386381f62b01e3d77" -"checksum iovec 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "b2b3ea6ff95e175473f8ffe6a7eb7c00d054240321b84c57051175fe3c1e075e" -"checksum ipnet 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "a859057dc563d1388c1e816f98a1892629075fc046ed06e845b883bb8b2916fb" -"checksum itertools 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)" = "f56a2d0bc861f9165be4eb3442afd3c236d8a98afd426f65d92324ae1091a484" -"checksum itoa 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)" = "b8b7a7c0c47db5545ed3fef7468ee7bb5b74691498139e4b3f6a20685dc6dd8e" -"checksum jobserver 0.1.21 (registry+https://github.com/rust-lang/crates.io-index)" = "5c71313ebb9439f74b00d9d2dcec36440beaf57a6aa0623068441dd7cd81a7f2" -"checksum js-sys 0.3.35 (registry+https://github.com/rust-lang/crates.io-index)" = "7889c7c36282151f6bf465be4700359318aef36baa951462382eae49e9577cf9" -"checksum jsonrpc-client-transports 14.0.5 (registry+https://github.com/rust-lang/crates.io-index)" = "0a9ae166c4d1f702d297cd76d4b55758ace80272ffc6dbb139fdc1bf810de40b" -"checksum jsonrpc-core 14.0.5 (registry+https://github.com/rust-lang/crates.io-index)" = "fe3b688648f1ef5d5072229e2d672ecb92cbff7d1c79bcf3fd5898f3f3df0970" -"checksum jsonrpc-core-client 14.0.5 (registry+https://github.com/rust-lang/crates.io-index)" = "080dc110be17701097df238fad3c816d4a478a1899dfbcf8ec8957dd40ec7304" -"checksum jsonrpc-derive 14.0.5 (registry+https://github.com/rust-lang/crates.io-index)" = "8609af8f63b626e8e211f52441fcdb6ec54f1a446606b10d5c89ae9bf8a20058" -"checksum jsonrpc-http-server 14.0.6 (registry+https://github.com/rust-lang/crates.io-index)" = "816d63997ea45d3634608edbef83ddb35e661f7c0b27b5b72f237e321f0e9807" -"checksum jsonrpc-pubsub 14.0.6 (registry+https://github.com/rust-lang/crates.io-index)" = "5b31c9b90731276fdd24d896f31bb10aecf2e5151733364ae81123186643d939" -"checksum jsonrpc-server-utils 14.0.5 (registry+https://github.com/rust-lang/crates.io-index)" = "95b7635e618a0edbbe0d2a2bbbc69874277c49383fcf6c3c0414491cfb517d22" -"checksum jsonrpc-ws-server 14.0.6 (registry+https://github.com/rust-lang/crates.io-index)" = "b94e5773b2ae66e0e02c80775ce6bbba6f15d5bb47c14ec36a36fcf94f8df851" -"checksum keccak 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "67c21572b4949434e4fc1e1978b99c5f77064153c59d998bf13ecd96fb5ecba7" -"checksum keccak-hasher 0.15.2 (registry+https://github.com/rust-lang/crates.io-index)" = "3468207deea1359a0e921591ae9b4c928733d94eb9d6a2eeda994cfd59f42cf8" -"checksum kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7507624b29483431c0ba2d82aece8ca6cdba9382bff4ddd0f7490560c056098d" -"checksum kv-log-macro 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)" = "8c54d9f465d530a752e6ebdc217e081a7a614b48cb200f6f0aee21ba6bc9aabb" -"checksum kvdb 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "03080afe6f42cd996da9f568d6add5d7fb5ee2ea7fb7802d2d2cbd836958fd87" -"checksum kvdb-memorydb 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b9355274e5a9e0a7e8ef43916950eae3949024de2a8dffe4d5a6c13974a37c8e" -"checksum kvdb-rocksdb 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "af36fd66ccd99f3f771ae39b75aaba28b952372b6debfb971134bf1f03466ab2" -"checksum kvdb-web 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7a985c47b4c46429e96033ebf6eaed784a81ceccb4e5df13d63f3b9078a4df81" -"checksum language-tags 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "a91d884b6667cd606bb5a69aa0c99ba811a115fc68915e7056ec08a46e93199a" -"checksum lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" -"checksum lazycell 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b294d6fa9ee409a054354afc4352b0b9ef7ca222c69b8812cbea9e7d2bf3783f" -"checksum leb128 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)" = "3576a87f2ba00f6f106fdfcd16db1d698d648a26ad8e0573cad8537c3c362d2a" -"checksum libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)" = "d515b1f41455adea1313a4a2ac8a8a477634fbae63cc6100e3aebb207ce61558" -"checksum libloading 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "f2b111a074963af1d37a139918ac6d49ad1d0d5e47f72fd55388619691a7d753" -"checksum libp2p 0.16.1 (registry+https://github.com/rust-lang/crates.io-index)" = "f6bf152b510950e1030f2d3dcca5f0b4017892be50348a15fd3eec8b90c826fb" -"checksum libp2p-core 0.16.0 (registry+https://github.com/rust-lang/crates.io-index)" = "3b874594c4b29de1a29f27871feba8e6cd13aa54a8a1e8f8c7cf3dfac5ca287c" -"checksum libp2p-core-derive 0.16.0 (registry+https://github.com/rust-lang/crates.io-index)" = "96d472e9d522f588805c77801de10b957be84e10f019ca5f869fa1825b15ea9b" -"checksum libp2p-deflate 0.16.0 (registry+https://github.com/rust-lang/crates.io-index)" = "2e25004d4d9837b44b22c5f1a69be1724a5168fef6cff1716b5176a972c3aa62" -"checksum libp2p-dns 0.16.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b99e552f9939b606eb4b59f7f64d9b01e3f96752f47e350fc3c5fc646ed3f649" -"checksum libp2p-floodsub 0.16.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1d3234f12e44f9a50351a9807b97fe7de11eb9ae4482370392ba10da6dc90722" -"checksum libp2p-gossipsub 0.16.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d46cb3e0841bd951cbf4feae56cdc081e6347836a644fb260c3ec554149b4006" -"checksum libp2p-identify 0.16.0 (registry+https://github.com/rust-lang/crates.io-index)" = "bfeb935a9bd41263e4f3a24b988e9f4a044f3ae89ac284e83c17fe2f84e0d66b" -"checksum libp2p-kad 0.16.1 (registry+https://github.com/rust-lang/crates.io-index)" = "76c260a92309112fff855ab2bd8f26c246c1dd380b87021abe61358dedb9748d" -"checksum libp2p-mdns 0.16.0 (registry+https://github.com/rust-lang/crates.io-index)" = "881fcfb360c2822db9f0e6bb6f89529621556ed9a8b038313414eda5107334de" -"checksum libp2p-mplex 0.16.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d8507b37ad0eed275efcde67a023c3d85af6c80768b193845b9288e848e1af95" -"checksum libp2p-noise 0.16.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ac7d33809afdf6794f09fdb2f9f94e1550ae230be5bae6430a078eb96fc9e5a6" -"checksum libp2p-ping 0.16.0 (registry+https://github.com/rust-lang/crates.io-index)" = "33d22f2f228b3a828dca1cb8aa9fa331e0bc9c36510cb2c1916956e20dc85e8c" -"checksum libp2p-plaintext 0.16.0 (registry+https://github.com/rust-lang/crates.io-index)" = "56126a204d7b3382bac163143ff4125a14570b3ba76ba979103d1ae1abed1923" -"checksum libp2p-pnet 0.16.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b916938a8868f75180aeeffcc6a516a922d165e8fa2a90b57bad989d1ccbb57a" -"checksum libp2p-secio 0.16.1 (registry+https://github.com/rust-lang/crates.io-index)" = "1219e9ecb4945d7331a05f5ffe96a1f6e28051bfa1223d4c60353c251de0354e" -"checksum libp2p-swarm 0.16.1 (registry+https://github.com/rust-lang/crates.io-index)" = "275471e7c0e88ae004660866cd54f603bd8bd1f4caef541a27f50dd8640c4d4c" -"checksum libp2p-tcp 0.16.0 (registry+https://github.com/rust-lang/crates.io-index)" = "f9e80ad4e3535345f3d666554ce347d3100453775611c05c60786bf9a1747a10" -"checksum libp2p-uds 0.16.0 (registry+https://github.com/rust-lang/crates.io-index)" = "76d329564a43da9d0e055a5b938633c4a8ceab1f59cec133fbc4647917c07341" -"checksum libp2p-wasm-ext 0.16.1 (registry+https://github.com/rust-lang/crates.io-index)" = "7d40c95ac1a9b7fb7770616e4165f34559885337f3be485b32acdd085261be3a" -"checksum libp2p-websocket 0.16.0 (registry+https://github.com/rust-lang/crates.io-index)" = "5351ca9eea122081c1c0f9323164d2918cac29b5a6bfe5054d4ba8ec9447cf42" -"checksum libp2p-yamux 0.16.0 (registry+https://github.com/rust-lang/crates.io-index)" = "f72aa5a7273c29c6eaea09108a49feaefc7456164863f64f86a193f9e78a4b7f" -"checksum librocksdb-sys 6.2.4 (registry+https://github.com/rust-lang/crates.io-index)" = "0a0785e816e1e11e7599388a492c61ef80ddc2afc91e313e61662cce537809be" -"checksum libsecp256k1 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)" = "1fc1e2c808481a63dc6da2074752fdd4336a3c8fcc68b83db6f1fd5224ae7962" -"checksum libz-sys 1.0.25 (registry+https://github.com/rust-lang/crates.io-index)" = "2eb5e43362e38e2bca2fd5f5134c4d4564a23a5c28e9b95411652021a8675ebe" -"checksum linked-hash-map 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "ae91b68aebc4ddb91978b11a1b02ddd8602a05ec19002801c5666000e05e0f83" -"checksum linked_hash_set 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "3c7c91c4c7bbeb4f2f7c4e5be11e6a05bd6830bc37249c47ce1ad86ad453ff9c" -"checksum lock_api 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "79b2de95ecb4691949fea4716ca53cdbcfccb2c612e19644a8bad05edcf9f47b" -"checksum log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)" = "e19e8d5c34a3e0e2223db8e060f9e8264aeeb5c5fc64a4ee9965c062211c024b" -"checksum log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)" = "14b6052be84e6b71ab17edffc2eeabf5c2c3ae1fdb464aae35ac50c67a44e1f7" -"checksum lru 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)" = "5d8f669d42c72d18514dfca8115689c5f6370a17d980cb5bd777a67f404594c8" -"checksum lru 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)" = "0609345ddee5badacf857d4f547e0e5a2e987db77085c24cd887f73573a04237" -"checksum mach 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "86dd2487cdfea56def77b88438a2c915fb45113c5319bfe7e14306ca4cd0b0e1" -"checksum matches 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "7ffc5c5338469d4d3ea17d269fa8ea3512ad247247c30bd2df69e68309ed0a08" -"checksum maybe-uninit 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "60302e4db3a61da70c0cb7991976248362f30319e88850c487b9b95bbf059e00" -"checksum memchr 2.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "53445de381a1f436797497c61d851644d0e8e88e6140f22872ad33a704933978" -"checksum memoffset 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)" = "75189eb85871ea5c2e2c15abbdd541185f63b408415e5051f5cac122d8c774b9" -"checksum memory-db 0.19.0 (registry+https://github.com/rust-lang/crates.io-index)" = "198831fe8722331a395bc199a5d08efbc197497ef354cb4c77b969c02ffc0fc4" -"checksum memory_units 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "71d96e3f3c0b6325d8ccd83c33b28acb183edcb6c67938ba104ec546854b0882" -"checksum merlin 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "2b0942b357c1b4d0dc43ba724674ec89c3218e6ca2b3e8269e7cb53bcecd2f6e" -"checksum mime 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)" = "ba626b8a6de5da682e1caa06bdb42a335aee5a84db8e5046a3e8ab17ba0a3ae0" -"checksum miniz_oxide 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)" = "aa679ff6578b1cddee93d7e82e263b94a575e0bfced07284eb0c037c1d2416a5" -"checksum mio 0.6.21 (registry+https://github.com/rust-lang/crates.io-index)" = "302dec22bcf6bae6dfb69c647187f4b4d0fb6f535521f7bc022430ce8e12008f" -"checksum mio-extras 2.0.6 (registry+https://github.com/rust-lang/crates.io-index)" = "52403fe290012ce777c4626790c8951324a2b9e3316b3143779c72b029742f19" -"checksum mio-uds 0.6.7 (registry+https://github.com/rust-lang/crates.io-index)" = "966257a94e196b11bb43aca423754d87429960a768de9414f3691d6957abf125" -"checksum miow 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "8c1f2f3b1cf331de6896aabf6e9d55dca90356cc9960cca7eaaf408a355ae919" -"checksum more-asserts 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "0debeb9fcf88823ea64d64e4a815ab1643f33127d995978e099942ce38f25238" -"checksum multimap 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "a97fbd5d00e0e37bfb10f433af8f5aaf631e739368dc9fc28286ca81ca4948dc" -"checksum multistream-select 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "f938ffe420493e77c8b6cbcc3f282283f68fc889c5dcbc8e51668d5f3a01ad94" -"checksum names 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ef320dab323286b50fb5cdda23f61c796a72a89998ab565ca32525c5c556f2da" -"checksum native-tls 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "4b2df1a4c22fd44a62147fd8f13dd0f95c9d8ca7b2610299b2a2f9cf8964274e" -"checksum net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)" = "42550d9fb7b6684a6d404d9fa7250c2eb2646df731d1c06afc06dcee9e1bcf88" -"checksum nix 0.17.0 (registry+https://github.com/rust-lang/crates.io-index)" = "50e4785f2c3b7589a0d0c1dd60285e1188adac4006e8abd6dd578e1567027363" -"checksum nodrop 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)" = "72ef4a56884ca558e5ddb05a1d1e7e1bfd9a68d9ed024c21704cc98872dae1bb" -"checksum nohash-hasher 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "2bf50223579dc7cdcfb3bfcacf7069ff68243f8c363f62ffa99cf000a6b9c451" -"checksum nom 4.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "2ad2a91a8e869eeb30b9cb3119ae87773a8f4ae617f41b1eb9c154b2905f7bd6" -"checksum num-bigint 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)" = "090c7f9998ee0ff65aa5b723e4009f7b217707f1fb5ea551329cc4d6231fb304" -"checksum num-integer 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)" = "3f6ea62e9d81a77cd3ee9a2a5b9b609447857f3d358704331e4ef39eb247fcba" -"checksum num-rational 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "da4dc79f9e6c81bef96148c8f6b8e72ad4541caa4a24373e900a36da07de03a3" -"checksum num-traits 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)" = "c62be47e61d1842b9170f0fdeec8eba98e60e90e5446449a0545e5152acd7096" -"checksum num_cpus 1.12.0 (registry+https://github.com/rust-lang/crates.io-index)" = "46203554f085ff89c235cd12f7075f3233af9b11ed7c9e16dfe2560d03313ce6" -"checksum ole32-sys 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "5d2c49021782e5233cd243168edfa8037574afed4eba4bbaf538b3d8d1789d8c" -"checksum once_cell 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b1c601810575c99596d4afc46f78a678c80105117c379eb3650cf99b8a21ce5b" -"checksum oorandom 11.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ebcec7c9c2a95cacc7cd0ecb89d8a8454eca13906f6deb55258ffff0adeb9405" -"checksum opaque-debug 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "2839e79665f131bdb5782e51f2c6c9599c133c6098982a54c794358bf432529c" -"checksum openssl 0.10.28 (registry+https://github.com/rust-lang/crates.io-index)" = "973293749822d7dd6370d6da1e523b0d1db19f06c459134c658b2a4261378b52" -"checksum openssl-probe 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "77af24da69f9d9341038eba93a073b1fdaaa1b788221b00a69bce9e762cb32de" -"checksum openssl-sys 0.9.54 (registry+https://github.com/rust-lang/crates.io-index)" = "1024c0a59774200a555087a6da3f253a9095a5f344e353b212ac4c8b8e450986" -"checksum output_vt100 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "53cdc5b785b7a58c5aad8216b3dfa114df64b0b06ae6e1501cef91df2fbdf8f9" -"checksum owning_ref 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "49a4b8ea2179e6a2e27411d3bca09ca6dd630821cf6894c6c7c8467a8ee7ef13" -"checksum parity-bytes 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "0c276d76c5333b8c2579e02d49a06733a55b8282d2d9b13e8d53b6406bd7e30a" -"checksum parity-multiaddr 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "045b3c7af871285146300da35b1932bb6e4639b66c7c98e85d06a32cbc4e8fa7" -"checksum parity-multiaddr 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)" = "26df883298bc3f4e92528b4c5cc9f806b791955b136da3e5e939ed9de0fd958b" -"checksum parity-multihash 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "df3a17dc27848fd99e4f87eb0f8c9baba6ede0a6d555400c850ca45254ef4ce3" -"checksum parity-multihash 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "7a1cd2ba02391b81367bec529fb209019d718684fdc8ad6a712c2b536e46f775" -"checksum parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "f747c06d9f3b2ad387ac881b9667298c81b1243aa9833f086e05996937c35507" -"checksum parity-scale-codec-derive 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "34e513ff3e406f3ede6796dcdc83d0b32ffb86668cea1ccf7363118abeb00476" -"checksum parity-send-wrapper 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "aa9777aa91b8ad9dd5aaa04a9b6bcb02c7f1deb952fca5a66034d5e63afc5c6f" -"checksum parity-util-mem 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ef1476e40bf8f5c6776e9600983435821ca86eb9819d74a6207cca69d091406a" -"checksum parity-util-mem-derive 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "f557c32c6d268a07c921471619c0295f5efad3a0e76d4f97a05c091a51d110b2" -"checksum parity-wasm 0.32.0 (registry+https://github.com/rust-lang/crates.io-index)" = "16ad52817c4d343339b3bc2e26861bd21478eda0b7509acf83505727000512ac" -"checksum parity-wasm 0.41.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ddfc878dac00da22f8f61e7af3157988424567ab01d9920b962ef7dcbd7cd865" -"checksum parking_lot 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)" = "92e98c49ab0b7ce5b222f2cc9193fc4efe11c6d0bd4f648e374684a6857b1cfc" -"checksum parking_lot 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "f842b1982eb6c2fe34036a4fbfb06dd185a3f5c8edfaacdf7d1ea10b07de6252" -"checksum parking_lot_core 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)" = "b876b1b9e7ac6e1a74a6da34d25c42e17e8862aa409cbbbdcfc8d86c6f3bc62b" -"checksum parking_lot_core 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7582838484df45743c8434fbff785e8edf260c28748353d44bc0da32e0ceabf1" -"checksum paste 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "423a519e1c6e828f1e73b720f9d9ed2fa643dce8a7737fb43235ce0b41eeaa49" -"checksum paste-impl 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "4214c9e912ef61bf42b81ba9a47e8aad1b2ffaf739ab162bf96d1e011f54e6c5" -"checksum pbkdf2 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "006c038a43a45995a9670da19e67600114740e8511d4333bf97a56e66a7542d9" -"checksum pdqselect 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "4ec91767ecc0a0bbe558ce8c9da33c068066c57ecc8bb8477ef8c1ad3ef77c27" -"checksum peeking_take_while 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "19b17cddbe7ec3f8bc800887bab5e717348c95ea2ca0b1bf0837fb964dc67099" -"checksum percent-encoding 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "31010dd2e1ac33d5b46a5b413495239882813e0369f8ed8a5e266f173602f831" -"checksum percent-encoding 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d4fd5641d01c8f18a23da7b6fe29298ff4b55afcccdf78973b24cf3175fee32e" -"checksum petgraph 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "29c127eea4a29ec6c85d153c59dc1213f33ec74cead30fe4730aecc88cc1fd92" -"checksum pin-project 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)" = "7804a463a8d9572f13453c516a5faea534a2403d7ced2f0c7e100eeff072772c" -"checksum pin-project-internal 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)" = "385322a45f2ecf3410c68d2a549a4a2685e8051d0f278e39743ff4e451cb9b3f" -"checksum pin-project-lite 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "237844750cfbb86f67afe27eee600dfbbcb6188d734139b534cbfbf4f96792ae" -"checksum pin-utils 0.1.0-alpha.4 (registry+https://github.com/rust-lang/crates.io-index)" = "5894c618ce612a3fa23881b152b608bafb8c56cfc22f434a3ba3120b40f7b587" -"checksum pkg-config 0.3.17 (registry+https://github.com/rust-lang/crates.io-index)" = "05da548ad6865900e60eaba7f589cc0783590a92e940c26953ff81ddbab2d677" -"checksum plain 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "b4596b6d070b27117e987119b4dac604f3c58cfb0b191112e24771b2faeac1a6" -"checksum plotters 0.2.12 (registry+https://github.com/rust-lang/crates.io-index)" = "4e3bb8da247d27ae212529352020f3e5ee16e83c0c258061d27b08ab92675eeb" -"checksum ppv-lite86 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)" = "74490b50b9fbe561ac330df47c08f3f33073d2d00c150f719147d7c54522fa1b" -"checksum predicates 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "a9bfe52247e5cc9b2f943682a85a5549fb9662245caf094504e69a2f03fe64d4" -"checksum predicates-core 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "06075c3a3e92559ff8929e7a280684489ea27fe44805174c3ebd9328dcb37178" -"checksum predicates-tree 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "8e63c4859013b38a76eca2414c64911fba30def9e3202ac461a2d22831220124" -"checksum pretty_assertions 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)" = "3f81e1644e1b54f5a68959a29aa86cde704219254669da328ecfdf6a1f09d427" -"checksum primitive-types 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)" = "e4336f4f5d5524fa60bcbd6fe626f9223d8142a50e7053e979acdf0da41ab975" -"checksum proc-macro-crate 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "e10d4b51f154c8a7fb96fd6dad097cb74b863943ec010ac94b9fd1be8861fe1e" -"checksum proc-macro-error 0.4.9 (registry+https://github.com/rust-lang/crates.io-index)" = "052b3c9af39c7e5e94245f820530487d19eb285faedcb40e0c3275132293f242" -"checksum proc-macro-error-attr 0.4.9 (registry+https://github.com/rust-lang/crates.io-index)" = "d175bef481c7902e63e3165627123fff3502f06ac043d3ef42d08c1246da9253" -"checksum proc-macro-hack 0.5.11 (registry+https://github.com/rust-lang/crates.io-index)" = "ecd45702f76d6d3c75a80564378ae228a85f0b59d2f3ed43c91b4a69eb2ebfc5" -"checksum proc-macro-nested 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "369a6ed065f249a159e06c45752c780bda2fb53c995718f9e484d08daa9eb42e" -"checksum proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)" = "cf3d2011ab5c909338f7887f4fc896d35932e29146c12c8d01da6b22a80ba759" -"checksum proc-macro2 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)" = "3acb317c6ff86a4e579dfa00fc5e6cca91ecbb4e7eb2df0468805b674eb88548" -"checksum prometheus 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "5567486d5778e2c6455b1b90ff1c558f29e751fc018130fa182e15828e728af1" -"checksum prost 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ce49aefe0a6144a45de32927c77bd2859a5f7677b55f220ae5b744e87389c212" -"checksum prost-build 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)" = "02b10678c913ecbd69350e8535c3aef91a8676c0773fc1d7b95cdd196d7f2f26" -"checksum prost-derive 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)" = "537aa19b95acde10a12fec4301466386f757403de4cd4e5b4fa78fb5ecb18f72" -"checksum prost-types 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)" = "1834f67c0697c001304b75be76f67add9c89742eda3a085ad8ee0bb38c3417aa" -"checksum protobuf 2.10.1 (registry+https://github.com/rust-lang/crates.io-index)" = "6686ddd96a8dbe2687b5f2a687b2cfb520854010ec480f2d74c32e7c9873d3c5" -"checksum pwasm-utils 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)" = "4f7a12f176deee919f4ba55326ee17491c8b707d0987aed822682c821b660192" -"checksum quick-error 1.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0" -"checksum quickcheck 0.9.2 (registry+https://github.com/rust-lang/crates.io-index)" = "a44883e74aa97ad63db83c4bf8ca490f02b2fc02f92575e720c8551e843c945f" -"checksum quicksink 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "a8461ef7445f61fd72d8dcd0629ce724b9131b3c2eb36e83a5d3d4161c127530" -"checksum quote 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)" = "6ce23b6b870e8f94f81fb0a363d65d86675884b34a09043c81e5562f11c1f8e1" -"checksum quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "053a8c8bcc71fcce321828dc897a98ab9760bef03a4fc36693c231e5b3216cfe" -"checksum rand 0.3.23 (registry+https://github.com/rust-lang/crates.io-index)" = "64ac302d8f83c0c1974bf758f6b041c6c8ada916fbb44a609158ca8b064cc76c" -"checksum rand 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)" = "552840b97013b1a26992c11eac34bdd778e464601a4c2054b5f0bff7c6761293" -"checksum rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)" = "6d71dacdc3c88c1fde3885a3be3fbab9f35724e6ce99467f7d9c5026132184ca" -"checksum rand 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)" = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03" -"checksum rand_chacha 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "556d3a1ca6600bfcbab7c7c91ccb085ac7fbbcd70e008a98742e7847f4f7bcef" -"checksum rand_chacha 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "03a2a90da8c7523f554344f921aa97283eadf6ac484a6d2a7d0212fa7f8d6853" -"checksum rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "7a6fdeb83b075e8266dcc8762c22776f6877a63111121f5f8c7411e5be7eed4b" -"checksum rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "9c33a3c44ca05fa6f1807d8e6743f3824e8509beca625669633be0acbdf509dc" -"checksum rand_core 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" -"checksum rand_hc 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7b40677c7be09ae76218dc623efbf7b18e34bced3f38883af07bb75630a21bc4" -"checksum rand_hc 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c" -"checksum rand_isaac 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ded997c9d5f13925be2a6fd7e66bf1872597f759fd9dd93513dd7e92e5a5ee08" -"checksum rand_jitter 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "1166d5c91dc97b88d1decc3285bb0a99ed84b05cfd0bc2341bdf2d43fc41e39b" -"checksum rand_os 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "7b75f676a1e053fc562eafbb47838d67c84801e38fc1ba459e8f180deabd5071" -"checksum rand_pcg 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "abf9b09b01790cfe0364f52bf32995ea3c39f4d2dd011eac241d2914146d0b44" -"checksum rand_xorshift 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "cbf7e9e623549b0e21f6e97cf8ecf247c1a8fd2e8a992ae265314300b2455d5c" -"checksum rand_xoshiro 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "03b418169fb9c46533f326efd6eed2576699c44ca92d3052a066214a8d828929" -"checksum raw-cpuid 7.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "b4a349ca83373cfa5d6dbb66fd76e58b2cca08da71a5f6400de0a0a6a9bceeaf" -"checksum rayon 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "db6ce3297f9c85e16621bb8cca38a06779ffc31bb8184e1be4bed2be4678a098" -"checksum rayon-core 1.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "08a89b46efaf957e52b18062fb2f4660f8b8a4dde1807ca002690868ef2c85a9" -"checksum rdrand 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "678054eb77286b51581ba43620cc911abf02758c91f93f479767aed0f90458b2" -"checksum redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)" = "2439c63f3f6139d1b57529d16bc3b8bb855230c8efcc5d3a896c8bea7c3b1e84" -"checksum redox_users 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "09b23093265f8d200fa7b4c2c76297f47e681c655f6f1285a8780d6a022f7431" -"checksum regex 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "322cf97724bea3ee221b78fe25ac9c46114ebb51747ad5babd51a2fc6a8235a8" -"checksum regex-automata 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "92b73c2a1770c255c240eaa4ee600df1704a38dc3feaa6e949e7fcd4f8dc09f9" -"checksum regex-syntax 0.6.14 (registry+https://github.com/rust-lang/crates.io-index)" = "b28dfe3fe9badec5dbf0a79a9cccad2cfc2ab5484bdb3e44cbd1ae8b3ba2be06" -"checksum region 2.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "448e868c6e4cfddfa49b6a72c95906c04e8547465e9536575b95c70a4044f856" -"checksum remove_dir_all 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "4a83fa3702a688b9359eccba92d153ac33fd2e8462f9e0e3fdf155239ea7792e" -"checksum ring 0.16.11 (registry+https://github.com/rust-lang/crates.io-index)" = "741ba1704ae21999c00942f9f5944f801e977f54302af346b596287599ad1862" -"checksum rlp 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)" = "3a44d5ae8afcb238af8b75640907edc6c931efcfab2c854e81ed35fa080f84cd" -"checksum rocksdb 0.13.0 (registry+https://github.com/rust-lang/crates.io-index)" = "12069b106981c6103d3eab7dd1c86751482d0779a520b7c14954c8b586c1e643" -"checksum rpassword 4.0.5 (registry+https://github.com/rust-lang/crates.io-index)" = "99371657d3c8e4d816fb6221db98fa408242b0b53bac08f8676a41f8554fe99f" -"checksum rust-argon2 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "2bc8af4bda8e1ff4932523b94d3dd20ee30a87232323eda55903ffd71d2fb017" -"checksum rustc-demangle 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)" = "4c691c0e608126e00913e33f0ccf3727d5fc84573623b8d65b2df340b5201783" -"checksum rustc-hash 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" -"checksum rustc-hex 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "3e75f6a532d0fd9f7f13144f392b6ad56a32696bfcd9c78f797f16bbb6f072d6" -"checksum rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030a" -"checksum rustls 0.16.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b25a18b1bf7387f0145e7f8324e700805aade3842dd3db2e74e4cdeb4677c09e" -"checksum rustls-native-certs 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "51ffebdbb48c14f84eba0b715197d673aff1dd22cc1007ca647e28483bbcc307" -"checksum rustversion 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "b3bba175698996010c4f6dce5e7f173b6eb781fce25d2cfc45e27091ce0b79f6" -"checksum rw-stream-sink 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "4da5fcb054c46f5a5dff833b129285a93d3f0179531735e6c866e8cc307d2020" -"checksum ryu 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "bfa8506c1de11c9c4e4c38863ccbe02a305c8188e85a05a784c9e11e1c3910c8" -"checksum safe-mix 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "6d3d055a2582e6b00ed7a31c1524040aa391092bf636328350813f3a0605215c" -"checksum safemem 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "ef703b7cb59335eae2eb93ceb664c0eb7ea6bf567079d843e09420219668e072" -"checksum salsa20 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "2324b0e8c3bb9a586a571fdb3136f70e7e2c748de00a78043f86e0cff91f91fe" -"checksum salsa20-core 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "2fe6cc1b9f5a5867853ade63099de70f042f7679e408d1ffe52821c9248e6e69" -"checksum same-file 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)" = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" -"checksum schannel 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)" = "507a9e6e8ffe0a4e0ebb9a10293e62fdf7657c06f1b8bb07a8fcf697d2abf295" -"checksum schnorrkel 0.8.5 (registry+https://github.com/rust-lang/crates.io-index)" = "eacd8381b3c37840c9c9f40472af529e49975bdcbc24f83c31059fd6539023d3" -"checksum scopeguard 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" -"checksum scroll 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)" = "abb2332cb595d33f7edd5700f4cbf94892e680c7f0ae56adab58a35190b66cb1" -"checksum scroll_derive 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)" = "f8584eea9b9ff42825b46faf46a8c24d2cff13ec152fa2a50df788b87c07ee28" -"checksum sct 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e3042af939fca8c3453b7af0f1c66e533a15a86169e39de2657310ade8f98d3c" -"checksum security-framework 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "8ef2429d7cefe5fd28bd1d2ed41c944547d4ff84776f5935b456da44593a16df" -"checksum security-framework-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "e31493fc37615debb8c5090a7aeb4a9730bc61e77ab10b9af59f1a202284f895" -"checksum semver 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7a3186ec9e65071a2095434b1f5bb24838d4e8e130f584c790f6033c79943537" -"checksum semver 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403" -"checksum semver-parser 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" -"checksum send_wrapper 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "a0eddf2e8f50ced781f288c19f18621fa72a3779e3cb58dbf23b07469b0abeb4" -"checksum send_wrapper 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "686ef91cf020ad8d4aca9a7047641fd6add626b7b89e14546c2b6a76781cf822" -"checksum send_wrapper 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "f638d531eccd6e23b980caf34876660d38e265409d8e99b397ab71eb3612fad0" -"checksum serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)" = "414115f25f818d7dfccec8ee535d76949ae78584fc4f79a6f45a904bf8ab4449" -"checksum serde_derive 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)" = "128f9e303a5a29922045a830221b8f78ec74a5f544944f3d5984f8ec3895ef64" -"checksum serde_json 1.0.48 (registry+https://github.com/rust-lang/crates.io-index)" = "9371ade75d4c2d6cb154141b9752cf3781ec9c05e0e5cf35060e1e70ee7b9c25" -"checksum sha-1 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)" = "f7d94d0bede923b3cea61f3f1ff57ff8cdfd77b400fb8f9998949e0cf04163df" -"checksum sha1 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "2579985fda508104f7587689507983eadd6a6e84dd35d6d115361f530916fa0d" -"checksum sha2 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)" = "27044adfd2e1f077f649f59deb9490d3941d674002f7d062870a60ebe9bd47a0" -"checksum sha3 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)" = "dd26bc0e7a2e3a7c959bc494caf58b72ee0c71d67704e9520f736ca7e4853ecf" -"checksum shell32-sys 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "9ee04b46101f57121c9da2b151988283b6beb79b34f5bb29a58ee48cb695122c" -"checksum shlex 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "7fdf1b9db47230893d76faad238fd6097fd6d6a9245cd7a4d90dbd639536bbd2" -"checksum signal-hook-registry 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "94f478ede9f64724c5d173d7bb56099ec3e2d9fc2774aac65d34b8b890405f41" -"checksum slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "c111b5bd5695e56cffe5129854aa230b39c93a305372fdbb2668ca2394eea9f8" -"checksum slog 2.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "1cc9c640a4adbfbcc11ffb95efe5aa7af7309e002adab54b185507dbf2377b99" -"checksum slog-json 2.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ddc0d2aff1f8f325ef660d9a0eb6e6dcd20b30b3f581a5897f58bf42d061c37a" -"checksum slog-scope 4.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7c44c89dd8b0ae4537d1ae318353eaf7840b4869c536e31c41e963d1ea523ee6" -"checksum slog_derive 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "a945ec7f7ce853e89ffa36be1e27dce9a43e82ff9093bf3461c30d5da74ed11b" -"checksum smallvec 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)" = "f7b0758c52e15a8b5e3691eae6cc559f08eee9406e548a4477ba4e67770a82b6" -"checksum smallvec 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "5c2fb2ec9bcd216a5b0d0ccf31ab17b5ed1d627960edff65bbe95d3ce221cefc" -"checksum snow 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)" = "afb767eee7d257ba202f0b9b08673bc13b22281632ef45267b19f13100accd2f" -"checksum soketto 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "1c9dab3f95c9ebdf3a88268c19af668f637a3c5039c2c56ff2d40b1b2d64a25b" -"checksum sourcefile 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "4bf77cb82ba8453b42b6ae1d692e4cdc92f9a47beaf89a847c8be83f4e328ad3" -"checksum spin 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d" -"checksum stable_deref_trait 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "dba1a27d3efae4351c8051072d619e3ade2820635c3958d826bfea39d59b54c8" -"checksum static_assertions 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" -"checksum stream-cipher 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "8131256a5896cabcf5eb04f4d6dacbe1aefda854b0d9896e09cb58829ec5638c" -"checksum string 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "d24114bfcceb867ca7f71a0d3fe45d45619ec47a6fbfa98cb14e14250bfa5d6d" -"checksum string-interner 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)" = "fd710eadff449a1531351b0e43eb81ea404336fa2f56c777427ab0e32a4cf183" -"checksum strsim 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "8ea5119cdb4c55b55d432abb513a0429384878c15dde60cc77b1c99de1a95a6a" -"checksum structopt 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)" = "a1bcbed7d48956fcbb5d80c6b95aedb553513de0a1b451ea92679d999c010e98" -"checksum structopt-derive 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "095064aa1f5b94d14e635d0a5684cf140c43ae40a0fd990708d38f5d669e5f64" -"checksum strum 0.16.0 (registry+https://github.com/rust-lang/crates.io-index)" = "6138f8f88a16d90134763314e3fc76fa3ed6a7db4725d6acf9a3ef95a3188d22" -"checksum strum_macros 0.16.0 (registry+https://github.com/rust-lang/crates.io-index)" = "0054a7df764039a6cd8592b9de84be4bec368ff081d203a7d5371cbfa8e65c81" -"checksum substrate-bip39 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "3be511be555a3633e71739a79e4ddff6a6aaa6579fa6114182a51d72c3eb93c5" -"checksum subtle 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "2d67a5a62ba6e01cb2192ff309324cb4875d0c451d55fe2319433abe7a05a8ee" -"checksum subtle 2.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7c65d530b10ccaeac294f349038a597e435b18fb456aadd0840a623f83b9e941" -"checksum syn 1.0.14 (registry+https://github.com/rust-lang/crates.io-index)" = "af6f3550d8dff9ef7dc34d384ac6f107e5d31c8f57d9f28e0081503f547ac8f5" -"checksum syn-mid 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7be3539f6c128a931cf19dcee741c1af532c7fd387baa739c03dd2e96479338a" -"checksum synstructure 0.12.3 (registry+https://github.com/rust-lang/crates.io-index)" = "67656ea1dc1b41b1451851562ea232ec2e5a80242139f7e679ceccfb5d61f545" -"checksum sysinfo 0.9.6 (registry+https://github.com/rust-lang/crates.io-index)" = "6f4b2468c629cffba39c0a4425849ab3cdb03d9dfacba69684609aea04d08ff9" -"checksum take_mut 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "f764005d11ee5f36500a149ace24e00e3da98b0158b3e2d53a7495660d3f4d60" -"checksum target-lexicon 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ab0e7238dcc7b40a7be719a25365910f6807bd864f4cce6b2e6b873658e2b19d" -"checksum target_info 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "c63f48baada5c52e65a29eef93ab4f8982681b67f9e8d29c7b05abcfec2b9ffe" -"checksum tempdir 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)" = "15f2b5fb00ccdf689e0149d1b1b3c03fead81c2b37735d812fa8bddbbf41b6d8" -"checksum tempfile 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7a6e24d9338a0a5be79593e2fa15a648add6138caa803e2d5bc782c371732ca9" -"checksum termcolor 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "bb6bfa289a4d7c5766392812c0a1f4c1ba45afa1ad47803c11e1f407d846d75f" -"checksum test-case 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "a605baa797821796a751f4a959e1206079b24a4b7e1ed302b7d785d81a9276c9" -"checksum textwrap 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d326610f408c7a4eb6f51c37c330e496b08506c9457c9d34287ecc38809fb060" -"checksum thiserror 1.0.11 (registry+https://github.com/rust-lang/crates.io-index)" = "ee14bf8e6767ab4c687c9e8bc003879e042a96fd67a3ba5934eadb6536bef4db" -"checksum thiserror-impl 1.0.11 (registry+https://github.com/rust-lang/crates.io-index)" = "a7b51e1fbc44b5a0840be594fbc0f960be09050f2617e61e6aa43bef97cd3ef4" -"checksum thread_local 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "d40c6d1b69745a6ec6fb1ca717914848da4b44ae29d9b3080cbee91d72a69b14" -"checksum threadpool 1.7.1 (registry+https://github.com/rust-lang/crates.io-index)" = "e2f0c90a5f3459330ac8bc0d2f879c693bb7a2f59689c1083fc4ef83834da865" -"checksum time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)" = "db8dcfca086c1143c9270ac42a2bbd8a7ee477b78ac8e45b19abfb0cbede4b6f" -"checksum tiny-bip39 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1cd1fb03fe8e07d17cd851a624a9fff74642a997b67fbd1ccd77533241640d92" -"checksum tiny-keccak 1.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1d8a021c69bb74a44ccedb824a046447e2c84a01df9e5c20779750acb38e11b2" -"checksum tiny-keccak 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "2953ca5148619bc99695c1274cb54c5275bbb913c6adad87e72eaf8db9787f69" -"checksum tinytemplate 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "57a3c6667d3e65eb1bc3aed6fd14011c6cbc3a0665218ab7f5daf040b9ec371a" -"checksum tokio 0.1.22 (registry+https://github.com/rust-lang/crates.io-index)" = "5a09c0b5bb588872ab2f09afa13ee6e9dac11e10a0ec9e8e3ba39a5a5d530af6" -"checksum tokio 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)" = "8fdd17989496f49cdc57978c96f0c9fe5e4a58a8bddc6813c449a4624f6a030b" -"checksum tokio-buf 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "8fb220f46c53859a4b7ec083e41dec9778ff0b1851c0942b211edb89e0ccdc46" -"checksum tokio-codec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "25b2998660ba0e70d18684de5d06b70b70a3a747469af9dea7618cc59e75976b" -"checksum tokio-current-thread 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)" = "b1de0e32a83f131e002238d7ccde18211c0a5397f60cbfffcb112868c2e0e20e" -"checksum tokio-executor 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)" = "fb2d1b8f4548dbf5e1f7818512e9c406860678f29c300cdf0ebac72d1a3a1671" -"checksum tokio-executor 0.2.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)" = "9ee9ceecf69145923834ea73f32ba40c790fd877b74a7817dd0b089f1eb9c7c8" -"checksum tokio-fs 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)" = "297a1206e0ca6302a0eed35b700d292b275256f596e2f3fea7729d5e629b6ff4" -"checksum tokio-io 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)" = "57fc868aae093479e3131e3d165c93b1c7474109d13c90ec0dda2a1bbfff0674" -"checksum tokio-macros 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)" = "f4b1e7ed7d5d4c2af3d999904b0eebe76544897cdbfb2b9684bed2174ab20f7c" -"checksum tokio-reactor 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)" = "09bc590ec4ba8ba87652da2068d150dcada2cfa2e07faae270a5e0409aa51351" -"checksum tokio-rustls 0.12.2 (registry+https://github.com/rust-lang/crates.io-index)" = "141afec0978abae6573065a48882c6bae44c5cc61db9b511ac4abf6a09bfd9cc" -"checksum tokio-sync 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "edfe50152bc8164fcc456dab7891fa9bf8beaf01c5ee7e1dd43a397c3cf87dee" -"checksum tokio-sync 0.2.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)" = "4f1aaeb685540f7407ea0e27f1c9757d258c7c6bf4e3eb19da6fc59b747239d2" -"checksum tokio-tcp 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "98df18ed66e3b72e742f185882a9e201892407957e45fbff8da17ae7a7c51f72" -"checksum tokio-threadpool 0.1.18 (registry+https://github.com/rust-lang/crates.io-index)" = "df720b6581784c118f0eb4310796b12b1d242a7eb95f716a8367855325c25f89" -"checksum tokio-timer 0.2.13 (registry+https://github.com/rust-lang/crates.io-index)" = "93044f2d313c95ff1cb7809ce9a7a05735b012288a888b62d4434fd58c94f296" -"checksum tokio-tls 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "354b8cd83825b3c20217a9dc174d6a0c67441a2fae5c41bcb1ea6679f6ae0f7c" -"checksum tokio-udp 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "e2a0b10e610b39c38b031a2fcab08e4b82f16ece36504988dcbd81dbba650d82" -"checksum tokio-uds 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)" = "5076db410d6fdc6523df7595447629099a1fdc47b3d9f896220780fa48faf798" -"checksum tokio-util 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "571da51182ec208780505a32528fc5512a8fe1443ab960b3f2f3ef093cd16930" -"checksum toml 0.5.6 (registry+https://github.com/rust-lang/crates.io-index)" = "ffc92d160b1eef40665be3a05630d003936a3bc7da7421277846c2613e92c71a" -"checksum tower-service 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e987b6bf443f4b5b3b6f38704195592cca41c5bb7aedd3c3693c7081f8289860" -"checksum tracing 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)" = "1e213bd24252abeb86a0b7060e02df677d367ce6cb772cef17e9214b8390a8d3" -"checksum tracing-attributes 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "04cfd395def5a60236e187e1ff905cb55668a59f29928dec05e6e1b1fd2ac1f3" -"checksum tracing-core 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)" = "13a46f11e372b8bd4b4398ea54353412fdd7fd42a8370c7e543e218cf7661978" -"checksum traitobject 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "efd1f82c56340fdf16f2a953d7bda4f8fdffba13d93b00844c25572110b26079" -"checksum treeline 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "a7f741b240f1a48843f9b8e0444fb55fb2a4ff67293b50a9179dfd5ea67f8d41" -"checksum trie-bench 0.20.0 (registry+https://github.com/rust-lang/crates.io-index)" = "6dcd9bac85703d8f974ee1e6dfe668784b105d3385c174ad729adb7427ad5d81" -"checksum trie-db 0.20.0 (registry+https://github.com/rust-lang/crates.io-index)" = "de9222c50cc325855621271157c973da27a0dcd26fa06f8edf81020bd2333df0" -"checksum trie-root 0.16.0 (registry+https://github.com/rust-lang/crates.io-index)" = "652931506d2c1244d7217a70b99f56718a7b4161b37f04e7cd868072a99f68cd" -"checksum trie-standardmap 0.15.2 (registry+https://github.com/rust-lang/crates.io-index)" = "c3161ba520ab28cd8e6b68e1126f1009f6e335339d1a73b978139011703264c8" -"checksum try-lock 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "e604eb7b43c06650e854be16a2a03155743d3752dd1c943f6829e26b7a36e382" -"checksum trybuild 1.0.22 (registry+https://github.com/rust-lang/crates.io-index)" = "5867c525891caf154503954cb743ff7f1c4ca2c3e8578f6a5af84c913aa084c8" -"checksum twofish 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "712d261e83e727c8e2dbb75dacac67c36e35db36a958ee504f2164fc052434e1" -"checksum twox-hash 1.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "3bfd5b7557925ce778ff9b9ef90e3ade34c524b5ff10e239c69a42d546d2af56" -"checksum typeable 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "1410f6f91f21d1612654e7cc69193b0334f909dcf2c790c4826254fbb86f8887" -"checksum typenum 1.11.2 (registry+https://github.com/rust-lang/crates.io-index)" = "6d2783fe2d6b8c1101136184eb41be8b1ad379e4657050b8aaff0c79ee7575f9" -"checksum uint 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)" = "e75a4cdd7b87b28840dba13c483b9a88ee6bbf16ba5c951ee1ecfcf723078e0d" -"checksum unicase 1.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7f4765f83163b74f957c797ad9253caf97f103fb064d3999aea9568d09fc8a33" -"checksum unicase 2.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "50f37be617794602aabbeee0be4f259dc1778fabe05e2d67ee8f79326d5cb4f6" -"checksum unicode-bidi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "49f2bd0c6468a8230e1db229cff8029217cf623c767ea5d60bfbd42729ea54d5" -"checksum unicode-normalization 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)" = "5479532badd04e128284890390c1e876ef7a993d0570b3597ae43dfa1d59afa4" -"checksum unicode-segmentation 1.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e83e153d1053cbb5a118eeff7fd5be06ed99153f00dbcd8ae310c5fb2b22edc0" -"checksum unicode-width 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)" = "caaa9d531767d1ff2150b9332433f32a24622147e5ebb1f26409d5da67afd479" -"checksum unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "fc72304796d0818e357ead4e000d19c9c174ab23dc11093ac919054d20a6a7fc" -"checksum unicode-xid 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "826e7639553986605ec5979c7dd957c7895e93eabed50ab2ffa7f6128a75097c" -"checksum unsigned-varint 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "a7f0023a96687fe169081e8adce3f65e3874426b7886e9234d490af2dc077959" -"checksum unsigned-varint 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "3b7ffb36714206d2f5f05d61a2bc350415c642f2c54433f0ebf829afbe41d570" -"checksum untrusted 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "60369ef7a31de49bcb3f6ca728d4ba7300d9a1658f94c727d4cab8c8d9f4aece" -"checksum url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)" = "dd4e7c0d531266369519a4aa4f399d748bd37043b00bde1e4ff1f60a120b355a" -"checksum url 2.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "829d4a8476c35c9bf0bbce5a3b23f4106f79728039b726d292bb93bc106787cb" -"checksum vcpkg 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "3fc439f2794e98976c88a2a2dafce96b930fe8010b0a256b3c2199a773933168" -"checksum vec_map 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)" = "05c78687fb1a80548ae3250346c3db86a80a7cdd77bda190189f2d0a0987c81a" -"checksum vergen 3.0.4 (registry+https://github.com/rust-lang/crates.io-index)" = "6aba5e34f93dc7051dfad05b98a18e9156f27e7b431fe1d2398cb6061c0a1dba" -"checksum version_check 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "914b1a6776c4c929a602fafd8bc742e06365d4bcbe48c30f9cca5824f70dc9dd" -"checksum version_check 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)" = "078775d0255232fb988e6fccf26ddc9d1ac274299aaedcedce21c6f72cc533ce" -"checksum void 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d" -"checksum wabt 0.9.2 (registry+https://github.com/rust-lang/crates.io-index)" = "3c5c5c1286c6e578416982609f47594265f9d489f9b836157d403ad605a46693" -"checksum wabt-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "af5d153dc96aad7dc13ab90835b892c69867948112d95299e522d370c4e13a08" -"checksum walkdir 2.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "777182bc735b6424e1a57516d35ed72cb8019d85c8c9bf536dccb3445c1a2f7d" -"checksum want 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b6395efa4784b027708f7451087e647ec73cc74f5d9bc2e418404248d679a230" -"checksum want 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1ce8a968cb1cd110d136ff8b819a556d6fb6d919363c61534f6860c7eb172ba0" -"checksum wasi 0.9.0+wasi-snapshot-preview1 (registry+https://github.com/rust-lang/crates.io-index)" = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519" -"checksum wasm-bindgen 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)" = "5205e9afdf42282b192e2310a5b463a6d1c1d774e30dc3c791ac37ab42d2616c" -"checksum wasm-bindgen-backend 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)" = "11cdb95816290b525b32587d76419facd99662a07e59d3cdb560488a819d9a45" -"checksum wasm-bindgen-futures 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)" = "8bbdd49e3e28b40dec6a9ba8d17798245ce32b019513a845369c641b275135d9" -"checksum wasm-bindgen-macro 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)" = "574094772ce6921576fb6f2e3f7497b8a76273b6db092be18fc48a082de09dc3" -"checksum wasm-bindgen-macro-support 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)" = "e85031354f25eaebe78bb7db1c3d86140312a911a106b2e29f9cc440ce3e7668" -"checksum wasm-bindgen-shared 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)" = "f5e7e61fc929f4c0dddb748b102ebf9f632e2b8d739f2016542b4de2965a9601" -"checksum wasm-bindgen-webidl 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)" = "ef012a0d93fc0432df126a8eaf547b2dce25a8ce9212e1d3cbeef5c11157975d" -"checksum wasm-gc-api 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)" = "d0c32691b6c7e6c14e7f8fd55361a9088b507aa49620fcd06c09b3a1082186b9" -"checksum wasm-timer 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)" = "324c5e65a08699c9c4334ba136597ab22b85dccd4b65dd1e36ccf8f723a95b54" -"checksum wasmi 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)" = "bf617d864d25af3587aa745529f7aaa541066c876d57e050c0d0c85c61c92aff" -"checksum wasmi-validation 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ea78c597064ba73596099281e2f4cfc019075122a65cdda3205af94f0b264d93" -"checksum wasmparser 0.48.2 (registry+https://github.com/rust-lang/crates.io-index)" = "073da89bf1c84db000dd68ce660c1b4a08e3a2d28fd1e3394ab9e7abdde4a0f8" -"checksum wasmparser 0.51.2 (registry+https://github.com/rust-lang/crates.io-index)" = "a40d24f114a3f24b459ec292019220cff6388673b4a2c0a11483665b599ef15c" -"checksum wasmtime 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)" = "5614d964c3e7d07a13b59aca66103c52656bd80430f0d86dc7eeb3af4f03d4a2" -"checksum wasmtime-debug 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)" = "feb5900275b4ef0b621ce725b9d5660b12825d7f7d79b392b97baf089ffab8c0" -"checksum wasmtime-environ 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)" = "f04661851e133fb11691c4a0f92a705766b4bbf7afc06811f949e295cc8414fc" -"checksum wasmtime-jit 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d451353764ce55c9bb6a8b260063cfc209b7adadd277a9a872ab4563a69e357c" -"checksum wasmtime-runtime 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7dbd4fc114b828cae3e405fed413df4b3814d87a92ea029640cec9ba41f0c162" -"checksum wast 8.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "3f9df3d716118a503b2f6bbb6ff46b21997ab0cc167b01de7a188e45e4b01e8d" -"checksum wat 1.0.9 (registry+https://github.com/rust-lang/crates.io-index)" = "4a927b35badc29c97d97e82689eef7f72fc936d884b3391804c1bb6cd2bdccbb" -"checksum web-sys 0.3.35 (registry+https://github.com/rust-lang/crates.io-index)" = "aaf97caf6aa8c2b1dac90faf0db529d9d63c93846cca4911856f78a83cebf53b" -"checksum webpki 0.21.2 (registry+https://github.com/rust-lang/crates.io-index)" = "f1f50e1972865d6b1adb54167d1c8ed48606004c2c9d0ea5f1eeb34d95e863ef" -"checksum webpki-roots 0.17.0 (registry+https://github.com/rust-lang/crates.io-index)" = "a262ae37dd9d60f60dd473d1158f9fbebf110ba7b6a5051c8160460f6043718b" -"checksum webpki-roots 0.18.0 (registry+https://github.com/rust-lang/crates.io-index)" = "91cd5736df7f12a964a5067a12c62fa38e1bd8080aff1f80bc29be7c80d19ab4" -"checksum websocket 0.24.0 (registry+https://github.com/rust-lang/crates.io-index)" = "413b37840b9e27b340ce91b319ede10731de8c72f5bc4cb0206ec1ca4ce581d0" -"checksum websocket-base 0.24.0 (registry+https://github.com/rust-lang/crates.io-index)" = "5e3810f0d00c4dccb54c30a4eee815e703232819dec7b007db115791c42aa374" -"checksum weedle 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)" = "3bb43f70885151e629e2a19ce9e50bd730fd436cfd4b666894c9ce4de9141164" -"checksum which 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b57acb10231b9493c8472b20cb57317d0679a49e0bdbee44b3b803a6473af164" -"checksum which 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "5475d47078209a02e60614f7ba5e645ef3ed60f771920ac1906d7c1cc65024c8" -"checksum winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "167dc9d6949a9b857f3451275e911c3f44255842c1f7a76f33c55103a909087a" -"checksum winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)" = "8093091eeb260906a183e6ae1abdba2ef5ef2257a21801128899c3fc699229c6" -"checksum winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "2d315eee3b34aca4797b2da6b13ed88266e6d612562a0c46390af8299fc699bc" -"checksum winapi-i686-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" -"checksum winapi-util 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "4ccfbf554c6ad11084fb7517daca16cfdcaccbdadba4fc336f032a8b12c2ad80" -"checksum winapi-x86_64-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" -"checksum ws 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)" = "c51a2c47b5798ccc774ffb93ff536aec7c4275d722fd9c740c83cdd1af1f2d94" -"checksum ws2_32-sys 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "d59cefebd0c892fa2dd6de581e937301d8552cb44489cdff035c6187cb63fa5e" -"checksum x25519-dalek 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7ee1585dc1484373cbc1cee7aafda26634665cf449436fd6e24bfd1fad230538" -"checksum x25519-dalek 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "637ff90c9540fa3073bb577e65033069e4bae7c79d49d74aa3ffdf5342a53217" -"checksum xdg 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d089681aa106a86fade1b0128fb5daf07d5867a509ab036d99988dec80429a57" -"checksum yamux 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)" = "d73295bc9d9acf89dd9336b3b5f5b57731ee72b587857dd4312721a0196b48e5" -"checksum zeroize 0.9.3 (registry+https://github.com/rust-lang/crates.io-index)" = "45af6a010d13e4cf5b54c94ba5a2b2eba5596b9e46bf5875612d332a1f2b3f86" -"checksum zeroize 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "3cbac2ed2ba24cc90f5e06485ac8c7c1e5449fe8911aef4d8877218af021a5b8" -"checksum zeroize_derive 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "de251eec69fc7c1bc3923403d18ececb929380e016afe103da75f396704f8ca2" -"checksum zstd 0.5.1+zstd.1.4.4 (registry+https://github.com/rust-lang/crates.io-index)" = "5c5d978b793ae64375b80baf652919b148f6a496ac8802922d9999f5a553194f" -"checksum zstd-safe 2.0.3+zstd.1.4.4 (registry+https://github.com/rust-lang/crates.io-index)" = "bee25eac9753cfedd48133fa1736cbd23b774e253d89badbeac7d12b23848d3f" -"checksum zstd-sys 1.4.15+zstd.1.4.4 (registry+https://github.com/rust-lang/crates.io-index)" = "89719b034dc22d240d5b407fb0a3fe6d29952c181cff9a9f95c0bd40b4f8f7d8" + "cc", + "glob 0.3.0", + "libc", +] diff --git a/bin/node/runtime/src/lib.rs b/bin/node/runtime/src/lib.rs index 617ca2257a..76b77d39f0 100644 --- a/bin/node/runtime/src/lib.rs +++ b/bin/node/runtime/src/lib.rs @@ -82,7 +82,7 @@ pub const VERSION: RuntimeVersion = RuntimeVersion { // implementation changes and behavior does not, then leave spec_version as // is and increment impl_version. spec_version: 224, - impl_version: 0, + impl_version: 1, apis: RUNTIME_API_VERSIONS, }; diff --git a/frame/balances/src/benchmarking.rs b/frame/balances/src/benchmarking.rs index e564824aaa..371692b650 100644 --- a/frame/balances/src/benchmarking.rs +++ b/frame/balances/src/benchmarking.rs @@ -19,305 +19,101 @@ use super::*; use frame_system::RawOrigin; -use sp_io::hashing::blake2_256; -use frame_benchmarking::{ - BenchmarkResults, BenchmarkParameter, Benchmarking, BenchmarkingSetup, benchmarking, -}; +use frame_benchmarking::{benchmarks, account}; use sp_runtime::traits::{Bounded, Dispatchable}; use crate::Module as Balances; -// Support Functions -fn account(name: &'static str, index: u32) -> T::AccountId { - let entropy = (name, index).using_encoded(blake2_256); - T::AccountId::decode(&mut &entropy[..]).unwrap_or_default() -} +const SEED: u32 = 0; +const MAX_EXISTENTIAL_DEPOSIT: u32 = 1000; +const MAX_USER_INDEX: u32 = 1000; -// Benchmark `transfer` extrinsic with the worst possible conditions: -// * Transfer will kill the sender account. -// * Transfer will create the recipient account. -struct Transfer; -impl BenchmarkingSetup, RawOrigin> for Transfer { - fn components(&self) -> Vec<(BenchmarkParameter, u32, u32)> { - vec![ - // Existential Deposit Multiplier - (BenchmarkParameter::E, 2, 1000), - // User Seed - (BenchmarkParameter::U, 1, 1000), - ] +benchmarks! { + _ { + let e in 2 .. MAX_EXISTENTIAL_DEPOSIT => (); + let u in 1 .. MAX_USER_INDEX => (); } - fn instance(&self, components: &[(BenchmarkParameter, u32)]) - -> Result<(crate::Call, RawOrigin), &'static str> - { - // Constants - let ed = T::ExistentialDeposit::get(); + // Benchmark `transfer` extrinsic with the worst possible conditions: + // * Transfer will kill the sender account. + // * Transfer will create the recipient account. + transfer { + let u in ...; + let e in ...; - // Select an account - let u = components.iter().find(|&c| c.0 == BenchmarkParameter::U).unwrap().1; - let user = account::("user", u); - let user_origin = RawOrigin::Signed(user.clone()); + let existential_deposit = T::ExistentialDeposit::get(); + let caller = account("caller", u, SEED); // Give some multiple of the existential deposit + creation fee + transfer fee - let e = components.iter().find(|&c| c.0 == BenchmarkParameter::E).unwrap().1; - let balance = ed.saturating_mul(e.into()); - let _ = as Currency<_>>::make_free_balance_be(&user, balance); + let balance = existential_deposit.saturating_mul(e.into()); + let _ = as Currency<_>>::make_free_balance_be(&caller, balance); // Transfer `e - 1` existential deposits + 1 unit, which guarantees to create one account, and reap this user. - let recipient = account::("recipient", u); + let recipient = account("recipient", u, SEED); let recipient_lookup: ::Source = T::Lookup::unlookup(recipient); - let transfer_amt = ed.saturating_mul((e - 1).into()) + 1.into(); + let transfer_amount = existential_deposit.saturating_mul((e - 1).into()) + 1.into(); + }: _(RawOrigin::Signed(caller), recipient_lookup, transfer_amount) - // Return the `transfer` call - Ok((crate::Call::::transfer(recipient_lookup, transfer_amt), user_origin)) - } -} - -// Benchmark `transfer` with the best possible condition: -// * Both accounts exist and will continue to exist. -struct TransferBestCase; -impl BenchmarkingSetup, RawOrigin> for TransferBestCase { - fn components(&self) -> Vec<(BenchmarkParameter, u32, u32)> { - vec![ - // Existential Deposit Multiplier - (BenchmarkParameter::E, 2, 1000), - // User Seed - (BenchmarkParameter::U, 1, 1000), - ] - } - - fn instance(&self, components: &[(BenchmarkParameter, u32)]) - -> Result<(crate::Call, RawOrigin), &'static str> - { - // Constants - let ed = T::ExistentialDeposit::get(); - - // Select a sender - let u = components.iter().find(|&c| c.0 == BenchmarkParameter::U).unwrap().1; - let user = account::("user", u); - let user_origin = RawOrigin::Signed(user.clone()); + // Benchmark `transfer` with the best possible condition: + // * Both accounts exist and will continue to exist. + transfer_best_case { + let u in ...; + let e in ...; - // Select a recipient - let recipient = account::("recipient", u); + let caller = account("caller", u, SEED); + let recipient: T::AccountId = account("recipient", u, SEED); let recipient_lookup: ::Source = T::Lookup::unlookup(recipient.clone()); - // Get the existential deposit multiplier - let e = components.iter().find(|&c| c.0 == BenchmarkParameter::E).unwrap().1; - // Give the sender account max funds for transfer (their account will never reasonably be killed). - let _ = as Currency<_>>::make_free_balance_be(&user, T::Balance::max_value()); + let _ = as Currency<_>>::make_free_balance_be(&caller, T::Balance::max_value()); // Give the recipient account existential deposit (thus their account already exists). - let _ = as Currency<_>>::make_free_balance_be(&recipient, ed); - - // Transfer e * existential deposit. - let transfer_amt = ed.saturating_mul(e.into()); - - // Return the `transfer` call - Ok((crate::Call::::transfer(recipient_lookup, transfer_amt), user_origin)) - } -} - -// Benchmark `transfer_keep_alive` with the worst possible condition: -// * The recipient account is created. -struct TransferKeepAlive; -impl BenchmarkingSetup, RawOrigin> for TransferKeepAlive { - fn components(&self) -> Vec<(BenchmarkParameter, u32, u32)> { - vec![ - // Existential Deposit Multiplier - (BenchmarkParameter::E, 2, 1000), - // User Seed - (BenchmarkParameter::U, 1, 1000), - ] - } - - fn instance(&self, components: &[(BenchmarkParameter, u32)]) - -> Result<(crate::Call, RawOrigin), &'static str> - { - // Constants - let ed = T::ExistentialDeposit::get(); - - // Select a sender - let u = components.iter().find(|&c| c.0 == BenchmarkParameter::U).unwrap().1; - let user = account::("user", u); - let user_origin = RawOrigin::Signed(user.clone()); - - // Select a recipient - let recipient = account::("recipient", u); - let recipient_lookup: ::Source = T::Lookup::unlookup(recipient.clone()); - - // Get the existential deposit multiplier - let e = components.iter().find(|&c| c.0 == BenchmarkParameter::E).unwrap().1; + let existential_deposit = T::ExistentialDeposit::get(); + let _ = as Currency<_>>::make_free_balance_be(&recipient, existential_deposit); + let transfer_amount = existential_deposit.saturating_mul(e.into()); + }: transfer(RawOrigin::Signed(caller), recipient_lookup, transfer_amount) + + // Benchmark `transfer_keep_alive` with the worst possible condition: + // * The recipient account is created. + transfer_keep_alive { + let u in ...; + let e in ...; + + let caller = account("caller", u, SEED); + let recipient = account("recipient", u, SEED); + let recipient_lookup: ::Source = T::Lookup::unlookup(recipient); // Give the sender account max funds, thus a transfer will not kill account. - let _ = as Currency<_>>::make_free_balance_be(&user, T::Balance::max_value()); + let _ = as Currency<_>>::make_free_balance_be(&caller, T::Balance::max_value()); + let existential_deposit = T::ExistentialDeposit::get(); + let transfer_amount = existential_deposit.saturating_mul(e.into()); + }: _(RawOrigin::Signed(caller), recipient_lookup, transfer_amount) - // Transfer e * existential deposit. - let transfer_amt = ed.saturating_mul(e.into()); + // Benchmark `set_balance` coming from ROOT account. This always creates an account. + set_balance { + let u in ...; + let e in ...; - // Return the `transfer_keep_alive` call - Ok((crate::Call::::transfer_keep_alive(recipient_lookup, transfer_amt), user_origin)) - } -} - -// Benchmark `set_balance` coming from ROOT account. This always creates an account. -struct SetBalance; -impl BenchmarkingSetup, RawOrigin> for SetBalance { - fn components(&self) -> Vec<(BenchmarkParameter, u32, u32)> { - vec![ - // Existential Deposit Multiplier - (BenchmarkParameter::E, 2, 1000), - // User Seed - (BenchmarkParameter::U, 1, 1000), - ] - } - - fn instance(&self, components: &[(BenchmarkParameter, u32)]) - -> Result<(crate::Call, RawOrigin), &'static str> - { - // Constants - let ed = T::ExistentialDeposit::get(); - - // Select a sender - let u = components.iter().find(|&c| c.0 == BenchmarkParameter::U).unwrap().1; - let user = account::("user", u); + let user: T::AccountId = account("user", u, SEED); let user_lookup: ::Source = T::Lookup::unlookup(user.clone()); - // Get the existential deposit multiplier for free and reserved - let e = components.iter().find(|&c| c.0 == BenchmarkParameter::E).unwrap().1; - let balance_amt = ed.saturating_mul(e.into()); - - // Return the `set_balance` call - Ok((crate::Call::::set_balance(user_lookup, balance_amt, balance_amt), RawOrigin::Root)) - } -} - -// Benchmark `set_balance` coming from ROOT account. This always kills an account. -struct SetBalanceKilling; -impl BenchmarkingSetup, RawOrigin> for SetBalanceKilling { - fn components(&self) -> Vec<(BenchmarkParameter, u32, u32)> { - vec![ - // Existential Deposit Multiplier - (BenchmarkParameter::E, 2, 1000), - // User Seed - (BenchmarkParameter::U, 1, 1000), - ] - } + // Give the user some initial balance. + let existential_deposit = T::ExistentialDeposit::get(); + let balance_amount = existential_deposit.saturating_mul(e.into()); + let _ = as Currency<_>>::make_free_balance_be(&user, balance_amount); + }: _(RawOrigin::Root, user_lookup, balance_amount, balance_amount) - fn instance(&self, components: &[(BenchmarkParameter, u32)]) - -> Result<(crate::Call, RawOrigin), &'static str> - { - // Constants - let ed = T::ExistentialDeposit::get(); + // Benchmark `set_balance` coming from ROOT account. This always kills an account. + set_balance_killing { + let u in ...; + let e in ...; - // Select a sender - let u = components.iter().find(|&c| c.0 == BenchmarkParameter::U).unwrap().1; - let user = account::("user", u); + let user: T::AccountId = account("user", u, SEED); let user_lookup: ::Source = T::Lookup::unlookup(user.clone()); - // Get the existential deposit multiplier for free and reserved - let e = components.iter().find(|&c| c.0 == BenchmarkParameter::E).unwrap().1; - // Give the user some initial balance - let balance_amt = ed.saturating_mul(e.into()); - let _ = as Currency<_>>::make_free_balance_be(&user, balance_amt); - - // Return the `set_balance` call that will kill the account - Ok((crate::Call::::set_balance(user_lookup, 0.into(), 0.into()), RawOrigin::Root)) - } -} - -// The list of available benchmarks for this pallet. -enum SelectedBenchmark { - Transfer, - TransferBestCase, - TransferKeepAlive, - SetBalance, - SetBalanceKilling, -} - -// Allow us to select a benchmark from the list of available benchmarks. -impl BenchmarkingSetup, RawOrigin> for SelectedBenchmark { - fn components(&self) -> Vec<(BenchmarkParameter, u32, u32)> { - match self { - Self::Transfer => , RawOrigin>>::components(&Transfer), - Self::TransferBestCase => , RawOrigin>>::components(&TransferBestCase), - Self::TransferKeepAlive => , RawOrigin>>::components(&TransferKeepAlive), - Self::SetBalance => , RawOrigin>>::components(&SetBalance), - Self::SetBalanceKilling => , RawOrigin>>::components(&SetBalanceKilling), - } - } - - fn instance(&self, components: &[(BenchmarkParameter, u32)]) - -> Result<(crate::Call, RawOrigin), &'static str> - { - match self { - Self::Transfer => , RawOrigin>>::instance(&Transfer, components), - Self::TransferBestCase => , RawOrigin>>::instance(&TransferBestCase, components), - Self::TransferKeepAlive => , RawOrigin>>::instance(&TransferKeepAlive, components), - Self::SetBalance => , RawOrigin>>::instance(&SetBalance, components), - Self::SetBalanceKilling => , RawOrigin>>::instance(&SetBalanceKilling, components), - } - } -} - -impl Benchmarking for Module { - fn run_benchmark(extrinsic: Vec, steps: u32, repeat: u32) -> Result, &'static str> { - // Map the input to the selected benchmark. - let selected_benchmark = match extrinsic.as_slice() { - b"transfer" => SelectedBenchmark::Transfer, - b"transfer_best_case" => SelectedBenchmark::TransferBestCase, - b"transfer_keep_alive" => SelectedBenchmark::TransferKeepAlive, - b"set_balance" => SelectedBenchmark::SetBalance, - b"set_balance_killing" => SelectedBenchmark::SetBalanceKilling, - _ => return Err("Could not find extrinsic."), - }; - - // Warm up the DB - benchmarking::commit_db(); - benchmarking::wipe_db(); - - let components = , RawOrigin>>::components(&selected_benchmark); - // results go here - let mut results: Vec = Vec::new(); - // Select the component we will be benchmarking. Each component will be benchmarked. - for (name, low, high) in components.iter() { - // Create up to `STEPS` steps for that component between high and low. - let step_size = ((high - low) / steps).max(1); - let num_of_steps = (high - low) / step_size; - for s in 0..num_of_steps { - // This is the value we will be testing for component `name` - let component_value = low + step_size * s; - - // Select the mid value for all the other components. - let c: Vec<(BenchmarkParameter, u32)> = components.iter() - .map(|(n, l, h)| - (*n, if n == name { component_value } else { (h - l) / 2 + l }) - ).collect(); - - // Run the benchmark `repeat` times. - for _r in 0..repeat { - // Set up the externalities environment for the setup we want to benchmark. - let (call, caller) = , RawOrigin>>::instance(&selected_benchmark, &c)?; - // Commit the externalities to the database, flushing the DB cache. - // This will enable worst case scenario for reading from the database. - benchmarking::commit_db(); - // Run the benchmark. - let start = benchmarking::current_time(); - call.dispatch(caller.clone().into())?; - let finish = benchmarking::current_time(); - let elapsed = finish - start; - sp_std::if_std!{ - if let RawOrigin::Signed(who) = caller.clone() { - let balance = Account::::get(&who).free; - println!("Free Balance {:?}", balance); - } - } - results.push((c.clone(), elapsed)); - // Wipe the DB back to the genesis state. - benchmarking::wipe_db(); - } - } - } - return Ok(results); - } -} + // Give the user some initial balance. + let existential_deposit = T::ExistentialDeposit::get(); + let balance_amount = existential_deposit.saturating_mul(e.into()); + let _ = as Currency<_>>::make_free_balance_be(&user, balance_amount); + }: set_balance(RawOrigin::Root, user_lookup, 0.into(), 0.into()) +} \ No newline at end of file diff --git a/frame/benchmarking/Cargo.toml b/frame/benchmarking/Cargo.toml index c2748e080d..87c51c70e8 100644 --- a/frame/benchmarking/Cargo.toml +++ b/frame/benchmarking/Cargo.toml @@ -10,6 +10,7 @@ codec = { package = "parity-scale-codec", version = "1.1.2", default-features = sp-api = { version = "2.0.0", path = "../../primitives/api", default-features = false } sp-runtime-interface = { version = "2.0.0", path = "../../primitives/runtime-interface", default-features = false } sp-std = { version = "2.0.0", path = "../../primitives/std", default-features = false } +sp-io ={ path = "../../primitives/io", default-features = false } [features] default = [ "std" ] diff --git a/frame/benchmarking/src/lib.rs b/frame/benchmarking/src/lib.rs index c57cfb4914..a78d59ef33 100644 --- a/frame/benchmarking/src/lib.rs +++ b/frame/benchmarking/src/lib.rs @@ -14,79 +14,396 @@ // You should have received a copy of the GNU General Public License // along with Substrate. If not, see . -//! Interfaces and types for benchmarking a FRAME runtime. +//! Macro for benchmarking a FRAME runtime. #![cfg_attr(not(feature = "std"), no_std)] -use sp_std::vec::Vec; +mod utils; +pub use utils::*; -/// An alphabet of possible parameters to use for benchmarking. -#[derive(codec::Encode, codec::Decode, Clone, Copy, PartialEq, Debug)] -#[allow(missing_docs)] -pub enum BenchmarkParameter { - A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z, -} - -/// Results from running benchmarks on a FRAME pallet. -/// Contains duration of the function call in nanoseconds along with the benchmark parameters -/// used for that benchmark result. -pub type BenchmarkResults = (Vec<(BenchmarkParameter, u32)>, u128); - -sp_api::decl_runtime_apis! { - /// Runtime api for benchmarking a FRAME runtime. - pub trait Benchmark { - /// Dispatch the given benchmark. - fn dispatch_benchmark( - module: Vec, - extrinsic: Vec, - steps: u32, - repeat: u32, - ) -> Option>; +/// Construct pallet benchmarks for weighing dispatchables. +/// +/// Works around the idea of complexity parameters, named by a single letter (which is usually +/// upper cased in complexity notation but is lower-cased for use in this macro). +/// +/// Complexity parameters ("parameters") have a range which is a `u32` pair. Every time a benchmark +/// is prepared and run, this parameter takes a concrete value within the range. There is an +/// associated instancing block, which is a single expression that is evaluated during +/// preparation. It may use `?` (`i.e. `return Err(...)`) to bail with a string error. Here's a +/// few examples: +/// +/// ```ignore +/// // These two are equivalent: +/// let x in 0 .. 10; +/// let x in 0 .. 10 => (); +/// // This one calls a setup function and might return an error (which would be terminal). +/// let y in 0 .. 10 => setup(y)?; +/// // This one uses a code block to do lots of stuff: +/// let z in 0 .. 10 => { +/// let a = z * z / 5; +/// let b = do_something(a)?; +/// combine_into(z, b); +/// } +/// ``` +/// +/// Note that due to parsing restrictions, if the `from` expression is not a single token (i.e. a +/// literal or constant), then it must be parenthesised. +/// +/// The macro allows for a number of "arms", each representing an individual benchmark. Using the +/// simple syntax, the associated dispatchable function maps 1:1 with the benchmark and the name of +/// the benchmark is the same as that of the associated function. However, extended syntax allows +/// for arbitrary expresions to be evaluated in a benchmark (including for example, +/// `on_initialize`). +/// +/// The macro allows for common parameters whose ranges and instancing expressions may be drawn upon +/// (or not) by each arm. Syntax is available to allow for only the range to be drawn upon if +/// desired, allowing an alternative instancing expression to be given. +/// +/// Each arm may also have a block of code which is run prior to any instancing and a block of code +/// which is run afterwards. All code blocks may draw upon the specific value of each parameter +/// at any time. Local variables are shared between the two pre- and post- code blocks, but do not +/// leak from the interior of any instancing expressions. +/// +/// Any common parameters that are unused in an arm do not have their instancing expressions +/// evaluated. +/// +/// Example: +/// ```ignore +/// benchmarks! { +/// // common parameter; just one for this example. +/// _ { +/// let l in 1 .. MAX_LENGTH => initialize_l(l); +/// } +/// +/// // first dispatchable: foo; this is a user dispatchable and operates on a `u8` vector of +/// // size `l`, which we allow to be initialised as usual. +/// foo { +/// let caller = account::(b"caller", 0, benchmarks_seed); +/// let l = ...; +/// } _(Origin::Signed(caller), vec![0u8; l]) +/// +/// // second dispatchable: bar; this is a root dispatchable and accepts a `u8` vector of size +/// // `l`. We don't want it preininitialised like before so we override using the `=> ()` +/// // notation. +/// // In this case, we explicitly name the call using `bar` instead of `_`. +/// bar { +/// let l = _ .. _ => (); +/// } bar(Origin::Root, vec![0u8; l]) +/// +/// // third dispatchable: baz; this is a user dispatchable. It isn't dependent on length like the +/// // other two but has its own complexity `c` that needs setting up. It uses `caller` (in the +/// // pre-instancing block) within the code block. This is only allowed in the param instancers +/// // of arms. Instancers of common params cannot optimistically draw upon hypothetical variables +/// // that the arm's pre-instancing code block might have declared. +/// baz1 { +/// let caller = account::(b"caller", 0, benchmarks_seed); +/// let c = 0 .. 10 => setup_c(&caller, c); +/// } baz(Origin::Signed(caller)) +/// +/// // this is a second benchmark of the baz dispatchable with a different setup. +/// baz2 { +/// let caller = account::(b"caller", 0, benchmarks_seed); +/// let c = 0 .. 10 => setup_c_in_some_other_way(&caller, c); +/// } baz(Origin::Signed(caller)) +/// +/// // this is benchmarking some code that is not a dispatchable. +/// populate_a_set { +/// let x in 0 .. 10_000; +/// let mut m = Vec::::new(); +/// for i in 0..x { +/// m.insert(i); +/// } +/// } { m.into_iter().collect::() } +/// } +/// ``` +#[macro_export] +macro_rules! benchmarks { + ( + _ { + $( + let $common:ident in $common_from:tt .. $common_to:expr => $common_instancer:expr; + )* + } + $( $rest:tt )* + ) => { + $crate::benchmarks_iter!({ + $( { $common , $common_from , $common_to , $common_instancer } )* + } ( ) $( $rest )* ); } } -/// Interface that provides functions for benchmarking the runtime. -#[sp_runtime_interface::runtime_interface] -pub trait Benchmarking { - /// Get the number of nanoseconds passed since the UNIX epoch - /// - /// WARNING! This is a non-deterministic call. Do not use this within - /// consensus critical logic. - fn current_time() -> u128 { - std::time::SystemTime::now().duration_since(std::time::SystemTime::UNIX_EPOCH) - .expect("Unix time doesn't go backwards; qed") - .as_nanos() - } +#[macro_export] +macro_rules! impl_benchmark { + ( + $( $name:ident ),* + ) => { + impl $crate::Benchmarking<$crate::BenchmarkResults> for Module { + fn run_benchmark(extrinsic: Vec, steps: u32, repeat: u32) -> Result, &'static str> { + // Map the input to the selected benchmark. + let extrinsic = sp_std::str::from_utf8(extrinsic.as_slice()) + .map_err(|_| "Could not find extrinsic")?; + let selected_benchmark = match extrinsic { + $( stringify!($name) => SelectedBenchmark::$name, )* + _ => return Err("Could not find extrinsic."), + }; - /// Reset the trie database to the genesis state. - fn wipe_db(&mut self) { - self.wipe() - } + // Warm up the DB + $crate::benchmarking::commit_db(); + $crate::benchmarking::wipe_db(); + + // first one is set_identity. + let components = , RawOrigin>>::components(&selected_benchmark); + // results go here + let mut results: Vec<$crate::BenchmarkResults> = Vec::new(); + // Select the component we will be benchmarking. Each component will be benchmarked. + for (name, low, high) in components.iter() { + // Create up to `STEPS` steps for that component between high and low. + let step_size = ((high - low) / steps).max(1); + let num_of_steps = (high - low) / step_size; + for s in 0..num_of_steps { + // This is the value we will be testing for component `name` + let component_value = low + step_size * s; - /// Commit pending storage changes to the trie database and clear the database cache. - fn commit_db(&mut self) { - self.commit() + // Select the mid value for all the other components. + let c: Vec<($crate::BenchmarkParameter, u32)> = components.iter() + .map(|(n, l, h)| + (*n, if n == name { component_value } else { (h - l) / 2 + l }) + ).collect(); + + // Run the benchmark `repeat` times. + for _ in 0..repeat { + // Set up the externalities environment for the setup we want to benchmark. + let (call, caller) = , RawOrigin>>::instance(&selected_benchmark, &c)?; + // Commit the externalities to the database, flushing the DB cache. + // This will enable worst case scenario for reading from the database. + $crate::benchmarking::commit_db(); + // Run the benchmark. + let start = $crate::benchmarking::current_time(); + call.dispatch(caller.into())?; + let finish = $crate::benchmarking::current_time(); + let elapsed = finish - start; + results.push((c.clone(), elapsed)); + // Wipe the DB back to the genesis state. + $crate::benchmarking::wipe_db(); + } + } + } + return Ok(results); + } + } } } -/// The pallet benchmarking trait. -pub trait Benchmarking { - /// Run the benchmarks for this pallet. - /// - /// Parameters - /// - `extrinsic`: The name of extrinsic function you want to benchmark encoded as bytes. - /// - `steps`: The number of sample points you want to take across the range of parameters. - /// - `repeat`: The number of times you want to repeat a benchmark. - fn run_benchmark(extrinsic: Vec, steps: u32, repeat: u32) -> Result, &'static str>; +#[macro_export] +#[allow(missing_docs)] +macro_rules! benchmarks_iter { + // mutation arm: + ( + { $( $common:tt )* } + ( $( $names:ident )* ) + $name:ident { $( $code:tt )* }: _ ( $origin:expr $( , $arg:expr )* ) + $( $rest:tt )* + ) => { + $crate::benchmarks_iter! { + { $( $common )* } ( $( $names )* ) $name { $( $code )* }: $name ( $origin $( , $arg )* ) $( $rest )* + } + }; + // mutation arm: + ( + { $( $common:tt )* } + ( $( $names:ident )* ) + $name:ident { $( $code:tt )* }: $dispatch:ident ( $origin:expr $( , $arg:expr )* ) + $( $rest:tt )* + ) => { + $crate::benchmarks_iter! { + { $( $common )* } ( $( $names )* ) $name { $( $code )* }: { Ok((crate::Call::::$dispatch($($arg),*), $origin)) } $( $rest )* + } + }; + // iteration arm: + ( + { $( $common:tt )* } + ( $( $names:ident )* ) + $name:ident { $( $code:tt )* }: { $eval:expr } + $( $rest:tt )* + ) => { + $crate::benchmark_backend! { + $name { $( $common )* } { } { $eval } { $( $code )* } + } + $crate::benchmarks_iter!( { $( $common )* } ( $( $names )* $name ) $( $rest )* ); + }; + // iteration-exit arm + ( { $( $common:tt )* } ( $( $names:ident )* ) ) => { + $crate::selected_benchmark!( $( $names ),* ); + $crate::impl_benchmark!( $( $names ),* ); + } } -/// The required setup for creating a benchmark. -pub trait BenchmarkingSetup { - /// Return the components and their ranges which should be tested in this benchmark. - fn components(&self) -> Vec<(BenchmarkParameter, u32, u32)>; +#[macro_export] +#[allow(missing_docs)] +macro_rules! benchmark_backend { + // parsing arms + ($name:ident { + $( $common:tt )* + } { + $( PRE { $( $pre_parsed:tt )* } )* + } { $eval:expr } { + let $pre_id:tt : $pre_ty:ty = $pre_ex:expr; + $( $rest:tt )* + } ) => { + $crate::benchmark_backend! { + $name { $( $common )* } { + $( PRE { $( $pre_parsed )* } )* + PRE { $pre_id , $pre_ty , $pre_ex } + } { $eval } { $( $rest )* } + } + }; + ($name:ident { + $( $common:tt )* + } { + $( $parsed:tt )* + } { $eval:expr } { + let $param:ident in ( $param_from:expr ) .. $param_to:expr => $param_instancer:expr; + $( $rest:tt )* + }) => { + $crate::benchmark_backend! { + $name { $( $common )* } { + $( $parsed )* + PARAM { $param , $param_from , $param_to , $param_instancer } + } { $eval } { $( $rest )* } + } + }; + // mutation arm to look after defaulting to a common param + ($name:ident { + $( { $common:ident , $common_from:tt , $common_to:expr , $common_instancer:expr } )* + } { + $( $parsed:tt )* + } { $eval:expr } { + let $param:ident in ...; + $( $rest:tt )* + }) => { + $crate::benchmark_backend! { + $name { + $( { $common , $common_from , $common_to , $common_instancer } )* + } { + $( $parsed )* + } { $eval } { + let $param + in ({ $( let $common = $common_from; )* $param }) + .. ({ $( let $common = $common_to; )* $param }) + => ({ $( let $common = || -> Result<(), &'static str> { $common_instancer ; Ok(()) }; )* $param()? }); + $( $rest )* + } + } + }; + // mutation arm to look after defaulting only the range to common param + ($name:ident { + $( { $common:ident , $common_from:tt , $common_to:expr , $common_instancer:expr } )* + } { + $( $parsed:tt )* + } { $eval:expr } { + let $param:ident in _ .. _ => $param_instancer:expr ; + $( $rest:tt )* + }) => { + $crate::benchmark_backend! { + $name { + $( { $common , $common_from , $common_to , $common_instancer } )* + } { + $( $parsed )* + } { $eval } { + let $param + in ({ $( let $common = $common_from; )* $param }) + .. ({ $( let $common = $common_to; )* $param }) + => $param_instancer ; + $( $rest )* + } + } + }; + // mutation arm to look after a single tt for param_from. + ($name:ident { + $( $common:tt )* + } { + $( $parsed:tt )* + } { $eval:expr } { + let $param:ident in $param_from:tt .. $param_to:expr => $param_instancer:expr ; + $( $rest:tt )* + }) => { + $crate::benchmark_backend! { + $name { $( $common )* } { $( $parsed )* } { $eval } { + let $param in ( $param_from ) .. $param_to => $param_instancer; + $( $rest )* + } + } + }; + // mutation arm to look after the default tail of `=> ()` + ($name:ident { + $( $common:tt )* + } { + $( $parsed:tt )* + } { $eval:expr } { + let $param:ident in $param_from:tt .. $param_to:expr; + $( $rest:tt )* + }) => { + $crate::benchmark_backend! { + $name { $( $common )* } { $( $parsed )* } { $eval } { + let $param in $param_from .. $param_to => (); + $( $rest )* + } + } + }; + // mutation arm to look after `let _ =` + ($name:ident { + $( $common:tt )* + } { + $( $parsed:tt )* + } { $eval:expr } { + let $pre_id:tt = $pre_ex:expr; + $( $rest:tt )* + }) => { + $crate::benchmark_backend! { + $name { $( $common )* } { $( $parsed )* } { $eval } { + let $pre_id : _ = $pre_ex; + $( $rest )* + } + } + }; + // actioning arm + ($name:ident { + $( { $common:ident , $common_from:tt , $common_to:expr , $common_instancer:expr } )* + } { + $( PRE { $pre_id:tt , $pre_ty:ty , $pre_ex:expr } )* + $( PARAM { $param:ident , $param_from:expr , $param_to:expr , $param_instancer:expr } )* + } { $eval:expr } { $( $post:tt )* } ) => { + #[allow(non_camel_case_types)] + struct $name; + #[allow(unused_variables)] + impl $crate::BenchmarkingSetup, RawOrigin> for $name { + fn components(&self) -> Vec<($crate::BenchmarkParameter, u32, u32)> { + vec! [ + $( + ($crate::BenchmarkParameter::$param, $param_from, $param_to) + ),* + ] + } - /// Set up the storage, and prepare a call and caller to test in a single run of the benchmark. - fn instance(&self, components: &[(BenchmarkParameter, u32)]) -> Result<(Call, RawOrigin), &'static str>; + fn instance(&self, components: &[($crate::BenchmarkParameter, u32)]) + -> Result<(crate::Call, RawOrigin), &'static str> + { + $( + let $common = $common_from; + )* + $( + // Prepare instance + let $param = components.iter().find(|&c| c.0 == $crate::BenchmarkParameter::$param).unwrap().1; + )* + $( + let $pre_id : $pre_ty = $pre_ex; + )* + $( $param_instancer ; )* + $( $post )* + $eval + } + } + } } /// Creates a `SelectedBenchmark` enum implementing `BenchmarkingSetup`. @@ -109,6 +426,7 @@ macro_rules! selected_benchmark { $( $bench:ident ),* ) => { // The list of available benchmarks for this pallet. + #[allow(non_camel_case_types)] enum SelectedBenchmark { $( $bench, )* } diff --git a/frame/benchmarking/src/utils.rs b/frame/benchmarking/src/utils.rs new file mode 100644 index 0000000000..81e87a45f8 --- /dev/null +++ b/frame/benchmarking/src/utils.rs @@ -0,0 +1,97 @@ +// Copyright 2020 Parity Technologies (UK) Ltd. +// This file is part of Substrate. + +// Substrate is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Substrate is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Substrate. If not, see . + +//! Interfaces, types and utils for benchmarking a FRAME runtime. + +use codec::{Encode, Decode}; +use sp_std::vec::Vec; +use sp_io::hashing::blake2_256; + +/// An alphabet of possible parameters to use for benchmarking. +#[derive(codec::Encode, codec::Decode, Clone, Copy, PartialEq, Debug)] +#[allow(missing_docs)] +#[allow(non_camel_case_types)] +pub enum BenchmarkParameter { + a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, +} + +/// Results from running benchmarks on a FRAME pallet. +/// Contains duration of the function call in nanoseconds along with the benchmark parameters +/// used for that benchmark result. +pub type BenchmarkResults = (Vec<(BenchmarkParameter, u32)>, u128); + +sp_api::decl_runtime_apis! { + /// Runtime api for benchmarking a FRAME runtime. + pub trait Benchmark { + /// Dispatch the given benchmark. + fn dispatch_benchmark( + module: Vec, + extrinsic: Vec, + steps: u32, + repeat: u32, + ) -> Option>; + } +} + +/// Interface that provides functions for benchmarking the runtime. +#[sp_runtime_interface::runtime_interface] +pub trait Benchmarking { + /// Get the number of nanoseconds passed since the UNIX epoch + /// + /// WARNING! This is a non-deterministic call. Do not use this within + /// consensus critical logic. + fn current_time() -> u128 { + std::time::SystemTime::now().duration_since(std::time::SystemTime::UNIX_EPOCH) + .expect("Unix time doesn't go backwards; qed") + .as_nanos() + } + + /// Reset the trie database to the genesis state. + fn wipe_db(&mut self) { + self.wipe() + } + + /// Commit pending storage changes to the trie database and clear the database cache. + fn commit_db(&mut self) { + self.commit() + } +} + +/// The pallet benchmarking trait. +pub trait Benchmarking { + /// Run the benchmarks for this pallet. + /// + /// Parameters + /// - `extrinsic`: The name of extrinsic function you want to benchmark encoded as bytes. + /// - `steps`: The number of sample points you want to take across the range of parameters. + /// - `repeat`: The number of times you want to repeat a benchmark. + fn run_benchmark(extrinsic: Vec, steps: u32, repeat: u32) -> Result, &'static str>; +} + +/// The required setup for creating a benchmark. +pub trait BenchmarkingSetup { + /// Return the components and their ranges which should be tested in this benchmark. + fn components(&self) -> Vec<(BenchmarkParameter, u32, u32)>; + + /// Set up the storage, and prepare a call and caller to test in a single run of the benchmark. + fn instance(&self, components: &[(BenchmarkParameter, u32)]) -> Result<(Call, RawOrigin), &'static str>; +} + +/// Grab an account, seeded by a name and index. +pub fn account(name: &'static str, index: u32, seed: u32) -> AccountId { + let entropy = (name, index, seed).using_encoded(blake2_256); + AccountId::decode(&mut &entropy[..]).unwrap_or_default() +} diff --git a/frame/identity/src/benchmarking.rs b/frame/identity/src/benchmarking.rs index c208d32717..20ff66f0db 100644 --- a/frame/identity/src/benchmarking.rs +++ b/frame/identity/src/benchmarking.rs @@ -20,10 +20,7 @@ use super::*; use frame_system::RawOrigin; use sp_io::hashing::blake2_256; -use frame_benchmarking::{ - BenchmarkResults, BenchmarkParameter, selected_benchmark, benchmarking, Benchmarking, - BenchmarkingSetup, -}; +use frame_benchmarking::benchmarks; use sp_runtime::traits::{Bounded, Dispatchable}; use crate::Module as Identity; @@ -90,150 +87,89 @@ fn create_identity_info(num_fields: u32) -> IdentityInfo { return info } -// Benchmark `add_registrar` extrinsic. -struct AddRegistrar; -impl BenchmarkingSetup, RawOrigin> for AddRegistrar { - fn components(&self) -> Vec<(BenchmarkParameter, u32, u32)> { - vec![ - // Registrar Count - (BenchmarkParameter::R, 1, MAX_REGISTRARS), - ] - } - - fn instance(&self, components: &[(BenchmarkParameter, u32)]) - -> Result<(crate::Call, RawOrigin), &'static str> - { - // Add r registrars - let r = components.iter().find(|&c| c.0 == BenchmarkParameter::R).unwrap().1; - add_registrars::(r)?; - - // Return the `add_registrar` r + 1 call - Ok((crate::Call::::add_registrar(account::("registrar", r + 1)), RawOrigin::Root)) - } -} - -// Benchmark `set_identity` extrinsic. -struct SetIdentity; -impl BenchmarkingSetup, RawOrigin> for SetIdentity { - fn components(&self) -> Vec<(BenchmarkParameter, u32, u32)> { - vec![ - // Registrar Count - (BenchmarkParameter::R, 1, MAX_REGISTRARS), - // Additional Field Count - (BenchmarkParameter::X, 1, T::MaxAdditionalFields::get()) - ] - } - - fn instance(&self, components: &[(BenchmarkParameter, u32)]) - -> Result<(crate::Call, RawOrigin), &'static str> - { - // Add r registrars - let r = components.iter().find(|&c| c.0 == BenchmarkParameter::R).unwrap().1; - add_registrars::(r)?; - - // The target user - let caller = account::("caller", r); - let caller_lookup: ::Source = T::Lookup::unlookup(caller.clone()); - let caller_origin: ::Origin = RawOrigin::Signed(caller.clone()).into(); - let _ = T::Currency::make_free_balance_be(&caller, BalanceOf::::max_value()); - - // Add an initial identity - let initial_info = create_identity_info::(1); - Identity::::set_identity(caller_origin.clone(), initial_info)?; - - // User requests judgement from all the registrars, and they approve - for i in 0..r { - Identity::::request_judgement(caller_origin.clone(), i, 10.into())?; - Identity::::provide_judgement( - RawOrigin::Signed(account::("registrar", i)).into(), - i, - caller_lookup.clone(), - Judgement::Reasonable - )?; - } - - // Create identity info with x additional fields - let x = components.iter().find(|&c| c.0 == BenchmarkParameter::X).unwrap().1; - // 32 byte data that we reuse below - let info = create_identity_info::(x); - - // Return the `set_identity` call - Ok((crate::Call::::set_identity(info), RawOrigin::Signed(caller))) +benchmarks! { + // These are the common parameters along with their instancing. + _ { + let r in 1 .. MAX_REGISTRARS => add_registrars::(r)?; + let s in 1 .. T::MaxSubAccounts::get() => { + // Give them s many sub accounts + let caller = account::("caller", 0); + let _ = add_sub_accounts::(caller, s)?; + }; + let x in 1 .. T::MaxAdditionalFields::get() => { + // Create their main identity with x additional fields + let info = create_identity_info::(x); + let caller = account::("caller", 0); + let caller_origin = ::Origin::from(RawOrigin::Signed(caller)); + Identity::::set_identity(caller_origin, info)?; + }; } -} -// Benchmark `set_subs` extrinsic. -struct SetSubs; -impl BenchmarkingSetup, RawOrigin> for SetSubs { - fn components(&self) -> Vec<(BenchmarkParameter, u32, u32)> { - vec![ - // Subs Count - (BenchmarkParameter::S, 1, T::MaxSubAccounts::get()), - ] - } + add_registrar { + let r in ...; + }: _(RawOrigin::Root, account::("registrar", r + 1)) + + set_identity { + let r in ...; + // This X doesn't affect the caller ID up front like with the others, so we don't use the + // standard preparation. + let x in _ .. _ => (); + let caller = { + // The target user + let caller = account::("caller", 0); + let caller_lookup: ::Source = T::Lookup::unlookup(caller.clone()); + let caller_origin: ::Origin = RawOrigin::Signed(caller.clone()).into(); + let _ = T::Currency::make_free_balance_be(&caller, BalanceOf::::max_value()); + + // Add an initial identity + let initial_info = create_identity_info::(1); + Identity::::set_identity(caller_origin.clone(), initial_info)?; + + // User requests judgement from all the registrars, and they approve + for i in 0..r { + Identity::::request_judgement(caller_origin.clone(), i, 10.into())?; + Identity::::provide_judgement( + RawOrigin::Signed(account::("registrar", i)).into(), + i, + caller_lookup.clone(), + Judgement::Reasonable + )?; + } + caller + }; + }: _( + RawOrigin::Signed(caller), + create_identity_info::(x) + ) - fn instance(&self, components: &[(BenchmarkParameter, u32)]) - -> Result<(crate::Call, RawOrigin), &'static str> - { - // Generic data to be used. - let data = Data::Raw(vec![0; 32]); + set_subs { + let s in ...; - // The target user let caller = account::("caller", 0); let caller_origin: ::Origin = RawOrigin::Signed(caller.clone()).into(); let _ = T::Currency::make_free_balance_be(&caller, BalanceOf::::max_value()); // Create their main identity let info = create_identity_info::(1); - Identity::::set_identity(caller_origin.clone(), info)?; - - // Give them s many sub accounts - let s = components.iter().find(|&c| c.0 == BenchmarkParameter::S).unwrap().1; - let mut subs = add_sub_accounts::(caller.clone(), s)?; - + Identity::::set_identity(caller_origin, info)?; + }: _(RawOrigin::Signed(caller), { + let mut subs = Module::::subs(&caller); + // Generic data to be used. + let data = Data::Raw(vec![0; 32]); // Create an s+1 sub account to add - subs.push((account::("sub", s+1), data)); - - // Return the `set_subs` call - Ok((crate::Call::::set_subs(subs), RawOrigin::Signed(caller))) - } -} - -// Benchmark `clear_identity` extrinsic. -struct ClearIdentity; -impl BenchmarkingSetup, RawOrigin> for ClearIdentity { - fn components(&self) -> Vec<(BenchmarkParameter, u32, u32)> { - vec![ - // Registrar Count - (BenchmarkParameter::R, 1, MAX_REGISTRARS), - // Subs Count - (BenchmarkParameter::S, 1, T::MaxSubAccounts::get()), - // Additional Field Count - (BenchmarkParameter::X, 1, T::MaxAdditionalFields::get()), - ] - } + subs.push((account::("sub", s + 1), data)); + subs + }) - fn instance(&self, components: &[(BenchmarkParameter, u32)]) - -> Result<(crate::Call, RawOrigin), &'static str> - { - // The target user + clear_identity { let caller = account::("caller", 0); - let caller_origin: ::Origin = RawOrigin::Signed(caller.clone()).into(); - let caller_lookup: ::Source = T::Lookup::unlookup(caller.clone()); + let caller_origin = ::Origin::from(RawOrigin::Signed(caller.clone())); + let caller_lookup = ::unlookup(caller.clone()); let _ = T::Currency::make_free_balance_be(&caller, BalanceOf::::max_value()); - // Register r registrars - let r = components.iter().find(|&c| c.0 == BenchmarkParameter::R).unwrap().1; - add_registrars::(r)?; - - // Create their main identity with x additional fields - let x = components.iter().find(|&c| c.0 == BenchmarkParameter::X).unwrap().1; - let info = create_identity_info::(x); - Identity::::set_identity(caller_origin.clone(), info)?; - - // Give them s many sub accounts - let s = components.iter().find(|&c| c.0 == BenchmarkParameter::S).unwrap().1; - let _ = add_sub_accounts::(caller.clone(), s)?; + let r in ...; + let s in ...; + let x in ...; // User requests judgement from all the registrars, and they approve for i in 0..r { @@ -245,260 +181,87 @@ impl BenchmarkingSetup, RawOrigin> for Judgement::Reasonable )?; } + }: _(RawOrigin::Signed(caller)) - // Return the `clear_identity` call - Ok((crate::Call::::clear_identity(), RawOrigin::Signed(caller))) - } -} - -// Benchmark `request_judgement` extrinsic. -struct RequestJudgement; -impl BenchmarkingSetup, RawOrigin> for RequestJudgement { - fn components(&self) -> Vec<(BenchmarkParameter, u32, u32)> { - vec![ - // Registrar Count - (BenchmarkParameter::R, 1, MAX_REGISTRARS), - // Additional Field Count - (BenchmarkParameter::X, 1, T::MaxAdditionalFields::get()), - ] - } - - fn instance(&self, components: &[(BenchmarkParameter, u32)]) - -> Result<(crate::Call, RawOrigin), &'static str> - { - // The target user + request_judgement { let caller = account::("caller", 0); - let caller_origin: ::Origin = RawOrigin::Signed(caller.clone()).into(); let _ = T::Currency::make_free_balance_be(&caller, BalanceOf::::max_value()); - // Register r registrars - let r = components.iter().find(|&c| c.0 == BenchmarkParameter::R).unwrap().1; - add_registrars::(r)?; + let r in ...; + let x in ...; + }: _(RawOrigin::Signed(caller), r - 1, 10.into()) - // Create their main identity with x additional fields - let x = components.iter().find(|&c| c.0 == BenchmarkParameter::X).unwrap().1; - let info = create_identity_info::(x); - Identity::::set_identity(caller_origin.clone(), info)?; - - // Return the `request_judgement` call - Ok((crate::Call::::request_judgement(r-1, 10.into()), RawOrigin::Signed(caller))) - } -} - -// Benchmark `cancel_request` extrinsic. -struct CancelRequest; -impl BenchmarkingSetup, RawOrigin> for CancelRequest { - fn components(&self) -> Vec<(BenchmarkParameter, u32, u32)> { - vec![ - // Registrar Count - (BenchmarkParameter::R, 1, MAX_REGISTRARS), - // Additional Field Count - (BenchmarkParameter::X, 1, T::MaxAdditionalFields::get()), - ] - } - - fn instance(&self, components: &[(BenchmarkParameter, u32)]) - -> Result<(crate::Call, RawOrigin), &'static str> - { - // The target user + cancel_request { let caller = account::("caller", 0); - let caller_origin: ::Origin = RawOrigin::Signed(caller.clone()).into(); + let caller_origin = ::Origin::from(RawOrigin::Signed(caller.clone())); let _ = T::Currency::make_free_balance_be(&caller, BalanceOf::::max_value()); - // Register r registrars - let r = components.iter().find(|&c| c.0 == BenchmarkParameter::R).unwrap().1; - add_registrars::(r)?; + let r in ...; + let x in ...; - // Create their main identity with x additional fields - let x = components.iter().find(|&c| c.0 == BenchmarkParameter::X).unwrap().1; - let info = create_identity_info::(x); - Identity::::set_identity(caller_origin.clone(), info)?; - - // Request judgement - Identity::::request_judgement(caller_origin.clone(), r-1, 10.into())?; - - Ok((crate::Call::::cancel_request(r-1), RawOrigin::Signed(caller))) - } -} - -// Benchmark `set_fee` extrinsic. -struct SetFee; -impl BenchmarkingSetup, RawOrigin> for SetFee { - fn components(&self) -> Vec<(BenchmarkParameter, u32, u32)> { - vec![ - // Registrar Count - (BenchmarkParameter::R, 1, MAX_REGISTRARS), - ] - } + Identity::::request_judgement(caller_origin, r - 1, 10.into())?; + }: _(RawOrigin::Signed(caller), r - 1) - fn instance(&self, components: &[(BenchmarkParameter, u32)]) - -> Result<(crate::Call, RawOrigin), &'static str> - { - // The target user + set_fee { let caller = account::("caller", 0); - let _ = T::Currency::make_free_balance_be(&caller, BalanceOf::::max_value()); - // Register r registrars - let r = components.iter().find(|&c| c.0 == BenchmarkParameter::R).unwrap().1; - add_registrars::(r)?; + let r in ...; - // Add caller as registrar Identity::::add_registrar(RawOrigin::Root.into(), caller.clone())?; + }: _(RawOrigin::Signed(caller), r, 10.into()) - // Return `set_fee` call - Ok((crate::Call::::set_fee(r, 10.into()), RawOrigin::Signed(caller))) - } -} - -// Benchmark `set_account_id` extrinsic. -struct SetAccountId; -impl BenchmarkingSetup, RawOrigin> for SetAccountId { - fn components(&self) -> Vec<(BenchmarkParameter, u32, u32)> { - vec![ - // Registrar Count - (BenchmarkParameter::R, 1, MAX_REGISTRARS), - ] - } - - fn instance(&self, components: &[(BenchmarkParameter, u32)]) - -> Result<(crate::Call, RawOrigin), &'static str> - { - // The target user + set_account_id { let caller = account::("caller", 0); let _ = T::Currency::make_free_balance_be(&caller, BalanceOf::::max_value()); - // Register r registrars - let r = components.iter().find(|&c| c.0 == BenchmarkParameter::R).unwrap().1; - add_registrars::(r)?; + let r in ...; - // Add caller as registrar Identity::::add_registrar(RawOrigin::Root.into(), caller.clone())?; + }: _(RawOrigin::Signed(caller), r, account::("new", 0)) - // Return `set_account_id` call - Ok((crate::Call::::set_account_id(r, account::("new", 0)), RawOrigin::Signed(caller))) - } -} - -// Benchmark `set_fields` extrinsic. -struct SetFields; -impl BenchmarkingSetup, RawOrigin> for SetFields { - fn components(&self) -> Vec<(BenchmarkParameter, u32, u32)> { - vec![ - // Registrar Count - (BenchmarkParameter::R, 1, MAX_REGISTRARS), - ] - } - - fn instance(&self, components: &[(BenchmarkParameter, u32)]) - -> Result<(crate::Call, RawOrigin), &'static str> - { - // The target user + set_fields { let caller = account::("caller", 0); let _ = T::Currency::make_free_balance_be(&caller, BalanceOf::::max_value()); - // Register r registrars - let r = components.iter().find(|&c| c.0 == BenchmarkParameter::R).unwrap().1; - add_registrars::(r)?; + let r in ...; - // Add caller as registrar Identity::::add_registrar(RawOrigin::Root.into(), caller.clone())?; - let fields = IdentityFields( IdentityField::Display | IdentityField::Legal | IdentityField::Web | IdentityField::Riot | IdentityField::Email | IdentityField::PgpFingerprint | IdentityField::Image | IdentityField::Twitter ); + }: _(RawOrigin::Signed(caller), r, fields) - // Return `set_account_id` call - Ok((crate::Call::::set_fields(r, fields), RawOrigin::Signed(caller))) - } -} - -// Benchmark `provide_judgement` extrinsic.g -struct ProvideJudgement; -impl BenchmarkingSetup, RawOrigin> for ProvideJudgement { - - fn components(&self) -> Vec<(BenchmarkParameter, u32, u32)> { - vec![ - // Registrar Count - (BenchmarkParameter::R, 1, MAX_REGISTRARS), - // Additional Field Count - (BenchmarkParameter::X, 1, T::MaxAdditionalFields::get()), - ] - } - - fn instance(&self, components: &[(BenchmarkParameter, u32)]) - -> Result<(crate::Call, RawOrigin), &'static str> - { - // Add r registrars - let r = components.iter().find(|&c| c.0 == BenchmarkParameter::R).unwrap().1; - add_registrars::(r)?; - + provide_judgement { // The user let user = account::("user", r); - let user_origin: ::Origin = RawOrigin::Signed(user.clone()).into(); - let user_lookup: ::Source = T::Lookup::unlookup(user.clone()); + let user_origin = ::Origin::from(RawOrigin::Signed(user.clone())); + let user_lookup = ::unlookup(user.clone()); let _ = T::Currency::make_free_balance_be(&user, BalanceOf::::max_value()); - // Create their main identity with x additional fields - let x = components.iter().find(|&c| c.0 == BenchmarkParameter::X).unwrap().1; - let info = create_identity_info::(x); - Identity::::set_identity(user_origin.clone(), info)?; - - // The caller registrar - let caller = account::("caller", r); + let caller = account::("caller", 0); let _ = T::Currency::make_free_balance_be(&caller, BalanceOf::::max_value()); - // Add caller as registrar - Identity::::add_registrar(RawOrigin::Root.into(), caller.clone())?; + let r in ...; + // For this x, it's the user identity that gts the fields, not the caller. + let x in _ .. _ => { + let info = create_identity_info::(x); + Identity::::set_identity(user_origin.clone(), info)?; + }; - // User requests judgement from caller registrar + Identity::::add_registrar(RawOrigin::Root.into(), caller.clone())?; Identity::::request_judgement(user_origin.clone(), r, 10.into())?; + }: _(RawOrigin::Signed(caller), r, user_lookup, Judgement::Reasonable) - // Return `provide_judgement` call - Ok((crate::Call::::provide_judgement( - r, - user_lookup.clone(), - Judgement::Reasonable - ), RawOrigin::Signed(caller))) - } -} - -// Benchmark `kill_identity` extrinsic. -struct KillIdentity; -impl BenchmarkingSetup, RawOrigin> for KillIdentity { - - fn components(&self) -> Vec<(BenchmarkParameter, u32, u32)> { - vec![ - // Registrar Count - (BenchmarkParameter::R, 1, MAX_REGISTRARS), - // Subs Count - (BenchmarkParameter::S, 1, T::MaxSubAccounts::get()), - // Additional Field Count - (BenchmarkParameter::X, 1, T::MaxAdditionalFields::get()), - ] - } - - fn instance(&self, components: &[(BenchmarkParameter, u32)]) - -> Result<(crate::Call, RawOrigin), &'static str> - { - // The target user + kill_identity { let caller = account::("caller", 0); let caller_origin: ::Origin = RawOrigin::Signed(caller.clone()).into(); let caller_lookup: ::Source = T::Lookup::unlookup(caller.clone()); let _ = T::Currency::make_free_balance_be(&caller, BalanceOf::::max_value()); - // Register r registrars - let r = components.iter().find(|&c| c.0 == BenchmarkParameter::R).unwrap().1; - add_registrars::(r)?; - - // Create their main identity with x additional fields - let x = components.iter().find(|&c| c.0 == BenchmarkParameter::X).unwrap().1; - let info = create_identity_info::(x); - Identity::::set_identity(caller_origin.clone(), info)?; - - // Give them s many sub accounts - let s = components.iter().find(|&c| c.0 == BenchmarkParameter::S).unwrap().1; - let _ = add_sub_accounts::(caller.clone(), s)?; + let r in ...; + let s in ...; + let x in ...; // User requests judgement from all the registrars, and they approve for i in 0..r { @@ -510,86 +273,5 @@ impl BenchmarkingSetup, RawOrigin> for Judgement::Reasonable )?; } - - // Return the `kill_identity` call - Ok((crate::Call::::kill_identity(caller_lookup), RawOrigin::Root)) - } -} - -// The list of available benchmarks for this pallet. -selected_benchmark!( - AddRegistrar, - SetIdentity, - SetSubs, - ClearIdentity, - RequestJudgement, - CancelRequest, - SetFee, - SetAccountId, - SetFields, - ProvideJudgement, - KillIdentity -); - -impl Benchmarking for Module { - fn run_benchmark(extrinsic: Vec, steps: u32, repeat: u32) -> Result, &'static str> { - // Map the input to the selected benchmark. - let selected_benchmark = match extrinsic.as_slice() { - b"add_registrar" => SelectedBenchmark::AddRegistrar, - b"set_identity" => SelectedBenchmark::SetIdentity, - b"set_subs" => SelectedBenchmark::SetSubs, - b"clear_identity" => SelectedBenchmark::ClearIdentity, - b"request_judgement" => SelectedBenchmark::RequestJudgement, - b"cancel_request" => SelectedBenchmark::CancelRequest, - b"set_fee" => SelectedBenchmark::SetFee, - b"set_account_id" => SelectedBenchmark::SetAccountId, - b"set_fields" => SelectedBenchmark::SetFields, - b"provide_judgement" => SelectedBenchmark::ProvideJudgement, - b"kill_identity" => SelectedBenchmark::KillIdentity, - _ => return Err("Could not find extrinsic."), - }; - - // Warm up the DB - benchmarking::commit_db(); - benchmarking::wipe_db(); - - // first one is set_identity. - let components = , RawOrigin>>::components(&selected_benchmark); - // results go here - let mut results: Vec = Vec::new(); - // Select the component we will be benchmarking. Each component will be benchmarked. - for (name, low, high) in components.iter() { - // Create up to `STEPS` steps for that component between high and low. - let step_size = ((high - low) / steps).max(1); - let num_of_steps = (high - low) / step_size; - for s in 0..num_of_steps { - // This is the value we will be testing for component `name` - let component_value = low + step_size * s; - - // Select the mid value for all the other components. - let c: Vec<(BenchmarkParameter, u32)> = components.iter() - .map(|(n, l, h)| - (*n, if n == name { component_value } else { (h - l) / 2 + l }) - ).collect(); - - // Run the benchmark `repeat` times. - for _ in 0..repeat { - // Set up the externalities environment for the setup we want to benchmark. - let (call, caller) = , RawOrigin>>::instance(&selected_benchmark, &c)?; - // Commit the externalities to the database, flushing the DB cache. - // This will enable worst case scenario for reading from the database. - benchmarking::commit_db(); - // Run the benchmark. - let start = benchmarking::current_time(); - call.dispatch(caller.into())?; - let finish = benchmarking::current_time(); - let elapsed = finish - start; - results.push((c.clone(), elapsed)); - // Wipe the DB back to the genesis state. - benchmarking::wipe_db(); - } - } - } - return Ok(results); - } + }: _(RawOrigin::Root, caller_lookup) } diff --git a/frame/identity/src/lib.rs b/frame/identity/src/lib.rs index 895efa1c81..23a0620edf 100644 --- a/frame/identity/src/lib.rs +++ b/frame/identity/src/lib.rs @@ -394,7 +394,7 @@ decl_storage! { /// Alternative "sub" identities of this account. /// /// The first item is the deposit, the second is a vector of the accounts. - pub SubsOf get(fn subs): + pub SubsOf get(fn subs_of): map hasher(blake2_256) T::AccountId => (BalanceOf, Vec); /// The set of registrars. Not expected to get very big as can only be added through a @@ -875,6 +875,16 @@ decl_module! { } } +impl Module { + /// Get the subs of an account. + pub fn subs(who: &T::AccountId) -> Vec<(T::AccountId, Data)> { + SubsOf::::get(who).1 + .into_iter() + .filter_map(|a| SuperOf::::get(&a).map(|x| (a, x.1))) + .collect() + } +} + #[cfg(test)] mod tests { use super::*; @@ -1097,14 +1107,14 @@ mod tests { assert_ok!(Identity::set_identity(Origin::signed(10), ten())); assert_ok!(Identity::set_subs(Origin::signed(10), subs.clone())); assert_eq!(Balances::free_balance(10), 80); - assert_eq!(Identity::subs(10), (10, vec![20])); + assert_eq!(Identity::subs_of(10), (10, vec![20])); assert_eq!(Identity::super_of(20), Some((10, Data::Raw(vec![40; 1])))); // push another item and re-set it. subs.push((30, Data::Raw(vec![50; 1]))); assert_ok!(Identity::set_subs(Origin::signed(10), subs.clone())); assert_eq!(Balances::free_balance(10), 70); - assert_eq!(Identity::subs(10), (20, vec![20, 30])); + assert_eq!(Identity::subs_of(10), (20, vec![20, 30])); assert_eq!(Identity::super_of(20), Some((10, Data::Raw(vec![40; 1])))); assert_eq!(Identity::super_of(30), Some((10, Data::Raw(vec![50; 1])))); @@ -1112,7 +1122,7 @@ mod tests { subs[0] = (40, Data::Raw(vec![60; 1])); assert_ok!(Identity::set_subs(Origin::signed(10), subs.clone())); assert_eq!(Balances::free_balance(10), 70); // no change in the balance - assert_eq!(Identity::subs(10), (20, vec![40, 30])); + assert_eq!(Identity::subs_of(10), (20, vec![40, 30])); assert_eq!(Identity::super_of(20), None); assert_eq!(Identity::super_of(30), Some((10, Data::Raw(vec![50; 1])))); assert_eq!(Identity::super_of(40), Some((10, Data::Raw(vec![60; 1])))); @@ -1120,7 +1130,7 @@ mod tests { // clear assert_ok!(Identity::set_subs(Origin::signed(10), vec![])); assert_eq!(Balances::free_balance(10), 90); - assert_eq!(Identity::subs(10), (0, vec![])); + assert_eq!(Identity::subs_of(10), (0, vec![])); assert_eq!(Identity::super_of(30), None); assert_eq!(Identity::super_of(40), None); diff --git a/frame/timestamp/src/benchmarking.rs b/frame/timestamp/src/benchmarking.rs index 9310d39dfd..52b589773e 100644 --- a/frame/timestamp/src/benchmarking.rs +++ b/frame/timestamp/src/benchmarking.rs @@ -21,88 +21,17 @@ use super::*; use sp_std::prelude::*; use frame_system::RawOrigin; -use frame_benchmarking::{ - BenchmarkResults, BenchmarkParameter, selected_benchmark, benchmarking, - Benchmarking, BenchmarkingSetup, -}; +use frame_benchmarking::benchmarks; use sp_runtime::traits::Dispatchable; -/// Benchmark `set` extrinsic. -struct Set; -impl BenchmarkingSetup, RawOrigin> for Set { - fn components(&self) -> Vec<(BenchmarkParameter, u32, u32)> { - vec![ - // Current time ("Now") - (BenchmarkParameter::N, 1, 100), - ] - } - - fn instance(&self, components: &[(BenchmarkParameter, u32)]) - -> Result<(Call, RawOrigin), &'static str> - { - let user_origin = RawOrigin::None; - let now = components.iter().find(|&c| c.0 == BenchmarkParameter::N).unwrap().1; +const MAX_TIME: u32 = 100; - // Return the `set` call - Ok((Call::::set(now.into()), user_origin)) +benchmarks! { + _ { + let n in 1 .. MAX_TIME => (); } -} - -selected_benchmark!(Set); - -impl Benchmarking for Module { - fn run_benchmark(extrinsic: Vec, steps: u32, repeat: u32) -> Result, &'static str> { - // Map the input to the selected benchmark. - let selected_benchmark = match extrinsic.as_slice() { - b"set" => SelectedBenchmark::Set, - _ => return Err("Could not find extrinsic."), - }; - - // Warm up the DB - benchmarking::commit_db(); - benchmarking::wipe_db(); - let components = , RawOrigin>>::components(&selected_benchmark); - let mut results: Vec = Vec::new(); - - // Select the component we will be benchmarking. Each component will be benchmarked. - for (name, low, high) in components.iter() { - // Create up to `STEPS` steps for that component between high and low. - let step_size = ((high - low) / steps).max(1); - let num_of_steps = (high - low) / step_size; - for s in 0..num_of_steps { - // This is the value we will be testing for component `name` - let component_value = low + step_size * s; - - // Select the mid value for all the other components. - let c: Vec<(BenchmarkParameter, u32)> = components.iter() - .map(|(n, l, h)| - (*n, if n == name { component_value } else { (h - l) / 2 + l }) - ).collect(); - - // Run the benchmark `repeat` times. - for _ in 0..repeat { - // Set up the externalities environment for the setup we want to benchmark. - let (call, caller) = , - RawOrigin, - >>::instance(&selected_benchmark, &c)?; - // Commit the externalities to the database, flushing the DB cache. - // This will enable worst case scenario for reading from the database. - benchmarking::commit_db(); - // Run the benchmark. - let start = benchmarking::current_time(); - call.dispatch(caller.into())?; - let finish = benchmarking::current_time(); - let elapsed = finish - start; - results.push((c.clone(), elapsed)); - // Wipe the DB back to the genesis state. - benchmarking::wipe_db(); - } - } - } - - return Ok(results); - } + set { + let n in ...; + }: _(RawOrigin::None, n.into()) } -- GitLab From 3bc3bb6b385f275e482935f82ae4b8ab5c0e00e8 Mon Sep 17 00:00:00 2001 From: s3krit Date: Thu, 20 Feb 2020 22:32:30 +0100 Subject: [PATCH 016/301] CI: Add example CI job template to .gitlab-ci.yml (#5012) --- .gitlab-ci.yml | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 62a6c2de32..3b634793ad 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -5,6 +5,21 @@ # pipelines can be triggered manually in the web # setting DEPLOY_TAG will only deploy the tagged image +# SAMPLE JOB TEMPLATE - This is not a complete example but is enough to build a +# simple CI job. For full documentation, visit https://docs.gitlab.com/ee/ci/yaml/ +# +# my-example-job: +# stage: test # One of the stages listed below this job (required) +# image: parity/tools:latest # Any docker image (required) +# allow_failure: true # Allow the pipeline to continue if this job fails (default: false) +# dependencies: +# - build-rust-doc-release # Any jobs that are required to run before this job (optional) +# variables: +# MY_ENVIRONMENT_VARIABLE: "some useful value" # Environment variables passed to the job (optional) +# script: +# - echo "List of shell commands to run in your job" +# - echo "You can also just specify a script here, like so:" +# - ./scripts/gitlab/my_amazing_script.sh stages: - test -- GitLab From 9116285e7d5d408048e9d4c1edafbd26c8024454 Mon Sep 17 00:00:00 2001 From: kianenigma Date: Fri, 21 Feb 2020 10:03:32 +0100 Subject: [PATCH 017/301] Better fuzzer --- frame/session/src/lib.rs | 1 + frame/staking/fuzz/.gitignore | 4 + frame/staking/{fuzzer => fuzz}/Cargo.lock | 39 ++--- frame/staking/{fuzzer => fuzz}/Cargo.toml | 19 ++- .../{fuzzer/src => fuzz/fuzz_targets}/mock.rs | 0 .../fuzz/fuzz_targets/submit_solution.rs | 130 ++++++++++++++++ frame/staking/fuzzer/.gitignore | 3 - frame/staking/fuzzer/src/submit_solution.rs | 139 ------------------ frame/staking/src/testing_utils.rs | 2 + primitives/phragmen/src/helpers.rs | 2 +- 10 files changed, 165 insertions(+), 174 deletions(-) create mode 100644 frame/staking/fuzz/.gitignore rename frame/staking/{fuzzer => fuzz}/Cargo.lock (99%) rename frame/staking/{fuzzer => fuzz}/Cargo.toml (80%) rename frame/staking/{fuzzer/src => fuzz/fuzz_targets}/mock.rs (100%) create mode 100644 frame/staking/fuzz/fuzz_targets/submit_solution.rs delete mode 100644 frame/staking/fuzzer/.gitignore delete mode 100644 frame/staking/fuzzer/src/submit_solution.rs diff --git a/frame/session/src/lib.rs b/frame/session/src/lib.rs index fe97606eac..0abe06527b 100644 --- a/frame/session/src/lib.rs +++ b/frame/session/src/lib.rs @@ -393,6 +393,7 @@ decl_storage! { >::load_keys(&who).is_none(), "genesis config contained duplicate validator {:?}", who, ); + >::do_set_keys(&who, keys) .expect("genesis config must not contain duplicates; qed"); } diff --git a/frame/staking/fuzz/.gitignore b/frame/staking/fuzz/.gitignore new file mode 100644 index 0000000000..572e03bdf3 --- /dev/null +++ b/frame/staking/fuzz/.gitignore @@ -0,0 +1,4 @@ + +target +corpus +artifacts diff --git a/frame/staking/fuzzer/Cargo.lock b/frame/staking/fuzz/Cargo.lock similarity index 99% rename from frame/staking/fuzzer/Cargo.lock rename to frame/staking/fuzz/Cargo.lock index f784cd078a..bd12ff7f88 100644 --- a/frame/staking/fuzzer/Cargo.lock +++ b/frame/staking/fuzz/Cargo.lock @@ -32,7 +32,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "arbitrary" -version = "0.2.0" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -564,15 +564,6 @@ dependencies = [ "hmac 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "honggfuzz" -version = "0.5.45" -dependencies = [ - "arbitrary 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "memmap 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "impl-codec" version = "0.4.2" @@ -635,6 +626,15 @@ name = "libc" version = "0.2.66" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "libfuzzer-sys" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "arbitrary 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "cc 1.0.50 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "libsecp256k1" version = "0.3.5" @@ -676,15 +676,6 @@ name = "memchr" version = "2.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -[[package]] -name = "memmap" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "memory-db" version = "0.19.0" @@ -861,12 +852,12 @@ dependencies = [ ] [[package]] -name = "pallet-staking-fuzzer" -version = "2.0.0" +name = "pallet-staking-fuzz" +version = "0.0.0" dependencies = [ "frame-support 2.0.0", "frame-system 2.0.0", - "honggfuzz 0.5.45", + "libfuzzer-sys 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", "pallet-balances 2.0.0", "pallet-indices 2.0.0", "pallet-session 2.0.0", @@ -2059,7 +2050,7 @@ dependencies = [ "checksum ahash 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)" = "6f33b5018f120946c1dcf279194f238a9f146725593ead1c08fa47ff22b0b5d3" "checksum aho-corasick 0.7.8 (registry+https://github.com/rust-lang/crates.io-index)" = "743ad5a418686aad3b87fd14c43badd828cf26e214a00f92a384291cf22e1811" "checksum anyhow 1.0.26 (registry+https://github.com/rust-lang/crates.io-index)" = "7825f6833612eb2414095684fcf6c635becf3ce97fe48cf6421321e93bfbd53c" -"checksum arbitrary 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "64cf76cb6e2222ed0ea86b2b0ee2f71c96ec6edd5af42e84d59160e91b836ec4" +"checksum arbitrary 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "16971f2f0ce65c5cf2a1546cc6a0af102ecb11e265ddaa9433fb3e5bfdf676a4" "checksum arrayref 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)" = "a4c527152e37cf757a3f78aae5a06fbeefdb07ccc535c980a3208ee3060dd544" "checksum arrayvec 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)" = "cd9fd44efafa8690358b7408d253adf110036b88f55672a933f01d616ad9b1b9" "checksum arrayvec 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "cff77d8686867eceff3105329d4698d96c2391c176d5d03adc90c7389162b5b8" @@ -2126,12 +2117,12 @@ dependencies = [ "checksum keccak 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "67c21572b4949434e4fc1e1978b99c5f77064153c59d998bf13ecd96fb5ecba7" "checksum lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" "checksum libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)" = "d515b1f41455adea1313a4a2ac8a8a477634fbae63cc6100e3aebb207ce61558" +"checksum libfuzzer-sys 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "c103ca347f75325d3d3ee31702bd6c09b7744e71883b7a8da9562b0c5dcdaead" "checksum libsecp256k1 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)" = "1fc1e2c808481a63dc6da2074752fdd4336a3c8fcc68b83db6f1fd5224ae7962" "checksum lock_api 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "79b2de95ecb4691949fea4716ca53cdbcfccb2c612e19644a8bad05edcf9f47b" "checksum log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)" = "14b6052be84e6b71ab17edffc2eeabf5c2c3ae1fdb464aae35ac50c67a44e1f7" "checksum maybe-uninit 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "60302e4db3a61da70c0cb7991976248362f30319e88850c487b9b95bbf059e00" "checksum memchr 2.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "53445de381a1f436797497c61d851644d0e8e88e6140f22872ad33a704933978" -"checksum memmap 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "6585fd95e7bb50d6cc31e20d4cf9afb4e2ba16c5846fc76793f11218da9c475b" "checksum memory-db 0.19.0 (registry+https://github.com/rust-lang/crates.io-index)" = "198831fe8722331a395bc199a5d08efbc197497ef354cb4c77b969c02ffc0fc4" "checksum memory_units 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "71d96e3f3c0b6325d8ccd83c33b28acb183edcb6c67938ba104ec546854b0882" "checksum merlin 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "2b0942b357c1b4d0dc43ba724674ec89c3218e6ca2b3e8269e7cb53bcecd2f6e" diff --git a/frame/staking/fuzzer/Cargo.toml b/frame/staking/fuzz/Cargo.toml similarity index 80% rename from frame/staking/fuzzer/Cargo.toml rename to frame/staking/fuzz/Cargo.toml index 995ff03951..1a7ee83a06 100644 --- a/frame/staking/fuzzer/Cargo.toml +++ b/frame/staking/fuzz/Cargo.toml @@ -1,10 +1,16 @@ + [package] -name = "pallet-staking-fuzzer" -version = "2.0.0" -authors = ["Parity Technologies "] +name = "pallet-staking-fuzz" +version = "0.0.0" +authors = ["Automatically generated"] +publish = false edition = "2018" +[package.metadata] +cargo-fuzz = true + [dependencies] +libfuzzer-sys = "0.3" codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } pallet-staking = { version = "2.0.0", path = "..", features = ["testing-utils"] } pallet-staking-reward-curve = { version = "2.0.0", path = "../reward-curve" } @@ -19,13 +25,12 @@ sp-io ={ version = "2.0.0", path = "../../../primitives/io" } sp-core = { version = "2.0.0", path = "../../../primitives/core" } sp-phragmen = { version = "2.0.0", path = "../../../primitives/phragmen" } sp-runtime = { version = "2.0.0", path = "../../../primitives/runtime" } -# honggfuzz = "0.5" -honggfuzz = { path = "../../../../honggfuzz-rs"} rand = "0.7.3" +# Prevent this from interfering with workspaces [workspace] +members = ["."] [[bin]] name = "submit_solution" -path = "src/submit_solution.rs" - +path = "fuzz_targets/submit_solution.rs" diff --git a/frame/staking/fuzzer/src/mock.rs b/frame/staking/fuzz/fuzz_targets/mock.rs similarity index 100% rename from frame/staking/fuzzer/src/mock.rs rename to frame/staking/fuzz/fuzz_targets/mock.rs diff --git a/frame/staking/fuzz/fuzz_targets/submit_solution.rs b/frame/staking/fuzz/fuzz_targets/submit_solution.rs new file mode 100644 index 0000000000..67f52320dd --- /dev/null +++ b/frame/staking/fuzz/fuzz_targets/submit_solution.rs @@ -0,0 +1,130 @@ +// Copyright 2020 Parity Technologies (UK) Ltd. +// This file is part of Substrate. + +// Substrate is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Substrate is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Substrate. If not, see . + +//! Fuzzing for staking pallet. + +#![no_main] +use libfuzzer_sys::fuzz_target; +use mock::Test; +use pallet_staking::testing_utils::{ + self, USER, get_seq_phragmen_solution, get_weak_solution, setup_chain_stakers, + set_validator_count, signed_account, +}; +use frame_support::assert_ok; +use sp_runtime::{traits::Dispatchable, DispatchError}; + +mod mock; + +#[repr(u32)] +#[allow(dead_code)] +#[derive(Debug, Clone, Copy)] +enum Mode { + /// Initial submission. This will be rather cheap + InitialSubmission, + /// A better submission that will replace the previous ones. This is the most expensive. + StrongerSubmission, + /// A weak submission that will be rejected. This will be rather cheap. + WeakerSubmission, +} + +pub fn new_test_ext() -> Result { + frame_system::GenesisConfig::default().build_storage::().map(Into::into) +} + +fuzz_target!(|do_reduce: bool| { + let ext = new_test_ext(); + let mode: Mode = unsafe { std::mem::transmute(testing_utils::random(0, 2)) }; + let num_validators = testing_utils::random(50, 500); + let num_nominators = testing_utils::random(100, 500); + let edge_per_voter = testing_utils::random(1, 16); + let to_elect = testing_utils::random(10, 50); + + println!("+++ instance with params {} / {} / {} / {:?} / {}", + num_nominators, + num_validators, + edge_per_voter, + mode, + to_elect, + ); + + ext.unwrap_or_default().execute_with(|| { + // initial setup + set_validator_count::(to_elect); + setup_chain_stakers::( + num_validators, + num_nominators, + edge_per_voter, + ); + + println!("++ Chain setup done."); + + // stuff to submit + let (winners, compact, score) = match mode { + Mode::InitialSubmission => { + /* No need to setup anything */ + get_seq_phragmen_solution::(do_reduce) + }, + Mode::StrongerSubmission => { + let (winners, compact, score) = get_weak_solution::(false); + assert_ok!( + >::submit_election_solution( + signed_account::(USER), + winners, + compact, + score, + ) + ); + get_seq_phragmen_solution::(do_reduce) + }, + Mode::WeakerSubmission => { + let (winners, compact, score) = get_seq_phragmen_solution::(do_reduce); + assert_ok!( + >::submit_election_solution( + signed_account::(USER), + winners, + compact, + score, + ) + ); + get_weak_solution::(false) + } + }; + + println!("++ Submission ready."); + + // must have chosen correct number of winners. + assert_eq!(winners.len() as u32, >::validator_count()); + + // final call and origin + let call = pallet_staking::Call::::submit_election_solution( + winners, + compact, + score, + ); + let caller = signed_account::(USER); + + // actually submit + match mode { + Mode::WeakerSubmission => { + assert_eq!( + call.dispatch(caller.into()).unwrap_err(), + DispatchError::Module { index: 0, error: 11, message: Some("PhragmenWeakSubmission") }, + ); + }, + _ => assert_ok!(call.dispatch(caller.into())), + }; + }) +}); diff --git a/frame/staking/fuzzer/.gitignore b/frame/staking/fuzzer/.gitignore deleted file mode 100644 index bd4ff56b3c..0000000000 --- a/frame/staking/fuzzer/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -hfuzz_target -hfuzz_workspace - diff --git a/frame/staking/fuzzer/src/submit_solution.rs b/frame/staking/fuzzer/src/submit_solution.rs deleted file mode 100644 index e10e0c2a61..0000000000 --- a/frame/staking/fuzzer/src/submit_solution.rs +++ /dev/null @@ -1,139 +0,0 @@ -// Copyright 2020 Parity Technologies (UK) Ltd. -// This file is part of Substrate. - -// Substrate is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Substrate is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Substrate. If not, see . - -//! Fuzzing for staking pallet. -//! -//! # Running -//! -//! Run with `cargo hfuzz run submit_solution`. `honggfuzz`. -//! -//! # Debugging a panic -//! -//! Once a panic is found, it can be debugged with -//! `cargo hfuzz run-debug submit_solution hfuzz_workspace/submit_solution/*.fuzz`. - -use honggfuzz::fuzz; - -use mock::Test; -use pallet_staking::testing_utils::{ - self, USER, get_seq_phragmen_solution, get_weak_solution, setup_chain_stakers, - set_validator_count, signed_account, -}; -use frame_support::assert_ok; -use sp_runtime::{traits::Dispatchable, DispatchError}; - -mod mock; - -#[repr(u32)] -#[allow(dead_code)] -#[derive(Debug, Clone, Copy)] -enum Mode { - /// Initial submission. This will be rather cheap - InitialSubmission, - /// A better submission that will replace the previous ones. This is the most expensive. - StrongerSubmission, - /// A weak submission that will be rejected. This will be rather cheap. - WeakerSubmission, -} - -pub fn new_test_ext() -> Result { - frame_system::GenesisConfig::default().build_storage::().map(Into::into) -} - -fn main() { - loop { - fuzz!(|do_reduce: bool| { - let ext = new_test_ext(); - let mode: Mode = unsafe { std::mem::transmute(testing_utils::random(0, 2)) }; - let num_validators = testing_utils::random(100, 2_000); - let num_nominators = testing_utils::random(100, 2_000); - let edge_per_voter = 16; - let to_elect = testing_utils::random(100, num_validators); - - println!("++ instance with params {} / {} / {} / {:?} / {}", - num_nominators, - num_validators, - edge_per_voter, - mode, - to_elect, - ); - - ext.unwrap_or_default().execute_with(|| { - // initial setup - set_validator_count::(to_elect); - setup_chain_stakers::( - num_validators, - num_nominators, - edge_per_voter, - ); - - // stuff to submit - let (winners, compact, score) = match mode { - Mode::InitialSubmission => { - /* No need to setup anything */ - get_seq_phragmen_solution::(do_reduce) - }, - Mode::StrongerSubmission => { - let (winners, compact, score) = get_weak_solution::(false); - assert_ok!( - >::submit_election_solution( - signed_account::(USER), - winners, - compact, - score, - ) - ); - get_seq_phragmen_solution::(do_reduce) - }, - Mode::WeakerSubmission => { - let (winners, compact, score) = get_seq_phragmen_solution::(do_reduce); - assert_ok!( - >::submit_election_solution( - signed_account::(USER), - winners, - compact, - score, - ) - ); - get_weak_solution::(false) - } - }; - - // must have chosen correct number of winners. - assert_eq!(winners.len() as u32, >::validator_count()); - - // final call and origin - let call = pallet_staking::Call::::submit_election_solution( - winners, - compact, - score, - ); - let caller = signed_account::(USER); - - // actually submit - match mode { - Mode::WeakerSubmission => { - assert_eq!( - call.dispatch(caller.into()).unwrap_err(), - DispatchError::Module { index: 0, error: 11, message: Some("PhragmenWeakSubmission") }, - ); - }, - _ => assert_ok!(call.dispatch(caller.into())), - }; - }) - }); - } -} diff --git a/frame/staking/src/testing_utils.rs b/frame/staking/src/testing_utils.rs index 0a01b59410..8903dabae5 100644 --- a/frame/staking/src/testing_utils.rs +++ b/frame/staking/src/testing_utils.rs @@ -114,6 +114,7 @@ pub fn setup_chain_stakers( edge_per_voter: u32, ) where T::Lookup: StaticLookup> { (0..num_validators).for_each(|i| { + // println!("bonding validator {}/{}", i, num_validators); bond_validator::( account::(i), i + CTRL_PREFIX, @@ -129,6 +130,7 @@ pub fn setup_chain_stakers( let target = all_targets.remove(random(0, all_targets.len() as u32 - 1) as usize); targets.push(target); }); + // println!("bonding voter {}/{}", i, num_voters); bond_nominator::( account::(i + NOMINATOR_PREFIX), i + NOMINATOR_PREFIX + CTRL_PREFIX, diff --git a/primitives/phragmen/src/helpers.rs b/primitives/phragmen/src/helpers.rs index d3db897027..d1af411384 100644 --- a/primitives/phragmen/src/helpers.rs +++ b/primitives/phragmen/src/helpers.rs @@ -39,7 +39,7 @@ pub fn assignment_ratio_to_staked( .collect() } -/// Converts a vector of ratio assignments into ones with absolute budget value. +/// Converts a vector of staked assignments into ones with ratio values. pub fn assignment_staked_to_ratio( ratio: Vec>, ) -> Vec> where ExtendedBalance: From<::Inner> -- GitLab From e0c96edad907fcd28b3a62ed8e038b64b8a8bf05 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tomasz=20Drwi=C4=99ga?= Date: Fri, 21 Feb 2020 10:42:55 +0100 Subject: [PATCH 018/301] Un-deprecate ValidateUnsigned (#5003) * Un-deprecate ValidateUnsigned. * Bump runtime. * Bump runtime. Co-authored-by: Shawn Tabrizi --- bin/node/runtime/src/lib.rs | 2 +- frame/executive/src/lib.rs | 6 ------ frame/im-online/src/lib.rs | 1 - frame/im-online/src/tests.rs | 2 -- frame/support/src/unsigned.rs | 3 --- primitives/runtime/src/generic/checked_extrinsic.rs | 3 --- primitives/runtime/src/testing.rs | 3 --- primitives/runtime/src/traits.rs | 3 --- 8 files changed, 1 insertion(+), 22 deletions(-) diff --git a/bin/node/runtime/src/lib.rs b/bin/node/runtime/src/lib.rs index 76b77d39f0..b6be9335ca 100644 --- a/bin/node/runtime/src/lib.rs +++ b/bin/node/runtime/src/lib.rs @@ -82,7 +82,7 @@ pub const VERSION: RuntimeVersion = RuntimeVersion { // implementation changes and behavior does not, then leave spec_version as // is and increment impl_version. spec_version: 224, - impl_version: 1, + impl_version: 2, apis: RUNTIME_API_VERSIONS, }; diff --git a/frame/executive/src/lib.rs b/frame/executive/src/lib.rs index e68681af19..f58833440c 100644 --- a/frame/executive/src/lib.rs +++ b/frame/executive/src/lib.rs @@ -60,9 +60,7 @@ //! # pub type AllModules = u64; //! # pub enum Runtime {}; //! # use sp_runtime::transaction_validity::{TransactionValidity, UnknownTransaction}; -//! # #[allow(deprecated)] //! # use sp_runtime::traits::ValidateUnsigned; -//! # #[allow(deprecated)] //! # impl ValidateUnsigned for Runtime { //! # type Call = (); //! # @@ -88,7 +86,6 @@ use sp_runtime::{ transaction_validity::TransactionValidity, }; use sp_runtime::generic::CheckSignature; -#[allow(deprecated)] use sp_runtime::traits::ValidateUnsigned; use codec::{Codec, Encode}; use frame_system::{extrinsics_root, DigestOf}; @@ -107,7 +104,6 @@ pub struct Executive( PhantomData<(System, Block, Context, UnsignedValidator, AllModules)> ); -#[allow(deprecated)] // Allow ValidateUnsigned, remove the attribute when the trait is removed. impl< System: frame_system::Trait, Block: traits::Block, @@ -133,7 +129,6 @@ where } } -#[allow(deprecated)] // Allow ValidateUnsigned, remove the attribute when the trait is removed. impl< System: frame_system::Trait, Block: traits::Block, @@ -501,7 +496,6 @@ mod tests { } impl custom::Trait for Runtime {} - #[allow(deprecated)] impl ValidateUnsigned for Runtime { type Call = Call; diff --git a/frame/im-online/src/lib.rs b/frame/im-online/src/lib.rs index 0132bcedd2..d6d13c66c2 100644 --- a/frame/im-online/src/lib.rs +++ b/frame/im-online/src/lib.rs @@ -617,7 +617,6 @@ impl pallet_session::OneSessionHandler for Module { } } -#[allow(deprecated)] impl frame_support::unsigned::ValidateUnsigned for Module { type Call = Call; diff --git a/frame/im-online/src/tests.rs b/frame/im-online/src/tests.rs index 4ce5dec961..b43adca0fd 100644 --- a/frame/im-online/src/tests.rs +++ b/frame/im-online/src/tests.rs @@ -112,7 +112,6 @@ fn heartbeat( authority_index: u32, id: UintAuthorityId, ) -> dispatch::DispatchResult { - #[allow(deprecated)] use frame_support::unsigned::ValidateUnsigned; let heartbeat = Heartbeat { @@ -126,7 +125,6 @@ fn heartbeat( }; let signature = id.sign(&heartbeat.encode()).unwrap(); - #[allow(deprecated)] // Allow ValidateUnsigned ImOnline::pre_dispatch(&crate::Call::heartbeat(heartbeat.clone(), signature.clone())) .map_err(|e| <&'static str>::from(e))?; ImOnline::heartbeat( diff --git a/frame/support/src/unsigned.rs b/frame/support/src/unsigned.rs index 319fa3adb4..4289e4e474 100644 --- a/frame/support/src/unsigned.rs +++ b/frame/support/src/unsigned.rs @@ -15,7 +15,6 @@ // along with Substrate. If not, see . #[doc(hidden)] -#[allow(deprecated)] pub use crate::sp_runtime::traits::ValidateUnsigned; #[doc(hidden)] pub use crate::sp_runtime::transaction_validity::{ @@ -66,7 +65,6 @@ macro_rules! impl_outer_validate_unsigned { $( $module:ident )* } ) => { - #[allow(deprecated)] // Allow ValidateUnsigned impl $crate::unsigned::ValidateUnsigned for $runtime { type Call = Call; @@ -109,7 +107,6 @@ mod test_partial_and_full_call { pub mod timestamp { pub struct Module; - #[allow(deprecated)] // Allow ValidateUnsigned impl super::super::ValidateUnsigned for Module { type Call = Call; diff --git a/primitives/runtime/src/generic/checked_extrinsic.rs b/primitives/runtime/src/generic/checked_extrinsic.rs index b2d247ef5f..20aefbdf99 100644 --- a/primitives/runtime/src/generic/checked_extrinsic.rs +++ b/primitives/runtime/src/generic/checked_extrinsic.rs @@ -20,7 +20,6 @@ use crate::traits::{ self, Member, MaybeDisplay, SignedExtension, Dispatchable, }; -#[allow(deprecated)] use crate::traits::ValidateUnsigned; use crate::transaction_validity::TransactionValidity; @@ -54,7 +53,6 @@ where self.signed.as_ref().map(|x| &x.0) } - #[allow(deprecated)] // Allow ValidateUnsigned fn validate>( &self, info: Self::DispatchInfo, @@ -69,7 +67,6 @@ where } } - #[allow(deprecated)] // Allow ValidateUnsigned fn apply>( self, info: Self::DispatchInfo, diff --git a/primitives/runtime/src/testing.rs b/primitives/runtime/src/testing.rs index be0e36b2d1..6f6ea3dd16 100644 --- a/primitives/runtime/src/testing.rs +++ b/primitives/runtime/src/testing.rs @@ -23,7 +23,6 @@ use crate::traits::{ self, Checkable, Applyable, BlakeTwo256, OpaqueKeys, SignedExtension, Dispatchable, }; -#[allow(deprecated)] use crate::traits::ValidateUnsigned; use crate::{generic::{self, CheckSignature}, KeyTypeId, ApplyExtrinsicResult}; pub use sp_core::{H256, sr25519}; @@ -418,7 +417,6 @@ impl Applyable for TestXt where fn sender(&self) -> Option<&Self::AccountId> { self.signature.as_ref().map(|x| &x.0) } /// Checks to see if this is a valid *transaction*. It returns information on it if so. - #[allow(deprecated)] // Allow ValidateUnsigned fn validate>( &self, _info: Self::DispatchInfo, @@ -429,7 +427,6 @@ impl Applyable for TestXt where /// Executes all necessary logic needed prior to dispatch and deconstructs into function call, /// index and sender. - #[allow(deprecated)] // Allow ValidateUnsigned fn apply>( self, info: Self::DispatchInfo, diff --git a/primitives/runtime/src/traits.rs b/primitives/runtime/src/traits.rs index f6655f68b4..fef20c826a 100644 --- a/primitives/runtime/src/traits.rs +++ b/primitives/runtime/src/traits.rs @@ -889,7 +889,6 @@ pub trait Applyable: Sized + Send + Sync { fn sender(&self) -> Option<&Self::AccountId>; /// Checks to see if this is a valid *transaction*. It returns information on it if so. - #[allow(deprecated)] // Allow ValidateUnsigned fn validate>( &self, info: Self::DispatchInfo, @@ -898,7 +897,6 @@ pub trait Applyable: Sized + Send + Sync { /// Executes all necessary logic needed prior to dispatch and deconstructs into function call, /// index and sender. - #[allow(deprecated)] // Allow ValidateUnsigned fn apply>( self, info: Self::DispatchInfo, @@ -924,7 +922,6 @@ pub trait GetNodeBlockType { /// the transaction for the transaction pool. /// During block execution phase one need to perform the same checks anyway, /// since this function is not being called. -#[deprecated(note = "Use SignedExtensions instead.")] pub trait ValidateUnsigned { /// The call to validate type Call; -- GitLab From c24d8cc89ccdf29bae2f0f06187ce5b29aeea29c Mon Sep 17 00:00:00 2001 From: Wei Tang Date: Fri, 21 Feb 2020 10:43:42 +0100 Subject: [PATCH 019/301] babe: directly using append_u64 in transcript instead of to_le_bytes (#5005) --- client/consensus/babe/src/authorship.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/client/consensus/babe/src/authorship.rs b/client/consensus/babe/src/authorship.rs index a3254d0fcb..a01ea63bbe 100644 --- a/client/consensus/babe/src/authorship.rs +++ b/client/consensus/babe/src/authorship.rs @@ -92,8 +92,8 @@ pub(super) fn make_transcript( epoch: u64, ) -> Transcript { let mut transcript = Transcript::new(&BABE_ENGINE_ID); - transcript.append_message(b"slot number", &slot_number.to_le_bytes()); - transcript.append_message(b"current epoch", &epoch.to_le_bytes()); + transcript.append_u64(b"slot number", slot_number); + transcript.append_u64(b"current epoch", epoch); transcript.append_message(b"chain randomness", randomness); transcript } -- GitLab From 0d3ff5c779d859cfd103a0937a7d687ffae068be Mon Sep 17 00:00:00 2001 From: Wei Tang Date: Fri, 21 Feb 2020 10:48:18 +0100 Subject: [PATCH 020/301] aura: remove unneeded SlotDuration struct and rename digest -> digests (#4958) * aura: remove unneeded SlotDuration struct and rename digest -> digests * aura: add alias type for SlotDuration * aura: fix tests * Fix missing parameters in get_or_compute * Use special function for fetching aura slot_duration --- bin/node-template/node/src/service.rs | 6 +-- .../aura/src/{digest.rs => digests.rs} | 0 client/consensus/aura/src/lib.rs | 44 +++++++------------ 3 files changed, 19 insertions(+), 31 deletions(-) rename client/consensus/aura/src/{digest.rs => digests.rs} (100%) diff --git a/bin/node-template/node/src/service.rs b/bin/node-template/node/src/service.rs index 5466f3e919..9be91e7ef9 100644 --- a/bin/node-template/node/src/service.rs +++ b/bin/node-template/node/src/service.rs @@ -57,7 +57,7 @@ macro_rules! new_full_start { ); let import_queue = sc_consensus_aura::import_queue::<_, _, _, AuraPair, _>( - sc_consensus_aura::SlotDuration::get_or_compute(&*client)?, + sc_consensus_aura::slot_duration(&*client)?, aura_block_import, Some(Box::new(grandpa_block_import.clone())), None, @@ -115,7 +115,7 @@ pub fn new_full(config: Configuration) sp_consensus::CanAuthorWithNativeVersion::new(client.executor().clone()); let aura = sc_consensus_aura::start_aura::<_, _, _, _, _, AuraPair, _, _, _>( - sc_consensus_aura::SlotDuration::get_or_compute(&*client)?, + sc_consensus_aura::slot_duration(&*client)?, client, select_chain, block_import, @@ -220,7 +220,7 @@ pub fn new_light(config: Configuration) finality_proof_import.create_finality_proof_request_builder(); let import_queue = sc_consensus_aura::import_queue::<_, _, _, AuraPair, ()>( - sc_consensus_aura::SlotDuration::get_or_compute(&*client)?, + sc_consensus_aura::slot_duration(&*client)?, grandpa_block_import, None, Some(Box::new(finality_proof_import)), diff --git a/client/consensus/aura/src/digest.rs b/client/consensus/aura/src/digests.rs similarity index 100% rename from client/consensus/aura/src/digest.rs rename to client/consensus/aura/src/digests.rs diff --git a/client/consensus/aura/src/lib.rs b/client/consensus/aura/src/lib.rs index db872f28c1..9be52e0246 100644 --- a/client/consensus/aura/src/lib.rs +++ b/client/consensus/aura/src/lib.rs @@ -79,33 +79,23 @@ pub use sp_consensus_aura::{ }, }; pub use sp_consensus::SyncOracle; -pub use digest::CompatibleDigestItem; +pub use digests::CompatibleDigestItem; -mod digest; +mod digests; type AuthorityId

=

::Public; -/// A slot duration. Create with `get_or_compute`. -#[derive(Clone, Copy, Debug, Encode, Decode, Hash, PartialOrd, Ord, PartialEq, Eq)] -pub struct SlotDuration(sc_consensus_slots::SlotDuration); - -impl SlotDuration { - /// Either fetch the slot duration from disk or compute it from the genesis - /// state. - pub fn get_or_compute(client: &C) -> CResult - where - A: Codec, - B: BlockT, - C: AuxStore + ProvideRuntimeApi, - C::Api: AuraApi, - { - sc_consensus_slots::SlotDuration::get_or_compute(client, |a, b| a.slot_duration(b)).map(Self) - } +/// Slot duration type for Aura. +pub type SlotDuration = sc_consensus_slots::SlotDuration; - /// Get the slot duration in milliseconds. - pub fn get(&self) -> u64 { - self.0.get() - } +/// Get type of `SlotDuration` for Aura. +pub fn slot_duration(client: &C) -> CResult where + A: Codec, + B: BlockT, + C: AuxStore + ProvideRuntimeApi, + C::Api: AuraApi, +{ + SlotDuration::get_or_compute(client, |a, b| a.slot_duration(b)) } /// Get slot author for given block along with authorities. @@ -179,10 +169,10 @@ pub fn start_aura( }; register_aura_inherent_data_provider( &inherent_data_providers, - slot_duration.0.slot_duration() + slot_duration.slot_duration() )?; Ok(sc_consensus_slots::start_slot_worker::<_, _, _, _, _, AuraSlotCompatible, _>( - slot_duration.0, + slot_duration, select_chain, worker, sync_oracle, @@ -926,8 +916,7 @@ mod tests { { match client { PeersClient::Full(client, _) => { - let slot_duration = SlotDuration::get_or_compute(&*client) - .expect("slot duration available"); + let slot_duration = slot_duration(&*client).expect("slot duration available"); let inherent_data_providers = InherentDataProviders::new(); register_aura_inherent_data_provider( &inherent_data_providers, @@ -995,8 +984,7 @@ mod tests { .for_each(move |_| future::ready(())) ); - let slot_duration = SlotDuration::get_or_compute(&*client) - .expect("slot duration available"); + let slot_duration = slot_duration(&*client).expect("slot duration available"); let inherent_data_providers = InherentDataProviders::new(); register_aura_inherent_data_provider( -- GitLab From e146ecf66bc62fd2a6ba9eb627e42da74eed5fed Mon Sep 17 00:00:00 2001 From: Pierre Krieger Date: Fri, 21 Feb 2020 10:48:42 +0100 Subject: [PATCH 021/301] Make sure we use libp2p 0.16.1 (#5017) --- bin/utils/subkey/Cargo.toml | 2 +- client/authority-discovery/Cargo.toml | 2 +- client/network-gossip/Cargo.toml | 2 +- client/network/Cargo.toml | 2 +- client/network/test/Cargo.toml | 2 +- client/peerset/Cargo.toml | 2 +- client/telemetry/Cargo.toml | 2 +- primitives/consensus/common/Cargo.toml | 2 +- utils/browser/Cargo.toml | 2 +- 9 files changed, 9 insertions(+), 9 deletions(-) diff --git a/bin/utils/subkey/Cargo.toml b/bin/utils/subkey/Cargo.toml index 8267366d7f..9c96c7ffa8 100644 --- a/bin/utils/subkey/Cargo.toml +++ b/bin/utils/subkey/Cargo.toml @@ -28,7 +28,7 @@ derive_more = { version = "0.99.2" } sc-rpc = { version = "2.0.0", path = "../../../client/rpc" } jsonrpc-core-client = { version = "14.0.3", features = ["http"] } hyper = "0.12.35" -libp2p = "0.16.0" +libp2p = "0.16.1" serde_json = "1.0" [features] diff --git a/client/authority-discovery/Cargo.toml b/client/authority-discovery/Cargo.toml index 248304d137..59ed5bc89d 100644 --- a/client/authority-discovery/Cargo.toml +++ b/client/authority-discovery/Cargo.toml @@ -15,7 +15,7 @@ codec = { package = "parity-scale-codec", default-features = false, version = "1 derive_more = "0.99.2" futures = "0.3.1" futures-timer = "3.0.1" -libp2p = { version = "0.16.0", default-features = false, features = ["secp256k1", "libp2p-websocket"] } +libp2p = { version = "0.16.1", default-features = false, features = ["secp256k1", "libp2p-websocket"] } log = "0.4.8" prost = "0.6.1" rand = "0.7.2" diff --git a/client/network-gossip/Cargo.toml b/client/network-gossip/Cargo.toml index 8866db1f34..08b63151db 100644 --- a/client/network-gossip/Cargo.toml +++ b/client/network-gossip/Cargo.toml @@ -9,7 +9,7 @@ edition = "2018" [dependencies] futures = "0.3.1" futures-timer = "3.0.1" -libp2p = { version = "0.16.0", default-features = false, features = ["libp2p-websocket"] } +libp2p = { version = "0.16.1", default-features = false, features = ["libp2p-websocket"] } log = "0.4.8" lru = "0.1.2" parking_lot = "0.10.0" diff --git a/client/network/Cargo.toml b/client/network/Cargo.toml index e53ba13c8d..e878e47e69 100644 --- a/client/network/Cargo.toml +++ b/client/network/Cargo.toml @@ -22,7 +22,7 @@ futures = "0.3.1" futures_codec = "0.3.3" futures-timer = "3.0.1" wasm-timer = "0.2" -libp2p = { version = "0.16.0", default-features = false, features = ["libp2p-websocket"] } +libp2p = { version = "0.16.1", default-features = false, features = ["libp2p-websocket"] } linked-hash-map = "0.5.2" linked_hash_set = "0.1.3" log = "0.4.8" diff --git a/client/network/test/Cargo.toml b/client/network/test/Cargo.toml index 339279c704..54685bc00c 100644 --- a/client/network/test/Cargo.toml +++ b/client/network/test/Cargo.toml @@ -14,7 +14,7 @@ futures = "0.1.29" futures03 = { package = "futures", version = "0.3.1", features = ["compat"] } futures-timer = "3.0.1" rand = "0.7.2" -libp2p = { version = "0.16.0", default-features = false, features = ["libp2p-websocket"] } +libp2p = { version = "0.16.1", default-features = false, features = ["libp2p-websocket"] } sp-consensus = { version = "0.8", path = "../../../primitives/consensus/common" } sc-client = { version = "0.8", path = "../../" } sc-client-api = { version = "2.0.0", path = "../../api" } diff --git a/client/peerset/Cargo.toml b/client/peerset/Cargo.toml index c17ffdc385..b39aa40490 100644 --- a/client/peerset/Cargo.toml +++ b/client/peerset/Cargo.toml @@ -9,7 +9,7 @@ edition = "2018" [dependencies] futures = "0.3.1" -libp2p = { version = "0.16.0", default-features = false } +libp2p = { version = "0.16.1", default-features = false } log = "0.4.8" serde_json = "1.0.41" wasm-timer = "0.2" diff --git a/client/telemetry/Cargo.toml b/client/telemetry/Cargo.toml index 10f4b188af..66d08e1b14 100644 --- a/client/telemetry/Cargo.toml +++ b/client/telemetry/Cargo.toml @@ -12,7 +12,7 @@ parking_lot = "0.10.0" futures = "0.3.1" futures-timer = "3.0.1" wasm-timer = "0.2.0" -libp2p = { version = "0.16.0", default-features = false, features = ["libp2p-websocket"] } +libp2p = { version = "0.16.1", default-features = false, features = ["libp2p-websocket"] } log = "0.4.8" pin-project = "0.4.6" rand = "0.7.2" diff --git a/primitives/consensus/common/Cargo.toml b/primitives/consensus/common/Cargo.toml index d7c33a6452..5af55ad46d 100644 --- a/primitives/consensus/common/Cargo.toml +++ b/primitives/consensus/common/Cargo.toml @@ -8,7 +8,7 @@ license = "GPL-3.0" [dependencies] derive_more = "0.99.2" -libp2p = { version = "0.16.0", default-features = false } +libp2p = { version = "0.16.1", default-features = false } log = "0.4.8" sp-core = { path= "../../core" } sp-inherents = { version = "2.0.0", path = "../../inherents" } diff --git a/utils/browser/Cargo.toml b/utils/browser/Cargo.toml index 7e101c438a..803a9c5ce2 100644 --- a/utils/browser/Cargo.toml +++ b/utils/browser/Cargo.toml @@ -10,7 +10,7 @@ license = "GPL-3.0" futures = "0.3" futures01 = { package = "futures", version = "0.1.29" } log = "0.4.8" -libp2p = { version = "0.16.0", default-features = false } +libp2p = { version = "0.16.1", default-features = false } console_error_panic_hook = "0.1.6" console_log = "0.1.2" js-sys = "0.3.34" -- GitLab From b75151e20b3c5876f035a58f74663278f4b69865 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Silva?= Date: Fri, 21 Feb 2020 09:50:42 +0000 Subject: [PATCH 022/301] node, node-template: disable GRANDPA observer (#5011) * node-template: disable grandpa observer * node: disable grandpa observer * node: add doc about grandpa-voter infallible task * grandpa: remove grandpa observer from public API * grandpa: ignore observer_enabled field in config --- bin/node-template/node/src/service.rs | 65 ++++++++++++------------ bin/node/cli/src/service.rs | 67 ++++++++++++------------- client/finality-grandpa/src/lib.rs | 9 +++- client/finality-grandpa/src/observer.rs | 3 ++ client/finality-grandpa/src/tests.rs | 2 +- 5 files changed, 73 insertions(+), 73 deletions(-) diff --git a/bin/node-template/node/src/service.rs b/bin/node-template/node/src/service.rs index 9be91e7ef9..c5b9bf336e 100644 --- a/bin/node-template/node/src/service.rs +++ b/bin/node-template/node/src/service.rs @@ -145,44 +145,41 @@ pub fn new_full(config: Configuration) gossip_duration: Duration::from_millis(333), justification_period: 512, name: Some(name), - observer_enabled: true, + observer_enabled: false, keystore, is_authority, }; - match (is_authority, disable_grandpa) { - (false, false) => { - // start the lightweight GRANDPA observer - service.spawn_task("grandpa-observer", grandpa::run_grandpa_observer( - grandpa_config, - grandpa_link, - service.network(), - service.on_exit(), - )?); - }, - (true, false) => { - // start the full GRANDPA voter - let voter_config = grandpa::GrandpaParams { - config: grandpa_config, - link: grandpa_link, - network: service.network(), - inherent_data_providers: inherent_data_providers.clone(), - on_exit: service.on_exit(), - telemetry_on_connect: Some(service.telemetry_on_connect_stream()), - voting_rule: grandpa::VotingRulesBuilder::default().build(), - }; - - // the GRANDPA voter task is considered infallible, i.e. - // if it fails we take down the service with it. - service.spawn_essential_task("grandpa", grandpa::run_grandpa_voter(voter_config)?); - }, - (_, true) => { - grandpa::setup_disabled_grandpa( - service.client(), - &inherent_data_providers, - service.network(), - )?; - }, + let enable_grandpa = !disable_grandpa; + if enable_grandpa { + // start the full GRANDPA voter + // NOTE: non-authorities could run the GRANDPA observer protocol, but at + // this point the full voter should provide better guarantees of block + // and vote data availability than the observer. The observer has not + // been tested extensively yet and having most nodes in a network run it + // could lead to finality stalls. + let grandpa_config = grandpa::GrandpaParams { + config: grandpa_config, + link: grandpa_link, + network: service.network(), + inherent_data_providers: inherent_data_providers.clone(), + on_exit: service.on_exit(), + telemetry_on_connect: Some(service.telemetry_on_connect_stream()), + voting_rule: grandpa::VotingRulesBuilder::default().build(), + }; + + // the GRANDPA voter task is considered infallible, i.e. + // if it fails we take down the service with it. + service.spawn_essential_task( + "grandpa-voter", + grandpa::run_grandpa_voter(grandpa_config)? + ); + } else { + grandpa::setup_disabled_grandpa( + service.client(), + &inherent_data_providers, + service.network(), + )?; } Ok(service) diff --git a/bin/node/cli/src/service.rs b/bin/node/cli/src/service.rs index 79e1f97169..c60e150a4f 100644 --- a/bin/node/cli/src/service.rs +++ b/bin/node/cli/src/service.rs @@ -215,46 +215,41 @@ macro_rules! new_full { gossip_duration: std::time::Duration::from_millis(333), justification_period: 512, name: Some(name), - observer_enabled: true, + observer_enabled: false, keystore, is_authority, }; - match (is_authority, disable_grandpa) { - (false, false) => { - // start the lightweight GRANDPA observer - service.spawn_task("grandpa-observer", grandpa::run_grandpa_observer( - config, - grandpa_link, - service.network(), - service.on_exit(), - )?); - }, - (true, false) => { - // start the full GRANDPA voter - let grandpa_config = grandpa::GrandpaParams { - config: config, - link: grandpa_link, - network: service.network(), - inherent_data_providers: inherent_data_providers.clone(), - on_exit: service.on_exit(), - telemetry_on_connect: Some(service.telemetry_on_connect_stream()), - voting_rule: grandpa::VotingRulesBuilder::default().build(), - }; - // the GRANDPA voter task is considered infallible, i.e. - // if it fails we take down the service with it. - service.spawn_essential_task( - "grandpa-voter", - grandpa::run_grandpa_voter(grandpa_config)? - ); - }, - (_, true) => { - grandpa::setup_disabled_grandpa( - service.client(), - &inherent_data_providers, - service.network(), - )?; - }, + let enable_grandpa = !disable_grandpa; + if enable_grandpa { + // start the full GRANDPA voter + // NOTE: non-authorities could run the GRANDPA observer protocol, but at + // this point the full voter should provide better guarantees of block + // and vote data availability than the observer. The observer has not + // been tested extensively yet and having most nodes in a network run it + // could lead to finality stalls. + let grandpa_config = grandpa::GrandpaParams { + config, + link: grandpa_link, + network: service.network(), + inherent_data_providers: inherent_data_providers.clone(), + on_exit: service.on_exit(), + telemetry_on_connect: Some(service.telemetry_on_connect_stream()), + voting_rule: grandpa::VotingRulesBuilder::default().build(), + }; + + // the GRANDPA voter task is considered infallible, i.e. + // if it fails we take down the service with it. + service.spawn_essential_task( + "grandpa-voter", + grandpa::run_grandpa_voter(grandpa_config)? + ); + } else { + grandpa::setup_disabled_grandpa( + service.client(), + &inherent_data_providers, + service.network(), + )?; } Ok((service, inherent_data_providers)) diff --git a/client/finality-grandpa/src/lib.rs b/client/finality-grandpa/src/lib.rs index e931271df9..36b57024c9 100644 --- a/client/finality-grandpa/src/lib.rs +++ b/client/finality-grandpa/src/lib.rs @@ -96,7 +96,6 @@ mod voting_rule; pub use finality_proof::FinalityProofProvider; pub use justification::GrandpaJustification; pub use light_import::light_block_import; -pub use observer::run_grandpa_observer; pub use voting_rule::{ BeforeBestBlockBy, ThreeQuartersOfTheUnfinalizedChain, VotingRule, VotingRulesBuilder }; @@ -551,7 +550,7 @@ pub fn run_grandpa_voter( Client: AuxStore, { let GrandpaParams { - config, + mut config, link, network, inherent_data_providers, @@ -560,6 +559,12 @@ pub fn run_grandpa_voter( voting_rule, } = grandpa_params; + // NOTE: we have recently removed `run_grandpa_observer` from the public + // API, I felt it is easier to just ignore this field rather than removing + // it from the config temporarily. This should be removed after #5013 is + // fixed and we re-add the observer to the public API. + config.observer_enabled = false; + let LinkHalf { client, select_chain, diff --git a/client/finality-grandpa/src/observer.rs b/client/finality-grandpa/src/observer.rs index 77227909dc..8345a34209 100644 --- a/client/finality-grandpa/src/observer.rs +++ b/client/finality-grandpa/src/observer.rs @@ -150,6 +150,9 @@ fn grandpa_observer( /// listening for and validating GRANDPA commits instead of following the full /// protocol. Provide configuration and a link to a block import worker that has /// already been instantiated with `block_import`. +/// NOTE: this is currently not part of the crate's public API since we don't consider +/// it stable enough to use on a live network. +#[allow(unused)] pub fn run_grandpa_observer( config: Config, link: LinkHalf, diff --git a/client/finality-grandpa/src/tests.rs b/client/finality-grandpa/src/tests.rs index 24ab0dd41c..5d01b257b6 100644 --- a/client/finality-grandpa/src/tests.rs +++ b/client/finality-grandpa/src/tests.rs @@ -1376,7 +1376,7 @@ fn finalize_3_voters_1_light_observer() { run_to_completion_with(&mut runtime, 20, net.clone(), authorities, |executor| { executor.spawn( - run_grandpa_observer( + observer::run_grandpa_observer( Config { gossip_duration: TEST_GOSSIP_DURATION, justification_period: 32, -- GitLab From 397f53a161cd19de5ad3fe421bb30606d07cece2 Mon Sep 17 00:00:00 2001 From: Pierre Krieger Date: Fri, 21 Feb 2020 11:06:24 +0100 Subject: [PATCH 023/301] Open one substream for each notifications protocol (#4909) * Open one substream for each notifications protocol * Fix WASM build * Apply suggestions from code review Co-Authored-By: Toralf Wittner * Address concerns * Use unsigned-varint to read the varint * Use unsigned-varint * Forgot Cargo.lock Co-authored-by: Toralf Wittner --- Cargo.lock | 2 + .../finality-grandpa/src/communication/mod.rs | 8 +- .../src/communication/tests.rs | 4 +- client/finality-grandpa/src/lib.rs | 5 +- client/network-gossip/src/bridge.rs | 5 +- client/network-gossip/src/lib.rs | 8 +- client/network/Cargo.toml | 3 +- client/network/src/protocol.rs | 70 +- .../{legacy_proto.rs => generic_proto.rs} | 4 +- .../behaviour.rs | 202 ++++-- .../src/protocol/generic_proto/handler.rs | 22 + .../protocol/generic_proto/handler/group.rs | 523 +++++++++++++++ .../handler/legacy.rs} | 80 ++- .../generic_proto/handler/notif_in.rs | 256 +++++++ .../generic_proto/handler/notif_out.rs | 395 +++++++++++ .../{legacy_proto => generic_proto}/tests.rs | 32 +- .../src/protocol/generic_proto/upgrade.rs | 35 + .../protocol/generic_proto/upgrade/collec.rs | 97 +++ .../upgrade/legacy.rs} | 0 .../generic_proto/upgrade/notifications.rs | 622 ++++++++++++++++++ client/network/src/service.rs | 9 +- 21 files changed, 2231 insertions(+), 151 deletions(-) rename client/network/src/protocol/{legacy_proto.rs => generic_proto.rs} (86%) rename client/network/src/protocol/{legacy_proto => generic_proto}/behaviour.rs (86%) create mode 100644 client/network/src/protocol/generic_proto/handler.rs create mode 100644 client/network/src/protocol/generic_proto/handler/group.rs rename client/network/src/protocol/{legacy_proto/handler.rs => generic_proto/handler/legacy.rs} (90%) create mode 100644 client/network/src/protocol/generic_proto/handler/notif_in.rs create mode 100644 client/network/src/protocol/generic_proto/handler/notif_out.rs rename client/network/src/protocol/{legacy_proto => generic_proto}/tests.rs (92%) create mode 100644 client/network/src/protocol/generic_proto/upgrade.rs create mode 100644 client/network/src/protocol/generic_proto/upgrade/collec.rs rename client/network/src/protocol/{legacy_proto/upgrade.rs => generic_proto/upgrade/legacy.rs} (100%) create mode 100644 client/network/src/protocol/generic_proto/upgrade/notifications.rs diff --git a/Cargo.lock b/Cargo.lock index c17bd30b0b..dddd6cddad 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -6231,6 +6231,7 @@ dependencies = [ "nohash-hasher", "parity-scale-codec", "parking_lot 0.10.0", + "pin-project", "prost", "prost-build", "quickcheck", @@ -8564,6 +8565,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3b7ffb36714206d2f5f05d61a2bc350415c642f2c54433f0ebf829afbe41d570" dependencies = [ "bytes 0.5.4", + "futures 0.3.4", "futures_codec", ] diff --git a/client/finality-grandpa/src/communication/mod.rs b/client/finality-grandpa/src/communication/mod.rs index 050a3c8642..b5600c1c0d 100644 --- a/client/finality-grandpa/src/communication/mod.rs +++ b/client/finality-grandpa/src/communication/mod.rs @@ -65,6 +65,7 @@ mod periodic; pub(crate) mod tests; pub use sp_finality_grandpa::GRANDPA_ENGINE_ID; +pub const GRANDPA_PROTOCOL_NAME: &[u8] = b"/paritytech/grandpa/1"; // cost scalars for reporting peers. mod cost { @@ -185,7 +186,12 @@ impl> NetworkBridge { ); let validator = Arc::new(validator); - let gossip_engine = GossipEngine::new(service.clone(), GRANDPA_ENGINE_ID, validator.clone()); + let gossip_engine = GossipEngine::new( + service.clone(), + GRANDPA_ENGINE_ID, + GRANDPA_PROTOCOL_NAME, + validator.clone() + ); { // register all previous votes with the gossip service so that they're diff --git a/client/finality-grandpa/src/communication/tests.rs b/client/finality-grandpa/src/communication/tests.rs index 5506512b53..96761a2f3c 100644 --- a/client/finality-grandpa/src/communication/tests.rs +++ b/client/finality-grandpa/src/communication/tests.rs @@ -25,7 +25,7 @@ use std::sync::Arc; use sp_keyring::Ed25519Keyring; use parity_scale_codec::Encode; use sp_runtime::{ConsensusEngineId, traits::NumberFor}; -use std::{pin::Pin, task::{Context, Poll}}; +use std::{borrow::Cow, pin::Pin, task::{Context, Poll}}; use crate::environment::SharedVoterSetState; use sp_finality_grandpa::{AuthorityList, GRANDPA_ENGINE_ID}; use super::gossip::{self, GossipValidator}; @@ -61,7 +61,7 @@ impl sc_network_gossip::Network for TestNetwork { let _ = self.sender.unbounded_send(Event::WriteNotification(who, message)); } - fn register_notifications_protocol(&self, _: ConsensusEngineId) {} + fn register_notifications_protocol(&self, _: ConsensusEngineId, _: Cow<'static, [u8]>) {} fn announce(&self, block: Hash, _associated_data: Vec) { let _ = self.sender.unbounded_send(Event::Announce(block)); diff --git a/client/finality-grandpa/src/lib.rs b/client/finality-grandpa/src/lib.rs index 36b57024c9..650b59dfff 100644 --- a/client/finality-grandpa/src/lib.rs +++ b/client/finality-grandpa/src/lib.rs @@ -886,7 +886,10 @@ pub fn setup_disabled_grandpa( // We register the GRANDPA protocol so that we don't consider it an anomaly // to receive GRANDPA messages on the network. We don't process the // messages. - network.register_notifications_protocol(communication::GRANDPA_ENGINE_ID); + network.register_notifications_protocol( + communication::GRANDPA_ENGINE_ID, + From::from(communication::GRANDPA_PROTOCOL_NAME), + ); Ok(()) } diff --git a/client/network-gossip/src/bridge.rs b/client/network-gossip/src/bridge.rs index 7968e59d07..c911766aba 100644 --- a/client/network-gossip/src/bridge.rs +++ b/client/network-gossip/src/bridge.rs @@ -24,7 +24,7 @@ use futures::{prelude::*, channel::mpsc}; use libp2p::PeerId; use parking_lot::Mutex; use sp_runtime::{traits::Block as BlockT, ConsensusEngineId}; -use std::{pin::Pin, sync::Arc, task::{Context, Poll}}; +use std::{borrow::Cow, pin::Pin, sync::Arc, task::{Context, Poll}}; /// Wraps around an implementation of the `Network` crate and provides gossiping capabilities on /// top of it. @@ -48,6 +48,7 @@ impl GossipEngine { pub fn new + Send + Clone + 'static>( mut network: N, engine_id: ConsensusEngineId, + protocol_name: impl Into>, validator: Arc>, ) -> Self where B: 'static { let mut state_machine = ConsensusGossip::new(); @@ -56,7 +57,7 @@ impl GossipEngine { // might miss events. let network_event_stream = network.event_stream(); - network.register_notifications_protocol(engine_id); + network.register_notifications_protocol(engine_id, protocol_name.into()); state_machine.register_validator(&mut network, engine_id, validator); let inner = Arc::new(Mutex::new(GossipEngineInner { diff --git a/client/network-gossip/src/lib.rs b/client/network-gossip/src/lib.rs index c4f057a775..abb3f32972 100644 --- a/client/network-gossip/src/lib.rs +++ b/client/network-gossip/src/lib.rs @@ -61,7 +61,7 @@ pub use self::validator::{DiscardAll, MessageIntent, Validator, ValidatorContext use futures::prelude::*; use sc_network::{specialization::NetworkSpecialization, Event, ExHashT, NetworkService, PeerId, ReputationChange}; use sp_runtime::{traits::Block as BlockT, ConsensusEngineId}; -use std::{pin::Pin, sync::Arc}; +use std::{borrow::Cow, pin::Pin, sync::Arc}; mod bridge; mod state_machine; @@ -86,7 +86,8 @@ pub trait Network { /// See the documentation of [`NetworkService:register_notifications_protocol`] for more information. fn register_notifications_protocol( &self, - engine_id: ConsensusEngineId + engine_id: ConsensusEngineId, + protocol_name: Cow<'static, [u8]>, ); /// Notify everyone we're connected to that we have the given block. @@ -116,8 +117,9 @@ impl, H: ExHashT> Network for Arc, ) { - NetworkService::register_notifications_protocol(self, engine_id) + NetworkService::register_notifications_protocol(self, engine_id, protocol_name) } fn announce(&self, block: B::Hash, associated_data: Vec) { diff --git a/client/network/Cargo.toml b/client/network/Cargo.toml index e878e47e69..4c2f2d0c31 100644 --- a/client/network/Cargo.toml +++ b/client/network/Cargo.toml @@ -36,6 +36,7 @@ sc-block-builder = { version = "0.8", path = "../block-builder" } sc-client = { version = "0.8", path = "../" } sc-client-api = { version = "2.0.0", path = "../api" } sc-peerset = { version = "2.0.0", path = "../peerset" } +pin-project = "0.4.6" serde = { version = "1.0.101", features = ["derive"] } serde_json = "1.0.41" slog = { version = "2.5.2", features = ["nested-values"] } @@ -51,7 +52,7 @@ sp-runtime = { version = "2.0.0", path = "../../primitives/runtime" } substrate-test-client = { version = "2.0.0", optional = true, path = "../../test-utils/client" } substrate-test-runtime-client = { version = "2.0.0", optional = true, path = "../../test-utils/runtime/client" } thiserror = "1" -unsigned-varint = { version = "0.3.0", features = ["futures-codec"] } +unsigned-varint = { version = "0.3.1", features = ["futures", "futures-codec"] } void = "1.0.2" zeroize = "1.0.0" diff --git a/client/network/src/protocol.rs b/client/network/src/protocol.rs index d5e7ae6252..fe75649bac 100644 --- a/client/network/src/protocol.rs +++ b/client/network/src/protocol.rs @@ -15,10 +15,10 @@ // along with Substrate. If not, see . use crate::{DiscoveryNetBehaviour, config::ProtocolId}; -use legacy_proto::{LegacyProto, LegacyProtoOut}; use crate::utils::interval; use bytes::{Bytes, BytesMut}; use futures::prelude::*; +use generic_proto::{GenericProto, GenericProtoOut}; use libp2p::{Multiaddr, PeerId}; use libp2p::core::{ConnectedPoint, nodes::listeners::ListenerId}; use libp2p::swarm::{ProtocolsHandler, IntoProtocolsHandler}; @@ -36,13 +36,14 @@ use sp_runtime::traits::{ }; use sp_arithmetic::traits::SaturatedConversion; use message::{BlockAnnounce, BlockAttributes, Direction, FromBlock, Message, RequestId}; -use message::generic::{Message as GenericMessage, ConsensusMessage}; +use message::generic::Message as GenericMessage; use light_dispatch::{LightDispatch, LightDispatchNetwork, RequestData}; use specialization::NetworkSpecialization; use sync::{ChainSync, SyncState}; use crate::service::{TransactionPool, ExHashT}; use crate::config::{BoxFinalityProofRequestBuilder, Roles}; use rustc_hex::ToHex; +use std::borrow::Cow; use std::collections::{BTreeMap, HashMap, HashSet}; use std::sync::Arc; use std::fmt::Write; @@ -64,7 +65,7 @@ pub mod api { } } -mod legacy_proto; +mod generic_proto; mod util; pub mod block_requests; @@ -158,9 +159,11 @@ pub struct Protocol, H: ExHashT> { /// When asked for a proof of finality, we use this struct to build one. finality_proof_provider: Option>>, /// Handles opening the unique substream and sending and receiving raw messages. - behaviour: LegacyProto, - /// List of notification protocols that have been registered. - registered_notif_protocols: HashSet, + behaviour: GenericProto, + /// For each legacy gossiping engine ID, the corresponding new protocol name. + protocol_name_by_engine: HashMap>, + /// For each protocol name, the legacy gossiping engine ID. + protocol_engine_by_name: HashMap, ConsensusEngineId>, } #[derive(Default)] @@ -207,7 +210,7 @@ pub struct PeerInfo { } struct LightDispatchIn<'a> { - behaviour: &'a mut LegacyProto, + behaviour: &'a mut GenericProto, peerset: sc_peerset::PeersetHandle, } @@ -347,7 +350,7 @@ pub trait Context { /// Protocol context. struct ProtocolContext<'a, B: 'a + BlockT, H: 'a + ExHashT> { - behaviour: &'a mut LegacyProto, + behaviour: &'a mut GenericProto, context_data: &'a mut ContextData, peerset_handle: &'a sc_peerset::PeersetHandle, } @@ -355,7 +358,7 @@ struct ProtocolContext<'a, B: 'a + BlockT, H: 'a + ExHashT> { impl<'a, B: BlockT + 'a, H: 'a + ExHashT> ProtocolContext<'a, B, H> { fn new( context_data: &'a mut ContextData, - behaviour: &'a mut LegacyProto, + behaviour: &'a mut GenericProto, peerset_handle: &'a sc_peerset::PeersetHandle, ) -> Self { ProtocolContext { context_data, peerset_handle, behaviour } @@ -442,7 +445,7 @@ impl, H: ExHashT> Protocol { let (peerset, peerset_handle) = sc_peerset::Peerset::from_config(peerset_config); let versions = &((MIN_VERSION as u8)..=(CURRENT_VERSION as u8)).collect::>(); - let behaviour = LegacyProto::new(protocol_id, versions, peerset); + let behaviour = GenericProto::new(protocol_id, versions, peerset); let protocol = Protocol { tick_timeout: Box::pin(interval(TICK_TIMEOUT)), @@ -463,7 +466,8 @@ impl, H: ExHashT> Protocol { finality_proof_provider, peerset_handle: peerset_handle.clone(), behaviour, - registered_notif_protocols: HashSet::new(), + protocol_name_by_engine: HashMap::new(), + protocol_engine_by_name: HashMap::new(), }; Ok((protocol, peerset_handle)) @@ -646,7 +650,7 @@ impl, H: ExHashT> Protocol { GenericMessage::RemoteReadChildRequest(request) => self.on_remote_read_child_request(who, request), GenericMessage::Consensus(msg) => - return if self.registered_notif_protocols.contains(&msg.engine_id) { + return if self.protocol_name_by_engine.contains_key(&msg.engine_id) { CustomMessageOutcome::NotificationsReceived { remote: who.clone(), messages: vec![(msg.engine_id, From::from(msg.data))], @@ -659,7 +663,7 @@ impl, H: ExHashT> Protocol { let messages = messages .into_iter() .filter_map(|msg| { - if self.registered_notif_protocols.contains(&msg.engine_id) { + if self.protocol_name_by_engine.contains_key(&msg.engine_id) { Some((msg.engine_id, From::from(msg.data))) } else { warn!(target: "sync", "Received message on non-registered protocol: {:?}", msg.engine_id); @@ -1060,7 +1064,7 @@ impl, H: ExHashT> Protocol { // Notify all the notification protocols as open. CustomMessageOutcome::NotificationStreamOpened { remote: who, - protocols: self.registered_notif_protocols.iter().cloned().collect(), + protocols: self.protocol_name_by_engine.keys().cloned().collect(), roles: info.roles, } } @@ -1075,18 +1079,15 @@ impl, H: ExHashT> Protocol { engine_id: ConsensusEngineId, message: impl Into> ) { - if !self.registered_notif_protocols.contains(&engine_id) { + if let Some(protocol_name) = self.protocol_name_by_engine.get(&engine_id) { + self.behaviour.write_notification(&target, engine_id, protocol_name.clone(), message); + } else { error!( target: "sub-libp2p", "Sending a notification with a protocol that wasn't registered: {:?}", engine_id ); } - - self.send_message(&target, GenericMessage::Consensus(ConsensusMessage { - engine_id, - data: message.into(), - })); } /// Registers a new notifications protocol. @@ -1096,9 +1097,14 @@ impl, H: ExHashT> Protocol { pub fn register_notifications_protocol( &mut self, engine_id: ConsensusEngineId, + protocol_name: impl Into>, ) -> Vec { - if !self.registered_notif_protocols.insert(engine_id) { - error!(target: "sub-libp2p", "Notifications protocol already registered: {:?}", engine_id); + let protocol_name = protocol_name.into(); + if self.protocol_name_by_engine.insert(engine_id, protocol_name.clone()).is_some() { + error!(target: "sub-libp2p", "Notifications protocol already registered: {:?}", protocol_name); + } else { + self.behaviour.register_notif_protocol(protocol_name.clone(), engine_id, Vec::new()); + self.protocol_engine_by_name.insert(protocol_name, engine_id); } // Registering a protocol while we already have open connections isn't great, but for now @@ -1833,7 +1839,7 @@ pub enum CustomMessageOutcome { } fn send_request( - behaviour: &mut LegacyProto, + behaviour: &mut GenericProto, stats: &mut HashMap<&'static str, PacketStats>, peers: &mut HashMap>, who: &PeerId, @@ -1854,7 +1860,7 @@ fn send_request( } fn send_message( - behaviour: &mut LegacyProto, + behaviour: &mut GenericProto, stats: &mut HashMap<&'static str, PacketStats>, who: &PeerId, message: Message, @@ -1868,7 +1874,7 @@ fn send_message( impl, H: ExHashT> NetworkBehaviour for Protocol { - type ProtocolsHandler = ::ProtocolsHandler; + type ProtocolsHandler = ::ProtocolsHandler; type OutEvent = CustomMessageOutcome; fn new_handler(&mut self) -> Self::ProtocolsHandler { @@ -1954,25 +1960,21 @@ Protocol { }; let outcome = match event { - LegacyProtoOut::CustomProtocolOpen { peer_id, version, .. } => { - debug_assert!( - version <= CURRENT_VERSION as u8 - && version >= MIN_VERSION as u8 - ); + GenericProtoOut::CustomProtocolOpen { peer_id, .. } => { self.on_peer_connected(peer_id.clone()); CustomMessageOutcome::None } - LegacyProtoOut::CustomProtocolClosed { peer_id, .. } => { + GenericProtoOut::CustomProtocolClosed { peer_id, .. } => { self.on_peer_disconnected(peer_id.clone()); // Notify all the notification protocols as closed. CustomMessageOutcome::NotificationStreamClosed { remote: peer_id, - protocols: self.registered_notif_protocols.iter().cloned().collect(), + protocols: self.protocol_name_by_engine.keys().cloned().collect(), } }, - LegacyProtoOut::CustomMessage { peer_id, message } => + GenericProtoOut::CustomMessage { peer_id, message } => self.on_custom_message(peer_id, message), - LegacyProtoOut::Clogged { peer_id, messages } => { + GenericProtoOut::Clogged { peer_id, messages } => { debug!(target: "sync", "{} clogging messages:", messages.len()); for msg in messages.into_iter().take(5) { let message: Option> = Decode::decode(&mut &msg[..]).ok(); diff --git a/client/network/src/protocol/legacy_proto.rs b/client/network/src/protocol/generic_proto.rs similarity index 86% rename from client/network/src/protocol/legacy_proto.rs rename to client/network/src/protocol/generic_proto.rs index 434782f7d5..f703287f38 100644 --- a/client/network/src/protocol/legacy_proto.rs +++ b/client/network/src/protocol/generic_proto.rs @@ -17,10 +17,10 @@ //! Implementation of libp2p's `NetworkBehaviour` trait that opens a single substream with the //! remote and then allows any communication with them. //! -//! The `Protocol` struct uses `LegacyProto` in order to open substreams with the rest of the +//! The `Protocol` struct uses `GenericProto` in order to open substreams with the rest of the //! network, then performs the Substrate protocol handling on top. -pub use self::behaviour::{LegacyProto, LegacyProtoOut}; +pub use self::behaviour::{GenericProto, GenericProtoOut}; mod behaviour; mod handler; diff --git a/client/network/src/protocol/legacy_proto/behaviour.rs b/client/network/src/protocol/generic_proto/behaviour.rs similarity index 86% rename from client/network/src/protocol/legacy_proto/behaviour.rs rename to client/network/src/protocol/generic_proto/behaviour.rs index 69c89be9a3..24e96681a0 100644 --- a/client/network/src/protocol/legacy_proto/behaviour.rs +++ b/client/network/src/protocol/generic_proto/behaviour.rs @@ -15,9 +15,12 @@ // along with Substrate. If not, see . use crate::{DiscoveryNetBehaviour, config::ProtocolId}; -use crate::protocol::legacy_proto::handler::{CustomProtoHandlerProto, CustomProtoHandlerOut, CustomProtoHandlerIn}; -use crate::protocol::legacy_proto::upgrade::RegisteredProtocol; +use crate::protocol::message::generic::{Message as GenericMessage, ConsensusMessage}; +use crate::protocol::generic_proto::handler::{NotifsHandlerProto, NotifsHandlerOut, NotifsHandlerIn}; +use crate::protocol::generic_proto::upgrade::RegisteredProtocol; + use bytes::BytesMut; +use codec::Encode as _; use fnv::FnvHashMap; use futures::prelude::*; use libp2p::core::{ConnectedPoint, Multiaddr, PeerId}; @@ -25,16 +28,32 @@ use libp2p::swarm::{NetworkBehaviour, NetworkBehaviourAction, PollParameters}; use log::{debug, error, trace, warn}; use rand::distributions::{Distribution as _, Uniform}; use smallvec::SmallVec; -use std::{borrow::Cow, collections::hash_map::Entry, cmp, error, mem, pin::Pin}; -use std::time::Duration; -use wasm_timer::Instant; +use sp_runtime::ConsensusEngineId; +use std::{borrow::Cow, collections::hash_map::Entry, cmp}; +use std::{error, mem, pin::Pin, str, time::Duration}; use std::task::{Context, Poll}; +use wasm_timer::Instant; /// Network behaviour that handles opening substreams for custom protocols with other nodes. /// +/// ## Legacy vs new protocol +/// +/// The `GenericProto` behaves as following: +/// +/// - Whenever a connection is established, we open a single substream (called "legay protocol" in +/// the source code). This substream name depends on the `protocol_id` and `versions` passed at +/// initialization. If the remote refuses this substream, we close the connection. +/// +/// - For each registered protocol, we also open an additional substream for this protocol. If the +/// remote refuses this substream, then it's fine. +/// +/// - Whenever we want to send a message, we can call either `send_packet` to force the legacy +/// substream, or `write_notification` to indicate a registered protocol. If the registered +/// protocol was refused or isn't supported by the remote, we always use the legacy instead. +/// /// ## How it works /// -/// The role of the `LegacyProto` is to synchronize the following components: +/// The role of the `GenericProto` is to synchronize the following components: /// /// - The libp2p swarm that opens new connections and reports disconnects. /// - The connection handler (see `handler.rs`) that handles individual connections. @@ -60,9 +79,12 @@ use std::task::{Context, Poll}; /// Note that this "banning" system is not an actual ban. If a "banned" node tries to connect to /// us, we accept the connection. The "banning" system is only about delaying dialing attempts. /// -pub struct LegacyProto { - /// List of protocols to open with peers. Never modified. - protocol: RegisteredProtocol, +pub struct GenericProto { + /// Legacy protocol to open with peers. Never modified. + legacy_protocol: RegisteredProtocol, + + /// Notification protocols. Entries are only ever added and not removed. + notif_protocols: Vec<(Cow<'static, [u8]>, ConsensusEngineId, Vec)>, /// Receiver for instructions about who to connect to or disconnect from. peerset: sc_peerset::Peerset, @@ -79,7 +101,7 @@ pub struct LegacyProto { next_incoming_index: sc_peerset::IncomingIndex, /// Events to produce from `poll()`. - events: SmallVec<[NetworkBehaviourAction; 4]>, + events: SmallVec<[NetworkBehaviourAction; 4]>, } /// State of a peer we're connected to. @@ -183,13 +205,11 @@ struct IncomingPeer { incoming_id: sc_peerset::IncomingIndex, } -/// Event that can be emitted by the `LegacyProto`. +/// Event that can be emitted by the `GenericProto`. #[derive(Debug)] -pub enum LegacyProtoOut { +pub enum GenericProtoOut { /// Opened a custom protocol with the remote. CustomProtocolOpen { - /// Version of the protocol that has been opened. - version: u8, /// Id of the node we have opened a connection with. peer_id: PeerId, /// Endpoint used for this custom protocol. @@ -205,6 +225,8 @@ pub enum LegacyProtoOut { }, /// Receives a message on a custom protocol substream. + /// + /// Also concerns received notifications for the notifications API. CustomMessage { /// Id of the peer the message came from. peer_id: PeerId, @@ -222,17 +244,18 @@ pub enum LegacyProtoOut { }, } -impl LegacyProto { +impl GenericProto { /// Creates a `CustomProtos`. pub fn new( protocol: impl Into, versions: &[u8], peerset: sc_peerset::Peerset, ) -> Self { - let protocol = RegisteredProtocol::new(protocol, versions); + let legacy_protocol = RegisteredProtocol::new(protocol, versions); - LegacyProto { - protocol, + GenericProto { + legacy_protocol, + notif_protocols: Vec::new(), peerset, peers: FnvHashMap::default(), incoming: SmallVec::new(), @@ -241,6 +264,19 @@ impl LegacyProto { } } + /// Registers a new notifications protocol. + /// + /// You are very strongly encouraged to call this method very early on. Any open connection + /// will retain the protocols that were registered then, and not any new one. + pub fn register_notif_protocol( + &mut self, + protocol_name: impl Into>, + engine_id: ConsensusEngineId, + handshake_msg: impl Into> + ) { + self.notif_protocols.push((protocol_name.into(), engine_id, handshake_msg.into())); + } + /// Returns the list of all the peers we have an open channel to. pub fn open_peers<'a>(&'a self) -> impl Iterator + 'a { self.peers.iter().filter(|(_, state)| state.is_open()).map(|(id, _)| id) @@ -292,7 +328,7 @@ impl LegacyProto { debug!(target: "sub-libp2p", "Handler({:?}) <= Disable", peer_id); self.events.push(NetworkBehaviourAction::SendEvent { peer_id: peer_id.clone(), - event: CustomProtoHandlerIn::Disable, + event: NotifsHandlerIn::Disable, }); let banned_until = ban.map(|dur| Instant::now() + dur); *entry.into_mut() = PeerState::Disabled { open, connected_point, banned_until } @@ -313,7 +349,7 @@ impl LegacyProto { debug!(target: "sub-libp2p", "Handler({:?}) <= Disable", peer_id); self.events.push(NetworkBehaviourAction::SendEvent { peer_id: peer_id.clone(), - event: CustomProtoHandlerIn::Disable, + event: NotifsHandlerIn::Disable, }); let banned_until = ban.map(|dur| Instant::now() + dur); *entry.into_mut() = PeerState::Disabled { open: false, connected_point, banned_until } @@ -339,6 +375,44 @@ impl LegacyProto { } } + /// Sends a notification to a peer. + /// + /// Has no effect if the custom protocol is not open with the given peer. + /// + /// Also note that even if we have a valid open substream, it may in fact be already closed + /// without us knowing, in which case the packet will not be received. + /// + /// > **Note**: Ideally the `engine_id` parameter wouldn't be necessary. See the documentation + /// > of [`NotifsHandlerIn`] for more information. + pub fn write_notification( + &mut self, + target: &PeerId, + engine_id: ConsensusEngineId, + protocol_name: Cow<'static, [u8]>, + message: impl Into>, + ) { + if !self.is_open(target) { + return; + } + + trace!( + target: "sub-libp2p", + "External API => Notification for {:?} with protocol {:?}", + target, + str::from_utf8(&protocol_name) + ); + trace!(target: "sub-libp2p", "Handler({:?}) <= Packet", target); + + self.events.push(NetworkBehaviourAction::SendEvent { + peer_id: target.clone(), + event: NotifsHandlerIn::SendNotification { + message: message.into(), + engine_id, + protocol_name, + }, + }); + } + /// Sends a message to a peer. /// /// Has no effect if the custom protocol is not open with the given peer. @@ -354,7 +428,7 @@ impl LegacyProto { trace!(target: "sub-libp2p", "Handler({:?}) <= Packet", target); self.events.push(NetworkBehaviourAction::SendEvent { peer_id: target.clone(), - event: CustomProtoHandlerIn::SendCustomMessage { + event: NotifsHandlerIn::SendLegacy { message, } }); @@ -416,7 +490,7 @@ impl LegacyProto { debug!(target: "sub-libp2p", "Handler({:?}) <= Enable", occ_entry.key()); self.events.push(NetworkBehaviourAction::SendEvent { peer_id: occ_entry.key().clone(), - event: CustomProtoHandlerIn::Enable, + event: NotifsHandlerIn::Enable, }); *occ_entry.into_mut() = PeerState::Enabled { connected_point, open }; }, @@ -434,7 +508,7 @@ impl LegacyProto { debug!(target: "sub-libp2p", "Handler({:?}) <= Enable", occ_entry.key()); self.events.push(NetworkBehaviourAction::SendEvent { peer_id: occ_entry.key().clone(), - event: CustomProtoHandlerIn::Enable, + event: NotifsHandlerIn::Enable, }); *occ_entry.into_mut() = PeerState::Enabled { connected_point, open: false }; }, @@ -491,7 +565,7 @@ impl LegacyProto { debug!(target: "sub-libp2p", "Handler({:?}) <= Disable", entry.key()); self.events.push(NetworkBehaviourAction::SendEvent { peer_id: entry.key().clone(), - event: CustomProtoHandlerIn::Disable, + event: NotifsHandlerIn::Disable, }); *entry.into_mut() = PeerState::Disabled { open, connected_point, banned_until: None } }, @@ -555,7 +629,7 @@ impl LegacyProto { debug!(target: "sub-libp2p", "Handler({:?}) <= Enable", incoming.peer_id); self.events.push(NetworkBehaviourAction::SendEvent { peer_id: incoming.peer_id, - event: CustomProtoHandlerIn::Enable, + event: NotifsHandlerIn::Enable, }); *state = PeerState::Enabled { open: false, connected_point }; @@ -597,13 +671,13 @@ impl LegacyProto { debug!(target: "sub-libp2p", "Handler({:?}) <= Disable", incoming.peer_id); self.events.push(NetworkBehaviourAction::SendEvent { peer_id: incoming.peer_id, - event: CustomProtoHandlerIn::Disable, + event: NotifsHandlerIn::Disable, }); *state = PeerState::Disabled { open: false, connected_point, banned_until: None }; } } -impl DiscoveryNetBehaviour for LegacyProto { +impl DiscoveryNetBehaviour for GenericProto { fn add_discovered_nodes(&mut self, peer_ids: impl Iterator) { self.peerset.discovered(peer_ids.into_iter().map(|peer_id| { debug!(target: "sub-libp2p", "PSM <= Discovered({:?})", peer_id); @@ -612,12 +686,12 @@ impl DiscoveryNetBehaviour for LegacyProto { } } -impl NetworkBehaviour for LegacyProto { - type ProtocolsHandler = CustomProtoHandlerProto; - type OutEvent = LegacyProtoOut; +impl NetworkBehaviour for GenericProto { + type ProtocolsHandler = NotifsHandlerProto; + type OutEvent = GenericProtoOut; fn new_handler(&mut self) -> Self::ProtocolsHandler { - CustomProtoHandlerProto::new(self.protocol.clone()) + NotifsHandlerProto::new(self.legacy_protocol.clone(), self.notif_protocols.clone()) } fn addresses_of_peer(&mut self, _: &PeerId) -> Vec { @@ -634,7 +708,7 @@ impl NetworkBehaviour for LegacyProto { debug!(target: "sub-libp2p", "Handler({:?}) <= Enable", peer_id); self.events.push(NetworkBehaviourAction::SendEvent { peer_id: peer_id.clone(), - event: CustomProtoHandlerIn::Enable, + event: NotifsHandlerIn::Enable, }); *st = PeerState::Enabled { open: false, connected_point }; } @@ -677,7 +751,7 @@ impl NetworkBehaviour for LegacyProto { debug!(target: "sub-libp2p", "Handler({:?}) <= Disable", peer_id); self.events.push(NetworkBehaviourAction::SendEvent { peer_id: peer_id.clone(), - event: CustomProtoHandlerIn::Disable, + event: NotifsHandlerIn::Disable, }); *st = PeerState::Disabled { open: false, connected_point, banned_until }; } @@ -707,7 +781,7 @@ impl NetworkBehaviour for LegacyProto { } if open { debug!(target: "sub-libp2p", "External API <= Closed({:?})", peer_id); - let event = LegacyProtoOut::CustomProtocolClosed { + let event = GenericProtoOut::CustomProtocolClosed { peer_id: peer_id.clone(), reason: "Disconnected by libp2p".into(), }; @@ -724,7 +798,7 @@ impl NetworkBehaviour for LegacyProto { self.peers.insert(peer_id.clone(), PeerState::Banned { until: timer_deadline }); if open { debug!(target: "sub-libp2p", "External API <= Closed({:?})", peer_id); - let event = LegacyProtoOut::CustomProtocolClosed { + let event = GenericProtoOut::CustomProtocolClosed { peer_id: peer_id.clone(), reason: "Disconnected by libp2p".into(), }; @@ -746,7 +820,7 @@ impl NetworkBehaviour for LegacyProto { if open { debug!(target: "sub-libp2p", "External API <= Closed({:?})", peer_id); - let event = LegacyProtoOut::CustomProtocolClosed { + let event = GenericProtoOut::CustomProtocolClosed { peer_id: peer_id.clone(), reason: "Disconnected by libp2p".into(), }; @@ -817,10 +891,10 @@ impl NetworkBehaviour for LegacyProto { fn inject_node_event( &mut self, source: PeerId, - event: CustomProtoHandlerOut, + event: NotifsHandlerOut, ) { match event { - CustomProtoHandlerOut::CustomProtocolClosed { reason } => { + NotifsHandlerOut::Closed { reason } => { debug!(target: "sub-libp2p", "Handler({:?}) => Closed: {}", source, reason); let mut entry = if let Entry::Occupied(entry) = self.peers.entry(source.clone()) { @@ -831,7 +905,7 @@ impl NetworkBehaviour for LegacyProto { }; debug!(target: "sub-libp2p", "External API <= Closed({:?})", source); - let event = LegacyProtoOut::CustomProtocolClosed { + let event = GenericProtoOut::CustomProtocolClosed { reason, peer_id: source.clone(), }; @@ -847,7 +921,7 @@ impl NetworkBehaviour for LegacyProto { debug!(target: "sub-libp2p", "Handler({:?}) <= Disable", source); self.events.push(NetworkBehaviourAction::SendEvent { peer_id: source.clone(), - event: CustomProtoHandlerIn::Disable, + event: NotifsHandlerIn::Disable, }); *entry.into_mut() = PeerState::Disabled { @@ -873,8 +947,8 @@ impl NetworkBehaviour for LegacyProto { } } - CustomProtoHandlerOut::CustomProtocolOpen { version } => { - debug!(target: "sub-libp2p", "Handler({:?}) => Open: version {:?}", source, version); + NotifsHandlerOut::Open => { + debug!(target: "sub-libp2p", "Handler({:?}) => Open", source); let endpoint = match self.peers.get_mut(&source) { Some(PeerState::Enabled { ref mut open, ref connected_point }) | Some(PeerState::DisabledPendingEnable { ref mut open, ref connected_point, .. }) | @@ -889,8 +963,7 @@ impl NetworkBehaviour for LegacyProto { }; debug!(target: "sub-libp2p", "External API <= Open({:?})", source); - let event = LegacyProtoOut::CustomProtocolOpen { - version, + let event = GenericProtoOut::CustomProtocolOpen { peer_id: source, endpoint, }; @@ -898,11 +971,11 @@ impl NetworkBehaviour for LegacyProto { self.events.push(NetworkBehaviourAction::GenerateEvent(event)); } - CustomProtoHandlerOut::CustomMessage { message } => { + NotifsHandlerOut::CustomMessage { message } => { debug_assert!(self.is_open(&source)); trace!(target: "sub-libp2p", "Handler({:?}) => Message", source); trace!(target: "sub-libp2p", "External API <= Message({:?})", source); - let event = LegacyProtoOut::CustomMessage { + let event = GenericProtoOut::CustomMessage { peer_id: source, message, }; @@ -910,25 +983,50 @@ impl NetworkBehaviour for LegacyProto { self.events.push(NetworkBehaviourAction::GenerateEvent(event)); } - CustomProtoHandlerOut::Clogged { messages } => { + NotifsHandlerOut::Notification { protocol_name, engine_id, message } => { + debug_assert!(self.is_open(&source)); + trace!( + target: "sub-libp2p", + "Handler({:?}) => Notification({:?})", + source, + str::from_utf8(&protocol_name) + ); + trace!(target: "sub-libp2p", "External API <= Message({:?})", source); + let event = GenericProtoOut::CustomMessage { + peer_id: source, + message: { + let message = GenericMessage::<(), (), (), ()>::Consensus(ConsensusMessage { + engine_id, + data: message.to_vec(), + }); + + // Note that we clone `message` here. + From::from(&message.encode()[..]) + }, + }; + + self.events.push(NetworkBehaviourAction::GenerateEvent(event)); + } + + NotifsHandlerOut::Clogged { messages } => { debug_assert!(self.is_open(&source)); trace!(target: "sub-libp2p", "Handler({:?}) => Clogged", source); trace!(target: "sub-libp2p", "External API <= Clogged({:?})", source); warn!(target: "sub-libp2p", "Queue of packets to send to {:?} is \ pretty large", source); - self.events.push(NetworkBehaviourAction::GenerateEvent(LegacyProtoOut::Clogged { + self.events.push(NetworkBehaviourAction::GenerateEvent(GenericProtoOut::Clogged { peer_id: source, messages, })); } // Don't do anything for non-severe errors except report them. - CustomProtoHandlerOut::ProtocolError { is_severe, ref error } if !is_severe => { + NotifsHandlerOut::ProtocolError { is_severe, ref error } if !is_severe => { debug!(target: "sub-libp2p", "Handler({:?}) => Benign protocol error: {:?}", source, error) } - CustomProtoHandlerOut::ProtocolError { error, .. } => { + NotifsHandlerOut::ProtocolError { error, .. } => { debug!(target: "sub-libp2p", "Handler({:?}) => Severe protocol error: {:?}", source, error); // A severe protocol error happens when we detect a "bad" node, such as a node on @@ -950,7 +1048,7 @@ impl NetworkBehaviour for LegacyProto { _params: &mut impl PollParameters, ) -> Poll< NetworkBehaviourAction< - CustomProtoHandlerIn, + NotifsHandlerIn, Self::OutEvent, >, > { @@ -1005,7 +1103,7 @@ impl NetworkBehaviour for LegacyProto { debug!(target: "sub-libp2p", "Handler({:?}) <= Enable now that ban has expired", peer_id); self.events.push(NetworkBehaviourAction::SendEvent { peer_id: peer_id.clone(), - event: CustomProtoHandlerIn::Enable, + event: NotifsHandlerIn::Enable, }); *peer_state = PeerState::Enabled { connected_point, open }; } diff --git a/client/network/src/protocol/generic_proto/handler.rs b/client/network/src/protocol/generic_proto/handler.rs new file mode 100644 index 0000000000..e97176cfbb --- /dev/null +++ b/client/network/src/protocol/generic_proto/handler.rs @@ -0,0 +1,22 @@ +// Copyright 2020 Parity Technologies (UK) Ltd. +// This file is part of Substrate. + +// Substrate is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Substrate is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Substrate. If not, see . + +pub use self::group::{NotifsHandlerProto, NotifsHandler, NotifsHandlerIn, NotifsHandlerOut}; + +mod group; +mod legacy; +mod notif_in; +mod notif_out; diff --git a/client/network/src/protocol/generic_proto/handler/group.rs b/client/network/src/protocol/generic_proto/handler/group.rs new file mode 100644 index 0000000000..d6d9919d3e --- /dev/null +++ b/client/network/src/protocol/generic_proto/handler/group.rs @@ -0,0 +1,523 @@ +// Copyright 2019-2020 Parity Technologies (UK) Ltd. +// This file is part of Substrate. + +// Substrate is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Substrate is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Substrate. If not, see . + +//! Implementations of the `IntoProtocolsHandler` and `ProtocolsHandler` traits for both incoming +//! and outgoing substreams for all gossiping protocols together. +//! +//! This is the main implementation of `ProtocolsHandler` in this crate, that handles all the +//! protocols that are Substrate-related and outside of the scope of libp2p. +//! +//! # Usage +//! +//! The handler can be in one of the following states: `Initial`, `Enabled`, `Disabled`. +//! +//! The `Initial` state is the state that the handler initially is in. It is a temporary state +//! during which the user must either enable or disable the handler. After that, the handler stays +//! either enabled or disabled. +//! +//! On the wire, we try to open the following substreams: +//! +//! - One substream for each notification protocol passed as parameter to the +//! `NotifsHandlerProto::new` function. +//! - One "legacy" substream used for anything non-related to gossiping, and used as a fallback +//! in case the notification protocol can't be opened. +//! +//! When the handler is in the `Enabled` state, we immediately open and try to maintain all the +//! aforementioned substreams. When the handler is in the `Disabled` state, we immediately close +//! (or abort opening) all these substreams. It is intended that in the future we allow states in +//! which some protocols are open and not others. Symmetrically, we allow incoming +//! Substrate-related substreams if and only if we are in the `Enabled` state. +//! +//! The user has the choice between sending a message with `SendNotification`, to send a +//! notification, and `SendLegacy`, to send any other kind of message. +//! + +use crate::protocol::generic_proto::{ + handler::legacy::{LegacyProtoHandler, LegacyProtoHandlerProto, LegacyProtoHandlerIn, LegacyProtoHandlerOut}, + handler::notif_in::{NotifsInHandlerProto, NotifsInHandler, NotifsInHandlerIn, NotifsInHandlerOut}, + handler::notif_out::{NotifsOutHandlerProto, NotifsOutHandler, NotifsOutHandlerIn, NotifsOutHandlerOut}, + upgrade::{NotificationsIn, NotificationsOut, NotificationsHandshakeError, RegisteredProtocol, UpgradeCollec}, +}; +use crate::protocol::message::generic::{Message as GenericMessage, ConsensusMessage}; + +use bytes::BytesMut; +use codec::Encode as _; +use libp2p::core::{either::{EitherError, EitherOutput}, ConnectedPoint, PeerId}; +use libp2p::core::upgrade::{EitherUpgrade, UpgradeError, SelectUpgrade, InboundUpgrade, OutboundUpgrade}; +use libp2p::swarm::{ + ProtocolsHandler, ProtocolsHandlerEvent, + IntoProtocolsHandler, + KeepAlive, + ProtocolsHandlerUpgrErr, + SubstreamProtocol, + NegotiatedSubstream, +}; +use log::error; +use sp_runtime::ConsensusEngineId; +use std::{borrow::Cow, error, io, task::{Context, Poll}}; + +/// Implements the `IntoProtocolsHandler` trait of libp2p. +/// +/// Every time a connection with a remote starts, an instance of this struct is created and +/// sent to a background task dedicated to this connection. Once the connection is established, +/// it is turned into a [`NotifsHandler`]. +/// +/// See the documentation at the module level for more information. +pub struct NotifsHandlerProto { + /// Prototypes for handlers for inbound substreams. + in_handlers: Vec<(NotifsInHandlerProto, ConsensusEngineId)>, + + /// Prototypes for handlers for outbound substreams. + out_handlers: Vec<(NotifsOutHandlerProto, ConsensusEngineId)>, + + /// Prototype for handler for backwards-compatibility. + legacy: LegacyProtoHandlerProto, +} + +/// The actual handler once the connection has been established. +/// +/// See the documentation at the module level for more information. +pub struct NotifsHandler { + /// Handlers for inbound substreams. + in_handlers: Vec<(NotifsInHandler, ConsensusEngineId)>, + + /// Handlers for outbound substreams. + out_handlers: Vec<(NotifsOutHandler, ConsensusEngineId)>, + + /// Handler for backwards-compatibility. + legacy: LegacyProtoHandler, + + /// State of this handler. + enabled: EnabledState, + + /// If we receive inbound substream requests while in initialization mode, + /// we push the corresponding index here and process them when the handler + /// gets enabled/disabled. + pending_in: Vec, +} + +#[derive(Debug, Clone, PartialEq, Eq)] +enum EnabledState { + Initial, + Enabled, + Disabled, +} + +impl IntoProtocolsHandler for NotifsHandlerProto { + type Handler = NotifsHandler; + + fn inbound_protocol(&self) -> SelectUpgrade, RegisteredProtocol> { + let in_handlers = self.in_handlers.iter() + .map(|(h, _)| h.inbound_protocol()) + .collect::>(); + + SelectUpgrade::new(in_handlers, self.legacy.inbound_protocol()) + } + + fn into_handler(self, remote_peer_id: &PeerId, connected_point: &ConnectedPoint) -> Self::Handler { + NotifsHandler { + in_handlers: self.in_handlers + .into_iter() + .map(|(p, e)| (p.into_handler(remote_peer_id, connected_point), e)) + .collect(), + out_handlers: self.out_handlers + .into_iter() + .map(|(p, e)| (p.into_handler(remote_peer_id, connected_point), e)) + .collect(), + legacy: self.legacy.into_handler(remote_peer_id, connected_point), + enabled: EnabledState::Initial, + pending_in: Vec::new(), + } + } +} + +/// Event that can be received by a `NotifsHandler`. +#[derive(Debug)] +pub enum NotifsHandlerIn { + /// The node should start using custom protocols. + Enable, + + /// The node should stop using custom protocols. + Disable, + + /// Sends a message through the custom protocol substream. + /// + /// > **Note**: This must **not** be an encoded `ConsensusMessage` message. + SendLegacy { + /// The message to send. + message: Vec, + }, + + /// Sends a notifications message. + SendNotification { + /// Name of the protocol for the message. + /// + /// Must match one of the registered protocols. For backwards-compatibility reasons, if + /// the remote doesn't support this protocol, we use the legacy substream to send a + /// `ConsensusMessage` message. + protocol_name: Cow<'static, [u8]>, + + /// The engine ID to use, in case we need to send this message over the legacy substream. + /// + /// > **Note**: Ideally this field wouldn't be necessary, and we would deduce the engine + /// > ID from the existing handlers. However, it is possible (especially in test + /// > situations) that we open connections before all the notification protocols + /// > have been registered, in which case we always rely on the legacy substream. + engine_id: ConsensusEngineId, + + /// The message to send. + message: Vec, + }, +} + +/// Event that can be emitted by a `NotifsHandler`. +#[derive(Debug)] +pub enum NotifsHandlerOut { + /// Opened the substreams with the remote. + Open, + + /// Closed the substreams with the remote. + Closed { + /// Reason why the substream closed, for diagnostic purposes. + reason: Cow<'static, str>, + }, + + /// Received a non-gossiping message on the legacy substream. + CustomMessage { + /// Message that has been received. + /// + /// Keep in mind that this can be a `ConsensusMessage` message, which then contains a + /// notification. + message: BytesMut, + }, + + /// Received a message on a custom protocol substream. + Notification { + /// Engine corresponding to the message. + protocol_name: Cow<'static, [u8]>, + + /// For legacy reasons, the name to use if we had received the message from the legacy + /// substream. + engine_id: ConsensusEngineId, + + /// Message that has been received. + /// + /// If `protocol_name` is `None`, this decodes to a `Message`. If `protocol_name` is `Some`, + /// this is directly a gossiping message. + message: BytesMut, + }, + + /// A substream to the remote is clogged. The send buffer is very large, and we should print + /// a diagnostic message and/or avoid sending more data. + Clogged { + /// Copy of the messages that are within the buffer, for further diagnostic. + messages: Vec>, + }, + + /// An error has happened on the protocol level with this node. + ProtocolError { + /// If true the error is severe, such as a protocol violation. + is_severe: bool, + /// The error that happened. + error: Box, + }, +} + +impl NotifsHandlerProto { + /// Builds a new handler. + pub fn new(legacy: RegisteredProtocol, list: impl Into, ConsensusEngineId, Vec)>>) -> Self { + let list = list.into(); + + NotifsHandlerProto { + in_handlers: list.clone().into_iter().map(|(p, e, _)| (NotifsInHandlerProto::new(p), e)).collect(), + out_handlers: list.clone().into_iter().map(|(p, e, _)| (NotifsOutHandlerProto::new(p), e)).collect(), + legacy: LegacyProtoHandlerProto::new(legacy), + } + } +} + +impl ProtocolsHandler for NotifsHandler { + type InEvent = NotifsHandlerIn; + type OutEvent = NotifsHandlerOut; + type Error = EitherError< + EitherError< + ::Error, + ::Error, + >, + ::Error, + >; + type InboundProtocol = SelectUpgrade, RegisteredProtocol>; + type OutboundProtocol = EitherUpgrade; + // Index within the `out_handlers`; None for legacy + type OutboundOpenInfo = Option; + + fn listen_protocol(&self) -> SubstreamProtocol { + let in_handlers = self.in_handlers.iter() + .map(|h| h.0.listen_protocol().into_upgrade().1) + .collect::>(); + + let proto = SelectUpgrade::new(in_handlers, self.legacy.listen_protocol().into_upgrade().1); + SubstreamProtocol::new(proto) + } + + fn inject_fully_negotiated_inbound( + &mut self, + out: >::Output + ) { + match out { + EitherOutput::First((out, num)) => + self.in_handlers[num].0.inject_fully_negotiated_inbound(out), + EitherOutput::Second(out) => + self.legacy.inject_fully_negotiated_inbound(out), + } + } + + fn inject_fully_negotiated_outbound( + &mut self, + out: >::Output, + num: Self::OutboundOpenInfo + ) { + match (out, num) { + (EitherOutput::First(out), Some(num)) => + self.out_handlers[num].0.inject_fully_negotiated_outbound(out, ()), + (EitherOutput::Second(out), None) => + self.legacy.inject_fully_negotiated_outbound(out, ()), + _ => error!("inject_fully_negotiated_outbound called with wrong parameters"), + } + } + + fn inject_event(&mut self, message: NotifsHandlerIn) { + match message { + NotifsHandlerIn::Enable => { + self.enabled = EnabledState::Enabled; + self.legacy.inject_event(LegacyProtoHandlerIn::Enable); + for (handler, _) in &mut self.out_handlers { + handler.inject_event(NotifsOutHandlerIn::Enable { + initial_message: vec![] + }); + } + for num in self.pending_in.drain(..) { + self.in_handlers[num].0.inject_event(NotifsInHandlerIn::Accept(vec![])); + } + }, + NotifsHandlerIn::Disable => { + self.legacy.inject_event(LegacyProtoHandlerIn::Disable); + // The notifications protocols start in the disabled state. If we were in the + // "Initial" state, then we shouldn't disable the notifications protocols again. + if self.enabled != EnabledState::Initial { + for (handler, _) in &mut self.out_handlers { + handler.inject_event(NotifsOutHandlerIn::Disable); + } + } + self.enabled = EnabledState::Disabled; + for num in self.pending_in.drain(..) { + self.in_handlers[num].0.inject_event(NotifsInHandlerIn::Refuse); + } + }, + NotifsHandlerIn::SendLegacy { message } => + self.legacy.inject_event(LegacyProtoHandlerIn::SendCustomMessage { message }), + NotifsHandlerIn::SendNotification { message, engine_id, protocol_name } => { + for (handler, ngn_id) in &mut self.out_handlers { + if handler.protocol_name() != &protocol_name[..] { + break; + } + + if handler.is_open() { + handler.inject_event(NotifsOutHandlerIn::Send(message)); + return; + } else { + debug_assert_eq!(engine_id, *ngn_id); + } + } + + let message = GenericMessage::<(), (), (), ()>::Consensus(ConsensusMessage { + engine_id, + data: message, + }); + + self.legacy.inject_event(LegacyProtoHandlerIn::SendCustomMessage { + message: message.encode() + }); + }, + } + } + + fn inject_dial_upgrade_error( + &mut self, + num: Option, + err: ProtocolsHandlerUpgrErr> + ) { + match (err, num) { + (ProtocolsHandlerUpgrErr::Timeout, Some(num)) => + self.out_handlers[num].0.inject_dial_upgrade_error( + (), + ProtocolsHandlerUpgrErr::Timeout + ), + (ProtocolsHandlerUpgrErr::Timeout, None) => + self.legacy.inject_dial_upgrade_error((), ProtocolsHandlerUpgrErr::Timeout), + (ProtocolsHandlerUpgrErr::Timer, Some(num)) => + self.out_handlers[num].0.inject_dial_upgrade_error( + (), + ProtocolsHandlerUpgrErr::Timer + ), + (ProtocolsHandlerUpgrErr::Timer, None) => + self.legacy.inject_dial_upgrade_error((), ProtocolsHandlerUpgrErr::Timer), + (ProtocolsHandlerUpgrErr::Upgrade(UpgradeError::Select(err)), Some(num)) => + self.out_handlers[num].0.inject_dial_upgrade_error( + (), + ProtocolsHandlerUpgrErr::Upgrade(UpgradeError::Select(err)) + ), + (ProtocolsHandlerUpgrErr::Upgrade(UpgradeError::Select(err)), None) => + self.legacy.inject_dial_upgrade_error( + (), + ProtocolsHandlerUpgrErr::Upgrade(UpgradeError::Select(err)) + ), + (ProtocolsHandlerUpgrErr::Upgrade(UpgradeError::Apply(EitherError::A(err))), Some(num)) => + self.out_handlers[num].0.inject_dial_upgrade_error( + (), + ProtocolsHandlerUpgrErr::Upgrade(UpgradeError::Apply(err)) + ), + (ProtocolsHandlerUpgrErr::Upgrade(UpgradeError::Apply(EitherError::B(err))), None) => + self.legacy.inject_dial_upgrade_error( + (), + ProtocolsHandlerUpgrErr::Upgrade(UpgradeError::Apply(err)) + ), + _ => error!("inject_dial_upgrade_error called with bad parameters"), + } + } + + fn connection_keep_alive(&self) -> KeepAlive { + // Iterate over each handler and return the maximum value. + + let mut ret = self.legacy.connection_keep_alive(); + if ret.is_yes() { + return KeepAlive::Yes; + } + + for (handler, _) in &self.in_handlers { + let val = handler.connection_keep_alive(); + if val.is_yes() { + return KeepAlive::Yes; + } + if ret < val { ret = val; } + } + + for (handler, _) in &self.out_handlers { + let val = handler.connection_keep_alive(); + if val.is_yes() { + return KeepAlive::Yes; + } + if ret < val { ret = val; } + } + + ret + } + + fn poll( + &mut self, + cx: &mut Context, + ) -> Poll< + ProtocolsHandlerEvent + > { + for (handler_num, (handler, engine_id)) in self.in_handlers.iter_mut().enumerate() { + while let Poll::Ready(ev) = handler.poll(cx) { + match ev { + ProtocolsHandlerEvent::OutboundSubstreamRequest { .. } => + error!("Incoming substream handler tried to open a substream"), + ProtocolsHandlerEvent::Close(err) => void::unreachable(err), + ProtocolsHandlerEvent::Custom(NotifsInHandlerOut::OpenRequest(_)) => + match self.enabled { + EnabledState::Initial => self.pending_in.push(handler_num), + EnabledState::Enabled => + handler.inject_event(NotifsInHandlerIn::Accept(vec![])), + EnabledState::Disabled => + handler.inject_event(NotifsInHandlerIn::Refuse), + }, + ProtocolsHandlerEvent::Custom(NotifsInHandlerOut::Closed) => {}, + ProtocolsHandlerEvent::Custom(NotifsInHandlerOut::Notif(message)) => { + // Note that right now the legacy substream has precedence over + // everything. If it is not open, then we consider that nothing is open. + if self.legacy.is_open() { + let msg = NotifsHandlerOut::Notification { + message, + engine_id: *engine_id, + protocol_name: handler.protocol_name().to_owned().into(), + }; + return Poll::Ready(ProtocolsHandlerEvent::Custom(msg)); + } + }, + } + } + } + + for (handler_num, (handler, _)) in self.out_handlers.iter_mut().enumerate() { + while let Poll::Ready(ev) = handler.poll(cx) { + match ev { + ProtocolsHandlerEvent::OutboundSubstreamRequest { protocol, info: () } => + return Poll::Ready(ProtocolsHandlerEvent::OutboundSubstreamRequest { + protocol: protocol.map_upgrade(EitherUpgrade::A), + info: Some(handler_num), + }), + ProtocolsHandlerEvent::Close(err) => void::unreachable(err), + + // At the moment we don't actually care whether any notifications protocol + // opens or closes. + // Whether our communications with the remote are open or closed entirely + // depends on the legacy substream, because as long as we are open the user of + // this struct might try to send legacy protocol messages which we need to + // deliver for things to work properly. + ProtocolsHandlerEvent::Custom(NotifsOutHandlerOut::Open { .. }) => {}, + ProtocolsHandlerEvent::Custom(NotifsOutHandlerOut::Closed) => {}, + ProtocolsHandlerEvent::Custom(NotifsOutHandlerOut::Refused) => {}, + } + } + } + + while let Poll::Ready(ev) = self.legacy.poll(cx) { + match ev { + ProtocolsHandlerEvent::OutboundSubstreamRequest { protocol, info: () } => + return Poll::Ready(ProtocolsHandlerEvent::OutboundSubstreamRequest { + protocol: protocol.map_upgrade(EitherUpgrade::B), + info: None, + }), + ProtocolsHandlerEvent::Custom(LegacyProtoHandlerOut::CustomProtocolOpen { .. }) => + return Poll::Ready(ProtocolsHandlerEvent::Custom( + NotifsHandlerOut::Open + )), + ProtocolsHandlerEvent::Custom(LegacyProtoHandlerOut::CustomProtocolClosed { reason }) => + return Poll::Ready(ProtocolsHandlerEvent::Custom( + NotifsHandlerOut::Closed { reason } + )), + ProtocolsHandlerEvent::Custom(LegacyProtoHandlerOut::CustomMessage { message }) => + return Poll::Ready(ProtocolsHandlerEvent::Custom( + NotifsHandlerOut::CustomMessage { message } + )), + ProtocolsHandlerEvent::Custom(LegacyProtoHandlerOut::Clogged { messages }) => + return Poll::Ready(ProtocolsHandlerEvent::Custom( + NotifsHandlerOut::Clogged { messages } + )), + ProtocolsHandlerEvent::Custom(LegacyProtoHandlerOut::ProtocolError { is_severe, error }) => + return Poll::Ready(ProtocolsHandlerEvent::Custom( + NotifsHandlerOut::ProtocolError { is_severe, error } + )), + ProtocolsHandlerEvent::Close(err) => + return Poll::Ready(ProtocolsHandlerEvent::Close(EitherError::B(err))), + } + } + + Poll::Pending + } +} diff --git a/client/network/src/protocol/legacy_proto/handler.rs b/client/network/src/protocol/generic_proto/handler/legacy.rs similarity index 90% rename from client/network/src/protocol/legacy_proto/handler.rs rename to client/network/src/protocol/generic_proto/handler/legacy.rs index e3490993dd..a2d2fc9246 100644 --- a/client/network/src/protocol/legacy_proto/handler.rs +++ b/client/network/src/protocol/generic_proto/handler/legacy.rs @@ -14,7 +14,7 @@ // You should have received a copy of the GNU General Public License // along with Substrate. If not, see . -use super::upgrade::{RegisteredProtocol, RegisteredProtocolEvent, RegisteredProtocolSubstream}; +use crate::protocol::generic_proto::upgrade::{RegisteredProtocol, RegisteredProtocolEvent, RegisteredProtocolSubstream}; use bytes::BytesMut; use futures::prelude::*; use futures_timer::Delay; @@ -37,7 +37,7 @@ use std::{pin::Pin, task::{Context, Poll}}; /// /// Every time a connection with a remote starts, an instance of this struct is created and /// sent to a background task dedicated to this connection. Once the connection is established, -/// it is turned into a `CustomProtoHandler`. It then handles all communications that are specific +/// it is turned into a `LegacyProtoHandler`. It then handles all communications that are specific /// to Substrate on that single connection. /// /// Note that there can be multiple instance of this struct simultaneously for same peer. However @@ -87,29 +87,29 @@ use std::{pin::Pin, task::{Context, Poll}}; /// We consider that we are now "closed" if the remote closes all the existing substreams. /// Re-opening it can then be performed by closing all active substream and re-opening one. /// -pub struct CustomProtoHandlerProto { +pub struct LegacyProtoHandlerProto { /// Configuration for the protocol upgrade to negotiate. protocol: RegisteredProtocol, } -impl CustomProtoHandlerProto { - /// Builds a new `CustomProtoHandlerProto`. +impl LegacyProtoHandlerProto { + /// Builds a new `LegacyProtoHandlerProto`. pub fn new(protocol: RegisteredProtocol) -> Self { - CustomProtoHandlerProto { + LegacyProtoHandlerProto { protocol, } } } -impl IntoProtocolsHandler for CustomProtoHandlerProto { - type Handler = CustomProtoHandler; +impl IntoProtocolsHandler for LegacyProtoHandlerProto { + type Handler = LegacyProtoHandler; fn inbound_protocol(&self) -> RegisteredProtocol { self.protocol.clone() } fn into_handler(self, remote_peer_id: &PeerId, connected_point: &ConnectedPoint) -> Self::Handler { - CustomProtoHandler { + LegacyProtoHandler { protocol: self.protocol, endpoint: connected_point.to_endpoint(), remote_peer_id: remote_peer_id.clone(), @@ -123,7 +123,7 @@ impl IntoProtocolsHandler for CustomProtoHandlerProto { } /// The actual handler once the connection has been established. -pub struct CustomProtoHandler { +pub struct LegacyProtoHandler { /// Configuration for the protocol upgrade to negotiate. protocol: RegisteredProtocol, @@ -142,7 +142,7 @@ pub struct CustomProtoHandler { /// /// This queue must only ever be modified to insert elements at the back, or remove the first /// element. - events_queue: SmallVec<[ProtocolsHandlerEvent; 16]>, + events_queue: SmallVec<[ProtocolsHandlerEvent; 16]>, } /// State of the handler. @@ -195,9 +195,9 @@ enum ProtocolState { Poisoned, } -/// Event that can be received by a `CustomProtoHandler`. +/// Event that can be received by a `LegacyProtoHandler`. #[derive(Debug)] -pub enum CustomProtoHandlerIn { +pub enum LegacyProtoHandlerIn { /// The node should start using custom protocols. Enable, @@ -211,9 +211,9 @@ pub enum CustomProtoHandlerIn { }, } -/// Event that can be emitted by a `CustomProtoHandler`. +/// Event that can be emitted by a `LegacyProtoHandler`. #[derive(Debug)] -pub enum CustomProtoHandlerOut { +pub enum LegacyProtoHandlerOut { /// Opened a custom protocol with the remote. CustomProtocolOpen { /// Version of the protocol that has been opened. @@ -248,7 +248,19 @@ pub enum CustomProtoHandlerOut { }, } -impl CustomProtoHandler { +impl LegacyProtoHandler { + /// Returns true if the legacy substream is currently open. + pub fn is_open(&self) -> bool { + match &self.state { + ProtocolState::Init { substreams, .. } => !substreams.is_empty(), + ProtocolState::Opening { .. } => false, + ProtocolState::Normal { substreams, .. } => !substreams.is_empty(), + ProtocolState::Disabled { .. } => false, + ProtocolState::KillAsap => false, + ProtocolState::Poisoned => false, + } + } + /// Enables the handler. fn enable(&mut self) { self.state = match mem::replace(&mut self.state, ProtocolState::Poisoned) { @@ -271,7 +283,7 @@ impl CustomProtoHandler { } } else { - let event = CustomProtoHandlerOut::CustomProtocolOpen { + let event = LegacyProtoHandlerOut::CustomProtocolOpen { version: incoming[0].protocol_version() }; self.events_queue.push(ProtocolsHandlerEvent::Custom(event)); @@ -325,7 +337,7 @@ impl CustomProtoHandler { /// Polls the state for events. Optionally returns an event to produce. #[must_use] fn poll_state(&mut self, cx: &mut Context) - -> Option> { + -> Option> { match mem::replace(&mut self.state, ProtocolState::Poisoned) { ProtocolState::Poisoned => { error!(target: "sub-libp2p", "Handler with {:?} is in poisoned state", @@ -352,7 +364,7 @@ impl CustomProtoHandler { match Pin::new(&mut deadline).poll(cx) { Poll::Ready(()) => { deadline = Delay::new(Duration::from_secs(60)); - let event = CustomProtoHandlerOut::ProtocolError { + let event = LegacyProtoHandlerOut::ProtocolError { is_severe: true, error: "Timeout when opening protocol".to_string().into(), }; @@ -372,7 +384,7 @@ impl CustomProtoHandler { match Pin::new(&mut substream).poll_next(cx) { Poll::Pending => substreams.push(substream), Poll::Ready(Some(Ok(RegisteredProtocolEvent::Message(message)))) => { - let event = CustomProtoHandlerOut::CustomMessage { + let event = LegacyProtoHandlerOut::CustomMessage { message }; substreams.push(substream); @@ -380,7 +392,7 @@ impl CustomProtoHandler { return Some(ProtocolsHandlerEvent::Custom(event)); }, Poll::Ready(Some(Ok(RegisteredProtocolEvent::Clogged { messages }))) => { - let event = CustomProtoHandlerOut::Clogged { + let event = LegacyProtoHandlerOut::Clogged { messages, }; substreams.push(substream); @@ -390,7 +402,7 @@ impl CustomProtoHandler { Poll::Ready(None) => { shutdown.push(substream); if substreams.is_empty() { - let event = CustomProtoHandlerOut::CustomProtocolClosed { + let event = LegacyProtoHandlerOut::CustomProtocolClosed { reason: "All substreams have been closed by the remote".into(), }; self.state = ProtocolState::Disabled { @@ -402,7 +414,7 @@ impl CustomProtoHandler { } Poll::Ready(Some(Err(err))) => { if substreams.is_empty() { - let event = CustomProtoHandlerOut::CustomProtocolClosed { + let event = LegacyProtoHandlerOut::CustomProtocolClosed { reason: format!("Error on the last substream: {:?}", err).into(), }; self.state = ProtocolState::Disabled { @@ -466,7 +478,7 @@ impl CustomProtoHandler { } ProtocolState::Opening { .. } => { - let event = CustomProtoHandlerOut::CustomProtocolOpen { + let event = LegacyProtoHandlerOut::CustomProtocolOpen { version: substream.protocol_version() }; self.events_queue.push(ProtocolsHandlerEvent::Custom(event)); @@ -503,9 +515,9 @@ impl CustomProtoHandler { } } -impl ProtocolsHandler for CustomProtoHandler { - type InEvent = CustomProtoHandlerIn; - type OutEvent = CustomProtoHandlerOut; +impl ProtocolsHandler for LegacyProtoHandler { + type InEvent = LegacyProtoHandlerIn; + type OutEvent = LegacyProtoHandlerOut; type Error = ConnectionKillError; type InboundProtocol = RegisteredProtocol; type OutboundProtocol = RegisteredProtocol; @@ -530,11 +542,11 @@ impl ProtocolsHandler for CustomProtoHandler { self.inject_fully_negotiated(proto); } - fn inject_event(&mut self, message: CustomProtoHandlerIn) { + fn inject_event(&mut self, message: LegacyProtoHandlerIn) { match message { - CustomProtoHandlerIn::Disable => self.disable(), - CustomProtoHandlerIn::Enable => self.enable(), - CustomProtoHandlerIn::SendCustomMessage { message } => + LegacyProtoHandlerIn::Disable => self.disable(), + LegacyProtoHandlerIn::Enable => self.enable(), + LegacyProtoHandlerIn::SendCustomMessage { message } => self.send_message(message), } } @@ -546,7 +558,7 @@ impl ProtocolsHandler for CustomProtoHandler { _ => false, }; - self.events_queue.push(ProtocolsHandlerEvent::Custom(CustomProtoHandlerOut::ProtocolError { + self.events_queue.push(ProtocolsHandlerEvent::Custom(LegacyProtoHandlerOut::ProtocolError { is_severe, error: Box::new(err), })); @@ -587,9 +599,9 @@ impl ProtocolsHandler for CustomProtoHandler { } } -impl fmt::Debug for CustomProtoHandler { +impl fmt::Debug for LegacyProtoHandler { fn fmt(&self, f: &mut fmt::Formatter) -> Result<(), fmt::Error> { - f.debug_struct("CustomProtoHandler") + f.debug_struct("LegacyProtoHandler") .finish() } } diff --git a/client/network/src/protocol/generic_proto/handler/notif_in.rs b/client/network/src/protocol/generic_proto/handler/notif_in.rs new file mode 100644 index 0000000000..4e16fb1af4 --- /dev/null +++ b/client/network/src/protocol/generic_proto/handler/notif_in.rs @@ -0,0 +1,256 @@ +// Copyright 2020 Parity Technologies (UK) Ltd. +// This file is part of Substrate. + +// Substrate is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Substrate is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Substrate. If not, see . + +//! Implementations of the `IntoProtocolsHandler` and `ProtocolsHandler` traits for ingoing +//! substreams for a single gossiping protocol. +//! +//! > **Note**: Each instance corresponds to a single protocol. In order to support multiple +//! > protocols, you need to create multiple instances and group them. +//! + +use crate::protocol::generic_proto::upgrade::{NotificationsIn, NotificationsInSubstream}; +use bytes::BytesMut; +use futures::prelude::*; +use libp2p::core::{ConnectedPoint, PeerId}; +use libp2p::core::upgrade::{DeniedUpgrade, InboundUpgrade, OutboundUpgrade}; +use libp2p::swarm::{ + ProtocolsHandler, ProtocolsHandlerEvent, + IntoProtocolsHandler, + KeepAlive, + ProtocolsHandlerUpgrErr, + SubstreamProtocol, + NegotiatedSubstream, +}; +use log::{error, warn}; +use smallvec::SmallVec; +use std::{borrow::Cow, fmt, pin::Pin, str, task::{Context, Poll}}; + +/// Implements the `IntoProtocolsHandler` trait of libp2p. +/// +/// Every time a connection with a remote starts, an instance of this struct is created and +/// sent to a background task dedicated to this connection. Once the connection is established, +/// it is turned into a [`NotifsInHandler`]. +pub struct NotifsInHandlerProto { + /// Configuration for the protocol upgrade to negotiate. + in_protocol: NotificationsIn, +} + +/// The actual handler once the connection has been established. +pub struct NotifsInHandler { + /// Configuration for the protocol upgrade to negotiate for inbound substreams. + in_protocol: NotificationsIn, + + /// Substream that is open with the remote. + substream: Option>, + + /// If the substream is opened and closed rapidly, we can emit several `OpenRequest` and + /// `Closed` messages in a row without the handler having time to respond with `Accept` or + /// `Refuse`. + /// + /// In order to keep the state consistent, we increment this variable every time an + /// `OpenRequest` is emitted and decrement it every time an `Accept` or `Refuse` is received. + pending_accept_refuses: usize, + + /// Queue of events to send to the outside. + /// + /// This queue is only ever modified to insert elements at the back, or remove the first + /// element. + events_queue: SmallVec<[ProtocolsHandlerEvent; 16]>, +} + +/// Event that can be received by a `NotifsInHandler`. +#[derive(Debug)] +pub enum NotifsInHandlerIn { + /// Can be sent back as a response to an `OpenRequest`. Contains the status message to send + /// to the remote. + /// + /// After sending this to the handler, the substream is now considered open and `Notif` events + /// can be received. + Accept(Vec), + + /// Can be sent back as a response to an `OpenRequest`. + Refuse, +} + +/// Event that can be emitted by a `NotifsInHandler`. +#[derive(Debug)] +pub enum NotifsInHandlerOut { + /// The remote wants to open a substream. Contains the initial message sent by the remote + /// when the substream has been opened. + /// + /// Every time this event is emitted, a corresponding `Accepted` or `Refused` **must** be sent + /// back even if a `Closed` is received. + OpenRequest(Vec), + + /// The notifications substream has been closed by the remote. In order to avoid race + /// conditions, this does **not** cancel any previously-sent `OpenRequest`. + Closed, + + /// Received a message on the notifications substream. + /// + /// Can only happen after an `Accept` and before a `Closed`. + Notif(BytesMut), +} + +impl NotifsInHandlerProto { + /// Builds a new `NotifsInHandlerProto`. + pub fn new( + protocol_name: impl Into> + ) -> Self { + NotifsInHandlerProto { + in_protocol: NotificationsIn::new(protocol_name), + } + } +} + +impl IntoProtocolsHandler for NotifsInHandlerProto { + type Handler = NotifsInHandler; + + fn inbound_protocol(&self) -> NotificationsIn { + self.in_protocol.clone() + } + + fn into_handler(self, _: &PeerId, _: &ConnectedPoint) -> Self::Handler { + NotifsInHandler { + in_protocol: self.in_protocol, + substream: None, + pending_accept_refuses: 0, + events_queue: SmallVec::new(), + } + } +} + +impl NotifsInHandler { + /// Returns the name of the protocol that we accept. + pub fn protocol_name(&self) -> &[u8] { + self.in_protocol.protocol_name() + } +} + +impl ProtocolsHandler for NotifsInHandler { + type InEvent = NotifsInHandlerIn; + type OutEvent = NotifsInHandlerOut; + type Error = void::Void; + type InboundProtocol = NotificationsIn; + type OutboundProtocol = DeniedUpgrade; + type OutboundOpenInfo = (); + + fn listen_protocol(&self) -> SubstreamProtocol { + SubstreamProtocol::new(self.in_protocol.clone()) + } + + fn inject_fully_negotiated_inbound( + &mut self, + (msg, proto): >::Output + ) { + if self.substream.is_some() { + warn!( + target: "sub-libp2p", + "Received duplicate inbound notifications substream for {:?}", + str::from_utf8(self.in_protocol.protocol_name()), + ); + return; + } + + self.substream = Some(proto); + self.events_queue.push(ProtocolsHandlerEvent::Custom(NotifsInHandlerOut::OpenRequest(msg))); + self.pending_accept_refuses = self.pending_accept_refuses + .checked_add(1) + .unwrap_or_else(|| { + error!(target: "sub-libp2p", "Overflow in pending_accept_refuses"); + usize::max_value() + }); + } + + fn inject_fully_negotiated_outbound( + &mut self, + out: >::Output, + _: Self::OutboundOpenInfo + ) { + // We never emit any outgoing substream. + void::unreachable(out) + } + + fn inject_event(&mut self, message: NotifsInHandlerIn) { + self.pending_accept_refuses = match self.pending_accept_refuses.checked_sub(1) { + Some(v) => v, + None => { + error!( + target: "sub-libp2p", + "Inconsistent state: received Accept/Refuse when no pending request exists" + ); + return; + } + }; + + // If we send multiple `OpenRequest`s in a row, we will receive back multiple + // `Accept`/`Refuse` messages. All of them are obsolete except the last one. + if self.pending_accept_refuses != 0 { + return; + } + + match (message, self.substream.as_mut()) { + (NotifsInHandlerIn::Accept(message), Some(sub)) => sub.send_handshake(message), + (NotifsInHandlerIn::Accept(_), None) => {}, + (NotifsInHandlerIn::Refuse, _) => self.substream = None, + } + } + + fn inject_dial_upgrade_error(&mut self, _: (), _: ProtocolsHandlerUpgrErr) { + error!(target: "sub-libp2p", "Received dial upgrade error in inbound-only handler"); + } + + fn connection_keep_alive(&self) -> KeepAlive { + if self.substream.is_some() { + KeepAlive::Yes + } else { + KeepAlive::No + } + } + + fn poll( + &mut self, + cx: &mut Context, + ) -> Poll< + ProtocolsHandlerEvent + > { + // Flush the events queue if necessary. + if !self.events_queue.is_empty() { + let event = self.events_queue.remove(0); + return Poll::Ready(event) + } + + match self.substream.as_mut().map(|s| Stream::poll_next(Pin::new(s), cx)) { + None | Some(Poll::Pending) => {}, + Some(Poll::Ready(Some(Ok(msg)))) => + return Poll::Ready(ProtocolsHandlerEvent::Custom(NotifsInHandlerOut::Notif(msg))), + Some(Poll::Ready(None)) | Some(Poll::Ready(Some(Err(_)))) => { + self.substream = None; + return Poll::Ready(ProtocolsHandlerEvent::Custom(NotifsInHandlerOut::Closed)); + }, + } + + Poll::Pending + } +} + +impl fmt::Debug for NotifsInHandler { + fn fmt(&self, f: &mut fmt::Formatter) -> Result<(), fmt::Error> { + f.debug_struct("NotifsInHandler") + .field("substream_open", &self.substream.is_some()) + .finish() + } +} diff --git a/client/network/src/protocol/generic_proto/handler/notif_out.rs b/client/network/src/protocol/generic_proto/handler/notif_out.rs new file mode 100644 index 0000000000..8c64491d99 --- /dev/null +++ b/client/network/src/protocol/generic_proto/handler/notif_out.rs @@ -0,0 +1,395 @@ +// Copyright 2019-2020 Parity Technologies (UK) Ltd. +// This file is part of Substrate. + +// Substrate is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Substrate is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Substrate. If not, see . + +//! Implementations of the `IntoProtocolsHandler` and `ProtocolsHandler` traits for outgoing +//! substreams of a single gossiping protocol. +//! +//! > **Note**: Each instance corresponds to a single protocol. In order to support multiple +//! > protocols, you need to create multiple instances and group them. +//! + +use crate::protocol::generic_proto::upgrade::{NotificationsOut, NotificationsOutSubstream, NotificationsHandshakeError}; +use futures::prelude::*; +use libp2p::core::{ConnectedPoint, PeerId}; +use libp2p::core::upgrade::{DeniedUpgrade, InboundUpgrade, OutboundUpgrade}; +use libp2p::swarm::{ + ProtocolsHandler, ProtocolsHandlerEvent, + IntoProtocolsHandler, + KeepAlive, + ProtocolsHandlerUpgrErr, + SubstreamProtocol, + NegotiatedSubstream, +}; +use log::error; +use smallvec::SmallVec; +use std::{borrow::Cow, fmt, mem, pin::Pin, task::{Context, Poll}, time::Duration}; +use wasm_timer::Instant; + +/// Maximum duration to open a substream and receive the handshake message. After that, we +/// consider that we failed to open the substream. +const OPEN_TIMEOUT: Duration = Duration::from_secs(10); +/// After successfully establishing a connection with the remote, we keep the connection open for +/// at least this amount of time in order to give the rest of the code the chance to notify us to +/// open substreams. +const INITIAL_KEEPALIVE_TIME: Duration = Duration::from_secs(5); + +/// Implements the `IntoProtocolsHandler` trait of libp2p. +/// +/// Every time a connection with a remote starts, an instance of this struct is created and +/// sent to a background task dedicated to this connection. Once the connection is established, +/// it is turned into a [`NotifsOutHandler`]. +/// +/// See the documentation of [`NotifsOutHandler`] for more information. +pub struct NotifsOutHandlerProto { + /// Name of the protocol to negotiate. + protocol_name: Cow<'static, [u8]>, +} + +impl NotifsOutHandlerProto { + /// Builds a new [`NotifsOutHandlerProto`]. Will use the given protocol name for the + /// notifications substream. + pub fn new(protocol_name: impl Into>) -> Self { + NotifsOutHandlerProto { + protocol_name: protocol_name.into(), + } + } +} + +impl IntoProtocolsHandler for NotifsOutHandlerProto { + type Handler = NotifsOutHandler; + + fn inbound_protocol(&self) -> DeniedUpgrade { + DeniedUpgrade + } + + fn into_handler(self, _: &PeerId, _: &ConnectedPoint) -> Self::Handler { + NotifsOutHandler { + protocol_name: self.protocol_name, + when_connection_open: Instant::now(), + state: State::Disabled, + events_queue: SmallVec::new(), + } + } +} + +/// Handler for an outbound notification substream. +/// +/// When a connection is established, this handler starts in the "disabled" state, meaning that +/// no substream will be open. +/// +/// One can try open a substream by sending an [`NotifsOutHandlerIn::Enable`] message to the +/// handler. Once done, the handler will try to establish then maintain an outbound substream with +/// the remote for the purpose of sending notifications to it. +pub struct NotifsOutHandler { + /// Name of the protocol to negotiate. + protocol_name: Cow<'static, [u8]>, + + /// Relationship with the node we're connected to. + state: State, + + /// When the connection with the remote has been successfully established. + when_connection_open: Instant, + + /// Queue of events to send to the outside. + /// + /// This queue must only ever be modified to insert elements at the back, or remove the first + /// element. + events_queue: SmallVec<[ProtocolsHandlerEvent; 16]>, +} + +/// Our relationship with the node we're connected to. +enum State { + /// The handler is disabled and idle. No substream is open. + Disabled, + + /// The handler is disabled. A substream is still open and needs to be closed. + /// + /// > **Important**: Having this state means that `poll_close` has been called at least once, + /// > but the `Sink` API is unclear about whether or not the stream can then + /// > be recovered. Because of that, we must never switch from the + /// > `DisabledOpen` state to the `Open` state while keeping the same substream. + DisabledOpen(NotificationsOutSubstream), + + /// The handler is disabled but we are still trying to open a substream with the remote. + /// + /// If the handler gets enabled again, we can immediately switch to `Opening`. + DisabledOpening, + + /// The handler is enabled and we are trying to open a substream with the remote. + Opening { + /// The initial message that we sent. Necessary if we need to re-open a substream. + initial_message: Vec, + }, + + /// The handler is enabled. We have tried opening a substream in the past but the remote + /// refused it. + Refused, + + /// The handler is enabled and substream is open. + Open { + /// Substream that is currently open. + substream: NotificationsOutSubstream, + /// The initial message that we sent. Necessary if we need to re-open a substream. + initial_message: Vec, + }, + + /// Poisoned state. Shouldn't be found in the wild. + Poisoned, +} + +/// Event that can be received by a `NotifsOutHandler`. +#[derive(Debug)] +pub enum NotifsOutHandlerIn { + /// Enables the notifications substream for this node. The handler will try to maintain a + /// substream with the remote. + Enable { + /// Initial message to send to remote nodes when we open substreams. + initial_message: Vec, + }, + + /// Disables the notifications substream for this node. This is the default state. + Disable, + + /// Sends a message on the notifications substream. Ignored if the substream isn't open. + /// + /// It is only valid to send this if the notifications substream has been enabled. + Send(Vec), +} + +/// Event that can be emitted by a `NotifsOutHandler`. +#[derive(Debug)] +pub enum NotifsOutHandlerOut { + /// The notifications substream has been accepted by the remote. + Open { + /// Handshake message sent by the remote after we opened the substream. + handshake: Vec, + }, + + /// The notifications substream has been closed by the remote. + Closed, + + /// We tried to open a notifications substream, but the remote refused it. + /// + /// Can only happen if we're in a closed state. + Refused, +} + +impl NotifsOutHandler { + /// Returns true if the substream is currently open. + pub fn is_open(&self) -> bool { + match &self.state { + State::Disabled => false, + State::DisabledOpening => false, + State::DisabledOpen(_) => true, + State::Opening { .. } => false, + State::Refused => false, + State::Open { .. } => true, + State::Poisoned => false, + } + } + + /// Returns the name of the protocol that we negotiate. + pub fn protocol_name(&self) -> &[u8] { + &self.protocol_name + } +} + +impl ProtocolsHandler for NotifsOutHandler { + type InEvent = NotifsOutHandlerIn; + type OutEvent = NotifsOutHandlerOut; + type Error = void::Void; + type InboundProtocol = DeniedUpgrade; + type OutboundProtocol = NotificationsOut; + type OutboundOpenInfo = (); + + fn listen_protocol(&self) -> SubstreamProtocol { + SubstreamProtocol::new(DeniedUpgrade) + } + + fn inject_fully_negotiated_inbound( + &mut self, + proto: >::Output + ) { + // We should never reach here. `proto` is a `Void`. + void::unreachable(proto) + } + + fn inject_fully_negotiated_outbound( + &mut self, + (handshake_msg, substream): >::Output, + _: () + ) { + match mem::replace(&mut self.state, State::Poisoned) { + State::Opening { initial_message } => { + let ev = NotifsOutHandlerOut::Open { handshake: handshake_msg }; + self.events_queue.push(ProtocolsHandlerEvent::Custom(ev)); + self.state = State::Open { substream, initial_message }; + }, + // If the handler was disabled while we were negotiating the protocol, immediately + // close it. + State::DisabledOpening => self.state = State::DisabledOpen(substream), + + // Any other situation should never happen. + State::Disabled | State::Refused | State::Open { .. } | State::DisabledOpen(_) => + error!("State mismatch in notifications handler: substream already open"), + State::Poisoned => error!("Notifications handler in a poisoned state"), + } + } + + fn inject_event(&mut self, message: NotifsOutHandlerIn) { + match message { + NotifsOutHandlerIn::Enable { initial_message } => { + match mem::replace(&mut self.state, State::Poisoned) { + State::Disabled => { + let proto = NotificationsOut::new(self.protocol_name.clone(), initial_message.clone()); + self.events_queue.push(ProtocolsHandlerEvent::OutboundSubstreamRequest { + protocol: SubstreamProtocol::new(proto).with_timeout(OPEN_TIMEOUT), + info: (), + }); + self.state = State::Opening { initial_message }; + }, + State::DisabledOpening => self.state = State::Opening { initial_message }, + State::DisabledOpen(mut sub) => { + // As documented above, in this state we have already called `poll_close` + // once on the substream, and it is unclear whether the substream can then + // be recovered. When in doubt, let's drop the existing substream and + // open a new one. + if sub.close().now_or_never().is_none() { + log::warn!( + target: "sub-libp2p", + "Improperly closed outbound notifications substream" + ); + } + + let proto = NotificationsOut::new(self.protocol_name.clone(), initial_message.clone()); + self.events_queue.push(ProtocolsHandlerEvent::OutboundSubstreamRequest { + protocol: SubstreamProtocol::new(proto).with_timeout(OPEN_TIMEOUT), + info: (), + }); + self.state = State::Opening { initial_message }; + }, + State::Opening { .. } | State::Refused | State::Open { .. } => + error!("Tried to enable notifications handler that was already enabled"), + State::Poisoned => error!("Notifications handler in a poisoned state"), + } + } + + NotifsOutHandlerIn::Disable => { + match mem::replace(&mut self.state, State::Poisoned) { + State::Disabled | State::DisabledOpen(_) | State::DisabledOpening => + error!("Tried to disable notifications handler that was already disabled"), + State::Opening { .. } => self.state = State::DisabledOpening, + State::Refused => self.state = State::Disabled, + State::Open { substream, .. } => self.state = State::DisabledOpen(substream), + State::Poisoned => error!("Notifications handler in a poisoned state"), + } + } + + NotifsOutHandlerIn::Send(msg) => + if let State::Open { substream, .. } = &mut self.state { + if let Some(Ok(_)) = substream.send(msg).now_or_never() { + } else { + log::warn!( + target: "sub-libp2p", + "Failed to push message to queue, dropped it" + ); + } + } else { + // This is an API misuse. + log::warn!( + target: "sub-libp2p", + "Tried to send a notification on a disabled handler" + ); + }, + } + } + + fn inject_dial_upgrade_error(&mut self, _: (), _: ProtocolsHandlerUpgrErr) { + match mem::replace(&mut self.state, State::Poisoned) { + State::Disabled => {}, + State::DisabledOpen(_) | State::Refused | State::Open { .. } => + error!("State mismatch in NotificationsOut"), + State::Opening { .. } => { + self.state = State::Refused; + let ev = NotifsOutHandlerOut::Refused; + self.events_queue.push(ProtocolsHandlerEvent::Custom(ev)); + }, + State::DisabledOpening => self.state = State::Disabled, + State::Poisoned => error!("Notifications handler in a poisoned state"), + } + } + + fn connection_keep_alive(&self) -> KeepAlive { + match self.state { + // We have a small grace period of `INITIAL_KEEPALIVE_TIME` during which we keep the + // connection open no matter what, in order to avoid closing and reopening + // connections all the time. + State::Disabled | State::DisabledOpen(_) | State::DisabledOpening => + KeepAlive::Until(self.when_connection_open + INITIAL_KEEPALIVE_TIME), + State::Opening { .. } | State::Open { .. } => KeepAlive::Yes, + State::Refused | State::Poisoned => KeepAlive::No, + } + } + + fn poll( + &mut self, + cx: &mut Context, + ) -> Poll> { + // Flush the events queue if necessary. + if !self.events_queue.is_empty() { + let event = self.events_queue.remove(0); + return Poll::Ready(event); + } + + match &mut self.state { + State::Open { substream, initial_message } => + match Sink::poll_flush(Pin::new(substream), cx) { + Poll::Pending | Poll::Ready(Ok(())) => {}, + Poll::Ready(Err(_)) => { + // We try to re-open a substream. + let initial_message = mem::replace(initial_message, Vec::new()); + self.state = State::Opening { initial_message: initial_message.clone() }; + let proto = NotificationsOut::new(self.protocol_name.clone(), initial_message); + self.events_queue.push(ProtocolsHandlerEvent::OutboundSubstreamRequest { + protocol: SubstreamProtocol::new(proto).with_timeout(OPEN_TIMEOUT), + info: (), + }); + return Poll::Ready(ProtocolsHandlerEvent::Custom(NotifsOutHandlerOut::Closed)); + } + }, + + State::DisabledOpen(sub) => match Sink::poll_close(Pin::new(sub), cx) { + Poll::Pending => {}, + Poll::Ready(Ok(())) | Poll::Ready(Err(_)) => { + self.state = State::Disabled; + return Poll::Ready(ProtocolsHandlerEvent::Custom(NotifsOutHandlerOut::Closed)); + }, + }, + + _ => {} + } + + Poll::Pending + } +} + +impl fmt::Debug for NotifsOutHandler { + fn fmt(&self, f: &mut fmt::Formatter) -> Result<(), fmt::Error> { + f.debug_struct("NotifsOutHandler") + .field("open", &self.is_open()) + .finish() + } +} diff --git a/client/network/src/protocol/legacy_proto/tests.rs b/client/network/src/protocol/generic_proto/tests.rs similarity index 92% rename from client/network/src/protocol/legacy_proto/tests.rs rename to client/network/src/protocol/generic_proto/tests.rs index 89b0854d90..b331b3c237 100644 --- a/client/network/src/protocol/legacy_proto/tests.rs +++ b/client/network/src/protocol/generic_proto/tests.rs @@ -26,7 +26,7 @@ use libp2p::{PeerId, Multiaddr, Transport}; use rand::seq::SliceRandom; use std::{error, io, task::Context, task::Poll, time::Duration}; use crate::message::Message; -use crate::protocol::legacy_proto::{LegacyProto, LegacyProtoOut}; +use crate::protocol::generic_proto::{GenericProto, GenericProtoOut}; use sp_test_primitives::Block; /// Builds two nodes that have each other as bootstrap nodes. @@ -81,7 +81,7 @@ fn build_nodes() -> (Swarm, Swarm) { }); let behaviour = CustomProtoWithAddr { - inner: LegacyProto::new(&b"test"[..], &[1], peerset), + inner: GenericProto::new(&b"test"[..], &[1], peerset), addrs: addrs .iter() .enumerate() @@ -111,12 +111,12 @@ fn build_nodes() -> (Swarm, Swarm) { /// Wraps around the `CustomBehaviour` network behaviour, and adds hardcoded node addresses to it. struct CustomProtoWithAddr { - inner: LegacyProto, + inner: GenericProto, addrs: Vec<(PeerId, Multiaddr)>, } impl std::ops::Deref for CustomProtoWithAddr { - type Target = LegacyProto; + type Target = GenericProto; fn deref(&self) -> &Self::Target { &self.inner @@ -130,8 +130,8 @@ impl std::ops::DerefMut for CustomProtoWithAddr { } impl NetworkBehaviour for CustomProtoWithAddr { - type ProtocolsHandler = ::ProtocolsHandler; - type OutEvent = ::OutEvent; + type ProtocolsHandler = ::ProtocolsHandler; + type OutEvent = ::OutEvent; fn new_handler(&mut self) -> Self::ProtocolsHandler { self.inner.new_handler() @@ -223,7 +223,7 @@ fn two_nodes_transfer_lots_of_packets() { let fut1 = future::poll_fn(move |cx| -> Poll<()> { loop { match ready!(service1.poll_next_unpin(cx)) { - Some(LegacyProtoOut::CustomProtocolOpen { peer_id, .. }) => { + Some(GenericProtoOut::CustomProtocolOpen { peer_id, .. }) => { for n in 0 .. NUM_PACKETS { service1.send_packet( &peer_id, @@ -240,8 +240,8 @@ fn two_nodes_transfer_lots_of_packets() { let fut2 = future::poll_fn(move |cx| { loop { match ready!(service2.poll_next_unpin(cx)) { - Some(LegacyProtoOut::CustomProtocolOpen { .. }) => {}, - Some(LegacyProtoOut::CustomMessage { message, .. }) => { + Some(GenericProtoOut::CustomProtocolOpen { .. }) => {}, + Some(GenericProtoOut::CustomMessage { message, .. }) => { match Message::::decode(&mut &message[..]).unwrap() { Message::::ChainSpecific(message) => { assert_eq!(message.len(), 1); @@ -285,7 +285,7 @@ fn basic_two_nodes_requests_in_parallel() { let fut1 = future::poll_fn(move |cx| -> Poll<()> { loop { match ready!(service1.poll_next_unpin(cx)) { - Some(LegacyProtoOut::CustomProtocolOpen { peer_id, .. }) => { + Some(GenericProtoOut::CustomProtocolOpen { peer_id, .. }) => { for msg in to_send.drain(..) { service1.send_packet(&peer_id, msg.encode()); } @@ -298,8 +298,8 @@ fn basic_two_nodes_requests_in_parallel() { let fut2 = future::poll_fn(move |cx| { loop { match ready!(service2.poll_next_unpin(cx)) { - Some(LegacyProtoOut::CustomProtocolOpen { .. }) => {}, - Some(LegacyProtoOut::CustomMessage { message, .. }) => { + Some(GenericProtoOut::CustomProtocolOpen { .. }) => {}, + Some(GenericProtoOut::CustomMessage { message, .. }) => { let pos = to_receive.iter().position(|m| m.encode() == message).unwrap(); to_receive.remove(pos); if to_receive.is_empty() { @@ -335,7 +335,7 @@ fn reconnect_after_disconnect() { let mut service1_not_ready = false; match service1.poll_next_unpin(cx) { - Poll::Ready(Some(LegacyProtoOut::CustomProtocolOpen { .. })) => { + Poll::Ready(Some(GenericProtoOut::CustomProtocolOpen { .. })) => { match service1_state { ServiceState::NotConnected => { service1_state = ServiceState::FirstConnec; @@ -347,7 +347,7 @@ fn reconnect_after_disconnect() { ServiceState::FirstConnec | ServiceState::ConnectedAgain => panic!(), } }, - Poll::Ready(Some(LegacyProtoOut::CustomProtocolClosed { .. })) => { + Poll::Ready(Some(GenericProtoOut::CustomProtocolClosed { .. })) => { match service1_state { ServiceState::FirstConnec => service1_state = ServiceState::Disconnected, ServiceState::ConnectedAgain| ServiceState::NotConnected | @@ -359,7 +359,7 @@ fn reconnect_after_disconnect() { } match service2.poll_next_unpin(cx) { - Poll::Ready(Some(LegacyProtoOut::CustomProtocolOpen { .. })) => { + Poll::Ready(Some(GenericProtoOut::CustomProtocolOpen { .. })) => { match service2_state { ServiceState::NotConnected => { service2_state = ServiceState::FirstConnec; @@ -371,7 +371,7 @@ fn reconnect_after_disconnect() { ServiceState::FirstConnec | ServiceState::ConnectedAgain => panic!(), } }, - Poll::Ready(Some(LegacyProtoOut::CustomProtocolClosed { .. })) => { + Poll::Ready(Some(GenericProtoOut::CustomProtocolClosed { .. })) => { match service2_state { ServiceState::FirstConnec => service2_state = ServiceState::Disconnected, ServiceState::ConnectedAgain| ServiceState::NotConnected | diff --git a/client/network/src/protocol/generic_proto/upgrade.rs b/client/network/src/protocol/generic_proto/upgrade.rs new file mode 100644 index 0000000000..36f8263365 --- /dev/null +++ b/client/network/src/protocol/generic_proto/upgrade.rs @@ -0,0 +1,35 @@ +// Copyright 2018-2020 Parity Technologies (UK) Ltd. +// This file is part of Substrate. + +// Substrate is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Substrate is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Substrate. If not, see . + +pub use self::collec::UpgradeCollec; +pub use self::legacy::{ + RegisteredProtocol, + RegisteredProtocolEvent, + RegisteredProtocolName, + RegisteredProtocolSubstream +}; +pub use self::notifications::{ + NotificationsIn, + NotificationsInSubstream, + NotificationsOut, + NotificationsOutSubstream, + NotificationsHandshakeError, + NotificationsOutError, +}; + +mod collec; +mod legacy; +mod notifications; diff --git a/client/network/src/protocol/generic_proto/upgrade/collec.rs b/client/network/src/protocol/generic_proto/upgrade/collec.rs new file mode 100644 index 0000000000..f8d1999749 --- /dev/null +++ b/client/network/src/protocol/generic_proto/upgrade/collec.rs @@ -0,0 +1,97 @@ +// Copyright 2018-2020 Parity Technologies (UK) Ltd. +// +// 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. + +use futures::prelude::*; +use libp2p::core::upgrade::{InboundUpgrade, ProtocolName, UpgradeInfo}; +use std::{iter::FromIterator, pin::Pin, task::{Context, Poll}, vec}; + +// TODO: move this to libp2p => https://github.com/libp2p/rust-libp2p/issues/1445 + +/// Upgrade that combines multiple upgrades of the same type into one. Supports all the protocols +/// supported by either sub-upgrade. +#[derive(Debug, Clone)] +pub struct UpgradeCollec(pub Vec); + +impl From> for UpgradeCollec { + fn from(list: Vec) -> Self { + UpgradeCollec(list) + } +} + +impl FromIterator for UpgradeCollec { + fn from_iter>(iter: I) -> Self { + UpgradeCollec(iter.into_iter().collect()) + } +} + +impl UpgradeInfo for UpgradeCollec { + type Info = ProtoNameWithUsize; + type InfoIter = vec::IntoIter; + + fn protocol_info(&self) -> Self::InfoIter { + self.0.iter().enumerate() + .flat_map(|(n, p)| + p.protocol_info().into_iter().map(move |i| ProtoNameWithUsize(i, n))) + .collect::>() + .into_iter() + } +} + +impl InboundUpgrade for UpgradeCollec +where + T: InboundUpgrade, +{ + type Output = (T::Output, usize); + type Error = (T::Error, usize); + type Future = FutWithUsize; + + fn upgrade_inbound(mut self, sock: C, info: Self::Info) -> Self::Future { + let fut = self.0.remove(info.1).upgrade_inbound(sock, info.0); + FutWithUsize(fut, info.1) + } +} + +/// Groups a `ProtocolName` with a `usize`. +#[derive(Debug, Clone)] +pub struct ProtoNameWithUsize(T, usize); + +impl ProtocolName for ProtoNameWithUsize { + fn protocol_name(&self) -> &[u8] { + self.0.protocol_name() + } +} + +/// Equivalent to `fut.map_ok(|v| (v, num)).map_err(|e| (e, num))`, where `fut` and `num` are +/// the two fields of this struct. +#[pin_project::pin_project] +pub struct FutWithUsize(#[pin] T, usize); + +impl>, O, E> Future for FutWithUsize { + type Output = Result<(O, usize), (E, usize)>; + + fn poll(self: Pin<&mut Self>, cx: &mut Context) -> Poll { + let this = self.project(); + match Future::poll(this.0, cx) { + Poll::Ready(Ok(v)) => Poll::Ready(Ok((v, *this.1))), + Poll::Ready(Err(e)) => Poll::Ready(Err((e, *this.1))), + Poll::Pending => Poll::Pending, + } + } +} diff --git a/client/network/src/protocol/legacy_proto/upgrade.rs b/client/network/src/protocol/generic_proto/upgrade/legacy.rs similarity index 100% rename from client/network/src/protocol/legacy_proto/upgrade.rs rename to client/network/src/protocol/generic_proto/upgrade/legacy.rs diff --git a/client/network/src/protocol/generic_proto/upgrade/notifications.rs b/client/network/src/protocol/generic_proto/upgrade/notifications.rs new file mode 100644 index 0000000000..ddc07b5d6f --- /dev/null +++ b/client/network/src/protocol/generic_proto/upgrade/notifications.rs @@ -0,0 +1,622 @@ +// Copyright 2019-2020 Parity Technologies (UK) Ltd. +// This file is part of Substrate. + +// Substrate is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Substrate is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Substrate. If not, see . + +/// Notifications protocol. +/// +/// The Substrate notifications protocol consists in the following: +/// +/// - Node A opens a substream to node B and sends a message which contains some protocol-specific +/// higher-level logic. This message is prefixed with a variable-length integer message length. +/// This message can be empty, in which case `0` is sent. +/// - If node B accepts the substream, it sends back a message with the same properties. +/// Afterwards, the sending side of B is closed. +/// - If instead B refuses the connection (which typically happens because no empty slot is +/// available), then it immediately closes the substream without sending back anything. +/// - Node A can then send notifications to B, prefixed with a variable-length integer indicating +/// the length of the message. +/// - Node A closes its writing side if it doesn't want the notifications substream anymore. +/// +/// Notification substreams are unidirectional. If A opens a substream with B, then B is +/// encouraged but not required to open a substream to A as well. +/// + +use bytes::BytesMut; +use futures::{prelude::*, ready}; +use futures_codec::Framed; +use libp2p::core::{UpgradeInfo, InboundUpgrade, OutboundUpgrade, upgrade}; +use log::error; +use std::{borrow::Cow, collections::VecDeque, io, iter, mem, pin::Pin, task::{Context, Poll}}; +use unsigned_varint::codec::UviBytes; + +/// Maximum allowed size of the two handshake messages, in bytes. +const MAX_HANDSHAKE_SIZE: usize = 1024; +/// Maximum number of buffered messages before we consider the remote unresponsive and kill the +/// substream. +const MAX_PENDING_MESSAGES: usize = 256; + +/// Upgrade that accepts a substream, sends back a status message, then becomes a unidirectional +/// stream of messages. +#[derive(Debug, Clone)] +pub struct NotificationsIn { + /// Protocol name to use when negotiating the substream. + protocol_name: Cow<'static, [u8]>, +} + +/// Upgrade that opens a substream, waits for the remote to accept by sending back a status +/// message, then becomes a unidirectional sink of data. +#[derive(Debug, Clone)] +pub struct NotificationsOut { + /// Protocol name to use when negotiating the substream. + protocol_name: Cow<'static, [u8]>, + /// Message to send when we start the handshake. + initial_message: Vec, +} + +/// A substream for incoming notification messages. +/// +/// When creating, this struct starts in a state in which we must first send back a handshake +/// message to the remote. No message will come before this has been done. +#[pin_project::pin_project] +pub struct NotificationsInSubstream { + #[pin] + socket: Framed>>>, + handshake: NotificationsInSubstreamHandshake, +} + +/// State of the handshake sending back process. +enum NotificationsInSubstreamHandshake { + /// Waiting for the user to give us the handshake message. + NotSent, + /// User gave us the handshake message. Trying to push it in the socket. + PendingSend(Vec), + /// Handshake message was pushed in the socket. Still need to flush. + Close, + /// Handshake message successfully sent. + Sent, +} + +/// A substream for outgoing notification messages. +#[pin_project::pin_project] +pub struct NotificationsOutSubstream { + /// Substream where to send messages. + #[pin] + socket: Framed>>>, + /// Queue of messages waiting to be sent. + messages_queue: VecDeque>, + /// If true, we need to flush `socket`. + need_flush: bool, +} + +impl NotificationsIn { + /// Builds a new potential upgrade. + pub fn new(protocol_name: impl Into>) -> Self { + NotificationsIn { + protocol_name: protocol_name.into(), + } + } + + /// Returns the name of the protocol that we accept. + pub fn protocol_name(&self) -> &[u8] { + &self.protocol_name + } +} + +impl UpgradeInfo for NotificationsIn { + type Info = Cow<'static, [u8]>; + type InfoIter = iter::Once; + + fn protocol_info(&self) -> Self::InfoIter { + iter::once(self.protocol_name.clone()) + } +} + +impl InboundUpgrade for NotificationsIn +where TSubstream: AsyncRead + AsyncWrite + Unpin + Send + 'static, +{ + type Output = (Vec, NotificationsInSubstream); + type Future = Pin> + Send>>; + type Error = NotificationsHandshakeError; + + fn upgrade_inbound( + self, + mut socket: TSubstream, + _: Self::Info, + ) -> Self::Future { + Box::pin(async move { + let initial_message_len = unsigned_varint::aio::read_usize(&mut socket).await?; + if initial_message_len > MAX_HANDSHAKE_SIZE { + return Err(NotificationsHandshakeError::TooLarge { + requested: initial_message_len, + max: MAX_HANDSHAKE_SIZE, + }); + } + + let mut initial_message = vec![0u8; initial_message_len]; + if !initial_message.is_empty() { + socket.read(&mut initial_message).await?; + } + + let substream = NotificationsInSubstream { + socket: Framed::new(socket, UviBytes::default()), + handshake: NotificationsInSubstreamHandshake::NotSent, + }; + + Ok((initial_message, substream)) + }) + } +} + +impl NotificationsInSubstream +where TSubstream: AsyncRead + AsyncWrite, +{ + /// Sends the handshake in order to inform the remote that we accept the substream. + pub fn send_handshake(&mut self, message: impl Into>) { + match self.handshake { + NotificationsInSubstreamHandshake::NotSent => {} + _ => { + error!(target: "sub-libp2p", "Tried to send handshake twice"); + return; + } + } + + self.handshake = NotificationsInSubstreamHandshake::PendingSend(message.into()); + } +} + +impl Stream for NotificationsInSubstream +where TSubstream: AsyncRead + AsyncWrite + Unpin, +{ + type Item = Result; + + fn poll_next(self: Pin<&mut Self>, cx: &mut Context) -> Poll> { + let mut this = self.project(); + + // This `Stream` implementation first tries to send back the handshake if necessary. + loop { + match mem::replace(this.handshake, NotificationsInSubstreamHandshake::Sent) { + NotificationsInSubstreamHandshake::Sent => + return Stream::poll_next(this.socket.as_mut(), cx), + NotificationsInSubstreamHandshake::NotSent => + return Poll::Pending, + NotificationsInSubstreamHandshake::PendingSend(msg) => + match Sink::poll_ready(this.socket.as_mut(), cx) { + Poll::Ready(_) => { + *this.handshake = NotificationsInSubstreamHandshake::Close; + match Sink::start_send(this.socket.as_mut(), io::Cursor::new(msg)) { + Ok(()) => {}, + Err(err) => return Poll::Ready(Some(Err(err))), + } + }, + Poll::Pending => + *this.handshake = NotificationsInSubstreamHandshake::PendingSend(msg), + }, + NotificationsInSubstreamHandshake::Close => + match Sink::poll_close(this.socket.as_mut(), cx)? { + Poll::Ready(()) => + *this.handshake = NotificationsInSubstreamHandshake::Sent, + Poll::Pending => + *this.handshake = NotificationsInSubstreamHandshake::Close, + }, + } + } + } +} + +impl NotificationsOut { + /// Builds a new potential upgrade. + pub fn new(protocol_name: impl Into>, initial_message: impl Into>) -> Self { + let initial_message = initial_message.into(); + if initial_message.len() > MAX_HANDSHAKE_SIZE { + error!(target: "sub-libp2p", "Outbound networking handshake is above allowed protocol limit"); + } + + NotificationsOut { + protocol_name: protocol_name.into(), + initial_message, + } + } +} + +impl UpgradeInfo for NotificationsOut { + type Info = Cow<'static, [u8]>; + type InfoIter = iter::Once; + + fn protocol_info(&self) -> Self::InfoIter { + iter::once(self.protocol_name.clone()) + } +} + +impl OutboundUpgrade for NotificationsOut +where TSubstream: AsyncRead + AsyncWrite + Unpin + Send + 'static, +{ + type Output = (Vec, NotificationsOutSubstream); + type Future = Pin> + Send>>; + type Error = NotificationsHandshakeError; + + fn upgrade_outbound( + self, + mut socket: TSubstream, + _: Self::Info, + ) -> Self::Future { + Box::pin(async move { + upgrade::write_with_len_prefix(&mut socket, &self.initial_message).await?; + + // Reading handshake. + let handshake_len = unsigned_varint::aio::read_usize(&mut socket).await?; + if handshake_len > MAX_HANDSHAKE_SIZE { + return Err(NotificationsHandshakeError::TooLarge { + requested: handshake_len, + max: MAX_HANDSHAKE_SIZE, + }); + } + + let mut handshake = vec![0u8; handshake_len]; + if !handshake.is_empty() { + socket.read(&mut handshake).await?; + } + + Ok((handshake, NotificationsOutSubstream { + socket: Framed::new(socket, UviBytes::default()), + messages_queue: VecDeque::with_capacity(MAX_PENDING_MESSAGES), + need_flush: false, + })) + }) + } +} + +impl Sink> for NotificationsOutSubstream + where TSubstream: AsyncRead + AsyncWrite + Unpin, +{ + type Error = NotificationsOutError; + + fn poll_ready(self: Pin<&mut Self>, _: &mut Context) -> Poll> { + Poll::Ready(Ok(())) + } + + fn start_send(mut self: Pin<&mut Self>, item: Vec) -> Result<(), Self::Error> { + if self.messages_queue.len() >= MAX_PENDING_MESSAGES { + return Err(NotificationsOutError::Clogged); + } + + self.messages_queue.push_back(item); + Ok(()) + } + + fn poll_flush(self: Pin<&mut Self>, cx: &mut Context) -> Poll> { + let mut this = self.project(); + + while !this.messages_queue.is_empty() { + match Sink::poll_ready(this.socket.as_mut(), cx) { + Poll::Ready(Err(err)) => return Poll::Ready(Err(From::from(err))), + Poll::Ready(Ok(())) => { + let msg = this.messages_queue.pop_front() + .expect("checked for !is_empty above; qed"); + Sink::start_send(this.socket.as_mut(), io::Cursor::new(msg))?; + *this.need_flush = true; + }, + Poll::Pending => return Poll::Pending, + } + } + + if *this.need_flush { + match Sink::poll_flush(this.socket.as_mut(), cx) { + Poll::Ready(Err(err)) => return Poll::Ready(Err(From::from(err))), + Poll::Ready(Ok(())) => *this.need_flush = false, + Poll::Pending => return Poll::Pending, + } + } + + Poll::Ready(Ok(())) + } + + fn poll_close(mut self: Pin<&mut Self>, cx: &mut Context) -> Poll> { + ready!(Sink::poll_flush(self.as_mut(), cx))?; + let this = self.project(); + match Sink::poll_close(this.socket, cx) { + Poll::Ready(Ok(())) => Poll::Ready(Ok(())), + Poll::Ready(Err(err)) => Poll::Ready(Err(From::from(err))), + Poll::Pending => Poll::Pending, + } + } +} + +/// Error generated by sending on a notifications out substream. +#[derive(Debug, derive_more::From, derive_more::Display)] +pub enum NotificationsHandshakeError { + /// I/O error on the substream. + Io(io::Error), + + /// Initial message or handshake was too large. + #[display(fmt = "Initial message or handshake was too large: {}", requested)] + TooLarge { + /// Size requested by the remote. + requested: usize, + /// Maximum allowed, + max: usize, + }, + + /// Error while decoding the variable-length integer. + VarintDecode(unsigned_varint::decode::Error), +} + +impl From for NotificationsHandshakeError { + fn from(err: unsigned_varint::io::ReadError) -> Self { + match err { + unsigned_varint::io::ReadError::Io(err) => NotificationsHandshakeError::Io(err), + unsigned_varint::io::ReadError::Decode(err) => NotificationsHandshakeError::VarintDecode(err), + _ => { + log::warn!("Unrecognized varint decoding error"); + NotificationsHandshakeError::Io(From::from(io::ErrorKind::InvalidData)) + } + } + } +} + +/// Error generated by sending on a notifications out substream. +#[derive(Debug, derive_more::From, derive_more::Display)] +pub enum NotificationsOutError { + /// I/O error on the substream. + Io(io::Error), + + /// Remote doesn't process our messages quickly enough. + /// + /// > **Note**: This is not necessarily the remote's fault, and could also be caused by the + /// > local node sending data too quickly. Properly doing back-pressure, however, + /// > would require a deep refactoring effort in Substrate as a whole. + Clogged, +} + +#[cfg(test)] +mod tests { + use super::{NotificationsIn, NotificationsOut}; + + use async_std::net::{TcpListener, TcpStream}; + use futures::{prelude::*, channel::oneshot}; + use libp2p::core::upgrade; + use std::pin::Pin; + + #[test] + fn basic_works() { + const PROTO_NAME: &'static [u8] = b"/test/proto/1"; + let (listener_addr_tx, listener_addr_rx) = oneshot::channel(); + + let client = async_std::task::spawn(async move { + let socket = TcpStream::connect(listener_addr_rx.await.unwrap()).await.unwrap(); + let (handshake, mut substream) = upgrade::apply_outbound( + socket, + NotificationsOut::new(PROTO_NAME, &b"initial message"[..]), + upgrade::Version::V1 + ).await.unwrap(); + + assert_eq!(handshake, b"hello world"); + substream.send(b"test message".to_vec()).await.unwrap(); + }); + + async_std::task::block_on(async move { + let listener = TcpListener::bind("127.0.0.1:0").await.unwrap(); + listener_addr_tx.send(listener.local_addr().unwrap()).unwrap(); + + let (socket, _) = listener.accept().await.unwrap(); + let (initial_message, mut substream) = upgrade::apply_inbound( + socket, + NotificationsIn::new(PROTO_NAME) + ).await.unwrap(); + + assert_eq!(initial_message, b"initial message"); + substream.send_handshake(&b"hello world"[..]); + + let msg = substream.next().await.unwrap().unwrap(); + assert_eq!(msg.as_ref(), b"test message"); + }); + + async_std::task::block_on(client); + } + + #[test] + fn empty_handshake() { + // Check that everything still works when the handshake messages are empty. + + const PROTO_NAME: &'static [u8] = b"/test/proto/1"; + let (listener_addr_tx, listener_addr_rx) = oneshot::channel(); + + let client = async_std::task::spawn(async move { + let socket = TcpStream::connect(listener_addr_rx.await.unwrap()).await.unwrap(); + let (handshake, mut substream) = upgrade::apply_outbound( + socket, + NotificationsOut::new(PROTO_NAME, vec![]), + upgrade::Version::V1 + ).await.unwrap(); + + assert!(handshake.is_empty()); + substream.send(Default::default()).await.unwrap(); + }); + + async_std::task::block_on(async move { + let listener = TcpListener::bind("127.0.0.1:0").await.unwrap(); + listener_addr_tx.send(listener.local_addr().unwrap()).unwrap(); + + let (socket, _) = listener.accept().await.unwrap(); + let (initial_message, mut substream) = upgrade::apply_inbound( + socket, + NotificationsIn::new(PROTO_NAME) + ).await.unwrap(); + + assert!(initial_message.is_empty()); + substream.send_handshake(vec![]); + + let msg = substream.next().await.unwrap().unwrap(); + assert!(msg.as_ref().is_empty()); + }); + + async_std::task::block_on(client); + } + + #[test] + fn refused() { + const PROTO_NAME: &'static [u8] = b"/test/proto/1"; + let (listener_addr_tx, listener_addr_rx) = oneshot::channel(); + + let client = async_std::task::spawn(async move { + let socket = TcpStream::connect(listener_addr_rx.await.unwrap()).await.unwrap(); + let outcome = upgrade::apply_outbound( + socket, + NotificationsOut::new(PROTO_NAME, &b"hello"[..]), + upgrade::Version::V1 + ).await; + + // Despite the protocol negotiation being successfully conducted on the listener + // side, we have to receive an error here because the listener didn't send the + // handshake. + assert!(outcome.is_err()); + }); + + async_std::task::block_on(async move { + let listener = TcpListener::bind("127.0.0.1:0").await.unwrap(); + listener_addr_tx.send(listener.local_addr().unwrap()).unwrap(); + + let (socket, _) = listener.accept().await.unwrap(); + let (initial_msg, substream) = upgrade::apply_inbound( + socket, + NotificationsIn::new(PROTO_NAME) + ).await.unwrap(); + + assert_eq!(initial_msg, b"hello"); + + // We successfully upgrade to the protocol, but then close the substream. + drop(substream); + }); + + async_std::task::block_on(client); + } + + #[test] + fn large_initial_message_refused() { + const PROTO_NAME: &'static [u8] = b"/test/proto/1"; + let (listener_addr_tx, listener_addr_rx) = oneshot::channel(); + + let client = async_std::task::spawn(async move { + let socket = TcpStream::connect(listener_addr_rx.await.unwrap()).await.unwrap(); + let ret = upgrade::apply_outbound( + socket, + // We check that an initial message that is too large gets refused. + NotificationsOut::new(PROTO_NAME, (0..32768).map(|_| 0).collect::>()), + upgrade::Version::V1 + ).await; + assert!(ret.is_err()); + }); + + async_std::task::block_on(async move { + let listener = TcpListener::bind("127.0.0.1:0").await.unwrap(); + listener_addr_tx.send(listener.local_addr().unwrap()).unwrap(); + + let (socket, _) = listener.accept().await.unwrap(); + let ret = upgrade::apply_inbound( + socket, + NotificationsIn::new(PROTO_NAME) + ).await; + assert!(ret.is_err()); + }); + + async_std::task::block_on(client); + } + + #[test] + fn large_handshake_refused() { + const PROTO_NAME: &'static [u8] = b"/test/proto/1"; + let (listener_addr_tx, listener_addr_rx) = oneshot::channel(); + + let client = async_std::task::spawn(async move { + let socket = TcpStream::connect(listener_addr_rx.await.unwrap()).await.unwrap(); + let ret = upgrade::apply_outbound( + socket, + NotificationsOut::new(PROTO_NAME, &b"initial message"[..]), + upgrade::Version::V1 + ).await; + assert!(ret.is_err()); + }); + + async_std::task::block_on(async move { + let listener = TcpListener::bind("127.0.0.1:0").await.unwrap(); + listener_addr_tx.send(listener.local_addr().unwrap()).unwrap(); + + let (socket, _) = listener.accept().await.unwrap(); + let (initial_message, mut substream) = upgrade::apply_inbound( + socket, + NotificationsIn::new(PROTO_NAME) + ).await.unwrap(); + assert_eq!(initial_message, b"initial message"); + + // We check that a handshake that is too large gets refused. + substream.send_handshake((0..32768).map(|_| 0).collect::>()); + let _ = substream.next().await; + }); + + async_std::task::block_on(client); + } + + #[test] + fn buffer_is_full_closes_connection() { + const PROTO_NAME: &'static [u8] = b"/test/proto/1"; + let (listener_addr_tx, listener_addr_rx) = oneshot::channel(); + + let client = async_std::task::spawn(async move { + let socket = TcpStream::connect(listener_addr_rx.await.unwrap()).await.unwrap(); + let (handshake, mut substream) = upgrade::apply_outbound( + socket, + NotificationsOut::new(PROTO_NAME, vec![]), + upgrade::Version::V1 + ).await.unwrap(); + + assert!(handshake.is_empty()); + + // Push an item and flush so that the test works. + substream.send(b"hello world".to_vec()).await.unwrap(); + + for _ in 0..32768 { + // Push an item on the sink without flushing until an error happens because the + // buffer is full. + let message = b"hello world!".to_vec(); + if future::poll_fn(|cx| Sink::poll_ready(Pin::new(&mut substream), cx)).await.is_err() { + return Ok(()); + } + if Sink::start_send(Pin::new(&mut substream), message).is_err() { + return Ok(()); + } + } + + Err(()) + }); + + async_std::task::block_on(async move { + let listener = TcpListener::bind("127.0.0.1:0").await.unwrap(); + listener_addr_tx.send(listener.local_addr().unwrap()).unwrap(); + + let (socket, _) = listener.accept().await.unwrap(); + let (initial_message, mut substream) = upgrade::apply_inbound( + socket, + NotificationsIn::new(PROTO_NAME) + ).await.unwrap(); + + assert!(initial_message.is_empty()); + substream.send_handshake(vec![]); + + // Process one message so that the handshake and all works. + let _ = substream.next().await.unwrap().unwrap(); + + client.await.unwrap(); + }); + } +} diff --git a/client/network/src/service.rs b/client/network/src/service.rs index 5674d841b3..26facd98af 100644 --- a/client/network/src/service.rs +++ b/client/network/src/service.rs @@ -25,7 +25,7 @@ //! The methods of the [`NetworkService`] are implemented by sending a message over a channel, //! which is then processed by [`NetworkWorker::poll`]. -use std::{collections::{HashMap, HashSet}, fs, marker::PhantomData, io, path::Path}; +use std::{borrow::Cow, collections::{HashMap, HashSet}, fs, marker::PhantomData, io, path::Path}; use std::sync::{Arc, atomic::{AtomicBool, AtomicUsize, Ordering}}; use std::pin::Pin; use std::task::Poll; @@ -490,9 +490,11 @@ impl, H: ExHashT> NetworkServic pub fn register_notifications_protocol( &self, engine_id: ConsensusEngineId, + protocol_name: impl Into>, ) { let _ = self.to_worker.unbounded_send(ServiceToWorkerMsg::RegisterNotifProtocol { engine_id, + protocol_name: protocol_name.into(), }); } @@ -710,6 +712,7 @@ enum ServiceToWorkerMsg> { }, RegisterNotifProtocol { engine_id: ConsensusEngineId, + protocol_name: Cow<'static, [u8]>, }, DisconnectPeer(PeerId), } @@ -791,8 +794,8 @@ impl, H: ExHashT> Future for Ne this.event_streams.push(sender), ServiceToWorkerMsg::WriteNotification { message, engine_id, target } => this.network_service.user_protocol_mut().write_notification(target, engine_id, message), - ServiceToWorkerMsg::RegisterNotifProtocol { engine_id } => { - let events = this.network_service.user_protocol_mut().register_notifications_protocol(engine_id); + ServiceToWorkerMsg::RegisterNotifProtocol { engine_id, protocol_name } => { + let events = this.network_service.user_protocol_mut().register_notifications_protocol(engine_id, protocol_name); for event in events { this.event_streams.retain(|sender| sender.unbounded_send(event.clone()).is_ok()); } -- GitLab From 32c08d40cfcdad731cbb49b662eeb6b33f93926e Mon Sep 17 00:00:00 2001 From: Arkadiy Paronyan Date: Fri, 21 Feb 2020 11:47:02 +0100 Subject: [PATCH 024/301] Wait for RPC server to cleanup on shutdown (#5004) --- client/service/src/lib.rs | 28 ++++++++++++++++++++++++++-- 1 file changed, 26 insertions(+), 2 deletions(-) diff --git a/client/service/src/lib.rs b/client/service/src/lib.rs index c45d44dfca..8c5d5decca 100644 --- a/client/service/src/lib.rs +++ b/client/service/src/lib.rs @@ -534,6 +534,30 @@ impl Drop for } } +#[cfg(not(target_os = "unknown"))] +// Wrapper for HTTP and WS servers that makes sure they are properly shut down. +mod waiting { + pub struct HttpServer(pub Option); + impl Drop for HttpServer { + fn drop(&mut self) { + if let Some(server) = self.0.take() { + server.close_handle().close(); + server.wait(); + } + } + } + + pub struct WsServer(pub Option); + impl Drop for WsServer { + fn drop(&mut self) { + if let Some(server) = self.0.take() { + server.close_handle().close(); + let _ = server.wait(); + } + } + } +} + /// Starts RPC servers that run in their own thread, and returns an opaque object that keeps them alive. #[cfg(not(target_os = "unknown"))] fn start_rpc_servers sc_rpc_server::RpcHandler>( @@ -562,7 +586,7 @@ fn start_rpc_servers sc_rpc_server::RpcHandler sc_rpc_server::RpcHandler Date: Fri, 21 Feb 2020 12:13:16 +0100 Subject: [PATCH 025/301] Removes use of sc_client::Client from sc_consensus_babe (#5014) * removes use of sc_client::Client from sc_consensus_babe * Update client/consensus/babe/src/lib.rs Co-authored-by: Benjamin Kampmann --- bin/node/cli/src/service.rs | 6 +- client/consensus/babe/rpc/src/lib.rs | 1 - client/consensus/babe/src/lib.rs | 119 +++++++++++---------------- client/consensus/babe/src/tests.rs | 10 +-- 4 files changed, 50 insertions(+), 86 deletions(-) diff --git a/bin/node/cli/src/service.rs b/bin/node/cli/src/service.rs index c60e150a4f..1dc5a061a3 100644 --- a/bin/node/cli/src/service.rs +++ b/bin/node/cli/src/service.rs @@ -79,7 +79,6 @@ macro_rules! new_full_start { sc_consensus_babe::Config::get_or_compute(&*client)?, grandpa_block_import, client.clone(), - client.clone(), )?; let import_queue = sc_consensus_babe::import_queue( @@ -87,7 +86,6 @@ macro_rules! new_full_start { block_import.clone(), Some(Box::new(justification_import)), None, - client.clone(), client, inherent_data_providers.clone(), )?; @@ -337,7 +335,6 @@ pub fn new_light(config: NodeConfiguration) sc_consensus_babe::Config::get_or_compute(&*client)?, grandpa_block_import, client.clone(), - client.clone(), )?; let import_queue = sc_consensus_babe::import_queue( @@ -346,7 +343,6 @@ pub fn new_light(config: NodeConfiguration) None, Some(Box::new(finality_proof_import)), client.clone(), - client, inherent_data_providers.clone(), )?; @@ -495,7 +491,7 @@ mod tests { |config| { let mut setup_handles = None; new_full!(config, | - block_import: &sc_consensus_babe::BabeBlockImport<_, _, Block, _, _, _>, + block_import: &sc_consensus_babe::BabeBlockImport, babe_link: &sc_consensus_babe::BabeLink, | { setup_handles = Some((block_import.clone(), babe_link.clone())); diff --git a/client/consensus/babe/rpc/src/lib.rs b/client/consensus/babe/rpc/src/lib.rs index 033a7d6b98..1ea7e423dc 100644 --- a/client/consensus/babe/rpc/src/lib.rs +++ b/client/consensus/babe/rpc/src/lib.rs @@ -230,7 +230,6 @@ mod tests { config.clone(), client.clone(), client.clone(), - client.clone(), ).expect("can initialize block-import"); let epoch_changes = link.epoch_changes().clone(); diff --git a/client/consensus/babe/src/lib.rs b/client/consensus/babe/src/lib.rs index e04e112d7d..000642fec4 100644 --- a/client/consensus/babe/src/lib.rs +++ b/client/consensus/babe/src/lib.rs @@ -93,12 +93,9 @@ use sp_consensus_babe::inherents::BabeInherentData; use sp_timestamp::{TimestampInherentData, InherentType as TimestampInherent}; use sp_consensus::import_queue::{Verifier, BasicQueue, CacheKeyId}; use sc_client_api::{ - backend::{AuxStore, Backend}, - call_executor::CallExecutor, + backend::AuxStore, BlockchainEvents, ProvideUncles, }; -use sc_client::Client; - use sp_block_builder::BlockBuilder as BlockBuilderApi; use futures::prelude::*; @@ -655,27 +652,28 @@ impl BabeLink { } /// A verifier for Babe blocks. -pub struct BabeVerifier { - client: Arc>, - api: Arc, +pub struct BabeVerifier { + client: Arc, inherent_data_providers: sp_inherents::InherentDataProviders, config: Config, epoch_changes: SharedEpochChanges, time_source: TimeSource, } -impl BabeVerifier { +impl BabeVerifier + where + Block: BlockT, + Client: HeaderBackend + HeaderMetadata + ProvideRuntimeApi, + Client::Api: BlockBuilderApi, +{ fn check_inherents( &self, block: Block, block_id: BlockId, inherent_data: InherentData, ) -> Result<(), Error> - where - PRA: ProvideRuntimeApi, - PRA::Api: BlockBuilderApi { - let inherent_res = self.api.runtime_api().check_inherents( + let inherent_res = self.client.runtime_api().check_inherents( &block_id, block, inherent_data, @@ -693,14 +691,11 @@ impl BabeVerifier { } } -impl Verifier for BabeVerifier where +impl Verifier for BabeVerifier where Block: BlockT, - B: Backend + 'static, - E: CallExecutor + 'static + Clone + Send + Sync, - RA: Send + Sync, - PRA: ProvideRuntimeApi + Send + Sync + AuxStore + ProvideCache, - PRA::Api: BlockBuilderApi - + BabeApi, + Client: HeaderMetadata + HeaderBackend + ProvideRuntimeApi + + Send + Sync + AuxStore + ProvideCache, + Client::Api: BlockBuilderApi + BabeApi, { fn verify( &mut self, @@ -769,7 +764,7 @@ impl Verifier for BabeVerifier { +pub struct BabeBlockImport { inner: I, - client: Arc>, - api: Arc, + client: Arc, epoch_changes: SharedEpochChanges, config: Config, } -impl Clone for BabeBlockImport { +impl Clone for BabeBlockImport { fn clone(&self) -> Self { BabeBlockImport { inner: self.inner.clone(), client: self.client.clone(), - api: self.api.clone(), epoch_changes: self.epoch_changes.clone(), config: self.config.clone(), } } } -impl BabeBlockImport { +impl BabeBlockImport { fn new( - client: Arc>, - api: Arc, + client: Arc, epoch_changes: SharedEpochChanges, block_import: I, config: Config, ) -> Self { BabeBlockImport { client, - api, inner: block_import, epoch_changes, config, @@ -895,19 +886,16 @@ impl BabeBlockImport { } } -impl BlockImport for BabeBlockImport where +impl BlockImport for BabeBlockImport where Block: BlockT, - I: BlockImport> + Send + Sync, - I::Error: Into, - B: Backend + 'static, - E: CallExecutor + 'static + Clone + Send + Sync, - Client: AuxStore, - RA: Send + Sync, - PRA: ProvideRuntimeApi + ProvideCache, - PRA::Api: BabeApi + ApiExt, + Inner: BlockImport> + Send + Sync, + Inner::Error: Into, + Client: HeaderBackend + HeaderMetadata + + AuxStore + ProvideRuntimeApi + ProvideCache + Send + Sync, + Client::Api: BabeApi + ApiExt, { type Error = ConsensusError; - type Transaction = sp_api::TransactionFor; + type Transaction = sp_api::TransactionFor; fn import_block( &mut self, @@ -931,7 +919,7 @@ impl BlockImport for BabeBlockImport::ParentUnavailable(parent_hash, hash) @@ -1003,7 +991,7 @@ impl BlockImport for BabeBlockImport BlockImport for BabeBlockImport BlockImport for BabeBlockImport( - client: &Client, +fn prune_finalized( + client: Arc, epoch_changes: &mut EpochChangesFor, ) -> Result<(), ConsensusError> where Block: BlockT, - E: CallExecutor + Send + Sync, - B: Backend, - RA: Send + Sync, + Client: HeaderBackend + HeaderMetadata, { - let info = client.chain_info(); + let info = client.info(); let finalized_slot = { - let finalized_header = client.header(&BlockId::Hash(info.finalized_hash)) + let finalized_header = client.header(BlockId::Hash(info.finalized_hash)) .map_err(|e| ConsensusError::ClientImport(format!("{:?}", e)))? .expect("best finalized hash was given by client; \ finalized headers must exist in db; qed"); @@ -1147,16 +1133,12 @@ fn prune_finalized( /// /// Also returns a link object used to correctly instantiate the import queue /// and background worker. -pub fn block_import( +pub fn block_import( config: Config, wrapped_block_import: I, - client: Arc>, - api: Arc, -) -> ClientResult<(BabeBlockImport, BabeLink)> where - B: Backend, - E: CallExecutor + Send + Sync, - RA: Send + Sync, - Client: AuxStore, + client: Arc, +) -> ClientResult<(BabeBlockImport, BabeLink)> where + Client: AuxStore + HeaderBackend + HeaderMetadata, { let epoch_changes = aux_schema::load_epoch_changes::(&*client)?; let link = BabeLink { @@ -1169,13 +1151,12 @@ pub fn block_import( // epoch tree it is useful as a migration, so that nodes prune long trees on // startup rather than waiting until importing the next epoch change block. prune_finalized( - &client, + client.clone(), &mut epoch_changes.lock(), )?; let import = BabeBlockImport::new( client, - api, epoch_changes, wrapped_block_import, config, @@ -1193,28 +1174,24 @@ pub fn block_import( /// /// The block import object provided must be the `BabeBlockImport` or a wrapper /// of it, otherwise crucial import logic will be omitted. -pub fn import_queue( +pub fn import_queue( babe_link: BabeLink, - block_import: I, + block_import: Inner, justification_import: Option>, finality_proof_import: Option>, - client: Arc>, - api: Arc, + client: Arc, inherent_data_providers: InherentDataProviders, -) -> ClientResult>> where - B: Backend + 'static, - I: BlockImport> +) -> ClientResult>> where + Inner: BlockImport> + Send + Sync + 'static, - E: CallExecutor + Clone + Send + Sync + 'static, - RA: Send + Sync + 'static, - PRA: ProvideRuntimeApi + ProvideCache + Send + Sync + AuxStore + 'static, - PRA::Api: BlockBuilderApi + BabeApi + ApiExt, + Client: ProvideRuntimeApi + ProvideCache + Send + Sync + AuxStore + 'static, + Client: HeaderBackend + HeaderMetadata, + Client::Api: BlockBuilderApi + BabeApi + ApiExt, { register_babe_inherent_data_provider(&inherent_data_providers, babe_link.config.slot_duration)?; let verifier = BabeVerifier { client: client.clone(), - api, inherent_data_providers, config: babe_link.config, epoch_changes: babe_link.epoch_changes, diff --git a/client/consensus/babe/src/tests.rs b/client/consensus/babe/src/tests.rs index 6c1ffa2c3a..d8696d5944 100644 --- a/client/consensus/babe/src/tests.rs +++ b/client/consensus/babe/src/tests.rs @@ -206,13 +206,7 @@ type TestHeader = ::Header; type TestExtrinsic = ::Extrinsic; pub struct TestVerifier { - inner: BabeVerifier< - substrate_test_runtime_client::Backend, - substrate_test_runtime_client::Executor, - TestBlock, - substrate_test_runtime_client::runtime::RuntimeApi, - PeersFullClient, - >, + inner: BabeVerifier, mutator: Mutator, } @@ -271,7 +265,6 @@ impl TestNetFactory for BabeTestNet { config, client.clone(), client.clone(), - client.clone(), ).expect("can initialize block-import"); let block_import = PanickingBlockImport(block_import); @@ -305,7 +298,6 @@ impl TestNetFactory for BabeTestNet { TestVerifier { inner: BabeVerifier { client: client.clone(), - api: client, inherent_data_providers: data.inherent_data_providers.clone(), config: data.link.config.clone(), epoch_changes: data.link.epoch_changes.clone(), -- GitLab From f93e3120fdee1403aec45d8da5e0e7e345aa5e62 Mon Sep 17 00:00:00 2001 From: s3krit Date: Fri, 21 Feb 2020 13:08:45 +0100 Subject: [PATCH 026/301] Add gitlab job for publishing draft releases (#5009) Idea is much the same as we currently do on polkadot - When a new tag is pushed (that fits our pattern for tags, e.g. v1.2.3), find a list of labelled changes and generate a changelog based on that. Create a draft release on Github and post about it on Matrix. --- .gitlab-ci.yml | 11 ++- scripts/gitlab/lib.sh | 73 +++++++++++++++++++ scripts/gitlab/publish_draft_release.sh | 95 +++++++++++++++++++++++++ 3 files changed, 178 insertions(+), 1 deletion(-) create mode 100755 scripts/gitlab/lib.sh create mode 100755 scripts/gitlab/publish_draft_release.sh diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 3b634793ad..36e1da8d10 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -539,7 +539,16 @@ publish-gh-doc: after_script: - rm -vrf ${HOME}/.gitconfig - +publish-draft-release: + stage: publish + image: parity/tools:latest + only: + - tags + - /^v[0-9]+\.[0-9]+\.[0-9]+.*$/ + script: + - ./scripts/gitlab/publish_draft_release.sh + interruptible: true + allow_failure: true .deploy-template: &deploy stage: kubernetes diff --git a/scripts/gitlab/lib.sh b/scripts/gitlab/lib.sh new file mode 100755 index 0000000000..bc0e06a6d4 --- /dev/null +++ b/scripts/gitlab/lib.sh @@ -0,0 +1,73 @@ +#!/bin/sh + +api_base="https://api.github.com/repos" + +# Function to take 2 git tags/commits and get any lines from commit messages +# that contain something that looks like a PR reference: e.g., (#1234) +sanitised_git_logs(){ + git --no-pager log --pretty=format:"%s" "$1..$2" | + # Only find messages referencing a PR + grep -E '\(#[0-9]+\)' | + # Strip any asterisks + sed 's/^* //g' | + # And add them all back + sed 's/^/* /g' +} + +# Checks whether a tag on github has been verified +# repo: 'organization/repo' +# tagver: 'v1.2.3' +# Usage: check_tag $repo $tagver +check_tag () { + repo=$1 + tagver=$2 + tag_out=$(curl -H "Authorization: token $GITHUB_RELEASE_TOKEN" -s "$api_base/$repo/git/refs/tags/$tagver") + tag_sha=$(echo "$tag_out" | jq -r .object.sha) + object_url=$(echo "$tag_out" | jq -r .object.url) + if [ "$tag_sha" = "null" ]; then + return 2 + fi + verified_str=$(curl -H "Authorization: token $GITHUB_RELEASE_TOKEN" -s "$object_url" | jq -r .verification.verified) + if [ "$verified_str" = "true" ]; then + # Verified, everything is good + return 0 + else + # Not verified. Bad juju. + return 1 + fi +} + +# Checks whether a given PR has a given label. +# repo: 'organization/repo' +# pr_id: 12345 +# label: B1-silent +# Usage: has_label $repo $pr_id $label +has_label(){ + repo="$1" + pr_id="$2" + label="$3" + out=$(curl -H "Authorization: token $GITHUB_RELEASE_TOKEN" -s "$api_base/$repo/pulls/$pr_id") + [ -n "$(echo "$out" | jq ".labels | .[] | select(.name==\"$label\")")" ] +} + +# Formats a message into a JSON string for posting to Matrix +# message: 'any plaintext message' +# formatted_message: 'optional message formatted in html' +# Usage: structure_message $content $formatted_content (optional) +structure_message() { + if [ -z "$2" ]; then + body=$(jq -Rs --arg body "$1" '{"msgtype": "m.text", $body}' < /dev/null) + else + body=$(jq -Rs --arg body "$1" --arg formatted_body "$2" '{"msgtype": "m.text", $body, "format": "org.matrix.custom.html", $formatted_body}' < /dev/null) + fi + echo "$body" +} + +# Post a message to a matrix room +# body: '{body: "JSON string produced by structure_message"}' +# room_id: !fsfSRjgjBWEWffws:matrix.parity.io +# access_token: see https://matrix.org/docs/guides/client-server-api/ +# Usage: send_message $body (json formatted) $room_id $access_token +send_message() { +curl -XPOST -d "$1" "https://matrix.parity.io/_matrix/client/r0/rooms/$2/send/m.room.message?access_token=$3" +} diff --git a/scripts/gitlab/publish_draft_release.sh b/scripts/gitlab/publish_draft_release.sh new file mode 100755 index 0000000000..463d8ee6c8 --- /dev/null +++ b/scripts/gitlab/publish_draft_release.sh @@ -0,0 +1,95 @@ +#!/usr/bin/env bash + +# shellcheck source=lib.sh +source "$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )/lib.sh" + +# Substrate labels for PRs we want to include in the release notes +labels=( + 'B1-runtimenoteworthy' + 'B1-clientnoteworthy' + 'B1-apinoteworthy' +) + +version="$CI_COMMIT_TAG" +last_version=$(git tag -l | sort -V | grep -B 1 -x "$version" | head -n 1) +echo "[+] Version: $version; Previous version: $last_version" + +# Check that a signed tag exists on github for this version +echo '[+] Checking tag has been signed' +#check_tag "paritytech/substrate" "$version" +case $? in + 0) echo '[+] Tag found and has been signed' + ;; + 1) echo '[!] Tag found but has not been signed. Aborting release.'; exit 1 + ;; + 2) echo '[!] Tag not found. Aborting release.'; exit +esac + +all_changes="$(sanitised_git_logs "$last_version" "$version")" +labelled_changes="" +echo "[+] Iterating through $(wc -l <<< "$all_changes") changes to find labelled PRs" +while IFS= read -r line; do + pr_id=$(echo "$line" | sed -E 's/.*#([0-9]+)\)$/\1/') + + # Skip if the PR has the silent label - this allows us to skip a few requests + if has_label 'paritytech/substrate' "$pr_id" 'B0-silent'; then + continue + fi + for label in "${labels[@]}"; do + if has_label 'paritytech/substrate' "$pr_id" "$label"; then + labelled_changes="$labelled_changes +$line" + fi + done +done <<< "$all_changes" + + +release_text="Substrate $version +----------------- +$labelled_changes" + +echo "[+] Release text generated: " +echo "$release_text" +exit +echo "[+] Pushing release to github" +# Create release on github +release_name="Substrate $version" +data=$(jq -Rs --arg version "$version" \ + --arg release_name "$release_name" \ + --arg release_text "$release_text" \ +'{ + "tag_name": $version, + "target_commitish": "master", + "name": $release_name, + "body": $release_text, + "draft": true, + "prerelease": false +}' < /dev/null) + +out=$(curl -s -X POST --data "$data" -H "Authorization: token $GITHUB_RELEASE_TOKEN" "$api_base/paritytech/substrate/releases") + +html_url=$(echo "$out" | jq -r .html_url) + +if [ "$html_url" == "null" ] +then + echo "[!] Something went wrong posting:" + echo "$out" +else + echo "[+] Release draft created: $html_url" +fi + +echo '[+] Sending draft release URL to Matrix' + +msg_body=$(cat <Release pipeline for Substrate $version complete.
+Draft release created: $html_url +EOF +) +send_message "$(structure_message "$msg_body" "$formatted_msg_body")" "$MATRIX_ACCESS_TOKEN" + +echo "[+] Done! Maybe the release worked..." -- GitLab From 97ad80269db3acde1e2349ee96aefa5f517cf385 Mon Sep 17 00:00:00 2001 From: Cecile Tonglet Date: Fri, 21 Feb 2020 13:53:01 +0100 Subject: [PATCH 027/301] Add tests & Service's Configuration has optional fields that shouldn't be optional (#4842) Related to #4776 Related to https://github.com/paritytech/polkadot/pull/832 To summarize the changes: 1. I did not manage to validate with types the service's Configuration. But I did reduce the possibility of errors by moving all the "fill" functions to their respective structopts 2. I split params.rs to multiple modules: one module params for just CLI parameters and one module commands for CLI subcommands (and RunCmd). Every command and params are in their own file so things are grouped better together and easier to remove 3. I removed the run and run_subcommand helpers as they are not helping much anymore. Running a command is always a set of 3 commands: 1. init 2. update config 3. run. This still allow the user to change the config before arguments get parsed or right after. 4. I added tests for all subcommands. 5. [deleted] Overall the aim is to improve the situation with the Configuration and the optional parameters, add tests, make the API more consistent and simpler. --- Cargo.lock | 1 + bin/node-template/node/src/command.rs | 39 +- bin/node-template/node/src/main.rs | 6 +- bin/node/cli/Cargo.toml | 1 + bin/node/cli/bin/main.rs | 6 +- bin/node/cli/src/cli.rs | 5 - bin/node/cli/src/command.rs | 62 +- bin/node/cli/tests/build_spec_works.rs | 37 + .../node/cli/tests/check_block_works.rs | 27 +- bin/node/cli/tests/common.rs | 32 +- bin/node/cli/tests/factory.rs | 40 + .../tests/import_export_and_revert_work.rs | 59 + bin/node/cli/tests/inspect_works.rs | 38 + bin/node/cli/tests/purge_chain_works.rs | 30 +- .../tests/running_the_node_and_interrupt.rs | 10 +- bin/node/inspect/src/cli.rs | 182 +-- bin/node/inspect/src/command.rs | 204 +++ bin/node/inspect/src/lib.rs | 17 +- bin/node/transaction-factory/src/lib.rs | 4 +- .../{execution_strategy.rs => arg_enums.rs} | 75 + client/cli/src/commands/build_spec_cmd.rs | 104 ++ client/cli/src/commands/check_block_cmd.rs | 105 ++ client/cli/src/commands/export_blocks_cmd.rs | 113 ++ client/cli/src/commands/import_blocks_cmd.rs | 107 ++ client/cli/src/commands/mod.rs | 145 ++ client/cli/src/commands/purge_chain_cmd.rs | 106 ++ client/cli/src/commands/revert_cmd.rs | 79 ++ client/cli/src/commands/runcmd.rs | 737 ++++++++++ client/cli/src/error.rs | 6 + client/cli/src/lib.rs | 724 +--------- client/cli/src/node_key.rs | 209 --- client/cli/src/params.rs | 1202 ----------------- client/cli/src/params/import_params.rs | 219 +++ client/cli/src/params/mod.rs | 65 + .../params/network_configuration_params.rs | 160 +++ client/cli/src/params/node_key_params.rs | 244 ++++ client/cli/src/params/shared_params.rs | 116 ++ .../cli/src/params/transaction_pool_params.rs | 49 + client/db/src/utils.rs | 1 + client/network/src/config.rs | 10 +- client/service/src/config.rs | 24 +- client/service/test/src/lib.rs | 2 +- utils/frame/benchmarking-cli/src/lib.rs | 42 +- 43 files changed, 3042 insertions(+), 2402 deletions(-) create mode 100644 bin/node/cli/tests/build_spec_works.rs rename client/cli/src/traits.rs => bin/node/cli/tests/check_block_works.rs (57%) create mode 100644 bin/node/cli/tests/factory.rs create mode 100644 bin/node/cli/tests/import_export_and_revert_work.rs create mode 100644 bin/node/cli/tests/inspect_works.rs create mode 100644 bin/node/inspect/src/command.rs rename client/cli/src/{execution_strategy.rs => arg_enums.rs} (51%) create mode 100644 client/cli/src/commands/build_spec_cmd.rs create mode 100644 client/cli/src/commands/check_block_cmd.rs create mode 100644 client/cli/src/commands/export_blocks_cmd.rs create mode 100644 client/cli/src/commands/import_blocks_cmd.rs create mode 100644 client/cli/src/commands/mod.rs create mode 100644 client/cli/src/commands/purge_chain_cmd.rs create mode 100644 client/cli/src/commands/revert_cmd.rs create mode 100644 client/cli/src/commands/runcmd.rs delete mode 100644 client/cli/src/node_key.rs delete mode 100644 client/cli/src/params.rs create mode 100644 client/cli/src/params/import_params.rs create mode 100644 client/cli/src/params/mod.rs create mode 100644 client/cli/src/params/network_configuration_params.rs create mode 100644 client/cli/src/params/node_key_params.rs create mode 100644 client/cli/src/params/shared_params.rs create mode 100644 client/cli/src/params/transaction_pool_params.rs diff --git a/Cargo.lock b/Cargo.lock index dddd6cddad..4174b5bbc2 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3412,6 +3412,7 @@ dependencies = [ "sc-tracing", "sc-transaction-pool", "serde", + "serde_json", "sp-authority-discovery", "sp-consensus", "sp-consensus-babe", diff --git a/bin/node-template/node/src/command.rs b/bin/node-template/node/src/command.rs index e7e386703d..0f4c301dbf 100644 --- a/bin/node-template/node/src/command.rs +++ b/bin/node-template/node/src/command.rs @@ -15,32 +15,35 @@ // along with Substrate. If not, see . use sp_consensus_aura::sr25519::{AuthorityPair as AuraPair}; -use sc_cli::{VersionInfo, error}; +use sc_cli::VersionInfo; use crate::service; use crate::chain_spec; use crate::cli::Cli; /// Parse and run command line arguments -pub fn run(version: VersionInfo) -> error::Result<()> { +pub fn run(version: VersionInfo) -> sc_cli::Result<()> { let opt = sc_cli::from_args::(&version); - let config = sc_service::Configuration::new(&version); + let mut config = sc_service::Configuration::from_version(&version); match opt.subcommand { - Some(subcommand) => sc_cli::run_subcommand( - config, - subcommand, - chain_spec::load_spec, - |config: _| Ok(new_full_start!(config).0), - &version, - ), - None => sc_cli::run( - config, - opt.run, - service::new_light, - service::new_full, - chain_spec::load_spec, - &version, - ) + Some(subcommand) => { + subcommand.init(&version)?; + subcommand.update_config(&mut config, chain_spec::load_spec, &version)?; + subcommand.run( + config, + |config: _| Ok(new_full_start!(config).0), + ) + }, + None => { + opt.run.init(&version)?; + opt.run.update_config(&mut config, chain_spec::load_spec, &version)?; + opt.run.run( + config, + service::new_light, + service::new_full, + &version, + ) + }, } } diff --git a/bin/node-template/node/src/main.rs b/bin/node-template/node/src/main.rs index 9d0a57d77a..91b2c257e0 100644 --- a/bin/node-template/node/src/main.rs +++ b/bin/node-template/node/src/main.rs @@ -7,10 +7,8 @@ mod service; mod cli; mod command; -pub use sc_cli::{VersionInfo, error}; - -fn main() -> Result<(), error::Error> { - let version = VersionInfo { +fn main() -> sc_cli::Result<()> { + let version = sc_cli::VersionInfo { name: "Substrate Node", commit: env!("VERGEN_SHA_SHORT"), version: env!("CARGO_PKG_VERSION"), diff --git a/bin/node/cli/Cargo.toml b/bin/node/cli/Cargo.toml index d383e2c05a..52be9e1d95 100644 --- a/bin/node/cli/Cargo.toml +++ b/bin/node/cli/Cargo.toml @@ -107,6 +107,7 @@ futures = "0.3.1" tempfile = "3.1.0" assert_cmd = "0.12" nix = "0.17" +serde_json = "1.0" [build-dependencies] build-script-utils = { version = "2.0.0", package = "substrate-build-script-utils", path = "../../../utils/build-script-utils" } diff --git a/bin/node/cli/bin/main.rs b/bin/node/cli/bin/main.rs index e951c04710..8c4412667b 100644 --- a/bin/node/cli/bin/main.rs +++ b/bin/node/cli/bin/main.rs @@ -18,10 +18,8 @@ #![warn(missing_docs)] -use sc_cli::VersionInfo; - -fn main() -> Result<(), sc_cli::error::Error> { - let version = VersionInfo { +fn main() -> sc_cli::Result<()> { + let version = sc_cli::VersionInfo { name: "Substrate Node", commit: env!("VERGEN_SHA_SHORT"), version: env!("CARGO_PKG_VERSION"), diff --git a/bin/node/cli/src/cli.rs b/bin/node/cli/src/cli.rs index 40f1dcf6f4..b6db9c3deb 100644 --- a/bin/node/cli/src/cli.rs +++ b/bin/node/cli/src/cli.rs @@ -19,11 +19,6 @@ use structopt::StructOpt; /// An overarching CLI command definition. #[derive(Clone, Debug, StructOpt)] -#[structopt(settings = &[ - structopt::clap::AppSettings::GlobalVersion, - structopt::clap::AppSettings::ArgsNegateSubcommands, - structopt::clap::AppSettings::SubcommandsNegateReqs, -])] pub struct Cli { /// Possible subcommand with parameters. #[structopt(subcommand)] diff --git a/bin/node/cli/src/command.rs b/bin/node/cli/src/command.rs index 5a942d964c..dfdf5533f2 100644 --- a/bin/node/cli/src/command.rs +++ b/bin/node/cli/src/command.rs @@ -14,13 +14,13 @@ // You should have received a copy of the GNU General Public License // along with Substrate. If not, see . -use sc_cli::{VersionInfo, error}; +use sc_cli::VersionInfo; use sc_service::{Roles as ServiceRoles}; use node_transaction_factory::RuntimeAdapter; use crate::{Cli, service, ChainSpec, load_spec, Subcommand, factory_impl::FactoryState}; /// Parse command line arguments into service configuration. -pub fn run(args: I, version: VersionInfo) -> error::Result<()> +pub fn run(args: I, version: VersionInfo) -> sc_cli::Result<()> where I: Iterator, T: Into + Clone, @@ -28,19 +28,22 @@ where let args: Vec<_> = args.collect(); let opt = sc_cli::from_iter::(args.clone(), &version); - let mut config = sc_service::Configuration::new(&version); + let mut config = sc_service::Configuration::from_version(&version); match opt.subcommand { - None => sc_cli::run( - config, - opt.run, - service::new_light, - service::new_full, - load_spec, - &version, - ), + None => { + opt.run.init(&version)?; + opt.run.update_config(&mut config, load_spec, &version)?; + opt.run.run( + config, + service::new_light, + service::new_full, + &version, + ) + }, Some(Subcommand::Inspect(cmd)) => { - cmd.init(&mut config, load_spec, &version)?; + cmd.init(&version)?; + cmd.update_config(&mut config, load_spec, &version)?; let client = sc_service::new_full_client::< node_runtime::Block, node_runtime::RuntimeApi, node_executor::Executor, _, _, @@ -50,25 +53,27 @@ where cmd.run(inspect) }, Some(Subcommand::Benchmark(cmd)) => { - cmd.init(&mut config, load_spec, &version)?; + cmd.init(&version)?; + cmd.update_config(&mut config, load_spec, &version)?; cmd.run::<_, _, node_runtime::Block, node_executor::Executor>(config) }, Some(Subcommand::Factory(cli_args)) => { - sc_cli::init(&cli_args.shared_params, &version)?; - sc_cli::init_config(&mut config, &cli_args.shared_params, &version, load_spec)?; - sc_cli::fill_import_params( + cli_args.shared_params.init(&version)?; + cli_args.shared_params.update_config(&mut config, load_spec, &version)?; + cli_args.import_params.update_config( &mut config, - &cli_args.import_params, ServiceRoles::FULL, cli_args.shared_params.dev, )?; - sc_cli::fill_config_keystore_in_memory(&mut config)?; + config.use_in_memory_keystore()?; match ChainSpec::from(config.expect_chain_spec().id()) { Some(ref c) if c == &ChainSpec::Development || c == &ChainSpec::LocalTestnet => {}, - _ => panic!("Factory is only supported for development and local testnet."), + _ => return Err( + "Factory is only supported for development and local testnet.".into() + ), } // Setup tracing. @@ -77,7 +82,9 @@ where cli_args.import_params.tracing_receiver.into(), tracing_targets ); if let Err(e) = tracing::subscriber::set_global_default(subscriber) { - panic!("Unable to set global default subscriber {}", e); + return Err( + format!("Unable to set global default subscriber {}", e).into() + ); } } @@ -96,12 +103,13 @@ where Ok(()) }, - Some(Subcommand::Base(subcommand)) => sc_cli::run_subcommand( - config, - subcommand, - load_spec, - |config: service::NodeConfiguration| Ok(new_full_start!(config).0), - &version, - ), + Some(Subcommand::Base(subcommand)) => { + subcommand.init(&version)?; + subcommand.update_config(&mut config, load_spec, &version)?; + subcommand.run( + config, + |config: service::NodeConfiguration| Ok(new_full_start!(config).0), + ) + }, } } diff --git a/bin/node/cli/tests/build_spec_works.rs b/bin/node/cli/tests/build_spec_works.rs new file mode 100644 index 0000000000..2eca71a5b5 --- /dev/null +++ b/bin/node/cli/tests/build_spec_works.rs @@ -0,0 +1,37 @@ +// Copyright 2020 Parity Technologies (UK) Ltd. +// This file is part of Substrate. + +// Substrate is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Substrate is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Substrate. If not, see . + +use assert_cmd::cargo::cargo_bin; +use std::process::Command; +use tempfile::tempdir; + +#[test] +fn build_spec_works() { + let base_path = tempdir().expect("could not create a temp dir"); + + let output = Command::new(cargo_bin("substrate")) + .args(&["build-spec", "--dev", "-d"]) + .arg(base_path.path()) + .output() + .unwrap(); + assert!(output.status.success()); + + // Make sure that the `dev` chain folder exists, but the `db` doesn't + assert!(base_path.path().join("chains/dev/").exists()); + assert!(!base_path.path().join("chains/dev/db").exists()); + + let _value: serde_json::Value = serde_json::from_slice(output.stdout.as_slice()).unwrap(); +} diff --git a/client/cli/src/traits.rs b/bin/node/cli/tests/check_block_works.rs similarity index 57% rename from client/cli/src/traits.rs rename to bin/node/cli/tests/check_block_works.rs index 96216a172b..e4c93c9e88 100644 --- a/client/cli/src/traits.rs +++ b/bin/node/cli/tests/check_block_works.rs @@ -1,4 +1,4 @@ -// Copyright 2017-2020 Parity Technologies (UK) Ltd. +// Copyright 2020 Parity Technologies (UK) Ltd. // This file is part of Substrate. // Substrate is free software: you can redistribute it and/or modify @@ -14,10 +14,25 @@ // You should have received a copy of the GNU General Public License // along with Substrate. If not, see . -use crate::params::SharedParams; +#![cfg(unix)] -/// Supports getting common params. -pub trait GetSharedParams { - /// Returns shared params if any. - fn shared_params(&self) -> Option<&SharedParams>; +use assert_cmd::cargo::cargo_bin; +use std::process::Command; +use tempfile::tempdir; + +mod common; + +#[test] +fn check_block_works() { + let base_path = tempdir().expect("could not create a temp dir"); + + common::run_command_for_a_while(base_path.path(), false); + + let status = Command::new(cargo_bin("substrate")) + .args(&["check-block", "-d"]) + .arg(base_path.path()) + .arg("1") + .status() + .unwrap(); + assert!(status.success()); } diff --git a/bin/node/cli/tests/common.rs b/bin/node/cli/tests/common.rs index 4044f69d08..93a4a3e4e5 100644 --- a/bin/node/cli/tests/common.rs +++ b/bin/node/cli/tests/common.rs @@ -14,7 +14,14 @@ // You should have received a copy of the GNU General Public License // along with Substrate. If not, see . -use std::{process::{Child, ExitStatus}, thread, time::Duration}; +#![cfg(unix)] +#![allow(dead_code)] + +use std::{process::{Child, ExitStatus}, thread, time::Duration, path::Path}; +use assert_cmd::cargo::cargo_bin; +use std::{convert::TryInto, process::Command}; +use nix::sys::signal::{kill, Signal::SIGINT}; +use nix::unistd::Pid; /// Wait for the given `child` the given number of `secs`. /// @@ -32,3 +39,26 @@ pub fn wait_for(child: &mut Child, secs: usize) -> Option { None } + +/// Run the node for a while (30 seconds) +pub fn run_command_for_a_while(base_path: &Path, dev: bool) { + let mut cmd = Command::new(cargo_bin("substrate")); + + if dev { + cmd.arg("--dev"); + } + + let mut cmd = cmd + .arg("-d") + .arg(base_path) + .spawn() + .unwrap(); + + // Let it produce some blocks. + thread::sleep(Duration::from_secs(30)); + assert!(cmd.try_wait().unwrap().is_none(), "the process should still be running"); + + // Stop the process + kill(Pid::from_raw(cmd.id().try_into().unwrap()), SIGINT).unwrap(); + assert!(wait_for(&mut cmd, 20).map(|x| x.success()).unwrap_or_default()); +} diff --git a/bin/node/cli/tests/factory.rs b/bin/node/cli/tests/factory.rs new file mode 100644 index 0000000000..2930cd52e2 --- /dev/null +++ b/bin/node/cli/tests/factory.rs @@ -0,0 +1,40 @@ +// Copyright 2020 Parity Technologies (UK) Ltd. +// This file is part of Substrate. + +// Substrate is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Substrate is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Substrate. If not, see . + +#![cfg(unix)] + +use assert_cmd::cargo::cargo_bin; +use std::process::{Command, Stdio}; +use tempfile::tempdir; + +mod common; + +#[test] +fn factory_works() { + let base_path = tempdir().expect("could not create a temp dir"); + + let status = Command::new(cargo_bin("substrate")) + .stdout(Stdio::null()) + .args(&["factory", "--dev", "-d"]) + .arg(base_path.path()) + .status() + .unwrap(); + assert!(status.success()); + + // Make sure that the `dev` chain folder exists & `db` + assert!(base_path.path().join("chains/dev/").exists()); + assert!(base_path.path().join("chains/dev/db").exists()); +} diff --git a/bin/node/cli/tests/import_export_and_revert_work.rs b/bin/node/cli/tests/import_export_and_revert_work.rs new file mode 100644 index 0000000000..e109aa279e --- /dev/null +++ b/bin/node/cli/tests/import_export_and_revert_work.rs @@ -0,0 +1,59 @@ +// Copyright 2020 Parity Technologies (UK) Ltd. +// This file is part of Substrate. + +// Substrate is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Substrate is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Substrate. If not, see . + +#![cfg(unix)] + +use assert_cmd::cargo::cargo_bin; +use std::{process::Command, fs}; +use tempfile::tempdir; + +mod common; + +#[test] +fn import_export_and_revert_work() { + let base_path = tempdir().expect("could not create a temp dir"); + let exported_blocks = base_path.path().join("exported_blocks"); + + common::run_command_for_a_while(base_path.path(), false); + + let status = Command::new(cargo_bin("substrate")) + .args(&["export-blocks", "-d"]) + .arg(base_path.path()) + .arg(&exported_blocks) + .status() + .unwrap(); + assert!(status.success()); + + let metadata = fs::metadata(&exported_blocks).unwrap(); + assert!(metadata.len() > 0, "file exported_blocks should not be empty"); + + let _ = fs::remove_dir_all(base_path.path().join("db")); + + let status = Command::new(cargo_bin("substrate")) + .args(&["import-blocks", "-d"]) + .arg(base_path.path()) + .arg(&exported_blocks) + .status() + .unwrap(); + assert!(status.success()); + + let status = Command::new(cargo_bin("substrate")) + .args(&["revert", "-d"]) + .arg(base_path.path()) + .status() + .unwrap(); + assert!(status.success()); +} diff --git a/bin/node/cli/tests/inspect_works.rs b/bin/node/cli/tests/inspect_works.rs new file mode 100644 index 0000000000..0bd48c3693 --- /dev/null +++ b/bin/node/cli/tests/inspect_works.rs @@ -0,0 +1,38 @@ +// Copyright 2020 Parity Technologies (UK) Ltd. +// This file is part of Substrate. + +// Substrate is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Substrate is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Substrate. If not, see . + +#![cfg(unix)] + +use assert_cmd::cargo::cargo_bin; +use std::process::Command; +use tempfile::tempdir; + +mod common; + +#[test] +fn inspect_works() { + let base_path = tempdir().expect("could not create a temp dir"); + + common::run_command_for_a_while(base_path.path(), false); + + let status = Command::new(cargo_bin("substrate")) + .args(&["inspect", "-d"]) + .arg(base_path.path()) + .args(&["block", "1"]) + .status() + .unwrap(); + assert!(status.success()); +} diff --git a/bin/node/cli/tests/purge_chain_works.rs b/bin/node/cli/tests/purge_chain_works.rs index e6b71db991..42a5bc3ce1 100644 --- a/bin/node/cli/tests/purge_chain_works.rs +++ b/bin/node/cli/tests/purge_chain_works.rs @@ -15,39 +15,27 @@ // along with Substrate. If not, see . use assert_cmd::cargo::cargo_bin; -use std::{convert::TryInto, process::Command, thread, time::Duration, fs, path::PathBuf}; +use std::process::Command; +use tempfile::tempdir; mod common; #[test] #[cfg(unix)] fn purge_chain_works() { - use nix::sys::signal::{kill, Signal::SIGINT}; - use nix::unistd::Pid; + let base_path = tempdir().expect("could not create a temp dir"); - let base_path = "purge_chain_test"; - - let _ = fs::remove_dir_all(base_path); - let mut cmd = Command::new(cargo_bin("substrate")) - .args(&["--dev", "-d", base_path]) - .spawn() - .unwrap(); - - // Let it produce some blocks. - thread::sleep(Duration::from_secs(30)); - assert!(cmd.try_wait().unwrap().is_none(), "the process should still be running"); - - // Stop the process - kill(Pid::from_raw(cmd.id().try_into().unwrap()), SIGINT).unwrap(); - assert!(common::wait_for(&mut cmd, 30).map(|x| x.success()).unwrap_or_default()); + common::run_command_for_a_while(base_path.path(), true); let status = Command::new(cargo_bin("substrate")) - .args(&["purge-chain", "--dev", "-d", base_path, "-y"]) + .args(&["purge-chain", "--dev", "-d"]) + .arg(base_path.path()) + .arg("-y") .status() .unwrap(); assert!(status.success()); // Make sure that the `dev` chain folder exists, but the `db` is deleted. - assert!(PathBuf::from(base_path).join("chains/dev/").exists()); - assert!(!PathBuf::from(base_path).join("chains/dev/db").exists()); + assert!(base_path.path().join("chains/dev/").exists()); + assert!(!base_path.path().join("chains/dev/db").exists()); } diff --git a/bin/node/cli/tests/running_the_node_and_interrupt.rs b/bin/node/cli/tests/running_the_node_and_interrupt.rs index dbb57bdd21..67efedccbe 100644 --- a/bin/node/cli/tests/running_the_node_and_interrupt.rs +++ b/bin/node/cli/tests/running_the_node_and_interrupt.rs @@ -15,7 +15,8 @@ // along with Substrate. If not, see . use assert_cmd::cargo::cargo_bin; -use std::{convert::TryInto, process::Command, thread, time::Duration, fs}; +use std::{convert::TryInto, process::Command, thread, time::Duration}; +use tempfile::tempdir; mod common; @@ -26,13 +27,14 @@ fn running_the_node_works_and_can_be_interrupted() { use nix::unistd::Pid; fn run_command_and_kill(signal: Signal) { - let _ = fs::remove_dir_all("interrupt_test"); + let base_path = tempdir().expect("could not create a temp dir"); let mut cmd = Command::new(cargo_bin("substrate")) - .args(&["--dev", "-d", "interrupt_test"]) + .args(&["--dev", "-d"]) + .arg(base_path.path()) .spawn() .unwrap(); - thread::sleep(Duration::from_secs(30)); + thread::sleep(Duration::from_secs(20)); assert!(cmd.try_wait().unwrap().is_none(), "the process should still be running"); kill(Pid::from_raw(cmd.id().try_into().unwrap()), signal).unwrap(); assert_eq!( diff --git a/bin/node/inspect/src/cli.rs b/bin/node/inspect/src/cli.rs index 27afcfff91..5d51bd5848 100644 --- a/bin/node/inspect/src/cli.rs +++ b/bin/node/inspect/src/cli.rs @@ -16,12 +16,8 @@ //! Structs to easily compose inspect sub-command for CLI. -use std::{ - fmt::Debug, - str::FromStr, -}; -use crate::{Inspector, PrettyPrinter}; -use sc_cli::{ImportParams, SharedParams, error}; +use std::fmt::Debug; +use sc_cli::{ImportParams, SharedParams}; use structopt::StructOpt; /// The `inspect` command used to print decoded chain data. @@ -64,177 +60,3 @@ pub enum InspectSubCmd { input: String, }, } - -impl InspectCmd { - /// Parse CLI arguments and initialize given config. - pub fn init( - &self, - config: &mut sc_service::config::Configuration, - spec_factory: impl FnOnce(&str) -> Result>, String>, - version: &sc_cli::VersionInfo, - ) -> error::Result<()> where - G: sc_service::RuntimeGenesis, - E: sc_service::ChainSpecExtension, - { - sc_cli::init_config(config, &self.shared_params, version, spec_factory)?; - // make sure to configure keystore - sc_cli::fill_config_keystore_in_memory(config)?; - // and all import params (especially pruning that has to match db meta) - sc_cli::fill_import_params( - config, - &self.import_params, - sc_service::Roles::FULL, - self.shared_params.dev, - )?; - Ok(()) - } - - /// Run the inspect command, passing the inspector. - pub fn run( - self, - inspect: Inspector, - ) -> error::Result<()> where - B: sp_runtime::traits::Block, - B::Hash: FromStr, - P: PrettyPrinter, - { - match self.command { - InspectSubCmd::Block { input } => { - let input = input.parse()?; - let res = inspect.block(input) - .map_err(|e| format!("{}", e))?; - println!("{}", res); - Ok(()) - }, - InspectSubCmd::Extrinsic { input } => { - let input = input.parse()?; - let res = inspect.extrinsic(input) - .map_err(|e| format!("{}", e))?; - println!("{}", res); - Ok(()) - }, - } - } -} - - -/// A block to retrieve. -#[derive(Debug, Clone, PartialEq)] -pub enum BlockAddress { - /// Get block by hash. - Hash(Hash), - /// Get block by number. - Number(Number), - /// Raw SCALE-encoded bytes. - Bytes(Vec), -} - -impl FromStr for BlockAddress { - type Err = String; - - fn from_str(s: &str) -> Result { - // try to parse hash first - if let Ok(hash) = s.parse() { - return Ok(Self::Hash(hash)) - } - - // then number - if let Ok(number) = s.parse() { - return Ok(Self::Number(number)) - } - - // then assume it's bytes (hex-encoded) - sp_core::bytes::from_hex(s) - .map(Self::Bytes) - .map_err(|e| format!( - "Given string does not look like hash or number. It could not be parsed as bytes either: {}", - e - )) - } -} - -/// An extrinsic address to decode and print out. -#[derive(Debug, Clone, PartialEq)] -pub enum ExtrinsicAddress { - /// Extrinsic as part of existing block. - Block(BlockAddress, usize), - /// Raw SCALE-encoded extrinsic bytes. - Bytes(Vec), -} - -impl FromStr for ExtrinsicAddress { - type Err = String; - - fn from_str(s: &str) -> Result { - // first try raw bytes - if let Ok(bytes) = sp_core::bytes::from_hex(s).map(Self::Bytes) { - return Ok(bytes) - } - - // split by a bunch of different characters - let mut it = s.split(|c| c == '.' || c == ':' || c == ' '); - let block = it.next() - .expect("First element of split iterator is never empty; qed") - .parse()?; - - let index = it.next() - .ok_or_else(|| format!("Extrinsic index missing: example \"5:0\""))? - .parse() - .map_err(|e| format!("Invalid index format: {}", e))?; - - Ok(Self::Block(block, index)) - } -} - - -#[cfg(test)] -mod tests { - use super::*; - use sp_core::hash::H160 as Hash; - - #[test] - fn should_parse_block_strings() { - type BlockAddress = super::BlockAddress; - - let b0 = BlockAddress::from_str("3BfC20f0B9aFcAcE800D73D2191166FF16540258"); - let b1 = BlockAddress::from_str("1234"); - let b2 = BlockAddress::from_str("0"); - let b3 = BlockAddress::from_str("0x0012345f"); - - - assert_eq!(b0, Ok(BlockAddress::Hash( - "3BfC20f0B9aFcAcE800D73D2191166FF16540258".parse().unwrap() - ))); - assert_eq!(b1, Ok(BlockAddress::Number(1234))); - assert_eq!(b2, Ok(BlockAddress::Number(0))); - assert_eq!(b3, Ok(BlockAddress::Bytes(vec![0, 0x12, 0x34, 0x5f]))); - } - - #[test] - fn should_parse_extrinsic_address() { - type BlockAddress = super::BlockAddress; - type ExtrinsicAddress = super::ExtrinsicAddress; - - let e0 = ExtrinsicAddress::from_str("1234"); - let b0 = ExtrinsicAddress::from_str("3BfC20f0B9aFcAcE800D73D2191166FF16540258:5"); - let b1 = ExtrinsicAddress::from_str("1234:0"); - let b2 = ExtrinsicAddress::from_str("0 0"); - let b3 = ExtrinsicAddress::from_str("0x0012345f"); - - - assert_eq!(e0, Err("Extrinsic index missing: example \"5:0\"".into())); - assert_eq!(b0, Ok(ExtrinsicAddress::Block( - BlockAddress::Hash("3BfC20f0B9aFcAcE800D73D2191166FF16540258".parse().unwrap()), - 5 - ))); - assert_eq!(b1, Ok(ExtrinsicAddress::Block( - BlockAddress::Number(1234), - 0 - ))); - assert_eq!(b2, Ok(ExtrinsicAddress::Block( - BlockAddress::Number(0), - 0 - ))); - assert_eq!(b3, Ok(ExtrinsicAddress::Bytes(vec![0, 0x12, 0x34, 0x5f]))); - } -} diff --git a/bin/node/inspect/src/command.rs b/bin/node/inspect/src/command.rs new file mode 100644 index 0000000000..71e70e3e44 --- /dev/null +++ b/bin/node/inspect/src/command.rs @@ -0,0 +1,204 @@ +// Copyright 2020 Parity Technologies (UK) Ltd. +// This file is part of Substrate. + +// Substrate is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Substrate is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Substrate. If not, see . + +//! Command ran by the CLI + +use std::{ + fmt::Debug, + str::FromStr, +}; + +use crate::cli::{InspectCmd, InspectSubCmd}; +use crate::{Inspector, PrettyPrinter}; + +impl InspectCmd { + /// Initialize + pub fn init(&self, version: &sc_cli::VersionInfo) -> sc_cli::Result<()> { + self.shared_params.init(version) + } + + /// Parse CLI arguments and initialize given config. + pub fn update_config( + &self, + mut config: &mut sc_service::config::Configuration, + spec_factory: impl FnOnce(&str) -> Result>, String>, + version: &sc_cli::VersionInfo, + ) -> sc_cli::Result<()> where + G: sc_service::RuntimeGenesis, + E: sc_service::ChainSpecExtension, + { + self.shared_params.update_config(config, spec_factory, version)?; + + // make sure to configure keystore + config.use_in_memory_keystore()?; + + // and all import params (especially pruning that has to match db meta) + self.import_params.update_config( + &mut config, + sc_service::Roles::FULL, + self.shared_params.dev, + )?; + + Ok(()) + } + + /// Run the inspect command, passing the inspector. + pub fn run( + self, + inspect: Inspector, + ) -> sc_cli::Result<()> where + B: sp_runtime::traits::Block, + B::Hash: FromStr, + P: PrettyPrinter, + { + match self.command { + InspectSubCmd::Block { input } => { + let input = input.parse()?; + let res = inspect.block(input) + .map_err(|e| format!("{}", e))?; + println!("{}", res); + Ok(()) + }, + InspectSubCmd::Extrinsic { input } => { + let input = input.parse()?; + let res = inspect.extrinsic(input) + .map_err(|e| format!("{}", e))?; + println!("{}", res); + Ok(()) + }, + } + } +} + +/// A block to retrieve. +#[derive(Debug, Clone, PartialEq)] +pub enum BlockAddress { + /// Get block by hash. + Hash(Hash), + /// Get block by number. + Number(Number), + /// Raw SCALE-encoded bytes. + Bytes(Vec), +} + +impl FromStr for BlockAddress { + type Err = String; + + fn from_str(s: &str) -> Result { + // try to parse hash first + if let Ok(hash) = s.parse() { + return Ok(Self::Hash(hash)) + } + + // then number + if let Ok(number) = s.parse() { + return Ok(Self::Number(number)) + } + + // then assume it's bytes (hex-encoded) + sp_core::bytes::from_hex(s) + .map(Self::Bytes) + .map_err(|e| format!( + "Given string does not look like hash or number. It could not be parsed as bytes either: {}", + e + )) + } +} + +/// An extrinsic address to decode and print out. +#[derive(Debug, Clone, PartialEq)] +pub enum ExtrinsicAddress { + /// Extrinsic as part of existing block. + Block(BlockAddress, usize), + /// Raw SCALE-encoded extrinsic bytes. + Bytes(Vec), +} + +impl FromStr for ExtrinsicAddress { + type Err = String; + + fn from_str(s: &str) -> Result { + // first try raw bytes + if let Ok(bytes) = sp_core::bytes::from_hex(s).map(Self::Bytes) { + return Ok(bytes) + } + + // split by a bunch of different characters + let mut it = s.split(|c| c == '.' || c == ':' || c == ' '); + let block = it.next() + .expect("First element of split iterator is never empty; qed") + .parse()?; + + let index = it.next() + .ok_or_else(|| format!("Extrinsic index missing: example \"5:0\""))? + .parse() + .map_err(|e| format!("Invalid index format: {}", e))?; + + Ok(Self::Block(block, index)) + } +} + +#[cfg(test)] +mod tests { + use super::*; + use sp_core::hash::H160 as Hash; + + #[test] + fn should_parse_block_strings() { + type BlockAddress = super::BlockAddress; + + let b0 = BlockAddress::from_str("3BfC20f0B9aFcAcE800D73D2191166FF16540258"); + let b1 = BlockAddress::from_str("1234"); + let b2 = BlockAddress::from_str("0"); + let b3 = BlockAddress::from_str("0x0012345f"); + + + assert_eq!(b0, Ok(BlockAddress::Hash( + "3BfC20f0B9aFcAcE800D73D2191166FF16540258".parse().unwrap() + ))); + assert_eq!(b1, Ok(BlockAddress::Number(1234))); + assert_eq!(b2, Ok(BlockAddress::Number(0))); + assert_eq!(b3, Ok(BlockAddress::Bytes(vec![0, 0x12, 0x34, 0x5f]))); + } + + #[test] + fn should_parse_extrinsic_address() { + type BlockAddress = super::BlockAddress; + type ExtrinsicAddress = super::ExtrinsicAddress; + + let e0 = ExtrinsicAddress::from_str("1234"); + let b0 = ExtrinsicAddress::from_str("3BfC20f0B9aFcAcE800D73D2191166FF16540258:5"); + let b1 = ExtrinsicAddress::from_str("1234:0"); + let b2 = ExtrinsicAddress::from_str("0 0"); + let b3 = ExtrinsicAddress::from_str("0x0012345f"); + + + assert_eq!(e0, Err("Extrinsic index missing: example \"5:0\"".into())); + assert_eq!(b0, Ok(ExtrinsicAddress::Block( + BlockAddress::Hash("3BfC20f0B9aFcAcE800D73D2191166FF16540258".parse().unwrap()), + 5 + ))); + assert_eq!(b1, Ok(ExtrinsicAddress::Block( + BlockAddress::Number(1234), + 0 + ))); + assert_eq!(b2, Ok(ExtrinsicAddress::Block( + BlockAddress::Number(0), + 0 + ))); + assert_eq!(b3, Ok(ExtrinsicAddress::Bytes(vec![0, 0x12, 0x34, 0x5f]))); + } +} diff --git a/bin/node/inspect/src/lib.rs b/bin/node/inspect/src/lib.rs index 5c4e18c0a7..cd32f08e9f 100644 --- a/bin/node/inspect/src/lib.rs +++ b/bin/node/inspect/src/lib.rs @@ -23,6 +23,7 @@ #![warn(missing_docs)] pub mod cli; +pub mod command; use std::{ fmt, @@ -37,8 +38,10 @@ use sp_runtime::{ traits::{Block, HashFor, NumberFor, Hash} }; +use command::{BlockAddress, ExtrinsicAddress}; + /// A helper type for a generic block input. -pub type BlockAddressFor = cli::BlockAddress< +pub type BlockAddressFor = BlockAddress< as Hash>::Output, NumberFor >; @@ -148,10 +151,10 @@ impl> Inspector fn get_block(&self, input: BlockAddressFor) -> Result { Ok(match input { - cli::BlockAddress::Bytes(bytes) => { + BlockAddress::Bytes(bytes) => { TBlock::decode(&mut &*bytes)? }, - cli::BlockAddress::Number(number) => { + BlockAddress::Number(number) => { let id = BlockId::number(number); let not_found = format!("Could not find block {:?}", id); let body = self.chain.block_body(&id)? @@ -160,7 +163,7 @@ impl> Inspector .ok_or_else(|| Error::NotFound(not_found.clone()))?; TBlock::new(header, body) }, - cli::BlockAddress::Hash(hash) => { + BlockAddress::Hash(hash) => { let id = BlockId::hash(hash); let not_found = format!("Could not find block {:?}", id); let body = self.chain.block_body(&id)? @@ -175,7 +178,7 @@ impl> Inspector /// Get a pretty-printed extrinsic. pub fn extrinsic( &self, - input: cli::ExtrinsicAddress< as Hash>::Output, NumberFor>, + input: ExtrinsicAddress< as Hash>::Output, NumberFor>, ) -> Result { struct ExtrinsicPrinter<'a, A: Block, B>(A::Extrinsic, &'a B); impl<'a, A: Block, B: PrettyPrinter
> fmt::Display for ExtrinsicPrinter<'a, A, B> { @@ -185,7 +188,7 @@ impl> Inspector } let ext = match input { - cli::ExtrinsicAddress::Block(block, index) => { + ExtrinsicAddress::Block(block, index) => { let block = self.get_block(block)?; block.extrinsics() .get(index) @@ -194,7 +197,7 @@ impl> Inspector "Could not find extrinsic {} in block {:?}", index, block )))? }, - cli::ExtrinsicAddress::Bytes(bytes) => { + ExtrinsicAddress::Bytes(bytes) => { TBlock::Extrinsic::decode(&mut &*bytes)? } }; diff --git a/bin/node/transaction-factory/src/lib.rs b/bin/node/transaction-factory/src/lib.rs index 7dafeed406..a4c001145a 100644 --- a/bin/node/transaction-factory/src/lib.rs +++ b/bin/node/transaction-factory/src/lib.rs @@ -83,7 +83,7 @@ pub fn factory( mut factory_state: RA, client: &Arc>, select_chain: &Sc, -) -> sc_cli::error::Result<()> +) -> sc_cli::Result<()> where Block: BlockT, Exec: sc_client::CallExecutor + Send + Sync + Clone, @@ -97,7 +97,7 @@ where RA: RuntimeAdapter, Block::Hash: From, { - let best_header: Result<::Header, sc_cli::error::Error> = + let best_header: Result<::Header, sc_cli::Error> = select_chain.best_chain().map_err(|e| format!("{:?}", e).into()); let mut best_hash = best_header?.hash(); let mut best_block_id = BlockId::::hash(best_hash); diff --git a/client/cli/src/execution_strategy.rs b/client/cli/src/arg_enums.rs similarity index 51% rename from client/cli/src/execution_strategy.rs rename to client/cli/src/arg_enums.rs index 888d7b6c4a..384087bec0 100644 --- a/client/cli/src/execution_strategy.rs +++ b/client/cli/src/arg_enums.rs @@ -14,10 +14,74 @@ // You should have received a copy of the GNU General Public License // along with Substrate. If not, see . +// NOTE: we allow missing docs here because arg_enum! creates the function variants without doc #![allow(missing_docs)] use structopt::clap::arg_enum; +arg_enum! { + /// How to execute Wasm runtime code + #[allow(missing_docs)] + #[derive(Debug, Clone, Copy)] + pub enum WasmExecutionMethod { + // Uses an interpreter. + Interpreted, + // Uses a compiled runtime. + Compiled, + } +} + +impl WasmExecutionMethod { + /// Returns list of variants that are not disabled by feature flags. + pub fn enabled_variants() -> Vec<&'static str> { + Self::variants() + .iter() + .cloned() + .filter(|&name| cfg!(feature = "wasmtime") || name != "Compiled") + .collect() + } +} + +impl Into for WasmExecutionMethod { + fn into(self) -> sc_service::config::WasmExecutionMethod { + match self { + WasmExecutionMethod::Interpreted => sc_service::config::WasmExecutionMethod::Interpreted, + #[cfg(feature = "wasmtime")] + WasmExecutionMethod::Compiled => sc_service::config::WasmExecutionMethod::Compiled, + #[cfg(not(feature = "wasmtime"))] + WasmExecutionMethod::Compiled => panic!( + "Substrate must be compiled with \"wasmtime\" feature for compiled Wasm execution" + ), + } + } +} + +arg_enum! { + #[allow(missing_docs)] + #[derive(Debug, Copy, Clone, PartialEq, Eq)] + pub enum TracingReceiver { + Log, + Telemetry, + } +} + +impl Into for TracingReceiver { + fn into(self) -> sc_tracing::TracingReceiver { + match self { + TracingReceiver::Log => sc_tracing::TracingReceiver::Log, + TracingReceiver::Telemetry => sc_tracing::TracingReceiver::Telemetry, + } + } +} + +arg_enum! { + #[allow(missing_docs)] + #[derive(Debug, Copy, Clone, PartialEq, Eq)] + pub enum NodeKeyType { + Ed25519 + } +} + arg_enum! { /// How to execute blocks #[derive(Debug, Clone, Copy, PartialEq, Eq)] @@ -33,6 +97,17 @@ arg_enum! { } } +impl Into for ExecutionStrategy { + fn into(self) -> sc_client_api::ExecutionStrategy { + match self { + ExecutionStrategy::Native => sc_client_api::ExecutionStrategy::NativeWhenPossible, + ExecutionStrategy::Wasm => sc_client_api::ExecutionStrategy::AlwaysWasm, + ExecutionStrategy::Both => sc_client_api::ExecutionStrategy::Both, + ExecutionStrategy::NativeElseWasm => sc_client_api::ExecutionStrategy::NativeElseWasm, + } + } +} + impl ExecutionStrategy { /// Returns the variant as `'&static str`. pub fn as_str(&self) -> &'static str { diff --git a/client/cli/src/commands/build_spec_cmd.rs b/client/cli/src/commands/build_spec_cmd.rs new file mode 100644 index 0000000000..9b71207efa --- /dev/null +++ b/client/cli/src/commands/build_spec_cmd.rs @@ -0,0 +1,104 @@ +// Copyright 2018-2020 Parity Technologies (UK) Ltd. +// This file is part of Substrate. + +// Substrate is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Substrate is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Substrate. If not, see . + +use structopt::StructOpt; +use log::info; +use sc_network::config::build_multiaddr; +use sc_service::{Configuration, ChainSpecExtension, RuntimeGenesis, ChainSpec}; + +use crate::error; +use crate::VersionInfo; +use crate::params::SharedParams; +use crate::params::NodeKeyParams; + +/// The `build-spec` command used to build a specification. +#[derive(Debug, StructOpt, Clone)] +pub struct BuildSpecCmd { + /// Force raw genesis storage output. + #[structopt(long = "raw")] + pub raw: bool, + + /// Disable adding the default bootnode to the specification. + /// + /// By default the `/ip4/127.0.0.1/tcp/30333/p2p/NODE_PEER_ID` bootnode is added to the + /// specification when no bootnode exists. + #[structopt(long = "disable-default-bootnode")] + pub disable_default_bootnode: bool, + + #[allow(missing_docs)] + #[structopt(flatten)] + pub shared_params: SharedParams, + + #[allow(missing_docs)] + #[structopt(flatten)] + pub node_key_params: NodeKeyParams, +} + +impl BuildSpecCmd { + /// Run the build-spec command + pub fn run( + self, + config: Configuration, + ) -> error::Result<()> + where + G: RuntimeGenesis, + E: ChainSpecExtension, + { + info!("Building chain spec"); + let mut spec = config.expect_chain_spec().clone(); + let raw_output = self.raw; + + if spec.boot_nodes().is_empty() && !self.disable_default_bootnode { + let keys = config.network.node_key.into_keypair()?; + let peer_id = keys.public().into_peer_id(); + let addr = build_multiaddr![ + Ip4([127, 0, 0, 1]), + Tcp(30333u16), + P2p(peer_id) + ]; + spec.add_boot_node(addr) + } + + let json = sc_service::chain_ops::build_spec(spec, raw_output)?; + + print!("{}", json); + + Ok(()) + } + + /// Update and prepare a `Configuration` with command line parameters + pub fn update_config( + &self, + mut config: &mut Configuration, + spec_factory: F, + version: &VersionInfo, + ) -> error::Result<()> where + G: RuntimeGenesis, + E: ChainSpecExtension, + F: FnOnce(&str) -> Result>, String>, + { + self.shared_params.update_config(&mut config, spec_factory, version)?; + + let net_config_path = config + .in_chain_config_dir(crate::commands::DEFAULT_NETWORK_CONFIG_PATH) + .expect("We provided a base_path"); + + self.node_key_params.update_config(&mut config, Some(&net_config_path))?; + + Ok(()) + } +} + diff --git a/client/cli/src/commands/check_block_cmd.rs b/client/cli/src/commands/check_block_cmd.rs new file mode 100644 index 0000000000..1036be16de --- /dev/null +++ b/client/cli/src/commands/check_block_cmd.rs @@ -0,0 +1,105 @@ +// Copyright 2018-2020 Parity Technologies (UK) Ltd. +// This file is part of Substrate. + +// Substrate is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Substrate is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Substrate. If not, see . + +use std::fmt::Debug; +use std::str::FromStr; +use structopt::StructOpt; +use sc_service::{ + Configuration, ChainSpecExtension, RuntimeGenesis, ServiceBuilderCommand, Roles, ChainSpec, +}; +use sp_runtime::traits::{Block as BlockT, Header as HeaderT}; +use sp_runtime::generic::BlockId; + +use crate::error; +use crate::VersionInfo; +use crate::runtime::run_until_exit; +use crate::params::SharedParams; +use crate::params::ImportParams; + +/// The `check-block` command used to validate blocks. +#[derive(Debug, StructOpt, Clone)] +pub struct CheckBlockCmd { + /// Block hash or number + #[structopt(value_name = "HASH or NUMBER")] + pub input: String, + + /// The default number of 64KB pages to ever allocate for Wasm execution. + /// + /// Don't alter this unless you know what you're doing. + #[structopt(long = "default-heap-pages", value_name = "COUNT")] + pub default_heap_pages: Option, + + #[allow(missing_docs)] + #[structopt(flatten)] + pub shared_params: SharedParams, + + #[allow(missing_docs)] + #[structopt(flatten)] + pub import_params: ImportParams, +} + +impl CheckBlockCmd { + /// Run the check-block command + pub fn run( + self, + config: Configuration, + builder: B, + ) -> error::Result<()> + where + B: FnOnce(Configuration) -> Result, + G: RuntimeGenesis, + E: ChainSpecExtension, + BC: ServiceBuilderCommand + Unpin, + BB: sp_runtime::traits::Block + Debug, + <<::Header as HeaderT>::Number as std::str::FromStr>::Err: std::fmt::Debug, + ::Hash: std::str::FromStr, + { + let input = if self.input.starts_with("0x") { &self.input[2..] } else { &self.input[..] }; + let block_id = match FromStr::from_str(input) { + Ok(hash) => BlockId::hash(hash), + Err(_) => match self.input.parse::() { + Ok(n) => BlockId::number((n as u32).into()), + Err(_) => return Err(error::Error::Input("Invalid hash or number specified".into())), + } + }; + + let start = std::time::Instant::now(); + run_until_exit(config, |config| { + Ok(builder(config)?.check_block(block_id)) + })?; + println!("Completed in {} ms.", start.elapsed().as_millis()); + + Ok(()) + } + + /// Update and prepare a `Configuration` with command line parameters + pub fn update_config( + &self, + mut config: &mut Configuration, + spec_factory: F, + version: &VersionInfo, + ) -> error::Result<()> where + G: RuntimeGenesis, + E: ChainSpecExtension, + F: FnOnce(&str) -> Result>, String>, + { + self.shared_params.update_config(&mut config, spec_factory, version)?; + self.import_params.update_config(&mut config, Roles::FULL, self.shared_params.dev)?; + config.use_in_memory_keystore()?; + + Ok(()) + } +} diff --git a/client/cli/src/commands/export_blocks_cmd.rs b/client/cli/src/commands/export_blocks_cmd.rs new file mode 100644 index 0000000000..8db650ae8c --- /dev/null +++ b/client/cli/src/commands/export_blocks_cmd.rs @@ -0,0 +1,113 @@ +// Copyright 2018-2020 Parity Technologies (UK) Ltd. +// This file is part of Substrate. + +// Substrate is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Substrate is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Substrate. If not, see . + +use std::io; +use std::fs; +use std::path::PathBuf; +use std::fmt::Debug; +use log::info; +use structopt::StructOpt; +use sc_service::{ + Configuration, ChainSpecExtension, RuntimeGenesis, ServiceBuilderCommand, ChainSpec, + config::DatabaseConfig, +}; +use sp_runtime::traits::{Block as BlockT, Header as HeaderT}; + +use crate::error; +use crate::VersionInfo; +use crate::runtime::run_until_exit; +use crate::params::SharedParams; +use crate::params::BlockNumber; + +/// The `export-blocks` command used to export blocks. +#[derive(Debug, StructOpt, Clone)] +pub struct ExportBlocksCmd { + /// Output file name or stdout if unspecified. + #[structopt(parse(from_os_str))] + pub output: Option, + + /// Specify starting block number. + /// + /// Default is 1. + #[structopt(long = "from", value_name = "BLOCK")] + pub from: Option, + + /// Specify last block number. + /// + /// Default is best block. + #[structopt(long = "to", value_name = "BLOCK")] + pub to: Option, + + /// Use JSON output rather than binary. + #[structopt(long = "json")] + pub json: bool, + + #[allow(missing_docs)] + #[structopt(flatten)] + pub shared_params: SharedParams, +} + +impl ExportBlocksCmd { + /// Run the export-blocks command + pub fn run( + self, + config: Configuration, + builder: B, + ) -> error::Result<()> + where + B: FnOnce(Configuration) -> Result, + G: RuntimeGenesis, + E: ChainSpecExtension, + BC: ServiceBuilderCommand + Unpin, + BB: sp_runtime::traits::Block + Debug, + <<::Header as HeaderT>::Number as std::str::FromStr>::Err: std::fmt::Debug, + ::Hash: std::str::FromStr, + { + if let DatabaseConfig::Path { ref path, .. } = config.expect_database() { + info!("DB path: {}", path.display()); + } + let from = self.from.as_ref().and_then(|f| f.parse().ok()).unwrap_or(1); + let to = self.to.as_ref().and_then(|t| t.parse().ok()); + + let json = self.json; + + let file: Box = match &self.output { + Some(filename) => Box::new(fs::File::create(filename)?), + None => Box::new(io::stdout()), + }; + + run_until_exit(config, |config| { + Ok(builder(config)?.export_blocks(file, from.into(), to, json)) + }) + } + + /// Update and prepare a `Configuration` with command line parameters + pub fn update_config( + &self, + mut config: &mut Configuration, + spec_factory: F, + version: &VersionInfo, + ) -> error::Result<()> where + G: RuntimeGenesis, + E: ChainSpecExtension, + F: FnOnce(&str) -> Result>, String>, + { + self.shared_params.update_config(&mut config, spec_factory, version)?; + config.use_in_memory_keystore()?; + + Ok(()) + } +} diff --git a/client/cli/src/commands/import_blocks_cmd.rs b/client/cli/src/commands/import_blocks_cmd.rs new file mode 100644 index 0000000000..60a57ab78d --- /dev/null +++ b/client/cli/src/commands/import_blocks_cmd.rs @@ -0,0 +1,107 @@ +// Copyright 2018-2020 Parity Technologies (UK) Ltd. +// This file is part of Substrate. + +// Substrate is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Substrate is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Substrate. If not, see . + +use std::fmt::Debug; +use std::io::{Read, Seek, self}; +use std::fs; +use std::path::PathBuf; +use structopt::StructOpt; +use sc_service::{ + Configuration, ChainSpecExtension, RuntimeGenesis, ServiceBuilderCommand, ChainSpec, Roles, +}; +use sp_runtime::traits::{Block as BlockT, Header as HeaderT}; + +use crate::error; +use crate::VersionInfo; +use crate::runtime::run_until_exit; +use crate::params::SharedParams; +use crate::params::ImportParams; + +/// The `import-blocks` command used to import blocks. +#[derive(Debug, StructOpt, Clone)] +pub struct ImportBlocksCmd { + /// Input file or stdin if unspecified. + #[structopt(parse(from_os_str))] + pub input: Option, + + /// The default number of 64KB pages to ever allocate for Wasm execution. + /// + /// Don't alter this unless you know what you're doing. + #[structopt(long = "default-heap-pages", value_name = "COUNT")] + pub default_heap_pages: Option, + + #[allow(missing_docs)] + #[structopt(flatten)] + pub shared_params: SharedParams, + + #[allow(missing_docs)] + #[structopt(flatten)] + pub import_params: ImportParams, +} + +/// Internal trait used to cast to a dynamic type that implements Read and Seek. +trait ReadPlusSeek: Read + Seek {} + +impl ReadPlusSeek for T {} + +impl ImportBlocksCmd { + /// Run the import-blocks command + pub fn run( + self, + config: Configuration, + builder: B, + ) -> error::Result<()> + where + B: FnOnce(Configuration) -> Result, + G: RuntimeGenesis, + E: ChainSpecExtension, + BC: ServiceBuilderCommand + Unpin, + BB: sp_runtime::traits::Block + Debug, + <<::Header as HeaderT>::Number as std::str::FromStr>::Err: std::fmt::Debug, + ::Hash: std::str::FromStr, + { + let file: Box = match &self.input { + Some(filename) => Box::new(fs::File::open(filename)?), + None => { + let mut buffer = Vec::new(); + io::stdin().read_to_end(&mut buffer)?; + Box::new(io::Cursor::new(buffer)) + }, + }; + + run_until_exit(config, |config| { + Ok(builder(config)?.import_blocks(file, false)) + }) + } + + /// Update and prepare a `Configuration` with command line parameters + pub fn update_config( + &self, + mut config: &mut Configuration, + spec_factory: F, + version: &VersionInfo, + ) -> error::Result<()> where + G: RuntimeGenesis, + E: ChainSpecExtension, + F: FnOnce(&str) -> Result>, String>, + { + self.shared_params.update_config(&mut config, spec_factory, version)?; + self.import_params.update_config(&mut config, Roles::FULL, self.shared_params.dev)?; + config.use_in_memory_keystore()?; + + Ok(()) + } +} diff --git a/client/cli/src/commands/mod.rs b/client/cli/src/commands/mod.rs new file mode 100644 index 0000000000..e9f991c745 --- /dev/null +++ b/client/cli/src/commands/mod.rs @@ -0,0 +1,145 @@ +// Copyright 2018-2020 Parity Technologies (UK) Ltd. +// This file is part of Substrate. + +// Substrate is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Substrate is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Substrate. If not, see . + +mod runcmd; +mod export_blocks_cmd; +mod build_spec_cmd; +mod import_blocks_cmd; +mod check_block_cmd; +mod revert_cmd; +mod purge_chain_cmd; + +use std::fmt::Debug; +use structopt::StructOpt; + +use sc_service::{ + Configuration, ChainSpecExtension, RuntimeGenesis, ServiceBuilderCommand, ChainSpec, +}; +use sp_runtime::traits::{Block as BlockT, Header as HeaderT}; + +use crate::error; +use crate::VersionInfo; +use crate::params::SharedParams; + +pub use crate::commands::runcmd::RunCmd; +pub use crate::commands::export_blocks_cmd::ExportBlocksCmd; +pub use crate::commands::build_spec_cmd::BuildSpecCmd; +pub use crate::commands::import_blocks_cmd::ImportBlocksCmd; +pub use crate::commands::check_block_cmd::CheckBlockCmd; +pub use crate::commands::revert_cmd::RevertCmd; +pub use crate::commands::purge_chain_cmd::PurgeChainCmd; + +/// default sub directory to store network config +const DEFAULT_NETWORK_CONFIG_PATH : &'static str = "network"; + +/// All core commands that are provided by default. +/// +/// The core commands are split into multiple subcommands and `Run` is the default subcommand. From +/// the CLI user perspective, it is not visible that `Run` is a subcommand. So, all parameters of +/// `Run` are exported as main executable parameters. +#[derive(Debug, Clone, StructOpt)] +pub enum Subcommand { + /// Build a spec.json file, outputing to stdout. + BuildSpec(build_spec_cmd::BuildSpecCmd), + + /// Export blocks to a file. + ExportBlocks(export_blocks_cmd::ExportBlocksCmd), + + /// Import blocks from file. + ImportBlocks(import_blocks_cmd::ImportBlocksCmd), + + /// Validate a single block. + CheckBlock(check_block_cmd::CheckBlockCmd), + + /// Revert chain to the previous state. + Revert(revert_cmd::RevertCmd), + + /// Remove the whole chain data. + PurgeChain(purge_chain_cmd::PurgeChainCmd), +} + +impl Subcommand { + /// Get the shared parameters of a `CoreParams` command + pub fn get_shared_params(&self) -> &SharedParams { + use Subcommand::*; + + match self { + BuildSpec(params) => ¶ms.shared_params, + ExportBlocks(params) => ¶ms.shared_params, + ImportBlocks(params) => ¶ms.shared_params, + CheckBlock(params) => ¶ms.shared_params, + Revert(params) => ¶ms.shared_params, + PurgeChain(params) => ¶ms.shared_params, + } + } + + /// Run any `CoreParams` command + pub fn run( + self, + config: Configuration, + builder: B, + ) -> error::Result<()> + where + B: FnOnce(Configuration) -> Result, + G: RuntimeGenesis, + E: ChainSpecExtension, + BC: ServiceBuilderCommand + Unpin, + BB: sp_runtime::traits::Block + Debug, + <<::Header as HeaderT>::Number as std::str::FromStr>::Err: std::fmt::Debug, + ::Hash: std::str::FromStr, + { + match self { + Subcommand::BuildSpec(cmd) => cmd.run(config), + Subcommand::ExportBlocks(cmd) => cmd.run(config, builder), + Subcommand::ImportBlocks(cmd) => cmd.run(config, builder), + Subcommand::CheckBlock(cmd) => cmd.run(config, builder), + Subcommand::PurgeChain(cmd) => cmd.run(config), + Subcommand::Revert(cmd) => cmd.run(config, builder), + } + } + + /// Update and prepare a `Configuration` with command line parameters + pub fn update_config( + &self, + mut config: &mut Configuration, + spec_factory: F, + version: &VersionInfo, + ) -> error::Result<()> where + G: RuntimeGenesis, + E: ChainSpecExtension, + F: FnOnce(&str) -> Result>, String>, + { + match self { + Subcommand::BuildSpec(cmd) => cmd.update_config(&mut config, spec_factory, version), + Subcommand::ExportBlocks(cmd) => cmd.update_config(&mut config, spec_factory, version), + Subcommand::ImportBlocks(cmd) => cmd.update_config(&mut config, spec_factory, version), + Subcommand::CheckBlock(cmd) => cmd.update_config(&mut config, spec_factory, version), + Subcommand::PurgeChain(cmd) => cmd.update_config(&mut config, spec_factory, version), + Subcommand::Revert(cmd) => cmd.update_config(&mut config, spec_factory, version), + } + } + + /// Initialize substrate. This must be done only once. + /// + /// This method: + /// + /// 1. Set the panic handler + /// 2. Raise the FD limit + /// 3. Initialize the logger + pub fn init(&self, version: &VersionInfo) -> error::Result<()> { + self.get_shared_params().init(version) + } +} diff --git a/client/cli/src/commands/purge_chain_cmd.rs b/client/cli/src/commands/purge_chain_cmd.rs new file mode 100644 index 0000000000..b7c559e5cc --- /dev/null +++ b/client/cli/src/commands/purge_chain_cmd.rs @@ -0,0 +1,106 @@ +// Copyright 2018-2020 Parity Technologies (UK) Ltd. +// This file is part of Substrate. + +// Substrate is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Substrate is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Substrate. If not, see . + +use std::fmt::Debug; +use std::io::{Write, self}; +use std::fs; +use structopt::StructOpt; +use sc_service::{ + Configuration, ChainSpecExtension, RuntimeGenesis, ChainSpec, + config::{DatabaseConfig}, +}; + +use crate::error; +use crate::VersionInfo; +use crate::params::SharedParams; + +/// The `purge-chain` command used to remove the whole chain. +#[derive(Debug, StructOpt, Clone)] +pub struct PurgeChainCmd { + /// Skip interactive prompt by answering yes automatically. + #[structopt(short = "y")] + pub yes: bool, + + #[allow(missing_docs)] + #[structopt(flatten)] + pub shared_params: SharedParams, +} + +impl PurgeChainCmd { + /// Run the purge command + pub fn run( + self, + config: Configuration, + ) -> error::Result<()> + where + G: RuntimeGenesis, + E: ChainSpecExtension, + { + let db_path = match config.expect_database() { + DatabaseConfig::Path { path, .. } => path, + _ => { + eprintln!("Cannot purge custom database implementation"); + return Ok(()); + } + }; + + if !self.yes { + print!("Are you sure to remove {:?}? [y/N]: ", &db_path); + io::stdout().flush().expect("failed to flush stdout"); + + let mut input = String::new(); + io::stdin().read_line(&mut input)?; + let input = input.trim(); + + match input.chars().nth(0) { + Some('y') | Some('Y') => {}, + _ => { + println!("Aborted"); + return Ok(()); + }, + } + } + + match fs::remove_dir_all(&db_path) { + Ok(_) => { + println!("{:?} removed.", &db_path); + Ok(()) + }, + Err(ref err) if err.kind() == io::ErrorKind::NotFound => { + eprintln!("{:?} did not exist.", &db_path); + Ok(()) + }, + Err(err) => Result::Err(err.into()) + } + } + + /// Update and prepare a `Configuration` with command line parameters + pub fn update_config( + &self, + mut config: &mut Configuration, + spec_factory: F, + version: &VersionInfo, + ) -> error::Result<()> where + G: RuntimeGenesis, + E: ChainSpecExtension, + F: FnOnce(&str) -> Result>, String>, + { + self.shared_params.update_config(&mut config, spec_factory, version)?; + config.use_in_memory_keystore()?; + + Ok(()) + } +} diff --git a/client/cli/src/commands/revert_cmd.rs b/client/cli/src/commands/revert_cmd.rs new file mode 100644 index 0000000000..9ab86986cd --- /dev/null +++ b/client/cli/src/commands/revert_cmd.rs @@ -0,0 +1,79 @@ +// Copyright 2018-2020 Parity Technologies (UK) Ltd. +// This file is part of Substrate. + +// Substrate is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Substrate is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Substrate. If not, see . + +use std::fmt::Debug; +use structopt::StructOpt; +use sc_service::{ + Configuration, ChainSpecExtension, RuntimeGenesis, ServiceBuilderCommand, ChainSpec, +}; +use sp_runtime::traits::{Block as BlockT, Header as HeaderT}; + +use crate::error; +use crate::VersionInfo; +use crate::params::BlockNumber; +use crate::params::SharedParams; + +/// The `revert` command used revert the chain to a previous state. +#[derive(Debug, StructOpt, Clone)] +pub struct RevertCmd { + /// Number of blocks to revert. + #[structopt(default_value = "256")] + pub num: BlockNumber, + + #[allow(missing_docs)] + #[structopt(flatten)] + pub shared_params: SharedParams, +} + +impl RevertCmd { + /// Run the revert command + pub fn run( + self, + config: Configuration, + builder: B, + ) -> error::Result<()> + where + B: FnOnce(Configuration) -> Result, + G: RuntimeGenesis, + E: ChainSpecExtension, + BC: ServiceBuilderCommand + Unpin, + BB: sp_runtime::traits::Block + Debug, + <<::Header as HeaderT>::Number as std::str::FromStr>::Err: std::fmt::Debug, + ::Hash: std::str::FromStr, + { + let blocks = self.num.parse()?; + builder(config)?.revert_chain(blocks)?; + + Ok(()) + } + + /// Update and prepare a `Configuration` with command line parameters + pub fn update_config( + &self, + mut config: &mut Configuration, + spec_factory: F, + version: &VersionInfo, + ) -> error::Result<()> where + G: RuntimeGenesis, + E: ChainSpecExtension, + F: FnOnce(&str) -> Result>, String>, + { + self.shared_params.update_config(&mut config, spec_factory, version)?; + config.use_in_memory_keystore()?; + + Ok(()) + } +} diff --git a/client/cli/src/commands/runcmd.rs b/client/cli/src/commands/runcmd.rs new file mode 100644 index 0000000000..f29bc3c743 --- /dev/null +++ b/client/cli/src/commands/runcmd.rs @@ -0,0 +1,737 @@ +// Copyright 2018-2020 Parity Technologies (UK) Ltd. +// This file is part of Substrate. + +// Substrate is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Substrate is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Substrate. If not, see . + +use std::path::PathBuf; +use std::net::SocketAddr; +use std::fs; +use log::info; +use structopt::{StructOpt, clap::arg_enum}; +use names::{Generator, Name}; +use regex::Regex; +use chrono::prelude::*; +use sc_service::{ + AbstractService, Configuration, ChainSpecExtension, RuntimeGenesis, ChainSpec, Roles, + config::KeystoreConfig, +}; +use sc_telemetry::TelemetryEndpoints; + +use crate::VersionInfo; +use crate::error; +use crate::params::ImportParams; +use crate::params::SharedParams; +use crate::params::NetworkConfigurationParams; +use crate::params::TransactionPoolParams; +use crate::runtime::run_service_until_exit; + +/// The maximum number of characters for a node name. +const NODE_NAME_MAX_LENGTH: usize = 32; + +/// default sub directory for the key store +const DEFAULT_KEYSTORE_CONFIG_PATH : &'static str = "keystore"; + +arg_enum! { + /// Whether off-chain workers are enabled. + #[allow(missing_docs)] + #[derive(Debug, Clone)] + pub enum OffchainWorkerEnabled { + Always, + Never, + WhenValidating, + } +} + +/// The `run` command used to run a node. +#[derive(Debug, StructOpt, Clone)] +pub struct RunCmd { + /// Enable validator mode. + /// + /// The node will be started with the authority role and actively + /// participate in any consensus task that it can (e.g. depending on + /// availability of local keys). + #[structopt( + long = "validator", + conflicts_with_all = &[ "sentry" ] + )] + pub validator: bool, + + /// Enable sentry mode. + /// + /// The node will be started with the authority role and participate in + /// consensus tasks as an "observer", it will never actively participate + /// regardless of whether it could (e.g. keys are available locally). This + /// mode is useful as a secure proxy for validators (which would run + /// detached from the network), since we want this node to participate in + /// the full consensus protocols in order to have all needed consensus data + /// available to relay to private nodes. + #[structopt( + long = "sentry", + conflicts_with_all = &[ "validator", "light" ] + )] + pub sentry: bool, + + /// Disable GRANDPA voter when running in validator mode, otherwise disables the GRANDPA observer. + #[structopt(long = "no-grandpa")] + pub no_grandpa: bool, + + /// Experimental: Run in light client mode. + #[structopt(long = "light", conflicts_with = "sentry")] + pub light: bool, + + /// Listen to all RPC interfaces. + /// + /// Default is local. Note: not all RPC methods are safe to be exposed publicly. Use a RPC proxy + /// server to filter out dangerous methods. More details: https://github.com/paritytech/substrate/wiki/Public-RPC. + /// Use `--unsafe-rpc-external` to suppress the warning if you understand the risks. + #[structopt(long = "rpc-external")] + pub rpc_external: bool, + + /// Listen to all RPC interfaces. + /// + /// Same as `--rpc-external`. + #[structopt(long = "unsafe-rpc-external")] + pub unsafe_rpc_external: bool, + + /// Listen to all Websocket interfaces. + /// + /// Default is local. Note: not all RPC methods are safe to be exposed publicly. Use a RPC proxy + /// server to filter out dangerous methods. More details: https://github.com/paritytech/substrate/wiki/Public-RPC. + /// Use `--unsafe-ws-external` to suppress the warning if you understand the risks. + #[structopt(long = "ws-external")] + pub ws_external: bool, + + /// Listen to all Websocket interfaces. + /// + /// Same as `--ws-external` but doesn't warn you about it. + #[structopt(long = "unsafe-ws-external")] + pub unsafe_ws_external: bool, + + /// Listen to all Prometheus data source interfaces. + /// + /// Default is local. + #[structopt(long = "prometheus-external")] + pub prometheus_external: bool, + + /// Specify HTTP RPC server TCP port. + #[structopt(long = "rpc-port", value_name = "PORT")] + pub rpc_port: Option, + + /// Specify WebSockets RPC server TCP port. + #[structopt(long = "ws-port", value_name = "PORT")] + pub ws_port: Option, + + /// Maximum number of WS RPC server connections. + #[structopt(long = "ws-max-connections", value_name = "COUNT")] + pub ws_max_connections: Option, + + /// Specify browser Origins allowed to access the HTTP & WS RPC servers. + /// + /// A comma-separated list of origins (protocol://domain or special `null` + /// value). Value of `all` will disable origin validation. Default is to + /// allow localhost, https://polkadot.js.org and + /// https://substrate-ui.parity.io origins. When running in --dev mode the + /// default is to allow all origins. + #[structopt(long = "rpc-cors", value_name = "ORIGINS", parse(try_from_str = parse_cors))] + pub rpc_cors: Option, + + /// Specify Prometheus data source server TCP Port. + #[structopt(long = "prometheus-port", value_name = "PORT")] + pub prometheus_port: Option, + + /// Do not expose a Prometheus metric endpoint. + /// + /// Prometheus metric endpoint is enabled by default. + #[structopt(long = "no-prometheus")] + pub no_prometheus: bool, + + /// The human-readable name for this node. + /// + /// The node name will be reported to the telemetry server, if enabled. + #[structopt(long = "name", value_name = "NAME")] + pub name: Option, + + /// Disable connecting to the Substrate telemetry server. + /// + /// Telemetry is on by default on global chains. + #[structopt(long = "no-telemetry")] + pub no_telemetry: bool, + + /// The URL of the telemetry server to connect to. + /// + /// This flag can be passed multiple times as a mean to specify multiple + /// telemetry endpoints. Verbosity levels range from 0-9, with 0 denoting + /// the least verbosity. If no verbosity level is specified the default is + /// 0. + #[structopt(long = "telemetry-url", value_name = "URL VERBOSITY", parse(try_from_str = parse_telemetry_endpoints))] + pub telemetry_endpoints: Vec<(String, u8)>, + + /// Should execute offchain workers on every block. + /// + /// By default it's only enabled for nodes that are authoring new blocks. + #[structopt( + long = "offchain-worker", + value_name = "ENABLED", + possible_values = &OffchainWorkerEnabled::variants(), + case_insensitive = true, + default_value = "WhenValidating" + )] + pub offchain_worker: OffchainWorkerEnabled, + + #[allow(missing_docs)] + #[structopt(flatten)] + pub shared_params: SharedParams, + + #[allow(missing_docs)] + #[structopt(flatten)] + pub import_params: ImportParams, + + #[allow(missing_docs)] + #[structopt(flatten)] + pub network_config: NetworkConfigurationParams, + + #[allow(missing_docs)] + #[structopt(flatten)] + pub pool_config: TransactionPoolParams, + + /// Shortcut for `--name Alice --validator` with session keys for `Alice` added to keystore. + #[structopt(long, conflicts_with_all = &["bob", "charlie", "dave", "eve", "ferdie", "one", "two"])] + pub alice: bool, + + /// Shortcut for `--name Bob --validator` with session keys for `Bob` added to keystore. + #[structopt(long, conflicts_with_all = &["alice", "charlie", "dave", "eve", "ferdie", "one", "two"])] + pub bob: bool, + + /// Shortcut for `--name Charlie --validator` with session keys for `Charlie` added to keystore. + #[structopt(long, conflicts_with_all = &["alice", "bob", "dave", "eve", "ferdie", "one", "two"])] + pub charlie: bool, + + /// Shortcut for `--name Dave --validator` with session keys for `Dave` added to keystore. + #[structopt(long, conflicts_with_all = &["alice", "bob", "charlie", "eve", "ferdie", "one", "two"])] + pub dave: bool, + + /// Shortcut for `--name Eve --validator` with session keys for `Eve` added to keystore. + #[structopt(long, conflicts_with_all = &["alice", "bob", "charlie", "dave", "ferdie", "one", "two"])] + pub eve: bool, + + /// Shortcut for `--name Ferdie --validator` with session keys for `Ferdie` added to keystore. + #[structopt(long, conflicts_with_all = &["alice", "bob", "charlie", "dave", "eve", "one", "two"])] + pub ferdie: bool, + + /// Shortcut for `--name One --validator` with session keys for `One` added to keystore. + #[structopt(long, conflicts_with_all = &["alice", "bob", "charlie", "dave", "eve", "ferdie", "two"])] + pub one: bool, + + /// Shortcut for `--name Two --validator` with session keys for `Two` added to keystore. + #[structopt(long, conflicts_with_all = &["alice", "bob", "charlie", "dave", "eve", "ferdie", "one"])] + pub two: bool, + + /// Enable authoring even when offline. + #[structopt(long = "force-authoring")] + pub force_authoring: bool, + + /// Specify custom keystore path. + #[structopt(long = "keystore-path", value_name = "PATH", parse(from_os_str))] + pub keystore_path: Option, + + /// Use interactive shell for entering the password used by the keystore. + #[structopt( + long = "password-interactive", + conflicts_with_all = &[ "password", "password-filename" ] + )] + pub password_interactive: bool, + + /// Password used by the keystore. + #[structopt( + long = "password", + conflicts_with_all = &[ "password-interactive", "password-filename" ] + )] + pub password: Option, + + /// File that contains the password used by the keystore. + #[structopt( + long = "password-filename", + value_name = "PATH", + parse(from_os_str), + conflicts_with_all = &[ "password-interactive", "password" ] + )] + pub password_filename: Option +} + +impl RunCmd { + /// Get the `Sr25519Keyring` matching one of the flag + pub fn get_keyring(&self) -> Option { + use sp_keyring::Sr25519Keyring::*; + + if self.alice { Some(Alice) } + else if self.bob { Some(Bob) } + else if self.charlie { Some(Charlie) } + else if self.dave { Some(Dave) } + else if self.eve { Some(Eve) } + else if self.ferdie { Some(Ferdie) } + else if self.one { Some(One) } + else if self.two { Some(Two) } + else { None } + } + + /// Update and prepare a `Configuration` with command line parameters of `RunCmd` and `VersionInfo` + pub fn update_config( + &self, + mut config: &mut Configuration, + spec_factory: F, + version: &VersionInfo, + ) -> error::Result<()> + where + G: RuntimeGenesis, + E: ChainSpecExtension, + F: FnOnce(&str) -> Result>, String>, + { + self.shared_params.update_config(&mut config, spec_factory, version)?; + + let password = if self.password_interactive { + #[cfg(not(target_os = "unknown"))] + { + Some(input_keystore_password()?.into()) + } + #[cfg(target_os = "unknown")] + None + } else if let Some(ref file) = self.password_filename { + Some(fs::read_to_string(file).map_err(|e| format!("{}", e))?.into()) + } else if let Some(ref password) = self.password { + Some(password.clone().into()) + } else { + None + }; + + let path = self.keystore_path.clone().or( + config.in_chain_config_dir(DEFAULT_KEYSTORE_CONFIG_PATH) + ); + + config.keystore = KeystoreConfig::Path { + path: path.ok_or_else(|| "No `base_path` provided to create keystore path!".to_string())?, + password, + }; + + let keyring = self.get_keyring(); + let is_dev = self.shared_params.dev; + let is_light = self.light; + let is_authority = (self.validator || self.sentry || is_dev || keyring.is_some()) + && !is_light; + let role = + if is_light { + sc_service::Roles::LIGHT + } else if is_authority { + sc_service::Roles::AUTHORITY + } else { + sc_service::Roles::FULL + }; + + self.import_params.update_config(&mut config, role, is_dev)?; + + config.name = match (self.name.as_ref(), keyring) { + (Some(name), _) => name.to_string(), + (_, Some(keyring)) => keyring.to_string(), + (None, None) => generate_node_name(), + }; + if let Err(msg) = is_node_name_valid(&config.name) { + return Err(error::Error::Input( + format!("Invalid node name '{}'. Reason: {}. If unsure, use none.", + config.name, + msg, + ) + )); + } + + // set sentry mode (i.e. act as an authority but **never** actively participate) + config.sentry_mode = self.sentry; + + config.offchain_worker = match (&self.offchain_worker, role) { + (OffchainWorkerEnabled::WhenValidating, sc_service::Roles::AUTHORITY) => true, + (OffchainWorkerEnabled::Always, _) => true, + (OffchainWorkerEnabled::Never, _) => false, + (OffchainWorkerEnabled::WhenValidating, _) => false, + }; + + config.roles = role; + config.disable_grandpa = self.no_grandpa; + + let client_id = config.client_id(); + let network_path = config + .in_chain_config_dir(crate::commands::DEFAULT_NETWORK_CONFIG_PATH) + .expect("We provided a basepath"); + self.network_config.update_config( + &mut config, + network_path, + client_id, + is_dev, + )?; + + self.pool_config.update_config(&mut config)?; + + config.dev_key_seed = keyring + .map(|a| format!("//{}", a)).or_else(|| { + if is_dev && !is_light { + Some("//Alice".into()) + } else { + None + } + }); + + if config.rpc_http.is_none() || self.rpc_port.is_some() { + let rpc_interface: &str = interface_str(self.rpc_external, self.unsafe_rpc_external, self.validator)?; + config.rpc_http = Some(parse_address(&format!("{}:{}", rpc_interface, 9933), self.rpc_port)?); + } + if config.rpc_ws.is_none() || self.ws_port.is_some() { + let ws_interface: &str = interface_str(self.ws_external, self.unsafe_ws_external, self.validator)?; + config.rpc_ws = Some(parse_address(&format!("{}:{}", ws_interface, 9944), self.ws_port)?); + } + + config.rpc_ws_max_connections = self.ws_max_connections; + config.rpc_cors = self.rpc_cors.clone().unwrap_or_else(|| if is_dev { + log::warn!("Running in --dev mode, RPC CORS has been disabled."); + Cors::All + } else { + Cors::List(vec![ + "http://localhost:*".into(), + "http://127.0.0.1:*".into(), + "https://localhost:*".into(), + "https://127.0.0.1:*".into(), + "https://polkadot.js.org".into(), + "https://substrate-ui.parity.io".into(), + ]) + }).into(); + + // Override telemetry + if self.no_telemetry { + config.telemetry_endpoints = None; + } else if !self.telemetry_endpoints.is_empty() { + config.telemetry_endpoints = Some( + TelemetryEndpoints::new(self.telemetry_endpoints.clone()) + ); + } + + // Override prometheus + if self.no_prometheus { + config.prometheus_port = None; + } else if config.prometheus_port.is_none() { + let prometheus_interface: &str = if self.prometheus_external { "0.0.0.0" } else { "127.0.0.1" }; + config.prometheus_port = Some( + parse_address(&format!("{}:{}", prometheus_interface, 9615), self.prometheus_port)?); + } + + config.tracing_targets = self.import_params.tracing_targets.clone().into(); + config.tracing_receiver = self.import_params.tracing_receiver.clone().into(); + + // Imply forced authoring on --dev + config.force_authoring = self.shared_params.dev || self.force_authoring; + + Ok(()) + } + + /// Run the command that runs the node + pub fn run( + self, + config: Configuration, + new_light: FNL, + new_full: FNF, + version: &VersionInfo, + ) -> error::Result<()> + where + G: RuntimeGenesis, + E: ChainSpecExtension, + FNL: FnOnce(Configuration) -> Result, + FNF: FnOnce(Configuration) -> Result, + SL: AbstractService + Unpin, + SF: AbstractService + Unpin, + { + info!("{}", version.name); + info!(" version {}", config.full_version()); + info!(" by {}, {}-{}", version.author, version.copyright_start_year, Local::today().year()); + info!("Chain specification: {}", config.expect_chain_spec().name()); + info!("Node name: {}", config.name); + info!("Roles: {}", config.display_role()); + + match config.roles { + Roles::LIGHT => run_service_until_exit( + config, + new_light, + ), + _ => run_service_until_exit( + config, + new_full, + ), + } + } + + /// Initialize substrate. This must be done only once. + /// + /// This method: + /// + /// 1. Set the panic handler + /// 2. Raise the FD limit + /// 3. Initialize the logger + pub fn init(&self, version: &VersionInfo) -> error::Result<()> { + self.shared_params.init(version) + } +} + +/// Check whether a node name is considered as valid +pub fn is_node_name_valid(_name: &str) -> Result<(), &str> { + let name = _name.to_string(); + if name.chars().count() >= NODE_NAME_MAX_LENGTH { + return Err("Node name too long"); + } + + let invalid_chars = r"[\\.@]"; + let re = Regex::new(invalid_chars).unwrap(); + if re.is_match(&name) { + return Err("Node name should not contain invalid chars such as '.' and '@'"); + } + + let invalid_patterns = r"(https?:\\/+)?(www)+"; + let re = Regex::new(invalid_patterns).unwrap(); + if re.is_match(&name) { + return Err("Node name should not contain urls"); + } + + Ok(()) +} + +#[cfg(not(target_os = "unknown"))] +fn input_keystore_password() -> Result { + rpassword::read_password_from_tty(Some("Keystore password: ")) + .map_err(|e| format!("{:?}", e)) +} + +fn generate_node_name() -> String { + let result = loop { + let node_name = Generator::with_naming(Name::Numbered).next().unwrap(); + let count = node_name.chars().count(); + + if count < NODE_NAME_MAX_LENGTH { + break node_name + } + }; + + result +} + +fn parse_address( + address: &str, + port: Option, +) -> Result { + let mut address: SocketAddr = address.parse().map_err( + |_| format!("Invalid address: {}", address) + )?; + if let Some(port) = port { + address.set_port(port); + } + + Ok(address) +} + +fn interface_str( + is_external: bool, + is_unsafe_external: bool, + is_validator: bool, +) -> Result<&'static str, error::Error> { + if is_external && is_validator { + return Err(error::Error::Input("--rpc-external and --ws-external options shouldn't be \ + used if the node is running as a validator. Use `--unsafe-rpc-external` if you understand \ + the risks. See the options description for more information.".to_owned())); + } + + if is_external || is_unsafe_external { + log::warn!("It isn't safe to expose RPC publicly without a proxy server that filters \ + available set of RPC methods."); + + Ok("0.0.0.0") + } else { + Ok("127.0.0.1") + } +} + +/// Default to verbosity level 0, if none is provided. +fn parse_telemetry_endpoints(s: &str) -> Result<(String, u8), Box> { + let pos = s.find(' '); + match pos { + None => { + Ok((s.to_owned(), 0)) + }, + Some(pos_) => { + let verbosity = s[pos_ + 1..].parse()?; + let url = s[..pos_].parse()?; + Ok((url, verbosity)) + } + } +} + +/// CORS setting +/// +/// The type is introduced to overcome `Option>` +/// handling of `structopt`. +#[derive(Clone, Debug)] +pub enum Cors { + /// All hosts allowed + All, + /// Only hosts on the list are allowed. + List(Vec), +} + +impl From for Option> { + fn from(cors: Cors) -> Self { + match cors { + Cors::All => None, + Cors::List(list) => Some(list), + } + } +} + +/// Parse cors origins +fn parse_cors(s: &str) -> Result> { + let mut is_all = false; + let mut origins = Vec::new(); + for part in s.split(',') { + match part { + "all" | "*" => { + is_all = true; + break; + }, + other => origins.push(other.to_owned()), + } + } + + Ok(if is_all { Cors::All } else { Cors::List(origins) }) +} + +#[cfg(test)] +mod tests { + use super::*; + use sc_service::config::DatabaseConfig; + + const TEST_VERSION_INFO: &'static VersionInfo = &VersionInfo { + name: "node-test", + version: "0.1.0", + commit: "some_commit", + executable_name: "node-test", + description: "description", + author: "author", + support_url: "http://example.org", + copyright_start_year: 2020, + }; + + #[test] + fn tests_node_name_good() { + assert!(is_node_name_valid("short name").is_ok()); + } + + #[test] + fn tests_node_name_bad() { + assert!(is_node_name_valid("long names are not very cool for the ui").is_err()); + assert!(is_node_name_valid("Dots.not.Ok").is_err()); + assert!(is_node_name_valid("http://visit.me").is_err()); + assert!(is_node_name_valid("https://visit.me").is_err()); + assert!(is_node_name_valid("www.visit.me").is_err()); + assert!(is_node_name_valid("email@domain").is_err()); + } + + #[test] + fn keystore_path_is_generated_correctly() { + let chain_spec = ChainSpec::from_genesis( + "test", + "test-id", + || (), + Vec::new(), + None, + None, + None, + None::<()>, + ); + + for keystore_path in vec![None, Some("/keystore/path")] { + let args: Vec<&str> = vec![]; + let mut cli = RunCmd::from_iter(args); + cli.keystore_path = keystore_path.clone().map(PathBuf::from); + + let mut config = Configuration::default(); + config.config_dir = Some(PathBuf::from("/test/path")); + config.chain_spec = Some(chain_spec.clone()); + let chain_spec = chain_spec.clone(); + cli.update_config(&mut config, move |_| Ok(Some(chain_spec)), TEST_VERSION_INFO).unwrap(); + + let expected_path = match keystore_path { + Some(path) => PathBuf::from(path), + None => PathBuf::from("/test/path/chains/test-id/keystore"), + }; + + assert_eq!(expected_path, config.keystore.path().unwrap().to_owned()); + } + } + + #[test] + fn ensure_load_spec_provide_defaults() { + let chain_spec = ChainSpec::from_genesis( + "test", + "test-id", + || (), + vec!["boo".to_string()], + Some(TelemetryEndpoints::new(vec![("foo".to_string(), 42)])), + None, + None, + None::<()>, + ); + + let args: Vec<&str> = vec![]; + let cli = RunCmd::from_iter(args); + + let mut config = Configuration::from_version(TEST_VERSION_INFO); + cli.update_config(&mut config, |_| Ok(Some(chain_spec)), TEST_VERSION_INFO).unwrap(); + + assert!(config.chain_spec.is_some()); + assert!(!config.network.boot_nodes.is_empty()); + assert!(config.telemetry_endpoints.is_some()); + } + + #[test] + fn ensure_update_config_for_running_node_provides_defaults() { + let chain_spec = ChainSpec::from_genesis( + "test", + "test-id", + || (), + vec![], + None, + None, + None, + None::<()>, + ); + + let args: Vec<&str> = vec![]; + let cli = RunCmd::from_iter(args); + + let mut config = Configuration::from_version(TEST_VERSION_INFO); + cli.init(&TEST_VERSION_INFO).unwrap(); + cli.update_config(&mut config, |_| Ok(Some(chain_spec)), TEST_VERSION_INFO).unwrap(); + + assert!(config.config_dir.is_some()); + assert!(config.database.is_some()); + if let Some(DatabaseConfig::Path { ref cache_size, .. }) = config.database { + assert!(cache_size.is_some()); + } else { + panic!("invalid config.database variant"); + } + assert!(!config.name.is_empty()); + assert!(config.network.config_path.is_some()); + assert!(!config.network.listen_addresses.is_empty()); + } +} diff --git a/client/cli/src/error.rs b/client/cli/src/error.rs index 074cb353c3..edc1adecc7 100644 --- a/client/cli/src/error.rs +++ b/client/cli/src/error.rs @@ -49,6 +49,12 @@ impl std::convert::From for Error { } } +impl std::convert::From<&str> for Error { + fn from(s: &str) -> Error { + Error::Input(s.to_string()) + } +} + impl std::error::Error for Error { fn source(&self) -> Option<&(dyn std::error::Error + 'static)> { match self { diff --git a/client/cli/src/lib.rs b/client/cli/src/lib.rs index 3517dca378..e28edebd60 100644 --- a/client/cli/src/lib.rs +++ b/client/cli/src/lib.rs @@ -19,127 +19,33 @@ #![warn(missing_docs)] #![warn(unused_extern_crates)] -#[macro_use] -mod traits; mod params; -mod execution_strategy; -pub mod error; +mod arg_enums; +mod error; mod runtime; -mod node_key; - -use sc_client_api::execution_extensions::ExecutionStrategies; -use sc_service::{ - config::{Configuration, DatabaseConfig, KeystoreConfig}, - ServiceBuilderCommand, - RuntimeGenesis, ChainSpecExtension, PruningMode, ChainSpec, - AbstractService, Roles as ServiceRoles, -}; +mod commands; + pub use sc_service::config::VersionInfo; -use sc_network::{ - self, - multiaddr::Protocol, - config::{ - NetworkConfiguration, TransportConfig, NonReservedPeerMode, - }, -}; - -use std::{ - io::Write, iter, fmt::Debug, fs, - net::{Ipv4Addr, SocketAddr}, path::PathBuf, -}; + +use std::io::Write; use regex::Regex; -use structopt::{StructOpt, clap}; +use structopt::{StructOpt, clap::{self, AppSettings}}; pub use structopt; -use params::{ - NetworkConfigurationParams, TransactionPoolParams, Cors, -}; -pub use params::{ - SharedParams, ImportParams, ExecutionStrategy, Subcommand, RunCmd, BuildSpecCmd, - ExportBlocksCmd, ImportBlocksCmd, CheckBlockCmd, PurgeChainCmd, RevertCmd, - WasmExecutionMethod, -}; -pub use traits::GetSharedParams; -use app_dirs::{AppInfo, AppDataType}; +pub use params::*; +pub use commands::*; +pub use arg_enums::*; +pub use error::*; use log::info; use lazy_static::lazy_static; -use sc_telemetry::TelemetryEndpoints; -use sp_runtime::traits::{Block as BlockT, Header as HeaderT}; pub use crate::runtime::{run_until_exit, run_service_until_exit}; -use execution_strategy::*; -use names::{Generator, Name}; -use chrono::prelude::*; - -/// default sub directory to store network config -const DEFAULT_NETWORK_CONFIG_PATH : &'static str = "network"; -/// default sub directory to store database -const DEFAULT_DB_CONFIG_PATH : &'static str = "db"; -/// default sub directory for the key store -const DEFAULT_KEYSTORE_CONFIG_PATH : &'static str = "keystore"; - -/// The maximum number of characters for a node name. -const NODE_NAME_MAX_LENGTH: usize = 32; - -fn get_chain_key(cli: &SharedParams) -> String { - match cli.chain { - Some(ref chain) => chain.clone(), - None => if cli.dev { "dev".into() } else { "".into() } - } -} - -fn generate_node_name() -> String { - let result = loop { - let node_name = Generator::with_naming(Name::Numbered).next().unwrap(); - let count = node_name.chars().count(); - - if count < NODE_NAME_MAX_LENGTH { - break node_name - } - }; - - result -} - -/// Load spec to `Configuration` from shared params and spec factory. -pub fn load_spec<'a, G, E, F>( - mut config: &'a mut Configuration, - cli: &SharedParams, - factory: F, -) -> error::Result<&'a ChainSpec> where - G: RuntimeGenesis, - E: ChainSpecExtension, - F: FnOnce(&str) -> Result>, String>, -{ - let chain_key = get_chain_key(cli); - let spec = match factory(&chain_key)? { - Some(spec) => spec, - None => ChainSpec::from_json_file(PathBuf::from(chain_key))? - }; - - config.network.boot_nodes = spec.boot_nodes().to_vec(); - config.telemetry_endpoints = spec.telemetry_endpoints().clone(); - - config.chain_spec = Some(spec); - - Ok(config.chain_spec.as_ref().unwrap()) -} - -fn base_path(cli: &SharedParams, version: &VersionInfo) -> PathBuf { - cli.base_path.clone() - .unwrap_or_else(|| - app_dirs::get_app_root( - AppDataType::UserData, - &AppInfo { - name: version.executable_name, - author: version.author - } - ).expect("app directories exist on all supported platforms; qed") - ) -} /// Helper function used to parse the command line arguments. This is the equivalent of -/// `structopt`'s `from_args()` except that it takes a `VersionInfo` argument to provide the name of -/// the application, author, "about" and version. +/// `structopt`'s `from_iter()` except that it takes a `VersionInfo` argument to provide the name of +/// the application, author, "about" and version. It will also set `AppSettings::GlobalVersion`. +/// +/// To allow running the node without subcommand, tt also sets a few more settings: +/// `AppSettings::ArgsNegateSubcommands` and `AppSettings::SubcommandsNegateReqs`. /// /// Gets the struct from the command line arguments. Print the /// error message and quit the program in case of failure. @@ -152,7 +58,10 @@ where /// Helper function used to parse the command line arguments. This is the equivalent of /// `structopt`'s `from_iter()` except that it takes a `VersionInfo` argument to provide the name of -/// the application, author, "about" and version. +/// the application, author, "about" and version. It will also set `AppSettings::GlobalVersion`. +/// +/// To allow running the node without subcommand, tt also sets a few more settings: +/// `AppSettings::ArgsNegateSubcommands` and `AppSettings::SubcommandsNegateReqs`. /// /// Gets the struct from any iterator such as a `Vec` of your making. /// Print the error message and quit the program in case of failure. @@ -174,14 +83,22 @@ where .name(version.executable_name) .author(version.author) .about(version.description) - .version(full_version.as_str()); + .version(full_version.as_str()) + .settings(&[ + AppSettings::GlobalVersion, + AppSettings::ArgsNegateSubcommands, + AppSettings::SubcommandsNegateReqs, + ]); T::from_clap(&app.get_matches_from(iter)) } /// Helper function used to parse the command line arguments. This is the equivalent of -/// `structopt`'s `try_from_iter()` except that it takes a `VersionInfo` argument to provide the -/// name of the application, author, "about" and version. +/// `structopt`'s `from_iter()` except that it takes a `VersionInfo` argument to provide the name of +/// the application, author, "about" and version. It will also set `AppSettings::GlobalVersion`. +/// +/// To allow running the node without subcommand, tt also sets a few more settings: +/// `AppSettings::ArgsNegateSubcommands` and `AppSettings::SubcommandsNegateReqs`. /// /// Gets the struct from any iterator such as a `Vec` of your making. /// Print the error message and quit the program in case of failure. @@ -215,53 +132,6 @@ where Ok(T::from_clap(&matches)) } -/// A helper function that initializes and runs the node -pub fn run( - mut config: Configuration, - run_cmd: RunCmd, - new_light: FNL, - new_full: FNF, - spec_factory: F, - version: &VersionInfo, -) -> error::Result<()> -where - F: FnOnce(&str) -> Result>, String>, - FNL: FnOnce(Configuration) -> Result, - FNF: FnOnce(Configuration) -> Result, - G: RuntimeGenesis, - E: ChainSpecExtension, - SL: AbstractService + Unpin, - SF: AbstractService + Unpin, -{ - init(&run_cmd.shared_params, version)?; - init_config(&mut config, &run_cmd.shared_params, version, spec_factory)?; - run_cmd.run(config, new_light, new_full, version) -} - -/// A helper function that initializes and runs any of the subcommand variants of `CoreParams`. -pub fn run_subcommand( - mut config: Configuration, - subcommand: Subcommand, - spec_factory: F, - builder: B, - version: &VersionInfo, -) -> error::Result<()> -where - F: FnOnce(&str) -> Result>, String>, - B: FnOnce(Configuration) -> Result, - G: RuntimeGenesis, - E: ChainSpecExtension, - BC: ServiceBuilderCommand + Unpin, - BB: sp_runtime::traits::Block + Debug, - <<::Header as HeaderT>::Number as std::str::FromStr>::Err: std::fmt::Debug, - ::Hash: std::str::FromStr, -{ - let shared_params = subcommand.get_shared_params(); - init(shared_params, version)?; - init_config(&mut config, shared_params, version, spec_factory)?; - subcommand.run(config, builder) -} - /// Initialize substrate. This must be done only once. /// /// This method: @@ -269,7 +139,7 @@ where /// 1. Set the panic handler /// 2. Raise the FD limit /// 3. Initialize the logger -pub fn init(shared_params: &SharedParams, version: &VersionInfo) -> error::Result<()> { +pub fn init(logger_pattern: &str, version: &VersionInfo) -> error::Result<()> { let full_version = sc_service::config::full_version_from_strs( version.version, version.commit @@ -277,426 +147,11 @@ pub fn init(shared_params: &SharedParams, version: &VersionInfo) -> error::Resul sp_panic_handler::set(version.support_url, &full_version); fdlimit::raise_fd_limit(); - init_logger(shared_params.log.as_ref().map(|v| v.as_ref()).unwrap_or("")); - - Ok(()) -} - -/// Initialize the given `config`. -/// -/// This will load the chain spec, set the `config_dir` and the `database_dir`. -pub fn init_config( - config: &mut Configuration, - shared_params: &SharedParams, - version: &VersionInfo, - spec_factory: F, -) -> error::Result<()> where - F: FnOnce(&str) -> Result>, String>, - G: RuntimeGenesis, - E: ChainSpecExtension, -{ - load_spec(config, shared_params, spec_factory)?; - - if config.config_dir.is_none() { - config.config_dir = Some(base_path(&shared_params, version)); - } - - if config.database.is_none() { - config.database = Some(DatabaseConfig::Path { - path: config - .in_chain_config_dir(DEFAULT_DB_CONFIG_PATH) - .expect("We provided a base_path/config_dir."), - cache_size: None, - }); - } - - Ok(()) -} - -/// Run the node -/// -/// Builds and runs either a full or a light node, depending on the `role` within the `Configuration`. -pub fn run_node( - config: Configuration, - new_light: FNL, - new_full: FNF, - version: &VersionInfo, -) -> error::Result<()> -where - FNL: FnOnce(Configuration) -> Result, - FNF: FnOnce(Configuration) -> Result, - G: RuntimeGenesis, - E: ChainSpecExtension, - SL: AbstractService + Unpin, - SF: AbstractService + Unpin, -{ - info!("{}", version.name); - info!(" version {}", config.full_version()); - info!(" by {}, {}-{}", version.author, version.copyright_start_year, Local::today().year()); - info!("Chain specification: {}", config.expect_chain_spec().name()); - info!("Node name: {}", config.name); - info!("Roles: {}", display_role(&config)); - - match config.roles { - ServiceRoles::LIGHT => run_service_until_exit( - config, - new_light, - ), - _ => run_service_until_exit( - config, - new_full, - ), - } -} - -/// Returns a string displaying the node role, special casing the sentry mode -/// (returning `SENTRY`), since the node technically has an `AUTHORITY` role but -/// doesn't participate. -pub fn display_role(config: &Configuration) -> String { - if config.sentry_mode { - "SENTRY".to_string() - } else { - format!("{:?}", config.roles) - } -} - -/// Fill the given `PoolConfiguration` by looking at the cli parameters. -fn fill_transaction_pool_configuration( - options: &mut Configuration, - params: TransactionPoolParams, -) -> error::Result<()> { - // ready queue - options.transaction_pool.ready.count = params.pool_limit; - options.transaction_pool.ready.total_bytes = params.pool_kbytes * 1024; - - // future queue - let factor = 10; - options.transaction_pool.future.count = params.pool_limit / factor; - options.transaction_pool.future.total_bytes = params.pool_kbytes * 1024 / factor; - - Ok(()) -} - -/// Fill the given `NetworkConfiguration` by looking at the cli parameters. -fn fill_network_configuration( - cli: NetworkConfigurationParams, - config_path: PathBuf, - config: &mut NetworkConfiguration, - client_id: String, - is_dev: bool, -) -> error::Result<()> { - config.boot_nodes.extend(cli.bootnodes.into_iter()); - config.config_path = Some(config_path.to_string_lossy().into()); - config.net_config_path = config.config_path.clone(); - - config.reserved_nodes.extend(cli.reserved_nodes.into_iter()); - if cli.reserved_only { - config.non_reserved_mode = NonReservedPeerMode::Deny; - } - - config.sentry_nodes.extend(cli.sentry_nodes.into_iter()); - - for addr in cli.listen_addr.iter() { - let addr = addr.parse().ok().ok_or(error::Error::InvalidListenMultiaddress)?; - config.listen_addresses.push(addr); - } - - if config.listen_addresses.is_empty() { - let port = match cli.port { - Some(port) => port, - None => 30333, - }; - - config.listen_addresses = vec![ - iter::once(Protocol::Ip4(Ipv4Addr::new(0, 0, 0, 0))) - .chain(iter::once(Protocol::Tcp(port))) - .collect() - ]; - } - - config.client_version = client_id; - config.node_key = node_key::node_key_config(cli.node_key_params, &config.net_config_path)?; - - config.in_peers = cli.in_peers; - config.out_peers = cli.out_peers; - - config.transport = TransportConfig::Normal { - enable_mdns: !is_dev && !cli.no_mdns, - allow_private_ipv4: !cli.no_private_ipv4, - wasm_external_transport: None, - use_yamux_flow_control: cli.use_yamux_flow_control - }; - - config.max_parallel_downloads = cli.max_parallel_downloads; - - Ok(()) -} - -#[cfg(not(target_os = "unknown"))] -fn input_keystore_password() -> Result { - rpassword::read_password_from_tty(Some("Keystore password: ")) - .map_err(|e| format!("{:?}", e)) -} - -/// Use in memory keystore config when it is not required at all. -pub fn fill_config_keystore_in_memory(config: &mut sc_service::Configuration) - -> Result<(), String> -{ - match &mut config.keystore { - cfg @ KeystoreConfig::None => { *cfg = KeystoreConfig::InMemory; Ok(()) }, - _ => Err("Keystore config specified when it should not be!".into()), - } -} - -/// Fill the password field of the given config instance. -fn fill_config_keystore_password_and_path( - config: &mut sc_service::Configuration, - cli: &RunCmd, -) -> Result<(), String> { - let password = if cli.password_interactive { - #[cfg(not(target_os = "unknown"))] - { - Some(input_keystore_password()?.into()) - } - #[cfg(target_os = "unknown")] - None - } else if let Some(ref file) = cli.password_filename { - Some(fs::read_to_string(file).map_err(|e| format!("{}", e))?.into()) - } else if let Some(ref password) = cli.password { - Some(password.clone().into()) - } else { - None - }; - - let path = cli.keystore_path.clone().or( - config.in_chain_config_dir(DEFAULT_KEYSTORE_CONFIG_PATH) - ); - - config.keystore = KeystoreConfig::Path { - path: path.ok_or_else(|| "No `base_path` provided to create keystore path!")?, - password, - }; + init_logger(logger_pattern); Ok(()) } -/// Put block import CLI params into `config` object. -pub fn fill_import_params( - config: &mut Configuration, - cli: &ImportParams, - role: sc_service::Roles, - is_dev: bool, -) -> error::Result<()> -where - G: RuntimeGenesis, -{ - if let Some(DatabaseConfig::Path { ref mut cache_size, .. }) = config.database { - *cache_size = Some(cli.database_cache_size); - } - - config.state_cache_size = cli.state_cache_size; - - // by default we disable pruning if the node is an authority (i.e. - // `ArchiveAll`), otherwise we keep state for the last 256 blocks. if the - // node is an authority and pruning is enabled explicitly, then we error - // unless `unsafe_pruning` is set. - config.pruning = match &cli.pruning { - Some(ref s) if s == "archive" => PruningMode::ArchiveAll, - None if role == sc_service::Roles::AUTHORITY => PruningMode::ArchiveAll, - None => PruningMode::default(), - Some(s) => { - if role == sc_service::Roles::AUTHORITY && !cli.unsafe_pruning { - return Err(error::Error::Input( - "Validators should run with state pruning disabled (i.e. archive). \ - You can ignore this check with `--unsafe-pruning`.".to_string() - )); - } - - PruningMode::keep_blocks(s.parse() - .map_err(|_| error::Error::Input("Invalid pruning mode specified".to_string()))? - ) - }, - }; - - config.wasm_method = cli.wasm_method.into(); - - let exec = &cli.execution_strategies; - let exec_all_or = |strat: ExecutionStrategy, default: ExecutionStrategy| { - exec.execution.unwrap_or(if strat == default && is_dev { - ExecutionStrategy::Native - } else { - strat - }).into() - }; - - config.execution_strategies = ExecutionStrategies { - syncing: exec_all_or(exec.execution_syncing, DEFAULT_EXECUTION_SYNCING), - importing: exec_all_or(exec.execution_import_block, DEFAULT_EXECUTION_IMPORT_BLOCK), - block_construction: - exec_all_or(exec.execution_block_construction, DEFAULT_EXECUTION_BLOCK_CONSTRUCTION), - offchain_worker: - exec_all_or(exec.execution_offchain_worker, DEFAULT_EXECUTION_OFFCHAIN_WORKER), - other: exec_all_or(exec.execution_other, DEFAULT_EXECUTION_OTHER), - }; - Ok(()) -} - -/// Update and prepare a `Configuration` with command line parameters of `RunCmd` and `VersionInfo` -pub fn update_config_for_running_node( - mut config: &mut Configuration, - cli: RunCmd, -) -> error::Result<()> -where - G: RuntimeGenesis, -{ - fill_config_keystore_password_and_path(&mut config, &cli)?; - - let keyring = cli.get_keyring(); - let is_dev = cli.shared_params.dev; - let is_light = cli.light; - let is_authority = (cli.validator || cli.sentry || is_dev || keyring.is_some()) - && !is_light; - let role = - if is_light { - sc_service::Roles::LIGHT - } else if is_authority { - sc_service::Roles::AUTHORITY - } else { - sc_service::Roles::FULL - }; - - fill_import_params(&mut config, &cli.import_params, role, is_dev)?; - - config.name = match (cli.name.as_ref(), keyring) { - (Some(name), _) => name.to_string(), - (_, Some(keyring)) => keyring.to_string(), - (None, None) => generate_node_name(), - }; - if let Err(msg) = node_key::is_node_name_valid(&config.name) { - return Err(error::Error::Input( - format!("Invalid node name '{}'. Reason: {}. If unsure, use none.", - config.name, - msg, - ) - )); - } - - // set sentry mode (i.e. act as an authority but **never** actively participate) - config.sentry_mode = cli.sentry; - - config.offchain_worker = match (cli.offchain_worker, role) { - (params::OffchainWorkerEnabled::WhenValidating, sc_service::Roles::AUTHORITY) => true, - (params::OffchainWorkerEnabled::Always, _) => true, - (params::OffchainWorkerEnabled::Never, _) => false, - (params::OffchainWorkerEnabled::WhenValidating, _) => false, - }; - - config.roles = role; - config.disable_grandpa = cli.no_grandpa; - - let client_id = config.client_id(); - fill_network_configuration( - cli.network_config, - config.in_chain_config_dir(DEFAULT_NETWORK_CONFIG_PATH).expect("We provided a basepath"), - &mut config.network, - client_id, - is_dev, - )?; - - fill_transaction_pool_configuration(&mut config, cli.pool_config)?; - - config.dev_key_seed = keyring - .map(|a| format!("//{}", a)).or_else(|| { - if is_dev && !is_light { - Some("//Alice".into()) - } else { - None - } - }); - - if config.rpc_http.is_none() || cli.rpc_port.is_some() { - let rpc_interface: &str = interface_str(cli.rpc_external, cli.unsafe_rpc_external, cli.validator)?; - config.rpc_http = Some(parse_address(&format!("{}:{}", rpc_interface, 9933), cli.rpc_port)?); - } - if config.rpc_ws.is_none() || cli.ws_port.is_some() { - let ws_interface: &str = interface_str(cli.ws_external, cli.unsafe_ws_external, cli.validator)?; - config.rpc_ws = Some(parse_address(&format!("{}:{}", ws_interface, 9944), cli.ws_port)?); - } - - config.rpc_ws_max_connections = cli.ws_max_connections; - config.rpc_cors = cli.rpc_cors.unwrap_or_else(|| if is_dev { - log::warn!("Running in --dev mode, RPC CORS has been disabled."); - Cors::All - } else { - Cors::List(vec![ - "http://localhost:*".into(), - "http://127.0.0.1:*".into(), - "https://localhost:*".into(), - "https://127.0.0.1:*".into(), - "https://polkadot.js.org".into(), - "https://substrate-ui.parity.io".into(), - ]) - }).into(); - - // Override telemetry - if cli.no_telemetry { - config.telemetry_endpoints = None; - } else if !cli.telemetry_endpoints.is_empty() { - config.telemetry_endpoints = Some(TelemetryEndpoints::new(cli.telemetry_endpoints)); - } - // Override prometheus - if cli.no_prometheus { - config.prometheus_port = None; - } else { - let prometheus_interface: &str = if cli.prometheus_external { "0.0.0.0" } else { "127.0.0.1" }; - config.prometheus_port = Some( - parse_address(&format!("{}:{}", prometheus_interface, 9615), cli.prometheus_port)?); - } - - config.tracing_targets = cli.import_params.tracing_targets.into(); - config.tracing_receiver = cli.import_params.tracing_receiver.into(); - - // Imply forced authoring on --dev - config.force_authoring = cli.shared_params.dev || cli.force_authoring; - - Ok(()) -} - -fn interface_str( - is_external: bool, - is_unsafe_external: bool, - is_validator: bool, -) -> Result<&'static str, error::Error> { - if is_external && is_validator { - return Err(error::Error::Input("--rpc-external and --ws-external options shouldn't be \ - used if the node is running as a validator. Use `--unsafe-rpc-external` if you understand \ - the risks. See the options description for more information.".to_owned())); - } - - if is_external || is_unsafe_external { - log::warn!("It isn't safe to expose RPC publicly without a proxy server that filters \ - available set of RPC methods."); - - Ok("0.0.0.0") - } else { - Ok("127.0.0.1") - } -} - -fn parse_address( - address: &str, - port: Option, -) -> Result { - let mut address: SocketAddr = address.parse().map_err( - |_| format!("Invalid address: {}", address) - )?; - if let Some(port) = port { - address.set_port(port); - } - - Ok(address) -} - /// Initialize the logger pub fn init_logger(pattern: &str) { use ansi_term::Colour; @@ -766,116 +221,3 @@ fn kill_color(s: &str) -> String { } RE.replace_all(s, "").to_string() } - -#[cfg(test)] -mod tests { - use super::*; - - const TEST_VERSION_INFO: &'static VersionInfo = &VersionInfo { - name: "node-test", - version: "0.1.0", - commit: "some_commit", - executable_name: "node-test", - description: "description", - author: "author", - support_url: "http://example.org", - copyright_start_year: 2020, - }; - - #[test] - fn keystore_path_is_generated_correctly() { - let chain_spec = ChainSpec::from_genesis( - "test", - "test-id", - || (), - Vec::new(), - None, - None, - None, - None::<()>, - ); - - for keystore_path in vec![None, Some("/keystore/path")] { - let args: Vec<&str> = vec![]; - let mut run_cmds = RunCmd::from_iter(args); - run_cmds.keystore_path = keystore_path.clone().map(PathBuf::from); - - let mut node_config = Configuration::default(); - node_config.config_dir = Some(PathBuf::from("/test/path")); - node_config.chain_spec = Some(chain_spec.clone()); - update_config_for_running_node( - &mut node_config, - run_cmds.clone(), - ).unwrap(); - - let expected_path = match keystore_path { - Some(path) => PathBuf::from(path), - None => PathBuf::from("/test/path/chains/test-id/keystore"), - }; - - assert_eq!(expected_path, node_config.keystore.path().unwrap().to_owned()); - } - } - - #[test] - fn ensure_load_spec_provide_defaults() { - let chain_spec = ChainSpec::from_genesis( - "test", - "test-id", - || (), - vec!["boo".to_string()], - Some(TelemetryEndpoints::new(vec![("foo".to_string(), 42)])), - None, - None, - None::<()>, - ); - - let args: Vec<&str> = vec![]; - let cli = RunCmd::from_iter(args); - - let mut config = Configuration::new(TEST_VERSION_INFO); - load_spec(&mut config, &cli.shared_params, |_| Ok(Some(chain_spec))).unwrap(); - - assert!(config.chain_spec.is_some()); - assert!(!config.network.boot_nodes.is_empty()); - assert!(config.telemetry_endpoints.is_some()); - } - - #[test] - fn ensure_update_config_for_running_node_provides_defaults() { - let chain_spec = ChainSpec::from_genesis( - "test", - "test-id", - || (), - vec![], - None, - None, - None, - None::<()>, - ); - - let args: Vec<&str> = vec![]; - let cli = RunCmd::from_iter(args); - - let mut config = Configuration::new(TEST_VERSION_INFO); - init(&cli.shared_params, &TEST_VERSION_INFO).unwrap(); - init_config( - &mut config, - &cli.shared_params, - &TEST_VERSION_INFO, - |_| Ok(Some(chain_spec)), - ).unwrap(); - update_config_for_running_node(&mut config, cli).unwrap(); - - assert!(config.config_dir.is_some()); - assert!(config.database.is_some()); - if let Some(DatabaseConfig::Path { ref cache_size, .. }) = config.database { - assert!(cache_size.is_some()); - } else { - panic!("invalid config.database variant"); - } - assert!(!config.name.is_empty()); - assert!(config.network.config_path.is_some()); - assert!(!config.network.listen_addresses.is_empty()); - } -} diff --git a/client/cli/src/node_key.rs b/client/cli/src/node_key.rs deleted file mode 100644 index 4401481ca5..0000000000 --- a/client/cli/src/node_key.rs +++ /dev/null @@ -1,209 +0,0 @@ -// Copyright 2017-2020 Parity Technologies (UK) Ltd. -// This file is part of Substrate. - -// Substrate is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Substrate is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Substrate. If not, see . - -use sc_network::{ - self, - config::{ - NodeKeyConfig, - }, -}; -use sp_core::H256; -use regex::Regex; -use std::{path::{Path, PathBuf}, str::FromStr}; -use crate::error; -use crate::params::{NodeKeyParams, NodeKeyType}; - -/// The file name of the node's Ed25519 secret key inside the chain-specific -/// network config directory, if neither `--node-key` nor `--node-key-file` -/// is specified in combination with `--node-key-type=ed25519`. -const NODE_KEY_ED25519_FILE: &str = "secret_ed25519"; - -/// Check whether a node name is considered as valid -pub fn is_node_name_valid(_name: &str) -> Result<(), &str> { - let name = _name.to_string(); - if name.chars().count() >= crate::NODE_NAME_MAX_LENGTH { - return Err("Node name too long"); - } - - let invalid_chars = r"[\\.@]"; - let re = Regex::new(invalid_chars).unwrap(); - if re.is_match(&name) { - return Err("Node name should not contain invalid chars such as '.' and '@'"); - } - - let invalid_patterns = r"(https?:\\/+)?(www)+"; - let re = Regex::new(invalid_patterns).unwrap(); - if re.is_match(&name) { - return Err("Node name should not contain urls"); - } - - Ok(()) -} - -/// Create a `NodeKeyConfig` from the given `NodeKeyParams` in the context -/// of an optional network config storage directory. -pub fn node_key_config

(params: NodeKeyParams, net_config_dir: &Option

) - -> error::Result -where - P: AsRef -{ - match params.node_key_type { - NodeKeyType::Ed25519 => - params.node_key.as_ref().map(parse_ed25519_secret).unwrap_or_else(|| - Ok(params.node_key_file - .or_else(|| net_config_file(net_config_dir, NODE_KEY_ED25519_FILE)) - .map(sc_network::config::Secret::File) - .unwrap_or(sc_network::config::Secret::New))) - .map(NodeKeyConfig::Ed25519) - } -} - -/// Create an error caused by an invalid node key argument. -fn invalid_node_key(e: impl std::fmt::Display) -> error::Error { - error::Error::Input(format!("Invalid node key: {}", e)) -} - -/// Parse a Ed25519 secret key from a hex string into a `sc_network::Secret`. -fn parse_ed25519_secret(hex: &String) -> error::Result { - H256::from_str(&hex).map_err(invalid_node_key).and_then(|bytes| - sc_network::config::identity::ed25519::SecretKey::from_bytes(bytes) - .map(sc_network::config::Secret::Input) - .map_err(invalid_node_key)) -} - -fn net_config_file

(net_config_dir: &Option

, name: &str) -> Option -where - P: AsRef -{ - net_config_dir.as_ref().map(|d| d.as_ref().join(name)) -} - -#[cfg(test)] -mod tests { - use sc_network::config::identity::ed25519; - use super::*; - - #[test] - fn tests_node_name_good() { - assert!(is_node_name_valid("short name").is_ok()); - } - - #[test] - fn tests_node_name_bad() { - assert!(is_node_name_valid("long names are not very cool for the ui").is_err()); - assert!(is_node_name_valid("Dots.not.Ok").is_err()); - assert!(is_node_name_valid("http://visit.me").is_err()); - assert!(is_node_name_valid("https://visit.me").is_err()); - assert!(is_node_name_valid("www.visit.me").is_err()); - assert!(is_node_name_valid("email@domain").is_err()); - } - - #[test] - fn test_node_key_config_input() { - fn secret_input(net_config_dir: Option) -> error::Result<()> { - NodeKeyType::variants().iter().try_for_each(|t| { - let node_key_type = NodeKeyType::from_str(t).unwrap(); - let sk = match node_key_type { - NodeKeyType::Ed25519 => ed25519::SecretKey::generate().as_ref().to_vec() - }; - let params = NodeKeyParams { - node_key_type, - node_key: Some(format!("{:x}", H256::from_slice(sk.as_ref()))), - node_key_file: None - }; - node_key_config(params, &net_config_dir).and_then(|c| match c { - NodeKeyConfig::Ed25519(sc_network::config::Secret::Input(ref ski)) - if node_key_type == NodeKeyType::Ed25519 && - &sk[..] == ski.as_ref() => Ok(()), - _ => Err(error::Error::Input("Unexpected node key config".into())) - }) - }) - } - - assert!(secret_input(None).is_ok()); - assert!(secret_input(Some("x".to_string())).is_ok()); - } - - #[test] - fn test_node_key_config_file() { - fn secret_file(net_config_dir: Option) -> error::Result<()> { - NodeKeyType::variants().iter().try_for_each(|t| { - let node_key_type = NodeKeyType::from_str(t).unwrap(); - let tmp = tempfile::Builder::new().prefix("alice").tempdir()?; - let file = tmp.path().join(format!("{}_mysecret", t)).to_path_buf(); - let params = NodeKeyParams { - node_key_type, - node_key: None, - node_key_file: Some(file.clone()) - }; - node_key_config(params, &net_config_dir).and_then(|c| match c { - NodeKeyConfig::Ed25519(sc_network::config::Secret::File(ref f)) - if node_key_type == NodeKeyType::Ed25519 && f == &file => Ok(()), - _ => Err(error::Error::Input("Unexpected node key config".into())) - }) - }) - } - - assert!(secret_file(None).is_ok()); - assert!(secret_file(Some("x".to_string())).is_ok()); - } - - #[test] - fn test_node_key_config_default() { - fn with_def_params(f: F) -> error::Result<()> - where - F: Fn(NodeKeyParams) -> error::Result<()> - { - NodeKeyType::variants().iter().try_for_each(|t| { - let node_key_type = NodeKeyType::from_str(t).unwrap(); - f(NodeKeyParams { - node_key_type, - node_key: None, - node_key_file: None - }) - }) - } - - fn no_config_dir() -> error::Result<()> { - with_def_params(|params| { - let typ = params.node_key_type; - node_key_config::(params, &None) - .and_then(|c| match c { - NodeKeyConfig::Ed25519(sc_network::config::Secret::New) - if typ == NodeKeyType::Ed25519 => Ok(()), - _ => Err(error::Error::Input("Unexpected node key config".into())) - }) - }) - } - - fn some_config_dir(net_config_dir: String) -> error::Result<()> { - with_def_params(|params| { - let dir = PathBuf::from(net_config_dir.clone()); - let typ = params.node_key_type; - node_key_config(params, &Some(net_config_dir.clone())) - .and_then(move |c| match c { - NodeKeyConfig::Ed25519(sc_network::config::Secret::File(ref f)) - if typ == NodeKeyType::Ed25519 && - f == &dir.join(NODE_KEY_ED25519_FILE) => Ok(()), - _ => Err(error::Error::Input("Unexpected node key config".into())) - }) - }) - } - - assert!(no_config_dir().is_ok()); - assert!(some_config_dir("x".to_string()).is_ok()); - } -} diff --git a/client/cli/src/params.rs b/client/cli/src/params.rs deleted file mode 100644 index a1a8b9c5b4..0000000000 --- a/client/cli/src/params.rs +++ /dev/null @@ -1,1202 +0,0 @@ -// Copyright 2018-2020 Parity Technologies (UK) Ltd. -// This file is part of Substrate. - -// Substrate is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Substrate is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Substrate. If not, see . - -use std::{str::FromStr, path::PathBuf}; -use structopt::{StructOpt, clap::arg_enum}; -use sc_service::{ - AbstractService, Configuration, ChainSpecExtension, RuntimeGenesis, ServiceBuilderCommand, - config::DatabaseConfig, -}; -use sp_runtime::traits::{Block as BlockT, Header as HeaderT}; -use crate::VersionInfo; -use crate::error; -use std::fmt::Debug; -use log::info; -use sc_network::config::build_multiaddr; -use std::io; -use std::fs; -use std::io::{Read, Write, Seek}; -use sp_runtime::generic::BlockId; -use crate::runtime::run_until_exit; -use crate::node_key::node_key_config; -use crate::execution_strategy::*; - -pub use crate::execution_strategy::ExecutionStrategy; - -impl Into for ExecutionStrategy { - fn into(self) -> sc_client_api::ExecutionStrategy { - match self { - ExecutionStrategy::Native => sc_client_api::ExecutionStrategy::NativeWhenPossible, - ExecutionStrategy::Wasm => sc_client_api::ExecutionStrategy::AlwaysWasm, - ExecutionStrategy::Both => sc_client_api::ExecutionStrategy::Both, - ExecutionStrategy::NativeElseWasm => sc_client_api::ExecutionStrategy::NativeElseWasm, - } - } -} - -#[allow(missing_docs)] -mod wasm_execution_method { - use super::*; - - arg_enum! { - /// How to execute Wasm runtime code - #[derive(Debug, Clone, Copy)] - pub enum WasmExecutionMethod { - // Uses an interpreter. - Interpreted, - // Uses a compiled runtime. - Compiled, - } - } - - impl WasmExecutionMethod { - /// Returns list of variants that are not disabled by feature flags. - pub fn enabled_variants() -> Vec<&'static str> { - Self::variants() - .iter() - .cloned() - .filter(|&name| cfg!(feature = "wasmtime") || name != "Compiled") - .collect() - } - } -} - -pub use wasm_execution_method::WasmExecutionMethod; - -impl Into for WasmExecutionMethod { - fn into(self) -> sc_service::config::WasmExecutionMethod { - match self { - WasmExecutionMethod::Interpreted => sc_service::config::WasmExecutionMethod::Interpreted, - #[cfg(feature = "wasmtime")] - WasmExecutionMethod::Compiled => sc_service::config::WasmExecutionMethod::Compiled, - #[cfg(not(feature = "wasmtime"))] - WasmExecutionMethod::Compiled => panic!( - "Substrate must be compiled with \"wasmtime\" feature for compiled Wasm execution" - ), - } - } -} - -arg_enum! { - /// Whether off-chain workers are enabled. - #[allow(missing_docs)] - #[derive(Debug, Clone)] - pub enum OffchainWorkerEnabled { - Always, - Never, - WhenValidating, - } -} - -/// Shared parameters used by all `CoreParams`. -#[derive(Debug, StructOpt, Clone)] -pub struct SharedParams { - /// Specify the chain specification (one of dev, local or staging). - #[structopt(long = "chain", value_name = "CHAIN_SPEC")] - pub chain: Option, - - /// Specify the development chain. - #[structopt(long = "dev")] - pub dev: bool, - - /// Specify custom base path. - #[structopt(long = "base-path", short = "d", value_name = "PATH", parse(from_os_str))] - pub base_path: Option, - - /// Sets a custom logging filter. - #[structopt(short = "l", long = "log", value_name = "LOG_PATTERN")] - pub log: Option, -} - -/// Parameters for block import. -#[derive(Debug, StructOpt, Clone)] -pub struct ImportParams { - /// Specify the state pruning mode, a number of blocks to keep or 'archive'. - /// - /// Default is to keep all block states if the node is running as a - /// validator (i.e. 'archive'), otherwise state is only kept for the last - /// 256 blocks. - #[structopt(long = "pruning", value_name = "PRUNING_MODE")] - pub pruning: Option, - - /// Force start with unsafe pruning settings. - /// - /// When running as a validator it is highly recommended to disable state - /// pruning (i.e. 'archive') which is the default. The node will refuse to - /// start as a validator if pruning is enabled unless this option is set. - #[structopt(long = "unsafe-pruning")] - pub unsafe_pruning: bool, - - /// Method for executing Wasm runtime code. - #[structopt( - long = "wasm-execution", - value_name = "METHOD", - possible_values = &WasmExecutionMethod::enabled_variants(), - case_insensitive = true, - default_value = "Interpreted" - )] - pub wasm_method: WasmExecutionMethod, - - #[allow(missing_docs)] - #[structopt(flatten)] - pub execution_strategies: ExecutionStrategies, - - /// Limit the memory the database cache can use. - #[structopt(long = "db-cache", value_name = "MiB", default_value = "1024")] - pub database_cache_size: u32, - - /// Specify the state cache size. - #[structopt(long = "state-cache-size", value_name = "Bytes", default_value = "67108864")] - pub state_cache_size: usize, - - /// Comma separated list of targets for tracing - #[structopt(long = "tracing-targets", value_name = "TARGETS")] - pub tracing_targets: Option, - - /// Receiver to process tracing messages - #[structopt( - long = "tracing-receiver", - value_name = "RECEIVER", - possible_values = &TracingReceiver::variants(), - case_insensitive = true, - default_value = "Log" - )] - pub tracing_receiver: TracingReceiver, -} - -/// Parameters used to create the network configuration. -#[derive(Debug, StructOpt, Clone)] -pub struct NetworkConfigurationParams { - /// Specify a list of bootnodes. - #[structopt(long = "bootnodes", value_name = "URL")] - pub bootnodes: Vec, - - /// Specify a list of reserved node addresses. - #[structopt(long = "reserved-nodes", value_name = "URL")] - pub reserved_nodes: Vec, - - /// Whether to only allow connections to/from reserved nodes. - /// - /// If you are a validator your node might still connect to other validator - /// nodes regardless of whether they are defined as reserved nodes. - #[structopt(long = "reserved-only")] - pub reserved_only: bool, - - /// Specify a list of sentry node public addresses. - #[structopt( - long = "sentry-nodes", - value_name = "URL", - conflicts_with_all = &[ "sentry" ] - )] - pub sentry_nodes: Vec, - - /// Listen on this multiaddress. - #[structopt(long = "listen-addr", value_name = "LISTEN_ADDR")] - pub listen_addr: Vec, - - /// Specify p2p protocol TCP port. - /// - /// Only used if --listen-addr is not specified. - #[structopt(long = "port", value_name = "PORT")] - pub port: Option, - - /// Forbid connecting to private IPv4 addresses (as specified in - /// [RFC1918](https://tools.ietf.org/html/rfc1918)), unless the address was passed with - /// `--reserved-nodes` or `--bootnodes`. - #[structopt(long = "no-private-ipv4")] - pub no_private_ipv4: bool, - - /// Specify the number of outgoing connections we're trying to maintain. - #[structopt(long = "out-peers", value_name = "COUNT", default_value = "25")] - pub out_peers: u32, - - /// Specify the maximum number of incoming connections we're accepting. - #[structopt(long = "in-peers", value_name = "COUNT", default_value = "25")] - pub in_peers: u32, - - /// Disable mDNS discovery. - /// - /// By default, the network will use mDNS to discover other nodes on the - /// local network. This disables it. Automatically implied when using --dev. - #[structopt(long = "no-mdns")] - pub no_mdns: bool, - - /// Maximum number of peers to ask the same blocks in parallel. - /// - /// This allows downlading announced blocks from multiple peers. Decrease to save - /// traffic and risk increased latency. - #[structopt(long = "max-parallel-downloads", value_name = "COUNT", default_value = "5")] - pub max_parallel_downloads: u32, - - #[allow(missing_docs)] - #[structopt(flatten)] - pub node_key_params: NodeKeyParams, - - /// Experimental feature flag. - #[structopt(long = "use-yamux-flow-control")] - pub use_yamux_flow_control: bool, -} - -arg_enum! { - #[allow(missing_docs)] - #[derive(Debug, Copy, Clone, PartialEq, Eq)] - pub enum NodeKeyType { - Ed25519 - } -} - -/// Parameters used to create the `NodeKeyConfig`, which determines the keypair -/// used for libp2p networking. -#[derive(Debug, StructOpt, Clone)] -pub struct NodeKeyParams { - /// The secret key to use for libp2p networking. - /// - /// The value is a string that is parsed according to the choice of - /// `--node-key-type` as follows: - /// - /// `ed25519`: - /// The value is parsed as a hex-encoded Ed25519 32 bytes secret key, - /// i.e. 64 hex characters. - /// - /// The value of this option takes precedence over `--node-key-file`. - /// - /// WARNING: Secrets provided as command-line arguments are easily exposed. - /// Use of this option should be limited to development and testing. To use - /// an externally managed secret key, use `--node-key-file` instead. - #[structopt(long = "node-key", value_name = "KEY")] - pub node_key: Option, - - /// The type of secret key to use for libp2p networking. - /// - /// The secret key of the node is obtained as follows: - /// - /// * If the `--node-key` option is given, the value is parsed as a secret key - /// according to the type. See the documentation for `--node-key`. - /// - /// * If the `--node-key-file` option is given, the secret key is read from the - /// specified file. See the documentation for `--node-key-file`. - /// - /// * Otherwise, the secret key is read from a file with a predetermined, - /// type-specific name from the chain-specific network config directory - /// inside the base directory specified by `--base-dir`. If this file does - /// not exist, it is created with a newly generated secret key of the - /// chosen type. - /// - /// The node's secret key determines the corresponding public key and hence the - /// node's peer ID in the context of libp2p. - #[structopt( - long = "node-key-type", - value_name = "TYPE", - possible_values = &NodeKeyType::variants(), - case_insensitive = true, - default_value = "Ed25519" - )] - pub node_key_type: NodeKeyType, - - /// The file from which to read the node's secret key to use for libp2p networking. - /// - /// The contents of the file are parsed according to the choice of `--node-key-type` - /// as follows: - /// - /// `ed25519`: - /// The file must contain an unencoded 32 bytes Ed25519 secret key. - /// - /// If the file does not exist, it is created with a newly generated secret key of - /// the chosen type. - #[structopt(long = "node-key-file", value_name = "FILE")] - pub node_key_file: Option, -} - -/// Parameters used to create the pool configuration. -#[derive(Debug, StructOpt, Clone)] -pub struct TransactionPoolParams { - /// Maximum number of transactions in the transaction pool. - #[structopt(long = "pool-limit", value_name = "COUNT", default_value = "8192")] - pub pool_limit: usize, - /// Maximum number of kilobytes of all transactions stored in the pool. - #[structopt(long = "pool-kbytes", value_name = "COUNT", default_value = "20480")] - pub pool_kbytes: usize, -} - -arg_enum! { - #[allow(missing_docs)] - #[derive(Debug, Copy, Clone, PartialEq, Eq)] - pub enum TracingReceiver { - Log, - Telemetry, - } -} - -impl Into for TracingReceiver { - fn into(self) -> sc_tracing::TracingReceiver { - match self { - TracingReceiver::Log => sc_tracing::TracingReceiver::Log, - TracingReceiver::Telemetry => sc_tracing::TracingReceiver::Telemetry, - } - } -} - -/// Execution strategies parameters. -#[derive(Debug, StructOpt, Clone)] -pub struct ExecutionStrategies { - /// The means of execution used when calling into the runtime while syncing blocks. - #[structopt( - long = "execution-syncing", - value_name = "STRATEGY", - possible_values = &ExecutionStrategy::variants(), - case_insensitive = true, - default_value = DEFAULT_EXECUTION_SYNCING.as_str(), - )] - pub execution_syncing: ExecutionStrategy, - - /// The means of execution used when calling into the runtime while importing blocks. - #[structopt( - long = "execution-import-block", - value_name = "STRATEGY", - possible_values = &ExecutionStrategy::variants(), - case_insensitive = true, - default_value = DEFAULT_EXECUTION_IMPORT_BLOCK.as_str(), - )] - pub execution_import_block: ExecutionStrategy, - - /// The means of execution used when calling into the runtime while constructing blocks. - #[structopt( - long = "execution-block-construction", - value_name = "STRATEGY", - possible_values = &ExecutionStrategy::variants(), - case_insensitive = true, - default_value = DEFAULT_EXECUTION_BLOCK_CONSTRUCTION.as_str(), - )] - pub execution_block_construction: ExecutionStrategy, - - /// The means of execution used when calling into the runtime while using an off-chain worker. - #[structopt( - long = "execution-offchain-worker", - value_name = "STRATEGY", - possible_values = &ExecutionStrategy::variants(), - case_insensitive = true, - default_value = DEFAULT_EXECUTION_OFFCHAIN_WORKER.as_str(), - )] - pub execution_offchain_worker: ExecutionStrategy, - - /// The means of execution used when calling into the runtime while not syncing, importing or constructing blocks. - #[structopt( - long = "execution-other", - value_name = "STRATEGY", - possible_values = &ExecutionStrategy::variants(), - case_insensitive = true, - default_value = DEFAULT_EXECUTION_OTHER.as_str(), - )] - pub execution_other: ExecutionStrategy, - - /// The execution strategy that should be used by all execution contexts. - #[structopt( - long = "execution", - value_name = "STRATEGY", - possible_values = &ExecutionStrategy::variants(), - case_insensitive = true, - conflicts_with_all = &[ - "execution-other", - "execution-offchain-worker", - "execution-block-construction", - "execution-import-block", - "execution-syncing", - ] - )] - pub execution: Option, -} - -/// The `run` command used to run a node. -#[derive(Debug, StructOpt, Clone)] -pub struct RunCmd { - /// Enable validator mode. - /// - /// The node will be started with the authority role and actively - /// participate in any consensus task that it can (e.g. depending on - /// availability of local keys). - #[structopt( - long = "validator", - conflicts_with_all = &[ "sentry" ] - )] - pub validator: bool, - - /// Enable sentry mode. - /// - /// The node will be started with the authority role and participate in - /// consensus tasks as an "observer", it will never actively participate - /// regardless of whether it could (e.g. keys are available locally). This - /// mode is useful as a secure proxy for validators (which would run - /// detached from the network), since we want this node to participate in - /// the full consensus protocols in order to have all needed consensus data - /// available to relay to private nodes. - #[structopt( - long = "sentry", - conflicts_with_all = &[ "validator", "light" ] - )] - pub sentry: bool, - - /// Disable GRANDPA voter when running in validator mode, otherwise disables the GRANDPA observer. - #[structopt(long = "no-grandpa")] - pub no_grandpa: bool, - - /// Experimental: Run in light client mode. - #[structopt(long = "light", conflicts_with = "sentry")] - pub light: bool, - - /// Listen to all RPC interfaces. - /// - /// Default is local. Note: not all RPC methods are safe to be exposed publicly. Use a RPC proxy - /// server to filter out dangerous methods. More details: https://github.com/paritytech/substrate/wiki/Public-RPC. - /// Use `--unsafe-rpc-external` to suppress the warning if you understand the risks. - #[structopt(long = "rpc-external")] - pub rpc_external: bool, - - /// Listen to all RPC interfaces. - /// - /// Same as `--rpc-external`. - #[structopt(long = "unsafe-rpc-external")] - pub unsafe_rpc_external: bool, - - /// Listen to all Websocket interfaces. - /// - /// Default is local. Note: not all RPC methods are safe to be exposed publicly. Use a RPC proxy - /// server to filter out dangerous methods. More details: https://github.com/paritytech/substrate/wiki/Public-RPC. - /// Use `--unsafe-ws-external` to suppress the warning if you understand the risks. - #[structopt(long = "ws-external")] - pub ws_external: bool, - - /// Listen to all Websocket interfaces. - /// - /// Same as `--ws-external`. - #[structopt(long = "unsafe-ws-external")] - pub unsafe_ws_external: bool, - - /// Listen to all Prometheus endpoint interfaces. - /// - /// Default is local. - #[structopt(long = "prometheus-external")] - pub prometheus_external: bool, - - /// Specify HTTP RPC server TCP port. - #[structopt(long = "rpc-port", value_name = "PORT")] - pub rpc_port: Option, - - /// Specify WebSockets RPC server TCP port. - #[structopt(long = "ws-port", value_name = "PORT")] - pub ws_port: Option, - - /// Maximum number of WS RPC server connections. - #[structopt(long = "ws-max-connections", value_name = "COUNT")] - pub ws_max_connections: Option, - - /// Specify browser Origins allowed to access the HTTP & WS RPC servers. - /// - /// A comma-separated list of origins (protocol://domain or special `null` - /// value). Value of `all` will disable origin validation. Default is to - /// allow localhost, https://polkadot.js.org and - /// https://substrate-ui.parity.io origins. When running in --dev mode the - /// default is to allow all origins. - #[structopt(long = "rpc-cors", value_name = "ORIGINS", parse(try_from_str = parse_cors))] - pub rpc_cors: Option, - - /// Specify Prometheus endpoint TCP Port. - #[structopt(long = "prometheus-port", value_name = "PORT")] - pub prometheus_port: Option, - - /// Do not expose a Prometheus metric endpoint. - /// - /// Prometheus metric endpoint is enabled by default. - #[structopt(long = "no-prometheus")] - pub no_prometheus: bool, - - /// The human-readable name for this node. - /// - /// The node name will be reported to the telemetry server, if enabled. - #[structopt(long = "name", value_name = "NAME")] - pub name: Option, - - /// Disable connecting to the Substrate telemetry server. - /// - /// Telemetry is on by default on global chains. - #[structopt(long = "no-telemetry")] - pub no_telemetry: bool, - - /// The URL of the telemetry server to connect to. - /// - /// This flag can be passed multiple times as a mean to specify multiple - /// telemetry endpoints. Verbosity levels range from 0-9, with 0 denoting - /// the least verbosity. If no verbosity level is specified the default is - /// 0. - #[structopt(long = "telemetry-url", value_name = "URL VERBOSITY", parse(try_from_str = parse_telemetry_endpoints))] - pub telemetry_endpoints: Vec<(String, u8)>, - - /// Should execute offchain workers on every block. - /// - /// By default it's only enabled for nodes that are authoring new blocks. - #[structopt( - long = "offchain-worker", - value_name = "ENABLED", - possible_values = &OffchainWorkerEnabled::variants(), - case_insensitive = true, - default_value = "WhenValidating" - )] - pub offchain_worker: OffchainWorkerEnabled, - - #[allow(missing_docs)] - #[structopt(flatten)] - pub shared_params: SharedParams, - - #[allow(missing_docs)] - #[structopt(flatten)] - pub import_params: ImportParams, - - #[allow(missing_docs)] - #[structopt(flatten)] - pub network_config: NetworkConfigurationParams, - - #[allow(missing_docs)] - #[structopt(flatten)] - pub pool_config: TransactionPoolParams, - - /// Shortcut for `--name Alice --validator` with session keys for `Alice` added to keystore. - #[structopt(long, conflicts_with_all = &["bob", "charlie", "dave", "eve", "ferdie", "one", "two"])] - pub alice: bool, - - /// Shortcut for `--name Bob --validator` with session keys for `Bob` added to keystore. - #[structopt(long, conflicts_with_all = &["alice", "charlie", "dave", "eve", "ferdie", "one", "two"])] - pub bob: bool, - - /// Shortcut for `--name Charlie --validator` with session keys for `Charlie` added to keystore. - #[structopt(long, conflicts_with_all = &["alice", "bob", "dave", "eve", "ferdie", "one", "two"])] - pub charlie: bool, - - /// Shortcut for `--name Dave --validator` with session keys for `Dave` added to keystore. - #[structopt(long, conflicts_with_all = &["alice", "bob", "charlie", "eve", "ferdie", "one", "two"])] - pub dave: bool, - - /// Shortcut for `--name Eve --validator` with session keys for `Eve` added to keystore. - #[structopt(long, conflicts_with_all = &["alice", "bob", "charlie", "dave", "ferdie", "one", "two"])] - pub eve: bool, - - /// Shortcut for `--name Ferdie --validator` with session keys for `Ferdie` added to keystore. - #[structopt(long, conflicts_with_all = &["alice", "bob", "charlie", "dave", "eve", "one", "two"])] - pub ferdie: bool, - - /// Shortcut for `--name One --validator` with session keys for `One` added to keystore. - #[structopt(long, conflicts_with_all = &["alice", "bob", "charlie", "dave", "eve", "ferdie", "two"])] - pub one: bool, - - /// Shortcut for `--name Two --validator` with session keys for `Two` added to keystore. - #[structopt(long, conflicts_with_all = &["alice", "bob", "charlie", "dave", "eve", "ferdie", "one"])] - pub two: bool, - - /// Enable authoring even when offline. - #[structopt(long = "force-authoring")] - pub force_authoring: bool, - - /// Specify custom keystore path. - #[structopt(long = "keystore-path", value_name = "PATH", parse(from_os_str))] - pub keystore_path: Option, - - /// Use interactive shell for entering the password used by the keystore. - #[structopt( - long = "password-interactive", - conflicts_with_all = &[ "password", "password-filename" ] - )] - pub password_interactive: bool, - - /// Password used by the keystore. - #[structopt( - long = "password", - conflicts_with_all = &[ "password-interactive", "password-filename" ] - )] - pub password: Option, - - /// File that contains the password used by the keystore. - #[structopt( - long = "password-filename", - value_name = "PATH", - parse(from_os_str), - conflicts_with_all = &[ "password-interactive", "password" ] - )] - pub password_filename: Option -} - -impl RunCmd { - /// Get the `Sr25519Keyring` matching one of the flag - pub fn get_keyring(&self) -> Option { - use sp_keyring::Sr25519Keyring::*; - - if self.alice { Some(Alice) } - else if self.bob { Some(Bob) } - else if self.charlie { Some(Charlie) } - else if self.dave { Some(Dave) } - else if self.eve { Some(Eve) } - else if self.ferdie { Some(Ferdie) } - else if self.one { Some(One) } - else if self.two { Some(Two) } - else { None } - } -} - -/// Default to verbosity level 0, if none is provided. -fn parse_telemetry_endpoints(s: &str) -> Result<(String, u8), Box> { - let pos = s.find(' '); - match pos { - None => { - Ok((s.to_owned(), 0)) - }, - Some(pos_) => { - let verbosity = s[pos_ + 1..].parse()?; - let url = s[..pos_].parse()?; - Ok((url, verbosity)) - } - } -} - -/// CORS setting -/// -/// The type is introduced to overcome `Option>` -/// handling of `structopt`. -#[derive(Clone, Debug)] -pub enum Cors { - /// All hosts allowed - All, - /// Only hosts on the list are allowed. - List(Vec), -} - -impl From for Option> { - fn from(cors: Cors) -> Self { - match cors { - Cors::All => None, - Cors::List(list) => Some(list), - } - } -} - -/// Parse cors origins -fn parse_cors(s: &str) -> Result> { - let mut is_all = false; - let mut origins = Vec::new(); - for part in s.split(',') { - match part { - "all" | "*" => { - is_all = true; - break; - }, - other => origins.push(other.to_owned()), - } - } - - Ok(if is_all { Cors::All } else { Cors::List(origins) }) -} - -/// The `build-spec` command used to build a specification. -#[derive(Debug, StructOpt, Clone)] -pub struct BuildSpecCmd { - /// Force raw genesis storage output. - #[structopt(long = "raw")] - pub raw: bool, - - /// Disable adding the default bootnode to the specification. - /// - /// By default the `/ip4/127.0.0.1/tcp/30333/p2p/NODE_PEER_ID` bootnode is added to the - /// specification when no bootnode exists. - #[structopt(long = "disable-default-bootnode")] - pub disable_default_bootnode: bool, - - #[allow(missing_docs)] - #[structopt(flatten)] - pub shared_params: SharedParams, - - #[allow(missing_docs)] - #[structopt(flatten)] - pub node_key_params: NodeKeyParams, -} - -/// Wrapper type of `String` that holds an unsigned integer of arbitrary size, formatted as a decimal. -#[derive(Debug, Clone)] -pub struct BlockNumber(String); - -impl FromStr for BlockNumber { - type Err = String; - - fn from_str(block_number: &str) -> Result { - if block_number.chars().any(|d| !d.is_digit(10)) { - Err(format!( - "Invalid block number: {}, expected decimal formatted unsigned integer", - block_number - )) - } else { - Ok(Self(block_number.to_owned())) - } - } -} - -impl BlockNumber { - /// Wrapper on top of `std::str::parse` but with `Error` as a `String` - /// - /// See `https://doc.rust-lang.org/std/primitive.str.html#method.parse` for more elaborate - /// documentation. - pub fn parse(&self) -> Result - where - N: FromStr, - N::Err: std::fmt::Debug, - { - self.0 - .parse() - .map_err(|e| format!("BlockNumber: {} parsing failed because of {:?}", self.0, e)) - } -} - -/// The `export-blocks` command used to export blocks. -#[derive(Debug, StructOpt, Clone)] -pub struct ExportBlocksCmd { - /// Output file name or stdout if unspecified. - #[structopt(parse(from_os_str))] - pub output: Option, - - /// Specify starting block number. - /// - /// Default is 1. - #[structopt(long = "from", value_name = "BLOCK")] - pub from: Option, - - /// Specify last block number. - /// - /// Default is best block. - #[structopt(long = "to", value_name = "BLOCK")] - pub to: Option, - - /// Use JSON output rather than binary. - #[structopt(long = "json")] - pub json: bool, - - #[allow(missing_docs)] - #[structopt(flatten)] - pub shared_params: SharedParams, -} - -/// The `import-blocks` command used to import blocks. -#[derive(Debug, StructOpt, Clone)] -pub struct ImportBlocksCmd { - /// Input file or stdin if unspecified. - #[structopt(parse(from_os_str))] - pub input: Option, - - /// The default number of 64KB pages to ever allocate for Wasm execution. - /// - /// Don't alter this unless you know what you're doing. - #[structopt(long = "default-heap-pages", value_name = "COUNT")] - pub default_heap_pages: Option, - - #[allow(missing_docs)] - #[structopt(flatten)] - pub shared_params: SharedParams, - - #[allow(missing_docs)] - #[structopt(flatten)] - pub import_params: ImportParams, -} - -/// The `check-block` command used to validate blocks. -#[derive(Debug, StructOpt, Clone)] -pub struct CheckBlockCmd { - /// Block hash or number - #[structopt(value_name = "HASH or NUMBER")] - pub input: String, - - /// The default number of 64KB pages to ever allocate for Wasm execution. - /// - /// Don't alter this unless you know what you're doing. - #[structopt(long = "default-heap-pages", value_name = "COUNT")] - pub default_heap_pages: Option, - - #[allow(missing_docs)] - #[structopt(flatten)] - pub shared_params: SharedParams, - - #[allow(missing_docs)] - #[structopt(flatten)] - pub import_params: ImportParams, -} - -/// The `revert` command used revert the chain to a previous state. -#[derive(Debug, StructOpt, Clone)] -pub struct RevertCmd { - /// Number of blocks to revert. - #[structopt(default_value = "256")] - pub num: BlockNumber, - - #[allow(missing_docs)] - #[structopt(flatten)] - pub shared_params: SharedParams, -} - -/// The `purge-chain` command used to remove the whole chain. -#[derive(Debug, StructOpt, Clone)] -pub struct PurgeChainCmd { - /// Skip interactive prompt by answering yes automatically. - #[structopt(short = "y")] - pub yes: bool, - - #[allow(missing_docs)] - #[structopt(flatten)] - pub shared_params: SharedParams, -} - -/// All core commands that are provided by default. -/// -/// The core commands are split into multiple subcommands and `Run` is the default subcommand. From -/// the CLI user perspective, it is not visible that `Run` is a subcommand. So, all parameters of -/// `Run` are exported as main executable parameters. -#[derive(Debug, Clone, StructOpt)] -pub enum Subcommand { - /// Build a spec.json file, outputing to stdout. - BuildSpec(BuildSpecCmd), - - /// Export blocks to a file. - ExportBlocks(ExportBlocksCmd), - - /// Import blocks from file. - ImportBlocks(ImportBlocksCmd), - - /// Validate a single block. - CheckBlock(CheckBlockCmd), - - /// Revert chain to the previous state. - Revert(RevertCmd), - - /// Remove the whole chain data. - PurgeChain(PurgeChainCmd), -} - -impl Subcommand { - /// Get the shared parameters of a `CoreParams` command - pub fn get_shared_params(&self) -> &SharedParams { - use Subcommand::*; - - match self { - BuildSpec(params) => ¶ms.shared_params, - ExportBlocks(params) => ¶ms.shared_params, - ImportBlocks(params) => ¶ms.shared_params, - CheckBlock(params) => ¶ms.shared_params, - Revert(params) => ¶ms.shared_params, - PurgeChain(params) => ¶ms.shared_params, - } - } - - /// Run any `CoreParams` command - pub fn run( - self, - config: Configuration, - builder: B, - ) -> error::Result<()> - where - B: FnOnce(Configuration) -> Result, - G: RuntimeGenesis, - E: ChainSpecExtension, - BC: ServiceBuilderCommand + Unpin, - BB: sp_runtime::traits::Block + Debug, - <<::Header as HeaderT>::Number as std::str::FromStr>::Err: std::fmt::Debug, - ::Hash: std::str::FromStr, - { - assert!(config.chain_spec.is_some(), "chain_spec must be present before continuing"); - - match self { - Subcommand::BuildSpec(cmd) => cmd.run(config), - Subcommand::ExportBlocks(cmd) => cmd.run(config, builder), - Subcommand::ImportBlocks(cmd) => cmd.run(config, builder), - Subcommand::CheckBlock(cmd) => cmd.run(config, builder), - Subcommand::PurgeChain(cmd) => cmd.run(config), - Subcommand::Revert(cmd) => cmd.run(config, builder), - } - } -} - -impl RunCmd { - /// Run the command that runs the node - pub fn run( - self, - mut config: Configuration, - new_light: FNL, - new_full: FNF, - version: &VersionInfo, - ) -> error::Result<()> - where - G: RuntimeGenesis, - E: ChainSpecExtension, - FNL: FnOnce(Configuration) -> Result, - FNF: FnOnce(Configuration) -> Result, - SL: AbstractService + Unpin, - SF: AbstractService + Unpin, - { - assert!(config.chain_spec.is_some(), "chain_spec must be present before continuing"); - - crate::update_config_for_running_node(&mut config, self)?; - - crate::run_node(config, new_light, new_full, &version) - } -} - -impl BuildSpecCmd { - /// Run the build-spec command - pub fn run( - self, - config: Configuration, - ) -> error::Result<()> - where - G: RuntimeGenesis, - E: ChainSpecExtension, - { - assert!(config.chain_spec.is_some(), "chain_spec must be present before continuing"); - - info!("Building chain spec"); - let mut spec = config.expect_chain_spec().clone(); - let raw_output = self.raw; - - if spec.boot_nodes().is_empty() && !self.disable_default_bootnode { - let node_key = node_key_config( - self.node_key_params.clone(), - &Some(config - .in_chain_config_dir(crate::DEFAULT_NETWORK_CONFIG_PATH) - .expect("We provided a base_path")), - )?; - let keys = node_key.into_keypair()?; - let peer_id = keys.public().into_peer_id(); - let addr = build_multiaddr![ - Ip4([127, 0, 0, 1]), - Tcp(30333u16), - P2p(peer_id) - ]; - spec.add_boot_node(addr) - } - - let json = sc_service::chain_ops::build_spec(spec, raw_output)?; - - print!("{}", json); - - Ok(()) - } -} - -impl ExportBlocksCmd { - /// Run the export-blocks command - pub fn run( - self, - mut config: Configuration, - builder: B, - ) -> error::Result<()> - where - B: FnOnce(Configuration) -> Result, - G: RuntimeGenesis, - E: ChainSpecExtension, - BC: ServiceBuilderCommand + Unpin, - BB: sp_runtime::traits::Block + Debug, - <<::Header as HeaderT>::Number as std::str::FromStr>::Err: std::fmt::Debug, - ::Hash: std::str::FromStr, - { - assert!(config.chain_spec.is_some(), "chain_spec must be present before continuing"); - - crate::fill_config_keystore_in_memory(&mut config)?; - - if let DatabaseConfig::Path { ref path, .. } = config.expect_database() { - info!("DB path: {}", path.display()); - } - let from = self.from.as_ref().and_then(|f| f.parse().ok()).unwrap_or(1); - let to = self.to.as_ref().and_then(|t| t.parse().ok()); - - let json = self.json; - - let file: Box = match &self.output { - Some(filename) => Box::new(fs::File::create(filename)?), - None => Box::new(io::stdout()), - }; - - run_until_exit(config, |config| { - Ok(builder(config)?.export_blocks(file, from.into(), to, json)) - }) - } -} - -/// Internal trait used to cast to a dynamic type that implements Read and Seek. -trait ReadPlusSeek: Read + Seek {} - -impl ReadPlusSeek for T {} - -impl ImportBlocksCmd { - /// Run the import-blocks command - pub fn run( - self, - mut config: Configuration, - builder: B, - ) -> error::Result<()> - where - B: FnOnce(Configuration) -> Result, - G: RuntimeGenesis, - E: ChainSpecExtension, - BC: ServiceBuilderCommand + Unpin, - BB: sp_runtime::traits::Block + Debug, - <<::Header as HeaderT>::Number as std::str::FromStr>::Err: std::fmt::Debug, - ::Hash: std::str::FromStr, - { - crate::fill_import_params( - &mut config, - &self.import_params, - sc_service::Roles::FULL, - self.shared_params.dev, - )?; - - let file: Box = match &self.input { - Some(filename) => Box::new(fs::File::open(filename)?), - None => { - let mut buffer = Vec::new(); - io::stdin().read_to_end(&mut buffer)?; - Box::new(io::Cursor::new(buffer)) - }, - }; - - run_until_exit(config, |config| { - Ok(builder(config)?.import_blocks(file, false)) - }) - } -} - -impl CheckBlockCmd { - /// Run the check-block command - pub fn run( - self, - mut config: Configuration, - builder: B, - ) -> error::Result<()> - where - B: FnOnce(Configuration) -> Result, - G: RuntimeGenesis, - E: ChainSpecExtension, - BC: ServiceBuilderCommand + Unpin, - BB: sp_runtime::traits::Block + Debug, - <<::Header as HeaderT>::Number as std::str::FromStr>::Err: std::fmt::Debug, - ::Hash: std::str::FromStr, - { - assert!(config.chain_spec.is_some(), "chain_spec must be present before continuing"); - - crate::fill_import_params( - &mut config, - &self.import_params, - sc_service::Roles::FULL, - self.shared_params.dev, - )?; - crate::fill_config_keystore_in_memory(&mut config)?; - - let input = if self.input.starts_with("0x") { &self.input[2..] } else { &self.input[..] }; - let block_id = match FromStr::from_str(input) { - Ok(hash) => BlockId::hash(hash), - Err(_) => match self.input.parse::() { - Ok(n) => BlockId::number((n as u32).into()), - Err(_) => return Err(error::Error::Input("Invalid hash or number specified".into())), - } - }; - - let start = std::time::Instant::now(); - run_until_exit(config, |config| { - Ok(builder(config)?.check_block(block_id)) - })?; - println!("Completed in {} ms.", start.elapsed().as_millis()); - - Ok(()) - } -} - -impl PurgeChainCmd { - /// Run the purge command - pub fn run( - self, - mut config: Configuration, - ) -> error::Result<()> - where - G: RuntimeGenesis, - E: ChainSpecExtension, - { - assert!(config.chain_spec.is_some(), "chain_spec must be present before continuing"); - - crate::fill_config_keystore_in_memory(&mut config)?; - - let db_path = match config.expect_database() { - DatabaseConfig::Path { path, .. } => path, - _ => { - eprintln!("Cannot purge custom database implementation"); - return Ok(()); - } - }; - - if !self.yes { - print!("Are you sure to remove {:?}? [y/N]: ", &db_path); - io::stdout().flush().expect("failed to flush stdout"); - - let mut input = String::new(); - io::stdin().read_line(&mut input)?; - let input = input.trim(); - - match input.chars().nth(0) { - Some('y') | Some('Y') => {}, - _ => { - println!("Aborted"); - return Ok(()); - }, - } - } - - match fs::remove_dir_all(&db_path) { - Ok(_) => { - println!("{:?} removed.", &db_path); - Ok(()) - }, - Err(ref err) if err.kind() == io::ErrorKind::NotFound => { - eprintln!("{:?} did not exist.", &db_path); - Ok(()) - }, - Err(err) => Result::Err(err.into()) - } - } -} - -impl RevertCmd { - /// Run the revert command - pub fn run( - self, - mut config: Configuration, - builder: B, - ) -> error::Result<()> - where - B: FnOnce(Configuration) -> Result, - G: RuntimeGenesis, - E: ChainSpecExtension, - BC: ServiceBuilderCommand + Unpin, - BB: sp_runtime::traits::Block + Debug, - <<::Header as HeaderT>::Number as std::str::FromStr>::Err: std::fmt::Debug, - ::Hash: std::str::FromStr, - { - assert!(config.chain_spec.is_some(), "chain_spec must be present before continuing"); - - crate::fill_config_keystore_in_memory(&mut config)?; - - let blocks = self.num.parse()?; - builder(config)?.revert_chain(blocks)?; - - Ok(()) - } -} diff --git a/client/cli/src/params/import_params.rs b/client/cli/src/params/import_params.rs new file mode 100644 index 0000000000..98809a38ae --- /dev/null +++ b/client/cli/src/params/import_params.rs @@ -0,0 +1,219 @@ +// Copyright 2018-2020 Parity Technologies (UK) Ltd. +// This file is part of Substrate. + +// Substrate is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Substrate is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Substrate. If not, see . + +use structopt::StructOpt; +use sc_service::{ + Configuration, RuntimeGenesis, + config::DatabaseConfig, PruningMode, +}; + +use crate::error; +use crate::arg_enums::{ + WasmExecutionMethod, TracingReceiver, ExecutionStrategy, DEFAULT_EXECUTION_BLOCK_CONSTRUCTION, + DEFAULT_EXECUTION_IMPORT_BLOCK, DEFAULT_EXECUTION_OFFCHAIN_WORKER, DEFAULT_EXECUTION_OTHER, + DEFAULT_EXECUTION_SYNCING +}; + +/// Parameters for block import. +#[derive(Debug, StructOpt, Clone)] +pub struct ImportParams { + /// Specify the state pruning mode, a number of blocks to keep or 'archive'. + /// + /// Default is to keep all block states if the node is running as a + /// validator (i.e. 'archive'), otherwise state is only kept for the last + /// 256 blocks. + #[structopt(long = "pruning", value_name = "PRUNING_MODE")] + pub pruning: Option, + + /// Force start with unsafe pruning settings. + /// + /// When running as a validator it is highly recommended to disable state + /// pruning (i.e. 'archive') which is the default. The node will refuse to + /// start as a validator if pruning is enabled unless this option is set. + #[structopt(long = "unsafe-pruning")] + pub unsafe_pruning: bool, + + /// Method for executing Wasm runtime code. + #[structopt( + long = "wasm-execution", + value_name = "METHOD", + possible_values = &WasmExecutionMethod::enabled_variants(), + case_insensitive = true, + default_value = "Interpreted" + )] + pub wasm_method: WasmExecutionMethod, + + #[allow(missing_docs)] + #[structopt(flatten)] + pub execution_strategies: ExecutionStrategies, + + /// Limit the memory the database cache can use. + #[structopt(long = "db-cache", value_name = "MiB", default_value = "1024")] + pub database_cache_size: u32, + + /// Specify the state cache size. + #[structopt(long = "state-cache-size", value_name = "Bytes", default_value = "67108864")] + pub state_cache_size: usize, + + /// Comma separated list of targets for tracing + #[structopt(long = "tracing-targets", value_name = "TARGETS")] + pub tracing_targets: Option, + + /// Receiver to process tracing messages + #[structopt( + long = "tracing-receiver", + value_name = "RECEIVER", + possible_values = &TracingReceiver::variants(), + case_insensitive = true, + default_value = "Log" + )] + pub tracing_receiver: TracingReceiver, +} + +impl ImportParams { + /// Put block import CLI params into `config` object. + pub fn update_config( + &self, + config: &mut Configuration, + role: sc_service::Roles, + is_dev: bool, + ) -> error::Result<()> + where + G: RuntimeGenesis, + { + use sc_client_api::execution_extensions::ExecutionStrategies; + + if let Some(DatabaseConfig::Path { ref mut cache_size, .. }) = config.database { + *cache_size = Some(self.database_cache_size); + } + + config.state_cache_size = self.state_cache_size; + + // by default we disable pruning if the node is an authority (i.e. + // `ArchiveAll`), otherwise we keep state for the last 256 blocks. if the + // node is an authority and pruning is enabled explicitly, then we error + // unless `unsafe_pruning` is set. + config.pruning = match &self.pruning { + Some(ref s) if s == "archive" => PruningMode::ArchiveAll, + None if role == sc_service::Roles::AUTHORITY => PruningMode::ArchiveAll, + None => PruningMode::default(), + Some(s) => { + if role == sc_service::Roles::AUTHORITY && !self.unsafe_pruning { + return Err(error::Error::Input( + "Validators should run with state pruning disabled (i.e. archive). \ + You can ignore this check with `--unsafe-pruning`.".to_string() + )); + } + + PruningMode::keep_blocks(s.parse() + .map_err(|_| error::Error::Input("Invalid pruning mode specified".to_string()))? + ) + }, + }; + + config.wasm_method = self.wasm_method.into(); + + let exec = &self.execution_strategies; + let exec_all_or = |strat: ExecutionStrategy, default: ExecutionStrategy| { + exec.execution.unwrap_or(if strat == default && is_dev { + ExecutionStrategy::Native + } else { + strat + }).into() + }; + + config.execution_strategies = ExecutionStrategies { + syncing: exec_all_or(exec.execution_syncing, DEFAULT_EXECUTION_SYNCING), + importing: exec_all_or(exec.execution_import_block, DEFAULT_EXECUTION_IMPORT_BLOCK), + block_construction: + exec_all_or(exec.execution_block_construction, DEFAULT_EXECUTION_BLOCK_CONSTRUCTION), + offchain_worker: + exec_all_or(exec.execution_offchain_worker, DEFAULT_EXECUTION_OFFCHAIN_WORKER), + other: exec_all_or(exec.execution_other, DEFAULT_EXECUTION_OTHER), + }; + Ok(()) + } +} + +/// Execution strategies parameters. +#[derive(Debug, StructOpt, Clone)] +pub struct ExecutionStrategies { + /// The means of execution used when calling into the runtime while syncing blocks. + #[structopt( + long = "execution-syncing", + value_name = "STRATEGY", + possible_values = &ExecutionStrategy::variants(), + case_insensitive = true, + default_value = DEFAULT_EXECUTION_SYNCING.as_str(), + )] + pub execution_syncing: ExecutionStrategy, + + /// The means of execution used when calling into the runtime while importing blocks. + #[structopt( + long = "execution-import-block", + value_name = "STRATEGY", + possible_values = &ExecutionStrategy::variants(), + case_insensitive = true, + default_value = DEFAULT_EXECUTION_IMPORT_BLOCK.as_str(), + )] + pub execution_import_block: ExecutionStrategy, + + /// The means of execution used when calling into the runtime while constructing blocks. + #[structopt( + long = "execution-block-construction", + value_name = "STRATEGY", + possible_values = &ExecutionStrategy::variants(), + case_insensitive = true, + default_value = DEFAULT_EXECUTION_BLOCK_CONSTRUCTION.as_str(), + )] + pub execution_block_construction: ExecutionStrategy, + + /// The means of execution used when calling into the runtime while using an off-chain worker. + #[structopt( + long = "execution-offchain-worker", + value_name = "STRATEGY", + possible_values = &ExecutionStrategy::variants(), + case_insensitive = true, + default_value = DEFAULT_EXECUTION_OFFCHAIN_WORKER.as_str(), + )] + pub execution_offchain_worker: ExecutionStrategy, + + /// The means of execution used when calling into the runtime while not syncing, importing or constructing blocks. + #[structopt( + long = "execution-other", + value_name = "STRATEGY", + possible_values = &ExecutionStrategy::variants(), + case_insensitive = true, + default_value = DEFAULT_EXECUTION_OTHER.as_str(), + )] + pub execution_other: ExecutionStrategy, + + /// The execution strategy that should be used by all execution contexts. + #[structopt( + long = "execution", + value_name = "STRATEGY", + possible_values = &ExecutionStrategy::variants(), + case_insensitive = true, + conflicts_with_all = &[ + "execution-other", + "execution-offchain-worker", + "execution-block-construction", + "execution-import-block", + "execution-syncing", + ] + )] + pub execution: Option, +} diff --git a/client/cli/src/params/mod.rs b/client/cli/src/params/mod.rs new file mode 100644 index 0000000000..75509afa42 --- /dev/null +++ b/client/cli/src/params/mod.rs @@ -0,0 +1,65 @@ +// Copyright 2020 Parity Technologies (UK) Ltd. +// This file is part of Substrate. + +// Substrate is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Substrate is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Substrate. If not, see . + +mod import_params; +mod transaction_pool_params; +mod shared_params; +mod node_key_params; +mod network_configuration_params; + +use std::str::FromStr; +use std::fmt::Debug; + +pub use crate::params::import_params::*; +pub use crate::params::transaction_pool_params::*; +pub use crate::params::shared_params::*; +pub use crate::params::node_key_params::*; +pub use crate::params::network_configuration_params::*; + +/// Wrapper type of `String` that holds an unsigned integer of arbitrary size, formatted as a decimal. +#[derive(Debug, Clone)] +pub struct BlockNumber(String); + +impl FromStr for BlockNumber { + type Err = String; + + fn from_str(block_number: &str) -> Result { + if block_number.chars().any(|d| !d.is_digit(10)) { + Err(format!( + "Invalid block number: {}, expected decimal formatted unsigned integer", + block_number, + )) + } else { + Ok(Self(block_number.to_owned())) + } + } +} + +impl BlockNumber { + /// Wrapper on top of `std::str::parse` but with `Error` as a `String` + /// + /// See `https://doc.rust-lang.org/std/primitive.str.html#method.parse` for more elaborate + /// documentation. + pub fn parse(&self) -> Result + where + N: FromStr, + N::Err: std::fmt::Debug, + { + self.0 + .parse() + .map_err(|e| format!("BlockNumber: {} parsing failed because of {:?}", self.0, e)) + } +} diff --git a/client/cli/src/params/network_configuration_params.rs b/client/cli/src/params/network_configuration_params.rs new file mode 100644 index 0000000000..eef679d6a6 --- /dev/null +++ b/client/cli/src/params/network_configuration_params.rs @@ -0,0 +1,160 @@ +// Copyright 2018-2020 Parity Technologies (UK) Ltd. +// This file is part of Substrate. + +// Substrate is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Substrate is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Substrate. If not, see . + +use std::path::PathBuf; +use std::iter; +use std::net::Ipv4Addr; +use structopt::StructOpt; +use sc_network::{ + config::{NonReservedPeerMode, TransportConfig}, multiaddr::Protocol, +}; +use sc_service::{Configuration, RuntimeGenesis}; + +use crate::error; +use crate::params::node_key_params::NodeKeyParams; + +/// Parameters used to create the network configuration. +#[derive(Debug, StructOpt, Clone)] +pub struct NetworkConfigurationParams { + /// Specify a list of bootnodes. + #[structopt(long = "bootnodes", value_name = "URL")] + pub bootnodes: Vec, + + /// Specify a list of reserved node addresses. + #[structopt(long = "reserved-nodes", value_name = "URL")] + pub reserved_nodes: Vec, + + /// Whether to only allow connections to/from reserved nodes. + /// + /// If you are a validator your node might still connect to other validator + /// nodes regardless of whether they are defined as reserved nodes. + #[structopt(long = "reserved-only")] + pub reserved_only: bool, + + /// Specify a list of sentry node public addresses. + #[structopt( + long = "sentry-nodes", + value_name = "URL", + conflicts_with_all = &[ "sentry" ] + )] + pub sentry_nodes: Vec, + + /// Listen on this multiaddress. + #[structopt(long = "listen-addr", value_name = "LISTEN_ADDR")] + pub listen_addr: Vec, + + /// Specify p2p protocol TCP port. + /// + /// Only used if --listen-addr is not specified. + #[structopt(long = "port", value_name = "PORT")] + pub port: Option, + + /// Forbid connecting to private IPv4 addresses (as specified in + /// [RFC1918](https://tools.ietf.org/html/rfc1918)), unless the address was passed with + /// `--reserved-nodes` or `--bootnodes`. + #[structopt(long = "no-private-ipv4")] + pub no_private_ipv4: bool, + + /// Specify the number of outgoing connections we're trying to maintain. + #[structopt(long = "out-peers", value_name = "COUNT", default_value = "25")] + pub out_peers: u32, + + /// Specify the maximum number of incoming connections we're accepting. + #[structopt(long = "in-peers", value_name = "COUNT", default_value = "25")] + pub in_peers: u32, + + /// Disable mDNS discovery. + /// + /// By default, the network will use mDNS to discover other nodes on the + /// local network. This disables it. Automatically implied when using --dev. + #[structopt(long = "no-mdns")] + pub no_mdns: bool, + + /// Maximum number of peers to ask the same blocks in parallel. + /// + /// This allows downlading announced blocks from multiple peers. Decrease to save + /// traffic and risk increased latency. + #[structopt(long = "max-parallel-downloads", value_name = "COUNT", default_value = "5")] + pub max_parallel_downloads: u32, + + #[allow(missing_docs)] + #[structopt(flatten)] + pub node_key_params: NodeKeyParams, + + /// Experimental feature flag. + #[structopt(long = "use-yamux-flow-control")] + pub use_yamux_flow_control: bool, +} + +impl NetworkConfigurationParams { + /// Fill the given `NetworkConfiguration` by looking at the cli parameters. + pub fn update_config( + &self, + mut config: &mut Configuration, + config_path: PathBuf, + client_id: String, + is_dev: bool, + ) -> error::Result<()> + where + G: RuntimeGenesis, + { + config.network.boot_nodes.extend(self.bootnodes.clone()); + config.network.config_path = Some(config_path.clone()); + config.network.net_config_path = Some(config_path.clone()); + + config.network.reserved_nodes.extend(self.reserved_nodes.clone()); + if self.reserved_only { + config.network.non_reserved_mode = NonReservedPeerMode::Deny; + } + + config.network.sentry_nodes.extend(self.sentry_nodes.clone()); + + for addr in self.listen_addr.iter() { + let addr = addr.parse().ok().ok_or(error::Error::InvalidListenMultiaddress)?; + config.network.listen_addresses.push(addr); + } + + if config.network.listen_addresses.is_empty() { + let port = match self.port { + Some(port) => port, + None => 30333, + }; + + config.network.listen_addresses = vec![ + iter::once(Protocol::Ip4(Ipv4Addr::new(0, 0, 0, 0))) + .chain(iter::once(Protocol::Tcp(port))) + .collect() + ]; + } + + config.network.client_version = client_id; + self.node_key_params.update_config(&mut config, Some(&config_path))?; + + config.network.in_peers = self.in_peers; + config.network.out_peers = self.out_peers; + + config.network.transport = TransportConfig::Normal { + enable_mdns: !is_dev && !self.no_mdns, + allow_private_ipv4: !self.no_private_ipv4, + wasm_external_transport: None, + use_yamux_flow_control: self.use_yamux_flow_control, + }; + + config.network.max_parallel_downloads = self.max_parallel_downloads; + + Ok(()) + } +} diff --git a/client/cli/src/params/node_key_params.rs b/client/cli/src/params/node_key_params.rs new file mode 100644 index 0000000000..ddc1d6cc21 --- /dev/null +++ b/client/cli/src/params/node_key_params.rs @@ -0,0 +1,244 @@ +// Copyright 2017-2020 Parity Technologies (UK) Ltd. +// This file is part of Substrate. + +// Substrate is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Substrate is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Substrate. If not, see . + +use std::{path::PathBuf, str::FromStr}; +use structopt::StructOpt; +use sc_service::{Configuration, RuntimeGenesis}; +use sc_network::config::NodeKeyConfig; +use sp_core::H256; + +use crate::error; +use crate::arg_enums::NodeKeyType; + +/// The file name of the node's Ed25519 secret key inside the chain-specific +/// network config directory, if neither `--node-key` nor `--node-key-file` +/// is specified in combination with `--node-key-type=ed25519`. +const NODE_KEY_ED25519_FILE: &str = "secret_ed25519"; + +/// Parameters used to create the `NodeKeyConfig`, which determines the keypair +/// used for libp2p networking. +#[derive(Debug, StructOpt, Clone)] +pub struct NodeKeyParams { + /// The secret key to use for libp2p networking. + /// + /// The value is a string that is parsed according to the choice of + /// `--node-key-type` as follows: + /// + /// `ed25519`: + /// The value is parsed as a hex-encoded Ed25519 32 bytes secret key, + /// i.e. 64 hex characters. + /// + /// The value of this option takes precedence over `--node-key-file`. + /// + /// WARNING: Secrets provided as command-line arguments are easily exposed. + /// Use of this option should be limited to development and testing. To use + /// an externally managed secret key, use `--node-key-file` instead. + #[structopt(long = "node-key", value_name = "KEY")] + pub node_key: Option, + + /// The type of secret key to use for libp2p networking. + /// + /// The secret key of the node is obtained as follows: + /// + /// * If the `--node-key` option is given, the value is parsed as a secret key + /// according to the type. See the documentation for `--node-key`. + /// + /// * If the `--node-key-file` option is given, the secret key is read from the + /// specified file. See the documentation for `--node-key-file`. + /// + /// * Otherwise, the secret key is read from a file with a predetermined, + /// type-specific name from the chain-specific network config directory + /// inside the base directory specified by `--base-dir`. If this file does + /// not exist, it is created with a newly generated secret key of the + /// chosen type. + /// + /// The node's secret key determines the corresponding public key and hence the + /// node's peer ID in the context of libp2p. + #[structopt( + long = "node-key-type", + value_name = "TYPE", + possible_values = &NodeKeyType::variants(), + case_insensitive = true, + default_value = "Ed25519" + )] + pub node_key_type: NodeKeyType, + + /// The file from which to read the node's secret key to use for libp2p networking. + /// + /// The contents of the file are parsed according to the choice of `--node-key-type` + /// as follows: + /// + /// `ed25519`: + /// The file must contain an unencoded 32 bytes Ed25519 secret key. + /// + /// If the file does not exist, it is created with a newly generated secret key of + /// the chosen type. + #[structopt(long = "node-key-file", value_name = "FILE")] + pub node_key_file: Option, +} + +impl NodeKeyParams { + /// Create a `NodeKeyConfig` from the given `NodeKeyParams` in the context + /// of an optional network config storage directory. + pub fn update_config<'a, G, E>( + &self, + mut config: &'a mut Configuration, + net_config_path: Option<&PathBuf>, + ) -> error::Result<&'a NodeKeyConfig> + where + G: RuntimeGenesis, + { + config.network.node_key = match self.node_key_type { + NodeKeyType::Ed25519 => { + let secret = if let Some(node_key) = self.node_key.as_ref() { + parse_ed25519_secret(node_key)? + } else { + let path = self.node_key_file.clone() + .or_else(|| net_config_path.map(|d| d.join(NODE_KEY_ED25519_FILE))); + + if let Some(path) = path { + sc_network::config::Secret::File(path) + } else { + sc_network::config::Secret::New + } + }; + + NodeKeyConfig::Ed25519(secret) + } + }; + + Ok(&config.network.node_key) + } +} + +/// Create an error caused by an invalid node key argument. +fn invalid_node_key(e: impl std::fmt::Display) -> error::Error { + error::Error::Input(format!("Invalid node key: {}", e)) +} + +/// Parse a Ed25519 secret key from a hex string into a `sc_network::Secret`. +fn parse_ed25519_secret(hex: &str) -> error::Result { + H256::from_str(&hex).map_err(invalid_node_key).and_then(|bytes| + sc_network::config::identity::ed25519::SecretKey::from_bytes(bytes) + .map(sc_network::config::Secret::Input) + .map_err(invalid_node_key)) +} + +#[cfg(test)] +mod tests { + use sc_network::config::identity::ed25519; + use super::*; + + #[test] + fn test_node_key_config_input() { + fn secret_input(net_config_dir: Option<&PathBuf>) -> error::Result<()> { + NodeKeyType::variants().iter().try_for_each(|t| { + let mut config = Configuration::<(), ()>::default(); + let node_key_type = NodeKeyType::from_str(t).unwrap(); + let sk = match node_key_type { + NodeKeyType::Ed25519 => ed25519::SecretKey::generate().as_ref().to_vec() + }; + let params = NodeKeyParams { + node_key_type, + node_key: Some(format!("{:x}", H256::from_slice(sk.as_ref()))), + node_key_file: None + }; + params.update_config(&mut config, net_config_dir).and_then(|c| match c { + NodeKeyConfig::Ed25519(sc_network::config::Secret::Input(ref ski)) + if node_key_type == NodeKeyType::Ed25519 && + &sk[..] == ski.as_ref() => Ok(()), + _ => Err(error::Error::Input("Unexpected node key config".into())) + }) + }) + } + + assert!(secret_input(None).is_ok()); + assert!(secret_input(Some(&PathBuf::from_str("x").unwrap())).is_ok()); + } + + #[test] + fn test_node_key_config_file() { + fn secret_file(net_config_dir: Option<&PathBuf>) -> error::Result<()> { + NodeKeyType::variants().iter().try_for_each(|t| { + let mut config = Configuration::<(), ()>::default(); + let node_key_type = NodeKeyType::from_str(t).unwrap(); + let tmp = tempfile::Builder::new().prefix("alice").tempdir()?; + let file = tmp.path().join(format!("{}_mysecret", t)).to_path_buf(); + let params = NodeKeyParams { + node_key_type, + node_key: None, + node_key_file: Some(file.clone()) + }; + params.update_config(&mut config, net_config_dir).and_then(|c| match c { + NodeKeyConfig::Ed25519(sc_network::config::Secret::File(ref f)) + if node_key_type == NodeKeyType::Ed25519 && f == &file => Ok(()), + _ => Err(error::Error::Input("Unexpected node key config".into())) + }) + }) + } + + assert!(secret_file(None).is_ok()); + assert!(secret_file(Some(&PathBuf::from_str("x").unwrap())).is_ok()); + } + + #[test] + fn test_node_key_config_default() { + fn with_def_params(f: F) -> error::Result<()> + where + F: Fn(NodeKeyParams) -> error::Result<()> + { + NodeKeyType::variants().iter().try_for_each(|t| { + let node_key_type = NodeKeyType::from_str(t).unwrap(); + f(NodeKeyParams { + node_key_type, + node_key: None, + node_key_file: None + }) + }) + } + + fn no_config_dir() -> error::Result<()> { + with_def_params(|params| { + let mut config = Configuration::<(), ()>::default(); + let typ = params.node_key_type; + params.update_config(&mut config, None) + .and_then(|c| match c { + NodeKeyConfig::Ed25519(sc_network::config::Secret::New) + if typ == NodeKeyType::Ed25519 => Ok(()), + _ => Err(error::Error::Input("Unexpected node key config".into())) + }) + }) + } + + fn some_config_dir(net_config_dir: &PathBuf) -> error::Result<()> { + with_def_params(|params| { + let mut config = Configuration::<(), ()>::default(); + let dir = PathBuf::from(net_config_dir.clone()); + let typ = params.node_key_type; + params.update_config(&mut config, Some(net_config_dir)) + .and_then(move |c| match c { + NodeKeyConfig::Ed25519(sc_network::config::Secret::File(ref f)) + if typ == NodeKeyType::Ed25519 && + f == &dir.join(NODE_KEY_ED25519_FILE) => Ok(()), + _ => Err(error::Error::Input("Unexpected node key config".into())) + }) + }) + } + + assert!(no_config_dir().is_ok()); + assert!(some_config_dir(&PathBuf::from_str("x").unwrap()).is_ok()); + } +} diff --git a/client/cli/src/params/shared_params.rs b/client/cli/src/params/shared_params.rs new file mode 100644 index 0000000000..03f4479646 --- /dev/null +++ b/client/cli/src/params/shared_params.rs @@ -0,0 +1,116 @@ +// Copyright 2018-2020 Parity Technologies (UK) Ltd. +// This file is part of Substrate. + +// Substrate is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Substrate is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Substrate. If not, see . + +use std::path::PathBuf; +use structopt::StructOpt; +use app_dirs::{AppInfo, AppDataType}; +use sc_service::{ + Configuration, ChainSpecExtension, RuntimeGenesis, + config::DatabaseConfig, ChainSpec, +}; + +use crate::VersionInfo; +use crate::error; + +/// default sub directory to store database +const DEFAULT_DB_CONFIG_PATH : &'static str = "db"; + +/// Shared parameters used by all `CoreParams`. +#[derive(Debug, StructOpt, Clone)] +pub struct SharedParams { + /// Specify the chain specification (one of dev, local or staging). + #[structopt(long = "chain", value_name = "CHAIN_SPEC")] + pub chain: Option, + + /// Specify the development chain. + #[structopt(long = "dev")] + pub dev: bool, + + /// Specify custom base path. + #[structopt(long = "base-path", short = "d", value_name = "PATH", parse(from_os_str))] + pub base_path: Option, + + /// Sets a custom logging filter. + #[structopt(short = "l", long = "log", value_name = "LOG_PATTERN")] + pub log: Option, +} + +impl SharedParams { + /// Load spec to `Configuration` from `SharedParams` and spec factory. + pub fn update_config<'a, G, E, F>( + &self, + mut config: &'a mut Configuration, + spec_factory: F, + version: &VersionInfo, + ) -> error::Result<&'a ChainSpec> where + G: RuntimeGenesis, + E: ChainSpecExtension, + F: FnOnce(&str) -> Result>, String>, + { + let chain_key = match self.chain { + Some(ref chain) => chain.clone(), + None => if self.dev { "dev".into() } else { "".into() } + }; + let spec = match spec_factory(&chain_key)? { + Some(spec) => spec, + None => ChainSpec::from_json_file(PathBuf::from(chain_key))? + }; + + config.network.boot_nodes = spec.boot_nodes().to_vec(); + config.telemetry_endpoints = spec.telemetry_endpoints().clone(); + + config.chain_spec = Some(spec); + + if config.config_dir.is_none() { + config.config_dir = Some(base_path(self, version)); + } + + if config.database.is_none() { + config.database = Some(DatabaseConfig::Path { + path: config + .in_chain_config_dir(DEFAULT_DB_CONFIG_PATH) + .expect("We provided a base_path/config_dir."), + cache_size: None, + }); + } + + Ok(config.chain_spec.as_ref().unwrap()) + } + + /// Initialize substrate. This must be done only once. + /// + /// This method: + /// + /// 1. Set the panic handler + /// 2. Raise the FD limit + /// 3. Initialize the logger + pub fn init(&self, version: &VersionInfo) -> error::Result<()> { + crate::init(self.log.as_ref().map(|v| v.as_ref()).unwrap_or(""), version) + } +} + +fn base_path(cli: &SharedParams, version: &VersionInfo) -> PathBuf { + cli.base_path.clone() + .unwrap_or_else(|| + app_dirs::get_app_root( + AppDataType::UserData, + &AppInfo { + name: version.executable_name, + author: version.author + } + ).expect("app directories exist on all supported platforms; qed") + ) +} diff --git a/client/cli/src/params/transaction_pool_params.rs b/client/cli/src/params/transaction_pool_params.rs new file mode 100644 index 0000000000..80c591d1d2 --- /dev/null +++ b/client/cli/src/params/transaction_pool_params.rs @@ -0,0 +1,49 @@ +// Copyright 2018-2020 Parity Technologies (UK) Ltd. +// This file is part of Substrate. + +// Substrate is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Substrate is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Substrate. If not, see . + +use structopt::StructOpt; +use sc_service::Configuration; +use crate::error; + +/// Parameters used to create the pool configuration. +#[derive(Debug, StructOpt, Clone)] +pub struct TransactionPoolParams { + /// Maximum number of transactions in the transaction pool. + #[structopt(long = "pool-limit", value_name = "COUNT", default_value = "8192")] + pub pool_limit: usize, + /// Maximum number of kilobytes of all transactions stored in the pool. + #[structopt(long = "pool-kbytes", value_name = "COUNT", default_value = "20480")] + pub pool_kbytes: usize, +} + +impl TransactionPoolParams { + /// Fill the given `PoolConfiguration` by looking at the cli parameters. + pub fn update_config( + &self, + config: &mut Configuration, + ) -> error::Result<()> { + // ready queue + config.transaction_pool.ready.count = self.pool_limit; + config.transaction_pool.ready.total_bytes = self.pool_kbytes * 1024; + + // future queue + let factor = 10; + config.transaction_pool.future.count = self.pool_limit / factor; + config.transaction_pool.future.total_bytes = self.pool_kbytes * 1024 / factor; + + Ok(()) + } +} diff --git a/client/db/src/utils.rs b/client/db/src/utils.rs index 534cbb2197..f26714eb5a 100644 --- a/client/db/src/utils.rs +++ b/client/db/src/utils.rs @@ -36,6 +36,7 @@ use crate::{DatabaseSettings, DatabaseSettingsSrc}; /// Number of columns in the db. Must be the same for both full && light dbs. /// Otherwise RocksDb will fail to open database && check its type. +#[cfg(any(feature = "kvdb-rocksdb", feature = "test-helpers", test))] pub const NUM_COLUMNS: u32 = 11; /// Meta column. The set of keys in the column is shared by full && light storages. pub const COLUMN_META: u32 = 0; diff --git a/client/network/src/config.rs b/client/network/src/config.rs index 8c97cbb872..f6a3db4afe 100644 --- a/client/network/src/config.rs +++ b/client/network/src/config.rs @@ -126,6 +126,12 @@ impl Roles { } } +impl fmt::Display for Roles { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + write!(f, "{:?}", self) + } +} + impl codec::Encode for Roles { fn encode_to(&self, dest: &mut T) { dest.push_byte(self.bits()) @@ -247,9 +253,9 @@ impl From for ParseErr { #[derive(Clone, Debug)] pub struct NetworkConfiguration { /// Directory path to store general network configuration. None means nothing will be saved. - pub config_path: Option, + pub config_path: Option, /// Directory path to store network-specific configuration. None means nothing will be saved. - pub net_config_path: Option, + pub net_config_path: Option, /// Multiaddresses to listen for incoming connections. pub listen_addresses: Vec, /// Multiaddresses to advertise. Detected automatically if empty. diff --git a/client/service/src/config.rs b/client/service/src/config.rs index f5b187e8b3..002754f11c 100644 --- a/client/service/src/config.rs +++ b/client/service/src/config.rs @@ -207,7 +207,7 @@ impl Default for Configuration { impl Configuration { /// Create a default config using `VersionInfo` - pub fn new(version: &VersionInfo) -> Self { + pub fn from_version(version: &VersionInfo) -> Self { let mut config = Configuration::default(); config.impl_name = version.name; config.impl_version = version.version; @@ -254,6 +254,28 @@ impl Configuration { pub fn expect_database(&self) -> &DatabaseConfig { self.database.as_ref().expect("database must be specified") } + + /// Returns a string displaying the node role, special casing the sentry mode + /// (returning `SENTRY`), since the node technically has an `AUTHORITY` role but + /// doesn't participate. + pub fn display_role(&self) -> String { + if self.sentry_mode { + "SENTRY".to_string() + } else { + self.roles.to_string() + } + } + + /// Use in memory keystore config when it is not required at all. + /// + /// This function returns an error if the keystore is already set to something different than + /// `KeystoreConfig::None`. + pub fn use_in_memory_keystore(&mut self) -> Result<(), String> { + match &mut self.keystore { + cfg @ KeystoreConfig::None => { *cfg = KeystoreConfig::InMemory; Ok(()) }, + _ => Err("Keystore config specified when it should not be!".into()), + } + } } /// Returns platform info diff --git a/client/service/test/src/lib.rs b/client/service/test/src/lib.rs index 414b943594..5f679b82b3 100644 --- a/client/service/test/src/lib.rs +++ b/client/service/test/src/lib.rs @@ -141,7 +141,7 @@ fn node_config ( { let root = root.path().join(format!("node-{}", index)); - let config_path = Some(String::from(root.join("network").to_str().unwrap())); + let config_path = Some(root.join("network")); let net_config_path = config_path.clone(); let network_config = NetworkConfiguration { diff --git a/utils/frame/benchmarking-cli/src/lib.rs b/utils/frame/benchmarking-cli/src/lib.rs index a8303beb0f..b515e49013 100644 --- a/utils/frame/benchmarking-cli/src/lib.rs +++ b/utils/frame/benchmarking-cli/src/lib.rs @@ -16,9 +16,9 @@ use sp_runtime::{BuildStorage, traits::{Block as BlockT, Header as HeaderT, NumberFor}}; use sc_client::StateMachine; -use sc_cli::{ExecutionStrategy, WasmExecutionMethod}; +use sc_cli::{ExecutionStrategy, WasmExecutionMethod, VersionInfo}; use sc_client_db::BenchmarkingState; -use sc_service::{RuntimeGenesis, ChainSpecExtension}; +use sc_service::{RuntimeGenesis, ChainSpecExtension, Configuration, ChainSpec}; use sc_executor::{NativeExecutor, NativeExecutionDispatch}; use std::fmt::Debug; use codec::{Encode, Decode}; @@ -68,26 +68,16 @@ pub struct BenchmarkCmd { } impl BenchmarkCmd { - /// Parse CLI arguments and initialize given config. - pub fn init( - &self, - config: &mut sc_service::config::Configuration, - spec_factory: impl FnOnce(&str) -> Result>, String>, - version: &sc_cli::VersionInfo, - ) -> sc_cli::error::Result<()> where - G: sc_service::RuntimeGenesis, - E: sc_service::ChainSpecExtension, - { - sc_cli::init_config(config, &self.shared_params, version, spec_factory)?; - // make sure to configure keystore - sc_cli::fill_config_keystore_in_memory(config).map_err(Into::into) + /// Initialize + pub fn init(&self, version: &sc_cli::VersionInfo) -> sc_cli::Result<()> { + self.shared_params.init(version) } /// Runs the command and benchmarks the chain. pub fn run( self, - config: sc_service::Configuration, - ) -> sc_cli::error::Result<()> + config: Configuration, + ) -> sc_cli::Result<()> where G: RuntimeGenesis, E: ChainSpecExtension, @@ -149,4 +139,22 @@ impl BenchmarkCmd { Ok(()) } + + /// Update and prepare a `Configuration` with command line parameters + pub fn update_config( + &self, + mut config: &mut Configuration, + spec_factory: impl FnOnce(&str) -> Result>, String>, + version: &VersionInfo, + ) -> sc_cli::Result<()> where + G: RuntimeGenesis, + E: ChainSpecExtension, + { + self.shared_params.update_config(&mut config, spec_factory, version)?; + + // make sure to configure keystore + config.use_in_memory_keystore()?; + + Ok(()) + } } -- GitLab From 3cc0973aff3f5b507c8ed1a13934bd35697b251f Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Fri, 21 Feb 2020 05:02:12 -0800 Subject: [PATCH 028/301] Remove `NetworkSpecialization` (#4665) * remove networkspecialization * Fix most of the fallout * get all tests compiling Co-authored-by: Pierre Krieger --- bin/node-template/node/src/service.rs | 9 +- bin/node/cli/src/service.rs | 11 +- client/authority-discovery/src/lib.rs | 4 +- client/consensus/aura/src/lib.rs | 9 +- client/consensus/babe/src/tests.rs | 9 +- .../finality-grandpa/src/communication/mod.rs | 3 +- client/finality-grandpa/src/tests.rs | 5 +- client/network-gossip/src/lib.rs | 4 +- client/network/src/behaviour.rs | 33 ++-- client/network/src/config.rs | 5 +- client/network/src/lib.rs | 10 +- client/network/src/protocol.rs | 97 +--------- .../src/protocol/generic_proto/tests.rs | 28 ++- client/network/src/protocol/message.rs | 4 - client/network/src/protocol/specialization.rs | 171 ------------------ client/network/src/service.rs | 84 ++++----- client/network/test/src/lib.rs | 52 ++---- client/service/src/builder.rs | 75 ++------ client/service/src/chain_ops.rs | 4 +- client/service/src/lib.rs | 22 +-- 20 files changed, 136 insertions(+), 503 deletions(-) delete mode 100644 client/network/src/protocol/specialization.rs diff --git a/bin/node-template/node/src/service.rs b/bin/node-template/node/src/service.rs index c5b9bf336e..5b64984c47 100644 --- a/bin/node-template/node/src/service.rs +++ b/bin/node-template/node/src/service.rs @@ -6,7 +6,6 @@ use sc_client::LongestChain; use node_template_runtime::{self, GenesisConfig, opaque::Block, RuntimeApi}; use sc_service::{error::{Error as ServiceError}, AbstractService, Configuration, ServiceBuilder}; use sp_inherents::InherentDataProviders; -use sc_network::{construct_simple_protocol}; use sc_executor::native_executor_instance; pub use sc_executor::NativeExecutor; use sp_consensus_aura::sr25519::{AuthorityPair as AuraPair}; @@ -19,11 +18,6 @@ native_executor_instance!( node_template_runtime::native_version, ); -construct_simple_protocol! { - /// Demo protocol attachment for substrate. - pub struct NodeProtocol where Block = Block { } -} - /// Starts a `ServiceBuilder` for a full service. /// /// Use this macro if you don't actually need the full service, but just the builder in order to @@ -95,7 +89,7 @@ pub fn new_full(config: Configuration) import_setup.take() .expect("Link Half and Block Import are present for Full Services or setup failed before. qed"); - let service = builder.with_network_protocol(|_| Ok(NodeProtocol::new()))? + let service = builder .with_finality_proof_provider(|client, backend| Ok(Arc::new(GrandpaFinalityProofProvider::new(backend, client)) as _) )? @@ -228,7 +222,6 @@ pub fn new_light(config: Configuration) Ok((import_queue, finality_proof_request_builder)) })? - .with_network_protocol(|_| Ok(NodeProtocol::new()))? .with_finality_proof_provider(|client, backend| Ok(Arc::new(GrandpaFinalityProofProvider::new(backend, client)) as _) )? diff --git a/bin/node/cli/src/service.rs b/bin/node/cli/src/service.rs index 1dc5a061a3..70dd0521de 100644 --- a/bin/node/cli/src/service.rs +++ b/bin/node/cli/src/service.rs @@ -30,7 +30,6 @@ use sc_service::{ AbstractService, ServiceBuilder, config::Configuration, error::{Error as ServiceError}, }; use sp_inherents::InherentDataProviders; -use sc_network::construct_simple_protocol; use sc_service::{Service, NetworkStatus}; use sc_client::{Client, LocalCallExecutor}; @@ -40,11 +39,6 @@ use node_executor::NativeExecutor; use sc_network::NetworkService; use sc_offchain::OffchainWorkers; -construct_simple_protocol! { - /// Demo protocol attachment for substrate. - pub struct NodeProtocol where Block = Block { } -} - /// Starts a `ServiceBuilder` for a full service. /// /// Use this macro if you don't actually need the full service, but just the builder in order to @@ -144,7 +138,7 @@ macro_rules! new_full { let (builder, mut import_setup, inherent_data_providers) = new_full_start!($config); - let service = builder.with_network_protocol(|_| Ok(crate::service::NodeProtocol::new()))? + let service = builder .with_finality_proof_provider(|client, backend| Ok(Arc::new(grandpa::FinalityProofProvider::new(backend, client)) as _) )? @@ -283,7 +277,7 @@ pub fn new_full(config: NodeConfiguration) ConcreteClient, LongestChain, NetworkStatus, - NetworkService::Hash>, + NetworkService::Hash>, ConcreteTransactionPool, OffchainWorkers< ConcreteClient, @@ -348,7 +342,6 @@ pub fn new_light(config: NodeConfiguration) Ok((import_queue, finality_proof_request_builder)) })? - .with_network_protocol(|_| Ok(NodeProtocol::new()))? .with_finality_proof_provider(|client, backend| Ok(Arc::new(GrandpaFinalityProofProvider::new(backend, client)) as _) )? diff --git a/client/authority-discovery/src/lib.rs b/client/authority-discovery/src/lib.rs index 6260ac9a85..92dcc26450 100644 --- a/client/authority-discovery/src/lib.rs +++ b/client/authority-discovery/src/lib.rs @@ -60,7 +60,6 @@ use libp2p::Multiaddr; use log::{debug, error, log_enabled, warn}; use prost::Message; use sc_client_api::blockchain::HeaderBackend; -use sc_network::specialization::NetworkSpecialization; use sc_network::{DhtEvent, ExHashT, NetworkStateInfo}; use sp_authority_discovery::{AuthorityDiscoveryApi, AuthorityId, AuthoritySignature, AuthorityPair}; use sp_core::crypto::{key_types, Pair}; @@ -477,10 +476,9 @@ pub trait NetworkProvider: NetworkStateInfo { fn get_value(&self, key: &libp2p::kad::record::Key); } -impl NetworkProvider for sc_network::NetworkService +impl NetworkProvider for sc_network::NetworkService where B: BlockT + 'static, - S: NetworkSpecialization, H: ExHashT, { fn set_priority_group( diff --git a/client/consensus/aura/src/lib.rs b/client/consensus/aura/src/lib.rs index 9be52e0246..13dd81c198 100644 --- a/client/consensus/aura/src/lib.rs +++ b/client/consensus/aura/src/lib.rs @@ -896,11 +896,10 @@ mod tests { const SLOT_DURATION: u64 = 1000; pub struct AuraTestNet { - peers: Vec>, + peers: Vec>, } impl TestNetFactory for AuraTestNet { - type Specialization = DummySpecialization; type Verifier = AuraVerifier; type PeerData = (); @@ -935,15 +934,15 @@ mod tests { } } - fn peer(&mut self, i: usize) -> &mut Peer { + fn peer(&mut self, i: usize) -> &mut Peer { &mut self.peers[i] } - fn peers(&self) -> &Vec> { + fn peers(&self) -> &Vec> { &self.peers } - fn mut_peers>)>(&mut self, closure: F) { + fn mut_peers>)>(&mut self, closure: F) { closure(&mut self.peers); } } diff --git a/client/consensus/babe/src/tests.rs b/client/consensus/babe/src/tests.rs index d8696d5944..4045e18b5c 100644 --- a/client/consensus/babe/src/tests.rs +++ b/client/consensus/babe/src/tests.rs @@ -199,7 +199,7 @@ impl> BlockImport for PanickingBlockImport< } pub struct BabeTestNet { - peers: Vec, DummySpecialization>>, + peers: Vec>>, } type TestHeader = ::Header; @@ -236,7 +236,6 @@ pub struct PeerData { } impl TestNetFactory for BabeTestNet { - type Specialization = DummySpecialization; type Verifier = TestVerifier; type PeerData = Option; @@ -307,17 +306,17 @@ impl TestNetFactory for BabeTestNet { } } - fn peer(&mut self, i: usize) -> &mut Peer { + fn peer(&mut self, i: usize) -> &mut Peer { trace!(target: "babe", "Retrieving a peer"); &mut self.peers[i] } - fn peers(&self) -> &Vec> { + fn peers(&self) -> &Vec> { trace!(target: "babe", "Retrieving peers"); &self.peers } - fn mut_peers>)>( + fn mut_peers>)>( &mut self, closure: F, ) { diff --git a/client/finality-grandpa/src/communication/mod.rs b/client/finality-grandpa/src/communication/mod.rs index b5600c1c0d..1f4e223597 100644 --- a/client/finality-grandpa/src/communication/mod.rs +++ b/client/finality-grandpa/src/communication/mod.rs @@ -120,9 +120,8 @@ pub trait Network: GossipNetwork + Clone + Send + 'static fn set_sync_fork_request(&self, peers: Vec, hash: Block::Hash, number: NumberFor); } -impl Network for Arc> where +impl Network for Arc> where B: BlockT, - S: sc_network::specialization::NetworkSpecialization, H: sc_network::ExHashT, { fn set_sync_fork_request(&self, peers: Vec, hash: B::Hash, number: NumberFor) { diff --git a/client/finality-grandpa/src/tests.rs b/client/finality-grandpa/src/tests.rs index 5d01b257b6..16b50ccb9f 100644 --- a/client/finality-grandpa/src/tests.rs +++ b/client/finality-grandpa/src/tests.rs @@ -19,7 +19,7 @@ use super::*; use environment::HasVoted; use sc_network_test::{ - Block, DummySpecialization, Hash, TestNetFactory, BlockImportAdapter, Peer, + Block, Hash, TestNetFactory, BlockImportAdapter, Peer, PeersClient, PassThroughVerifier, }; use sc_network::config::{ProtocolConfig, Roles, BoxFinalityProofRequestBuilder}; @@ -68,7 +68,7 @@ type PeerData = > > >; -type GrandpaPeer = Peer; +type GrandpaPeer = Peer; struct GrandpaTestNet { peers: Vec, @@ -90,7 +90,6 @@ impl GrandpaTestNet { } impl TestNetFactory for GrandpaTestNet { - type Specialization = DummySpecialization; type Verifier = PassThroughVerifier; type PeerData = PeerData; diff --git a/client/network-gossip/src/lib.rs b/client/network-gossip/src/lib.rs index abb3f32972..4e4d32366f 100644 --- a/client/network-gossip/src/lib.rs +++ b/client/network-gossip/src/lib.rs @@ -59,7 +59,7 @@ pub use self::state_machine::TopicNotification; pub use self::validator::{DiscardAll, MessageIntent, Validator, ValidatorContext, ValidationResult}; use futures::prelude::*; -use sc_network::{specialization::NetworkSpecialization, Event, ExHashT, NetworkService, PeerId, ReputationChange}; +use sc_network::{Event, ExHashT, NetworkService, PeerId, ReputationChange}; use sp_runtime::{traits::Block as BlockT, ConsensusEngineId}; use std::{borrow::Cow, pin::Pin, sync::Arc}; @@ -97,7 +97,7 @@ pub trait Network { fn announce(&self, block: B::Hash, associated_data: Vec); } -impl, H: ExHashT> Network for Arc> { +impl Network for Arc> { fn event_stream(&self) -> Pin + Send>> { Box::pin(NetworkService::event_stream(self)) } diff --git a/client/network/src/behaviour.rs b/client/network/src/behaviour.rs index c8c5e59fe6..a03a6caa2f 100644 --- a/client/network/src/behaviour.rs +++ b/client/network/src/behaviour.rs @@ -16,9 +16,8 @@ use crate::{ debug_info, discovery::DiscoveryBehaviour, discovery::DiscoveryOut, DiscoveryNetBehaviour, - Event, protocol::event::DhtEvent + Event, protocol::event::DhtEvent, ExHashT, }; -use crate::{ExHashT, specialization::NetworkSpecialization}; use crate::protocol::{self, light_client_handler, CustomMessageOutcome, Protocol}; use libp2p::NetworkBehaviour; use libp2p::core::{Multiaddr, PeerId, PublicKey}; @@ -33,9 +32,9 @@ use void; /// General behaviour of the network. Combines all protocols together. #[derive(NetworkBehaviour)] #[behaviour(out_event = "BehaviourOut", poll_method = "poll")] -pub struct Behaviour, H: ExHashT> { +pub struct Behaviour { /// All the substrate-specific protocols. - substrate: Protocol, + substrate: Protocol, /// Periodically pings and identifies the nodes we are connected to, and store information in a /// cache. debug_info: debug_info::DebugInfoBehaviour, @@ -58,10 +57,10 @@ pub enum BehaviourOut { Event(Event), } -impl, H: ExHashT> Behaviour { +impl Behaviour { /// Builds a new `Behaviour`. pub async fn new( - substrate: Protocol, + substrate: Protocol, user_agent: String, local_public_key: PublicKey, known_addresses: Vec<(PeerId, Multiaddr)>, @@ -107,12 +106,12 @@ impl, H: ExHashT> Behaviour { } /// Returns a shared reference to the user protocol. - pub fn user_protocol(&self) -> &Protocol { + pub fn user_protocol(&self) -> &Protocol { &self.substrate } /// Returns a mutable reference to the user protocol. - pub fn user_protocol_mut(&mut self) -> &mut Protocol { + pub fn user_protocol_mut(&mut self) -> &mut Protocol { &mut self.substrate } @@ -133,15 +132,15 @@ impl, H: ExHashT> Behaviour { } } -impl, H: ExHashT> NetworkBehaviourEventProcess for -Behaviour { +impl NetworkBehaviourEventProcess for +Behaviour { fn inject_event(&mut self, event: void::Void) { void::unreachable(event) } } -impl, H: ExHashT> NetworkBehaviourEventProcess> for -Behaviour { +impl NetworkBehaviourEventProcess> for +Behaviour { fn inject_event(&mut self, event: CustomMessageOutcome) { match event { CustomMessageOutcome::BlockImport(origin, blocks) => @@ -174,8 +173,8 @@ Behaviour { } } -impl, H: ExHashT> NetworkBehaviourEventProcess - for Behaviour { +impl NetworkBehaviourEventProcess + for Behaviour { fn inject_event(&mut self, event: debug_info::DebugInfoEvent) { let debug_info::DebugInfoEvent::Identified { peer_id, mut info } = event; if info.listen_addrs.len() > 30 { @@ -192,8 +191,8 @@ impl, H: ExHashT> NetworkBehaviourEventPr } } -impl, H: ExHashT> NetworkBehaviourEventProcess - for Behaviour { +impl NetworkBehaviourEventProcess + for Behaviour { fn inject_event(&mut self, out: DiscoveryOut) { match out { DiscoveryOut::UnroutablePeer(_peer_id) => { @@ -221,7 +220,7 @@ impl, H: ExHashT> NetworkBehaviourEventPr } } -impl, H: ExHashT> Behaviour { +impl Behaviour { fn poll(&mut self, _: &mut Context, _: &mut impl PollParameters) -> Poll>> { if !self.events.is_empty() { return Poll::Ready(NetworkBehaviourAction::GenerateEvent(self.events.remove(0))) diff --git a/client/network/src/config.rs b/client/network/src/config.rs index f6a3db4afe..f5cad5977f 100644 --- a/client/network/src/config.rs +++ b/client/network/src/config.rs @@ -43,7 +43,7 @@ use std::{error::Error, fs, io::{self, Write}, net::Ipv4Addr, path::{Path, PathB use zeroize::Zeroize; /// Network initialization parameters. -pub struct Params { +pub struct Params { /// Assigned roles for our node (full, light, ...). pub roles: Roles, @@ -88,9 +88,6 @@ pub struct Params { /// valid. pub import_queue: Box>, - /// Customization of the network. Use this to plug additional networking capabilities. - pub specialization: S, - /// Type to check incoming block announcements. pub block_announce_validator: Box + Send>, } diff --git a/client/network/src/lib.rs b/client/network/src/lib.rs index 5da26b3346..a5397a4e3e 100644 --- a/client/network/src/lib.rs +++ b/client/network/src/lib.rs @@ -136,10 +136,6 @@ //! - Light-client requests. When a light client requires information, a random node we have a //! substream open with is chosen, and the information is requested from it. //! - Gossiping. Used for example by grandpa. -//! - Network specialization. The network protocol can be specialized through a template parameter -//! of the network service. This specialization is free to send and receive messages with the -//! remote. This is meant to be used by the chain that is being built on top of Substrate -//! (eg. Polkadot). //! //! It is intended that in the future each of these components gets more isolated, so that they //! are free to open and close their own substreams, and so that syncing and light client requests @@ -180,7 +176,7 @@ pub mod error; pub mod network_state; pub use service::{NetworkService, NetworkStateInfo, NetworkWorker, ExHashT, ReportHandle}; -pub use protocol::{PeerInfo, Context, specialization}; +pub use protocol::PeerInfo; pub use protocol::event::{Event, DhtEvent}; pub use protocol::sync::SyncState; pub use libp2p::{Multiaddr, PeerId}; @@ -196,10 +192,6 @@ pub use protocol::message::Status as StatusMessage; pub use sc_peerset::ReputationChange; -// Used by the `construct_simple_protocol!` macro. -#[doc(hidden)] -pub use sp_runtime::traits::Block as BlockT; - /// Extension trait for `NetworkBehaviour` that also accepts discovering nodes. trait DiscoveryNetBehaviour { /// Notify the protocol that we have learned about the existence of nodes. diff --git a/client/network/src/protocol.rs b/client/network/src/protocol.rs index fe75649bac..dd8b5e6c28 100644 --- a/client/network/src/protocol.rs +++ b/client/network/src/protocol.rs @@ -38,7 +38,6 @@ use sp_arithmetic::traits::SaturatedConversion; use message::{BlockAnnounce, BlockAttributes, Direction, FromBlock, Message, RequestId}; use message::generic::Message as GenericMessage; use light_dispatch::{LightDispatch, LightDispatchNetwork, RequestData}; -use specialization::NetworkSpecialization; use sync::{ChainSync, SyncState}; use crate::service::{TransactionPool, ExHashT}; use crate::config::{BoxFinalityProofRequestBuilder, Roles}; @@ -73,7 +72,6 @@ pub mod message; pub mod event; pub mod light_client_handler; pub mod light_dispatch; -pub mod specialization; pub mod sync; pub use block_requests::BlockRequests; @@ -136,7 +134,7 @@ mod rep { } // Lock must always be taken in order declared here. -pub struct Protocol, H: ExHashT> { +pub struct Protocol { /// Interval at which we call `tick`. tick_timeout: Pin + Send>>, /// Interval at which we call `propagate_extrinsics`. @@ -146,7 +144,6 @@ pub struct Protocol, H: ExHashT> { light_dispatch: LightDispatch, genesis_hash: B::Hash, sync: ChainSync, - specialization: S, context_data: ContextData, /// List of nodes for which we perform additional logging because they are important for the /// user. @@ -335,55 +332,6 @@ impl<'a, B: BlockT> LightDispatchNetwork for LightDispatchIn<'a> { } } -/// Context for a network-specific handler. -pub trait Context { - /// Adjusts the reputation of the peer. Use this to point out that a peer has been malign or - /// irresponsible or appeared lazy. - fn report_peer(&mut self, who: PeerId, reputation: sc_peerset::ReputationChange); - - /// Force disconnecting from a peer. Use this when a peer misbehaved. - fn disconnect_peer(&mut self, who: PeerId); - - /// Send a chain-specific message to a peer. - fn send_chain_specific(&mut self, who: PeerId, message: Vec); -} - -/// Protocol context. -struct ProtocolContext<'a, B: 'a + BlockT, H: 'a + ExHashT> { - behaviour: &'a mut GenericProto, - context_data: &'a mut ContextData, - peerset_handle: &'a sc_peerset::PeersetHandle, -} - -impl<'a, B: BlockT + 'a, H: 'a + ExHashT> ProtocolContext<'a, B, H> { - fn new( - context_data: &'a mut ContextData, - behaviour: &'a mut GenericProto, - peerset_handle: &'a sc_peerset::PeersetHandle, - ) -> Self { - ProtocolContext { context_data, peerset_handle, behaviour } - } -} - -impl<'a, B: BlockT + 'a, H: ExHashT + 'a> Context for ProtocolContext<'a, B, H> { - fn report_peer(&mut self, who: PeerId, reputation: sc_peerset::ReputationChange) { - self.peerset_handle.report_peer(who, reputation) - } - - fn disconnect_peer(&mut self, who: PeerId) { - self.behaviour.disconnect_peer(&who) - } - - fn send_chain_specific(&mut self, who: PeerId, message: Vec) { - send_message:: ( - self.behaviour, - &mut self.context_data.stats, - &who, - GenericMessage::ChainSpecific(message) - ) - } -} - /// Data necessary to create a context. struct ContextData { // All connected peers @@ -410,20 +358,19 @@ impl Default for ProtocolConfig { } } -impl, H: ExHashT> Protocol { +impl Protocol { /// Create a new instance. pub fn new( config: ProtocolConfig, chain: Arc>, checker: Arc>, - specialization: S, transaction_pool: Arc>, finality_proof_provider: Option>>, finality_proof_request_builder: Option>, protocol_id: ProtocolId, peerset_config: sc_peerset::PeersetConfig, block_announce_validator: Box + Send> - ) -> error::Result<(Protocol, sc_peerset::PeersetHandle)> { + ) -> error::Result<(Protocol, sc_peerset::PeersetHandle)> { let info = chain.info(); let sync = ChainSync::new( config.roles, @@ -459,7 +406,6 @@ impl, H: ExHashT> Protocol { light_dispatch: LightDispatch::new(checker), genesis_hash: info.genesis_hash, sync, - specialization, handshaking_peers: HashMap::new(), important_peers, transaction_pool, @@ -681,11 +627,6 @@ impl, H: ExHashT> Protocol { CustomMessageOutcome::None }; }, - GenericMessage::ChainSpecific(msg) => self.specialization.on_message( - &mut ProtocolContext::new(&mut self.context_data, &mut self.behaviour, &self.peerset_handle), - who, - msg, - ), } CustomMessageOutcome::None @@ -710,14 +651,6 @@ impl, H: ExHashT> Protocol { ); } - /// Locks `self` and returns a context plus the network specialization. - pub fn specialization_lock<'a>( - &'a mut self, - ) -> (impl Context + 'a, &'a mut S) { - let context = ProtocolContext::new(&mut self.context_data, &mut self.behaviour, &self.peerset_handle); - (context, &mut self.specialization) - } - /// Called when a new peer is connected pub fn on_peer_connected(&mut self, who: PeerId) { trace!(target: "sync", "Connecting {}", who); @@ -739,9 +672,7 @@ impl, H: ExHashT> Protocol { self.context_data.peers.remove(&peer) }; if let Some(_peer_data) = removed { - let mut context = ProtocolContext::new(&mut self.context_data, &mut self.behaviour, &self.peerset_handle); self.sync.peer_disconnected(peer.clone()); - self.specialization.on_disconnect(&mut context, peer.clone()); self.light_dispatch.on_disconnect(LightDispatchIn { behaviour: &mut self.behaviour, peerset: self.peerset_handle.clone(), @@ -940,9 +871,6 @@ impl, H: ExHashT> Protocol { } } - self.specialization.maintain_peers( - &mut ProtocolContext::new(&mut self.context_data, &mut self.behaviour, &self.peerset_handle) - ); for p in aborting { self.behaviour.disconnect_peer(&p); self.peerset_handle.report_peer(p, rep::TIMEOUT); @@ -1058,9 +986,6 @@ impl, H: ExHashT> Protocol { } } - let mut context = ProtocolContext::new(&mut self.context_data, &mut self.behaviour, &self.peerset_handle); - self.specialization.on_connect(&mut context, who.clone(), status); - // Notify all the notification protocols as open. CustomMessageOutcome::NotificationStreamOpened { remote: who, @@ -1292,7 +1217,7 @@ impl, H: ExHashT> Protocol { roles: self.config.roles.into(), best_number: info.best_number, best_hash: info.best_hash, - chain_status: self.specialization.status(), + chain_status: Vec::new(), // TODO: find a way to make this backwards-compatible }; self.send_message(&who, GenericMessage::Status(status)) @@ -1361,15 +1286,10 @@ impl, H: ExHashT> Protocol { /// Call this when a block has been imported in the import queue and we should announce it on /// the network. - pub fn on_block_imported(&mut self, hash: B::Hash, header: &B::Header, data: Vec, is_best: bool) { + pub fn on_block_imported(&mut self, header: &B::Header, data: Vec, is_best: bool) { if is_best { self.sync.update_chain_info(header); } - self.specialization.on_block_imported( - &mut ProtocolContext::new(&mut self.context_data, &mut self.behaviour, &self.peerset_handle), - hash.clone(), - header, - ); // blocks are not announced by light clients if self.config.roles.is_light() { @@ -1872,8 +1792,7 @@ fn send_message( behaviour.send_packet(who, encoded); } -impl, H: ExHashT> NetworkBehaviour for -Protocol { +impl NetworkBehaviour for Protocol { type ProtocolsHandler = ::ProtocolsHandler; type OutEvent = CustomMessageOutcome; @@ -2030,13 +1949,13 @@ Protocol { } } -impl, H: ExHashT> DiscoveryNetBehaviour for Protocol { +impl DiscoveryNetBehaviour for Protocol { fn add_discovered_nodes(&mut self, peer_ids: impl Iterator) { self.behaviour.add_discovered_nodes(peer_ids) } } -impl, H: ExHashT> Drop for Protocol { +impl Drop for Protocol { fn drop(&mut self) { debug!(target: "sync", "Network stats:\n{}", self.format_stats()); } diff --git a/client/network/src/protocol/generic_proto/tests.rs b/client/network/src/protocol/generic_proto/tests.rs index b331b3c237..b8436e2c7f 100644 --- a/client/network/src/protocol/generic_proto/tests.rs +++ b/client/network/src/protocol/generic_proto/tests.rs @@ -25,7 +25,8 @@ use libp2p::swarm::{PollParameters, NetworkBehaviour, NetworkBehaviourAction}; use libp2p::{PeerId, Multiaddr, Transport}; use rand::seq::SliceRandom; use std::{error, io, task::Context, task::Poll, time::Duration}; -use crate::message::Message; +use std::collections::HashSet; +use crate::message::{generic::BlockResponse, Message}; use crate::protocol::generic_proto::{GenericProto, GenericProtoOut}; use sp_test_primitives::Block; @@ -227,7 +228,10 @@ fn two_nodes_transfer_lots_of_packets() { for n in 0 .. NUM_PACKETS { service1.send_packet( &peer_id, - Message::::ChainSpecific(vec![(n % 256) as u8]).encode() + Message::::BlockResponse(BlockResponse { + id: n as _, + blocks: Vec::new(), + }).encode() ); } }, @@ -243,8 +247,8 @@ fn two_nodes_transfer_lots_of_packets() { Some(GenericProtoOut::CustomProtocolOpen { .. }) => {}, Some(GenericProtoOut::CustomMessage { message, .. }) => { match Message::::decode(&mut &message[..]).unwrap() { - Message::::ChainSpecific(message) => { - assert_eq!(message.len(), 1); + Message::::BlockResponse(BlockResponse { id: _, blocks }) => { + assert!(blocks.is_empty()); packet_counter += 1; if packet_counter == NUM_PACKETS { return Poll::Ready(()) @@ -270,9 +274,21 @@ fn basic_two_nodes_requests_in_parallel() { // Generate random messages with or without a request id. let mut to_send = { let mut to_send = Vec::new(); + let mut existing_ids = HashSet::new(); for _ in 0..200 { // Note: don't make that number too high or the CPU usage will explode. - let msg = (0..10).map(|_| rand::random::()).collect::>(); - to_send.push(Message::::ChainSpecific(msg)); + let req_id = loop { + let req_id = rand::random::(); + + // ensure uniqueness - odds of randomly sampling collisions + // is unlikely, but possible to cause spurious test failures. + if existing_ids.insert(req_id) { + break req_id; + } + }; + + to_send.push(Message::::BlockResponse( + BlockResponse { id: req_id, blocks: Vec::new() } + )); } to_send }; diff --git a/client/network/src/protocol/message.rs b/client/network/src/protocol/message.rs index a2261b2059..a12c26da2e 100644 --- a/client/network/src/protocol/message.rs +++ b/client/network/src/protocol/message.rs @@ -219,9 +219,6 @@ pub mod generic { FinalityProofResponse(FinalityProofResponse), /// Batch of consensus protocol messages. ConsensusBatch(Vec), - /// Chain-specific message. - #[codec(index = "255")] - ChainSpecific(Vec), } impl Message { @@ -246,7 +243,6 @@ pub mod generic { Message::FinalityProofRequest(_) => "FinalityProofRequest", Message::FinalityProofResponse(_) => "FinalityProofResponse", Message::ConsensusBatch(_) => "ConsensusBatch", - Message::ChainSpecific(_) => "ChainSpecific", } } } diff --git a/client/network/src/protocol/specialization.rs b/client/network/src/protocol/specialization.rs deleted file mode 100644 index b410959509..0000000000 --- a/client/network/src/protocol/specialization.rs +++ /dev/null @@ -1,171 +0,0 @@ -// Copyright 2017-2020 Parity Technologies (UK) Ltd. -// This file is part of Substrate. - -// Substrate is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Substrate is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Substrate. If not, see . - -//! Specializations of the substrate network protocol to allow more complex forms of communication. - -pub use crate::protocol::event::{DhtEvent, Event}; - -use crate::protocol::Context; -use libp2p::PeerId; -use sp_runtime::traits::Block as BlockT; - -/// A specialization of the substrate network protocol. Handles events and sends messages. -pub trait NetworkSpecialization: Send + Sync + 'static { - /// Get the current specialization-status. - fn status(&self) -> Vec; - - /// Called when a peer successfully handshakes. - fn on_connect(&mut self, ctx: &mut dyn Context, who: PeerId, status: crate::protocol::message::Status); - - /// Called when a peer is disconnected. If the peer ID is unknown, it should be ignored. - fn on_disconnect(&mut self, ctx: &mut dyn Context, who: PeerId); - - /// Called when a network-specific message arrives. - fn on_message( - &mut self, - ctx: &mut dyn Context, - who: PeerId, - message: Vec - ); - - /// Called periodically to maintain peers and handle timeouts. - fn maintain_peers(&mut self, _ctx: &mut dyn Context) { } - - /// Called when a block is _imported_ at the head of the chain (not during major sync). - /// Not guaranteed to be called for every block, but will be most of the after major sync. - fn on_block_imported(&mut self, _ctx: &mut dyn Context, _hash: B::Hash, _header: &B::Header) { } -} - -/// A specialization that does nothing. -#[derive(Clone)] -pub struct DummySpecialization; - -impl NetworkSpecialization for DummySpecialization { - fn status(&self) -> Vec { - vec![] - } - - fn on_connect( - &mut self, - _ctx: &mut dyn Context, - _peer_id: PeerId, - _status: crate::protocol::message::Status - ) {} - - fn on_disconnect(&mut self, _ctx: &mut dyn Context, _peer_id: PeerId) {} - - fn on_message( - &mut self, - _ctx: &mut dyn Context, - _peer_id: PeerId, - _message: Vec, - ) {} -} - -/// Construct a simple protocol that is composed of several sub protocols. -/// Each "sub protocol" needs to implement `Specialization` and needs to provide a `new()` function. -/// For more fine grained implementations, this macro is not usable. -/// -/// # Example -/// -/// ```nocompile -/// construct_simple_protocol! { -/// pub struct MyProtocol where Block = MyBlock { -/// consensus_gossip: ConsensusGossip, -/// other_protocol: MyCoolStuff, -/// } -/// } -/// ``` -/// -/// You can also provide an optional parameter after `where Block = MyBlock`, so it looks like -/// `where Block = MyBlock, Status = consensus_gossip`. This will instruct the implementation to -/// use the `status()` function from the `ConsensusGossip` protocol. By default, `status()` returns -/// an empty vector. -#[macro_export] -macro_rules! construct_simple_protocol { - ( - $( #[ $attr:meta ] )* - pub struct $protocol:ident where - Block = $block:ident - $( , Status = $status_protocol_name:ident )* - { - $( $sub_protocol_name:ident : $sub_protocol:ident $( <$protocol_block:ty> )*, )* - } - ) => { - $( #[$attr] )* - pub struct $protocol { - $( $sub_protocol_name: $sub_protocol $( <$protocol_block> )*, )* - } - - impl $protocol { - /// Instantiate a node protocol handler. - pub fn new() -> Self { - Self { - $( $sub_protocol_name: $sub_protocol::new(), )* - } - } - } - - impl $crate::specialization::NetworkSpecialization<$block> for $protocol { - fn status(&self) -> Vec { - $( - let status = self.$status_protocol_name.status(); - - if !status.is_empty() { - return status; - } - )* - - Vec::new() - } - - fn on_connect( - &mut self, - _ctx: &mut $crate::Context<$block>, - _who: $crate::PeerId, - _status: $crate::StatusMessage<$block> - ) { - $( self.$sub_protocol_name.on_connect(_ctx, _who, _status); )* - } - - fn on_disconnect(&mut self, _ctx: &mut $crate::Context<$block>, _who: $crate::PeerId) { - $( self.$sub_protocol_name.on_disconnect(_ctx, _who); )* - } - - fn on_message( - &mut self, - _ctx: &mut $crate::Context<$block>, - _who: $crate::PeerId, - _message: Vec, - ) { - $( self.$sub_protocol_name.on_message(_ctx, _who, _message); )* - } - - fn maintain_peers(&mut self, _ctx: &mut $crate::Context<$block>) { - $( self.$sub_protocol_name.maintain_peers(_ctx); )* - } - - fn on_block_imported( - &mut self, - _ctx: &mut $crate::Context<$block>, - _hash: <$block as $crate::BlockT>::Hash, - _header: &<$block as $crate::BlockT>::Header - ) { - $( self.$sub_protocol_name.on_block_imported(_ctx, _hash, _header); )* - } - } - } -} diff --git a/client/network/src/service.rs b/client/network/src/service.rs index 26facd98af..288289d95c 100644 --- a/client/network/src/service.rs +++ b/client/network/src/service.rs @@ -45,9 +45,8 @@ use crate::{transport, config::NonReservedPeerMode, ReputationChange}; use crate::config::{Params, TransportConfig}; use crate::error::Error; use crate::network_state::{NetworkState, NotConnectedPeer as NetworkStateNotConnectedPeer, Peer as NetworkStatePeer}; -use crate::protocol::{self, Protocol, Context, PeerInfo}; +use crate::protocol::{self, Protocol, PeerInfo}; use crate::protocol::{event::Event, light_dispatch::{AlwaysBadChecker, RequestData}}; -use crate::protocol::specialization::NetworkSpecialization; use crate::protocol::sync::SyncState; /// Minimum Requirements for a Hash within Networking @@ -101,7 +100,7 @@ impl ReportHandle { } /// Substrate network service. Handles network IO and manages connectivity. -pub struct NetworkService, H: ExHashT> { +pub struct NetworkService { /// Number of peers we're connected to. num_connected: Arc, /// The local external addresses. @@ -116,19 +115,19 @@ pub struct NetworkService, H: E /// nodes it should be connected to or not. peerset: PeersetHandle, /// Channel that sends messages to the actual worker. - to_worker: mpsc::UnboundedSender>, + to_worker: mpsc::UnboundedSender>, /// Marker to pin the `H` generic. Serves no purpose except to not break backwards /// compatibility. _marker: PhantomData, } -impl, H: ExHashT> NetworkWorker { +impl NetworkWorker { /// Creates the network service. /// /// Returns a `NetworkWorker` that implements `Future` and must be regularly polled in order /// for the network processing to advance. From it, you can extract a `NetworkService` using /// `worker.service()`. The `NetworkService` can be shared through the codebase. - pub fn new(params: Params) -> Result, Error> { + pub fn new(params: Params) -> Result, Error> { let (to_worker, from_worker) = mpsc::unbounded(); if let Some(ref path) = params.network_config.net_config_path { @@ -205,7 +204,6 @@ impl, H: ExHashT> NetworkWorker }, params.chain.clone(), checker.clone(), - params.specialization, params.transaction_pool, params.finality_proof_provider.clone(), params.finality_proof_request_builder, @@ -215,7 +213,7 @@ impl, H: ExHashT> NetworkWorker )?; // Build the swarm. - let (mut swarm, bandwidth): (Swarm::, _) = { + let (mut swarm, bandwidth): (Swarm::, _) = { let user_agent = format!( "{} ({})", params.network_config.client_version, @@ -263,14 +261,14 @@ impl, H: ExHashT> NetworkWorker // Listen on multiaddresses. for addr in ¶ms.network_config.listen_addresses { - if let Err(err) = Swarm::::listen_on(&mut swarm, addr.clone()) { + if let Err(err) = Swarm::::listen_on(&mut swarm, addr.clone()) { warn!(target: "sub-libp2p", "Can't listen on {} because: {:?}", addr, err) } } // Add external addresses. for addr in ¶ms.network_config.public_addresses { - Swarm::::add_external_address(&mut swarm, addr.clone()); + Swarm::::add_external_address(&mut swarm, addr.clone()); } let external_addresses = Arc::new(Mutex::new(Vec::new())); @@ -351,13 +349,13 @@ impl, H: ExHashT> NetworkWorker /// Return a `NetworkService` that can be shared through the code base and can be used to /// manipulate the worker. - pub fn service(&self) -> &Arc> { + pub fn service(&self) -> &Arc> { &self.service } /// You must call this when a new block is imported by the client. - pub fn on_block_imported(&mut self, hash: B::Hash, header: B::Header, data: Vec, is_best: bool) { - self.network_service.user_protocol_mut().on_block_imported(hash, &header, data, is_best); + pub fn on_block_imported(&mut self, header: B::Header, data: Vec, is_best: bool) { + self.network_service.user_protocol_mut().on_block_imported(&header, data, is_best); } /// You must call this when a new block is finalized by the client. @@ -415,9 +413,9 @@ impl, H: ExHashT> NetworkWorker }; NetworkState { - peer_id: Swarm::::local_peer_id(&swarm).to_base58(), - listened_addresses: Swarm::::listeners(&swarm).cloned().collect(), - external_addresses: Swarm::::external_addresses(&swarm).cloned().collect(), + peer_id: Swarm::::local_peer_id(&swarm).to_base58(), + listened_addresses: Swarm::::listeners(&swarm).cloned().collect(), + external_addresses: Swarm::::external_addresses(&swarm).cloned().collect(), average_download_per_sec: self.service.bandwidth.average_download_per_sec(), average_upload_per_sec: self.service.bandwidth.average_upload_per_sec(), connected_peers, @@ -446,7 +444,7 @@ impl, H: ExHashT> NetworkWorker } } -impl, H: ExHashT> NetworkService { +impl NetworkService { /// Writes a message on an open notifications channel. Has no effect if the notifications /// channel with this protocol name is closed. /// @@ -545,15 +543,6 @@ impl, H: ExHashT> NetworkServic .unbounded_send(ServiceToWorkerMsg::RequestJustification(hash.clone(), number)); } - /// Execute a closure with the chain-specific network specialization. - pub fn with_spec(&self, f: F) - where F: FnOnce(&mut S, &mut dyn Context) + Send + 'static - { - let _ = self - .to_worker - .unbounded_send(ServiceToWorkerMsg::ExecuteWithSpec(Box::new(f))); - } - /// Are we in the process of downloading the chain? pub fn is_major_syncing(&self) -> bool { self.is_major_syncing.load(Ordering::Relaxed) @@ -641,8 +630,8 @@ impl, H: ExHashT> NetworkServic } } -impl, H: ExHashT> sp_consensus::SyncOracle - for NetworkService +impl sp_consensus::SyncOracle + for NetworkService { fn is_major_syncing(&mut self) -> bool { NetworkService::is_major_syncing(self) @@ -653,8 +642,8 @@ impl, H: ExHashT> sp_consensus: } } -impl<'a, B: BlockT + 'static, S: NetworkSpecialization, H: ExHashT> sp_consensus::SyncOracle - for &'a NetworkService +impl<'a, B: BlockT + 'static, H: ExHashT> sp_consensus::SyncOracle + for &'a NetworkService { fn is_major_syncing(&mut self) -> bool { NetworkService::is_major_syncing(self) @@ -674,10 +663,9 @@ pub trait NetworkStateInfo { fn local_peer_id(&self) -> PeerId; } -impl NetworkStateInfo for NetworkService +impl NetworkStateInfo for NetworkService where B: sp_runtime::traits::Block, - S: NetworkSpecialization, H: ExHashT, { /// Returns the local external addresses. @@ -694,12 +682,11 @@ impl NetworkStateInfo for NetworkService /// Messages sent from the `NetworkService` to the `NetworkWorker`. /// /// Each entry corresponds to a method of `NetworkService`. -enum ServiceToWorkerMsg> { +enum ServiceToWorkerMsg { PropagateExtrinsic(H), PropagateExtrinsics, RequestJustification(B::Hash, NumberFor), AnnounceBlock(B::Hash, Vec), - ExecuteWithSpec(Box) + Send>), GetValue(record::Key), PutValue(record::Key, Vec), AddKnownAddress(PeerId, Multiaddr), @@ -721,7 +708,7 @@ enum ServiceToWorkerMsg> { /// /// You are encouraged to poll this in a separate background thread or task. #[must_use = "The NetworkWorker must be polled in order for the network to work"] -pub struct NetworkWorker, H: ExHashT> { +pub struct NetworkWorker { /// Updated by the `NetworkWorker` and loaded by the `NetworkService`. external_addresses: Arc>>, /// Updated by the `NetworkWorker` and loaded by the `NetworkService`. @@ -729,20 +716,20 @@ pub struct NetworkWorker, H: Ex /// Updated by the `NetworkWorker` and loaded by the `NetworkService`. is_major_syncing: Arc, /// The network service that can be extracted and shared through the codebase. - service: Arc>, + service: Arc>, /// The *actual* network. - network_service: Swarm, + network_service: Swarm, /// The import queue that was passed as initialization. import_queue: Box>, /// Messages from the `NetworkService` and that must be processed. - from_worker: mpsc::UnboundedReceiver>, + from_worker: mpsc::UnboundedReceiver>, /// Receiver for queries from the light client that must be processed. light_client_rqs: Option>>, /// Senders for events that happen on the network. event_streams: Vec>, } -impl, H: ExHashT> Future for NetworkWorker { +impl Future for NetworkWorker { type Output = Result<(), io::Error>; fn poll(mut self: Pin<&mut Self>, cx: &mut std::task::Context) -> Poll { @@ -769,11 +756,6 @@ impl, H: ExHashT> Future for Ne }; match msg { - ServiceToWorkerMsg::ExecuteWithSpec(task) => { - let protocol = this.network_service.user_protocol_mut(); - let (mut context, spec) = protocol.specialization_lock(); - task(spec, &mut context); - }, ServiceToWorkerMsg::AnnounceBlock(hash, data) => this.network_service.user_protocol_mut().announce_block(hash, data), ServiceToWorkerMsg::RequestJustification(hash, number) => @@ -839,7 +821,7 @@ impl, H: ExHashT> Future for Ne // Update the variables shared with the `NetworkService`. this.num_connected.store(this.network_service.user_protocol_mut().num_connected_peers(), Ordering::Relaxed); { - let external_addresses = Swarm::::external_addresses(&this.network_service).cloned().collect(); + let external_addresses = Swarm::::external_addresses(&this.network_service).cloned().collect(); *this.external_addresses.lock() = external_addresses; } this.is_major_syncing.store(match this.network_service.user_protocol_mut().sync_state() { @@ -851,20 +833,18 @@ impl, H: ExHashT> Future for Ne } } -impl, H: ExHashT> Unpin for NetworkWorker { +impl Unpin for NetworkWorker { } /// The libp2p swarm, customized for our needs. -type Swarm = libp2p::swarm::Swarm< - Behaviour ->; +type Swarm = libp2p::swarm::Swarm>; // Implementation of `import_queue::Link` trait using the available local variables. -struct NetworkLink<'a, B: BlockT, S: NetworkSpecialization, H: ExHashT> { - protocol: &'a mut Swarm, +struct NetworkLink<'a, B: BlockT, H: ExHashT> { + protocol: &'a mut Swarm, } -impl<'a, B: BlockT, S: NetworkSpecialization, H: ExHashT> Link for NetworkLink<'a, B, S, H> { +impl<'a, B: BlockT, H: ExHashT> Link for NetworkLink<'a, B, H> { fn blocks_processed( &mut self, imported: usize, diff --git a/client/network/test/src/lib.rs b/client/network/test/src/lib.rs index ea641e58b6..982e2ff512 100644 --- a/client/network/test/src/lib.rs +++ b/client/network/test/src/lib.rs @@ -52,17 +52,14 @@ use sc_network::config::{NetworkConfiguration, TransportConfig, BoxFinalityProof use libp2p::PeerId; use parking_lot::Mutex; use sp_core::H256; -use sc_network::config::ProtocolConfig; +use sc_network::config::{ProtocolConfig, TransactionPool}; use sp_runtime::generic::{BlockId, OpaqueDigestItemId}; use sp_runtime::traits::{Block as BlockT, Header as HeaderT, NumberFor}; use sp_runtime::Justification; -use sc_network::config::TransactionPool; -use sc_network::specialization::NetworkSpecialization; use substrate_test_runtime_client::{self, AccountKeyring}; pub use substrate_test_runtime_client::runtime::{Block, Extrinsic, Hash, Transfer}; pub use substrate_test_runtime_client::{TestClient, TestClientBuilder, TestClientBuilderExt}; -pub use sc_network::specialization::DummySpecialization; type AuthorityId = sp_consensus_babe::AuthorityId; @@ -178,7 +175,7 @@ impl PeersClient { } } -pub struct Peer> { +pub struct Peer { pub data: D, client: PeersClient, /// We keep a copy of the verifier so that we can invoke it for locally-generated blocks, @@ -189,12 +186,12 @@ pub struct Peer> { block_import: BlockImportAdapter<()>, select_chain: Option>, backend: Option>, - network: NetworkWorker::Hash>, + network: NetworkWorker::Hash>, imported_blocks_stream: Box, Error = ()> + Send>, finality_notification_stream: Box, Error = ()> + Send>, } -impl> Peer { +impl Peer { /// Get this peer ID. pub fn id(&self) -> PeerId { self.network.service().local_peer_id() @@ -283,7 +280,7 @@ impl> Peer { Default::default() }; self.block_import.import_block(import_block, cache).expect("block_import failed"); - self.network.on_block_imported(hash, header, Vec::new(), true); + self.network.on_block_imported(header, Vec::new(), true); at = hash; } @@ -336,7 +333,7 @@ impl> Peer { } /// Get a reference to the network service. - pub fn network_service(&self) -> &Arc::Hash>> { + pub fn network_service(&self) -> &Arc::Hash>> { &self.network.service() } @@ -392,16 +389,6 @@ impl TransactionPool for EmptyTransactionPool { fn transaction(&self, _h: &Hash) -> Option { None } } -pub trait SpecializationFactory { - fn create() -> Self; -} - -impl SpecializationFactory for DummySpecialization { - fn create() -> DummySpecialization { - DummySpecialization - } -} - /// Implements `BlockImport` for any `Transaction`. Internally the transaction is /// "converted", aka the field is set to `None`. /// @@ -522,7 +509,6 @@ impl VerifierAdapter { } pub trait TestNetFactory: Sized { - type Specialization: NetworkSpecialization + SpecializationFactory; type Verifier: 'static + Verifier; type PeerData: Default; @@ -536,9 +522,9 @@ pub trait TestNetFactory: Sized { ) -> Self::Verifier; /// Get reference to peer. - fn peer(&mut self, i: usize) -> &mut Peer; - fn peers(&self) -> &Vec>; - fn mut_peers>)>( + fn peer(&mut self, i: usize) -> &mut Peer; + fn peers(&self) -> &Vec>; + fn mut_peers>)>( &mut self, closure: F, ); @@ -636,7 +622,6 @@ pub trait TestNetFactory: Sized { transaction_pool: Arc::new(EmptyTransactionPool), protocol_id: ProtocolId::from(&b"test-protocol-name"[..]), import_queue, - specialization: self::SpecializationFactory::create(), block_announce_validator: Box::new(DefaultBlockAnnounceValidator::new(client.clone())) }).unwrap(); @@ -712,7 +697,6 @@ pub trait TestNetFactory: Sized { transaction_pool: Arc::new(EmptyTransactionPool), protocol_id: ProtocolId::from(&b"test-protocol-name"[..]), import_queue, - specialization: self::SpecializationFactory::create(), block_announce_validator: Box::new(DefaultBlockAnnounceValidator::new(client.clone())) }).unwrap(); @@ -784,7 +768,6 @@ pub trait TestNetFactory: Sized { // We poll `imported_blocks_stream`. while let Ok(Async::Ready(Some(notification))) = peer.imported_blocks_stream.poll() { peer.network.on_block_imported( - notification.hash, notification.header, Vec::new(), true, @@ -805,11 +788,10 @@ pub trait TestNetFactory: Sized { } pub struct TestNet { - peers: Vec>, + peers: Vec>, } impl TestNetFactory for TestNet { - type Specialization = DummySpecialization; type Verifier = PassThroughVerifier; type PeerData = (); @@ -826,15 +808,15 @@ impl TestNetFactory for TestNet { PassThroughVerifier(false) } - fn peer(&mut self, i: usize) -> &mut Peer<(), Self::Specialization> { + fn peer(&mut self, i: usize) -> &mut Peer<()> { &mut self.peers[i] } - fn peers(&self) -> &Vec> { + fn peers(&self) -> &Vec> { &self.peers } - fn mut_peers>)>(&mut self, closure: F) { + fn mut_peers>)>(&mut self, closure: F) { closure(&mut self.peers); } } @@ -858,7 +840,6 @@ impl JustificationImport for ForceFinalized { pub struct JustificationTestNet(TestNet); impl TestNetFactory for JustificationTestNet { - type Specialization = DummySpecialization; type Verifier = PassThroughVerifier; type PeerData = (); @@ -870,17 +851,16 @@ impl TestNetFactory for JustificationTestNet { self.0.make_verifier(client, config, peer_data) } - fn peer(&mut self, i: usize) -> &mut Peer { + fn peer(&mut self, i: usize) -> &mut Peer { self.0.peer(i) } - fn peers(&self) -> &Vec> { + fn peers(&self) -> &Vec> { self.0.peers() } fn mut_peers>, + &mut Vec>, )>(&mut self, closure: F) { self.0.mut_peers(closure) } diff --git a/client/service/src/builder.rs b/client/service/src/builder.rs index 20078f2d4f..7159e532c4 100644 --- a/client/service/src/builder.rs +++ b/client/service/src/builder.rs @@ -35,7 +35,7 @@ use futures::{ use sc_keystore::{Store as Keystore}; use log::{info, warn, error}; use sc_network::config::{FinalityProofProvider, OnDemand, BoxFinalityProofRequestBuilder}; -use sc_network::{NetworkService, NetworkStateInfo, specialization::NetworkSpecialization}; +use sc_network::{NetworkService, NetworkStateInfo}; use parking_lot::{Mutex, RwLock}; use sp_runtime::generic::BlockId; use sp_runtime::traits::{ @@ -102,7 +102,6 @@ pub type BackgroundTask = Pin + Send>>; /// /// - [`with_select_chain`](ServiceBuilder::with_select_chain) /// - [`with_import_queue`](ServiceBuilder::with_import_queue) -/// - [`with_network_protocol`](ServiceBuilder::with_network_protocol) /// - [`with_finality_proof_provider`](ServiceBuilder::with_finality_proof_provider) /// - [`with_transaction_pool`](ServiceBuilder::with_transaction_pool) /// @@ -112,7 +111,7 @@ pub type BackgroundTask = Pin + Send>>; /// generics is done when you call `build`. /// pub struct ServiceBuilder + TExPool, TRpc, Backend> { config: Configuration, pub (crate) client: Arc, @@ -123,7 +122,6 @@ pub struct ServiceBuilder, finality_proof_provider: Option, - network_protocol: TNetP, transaction_pool: Arc, rpc_extensions: TRpc, remote_backend: Option>>, @@ -266,7 +264,7 @@ fn new_full_parts( Ok((client, backend, keystore)) } -impl ServiceBuilder<(), (), TGen, TCSExt, (), (), (), (), (), (), (), (), (), ()> +impl ServiceBuilder<(), (), TGen, TCSExt, (), (), (), (), (), (), (), (), ()> where TGen: RuntimeGenesis, TCSExt: Extension { /// Start the service builder with a configuration. pub fn new_full( @@ -284,7 +282,6 @@ where TGen: RuntimeGenesis, TCSExt: Extension { Arc>, (), (), - (), TFullBackend, >, Error> { let (client, backend, keystore) = new_full_parts(&config)?; @@ -301,7 +298,6 @@ where TGen: RuntimeGenesis, TCSExt: Extension { import_queue: (), finality_proof_request_builder: None, finality_proof_provider: None, - network_protocol: (), transaction_pool: Arc::new(()), rpc_extensions: Default::default(), remote_backend: None, @@ -327,7 +323,6 @@ where TGen: RuntimeGenesis, TCSExt: Extension { Arc>, (), (), - (), TLightBackend, >, Error> { let keystore = match &config.keystore { @@ -388,7 +383,6 @@ where TGen: RuntimeGenesis, TCSExt: Extension { import_queue: (), finality_proof_request_builder: None, finality_proof_provider: None, - network_protocol: (), transaction_pool: Arc::new(()), rpc_extensions: Default::default(), remote_backend: Some(remote_blockchain), @@ -399,9 +393,9 @@ where TGen: RuntimeGenesis, TCSExt: Extension { } } -impl +impl ServiceBuilder { + TExPool, TRpc, Backend> { /// Returns a reference to the client that was stored in this builder. pub fn client(&self) -> &Arc { @@ -449,7 +443,7 @@ impl, &Arc ) -> Result, Error> ) -> Result, Error> { + TExPool, TRpc, Backend>, Error> { let select_chain = select_chain_builder(&self.config, &self.backend)?; Ok(ServiceBuilder { @@ -462,7 +456,6 @@ impl, &Arc) -> Result ) -> Result, Error> { + TExPool, TRpc, Backend>, Error> { self.with_opt_select_chain(|cfg, b| builder(cfg, b).map(Option::Some)) } @@ -487,7 +480,7 @@ impl, Arc, Option, Arc) -> Result ) -> Result, Error> + TExPool, TRpc, Backend>, Error> where TSc: Clone { let import_queue = builder( &self.config, @@ -506,35 +499,6 @@ impl( - self, - network_protocol_builder: impl FnOnce(&Configuration) -> Result - ) -> Result, Error> { - let network_protocol = network_protocol_builder(&self.config)?; - - Ok(ServiceBuilder { - config: self.config, - client: self.client, - backend: self.backend, - keystore: self.keystore, - fetcher: self.fetcher, - select_chain: self.select_chain, - import_queue: self.import_queue, - finality_proof_request_builder: self.finality_proof_request_builder, - finality_proof_provider: self.finality_proof_provider, - network_protocol, transaction_pool: self.transaction_pool, rpc_extensions: self.rpc_extensions, remote_backend: self.remote_backend, @@ -559,7 +523,6 @@ impl>, - TNetP, TExPool, TRpc, Backend, @@ -576,7 +539,6 @@ impl>, - TNetP, TExPool, TRpc, Backend, @@ -621,7 +582,7 @@ impl, ) -> Result<(UImpQu, Option), Error> ) -> Result, Error> + TExPool, TRpc, Backend>, Error> where TSc: Clone, TFchr: Clone { let (import_queue, fprb) = builder( &self.config, @@ -642,7 +603,6 @@ impl, ) -> Result<(UImpQu, UFprb), Error> ) -> Result, Error> + TExPool, TRpc, Backend>, Error> where TSc: Clone, TFchr: Clone { self.with_import_queue_and_opt_fprb(|cfg, cl, b, f, sc, tx| builder(cfg, cl, b, f, sc, tx) @@ -681,7 +641,7 @@ impl, ) -> Result<(UExPool, Option), Error> ) -> Result, Error> + UExPool, TRpc, Backend>, Error> where TSc: Clone, TFchr: Clone { let (transaction_pool, background_task) = transaction_pool_builder( self.config.transaction_pool.clone(), @@ -703,7 +663,6 @@ impl Result, ) -> Result, Error> + TExPool, URpc, Backend>, Error> where TSc: Clone, TFchr: Clone { let rpc_extensions = rpc_ext_builder(&self)?; @@ -732,7 +691,6 @@ impl Pin> + Send>>; } -impl +impl ServiceBuilder< TBl, TRtApi, @@ -813,7 +770,6 @@ ServiceBuilder< TImpQu, BoxFinalityProofRequestBuilder, Arc>, - TNetP, TExPool, TRpc, TBackend, @@ -834,7 +790,6 @@ ServiceBuilder< TExec: 'static + sc_client::CallExecutor + Send + Sync + Clone, TSc: Clone, TImpQu: 'static + ImportQueue, - TNetP: NetworkSpecialization, TExPool: MaintainedTransactionPool::Hash> + MallocSizeOfWasm + 'static, TRpc: sc_rpc::RpcExtension + Clone, { @@ -851,7 +806,7 @@ ServiceBuilder< Client, TSc, NetworkStatus, - NetworkService::Hash>, + NetworkService::Hash>, TExPool, sc_offchain::OffchainWorkers< Client, @@ -870,7 +825,6 @@ ServiceBuilder< import_queue, finality_proof_request_builder, finality_proof_provider, - network_protocol, transaction_pool, rpc_extensions, remote_backend, @@ -951,7 +905,6 @@ ServiceBuilder< transaction_pool: transaction_pool_adapter.clone() as _, import_queue, protocol_id, - specialization: network_protocol, block_announce_validator, }; diff --git a/client/service/src/chain_ops.rs b/client/service/src/chain_ops.rs index f415ea213a..a0724f3e1d 100644 --- a/client/service/src/chain_ops.rs +++ b/client/service/src/chain_ops.rs @@ -46,12 +46,12 @@ pub fn build_spec(spec: ChainSpec, raw: bool) -> error::Result ServiceBuilderCommand for ServiceBuilder< TBl, TRtApi, TGen, TCSExt, Client>, TBl, TRtApi>, - TFchr, TSc, TImpQu, TFprb, TFpp, TNetP, TExPool, TRpc, Backend + TFchr, TSc, TImpQu, TFprb, TFpp, TExPool, TRpc, Backend > where TBl: BlockT, TBackend: 'static + sc_client_api::backend::Backend + Send, diff --git a/client/service/src/lib.rs b/client/service/src/lib.rs index 8c5d5decca..99b4545341 100644 --- a/client/service/src/lib.rs +++ b/client/service/src/lib.rs @@ -45,10 +45,7 @@ use futures::{ sink::SinkExt, task::{Spawn, FutureObj, SpawnError}, }; -use sc_network::{ - NetworkService, network_state::NetworkState, specialization::NetworkSpecialization, - PeerId, ReportHandle, -}; +use sc_network::{NetworkService, network_state::NetworkState, PeerId, ReportHandle}; use log::{log, warn, debug, error, Level}; use codec::{Encode, Decode}; use sp_runtime::generic::BlockId; @@ -176,8 +173,6 @@ pub trait AbstractService: 'static + Future> + type SelectChain: sp_consensus::SelectChain; /// Transaction pool. type TransactionPool: TransactionPool + MallocSizeOfWasm; - /// Network specialization. - type NetworkSpecialization: NetworkSpecialization; /// Get event stream for telemetry connection established events. fn telemetry_on_connect_stream(&self) -> futures::channel::mpsc::UnboundedReceiver<()>; @@ -218,7 +213,7 @@ pub trait AbstractService: 'static + Future> + /// Get shared network instance. fn network(&self) - -> Arc::Hash>>; + -> Arc::Hash>>; /// Returns a receiver that periodically receives a status of the network. fn network_status(&self, interval: Duration) -> mpsc::UnboundedReceiver<(NetworkStatus, NetworkState)>; @@ -230,9 +225,9 @@ pub trait AbstractService: 'static + Future> + fn on_exit(&self) -> ::exit_future::Exit; } -impl AbstractService for +impl AbstractService for Service, TSc, NetworkStatus, - NetworkService, TExPool, TOc> + NetworkService, TExPool, TOc> where TBl: BlockT + Unpin, TBackend: 'static + sc_client_api::backend::Backend, @@ -241,7 +236,6 @@ where TSc: sp_consensus::SelectChain + 'static + Clone + Send + Unpin, TExPool: 'static + TransactionPool + MallocSizeOfWasm, TOc: 'static + Send + Sync, - TNetSpec: NetworkSpecialization, { type Block = TBl; type Backend = TBackend; @@ -249,7 +243,6 @@ where type RuntimeApi = TRtApi; type SelectChain = TSc; type TransactionPool = TExPool; - type NetworkSpecialization = TNetSpec; fn telemetry_on_connect_stream(&self) -> futures::channel::mpsc::UnboundedReceiver<()> { let (sink, stream) = futures::channel::mpsc::unbounded(); @@ -315,7 +308,7 @@ where } fn network(&self) - -> Arc::Hash>> + -> Arc::Hash>> { self.network.clone() } @@ -379,11 +372,10 @@ impl Spawn for fn build_network_future< B: BlockT, C: sc_client::BlockchainEvents, - S: sc_network::specialization::NetworkSpecialization, H: sc_network::ExHashT > ( roles: Roles, - mut network: sc_network::NetworkWorker, + mut network: sc_network::NetworkWorker, client: Arc, status_sinks: Arc, NetworkState)>>>, mut rpc_rx: mpsc::UnboundedReceiver>, @@ -397,7 +389,7 @@ fn build_network_future< // We poll `imported_blocks_stream`. while let Poll::Ready(Some(notification)) = Pin::new(&mut imported_blocks_stream).poll_next(cx) { - network.on_block_imported(notification.hash, notification.header, Vec::new(), notification.is_new_best); + network.on_block_imported(notification.header, Vec::new(), notification.is_new_best); } // We poll `finality_notification_stream`, but we only take the last event. -- GitLab From 9d90cf8c364a33b5154e2b01704c79dab3360034 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bastian=20K=C3=B6cher?= Date: Fri, 21 Feb 2020 14:14:02 +0100 Subject: [PATCH 029/301] Update the documentation for `secp256k1_ecdsa_recover*` (#5019) --- primitives/io/src/lib.rs | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/primitives/io/src/lib.rs b/primitives/io/src/lib.rs index 5d29fe5c94..4b520a240a 100644 --- a/primitives/io/src/lib.rs +++ b/primitives/io/src/lib.rs @@ -474,7 +474,10 @@ pub trait Crypto { } /// Verify and recover a SECP256k1 ECDSA signature. - /// - `sig` is passed in RSV format. V should be either 0/1 or 27/28. + /// + /// - `sig` is passed in RSV format. V should be either `0/1` or `27/28`. + /// - `msg` is the blake2-256 hash of the message. + /// /// Returns `Err` if the signature is bad, otherwise the 64-byte pubkey /// (doesn't include the 0x04 prefix). fn secp256k1_ecdsa_recover( @@ -493,8 +496,11 @@ pub trait Crypto { } /// Verify and recover a SECP256k1 ECDSA signature. - /// - `sig` is passed in RSV format. V should be either 0/1 or 27/28. - /// - returns `Err` if the signature is bad, otherwise the 33-byte compressed pubkey. + /// + /// - `sig` is passed in RSV format. V should be either `0/1` or `27/28`. + /// - `msg` is the blake2-256 hash of the message. + /// + /// Returns `Err` if the signature is bad, otherwise the 33-byte compressed pubkey. fn secp256k1_ecdsa_recover_compressed( sig: &[u8; 65], msg: &[u8; 32], -- GitLab From 2406f796dc61d425f1a725db11390891d84865c6 Mon Sep 17 00:00:00 2001 From: Benjamin Kampmann Date: Fri, 21 Feb 2020 17:07:00 +0100 Subject: [PATCH 030/301] Cargo.toml fixups for the release (#4975) * setting versions to development pre-release fixing version in dependencies * unset already released wasm-builder * do not publish test crates * adding licenses * setting homepage metadata * set repository url --- Cargo.lock | 324 +++++++++--------- bin/node-template/node/Cargo.toml | 40 ++- bin/node-template/pallets/template/Cargo.toml | 14 +- bin/node-template/runtime/Cargo.toml | 54 +-- bin/node/cli/Cargo.toml | 112 +++--- bin/node/executor/Cargo.toml | 50 +-- bin/node/inspect/Cargo.toml | 17 +- bin/node/primitives/Cargo.toml | 10 +- bin/node/rpc-client/Cargo.toml | 8 +- bin/node/rpc/Cargo.toml | 36 +- bin/node/runtime/Cargo.toml | 108 +++--- bin/node/testing/Cargo.toml | 70 ++-- bin/node/transaction-factory/Cargo.toml | 24 +- bin/utils/chain-spec-builder/Cargo.toml | 10 +- bin/utils/subkey/Cargo.toml | 20 +- client/Cargo.toml | 40 ++- client/api/Cargo.toml | 36 +- client/authority-discovery/Cargo.toml | 24 +- client/basic-authorship/Cargo.toml | 30 +- client/block-builder/Cargo.toml | 20 +- client/chain-spec/Cargo.toml | 14 +- client/chain-spec/derive/Cargo.toml | 4 +- client/cli/Cargo.toml | 30 +- client/consensus/aura/Cargo.toml | 50 +-- client/consensus/babe/Cargo.toml | 58 ++-- client/consensus/babe/rpc/Cargo.toml | 28 +- client/consensus/epochs/Cargo.toml | 13 +- client/consensus/manual-seal/Cargo.toml | 26 +- client/consensus/pow/Cargo.toml | 24 +- client/consensus/slots/Cargo.toml | 24 +- client/consensus/uncles/Cargo.toml | 16 +- client/db/Cargo.toml | 28 +- client/executor/Cargo.toml | 34 +- client/executor/common/Cargo.toml | 14 +- client/executor/runtime-test/Cargo.toml | 19 +- client/executor/wasmi/Cargo.toml | 14 +- client/executor/wasmtime/Cargo.toml | 14 +- client/finality-grandpa/Cargo.toml | 48 +-- client/informant/Cargo.toml | 14 +- client/keystore/Cargo.toml | 8 +- client/network-gossip/Cargo.toml | 8 +- client/network/Cargo.toml | 40 ++- client/network/test/Cargo.toml | 27 +- client/offchain/Cargo.toml | 26 +- client/peerset/Cargo.toml | 3 +- client/rpc-api/Cargo.toml | 14 +- client/rpc-servers/Cargo.toml | 6 +- client/rpc/Cargo.toml | 42 +-- client/service/Cargo.toml | 58 ++-- client/service/test/Cargo.toml | 19 +- client/state-db/Cargo.toml | 6 +- client/telemetry/Cargo.toml | 4 +- client/tracing/Cargo.toml | 6 +- client/transaction-pool/Cargo.toml | 24 +- client/transaction-pool/graph/Cargo.toml | 14 +- frame/assets/Cargo.toml | 16 +- frame/aura/Cargo.toml | 28 +- frame/authority-discovery/Cargo.toml | 24 +- frame/authorship/Cargo.toml | 20 +- frame/babe/Cargo.toml | 32 +- frame/balances/Cargo.toml | 22 +- frame/benchmarking/Cargo.toml | 12 +- frame/collective/Cargo.toml | 18 +- frame/contracts/Cargo.toml | 26 +- frame/contracts/common/Cargo.toml | 9 +- frame/contracts/rpc/Cargo.toml | 18 +- frame/contracts/rpc/runtime-api/Cargo.toml | 12 +- frame/democracy/Cargo.toml | 20 +- frame/elections-phragmen/Cargo.toml | 22 +- frame/elections/Cargo.toml | 18 +- frame/evm/Cargo.toml | 20 +- frame/example-offchain-worker/Cargo.toml | 17 +- frame/example/Cargo.toml | 20 +- frame/executive/Cargo.toml | 22 +- frame/finality-tracker/Cargo.toml | 20 +- frame/generic-asset/Cargo.toml | 16 +- frame/grandpa/Cargo.toml | 24 +- frame/identity/Cargo.toml | 20 +- frame/im-online/Cargo.toml | 24 +- frame/indices/Cargo.toml | 20 +- frame/membership/Cargo.toml | 16 +- frame/metadata/Cargo.toml | 8 +- frame/nicks/Cargo.toml | 18 +- frame/offences/Cargo.toml | 20 +- frame/randomness-collective-flip/Cargo.toml | 16 +- frame/recovery/Cargo.toml | 18 +- frame/scored-pool/Cargo.toml | 18 +- frame/session/Cargo.toml | 24 +- frame/society/Cargo.toml | 18 +- frame/staking/Cargo.toml | 34 +- frame/staking/reward-curve/Cargo.toml | 6 +- frame/sudo/Cargo.toml | 16 +- frame/support/Cargo.toml | 24 +- frame/support/procedural/Cargo.toml | 6 +- frame/support/procedural/tools/Cargo.toml | 6 +- .../procedural/tools/derive/Cargo.toml | 4 +- frame/support/test/Cargo.toml | 17 +- frame/system/Cargo.toml | 20 +- frame/system/rpc/runtime-api/Cargo.toml | 6 +- frame/timestamp/Cargo.toml | 24 +- frame/transaction-payment/Cargo.toml | 20 +- frame/transaction-payment/rpc/Cargo.toml | 16 +- .../rpc/runtime-api/Cargo.toml | 12 +- frame/treasury/Cargo.toml | 18 +- frame/utility/Cargo.toml | 20 +- frame/vesting/Cargo.toml | 21 +- primitives/allocator/Cargo.toml | 10 +- primitives/api/Cargo.toml | 18 +- primitives/api/proc-macro/Cargo.toml | 4 +- primitives/api/test/Cargo.toml | 21 +- primitives/application-crypto/Cargo.toml | 10 +- primitives/application-crypto/test/Cargo.toml | 14 +- primitives/arithmetic/Cargo.toml | 8 +- primitives/authority-discovery/Cargo.toml | 12 +- primitives/authorship/Cargo.toml | 10 +- primitives/block-builder/Cargo.toml | 12 +- primitives/blockchain/Cargo.toml | 12 +- primitives/consensus/aura/Cargo.toml | 16 +- primitives/consensus/babe/Cargo.toml | 18 +- primitives/consensus/common/Cargo.toml | 18 +- primitives/consensus/pow/Cargo.toml | 12 +- primitives/core/Cargo.toml | 16 +- primitives/debug-derive/Cargo.toml | 4 +- primitives/externalities/Cargo.toml | 8 +- primitives/finality-grandpa/Cargo.toml | 12 +- primitives/finality-tracker/Cargo.toml | 8 +- primitives/inherents/Cargo.toml | 8 +- primitives/io/Cargo.toml | 18 +- primitives/keyring/Cargo.toml | 8 +- primitives/offchain/Cargo.toml | 8 +- primitives/panic-handler/Cargo.toml | 4 +- primitives/phragmen/Cargo.toml | 12 +- primitives/rpc/Cargo.toml | 6 +- primitives/runtime-interface/Cargo.toml | 20 +- .../runtime-interface/proc-macro/Cargo.toml | 4 +- .../runtime-interface/test-wasm/Cargo.toml | 14 +- primitives/runtime-interface/test/Cargo.toml | 16 +- primitives/runtime/Cargo.toml | 16 +- primitives/sandbox/Cargo.toml | 12 +- primitives/serializer/Cargo.toml | 4 +- primitives/session/Cargo.toml | 12 +- primitives/staking/Cargo.toml | 8 +- primitives/state-machine/Cargo.toml | 12 +- primitives/std/Cargo.toml | 4 +- primitives/storage/Cargo.toml | 8 +- primitives/test-primitives/Cargo.toml | 10 +- primitives/timestamp/Cargo.toml | 12 +- primitives/transaction-pool/Cargo.toml | 8 +- primitives/trie/Cargo.toml | 9 +- primitives/version/Cargo.toml | 8 +- primitives/wasm-interface/Cargo.toml | 6 +- test-utils/Cargo.toml | 4 +- test-utils/client/Cargo.toml | 24 +- test-utils/runtime/Cargo.toml | 60 ++-- test-utils/runtime/client/Cargo.toml | 22 +- .../runtime/transaction-pool/Cargo.toml | 14 +- utils/browser/Cargo.toml | 12 +- utils/build-script-utils/Cargo.toml | 4 +- utils/fork-tree/Cargo.toml | 4 +- utils/frame/benchmarking-cli/Cargo.toml | 18 +- utils/frame/rpc/support/Cargo.toml | 12 +- utils/frame/rpc/system/Cargo.toml | 22 +- utils/prometheus/Cargo.toml | 4 +- utils/wasm-builder-runner/Cargo.toml | 3 +- utils/wasm-builder/Cargo.toml | 3 +- 165 files changed, 1890 insertions(+), 1556 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 4174b5bbc2..48b14599b1 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -423,7 +423,7 @@ dependencies = [ [[package]] name = "browser-utils" -version = "0.8.0" +version = "0.8.0-dev" dependencies = [ "chrono", "clear_on_drop", @@ -597,7 +597,7 @@ dependencies = [ [[package]] name = "chain-spec-builder" -version = "2.0.0" +version = "2.0.0-dev" dependencies = [ "ansi_term 0.12.1", "node-cli", @@ -1441,14 +1441,14 @@ checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" [[package]] name = "fork-tree" -version = "2.0.0" +version = "2.0.0-dev" dependencies = [ "parity-scale-codec", ] [[package]] name = "frame-benchmarking" -version = "2.0.0" +version = "2.0.0-dev" dependencies = [ "parity-scale-codec", "sp-api", @@ -1459,7 +1459,7 @@ dependencies = [ [[package]] name = "frame-benchmarking-cli" -version = "2.0.0" +version = "2.0.0-dev" dependencies = [ "frame-benchmarking", "parity-scale-codec", @@ -1474,7 +1474,7 @@ dependencies = [ [[package]] name = "frame-executive" -version = "2.0.0" +version = "2.0.0-dev" dependencies = [ "frame-support", "frame-system", @@ -1492,7 +1492,7 @@ dependencies = [ [[package]] name = "frame-metadata" -version = "11.0.0" +version = "11.0.0-dev" dependencies = [ "parity-scale-codec", "serde", @@ -1502,7 +1502,7 @@ dependencies = [ [[package]] name = "frame-support" -version = "2.0.0" +version = "2.0.0-dev" dependencies = [ "bitmask", "frame-metadata", @@ -1527,7 +1527,7 @@ dependencies = [ [[package]] name = "frame-support-procedural" -version = "2.0.0" +version = "2.0.0-dev" dependencies = [ "frame-support-procedural-tools", "proc-macro2 1.0.8", @@ -1537,7 +1537,7 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools" -version = "2.0.0" +version = "2.0.0-dev" dependencies = [ "frame-support-procedural-tools-derive", "proc-macro-crate", @@ -1548,7 +1548,7 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools-derive" -version = "2.0.0" +version = "2.0.0-dev" dependencies = [ "proc-macro2 1.0.8", "quote 1.0.2", @@ -1557,7 +1557,7 @@ dependencies = [ [[package]] name = "frame-support-test" -version = "2.0.0" +version = "2.0.0-dev" dependencies = [ "frame-support", "parity-scale-codec", @@ -1573,7 +1573,7 @@ dependencies = [ [[package]] name = "frame-system" -version = "2.0.0" +version = "2.0.0-dev" dependencies = [ "criterion 0.2.11", "frame-support", @@ -1591,7 +1591,7 @@ dependencies = [ [[package]] name = "frame-system-rpc-runtime-api" -version = "2.0.0" +version = "2.0.0-dev" dependencies = [ "parity-scale-codec", "sp-api", @@ -3365,7 +3365,7 @@ dependencies = [ [[package]] name = "node-cli" -version = "2.0.0" +version = "2.0.0-dev" dependencies = [ "assert_cmd", "browser-utils", @@ -3436,7 +3436,7 @@ dependencies = [ [[package]] name = "node-executor" -version = "2.0.0" +version = "2.0.0-dev" dependencies = [ "criterion 0.3.1", "frame-benchmarking", @@ -3469,7 +3469,7 @@ dependencies = [ [[package]] name = "node-inspect" -version = "0.8.0" +version = "0.8.0-dev" dependencies = [ "derive_more", "log 0.4.8", @@ -3485,7 +3485,7 @@ dependencies = [ [[package]] name = "node-primitives" -version = "2.0.0" +version = "2.0.0-dev" dependencies = [ "pretty_assertions", "sp-core", @@ -3495,7 +3495,7 @@ dependencies = [ [[package]] name = "node-rpc" -version = "2.0.0" +version = "2.0.0-dev" dependencies = [ "jsonrpc-core", "node-primitives", @@ -3518,7 +3518,7 @@ dependencies = [ [[package]] name = "node-rpc-client" -version = "2.0.0" +version = "2.0.0-dev" dependencies = [ "env_logger 0.7.1", "futures 0.1.29", @@ -3531,7 +3531,7 @@ dependencies = [ [[package]] name = "node-runtime" -version = "2.0.0" +version = "2.0.0-dev" dependencies = [ "frame-benchmarking", "frame-executive", @@ -3593,7 +3593,7 @@ dependencies = [ [[package]] name = "node-template" -version = "2.0.0" +version = "2.0.0-dev" dependencies = [ "futures 0.3.4", "log 0.4.8", @@ -3621,7 +3621,7 @@ dependencies = [ [[package]] name = "node-template-runtime" -version = "2.0.0" +version = "2.0.0-dev" dependencies = [ "frame-executive", "frame-support", @@ -3654,7 +3654,7 @@ dependencies = [ [[package]] name = "node-testing" -version = "2.0.0" +version = "2.0.0-dev" dependencies = [ "criterion 0.3.1", "frame-support", @@ -3699,7 +3699,7 @@ dependencies = [ [[package]] name = "node-transaction-factory" -version = "0.8.0" +version = "0.8.0-dev" dependencies = [ "log 0.4.8", "parity-scale-codec", @@ -3873,7 +3873,7 @@ dependencies = [ [[package]] name = "pallet-assets" -version = "2.0.0" +version = "2.0.0-dev" dependencies = [ "frame-support", "frame-system", @@ -3887,7 +3887,7 @@ dependencies = [ [[package]] name = "pallet-aura" -version = "2.0.0" +version = "2.0.0-dev" dependencies = [ "frame-support", "frame-system", @@ -3909,7 +3909,7 @@ dependencies = [ [[package]] name = "pallet-authority-discovery" -version = "2.0.0" +version = "2.0.0-dev" dependencies = [ "frame-support", "frame-system", @@ -3927,7 +3927,7 @@ dependencies = [ [[package]] name = "pallet-authorship" -version = "2.0.0" +version = "2.0.0-dev" dependencies = [ "frame-support", "frame-system", @@ -3943,7 +3943,7 @@ dependencies = [ [[package]] name = "pallet-babe" -version = "2.0.0" +version = "2.0.0-dev" dependencies = [ "frame-support", "frame-system", @@ -3968,7 +3968,7 @@ dependencies = [ [[package]] name = "pallet-balances" -version = "2.0.0" +version = "2.0.0-dev" dependencies = [ "frame-benchmarking", "frame-support", @@ -3984,7 +3984,7 @@ dependencies = [ [[package]] name = "pallet-collective" -version = "2.0.0" +version = "2.0.0-dev" dependencies = [ "frame-support", "frame-system", @@ -4000,7 +4000,7 @@ dependencies = [ [[package]] name = "pallet-contracts" -version = "2.0.0" +version = "2.0.0-dev" dependencies = [ "assert_matches", "frame-support", @@ -4025,7 +4025,7 @@ dependencies = [ [[package]] name = "pallet-contracts-primitives" -version = "2.0.0" +version = "2.0.0-dev" dependencies = [ "parity-scale-codec", "sp-runtime", @@ -4034,7 +4034,7 @@ dependencies = [ [[package]] name = "pallet-contracts-rpc" -version = "0.8.0" +version = "0.8.0-dev" dependencies = [ "jsonrpc-core", "jsonrpc-core-client", @@ -4053,7 +4053,7 @@ dependencies = [ [[package]] name = "pallet-contracts-rpc-runtime-api" -version = "0.8.0" +version = "0.8.0-dev" dependencies = [ "pallet-contracts-primitives", "parity-scale-codec", @@ -4064,7 +4064,7 @@ dependencies = [ [[package]] name = "pallet-democracy" -version = "2.0.0" +version = "2.0.0-dev" dependencies = [ "frame-support", "frame-system", @@ -4081,7 +4081,7 @@ dependencies = [ [[package]] name = "pallet-elections" -version = "2.0.0" +version = "2.0.0-dev" dependencies = [ "frame-support", "frame-system", @@ -4097,7 +4097,7 @@ dependencies = [ [[package]] name = "pallet-elections-phragmen" -version = "2.0.0" +version = "2.0.0-dev" dependencies = [ "frame-support", "frame-system", @@ -4115,7 +4115,7 @@ dependencies = [ [[package]] name = "pallet-evm" -version = "2.0.0" +version = "2.0.0-dev" dependencies = [ "evm", "frame-support", @@ -4135,7 +4135,7 @@ dependencies = [ [[package]] name = "pallet-example" -version = "2.0.0" +version = "2.0.0-dev" dependencies = [ "frame-support", "frame-system", @@ -4150,7 +4150,7 @@ dependencies = [ [[package]] name = "pallet-example-offchain-worker" -version = "2.0.0" +version = "2.0.0-dev" dependencies = [ "frame-support", "frame-system", @@ -4165,7 +4165,7 @@ dependencies = [ [[package]] name = "pallet-finality-tracker" -version = "2.0.0" +version = "2.0.0-dev" dependencies = [ "frame-support", "frame-system", @@ -4182,7 +4182,7 @@ dependencies = [ [[package]] name = "pallet-generic-asset" -version = "2.0.0" +version = "2.0.0-dev" dependencies = [ "frame-support", "frame-system", @@ -4196,7 +4196,7 @@ dependencies = [ [[package]] name = "pallet-grandpa" -version = "2.0.0" +version = "2.0.0-dev" dependencies = [ "frame-support", "frame-system", @@ -4214,7 +4214,7 @@ dependencies = [ [[package]] name = "pallet-identity" -version = "2.0.0" +version = "2.0.0-dev" dependencies = [ "enumflags2", "frame-benchmarking", @@ -4231,7 +4231,7 @@ dependencies = [ [[package]] name = "pallet-im-online" -version = "2.0.0" +version = "2.0.0-dev" dependencies = [ "frame-support", "frame-system", @@ -4249,7 +4249,7 @@ dependencies = [ [[package]] name = "pallet-indices" -version = "2.0.0" +version = "2.0.0-dev" dependencies = [ "frame-support", "frame-system", @@ -4265,7 +4265,7 @@ dependencies = [ [[package]] name = "pallet-membership" -version = "2.0.0" +version = "2.0.0-dev" dependencies = [ "frame-support", "frame-system", @@ -4279,7 +4279,7 @@ dependencies = [ [[package]] name = "pallet-nicks" -version = "2.0.0" +version = "2.0.0-dev" dependencies = [ "frame-support", "frame-system", @@ -4294,7 +4294,7 @@ dependencies = [ [[package]] name = "pallet-offences" -version = "2.0.0" +version = "2.0.0-dev" dependencies = [ "frame-support", "frame-system", @@ -4310,7 +4310,7 @@ dependencies = [ [[package]] name = "pallet-randomness-collective-flip" -version = "2.0.0" +version = "2.0.0-dev" dependencies = [ "frame-support", "frame-system", @@ -4324,7 +4324,7 @@ dependencies = [ [[package]] name = "pallet-recovery" -version = "2.0.0" +version = "2.0.0-dev" dependencies = [ "enumflags2", "frame-support", @@ -4340,7 +4340,7 @@ dependencies = [ [[package]] name = "pallet-scored-pool" -version = "2.0.0" +version = "2.0.0-dev" dependencies = [ "frame-support", "frame-system", @@ -4355,7 +4355,7 @@ dependencies = [ [[package]] name = "pallet-session" -version = "2.0.0" +version = "2.0.0-dev" dependencies = [ "frame-support", "frame-system", @@ -4375,7 +4375,7 @@ dependencies = [ [[package]] name = "pallet-society" -version = "2.0.0" +version = "2.0.0-dev" dependencies = [ "frame-support", "frame-system", @@ -4391,7 +4391,7 @@ dependencies = [ [[package]] name = "pallet-staking" -version = "2.0.0" +version = "2.0.0-dev" dependencies = [ "frame-support", "frame-system", @@ -4414,7 +4414,7 @@ dependencies = [ [[package]] name = "pallet-staking-reward-curve" -version = "2.0.0" +version = "2.0.0-dev" dependencies = [ "proc-macro-crate", "proc-macro2 1.0.8", @@ -4425,7 +4425,7 @@ dependencies = [ [[package]] name = "pallet-sudo" -version = "2.0.0" +version = "2.0.0-dev" dependencies = [ "frame-support", "frame-system", @@ -4439,7 +4439,7 @@ dependencies = [ [[package]] name = "pallet-template" -version = "2.0.0" +version = "2.0.0-dev" dependencies = [ "frame-support", "frame-system", @@ -4452,7 +4452,7 @@ dependencies = [ [[package]] name = "pallet-timestamp" -version = "2.0.0" +version = "2.0.0-dev" dependencies = [ "frame-benchmarking", "frame-support", @@ -4470,7 +4470,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment" -version = "2.0.0" +version = "2.0.0-dev" dependencies = [ "frame-support", "frame-system", @@ -4485,7 +4485,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc" -version = "2.0.0" +version = "2.0.0-dev" dependencies = [ "jsonrpc-core", "jsonrpc-core-client", @@ -4502,7 +4502,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc-runtime-api" -version = "2.0.0" +version = "2.0.0-dev" dependencies = [ "frame-support", "parity-scale-codec", @@ -4515,7 +4515,7 @@ dependencies = [ [[package]] name = "pallet-treasury" -version = "2.0.0" +version = "2.0.0-dev" dependencies = [ "frame-support", "frame-system", @@ -4530,7 +4530,7 @@ dependencies = [ [[package]] name = "pallet-utility" -version = "2.0.0" +version = "2.0.0-dev" dependencies = [ "frame-support", "frame-system", @@ -4545,7 +4545,7 @@ dependencies = [ [[package]] name = "pallet-vesting" -version = "2.0.0" +version = "2.0.0-dev" dependencies = [ "enumflags2", "frame-support", @@ -5020,7 +5020,7 @@ dependencies = [ [[package]] name = "prometheus-exporter" -version = "0.8.0" +version = "0.8.0-dev" dependencies = [ "async-std", "derive_more", @@ -5618,7 +5618,7 @@ dependencies = [ [[package]] name = "sc-authority-discovery" -version = "0.8.0" +version = "0.8.0-dev" dependencies = [ "bytes 0.4.12", "derive_more", @@ -5647,7 +5647,7 @@ dependencies = [ [[package]] name = "sc-basic-authorship" -version = "0.8.0" +version = "0.8.0-dev" dependencies = [ "futures 0.3.4", "log 0.4.8", @@ -5671,7 +5671,7 @@ dependencies = [ [[package]] name = "sc-block-builder" -version = "0.8.0" +version = "0.8.0-dev" dependencies = [ "parity-scale-codec", "sc-client-api", @@ -5686,7 +5686,7 @@ dependencies = [ [[package]] name = "sc-chain-spec" -version = "2.0.0" +version = "2.0.0-dev" dependencies = [ "impl-trait-for-tuples", "sc-chain-spec-derive", @@ -5700,7 +5700,7 @@ dependencies = [ [[package]] name = "sc-chain-spec-derive" -version = "2.0.0" +version = "2.0.0-dev" dependencies = [ "proc-macro-crate", "proc-macro2 1.0.8", @@ -5710,7 +5710,7 @@ dependencies = [ [[package]] name = "sc-cli" -version = "0.8.0" +version = "0.8.0-dev" dependencies = [ "ansi_term 0.12.1", "app_dirs", @@ -5749,7 +5749,7 @@ dependencies = [ [[package]] name = "sc-client" -version = "0.8.0" +version = "0.8.0-dev" dependencies = [ "derive_more", "env_logger 0.7.1", @@ -5786,7 +5786,7 @@ dependencies = [ [[package]] name = "sc-client-api" -version = "2.0.0" +version = "2.0.0-dev" dependencies = [ "derive_more", "fnv", @@ -5817,7 +5817,7 @@ dependencies = [ [[package]] name = "sc-client-db" -version = "0.8.0" +version = "0.8.0-dev" dependencies = [ "env_logger 0.7.1", "hash-db", @@ -5848,7 +5848,7 @@ dependencies = [ [[package]] name = "sc-consensus-aura" -version = "0.8.0" +version = "0.8.0-dev" dependencies = [ "derive_more", "env_logger 0.7.1", @@ -5887,7 +5887,7 @@ dependencies = [ [[package]] name = "sc-consensus-babe" -version = "0.8.0" +version = "0.8.0-dev" dependencies = [ "derive_more", "env_logger 0.7.1", @@ -5938,7 +5938,7 @@ dependencies = [ [[package]] name = "sc-consensus-babe-rpc" -version = "0.8.0" +version = "0.8.0-dev" dependencies = [ "derive_more", "futures 0.3.4", @@ -5963,7 +5963,7 @@ dependencies = [ [[package]] name = "sc-consensus-epochs" -version = "0.8.0" +version = "0.8.0-dev" dependencies = [ "fork-tree", "parity-scale-codec", @@ -5975,7 +5975,7 @@ dependencies = [ [[package]] name = "sc-consensus-manual-seal" -version = "0.8.0" +version = "0.8.0-dev" dependencies = [ "derive_more", "env_logger 0.7.1", @@ -6003,7 +6003,7 @@ dependencies = [ [[package]] name = "sc-consensus-pow" -version = "0.8.0" +version = "0.8.0-dev" dependencies = [ "derive_more", "futures 0.3.4", @@ -6023,7 +6023,7 @@ dependencies = [ [[package]] name = "sc-consensus-slots" -version = "0.8.0" +version = "0.8.0-dev" dependencies = [ "futures 0.3.4", "futures-timer 3.0.2", @@ -6044,7 +6044,7 @@ dependencies = [ [[package]] name = "sc-consensus-uncles" -version = "0.8.0" +version = "0.8.0-dev" dependencies = [ "log 0.4.8", "sc-client-api", @@ -6057,7 +6057,7 @@ dependencies = [ [[package]] name = "sc-executor" -version = "0.8.0" +version = "0.8.0-dev" dependencies = [ "assert_matches", "derive_more", @@ -6090,7 +6090,7 @@ dependencies = [ [[package]] name = "sc-executor-common" -version = "0.8.0" +version = "0.8.0-dev" dependencies = [ "derive_more", "log 0.4.8", @@ -6105,7 +6105,7 @@ dependencies = [ [[package]] name = "sc-executor-wasmi" -version = "0.8.0" +version = "0.8.0-dev" dependencies = [ "log 0.4.8", "parity-scale-codec", @@ -6120,7 +6120,7 @@ dependencies = [ [[package]] name = "sc-executor-wasmtime" -version = "0.8.0" +version = "0.8.0-dev" dependencies = [ "assert_matches", "log 0.4.8", @@ -6137,7 +6137,7 @@ dependencies = [ [[package]] name = "sc-finality-grandpa" -version = "0.8.0" +version = "0.8.0-dev" dependencies = [ "assert_matches", "env_logger 0.7.1", @@ -6178,7 +6178,7 @@ dependencies = [ [[package]] name = "sc-informant" -version = "0.8.0" +version = "0.8.0-dev" dependencies = [ "ansi_term 0.12.1", "futures 0.3.4", @@ -6194,7 +6194,7 @@ dependencies = [ [[package]] name = "sc-keystore" -version = "2.0.0" +version = "2.0.0-dev" dependencies = [ "derive_more", "hex", @@ -6209,7 +6209,7 @@ dependencies = [ [[package]] name = "sc-network" -version = "0.8.0" +version = "0.8.0-dev" dependencies = [ "assert_matches", "async-std", @@ -6268,7 +6268,7 @@ dependencies = [ [[package]] name = "sc-network-gossip" -version = "0.8.0" +version = "0.8.0-dev" dependencies = [ "futures 0.3.4", "futures-timer 3.0.2", @@ -6283,7 +6283,7 @@ dependencies = [ [[package]] name = "sc-network-test" -version = "0.8.0" +version = "0.8.0-dev" dependencies = [ "env_logger 0.7.1", "futures 0.1.29", @@ -6310,7 +6310,7 @@ dependencies = [ [[package]] name = "sc-offchain" -version = "2.0.0" +version = "2.0.0-dev" dependencies = [ "bytes 0.5.4", "env_logger 0.7.1", @@ -6341,7 +6341,7 @@ dependencies = [ [[package]] name = "sc-peerset" -version = "2.0.0" +version = "2.0.0-dev" dependencies = [ "futures 0.3.4", "libp2p", @@ -6353,7 +6353,7 @@ dependencies = [ [[package]] name = "sc-rpc" -version = "2.0.0" +version = "2.0.0-dev" dependencies = [ "assert_matches", "futures 0.1.29", @@ -6390,7 +6390,7 @@ dependencies = [ [[package]] name = "sc-rpc-api" -version = "0.8.0" +version = "0.8.0-dev" dependencies = [ "derive_more", "futures 0.3.4", @@ -6412,7 +6412,7 @@ dependencies = [ [[package]] name = "sc-rpc-server" -version = "2.0.0" +version = "2.0.0-dev" dependencies = [ "jsonrpc-core", "jsonrpc-http-server", @@ -6426,7 +6426,7 @@ dependencies = [ [[package]] name = "sc-runtime-test" -version = "2.0.0" +version = "2.0.0-dev" dependencies = [ "sp-allocator", "sp-core", @@ -6439,7 +6439,7 @@ dependencies = [ [[package]] name = "sc-service" -version = "0.8.0" +version = "0.8.0-dev" dependencies = [ "derive_more", "exit-future", @@ -6492,7 +6492,7 @@ dependencies = [ [[package]] name = "sc-service-test" -version = "2.0.0" +version = "2.0.0-dev" dependencies = [ "env_logger 0.7.1", "fdlimit", @@ -6512,7 +6512,7 @@ dependencies = [ [[package]] name = "sc-state-db" -version = "0.8.0" +version = "0.8.0-dev" dependencies = [ "env_logger 0.7.1", "log 0.4.8", @@ -6523,7 +6523,7 @@ dependencies = [ [[package]] name = "sc-telemetry" -version = "2.0.0" +version = "2.0.0-dev" dependencies = [ "bytes 0.5.4", "futures 0.3.4", @@ -6544,7 +6544,7 @@ dependencies = [ [[package]] name = "sc-tracing" -version = "2.0.0" +version = "2.0.0-dev" dependencies = [ "erased-serde", "log 0.4.8", @@ -6559,7 +6559,7 @@ dependencies = [ [[package]] name = "sc-transaction-graph" -version = "2.0.0" +version = "2.0.0-dev" dependencies = [ "assert_matches", "criterion 0.3.1", @@ -6581,7 +6581,7 @@ dependencies = [ [[package]] name = "sc-transaction-pool" -version = "2.0.0" +version = "2.0.0-dev" dependencies = [ "derive_more", "futures 0.3.4", @@ -6942,7 +6942,7 @@ checksum = "4bf77cb82ba8453b42b6ae1d692e4cdc92f9a47beaf89a847c8be83f4e328ad3" [[package]] name = "sp-allocator" -version = "2.0.0" +version = "2.0.0-dev" dependencies = [ "derive_more", "log 0.4.8", @@ -6953,7 +6953,7 @@ dependencies = [ [[package]] name = "sp-api" -version = "2.0.0" +version = "2.0.0-dev" dependencies = [ "hash-db", "parity-scale-codec", @@ -6968,7 +6968,7 @@ dependencies = [ [[package]] name = "sp-api-proc-macro" -version = "2.0.0" +version = "2.0.0-dev" dependencies = [ "blake2-rfc", "proc-macro-crate", @@ -6979,7 +6979,7 @@ dependencies = [ [[package]] name = "sp-api-test" -version = "2.0.0" +version = "2.0.0-dev" dependencies = [ "criterion 0.3.1", "parity-scale-codec", @@ -6996,7 +6996,7 @@ dependencies = [ [[package]] name = "sp-application-crypto" -version = "2.0.0" +version = "2.0.0-dev" dependencies = [ "parity-scale-codec", "serde", @@ -7007,7 +7007,7 @@ dependencies = [ [[package]] name = "sp-application-crypto-test" -version = "2.0.0" +version = "2.0.0-dev" dependencies = [ "sp-api", "sp-application-crypto", @@ -7018,7 +7018,7 @@ dependencies = [ [[package]] name = "sp-arithmetic" -version = "2.0.0" +version = "2.0.0-dev" dependencies = [ "criterion 0.3.1", "integer-sqrt", @@ -7033,7 +7033,7 @@ dependencies = [ [[package]] name = "sp-authority-discovery" -version = "2.0.0" +version = "2.0.0-dev" dependencies = [ "parity-scale-codec", "sp-api", @@ -7044,7 +7044,7 @@ dependencies = [ [[package]] name = "sp-authorship" -version = "2.0.0" +version = "2.0.0-dev" dependencies = [ "parity-scale-codec", "sp-inherents", @@ -7054,7 +7054,7 @@ dependencies = [ [[package]] name = "sp-block-builder" -version = "2.0.0" +version = "2.0.0-dev" dependencies = [ "parity-scale-codec", "sp-api", @@ -7065,7 +7065,7 @@ dependencies = [ [[package]] name = "sp-blockchain" -version = "2.0.0" +version = "2.0.0-dev" dependencies = [ "derive_more", "log 0.4.8", @@ -7080,7 +7080,7 @@ dependencies = [ [[package]] name = "sp-consensus" -version = "0.8.0" +version = "0.8.0-dev" dependencies = [ "derive_more", "futures 0.3.4", @@ -7102,7 +7102,7 @@ dependencies = [ [[package]] name = "sp-consensus-aura" -version = "0.8.0" +version = "0.8.0-dev" dependencies = [ "parity-scale-codec", "sp-api", @@ -7115,7 +7115,7 @@ dependencies = [ [[package]] name = "sp-consensus-babe" -version = "0.8.0" +version = "0.8.0-dev" dependencies = [ "parity-scale-codec", "schnorrkel", @@ -7130,7 +7130,7 @@ dependencies = [ [[package]] name = "sp-consensus-pow" -version = "0.8.0" +version = "0.8.0-dev" dependencies = [ "parity-scale-codec", "sp-api", @@ -7141,7 +7141,7 @@ dependencies = [ [[package]] name = "sp-core" -version = "2.0.0" +version = "2.0.0-dev" dependencies = [ "base58", "blake2-rfc", @@ -7185,7 +7185,7 @@ dependencies = [ [[package]] name = "sp-debug-derive" -version = "2.0.0" +version = "2.0.0-dev" dependencies = [ "proc-macro2 1.0.8", "quote 1.0.2", @@ -7194,7 +7194,7 @@ dependencies = [ [[package]] name = "sp-externalities" -version = "0.8.0" +version = "0.8.0-dev" dependencies = [ "environmental", "sp-std", @@ -7203,7 +7203,7 @@ dependencies = [ [[package]] name = "sp-finality-grandpa" -version = "2.0.0" +version = "2.0.0-dev" dependencies = [ "parity-scale-codec", "serde", @@ -7215,7 +7215,7 @@ dependencies = [ [[package]] name = "sp-finality-tracker" -version = "2.0.0" +version = "2.0.0-dev" dependencies = [ "parity-scale-codec", "sp-inherents", @@ -7224,7 +7224,7 @@ dependencies = [ [[package]] name = "sp-inherents" -version = "2.0.0" +version = "2.0.0-dev" dependencies = [ "derive_more", "parity-scale-codec", @@ -7235,7 +7235,7 @@ dependencies = [ [[package]] name = "sp-io" -version = "2.0.0" +version = "2.0.0-dev" dependencies = [ "hash-db", "libsecp256k1", @@ -7252,7 +7252,7 @@ dependencies = [ [[package]] name = "sp-keyring" -version = "2.0.0" +version = "2.0.0-dev" dependencies = [ "lazy_static", "sp-core", @@ -7262,7 +7262,7 @@ dependencies = [ [[package]] name = "sp-offchain" -version = "2.0.0" +version = "2.0.0-dev" dependencies = [ "sp-api", "sp-runtime", @@ -7270,7 +7270,7 @@ dependencies = [ [[package]] name = "sp-panic-handler" -version = "2.0.0" +version = "2.0.0-dev" dependencies = [ "backtrace", "log 0.4.8", @@ -7278,7 +7278,7 @@ dependencies = [ [[package]] name = "sp-phragmen" -version = "2.0.0" +version = "2.0.0-dev" dependencies = [ "rand 0.7.3", "serde", @@ -7290,7 +7290,7 @@ dependencies = [ [[package]] name = "sp-rpc" -version = "2.0.0" +version = "2.0.0-dev" dependencies = [ "serde", "serde_json", @@ -7299,7 +7299,7 @@ dependencies = [ [[package]] name = "sp-runtime" -version = "2.0.0" +version = "2.0.0-dev" dependencies = [ "impl-trait-for-tuples", "log 0.4.8", @@ -7319,7 +7319,7 @@ dependencies = [ [[package]] name = "sp-runtime-interface" -version = "2.0.0" +version = "2.0.0-dev" dependencies = [ "parity-scale-codec", "primitive-types", @@ -7338,7 +7338,7 @@ dependencies = [ [[package]] name = "sp-runtime-interface-proc-macro" -version = "2.0.0" +version = "2.0.0-dev" dependencies = [ "Inflector", "proc-macro-crate", @@ -7349,7 +7349,7 @@ dependencies = [ [[package]] name = "sp-runtime-interface-test" -version = "2.0.0" +version = "2.0.0-dev" dependencies = [ "sc-executor", "sp-core", @@ -7361,7 +7361,7 @@ dependencies = [ [[package]] name = "sp-runtime-interface-test-wasm" -version = "2.0.0" +version = "2.0.0-dev" dependencies = [ "sp-core", "sp-io", @@ -7372,7 +7372,7 @@ dependencies = [ [[package]] name = "sp-sandbox" -version = "0.8.0" +version = "0.8.0-dev" dependencies = [ "assert_matches", "parity-scale-codec", @@ -7386,7 +7386,7 @@ dependencies = [ [[package]] name = "sp-serializer" -version = "2.0.0" +version = "2.0.0-dev" dependencies = [ "serde", "serde_json", @@ -7394,7 +7394,7 @@ dependencies = [ [[package]] name = "sp-session" -version = "2.0.0" +version = "2.0.0-dev" dependencies = [ "sp-api", "sp-core", @@ -7404,7 +7404,7 @@ dependencies = [ [[package]] name = "sp-staking" -version = "2.0.0" +version = "2.0.0-dev" dependencies = [ "parity-scale-codec", "sp-runtime", @@ -7413,7 +7413,7 @@ dependencies = [ [[package]] name = "sp-state-machine" -version = "0.8.0" +version = "0.8.0-dev" dependencies = [ "hash-db", "hex-literal", @@ -7432,11 +7432,11 @@ dependencies = [ [[package]] name = "sp-std" -version = "2.0.0" +version = "2.0.0-dev" [[package]] name = "sp-storage" -version = "2.0.0" +version = "2.0.0-dev" dependencies = [ "impl-serde 0.2.3", "serde", @@ -7446,7 +7446,7 @@ dependencies = [ [[package]] name = "sp-test-primitives" -version = "2.0.0" +version = "2.0.0-dev" dependencies = [ "parity-scale-codec", "parity-util-mem", @@ -7458,7 +7458,7 @@ dependencies = [ [[package]] name = "sp-timestamp" -version = "2.0.0" +version = "2.0.0-dev" dependencies = [ "impl-trait-for-tuples", "parity-scale-codec", @@ -7471,7 +7471,7 @@ dependencies = [ [[package]] name = "sp-transaction-pool" -version = "2.0.0" +version = "2.0.0-dev" dependencies = [ "derive_more", "futures 0.3.4", @@ -7484,7 +7484,7 @@ dependencies = [ [[package]] name = "sp-trie" -version = "2.0.0" +version = "2.0.0-dev" dependencies = [ "criterion 0.2.11", "hash-db", @@ -7501,7 +7501,7 @@ dependencies = [ [[package]] name = "sp-version" -version = "2.0.0" +version = "2.0.0-dev" dependencies = [ "impl-serde 0.2.3", "parity-scale-codec", @@ -7512,7 +7512,7 @@ dependencies = [ [[package]] name = "sp-wasm-interface" -version = "2.0.0" +version = "2.0.0-dev" dependencies = [ "impl-trait-for-tuples", "parity-scale-codec", @@ -7618,7 +7618,7 @@ dependencies = [ [[package]] name = "subkey" -version = "2.0.0" +version = "2.0.0-dev" dependencies = [ "clap", "derive_more", @@ -7660,11 +7660,11 @@ dependencies = [ [[package]] name = "substrate-build-script-utils" -version = "2.0.0" +version = "2.0.0-dev" [[package]] name = "substrate-frame-rpc-support" -version = "2.0.0" +version = "2.0.0-dev" dependencies = [ "frame-support", "frame-system", @@ -7680,7 +7680,7 @@ dependencies = [ [[package]] name = "substrate-frame-rpc-system" -version = "2.0.0" +version = "2.0.0-dev" dependencies = [ "env_logger 0.7.1", "frame-system-rpc-runtime-api", @@ -7703,7 +7703,7 @@ dependencies = [ [[package]] name = "substrate-test-client" -version = "2.0.0" +version = "2.0.0-dev" dependencies = [ "futures 0.3.4", "hash-db", @@ -7722,7 +7722,7 @@ dependencies = [ [[package]] name = "substrate-test-runtime" -version = "2.0.0" +version = "2.0.0-dev" dependencies = [ "cfg-if", "frame-executive", @@ -7763,7 +7763,7 @@ dependencies = [ [[package]] name = "substrate-test-runtime-client" -version = "2.0.0" +version = "2.0.0-dev" dependencies = [ "futures 0.3.4", "parity-scale-codec", @@ -7780,7 +7780,7 @@ dependencies = [ [[package]] name = "substrate-test-runtime-transaction-pool" -version = "2.0.0" +version = "2.0.0-dev" dependencies = [ "derive_more", "futures 0.3.4", @@ -7795,7 +7795,7 @@ dependencies = [ [[package]] name = "substrate-test-utils" -version = "2.0.0" +version = "2.0.0-dev" [[package]] name = "substrate-wasm-builder" diff --git a/bin/node-template/node/Cargo.toml b/bin/node-template/node/Cargo.toml index 9ad4a0e8a5..c21d380d4b 100644 --- a/bin/node-template/node/Cargo.toml +++ b/bin/node-template/node/Cargo.toml @@ -1,10 +1,12 @@ [package] name = "node-template" -version = "2.0.0" +version = "2.0.0-dev" authors = ["Anonymous"] edition = "2018" license = "Unlicense" build = "build.rs" +homepage = "https://substrate.dev" +repository = "https://github.com/paritytech/substrate/" [[bin]] name = "node-template" @@ -14,25 +16,25 @@ futures = "0.3.1" log = "0.4.8" structopt = "0.3.8" -sc-cli = { version = "0.8.0", path = "../../../client/cli" } -sp-core = { version = "2.0.0", path = "../../../primitives/core" } -sc-executor = { version = "0.8", path = "../../../client/executor" } -sc-service = { version = "0.8", path = "../../../client/service" } -sp-inherents = { version = "2.0.0", path = "../../../primitives/inherents" } -sc-transaction-pool = { version = "2.0.0", path = "../../../client/transaction-pool" } -sp-transaction-pool = { version = "2.0.0", path = "../../../primitives/transaction-pool" } -sc-network = { version = "0.8", path = "../../../client/network" } -sc-consensus-aura = { version = "0.8", path = "../../../client/consensus/aura" } -sp-consensus-aura = { version = "0.8", path = "../../../primitives/consensus/aura" } -sp-consensus = { version = "0.8", path = "../../../primitives/consensus/common" } -grandpa = { version = "0.8", package = "sc-finality-grandpa", path = "../../../client/finality-grandpa" } -grandpa-primitives = { version = "2.0.0", package = "sp-finality-grandpa", path = "../../../primitives/finality-grandpa" } -sc-client = { version = "0.8", path = "../../../client/" } -sp-runtime = { version = "2.0.0", path = "../../../primitives/runtime" } -sc-basic-authorship = { path = "../../../client/basic-authorship" } +sc-cli = { version = "0.8.0-dev", path = "../../../client/cli" } +sp-core = { version = "2.0.0-dev", path = "../../../primitives/core" } +sc-executor = { version = "0.8.0-dev", path = "../../../client/executor" } +sc-service = { version = "0.8.0-dev", path = "../../../client/service" } +sp-inherents = { version = "2.0.0-dev", path = "../../../primitives/inherents" } +sc-transaction-pool = { version = "2.0.0-dev", path = "../../../client/transaction-pool" } +sp-transaction-pool = { version = "2.0.0-dev", path = "../../../primitives/transaction-pool" } +sc-network = { version = "0.8.0-dev", path = "../../../client/network" } +sc-consensus-aura = { version = "0.8.0-dev", path = "../../../client/consensus/aura" } +sp-consensus-aura = { version = "0.8.0-dev", path = "../../../primitives/consensus/aura" } +sp-consensus = { version = "0.8.0-dev", path = "../../../primitives/consensus/common" } +grandpa = { version = "0.8.0-dev", package = "sc-finality-grandpa", path = "../../../client/finality-grandpa" } +grandpa-primitives = { version = "2.0.0-dev", package = "sp-finality-grandpa", path = "../../../primitives/finality-grandpa" } +sc-client = { version = "0.8.0-dev", path = "../../../client/" } +sp-runtime = { version = "2.0.0-dev", path = "../../../primitives/runtime" } +sc-basic-authorship = { path = "../../../client/basic-authorship" , version = "0.8.0-dev"} -node-template-runtime = { version = "2.0.0", path = "../runtime" } +node-template-runtime = { version = "2.0.0-dev", path = "../runtime" } [build-dependencies] vergen = "3.0.4" -build-script-utils = { version = "2.0.0", package = "substrate-build-script-utils", path = "../../../utils/build-script-utils" } +build-script-utils = { version = "2.0.0-dev", package = "substrate-build-script-utils", path = "../../../utils/build-script-utils" } diff --git a/bin/node-template/pallets/template/Cargo.toml b/bin/node-template/pallets/template/Cargo.toml index 8ea3f3adab..a2abe4c6e2 100644 --- a/bin/node-template/pallets/template/Cargo.toml +++ b/bin/node-template/pallets/template/Cargo.toml @@ -2,7 +2,9 @@ authors = ['Anonymous'] edition = '2018' name = 'pallet-template' -version = '2.0.0' +version = "2.0.0-dev" +homepage = "https://substrate.dev" +repository = "https://github.com/paritytech/substrate/" [dependencies] codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } @@ -10,28 +12,28 @@ safe-mix = { default-features = false, version = '1.0.0' } [dependencies.frame-support] default-features = false -version = '2.0.0' +version = "2.0.0-dev" path = "../../../../frame/support" [dependencies.system] default-features = false package = 'frame-system' -version = '2.0.0' +version = "2.0.0-dev" path = "../../../../frame/system" [dev-dependencies.sp-core] default-features = false -version = '2.0.0' +version = "2.0.0-dev" path = "../../../../primitives/core" [dev-dependencies.sp-io] default-features = false -version = '2.0.0' +version = "2.0.0-dev" path = "../../../../primitives/io" [dev-dependencies.sp-runtime] default-features = false -version = '2.0.0' +version = "2.0.0-dev" path = "../../../../primitives/runtime" [features] diff --git a/bin/node-template/runtime/Cargo.toml b/bin/node-template/runtime/Cargo.toml index ddecb0e4cf..b5a89febce 100644 --- a/bin/node-template/runtime/Cargo.toml +++ b/bin/node-template/runtime/Cargo.toml @@ -1,42 +1,44 @@ [package] name = "node-template-runtime" -version = "2.0.0" +version = "2.0.0-dev" authors = ["Anonymous"] edition = "2018" license = "Unlicense" +homepage = "https://substrate.dev" +repository = "https://github.com/paritytech/substrate/" [dependencies] codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } -aura = { version = "2.0.0", default-features = false, package = "pallet-aura", path = "../../../frame/aura" } -balances = { version = "2.0.0", default-features = false, package = "pallet-balances", path = "../../../frame/balances" } -frame-support = { version = "2.0.0", default-features = false, path = "../../../frame/support" } -grandpa = { version = "2.0.0", default-features = false, package = "pallet-grandpa", path = "../../../frame/grandpa" } -indices = { version = "2.0.0", default-features = false, package = "pallet-indices", path = "../../../frame/indices" } -randomness-collective-flip = { version = "2.0.0", default-features = false, package = "pallet-randomness-collective-flip", path = "../../../frame/randomness-collective-flip" } -sudo = { version = "2.0.0", default-features = false, package = "pallet-sudo", path = "../../../frame/sudo" } -system = { version = "2.0.0", default-features = false, package = "frame-system", path = "../../../frame/system" } -timestamp = { version = "2.0.0", default-features = false, package = "pallet-timestamp", path = "../../../frame/timestamp" } -transaction-payment = { version = "2.0.0", default-features = false, package = "pallet-transaction-payment", path = "../../../frame/transaction-payment" } -frame-executive = { version = "2.0.0", default-features = false, path = "../../../frame/executive" } +aura = { version = "2.0.0-dev", default-features = false, package = "pallet-aura", path = "../../../frame/aura" } +balances = { version = "2.0.0-dev", default-features = false, package = "pallet-balances", path = "../../../frame/balances" } +frame-support = { version = "2.0.0-dev", default-features = false, path = "../../../frame/support" } +grandpa = { version = "2.0.0-dev", default-features = false, package = "pallet-grandpa", path = "../../../frame/grandpa" } +indices = { version = "2.0.0-dev", default-features = false, package = "pallet-indices", path = "../../../frame/indices" } +randomness-collective-flip = { version = "2.0.0-dev", default-features = false, package = "pallet-randomness-collective-flip", path = "../../../frame/randomness-collective-flip" } +sudo = { version = "2.0.0-dev", default-features = false, package = "pallet-sudo", path = "../../../frame/sudo" } +system = { version = "2.0.0-dev", default-features = false, package = "frame-system", path = "../../../frame/system" } +timestamp = { version = "2.0.0-dev", default-features = false, package = "pallet-timestamp", path = "../../../frame/timestamp" } +transaction-payment = { version = "2.0.0-dev", default-features = false, package = "pallet-transaction-payment", path = "../../../frame/transaction-payment" } +frame-executive = { version = "2.0.0-dev", default-features = false, path = "../../../frame/executive" } serde = { version = "1.0.101", optional = true, features = ["derive"] } -sp-api = { version = "2.0.0", default-features = false, path = "../../../primitives/api" } -sp-block-builder = { path = "../../../primitives/block-builder", default-features = false} -sp-consensus-aura = { version = "0.8", default-features = false, path = "../../../primitives/consensus/aura" } -sp-core = { version = "2.0.0", default-features = false, path = "../../../primitives/core" } -sp-inherents = { path = "../../../primitives/inherents", default-features = false} -sp-io = { version = "2.0.0", default-features = false, path = "../../../primitives/io" } -sp-offchain = { version = "2.0.0", default-features = false, path = "../../../primitives/offchain" } -sp-runtime = { version = "2.0.0", default-features = false, path = "../../../primitives/runtime" } -sp-session = { version = "2.0.0", default-features = false, path = "../../../primitives/session" } -sp-std = { version = "2.0.0", default-features = false, path = "../../../primitives/std" } -sp-transaction-pool = { version = "2.0.0", default-features = false, path = "../../../primitives/transaction-pool" } -sp-version = { version = "2.0.0", default-features = false, path = "../../../primitives/version" } +sp-api = { version = "2.0.0-dev", default-features = false, path = "../../../primitives/api" } +sp-block-builder = { path = "../../../primitives/block-builder", default-features = false, version = "2.0.0-dev"} +sp-consensus-aura = { version = "0.8.0-dev", default-features = false, path = "../../../primitives/consensus/aura" } +sp-core = { version = "2.0.0-dev", default-features = false, path = "../../../primitives/core" } +sp-inherents = { path = "../../../primitives/inherents", default-features = false, version = "2.0.0-dev"} +sp-io = { version = "2.0.0-dev", default-features = false, path = "../../../primitives/io" } +sp-offchain = { version = "2.0.0-dev", default-features = false, path = "../../../primitives/offchain" } +sp-runtime = { version = "2.0.0-dev", default-features = false, path = "../../../primitives/runtime" } +sp-session = { version = "2.0.0-dev", default-features = false, path = "../../../primitives/session" } +sp-std = { version = "2.0.0-dev", default-features = false, path = "../../../primitives/std" } +sp-transaction-pool = { version = "2.0.0-dev", default-features = false, path = "../../../primitives/transaction-pool" } +sp-version = { version = "2.0.0-dev", default-features = false, path = "../../../primitives/version" } -template = { version = "2.0.0", default-features = false, path = "../pallets/template", package = "pallet-template" } +template = { version = "2.0.0-dev", default-features = false, path = "../pallets/template", package = "pallet-template" } [build-dependencies] -wasm-builder-runner = { version = "1.0.4", package = "substrate-wasm-builder-runner", path = "../../../utils/wasm-builder-runner" } +wasm-builder-runner = { version = "1.0.5", package = "substrate-wasm-builder-runner", path = "../../../utils/wasm-builder-runner" } [features] default = ["std"] diff --git a/bin/node/cli/Cargo.toml b/bin/node/cli/Cargo.toml index 52be9e1d95..7f17f1eaa6 100644 --- a/bin/node/cli/Cargo.toml +++ b/bin/node/cli/Cargo.toml @@ -1,12 +1,14 @@ [package] name = "node-cli" -version = "2.0.0" +version = "2.0.0-dev" authors = ["Parity Technologies "] description = "Substrate node implementation in Rust." build = "build.rs" edition = "2018" license = "GPL-3.0" default-run = "substrate" +homepage = "https://substrate.dev" +repository = "https://github.com/paritytech/substrate/" [package.metadata.wasm-pack.profile.release] # `wasm-opt` has some problems on linux, see @@ -40,69 +42,69 @@ structopt = { version = "0.3.8", optional = true } tracing = "0.1.10" # primitives -sp-authority-discovery = { version = "2.0.0", path = "../../../primitives/authority-discovery" } -sp-consensus-babe = { version = "0.8", path = "../../../primitives/consensus/babe" } -grandpa-primitives = { version = "2.0.0", package = "sp-finality-grandpa", path = "../../../primitives/finality-grandpa" } -sp-core = { version = "2.0.0", path = "../../../primitives/core" } -sp-runtime = { version = "2.0.0", path = "../../../primitives/runtime" } -sp-timestamp = { version = "2.0.0", default-features = false, path = "../../../primitives/timestamp" } -sp-finality-tracker = { version = "2.0.0", default-features = false, path = "../../../primitives/finality-tracker" } -sp-inherents = { version = "2.0.0", path = "../../../primitives/inherents" } -sp-keyring = { version = "2.0.0", path = "../../../primitives/keyring" } -sp-io = { version = "2.0.0", path = "../../../primitives/io" } -sp-consensus = { version = "0.8", path = "../../../primitives/consensus/common" } +sp-authority-discovery = { version = "2.0.0-dev", path = "../../../primitives/authority-discovery" } +sp-consensus-babe = { version = "0.8.0-dev", path = "../../../primitives/consensus/babe" } +grandpa-primitives = { version = "2.0.0-dev", package = "sp-finality-grandpa", path = "../../../primitives/finality-grandpa" } +sp-core = { version = "2.0.0-dev", path = "../../../primitives/core" } +sp-runtime = { version = "2.0.0-dev", path = "../../../primitives/runtime" } +sp-timestamp = { version = "2.0.0-dev", default-features = false, path = "../../../primitives/timestamp" } +sp-finality-tracker = { version = "2.0.0-dev", default-features = false, path = "../../../primitives/finality-tracker" } +sp-inherents = { version = "2.0.0-dev", path = "../../../primitives/inherents" } +sp-keyring = { version = "2.0.0-dev", path = "../../../primitives/keyring" } +sp-io = { version = "2.0.0-dev", path = "../../../primitives/io" } +sp-consensus = { version = "0.8.0-dev", path = "../../../primitives/consensus/common" } # client dependencies -sc-client-api = { version = "2.0.0", path = "../../../client/api" } -sc-client = { version = "0.8", path = "../../../client/" } -sc-chain-spec = { version = "2.0.0", path = "../../../client/chain-spec" } -sc-transaction-pool = { version = "2.0.0", path = "../../../client/transaction-pool" } -sp-transaction-pool = { version = "2.0.0", path = "../../../primitives/transaction-pool" } -sc-network = { version = "0.8", path = "../../../client/network" } -sc-consensus-babe = { version = "0.8", path = "../../../client/consensus/babe" } -grandpa = { version = "0.8", package = "sc-finality-grandpa", path = "../../../client/finality-grandpa" } -sc-client-db = { version = "0.8", default-features = false, path = "../../../client/db" } -sc-offchain = { version = "2.0.0", path = "../../../client/offchain" } -sc-rpc = { version = "2.0.0", path = "../../../client/rpc" } -sc-basic-authorship = { version = "0.8", path = "../../../client/basic-authorship" } -sc-service = { version = "0.8", default-features = false, path = "../../../client/service" } -sc-tracing = { version = "2.0.0", path = "../../../client/tracing" } -sc-telemetry = { version = "2.0.0", path = "../../../client/telemetry" } -sc-authority-discovery = { version = "0.8", path = "../../../client/authority-discovery" } +sc-client-api = { version = "2.0.0-dev", path = "../../../client/api" } +sc-client = { version = "0.8.0-dev", path = "../../../client/" } +sc-chain-spec = { version = "2.0.0-dev", path = "../../../client/chain-spec" } +sc-transaction-pool = { version = "2.0.0-dev", path = "../../../client/transaction-pool" } +sp-transaction-pool = { version = "2.0.0-dev", path = "../../../primitives/transaction-pool" } +sc-network = { version = "0.8.0-dev", path = "../../../client/network" } +sc-consensus-babe = { version = "0.8.0-dev", path = "../../../client/consensus/babe" } +grandpa = { version = "0.8.0-dev", package = "sc-finality-grandpa", path = "../../../client/finality-grandpa" } +sc-client-db = { version = "0.8.0-dev", default-features = false, path = "../../../client/db" } +sc-offchain = { version = "2.0.0-dev", path = "../../../client/offchain" } +sc-rpc = { version = "2.0.0-dev", path = "../../../client/rpc" } +sc-basic-authorship = { version = "0.8.0-dev", path = "../../../client/basic-authorship" } +sc-service = { version = "0.8.0-dev", default-features = false, path = "../../../client/service" } +sc-tracing = { version = "2.0.0-dev", path = "../../../client/tracing" } +sc-telemetry = { version = "2.0.0-dev", path = "../../../client/telemetry" } +sc-authority-discovery = { version = "0.8.0-dev", path = "../../../client/authority-discovery" } # frame dependencies -pallet-indices = { version = "2.0.0", path = "../../../frame/indices" } -pallet-timestamp = { version = "2.0.0", default-features = false, path = "../../../frame/timestamp" } -pallet-contracts = { version = "2.0.0", path = "../../../frame/contracts" } -frame-system = { version = "2.0.0", path = "../../../frame/system" } -pallet-balances = { version = "2.0.0", path = "../../../frame/balances" } -pallet-transaction-payment = { version = "2.0.0", path = "../../../frame/transaction-payment" } -frame-support = { version = "2.0.0", default-features = false, path = "../../../frame/support" } -pallet-im-online = { version = "2.0.0", default-features = false, path = "../../../frame/im-online" } -pallet-authority-discovery = { version = "2.0.0", path = "../../../frame/authority-discovery" } +pallet-indices = { version = "2.0.0-dev", path = "../../../frame/indices" } +pallet-timestamp = { version = "2.0.0-dev", default-features = false, path = "../../../frame/timestamp" } +pallet-contracts = { version = "2.0.0-dev", path = "../../../frame/contracts" } +frame-system = { version = "2.0.0-dev", path = "../../../frame/system" } +pallet-balances = { version = "2.0.0-dev", path = "../../../frame/balances" } +pallet-transaction-payment = { version = "2.0.0-dev", path = "../../../frame/transaction-payment" } +frame-support = { version = "2.0.0-dev", default-features = false, path = "../../../frame/support" } +pallet-im-online = { version = "2.0.0-dev", default-features = false, path = "../../../frame/im-online" } +pallet-authority-discovery = { version = "2.0.0-dev", path = "../../../frame/authority-discovery" } # node-specific dependencies -node-runtime = { version = "2.0.0", path = "../runtime" } -node-rpc = { version = "2.0.0", path = "../rpc" } -node-primitives = { version = "2.0.0", path = "../primitives" } -node-executor = { version = "2.0.0", path = "../executor" } +node-runtime = { version = "2.0.0-dev", path = "../runtime" } +node-rpc = { version = "2.0.0-dev", path = "../rpc" } +node-primitives = { version = "2.0.0-dev", path = "../primitives" } +node-executor = { version = "2.0.0-dev", path = "../executor" } # CLI-specific dependencies -sc-cli = { version = "0.8.0", optional = true, path = "../../../client/cli" } -frame-benchmarking-cli = { version = "2.0.0", optional = true, path = "../../../utils/frame/benchmarking-cli" } -node-transaction-factory = { version = "0.8.0", optional = true, path = "../transaction-factory" } -node-inspect = { version = "0.8.0", optional = true, path = "../inspect" } +sc-cli = { version = "0.8.0-dev", optional = true, path = "../../../client/cli" } +frame-benchmarking-cli = { version = "2.0.0-dev", optional = true, path = "../../../utils/frame/benchmarking-cli" } +node-transaction-factory = { version = "0.8.0-dev", optional = true, path = "../transaction-factory" } +node-inspect = { version = "0.8.0-dev", optional = true, path = "../inspect" } # WASM-specific dependencies wasm-bindgen = { version = "0.2.57", optional = true } wasm-bindgen-futures = { version = "0.4.7", optional = true } -browser-utils = { path = "../../../utils/browser", optional = true } +browser-utils = { path = "../../../utils/browser", optional = true , version = "0.8.0-dev"} [dev-dependencies] -sc-keystore = { version = "2.0.0", path = "../../../client/keystore" } -sc-consensus-babe = { version = "0.8", features = ["test-helpers"], path = "../../../client/consensus/babe" } -sc-consensus-epochs = { version = "0.8", path = "../../../client/consensus/epochs" } -sc-service-test = { version = "2.0.0", path = "../../../client/service/test" } +sc-keystore = { version = "2.0.0-dev", path = "../../../client/keystore" } +sc-consensus-babe = { version = "0.8.0-dev", features = ["test-helpers"], path = "../../../client/consensus/babe" } +sc-consensus-epochs = { version = "0.8.0-dev", path = "../../../client/consensus/epochs" } +sc-service-test = { version = "2.0.0-dev", path = "../../../client/service/test" } futures = "0.3.1" tempfile = "3.1.0" assert_cmd = "0.12" @@ -110,14 +112,14 @@ nix = "0.17" serde_json = "1.0" [build-dependencies] -build-script-utils = { version = "2.0.0", package = "substrate-build-script-utils", path = "../../../utils/build-script-utils" } +build-script-utils = { version = "2.0.0-dev", package = "substrate-build-script-utils", path = "../../../utils/build-script-utils" } structopt = { version = "0.3.8", optional = true } -node-transaction-factory = { version = "0.8.0", optional = true, path = "../transaction-factory" } -node-inspect = { version = "0.8.0", optional = true, path = "../inspect" } -frame-benchmarking-cli = { version = "2.0.0", optional = true, path = "../../../utils/frame/benchmarking-cli" } +node-transaction-factory = { version = "0.8.0-dev", optional = true, path = "../transaction-factory" } +node-inspect = { version = "0.8.0-dev", optional = true, path = "../inspect" } +frame-benchmarking-cli = { version = "2.0.0-dev", optional = true, path = "../../../utils/frame/benchmarking-cli" } [build-dependencies.sc-cli] -version = "0.8.0" +version = "0.8.0-dev" package = "sc-cli" path = "../../../client/cli" optional = true diff --git a/bin/node/executor/Cargo.toml b/bin/node/executor/Cargo.toml index f55e1dae58..321ef3bec0 100644 --- a/bin/node/executor/Cargo.toml +++ b/bin/node/executor/Cargo.toml @@ -1,40 +1,42 @@ [package] name = "node-executor" -version = "2.0.0" +version = "2.0.0-dev" authors = ["Parity Technologies "] description = "Substrate node implementation in Rust." edition = "2018" license = "GPL-3.0" +homepage = "https://substrate.dev" +repository = "https://github.com/paritytech/substrate/" [dependencies] codec = { package = "parity-scale-codec", version = "1.0.0" } -node-primitives = { version = "2.0.0", path = "../primitives" } -node-runtime = { version = "2.0.0", path = "../runtime" } -sc-executor = { version = "0.8", path = "../../../client/executor" } -sp-core = { version = "2.0.0", path = "../../../primitives/core" } -sp-io = { version = "2.0.0", path = "../../../primitives/io" } -sp-state-machine = { version = "0.8", path = "../../../primitives/state-machine" } -sp-trie = { version = "2.0.0", path = "../../../primitives/trie" } +node-primitives = { version = "2.0.0-dev", path = "../primitives" } +node-runtime = { version = "2.0.0-dev", path = "../runtime" } +sc-executor = { version = "0.8.0-dev", path = "../../../client/executor" } +sp-core = { version = "2.0.0-dev", path = "../../../primitives/core" } +sp-io = { version = "2.0.0-dev", path = "../../../primitives/io" } +sp-state-machine = { version = "0.8.0-dev", path = "../../../primitives/state-machine" } +sp-trie = { version = "2.0.0-dev", path = "../../../primitives/trie" } trie-root = "0.16.0" -frame-benchmarking = { version = "2.0.0", path = "../../../frame/benchmarking" } +frame-benchmarking = { version = "2.0.0-dev", path = "../../../frame/benchmarking" } [dev-dependencies] criterion = "0.3.0" -frame-support = { version = "2.0.0", path = "../../../frame/support" } -frame-system = { version = "2.0.0", path = "../../../frame/system" } -node-testing = { version = "2.0.0", path = "../testing" } -pallet-balances = { version = "2.0.0", path = "../../../frame/balances" } -pallet-contracts = { version = "2.0.0", path = "../../../frame/contracts" } -pallet-grandpa = { version = "2.0.0", path = "../../../frame/grandpa" } -pallet-im-online = { version = "2.0.0", path = "../../../frame/im-online" } -pallet-indices = { version = "2.0.0", path = "../../../frame/indices" } -pallet-session = { version = "2.0.0", path = "../../../frame/session" } -pallet-timestamp = { version = "2.0.0", path = "../../../frame/timestamp" } -pallet-transaction-payment = { version = "2.0.0", path = "../../../frame/transaction-payment" } -pallet-treasury = { version = "2.0.0", path = "../../../frame/treasury" } -sp-application-crypto = { version = "2.0.0", path = "../../../primitives/application-crypto" } -sp-runtime = { version = "2.0.0", path = "../../../primitives/runtime" } -substrate-test-client = { version = "2.0.0", path = "../../../test-utils/client" } +frame-support = { version = "2.0.0-dev", path = "../../../frame/support" } +frame-system = { version = "2.0.0-dev", path = "../../../frame/system" } +node-testing = { version = "2.0.0-dev", path = "../testing" } +pallet-balances = { version = "2.0.0-dev", path = "../../../frame/balances" } +pallet-contracts = { version = "2.0.0-dev", path = "../../../frame/contracts" } +pallet-grandpa = { version = "2.0.0-dev", path = "../../../frame/grandpa" } +pallet-im-online = { version = "2.0.0-dev", path = "../../../frame/im-online" } +pallet-indices = { version = "2.0.0-dev", path = "../../../frame/indices" } +pallet-session = { version = "2.0.0-dev", path = "../../../frame/session" } +pallet-timestamp = { version = "2.0.0-dev", path = "../../../frame/timestamp" } +pallet-transaction-payment = { version = "2.0.0-dev", path = "../../../frame/transaction-payment" } +pallet-treasury = { version = "2.0.0-dev", path = "../../../frame/treasury" } +sp-application-crypto = { version = "2.0.0-dev", path = "../../../primitives/application-crypto" } +sp-runtime = { version = "2.0.0-dev", path = "../../../primitives/runtime" } +substrate-test-client = { version = "2.0.0-dev", path = "../../../test-utils/client" } wabt = "0.9.2" [features] diff --git a/bin/node/inspect/Cargo.toml b/bin/node/inspect/Cargo.toml index cbce7e4589..b512c458d8 100644 --- a/bin/node/inspect/Cargo.toml +++ b/bin/node/inspect/Cargo.toml @@ -1,17 +1,20 @@ [package] name = "node-inspect" -version = "0.8.0" +version = "0.8.0-dev" authors = ["Parity Technologies "] edition = "2018" +license = "GPL-3.0" +homepage = "https://substrate.dev" +repository = "https://github.com/paritytech/substrate/" [dependencies] codec = { package = "parity-scale-codec", version = "1.0.0" } derive_more = "0.99" log = "0.4.8" -sc-cli = { version = "0.8.0", path = "../../../client/cli" } -sc-client-api = { version = "2.0.0", path = "../../../client/api" } -sc-service = { version = "0.8", default-features = false, path = "../../../client/service" } -sp-blockchain = { version = "2.0.0", path = "../../../primitives/blockchain" } -sp-core = { version = "2.0.0", path = "../../../primitives/core" } -sp-runtime = { version = "2.0.0", path = "../../../primitives/runtime" } +sc-cli = { version = "0.8.0-dev", path = "../../../client/cli" } +sc-client-api = { version = "2.0.0-dev", path = "../../../client/api" } +sc-service = { version = "0.8.0-dev", default-features = false, path = "../../../client/service" } +sp-blockchain = { version = "2.0.0-dev", path = "../../../primitives/blockchain" } +sp-core = { version = "2.0.0-dev", path = "../../../primitives/core" } +sp-runtime = { version = "2.0.0-dev", path = "../../../primitives/runtime" } structopt = "0.3.8" diff --git a/bin/node/primitives/Cargo.toml b/bin/node/primitives/Cargo.toml index 5fc6ce8f10..79819614b3 100644 --- a/bin/node/primitives/Cargo.toml +++ b/bin/node/primitives/Cargo.toml @@ -1,16 +1,18 @@ [package] name = "node-primitives" -version = "2.0.0" +version = "2.0.0-dev" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" +homepage = "https://substrate.dev" +repository = "https://github.com/paritytech/substrate/" [dependencies] -sp-core = { version = "2.0.0", default-features = false, path = "../../../primitives/core" } -sp-runtime = { version = "2.0.0", default-features = false, path = "../../../primitives/runtime" } +sp-core = { version = "2.0.0-dev", default-features = false, path = "../../../primitives/core" } +sp-runtime = { version = "2.0.0-dev", default-features = false, path = "../../../primitives/runtime" } [dev-dependencies] -sp-serializer = { version = "2.0.0", path = "../../../primitives/serializer" } +sp-serializer = { version = "2.0.0-dev", path = "../../../primitives/serializer" } pretty_assertions = "0.6.1" [features] diff --git a/bin/node/rpc-client/Cargo.toml b/bin/node/rpc-client/Cargo.toml index 0d8106dcee..d9f35829a1 100644 --- a/bin/node/rpc-client/Cargo.toml +++ b/bin/node/rpc-client/Cargo.toml @@ -1,9 +1,11 @@ [package] name = "node-rpc-client" -version = "2.0.0" +version = "2.0.0-dev" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" +homepage = "https://substrate.dev" +repository = "https://github.com/paritytech/substrate/" [dependencies] env_logger = "0.7.0" @@ -11,5 +13,5 @@ futures = "0.1.29" hyper = "0.12.35" jsonrpc-core-client = { version = "14.0.3", features = ["http", "ws"] } log = "0.4.8" -node-primitives = { version = "2.0.0", path = "../primitives" } -sc-rpc = { version = "2.0.0", path = "../../../client/rpc" } +node-primitives = { version = "2.0.0-dev", path = "../primitives" } +sc-rpc = { version = "2.0.0-dev", path = "../../../client/rpc" } diff --git a/bin/node/rpc/Cargo.toml b/bin/node/rpc/Cargo.toml index aefc9222f7..a714c8a172 100644 --- a/bin/node/rpc/Cargo.toml +++ b/bin/node/rpc/Cargo.toml @@ -1,25 +1,27 @@ [package] name = "node-rpc" -version = "2.0.0" +version = "2.0.0-dev" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" +homepage = "https://substrate.dev" +repository = "https://github.com/paritytech/substrate/" [dependencies] -sc-client = { version = "0.8", path = "../../../client/" } +sc-client = { version = "0.8.0-dev", path = "../../../client/" } jsonrpc-core = "14.0.3" -node-primitives = { version = "2.0.0", path = "../primitives" } -node-runtime = { version = "2.0.0", path = "../runtime" } -sp-runtime = { version = "2.0.0", path = "../../../primitives/runtime" } -sp-api = { version = "2.0.0", path = "../../../primitives/api" } -pallet-contracts-rpc = { version = "0.8", path = "../../../frame/contracts/rpc/" } -pallet-transaction-payment-rpc = { version = "2.0.0", path = "../../../frame/transaction-payment/rpc/" } -substrate-frame-rpc-system = { version = "2.0.0", path = "../../../utils/frame/rpc/system" } -sp-transaction-pool = { version = "2.0.0", path = "../../../primitives/transaction-pool" } -sc-consensus-babe = { version = "0.8", path = "../../../client/consensus/babe" } -sc-consensus-babe-rpc = { version = "0.8", path = "../../../client/consensus/babe/rpc" } -sp-consensus-babe = { version = "0.8", path = "../../../primitives/consensus/babe" } -sc-keystore = { version = "2.0.0", path = "../../../client/keystore" } -sc-consensus-epochs = { version = "0.8", path = "../../../client/consensus/epochs" } -sp-consensus = { version = "0.8", path = "../../../primitives/consensus/common" } -sp-blockchain = { version = "2.0.0", path = "../../../primitives/blockchain" } +node-primitives = { version = "2.0.0-dev", path = "../primitives" } +node-runtime = { version = "2.0.0-dev", path = "../runtime" } +sp-runtime = { version = "2.0.0-dev", path = "../../../primitives/runtime" } +sp-api = { version = "2.0.0-dev", path = "../../../primitives/api" } +pallet-contracts-rpc = { version = "0.8.0-dev", path = "../../../frame/contracts/rpc/" } +pallet-transaction-payment-rpc = { version = "2.0.0-dev", path = "../../../frame/transaction-payment/rpc/" } +substrate-frame-rpc-system = { version = "2.0.0-dev", path = "../../../utils/frame/rpc/system" } +sp-transaction-pool = { version = "2.0.0-dev", path = "../../../primitives/transaction-pool" } +sc-consensus-babe = { version = "0.8.0-dev", path = "../../../client/consensus/babe" } +sc-consensus-babe-rpc = { version = "0.8.0-dev", path = "../../../client/consensus/babe/rpc" } +sp-consensus-babe = { version = "0.8.0-dev", path = "../../../primitives/consensus/babe" } +sc-keystore = { version = "2.0.0-dev", path = "../../../client/keystore" } +sc-consensus-epochs = { version = "0.8.0-dev", path = "../../../client/consensus/epochs" } +sp-consensus = { version = "0.8.0-dev", path = "../../../primitives/consensus/common" } +sp-blockchain = { version = "2.0.0-dev", path = "../../../primitives/blockchain" } diff --git a/bin/node/runtime/Cargo.toml b/bin/node/runtime/Cargo.toml index 8156e4d444..ddb1f16898 100644 --- a/bin/node/runtime/Cargo.toml +++ b/bin/node/runtime/Cargo.toml @@ -1,10 +1,12 @@ [package] name = "node-runtime" -version = "2.0.0" +version = "2.0.0-dev" authors = ["Parity Technologies "] edition = "2018" build = "build.rs" license = "GPL-3.0" +homepage = "https://substrate.dev" +repository = "https://github.com/paritytech/substrate/" [dependencies] @@ -15,64 +17,64 @@ rustc-hex = { version = "2.0", optional = true } serde = { version = "1.0.102", optional = true } # primitives -sp-authority-discovery = { version = "2.0.0", default-features = false, path = "../../../primitives/authority-discovery" } -sp-consensus-babe = { version = "0.8", default-features = false, path = "../../../primitives/consensus/babe" } -sp-block-builder = { path = "../../../primitives/block-builder", default-features = false} -sp-inherents = { version = "2.0.0", default-features = false, path = "../../../primitives/inherents" } -node-primitives = { version = "2.0.0", default-features = false, path = "../primitives" } -sp-offchain = { version = "2.0.0", default-features = false, path = "../../../primitives/offchain" } -sp-core = { version = "2.0.0", default-features = false, path = "../../../primitives/core" } -sp-std = { version = "2.0.0", default-features = false, path = "../../../primitives/std" } -sp-api = { version = "2.0.0", default-features = false, path = "../../../primitives/api" } -sp-runtime = { version = "2.0.0", default-features = false, path = "../../../primitives/runtime" } -sp-staking = { version = "2.0.0", default-features = false, path = "../../../primitives/staking" } -sp-keyring = { version = "2.0.0", optional = true, path = "../../../primitives/keyring" } -sp-session = { version = "2.0.0", default-features = false, path = "../../../primitives/session" } -sp-transaction-pool = { version = "2.0.0", default-features = false, path = "../../../primitives/transaction-pool" } -sp-version = { version = "2.0.0", default-features = false, path = "../../../primitives/version" } +sp-authority-discovery = { version = "2.0.0-dev", default-features = false, path = "../../../primitives/authority-discovery" } +sp-consensus-babe = { version = "0.8.0-dev", default-features = false, path = "../../../primitives/consensus/babe" } +sp-block-builder = { path = "../../../primitives/block-builder", default-features = false, version = "2.0.0-dev"} +sp-inherents = { version = "2.0.0-dev", default-features = false, path = "../../../primitives/inherents" } +node-primitives = { version = "2.0.0-dev", default-features = false, path = "../primitives" } +sp-offchain = { version = "2.0.0-dev", default-features = false, path = "../../../primitives/offchain" } +sp-core = { version = "2.0.0-dev", default-features = false, path = "../../../primitives/core" } +sp-std = { version = "2.0.0-dev", default-features = false, path = "../../../primitives/std" } +sp-api = { version = "2.0.0-dev", default-features = false, path = "../../../primitives/api" } +sp-runtime = { version = "2.0.0-dev", default-features = false, path = "../../../primitives/runtime" } +sp-staking = { version = "2.0.0-dev", default-features = false, path = "../../../primitives/staking" } +sp-keyring = { version = "2.0.0-dev", optional = true, path = "../../../primitives/keyring" } +sp-session = { version = "2.0.0-dev", default-features = false, path = "../../../primitives/session" } +sp-transaction-pool = { version = "2.0.0-dev", default-features = false, path = "../../../primitives/transaction-pool" } +sp-version = { version = "2.0.0-dev", default-features = false, path = "../../../primitives/version" } # frame dependencies -frame-executive = { version = "2.0.0", default-features = false, path = "../../../frame/executive" } -frame-benchmarking = { version = "2.0.0", default-features = false, path = "../../../frame/benchmarking" } -frame-support = { version = "2.0.0", default-features = false, path = "../../../frame/support" } -frame-system = { version = "2.0.0", default-features = false, path = "../../../frame/system" } -frame-system-rpc-runtime-api = { version = "2.0.0", default-features = false, path = "../../../frame/system/rpc/runtime-api/" } -pallet-authority-discovery = { version = "2.0.0", default-features = false, path = "../../../frame/authority-discovery" } -pallet-authorship = { version = "2.0.0", default-features = false, path = "../../../frame/authorship" } -pallet-babe = { version = "2.0.0", default-features = false, path = "../../../frame/babe" } -pallet-balances = { version = "2.0.0", default-features = false, path = "../../../frame/balances" } -pallet-collective = { version = "2.0.0", default-features = false, path = "../../../frame/collective" } -pallet-contracts = { version = "2.0.0", default-features = false, path = "../../../frame/contracts" } -pallet-contracts-primitives = { version = "2.0.0", default-features = false, path = "../../../frame/contracts/common/" } -pallet-contracts-rpc-runtime-api = { version = "0.8.0", default-features = false, path = "../../../frame/contracts/rpc/runtime-api/" } -pallet-democracy = { version = "2.0.0", default-features = false, path = "../../../frame/democracy" } -pallet-elections-phragmen = { version = "2.0.0", default-features = false, path = "../../../frame/elections-phragmen" } -pallet-finality-tracker = { version = "2.0.0", default-features = false, path = "../../../frame/finality-tracker" } -pallet-grandpa = { version = "2.0.0", default-features = false, path = "../../../frame/grandpa" } -pallet-im-online = { version = "2.0.0", default-features = false, path = "../../../frame/im-online" } -pallet-indices = { version = "2.0.0", default-features = false, path = "../../../frame/indices" } -pallet-identity = { version = "2.0.0", default-features = false, path = "../../../frame/identity" } -pallet-membership = { version = "2.0.0", default-features = false, path = "../../../frame/membership" } -pallet-offences = { version = "2.0.0", default-features = false, path = "../../../frame/offences" } -pallet-randomness-collective-flip = { version = "2.0.0", default-features = false, path = "../../../frame/randomness-collective-flip" } -pallet-recovery = { version = "2.0.0", default-features = false, path = "../../../frame/recovery" } -pallet-session = { version = "2.0.0", features = ["historical"], path = "../../../frame/session", default-features = false } -pallet-staking = { version = "2.0.0", features = ["migrate"], path = "../../../frame/staking", default-features = false } -pallet-staking-reward-curve = { version = "2.0.0", path = "../../../frame/staking/reward-curve" } -pallet-sudo = { version = "2.0.0", default-features = false, path = "../../../frame/sudo" } -pallet-society = { version = "2.0.0", default-features = false, path = "../../../frame/society" } -pallet-timestamp = { version = "2.0.0", default-features = false, path = "../../../frame/timestamp" } -pallet-treasury = { version = "2.0.0", default-features = false, path = "../../../frame/treasury" } -pallet-utility = { version = "2.0.0", default-features = false, path = "../../../frame/utility" } -pallet-transaction-payment = { version = "2.0.0", default-features = false, path = "../../../frame/transaction-payment" } -pallet-transaction-payment-rpc-runtime-api = { version = "2.0.0", default-features = false, path = "../../../frame/transaction-payment/rpc/runtime-api/" } -pallet-vesting = { version = "2.0.0", default-features = false, path = "../../../frame/vesting" } +frame-executive = { version = "2.0.0-dev", default-features = false, path = "../../../frame/executive" } +frame-benchmarking = { version = "2.0.0-dev", default-features = false, path = "../../../frame/benchmarking" } +frame-support = { version = "2.0.0-dev", default-features = false, path = "../../../frame/support" } +frame-system = { version = "2.0.0-dev", default-features = false, path = "../../../frame/system" } +frame-system-rpc-runtime-api = { version = "2.0.0-dev", default-features = false, path = "../../../frame/system/rpc/runtime-api/" } +pallet-authority-discovery = { version = "2.0.0-dev", default-features = false, path = "../../../frame/authority-discovery" } +pallet-authorship = { version = "2.0.0-dev", default-features = false, path = "../../../frame/authorship" } +pallet-babe = { version = "2.0.0-dev", default-features = false, path = "../../../frame/babe" } +pallet-balances = { version = "2.0.0-dev", default-features = false, path = "../../../frame/balances" } +pallet-collective = { version = "2.0.0-dev", default-features = false, path = "../../../frame/collective" } +pallet-contracts = { version = "2.0.0-dev", default-features = false, path = "../../../frame/contracts" } +pallet-contracts-primitives = { version = "2.0.0-dev", default-features = false, path = "../../../frame/contracts/common/" } +pallet-contracts-rpc-runtime-api = { version = "0.8.0-dev", default-features = false, path = "../../../frame/contracts/rpc/runtime-api/" } +pallet-democracy = { version = "2.0.0-dev", default-features = false, path = "../../../frame/democracy" } +pallet-elections-phragmen = { version = "2.0.0-dev", default-features = false, path = "../../../frame/elections-phragmen" } +pallet-finality-tracker = { version = "2.0.0-dev", default-features = false, path = "../../../frame/finality-tracker" } +pallet-grandpa = { version = "2.0.0-dev", default-features = false, path = "../../../frame/grandpa" } +pallet-im-online = { version = "2.0.0-dev", default-features = false, path = "../../../frame/im-online" } +pallet-indices = { version = "2.0.0-dev", default-features = false, path = "../../../frame/indices" } +pallet-identity = { version = "2.0.0-dev", default-features = false, path = "../../../frame/identity" } +pallet-membership = { version = "2.0.0-dev", default-features = false, path = "../../../frame/membership" } +pallet-offences = { version = "2.0.0-dev", default-features = false, path = "../../../frame/offences" } +pallet-randomness-collective-flip = { version = "2.0.0-dev", default-features = false, path = "../../../frame/randomness-collective-flip" } +pallet-recovery = { version = "2.0.0-dev", default-features = false, path = "../../../frame/recovery" } +pallet-session = { version = "2.0.0-dev", features = ["historical"], path = "../../../frame/session", default-features = false } +pallet-staking = { version = "2.0.0-dev", features = ["migrate"], path = "../../../frame/staking", default-features = false } +pallet-staking-reward-curve = { version = "2.0.0-dev", path = "../../../frame/staking/reward-curve" } +pallet-sudo = { version = "2.0.0-dev", default-features = false, path = "../../../frame/sudo" } +pallet-society = { version = "2.0.0-dev", default-features = false, path = "../../../frame/society" } +pallet-timestamp = { version = "2.0.0-dev", default-features = false, path = "../../../frame/timestamp" } +pallet-treasury = { version = "2.0.0-dev", default-features = false, path = "../../../frame/treasury" } +pallet-utility = { version = "2.0.0-dev", default-features = false, path = "../../../frame/utility" } +pallet-transaction-payment = { version = "2.0.0-dev", default-features = false, path = "../../../frame/transaction-payment" } +pallet-transaction-payment-rpc-runtime-api = { version = "2.0.0-dev", default-features = false, path = "../../../frame/transaction-payment/rpc/runtime-api/" } +pallet-vesting = { version = "2.0.0-dev", default-features = false, path = "../../../frame/vesting" } [build-dependencies] -wasm-builder-runner = { version = "1.0.4", package = "substrate-wasm-builder-runner", path = "../../../utils/wasm-builder-runner" } +wasm-builder-runner = { version = "1.0.5", package = "substrate-wasm-builder-runner", path = "../../../utils/wasm-builder-runner" } [dev-dependencies] -sp-io = { version = "2.0.0", path = "../../../primitives/io" } +sp-io = { version = "2.0.0-dev", path = "../../../primitives/io" } [features] default = ["std"] diff --git a/bin/node/testing/Cargo.toml b/bin/node/testing/Cargo.toml index 840b2d0fef..4530c95760 100644 --- a/bin/node/testing/Cargo.toml +++ b/bin/node/testing/Cargo.toml @@ -1,53 +1,55 @@ [package] name = "node-testing" -version = "2.0.0" +version = "2.0.0-dev" authors = ["Parity Technologies "] description = "Test utilities for Substrate node." edition = "2018" license = "GPL-3.0" +homepage = "https://substrate.dev" +repository = "https://github.com/paritytech/substrate/" [dependencies] -pallet-balances = { version = "2.0.0", path = "../../../frame/balances" } -sc-client = { version = "0.8", path = "../../../client/" } -sc-client-db = { version = "0.8", path = "../../../client/db/", features = ["kvdb-rocksdb"] } -sc-client-api = { version = "2.0", path = "../../../client/api/" } +pallet-balances = { version = "2.0.0-dev", path = "../../../frame/balances" } +sc-client = { version = "0.8.0-dev", path = "../../../client/" } +sc-client-db = { version = "0.8.0-dev", path = "../../../client/db/", features = ["kvdb-rocksdb"] } +sc-client-api = { version = "2.0.0-dev", path = "../../../client/api/" } codec = { package = "parity-scale-codec", version = "1.0.0" } -pallet-contracts = { version = "2.0.0", path = "../../../frame/contracts" } -pallet-grandpa = { version = "2.0.0", path = "../../../frame/grandpa" } -pallet-indices = { version = "2.0.0", path = "../../../frame/indices" } -sp-keyring = { version = "2.0.0", path = "../../../primitives/keyring" } -node-executor = { version = "2.0.0", path = "../executor" } -node-primitives = { version = "2.0.0", path = "../primitives" } -node-runtime = { version = "2.0.0", path = "../runtime" } -sp-core = { version = "2.0.0", path = "../../../primitives/core" } -sp-io = { version = "2.0.0", path = "../../../primitives/io" } -frame-support = { version = "2.0.0", path = "../../../frame/support" } -pallet-session = { version = "2.0.0", path = "../../../frame/session" } -pallet-society = { version = "2.0.0", path = "../../../frame/society" } -sp-runtime = { version = "2.0.0", path = "../../../primitives/runtime" } -pallet-staking = { version = "2.0.0", path = "../../../frame/staking" } -sc-executor = { version = "0.8", path = "../../../client/executor", features = ["wasmtime"] } -sp-consensus = { version = "0.8", path = "../../../primitives/consensus/common" } -frame-system = { version = "2.0.0", path = "../../../frame/system" } -substrate-test-client = { version = "2.0.0", path = "../../../test-utils/client" } -pallet-timestamp = { version = "2.0.0", path = "../../../frame/timestamp" } -pallet-transaction-payment = { version = "2.0.0", path = "../../../frame/transaction-payment" } -pallet-treasury = { version = "2.0.0", path = "../../../frame/treasury" } +pallet-contracts = { version = "2.0.0-dev", path = "../../../frame/contracts" } +pallet-grandpa = { version = "2.0.0-dev", path = "../../../frame/grandpa" } +pallet-indices = { version = "2.0.0-dev", path = "../../../frame/indices" } +sp-keyring = { version = "2.0.0-dev", path = "../../../primitives/keyring" } +node-executor = { version = "2.0.0-dev", path = "../executor" } +node-primitives = { version = "2.0.0-dev", path = "../primitives" } +node-runtime = { version = "2.0.0-dev", path = "../runtime" } +sp-core = { version = "2.0.0-dev", path = "../../../primitives/core" } +sp-io = { version = "2.0.0-dev", path = "../../../primitives/io" } +frame-support = { version = "2.0.0-dev", path = "../../../frame/support" } +pallet-session = { version = "2.0.0-dev", path = "../../../frame/session" } +pallet-society = { version = "2.0.0-dev", path = "../../../frame/society" } +sp-runtime = { version = "2.0.0-dev", path = "../../../primitives/runtime" } +pallet-staking = { version = "2.0.0-dev", path = "../../../frame/staking" } +sc-executor = { version = "0.8.0-dev", path = "../../../client/executor", features = ["wasmtime"] } +sp-consensus = { version = "0.8.0-dev", path = "../../../primitives/consensus/common" } +frame-system = { version = "2.0.0-dev", path = "../../../frame/system" } +substrate-test-client = { version = "2.0.0-dev", path = "../../../test-utils/client" } +pallet-timestamp = { version = "2.0.0-dev", path = "../../../frame/timestamp" } +pallet-transaction-payment = { version = "2.0.0-dev", path = "../../../frame/transaction-payment" } +pallet-treasury = { version = "2.0.0-dev", path = "../../../frame/treasury" } wabt = "0.9.2" -sp-api = { version = "2.0.0", path = "../../../primitives/api" } -sp-finality-tracker = { version = "2.0.0", default-features = false, path = "../../../primitives/finality-tracker" } -sp-timestamp = { version = "2.0.0", default-features = false, path = "../../../primitives/timestamp" } -sp-block-builder = { version = "2.0.0", path = "../../../primitives/block-builder" } -sp-inherents = { version = "2.0.0", path = "../../../primitives/inherents" } -sp-blockchain = { version = "2.0.0", path = "../../../primitives/blockchain" } +sp-api = { version = "2.0.0-dev", path = "../../../primitives/api" } +sp-finality-tracker = { version = "2.0.0-dev", default-features = false, path = "../../../primitives/finality-tracker" } +sp-timestamp = { version = "2.0.0-dev", default-features = false, path = "../../../primitives/timestamp" } +sp-block-builder = { version = "2.0.0-dev", path = "../../../primitives/block-builder" } +sp-inherents = { version = "2.0.0-dev", path = "../../../primitives/inherents" } +sp-blockchain = { version = "2.0.0-dev", path = "../../../primitives/blockchain" } log = "0.4.8" tempdir = "0.3" fs_extra = "1" [dev-dependencies] criterion = "0.3.0" -sc-cli = { version = "0.8.0", path = "../../../client/cli" } -sc-service = { version = "0.8.0", path = "../../../client/service", features = ["rocksdb"] } +sc-cli = { version = "0.8.0-dev", path = "../../../client/cli" } +sc-service = { version = "0.8.0-dev", path = "../../../client/service", features = ["rocksdb"] } [[bench]] name = "import" diff --git a/bin/node/transaction-factory/Cargo.toml b/bin/node/transaction-factory/Cargo.toml index cd40e2f0d9..5d44c3a86a 100644 --- a/bin/node/transaction-factory/Cargo.toml +++ b/bin/node/transaction-factory/Cargo.toml @@ -1,20 +1,22 @@ [package] name = "node-transaction-factory" -version = "0.8.0" +version = "0.8.0-dev" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" +homepage = "https://substrate.dev" +repository = "https://github.com/paritytech/substrate/" [dependencies] -sp-block-builder = { version = "2.0.0", path = "../../../primitives/block-builder" } -sc-cli = { version = "0.8.0", path = "../../../client/cli" } -sc-client-api = { version = "2.0.0", path = "../../../client/api" } -sc-client = { version = "0.8", path = "../../../client" } +sp-block-builder = { version = "2.0.0-dev", path = "../../../primitives/block-builder" } +sc-cli = { version = "0.8.0-dev", path = "../../../client/cli" } +sc-client-api = { version = "2.0.0-dev", path = "../../../client/api" } +sc-client = { version = "0.8.0-dev", path = "../../../client" } codec = { package = "parity-scale-codec", version = "1.0.0", features = ["derive"] } -sp-consensus = { version = "0.8", path = "../../../primitives/consensus/common" } +sp-consensus = { version = "0.8.0-dev", path = "../../../primitives/consensus/common" } log = "0.4.8" -sp-core = { version = "2.0.0", path = "../../../primitives/core" } -sp-api = { version = "2.0.0", path = "../../../primitives/api" } -sp-runtime = { version = "2.0.0", path = "../../../primitives/runtime" } -sc-service = { version = "0.8", path = "../../../client/service" } -sp-blockchain = { version = "2.0.0", path = "../../../primitives/blockchain" } +sp-core = { version = "2.0.0-dev", path = "../../../primitives/core" } +sp-api = { version = "2.0.0-dev", path = "../../../primitives/api" } +sp-runtime = { version = "2.0.0-dev", path = "../../../primitives/runtime" } +sc-service = { version = "0.8.0-dev", path = "../../../client/service" } +sp-blockchain = { version = "2.0.0-dev", path = "../../../primitives/blockchain" } diff --git a/bin/utils/chain-spec-builder/Cargo.toml b/bin/utils/chain-spec-builder/Cargo.toml index 8f122a35a0..b211b308e1 100644 --- a/bin/utils/chain-spec-builder/Cargo.toml +++ b/bin/utils/chain-spec-builder/Cargo.toml @@ -1,15 +1,17 @@ [package] name = "chain-spec-builder" -version = "2.0.0" +version = "2.0.0-dev" authors = ["Parity Technologies "] edition = "2018" build = "build.rs" license = "GPL-3.0" +homepage = "https://substrate.dev" +repository = "https://github.com/paritytech/substrate/" [dependencies] ansi_term = "0.12.1" -sc-keystore = { version = "2.0.0", path = "../../../client/keystore" } -node-cli = { version = "2.0.0", path = "../../node/cli" } -sp-core = { version = "2.0.0", path = "../../../primitives/core" } +sc-keystore = { version = "2.0.0-dev", path = "../../../client/keystore" } +node-cli = { version = "2.0.0-dev", path = "../../node/cli" } +sp-core = { version = "2.0.0-dev", path = "../../../primitives/core" } rand = "0.7.2" structopt = "0.3.8" diff --git a/bin/utils/subkey/Cargo.toml b/bin/utils/subkey/Cargo.toml index 9c96c7ffa8..14e5cb4be0 100644 --- a/bin/utils/subkey/Cargo.toml +++ b/bin/utils/subkey/Cargo.toml @@ -1,16 +1,18 @@ [package] name = "subkey" -version = "2.0.0" +version = "2.0.0-dev" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" +homepage = "https://substrate.dev" +repository = "https://github.com/paritytech/substrate/" [dependencies] futures = "0.1.29" -sp-core = { version = "*", path = "../../../primitives/core" } -node-runtime = { version = "*", path = "../../node/runtime" } -node-primitives = { version = "*", path = "../../node/primitives" } -sp-runtime = { version = "*", path = "../../../primitives/runtime" } +sp-core = { version = "2.0.0-dev", path = "../../../primitives/core" } +node-runtime = { version = "2.0.0-dev", path = "../../node/runtime" } +node-primitives = { version = "2.0.0-dev", path = "../../node/primitives" } +sp-runtime = { version = "2.0.0-dev", path = "../../../primitives/runtime" } rand = "0.7.2" clap = "2.33.0" tiny-bip39 = "0.7" @@ -19,13 +21,13 @@ substrate-bip39 = "0.3.1" hex = "0.4.0" hex-literal = "0.2.1" codec = { package = "parity-scale-codec", version = "1.0.0" } -frame-system = { version = "2.0.0", path = "../../../frame/system" } -pallet-balances = { version = "2.0.0", path = "../../../frame/balances" } -pallet-transaction-payment = { version = "2.0.0", path = "../../../frame/transaction-payment" } +frame-system = { version = "2.0.0-dev", path = "../../../frame/system" } +pallet-balances = { version = "2.0.0-dev", path = "../../../frame/balances" } +pallet-transaction-payment = { version = "2.0.0-dev", path = "../../../frame/transaction-payment" } rpassword = "4.0.1" itertools = "0.8.2" derive_more = { version = "0.99.2" } -sc-rpc = { version = "2.0.0", path = "../../../client/rpc" } +sc-rpc = { version = "2.0.0-dev", path = "../../../client/rpc" } jsonrpc-core-client = { version = "14.0.3", features = ["http"] } hyper = "0.12.35" libp2p = "0.16.1" diff --git a/client/Cargo.toml b/client/Cargo.toml index c89fe88145..b8a6efd05d 100644 --- a/client/Cargo.toml +++ b/client/Cargo.toml @@ -1,41 +1,43 @@ [package] name = "sc-client" -version = "0.8.0" +version = "0.8.0-dev" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" +homepage = "https://substrate.dev" +repository = "https://github.com/paritytech/substrate/" [dependencies] -sc-block-builder = { version = "0.8", path = "block-builder" } -sc-client-api = { version = "2.0.0", path = "api" } +sc-block-builder = { version = "0.8.0-dev", path = "block-builder" } +sc-client-api = { version = "2.0.0-dev", path = "api" } codec = { package = "parity-scale-codec", version = "1.0.0", features = ["derive"] } -sp-consensus = { version = "0.8", path = "../primitives/consensus/common" } +sp-consensus = { version = "0.8.0-dev", path = "../primitives/consensus/common" } derive_more = { version = "0.99.2" } -sc-executor = { version = "0.8", path = "executor" } -sp-externalities = { version = "0.8.0", path = "../primitives/externalities" } +sc-executor = { version = "0.8.0-dev", path = "executor" } +sp-externalities = { version = "0.8.0-dev", path = "../primitives/externalities" } fnv = { version = "1.0.6" } futures = { version = "0.3.1", features = ["compat"] } hash-db = { version = "0.15.2" } hex-literal = { version = "0.2.1" } -sp-inherents = { version = "2.0.0", path = "../primitives/inherents" } -sp-keyring = { version = "2.0.0", path = "../primitives/keyring" } +sp-inherents = { version = "2.0.0-dev", path = "../primitives/inherents" } +sp-keyring = { version = "2.0.0-dev", path = "../primitives/keyring" } kvdb = "0.4.0" log = { version = "0.4.8" } parking_lot = "0.10.0" -sp-core = { version = "2.0.0", path = "../primitives/core" } -sp-std = { version = "2.0.0", path = "../primitives/std" } -sp-version = { version = "2.0.0", path = "../primitives/version" } -sp-api = { version = "2.0.0", path = "../primitives/api" } -sp-runtime = { version = "2.0.0", path = "../primitives/runtime" } -sp-blockchain = { version = "2.0.0", path = "../primitives/blockchain" } -sp-state-machine = { version = "0.8", path = "../primitives/state-machine" } -sc-telemetry = { version = "2.0.0", path = "telemetry" } -sp-trie = { version = "2.0.0", path = "../primitives/trie" } +sp-core = { version = "2.0.0-dev", path = "../primitives/core" } +sp-std = { version = "2.0.0-dev", path = "../primitives/std" } +sp-version = { version = "2.0.0-dev", path = "../primitives/version" } +sp-api = { version = "2.0.0-dev", path = "../primitives/api" } +sp-runtime = { version = "2.0.0-dev", path = "../primitives/runtime" } +sp-blockchain = { version = "2.0.0-dev", path = "../primitives/blockchain" } +sp-state-machine = { version = "0.8.0-dev", path = "../primitives/state-machine" } +sc-telemetry = { version = "2.0.0-dev", path = "telemetry" } +sp-trie = { version = "2.0.0-dev", path = "../primitives/trie" } tracing = "0.1.10" [dev-dependencies] env_logger = "0.7.0" tempfile = "3.1.0" -substrate-test-runtime-client = { version = "2.0.0", path = "../test-utils/runtime/client" } +substrate-test-runtime-client = { version = "2.0.0-dev", path = "../test-utils/runtime/client" } kvdb-memorydb = "0.4.0" -sp-panic-handler = { version = "2.0.0", path = "../primitives/panic-handler" } +sp-panic-handler = { version = "2.0.0-dev", path = "../primitives/panic-handler" } diff --git a/client/api/Cargo.toml b/client/api/Cargo.toml index 27a40c4d94..a848875029 100644 --- a/client/api/Cargo.toml +++ b/client/api/Cargo.toml @@ -1,35 +1,37 @@ [package] name = "sc-client-api" -version = "2.0.0" +version = "2.0.0-dev" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" +homepage = "https://substrate.dev" +repository = "https://github.com/paritytech/substrate/" [dependencies] codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } -sp-consensus = { version = "0.8", path = "../../primitives/consensus/common" } +sp-consensus = { version = "0.8.0-dev", path = "../../primitives/consensus/common" } derive_more = { version = "0.99.2" } -sc-executor = { version = "0.8", path = "../executor" } -sp-externalities = { version = "0.8.0", path = "../../primitives/externalities" } +sc-executor = { version = "0.8.0-dev", path = "../executor" } +sp-externalities = { version = "0.8.0-dev", path = "../../primitives/externalities" } fnv = { version = "1.0.6" } futures = { version = "0.3.1" } hash-db = { version = "0.15.2", default-features = false } -sp-blockchain = { version = "2.0.0", path = "../../primitives/blockchain" } +sp-blockchain = { version = "2.0.0-dev", path = "../../primitives/blockchain" } hex-literal = { version = "0.2.1" } -sp-inherents = { version = "2.0.0", default-features = false, path = "../../primitives/inherents" } -sp-keyring = { version = "2.0.0", path = "../../primitives/keyring" } +sp-inherents = { version = "2.0.0-dev", default-features = false, path = "../../primitives/inherents" } +sp-keyring = { version = "2.0.0-dev", path = "../../primitives/keyring" } kvdb = "0.4.0" log = { version = "0.4.8" } parking_lot = "0.10.0" -sp-core = { version = "2.0.0", default-features = false, path = "../../primitives/core" } -sp-std = { version = "2.0.0", default-features = false, path = "../../primitives/std" } -sp-version = { version = "2.0.0", default-features = false, path = "../../primitives/version" } -sp-api = { version = "2.0.0", path = "../../primitives/api" } -sp-runtime = { version = "2.0.0", default-features = false, path = "../../primitives/runtime" } -sp-state-machine = { version = "0.8", path = "../../primitives/state-machine" } -sc-telemetry = { version = "2.0.0", path = "../telemetry" } -sp-trie = { version = "2.0.0", path = "../../primitives/trie" } -sp-transaction-pool = { version = "2.0.0", path = "../../primitives/transaction-pool" } +sp-core = { version = "2.0.0-dev", default-features = false, path = "../../primitives/core" } +sp-std = { version = "2.0.0-dev", default-features = false, path = "../../primitives/std" } +sp-version = { version = "2.0.0-dev", default-features = false, path = "../../primitives/version" } +sp-api = { version = "2.0.0-dev", path = "../../primitives/api" } +sp-runtime = { version = "2.0.0-dev", default-features = false, path = "../../primitives/runtime" } +sp-state-machine = { version = "0.8.0-dev", path = "../../primitives/state-machine" } +sc-telemetry = { version = "2.0.0-dev", path = "../telemetry" } +sp-trie = { version = "2.0.0-dev", path = "../../primitives/trie" } +sp-transaction-pool = { version = "2.0.0-dev", path = "../../primitives/transaction-pool" } [dev-dependencies] -sp-test-primitives = { version = "2.0.0", path = "../../primitives/test-primitives" } +sp-test-primitives = { version = "2.0.0-dev", path = "../../primitives/test-primitives" } diff --git a/client/authority-discovery/Cargo.toml b/client/authority-discovery/Cargo.toml index 59ed5bc89d..a87a0fee97 100644 --- a/client/authority-discovery/Cargo.toml +++ b/client/authority-discovery/Cargo.toml @@ -1,10 +1,12 @@ [package] name = "sc-authority-discovery" -version = "0.8.0" +version = "0.8.0-dev" authors = ["Parity Technologies "] edition = "2018" build = "build.rs" license = "GPL-3.0" +homepage = "https://substrate.dev" +repository = "https://github.com/paritytech/substrate/" [build-dependencies] prost-build = "0.6.1" @@ -19,18 +21,18 @@ libp2p = { version = "0.16.1", default-features = false, features = ["secp256k1" log = "0.4.8" prost = "0.6.1" rand = "0.7.2" -sc-client-api = { version = "2.0.0", path = "../api" } -sc-keystore = { version = "2.0.0", path = "../keystore" } -sc-network = { version = "0.8", path = "../network" } +sc-client-api = { version = "2.0.0-dev", path = "../api" } +sc-keystore = { version = "2.0.0-dev", path = "../keystore" } +sc-network = { version = "0.8.0-dev", path = "../network" } serde_json = "1.0.41" -sp-authority-discovery = { version = "2.0.0", path = "../../primitives/authority-discovery" } -sp-blockchain = { version = "2.0.0", path = "../../primitives/blockchain" } -sp-core = { version = "2.0.0", path = "../../primitives/core" } -sp-runtime = { version = "2.0.0", path = "../../primitives/runtime" } -sp-api = { version = "2.0.0", path = "../../primitives/api" } +sp-authority-discovery = { version = "2.0.0-dev", path = "../../primitives/authority-discovery" } +sp-blockchain = { version = "2.0.0-dev", path = "../../primitives/blockchain" } +sp-core = { version = "2.0.0-dev", path = "../../primitives/core" } +sp-runtime = { version = "2.0.0-dev", path = "../../primitives/runtime" } +sp-api = { version = "2.0.0-dev", path = "../../primitives/api" } [dev-dependencies] env_logger = "0.7.0" quickcheck = "0.9.0" -sc-peerset = { version = "2.0.0", path = "../peerset" } -substrate-test-runtime-client = { version = "2.0.0", path = "../../test-utils/runtime/client"} +sc-peerset = { version = "2.0.0-dev", path = "../peerset" } +substrate-test-runtime-client = { version = "2.0.0-dev", path = "../../test-utils/runtime/client"} diff --git a/client/basic-authorship/Cargo.toml b/client/basic-authorship/Cargo.toml index 6a013f7a74..15a94def5f 100644 --- a/client/basic-authorship/Cargo.toml +++ b/client/basic-authorship/Cargo.toml @@ -1,28 +1,30 @@ [package] name = "sc-basic-authorship" -version = "0.8.0" +version = "0.8.0-dev" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" +homepage = "https://substrate.dev" +repository = "https://github.com/paritytech/substrate/" [dependencies] log = "0.4.8" futures = "0.3.1" codec = { package = "parity-scale-codec", version = "1.0.0" } -sp-api = { version = "2.0.0", path = "../../primitives/api" } -sp-runtime = { version = "2.0.0", path = "../../primitives/runtime" } -sp-core = { version = "2.0.0", path = "../../primitives/core" } -sp-blockchain = { version = "2.0.0", path = "../../primitives/blockchain" } -sc-client = { version = "0.8", path = "../" } -sc-client-api = { version = "2.0.0", path = "../api" } -sp-consensus = { version = "0.8", path = "../../primitives/consensus/common" } -sp-inherents = { version = "2.0.0", path = "../../primitives/inherents" } -sc-telemetry = { version = "2.0.0", path = "../telemetry" } -sp-transaction-pool = { version = "2.0.0", path = "../../primitives/transaction-pool" } -sc-block-builder = { version = "0.8", path = "../block-builder" } +sp-api = { version = "2.0.0-dev", path = "../../primitives/api" } +sp-runtime = { version = "2.0.0-dev", path = "../../primitives/runtime" } +sp-core = { version = "2.0.0-dev", path = "../../primitives/core" } +sp-blockchain = { version = "2.0.0-dev", path = "../../primitives/blockchain" } +sc-client = { version = "0.8.0-dev", path = "../" } +sc-client-api = { version = "2.0.0-dev", path = "../api" } +sp-consensus = { version = "0.8.0-dev", path = "../../primitives/consensus/common" } +sp-inherents = { version = "2.0.0-dev", path = "../../primitives/inherents" } +sc-telemetry = { version = "2.0.0-dev", path = "../telemetry" } +sp-transaction-pool = { version = "2.0.0-dev", path = "../../primitives/transaction-pool" } +sc-block-builder = { version = "0.8.0-dev", path = "../block-builder" } tokio-executor = { version = "0.2.0-alpha.6", features = ["blocking"] } [dev-dependencies] -sc-transaction-pool = { version = "2.0.0", path = "../../client/transaction-pool" } -substrate-test-runtime-client = { version = "2.0.0", path = "../../test-utils/runtime/client" } +sc-transaction-pool = { version = "2.0.0-dev", path = "../../client/transaction-pool" } +substrate-test-runtime-client = { version = "2.0.0-dev", path = "../../test-utils/runtime/client" } parking_lot = "0.10.0" diff --git a/client/block-builder/Cargo.toml b/client/block-builder/Cargo.toml index 383a931b2f..f706265cab 100644 --- a/client/block-builder/Cargo.toml +++ b/client/block-builder/Cargo.toml @@ -1,17 +1,19 @@ [package] name = "sc-block-builder" -version = "0.8.0" +version = "0.8.0-dev" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" +homepage = "https://substrate.dev" +repository = "https://github.com/paritytech/substrate/" [dependencies] -sp-state-machine = { version = "0.8", path = "../../primitives/state-machine" } -sp-runtime = { version = "2.0.0", path = "../../primitives/runtime" } -sp-api = { version = "2.0.0", path = "../../primitives/api" } -sp-consensus = { version = "0.8.0", path = "../../primitives/consensus/common" } -sp-blockchain = { version = "2.0.0", path = "../../primitives/blockchain" } -sp-core = { version = "2.0.0", path = "../../primitives/core" } -sp-block-builder = { version = "2.0.0", path = "../../primitives/block-builder" } -sc-client-api = { version = "2.0.0", path = "../api" } +sp-state-machine = { version = "0.8.0-dev", path = "../../primitives/state-machine" } +sp-runtime = { version = "2.0.0-dev", path = "../../primitives/runtime" } +sp-api = { version = "2.0.0-dev", path = "../../primitives/api" } +sp-consensus = { version = "0.8.0-dev", path = "../../primitives/consensus/common" } +sp-blockchain = { version = "2.0.0-dev", path = "../../primitives/blockchain" } +sp-core = { version = "2.0.0-dev", path = "../../primitives/core" } +sp-block-builder = { version = "2.0.0-dev", path = "../../primitives/block-builder" } +sc-client-api = { version = "2.0.0-dev", path = "../api" } codec = { package = "parity-scale-codec", version = "1.0.6", features = ["derive"] } diff --git a/client/chain-spec/Cargo.toml b/client/chain-spec/Cargo.toml index 222914145e..b2dee23ac5 100644 --- a/client/chain-spec/Cargo.toml +++ b/client/chain-spec/Cargo.toml @@ -1,16 +1,18 @@ [package] name = "sc-chain-spec" -version = "2.0.0" +version = "2.0.0-dev" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" +homepage = "https://substrate.dev" +repository = "https://github.com/paritytech/substrate/" [dependencies] -sc-chain-spec-derive = { version = "2.0.0", path = "./derive" } +sc-chain-spec-derive = { version = "2.0.0-dev", path = "./derive" } impl-trait-for-tuples = "0.1.3" -sc-network = { version = "0.8", path = "../network" } -sp-core = { version = "2.0.0", path = "../../primitives/core" } +sc-network = { version = "0.8.0-dev", path = "../network" } +sp-core = { version = "2.0.0-dev", path = "../../primitives/core" } serde = { version = "1.0.101", features = ["derive"] } serde_json = "1.0.41" -sp-runtime = { version = "2.0.0", path = "../../primitives/runtime" } -sc-telemetry = { version = "2.0.0", path = "../telemetry" } +sp-runtime = { version = "2.0.0-dev", path = "../../primitives/runtime" } +sc-telemetry = { version = "2.0.0-dev", path = "../telemetry" } diff --git a/client/chain-spec/derive/Cargo.toml b/client/chain-spec/derive/Cargo.toml index 566948883b..9b23b71ab5 100644 --- a/client/chain-spec/derive/Cargo.toml +++ b/client/chain-spec/derive/Cargo.toml @@ -1,9 +1,11 @@ [package] name = "sc-chain-spec-derive" -version = "2.0.0" +version = "2.0.0-dev" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" +homepage = "https://substrate.dev" +repository = "https://github.com/paritytech/substrate/" [lib] proc-macro = true diff --git a/client/cli/Cargo.toml b/client/cli/Cargo.toml index 66b0a9a9b8..30c749ff85 100644 --- a/client/cli/Cargo.toml +++ b/client/cli/Cargo.toml @@ -1,10 +1,12 @@ [package] name = "sc-cli" -version = "0.8.0" +version = "0.8.0-dev" authors = ["Parity Technologies "] description = "Substrate CLI interface." edition = "2018" license = "GPL-3.0" +homepage = "https://substrate.dev" +repository = "https://github.com/paritytech/substrate/" [dependencies] clap = "2.33.0" @@ -21,21 +23,21 @@ tokio = { version = "0.2.9", features = [ "signal", "rt-core", "rt-threaded" ] } futures = "0.3.1" fdlimit = "0.1.1" serde_json = "1.0.41" -sc-informant = { version = "0.8", path = "../informant" } -sp-panic-handler = { version = "2.0.0", path = "../../primitives/panic-handler" } -sc-client-api = { version = "2.0.0", path = "../api" } -sp-blockchain = { version = "2.0.0", path = "../../primitives/blockchain" } -sc-network = { version = "0.8", path = "../network" } -sp-runtime = { version = "2.0.0", path = "../../primitives/runtime" } -sp-core = { version = "2.0.0", path = "../../primitives/core" } -sc-service = { version = "0.8", default-features = false, path = "../service" } -sp-state-machine = { version = "0.8", path = "../../primitives/state-machine" } -sc-telemetry = { version = "2.0.0", path = "../telemetry" } -prometheus-exporter = { path = "../../utils/prometheus" } -sp-keyring = { version = "2.0.0", path = "../../primitives/keyring" } +sc-informant = { version = "0.8.0-dev", path = "../informant" } +sp-panic-handler = { version = "2.0.0-dev", path = "../../primitives/panic-handler" } +sc-client-api = { version = "2.0.0-dev", path = "../api" } +sp-blockchain = { version = "2.0.0-dev", path = "../../primitives/blockchain" } +sc-network = { version = "0.8.0-dev", path = "../network" } +sp-runtime = { version = "2.0.0-dev", path = "../../primitives/runtime" } +sp-core = { version = "2.0.0-dev", path = "../../primitives/core" } +sc-service = { version = "0.8.0-dev", default-features = false, path = "../service" } +sp-state-machine = { version = "0.8.0-dev", path = "../../primitives/state-machine" } +sc-telemetry = { version = "2.0.0-dev", path = "../telemetry" } +prometheus-exporter = { path = "../../utils/prometheus" , version = "0.8.0-dev"} +sp-keyring = { version = "2.0.0-dev", path = "../../primitives/keyring" } names = "0.11.0" structopt = "0.3.8" -sc-tracing = { version = "2.0.0", path = "../tracing" } +sc-tracing = { version = "2.0.0-dev", path = "../tracing" } chrono = "0.4.10" parity-util-mem = { version = "0.5.1", default-features = false, features = ["primitive-types"] } diff --git a/client/consensus/aura/Cargo.toml b/client/consensus/aura/Cargo.toml index e67f1e15a3..24c42fe0fc 100644 --- a/client/consensus/aura/Cargo.toml +++ b/client/consensus/aura/Cargo.toml @@ -1,43 +1,45 @@ [package] name = "sc-consensus-aura" -version = "0.8.0" +version = "0.8.0-dev" authors = ["Parity Technologies "] description = "Aura consensus algorithm for substrate" edition = "2018" license = "GPL-3.0" +homepage = "https://substrate.dev" +repository = "https://github.com/paritytech/substrate/" [dependencies] -sp-application-crypto = { version = "2.0.0", path = "../../../primitives/application-crypto" } -sp-consensus-aura = { version = "0.8", path = "../../../primitives/consensus/aura" } -sp-block-builder = { version = "2.0.0", path = "../../../primitives/block-builder" } -sc-client = { version = "0.8", path = "../../" } -sc-client-api = { version = "2.0.0", path = "../../api" } +sp-application-crypto = { version = "2.0.0-dev", path = "../../../primitives/application-crypto" } +sp-consensus-aura = { version = "0.8.0-dev", path = "../../../primitives/consensus/aura" } +sp-block-builder = { version = "2.0.0-dev", path = "../../../primitives/block-builder" } +sc-client = { version = "0.8.0-dev", path = "../../" } +sc-client-api = { version = "2.0.0-dev", path = "../../api" } codec = { package = "parity-scale-codec", version = "1.0.0" } -sp-consensus = { version = "0.8", path = "../../../primitives/consensus/common" } +sp-consensus = { version = "0.8.0-dev", path = "../../../primitives/consensus/common" } derive_more = "0.99.2" futures = "0.3.1" futures-timer = "3.0.1" -sp-inherents = { version = "2.0.0", path = "../../../primitives/inherents" } -sc-keystore = { version = "2.0.0", path = "../../keystore" } +sp-inherents = { version = "2.0.0-dev", path = "../../../primitives/inherents" } +sc-keystore = { version = "2.0.0-dev", path = "../../keystore" } log = "0.4.8" parking_lot = "0.10.0" -sp-core = { version = "2.0.0", path = "../../../primitives/core" } -sp-blockchain = { version = "2.0.0", path = "../../../primitives/blockchain" } -sp-io = { version = "2.0.0", path = "../../../primitives/io" } -sp-version = { version = "2.0.0", path = "../../../primitives/version" } -sc-consensus-slots = { version = "0.8", path = "../slots" } -sp-api = { version = "2.0.0", path = "../../../primitives/api" } -sp-runtime = { version = "2.0.0", path = "../../../primitives/runtime" } -sp-timestamp = { version = "2.0.0", path = "../../../primitives/timestamp" } -sc-telemetry = { version = "2.0.0", path = "../../telemetry" } +sp-core = { version = "2.0.0-dev", path = "../../../primitives/core" } +sp-blockchain = { version = "2.0.0-dev", path = "../../../primitives/blockchain" } +sp-io = { version = "2.0.0-dev", path = "../../../primitives/io" } +sp-version = { version = "2.0.0-dev", path = "../../../primitives/version" } +sc-consensus-slots = { version = "0.8.0-dev", path = "../slots" } +sp-api = { version = "2.0.0-dev", path = "../../../primitives/api" } +sp-runtime = { version = "2.0.0-dev", path = "../../../primitives/runtime" } +sp-timestamp = { version = "2.0.0-dev", path = "../../../primitives/timestamp" } +sc-telemetry = { version = "2.0.0-dev", path = "../../telemetry" } [dev-dependencies] -sp-keyring = { version = "2.0.0", path = "../../../primitives/keyring" } -sc-executor = { version = "0.8", path = "../../executor" } -sc-network = { version = "0.8", path = "../../network" } -sc-network-test = { version = "0.8.0", path = "../../network/test" } -sc-service = { version = "0.8", path = "../../service" } -substrate-test-runtime-client = { version = "2.0.0", path = "../../../test-utils/runtime/client" } +sp-keyring = { version = "2.0.0-dev", path = "../../../primitives/keyring" } +sc-executor = { version = "0.8.0-dev", path = "../../executor" } +sc-network = { version = "0.8.0-dev", path = "../../network" } +sc-network-test = { version = "0.8.0-dev", path = "../../network/test" } +sc-service = { version = "0.8.0-dev", path = "../../service" } +substrate-test-runtime-client = { version = "2.0.0-dev", path = "../../../test-utils/runtime/client" } tokio = "0.1.22" env_logger = "0.7.0" tempfile = "3.1.0" diff --git a/client/consensus/babe/Cargo.toml b/client/consensus/babe/Cargo.toml index 3f5487885f..2e11d741dc 100644 --- a/client/consensus/babe/Cargo.toml +++ b/client/consensus/babe/Cargo.toml @@ -1,37 +1,39 @@ [package] name = "sc-consensus-babe" -version = "0.8.0" +version = "0.8.0-dev" authors = ["Parity Technologies "] description = "BABE consensus algorithm for substrate" edition = "2018" license = "GPL-3.0" +homepage = "https://substrate.dev" +repository = "https://github.com/paritytech/substrate/" [dependencies] codec = { package = "parity-scale-codec", version = "1.0.0", features = ["derive"] } -sp-consensus-babe = { version = "0.8", path = "../../../primitives/consensus/babe" } -sp-core = { version = "2.0.0", path = "../../../primitives/core" } -sp-application-crypto = { version = "2.0.0", path = "../../../primitives/application-crypto" } +sp-consensus-babe = { version = "0.8.0-dev", path = "../../../primitives/consensus/babe" } +sp-core = { version = "2.0.0-dev", path = "../../../primitives/core" } +sp-application-crypto = { version = "2.0.0-dev", path = "../../../primitives/application-crypto" } num-bigint = "0.2.3" num-rational = "0.2.2" num-traits = "0.2.8" serde = { version = "1.0.104", features = ["derive"] } -sp-version = { version = "2.0.0", path = "../../../primitives/version" } -sp-io = { version = "2.0.0", path = "../../../primitives/io" } -sp-inherents = { version = "2.0.0", path = "../../../primitives/inherents" } -sp-timestamp = { version = "2.0.0", path = "../../../primitives/timestamp" } -sc-telemetry = { version = "2.0.0", path = "../../telemetry" } -sc-keystore = { version = "2.0.0", path = "../../keystore" } -sc-client-api = { version = "2.0.0", path = "../../api" } -sc-client = { version = "0.8", path = "../../" } -sc-consensus-epochs = { version = "0.8", path = "../epochs" } -sp-api = { version = "2.0.0", path = "../../../primitives/api" } -sp-block-builder = { version = "2.0.0", path = "../../../primitives/block-builder" } -sp-blockchain = { version = "2.0.0", path = "../../../primitives/blockchain" } -sp-consensus = { version = "0.8", path = "../../../primitives/consensus/common" } -sc-consensus-uncles = { version = "0.8", path = "../uncles" } -sc-consensus-slots = { version = "0.8", path = "../slots" } -sp-runtime = { version = "2.0.0", path = "../../../primitives/runtime" } -fork-tree = { version = "2.0.0", path = "../../../utils/fork-tree" } +sp-version = { version = "2.0.0-dev", path = "../../../primitives/version" } +sp-io = { version = "2.0.0-dev", path = "../../../primitives/io" } +sp-inherents = { version = "2.0.0-dev", path = "../../../primitives/inherents" } +sp-timestamp = { version = "2.0.0-dev", path = "../../../primitives/timestamp" } +sc-telemetry = { version = "2.0.0-dev", path = "../../telemetry" } +sc-keystore = { version = "2.0.0-dev", path = "../../keystore" } +sc-client-api = { version = "2.0.0-dev", path = "../../api" } +sc-client = { version = "0.8.0-dev", path = "../../" } +sc-consensus-epochs = { version = "0.8.0-dev", path = "../epochs" } +sp-api = { version = "2.0.0-dev", path = "../../../primitives/api" } +sp-block-builder = { version = "2.0.0-dev", path = "../../../primitives/block-builder" } +sp-blockchain = { version = "2.0.0-dev", path = "../../../primitives/blockchain" } +sp-consensus = { version = "0.8.0-dev", path = "../../../primitives/consensus/common" } +sc-consensus-uncles = { version = "0.8.0-dev", path = "../uncles" } +sc-consensus-slots = { version = "0.8.0-dev", path = "../slots" } +sp-runtime = { version = "2.0.0-dev", path = "../../../primitives/runtime" } +fork-tree = { version = "2.0.0-dev", path = "../../../utils/fork-tree" } futures = "0.3.1" futures-timer = "3.0.1" parking_lot = "0.10.0" @@ -43,13 +45,13 @@ pdqselect = "0.1.0" derive_more = "0.99.2" [dev-dependencies] -sp-keyring = { version = "2.0.0", path = "../../../primitives/keyring" } -sc-executor = { version = "0.8", path = "../../executor" } -sc-network = { version = "0.8", path = "../../network" } -sc-network-test = { version = "0.8.0", path = "../../network/test" } -sc-service = { version = "0.8", path = "../../service" } -substrate-test-runtime-client = { version = "2.0.0", path = "../../../test-utils/runtime/client" } -sc-block-builder = { version = "0.8", path = "../../block-builder" } +sp-keyring = { version = "2.0.0-dev", path = "../../../primitives/keyring" } +sc-executor = { version = "0.8.0-dev", path = "../../executor" } +sc-network = { version = "0.8.0-dev", path = "../../network" } +sc-network-test = { version = "0.8.0-dev", path = "../../network/test" } +sc-service = { version = "0.8.0-dev", path = "../../service" } +substrate-test-runtime-client = { version = "2.0.0-dev", path = "../../../test-utils/runtime/client" } +sc-block-builder = { version = "0.8.0-dev", path = "../../block-builder" } tokio = "0.1.22" env_logger = "0.7.0" tempfile = "3.1.0" diff --git a/client/consensus/babe/rpc/Cargo.toml b/client/consensus/babe/rpc/Cargo.toml index 3fd0e924af..524b90046d 100644 --- a/client/consensus/babe/rpc/Cargo.toml +++ b/client/consensus/babe/rpc/Cargo.toml @@ -1,30 +1,32 @@ [package] name = "sc-consensus-babe-rpc" -version = "0.8.0" +version = "0.8.0-dev" authors = ["Parity Technologies "] description = "RPC extensions for the BABE consensus algorithm" edition = "2018" license = "GPL-3.0" +homepage = "https://substrate.dev" +repository = "https://github.com/paritytech/substrate/" [dependencies] -sc-consensus-babe = { version = "0.8.0", path = "../" } +sc-consensus-babe = { version = "0.8.0-dev", path = "../" } jsonrpc-core = "14.0.3" jsonrpc-core-client = "14.0.3" jsonrpc-derive = "14.0.3" -sp-consensus-babe = { version = "0.8", path = "../../../../primitives/consensus/babe" } +sp-consensus-babe = { version = "0.8.0-dev", path = "../../../../primitives/consensus/babe" } serde = { version = "1.0.104", features=["derive"] } -sp-blockchain = { version = "2.0.0", path = "../../../../primitives/blockchain" } -sp-runtime = { version = "2.0.0", path = "../../../../primitives/runtime" } -sc-consensus-epochs = { version = "0.8", path = "../../epochs" } +sp-blockchain = { version = "2.0.0-dev", path = "../../../../primitives/blockchain" } +sp-runtime = { version = "2.0.0-dev", path = "../../../../primitives/runtime" } +sc-consensus-epochs = { version = "0.8.0-dev", path = "../../epochs" } futures = "0.3.1" derive_more = "0.99.2" -sp-api = { version = "2.0.0", path = "../../../../primitives/api" } -sp-consensus = { version = "0.8", path = "../../../../primitives/consensus/common" } -sp-core = { version = "2.0.0", path = "../../../../primitives/core" } -sc-keystore = { version = "2.0.0", path = "../../../keystore" } +sp-api = { version = "2.0.0-dev", path = "../../../../primitives/api" } +sp-consensus = { version = "0.8.0-dev", path = "../../../../primitives/consensus/common" } +sp-core = { version = "2.0.0-dev", path = "../../../../primitives/core" } +sc-keystore = { version = "2.0.0-dev", path = "../../../keystore" } [dev-dependencies] -substrate-test-runtime-client = { version = "2.0.0", path = "../../../../test-utils/runtime/client" } -sp-application-crypto = { version = "2.0.0", path = "../../../../primitives/application-crypto" } -sp-keyring = { version = "2.0.0", path = "../../../../primitives/keyring" } +substrate-test-runtime-client = { version = "2.0.0-dev", path = "../../../../test-utils/runtime/client" } +sp-application-crypto = { version = "2.0.0-dev", path = "../../../../primitives/application-crypto" } +sp-keyring = { version = "2.0.0-dev", path = "../../../../primitives/keyring" } tempfile = "3.1.0" diff --git a/client/consensus/epochs/Cargo.toml b/client/consensus/epochs/Cargo.toml index e08553a241..26dc2062b8 100644 --- a/client/consensus/epochs/Cargo.toml +++ b/client/consensus/epochs/Cargo.toml @@ -1,14 +1,17 @@ [package] name = "sc-consensus-epochs" -version = "0.8.0" +version = "0.8.0-dev" authors = ["Parity Technologies "] description = "Generic epochs-based utilities for consensus" edition = "2018" +license = "GPL-3.0" +homepage = "https://substrate.dev" +repository = "https://github.com/paritytech/substrate/" [dependencies] codec = { package = "parity-scale-codec", version = "1.0.0", features = ["derive"] } parking_lot = "0.10.0" -fork-tree = { version = "2.0.0", path = "../../../utils/fork-tree" } -sp-runtime = { path = "../../../primitives/runtime" } -sp-blockchain = { version = "2.0.0", path = "../../../primitives/blockchain" } -sc-client-api = { path = "../../api" } +fork-tree = { version = "2.0.0-dev", path = "../../../utils/fork-tree" } +sp-runtime = { path = "../../../primitives/runtime" , version = "2.0.0-dev"} +sp-blockchain = { version = "2.0.0-dev", path = "../../../primitives/blockchain" } +sc-client-api = { path = "../../api" , version = "2.0.0-dev"} diff --git a/client/consensus/manual-seal/Cargo.toml b/client/consensus/manual-seal/Cargo.toml index 71c1f6e558..25650f3300 100644 --- a/client/consensus/manual-seal/Cargo.toml +++ b/client/consensus/manual-seal/Cargo.toml @@ -1,10 +1,12 @@ [package] name = "sc-consensus-manual-seal" -version = "0.8.0" +version = "0.8.0-dev" authors = ["Parity Technologies "] description = "Manual sealing engine for Substrate" edition = "2018" license = "GPL-3.0" +homepage = "https://substrate.dev" +repository = "https://github.com/paritytech/substrate/" [dependencies] derive_more = "0.99.2" @@ -16,19 +18,19 @@ log = "0.4.8" parking_lot = "0.10.0" serde = { version = "1.0", features=["derive"] } -sc-client = { path = "../../../client" } -sc-client-api = { path = "../../../client/api" } -sc-transaction-pool = { path = "../../transaction-pool" } -sp-blockchain = { path = "../../../primitives/blockchain" } -sp-consensus = { package = "sp-consensus", path = "../../../primitives/consensus/common" } -sp-inherents = { path = "../../../primitives/inherents" } -sp-runtime = { path = "../../../primitives/runtime" } -sp-transaction-pool = { path = "../../../primitives/transaction-pool" } +sc-client = { path = "../../../client" , version = "0.8.0-dev"} +sc-client-api = { path = "../../../client/api" , version = "2.0.0-dev"} +sc-transaction-pool = { path = "../../transaction-pool" , version = "2.0.0-dev"} +sp-blockchain = { path = "../../../primitives/blockchain" , version = "2.0.0-dev"} +sp-consensus = { package = "sp-consensus", path = "../../../primitives/consensus/common" , version = "0.8.0-dev"} +sp-inherents = { path = "../../../primitives/inherents" , version = "2.0.0-dev"} +sp-runtime = { path = "../../../primitives/runtime" , version = "2.0.0-dev"} +sp-transaction-pool = { path = "../../../primitives/transaction-pool" , version = "2.0.0-dev"} [dev-dependencies] -sc-basic-authorship = { path = "../../basic-authorship" } -substrate-test-runtime-client = { path = "../../../test-utils/runtime/client" } -substrate-test-runtime-transaction-pool = { path = "../../../test-utils/runtime/transaction-pool" } +sc-basic-authorship = { path = "../../basic-authorship" , version = "0.8.0-dev"} +substrate-test-runtime-client = { path = "../../../test-utils/runtime/client" , version = "2.0.0-dev"} +substrate-test-runtime-transaction-pool = { path = "../../../test-utils/runtime/transaction-pool" , version = "2.0.0-dev"} tokio = { version = "0.2", features = ["rt-core", "macros"] } env_logger = "0.7.0" tempfile = "3.1.0" diff --git a/client/consensus/pow/Cargo.toml b/client/consensus/pow/Cargo.toml index b31d9406e1..b700b52ab0 100644 --- a/client/consensus/pow/Cargo.toml +++ b/client/consensus/pow/Cargo.toml @@ -1,23 +1,25 @@ [package] name = "sc-consensus-pow" -version = "0.8.0" +version = "0.8.0-dev" authors = ["Parity Technologies "] description = "PoW consensus algorithm for substrate" edition = "2018" license = "GPL-3.0" +homepage = "https://substrate.dev" +repository = "https://github.com/paritytech/substrate/" [dependencies] codec = { package = "parity-scale-codec", version = "1.0.0", features = ["derive"] } -sp-core = { version = "2.0.0", path = "../../../primitives/core" } -sp-blockchain = { version = "2.0.0", path = "../../../primitives/blockchain" } -sp-runtime = { version = "2.0.0", path = "../../../primitives/runtime" } -sp-api = { version = "2.0.0", path = "../../../primitives/api" } -sc-client-api = { version = "2.0.0", path = "../../api" } -sp-block-builder = { version = "2.0.0", path = "../../../primitives/block-builder" } -sp-inherents = { version = "2.0.0", path = "../../../primitives/inherents" } -sp-consensus-pow = { version = "0.8", path = "../../../primitives/consensus/pow" } -sp-consensus = { version = "0.8", path = "../../../primitives/consensus/common" } +sp-core = { version = "2.0.0-dev", path = "../../../primitives/core" } +sp-blockchain = { version = "2.0.0-dev", path = "../../../primitives/blockchain" } +sp-runtime = { version = "2.0.0-dev", path = "../../../primitives/runtime" } +sp-api = { version = "2.0.0-dev", path = "../../../primitives/api" } +sc-client-api = { version = "2.0.0-dev", path = "../../api" } +sp-block-builder = { version = "2.0.0-dev", path = "../../../primitives/block-builder" } +sp-inherents = { version = "2.0.0-dev", path = "../../../primitives/inherents" } +sp-consensus-pow = { version = "0.8.0-dev", path = "../../../primitives/consensus/pow" } +sp-consensus = { version = "0.8.0-dev", path = "../../../primitives/consensus/common" } log = "0.4.8" futures = { version = "0.3.1", features = ["compat"] } -sp-timestamp = { version = "2.0.0", path = "../../../primitives/timestamp" } +sp-timestamp = { version = "2.0.0-dev", path = "../../../primitives/timestamp" } derive_more = "0.99.2" diff --git a/client/consensus/slots/Cargo.toml b/client/consensus/slots/Cargo.toml index 67de0a54ed..9a75972f58 100644 --- a/client/consensus/slots/Cargo.toml +++ b/client/consensus/slots/Cargo.toml @@ -1,27 +1,29 @@ [package] name = "sc-consensus-slots" -version = "0.8.0" +version = "0.8.0-dev" authors = ["Parity Technologies "] description = "Generic slots-based utilities for consensus" edition = "2018" build = "build.rs" license = "GPL-3.0" +homepage = "https://substrate.dev" +repository = "https://github.com/paritytech/substrate/" [dependencies] codec = { package = "parity-scale-codec", version = "1.0.0" } -sc-client-api = { version = "2.0.0", path = "../../api" } -sp-core = { version = "2.0.0", path = "../../../primitives/core" } -sp-blockchain = { version = "2.0.0", path = "../../../primitives/blockchain" } -sp-runtime = { version = "2.0.0", path = "../../../primitives/runtime" } -sp-state-machine = { version = "0.8.0", path = "../../../primitives/state-machine" } -sp-api = { version = "2.0.0", path = "../../../primitives/api" } -sc-telemetry = { version = "2.0.0", path = "../../telemetry" } -sp-consensus = { version = "0.8", path = "../../../primitives/consensus/common" } -sp-inherents = { version = "2.0.0", path = "../../../primitives/inherents" } +sc-client-api = { version = "2.0.0-dev", path = "../../api" } +sp-core = { version = "2.0.0-dev", path = "../../../primitives/core" } +sp-blockchain = { version = "2.0.0-dev", path = "../../../primitives/blockchain" } +sp-runtime = { version = "2.0.0-dev", path = "../../../primitives/runtime" } +sp-state-machine = { version = "0.8.0-dev", path = "../../../primitives/state-machine" } +sp-api = { version = "2.0.0-dev", path = "../../../primitives/api" } +sc-telemetry = { version = "2.0.0-dev", path = "../../telemetry" } +sp-consensus = { version = "0.8.0-dev", path = "../../../primitives/consensus/common" } +sp-inherents = { version = "2.0.0-dev", path = "../../../primitives/inherents" } futures = "0.3.1" futures-timer = "3.0.1" parking_lot = "0.10.0" log = "0.4.8" [dev-dependencies] -substrate-test-runtime-client = { version = "2.0.0", path = "../../../test-utils/runtime/client" } +substrate-test-runtime-client = { version = "2.0.0-dev", path = "../../../test-utils/runtime/client" } diff --git a/client/consensus/uncles/Cargo.toml b/client/consensus/uncles/Cargo.toml index f336564c4e..ad9ac53842 100644 --- a/client/consensus/uncles/Cargo.toml +++ b/client/consensus/uncles/Cargo.toml @@ -1,16 +1,18 @@ [package] name = "sc-consensus-uncles" -version = "0.8.0" +version = "0.8.0-dev" authors = ["Parity Technologies "] description = "Generic uncle inclusion utilities for consensus" edition = "2018" license = "GPL-3.0" +homepage = "https://substrate.dev" +repository = "https://github.com/paritytech/substrate/" [dependencies] -sc-client-api = { version = "2.0.0", path = "../../api" } -sp-core = { version = "2.0.0", path = "../../../primitives/core" } -sp-runtime = { version = "2.0.0", path = "../../../primitives/runtime" } -sp-authorship = { version = "2.0.0", path = "../../../primitives/authorship" } -sp-consensus = { version = "0.8", path = "../../../primitives/consensus/common" } -sp-inherents = { version = "2.0.0", path = "../../../primitives/inherents" } +sc-client-api = { version = "2.0.0-dev", path = "../../api" } +sp-core = { version = "2.0.0-dev", path = "../../../primitives/core" } +sp-runtime = { version = "2.0.0-dev", path = "../../../primitives/runtime" } +sp-authorship = { version = "2.0.0-dev", path = "../../../primitives/authorship" } +sp-consensus = { version = "0.8.0-dev", path = "../../../primitives/consensus/common" } +sp-inherents = { version = "2.0.0-dev", path = "../../../primitives/inherents" } log = "0.4.8" diff --git a/client/db/Cargo.toml b/client/db/Cargo.toml index ef418d43ef..c2e27ae7e6 100644 --- a/client/db/Cargo.toml +++ b/client/db/Cargo.toml @@ -1,9 +1,11 @@ [package] name = "sc-client-db" -version = "0.8.0" +version = "0.8.0-dev" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" +homepage = "https://substrate.dev" +repository = "https://github.com/paritytech/substrate/" [dependencies] parking_lot = "0.10.0" @@ -17,20 +19,20 @@ hash-db = "0.15.2" parity-util-mem = { version = "0.5.1", default-features = false, features = ["std"] } codec = { package = "parity-scale-codec", version = "1.0.0", features = ["derive"] } -sc-client-api = { version = "2.0.0", path = "../api" } -sp-core = { version = "2.0.0", path = "../../primitives/core" } -sp-runtime = { version = "2.0.0", path = "../../primitives/runtime" } -sc-client = { version = "0.8", path = "../" } -sp-state-machine = { version = "0.8", path = "../../primitives/state-machine" } -sc-executor = { version = "0.8", path = "../executor" } -sc-state-db = { version = "0.8", path = "../state-db" } -sp-trie = { version = "2.0.0", path = "../../primitives/trie" } -sp-consensus = { version = "0.8", path = "../../primitives/consensus/common" } -sp-blockchain = { version = "2.0.0", path = "../../primitives/blockchain" } +sc-client-api = { version = "2.0.0-dev", path = "../api" } +sp-core = { version = "2.0.0-dev", path = "../../primitives/core" } +sp-runtime = { version = "2.0.0-dev", path = "../../primitives/runtime" } +sc-client = { version = "0.8.0-dev", path = "../" } +sp-state-machine = { version = "0.8.0-dev", path = "../../primitives/state-machine" } +sc-executor = { version = "0.8.0-dev", path = "../executor" } +sc-state-db = { version = "0.8.0-dev", path = "../state-db" } +sp-trie = { version = "2.0.0-dev", path = "../../primitives/trie" } +sp-consensus = { version = "0.8.0-dev", path = "../../primitives/consensus/common" } +sp-blockchain = { version = "2.0.0-dev", path = "../../primitives/blockchain" } [dev-dependencies] -sp-keyring = { version = "2.0.0", path = "../../primitives/keyring" } -substrate-test-runtime-client = { version = "2.0.0", path = "../../test-utils/runtime/client" } +sp-keyring = { version = "2.0.0-dev", path = "../../primitives/keyring" } +substrate-test-runtime-client = { version = "2.0.0-dev", path = "../../test-utils/runtime/client" } env_logger = "0.7.0" quickcheck = "0.9" kvdb-rocksdb = "0.5" diff --git a/client/executor/Cargo.toml b/client/executor/Cargo.toml index c8774470fe..f98cbf97e0 100644 --- a/client/executor/Cargo.toml +++ b/client/executor/Cargo.toml @@ -1,28 +1,30 @@ [package] name = "sc-executor" -version = "0.8.0" +version = "0.8.0-dev" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" +homepage = "https://substrate.dev" +repository = "https://github.com/paritytech/substrate/" [dependencies] derive_more = "0.99.2" codec = { package = "parity-scale-codec", version = "1.0.0" } -sp-io = { version = "2.0.0", path = "../../primitives/io" } -sp-core = { version = "2.0.0", path = "../../primitives/core" } -sp-trie = { version = "2.0.0", path = "../../primitives/trie" } -sp-serializer = { version = "2.0.0", path = "../../primitives/serializer" } -sp-version = { version = "2.0.0", path = "../../primitives/version" } -sp-panic-handler = { version = "2.0.0", path = "../../primitives/panic-handler" } +sp-io = { version = "2.0.0-dev", path = "../../primitives/io" } +sp-core = { version = "2.0.0-dev", path = "../../primitives/core" } +sp-trie = { version = "2.0.0-dev", path = "../../primitives/trie" } +sp-serializer = { version = "2.0.0-dev", path = "../../primitives/serializer" } +sp-version = { version = "2.0.0-dev", path = "../../primitives/version" } +sp-panic-handler = { version = "2.0.0-dev", path = "../../primitives/panic-handler" } wasmi = "0.6.2" parity-wasm = "0.41.0" lazy_static = "1.4.0" -sp-wasm-interface = { version = "2.0.0", path = "../../primitives/wasm-interface" } -sp-runtime-interface = { version = "2.0.0", path = "../../primitives/runtime-interface" } -sp-externalities = { version = "0.8.0", path = "../../primitives/externalities" } -sc-executor-common = { version = "0.8", path = "common" } -sc-executor-wasmi = { version = "0.8", path = "wasmi" } -sc-executor-wasmtime = { version = "0.8", path = "wasmtime", optional = true } +sp-wasm-interface = { version = "2.0.0-dev", path = "../../primitives/wasm-interface" } +sp-runtime-interface = { version = "2.0.0-dev", path = "../../primitives/runtime-interface" } +sp-externalities = { version = "0.8.0-dev", path = "../../primitives/externalities" } +sc-executor-common = { version = "0.8.0-dev", path = "common" } +sc-executor-wasmi = { version = "0.8.0-dev", path = "wasmi" } +sc-executor-wasmtime = { version = "0.8.0-dev", path = "wasmtime", optional = true } parking_lot = "0.10.0" log = "0.4.8" libsecp256k1 = "0.3.4" @@ -31,9 +33,9 @@ libsecp256k1 = "0.3.4" assert_matches = "1.3.0" wabt = "0.9.2" hex-literal = "0.2.1" -sc-runtime-test = { version = "2.0.0", path = "runtime-test" } -substrate-test-runtime = { version = "2.0.0", path = "../../test-utils/runtime" } -sp-state-machine = { version = "0.8", path = "../../primitives/state-machine" } +sc-runtime-test = { version = "2.0.0-dev", path = "runtime-test" } +substrate-test-runtime = { version = "2.0.0-dev", path = "../../test-utils/runtime" } +sp-state-machine = { version = "0.8.0-dev", path = "../../primitives/state-machine" } test-case = "0.3.3" [features] diff --git a/client/executor/common/Cargo.toml b/client/executor/common/Cargo.toml index e10afe3448..fd3645719c 100644 --- a/client/executor/common/Cargo.toml +++ b/client/executor/common/Cargo.toml @@ -1,20 +1,22 @@ [package] name = "sc-executor-common" -version = "0.8.0" +version = "0.8.0-dev" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" +homepage = "https://substrate.dev" +repository = "https://github.com/paritytech/substrate/" [dependencies] log = "0.4.8" derive_more = "0.99.2" codec = { package = "parity-scale-codec", version = "1.0.0" } wasmi = "0.6.2" -sp-core = { version = "2.0.0", path = "../../../primitives/core" } -sp-allocator = { version = "2.0.0", path = "../../../primitives/allocator" } -sp-wasm-interface = { version = "2.0.0", path = "../../../primitives/wasm-interface" } -sp-runtime-interface = { version = "2.0.0", path = "../../../primitives/runtime-interface" } -sp-serializer = { version = "2.0.0", path = "../../../primitives/serializer" } +sp-core = { version = "2.0.0-dev", path = "../../../primitives/core" } +sp-allocator = { version = "2.0.0-dev", path = "../../../primitives/allocator" } +sp-wasm-interface = { version = "2.0.0-dev", path = "../../../primitives/wasm-interface" } +sp-runtime-interface = { version = "2.0.0-dev", path = "../../../primitives/runtime-interface" } +sp-serializer = { version = "2.0.0-dev", path = "../../../primitives/serializer" } [features] default = [] diff --git a/client/executor/runtime-test/Cargo.toml b/client/executor/runtime-test/Cargo.toml index 3cb0c03a87..b677dcd07d 100644 --- a/client/executor/runtime-test/Cargo.toml +++ b/client/executor/runtime-test/Cargo.toml @@ -1,21 +1,24 @@ [package] name = "sc-runtime-test" -version = "2.0.0" +version = "2.0.0-dev" authors = ["Parity Technologies "] edition = "2018" build = "build.rs" license = "GPL-3.0" +publish = false +homepage = "https://substrate.dev" +repository = "https://github.com/paritytech/substrate/" [dependencies] -sp-std = { version = "2.0.0", default-features = false, path = "../../../primitives/std" } -sp-io = { version = "2.0.0", default-features = false, path = "../../../primitives/io" } -sp-sandbox = { version = "0.8.0", default-features = false, path = "../../../primitives/sandbox" } -sp-core = { version = "2.0.0", default-features = false, path = "../../../primitives/core" } -sp-runtime = { version = "2.0.0", default-features = false, path = "../../../primitives/runtime" } -sp-allocator = { version = "2.0.0", default-features = false, path = "../../../primitives/allocator" } +sp-std = { version = "2.0.0-dev", default-features = false, path = "../../../primitives/std" } +sp-io = { version = "2.0.0-dev", default-features = false, path = "../../../primitives/io" } +sp-sandbox = { version = "0.8.0-dev", default-features = false, path = "../../../primitives/sandbox" } +sp-core = { version = "2.0.0-dev", default-features = false, path = "../../../primitives/core" } +sp-runtime = { version = "2.0.0-dev", default-features = false, path = "../../../primitives/runtime" } +sp-allocator = { version = "2.0.0-dev", default-features = false, path = "../../../primitives/allocator" } [build-dependencies] -wasm-builder-runner = { version = "1.0.4", package = "substrate-wasm-builder-runner", path = "../../../utils/wasm-builder-runner" } +wasm-builder-runner = { version = "1.0.5", package = "substrate-wasm-builder-runner", path = "../../../utils/wasm-builder-runner" } [features] default = [ "std" ] diff --git a/client/executor/wasmi/Cargo.toml b/client/executor/wasmi/Cargo.toml index 9e968fdc68..6c8ba4c747 100644 --- a/client/executor/wasmi/Cargo.toml +++ b/client/executor/wasmi/Cargo.toml @@ -1,17 +1,19 @@ [package] name = "sc-executor-wasmi" -version = "0.8.0" +version = "0.8.0-dev" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" +homepage = "https://substrate.dev" +repository = "https://github.com/paritytech/substrate/" [dependencies] log = "0.4.8" wasmi = "0.6.2" parity-wasm = "0.41.0" codec = { package = "parity-scale-codec", version = "1.0.0" } -sc-executor-common = { version = "0.8", path = "../common" } -sp-wasm-interface = { version = "2.0.0", path = "../../../primitives/wasm-interface" } -sp-runtime-interface = { version = "2.0.0", path = "../../../primitives/runtime-interface" } -sp-core = { version = "2.0.0", path = "../../../primitives/core" } -sp-allocator = { version = "2.0.0", path = "../../../primitives/allocator" } +sc-executor-common = { version = "0.8.0-dev", path = "../common" } +sp-wasm-interface = { version = "2.0.0-dev", path = "../../../primitives/wasm-interface" } +sp-runtime-interface = { version = "2.0.0-dev", path = "../../../primitives/runtime-interface" } +sp-core = { version = "2.0.0-dev", path = "../../../primitives/core" } +sp-allocator = { version = "2.0.0-dev", path = "../../../primitives/allocator" } diff --git a/client/executor/wasmtime/Cargo.toml b/client/executor/wasmtime/Cargo.toml index eb41adb271..cd7e5dead9 100644 --- a/client/executor/wasmtime/Cargo.toml +++ b/client/executor/wasmtime/Cargo.toml @@ -1,20 +1,22 @@ [package] name = "sc-executor-wasmtime" -version = "0.8.0" +version = "0.8.0-dev" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" +homepage = "https://substrate.dev" +repository = "https://github.com/paritytech/substrate/" [dependencies] log = "0.4.8" wasmi = "0.6.2" parity-wasm = "0.41.0" codec = { package = "parity-scale-codec", version = "1.0.0" } -sc-executor-common = { version = "0.8", path = "../common" } -sp-wasm-interface = { version = "2.0.0", path = "../../../primitives/wasm-interface" } -sp-runtime-interface = { version = "2.0.0", path = "../../../primitives/runtime-interface" } -sp-core = { version = "2.0.0", path = "../../../primitives/core" } -sp-allocator = { version = "2.0.0", path = "../../../primitives/allocator" } +sc-executor-common = { version = "0.8.0-dev", path = "../common" } +sp-wasm-interface = { version = "2.0.0-dev", path = "../../../primitives/wasm-interface" } +sp-runtime-interface = { version = "2.0.0-dev", path = "../../../primitives/runtime-interface" } +sp-core = { version = "2.0.0-dev", path = "../../../primitives/core" } +sp-allocator = { version = "2.0.0-dev", path = "../../../primitives/allocator" } wasmtime = "0.11" diff --git a/client/finality-grandpa/Cargo.toml b/client/finality-grandpa/Cargo.toml index e96792258a..46dd444cdf 100644 --- a/client/finality-grandpa/Cargo.toml +++ b/client/finality-grandpa/Cargo.toml @@ -1,12 +1,14 @@ [package] name = "sc-finality-grandpa" -version = "0.8.0" +version = "0.8.0-dev" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" +homepage = "https://substrate.dev" +repository = "https://github.com/paritytech/substrate/" [dependencies] -fork-tree = { version = "2.0.0", path = "../../utils/fork-tree" } +fork-tree = { version = "2.0.0-dev", path = "../../utils/fork-tree" } futures = "0.3.1" futures-timer = "3.0.1" log = "0.4.8" @@ -14,34 +16,34 @@ parking_lot = "0.10.0" rand = "0.7.2" assert_matches = "1.3.0" parity-scale-codec = { version = "1.0.0", features = ["derive"] } -sp-arithmetic = { version = "2.0.0", path = "../../primitives/arithmetic" } -sp-runtime = { version = "2.0.0", path = "../../primitives/runtime" } -sp-consensus = { version = "0.8", path = "../../primitives/consensus/common" } -sp-core = { version = "2.0.0", path = "../../primitives/core" } -sc-telemetry = { version = "2.0.0", path = "../telemetry" } -sc-keystore = { version = "2.0.0", path = "../keystore" } +sp-arithmetic = { version = "2.0.0-dev", path = "../../primitives/arithmetic" } +sp-runtime = { version = "2.0.0-dev", path = "../../primitives/runtime" } +sp-consensus = { version = "0.8.0-dev", path = "../../primitives/consensus/common" } +sp-core = { version = "2.0.0-dev", path = "../../primitives/core" } +sc-telemetry = { version = "2.0.0-dev", path = "../telemetry" } +sc-keystore = { version = "2.0.0-dev", path = "../keystore" } serde_json = "1.0.41" -sc-client-api = { version = "2.0.0", path = "../api" } -sc-client = { version = "0.8", path = "../" } -sp-inherents = { version = "2.0.0", path = "../../primitives/inherents" } -sp-blockchain = { version = "2.0.0", path = "../../primitives/blockchain" } -sc-network = { version = "0.8", path = "../network" } -sc-network-gossip = { version = "0.8", path = "../network-gossip" } -sp-finality-tracker = { version = "2.0.0", path = "../../primitives/finality-tracker" } -sp-finality-grandpa = { version = "2.0.0", path = "../../primitives/finality-grandpa" } +sc-client-api = { version = "2.0.0-dev", path = "../api" } +sc-client = { version = "0.8.0-dev", path = "../" } +sp-inherents = { version = "2.0.0-dev", path = "../../primitives/inherents" } +sp-blockchain = { version = "2.0.0-dev", path = "../../primitives/blockchain" } +sc-network = { version = "0.8.0-dev", path = "../network" } +sc-network-gossip = { version = "0.8.0-dev", path = "../network-gossip" } +sp-finality-tracker = { version = "2.0.0-dev", path = "../../primitives/finality-tracker" } +sp-finality-grandpa = { version = "2.0.0-dev", path = "../../primitives/finality-grandpa" } finality-grandpa = { version = "0.11.1", features = ["derive-codec"] } pin-project = "0.4.6" [dev-dependencies] finality-grandpa = { version = "0.11.1", features = ["derive-codec", "test-helpers"] } -sc-network = { version = "0.8", path = "../network" } -sc-network-test = { version = "0.8.0", path = "../network/test" } -sp-keyring = { version = "2.0.0", path = "../../primitives/keyring" } -substrate-test-runtime-client = { version = "2.0.0", path = "../../test-utils/runtime/client" } -sp-consensus-babe = { version = "0.8", path = "../../primitives/consensus/babe" } -sp-state-machine = { version = "0.8", path = "../../primitives/state-machine" } +sc-network = { version = "0.8.0-dev", path = "../network" } +sc-network-test = { version = "0.8.0-dev", path = "../network/test" } +sp-keyring = { version = "2.0.0-dev", path = "../../primitives/keyring" } +substrate-test-runtime-client = { version = "2.0.0-dev", path = "../../test-utils/runtime/client" } +sp-consensus-babe = { version = "0.8.0-dev", path = "../../primitives/consensus/babe" } +sp-state-machine = { version = "0.8.0-dev", path = "../../primitives/state-machine" } env_logger = "0.7.0" tokio = "0.1.22" tempfile = "3.1.0" -sp-api = { version = "2.0.0", path = "../../primitives/api" } +sp-api = { version = "2.0.0-dev", path = "../../primitives/api" } futures01 = { package = "futures", version = "0.1.29" } diff --git a/client/informant/Cargo.toml b/client/informant/Cargo.toml index 197f320889..f60abeee34 100644 --- a/client/informant/Cargo.toml +++ b/client/informant/Cargo.toml @@ -1,10 +1,12 @@ [package] name = "sc-informant" -version = "0.8.0" +version = "0.8.0-dev" authors = ["Parity Technologies "] description = "Substrate informant." edition = "2018" license = "GPL-3.0" +homepage = "https://substrate.dev" +repository = "https://github.com/paritytech/substrate/" [dependencies] ansi_term = "0.12.1" @@ -12,8 +14,8 @@ futures = "0.3.1" log = "0.4.8" parity-util-mem = { version = "0.5.1", default-features = false, features = ["primitive-types"] } wasm-timer = "0.2" -sc-client-api = { version = "2.0.0", path = "../api" } -sc-network = { version = "0.8", path = "../network" } -sc-service = { version = "0.8", default-features = false, path = "../service" } -sp-blockchain = { version = "2.0.0", path = "../../primitives/blockchain" } -sp-runtime = { version = "2.0.0", path = "../../primitives/runtime" } +sc-client-api = { version = "2.0.0-dev", path = "../api" } +sc-network = { version = "0.8.0-dev", path = "../network" } +sc-service = { version = "0.8.0-dev", default-features = false, path = "../service" } +sp-blockchain = { version = "2.0.0-dev", path = "../../primitives/blockchain" } +sp-runtime = { version = "2.0.0-dev", path = "../../primitives/runtime" } diff --git a/client/keystore/Cargo.toml b/client/keystore/Cargo.toml index 89ab787cb4..221449d34e 100644 --- a/client/keystore/Cargo.toml +++ b/client/keystore/Cargo.toml @@ -1,14 +1,16 @@ [package] name = "sc-keystore" -version = "2.0.0" +version = "2.0.0-dev" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" +homepage = "https://substrate.dev" +repository = "https://github.com/paritytech/substrate/" [dependencies] derive_more = "0.99.2" -sp-core = { version = "2.0.0", path = "../../primitives/core" } -sp-application-crypto = { version = "2.0.0", path = "../../primitives/application-crypto" } +sp-core = { version = "2.0.0-dev", path = "../../primitives/core" } +sp-application-crypto = { version = "2.0.0-dev", path = "../../primitives/application-crypto" } hex = "0.4.0" rand = "0.7.2" serde_json = "1.0.41" diff --git a/client/network-gossip/Cargo.toml b/client/network-gossip/Cargo.toml index 08b63151db..25b0548c84 100644 --- a/client/network-gossip/Cargo.toml +++ b/client/network-gossip/Cargo.toml @@ -1,10 +1,12 @@ [package] description = "Gossiping for the Substrate network protocol" name = "sc-network-gossip" -version = "0.8.0" +version = "0.8.0-dev" license = "GPL-3.0" authors = ["Parity Technologies "] edition = "2018" +homepage = "https://substrate.dev" +repository = "https://github.com/paritytech/substrate/" [dependencies] futures = "0.3.1" @@ -13,6 +15,6 @@ libp2p = { version = "0.16.1", default-features = false, features = ["libp2p-web log = "0.4.8" lru = "0.1.2" parking_lot = "0.10.0" -sc-network = { version = "0.8", path = "../network" } -sp-runtime = { version = "2.0.0", path = "../../primitives/runtime" } +sc-network = { version = "0.8.0-dev", path = "../network" } +sp-runtime = { version = "2.0.0-dev", path = "../../primitives/runtime" } wasm-timer = "0.2" diff --git a/client/network/Cargo.toml b/client/network/Cargo.toml index 4c2f2d0c31..48a6fee638 100644 --- a/client/network/Cargo.toml +++ b/client/network/Cargo.toml @@ -1,10 +1,12 @@ [package] description = "Substrate network protocol" name = "sc-network" -version = "0.8.0" +version = "0.8.0-dev" license = "GPL-3.0" authors = ["Parity Technologies "] edition = "2018" +homepage = "https://substrate.dev" +repository = "https://github.com/paritytech/substrate/" [build-dependencies] prost-build = "0.6.1" @@ -17,7 +19,7 @@ derive_more = "0.99.2" either = "1.5.3" erased-serde = "0.3.9" fnv = "1.0.6" -fork-tree = { version = "2.0.0", path = "../../utils/fork-tree" } +fork-tree = { version = "2.0.0-dev", path = "../../utils/fork-tree" } futures = "0.3.1" futures_codec = "0.3.3" futures-timer = "3.0.1" @@ -32,25 +34,25 @@ parking_lot = "0.10.0" prost = "0.6.1" rand = "0.7.2" rustc-hex = "2.0.1" -sc-block-builder = { version = "0.8", path = "../block-builder" } -sc-client = { version = "0.8", path = "../" } -sc-client-api = { version = "2.0.0", path = "../api" } -sc-peerset = { version = "2.0.0", path = "../peerset" } +sc-block-builder = { version = "0.8.0-dev", path = "../block-builder" } +sc-client = { version = "0.8.0-dev", path = "../" } +sc-client-api = { version = "2.0.0-dev", path = "../api" } +sc-peerset = { version = "2.0.0-dev", path = "../peerset" } pin-project = "0.4.6" serde = { version = "1.0.101", features = ["derive"] } serde_json = "1.0.41" slog = { version = "2.5.2", features = ["nested-values"] } slog_derive = "0.2.0" smallvec = "0.6.10" -sp-arithmetic = { version = "2.0.0", path = "../../primitives/arithmetic" } -sp-blockchain = { version = "2.0.0", path = "../../primitives/blockchain" } -sp-consensus = { version = "0.8", path = "../../primitives/consensus/common" } -sp-consensus-babe = { version = "0.8", path = "../../primitives/consensus/babe" } -sp-core = { version = "2.0.0", path = "../../primitives/core" } -sp-keyring = { version = "2.0.0", optional = true, path = "../../primitives/keyring" } -sp-runtime = { version = "2.0.0", path = "../../primitives/runtime" } -substrate-test-client = { version = "2.0.0", optional = true, path = "../../test-utils/client" } -substrate-test-runtime-client = { version = "2.0.0", optional = true, path = "../../test-utils/runtime/client" } +sp-arithmetic = { version = "2.0.0-dev", path = "../../primitives/arithmetic" } +sp-blockchain = { version = "2.0.0-dev", path = "../../primitives/blockchain" } +sp-consensus = { version = "0.8.0-dev", path = "../../primitives/consensus/common" } +sp-consensus-babe = { version = "0.8.0-dev", path = "../../primitives/consensus/babe" } +sp-core = { version = "2.0.0-dev", path = "../../primitives/core" } +sp-keyring = { version = "2.0.0-dev", optional = true, path = "../../primitives/keyring" } +sp-runtime = { version = "2.0.0-dev", path = "../../primitives/runtime" } +substrate-test-client = { version = "2.0.0-dev", optional = true, path = "../../test-utils/client" } +substrate-test-runtime-client = { version = "2.0.0-dev", optional = true, path = "../../test-utils/runtime/client" } thiserror = "1" unsigned-varint = { version = "0.3.1", features = ["futures", "futures-codec"] } void = "1.0.2" @@ -62,10 +64,10 @@ assert_matches = "1.3" env_logger = "0.7.0" quickcheck = "0.9.0" rand = "0.7.2" -sp-keyring = { version = "2.0.0", path = "../../primitives/keyring" } -sp-test-primitives = { version = "2.0.0", path = "../../primitives/test-primitives" } -substrate-test-runtime = { version = "2.0.0", path = "../../test-utils/runtime" } -substrate-test-runtime-client = { version = "2.0.0", path = "../../test-utils/runtime/client" } +sp-keyring = { version = "2.0.0-dev", path = "../../primitives/keyring" } +sp-test-primitives = { version = "2.0.0-dev", path = "../../primitives/test-primitives" } +substrate-test-runtime = { version = "2.0.0-dev", path = "../../test-utils/runtime" } +substrate-test-runtime-client = { version = "2.0.0-dev", path = "../../test-utils/runtime/client" } tempfile = "3.1.0" [features] diff --git a/client/network/test/Cargo.toml b/client/network/test/Cargo.toml index 54685bc00c..5f8a1b6d5e 100644 --- a/client/network/test/Cargo.toml +++ b/client/network/test/Cargo.toml @@ -1,13 +1,16 @@ [package] description = "Integration tests for Substrate network protocol" name = "sc-network-test" -version = "0.8.0" +version = "0.8.0-dev" license = "GPL-3.0" authors = ["Parity Technologies "] edition = "2018" +publish = false +homepage = "https://substrate.dev" +repository = "https://github.com/paritytech/substrate/" [dependencies] -sc-network = { version = "0.8", path = "../" } +sc-network = { version = "0.8.0-dev", path = "../" } log = "0.4.8" parking_lot = "0.10.0" futures = "0.1.29" @@ -15,16 +18,16 @@ futures03 = { package = "futures", version = "0.3.1", features = ["compat"] } futures-timer = "3.0.1" rand = "0.7.2" libp2p = { version = "0.16.1", default-features = false, features = ["libp2p-websocket"] } -sp-consensus = { version = "0.8", path = "../../../primitives/consensus/common" } -sc-client = { version = "0.8", path = "../../" } -sc-client-api = { version = "2.0.0", path = "../../api" } -sp-blockchain = { version = "2.0.0", path = "../../../primitives/blockchain" } -sp-runtime = { version = "2.0.0", path = "../../../primitives/runtime" } -sp-core = { version = "2.0.0", path = "../../../primitives/core" } -sc-block-builder = { version = "0.8", path = "../../block-builder" } -sp-consensus-babe = { version = "0.8", path = "../../../primitives/consensus/babe" } +sp-consensus = { version = "0.8.0-dev", path = "../../../primitives/consensus/common" } +sc-client = { version = "0.8.0-dev", path = "../../" } +sc-client-api = { version = "2.0.0-dev", path = "../../api" } +sp-blockchain = { version = "2.0.0-dev", path = "../../../primitives/blockchain" } +sp-runtime = { version = "2.0.0-dev", path = "../../../primitives/runtime" } +sp-core = { version = "2.0.0-dev", path = "../../../primitives/core" } +sc-block-builder = { version = "0.8.0-dev", path = "../../block-builder" } +sp-consensus-babe = { version = "0.8.0-dev", path = "../../../primitives/consensus/babe" } env_logger = "0.7.0" -substrate-test-runtime-client = { version = "2.0.0", path = "../../../test-utils/runtime/client" } -substrate-test-runtime = { version = "2.0.0", path = "../../../test-utils/runtime" } +substrate-test-runtime-client = { version = "2.0.0-dev", path = "../../../test-utils/runtime/client" } +substrate-test-runtime = { version = "2.0.0-dev", path = "../../../test-utils/runtime" } tempfile = "3.1.0" tokio = "0.1.22" diff --git a/client/offchain/Cargo.toml b/client/offchain/Cargo.toml index 29e6dca2a7..062f6cab56 100644 --- a/client/offchain/Cargo.toml +++ b/client/offchain/Cargo.toml @@ -1,41 +1,43 @@ [package] description = "Substrate offchain workers" name = "sc-offchain" -version = "2.0.0" +version = "2.0.0-dev" license = "GPL-3.0" authors = ["Parity Technologies "] edition = "2018" +homepage = "https://substrate.dev" +repository = "https://github.com/paritytech/substrate/" [dependencies] bytes = "0.5" -sc-client-api = { version = "2.0.0", path = "../api" } -sp-api = { version = "2.0.0", path = "../../primitives/api" } +sc-client-api = { version = "2.0.0-dev", path = "../api" } +sp-api = { version = "2.0.0-dev", path = "../../primitives/api" } fnv = "1.0.6" futures = "0.3.1" futures-timer = "3.0.1" log = "0.4.8" threadpool = "1.7" num_cpus = "1.10" -sp-offchain = { version = "2.0.0", path = "../../primitives/offchain" } +sp-offchain = { version = "2.0.0-dev", path = "../../primitives/offchain" } codec = { package = "parity-scale-codec", version = "1.0.0", features = ["derive"] } parking_lot = "0.10.0" -sp-core = { version = "2.0.0", path = "../../primitives/core" } +sp-core = { version = "2.0.0-dev", path = "../../primitives/core" } rand = "0.7.2" -sp-runtime = { version = "2.0.0", path = "../../primitives/runtime" } -sc-network = { version = "0.8", path = "../network" } -sc-keystore = { version = "2.0.0", path = "../keystore" } +sp-runtime = { version = "2.0.0-dev", path = "../../primitives/runtime" } +sc-network = { version = "0.8.0-dev", path = "../network" } +sc-keystore = { version = "2.0.0-dev", path = "../keystore" } [target.'cfg(not(target_os = "unknown"))'.dependencies] hyper = "0.13.2" hyper-rustls = "0.19" [dev-dependencies] -sc-client-db = { version = "0.8", default-features = true, path = "../db/" } +sc-client-db = { version = "0.8.0-dev", default-features = true, path = "../db/" } env_logger = "0.7.0" -substrate-test-runtime-client = { version = "2.0.0", path = "../../test-utils/runtime/client" } +substrate-test-runtime-client = { version = "2.0.0-dev", path = "../../test-utils/runtime/client" } tokio = "0.2" -sc-transaction-pool = { version = "2.0.0", path = "../../client/transaction-pool" } -sp-transaction-pool = { version = "2.0.0", path = "../../primitives/transaction-pool" } +sc-transaction-pool = { version = "2.0.0-dev", path = "../../client/transaction-pool" } +sp-transaction-pool = { version = "2.0.0-dev", path = "../../primitives/transaction-pool" } [features] default = [] diff --git a/client/peerset/Cargo.toml b/client/peerset/Cargo.toml index b39aa40490..5a01d9d03b 100644 --- a/client/peerset/Cargo.toml +++ b/client/peerset/Cargo.toml @@ -3,9 +3,10 @@ description = "Connectivity manager based on reputation" homepage = "http://parity.io" license = "GPL-3.0" name = "sc-peerset" -version = "2.0.0" +version = "2.0.0-dev" authors = ["Parity Technologies "] edition = "2018" +repository = "https://github.com/paritytech/substrate/" [dependencies] futures = "0.3.1" diff --git a/client/rpc-api/Cargo.toml b/client/rpc-api/Cargo.toml index b9f4cbb015..bf97f07221 100644 --- a/client/rpc-api/Cargo.toml +++ b/client/rpc-api/Cargo.toml @@ -1,9 +1,11 @@ [package] name = "sc-rpc-api" -version = "0.8.0" +version = "0.8.0-dev" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" +homepage = "https://substrate.dev" +repository = "https://github.com/paritytech/substrate/" [dependencies] codec = { package = "parity-scale-codec", version = "1.0.0" } @@ -15,10 +17,10 @@ jsonrpc-derive = "14.0.3" jsonrpc-pubsub = "14.0.3" log = "0.4.8" parking_lot = "0.10.0" -sp-core = { version = "2.0.0", path = "../../primitives/core" } -sp-version = { version = "2.0.0", path = "../../primitives/version" } -sp-runtime = { path = "../../primitives/runtime" } +sp-core = { version = "2.0.0-dev", path = "../../primitives/core" } +sp-version = { version = "2.0.0-dev", path = "../../primitives/version" } +sp-runtime = { path = "../../primitives/runtime" , version = "2.0.0-dev"} serde = { version = "1.0.101", features = ["derive"] } serde_json = "1.0.41" -sp-transaction-pool = { version = "2.0.0", path = "../../primitives/transaction-pool" } -sp-rpc = { version = "2.0.0", path = "../../primitives/rpc" } +sp-transaction-pool = { version = "2.0.0-dev", path = "../../primitives/transaction-pool" } +sp-rpc = { version = "2.0.0-dev", path = "../../primitives/rpc" } diff --git a/client/rpc-servers/Cargo.toml b/client/rpc-servers/Cargo.toml index 6b0d3f4ada..d32aaf3e68 100644 --- a/client/rpc-servers/Cargo.toml +++ b/client/rpc-servers/Cargo.toml @@ -1,9 +1,11 @@ [package] name = "sc-rpc-server" -version = "2.0.0" +version = "2.0.0-dev" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" +homepage = "https://substrate.dev" +repository = "https://github.com/paritytech/substrate/" [dependencies] jsonrpc-core = "14.0.3" @@ -11,7 +13,7 @@ pubsub = { package = "jsonrpc-pubsub", version = "14.0.3" } log = "0.4.8" serde = "1.0.101" serde_json = "1.0.41" -sp-runtime = { version = "2.0.0", path = "../../primitives/runtime" } +sp-runtime = { version = "2.0.0-dev", path = "../../primitives/runtime" } [target.'cfg(not(target_os = "unknown"))'.dependencies] http = { package = "jsonrpc-http-server", version = "14.0.3" } diff --git a/client/rpc/Cargo.toml b/client/rpc/Cargo.toml index d09617ebc1..2c0feeb8a9 100644 --- a/client/rpc/Cargo.toml +++ b/client/rpc/Cargo.toml @@ -1,41 +1,43 @@ [package] name = "sc-rpc" -version = "2.0.0" +version = "2.0.0-dev" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" +homepage = "https://substrate.dev" +repository = "https://github.com/paritytech/substrate/" [dependencies] -sc-rpc-api = { version = "0.8", path = "../rpc-api" } -sc-client-api = { version = "2.0.0", path = "../api" } -sc-client = { version = "0.8", path = "../" } -sp-api = { version = "2.0.0", path = "../../primitives/api" } +sc-rpc-api = { version = "0.8.0-dev", path = "../rpc-api" } +sc-client-api = { version = "2.0.0-dev", path = "../api" } +sc-client = { version = "0.8.0-dev", path = "../" } +sp-api = { version = "2.0.0-dev", path = "../../primitives/api" } codec = { package = "parity-scale-codec", version = "1.0.0" } futures = { version = "0.3.1", features = ["compat"] } jsonrpc-pubsub = "14.0.3" log = "0.4.8" -sp-core = { version = "2.0.0", path = "../../primitives/core" } +sp-core = { version = "2.0.0-dev", path = "../../primitives/core" } rpc = { package = "jsonrpc-core", version = "14.0.3" } -sp-version = { version = "2.0.0", path = "../../primitives/version" } +sp-version = { version = "2.0.0-dev", path = "../../primitives/version" } serde_json = "1.0.41" -sp-session = { version = "2.0.0", path = "../../primitives/session" } -sp-offchain = { version = "2.0.0", path = "../../primitives/offchain" } -sp-runtime = { version = "2.0.0", path = "../../primitives/runtime" } -sp-rpc = { version = "2.0.0", path = "../../primitives/rpc" } -sp-state-machine = { version = "0.8", path = "../../primitives/state-machine" } -sc-executor = { version = "0.8", path = "../executor" } -sc-keystore = { version = "2.0.0", path = "../keystore" } -sp-transaction-pool = { version = "2.0.0", path = "../../primitives/transaction-pool" } -sp-blockchain = { version = "2.0.0", path = "../../primitives/blockchain" } +sp-session = { version = "2.0.0-dev", path = "../../primitives/session" } +sp-offchain = { version = "2.0.0-dev", path = "../../primitives/offchain" } +sp-runtime = { version = "2.0.0-dev", path = "../../primitives/runtime" } +sp-rpc = { version = "2.0.0-dev", path = "../../primitives/rpc" } +sp-state-machine = { version = "0.8.0-dev", path = "../../primitives/state-machine" } +sc-executor = { version = "0.8.0-dev", path = "../executor" } +sc-keystore = { version = "2.0.0-dev", path = "../keystore" } +sp-transaction-pool = { version = "2.0.0-dev", path = "../../primitives/transaction-pool" } +sp-blockchain = { version = "2.0.0-dev", path = "../../primitives/blockchain" } hash-db = { version = "0.15.2", default-features = false } parking_lot = "0.10.0" [dev-dependencies] assert_matches = "1.3.0" futures01 = { package = "futures", version = "0.1.29" } -sc-network = { version = "0.8", path = "../network" } +sc-network = { version = "0.8.0-dev", path = "../network" } rustc-hex = "2.0.1" -sp-io = { version = "2.0.0", path = "../../primitives/io" } -substrate-test-runtime-client = { version = "2.0.0", path = "../../test-utils/runtime/client" } +sp-io = { version = "2.0.0-dev", path = "../../primitives/io" } +substrate-test-runtime-client = { version = "2.0.0-dev", path = "../../test-utils/runtime/client" } tokio = "0.1.22" -sc-transaction-pool = { version = "2.0.0", path = "../transaction-pool" } +sc-transaction-pool = { version = "2.0.0-dev", path = "../transaction-pool" } diff --git a/client/service/Cargo.toml b/client/service/Cargo.toml index feaa4e3e68..024f61aba5 100644 --- a/client/service/Cargo.toml +++ b/client/service/Cargo.toml @@ -1,9 +1,11 @@ [package] name = "sc-service" -version = "0.8.0" +version = "0.8.0-dev" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" +homepage = "https://substrate.dev" +repository = "https://github.com/paritytech/substrate/" [features] default = ["rocksdb"] @@ -30,37 +32,37 @@ serde = "1.0.101" serde_json = "1.0.41" sysinfo = "0.9.5" target_info = "0.1.0" -sc-keystore = { version = "2.0.0", path = "../keystore" } -sp-io = { version = "2.0.0", path = "../../primitives/io" } -sp-runtime = { version = "2.0.0", path = "../../primitives/runtime" } -sp-blockchain = { version = "2.0.0", path = "../../primitives/blockchain" } -sp-core = { version = "2.0.0", path = "../../primitives/core" } -sp-session = { version = "2.0.0", path = "../../primitives/session" } -sp-application-crypto = { version = "2.0.0", path = "../../primitives/application-crypto" } -sp-consensus = { version = "0.8", path = "../../primitives/consensus/common" } -sc-network = { version = "0.8", path = "../network" } -sc-chain-spec = { version = "2.0.0", path = "../chain-spec" } -sc-client-api = { version = "2.0.0", path = "../api" } -sc-client = { version = "0.8", path = "../" } -sp-api = { version = "2.0.0", path = "../../primitives/api" } -sc-client-db = { version = "0.8", path = "../db" } +sc-keystore = { version = "2.0.0-dev", path = "../keystore" } +sp-io = { version = "2.0.0-dev", path = "../../primitives/io" } +sp-runtime = { version = "2.0.0-dev", path = "../../primitives/runtime" } +sp-blockchain = { version = "2.0.0-dev", path = "../../primitives/blockchain" } +sp-core = { version = "2.0.0-dev", path = "../../primitives/core" } +sp-session = { version = "2.0.0-dev", path = "../../primitives/session" } +sp-application-crypto = { version = "2.0.0-dev", path = "../../primitives/application-crypto" } +sp-consensus = { version = "0.8.0-dev", path = "../../primitives/consensus/common" } +sc-network = { version = "0.8.0-dev", path = "../network" } +sc-chain-spec = { version = "2.0.0-dev", path = "../chain-spec" } +sc-client-api = { version = "2.0.0-dev", path = "../api" } +sc-client = { version = "0.8.0-dev", path = "../" } +sp-api = { version = "2.0.0-dev", path = "../../primitives/api" } +sc-client-db = { version = "0.8.0-dev", path = "../db" } codec = { package = "parity-scale-codec", version = "1.0.0" } -sc-executor = { version = "0.8", path = "../executor" } -sc-transaction-pool = { version = "2.0.0", path = "../transaction-pool" } -sp-transaction-pool = { version = "2.0.0", path = "../../primitives/transaction-pool" } -sc-rpc-server = { version = "2.0.0", path = "../rpc-servers" } -sc-rpc = { version = "2.0.0", path = "../rpc" } -sc-telemetry = { version = "2.0.0", path = "../telemetry" } -sc-offchain = { version = "2.0.0", path = "../offchain" } +sc-executor = { version = "0.8.0-dev", path = "../executor" } +sc-transaction-pool = { version = "2.0.0-dev", path = "../transaction-pool" } +sp-transaction-pool = { version = "2.0.0-dev", path = "../../primitives/transaction-pool" } +sc-rpc-server = { version = "2.0.0-dev", path = "../rpc-servers" } +sc-rpc = { version = "2.0.0-dev", path = "../rpc" } +sc-telemetry = { version = "2.0.0-dev", path = "../telemetry" } +sc-offchain = { version = "2.0.0-dev", path = "../offchain" } parity-multiaddr = { package = "parity-multiaddr", version = "0.5.0" } -prometheus-exporter = { path = "../../utils/prometheus" } -sc-tracing = { version = "2.0.0", path = "../tracing" } +prometheus-exporter = { path = "../../utils/prometheus" , version = "0.8.0-dev"} +sc-tracing = { version = "2.0.0-dev", path = "../tracing" } tracing = "0.1.10" parity-util-mem = { version = "0.5.1", default-features = false, features = ["primitive-types"] } [dev-dependencies] -substrate-test-runtime-client = { version = "2.0.0", path = "../../test-utils/runtime/client" } -sp-consensus-babe = { version = "0.8", path = "../../primitives/consensus/babe" } -grandpa = { version = "0.8", package = "sc-finality-grandpa", path = "../finality-grandpa" } -grandpa-primitives = { version = "2.0.0", package = "sp-finality-grandpa", path = "../../primitives/finality-grandpa" } +substrate-test-runtime-client = { version = "2.0.0-dev", path = "../../test-utils/runtime/client" } +sp-consensus-babe = { version = "0.8.0-dev", path = "../../primitives/consensus/babe" } +grandpa = { version = "0.8.0-dev", package = "sc-finality-grandpa", path = "../finality-grandpa" } +grandpa-primitives = { version = "2.0.0-dev", package = "sp-finality-grandpa", path = "../../primitives/finality-grandpa" } tokio = { version = "0.2", features = ["rt-core"] } diff --git a/client/service/test/Cargo.toml b/client/service/test/Cargo.toml index c9dbe97464..d733d9a7bd 100644 --- a/client/service/test/Cargo.toml +++ b/client/service/test/Cargo.toml @@ -1,9 +1,12 @@ [package] name = "sc-service-test" -version = "2.0.0" +version = "2.0.0-dev" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" +publish = false +homepage = "https://substrate.dev" +repository = "https://github.com/paritytech/substrate/" [dependencies] tempfile = "3.1.0" @@ -13,10 +16,10 @@ log = "0.4.8" env_logger = "0.7.0" fdlimit = "0.1.1" futures = { version = "0.3.1", features = ["compat"] } -sc-service = { version = "0.8.0", default-features = false, path = "../../service" } -sc-network = { version = "0.8", path = "../../network" } -sp-consensus = { version = "0.8", path = "../../../primitives/consensus/common" } -sc-client = { version = "0.8", path = "../../" } -sp-runtime = { version = "2.0.0", path = "../../../primitives/runtime" } -sp-core = { version = "2.0.0", path = "../../../primitives/core" } -sp-transaction-pool = { version = "2.0.0", path = "../../../primitives/transaction-pool" } +sc-service = { version = "0.8.0-dev", default-features = false, path = "../../service" } +sc-network = { version = "0.8.0-dev", path = "../../network" } +sp-consensus = { version = "0.8.0-dev", path = "../../../primitives/consensus/common" } +sc-client = { version = "0.8.0-dev", path = "../../" } +sp-runtime = { version = "2.0.0-dev", path = "../../../primitives/runtime" } +sp-core = { version = "2.0.0-dev", path = "../../../primitives/core" } +sp-transaction-pool = { version = "2.0.0-dev", path = "../../../primitives/transaction-pool" } diff --git a/client/state-db/Cargo.toml b/client/state-db/Cargo.toml index 1bfa136937..93a12cdf08 100644 --- a/client/state-db/Cargo.toml +++ b/client/state-db/Cargo.toml @@ -1,14 +1,16 @@ [package] name = "sc-state-db" -version = "0.8.0" +version = "0.8.0-dev" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" +homepage = "https://substrate.dev" +repository = "https://github.com/paritytech/substrate/" [dependencies] parking_lot = "0.10.0" log = "0.4.8" -sp-core = { version = "2.0.0", path = "../../primitives/core" } +sp-core = { version = "2.0.0-dev", path = "../../primitives/core" } codec = { package = "parity-scale-codec", version = "1.0.0", features = ["derive"] } [dev-dependencies] diff --git a/client/telemetry/Cargo.toml b/client/telemetry/Cargo.toml index 66d08e1b14..89ef286804 100644 --- a/client/telemetry/Cargo.toml +++ b/client/telemetry/Cargo.toml @@ -1,10 +1,12 @@ [package] name = "sc-telemetry" -version = "2.0.0" +version = "2.0.0-dev" authors = ["Parity Technologies "] description = "Telemetry utils" edition = "2018" license = "GPL-3.0" +homepage = "https://substrate.dev" +repository = "https://github.com/paritytech/substrate/" [dependencies] bytes = "0.5" diff --git a/client/tracing/Cargo.toml b/client/tracing/Cargo.toml index 0b6b02acd5..b85c0371f3 100644 --- a/client/tracing/Cargo.toml +++ b/client/tracing/Cargo.toml @@ -1,9 +1,11 @@ [package] name = "sc-tracing" -version = "2.0.0" +version = "2.0.0-dev" license = "GPL-3.0" authors = ["Parity Technologies "] edition = "2018" +homepage = "https://substrate.dev" +repository = "https://github.com/paritytech/substrate/" [dependencies] erased-serde = "0.3.9" @@ -14,7 +16,7 @@ serde_json = "1.0.41" slog = { version = "2.5.2", features = ["nested-values"] } tracing-core = "0.1.7" -sc-telemetry = { version = "2.0.0", path = "../telemetry" } +sc-telemetry = { version = "2.0.0-dev", path = "../telemetry" } [dev-dependencies] tracing = "0.1.10" diff --git a/client/transaction-pool/Cargo.toml b/client/transaction-pool/Cargo.toml index 7ccc98a9c0..6f863550bc 100644 --- a/client/transaction-pool/Cargo.toml +++ b/client/transaction-pool/Cargo.toml @@ -1,9 +1,11 @@ [package] name = "sc-transaction-pool" -version = "2.0.0" +version = "2.0.0-dev" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" +homepage = "https://substrate.dev" +repository = "https://github.com/paritytech/substrate/" [dependencies] codec = { package = "parity-scale-codec", version = "1.0.0" } @@ -13,17 +15,17 @@ futures-diagnose = "1.0" log = "0.4.8" parking_lot = "0.10.0" wasm-timer = "0.2" -sp-core = { version = "2.0.0", path = "../../primitives/core" } -sp-api = { version = "2.0.0", path = "../../primitives/api" } -sp-runtime = { version = "2.0.0", path = "../../primitives/runtime" } -sc-transaction-graph = { version = "2.0.0", path = "./graph" } -sp-transaction-pool = { version = "2.0.0", path = "../../primitives/transaction-pool" } -sc-client-api = { version = "2.0.0", path = "../api" } -sp-blockchain = { version = "2.0.0", path = "../../primitives/blockchain" } +sp-core = { version = "2.0.0-dev", path = "../../primitives/core" } +sp-api = { version = "2.0.0-dev", path = "../../primitives/api" } +sp-runtime = { version = "2.0.0-dev", path = "../../primitives/runtime" } +sc-transaction-graph = { version = "2.0.0-dev", path = "./graph" } +sp-transaction-pool = { version = "2.0.0-dev", path = "../../primitives/transaction-pool" } +sc-client-api = { version = "2.0.0-dev", path = "../api" } +sp-blockchain = { version = "2.0.0-dev", path = "../../primitives/blockchain" } futures-timer = "2.0" parity-util-mem = { version = "0.5.1", default-features = false, features = ["primitive-types"] } [dev-dependencies] -sp-keyring = { version = "2.0.0", path = "../../primitives/keyring" } -substrate-test-runtime-transaction-pool = { version = "2.0.0", path = "../../test-utils/runtime/transaction-pool" } -substrate-test-runtime-client = { version = "2.0.0", path = "../../test-utils/runtime/client" } +sp-keyring = { version = "2.0.0-dev", path = "../../primitives/keyring" } +substrate-test-runtime-transaction-pool = { version = "2.0.0-dev", path = "../../test-utils/runtime/transaction-pool" } +substrate-test-runtime-client = { version = "2.0.0-dev", path = "../../test-utils/runtime/client" } diff --git a/client/transaction-pool/graph/Cargo.toml b/client/transaction-pool/graph/Cargo.toml index daec970a69..6335cdecb3 100644 --- a/client/transaction-pool/graph/Cargo.toml +++ b/client/transaction-pool/graph/Cargo.toml @@ -1,9 +1,11 @@ [package] name = "sc-transaction-graph" -version = "2.0.0" +version = "2.0.0-dev" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" +homepage = "https://substrate.dev" +repository = "https://github.com/paritytech/substrate/" [dependencies] derive_more = "0.99.2" @@ -12,17 +14,17 @@ log = "0.4.8" parking_lot = "0.10.0" serde = { version = "1.0.101", features = ["derive"] } wasm-timer = "0.2" -sp-blockchain = { version = "2.0.0", path = "../../../primitives/blockchain" } -sp-core = { version = "2.0.0", path = "../../../primitives/core" } -sp-runtime = { version = "2.0.0", path = "../../../primitives/runtime" } -sp-transaction-pool = { version = "2.0.0", path = "../../../primitives/transaction-pool" } +sp-blockchain = { version = "2.0.0-dev", path = "../../../primitives/blockchain" } +sp-core = { version = "2.0.0-dev", path = "../../../primitives/core" } +sp-runtime = { version = "2.0.0-dev", path = "../../../primitives/runtime" } +sp-transaction-pool = { version = "2.0.0-dev", path = "../../../primitives/transaction-pool" } parity-util-mem = { version = "0.5.1", default-features = false, features = ["primitive-types"] } linked-hash-map = "0.5.2" [dev-dependencies] assert_matches = "1.3.0" codec = { package = "parity-scale-codec", version = "1.0.0" } -substrate-test-runtime = { version = "2.0.0", path = "../../../test-utils/runtime" } +substrate-test-runtime = { version = "2.0.0-dev", path = "../../../test-utils/runtime" } criterion = "0.3" [[bench]] diff --git a/frame/assets/Cargo.toml b/frame/assets/Cargo.toml index cd6b41c4c7..9b2b01e91e 100644 --- a/frame/assets/Cargo.toml +++ b/frame/assets/Cargo.toml @@ -1,24 +1,26 @@ [package] name = "pallet-assets" -version = "2.0.0" +version = "2.0.0-dev" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" +homepage = "https://substrate.dev" +repository = "https://github.com/paritytech/substrate/" [dependencies] serde = { version = "1.0.101", optional = true } codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false } # Needed for various traits. In our case, `OnFinalize`. -sp-runtime = { version = "2.0.0", default-features = false, path = "../../primitives/runtime" } +sp-runtime = { version = "2.0.0-dev", default-features = false, path = "../../primitives/runtime" } # Needed for type-safe access to storage DB. -frame-support = { version = "2.0.0", default-features = false, path = "../support" } +frame-support = { version = "2.0.0-dev", default-features = false, path = "../support" } # `system` module provides us with all sorts of useful stuff and macros depend on it being around. -frame-system = { version = "2.0.0", default-features = false, path = "../system" } +frame-system = { version = "2.0.0-dev", default-features = false, path = "../system" } [dev-dependencies] -sp-core = { version = "2.0.0", path = "../../primitives/core" } -sp-std = { version = "2.0.0", path = "../../primitives/std" } -sp-io = { version = "2.0.0", path = "../../primitives/io" } +sp-core = { version = "2.0.0-dev", path = "../../primitives/core" } +sp-std = { version = "2.0.0-dev", path = "../../primitives/std" } +sp-io = { version = "2.0.0-dev", path = "../../primitives/io" } [features] default = ["std"] diff --git a/frame/aura/Cargo.toml b/frame/aura/Cargo.toml index e982a02b47..516ee883c4 100644 --- a/frame/aura/Cargo.toml +++ b/frame/aura/Cargo.toml @@ -1,25 +1,27 @@ [package] name = "pallet-aura" -version = "2.0.0" +version = "2.0.0-dev" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" +homepage = "https://substrate.dev" +repository = "https://github.com/paritytech/substrate/" [dependencies] -sp-application-crypto = { version = "2.0.0", default-features = false, path = "../../primitives/application-crypto" } +sp-application-crypto = { version = "2.0.0-dev", default-features = false, path = "../../primitives/application-crypto" } codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } -sp-inherents = { version = "2.0.0", default-features = false, path = "../../primitives/inherents" } -sp-core = { version = "2.0.0", default-features = false, path = "../../primitives/core" } -sp-std = { version = "2.0.0", default-features = false, path = "../../primitives/std" } +sp-inherents = { version = "2.0.0-dev", default-features = false, path = "../../primitives/inherents" } +sp-core = { version = "2.0.0-dev", default-features = false, path = "../../primitives/core" } +sp-std = { version = "2.0.0-dev", default-features = false, path = "../../primitives/std" } serde = { version = "1.0.101", optional = true } -pallet-session = { version = "2.0.0", default-features = false, path = "../session" } -sp-runtime = { version = "2.0.0", default-features = false, path = "../../primitives/runtime" } -sp-io ={ path = "../../primitives/io", default-features = false } -frame-support = { version = "2.0.0", default-features = false, path = "../support" } -sp-consensus-aura = { path = "../../primitives/consensus/aura", default-features = false} -frame-system = { version = "2.0.0", default-features = false, path = "../system" } -sp-timestamp = { version = "2.0.0", default-features = false, path = "../../primitives/timestamp" } -pallet-timestamp = { version = "2.0.0", default-features = false, path = "../timestamp" } +pallet-session = { version = "2.0.0-dev", default-features = false, path = "../session" } +sp-runtime = { version = "2.0.0-dev", default-features = false, path = "../../primitives/runtime" } +sp-io ={ path = "../../primitives/io", default-features = false , version = "2.0.0-dev"} +frame-support = { version = "2.0.0-dev", default-features = false, path = "../support" } +sp-consensus-aura = { path = "../../primitives/consensus/aura", default-features = false, version = "0.8.0-dev"} +frame-system = { version = "2.0.0-dev", default-features = false, path = "../system" } +sp-timestamp = { version = "2.0.0-dev", default-features = false, path = "../../primitives/timestamp" } +pallet-timestamp = { version = "2.0.0-dev", default-features = false, path = "../timestamp" } [dev-dependencies] diff --git a/frame/authority-discovery/Cargo.toml b/frame/authority-discovery/Cargo.toml index d8c72683ca..77dbd9de4a 100644 --- a/frame/authority-discovery/Cargo.toml +++ b/frame/authority-discovery/Cargo.toml @@ -1,25 +1,27 @@ [package] name = "pallet-authority-discovery" -version = "2.0.0" +version = "2.0.0-dev" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" +homepage = "https://substrate.dev" +repository = "https://github.com/paritytech/substrate/" [dependencies] -sp-authority-discovery = { version = "2.0.0", default-features = false, path = "../../primitives/authority-discovery" } -sp-application-crypto = { version = "2.0.0", default-features = false, path = "../../primitives/application-crypto" } +sp-authority-discovery = { version = "2.0.0-dev", default-features = false, path = "../../primitives/authority-discovery" } +sp-application-crypto = { version = "2.0.0-dev", default-features = false, path = "../../primitives/application-crypto" } codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } -sp-core = { version = "2.0.0", default-features = false, path = "../../primitives/core" } -sp-std = { version = "2.0.0", default-features = false, path = "../../primitives/std" } +sp-core = { version = "2.0.0-dev", default-features = false, path = "../../primitives/core" } +sp-std = { version = "2.0.0-dev", default-features = false, path = "../../primitives/std" } serde = { version = "1.0.101", optional = true } -sp-io = { version = "2.0.0", default-features = false, path = "../../primitives/io" } -pallet-session = { version = "2.0.0", features = ["historical" ], path = "../session", default-features = false } -sp-runtime = { version = "2.0.0", default-features = false, path = "../../primitives/runtime" } -frame-support = { version = "2.0.0", default-features = false, path = "../support" } -frame-system = { version = "2.0.0", default-features = false, path = "../system" } +sp-io = { version = "2.0.0-dev", default-features = false, path = "../../primitives/io" } +pallet-session = { version = "2.0.0-dev", features = ["historical" ], path = "../session", default-features = false } +sp-runtime = { version = "2.0.0-dev", default-features = false, path = "../../primitives/runtime" } +frame-support = { version = "2.0.0-dev", default-features = false, path = "../support" } +frame-system = { version = "2.0.0-dev", default-features = false, path = "../system" } [dev-dependencies] -sp-staking = { version = "2.0.0", default-features = false, path = "../../primitives/staking" } +sp-staking = { version = "2.0.0-dev", default-features = false, path = "../../primitives/staking" } [features] default = ["std"] diff --git a/frame/authorship/Cargo.toml b/frame/authorship/Cargo.toml index 61056820f4..afbea4ceec 100644 --- a/frame/authorship/Cargo.toml +++ b/frame/authorship/Cargo.toml @@ -1,21 +1,23 @@ [package] name = "pallet-authorship" -version = "2.0.0" +version = "2.0.0-dev" description = "Block and Uncle Author tracking for the FRAME" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" +homepage = "https://substrate.dev" +repository = "https://github.com/paritytech/substrate/" [dependencies] -sp-core = { version = "2.0.0", default-features = false, path = "../../primitives/core" } +sp-core = { version = "2.0.0-dev", default-features = false, path = "../../primitives/core" } codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } -sp-inherents = { version = "2.0.0", default-features = false, path = "../../primitives/inherents" } -sp-authorship = { version = "2.0.0", default-features = false, path = "../../primitives/authorship" } -sp-std = { version = "2.0.0", default-features = false, path = "../../primitives/std" } -sp-runtime = { version = "2.0.0", default-features = false, path = "../../primitives/runtime" } -frame-support = { version = "2.0.0", default-features = false, path = "../support" } -frame-system = { version = "2.0.0", default-features = false, path = "../system" } -sp-io ={ path = "../../primitives/io", default-features = false } +sp-inherents = { version = "2.0.0-dev", default-features = false, path = "../../primitives/inherents" } +sp-authorship = { version = "2.0.0-dev", default-features = false, path = "../../primitives/authorship" } +sp-std = { version = "2.0.0-dev", default-features = false, path = "../../primitives/std" } +sp-runtime = { version = "2.0.0-dev", default-features = false, path = "../../primitives/runtime" } +frame-support = { version = "2.0.0-dev", default-features = false, path = "../support" } +frame-system = { version = "2.0.0-dev", default-features = false, path = "../system" } +sp-io ={ path = "../../primitives/io", default-features = false , version = "2.0.0-dev"} impl-trait-for-tuples = "0.1.3" [features] diff --git a/frame/babe/Cargo.toml b/frame/babe/Cargo.toml index 5e7764862a..1748481295 100644 --- a/frame/babe/Cargo.toml +++ b/frame/babe/Cargo.toml @@ -1,32 +1,34 @@ [package] name = "pallet-babe" -version = "2.0.0" +version = "2.0.0-dev" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" +homepage = "https://substrate.dev" +repository = "https://github.com/paritytech/substrate/" [dependencies] hex-literal = "0.2.1" codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } serde = { version = "1.0.101", optional = true } -sp-inherents = { version = "2.0.0", default-features = false, path = "../../primitives/inherents" } -sp-std = { version = "2.0.0", default-features = false, path = "../../primitives/std" } -sp-runtime = { version = "2.0.0", default-features = false, path = "../../primitives/runtime" } -sp-staking = { version = "2.0.0", default-features = false, path = "../../primitives/staking" } -frame-support = { version = "2.0.0", default-features = false, path = "../support" } -frame-system = { version = "2.0.0", default-features = false, path = "../system" } -pallet-timestamp = { version = "2.0.0", default-features = false, path = "../timestamp" } -sp-timestamp = { version = "2.0.0", default-features = false, path = "../../primitives/timestamp" } -pallet-session = { version = "2.0.0", default-features = false, path = "../session" } -sp-consensus-babe = { version = "0.8", default-features = false, path = "../../primitives/consensus/babe" } -sp-io ={ path = "../../primitives/io", default-features = false } +sp-inherents = { version = "2.0.0-dev", default-features = false, path = "../../primitives/inherents" } +sp-std = { version = "2.0.0-dev", default-features = false, path = "../../primitives/std" } +sp-runtime = { version = "2.0.0-dev", default-features = false, path = "../../primitives/runtime" } +sp-staking = { version = "2.0.0-dev", default-features = false, path = "../../primitives/staking" } +frame-support = { version = "2.0.0-dev", default-features = false, path = "../support" } +frame-system = { version = "2.0.0-dev", default-features = false, path = "../system" } +pallet-timestamp = { version = "2.0.0-dev", default-features = false, path = "../timestamp" } +sp-timestamp = { version = "2.0.0-dev", default-features = false, path = "../../primitives/timestamp" } +pallet-session = { version = "2.0.0-dev", default-features = false, path = "../session" } +sp-consensus-babe = { version = "0.8.0-dev", default-features = false, path = "../../primitives/consensus/babe" } +sp-io ={ path = "../../primitives/io", default-features = false , version = "2.0.0-dev"} [dev-dependencies] lazy_static = "1.4.0" parking_lot = "0.10.0" -sp-version = { version = "2.0.0", default-features = false, path = "../../primitives/version" } -sp-core = { version = "2.0.0", path = "../../primitives/core" } -substrate-test-runtime = { version = "2.0.0", path = "../../test-utils/runtime" } +sp-version = { version = "2.0.0-dev", default-features = false, path = "../../primitives/version" } +sp-core = { version = "2.0.0-dev", path = "../../primitives/core" } +substrate-test-runtime = { version = "2.0.0-dev", path = "../../test-utils/runtime" } [features] default = ["std"] diff --git a/frame/balances/Cargo.toml b/frame/balances/Cargo.toml index f2bf1069af..728adf9de7 100644 --- a/frame/balances/Cargo.toml +++ b/frame/balances/Cargo.toml @@ -1,24 +1,26 @@ [package] name = "pallet-balances" -version = "2.0.0" +version = "2.0.0-dev" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" +homepage = "https://substrate.dev" +repository = "https://github.com/paritytech/substrate/" [dependencies] serde = { version = "1.0.101", optional = true } codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } -sp-std = { version = "2.0.0", default-features = false, path = "../../primitives/std" } -sp-io = { version = "2.0.0", default-features = false, path = "../../primitives/io" } -sp-runtime = { version = "2.0.0", default-features = false, path = "../../primitives/runtime" } -frame-benchmarking = { version = "2.0.0", default-features = false, path = "../benchmarking" } -frame-support = { version = "2.0.0", default-features = false, path = "../support" } -frame-system = { version = "2.0.0", default-features = false, path = "../system" } +sp-std = { version = "2.0.0-dev", default-features = false, path = "../../primitives/std" } +sp-io = { version = "2.0.0-dev", default-features = false, path = "../../primitives/io" } +sp-runtime = { version = "2.0.0-dev", default-features = false, path = "../../primitives/runtime" } +frame-benchmarking = { version = "2.0.0-dev", default-features = false, path = "../benchmarking" } +frame-support = { version = "2.0.0-dev", default-features = false, path = "../support" } +frame-system = { version = "2.0.0-dev", default-features = false, path = "../system" } [dev-dependencies] -sp-io = { version = "2.0.0", path = "../../primitives/io" } -sp-core = { version = "2.0.0", path = "../../primitives/core" } -pallet-transaction-payment = { version = "2.0.0", path = "../transaction-payment" } +sp-io = { version = "2.0.0-dev", path = "../../primitives/io" } +sp-core = { version = "2.0.0-dev", path = "../../primitives/core" } +pallet-transaction-payment = { version = "2.0.0-dev", path = "../transaction-payment" } [features] default = ["std"] diff --git a/frame/benchmarking/Cargo.toml b/frame/benchmarking/Cargo.toml index 87c51c70e8..63db66fb20 100644 --- a/frame/benchmarking/Cargo.toml +++ b/frame/benchmarking/Cargo.toml @@ -1,16 +1,18 @@ [package] name = "frame-benchmarking" -version = "2.0.0" +version = "2.0.0-dev" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" +homepage = "https://substrate.dev" +repository = "https://github.com/paritytech/substrate/" [dependencies] codec = { package = "parity-scale-codec", version = "1.1.2", default-features = false } -sp-api = { version = "2.0.0", path = "../../primitives/api", default-features = false } -sp-runtime-interface = { version = "2.0.0", path = "../../primitives/runtime-interface", default-features = false } -sp-std = { version = "2.0.0", path = "../../primitives/std", default-features = false } -sp-io ={ path = "../../primitives/io", default-features = false } +sp-api = { version = "2.0.0-dev", path = "../../primitives/api", default-features = false } +sp-runtime-interface = { version = "2.0.0-dev", path = "../../primitives/runtime-interface", default-features = false } +sp-std = { version = "2.0.0-dev", path = "../../primitives/std", default-features = false } +sp-io ={ path = "../../primitives/io", default-features = false , version = "2.0.0-dev"} [features] default = [ "std" ] diff --git a/frame/collective/Cargo.toml b/frame/collective/Cargo.toml index 8f7ffa7653..1e906e9585 100644 --- a/frame/collective/Cargo.toml +++ b/frame/collective/Cargo.toml @@ -1,23 +1,25 @@ [package] name = "pallet-collective" -version = "2.0.0" +version = "2.0.0-dev" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" +homepage = "https://substrate.dev" +repository = "https://github.com/paritytech/substrate/" [dependencies] serde = { version = "1.0.101", optional = true } codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } -sp-core = { version = "2.0.0", default-features = false, path = "../../primitives/core" } -sp-std = { version = "2.0.0", default-features = false, path = "../../primitives/std" } -sp-io = { version = "2.0.0", default-features = false, path = "../../primitives/io" } -sp-runtime = { version = "2.0.0", default-features = false, path = "../../primitives/runtime" } -frame-support = { version = "2.0.0", default-features = false, path = "../support" } -frame-system = { version = "2.0.0", default-features = false, path = "../system" } +sp-core = { version = "2.0.0-dev", default-features = false, path = "../../primitives/core" } +sp-std = { version = "2.0.0-dev", default-features = false, path = "../../primitives/std" } +sp-io = { version = "2.0.0-dev", default-features = false, path = "../../primitives/io" } +sp-runtime = { version = "2.0.0-dev", default-features = false, path = "../../primitives/runtime" } +frame-support = { version = "2.0.0-dev", default-features = false, path = "../support" } +frame-system = { version = "2.0.0-dev", default-features = false, path = "../system" } [dev-dependencies] hex-literal = "0.2.1" -pallet-balances = { version = "2.0.0", path = "../balances" } +pallet-balances = { version = "2.0.0-dev", path = "../balances" } [features] default = ["std"] diff --git a/frame/contracts/Cargo.toml b/frame/contracts/Cargo.toml index 159e9f9d0c..571ea2d08a 100644 --- a/frame/contracts/Cargo.toml +++ b/frame/contracts/Cargo.toml @@ -1,9 +1,11 @@ [package] name = "pallet-contracts" -version = "2.0.0" +version = "2.0.0-dev" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" +homepage = "https://substrate.dev" +repository = "https://github.com/paritytech/substrate/" [dependencies] serde = { version = "1.0.101", optional = true, features = ["derive"] } @@ -11,22 +13,22 @@ pwasm-utils = { version = "0.12.0", default-features = false } codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } parity-wasm = { version = "0.41.0", default-features = false } wasmi-validation = { version = "0.3.0", default-features = false } -sp-core = { version = "2.0.0", default-features = false, path = "../../primitives/core" } -sp-runtime = { version = "2.0.0", default-features = false, path = "../../primitives/runtime" } -sp-io = { version = "2.0.0", default-features = false, path = "../../primitives/io" } -sp-std = { version = "2.0.0", default-features = false, path = "../../primitives/std" } -sp-sandbox = { version = "0.8.0", default-features = false, path = "../../primitives/sandbox" } -frame-support = { version = "2.0.0", default-features = false, path = "../support" } -frame-system = { version = "2.0.0", default-features = false, path = "../system" } -pallet-contracts-primitives = { version = "2.0.0", default-features = false, path = "common" } +sp-core = { version = "2.0.0-dev", default-features = false, path = "../../primitives/core" } +sp-runtime = { version = "2.0.0-dev", default-features = false, path = "../../primitives/runtime" } +sp-io = { version = "2.0.0-dev", default-features = false, path = "../../primitives/io" } +sp-std = { version = "2.0.0-dev", default-features = false, path = "../../primitives/std" } +sp-sandbox = { version = "0.8.0-dev", default-features = false, path = "../../primitives/sandbox" } +frame-support = { version = "2.0.0-dev", default-features = false, path = "../support" } +frame-system = { version = "2.0.0-dev", default-features = false, path = "../system" } +pallet-contracts-primitives = { version = "2.0.0-dev", default-features = false, path = "common" } [dev-dependencies] wabt = "0.9.2" assert_matches = "1.3.0" hex-literal = "0.2.1" -pallet-balances = { version = "2.0.0", path = "../balances" } -pallet-timestamp = { version = "2.0.0", path = "../timestamp" } -pallet-randomness-collective-flip = { version = "2.0.0", path = "../randomness-collective-flip" } +pallet-balances = { version = "2.0.0-dev", path = "../balances" } +pallet-timestamp = { version = "2.0.0-dev", path = "../timestamp" } +pallet-randomness-collective-flip = { version = "2.0.0-dev", path = "../randomness-collective-flip" } [features] default = ["std"] diff --git a/frame/contracts/common/Cargo.toml b/frame/contracts/common/Cargo.toml index 6e4ee050bd..e70143f76d 100644 --- a/frame/contracts/common/Cargo.toml +++ b/frame/contracts/common/Cargo.toml @@ -1,14 +1,17 @@ [package] name = "pallet-contracts-primitives" -version = "2.0.0" +version = "2.0.0-dev" authors = ["Parity Technologies "] edition = "2018" +license = "GPL-3.0" +homepage = "https://substrate.dev" +repository = "https://github.com/paritytech/substrate/" [dependencies] # This crate should not rely on any of the frame primitives. codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } -sp-std = { version = "2.0.0", default-features = false, path = "../../../primitives/std" } -sp-runtime = { version = "2.0.0", default-features = false, path = "../../../primitives/runtime" } +sp-std = { version = "2.0.0-dev", default-features = false, path = "../../../primitives/std" } +sp-runtime = { version = "2.0.0-dev", default-features = false, path = "../../../primitives/runtime" } [features] default = ["std"] diff --git a/frame/contracts/rpc/Cargo.toml b/frame/contracts/rpc/Cargo.toml index d59260d11f..6120cbe51e 100644 --- a/frame/contracts/rpc/Cargo.toml +++ b/frame/contracts/rpc/Cargo.toml @@ -1,23 +1,25 @@ [package] name = "pallet-contracts-rpc" -version = "0.8.0" +version = "0.8.0-dev" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" +homepage = "https://substrate.dev" +repository = "https://github.com/paritytech/substrate/" [dependencies] codec = { package = "parity-scale-codec", version = "1.0.0" } jsonrpc-core = "14.0.3" jsonrpc-core-client = "14.0.3" jsonrpc-derive = "14.0.3" -sp-blockchain = { version = "2.0.0", path = "../../../primitives/blockchain" } -sp-core = { version = "2.0.0", path = "../../../primitives/core" } -sp-rpc = { version = "2.0.0", path = "../../../primitives/rpc" } +sp-blockchain = { version = "2.0.0-dev", path = "../../../primitives/blockchain" } +sp-core = { version = "2.0.0-dev", path = "../../../primitives/core" } +sp-rpc = { version = "2.0.0-dev", path = "../../../primitives/rpc" } serde = { version = "1.0.101", features = ["derive"] } -sp-runtime = { version = "2.0.0", path = "../../../primitives/runtime" } -sp-api = { version = "2.0.0", path = "../../../primitives/api" } -pallet-contracts-primitives = { version = "2.0.0", path = "../common" } -pallet-contracts-rpc-runtime-api = { version = "0.8.0", path = "./runtime-api" } +sp-runtime = { version = "2.0.0-dev", path = "../../../primitives/runtime" } +sp-api = { version = "2.0.0-dev", path = "../../../primitives/api" } +pallet-contracts-primitives = { version = "2.0.0-dev", path = "../common" } +pallet-contracts-rpc-runtime-api = { version = "0.8.0-dev", path = "./runtime-api" } [dev-dependencies] serde_json = "1.0.41" diff --git a/frame/contracts/rpc/runtime-api/Cargo.toml b/frame/contracts/rpc/runtime-api/Cargo.toml index dad9b92f6a..ce810b8be3 100644 --- a/frame/contracts/rpc/runtime-api/Cargo.toml +++ b/frame/contracts/rpc/runtime-api/Cargo.toml @@ -1,16 +1,18 @@ [package] name = "pallet-contracts-rpc-runtime-api" -version = "0.8.0" +version = "0.8.0-dev" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" +homepage = "https://substrate.dev" +repository = "https://github.com/paritytech/substrate/" [dependencies] -sp-api = { version = "2.0.0", default-features = false, path = "../../../../primitives/api" } +sp-api = { version = "2.0.0-dev", default-features = false, path = "../../../../primitives/api" } codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } -sp-std = { version = "2.0.0", default-features = false, path = "../../../../primitives/std" } -sp-runtime = { version = "2.0.0", default-features = false, path = "../../../../primitives/runtime" } -pallet-contracts-primitives = { version = "2.0.0", default-features = false, path = "../../common" } +sp-std = { version = "2.0.0-dev", default-features = false, path = "../../../../primitives/std" } +sp-runtime = { version = "2.0.0-dev", default-features = false, path = "../../../../primitives/runtime" } +pallet-contracts-primitives = { version = "2.0.0-dev", default-features = false, path = "../../common" } [features] default = ["std"] diff --git a/frame/democracy/Cargo.toml b/frame/democracy/Cargo.toml index 2428d2c154..cf09d24620 100644 --- a/frame/democracy/Cargo.toml +++ b/frame/democracy/Cargo.toml @@ -1,23 +1,25 @@ [package] name = "pallet-democracy" -version = "2.0.0" +version = "2.0.0-dev" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" +homepage = "https://substrate.dev" +repository = "https://github.com/paritytech/substrate/" [dependencies] serde = { version = "1.0.101", optional = true, features = ["derive"] } codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } -sp-std = { version = "2.0.0", default-features = false, path = "../../primitives/std" } -sp-io = { version = "2.0.0", default-features = false, path = "../../primitives/io" } -sp-runtime = { version = "2.0.0", default-features = false, path = "../../primitives/runtime" } -frame-support = { version = "2.0.0", default-features = false, path = "../support" } -frame-system = { version = "2.0.0", default-features = false, path = "../system" } +sp-std = { version = "2.0.0-dev", default-features = false, path = "../../primitives/std" } +sp-io = { version = "2.0.0-dev", default-features = false, path = "../../primitives/io" } +sp-runtime = { version = "2.0.0-dev", default-features = false, path = "../../primitives/runtime" } +frame-support = { version = "2.0.0-dev", default-features = false, path = "../support" } +frame-system = { version = "2.0.0-dev", default-features = false, path = "../system" } [dev-dependencies] -sp-core = { version = "2.0.0", path = "../../primitives/core" } -pallet-balances = { version = "2.0.0", path = "../balances" } -sp-storage = { version = "2.0.0", path = "../../primitives/storage" } +sp-core = { version = "2.0.0-dev", path = "../../primitives/core" } +pallet-balances = { version = "2.0.0-dev", path = "../balances" } +sp-storage = { version = "2.0.0-dev", path = "../../primitives/storage" } hex-literal = "0.2.1" [features] diff --git a/frame/elections-phragmen/Cargo.toml b/frame/elections-phragmen/Cargo.toml index f3cfc800f0..6fc83fb370 100644 --- a/frame/elections-phragmen/Cargo.toml +++ b/frame/elections-phragmen/Cargo.toml @@ -1,24 +1,26 @@ [package] name = "pallet-elections-phragmen" -version = "2.0.0" +version = "2.0.0-dev" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" +homepage = "https://substrate.dev" +repository = "https://github.com/paritytech/substrate/" [dependencies] codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } -sp-runtime = { version = "2.0.0", default-features = false, path = "../../primitives/runtime" } -sp-phragmen = { version = "2.0.0", default-features = false, path = "../../primitives/phragmen" } -frame-support = { version = "2.0.0", default-features = false, path = "../support" } -frame-system = { version = "2.0.0", default-features = false, path = "../system" } -sp-std = { version = "2.0.0", default-features = false, path = "../../primitives/std" } +sp-runtime = { version = "2.0.0-dev", default-features = false, path = "../../primitives/runtime" } +sp-phragmen = { version = "2.0.0-dev", default-features = false, path = "../../primitives/phragmen" } +frame-support = { version = "2.0.0-dev", default-features = false, path = "../support" } +frame-system = { version = "2.0.0-dev", default-features = false, path = "../system" } +sp-std = { version = "2.0.0-dev", default-features = false, path = "../../primitives/std" } [dev-dependencies] -sp-io = { version = "2.0.0", path = "../../primitives/io" } +sp-io = { version = "2.0.0-dev", path = "../../primitives/io" } hex-literal = "0.2.1" -pallet-balances = { version = "2.0.0", path = "../balances" } -sp-core = { version = "2.0.0", path = "../../primitives/core" } -substrate-test-utils = { version = "2.0.0", path = "../../test-utils" } +pallet-balances = { version = "2.0.0-dev", path = "../balances" } +sp-core = { version = "2.0.0-dev", path = "../../primitives/core" } +substrate-test-utils = { version = "2.0.0-dev", path = "../../test-utils" } serde = { version = "1.0.101" } [features] diff --git a/frame/elections/Cargo.toml b/frame/elections/Cargo.toml index b7c98a65e1..eafdb2cc97 100644 --- a/frame/elections/Cargo.toml +++ b/frame/elections/Cargo.toml @@ -1,23 +1,25 @@ [package] name = "pallet-elections" -version = "2.0.0" +version = "2.0.0-dev" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" +homepage = "https://substrate.dev" +repository = "https://github.com/paritytech/substrate/" [dependencies] serde = { version = "1.0.101", optional = true } codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } -sp-core = { version = "2.0.0", default-features = false, path = "../../primitives/core" } -sp-std = { version = "2.0.0", default-features = false, path = "../../primitives/std" } -sp-io = { version = "2.0.0", default-features = false, path = "../../primitives/io" } -sp-runtime = { version = "2.0.0", default-features = false, path = "../../primitives/runtime" } -frame-support = { version = "2.0.0", default-features = false, path = "../support" } -frame-system = { version = "2.0.0", default-features = false, path = "../system" } +sp-core = { version = "2.0.0-dev", default-features = false, path = "../../primitives/core" } +sp-std = { version = "2.0.0-dev", default-features = false, path = "../../primitives/std" } +sp-io = { version = "2.0.0-dev", default-features = false, path = "../../primitives/io" } +sp-runtime = { version = "2.0.0-dev", default-features = false, path = "../../primitives/runtime" } +frame-support = { version = "2.0.0-dev", default-features = false, path = "../support" } +frame-system = { version = "2.0.0-dev", default-features = false, path = "../system" } [dev-dependencies] hex-literal = "0.2.1" -pallet-balances = { version = "2.0.0", path = "../balances" } +pallet-balances = { version = "2.0.0-dev", path = "../balances" } [features] default = ["std"] diff --git a/frame/evm/Cargo.toml b/frame/evm/Cargo.toml index 66c809fa44..202cc23238 100644 --- a/frame/evm/Cargo.toml +++ b/frame/evm/Cargo.toml @@ -1,21 +1,23 @@ [package] name = "pallet-evm" -version = "2.0.0" +version = "2.0.0-dev" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" +homepage = "https://substrate.dev" +repository = "https://github.com/paritytech/substrate/" [dependencies] serde = { version = "1.0.101", optional = true, features = ["derive"] } codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false } -frame-support = { version = "2.0.0", default-features = false, path = "../support" } -frame-system = { version = "2.0.0", default-features = false, path = "../system" } -pallet-timestamp = { version = "2.0.0", default-features = false, path = "../timestamp" } -pallet-balances = { version = "2.0.0", default-features = false, path = "../balances" } -sp-core = { version = "2.0.0", default-features = false, path = "../../primitives/core" } -sp-runtime = { version = "2.0.0", default-features = false, path = "../../primitives/runtime" } -sp-std = { version = "2.0.0", default-features = false, path = "../../primitives/std" } -sp-io = { version = "2.0.0", default-features = false, path = "../../primitives/io" } +frame-support = { version = "2.0.0-dev", default-features = false, path = "../support" } +frame-system = { version = "2.0.0-dev", default-features = false, path = "../system" } +pallet-timestamp = { version = "2.0.0-dev", default-features = false, path = "../timestamp" } +pallet-balances = { version = "2.0.0-dev", default-features = false, path = "../balances" } +sp-core = { version = "2.0.0-dev", default-features = false, path = "../../primitives/core" } +sp-runtime = { version = "2.0.0-dev", default-features = false, path = "../../primitives/runtime" } +sp-std = { version = "2.0.0-dev", default-features = false, path = "../../primitives/std" } +sp-io = { version = "2.0.0-dev", default-features = false, path = "../../primitives/io" } primitive-types = { version = "0.6.2", default-features = false, features = ["rlp"] } rlp = { version = "0.4", default-features = false } evm = { version = "0.15", default-features = false } diff --git a/frame/example-offchain-worker/Cargo.toml b/frame/example-offchain-worker/Cargo.toml index ce858cacda..4f4d797202 100644 --- a/frame/example-offchain-worker/Cargo.toml +++ b/frame/example-offchain-worker/Cargo.toml @@ -1,18 +1,21 @@ [package] name = "pallet-example-offchain-worker" -version = "2.0.0" +version = "2.0.0-dev" authors = ["Parity Technologies "] edition = "2018" +license = "Unlicense" +homepage = "https://substrate.dev" +repository = "https://github.com/paritytech/substrate/" [dependencies] codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false } -frame-support = { version = "2.0.0", default-features = false, path = "../support" } -frame-system = { version = "2.0.0", default-features = false, path = "../system" } +frame-support = { version = "2.0.0-dev", default-features = false, path = "../support" } +frame-system = { version = "2.0.0-dev", default-features = false, path = "../system" } serde = { version = "1.0.101", optional = true } -sp-core = { version = "2.0.0", default-features = false, path = "../../primitives/core" } -sp-io = { version = "2.0.0", default-features = false, path = "../../primitives/io" } -sp-runtime = { version = "2.0.0", default-features = false, path = "../../primitives/runtime" } -sp-std = { version = "2.0.0", default-features = false, path = "../../primitives/std" } +sp-core = { version = "2.0.0-dev", default-features = false, path = "../../primitives/core" } +sp-io = { version = "2.0.0-dev", default-features = false, path = "../../primitives/io" } +sp-runtime = { version = "2.0.0-dev", default-features = false, path = "../../primitives/runtime" } +sp-std = { version = "2.0.0-dev", default-features = false, path = "../../primitives/std" } serde_json = { version = "1.0.46", default-features = false, features = ["alloc"] } [features] diff --git a/frame/example/Cargo.toml b/frame/example/Cargo.toml index 0d37940fc7..07b0a992b2 100644 --- a/frame/example/Cargo.toml +++ b/frame/example/Cargo.toml @@ -1,22 +1,24 @@ [package] name = "pallet-example" -version = "2.0.0" +version = "2.0.0-dev" authors = ["Parity Technologies "] edition = "2018" -license = "GPL-3.0" +license = "Unlicense" +homepage = "https://substrate.dev" +repository = "https://github.com/paritytech/substrate/" [dependencies] serde = { version = "1.0.101", optional = true } codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false } -frame-support = { version = "2.0.0", default-features = false, path = "../support" } -frame-system = { version = "2.0.0", default-features = false, path = "../system" } -pallet-balances = { version = "2.0.0", default-features = false, path = "../balances" } -sp-runtime = { version = "2.0.0", default-features = false, path = "../../primitives/runtime" } -sp-std = { version = "2.0.0", default-features = false, path = "../../primitives/std" } -sp-io = { version = "2.0.0", default-features = false, path = "../../primitives/io" } +frame-support = { version = "2.0.0-dev", default-features = false, path = "../support" } +frame-system = { version = "2.0.0-dev", default-features = false, path = "../system" } +pallet-balances = { version = "2.0.0-dev", default-features = false, path = "../balances" } +sp-runtime = { version = "2.0.0-dev", default-features = false, path = "../../primitives/runtime" } +sp-std = { version = "2.0.0-dev", default-features = false, path = "../../primitives/std" } +sp-io = { version = "2.0.0-dev", default-features = false, path = "../../primitives/io" } [dev-dependencies] -sp-core = { version = "2.0.0", path = "../../primitives/core" } +sp-core = { version = "2.0.0-dev", path = "../../primitives/core" } [features] default = ["std"] diff --git a/frame/executive/Cargo.toml b/frame/executive/Cargo.toml index 514fb68d6d..0becc170a3 100644 --- a/frame/executive/Cargo.toml +++ b/frame/executive/Cargo.toml @@ -1,25 +1,27 @@ [package] name = "frame-executive" -version = "2.0.0" +version = "2.0.0-dev" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" +homepage = "https://substrate.dev" +repository = "https://github.com/paritytech/substrate/" [dependencies] codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } -frame-support = { version = "2.0.0", default-features = false, path = "../support" } -frame-system = { version = "2.0.0", default-features = false, path = "../system" } +frame-support = { version = "2.0.0-dev", default-features = false, path = "../support" } +frame-system = { version = "2.0.0-dev", default-features = false, path = "../system" } serde = { version = "1.0.101", optional = true } -sp-io ={ path = "../../primitives/io", default-features = false } -sp-runtime = { version = "2.0.0", default-features = false, path = "../../primitives/runtime" } -sp-std = { version = "2.0.0", default-features = false, path = "../../primitives/std" } +sp-io ={ path = "../../primitives/io", default-features = false , version = "2.0.0-dev"} +sp-runtime = { version = "2.0.0-dev", default-features = false, path = "../../primitives/runtime" } +sp-std = { version = "2.0.0-dev", default-features = false, path = "../../primitives/std" } [dev-dependencies] hex-literal = "0.2.1" -sp-core = { version = "2.0.0", path = "../../primitives/core" } -pallet-indices = { version = "2.0.0", path = "../indices" } -pallet-balances = { version = "2.0.0", path = "../balances" } -pallet-transaction-payment = { version = "2.0.0", path = "../transaction-payment" } +sp-core = { version = "2.0.0-dev", path = "../../primitives/core" } +pallet-indices = { version = "2.0.0-dev", path = "../indices" } +pallet-balances = { version = "2.0.0-dev", path = "../balances" } +pallet-transaction-payment = { version = "2.0.0-dev", path = "../transaction-payment" } [features] default = ["std"] diff --git a/frame/finality-tracker/Cargo.toml b/frame/finality-tracker/Cargo.toml index 7c87df4e54..e848c02a42 100644 --- a/frame/finality-tracker/Cargo.toml +++ b/frame/finality-tracker/Cargo.toml @@ -1,24 +1,26 @@ [package] name = "pallet-finality-tracker" -version = "2.0.0" +version = "2.0.0-dev" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" +homepage = "https://substrate.dev" +repository = "https://github.com/paritytech/substrate/" [dependencies] serde = { version = "1.0.101", default-features = false, features = ["derive"] } codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false } -sp-inherents = { version = "2.0.0", default-features = false, path = "../../primitives/inherents" } -sp-std = { version = "2.0.0", default-features = false, path = "../../primitives/std" } -sp-runtime = { version = "2.0.0", default-features = false, path = "../../primitives/runtime" } -sp-finality-tracker = { version = "2.0.0", default-features = false, path = "../../primitives/finality-tracker" } -frame-support = { version = "2.0.0", default-features = false, path = "../support" } -frame-system = { version = "2.0.0", default-features = false, path = "../system" } +sp-inherents = { version = "2.0.0-dev", default-features = false, path = "../../primitives/inherents" } +sp-std = { version = "2.0.0-dev", default-features = false, path = "../../primitives/std" } +sp-runtime = { version = "2.0.0-dev", default-features = false, path = "../../primitives/runtime" } +sp-finality-tracker = { version = "2.0.0-dev", default-features = false, path = "../../primitives/finality-tracker" } +frame-support = { version = "2.0.0-dev", default-features = false, path = "../support" } +frame-system = { version = "2.0.0-dev", default-features = false, path = "../system" } impl-trait-for-tuples = "0.1.3" [dev-dependencies] -sp-core = { version = "2.0.0", default-features = false, path = "../../primitives/core" } -sp-io = { version = "2.0.0", default-features = false, path = "../../primitives/io" } +sp-core = { version = "2.0.0-dev", default-features = false, path = "../../primitives/core" } +sp-io = { version = "2.0.0-dev", default-features = false, path = "../../primitives/io" } [features] default = ["std"] diff --git a/frame/generic-asset/Cargo.toml b/frame/generic-asset/Cargo.toml index cd236d7b7d..343267f89f 100644 --- a/frame/generic-asset/Cargo.toml +++ b/frame/generic-asset/Cargo.toml @@ -1,21 +1,23 @@ [package] name = "pallet-generic-asset" -version = "2.0.0" +version = "2.0.0-dev" authors = ["Centrality Developers "] edition = "2018" license = "GPL-3.0" +homepage = "https://substrate.dev" +repository = "https://github.com/paritytech/substrate/" [dependencies] serde = { version = "1.0.101", optional = true } codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } -sp-std = { version = "2.0.0", default-features = false, path = "../../primitives/std" } -sp-runtime = { version = "2.0.0", default-features = false, path = "../../primitives/runtime" } -frame-support = { version = "2.0.0", default-features = false, path = "../support" } -frame-system = { version = "2.0.0", default-features = false, path = "../system" } +sp-std = { version = "2.0.0-dev", default-features = false, path = "../../primitives/std" } +sp-runtime = { version = "2.0.0-dev", default-features = false, path = "../../primitives/runtime" } +frame-support = { version = "2.0.0-dev", default-features = false, path = "../support" } +frame-system = { version = "2.0.0-dev", default-features = false, path = "../system" } [dev-dependencies] -sp-io ={ version = "2.0.0", path = "../../primitives/io" } -sp-core = { version = "2.0.0", path = "../../primitives/core" } +sp-io ={ version = "2.0.0-dev", path = "../../primitives/io" } +sp-core = { version = "2.0.0-dev", path = "../../primitives/core" } [features] default = ["std"] diff --git a/frame/grandpa/Cargo.toml b/frame/grandpa/Cargo.toml index e67e64dd5f..95ed18b0dd 100644 --- a/frame/grandpa/Cargo.toml +++ b/frame/grandpa/Cargo.toml @@ -1,25 +1,27 @@ [package] name = "pallet-grandpa" -version = "2.0.0" +version = "2.0.0-dev" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" +homepage = "https://substrate.dev" +repository = "https://github.com/paritytech/substrate/" [dependencies] serde = { version = "1.0.101", optional = true, features = ["derive"] } codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } -sp-core = { version = "2.0.0", default-features = false, path = "../../primitives/core" } -sp-finality-grandpa = { version = "2.0.0", default-features = false, path = "../../primitives/finality-grandpa" } -sp-std = { version = "2.0.0", default-features = false, path = "../../primitives/std" } -sp-runtime = { version = "2.0.0", default-features = false, path = "../../primitives/runtime" } -sp-staking = { version = "2.0.0", default-features = false, path = "../../primitives/staking" } -frame-support = { version = "2.0.0", default-features = false, path = "../support" } -frame-system = { version = "2.0.0", default-features = false, path = "../system" } -pallet-session = { version = "2.0.0", default-features = false, path = "../session" } -pallet-finality-tracker = { version = "2.0.0", default-features = false, path = "../finality-tracker" } +sp-core = { version = "2.0.0-dev", default-features = false, path = "../../primitives/core" } +sp-finality-grandpa = { version = "2.0.0-dev", default-features = false, path = "../../primitives/finality-grandpa" } +sp-std = { version = "2.0.0-dev", default-features = false, path = "../../primitives/std" } +sp-runtime = { version = "2.0.0-dev", default-features = false, path = "../../primitives/runtime" } +sp-staking = { version = "2.0.0-dev", default-features = false, path = "../../primitives/staking" } +frame-support = { version = "2.0.0-dev", default-features = false, path = "../support" } +frame-system = { version = "2.0.0-dev", default-features = false, path = "../system" } +pallet-session = { version = "2.0.0-dev", default-features = false, path = "../session" } +pallet-finality-tracker = { version = "2.0.0-dev", default-features = false, path = "../finality-tracker" } [dev-dependencies] -sp-io ={ version = "2.0.0", path = "../../primitives/io" } +sp-io ={ version = "2.0.0-dev", path = "../../primitives/io" } [features] default = ["std"] diff --git a/frame/identity/Cargo.toml b/frame/identity/Cargo.toml index c95d230230..f275dba069 100644 --- a/frame/identity/Cargo.toml +++ b/frame/identity/Cargo.toml @@ -1,24 +1,26 @@ [package] name = "pallet-identity" -version = "2.0.0" +version = "2.0.0-dev" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" +homepage = "https://substrate.dev" +repository = "https://github.com/paritytech/substrate/" [dependencies] serde = { version = "1.0.101", optional = true } codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } enumflags2 = { version = "0.6.2" } -sp-std = { version = "2.0.0", default-features = false, path = "../../primitives/std" } -sp-io = { version = "2.0.0", default-features = false, path = "../../primitives/io" } -sp-runtime = { version = "2.0.0", default-features = false, path = "../../primitives/runtime" } -frame-benchmarking = { version = "2.0.0", default-features = false, path = "../benchmarking" } -frame-support = { version = "2.0.0", default-features = false, path = "../support" } -frame-system = { version = "2.0.0", default-features = false, path = "../system" } +sp-std = { version = "2.0.0-dev", default-features = false, path = "../../primitives/std" } +sp-io = { version = "2.0.0-dev", default-features = false, path = "../../primitives/io" } +sp-runtime = { version = "2.0.0-dev", default-features = false, path = "../../primitives/runtime" } +frame-benchmarking = { version = "2.0.0-dev", default-features = false, path = "../benchmarking" } +frame-support = { version = "2.0.0-dev", default-features = false, path = "../support" } +frame-system = { version = "2.0.0-dev", default-features = false, path = "../system" } [dev-dependencies] -sp-core = { version = "2.0.0", path = "../../primitives/core" } -pallet-balances = { version = "2.0.0", path = "../balances" } +sp-core = { version = "2.0.0-dev", path = "../../primitives/core" } +pallet-balances = { version = "2.0.0-dev", path = "../balances" } [features] default = ["std"] diff --git a/frame/im-online/Cargo.toml b/frame/im-online/Cargo.toml index 46bff2dc35..d04b2f47a3 100644 --- a/frame/im-online/Cargo.toml +++ b/frame/im-online/Cargo.toml @@ -1,23 +1,25 @@ [package] name = "pallet-im-online" -version = "2.0.0" +version = "2.0.0-dev" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" +homepage = "https://substrate.dev" +repository = "https://github.com/paritytech/substrate/" [dependencies] -sp-application-crypto = { version = "2.0.0", default-features = false, path = "../../primitives/application-crypto" } -pallet-authorship = { version = "2.0.0", default-features = false, path = "../authorship" } +sp-application-crypto = { version = "2.0.0-dev", default-features = false, path = "../../primitives/application-crypto" } +pallet-authorship = { version = "2.0.0-dev", default-features = false, path = "../authorship" } codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } -sp-core = { version = "2.0.0", default-features = false, path = "../../primitives/core" } -sp-std = { version = "2.0.0", default-features = false, path = "../../primitives/std" } +sp-core = { version = "2.0.0-dev", default-features = false, path = "../../primitives/core" } +sp-std = { version = "2.0.0-dev", default-features = false, path = "../../primitives/std" } serde = { version = "1.0.101", optional = true } -pallet-session = { version = "2.0.0", default-features = false, path = "../session" } -sp-io = { version = "2.0.0", default-features = false, path = "../../primitives/io" } -sp-runtime = { version = "2.0.0", default-features = false, path = "../../primitives/runtime" } -sp-staking = { version = "2.0.0", default-features = false, path = "../../primitives/staking" } -frame-support = { version = "2.0.0", default-features = false, path = "../support" } -frame-system = { version = "2.0.0", default-features = false, path = "../system" } +pallet-session = { version = "2.0.0-dev", default-features = false, path = "../session" } +sp-io = { version = "2.0.0-dev", default-features = false, path = "../../primitives/io" } +sp-runtime = { version = "2.0.0-dev", default-features = false, path = "../../primitives/runtime" } +sp-staking = { version = "2.0.0-dev", default-features = false, path = "../../primitives/staking" } +frame-support = { version = "2.0.0-dev", default-features = false, path = "../support" } +frame-system = { version = "2.0.0-dev", default-features = false, path = "../system" } [features] default = ["std", "pallet-session/historical"] diff --git a/frame/indices/Cargo.toml b/frame/indices/Cargo.toml index eb5298dcfa..b02b96fc3b 100644 --- a/frame/indices/Cargo.toml +++ b/frame/indices/Cargo.toml @@ -1,23 +1,25 @@ [package] name = "pallet-indices" -version = "2.0.0" +version = "2.0.0-dev" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" +homepage = "https://substrate.dev" +repository = "https://github.com/paritytech/substrate/" [dependencies] serde = { version = "1.0.101", optional = true } codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } -sp-keyring = { version = "2.0.0", optional = true, path = "../../primitives/keyring" } -sp-std = { version = "2.0.0", default-features = false, path = "../../primitives/std" } -sp-io = { version = "2.0.0", default-features = false, path = "../../primitives/io" } -sp-runtime = { version = "2.0.0", default-features = false, path = "../../primitives/runtime" } -sp-core = { version = "2.0.0", default-features = false, path = "../../primitives/core" } -frame-support = { version = "2.0.0", default-features = false, path = "../support" } -frame-system = { version = "2.0.0", default-features = false, path = "../system" } +sp-keyring = { version = "2.0.0-dev", optional = true, path = "../../primitives/keyring" } +sp-std = { version = "2.0.0-dev", default-features = false, path = "../../primitives/std" } +sp-io = { version = "2.0.0-dev", default-features = false, path = "../../primitives/io" } +sp-runtime = { version = "2.0.0-dev", default-features = false, path = "../../primitives/runtime" } +sp-core = { version = "2.0.0-dev", default-features = false, path = "../../primitives/core" } +frame-support = { version = "2.0.0-dev", default-features = false, path = "../support" } +frame-system = { version = "2.0.0-dev", default-features = false, path = "../system" } [dev-dependencies] -pallet-balances = { version = "2.0.0", path = "../balances" } +pallet-balances = { version = "2.0.0-dev", path = "../balances" } [features] default = ["std"] diff --git a/frame/membership/Cargo.toml b/frame/membership/Cargo.toml index 719718505e..2e3356950b 100644 --- a/frame/membership/Cargo.toml +++ b/frame/membership/Cargo.toml @@ -1,21 +1,23 @@ [package] name = "pallet-membership" -version = "2.0.0" +version = "2.0.0-dev" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" +homepage = "https://substrate.dev" +repository = "https://github.com/paritytech/substrate/" [dependencies] serde = { version = "1.0.101", optional = true } codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false } -sp-std = { version = "2.0.0", default-features = false, path = "../../primitives/std" } -sp-io = { version = "2.0.0", default-features = false, path = "../../primitives/io" } -frame-support = { version = "2.0.0", default-features = false, path = "../support" } -frame-system = { version = "2.0.0", default-features = false, path = "../system" } -sp-runtime = { version = "2.0.0", default-features = false, path = "../../primitives/runtime" } +sp-std = { version = "2.0.0-dev", default-features = false, path = "../../primitives/std" } +sp-io = { version = "2.0.0-dev", default-features = false, path = "../../primitives/io" } +frame-support = { version = "2.0.0-dev", default-features = false, path = "../support" } +frame-system = { version = "2.0.0-dev", default-features = false, path = "../system" } +sp-runtime = { version = "2.0.0-dev", default-features = false, path = "../../primitives/runtime" } [dev-dependencies] -sp-core = { version = "2.0.0", path = "../../primitives/core" } +sp-core = { version = "2.0.0-dev", path = "../../primitives/core" } [features] default = ["std"] diff --git a/frame/metadata/Cargo.toml b/frame/metadata/Cargo.toml index e245f04849..512898879a 100644 --- a/frame/metadata/Cargo.toml +++ b/frame/metadata/Cargo.toml @@ -1,15 +1,17 @@ [package] name = "frame-metadata" -version = "11.0.0" +version = "11.0.0-dev" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" +homepage = "https://substrate.dev" +repository = "https://github.com/paritytech/substrate/" [dependencies] codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } serde = { version = "1.0.101", optional = true, features = ["derive"] } -sp-std = { version = "2.0.0", default-features = false, path = "../../primitives/std" } -sp-core = { version = "2.0.0", default-features = false, path = "../../primitives/core" } +sp-std = { version = "2.0.0-dev", default-features = false, path = "../../primitives/std" } +sp-core = { version = "2.0.0-dev", default-features = false, path = "../../primitives/core" } [features] default = ["std"] diff --git a/frame/nicks/Cargo.toml b/frame/nicks/Cargo.toml index 7c05080d49..eedbaccfe5 100644 --- a/frame/nicks/Cargo.toml +++ b/frame/nicks/Cargo.toml @@ -1,22 +1,24 @@ [package] name = "pallet-nicks" -version = "2.0.0" +version = "2.0.0-dev" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" +homepage = "https://substrate.dev" +repository = "https://github.com/paritytech/substrate/" [dependencies] serde = { version = "1.0.101", optional = true } codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } -sp-std = { version = "2.0.0", default-features = false, path = "../../primitives/std" } -sp-io = { version = "2.0.0", default-features = false, path = "../../primitives/io" } -sp-runtime = { version = "2.0.0", default-features = false, path = "../../primitives/runtime" } -frame-support = { version = "2.0.0", default-features = false, path = "../support" } -frame-system = { version = "2.0.0", default-features = false, path = "../system" } +sp-std = { version = "2.0.0-dev", default-features = false, path = "../../primitives/std" } +sp-io = { version = "2.0.0-dev", default-features = false, path = "../../primitives/io" } +sp-runtime = { version = "2.0.0-dev", default-features = false, path = "../../primitives/runtime" } +frame-support = { version = "2.0.0-dev", default-features = false, path = "../support" } +frame-system = { version = "2.0.0-dev", default-features = false, path = "../system" } [dev-dependencies] -sp-core = { version = "2.0.0", path = "../../primitives/core" } -pallet-balances = { version = "2.0.0", path = "../balances" } +sp-core = { version = "2.0.0-dev", path = "../../primitives/core" } +pallet-balances = { version = "2.0.0-dev", path = "../balances" } [features] default = ["std"] diff --git a/frame/offences/Cargo.toml b/frame/offences/Cargo.toml index f5486f35ff..1c244a7413 100644 --- a/frame/offences/Cargo.toml +++ b/frame/offences/Cargo.toml @@ -1,23 +1,25 @@ [package] name = "pallet-offences" -version = "2.0.0" +version = "2.0.0-dev" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" +homepage = "https://substrate.dev" +repository = "https://github.com/paritytech/substrate/" [dependencies] -pallet-balances = { version = "2.0.0", default-features = false, path = "../balances" } +pallet-balances = { version = "2.0.0-dev", default-features = false, path = "../balances" } codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } -sp-std = { version = "2.0.0", default-features = false, path = "../../primitives/std" } +sp-std = { version = "2.0.0-dev", default-features = false, path = "../../primitives/std" } serde = { version = "1.0.101", optional = true } -sp-runtime = { version = "2.0.0", default-features = false, path = "../../primitives/runtime" } -sp-staking = { version = "2.0.0", default-features = false, path = "../../primitives/staking" } -frame-support = { version = "2.0.0", default-features = false, path = "../support" } -frame-system = { version = "2.0.0", default-features = false, path = "../system" } +sp-runtime = { version = "2.0.0-dev", default-features = false, path = "../../primitives/runtime" } +sp-staking = { version = "2.0.0-dev", default-features = false, path = "../../primitives/staking" } +frame-support = { version = "2.0.0-dev", default-features = false, path = "../support" } +frame-system = { version = "2.0.0-dev", default-features = false, path = "../system" } [dev-dependencies] -sp-io = { version = "2.0.0", path = "../../primitives/io" } -sp-core = { version = "2.0.0", path = "../../primitives/core" } +sp-io = { version = "2.0.0-dev", path = "../../primitives/io" } +sp-core = { version = "2.0.0-dev", path = "../../primitives/core" } [features] default = ["std"] diff --git a/frame/randomness-collective-flip/Cargo.toml b/frame/randomness-collective-flip/Cargo.toml index 56ff12d2df..d8bac86ab4 100644 --- a/frame/randomness-collective-flip/Cargo.toml +++ b/frame/randomness-collective-flip/Cargo.toml @@ -1,21 +1,23 @@ [package] name = "pallet-randomness-collective-flip" -version = "2.0.0" +version = "2.0.0-dev" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" +homepage = "https://substrate.dev" +repository = "https://github.com/paritytech/substrate/" [dependencies] safe-mix = { version = "1.0", default-features = false } codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } -sp-runtime = { version = "2.0.0", default-features = false, path = "../../primitives/runtime" } -frame-support = { version = "2.0.0", default-features = false, path = "../support" } -frame-system = { version = "2.0.0", default-features = false, path = "../system" } -sp-std = { version = "2.0.0", default-features = false, path = "../../primitives/std" } +sp-runtime = { version = "2.0.0-dev", default-features = false, path = "../../primitives/runtime" } +frame-support = { version = "2.0.0-dev", default-features = false, path = "../support" } +frame-system = { version = "2.0.0-dev", default-features = false, path = "../system" } +sp-std = { version = "2.0.0-dev", default-features = false, path = "../../primitives/std" } [dev-dependencies] -sp-core = { version = "2.0.0", path = "../../primitives/core" } -sp-io = { version = "2.0.0", path = "../../primitives/io" } +sp-core = { version = "2.0.0-dev", path = "../../primitives/core" } +sp-io = { version = "2.0.0-dev", path = "../../primitives/io" } [features] default = ["std"] diff --git a/frame/recovery/Cargo.toml b/frame/recovery/Cargo.toml index 645b1f2e98..13a74dcdcb 100644 --- a/frame/recovery/Cargo.toml +++ b/frame/recovery/Cargo.toml @@ -1,23 +1,25 @@ [package] name = "pallet-recovery" -version = "2.0.0" +version = "2.0.0-dev" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" +homepage = "https://substrate.dev" +repository = "https://github.com/paritytech/substrate/" [dependencies] serde = { version = "1.0.101", optional = true } codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } enumflags2 = { version = "0.6.2" } -sp-std = { version = "2.0.0", default-features = false, path = "../../primitives/std" } -sp-io = { version = "2.0.0", default-features = false, path = "../../primitives/io" } -sp-runtime = { version = "2.0.0", default-features = false, path = "../../primitives/runtime" } -frame-support = { version = "2.0.0", default-features = false, path = "../support" } -frame-system = { version = "2.0.0", default-features = false, path = "../system" } +sp-std = { version = "2.0.0-dev", default-features = false, path = "../../primitives/std" } +sp-io = { version = "2.0.0-dev", default-features = false, path = "../../primitives/io" } +sp-runtime = { version = "2.0.0-dev", default-features = false, path = "../../primitives/runtime" } +frame-support = { version = "2.0.0-dev", default-features = false, path = "../support" } +frame-system = { version = "2.0.0-dev", default-features = false, path = "../system" } [dev-dependencies] -sp-core = { version = "2.0.0", path = "../../primitives/core" } -pallet-balances = { version = "2.0.0", path = "../balances" } +sp-core = { version = "2.0.0-dev", path = "../../primitives/core" } +pallet-balances = { version = "2.0.0-dev", path = "../balances" } [features] default = ["std"] diff --git a/frame/scored-pool/Cargo.toml b/frame/scored-pool/Cargo.toml index c0935cd88b..b8ee128df6 100644 --- a/frame/scored-pool/Cargo.toml +++ b/frame/scored-pool/Cargo.toml @@ -1,22 +1,24 @@ [package] name = "pallet-scored-pool" -version = "2.0.0" +version = "2.0.0-dev" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" +homepage = "https://substrate.dev" +repository = "https://github.com/paritytech/substrate/" [dependencies] codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } serde = { version = "1.0.101", optional = true } -sp-io = { version = "2.0.0", default-features = false, path = "../../primitives/io" } -sp-runtime = { version = "2.0.0", default-features = false, path = "../../primitives/runtime" } -sp-std = { version = "2.0.0", default-features = false, path = "../../primitives/std" } -frame-support = { version = "2.0.0", default-features = false, path = "../support" } -frame-system = { version = "2.0.0", default-features = false, path = "../system" } +sp-io = { version = "2.0.0-dev", default-features = false, path = "../../primitives/io" } +sp-runtime = { version = "2.0.0-dev", default-features = false, path = "../../primitives/runtime" } +sp-std = { version = "2.0.0-dev", default-features = false, path = "../../primitives/std" } +frame-support = { version = "2.0.0-dev", default-features = false, path = "../support" } +frame-system = { version = "2.0.0-dev", default-features = false, path = "../system" } [dev-dependencies] -pallet-balances = { version = "2.0.0", path = "../balances" } -sp-core = { version = "2.0.0", path = "../../primitives/core" } +pallet-balances = { version = "2.0.0-dev", path = "../balances" } +sp-core = { version = "2.0.0-dev", path = "../../primitives/core" } [features] default = ["std"] diff --git a/frame/session/Cargo.toml b/frame/session/Cargo.toml index 06981240b1..bee544f99a 100644 --- a/frame/session/Cargo.toml +++ b/frame/session/Cargo.toml @@ -1,26 +1,28 @@ [package] name = "pallet-session" -version = "2.0.0" +version = "2.0.0-dev" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" +homepage = "https://substrate.dev" +repository = "https://github.com/paritytech/substrate/" [dependencies] serde = { version = "1.0.101", optional = true } codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } -sp-std = { version = "2.0.0", default-features = false, path = "../../primitives/std" } -sp-runtime = { version = "2.0.0", default-features = false, path = "../../primitives/runtime" } -sp-staking = { version = "2.0.0", default-features = false, path = "../../primitives/staking" } -frame-support = { version = "2.0.0", default-features = false, path = "../support" } -frame-system = { version = "2.0.0", default-features = false, path = "../system" } -pallet-timestamp = { version = "2.0.0", default-features = false, path = "../timestamp" } -sp-trie = { optional = true, path = "../../primitives/trie", default-features = false } -sp-io ={ path = "../../primitives/io", default-features = false } +sp-std = { version = "2.0.0-dev", default-features = false, path = "../../primitives/std" } +sp-runtime = { version = "2.0.0-dev", default-features = false, path = "../../primitives/runtime" } +sp-staking = { version = "2.0.0-dev", default-features = false, path = "../../primitives/staking" } +frame-support = { version = "2.0.0-dev", default-features = false, path = "../support" } +frame-system = { version = "2.0.0-dev", default-features = false, path = "../system" } +pallet-timestamp = { version = "2.0.0-dev", default-features = false, path = "../timestamp" } +sp-trie = { optional = true, path = "../../primitives/trie", default-features = false , version = "2.0.0-dev"} +sp-io ={ path = "../../primitives/io", default-features = false , version = "2.0.0-dev"} impl-trait-for-tuples = "0.1.3" [dev-dependencies] -sp-core = { version = "2.0.0", path = "../../primitives/core" } -sp-application-crypto = { version = "2.0.0", path = "../../primitives/application-crypto" } +sp-core = { version = "2.0.0-dev", path = "../../primitives/core" } +sp-application-crypto = { version = "2.0.0-dev", path = "../../primitives/application-crypto" } lazy_static = "1.4.0" [features] diff --git a/frame/society/Cargo.toml b/frame/society/Cargo.toml index ac140c9714..248820b522 100644 --- a/frame/society/Cargo.toml +++ b/frame/society/Cargo.toml @@ -1,23 +1,25 @@ [package] name = "pallet-society" -version = "2.0.0" +version = "2.0.0-dev" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" +homepage = "https://substrate.dev" +repository = "https://github.com/paritytech/substrate/" [dependencies] serde = { version = "1.0.101", optional = true } codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } -sp-io ={ path = "../../primitives/io", default-features = false } -sp-runtime = { version = "2.0.0", default-features = false, path = "../../primitives/runtime" } -sp-std = { version = "2.0.0", default-features = false, path = "../../primitives/std" } -frame-support = { version = "2.0.0", default-features = false, path = "../support" } -frame-system = { version = "2.0.0", default-features = false, path = "../system" } +sp-io ={ path = "../../primitives/io", default-features = false , version = "2.0.0-dev"} +sp-runtime = { version = "2.0.0-dev", default-features = false, path = "../../primitives/runtime" } +sp-std = { version = "2.0.0-dev", default-features = false, path = "../../primitives/std" } +frame-support = { version = "2.0.0-dev", default-features = false, path = "../support" } +frame-system = { version = "2.0.0-dev", default-features = false, path = "../system" } rand_chacha = { version = "0.2", default-features = false } [dev-dependencies] -sp-core = { version = "2.0.0", path = "../../primitives/core" } -pallet-balances = { version = "2.0.0", path = "../balances" } +sp-core = { version = "2.0.0-dev", path = "../../primitives/core" } +pallet-balances = { version = "2.0.0-dev", path = "../balances" } [features] default = ["std"] diff --git a/frame/staking/Cargo.toml b/frame/staking/Cargo.toml index a38cc0416b..7eb7772054 100644 --- a/frame/staking/Cargo.toml +++ b/frame/staking/Cargo.toml @@ -1,30 +1,32 @@ [package] name = "pallet-staking" -version = "2.0.0" +version = "2.0.0-dev" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" +homepage = "https://substrate.dev" +repository = "https://github.com/paritytech/substrate/" [dependencies] serde = { version = "1.0.101", optional = true } codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } -sp-keyring = { version = "2.0.0", optional = true, path = "../../primitives/keyring" } -sp-std = { version = "2.0.0", default-features = false, path = "../../primitives/std" } -sp-phragmen = { version = "2.0.0", default-features = false, path = "../../primitives/phragmen" } -sp-io ={ path = "../../primitives/io", default-features = false } -sp-runtime = { version = "2.0.0", default-features = false, path = "../../primitives/runtime" } -sp-staking = { version = "2.0.0", default-features = false, path = "../../primitives/staking" } -frame-support = { version = "2.0.0", default-features = false, path = "../support" } -frame-system = { version = "2.0.0", default-features = false, path = "../system" } -pallet-session = { version = "2.0.0", features = ["historical"], path = "../session", default-features = false } -pallet-authorship = { version = "2.0.0", default-features = false, path = "../authorship" } +sp-keyring = { version = "2.0.0-dev", optional = true, path = "../../primitives/keyring" } +sp-std = { version = "2.0.0-dev", default-features = false, path = "../../primitives/std" } +sp-phragmen = { version = "2.0.0-dev", default-features = false, path = "../../primitives/phragmen" } +sp-io ={ path = "../../primitives/io", default-features = false , version = "2.0.0-dev"} +sp-runtime = { version = "2.0.0-dev", default-features = false, path = "../../primitives/runtime" } +sp-staking = { version = "2.0.0-dev", default-features = false, path = "../../primitives/staking" } +frame-support = { version = "2.0.0-dev", default-features = false, path = "../support" } +frame-system = { version = "2.0.0-dev", default-features = false, path = "../system" } +pallet-session = { version = "2.0.0-dev", features = ["historical"], path = "../session", default-features = false } +pallet-authorship = { version = "2.0.0-dev", default-features = false, path = "../authorship" } [dev-dependencies] -sp-core = { version = "2.0.0", path = "../../primitives/core" } -pallet-balances = { version = "2.0.0", path = "../balances" } -pallet-timestamp = { version = "2.0.0", path = "../timestamp" } -pallet-staking-reward-curve = { version = "2.0.0", path = "../staking/reward-curve" } -substrate-test-utils = { version = "2.0.0", path = "../../test-utils" } +sp-core = { version = "2.0.0-dev", path = "../../primitives/core" } +pallet-balances = { version = "2.0.0-dev", path = "../balances" } +pallet-timestamp = { version = "2.0.0-dev", path = "../timestamp" } +pallet-staking-reward-curve = { version = "2.0.0-dev", path = "../staking/reward-curve" } +substrate-test-utils = { version = "2.0.0-dev", path = "../../test-utils" } [features] migrate = [] diff --git a/frame/staking/reward-curve/Cargo.toml b/frame/staking/reward-curve/Cargo.toml index 0753400596..95567f167f 100644 --- a/frame/staking/reward-curve/Cargo.toml +++ b/frame/staking/reward-curve/Cargo.toml @@ -1,9 +1,11 @@ [package] name = "pallet-staking-reward-curve" -version = "2.0.0" +version = "2.0.0-dev" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" +homepage = "https://substrate.dev" +repository = "https://github.com/paritytech/substrate/" [lib] proc-macro = true @@ -15,4 +17,4 @@ proc-macro2 = "1.0.6" proc-macro-crate = "0.1.4" [dev-dependencies] -sp-runtime = { version = "2.0.0", path = "../../../primitives/runtime" } +sp-runtime = { version = "2.0.0-dev", path = "../../../primitives/runtime" } diff --git a/frame/sudo/Cargo.toml b/frame/sudo/Cargo.toml index ac91129c57..979d58ee4e 100644 --- a/frame/sudo/Cargo.toml +++ b/frame/sudo/Cargo.toml @@ -1,21 +1,23 @@ [package] name = "pallet-sudo" -version = "2.0.0" +version = "2.0.0-dev" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" +homepage = "https://substrate.dev" +repository = "https://github.com/paritytech/substrate/" [dependencies] serde = { version = "1.0.101", optional = true } codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } -sp-std = { version = "2.0.0", default-features = false, path = "../../primitives/std" } -sp-io = { version = "2.0.0", default-features = false, path = "../../primitives/io" } -sp-runtime = { version = "2.0.0", default-features = false, path = "../../primitives/runtime" } -frame-support = { version = "2.0.0", default-features = false, path = "../support" } -frame-system = { version = "2.0.0", default-features = false, path = "../system" } +sp-std = { version = "2.0.0-dev", default-features = false, path = "../../primitives/std" } +sp-io = { version = "2.0.0-dev", default-features = false, path = "../../primitives/io" } +sp-runtime = { version = "2.0.0-dev", default-features = false, path = "../../primitives/runtime" } +frame-support = { version = "2.0.0-dev", default-features = false, path = "../support" } +frame-system = { version = "2.0.0-dev", default-features = false, path = "../system" } [dev-dependencies] -sp-core = { version = "2.0.0", path = "../../primitives/core" } +sp-core = { version = "2.0.0-dev", path = "../../primitives/core" } [features] default = ["std"] diff --git a/frame/support/Cargo.toml b/frame/support/Cargo.toml index b20f5c73bf..08c81ba5ef 100644 --- a/frame/support/Cargo.toml +++ b/frame/support/Cargo.toml @@ -1,32 +1,34 @@ [package] name = "frame-support" -version = "2.0.0" +version = "2.0.0-dev" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" +homepage = "https://substrate.dev" +repository = "https://github.com/paritytech/substrate/" [dependencies] log = "0.4" serde = { version = "1.0.101", optional = true, features = ["derive"] } codec = { package = "parity-scale-codec", version = "1.0.6", default-features = false, features = ["derive"] } -frame-metadata = { version = "11.0.0", default-features = false, path = "../metadata" } -sp-std = { version = "2.0.0", default-features = false, path = "../../primitives/std" } -sp-io ={ path = "../../primitives/io", default-features = false } -sp-runtime = { version = "2.0.0", default-features = false, path = "../../primitives/runtime" } -sp-core = { version = "2.0.0", default-features = false, path = "../../primitives/core" } -sp-arithmetic = { version = "2.0.0", default-features = false, path = "../../primitives/arithmetic" } -sp-inherents = { version = "2.0.0", default-features = false, path = "../../primitives/inherents" } -frame-support-procedural = { version = "2.0.0", path = "./procedural" } +frame-metadata = { version = "11.0.0-dev", default-features = false, path = "../metadata" } +sp-std = { version = "2.0.0-dev", default-features = false, path = "../../primitives/std" } +sp-io ={ path = "../../primitives/io", default-features = false , version = "2.0.0-dev"} +sp-runtime = { version = "2.0.0-dev", default-features = false, path = "../../primitives/runtime" } +sp-core = { version = "2.0.0-dev", default-features = false, path = "../../primitives/core" } +sp-arithmetic = { version = "2.0.0-dev", default-features = false, path = "../../primitives/arithmetic" } +sp-inherents = { version = "2.0.0-dev", default-features = false, path = "../../primitives/inherents" } +frame-support-procedural = { version = "2.0.0-dev", path = "./procedural" } paste = "0.1.6" once_cell = { version = "1", default-features = false, optional = true } -sp-state-machine = { version = "0.8", optional = true, path = "../../primitives/state-machine" } +sp-state-machine = { version = "0.8.0-dev", optional = true, path = "../../primitives/state-machine" } bitmask = { version = "0.5.0", default-features = false } impl-trait-for-tuples = "0.1.3" tracing = { version = "0.1.10", optional = true } [dev-dependencies] pretty_assertions = "0.6.1" -frame-system = { version = "2.0.0", path = "../system" } +frame-system = { version = "2.0.0-dev", path = "../system" } [features] default = ["std"] diff --git a/frame/support/procedural/Cargo.toml b/frame/support/procedural/Cargo.toml index 06a84750b5..965f964b2d 100644 --- a/frame/support/procedural/Cargo.toml +++ b/frame/support/procedural/Cargo.toml @@ -1,15 +1,17 @@ [package] name = "frame-support-procedural" -version = "2.0.0" +version = "2.0.0-dev" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" +homepage = "https://substrate.dev" +repository = "https://github.com/paritytech/substrate/" [lib] proc-macro = true [dependencies] -frame-support-procedural-tools = { version = "2.0.0", path = "./tools" } +frame-support-procedural-tools = { version = "2.0.0-dev", path = "./tools" } proc-macro2 = "1.0.6" quote = "1.0.2" syn = { version = "1.0.7", features = ["full"] } diff --git a/frame/support/procedural/tools/Cargo.toml b/frame/support/procedural/tools/Cargo.toml index 4a1301e712..c1f56fecc7 100644 --- a/frame/support/procedural/tools/Cargo.toml +++ b/frame/support/procedural/tools/Cargo.toml @@ -1,12 +1,14 @@ [package] name = "frame-support-procedural-tools" -version = "2.0.0" +version = "2.0.0-dev" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" +homepage = "https://substrate.dev" +repository = "https://github.com/paritytech/substrate/" [dependencies] -frame-support-procedural-tools-derive = { version = "2.0.0", path = "./derive" } +frame-support-procedural-tools-derive = { version = "2.0.0-dev", path = "./derive" } proc-macro2 = "1.0.6" quote = "1.0.2" syn = { version = "1.0.7", features = ["full", "visit"] } diff --git a/frame/support/procedural/tools/derive/Cargo.toml b/frame/support/procedural/tools/derive/Cargo.toml index e65a7e0e5f..6eee6d3186 100644 --- a/frame/support/procedural/tools/derive/Cargo.toml +++ b/frame/support/procedural/tools/derive/Cargo.toml @@ -1,9 +1,11 @@ [package] name = "frame-support-procedural-tools-derive" -version = "2.0.0" +version = "2.0.0-dev" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" +homepage = "https://substrate.dev" +repository = "https://github.com/paritytech/substrate/" [lib] proc-macro = true diff --git a/frame/support/test/Cargo.toml b/frame/support/test/Cargo.toml index 71d3893426..df66918a2e 100644 --- a/frame/support/test/Cargo.toml +++ b/frame/support/test/Cargo.toml @@ -1,19 +1,22 @@ [package] name = "frame-support-test" -version = "2.0.0" +version = "2.0.0-dev" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" +publish = false +homepage = "https://substrate.dev" +repository = "https://github.com/paritytech/substrate/" [dependencies] serde = { version = "1.0.101", default-features = false, features = ["derive"] } codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } -sp-io ={ path = "../../../primitives/io", default-features = false } -sp-state-machine = { version = "0.8", optional = true, path = "../../../primitives/state-machine" } -frame-support = { version = "2.0.0", default-features = false, path = "../" } -sp-inherents = { version = "2.0.0", default-features = false, path = "../../../primitives/inherents" } -sp-runtime = { version = "2.0.0", default-features = false, path = "../../../primitives/runtime" } -sp-core = { version = "2.0.0", default-features = false, path = "../../../primitives/core" } +sp-io ={ path = "../../../primitives/io", default-features = false , version = "2.0.0-dev"} +sp-state-machine = { version = "0.8.0-dev", optional = true, path = "../../../primitives/state-machine" } +frame-support = { version = "2.0.0-dev", default-features = false, path = "../" } +sp-inherents = { version = "2.0.0-dev", default-features = false, path = "../../../primitives/inherents" } +sp-runtime = { version = "2.0.0-dev", default-features = false, path = "../../../primitives/runtime" } +sp-core = { version = "2.0.0-dev", default-features = false, path = "../../../primitives/core" } trybuild = "1.0.17" pretty_assertions = "0.6.1" diff --git a/frame/system/Cargo.toml b/frame/system/Cargo.toml index 631d8eecb4..0c779e5d34 100644 --- a/frame/system/Cargo.toml +++ b/frame/system/Cargo.toml @@ -1,25 +1,27 @@ [package] name = "frame-system" -version = "2.0.0" +version = "2.0.0-dev" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" +homepage = "https://substrate.dev" +repository = "https://github.com/paritytech/substrate/" [dependencies] serde = { version = "1.0.101", optional = true, features = ["derive"] } codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } -sp-core = { version = "2.0.0", default-features = false, path = "../../primitives/core" } -sp-std = { version = "2.0.0", default-features = false, path = "../../primitives/std" } -sp-io ={ path = "../../primitives/io", default-features = false } -sp-runtime = { version = "2.0.0", default-features = false, path = "../../primitives/runtime" } -sp-version = { version = "2.0.0", default-features = false, path = "../../primitives/version" } -frame-support = { version = "2.0.0", default-features = false, path = "../support" } +sp-core = { version = "2.0.0-dev", default-features = false, path = "../../primitives/core" } +sp-std = { version = "2.0.0-dev", default-features = false, path = "../../primitives/std" } +sp-io ={ path = "../../primitives/io", default-features = false , version = "2.0.0-dev"} +sp-runtime = { version = "2.0.0-dev", default-features = false, path = "../../primitives/runtime" } +sp-version = { version = "2.0.0-dev", default-features = false, path = "../../primitives/version" } +frame-support = { version = "2.0.0-dev", default-features = false, path = "../support" } impl-trait-for-tuples = "0.1.3" [dev-dependencies] criterion = "0.2.11" -sp-externalities = { version = "0.8.0", path = "../../primitives/externalities" } -substrate-test-runtime-client = { version = "2.0.0", path = "../../test-utils/runtime/client" } +sp-externalities = { version = "0.8.0-dev", path = "../../primitives/externalities" } +substrate-test-runtime-client = { version = "2.0.0-dev", path = "../../test-utils/runtime/client" } [features] default = ["std"] diff --git a/frame/system/rpc/runtime-api/Cargo.toml b/frame/system/rpc/runtime-api/Cargo.toml index 6244032376..1d1ed8da47 100644 --- a/frame/system/rpc/runtime-api/Cargo.toml +++ b/frame/system/rpc/runtime-api/Cargo.toml @@ -1,12 +1,14 @@ [package] name = "frame-system-rpc-runtime-api" -version = "2.0.0" +version = "2.0.0-dev" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" +homepage = "https://substrate.dev" +repository = "https://github.com/paritytech/substrate/" [dependencies] -sp-api = { version = "2.0.0", default-features = false, path = "../../../../primitives/api" } +sp-api = { version = "2.0.0-dev", default-features = false, path = "../../../../primitives/api" } codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false } [features] diff --git a/frame/timestamp/Cargo.toml b/frame/timestamp/Cargo.toml index 107374799d..136036b307 100644 --- a/frame/timestamp/Cargo.toml +++ b/frame/timestamp/Cargo.toml @@ -1,26 +1,28 @@ [package] name = "pallet-timestamp" -version = "2.0.0" +version = "2.0.0-dev" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" +homepage = "https://substrate.dev" +repository = "https://github.com/paritytech/substrate/" [dependencies] serde = { version = "1.0.101", optional = true } codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } -sp-std = { version = "2.0.0", default-features = false, path = "../../primitives/std" } -sp-io = { version = "2.0.0", default-features = false, path = "../../primitives/io" } -sp-runtime = { version = "2.0.0", default-features = false, path = "../../primitives/runtime" } -sp-inherents = { version = "2.0.0", default-features = false, path = "../../primitives/inherents" } -frame-benchmarking = { version = "2.0.0", default-features = false, path = "../benchmarking" } -frame-support = { version = "2.0.0", default-features = false, path = "../support" } -frame-system = { version = "2.0.0", default-features = false, path = "../system" } -sp-timestamp = { version = "2.0.0", default-features = false, path = "../../primitives/timestamp" } +sp-std = { version = "2.0.0-dev", default-features = false, path = "../../primitives/std" } +sp-io = { version = "2.0.0-dev", default-features = false, path = "../../primitives/io" } +sp-runtime = { version = "2.0.0-dev", default-features = false, path = "../../primitives/runtime" } +sp-inherents = { version = "2.0.0-dev", default-features = false, path = "../../primitives/inherents" } +frame-benchmarking = { version = "2.0.0-dev", default-features = false, path = "../benchmarking" } +frame-support = { version = "2.0.0-dev", default-features = false, path = "../support" } +frame-system = { version = "2.0.0-dev", default-features = false, path = "../system" } +sp-timestamp = { version = "2.0.0-dev", default-features = false, path = "../../primitives/timestamp" } impl-trait-for-tuples = "0.1.3" [dev-dependencies] -sp-io ={ version = "2.0.0", path = "../../primitives/io" } -sp-core = { version = "2.0.0", path = "../../primitives/core" } +sp-io ={ version = "2.0.0-dev", path = "../../primitives/io" } +sp-core = { version = "2.0.0-dev", path = "../../primitives/core" } [features] default = ["std"] diff --git a/frame/transaction-payment/Cargo.toml b/frame/transaction-payment/Cargo.toml index ac3dbb2c2b..f989a7e339 100644 --- a/frame/transaction-payment/Cargo.toml +++ b/frame/transaction-payment/Cargo.toml @@ -1,22 +1,24 @@ [package] name = "pallet-transaction-payment" -version = "2.0.0" +version = "2.0.0-dev" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" +homepage = "https://substrate.dev" +repository = "https://github.com/paritytech/substrate/" [dependencies] codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } -sp-std = { version = "2.0.0", default-features = false, path = "../../primitives/std" } -sp-runtime = { version = "2.0.0", default-features = false, path = "../../primitives/runtime" } -frame-support = { version = "2.0.0", default-features = false, path = "../support" } -frame-system = { version = "2.0.0", default-features = false, path = "../system" } -pallet-transaction-payment-rpc-runtime-api = { version = "2.0.0", default-features = false, path = "./rpc/runtime-api" } +sp-std = { version = "2.0.0-dev", default-features = false, path = "../../primitives/std" } +sp-runtime = { version = "2.0.0-dev", default-features = false, path = "../../primitives/runtime" } +frame-support = { version = "2.0.0-dev", default-features = false, path = "../support" } +frame-system = { version = "2.0.0-dev", default-features = false, path = "../system" } +pallet-transaction-payment-rpc-runtime-api = { version = "2.0.0-dev", default-features = false, path = "./rpc/runtime-api" } [dev-dependencies] -sp-io = { version = "2.0.0", path = "../../primitives/io" } -sp-core = { version = "2.0.0", path = "../../primitives/core" } -pallet-balances = { version = "2.0.0", path = "../balances" } +sp-io = { version = "2.0.0-dev", path = "../../primitives/io" } +sp-core = { version = "2.0.0-dev", path = "../../primitives/core" } +pallet-balances = { version = "2.0.0-dev", path = "../balances" } [features] default = ["std"] diff --git a/frame/transaction-payment/rpc/Cargo.toml b/frame/transaction-payment/rpc/Cargo.toml index 5fb5f5e274..c8f3aa2776 100644 --- a/frame/transaction-payment/rpc/Cargo.toml +++ b/frame/transaction-payment/rpc/Cargo.toml @@ -1,19 +1,21 @@ [package] name = "pallet-transaction-payment-rpc" -version = "2.0.0" +version = "2.0.0-dev" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" +homepage = "https://substrate.dev" +repository = "https://github.com/paritytech/substrate/" [dependencies] codec = { package = "parity-scale-codec", version = "1.0.0" } jsonrpc-core = "14.0.3" jsonrpc-core-client = "14.0.3" jsonrpc-derive = "14.0.3" -sp-core = { version = "2.0.0", path = "../../../primitives/core" } -sp-rpc = { version = "2.0.0", path = "../../../primitives/rpc" } +sp-core = { version = "2.0.0-dev", path = "../../../primitives/core" } +sp-rpc = { version = "2.0.0-dev", path = "../../../primitives/rpc" } serde = { version = "1.0.101", features = ["derive"] } -sp-runtime = { version = "2.0.0", path = "../../../primitives/runtime" } -sp-api = { version = "2.0.0", path = "../../../primitives/api" } -sp-blockchain = { version = "2.0.0", path = "../../../primitives/blockchain" } -pallet-transaction-payment-rpc-runtime-api = { version = "2.0.0", path = "./runtime-api" } +sp-runtime = { version = "2.0.0-dev", path = "../../../primitives/runtime" } +sp-api = { version = "2.0.0-dev", path = "../../../primitives/api" } +sp-blockchain = { version = "2.0.0-dev", path = "../../../primitives/blockchain" } +pallet-transaction-payment-rpc-runtime-api = { version = "2.0.0-dev", path = "./runtime-api" } diff --git a/frame/transaction-payment/rpc/runtime-api/Cargo.toml b/frame/transaction-payment/rpc/runtime-api/Cargo.toml index 8ee16a90dc..f42ffabbef 100644 --- a/frame/transaction-payment/rpc/runtime-api/Cargo.toml +++ b/frame/transaction-payment/rpc/runtime-api/Cargo.toml @@ -1,17 +1,19 @@ [package] name = "pallet-transaction-payment-rpc-runtime-api" -version = "2.0.0" +version = "2.0.0-dev" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" +homepage = "https://substrate.dev" +repository = "https://github.com/paritytech/substrate/" [dependencies] serde = { version = "1.0.101", optional = true, features = ["derive"] } -sp-api = { version = "2.0.0", default-features = false, path = "../../../../primitives/api" } +sp-api = { version = "2.0.0-dev", default-features = false, path = "../../../../primitives/api" } codec = { package = "parity-scale-codec", version = "1.0.6", default-features = false, features = ["derive"] } -sp-std = { version = "2.0.0", default-features = false, path = "../../../../primitives/std" } -sp-runtime = { version = "2.0.0", default-features = false, path = "../../../../primitives/runtime" } -frame-support = { version = "2.0.0", default-features = false, path = "../../../support" } +sp-std = { version = "2.0.0-dev", default-features = false, path = "../../../../primitives/std" } +sp-runtime = { version = "2.0.0-dev", default-features = false, path = "../../../../primitives/runtime" } +frame-support = { version = "2.0.0-dev", default-features = false, path = "../../../support" } [dev-dependencies] serde_json = "1.0.41" diff --git a/frame/treasury/Cargo.toml b/frame/treasury/Cargo.toml index 10226f3572..cac17bd8ad 100644 --- a/frame/treasury/Cargo.toml +++ b/frame/treasury/Cargo.toml @@ -1,22 +1,24 @@ [package] name = "pallet-treasury" -version = "2.0.0" +version = "2.0.0-dev" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" +homepage = "https://substrate.dev" +repository = "https://github.com/paritytech/substrate/" [dependencies] serde = { version = "1.0.101", optional = true, features = ["derive"] } codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } -sp-std = { version = "2.0.0", default-features = false, path = "../../primitives/std" } -sp-runtime = { version = "2.0.0", default-features = false, path = "../../primitives/runtime" } -frame-support = { version = "2.0.0", default-features = false, path = "../support" } -frame-system = { version = "2.0.0", default-features = false, path = "../system" } -pallet-balances = { version = "2.0.0", default-features = false, path = "../balances" } +sp-std = { version = "2.0.0-dev", default-features = false, path = "../../primitives/std" } +sp-runtime = { version = "2.0.0-dev", default-features = false, path = "../../primitives/runtime" } +frame-support = { version = "2.0.0-dev", default-features = false, path = "../support" } +frame-system = { version = "2.0.0-dev", default-features = false, path = "../system" } +pallet-balances = { version = "2.0.0-dev", default-features = false, path = "../balances" } [dev-dependencies] -sp-io ={ version = "2.0.0", path = "../../primitives/io" } -sp-core = { version = "2.0.0", path = "../../primitives/core" } +sp-io ={ version = "2.0.0-dev", path = "../../primitives/io" } +sp-core = { version = "2.0.0-dev", path = "../../primitives/core" } [features] default = ["std"] diff --git a/frame/utility/Cargo.toml b/frame/utility/Cargo.toml index 6d1187b0ee..3514a39739 100644 --- a/frame/utility/Cargo.toml +++ b/frame/utility/Cargo.toml @@ -1,23 +1,25 @@ [package] name = "pallet-utility" -version = "2.0.0" +version = "2.0.0-dev" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" +homepage = "https://substrate.dev" +repository = "https://github.com/paritytech/substrate/" [dependencies] serde = { version = "1.0.101", optional = true } codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false } -frame-support = { version = "2.0.0", default-features = false, path = "../support" } -frame-system = { version = "2.0.0", default-features = false, path = "../system" } -sp-core = { version = "2.0.0", default-features = false, path = "../../primitives/core" } -sp-runtime = { version = "2.0.0", default-features = false, path = "../../primitives/runtime" } -sp-std = { version = "2.0.0", default-features = false, path = "../../primitives/std" } -sp-io = { version = "2.0.0", default-features = false, path = "../../primitives/io" } +frame-support = { version = "2.0.0-dev", default-features = false, path = "../support" } +frame-system = { version = "2.0.0-dev", default-features = false, path = "../system" } +sp-core = { version = "2.0.0-dev", default-features = false, path = "../../primitives/core" } +sp-runtime = { version = "2.0.0-dev", default-features = false, path = "../../primitives/runtime" } +sp-std = { version = "2.0.0-dev", default-features = false, path = "../../primitives/std" } +sp-io = { version = "2.0.0-dev", default-features = false, path = "../../primitives/io" } [dev-dependencies] -sp-core = { version = "2.0.0", path = "../../primitives/core" } -pallet-balances = { version = "2.0.0", path = "../balances" } +sp-core = { version = "2.0.0-dev", path = "../../primitives/core" } +pallet-balances = { version = "2.0.0-dev", path = "../balances" } [features] default = ["std"] diff --git a/frame/vesting/Cargo.toml b/frame/vesting/Cargo.toml index 6923297af5..f1bf0812de 100644 --- a/frame/vesting/Cargo.toml +++ b/frame/vesting/Cargo.toml @@ -1,23 +1,26 @@ [package] name = "pallet-vesting" -version = "2.0.0" +version = "2.0.0-dev" authors = ["Parity Technologies "] edition = "2018" +license = "GPL-3.0" +homepage = "https://substrate.dev" +repository = "https://github.com/paritytech/substrate/" [dependencies] serde = { version = "1.0.101", optional = true } codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } enumflags2 = { version = "0.6.2" } -sp-std = { version = "2.0.0", default-features = false, path = "../../primitives/std" } -sp-io = { version = "2.0.0", default-features = false, path = "../../primitives/io" } -sp-runtime = { version = "2.0.0", default-features = false, path = "../../primitives/runtime" } -frame-support = { version = "2.0.0", default-features = false, path = "../support" } -frame-system = { version = "2.0.0", default-features = false, path = "../system" } +sp-std = { version = "2.0.0-dev", default-features = false, path = "../../primitives/std" } +sp-io = { version = "2.0.0-dev", default-features = false, path = "../../primitives/io" } +sp-runtime = { version = "2.0.0-dev", default-features = false, path = "../../primitives/runtime" } +frame-support = { version = "2.0.0-dev", default-features = false, path = "../support" } +frame-system = { version = "2.0.0-dev", default-features = false, path = "../system" } [dev-dependencies] -sp-core = { version = "2.0.0", path = "../../primitives/core" } -pallet-balances = { version = "2.0.0", path = "../balances" } -sp-storage = { version = "2.0.0", path = "../../primitives/storage" } +sp-core = { version = "2.0.0-dev", path = "../../primitives/core" } +pallet-balances = { version = "2.0.0-dev", path = "../balances" } +sp-storage = { version = "2.0.0-dev", path = "../../primitives/storage" } hex-literal = "0.2.1" [features] diff --git a/primitives/allocator/Cargo.toml b/primitives/allocator/Cargo.toml index 3cfc9a4de6..c122931850 100644 --- a/primitives/allocator/Cargo.toml +++ b/primitives/allocator/Cargo.toml @@ -1,14 +1,16 @@ [package] name = "sp-allocator" -version = "2.0.0" +version = "2.0.0-dev" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" +homepage = "https://substrate.dev" +repository = "https://github.com/paritytech/substrate/" [dependencies] -sp-std = { version = "2.0.0", path = "../std", default-features = false } -sp-core = { version = "2.0.0", path = "../core", default-features = false } -sp-wasm-interface = { version = "2.0.0", path = "../wasm-interface", default-features = false } +sp-std = { version = "2.0.0-dev", path = "../std", default-features = false } +sp-core = { version = "2.0.0-dev", path = "../core", default-features = false } +sp-wasm-interface = { version = "2.0.0-dev", path = "../wasm-interface", default-features = false } log = { version = "0.4.8", optional = true } derive_more = { version = "0.99.2", optional = true } diff --git a/primitives/api/Cargo.toml b/primitives/api/Cargo.toml index f6966f9462..503dedc34d 100644 --- a/primitives/api/Cargo.toml +++ b/primitives/api/Cargo.toml @@ -1,22 +1,24 @@ [package] name = "sp-api" -version = "2.0.0" +version = "2.0.0-dev" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" +homepage = "https://substrate.dev" +repository = "https://github.com/paritytech/substrate/" [dependencies] codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false } -sp-api-proc-macro = { version = "2.0.0", path = "proc-macro" } -sp-core = { version = "2.0.0", default-features = false, path = "../core" } -sp-std = { version = "2.0.0", default-features = false, path = "../std" } -sp-runtime = { version = "2.0.0", default-features = false, path = "../runtime" } -sp-version = { version = "2.0.0", default-features = false, path = "../version" } -sp-state-machine = { version = "0.8", optional = true, path = "../../primitives/state-machine" } +sp-api-proc-macro = { version = "2.0.0-dev", path = "proc-macro" } +sp-core = { version = "2.0.0-dev", default-features = false, path = "../core" } +sp-std = { version = "2.0.0-dev", default-features = false, path = "../std" } +sp-runtime = { version = "2.0.0-dev", default-features = false, path = "../runtime" } +sp-version = { version = "2.0.0-dev", default-features = false, path = "../version" } +sp-state-machine = { version = "0.8.0-dev", optional = true, path = "../../primitives/state-machine" } hash-db = { version = "0.15.2", optional = true } [dev-dependencies] -sp-test-primitives = { version = "2.0.0", path = "../test-primitives" } +sp-test-primitives = { version = "2.0.0-dev", path = "../test-primitives" } [features] default = [ "std" ] diff --git a/primitives/api/proc-macro/Cargo.toml b/primitives/api/proc-macro/Cargo.toml index 66c2c5dba8..f9a56842ad 100644 --- a/primitives/api/proc-macro/Cargo.toml +++ b/primitives/api/proc-macro/Cargo.toml @@ -1,9 +1,11 @@ [package] name = "sp-api-proc-macro" -version = "2.0.0" +version = "2.0.0-dev" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" +homepage = "https://substrate.dev" +repository = "https://github.com/paritytech/substrate/" [lib] proc-macro = true diff --git a/primitives/api/test/Cargo.toml b/primitives/api/test/Cargo.toml index c193c9dc5e..f94f97d2e7 100644 --- a/primitives/api/test/Cargo.toml +++ b/primitives/api/test/Cargo.toml @@ -1,25 +1,28 @@ [package] name = "sp-api-test" -version = "2.0.0" +version = "2.0.0-dev" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" +publish = false +homepage = "https://substrate.dev" +repository = "https://github.com/paritytech/substrate/" [dependencies] -sp-api = { version = "2.0.0", path = "../" } -substrate-test-runtime-client = { version = "2.0.0", path = "../../../test-utils/runtime/client" } -sp-version = { version = "2.0.0", path = "../../version" } -sp-runtime = { version = "2.0.0", path = "../../runtime" } -sp-blockchain = { version = "2.0.0", path = "../../blockchain" } -sp-consensus = { version = "0.8", path = "../../../primitives/consensus/common" } +sp-api = { version = "2.0.0-dev", path = "../" } +substrate-test-runtime-client = { version = "2.0.0-dev", path = "../../../test-utils/runtime/client" } +sp-version = { version = "2.0.0-dev", path = "../../version" } +sp-runtime = { version = "2.0.0-dev", path = "../../runtime" } +sp-blockchain = { version = "2.0.0-dev", path = "../../blockchain" } +sp-consensus = { version = "0.8.0-dev", path = "../../../primitives/consensus/common" } codec = { package = "parity-scale-codec", version = "1.0.0" } -sp-state-machine = { version = "0.8", path = "../../../primitives/state-machine" } +sp-state-machine = { version = "0.8.0-dev", path = "../../../primitives/state-machine" } trybuild = "1.0.17" rustversion = "1.0.0" [dev-dependencies] criterion = "0.3.0" -substrate-test-runtime-client = { version = "2.0.0", path = "../../../test-utils/runtime/client" } +substrate-test-runtime-client = { version = "2.0.0-dev", path = "../../../test-utils/runtime/client" } [[bench]] name = "bench" diff --git a/primitives/application-crypto/Cargo.toml b/primitives/application-crypto/Cargo.toml index 1fa9a6631c..4459389dc6 100644 --- a/primitives/application-crypto/Cargo.toml +++ b/primitives/application-crypto/Cargo.toml @@ -1,17 +1,19 @@ [package] name = "sp-application-crypto" -version = "2.0.0" +version = "2.0.0-dev" authors = ["Parity Technologies "] edition = "2018" description = "Provides facilities for generating application specific crypto wrapper types." license = "GPL-3.0" +homepage = "https://substrate.dev" +repository = "https://github.com/paritytech/substrate/" [dependencies] -sp-core = { version = "2.0.0", default-features = false, path = "../core" } +sp-core = { version = "2.0.0-dev", default-features = false, path = "../core" } codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } serde = { version = "1.0.101", optional = true, features = ["derive"] } -sp-std = { version = "2.0.0", default-features = false, path = "../std" } -sp-io = { version = "2.0.0", default-features = false, path = "../../primitives/io" } +sp-std = { version = "2.0.0-dev", default-features = false, path = "../std" } +sp-io = { version = "2.0.0-dev", default-features = false, path = "../../primitives/io" } [features] default = [ "std" ] diff --git a/primitives/application-crypto/test/Cargo.toml b/primitives/application-crypto/test/Cargo.toml index de4412db2d..cc2fd0abd2 100644 --- a/primitives/application-crypto/test/Cargo.toml +++ b/primitives/application-crypto/test/Cargo.toml @@ -1,15 +1,17 @@ [package] name = "sp-application-crypto-test" -version = "2.0.0" +version = "2.0.0-dev" authors = ["Parity Technologies "] edition = "2018" description = "Integration tests for application-crypto" license = "GPL-3.0" publish = false +homepage = "https://substrate.dev" +repository = "https://github.com/paritytech/substrate/" [dependencies] -sp-core = { version = "2.0.0", default-features = false, path = "../../core" } -substrate-test-runtime-client = { version = "2.0.0", path = "../../../test-utils/runtime/client" } -sp-runtime = { version = "2.0.0", path = "../../runtime" } -sp-api = { version = "2.0.0", path = "../../api" } -sp-application-crypto = { version = "2.0.0", path = "../" } +sp-core = { version = "2.0.0-dev", default-features = false, path = "../../core" } +substrate-test-runtime-client = { version = "2.0.0-dev", path = "../../../test-utils/runtime/client" } +sp-runtime = { version = "2.0.0-dev", path = "../../runtime" } +sp-api = { version = "2.0.0-dev", path = "../../api" } +sp-application-crypto = { version = "2.0.0-dev", path = "../" } diff --git a/primitives/arithmetic/Cargo.toml b/primitives/arithmetic/Cargo.toml index 995e36d5c9..f327d091f6 100644 --- a/primitives/arithmetic/Cargo.toml +++ b/primitives/arithmetic/Cargo.toml @@ -1,17 +1,19 @@ [package] name = "sp-arithmetic" -version = "2.0.0" +version = "2.0.0-dev" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" +homepage = "https://substrate.dev" +repository = "https://github.com/paritytech/substrate/" [dependencies] codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } integer-sqrt = "0.1.2" num-traits = { version = "0.2.8", default-features = false } -sp-std = { version = "2.0.0", default-features = false, path = "../std" } +sp-std = { version = "2.0.0-dev", default-features = false, path = "../std" } serde = { version = "1.0.101", optional = true, features = ["derive"] } -sp-debug-derive = { version = "2.0.0", default-features = false, path = "../../primitives/debug-derive" } +sp-debug-derive = { version = "2.0.0-dev", default-features = false, path = "../../primitives/debug-derive" } [dev-dependencies] primitive-types = "0.6.2" diff --git a/primitives/authority-discovery/Cargo.toml b/primitives/authority-discovery/Cargo.toml index 44a7cad155..765f3a14c4 100644 --- a/primitives/authority-discovery/Cargo.toml +++ b/primitives/authority-discovery/Cargo.toml @@ -1,17 +1,19 @@ [package] name = "sp-authority-discovery" -version = "2.0.0" +version = "2.0.0-dev" authors = ["Parity Technologies "] description = "Authority discovery primitives" edition = "2018" license = "GPL-3.0" +homepage = "https://substrate.dev" +repository = "https://github.com/paritytech/substrate/" [dependencies] -sp-application-crypto = { version = "2.0.0", default-features = false, path = "../application-crypto" } +sp-application-crypto = { version = "2.0.0-dev", default-features = false, path = "../application-crypto" } codec = { package = "parity-scale-codec", default-features = false, version = "1.0.3" } -sp-std = { version = "2.0.0", default-features = false, path = "../std" } -sp-api = { version = "2.0.0", default-features = false, path = "../api" } -sp-runtime = { version = "2.0.0", default-features = false, path = "../runtime" } +sp-std = { version = "2.0.0-dev", default-features = false, path = "../std" } +sp-api = { version = "2.0.0-dev", default-features = false, path = "../api" } +sp-runtime = { version = "2.0.0-dev", default-features = false, path = "../runtime" } [features] default = ["std"] diff --git a/primitives/authorship/Cargo.toml b/primitives/authorship/Cargo.toml index 7dc5fcfc95..8bf4e935a2 100644 --- a/primitives/authorship/Cargo.toml +++ b/primitives/authorship/Cargo.toml @@ -1,15 +1,17 @@ [package] name = "sp-authorship" -version = "2.0.0" +version = "2.0.0-dev" authors = ["Parity Technologies "] description = "Authorship primitives" edition = "2018" license = "GPL-3.0" +homepage = "https://substrate.dev" +repository = "https://github.com/paritytech/substrate/" [dependencies] -sp-inherents = { version = "2.0.0", default-features = false, path = "../inherents" } -sp-runtime = { version = "2.0.0", default-features = false, path = "../runtime" } -sp-std = { version = "2.0.0", default-features = false, path = "../std" } +sp-inherents = { version = "2.0.0-dev", default-features = false, path = "../inherents" } +sp-runtime = { version = "2.0.0-dev", default-features = false, path = "../runtime" } +sp-std = { version = "2.0.0-dev", default-features = false, path = "../std" } codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } [features] diff --git a/primitives/block-builder/Cargo.toml b/primitives/block-builder/Cargo.toml index 1700209ec4..c8f6c86449 100644 --- a/primitives/block-builder/Cargo.toml +++ b/primitives/block-builder/Cargo.toml @@ -1,16 +1,18 @@ [package] name = "sp-block-builder" -version = "2.0.0" +version = "2.0.0-dev" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" +homepage = "https://substrate.dev" +repository = "https://github.com/paritytech/substrate/" [dependencies] -sp-runtime = { version = "2.0.0", default-features = false, path = "../runtime" } -sp-api = { version = "2.0.0", default-features = false, path = "../api" } -sp-std = { version = "2.0.0", default-features = false, path = "../std" } +sp-runtime = { version = "2.0.0-dev", default-features = false, path = "../runtime" } +sp-api = { version = "2.0.0-dev", default-features = false, path = "../api" } +sp-std = { version = "2.0.0-dev", default-features = false, path = "../std" } codec = { package = "parity-scale-codec", version = "1.0.6", default-features = false } -sp-inherents = { version = "2.0.0", default-features = false, path = "../inherents" } +sp-inherents = { version = "2.0.0-dev", default-features = false, path = "../inherents" } [features] default = [ "std" ] diff --git a/primitives/blockchain/Cargo.toml b/primitives/blockchain/Cargo.toml index 8b93436f9a..afaca88fe5 100644 --- a/primitives/blockchain/Cargo.toml +++ b/primitives/blockchain/Cargo.toml @@ -1,9 +1,11 @@ [package] name = "sp-blockchain" -version = "2.0.0" +version = "2.0.0-dev" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" +homepage = "https://substrate.dev" +repository = "https://github.com/paritytech/substrate/" [dependencies] log = "0.4.8" @@ -11,7 +13,7 @@ lru = "0.4.0" parking_lot = "0.10.0" derive_more = "0.99.2" codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } -sp-consensus = { version = "0.8", path = "../consensus/common" } -sp-runtime = { version = "2.0.0", path = "../runtime" } -sp-block-builder = { version = "2.0.0", path = "../block-builder" } -sp-state-machine = { version = "0.8", path = "../state-machine" } +sp-consensus = { version = "0.8.0-dev", path = "../consensus/common" } +sp-runtime = { version = "2.0.0-dev", path = "../runtime" } +sp-block-builder = { version = "2.0.0-dev", path = "../block-builder" } +sp-state-machine = { version = "0.8.0-dev", path = "../state-machine" } diff --git a/primitives/consensus/aura/Cargo.toml b/primitives/consensus/aura/Cargo.toml index 6e05bf4aac..55311ccf7e 100644 --- a/primitives/consensus/aura/Cargo.toml +++ b/primitives/consensus/aura/Cargo.toml @@ -1,19 +1,21 @@ [package] name = "sp-consensus-aura" -version = "0.8.0" +version = "0.8.0-dev" authors = ["Parity Technologies "] description = "Primitives for Aura consensus" edition = "2018" license = "GPL-3.0" +homepage = "https://substrate.dev" +repository = "https://github.com/paritytech/substrate/" [dependencies] -sp-application-crypto = { version = "2.0.0", default-features = false, path = "../../application-crypto" } +sp-application-crypto = { version = "2.0.0-dev", default-features = false, path = "../../application-crypto" } codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false } -sp-std = { version = "2.0.0", default-features = false, path = "../../std" } -sp-api = { version = "2.0.0", default-features = false, path = "../../api" } -sp-runtime = { version = "2.0.0", default-features = false, path = "../../runtime" } -sp-inherents = { version = "2.0.0", default-features = false, path = "../../inherents" } -sp-timestamp = { version = "2.0.0", default-features = false, path = "../../timestamp" } +sp-std = { version = "2.0.0-dev", default-features = false, path = "../../std" } +sp-api = { version = "2.0.0-dev", default-features = false, path = "../../api" } +sp-runtime = { version = "2.0.0-dev", default-features = false, path = "../../runtime" } +sp-inherents = { version = "2.0.0-dev", default-features = false, path = "../../inherents" } +sp-timestamp = { version = "2.0.0-dev", default-features = false, path = "../../timestamp" } [features] default = ["std"] diff --git a/primitives/consensus/babe/Cargo.toml b/primitives/consensus/babe/Cargo.toml index 7f0277a720..e0941f58c7 100644 --- a/primitives/consensus/babe/Cargo.toml +++ b/primitives/consensus/babe/Cargo.toml @@ -1,21 +1,23 @@ [package] name = "sp-consensus-babe" -version = "0.8.0" +version = "0.8.0-dev" authors = ["Parity Technologies "] description = "Primitives for BABE consensus" edition = "2018" license = "GPL-3.0" +homepage = "https://substrate.dev" +repository = "https://github.com/paritytech/substrate/" [dependencies] -sp-application-crypto = { version = "2.0.0", default-features = false, path = "../../application-crypto" } +sp-application-crypto = { version = "2.0.0-dev", default-features = false, path = "../../application-crypto" } codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false } -sp-std = { version = "2.0.0", default-features = false, path = "../../std" } +sp-std = { version = "2.0.0-dev", default-features = false, path = "../../std" } schnorrkel = { version = "0.8.5", features = ["preaudit_deprecated"], optional = true } -sp-api = { version = "2.0.0", default-features = false, path = "../../api" } -sp-consensus = { version = "0.8", optional = true, path = "../common" } -sp-inherents = { version = "2.0.0", default-features = false, path = "../../inherents" } -sp-runtime = { version = "2.0.0", default-features = false, path = "../../runtime" } -sp-timestamp = { version = "2.0.0", default-features = false, path = "../../timestamp" } +sp-api = { version = "2.0.0-dev", default-features = false, path = "../../api" } +sp-consensus = { version = "0.8.0-dev", optional = true, path = "../common" } +sp-inherents = { version = "2.0.0-dev", default-features = false, path = "../../inherents" } +sp-runtime = { version = "2.0.0-dev", default-features = false, path = "../../runtime" } +sp-timestamp = { version = "2.0.0-dev", default-features = false, path = "../../timestamp" } [features] default = ["std"] diff --git a/primitives/consensus/common/Cargo.toml b/primitives/consensus/common/Cargo.toml index 5af55ad46d..56901983fd 100644 --- a/primitives/consensus/common/Cargo.toml +++ b/primitives/consensus/common/Cargo.toml @@ -1,30 +1,32 @@ [package] name = "sp-consensus" -version = "0.8.0" +version = "0.8.0-dev" authors = ["Parity Technologies "] description = "Common utilities for substrate consensus" edition = "2018" license = "GPL-3.0" +homepage = "https://substrate.dev" +repository = "https://github.com/paritytech/substrate/" [dependencies] derive_more = "0.99.2" libp2p = { version = "0.16.1", default-features = false } log = "0.4.8" -sp-core = { path= "../../core" } -sp-inherents = { version = "2.0.0", path = "../../inherents" } -sp-state-machine = { version = "0.8.0", path = "../../../primitives/state-machine" } +sp-core = { path= "../../core" , version = "2.0.0-dev"} +sp-inherents = { version = "2.0.0-dev", path = "../../inherents" } +sp-state-machine = { version = "0.8.0-dev", path = "../../../primitives/state-machine" } futures = { version = "0.3.1", features = ["thread-pool"] } futures-timer = "3.0.1" futures-diagnose = "1.0" -sp-std = { version = "2.0.0", path = "../../std" } -sp-version = { version = "2.0.0", path = "../../version" } -sp-runtime = { version = "2.0.0", path = "../../runtime" } +sp-std = { version = "2.0.0-dev", path = "../../std" } +sp-version = { version = "2.0.0-dev", path = "../../version" } +sp-runtime = { version = "2.0.0-dev", path = "../../runtime" } codec = { package = "parity-scale-codec", version = "1.0.0", features = ["derive"] } parking_lot = "0.10.0" serde = { version = "1.0", features = ["derive"] } [dev-dependencies] -sp-test-primitives = { version = "2.0.0", path = "../../test-primitives" } +sp-test-primitives = { version = "2.0.0-dev", path = "../../test-primitives" } [features] default = [] diff --git a/primitives/consensus/pow/Cargo.toml b/primitives/consensus/pow/Cargo.toml index 8e964e0c18..25b7f01a80 100644 --- a/primitives/consensus/pow/Cargo.toml +++ b/primitives/consensus/pow/Cargo.toml @@ -1,16 +1,18 @@ [package] name = "sp-consensus-pow" -version = "0.8.0" +version = "0.8.0-dev" authors = ["Parity Technologies "] description = "Primitives for Aura consensus" edition = "2018" license = "GPL-3.0" +homepage = "https://substrate.dev" +repository = "https://github.com/paritytech/substrate/" [dependencies] -sp-api = { version = "2.0.0", default-features = false, path = "../../api" } -sp-std = { version = "2.0.0", default-features = false, path = "../../std" } -sp-runtime = { version = "2.0.0", default-features = false, path = "../../runtime" } -sp-core = { version = "2.0.0", default-features = false, path = "../../core" } +sp-api = { version = "2.0.0-dev", default-features = false, path = "../../api" } +sp-std = { version = "2.0.0-dev", default-features = false, path = "../../std" } +sp-runtime = { version = "2.0.0-dev", default-features = false, path = "../../runtime" } +sp-core = { version = "2.0.0-dev", default-features = false, path = "../../core" } codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } [features] diff --git a/primitives/core/Cargo.toml b/primitives/core/Cargo.toml index 0d28fe139a..1241c277dd 100644 --- a/primitives/core/Cargo.toml +++ b/primitives/core/Cargo.toml @@ -1,12 +1,14 @@ [package] name = "sp-core" -version = "2.0.0" +version = "2.0.0-dev" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" +homepage = "https://substrate.dev" +repository = "https://github.com/paritytech/substrate/" [dependencies] -sp-std = { version = "2.0.0", default-features = false, path = "../std" } +sp-std = { version = "2.0.0-dev", default-features = false, path = "../std" } codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } rustc-hex = { version = "2.0.1", default-features = false } log = { version = "0.4.8", default-features = false } @@ -26,9 +28,9 @@ num-traits = { version = "0.2.8", default-features = false } zeroize = { version = "1.0.0", default-features = false } lazy_static = { version = "1.4.0", default-features = false, optional = true } parking_lot = { version = "0.10.0", optional = true } -sp-debug-derive = { version = "2.0.0", path = "../debug-derive" } -sp-externalities = { version = "0.8.0", optional = true, path = "../externalities" } -sp-storage = { version = "2.0.0", default-features = false, path = "../storage" } +sp-debug-derive = { version = "2.0.0-dev", path = "../debug-derive" } +sp-externalities = { version = "0.8.0-dev", optional = true, path = "../externalities" } +sp-storage = { version = "2.0.0-dev", default-features = false, path = "../storage" } libsecp256k1 = { version = "0.3.2", default-features = false, features = ["hmac"] } parity-util-mem = { version = "0.5.1", default-features = false, features = ["primitive-types"] } @@ -41,10 +43,10 @@ sha2 = { version = "0.8.0", default-features = false, optional = true } hex = { version = "0.4", default-features = false, optional = true } twox-hash = { version = "1.5.0", default-features = false, optional = true } -sp-runtime-interface = { version = "2.0.0", default-features = false, path = "../runtime-interface" } +sp-runtime-interface = { version = "2.0.0-dev", default-features = false, path = "../runtime-interface" } [dev-dependencies] -sp-serializer = { version = "2.0.0", path = "../serializer" } +sp-serializer = { version = "2.0.0-dev", path = "../serializer" } pretty_assertions = "0.6.1" hex-literal = "0.2.1" rand = "0.7.2" diff --git a/primitives/debug-derive/Cargo.toml b/primitives/debug-derive/Cargo.toml index 9b12bfb205..248b5d449d 100644 --- a/primitives/debug-derive/Cargo.toml +++ b/primitives/debug-derive/Cargo.toml @@ -1,9 +1,11 @@ [package] name = "sp-debug-derive" -version = "2.0.0" +version = "2.0.0-dev" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" +homepage = "https://substrate.dev" +repository = "https://github.com/paritytech/substrate/" [lib] proc-macro = true diff --git a/primitives/externalities/Cargo.toml b/primitives/externalities/Cargo.toml index 23889da4ea..7a8f20a048 100644 --- a/primitives/externalities/Cargo.toml +++ b/primitives/externalities/Cargo.toml @@ -1,11 +1,13 @@ [package] name = "sp-externalities" -version = "0.8.0" +version = "0.8.0-dev" license = "GPL-3.0" authors = ["Parity Technologies "] edition = "2018" +homepage = "https://substrate.dev" +repository = "https://github.com/paritytech/substrate/" [dependencies] -sp-storage = { version = "2.0.0", path = "../storage" } -sp-std = { version = "2.0.0", path = "../std" } +sp-storage = { version = "2.0.0-dev", path = "../storage" } +sp-std = { version = "2.0.0-dev", path = "../std" } environmental = { version = "1.1.1" } diff --git a/primitives/finality-grandpa/Cargo.toml b/primitives/finality-grandpa/Cargo.toml index 6356ec82e5..62ac64eb0c 100644 --- a/primitives/finality-grandpa/Cargo.toml +++ b/primitives/finality-grandpa/Cargo.toml @@ -1,17 +1,19 @@ [package] name = "sp-finality-grandpa" -version = "2.0.0" +version = "2.0.0-dev" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" +homepage = "https://substrate.dev" +repository = "https://github.com/paritytech/substrate/" [dependencies] -sp-application-crypto = { version = "2.0.0", default-features = false, path = "../application-crypto" } +sp-application-crypto = { version = "2.0.0-dev", default-features = false, path = "../application-crypto" } codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } -sp-std = { version = "2.0.0", default-features = false, path = "../std" } +sp-std = { version = "2.0.0-dev", default-features = false, path = "../std" } serde = { version = "1.0.101", optional = true, features = ["derive"] } -sp-api = { version = "2.0.0", default-features = false, path = "../api" } -sp-runtime = { version = "2.0.0", default-features = false, path = "../runtime" } +sp-api = { version = "2.0.0-dev", default-features = false, path = "../api" } +sp-runtime = { version = "2.0.0-dev", default-features = false, path = "../runtime" } [features] default = ["std"] diff --git a/primitives/finality-tracker/Cargo.toml b/primitives/finality-tracker/Cargo.toml index 1b0e81da91..99e471cac1 100644 --- a/primitives/finality-tracker/Cargo.toml +++ b/primitives/finality-tracker/Cargo.toml @@ -1,14 +1,16 @@ [package] name = "sp-finality-tracker" -version = "2.0.0" +version = "2.0.0-dev" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" +homepage = "https://substrate.dev" +repository = "https://github.com/paritytech/substrate/" [dependencies] codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false } -sp-inherents = { version = "2.0.0", default-features = false, path = "../../primitives/inherents" } -sp-std = { version = "2.0.0", default-features = false, path = "../../primitives/std" } +sp-inherents = { version = "2.0.0-dev", default-features = false, path = "../../primitives/inherents" } +sp-std = { version = "2.0.0-dev", default-features = false, path = "../../primitives/std" } [features] default = ["std"] diff --git a/primitives/inherents/Cargo.toml b/primitives/inherents/Cargo.toml index 698ab5389a..bd315c33cd 100644 --- a/primitives/inherents/Cargo.toml +++ b/primitives/inherents/Cargo.toml @@ -1,14 +1,16 @@ [package] name = "sp-inherents" -version = "2.0.0" +version = "2.0.0-dev" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" +homepage = "https://substrate.dev" +repository = "https://github.com/paritytech/substrate/" [dependencies] parking_lot = { version = "0.10.0", optional = true } -sp-std = { version = "2.0.0", default-features = false, path = "../std" } -sp-core = { version = "2.0.0", default-features = false, path = "../core" } +sp-std = { version = "2.0.0-dev", default-features = false, path = "../std" } +sp-core = { version = "2.0.0-dev", default-features = false, path = "../core" } codec = { package = "parity-scale-codec", version = "1.0.6", default-features = false, features = ["derive"] } derive_more = { version = "0.99.2", optional = true } diff --git a/primitives/io/Cargo.toml b/primitives/io/Cargo.toml index f494697b4b..7d61398b81 100644 --- a/primitives/io/Cargo.toml +++ b/primitives/io/Cargo.toml @@ -1,21 +1,23 @@ [package] name = "sp-io" -version = "2.0.0" +version = "2.0.0-dev" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" +homepage = "https://substrate.dev" +repository = "https://github.com/paritytech/substrate/" [dependencies] codec = { package = "parity-scale-codec", version = "1.0.6", default-features = false } hash-db = { version = "0.15.2", default-features = false } -sp-core = { version = "2.0.0", default-features = false, path = "../core" } -sp-std = { version = "2.0.0", default-features = false, path = "../std" } +sp-core = { version = "2.0.0-dev", default-features = false, path = "../core" } +sp-std = { version = "2.0.0-dev", default-features = false, path = "../std" } libsecp256k1 = { version = "0.3.4", optional = true } -sp-state-machine = { version = "0.8", optional = true, path = "../../primitives/state-machine" } -sp-wasm-interface = { version = "2.0.0", path = "../../primitives/wasm-interface", default-features = false } -sp-runtime-interface = { version = "2.0.0", default-features = false, path = "../runtime-interface" } -sp-trie = { version = "2.0.0", optional = true, path = "../../primitives/trie" } -sp-externalities = { version = "0.8.0", optional = true, path = "../externalities" } +sp-state-machine = { version = "0.8.0-dev", optional = true, path = "../../primitives/state-machine" } +sp-wasm-interface = { version = "2.0.0-dev", path = "../../primitives/wasm-interface", default-features = false } +sp-runtime-interface = { version = "2.0.0-dev", default-features = false, path = "../runtime-interface" } +sp-trie = { version = "2.0.0-dev", optional = true, path = "../../primitives/trie" } +sp-externalities = { version = "0.8.0-dev", optional = true, path = "../externalities" } log = { version = "0.4.8", optional = true } [features] diff --git a/primitives/keyring/Cargo.toml b/primitives/keyring/Cargo.toml index e2603a0262..d712fcdf8e 100644 --- a/primitives/keyring/Cargo.toml +++ b/primitives/keyring/Cargo.toml @@ -1,12 +1,14 @@ [package] name = "sp-keyring" -version = "2.0.0" +version = "2.0.0-dev" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" +homepage = "https://substrate.dev" +repository = "https://github.com/paritytech/substrate/" [dependencies] -sp-core = { version = "2.0.0", path = "../core" } -sp-runtime = { version = "2.0.0", path = "../runtime" } +sp-core = { version = "2.0.0-dev", path = "../core" } +sp-runtime = { version = "2.0.0-dev", path = "../runtime" } lazy_static = "1.4.0" strum = { version = "0.16.0", features = ["derive"] } diff --git a/primitives/offchain/Cargo.toml b/primitives/offchain/Cargo.toml index ef6d0a6d2c..70e1cffacf 100644 --- a/primitives/offchain/Cargo.toml +++ b/primitives/offchain/Cargo.toml @@ -1,14 +1,16 @@ [package] description = "Substrate offchain workers primitives" name = "sp-offchain" -version = "2.0.0" +version = "2.0.0-dev" license = "GPL-3.0" authors = ["Parity Technologies "] edition = "2018" +homepage = "https://substrate.dev" +repository = "https://github.com/paritytech/substrate/" [dependencies] -sp-api = { version = "2.0.0", default-features = false, path = "../api" } -sp-runtime = { version = "2.0.0", default-features = false, path = "../runtime" } +sp-api = { version = "2.0.0-dev", default-features = false, path = "../api" } +sp-runtime = { version = "2.0.0-dev", default-features = false, path = "../runtime" } [features] default = ["std"] diff --git a/primitives/panic-handler/Cargo.toml b/primitives/panic-handler/Cargo.toml index 0fb6e3b173..d29f2238e7 100644 --- a/primitives/panic-handler/Cargo.toml +++ b/primitives/panic-handler/Cargo.toml @@ -1,10 +1,12 @@ [package] name = "sp-panic-handler" -version = "2.0.0" +version = "2.0.0-dev" authors = ["Parity Technologies "] description = "Substrate panic handler." edition = "2018" license = "GPL-3.0" +homepage = "https://substrate.dev" +repository = "https://github.com/paritytech/substrate/" [dependencies] backtrace = "0.3.38" diff --git a/primitives/phragmen/Cargo.toml b/primitives/phragmen/Cargo.toml index 3bfff32d2a..28f4cce901 100644 --- a/primitives/phragmen/Cargo.toml +++ b/primitives/phragmen/Cargo.toml @@ -1,18 +1,20 @@ [package] name = "sp-phragmen" -version = "2.0.0" +version = "2.0.0-dev" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" +homepage = "https://substrate.dev" +repository = "https://github.com/paritytech/substrate/" [dependencies] serde = { version = "1.0.101", optional = true, features = ["derive"] } -sp-std = { version = "2.0.0", default-features = false, path = "../std" } -sp-runtime = { version = "2.0.0", default-features = false, path = "../../primitives/runtime" } +sp-std = { version = "2.0.0-dev", default-features = false, path = "../std" } +sp-runtime = { version = "2.0.0-dev", default-features = false, path = "../../primitives/runtime" } [dev-dependencies] -substrate-test-utils = { version = "2.0.0", path = "../../test-utils" } -sp-io ={ version = "2.0.0", path = "../../primitives/io" } +substrate-test-utils = { version = "2.0.0-dev", path = "../../test-utils" } +sp-io ={ version = "2.0.0-dev", path = "../../primitives/io" } rand = "0.7.2" [features] diff --git a/primitives/rpc/Cargo.toml b/primitives/rpc/Cargo.toml index 448f8b8c9c..1f464e81a8 100644 --- a/primitives/rpc/Cargo.toml +++ b/primitives/rpc/Cargo.toml @@ -1,13 +1,15 @@ [package] name = "sp-rpc" -version = "2.0.0" +version = "2.0.0-dev" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" +homepage = "https://substrate.dev" +repository = "https://github.com/paritytech/substrate/" [dependencies] serde = { version = "1.0.101", features = ["derive"] } -sp-core = { version = "2.0.0", path = "../core" } +sp-core = { version = "2.0.0-dev", path = "../core" } [dev-dependencies] serde_json = "1.0.41" diff --git a/primitives/runtime-interface/Cargo.toml b/primitives/runtime-interface/Cargo.toml index cef3acdbfb..b1547fe652 100644 --- a/primitives/runtime-interface/Cargo.toml +++ b/primitives/runtime-interface/Cargo.toml @@ -1,24 +1,26 @@ [package] name = "sp-runtime-interface" -version = "2.0.0" +version = "2.0.0-dev" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" +homepage = "https://substrate.dev" +repository = "https://github.com/paritytech/substrate/" [dependencies] -sp-wasm-interface = { version = "2.0.0", path = "../wasm-interface", default-features = false } -sp-std = { version = "2.0.0", default-features = false, path = "../std" } -sp-runtime-interface-proc-macro = { version = "2.0.0", path = "proc-macro" } -sp-externalities = { version = "0.8.0", optional = true, path = "../externalities" } +sp-wasm-interface = { version = "2.0.0-dev", path = "../wasm-interface", default-features = false } +sp-std = { version = "2.0.0-dev", default-features = false, path = "../std" } +sp-runtime-interface-proc-macro = { version = "2.0.0-dev", path = "proc-macro" } +sp-externalities = { version = "0.8.0-dev", optional = true, path = "../externalities" } codec = { package = "parity-scale-codec", version = "1.0.6", default-features = false } static_assertions = "1.0.0" primitive-types = { version = "0.6.2", default-features = false } [dev-dependencies] -sp-runtime-interface-test-wasm = { version = "2.0.0", path = "test-wasm" } -sp-state-machine = { version = "0.8", path = "../../primitives/state-machine" } -sp-core = { version = "2.0.0", path = "../core" } -sp-io = { version = "2.0.0", path = "../io" } +sp-runtime-interface-test-wasm = { version = "2.0.0-dev", path = "test-wasm" } +sp-state-machine = { version = "0.8.0-dev", path = "../../primitives/state-machine" } +sp-core = { version = "2.0.0-dev", path = "../core" } +sp-io = { version = "2.0.0-dev", path = "../io" } rustversion = "1.0.0" trybuild = "1.0.17" diff --git a/primitives/runtime-interface/proc-macro/Cargo.toml b/primitives/runtime-interface/proc-macro/Cargo.toml index b239fbcce3..fe5a132aac 100644 --- a/primitives/runtime-interface/proc-macro/Cargo.toml +++ b/primitives/runtime-interface/proc-macro/Cargo.toml @@ -1,9 +1,11 @@ [package] name = "sp-runtime-interface-proc-macro" -version = "2.0.0" +version = "2.0.0-dev" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" +homepage = "https://substrate.dev" +repository = "https://github.com/paritytech/substrate/" [lib] proc-macro = true diff --git a/primitives/runtime-interface/test-wasm/Cargo.toml b/primitives/runtime-interface/test-wasm/Cargo.toml index c38413aee7..8461509842 100644 --- a/primitives/runtime-interface/test-wasm/Cargo.toml +++ b/primitives/runtime-interface/test-wasm/Cargo.toml @@ -1,19 +1,21 @@ [package] name = "sp-runtime-interface-test-wasm" -version = "2.0.0" +version = "2.0.0-dev" authors = ["Parity Technologies "] edition = "2018" build = "build.rs" license = "GPL-3.0" +homepage = "https://substrate.dev" +repository = "https://github.com/paritytech/substrate/" [dependencies] -sp-runtime-interface = { version = "2.0.0", default-features = false, path = "../" } -sp-std = { version = "2.0.0", default-features = false, path = "../../std" } -sp-io = { version = "2.0.0", default-features = false, path = "../../io" } -sp-core = { version = "2.0.0", default-features = false, path = "../../core" } +sp-runtime-interface = { version = "2.0.0-dev", default-features = false, path = "../" } +sp-std = { version = "2.0.0-dev", default-features = false, path = "../../std" } +sp-io = { version = "2.0.0-dev", default-features = false, path = "../../io" } +sp-core = { version = "2.0.0-dev", default-features = false, path = "../../core" } [build-dependencies] -wasm-builder-runner = { version = "1.0.3", package = "substrate-wasm-builder-runner", path = "../../../utils/wasm-builder-runner" } +wasm-builder-runner = { version = "1.0.5", package = "substrate-wasm-builder-runner", path = "../../../utils/wasm-builder-runner" } [features] default = [ "std" ] diff --git a/primitives/runtime-interface/test/Cargo.toml b/primitives/runtime-interface/test/Cargo.toml index d6d724da9d..34c5a7ac5f 100644 --- a/primitives/runtime-interface/test/Cargo.toml +++ b/primitives/runtime-interface/test/Cargo.toml @@ -1,15 +1,17 @@ [package] name = "sp-runtime-interface-test" -version = "2.0.0" +version = "2.0.0-dev" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" publish = false +homepage = "https://substrate.dev" +repository = "https://github.com/paritytech/substrate/" [dependencies] -sp-runtime-interface = { version = "2.0.0", path = "../" } -sc-executor = { version = "0.8", path = "../../../client/executor" } -sp-runtime-interface-test-wasm = { version = "2.0.0", path = "../test-wasm" } -sp-state-machine = { version = "0.8", path = "../../../primitives/state-machine" } -sp-core = { version = "2.0.0", path = "../../core" } -sp-io = { version = "2.0.0", path = "../../io" } +sp-runtime-interface = { version = "2.0.0-dev", path = "../" } +sc-executor = { version = "0.8.0-dev", path = "../../../client/executor" } +sp-runtime-interface-test-wasm = { version = "2.0.0-dev", path = "../test-wasm" } +sp-state-machine = { version = "0.8.0-dev", path = "../../../primitives/state-machine" } +sp-core = { version = "2.0.0-dev", path = "../../core" } +sp-io = { version = "2.0.0-dev", path = "../../io" } diff --git a/primitives/runtime/Cargo.toml b/primitives/runtime/Cargo.toml index bf7b2b80a3..29736af6e5 100644 --- a/primitives/runtime/Cargo.toml +++ b/primitives/runtime/Cargo.toml @@ -1,23 +1,25 @@ [package] name = "sp-runtime" -version = "2.0.0" +version = "2.0.0-dev" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" +homepage = "https://substrate.dev" +repository = "https://github.com/paritytech/substrate/" [dependencies] serde = { version = "1.0.101", optional = true, features = ["derive"] } codec = { package = "parity-scale-codec", version = "1.1.2", default-features = false, features = ["derive"] } -sp-core = { version = "2.0.0", default-features = false, path = "../core" } -sp-application-crypto = { version = "2.0.0", default-features = false, path = "../application-crypto" } -sp-arithmetic = { version = "2.0.0", default-features = false, path = "../arithmetic" } -sp-std = { version = "2.0.0", default-features = false, path = "../std" } -sp-io = { version = "2.0.0", default-features = false, path = "../io" } +sp-core = { version = "2.0.0-dev", default-features = false, path = "../core" } +sp-application-crypto = { version = "2.0.0-dev", default-features = false, path = "../application-crypto" } +sp-arithmetic = { version = "2.0.0-dev", default-features = false, path = "../arithmetic" } +sp-std = { version = "2.0.0-dev", default-features = false, path = "../std" } +sp-io = { version = "2.0.0-dev", default-features = false, path = "../io" } log = { version = "0.4.8", optional = true } paste = "0.1.6" rand = { version = "0.7.2", optional = true } impl-trait-for-tuples = "0.1.3" -sp-inherents = { version = "2.0.0", default-features = false, path = "../inherents" } +sp-inherents = { version = "2.0.0-dev", default-features = false, path = "../inherents" } parity-util-mem = { version = "0.5.1", default-features = false, features = ["primitive-types"] } [dev-dependencies] diff --git a/primitives/sandbox/Cargo.toml b/primitives/sandbox/Cargo.toml index c942e019fe..e09bdb8e00 100755 --- a/primitives/sandbox/Cargo.toml +++ b/primitives/sandbox/Cargo.toml @@ -1,16 +1,18 @@ [package] name = "sp-sandbox" -version = "0.8.0" +version = "0.8.0-dev" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" +homepage = "https://substrate.dev" +repository = "https://github.com/paritytech/substrate/" [dependencies] wasmi = { version = "0.6.2", optional = true } -sp-core = { version = "2.0.0", default-features = false, path = "../core" } -sp-std = { version = "2.0.0", default-features = false, path = "../std" } -sp-io = { version = "2.0.0", default-features = false, path = "../io" } -sp-wasm-interface = { version = "2.0.0", default-features = false, path = "../wasm-interface" } +sp-core = { version = "2.0.0-dev", default-features = false, path = "../core" } +sp-std = { version = "2.0.0-dev", default-features = false, path = "../std" } +sp-io = { version = "2.0.0-dev", default-features = false, path = "../io" } +sp-wasm-interface = { version = "2.0.0-dev", default-features = false, path = "../wasm-interface" } codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false } [dev-dependencies] diff --git a/primitives/serializer/Cargo.toml b/primitives/serializer/Cargo.toml index b9e78d968c..b172c1439b 100644 --- a/primitives/serializer/Cargo.toml +++ b/primitives/serializer/Cargo.toml @@ -1,9 +1,11 @@ [package] name = "sp-serializer" -version = "2.0.0" +version = "2.0.0-dev" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" +homepage = "https://substrate.dev" +repository = "https://github.com/paritytech/substrate/" [dependencies] serde = "1.0.101" diff --git a/primitives/session/Cargo.toml b/primitives/session/Cargo.toml index 143ff87942..a395b44e81 100644 --- a/primitives/session/Cargo.toml +++ b/primitives/session/Cargo.toml @@ -1,15 +1,17 @@ [package] name = "sp-session" -version = "2.0.0" +version = "2.0.0-dev" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" +homepage = "https://substrate.dev" +repository = "https://github.com/paritytech/substrate/" [dependencies] -sp-api = { version = "2.0.0", default-features = false, path = "../api" } -sp-std = { version = "2.0.0", default-features = false, path = "../std" } -sp-core = { version = "2.0.0", default-features = false, path = "../core" } -sp-runtime = { version = "2.0.0", optional = true, path = "../runtime" } +sp-api = { version = "2.0.0-dev", default-features = false, path = "../api" } +sp-std = { version = "2.0.0-dev", default-features = false, path = "../std" } +sp-core = { version = "2.0.0-dev", default-features = false, path = "../core" } +sp-runtime = { version = "2.0.0-dev", optional = true, path = "../runtime" } [features] default = [ "std" ] diff --git a/primitives/staking/Cargo.toml b/primitives/staking/Cargo.toml index 97afa0d0a7..60945cbf97 100644 --- a/primitives/staking/Cargo.toml +++ b/primitives/staking/Cargo.toml @@ -1,14 +1,16 @@ [package] name = "sp-staking" -version = "2.0.0" +version = "2.0.0-dev" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" +homepage = "https://substrate.dev" +repository = "https://github.com/paritytech/substrate/" [dependencies] codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } -sp-runtime = { version = "2.0.0", default-features = false, path = "../runtime" } -sp-std = { version = "2.0.0", default-features = false, path = "../std" } +sp-runtime = { version = "2.0.0-dev", default-features = false, path = "../runtime" } +sp-std = { version = "2.0.0-dev", default-features = false, path = "../std" } [features] default = ["std"] diff --git a/primitives/state-machine/Cargo.toml b/primitives/state-machine/Cargo.toml index 2408cce099..9c68298204 100644 --- a/primitives/state-machine/Cargo.toml +++ b/primitives/state-machine/Cargo.toml @@ -1,10 +1,12 @@ [package] name = "sp-state-machine" -version = "0.8.0" +version = "0.8.0-dev" authors = ["Parity Technologies "] description = "Substrate State Machine" edition = "2018" license = "GPL-3.0" +homepage = "https://substrate.dev" +repository = "https://github.com/paritytech/substrate/" [dependencies] log = "0.4.8" @@ -12,13 +14,13 @@ parking_lot = "0.10.0" hash-db = "0.15.2" trie-db = "0.20.0" trie-root = "0.16.0" -sp-trie = { version = "2.0.0", path = "../trie" } -sp-core = { version = "2.0.0", path = "../core" } -sp-panic-handler = { version = "2.0.0", path = "../panic-handler" } +sp-trie = { version = "2.0.0-dev", path = "../trie" } +sp-core = { version = "2.0.0-dev", path = "../core" } +sp-panic-handler = { version = "2.0.0-dev", path = "../panic-handler" } codec = { package = "parity-scale-codec", version = "1.0.0" } num-traits = "0.2.8" rand = "0.7.2" -sp-externalities = { version = "0.8.0", path = "../externalities" } +sp-externalities = { version = "0.8.0-dev", path = "../externalities" } [dev-dependencies] hex-literal = "0.2.1" diff --git a/primitives/std/Cargo.toml b/primitives/std/Cargo.toml index dd4b7e4511..4314281b3b 100644 --- a/primitives/std/Cargo.toml +++ b/primitives/std/Cargo.toml @@ -1,9 +1,11 @@ [package] name = "sp-std" -version = "2.0.0" +version = "2.0.0-dev" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" +homepage = "https://substrate.dev" +repository = "https://github.com/paritytech/substrate/" [features] default = ["std"] diff --git a/primitives/storage/Cargo.toml b/primitives/storage/Cargo.toml index c9fda1816b..27c9f99192 100644 --- a/primitives/storage/Cargo.toml +++ b/primitives/storage/Cargo.toml @@ -1,16 +1,18 @@ [package] name = "sp-storage" -version = "2.0.0" +version = "2.0.0-dev" authors = ["Parity Technologies "] edition = "2018" description = "Storage related primitives" license = "GPL-3.0" +homepage = "https://substrate.dev" +repository = "https://github.com/paritytech/substrate/" [dependencies] -sp-std = { version = "2.0.0", default-features = false, path = "../std" } +sp-std = { version = "2.0.0-dev", default-features = false, path = "../std" } serde = { version = "1.0.101", optional = true, features = ["derive"] } impl-serde = { version = "0.2.3", optional = true } -sp-debug-derive = { version = "2.0.0", path = "../debug-derive" } +sp-debug-derive = { version = "2.0.0-dev", path = "../debug-derive" } [features] default = [ "std" ] diff --git a/primitives/test-primitives/Cargo.toml b/primitives/test-primitives/Cargo.toml index 2edd5f0575..1cff915f3c 100644 --- a/primitives/test-primitives/Cargo.toml +++ b/primitives/test-primitives/Cargo.toml @@ -1,16 +1,18 @@ [package] name = "sp-test-primitives" -version = "2.0.0" +version = "2.0.0-dev" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" +homepage = "https://substrate.dev" +repository = "https://github.com/paritytech/substrate/" [dependencies] -sp-application-crypto = { version = "2.0.0", default-features = false, path = "../application-crypto" } +sp-application-crypto = { version = "2.0.0-dev", default-features = false, path = "../application-crypto" } codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } -sp-core = { version = "2.0.0", default-features = false, path = "../core" } +sp-core = { version = "2.0.0-dev", default-features = false, path = "../core" } serde = { version = "1.0.101", optional = true, features = ["derive"] } -sp-runtime = { version = "2.0.0", default-features = false, path = "../runtime" } +sp-runtime = { version = "2.0.0-dev", default-features = false, path = "../runtime" } parity-util-mem = { version = "0.5.1", default-features = false, features = ["primitive-types"] } [features] diff --git a/primitives/timestamp/Cargo.toml b/primitives/timestamp/Cargo.toml index 815aaf5305..1b97f53437 100644 --- a/primitives/timestamp/Cargo.toml +++ b/primitives/timestamp/Cargo.toml @@ -1,16 +1,18 @@ [package] name = "sp-timestamp" -version = "2.0.0" +version = "2.0.0-dev" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" +homepage = "https://substrate.dev" +repository = "https://github.com/paritytech/substrate/" [dependencies] -sp-api = { version = "2.0.0", default-features = false, path = "../api" } -sp-std = { version = "2.0.0", default-features = false, path = "../std" } -sp-runtime = { version = "2.0.0", default-features = false, path = "../runtime" } +sp-api = { version = "2.0.0-dev", default-features = false, path = "../api" } +sp-std = { version = "2.0.0-dev", default-features = false, path = "../std" } +sp-runtime = { version = "2.0.0-dev", default-features = false, path = "../runtime" } codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } -sp-inherents = { version = "2.0.0", default-features = false, path = "../inherents" } +sp-inherents = { version = "2.0.0-dev", default-features = false, path = "../inherents" } impl-trait-for-tuples = "0.1.3" wasm-timer = "0.2" diff --git a/primitives/transaction-pool/Cargo.toml b/primitives/transaction-pool/Cargo.toml index 18b254f2c0..747cd3472c 100644 --- a/primitives/transaction-pool/Cargo.toml +++ b/primitives/transaction-pool/Cargo.toml @@ -1,9 +1,11 @@ [package] name = "sp-transaction-pool" -version = "2.0.0" +version = "2.0.0-dev" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" +homepage = "https://substrate.dev" +repository = "https://github.com/paritytech/substrate/" [dependencies] codec = { package = "parity-scale-codec", version = "1.0.0", optional = true } @@ -11,8 +13,8 @@ derive_more = { version = "0.99.2", optional = true } futures = { version = "0.3.1", optional = true } log = { version = "0.4.8", optional = true } serde = { version = "1.0.101", features = ["derive"], optional = true} -sp-api = { version = "2.0.0", default-features = false, path = "../api" } -sp-runtime = { version = "2.0.0", default-features = false, path = "../runtime" } +sp-api = { version = "2.0.0-dev", default-features = false, path = "../api" } +sp-runtime = { version = "2.0.0-dev", default-features = false, path = "../runtime" } [features] default = [ "std" ] diff --git a/primitives/trie/Cargo.toml b/primitives/trie/Cargo.toml index 361ddb186c..6aab0f290b 100644 --- a/primitives/trie/Cargo.toml +++ b/primitives/trie/Cargo.toml @@ -1,11 +1,12 @@ [package] name = "sp-trie" -version = "2.0.0" +version = "2.0.0-dev" authors = ["Parity Technologies "] description = "Patricia trie stuff using a parity-scale-codec node format" -repository = "https://github.com/paritytech/substrate" +repository = "https://github.com/paritytech/substrate/" license = "GPL-3.0" edition = "2018" +homepage = "https://substrate.dev" [[bench]] name = "bench" @@ -13,12 +14,12 @@ harness = false [dependencies] codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false } -sp-std = { version = "2.0.0", default-features = false, path = "../std" } +sp-std = { version = "2.0.0-dev", default-features = false, path = "../std" } hash-db = { version = "0.15.2", default-features = false } trie-db = { version = "0.20.0", default-features = false } trie-root = { version = "0.16.0", default-features = false } memory-db = { version = "0.19.0", default-features = false } -sp-core = { version = "2.0.0", default-features = false, path = "../core" } +sp-core = { version = "2.0.0-dev", default-features = false, path = "../core" } [dev-dependencies] trie-bench = "0.20.0" diff --git a/primitives/version/Cargo.toml b/primitives/version/Cargo.toml index 1219d9840c..4cd65cd044 100644 --- a/primitives/version/Cargo.toml +++ b/primitives/version/Cargo.toml @@ -1,16 +1,18 @@ [package] name = "sp-version" -version = "2.0.0" +version = "2.0.0-dev" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" +homepage = "https://substrate.dev" +repository = "https://github.com/paritytech/substrate/" [dependencies] impl-serde = { version = "0.2.3", optional = true } serde = { version = "1.0.101", optional = true, features = ["derive"] } codec = { package = "parity-scale-codec", version = "1.1.2", default-features = false, features = ["derive"] } -sp-std = { version = "2.0.0", default-features = false, path = "../std" } -sp-runtime = { version = "2.0.0", default-features = false, path = "../runtime" } +sp-std = { version = "2.0.0-dev", default-features = false, path = "../std" } +sp-runtime = { version = "2.0.0-dev", default-features = false, path = "../runtime" } [features] default = ["std"] diff --git a/primitives/wasm-interface/Cargo.toml b/primitives/wasm-interface/Cargo.toml index bb9ea85872..5d477ff955 100644 --- a/primitives/wasm-interface/Cargo.toml +++ b/primitives/wasm-interface/Cargo.toml @@ -1,14 +1,16 @@ [package] name = "sp-wasm-interface" -version = "2.0.0" +version = "2.0.0-dev" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" +homepage = "https://substrate.dev" +repository = "https://github.com/paritytech/substrate/" [dependencies] wasmi = { version = "0.6.2", optional = true } impl-trait-for-tuples = "0.1.2" -sp-std = { version = "2.0.0", path = "../std", default-features = false } +sp-std = { version = "2.0.0-dev", path = "../std", default-features = false } codec = { package = "parity-scale-codec", version = "1.1.2", default-features = false, features = ["derive"] } [features] diff --git a/test-utils/Cargo.toml b/test-utils/Cargo.toml index 0a552973c9..54511bd9e4 100644 --- a/test-utils/Cargo.toml +++ b/test-utils/Cargo.toml @@ -1,6 +1,8 @@ [package] name = "substrate-test-utils" -version = "2.0.0" +version = "2.0.0-dev" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" +homepage = "https://substrate.dev" +repository = "https://github.com/paritytech/substrate/" diff --git a/test-utils/client/Cargo.toml b/test-utils/client/Cargo.toml index 2107f3bdd8..f4eb93d128 100644 --- a/test-utils/client/Cargo.toml +++ b/test-utils/client/Cargo.toml @@ -1,21 +1,23 @@ [package] name = "substrate-test-client" -version = "2.0.0" +version = "2.0.0-dev" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" +homepage = "https://substrate.dev" +repository = "https://github.com/paritytech/substrate/" [dependencies] -sc-client-api = { version = "2.0.0", path = "../../client/api" } -sc-client = { version = "0.8", path = "../../client/" } -sc-client-db = { version = "0.8", features = ["test-helpers"], path = "../../client/db" } -sp-consensus = { version = "0.8", path = "../../primitives/consensus/common" } -sc-executor = { version = "0.8", path = "../../client/executor" } +sc-client-api = { version = "2.0.0-dev", path = "../../client/api" } +sc-client = { version = "0.8.0-dev", path = "../../client/" } +sc-client-db = { version = "0.8.0-dev", features = ["test-helpers"], path = "../../client/db" } +sp-consensus = { version = "0.8.0-dev", path = "../../primitives/consensus/common" } +sc-executor = { version = "0.8.0-dev", path = "../../client/executor" } futures = "0.3.1" hash-db = "0.15.2" -sp-keyring = { version = "2.0.0", path = "../../primitives/keyring" } +sp-keyring = { version = "2.0.0-dev", path = "../../primitives/keyring" } codec = { package = "parity-scale-codec", version = "1.0.0" } -sp-core = { version = "2.0.0", path = "../../primitives/core" } -sp-runtime = { version = "2.0.0", path = "../../primitives/runtime" } -sp-blockchain = { version = "2.0.0", path = "../../primitives/blockchain" } -sp-state-machine = { version = "0.8", path = "../../primitives/state-machine" } +sp-core = { version = "2.0.0-dev", path = "../../primitives/core" } +sp-runtime = { version = "2.0.0-dev", path = "../../primitives/runtime" } +sp-blockchain = { version = "2.0.0-dev", path = "../../primitives/blockchain" } +sp-state-machine = { version = "0.8.0-dev", path = "../../primitives/state-machine" } diff --git a/test-utils/runtime/Cargo.toml b/test-utils/runtime/Cargo.toml index 01244d8c6f..44d2a68b49 100644 --- a/test-utils/runtime/Cargo.toml +++ b/test-utils/runtime/Cargo.toml @@ -1,51 +1,53 @@ [package] name = "substrate-test-runtime" -version = "2.0.0" +version = "2.0.0-dev" authors = ["Parity Technologies "] edition = "2018" build = "build.rs" license = "GPL-3.0" +homepage = "https://substrate.dev" +repository = "https://github.com/paritytech/substrate/" [dependencies] -sp-application-crypto = { version = "2.0.0", default-features = false, path = "../../primitives/application-crypto" } -sp-consensus-aura = { version = "0.8", default-features = false, path = "../../primitives/consensus/aura" } -sp-consensus-babe = { version = "0.8", default-features = false, path = "../../primitives/consensus/babe" } -sp-block-builder = { version = "2.0.0", default-features = false, path = "../../primitives/block-builder" } +sp-application-crypto = { version = "2.0.0-dev", default-features = false, path = "../../primitives/application-crypto" } +sp-consensus-aura = { version = "0.8.0-dev", default-features = false, path = "../../primitives/consensus/aura" } +sp-consensus-babe = { version = "0.8.0-dev", default-features = false, path = "../../primitives/consensus/babe" } +sp-block-builder = { version = "2.0.0-dev", default-features = false, path = "../../primitives/block-builder" } cfg-if = "0.1.10" codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } -frame-executive = { version = "2.0.0", default-features = false, path = "../../frame/executive" } -sp-inherents = { version = "2.0.0", default-features = false, path = "../../primitives/inherents" } -sp-keyring = { version = "2.0.0", optional = true, path = "../../primitives/keyring" } +frame-executive = { version = "2.0.0-dev", default-features = false, path = "../../frame/executive" } +sp-inherents = { version = "2.0.0-dev", default-features = false, path = "../../primitives/inherents" } +sp-keyring = { version = "2.0.0-dev", optional = true, path = "../../primitives/keyring" } log = { version = "0.4.8", optional = true } memory-db = { version = "0.19.0", default-features = false } -sp-offchain = { path = "../../primitives/offchain", default-features = false} -sp-core = { version = "2.0.0", default-features = false, path = "../../primitives/core" } -sp-std = { version = "2.0.0", default-features = false, path = "../../primitives/std" } -sp-runtime-interface = { path = "../../primitives/runtime-interface", default-features = false} -sp-io = { version = "2.0.0", default-features = false, path = "../../primitives/io" } -frame-support = { version = "2.0.0", default-features = false, path = "../../frame/support" } -sp-version = { version = "2.0.0", default-features = false, path = "../../primitives/version" } +sp-offchain = { path = "../../primitives/offchain", default-features = false, version = "2.0.0-dev"} +sp-core = { version = "2.0.0-dev", default-features = false, path = "../../primitives/core" } +sp-std = { version = "2.0.0-dev", default-features = false, path = "../../primitives/std" } +sp-runtime-interface = { path = "../../primitives/runtime-interface", default-features = false, version = "2.0.0-dev"} +sp-io = { version = "2.0.0-dev", default-features = false, path = "../../primitives/io" } +frame-support = { version = "2.0.0-dev", default-features = false, path = "../../frame/support" } +sp-version = { version = "2.0.0-dev", default-features = false, path = "../../primitives/version" } serde = { version = "1.0.101", optional = true, features = ["derive"] } -sp-session = { version = "2.0.0", default-features = false, path = "../../primitives/session" } -sp-api = { version = "2.0.0", default-features = false, path = "../../primitives/api" } -sp-runtime = { version = "2.0.0", default-features = false, path = "../../primitives/runtime" } -pallet-babe = { version = "2.0.0", default-features = false, path = "../../frame/babe" } -frame-system = { version = "2.0.0", default-features = false, path = "../../frame/system" } -frame-system-rpc-runtime-api = { version = "2.0.0", default-features = false, path = "../../frame/system/rpc/runtime-api" } -pallet-timestamp = { version = "2.0.0", default-features = false, path = "../../frame/timestamp" } -sc-client = { version = "0.8", optional = true, path = "../../client" } -sp-trie = { version = "2.0.0", default-features = false, path = "../../primitives/trie" } -sp-transaction-pool = { version = "2.0.0", default-features = false, path = "../../primitives/transaction-pool" } +sp-session = { version = "2.0.0-dev", default-features = false, path = "../../primitives/session" } +sp-api = { version = "2.0.0-dev", default-features = false, path = "../../primitives/api" } +sp-runtime = { version = "2.0.0-dev", default-features = false, path = "../../primitives/runtime" } +pallet-babe = { version = "2.0.0-dev", default-features = false, path = "../../frame/babe" } +frame-system = { version = "2.0.0-dev", default-features = false, path = "../../frame/system" } +frame-system-rpc-runtime-api = { version = "2.0.0-dev", default-features = false, path = "../../frame/system/rpc/runtime-api" } +pallet-timestamp = { version = "2.0.0-dev", default-features = false, path = "../../frame/timestamp" } +sc-client = { version = "0.8.0-dev", optional = true, path = "../../client" } +sp-trie = { version = "2.0.0-dev", default-features = false, path = "../../primitives/trie" } +sp-transaction-pool = { version = "2.0.0-dev", default-features = false, path = "../../primitives/transaction-pool" } trie-db = { version = "0.20.0", default-features = false } parity-util-mem = { version = "0.5.1", default-features = false, features = ["primitive-types"] } [dev-dependencies] -sc-executor = { version = "0.8", path = "../../client/executor" } -substrate-test-runtime-client = { version = "2.0.0", path = "./client" } -sp-state-machine = { version = "0.8", path = "../../primitives/state-machine" } +sc-executor = { version = "0.8.0-dev", path = "../../client/executor" } +substrate-test-runtime-client = { version = "2.0.0-dev", path = "./client" } +sp-state-machine = { version = "0.8.0-dev", path = "../../primitives/state-machine" } [build-dependencies] -wasm-builder-runner = { version = "1.0.4", package = "substrate-wasm-builder-runner", path = "../../utils/wasm-builder-runner" } +wasm-builder-runner = { version = "1.0.5", package = "substrate-wasm-builder-runner", path = "../../utils/wasm-builder-runner" } [features] default = [ diff --git a/test-utils/runtime/client/Cargo.toml b/test-utils/runtime/client/Cargo.toml index 643cde16b3..a588219690 100644 --- a/test-utils/runtime/client/Cargo.toml +++ b/test-utils/runtime/client/Cargo.toml @@ -1,19 +1,21 @@ [package] name = "substrate-test-runtime-client" -version = "2.0.0" +version = "2.0.0-dev" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" +homepage = "https://substrate.dev" +repository = "https://github.com/paritytech/substrate/" [dependencies] -sc-block-builder = { version = "0.8", path = "../../../client/block-builder" } -substrate-test-client = { version = "2.0.0", path = "../../client" } -sp-core = { version = "2.0.0", path = "../../../primitives/core" } -substrate-test-runtime = { version = "2.0.0", path = "../../runtime" } -sp-runtime = { version = "2.0.0", path = "../../../primitives/runtime" } -sp-api = { version = "2.0.0", path = "../../../primitives/api" } -sp-blockchain = { version = "2.0.0", path = "../../../primitives/blockchain" } +sc-block-builder = { version = "0.8.0-dev", path = "../../../client/block-builder" } +substrate-test-client = { version = "2.0.0-dev", path = "../../client" } +sp-core = { version = "2.0.0-dev", path = "../../../primitives/core" } +substrate-test-runtime = { version = "2.0.0-dev", path = "../../runtime" } +sp-runtime = { version = "2.0.0-dev", path = "../../../primitives/runtime" } +sp-api = { version = "2.0.0-dev", path = "../../../primitives/api" } +sp-blockchain = { version = "2.0.0-dev", path = "../../../primitives/blockchain" } codec = { package = "parity-scale-codec", version = "1.0.0" } -sc-client-api = { version = "2.0.0", path = "../../../client/api" } -sc-client = { version = "0.8", path = "../../../client/" } +sc-client-api = { version = "2.0.0-dev", path = "../../../client/api" } +sc-client = { version = "0.8.0-dev", path = "../../../client/" } futures = "0.3.1" diff --git a/test-utils/runtime/transaction-pool/Cargo.toml b/test-utils/runtime/transaction-pool/Cargo.toml index 72e81f5f19..dfaeb7227f 100644 --- a/test-utils/runtime/transaction-pool/Cargo.toml +++ b/test-utils/runtime/transaction-pool/Cargo.toml @@ -1,17 +1,19 @@ [package] name = "substrate-test-runtime-transaction-pool" -version = "2.0.0" +version = "2.0.0-dev" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" +homepage = "https://substrate.dev" +repository = "https://github.com/paritytech/substrate/" [dependencies] -substrate-test-runtime-client = { version = "2.0.0", path = "../client" } +substrate-test-runtime-client = { version = "2.0.0-dev", path = "../client" } parking_lot = "0.10.0" codec = { package = "parity-scale-codec", version = "1.0.0" } -sp-blockchain = { version = "2.0.0", path = "../../../primitives/blockchain" } -sp-runtime = { version = "2.0.0", path = "../../../primitives/runtime" } -sp-transaction-pool = { version = "2.0.0", path = "../../../primitives/transaction-pool" } -sc-transaction-graph = { version = "2.0.0", path = "../../../client/transaction-pool/graph" } +sp-blockchain = { version = "2.0.0-dev", path = "../../../primitives/blockchain" } +sp-runtime = { version = "2.0.0-dev", path = "../../../primitives/runtime" } +sp-transaction-pool = { version = "2.0.0-dev", path = "../../../primitives/transaction-pool" } +sc-transaction-graph = { version = "2.0.0-dev", path = "../../../client/transaction-pool/graph" } futures = { version = "0.3.1", features = ["compat"] } derive_more = "0.99.2" diff --git a/utils/browser/Cargo.toml b/utils/browser/Cargo.toml index 803a9c5ce2..bd513b8a17 100644 --- a/utils/browser/Cargo.toml +++ b/utils/browser/Cargo.toml @@ -1,10 +1,12 @@ [package] name = "browser-utils" -version = "0.8.0" +version = "0.8.0-dev" authors = ["Parity Technologies "] description = "Utilities for creating a browser light-client." edition = "2018" license = "GPL-3.0" +homepage = "https://substrate.dev" +repository = "https://github.com/paritytech/substrate/" [dependencies] futures = "0.3" @@ -17,10 +19,10 @@ js-sys = "0.3.34" wasm-bindgen = "0.2.57" wasm-bindgen-futures = "0.4.7" kvdb-web = "0.4" -sc-informant = { version = "0.8", path = "../../client/informant" } -sc-service = { version = "0.8", path = "../../client/service", default-features = false } -sc-network = { path = "../../client/network" } -sc-chain-spec = { path = "../../client/chain-spec" } +sc-informant = { version = "0.8.0-dev", path = "../../client/informant" } +sc-service = { version = "0.8.0-dev", path = "../../client/service", default-features = false } +sc-network = { path = "../../client/network" , version = "0.8.0-dev"} +sc-chain-spec = { path = "../../client/chain-spec" , version = "2.0.0-dev"} # Imported just for the `no_cc` feature clear_on_drop = { version = "0.2.3", features = ["no_cc"] } diff --git a/utils/build-script-utils/Cargo.toml b/utils/build-script-utils/Cargo.toml index 8c94edd527..d41b85a982 100644 --- a/utils/build-script-utils/Cargo.toml +++ b/utils/build-script-utils/Cargo.toml @@ -1,8 +1,10 @@ [package] name = "substrate-build-script-utils" -version = "2.0.0" +version = "2.0.0-dev" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" +homepage = "https://substrate.dev" +repository = "https://github.com/paritytech/substrate/" [dependencies] diff --git a/utils/fork-tree/Cargo.toml b/utils/fork-tree/Cargo.toml index 0ac0fb6522..be200007d5 100644 --- a/utils/fork-tree/Cargo.toml +++ b/utils/fork-tree/Cargo.toml @@ -1,9 +1,11 @@ [package] name = "fork-tree" -version = "2.0.0" +version = "2.0.0-dev" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" +homepage = "https://substrate.dev" +repository = "https://github.com/paritytech/substrate/" [dependencies] codec = { package = "parity-scale-codec", version = "1.0.0", features = ["derive"] } diff --git a/utils/frame/benchmarking-cli/Cargo.toml b/utils/frame/benchmarking-cli/Cargo.toml index 129104a901..648b37933e 100644 --- a/utils/frame/benchmarking-cli/Cargo.toml +++ b/utils/frame/benchmarking-cli/Cargo.toml @@ -1,17 +1,19 @@ [package] name = "frame-benchmarking-cli" -version = "2.0.0" +version = "2.0.0-dev" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" +homepage = "https://substrate.dev" +repository = "https://github.com/paritytech/substrate/" [dependencies] -frame-benchmarking = { version = "2.0.0", path = "../../../frame/benchmarking" } -sc-service = { version = "0.8.0", path = "../../../client/service" } -sc-cli = { version = "0.8.0", path = "../../../client/cli" } -sc-client = { version = "0.8.0", path = "../../../client" } -sc-client-db = { version = "0.8.0", path = "../../../client/db" } -sc-executor = { version = "0.8.0", path = "../../../client/executor" } -sp-runtime = { version = "2.0.0", path = "../../../primitives/runtime" } +frame-benchmarking = { version = "2.0.0-dev", path = "../../../frame/benchmarking" } +sc-service = { version = "0.8.0-dev", path = "../../../client/service" } +sc-cli = { version = "0.8.0-dev", path = "../../../client/cli" } +sc-client = { version = "0.8.0-dev", path = "../../../client" } +sc-client-db = { version = "0.8.0-dev", path = "../../../client/db" } +sc-executor = { version = "0.8.0-dev", path = "../../../client/executor" } +sp-runtime = { version = "2.0.0-dev", path = "../../../primitives/runtime" } structopt = "0.3.8" codec = { version = "1.1.2", package = "parity-scale-codec" } diff --git a/utils/frame/rpc/support/Cargo.toml b/utils/frame/rpc/support/Cargo.toml index 3b4339496a..51f004489a 100644 --- a/utils/frame/rpc/support/Cargo.toml +++ b/utils/frame/rpc/support/Cargo.toml @@ -1,9 +1,11 @@ [package] name = "substrate-frame-rpc-support" -version = "2.0.0" +version = "2.0.0-dev" authors = ["Parity Technologies ", "Andrew Dirksen "] edition = "2018" license = "GPL-3.0" +homepage = "https://substrate.dev" +repository = "https://github.com/paritytech/substrate/" [dependencies] futures = { version = "0.3.0", features = ["compat"] } @@ -11,10 +13,10 @@ jsonrpc-client-transports = "14" jsonrpc-core = "14" codec = { package = "parity-scale-codec", version = "1" } serde = "1" -frame-support = { version = "2.0.0", path = "../../../../frame/support" } -sp-storage = { version = "2.0.0", path = "../../../../primitives/storage" } -sc-rpc-api = { version = "0.8", path = "../../../../client/rpc-api" } +frame-support = { version = "2.0.0-dev", path = "../../../../frame/support" } +sp-storage = { version = "2.0.0-dev", path = "../../../../primitives/storage" } +sc-rpc-api = { version = "0.8.0-dev", path = "../../../../client/rpc-api" } [dev-dependencies] -frame-system = { version = "2.0.0", path = "../../../../frame/system" } +frame-system = { version = "2.0.0-dev", path = "../../../../frame/system" } tokio = "0.1" diff --git a/utils/frame/rpc/system/Cargo.toml b/utils/frame/rpc/system/Cargo.toml index 818794f846..88481ac884 100644 --- a/utils/frame/rpc/system/Cargo.toml +++ b/utils/frame/rpc/system/Cargo.toml @@ -1,12 +1,14 @@ [package] name = "substrate-frame-rpc-system" -version = "2.0.0" +version = "2.0.0-dev" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" +homepage = "https://substrate.dev" +repository = "https://github.com/paritytech/substrate/" [dependencies] -sc-client = { version = "0.8", path = "../../../../client/" } +sc-client = { version = "0.8.0-dev", path = "../../../../client/" } codec = { package = "parity-scale-codec", version = "1.0.0" } futures = "0.3.1" jsonrpc-core = "14.0.3" @@ -14,14 +16,14 @@ jsonrpc-core-client = "14.0.3" jsonrpc-derive = "14.0.3" log = "0.4.8" serde = { version = "1.0.101", features = ["derive"] } -sp-runtime = { version = "2.0.0", path = "../../../../primitives/runtime" } -sp-api = { version = "2.0.0", path = "../../../../primitives/api" } -frame-system-rpc-runtime-api = { version = "2.0.0", path = "../../../../frame/system/rpc/runtime-api" } -sp-core = { version = "2.0.0", path = "../../../../primitives/core" } -sp-blockchain = { version = "2.0.0", path = "../../../../primitives/blockchain" } -sp-transaction-pool = { version = "2.0.0", path = "../../../../primitives/transaction-pool" } +sp-runtime = { version = "2.0.0-dev", path = "../../../../primitives/runtime" } +sp-api = { version = "2.0.0-dev", path = "../../../../primitives/api" } +frame-system-rpc-runtime-api = { version = "2.0.0-dev", path = "../../../../frame/system/rpc/runtime-api" } +sp-core = { version = "2.0.0-dev", path = "../../../../primitives/core" } +sp-blockchain = { version = "2.0.0-dev", path = "../../../../primitives/blockchain" } +sp-transaction-pool = { version = "2.0.0-dev", path = "../../../../primitives/transaction-pool" } [dev-dependencies] -substrate-test-runtime-client = { version = "2.0.0", path = "../../../../test-utils/runtime/client" } +substrate-test-runtime-client = { version = "2.0.0-dev", path = "../../../../test-utils/runtime/client" } env_logger = "0.7.0" -sc-transaction-pool = { version = "2.0.0", path = "../../../../client/transaction-pool" } +sc-transaction-pool = { version = "2.0.0-dev", path = "../../../../client/transaction-pool" } diff --git a/utils/prometheus/Cargo.toml b/utils/prometheus/Cargo.toml index 0111dfb740..4c7ec546c8 100644 --- a/utils/prometheus/Cargo.toml +++ b/utils/prometheus/Cargo.toml @@ -1,10 +1,12 @@ [package] description = "Prometheus exporter server" name = "prometheus-exporter" -version = "0.8.0" +version = "0.8.0-dev" license = "GPL-3.0" authors = ["Parity Technologies "] edition = "2018" +homepage = "https://substrate.dev" +repository = "https://github.com/paritytech/substrate/" [dependencies] log = "0.4.8" diff --git a/utils/wasm-builder-runner/Cargo.toml b/utils/wasm-builder-runner/Cargo.toml index 1380d64fb3..8a41fe98b2 100644 --- a/utils/wasm-builder-runner/Cargo.toml +++ b/utils/wasm-builder-runner/Cargo.toml @@ -5,7 +5,8 @@ authors = ["Parity Technologies "] description = "Runner for substrate-wasm-builder" edition = "2018" readme = "README.md" -repository = "https://github.com/paritytech/substrate" +repository = "https://github.com/paritytech/substrate/" license = "GPL-3.0" +homepage = "https://substrate.dev" [dependencies] diff --git a/utils/wasm-builder/Cargo.toml b/utils/wasm-builder/Cargo.toml index 5941a39ffb..245ec63114 100644 --- a/utils/wasm-builder/Cargo.toml +++ b/utils/wasm-builder/Cargo.toml @@ -5,8 +5,9 @@ authors = ["Parity Technologies "] description = "Utility for building WASM binaries" edition = "2018" readme = "README.md" -repository = "https://github.com/paritytech/substrate" +repository = "https://github.com/paritytech/substrate/" license = "GPL-3.0" +homepage = "https://substrate.dev" [dependencies] build-helper = "0.1.1" -- GitLab From 44c0a6bebcb1e50927962bfad2e6e114f4b21005 Mon Sep 17 00:00:00 2001 From: kianenigma Date: Fri, 21 Feb 2020 17:23:05 +0100 Subject: [PATCH 031/301] =?UTF-8?q?Disable=20it=20=E2=9D=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bin/node/runtime/src/lib.rs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/bin/node/runtime/src/lib.rs b/bin/node/runtime/src/lib.rs index bda3e9b3db..a00a13d21d 100644 --- a/bin/node/runtime/src/lib.rs +++ b/bin/node/runtime/src/lib.rs @@ -315,7 +315,8 @@ parameter_types! { pub const BondingDuration: pallet_staking::EraIndex = 24 * 28; pub const SlashDeferDuration: pallet_staking::EraIndex = 24 * 7; // 1/4 the bonding duration. pub const RewardCurve: &'static PiecewiseLinear<'static> = &REWARD_CURVE; - pub const ElectionLookahead: BlockNumber = 150; + /// This means that the offchain election is disabled for now. + pub const ElectionLookahead: BlockNumber = 0; } impl pallet_staking::Trait for Runtime { -- GitLab From f21df59cf9d51a03b95eb88c59fc2abff8dfcbed Mon Sep 17 00:00:00 2001 From: kianenigma Date: Fri, 21 Feb 2020 17:48:03 +0100 Subject: [PATCH 032/301] Bump. --- bin/node/runtime/src/lib.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/bin/node/runtime/src/lib.rs b/bin/node/runtime/src/lib.rs index 90d8c78343..281030f512 100644 --- a/bin/node/runtime/src/lib.rs +++ b/bin/node/runtime/src/lib.rs @@ -127,8 +127,8 @@ pub const VERSION: RuntimeVersion = RuntimeVersion { // and set impl_version to 0. If only runtime // implementation changes and behavior does not, then leave spec_version as // is and increment impl_version. - spec_version: 224, - impl_version: 2, + spec_version: 225, + impl_version: 0, apis: RUNTIME_API_VERSIONS, }; -- GitLab From ddfa359cbe072726b6a4fec2e675cb9545a72847 Mon Sep 17 00:00:00 2001 From: Gavin Wood Date: Mon, 24 Feb 2020 14:04:42 -0300 Subject: [PATCH 033/301] Lazy reaping (#4895) * Squash and rebase from gav-lazy-reaping * Bump version * Bump runtime again * Docs. * Remove old functions * Update frame/balances/src/lib.rs Co-Authored-By: Shawn Tabrizi * Update frame/contracts/src/lib.rs Co-Authored-By: Shawn Tabrizi * Warnings * Bump runtime version * Update frame/democracy/src/lib.rs Co-Authored-By: Shawn Tabrizi * Update frame/system/src/lib.rs * Clean up OnReapAccount * Use frame_support debug * Bump spec * Renames and fix * Fix * Fix rename * Fix * Increase time for test Co-authored-by: Shawn Tabrizi Co-authored-by: Benjamin Kampmann --- .../pallets/template/src/mock.rs | 2 +- bin/node-template/runtime/src/lib.rs | 2 +- bin/node/cli/src/chain_spec.rs | 2 +- bin/node/cli/tests/common.rs | 2 +- bin/node/executor/tests/basic.rs | 10 +- bin/node/executor/tests/fees.rs | 4 +- bin/node/executor/tests/submit_transaction.rs | 5 +- bin/node/runtime/src/lib.rs | 6 +- bin/node/testing/src/genesis.rs | 6 +- frame/assets/src/lib.rs | 2 +- frame/aura/src/mock.rs | 2 +- frame/authority-discovery/src/lib.rs | 2 +- frame/authorship/src/lib.rs | 2 +- frame/babe/src/mock.rs | 2 +- frame/balances/Cargo.toml | 1 - frame/balances/src/lib.rs | 51 ++++- frame/balances/src/tests.rs | 15 +- frame/balances/src/tests_composite.rs | 2 +- frame/balances/src/tests_local.rs | 2 +- frame/collective/src/lib.rs | 2 +- frame/contracts/src/account_db.rs | 2 +- frame/contracts/src/lib.rs | 10 +- frame/contracts/src/tests.rs | 4 +- frame/democracy/src/lib.rs | 166 ++++++++++---- frame/elections-phragmen/src/lib.rs | 2 +- frame/elections/src/mock.rs | 2 +- frame/example-offchain-worker/src/tests.rs | 6 +- frame/example/src/lib.rs | 2 +- frame/executive/src/lib.rs | 4 +- frame/finality-tracker/src/lib.rs | 2 +- frame/generic-asset/src/lib.rs | 2 +- frame/generic-asset/src/mock.rs | 2 +- frame/grandpa/src/mock.rs | 2 +- frame/identity/src/lib.rs | 2 +- frame/im-online/src/mock.rs | 2 +- frame/indices/src/mock.rs | 2 +- frame/membership/src/lib.rs | 2 +- frame/nicks/src/lib.rs | 2 +- frame/offences/src/mock.rs | 2 +- frame/randomness-collective-flip/src/lib.rs | 2 +- frame/recovery/src/lib.rs | 57 +++-- frame/recovery/src/mock.rs | 2 +- frame/recovery/src/tests.rs | 11 +- frame/scored-pool/src/mock.rs | 2 +- frame/session/src/historical.rs | 2 +- frame/session/src/lib.rs | 108 +++++++--- frame/session/src/mock.rs | 2 +- frame/society/src/mock.rs | 2 +- frame/staking/src/lib.rs | 53 +++-- frame/staking/src/mock.rs | 46 ++-- frame/staking/src/tests.rs | 10 + frame/support/src/storage/migration.rs | 5 + frame/support/src/traits.rs | 4 +- frame/system/benches/bench.rs | 2 +- frame/system/src/lib.rs | 202 +++++++++++++----- frame/system/src/offchain.rs | 9 +- frame/timestamp/src/lib.rs | 2 +- frame/transaction-payment/src/lib.rs | 2 +- frame/treasury/src/lib.rs | 2 +- frame/utility/src/lib.rs | 8 +- frame/vesting/src/lib.rs | 2 +- test-utils/runtime/src/lib.rs | 2 +- 62 files changed, 597 insertions(+), 280 deletions(-) diff --git a/bin/node-template/pallets/template/src/mock.rs b/bin/node-template/pallets/template/src/mock.rs index 7a23610e4b..2ea81ffb45 100644 --- a/bin/node-template/pallets/template/src/mock.rs +++ b/bin/node-template/pallets/template/src/mock.rs @@ -41,7 +41,7 @@ impl system::Trait for Test { type ModuleToIndex = (); type AccountData = (); type OnNewAccount = (); - type OnReapAccount = (); + type OnKilledAccount = (); } impl Trait for Test { type Event = (); diff --git a/bin/node-template/runtime/src/lib.rs b/bin/node-template/runtime/src/lib.rs index a1bcd157ad..afc18177ce 100644 --- a/bin/node-template/runtime/src/lib.rs +++ b/bin/node-template/runtime/src/lib.rs @@ -164,7 +164,7 @@ impl system::Trait for Runtime { /// What to do if a new account is created. type OnNewAccount = (); /// What to do if an account is fully reaped from the system. - type OnReapAccount = Balances; + type OnKilledAccount = (); /// The data to be stored in an account. type AccountData = balances::AccountData; } diff --git a/bin/node/cli/src/chain_spec.rs b/bin/node/cli/src/chain_spec.rs index 5cdfb5cab8..d163cdf391 100644 --- a/bin/node/cli/src/chain_spec.rs +++ b/bin/node/cli/src/chain_spec.rs @@ -243,7 +243,7 @@ pub fn testnet_genesis( }), pallet_session: Some(SessionConfig { keys: initial_authorities.iter().map(|x| { - (x.0.clone(), session_keys(x.2.clone(), x.3.clone(), x.4.clone(), x.5.clone())) + (x.0.clone(), x.0.clone(), session_keys(x.2.clone(), x.3.clone(), x.4.clone(), x.5.clone())) }).collect::>(), }), pallet_staking: Some(StakingConfig { diff --git a/bin/node/cli/tests/common.rs b/bin/node/cli/tests/common.rs index 93a4a3e4e5..682a30bcc0 100644 --- a/bin/node/cli/tests/common.rs +++ b/bin/node/cli/tests/common.rs @@ -60,5 +60,5 @@ pub fn run_command_for_a_while(base_path: &Path, dev: bool) { // Stop the process kill(Pid::from_raw(cmd.id().try_into().unwrap()), SIGINT).unwrap(); - assert!(wait_for(&mut cmd, 20).map(|x| x.success()).unwrap_or_default()); + assert!(wait_for(&mut cmd, 40).map(|x| x.success()).unwrap_or_default()); } diff --git a/bin/node/executor/tests/basic.rs b/bin/node/executor/tests/basic.rs index 972c561a2f..eb629029c6 100644 --- a/bin/node/executor/tests/basic.rs +++ b/bin/node/executor/tests/basic.rs @@ -164,7 +164,7 @@ fn panic_execution_with_foreign_code_gives_error() { let mut t = TestExternalities::::new_with_code(BLOATY_CODE, Storage { top: map![ >::hashed_key_for(alice()) => { - (69u128, 0u128, 0u128, 0u128).encode() + (69u128, 0u8, 0u128, 0u128, 0u128).encode() }, >::hashed_key().to_vec() => { 69_u128.encode() @@ -200,7 +200,7 @@ fn bad_extrinsic_with_native_equivalent_code_gives_error() { let mut t = TestExternalities::::new_with_code(COMPACT_CODE, Storage { top: map![ >::hashed_key_for(alice()) => { - (0u32, 69u128, 0u128, 0u128, 0u128).encode() + (0u32, 0u8, 69u128, 0u128, 0u128, 0u128).encode() }, >::hashed_key().to_vec() => { 69_u128.encode() @@ -236,7 +236,7 @@ fn successful_execution_with_native_equivalent_code_gives_ok() { let mut t = TestExternalities::::new_with_code(COMPACT_CODE, Storage { top: map![ >::hashed_key_for(alice()) => { - (0u32, 111 * DOLLARS, 0u128, 0u128, 0u128).encode() + (0u32, 0u8, 111 * DOLLARS, 0u128, 0u128, 0u128).encode() }, >::hashed_key().to_vec() => { (111 * DOLLARS).encode() @@ -278,7 +278,7 @@ fn successful_execution_with_foreign_code_gives_ok() { let mut t = TestExternalities::::new_with_code(BLOATY_CODE, Storage { top: map![ >::hashed_key_for(alice()) => { - (0u32, 111 * DOLLARS, 0u128, 0u128, 0u128).encode() + (0u32, 0u8, 111 * DOLLARS, 0u128, 0u128, 0u128).encode() }, >::hashed_key().to_vec() => { (111 * DOLLARS).encode() @@ -734,7 +734,7 @@ fn successful_execution_gives_ok() { let mut t = TestExternalities::::new_with_code(COMPACT_CODE, Storage { top: map![ >::hashed_key_for(alice()) => { - (0u32, 111 * DOLLARS, 0u128, 0u128, 0u128).encode() + (0u32, 0u8, 111 * DOLLARS, 0u128, 0u128, 0u128).encode() }, >::hashed_key().to_vec() => { (111 * DOLLARS).encode() diff --git a/bin/node/executor/tests/fees.rs b/bin/node/executor/tests/fees.rs index 374dee354f..024c02bd6a 100644 --- a/bin/node/executor/tests/fees.rs +++ b/bin/node/executor/tests/fees.rs @@ -139,10 +139,10 @@ fn transaction_fee_is_correct_ultimate() { let mut t = TestExternalities::::new_with_code(COMPACT_CODE, Storage { top: map![ >::hashed_key_for(alice()) => { - (0u32, 100 * DOLLARS, 0 * DOLLARS, 0 * DOLLARS, 0 * DOLLARS).encode() + (0u32, 0u8, 100 * DOLLARS, 0 * DOLLARS, 0 * DOLLARS, 0 * DOLLARS).encode() }, >::hashed_key_for(bob()) => { - (0u32, 10 * DOLLARS, 0 * DOLLARS, 0 * DOLLARS, 0 * DOLLARS).encode() + (0u32, 0u8, 10 * DOLLARS, 0 * DOLLARS, 0 * DOLLARS, 0 * DOLLARS).encode() }, >::hashed_key().to_vec() => { (110 * DOLLARS).encode() diff --git a/bin/node/executor/tests/submit_transaction.rs b/bin/node/executor/tests/submit_transaction.rs index b870cf4037..1a92aeca6b 100644 --- a/bin/node/executor/tests/submit_transaction.rs +++ b/bin/node/executor/tests/submit_transaction.rs @@ -167,8 +167,9 @@ fn submitted_transaction_should_be_valid() { // add balance to the account let author = extrinsic.signature.clone().unwrap().0; let address = Indices::lookup(author).unwrap(); - let account = pallet_balances::AccountData { free: 5_000_000_000_000, ..Default::default() }; - >::insert(&address, (0u32, account)); + let data = pallet_balances::AccountData { free: 5_000_000_000_000, ..Default::default() }; + let account = frame_system::AccountInfo { nonce: 0u32, refcount: 0u8, data }; + >::insert(&address, account); // check validity let res = Executive::validate_transaction(extrinsic); diff --git a/bin/node/runtime/src/lib.rs b/bin/node/runtime/src/lib.rs index b6be9335ca..e91eca4e40 100644 --- a/bin/node/runtime/src/lib.rs +++ b/bin/node/runtime/src/lib.rs @@ -81,8 +81,8 @@ pub const VERSION: RuntimeVersion = RuntimeVersion { // and set impl_version to 0. If only runtime // implementation changes and behavior does not, then leave spec_version as // is and increment impl_version. - spec_version: 224, - impl_version: 2, + spec_version: 225, + impl_version: 0, apis: RUNTIME_API_VERSIONS, }; @@ -131,7 +131,7 @@ impl frame_system::Trait for Runtime { type ModuleToIndex = ModuleToIndex; type AccountData = pallet_balances::AccountData; type OnNewAccount = (); - type OnReapAccount = (Balances, Staking, Contracts, Session, Recovery); + type OnKilledAccount = (); } parameter_types! { diff --git a/bin/node/testing/src/genesis.rs b/bin/node/testing/src/genesis.rs index 9c163ea615..6aa7290a64 100644 --- a/bin/node/testing/src/genesis.rs +++ b/bin/node/testing/src/genesis.rs @@ -69,15 +69,15 @@ pub fn config_endowed( }), pallet_session: Some(SessionConfig { keys: vec![ - (alice(), to_session_keys( + (dave(), alice(), to_session_keys( &Ed25519Keyring::Alice, &Sr25519Keyring::Alice, )), - (bob(), to_session_keys( + (eve(), bob(), to_session_keys( &Ed25519Keyring::Bob, &Sr25519Keyring::Bob, )), - (charlie(), to_session_keys( + (ferdie(), charlie(), to_session_keys( &Ed25519Keyring::Charlie, &Sr25519Keyring::Charlie, )), diff --git a/frame/assets/src/lib.rs b/frame/assets/src/lib.rs index ebd1d17bcf..042ff89913 100644 --- a/frame/assets/src/lib.rs +++ b/frame/assets/src/lib.rs @@ -295,7 +295,7 @@ mod tests { type ModuleToIndex = (); type AccountData = (); type OnNewAccount = (); - type OnReapAccount = (); + type OnKilledAccount = (); } impl Trait for Test { type Event = (); diff --git a/frame/aura/src/mock.rs b/frame/aura/src/mock.rs index 5b3ccd7745..05a161ee49 100644 --- a/frame/aura/src/mock.rs +++ b/frame/aura/src/mock.rs @@ -63,7 +63,7 @@ impl frame_system::Trait for Test { type ModuleToIndex = (); type AccountData = (); type OnNewAccount = (); - type OnReapAccount = (); + type OnKilledAccount = (); } impl pallet_timestamp::Trait for Test { diff --git a/frame/authority-discovery/src/lib.rs b/frame/authority-discovery/src/lib.rs index 77906e1bfe..8ee4931e48 100644 --- a/frame/authority-discovery/src/lib.rs +++ b/frame/authority-discovery/src/lib.rs @@ -159,7 +159,7 @@ mod tests { type ModuleToIndex = (); type AccountData = (); type OnNewAccount = (); - type OnReapAccount = (); + type OnKilledAccount = (); } impl_outer_origin! { diff --git a/frame/authorship/src/lib.rs b/frame/authorship/src/lib.rs index 335e13a7fd..d3c1bf752a 100644 --- a/frame/authorship/src/lib.rs +++ b/frame/authorship/src/lib.rs @@ -433,7 +433,7 @@ mod tests { type ModuleToIndex = (); type AccountData = (); type OnNewAccount = (); - type OnReapAccount = (); + type OnKilledAccount = (); } parameter_types! { diff --git a/frame/babe/src/mock.rs b/frame/babe/src/mock.rs index aef0b4b386..2ec083728e 100644 --- a/frame/babe/src/mock.rs +++ b/frame/babe/src/mock.rs @@ -66,7 +66,7 @@ impl frame_system::Trait for Test { type ModuleToIndex = (); type AccountData = (); type OnNewAccount = (); - type OnReapAccount = (); + type OnKilledAccount = (); } impl_opaque_keys! { diff --git a/frame/balances/Cargo.toml b/frame/balances/Cargo.toml index 728adf9de7..be3fa14c7a 100644 --- a/frame/balances/Cargo.toml +++ b/frame/balances/Cargo.toml @@ -18,7 +18,6 @@ frame-support = { version = "2.0.0-dev", default-features = false, path = "../su frame-system = { version = "2.0.0-dev", default-features = false, path = "../system" } [dev-dependencies] -sp-io = { version = "2.0.0-dev", path = "../../primitives/io" } sp-core = { version = "2.0.0-dev", path = "../../primitives/core" } pallet-transaction-payment = { version = "2.0.0-dev", path = "../transaction-payment" } diff --git a/frame/balances/src/lib.rs b/frame/balances/src/lib.rs index 0f5e8b40d5..4dbaf4b8a8 100644 --- a/frame/balances/src/lib.rs +++ b/frame/balances/src/lib.rs @@ -159,11 +159,12 @@ mod benchmarking; use sp_std::prelude::*; use sp_std::{cmp, result, mem, fmt::Debug, ops::BitOr, convert::Infallible}; +use sp_io::hashing::twox_64; use codec::{Codec, Encode, Decode}; use frame_support::{ StorageValue, Parameter, decl_event, decl_storage, decl_module, decl_error, ensure, weights::SimpleDispatchInfo, traits::{ - Currency, OnReapAccount, OnUnbalanced, TryDrop, StoredMap, + Currency, OnKilledAccount, OnUnbalanced, TryDrop, StoredMap, WithdrawReason, WithdrawReasons, LockIdentifier, LockableCurrency, ExistenceRequirement, Imbalance, SignedImbalance, ReservableCurrency, Get, ExistenceRequirement::KeepAlive, ExistenceRequirement::AllowDeath, IsDeadAccount, BalanceStatus as Status @@ -178,7 +179,7 @@ use sp_runtime::{ }; use frame_system::{self as system, ensure_signed, ensure_root}; use frame_support::storage::migration::{ - get_storage_value, take_storage_value, put_storage_value, StorageIterator + get_storage_value, take_storage_value, put_storage_value, StorageIterator, have_storage_value }; pub use self::imbalances::{PositiveImbalance, NegativeImbalance}; @@ -609,7 +610,16 @@ impl, I: Instance> Module { for (hash, balances) in StorageIterator::>::new(b"Balances", b"Account").drain() { let nonce = take_storage_value::(b"System", b"AccountNonce", &hash).unwrap_or_default(); - put_storage_value(b"System", b"Account", &hash, (nonce, balances)); + let mut refs: system::RefCount = 0; + // The items in Kusama that would result in a ref count being incremented. + if have_storage_value(b"Democracy", b"Proxy", &hash) { refs += 1 } + // We skip Recovered since it's being replaced anyway. + let mut prefixed_hash = twox_64(&b":session:keys"[..]).to_vec(); + prefixed_hash.extend(&b":session:keys"[..]); + prefixed_hash.extend(&hash[..]); + if have_storage_value(b"Session", b"NextKeys", &prefixed_hash) { refs += 1 } + if have_storage_value(b"Staking", b"Bonded", &hash) { refs += 1 } + put_storage_value(b"System", b"Account", &hash, (nonce, refs, &balances)); } } @@ -721,14 +731,21 @@ impl, I: Instance> Module { } } }); - Locks::::insert(who, locks); - } -} -impl, I: Instance> OnReapAccount for Module { - fn on_reap_account(who: &T::AccountId) { - Locks::::remove(who); - Account::::remove(who); + let existed = Locks::::contains_key(who); + if locks.is_empty() { + Locks::::remove(who); + if existed { + // TODO: use Locks::::hashed_key + // https://github.com/paritytech/substrate/issues/4969 + system::Module::::dec_ref(who); + } + } else { + Locks::::insert(who, locks); + if !existed { + system::Module::::inc_ref(who); + } + } } } @@ -923,7 +940,7 @@ impl, I: Instance> frame_system::Trait for ElevatedTrait { type Version = T::Version; type ModuleToIndex = T::ModuleToIndex; type OnNewAccount = T::OnNewAccount; - type OnReapAccount = T::OnReapAccount; + type OnKilledAccount = T::OnKilledAccount; type AccountData = T::AccountData; } impl, I: Instance> Trait for ElevatedTrait { @@ -1040,6 +1057,7 @@ impl, I: Instance> Currency for Module where )?; let allow_death = existence_requirement == ExistenceRequirement::AllowDeath; + let allow_death = allow_death && system::Module::::allow_death(transactor); ensure!(allow_death || from_account.free >= ed, Error::::KeepAlive); Ok(()) @@ -1283,6 +1301,17 @@ impl, I: Instance> ReservableCurrency for Module } } +/// Implement `OnKilledAccount` to remove the local account, if using local account storage. +/// +/// NOTE: You probably won't need to use this! This only needs to be "wired in" to System module +/// if you're using the local balance storage. **If you're using the composite system account +/// storage (which is the default in most examples and tests) then there's no need.** +impl, I: Instance> OnKilledAccount for Module { + fn on_killed_account(who: &T::AccountId) { + Account::::remove(who); + } +} + impl, I: Instance> LockableCurrency for Module where T::Balance: MaybeSerializeDeserialize + Debug diff --git a/frame/balances/src/tests.rs b/frame/balances/src/tests.rs index 3d0c9e9207..98c7c856bc 100644 --- a/frame/balances/src/tests.rs +++ b/frame/balances/src/tests.rs @@ -24,8 +24,10 @@ macro_rules! decl_tests { use sp_runtime::{Fixed64, traits::{SignedExtension, BadOrigin}}; use frame_support::{ assert_noop, assert_ok, assert_err, - traits::{LockableCurrency, LockIdentifier, WithdrawReason, WithdrawReasons, - Currency, ReservableCurrency, ExistenceRequirement::AllowDeath} + traits::{ + LockableCurrency, LockIdentifier, WithdrawReason, WithdrawReasons, + Currency, ReservableCurrency, ExistenceRequirement::AllowDeath, StoredMap + } }; use pallet_transaction_payment::ChargeTransactionPayment; use frame_system::RawOrigin; @@ -55,6 +57,15 @@ macro_rules! decl_tests { }); } + #[test] + fn account_should_be_reaped() { + <$ext_builder>::default().existential_deposit(1).monied(true).build().execute_with(|| { + assert_eq!(Balances::free_balance(1), 10); + assert_ok!(>::transfer(&1, &2, 10, AllowDeath)); + assert!(!<::AccountStore as StoredMap>>::is_explicit(&1)); + }); + } + #[test] fn partial_locking_should_work() { <$ext_builder>::default().existential_deposit(1).monied(true).build().execute_with(|| { diff --git a/frame/balances/src/tests_composite.rs b/frame/balances/src/tests_composite.rs index c566c9a9d0..3a5c2178f8 100644 --- a/frame/balances/src/tests_composite.rs +++ b/frame/balances/src/tests_composite.rs @@ -67,7 +67,7 @@ impl frame_system::Trait for Test { type ModuleToIndex = (); type AccountData = super::AccountData; type OnNewAccount = (); - type OnReapAccount = Module; + type OnKilledAccount = (); } parameter_types! { pub const TransactionBaseFee: u64 = 0; diff --git a/frame/balances/src/tests_local.rs b/frame/balances/src/tests_local.rs index a63046e901..861c197212 100644 --- a/frame/balances/src/tests_local.rs +++ b/frame/balances/src/tests_local.rs @@ -67,7 +67,7 @@ impl frame_system::Trait for Test { type ModuleToIndex = (); type AccountData = super::AccountData; type OnNewAccount = (); - type OnReapAccount = Module; + type OnKilledAccount = Module; } parameter_types! { pub const TransactionBaseFee: u64 = 0; diff --git a/frame/collective/src/lib.rs b/frame/collective/src/lib.rs index a3ea901a6f..605cda3cb7 100644 --- a/frame/collective/src/lib.rs +++ b/frame/collective/src/lib.rs @@ -435,7 +435,7 @@ mod tests { type ModuleToIndex = (); type AccountData = (); type OnNewAccount = (); - type OnReapAccount = (); + type OnKilledAccount = (); } impl Trait for Test { type Origin = Origin; diff --git a/frame/contracts/src/account_db.rs b/frame/contracts/src/account_db.rs index 5204f1003a..374c55c374 100644 --- a/frame/contracts/src/account_db.rs +++ b/frame/contracts/src/account_db.rs @@ -151,7 +151,7 @@ impl AccountDb for DirectAccountDb { let exists = !T::Currency::total_balance(&address).is_zero(); total_imbalance = total_imbalance.merge(imbalance); if existed && !exists { - // Account killed. This will ultimately lead to calling `OnReapAccount` callback + // Account killed. This will ultimately lead to calling `OnKilledAccount` callback // which will make removal of CodeHashOf and AccountStorage for this account. // In order to avoid writing over the deleted properties we `continue` here. continue; diff --git a/frame/contracts/src/lib.rs b/frame/contracts/src/lib.rs index 42cbaa3a7c..571ae9700c 100644 --- a/frame/contracts/src/lib.rs +++ b/frame/contracts/src/lib.rs @@ -125,7 +125,7 @@ use frame_support::{ parameter_types, IsSubType, weights::DispatchInfo, }; -use frame_support::traits::{OnReapAccount, OnUnbalanced, Currency, Get, Time, Randomness}; +use frame_support::traits::{OnKilledAccount, OnUnbalanced, Currency, Get, Time, Randomness}; use frame_system::{self as system, ensure_signed, RawOrigin, ensure_root}; use sp_core::storage::well_known_keys::CHILD_STORAGE_KEY_PREFIX; use pallet_contracts_primitives::{RentProjection, ContractAccessError}; @@ -941,8 +941,12 @@ decl_storage! { } } -impl OnReapAccount for Module { - fn on_reap_account(who: &T::AccountId) { +// TODO: this should be removed in favour of a self-destruct contract host function allowing the +// contract to delete all storage and the `ContractInfoOf` key and transfer remaining balance to +// some other account. As it stands, it's an economic insecurity on any smart-contract chain. +// https://github.com/paritytech/substrate/issues/4952 +impl OnKilledAccount for Module { + fn on_killed_account(who: &T::AccountId) { if let Some(ContractInfo::Alive(info)) = >::take(who) { child::kill_storage(&info.trie_id, info.child_trie_unique_id()); } diff --git a/frame/contracts/src/tests.rs b/frame/contracts/src/tests.rs index ddd532334c..e775998a3a 100644 --- a/frame/contracts/src/tests.rs +++ b/frame/contracts/src/tests.rs @@ -117,7 +117,7 @@ impl frame_system::Trait for Test { type ModuleToIndex = (); type AccountData = pallet_balances::AccountData; type OnNewAccount = (); - type OnReapAccount = (Balances, Contracts); + type OnKilledAccount = Contracts; } impl pallet_balances::Trait for Test { type Balance = u64; @@ -1606,7 +1606,7 @@ fn restoration(test_different_storage: bool, test_restore_to_with_dirty_storage: assert_eq!(System::events(), vec![ EventRecord { phase: Phase::ApplyExtrinsic(0), - event: MetaEvent::system(system::RawEvent::ReapedAccount(DJANGO)), + event: MetaEvent::system(system::RawEvent::KilledAccount(DJANGO)), topics: vec![], }, EventRecord { diff --git a/frame/democracy/src/lib.rs b/frame/democracy/src/lib.rs index c2c44918b0..6755fabd20 100644 --- a/frame/democracy/src/lib.rs +++ b/frame/democracy/src/lib.rs @@ -30,7 +30,7 @@ use frame_support::{ weights::SimpleDispatchInfo, traits::{ Currency, ReservableCurrency, LockableCurrency, WithdrawReason, LockIdentifier, Get, - OnReapAccount, OnUnbalanced, BalanceStatus + OnUnbalanced, BalanceStatus } }; use frame_system::{self as system, ensure_signed, ensure_root}; @@ -260,6 +260,24 @@ impl ReferendumInfo } } +/// State of a proxy voting account. +#[derive(Clone, Eq, PartialEq, Encode, Decode, RuntimeDebug)] +pub enum ProxyState { + /// Account is open to becoming a proxy but is not yet assigned. + Open(AccountId), + /// Account is actively being a proxy. + Active(AccountId), +} + +impl ProxyState { + fn as_active(self) -> Option { + match self { + ProxyState::Active(a) => Some(a), + ProxyState::Open(_) => None, + } + } +} + decl_storage! { trait Store for Module as Democracy { /// The number of (public) proposals that have been made so far. @@ -299,7 +317,7 @@ decl_storage! { /// Who is able to vote for whom. Value is the fund-holding account, key is the /// vote-transaction-sending account. - pub Proxy get(fn proxy): map hasher(blake2_256) T::AccountId => Option; + pub Proxy get(fn proxy): map hasher(blake2_256) T::AccountId => Option>; /// Get the account (and lock periods) to which another account is delegating vote. pub Delegations get(fn delegations): @@ -423,6 +441,12 @@ decl_error! { NotLocked, /// The lock on the account to be unlocked has not yet expired. NotExpired, + /// A proxy-pairing was attempted to an account that was not open. + NotOpen, + /// A proxy-pairing was attempted to an account that was open to another account. + WrongOpen, + /// A proxy-de-pairing was attempted to an account that was not active. + NotActive } } @@ -525,8 +549,9 @@ decl_module! { #[compact] ref_index: ReferendumIndex, vote: Vote ) -> DispatchResult { - let who = Self::proxy(ensure_signed(origin)?).ok_or(Error::::NotProxy)?; - Self::do_vote(who, ref_index, vote) + let who = ensure_signed(origin)?; + let voter = Self::proxy(who).and_then(|a| a.as_active()).ok_or(Error::::NotProxy)?; + Self::do_vote(voter, ref_index, vote) } /// Schedule an emergency cancellation of a referendum. Cannot happen twice to the same @@ -659,42 +684,65 @@ decl_module! { } } - /// Specify a proxy. Called by the stash. + /// Specify a proxy that is already open to us. Called by the stash. + /// + /// NOTE: Used to be called `set_proxy`. /// /// # /// - One extra DB entry. /// # #[weight = SimpleDispatchInfo::FixedNormal(100_000)] - fn set_proxy(origin, proxy: T::AccountId) { + fn activate_proxy(origin, proxy: T::AccountId) { let who = ensure_signed(origin)?; - ensure!(!>::contains_key(&proxy), Error::::AlreadyProxy); - >::insert(proxy, who) + Proxy::::try_mutate(&proxy, |a| match a.take() { + None => Err(Error::::NotOpen), + Some(ProxyState::Active(_)) => Err(Error::::AlreadyProxy), + Some(ProxyState::Open(x)) if &x == &who => { + *a = Some(ProxyState::Active(who)); + Ok(()) + } + Some(ProxyState::Open(_)) => Err(Error::::WrongOpen), + })?; } /// Clear the proxy. Called by the proxy. /// + /// NOTE: Used to be called `resign_proxy`. + /// /// # /// - One DB clear. /// # #[weight = SimpleDispatchInfo::FixedNormal(100_000)] - fn resign_proxy(origin) { + fn close_proxy(origin) { let who = ensure_signed(origin)?; - >::remove(who); + Proxy::::mutate(&who, |a| { + if a.is_some() { + system::Module::::dec_ref(&who); + } + *a = None; + }); } - /// Clear the proxy. Called by the stash. + /// Deactivate the proxy, but leave open to this account. Called by the stash. + /// + /// The proxy must already be active. + /// + /// NOTE: Used to be called `remove_proxy`. /// /// # /// - One DB clear. /// # #[weight = SimpleDispatchInfo::FixedNormal(100_000)] - fn remove_proxy(origin, proxy: T::AccountId) { + fn deactivate_proxy(origin, proxy: T::AccountId) { let who = ensure_signed(origin)?; - ensure!( - &Self::proxy(&proxy).ok_or(Error::::NotProxy)? == &who, - Error::::WrongProxy, - ); - >::remove(proxy); + Proxy::::try_mutate(&proxy, |a| match a.take() { + None | Some(ProxyState::Open(_)) => Err(Error::::NotActive), + Some(ProxyState::Active(x)) if &x == &who => { + *a = Some(ProxyState::Open(who)); + Ok(()) + } + Some(ProxyState::Active(_)) => Err(Error::::WrongProxy), + })?; } /// Delegate vote. @@ -818,6 +866,30 @@ decl_module! { Locks::::remove(&target); Self::deposit_event(RawEvent::Unlocked(target)); } + + /// Become a proxy. + /// + /// This must be called prior to a later `activate_proxy`. + /// + /// Origin must be a Signed. + /// + /// - `target`: The account whose votes will later be proxied. + /// + /// `close_proxy` must be called before the account can be destroyed. + /// + /// # + /// - One extra DB entry. + /// # + #[weight = SimpleDispatchInfo::FixedNormal(100_000)] + fn open_proxy(origin, target: T::AccountId) { + let who = ensure_signed(origin)?; + Proxy::::mutate(&who, |a| { + if a.is_none() { + system::Module::::inc_ref(&who); + } + *a = Some(ProxyState::Open(target)); + }); + } } } @@ -935,7 +1007,12 @@ impl Module { #[cfg(feature = "std")] pub fn force_proxy(stash: T::AccountId, proxy: T::AccountId) { - >::insert(proxy, stash) + Proxy::::mutate(&proxy, |o| { + if o.is_none() { + system::Module::::inc_ref(&proxy); + } + *o = Some(ProxyState::Active(stash)) + }) } /// Start a referendum. @@ -1162,12 +1239,6 @@ impl Module { } } -impl OnReapAccount for Module { - fn on_reap_account(who: &T::AccountId) { - >::remove(who) - } -} - #[cfg(test)] mod tests { use super::*; @@ -1229,7 +1300,7 @@ mod tests { type ModuleToIndex = (); type AccountData = pallet_balances::AccountData; type OnNewAccount = (); - type OnReapAccount = Balances; + type OnKilledAccount = (); } parameter_types! { pub const ExistentialDeposit: u64 = 1; @@ -1968,29 +2039,45 @@ mod tests { fn proxy_should_work() { new_test_ext().execute_with(|| { assert_eq!(Democracy::proxy(10), None); - assert_ok!(Democracy::set_proxy(Origin::signed(1), 10)); - assert_eq!(Democracy::proxy(10), Some(1)); + assert!(System::allow_death(&10)); + + assert_noop!(Democracy::activate_proxy(Origin::signed(1), 10), Error::::NotOpen); + + assert_ok!(Democracy::open_proxy(Origin::signed(10), 1)); + assert!(!System::allow_death(&10)); + assert_eq!(Democracy::proxy(10), Some(ProxyState::Open(1))); + + assert_noop!(Democracy::activate_proxy(Origin::signed(2), 10), Error::::WrongOpen); + assert_ok!(Democracy::activate_proxy(Origin::signed(1), 10)); + assert_eq!(Democracy::proxy(10), Some(ProxyState::Active(1))); // Can't set when already set. - assert_noop!(Democracy::set_proxy(Origin::signed(2), 10), Error::::AlreadyProxy); + assert_noop!(Democracy::activate_proxy(Origin::signed(2), 10), Error::::AlreadyProxy); // But this works because 11 isn't proxying. - assert_ok!(Democracy::set_proxy(Origin::signed(2), 11)); - assert_eq!(Democracy::proxy(10), Some(1)); - assert_eq!(Democracy::proxy(11), Some(2)); + assert_ok!(Democracy::open_proxy(Origin::signed(11), 2)); + assert_ok!(Democracy::activate_proxy(Origin::signed(2), 11)); + assert_eq!(Democracy::proxy(10), Some(ProxyState::Active(1))); + assert_eq!(Democracy::proxy(11), Some(ProxyState::Active(2))); // 2 cannot fire 1's proxy: - assert_noop!(Democracy::remove_proxy(Origin::signed(2), 10), Error::::WrongProxy); + assert_noop!(Democracy::deactivate_proxy(Origin::signed(2), 10), Error::::WrongProxy); - // 1 fires his proxy: - assert_ok!(Democracy::remove_proxy(Origin::signed(1), 10)); - assert_eq!(Democracy::proxy(10), None); - assert_eq!(Democracy::proxy(11), Some(2)); + // 1 deactivates their proxy: + assert_ok!(Democracy::deactivate_proxy(Origin::signed(1), 10)); + assert_eq!(Democracy::proxy(10), Some(ProxyState::Open(1))); + // but the proxy account cannot be killed until the proxy is closed. + assert!(!System::allow_death(&10)); - // 11 resigns: - assert_ok!(Democracy::resign_proxy(Origin::signed(11))); + // and then 10 closes it completely: + assert_ok!(Democracy::close_proxy(Origin::signed(10))); assert_eq!(Democracy::proxy(10), None); + assert!(System::allow_death(&10)); + + // 11 just closes without 2's "permission". + assert_ok!(Democracy::close_proxy(Origin::signed(11))); assert_eq!(Democracy::proxy(11), None); + assert!(System::allow_death(&11)); }); } @@ -2002,7 +2089,8 @@ mod tests { fast_forward_to(2); let r = 0; - assert_ok!(Democracy::set_proxy(Origin::signed(1), 10)); + assert_ok!(Democracy::open_proxy(Origin::signed(10), 1)); + assert_ok!(Democracy::activate_proxy(Origin::signed(1), 10)); assert_ok!(Democracy::proxy_vote(Origin::signed(10), r, AYE)); assert_eq!(Democracy::voters_for(r), vec![1]); diff --git a/frame/elections-phragmen/src/lib.rs b/frame/elections-phragmen/src/lib.rs index f250e77121..a9474ae844 100644 --- a/frame/elections-phragmen/src/lib.rs +++ b/frame/elections-phragmen/src/lib.rs @@ -816,7 +816,7 @@ mod tests { type ModuleToIndex = (); type AccountData = pallet_balances::AccountData; type OnNewAccount = (); - type OnReapAccount = Balances; + type OnKilledAccount = (); } parameter_types! { diff --git a/frame/elections/src/mock.rs b/frame/elections/src/mock.rs index c5af6ba045..b82e73d512 100644 --- a/frame/elections/src/mock.rs +++ b/frame/elections/src/mock.rs @@ -56,7 +56,7 @@ impl frame_system::Trait for Test { type ModuleToIndex = (); type AccountData = pallet_balances::AccountData; type OnNewAccount = (); - type OnReapAccount = Balances; + type OnKilledAccount = (); } parameter_types! { diff --git a/frame/example-offchain-worker/src/tests.rs b/frame/example-offchain-worker/src/tests.rs index 6d6a82d8c9..9b6a567a17 100644 --- a/frame/example-offchain-worker/src/tests.rs +++ b/frame/example-offchain-worker/src/tests.rs @@ -50,10 +50,10 @@ parameter_types! { } impl frame_system::Trait for Test { type Origin = Origin; + type Call = (); type Index = u64; type BlockNumber = u64; type Hash = H256; - type Call = (); type Hashing = BlakeTwo256; type AccountId = sp_core::sr25519::Public; type Lookup = IdentityLookup; @@ -65,9 +65,9 @@ impl frame_system::Trait for Test { type AvailableBlockRatio = AvailableBlockRatio; type Version = (); type ModuleToIndex = (); - type OnReapAccount = (); - type OnNewAccount = (); type AccountData = (); + type OnNewAccount = (); + type OnKilledAccount = (); } type Extrinsic = TestXt, ()>; diff --git a/frame/example/src/lib.rs b/frame/example/src/lib.rs index 39f0d25d32..f4139a310a 100644 --- a/frame/example/src/lib.rs +++ b/frame/example/src/lib.rs @@ -690,7 +690,7 @@ mod tests { type ModuleToIndex = (); type AccountData = pallet_balances::AccountData; type OnNewAccount = (); - type OnReapAccount = pallet_balances::Module; + type OnKilledAccount = (); } parameter_types! { pub const ExistentialDeposit: u64 = 1; diff --git a/frame/executive/src/lib.rs b/frame/executive/src/lib.rs index f58833440c..d7fecf4590 100644 --- a/frame/executive/src/lib.rs +++ b/frame/executive/src/lib.rs @@ -469,7 +469,7 @@ mod tests { type ModuleToIndex = (); type AccountData = pallet_balances::AccountData; type OnNewAccount = (); - type OnReapAccount = Balances; + type OnKilledAccount = (); } parameter_types! { pub const ExistentialDeposit: u64 = 1; @@ -573,7 +573,7 @@ mod tests { header: Header { parent_hash: [69u8; 32].into(), number: 1, - state_root: hex!("96797237079b6d6ffab7a47f90ee257a439a0e8268bdab3fe2f1e52572b101de").into(), + state_root: hex!("17caebd966d10cc6dc9659edf7fa3196511593f6c39f80f9b97cdbc3b0855cf3").into(), extrinsics_root: hex!("03170a2e7597b7b7e3d84c05391d139a62b157e78786d8c082f29dcf4c111314").into(), digest: Digest { logs: vec![], }, }, diff --git a/frame/finality-tracker/src/lib.rs b/frame/finality-tracker/src/lib.rs index ef6e0d9a4b..08056a34ab 100644 --- a/frame/finality-tracker/src/lib.rs +++ b/frame/finality-tracker/src/lib.rs @@ -263,7 +263,7 @@ mod tests { type ModuleToIndex = (); type AccountData = (); type OnNewAccount = (); - type OnReapAccount = (); + type OnKilledAccount = (); } parameter_types! { pub const WindowSize: u64 = 11; diff --git a/frame/generic-asset/src/lib.rs b/frame/generic-asset/src/lib.rs index e98fc32ecb..f1713dd586 100644 --- a/frame/generic-asset/src/lib.rs +++ b/frame/generic-asset/src/lib.rs @@ -1124,7 +1124,7 @@ impl frame_system::Trait for ElevatedTrait { type ModuleToIndex = (); type AccountData = (); type OnNewAccount = (); - type OnReapAccount = (); + type OnKilledAccount = (); } impl Trait for ElevatedTrait { type Balance = T::Balance; diff --git a/frame/generic-asset/src/mock.rs b/frame/generic-asset/src/mock.rs index 7a61a61c43..8db140d90c 100644 --- a/frame/generic-asset/src/mock.rs +++ b/frame/generic-asset/src/mock.rs @@ -64,7 +64,7 @@ impl frame_system::Trait for Test { type ModuleToIndex = (); type AccountData = (); type OnNewAccount = (); - type OnReapAccount = (); + type OnKilledAccount = (); } impl Trait for Test { diff --git a/frame/grandpa/src/mock.rs b/frame/grandpa/src/mock.rs index 77a19c7626..8b94becd5a 100644 --- a/frame/grandpa/src/mock.rs +++ b/frame/grandpa/src/mock.rs @@ -67,7 +67,7 @@ impl frame_system::Trait for Test { type ModuleToIndex = (); type AccountData = (); type OnNewAccount = (); - type OnReapAccount = (); + type OnKilledAccount = (); } mod grandpa { diff --git a/frame/identity/src/lib.rs b/frame/identity/src/lib.rs index 23a0620edf..68b7905961 100644 --- a/frame/identity/src/lib.rs +++ b/frame/identity/src/lib.rs @@ -936,7 +936,7 @@ mod tests { type ModuleToIndex = (); type AccountData = pallet_balances::AccountData; type OnNewAccount = (); - type OnReapAccount = Balances; + type OnKilledAccount = (); } parameter_types! { pub const ExistentialDeposit: u64 = 1; diff --git a/frame/im-online/src/mock.rs b/frame/im-online/src/mock.rs index 7ee4c89ab4..a703b24629 100644 --- a/frame/im-online/src/mock.rs +++ b/frame/im-online/src/mock.rs @@ -117,7 +117,7 @@ impl frame_system::Trait for Runtime { type ModuleToIndex = (); type AccountData = (); type OnNewAccount = (); - type OnReapAccount = (); + type OnKilledAccount = (); } parameter_types! { diff --git a/frame/indices/src/mock.rs b/frame/indices/src/mock.rs index fe01b680bc..355b3cc792 100644 --- a/frame/indices/src/mock.rs +++ b/frame/indices/src/mock.rs @@ -67,7 +67,7 @@ impl frame_system::Trait for Test { type ModuleToIndex = (); type AccountData = pallet_balances::AccountData; type OnNewAccount = (); - type OnReapAccount = Balances; + type OnKilledAccount = (); } parameter_types! { diff --git a/frame/membership/src/lib.rs b/frame/membership/src/lib.rs index 1ad187b2ee..c39055c1bc 100644 --- a/frame/membership/src/lib.rs +++ b/frame/membership/src/lib.rs @@ -271,7 +271,7 @@ mod tests { type ModuleToIndex = (); type AccountData = (); type OnNewAccount = (); - type OnReapAccount = (); + type OnKilledAccount = (); } ord_parameter_types! { pub const One: u64 = 1; diff --git a/frame/nicks/src/lib.rs b/frame/nicks/src/lib.rs index 2b2d59014d..caed6e40ac 100644 --- a/frame/nicks/src/lib.rs +++ b/frame/nicks/src/lib.rs @@ -287,7 +287,7 @@ mod tests { type ModuleToIndex = (); type AccountData = pallet_balances::AccountData; type OnNewAccount = (); - type OnReapAccount = Balances; + type OnKilledAccount = (); } parameter_types! { pub const ExistentialDeposit: u64 = 1; diff --git a/frame/offences/src/mock.rs b/frame/offences/src/mock.rs index f2e19b63f5..a003ad6915 100644 --- a/frame/offences/src/mock.rs +++ b/frame/offences/src/mock.rs @@ -91,7 +91,7 @@ impl frame_system::Trait for Runtime { type ModuleToIndex = (); type AccountData = (); type OnNewAccount = (); - type OnReapAccount = (); + type OnKilledAccount = (); } impl Trait for Runtime { diff --git a/frame/randomness-collective-flip/src/lib.rs b/frame/randomness-collective-flip/src/lib.rs index 53d640688e..0ded7dd6b0 100644 --- a/frame/randomness-collective-flip/src/lib.rs +++ b/frame/randomness-collective-flip/src/lib.rs @@ -193,7 +193,7 @@ mod tests { type ModuleToIndex = (); type AccountData = (); type OnNewAccount = (); - type OnReapAccount = (); + type OnKilledAccount = (); } type System = frame_system::Module; diff --git a/frame/recovery/src/lib.rs b/frame/recovery/src/lib.rs index 6fa00af751..1b3c941638 100644 --- a/frame/recovery/src/lib.rs +++ b/frame/recovery/src/lib.rs @@ -159,9 +159,8 @@ use codec::{Encode, Decode}; use frame_support::{ decl_module, decl_event, decl_storage, decl_error, ensure, - Parameter, RuntimeDebug, - weights::{GetDispatchInfo, SimpleDispatchInfo, FunctionOf}, - traits::{Currency, ReservableCurrency, Get, OnReapAccount, BalanceStatus}, + Parameter, RuntimeDebug, weights::{GetDispatchInfo, SimpleDispatchInfo, FunctionOf}, + traits::{Currency, ReservableCurrency, Get, BalanceStatus}, }; use frame_system::{self as system, ensure_signed, ensure_root}; @@ -241,6 +240,7 @@ decl_storage! { pub Recoverable get(fn recovery_config): map hasher(blake2_256) T::AccountId => Option, T::AccountId>>; + /// Active recovery attempts. /// /// First account is the account to be recovered, and the second account @@ -248,10 +248,11 @@ decl_storage! { pub ActiveRecoveries get(fn active_recovery): double_map hasher(twox_64_concat) T::AccountId, hasher(twox_64_concat) T::AccountId => Option, T::AccountId>>; - /// The final list of recovered accounts. + + /// The list of allowed proxy accounts. /// - /// Map from the recovered account to the user who can access it. - pub Recovered get(fn recovered_account): + /// Map from the user who can access it to the recovered account. + pub Proxy get(fn proxy): map hasher(blake2_256) T::AccountId => Option; } } @@ -308,6 +309,8 @@ decl_error! { StillActive, /// There was an overflow in a calculation Overflow, + /// This account is already set up for recovery + AlreadyProxy, } } @@ -332,7 +335,7 @@ decl_module! { /// - One storage lookup to check account is recovered by `who`. O(1) /// # #[weight = FunctionOf( - |args: (&T::AccountId, &Box<::Call>)| args.1.get_dispatch_info().weight + 10_000, + |args: (&T::AccountId, &Box<::Call>)| args.1.get_dispatch_info().weight + 10_000, |args: (&T::AccountId, &Box<::Call>)| args.1.get_dispatch_info().class, true )] @@ -342,7 +345,8 @@ decl_module! { ) -> DispatchResult { let who = ensure_signed(origin)?; // Check `who` is allowed to make a call on behalf of `account` - ensure!(Self::recovered_account(&account) == Some(who), Error::::NotAllowed); + let target = Self::proxy(&who).ok_or(Error::::NotAllowed)?; + ensure!(&target == &account, Error::::NotAllowed); call.dispatch(frame_system::RawOrigin::Signed(account).into()) } @@ -363,7 +367,7 @@ decl_module! { fn set_recovered(origin, lost: T::AccountId, rescuer: T::AccountId) { ensure_root(origin)?; // Create the recovery storage item. - >::insert(&lost, &rescuer); + >::insert(&rescuer, &lost); Self::deposit_event(RawEvent::AccountRecovered(lost, rescuer)); } @@ -428,6 +432,7 @@ decl_module! { }; // Create the recovery configuration storage item >::insert(&who, recovery_config); + Self::deposit_event(RawEvent::RecoveryCreated(who)); } @@ -545,6 +550,7 @@ decl_module! { let recovery_config = Self::recovery_config(&account).ok_or(Error::::NotRecoverable)?; // Get the active recovery process for the rescuer let active_recovery = Self::active_recovery(&account, &who).ok_or(Error::::NotStarted)?; + ensure!(!Proxy::::contains_key(&who), Error::::AlreadyProxy); // Make sure the delay period has passed let current_block_number = >::block_number(); let recoverable_block_number = active_recovery.created @@ -557,7 +563,8 @@ decl_module! { Error::::Threshold ); // Create the recovery storage item - >::insert(&account, &who); + Proxy::::insert(&who, &account); + system::Module::::inc_ref(&who); Self::deposit_event(RawEvent::AccountRecovered(account, who)); } @@ -592,7 +599,7 @@ decl_module! { Self::deposit_event(RawEvent::RecoveryClosed(who, rescuer)); } - /// Remove the recovery process for your account. + /// Remove the recovery process for your account. Recovered accounts are still accessible. /// /// NOTE: The user must make sure to call `close_recovery` on all active /// recovery attempts before calling this function else it will fail. @@ -621,10 +628,30 @@ decl_module! { ensure!(active_recoveries.next().is_none(), Error::::StillActive); // Take the recovery configuration for this account. let recovery_config = >::take(&who).ok_or(Error::::NotRecoverable)?; + // Unreserve the initial deposit for the recovery configuration. T::Currency::unreserve(&who, recovery_config.deposit); Self::deposit_event(RawEvent::RecoveryRemoved(who)); } + + /// Cancel the ability to use `as_recovered` for `account`. + /// + /// The dispatch origin for this call must be _Signed_ and registered to + /// be able to make calls on behalf of the recovered account. + /// + /// Parameters: + /// - `account`: The recovered account you are able to call on-behalf-of. + /// + /// # + /// - One storage mutation to check account is recovered by `who`. O(1) + /// # + fn cancel_recovered(origin, account: T::AccountId) { + let who = ensure_signed(origin)?; + // Check `who` is allowed to make a call on behalf of `account` + ensure!(Self::proxy(&who) == Some(account), Error::::NotAllowed); + Proxy::::remove(&who); + system::Module::::dec_ref(&who); + } } } @@ -639,11 +666,3 @@ impl Module { friends.binary_search(&friend).is_ok() } } - -impl OnReapAccount for Module { - /// Remove any existing access another account might have when the account is reaped. - /// This removes the final storage item managed by this module for any given account. - fn on_reap_account(who: &T::AccountId) { - >::remove(who); - } -} diff --git a/frame/recovery/src/mock.rs b/frame/recovery/src/mock.rs index 97ee07bc6a..a5b7731c22 100644 --- a/frame/recovery/src/mock.rs +++ b/frame/recovery/src/mock.rs @@ -80,7 +80,7 @@ impl frame_system::Trait for Test { type ModuleToIndex = (); type AccountData = pallet_balances::AccountData; type OnNewAccount = (); - type OnReapAccount = (Balances, Recovery); + type OnKilledAccount = (); } parameter_types! { diff --git a/frame/recovery/src/tests.rs b/frame/recovery/src/tests.rs index 97d4791cce..9c644291c9 100644 --- a/frame/recovery/src/tests.rs +++ b/frame/recovery/src/tests.rs @@ -31,7 +31,7 @@ use frame_support::{ fn basic_setup_works() { new_test_ext().execute_with(|| { // Nothing in storage to start - assert_eq!(Recovery::recovered_account(&1), None); + assert_eq!(Recovery::proxy(&2), None); assert_eq!(Recovery::active_recovery(&1, &2), None); assert_eq!(Recovery::recovery_config(&1), None); // Everyone should have starting balance of 100 @@ -91,10 +91,13 @@ fn recovery_life_cycle_works() { // All funds have been fully recovered! assert_eq!(Balances::free_balance(1), 200); assert_eq!(Balances::free_balance(5), 0); + // Remove the proxy link. + assert_ok!(Recovery::cancel_recovered(Origin::signed(1), 5)); + // All storage items are removed from the module assert!(!>::contains_key(&5, &1)); assert!(!>::contains_key(&5)); - assert!(!>::contains_key(&5)); + assert!(!>::contains_key(&1)); }); } @@ -335,7 +338,7 @@ fn claim_recovery_works() { // Account can be recovered. assert_ok!(Recovery::claim_recovery(Origin::signed(1), 5)); // Recovered storage item is correctly created - assert_eq!(>::get(&5), Some(1)); + assert_eq!(>::get(&1), Some(5)); // Account could be re-recovered in the case that the recoverer account also gets lost. assert_ok!(Recovery::initiate_recovery(Origin::signed(4), 5)); assert_ok!(Recovery::vouch_recovery(Origin::signed(2), 5, 4)); @@ -347,7 +350,7 @@ fn claim_recovery_works() { // Account is re-recovered. assert_ok!(Recovery::claim_recovery(Origin::signed(4), 5)); // Recovered storage item is correctly updated - assert_eq!(>::get(&5), Some(4)); + assert_eq!(>::get(&4), Some(5)); }); } diff --git a/frame/scored-pool/src/mock.rs b/frame/scored-pool/src/mock.rs index 90006da91e..a28b789137 100644 --- a/frame/scored-pool/src/mock.rs +++ b/frame/scored-pool/src/mock.rs @@ -72,7 +72,7 @@ impl frame_system::Trait for Test { type ModuleToIndex = (); type AccountData = pallet_balances::AccountData; type OnNewAccount = (); - type OnReapAccount = Balances; + type OnKilledAccount = (); } impl pallet_balances::Trait for Test { diff --git a/frame/session/src/historical.rs b/frame/session/src/historical.rs index cf20f31360..ced630e5fd 100644 --- a/frame/session/src/historical.rs +++ b/frame/session/src/historical.rs @@ -318,7 +318,7 @@ mod tests { let mut t = frame_system::GenesisConfig::default().build_storage::().unwrap(); crate::GenesisConfig:: { keys: NEXT_VALIDATORS.with(|l| - l.borrow().iter().cloned().map(|i| (i, UintAuthorityId(i).into())).collect() + l.borrow().iter().cloned().map(|i| (i, i, UintAuthorityId(i).into())).collect() ), }.assimilate_storage(&mut t).unwrap(); sp_io::TestExternalities::new(t) diff --git a/frame/session/src/lib.rs b/frame/session/src/lib.rs index 0abe06527b..6340b79f0f 100644 --- a/frame/session/src/lib.rs +++ b/frame/session/src/lib.rs @@ -105,8 +105,9 @@ use sp_runtime::{KeyTypeId, Perbill, RuntimeAppPublic, BoundToRuntimeAppPublic}; use frame_support::weights::SimpleDispatchInfo; use sp_runtime::traits::{Convert, Zero, Member, OpaqueKeys}; use sp_staking::SessionIndex; -use frame_support::{dispatch, ConsensusEngineId, decl_module, decl_event, decl_storage, decl_error}; -use frame_support::{ensure, traits::{OnReapAccount, Get, FindAuthor, ValidatorRegistration}, Parameter}; +use frame_support::{ensure, decl_module, decl_event, decl_storage, decl_error, ConsensusEngineId}; +use frame_support::{traits::{Get, FindAuthor, ValidatorRegistration}, Parameter}; +use frame_support::dispatch::{self, DispatchResult, DispatchError}; use frame_system::{self as system, ensure_signed}; #[cfg(test)] @@ -361,6 +362,7 @@ decl_storage! { /// /// The first key is always `DEDUP_KEY_PREFIX` to have all the data in the same branch of /// the trie. Having all data in the same branch should prevent slowing down other queries. + // TODO: Migrate to a normal map now https://github.com/paritytech/substrate/issues/4917 NextKeys: double_map hasher(twox_64_concat) Vec, hasher(blake2_256) T::ValidatorId => Option; @@ -368,11 +370,12 @@ decl_storage! { /// /// The first key is always `DEDUP_KEY_PREFIX` to have all the data in the same branch of /// the trie. Having all data in the same branch should prevent slowing down other queries. + // TODO: Migrate to a normal map now https://github.com/paritytech/substrate/issues/4917 KeyOwner: double_map hasher(twox_64_concat) Vec, hasher(blake2_256) (KeyTypeId, Vec) => Option; } add_extra_genesis { - config(keys): Vec<(T::ValidatorId, T::Keys)>; + config(keys): Vec<(T::AccountId, T::ValidatorId, T::Keys)>; build(|config: &GenesisConfig| { if T::SessionHandler::KEY_TYPE_IDS.len() != T::Keys::key_ids().len() { panic!("Number of keys in session handler and session keys does not match"); @@ -388,21 +391,17 @@ decl_storage! { } }); - for (who, keys) in config.keys.iter().cloned() { - assert!( - >::load_keys(&who).is_none(), - "genesis config contained duplicate validator {:?}", who, - ); - - >::do_set_keys(&who, keys) + for (account, val, keys) in config.keys.iter().cloned() { + >::inner_set_keys(&val, keys) .expect("genesis config must not contain duplicates; qed"); + system::Module::::inc_ref(&account); } let initial_validators_0 = T::SessionManager::new_session(0) .unwrap_or_else(|| { frame_support::print("No initial validator provided by `SessionManager`, use \ session config keys to generate initial validator set."); - config.keys.iter().map(|(ref v, _)| v.clone()).collect() + config.keys.iter().map(|x| x.1.clone()).collect() }); assert!(!initial_validators_0.is_empty(), "Empty validator set for session 0 in genesis block!"); @@ -445,6 +444,8 @@ decl_error! { NoAssociatedValidatorId, /// Registered duplicate key. DuplicatedKey, + /// No keys are associated with this account. + NoKeys, } } @@ -467,6 +468,8 @@ decl_module! { /// # /// - O(log n) in number of accounts. /// - One extra DB entry. + /// - Increases system account refs by one on success iff there were previously no keys set. + /// In this case, purge_keys will need to be called before the account can be removed. /// # #[weight = SimpleDispatchInfo::FixedNormal(150_000)] fn set_keys(origin, keys: T::Keys, proof: Vec) -> dispatch::DispatchResult { @@ -474,13 +477,27 @@ decl_module! { ensure!(keys.ownership_proof_is_valid(&proof), Error::::InvalidProof); - let who = T::ValidatorIdOf::convert(who).ok_or(Error::::NoAssociatedValidatorId)?; - Self::do_set_keys(&who, keys)?; Ok(()) } + /// Removes any session key(s) of the function caller. + /// This doesn't take effect until the next session. + /// + /// The dispatch origin of this function must be signed. + /// + /// # + /// - O(N) in number of key types. + /// - Removes N + 1 DB entries. + /// - Reduces system account refs by one on success. + /// # + #[weight = SimpleDispatchInfo::FixedNormal(150_000)] + fn purge_keys(origin) { + let who = ensure_signed(origin)?; + Self::do_purge_keys(&who)?; + } + /// Called when a block is initialized. Will rotate session if it is the last /// block of the current session. fn on_initialize(n: T::BlockNumber) { @@ -612,10 +629,30 @@ impl Module { Self::validators().iter().position(|i| i == c).map(Self::disable_index).ok_or(()) } - // perform the set_key operation, checking for duplicates. - // does not set `Changed`. - fn do_set_keys(who: &T::ValidatorId, keys: T::Keys) -> dispatch::DispatchResult { - let old_keys = Self::load_keys(&who); + /// Perform the set_key operation, checking for duplicates. Does not set `Changed`. + /// + /// This ensures that the reference counter in system is incremented appropriately and as such + /// must accept an account ID, rather than a validator ID. + fn do_set_keys(account: &T::AccountId, keys: T::Keys) -> dispatch::DispatchResult { + let who = T::ValidatorIdOf::convert(account.clone()) + .ok_or(Error::::NoAssociatedValidatorId)?; + + let old_keys = Self::inner_set_keys(&who, keys)?; + if old_keys.is_none() { + system::Module::::inc_ref(&account); + } + + Ok(()) + } + + /// Perform the set_key operation, checking for duplicates. Does not set `Changed`. + /// + /// The old keys for this validator are returned, or `None` if there were none. + /// + /// This does not ensure that the reference counter in system is incremented appropriately, it + /// must be done by the caller or the keys will be leaked in storage. + fn inner_set_keys(who: &T::ValidatorId, keys: T::Keys) -> Result, DispatchError> { + let old_keys = Self::load_keys(who); for id in T::Keys::key_ids() { let key = keys.get_raw(*id); @@ -634,21 +671,25 @@ impl Module { Self::clear_key_owner(*id, old); } - Self::put_key_owner(*id, key, &who); + Self::put_key_owner(*id, key, who); } - Self::put_keys(&who, &keys); - - Ok(()) + Self::put_keys(who, &keys); + Ok(old_keys) } - fn prune_dead_keys(who: &T::ValidatorId) { - if let Some(old_keys) = Self::take_keys(who) { - for id in T::Keys::key_ids() { - let key_data = old_keys.get_raw(*id); - Self::clear_key_owner(*id, key_data); - } + fn do_purge_keys(account: &T::AccountId) -> DispatchResult { + let who = T::ValidatorIdOf::convert(account.clone()) + .ok_or(Error::::NoAssociatedValidatorId)?; + + let old_keys = Self::take_keys(&who).ok_or(Error::::NoKeys)?; + for id in T::Keys::key_ids() { + let key_data = old_keys.get_raw(*id); + Self::clear_key_owner(*id, key_data); } + system::Module::::dec_ref(&account); + + Ok(()) } fn load_keys(v: &T::ValidatorId) -> Option { @@ -676,12 +717,6 @@ impl Module { } } -impl OnReapAccount for Module { - fn on_reap_account(who: &T::ValidatorId) { - Self::prune_dead_keys(who); - } -} - /// Wraps the author-scraping logic for consensus engines that can recover /// the canonical index of an author. This then transforms it into the /// registering account-ID of that session key index. @@ -716,7 +751,7 @@ mod tests { let mut t = frame_system::GenesisConfig::default().build_storage::().unwrap(); GenesisConfig:: { keys: NEXT_VALIDATORS.with(|l| - l.borrow().iter().cloned().map(|i| (i, UintAuthorityId(i).into())).collect() + l.borrow().iter().cloned().map(|i| (i, i, UintAuthorityId(i).into())).collect() ), }.assimilate_storage(&mut t).unwrap(); sp_io::TestExternalities::new(t) @@ -754,7 +789,10 @@ mod tests { let id = DUMMY; assert_eq!(Session::key_owner(id, UintAuthorityId(1).get_raw(id)), Some(1)); - Session::on_reap_account(&1); + assert!(!System::allow_death(&1)); + assert_ok!(Session::purge_keys(Origin::signed(1))); + assert!(System::allow_death(&1)); + assert_eq!(Session::load_keys(&1), None); assert_eq!(Session::key_owner(id, UintAuthorityId(1).get_raw(id)), None); }) diff --git a/frame/session/src/mock.rs b/frame/session/src/mock.rs index 0c92267069..df858c8ed5 100644 --- a/frame/session/src/mock.rs +++ b/frame/session/src/mock.rs @@ -178,7 +178,7 @@ impl frame_system::Trait for Test { type ModuleToIndex = (); type AccountData = (); type OnNewAccount = (); - type OnReapAccount = Session; + type OnKilledAccount = (); } impl pallet_timestamp::Trait for Test { diff --git a/frame/society/src/mock.rs b/frame/society/src/mock.rs index 62be1aa9f1..158f139df5 100644 --- a/frame/society/src/mock.rs +++ b/frame/society/src/mock.rs @@ -78,7 +78,7 @@ impl frame_system::Trait for Test { type Version = (); type ModuleToIndex = (); type OnNewAccount = (); - type OnReapAccount = Balances; + type OnKilledAccount = (); type AccountData = pallet_balances::AccountData; } diff --git a/frame/staking/src/lib.rs b/frame/staking/src/lib.rs index 3f84597912..ee708dabd3 100644 --- a/frame/staking/src/lib.rs +++ b/frame/staking/src/lib.rs @@ -259,6 +259,7 @@ use codec::{HasCompact, Encode, Decode}; use frame_support::{ decl_module, decl_event, decl_storage, ensure, decl_error, weights::SimpleDispatchInfo, + dispatch::DispatchResult, traits::{ Currency, LockIdentifier, LockableCurrency, WithdrawReasons, OnUnbalanced, Imbalance, Get, Time @@ -282,7 +283,6 @@ use sp_runtime::{Serialize, Deserialize}; use frame_system::{self as system, ensure_signed, ensure_root}; use sp_phragmen::ExtendedBalance; -use frame_support::traits::OnReapAccount; const DEFAULT_MINIMUM_VALIDATOR_COUNT: u32 = 4; const MAX_NOMINATIONS: usize = 16; @@ -831,6 +831,8 @@ decl_error! { NoMoreChunks, /// Can not rebond without unlocking chunks. NoUnlockChunk, + /// Attempting to target a stash that still has funds. + FundedTarget, } } @@ -900,6 +902,8 @@ decl_module! { >::insert(&stash, &controller); >::insert(&stash, payee); + system::Module::::inc_ref(&stash); + let stash_balance = T::Currency::free_balance(&stash); let value = value.min(stash_balance); let item = StakingLedger { stash, total: value, active: value, unlocking: vec![] }; @@ -1013,10 +1017,10 @@ decl_module! { // portion to fall below existential deposit + will have no more unlocking chunks // left. We can now safely remove this. let stash = ledger.stash; + // remove all staking-related information. + Self::kill_stash(&stash)?; // remove the lock. T::Currency::remove_lock(STAKING_ID, &stash); - // remove all staking-related information. - Self::kill_stash(&stash); } else { // This was the consequence of a partial unbond. just update the ledger and move on. Self::update_ledger(&controller, &ledger); @@ -1187,10 +1191,11 @@ decl_module! { fn force_unstake(origin, stash: T::AccountId) { ensure_root(origin)?; + // remove all staking-related information. + Self::kill_stash(&stash)?; + // remove the lock. T::Currency::remove_lock(STAKING_ID, &stash); - // remove all staking-related information. - Self::kill_stash(&stash); } /// Force there to be a new era at the end of sessions indefinitely. @@ -1254,9 +1259,22 @@ decl_module! { ); let ledger = ledger.rebond(value); - Self::update_ledger(&controller, &ledger); } + + /// Remove all data structure concerning a staker/stash once its balance is zero. + /// This is essentially equivalent to `withdraw_unbonded` except it can be called by anyone + /// and the target `stash` must have no funds left. + /// + /// This can be called from any origin. + /// + /// - `stash`: The stash account to reap. Its balance must be zero. + fn reap_stash(_origin, stash: T::AccountId) { + Self::ensure_storage_upgraded(); + ensure!(T::Currency::total_balance(&stash).is_zero(), Error::::FundedTarget); + Self::kill_stash(&stash)?; + T::Currency::remove_lock(STAKING_ID, &stash); + } } } @@ -1585,18 +1603,22 @@ impl Module { /// /// Assumes storage is upgraded before calling. /// - /// This is called : - /// - Immediately when an account's balance falls below existential deposit. + /// This is called: /// - after a `withdraw_unbond()` call that frees all of a stash's bonded balance. - fn kill_stash(stash: &T::AccountId) { - if let Some(controller) = >::take(stash) { - >::remove(&controller); - } + /// - through `reap_stash()` if the balance has fallen to zero (through slashing). + fn kill_stash(stash: &T::AccountId) -> DispatchResult { + let controller = Bonded::::take(stash).ok_or(Error::::NotStash)?; + >::remove(&controller); + >::remove(stash); >::remove(stash); >::remove(stash); slashing::clear_stash_metadata::(stash); + + system::Module::::dec_ref(stash); + + Ok(()) } /// Add reward points to validators using their stash account ID. @@ -1676,13 +1698,6 @@ impl SessionManager> } } -impl OnReapAccount for Module { - fn on_reap_account(stash: &T::AccountId) { - Self::ensure_storage_upgraded(); - Self::kill_stash(stash); - } -} - /// Add reward points to block authors: /// * 20 points to the block producer for producing a (non-uncle) block in the relay chain, /// * 2 points to the block producer for each reference to a previously unreferenced uncle, and diff --git a/frame/staking/src/mock.rs b/frame/staking/src/mock.rs index c5f3ef2508..22d6628463 100644 --- a/frame/staking/src/mock.rs +++ b/frame/staking/src/mock.rs @@ -140,12 +140,12 @@ impl frame_system::Trait for Test { type ModuleToIndex = (); type AccountData = pallet_balances::AccountData; type OnNewAccount = (); - type OnReapAccount = (Balances, Staking, Session); + type OnKilledAccount = (); } impl pallet_balances::Trait for Test { type Balance = Balance; - type Event = (); type DustRemoval = (); + type Event = (); type ExistentialDeposit = ExistentialDeposit; type AccountStore = System; } @@ -156,13 +156,13 @@ parameter_types! { pub const DisabledValidatorsThreshold: Perbill = Perbill::from_percent(25); } impl pallet_session::Trait for Test { - type SessionManager = pallet_session::historical::NoteHistoricalRoot; - type Keys = UintAuthorityId; - type ShouldEndSession = pallet_session::PeriodicSessions; - type SessionHandler = TestSessionHandler; type Event = (); type ValidatorId = AccountId; type ValidatorIdOf = crate::StashOf; + type ShouldEndSession = pallet_session::PeriodicSessions; + type SessionManager = pallet_session::historical::NoteHistoricalRoot; + type SessionHandler = TestSessionHandler; + type Keys = UintAuthorityId; type DisabledValidatorsThreshold = DisabledValidatorsThreshold; } @@ -300,22 +300,22 @@ impl ExtBuilder { let _ = pallet_balances::GenesisConfig::{ balances: vec![ - (1, 10 * balance_factor), - (2, 20 * balance_factor), - (3, 300 * balance_factor), - (4, 400 * balance_factor), - (10, balance_factor), - (11, balance_factor * 1000), - (20, balance_factor), - (21, balance_factor * 2000), - (30, balance_factor), - (31, balance_factor * 2000), - (40, balance_factor), - (41, balance_factor * 2000), - (100, 2000 * balance_factor), - (101, 2000 * balance_factor), - // This allow us to have a total_payout different from 0. - (999, 1_000_000_000_000), + (1, 10 * balance_factor), + (2, 20 * balance_factor), + (3, 300 * balance_factor), + (4, 400 * balance_factor), + (10, balance_factor), + (11, balance_factor * 1000), + (20, balance_factor), + (21, balance_factor * 2000), + (30, balance_factor), + (31, balance_factor * 2000), + (40, balance_factor), + (41, balance_factor * 2000), + (100, 2000 * balance_factor), + (101, 2000 * balance_factor), + // This allow us to have a total_payout different from 0. + (999, 1_000_000_000_000), ], }.assimilate_storage(&mut storage); @@ -346,7 +346,7 @@ impl ExtBuilder { }.assimilate_storage(&mut storage); let _ = pallet_session::GenesisConfig:: { - keys: validators.iter().map(|x| (*x, UintAuthorityId(*x))).collect(), + keys: validators.iter().map(|x| (*x, *x, UintAuthorityId(*x))).collect(), }.assimilate_storage(&mut storage); let mut ext = sp_io::TestExternalities::from(storage); diff --git a/frame/staking/src/tests.rs b/frame/staking/src/tests.rs index 73215d6117..d950c171ad 100644 --- a/frame/staking/src/tests.rs +++ b/frame/staking/src/tests.rs @@ -1456,6 +1456,9 @@ fn on_free_balance_zero_stash_removes_validator() { // Check total balance of stash assert_eq!(Balances::total_balance(&11), 0); + // Reap the stash + assert_ok!(Staking::reap_stash(Origin::NONE, 11)); + // Check storage items do not exist assert!(!>::contains_key(&10)); assert!(!>::contains_key(&11)); @@ -1509,6 +1512,9 @@ fn on_free_balance_zero_stash_removes_nominator() { // Check total balance of stash assert_eq!(Balances::total_balance(&11), 0); + // Reap the stash + assert_ok!(Staking::reap_stash(Origin::NONE, 11)); + // Check storage items do not exist assert!(!>::contains_key(&10)); assert!(!>::contains_key(&11)); @@ -2303,6 +2309,10 @@ fn garbage_collection_after_slashing() { // so we don't test those here. assert_eq!(Balances::free_balance(11), 0); + assert_eq!(Balances::total_balance(&11), 0); + + assert_ok!(Staking::reap_stash(Origin::NONE, 11)); + assert!(::SlashingSpans::get(&11).is_none()); assert_eq!(::SpanSlash::get(&(11, 0)).amount_slashed(), &0); }) diff --git a/frame/support/src/storage/migration.rs b/frame/support/src/storage/migration.rs index e8d58b46d4..291dceb4ea 100644 --- a/frame/support/src/storage/migration.rs +++ b/frame/support/src/storage/migration.rs @@ -70,6 +70,11 @@ impl Iterator for StorageIterator { } } +/// Get a particular value in storage by the `module`, the map's `item` name and the key `hash`. +pub fn have_storage_value(module: &[u8], item: &[u8], hash: &[u8]) -> bool { + get_storage_value::<()>(module, item, hash).is_some() +} + /// Get a particular value in storage by the `module`, the map's `item` name and the key `hash`. pub fn get_storage_value(module: &[u8], item: &[u8], hash: &[u8]) -> Option { let mut key = vec![0u8; 32 + hash.len()]; diff --git a/frame/support/src/traits.rs b/frame/support/src/traits.rs index 4730e1955e..bd6895bda5 100644 --- a/frame/support/src/traits.rs +++ b/frame/support/src/traits.rs @@ -195,9 +195,9 @@ pub trait OnNewAccount { /// The account with the given id was reaped. #[impl_trait_for_tuples::impl_for_tuples(30)] -pub trait OnReapAccount { +pub trait OnKilledAccount { /// The account with the given id was reaped. - fn on_reap_account(who: &AccountId); + fn on_killed_account(who: &AccountId); } /// A trait for finding the author of a block header based on the `PreRuntime` digests contained diff --git a/frame/system/benches/bench.rs b/frame/system/benches/bench.rs index 1e24cb2c05..cfcaa6f64a 100644 --- a/frame/system/benches/bench.rs +++ b/frame/system/benches/bench.rs @@ -78,7 +78,7 @@ impl system::Trait for Runtime { type ModuleToIndex = (); type AccountData = (); type OnNewAccount = (); - type OnReapAccount = (); + type OnKilledAccount = (); } impl module::Trait for Runtime { diff --git a/frame/system/src/lib.rs b/frame/system/src/lib.rs index ec35fe3b60..f89c9efbd2 100644 --- a/frame/system/src/lib.rs +++ b/frame/system/src/lib.rs @@ -93,6 +93,7 @@ use serde::Serialize; use sp_std::prelude::*; #[cfg(any(feature = "std", test))] use sp_std::map; +use sp_std::convert::Infallible; use sp_std::marker::PhantomData; use sp_std::fmt::Debug; use sp_version::RuntimeVersion; @@ -112,9 +113,9 @@ use sp_runtime::{ use sp_core::{ChangesTrieConfiguration, storage::well_known_keys}; use frame_support::{ - decl_module, decl_event, decl_storage, decl_error, storage, Parameter, + decl_module, decl_event, decl_storage, decl_error, storage, Parameter, ensure, debug, traits::{ - Contains, Get, ModuleToIndex, OnNewAccount, OnReapAccount, IsDeadAccount, Happened, + Contains, Get, ModuleToIndex, OnNewAccount, OnKilledAccount, IsDeadAccount, Happened, StoredMap }, weights::{Weight, DispatchInfo, DispatchClass, SimpleDispatchInfo, FunctionOf}, @@ -219,7 +220,7 @@ pub trait Trait: 'static + Eq + Clone { /// A function that is invoked when an account has been determined to be dead. /// /// All resources should be cleaned up associated with the given account. - type OnReapAccount: OnReapAccount; + type OnKilledAccount: OnKilledAccount; } pub type DigestOf = generic::Digest<::Hash>; @@ -290,13 +291,29 @@ fn hash69 + Default>() -> T { /// which can't contain more than `u32::max_value()` items. type EventIndex = u32; +/// Type used to encode the number of references an account has. +pub type RefCount = u8; + +/// Information of an account. +#[derive(Clone, Eq, PartialEq, Default, RuntimeDebug, Encode, Decode)] +pub struct AccountInfo { + /// The number of transactions this account has sent. + pub nonce: Index, + /// The number of other modules that currently depend on this account's existence. The account + /// cannot be reaped until this is zero. + pub refcount: RefCount, + /// The additional data that belongs to this account. Used to store the balance(s) in a lot of + /// chains. + pub data: AccountData, +} + decl_storage! { trait Store for Module as System { /// The full account information for a particular account ID. // TODO: should be hasher(twox64_concat) - will need staged migration - // TODO: should not including T::Index (the nonce) // https://github.com/paritytech/substrate/issues/4917 - pub Account get(fn account): map hasher(blake2_256) T::AccountId => (T::Index, T::AccountData); + pub Account get(fn account): + map hasher(blake2_256) T::AccountId => AccountInfo; /// Total extrinsics count for the current block. ExtrinsicCount: Option; @@ -384,7 +401,7 @@ decl_event!( /// A new account was created. NewAccount(AccountId), /// An account was reaped. - ReapedAccount(AccountId), + KilledAccount(AccountId), } ); @@ -407,6 +424,11 @@ decl_error! { /// /// Either calling `Core_version` or decoding `RuntimeVersion` failed. FailedToExtractRuntimeVersion, + + /// Suicide called when the account has non-default composite data. + NonDefaultComposite, + /// There is a non-zero reference count preventing the account from being purged. + NonZeroRefCount } } @@ -517,6 +539,17 @@ decl_module! { ensure_root(origin)?; storage::unhashed::kill_prefix(&prefix); } + + /// Kill the sending account, assuming there are no references outstanding and the composite + /// data is equal to its default value. + #[weight = SimpleDispatchInfo::FixedOperational(25_000)] + fn suicide(origin) { + let who = ensure_signed(origin)?; + let account = Account::::get(&who); + ensure!(account.refcount == 0, Error::::NonZeroRefCount); + ensure!(account.data == T::AccountData::default(), Error::::NonDefaultComposite); + Account::::remove(who); + } } } @@ -637,13 +670,40 @@ impl Default for InitKind { } } +/// Reference status; can be either referenced or unreferenced. +pub enum RefStatus { + Referenced, + Unreferenced, +} + impl Module { /// Deposits an event into this block's event record. pub fn deposit_event(event: impl Into) { Self::deposit_event_indexed(&[], event.into()); } - /// Deposits an event into this block's event record adding this event + /// Increment the reference counter on an account. + pub fn inc_ref(who: &T::AccountId) { + Account::::mutate(who, |a| a.refcount = a.refcount.saturating_add(1)); + } + + /// Decrement the reference counter on an account. This *MUST* only be done once for every time + /// you called `inc_ref` on `who`. + pub fn dec_ref(who: &T::AccountId) { + Account::::mutate(who, |a| a.refcount = a.refcount.saturating_sub(1)); + } + + /// The number of outstanding references for the account `who`. + pub fn refs(who: &T::AccountId) -> RefCount { + Account::::get(who).refcount + } + + /// True if the account has no outstanding references. + pub fn allow_death(who: &T::AccountId) -> bool { + Account::::get(who).refcount == 0 + } + + /// Deposits an event into this block's event record adding this event /// to the corresponding topic indexes. /// /// This will update storage entries that correspond to the specified topics. @@ -855,12 +915,12 @@ impl Module { /// Retrieve the account transaction counter from storage. pub fn account_nonce(who: impl EncodeLike) -> T::Index { - Account::::get(who).0 + Account::::get(who).nonce } /// Increment a particular account's nonce by 1. pub fn inc_account_nonce(who: impl EncodeLike) { - Account::::mutate(who, |a| a.0 += T::Index::one()); + Account::::mutate(who, |a| a.nonce += T::Index::one()); } /// Note what the extrinsic data of the current extrinsic index is. If this @@ -912,18 +972,28 @@ impl Module { Self::deposit_event(RawEvent::NewAccount(who)); } - /// Kill the account and reap any related information. - pub fn kill_account(who: T::AccountId) { - if Account::::contains_key(&who) { - Account::::remove(&who); - Self::on_killed_account(who); - } - } - /// Do anything that needs to be done after an account has been killed. fn on_killed_account(who: T::AccountId) { - T::OnReapAccount::on_reap_account(&who); - Self::deposit_event(RawEvent::ReapedAccount(who)); + T::OnKilledAccount::on_killed_account(&who); + Self::deposit_event(RawEvent::KilledAccount(who)); + } + + /// Remove an account from storage. This should only be done when its refs are zero or you'll + /// get storage leaks in other modules. Nonetheless we assume that the calling logic knows best. + /// + /// This is a no-op if the account doesn't already exist. If it does then it will ensure + /// cleanups (those in `on_killed_account`) take place. + fn kill_account(who: &T::AccountId) { + if Account::::contains_key(who) { + let account = Account::::take(who); + if account.refcount > 0 { + debug::debug!( + target: "system", + "WARNING: Referenced account deleted. This is probably a bug." + ); + } + Module::::on_killed_account(who.clone()); + } } } @@ -939,7 +1009,7 @@ impl Happened for CallOnCreatedAccount { pub struct CallKillAccount(PhantomData); impl Happened for CallKillAccount { fn happened(who: &T::AccountId) { - Module::::kill_account(who.clone()); + Module::::kill_account(who) } } @@ -948,53 +1018,45 @@ impl Happened for CallKillAccount { // Anything more complex will need more sophisticated logic. impl StoredMap for Module { fn get(k: &T::AccountId) -> T::AccountData { - Account::::get(k).1 + Account::::get(k).data } fn is_explicit(k: &T::AccountId) -> bool { Account::::contains_key(k) } - fn insert(k: &T::AccountId, t: T::AccountData) { + fn insert(k: &T::AccountId, data: T::AccountData) { let existed = Account::::contains_key(k); - Account::::insert(k, (T::Index::default(), t)); + Account::::mutate(k, |a| a.data = data); if !existed { Self::on_created_account(k.clone()); } } fn remove(k: &T::AccountId) { - if Account::::contains_key(&k) { - Self::kill_account(k.clone()); - } + Self::kill_account(k) } fn mutate(k: &T::AccountId, f: impl FnOnce(&mut T::AccountData) -> R) -> R { let existed = Account::::contains_key(k); - let r = Account::::mutate(k, |a| f(&mut a.1)); + let r = Account::::mutate(k, |a| f(&mut a.data)); if !existed { Self::on_created_account(k.clone()); } r } fn mutate_exists(k: &T::AccountId, f: impl FnOnce(&mut Option) -> R) -> R { - let (existed, exists, r) = Account::::mutate_exists(k, |maybe_value| { - let existed = maybe_value.is_some(); - let (maybe_nonce, mut maybe_extra) = split_inner(maybe_value.take(), |v| v); - let r = f(&mut maybe_extra); - *maybe_value = maybe_extra.map(|extra| (maybe_nonce.unwrap_or_default(), extra)); - (existed, maybe_value.is_some(), r) - }); - if !existed && exists { - Self::on_created_account(k.clone()); - } else if existed && !exists { - Self::on_killed_account(k.clone()); - } - r + Self::try_mutate_exists(k, |x| -> Result { Ok(f(x)) }).expect("Infallible; qed") } fn try_mutate_exists(k: &T::AccountId, f: impl FnOnce(&mut Option) -> Result) -> Result { Account::::try_mutate_exists(k, |maybe_value| { let existed = maybe_value.is_some(); - let (maybe_nonce, mut maybe_extra) = split_inner(maybe_value.take(), |v| v); - f(&mut maybe_extra).map(|v| { - *maybe_value = maybe_extra.map(|extra| (maybe_nonce.unwrap_or_default(), extra)); - (existed, maybe_value.is_some(), v) + let (maybe_prefix, mut maybe_data) = split_inner( + maybe_value.take(), + |account| ((account.nonce, account.refcount), account.data) + ); + f(&mut maybe_data).map(|result| { + *maybe_value = maybe_data.map(|data| { + let (nonce, refcount) = maybe_prefix.unwrap_or_default(); + AccountInfo { nonce, refcount, data } + }); + (existed, maybe_value.is_some(), result) }) }).map(|(existed, exists, v)| { if !existed && exists { @@ -1213,17 +1275,18 @@ impl SignedExtension for CheckNonce { _info: Self::DispatchInfo, _len: usize, ) -> Result<(), TransactionValidityError> { - let (expected, extra) = Account::::get(who); - if self.0 != expected { + let mut account = Account::::get(who); + if self.0 != account.nonce { return Err( - if self.0 < expected { + if self.0 < account.nonce { InvalidTransaction::Stale } else { InvalidTransaction::Future }.into() ) } - Account::::insert(who, (expected + T::Index::one(), extra)); + account.nonce += T::Index::one(); + Account::::insert(who, account); Ok(()) } @@ -1235,13 +1298,13 @@ impl SignedExtension for CheckNonce { _len: usize, ) -> TransactionValidity { // check index - let (expected, _extra) = Account::::get(who); - if self.0 < expected { + let account = Account::::get(who); + if self.0 < account.nonce { return InvalidTransaction::Stale.into() } let provides = vec![Encode::encode(&(who, self.0))]; - let requires = if expected < self.0 { + let requires = if account.nonce < self.0 { vec![Encode::encode(&(who, self.0 - One::one()))] } else { vec![] @@ -1411,6 +1474,7 @@ impl Lookup for ChainContext { #[cfg(test)] mod tests { use super::*; + use sp_std::cell::RefCell; use sp_core::H256; use sp_runtime::{traits::{BlakeTwo256, IdentityLookup}, testing::Header, DispatchError}; use frame_support::{impl_outer_origin, parameter_types}; @@ -1437,6 +1501,15 @@ mod tests { }; } + thread_local!{ + pub static KILLED: RefCell> = RefCell::new(vec![]); + } + + pub struct RecordKilled; + impl OnKilledAccount for RecordKilled { + fn on_killed_account(who: &u64) { KILLED.with(|r| r.borrow_mut().push(*who)) } + } + impl Trait for Test { type Origin = Origin; type Call = (); @@ -1454,9 +1527,9 @@ mod tests { type MaximumBlockLength = MaximumBlockLength; type Version = Version; type ModuleToIndex = (); - type AccountData = (); + type AccountData = u32; type OnNewAccount = (); - type OnReapAccount = (); + type OnKilledAccount = RecordKilled; } impl From> for u16 { @@ -1493,6 +1566,27 @@ mod tests { assert_eq!(x, Ok(RawOrigin::::Signed(1u64))); } + #[test] + fn stored_map_works() { + new_test_ext().execute_with(|| { + System::insert(&0, 42); + assert!(System::allow_death(&0)); + + System::inc_ref(&0); + assert!(!System::allow_death(&0)); + + System::insert(&0, 69); + assert!(!System::allow_death(&0)); + + System::dec_ref(&0); + assert!(System::allow_death(&0)); + + assert!(KILLED.with(|r| r.borrow().is_empty())); + System::kill_account(&0); + assert_eq!(KILLED.with(|r| r.borrow().clone()), vec![0u64]); + }); + } + #[test] fn deposit_event_should_work() { new_test_ext().execute_with(|| { @@ -1645,7 +1739,7 @@ mod tests { #[test] fn signed_ext_check_nonce_works() { new_test_ext().execute_with(|| { - Account::::insert(1, (1, ())); + Account::::insert(1, AccountInfo { nonce: 1, refcount: 0, data: 0 }); let info = DispatchInfo::default(); let len = 0_usize; // stale diff --git a/frame/system/src/offchain.rs b/frame/system/src/offchain.rs index 507092f626..5abafe7655 100644 --- a/frame/system/src/offchain.rs +++ b/frame/system/src/offchain.rs @@ -128,19 +128,20 @@ pub trait SignAndSubmitTransaction { fn sign_and_submit(call: impl Into, public: PublicOf) -> Result<(), ()> { let call = call.into(); let id = public.clone().into_account(); - let (expected_nonce, extra) = super::Account::::get(&id); + let mut account = super::Account::::get(&id); debug::native::debug!( target: "offchain", "Creating signed transaction from account: {:?} (nonce: {:?})", id, - expected_nonce, + account.nonce, ); let (call, signature_data) = Self::CreateTransaction - ::create_transaction::(call, public, id.clone(), expected_nonce) + ::create_transaction::(call, public, id.clone(), account.nonce) .ok_or(())?; // increment the nonce. This is fine, since the code should always // be running in off-chain context, so we NEVER persists data. - super::Account::::insert(&id, (expected_nonce + One::one(), extra)); + account.nonce += One::one(); + super::Account::::insert(&id, account); let xt = Self::Extrinsic::new(call, Some(signature_data)).ok_or(())?; sp_io::offchain::submit_transaction(xt.encode()) diff --git a/frame/timestamp/src/lib.rs b/frame/timestamp/src/lib.rs index de36b65851..1c3fec2112 100644 --- a/frame/timestamp/src/lib.rs +++ b/frame/timestamp/src/lib.rs @@ -278,7 +278,7 @@ mod tests { type ModuleToIndex = (); type AccountData = (); type OnNewAccount = (); - type OnReapAccount = (); + type OnKilledAccount = (); } parameter_types! { pub const MinimumPeriod: u64 = 5; diff --git a/frame/transaction-payment/src/lib.rs b/frame/transaction-payment/src/lib.rs index 0d9cfc0b77..67b3fa63ac 100644 --- a/frame/transaction-payment/src/lib.rs +++ b/frame/transaction-payment/src/lib.rs @@ -304,7 +304,7 @@ mod tests { type ModuleToIndex = (); type AccountData = pallet_balances::AccountData; type OnNewAccount = (); - type OnReapAccount = Balances; + type OnKilledAccount = (); } parameter_types! { diff --git a/frame/treasury/src/lib.rs b/frame/treasury/src/lib.rs index 192dd1aff6..bbf31cc599 100644 --- a/frame/treasury/src/lib.rs +++ b/frame/treasury/src/lib.rs @@ -760,7 +760,7 @@ mod tests { type ModuleToIndex = (); type AccountData = pallet_balances::AccountData; type OnNewAccount = (); - type OnReapAccount = Balances; + type OnKilledAccount = (); } parameter_types! { pub const ExistentialDeposit: u64 = 1; diff --git a/frame/utility/src/lib.rs b/frame/utility/src/lib.rs index da099fcb4a..76f3ca6bf6 100644 --- a/frame/utility/src/lib.rs +++ b/frame/utility/src/lib.rs @@ -258,7 +258,7 @@ decl_module! { /// - The weight of the `call` + 10,000. /// # #[weight = FunctionOf( - |args: (&u16, &Box<::Call>)| args.1.get_dispatch_info().weight + 10_000, + |args: (&u16, &Box<::Call>)| args.1.get_dispatch_info().weight + 10_000, |args: (&u16, &Box<::Call>)| args.1.get_dispatch_info().class, true )] @@ -410,7 +410,7 @@ decl_module! { #[weight = FunctionOf( |args: (&u16, &Vec, &Option>, &[u8; 32])| { 10_000 * (args.1.len() as u32 + 1) - }, + }, DispatchClass::Normal, true )] @@ -485,7 +485,7 @@ decl_module! { #[weight = FunctionOf( |args: (&u16, &Vec, &Timepoint, &[u8; 32])| { 10_000 * (args.1.len() as u32 + 1) - }, + }, DispatchClass::Normal, true )] @@ -624,7 +624,7 @@ mod tests { type ModuleToIndex = (); type AccountData = pallet_balances::AccountData; type OnNewAccount = (); - type OnReapAccount = Balances; + type OnKilledAccount = (); } parameter_types! { pub const ExistentialDeposit: u64 = 1; diff --git a/frame/vesting/src/lib.rs b/frame/vesting/src/lib.rs index dd51259842..fdc480ddd0 100644 --- a/frame/vesting/src/lib.rs +++ b/frame/vesting/src/lib.rs @@ -339,7 +339,7 @@ mod tests { type ModuleToIndex = (); type AccountData = pallet_balances::AccountData; type OnNewAccount = (); - type OnReapAccount = Balances; + type OnKilledAccount = (); } impl pallet_balances::Trait for Test { type Balance = u64; diff --git a/test-utils/runtime/src/lib.rs b/test-utils/runtime/src/lib.rs index 138e79cdd5..55e153103d 100644 --- a/test-utils/runtime/src/lib.rs +++ b/test-utils/runtime/src/lib.rs @@ -374,7 +374,7 @@ impl frame_system::Trait for Runtime { type ModuleToIndex = (); type AccountData = (); type OnNewAccount = (); - type OnReapAccount = (); + type OnKilledAccount = (); } impl pallet_timestamp::Trait for Runtime { -- GitLab From 41bb2193a267805e2093a081bc3e2aaccc64283a Mon Sep 17 00:00:00 2001 From: Shawn Tabrizi Date: Mon, 24 Feb 2020 18:07:38 +0100 Subject: [PATCH 034/301] Add storage root recalculation time to benchmarks (#5035) --- frame/benchmarking/src/lib.rs | 17 ++++++++++++----- frame/benchmarking/src/utils.rs | 2 +- utils/frame/benchmarking-cli/src/lib.rs | 5 +++-- 3 files changed, 16 insertions(+), 8 deletions(-) diff --git a/frame/benchmarking/src/lib.rs b/frame/benchmarking/src/lib.rs index a78d59ef33..3ad4a9a8a0 100644 --- a/frame/benchmarking/src/lib.rs +++ b/frame/benchmarking/src/lib.rs @@ -20,6 +20,8 @@ mod utils; pub use utils::*; +#[doc(hidden)] +pub use sp_io::storage::root as storage_root; /// Construct pallet benchmarks for weighing dispatchables. /// @@ -177,12 +179,17 @@ macro_rules! impl_benchmark { // Commit the externalities to the database, flushing the DB cache. // This will enable worst case scenario for reading from the database. $crate::benchmarking::commit_db(); - // Run the benchmark. - let start = $crate::benchmarking::current_time(); + // Time the extrinsic logic. + let start_extrinsic = $crate::benchmarking::current_time(); call.dispatch(caller.into())?; - let finish = $crate::benchmarking::current_time(); - let elapsed = finish - start; - results.push((c.clone(), elapsed)); + let finish_extrinsic = $crate::benchmarking::current_time(); + let elapsed_extrinsic = finish_extrinsic - start_extrinsic; + // Time the storage root recalculation. + let start_storage_root = $crate::benchmarking::current_time(); + $crate::storage_root(); + let finish_storage_root = $crate::benchmarking::current_time(); + let elapsed_storage_root = finish_storage_root - start_storage_root; + results.push((c.clone(), elapsed_extrinsic, elapsed_storage_root)); // Wipe the DB back to the genesis state. $crate::benchmarking::wipe_db(); } diff --git a/frame/benchmarking/src/utils.rs b/frame/benchmarking/src/utils.rs index 81e87a45f8..5a67ea6943 100644 --- a/frame/benchmarking/src/utils.rs +++ b/frame/benchmarking/src/utils.rs @@ -31,7 +31,7 @@ pub enum BenchmarkParameter { /// Results from running benchmarks on a FRAME pallet. /// Contains duration of the function call in nanoseconds along with the benchmark parameters /// used for that benchmark result. -pub type BenchmarkResults = (Vec<(BenchmarkParameter, u32)>, u128); +pub type BenchmarkResults = (Vec<(BenchmarkParameter, u32)>, u128, u128); sp_api::decl_runtime_apis! { /// Runtime api for benchmarking a FRAME runtime. diff --git a/utils/frame/benchmarking-cli/src/lib.rs b/utils/frame/benchmarking-cli/src/lib.rs index b515e49013..816ce52131 100644 --- a/utils/frame/benchmarking-cli/src/lib.rs +++ b/utils/frame/benchmarking-cli/src/lib.rs @@ -124,12 +124,13 @@ impl BenchmarkCmd { // Print the table header results[0].0.iter().for_each(|param| print!("{:?},", param.0)); - print!("time\n"); + print!("extrinsic_time,storage_root_time\n"); // Print the values results.iter().for_each(|result| { let parameters = &result.0; parameters.iter().for_each(|param| print!("{:?},", param.1)); - print!("{:?}\n", result.1); + // Print extrinsic time and storage root time + print!("{:?},{:?}\n", result.1, result.2); }); eprintln!("Done."); -- GitLab From 993e5f694a1dfc06f64adb17ba2b624c8a1fbb12 Mon Sep 17 00:00:00 2001 From: Benjamin Kampmann Date: Tue, 25 Feb 2020 15:48:29 +0100 Subject: [PATCH 035/301] adding unleash to ci (#5020) * adding unleash to ci * fixing formatting * with a dot please * alpha.3 now * do not publish testing helpers * remove old test-helpers cruft * fix cargo.lock * with alpha 4 * do not publish runtime-interface-test either * disable more test crates from publishing * switch to alpha.5 * replace tempdir with tempfile * update lru * switch to bytes 0.5 * release script fixes * switch on and to latest alpha * BUT THE SPACES --- .gitlab-ci.yml | 21 ++ Cargo.lock | 292 +++++++----------- bin/node/testing/Cargo.toml | 3 +- bin/node/testing/src/bench.rs | 6 +- client/authority-discovery/Cargo.toml | 2 +- client/network-gossip/Cargo.toml | 2 +- client/network/Cargo.toml | 5 +- .../runtime-interface/test-wasm/Cargo.toml | 1 + primitives/test-primitives/Cargo.toml | 1 + test-utils/client/Cargo.toml | 1 + test-utils/runtime/Cargo.toml | 1 + test-utils/runtime/client/Cargo.toml | 1 + .../runtime/transaction-pool/Cargo.toml | 1 + 13 files changed, 147 insertions(+), 190 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 36e1da8d10..1fa4a6dadb 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -37,6 +37,9 @@ variables: CI_SERVER_NAME: "GitLab CI" DOCKER_OS: "debian:stretch" ARCH: "x86_64" + # FIXME set to release + CARGO_UNLEASH_INSTALL_PARAMS: "--version 1.0.0-alpha.6" + CARGO_UNLEASH_PKG_DEF: "--skip node node-* subkey chain-spec-builder" .collect-artifacts: &collect-artifacts @@ -174,6 +177,9 @@ test-dependency-rules: - $DEPLOY_TAG script: - .maintain/ensure-deps.sh + # FIXME set to release + - cargo install cargo-unleash ${CARGO_UNLEASH_INSTALL_PARAMS} + - cargo unleash check ${CARGO_UNLEASH_PKG_DEF} test-frame-staking: stage: test @@ -550,6 +556,21 @@ publish-draft-release: interruptible: true allow_failure: true +publish-to-crates-io: + stage: publish + <<: *docker-env + dependencies: + - build-linux-substrate + - test-dependency-rules + only: + - tags + - /^v[0-9]+\.[0-9]+\.[0-9]+.*$/ + script: + - cargo install cargo-unleash ${CARGO_UNLEASH_INSTALL_PARAMS} + - cargo unleash em-dragons --no-check ${CARGO_UNLEASH_PKG_DEF} + interruptible: true + allow_failure: true + .deploy-template: &deploy stage: kubernetes when: manual diff --git a/Cargo.lock b/Cargo.lock index 48b14599b1..38021aeeb3 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -146,7 +146,7 @@ version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0d0864d84b8e07b145449be9a8537db86bf9de5ce03b913214694643b4743502" dependencies = [ - "quote 1.0.2", + "quote", "syn", ] @@ -305,25 +305,26 @@ dependencies = [ [[package]] name = "bindgen" -version = "0.49.4" +version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c07087f3d5731bf3fb375a81841b99597e25dc11bd3bc72d16d43adf6624a6e" +checksum = "99de13bb6361e01e493b3db7928085dcc474b7ba4f5481818e53a89d76b8393f" dependencies = [ "bitflags", "cexpr", "cfg-if", "clang-sys", "clap", - "env_logger 0.6.2", - "fxhash", + "env_logger 0.7.1", "lazy_static", + "lazycell", "log 0.4.8", "peeking_take_while", - "proc-macro2 0.4.30", - "quote 0.6.13", + "proc-macro2", + "quote", "regex", + "rustc-hash", "shlex", - "which 2.0.1", + "which", ] [[package]] @@ -1015,7 +1016,7 @@ version = "0.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cd8ce37ad4184ab2ce004c33bf6379185d3b1c95801cab51026bd271bf68eedc" dependencies = [ - "quote 1.0.2", + "quote", "syn", ] @@ -1077,8 +1078,8 @@ version = "0.99.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a806e96c59a76a5ba6e18735b6cf833344671e61e7863f2edb5c518ea2cac95c" dependencies = [ - "proc-macro2 1.0.8", - "quote 1.0.2", + "proc-macro2", + "quote", "syn", ] @@ -1168,8 +1169,8 @@ version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ecf634c5213044b8d54a46dd282cf5dd1f86bb5cb53e92c409cb4680a7fb9894" dependencies = [ - "proc-macro2 1.0.8", - "quote 1.0.2", + "proc-macro2", + "quote", "syn", ] @@ -1334,8 +1335,8 @@ version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0bc225b78e0391e4b8683440bf2e63c2deeeb2ce5189eab46e2b68c6d3725d08" dependencies = [ - "proc-macro2 1.0.8", - "quote 1.0.2", + "proc-macro2", + "quote", "syn", "synstructure", ] @@ -1530,8 +1531,8 @@ name = "frame-support-procedural" version = "2.0.0-dev" dependencies = [ "frame-support-procedural-tools", - "proc-macro2 1.0.8", - "quote 1.0.2", + "proc-macro2", + "quote", "syn", ] @@ -1541,8 +1542,8 @@ version = "2.0.0-dev" dependencies = [ "frame-support-procedural-tools-derive", "proc-macro-crate", - "proc-macro2 1.0.8", - "quote 1.0.2", + "proc-macro2", + "quote", "syn", ] @@ -1550,8 +1551,8 @@ dependencies = [ name = "frame-support-procedural-tools-derive" version = "2.0.0-dev" dependencies = [ - "proc-macro2 1.0.8", - "quote 1.0.2", + "proc-macro2", + "quote", "syn", ] @@ -1750,8 +1751,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9a5081aa3de1f7542a794a397cde100ed903b0630152d0973479018fd85423a7" dependencies = [ "proc-macro-hack", - "proc-macro2 1.0.8", - "quote 1.0.2", + "proc-macro2", + "quote", "syn", ] @@ -1828,15 +1829,6 @@ dependencies = [ "pin-project", ] -[[package]] -name = "fxhash" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c31b6d751ae2c7f11320402d34e41349dd1016f8d5d45e48c4312bc8625af50c" -dependencies = [ - "byteorder 1.3.4", -] - [[package]] name = "gcc" version = "0.3.55" @@ -2010,12 +2002,6 @@ dependencies = [ "crunchy", ] -[[package]] -name = "hashbrown" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1de41fb8dba9714efd92241565cdff73f78508c95697dd56787d3cba27e2353" - [[package]] name = "hashbrown" version = "0.6.3" @@ -2316,8 +2302,8 @@ version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7ef5550a42e3740a0e71f909d4c861056a284060af885ae7aa6242820f920d9d" dependencies = [ - "proc-macro2 1.0.8", - "quote 1.0.2", + "proc-macro2", + "quote", "syn", ] @@ -2439,8 +2425,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8609af8f63b626e8e211f52441fcdb6ec54f1a446606b10d5c89ae9bf8a20058" dependencies = [ "proc-macro-crate", - "proc-macro2 1.0.8", - "quote 1.0.2", + "proc-macro2", + "quote", "syn", ] @@ -2621,9 +2607,9 @@ checksum = "3576a87f2ba00f6f106fdfcd16db1d698d648a26ad8e0573cad8537c3c362d2a" [[package]] name = "libc" -version = "0.2.66" +version = "0.2.67" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d515b1f41455adea1313a4a2ac8a8a477634fbae63cc6100e3aebb207ce61558" +checksum = "eb147597cdf94ed43ab7a9038716637d2d1bf2bc571da995d0028dec06bd3018" [[package]] name = "libloading" @@ -2712,7 +2698,7 @@ version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "96d472e9d522f588805c77801de10b957be84e10f019ca5f869fa1825b15ea9b" dependencies = [ - "quote 1.0.2", + "quote", "syn", ] @@ -2770,7 +2756,7 @@ dependencies = [ "libp2p-core", "libp2p-swarm", "log 0.4.8", - "lru 0.4.3", + "lru", "prost", "prost-build", "rand 0.7.3", @@ -3050,9 +3036,9 @@ dependencies = [ [[package]] name = "librocksdb-sys" -version = "6.2.4" +version = "6.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0a0785e816e1e11e7599388a492c61ef80ddc2afc91e313e61662cce537809be" +checksum = "4e3b727e2dd20ec2fb7ed93f23d9fd5328a0871185485ebdaff007b47d3e27e4" dependencies = [ "bindgen", "cc", @@ -3130,22 +3116,13 @@ dependencies = [ "cfg-if", ] -[[package]] -name = "lru" -version = "0.1.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d8f669d42c72d18514dfca8115689c5f6370a17d980cb5bd777a67f404594c8" -dependencies = [ - "hashbrown 0.5.0", -] - [[package]] name = "lru" version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0609345ddee5badacf857d4f547e0e5a2e987db77085c24cd887f73573a04237" dependencies = [ - "hashbrown 0.6.3", + "hashbrown", ] [[package]] @@ -3171,9 +3148,9 @@ checksum = "60302e4db3a61da70c0cb7991976248362f30319e88850c487b9b95bbf059e00" [[package]] name = "memchr" -version = "2.3.2" +version = "2.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53445de381a1f436797497c61d851644d0e8e88e6140f22872ad33a704933978" +checksum = "3728d817d99e5ac407411fa471ff9800a778d88a24685968b36824eaf4bee400" [[package]] name = "memoffset" @@ -3192,7 +3169,7 @@ checksum = "198831fe8722331a395bc199a5d08efbc197497ef354cb4c77b969c02ffc0fc4" dependencies = [ "ahash", "hash-db", - "hashbrown 0.6.3", + "hashbrown", "parity-util-mem", ] @@ -3693,7 +3670,7 @@ dependencies = [ "sp-runtime", "sp-timestamp", "substrate-test-client", - "tempdir", + "tempfile", "wabt", ] @@ -4417,8 +4394,8 @@ name = "pallet-staking-reward-curve" version = "2.0.0-dev" dependencies = [ "proc-macro-crate", - "proc-macro2 1.0.8", - "quote 1.0.2", + "proc-macro2", + "quote", "sp-runtime", "syn", ] @@ -4653,8 +4630,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "34e513ff3e406f3ede6796dcdc83d0b32ffb86668cea1ccf7363118abeb00476" dependencies = [ "proc-macro-crate", - "proc-macro2 1.0.8", - "quote 1.0.2", + "proc-macro2", + "quote", "syn", ] @@ -4685,7 +4662,7 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f557c32c6d268a07c921471619c0295f5efad3a0e76d4f97a05c091a51d110b2" dependencies = [ - "proc-macro2 1.0.8", + "proc-macro2", "syn", "synstructure", ] @@ -4772,8 +4749,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4214c9e912ef61bf42b81ba9a47e8aad1b2ffaf739ab162bf96d1e011f54e6c5" dependencies = [ "proc-macro-hack", - "proc-macro2 1.0.8", - "quote 1.0.2", + "proc-macro2", + "quote", "syn", ] @@ -4836,8 +4813,8 @@ version = "0.4.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "385322a45f2ecf3410c68d2a549a4a2685e8051d0f278e39743ff4e451cb9b3f" dependencies = [ - "proc-macro2 1.0.8", - "quote 1.0.2", + "proc-macro2", + "quote", "syn", ] @@ -4950,8 +4927,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "052b3c9af39c7e5e94245f820530487d19eb285faedcb40e0c3275132293f242" dependencies = [ "proc-macro-error-attr", - "proc-macro2 1.0.8", - "quote 1.0.2", + "proc-macro2", + "quote", "rustversion", "syn", ] @@ -4962,8 +4939,8 @@ version = "0.4.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d175bef481c7902e63e3165627123fff3502f06ac043d3ef42d08c1246da9253" dependencies = [ - "proc-macro2 1.0.8", - "quote 1.0.2", + "proc-macro2", + "quote", "rustversion", "syn", "syn-mid", @@ -4975,8 +4952,8 @@ version = "0.5.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ecd45702f76d6d3c75a80564378ae228a85f0b59d2f3ed43c91b4a69eb2ebfc5" dependencies = [ - "proc-macro2 1.0.8", - "quote 1.0.2", + "proc-macro2", + "quote", "syn", ] @@ -4986,22 +4963,13 @@ version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "369a6ed065f249a159e06c45752c780bda2fb53c995718f9e484d08daa9eb42e" -[[package]] -name = "proc-macro2" -version = "0.4.30" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf3d2011ab5c909338f7887f4fc896d35932e29146c12c8d01da6b22a80ba759" -dependencies = [ - "unicode-xid 0.1.0", -] - [[package]] name = "proc-macro2" version = "1.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3acb317c6ff86a4e579dfa00fc5e6cca91ecbb4e7eb2df0468805b674eb88548" dependencies = [ - "unicode-xid 0.2.0", + "unicode-xid", ] [[package]] @@ -5056,7 +5024,7 @@ dependencies = [ "prost", "prost-types", "tempfile", - "which 3.1.0", + "which", ] [[package]] @@ -5067,8 +5035,8 @@ checksum = "537aa19b95acde10a12fec4301466386f757403de4cd4e5b4fa78fb5ecb18f72" dependencies = [ "anyhow", "itertools", - "proc-macro2 1.0.8", - "quote 1.0.2", + "proc-macro2", + "quote", "syn", ] @@ -5128,22 +5096,13 @@ dependencies = [ "pin-project-lite", ] -[[package]] -name = "quote" -version = "0.6.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ce23b6b870e8f94f81fb0a363d65d86675884b34a09043c81e5562f11c1f8e1" -dependencies = [ - "proc-macro2 0.4.30", -] - [[package]] name = "quote" version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "053a8c8bcc71fcce321828dc897a98ab9760bef03a4fc36693c231e5b3216cfe" dependencies = [ - "proc-macro2 1.0.8", + "proc-macro2", ] [[package]] @@ -5550,8 +5509,8 @@ version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b3bba175698996010c4f6dce5e7f173b6eb781fce25d2cfc45e27091ce0b79f6" dependencies = [ - "proc-macro2 1.0.8", - "quote 1.0.2", + "proc-macro2", + "quote", "syn", ] @@ -5620,7 +5579,7 @@ dependencies = [ name = "sc-authority-discovery" version = "0.8.0-dev" dependencies = [ - "bytes 0.4.12", + "bytes 0.5.4", "derive_more", "env_logger 0.7.1", "futures 0.3.4", @@ -5703,8 +5662,8 @@ name = "sc-chain-spec-derive" version = "2.0.0-dev" dependencies = [ "proc-macro-crate", - "proc-macro2 1.0.8", - "quote 1.0.2", + "proc-macro2", + "quote", "syn", ] @@ -6228,7 +6187,7 @@ dependencies = [ "linked-hash-map", "linked_hash_set", "log 0.4.8", - "lru 0.4.3", + "lru", "nohash-hasher", "parity-scale-codec", "parking_lot 0.10.0", @@ -6255,7 +6214,6 @@ dependencies = [ "sp-keyring", "sp-runtime", "sp-test-primitives", - "substrate-test-client", "substrate-test-runtime", "substrate-test-runtime-client", "tempfile", @@ -6274,7 +6232,7 @@ dependencies = [ "futures-timer 3.0.2", "libp2p", "log 0.4.8", - "lru 0.1.17", + "lru", "parking_lot 0.10.0", "sc-network", "sp-runtime", @@ -6652,8 +6610,8 @@ version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f8584eea9b9ff42825b46faf46a8c24d2cff13ec152fa2a50df788b87c07ee28" dependencies = [ - "proc-macro2 1.0.8", - "quote 1.0.2", + "proc-macro2", + "quote", "syn", ] @@ -6746,8 +6704,8 @@ version = "1.0.104" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "128f9e303a5a29922045a830221b8f78ec74a5f544944f3d5984f8ec3895ef64" dependencies = [ - "proc-macro2 1.0.8", - "quote 1.0.2", + "proc-macro2", + "quote", "syn", ] @@ -6876,8 +6834,8 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a945ec7f7ce853e89ffa36be1e27dce9a43e82ff9093bf3461c30d5da74ed11b" dependencies = [ - "proc-macro2 1.0.8", - "quote 1.0.2", + "proc-macro2", + "quote", "syn", ] @@ -6972,8 +6930,8 @@ version = "2.0.0-dev" dependencies = [ "blake2-rfc", "proc-macro-crate", - "proc-macro2 1.0.8", - "quote 1.0.2", + "proc-macro2", + "quote", "syn", ] @@ -7069,7 +7027,7 @@ version = "2.0.0-dev" dependencies = [ "derive_more", "log 0.4.8", - "lru 0.4.3", + "lru", "parity-scale-codec", "parking_lot 0.10.0", "sp-block-builder", @@ -7187,8 +7145,8 @@ dependencies = [ name = "sp-debug-derive" version = "2.0.0-dev" dependencies = [ - "proc-macro2 1.0.8", - "quote 1.0.2", + "proc-macro2", + "quote", "syn", ] @@ -7342,8 +7300,8 @@ version = "2.0.0-dev" dependencies = [ "Inflector", "proc-macro-crate", - "proc-macro2 1.0.8", - "quote 1.0.2", + "proc-macro2", + "quote", "syn", ] @@ -7590,8 +7548,8 @@ checksum = "095064aa1f5b94d14e635d0a5684cf140c43ae40a0fd990708d38f5d669e5f64" dependencies = [ "heck", "proc-macro-error", - "proc-macro2 1.0.8", - "quote 1.0.2", + "proc-macro2", + "quote", "syn", ] @@ -7611,8 +7569,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0054a7df764039a6cd8592b9de84be4bec368ff081d203a7d5371cbfa8e65c81" dependencies = [ "heck", - "proc-macro2 1.0.8", - "quote 1.0.2", + "proc-macro2", + "quote", "syn", ] @@ -7829,13 +7787,13 @@ checksum = "7c65d530b10ccaeac294f349038a597e435b18fb456aadd0840a623f83b9e941" [[package]] name = "syn" -version = "1.0.14" +version = "1.0.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af6f3550d8dff9ef7dc34d384ac6f107e5d31c8f57d9f28e0081503f547ac8f5" +checksum = "7a0294dc449adc58bb6592fff1a23d3e5e6e235afc6a0ffca2657d19e7bbffe5" dependencies = [ - "proc-macro2 1.0.8", - "quote 1.0.2", - "unicode-xid 0.2.0", + "proc-macro2", + "quote", + "unicode-xid", ] [[package]] @@ -7844,8 +7802,8 @@ version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7be3539f6c128a931cf19dcee741c1af532c7fd387baa739c03dd2e96479338a" dependencies = [ - "proc-macro2 1.0.8", - "quote 1.0.2", + "proc-macro2", + "quote", "syn", ] @@ -7855,10 +7813,10 @@ version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "67656ea1dc1b41b1451851562ea232ec2e5a80242139f7e679ceccfb5d61f545" dependencies = [ - "proc-macro2 1.0.8", - "quote 1.0.2", + "proc-macro2", + "quote", "syn", - "unicode-xid 0.2.0", + "unicode-xid", ] [[package]] @@ -7892,16 +7850,6 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c63f48baada5c52e65a29eef93ab4f8982681b67f9e8d29c7b05abcfec2b9ffe" -[[package]] -name = "tempdir" -version = "0.3.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15f2b5fb00ccdf689e0149d1b1b3c03fead81c2b37735d812fa8bddbbf41b6d8" -dependencies = [ - "rand 0.4.6", - "remove_dir_all", -] - [[package]] name = "tempfile" version = "3.1.0" @@ -7932,8 +7880,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a605baa797821796a751f4a959e1206079b24a4b7e1ed302b7d785d81a9276c9" dependencies = [ "lazy_static", - "proc-macro2 1.0.8", - "quote 1.0.2", + "proc-macro2", + "quote", "syn", "version_check 0.9.1", ] @@ -7962,8 +7910,8 @@ version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a7b51e1fbc44b5a0840be594fbc0f960be09050f2617e61e6aa43bef97cd3ef4" dependencies = [ - "proc-macro2 1.0.8", - "quote 1.0.2", + "proc-macro2", + "quote", "syn", ] @@ -8166,8 +8114,8 @@ version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f4b1e7ed7d5d4c2af3d999904b0eebe76544897cdbfb2b9684bed2174ab20f7c" dependencies = [ - "proc-macro2 1.0.8", - "quote 1.0.2", + "proc-macro2", + "quote", "syn", ] @@ -8356,7 +8304,7 @@ version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "04cfd395def5a60236e187e1ff905cb55668a59f29928dec05e6e1b1fd2ac1f3" dependencies = [ - "quote 1.0.2", + "quote", "syn", ] @@ -8404,7 +8352,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "de9222c50cc325855621271157c973da27a0dcd26fa06f8edf81020bd2333df0" dependencies = [ "hash-db", - "hashbrown 0.6.3", + "hashbrown", "log 0.4.8", "rustc-hex", "smallvec 1.2.0", @@ -8437,9 +8385,9 @@ checksum = "e604eb7b43c06650e854be16a2a03155743d3752dd1c943f6829e26b7a36e382" [[package]] name = "trybuild" -version = "1.0.22" +version = "1.0.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5867c525891caf154503954cb743ff7f1c4ca2c3e8578f6a5af84c913aa084c8" +checksum = "26ff1b18659a2218332848d76ad1c867ce4c6ee37b085e6bc8de9a6d11401220" dependencies = [ "glob 0.3.0", "lazy_static", @@ -8541,12 +8489,6 @@ version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "caaa9d531767d1ff2150b9332433f32a24622147e5ebb1f26409d5da67afd479" -[[package]] -name = "unicode-xid" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc72304796d0818e357ead4e000d19c9c174ab23dc11093ac919054d20a6a7fc" - [[package]] name = "unicode-xid" version = "0.2.0" @@ -8719,8 +8661,8 @@ dependencies = [ "bumpalo", "lazy_static", "log 0.4.8", - "proc-macro2 1.0.8", - "quote 1.0.2", + "proc-macro2", + "quote", "syn", "wasm-bindgen-shared", ] @@ -8743,7 +8685,7 @@ version = "0.2.58" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "574094772ce6921576fb6f2e3f7497b8a76273b6db092be18fc48a082de09dc3" dependencies = [ - "quote 1.0.2", + "quote", "wasm-bindgen-macro-support", ] @@ -8753,8 +8695,8 @@ version = "0.2.58" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e85031354f25eaebe78bb7db1c3d86140312a911a106b2e29f9cc440ce3e7668" dependencies = [ - "proc-macro2 1.0.8", - "quote 1.0.2", + "proc-macro2", + "quote", "syn", "wasm-bindgen-backend", "wasm-bindgen-shared", @@ -8775,8 +8717,8 @@ dependencies = [ "anyhow", "heck", "log 0.4.8", - "proc-macro2 1.0.8", - "quote 1.0.2", + "proc-macro2", + "quote", "syn", "wasm-bindgen-backend", "weedle", @@ -9064,16 +9006,6 @@ dependencies = [ "nom", ] -[[package]] -name = "which" -version = "2.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b57acb10231b9493c8472b20cb57317d0679a49e0bdbee44b3b803a6473af164" -dependencies = [ - "failure", - "libc", -] - [[package]] name = "which" version = "3.1.0" @@ -9218,8 +9150,8 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "de251eec69fc7c1bc3923403d18ececb929380e016afe103da75f396704f8ca2" dependencies = [ - "proc-macro2 1.0.8", - "quote 1.0.2", + "proc-macro2", + "quote", "syn", "synstructure", ] diff --git a/bin/node/testing/Cargo.toml b/bin/node/testing/Cargo.toml index 4530c95760..936ae4c52b 100644 --- a/bin/node/testing/Cargo.toml +++ b/bin/node/testing/Cargo.toml @@ -7,6 +7,7 @@ edition = "2018" license = "GPL-3.0" homepage = "https://substrate.dev" repository = "https://github.com/paritytech/substrate/" +publish = true [dependencies] pallet-balances = { version = "2.0.0-dev", path = "../../../frame/balances" } @@ -43,7 +44,7 @@ sp-block-builder = { version = "2.0.0-dev", path = "../../../primitives/block-bu sp-inherents = { version = "2.0.0-dev", path = "../../../primitives/inherents" } sp-blockchain = { version = "2.0.0-dev", path = "../../../primitives/blockchain" } log = "0.4.8" -tempdir = "0.3" +tempfile = "3.1.0" fs_extra = "1" [dev-dependencies] diff --git a/bin/node/testing/src/bench.rs b/bin/node/testing/src/bench.rs index 5653ba7701..58a7ab933e 100644 --- a/bin/node/testing/src/bench.rs +++ b/bin/node/testing/src/bench.rs @@ -81,7 +81,7 @@ pub struct BenchDb { impl Clone for BenchDb { fn clone(&self) -> Self { let keyring = self.keyring.clone(); - let dir = tempdir::TempDir::new("sub-bench").expect("temp dir creation failed"); + let dir = tempfile::tempdir().expect("temp dir creation failed"); let seed_dir = self.directory_guard.0.path(); @@ -120,7 +120,7 @@ impl BenchDb { pub fn new(keyring_length: usize) -> Self { let keyring = BenchKeyring::new(keyring_length); - let dir = tempdir::TempDir::new("sub-bench").expect("temp dir creation failed"); + let dir = tempfile::tempdir().expect("temp dir creation failed"); log::trace!( target: "bench-logistics", "Created seed db at {}", @@ -357,7 +357,7 @@ impl Profile { } } -struct Guard(tempdir::TempDir); +struct Guard(tempfile::TempDir); impl Guard { fn path(&self) -> &Path { diff --git a/client/authority-discovery/Cargo.toml b/client/authority-discovery/Cargo.toml index a87a0fee97..3ba2436e5d 100644 --- a/client/authority-discovery/Cargo.toml +++ b/client/authority-discovery/Cargo.toml @@ -12,7 +12,7 @@ repository = "https://github.com/paritytech/substrate/" prost-build = "0.6.1" [dependencies] -bytes = "0.4.12" +bytes = "0.5.0" codec = { package = "parity-scale-codec", default-features = false, version = "1.0.3" } derive_more = "0.99.2" futures = "0.3.1" diff --git a/client/network-gossip/Cargo.toml b/client/network-gossip/Cargo.toml index 25b0548c84..d9d1281911 100644 --- a/client/network-gossip/Cargo.toml +++ b/client/network-gossip/Cargo.toml @@ -13,7 +13,7 @@ futures = "0.3.1" futures-timer = "3.0.1" libp2p = { version = "0.16.1", default-features = false, features = ["libp2p-websocket"] } log = "0.4.8" -lru = "0.1.2" +lru = "0.4.3" parking_lot = "0.10.0" sc-network = { version = "0.8.0-dev", path = "../network" } sp-runtime = { version = "2.0.0-dev", path = "../../primitives/runtime" } diff --git a/client/network/Cargo.toml b/client/network/Cargo.toml index 48a6fee638..5d223f9031 100644 --- a/client/network/Cargo.toml +++ b/client/network/Cargo.toml @@ -49,10 +49,7 @@ sp-blockchain = { version = "2.0.0-dev", path = "../../primitives/blockchain" } sp-consensus = { version = "0.8.0-dev", path = "../../primitives/consensus/common" } sp-consensus-babe = { version = "0.8.0-dev", path = "../../primitives/consensus/babe" } sp-core = { version = "2.0.0-dev", path = "../../primitives/core" } -sp-keyring = { version = "2.0.0-dev", optional = true, path = "../../primitives/keyring" } sp-runtime = { version = "2.0.0-dev", path = "../../primitives/runtime" } -substrate-test-client = { version = "2.0.0-dev", optional = true, path = "../../test-utils/client" } -substrate-test-runtime-client = { version = "2.0.0-dev", optional = true, path = "../../test-utils/runtime/client" } thiserror = "1" unsigned-varint = { version = "0.3.1", features = ["futures", "futures-codec"] } void = "1.0.2" @@ -72,4 +69,4 @@ tempfile = "3.1.0" [features] default = [] -test-helpers = ["sp-keyring", "substrate-test-runtime-client"] + diff --git a/primitives/runtime-interface/test-wasm/Cargo.toml b/primitives/runtime-interface/test-wasm/Cargo.toml index 8461509842..e07adb0195 100644 --- a/primitives/runtime-interface/test-wasm/Cargo.toml +++ b/primitives/runtime-interface/test-wasm/Cargo.toml @@ -7,6 +7,7 @@ build = "build.rs" license = "GPL-3.0" homepage = "https://substrate.dev" repository = "https://github.com/paritytech/substrate/" +publish = false [dependencies] sp-runtime-interface = { version = "2.0.0-dev", default-features = false, path = "../" } diff --git a/primitives/test-primitives/Cargo.toml b/primitives/test-primitives/Cargo.toml index 1cff915f3c..99d070013e 100644 --- a/primitives/test-primitives/Cargo.toml +++ b/primitives/test-primitives/Cargo.toml @@ -6,6 +6,7 @@ edition = "2018" license = "GPL-3.0" homepage = "https://substrate.dev" repository = "https://github.com/paritytech/substrate/" +publish = false [dependencies] sp-application-crypto = { version = "2.0.0-dev", default-features = false, path = "../application-crypto" } diff --git a/test-utils/client/Cargo.toml b/test-utils/client/Cargo.toml index f4eb93d128..99511f051b 100644 --- a/test-utils/client/Cargo.toml +++ b/test-utils/client/Cargo.toml @@ -6,6 +6,7 @@ edition = "2018" license = "GPL-3.0" homepage = "https://substrate.dev" repository = "https://github.com/paritytech/substrate/" +publish = false [dependencies] sc-client-api = { version = "2.0.0-dev", path = "../../client/api" } diff --git a/test-utils/runtime/Cargo.toml b/test-utils/runtime/Cargo.toml index 44d2a68b49..993e44685c 100644 --- a/test-utils/runtime/Cargo.toml +++ b/test-utils/runtime/Cargo.toml @@ -7,6 +7,7 @@ build = "build.rs" license = "GPL-3.0" homepage = "https://substrate.dev" repository = "https://github.com/paritytech/substrate/" +publish = false [dependencies] sp-application-crypto = { version = "2.0.0-dev", default-features = false, path = "../../primitives/application-crypto" } diff --git a/test-utils/runtime/client/Cargo.toml b/test-utils/runtime/client/Cargo.toml index a588219690..3911bea783 100644 --- a/test-utils/runtime/client/Cargo.toml +++ b/test-utils/runtime/client/Cargo.toml @@ -6,6 +6,7 @@ edition = "2018" license = "GPL-3.0" homepage = "https://substrate.dev" repository = "https://github.com/paritytech/substrate/" +publish = false [dependencies] sc-block-builder = { version = "0.8.0-dev", path = "../../../client/block-builder" } diff --git a/test-utils/runtime/transaction-pool/Cargo.toml b/test-utils/runtime/transaction-pool/Cargo.toml index dfaeb7227f..8b5e34be88 100644 --- a/test-utils/runtime/transaction-pool/Cargo.toml +++ b/test-utils/runtime/transaction-pool/Cargo.toml @@ -6,6 +6,7 @@ edition = "2018" license = "GPL-3.0" homepage = "https://substrate.dev" repository = "https://github.com/paritytech/substrate/" +publish = false [dependencies] substrate-test-runtime-client = { version = "2.0.0-dev", path = "../client" } -- GitLab From a64dd527fb280c3feac4b0326e7483b4874efd6e Mon Sep 17 00:00:00 2001 From: Cecile Tonglet Date: Tue, 25 Feb 2020 15:48:50 +0100 Subject: [PATCH 036/301] Fix: CI failing for some CLI tests (#5043) * Initial commit Forked at: 41bb2193a267805e2093a081bc3e2aaccc64283a Parent branch: origin/master * Increase killing grace period of CLI tests and display more info * Use --dev everywhere possible * Put pruning mode to its own params struct * Add pruning params to export-blocks command * Added missing file * Removed not-dev mode in tests * Add pruning mode to the revert command * Decrease killing grace period again * Move back unsafe_pruning to import_params * Applied proposed changes --- bin/node/cli/tests/check_block_works.rs | 4 +- bin/node/cli/tests/common.rs | 18 ++--- .../tests/import_export_and_revert_work.rs | 8 +-- bin/node/cli/tests/inspect_works.rs | 4 +- bin/node/cli/tests/purge_chain_works.rs | 2 +- client/cli/src/commands/export_blocks_cmd.rs | 10 ++- client/cli/src/commands/revert_cmd.rs | 10 ++- client/cli/src/params/import_params.rs | 41 +++-------- client/cli/src/params/mod.rs | 2 + client/cli/src/params/pruning_params.rs | 69 +++++++++++++++++++ 10 files changed, 112 insertions(+), 56 deletions(-) create mode 100644 client/cli/src/params/pruning_params.rs diff --git a/bin/node/cli/tests/check_block_works.rs b/bin/node/cli/tests/check_block_works.rs index e4c93c9e88..6bfb82a8bf 100644 --- a/bin/node/cli/tests/check_block_works.rs +++ b/bin/node/cli/tests/check_block_works.rs @@ -26,10 +26,10 @@ mod common; fn check_block_works() { let base_path = tempdir().expect("could not create a temp dir"); - common::run_command_for_a_while(base_path.path(), false); + common::run_dev_node_for_a_while(base_path.path()); let status = Command::new(cargo_bin("substrate")) - .args(&["check-block", "-d"]) + .args(&["check-block", "--dev", "--pruning", "archive", "-d"]) .arg(base_path.path()) .arg("1") .status() diff --git a/bin/node/cli/tests/common.rs b/bin/node/cli/tests/common.rs index 682a30bcc0..34e371195c 100644 --- a/bin/node/cli/tests/common.rs +++ b/bin/node/cli/tests/common.rs @@ -27,13 +27,18 @@ use nix::unistd::Pid; /// /// Returns the `Some(exit status)` or `None` if the process did not finish in the given time. pub fn wait_for(child: &mut Child, secs: usize) -> Option { - for _ in 0..secs { + for i in 0..secs { match child.try_wait().unwrap() { - Some(status) => return Some(status), + Some(status) => { + if i > 5 { + eprintln!("Child process took {} seconds to exit gracefully", i); + } + return Some(status) + }, None => thread::sleep(Duration::from_secs(1)), } } - eprintln!("Took to long to exit. Killing..."); + eprintln!("Took too long to exit (> {} seconds). Killing...", secs); let _ = child.kill(); child.wait().unwrap(); @@ -41,14 +46,11 @@ pub fn wait_for(child: &mut Child, secs: usize) -> Option { } /// Run the node for a while (30 seconds) -pub fn run_command_for_a_while(base_path: &Path, dev: bool) { +pub fn run_dev_node_for_a_while(base_path: &Path) { let mut cmd = Command::new(cargo_bin("substrate")); - if dev { - cmd.arg("--dev"); - } - let mut cmd = cmd + .args(&["--dev"]) .arg("-d") .arg(base_path) .spawn() diff --git a/bin/node/cli/tests/import_export_and_revert_work.rs b/bin/node/cli/tests/import_export_and_revert_work.rs index e109aa279e..131265e3b4 100644 --- a/bin/node/cli/tests/import_export_and_revert_work.rs +++ b/bin/node/cli/tests/import_export_and_revert_work.rs @@ -27,10 +27,10 @@ fn import_export_and_revert_work() { let base_path = tempdir().expect("could not create a temp dir"); let exported_blocks = base_path.path().join("exported_blocks"); - common::run_command_for_a_while(base_path.path(), false); + common::run_dev_node_for_a_while(base_path.path()); let status = Command::new(cargo_bin("substrate")) - .args(&["export-blocks", "-d"]) + .args(&["export-blocks", "--dev", "--pruning", "archive", "-d"]) .arg(base_path.path()) .arg(&exported_blocks) .status() @@ -43,7 +43,7 @@ fn import_export_and_revert_work() { let _ = fs::remove_dir_all(base_path.path().join("db")); let status = Command::new(cargo_bin("substrate")) - .args(&["import-blocks", "-d"]) + .args(&["import-blocks", "--dev", "--pruning", "archive", "-d"]) .arg(base_path.path()) .arg(&exported_blocks) .status() @@ -51,7 +51,7 @@ fn import_export_and_revert_work() { assert!(status.success()); let status = Command::new(cargo_bin("substrate")) - .args(&["revert", "-d"]) + .args(&["revert", "--dev", "--pruning", "archive", "-d"]) .arg(base_path.path()) .status() .unwrap(); diff --git a/bin/node/cli/tests/inspect_works.rs b/bin/node/cli/tests/inspect_works.rs index 0bd48c3693..441b08ccf4 100644 --- a/bin/node/cli/tests/inspect_works.rs +++ b/bin/node/cli/tests/inspect_works.rs @@ -26,10 +26,10 @@ mod common; fn inspect_works() { let base_path = tempdir().expect("could not create a temp dir"); - common::run_command_for_a_while(base_path.path(), false); + common::run_dev_node_for_a_while(base_path.path()); let status = Command::new(cargo_bin("substrate")) - .args(&["inspect", "-d"]) + .args(&["inspect", "--dev", "--pruning", "archive", "-d"]) .arg(base_path.path()) .args(&["block", "1"]) .status() diff --git a/bin/node/cli/tests/purge_chain_works.rs b/bin/node/cli/tests/purge_chain_works.rs index 42a5bc3ce1..020259d0c5 100644 --- a/bin/node/cli/tests/purge_chain_works.rs +++ b/bin/node/cli/tests/purge_chain_works.rs @@ -25,7 +25,7 @@ mod common; fn purge_chain_works() { let base_path = tempdir().expect("could not create a temp dir"); - common::run_command_for_a_while(base_path.path(), true); + common::run_dev_node_for_a_while(base_path.path()); let status = Command::new(cargo_bin("substrate")) .args(&["purge-chain", "--dev", "-d"]) diff --git a/client/cli/src/commands/export_blocks_cmd.rs b/client/cli/src/commands/export_blocks_cmd.rs index 8db650ae8c..cdfa463c6d 100644 --- a/client/cli/src/commands/export_blocks_cmd.rs +++ b/client/cli/src/commands/export_blocks_cmd.rs @@ -22,15 +22,14 @@ use log::info; use structopt::StructOpt; use sc_service::{ Configuration, ChainSpecExtension, RuntimeGenesis, ServiceBuilderCommand, ChainSpec, - config::DatabaseConfig, + config::DatabaseConfig, Roles, }; use sp_runtime::traits::{Block as BlockT, Header as HeaderT}; use crate::error; use crate::VersionInfo; use crate::runtime::run_until_exit; -use crate::params::SharedParams; -use crate::params::BlockNumber; +use crate::params::{SharedParams, BlockNumber, PruningParams}; /// The `export-blocks` command used to export blocks. #[derive(Debug, StructOpt, Clone)] @@ -58,6 +57,10 @@ pub struct ExportBlocksCmd { #[allow(missing_docs)] #[structopt(flatten)] pub shared_params: SharedParams, + + #[allow(missing_docs)] + #[structopt(flatten)] + pub pruning_params: PruningParams, } impl ExportBlocksCmd { @@ -106,6 +109,7 @@ impl ExportBlocksCmd { F: FnOnce(&str) -> Result>, String>, { self.shared_params.update_config(&mut config, spec_factory, version)?; + self.pruning_params.update_config(&mut config, Roles::FULL, true)?; config.use_in_memory_keystore()?; Ok(()) diff --git a/client/cli/src/commands/revert_cmd.rs b/client/cli/src/commands/revert_cmd.rs index 9ab86986cd..f0c534898e 100644 --- a/client/cli/src/commands/revert_cmd.rs +++ b/client/cli/src/commands/revert_cmd.rs @@ -17,14 +17,13 @@ use std::fmt::Debug; use structopt::StructOpt; use sc_service::{ - Configuration, ChainSpecExtension, RuntimeGenesis, ServiceBuilderCommand, ChainSpec, + Configuration, ChainSpecExtension, RuntimeGenesis, ServiceBuilderCommand, ChainSpec, Roles, }; use sp_runtime::traits::{Block as BlockT, Header as HeaderT}; use crate::error; use crate::VersionInfo; -use crate::params::BlockNumber; -use crate::params::SharedParams; +use crate::params::{BlockNumber, SharedParams, PruningParams}; /// The `revert` command used revert the chain to a previous state. #[derive(Debug, StructOpt, Clone)] @@ -36,6 +35,10 @@ pub struct RevertCmd { #[allow(missing_docs)] #[structopt(flatten)] pub shared_params: SharedParams, + + #[allow(missing_docs)] + #[structopt(flatten)] + pub pruning_params: PruningParams, } impl RevertCmd { @@ -72,6 +75,7 @@ impl RevertCmd { F: FnOnce(&str) -> Result>, String>, { self.shared_params.update_config(&mut config, spec_factory, version)?; + self.pruning_params.update_config(&mut config, Roles::FULL, true)?; config.use_in_memory_keystore()?; Ok(()) diff --git a/client/cli/src/params/import_params.rs b/client/cli/src/params/import_params.rs index 98809a38ae..36c62bc979 100644 --- a/client/cli/src/params/import_params.rs +++ b/client/cli/src/params/import_params.rs @@ -15,10 +15,7 @@ // along with Substrate. If not, see . use structopt::StructOpt; -use sc_service::{ - Configuration, RuntimeGenesis, - config::DatabaseConfig, PruningMode, -}; +use sc_service::{Configuration, RuntimeGenesis, config::DatabaseConfig}; use crate::error; use crate::arg_enums::{ @@ -26,17 +23,14 @@ use crate::arg_enums::{ DEFAULT_EXECUTION_IMPORT_BLOCK, DEFAULT_EXECUTION_OFFCHAIN_WORKER, DEFAULT_EXECUTION_OTHER, DEFAULT_EXECUTION_SYNCING }; +use crate::params::PruningParams; /// Parameters for block import. #[derive(Debug, StructOpt, Clone)] pub struct ImportParams { - /// Specify the state pruning mode, a number of blocks to keep or 'archive'. - /// - /// Default is to keep all block states if the node is running as a - /// validator (i.e. 'archive'), otherwise state is only kept for the last - /// 256 blocks. - #[structopt(long = "pruning", value_name = "PRUNING_MODE")] - pub pruning: Option, + #[allow(missing_docs)] + #[structopt(flatten)] + pub pruning_params: PruningParams, /// Force start with unsafe pruning settings. /// @@ -87,7 +81,7 @@ impl ImportParams { /// Put block import CLI params into `config` object. pub fn update_config( &self, - config: &mut Configuration, + mut config: &mut Configuration, role: sc_service::Roles, is_dev: bool, ) -> error::Result<()> @@ -102,27 +96,7 @@ impl ImportParams { config.state_cache_size = self.state_cache_size; - // by default we disable pruning if the node is an authority (i.e. - // `ArchiveAll`), otherwise we keep state for the last 256 blocks. if the - // node is an authority and pruning is enabled explicitly, then we error - // unless `unsafe_pruning` is set. - config.pruning = match &self.pruning { - Some(ref s) if s == "archive" => PruningMode::ArchiveAll, - None if role == sc_service::Roles::AUTHORITY => PruningMode::ArchiveAll, - None => PruningMode::default(), - Some(s) => { - if role == sc_service::Roles::AUTHORITY && !self.unsafe_pruning { - return Err(error::Error::Input( - "Validators should run with state pruning disabled (i.e. archive). \ - You can ignore this check with `--unsafe-pruning`.".to_string() - )); - } - - PruningMode::keep_blocks(s.parse() - .map_err(|_| error::Error::Input("Invalid pruning mode specified".to_string()))? - ) - }, - }; + self.pruning_params.update_config(&mut config, role, self.unsafe_pruning)?; config.wasm_method = self.wasm_method.into(); @@ -144,6 +118,7 @@ impl ImportParams { exec_all_or(exec.execution_offchain_worker, DEFAULT_EXECUTION_OFFCHAIN_WORKER), other: exec_all_or(exec.execution_other, DEFAULT_EXECUTION_OTHER), }; + Ok(()) } } diff --git a/client/cli/src/params/mod.rs b/client/cli/src/params/mod.rs index 75509afa42..f684cab336 100644 --- a/client/cli/src/params/mod.rs +++ b/client/cli/src/params/mod.rs @@ -19,6 +19,7 @@ mod transaction_pool_params; mod shared_params; mod node_key_params; mod network_configuration_params; +mod pruning_params; use std::str::FromStr; use std::fmt::Debug; @@ -28,6 +29,7 @@ pub use crate::params::transaction_pool_params::*; pub use crate::params::shared_params::*; pub use crate::params::node_key_params::*; pub use crate::params::network_configuration_params::*; +pub use crate::params::pruning_params::*; /// Wrapper type of `String` that holds an unsigned integer of arbitrary size, formatted as a decimal. #[derive(Debug, Clone)] diff --git a/client/cli/src/params/pruning_params.rs b/client/cli/src/params/pruning_params.rs new file mode 100644 index 0000000000..ad64d757dc --- /dev/null +++ b/client/cli/src/params/pruning_params.rs @@ -0,0 +1,69 @@ +// Copyright 2020 Parity Technologies (UK) Ltd. +// This file is part of Substrate. + +// Substrate is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Substrate is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Substrate. If not, see . + +use structopt::StructOpt; +use sc_service::{Configuration, RuntimeGenesis, PruningMode}; + +use crate::error; + +/// Parameters to define the pruning mode +#[derive(Debug, StructOpt, Clone)] +pub struct PruningParams { + /// Specify the state pruning mode, a number of blocks to keep or 'archive'. + /// + /// Default is to keep all block states if the node is running as a + /// validator (i.e. 'archive'), otherwise state is only kept for the last + /// 256 blocks. + #[structopt(long = "pruning", value_name = "PRUNING_MODE")] + pub pruning: Option, +} + +impl PruningParams { + /// Put block pruning CLI params into `config` object. + pub fn update_config( + &self, + mut config: &mut Configuration, + role: sc_service::Roles, + unsafe_pruning: bool, + ) -> error::Result<()> + where + G: RuntimeGenesis, + { + // by default we disable pruning if the node is an authority (i.e. + // `ArchiveAll`), otherwise we keep state for the last 256 blocks. if the + // node is an authority and pruning is enabled explicitly, then we error + // unless `unsafe_pruning` is set. + config.pruning = match &self.pruning { + Some(ref s) if s == "archive" => PruningMode::ArchiveAll, + None if role == sc_service::Roles::AUTHORITY => PruningMode::ArchiveAll, + None => PruningMode::default(), + Some(s) => { + if role == sc_service::Roles::AUTHORITY && !unsafe_pruning { + return Err(error::Error::Input( + "Validators should run with state pruning disabled (i.e. archive). \ + You can ignore this check with `--unsafe-pruning`.".to_string() + )); + } + + PruningMode::keep_blocks(s.parse() + .map_err(|_| error::Error::Input("Invalid pruning mode specified".to_string()))? + ) + }, + }; + + Ok(()) + } +} -- GitLab From ab8da7472e2f60fccfd8ec4290a2e96ecdc4f833 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Silva?= Date: Tue, 25 Feb 2020 14:49:06 +0000 Subject: [PATCH 037/301] aura: remove unused tx pool (#5046) * aura: remove unused transaction pool parameter * node-template: remove transaction pool from aura * aura: fix tests --- bin/node-template/node/src/service.rs | 8 +++----- client/consensus/aura/src/lib.rs | 25 +++++++------------------ 2 files changed, 10 insertions(+), 23 deletions(-) diff --git a/bin/node-template/node/src/service.rs b/bin/node-template/node/src/service.rs index 5b64984c47..6298f194e4 100644 --- a/bin/node-template/node/src/service.rs +++ b/bin/node-template/node/src/service.rs @@ -37,7 +37,7 @@ macro_rules! new_full_start { let pool_api = sc_transaction_pool::FullChainApi::new(client.clone()); Ok(sc_transaction_pool::BasicPool::new(config, std::sync::Arc::new(pool_api))) })? - .with_import_queue(|_config, client, mut select_chain, transaction_pool| { + .with_import_queue(|_config, client, mut select_chain, _transaction_pool| { let select_chain = select_chain.take() .ok_or_else(|| sc_service::Error::SelectChainRequired)?; @@ -50,14 +50,13 @@ macro_rules! new_full_start { grandpa_block_import.clone(), client.clone(), ); - let import_queue = sc_consensus_aura::import_queue::<_, _, _, AuraPair, _>( + let import_queue = sc_consensus_aura::import_queue::<_, _, _, AuraPair>( sc_consensus_aura::slot_duration(&*client)?, aura_block_import, Some(Box::new(grandpa_block_import.clone())), None, client, inherent_data_providers.clone(), - Some(transaction_pool), )?; import_setup = Some((grandpa_block_import, grandpa_link)); @@ -210,14 +209,13 @@ pub fn new_light(config: Configuration) let finality_proof_request_builder = finality_proof_import.create_finality_proof_request_builder(); - let import_queue = sc_consensus_aura::import_queue::<_, _, _, AuraPair, ()>( + let import_queue = sc_consensus_aura::import_queue::<_, _, _, AuraPair>( sc_consensus_aura::slot_duration(&*client)?, grandpa_block_import, None, Some(Box::new(finality_proof_import)), client, inherent_data_providers.clone(), - None, )?; Ok((import_queue, finality_proof_request_builder)) diff --git a/client/consensus/aura/src/lib.rs b/client/consensus/aura/src/lib.rs index 13dd81c198..355c058645 100644 --- a/client/consensus/aura/src/lib.rs +++ b/client/consensus/aura/src/lib.rs @@ -405,21 +405,17 @@ fn find_pre_digest(header: &B::Header) -> Result( +fn check_header( client: &C, slot_now: u64, mut header: B::Header, hash: B::Hash, authorities: &[AuthorityId

], - _transaction_pool: Option<&T>, ) -> Result)>, Error> where DigestItemFor: CompatibleDigestItem

, P::Signature: Decode, C: sc_client_api::backend::AuxStore, P::Public: Encode + Decode + PartialEq + Clone, - T: Send + Sync + 'static, { let seal = match header.digest_mut().pop() { Some(x) => x, @@ -469,14 +465,13 @@ fn check_header( } /// A verifier for Aura blocks. -pub struct AuraVerifier { +pub struct AuraVerifier { client: Arc, phantom: PhantomData

, inherent_data_providers: sp_inherents::InherentDataProviders, - transaction_pool: Option>, } -impl AuraVerifier +impl AuraVerifier where P: Send + Sync + 'static { fn check_inherents( @@ -531,7 +526,7 @@ impl AuraVerifier } #[forbid(deprecated)] -impl Verifier for AuraVerifier where +impl Verifier for AuraVerifier where C: ProvideRuntimeApi + Send + Sync + @@ -543,7 +538,6 @@ impl Verifier for AuraVerifier where P: Pair + Send + Sync + 'static, P::Public: Send + Sync + Hash + Eq + Clone + Decode + Encode + Debug + 'static, P::Signature: Encode + Decode, - T: Send + Sync + 'static, { fn verify( &mut self, @@ -565,13 +559,12 @@ impl Verifier for AuraVerifier where // we add one to allow for some small drift. // FIXME #1019 in the future, alter this queue to allow deferring of // headers - let checked_header = check_header::( + let checked_header = check_header::( &self.client, slot_now + 1, header, hash, &authorities[..], - self.transaction_pool.as_ref().map(|x| &**x), ).map_err(|e| e.to_string())?; match checked_header { CheckedHeader::Checked(pre_header, (slot_num, seal)) => { @@ -795,14 +788,13 @@ impl BlockImport for AuraBlockImport( +pub fn import_queue( slot_duration: SlotDuration, block_import: I, justification_import: Option>, finality_proof_import: Option>, client: Arc, inherent_data_providers: InherentDataProviders, - transaction_pool: Option>, ) -> Result>, sp_consensus::Error> where B: BlockT, C::Api: BlockBuilderApi + AuraApi> + ApiExt, @@ -812,7 +804,6 @@ pub fn import_queue( P: Pair + Send + Sync + 'static, P::Public: Clone + Eq + Send + Sync + Hash + Debug + Encode + Decode, P::Signature: Encode + Decode, - T: Send + Sync + 'static, { register_aura_inherent_data_provider(&inherent_data_providers, slot_duration.get())?; initialize_authorities_cache(&*client)?; @@ -821,7 +812,6 @@ pub fn import_queue( client: client.clone(), inherent_data_providers, phantom: PhantomData, - transaction_pool, }; Ok(BasicQueue::new( verifier, @@ -900,7 +890,7 @@ mod tests { } impl TestNetFactory for AuraTestNet { - type Verifier = AuraVerifier; + type Verifier = AuraVerifier; type PeerData = (); /// Create new test network with peers and given config. @@ -926,7 +916,6 @@ mod tests { AuraVerifier { client, inherent_data_providers, - transaction_pool: Default::default(), phantom: Default::default(), } }, -- GitLab From b874cb2b6e3dad7f06f601d6191f655898784bd3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bastian=20K=C3=B6cher?= Date: Tue, 25 Feb 2020 15:50:45 +0100 Subject: [PATCH 038/301] Extend rust nightly detection in `wasm-builder` (#5021) Instead of just testing `cargo` and `rustup run nightly`, we now test the `CARGO` env variable and also scan non default nightlies. The user is also now able to select the toolchain with `WASM_BUILD_TOOLCHAIN`. --- utils/wasm-builder/README.md | 5 ++ utils/wasm-builder/src/lib.rs | 78 ++++++++++++++++++-------- utils/wasm-builder/src/wasm_project.rs | 1 + 3 files changed, 62 insertions(+), 22 deletions(-) diff --git a/utils/wasm-builder/README.md b/utils/wasm-builder/README.md index 2fd9a6ab4c..5f4ca615d5 100644 --- a/utils/wasm-builder/README.md +++ b/utils/wasm-builder/README.md @@ -50,6 +50,8 @@ By using environment variables, you can configure which WASM binaries are built - `WASM_BUILD_NO_COLOR` - Disable color output of the wasm build. - `WASM_TARGET_DIRECTORY` - Will copy any build wasm binary to the given directory. The path needs to be absolute. +- `WASM_BUILD_TOOLCHAIN` - The toolchain that should be used to build the wasm binaries. The + format needs to be the same as used by cargo, e.g. `nightly-2020-02-20`. Each project can be skipped individually by using the environment variable `SKIP_PROJECT_NAME_WASM_BUILD`. Where `PROJECT_NAME` needs to be replaced by the name of the cargo project, e.g. `node-runtime` will @@ -61,5 +63,8 @@ WASM builder requires the following prerequisites for building the WASM binary: - rust nightly + `wasm32-unknown-unknown` toolchain +If a specific rust nightly is installed with `rustup`, it is important that the wasm target is installed +as well. For example if installing the rust nightly from 20.02.2020 using `rustup install nightly-2020-02-20`, +the wasm target needs to be installed as well `rustup target add wasm32-unknown-unknown --toolchain nightly-2020-02-20`. License: GPL-3.0 diff --git a/utils/wasm-builder/src/lib.rs b/utils/wasm-builder/src/lib.rs index 8500eba4a0..195527a122 100644 --- a/utils/wasm-builder/src/lib.rs +++ b/utils/wasm-builder/src/lib.rs @@ -66,6 +66,8 @@ //! - `WASM_BUILD_NO_COLOR` - Disable color output of the wasm build. //! - `WASM_TARGET_DIRECTORY` - Will copy any build wasm binary to the given directory. The path needs //! to be absolute. +//! - `WASM_BUILD_TOOLCHAIN` - The toolchain that should be used to build the wasm binaries. The +//! format needs to be the same as used by cargo, e.g. `nightly-2020-02-20`. //! //! Each project can be skipped individually by using the environment variable `SKIP_PROJECT_NAME_WASM_BUILD`. //! Where `PROJECT_NAME` needs to be replaced by the name of the cargo project, e.g. `node-runtime` will @@ -77,8 +79,11 @@ //! //! - rust nightly + `wasm32-unknown-unknown` toolchain //! +//! If a specific rust nightly is installed with `rustup`, it is important that the wasm target is installed +//! as well. For example if installing the rust nightly from 20.02.2020 using `rustup install nightly-2020-02-20`, +//! the wasm target needs to be installed as well `rustup target add wasm32-unknown-unknown --toolchain nightly-2020-02-20`. -use std::{env, fs, path::PathBuf, process::{Command, Stdio, self}}; +use std::{env, fs, path::PathBuf, process::{Command, self}, io::BufRead}; mod prerequisites; mod wasm_project; @@ -103,6 +108,9 @@ const WASM_TARGET_DIRECTORY: &str = "WASM_TARGET_DIRECTORY"; /// Environment variable to disable color output of the wasm build. const WASM_BUILD_NO_COLOR: &str = "WASM_BUILD_NO_COLOR"; +/// Environment variable to set the toolchain used to compile the wasm binary. +const WASM_BUILD_TOOLCHAIN: &str = "WASM_BUILD_TOOLCHAIN"; + /// Build the currently built project as wasm binary. /// /// The current project is determined by using the `CARGO_MANIFEST_DIR` environment variable. @@ -178,19 +186,56 @@ fn write_file_if_changed(file: PathBuf, content: String) { /// Get a cargo command that compiles with nightly fn get_nightly_cargo() -> CargoCommand { + let env_cargo = CargoCommand::new( + &env::var("CARGO").expect("`CARGO` env variable is always set by cargo"), + ); let default_cargo = CargoCommand::new("cargo"); - let mut rustup_run_nightly = CargoCommand::new("rustup"); - rustup_run_nightly.args(&["run", "nightly", "cargo"]); + let rustup_run_nightly = CargoCommand::new_with_args("rustup", &["run", "nightly", "cargo"]); + let wasm_toolchain = env::var(WASM_BUILD_TOOLCHAIN).ok(); - if default_cargo.is_nightly() { + // First check if the user requested a specific toolchain + if let Some(cmd) = wasm_toolchain.and_then(|t| get_rustup_nightly(Some(t))) { + cmd + } else if env_cargo.is_nightly() { + env_cargo + } else if default_cargo.is_nightly() { default_cargo - } else if rustup_run_nightly.works() { + } else if rustup_run_nightly.is_nightly() { rustup_run_nightly } else { - default_cargo + // If no command before provided us with a nightly compiler, we try to search one + // with rustup. If that fails as well, we return the default cargo and let the prequisities + // check fail. + get_rustup_nightly(None).unwrap_or(default_cargo) } } +/// Get a nightly from rustup. If `selected` is `Some(_)`, a `CargoCommand` using the given +/// nightly is returned. +fn get_rustup_nightly(selected: Option) -> Option { + let host = format!("-{}", env::var("HOST").expect("`HOST` is always set by cargo")); + + let version = match selected { + Some(selected) => selected, + None => { + let output = Command::new("rustup").args(&["toolchain", "list"]).output().ok()?.stdout; + let lines = output.as_slice().lines(); + + let mut latest_nightly = None; + for line in lines.filter_map(|l| l.ok()) { + if line.starts_with("nightly-") && line.ends_with(&host) { + // Rustup prints them sorted + latest_nightly = Some(line.clone()); + } + } + + latest_nightly?.trim_end_matches(&host).into() + } + }; + + Some(CargoCommand::new_with_args("rustup", &["run", &version, "cargo"])) +} + /// Builder for cargo commands #[derive(Debug)] struct CargoCommand { @@ -203,14 +248,11 @@ impl CargoCommand { CargoCommand { program: program.into(), args: Vec::new() } } - fn arg(&mut self, arg: &str) -> &mut Self { - self.args.push(arg.into()); - self - } - - fn args(&mut self, args: &[&str]) -> &mut Self { - args.into_iter().for_each(|a| { self.arg(a); }); - self + fn new_with_args(program: &str, args: &[&str]) -> Self { + CargoCommand { + program: program.into(), + args: args.iter().map(ToString::to_string).collect(), + } } fn command(&self) -> Command { @@ -219,14 +261,6 @@ impl CargoCommand { cmd } - fn works(&self) -> bool { - self.command() - .stdout(Stdio::null()) - .stderr(Stdio::null()) - .status() - .map(|s| s.success()).unwrap_or(false) - } - /// Check if the supplied cargo command is a nightly version fn is_nightly(&self) -> bool { // `RUSTC_BOOTSTRAP` tells a stable compiler to behave like a nightly. So, when this env diff --git a/utils/wasm-builder/src/wasm_project.rs b/utils/wasm-builder/src/wasm_project.rs index 60be4684ba..c4f00b9cf4 100644 --- a/utils/wasm-builder/src/wasm_project.rs +++ b/utils/wasm-builder/src/wasm_project.rs @@ -453,6 +453,7 @@ fn generate_rerun_if_changed_instructions( println!("cargo:rerun-if-env-changed={}", crate::WASM_BUILD_TYPE_ENV); println!("cargo:rerun-if-env-changed={}", crate::WASM_BUILD_RUSTFLAGS_ENV); println!("cargo:rerun-if-env-changed={}", crate::WASM_TARGET_DIRECTORY); + println!("cargo:rerun-if-env-changed={}", crate::WASM_BUILD_TOOLCHAIN); } /// Copy the WASM binary to the target directory set in `WASM_TARGET_DIRECTORY` environment variable. -- GitLab From 063c0c38f56d66840e3a96a3d443e0afcad2bd55 Mon Sep 17 00:00:00 2001 From: Marcio Diaz Date: Tue, 25 Feb 2020 15:51:25 +0100 Subject: [PATCH 039/301] Add steps setting to benchmarking CLI (#5033) * Add steps setting to CLI, use max value to hit worst case. * Bump impl_version. * Apply review suggestion. --- bin/node/runtime/src/lib.rs | 4 ++-- frame/benchmarking/src/lib.rs | 18 ++++++++++++------ frame/benchmarking/src/utils.rs | 4 ++-- utils/frame/benchmarking-cli/src/lib.rs | 7 ++++--- 4 files changed, 20 insertions(+), 13 deletions(-) diff --git a/bin/node/runtime/src/lib.rs b/bin/node/runtime/src/lib.rs index e91eca4e40..980f033024 100644 --- a/bin/node/runtime/src/lib.rs +++ b/bin/node/runtime/src/lib.rs @@ -82,7 +82,7 @@ pub const VERSION: RuntimeVersion = RuntimeVersion { // implementation changes and behavior does not, then leave spec_version as // is and increment impl_version. spec_version: 225, - impl_version: 0, + impl_version: 1, apis: RUNTIME_API_VERSIONS, }; @@ -819,7 +819,7 @@ impl_runtime_apis! { fn dispatch_benchmark( module: Vec, extrinsic: Vec, - steps: u32, + steps: Vec, repeat: u32, ) -> Option> { use frame_benchmarking::Benchmarking; diff --git a/frame/benchmarking/src/lib.rs b/frame/benchmarking/src/lib.rs index 3ad4a9a8a0..e6b6a4f3f5 100644 --- a/frame/benchmarking/src/lib.rs +++ b/frame/benchmarking/src/lib.rs @@ -140,7 +140,7 @@ macro_rules! impl_benchmark { $( $name:ident ),* ) => { impl $crate::Benchmarking<$crate::BenchmarkResults> for Module { - fn run_benchmark(extrinsic: Vec, steps: u32, repeat: u32) -> Result, &'static str> { + fn run_benchmark(extrinsic: Vec, steps: Vec, repeat: u32) -> Result, &'static str> { // Map the input to the selected benchmark. let extrinsic = sp_std::str::from_utf8(extrinsic.as_slice()) .map_err(|_| "Could not find extrinsic")?; @@ -153,15 +153,21 @@ macro_rules! impl_benchmark { $crate::benchmarking::commit_db(); $crate::benchmarking::wipe_db(); - // first one is set_identity. let components = , RawOrigin>>::components(&selected_benchmark); - // results go here let mut results: Vec<$crate::BenchmarkResults> = Vec::new(); + + // Default number of steps for a component. + let mut prev_steps = &10; + // Select the component we will be benchmarking. Each component will be benchmarked. - for (name, low, high) in components.iter() { + for (idx, (name, low, high)) in components.iter().enumerate() { + // Get the number of steps for this component. + let steps = steps.get(idx).unwrap_or(&prev_steps); + prev_steps = steps; + // Create up to `STEPS` steps for that component between high and low. let step_size = ((high - low) / steps).max(1); - let num_of_steps = (high - low) / step_size; + let num_of_steps = (high - low) / step_size + 1; for s in 0..num_of_steps { // This is the value we will be testing for component `name` let component_value = low + step_size * s; @@ -169,7 +175,7 @@ macro_rules! impl_benchmark { // Select the mid value for all the other components. let c: Vec<($crate::BenchmarkParameter, u32)> = components.iter() .map(|(n, l, h)| - (*n, if n == name { component_value } else { (h - l) / 2 + l }) + (*n, if n == name { component_value } else { *h }) ).collect(); // Run the benchmark `repeat` times. diff --git a/frame/benchmarking/src/utils.rs b/frame/benchmarking/src/utils.rs index 5a67ea6943..9db981a61c 100644 --- a/frame/benchmarking/src/utils.rs +++ b/frame/benchmarking/src/utils.rs @@ -40,7 +40,7 @@ sp_api::decl_runtime_apis! { fn dispatch_benchmark( module: Vec, extrinsic: Vec, - steps: u32, + steps: Vec, repeat: u32, ) -> Option>; } @@ -78,7 +78,7 @@ pub trait Benchmarking { /// - `extrinsic`: The name of extrinsic function you want to benchmark encoded as bytes. /// - `steps`: The number of sample points you want to take across the range of parameters. /// - `repeat`: The number of times you want to repeat a benchmark. - fn run_benchmark(extrinsic: Vec, steps: u32, repeat: u32) -> Result, &'static str>; + fn run_benchmark(extrinsic: Vec, steps: Vec, repeat: u32) -> Result, &'static str>; } /// The required setup for creating a benchmark. diff --git a/utils/frame/benchmarking-cli/src/lib.rs b/utils/frame/benchmarking-cli/src/lib.rs index 816ce52131..b2f360e584 100644 --- a/utils/frame/benchmarking-cli/src/lib.rs +++ b/utils/frame/benchmarking-cli/src/lib.rs @@ -36,8 +36,8 @@ pub struct BenchmarkCmd { pub extrinsic: String, /// Select how many samples we should take across the variable components. - #[structopt(short, long, default_value = "1")] - pub steps: u32, + #[structopt(short, long, use_delimiter = true)] + pub steps: Vec, /// Select how many repetitions of this benchmark should run. #[structopt(short, long, default_value = "1")] @@ -97,13 +97,14 @@ impl BenchmarkCmd { wasm_method, None, // heap pages ); + let result = StateMachine::<_, _, NumberFor, _>::new( &state, None, &mut changes, &executor, "Benchmark_dispatch_benchmark", - &(&self.pallet, &self.extrinsic, self.steps, self.repeat).encode(), + &(&self.pallet, &self.extrinsic, self.steps.clone(), self.repeat).encode(), Default::default(), ) .execute(strategy.into()) -- GitLab From 71d10b4564d1ffcb74ee8058c76d7f279a8a3842 Mon Sep 17 00:00:00 2001 From: Shawn Tabrizi Date: Tue, 25 Feb 2020 15:51:46 +0100 Subject: [PATCH 040/301] Remove indices from node-template (#5025) * Remove indices from node-template * Use identity lookup instead * Bump impl * clean cargo.toml --- Cargo.lock | 1 - bin/node-template/node/src/chain_spec.rs | 11 ++++------ bin/node-template/runtime/Cargo.toml | 2 -- bin/node-template/runtime/src/lib.rs | 26 ++++-------------------- frame/indices/src/lib.rs | 2 +- 5 files changed, 9 insertions(+), 33 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 38021aeeb3..56f960c796 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3606,7 +3606,6 @@ dependencies = [ "pallet-aura", "pallet-balances", "pallet-grandpa", - "pallet-indices", "pallet-randomness-collective-flip", "pallet-sudo", "pallet-template", diff --git a/bin/node-template/node/src/chain_spec.rs b/bin/node-template/node/src/chain_spec.rs index 9bdfea3b78..64b8400507 100644 --- a/bin/node-template/node/src/chain_spec.rs +++ b/bin/node-template/node/src/chain_spec.rs @@ -1,7 +1,7 @@ use sp_core::{Pair, Public, sr25519}; use node_template_runtime::{ AccountId, AuraConfig, BalancesConfig, GenesisConfig, GrandpaConfig, - IndicesConfig, SudoConfig, SystemConfig, WASM_BINARY, Signature + SudoConfig, SystemConfig, WASM_BINARY, Signature }; use sp_consensus_aura::sr25519::{AuthorityId as AuraId}; use grandpa_primitives::{AuthorityId as GrandpaId}; @@ -127,21 +127,18 @@ fn testnet_genesis(initial_authorities: Vec<(AuraId, GrandpaId)>, code: WASM_BINARY.to_vec(), changes_trie_config: Default::default(), }), - indices: Some(IndicesConfig { - indices: vec![], - }), balances: Some(BalancesConfig { balances: endowed_accounts.iter().cloned().map(|k|(k, 1 << 60)).collect(), }), - sudo: Some(SudoConfig { - key: root_key, - }), aura: Some(AuraConfig { authorities: initial_authorities.iter().map(|x| (x.0.clone())).collect(), }), grandpa: Some(GrandpaConfig { authorities: initial_authorities.iter().map(|x| (x.1.clone(), 1)).collect(), }), + sudo: Some(SudoConfig { + key: root_key, + }), } } diff --git a/bin/node-template/runtime/Cargo.toml b/bin/node-template/runtime/Cargo.toml index b5a89febce..671123016e 100644 --- a/bin/node-template/runtime/Cargo.toml +++ b/bin/node-template/runtime/Cargo.toml @@ -14,7 +14,6 @@ aura = { version = "2.0.0-dev", default-features = false, package = "pallet-aura balances = { version = "2.0.0-dev", default-features = false, package = "pallet-balances", path = "../../../frame/balances" } frame-support = { version = "2.0.0-dev", default-features = false, path = "../../../frame/support" } grandpa = { version = "2.0.0-dev", default-features = false, package = "pallet-grandpa", path = "../../../frame/grandpa" } -indices = { version = "2.0.0-dev", default-features = false, package = "pallet-indices", path = "../../../frame/indices" } randomness-collective-flip = { version = "2.0.0-dev", default-features = false, package = "pallet-randomness-collective-flip", path = "../../../frame/randomness-collective-flip" } sudo = { version = "2.0.0-dev", default-features = false, package = "pallet-sudo", path = "../../../frame/sudo" } system = { version = "2.0.0-dev", default-features = false, package = "frame-system", path = "../../../frame/system" } @@ -49,7 +48,6 @@ std = [ "frame-executive/std", "frame-support/std", "grandpa/std", - "indices/std", "randomness-collective-flip/std", "serde", "sp-api/std", diff --git a/bin/node-template/runtime/src/lib.rs b/bin/node-template/runtime/src/lib.rs index afc18177ce..2bc4c27450 100644 --- a/bin/node-template/runtime/src/lib.rs +++ b/bin/node-template/runtime/src/lib.rs @@ -15,7 +15,7 @@ use sp_runtime::{ impl_opaque_keys, MultiSignature, }; use sp_runtime::traits::{ - BlakeTwo256, Block as BlockT, StaticLookup, Verify, ConvertInto, IdentifyAccount + BlakeTwo256, Block as BlockT, IdentityLookup, Verify, ConvertInto, IdentifyAccount }; use sp_api::impl_runtime_apis; use sp_consensus_aura::sr25519::AuthorityId as AuraId; @@ -132,7 +132,7 @@ impl system::Trait for Runtime { /// The aggregated dispatch type that is available for extrinsics. type Call = Call; /// The lookup mechanism to get account ID from whatever is passed in dispatchers. - type Lookup = Indices; + type Lookup = IdentityLookup; /// The index type for storing how many extrinsics an account has signed. type Index = Index; /// The index type for blocks. @@ -177,23 +177,6 @@ impl grandpa::Trait for Runtime { type Event = Event; } -parameter_types! { - /// How much an index costs. - pub const IndexDeposit: u128 = 100; -} - -impl indices::Trait for Runtime { - /// The type for recording indexing into the account enumeration. If this ever overflows, there - /// will be problems! - type AccountIndex = AccountIndex; - /// The ubiquitous event type. - type Event = Event; - /// The currency type. - type Currency = Balances; - /// How much an index costs. - type Deposit = IndexDeposit; -} - parameter_types! { pub const MinimumPeriod: u64 = SLOT_DURATION / 2; } @@ -250,21 +233,20 @@ construct_runtime!( UncheckedExtrinsic = UncheckedExtrinsic { System: system::{Module, Call, Config, Storage, Event}, + RandomnessCollectiveFlip: randomness_collective_flip::{Module, Call, Storage}, Timestamp: timestamp::{Module, Call, Storage, Inherent}, Aura: aura::{Module, Config, Inherent(Timestamp)}, Grandpa: grandpa::{Module, Call, Storage, Config, Event}, - Indices: indices::{Module, Call, Storage, Event, Config}, Balances: balances::{Module, Call, Storage, Config, Event}, TransactionPayment: transaction_payment::{Module, Storage}, Sudo: sudo::{Module, Call, Config, Storage, Event}, // Used for the module template in `./template.rs` TemplateModule: template::{Module, Call, Storage, Event}, - RandomnessCollectiveFlip: randomness_collective_flip::{Module, Call, Storage}, } ); /// The address format for describing accounts. -pub type Address = ::Source; +pub type Address = AccountId; /// Block header type as expected by this runtime. pub type Header = generic::Header; /// Block type as expected by this runtime. diff --git a/frame/indices/src/lib.rs b/frame/indices/src/lib.rs index d59a501793..95ac6cf752 100644 --- a/frame/indices/src/lib.rs +++ b/frame/indices/src/lib.rs @@ -264,7 +264,7 @@ impl StaticLookup for Module { type Source = address::Address; type Target = T::AccountId; - fn lookup(a: Self::Source) -> Result { + fn lookup(a: Self::Source) -> Result { Self::lookup_address(a).ok_or(LookupError) } -- GitLab From 88b03c92fe9f95589b579330ecf1d1a5c3e2f238 Mon Sep 17 00:00:00 2001 From: Nikolay Volf Date: Tue, 25 Feb 2020 19:58:24 +0300 Subject: [PATCH 041/301] Fix documentation for "BlockBuilder::push_trusted" (#5051) * fix doc * rephrase --- client/block-builder/src/lib.rs | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/client/block-builder/src/lib.rs b/client/block-builder/src/lib.rs index 9bc14cb6e9..a93ad13783 100644 --- a/client/block-builder/src/lib.rs +++ b/client/block-builder/src/lib.rs @@ -131,8 +131,7 @@ where /// Push onto the block's list of extrinsics. /// - /// This will treat incoming extrinsic `xt` as untrusted and perform additional checks - /// (currenty checking signature). + /// This will treat incoming extrinsic `xt` as trusted and skip signature check (for signed transactions). pub fn push_trusted(&mut self, xt: ::Extrinsic) -> Result<(), ApiErrorFor> { self.push_internal(xt, true) } -- GitLab From 504478a8017dba69d49987369bba9df82b8408b3 Mon Sep 17 00:00:00 2001 From: Benjamin Kampmann Date: Tue, 25 Feb 2020 20:02:57 +0100 Subject: [PATCH 042/301] do not check unleash on every PR, only master and tags (#5054) * do not check unleash on every PR, only master and tags * move scripts folder * add signed-tag check to CI * remove publish-to-crates-io dependencies Co-authored-by: s3krit --- .gitlab-ci.yml | 26 ++++++++++++++----- .maintain/gitlab/check_signed.sh | 16 ++++++++++++ {scripts => .maintain}/gitlab/lib.sh | 0 .../gitlab/publish_draft_release.sh | 11 -------- 4 files changed, 36 insertions(+), 17 deletions(-) create mode 100755 .maintain/gitlab/check_signed.sh rename {scripts => .maintain}/gitlab/lib.sh (100%) rename {scripts => .maintain}/gitlab/publish_draft_release.sh (86%) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 1fa4a6dadb..bc7ce84a80 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -19,7 +19,7 @@ # script: # - echo "List of shell commands to run in your job" # - echo "You can also just specify a script here, like so:" -# - ./scripts/gitlab/my_amazing_script.sh +# - ./.maintain/gitlab/my_amazing_script.sh stages: - test @@ -104,6 +104,16 @@ check-runtime: interruptible: true allow_failure: true +check-signed-tag: + stage: test + image: parity/tools:latest + <<: *kubernetes-build + only: + - tags + - /^v[0-9]+\.[0-9]+\.[0-9]+.*$/ + script: + - ./.maintain/gitlab/check_signed.sh + allow_failure: false check-line-width: stage: test @@ -177,7 +187,14 @@ test-dependency-rules: - $DEPLOY_TAG script: - .maintain/ensure-deps.sh - # FIXME set to release + +unleash-check: + stage: test + <<: *docker-env + only: + - master + - tags + script: - cargo install cargo-unleash ${CARGO_UNLEASH_INSTALL_PARAMS} - cargo unleash check ${CARGO_UNLEASH_PKG_DEF} @@ -552,16 +569,13 @@ publish-draft-release: - tags - /^v[0-9]+\.[0-9]+\.[0-9]+.*$/ script: - - ./scripts/gitlab/publish_draft_release.sh + - ./.maintain/gitlab/publish_draft_release.sh interruptible: true allow_failure: true publish-to-crates-io: stage: publish <<: *docker-env - dependencies: - - build-linux-substrate - - test-dependency-rules only: - tags - /^v[0-9]+\.[0-9]+\.[0-9]+.*$/ diff --git a/.maintain/gitlab/check_signed.sh b/.maintain/gitlab/check_signed.sh new file mode 100755 index 0000000000..7c4cc47bab --- /dev/null +++ b/.maintain/gitlab/check_signed.sh @@ -0,0 +1,16 @@ +#!/usr/bin/env bash + +# shellcheck source=lib.sh +source "$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )/lib.sh" + +version="$CI_COMMIT_TAG" + +echo '[+] Checking tag has been signed' +check_tag "paritytech/substrate" "$version" +case $? in + 0) echo '[+] Tag found and has been signed'; exit 0 + ;; + 1) echo '[!] Tag found but has not been signed. Aborting release.'; exit 1 + ;; + 2) echo '[!] Tag not found. Aborting release.'; exit 1 +esac diff --git a/scripts/gitlab/lib.sh b/.maintain/gitlab/lib.sh similarity index 100% rename from scripts/gitlab/lib.sh rename to .maintain/gitlab/lib.sh diff --git a/scripts/gitlab/publish_draft_release.sh b/.maintain/gitlab/publish_draft_release.sh similarity index 86% rename from scripts/gitlab/publish_draft_release.sh rename to .maintain/gitlab/publish_draft_release.sh index 463d8ee6c8..8566827a09 100755 --- a/scripts/gitlab/publish_draft_release.sh +++ b/.maintain/gitlab/publish_draft_release.sh @@ -14,17 +14,6 @@ version="$CI_COMMIT_TAG" last_version=$(git tag -l | sort -V | grep -B 1 -x "$version" | head -n 1) echo "[+] Version: $version; Previous version: $last_version" -# Check that a signed tag exists on github for this version -echo '[+] Checking tag has been signed' -#check_tag "paritytech/substrate" "$version" -case $? in - 0) echo '[+] Tag found and has been signed' - ;; - 1) echo '[!] Tag found but has not been signed. Aborting release.'; exit 1 - ;; - 2) echo '[!] Tag not found. Aborting release.'; exit -esac - all_changes="$(sanitised_git_logs "$last_version" "$version")" labelled_changes="" echo "[+] Iterating through $(wc -l <<< "$all_changes") changes to find labelled PRs" -- GitLab From 7c751574d8c53108e78440bfa5dffb80ab644972 Mon Sep 17 00:00:00 2001 From: Benjamin Kampmann Date: Tue, 25 Feb 2020 21:44:23 +0100 Subject: [PATCH 043/301] prepare version to alpha.1 (#5055) bump version to -alpha.1 --- Cargo.lock | 298 +++++++++--------- bin/node-template/node/Cargo.toml | 38 +-- bin/node-template/pallets/template/Cargo.toml | 12 +- bin/node-template/runtime/Cargo.toml | 48 +-- bin/node/cli/Cargo.toml | 108 +++---- bin/node/executor/Cargo.toml | 46 +-- bin/node/inspect/Cargo.toml | 14 +- bin/node/primitives/Cargo.toml | 8 +- bin/node/rpc-client/Cargo.toml | 6 +- bin/node/rpc/Cargo.toml | 34 +- bin/node/runtime/Cargo.toml | 104 +++--- bin/node/testing/Cargo.toml | 66 ++-- bin/node/transaction-factory/Cargo.toml | 22 +- bin/utils/chain-spec-builder/Cargo.toml | 8 +- bin/utils/subkey/Cargo.toml | 18 +- client/Cargo.toml | 36 +-- client/api/Cargo.toml | 32 +- client/authority-discovery/Cargo.toml | 20 +- client/basic-authorship/Cargo.toml | 26 +- client/block-builder/Cargo.toml | 18 +- client/chain-spec/Cargo.toml | 12 +- client/chain-spec/derive/Cargo.toml | 2 +- client/cli/Cargo.toml | 28 +- client/consensus/aura/Cargo.toml | 44 +-- client/consensus/babe/Cargo.toml | 52 +-- client/consensus/babe/rpc/Cargo.toml | 24 +- client/consensus/epochs/Cargo.toml | 10 +- client/consensus/manual-seal/Cargo.toml | 20 +- client/consensus/pow/Cargo.toml | 22 +- client/consensus/slots/Cargo.toml | 20 +- client/consensus/uncles/Cargo.toml | 14 +- client/db/Cargo.toml | 24 +- client/executor/Cargo.toml | 28 +- client/executor/common/Cargo.toml | 12 +- client/executor/runtime-test/Cargo.toml | 12 +- client/executor/wasmi/Cargo.toml | 12 +- client/executor/wasmtime/Cargo.toml | 12 +- client/finality-grandpa/Cargo.toml | 42 +-- client/informant/Cargo.toml | 12 +- client/keystore/Cargo.toml | 6 +- client/network-gossip/Cargo.toml | 6 +- client/network/Cargo.toml | 26 +- client/network/test/Cargo.toml | 18 +- client/offchain/Cargo.toml | 22 +- client/peerset/Cargo.toml | 2 +- client/rpc-api/Cargo.toml | 12 +- client/rpc-servers/Cargo.toml | 4 +- client/rpc/Cargo.toml | 38 +-- client/service/Cargo.toml | 54 ++-- client/service/test/Cargo.toml | 14 +- client/state-db/Cargo.toml | 4 +- client/telemetry/Cargo.toml | 2 +- client/tracing/Cargo.toml | 4 +- client/transaction-pool/Cargo.toml | 18 +- client/transaction-pool/graph/Cargo.toml | 10 +- frame/assets/Cargo.toml | 14 +- frame/aura/Cargo.toml | 26 +- frame/authority-discovery/Cargo.toml | 22 +- frame/authorship/Cargo.toml | 18 +- frame/babe/Cargo.toml | 28 +- frame/balances/Cargo.toml | 18 +- frame/benchmarking/Cargo.toml | 10 +- frame/collective/Cargo.toml | 16 +- frame/contracts/Cargo.toml | 24 +- frame/contracts/common/Cargo.toml | 6 +- frame/contracts/rpc/Cargo.toml | 16 +- frame/contracts/rpc/runtime-api/Cargo.toml | 10 +- frame/democracy/Cargo.toml | 18 +- frame/elections-phragmen/Cargo.toml | 20 +- frame/elections/Cargo.toml | 16 +- frame/evm/Cargo.toml | 18 +- frame/example-offchain-worker/Cargo.toml | 14 +- frame/example/Cargo.toml | 16 +- frame/executive/Cargo.toml | 20 +- frame/finality-tracker/Cargo.toml | 18 +- frame/generic-asset/Cargo.toml | 14 +- frame/grandpa/Cargo.toml | 22 +- frame/identity/Cargo.toml | 18 +- frame/im-online/Cargo.toml | 22 +- frame/indices/Cargo.toml | 18 +- frame/membership/Cargo.toml | 14 +- frame/metadata/Cargo.toml | 6 +- frame/nicks/Cargo.toml | 16 +- frame/offences/Cargo.toml | 18 +- frame/randomness-collective-flip/Cargo.toml | 14 +- frame/recovery/Cargo.toml | 16 +- frame/scored-pool/Cargo.toml | 16 +- frame/session/Cargo.toml | 22 +- frame/society/Cargo.toml | 16 +- frame/staking/Cargo.toml | 32 +- frame/staking/reward-curve/Cargo.toml | 4 +- frame/sudo/Cargo.toml | 14 +- frame/support/Cargo.toml | 22 +- frame/support/procedural/Cargo.toml | 4 +- frame/support/procedural/tools/Cargo.toml | 4 +- .../procedural/tools/derive/Cargo.toml | 2 +- frame/support/test/Cargo.toml | 12 +- frame/system/Cargo.toml | 16 +- frame/system/rpc/runtime-api/Cargo.toml | 4 +- frame/timestamp/Cargo.toml | 22 +- frame/transaction-payment/Cargo.toml | 18 +- frame/transaction-payment/rpc/Cargo.toml | 14 +- .../rpc/runtime-api/Cargo.toml | 10 +- frame/treasury/Cargo.toml | 16 +- frame/utility/Cargo.toml | 18 +- frame/vesting/Cargo.toml | 18 +- primitives/allocator/Cargo.toml | 8 +- primitives/api/Cargo.toml | 14 +- primitives/api/proc-macro/Cargo.toml | 2 +- primitives/api/test/Cargo.toml | 12 +- primitives/application-crypto/Cargo.toml | 8 +- primitives/application-crypto/test/Cargo.toml | 8 +- primitives/arithmetic/Cargo.toml | 6 +- primitives/authority-discovery/Cargo.toml | 10 +- primitives/authorship/Cargo.toml | 8 +- primitives/block-builder/Cargo.toml | 10 +- primitives/blockchain/Cargo.toml | 10 +- primitives/consensus/aura/Cargo.toml | 14 +- primitives/consensus/babe/Cargo.toml | 16 +- primitives/consensus/common/Cargo.toml | 14 +- primitives/consensus/pow/Cargo.toml | 10 +- primitives/core/Cargo.toml | 14 +- primitives/debug-derive/Cargo.toml | 2 +- primitives/externalities/Cargo.toml | 6 +- primitives/finality-grandpa/Cargo.toml | 10 +- primitives/finality-tracker/Cargo.toml | 6 +- primitives/inherents/Cargo.toml | 6 +- primitives/io/Cargo.toml | 16 +- primitives/keyring/Cargo.toml | 6 +- primitives/offchain/Cargo.toml | 6 +- primitives/panic-handler/Cargo.toml | 2 +- primitives/phragmen/Cargo.toml | 10 +- primitives/rpc/Cargo.toml | 4 +- primitives/runtime-interface/Cargo.toml | 16 +- .../runtime-interface/proc-macro/Cargo.toml | 2 +- .../runtime-interface/test-wasm/Cargo.toml | 8 +- primitives/runtime-interface/test/Cargo.toml | 10 +- primitives/runtime/Cargo.toml | 14 +- primitives/sandbox/Cargo.toml | 10 +- primitives/serializer/Cargo.toml | 2 +- primitives/session/Cargo.toml | 10 +- primitives/staking/Cargo.toml | 6 +- primitives/state-machine/Cargo.toml | 10 +- primitives/std/Cargo.toml | 2 +- primitives/storage/Cargo.toml | 6 +- primitives/test-primitives/Cargo.toml | 6 +- primitives/timestamp/Cargo.toml | 10 +- primitives/transaction-pool/Cargo.toml | 6 +- primitives/trie/Cargo.toml | 6 +- primitives/version/Cargo.toml | 6 +- primitives/wasm-interface/Cargo.toml | 4 +- test-utils/Cargo.toml | 2 +- test-utils/client/Cargo.toml | 20 +- test-utils/runtime/Cargo.toml | 52 +-- test-utils/runtime/client/Cargo.toml | 14 +- .../runtime/transaction-pool/Cargo.toml | 8 +- utils/browser/Cargo.toml | 10 +- utils/build-script-utils/Cargo.toml | 2 +- utils/fork-tree/Cargo.toml | 2 +- utils/frame/benchmarking-cli/Cargo.toml | 16 +- utils/frame/rpc/support/Cargo.toml | 10 +- utils/frame/rpc/system/Cargo.toml | 18 +- utils/prometheus/Cargo.toml | 2 +- 163 files changed, 1471 insertions(+), 1471 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 56f960c796..b49fdbaf9e 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -424,7 +424,7 @@ dependencies = [ [[package]] name = "browser-utils" -version = "0.8.0-dev" +version = "0.8.0-alpha.1" dependencies = [ "chrono", "clear_on_drop", @@ -598,7 +598,7 @@ dependencies = [ [[package]] name = "chain-spec-builder" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" dependencies = [ "ansi_term 0.12.1", "node-cli", @@ -1442,14 +1442,14 @@ checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" [[package]] name = "fork-tree" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" dependencies = [ "parity-scale-codec", ] [[package]] name = "frame-benchmarking" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" dependencies = [ "parity-scale-codec", "sp-api", @@ -1460,7 +1460,7 @@ dependencies = [ [[package]] name = "frame-benchmarking-cli" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" dependencies = [ "frame-benchmarking", "parity-scale-codec", @@ -1475,7 +1475,7 @@ dependencies = [ [[package]] name = "frame-executive" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" dependencies = [ "frame-support", "frame-system", @@ -1493,7 +1493,7 @@ dependencies = [ [[package]] name = "frame-metadata" -version = "11.0.0-dev" +version = "11.0.0-alpha.1" dependencies = [ "parity-scale-codec", "serde", @@ -1503,7 +1503,7 @@ dependencies = [ [[package]] name = "frame-support" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" dependencies = [ "bitmask", "frame-metadata", @@ -1528,7 +1528,7 @@ dependencies = [ [[package]] name = "frame-support-procedural" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" dependencies = [ "frame-support-procedural-tools", "proc-macro2", @@ -1538,7 +1538,7 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" dependencies = [ "frame-support-procedural-tools-derive", "proc-macro-crate", @@ -1549,7 +1549,7 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools-derive" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" dependencies = [ "proc-macro2", "quote", @@ -1574,7 +1574,7 @@ dependencies = [ [[package]] name = "frame-system" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" dependencies = [ "criterion 0.2.11", "frame-support", @@ -1592,7 +1592,7 @@ dependencies = [ [[package]] name = "frame-system-rpc-runtime-api" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" dependencies = [ "parity-scale-codec", "sp-api", @@ -3342,7 +3342,7 @@ dependencies = [ [[package]] name = "node-cli" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" dependencies = [ "assert_cmd", "browser-utils", @@ -3413,7 +3413,7 @@ dependencies = [ [[package]] name = "node-executor" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" dependencies = [ "criterion 0.3.1", "frame-benchmarking", @@ -3446,7 +3446,7 @@ dependencies = [ [[package]] name = "node-inspect" -version = "0.8.0-dev" +version = "0.8.0-alpha.1" dependencies = [ "derive_more", "log 0.4.8", @@ -3462,7 +3462,7 @@ dependencies = [ [[package]] name = "node-primitives" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" dependencies = [ "pretty_assertions", "sp-core", @@ -3472,7 +3472,7 @@ dependencies = [ [[package]] name = "node-rpc" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" dependencies = [ "jsonrpc-core", "node-primitives", @@ -3495,7 +3495,7 @@ dependencies = [ [[package]] name = "node-rpc-client" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" dependencies = [ "env_logger 0.7.1", "futures 0.1.29", @@ -3508,7 +3508,7 @@ dependencies = [ [[package]] name = "node-runtime" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" dependencies = [ "frame-benchmarking", "frame-executive", @@ -3570,7 +3570,7 @@ dependencies = [ [[package]] name = "node-template" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" dependencies = [ "futures 0.3.4", "log 0.4.8", @@ -3598,7 +3598,7 @@ dependencies = [ [[package]] name = "node-template-runtime" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" dependencies = [ "frame-executive", "frame-support", @@ -3630,7 +3630,7 @@ dependencies = [ [[package]] name = "node-testing" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" dependencies = [ "criterion 0.3.1", "frame-support", @@ -3675,7 +3675,7 @@ dependencies = [ [[package]] name = "node-transaction-factory" -version = "0.8.0-dev" +version = "0.8.0-alpha.1" dependencies = [ "log 0.4.8", "parity-scale-codec", @@ -3849,7 +3849,7 @@ dependencies = [ [[package]] name = "pallet-assets" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" dependencies = [ "frame-support", "frame-system", @@ -3863,7 +3863,7 @@ dependencies = [ [[package]] name = "pallet-aura" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" dependencies = [ "frame-support", "frame-system", @@ -3885,7 +3885,7 @@ dependencies = [ [[package]] name = "pallet-authority-discovery" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" dependencies = [ "frame-support", "frame-system", @@ -3903,7 +3903,7 @@ dependencies = [ [[package]] name = "pallet-authorship" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" dependencies = [ "frame-support", "frame-system", @@ -3919,7 +3919,7 @@ dependencies = [ [[package]] name = "pallet-babe" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" dependencies = [ "frame-support", "frame-system", @@ -3944,7 +3944,7 @@ dependencies = [ [[package]] name = "pallet-balances" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" dependencies = [ "frame-benchmarking", "frame-support", @@ -3960,7 +3960,7 @@ dependencies = [ [[package]] name = "pallet-collective" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" dependencies = [ "frame-support", "frame-system", @@ -3976,7 +3976,7 @@ dependencies = [ [[package]] name = "pallet-contracts" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" dependencies = [ "assert_matches", "frame-support", @@ -4001,7 +4001,7 @@ dependencies = [ [[package]] name = "pallet-contracts-primitives" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" dependencies = [ "parity-scale-codec", "sp-runtime", @@ -4010,7 +4010,7 @@ dependencies = [ [[package]] name = "pallet-contracts-rpc" -version = "0.8.0-dev" +version = "0.8.0-alpha.1" dependencies = [ "jsonrpc-core", "jsonrpc-core-client", @@ -4029,7 +4029,7 @@ dependencies = [ [[package]] name = "pallet-contracts-rpc-runtime-api" -version = "0.8.0-dev" +version = "0.8.0-alpha.1" dependencies = [ "pallet-contracts-primitives", "parity-scale-codec", @@ -4040,7 +4040,7 @@ dependencies = [ [[package]] name = "pallet-democracy" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" dependencies = [ "frame-support", "frame-system", @@ -4057,7 +4057,7 @@ dependencies = [ [[package]] name = "pallet-elections" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" dependencies = [ "frame-support", "frame-system", @@ -4073,7 +4073,7 @@ dependencies = [ [[package]] name = "pallet-elections-phragmen" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" dependencies = [ "frame-support", "frame-system", @@ -4091,7 +4091,7 @@ dependencies = [ [[package]] name = "pallet-evm" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" dependencies = [ "evm", "frame-support", @@ -4111,7 +4111,7 @@ dependencies = [ [[package]] name = "pallet-example" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" dependencies = [ "frame-support", "frame-system", @@ -4126,7 +4126,7 @@ dependencies = [ [[package]] name = "pallet-example-offchain-worker" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" dependencies = [ "frame-support", "frame-system", @@ -4141,7 +4141,7 @@ dependencies = [ [[package]] name = "pallet-finality-tracker" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" dependencies = [ "frame-support", "frame-system", @@ -4158,7 +4158,7 @@ dependencies = [ [[package]] name = "pallet-generic-asset" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" dependencies = [ "frame-support", "frame-system", @@ -4172,7 +4172,7 @@ dependencies = [ [[package]] name = "pallet-grandpa" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" dependencies = [ "frame-support", "frame-system", @@ -4190,7 +4190,7 @@ dependencies = [ [[package]] name = "pallet-identity" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" dependencies = [ "enumflags2", "frame-benchmarking", @@ -4207,7 +4207,7 @@ dependencies = [ [[package]] name = "pallet-im-online" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" dependencies = [ "frame-support", "frame-system", @@ -4225,7 +4225,7 @@ dependencies = [ [[package]] name = "pallet-indices" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" dependencies = [ "frame-support", "frame-system", @@ -4241,7 +4241,7 @@ dependencies = [ [[package]] name = "pallet-membership" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" dependencies = [ "frame-support", "frame-system", @@ -4255,7 +4255,7 @@ dependencies = [ [[package]] name = "pallet-nicks" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" dependencies = [ "frame-support", "frame-system", @@ -4270,7 +4270,7 @@ dependencies = [ [[package]] name = "pallet-offences" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" dependencies = [ "frame-support", "frame-system", @@ -4286,7 +4286,7 @@ dependencies = [ [[package]] name = "pallet-randomness-collective-flip" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" dependencies = [ "frame-support", "frame-system", @@ -4300,7 +4300,7 @@ dependencies = [ [[package]] name = "pallet-recovery" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" dependencies = [ "enumflags2", "frame-support", @@ -4316,7 +4316,7 @@ dependencies = [ [[package]] name = "pallet-scored-pool" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" dependencies = [ "frame-support", "frame-system", @@ -4331,7 +4331,7 @@ dependencies = [ [[package]] name = "pallet-session" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" dependencies = [ "frame-support", "frame-system", @@ -4351,7 +4351,7 @@ dependencies = [ [[package]] name = "pallet-society" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" dependencies = [ "frame-support", "frame-system", @@ -4367,7 +4367,7 @@ dependencies = [ [[package]] name = "pallet-staking" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" dependencies = [ "frame-support", "frame-system", @@ -4390,7 +4390,7 @@ dependencies = [ [[package]] name = "pallet-staking-reward-curve" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -4401,7 +4401,7 @@ dependencies = [ [[package]] name = "pallet-sudo" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" dependencies = [ "frame-support", "frame-system", @@ -4415,7 +4415,7 @@ dependencies = [ [[package]] name = "pallet-template" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" dependencies = [ "frame-support", "frame-system", @@ -4428,7 +4428,7 @@ dependencies = [ [[package]] name = "pallet-timestamp" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" dependencies = [ "frame-benchmarking", "frame-support", @@ -4446,7 +4446,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" dependencies = [ "frame-support", "frame-system", @@ -4461,7 +4461,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" dependencies = [ "jsonrpc-core", "jsonrpc-core-client", @@ -4478,7 +4478,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc-runtime-api" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" dependencies = [ "frame-support", "parity-scale-codec", @@ -4491,7 +4491,7 @@ dependencies = [ [[package]] name = "pallet-treasury" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" dependencies = [ "frame-support", "frame-system", @@ -4506,7 +4506,7 @@ dependencies = [ [[package]] name = "pallet-utility" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" dependencies = [ "frame-support", "frame-system", @@ -4521,7 +4521,7 @@ dependencies = [ [[package]] name = "pallet-vesting" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" dependencies = [ "enumflags2", "frame-support", @@ -4987,7 +4987,7 @@ dependencies = [ [[package]] name = "prometheus-exporter" -version = "0.8.0-dev" +version = "0.8.0-alpha.1" dependencies = [ "async-std", "derive_more", @@ -5576,7 +5576,7 @@ dependencies = [ [[package]] name = "sc-authority-discovery" -version = "0.8.0-dev" +version = "0.8.0-alpha.1" dependencies = [ "bytes 0.5.4", "derive_more", @@ -5605,7 +5605,7 @@ dependencies = [ [[package]] name = "sc-basic-authorship" -version = "0.8.0-dev" +version = "0.8.0-alpha.1" dependencies = [ "futures 0.3.4", "log 0.4.8", @@ -5629,7 +5629,7 @@ dependencies = [ [[package]] name = "sc-block-builder" -version = "0.8.0-dev" +version = "0.8.0-alpha.1" dependencies = [ "parity-scale-codec", "sc-client-api", @@ -5644,7 +5644,7 @@ dependencies = [ [[package]] name = "sc-chain-spec" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" dependencies = [ "impl-trait-for-tuples", "sc-chain-spec-derive", @@ -5658,7 +5658,7 @@ dependencies = [ [[package]] name = "sc-chain-spec-derive" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -5668,7 +5668,7 @@ dependencies = [ [[package]] name = "sc-cli" -version = "0.8.0-dev" +version = "0.8.0-alpha.1" dependencies = [ "ansi_term 0.12.1", "app_dirs", @@ -5707,7 +5707,7 @@ dependencies = [ [[package]] name = "sc-client" -version = "0.8.0-dev" +version = "0.8.0-alpha.1" dependencies = [ "derive_more", "env_logger 0.7.1", @@ -5744,7 +5744,7 @@ dependencies = [ [[package]] name = "sc-client-api" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" dependencies = [ "derive_more", "fnv", @@ -5775,7 +5775,7 @@ dependencies = [ [[package]] name = "sc-client-db" -version = "0.8.0-dev" +version = "0.8.0-alpha.1" dependencies = [ "env_logger 0.7.1", "hash-db", @@ -5806,7 +5806,7 @@ dependencies = [ [[package]] name = "sc-consensus-aura" -version = "0.8.0-dev" +version = "0.8.0-alpha.1" dependencies = [ "derive_more", "env_logger 0.7.1", @@ -5845,7 +5845,7 @@ dependencies = [ [[package]] name = "sc-consensus-babe" -version = "0.8.0-dev" +version = "0.8.0-alpha.1" dependencies = [ "derive_more", "env_logger 0.7.1", @@ -5896,7 +5896,7 @@ dependencies = [ [[package]] name = "sc-consensus-babe-rpc" -version = "0.8.0-dev" +version = "0.8.0-alpha.1" dependencies = [ "derive_more", "futures 0.3.4", @@ -5921,7 +5921,7 @@ dependencies = [ [[package]] name = "sc-consensus-epochs" -version = "0.8.0-dev" +version = "0.8.0-alpha.1" dependencies = [ "fork-tree", "parity-scale-codec", @@ -5933,7 +5933,7 @@ dependencies = [ [[package]] name = "sc-consensus-manual-seal" -version = "0.8.0-dev" +version = "0.8.0-alpha.1" dependencies = [ "derive_more", "env_logger 0.7.1", @@ -5961,7 +5961,7 @@ dependencies = [ [[package]] name = "sc-consensus-pow" -version = "0.8.0-dev" +version = "0.8.0-alpha.1" dependencies = [ "derive_more", "futures 0.3.4", @@ -5981,7 +5981,7 @@ dependencies = [ [[package]] name = "sc-consensus-slots" -version = "0.8.0-dev" +version = "0.8.0-alpha.1" dependencies = [ "futures 0.3.4", "futures-timer 3.0.2", @@ -6002,7 +6002,7 @@ dependencies = [ [[package]] name = "sc-consensus-uncles" -version = "0.8.0-dev" +version = "0.8.0-alpha.1" dependencies = [ "log 0.4.8", "sc-client-api", @@ -6015,7 +6015,7 @@ dependencies = [ [[package]] name = "sc-executor" -version = "0.8.0-dev" +version = "0.8.0-alpha.1" dependencies = [ "assert_matches", "derive_more", @@ -6048,7 +6048,7 @@ dependencies = [ [[package]] name = "sc-executor-common" -version = "0.8.0-dev" +version = "0.8.0-alpha.1" dependencies = [ "derive_more", "log 0.4.8", @@ -6063,7 +6063,7 @@ dependencies = [ [[package]] name = "sc-executor-wasmi" -version = "0.8.0-dev" +version = "0.8.0-alpha.1" dependencies = [ "log 0.4.8", "parity-scale-codec", @@ -6078,7 +6078,7 @@ dependencies = [ [[package]] name = "sc-executor-wasmtime" -version = "0.8.0-dev" +version = "0.8.0-alpha.1" dependencies = [ "assert_matches", "log 0.4.8", @@ -6095,7 +6095,7 @@ dependencies = [ [[package]] name = "sc-finality-grandpa" -version = "0.8.0-dev" +version = "0.8.0-alpha.1" dependencies = [ "assert_matches", "env_logger 0.7.1", @@ -6136,7 +6136,7 @@ dependencies = [ [[package]] name = "sc-informant" -version = "0.8.0-dev" +version = "0.8.0-alpha.1" dependencies = [ "ansi_term 0.12.1", "futures 0.3.4", @@ -6152,7 +6152,7 @@ dependencies = [ [[package]] name = "sc-keystore" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" dependencies = [ "derive_more", "hex", @@ -6167,7 +6167,7 @@ dependencies = [ [[package]] name = "sc-network" -version = "0.8.0-dev" +version = "0.8.0-alpha.1" dependencies = [ "assert_matches", "async-std", @@ -6225,7 +6225,7 @@ dependencies = [ [[package]] name = "sc-network-gossip" -version = "0.8.0-dev" +version = "0.8.0-alpha.1" dependencies = [ "futures 0.3.4", "futures-timer 3.0.2", @@ -6267,7 +6267,7 @@ dependencies = [ [[package]] name = "sc-offchain" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" dependencies = [ "bytes 0.5.4", "env_logger 0.7.1", @@ -6298,7 +6298,7 @@ dependencies = [ [[package]] name = "sc-peerset" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" dependencies = [ "futures 0.3.4", "libp2p", @@ -6310,7 +6310,7 @@ dependencies = [ [[package]] name = "sc-rpc" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" dependencies = [ "assert_matches", "futures 0.1.29", @@ -6347,7 +6347,7 @@ dependencies = [ [[package]] name = "sc-rpc-api" -version = "0.8.0-dev" +version = "0.8.0-alpha.1" dependencies = [ "derive_more", "futures 0.3.4", @@ -6369,7 +6369,7 @@ dependencies = [ [[package]] name = "sc-rpc-server" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" dependencies = [ "jsonrpc-core", "jsonrpc-http-server", @@ -6396,7 +6396,7 @@ dependencies = [ [[package]] name = "sc-service" -version = "0.8.0-dev" +version = "0.8.0-alpha.1" dependencies = [ "derive_more", "exit-future", @@ -6469,7 +6469,7 @@ dependencies = [ [[package]] name = "sc-state-db" -version = "0.8.0-dev" +version = "0.8.0-alpha.1" dependencies = [ "env_logger 0.7.1", "log 0.4.8", @@ -6480,7 +6480,7 @@ dependencies = [ [[package]] name = "sc-telemetry" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" dependencies = [ "bytes 0.5.4", "futures 0.3.4", @@ -6501,7 +6501,7 @@ dependencies = [ [[package]] name = "sc-tracing" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" dependencies = [ "erased-serde", "log 0.4.8", @@ -6516,7 +6516,7 @@ dependencies = [ [[package]] name = "sc-transaction-graph" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" dependencies = [ "assert_matches", "criterion 0.3.1", @@ -6538,7 +6538,7 @@ dependencies = [ [[package]] name = "sc-transaction-pool" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" dependencies = [ "derive_more", "futures 0.3.4", @@ -6899,7 +6899,7 @@ checksum = "4bf77cb82ba8453b42b6ae1d692e4cdc92f9a47beaf89a847c8be83f4e328ad3" [[package]] name = "sp-allocator" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" dependencies = [ "derive_more", "log 0.4.8", @@ -6910,7 +6910,7 @@ dependencies = [ [[package]] name = "sp-api" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" dependencies = [ "hash-db", "parity-scale-codec", @@ -6925,7 +6925,7 @@ dependencies = [ [[package]] name = "sp-api-proc-macro" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" dependencies = [ "blake2-rfc", "proc-macro-crate", @@ -6953,7 +6953,7 @@ dependencies = [ [[package]] name = "sp-application-crypto" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" dependencies = [ "parity-scale-codec", "serde", @@ -6975,7 +6975,7 @@ dependencies = [ [[package]] name = "sp-arithmetic" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" dependencies = [ "criterion 0.3.1", "integer-sqrt", @@ -6990,7 +6990,7 @@ dependencies = [ [[package]] name = "sp-authority-discovery" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" dependencies = [ "parity-scale-codec", "sp-api", @@ -7001,7 +7001,7 @@ dependencies = [ [[package]] name = "sp-authorship" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" dependencies = [ "parity-scale-codec", "sp-inherents", @@ -7011,7 +7011,7 @@ dependencies = [ [[package]] name = "sp-block-builder" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" dependencies = [ "parity-scale-codec", "sp-api", @@ -7022,7 +7022,7 @@ dependencies = [ [[package]] name = "sp-blockchain" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" dependencies = [ "derive_more", "log 0.4.8", @@ -7037,7 +7037,7 @@ dependencies = [ [[package]] name = "sp-consensus" -version = "0.8.0-dev" +version = "0.8.0-alpha.1" dependencies = [ "derive_more", "futures 0.3.4", @@ -7059,7 +7059,7 @@ dependencies = [ [[package]] name = "sp-consensus-aura" -version = "0.8.0-dev" +version = "0.8.0-alpha.1" dependencies = [ "parity-scale-codec", "sp-api", @@ -7072,7 +7072,7 @@ dependencies = [ [[package]] name = "sp-consensus-babe" -version = "0.8.0-dev" +version = "0.8.0-alpha.1" dependencies = [ "parity-scale-codec", "schnorrkel", @@ -7087,7 +7087,7 @@ dependencies = [ [[package]] name = "sp-consensus-pow" -version = "0.8.0-dev" +version = "0.8.0-alpha.1" dependencies = [ "parity-scale-codec", "sp-api", @@ -7098,7 +7098,7 @@ dependencies = [ [[package]] name = "sp-core" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" dependencies = [ "base58", "blake2-rfc", @@ -7142,7 +7142,7 @@ dependencies = [ [[package]] name = "sp-debug-derive" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" dependencies = [ "proc-macro2", "quote", @@ -7151,7 +7151,7 @@ dependencies = [ [[package]] name = "sp-externalities" -version = "0.8.0-dev" +version = "0.8.0-alpha.1" dependencies = [ "environmental", "sp-std", @@ -7160,7 +7160,7 @@ dependencies = [ [[package]] name = "sp-finality-grandpa" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" dependencies = [ "parity-scale-codec", "serde", @@ -7172,7 +7172,7 @@ dependencies = [ [[package]] name = "sp-finality-tracker" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" dependencies = [ "parity-scale-codec", "sp-inherents", @@ -7181,7 +7181,7 @@ dependencies = [ [[package]] name = "sp-inherents" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" dependencies = [ "derive_more", "parity-scale-codec", @@ -7192,7 +7192,7 @@ dependencies = [ [[package]] name = "sp-io" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" dependencies = [ "hash-db", "libsecp256k1", @@ -7209,7 +7209,7 @@ dependencies = [ [[package]] name = "sp-keyring" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" dependencies = [ "lazy_static", "sp-core", @@ -7219,7 +7219,7 @@ dependencies = [ [[package]] name = "sp-offchain" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" dependencies = [ "sp-api", "sp-runtime", @@ -7227,7 +7227,7 @@ dependencies = [ [[package]] name = "sp-panic-handler" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" dependencies = [ "backtrace", "log 0.4.8", @@ -7235,7 +7235,7 @@ dependencies = [ [[package]] name = "sp-phragmen" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" dependencies = [ "rand 0.7.3", "serde", @@ -7247,7 +7247,7 @@ dependencies = [ [[package]] name = "sp-rpc" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" dependencies = [ "serde", "serde_json", @@ -7256,7 +7256,7 @@ dependencies = [ [[package]] name = "sp-runtime" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" dependencies = [ "impl-trait-for-tuples", "log 0.4.8", @@ -7276,7 +7276,7 @@ dependencies = [ [[package]] name = "sp-runtime-interface" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" dependencies = [ "parity-scale-codec", "primitive-types", @@ -7295,7 +7295,7 @@ dependencies = [ [[package]] name = "sp-runtime-interface-proc-macro" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" dependencies = [ "Inflector", "proc-macro-crate", @@ -7329,7 +7329,7 @@ dependencies = [ [[package]] name = "sp-sandbox" -version = "0.8.0-dev" +version = "0.8.0-alpha.1" dependencies = [ "assert_matches", "parity-scale-codec", @@ -7343,7 +7343,7 @@ dependencies = [ [[package]] name = "sp-serializer" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" dependencies = [ "serde", "serde_json", @@ -7351,7 +7351,7 @@ dependencies = [ [[package]] name = "sp-session" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" dependencies = [ "sp-api", "sp-core", @@ -7361,7 +7361,7 @@ dependencies = [ [[package]] name = "sp-staking" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" dependencies = [ "parity-scale-codec", "sp-runtime", @@ -7370,7 +7370,7 @@ dependencies = [ [[package]] name = "sp-state-machine" -version = "0.8.0-dev" +version = "0.8.0-alpha.1" dependencies = [ "hash-db", "hex-literal", @@ -7389,11 +7389,11 @@ dependencies = [ [[package]] name = "sp-std" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" [[package]] name = "sp-storage" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" dependencies = [ "impl-serde 0.2.3", "serde", @@ -7415,7 +7415,7 @@ dependencies = [ [[package]] name = "sp-timestamp" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" dependencies = [ "impl-trait-for-tuples", "parity-scale-codec", @@ -7428,7 +7428,7 @@ dependencies = [ [[package]] name = "sp-transaction-pool" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" dependencies = [ "derive_more", "futures 0.3.4", @@ -7441,7 +7441,7 @@ dependencies = [ [[package]] name = "sp-trie" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" dependencies = [ "criterion 0.2.11", "hash-db", @@ -7458,7 +7458,7 @@ dependencies = [ [[package]] name = "sp-version" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" dependencies = [ "impl-serde 0.2.3", "parity-scale-codec", @@ -7469,7 +7469,7 @@ dependencies = [ [[package]] name = "sp-wasm-interface" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" dependencies = [ "impl-trait-for-tuples", "parity-scale-codec", @@ -7575,7 +7575,7 @@ dependencies = [ [[package]] name = "subkey" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" dependencies = [ "clap", "derive_more", @@ -7617,11 +7617,11 @@ dependencies = [ [[package]] name = "substrate-build-script-utils" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" [[package]] name = "substrate-frame-rpc-support" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" dependencies = [ "frame-support", "frame-system", @@ -7637,7 +7637,7 @@ dependencies = [ [[package]] name = "substrate-frame-rpc-system" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" dependencies = [ "env_logger 0.7.1", "frame-system-rpc-runtime-api", @@ -7752,7 +7752,7 @@ dependencies = [ [[package]] name = "substrate-test-utils" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" [[package]] name = "substrate-wasm-builder" diff --git a/bin/node-template/node/Cargo.toml b/bin/node-template/node/Cargo.toml index c21d380d4b..4933b778db 100644 --- a/bin/node-template/node/Cargo.toml +++ b/bin/node-template/node/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "node-template" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" authors = ["Anonymous"] edition = "2018" license = "Unlicense" @@ -16,25 +16,25 @@ futures = "0.3.1" log = "0.4.8" structopt = "0.3.8" -sc-cli = { version = "0.8.0-dev", path = "../../../client/cli" } -sp-core = { version = "2.0.0-dev", path = "../../../primitives/core" } -sc-executor = { version = "0.8.0-dev", path = "../../../client/executor" } -sc-service = { version = "0.8.0-dev", path = "../../../client/service" } -sp-inherents = { version = "2.0.0-dev", path = "../../../primitives/inherents" } -sc-transaction-pool = { version = "2.0.0-dev", path = "../../../client/transaction-pool" } -sp-transaction-pool = { version = "2.0.0-dev", path = "../../../primitives/transaction-pool" } -sc-network = { version = "0.8.0-dev", path = "../../../client/network" } -sc-consensus-aura = { version = "0.8.0-dev", path = "../../../client/consensus/aura" } -sp-consensus-aura = { version = "0.8.0-dev", path = "../../../primitives/consensus/aura" } -sp-consensus = { version = "0.8.0-dev", path = "../../../primitives/consensus/common" } -grandpa = { version = "0.8.0-dev", package = "sc-finality-grandpa", path = "../../../client/finality-grandpa" } -grandpa-primitives = { version = "2.0.0-dev", package = "sp-finality-grandpa", path = "../../../primitives/finality-grandpa" } -sc-client = { version = "0.8.0-dev", path = "../../../client/" } -sp-runtime = { version = "2.0.0-dev", path = "../../../primitives/runtime" } -sc-basic-authorship = { path = "../../../client/basic-authorship" , version = "0.8.0-dev"} +sc-cli = { version = "0.8.0-alpha.1", path = "../../../client/cli" } +sp-core = { version = "2.0.0-alpha.1", path = "../../../primitives/core" } +sc-executor = { version = "0.8.0-alpha.1", path = "../../../client/executor" } +sc-service = { version = "0.8.0-alpha.1", path = "../../../client/service" } +sp-inherents = { version = "2.0.0-alpha.1", path = "../../../primitives/inherents" } +sc-transaction-pool = { version = "2.0.0-alpha.1", path = "../../../client/transaction-pool" } +sp-transaction-pool = { version = "2.0.0-alpha.1", path = "../../../primitives/transaction-pool" } +sc-network = { version = "0.8.0-alpha.1", path = "../../../client/network" } +sc-consensus-aura = { version = "0.8.0-alpha.1", path = "../../../client/consensus/aura" } +sp-consensus-aura = { version = "0.8.0-alpha.1", path = "../../../primitives/consensus/aura" } +sp-consensus = { version = "0.8.0-alpha.1", path = "../../../primitives/consensus/common" } +grandpa = { version = "0.8.0-alpha.1", package = "sc-finality-grandpa", path = "../../../client/finality-grandpa" } +grandpa-primitives = { version = "2.0.0-alpha.1", package = "sp-finality-grandpa", path = "../../../primitives/finality-grandpa" } +sc-client = { version = "0.8.0-alpha.1", path = "../../../client/" } +sp-runtime = { version = "2.0.0-alpha.1", path = "../../../primitives/runtime" } +sc-basic-authorship = { path = "../../../client/basic-authorship" , version = "0.8.0-alpha.1"} -node-template-runtime = { version = "2.0.0-dev", path = "../runtime" } +node-template-runtime = { version = "2.0.0-alpha.1", path = "../runtime" } [build-dependencies] vergen = "3.0.4" -build-script-utils = { version = "2.0.0-dev", package = "substrate-build-script-utils", path = "../../../utils/build-script-utils" } +build-script-utils = { version = "2.0.0-alpha.1", package = "substrate-build-script-utils", path = "../../../utils/build-script-utils" } diff --git a/bin/node-template/pallets/template/Cargo.toml b/bin/node-template/pallets/template/Cargo.toml index a2abe4c6e2..bd08787f1a 100644 --- a/bin/node-template/pallets/template/Cargo.toml +++ b/bin/node-template/pallets/template/Cargo.toml @@ -2,7 +2,7 @@ authors = ['Anonymous'] edition = '2018' name = 'pallet-template' -version = "2.0.0-dev" +version = "2.0.0-alpha.1" homepage = "https://substrate.dev" repository = "https://github.com/paritytech/substrate/" @@ -12,28 +12,28 @@ safe-mix = { default-features = false, version = '1.0.0' } [dependencies.frame-support] default-features = false -version = "2.0.0-dev" +version = "2.0.0-alpha.1" path = "../../../../frame/support" [dependencies.system] default-features = false package = 'frame-system' -version = "2.0.0-dev" +version = "2.0.0-alpha.1" path = "../../../../frame/system" [dev-dependencies.sp-core] default-features = false -version = "2.0.0-dev" +version = "2.0.0-alpha.1" path = "../../../../primitives/core" [dev-dependencies.sp-io] default-features = false -version = "2.0.0-dev" +version = "2.0.0-alpha.1" path = "../../../../primitives/io" [dev-dependencies.sp-runtime] default-features = false -version = "2.0.0-dev" +version = "2.0.0-alpha.1" path = "../../../../primitives/runtime" [features] diff --git a/bin/node-template/runtime/Cargo.toml b/bin/node-template/runtime/Cargo.toml index 671123016e..049953ecea 100644 --- a/bin/node-template/runtime/Cargo.toml +++ b/bin/node-template/runtime/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "node-template-runtime" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" authors = ["Anonymous"] edition = "2018" license = "Unlicense" @@ -10,31 +10,31 @@ repository = "https://github.com/paritytech/substrate/" [dependencies] codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } -aura = { version = "2.0.0-dev", default-features = false, package = "pallet-aura", path = "../../../frame/aura" } -balances = { version = "2.0.0-dev", default-features = false, package = "pallet-balances", path = "../../../frame/balances" } -frame-support = { version = "2.0.0-dev", default-features = false, path = "../../../frame/support" } -grandpa = { version = "2.0.0-dev", default-features = false, package = "pallet-grandpa", path = "../../../frame/grandpa" } -randomness-collective-flip = { version = "2.0.0-dev", default-features = false, package = "pallet-randomness-collective-flip", path = "../../../frame/randomness-collective-flip" } -sudo = { version = "2.0.0-dev", default-features = false, package = "pallet-sudo", path = "../../../frame/sudo" } -system = { version = "2.0.0-dev", default-features = false, package = "frame-system", path = "../../../frame/system" } -timestamp = { version = "2.0.0-dev", default-features = false, package = "pallet-timestamp", path = "../../../frame/timestamp" } -transaction-payment = { version = "2.0.0-dev", default-features = false, package = "pallet-transaction-payment", path = "../../../frame/transaction-payment" } -frame-executive = { version = "2.0.0-dev", default-features = false, path = "../../../frame/executive" } +aura = { version = "2.0.0-alpha.1", default-features = false, package = "pallet-aura", path = "../../../frame/aura" } +balances = { version = "2.0.0-alpha.1", default-features = false, package = "pallet-balances", path = "../../../frame/balances" } +frame-support = { version = "2.0.0-alpha.1", default-features = false, path = "../../../frame/support" } +grandpa = { version = "2.0.0-alpha.1", default-features = false, package = "pallet-grandpa", path = "../../../frame/grandpa" } +randomness-collective-flip = { version = "2.0.0-alpha.1", default-features = false, package = "pallet-randomness-collective-flip", path = "../../../frame/randomness-collective-flip" } +sudo = { version = "2.0.0-alpha.1", default-features = false, package = "pallet-sudo", path = "../../../frame/sudo" } +system = { version = "2.0.0-alpha.1", default-features = false, package = "frame-system", path = "../../../frame/system" } +timestamp = { version = "2.0.0-alpha.1", default-features = false, package = "pallet-timestamp", path = "../../../frame/timestamp" } +transaction-payment = { version = "2.0.0-alpha.1", default-features = false, package = "pallet-transaction-payment", path = "../../../frame/transaction-payment" } +frame-executive = { version = "2.0.0-alpha.1", default-features = false, path = "../../../frame/executive" } serde = { version = "1.0.101", optional = true, features = ["derive"] } -sp-api = { version = "2.0.0-dev", default-features = false, path = "../../../primitives/api" } -sp-block-builder = { path = "../../../primitives/block-builder", default-features = false, version = "2.0.0-dev"} -sp-consensus-aura = { version = "0.8.0-dev", default-features = false, path = "../../../primitives/consensus/aura" } -sp-core = { version = "2.0.0-dev", default-features = false, path = "../../../primitives/core" } -sp-inherents = { path = "../../../primitives/inherents", default-features = false, version = "2.0.0-dev"} -sp-io = { version = "2.0.0-dev", default-features = false, path = "../../../primitives/io" } -sp-offchain = { version = "2.0.0-dev", default-features = false, path = "../../../primitives/offchain" } -sp-runtime = { version = "2.0.0-dev", default-features = false, path = "../../../primitives/runtime" } -sp-session = { version = "2.0.0-dev", default-features = false, path = "../../../primitives/session" } -sp-std = { version = "2.0.0-dev", default-features = false, path = "../../../primitives/std" } -sp-transaction-pool = { version = "2.0.0-dev", default-features = false, path = "../../../primitives/transaction-pool" } -sp-version = { version = "2.0.0-dev", default-features = false, path = "../../../primitives/version" } +sp-api = { version = "2.0.0-alpha.1", default-features = false, path = "../../../primitives/api" } +sp-block-builder = { path = "../../../primitives/block-builder", default-features = false, version = "2.0.0-alpha.1"} +sp-consensus-aura = { version = "0.8.0-alpha.1", default-features = false, path = "../../../primitives/consensus/aura" } +sp-core = { version = "2.0.0-alpha.1", default-features = false, path = "../../../primitives/core" } +sp-inherents = { path = "../../../primitives/inherents", default-features = false, version = "2.0.0-alpha.1"} +sp-io = { version = "2.0.0-alpha.1", default-features = false, path = "../../../primitives/io" } +sp-offchain = { version = "2.0.0-alpha.1", default-features = false, path = "../../../primitives/offchain" } +sp-runtime = { version = "2.0.0-alpha.1", default-features = false, path = "../../../primitives/runtime" } +sp-session = { version = "2.0.0-alpha.1", default-features = false, path = "../../../primitives/session" } +sp-std = { version = "2.0.0-alpha.1", default-features = false, path = "../../../primitives/std" } +sp-transaction-pool = { version = "2.0.0-alpha.1", default-features = false, path = "../../../primitives/transaction-pool" } +sp-version = { version = "2.0.0-alpha.1", default-features = false, path = "../../../primitives/version" } -template = { version = "2.0.0-dev", default-features = false, path = "../pallets/template", package = "pallet-template" } +template = { version = "2.0.0-alpha.1", default-features = false, path = "../pallets/template", package = "pallet-template" } [build-dependencies] wasm-builder-runner = { version = "1.0.5", package = "substrate-wasm-builder-runner", path = "../../../utils/wasm-builder-runner" } diff --git a/bin/node/cli/Cargo.toml b/bin/node/cli/Cargo.toml index 7f17f1eaa6..1aa49414bd 100644 --- a/bin/node/cli/Cargo.toml +++ b/bin/node/cli/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "node-cli" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" authors = ["Parity Technologies "] description = "Substrate node implementation in Rust." build = "build.rs" @@ -42,68 +42,68 @@ structopt = { version = "0.3.8", optional = true } tracing = "0.1.10" # primitives -sp-authority-discovery = { version = "2.0.0-dev", path = "../../../primitives/authority-discovery" } -sp-consensus-babe = { version = "0.8.0-dev", path = "../../../primitives/consensus/babe" } -grandpa-primitives = { version = "2.0.0-dev", package = "sp-finality-grandpa", path = "../../../primitives/finality-grandpa" } -sp-core = { version = "2.0.0-dev", path = "../../../primitives/core" } -sp-runtime = { version = "2.0.0-dev", path = "../../../primitives/runtime" } -sp-timestamp = { version = "2.0.0-dev", default-features = false, path = "../../../primitives/timestamp" } -sp-finality-tracker = { version = "2.0.0-dev", default-features = false, path = "../../../primitives/finality-tracker" } -sp-inherents = { version = "2.0.0-dev", path = "../../../primitives/inherents" } -sp-keyring = { version = "2.0.0-dev", path = "../../../primitives/keyring" } -sp-io = { version = "2.0.0-dev", path = "../../../primitives/io" } -sp-consensus = { version = "0.8.0-dev", path = "../../../primitives/consensus/common" } +sp-authority-discovery = { version = "2.0.0-alpha.1", path = "../../../primitives/authority-discovery" } +sp-consensus-babe = { version = "0.8.0-alpha.1", path = "../../../primitives/consensus/babe" } +grandpa-primitives = { version = "2.0.0-alpha.1", package = "sp-finality-grandpa", path = "../../../primitives/finality-grandpa" } +sp-core = { version = "2.0.0-alpha.1", path = "../../../primitives/core" } +sp-runtime = { version = "2.0.0-alpha.1", path = "../../../primitives/runtime" } +sp-timestamp = { version = "2.0.0-alpha.1", default-features = false, path = "../../../primitives/timestamp" } +sp-finality-tracker = { version = "2.0.0-alpha.1", default-features = false, path = "../../../primitives/finality-tracker" } +sp-inherents = { version = "2.0.0-alpha.1", path = "../../../primitives/inherents" } +sp-keyring = { version = "2.0.0-alpha.1", path = "../../../primitives/keyring" } +sp-io = { version = "2.0.0-alpha.1", path = "../../../primitives/io" } +sp-consensus = { version = "0.8.0-alpha.1", path = "../../../primitives/consensus/common" } # client dependencies -sc-client-api = { version = "2.0.0-dev", path = "../../../client/api" } -sc-client = { version = "0.8.0-dev", path = "../../../client/" } -sc-chain-spec = { version = "2.0.0-dev", path = "../../../client/chain-spec" } -sc-transaction-pool = { version = "2.0.0-dev", path = "../../../client/transaction-pool" } -sp-transaction-pool = { version = "2.0.0-dev", path = "../../../primitives/transaction-pool" } -sc-network = { version = "0.8.0-dev", path = "../../../client/network" } -sc-consensus-babe = { version = "0.8.0-dev", path = "../../../client/consensus/babe" } -grandpa = { version = "0.8.0-dev", package = "sc-finality-grandpa", path = "../../../client/finality-grandpa" } -sc-client-db = { version = "0.8.0-dev", default-features = false, path = "../../../client/db" } -sc-offchain = { version = "2.0.0-dev", path = "../../../client/offchain" } -sc-rpc = { version = "2.0.0-dev", path = "../../../client/rpc" } -sc-basic-authorship = { version = "0.8.0-dev", path = "../../../client/basic-authorship" } -sc-service = { version = "0.8.0-dev", default-features = false, path = "../../../client/service" } -sc-tracing = { version = "2.0.0-dev", path = "../../../client/tracing" } -sc-telemetry = { version = "2.0.0-dev", path = "../../../client/telemetry" } -sc-authority-discovery = { version = "0.8.0-dev", path = "../../../client/authority-discovery" } +sc-client-api = { version = "2.0.0-alpha.1", path = "../../../client/api" } +sc-client = { version = "0.8.0-alpha.1", path = "../../../client/" } +sc-chain-spec = { version = "2.0.0-alpha.1", path = "../../../client/chain-spec" } +sc-transaction-pool = { version = "2.0.0-alpha.1", path = "../../../client/transaction-pool" } +sp-transaction-pool = { version = "2.0.0-alpha.1", path = "../../../primitives/transaction-pool" } +sc-network = { version = "0.8.0-alpha.1", path = "../../../client/network" } +sc-consensus-babe = { version = "0.8.0-alpha.1", path = "../../../client/consensus/babe" } +grandpa = { version = "0.8.0-alpha.1", package = "sc-finality-grandpa", path = "../../../client/finality-grandpa" } +sc-client-db = { version = "0.8.0-alpha.1", default-features = false, path = "../../../client/db" } +sc-offchain = { version = "2.0.0-alpha.1", path = "../../../client/offchain" } +sc-rpc = { version = "2.0.0-alpha.1", path = "../../../client/rpc" } +sc-basic-authorship = { version = "0.8.0-alpha.1", path = "../../../client/basic-authorship" } +sc-service = { version = "0.8.0-alpha.1", default-features = false, path = "../../../client/service" } +sc-tracing = { version = "2.0.0-alpha.1", path = "../../../client/tracing" } +sc-telemetry = { version = "2.0.0-alpha.1", path = "../../../client/telemetry" } +sc-authority-discovery = { version = "0.8.0-alpha.1", path = "../../../client/authority-discovery" } # frame dependencies -pallet-indices = { version = "2.0.0-dev", path = "../../../frame/indices" } -pallet-timestamp = { version = "2.0.0-dev", default-features = false, path = "../../../frame/timestamp" } -pallet-contracts = { version = "2.0.0-dev", path = "../../../frame/contracts" } -frame-system = { version = "2.0.0-dev", path = "../../../frame/system" } -pallet-balances = { version = "2.0.0-dev", path = "../../../frame/balances" } -pallet-transaction-payment = { version = "2.0.0-dev", path = "../../../frame/transaction-payment" } -frame-support = { version = "2.0.0-dev", default-features = false, path = "../../../frame/support" } -pallet-im-online = { version = "2.0.0-dev", default-features = false, path = "../../../frame/im-online" } -pallet-authority-discovery = { version = "2.0.0-dev", path = "../../../frame/authority-discovery" } +pallet-indices = { version = "2.0.0-alpha.1", path = "../../../frame/indices" } +pallet-timestamp = { version = "2.0.0-alpha.1", default-features = false, path = "../../../frame/timestamp" } +pallet-contracts = { version = "2.0.0-alpha.1", path = "../../../frame/contracts" } +frame-system = { version = "2.0.0-alpha.1", path = "../../../frame/system" } +pallet-balances = { version = "2.0.0-alpha.1", path = "../../../frame/balances" } +pallet-transaction-payment = { version = "2.0.0-alpha.1", path = "../../../frame/transaction-payment" } +frame-support = { version = "2.0.0-alpha.1", default-features = false, path = "../../../frame/support" } +pallet-im-online = { version = "2.0.0-alpha.1", default-features = false, path = "../../../frame/im-online" } +pallet-authority-discovery = { version = "2.0.0-alpha.1", path = "../../../frame/authority-discovery" } # node-specific dependencies -node-runtime = { version = "2.0.0-dev", path = "../runtime" } -node-rpc = { version = "2.0.0-dev", path = "../rpc" } -node-primitives = { version = "2.0.0-dev", path = "../primitives" } -node-executor = { version = "2.0.0-dev", path = "../executor" } +node-runtime = { version = "2.0.0-alpha.1", path = "../runtime" } +node-rpc = { version = "2.0.0-alpha.1", path = "../rpc" } +node-primitives = { version = "2.0.0-alpha.1", path = "../primitives" } +node-executor = { version = "2.0.0-alpha.1", path = "../executor" } # CLI-specific dependencies -sc-cli = { version = "0.8.0-dev", optional = true, path = "../../../client/cli" } -frame-benchmarking-cli = { version = "2.0.0-dev", optional = true, path = "../../../utils/frame/benchmarking-cli" } -node-transaction-factory = { version = "0.8.0-dev", optional = true, path = "../transaction-factory" } -node-inspect = { version = "0.8.0-dev", optional = true, path = "../inspect" } +sc-cli = { version = "0.8.0-alpha.1", optional = true, path = "../../../client/cli" } +frame-benchmarking-cli = { version = "2.0.0-alpha.1", optional = true, path = "../../../utils/frame/benchmarking-cli" } +node-transaction-factory = { version = "0.8.0-alpha.1", optional = true, path = "../transaction-factory" } +node-inspect = { version = "0.8.0-alpha.1", optional = true, path = "../inspect" } # WASM-specific dependencies wasm-bindgen = { version = "0.2.57", optional = true } wasm-bindgen-futures = { version = "0.4.7", optional = true } -browser-utils = { path = "../../../utils/browser", optional = true , version = "0.8.0-dev"} +browser-utils = { path = "../../../utils/browser", optional = true , version = "0.8.0-alpha.1"} [dev-dependencies] -sc-keystore = { version = "2.0.0-dev", path = "../../../client/keystore" } -sc-consensus-babe = { version = "0.8.0-dev", features = ["test-helpers"], path = "../../../client/consensus/babe" } -sc-consensus-epochs = { version = "0.8.0-dev", path = "../../../client/consensus/epochs" } +sc-keystore = { version = "2.0.0-alpha.1", path = "../../../client/keystore" } +sc-consensus-babe = { version = "0.8.0-alpha.1", features = ["test-helpers"], path = "../../../client/consensus/babe" } +sc-consensus-epochs = { version = "0.8.0-alpha.1", path = "../../../client/consensus/epochs" } sc-service-test = { version = "2.0.0-dev", path = "../../../client/service/test" } futures = "0.3.1" tempfile = "3.1.0" @@ -112,14 +112,14 @@ nix = "0.17" serde_json = "1.0" [build-dependencies] -build-script-utils = { version = "2.0.0-dev", package = "substrate-build-script-utils", path = "../../../utils/build-script-utils" } +build-script-utils = { version = "2.0.0-alpha.1", package = "substrate-build-script-utils", path = "../../../utils/build-script-utils" } structopt = { version = "0.3.8", optional = true } -node-transaction-factory = { version = "0.8.0-dev", optional = true, path = "../transaction-factory" } -node-inspect = { version = "0.8.0-dev", optional = true, path = "../inspect" } -frame-benchmarking-cli = { version = "2.0.0-dev", optional = true, path = "../../../utils/frame/benchmarking-cli" } +node-transaction-factory = { version = "0.8.0-alpha.1", optional = true, path = "../transaction-factory" } +node-inspect = { version = "0.8.0-alpha.1", optional = true, path = "../inspect" } +frame-benchmarking-cli = { version = "2.0.0-alpha.1", optional = true, path = "../../../utils/frame/benchmarking-cli" } [build-dependencies.sc-cli] -version = "0.8.0-dev" +version = "0.8.0-alpha.1" package = "sc-cli" path = "../../../client/cli" optional = true diff --git a/bin/node/executor/Cargo.toml b/bin/node/executor/Cargo.toml index 321ef3bec0..a4eacbb822 100644 --- a/bin/node/executor/Cargo.toml +++ b/bin/node/executor/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "node-executor" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" authors = ["Parity Technologies "] description = "Substrate node implementation in Rust." edition = "2018" @@ -10,32 +10,32 @@ repository = "https://github.com/paritytech/substrate/" [dependencies] codec = { package = "parity-scale-codec", version = "1.0.0" } -node-primitives = { version = "2.0.0-dev", path = "../primitives" } -node-runtime = { version = "2.0.0-dev", path = "../runtime" } -sc-executor = { version = "0.8.0-dev", path = "../../../client/executor" } -sp-core = { version = "2.0.0-dev", path = "../../../primitives/core" } -sp-io = { version = "2.0.0-dev", path = "../../../primitives/io" } -sp-state-machine = { version = "0.8.0-dev", path = "../../../primitives/state-machine" } -sp-trie = { version = "2.0.0-dev", path = "../../../primitives/trie" } +node-primitives = { version = "2.0.0-alpha.1", path = "../primitives" } +node-runtime = { version = "2.0.0-alpha.1", path = "../runtime" } +sc-executor = { version = "0.8.0-alpha.1", path = "../../../client/executor" } +sp-core = { version = "2.0.0-alpha.1", path = "../../../primitives/core" } +sp-io = { version = "2.0.0-alpha.1", path = "../../../primitives/io" } +sp-state-machine = { version = "0.8.0-alpha.1", path = "../../../primitives/state-machine" } +sp-trie = { version = "2.0.0-alpha.1", path = "../../../primitives/trie" } trie-root = "0.16.0" -frame-benchmarking = { version = "2.0.0-dev", path = "../../../frame/benchmarking" } +frame-benchmarking = { version = "2.0.0-alpha.1", path = "../../../frame/benchmarking" } [dev-dependencies] criterion = "0.3.0" -frame-support = { version = "2.0.0-dev", path = "../../../frame/support" } -frame-system = { version = "2.0.0-dev", path = "../../../frame/system" } -node-testing = { version = "2.0.0-dev", path = "../testing" } -pallet-balances = { version = "2.0.0-dev", path = "../../../frame/balances" } -pallet-contracts = { version = "2.0.0-dev", path = "../../../frame/contracts" } -pallet-grandpa = { version = "2.0.0-dev", path = "../../../frame/grandpa" } -pallet-im-online = { version = "2.0.0-dev", path = "../../../frame/im-online" } -pallet-indices = { version = "2.0.0-dev", path = "../../../frame/indices" } -pallet-session = { version = "2.0.0-dev", path = "../../../frame/session" } -pallet-timestamp = { version = "2.0.0-dev", path = "../../../frame/timestamp" } -pallet-transaction-payment = { version = "2.0.0-dev", path = "../../../frame/transaction-payment" } -pallet-treasury = { version = "2.0.0-dev", path = "../../../frame/treasury" } -sp-application-crypto = { version = "2.0.0-dev", path = "../../../primitives/application-crypto" } -sp-runtime = { version = "2.0.0-dev", path = "../../../primitives/runtime" } +frame-support = { version = "2.0.0-alpha.1", path = "../../../frame/support" } +frame-system = { version = "2.0.0-alpha.1", path = "../../../frame/system" } +node-testing = { version = "2.0.0-alpha.1", path = "../testing" } +pallet-balances = { version = "2.0.0-alpha.1", path = "../../../frame/balances" } +pallet-contracts = { version = "2.0.0-alpha.1", path = "../../../frame/contracts" } +pallet-grandpa = { version = "2.0.0-alpha.1", path = "../../../frame/grandpa" } +pallet-im-online = { version = "2.0.0-alpha.1", path = "../../../frame/im-online" } +pallet-indices = { version = "2.0.0-alpha.1", path = "../../../frame/indices" } +pallet-session = { version = "2.0.0-alpha.1", path = "../../../frame/session" } +pallet-timestamp = { version = "2.0.0-alpha.1", path = "../../../frame/timestamp" } +pallet-transaction-payment = { version = "2.0.0-alpha.1", path = "../../../frame/transaction-payment" } +pallet-treasury = { version = "2.0.0-alpha.1", path = "../../../frame/treasury" } +sp-application-crypto = { version = "2.0.0-alpha.1", path = "../../../primitives/application-crypto" } +sp-runtime = { version = "2.0.0-alpha.1", path = "../../../primitives/runtime" } substrate-test-client = { version = "2.0.0-dev", path = "../../../test-utils/client" } wabt = "0.9.2" diff --git a/bin/node/inspect/Cargo.toml b/bin/node/inspect/Cargo.toml index b512c458d8..353daf7a4f 100644 --- a/bin/node/inspect/Cargo.toml +++ b/bin/node/inspect/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "node-inspect" -version = "0.8.0-dev" +version = "0.8.0-alpha.1" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" @@ -11,10 +11,10 @@ repository = "https://github.com/paritytech/substrate/" codec = { package = "parity-scale-codec", version = "1.0.0" } derive_more = "0.99" log = "0.4.8" -sc-cli = { version = "0.8.0-dev", path = "../../../client/cli" } -sc-client-api = { version = "2.0.0-dev", path = "../../../client/api" } -sc-service = { version = "0.8.0-dev", default-features = false, path = "../../../client/service" } -sp-blockchain = { version = "2.0.0-dev", path = "../../../primitives/blockchain" } -sp-core = { version = "2.0.0-dev", path = "../../../primitives/core" } -sp-runtime = { version = "2.0.0-dev", path = "../../../primitives/runtime" } +sc-cli = { version = "0.8.0-alpha.1", path = "../../../client/cli" } +sc-client-api = { version = "2.0.0-alpha.1", path = "../../../client/api" } +sc-service = { version = "0.8.0-alpha.1", default-features = false, path = "../../../client/service" } +sp-blockchain = { version = "2.0.0-alpha.1", path = "../../../primitives/blockchain" } +sp-core = { version = "2.0.0-alpha.1", path = "../../../primitives/core" } +sp-runtime = { version = "2.0.0-alpha.1", path = "../../../primitives/runtime" } structopt = "0.3.8" diff --git a/bin/node/primitives/Cargo.toml b/bin/node/primitives/Cargo.toml index 79819614b3..d82fc49059 100644 --- a/bin/node/primitives/Cargo.toml +++ b/bin/node/primitives/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "node-primitives" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" @@ -8,11 +8,11 @@ homepage = "https://substrate.dev" repository = "https://github.com/paritytech/substrate/" [dependencies] -sp-core = { version = "2.0.0-dev", default-features = false, path = "../../../primitives/core" } -sp-runtime = { version = "2.0.0-dev", default-features = false, path = "../../../primitives/runtime" } +sp-core = { version = "2.0.0-alpha.1", default-features = false, path = "../../../primitives/core" } +sp-runtime = { version = "2.0.0-alpha.1", default-features = false, path = "../../../primitives/runtime" } [dev-dependencies] -sp-serializer = { version = "2.0.0-dev", path = "../../../primitives/serializer" } +sp-serializer = { version = "2.0.0-alpha.1", path = "../../../primitives/serializer" } pretty_assertions = "0.6.1" [features] diff --git a/bin/node/rpc-client/Cargo.toml b/bin/node/rpc-client/Cargo.toml index d9f35829a1..029f79695a 100644 --- a/bin/node/rpc-client/Cargo.toml +++ b/bin/node/rpc-client/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "node-rpc-client" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" @@ -13,5 +13,5 @@ futures = "0.1.29" hyper = "0.12.35" jsonrpc-core-client = { version = "14.0.3", features = ["http", "ws"] } log = "0.4.8" -node-primitives = { version = "2.0.0-dev", path = "../primitives" } -sc-rpc = { version = "2.0.0-dev", path = "../../../client/rpc" } +node-primitives = { version = "2.0.0-alpha.1", path = "../primitives" } +sc-rpc = { version = "2.0.0-alpha.1", path = "../../../client/rpc" } diff --git a/bin/node/rpc/Cargo.toml b/bin/node/rpc/Cargo.toml index a714c8a172..88dd8b7e82 100644 --- a/bin/node/rpc/Cargo.toml +++ b/bin/node/rpc/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "node-rpc" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" @@ -8,20 +8,20 @@ homepage = "https://substrate.dev" repository = "https://github.com/paritytech/substrate/" [dependencies] -sc-client = { version = "0.8.0-dev", path = "../../../client/" } +sc-client = { version = "0.8.0-alpha.1", path = "../../../client/" } jsonrpc-core = "14.0.3" -node-primitives = { version = "2.0.0-dev", path = "../primitives" } -node-runtime = { version = "2.0.0-dev", path = "../runtime" } -sp-runtime = { version = "2.0.0-dev", path = "../../../primitives/runtime" } -sp-api = { version = "2.0.0-dev", path = "../../../primitives/api" } -pallet-contracts-rpc = { version = "0.8.0-dev", path = "../../../frame/contracts/rpc/" } -pallet-transaction-payment-rpc = { version = "2.0.0-dev", path = "../../../frame/transaction-payment/rpc/" } -substrate-frame-rpc-system = { version = "2.0.0-dev", path = "../../../utils/frame/rpc/system" } -sp-transaction-pool = { version = "2.0.0-dev", path = "../../../primitives/transaction-pool" } -sc-consensus-babe = { version = "0.8.0-dev", path = "../../../client/consensus/babe" } -sc-consensus-babe-rpc = { version = "0.8.0-dev", path = "../../../client/consensus/babe/rpc" } -sp-consensus-babe = { version = "0.8.0-dev", path = "../../../primitives/consensus/babe" } -sc-keystore = { version = "2.0.0-dev", path = "../../../client/keystore" } -sc-consensus-epochs = { version = "0.8.0-dev", path = "../../../client/consensus/epochs" } -sp-consensus = { version = "0.8.0-dev", path = "../../../primitives/consensus/common" } -sp-blockchain = { version = "2.0.0-dev", path = "../../../primitives/blockchain" } +node-primitives = { version = "2.0.0-alpha.1", path = "../primitives" } +node-runtime = { version = "2.0.0-alpha.1", path = "../runtime" } +sp-runtime = { version = "2.0.0-alpha.1", path = "../../../primitives/runtime" } +sp-api = { version = "2.0.0-alpha.1", path = "../../../primitives/api" } +pallet-contracts-rpc = { version = "0.8.0-alpha.1", path = "../../../frame/contracts/rpc/" } +pallet-transaction-payment-rpc = { version = "2.0.0-alpha.1", path = "../../../frame/transaction-payment/rpc/" } +substrate-frame-rpc-system = { version = "2.0.0-alpha.1", path = "../../../utils/frame/rpc/system" } +sp-transaction-pool = { version = "2.0.0-alpha.1", path = "../../../primitives/transaction-pool" } +sc-consensus-babe = { version = "0.8.0-alpha.1", path = "../../../client/consensus/babe" } +sc-consensus-babe-rpc = { version = "0.8.0-alpha.1", path = "../../../client/consensus/babe/rpc" } +sp-consensus-babe = { version = "0.8.0-alpha.1", path = "../../../primitives/consensus/babe" } +sc-keystore = { version = "2.0.0-alpha.1", path = "../../../client/keystore" } +sc-consensus-epochs = { version = "0.8.0-alpha.1", path = "../../../client/consensus/epochs" } +sp-consensus = { version = "0.8.0-alpha.1", path = "../../../primitives/consensus/common" } +sp-blockchain = { version = "2.0.0-alpha.1", path = "../../../primitives/blockchain" } diff --git a/bin/node/runtime/Cargo.toml b/bin/node/runtime/Cargo.toml index ddb1f16898..6e2fd1fdb3 100644 --- a/bin/node/runtime/Cargo.toml +++ b/bin/node/runtime/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "node-runtime" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" authors = ["Parity Technologies "] edition = "2018" build = "build.rs" @@ -17,64 +17,64 @@ rustc-hex = { version = "2.0", optional = true } serde = { version = "1.0.102", optional = true } # primitives -sp-authority-discovery = { version = "2.0.0-dev", default-features = false, path = "../../../primitives/authority-discovery" } -sp-consensus-babe = { version = "0.8.0-dev", default-features = false, path = "../../../primitives/consensus/babe" } -sp-block-builder = { path = "../../../primitives/block-builder", default-features = false, version = "2.0.0-dev"} -sp-inherents = { version = "2.0.0-dev", default-features = false, path = "../../../primitives/inherents" } -node-primitives = { version = "2.0.0-dev", default-features = false, path = "../primitives" } -sp-offchain = { version = "2.0.0-dev", default-features = false, path = "../../../primitives/offchain" } -sp-core = { version = "2.0.0-dev", default-features = false, path = "../../../primitives/core" } -sp-std = { version = "2.0.0-dev", default-features = false, path = "../../../primitives/std" } -sp-api = { version = "2.0.0-dev", default-features = false, path = "../../../primitives/api" } -sp-runtime = { version = "2.0.0-dev", default-features = false, path = "../../../primitives/runtime" } -sp-staking = { version = "2.0.0-dev", default-features = false, path = "../../../primitives/staking" } -sp-keyring = { version = "2.0.0-dev", optional = true, path = "../../../primitives/keyring" } -sp-session = { version = "2.0.0-dev", default-features = false, path = "../../../primitives/session" } -sp-transaction-pool = { version = "2.0.0-dev", default-features = false, path = "../../../primitives/transaction-pool" } -sp-version = { version = "2.0.0-dev", default-features = false, path = "../../../primitives/version" } +sp-authority-discovery = { version = "2.0.0-alpha.1", default-features = false, path = "../../../primitives/authority-discovery" } +sp-consensus-babe = { version = "0.8.0-alpha.1", default-features = false, path = "../../../primitives/consensus/babe" } +sp-block-builder = { path = "../../../primitives/block-builder", default-features = false, version = "2.0.0-alpha.1"} +sp-inherents = { version = "2.0.0-alpha.1", default-features = false, path = "../../../primitives/inherents" } +node-primitives = { version = "2.0.0-alpha.1", default-features = false, path = "../primitives" } +sp-offchain = { version = "2.0.0-alpha.1", default-features = false, path = "../../../primitives/offchain" } +sp-core = { version = "2.0.0-alpha.1", default-features = false, path = "../../../primitives/core" } +sp-std = { version = "2.0.0-alpha.1", default-features = false, path = "../../../primitives/std" } +sp-api = { version = "2.0.0-alpha.1", default-features = false, path = "../../../primitives/api" } +sp-runtime = { version = "2.0.0-alpha.1", default-features = false, path = "../../../primitives/runtime" } +sp-staking = { version = "2.0.0-alpha.1", default-features = false, path = "../../../primitives/staking" } +sp-keyring = { version = "2.0.0-alpha.1", optional = true, path = "../../../primitives/keyring" } +sp-session = { version = "2.0.0-alpha.1", default-features = false, path = "../../../primitives/session" } +sp-transaction-pool = { version = "2.0.0-alpha.1", default-features = false, path = "../../../primitives/transaction-pool" } +sp-version = { version = "2.0.0-alpha.1", default-features = false, path = "../../../primitives/version" } # frame dependencies -frame-executive = { version = "2.0.0-dev", default-features = false, path = "../../../frame/executive" } -frame-benchmarking = { version = "2.0.0-dev", default-features = false, path = "../../../frame/benchmarking" } -frame-support = { version = "2.0.0-dev", default-features = false, path = "../../../frame/support" } -frame-system = { version = "2.0.0-dev", default-features = false, path = "../../../frame/system" } -frame-system-rpc-runtime-api = { version = "2.0.0-dev", default-features = false, path = "../../../frame/system/rpc/runtime-api/" } -pallet-authority-discovery = { version = "2.0.0-dev", default-features = false, path = "../../../frame/authority-discovery" } -pallet-authorship = { version = "2.0.0-dev", default-features = false, path = "../../../frame/authorship" } -pallet-babe = { version = "2.0.0-dev", default-features = false, path = "../../../frame/babe" } -pallet-balances = { version = "2.0.0-dev", default-features = false, path = "../../../frame/balances" } -pallet-collective = { version = "2.0.0-dev", default-features = false, path = "../../../frame/collective" } -pallet-contracts = { version = "2.0.0-dev", default-features = false, path = "../../../frame/contracts" } -pallet-contracts-primitives = { version = "2.0.0-dev", default-features = false, path = "../../../frame/contracts/common/" } -pallet-contracts-rpc-runtime-api = { version = "0.8.0-dev", default-features = false, path = "../../../frame/contracts/rpc/runtime-api/" } -pallet-democracy = { version = "2.0.0-dev", default-features = false, path = "../../../frame/democracy" } -pallet-elections-phragmen = { version = "2.0.0-dev", default-features = false, path = "../../../frame/elections-phragmen" } -pallet-finality-tracker = { version = "2.0.0-dev", default-features = false, path = "../../../frame/finality-tracker" } -pallet-grandpa = { version = "2.0.0-dev", default-features = false, path = "../../../frame/grandpa" } -pallet-im-online = { version = "2.0.0-dev", default-features = false, path = "../../../frame/im-online" } -pallet-indices = { version = "2.0.0-dev", default-features = false, path = "../../../frame/indices" } -pallet-identity = { version = "2.0.0-dev", default-features = false, path = "../../../frame/identity" } -pallet-membership = { version = "2.0.0-dev", default-features = false, path = "../../../frame/membership" } -pallet-offences = { version = "2.0.0-dev", default-features = false, path = "../../../frame/offences" } -pallet-randomness-collective-flip = { version = "2.0.0-dev", default-features = false, path = "../../../frame/randomness-collective-flip" } -pallet-recovery = { version = "2.0.0-dev", default-features = false, path = "../../../frame/recovery" } -pallet-session = { version = "2.0.0-dev", features = ["historical"], path = "../../../frame/session", default-features = false } -pallet-staking = { version = "2.0.0-dev", features = ["migrate"], path = "../../../frame/staking", default-features = false } -pallet-staking-reward-curve = { version = "2.0.0-dev", path = "../../../frame/staking/reward-curve" } -pallet-sudo = { version = "2.0.0-dev", default-features = false, path = "../../../frame/sudo" } -pallet-society = { version = "2.0.0-dev", default-features = false, path = "../../../frame/society" } -pallet-timestamp = { version = "2.0.0-dev", default-features = false, path = "../../../frame/timestamp" } -pallet-treasury = { version = "2.0.0-dev", default-features = false, path = "../../../frame/treasury" } -pallet-utility = { version = "2.0.0-dev", default-features = false, path = "../../../frame/utility" } -pallet-transaction-payment = { version = "2.0.0-dev", default-features = false, path = "../../../frame/transaction-payment" } -pallet-transaction-payment-rpc-runtime-api = { version = "2.0.0-dev", default-features = false, path = "../../../frame/transaction-payment/rpc/runtime-api/" } -pallet-vesting = { version = "2.0.0-dev", default-features = false, path = "../../../frame/vesting" } +frame-executive = { version = "2.0.0-alpha.1", default-features = false, path = "../../../frame/executive" } +frame-benchmarking = { version = "2.0.0-alpha.1", default-features = false, path = "../../../frame/benchmarking" } +frame-support = { version = "2.0.0-alpha.1", default-features = false, path = "../../../frame/support" } +frame-system = { version = "2.0.0-alpha.1", default-features = false, path = "../../../frame/system" } +frame-system-rpc-runtime-api = { version = "2.0.0-alpha.1", default-features = false, path = "../../../frame/system/rpc/runtime-api/" } +pallet-authority-discovery = { version = "2.0.0-alpha.1", default-features = false, path = "../../../frame/authority-discovery" } +pallet-authorship = { version = "2.0.0-alpha.1", default-features = false, path = "../../../frame/authorship" } +pallet-babe = { version = "2.0.0-alpha.1", default-features = false, path = "../../../frame/babe" } +pallet-balances = { version = "2.0.0-alpha.1", default-features = false, path = "../../../frame/balances" } +pallet-collective = { version = "2.0.0-alpha.1", default-features = false, path = "../../../frame/collective" } +pallet-contracts = { version = "2.0.0-alpha.1", default-features = false, path = "../../../frame/contracts" } +pallet-contracts-primitives = { version = "2.0.0-alpha.1", default-features = false, path = "../../../frame/contracts/common/" } +pallet-contracts-rpc-runtime-api = { version = "0.8.0-alpha.1", default-features = false, path = "../../../frame/contracts/rpc/runtime-api/" } +pallet-democracy = { version = "2.0.0-alpha.1", default-features = false, path = "../../../frame/democracy" } +pallet-elections-phragmen = { version = "2.0.0-alpha.1", default-features = false, path = "../../../frame/elections-phragmen" } +pallet-finality-tracker = { version = "2.0.0-alpha.1", default-features = false, path = "../../../frame/finality-tracker" } +pallet-grandpa = { version = "2.0.0-alpha.1", default-features = false, path = "../../../frame/grandpa" } +pallet-im-online = { version = "2.0.0-alpha.1", default-features = false, path = "../../../frame/im-online" } +pallet-indices = { version = "2.0.0-alpha.1", default-features = false, path = "../../../frame/indices" } +pallet-identity = { version = "2.0.0-alpha.1", default-features = false, path = "../../../frame/identity" } +pallet-membership = { version = "2.0.0-alpha.1", default-features = false, path = "../../../frame/membership" } +pallet-offences = { version = "2.0.0-alpha.1", default-features = false, path = "../../../frame/offences" } +pallet-randomness-collective-flip = { version = "2.0.0-alpha.1", default-features = false, path = "../../../frame/randomness-collective-flip" } +pallet-recovery = { version = "2.0.0-alpha.1", default-features = false, path = "../../../frame/recovery" } +pallet-session = { version = "2.0.0-alpha.1", features = ["historical"], path = "../../../frame/session", default-features = false } +pallet-staking = { version = "2.0.0-alpha.1", features = ["migrate"], path = "../../../frame/staking", default-features = false } +pallet-staking-reward-curve = { version = "2.0.0-alpha.1", path = "../../../frame/staking/reward-curve" } +pallet-sudo = { version = "2.0.0-alpha.1", default-features = false, path = "../../../frame/sudo" } +pallet-society = { version = "2.0.0-alpha.1", default-features = false, path = "../../../frame/society" } +pallet-timestamp = { version = "2.0.0-alpha.1", default-features = false, path = "../../../frame/timestamp" } +pallet-treasury = { version = "2.0.0-alpha.1", default-features = false, path = "../../../frame/treasury" } +pallet-utility = { version = "2.0.0-alpha.1", default-features = false, path = "../../../frame/utility" } +pallet-transaction-payment = { version = "2.0.0-alpha.1", default-features = false, path = "../../../frame/transaction-payment" } +pallet-transaction-payment-rpc-runtime-api = { version = "2.0.0-alpha.1", default-features = false, path = "../../../frame/transaction-payment/rpc/runtime-api/" } +pallet-vesting = { version = "2.0.0-alpha.1", default-features = false, path = "../../../frame/vesting" } [build-dependencies] wasm-builder-runner = { version = "1.0.5", package = "substrate-wasm-builder-runner", path = "../../../utils/wasm-builder-runner" } [dev-dependencies] -sp-io = { version = "2.0.0-dev", path = "../../../primitives/io" } +sp-io = { version = "2.0.0-alpha.1", path = "../../../primitives/io" } [features] default = ["std"] diff --git a/bin/node/testing/Cargo.toml b/bin/node/testing/Cargo.toml index 936ae4c52b..0187fc83be 100644 --- a/bin/node/testing/Cargo.toml +++ b/bin/node/testing/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "node-testing" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" authors = ["Parity Technologies "] description = "Test utilities for Substrate node." edition = "2018" @@ -10,47 +10,47 @@ repository = "https://github.com/paritytech/substrate/" publish = true [dependencies] -pallet-balances = { version = "2.0.0-dev", path = "../../../frame/balances" } -sc-client = { version = "0.8.0-dev", path = "../../../client/" } -sc-client-db = { version = "0.8.0-dev", path = "../../../client/db/", features = ["kvdb-rocksdb"] } -sc-client-api = { version = "2.0.0-dev", path = "../../../client/api/" } +pallet-balances = { version = "2.0.0-alpha.1", path = "../../../frame/balances" } +sc-client = { version = "0.8.0-alpha.1", path = "../../../client/" } +sc-client-db = { version = "0.8.0-alpha.1", path = "../../../client/db/", features = ["kvdb-rocksdb"] } +sc-client-api = { version = "2.0.0-alpha.1", path = "../../../client/api/" } codec = { package = "parity-scale-codec", version = "1.0.0" } -pallet-contracts = { version = "2.0.0-dev", path = "../../../frame/contracts" } -pallet-grandpa = { version = "2.0.0-dev", path = "../../../frame/grandpa" } -pallet-indices = { version = "2.0.0-dev", path = "../../../frame/indices" } -sp-keyring = { version = "2.0.0-dev", path = "../../../primitives/keyring" } -node-executor = { version = "2.0.0-dev", path = "../executor" } -node-primitives = { version = "2.0.0-dev", path = "../primitives" } -node-runtime = { version = "2.0.0-dev", path = "../runtime" } -sp-core = { version = "2.0.0-dev", path = "../../../primitives/core" } -sp-io = { version = "2.0.0-dev", path = "../../../primitives/io" } -frame-support = { version = "2.0.0-dev", path = "../../../frame/support" } -pallet-session = { version = "2.0.0-dev", path = "../../../frame/session" } -pallet-society = { version = "2.0.0-dev", path = "../../../frame/society" } -sp-runtime = { version = "2.0.0-dev", path = "../../../primitives/runtime" } -pallet-staking = { version = "2.0.0-dev", path = "../../../frame/staking" } -sc-executor = { version = "0.8.0-dev", path = "../../../client/executor", features = ["wasmtime"] } -sp-consensus = { version = "0.8.0-dev", path = "../../../primitives/consensus/common" } -frame-system = { version = "2.0.0-dev", path = "../../../frame/system" } +pallet-contracts = { version = "2.0.0-alpha.1", path = "../../../frame/contracts" } +pallet-grandpa = { version = "2.0.0-alpha.1", path = "../../../frame/grandpa" } +pallet-indices = { version = "2.0.0-alpha.1", path = "../../../frame/indices" } +sp-keyring = { version = "2.0.0-alpha.1", path = "../../../primitives/keyring" } +node-executor = { version = "2.0.0-alpha.1", path = "../executor" } +node-primitives = { version = "2.0.0-alpha.1", path = "../primitives" } +node-runtime = { version = "2.0.0-alpha.1", path = "../runtime" } +sp-core = { version = "2.0.0-alpha.1", path = "../../../primitives/core" } +sp-io = { version = "2.0.0-alpha.1", path = "../../../primitives/io" } +frame-support = { version = "2.0.0-alpha.1", path = "../../../frame/support" } +pallet-session = { version = "2.0.0-alpha.1", path = "../../../frame/session" } +pallet-society = { version = "2.0.0-alpha.1", path = "../../../frame/society" } +sp-runtime = { version = "2.0.0-alpha.1", path = "../../../primitives/runtime" } +pallet-staking = { version = "2.0.0-alpha.1", path = "../../../frame/staking" } +sc-executor = { version = "0.8.0-alpha.1", path = "../../../client/executor", features = ["wasmtime"] } +sp-consensus = { version = "0.8.0-alpha.1", path = "../../../primitives/consensus/common" } +frame-system = { version = "2.0.0-alpha.1", path = "../../../frame/system" } substrate-test-client = { version = "2.0.0-dev", path = "../../../test-utils/client" } -pallet-timestamp = { version = "2.0.0-dev", path = "../../../frame/timestamp" } -pallet-transaction-payment = { version = "2.0.0-dev", path = "../../../frame/transaction-payment" } -pallet-treasury = { version = "2.0.0-dev", path = "../../../frame/treasury" } +pallet-timestamp = { version = "2.0.0-alpha.1", path = "../../../frame/timestamp" } +pallet-transaction-payment = { version = "2.0.0-alpha.1", path = "../../../frame/transaction-payment" } +pallet-treasury = { version = "2.0.0-alpha.1", path = "../../../frame/treasury" } wabt = "0.9.2" -sp-api = { version = "2.0.0-dev", path = "../../../primitives/api" } -sp-finality-tracker = { version = "2.0.0-dev", default-features = false, path = "../../../primitives/finality-tracker" } -sp-timestamp = { version = "2.0.0-dev", default-features = false, path = "../../../primitives/timestamp" } -sp-block-builder = { version = "2.0.0-dev", path = "../../../primitives/block-builder" } -sp-inherents = { version = "2.0.0-dev", path = "../../../primitives/inherents" } -sp-blockchain = { version = "2.0.0-dev", path = "../../../primitives/blockchain" } +sp-api = { version = "2.0.0-alpha.1", path = "../../../primitives/api" } +sp-finality-tracker = { version = "2.0.0-alpha.1", default-features = false, path = "../../../primitives/finality-tracker" } +sp-timestamp = { version = "2.0.0-alpha.1", default-features = false, path = "../../../primitives/timestamp" } +sp-block-builder = { version = "2.0.0-alpha.1", path = "../../../primitives/block-builder" } +sp-inherents = { version = "2.0.0-alpha.1", path = "../../../primitives/inherents" } +sp-blockchain = { version = "2.0.0-alpha.1", path = "../../../primitives/blockchain" } log = "0.4.8" tempfile = "3.1.0" fs_extra = "1" [dev-dependencies] criterion = "0.3.0" -sc-cli = { version = "0.8.0-dev", path = "../../../client/cli" } -sc-service = { version = "0.8.0-dev", path = "../../../client/service", features = ["rocksdb"] } +sc-cli = { version = "0.8.0-alpha.1", path = "../../../client/cli" } +sc-service = { version = "0.8.0-alpha.1", path = "../../../client/service", features = ["rocksdb"] } [[bench]] name = "import" diff --git a/bin/node/transaction-factory/Cargo.toml b/bin/node/transaction-factory/Cargo.toml index 5d44c3a86a..b73f5b6582 100644 --- a/bin/node/transaction-factory/Cargo.toml +++ b/bin/node/transaction-factory/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "node-transaction-factory" -version = "0.8.0-dev" +version = "0.8.0-alpha.1" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" @@ -8,15 +8,15 @@ homepage = "https://substrate.dev" repository = "https://github.com/paritytech/substrate/" [dependencies] -sp-block-builder = { version = "2.0.0-dev", path = "../../../primitives/block-builder" } -sc-cli = { version = "0.8.0-dev", path = "../../../client/cli" } -sc-client-api = { version = "2.0.0-dev", path = "../../../client/api" } -sc-client = { version = "0.8.0-dev", path = "../../../client" } +sp-block-builder = { version = "2.0.0-alpha.1", path = "../../../primitives/block-builder" } +sc-cli = { version = "0.8.0-alpha.1", path = "../../../client/cli" } +sc-client-api = { version = "2.0.0-alpha.1", path = "../../../client/api" } +sc-client = { version = "0.8.0-alpha.1", path = "../../../client" } codec = { package = "parity-scale-codec", version = "1.0.0", features = ["derive"] } -sp-consensus = { version = "0.8.0-dev", path = "../../../primitives/consensus/common" } +sp-consensus = { version = "0.8.0-alpha.1", path = "../../../primitives/consensus/common" } log = "0.4.8" -sp-core = { version = "2.0.0-dev", path = "../../../primitives/core" } -sp-api = { version = "2.0.0-dev", path = "../../../primitives/api" } -sp-runtime = { version = "2.0.0-dev", path = "../../../primitives/runtime" } -sc-service = { version = "0.8.0-dev", path = "../../../client/service" } -sp-blockchain = { version = "2.0.0-dev", path = "../../../primitives/blockchain" } +sp-core = { version = "2.0.0-alpha.1", path = "../../../primitives/core" } +sp-api = { version = "2.0.0-alpha.1", path = "../../../primitives/api" } +sp-runtime = { version = "2.0.0-alpha.1", path = "../../../primitives/runtime" } +sc-service = { version = "0.8.0-alpha.1", path = "../../../client/service" } +sp-blockchain = { version = "2.0.0-alpha.1", path = "../../../primitives/blockchain" } diff --git a/bin/utils/chain-spec-builder/Cargo.toml b/bin/utils/chain-spec-builder/Cargo.toml index b211b308e1..328bc5e064 100644 --- a/bin/utils/chain-spec-builder/Cargo.toml +++ b/bin/utils/chain-spec-builder/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "chain-spec-builder" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" authors = ["Parity Technologies "] edition = "2018" build = "build.rs" @@ -10,8 +10,8 @@ repository = "https://github.com/paritytech/substrate/" [dependencies] ansi_term = "0.12.1" -sc-keystore = { version = "2.0.0-dev", path = "../../../client/keystore" } -node-cli = { version = "2.0.0-dev", path = "../../node/cli" } -sp-core = { version = "2.0.0-dev", path = "../../../primitives/core" } +sc-keystore = { version = "2.0.0-alpha.1", path = "../../../client/keystore" } +node-cli = { version = "2.0.0-alpha.1", path = "../../node/cli" } +sp-core = { version = "2.0.0-alpha.1", path = "../../../primitives/core" } rand = "0.7.2" structopt = "0.3.8" diff --git a/bin/utils/subkey/Cargo.toml b/bin/utils/subkey/Cargo.toml index 14e5cb4be0..49a57d7de0 100644 --- a/bin/utils/subkey/Cargo.toml +++ b/bin/utils/subkey/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "subkey" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" @@ -9,10 +9,10 @@ repository = "https://github.com/paritytech/substrate/" [dependencies] futures = "0.1.29" -sp-core = { version = "2.0.0-dev", path = "../../../primitives/core" } -node-runtime = { version = "2.0.0-dev", path = "../../node/runtime" } -node-primitives = { version = "2.0.0-dev", path = "../../node/primitives" } -sp-runtime = { version = "2.0.0-dev", path = "../../../primitives/runtime" } +sp-core = { version = "2.0.0-alpha.1", path = "../../../primitives/core" } +node-runtime = { version = "2.0.0-alpha.1", path = "../../node/runtime" } +node-primitives = { version = "2.0.0-alpha.1", path = "../../node/primitives" } +sp-runtime = { version = "2.0.0-alpha.1", path = "../../../primitives/runtime" } rand = "0.7.2" clap = "2.33.0" tiny-bip39 = "0.7" @@ -21,13 +21,13 @@ substrate-bip39 = "0.3.1" hex = "0.4.0" hex-literal = "0.2.1" codec = { package = "parity-scale-codec", version = "1.0.0" } -frame-system = { version = "2.0.0-dev", path = "../../../frame/system" } -pallet-balances = { version = "2.0.0-dev", path = "../../../frame/balances" } -pallet-transaction-payment = { version = "2.0.0-dev", path = "../../../frame/transaction-payment" } +frame-system = { version = "2.0.0-alpha.1", path = "../../../frame/system" } +pallet-balances = { version = "2.0.0-alpha.1", path = "../../../frame/balances" } +pallet-transaction-payment = { version = "2.0.0-alpha.1", path = "../../../frame/transaction-payment" } rpassword = "4.0.1" itertools = "0.8.2" derive_more = { version = "0.99.2" } -sc-rpc = { version = "2.0.0-dev", path = "../../../client/rpc" } +sc-rpc = { version = "2.0.0-alpha.1", path = "../../../client/rpc" } jsonrpc-core-client = { version = "14.0.3", features = ["http"] } hyper = "0.12.35" libp2p = "0.16.1" diff --git a/client/Cargo.toml b/client/Cargo.toml index b8a6efd05d..0ae03b56ef 100644 --- a/client/Cargo.toml +++ b/client/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "sc-client" -version = "0.8.0-dev" +version = "0.8.0-alpha.1" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" @@ -8,31 +8,31 @@ homepage = "https://substrate.dev" repository = "https://github.com/paritytech/substrate/" [dependencies] -sc-block-builder = { version = "0.8.0-dev", path = "block-builder" } -sc-client-api = { version = "2.0.0-dev", path = "api" } +sc-block-builder = { version = "0.8.0-alpha.1", path = "block-builder" } +sc-client-api = { version = "2.0.0-alpha.1", path = "api" } codec = { package = "parity-scale-codec", version = "1.0.0", features = ["derive"] } -sp-consensus = { version = "0.8.0-dev", path = "../primitives/consensus/common" } +sp-consensus = { version = "0.8.0-alpha.1", path = "../primitives/consensus/common" } derive_more = { version = "0.99.2" } -sc-executor = { version = "0.8.0-dev", path = "executor" } -sp-externalities = { version = "0.8.0-dev", path = "../primitives/externalities" } +sc-executor = { version = "0.8.0-alpha.1", path = "executor" } +sp-externalities = { version = "0.8.0-alpha.1", path = "../primitives/externalities" } fnv = { version = "1.0.6" } futures = { version = "0.3.1", features = ["compat"] } hash-db = { version = "0.15.2" } hex-literal = { version = "0.2.1" } -sp-inherents = { version = "2.0.0-dev", path = "../primitives/inherents" } -sp-keyring = { version = "2.0.0-dev", path = "../primitives/keyring" } +sp-inherents = { version = "2.0.0-alpha.1", path = "../primitives/inherents" } +sp-keyring = { version = "2.0.0-alpha.1", path = "../primitives/keyring" } kvdb = "0.4.0" log = { version = "0.4.8" } parking_lot = "0.10.0" -sp-core = { version = "2.0.0-dev", path = "../primitives/core" } -sp-std = { version = "2.0.0-dev", path = "../primitives/std" } -sp-version = { version = "2.0.0-dev", path = "../primitives/version" } -sp-api = { version = "2.0.0-dev", path = "../primitives/api" } -sp-runtime = { version = "2.0.0-dev", path = "../primitives/runtime" } -sp-blockchain = { version = "2.0.0-dev", path = "../primitives/blockchain" } -sp-state-machine = { version = "0.8.0-dev", path = "../primitives/state-machine" } -sc-telemetry = { version = "2.0.0-dev", path = "telemetry" } -sp-trie = { version = "2.0.0-dev", path = "../primitives/trie" } +sp-core = { version = "2.0.0-alpha.1", path = "../primitives/core" } +sp-std = { version = "2.0.0-alpha.1", path = "../primitives/std" } +sp-version = { version = "2.0.0-alpha.1", path = "../primitives/version" } +sp-api = { version = "2.0.0-alpha.1", path = "../primitives/api" } +sp-runtime = { version = "2.0.0-alpha.1", path = "../primitives/runtime" } +sp-blockchain = { version = "2.0.0-alpha.1", path = "../primitives/blockchain" } +sp-state-machine = { version = "0.8.0-alpha.1", path = "../primitives/state-machine" } +sc-telemetry = { version = "2.0.0-alpha.1", path = "telemetry" } +sp-trie = { version = "2.0.0-alpha.1", path = "../primitives/trie" } tracing = "0.1.10" [dev-dependencies] @@ -40,4 +40,4 @@ env_logger = "0.7.0" tempfile = "3.1.0" substrate-test-runtime-client = { version = "2.0.0-dev", path = "../test-utils/runtime/client" } kvdb-memorydb = "0.4.0" -sp-panic-handler = { version = "2.0.0-dev", path = "../primitives/panic-handler" } +sp-panic-handler = { version = "2.0.0-alpha.1", path = "../primitives/panic-handler" } diff --git a/client/api/Cargo.toml b/client/api/Cargo.toml index a848875029..6256a99bb8 100644 --- a/client/api/Cargo.toml +++ b/client/api/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "sc-client-api" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" @@ -9,29 +9,29 @@ repository = "https://github.com/paritytech/substrate/" [dependencies] codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } -sp-consensus = { version = "0.8.0-dev", path = "../../primitives/consensus/common" } +sp-consensus = { version = "0.8.0-alpha.1", path = "../../primitives/consensus/common" } derive_more = { version = "0.99.2" } -sc-executor = { version = "0.8.0-dev", path = "../executor" } -sp-externalities = { version = "0.8.0-dev", path = "../../primitives/externalities" } +sc-executor = { version = "0.8.0-alpha.1", path = "../executor" } +sp-externalities = { version = "0.8.0-alpha.1", path = "../../primitives/externalities" } fnv = { version = "1.0.6" } futures = { version = "0.3.1" } hash-db = { version = "0.15.2", default-features = false } -sp-blockchain = { version = "2.0.0-dev", path = "../../primitives/blockchain" } +sp-blockchain = { version = "2.0.0-alpha.1", path = "../../primitives/blockchain" } hex-literal = { version = "0.2.1" } -sp-inherents = { version = "2.0.0-dev", default-features = false, path = "../../primitives/inherents" } -sp-keyring = { version = "2.0.0-dev", path = "../../primitives/keyring" } +sp-inherents = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/inherents" } +sp-keyring = { version = "2.0.0-alpha.1", path = "../../primitives/keyring" } kvdb = "0.4.0" log = { version = "0.4.8" } parking_lot = "0.10.0" -sp-core = { version = "2.0.0-dev", default-features = false, path = "../../primitives/core" } -sp-std = { version = "2.0.0-dev", default-features = false, path = "../../primitives/std" } -sp-version = { version = "2.0.0-dev", default-features = false, path = "../../primitives/version" } -sp-api = { version = "2.0.0-dev", path = "../../primitives/api" } -sp-runtime = { version = "2.0.0-dev", default-features = false, path = "../../primitives/runtime" } -sp-state-machine = { version = "0.8.0-dev", path = "../../primitives/state-machine" } -sc-telemetry = { version = "2.0.0-dev", path = "../telemetry" } -sp-trie = { version = "2.0.0-dev", path = "../../primitives/trie" } -sp-transaction-pool = { version = "2.0.0-dev", path = "../../primitives/transaction-pool" } +sp-core = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/core" } +sp-std = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/std" } +sp-version = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/version" } +sp-api = { version = "2.0.0-alpha.1", path = "../../primitives/api" } +sp-runtime = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/runtime" } +sp-state-machine = { version = "0.8.0-alpha.1", path = "../../primitives/state-machine" } +sc-telemetry = { version = "2.0.0-alpha.1", path = "../telemetry" } +sp-trie = { version = "2.0.0-alpha.1", path = "../../primitives/trie" } +sp-transaction-pool = { version = "2.0.0-alpha.1", path = "../../primitives/transaction-pool" } [dev-dependencies] sp-test-primitives = { version = "2.0.0-dev", path = "../../primitives/test-primitives" } diff --git a/client/authority-discovery/Cargo.toml b/client/authority-discovery/Cargo.toml index 3ba2436e5d..95e0d78240 100644 --- a/client/authority-discovery/Cargo.toml +++ b/client/authority-discovery/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "sc-authority-discovery" -version = "0.8.0-dev" +version = "0.8.0-alpha.1" authors = ["Parity Technologies "] edition = "2018" build = "build.rs" @@ -21,18 +21,18 @@ libp2p = { version = "0.16.1", default-features = false, features = ["secp256k1" log = "0.4.8" prost = "0.6.1" rand = "0.7.2" -sc-client-api = { version = "2.0.0-dev", path = "../api" } -sc-keystore = { version = "2.0.0-dev", path = "../keystore" } -sc-network = { version = "0.8.0-dev", path = "../network" } +sc-client-api = { version = "2.0.0-alpha.1", path = "../api" } +sc-keystore = { version = "2.0.0-alpha.1", path = "../keystore" } +sc-network = { version = "0.8.0-alpha.1", path = "../network" } serde_json = "1.0.41" -sp-authority-discovery = { version = "2.0.0-dev", path = "../../primitives/authority-discovery" } -sp-blockchain = { version = "2.0.0-dev", path = "../../primitives/blockchain" } -sp-core = { version = "2.0.0-dev", path = "../../primitives/core" } -sp-runtime = { version = "2.0.0-dev", path = "../../primitives/runtime" } -sp-api = { version = "2.0.0-dev", path = "../../primitives/api" } +sp-authority-discovery = { version = "2.0.0-alpha.1", path = "../../primitives/authority-discovery" } +sp-blockchain = { version = "2.0.0-alpha.1", path = "../../primitives/blockchain" } +sp-core = { version = "2.0.0-alpha.1", path = "../../primitives/core" } +sp-runtime = { version = "2.0.0-alpha.1", path = "../../primitives/runtime" } +sp-api = { version = "2.0.0-alpha.1", path = "../../primitives/api" } [dev-dependencies] env_logger = "0.7.0" quickcheck = "0.9.0" -sc-peerset = { version = "2.0.0-dev", path = "../peerset" } +sc-peerset = { version = "2.0.0-alpha.1", path = "../peerset" } substrate-test-runtime-client = { version = "2.0.0-dev", path = "../../test-utils/runtime/client"} diff --git a/client/basic-authorship/Cargo.toml b/client/basic-authorship/Cargo.toml index 15a94def5f..971279297a 100644 --- a/client/basic-authorship/Cargo.toml +++ b/client/basic-authorship/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "sc-basic-authorship" -version = "0.8.0-dev" +version = "0.8.0-alpha.1" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" @@ -11,20 +11,20 @@ repository = "https://github.com/paritytech/substrate/" log = "0.4.8" futures = "0.3.1" codec = { package = "parity-scale-codec", version = "1.0.0" } -sp-api = { version = "2.0.0-dev", path = "../../primitives/api" } -sp-runtime = { version = "2.0.0-dev", path = "../../primitives/runtime" } -sp-core = { version = "2.0.0-dev", path = "../../primitives/core" } -sp-blockchain = { version = "2.0.0-dev", path = "../../primitives/blockchain" } -sc-client = { version = "0.8.0-dev", path = "../" } -sc-client-api = { version = "2.0.0-dev", path = "../api" } -sp-consensus = { version = "0.8.0-dev", path = "../../primitives/consensus/common" } -sp-inherents = { version = "2.0.0-dev", path = "../../primitives/inherents" } -sc-telemetry = { version = "2.0.0-dev", path = "../telemetry" } -sp-transaction-pool = { version = "2.0.0-dev", path = "../../primitives/transaction-pool" } -sc-block-builder = { version = "0.8.0-dev", path = "../block-builder" } +sp-api = { version = "2.0.0-alpha.1", path = "../../primitives/api" } +sp-runtime = { version = "2.0.0-alpha.1", path = "../../primitives/runtime" } +sp-core = { version = "2.0.0-alpha.1", path = "../../primitives/core" } +sp-blockchain = { version = "2.0.0-alpha.1", path = "../../primitives/blockchain" } +sc-client = { version = "0.8.0-alpha.1", path = "../" } +sc-client-api = { version = "2.0.0-alpha.1", path = "../api" } +sp-consensus = { version = "0.8.0-alpha.1", path = "../../primitives/consensus/common" } +sp-inherents = { version = "2.0.0-alpha.1", path = "../../primitives/inherents" } +sc-telemetry = { version = "2.0.0-alpha.1", path = "../telemetry" } +sp-transaction-pool = { version = "2.0.0-alpha.1", path = "../../primitives/transaction-pool" } +sc-block-builder = { version = "0.8.0-alpha.1", path = "../block-builder" } tokio-executor = { version = "0.2.0-alpha.6", features = ["blocking"] } [dev-dependencies] -sc-transaction-pool = { version = "2.0.0-dev", path = "../../client/transaction-pool" } +sc-transaction-pool = { version = "2.0.0-alpha.1", path = "../../client/transaction-pool" } substrate-test-runtime-client = { version = "2.0.0-dev", path = "../../test-utils/runtime/client" } parking_lot = "0.10.0" diff --git a/client/block-builder/Cargo.toml b/client/block-builder/Cargo.toml index f706265cab..94b7640d2f 100644 --- a/client/block-builder/Cargo.toml +++ b/client/block-builder/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "sc-block-builder" -version = "0.8.0-dev" +version = "0.8.0-alpha.1" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" @@ -8,12 +8,12 @@ homepage = "https://substrate.dev" repository = "https://github.com/paritytech/substrate/" [dependencies] -sp-state-machine = { version = "0.8.0-dev", path = "../../primitives/state-machine" } -sp-runtime = { version = "2.0.0-dev", path = "../../primitives/runtime" } -sp-api = { version = "2.0.0-dev", path = "../../primitives/api" } -sp-consensus = { version = "0.8.0-dev", path = "../../primitives/consensus/common" } -sp-blockchain = { version = "2.0.0-dev", path = "../../primitives/blockchain" } -sp-core = { version = "2.0.0-dev", path = "../../primitives/core" } -sp-block-builder = { version = "2.0.0-dev", path = "../../primitives/block-builder" } -sc-client-api = { version = "2.0.0-dev", path = "../api" } +sp-state-machine = { version = "0.8.0-alpha.1", path = "../../primitives/state-machine" } +sp-runtime = { version = "2.0.0-alpha.1", path = "../../primitives/runtime" } +sp-api = { version = "2.0.0-alpha.1", path = "../../primitives/api" } +sp-consensus = { version = "0.8.0-alpha.1", path = "../../primitives/consensus/common" } +sp-blockchain = { version = "2.0.0-alpha.1", path = "../../primitives/blockchain" } +sp-core = { version = "2.0.0-alpha.1", path = "../../primitives/core" } +sp-block-builder = { version = "2.0.0-alpha.1", path = "../../primitives/block-builder" } +sc-client-api = { version = "2.0.0-alpha.1", path = "../api" } codec = { package = "parity-scale-codec", version = "1.0.6", features = ["derive"] } diff --git a/client/chain-spec/Cargo.toml b/client/chain-spec/Cargo.toml index b2dee23ac5..e1fc4fbc20 100644 --- a/client/chain-spec/Cargo.toml +++ b/client/chain-spec/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "sc-chain-spec" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" @@ -8,11 +8,11 @@ homepage = "https://substrate.dev" repository = "https://github.com/paritytech/substrate/" [dependencies] -sc-chain-spec-derive = { version = "2.0.0-dev", path = "./derive" } +sc-chain-spec-derive = { version = "2.0.0-alpha.1", path = "./derive" } impl-trait-for-tuples = "0.1.3" -sc-network = { version = "0.8.0-dev", path = "../network" } -sp-core = { version = "2.0.0-dev", path = "../../primitives/core" } +sc-network = { version = "0.8.0-alpha.1", path = "../network" } +sp-core = { version = "2.0.0-alpha.1", path = "../../primitives/core" } serde = { version = "1.0.101", features = ["derive"] } serde_json = "1.0.41" -sp-runtime = { version = "2.0.0-dev", path = "../../primitives/runtime" } -sc-telemetry = { version = "2.0.0-dev", path = "../telemetry" } +sp-runtime = { version = "2.0.0-alpha.1", path = "../../primitives/runtime" } +sc-telemetry = { version = "2.0.0-alpha.1", path = "../telemetry" } diff --git a/client/chain-spec/derive/Cargo.toml b/client/chain-spec/derive/Cargo.toml index 9b23b71ab5..61fe7e9df0 100644 --- a/client/chain-spec/derive/Cargo.toml +++ b/client/chain-spec/derive/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "sc-chain-spec-derive" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" diff --git a/client/cli/Cargo.toml b/client/cli/Cargo.toml index 30c749ff85..9c72429638 100644 --- a/client/cli/Cargo.toml +++ b/client/cli/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "sc-cli" -version = "0.8.0-dev" +version = "0.8.0-alpha.1" authors = ["Parity Technologies "] description = "Substrate CLI interface." edition = "2018" @@ -23,21 +23,21 @@ tokio = { version = "0.2.9", features = [ "signal", "rt-core", "rt-threaded" ] } futures = "0.3.1" fdlimit = "0.1.1" serde_json = "1.0.41" -sc-informant = { version = "0.8.0-dev", path = "../informant" } -sp-panic-handler = { version = "2.0.0-dev", path = "../../primitives/panic-handler" } -sc-client-api = { version = "2.0.0-dev", path = "../api" } -sp-blockchain = { version = "2.0.0-dev", path = "../../primitives/blockchain" } -sc-network = { version = "0.8.0-dev", path = "../network" } -sp-runtime = { version = "2.0.0-dev", path = "../../primitives/runtime" } -sp-core = { version = "2.0.0-dev", path = "../../primitives/core" } -sc-service = { version = "0.8.0-dev", default-features = false, path = "../service" } -sp-state-machine = { version = "0.8.0-dev", path = "../../primitives/state-machine" } -sc-telemetry = { version = "2.0.0-dev", path = "../telemetry" } -prometheus-exporter = { path = "../../utils/prometheus" , version = "0.8.0-dev"} -sp-keyring = { version = "2.0.0-dev", path = "../../primitives/keyring" } +sc-informant = { version = "0.8.0-alpha.1", path = "../informant" } +sp-panic-handler = { version = "2.0.0-alpha.1", path = "../../primitives/panic-handler" } +sc-client-api = { version = "2.0.0-alpha.1", path = "../api" } +sp-blockchain = { version = "2.0.0-alpha.1", path = "../../primitives/blockchain" } +sc-network = { version = "0.8.0-alpha.1", path = "../network" } +sp-runtime = { version = "2.0.0-alpha.1", path = "../../primitives/runtime" } +sp-core = { version = "2.0.0-alpha.1", path = "../../primitives/core" } +sc-service = { version = "0.8.0-alpha.1", default-features = false, path = "../service" } +sp-state-machine = { version = "0.8.0-alpha.1", path = "../../primitives/state-machine" } +sc-telemetry = { version = "2.0.0-alpha.1", path = "../telemetry" } +prometheus-exporter = { path = "../../utils/prometheus" , version = "0.8.0-alpha.1"} +sp-keyring = { version = "2.0.0-alpha.1", path = "../../primitives/keyring" } names = "0.11.0" structopt = "0.3.8" -sc-tracing = { version = "2.0.0-dev", path = "../tracing" } +sc-tracing = { version = "2.0.0-alpha.1", path = "../tracing" } chrono = "0.4.10" parity-util-mem = { version = "0.5.1", default-features = false, features = ["primitive-types"] } diff --git a/client/consensus/aura/Cargo.toml b/client/consensus/aura/Cargo.toml index 24c42fe0fc..420b0e3005 100644 --- a/client/consensus/aura/Cargo.toml +++ b/client/consensus/aura/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "sc-consensus-aura" -version = "0.8.0-dev" +version = "0.8.0-alpha.1" authors = ["Parity Technologies "] description = "Aura consensus algorithm for substrate" edition = "2018" @@ -9,36 +9,36 @@ homepage = "https://substrate.dev" repository = "https://github.com/paritytech/substrate/" [dependencies] -sp-application-crypto = { version = "2.0.0-dev", path = "../../../primitives/application-crypto" } -sp-consensus-aura = { version = "0.8.0-dev", path = "../../../primitives/consensus/aura" } -sp-block-builder = { version = "2.0.0-dev", path = "../../../primitives/block-builder" } -sc-client = { version = "0.8.0-dev", path = "../../" } -sc-client-api = { version = "2.0.0-dev", path = "../../api" } +sp-application-crypto = { version = "2.0.0-alpha.1", path = "../../../primitives/application-crypto" } +sp-consensus-aura = { version = "0.8.0-alpha.1", path = "../../../primitives/consensus/aura" } +sp-block-builder = { version = "2.0.0-alpha.1", path = "../../../primitives/block-builder" } +sc-client = { version = "0.8.0-alpha.1", path = "../../" } +sc-client-api = { version = "2.0.0-alpha.1", path = "../../api" } codec = { package = "parity-scale-codec", version = "1.0.0" } -sp-consensus = { version = "0.8.0-dev", path = "../../../primitives/consensus/common" } +sp-consensus = { version = "0.8.0-alpha.1", path = "../../../primitives/consensus/common" } derive_more = "0.99.2" futures = "0.3.1" futures-timer = "3.0.1" -sp-inherents = { version = "2.0.0-dev", path = "../../../primitives/inherents" } -sc-keystore = { version = "2.0.0-dev", path = "../../keystore" } +sp-inherents = { version = "2.0.0-alpha.1", path = "../../../primitives/inherents" } +sc-keystore = { version = "2.0.0-alpha.1", path = "../../keystore" } log = "0.4.8" parking_lot = "0.10.0" -sp-core = { version = "2.0.0-dev", path = "../../../primitives/core" } -sp-blockchain = { version = "2.0.0-dev", path = "../../../primitives/blockchain" } -sp-io = { version = "2.0.0-dev", path = "../../../primitives/io" } -sp-version = { version = "2.0.0-dev", path = "../../../primitives/version" } -sc-consensus-slots = { version = "0.8.0-dev", path = "../slots" } -sp-api = { version = "2.0.0-dev", path = "../../../primitives/api" } -sp-runtime = { version = "2.0.0-dev", path = "../../../primitives/runtime" } -sp-timestamp = { version = "2.0.0-dev", path = "../../../primitives/timestamp" } -sc-telemetry = { version = "2.0.0-dev", path = "../../telemetry" } +sp-core = { version = "2.0.0-alpha.1", path = "../../../primitives/core" } +sp-blockchain = { version = "2.0.0-alpha.1", path = "../../../primitives/blockchain" } +sp-io = { version = "2.0.0-alpha.1", path = "../../../primitives/io" } +sp-version = { version = "2.0.0-alpha.1", path = "../../../primitives/version" } +sc-consensus-slots = { version = "0.8.0-alpha.1", path = "../slots" } +sp-api = { version = "2.0.0-alpha.1", path = "../../../primitives/api" } +sp-runtime = { version = "2.0.0-alpha.1", path = "../../../primitives/runtime" } +sp-timestamp = { version = "2.0.0-alpha.1", path = "../../../primitives/timestamp" } +sc-telemetry = { version = "2.0.0-alpha.1", path = "../../telemetry" } [dev-dependencies] -sp-keyring = { version = "2.0.0-dev", path = "../../../primitives/keyring" } -sc-executor = { version = "0.8.0-dev", path = "../../executor" } -sc-network = { version = "0.8.0-dev", path = "../../network" } +sp-keyring = { version = "2.0.0-alpha.1", path = "../../../primitives/keyring" } +sc-executor = { version = "0.8.0-alpha.1", path = "../../executor" } +sc-network = { version = "0.8.0-alpha.1", path = "../../network" } sc-network-test = { version = "0.8.0-dev", path = "../../network/test" } -sc-service = { version = "0.8.0-dev", path = "../../service" } +sc-service = { version = "0.8.0-alpha.1", path = "../../service" } substrate-test-runtime-client = { version = "2.0.0-dev", path = "../../../test-utils/runtime/client" } tokio = "0.1.22" env_logger = "0.7.0" diff --git a/client/consensus/babe/Cargo.toml b/client/consensus/babe/Cargo.toml index 2e11d741dc..a05723539a 100644 --- a/client/consensus/babe/Cargo.toml +++ b/client/consensus/babe/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "sc-consensus-babe" -version = "0.8.0-dev" +version = "0.8.0-alpha.1" authors = ["Parity Technologies "] description = "BABE consensus algorithm for substrate" edition = "2018" @@ -10,30 +10,30 @@ repository = "https://github.com/paritytech/substrate/" [dependencies] codec = { package = "parity-scale-codec", version = "1.0.0", features = ["derive"] } -sp-consensus-babe = { version = "0.8.0-dev", path = "../../../primitives/consensus/babe" } -sp-core = { version = "2.0.0-dev", path = "../../../primitives/core" } -sp-application-crypto = { version = "2.0.0-dev", path = "../../../primitives/application-crypto" } +sp-consensus-babe = { version = "0.8.0-alpha.1", path = "../../../primitives/consensus/babe" } +sp-core = { version = "2.0.0-alpha.1", path = "../../../primitives/core" } +sp-application-crypto = { version = "2.0.0-alpha.1", path = "../../../primitives/application-crypto" } num-bigint = "0.2.3" num-rational = "0.2.2" num-traits = "0.2.8" serde = { version = "1.0.104", features = ["derive"] } -sp-version = { version = "2.0.0-dev", path = "../../../primitives/version" } -sp-io = { version = "2.0.0-dev", path = "../../../primitives/io" } -sp-inherents = { version = "2.0.0-dev", path = "../../../primitives/inherents" } -sp-timestamp = { version = "2.0.0-dev", path = "../../../primitives/timestamp" } -sc-telemetry = { version = "2.0.0-dev", path = "../../telemetry" } -sc-keystore = { version = "2.0.0-dev", path = "../../keystore" } -sc-client-api = { version = "2.0.0-dev", path = "../../api" } -sc-client = { version = "0.8.0-dev", path = "../../" } -sc-consensus-epochs = { version = "0.8.0-dev", path = "../epochs" } -sp-api = { version = "2.0.0-dev", path = "../../../primitives/api" } -sp-block-builder = { version = "2.0.0-dev", path = "../../../primitives/block-builder" } -sp-blockchain = { version = "2.0.0-dev", path = "../../../primitives/blockchain" } -sp-consensus = { version = "0.8.0-dev", path = "../../../primitives/consensus/common" } -sc-consensus-uncles = { version = "0.8.0-dev", path = "../uncles" } -sc-consensus-slots = { version = "0.8.0-dev", path = "../slots" } -sp-runtime = { version = "2.0.0-dev", path = "../../../primitives/runtime" } -fork-tree = { version = "2.0.0-dev", path = "../../../utils/fork-tree" } +sp-version = { version = "2.0.0-alpha.1", path = "../../../primitives/version" } +sp-io = { version = "2.0.0-alpha.1", path = "../../../primitives/io" } +sp-inherents = { version = "2.0.0-alpha.1", path = "../../../primitives/inherents" } +sp-timestamp = { version = "2.0.0-alpha.1", path = "../../../primitives/timestamp" } +sc-telemetry = { version = "2.0.0-alpha.1", path = "../../telemetry" } +sc-keystore = { version = "2.0.0-alpha.1", path = "../../keystore" } +sc-client-api = { version = "2.0.0-alpha.1", path = "../../api" } +sc-client = { version = "0.8.0-alpha.1", path = "../../" } +sc-consensus-epochs = { version = "0.8.0-alpha.1", path = "../epochs" } +sp-api = { version = "2.0.0-alpha.1", path = "../../../primitives/api" } +sp-block-builder = { version = "2.0.0-alpha.1", path = "../../../primitives/block-builder" } +sp-blockchain = { version = "2.0.0-alpha.1", path = "../../../primitives/blockchain" } +sp-consensus = { version = "0.8.0-alpha.1", path = "../../../primitives/consensus/common" } +sc-consensus-uncles = { version = "0.8.0-alpha.1", path = "../uncles" } +sc-consensus-slots = { version = "0.8.0-alpha.1", path = "../slots" } +sp-runtime = { version = "2.0.0-alpha.1", path = "../../../primitives/runtime" } +fork-tree = { version = "2.0.0-alpha.1", path = "../../../utils/fork-tree" } futures = "0.3.1" futures-timer = "3.0.1" parking_lot = "0.10.0" @@ -45,13 +45,13 @@ pdqselect = "0.1.0" derive_more = "0.99.2" [dev-dependencies] -sp-keyring = { version = "2.0.0-dev", path = "../../../primitives/keyring" } -sc-executor = { version = "0.8.0-dev", path = "../../executor" } -sc-network = { version = "0.8.0-dev", path = "../../network" } +sp-keyring = { version = "2.0.0-alpha.1", path = "../../../primitives/keyring" } +sc-executor = { version = "0.8.0-alpha.1", path = "../../executor" } +sc-network = { version = "0.8.0-alpha.1", path = "../../network" } sc-network-test = { version = "0.8.0-dev", path = "../../network/test" } -sc-service = { version = "0.8.0-dev", path = "../../service" } +sc-service = { version = "0.8.0-alpha.1", path = "../../service" } substrate-test-runtime-client = { version = "2.0.0-dev", path = "../../../test-utils/runtime/client" } -sc-block-builder = { version = "0.8.0-dev", path = "../../block-builder" } +sc-block-builder = { version = "0.8.0-alpha.1", path = "../../block-builder" } tokio = "0.1.22" env_logger = "0.7.0" tempfile = "3.1.0" diff --git a/client/consensus/babe/rpc/Cargo.toml b/client/consensus/babe/rpc/Cargo.toml index 524b90046d..a2d367df5c 100644 --- a/client/consensus/babe/rpc/Cargo.toml +++ b/client/consensus/babe/rpc/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "sc-consensus-babe-rpc" -version = "0.8.0-dev" +version = "0.8.0-alpha.1" authors = ["Parity Technologies "] description = "RPC extensions for the BABE consensus algorithm" edition = "2018" @@ -9,24 +9,24 @@ homepage = "https://substrate.dev" repository = "https://github.com/paritytech/substrate/" [dependencies] -sc-consensus-babe = { version = "0.8.0-dev", path = "../" } +sc-consensus-babe = { version = "0.8.0-alpha.1", path = "../" } jsonrpc-core = "14.0.3" jsonrpc-core-client = "14.0.3" jsonrpc-derive = "14.0.3" -sp-consensus-babe = { version = "0.8.0-dev", path = "../../../../primitives/consensus/babe" } +sp-consensus-babe = { version = "0.8.0-alpha.1", path = "../../../../primitives/consensus/babe" } serde = { version = "1.0.104", features=["derive"] } -sp-blockchain = { version = "2.0.0-dev", path = "../../../../primitives/blockchain" } -sp-runtime = { version = "2.0.0-dev", path = "../../../../primitives/runtime" } -sc-consensus-epochs = { version = "0.8.0-dev", path = "../../epochs" } +sp-blockchain = { version = "2.0.0-alpha.1", path = "../../../../primitives/blockchain" } +sp-runtime = { version = "2.0.0-alpha.1", path = "../../../../primitives/runtime" } +sc-consensus-epochs = { version = "0.8.0-alpha.1", path = "../../epochs" } futures = "0.3.1" derive_more = "0.99.2" -sp-api = { version = "2.0.0-dev", path = "../../../../primitives/api" } -sp-consensus = { version = "0.8.0-dev", path = "../../../../primitives/consensus/common" } -sp-core = { version = "2.0.0-dev", path = "../../../../primitives/core" } -sc-keystore = { version = "2.0.0-dev", path = "../../../keystore" } +sp-api = { version = "2.0.0-alpha.1", path = "../../../../primitives/api" } +sp-consensus = { version = "0.8.0-alpha.1", path = "../../../../primitives/consensus/common" } +sp-core = { version = "2.0.0-alpha.1", path = "../../../../primitives/core" } +sc-keystore = { version = "2.0.0-alpha.1", path = "../../../keystore" } [dev-dependencies] substrate-test-runtime-client = { version = "2.0.0-dev", path = "../../../../test-utils/runtime/client" } -sp-application-crypto = { version = "2.0.0-dev", path = "../../../../primitives/application-crypto" } -sp-keyring = { version = "2.0.0-dev", path = "../../../../primitives/keyring" } +sp-application-crypto = { version = "2.0.0-alpha.1", path = "../../../../primitives/application-crypto" } +sp-keyring = { version = "2.0.0-alpha.1", path = "../../../../primitives/keyring" } tempfile = "3.1.0" diff --git a/client/consensus/epochs/Cargo.toml b/client/consensus/epochs/Cargo.toml index 26dc2062b8..8fc7d81303 100644 --- a/client/consensus/epochs/Cargo.toml +++ b/client/consensus/epochs/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "sc-consensus-epochs" -version = "0.8.0-dev" +version = "0.8.0-alpha.1" authors = ["Parity Technologies "] description = "Generic epochs-based utilities for consensus" edition = "2018" @@ -11,7 +11,7 @@ repository = "https://github.com/paritytech/substrate/" [dependencies] codec = { package = "parity-scale-codec", version = "1.0.0", features = ["derive"] } parking_lot = "0.10.0" -fork-tree = { version = "2.0.0-dev", path = "../../../utils/fork-tree" } -sp-runtime = { path = "../../../primitives/runtime" , version = "2.0.0-dev"} -sp-blockchain = { version = "2.0.0-dev", path = "../../../primitives/blockchain" } -sc-client-api = { path = "../../api" , version = "2.0.0-dev"} +fork-tree = { version = "2.0.0-alpha.1", path = "../../../utils/fork-tree" } +sp-runtime = { path = "../../../primitives/runtime" , version = "2.0.0-alpha.1"} +sp-blockchain = { version = "2.0.0-alpha.1", path = "../../../primitives/blockchain" } +sc-client-api = { path = "../../api" , version = "2.0.0-alpha.1"} diff --git a/client/consensus/manual-seal/Cargo.toml b/client/consensus/manual-seal/Cargo.toml index 25650f3300..f432523a43 100644 --- a/client/consensus/manual-seal/Cargo.toml +++ b/client/consensus/manual-seal/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "sc-consensus-manual-seal" -version = "0.8.0-dev" +version = "0.8.0-alpha.1" authors = ["Parity Technologies "] description = "Manual sealing engine for Substrate" edition = "2018" @@ -18,17 +18,17 @@ log = "0.4.8" parking_lot = "0.10.0" serde = { version = "1.0", features=["derive"] } -sc-client = { path = "../../../client" , version = "0.8.0-dev"} -sc-client-api = { path = "../../../client/api" , version = "2.0.0-dev"} -sc-transaction-pool = { path = "../../transaction-pool" , version = "2.0.0-dev"} -sp-blockchain = { path = "../../../primitives/blockchain" , version = "2.0.0-dev"} -sp-consensus = { package = "sp-consensus", path = "../../../primitives/consensus/common" , version = "0.8.0-dev"} -sp-inherents = { path = "../../../primitives/inherents" , version = "2.0.0-dev"} -sp-runtime = { path = "../../../primitives/runtime" , version = "2.0.0-dev"} -sp-transaction-pool = { path = "../../../primitives/transaction-pool" , version = "2.0.0-dev"} +sc-client = { path = "../../../client" , version = "0.8.0-alpha.1"} +sc-client-api = { path = "../../../client/api" , version = "2.0.0-alpha.1"} +sc-transaction-pool = { path = "../../transaction-pool" , version = "2.0.0-alpha.1"} +sp-blockchain = { path = "../../../primitives/blockchain" , version = "2.0.0-alpha.1"} +sp-consensus = { package = "sp-consensus", path = "../../../primitives/consensus/common" , version = "0.8.0-alpha.1"} +sp-inherents = { path = "../../../primitives/inherents" , version = "2.0.0-alpha.1"} +sp-runtime = { path = "../../../primitives/runtime" , version = "2.0.0-alpha.1"} +sp-transaction-pool = { path = "../../../primitives/transaction-pool" , version = "2.0.0-alpha.1"} [dev-dependencies] -sc-basic-authorship = { path = "../../basic-authorship" , version = "0.8.0-dev"} +sc-basic-authorship = { path = "../../basic-authorship" , version = "0.8.0-alpha.1"} substrate-test-runtime-client = { path = "../../../test-utils/runtime/client" , version = "2.0.0-dev"} substrate-test-runtime-transaction-pool = { path = "../../../test-utils/runtime/transaction-pool" , version = "2.0.0-dev"} tokio = { version = "0.2", features = ["rt-core", "macros"] } diff --git a/client/consensus/pow/Cargo.toml b/client/consensus/pow/Cargo.toml index b700b52ab0..d3e0be60f4 100644 --- a/client/consensus/pow/Cargo.toml +++ b/client/consensus/pow/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "sc-consensus-pow" -version = "0.8.0-dev" +version = "0.8.0-alpha.1" authors = ["Parity Technologies "] description = "PoW consensus algorithm for substrate" edition = "2018" @@ -10,16 +10,16 @@ repository = "https://github.com/paritytech/substrate/" [dependencies] codec = { package = "parity-scale-codec", version = "1.0.0", features = ["derive"] } -sp-core = { version = "2.0.0-dev", path = "../../../primitives/core" } -sp-blockchain = { version = "2.0.0-dev", path = "../../../primitives/blockchain" } -sp-runtime = { version = "2.0.0-dev", path = "../../../primitives/runtime" } -sp-api = { version = "2.0.0-dev", path = "../../../primitives/api" } -sc-client-api = { version = "2.0.0-dev", path = "../../api" } -sp-block-builder = { version = "2.0.0-dev", path = "../../../primitives/block-builder" } -sp-inherents = { version = "2.0.0-dev", path = "../../../primitives/inherents" } -sp-consensus-pow = { version = "0.8.0-dev", path = "../../../primitives/consensus/pow" } -sp-consensus = { version = "0.8.0-dev", path = "../../../primitives/consensus/common" } +sp-core = { version = "2.0.0-alpha.1", path = "../../../primitives/core" } +sp-blockchain = { version = "2.0.0-alpha.1", path = "../../../primitives/blockchain" } +sp-runtime = { version = "2.0.0-alpha.1", path = "../../../primitives/runtime" } +sp-api = { version = "2.0.0-alpha.1", path = "../../../primitives/api" } +sc-client-api = { version = "2.0.0-alpha.1", path = "../../api" } +sp-block-builder = { version = "2.0.0-alpha.1", path = "../../../primitives/block-builder" } +sp-inherents = { version = "2.0.0-alpha.1", path = "../../../primitives/inherents" } +sp-consensus-pow = { version = "0.8.0-alpha.1", path = "../../../primitives/consensus/pow" } +sp-consensus = { version = "0.8.0-alpha.1", path = "../../../primitives/consensus/common" } log = "0.4.8" futures = { version = "0.3.1", features = ["compat"] } -sp-timestamp = { version = "2.0.0-dev", path = "../../../primitives/timestamp" } +sp-timestamp = { version = "2.0.0-alpha.1", path = "../../../primitives/timestamp" } derive_more = "0.99.2" diff --git a/client/consensus/slots/Cargo.toml b/client/consensus/slots/Cargo.toml index 9a75972f58..87422a8c6c 100644 --- a/client/consensus/slots/Cargo.toml +++ b/client/consensus/slots/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "sc-consensus-slots" -version = "0.8.0-dev" +version = "0.8.0-alpha.1" authors = ["Parity Technologies "] description = "Generic slots-based utilities for consensus" edition = "2018" @@ -11,15 +11,15 @@ repository = "https://github.com/paritytech/substrate/" [dependencies] codec = { package = "parity-scale-codec", version = "1.0.0" } -sc-client-api = { version = "2.0.0-dev", path = "../../api" } -sp-core = { version = "2.0.0-dev", path = "../../../primitives/core" } -sp-blockchain = { version = "2.0.0-dev", path = "../../../primitives/blockchain" } -sp-runtime = { version = "2.0.0-dev", path = "../../../primitives/runtime" } -sp-state-machine = { version = "0.8.0-dev", path = "../../../primitives/state-machine" } -sp-api = { version = "2.0.0-dev", path = "../../../primitives/api" } -sc-telemetry = { version = "2.0.0-dev", path = "../../telemetry" } -sp-consensus = { version = "0.8.0-dev", path = "../../../primitives/consensus/common" } -sp-inherents = { version = "2.0.0-dev", path = "../../../primitives/inherents" } +sc-client-api = { version = "2.0.0-alpha.1", path = "../../api" } +sp-core = { version = "2.0.0-alpha.1", path = "../../../primitives/core" } +sp-blockchain = { version = "2.0.0-alpha.1", path = "../../../primitives/blockchain" } +sp-runtime = { version = "2.0.0-alpha.1", path = "../../../primitives/runtime" } +sp-state-machine = { version = "0.8.0-alpha.1", path = "../../../primitives/state-machine" } +sp-api = { version = "2.0.0-alpha.1", path = "../../../primitives/api" } +sc-telemetry = { version = "2.0.0-alpha.1", path = "../../telemetry" } +sp-consensus = { version = "0.8.0-alpha.1", path = "../../../primitives/consensus/common" } +sp-inherents = { version = "2.0.0-alpha.1", path = "../../../primitives/inherents" } futures = "0.3.1" futures-timer = "3.0.1" parking_lot = "0.10.0" diff --git a/client/consensus/uncles/Cargo.toml b/client/consensus/uncles/Cargo.toml index ad9ac53842..f263cd2171 100644 --- a/client/consensus/uncles/Cargo.toml +++ b/client/consensus/uncles/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "sc-consensus-uncles" -version = "0.8.0-dev" +version = "0.8.0-alpha.1" authors = ["Parity Technologies "] description = "Generic uncle inclusion utilities for consensus" edition = "2018" @@ -9,10 +9,10 @@ homepage = "https://substrate.dev" repository = "https://github.com/paritytech/substrate/" [dependencies] -sc-client-api = { version = "2.0.0-dev", path = "../../api" } -sp-core = { version = "2.0.0-dev", path = "../../../primitives/core" } -sp-runtime = { version = "2.0.0-dev", path = "../../../primitives/runtime" } -sp-authorship = { version = "2.0.0-dev", path = "../../../primitives/authorship" } -sp-consensus = { version = "0.8.0-dev", path = "../../../primitives/consensus/common" } -sp-inherents = { version = "2.0.0-dev", path = "../../../primitives/inherents" } +sc-client-api = { version = "2.0.0-alpha.1", path = "../../api" } +sp-core = { version = "2.0.0-alpha.1", path = "../../../primitives/core" } +sp-runtime = { version = "2.0.0-alpha.1", path = "../../../primitives/runtime" } +sp-authorship = { version = "2.0.0-alpha.1", path = "../../../primitives/authorship" } +sp-consensus = { version = "0.8.0-alpha.1", path = "../../../primitives/consensus/common" } +sp-inherents = { version = "2.0.0-alpha.1", path = "../../../primitives/inherents" } log = "0.4.8" diff --git a/client/db/Cargo.toml b/client/db/Cargo.toml index c2e27ae7e6..6446608d35 100644 --- a/client/db/Cargo.toml +++ b/client/db/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "sc-client-db" -version = "0.8.0-dev" +version = "0.8.0-alpha.1" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" @@ -19,19 +19,19 @@ hash-db = "0.15.2" parity-util-mem = { version = "0.5.1", default-features = false, features = ["std"] } codec = { package = "parity-scale-codec", version = "1.0.0", features = ["derive"] } -sc-client-api = { version = "2.0.0-dev", path = "../api" } -sp-core = { version = "2.0.0-dev", path = "../../primitives/core" } -sp-runtime = { version = "2.0.0-dev", path = "../../primitives/runtime" } -sc-client = { version = "0.8.0-dev", path = "../" } -sp-state-machine = { version = "0.8.0-dev", path = "../../primitives/state-machine" } -sc-executor = { version = "0.8.0-dev", path = "../executor" } -sc-state-db = { version = "0.8.0-dev", path = "../state-db" } -sp-trie = { version = "2.0.0-dev", path = "../../primitives/trie" } -sp-consensus = { version = "0.8.0-dev", path = "../../primitives/consensus/common" } -sp-blockchain = { version = "2.0.0-dev", path = "../../primitives/blockchain" } +sc-client-api = { version = "2.0.0-alpha.1", path = "../api" } +sp-core = { version = "2.0.0-alpha.1", path = "../../primitives/core" } +sp-runtime = { version = "2.0.0-alpha.1", path = "../../primitives/runtime" } +sc-client = { version = "0.8.0-alpha.1", path = "../" } +sp-state-machine = { version = "0.8.0-alpha.1", path = "../../primitives/state-machine" } +sc-executor = { version = "0.8.0-alpha.1", path = "../executor" } +sc-state-db = { version = "0.8.0-alpha.1", path = "../state-db" } +sp-trie = { version = "2.0.0-alpha.1", path = "../../primitives/trie" } +sp-consensus = { version = "0.8.0-alpha.1", path = "../../primitives/consensus/common" } +sp-blockchain = { version = "2.0.0-alpha.1", path = "../../primitives/blockchain" } [dev-dependencies] -sp-keyring = { version = "2.0.0-dev", path = "../../primitives/keyring" } +sp-keyring = { version = "2.0.0-alpha.1", path = "../../primitives/keyring" } substrate-test-runtime-client = { version = "2.0.0-dev", path = "../../test-utils/runtime/client" } env_logger = "0.7.0" quickcheck = "0.9" diff --git a/client/executor/Cargo.toml b/client/executor/Cargo.toml index f98cbf97e0..559a2d8b92 100644 --- a/client/executor/Cargo.toml +++ b/client/executor/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "sc-executor" -version = "0.8.0-dev" +version = "0.8.0-alpha.1" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" @@ -10,21 +10,21 @@ repository = "https://github.com/paritytech/substrate/" [dependencies] derive_more = "0.99.2" codec = { package = "parity-scale-codec", version = "1.0.0" } -sp-io = { version = "2.0.0-dev", path = "../../primitives/io" } -sp-core = { version = "2.0.0-dev", path = "../../primitives/core" } -sp-trie = { version = "2.0.0-dev", path = "../../primitives/trie" } -sp-serializer = { version = "2.0.0-dev", path = "../../primitives/serializer" } -sp-version = { version = "2.0.0-dev", path = "../../primitives/version" } -sp-panic-handler = { version = "2.0.0-dev", path = "../../primitives/panic-handler" } +sp-io = { version = "2.0.0-alpha.1", path = "../../primitives/io" } +sp-core = { version = "2.0.0-alpha.1", path = "../../primitives/core" } +sp-trie = { version = "2.0.0-alpha.1", path = "../../primitives/trie" } +sp-serializer = { version = "2.0.0-alpha.1", path = "../../primitives/serializer" } +sp-version = { version = "2.0.0-alpha.1", path = "../../primitives/version" } +sp-panic-handler = { version = "2.0.0-alpha.1", path = "../../primitives/panic-handler" } wasmi = "0.6.2" parity-wasm = "0.41.0" lazy_static = "1.4.0" -sp-wasm-interface = { version = "2.0.0-dev", path = "../../primitives/wasm-interface" } -sp-runtime-interface = { version = "2.0.0-dev", path = "../../primitives/runtime-interface" } -sp-externalities = { version = "0.8.0-dev", path = "../../primitives/externalities" } -sc-executor-common = { version = "0.8.0-dev", path = "common" } -sc-executor-wasmi = { version = "0.8.0-dev", path = "wasmi" } -sc-executor-wasmtime = { version = "0.8.0-dev", path = "wasmtime", optional = true } +sp-wasm-interface = { version = "2.0.0-alpha.1", path = "../../primitives/wasm-interface" } +sp-runtime-interface = { version = "2.0.0-alpha.1", path = "../../primitives/runtime-interface" } +sp-externalities = { version = "0.8.0-alpha.1", path = "../../primitives/externalities" } +sc-executor-common = { version = "0.8.0-alpha.1", path = "common" } +sc-executor-wasmi = { version = "0.8.0-alpha.1", path = "wasmi" } +sc-executor-wasmtime = { version = "0.8.0-alpha.1", path = "wasmtime", optional = true } parking_lot = "0.10.0" log = "0.4.8" libsecp256k1 = "0.3.4" @@ -35,7 +35,7 @@ wabt = "0.9.2" hex-literal = "0.2.1" sc-runtime-test = { version = "2.0.0-dev", path = "runtime-test" } substrate-test-runtime = { version = "2.0.0-dev", path = "../../test-utils/runtime" } -sp-state-machine = { version = "0.8.0-dev", path = "../../primitives/state-machine" } +sp-state-machine = { version = "0.8.0-alpha.1", path = "../../primitives/state-machine" } test-case = "0.3.3" [features] diff --git a/client/executor/common/Cargo.toml b/client/executor/common/Cargo.toml index fd3645719c..474b05bccc 100644 --- a/client/executor/common/Cargo.toml +++ b/client/executor/common/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "sc-executor-common" -version = "0.8.0-dev" +version = "0.8.0-alpha.1" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" @@ -12,11 +12,11 @@ log = "0.4.8" derive_more = "0.99.2" codec = { package = "parity-scale-codec", version = "1.0.0" } wasmi = "0.6.2" -sp-core = { version = "2.0.0-dev", path = "../../../primitives/core" } -sp-allocator = { version = "2.0.0-dev", path = "../../../primitives/allocator" } -sp-wasm-interface = { version = "2.0.0-dev", path = "../../../primitives/wasm-interface" } -sp-runtime-interface = { version = "2.0.0-dev", path = "../../../primitives/runtime-interface" } -sp-serializer = { version = "2.0.0-dev", path = "../../../primitives/serializer" } +sp-core = { version = "2.0.0-alpha.1", path = "../../../primitives/core" } +sp-allocator = { version = "2.0.0-alpha.1", path = "../../../primitives/allocator" } +sp-wasm-interface = { version = "2.0.0-alpha.1", path = "../../../primitives/wasm-interface" } +sp-runtime-interface = { version = "2.0.0-alpha.1", path = "../../../primitives/runtime-interface" } +sp-serializer = { version = "2.0.0-alpha.1", path = "../../../primitives/serializer" } [features] default = [] diff --git a/client/executor/runtime-test/Cargo.toml b/client/executor/runtime-test/Cargo.toml index b677dcd07d..6964f7d112 100644 --- a/client/executor/runtime-test/Cargo.toml +++ b/client/executor/runtime-test/Cargo.toml @@ -10,12 +10,12 @@ homepage = "https://substrate.dev" repository = "https://github.com/paritytech/substrate/" [dependencies] -sp-std = { version = "2.0.0-dev", default-features = false, path = "../../../primitives/std" } -sp-io = { version = "2.0.0-dev", default-features = false, path = "../../../primitives/io" } -sp-sandbox = { version = "0.8.0-dev", default-features = false, path = "../../../primitives/sandbox" } -sp-core = { version = "2.0.0-dev", default-features = false, path = "../../../primitives/core" } -sp-runtime = { version = "2.0.0-dev", default-features = false, path = "../../../primitives/runtime" } -sp-allocator = { version = "2.0.0-dev", default-features = false, path = "../../../primitives/allocator" } +sp-std = { version = "2.0.0-alpha.1", default-features = false, path = "../../../primitives/std" } +sp-io = { version = "2.0.0-alpha.1", default-features = false, path = "../../../primitives/io" } +sp-sandbox = { version = "0.8.0-alpha.1", default-features = false, path = "../../../primitives/sandbox" } +sp-core = { version = "2.0.0-alpha.1", default-features = false, path = "../../../primitives/core" } +sp-runtime = { version = "2.0.0-alpha.1", default-features = false, path = "../../../primitives/runtime" } +sp-allocator = { version = "2.0.0-alpha.1", default-features = false, path = "../../../primitives/allocator" } [build-dependencies] wasm-builder-runner = { version = "1.0.5", package = "substrate-wasm-builder-runner", path = "../../../utils/wasm-builder-runner" } diff --git a/client/executor/wasmi/Cargo.toml b/client/executor/wasmi/Cargo.toml index 6c8ba4c747..da9c4cb598 100644 --- a/client/executor/wasmi/Cargo.toml +++ b/client/executor/wasmi/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "sc-executor-wasmi" -version = "0.8.0-dev" +version = "0.8.0-alpha.1" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" @@ -12,8 +12,8 @@ log = "0.4.8" wasmi = "0.6.2" parity-wasm = "0.41.0" codec = { package = "parity-scale-codec", version = "1.0.0" } -sc-executor-common = { version = "0.8.0-dev", path = "../common" } -sp-wasm-interface = { version = "2.0.0-dev", path = "../../../primitives/wasm-interface" } -sp-runtime-interface = { version = "2.0.0-dev", path = "../../../primitives/runtime-interface" } -sp-core = { version = "2.0.0-dev", path = "../../../primitives/core" } -sp-allocator = { version = "2.0.0-dev", path = "../../../primitives/allocator" } +sc-executor-common = { version = "0.8.0-alpha.1", path = "../common" } +sp-wasm-interface = { version = "2.0.0-alpha.1", path = "../../../primitives/wasm-interface" } +sp-runtime-interface = { version = "2.0.0-alpha.1", path = "../../../primitives/runtime-interface" } +sp-core = { version = "2.0.0-alpha.1", path = "../../../primitives/core" } +sp-allocator = { version = "2.0.0-alpha.1", path = "../../../primitives/allocator" } diff --git a/client/executor/wasmtime/Cargo.toml b/client/executor/wasmtime/Cargo.toml index cd7e5dead9..709da35253 100644 --- a/client/executor/wasmtime/Cargo.toml +++ b/client/executor/wasmtime/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "sc-executor-wasmtime" -version = "0.8.0-dev" +version = "0.8.0-alpha.1" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" @@ -12,11 +12,11 @@ log = "0.4.8" wasmi = "0.6.2" parity-wasm = "0.41.0" codec = { package = "parity-scale-codec", version = "1.0.0" } -sc-executor-common = { version = "0.8.0-dev", path = "../common" } -sp-wasm-interface = { version = "2.0.0-dev", path = "../../../primitives/wasm-interface" } -sp-runtime-interface = { version = "2.0.0-dev", path = "../../../primitives/runtime-interface" } -sp-core = { version = "2.0.0-dev", path = "../../../primitives/core" } -sp-allocator = { version = "2.0.0-dev", path = "../../../primitives/allocator" } +sc-executor-common = { version = "0.8.0-alpha.1", path = "../common" } +sp-wasm-interface = { version = "2.0.0-alpha.1", path = "../../../primitives/wasm-interface" } +sp-runtime-interface = { version = "2.0.0-alpha.1", path = "../../../primitives/runtime-interface" } +sp-core = { version = "2.0.0-alpha.1", path = "../../../primitives/core" } +sp-allocator = { version = "2.0.0-alpha.1", path = "../../../primitives/allocator" } wasmtime = "0.11" diff --git a/client/finality-grandpa/Cargo.toml b/client/finality-grandpa/Cargo.toml index 46dd444cdf..733e5415b8 100644 --- a/client/finality-grandpa/Cargo.toml +++ b/client/finality-grandpa/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "sc-finality-grandpa" -version = "0.8.0-dev" +version = "0.8.0-alpha.1" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" @@ -8,7 +8,7 @@ homepage = "https://substrate.dev" repository = "https://github.com/paritytech/substrate/" [dependencies] -fork-tree = { version = "2.0.0-dev", path = "../../utils/fork-tree" } +fork-tree = { version = "2.0.0-alpha.1", path = "../../utils/fork-tree" } futures = "0.3.1" futures-timer = "3.0.1" log = "0.4.8" @@ -16,34 +16,34 @@ parking_lot = "0.10.0" rand = "0.7.2" assert_matches = "1.3.0" parity-scale-codec = { version = "1.0.0", features = ["derive"] } -sp-arithmetic = { version = "2.0.0-dev", path = "../../primitives/arithmetic" } -sp-runtime = { version = "2.0.0-dev", path = "../../primitives/runtime" } -sp-consensus = { version = "0.8.0-dev", path = "../../primitives/consensus/common" } -sp-core = { version = "2.0.0-dev", path = "../../primitives/core" } -sc-telemetry = { version = "2.0.0-dev", path = "../telemetry" } -sc-keystore = { version = "2.0.0-dev", path = "../keystore" } +sp-arithmetic = { version = "2.0.0-alpha.1", path = "../../primitives/arithmetic" } +sp-runtime = { version = "2.0.0-alpha.1", path = "../../primitives/runtime" } +sp-consensus = { version = "0.8.0-alpha.1", path = "../../primitives/consensus/common" } +sp-core = { version = "2.0.0-alpha.1", path = "../../primitives/core" } +sc-telemetry = { version = "2.0.0-alpha.1", path = "../telemetry" } +sc-keystore = { version = "2.0.0-alpha.1", path = "../keystore" } serde_json = "1.0.41" -sc-client-api = { version = "2.0.0-dev", path = "../api" } -sc-client = { version = "0.8.0-dev", path = "../" } -sp-inherents = { version = "2.0.0-dev", path = "../../primitives/inherents" } -sp-blockchain = { version = "2.0.0-dev", path = "../../primitives/blockchain" } -sc-network = { version = "0.8.0-dev", path = "../network" } -sc-network-gossip = { version = "0.8.0-dev", path = "../network-gossip" } -sp-finality-tracker = { version = "2.0.0-dev", path = "../../primitives/finality-tracker" } -sp-finality-grandpa = { version = "2.0.0-dev", path = "../../primitives/finality-grandpa" } +sc-client-api = { version = "2.0.0-alpha.1", path = "../api" } +sc-client = { version = "0.8.0-alpha.1", path = "../" } +sp-inherents = { version = "2.0.0-alpha.1", path = "../../primitives/inherents" } +sp-blockchain = { version = "2.0.0-alpha.1", path = "../../primitives/blockchain" } +sc-network = { version = "0.8.0-alpha.1", path = "../network" } +sc-network-gossip = { version = "0.8.0-alpha.1", path = "../network-gossip" } +sp-finality-tracker = { version = "2.0.0-alpha.1", path = "../../primitives/finality-tracker" } +sp-finality-grandpa = { version = "2.0.0-alpha.1", path = "../../primitives/finality-grandpa" } finality-grandpa = { version = "0.11.1", features = ["derive-codec"] } pin-project = "0.4.6" [dev-dependencies] finality-grandpa = { version = "0.11.1", features = ["derive-codec", "test-helpers"] } -sc-network = { version = "0.8.0-dev", path = "../network" } +sc-network = { version = "0.8.0-alpha.1", path = "../network" } sc-network-test = { version = "0.8.0-dev", path = "../network/test" } -sp-keyring = { version = "2.0.0-dev", path = "../../primitives/keyring" } +sp-keyring = { version = "2.0.0-alpha.1", path = "../../primitives/keyring" } substrate-test-runtime-client = { version = "2.0.0-dev", path = "../../test-utils/runtime/client" } -sp-consensus-babe = { version = "0.8.0-dev", path = "../../primitives/consensus/babe" } -sp-state-machine = { version = "0.8.0-dev", path = "../../primitives/state-machine" } +sp-consensus-babe = { version = "0.8.0-alpha.1", path = "../../primitives/consensus/babe" } +sp-state-machine = { version = "0.8.0-alpha.1", path = "../../primitives/state-machine" } env_logger = "0.7.0" tokio = "0.1.22" tempfile = "3.1.0" -sp-api = { version = "2.0.0-dev", path = "../../primitives/api" } +sp-api = { version = "2.0.0-alpha.1", path = "../../primitives/api" } futures01 = { package = "futures", version = "0.1.29" } diff --git a/client/informant/Cargo.toml b/client/informant/Cargo.toml index f60abeee34..c7a6c08432 100644 --- a/client/informant/Cargo.toml +++ b/client/informant/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "sc-informant" -version = "0.8.0-dev" +version = "0.8.0-alpha.1" authors = ["Parity Technologies "] description = "Substrate informant." edition = "2018" @@ -14,8 +14,8 @@ futures = "0.3.1" log = "0.4.8" parity-util-mem = { version = "0.5.1", default-features = false, features = ["primitive-types"] } wasm-timer = "0.2" -sc-client-api = { version = "2.0.0-dev", path = "../api" } -sc-network = { version = "0.8.0-dev", path = "../network" } -sc-service = { version = "0.8.0-dev", default-features = false, path = "../service" } -sp-blockchain = { version = "2.0.0-dev", path = "../../primitives/blockchain" } -sp-runtime = { version = "2.0.0-dev", path = "../../primitives/runtime" } +sc-client-api = { version = "2.0.0-alpha.1", path = "../api" } +sc-network = { version = "0.8.0-alpha.1", path = "../network" } +sc-service = { version = "0.8.0-alpha.1", default-features = false, path = "../service" } +sp-blockchain = { version = "2.0.0-alpha.1", path = "../../primitives/blockchain" } +sp-runtime = { version = "2.0.0-alpha.1", path = "../../primitives/runtime" } diff --git a/client/keystore/Cargo.toml b/client/keystore/Cargo.toml index 221449d34e..d96b2db69a 100644 --- a/client/keystore/Cargo.toml +++ b/client/keystore/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "sc-keystore" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" @@ -9,8 +9,8 @@ repository = "https://github.com/paritytech/substrate/" [dependencies] derive_more = "0.99.2" -sp-core = { version = "2.0.0-dev", path = "../../primitives/core" } -sp-application-crypto = { version = "2.0.0-dev", path = "../../primitives/application-crypto" } +sp-core = { version = "2.0.0-alpha.1", path = "../../primitives/core" } +sp-application-crypto = { version = "2.0.0-alpha.1", path = "../../primitives/application-crypto" } hex = "0.4.0" rand = "0.7.2" serde_json = "1.0.41" diff --git a/client/network-gossip/Cargo.toml b/client/network-gossip/Cargo.toml index d9d1281911..e42306c340 100644 --- a/client/network-gossip/Cargo.toml +++ b/client/network-gossip/Cargo.toml @@ -1,7 +1,7 @@ [package] description = "Gossiping for the Substrate network protocol" name = "sc-network-gossip" -version = "0.8.0-dev" +version = "0.8.0-alpha.1" license = "GPL-3.0" authors = ["Parity Technologies "] edition = "2018" @@ -15,6 +15,6 @@ libp2p = { version = "0.16.1", default-features = false, features = ["libp2p-web log = "0.4.8" lru = "0.4.3" parking_lot = "0.10.0" -sc-network = { version = "0.8.0-dev", path = "../network" } -sp-runtime = { version = "2.0.0-dev", path = "../../primitives/runtime" } +sc-network = { version = "0.8.0-alpha.1", path = "../network" } +sp-runtime = { version = "2.0.0-alpha.1", path = "../../primitives/runtime" } wasm-timer = "0.2" diff --git a/client/network/Cargo.toml b/client/network/Cargo.toml index 5d223f9031..2d50146653 100644 --- a/client/network/Cargo.toml +++ b/client/network/Cargo.toml @@ -1,7 +1,7 @@ [package] description = "Substrate network protocol" name = "sc-network" -version = "0.8.0-dev" +version = "0.8.0-alpha.1" license = "GPL-3.0" authors = ["Parity Technologies "] edition = "2018" @@ -19,7 +19,7 @@ derive_more = "0.99.2" either = "1.5.3" erased-serde = "0.3.9" fnv = "1.0.6" -fork-tree = { version = "2.0.0-dev", path = "../../utils/fork-tree" } +fork-tree = { version = "2.0.0-alpha.1", path = "../../utils/fork-tree" } futures = "0.3.1" futures_codec = "0.3.3" futures-timer = "3.0.1" @@ -34,22 +34,22 @@ parking_lot = "0.10.0" prost = "0.6.1" rand = "0.7.2" rustc-hex = "2.0.1" -sc-block-builder = { version = "0.8.0-dev", path = "../block-builder" } -sc-client = { version = "0.8.0-dev", path = "../" } -sc-client-api = { version = "2.0.0-dev", path = "../api" } -sc-peerset = { version = "2.0.0-dev", path = "../peerset" } +sc-block-builder = { version = "0.8.0-alpha.1", path = "../block-builder" } +sc-client = { version = "0.8.0-alpha.1", path = "../" } +sc-client-api = { version = "2.0.0-alpha.1", path = "../api" } +sc-peerset = { version = "2.0.0-alpha.1", path = "../peerset" } pin-project = "0.4.6" serde = { version = "1.0.101", features = ["derive"] } serde_json = "1.0.41" slog = { version = "2.5.2", features = ["nested-values"] } slog_derive = "0.2.0" smallvec = "0.6.10" -sp-arithmetic = { version = "2.0.0-dev", path = "../../primitives/arithmetic" } -sp-blockchain = { version = "2.0.0-dev", path = "../../primitives/blockchain" } -sp-consensus = { version = "0.8.0-dev", path = "../../primitives/consensus/common" } -sp-consensus-babe = { version = "0.8.0-dev", path = "../../primitives/consensus/babe" } -sp-core = { version = "2.0.0-dev", path = "../../primitives/core" } -sp-runtime = { version = "2.0.0-dev", path = "../../primitives/runtime" } +sp-arithmetic = { version = "2.0.0-alpha.1", path = "../../primitives/arithmetic" } +sp-blockchain = { version = "2.0.0-alpha.1", path = "../../primitives/blockchain" } +sp-consensus = { version = "0.8.0-alpha.1", path = "../../primitives/consensus/common" } +sp-consensus-babe = { version = "0.8.0-alpha.1", path = "../../primitives/consensus/babe" } +sp-core = { version = "2.0.0-alpha.1", path = "../../primitives/core" } +sp-runtime = { version = "2.0.0-alpha.1", path = "../../primitives/runtime" } thiserror = "1" unsigned-varint = { version = "0.3.1", features = ["futures", "futures-codec"] } void = "1.0.2" @@ -61,7 +61,7 @@ assert_matches = "1.3" env_logger = "0.7.0" quickcheck = "0.9.0" rand = "0.7.2" -sp-keyring = { version = "2.0.0-dev", path = "../../primitives/keyring" } +sp-keyring = { version = "2.0.0-alpha.1", path = "../../primitives/keyring" } sp-test-primitives = { version = "2.0.0-dev", path = "../../primitives/test-primitives" } substrate-test-runtime = { version = "2.0.0-dev", path = "../../test-utils/runtime" } substrate-test-runtime-client = { version = "2.0.0-dev", path = "../../test-utils/runtime/client" } diff --git a/client/network/test/Cargo.toml b/client/network/test/Cargo.toml index 5f8a1b6d5e..cd9258cc08 100644 --- a/client/network/test/Cargo.toml +++ b/client/network/test/Cargo.toml @@ -10,7 +10,7 @@ homepage = "https://substrate.dev" repository = "https://github.com/paritytech/substrate/" [dependencies] -sc-network = { version = "0.8.0-dev", path = "../" } +sc-network = { version = "0.8.0-alpha.1", path = "../" } log = "0.4.8" parking_lot = "0.10.0" futures = "0.1.29" @@ -18,14 +18,14 @@ futures03 = { package = "futures", version = "0.3.1", features = ["compat"] } futures-timer = "3.0.1" rand = "0.7.2" libp2p = { version = "0.16.1", default-features = false, features = ["libp2p-websocket"] } -sp-consensus = { version = "0.8.0-dev", path = "../../../primitives/consensus/common" } -sc-client = { version = "0.8.0-dev", path = "../../" } -sc-client-api = { version = "2.0.0-dev", path = "../../api" } -sp-blockchain = { version = "2.0.0-dev", path = "../../../primitives/blockchain" } -sp-runtime = { version = "2.0.0-dev", path = "../../../primitives/runtime" } -sp-core = { version = "2.0.0-dev", path = "../../../primitives/core" } -sc-block-builder = { version = "0.8.0-dev", path = "../../block-builder" } -sp-consensus-babe = { version = "0.8.0-dev", path = "../../../primitives/consensus/babe" } +sp-consensus = { version = "0.8.0-alpha.1", path = "../../../primitives/consensus/common" } +sc-client = { version = "0.8.0-alpha.1", path = "../../" } +sc-client-api = { version = "2.0.0-alpha.1", path = "../../api" } +sp-blockchain = { version = "2.0.0-alpha.1", path = "../../../primitives/blockchain" } +sp-runtime = { version = "2.0.0-alpha.1", path = "../../../primitives/runtime" } +sp-core = { version = "2.0.0-alpha.1", path = "../../../primitives/core" } +sc-block-builder = { version = "0.8.0-alpha.1", path = "../../block-builder" } +sp-consensus-babe = { version = "0.8.0-alpha.1", path = "../../../primitives/consensus/babe" } env_logger = "0.7.0" substrate-test-runtime-client = { version = "2.0.0-dev", path = "../../../test-utils/runtime/client" } substrate-test-runtime = { version = "2.0.0-dev", path = "../../../test-utils/runtime" } diff --git a/client/offchain/Cargo.toml b/client/offchain/Cargo.toml index 062f6cab56..ba7cee6811 100644 --- a/client/offchain/Cargo.toml +++ b/client/offchain/Cargo.toml @@ -1,7 +1,7 @@ [package] description = "Substrate offchain workers" name = "sc-offchain" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" license = "GPL-3.0" authors = ["Parity Technologies "] edition = "2018" @@ -10,34 +10,34 @@ repository = "https://github.com/paritytech/substrate/" [dependencies] bytes = "0.5" -sc-client-api = { version = "2.0.0-dev", path = "../api" } -sp-api = { version = "2.0.0-dev", path = "../../primitives/api" } +sc-client-api = { version = "2.0.0-alpha.1", path = "../api" } +sp-api = { version = "2.0.0-alpha.1", path = "../../primitives/api" } fnv = "1.0.6" futures = "0.3.1" futures-timer = "3.0.1" log = "0.4.8" threadpool = "1.7" num_cpus = "1.10" -sp-offchain = { version = "2.0.0-dev", path = "../../primitives/offchain" } +sp-offchain = { version = "2.0.0-alpha.1", path = "../../primitives/offchain" } codec = { package = "parity-scale-codec", version = "1.0.0", features = ["derive"] } parking_lot = "0.10.0" -sp-core = { version = "2.0.0-dev", path = "../../primitives/core" } +sp-core = { version = "2.0.0-alpha.1", path = "../../primitives/core" } rand = "0.7.2" -sp-runtime = { version = "2.0.0-dev", path = "../../primitives/runtime" } -sc-network = { version = "0.8.0-dev", path = "../network" } -sc-keystore = { version = "2.0.0-dev", path = "../keystore" } +sp-runtime = { version = "2.0.0-alpha.1", path = "../../primitives/runtime" } +sc-network = { version = "0.8.0-alpha.1", path = "../network" } +sc-keystore = { version = "2.0.0-alpha.1", path = "../keystore" } [target.'cfg(not(target_os = "unknown"))'.dependencies] hyper = "0.13.2" hyper-rustls = "0.19" [dev-dependencies] -sc-client-db = { version = "0.8.0-dev", default-features = true, path = "../db/" } +sc-client-db = { version = "0.8.0-alpha.1", default-features = true, path = "../db/" } env_logger = "0.7.0" substrate-test-runtime-client = { version = "2.0.0-dev", path = "../../test-utils/runtime/client" } tokio = "0.2" -sc-transaction-pool = { version = "2.0.0-dev", path = "../../client/transaction-pool" } -sp-transaction-pool = { version = "2.0.0-dev", path = "../../primitives/transaction-pool" } +sc-transaction-pool = { version = "2.0.0-alpha.1", path = "../../client/transaction-pool" } +sp-transaction-pool = { version = "2.0.0-alpha.1", path = "../../primitives/transaction-pool" } [features] default = [] diff --git a/client/peerset/Cargo.toml b/client/peerset/Cargo.toml index 5a01d9d03b..2ba10466fb 100644 --- a/client/peerset/Cargo.toml +++ b/client/peerset/Cargo.toml @@ -3,7 +3,7 @@ description = "Connectivity manager based on reputation" homepage = "http://parity.io" license = "GPL-3.0" name = "sc-peerset" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" authors = ["Parity Technologies "] edition = "2018" repository = "https://github.com/paritytech/substrate/" diff --git a/client/rpc-api/Cargo.toml b/client/rpc-api/Cargo.toml index bf97f07221..7ab70df55c 100644 --- a/client/rpc-api/Cargo.toml +++ b/client/rpc-api/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "sc-rpc-api" -version = "0.8.0-dev" +version = "0.8.0-alpha.1" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" @@ -17,10 +17,10 @@ jsonrpc-derive = "14.0.3" jsonrpc-pubsub = "14.0.3" log = "0.4.8" parking_lot = "0.10.0" -sp-core = { version = "2.0.0-dev", path = "../../primitives/core" } -sp-version = { version = "2.0.0-dev", path = "../../primitives/version" } -sp-runtime = { path = "../../primitives/runtime" , version = "2.0.0-dev"} +sp-core = { version = "2.0.0-alpha.1", path = "../../primitives/core" } +sp-version = { version = "2.0.0-alpha.1", path = "../../primitives/version" } +sp-runtime = { path = "../../primitives/runtime" , version = "2.0.0-alpha.1"} serde = { version = "1.0.101", features = ["derive"] } serde_json = "1.0.41" -sp-transaction-pool = { version = "2.0.0-dev", path = "../../primitives/transaction-pool" } -sp-rpc = { version = "2.0.0-dev", path = "../../primitives/rpc" } +sp-transaction-pool = { version = "2.0.0-alpha.1", path = "../../primitives/transaction-pool" } +sp-rpc = { version = "2.0.0-alpha.1", path = "../../primitives/rpc" } diff --git a/client/rpc-servers/Cargo.toml b/client/rpc-servers/Cargo.toml index d32aaf3e68..1bec566f52 100644 --- a/client/rpc-servers/Cargo.toml +++ b/client/rpc-servers/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "sc-rpc-server" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" @@ -13,7 +13,7 @@ pubsub = { package = "jsonrpc-pubsub", version = "14.0.3" } log = "0.4.8" serde = "1.0.101" serde_json = "1.0.41" -sp-runtime = { version = "2.0.0-dev", path = "../../primitives/runtime" } +sp-runtime = { version = "2.0.0-alpha.1", path = "../../primitives/runtime" } [target.'cfg(not(target_os = "unknown"))'.dependencies] http = { package = "jsonrpc-http-server", version = "14.0.3" } diff --git a/client/rpc/Cargo.toml b/client/rpc/Cargo.toml index 2c0feeb8a9..d4f618f006 100644 --- a/client/rpc/Cargo.toml +++ b/client/rpc/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "sc-rpc" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" @@ -8,36 +8,36 @@ homepage = "https://substrate.dev" repository = "https://github.com/paritytech/substrate/" [dependencies] -sc-rpc-api = { version = "0.8.0-dev", path = "../rpc-api" } -sc-client-api = { version = "2.0.0-dev", path = "../api" } -sc-client = { version = "0.8.0-dev", path = "../" } -sp-api = { version = "2.0.0-dev", path = "../../primitives/api" } +sc-rpc-api = { version = "0.8.0-alpha.1", path = "../rpc-api" } +sc-client-api = { version = "2.0.0-alpha.1", path = "../api" } +sc-client = { version = "0.8.0-alpha.1", path = "../" } +sp-api = { version = "2.0.0-alpha.1", path = "../../primitives/api" } codec = { package = "parity-scale-codec", version = "1.0.0" } futures = { version = "0.3.1", features = ["compat"] } jsonrpc-pubsub = "14.0.3" log = "0.4.8" -sp-core = { version = "2.0.0-dev", path = "../../primitives/core" } +sp-core = { version = "2.0.0-alpha.1", path = "../../primitives/core" } rpc = { package = "jsonrpc-core", version = "14.0.3" } -sp-version = { version = "2.0.0-dev", path = "../../primitives/version" } +sp-version = { version = "2.0.0-alpha.1", path = "../../primitives/version" } serde_json = "1.0.41" -sp-session = { version = "2.0.0-dev", path = "../../primitives/session" } -sp-offchain = { version = "2.0.0-dev", path = "../../primitives/offchain" } -sp-runtime = { version = "2.0.0-dev", path = "../../primitives/runtime" } -sp-rpc = { version = "2.0.0-dev", path = "../../primitives/rpc" } -sp-state-machine = { version = "0.8.0-dev", path = "../../primitives/state-machine" } -sc-executor = { version = "0.8.0-dev", path = "../executor" } -sc-keystore = { version = "2.0.0-dev", path = "../keystore" } -sp-transaction-pool = { version = "2.0.0-dev", path = "../../primitives/transaction-pool" } -sp-blockchain = { version = "2.0.0-dev", path = "../../primitives/blockchain" } +sp-session = { version = "2.0.0-alpha.1", path = "../../primitives/session" } +sp-offchain = { version = "2.0.0-alpha.1", path = "../../primitives/offchain" } +sp-runtime = { version = "2.0.0-alpha.1", path = "../../primitives/runtime" } +sp-rpc = { version = "2.0.0-alpha.1", path = "../../primitives/rpc" } +sp-state-machine = { version = "0.8.0-alpha.1", path = "../../primitives/state-machine" } +sc-executor = { version = "0.8.0-alpha.1", path = "../executor" } +sc-keystore = { version = "2.0.0-alpha.1", path = "../keystore" } +sp-transaction-pool = { version = "2.0.0-alpha.1", path = "../../primitives/transaction-pool" } +sp-blockchain = { version = "2.0.0-alpha.1", path = "../../primitives/blockchain" } hash-db = { version = "0.15.2", default-features = false } parking_lot = "0.10.0" [dev-dependencies] assert_matches = "1.3.0" futures01 = { package = "futures", version = "0.1.29" } -sc-network = { version = "0.8.0-dev", path = "../network" } +sc-network = { version = "0.8.0-alpha.1", path = "../network" } rustc-hex = "2.0.1" -sp-io = { version = "2.0.0-dev", path = "../../primitives/io" } +sp-io = { version = "2.0.0-alpha.1", path = "../../primitives/io" } substrate-test-runtime-client = { version = "2.0.0-dev", path = "../../test-utils/runtime/client" } tokio = "0.1.22" -sc-transaction-pool = { version = "2.0.0-dev", path = "../transaction-pool" } +sc-transaction-pool = { version = "2.0.0-alpha.1", path = "../transaction-pool" } diff --git a/client/service/Cargo.toml b/client/service/Cargo.toml index 024f61aba5..53c7739b09 100644 --- a/client/service/Cargo.toml +++ b/client/service/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "sc-service" -version = "0.8.0-dev" +version = "0.8.0-alpha.1" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" @@ -32,37 +32,37 @@ serde = "1.0.101" serde_json = "1.0.41" sysinfo = "0.9.5" target_info = "0.1.0" -sc-keystore = { version = "2.0.0-dev", path = "../keystore" } -sp-io = { version = "2.0.0-dev", path = "../../primitives/io" } -sp-runtime = { version = "2.0.0-dev", path = "../../primitives/runtime" } -sp-blockchain = { version = "2.0.0-dev", path = "../../primitives/blockchain" } -sp-core = { version = "2.0.0-dev", path = "../../primitives/core" } -sp-session = { version = "2.0.0-dev", path = "../../primitives/session" } -sp-application-crypto = { version = "2.0.0-dev", path = "../../primitives/application-crypto" } -sp-consensus = { version = "0.8.0-dev", path = "../../primitives/consensus/common" } -sc-network = { version = "0.8.0-dev", path = "../network" } -sc-chain-spec = { version = "2.0.0-dev", path = "../chain-spec" } -sc-client-api = { version = "2.0.0-dev", path = "../api" } -sc-client = { version = "0.8.0-dev", path = "../" } -sp-api = { version = "2.0.0-dev", path = "../../primitives/api" } -sc-client-db = { version = "0.8.0-dev", path = "../db" } +sc-keystore = { version = "2.0.0-alpha.1", path = "../keystore" } +sp-io = { version = "2.0.0-alpha.1", path = "../../primitives/io" } +sp-runtime = { version = "2.0.0-alpha.1", path = "../../primitives/runtime" } +sp-blockchain = { version = "2.0.0-alpha.1", path = "../../primitives/blockchain" } +sp-core = { version = "2.0.0-alpha.1", path = "../../primitives/core" } +sp-session = { version = "2.0.0-alpha.1", path = "../../primitives/session" } +sp-application-crypto = { version = "2.0.0-alpha.1", path = "../../primitives/application-crypto" } +sp-consensus = { version = "0.8.0-alpha.1", path = "../../primitives/consensus/common" } +sc-network = { version = "0.8.0-alpha.1", path = "../network" } +sc-chain-spec = { version = "2.0.0-alpha.1", path = "../chain-spec" } +sc-client-api = { version = "2.0.0-alpha.1", path = "../api" } +sc-client = { version = "0.8.0-alpha.1", path = "../" } +sp-api = { version = "2.0.0-alpha.1", path = "../../primitives/api" } +sc-client-db = { version = "0.8.0-alpha.1", path = "../db" } codec = { package = "parity-scale-codec", version = "1.0.0" } -sc-executor = { version = "0.8.0-dev", path = "../executor" } -sc-transaction-pool = { version = "2.0.0-dev", path = "../transaction-pool" } -sp-transaction-pool = { version = "2.0.0-dev", path = "../../primitives/transaction-pool" } -sc-rpc-server = { version = "2.0.0-dev", path = "../rpc-servers" } -sc-rpc = { version = "2.0.0-dev", path = "../rpc" } -sc-telemetry = { version = "2.0.0-dev", path = "../telemetry" } -sc-offchain = { version = "2.0.0-dev", path = "../offchain" } +sc-executor = { version = "0.8.0-alpha.1", path = "../executor" } +sc-transaction-pool = { version = "2.0.0-alpha.1", path = "../transaction-pool" } +sp-transaction-pool = { version = "2.0.0-alpha.1", path = "../../primitives/transaction-pool" } +sc-rpc-server = { version = "2.0.0-alpha.1", path = "../rpc-servers" } +sc-rpc = { version = "2.0.0-alpha.1", path = "../rpc" } +sc-telemetry = { version = "2.0.0-alpha.1", path = "../telemetry" } +sc-offchain = { version = "2.0.0-alpha.1", path = "../offchain" } parity-multiaddr = { package = "parity-multiaddr", version = "0.5.0" } -prometheus-exporter = { path = "../../utils/prometheus" , version = "0.8.0-dev"} -sc-tracing = { version = "2.0.0-dev", path = "../tracing" } +prometheus-exporter = { path = "../../utils/prometheus" , version = "0.8.0-alpha.1"} +sc-tracing = { version = "2.0.0-alpha.1", path = "../tracing" } tracing = "0.1.10" parity-util-mem = { version = "0.5.1", default-features = false, features = ["primitive-types"] } [dev-dependencies] substrate-test-runtime-client = { version = "2.0.0-dev", path = "../../test-utils/runtime/client" } -sp-consensus-babe = { version = "0.8.0-dev", path = "../../primitives/consensus/babe" } -grandpa = { version = "0.8.0-dev", package = "sc-finality-grandpa", path = "../finality-grandpa" } -grandpa-primitives = { version = "2.0.0-dev", package = "sp-finality-grandpa", path = "../../primitives/finality-grandpa" } +sp-consensus-babe = { version = "0.8.0-alpha.1", path = "../../primitives/consensus/babe" } +grandpa = { version = "0.8.0-alpha.1", package = "sc-finality-grandpa", path = "../finality-grandpa" } +grandpa-primitives = { version = "2.0.0-alpha.1", package = "sp-finality-grandpa", path = "../../primitives/finality-grandpa" } tokio = { version = "0.2", features = ["rt-core"] } diff --git a/client/service/test/Cargo.toml b/client/service/test/Cargo.toml index d733d9a7bd..80683ab89e 100644 --- a/client/service/test/Cargo.toml +++ b/client/service/test/Cargo.toml @@ -16,10 +16,10 @@ log = "0.4.8" env_logger = "0.7.0" fdlimit = "0.1.1" futures = { version = "0.3.1", features = ["compat"] } -sc-service = { version = "0.8.0-dev", default-features = false, path = "../../service" } -sc-network = { version = "0.8.0-dev", path = "../../network" } -sp-consensus = { version = "0.8.0-dev", path = "../../../primitives/consensus/common" } -sc-client = { version = "0.8.0-dev", path = "../../" } -sp-runtime = { version = "2.0.0-dev", path = "../../../primitives/runtime" } -sp-core = { version = "2.0.0-dev", path = "../../../primitives/core" } -sp-transaction-pool = { version = "2.0.0-dev", path = "../../../primitives/transaction-pool" } +sc-service = { version = "0.8.0-alpha.1", default-features = false, path = "../../service" } +sc-network = { version = "0.8.0-alpha.1", path = "../../network" } +sp-consensus = { version = "0.8.0-alpha.1", path = "../../../primitives/consensus/common" } +sc-client = { version = "0.8.0-alpha.1", path = "../../" } +sp-runtime = { version = "2.0.0-alpha.1", path = "../../../primitives/runtime" } +sp-core = { version = "2.0.0-alpha.1", path = "../../../primitives/core" } +sp-transaction-pool = { version = "2.0.0-alpha.1", path = "../../../primitives/transaction-pool" } diff --git a/client/state-db/Cargo.toml b/client/state-db/Cargo.toml index 93a12cdf08..84ab262162 100644 --- a/client/state-db/Cargo.toml +++ b/client/state-db/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "sc-state-db" -version = "0.8.0-dev" +version = "0.8.0-alpha.1" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" @@ -10,7 +10,7 @@ repository = "https://github.com/paritytech/substrate/" [dependencies] parking_lot = "0.10.0" log = "0.4.8" -sp-core = { version = "2.0.0-dev", path = "../../primitives/core" } +sp-core = { version = "2.0.0-alpha.1", path = "../../primitives/core" } codec = { package = "parity-scale-codec", version = "1.0.0", features = ["derive"] } [dev-dependencies] diff --git a/client/telemetry/Cargo.toml b/client/telemetry/Cargo.toml index 89ef286804..7ba8abafba 100644 --- a/client/telemetry/Cargo.toml +++ b/client/telemetry/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "sc-telemetry" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" authors = ["Parity Technologies "] description = "Telemetry utils" edition = "2018" diff --git a/client/tracing/Cargo.toml b/client/tracing/Cargo.toml index b85c0371f3..e508c728f3 100644 --- a/client/tracing/Cargo.toml +++ b/client/tracing/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "sc-tracing" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" license = "GPL-3.0" authors = ["Parity Technologies "] edition = "2018" @@ -16,7 +16,7 @@ serde_json = "1.0.41" slog = { version = "2.5.2", features = ["nested-values"] } tracing-core = "0.1.7" -sc-telemetry = { version = "2.0.0-dev", path = "../telemetry" } +sc-telemetry = { version = "2.0.0-alpha.1", path = "../telemetry" } [dev-dependencies] tracing = "0.1.10" diff --git a/client/transaction-pool/Cargo.toml b/client/transaction-pool/Cargo.toml index 6f863550bc..025fcec881 100644 --- a/client/transaction-pool/Cargo.toml +++ b/client/transaction-pool/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "sc-transaction-pool" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" @@ -15,17 +15,17 @@ futures-diagnose = "1.0" log = "0.4.8" parking_lot = "0.10.0" wasm-timer = "0.2" -sp-core = { version = "2.0.0-dev", path = "../../primitives/core" } -sp-api = { version = "2.0.0-dev", path = "../../primitives/api" } -sp-runtime = { version = "2.0.0-dev", path = "../../primitives/runtime" } -sc-transaction-graph = { version = "2.0.0-dev", path = "./graph" } -sp-transaction-pool = { version = "2.0.0-dev", path = "../../primitives/transaction-pool" } -sc-client-api = { version = "2.0.0-dev", path = "../api" } -sp-blockchain = { version = "2.0.0-dev", path = "../../primitives/blockchain" } +sp-core = { version = "2.0.0-alpha.1", path = "../../primitives/core" } +sp-api = { version = "2.0.0-alpha.1", path = "../../primitives/api" } +sp-runtime = { version = "2.0.0-alpha.1", path = "../../primitives/runtime" } +sc-transaction-graph = { version = "2.0.0-alpha.1", path = "./graph" } +sp-transaction-pool = { version = "2.0.0-alpha.1", path = "../../primitives/transaction-pool" } +sc-client-api = { version = "2.0.0-alpha.1", path = "../api" } +sp-blockchain = { version = "2.0.0-alpha.1", path = "../../primitives/blockchain" } futures-timer = "2.0" parity-util-mem = { version = "0.5.1", default-features = false, features = ["primitive-types"] } [dev-dependencies] -sp-keyring = { version = "2.0.0-dev", path = "../../primitives/keyring" } +sp-keyring = { version = "2.0.0-alpha.1", path = "../../primitives/keyring" } substrate-test-runtime-transaction-pool = { version = "2.0.0-dev", path = "../../test-utils/runtime/transaction-pool" } substrate-test-runtime-client = { version = "2.0.0-dev", path = "../../test-utils/runtime/client" } diff --git a/client/transaction-pool/graph/Cargo.toml b/client/transaction-pool/graph/Cargo.toml index 6335cdecb3..ba290dc616 100644 --- a/client/transaction-pool/graph/Cargo.toml +++ b/client/transaction-pool/graph/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "sc-transaction-graph" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" @@ -14,10 +14,10 @@ log = "0.4.8" parking_lot = "0.10.0" serde = { version = "1.0.101", features = ["derive"] } wasm-timer = "0.2" -sp-blockchain = { version = "2.0.0-dev", path = "../../../primitives/blockchain" } -sp-core = { version = "2.0.0-dev", path = "../../../primitives/core" } -sp-runtime = { version = "2.0.0-dev", path = "../../../primitives/runtime" } -sp-transaction-pool = { version = "2.0.0-dev", path = "../../../primitives/transaction-pool" } +sp-blockchain = { version = "2.0.0-alpha.1", path = "../../../primitives/blockchain" } +sp-core = { version = "2.0.0-alpha.1", path = "../../../primitives/core" } +sp-runtime = { version = "2.0.0-alpha.1", path = "../../../primitives/runtime" } +sp-transaction-pool = { version = "2.0.0-alpha.1", path = "../../../primitives/transaction-pool" } parity-util-mem = { version = "0.5.1", default-features = false, features = ["primitive-types"] } linked-hash-map = "0.5.2" diff --git a/frame/assets/Cargo.toml b/frame/assets/Cargo.toml index 9b2b01e91e..f9121d9d02 100644 --- a/frame/assets/Cargo.toml +++ b/frame/assets/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "pallet-assets" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" @@ -11,16 +11,16 @@ repository = "https://github.com/paritytech/substrate/" serde = { version = "1.0.101", optional = true } codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false } # Needed for various traits. In our case, `OnFinalize`. -sp-runtime = { version = "2.0.0-dev", default-features = false, path = "../../primitives/runtime" } +sp-runtime = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/runtime" } # Needed for type-safe access to storage DB. -frame-support = { version = "2.0.0-dev", default-features = false, path = "../support" } +frame-support = { version = "2.0.0-alpha.1", default-features = false, path = "../support" } # `system` module provides us with all sorts of useful stuff and macros depend on it being around. -frame-system = { version = "2.0.0-dev", default-features = false, path = "../system" } +frame-system = { version = "2.0.0-alpha.1", default-features = false, path = "../system" } [dev-dependencies] -sp-core = { version = "2.0.0-dev", path = "../../primitives/core" } -sp-std = { version = "2.0.0-dev", path = "../../primitives/std" } -sp-io = { version = "2.0.0-dev", path = "../../primitives/io" } +sp-core = { version = "2.0.0-alpha.1", path = "../../primitives/core" } +sp-std = { version = "2.0.0-alpha.1", path = "../../primitives/std" } +sp-io = { version = "2.0.0-alpha.1", path = "../../primitives/io" } [features] default = ["std"] diff --git a/frame/aura/Cargo.toml b/frame/aura/Cargo.toml index 516ee883c4..8e2da7547c 100644 --- a/frame/aura/Cargo.toml +++ b/frame/aura/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "pallet-aura" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" @@ -8,20 +8,20 @@ homepage = "https://substrate.dev" repository = "https://github.com/paritytech/substrate/" [dependencies] -sp-application-crypto = { version = "2.0.0-dev", default-features = false, path = "../../primitives/application-crypto" } +sp-application-crypto = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/application-crypto" } codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } -sp-inherents = { version = "2.0.0-dev", default-features = false, path = "../../primitives/inherents" } -sp-core = { version = "2.0.0-dev", default-features = false, path = "../../primitives/core" } -sp-std = { version = "2.0.0-dev", default-features = false, path = "../../primitives/std" } +sp-inherents = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/inherents" } +sp-core = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/core" } +sp-std = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/std" } serde = { version = "1.0.101", optional = true } -pallet-session = { version = "2.0.0-dev", default-features = false, path = "../session" } -sp-runtime = { version = "2.0.0-dev", default-features = false, path = "../../primitives/runtime" } -sp-io ={ path = "../../primitives/io", default-features = false , version = "2.0.0-dev"} -frame-support = { version = "2.0.0-dev", default-features = false, path = "../support" } -sp-consensus-aura = { path = "../../primitives/consensus/aura", default-features = false, version = "0.8.0-dev"} -frame-system = { version = "2.0.0-dev", default-features = false, path = "../system" } -sp-timestamp = { version = "2.0.0-dev", default-features = false, path = "../../primitives/timestamp" } -pallet-timestamp = { version = "2.0.0-dev", default-features = false, path = "../timestamp" } +pallet-session = { version = "2.0.0-alpha.1", default-features = false, path = "../session" } +sp-runtime = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/runtime" } +sp-io ={ path = "../../primitives/io", default-features = false , version = "2.0.0-alpha.1"} +frame-support = { version = "2.0.0-alpha.1", default-features = false, path = "../support" } +sp-consensus-aura = { path = "../../primitives/consensus/aura", default-features = false, version = "0.8.0-alpha.1"} +frame-system = { version = "2.0.0-alpha.1", default-features = false, path = "../system" } +sp-timestamp = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/timestamp" } +pallet-timestamp = { version = "2.0.0-alpha.1", default-features = false, path = "../timestamp" } [dev-dependencies] diff --git a/frame/authority-discovery/Cargo.toml b/frame/authority-discovery/Cargo.toml index 77dbd9de4a..7d79bf20f3 100644 --- a/frame/authority-discovery/Cargo.toml +++ b/frame/authority-discovery/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "pallet-authority-discovery" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" @@ -8,20 +8,20 @@ homepage = "https://substrate.dev" repository = "https://github.com/paritytech/substrate/" [dependencies] -sp-authority-discovery = { version = "2.0.0-dev", default-features = false, path = "../../primitives/authority-discovery" } -sp-application-crypto = { version = "2.0.0-dev", default-features = false, path = "../../primitives/application-crypto" } +sp-authority-discovery = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/authority-discovery" } +sp-application-crypto = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/application-crypto" } codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } -sp-core = { version = "2.0.0-dev", default-features = false, path = "../../primitives/core" } -sp-std = { version = "2.0.0-dev", default-features = false, path = "../../primitives/std" } +sp-core = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/core" } +sp-std = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/std" } serde = { version = "1.0.101", optional = true } -sp-io = { version = "2.0.0-dev", default-features = false, path = "../../primitives/io" } -pallet-session = { version = "2.0.0-dev", features = ["historical" ], path = "../session", default-features = false } -sp-runtime = { version = "2.0.0-dev", default-features = false, path = "../../primitives/runtime" } -frame-support = { version = "2.0.0-dev", default-features = false, path = "../support" } -frame-system = { version = "2.0.0-dev", default-features = false, path = "../system" } +sp-io = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/io" } +pallet-session = { version = "2.0.0-alpha.1", features = ["historical" ], path = "../session", default-features = false } +sp-runtime = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/runtime" } +frame-support = { version = "2.0.0-alpha.1", default-features = false, path = "../support" } +frame-system = { version = "2.0.0-alpha.1", default-features = false, path = "../system" } [dev-dependencies] -sp-staking = { version = "2.0.0-dev", default-features = false, path = "../../primitives/staking" } +sp-staking = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/staking" } [features] default = ["std"] diff --git a/frame/authorship/Cargo.toml b/frame/authorship/Cargo.toml index afbea4ceec..f1d4c734a2 100644 --- a/frame/authorship/Cargo.toml +++ b/frame/authorship/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "pallet-authorship" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" description = "Block and Uncle Author tracking for the FRAME" authors = ["Parity Technologies "] edition = "2018" @@ -9,15 +9,15 @@ homepage = "https://substrate.dev" repository = "https://github.com/paritytech/substrate/" [dependencies] -sp-core = { version = "2.0.0-dev", default-features = false, path = "../../primitives/core" } +sp-core = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/core" } codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } -sp-inherents = { version = "2.0.0-dev", default-features = false, path = "../../primitives/inherents" } -sp-authorship = { version = "2.0.0-dev", default-features = false, path = "../../primitives/authorship" } -sp-std = { version = "2.0.0-dev", default-features = false, path = "../../primitives/std" } -sp-runtime = { version = "2.0.0-dev", default-features = false, path = "../../primitives/runtime" } -frame-support = { version = "2.0.0-dev", default-features = false, path = "../support" } -frame-system = { version = "2.0.0-dev", default-features = false, path = "../system" } -sp-io ={ path = "../../primitives/io", default-features = false , version = "2.0.0-dev"} +sp-inherents = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/inherents" } +sp-authorship = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/authorship" } +sp-std = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/std" } +sp-runtime = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/runtime" } +frame-support = { version = "2.0.0-alpha.1", default-features = false, path = "../support" } +frame-system = { version = "2.0.0-alpha.1", default-features = false, path = "../system" } +sp-io ={ path = "../../primitives/io", default-features = false , version = "2.0.0-alpha.1"} impl-trait-for-tuples = "0.1.3" [features] diff --git a/frame/babe/Cargo.toml b/frame/babe/Cargo.toml index 1748481295..88e32d6a07 100644 --- a/frame/babe/Cargo.toml +++ b/frame/babe/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "pallet-babe" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" @@ -11,23 +11,23 @@ repository = "https://github.com/paritytech/substrate/" hex-literal = "0.2.1" codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } serde = { version = "1.0.101", optional = true } -sp-inherents = { version = "2.0.0-dev", default-features = false, path = "../../primitives/inherents" } -sp-std = { version = "2.0.0-dev", default-features = false, path = "../../primitives/std" } -sp-runtime = { version = "2.0.0-dev", default-features = false, path = "../../primitives/runtime" } -sp-staking = { version = "2.0.0-dev", default-features = false, path = "../../primitives/staking" } -frame-support = { version = "2.0.0-dev", default-features = false, path = "../support" } -frame-system = { version = "2.0.0-dev", default-features = false, path = "../system" } -pallet-timestamp = { version = "2.0.0-dev", default-features = false, path = "../timestamp" } -sp-timestamp = { version = "2.0.0-dev", default-features = false, path = "../../primitives/timestamp" } -pallet-session = { version = "2.0.0-dev", default-features = false, path = "../session" } -sp-consensus-babe = { version = "0.8.0-dev", default-features = false, path = "../../primitives/consensus/babe" } -sp-io ={ path = "../../primitives/io", default-features = false , version = "2.0.0-dev"} +sp-inherents = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/inherents" } +sp-std = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/std" } +sp-runtime = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/runtime" } +sp-staking = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/staking" } +frame-support = { version = "2.0.0-alpha.1", default-features = false, path = "../support" } +frame-system = { version = "2.0.0-alpha.1", default-features = false, path = "../system" } +pallet-timestamp = { version = "2.0.0-alpha.1", default-features = false, path = "../timestamp" } +sp-timestamp = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/timestamp" } +pallet-session = { version = "2.0.0-alpha.1", default-features = false, path = "../session" } +sp-consensus-babe = { version = "0.8.0-alpha.1", default-features = false, path = "../../primitives/consensus/babe" } +sp-io ={ path = "../../primitives/io", default-features = false , version = "2.0.0-alpha.1"} [dev-dependencies] lazy_static = "1.4.0" parking_lot = "0.10.0" -sp-version = { version = "2.0.0-dev", default-features = false, path = "../../primitives/version" } -sp-core = { version = "2.0.0-dev", path = "../../primitives/core" } +sp-version = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/version" } +sp-core = { version = "2.0.0-alpha.1", path = "../../primitives/core" } substrate-test-runtime = { version = "2.0.0-dev", path = "../../test-utils/runtime" } [features] diff --git a/frame/balances/Cargo.toml b/frame/balances/Cargo.toml index be3fa14c7a..4356b43e61 100644 --- a/frame/balances/Cargo.toml +++ b/frame/balances/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "pallet-balances" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" @@ -10,16 +10,16 @@ repository = "https://github.com/paritytech/substrate/" [dependencies] serde = { version = "1.0.101", optional = true } codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } -sp-std = { version = "2.0.0-dev", default-features = false, path = "../../primitives/std" } -sp-io = { version = "2.0.0-dev", default-features = false, path = "../../primitives/io" } -sp-runtime = { version = "2.0.0-dev", default-features = false, path = "../../primitives/runtime" } -frame-benchmarking = { version = "2.0.0-dev", default-features = false, path = "../benchmarking" } -frame-support = { version = "2.0.0-dev", default-features = false, path = "../support" } -frame-system = { version = "2.0.0-dev", default-features = false, path = "../system" } +sp-std = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/std" } +sp-io = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/io" } +sp-runtime = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/runtime" } +frame-benchmarking = { version = "2.0.0-alpha.1", default-features = false, path = "../benchmarking" } +frame-support = { version = "2.0.0-alpha.1", default-features = false, path = "../support" } +frame-system = { version = "2.0.0-alpha.1", default-features = false, path = "../system" } [dev-dependencies] -sp-core = { version = "2.0.0-dev", path = "../../primitives/core" } -pallet-transaction-payment = { version = "2.0.0-dev", path = "../transaction-payment" } +sp-core = { version = "2.0.0-alpha.1", path = "../../primitives/core" } +pallet-transaction-payment = { version = "2.0.0-alpha.1", path = "../transaction-payment" } [features] default = ["std"] diff --git a/frame/benchmarking/Cargo.toml b/frame/benchmarking/Cargo.toml index 63db66fb20..72395d5cb1 100644 --- a/frame/benchmarking/Cargo.toml +++ b/frame/benchmarking/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "frame-benchmarking" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" @@ -9,10 +9,10 @@ repository = "https://github.com/paritytech/substrate/" [dependencies] codec = { package = "parity-scale-codec", version = "1.1.2", default-features = false } -sp-api = { version = "2.0.0-dev", path = "../../primitives/api", default-features = false } -sp-runtime-interface = { version = "2.0.0-dev", path = "../../primitives/runtime-interface", default-features = false } -sp-std = { version = "2.0.0-dev", path = "../../primitives/std", default-features = false } -sp-io ={ path = "../../primitives/io", default-features = false , version = "2.0.0-dev"} +sp-api = { version = "2.0.0-alpha.1", path = "../../primitives/api", default-features = false } +sp-runtime-interface = { version = "2.0.0-alpha.1", path = "../../primitives/runtime-interface", default-features = false } +sp-std = { version = "2.0.0-alpha.1", path = "../../primitives/std", default-features = false } +sp-io ={ path = "../../primitives/io", default-features = false , version = "2.0.0-alpha.1"} [features] default = [ "std" ] diff --git a/frame/collective/Cargo.toml b/frame/collective/Cargo.toml index 1e906e9585..ca2f3203d5 100644 --- a/frame/collective/Cargo.toml +++ b/frame/collective/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "pallet-collective" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" @@ -10,16 +10,16 @@ repository = "https://github.com/paritytech/substrate/" [dependencies] serde = { version = "1.0.101", optional = true } codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } -sp-core = { version = "2.0.0-dev", default-features = false, path = "../../primitives/core" } -sp-std = { version = "2.0.0-dev", default-features = false, path = "../../primitives/std" } -sp-io = { version = "2.0.0-dev", default-features = false, path = "../../primitives/io" } -sp-runtime = { version = "2.0.0-dev", default-features = false, path = "../../primitives/runtime" } -frame-support = { version = "2.0.0-dev", default-features = false, path = "../support" } -frame-system = { version = "2.0.0-dev", default-features = false, path = "../system" } +sp-core = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/core" } +sp-std = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/std" } +sp-io = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/io" } +sp-runtime = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/runtime" } +frame-support = { version = "2.0.0-alpha.1", default-features = false, path = "../support" } +frame-system = { version = "2.0.0-alpha.1", default-features = false, path = "../system" } [dev-dependencies] hex-literal = "0.2.1" -pallet-balances = { version = "2.0.0-dev", path = "../balances" } +pallet-balances = { version = "2.0.0-alpha.1", path = "../balances" } [features] default = ["std"] diff --git a/frame/contracts/Cargo.toml b/frame/contracts/Cargo.toml index 571ea2d08a..6feaf59f57 100644 --- a/frame/contracts/Cargo.toml +++ b/frame/contracts/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "pallet-contracts" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" @@ -13,22 +13,22 @@ pwasm-utils = { version = "0.12.0", default-features = false } codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } parity-wasm = { version = "0.41.0", default-features = false } wasmi-validation = { version = "0.3.0", default-features = false } -sp-core = { version = "2.0.0-dev", default-features = false, path = "../../primitives/core" } -sp-runtime = { version = "2.0.0-dev", default-features = false, path = "../../primitives/runtime" } -sp-io = { version = "2.0.0-dev", default-features = false, path = "../../primitives/io" } -sp-std = { version = "2.0.0-dev", default-features = false, path = "../../primitives/std" } -sp-sandbox = { version = "0.8.0-dev", default-features = false, path = "../../primitives/sandbox" } -frame-support = { version = "2.0.0-dev", default-features = false, path = "../support" } -frame-system = { version = "2.0.0-dev", default-features = false, path = "../system" } -pallet-contracts-primitives = { version = "2.0.0-dev", default-features = false, path = "common" } +sp-core = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/core" } +sp-runtime = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/runtime" } +sp-io = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/io" } +sp-std = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/std" } +sp-sandbox = { version = "0.8.0-alpha.1", default-features = false, path = "../../primitives/sandbox" } +frame-support = { version = "2.0.0-alpha.1", default-features = false, path = "../support" } +frame-system = { version = "2.0.0-alpha.1", default-features = false, path = "../system" } +pallet-contracts-primitives = { version = "2.0.0-alpha.1", default-features = false, path = "common" } [dev-dependencies] wabt = "0.9.2" assert_matches = "1.3.0" hex-literal = "0.2.1" -pallet-balances = { version = "2.0.0-dev", path = "../balances" } -pallet-timestamp = { version = "2.0.0-dev", path = "../timestamp" } -pallet-randomness-collective-flip = { version = "2.0.0-dev", path = "../randomness-collective-flip" } +pallet-balances = { version = "2.0.0-alpha.1", path = "../balances" } +pallet-timestamp = { version = "2.0.0-alpha.1", path = "../timestamp" } +pallet-randomness-collective-flip = { version = "2.0.0-alpha.1", path = "../randomness-collective-flip" } [features] default = ["std"] diff --git a/frame/contracts/common/Cargo.toml b/frame/contracts/common/Cargo.toml index e70143f76d..03a03038d8 100644 --- a/frame/contracts/common/Cargo.toml +++ b/frame/contracts/common/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "pallet-contracts-primitives" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" @@ -10,8 +10,8 @@ repository = "https://github.com/paritytech/substrate/" [dependencies] # This crate should not rely on any of the frame primitives. codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } -sp-std = { version = "2.0.0-dev", default-features = false, path = "../../../primitives/std" } -sp-runtime = { version = "2.0.0-dev", default-features = false, path = "../../../primitives/runtime" } +sp-std = { version = "2.0.0-alpha.1", default-features = false, path = "../../../primitives/std" } +sp-runtime = { version = "2.0.0-alpha.1", default-features = false, path = "../../../primitives/runtime" } [features] default = ["std"] diff --git a/frame/contracts/rpc/Cargo.toml b/frame/contracts/rpc/Cargo.toml index 6120cbe51e..b91e17e608 100644 --- a/frame/contracts/rpc/Cargo.toml +++ b/frame/contracts/rpc/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "pallet-contracts-rpc" -version = "0.8.0-dev" +version = "0.8.0-alpha.1" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" @@ -12,14 +12,14 @@ codec = { package = "parity-scale-codec", version = "1.0.0" } jsonrpc-core = "14.0.3" jsonrpc-core-client = "14.0.3" jsonrpc-derive = "14.0.3" -sp-blockchain = { version = "2.0.0-dev", path = "../../../primitives/blockchain" } -sp-core = { version = "2.0.0-dev", path = "../../../primitives/core" } -sp-rpc = { version = "2.0.0-dev", path = "../../../primitives/rpc" } +sp-blockchain = { version = "2.0.0-alpha.1", path = "../../../primitives/blockchain" } +sp-core = { version = "2.0.0-alpha.1", path = "../../../primitives/core" } +sp-rpc = { version = "2.0.0-alpha.1", path = "../../../primitives/rpc" } serde = { version = "1.0.101", features = ["derive"] } -sp-runtime = { version = "2.0.0-dev", path = "../../../primitives/runtime" } -sp-api = { version = "2.0.0-dev", path = "../../../primitives/api" } -pallet-contracts-primitives = { version = "2.0.0-dev", path = "../common" } -pallet-contracts-rpc-runtime-api = { version = "0.8.0-dev", path = "./runtime-api" } +sp-runtime = { version = "2.0.0-alpha.1", path = "../../../primitives/runtime" } +sp-api = { version = "2.0.0-alpha.1", path = "../../../primitives/api" } +pallet-contracts-primitives = { version = "2.0.0-alpha.1", path = "../common" } +pallet-contracts-rpc-runtime-api = { version = "0.8.0-alpha.1", path = "./runtime-api" } [dev-dependencies] serde_json = "1.0.41" diff --git a/frame/contracts/rpc/runtime-api/Cargo.toml b/frame/contracts/rpc/runtime-api/Cargo.toml index ce810b8be3..c84ab739df 100644 --- a/frame/contracts/rpc/runtime-api/Cargo.toml +++ b/frame/contracts/rpc/runtime-api/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "pallet-contracts-rpc-runtime-api" -version = "0.8.0-dev" +version = "0.8.0-alpha.1" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" @@ -8,11 +8,11 @@ homepage = "https://substrate.dev" repository = "https://github.com/paritytech/substrate/" [dependencies] -sp-api = { version = "2.0.0-dev", default-features = false, path = "../../../../primitives/api" } +sp-api = { version = "2.0.0-alpha.1", default-features = false, path = "../../../../primitives/api" } codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } -sp-std = { version = "2.0.0-dev", default-features = false, path = "../../../../primitives/std" } -sp-runtime = { version = "2.0.0-dev", default-features = false, path = "../../../../primitives/runtime" } -pallet-contracts-primitives = { version = "2.0.0-dev", default-features = false, path = "../../common" } +sp-std = { version = "2.0.0-alpha.1", default-features = false, path = "../../../../primitives/std" } +sp-runtime = { version = "2.0.0-alpha.1", default-features = false, path = "../../../../primitives/runtime" } +pallet-contracts-primitives = { version = "2.0.0-alpha.1", default-features = false, path = "../../common" } [features] default = ["std"] diff --git a/frame/democracy/Cargo.toml b/frame/democracy/Cargo.toml index cf09d24620..512a4676cb 100644 --- a/frame/democracy/Cargo.toml +++ b/frame/democracy/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "pallet-democracy" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" @@ -10,16 +10,16 @@ repository = "https://github.com/paritytech/substrate/" [dependencies] serde = { version = "1.0.101", optional = true, features = ["derive"] } codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } -sp-std = { version = "2.0.0-dev", default-features = false, path = "../../primitives/std" } -sp-io = { version = "2.0.0-dev", default-features = false, path = "../../primitives/io" } -sp-runtime = { version = "2.0.0-dev", default-features = false, path = "../../primitives/runtime" } -frame-support = { version = "2.0.0-dev", default-features = false, path = "../support" } -frame-system = { version = "2.0.0-dev", default-features = false, path = "../system" } +sp-std = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/std" } +sp-io = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/io" } +sp-runtime = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/runtime" } +frame-support = { version = "2.0.0-alpha.1", default-features = false, path = "../support" } +frame-system = { version = "2.0.0-alpha.1", default-features = false, path = "../system" } [dev-dependencies] -sp-core = { version = "2.0.0-dev", path = "../../primitives/core" } -pallet-balances = { version = "2.0.0-dev", path = "../balances" } -sp-storage = { version = "2.0.0-dev", path = "../../primitives/storage" } +sp-core = { version = "2.0.0-alpha.1", path = "../../primitives/core" } +pallet-balances = { version = "2.0.0-alpha.1", path = "../balances" } +sp-storage = { version = "2.0.0-alpha.1", path = "../../primitives/storage" } hex-literal = "0.2.1" [features] diff --git a/frame/elections-phragmen/Cargo.toml b/frame/elections-phragmen/Cargo.toml index 6fc83fb370..882185bdce 100644 --- a/frame/elections-phragmen/Cargo.toml +++ b/frame/elections-phragmen/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "pallet-elections-phragmen" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" @@ -9,18 +9,18 @@ repository = "https://github.com/paritytech/substrate/" [dependencies] codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } -sp-runtime = { version = "2.0.0-dev", default-features = false, path = "../../primitives/runtime" } -sp-phragmen = { version = "2.0.0-dev", default-features = false, path = "../../primitives/phragmen" } -frame-support = { version = "2.0.0-dev", default-features = false, path = "../support" } -frame-system = { version = "2.0.0-dev", default-features = false, path = "../system" } -sp-std = { version = "2.0.0-dev", default-features = false, path = "../../primitives/std" } +sp-runtime = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/runtime" } +sp-phragmen = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/phragmen" } +frame-support = { version = "2.0.0-alpha.1", default-features = false, path = "../support" } +frame-system = { version = "2.0.0-alpha.1", default-features = false, path = "../system" } +sp-std = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/std" } [dev-dependencies] -sp-io = { version = "2.0.0-dev", path = "../../primitives/io" } +sp-io = { version = "2.0.0-alpha.1", path = "../../primitives/io" } hex-literal = "0.2.1" -pallet-balances = { version = "2.0.0-dev", path = "../balances" } -sp-core = { version = "2.0.0-dev", path = "../../primitives/core" } -substrate-test-utils = { version = "2.0.0-dev", path = "../../test-utils" } +pallet-balances = { version = "2.0.0-alpha.1", path = "../balances" } +sp-core = { version = "2.0.0-alpha.1", path = "../../primitives/core" } +substrate-test-utils = { version = "2.0.0-alpha.1", path = "../../test-utils" } serde = { version = "1.0.101" } [features] diff --git a/frame/elections/Cargo.toml b/frame/elections/Cargo.toml index eafdb2cc97..38eec0dc24 100644 --- a/frame/elections/Cargo.toml +++ b/frame/elections/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "pallet-elections" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" @@ -10,16 +10,16 @@ repository = "https://github.com/paritytech/substrate/" [dependencies] serde = { version = "1.0.101", optional = true } codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } -sp-core = { version = "2.0.0-dev", default-features = false, path = "../../primitives/core" } -sp-std = { version = "2.0.0-dev", default-features = false, path = "../../primitives/std" } -sp-io = { version = "2.0.0-dev", default-features = false, path = "../../primitives/io" } -sp-runtime = { version = "2.0.0-dev", default-features = false, path = "../../primitives/runtime" } -frame-support = { version = "2.0.0-dev", default-features = false, path = "../support" } -frame-system = { version = "2.0.0-dev", default-features = false, path = "../system" } +sp-core = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/core" } +sp-std = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/std" } +sp-io = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/io" } +sp-runtime = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/runtime" } +frame-support = { version = "2.0.0-alpha.1", default-features = false, path = "../support" } +frame-system = { version = "2.0.0-alpha.1", default-features = false, path = "../system" } [dev-dependencies] hex-literal = "0.2.1" -pallet-balances = { version = "2.0.0-dev", path = "../balances" } +pallet-balances = { version = "2.0.0-alpha.1", path = "../balances" } [features] default = ["std"] diff --git a/frame/evm/Cargo.toml b/frame/evm/Cargo.toml index 202cc23238..d521b87270 100644 --- a/frame/evm/Cargo.toml +++ b/frame/evm/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "pallet-evm" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" @@ -10,14 +10,14 @@ repository = "https://github.com/paritytech/substrate/" [dependencies] serde = { version = "1.0.101", optional = true, features = ["derive"] } codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false } -frame-support = { version = "2.0.0-dev", default-features = false, path = "../support" } -frame-system = { version = "2.0.0-dev", default-features = false, path = "../system" } -pallet-timestamp = { version = "2.0.0-dev", default-features = false, path = "../timestamp" } -pallet-balances = { version = "2.0.0-dev", default-features = false, path = "../balances" } -sp-core = { version = "2.0.0-dev", default-features = false, path = "../../primitives/core" } -sp-runtime = { version = "2.0.0-dev", default-features = false, path = "../../primitives/runtime" } -sp-std = { version = "2.0.0-dev", default-features = false, path = "../../primitives/std" } -sp-io = { version = "2.0.0-dev", default-features = false, path = "../../primitives/io" } +frame-support = { version = "2.0.0-alpha.1", default-features = false, path = "../support" } +frame-system = { version = "2.0.0-alpha.1", default-features = false, path = "../system" } +pallet-timestamp = { version = "2.0.0-alpha.1", default-features = false, path = "../timestamp" } +pallet-balances = { version = "2.0.0-alpha.1", default-features = false, path = "../balances" } +sp-core = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/core" } +sp-runtime = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/runtime" } +sp-std = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/std" } +sp-io = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/io" } primitive-types = { version = "0.6.2", default-features = false, features = ["rlp"] } rlp = { version = "0.4", default-features = false } evm = { version = "0.15", default-features = false } diff --git a/frame/example-offchain-worker/Cargo.toml b/frame/example-offchain-worker/Cargo.toml index 4f4d797202..b10d9cb390 100644 --- a/frame/example-offchain-worker/Cargo.toml +++ b/frame/example-offchain-worker/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "pallet-example-offchain-worker" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" authors = ["Parity Technologies "] edition = "2018" license = "Unlicense" @@ -9,13 +9,13 @@ repository = "https://github.com/paritytech/substrate/" [dependencies] codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false } -frame-support = { version = "2.0.0-dev", default-features = false, path = "../support" } -frame-system = { version = "2.0.0-dev", default-features = false, path = "../system" } +frame-support = { version = "2.0.0-alpha.1", default-features = false, path = "../support" } +frame-system = { version = "2.0.0-alpha.1", default-features = false, path = "../system" } serde = { version = "1.0.101", optional = true } -sp-core = { version = "2.0.0-dev", default-features = false, path = "../../primitives/core" } -sp-io = { version = "2.0.0-dev", default-features = false, path = "../../primitives/io" } -sp-runtime = { version = "2.0.0-dev", default-features = false, path = "../../primitives/runtime" } -sp-std = { version = "2.0.0-dev", default-features = false, path = "../../primitives/std" } +sp-core = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/core" } +sp-io = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/io" } +sp-runtime = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/runtime" } +sp-std = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/std" } serde_json = { version = "1.0.46", default-features = false, features = ["alloc"] } [features] diff --git a/frame/example/Cargo.toml b/frame/example/Cargo.toml index 07b0a992b2..bb6625e892 100644 --- a/frame/example/Cargo.toml +++ b/frame/example/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "pallet-example" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" authors = ["Parity Technologies "] edition = "2018" license = "Unlicense" @@ -10,15 +10,15 @@ repository = "https://github.com/paritytech/substrate/" [dependencies] serde = { version = "1.0.101", optional = true } codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false } -frame-support = { version = "2.0.0-dev", default-features = false, path = "../support" } -frame-system = { version = "2.0.0-dev", default-features = false, path = "../system" } -pallet-balances = { version = "2.0.0-dev", default-features = false, path = "../balances" } -sp-runtime = { version = "2.0.0-dev", default-features = false, path = "../../primitives/runtime" } -sp-std = { version = "2.0.0-dev", default-features = false, path = "../../primitives/std" } -sp-io = { version = "2.0.0-dev", default-features = false, path = "../../primitives/io" } +frame-support = { version = "2.0.0-alpha.1", default-features = false, path = "../support" } +frame-system = { version = "2.0.0-alpha.1", default-features = false, path = "../system" } +pallet-balances = { version = "2.0.0-alpha.1", default-features = false, path = "../balances" } +sp-runtime = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/runtime" } +sp-std = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/std" } +sp-io = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/io" } [dev-dependencies] -sp-core = { version = "2.0.0-dev", path = "../../primitives/core" } +sp-core = { version = "2.0.0-alpha.1", path = "../../primitives/core" } [features] default = ["std"] diff --git a/frame/executive/Cargo.toml b/frame/executive/Cargo.toml index 0becc170a3..8e95998360 100644 --- a/frame/executive/Cargo.toml +++ b/frame/executive/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "frame-executive" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" @@ -9,19 +9,19 @@ repository = "https://github.com/paritytech/substrate/" [dependencies] codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } -frame-support = { version = "2.0.0-dev", default-features = false, path = "../support" } -frame-system = { version = "2.0.0-dev", default-features = false, path = "../system" } +frame-support = { version = "2.0.0-alpha.1", default-features = false, path = "../support" } +frame-system = { version = "2.0.0-alpha.1", default-features = false, path = "../system" } serde = { version = "1.0.101", optional = true } -sp-io ={ path = "../../primitives/io", default-features = false , version = "2.0.0-dev"} -sp-runtime = { version = "2.0.0-dev", default-features = false, path = "../../primitives/runtime" } -sp-std = { version = "2.0.0-dev", default-features = false, path = "../../primitives/std" } +sp-io ={ path = "../../primitives/io", default-features = false , version = "2.0.0-alpha.1"} +sp-runtime = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/runtime" } +sp-std = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/std" } [dev-dependencies] hex-literal = "0.2.1" -sp-core = { version = "2.0.0-dev", path = "../../primitives/core" } -pallet-indices = { version = "2.0.0-dev", path = "../indices" } -pallet-balances = { version = "2.0.0-dev", path = "../balances" } -pallet-transaction-payment = { version = "2.0.0-dev", path = "../transaction-payment" } +sp-core = { version = "2.0.0-alpha.1", path = "../../primitives/core" } +pallet-indices = { version = "2.0.0-alpha.1", path = "../indices" } +pallet-balances = { version = "2.0.0-alpha.1", path = "../balances" } +pallet-transaction-payment = { version = "2.0.0-alpha.1", path = "../transaction-payment" } [features] default = ["std"] diff --git a/frame/finality-tracker/Cargo.toml b/frame/finality-tracker/Cargo.toml index e848c02a42..e9c661ebe6 100644 --- a/frame/finality-tracker/Cargo.toml +++ b/frame/finality-tracker/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "pallet-finality-tracker" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" @@ -10,17 +10,17 @@ repository = "https://github.com/paritytech/substrate/" [dependencies] serde = { version = "1.0.101", default-features = false, features = ["derive"] } codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false } -sp-inherents = { version = "2.0.0-dev", default-features = false, path = "../../primitives/inherents" } -sp-std = { version = "2.0.0-dev", default-features = false, path = "../../primitives/std" } -sp-runtime = { version = "2.0.0-dev", default-features = false, path = "../../primitives/runtime" } -sp-finality-tracker = { version = "2.0.0-dev", default-features = false, path = "../../primitives/finality-tracker" } -frame-support = { version = "2.0.0-dev", default-features = false, path = "../support" } -frame-system = { version = "2.0.0-dev", default-features = false, path = "../system" } +sp-inherents = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/inherents" } +sp-std = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/std" } +sp-runtime = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/runtime" } +sp-finality-tracker = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/finality-tracker" } +frame-support = { version = "2.0.0-alpha.1", default-features = false, path = "../support" } +frame-system = { version = "2.0.0-alpha.1", default-features = false, path = "../system" } impl-trait-for-tuples = "0.1.3" [dev-dependencies] -sp-core = { version = "2.0.0-dev", default-features = false, path = "../../primitives/core" } -sp-io = { version = "2.0.0-dev", default-features = false, path = "../../primitives/io" } +sp-core = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/core" } +sp-io = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/io" } [features] default = ["std"] diff --git a/frame/generic-asset/Cargo.toml b/frame/generic-asset/Cargo.toml index 343267f89f..ba79a8c13b 100644 --- a/frame/generic-asset/Cargo.toml +++ b/frame/generic-asset/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "pallet-generic-asset" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" authors = ["Centrality Developers "] edition = "2018" license = "GPL-3.0" @@ -10,14 +10,14 @@ repository = "https://github.com/paritytech/substrate/" [dependencies] serde = { version = "1.0.101", optional = true } codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } -sp-std = { version = "2.0.0-dev", default-features = false, path = "../../primitives/std" } -sp-runtime = { version = "2.0.0-dev", default-features = false, path = "../../primitives/runtime" } -frame-support = { version = "2.0.0-dev", default-features = false, path = "../support" } -frame-system = { version = "2.0.0-dev", default-features = false, path = "../system" } +sp-std = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/std" } +sp-runtime = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/runtime" } +frame-support = { version = "2.0.0-alpha.1", default-features = false, path = "../support" } +frame-system = { version = "2.0.0-alpha.1", default-features = false, path = "../system" } [dev-dependencies] -sp-io ={ version = "2.0.0-dev", path = "../../primitives/io" } -sp-core = { version = "2.0.0-dev", path = "../../primitives/core" } +sp-io ={ version = "2.0.0-alpha.1", path = "../../primitives/io" } +sp-core = { version = "2.0.0-alpha.1", path = "../../primitives/core" } [features] default = ["std"] diff --git a/frame/grandpa/Cargo.toml b/frame/grandpa/Cargo.toml index 95ed18b0dd..a50e3beb32 100644 --- a/frame/grandpa/Cargo.toml +++ b/frame/grandpa/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "pallet-grandpa" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" @@ -10,18 +10,18 @@ repository = "https://github.com/paritytech/substrate/" [dependencies] serde = { version = "1.0.101", optional = true, features = ["derive"] } codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } -sp-core = { version = "2.0.0-dev", default-features = false, path = "../../primitives/core" } -sp-finality-grandpa = { version = "2.0.0-dev", default-features = false, path = "../../primitives/finality-grandpa" } -sp-std = { version = "2.0.0-dev", default-features = false, path = "../../primitives/std" } -sp-runtime = { version = "2.0.0-dev", default-features = false, path = "../../primitives/runtime" } -sp-staking = { version = "2.0.0-dev", default-features = false, path = "../../primitives/staking" } -frame-support = { version = "2.0.0-dev", default-features = false, path = "../support" } -frame-system = { version = "2.0.0-dev", default-features = false, path = "../system" } -pallet-session = { version = "2.0.0-dev", default-features = false, path = "../session" } -pallet-finality-tracker = { version = "2.0.0-dev", default-features = false, path = "../finality-tracker" } +sp-core = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/core" } +sp-finality-grandpa = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/finality-grandpa" } +sp-std = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/std" } +sp-runtime = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/runtime" } +sp-staking = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/staking" } +frame-support = { version = "2.0.0-alpha.1", default-features = false, path = "../support" } +frame-system = { version = "2.0.0-alpha.1", default-features = false, path = "../system" } +pallet-session = { version = "2.0.0-alpha.1", default-features = false, path = "../session" } +pallet-finality-tracker = { version = "2.0.0-alpha.1", default-features = false, path = "../finality-tracker" } [dev-dependencies] -sp-io ={ version = "2.0.0-dev", path = "../../primitives/io" } +sp-io ={ version = "2.0.0-alpha.1", path = "../../primitives/io" } [features] default = ["std"] diff --git a/frame/identity/Cargo.toml b/frame/identity/Cargo.toml index f275dba069..b40537f7d2 100644 --- a/frame/identity/Cargo.toml +++ b/frame/identity/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "pallet-identity" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" @@ -11,16 +11,16 @@ repository = "https://github.com/paritytech/substrate/" serde = { version = "1.0.101", optional = true } codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } enumflags2 = { version = "0.6.2" } -sp-std = { version = "2.0.0-dev", default-features = false, path = "../../primitives/std" } -sp-io = { version = "2.0.0-dev", default-features = false, path = "../../primitives/io" } -sp-runtime = { version = "2.0.0-dev", default-features = false, path = "../../primitives/runtime" } -frame-benchmarking = { version = "2.0.0-dev", default-features = false, path = "../benchmarking" } -frame-support = { version = "2.0.0-dev", default-features = false, path = "../support" } -frame-system = { version = "2.0.0-dev", default-features = false, path = "../system" } +sp-std = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/std" } +sp-io = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/io" } +sp-runtime = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/runtime" } +frame-benchmarking = { version = "2.0.0-alpha.1", default-features = false, path = "../benchmarking" } +frame-support = { version = "2.0.0-alpha.1", default-features = false, path = "../support" } +frame-system = { version = "2.0.0-alpha.1", default-features = false, path = "../system" } [dev-dependencies] -sp-core = { version = "2.0.0-dev", path = "../../primitives/core" } -pallet-balances = { version = "2.0.0-dev", path = "../balances" } +sp-core = { version = "2.0.0-alpha.1", path = "../../primitives/core" } +pallet-balances = { version = "2.0.0-alpha.1", path = "../balances" } [features] default = ["std"] diff --git a/frame/im-online/Cargo.toml b/frame/im-online/Cargo.toml index d04b2f47a3..269182f458 100644 --- a/frame/im-online/Cargo.toml +++ b/frame/im-online/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "pallet-im-online" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" @@ -8,18 +8,18 @@ homepage = "https://substrate.dev" repository = "https://github.com/paritytech/substrate/" [dependencies] -sp-application-crypto = { version = "2.0.0-dev", default-features = false, path = "../../primitives/application-crypto" } -pallet-authorship = { version = "2.0.0-dev", default-features = false, path = "../authorship" } +sp-application-crypto = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/application-crypto" } +pallet-authorship = { version = "2.0.0-alpha.1", default-features = false, path = "../authorship" } codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } -sp-core = { version = "2.0.0-dev", default-features = false, path = "../../primitives/core" } -sp-std = { version = "2.0.0-dev", default-features = false, path = "../../primitives/std" } +sp-core = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/core" } +sp-std = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/std" } serde = { version = "1.0.101", optional = true } -pallet-session = { version = "2.0.0-dev", default-features = false, path = "../session" } -sp-io = { version = "2.0.0-dev", default-features = false, path = "../../primitives/io" } -sp-runtime = { version = "2.0.0-dev", default-features = false, path = "../../primitives/runtime" } -sp-staking = { version = "2.0.0-dev", default-features = false, path = "../../primitives/staking" } -frame-support = { version = "2.0.0-dev", default-features = false, path = "../support" } -frame-system = { version = "2.0.0-dev", default-features = false, path = "../system" } +pallet-session = { version = "2.0.0-alpha.1", default-features = false, path = "../session" } +sp-io = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/io" } +sp-runtime = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/runtime" } +sp-staking = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/staking" } +frame-support = { version = "2.0.0-alpha.1", default-features = false, path = "../support" } +frame-system = { version = "2.0.0-alpha.1", default-features = false, path = "../system" } [features] default = ["std", "pallet-session/historical"] diff --git a/frame/indices/Cargo.toml b/frame/indices/Cargo.toml index b02b96fc3b..a12ca83176 100644 --- a/frame/indices/Cargo.toml +++ b/frame/indices/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "pallet-indices" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" @@ -10,16 +10,16 @@ repository = "https://github.com/paritytech/substrate/" [dependencies] serde = { version = "1.0.101", optional = true } codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } -sp-keyring = { version = "2.0.0-dev", optional = true, path = "../../primitives/keyring" } -sp-std = { version = "2.0.0-dev", default-features = false, path = "../../primitives/std" } -sp-io = { version = "2.0.0-dev", default-features = false, path = "../../primitives/io" } -sp-runtime = { version = "2.0.0-dev", default-features = false, path = "../../primitives/runtime" } -sp-core = { version = "2.0.0-dev", default-features = false, path = "../../primitives/core" } -frame-support = { version = "2.0.0-dev", default-features = false, path = "../support" } -frame-system = { version = "2.0.0-dev", default-features = false, path = "../system" } +sp-keyring = { version = "2.0.0-alpha.1", optional = true, path = "../../primitives/keyring" } +sp-std = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/std" } +sp-io = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/io" } +sp-runtime = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/runtime" } +sp-core = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/core" } +frame-support = { version = "2.0.0-alpha.1", default-features = false, path = "../support" } +frame-system = { version = "2.0.0-alpha.1", default-features = false, path = "../system" } [dev-dependencies] -pallet-balances = { version = "2.0.0-dev", path = "../balances" } +pallet-balances = { version = "2.0.0-alpha.1", path = "../balances" } [features] default = ["std"] diff --git a/frame/membership/Cargo.toml b/frame/membership/Cargo.toml index 2e3356950b..4a66a2b04f 100644 --- a/frame/membership/Cargo.toml +++ b/frame/membership/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "pallet-membership" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" @@ -10,14 +10,14 @@ repository = "https://github.com/paritytech/substrate/" [dependencies] serde = { version = "1.0.101", optional = true } codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false } -sp-std = { version = "2.0.0-dev", default-features = false, path = "../../primitives/std" } -sp-io = { version = "2.0.0-dev", default-features = false, path = "../../primitives/io" } -frame-support = { version = "2.0.0-dev", default-features = false, path = "../support" } -frame-system = { version = "2.0.0-dev", default-features = false, path = "../system" } -sp-runtime = { version = "2.0.0-dev", default-features = false, path = "../../primitives/runtime" } +sp-std = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/std" } +sp-io = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/io" } +frame-support = { version = "2.0.0-alpha.1", default-features = false, path = "../support" } +frame-system = { version = "2.0.0-alpha.1", default-features = false, path = "../system" } +sp-runtime = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/runtime" } [dev-dependencies] -sp-core = { version = "2.0.0-dev", path = "../../primitives/core" } +sp-core = { version = "2.0.0-alpha.1", path = "../../primitives/core" } [features] default = ["std"] diff --git a/frame/metadata/Cargo.toml b/frame/metadata/Cargo.toml index 512898879a..9b53faed20 100644 --- a/frame/metadata/Cargo.toml +++ b/frame/metadata/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "frame-metadata" -version = "11.0.0-dev" +version = "11.0.0-alpha.1" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" @@ -10,8 +10,8 @@ repository = "https://github.com/paritytech/substrate/" [dependencies] codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } serde = { version = "1.0.101", optional = true, features = ["derive"] } -sp-std = { version = "2.0.0-dev", default-features = false, path = "../../primitives/std" } -sp-core = { version = "2.0.0-dev", default-features = false, path = "../../primitives/core" } +sp-std = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/std" } +sp-core = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/core" } [features] default = ["std"] diff --git a/frame/nicks/Cargo.toml b/frame/nicks/Cargo.toml index eedbaccfe5..ae3249368d 100644 --- a/frame/nicks/Cargo.toml +++ b/frame/nicks/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "pallet-nicks" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" @@ -10,15 +10,15 @@ repository = "https://github.com/paritytech/substrate/" [dependencies] serde = { version = "1.0.101", optional = true } codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } -sp-std = { version = "2.0.0-dev", default-features = false, path = "../../primitives/std" } -sp-io = { version = "2.0.0-dev", default-features = false, path = "../../primitives/io" } -sp-runtime = { version = "2.0.0-dev", default-features = false, path = "../../primitives/runtime" } -frame-support = { version = "2.0.0-dev", default-features = false, path = "../support" } -frame-system = { version = "2.0.0-dev", default-features = false, path = "../system" } +sp-std = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/std" } +sp-io = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/io" } +sp-runtime = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/runtime" } +frame-support = { version = "2.0.0-alpha.1", default-features = false, path = "../support" } +frame-system = { version = "2.0.0-alpha.1", default-features = false, path = "../system" } [dev-dependencies] -sp-core = { version = "2.0.0-dev", path = "../../primitives/core" } -pallet-balances = { version = "2.0.0-dev", path = "../balances" } +sp-core = { version = "2.0.0-alpha.1", path = "../../primitives/core" } +pallet-balances = { version = "2.0.0-alpha.1", path = "../balances" } [features] default = ["std"] diff --git a/frame/offences/Cargo.toml b/frame/offences/Cargo.toml index 1c244a7413..f8301ed488 100644 --- a/frame/offences/Cargo.toml +++ b/frame/offences/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "pallet-offences" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" @@ -8,18 +8,18 @@ homepage = "https://substrate.dev" repository = "https://github.com/paritytech/substrate/" [dependencies] -pallet-balances = { version = "2.0.0-dev", default-features = false, path = "../balances" } +pallet-balances = { version = "2.0.0-alpha.1", default-features = false, path = "../balances" } codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } -sp-std = { version = "2.0.0-dev", default-features = false, path = "../../primitives/std" } +sp-std = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/std" } serde = { version = "1.0.101", optional = true } -sp-runtime = { version = "2.0.0-dev", default-features = false, path = "../../primitives/runtime" } -sp-staking = { version = "2.0.0-dev", default-features = false, path = "../../primitives/staking" } -frame-support = { version = "2.0.0-dev", default-features = false, path = "../support" } -frame-system = { version = "2.0.0-dev", default-features = false, path = "../system" } +sp-runtime = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/runtime" } +sp-staking = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/staking" } +frame-support = { version = "2.0.0-alpha.1", default-features = false, path = "../support" } +frame-system = { version = "2.0.0-alpha.1", default-features = false, path = "../system" } [dev-dependencies] -sp-io = { version = "2.0.0-dev", path = "../../primitives/io" } -sp-core = { version = "2.0.0-dev", path = "../../primitives/core" } +sp-io = { version = "2.0.0-alpha.1", path = "../../primitives/io" } +sp-core = { version = "2.0.0-alpha.1", path = "../../primitives/core" } [features] default = ["std"] diff --git a/frame/randomness-collective-flip/Cargo.toml b/frame/randomness-collective-flip/Cargo.toml index d8bac86ab4..dc7e4c18fd 100644 --- a/frame/randomness-collective-flip/Cargo.toml +++ b/frame/randomness-collective-flip/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "pallet-randomness-collective-flip" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" @@ -10,14 +10,14 @@ repository = "https://github.com/paritytech/substrate/" [dependencies] safe-mix = { version = "1.0", default-features = false } codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } -sp-runtime = { version = "2.0.0-dev", default-features = false, path = "../../primitives/runtime" } -frame-support = { version = "2.0.0-dev", default-features = false, path = "../support" } -frame-system = { version = "2.0.0-dev", default-features = false, path = "../system" } -sp-std = { version = "2.0.0-dev", default-features = false, path = "../../primitives/std" } +sp-runtime = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/runtime" } +frame-support = { version = "2.0.0-alpha.1", default-features = false, path = "../support" } +frame-system = { version = "2.0.0-alpha.1", default-features = false, path = "../system" } +sp-std = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/std" } [dev-dependencies] -sp-core = { version = "2.0.0-dev", path = "../../primitives/core" } -sp-io = { version = "2.0.0-dev", path = "../../primitives/io" } +sp-core = { version = "2.0.0-alpha.1", path = "../../primitives/core" } +sp-io = { version = "2.0.0-alpha.1", path = "../../primitives/io" } [features] default = ["std"] diff --git a/frame/recovery/Cargo.toml b/frame/recovery/Cargo.toml index 13a74dcdcb..bab55baca0 100644 --- a/frame/recovery/Cargo.toml +++ b/frame/recovery/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "pallet-recovery" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" @@ -11,15 +11,15 @@ repository = "https://github.com/paritytech/substrate/" serde = { version = "1.0.101", optional = true } codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } enumflags2 = { version = "0.6.2" } -sp-std = { version = "2.0.0-dev", default-features = false, path = "../../primitives/std" } -sp-io = { version = "2.0.0-dev", default-features = false, path = "../../primitives/io" } -sp-runtime = { version = "2.0.0-dev", default-features = false, path = "../../primitives/runtime" } -frame-support = { version = "2.0.0-dev", default-features = false, path = "../support" } -frame-system = { version = "2.0.0-dev", default-features = false, path = "../system" } +sp-std = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/std" } +sp-io = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/io" } +sp-runtime = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/runtime" } +frame-support = { version = "2.0.0-alpha.1", default-features = false, path = "../support" } +frame-system = { version = "2.0.0-alpha.1", default-features = false, path = "../system" } [dev-dependencies] -sp-core = { version = "2.0.0-dev", path = "../../primitives/core" } -pallet-balances = { version = "2.0.0-dev", path = "../balances" } +sp-core = { version = "2.0.0-alpha.1", path = "../../primitives/core" } +pallet-balances = { version = "2.0.0-alpha.1", path = "../balances" } [features] default = ["std"] diff --git a/frame/scored-pool/Cargo.toml b/frame/scored-pool/Cargo.toml index b8ee128df6..106f47a253 100644 --- a/frame/scored-pool/Cargo.toml +++ b/frame/scored-pool/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "pallet-scored-pool" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" @@ -10,15 +10,15 @@ repository = "https://github.com/paritytech/substrate/" [dependencies] codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } serde = { version = "1.0.101", optional = true } -sp-io = { version = "2.0.0-dev", default-features = false, path = "../../primitives/io" } -sp-runtime = { version = "2.0.0-dev", default-features = false, path = "../../primitives/runtime" } -sp-std = { version = "2.0.0-dev", default-features = false, path = "../../primitives/std" } -frame-support = { version = "2.0.0-dev", default-features = false, path = "../support" } -frame-system = { version = "2.0.0-dev", default-features = false, path = "../system" } +sp-io = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/io" } +sp-runtime = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/runtime" } +sp-std = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/std" } +frame-support = { version = "2.0.0-alpha.1", default-features = false, path = "../support" } +frame-system = { version = "2.0.0-alpha.1", default-features = false, path = "../system" } [dev-dependencies] -pallet-balances = { version = "2.0.0-dev", path = "../balances" } -sp-core = { version = "2.0.0-dev", path = "../../primitives/core" } +pallet-balances = { version = "2.0.0-alpha.1", path = "../balances" } +sp-core = { version = "2.0.0-alpha.1", path = "../../primitives/core" } [features] default = ["std"] diff --git a/frame/session/Cargo.toml b/frame/session/Cargo.toml index bee544f99a..e09a268adb 100644 --- a/frame/session/Cargo.toml +++ b/frame/session/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "pallet-session" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" @@ -10,19 +10,19 @@ repository = "https://github.com/paritytech/substrate/" [dependencies] serde = { version = "1.0.101", optional = true } codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } -sp-std = { version = "2.0.0-dev", default-features = false, path = "../../primitives/std" } -sp-runtime = { version = "2.0.0-dev", default-features = false, path = "../../primitives/runtime" } -sp-staking = { version = "2.0.0-dev", default-features = false, path = "../../primitives/staking" } -frame-support = { version = "2.0.0-dev", default-features = false, path = "../support" } -frame-system = { version = "2.0.0-dev", default-features = false, path = "../system" } -pallet-timestamp = { version = "2.0.0-dev", default-features = false, path = "../timestamp" } -sp-trie = { optional = true, path = "../../primitives/trie", default-features = false , version = "2.0.0-dev"} -sp-io ={ path = "../../primitives/io", default-features = false , version = "2.0.0-dev"} +sp-std = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/std" } +sp-runtime = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/runtime" } +sp-staking = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/staking" } +frame-support = { version = "2.0.0-alpha.1", default-features = false, path = "../support" } +frame-system = { version = "2.0.0-alpha.1", default-features = false, path = "../system" } +pallet-timestamp = { version = "2.0.0-alpha.1", default-features = false, path = "../timestamp" } +sp-trie = { optional = true, path = "../../primitives/trie", default-features = false , version = "2.0.0-alpha.1"} +sp-io ={ path = "../../primitives/io", default-features = false , version = "2.0.0-alpha.1"} impl-trait-for-tuples = "0.1.3" [dev-dependencies] -sp-core = { version = "2.0.0-dev", path = "../../primitives/core" } -sp-application-crypto = { version = "2.0.0-dev", path = "../../primitives/application-crypto" } +sp-core = { version = "2.0.0-alpha.1", path = "../../primitives/core" } +sp-application-crypto = { version = "2.0.0-alpha.1", path = "../../primitives/application-crypto" } lazy_static = "1.4.0" [features] diff --git a/frame/society/Cargo.toml b/frame/society/Cargo.toml index 248820b522..99c6342242 100644 --- a/frame/society/Cargo.toml +++ b/frame/society/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "pallet-society" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" @@ -10,16 +10,16 @@ repository = "https://github.com/paritytech/substrate/" [dependencies] serde = { version = "1.0.101", optional = true } codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } -sp-io ={ path = "../../primitives/io", default-features = false , version = "2.0.0-dev"} -sp-runtime = { version = "2.0.0-dev", default-features = false, path = "../../primitives/runtime" } -sp-std = { version = "2.0.0-dev", default-features = false, path = "../../primitives/std" } -frame-support = { version = "2.0.0-dev", default-features = false, path = "../support" } -frame-system = { version = "2.0.0-dev", default-features = false, path = "../system" } +sp-io ={ path = "../../primitives/io", default-features = false , version = "2.0.0-alpha.1"} +sp-runtime = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/runtime" } +sp-std = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/std" } +frame-support = { version = "2.0.0-alpha.1", default-features = false, path = "../support" } +frame-system = { version = "2.0.0-alpha.1", default-features = false, path = "../system" } rand_chacha = { version = "0.2", default-features = false } [dev-dependencies] -sp-core = { version = "2.0.0-dev", path = "../../primitives/core" } -pallet-balances = { version = "2.0.0-dev", path = "../balances" } +sp-core = { version = "2.0.0-alpha.1", path = "../../primitives/core" } +pallet-balances = { version = "2.0.0-alpha.1", path = "../balances" } [features] default = ["std"] diff --git a/frame/staking/Cargo.toml b/frame/staking/Cargo.toml index 7eb7772054..5778696297 100644 --- a/frame/staking/Cargo.toml +++ b/frame/staking/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "pallet-staking" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" @@ -10,23 +10,23 @@ repository = "https://github.com/paritytech/substrate/" [dependencies] serde = { version = "1.0.101", optional = true } codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } -sp-keyring = { version = "2.0.0-dev", optional = true, path = "../../primitives/keyring" } -sp-std = { version = "2.0.0-dev", default-features = false, path = "../../primitives/std" } -sp-phragmen = { version = "2.0.0-dev", default-features = false, path = "../../primitives/phragmen" } -sp-io ={ path = "../../primitives/io", default-features = false , version = "2.0.0-dev"} -sp-runtime = { version = "2.0.0-dev", default-features = false, path = "../../primitives/runtime" } -sp-staking = { version = "2.0.0-dev", default-features = false, path = "../../primitives/staking" } -frame-support = { version = "2.0.0-dev", default-features = false, path = "../support" } -frame-system = { version = "2.0.0-dev", default-features = false, path = "../system" } -pallet-session = { version = "2.0.0-dev", features = ["historical"], path = "../session", default-features = false } -pallet-authorship = { version = "2.0.0-dev", default-features = false, path = "../authorship" } +sp-keyring = { version = "2.0.0-alpha.1", optional = true, path = "../../primitives/keyring" } +sp-std = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/std" } +sp-phragmen = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/phragmen" } +sp-io ={ path = "../../primitives/io", default-features = false , version = "2.0.0-alpha.1"} +sp-runtime = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/runtime" } +sp-staking = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/staking" } +frame-support = { version = "2.0.0-alpha.1", default-features = false, path = "../support" } +frame-system = { version = "2.0.0-alpha.1", default-features = false, path = "../system" } +pallet-session = { version = "2.0.0-alpha.1", features = ["historical"], path = "../session", default-features = false } +pallet-authorship = { version = "2.0.0-alpha.1", default-features = false, path = "../authorship" } [dev-dependencies] -sp-core = { version = "2.0.0-dev", path = "../../primitives/core" } -pallet-balances = { version = "2.0.0-dev", path = "../balances" } -pallet-timestamp = { version = "2.0.0-dev", path = "../timestamp" } -pallet-staking-reward-curve = { version = "2.0.0-dev", path = "../staking/reward-curve" } -substrate-test-utils = { version = "2.0.0-dev", path = "../../test-utils" } +sp-core = { version = "2.0.0-alpha.1", path = "../../primitives/core" } +pallet-balances = { version = "2.0.0-alpha.1", path = "../balances" } +pallet-timestamp = { version = "2.0.0-alpha.1", path = "../timestamp" } +pallet-staking-reward-curve = { version = "2.0.0-alpha.1", path = "../staking/reward-curve" } +substrate-test-utils = { version = "2.0.0-alpha.1", path = "../../test-utils" } [features] migrate = [] diff --git a/frame/staking/reward-curve/Cargo.toml b/frame/staking/reward-curve/Cargo.toml index 95567f167f..e414d544da 100644 --- a/frame/staking/reward-curve/Cargo.toml +++ b/frame/staking/reward-curve/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "pallet-staking-reward-curve" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" @@ -17,4 +17,4 @@ proc-macro2 = "1.0.6" proc-macro-crate = "0.1.4" [dev-dependencies] -sp-runtime = { version = "2.0.0-dev", path = "../../../primitives/runtime" } +sp-runtime = { version = "2.0.0-alpha.1", path = "../../../primitives/runtime" } diff --git a/frame/sudo/Cargo.toml b/frame/sudo/Cargo.toml index 979d58ee4e..fa2797d2f6 100644 --- a/frame/sudo/Cargo.toml +++ b/frame/sudo/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "pallet-sudo" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" @@ -10,14 +10,14 @@ repository = "https://github.com/paritytech/substrate/" [dependencies] serde = { version = "1.0.101", optional = true } codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } -sp-std = { version = "2.0.0-dev", default-features = false, path = "../../primitives/std" } -sp-io = { version = "2.0.0-dev", default-features = false, path = "../../primitives/io" } -sp-runtime = { version = "2.0.0-dev", default-features = false, path = "../../primitives/runtime" } -frame-support = { version = "2.0.0-dev", default-features = false, path = "../support" } -frame-system = { version = "2.0.0-dev", default-features = false, path = "../system" } +sp-std = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/std" } +sp-io = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/io" } +sp-runtime = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/runtime" } +frame-support = { version = "2.0.0-alpha.1", default-features = false, path = "../support" } +frame-system = { version = "2.0.0-alpha.1", default-features = false, path = "../system" } [dev-dependencies] -sp-core = { version = "2.0.0-dev", path = "../../primitives/core" } +sp-core = { version = "2.0.0-alpha.1", path = "../../primitives/core" } [features] default = ["std"] diff --git a/frame/support/Cargo.toml b/frame/support/Cargo.toml index 08c81ba5ef..e26cd64d52 100644 --- a/frame/support/Cargo.toml +++ b/frame/support/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "frame-support" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" @@ -11,24 +11,24 @@ repository = "https://github.com/paritytech/substrate/" log = "0.4" serde = { version = "1.0.101", optional = true, features = ["derive"] } codec = { package = "parity-scale-codec", version = "1.0.6", default-features = false, features = ["derive"] } -frame-metadata = { version = "11.0.0-dev", default-features = false, path = "../metadata" } -sp-std = { version = "2.0.0-dev", default-features = false, path = "../../primitives/std" } -sp-io ={ path = "../../primitives/io", default-features = false , version = "2.0.0-dev"} -sp-runtime = { version = "2.0.0-dev", default-features = false, path = "../../primitives/runtime" } -sp-core = { version = "2.0.0-dev", default-features = false, path = "../../primitives/core" } -sp-arithmetic = { version = "2.0.0-dev", default-features = false, path = "../../primitives/arithmetic" } -sp-inherents = { version = "2.0.0-dev", default-features = false, path = "../../primitives/inherents" } -frame-support-procedural = { version = "2.0.0-dev", path = "./procedural" } +frame-metadata = { version = "11.0.0-alpha.1", default-features = false, path = "../metadata" } +sp-std = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/std" } +sp-io ={ path = "../../primitives/io", default-features = false , version = "2.0.0-alpha.1"} +sp-runtime = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/runtime" } +sp-core = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/core" } +sp-arithmetic = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/arithmetic" } +sp-inherents = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/inherents" } +frame-support-procedural = { version = "2.0.0-alpha.1", path = "./procedural" } paste = "0.1.6" once_cell = { version = "1", default-features = false, optional = true } -sp-state-machine = { version = "0.8.0-dev", optional = true, path = "../../primitives/state-machine" } +sp-state-machine = { version = "0.8.0-alpha.1", optional = true, path = "../../primitives/state-machine" } bitmask = { version = "0.5.0", default-features = false } impl-trait-for-tuples = "0.1.3" tracing = { version = "0.1.10", optional = true } [dev-dependencies] pretty_assertions = "0.6.1" -frame-system = { version = "2.0.0-dev", path = "../system" } +frame-system = { version = "2.0.0-alpha.1", path = "../system" } [features] default = ["std"] diff --git a/frame/support/procedural/Cargo.toml b/frame/support/procedural/Cargo.toml index 965f964b2d..4b39cf8ed4 100644 --- a/frame/support/procedural/Cargo.toml +++ b/frame/support/procedural/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "frame-support-procedural" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" @@ -11,7 +11,7 @@ repository = "https://github.com/paritytech/substrate/" proc-macro = true [dependencies] -frame-support-procedural-tools = { version = "2.0.0-dev", path = "./tools" } +frame-support-procedural-tools = { version = "2.0.0-alpha.1", path = "./tools" } proc-macro2 = "1.0.6" quote = "1.0.2" syn = { version = "1.0.7", features = ["full"] } diff --git a/frame/support/procedural/tools/Cargo.toml b/frame/support/procedural/tools/Cargo.toml index c1f56fecc7..1c3a0f60d5 100644 --- a/frame/support/procedural/tools/Cargo.toml +++ b/frame/support/procedural/tools/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "frame-support-procedural-tools" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" @@ -8,7 +8,7 @@ homepage = "https://substrate.dev" repository = "https://github.com/paritytech/substrate/" [dependencies] -frame-support-procedural-tools-derive = { version = "2.0.0-dev", path = "./derive" } +frame-support-procedural-tools-derive = { version = "2.0.0-alpha.1", path = "./derive" } proc-macro2 = "1.0.6" quote = "1.0.2" syn = { version = "1.0.7", features = ["full", "visit"] } diff --git a/frame/support/procedural/tools/derive/Cargo.toml b/frame/support/procedural/tools/derive/Cargo.toml index 6eee6d3186..98b9d79702 100644 --- a/frame/support/procedural/tools/derive/Cargo.toml +++ b/frame/support/procedural/tools/derive/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "frame-support-procedural-tools-derive" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" diff --git a/frame/support/test/Cargo.toml b/frame/support/test/Cargo.toml index df66918a2e..594d4379fd 100644 --- a/frame/support/test/Cargo.toml +++ b/frame/support/test/Cargo.toml @@ -11,12 +11,12 @@ repository = "https://github.com/paritytech/substrate/" [dependencies] serde = { version = "1.0.101", default-features = false, features = ["derive"] } codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } -sp-io ={ path = "../../../primitives/io", default-features = false , version = "2.0.0-dev"} -sp-state-machine = { version = "0.8.0-dev", optional = true, path = "../../../primitives/state-machine" } -frame-support = { version = "2.0.0-dev", default-features = false, path = "../" } -sp-inherents = { version = "2.0.0-dev", default-features = false, path = "../../../primitives/inherents" } -sp-runtime = { version = "2.0.0-dev", default-features = false, path = "../../../primitives/runtime" } -sp-core = { version = "2.0.0-dev", default-features = false, path = "../../../primitives/core" } +sp-io ={ path = "../../../primitives/io", default-features = false , version = "2.0.0-alpha.1"} +sp-state-machine = { version = "0.8.0-alpha.1", optional = true, path = "../../../primitives/state-machine" } +frame-support = { version = "2.0.0-alpha.1", default-features = false, path = "../" } +sp-inherents = { version = "2.0.0-alpha.1", default-features = false, path = "../../../primitives/inherents" } +sp-runtime = { version = "2.0.0-alpha.1", default-features = false, path = "../../../primitives/runtime" } +sp-core = { version = "2.0.0-alpha.1", default-features = false, path = "../../../primitives/core" } trybuild = "1.0.17" pretty_assertions = "0.6.1" diff --git a/frame/system/Cargo.toml b/frame/system/Cargo.toml index 0c779e5d34..e3a347c588 100644 --- a/frame/system/Cargo.toml +++ b/frame/system/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "frame-system" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" @@ -10,17 +10,17 @@ repository = "https://github.com/paritytech/substrate/" [dependencies] serde = { version = "1.0.101", optional = true, features = ["derive"] } codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } -sp-core = { version = "2.0.0-dev", default-features = false, path = "../../primitives/core" } -sp-std = { version = "2.0.0-dev", default-features = false, path = "../../primitives/std" } -sp-io ={ path = "../../primitives/io", default-features = false , version = "2.0.0-dev"} -sp-runtime = { version = "2.0.0-dev", default-features = false, path = "../../primitives/runtime" } -sp-version = { version = "2.0.0-dev", default-features = false, path = "../../primitives/version" } -frame-support = { version = "2.0.0-dev", default-features = false, path = "../support" } +sp-core = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/core" } +sp-std = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/std" } +sp-io ={ path = "../../primitives/io", default-features = false , version = "2.0.0-alpha.1"} +sp-runtime = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/runtime" } +sp-version = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/version" } +frame-support = { version = "2.0.0-alpha.1", default-features = false, path = "../support" } impl-trait-for-tuples = "0.1.3" [dev-dependencies] criterion = "0.2.11" -sp-externalities = { version = "0.8.0-dev", path = "../../primitives/externalities" } +sp-externalities = { version = "0.8.0-alpha.1", path = "../../primitives/externalities" } substrate-test-runtime-client = { version = "2.0.0-dev", path = "../../test-utils/runtime/client" } [features] diff --git a/frame/system/rpc/runtime-api/Cargo.toml b/frame/system/rpc/runtime-api/Cargo.toml index 1d1ed8da47..99aa57eaf3 100644 --- a/frame/system/rpc/runtime-api/Cargo.toml +++ b/frame/system/rpc/runtime-api/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "frame-system-rpc-runtime-api" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" @@ -8,7 +8,7 @@ homepage = "https://substrate.dev" repository = "https://github.com/paritytech/substrate/" [dependencies] -sp-api = { version = "2.0.0-dev", default-features = false, path = "../../../../primitives/api" } +sp-api = { version = "2.0.0-alpha.1", default-features = false, path = "../../../../primitives/api" } codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false } [features] diff --git a/frame/timestamp/Cargo.toml b/frame/timestamp/Cargo.toml index 136036b307..a6f3da7ea4 100644 --- a/frame/timestamp/Cargo.toml +++ b/frame/timestamp/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "pallet-timestamp" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" @@ -10,19 +10,19 @@ repository = "https://github.com/paritytech/substrate/" [dependencies] serde = { version = "1.0.101", optional = true } codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } -sp-std = { version = "2.0.0-dev", default-features = false, path = "../../primitives/std" } -sp-io = { version = "2.0.0-dev", default-features = false, path = "../../primitives/io" } -sp-runtime = { version = "2.0.0-dev", default-features = false, path = "../../primitives/runtime" } -sp-inherents = { version = "2.0.0-dev", default-features = false, path = "../../primitives/inherents" } -frame-benchmarking = { version = "2.0.0-dev", default-features = false, path = "../benchmarking" } -frame-support = { version = "2.0.0-dev", default-features = false, path = "../support" } -frame-system = { version = "2.0.0-dev", default-features = false, path = "../system" } -sp-timestamp = { version = "2.0.0-dev", default-features = false, path = "../../primitives/timestamp" } +sp-std = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/std" } +sp-io = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/io" } +sp-runtime = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/runtime" } +sp-inherents = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/inherents" } +frame-benchmarking = { version = "2.0.0-alpha.1", default-features = false, path = "../benchmarking" } +frame-support = { version = "2.0.0-alpha.1", default-features = false, path = "../support" } +frame-system = { version = "2.0.0-alpha.1", default-features = false, path = "../system" } +sp-timestamp = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/timestamp" } impl-trait-for-tuples = "0.1.3" [dev-dependencies] -sp-io ={ version = "2.0.0-dev", path = "../../primitives/io" } -sp-core = { version = "2.0.0-dev", path = "../../primitives/core" } +sp-io ={ version = "2.0.0-alpha.1", path = "../../primitives/io" } +sp-core = { version = "2.0.0-alpha.1", path = "../../primitives/core" } [features] default = ["std"] diff --git a/frame/transaction-payment/Cargo.toml b/frame/transaction-payment/Cargo.toml index f989a7e339..d60dbdaaf6 100644 --- a/frame/transaction-payment/Cargo.toml +++ b/frame/transaction-payment/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "pallet-transaction-payment" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" @@ -9,16 +9,16 @@ repository = "https://github.com/paritytech/substrate/" [dependencies] codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } -sp-std = { version = "2.0.0-dev", default-features = false, path = "../../primitives/std" } -sp-runtime = { version = "2.0.0-dev", default-features = false, path = "../../primitives/runtime" } -frame-support = { version = "2.0.0-dev", default-features = false, path = "../support" } -frame-system = { version = "2.0.0-dev", default-features = false, path = "../system" } -pallet-transaction-payment-rpc-runtime-api = { version = "2.0.0-dev", default-features = false, path = "./rpc/runtime-api" } +sp-std = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/std" } +sp-runtime = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/runtime" } +frame-support = { version = "2.0.0-alpha.1", default-features = false, path = "../support" } +frame-system = { version = "2.0.0-alpha.1", default-features = false, path = "../system" } +pallet-transaction-payment-rpc-runtime-api = { version = "2.0.0-alpha.1", default-features = false, path = "./rpc/runtime-api" } [dev-dependencies] -sp-io = { version = "2.0.0-dev", path = "../../primitives/io" } -sp-core = { version = "2.0.0-dev", path = "../../primitives/core" } -pallet-balances = { version = "2.0.0-dev", path = "../balances" } +sp-io = { version = "2.0.0-alpha.1", path = "../../primitives/io" } +sp-core = { version = "2.0.0-alpha.1", path = "../../primitives/core" } +pallet-balances = { version = "2.0.0-alpha.1", path = "../balances" } [features] default = ["std"] diff --git a/frame/transaction-payment/rpc/Cargo.toml b/frame/transaction-payment/rpc/Cargo.toml index c8f3aa2776..689d3642cd 100644 --- a/frame/transaction-payment/rpc/Cargo.toml +++ b/frame/transaction-payment/rpc/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "pallet-transaction-payment-rpc" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" @@ -12,10 +12,10 @@ codec = { package = "parity-scale-codec", version = "1.0.0" } jsonrpc-core = "14.0.3" jsonrpc-core-client = "14.0.3" jsonrpc-derive = "14.0.3" -sp-core = { version = "2.0.0-dev", path = "../../../primitives/core" } -sp-rpc = { version = "2.0.0-dev", path = "../../../primitives/rpc" } +sp-core = { version = "2.0.0-alpha.1", path = "../../../primitives/core" } +sp-rpc = { version = "2.0.0-alpha.1", path = "../../../primitives/rpc" } serde = { version = "1.0.101", features = ["derive"] } -sp-runtime = { version = "2.0.0-dev", path = "../../../primitives/runtime" } -sp-api = { version = "2.0.0-dev", path = "../../../primitives/api" } -sp-blockchain = { version = "2.0.0-dev", path = "../../../primitives/blockchain" } -pallet-transaction-payment-rpc-runtime-api = { version = "2.0.0-dev", path = "./runtime-api" } +sp-runtime = { version = "2.0.0-alpha.1", path = "../../../primitives/runtime" } +sp-api = { version = "2.0.0-alpha.1", path = "../../../primitives/api" } +sp-blockchain = { version = "2.0.0-alpha.1", path = "../../../primitives/blockchain" } +pallet-transaction-payment-rpc-runtime-api = { version = "2.0.0-alpha.1", path = "./runtime-api" } diff --git a/frame/transaction-payment/rpc/runtime-api/Cargo.toml b/frame/transaction-payment/rpc/runtime-api/Cargo.toml index f42ffabbef..0b2dce0f55 100644 --- a/frame/transaction-payment/rpc/runtime-api/Cargo.toml +++ b/frame/transaction-payment/rpc/runtime-api/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "pallet-transaction-payment-rpc-runtime-api" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" @@ -9,11 +9,11 @@ repository = "https://github.com/paritytech/substrate/" [dependencies] serde = { version = "1.0.101", optional = true, features = ["derive"] } -sp-api = { version = "2.0.0-dev", default-features = false, path = "../../../../primitives/api" } +sp-api = { version = "2.0.0-alpha.1", default-features = false, path = "../../../../primitives/api" } codec = { package = "parity-scale-codec", version = "1.0.6", default-features = false, features = ["derive"] } -sp-std = { version = "2.0.0-dev", default-features = false, path = "../../../../primitives/std" } -sp-runtime = { version = "2.0.0-dev", default-features = false, path = "../../../../primitives/runtime" } -frame-support = { version = "2.0.0-dev", default-features = false, path = "../../../support" } +sp-std = { version = "2.0.0-alpha.1", default-features = false, path = "../../../../primitives/std" } +sp-runtime = { version = "2.0.0-alpha.1", default-features = false, path = "../../../../primitives/runtime" } +frame-support = { version = "2.0.0-alpha.1", default-features = false, path = "../../../support" } [dev-dependencies] serde_json = "1.0.41" diff --git a/frame/treasury/Cargo.toml b/frame/treasury/Cargo.toml index cac17bd8ad..2da2104e1c 100644 --- a/frame/treasury/Cargo.toml +++ b/frame/treasury/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "pallet-treasury" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" @@ -10,15 +10,15 @@ repository = "https://github.com/paritytech/substrate/" [dependencies] serde = { version = "1.0.101", optional = true, features = ["derive"] } codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } -sp-std = { version = "2.0.0-dev", default-features = false, path = "../../primitives/std" } -sp-runtime = { version = "2.0.0-dev", default-features = false, path = "../../primitives/runtime" } -frame-support = { version = "2.0.0-dev", default-features = false, path = "../support" } -frame-system = { version = "2.0.0-dev", default-features = false, path = "../system" } -pallet-balances = { version = "2.0.0-dev", default-features = false, path = "../balances" } +sp-std = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/std" } +sp-runtime = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/runtime" } +frame-support = { version = "2.0.0-alpha.1", default-features = false, path = "../support" } +frame-system = { version = "2.0.0-alpha.1", default-features = false, path = "../system" } +pallet-balances = { version = "2.0.0-alpha.1", default-features = false, path = "../balances" } [dev-dependencies] -sp-io ={ version = "2.0.0-dev", path = "../../primitives/io" } -sp-core = { version = "2.0.0-dev", path = "../../primitives/core" } +sp-io ={ version = "2.0.0-alpha.1", path = "../../primitives/io" } +sp-core = { version = "2.0.0-alpha.1", path = "../../primitives/core" } [features] default = ["std"] diff --git a/frame/utility/Cargo.toml b/frame/utility/Cargo.toml index 3514a39739..3aec9fc868 100644 --- a/frame/utility/Cargo.toml +++ b/frame/utility/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "pallet-utility" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" @@ -10,16 +10,16 @@ repository = "https://github.com/paritytech/substrate/" [dependencies] serde = { version = "1.0.101", optional = true } codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false } -frame-support = { version = "2.0.0-dev", default-features = false, path = "../support" } -frame-system = { version = "2.0.0-dev", default-features = false, path = "../system" } -sp-core = { version = "2.0.0-dev", default-features = false, path = "../../primitives/core" } -sp-runtime = { version = "2.0.0-dev", default-features = false, path = "../../primitives/runtime" } -sp-std = { version = "2.0.0-dev", default-features = false, path = "../../primitives/std" } -sp-io = { version = "2.0.0-dev", default-features = false, path = "../../primitives/io" } +frame-support = { version = "2.0.0-alpha.1", default-features = false, path = "../support" } +frame-system = { version = "2.0.0-alpha.1", default-features = false, path = "../system" } +sp-core = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/core" } +sp-runtime = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/runtime" } +sp-std = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/std" } +sp-io = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/io" } [dev-dependencies] -sp-core = { version = "2.0.0-dev", path = "../../primitives/core" } -pallet-balances = { version = "2.0.0-dev", path = "../balances" } +sp-core = { version = "2.0.0-alpha.1", path = "../../primitives/core" } +pallet-balances = { version = "2.0.0-alpha.1", path = "../balances" } [features] default = ["std"] diff --git a/frame/vesting/Cargo.toml b/frame/vesting/Cargo.toml index f1bf0812de..76fec97201 100644 --- a/frame/vesting/Cargo.toml +++ b/frame/vesting/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "pallet-vesting" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" @@ -11,16 +11,16 @@ repository = "https://github.com/paritytech/substrate/" serde = { version = "1.0.101", optional = true } codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } enumflags2 = { version = "0.6.2" } -sp-std = { version = "2.0.0-dev", default-features = false, path = "../../primitives/std" } -sp-io = { version = "2.0.0-dev", default-features = false, path = "../../primitives/io" } -sp-runtime = { version = "2.0.0-dev", default-features = false, path = "../../primitives/runtime" } -frame-support = { version = "2.0.0-dev", default-features = false, path = "../support" } -frame-system = { version = "2.0.0-dev", default-features = false, path = "../system" } +sp-std = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/std" } +sp-io = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/io" } +sp-runtime = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/runtime" } +frame-support = { version = "2.0.0-alpha.1", default-features = false, path = "../support" } +frame-system = { version = "2.0.0-alpha.1", default-features = false, path = "../system" } [dev-dependencies] -sp-core = { version = "2.0.0-dev", path = "../../primitives/core" } -pallet-balances = { version = "2.0.0-dev", path = "../balances" } -sp-storage = { version = "2.0.0-dev", path = "../../primitives/storage" } +sp-core = { version = "2.0.0-alpha.1", path = "../../primitives/core" } +pallet-balances = { version = "2.0.0-alpha.1", path = "../balances" } +sp-storage = { version = "2.0.0-alpha.1", path = "../../primitives/storage" } hex-literal = "0.2.1" [features] diff --git a/primitives/allocator/Cargo.toml b/primitives/allocator/Cargo.toml index c122931850..90c7d92238 100644 --- a/primitives/allocator/Cargo.toml +++ b/primitives/allocator/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "sp-allocator" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" @@ -8,9 +8,9 @@ homepage = "https://substrate.dev" repository = "https://github.com/paritytech/substrate/" [dependencies] -sp-std = { version = "2.0.0-dev", path = "../std", default-features = false } -sp-core = { version = "2.0.0-dev", path = "../core", default-features = false } -sp-wasm-interface = { version = "2.0.0-dev", path = "../wasm-interface", default-features = false } +sp-std = { version = "2.0.0-alpha.1", path = "../std", default-features = false } +sp-core = { version = "2.0.0-alpha.1", path = "../core", default-features = false } +sp-wasm-interface = { version = "2.0.0-alpha.1", path = "../wasm-interface", default-features = false } log = { version = "0.4.8", optional = true } derive_more = { version = "0.99.2", optional = true } diff --git a/primitives/api/Cargo.toml b/primitives/api/Cargo.toml index 503dedc34d..165d05f028 100644 --- a/primitives/api/Cargo.toml +++ b/primitives/api/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "sp-api" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" @@ -9,12 +9,12 @@ repository = "https://github.com/paritytech/substrate/" [dependencies] codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false } -sp-api-proc-macro = { version = "2.0.0-dev", path = "proc-macro" } -sp-core = { version = "2.0.0-dev", default-features = false, path = "../core" } -sp-std = { version = "2.0.0-dev", default-features = false, path = "../std" } -sp-runtime = { version = "2.0.0-dev", default-features = false, path = "../runtime" } -sp-version = { version = "2.0.0-dev", default-features = false, path = "../version" } -sp-state-machine = { version = "0.8.0-dev", optional = true, path = "../../primitives/state-machine" } +sp-api-proc-macro = { version = "2.0.0-alpha.1", path = "proc-macro" } +sp-core = { version = "2.0.0-alpha.1", default-features = false, path = "../core" } +sp-std = { version = "2.0.0-alpha.1", default-features = false, path = "../std" } +sp-runtime = { version = "2.0.0-alpha.1", default-features = false, path = "../runtime" } +sp-version = { version = "2.0.0-alpha.1", default-features = false, path = "../version" } +sp-state-machine = { version = "0.8.0-alpha.1", optional = true, path = "../../primitives/state-machine" } hash-db = { version = "0.15.2", optional = true } [dev-dependencies] diff --git a/primitives/api/proc-macro/Cargo.toml b/primitives/api/proc-macro/Cargo.toml index f9a56842ad..0a659c626b 100644 --- a/primitives/api/proc-macro/Cargo.toml +++ b/primitives/api/proc-macro/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "sp-api-proc-macro" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" diff --git a/primitives/api/test/Cargo.toml b/primitives/api/test/Cargo.toml index f94f97d2e7..aa538754a7 100644 --- a/primitives/api/test/Cargo.toml +++ b/primitives/api/test/Cargo.toml @@ -9,14 +9,14 @@ homepage = "https://substrate.dev" repository = "https://github.com/paritytech/substrate/" [dependencies] -sp-api = { version = "2.0.0-dev", path = "../" } +sp-api = { version = "2.0.0-alpha.1", path = "../" } substrate-test-runtime-client = { version = "2.0.0-dev", path = "../../../test-utils/runtime/client" } -sp-version = { version = "2.0.0-dev", path = "../../version" } -sp-runtime = { version = "2.0.0-dev", path = "../../runtime" } -sp-blockchain = { version = "2.0.0-dev", path = "../../blockchain" } -sp-consensus = { version = "0.8.0-dev", path = "../../../primitives/consensus/common" } +sp-version = { version = "2.0.0-alpha.1", path = "../../version" } +sp-runtime = { version = "2.0.0-alpha.1", path = "../../runtime" } +sp-blockchain = { version = "2.0.0-alpha.1", path = "../../blockchain" } +sp-consensus = { version = "0.8.0-alpha.1", path = "../../../primitives/consensus/common" } codec = { package = "parity-scale-codec", version = "1.0.0" } -sp-state-machine = { version = "0.8.0-dev", path = "../../../primitives/state-machine" } +sp-state-machine = { version = "0.8.0-alpha.1", path = "../../../primitives/state-machine" } trybuild = "1.0.17" rustversion = "1.0.0" diff --git a/primitives/application-crypto/Cargo.toml b/primitives/application-crypto/Cargo.toml index 4459389dc6..f8d36e4db8 100644 --- a/primitives/application-crypto/Cargo.toml +++ b/primitives/application-crypto/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "sp-application-crypto" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" authors = ["Parity Technologies "] edition = "2018" description = "Provides facilities for generating application specific crypto wrapper types." @@ -9,11 +9,11 @@ homepage = "https://substrate.dev" repository = "https://github.com/paritytech/substrate/" [dependencies] -sp-core = { version = "2.0.0-dev", default-features = false, path = "../core" } +sp-core = { version = "2.0.0-alpha.1", default-features = false, path = "../core" } codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } serde = { version = "1.0.101", optional = true, features = ["derive"] } -sp-std = { version = "2.0.0-dev", default-features = false, path = "../std" } -sp-io = { version = "2.0.0-dev", default-features = false, path = "../../primitives/io" } +sp-std = { version = "2.0.0-alpha.1", default-features = false, path = "../std" } +sp-io = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/io" } [features] default = [ "std" ] diff --git a/primitives/application-crypto/test/Cargo.toml b/primitives/application-crypto/test/Cargo.toml index cc2fd0abd2..ab84cdd0a6 100644 --- a/primitives/application-crypto/test/Cargo.toml +++ b/primitives/application-crypto/test/Cargo.toml @@ -10,8 +10,8 @@ homepage = "https://substrate.dev" repository = "https://github.com/paritytech/substrate/" [dependencies] -sp-core = { version = "2.0.0-dev", default-features = false, path = "../../core" } +sp-core = { version = "2.0.0-alpha.1", default-features = false, path = "../../core" } substrate-test-runtime-client = { version = "2.0.0-dev", path = "../../../test-utils/runtime/client" } -sp-runtime = { version = "2.0.0-dev", path = "../../runtime" } -sp-api = { version = "2.0.0-dev", path = "../../api" } -sp-application-crypto = { version = "2.0.0-dev", path = "../" } +sp-runtime = { version = "2.0.0-alpha.1", path = "../../runtime" } +sp-api = { version = "2.0.0-alpha.1", path = "../../api" } +sp-application-crypto = { version = "2.0.0-alpha.1", path = "../" } diff --git a/primitives/arithmetic/Cargo.toml b/primitives/arithmetic/Cargo.toml index f327d091f6..e8d73f595d 100644 --- a/primitives/arithmetic/Cargo.toml +++ b/primitives/arithmetic/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "sp-arithmetic" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" @@ -11,9 +11,9 @@ repository = "https://github.com/paritytech/substrate/" codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } integer-sqrt = "0.1.2" num-traits = { version = "0.2.8", default-features = false } -sp-std = { version = "2.0.0-dev", default-features = false, path = "../std" } +sp-std = { version = "2.0.0-alpha.1", default-features = false, path = "../std" } serde = { version = "1.0.101", optional = true, features = ["derive"] } -sp-debug-derive = { version = "2.0.0-dev", default-features = false, path = "../../primitives/debug-derive" } +sp-debug-derive = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/debug-derive" } [dev-dependencies] primitive-types = "0.6.2" diff --git a/primitives/authority-discovery/Cargo.toml b/primitives/authority-discovery/Cargo.toml index 765f3a14c4..d5800bc566 100644 --- a/primitives/authority-discovery/Cargo.toml +++ b/primitives/authority-discovery/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "sp-authority-discovery" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" authors = ["Parity Technologies "] description = "Authority discovery primitives" edition = "2018" @@ -9,11 +9,11 @@ homepage = "https://substrate.dev" repository = "https://github.com/paritytech/substrate/" [dependencies] -sp-application-crypto = { version = "2.0.0-dev", default-features = false, path = "../application-crypto" } +sp-application-crypto = { version = "2.0.0-alpha.1", default-features = false, path = "../application-crypto" } codec = { package = "parity-scale-codec", default-features = false, version = "1.0.3" } -sp-std = { version = "2.0.0-dev", default-features = false, path = "../std" } -sp-api = { version = "2.0.0-dev", default-features = false, path = "../api" } -sp-runtime = { version = "2.0.0-dev", default-features = false, path = "../runtime" } +sp-std = { version = "2.0.0-alpha.1", default-features = false, path = "../std" } +sp-api = { version = "2.0.0-alpha.1", default-features = false, path = "../api" } +sp-runtime = { version = "2.0.0-alpha.1", default-features = false, path = "../runtime" } [features] default = ["std"] diff --git a/primitives/authorship/Cargo.toml b/primitives/authorship/Cargo.toml index 8bf4e935a2..bc4840278a 100644 --- a/primitives/authorship/Cargo.toml +++ b/primitives/authorship/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "sp-authorship" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" authors = ["Parity Technologies "] description = "Authorship primitives" edition = "2018" @@ -9,9 +9,9 @@ homepage = "https://substrate.dev" repository = "https://github.com/paritytech/substrate/" [dependencies] -sp-inherents = { version = "2.0.0-dev", default-features = false, path = "../inherents" } -sp-runtime = { version = "2.0.0-dev", default-features = false, path = "../runtime" } -sp-std = { version = "2.0.0-dev", default-features = false, path = "../std" } +sp-inherents = { version = "2.0.0-alpha.1", default-features = false, path = "../inherents" } +sp-runtime = { version = "2.0.0-alpha.1", default-features = false, path = "../runtime" } +sp-std = { version = "2.0.0-alpha.1", default-features = false, path = "../std" } codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } [features] diff --git a/primitives/block-builder/Cargo.toml b/primitives/block-builder/Cargo.toml index c8f6c86449..cf6f7654fc 100644 --- a/primitives/block-builder/Cargo.toml +++ b/primitives/block-builder/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "sp-block-builder" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" @@ -8,11 +8,11 @@ homepage = "https://substrate.dev" repository = "https://github.com/paritytech/substrate/" [dependencies] -sp-runtime = { version = "2.0.0-dev", default-features = false, path = "../runtime" } -sp-api = { version = "2.0.0-dev", default-features = false, path = "../api" } -sp-std = { version = "2.0.0-dev", default-features = false, path = "../std" } +sp-runtime = { version = "2.0.0-alpha.1", default-features = false, path = "../runtime" } +sp-api = { version = "2.0.0-alpha.1", default-features = false, path = "../api" } +sp-std = { version = "2.0.0-alpha.1", default-features = false, path = "../std" } codec = { package = "parity-scale-codec", version = "1.0.6", default-features = false } -sp-inherents = { version = "2.0.0-dev", default-features = false, path = "../inherents" } +sp-inherents = { version = "2.0.0-alpha.1", default-features = false, path = "../inherents" } [features] default = [ "std" ] diff --git a/primitives/blockchain/Cargo.toml b/primitives/blockchain/Cargo.toml index afaca88fe5..19cdcf1481 100644 --- a/primitives/blockchain/Cargo.toml +++ b/primitives/blockchain/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "sp-blockchain" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" @@ -13,7 +13,7 @@ lru = "0.4.0" parking_lot = "0.10.0" derive_more = "0.99.2" codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } -sp-consensus = { version = "0.8.0-dev", path = "../consensus/common" } -sp-runtime = { version = "2.0.0-dev", path = "../runtime" } -sp-block-builder = { version = "2.0.0-dev", path = "../block-builder" } -sp-state-machine = { version = "0.8.0-dev", path = "../state-machine" } +sp-consensus = { version = "0.8.0-alpha.1", path = "../consensus/common" } +sp-runtime = { version = "2.0.0-alpha.1", path = "../runtime" } +sp-block-builder = { version = "2.0.0-alpha.1", path = "../block-builder" } +sp-state-machine = { version = "0.8.0-alpha.1", path = "../state-machine" } diff --git a/primitives/consensus/aura/Cargo.toml b/primitives/consensus/aura/Cargo.toml index 55311ccf7e..a4372c85ec 100644 --- a/primitives/consensus/aura/Cargo.toml +++ b/primitives/consensus/aura/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "sp-consensus-aura" -version = "0.8.0-dev" +version = "0.8.0-alpha.1" authors = ["Parity Technologies "] description = "Primitives for Aura consensus" edition = "2018" @@ -9,13 +9,13 @@ homepage = "https://substrate.dev" repository = "https://github.com/paritytech/substrate/" [dependencies] -sp-application-crypto = { version = "2.0.0-dev", default-features = false, path = "../../application-crypto" } +sp-application-crypto = { version = "2.0.0-alpha.1", default-features = false, path = "../../application-crypto" } codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false } -sp-std = { version = "2.0.0-dev", default-features = false, path = "../../std" } -sp-api = { version = "2.0.0-dev", default-features = false, path = "../../api" } -sp-runtime = { version = "2.0.0-dev", default-features = false, path = "../../runtime" } -sp-inherents = { version = "2.0.0-dev", default-features = false, path = "../../inherents" } -sp-timestamp = { version = "2.0.0-dev", default-features = false, path = "../../timestamp" } +sp-std = { version = "2.0.0-alpha.1", default-features = false, path = "../../std" } +sp-api = { version = "2.0.0-alpha.1", default-features = false, path = "../../api" } +sp-runtime = { version = "2.0.0-alpha.1", default-features = false, path = "../../runtime" } +sp-inherents = { version = "2.0.0-alpha.1", default-features = false, path = "../../inherents" } +sp-timestamp = { version = "2.0.0-alpha.1", default-features = false, path = "../../timestamp" } [features] default = ["std"] diff --git a/primitives/consensus/babe/Cargo.toml b/primitives/consensus/babe/Cargo.toml index e0941f58c7..52a344dd7f 100644 --- a/primitives/consensus/babe/Cargo.toml +++ b/primitives/consensus/babe/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "sp-consensus-babe" -version = "0.8.0-dev" +version = "0.8.0-alpha.1" authors = ["Parity Technologies "] description = "Primitives for BABE consensus" edition = "2018" @@ -9,15 +9,15 @@ homepage = "https://substrate.dev" repository = "https://github.com/paritytech/substrate/" [dependencies] -sp-application-crypto = { version = "2.0.0-dev", default-features = false, path = "../../application-crypto" } +sp-application-crypto = { version = "2.0.0-alpha.1", default-features = false, path = "../../application-crypto" } codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false } -sp-std = { version = "2.0.0-dev", default-features = false, path = "../../std" } +sp-std = { version = "2.0.0-alpha.1", default-features = false, path = "../../std" } schnorrkel = { version = "0.8.5", features = ["preaudit_deprecated"], optional = true } -sp-api = { version = "2.0.0-dev", default-features = false, path = "../../api" } -sp-consensus = { version = "0.8.0-dev", optional = true, path = "../common" } -sp-inherents = { version = "2.0.0-dev", default-features = false, path = "../../inherents" } -sp-runtime = { version = "2.0.0-dev", default-features = false, path = "../../runtime" } -sp-timestamp = { version = "2.0.0-dev", default-features = false, path = "../../timestamp" } +sp-api = { version = "2.0.0-alpha.1", default-features = false, path = "../../api" } +sp-consensus = { version = "0.8.0-alpha.1", optional = true, path = "../common" } +sp-inherents = { version = "2.0.0-alpha.1", default-features = false, path = "../../inherents" } +sp-runtime = { version = "2.0.0-alpha.1", default-features = false, path = "../../runtime" } +sp-timestamp = { version = "2.0.0-alpha.1", default-features = false, path = "../../timestamp" } [features] default = ["std"] diff --git a/primitives/consensus/common/Cargo.toml b/primitives/consensus/common/Cargo.toml index 56901983fd..3f9fc17fa3 100644 --- a/primitives/consensus/common/Cargo.toml +++ b/primitives/consensus/common/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "sp-consensus" -version = "0.8.0-dev" +version = "0.8.0-alpha.1" authors = ["Parity Technologies "] description = "Common utilities for substrate consensus" edition = "2018" @@ -12,15 +12,15 @@ repository = "https://github.com/paritytech/substrate/" derive_more = "0.99.2" libp2p = { version = "0.16.1", default-features = false } log = "0.4.8" -sp-core = { path= "../../core" , version = "2.0.0-dev"} -sp-inherents = { version = "2.0.0-dev", path = "../../inherents" } -sp-state-machine = { version = "0.8.0-dev", path = "../../../primitives/state-machine" } +sp-core = { path= "../../core" , version = "2.0.0-alpha.1"} +sp-inherents = { version = "2.0.0-alpha.1", path = "../../inherents" } +sp-state-machine = { version = "0.8.0-alpha.1", path = "../../../primitives/state-machine" } futures = { version = "0.3.1", features = ["thread-pool"] } futures-timer = "3.0.1" futures-diagnose = "1.0" -sp-std = { version = "2.0.0-dev", path = "../../std" } -sp-version = { version = "2.0.0-dev", path = "../../version" } -sp-runtime = { version = "2.0.0-dev", path = "../../runtime" } +sp-std = { version = "2.0.0-alpha.1", path = "../../std" } +sp-version = { version = "2.0.0-alpha.1", path = "../../version" } +sp-runtime = { version = "2.0.0-alpha.1", path = "../../runtime" } codec = { package = "parity-scale-codec", version = "1.0.0", features = ["derive"] } parking_lot = "0.10.0" serde = { version = "1.0", features = ["derive"] } diff --git a/primitives/consensus/pow/Cargo.toml b/primitives/consensus/pow/Cargo.toml index 25b7f01a80..2e1ab504d9 100644 --- a/primitives/consensus/pow/Cargo.toml +++ b/primitives/consensus/pow/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "sp-consensus-pow" -version = "0.8.0-dev" +version = "0.8.0-alpha.1" authors = ["Parity Technologies "] description = "Primitives for Aura consensus" edition = "2018" @@ -9,10 +9,10 @@ homepage = "https://substrate.dev" repository = "https://github.com/paritytech/substrate/" [dependencies] -sp-api = { version = "2.0.0-dev", default-features = false, path = "../../api" } -sp-std = { version = "2.0.0-dev", default-features = false, path = "../../std" } -sp-runtime = { version = "2.0.0-dev", default-features = false, path = "../../runtime" } -sp-core = { version = "2.0.0-dev", default-features = false, path = "../../core" } +sp-api = { version = "2.0.0-alpha.1", default-features = false, path = "../../api" } +sp-std = { version = "2.0.0-alpha.1", default-features = false, path = "../../std" } +sp-runtime = { version = "2.0.0-alpha.1", default-features = false, path = "../../runtime" } +sp-core = { version = "2.0.0-alpha.1", default-features = false, path = "../../core" } codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } [features] diff --git a/primitives/core/Cargo.toml b/primitives/core/Cargo.toml index 1241c277dd..174c4e806a 100644 --- a/primitives/core/Cargo.toml +++ b/primitives/core/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "sp-core" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" @@ -8,7 +8,7 @@ homepage = "https://substrate.dev" repository = "https://github.com/paritytech/substrate/" [dependencies] -sp-std = { version = "2.0.0-dev", default-features = false, path = "../std" } +sp-std = { version = "2.0.0-alpha.1", default-features = false, path = "../std" } codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } rustc-hex = { version = "2.0.1", default-features = false } log = { version = "0.4.8", default-features = false } @@ -28,9 +28,9 @@ num-traits = { version = "0.2.8", default-features = false } zeroize = { version = "1.0.0", default-features = false } lazy_static = { version = "1.4.0", default-features = false, optional = true } parking_lot = { version = "0.10.0", optional = true } -sp-debug-derive = { version = "2.0.0-dev", path = "../debug-derive" } -sp-externalities = { version = "0.8.0-dev", optional = true, path = "../externalities" } -sp-storage = { version = "2.0.0-dev", default-features = false, path = "../storage" } +sp-debug-derive = { version = "2.0.0-alpha.1", path = "../debug-derive" } +sp-externalities = { version = "0.8.0-alpha.1", optional = true, path = "../externalities" } +sp-storage = { version = "2.0.0-alpha.1", default-features = false, path = "../storage" } libsecp256k1 = { version = "0.3.2", default-features = false, features = ["hmac"] } parity-util-mem = { version = "0.5.1", default-features = false, features = ["primitive-types"] } @@ -43,10 +43,10 @@ sha2 = { version = "0.8.0", default-features = false, optional = true } hex = { version = "0.4", default-features = false, optional = true } twox-hash = { version = "1.5.0", default-features = false, optional = true } -sp-runtime-interface = { version = "2.0.0-dev", default-features = false, path = "../runtime-interface" } +sp-runtime-interface = { version = "2.0.0-alpha.1", default-features = false, path = "../runtime-interface" } [dev-dependencies] -sp-serializer = { version = "2.0.0-dev", path = "../serializer" } +sp-serializer = { version = "2.0.0-alpha.1", path = "../serializer" } pretty_assertions = "0.6.1" hex-literal = "0.2.1" rand = "0.7.2" diff --git a/primitives/debug-derive/Cargo.toml b/primitives/debug-derive/Cargo.toml index 248b5d449d..98d7758013 100644 --- a/primitives/debug-derive/Cargo.toml +++ b/primitives/debug-derive/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "sp-debug-derive" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" diff --git a/primitives/externalities/Cargo.toml b/primitives/externalities/Cargo.toml index 7a8f20a048..9044d7b01e 100644 --- a/primitives/externalities/Cargo.toml +++ b/primitives/externalities/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "sp-externalities" -version = "0.8.0-dev" +version = "0.8.0-alpha.1" license = "GPL-3.0" authors = ["Parity Technologies "] edition = "2018" @@ -8,6 +8,6 @@ homepage = "https://substrate.dev" repository = "https://github.com/paritytech/substrate/" [dependencies] -sp-storage = { version = "2.0.0-dev", path = "../storage" } -sp-std = { version = "2.0.0-dev", path = "../std" } +sp-storage = { version = "2.0.0-alpha.1", path = "../storage" } +sp-std = { version = "2.0.0-alpha.1", path = "../std" } environmental = { version = "1.1.1" } diff --git a/primitives/finality-grandpa/Cargo.toml b/primitives/finality-grandpa/Cargo.toml index 62ac64eb0c..cd621c7831 100644 --- a/primitives/finality-grandpa/Cargo.toml +++ b/primitives/finality-grandpa/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "sp-finality-grandpa" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" @@ -8,12 +8,12 @@ homepage = "https://substrate.dev" repository = "https://github.com/paritytech/substrate/" [dependencies] -sp-application-crypto = { version = "2.0.0-dev", default-features = false, path = "../application-crypto" } +sp-application-crypto = { version = "2.0.0-alpha.1", default-features = false, path = "../application-crypto" } codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } -sp-std = { version = "2.0.0-dev", default-features = false, path = "../std" } +sp-std = { version = "2.0.0-alpha.1", default-features = false, path = "../std" } serde = { version = "1.0.101", optional = true, features = ["derive"] } -sp-api = { version = "2.0.0-dev", default-features = false, path = "../api" } -sp-runtime = { version = "2.0.0-dev", default-features = false, path = "../runtime" } +sp-api = { version = "2.0.0-alpha.1", default-features = false, path = "../api" } +sp-runtime = { version = "2.0.0-alpha.1", default-features = false, path = "../runtime" } [features] default = ["std"] diff --git a/primitives/finality-tracker/Cargo.toml b/primitives/finality-tracker/Cargo.toml index 99e471cac1..e9321cc1a0 100644 --- a/primitives/finality-tracker/Cargo.toml +++ b/primitives/finality-tracker/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "sp-finality-tracker" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" @@ -9,8 +9,8 @@ repository = "https://github.com/paritytech/substrate/" [dependencies] codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false } -sp-inherents = { version = "2.0.0-dev", default-features = false, path = "../../primitives/inherents" } -sp-std = { version = "2.0.0-dev", default-features = false, path = "../../primitives/std" } +sp-inherents = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/inherents" } +sp-std = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/std" } [features] default = ["std"] diff --git a/primitives/inherents/Cargo.toml b/primitives/inherents/Cargo.toml index bd315c33cd..aa40369315 100644 --- a/primitives/inherents/Cargo.toml +++ b/primitives/inherents/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "sp-inherents" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" @@ -9,8 +9,8 @@ repository = "https://github.com/paritytech/substrate/" [dependencies] parking_lot = { version = "0.10.0", optional = true } -sp-std = { version = "2.0.0-dev", default-features = false, path = "../std" } -sp-core = { version = "2.0.0-dev", default-features = false, path = "../core" } +sp-std = { version = "2.0.0-alpha.1", default-features = false, path = "../std" } +sp-core = { version = "2.0.0-alpha.1", default-features = false, path = "../core" } codec = { package = "parity-scale-codec", version = "1.0.6", default-features = false, features = ["derive"] } derive_more = { version = "0.99.2", optional = true } diff --git a/primitives/io/Cargo.toml b/primitives/io/Cargo.toml index 7d61398b81..05a051e062 100644 --- a/primitives/io/Cargo.toml +++ b/primitives/io/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "sp-io" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" @@ -10,14 +10,14 @@ repository = "https://github.com/paritytech/substrate/" [dependencies] codec = { package = "parity-scale-codec", version = "1.0.6", default-features = false } hash-db = { version = "0.15.2", default-features = false } -sp-core = { version = "2.0.0-dev", default-features = false, path = "../core" } -sp-std = { version = "2.0.0-dev", default-features = false, path = "../std" } +sp-core = { version = "2.0.0-alpha.1", default-features = false, path = "../core" } +sp-std = { version = "2.0.0-alpha.1", default-features = false, path = "../std" } libsecp256k1 = { version = "0.3.4", optional = true } -sp-state-machine = { version = "0.8.0-dev", optional = true, path = "../../primitives/state-machine" } -sp-wasm-interface = { version = "2.0.0-dev", path = "../../primitives/wasm-interface", default-features = false } -sp-runtime-interface = { version = "2.0.0-dev", default-features = false, path = "../runtime-interface" } -sp-trie = { version = "2.0.0-dev", optional = true, path = "../../primitives/trie" } -sp-externalities = { version = "0.8.0-dev", optional = true, path = "../externalities" } +sp-state-machine = { version = "0.8.0-alpha.1", optional = true, path = "../../primitives/state-machine" } +sp-wasm-interface = { version = "2.0.0-alpha.1", path = "../../primitives/wasm-interface", default-features = false } +sp-runtime-interface = { version = "2.0.0-alpha.1", default-features = false, path = "../runtime-interface" } +sp-trie = { version = "2.0.0-alpha.1", optional = true, path = "../../primitives/trie" } +sp-externalities = { version = "0.8.0-alpha.1", optional = true, path = "../externalities" } log = { version = "0.4.8", optional = true } [features] diff --git a/primitives/keyring/Cargo.toml b/primitives/keyring/Cargo.toml index d712fcdf8e..46793cd5e1 100644 --- a/primitives/keyring/Cargo.toml +++ b/primitives/keyring/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "sp-keyring" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" @@ -8,7 +8,7 @@ homepage = "https://substrate.dev" repository = "https://github.com/paritytech/substrate/" [dependencies] -sp-core = { version = "2.0.0-dev", path = "../core" } -sp-runtime = { version = "2.0.0-dev", path = "../runtime" } +sp-core = { version = "2.0.0-alpha.1", path = "../core" } +sp-runtime = { version = "2.0.0-alpha.1", path = "../runtime" } lazy_static = "1.4.0" strum = { version = "0.16.0", features = ["derive"] } diff --git a/primitives/offchain/Cargo.toml b/primitives/offchain/Cargo.toml index 70e1cffacf..78f3071bf0 100644 --- a/primitives/offchain/Cargo.toml +++ b/primitives/offchain/Cargo.toml @@ -1,7 +1,7 @@ [package] description = "Substrate offchain workers primitives" name = "sp-offchain" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" license = "GPL-3.0" authors = ["Parity Technologies "] edition = "2018" @@ -9,8 +9,8 @@ homepage = "https://substrate.dev" repository = "https://github.com/paritytech/substrate/" [dependencies] -sp-api = { version = "2.0.0-dev", default-features = false, path = "../api" } -sp-runtime = { version = "2.0.0-dev", default-features = false, path = "../runtime" } +sp-api = { version = "2.0.0-alpha.1", default-features = false, path = "../api" } +sp-runtime = { version = "2.0.0-alpha.1", default-features = false, path = "../runtime" } [features] default = ["std"] diff --git a/primitives/panic-handler/Cargo.toml b/primitives/panic-handler/Cargo.toml index d29f2238e7..2f63f32aca 100644 --- a/primitives/panic-handler/Cargo.toml +++ b/primitives/panic-handler/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "sp-panic-handler" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" authors = ["Parity Technologies "] description = "Substrate panic handler." edition = "2018" diff --git a/primitives/phragmen/Cargo.toml b/primitives/phragmen/Cargo.toml index 28f4cce901..ec0bdce2e4 100644 --- a/primitives/phragmen/Cargo.toml +++ b/primitives/phragmen/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "sp-phragmen" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" @@ -9,12 +9,12 @@ repository = "https://github.com/paritytech/substrate/" [dependencies] serde = { version = "1.0.101", optional = true, features = ["derive"] } -sp-std = { version = "2.0.0-dev", default-features = false, path = "../std" } -sp-runtime = { version = "2.0.0-dev", default-features = false, path = "../../primitives/runtime" } +sp-std = { version = "2.0.0-alpha.1", default-features = false, path = "../std" } +sp-runtime = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/runtime" } [dev-dependencies] -substrate-test-utils = { version = "2.0.0-dev", path = "../../test-utils" } -sp-io ={ version = "2.0.0-dev", path = "../../primitives/io" } +substrate-test-utils = { version = "2.0.0-alpha.1", path = "../../test-utils" } +sp-io ={ version = "2.0.0-alpha.1", path = "../../primitives/io" } rand = "0.7.2" [features] diff --git a/primitives/rpc/Cargo.toml b/primitives/rpc/Cargo.toml index 1f464e81a8..322100bc2d 100644 --- a/primitives/rpc/Cargo.toml +++ b/primitives/rpc/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "sp-rpc" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" @@ -9,7 +9,7 @@ repository = "https://github.com/paritytech/substrate/" [dependencies] serde = { version = "1.0.101", features = ["derive"] } -sp-core = { version = "2.0.0-dev", path = "../core" } +sp-core = { version = "2.0.0-alpha.1", path = "../core" } [dev-dependencies] serde_json = "1.0.41" diff --git a/primitives/runtime-interface/Cargo.toml b/primitives/runtime-interface/Cargo.toml index b1547fe652..c407113807 100644 --- a/primitives/runtime-interface/Cargo.toml +++ b/primitives/runtime-interface/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "sp-runtime-interface" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" @@ -8,19 +8,19 @@ homepage = "https://substrate.dev" repository = "https://github.com/paritytech/substrate/" [dependencies] -sp-wasm-interface = { version = "2.0.0-dev", path = "../wasm-interface", default-features = false } -sp-std = { version = "2.0.0-dev", default-features = false, path = "../std" } -sp-runtime-interface-proc-macro = { version = "2.0.0-dev", path = "proc-macro" } -sp-externalities = { version = "0.8.0-dev", optional = true, path = "../externalities" } +sp-wasm-interface = { version = "2.0.0-alpha.1", path = "../wasm-interface", default-features = false } +sp-std = { version = "2.0.0-alpha.1", default-features = false, path = "../std" } +sp-runtime-interface-proc-macro = { version = "2.0.0-alpha.1", path = "proc-macro" } +sp-externalities = { version = "0.8.0-alpha.1", optional = true, path = "../externalities" } codec = { package = "parity-scale-codec", version = "1.0.6", default-features = false } static_assertions = "1.0.0" primitive-types = { version = "0.6.2", default-features = false } [dev-dependencies] sp-runtime-interface-test-wasm = { version = "2.0.0-dev", path = "test-wasm" } -sp-state-machine = { version = "0.8.0-dev", path = "../../primitives/state-machine" } -sp-core = { version = "2.0.0-dev", path = "../core" } -sp-io = { version = "2.0.0-dev", path = "../io" } +sp-state-machine = { version = "0.8.0-alpha.1", path = "../../primitives/state-machine" } +sp-core = { version = "2.0.0-alpha.1", path = "../core" } +sp-io = { version = "2.0.0-alpha.1", path = "../io" } rustversion = "1.0.0" trybuild = "1.0.17" diff --git a/primitives/runtime-interface/proc-macro/Cargo.toml b/primitives/runtime-interface/proc-macro/Cargo.toml index fe5a132aac..844ea0a749 100644 --- a/primitives/runtime-interface/proc-macro/Cargo.toml +++ b/primitives/runtime-interface/proc-macro/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "sp-runtime-interface-proc-macro" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" diff --git a/primitives/runtime-interface/test-wasm/Cargo.toml b/primitives/runtime-interface/test-wasm/Cargo.toml index e07adb0195..849237b90b 100644 --- a/primitives/runtime-interface/test-wasm/Cargo.toml +++ b/primitives/runtime-interface/test-wasm/Cargo.toml @@ -10,10 +10,10 @@ repository = "https://github.com/paritytech/substrate/" publish = false [dependencies] -sp-runtime-interface = { version = "2.0.0-dev", default-features = false, path = "../" } -sp-std = { version = "2.0.0-dev", default-features = false, path = "../../std" } -sp-io = { version = "2.0.0-dev", default-features = false, path = "../../io" } -sp-core = { version = "2.0.0-dev", default-features = false, path = "../../core" } +sp-runtime-interface = { version = "2.0.0-alpha.1", default-features = false, path = "../" } +sp-std = { version = "2.0.0-alpha.1", default-features = false, path = "../../std" } +sp-io = { version = "2.0.0-alpha.1", default-features = false, path = "../../io" } +sp-core = { version = "2.0.0-alpha.1", default-features = false, path = "../../core" } [build-dependencies] wasm-builder-runner = { version = "1.0.5", package = "substrate-wasm-builder-runner", path = "../../../utils/wasm-builder-runner" } diff --git a/primitives/runtime-interface/test/Cargo.toml b/primitives/runtime-interface/test/Cargo.toml index 34c5a7ac5f..1215748370 100644 --- a/primitives/runtime-interface/test/Cargo.toml +++ b/primitives/runtime-interface/test/Cargo.toml @@ -9,9 +9,9 @@ homepage = "https://substrate.dev" repository = "https://github.com/paritytech/substrate/" [dependencies] -sp-runtime-interface = { version = "2.0.0-dev", path = "../" } -sc-executor = { version = "0.8.0-dev", path = "../../../client/executor" } +sp-runtime-interface = { version = "2.0.0-alpha.1", path = "../" } +sc-executor = { version = "0.8.0-alpha.1", path = "../../../client/executor" } sp-runtime-interface-test-wasm = { version = "2.0.0-dev", path = "../test-wasm" } -sp-state-machine = { version = "0.8.0-dev", path = "../../../primitives/state-machine" } -sp-core = { version = "2.0.0-dev", path = "../../core" } -sp-io = { version = "2.0.0-dev", path = "../../io" } +sp-state-machine = { version = "0.8.0-alpha.1", path = "../../../primitives/state-machine" } +sp-core = { version = "2.0.0-alpha.1", path = "../../core" } +sp-io = { version = "2.0.0-alpha.1", path = "../../io" } diff --git a/primitives/runtime/Cargo.toml b/primitives/runtime/Cargo.toml index 29736af6e5..ff73aa377d 100644 --- a/primitives/runtime/Cargo.toml +++ b/primitives/runtime/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "sp-runtime" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" @@ -10,16 +10,16 @@ repository = "https://github.com/paritytech/substrate/" [dependencies] serde = { version = "1.0.101", optional = true, features = ["derive"] } codec = { package = "parity-scale-codec", version = "1.1.2", default-features = false, features = ["derive"] } -sp-core = { version = "2.0.0-dev", default-features = false, path = "../core" } -sp-application-crypto = { version = "2.0.0-dev", default-features = false, path = "../application-crypto" } -sp-arithmetic = { version = "2.0.0-dev", default-features = false, path = "../arithmetic" } -sp-std = { version = "2.0.0-dev", default-features = false, path = "../std" } -sp-io = { version = "2.0.0-dev", default-features = false, path = "../io" } +sp-core = { version = "2.0.0-alpha.1", default-features = false, path = "../core" } +sp-application-crypto = { version = "2.0.0-alpha.1", default-features = false, path = "../application-crypto" } +sp-arithmetic = { version = "2.0.0-alpha.1", default-features = false, path = "../arithmetic" } +sp-std = { version = "2.0.0-alpha.1", default-features = false, path = "../std" } +sp-io = { version = "2.0.0-alpha.1", default-features = false, path = "../io" } log = { version = "0.4.8", optional = true } paste = "0.1.6" rand = { version = "0.7.2", optional = true } impl-trait-for-tuples = "0.1.3" -sp-inherents = { version = "2.0.0-dev", default-features = false, path = "../inherents" } +sp-inherents = { version = "2.0.0-alpha.1", default-features = false, path = "../inherents" } parity-util-mem = { version = "0.5.1", default-features = false, features = ["primitive-types"] } [dev-dependencies] diff --git a/primitives/sandbox/Cargo.toml b/primitives/sandbox/Cargo.toml index e09bdb8e00..2bdd7d221c 100755 --- a/primitives/sandbox/Cargo.toml +++ b/primitives/sandbox/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "sp-sandbox" -version = "0.8.0-dev" +version = "0.8.0-alpha.1" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" @@ -9,10 +9,10 @@ repository = "https://github.com/paritytech/substrate/" [dependencies] wasmi = { version = "0.6.2", optional = true } -sp-core = { version = "2.0.0-dev", default-features = false, path = "../core" } -sp-std = { version = "2.0.0-dev", default-features = false, path = "../std" } -sp-io = { version = "2.0.0-dev", default-features = false, path = "../io" } -sp-wasm-interface = { version = "2.0.0-dev", default-features = false, path = "../wasm-interface" } +sp-core = { version = "2.0.0-alpha.1", default-features = false, path = "../core" } +sp-std = { version = "2.0.0-alpha.1", default-features = false, path = "../std" } +sp-io = { version = "2.0.0-alpha.1", default-features = false, path = "../io" } +sp-wasm-interface = { version = "2.0.0-alpha.1", default-features = false, path = "../wasm-interface" } codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false } [dev-dependencies] diff --git a/primitives/serializer/Cargo.toml b/primitives/serializer/Cargo.toml index b172c1439b..4d784a27bb 100644 --- a/primitives/serializer/Cargo.toml +++ b/primitives/serializer/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "sp-serializer" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" diff --git a/primitives/session/Cargo.toml b/primitives/session/Cargo.toml index a395b44e81..9042b17630 100644 --- a/primitives/session/Cargo.toml +++ b/primitives/session/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "sp-session" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" @@ -8,10 +8,10 @@ homepage = "https://substrate.dev" repository = "https://github.com/paritytech/substrate/" [dependencies] -sp-api = { version = "2.0.0-dev", default-features = false, path = "../api" } -sp-std = { version = "2.0.0-dev", default-features = false, path = "../std" } -sp-core = { version = "2.0.0-dev", default-features = false, path = "../core" } -sp-runtime = { version = "2.0.0-dev", optional = true, path = "../runtime" } +sp-api = { version = "2.0.0-alpha.1", default-features = false, path = "../api" } +sp-std = { version = "2.0.0-alpha.1", default-features = false, path = "../std" } +sp-core = { version = "2.0.0-alpha.1", default-features = false, path = "../core" } +sp-runtime = { version = "2.0.0-alpha.1", optional = true, path = "../runtime" } [features] default = [ "std" ] diff --git a/primitives/staking/Cargo.toml b/primitives/staking/Cargo.toml index 60945cbf97..688c95e49d 100644 --- a/primitives/staking/Cargo.toml +++ b/primitives/staking/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "sp-staking" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" @@ -9,8 +9,8 @@ repository = "https://github.com/paritytech/substrate/" [dependencies] codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } -sp-runtime = { version = "2.0.0-dev", default-features = false, path = "../runtime" } -sp-std = { version = "2.0.0-dev", default-features = false, path = "../std" } +sp-runtime = { version = "2.0.0-alpha.1", default-features = false, path = "../runtime" } +sp-std = { version = "2.0.0-alpha.1", default-features = false, path = "../std" } [features] default = ["std"] diff --git a/primitives/state-machine/Cargo.toml b/primitives/state-machine/Cargo.toml index 9c68298204..7ddb3160f7 100644 --- a/primitives/state-machine/Cargo.toml +++ b/primitives/state-machine/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "sp-state-machine" -version = "0.8.0-dev" +version = "0.8.0-alpha.1" authors = ["Parity Technologies "] description = "Substrate State Machine" edition = "2018" @@ -14,13 +14,13 @@ parking_lot = "0.10.0" hash-db = "0.15.2" trie-db = "0.20.0" trie-root = "0.16.0" -sp-trie = { version = "2.0.0-dev", path = "../trie" } -sp-core = { version = "2.0.0-dev", path = "../core" } -sp-panic-handler = { version = "2.0.0-dev", path = "../panic-handler" } +sp-trie = { version = "2.0.0-alpha.1", path = "../trie" } +sp-core = { version = "2.0.0-alpha.1", path = "../core" } +sp-panic-handler = { version = "2.0.0-alpha.1", path = "../panic-handler" } codec = { package = "parity-scale-codec", version = "1.0.0" } num-traits = "0.2.8" rand = "0.7.2" -sp-externalities = { version = "0.8.0-dev", path = "../externalities" } +sp-externalities = { version = "0.8.0-alpha.1", path = "../externalities" } [dev-dependencies] hex-literal = "0.2.1" diff --git a/primitives/std/Cargo.toml b/primitives/std/Cargo.toml index 4314281b3b..e698c978a8 100644 --- a/primitives/std/Cargo.toml +++ b/primitives/std/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "sp-std" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" diff --git a/primitives/storage/Cargo.toml b/primitives/storage/Cargo.toml index 27c9f99192..c84eb4c52c 100644 --- a/primitives/storage/Cargo.toml +++ b/primitives/storage/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "sp-storage" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" authors = ["Parity Technologies "] edition = "2018" description = "Storage related primitives" @@ -9,10 +9,10 @@ homepage = "https://substrate.dev" repository = "https://github.com/paritytech/substrate/" [dependencies] -sp-std = { version = "2.0.0-dev", default-features = false, path = "../std" } +sp-std = { version = "2.0.0-alpha.1", default-features = false, path = "../std" } serde = { version = "1.0.101", optional = true, features = ["derive"] } impl-serde = { version = "0.2.3", optional = true } -sp-debug-derive = { version = "2.0.0-dev", path = "../debug-derive" } +sp-debug-derive = { version = "2.0.0-alpha.1", path = "../debug-derive" } [features] default = [ "std" ] diff --git a/primitives/test-primitives/Cargo.toml b/primitives/test-primitives/Cargo.toml index 99d070013e..83e92957ed 100644 --- a/primitives/test-primitives/Cargo.toml +++ b/primitives/test-primitives/Cargo.toml @@ -9,11 +9,11 @@ repository = "https://github.com/paritytech/substrate/" publish = false [dependencies] -sp-application-crypto = { version = "2.0.0-dev", default-features = false, path = "../application-crypto" } +sp-application-crypto = { version = "2.0.0-alpha.1", default-features = false, path = "../application-crypto" } codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } -sp-core = { version = "2.0.0-dev", default-features = false, path = "../core" } +sp-core = { version = "2.0.0-alpha.1", default-features = false, path = "../core" } serde = { version = "1.0.101", optional = true, features = ["derive"] } -sp-runtime = { version = "2.0.0-dev", default-features = false, path = "../runtime" } +sp-runtime = { version = "2.0.0-alpha.1", default-features = false, path = "../runtime" } parity-util-mem = { version = "0.5.1", default-features = false, features = ["primitive-types"] } [features] diff --git a/primitives/timestamp/Cargo.toml b/primitives/timestamp/Cargo.toml index 1b97f53437..82c5ab8f1b 100644 --- a/primitives/timestamp/Cargo.toml +++ b/primitives/timestamp/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "sp-timestamp" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" @@ -8,11 +8,11 @@ homepage = "https://substrate.dev" repository = "https://github.com/paritytech/substrate/" [dependencies] -sp-api = { version = "2.0.0-dev", default-features = false, path = "../api" } -sp-std = { version = "2.0.0-dev", default-features = false, path = "../std" } -sp-runtime = { version = "2.0.0-dev", default-features = false, path = "../runtime" } +sp-api = { version = "2.0.0-alpha.1", default-features = false, path = "../api" } +sp-std = { version = "2.0.0-alpha.1", default-features = false, path = "../std" } +sp-runtime = { version = "2.0.0-alpha.1", default-features = false, path = "../runtime" } codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } -sp-inherents = { version = "2.0.0-dev", default-features = false, path = "../inherents" } +sp-inherents = { version = "2.0.0-alpha.1", default-features = false, path = "../inherents" } impl-trait-for-tuples = "0.1.3" wasm-timer = "0.2" diff --git a/primitives/transaction-pool/Cargo.toml b/primitives/transaction-pool/Cargo.toml index 747cd3472c..3cafd8f679 100644 --- a/primitives/transaction-pool/Cargo.toml +++ b/primitives/transaction-pool/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "sp-transaction-pool" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" @@ -13,8 +13,8 @@ derive_more = { version = "0.99.2", optional = true } futures = { version = "0.3.1", optional = true } log = { version = "0.4.8", optional = true } serde = { version = "1.0.101", features = ["derive"], optional = true} -sp-api = { version = "2.0.0-dev", default-features = false, path = "../api" } -sp-runtime = { version = "2.0.0-dev", default-features = false, path = "../runtime" } +sp-api = { version = "2.0.0-alpha.1", default-features = false, path = "../api" } +sp-runtime = { version = "2.0.0-alpha.1", default-features = false, path = "../runtime" } [features] default = [ "std" ] diff --git a/primitives/trie/Cargo.toml b/primitives/trie/Cargo.toml index 6aab0f290b..c448275eb0 100644 --- a/primitives/trie/Cargo.toml +++ b/primitives/trie/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "sp-trie" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" authors = ["Parity Technologies "] description = "Patricia trie stuff using a parity-scale-codec node format" repository = "https://github.com/paritytech/substrate/" @@ -14,12 +14,12 @@ harness = false [dependencies] codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false } -sp-std = { version = "2.0.0-dev", default-features = false, path = "../std" } +sp-std = { version = "2.0.0-alpha.1", default-features = false, path = "../std" } hash-db = { version = "0.15.2", default-features = false } trie-db = { version = "0.20.0", default-features = false } trie-root = { version = "0.16.0", default-features = false } memory-db = { version = "0.19.0", default-features = false } -sp-core = { version = "2.0.0-dev", default-features = false, path = "../core" } +sp-core = { version = "2.0.0-alpha.1", default-features = false, path = "../core" } [dev-dependencies] trie-bench = "0.20.0" diff --git a/primitives/version/Cargo.toml b/primitives/version/Cargo.toml index 4cd65cd044..128ff39960 100644 --- a/primitives/version/Cargo.toml +++ b/primitives/version/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "sp-version" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" @@ -11,8 +11,8 @@ repository = "https://github.com/paritytech/substrate/" impl-serde = { version = "0.2.3", optional = true } serde = { version = "1.0.101", optional = true, features = ["derive"] } codec = { package = "parity-scale-codec", version = "1.1.2", default-features = false, features = ["derive"] } -sp-std = { version = "2.0.0-dev", default-features = false, path = "../std" } -sp-runtime = { version = "2.0.0-dev", default-features = false, path = "../runtime" } +sp-std = { version = "2.0.0-alpha.1", default-features = false, path = "../std" } +sp-runtime = { version = "2.0.0-alpha.1", default-features = false, path = "../runtime" } [features] default = ["std"] diff --git a/primitives/wasm-interface/Cargo.toml b/primitives/wasm-interface/Cargo.toml index 5d477ff955..f05f1a0bfb 100644 --- a/primitives/wasm-interface/Cargo.toml +++ b/primitives/wasm-interface/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "sp-wasm-interface" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" @@ -10,7 +10,7 @@ repository = "https://github.com/paritytech/substrate/" [dependencies] wasmi = { version = "0.6.2", optional = true } impl-trait-for-tuples = "0.1.2" -sp-std = { version = "2.0.0-dev", path = "../std", default-features = false } +sp-std = { version = "2.0.0-alpha.1", path = "../std", default-features = false } codec = { package = "parity-scale-codec", version = "1.1.2", default-features = false, features = ["derive"] } [features] diff --git a/test-utils/Cargo.toml b/test-utils/Cargo.toml index 54511bd9e4..d7664f1e12 100644 --- a/test-utils/Cargo.toml +++ b/test-utils/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "substrate-test-utils" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" diff --git a/test-utils/client/Cargo.toml b/test-utils/client/Cargo.toml index 99511f051b..3b677b08be 100644 --- a/test-utils/client/Cargo.toml +++ b/test-utils/client/Cargo.toml @@ -9,16 +9,16 @@ repository = "https://github.com/paritytech/substrate/" publish = false [dependencies] -sc-client-api = { version = "2.0.0-dev", path = "../../client/api" } -sc-client = { version = "0.8.0-dev", path = "../../client/" } -sc-client-db = { version = "0.8.0-dev", features = ["test-helpers"], path = "../../client/db" } -sp-consensus = { version = "0.8.0-dev", path = "../../primitives/consensus/common" } -sc-executor = { version = "0.8.0-dev", path = "../../client/executor" } +sc-client-api = { version = "2.0.0-alpha.1", path = "../../client/api" } +sc-client = { version = "0.8.0-alpha.1", path = "../../client/" } +sc-client-db = { version = "0.8.0-alpha.1", features = ["test-helpers"], path = "../../client/db" } +sp-consensus = { version = "0.8.0-alpha.1", path = "../../primitives/consensus/common" } +sc-executor = { version = "0.8.0-alpha.1", path = "../../client/executor" } futures = "0.3.1" hash-db = "0.15.2" -sp-keyring = { version = "2.0.0-dev", path = "../../primitives/keyring" } +sp-keyring = { version = "2.0.0-alpha.1", path = "../../primitives/keyring" } codec = { package = "parity-scale-codec", version = "1.0.0" } -sp-core = { version = "2.0.0-dev", path = "../../primitives/core" } -sp-runtime = { version = "2.0.0-dev", path = "../../primitives/runtime" } -sp-blockchain = { version = "2.0.0-dev", path = "../../primitives/blockchain" } -sp-state-machine = { version = "0.8.0-dev", path = "../../primitives/state-machine" } +sp-core = { version = "2.0.0-alpha.1", path = "../../primitives/core" } +sp-runtime = { version = "2.0.0-alpha.1", path = "../../primitives/runtime" } +sp-blockchain = { version = "2.0.0-alpha.1", path = "../../primitives/blockchain" } +sp-state-machine = { version = "0.8.0-alpha.1", path = "../../primitives/state-machine" } diff --git a/test-utils/runtime/Cargo.toml b/test-utils/runtime/Cargo.toml index 993e44685c..339aafa6e9 100644 --- a/test-utils/runtime/Cargo.toml +++ b/test-utils/runtime/Cargo.toml @@ -10,42 +10,42 @@ repository = "https://github.com/paritytech/substrate/" publish = false [dependencies] -sp-application-crypto = { version = "2.0.0-dev", default-features = false, path = "../../primitives/application-crypto" } -sp-consensus-aura = { version = "0.8.0-dev", default-features = false, path = "../../primitives/consensus/aura" } -sp-consensus-babe = { version = "0.8.0-dev", default-features = false, path = "../../primitives/consensus/babe" } -sp-block-builder = { version = "2.0.0-dev", default-features = false, path = "../../primitives/block-builder" } +sp-application-crypto = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/application-crypto" } +sp-consensus-aura = { version = "0.8.0-alpha.1", default-features = false, path = "../../primitives/consensus/aura" } +sp-consensus-babe = { version = "0.8.0-alpha.1", default-features = false, path = "../../primitives/consensus/babe" } +sp-block-builder = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/block-builder" } cfg-if = "0.1.10" codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } -frame-executive = { version = "2.0.0-dev", default-features = false, path = "../../frame/executive" } -sp-inherents = { version = "2.0.0-dev", default-features = false, path = "../../primitives/inherents" } -sp-keyring = { version = "2.0.0-dev", optional = true, path = "../../primitives/keyring" } +frame-executive = { version = "2.0.0-alpha.1", default-features = false, path = "../../frame/executive" } +sp-inherents = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/inherents" } +sp-keyring = { version = "2.0.0-alpha.1", optional = true, path = "../../primitives/keyring" } log = { version = "0.4.8", optional = true } memory-db = { version = "0.19.0", default-features = false } -sp-offchain = { path = "../../primitives/offchain", default-features = false, version = "2.0.0-dev"} -sp-core = { version = "2.0.0-dev", default-features = false, path = "../../primitives/core" } -sp-std = { version = "2.0.0-dev", default-features = false, path = "../../primitives/std" } -sp-runtime-interface = { path = "../../primitives/runtime-interface", default-features = false, version = "2.0.0-dev"} -sp-io = { version = "2.0.0-dev", default-features = false, path = "../../primitives/io" } -frame-support = { version = "2.0.0-dev", default-features = false, path = "../../frame/support" } -sp-version = { version = "2.0.0-dev", default-features = false, path = "../../primitives/version" } +sp-offchain = { path = "../../primitives/offchain", default-features = false, version = "2.0.0-alpha.1"} +sp-core = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/core" } +sp-std = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/std" } +sp-runtime-interface = { path = "../../primitives/runtime-interface", default-features = false, version = "2.0.0-alpha.1"} +sp-io = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/io" } +frame-support = { version = "2.0.0-alpha.1", default-features = false, path = "../../frame/support" } +sp-version = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/version" } serde = { version = "1.0.101", optional = true, features = ["derive"] } -sp-session = { version = "2.0.0-dev", default-features = false, path = "../../primitives/session" } -sp-api = { version = "2.0.0-dev", default-features = false, path = "../../primitives/api" } -sp-runtime = { version = "2.0.0-dev", default-features = false, path = "../../primitives/runtime" } -pallet-babe = { version = "2.0.0-dev", default-features = false, path = "../../frame/babe" } -frame-system = { version = "2.0.0-dev", default-features = false, path = "../../frame/system" } -frame-system-rpc-runtime-api = { version = "2.0.0-dev", default-features = false, path = "../../frame/system/rpc/runtime-api" } -pallet-timestamp = { version = "2.0.0-dev", default-features = false, path = "../../frame/timestamp" } -sc-client = { version = "0.8.0-dev", optional = true, path = "../../client" } -sp-trie = { version = "2.0.0-dev", default-features = false, path = "../../primitives/trie" } -sp-transaction-pool = { version = "2.0.0-dev", default-features = false, path = "../../primitives/transaction-pool" } +sp-session = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/session" } +sp-api = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/api" } +sp-runtime = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/runtime" } +pallet-babe = { version = "2.0.0-alpha.1", default-features = false, path = "../../frame/babe" } +frame-system = { version = "2.0.0-alpha.1", default-features = false, path = "../../frame/system" } +frame-system-rpc-runtime-api = { version = "2.0.0-alpha.1", default-features = false, path = "../../frame/system/rpc/runtime-api" } +pallet-timestamp = { version = "2.0.0-alpha.1", default-features = false, path = "../../frame/timestamp" } +sc-client = { version = "0.8.0-alpha.1", optional = true, path = "../../client" } +sp-trie = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/trie" } +sp-transaction-pool = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/transaction-pool" } trie-db = { version = "0.20.0", default-features = false } parity-util-mem = { version = "0.5.1", default-features = false, features = ["primitive-types"] } [dev-dependencies] -sc-executor = { version = "0.8.0-dev", path = "../../client/executor" } +sc-executor = { version = "0.8.0-alpha.1", path = "../../client/executor" } substrate-test-runtime-client = { version = "2.0.0-dev", path = "./client" } -sp-state-machine = { version = "0.8.0-dev", path = "../../primitives/state-machine" } +sp-state-machine = { version = "0.8.0-alpha.1", path = "../../primitives/state-machine" } [build-dependencies] wasm-builder-runner = { version = "1.0.5", package = "substrate-wasm-builder-runner", path = "../../utils/wasm-builder-runner" } diff --git a/test-utils/runtime/client/Cargo.toml b/test-utils/runtime/client/Cargo.toml index 3911bea783..135eaa9b81 100644 --- a/test-utils/runtime/client/Cargo.toml +++ b/test-utils/runtime/client/Cargo.toml @@ -9,14 +9,14 @@ repository = "https://github.com/paritytech/substrate/" publish = false [dependencies] -sc-block-builder = { version = "0.8.0-dev", path = "../../../client/block-builder" } +sc-block-builder = { version = "0.8.0-alpha.1", path = "../../../client/block-builder" } substrate-test-client = { version = "2.0.0-dev", path = "../../client" } -sp-core = { version = "2.0.0-dev", path = "../../../primitives/core" } +sp-core = { version = "2.0.0-alpha.1", path = "../../../primitives/core" } substrate-test-runtime = { version = "2.0.0-dev", path = "../../runtime" } -sp-runtime = { version = "2.0.0-dev", path = "../../../primitives/runtime" } -sp-api = { version = "2.0.0-dev", path = "../../../primitives/api" } -sp-blockchain = { version = "2.0.0-dev", path = "../../../primitives/blockchain" } +sp-runtime = { version = "2.0.0-alpha.1", path = "../../../primitives/runtime" } +sp-api = { version = "2.0.0-alpha.1", path = "../../../primitives/api" } +sp-blockchain = { version = "2.0.0-alpha.1", path = "../../../primitives/blockchain" } codec = { package = "parity-scale-codec", version = "1.0.0" } -sc-client-api = { version = "2.0.0-dev", path = "../../../client/api" } -sc-client = { version = "0.8.0-dev", path = "../../../client/" } +sc-client-api = { version = "2.0.0-alpha.1", path = "../../../client/api" } +sc-client = { version = "0.8.0-alpha.1", path = "../../../client/" } futures = "0.3.1" diff --git a/test-utils/runtime/transaction-pool/Cargo.toml b/test-utils/runtime/transaction-pool/Cargo.toml index 8b5e34be88..c18337ddeb 100644 --- a/test-utils/runtime/transaction-pool/Cargo.toml +++ b/test-utils/runtime/transaction-pool/Cargo.toml @@ -12,9 +12,9 @@ publish = false substrate-test-runtime-client = { version = "2.0.0-dev", path = "../client" } parking_lot = "0.10.0" codec = { package = "parity-scale-codec", version = "1.0.0" } -sp-blockchain = { version = "2.0.0-dev", path = "../../../primitives/blockchain" } -sp-runtime = { version = "2.0.0-dev", path = "../../../primitives/runtime" } -sp-transaction-pool = { version = "2.0.0-dev", path = "../../../primitives/transaction-pool" } -sc-transaction-graph = { version = "2.0.0-dev", path = "../../../client/transaction-pool/graph" } +sp-blockchain = { version = "2.0.0-alpha.1", path = "../../../primitives/blockchain" } +sp-runtime = { version = "2.0.0-alpha.1", path = "../../../primitives/runtime" } +sp-transaction-pool = { version = "2.0.0-alpha.1", path = "../../../primitives/transaction-pool" } +sc-transaction-graph = { version = "2.0.0-alpha.1", path = "../../../client/transaction-pool/graph" } futures = { version = "0.3.1", features = ["compat"] } derive_more = "0.99.2" diff --git a/utils/browser/Cargo.toml b/utils/browser/Cargo.toml index bd513b8a17..c6bb74857b 100644 --- a/utils/browser/Cargo.toml +++ b/utils/browser/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "browser-utils" -version = "0.8.0-dev" +version = "0.8.0-alpha.1" authors = ["Parity Technologies "] description = "Utilities for creating a browser light-client." edition = "2018" @@ -19,10 +19,10 @@ js-sys = "0.3.34" wasm-bindgen = "0.2.57" wasm-bindgen-futures = "0.4.7" kvdb-web = "0.4" -sc-informant = { version = "0.8.0-dev", path = "../../client/informant" } -sc-service = { version = "0.8.0-dev", path = "../../client/service", default-features = false } -sc-network = { path = "../../client/network" , version = "0.8.0-dev"} -sc-chain-spec = { path = "../../client/chain-spec" , version = "2.0.0-dev"} +sc-informant = { version = "0.8.0-alpha.1", path = "../../client/informant" } +sc-service = { version = "0.8.0-alpha.1", path = "../../client/service", default-features = false } +sc-network = { path = "../../client/network" , version = "0.8.0-alpha.1"} +sc-chain-spec = { path = "../../client/chain-spec" , version = "2.0.0-alpha.1"} # Imported just for the `no_cc` feature clear_on_drop = { version = "0.2.3", features = ["no_cc"] } diff --git a/utils/build-script-utils/Cargo.toml b/utils/build-script-utils/Cargo.toml index d41b85a982..e590e8ac1b 100644 --- a/utils/build-script-utils/Cargo.toml +++ b/utils/build-script-utils/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "substrate-build-script-utils" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" diff --git a/utils/fork-tree/Cargo.toml b/utils/fork-tree/Cargo.toml index be200007d5..2056cd9819 100644 --- a/utils/fork-tree/Cargo.toml +++ b/utils/fork-tree/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "fork-tree" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" diff --git a/utils/frame/benchmarking-cli/Cargo.toml b/utils/frame/benchmarking-cli/Cargo.toml index 648b37933e..5d83902bf0 100644 --- a/utils/frame/benchmarking-cli/Cargo.toml +++ b/utils/frame/benchmarking-cli/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "frame-benchmarking-cli" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" @@ -8,12 +8,12 @@ homepage = "https://substrate.dev" repository = "https://github.com/paritytech/substrate/" [dependencies] -frame-benchmarking = { version = "2.0.0-dev", path = "../../../frame/benchmarking" } -sc-service = { version = "0.8.0-dev", path = "../../../client/service" } -sc-cli = { version = "0.8.0-dev", path = "../../../client/cli" } -sc-client = { version = "0.8.0-dev", path = "../../../client" } -sc-client-db = { version = "0.8.0-dev", path = "../../../client/db" } -sc-executor = { version = "0.8.0-dev", path = "../../../client/executor" } -sp-runtime = { version = "2.0.0-dev", path = "../../../primitives/runtime" } +frame-benchmarking = { version = "2.0.0-alpha.1", path = "../../../frame/benchmarking" } +sc-service = { version = "0.8.0-alpha.1", path = "../../../client/service" } +sc-cli = { version = "0.8.0-alpha.1", path = "../../../client/cli" } +sc-client = { version = "0.8.0-alpha.1", path = "../../../client" } +sc-client-db = { version = "0.8.0-alpha.1", path = "../../../client/db" } +sc-executor = { version = "0.8.0-alpha.1", path = "../../../client/executor" } +sp-runtime = { version = "2.0.0-alpha.1", path = "../../../primitives/runtime" } structopt = "0.3.8" codec = { version = "1.1.2", package = "parity-scale-codec" } diff --git a/utils/frame/rpc/support/Cargo.toml b/utils/frame/rpc/support/Cargo.toml index 51f004489a..01bdd5d73c 100644 --- a/utils/frame/rpc/support/Cargo.toml +++ b/utils/frame/rpc/support/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "substrate-frame-rpc-support" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" authors = ["Parity Technologies ", "Andrew Dirksen "] edition = "2018" license = "GPL-3.0" @@ -13,10 +13,10 @@ jsonrpc-client-transports = "14" jsonrpc-core = "14" codec = { package = "parity-scale-codec", version = "1" } serde = "1" -frame-support = { version = "2.0.0-dev", path = "../../../../frame/support" } -sp-storage = { version = "2.0.0-dev", path = "../../../../primitives/storage" } -sc-rpc-api = { version = "0.8.0-dev", path = "../../../../client/rpc-api" } +frame-support = { version = "2.0.0-alpha.1", path = "../../../../frame/support" } +sp-storage = { version = "2.0.0-alpha.1", path = "../../../../primitives/storage" } +sc-rpc-api = { version = "0.8.0-alpha.1", path = "../../../../client/rpc-api" } [dev-dependencies] -frame-system = { version = "2.0.0-dev", path = "../../../../frame/system" } +frame-system = { version = "2.0.0-alpha.1", path = "../../../../frame/system" } tokio = "0.1" diff --git a/utils/frame/rpc/system/Cargo.toml b/utils/frame/rpc/system/Cargo.toml index 88481ac884..3bbb199499 100644 --- a/utils/frame/rpc/system/Cargo.toml +++ b/utils/frame/rpc/system/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "substrate-frame-rpc-system" -version = "2.0.0-dev" +version = "2.0.0-alpha.1" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" @@ -8,7 +8,7 @@ homepage = "https://substrate.dev" repository = "https://github.com/paritytech/substrate/" [dependencies] -sc-client = { version = "0.8.0-dev", path = "../../../../client/" } +sc-client = { version = "0.8.0-alpha.1", path = "../../../../client/" } codec = { package = "parity-scale-codec", version = "1.0.0" } futures = "0.3.1" jsonrpc-core = "14.0.3" @@ -16,14 +16,14 @@ jsonrpc-core-client = "14.0.3" jsonrpc-derive = "14.0.3" log = "0.4.8" serde = { version = "1.0.101", features = ["derive"] } -sp-runtime = { version = "2.0.0-dev", path = "../../../../primitives/runtime" } -sp-api = { version = "2.0.0-dev", path = "../../../../primitives/api" } -frame-system-rpc-runtime-api = { version = "2.0.0-dev", path = "../../../../frame/system/rpc/runtime-api" } -sp-core = { version = "2.0.0-dev", path = "../../../../primitives/core" } -sp-blockchain = { version = "2.0.0-dev", path = "../../../../primitives/blockchain" } -sp-transaction-pool = { version = "2.0.0-dev", path = "../../../../primitives/transaction-pool" } +sp-runtime = { version = "2.0.0-alpha.1", path = "../../../../primitives/runtime" } +sp-api = { version = "2.0.0-alpha.1", path = "../../../../primitives/api" } +frame-system-rpc-runtime-api = { version = "2.0.0-alpha.1", path = "../../../../frame/system/rpc/runtime-api" } +sp-core = { version = "2.0.0-alpha.1", path = "../../../../primitives/core" } +sp-blockchain = { version = "2.0.0-alpha.1", path = "../../../../primitives/blockchain" } +sp-transaction-pool = { version = "2.0.0-alpha.1", path = "../../../../primitives/transaction-pool" } [dev-dependencies] substrate-test-runtime-client = { version = "2.0.0-dev", path = "../../../../test-utils/runtime/client" } env_logger = "0.7.0" -sc-transaction-pool = { version = "2.0.0-dev", path = "../../../../client/transaction-pool" } +sc-transaction-pool = { version = "2.0.0-alpha.1", path = "../../../../client/transaction-pool" } diff --git a/utils/prometheus/Cargo.toml b/utils/prometheus/Cargo.toml index 4c7ec546c8..1ad32dfec5 100644 --- a/utils/prometheus/Cargo.toml +++ b/utils/prometheus/Cargo.toml @@ -1,7 +1,7 @@ [package] description = "Prometheus exporter server" name = "prometheus-exporter" -version = "0.8.0-dev" +version = "0.8.0-alpha.1" license = "GPL-3.0" authors = ["Parity Technologies "] edition = "2018" -- GitLab From 48150f24857e431ecb5066a2f60f59633eef915d Mon Sep 17 00:00:00 2001 From: Arkadiy Paronyan Date: Tue, 25 Feb 2020 22:17:42 +0100 Subject: [PATCH 044/301] Sync: validate block responses for required data (#5052) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Less verbose state-db logging * Validate block responses for block bodies * Update client/network/src/protocol.rs Co-Authored-By: Bastian Köcher * Added validation test * Disconnect on missing header as well * Typo Co-Authored-By: André Silva Co-authored-by: Bastian Köcher Co-authored-by: André Silva --- client/network/src/protocol.rs | 31 +++++++++++-- client/network/src/protocol/sync.rs | 2 +- client/network/test/src/lib.rs | 71 +++++++++++++++++++++++------ client/network/test/src/sync.rs | 21 +++++++++ client/state-db/src/lib.rs | 6 +-- client/state-db/src/noncanonical.rs | 4 +- 6 files changed, 111 insertions(+), 24 deletions(-) diff --git a/client/network/src/protocol.rs b/client/network/src/protocol.rs index dd8b5e6c28..d344321e68 100644 --- a/client/network/src/protocol.rs +++ b/client/network/src/protocol.rs @@ -131,6 +131,8 @@ mod rep { pub const BAD_PROTOCOL: Rep = Rep::new_fatal("Unsupported protocol"); /// Peer role does not match (e.g. light peer connecting to another light peer). pub const BAD_ROLE: Rep = Rep::new_fatal("Unsupported role"); + /// Peer response data does not have requested bits. + pub const BAD_RESPONSE: Rep = Rep::new(-(1 << 12), "Incomplete response"); } // Lock must always be taken in order declared here. @@ -701,12 +703,14 @@ impl Protocol { peer: PeerId, request: message::BlockRequest ) { - trace!(target: "sync", "BlockRequest {} from {}: from {:?} to {:?} max {:?}", + trace!(target: "sync", "BlockRequest {} from {}: from {:?} to {:?} max {:?} for {:?}", request.id, peer, request.from, request.to, - request.max); + request.max, + request.fields, + ); // sending block requests to the node that is unable to serve it is considered a bad behavior if !self.config.roles.is_full() { @@ -754,6 +758,11 @@ impl Protocol { message_queue: None, justification, }; + // Stop if we don't have requested block body + if get_body && block_data.body.is_none() { + trace!(target: "sync", "Missing data for block request."); + break; + } blocks.push(block_data); match request.direction { message::Direction::Ascending => id = BlockId::Number(number + One::one()), @@ -784,7 +793,7 @@ impl Protocol { request: message::BlockRequest, response: message::BlockResponse, ) -> CustomMessageOutcome { - let blocks_range = match ( + let blocks_range = || match ( response.blocks.first().and_then(|b| b.header.as_ref().map(|h| h.number())), response.blocks.last().and_then(|b| b.header.as_ref().map(|h| h.number())), ) { @@ -796,7 +805,7 @@ impl Protocol { response.id, peer, response.blocks.len(), - blocks_range + blocks_range(), ); if request.fields == message::BlockAttributes::JUSTIFICATION { @@ -811,6 +820,20 @@ impl Protocol { } } } else { + // Validate fields against the request. + if request.fields.contains(message::BlockAttributes::HEADER) && response.blocks.iter().any(|b| b.header.is_none()) { + self.behaviour.disconnect_peer(&peer); + self.peerset_handle.report_peer(peer, rep::BAD_RESPONSE); + trace!(target: "sync", "Missing header for a block"); + return CustomMessageOutcome::None + } + if request.fields.contains(message::BlockAttributes::BODY) && response.blocks.iter().any(|b| b.body.is_none()) { + self.behaviour.disconnect_peer(&peer); + self.peerset_handle.report_peer(peer, rep::BAD_RESPONSE); + trace!(target: "sync", "Missing body for a block"); + return CustomMessageOutcome::None + } + match self.sync.on_block_data(peer, Some(request), response) { Ok(sync::OnBlockData::Import(origin, blocks)) => CustomMessageOutcome::BlockImport(origin, blocks), diff --git a/client/network/src/protocol/sync.rs b/client/network/src/protocol/sync.rs index 0c5355ea21..b1cd89155e 100644 --- a/client/network/src/protocol/sync.rs +++ b/client/network/src/protocol/sync.rs @@ -751,7 +751,7 @@ impl ChainSync { | PeerSyncState::DownloadingFinalityProof(..) => Vec::new() } } else { - // When request.is_none() just accept blocks + // When request.is_none() this is a block announcement. Just accept blocks. blocks.into_iter().map(|b| { IncomingBlock { hash: b.hash, diff --git a/client/network/test/src/lib.rs b/client/network/test/src/lib.rs index 982e2ff512..d09897e853 100644 --- a/client/network/test/src/lib.rs +++ b/client/network/test/src/lib.rs @@ -237,7 +237,7 @@ impl Peer { where F: FnMut(BlockBuilder) -> Block { let best_hash = self.client.info().best_hash; - self.generate_blocks_at(BlockId::Hash(best_hash), count, origin, edit_block) + self.generate_blocks_at(BlockId::Hash(best_hash), count, origin, edit_block, false) } /// Add blocks to the peer -- edit the block before adding. The chain will @@ -247,7 +247,8 @@ impl Peer { at: BlockId, count: usize, origin: BlockOrigin, - mut edit_block: F + mut edit_block: F, + headers_only: bool, ) -> H256 where F: FnMut(BlockBuilder) -> Block { let full_client = self.client.as_full() .expect("blocks could only be generated by full clients"); @@ -272,7 +273,7 @@ impl Peer { origin, header.clone(), None, - Some(block.extrinsics) + if headers_only { None } else { Some(block.extrinsics) }, ).unwrap(); let cache = if let Some(cache) = cache { cache.into_iter().collect() @@ -294,28 +295,46 @@ impl Peer { self.push_blocks_at(BlockId::Hash(best_hash), count, with_tx) } + /// Push blocks to the peer (simplified: with or without a TX) + pub fn push_headers(&mut self, count: usize) -> H256 { + let best_hash = self.client.info().best_hash; + self.generate_tx_blocks_at(BlockId::Hash(best_hash), count, false, true) + } + /// Push blocks to the peer (simplified: with or without a TX) starting from /// given hash. pub fn push_blocks_at(&mut self, at: BlockId, count: usize, with_tx: bool) -> H256 { + self.generate_tx_blocks_at(at, count, with_tx, false) + } + + /// Push blocks/headers to the peer (simplified: with or without a TX) starting from + /// given hash. + fn generate_tx_blocks_at(&mut self, at: BlockId, count: usize, with_tx: bool, headers_only:bool) -> H256 { let mut nonce = 0; if with_tx { - self.generate_blocks_at(at, count, BlockOrigin::File, |mut builder| { - let transfer = Transfer { - from: AccountKeyring::Alice.into(), - to: AccountKeyring::Alice.into(), - amount: 1, - nonce, - }; - builder.push(transfer.into_signed_tx()).unwrap(); - nonce = nonce + 1; - builder.build().unwrap().block - }) + self.generate_blocks_at( + at, + count, + BlockOrigin::File, |mut builder| { + let transfer = Transfer { + from: AccountKeyring::Alice.into(), + to: AccountKeyring::Alice.into(), + amount: 1, + nonce, + }; + builder.push(transfer.into_signed_tx()).unwrap(); + nonce = nonce + 1; + builder.build().unwrap().block + }, + headers_only + ) } else { self.generate_blocks_at( at, count, BlockOrigin::File, |builder| builder.build().unwrap().block, + headers_only, ) } } @@ -748,6 +767,23 @@ pub trait TestNetFactory: Sized { Async::Ready(()) } + /// Polls the testnet until theres' no activiy of any kind. + /// + /// Must be executed in a task context. + fn poll_until_idle(&mut self) -> Async<()> { + self.poll(); + + for peer in self.peers().iter() { + if peer.is_major_syncing() || peer.network.num_queued_blocks() != 0 { + return Async::NotReady + } + if peer.network.num_sync_requests() != 0 { + return Async::NotReady + } + } + Async::Ready(()) + } + /// Blocks the current thread until we are sync'ed. /// /// Calls `poll_until_sync` repeatedly with the runtime passed as parameter. @@ -755,6 +791,13 @@ pub trait TestNetFactory: Sized { runtime.block_on(futures::future::poll_fn::<(), (), _>(|| Ok(self.poll_until_sync()))).unwrap(); } + /// Blocks the current thread until there are no pending packets. + /// + /// Calls `poll_until_idle` repeatedly with the runtime passed as parameter. + fn block_until_idle(&mut self, runtime: &mut tokio::runtime::current_thread::Runtime) { + runtime.block_on(futures::future::poll_fn::<(), (), _>(|| Ok(self.poll_until_idle()))).unwrap(); + } + /// Polls the testnet. Processes all the pending actions and returns `NotReady`. fn poll(&mut self) { self.mut_peers(|peers| { diff --git a/client/network/test/src/sync.rs b/client/network/test/src/sync.rs index 210a4fb38b..2094ddae60 100644 --- a/client/network/test/src/sync.rs +++ b/client/network/test/src/sync.rs @@ -660,3 +660,24 @@ fn does_not_sync_announced_old_best_block() { })).unwrap(); assert!(!net.peer(1).is_major_syncing()); } + +#[test] +fn full_sync_requires_block_body() { + // Check that we don't sync headers-only in full mode. + let _ = ::env_logger::try_init(); + let mut runtime = current_thread::Runtime::new().unwrap(); + let mut net = TestNet::new(2); + + net.peer(0).push_headers(1); + // Wait for nodes to connect + runtime.block_on(futures::future::poll_fn::<(), (), _>(|| -> Result<_, ()> { + net.poll(); + if net.peer(0).num_peers() == 0 || net.peer(1).num_peers() == 0 { + Ok(Async::NotReady) + } else { + Ok(Async::Ready(())) + } + })).unwrap(); + net.block_until_idle(&mut runtime); + assert_eq!(net.peer(1).client.info().best_number, 0); +} diff --git a/client/state-db/src/lib.rs b/client/state-db/src/lib.rs index 0eab640de8..f670e4f35f 100644 --- a/client/state-db/src/lib.rs +++ b/client/state-db/src/lib.rs @@ -340,7 +340,7 @@ impl StateDbSync { { let refs = self.pinned.entry(hash.clone()).or_default(); if *refs == 0 { - trace!(target: "state-db", "Pinned block: {:?}", hash); + trace!(target: "state-db-pin", "Pinned block: {:?}", hash); self.non_canonical.pin(hash); } *refs += 1; @@ -357,11 +357,11 @@ impl StateDbSync { Entry::Occupied(mut entry) => { *entry.get_mut() -= 1; if *entry.get() == 0 { - trace!(target: "state-db", "Unpinned block: {:?}", hash); + trace!(target: "state-db-pin", "Unpinned block: {:?}", hash); entry.remove(); self.non_canonical.unpin(hash); } else { - trace!(target: "state-db", "Releasing reference for {:?}", hash); + trace!(target: "state-db-pin", "Releasing reference for {:?}", hash); } }, Entry::Vacant(_) => {}, diff --git a/client/state-db/src/noncanonical.rs b/client/state-db/src/noncanonical.rs index db2f58fa89..de7294d770 100644 --- a/client/state-db/src/noncanonical.rs +++ b/client/state-db/src/noncanonical.rs @@ -436,7 +436,7 @@ impl NonCanonicalOverlay { while let Some(hash) = parent { let refs = self.pinned.entry(hash.clone()).or_default(); if *refs == 0 { - trace!(target: "state-db", "Pinned non-canon block: {:?}", hash); + trace!(target: "state-db-pin", "Pinned non-canon block: {:?}", hash); } *refs += 1; parent = self.parents.get(hash); @@ -455,7 +455,7 @@ impl NonCanonicalOverlay { if *entry.get() == 0 { entry.remove(); if let Some(inserted) = self.pinned_insertions.remove(&hash) { - trace!(target: "state-db", "Discarding unpinned non-canon block: {:?}", hash); + trace!(target: "state-db-pin", "Discarding unpinned non-canon block: {:?}", hash); discard_values(&mut self.values, inserted); self.parents.remove(&hash); } -- GitLab From f9f92c4350d45e71c5184fb3f02c9625766eb8ff Mon Sep 17 00:00:00 2001 From: kianenigma Date: Wed, 26 Feb 2020 10:24:37 +0100 Subject: [PATCH 045/301] Another round of self-review --- frame/staking/src/lib.rs | 294 ++++++++++++------------- frame/staking/src/mock.rs | 3 +- frame/staking/src/offchain_election.rs | 10 +- frame/staking/src/tests.rs | 28 +-- 4 files changed, 164 insertions(+), 171 deletions(-) diff --git a/frame/staking/src/lib.rs b/frame/staking/src/lib.rs index db498b3a74..952d5183db 100644 --- a/frame/staking/src/lib.rs +++ b/frame/staking/src/lib.rs @@ -270,7 +270,7 @@ use frame_support::{ }; use pallet_session::historical; use sp_runtime::{ - Perbill, PerThing, RuntimeDebug, RuntimeAppPublic, + Perbill, PerU16, PerThing, RuntimeDebug, RuntimeAppPublic, curve::PiecewiseLinear, traits::{ Convert, Zero, One, StaticLookup, CheckedSub, Saturating, Bounded, SaturatedConversion, @@ -322,7 +322,7 @@ pub type Points = u32; pub type ChainAccuracy = Perbill; /// Accuracy used for off-chain phragmen. This better be small. -pub type OffchainAccuracy = sp_runtime::PerU16; +pub type OffchainAccuracy = PerU16; /// The balance type of this module. pub type BalanceOf = @@ -341,6 +341,7 @@ type NegativeImbalanceOf = <::Currency as Currency<::AccountId>>::NegativeImbalance; type MomentOf = <::Time as Time>::Moment; +/// Staking's key type used for submitting unsigned solutions. pub mod sr25519 { mod app_sr25519 { use sp_application_crypto::{app_crypto, key_types::STAKING, sr25519}; @@ -621,28 +622,27 @@ pub enum ElectionCompute { /// The result of an election round. #[derive(PartialEq, Eq, Clone, Encode, Decode, RuntimeDebug)] pub struct ElectionResult { - /// Type of the result, - compute: ElectionCompute, - /// The new computed slot stake. - slot_stake: Balance, /// Flat list of validators who have been elected. elected_stashes: Vec, /// Flat list of new exposures, to be updated in the [`Exposure`] storage. exposures: Vec<(AccountId, Exposure)>, + /// Type of the result. This is kept on chain only to track and report the best score's + /// submission type. An optimisation can could remove this. + compute: ElectionCompute, } /// The status of the upcoming (offchain) election. #[derive(PartialEq, Eq, Clone, Encode, Decode, RuntimeDebug)] pub enum ElectionStatus { /// Nothing has and will happen for now. submission window is not open. - Close, + Closed, /// The submission window has been open since the contained block number. Open(BlockNumber), } impl Default for ElectionStatus { fn default() -> Self { - Self::Close + Self::Closed } } @@ -975,24 +975,26 @@ decl_error! { PhragmenEarlySubmission, /// The submitted result is not as good as the one stored on chain. PhragmenWeakSubmission, - /// The submitted result has unknown edges that are not among the presented winners. - PhragmenBogusEdge, - /// One of the submitted winners is not an active candidate on chain. + /// The snapshot data of the current window is missing. + SnapshotUnavailable, + /// Incorrect number of winners were presented. + PhragmenBogusWinnerCount, + /// One of the submitted winners is not an active candidate on chain (index is out of range + /// in snapshot). PhragmenBogusWinner, - /// One of the submitted nominators is not an active nominator on chain. + /// Error while building the assignment type from the compact. This can happen if an index + /// is invalid, or if the weights _overflow_. + PhragmenBogusCompact, + /// One of the submitted nominators is not an active nominator on chain. DEPRECATED. PhragmenBogusNominator, /// One of the submitted nominators has an edge to which they have not voted on chain. PhragmenBogusNomination, /// A self vote must only be originated from a validator to ONLY themselves. PhragmenBogusSelfVote, + /// The submitted result has unknown edges that are not among the presented winners. + PhragmenBogusEdge, /// The claimed score does not match with the one computed from the data. PhragmenBogusScore, - /// Error while building the assignment type from the compact. - PhragmenBogusCompact, - /// Incorrect number of winners were presented. - PhragmenBogusWinnerCount, - /// The snapshot data of the current window is missing. - SnapshotUnavailable, } } @@ -1011,7 +1013,7 @@ decl_module! { /// Does the following: /// /// 1. potential storage migration - /// 2. sets `ElectionStatus` to `Triggered(now)` where `now` is the block number at which + /// 2. sets `ElectionStatus` to `Open(now)` where `now` is the block number at which /// the election window has opened. The offchain worker, if applicable, will execute at /// the end of the current block. `submit_election_solution` will accept solutions from /// this block until the end of the era. @@ -1019,7 +1021,7 @@ decl_module! { Self::ensure_storage_upgraded(); if // if we don't have any ongoing offchain compute. - Self::era_election_status() == ElectionStatus::Close && + Self::era_election_status() == ElectionStatus::Closed && // and an era is about to be changed. Self::is_current_session_final() { @@ -1088,115 +1090,6 @@ decl_module! { } } - /// Submit a phragmen result to the chain. If the solution: - /// - /// 1. is valid - /// 2. has a better score than a potentially existing solution on chain - /// - /// then, it will be put on chain. - /// - /// A solution consists of two pieces of data: - /// - /// 1. `winners`: a flat vector of all the winners of the round. - /// 2. `assignments`: the compact version of an assignment vector that encodes the edge - /// weights. - /// - /// Both of which may be computed using the [`phragmen`], or any other algorithm. - /// - /// Additionally, the submitter must provide: - /// - /// - The score that they claim their solution has. - /// - /// Both validators and nominators will be represented by indices in the solution. The - /// indices should respect the corresponding types ([`ValidatorIndex`] and - /// [`NominatorIndex`]). Moreover, they should be valid when used to index into - /// [`SnapshotValidators`] and [`SnapshotNominators`]. Any invalid index will cause the - /// solution to be rejected. - /// - /// A solution is valid if: - /// - /// 0. It is submitted when [`EraElectionStatus`] is `Open`. - /// 1. Its claimed score is equal to the score computed on-chain. - /// 2. Presents the correct number of winners. - /// 3. All indexes must be value according to the snapshot vectors. All edge values must - /// also be correct and should not overflow the granularity of the ratio type (i.e. 256 - /// or billion). - /// 4. For each edge, all targets are actually nominated by the voter. - /// 5. Has correct self-votes. - /// - /// A solutions score is consisted of 3 parameters: - /// - /// 1. `min { support.total }` for each support of a winner. This value should be maximized. - /// 2. `sum { support.total }` for each support of a winner. This value should be minimized. - /// 3. `sum { support.total^2 }` for each support of a winner. This value should be - /// minimized (to ensure less variance) - /// - /// # - /// E: number of edges. - /// m: size of winner committee. - /// n: number of nominators. - /// d: edge degree (16 for now) - /// v: number of on-chain validator candidates. - /// - /// NOTE: given a solution which is reduced, we can enable a new check the ensure `|E| < n + - /// m`. - /// - /// major steps (all done in `check_and_replace_solution`): - /// - /// - Storage: O(1) read `ElectionStatus`. - /// - Storage: O(1) read `PhragmenScore`. - /// - Storage: O(1) read `ValidatorCount`. - /// - Storage: O(1) length read from `SnapshotValidators`. - /// - Storage: O(v) reads of `AccountId`. - /// - Memory: O(m) iterations to map winner index to validator id. - /// - Storage: O(n) reads `AccountId`. - /// - Memory: O(n + m) reads to map index to `AccountId` for un-compact. - /// - Storage: O(e) accountid reads from `Nomination` to read correct nominations. - /// - Storage: O(e) calls into `slashable_balance_of_extended` to convert ratio to staked. - /// - Memory: build_support_map. O(e). - /// - Memory: evaluate_support: O(E). - /// - Storage: O(e) writes to `QueuedElected`. - /// - Storage: O(1) write to `QueuedScore` - /// - /// The weight of this call is 1/10th of the blocks total weight. - /// # - #[weight = SimpleDispatchInfo::FixedNormal(100_000_000)] - pub fn submit_election_solution( - origin, - winners: Vec, - compact_assignments: Compact, - score: PhragmenScore, - ) { - let _who = ensure_signed(origin)?; - Self::check_and_replace_solution( - winners, - compact_assignments, - ElectionCompute::Signed, - score, - )? - } - - /// Unsigned version of `submit_election_solution`. Will only be accepted from those who are - /// in the current validator set. - #[weight = SimpleDispatchInfo::FixedNormal(100_000_000)] - pub fn submit_election_solution_unsigned( - origin, - winners: Vec, - compact_assignments: Compact, - score: PhragmenScore, - // already used and checked in ValidateUnsigned. - _validator_index: u32, - _signature: ::Signature, - ) { - ensure_none(origin)?; - Self::check_and_replace_solution( - winners, - compact_assignments, - ElectionCompute::Authority, - score, - )? - } - /// Take the origin account as a stash and lock up `value` of its balance. `controller` will /// be the account that controls it. /// @@ -1597,6 +1490,115 @@ decl_module! { Self::update_ledger(&controller, &ledger); } + + /// Submit a phragmen result to the chain. If the solution: + /// + /// 1. is valid + /// 2. has a better score than a potentially existing solution on chain + /// + /// then, it will be put on chain. + /// + /// A solution consists of two pieces of data: + /// + /// 1. `winners`: a flat vector of all the winners of the round. + /// 2. `assignments`: the compact version of an assignment vector that encodes the edge + /// weights. + /// + /// Both of which may be computed using [`phragmen`], or any other algorithm. + /// + /// Additionally, the submitter must provide: + /// + /// - The score that they claim their solution has. + /// + /// Both validators and nominators will be represented by indices in the solution. The + /// indices should respect the corresponding types ([`ValidatorIndex`] and + /// [`NominatorIndex`]). Moreover, they should be valid when used to index into + /// [`SnapshotValidators`] and [`SnapshotNominators`]. Any invalid index will cause the + /// solution to be rejected. + /// + /// A solution is valid if: + /// + /// 0. It is submitted when [`EraElectionStatus`] is `Open`. + /// 1. Its claimed score is equal to the score computed on-chain. + /// 2. Presents the correct number of winners. + /// 3. All indexes must be value according to the snapshot vectors. All edge values must + /// also be correct and should not overflow the granularity of the ratio type (i.e. 256 + /// or billion). + /// 4. For each edge, all targets are actually nominated by the voter. + /// 5. Has correct self-votes. + /// + /// A solutions score is consisted of 3 parameters: + /// + /// 1. `min { support.total }` for each support of a winner. This value should be maximized. + /// 2. `sum { support.total }` for each support of a winner. This value should be minimized. + /// 3. `sum { support.total^2 }` for each support of a winner. This value should be + /// minimized (to ensure less variance) + /// + /// # + /// E: number of edges. + /// m: size of winner committee. + /// n: number of nominators. + /// d: edge degree (16 for now) + /// v: number of on-chain validator candidates. + /// + /// NOTE: given a solution which is reduced, we can enable a new check the ensure `|E| < n + + /// m`. + /// + /// major steps (all done in `check_and_replace_solution`): + /// + /// - Storage: O(1) read `ElectionStatus`. + /// - Storage: O(1) read `PhragmenScore`. + /// - Storage: O(1) read `ValidatorCount`. + /// - Storage: O(1) length read from `SnapshotValidators`. + /// - Storage: O(v) reads of `AccountId`. + /// - Memory: O(m) iterations to map winner index to validator id. + /// - Storage: O(n) reads `AccountId`. + /// - Memory: O(n + m) reads to map index to `AccountId` for un-compact. + /// - Storage: O(e) accountid reads from `Nomination` to read correct nominations. + /// - Storage: O(e) calls into `slashable_balance_of_extended` to convert ratio to staked. + /// - Memory: build_support_map. O(e). + /// - Memory: evaluate_support: O(E). + /// - Storage: O(e) writes to `QueuedElected`. + /// - Storage: O(1) write to `QueuedScore` + /// + /// The weight of this call is 1/10th of the blocks total weight. + /// # + #[weight = SimpleDispatchInfo::FixedNormal(100_000_000)] + pub fn submit_election_solution( + origin, + winners: Vec, + compact_assignments: Compact, + score: PhragmenScore, + ) { + let _who = ensure_signed(origin)?; + Self::check_and_replace_solution( + winners, + compact_assignments, + ElectionCompute::Signed, + score, + )? + } + + /// Unsigned version of `submit_election_solution`. Will only be accepted from those who are + /// in the current validator set. + #[weight = SimpleDispatchInfo::FixedNormal(100_000_000)] + pub fn submit_election_solution_unsigned( + origin, + winners: Vec, + compact_assignments: Compact, + score: PhragmenScore, + // already used and checked in ValidateUnsigned. + _validator_index: u32, + _signature: ::Signature, + ) { + ensure_none(origin)?; + Self::check_and_replace_solution( + winners, + compact_assignments, + ElectionCompute::Authority, + score, + )? + } } } @@ -1629,7 +1631,8 @@ impl Module { /// Dump the list of validators and nominators into vectors and keep them on-chain. /// - /// This data is used to efficiently evaluate election results. + /// This data is used to efficiently evaluate election results. returns `true` if the operation + /// is successful. fn create_stakers_snapshot() -> bool { let validators = >::enumerate().map(|(v, _)| v).collect::>(); let mut nominators = >::enumerate().map(|(n, _)| n).collect::>(); @@ -1776,7 +1779,7 @@ impl Module { ) -> Result<(), Error> { // discard early solutions match Self::era_election_status() { - ElectionStatus::Close => Err(Error::::PhragmenEarlySubmission)?, + ElectionStatus::Closed => Err(Error::::PhragmenEarlySubmission)?, ElectionStatus::Open(_) => { /* Open and no solutions received. Allowed. */ }, } @@ -1858,7 +1861,7 @@ impl Module { is_validator is false; maybe_nomination is some; qed" ); // NOTE: we don't really have to check here if the sum of all edges are the - // nominator budged. By definition, compact -> staked ensures this. + // nominator correct. Un-compacting assures this by definition. ensure!( distribution.into_iter().all(|(t, _)| { nomination.targets.iter().find(|&tt| tt == t).is_some() @@ -1901,7 +1904,6 @@ impl Module { // At last, alles Ok. Exposures and store the result. let to_balance = |e: ExtendedBalance| >>::convert(e); - let mut slot_stake: BalanceOf = Bounded::max_value(); let exposures = supports.into_iter().map(|(validator, support)| { let mut others = Vec::new(); @@ -1920,9 +1922,6 @@ impl Module { }); let exposure = Exposure { own, others, total }; - if exposure.total < slot_stake { - slot_stake = exposure.total; - } (validator, exposure) }).collect::)>>(); @@ -1935,7 +1934,6 @@ impl Module { elected_stashes: winners, compute, exposures, - slot_stake, }); QueuedScore::put(submitted_score); @@ -2039,11 +2037,14 @@ impl Module { }) } + /// Select the new validator set at the end of the era. + /// /// Runs [`try_do_phragmen`] and updates the following storage items: + /// - [`EraElectionStatus`]: with `None`. /// - [`Stakers`]: with the new staker set. /// - [`SlotStake`]: with the new slot stake. /// - [`CurrentElected`]: with the new elected set. - /// - [`EraElectionStatus`]: with `None` + /// - [`SnapshotValidators`] and [`SnapshotNominators`] are both removed. /// /// Internally, [`QueuedElected`], snapshots and [`QueuedScore`] are also consumed. /// @@ -2054,11 +2055,10 @@ impl Module { if let Some(ElectionResult::> { elected_stashes, exposures, - slot_stake, compute, }) = Self::try_do_phragmen() { // We have chosen the new validator set. Submission is no longer allowed. - >::put(ElectionStatus::Close); + >::put(ElectionStatus::Closed); // kill the snapshots. Self::kill_stakers_snapshot(); @@ -2069,7 +2069,9 @@ impl Module { } // Populate Stakers and write slot stake. + let mut slot_stake: BalanceOf = Bounded::max_value(); exposures.into_iter().for_each(|(s, e)| { + if e.total < slot_stake { slot_stake = e.total } >::insert(s, e); }); @@ -2106,7 +2108,8 @@ impl Module { Self::do_phragmen_with_post_processing::(ElectionCompute::OnChain) ); - // either way, kill this + // either way, kill this. We remove it here to make sure it always has teh exact same + // lifetime as `QueuedElected`. QueuedScore::kill(); next_result @@ -2144,8 +2147,7 @@ impl Module { let to_balance = |e: ExtendedBalance| >>::convert(e); - // collect exposures and slot stake. - let mut slot_stake = BalanceOf::::max_value(); + // collect exposures let exposures = supports.into_iter().map(|(validator, support)| { // build `struct exposure` from `support` let mut others = Vec::new(); @@ -2172,9 +2174,6 @@ impl Module { total, }; - if exposure.total < slot_stake { - slot_stake = exposure.total; - } (validator, exposure) }).collect::)>>(); @@ -2184,7 +2183,6 @@ impl Module { // compare against the prior set. Some(ElectionResult::> { elected_stashes, - slot_stake, exposures, compute, }) @@ -2596,7 +2594,7 @@ impl frame_support::unsigned::ValidateUnsigned for Module { use offchain_election::SignaturePayload; // discard early solution - if Self::era_election_status() == ElectionStatus::Close { + if Self::era_election_status() == ElectionStatus::Closed { debug::native::debug!( target: "staking", "rejecting unsigned transaction because it is too early." diff --git a/frame/staking/src/mock.rs b/frame/staking/src/mock.rs index 610d432c0b..53bdd74358 100644 --- a/frame/staking/src/mock.rs +++ b/frame/staking/src/mock.rs @@ -467,7 +467,8 @@ impl ExtBuilder { self } pub fn offchain_phragmen_ext(self) -> Self { - self.session_per_era(3) + self + .session_per_era(3) .session_length(5) .election_lookahead(3) .local_key_account(11) diff --git a/frame/staking/src/offchain_election.rs b/frame/staking/src/offchain_election.rs index 87176676e3..63d0565f6f 100644 --- a/frame/staking/src/offchain_election.rs +++ b/frame/staking/src/offchain_election.rs @@ -59,7 +59,7 @@ pub(crate) const OFFCHAIN_HEAD_DB: &[u8] = b"parity/staking-election/"; const OFFCHAIN_REPEAT: u32 = 5; pub(crate) fn set_check_offchain_execution_status( - now: T::BlockNumber + now: T::BlockNumber, ) -> Result<(), &'static str> { let storage = StorageValueRef::persistent(&OFFCHAIN_HEAD_DB); let threshold = T::BlockNumber::from(OFFCHAIN_REPEAT); @@ -99,13 +99,7 @@ pub(crate) fn compute_offchain_election() -> Result<(), OffchainElecti // For each local key is in the stored authority keys, try and submit. Breaks out after first // successful submission. for (index, ref pubkey) in local_keys.into_iter().filter_map(|key| - keys.iter().enumerate().find_map(|(index, val_key)| - if *val_key == key { - Some((index, val_key)) - } else { - None - } - ) + keys.iter().enumerate().find(|(_, val_key)| **val_key == key) ) { // make sure that the snapshot is available. let snapshot_validators = >::snapshot_validators() diff --git a/frame/staking/src/tests.rs b/frame/staking/src/tests.rs index 928384ef91..091dafb92d 100644 --- a/frame/staking/src/tests.rs +++ b/frame/staking/src/tests.rs @@ -2775,24 +2775,24 @@ mod offchain_phragmen { || { run_to_block(10); assert_session_era!(1, 0); - assert_eq!(Staking::era_election_status(), ElectionStatus::Close); + assert_eq!(Staking::era_election_status(), ElectionStatus::Closed); assert!(Staking::snapshot_nominators().is_none()); assert!(Staking::snapshot_validators().is_none()); run_to_block(18); assert_session_era!(1, 0); - assert_eq!(Staking::era_election_status(), ElectionStatus::Close); + assert_eq!(Staking::era_election_status(), ElectionStatus::Closed); assert!(Staking::snapshot_nominators().is_none()); assert!(Staking::snapshot_validators().is_none()); run_to_block(40); assert_session_era!(4, 0); - assert_eq!(Staking::era_election_status(), ElectionStatus::Close); + assert_eq!(Staking::era_election_status(), ElectionStatus::Closed); assert!(Staking::snapshot_nominators().is_none()); assert!(Staking::snapshot_validators().is_none()); run_to_block(46); - assert_eq!(Staking::era_election_status(), ElectionStatus::Close); + assert_eq!(Staking::era_election_status(), ElectionStatus::Closed); assert!(Staking::snapshot_nominators().is_none()); assert!(Staking::snapshot_validators().is_none()); @@ -2807,7 +2807,7 @@ mod offchain_phragmen { assert!(Staking::snapshot_validators().is_some()); run_to_block(50); - assert_eq!(Staking::era_election_status(), ElectionStatus::Close); + assert_eq!(Staking::era_election_status(), ElectionStatus::Closed); assert!(Staking::snapshot_nominators().is_none()); assert!(Staking::snapshot_validators().is_none()); }) @@ -2818,7 +2818,7 @@ mod offchain_phragmen { ExtBuilder::default().build().execute_with(|| { start_session(1); start_session(2); - assert_eq!(Staking::era_election_status(), ElectionStatus::Close); + assert_eq!(Staking::era_election_status(), ElectionStatus::Closed); // some election must have happened by now. assert_eq!( System::events().into_iter().map(|r| r.event).filter_map(|e| { @@ -2855,7 +2855,7 @@ mod offchain_phragmen { run_to_block(27); assert!(Staking::snapshot_validators().is_none()); - assert_eq!(Staking::era_election_status(), ElectionStatus::Close); + assert_eq!(Staking::era_election_status(), ElectionStatus::Closed); }) } @@ -2888,7 +2888,7 @@ mod offchain_phragmen { } #[test] - fn offchain_result_can_be_submitted() { + fn signed_result_can_be_submitted() { // should check that we have a new validator set normally, // event says that it comes from offchain. ExtBuilder::default() @@ -2912,7 +2912,7 @@ mod offchain_phragmen { assert_eq!(queued_result.compute, ElectionCompute::Signed); run_to_block(15); - assert_eq!(Staking::era_election_status(), ElectionStatus::Close); + assert_eq!(Staking::era_election_status(), ElectionStatus::Closed); assert_eq!( System::events().into_iter().map(|r| r.event).filter_map(|e| { @@ -2928,8 +2928,8 @@ mod offchain_phragmen { } #[test] - fn offchain_result_can_be_submitted_later() { - // same as `offchain_result_can_be_submitted` but at a later block. + fn signed_result_can_be_submitted_later() { + // same as `signed_result_can_be_submitted` but at a later block. ExtBuilder::default() .offchain_phragmen_ext() .build() @@ -2952,7 +2952,7 @@ mod offchain_phragmen { assert_eq!(queued_result.compute, ElectionCompute::Signed); run_to_block(15); - assert_eq!(Staking::era_election_status(), ElectionStatus::Close); + assert_eq!(Staking::era_election_status(), ElectionStatus::Closed); assert_eq!( System::events().into_iter().map(|r| r.event).filter_map(|e| { @@ -2978,7 +2978,7 @@ mod offchain_phragmen { || { run_to_block(11); // submission is not yet allowed - assert_eq!(Staking::era_election_status(), ElectionStatus::Close); + assert_eq!(Staking::era_election_status(), ElectionStatus::Closed); // create all the indices just to build the solution. Staking::create_stakers_snapshot(); @@ -3097,7 +3097,7 @@ mod offchain_phragmen { // put a good solution on-chain let (compact, winners, score) = do_phragmen_with_post_processing(true, |_| {}); assert_ok!( - Staking::submit_election_solution(Origin::signed(10), winners, compact, score) + Staking::submit_election_solution(Origin::signed(10), winners, compact, score), ); // now run the offchain worker in the same chain state. -- GitLab From 7fff6cb70e2d61b3136b0d51611472a58194fdf3 Mon Sep 17 00:00:00 2001 From: Pierre Krieger Date: Wed, 26 Feb 2020 12:11:32 +0100 Subject: [PATCH 046/301] Make these chainspecs fields private (#5031) --- client/chain-spec/src/chain_spec.rs | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/client/chain-spec/src/chain_spec.rs b/client/chain-spec/src/chain_spec.rs index ab9c851bdd..a7e5738fc4 100644 --- a/client/chain-spec/src/chain_spec.rs +++ b/client/chain-spec/src/chain_spec.rs @@ -117,8 +117,8 @@ struct ChildRawStorage { #[serde(deny_unknown_fields)] /// Storage content for genesis block. struct RawGenesis { - pub top: GenesisStorage, - pub children: HashMap, + top: GenesisStorage, + children: HashMap, } #[derive(Serialize, Deserialize)] @@ -134,14 +134,14 @@ enum Genesis { #[serde(rename_all = "camelCase")] #[serde(deny_unknown_fields)] struct ClientSpec { - pub name: String, - pub id: String, - pub boot_nodes: Vec, - pub telemetry_endpoints: Option, - pub protocol_id: Option, - pub properties: Option, + name: String, + id: String, + boot_nodes: Vec, + telemetry_endpoints: Option, + protocol_id: Option, + properties: Option, #[serde(flatten)] - pub extensions: E, + extensions: E, // Never used, left only for backward compatibility. consensus_engine: (), #[serde(skip_serializing)] -- GitLab From 78224bd0100570009b65ba3d878ed0e3f84e129a Mon Sep 17 00:00:00 2001 From: Chevdor Date: Wed, 26 Feb 2020 12:12:39 +0100 Subject: [PATCH 047/301] Fix dockerfile (#5059) --- .maintain/Dockerfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.maintain/Dockerfile b/.maintain/Dockerfile index 7cba85c544..56bfc7a2cc 100644 --- a/.maintain/Dockerfile +++ b/.maintain/Dockerfile @@ -1,7 +1,7 @@ # Note: We don't use Alpine and its packaged Rust/Cargo because they're too often out of date, # preventing them from being used to build Substrate/Polkadot. -FROM phusion/baseimage:0.10.2 as builder +FROM phusion/baseimage:0.11 as builder LABEL maintainer="chevdor@gmail.com" LABEL description="This is the build stage for Substrate. Here we create the binary." @@ -26,7 +26,7 @@ RUN curl https://sh.rustup.rs -sSf | sh -s -- -y && \ # ===== SECOND STAGE ====== -FROM phusion/baseimage:0.10.2 +FROM phusion/baseimage:0.11 LABEL maintainer="chevdor@gmail.com" LABEL description="This is the 2nd stage: a very small image where we copy the Substrate binary." ARG PROFILE=release -- GitLab From 4d61dc7a3bfe0daeb227a3d6129d4b809414245a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bastian=20K=C3=B6cher?= Date: Wed, 26 Feb 2020 12:14:07 +0100 Subject: [PATCH 048/301] Adds documentation for `wipe` and `commit` (#5053) * Adds documentation for `wipe` and `commit` This adds documentation to `wipe` and `commit` of `Externalities`. Besides that it removes the default implementation that would just panic and requires that all implementers of the trait implement the functions. * Update primitives/externalities/src/lib.rs Co-Authored-By: joe petrowski <25483142+joepetrowski@users.noreply.github.com> Co-authored-by: joe petrowski <25483142+joepetrowski@users.noreply.github.com> --- primitives/externalities/src/lib.rs | 20 ++++++++++++++------ primitives/state-machine/src/basic.rs | 4 ++++ 2 files changed, 18 insertions(+), 6 deletions(-) diff --git a/primitives/externalities/src/lib.rs b/primitives/externalities/src/lib.rs index 431e449846..fa0f9e4454 100644 --- a/primitives/externalities/src/lib.rs +++ b/primitives/externalities/src/lib.rs @@ -203,13 +203,21 @@ pub trait Externalities: ExtensionStore { /// Returns the SCALE encoded hash. fn storage_changes_root(&mut self, parent: &[u8]) -> Result>, ()>; - fn wipe(&mut self) { - unimplemented!() - } + /// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + /// Benchmarking related functionality and shouldn't be used anywhere else! + /// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + /// + /// Wipes all changes from caches and the database. + /// + /// The state will be reset to genesis. + fn wipe(&mut self); - fn commit(&mut self) { - unimplemented!() - } + /// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + /// Benchmarking related functionality and shouldn't be used anywhere else! + /// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + /// + /// Commits all changes to the database and clears all caches. + fn commit(&mut self); } /// Extension for the [`Externalities`] trait. diff --git a/primitives/state-machine/src/basic.rs b/primitives/state-machine/src/basic.rs index d905657737..966648bc82 100644 --- a/primitives/state-machine/src/basic.rs +++ b/primitives/state-machine/src/basic.rs @@ -298,6 +298,10 @@ impl Externalities for BasicExternalities { fn storage_changes_root(&mut self, _parent: &[u8]) -> Result>, ()> { Ok(None) } + + fn wipe(&mut self) {} + + fn commit(&mut self) {} } impl sp_externalities::ExtensionStore for BasicExternalities { -- GitLab From bad1280e9f8a020661ebf14c63e0fd7df07e3918 Mon Sep 17 00:00:00 2001 From: Denis Pisarev Date: Wed, 26 Feb 2020 12:41:39 +0100 Subject: [PATCH 049/301] Fix the issue with `trybuild`'s `ui` tests (#4992) * repro ui bug * fix the tests * test with the new image * test without CARGO_HOME * test without fixes * test again * fix trybuild old versions * bump CArgo.lock * fix trybuild newest versions * bump Cargo.lock * trying on the latest image * bump Cargo.lock * run with the old image * ci will be green on the image from 2020-02-19 [skip ci] * bump Cargo.lock --- Cargo.lock | 97 +++++++++++++------------ primitives/runtime-interface/Cargo.toml | 2 +- 2 files changed, 51 insertions(+), 48 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index b49fdbaf9e..53e2a5663b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -432,7 +432,7 @@ dependencies = [ "console_log", "futures 0.1.29", "futures 0.3.4", - "futures-timer 3.0.2", + "futures-timer 3.0.1", "js-sys", "kvdb-web", "libp2p", @@ -994,9 +994,9 @@ dependencies = [ [[package]] name = "csv-core" -version = "0.1.10" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b2466559f260f48ad25fe6317b3c8dac77b5bdb5763ac7d9d6103530663bc90" +checksum = "9b5cadb6b25c77aeff80ba701712494213f4a8418fcda2ee11b6560c3ad0bf4c" dependencies = [ "memchr", ] @@ -1074,9 +1074,9 @@ checksum = "f4f47ca1860a761136924ddd2422ba77b2ea54fe8cc75b9040804a0d9d32ad97" [[package]] name = "derive_more" -version = "0.99.3" +version = "0.99.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a806e96c59a76a5ba6e18735b6cf833344671e61e7863f2edb5c518ea2cac95c" +checksum = "2159be042979966de68315bce7034bb000c775f22e3e834e1c52ff78f041cae8" dependencies = [ "proc-macro2", "quote", @@ -1776,9 +1776,9 @@ checksum = "a1de7508b218029b0f01662ed8f61b1c964b3ae99d6f25462d0f55a595109df6" [[package]] name = "futures-timer" -version = "3.0.2" +version = "3.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e64b03909df88034c26dc1547e8970b91f98bdb65165d6a4e9110d94263dbb2c" +checksum = "3de1a2b2a2a33d9e60e17980b60ee061eeaae96a5abe9121db0fdb9af167a1c5" dependencies = [ "gloo-timers", "send_wrapper 0.4.0", @@ -2023,18 +2023,18 @@ dependencies = [ [[package]] name = "hermit-abi" -version = "0.1.7" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2c55f143919fbc0bc77e427fe2d74cf23786d7c1875666f2fde3ac3c659bb67" +checksum = "eff2656d88f158ce120947499e971d743c05dbcbed62e5bd2f38f1698bbc3772" dependencies = [ "libc", ] [[package]] name = "hex" -version = "0.4.2" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "644f9158b2f133fd50f5fb3242878846d9eb792e445c893805ff0e3824006e35" +checksum = "76cdda6bf525062a0c9e8f14ee2b37935c86b8efb6c8b69b3c83dfb518a914af" [[package]] name = "hex-literal" @@ -2670,7 +2670,7 @@ dependencies = [ "ed25519-dalek", "fnv", "futures 0.3.4", - "futures-timer 3.0.2", + "futures-timer 3.0.1", "lazy_static", "libsecp256k1", "log 0.4.8", @@ -2967,7 +2967,7 @@ checksum = "f9e80ad4e3535345f3d666554ce347d3100453775611c05c60786bf9a1747a10" dependencies = [ "async-std", "futures 0.3.4", - "futures-timer 3.0.2", + "futures-timer 3.0.1", "get_if_addrs", "ipnet", "libp2p-core", @@ -3151,6 +3151,9 @@ name = "memchr" version = "2.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3728d817d99e5ac407411fa471ff9800a778d88a24685968b36824eaf4bee400" +dependencies = [ + "libc", +] [[package]] name = "memoffset" @@ -4921,9 +4924,9 @@ dependencies = [ [[package]] name = "proc-macro-error" -version = "0.4.9" +version = "0.4.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "052b3c9af39c7e5e94245f820530487d19eb285faedcb40e0c3275132293f242" +checksum = "875077759af22fa20b610ad4471d8155b321c89c3f2785526c9839b099be4e0a" dependencies = [ "proc-macro-error-attr", "proc-macro2", @@ -4934,9 +4937,9 @@ dependencies = [ [[package]] name = "proc-macro-error-attr" -version = "0.4.9" +version = "0.4.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d175bef481c7902e63e3165627123fff3502f06ac043d3ef42d08c1246da9253" +checksum = "c5717d9fa2664351a01ed73ba5ef6df09c01a521cb42cb65a061432a826f3c7a" dependencies = [ "proc-macro2", "quote", @@ -5582,7 +5585,7 @@ dependencies = [ "derive_more", "env_logger 0.7.1", "futures 0.3.4", - "futures-timer 3.0.2", + "futures-timer 3.0.1", "libp2p", "log 0.4.8", "parity-scale-codec", @@ -5812,7 +5815,7 @@ dependencies = [ "env_logger 0.7.1", "futures 0.1.29", "futures 0.3.4", - "futures-timer 3.0.2", + "futures-timer 3.0.1", "log 0.4.8", "parity-scale-codec", "parking_lot 0.10.0", @@ -5852,7 +5855,7 @@ dependencies = [ "fork-tree", "futures 0.1.29", "futures 0.3.4", - "futures-timer 3.0.2", + "futures-timer 3.0.1", "log 0.4.8", "merlin", "num-bigint", @@ -5984,7 +5987,7 @@ name = "sc-consensus-slots" version = "0.8.0-alpha.1" dependencies = [ "futures 0.3.4", - "futures-timer 3.0.2", + "futures-timer 3.0.1", "log 0.4.8", "parity-scale-codec", "parking_lot 0.10.0", @@ -6103,7 +6106,7 @@ dependencies = [ "fork-tree", "futures 0.1.29", "futures 0.3.4", - "futures-timer 3.0.2", + "futures-timer 3.0.1", "log 0.4.8", "parity-scale-codec", "parking_lot 0.10.0", @@ -6180,7 +6183,7 @@ dependencies = [ "fnv", "fork-tree", "futures 0.3.4", - "futures-timer 3.0.2", + "futures-timer 3.0.1", "futures_codec", "libp2p", "linked-hash-map", @@ -6228,7 +6231,7 @@ name = "sc-network-gossip" version = "0.8.0-alpha.1" dependencies = [ "futures 0.3.4", - "futures-timer 3.0.2", + "futures-timer 3.0.1", "libp2p", "log 0.4.8", "lru", @@ -6245,7 +6248,7 @@ dependencies = [ "env_logger 0.7.1", "futures 0.1.29", "futures 0.3.4", - "futures-timer 3.0.2", + "futures-timer 3.0.1", "libp2p", "log 0.4.8", "parking_lot 0.10.0", @@ -6273,7 +6276,7 @@ dependencies = [ "env_logger 0.7.1", "fnv", "futures 0.3.4", - "futures-timer 3.0.2", + "futures-timer 3.0.1", "hyper 0.13.2", "hyper-rustls", "log 0.4.8", @@ -6403,7 +6406,7 @@ dependencies = [ "futures 0.1.29", "futures 0.3.4", "futures-diagnose", - "futures-timer 3.0.2", + "futures-timer 3.0.1", "lazy_static", "log 0.4.8", "parity-multiaddr 0.5.0", @@ -6484,7 +6487,7 @@ version = "2.0.0-alpha.1" dependencies = [ "bytes 0.5.4", "futures 0.3.4", - "futures-timer 3.0.2", + "futures-timer 3.0.1", "libp2p", "log 0.4.8", "parking_lot 0.10.0", @@ -6590,9 +6593,9 @@ dependencies = [ [[package]] name = "scopeguard" -version = "1.1.0" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" +checksum = "b42e15e59b18a828bbf5c58ea01debb36b9b096346de35d941dcb89009f24a0d" [[package]] name = "scroll" @@ -6710,9 +6713,9 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.48" +version = "1.0.47" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9371ade75d4c2d6cb154141b9752cf3781ec9c05e0e5cf35060e1e70ee7b9c25" +checksum = "15913895b61e0be854afd32fd4163fcd2a3df34142cf2cb961b310ce694cbf90" dependencies = [ "itoa", "ryu", @@ -7042,7 +7045,7 @@ dependencies = [ "derive_more", "futures 0.3.4", "futures-diagnose", - "futures-timer 3.0.2", + "futures-timer 3.0.1", "libp2p", "log 0.4.8", "parity-scale-codec", @@ -7896,18 +7899,18 @@ dependencies = [ [[package]] name = "thiserror" -version = "1.0.11" +version = "1.0.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee14bf8e6767ab4c687c9e8bc003879e042a96fd67a3ba5934eadb6536bef4db" +checksum = "205684fd018ca14432b12cce6ea3d46763311a571c3d294e71ba3f01adcf1aad" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.11" +version = "1.0.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7b51e1fbc44b5a0840be594fbc0f960be09050f2617e61e6aa43bef97cd3ef4" +checksum = "57e4d2e50ca050ed44fb58309bdce3efa79948f84f9993ad1978de5eebdce5a7" dependencies = [ "proc-macro2", "quote", @@ -8782,9 +8785,9 @@ checksum = "073da89bf1c84db000dd68ce660c1b4a08e3a2d28fd1e3394ab9e7abdde4a0f8" [[package]] name = "wasmparser" -version = "0.51.2" +version = "0.51.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a40d24f114a3f24b459ec292019220cff6388673b4a2c0a11483665b599ef15c" +checksum = "9e41b27a1677fe28c115de49efca55dabb14f7fece2c32947ffb9b1064fe5bd4" [[package]] name = "wasmtime" @@ -8800,7 +8803,7 @@ dependencies = [ "region", "rustc-demangle", "target-lexicon", - "wasmparser 0.51.2", + "wasmparser 0.51.1", "wasmtime-environ", "wasmtime-jit", "wasmtime-runtime", @@ -8820,7 +8823,7 @@ dependencies = [ "more-asserts", "target-lexicon", "thiserror", - "wasmparser 0.51.2", + "wasmparser 0.51.1", "wasmtime-environ", ] @@ -8848,7 +8851,7 @@ dependencies = [ "sha2", "thiserror", "toml", - "wasmparser 0.51.2", + "wasmparser 0.51.1", "winapi 0.3.8", "zstd", ] @@ -8870,7 +8873,7 @@ dependencies = [ "region", "target-lexicon", "thiserror", - "wasmparser 0.51.2", + "wasmparser 0.51.1", "wasmtime-debug", "wasmtime-environ", "wasmtime-runtime", @@ -8898,18 +8901,18 @@ dependencies = [ [[package]] name = "wast" -version = "8.0.0" +version = "7.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f9df3d716118a503b2f6bbb6ff46b21997ab0cc167b01de7a188e45e4b01e8d" +checksum = "12a729d076deb29c8509fa71f2d427729f9394f9496844ed8fcab152f35d163d" dependencies = [ "leb128", ] [[package]] name = "wat" -version = "1.0.9" +version = "1.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a927b35badc29c97d97e82689eef7f72fc936d884b3391804c1bb6cd2bdccbb" +checksum = "5795e34a4b39893653dec97e644fac85c31398e0ce1abecc48967aac83d9e8ce" dependencies = [ "wast", ] diff --git a/primitives/runtime-interface/Cargo.toml b/primitives/runtime-interface/Cargo.toml index c407113807..7235d63fb5 100644 --- a/primitives/runtime-interface/Cargo.toml +++ b/primitives/runtime-interface/Cargo.toml @@ -22,7 +22,7 @@ sp-state-machine = { version = "0.8.0-alpha.1", path = "../../primitives/state-m sp-core = { version = "2.0.0-alpha.1", path = "../core" } sp-io = { version = "2.0.0-alpha.1", path = "../io" } rustversion = "1.0.0" -trybuild = "1.0.17" +trybuild = "1.0.23" [features] default = [ "std" ] -- GitLab From 0f4f9d769ef0e35c9bd7a36f2726b220df833037 Mon Sep 17 00:00:00 2001 From: s3krit Date: Wed, 26 Feb 2020 14:36:02 +0100 Subject: [PATCH 050/301] Activate publishing of draft releases... (#5062) * Activate publishing of draft releases... ... And fix the message sending (missing parameter). * publish_draft_release.sh now checks latest... ... release on github rather than just a tag --- .maintain/gitlab/lib.sh | 8 ++++++++ .maintain/gitlab/publish_draft_release.sh | 8 +++++--- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/.maintain/gitlab/lib.sh b/.maintain/gitlab/lib.sh index bc0e06a6d4..c8b2d73e60 100755 --- a/.maintain/gitlab/lib.sh +++ b/.maintain/gitlab/lib.sh @@ -14,6 +14,14 @@ sanitised_git_logs(){ sed 's/^/* /g' } +# Returns the last published release on github +# repo: 'organization/repo' +# Usage: last_github_release "$repo" +last_github_release(){ + curl -H "Authorization: token $GITHUB_RELEASE_TOKEN" \ + -s "$api_base/$1/releases/latest" | jq '.tag_name' +} + # Checks whether a tag on github has been verified # repo: 'organization/repo' # tagver: 'v1.2.3' diff --git a/.maintain/gitlab/publish_draft_release.sh b/.maintain/gitlab/publish_draft_release.sh index 8566827a09..4f73575f5b 100755 --- a/.maintain/gitlab/publish_draft_release.sh +++ b/.maintain/gitlab/publish_draft_release.sh @@ -11,7 +11,9 @@ labels=( ) version="$CI_COMMIT_TAG" -last_version=$(git tag -l | sort -V | grep -B 1 -x "$version" | head -n 1) + +# Note that this is not the last *tagged* version, but the last *published* version +last_version=$(last_github_release 'paritytech/substrate') echo "[+] Version: $version; Previous version: $last_version" all_changes="$(sanitised_git_logs "$last_version" "$version")" @@ -39,7 +41,7 @@ $labelled_changes" echo "[+] Release text generated: " echo "$release_text" -exit + echo "[+] Pushing release to github" # Create release on github release_name="Substrate $version" @@ -79,6 +81,6 @@ formatted_msg_body=$(cat < Date: Thu, 27 Feb 2020 03:19:53 +1300 Subject: [PATCH 051/301] Fix/div by zero (#5041) * Handle gas_price being zero separately * Bump spec_version * Add a unit & integration tests for gas price = 0 --- bin/node/runtime/src/lib.rs | 4 ++-- frame/contracts/src/gas.rs | 26 ++++++++++++++++++++++++-- frame/contracts/src/tests.rs | 16 ++++++++++++++++ 3 files changed, 42 insertions(+), 4 deletions(-) diff --git a/bin/node/runtime/src/lib.rs b/bin/node/runtime/src/lib.rs index 980f033024..730a983a43 100644 --- a/bin/node/runtime/src/lib.rs +++ b/bin/node/runtime/src/lib.rs @@ -81,8 +81,8 @@ pub const VERSION: RuntimeVersion = RuntimeVersion { // and set impl_version to 0. If only runtime // implementation changes and behavior does not, then leave spec_version as // is and increment impl_version. - spec_version: 225, - impl_version: 1, + spec_version: 226, + impl_version: 0, apis: RUNTIME_API_VERSIONS, }; diff --git a/frame/contracts/src/gas.rs b/frame/contracts/src/gas.rs index c8572daaa4..362f15f3aa 100644 --- a/frame/contracts/src/gas.rs +++ b/frame/contracts/src/gas.rs @@ -250,7 +250,11 @@ pub fn refund_unused_gas( pub fn approx_gas_for_balance(gas_price: Balance, balance: Balance) -> Gas where Balance: AtLeast32Bit { - (balance / gas_price).saturated_into::() + if gas_price.is_zero() { + Zero::zero() + } else { + (balance / gas_price).saturated_into::() + } } /// A simple utility macro that helps to match against a @@ -294,7 +298,7 @@ macro_rules! match_tokens { #[cfg(test)] mod tests { use super::{GasMeter, Token}; - use crate::tests::Test; + use crate::{tests::Test, gas::approx_gas_for_balance}; /// A trivial token that charges the specified number of gas units. #[derive(Copy, Clone, PartialEq, Eq, Debug)] @@ -382,4 +386,22 @@ mod tests { let mut gas_meter = GasMeter::::with_limit(25, 10); assert!(!gas_meter.charge(&(), SimpleToken(25)).is_out_of_gas()); } + + // A unit test for `fn approx_gas_for_balance()`, and makes + // sure setting gas_price 0 does not cause `div by zero` error. + #[test] + fn approx_gas_for_balance_works() { + let tests = vec![ + (approx_gas_for_balance(0_u64, 123), 0), + (approx_gas_for_balance(0_u64, 456), 0), + (approx_gas_for_balance(1_u64, 123), 123), + (approx_gas_for_balance(1_u64, 456), 456), + (approx_gas_for_balance(100_u64, 900), 9), + (approx_gas_for_balance(123_u64, 900), 7), + ]; + + for (lhs, rhs) in tests { + assert_eq!(lhs, rhs); + } + } } diff --git a/frame/contracts/src/tests.rs b/frame/contracts/src/tests.rs index e775998a3a..51da3e8d1f 100644 --- a/frame/contracts/src/tests.rs +++ b/frame/contracts/src/tests.rs @@ -2079,6 +2079,22 @@ fn deploy_and_call_other_contract() { }); } +#[test] +fn deploy_works_without_gas_price() { + let (wasm, code_hash) = compile_module::(CODE_GET_RUNTIME_STORAGE).unwrap(); + ExtBuilder::default().existential_deposit(50).gas_price(0).build().execute_with(|| { + Balances::deposit_creating(&ALICE, 1_000_000); + assert_ok!(Contracts::put_code(Origin::signed(ALICE), 100_000, wasm)); + assert_ok!(Contracts::instantiate( + Origin::signed(ALICE), + 100, + 100_000, + code_hash.into(), + vec![], + )); + }); +} + const CODE_SELF_DESTRUCT: &str = r#" (module (import "env" "ext_scratch_size" (func $ext_scratch_size (result i32))) -- GitLab From 2afecf81ee19b8a6edb364b419190ea47c4a4a31 Mon Sep 17 00:00:00 2001 From: Benjamin Kampmann Date: Thu, 27 Feb 2020 00:22:44 +0100 Subject: [PATCH 052/301] set missing metadata fields, prepping alpha.2 (#5067) * setting first batch of descriptions * fix what I just broke * next batch * and pallets, too * last batch * set cargo.lock * keep'em dev-deps * bump version to alpha.2 --- Cargo.lock | 298 +++++++++--------- bin/node-template/node/Cargo.toml | 38 +-- bin/node-template/pallets/template/Cargo.toml | 16 +- bin/node-template/runtime/Cargo.toml | 48 +-- bin/node/cli/Cargo.toml | 108 +++---- bin/node/executor/Cargo.toml | 46 +-- bin/node/inspect/Cargo.toml | 14 +- bin/node/primitives/Cargo.toml | 8 +- bin/node/rpc-client/Cargo.toml | 6 +- bin/node/rpc/Cargo.toml | 34 +- bin/node/runtime/Cargo.toml | 104 +++--- bin/node/testing/Cargo.toml | 66 ++-- bin/node/transaction-factory/Cargo.toml | 22 +- bin/utils/chain-spec-builder/Cargo.toml | 8 +- bin/utils/subkey/Cargo.toml | 18 +- client/Cargo.toml | 37 +-- client/api/Cargo.toml | 35 +- client/authority-discovery/Cargo.toml | 21 +- client/basic-authorship/Cargo.toml | 27 +- client/block-builder/Cargo.toml | 20 +- client/chain-spec/Cargo.toml | 13 +- client/chain-spec/derive/Cargo.toml | 3 +- client/cli/Cargo.toml | 28 +- client/consensus/aura/Cargo.toml | 44 +-- client/consensus/babe/Cargo.toml | 54 ++-- client/consensus/babe/rpc/Cargo.toml | 24 +- client/consensus/epochs/Cargo.toml | 10 +- client/consensus/manual-seal/Cargo.toml | 20 +- client/consensus/pow/Cargo.toml | 22 +- client/consensus/slots/Cargo.toml | 20 +- client/consensus/uncles/Cargo.toml | 14 +- client/db/Cargo.toml | 25 +- client/executor/Cargo.toml | 30 +- client/executor/common/Cargo.toml | 14 +- client/executor/runtime-test/Cargo.toml | 12 +- client/executor/wasmi/Cargo.toml | 14 +- client/executor/wasmtime/Cargo.toml | 13 +- client/finality-grandpa/Cargo.toml | 45 +-- client/informant/Cargo.toml | 12 +- client/keystore/Cargo.toml | 9 +- client/network-gossip/Cargo.toml | 8 +- client/network/Cargo.toml | 28 +- client/network/test/Cargo.toml | 18 +- client/offchain/Cargo.toml | 22 +- client/peerset/Cargo.toml | 4 +- client/rpc-api/Cargo.toml | 13 +- client/rpc-servers/Cargo.toml | 5 +- client/rpc/Cargo.toml | 39 +-- client/service/Cargo.toml | 55 ++-- client/service/test/Cargo.toml | 14 +- client/state-db/Cargo.toml | 5 +- client/telemetry/Cargo.toml | 4 +- client/tracing/Cargo.toml | 5 +- client/transaction-pool/Cargo.toml | 19 +- client/transaction-pool/graph/Cargo.toml | 11 +- frame/assets/Cargo.toml | 15 +- frame/aura/Cargo.toml | 27 +- frame/authority-discovery/Cargo.toml | 23 +- frame/authorship/Cargo.toml | 18 +- frame/babe/Cargo.toml | 29 +- frame/balances/Cargo.toml | 19 +- frame/benchmarking/Cargo.toml | 11 +- frame/collective/Cargo.toml | 17 +- frame/contracts/Cargo.toml | 25 +- frame/contracts/common/Cargo.toml | 7 +- frame/contracts/rpc/Cargo.toml | 17 +- frame/contracts/rpc/runtime-api/Cargo.toml | 11 +- frame/democracy/Cargo.toml | 19 +- frame/elections-phragmen/Cargo.toml | 21 +- frame/elections/Cargo.toml | 17 +- frame/evm/Cargo.toml | 19 +- frame/example-offchain-worker/Cargo.toml | 15 +- frame/example/Cargo.toml | 17 +- frame/executive/Cargo.toml | 21 +- frame/finality-tracker/Cargo.toml | 21 +- frame/generic-asset/Cargo.toml | 15 +- frame/grandpa/Cargo.toml | 23 +- frame/identity/Cargo.toml | 19 +- frame/im-online/Cargo.toml | 23 +- frame/indices/Cargo.toml | 19 +- frame/membership/Cargo.toml | 15 +- frame/metadata/Cargo.toml | 7 +- frame/nicks/Cargo.toml | 17 +- frame/offences/Cargo.toml | 19 +- frame/randomness-collective-flip/Cargo.toml | 15 +- frame/recovery/Cargo.toml | 17 +- frame/scored-pool/Cargo.toml | 17 +- frame/session/Cargo.toml | 23 +- frame/society/Cargo.toml | 17 +- frame/staking/Cargo.toml | 33 +- frame/staking/reward-curve/Cargo.toml | 5 +- frame/sudo/Cargo.toml | 15 +- frame/support/Cargo.toml | 23 +- frame/support/procedural/Cargo.toml | 5 +- frame/support/procedural/tools/Cargo.toml | 5 +- .../procedural/tools/derive/Cargo.toml | 3 +- frame/support/test/Cargo.toml | 12 +- frame/system/Cargo.toml | 17 +- frame/system/rpc/runtime-api/Cargo.toml | 5 +- frame/timestamp/Cargo.toml | 25 +- frame/transaction-payment/Cargo.toml | 19 +- frame/transaction-payment/rpc/Cargo.toml | 15 +- .../rpc/runtime-api/Cargo.toml | 11 +- frame/treasury/Cargo.toml | 17 +- frame/utility/Cargo.toml | 19 +- frame/vesting/Cargo.toml | 19 +- primitives/allocator/Cargo.toml | 10 +- primitives/api/Cargo.toml | 15 +- primitives/api/proc-macro/Cargo.toml | 5 +- primitives/api/test/Cargo.toml | 12 +- primitives/application-crypto/Cargo.toml | 10 +- primitives/application-crypto/test/Cargo.toml | 8 +- primitives/arithmetic/Cargo.toml | 9 +- primitives/authority-discovery/Cargo.toml | 10 +- primitives/authorship/Cargo.toml | 8 +- primitives/block-builder/Cargo.toml | 11 +- primitives/blockchain/Cargo.toml | 13 +- primitives/consensus/aura/Cargo.toml | 14 +- primitives/consensus/babe/Cargo.toml | 16 +- primitives/consensus/common/Cargo.toml | 18 +- primitives/consensus/pow/Cargo.toml | 10 +- primitives/core/Cargo.toml | 16 +- primitives/debug-derive/Cargo.toml | 4 +- primitives/externalities/Cargo.toml | 8 +- primitives/finality-grandpa/Cargo.toml | 13 +- primitives/finality-tracker/Cargo.toml | 7 +- primitives/inherents/Cargo.toml | 9 +- primitives/io/Cargo.toml | 19 +- primitives/keyring/Cargo.toml | 9 +- primitives/offchain/Cargo.toml | 6 +- primitives/panic-handler/Cargo.toml | 5 +- primitives/phragmen/Cargo.toml | 11 +- primitives/rpc/Cargo.toml | 5 +- primitives/runtime-interface/Cargo.toml | 18 +- .../runtime-interface/proc-macro/Cargo.toml | 4 +- .../runtime-interface/test-wasm/Cargo.toml | 8 +- primitives/runtime-interface/test/Cargo.toml | 10 +- primitives/runtime/Cargo.toml | 17 +- primitives/sandbox/Cargo.toml | 11 +- primitives/serializer/Cargo.toml | 4 +- primitives/session/Cargo.toml | 11 +- primitives/staking/Cargo.toml | 7 +- primitives/state-machine/Cargo.toml | 11 +- primitives/std/Cargo.toml | 5 +- primitives/storage/Cargo.toml | 7 +- primitives/test-primitives/Cargo.toml | 6 +- primitives/timestamp/Cargo.toml | 11 +- primitives/transaction-pool/Cargo.toml | 9 +- primitives/trie/Cargo.toml | 7 +- primitives/version/Cargo.toml | 9 +- primitives/wasm-interface/Cargo.toml | 6 +- test-utils/Cargo.toml | 2 +- test-utils/client/Cargo.toml | 20 +- test-utils/runtime/Cargo.toml | 52 +-- test-utils/runtime/client/Cargo.toml | 14 +- .../runtime/transaction-pool/Cargo.toml | 8 +- utils/browser/Cargo.toml | 10 +- utils/build-script-utils/Cargo.toml | 3 +- utils/fork-tree/Cargo.toml | 4 +- utils/frame/benchmarking-cli/Cargo.toml | 17 +- utils/frame/rpc/support/Cargo.toml | 11 +- utils/frame/rpc/system/Cargo.toml | 19 +- utils/prometheus/Cargo.toml | 2 +- 163 files changed, 1643 insertions(+), 1474 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 53e2a5663b..757b9ad080 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -424,7 +424,7 @@ dependencies = [ [[package]] name = "browser-utils" -version = "0.8.0-alpha.1" +version = "0.8.0-alpha.2" dependencies = [ "chrono", "clear_on_drop", @@ -598,7 +598,7 @@ dependencies = [ [[package]] name = "chain-spec-builder" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" dependencies = [ "ansi_term 0.12.1", "node-cli", @@ -1442,14 +1442,14 @@ checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" [[package]] name = "fork-tree" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" dependencies = [ "parity-scale-codec", ] [[package]] name = "frame-benchmarking" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" dependencies = [ "parity-scale-codec", "sp-api", @@ -1460,7 +1460,7 @@ dependencies = [ [[package]] name = "frame-benchmarking-cli" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" dependencies = [ "frame-benchmarking", "parity-scale-codec", @@ -1475,7 +1475,7 @@ dependencies = [ [[package]] name = "frame-executive" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" dependencies = [ "frame-support", "frame-system", @@ -1493,7 +1493,7 @@ dependencies = [ [[package]] name = "frame-metadata" -version = "11.0.0-alpha.1" +version = "11.0.0-alpha.2" dependencies = [ "parity-scale-codec", "serde", @@ -1503,7 +1503,7 @@ dependencies = [ [[package]] name = "frame-support" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" dependencies = [ "bitmask", "frame-metadata", @@ -1528,7 +1528,7 @@ dependencies = [ [[package]] name = "frame-support-procedural" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" dependencies = [ "frame-support-procedural-tools", "proc-macro2", @@ -1538,7 +1538,7 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" dependencies = [ "frame-support-procedural-tools-derive", "proc-macro-crate", @@ -1549,7 +1549,7 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools-derive" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" dependencies = [ "proc-macro2", "quote", @@ -1574,7 +1574,7 @@ dependencies = [ [[package]] name = "frame-system" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" dependencies = [ "criterion 0.2.11", "frame-support", @@ -1592,7 +1592,7 @@ dependencies = [ [[package]] name = "frame-system-rpc-runtime-api" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" dependencies = [ "parity-scale-codec", "sp-api", @@ -3345,7 +3345,7 @@ dependencies = [ [[package]] name = "node-cli" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" dependencies = [ "assert_cmd", "browser-utils", @@ -3416,7 +3416,7 @@ dependencies = [ [[package]] name = "node-executor" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" dependencies = [ "criterion 0.3.1", "frame-benchmarking", @@ -3449,7 +3449,7 @@ dependencies = [ [[package]] name = "node-inspect" -version = "0.8.0-alpha.1" +version = "0.8.0-alpha.2" dependencies = [ "derive_more", "log 0.4.8", @@ -3465,7 +3465,7 @@ dependencies = [ [[package]] name = "node-primitives" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" dependencies = [ "pretty_assertions", "sp-core", @@ -3475,7 +3475,7 @@ dependencies = [ [[package]] name = "node-rpc" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" dependencies = [ "jsonrpc-core", "node-primitives", @@ -3498,7 +3498,7 @@ dependencies = [ [[package]] name = "node-rpc-client" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" dependencies = [ "env_logger 0.7.1", "futures 0.1.29", @@ -3511,7 +3511,7 @@ dependencies = [ [[package]] name = "node-runtime" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" dependencies = [ "frame-benchmarking", "frame-executive", @@ -3573,7 +3573,7 @@ dependencies = [ [[package]] name = "node-template" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" dependencies = [ "futures 0.3.4", "log 0.4.8", @@ -3601,7 +3601,7 @@ dependencies = [ [[package]] name = "node-template-runtime" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" dependencies = [ "frame-executive", "frame-support", @@ -3633,7 +3633,7 @@ dependencies = [ [[package]] name = "node-testing" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" dependencies = [ "criterion 0.3.1", "frame-support", @@ -3678,7 +3678,7 @@ dependencies = [ [[package]] name = "node-transaction-factory" -version = "0.8.0-alpha.1" +version = "0.8.0-alpha.2" dependencies = [ "log 0.4.8", "parity-scale-codec", @@ -3852,7 +3852,7 @@ dependencies = [ [[package]] name = "pallet-assets" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" dependencies = [ "frame-support", "frame-system", @@ -3866,7 +3866,7 @@ dependencies = [ [[package]] name = "pallet-aura" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" dependencies = [ "frame-support", "frame-system", @@ -3888,7 +3888,7 @@ dependencies = [ [[package]] name = "pallet-authority-discovery" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" dependencies = [ "frame-support", "frame-system", @@ -3906,7 +3906,7 @@ dependencies = [ [[package]] name = "pallet-authorship" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" dependencies = [ "frame-support", "frame-system", @@ -3922,7 +3922,7 @@ dependencies = [ [[package]] name = "pallet-babe" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" dependencies = [ "frame-support", "frame-system", @@ -3947,7 +3947,7 @@ dependencies = [ [[package]] name = "pallet-balances" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" dependencies = [ "frame-benchmarking", "frame-support", @@ -3963,7 +3963,7 @@ dependencies = [ [[package]] name = "pallet-collective" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" dependencies = [ "frame-support", "frame-system", @@ -3979,7 +3979,7 @@ dependencies = [ [[package]] name = "pallet-contracts" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" dependencies = [ "assert_matches", "frame-support", @@ -4004,7 +4004,7 @@ dependencies = [ [[package]] name = "pallet-contracts-primitives" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" dependencies = [ "parity-scale-codec", "sp-runtime", @@ -4013,7 +4013,7 @@ dependencies = [ [[package]] name = "pallet-contracts-rpc" -version = "0.8.0-alpha.1" +version = "0.8.0-alpha.2" dependencies = [ "jsonrpc-core", "jsonrpc-core-client", @@ -4032,7 +4032,7 @@ dependencies = [ [[package]] name = "pallet-contracts-rpc-runtime-api" -version = "0.8.0-alpha.1" +version = "0.8.0-alpha.2" dependencies = [ "pallet-contracts-primitives", "parity-scale-codec", @@ -4043,7 +4043,7 @@ dependencies = [ [[package]] name = "pallet-democracy" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" dependencies = [ "frame-support", "frame-system", @@ -4060,7 +4060,7 @@ dependencies = [ [[package]] name = "pallet-elections" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" dependencies = [ "frame-support", "frame-system", @@ -4076,7 +4076,7 @@ dependencies = [ [[package]] name = "pallet-elections-phragmen" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" dependencies = [ "frame-support", "frame-system", @@ -4094,7 +4094,7 @@ dependencies = [ [[package]] name = "pallet-evm" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" dependencies = [ "evm", "frame-support", @@ -4114,7 +4114,7 @@ dependencies = [ [[package]] name = "pallet-example" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" dependencies = [ "frame-support", "frame-system", @@ -4129,7 +4129,7 @@ dependencies = [ [[package]] name = "pallet-example-offchain-worker" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" dependencies = [ "frame-support", "frame-system", @@ -4144,7 +4144,7 @@ dependencies = [ [[package]] name = "pallet-finality-tracker" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" dependencies = [ "frame-support", "frame-system", @@ -4161,7 +4161,7 @@ dependencies = [ [[package]] name = "pallet-generic-asset" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" dependencies = [ "frame-support", "frame-system", @@ -4175,7 +4175,7 @@ dependencies = [ [[package]] name = "pallet-grandpa" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" dependencies = [ "frame-support", "frame-system", @@ -4193,7 +4193,7 @@ dependencies = [ [[package]] name = "pallet-identity" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" dependencies = [ "enumflags2", "frame-benchmarking", @@ -4210,7 +4210,7 @@ dependencies = [ [[package]] name = "pallet-im-online" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" dependencies = [ "frame-support", "frame-system", @@ -4228,7 +4228,7 @@ dependencies = [ [[package]] name = "pallet-indices" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" dependencies = [ "frame-support", "frame-system", @@ -4244,7 +4244,7 @@ dependencies = [ [[package]] name = "pallet-membership" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" dependencies = [ "frame-support", "frame-system", @@ -4258,7 +4258,7 @@ dependencies = [ [[package]] name = "pallet-nicks" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" dependencies = [ "frame-support", "frame-system", @@ -4273,7 +4273,7 @@ dependencies = [ [[package]] name = "pallet-offences" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" dependencies = [ "frame-support", "frame-system", @@ -4289,7 +4289,7 @@ dependencies = [ [[package]] name = "pallet-randomness-collective-flip" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" dependencies = [ "frame-support", "frame-system", @@ -4303,7 +4303,7 @@ dependencies = [ [[package]] name = "pallet-recovery" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" dependencies = [ "enumflags2", "frame-support", @@ -4319,7 +4319,7 @@ dependencies = [ [[package]] name = "pallet-scored-pool" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" dependencies = [ "frame-support", "frame-system", @@ -4334,7 +4334,7 @@ dependencies = [ [[package]] name = "pallet-session" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" dependencies = [ "frame-support", "frame-system", @@ -4354,7 +4354,7 @@ dependencies = [ [[package]] name = "pallet-society" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" dependencies = [ "frame-support", "frame-system", @@ -4370,7 +4370,7 @@ dependencies = [ [[package]] name = "pallet-staking" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" dependencies = [ "frame-support", "frame-system", @@ -4393,7 +4393,7 @@ dependencies = [ [[package]] name = "pallet-staking-reward-curve" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -4404,7 +4404,7 @@ dependencies = [ [[package]] name = "pallet-sudo" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" dependencies = [ "frame-support", "frame-system", @@ -4418,7 +4418,7 @@ dependencies = [ [[package]] name = "pallet-template" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" dependencies = [ "frame-support", "frame-system", @@ -4431,7 +4431,7 @@ dependencies = [ [[package]] name = "pallet-timestamp" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" dependencies = [ "frame-benchmarking", "frame-support", @@ -4449,7 +4449,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" dependencies = [ "frame-support", "frame-system", @@ -4464,7 +4464,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" dependencies = [ "jsonrpc-core", "jsonrpc-core-client", @@ -4481,7 +4481,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc-runtime-api" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" dependencies = [ "frame-support", "parity-scale-codec", @@ -4494,7 +4494,7 @@ dependencies = [ [[package]] name = "pallet-treasury" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" dependencies = [ "frame-support", "frame-system", @@ -4509,7 +4509,7 @@ dependencies = [ [[package]] name = "pallet-utility" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" dependencies = [ "frame-support", "frame-system", @@ -4524,7 +4524,7 @@ dependencies = [ [[package]] name = "pallet-vesting" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" dependencies = [ "enumflags2", "frame-support", @@ -4990,7 +4990,7 @@ dependencies = [ [[package]] name = "prometheus-exporter" -version = "0.8.0-alpha.1" +version = "0.8.0-alpha.2" dependencies = [ "async-std", "derive_more", @@ -5579,7 +5579,7 @@ dependencies = [ [[package]] name = "sc-authority-discovery" -version = "0.8.0-alpha.1" +version = "0.8.0-alpha.2" dependencies = [ "bytes 0.5.4", "derive_more", @@ -5608,7 +5608,7 @@ dependencies = [ [[package]] name = "sc-basic-authorship" -version = "0.8.0-alpha.1" +version = "0.8.0-alpha.2" dependencies = [ "futures 0.3.4", "log 0.4.8", @@ -5632,7 +5632,7 @@ dependencies = [ [[package]] name = "sc-block-builder" -version = "0.8.0-alpha.1" +version = "0.8.0-alpha.2" dependencies = [ "parity-scale-codec", "sc-client-api", @@ -5647,7 +5647,7 @@ dependencies = [ [[package]] name = "sc-chain-spec" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" dependencies = [ "impl-trait-for-tuples", "sc-chain-spec-derive", @@ -5661,7 +5661,7 @@ dependencies = [ [[package]] name = "sc-chain-spec-derive" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -5671,7 +5671,7 @@ dependencies = [ [[package]] name = "sc-cli" -version = "0.8.0-alpha.1" +version = "0.8.0-alpha.2" dependencies = [ "ansi_term 0.12.1", "app_dirs", @@ -5710,7 +5710,7 @@ dependencies = [ [[package]] name = "sc-client" -version = "0.8.0-alpha.1" +version = "0.8.0-alpha.2" dependencies = [ "derive_more", "env_logger 0.7.1", @@ -5747,7 +5747,7 @@ dependencies = [ [[package]] name = "sc-client-api" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" dependencies = [ "derive_more", "fnv", @@ -5778,7 +5778,7 @@ dependencies = [ [[package]] name = "sc-client-db" -version = "0.8.0-alpha.1" +version = "0.8.0-alpha.2" dependencies = [ "env_logger 0.7.1", "hash-db", @@ -5809,7 +5809,7 @@ dependencies = [ [[package]] name = "sc-consensus-aura" -version = "0.8.0-alpha.1" +version = "0.8.0-alpha.2" dependencies = [ "derive_more", "env_logger 0.7.1", @@ -5848,7 +5848,7 @@ dependencies = [ [[package]] name = "sc-consensus-babe" -version = "0.8.0-alpha.1" +version = "0.8.0-alpha.2" dependencies = [ "derive_more", "env_logger 0.7.1", @@ -5899,7 +5899,7 @@ dependencies = [ [[package]] name = "sc-consensus-babe-rpc" -version = "0.8.0-alpha.1" +version = "0.8.0-alpha.2" dependencies = [ "derive_more", "futures 0.3.4", @@ -5924,7 +5924,7 @@ dependencies = [ [[package]] name = "sc-consensus-epochs" -version = "0.8.0-alpha.1" +version = "0.8.0-alpha.2" dependencies = [ "fork-tree", "parity-scale-codec", @@ -5936,7 +5936,7 @@ dependencies = [ [[package]] name = "sc-consensus-manual-seal" -version = "0.8.0-alpha.1" +version = "0.8.0-alpha.2" dependencies = [ "derive_more", "env_logger 0.7.1", @@ -5964,7 +5964,7 @@ dependencies = [ [[package]] name = "sc-consensus-pow" -version = "0.8.0-alpha.1" +version = "0.8.0-alpha.2" dependencies = [ "derive_more", "futures 0.3.4", @@ -5984,7 +5984,7 @@ dependencies = [ [[package]] name = "sc-consensus-slots" -version = "0.8.0-alpha.1" +version = "0.8.0-alpha.2" dependencies = [ "futures 0.3.4", "futures-timer 3.0.1", @@ -6005,7 +6005,7 @@ dependencies = [ [[package]] name = "sc-consensus-uncles" -version = "0.8.0-alpha.1" +version = "0.8.0-alpha.2" dependencies = [ "log 0.4.8", "sc-client-api", @@ -6018,7 +6018,7 @@ dependencies = [ [[package]] name = "sc-executor" -version = "0.8.0-alpha.1" +version = "0.8.0-alpha.2" dependencies = [ "assert_matches", "derive_more", @@ -6051,7 +6051,7 @@ dependencies = [ [[package]] name = "sc-executor-common" -version = "0.8.0-alpha.1" +version = "0.8.0-alpha.2" dependencies = [ "derive_more", "log 0.4.8", @@ -6066,7 +6066,7 @@ dependencies = [ [[package]] name = "sc-executor-wasmi" -version = "0.8.0-alpha.1" +version = "0.8.0-alpha.2" dependencies = [ "log 0.4.8", "parity-scale-codec", @@ -6081,7 +6081,7 @@ dependencies = [ [[package]] name = "sc-executor-wasmtime" -version = "0.8.0-alpha.1" +version = "0.8.0-alpha.2" dependencies = [ "assert_matches", "log 0.4.8", @@ -6098,7 +6098,7 @@ dependencies = [ [[package]] name = "sc-finality-grandpa" -version = "0.8.0-alpha.1" +version = "0.8.0-alpha.2" dependencies = [ "assert_matches", "env_logger 0.7.1", @@ -6139,7 +6139,7 @@ dependencies = [ [[package]] name = "sc-informant" -version = "0.8.0-alpha.1" +version = "0.8.0-alpha.2" dependencies = [ "ansi_term 0.12.1", "futures 0.3.4", @@ -6155,7 +6155,7 @@ dependencies = [ [[package]] name = "sc-keystore" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" dependencies = [ "derive_more", "hex", @@ -6170,7 +6170,7 @@ dependencies = [ [[package]] name = "sc-network" -version = "0.8.0-alpha.1" +version = "0.8.0-alpha.2" dependencies = [ "assert_matches", "async-std", @@ -6228,7 +6228,7 @@ dependencies = [ [[package]] name = "sc-network-gossip" -version = "0.8.0-alpha.1" +version = "0.8.0-alpha.2" dependencies = [ "futures 0.3.4", "futures-timer 3.0.1", @@ -6270,7 +6270,7 @@ dependencies = [ [[package]] name = "sc-offchain" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" dependencies = [ "bytes 0.5.4", "env_logger 0.7.1", @@ -6301,7 +6301,7 @@ dependencies = [ [[package]] name = "sc-peerset" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" dependencies = [ "futures 0.3.4", "libp2p", @@ -6313,7 +6313,7 @@ dependencies = [ [[package]] name = "sc-rpc" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" dependencies = [ "assert_matches", "futures 0.1.29", @@ -6350,7 +6350,7 @@ dependencies = [ [[package]] name = "sc-rpc-api" -version = "0.8.0-alpha.1" +version = "0.8.0-alpha.2" dependencies = [ "derive_more", "futures 0.3.4", @@ -6372,7 +6372,7 @@ dependencies = [ [[package]] name = "sc-rpc-server" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" dependencies = [ "jsonrpc-core", "jsonrpc-http-server", @@ -6399,7 +6399,7 @@ dependencies = [ [[package]] name = "sc-service" -version = "0.8.0-alpha.1" +version = "0.8.0-alpha.2" dependencies = [ "derive_more", "exit-future", @@ -6472,7 +6472,7 @@ dependencies = [ [[package]] name = "sc-state-db" -version = "0.8.0-alpha.1" +version = "0.8.0-alpha.2" dependencies = [ "env_logger 0.7.1", "log 0.4.8", @@ -6483,7 +6483,7 @@ dependencies = [ [[package]] name = "sc-telemetry" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" dependencies = [ "bytes 0.5.4", "futures 0.3.4", @@ -6504,7 +6504,7 @@ dependencies = [ [[package]] name = "sc-tracing" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" dependencies = [ "erased-serde", "log 0.4.8", @@ -6519,7 +6519,7 @@ dependencies = [ [[package]] name = "sc-transaction-graph" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" dependencies = [ "assert_matches", "criterion 0.3.1", @@ -6541,7 +6541,7 @@ dependencies = [ [[package]] name = "sc-transaction-pool" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" dependencies = [ "derive_more", "futures 0.3.4", @@ -6902,7 +6902,7 @@ checksum = "4bf77cb82ba8453b42b6ae1d692e4cdc92f9a47beaf89a847c8be83f4e328ad3" [[package]] name = "sp-allocator" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" dependencies = [ "derive_more", "log 0.4.8", @@ -6913,7 +6913,7 @@ dependencies = [ [[package]] name = "sp-api" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" dependencies = [ "hash-db", "parity-scale-codec", @@ -6928,7 +6928,7 @@ dependencies = [ [[package]] name = "sp-api-proc-macro" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" dependencies = [ "blake2-rfc", "proc-macro-crate", @@ -6956,7 +6956,7 @@ dependencies = [ [[package]] name = "sp-application-crypto" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" dependencies = [ "parity-scale-codec", "serde", @@ -6978,7 +6978,7 @@ dependencies = [ [[package]] name = "sp-arithmetic" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" dependencies = [ "criterion 0.3.1", "integer-sqrt", @@ -6993,7 +6993,7 @@ dependencies = [ [[package]] name = "sp-authority-discovery" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" dependencies = [ "parity-scale-codec", "sp-api", @@ -7004,7 +7004,7 @@ dependencies = [ [[package]] name = "sp-authorship" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" dependencies = [ "parity-scale-codec", "sp-inherents", @@ -7014,7 +7014,7 @@ dependencies = [ [[package]] name = "sp-block-builder" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" dependencies = [ "parity-scale-codec", "sp-api", @@ -7025,7 +7025,7 @@ dependencies = [ [[package]] name = "sp-blockchain" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" dependencies = [ "derive_more", "log 0.4.8", @@ -7040,7 +7040,7 @@ dependencies = [ [[package]] name = "sp-consensus" -version = "0.8.0-alpha.1" +version = "0.8.0-alpha.2" dependencies = [ "derive_more", "futures 0.3.4", @@ -7062,7 +7062,7 @@ dependencies = [ [[package]] name = "sp-consensus-aura" -version = "0.8.0-alpha.1" +version = "0.8.0-alpha.2" dependencies = [ "parity-scale-codec", "sp-api", @@ -7075,7 +7075,7 @@ dependencies = [ [[package]] name = "sp-consensus-babe" -version = "0.8.0-alpha.1" +version = "0.8.0-alpha.2" dependencies = [ "parity-scale-codec", "schnorrkel", @@ -7090,7 +7090,7 @@ dependencies = [ [[package]] name = "sp-consensus-pow" -version = "0.8.0-alpha.1" +version = "0.8.0-alpha.2" dependencies = [ "parity-scale-codec", "sp-api", @@ -7101,7 +7101,7 @@ dependencies = [ [[package]] name = "sp-core" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" dependencies = [ "base58", "blake2-rfc", @@ -7145,7 +7145,7 @@ dependencies = [ [[package]] name = "sp-debug-derive" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" dependencies = [ "proc-macro2", "quote", @@ -7154,7 +7154,7 @@ dependencies = [ [[package]] name = "sp-externalities" -version = "0.8.0-alpha.1" +version = "0.8.0-alpha.2" dependencies = [ "environmental", "sp-std", @@ -7163,7 +7163,7 @@ dependencies = [ [[package]] name = "sp-finality-grandpa" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" dependencies = [ "parity-scale-codec", "serde", @@ -7175,7 +7175,7 @@ dependencies = [ [[package]] name = "sp-finality-tracker" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" dependencies = [ "parity-scale-codec", "sp-inherents", @@ -7184,7 +7184,7 @@ dependencies = [ [[package]] name = "sp-inherents" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" dependencies = [ "derive_more", "parity-scale-codec", @@ -7195,7 +7195,7 @@ dependencies = [ [[package]] name = "sp-io" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" dependencies = [ "hash-db", "libsecp256k1", @@ -7212,7 +7212,7 @@ dependencies = [ [[package]] name = "sp-keyring" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" dependencies = [ "lazy_static", "sp-core", @@ -7222,7 +7222,7 @@ dependencies = [ [[package]] name = "sp-offchain" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" dependencies = [ "sp-api", "sp-runtime", @@ -7230,7 +7230,7 @@ dependencies = [ [[package]] name = "sp-panic-handler" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" dependencies = [ "backtrace", "log 0.4.8", @@ -7238,7 +7238,7 @@ dependencies = [ [[package]] name = "sp-phragmen" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" dependencies = [ "rand 0.7.3", "serde", @@ -7250,7 +7250,7 @@ dependencies = [ [[package]] name = "sp-rpc" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" dependencies = [ "serde", "serde_json", @@ -7259,7 +7259,7 @@ dependencies = [ [[package]] name = "sp-runtime" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" dependencies = [ "impl-trait-for-tuples", "log 0.4.8", @@ -7279,7 +7279,7 @@ dependencies = [ [[package]] name = "sp-runtime-interface" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" dependencies = [ "parity-scale-codec", "primitive-types", @@ -7298,7 +7298,7 @@ dependencies = [ [[package]] name = "sp-runtime-interface-proc-macro" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" dependencies = [ "Inflector", "proc-macro-crate", @@ -7332,7 +7332,7 @@ dependencies = [ [[package]] name = "sp-sandbox" -version = "0.8.0-alpha.1" +version = "0.8.0-alpha.2" dependencies = [ "assert_matches", "parity-scale-codec", @@ -7346,7 +7346,7 @@ dependencies = [ [[package]] name = "sp-serializer" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" dependencies = [ "serde", "serde_json", @@ -7354,7 +7354,7 @@ dependencies = [ [[package]] name = "sp-session" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" dependencies = [ "sp-api", "sp-core", @@ -7364,7 +7364,7 @@ dependencies = [ [[package]] name = "sp-staking" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" dependencies = [ "parity-scale-codec", "sp-runtime", @@ -7373,7 +7373,7 @@ dependencies = [ [[package]] name = "sp-state-machine" -version = "0.8.0-alpha.1" +version = "0.8.0-alpha.2" dependencies = [ "hash-db", "hex-literal", @@ -7392,11 +7392,11 @@ dependencies = [ [[package]] name = "sp-std" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" [[package]] name = "sp-storage" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" dependencies = [ "impl-serde 0.2.3", "serde", @@ -7418,7 +7418,7 @@ dependencies = [ [[package]] name = "sp-timestamp" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" dependencies = [ "impl-trait-for-tuples", "parity-scale-codec", @@ -7431,7 +7431,7 @@ dependencies = [ [[package]] name = "sp-transaction-pool" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" dependencies = [ "derive_more", "futures 0.3.4", @@ -7444,7 +7444,7 @@ dependencies = [ [[package]] name = "sp-trie" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" dependencies = [ "criterion 0.2.11", "hash-db", @@ -7461,7 +7461,7 @@ dependencies = [ [[package]] name = "sp-version" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" dependencies = [ "impl-serde 0.2.3", "parity-scale-codec", @@ -7472,7 +7472,7 @@ dependencies = [ [[package]] name = "sp-wasm-interface" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" dependencies = [ "impl-trait-for-tuples", "parity-scale-codec", @@ -7578,7 +7578,7 @@ dependencies = [ [[package]] name = "subkey" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" dependencies = [ "clap", "derive_more", @@ -7620,11 +7620,11 @@ dependencies = [ [[package]] name = "substrate-build-script-utils" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" [[package]] name = "substrate-frame-rpc-support" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" dependencies = [ "frame-support", "frame-system", @@ -7640,7 +7640,7 @@ dependencies = [ [[package]] name = "substrate-frame-rpc-system" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" dependencies = [ "env_logger 0.7.1", "frame-system-rpc-runtime-api", @@ -7755,7 +7755,7 @@ dependencies = [ [[package]] name = "substrate-test-utils" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" [[package]] name = "substrate-wasm-builder" diff --git a/bin/node-template/node/Cargo.toml b/bin/node-template/node/Cargo.toml index 4933b778db..42dcc8ac50 100644 --- a/bin/node-template/node/Cargo.toml +++ b/bin/node-template/node/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "node-template" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" authors = ["Anonymous"] edition = "2018" license = "Unlicense" @@ -16,25 +16,25 @@ futures = "0.3.1" log = "0.4.8" structopt = "0.3.8" -sc-cli = { version = "0.8.0-alpha.1", path = "../../../client/cli" } -sp-core = { version = "2.0.0-alpha.1", path = "../../../primitives/core" } -sc-executor = { version = "0.8.0-alpha.1", path = "../../../client/executor" } -sc-service = { version = "0.8.0-alpha.1", path = "../../../client/service" } -sp-inherents = { version = "2.0.0-alpha.1", path = "../../../primitives/inherents" } -sc-transaction-pool = { version = "2.0.0-alpha.1", path = "../../../client/transaction-pool" } -sp-transaction-pool = { version = "2.0.0-alpha.1", path = "../../../primitives/transaction-pool" } -sc-network = { version = "0.8.0-alpha.1", path = "../../../client/network" } -sc-consensus-aura = { version = "0.8.0-alpha.1", path = "../../../client/consensus/aura" } -sp-consensus-aura = { version = "0.8.0-alpha.1", path = "../../../primitives/consensus/aura" } -sp-consensus = { version = "0.8.0-alpha.1", path = "../../../primitives/consensus/common" } -grandpa = { version = "0.8.0-alpha.1", package = "sc-finality-grandpa", path = "../../../client/finality-grandpa" } -grandpa-primitives = { version = "2.0.0-alpha.1", package = "sp-finality-grandpa", path = "../../../primitives/finality-grandpa" } -sc-client = { version = "0.8.0-alpha.1", path = "../../../client/" } -sp-runtime = { version = "2.0.0-alpha.1", path = "../../../primitives/runtime" } -sc-basic-authorship = { path = "../../../client/basic-authorship" , version = "0.8.0-alpha.1"} +sc-cli = { version = "0.8.0-alpha.2", path = "../../../client/cli" } +sp-core = { version = "2.0.0-alpha.2", path = "../../../primitives/core" } +sc-executor = { version = "0.8.0-alpha.2", path = "../../../client/executor" } +sc-service = { version = "0.8.0-alpha.2", path = "../../../client/service" } +sp-inherents = { version = "2.0.0-alpha.2", path = "../../../primitives/inherents" } +sc-transaction-pool = { version = "2.0.0-alpha.2", path = "../../../client/transaction-pool" } +sp-transaction-pool = { version = "2.0.0-alpha.2", path = "../../../primitives/transaction-pool" } +sc-network = { version = "0.8.0-alpha.2", path = "../../../client/network" } +sc-consensus-aura = { version = "0.8.0-alpha.2", path = "../../../client/consensus/aura" } +sp-consensus-aura = { version = "0.8.0-alpha.2", path = "../../../primitives/consensus/aura" } +sp-consensus = { version = "0.8.0-alpha.2", path = "../../../primitives/consensus/common" } +grandpa = { version = "0.8.0-alpha.2", package = "sc-finality-grandpa", path = "../../../client/finality-grandpa" } +grandpa-primitives = { version = "2.0.0-alpha.2", package = "sp-finality-grandpa", path = "../../../primitives/finality-grandpa" } +sc-client = { version = "0.8.0-alpha.2", path = "../../../client/" } +sp-runtime = { version = "2.0.0-alpha.2", path = "../../../primitives/runtime" } +sc-basic-authorship = { path = "../../../client/basic-authorship" , version = "0.8.0-alpha.2"} -node-template-runtime = { version = "2.0.0-alpha.1", path = "../runtime" } +node-template-runtime = { version = "2.0.0-alpha.2", path = "../runtime" } [build-dependencies] vergen = "3.0.4" -build-script-utils = { version = "2.0.0-alpha.1", package = "substrate-build-script-utils", path = "../../../utils/build-script-utils" } +build-script-utils = { version = "2.0.0-alpha.2", package = "substrate-build-script-utils", path = "../../../utils/build-script-utils" } diff --git a/bin/node-template/pallets/template/Cargo.toml b/bin/node-template/pallets/template/Cargo.toml index bd08787f1a..93e13c5505 100644 --- a/bin/node-template/pallets/template/Cargo.toml +++ b/bin/node-template/pallets/template/Cargo.toml @@ -2,9 +2,11 @@ authors = ['Anonymous'] edition = '2018' name = 'pallet-template' -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" +license = "Unlicense" homepage = "https://substrate.dev" repository = "https://github.com/paritytech/substrate/" +description = "FRAME pallet template" [dependencies] codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } @@ -12,30 +14,30 @@ safe-mix = { default-features = false, version = '1.0.0' } [dependencies.frame-support] default-features = false -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" path = "../../../../frame/support" [dependencies.system] default-features = false package = 'frame-system' -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" path = "../../../../frame/system" - [dev-dependencies.sp-core] default-features = false -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" path = "../../../../primitives/core" [dev-dependencies.sp-io] default-features = false -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" path = "../../../../primitives/io" [dev-dependencies.sp-runtime] default-features = false -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" path = "../../../../primitives/runtime" + [features] default = ['std'] std = [ diff --git a/bin/node-template/runtime/Cargo.toml b/bin/node-template/runtime/Cargo.toml index 049953ecea..e6b14f1a50 100644 --- a/bin/node-template/runtime/Cargo.toml +++ b/bin/node-template/runtime/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "node-template-runtime" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" authors = ["Anonymous"] edition = "2018" license = "Unlicense" @@ -10,31 +10,31 @@ repository = "https://github.com/paritytech/substrate/" [dependencies] codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } -aura = { version = "2.0.0-alpha.1", default-features = false, package = "pallet-aura", path = "../../../frame/aura" } -balances = { version = "2.0.0-alpha.1", default-features = false, package = "pallet-balances", path = "../../../frame/balances" } -frame-support = { version = "2.0.0-alpha.1", default-features = false, path = "../../../frame/support" } -grandpa = { version = "2.0.0-alpha.1", default-features = false, package = "pallet-grandpa", path = "../../../frame/grandpa" } -randomness-collective-flip = { version = "2.0.0-alpha.1", default-features = false, package = "pallet-randomness-collective-flip", path = "../../../frame/randomness-collective-flip" } -sudo = { version = "2.0.0-alpha.1", default-features = false, package = "pallet-sudo", path = "../../../frame/sudo" } -system = { version = "2.0.0-alpha.1", default-features = false, package = "frame-system", path = "../../../frame/system" } -timestamp = { version = "2.0.0-alpha.1", default-features = false, package = "pallet-timestamp", path = "../../../frame/timestamp" } -transaction-payment = { version = "2.0.0-alpha.1", default-features = false, package = "pallet-transaction-payment", path = "../../../frame/transaction-payment" } -frame-executive = { version = "2.0.0-alpha.1", default-features = false, path = "../../../frame/executive" } +aura = { version = "2.0.0-alpha.2", default-features = false, package = "pallet-aura", path = "../../../frame/aura" } +balances = { version = "2.0.0-alpha.2", default-features = false, package = "pallet-balances", path = "../../../frame/balances" } +frame-support = { version = "2.0.0-alpha.2", default-features = false, path = "../../../frame/support" } +grandpa = { version = "2.0.0-alpha.2", default-features = false, package = "pallet-grandpa", path = "../../../frame/grandpa" } +randomness-collective-flip = { version = "2.0.0-alpha.2", default-features = false, package = "pallet-randomness-collective-flip", path = "../../../frame/randomness-collective-flip" } +sudo = { version = "2.0.0-alpha.2", default-features = false, package = "pallet-sudo", path = "../../../frame/sudo" } +system = { version = "2.0.0-alpha.2", default-features = false, package = "frame-system", path = "../../../frame/system" } +timestamp = { version = "2.0.0-alpha.2", default-features = false, package = "pallet-timestamp", path = "../../../frame/timestamp" } +transaction-payment = { version = "2.0.0-alpha.2", default-features = false, package = "pallet-transaction-payment", path = "../../../frame/transaction-payment" } +frame-executive = { version = "2.0.0-alpha.2", default-features = false, path = "../../../frame/executive" } serde = { version = "1.0.101", optional = true, features = ["derive"] } -sp-api = { version = "2.0.0-alpha.1", default-features = false, path = "../../../primitives/api" } -sp-block-builder = { path = "../../../primitives/block-builder", default-features = false, version = "2.0.0-alpha.1"} -sp-consensus-aura = { version = "0.8.0-alpha.1", default-features = false, path = "../../../primitives/consensus/aura" } -sp-core = { version = "2.0.0-alpha.1", default-features = false, path = "../../../primitives/core" } -sp-inherents = { path = "../../../primitives/inherents", default-features = false, version = "2.0.0-alpha.1"} -sp-io = { version = "2.0.0-alpha.1", default-features = false, path = "../../../primitives/io" } -sp-offchain = { version = "2.0.0-alpha.1", default-features = false, path = "../../../primitives/offchain" } -sp-runtime = { version = "2.0.0-alpha.1", default-features = false, path = "../../../primitives/runtime" } -sp-session = { version = "2.0.0-alpha.1", default-features = false, path = "../../../primitives/session" } -sp-std = { version = "2.0.0-alpha.1", default-features = false, path = "../../../primitives/std" } -sp-transaction-pool = { version = "2.0.0-alpha.1", default-features = false, path = "../../../primitives/transaction-pool" } -sp-version = { version = "2.0.0-alpha.1", default-features = false, path = "../../../primitives/version" } +sp-api = { version = "2.0.0-alpha.2", default-features = false, path = "../../../primitives/api" } +sp-block-builder = { path = "../../../primitives/block-builder", default-features = false, version = "2.0.0-alpha.2"} +sp-consensus-aura = { version = "0.8.0-alpha.2", default-features = false, path = "../../../primitives/consensus/aura" } +sp-core = { version = "2.0.0-alpha.2", default-features = false, path = "../../../primitives/core" } +sp-inherents = { path = "../../../primitives/inherents", default-features = false, version = "2.0.0-alpha.2"} +sp-io = { version = "2.0.0-alpha.2", default-features = false, path = "../../../primitives/io" } +sp-offchain = { version = "2.0.0-alpha.2", default-features = false, path = "../../../primitives/offchain" } +sp-runtime = { version = "2.0.0-alpha.2", default-features = false, path = "../../../primitives/runtime" } +sp-session = { version = "2.0.0-alpha.2", default-features = false, path = "../../../primitives/session" } +sp-std = { version = "2.0.0-alpha.2", default-features = false, path = "../../../primitives/std" } +sp-transaction-pool = { version = "2.0.0-alpha.2", default-features = false, path = "../../../primitives/transaction-pool" } +sp-version = { version = "2.0.0-alpha.2", default-features = false, path = "../../../primitives/version" } -template = { version = "2.0.0-alpha.1", default-features = false, path = "../pallets/template", package = "pallet-template" } +template = { version = "2.0.0-alpha.2", default-features = false, path = "../pallets/template", package = "pallet-template" } [build-dependencies] wasm-builder-runner = { version = "1.0.5", package = "substrate-wasm-builder-runner", path = "../../../utils/wasm-builder-runner" } diff --git a/bin/node/cli/Cargo.toml b/bin/node/cli/Cargo.toml index 1aa49414bd..ca3665cf18 100644 --- a/bin/node/cli/Cargo.toml +++ b/bin/node/cli/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "node-cli" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" authors = ["Parity Technologies "] description = "Substrate node implementation in Rust." build = "build.rs" @@ -42,68 +42,68 @@ structopt = { version = "0.3.8", optional = true } tracing = "0.1.10" # primitives -sp-authority-discovery = { version = "2.0.0-alpha.1", path = "../../../primitives/authority-discovery" } -sp-consensus-babe = { version = "0.8.0-alpha.1", path = "../../../primitives/consensus/babe" } -grandpa-primitives = { version = "2.0.0-alpha.1", package = "sp-finality-grandpa", path = "../../../primitives/finality-grandpa" } -sp-core = { version = "2.0.0-alpha.1", path = "../../../primitives/core" } -sp-runtime = { version = "2.0.0-alpha.1", path = "../../../primitives/runtime" } -sp-timestamp = { version = "2.0.0-alpha.1", default-features = false, path = "../../../primitives/timestamp" } -sp-finality-tracker = { version = "2.0.0-alpha.1", default-features = false, path = "../../../primitives/finality-tracker" } -sp-inherents = { version = "2.0.0-alpha.1", path = "../../../primitives/inherents" } -sp-keyring = { version = "2.0.0-alpha.1", path = "../../../primitives/keyring" } -sp-io = { version = "2.0.0-alpha.1", path = "../../../primitives/io" } -sp-consensus = { version = "0.8.0-alpha.1", path = "../../../primitives/consensus/common" } +sp-authority-discovery = { version = "2.0.0-alpha.2", path = "../../../primitives/authority-discovery" } +sp-consensus-babe = { version = "0.8.0-alpha.2", path = "../../../primitives/consensus/babe" } +grandpa-primitives = { version = "2.0.0-alpha.2", package = "sp-finality-grandpa", path = "../../../primitives/finality-grandpa" } +sp-core = { version = "2.0.0-alpha.2", path = "../../../primitives/core" } +sp-runtime = { version = "2.0.0-alpha.2", path = "../../../primitives/runtime" } +sp-timestamp = { version = "2.0.0-alpha.2", default-features = false, path = "../../../primitives/timestamp" } +sp-finality-tracker = { version = "2.0.0-alpha.2", default-features = false, path = "../../../primitives/finality-tracker" } +sp-inherents = { version = "2.0.0-alpha.2", path = "../../../primitives/inherents" } +sp-keyring = { version = "2.0.0-alpha.2", path = "../../../primitives/keyring" } +sp-io = { version = "2.0.0-alpha.2", path = "../../../primitives/io" } +sp-consensus = { version = "0.8.0-alpha.2", path = "../../../primitives/consensus/common" } # client dependencies -sc-client-api = { version = "2.0.0-alpha.1", path = "../../../client/api" } -sc-client = { version = "0.8.0-alpha.1", path = "../../../client/" } -sc-chain-spec = { version = "2.0.0-alpha.1", path = "../../../client/chain-spec" } -sc-transaction-pool = { version = "2.0.0-alpha.1", path = "../../../client/transaction-pool" } -sp-transaction-pool = { version = "2.0.0-alpha.1", path = "../../../primitives/transaction-pool" } -sc-network = { version = "0.8.0-alpha.1", path = "../../../client/network" } -sc-consensus-babe = { version = "0.8.0-alpha.1", path = "../../../client/consensus/babe" } -grandpa = { version = "0.8.0-alpha.1", package = "sc-finality-grandpa", path = "../../../client/finality-grandpa" } -sc-client-db = { version = "0.8.0-alpha.1", default-features = false, path = "../../../client/db" } -sc-offchain = { version = "2.0.0-alpha.1", path = "../../../client/offchain" } -sc-rpc = { version = "2.0.0-alpha.1", path = "../../../client/rpc" } -sc-basic-authorship = { version = "0.8.0-alpha.1", path = "../../../client/basic-authorship" } -sc-service = { version = "0.8.0-alpha.1", default-features = false, path = "../../../client/service" } -sc-tracing = { version = "2.0.0-alpha.1", path = "../../../client/tracing" } -sc-telemetry = { version = "2.0.0-alpha.1", path = "../../../client/telemetry" } -sc-authority-discovery = { version = "0.8.0-alpha.1", path = "../../../client/authority-discovery" } +sc-client-api = { version = "2.0.0-alpha.2", path = "../../../client/api" } +sc-client = { version = "0.8.0-alpha.2", path = "../../../client/" } +sc-chain-spec = { version = "2.0.0-alpha.2", path = "../../../client/chain-spec" } +sc-transaction-pool = { version = "2.0.0-alpha.2", path = "../../../client/transaction-pool" } +sp-transaction-pool = { version = "2.0.0-alpha.2", path = "../../../primitives/transaction-pool" } +sc-network = { version = "0.8.0-alpha.2", path = "../../../client/network" } +sc-consensus-babe = { version = "0.8.0-alpha.2", path = "../../../client/consensus/babe" } +grandpa = { version = "0.8.0-alpha.2", package = "sc-finality-grandpa", path = "../../../client/finality-grandpa" } +sc-client-db = { version = "0.8.0-alpha.2", default-features = false, path = "../../../client/db" } +sc-offchain = { version = "2.0.0-alpha.2", path = "../../../client/offchain" } +sc-rpc = { version = "2.0.0-alpha.2", path = "../../../client/rpc" } +sc-basic-authorship = { version = "0.8.0-alpha.2", path = "../../../client/basic-authorship" } +sc-service = { version = "0.8.0-alpha.2", default-features = false, path = "../../../client/service" } +sc-tracing = { version = "2.0.0-alpha.2", path = "../../../client/tracing" } +sc-telemetry = { version = "2.0.0-alpha.2", path = "../../../client/telemetry" } +sc-authority-discovery = { version = "0.8.0-alpha.2", path = "../../../client/authority-discovery" } # frame dependencies -pallet-indices = { version = "2.0.0-alpha.1", path = "../../../frame/indices" } -pallet-timestamp = { version = "2.0.0-alpha.1", default-features = false, path = "../../../frame/timestamp" } -pallet-contracts = { version = "2.0.0-alpha.1", path = "../../../frame/contracts" } -frame-system = { version = "2.0.0-alpha.1", path = "../../../frame/system" } -pallet-balances = { version = "2.0.0-alpha.1", path = "../../../frame/balances" } -pallet-transaction-payment = { version = "2.0.0-alpha.1", path = "../../../frame/transaction-payment" } -frame-support = { version = "2.0.0-alpha.1", default-features = false, path = "../../../frame/support" } -pallet-im-online = { version = "2.0.0-alpha.1", default-features = false, path = "../../../frame/im-online" } -pallet-authority-discovery = { version = "2.0.0-alpha.1", path = "../../../frame/authority-discovery" } +pallet-indices = { version = "2.0.0-alpha.2", path = "../../../frame/indices" } +pallet-timestamp = { version = "2.0.0-alpha.2", default-features = false, path = "../../../frame/timestamp" } +pallet-contracts = { version = "2.0.0-alpha.2", path = "../../../frame/contracts" } +frame-system = { version = "2.0.0-alpha.2", path = "../../../frame/system" } +pallet-balances = { version = "2.0.0-alpha.2", path = "../../../frame/balances" } +pallet-transaction-payment = { version = "2.0.0-alpha.2", path = "../../../frame/transaction-payment" } +frame-support = { version = "2.0.0-alpha.2", default-features = false, path = "../../../frame/support" } +pallet-im-online = { version = "2.0.0-alpha.2", default-features = false, path = "../../../frame/im-online" } +pallet-authority-discovery = { version = "2.0.0-alpha.2", path = "../../../frame/authority-discovery" } # node-specific dependencies -node-runtime = { version = "2.0.0-alpha.1", path = "../runtime" } -node-rpc = { version = "2.0.0-alpha.1", path = "../rpc" } -node-primitives = { version = "2.0.0-alpha.1", path = "../primitives" } -node-executor = { version = "2.0.0-alpha.1", path = "../executor" } +node-runtime = { version = "2.0.0-alpha.2", path = "../runtime" } +node-rpc = { version = "2.0.0-alpha.2", path = "../rpc" } +node-primitives = { version = "2.0.0-alpha.2", path = "../primitives" } +node-executor = { version = "2.0.0-alpha.2", path = "../executor" } # CLI-specific dependencies -sc-cli = { version = "0.8.0-alpha.1", optional = true, path = "../../../client/cli" } -frame-benchmarking-cli = { version = "2.0.0-alpha.1", optional = true, path = "../../../utils/frame/benchmarking-cli" } -node-transaction-factory = { version = "0.8.0-alpha.1", optional = true, path = "../transaction-factory" } -node-inspect = { version = "0.8.0-alpha.1", optional = true, path = "../inspect" } +sc-cli = { version = "0.8.0-alpha.2", optional = true, path = "../../../client/cli" } +frame-benchmarking-cli = { version = "2.0.0-alpha.2", optional = true, path = "../../../utils/frame/benchmarking-cli" } +node-transaction-factory = { version = "0.8.0-alpha.2", optional = true, path = "../transaction-factory" } +node-inspect = { version = "0.8.0-alpha.2", optional = true, path = "../inspect" } # WASM-specific dependencies wasm-bindgen = { version = "0.2.57", optional = true } wasm-bindgen-futures = { version = "0.4.7", optional = true } -browser-utils = { path = "../../../utils/browser", optional = true , version = "0.8.0-alpha.1"} +browser-utils = { path = "../../../utils/browser", optional = true , version = "0.8.0-alpha.2"} [dev-dependencies] -sc-keystore = { version = "2.0.0-alpha.1", path = "../../../client/keystore" } -sc-consensus-babe = { version = "0.8.0-alpha.1", features = ["test-helpers"], path = "../../../client/consensus/babe" } -sc-consensus-epochs = { version = "0.8.0-alpha.1", path = "../../../client/consensus/epochs" } +sc-keystore = { version = "2.0.0-alpha.2", path = "../../../client/keystore" } +sc-consensus-babe = { version = "0.8.0-alpha.2", features = ["test-helpers"], path = "../../../client/consensus/babe" } +sc-consensus-epochs = { version = "0.8.0-alpha.2", path = "../../../client/consensus/epochs" } sc-service-test = { version = "2.0.0-dev", path = "../../../client/service/test" } futures = "0.3.1" tempfile = "3.1.0" @@ -112,14 +112,14 @@ nix = "0.17" serde_json = "1.0" [build-dependencies] -build-script-utils = { version = "2.0.0-alpha.1", package = "substrate-build-script-utils", path = "../../../utils/build-script-utils" } +build-script-utils = { version = "2.0.0-alpha.2", package = "substrate-build-script-utils", path = "../../../utils/build-script-utils" } structopt = { version = "0.3.8", optional = true } -node-transaction-factory = { version = "0.8.0-alpha.1", optional = true, path = "../transaction-factory" } -node-inspect = { version = "0.8.0-alpha.1", optional = true, path = "../inspect" } -frame-benchmarking-cli = { version = "2.0.0-alpha.1", optional = true, path = "../../../utils/frame/benchmarking-cli" } +node-transaction-factory = { version = "0.8.0-alpha.2", optional = true, path = "../transaction-factory" } +node-inspect = { version = "0.8.0-alpha.2", optional = true, path = "../inspect" } +frame-benchmarking-cli = { version = "2.0.0-alpha.2", optional = true, path = "../../../utils/frame/benchmarking-cli" } [build-dependencies.sc-cli] -version = "0.8.0-alpha.1" +version = "0.8.0-alpha.2" package = "sc-cli" path = "../../../client/cli" optional = true diff --git a/bin/node/executor/Cargo.toml b/bin/node/executor/Cargo.toml index a4eacbb822..94bd13954a 100644 --- a/bin/node/executor/Cargo.toml +++ b/bin/node/executor/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "node-executor" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" authors = ["Parity Technologies "] description = "Substrate node implementation in Rust." edition = "2018" @@ -10,32 +10,32 @@ repository = "https://github.com/paritytech/substrate/" [dependencies] codec = { package = "parity-scale-codec", version = "1.0.0" } -node-primitives = { version = "2.0.0-alpha.1", path = "../primitives" } -node-runtime = { version = "2.0.0-alpha.1", path = "../runtime" } -sc-executor = { version = "0.8.0-alpha.1", path = "../../../client/executor" } -sp-core = { version = "2.0.0-alpha.1", path = "../../../primitives/core" } -sp-io = { version = "2.0.0-alpha.1", path = "../../../primitives/io" } -sp-state-machine = { version = "0.8.0-alpha.1", path = "../../../primitives/state-machine" } -sp-trie = { version = "2.0.0-alpha.1", path = "../../../primitives/trie" } +node-primitives = { version = "2.0.0-alpha.2", path = "../primitives" } +node-runtime = { version = "2.0.0-alpha.2", path = "../runtime" } +sc-executor = { version = "0.8.0-alpha.2", path = "../../../client/executor" } +sp-core = { version = "2.0.0-alpha.2", path = "../../../primitives/core" } +sp-io = { version = "2.0.0-alpha.2", path = "../../../primitives/io" } +sp-state-machine = { version = "0.8.0-alpha.2", path = "../../../primitives/state-machine" } +sp-trie = { version = "2.0.0-alpha.2", path = "../../../primitives/trie" } trie-root = "0.16.0" -frame-benchmarking = { version = "2.0.0-alpha.1", path = "../../../frame/benchmarking" } +frame-benchmarking = { version = "2.0.0-alpha.2", path = "../../../frame/benchmarking" } [dev-dependencies] criterion = "0.3.0" -frame-support = { version = "2.0.0-alpha.1", path = "../../../frame/support" } -frame-system = { version = "2.0.0-alpha.1", path = "../../../frame/system" } -node-testing = { version = "2.0.0-alpha.1", path = "../testing" } -pallet-balances = { version = "2.0.0-alpha.1", path = "../../../frame/balances" } -pallet-contracts = { version = "2.0.0-alpha.1", path = "../../../frame/contracts" } -pallet-grandpa = { version = "2.0.0-alpha.1", path = "../../../frame/grandpa" } -pallet-im-online = { version = "2.0.0-alpha.1", path = "../../../frame/im-online" } -pallet-indices = { version = "2.0.0-alpha.1", path = "../../../frame/indices" } -pallet-session = { version = "2.0.0-alpha.1", path = "../../../frame/session" } -pallet-timestamp = { version = "2.0.0-alpha.1", path = "../../../frame/timestamp" } -pallet-transaction-payment = { version = "2.0.0-alpha.1", path = "../../../frame/transaction-payment" } -pallet-treasury = { version = "2.0.0-alpha.1", path = "../../../frame/treasury" } -sp-application-crypto = { version = "2.0.0-alpha.1", path = "../../../primitives/application-crypto" } -sp-runtime = { version = "2.0.0-alpha.1", path = "../../../primitives/runtime" } +frame-support = { version = "2.0.0-alpha.2", path = "../../../frame/support" } +frame-system = { version = "2.0.0-alpha.2", path = "../../../frame/system" } +node-testing = { version = "2.0.0-alpha.2", path = "../testing" } +pallet-balances = { version = "2.0.0-alpha.2", path = "../../../frame/balances" } +pallet-contracts = { version = "2.0.0-alpha.2", path = "../../../frame/contracts" } +pallet-grandpa = { version = "2.0.0-alpha.2", path = "../../../frame/grandpa" } +pallet-im-online = { version = "2.0.0-alpha.2", path = "../../../frame/im-online" } +pallet-indices = { version = "2.0.0-alpha.2", path = "../../../frame/indices" } +pallet-session = { version = "2.0.0-alpha.2", path = "../../../frame/session" } +pallet-timestamp = { version = "2.0.0-alpha.2", path = "../../../frame/timestamp" } +pallet-transaction-payment = { version = "2.0.0-alpha.2", path = "../../../frame/transaction-payment" } +pallet-treasury = { version = "2.0.0-alpha.2", path = "../../../frame/treasury" } +sp-application-crypto = { version = "2.0.0-alpha.2", path = "../../../primitives/application-crypto" } +sp-runtime = { version = "2.0.0-alpha.2", path = "../../../primitives/runtime" } substrate-test-client = { version = "2.0.0-dev", path = "../../../test-utils/client" } wabt = "0.9.2" diff --git a/bin/node/inspect/Cargo.toml b/bin/node/inspect/Cargo.toml index 353daf7a4f..218c38d0af 100644 --- a/bin/node/inspect/Cargo.toml +++ b/bin/node/inspect/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "node-inspect" -version = "0.8.0-alpha.1" +version = "0.8.0-alpha.2" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" @@ -11,10 +11,10 @@ repository = "https://github.com/paritytech/substrate/" codec = { package = "parity-scale-codec", version = "1.0.0" } derive_more = "0.99" log = "0.4.8" -sc-cli = { version = "0.8.0-alpha.1", path = "../../../client/cli" } -sc-client-api = { version = "2.0.0-alpha.1", path = "../../../client/api" } -sc-service = { version = "0.8.0-alpha.1", default-features = false, path = "../../../client/service" } -sp-blockchain = { version = "2.0.0-alpha.1", path = "../../../primitives/blockchain" } -sp-core = { version = "2.0.0-alpha.1", path = "../../../primitives/core" } -sp-runtime = { version = "2.0.0-alpha.1", path = "../../../primitives/runtime" } +sc-cli = { version = "0.8.0-alpha.2", path = "../../../client/cli" } +sc-client-api = { version = "2.0.0-alpha.2", path = "../../../client/api" } +sc-service = { version = "0.8.0-alpha.2", default-features = false, path = "../../../client/service" } +sp-blockchain = { version = "2.0.0-alpha.2", path = "../../../primitives/blockchain" } +sp-core = { version = "2.0.0-alpha.2", path = "../../../primitives/core" } +sp-runtime = { version = "2.0.0-alpha.2", path = "../../../primitives/runtime" } structopt = "0.3.8" diff --git a/bin/node/primitives/Cargo.toml b/bin/node/primitives/Cargo.toml index d82fc49059..0e053c9041 100644 --- a/bin/node/primitives/Cargo.toml +++ b/bin/node/primitives/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "node-primitives" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" @@ -8,11 +8,11 @@ homepage = "https://substrate.dev" repository = "https://github.com/paritytech/substrate/" [dependencies] -sp-core = { version = "2.0.0-alpha.1", default-features = false, path = "../../../primitives/core" } -sp-runtime = { version = "2.0.0-alpha.1", default-features = false, path = "../../../primitives/runtime" } +sp-core = { version = "2.0.0-alpha.2", default-features = false, path = "../../../primitives/core" } +sp-runtime = { version = "2.0.0-alpha.2", default-features = false, path = "../../../primitives/runtime" } [dev-dependencies] -sp-serializer = { version = "2.0.0-alpha.1", path = "../../../primitives/serializer" } +sp-serializer = { version = "2.0.0-alpha.2", path = "../../../primitives/serializer" } pretty_assertions = "0.6.1" [features] diff --git a/bin/node/rpc-client/Cargo.toml b/bin/node/rpc-client/Cargo.toml index 029f79695a..d5d5dd90d8 100644 --- a/bin/node/rpc-client/Cargo.toml +++ b/bin/node/rpc-client/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "node-rpc-client" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" @@ -13,5 +13,5 @@ futures = "0.1.29" hyper = "0.12.35" jsonrpc-core-client = { version = "14.0.3", features = ["http", "ws"] } log = "0.4.8" -node-primitives = { version = "2.0.0-alpha.1", path = "../primitives" } -sc-rpc = { version = "2.0.0-alpha.1", path = "../../../client/rpc" } +node-primitives = { version = "2.0.0-alpha.2", path = "../primitives" } +sc-rpc = { version = "2.0.0-alpha.2", path = "../../../client/rpc" } diff --git a/bin/node/rpc/Cargo.toml b/bin/node/rpc/Cargo.toml index 88dd8b7e82..28143b3bc3 100644 --- a/bin/node/rpc/Cargo.toml +++ b/bin/node/rpc/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "node-rpc" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" @@ -8,20 +8,20 @@ homepage = "https://substrate.dev" repository = "https://github.com/paritytech/substrate/" [dependencies] -sc-client = { version = "0.8.0-alpha.1", path = "../../../client/" } +sc-client = { version = "0.8.0-alpha.2", path = "../../../client/" } jsonrpc-core = "14.0.3" -node-primitives = { version = "2.0.0-alpha.1", path = "../primitives" } -node-runtime = { version = "2.0.0-alpha.1", path = "../runtime" } -sp-runtime = { version = "2.0.0-alpha.1", path = "../../../primitives/runtime" } -sp-api = { version = "2.0.0-alpha.1", path = "../../../primitives/api" } -pallet-contracts-rpc = { version = "0.8.0-alpha.1", path = "../../../frame/contracts/rpc/" } -pallet-transaction-payment-rpc = { version = "2.0.0-alpha.1", path = "../../../frame/transaction-payment/rpc/" } -substrate-frame-rpc-system = { version = "2.0.0-alpha.1", path = "../../../utils/frame/rpc/system" } -sp-transaction-pool = { version = "2.0.0-alpha.1", path = "../../../primitives/transaction-pool" } -sc-consensus-babe = { version = "0.8.0-alpha.1", path = "../../../client/consensus/babe" } -sc-consensus-babe-rpc = { version = "0.8.0-alpha.1", path = "../../../client/consensus/babe/rpc" } -sp-consensus-babe = { version = "0.8.0-alpha.1", path = "../../../primitives/consensus/babe" } -sc-keystore = { version = "2.0.0-alpha.1", path = "../../../client/keystore" } -sc-consensus-epochs = { version = "0.8.0-alpha.1", path = "../../../client/consensus/epochs" } -sp-consensus = { version = "0.8.0-alpha.1", path = "../../../primitives/consensus/common" } -sp-blockchain = { version = "2.0.0-alpha.1", path = "../../../primitives/blockchain" } +node-primitives = { version = "2.0.0-alpha.2", path = "../primitives" } +node-runtime = { version = "2.0.0-alpha.2", path = "../runtime" } +sp-runtime = { version = "2.0.0-alpha.2", path = "../../../primitives/runtime" } +sp-api = { version = "2.0.0-alpha.2", path = "../../../primitives/api" } +pallet-contracts-rpc = { version = "0.8.0-alpha.2", path = "../../../frame/contracts/rpc/" } +pallet-transaction-payment-rpc = { version = "2.0.0-alpha.2", path = "../../../frame/transaction-payment/rpc/" } +substrate-frame-rpc-system = { version = "2.0.0-alpha.2", path = "../../../utils/frame/rpc/system" } +sp-transaction-pool = { version = "2.0.0-alpha.2", path = "../../../primitives/transaction-pool" } +sc-consensus-babe = { version = "0.8.0-alpha.2", path = "../../../client/consensus/babe" } +sc-consensus-babe-rpc = { version = "0.8.0-alpha.2", path = "../../../client/consensus/babe/rpc" } +sp-consensus-babe = { version = "0.8.0-alpha.2", path = "../../../primitives/consensus/babe" } +sc-keystore = { version = "2.0.0-alpha.2", path = "../../../client/keystore" } +sc-consensus-epochs = { version = "0.8.0-alpha.2", path = "../../../client/consensus/epochs" } +sp-consensus = { version = "0.8.0-alpha.2", path = "../../../primitives/consensus/common" } +sp-blockchain = { version = "2.0.0-alpha.2", path = "../../../primitives/blockchain" } diff --git a/bin/node/runtime/Cargo.toml b/bin/node/runtime/Cargo.toml index 6e2fd1fdb3..4151f45b8e 100644 --- a/bin/node/runtime/Cargo.toml +++ b/bin/node/runtime/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "node-runtime" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" authors = ["Parity Technologies "] edition = "2018" build = "build.rs" @@ -17,64 +17,64 @@ rustc-hex = { version = "2.0", optional = true } serde = { version = "1.0.102", optional = true } # primitives -sp-authority-discovery = { version = "2.0.0-alpha.1", default-features = false, path = "../../../primitives/authority-discovery" } -sp-consensus-babe = { version = "0.8.0-alpha.1", default-features = false, path = "../../../primitives/consensus/babe" } -sp-block-builder = { path = "../../../primitives/block-builder", default-features = false, version = "2.0.0-alpha.1"} -sp-inherents = { version = "2.0.0-alpha.1", default-features = false, path = "../../../primitives/inherents" } -node-primitives = { version = "2.0.0-alpha.1", default-features = false, path = "../primitives" } -sp-offchain = { version = "2.0.0-alpha.1", default-features = false, path = "../../../primitives/offchain" } -sp-core = { version = "2.0.0-alpha.1", default-features = false, path = "../../../primitives/core" } -sp-std = { version = "2.0.0-alpha.1", default-features = false, path = "../../../primitives/std" } -sp-api = { version = "2.0.0-alpha.1", default-features = false, path = "../../../primitives/api" } -sp-runtime = { version = "2.0.0-alpha.1", default-features = false, path = "../../../primitives/runtime" } -sp-staking = { version = "2.0.0-alpha.1", default-features = false, path = "../../../primitives/staking" } -sp-keyring = { version = "2.0.0-alpha.1", optional = true, path = "../../../primitives/keyring" } -sp-session = { version = "2.0.0-alpha.1", default-features = false, path = "../../../primitives/session" } -sp-transaction-pool = { version = "2.0.0-alpha.1", default-features = false, path = "../../../primitives/transaction-pool" } -sp-version = { version = "2.0.0-alpha.1", default-features = false, path = "../../../primitives/version" } +sp-authority-discovery = { version = "2.0.0-alpha.2", default-features = false, path = "../../../primitives/authority-discovery" } +sp-consensus-babe = { version = "0.8.0-alpha.2", default-features = false, path = "../../../primitives/consensus/babe" } +sp-block-builder = { path = "../../../primitives/block-builder", default-features = false, version = "2.0.0-alpha.2"} +sp-inherents = { version = "2.0.0-alpha.2", default-features = false, path = "../../../primitives/inherents" } +node-primitives = { version = "2.0.0-alpha.2", default-features = false, path = "../primitives" } +sp-offchain = { version = "2.0.0-alpha.2", default-features = false, path = "../../../primitives/offchain" } +sp-core = { version = "2.0.0-alpha.2", default-features = false, path = "../../../primitives/core" } +sp-std = { version = "2.0.0-alpha.2", default-features = false, path = "../../../primitives/std" } +sp-api = { version = "2.0.0-alpha.2", default-features = false, path = "../../../primitives/api" } +sp-runtime = { version = "2.0.0-alpha.2", default-features = false, path = "../../../primitives/runtime" } +sp-staking = { version = "2.0.0-alpha.2", default-features = false, path = "../../../primitives/staking" } +sp-keyring = { version = "2.0.0-alpha.2", optional = true, path = "../../../primitives/keyring" } +sp-session = { version = "2.0.0-alpha.2", default-features = false, path = "../../../primitives/session" } +sp-transaction-pool = { version = "2.0.0-alpha.2", default-features = false, path = "../../../primitives/transaction-pool" } +sp-version = { version = "2.0.0-alpha.2", default-features = false, path = "../../../primitives/version" } # frame dependencies -frame-executive = { version = "2.0.0-alpha.1", default-features = false, path = "../../../frame/executive" } -frame-benchmarking = { version = "2.0.0-alpha.1", default-features = false, path = "../../../frame/benchmarking" } -frame-support = { version = "2.0.0-alpha.1", default-features = false, path = "../../../frame/support" } -frame-system = { version = "2.0.0-alpha.1", default-features = false, path = "../../../frame/system" } -frame-system-rpc-runtime-api = { version = "2.0.0-alpha.1", default-features = false, path = "../../../frame/system/rpc/runtime-api/" } -pallet-authority-discovery = { version = "2.0.0-alpha.1", default-features = false, path = "../../../frame/authority-discovery" } -pallet-authorship = { version = "2.0.0-alpha.1", default-features = false, path = "../../../frame/authorship" } -pallet-babe = { version = "2.0.0-alpha.1", default-features = false, path = "../../../frame/babe" } -pallet-balances = { version = "2.0.0-alpha.1", default-features = false, path = "../../../frame/balances" } -pallet-collective = { version = "2.0.0-alpha.1", default-features = false, path = "../../../frame/collective" } -pallet-contracts = { version = "2.0.0-alpha.1", default-features = false, path = "../../../frame/contracts" } -pallet-contracts-primitives = { version = "2.0.0-alpha.1", default-features = false, path = "../../../frame/contracts/common/" } -pallet-contracts-rpc-runtime-api = { version = "0.8.0-alpha.1", default-features = false, path = "../../../frame/contracts/rpc/runtime-api/" } -pallet-democracy = { version = "2.0.0-alpha.1", default-features = false, path = "../../../frame/democracy" } -pallet-elections-phragmen = { version = "2.0.0-alpha.1", default-features = false, path = "../../../frame/elections-phragmen" } -pallet-finality-tracker = { version = "2.0.0-alpha.1", default-features = false, path = "../../../frame/finality-tracker" } -pallet-grandpa = { version = "2.0.0-alpha.1", default-features = false, path = "../../../frame/grandpa" } -pallet-im-online = { version = "2.0.0-alpha.1", default-features = false, path = "../../../frame/im-online" } -pallet-indices = { version = "2.0.0-alpha.1", default-features = false, path = "../../../frame/indices" } -pallet-identity = { version = "2.0.0-alpha.1", default-features = false, path = "../../../frame/identity" } -pallet-membership = { version = "2.0.0-alpha.1", default-features = false, path = "../../../frame/membership" } -pallet-offences = { version = "2.0.0-alpha.1", default-features = false, path = "../../../frame/offences" } -pallet-randomness-collective-flip = { version = "2.0.0-alpha.1", default-features = false, path = "../../../frame/randomness-collective-flip" } -pallet-recovery = { version = "2.0.0-alpha.1", default-features = false, path = "../../../frame/recovery" } -pallet-session = { version = "2.0.0-alpha.1", features = ["historical"], path = "../../../frame/session", default-features = false } -pallet-staking = { version = "2.0.0-alpha.1", features = ["migrate"], path = "../../../frame/staking", default-features = false } -pallet-staking-reward-curve = { version = "2.0.0-alpha.1", path = "../../../frame/staking/reward-curve" } -pallet-sudo = { version = "2.0.0-alpha.1", default-features = false, path = "../../../frame/sudo" } -pallet-society = { version = "2.0.0-alpha.1", default-features = false, path = "../../../frame/society" } -pallet-timestamp = { version = "2.0.0-alpha.1", default-features = false, path = "../../../frame/timestamp" } -pallet-treasury = { version = "2.0.0-alpha.1", default-features = false, path = "../../../frame/treasury" } -pallet-utility = { version = "2.0.0-alpha.1", default-features = false, path = "../../../frame/utility" } -pallet-transaction-payment = { version = "2.0.0-alpha.1", default-features = false, path = "../../../frame/transaction-payment" } -pallet-transaction-payment-rpc-runtime-api = { version = "2.0.0-alpha.1", default-features = false, path = "../../../frame/transaction-payment/rpc/runtime-api/" } -pallet-vesting = { version = "2.0.0-alpha.1", default-features = false, path = "../../../frame/vesting" } +frame-executive = { version = "2.0.0-alpha.2", default-features = false, path = "../../../frame/executive" } +frame-benchmarking = { version = "2.0.0-alpha.2", default-features = false, path = "../../../frame/benchmarking" } +frame-support = { version = "2.0.0-alpha.2", default-features = false, path = "../../../frame/support" } +frame-system = { version = "2.0.0-alpha.2", default-features = false, path = "../../../frame/system" } +frame-system-rpc-runtime-api = { version = "2.0.0-alpha.2", default-features = false, path = "../../../frame/system/rpc/runtime-api/" } +pallet-authority-discovery = { version = "2.0.0-alpha.2", default-features = false, path = "../../../frame/authority-discovery" } +pallet-authorship = { version = "2.0.0-alpha.2", default-features = false, path = "../../../frame/authorship" } +pallet-babe = { version = "2.0.0-alpha.2", default-features = false, path = "../../../frame/babe" } +pallet-balances = { version = "2.0.0-alpha.2", default-features = false, path = "../../../frame/balances" } +pallet-collective = { version = "2.0.0-alpha.2", default-features = false, path = "../../../frame/collective" } +pallet-contracts = { version = "2.0.0-alpha.2", default-features = false, path = "../../../frame/contracts" } +pallet-contracts-primitives = { version = "2.0.0-alpha.2", default-features = false, path = "../../../frame/contracts/common/" } +pallet-contracts-rpc-runtime-api = { version = "0.8.0-alpha.2", default-features = false, path = "../../../frame/contracts/rpc/runtime-api/" } +pallet-democracy = { version = "2.0.0-alpha.2", default-features = false, path = "../../../frame/democracy" } +pallet-elections-phragmen = { version = "2.0.0-alpha.2", default-features = false, path = "../../../frame/elections-phragmen" } +pallet-finality-tracker = { version = "2.0.0-alpha.2", default-features = false, path = "../../../frame/finality-tracker" } +pallet-grandpa = { version = "2.0.0-alpha.2", default-features = false, path = "../../../frame/grandpa" } +pallet-im-online = { version = "2.0.0-alpha.2", default-features = false, path = "../../../frame/im-online" } +pallet-indices = { version = "2.0.0-alpha.2", default-features = false, path = "../../../frame/indices" } +pallet-identity = { version = "2.0.0-alpha.2", default-features = false, path = "../../../frame/identity" } +pallet-membership = { version = "2.0.0-alpha.2", default-features = false, path = "../../../frame/membership" } +pallet-offences = { version = "2.0.0-alpha.2", default-features = false, path = "../../../frame/offences" } +pallet-randomness-collective-flip = { version = "2.0.0-alpha.2", default-features = false, path = "../../../frame/randomness-collective-flip" } +pallet-recovery = { version = "2.0.0-alpha.2", default-features = false, path = "../../../frame/recovery" } +pallet-session = { version = "2.0.0-alpha.2", features = ["historical"], path = "../../../frame/session", default-features = false } +pallet-staking = { version = "2.0.0-alpha.2", features = ["migrate"], path = "../../../frame/staking", default-features = false } +pallet-staking-reward-curve = { version = "2.0.0-alpha.2", path = "../../../frame/staking/reward-curve" } +pallet-sudo = { version = "2.0.0-alpha.2", default-features = false, path = "../../../frame/sudo" } +pallet-society = { version = "2.0.0-alpha.2", default-features = false, path = "../../../frame/society" } +pallet-timestamp = { version = "2.0.0-alpha.2", default-features = false, path = "../../../frame/timestamp" } +pallet-treasury = { version = "2.0.0-alpha.2", default-features = false, path = "../../../frame/treasury" } +pallet-utility = { version = "2.0.0-alpha.2", default-features = false, path = "../../../frame/utility" } +pallet-transaction-payment = { version = "2.0.0-alpha.2", default-features = false, path = "../../../frame/transaction-payment" } +pallet-transaction-payment-rpc-runtime-api = { version = "2.0.0-alpha.2", default-features = false, path = "../../../frame/transaction-payment/rpc/runtime-api/" } +pallet-vesting = { version = "2.0.0-alpha.2", default-features = false, path = "../../../frame/vesting" } [build-dependencies] wasm-builder-runner = { version = "1.0.5", package = "substrate-wasm-builder-runner", path = "../../../utils/wasm-builder-runner" } [dev-dependencies] -sp-io = { version = "2.0.0-alpha.1", path = "../../../primitives/io" } +sp-io = { version = "2.0.0-alpha.2", path = "../../../primitives/io" } [features] default = ["std"] diff --git a/bin/node/testing/Cargo.toml b/bin/node/testing/Cargo.toml index 0187fc83be..3e8a4c4d1f 100644 --- a/bin/node/testing/Cargo.toml +++ b/bin/node/testing/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "node-testing" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" authors = ["Parity Technologies "] description = "Test utilities for Substrate node." edition = "2018" @@ -10,47 +10,47 @@ repository = "https://github.com/paritytech/substrate/" publish = true [dependencies] -pallet-balances = { version = "2.0.0-alpha.1", path = "../../../frame/balances" } -sc-client = { version = "0.8.0-alpha.1", path = "../../../client/" } -sc-client-db = { version = "0.8.0-alpha.1", path = "../../../client/db/", features = ["kvdb-rocksdb"] } -sc-client-api = { version = "2.0.0-alpha.1", path = "../../../client/api/" } +pallet-balances = { version = "2.0.0-alpha.2", path = "../../../frame/balances" } +sc-client = { version = "0.8.0-alpha.2", path = "../../../client/" } +sc-client-db = { version = "0.8.0-alpha.2", path = "../../../client/db/", features = ["kvdb-rocksdb"] } +sc-client-api = { version = "2.0.0-alpha.2", path = "../../../client/api/" } codec = { package = "parity-scale-codec", version = "1.0.0" } -pallet-contracts = { version = "2.0.0-alpha.1", path = "../../../frame/contracts" } -pallet-grandpa = { version = "2.0.0-alpha.1", path = "../../../frame/grandpa" } -pallet-indices = { version = "2.0.0-alpha.1", path = "../../../frame/indices" } -sp-keyring = { version = "2.0.0-alpha.1", path = "../../../primitives/keyring" } -node-executor = { version = "2.0.0-alpha.1", path = "../executor" } -node-primitives = { version = "2.0.0-alpha.1", path = "../primitives" } -node-runtime = { version = "2.0.0-alpha.1", path = "../runtime" } -sp-core = { version = "2.0.0-alpha.1", path = "../../../primitives/core" } -sp-io = { version = "2.0.0-alpha.1", path = "../../../primitives/io" } -frame-support = { version = "2.0.0-alpha.1", path = "../../../frame/support" } -pallet-session = { version = "2.0.0-alpha.1", path = "../../../frame/session" } -pallet-society = { version = "2.0.0-alpha.1", path = "../../../frame/society" } -sp-runtime = { version = "2.0.0-alpha.1", path = "../../../primitives/runtime" } -pallet-staking = { version = "2.0.0-alpha.1", path = "../../../frame/staking" } -sc-executor = { version = "0.8.0-alpha.1", path = "../../../client/executor", features = ["wasmtime"] } -sp-consensus = { version = "0.8.0-alpha.1", path = "../../../primitives/consensus/common" } -frame-system = { version = "2.0.0-alpha.1", path = "../../../frame/system" } +pallet-contracts = { version = "2.0.0-alpha.2", path = "../../../frame/contracts" } +pallet-grandpa = { version = "2.0.0-alpha.2", path = "../../../frame/grandpa" } +pallet-indices = { version = "2.0.0-alpha.2", path = "../../../frame/indices" } +sp-keyring = { version = "2.0.0-alpha.2", path = "../../../primitives/keyring" } +node-executor = { version = "2.0.0-alpha.2", path = "../executor" } +node-primitives = { version = "2.0.0-alpha.2", path = "../primitives" } +node-runtime = { version = "2.0.0-alpha.2", path = "../runtime" } +sp-core = { version = "2.0.0-alpha.2", path = "../../../primitives/core" } +sp-io = { version = "2.0.0-alpha.2", path = "../../../primitives/io" } +frame-support = { version = "2.0.0-alpha.2", path = "../../../frame/support" } +pallet-session = { version = "2.0.0-alpha.2", path = "../../../frame/session" } +pallet-society = { version = "2.0.0-alpha.2", path = "../../../frame/society" } +sp-runtime = { version = "2.0.0-alpha.2", path = "../../../primitives/runtime" } +pallet-staking = { version = "2.0.0-alpha.2", path = "../../../frame/staking" } +sc-executor = { version = "0.8.0-alpha.2", path = "../../../client/executor", features = ["wasmtime"] } +sp-consensus = { version = "0.8.0-alpha.2", path = "../../../primitives/consensus/common" } +frame-system = { version = "2.0.0-alpha.2", path = "../../../frame/system" } substrate-test-client = { version = "2.0.0-dev", path = "../../../test-utils/client" } -pallet-timestamp = { version = "2.0.0-alpha.1", path = "../../../frame/timestamp" } -pallet-transaction-payment = { version = "2.0.0-alpha.1", path = "../../../frame/transaction-payment" } -pallet-treasury = { version = "2.0.0-alpha.1", path = "../../../frame/treasury" } +pallet-timestamp = { version = "2.0.0-alpha.2", path = "../../../frame/timestamp" } +pallet-transaction-payment = { version = "2.0.0-alpha.2", path = "../../../frame/transaction-payment" } +pallet-treasury = { version = "2.0.0-alpha.2", path = "../../../frame/treasury" } wabt = "0.9.2" -sp-api = { version = "2.0.0-alpha.1", path = "../../../primitives/api" } -sp-finality-tracker = { version = "2.0.0-alpha.1", default-features = false, path = "../../../primitives/finality-tracker" } -sp-timestamp = { version = "2.0.0-alpha.1", default-features = false, path = "../../../primitives/timestamp" } -sp-block-builder = { version = "2.0.0-alpha.1", path = "../../../primitives/block-builder" } -sp-inherents = { version = "2.0.0-alpha.1", path = "../../../primitives/inherents" } -sp-blockchain = { version = "2.0.0-alpha.1", path = "../../../primitives/blockchain" } +sp-api = { version = "2.0.0-alpha.2", path = "../../../primitives/api" } +sp-finality-tracker = { version = "2.0.0-alpha.2", default-features = false, path = "../../../primitives/finality-tracker" } +sp-timestamp = { version = "2.0.0-alpha.2", default-features = false, path = "../../../primitives/timestamp" } +sp-block-builder = { version = "2.0.0-alpha.2", path = "../../../primitives/block-builder" } +sp-inherents = { version = "2.0.0-alpha.2", path = "../../../primitives/inherents" } +sp-blockchain = { version = "2.0.0-alpha.2", path = "../../../primitives/blockchain" } log = "0.4.8" tempfile = "3.1.0" fs_extra = "1" [dev-dependencies] criterion = "0.3.0" -sc-cli = { version = "0.8.0-alpha.1", path = "../../../client/cli" } -sc-service = { version = "0.8.0-alpha.1", path = "../../../client/service", features = ["rocksdb"] } +sc-cli = { version = "0.8.0-alpha.2", path = "../../../client/cli" } +sc-service = { version = "0.8.0-alpha.2", path = "../../../client/service", features = ["rocksdb"] } [[bench]] name = "import" diff --git a/bin/node/transaction-factory/Cargo.toml b/bin/node/transaction-factory/Cargo.toml index b73f5b6582..8a033ad4c1 100644 --- a/bin/node/transaction-factory/Cargo.toml +++ b/bin/node/transaction-factory/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "node-transaction-factory" -version = "0.8.0-alpha.1" +version = "0.8.0-alpha.2" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" @@ -8,15 +8,15 @@ homepage = "https://substrate.dev" repository = "https://github.com/paritytech/substrate/" [dependencies] -sp-block-builder = { version = "2.0.0-alpha.1", path = "../../../primitives/block-builder" } -sc-cli = { version = "0.8.0-alpha.1", path = "../../../client/cli" } -sc-client-api = { version = "2.0.0-alpha.1", path = "../../../client/api" } -sc-client = { version = "0.8.0-alpha.1", path = "../../../client" } +sp-block-builder = { version = "2.0.0-alpha.2", path = "../../../primitives/block-builder" } +sc-cli = { version = "0.8.0-alpha.2", path = "../../../client/cli" } +sc-client-api = { version = "2.0.0-alpha.2", path = "../../../client/api" } +sc-client = { version = "0.8.0-alpha.2", path = "../../../client" } codec = { package = "parity-scale-codec", version = "1.0.0", features = ["derive"] } -sp-consensus = { version = "0.8.0-alpha.1", path = "../../../primitives/consensus/common" } +sp-consensus = { version = "0.8.0-alpha.2", path = "../../../primitives/consensus/common" } log = "0.4.8" -sp-core = { version = "2.0.0-alpha.1", path = "../../../primitives/core" } -sp-api = { version = "2.0.0-alpha.1", path = "../../../primitives/api" } -sp-runtime = { version = "2.0.0-alpha.1", path = "../../../primitives/runtime" } -sc-service = { version = "0.8.0-alpha.1", path = "../../../client/service" } -sp-blockchain = { version = "2.0.0-alpha.1", path = "../../../primitives/blockchain" } +sp-core = { version = "2.0.0-alpha.2", path = "../../../primitives/core" } +sp-api = { version = "2.0.0-alpha.2", path = "../../../primitives/api" } +sp-runtime = { version = "2.0.0-alpha.2", path = "../../../primitives/runtime" } +sc-service = { version = "0.8.0-alpha.2", path = "../../../client/service" } +sp-blockchain = { version = "2.0.0-alpha.2", path = "../../../primitives/blockchain" } diff --git a/bin/utils/chain-spec-builder/Cargo.toml b/bin/utils/chain-spec-builder/Cargo.toml index 328bc5e064..22924f8852 100644 --- a/bin/utils/chain-spec-builder/Cargo.toml +++ b/bin/utils/chain-spec-builder/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "chain-spec-builder" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" authors = ["Parity Technologies "] edition = "2018" build = "build.rs" @@ -10,8 +10,8 @@ repository = "https://github.com/paritytech/substrate/" [dependencies] ansi_term = "0.12.1" -sc-keystore = { version = "2.0.0-alpha.1", path = "../../../client/keystore" } -node-cli = { version = "2.0.0-alpha.1", path = "../../node/cli" } -sp-core = { version = "2.0.0-alpha.1", path = "../../../primitives/core" } +sc-keystore = { version = "2.0.0-alpha.2", path = "../../../client/keystore" } +node-cli = { version = "2.0.0-alpha.2", path = "../../node/cli" } +sp-core = { version = "2.0.0-alpha.2", path = "../../../primitives/core" } rand = "0.7.2" structopt = "0.3.8" diff --git a/bin/utils/subkey/Cargo.toml b/bin/utils/subkey/Cargo.toml index 49a57d7de0..a6c239c6d7 100644 --- a/bin/utils/subkey/Cargo.toml +++ b/bin/utils/subkey/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "subkey" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" @@ -9,10 +9,10 @@ repository = "https://github.com/paritytech/substrate/" [dependencies] futures = "0.1.29" -sp-core = { version = "2.0.0-alpha.1", path = "../../../primitives/core" } -node-runtime = { version = "2.0.0-alpha.1", path = "../../node/runtime" } -node-primitives = { version = "2.0.0-alpha.1", path = "../../node/primitives" } -sp-runtime = { version = "2.0.0-alpha.1", path = "../../../primitives/runtime" } +sp-core = { version = "2.0.0-alpha.2", path = "../../../primitives/core" } +node-runtime = { version = "2.0.0-alpha.2", path = "../../node/runtime" } +node-primitives = { version = "2.0.0-alpha.2", path = "../../node/primitives" } +sp-runtime = { version = "2.0.0-alpha.2", path = "../../../primitives/runtime" } rand = "0.7.2" clap = "2.33.0" tiny-bip39 = "0.7" @@ -21,13 +21,13 @@ substrate-bip39 = "0.3.1" hex = "0.4.0" hex-literal = "0.2.1" codec = { package = "parity-scale-codec", version = "1.0.0" } -frame-system = { version = "2.0.0-alpha.1", path = "../../../frame/system" } -pallet-balances = { version = "2.0.0-alpha.1", path = "../../../frame/balances" } -pallet-transaction-payment = { version = "2.0.0-alpha.1", path = "../../../frame/transaction-payment" } +frame-system = { version = "2.0.0-alpha.2", path = "../../../frame/system" } +pallet-balances = { version = "2.0.0-alpha.2", path = "../../../frame/balances" } +pallet-transaction-payment = { version = "2.0.0-alpha.2", path = "../../../frame/transaction-payment" } rpassword = "4.0.1" itertools = "0.8.2" derive_more = { version = "0.99.2" } -sc-rpc = { version = "2.0.0-alpha.1", path = "../../../client/rpc" } +sc-rpc = { version = "2.0.0-alpha.2", path = "../../../client/rpc" } jsonrpc-core-client = { version = "14.0.3", features = ["http"] } hyper = "0.12.35" libp2p = "0.16.1" diff --git a/client/Cargo.toml b/client/Cargo.toml index 0ae03b56ef..09fa6a2aaf 100644 --- a/client/Cargo.toml +++ b/client/Cargo.toml @@ -1,38 +1,39 @@ [package] name = "sc-client" -version = "0.8.0-alpha.1" +version = "0.8.0-alpha.2" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" homepage = "https://substrate.dev" repository = "https://github.com/paritytech/substrate/" +description = "Substrate Client and associated logic." [dependencies] -sc-block-builder = { version = "0.8.0-alpha.1", path = "block-builder" } -sc-client-api = { version = "2.0.0-alpha.1", path = "api" } +sc-block-builder = { version = "0.8.0-alpha.2", path = "block-builder" } +sc-client-api = { version = "2.0.0-alpha.2", path = "api" } codec = { package = "parity-scale-codec", version = "1.0.0", features = ["derive"] } -sp-consensus = { version = "0.8.0-alpha.1", path = "../primitives/consensus/common" } +sp-consensus = { version = "0.8.0-alpha.2", path = "../primitives/consensus/common" } derive_more = { version = "0.99.2" } -sc-executor = { version = "0.8.0-alpha.1", path = "executor" } -sp-externalities = { version = "0.8.0-alpha.1", path = "../primitives/externalities" } +sc-executor = { version = "0.8.0-alpha.2", path = "executor" } +sp-externalities = { version = "0.8.0-alpha.2", path = "../primitives/externalities" } fnv = { version = "1.0.6" } futures = { version = "0.3.1", features = ["compat"] } hash-db = { version = "0.15.2" } hex-literal = { version = "0.2.1" } -sp-inherents = { version = "2.0.0-alpha.1", path = "../primitives/inherents" } -sp-keyring = { version = "2.0.0-alpha.1", path = "../primitives/keyring" } +sp-inherents = { version = "2.0.0-alpha.2", path = "../primitives/inherents" } +sp-keyring = { version = "2.0.0-alpha.2", path = "../primitives/keyring" } kvdb = "0.4.0" log = { version = "0.4.8" } parking_lot = "0.10.0" -sp-core = { version = "2.0.0-alpha.1", path = "../primitives/core" } -sp-std = { version = "2.0.0-alpha.1", path = "../primitives/std" } -sp-version = { version = "2.0.0-alpha.1", path = "../primitives/version" } -sp-api = { version = "2.0.0-alpha.1", path = "../primitives/api" } -sp-runtime = { version = "2.0.0-alpha.1", path = "../primitives/runtime" } -sp-blockchain = { version = "2.0.0-alpha.1", path = "../primitives/blockchain" } -sp-state-machine = { version = "0.8.0-alpha.1", path = "../primitives/state-machine" } -sc-telemetry = { version = "2.0.0-alpha.1", path = "telemetry" } -sp-trie = { version = "2.0.0-alpha.1", path = "../primitives/trie" } +sp-core = { version = "2.0.0-alpha.2", path = "../primitives/core" } +sp-std = { version = "2.0.0-alpha.2", path = "../primitives/std" } +sp-version = { version = "2.0.0-alpha.2", path = "../primitives/version" } +sp-api = { version = "2.0.0-alpha.2", path = "../primitives/api" } +sp-runtime = { version = "2.0.0-alpha.2", path = "../primitives/runtime" } +sp-blockchain = { version = "2.0.0-alpha.2", path = "../primitives/blockchain" } +sp-state-machine = { version = "0.8.0-alpha.2", path = "../primitives/state-machine" } +sc-telemetry = { version = "2.0.0-alpha.2", path = "telemetry" } +sp-trie = { version = "2.0.0-alpha.2", path = "../primitives/trie" } tracing = "0.1.10" [dev-dependencies] @@ -40,4 +41,4 @@ env_logger = "0.7.0" tempfile = "3.1.0" substrate-test-runtime-client = { version = "2.0.0-dev", path = "../test-utils/runtime/client" } kvdb-memorydb = "0.4.0" -sp-panic-handler = { version = "2.0.0-alpha.1", path = "../primitives/panic-handler" } +sp-panic-handler = { version = "2.0.0-alpha.2", path = "../primitives/panic-handler" } diff --git a/client/api/Cargo.toml b/client/api/Cargo.toml index 6256a99bb8..f1d3478c47 100644 --- a/client/api/Cargo.toml +++ b/client/api/Cargo.toml @@ -1,37 +1,40 @@ [package] name = "sc-client-api" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" homepage = "https://substrate.dev" repository = "https://github.com/paritytech/substrate/" +description = "Substrate client interfaces." +documentation = "https://docs.rs/sc-client-api" + [dependencies] codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } -sp-consensus = { version = "0.8.0-alpha.1", path = "../../primitives/consensus/common" } +sp-consensus = { version = "0.8.0-alpha.2", path = "../../primitives/consensus/common" } derive_more = { version = "0.99.2" } -sc-executor = { version = "0.8.0-alpha.1", path = "../executor" } -sp-externalities = { version = "0.8.0-alpha.1", path = "../../primitives/externalities" } +sc-executor = { version = "0.8.0-alpha.2", path = "../executor" } +sp-externalities = { version = "0.8.0-alpha.2", path = "../../primitives/externalities" } fnv = { version = "1.0.6" } futures = { version = "0.3.1" } hash-db = { version = "0.15.2", default-features = false } -sp-blockchain = { version = "2.0.0-alpha.1", path = "../../primitives/blockchain" } +sp-blockchain = { version = "2.0.0-alpha.2", path = "../../primitives/blockchain" } hex-literal = { version = "0.2.1" } -sp-inherents = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/inherents" } -sp-keyring = { version = "2.0.0-alpha.1", path = "../../primitives/keyring" } +sp-inherents = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/inherents" } +sp-keyring = { version = "2.0.0-alpha.2", path = "../../primitives/keyring" } kvdb = "0.4.0" log = { version = "0.4.8" } parking_lot = "0.10.0" -sp-core = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/core" } -sp-std = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/std" } -sp-version = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/version" } -sp-api = { version = "2.0.0-alpha.1", path = "../../primitives/api" } -sp-runtime = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/runtime" } -sp-state-machine = { version = "0.8.0-alpha.1", path = "../../primitives/state-machine" } -sc-telemetry = { version = "2.0.0-alpha.1", path = "../telemetry" } -sp-trie = { version = "2.0.0-alpha.1", path = "../../primitives/trie" } -sp-transaction-pool = { version = "2.0.0-alpha.1", path = "../../primitives/transaction-pool" } +sp-core = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/core" } +sp-std = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/std" } +sp-version = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/version" } +sp-api = { version = "2.0.0-alpha.2", path = "../../primitives/api" } +sp-runtime = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/runtime" } +sp-state-machine = { version = "0.8.0-alpha.2", path = "../../primitives/state-machine" } +sc-telemetry = { version = "2.0.0-alpha.2", path = "../telemetry" } +sp-trie = { version = "2.0.0-alpha.2", path = "../../primitives/trie" } +sp-transaction-pool = { version = "2.0.0-alpha.2", path = "../../primitives/transaction-pool" } [dev-dependencies] sp-test-primitives = { version = "2.0.0-dev", path = "../../primitives/test-primitives" } diff --git a/client/authority-discovery/Cargo.toml b/client/authority-discovery/Cargo.toml index 95e0d78240..a262730d60 100644 --- a/client/authority-discovery/Cargo.toml +++ b/client/authority-discovery/Cargo.toml @@ -1,12 +1,13 @@ [package] name = "sc-authority-discovery" -version = "0.8.0-alpha.1" +version = "0.8.0-alpha.2" authors = ["Parity Technologies "] edition = "2018" build = "build.rs" license = "GPL-3.0" homepage = "https://substrate.dev" repository = "https://github.com/paritytech/substrate/" +description = "Substrate authority discovery." [build-dependencies] prost-build = "0.6.1" @@ -21,18 +22,18 @@ libp2p = { version = "0.16.1", default-features = false, features = ["secp256k1" log = "0.4.8" prost = "0.6.1" rand = "0.7.2" -sc-client-api = { version = "2.0.0-alpha.1", path = "../api" } -sc-keystore = { version = "2.0.0-alpha.1", path = "../keystore" } -sc-network = { version = "0.8.0-alpha.1", path = "../network" } +sc-client-api = { version = "2.0.0-alpha.2", path = "../api" } +sc-keystore = { version = "2.0.0-alpha.2", path = "../keystore" } +sc-network = { version = "0.8.0-alpha.2", path = "../network" } serde_json = "1.0.41" -sp-authority-discovery = { version = "2.0.0-alpha.1", path = "../../primitives/authority-discovery" } -sp-blockchain = { version = "2.0.0-alpha.1", path = "../../primitives/blockchain" } -sp-core = { version = "2.0.0-alpha.1", path = "../../primitives/core" } -sp-runtime = { version = "2.0.0-alpha.1", path = "../../primitives/runtime" } -sp-api = { version = "2.0.0-alpha.1", path = "../../primitives/api" } +sp-authority-discovery = { version = "2.0.0-alpha.2", path = "../../primitives/authority-discovery" } +sp-blockchain = { version = "2.0.0-alpha.2", path = "../../primitives/blockchain" } +sp-core = { version = "2.0.0-alpha.2", path = "../../primitives/core" } +sp-runtime = { version = "2.0.0-alpha.2", path = "../../primitives/runtime" } +sp-api = { version = "2.0.0-alpha.2", path = "../../primitives/api" } [dev-dependencies] env_logger = "0.7.0" quickcheck = "0.9.0" -sc-peerset = { version = "2.0.0-alpha.1", path = "../peerset" } +sc-peerset = { version = "2.0.0-alpha.2", path = "../peerset" } substrate-test-runtime-client = { version = "2.0.0-dev", path = "../../test-utils/runtime/client"} diff --git a/client/basic-authorship/Cargo.toml b/client/basic-authorship/Cargo.toml index 971279297a..c3fb8799bb 100644 --- a/client/basic-authorship/Cargo.toml +++ b/client/basic-authorship/Cargo.toml @@ -1,30 +1,31 @@ [package] name = "sc-basic-authorship" -version = "0.8.0-alpha.1" +version = "0.8.0-alpha.2" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" homepage = "https://substrate.dev" repository = "https://github.com/paritytech/substrate/" +description = "Basic implementation of block-authoring logic." [dependencies] log = "0.4.8" futures = "0.3.1" codec = { package = "parity-scale-codec", version = "1.0.0" } -sp-api = { version = "2.0.0-alpha.1", path = "../../primitives/api" } -sp-runtime = { version = "2.0.0-alpha.1", path = "../../primitives/runtime" } -sp-core = { version = "2.0.0-alpha.1", path = "../../primitives/core" } -sp-blockchain = { version = "2.0.0-alpha.1", path = "../../primitives/blockchain" } -sc-client = { version = "0.8.0-alpha.1", path = "../" } -sc-client-api = { version = "2.0.0-alpha.1", path = "../api" } -sp-consensus = { version = "0.8.0-alpha.1", path = "../../primitives/consensus/common" } -sp-inherents = { version = "2.0.0-alpha.1", path = "../../primitives/inherents" } -sc-telemetry = { version = "2.0.0-alpha.1", path = "../telemetry" } -sp-transaction-pool = { version = "2.0.0-alpha.1", path = "../../primitives/transaction-pool" } -sc-block-builder = { version = "0.8.0-alpha.1", path = "../block-builder" } +sp-api = { version = "2.0.0-alpha.2", path = "../../primitives/api" } +sp-runtime = { version = "2.0.0-alpha.2", path = "../../primitives/runtime" } +sp-core = { version = "2.0.0-alpha.2", path = "../../primitives/core" } +sp-blockchain = { version = "2.0.0-alpha.2", path = "../../primitives/blockchain" } +sc-client = { version = "0.8.0-alpha.2", path = "../" } +sc-client-api = { version = "2.0.0-alpha.2", path = "../api" } +sp-consensus = { version = "0.8.0-alpha.2", path = "../../primitives/consensus/common" } +sp-inherents = { version = "2.0.0-alpha.2", path = "../../primitives/inherents" } +sc-telemetry = { version = "2.0.0-alpha.2", path = "../telemetry" } +sp-transaction-pool = { version = "2.0.0-alpha.2", path = "../../primitives/transaction-pool" } +sc-block-builder = { version = "0.8.0-alpha.2", path = "../block-builder" } tokio-executor = { version = "0.2.0-alpha.6", features = ["blocking"] } [dev-dependencies] -sc-transaction-pool = { version = "2.0.0-alpha.1", path = "../../client/transaction-pool" } +sc-transaction-pool = { version = "2.0.0-alpha.2", path = "../../client/transaction-pool" } substrate-test-runtime-client = { version = "2.0.0-dev", path = "../../test-utils/runtime/client" } parking_lot = "0.10.0" diff --git a/client/block-builder/Cargo.toml b/client/block-builder/Cargo.toml index 94b7640d2f..ee8c1c8ae0 100644 --- a/client/block-builder/Cargo.toml +++ b/client/block-builder/Cargo.toml @@ -1,19 +1,21 @@ [package] name = "sc-block-builder" -version = "0.8.0-alpha.1" +version = "0.8.0-alpha.2" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" homepage = "https://substrate.dev" repository = "https://github.com/paritytech/substrate/" +description = "Substrate block builder" + [dependencies] -sp-state-machine = { version = "0.8.0-alpha.1", path = "../../primitives/state-machine" } -sp-runtime = { version = "2.0.0-alpha.1", path = "../../primitives/runtime" } -sp-api = { version = "2.0.0-alpha.1", path = "../../primitives/api" } -sp-consensus = { version = "0.8.0-alpha.1", path = "../../primitives/consensus/common" } -sp-blockchain = { version = "2.0.0-alpha.1", path = "../../primitives/blockchain" } -sp-core = { version = "2.0.0-alpha.1", path = "../../primitives/core" } -sp-block-builder = { version = "2.0.0-alpha.1", path = "../../primitives/block-builder" } -sc-client-api = { version = "2.0.0-alpha.1", path = "../api" } +sp-state-machine = { version = "0.8.0-alpha.2", path = "../../primitives/state-machine" } +sp-runtime = { version = "2.0.0-alpha.2", path = "../../primitives/runtime" } +sp-api = { version = "2.0.0-alpha.2", path = "../../primitives/api" } +sp-consensus = { version = "0.8.0-alpha.2", path = "../../primitives/consensus/common" } +sp-blockchain = { version = "2.0.0-alpha.2", path = "../../primitives/blockchain" } +sp-core = { version = "2.0.0-alpha.2", path = "../../primitives/core" } +sp-block-builder = { version = "2.0.0-alpha.2", path = "../../primitives/block-builder" } +sc-client-api = { version = "2.0.0-alpha.2", path = "../api" } codec = { package = "parity-scale-codec", version = "1.0.6", features = ["derive"] } diff --git a/client/chain-spec/Cargo.toml b/client/chain-spec/Cargo.toml index e1fc4fbc20..4f6e4be6a1 100644 --- a/client/chain-spec/Cargo.toml +++ b/client/chain-spec/Cargo.toml @@ -1,18 +1,19 @@ [package] name = "sc-chain-spec" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" homepage = "https://substrate.dev" repository = "https://github.com/paritytech/substrate/" +description = "Substrate chain configurations." [dependencies] -sc-chain-spec-derive = { version = "2.0.0-alpha.1", path = "./derive" } +sc-chain-spec-derive = { version = "2.0.0-alpha.2", path = "./derive" } impl-trait-for-tuples = "0.1.3" -sc-network = { version = "0.8.0-alpha.1", path = "../network" } -sp-core = { version = "2.0.0-alpha.1", path = "../../primitives/core" } +sc-network = { version = "0.8.0-alpha.2", path = "../network" } +sp-core = { version = "2.0.0-alpha.2", path = "../../primitives/core" } serde = { version = "1.0.101", features = ["derive"] } serde_json = "1.0.41" -sp-runtime = { version = "2.0.0-alpha.1", path = "../../primitives/runtime" } -sc-telemetry = { version = "2.0.0-alpha.1", path = "../telemetry" } +sp-runtime = { version = "2.0.0-alpha.2", path = "../../primitives/runtime" } +sc-telemetry = { version = "2.0.0-alpha.2", path = "../telemetry" } diff --git a/client/chain-spec/derive/Cargo.toml b/client/chain-spec/derive/Cargo.toml index 61fe7e9df0..77532f9261 100644 --- a/client/chain-spec/derive/Cargo.toml +++ b/client/chain-spec/derive/Cargo.toml @@ -1,11 +1,12 @@ [package] name = "sc-chain-spec-derive" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" homepage = "https://substrate.dev" repository = "https://github.com/paritytech/substrate/" +description = "Macros to derive chain spec extension traits implementation." [lib] proc-macro = true diff --git a/client/cli/Cargo.toml b/client/cli/Cargo.toml index 9c72429638..4066e1136b 100644 --- a/client/cli/Cargo.toml +++ b/client/cli/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "sc-cli" -version = "0.8.0-alpha.1" +version = "0.8.0-alpha.2" authors = ["Parity Technologies "] description = "Substrate CLI interface." edition = "2018" @@ -23,21 +23,21 @@ tokio = { version = "0.2.9", features = [ "signal", "rt-core", "rt-threaded" ] } futures = "0.3.1" fdlimit = "0.1.1" serde_json = "1.0.41" -sc-informant = { version = "0.8.0-alpha.1", path = "../informant" } -sp-panic-handler = { version = "2.0.0-alpha.1", path = "../../primitives/panic-handler" } -sc-client-api = { version = "2.0.0-alpha.1", path = "../api" } -sp-blockchain = { version = "2.0.0-alpha.1", path = "../../primitives/blockchain" } -sc-network = { version = "0.8.0-alpha.1", path = "../network" } -sp-runtime = { version = "2.0.0-alpha.1", path = "../../primitives/runtime" } -sp-core = { version = "2.0.0-alpha.1", path = "../../primitives/core" } -sc-service = { version = "0.8.0-alpha.1", default-features = false, path = "../service" } -sp-state-machine = { version = "0.8.0-alpha.1", path = "../../primitives/state-machine" } -sc-telemetry = { version = "2.0.0-alpha.1", path = "../telemetry" } -prometheus-exporter = { path = "../../utils/prometheus" , version = "0.8.0-alpha.1"} -sp-keyring = { version = "2.0.0-alpha.1", path = "../../primitives/keyring" } +sc-informant = { version = "0.8.0-alpha.2", path = "../informant" } +sp-panic-handler = { version = "2.0.0-alpha.2", path = "../../primitives/panic-handler" } +sc-client-api = { version = "2.0.0-alpha.2", path = "../api" } +sp-blockchain = { version = "2.0.0-alpha.2", path = "../../primitives/blockchain" } +sc-network = { version = "0.8.0-alpha.2", path = "../network" } +sp-runtime = { version = "2.0.0-alpha.2", path = "../../primitives/runtime" } +sp-core = { version = "2.0.0-alpha.2", path = "../../primitives/core" } +sc-service = { version = "0.8.0-alpha.2", default-features = false, path = "../service" } +sp-state-machine = { version = "0.8.0-alpha.2", path = "../../primitives/state-machine" } +sc-telemetry = { version = "2.0.0-alpha.2", path = "../telemetry" } +prometheus-exporter = { path = "../../utils/prometheus" , version = "0.8.0-alpha.2"} +sp-keyring = { version = "2.0.0-alpha.2", path = "../../primitives/keyring" } names = "0.11.0" structopt = "0.3.8" -sc-tracing = { version = "2.0.0-alpha.1", path = "../tracing" } +sc-tracing = { version = "2.0.0-alpha.2", path = "../tracing" } chrono = "0.4.10" parity-util-mem = { version = "0.5.1", default-features = false, features = ["primitive-types"] } diff --git a/client/consensus/aura/Cargo.toml b/client/consensus/aura/Cargo.toml index 420b0e3005..41b1f4c460 100644 --- a/client/consensus/aura/Cargo.toml +++ b/client/consensus/aura/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "sc-consensus-aura" -version = "0.8.0-alpha.1" +version = "0.8.0-alpha.2" authors = ["Parity Technologies "] description = "Aura consensus algorithm for substrate" edition = "2018" @@ -9,36 +9,36 @@ homepage = "https://substrate.dev" repository = "https://github.com/paritytech/substrate/" [dependencies] -sp-application-crypto = { version = "2.0.0-alpha.1", path = "../../../primitives/application-crypto" } -sp-consensus-aura = { version = "0.8.0-alpha.1", path = "../../../primitives/consensus/aura" } -sp-block-builder = { version = "2.0.0-alpha.1", path = "../../../primitives/block-builder" } -sc-client = { version = "0.8.0-alpha.1", path = "../../" } -sc-client-api = { version = "2.0.0-alpha.1", path = "../../api" } +sp-application-crypto = { version = "2.0.0-alpha.2", path = "../../../primitives/application-crypto" } +sp-consensus-aura = { version = "0.8.0-alpha.2", path = "../../../primitives/consensus/aura" } +sp-block-builder = { version = "2.0.0-alpha.2", path = "../../../primitives/block-builder" } +sc-client = { version = "0.8.0-alpha.2", path = "../../" } +sc-client-api = { version = "2.0.0-alpha.2", path = "../../api" } codec = { package = "parity-scale-codec", version = "1.0.0" } -sp-consensus = { version = "0.8.0-alpha.1", path = "../../../primitives/consensus/common" } +sp-consensus = { version = "0.8.0-alpha.2", path = "../../../primitives/consensus/common" } derive_more = "0.99.2" futures = "0.3.1" futures-timer = "3.0.1" -sp-inherents = { version = "2.0.0-alpha.1", path = "../../../primitives/inherents" } -sc-keystore = { version = "2.0.0-alpha.1", path = "../../keystore" } +sp-inherents = { version = "2.0.0-alpha.2", path = "../../../primitives/inherents" } +sc-keystore = { version = "2.0.0-alpha.2", path = "../../keystore" } log = "0.4.8" parking_lot = "0.10.0" -sp-core = { version = "2.0.0-alpha.1", path = "../../../primitives/core" } -sp-blockchain = { version = "2.0.0-alpha.1", path = "../../../primitives/blockchain" } -sp-io = { version = "2.0.0-alpha.1", path = "../../../primitives/io" } -sp-version = { version = "2.0.0-alpha.1", path = "../../../primitives/version" } -sc-consensus-slots = { version = "0.8.0-alpha.1", path = "../slots" } -sp-api = { version = "2.0.0-alpha.1", path = "../../../primitives/api" } -sp-runtime = { version = "2.0.0-alpha.1", path = "../../../primitives/runtime" } -sp-timestamp = { version = "2.0.0-alpha.1", path = "../../../primitives/timestamp" } -sc-telemetry = { version = "2.0.0-alpha.1", path = "../../telemetry" } +sp-core = { version = "2.0.0-alpha.2", path = "../../../primitives/core" } +sp-blockchain = { version = "2.0.0-alpha.2", path = "../../../primitives/blockchain" } +sp-io = { version = "2.0.0-alpha.2", path = "../../../primitives/io" } +sp-version = { version = "2.0.0-alpha.2", path = "../../../primitives/version" } +sc-consensus-slots = { version = "0.8.0-alpha.2", path = "../slots" } +sp-api = { version = "2.0.0-alpha.2", path = "../../../primitives/api" } +sp-runtime = { version = "2.0.0-alpha.2", path = "../../../primitives/runtime" } +sp-timestamp = { version = "2.0.0-alpha.2", path = "../../../primitives/timestamp" } +sc-telemetry = { version = "2.0.0-alpha.2", path = "../../telemetry" } [dev-dependencies] -sp-keyring = { version = "2.0.0-alpha.1", path = "../../../primitives/keyring" } -sc-executor = { version = "0.8.0-alpha.1", path = "../../executor" } -sc-network = { version = "0.8.0-alpha.1", path = "../../network" } +sp-keyring = { version = "2.0.0-alpha.2", path = "../../../primitives/keyring" } +sc-executor = { version = "0.8.0-alpha.2", path = "../../executor" } +sc-network = { version = "0.8.0-alpha.2", path = "../../network" } sc-network-test = { version = "0.8.0-dev", path = "../../network/test" } -sc-service = { version = "0.8.0-alpha.1", path = "../../service" } +sc-service = { version = "0.8.0-alpha.2", path = "../../service" } substrate-test-runtime-client = { version = "2.0.0-dev", path = "../../../test-utils/runtime/client" } tokio = "0.1.22" env_logger = "0.7.0" diff --git a/client/consensus/babe/Cargo.toml b/client/consensus/babe/Cargo.toml index a05723539a..4ccd006433 100644 --- a/client/consensus/babe/Cargo.toml +++ b/client/consensus/babe/Cargo.toml @@ -1,39 +1,41 @@ [package] name = "sc-consensus-babe" -version = "0.8.0-alpha.1" +version = "0.8.0-alpha.2" authors = ["Parity Technologies "] description = "BABE consensus algorithm for substrate" edition = "2018" license = "GPL-3.0" homepage = "https://substrate.dev" repository = "https://github.com/paritytech/substrate/" +documentation = "https://docs.rs/sc-consensus-babe" + [dependencies] codec = { package = "parity-scale-codec", version = "1.0.0", features = ["derive"] } -sp-consensus-babe = { version = "0.8.0-alpha.1", path = "../../../primitives/consensus/babe" } -sp-core = { version = "2.0.0-alpha.1", path = "../../../primitives/core" } -sp-application-crypto = { version = "2.0.0-alpha.1", path = "../../../primitives/application-crypto" } +sp-consensus-babe = { version = "0.8.0-alpha.2", path = "../../../primitives/consensus/babe" } +sp-core = { version = "2.0.0-alpha.2", path = "../../../primitives/core" } +sp-application-crypto = { version = "2.0.0-alpha.2", path = "../../../primitives/application-crypto" } num-bigint = "0.2.3" num-rational = "0.2.2" num-traits = "0.2.8" serde = { version = "1.0.104", features = ["derive"] } -sp-version = { version = "2.0.0-alpha.1", path = "../../../primitives/version" } -sp-io = { version = "2.0.0-alpha.1", path = "../../../primitives/io" } -sp-inherents = { version = "2.0.0-alpha.1", path = "../../../primitives/inherents" } -sp-timestamp = { version = "2.0.0-alpha.1", path = "../../../primitives/timestamp" } -sc-telemetry = { version = "2.0.0-alpha.1", path = "../../telemetry" } -sc-keystore = { version = "2.0.0-alpha.1", path = "../../keystore" } -sc-client-api = { version = "2.0.0-alpha.1", path = "../../api" } -sc-client = { version = "0.8.0-alpha.1", path = "../../" } -sc-consensus-epochs = { version = "0.8.0-alpha.1", path = "../epochs" } -sp-api = { version = "2.0.0-alpha.1", path = "../../../primitives/api" } -sp-block-builder = { version = "2.0.0-alpha.1", path = "../../../primitives/block-builder" } -sp-blockchain = { version = "2.0.0-alpha.1", path = "../../../primitives/blockchain" } -sp-consensus = { version = "0.8.0-alpha.1", path = "../../../primitives/consensus/common" } -sc-consensus-uncles = { version = "0.8.0-alpha.1", path = "../uncles" } -sc-consensus-slots = { version = "0.8.0-alpha.1", path = "../slots" } -sp-runtime = { version = "2.0.0-alpha.1", path = "../../../primitives/runtime" } -fork-tree = { version = "2.0.0-alpha.1", path = "../../../utils/fork-tree" } +sp-version = { version = "2.0.0-alpha.2", path = "../../../primitives/version" } +sp-io = { version = "2.0.0-alpha.2", path = "../../../primitives/io" } +sp-inherents = { version = "2.0.0-alpha.2", path = "../../../primitives/inherents" } +sp-timestamp = { version = "2.0.0-alpha.2", path = "../../../primitives/timestamp" } +sc-telemetry = { version = "2.0.0-alpha.2", path = "../../telemetry" } +sc-keystore = { version = "2.0.0-alpha.2", path = "../../keystore" } +sc-client-api = { version = "2.0.0-alpha.2", path = "../../api" } +sc-client = { version = "0.8.0-alpha.2", path = "../../" } +sc-consensus-epochs = { version = "0.8.0-alpha.2", path = "../epochs" } +sp-api = { version = "2.0.0-alpha.2", path = "../../../primitives/api" } +sp-block-builder = { version = "2.0.0-alpha.2", path = "../../../primitives/block-builder" } +sp-blockchain = { version = "2.0.0-alpha.2", path = "../../../primitives/blockchain" } +sp-consensus = { version = "0.8.0-alpha.2", path = "../../../primitives/consensus/common" } +sc-consensus-uncles = { version = "0.8.0-alpha.2", path = "../uncles" } +sc-consensus-slots = { version = "0.8.0-alpha.2", path = "../slots" } +sp-runtime = { version = "2.0.0-alpha.2", path = "../../../primitives/runtime" } +fork-tree = { version = "2.0.0-alpha.2", path = "../../../utils/fork-tree" } futures = "0.3.1" futures-timer = "3.0.1" parking_lot = "0.10.0" @@ -45,13 +47,13 @@ pdqselect = "0.1.0" derive_more = "0.99.2" [dev-dependencies] -sp-keyring = { version = "2.0.0-alpha.1", path = "../../../primitives/keyring" } -sc-executor = { version = "0.8.0-alpha.1", path = "../../executor" } -sc-network = { version = "0.8.0-alpha.1", path = "../../network" } +sp-keyring = { version = "2.0.0-alpha.2", path = "../../../primitives/keyring" } +sc-executor = { version = "0.8.0-alpha.2", path = "../../executor" } +sc-network = { version = "0.8.0-alpha.2", path = "../../network" } sc-network-test = { version = "0.8.0-dev", path = "../../network/test" } -sc-service = { version = "0.8.0-alpha.1", path = "../../service" } +sc-service = { version = "0.8.0-alpha.2", path = "../../service" } substrate-test-runtime-client = { version = "2.0.0-dev", path = "../../../test-utils/runtime/client" } -sc-block-builder = { version = "0.8.0-alpha.1", path = "../../block-builder" } +sc-block-builder = { version = "0.8.0-alpha.2", path = "../../block-builder" } tokio = "0.1.22" env_logger = "0.7.0" tempfile = "3.1.0" diff --git a/client/consensus/babe/rpc/Cargo.toml b/client/consensus/babe/rpc/Cargo.toml index a2d367df5c..11a8b28211 100644 --- a/client/consensus/babe/rpc/Cargo.toml +++ b/client/consensus/babe/rpc/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "sc-consensus-babe-rpc" -version = "0.8.0-alpha.1" +version = "0.8.0-alpha.2" authors = ["Parity Technologies "] description = "RPC extensions for the BABE consensus algorithm" edition = "2018" @@ -9,24 +9,24 @@ homepage = "https://substrate.dev" repository = "https://github.com/paritytech/substrate/" [dependencies] -sc-consensus-babe = { version = "0.8.0-alpha.1", path = "../" } +sc-consensus-babe = { version = "0.8.0-alpha.2", path = "../" } jsonrpc-core = "14.0.3" jsonrpc-core-client = "14.0.3" jsonrpc-derive = "14.0.3" -sp-consensus-babe = { version = "0.8.0-alpha.1", path = "../../../../primitives/consensus/babe" } +sp-consensus-babe = { version = "0.8.0-alpha.2", path = "../../../../primitives/consensus/babe" } serde = { version = "1.0.104", features=["derive"] } -sp-blockchain = { version = "2.0.0-alpha.1", path = "../../../../primitives/blockchain" } -sp-runtime = { version = "2.0.0-alpha.1", path = "../../../../primitives/runtime" } -sc-consensus-epochs = { version = "0.8.0-alpha.1", path = "../../epochs" } +sp-blockchain = { version = "2.0.0-alpha.2", path = "../../../../primitives/blockchain" } +sp-runtime = { version = "2.0.0-alpha.2", path = "../../../../primitives/runtime" } +sc-consensus-epochs = { version = "0.8.0-alpha.2", path = "../../epochs" } futures = "0.3.1" derive_more = "0.99.2" -sp-api = { version = "2.0.0-alpha.1", path = "../../../../primitives/api" } -sp-consensus = { version = "0.8.0-alpha.1", path = "../../../../primitives/consensus/common" } -sp-core = { version = "2.0.0-alpha.1", path = "../../../../primitives/core" } -sc-keystore = { version = "2.0.0-alpha.1", path = "../../../keystore" } +sp-api = { version = "2.0.0-alpha.2", path = "../../../../primitives/api" } +sp-consensus = { version = "0.8.0-alpha.2", path = "../../../../primitives/consensus/common" } +sp-core = { version = "2.0.0-alpha.2", path = "../../../../primitives/core" } +sc-keystore = { version = "2.0.0-alpha.2", path = "../../../keystore" } [dev-dependencies] substrate-test-runtime-client = { version = "2.0.0-dev", path = "../../../../test-utils/runtime/client" } -sp-application-crypto = { version = "2.0.0-alpha.1", path = "../../../../primitives/application-crypto" } -sp-keyring = { version = "2.0.0-alpha.1", path = "../../../../primitives/keyring" } +sp-application-crypto = { version = "2.0.0-alpha.2", path = "../../../../primitives/application-crypto" } +sp-keyring = { version = "2.0.0-alpha.2", path = "../../../../primitives/keyring" } tempfile = "3.1.0" diff --git a/client/consensus/epochs/Cargo.toml b/client/consensus/epochs/Cargo.toml index 8fc7d81303..48a14ea505 100644 --- a/client/consensus/epochs/Cargo.toml +++ b/client/consensus/epochs/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "sc-consensus-epochs" -version = "0.8.0-alpha.1" +version = "0.8.0-alpha.2" authors = ["Parity Technologies "] description = "Generic epochs-based utilities for consensus" edition = "2018" @@ -11,7 +11,7 @@ repository = "https://github.com/paritytech/substrate/" [dependencies] codec = { package = "parity-scale-codec", version = "1.0.0", features = ["derive"] } parking_lot = "0.10.0" -fork-tree = { version = "2.0.0-alpha.1", path = "../../../utils/fork-tree" } -sp-runtime = { path = "../../../primitives/runtime" , version = "2.0.0-alpha.1"} -sp-blockchain = { version = "2.0.0-alpha.1", path = "../../../primitives/blockchain" } -sc-client-api = { path = "../../api" , version = "2.0.0-alpha.1"} +fork-tree = { version = "2.0.0-alpha.2", path = "../../../utils/fork-tree" } +sp-runtime = { path = "../../../primitives/runtime" , version = "2.0.0-alpha.2"} +sp-blockchain = { version = "2.0.0-alpha.2", path = "../../../primitives/blockchain" } +sc-client-api = { path = "../../api" , version = "2.0.0-alpha.2"} diff --git a/client/consensus/manual-seal/Cargo.toml b/client/consensus/manual-seal/Cargo.toml index f432523a43..0ae7ddbd64 100644 --- a/client/consensus/manual-seal/Cargo.toml +++ b/client/consensus/manual-seal/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "sc-consensus-manual-seal" -version = "0.8.0-alpha.1" +version = "0.8.0-alpha.2" authors = ["Parity Technologies "] description = "Manual sealing engine for Substrate" edition = "2018" @@ -18,17 +18,17 @@ log = "0.4.8" parking_lot = "0.10.0" serde = { version = "1.0", features=["derive"] } -sc-client = { path = "../../../client" , version = "0.8.0-alpha.1"} -sc-client-api = { path = "../../../client/api" , version = "2.0.0-alpha.1"} -sc-transaction-pool = { path = "../../transaction-pool" , version = "2.0.0-alpha.1"} -sp-blockchain = { path = "../../../primitives/blockchain" , version = "2.0.0-alpha.1"} -sp-consensus = { package = "sp-consensus", path = "../../../primitives/consensus/common" , version = "0.8.0-alpha.1"} -sp-inherents = { path = "../../../primitives/inherents" , version = "2.0.0-alpha.1"} -sp-runtime = { path = "../../../primitives/runtime" , version = "2.0.0-alpha.1"} -sp-transaction-pool = { path = "../../../primitives/transaction-pool" , version = "2.0.0-alpha.1"} +sc-client = { path = "../../../client" , version = "0.8.0-alpha.2"} +sc-client-api = { path = "../../../client/api" , version = "2.0.0-alpha.2"} +sc-transaction-pool = { path = "../../transaction-pool" , version = "2.0.0-alpha.2"} +sp-blockchain = { path = "../../../primitives/blockchain" , version = "2.0.0-alpha.2"} +sp-consensus = { package = "sp-consensus", path = "../../../primitives/consensus/common" , version = "0.8.0-alpha.2"} +sp-inherents = { path = "../../../primitives/inherents" , version = "2.0.0-alpha.2"} +sp-runtime = { path = "../../../primitives/runtime" , version = "2.0.0-alpha.2"} +sp-transaction-pool = { path = "../../../primitives/transaction-pool" , version = "2.0.0-alpha.2"} [dev-dependencies] -sc-basic-authorship = { path = "../../basic-authorship" , version = "0.8.0-alpha.1"} +sc-basic-authorship = { path = "../../basic-authorship" , version = "0.8.0-alpha.2"} substrate-test-runtime-client = { path = "../../../test-utils/runtime/client" , version = "2.0.0-dev"} substrate-test-runtime-transaction-pool = { path = "../../../test-utils/runtime/transaction-pool" , version = "2.0.0-dev"} tokio = { version = "0.2", features = ["rt-core", "macros"] } diff --git a/client/consensus/pow/Cargo.toml b/client/consensus/pow/Cargo.toml index d3e0be60f4..dd834e8326 100644 --- a/client/consensus/pow/Cargo.toml +++ b/client/consensus/pow/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "sc-consensus-pow" -version = "0.8.0-alpha.1" +version = "0.8.0-alpha.2" authors = ["Parity Technologies "] description = "PoW consensus algorithm for substrate" edition = "2018" @@ -10,16 +10,16 @@ repository = "https://github.com/paritytech/substrate/" [dependencies] codec = { package = "parity-scale-codec", version = "1.0.0", features = ["derive"] } -sp-core = { version = "2.0.0-alpha.1", path = "../../../primitives/core" } -sp-blockchain = { version = "2.0.0-alpha.1", path = "../../../primitives/blockchain" } -sp-runtime = { version = "2.0.0-alpha.1", path = "../../../primitives/runtime" } -sp-api = { version = "2.0.0-alpha.1", path = "../../../primitives/api" } -sc-client-api = { version = "2.0.0-alpha.1", path = "../../api" } -sp-block-builder = { version = "2.0.0-alpha.1", path = "../../../primitives/block-builder" } -sp-inherents = { version = "2.0.0-alpha.1", path = "../../../primitives/inherents" } -sp-consensus-pow = { version = "0.8.0-alpha.1", path = "../../../primitives/consensus/pow" } -sp-consensus = { version = "0.8.0-alpha.1", path = "../../../primitives/consensus/common" } +sp-core = { version = "2.0.0-alpha.2", path = "../../../primitives/core" } +sp-blockchain = { version = "2.0.0-alpha.2", path = "../../../primitives/blockchain" } +sp-runtime = { version = "2.0.0-alpha.2", path = "../../../primitives/runtime" } +sp-api = { version = "2.0.0-alpha.2", path = "../../../primitives/api" } +sc-client-api = { version = "2.0.0-alpha.2", path = "../../api" } +sp-block-builder = { version = "2.0.0-alpha.2", path = "../../../primitives/block-builder" } +sp-inherents = { version = "2.0.0-alpha.2", path = "../../../primitives/inherents" } +sp-consensus-pow = { version = "0.8.0-alpha.2", path = "../../../primitives/consensus/pow" } +sp-consensus = { version = "0.8.0-alpha.2", path = "../../../primitives/consensus/common" } log = "0.4.8" futures = { version = "0.3.1", features = ["compat"] } -sp-timestamp = { version = "2.0.0-alpha.1", path = "../../../primitives/timestamp" } +sp-timestamp = { version = "2.0.0-alpha.2", path = "../../../primitives/timestamp" } derive_more = "0.99.2" diff --git a/client/consensus/slots/Cargo.toml b/client/consensus/slots/Cargo.toml index 87422a8c6c..a626e2f179 100644 --- a/client/consensus/slots/Cargo.toml +++ b/client/consensus/slots/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "sc-consensus-slots" -version = "0.8.0-alpha.1" +version = "0.8.0-alpha.2" authors = ["Parity Technologies "] description = "Generic slots-based utilities for consensus" edition = "2018" @@ -11,15 +11,15 @@ repository = "https://github.com/paritytech/substrate/" [dependencies] codec = { package = "parity-scale-codec", version = "1.0.0" } -sc-client-api = { version = "2.0.0-alpha.1", path = "../../api" } -sp-core = { version = "2.0.0-alpha.1", path = "../../../primitives/core" } -sp-blockchain = { version = "2.0.0-alpha.1", path = "../../../primitives/blockchain" } -sp-runtime = { version = "2.0.0-alpha.1", path = "../../../primitives/runtime" } -sp-state-machine = { version = "0.8.0-alpha.1", path = "../../../primitives/state-machine" } -sp-api = { version = "2.0.0-alpha.1", path = "../../../primitives/api" } -sc-telemetry = { version = "2.0.0-alpha.1", path = "../../telemetry" } -sp-consensus = { version = "0.8.0-alpha.1", path = "../../../primitives/consensus/common" } -sp-inherents = { version = "2.0.0-alpha.1", path = "../../../primitives/inherents" } +sc-client-api = { version = "2.0.0-alpha.2", path = "../../api" } +sp-core = { version = "2.0.0-alpha.2", path = "../../../primitives/core" } +sp-blockchain = { version = "2.0.0-alpha.2", path = "../../../primitives/blockchain" } +sp-runtime = { version = "2.0.0-alpha.2", path = "../../../primitives/runtime" } +sp-state-machine = { version = "0.8.0-alpha.2", path = "../../../primitives/state-machine" } +sp-api = { version = "2.0.0-alpha.2", path = "../../../primitives/api" } +sc-telemetry = { version = "2.0.0-alpha.2", path = "../../telemetry" } +sp-consensus = { version = "0.8.0-alpha.2", path = "../../../primitives/consensus/common" } +sp-inherents = { version = "2.0.0-alpha.2", path = "../../../primitives/inherents" } futures = "0.3.1" futures-timer = "3.0.1" parking_lot = "0.10.0" diff --git a/client/consensus/uncles/Cargo.toml b/client/consensus/uncles/Cargo.toml index f263cd2171..2c40e53928 100644 --- a/client/consensus/uncles/Cargo.toml +++ b/client/consensus/uncles/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "sc-consensus-uncles" -version = "0.8.0-alpha.1" +version = "0.8.0-alpha.2" authors = ["Parity Technologies "] description = "Generic uncle inclusion utilities for consensus" edition = "2018" @@ -9,10 +9,10 @@ homepage = "https://substrate.dev" repository = "https://github.com/paritytech/substrate/" [dependencies] -sc-client-api = { version = "2.0.0-alpha.1", path = "../../api" } -sp-core = { version = "2.0.0-alpha.1", path = "../../../primitives/core" } -sp-runtime = { version = "2.0.0-alpha.1", path = "../../../primitives/runtime" } -sp-authorship = { version = "2.0.0-alpha.1", path = "../../../primitives/authorship" } -sp-consensus = { version = "0.8.0-alpha.1", path = "../../../primitives/consensus/common" } -sp-inherents = { version = "2.0.0-alpha.1", path = "../../../primitives/inherents" } +sc-client-api = { version = "2.0.0-alpha.2", path = "../../api" } +sp-core = { version = "2.0.0-alpha.2", path = "../../../primitives/core" } +sp-runtime = { version = "2.0.0-alpha.2", path = "../../../primitives/runtime" } +sp-authorship = { version = "2.0.0-alpha.2", path = "../../../primitives/authorship" } +sp-consensus = { version = "0.8.0-alpha.2", path = "../../../primitives/consensus/common" } +sp-inherents = { version = "2.0.0-alpha.2", path = "../../../primitives/inherents" } log = "0.4.8" diff --git a/client/db/Cargo.toml b/client/db/Cargo.toml index 6446608d35..f6b65fdc3c 100644 --- a/client/db/Cargo.toml +++ b/client/db/Cargo.toml @@ -1,11 +1,12 @@ [package] name = "sc-client-db" -version = "0.8.0-alpha.1" +version = "0.8.0-alpha.2" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" homepage = "https://substrate.dev" repository = "https://github.com/paritytech/substrate/" +description = "Client backend that uses RocksDB database as storage." [dependencies] parking_lot = "0.10.0" @@ -19,19 +20,19 @@ hash-db = "0.15.2" parity-util-mem = { version = "0.5.1", default-features = false, features = ["std"] } codec = { package = "parity-scale-codec", version = "1.0.0", features = ["derive"] } -sc-client-api = { version = "2.0.0-alpha.1", path = "../api" } -sp-core = { version = "2.0.0-alpha.1", path = "../../primitives/core" } -sp-runtime = { version = "2.0.0-alpha.1", path = "../../primitives/runtime" } -sc-client = { version = "0.8.0-alpha.1", path = "../" } -sp-state-machine = { version = "0.8.0-alpha.1", path = "../../primitives/state-machine" } -sc-executor = { version = "0.8.0-alpha.1", path = "../executor" } -sc-state-db = { version = "0.8.0-alpha.1", path = "../state-db" } -sp-trie = { version = "2.0.0-alpha.1", path = "../../primitives/trie" } -sp-consensus = { version = "0.8.0-alpha.1", path = "../../primitives/consensus/common" } -sp-blockchain = { version = "2.0.0-alpha.1", path = "../../primitives/blockchain" } +sc-client-api = { version = "2.0.0-alpha.2", path = "../api" } +sp-core = { version = "2.0.0-alpha.2", path = "../../primitives/core" } +sp-runtime = { version = "2.0.0-alpha.2", path = "../../primitives/runtime" } +sc-client = { version = "0.8.0-alpha.2", path = "../" } +sp-state-machine = { version = "0.8.0-alpha.2", path = "../../primitives/state-machine" } +sc-executor = { version = "0.8.0-alpha.2", path = "../executor" } +sc-state-db = { version = "0.8.0-alpha.2", path = "../state-db" } +sp-trie = { version = "2.0.0-alpha.2", path = "../../primitives/trie" } +sp-consensus = { version = "0.8.0-alpha.2", path = "../../primitives/consensus/common" } +sp-blockchain = { version = "2.0.0-alpha.2", path = "../../primitives/blockchain" } [dev-dependencies] -sp-keyring = { version = "2.0.0-alpha.1", path = "../../primitives/keyring" } +sp-keyring = { version = "2.0.0-alpha.2", path = "../../primitives/keyring" } substrate-test-runtime-client = { version = "2.0.0-dev", path = "../../test-utils/runtime/client" } env_logger = "0.7.0" quickcheck = "0.9" diff --git a/client/executor/Cargo.toml b/client/executor/Cargo.toml index 559a2d8b92..9bc6ef910f 100644 --- a/client/executor/Cargo.toml +++ b/client/executor/Cargo.toml @@ -1,30 +1,32 @@ [package] name = "sc-executor" -version = "0.8.0-alpha.1" +version = "0.8.0-alpha.2" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" homepage = "https://substrate.dev" repository = "https://github.com/paritytech/substrate/" +description = "A crate that provides means of executing/dispatching calls into the runtime." +documentation = "https://docs.rs/sc-executor" [dependencies] derive_more = "0.99.2" codec = { package = "parity-scale-codec", version = "1.0.0" } -sp-io = { version = "2.0.0-alpha.1", path = "../../primitives/io" } -sp-core = { version = "2.0.0-alpha.1", path = "../../primitives/core" } -sp-trie = { version = "2.0.0-alpha.1", path = "../../primitives/trie" } -sp-serializer = { version = "2.0.0-alpha.1", path = "../../primitives/serializer" } -sp-version = { version = "2.0.0-alpha.1", path = "../../primitives/version" } -sp-panic-handler = { version = "2.0.0-alpha.1", path = "../../primitives/panic-handler" } +sp-io = { version = "2.0.0-alpha.2", path = "../../primitives/io" } +sp-core = { version = "2.0.0-alpha.2", path = "../../primitives/core" } +sp-trie = { version = "2.0.0-alpha.2", path = "../../primitives/trie" } +sp-serializer = { version = "2.0.0-alpha.2", path = "../../primitives/serializer" } +sp-version = { version = "2.0.0-alpha.2", path = "../../primitives/version" } +sp-panic-handler = { version = "2.0.0-alpha.2", path = "../../primitives/panic-handler" } wasmi = "0.6.2" parity-wasm = "0.41.0" lazy_static = "1.4.0" -sp-wasm-interface = { version = "2.0.0-alpha.1", path = "../../primitives/wasm-interface" } -sp-runtime-interface = { version = "2.0.0-alpha.1", path = "../../primitives/runtime-interface" } -sp-externalities = { version = "0.8.0-alpha.1", path = "../../primitives/externalities" } -sc-executor-common = { version = "0.8.0-alpha.1", path = "common" } -sc-executor-wasmi = { version = "0.8.0-alpha.1", path = "wasmi" } -sc-executor-wasmtime = { version = "0.8.0-alpha.1", path = "wasmtime", optional = true } +sp-wasm-interface = { version = "2.0.0-alpha.2", path = "../../primitives/wasm-interface" } +sp-runtime-interface = { version = "2.0.0-alpha.2", path = "../../primitives/runtime-interface" } +sp-externalities = { version = "0.8.0-alpha.2", path = "../../primitives/externalities" } +sc-executor-common = { version = "0.8.0-alpha.2", path = "common" } +sc-executor-wasmi = { version = "0.8.0-alpha.2", path = "wasmi" } +sc-executor-wasmtime = { version = "0.8.0-alpha.2", path = "wasmtime", optional = true } parking_lot = "0.10.0" log = "0.4.8" libsecp256k1 = "0.3.4" @@ -35,7 +37,7 @@ wabt = "0.9.2" hex-literal = "0.2.1" sc-runtime-test = { version = "2.0.0-dev", path = "runtime-test" } substrate-test-runtime = { version = "2.0.0-dev", path = "../../test-utils/runtime" } -sp-state-machine = { version = "0.8.0-alpha.1", path = "../../primitives/state-machine" } +sp-state-machine = { version = "0.8.0-alpha.2", path = "../../primitives/state-machine" } test-case = "0.3.3" [features] diff --git a/client/executor/common/Cargo.toml b/client/executor/common/Cargo.toml index 474b05bccc..9b3e39b6db 100644 --- a/client/executor/common/Cargo.toml +++ b/client/executor/common/Cargo.toml @@ -1,22 +1,24 @@ [package] name = "sc-executor-common" -version = "0.8.0-alpha.1" +version = "0.8.0-alpha.2" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" homepage = "https://substrate.dev" repository = "https://github.com/paritytech/substrate/" +description = "A set of common definitions that are needed for defining execution engines." +documentation = "https://docs.rs/sc-executor-common/" [dependencies] log = "0.4.8" derive_more = "0.99.2" codec = { package = "parity-scale-codec", version = "1.0.0" } wasmi = "0.6.2" -sp-core = { version = "2.0.0-alpha.1", path = "../../../primitives/core" } -sp-allocator = { version = "2.0.0-alpha.1", path = "../../../primitives/allocator" } -sp-wasm-interface = { version = "2.0.0-alpha.1", path = "../../../primitives/wasm-interface" } -sp-runtime-interface = { version = "2.0.0-alpha.1", path = "../../../primitives/runtime-interface" } -sp-serializer = { version = "2.0.0-alpha.1", path = "../../../primitives/serializer" } +sp-core = { version = "2.0.0-alpha.2", path = "../../../primitives/core" } +sp-allocator = { version = "2.0.0-alpha.2", path = "../../../primitives/allocator" } +sp-wasm-interface = { version = "2.0.0-alpha.2", path = "../../../primitives/wasm-interface" } +sp-runtime-interface = { version = "2.0.0-alpha.2", path = "../../../primitives/runtime-interface" } +sp-serializer = { version = "2.0.0-alpha.2", path = "../../../primitives/serializer" } [features] default = [] diff --git a/client/executor/runtime-test/Cargo.toml b/client/executor/runtime-test/Cargo.toml index 6964f7d112..ad7c44718d 100644 --- a/client/executor/runtime-test/Cargo.toml +++ b/client/executor/runtime-test/Cargo.toml @@ -10,12 +10,12 @@ homepage = "https://substrate.dev" repository = "https://github.com/paritytech/substrate/" [dependencies] -sp-std = { version = "2.0.0-alpha.1", default-features = false, path = "../../../primitives/std" } -sp-io = { version = "2.0.0-alpha.1", default-features = false, path = "../../../primitives/io" } -sp-sandbox = { version = "0.8.0-alpha.1", default-features = false, path = "../../../primitives/sandbox" } -sp-core = { version = "2.0.0-alpha.1", default-features = false, path = "../../../primitives/core" } -sp-runtime = { version = "2.0.0-alpha.1", default-features = false, path = "../../../primitives/runtime" } -sp-allocator = { version = "2.0.0-alpha.1", default-features = false, path = "../../../primitives/allocator" } +sp-std = { version = "2.0.0-alpha.2", default-features = false, path = "../../../primitives/std" } +sp-io = { version = "2.0.0-alpha.2", default-features = false, path = "../../../primitives/io" } +sp-sandbox = { version = "0.8.0-alpha.2", default-features = false, path = "../../../primitives/sandbox" } +sp-core = { version = "2.0.0-alpha.2", default-features = false, path = "../../../primitives/core" } +sp-runtime = { version = "2.0.0-alpha.2", default-features = false, path = "../../../primitives/runtime" } +sp-allocator = { version = "2.0.0-alpha.2", default-features = false, path = "../../../primitives/allocator" } [build-dependencies] wasm-builder-runner = { version = "1.0.5", package = "substrate-wasm-builder-runner", path = "../../../utils/wasm-builder-runner" } diff --git a/client/executor/wasmi/Cargo.toml b/client/executor/wasmi/Cargo.toml index da9c4cb598..ff52d537af 100644 --- a/client/executor/wasmi/Cargo.toml +++ b/client/executor/wasmi/Cargo.toml @@ -1,19 +1,21 @@ [package] name = "sc-executor-wasmi" -version = "0.8.0-alpha.1" +version = "0.8.0-alpha.2" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" homepage = "https://substrate.dev" repository = "https://github.com/paritytech/substrate/" +description = "This crate provides an implementation of `WasmRuntime` that is baked by wasmi." +documentation = "https://docs.rs/sc-execturo-wasmi" [dependencies] log = "0.4.8" wasmi = "0.6.2" parity-wasm = "0.41.0" codec = { package = "parity-scale-codec", version = "1.0.0" } -sc-executor-common = { version = "0.8.0-alpha.1", path = "../common" } -sp-wasm-interface = { version = "2.0.0-alpha.1", path = "../../../primitives/wasm-interface" } -sp-runtime-interface = { version = "2.0.0-alpha.1", path = "../../../primitives/runtime-interface" } -sp-core = { version = "2.0.0-alpha.1", path = "../../../primitives/core" } -sp-allocator = { version = "2.0.0-alpha.1", path = "../../../primitives/allocator" } +sc-executor-common = { version = "0.8.0-alpha.2", path = "../common" } +sp-wasm-interface = { version = "2.0.0-alpha.2", path = "../../../primitives/wasm-interface" } +sp-runtime-interface = { version = "2.0.0-alpha.2", path = "../../../primitives/runtime-interface" } +sp-core = { version = "2.0.0-alpha.2", path = "../../../primitives/core" } +sp-allocator = { version = "2.0.0-alpha.2", path = "../../../primitives/allocator" } diff --git a/client/executor/wasmtime/Cargo.toml b/client/executor/wasmtime/Cargo.toml index 709da35253..f823d28ebf 100644 --- a/client/executor/wasmtime/Cargo.toml +++ b/client/executor/wasmtime/Cargo.toml @@ -1,22 +1,23 @@ [package] name = "sc-executor-wasmtime" -version = "0.8.0-alpha.1" +version = "0.8.0-alpha.2" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" homepage = "https://substrate.dev" repository = "https://github.com/paritytech/substrate/" +description = "Defines a `WasmRuntime` that uses the Wasmtime JIT to execute." [dependencies] log = "0.4.8" wasmi = "0.6.2" parity-wasm = "0.41.0" codec = { package = "parity-scale-codec", version = "1.0.0" } -sc-executor-common = { version = "0.8.0-alpha.1", path = "../common" } -sp-wasm-interface = { version = "2.0.0-alpha.1", path = "../../../primitives/wasm-interface" } -sp-runtime-interface = { version = "2.0.0-alpha.1", path = "../../../primitives/runtime-interface" } -sp-core = { version = "2.0.0-alpha.1", path = "../../../primitives/core" } -sp-allocator = { version = "2.0.0-alpha.1", path = "../../../primitives/allocator" } +sc-executor-common = { version = "0.8.0-alpha.2", path = "../common" } +sp-wasm-interface = { version = "2.0.0-alpha.2", path = "../../../primitives/wasm-interface" } +sp-runtime-interface = { version = "2.0.0-alpha.2", path = "../../../primitives/runtime-interface" } +sp-core = { version = "2.0.0-alpha.2", path = "../../../primitives/core" } +sp-allocator = { version = "2.0.0-alpha.2", path = "../../../primitives/allocator" } wasmtime = "0.11" diff --git a/client/finality-grandpa/Cargo.toml b/client/finality-grandpa/Cargo.toml index 733e5415b8..51c52ddf6e 100644 --- a/client/finality-grandpa/Cargo.toml +++ b/client/finality-grandpa/Cargo.toml @@ -1,14 +1,17 @@ [package] name = "sc-finality-grandpa" -version = "0.8.0-alpha.1" +version = "0.8.0-alpha.2" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" homepage = "https://substrate.dev" repository = "https://github.com/paritytech/substrate/" +description = "Integration of the GRANDPA finality gadget into substrate." +documentation = "https://docs.rs/sc-finality-grandpa" + [dependencies] -fork-tree = { version = "2.0.0-alpha.1", path = "../../utils/fork-tree" } +fork-tree = { version = "2.0.0-alpha.2", path = "../../utils/fork-tree" } futures = "0.3.1" futures-timer = "3.0.1" log = "0.4.8" @@ -16,34 +19,34 @@ parking_lot = "0.10.0" rand = "0.7.2" assert_matches = "1.3.0" parity-scale-codec = { version = "1.0.0", features = ["derive"] } -sp-arithmetic = { version = "2.0.0-alpha.1", path = "../../primitives/arithmetic" } -sp-runtime = { version = "2.0.0-alpha.1", path = "../../primitives/runtime" } -sp-consensus = { version = "0.8.0-alpha.1", path = "../../primitives/consensus/common" } -sp-core = { version = "2.0.0-alpha.1", path = "../../primitives/core" } -sc-telemetry = { version = "2.0.0-alpha.1", path = "../telemetry" } -sc-keystore = { version = "2.0.0-alpha.1", path = "../keystore" } +sp-arithmetic = { version = "2.0.0-alpha.2", path = "../../primitives/arithmetic" } +sp-runtime = { version = "2.0.0-alpha.2", path = "../../primitives/runtime" } +sp-consensus = { version = "0.8.0-alpha.2", path = "../../primitives/consensus/common" } +sp-core = { version = "2.0.0-alpha.2", path = "../../primitives/core" } +sc-telemetry = { version = "2.0.0-alpha.2", path = "../telemetry" } +sc-keystore = { version = "2.0.0-alpha.2", path = "../keystore" } serde_json = "1.0.41" -sc-client-api = { version = "2.0.0-alpha.1", path = "../api" } -sc-client = { version = "0.8.0-alpha.1", path = "../" } -sp-inherents = { version = "2.0.0-alpha.1", path = "../../primitives/inherents" } -sp-blockchain = { version = "2.0.0-alpha.1", path = "../../primitives/blockchain" } -sc-network = { version = "0.8.0-alpha.1", path = "../network" } -sc-network-gossip = { version = "0.8.0-alpha.1", path = "../network-gossip" } -sp-finality-tracker = { version = "2.0.0-alpha.1", path = "../../primitives/finality-tracker" } -sp-finality-grandpa = { version = "2.0.0-alpha.1", path = "../../primitives/finality-grandpa" } +sc-client-api = { version = "2.0.0-alpha.2", path = "../api" } +sc-client = { version = "0.8.0-alpha.2", path = "../" } +sp-inherents = { version = "2.0.0-alpha.2", path = "../../primitives/inherents" } +sp-blockchain = { version = "2.0.0-alpha.2", path = "../../primitives/blockchain" } +sc-network = { version = "0.8.0-alpha.2", path = "../network" } +sc-network-gossip = { version = "0.8.0-alpha.2", path = "../network-gossip" } +sp-finality-tracker = { version = "2.0.0-alpha.2", path = "../../primitives/finality-tracker" } +sp-finality-grandpa = { version = "2.0.0-alpha.2", path = "../../primitives/finality-grandpa" } finality-grandpa = { version = "0.11.1", features = ["derive-codec"] } pin-project = "0.4.6" [dev-dependencies] finality-grandpa = { version = "0.11.1", features = ["derive-codec", "test-helpers"] } -sc-network = { version = "0.8.0-alpha.1", path = "../network" } +sc-network = { version = "0.8.0-alpha.2", path = "../network" } sc-network-test = { version = "0.8.0-dev", path = "../network/test" } -sp-keyring = { version = "2.0.0-alpha.1", path = "../../primitives/keyring" } +sp-keyring = { version = "2.0.0-alpha.2", path = "../../primitives/keyring" } substrate-test-runtime-client = { version = "2.0.0-dev", path = "../../test-utils/runtime/client" } -sp-consensus-babe = { version = "0.8.0-alpha.1", path = "../../primitives/consensus/babe" } -sp-state-machine = { version = "0.8.0-alpha.1", path = "../../primitives/state-machine" } +sp-consensus-babe = { version = "0.8.0-alpha.2", path = "../../primitives/consensus/babe" } +sp-state-machine = { version = "0.8.0-alpha.2", path = "../../primitives/state-machine" } env_logger = "0.7.0" tokio = "0.1.22" tempfile = "3.1.0" -sp-api = { version = "2.0.0-alpha.1", path = "../../primitives/api" } +sp-api = { version = "2.0.0-alpha.2", path = "../../primitives/api" } futures01 = { package = "futures", version = "0.1.29" } diff --git a/client/informant/Cargo.toml b/client/informant/Cargo.toml index c7a6c08432..a7dc6fa70a 100644 --- a/client/informant/Cargo.toml +++ b/client/informant/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "sc-informant" -version = "0.8.0-alpha.1" +version = "0.8.0-alpha.2" authors = ["Parity Technologies "] description = "Substrate informant." edition = "2018" @@ -14,8 +14,8 @@ futures = "0.3.1" log = "0.4.8" parity-util-mem = { version = "0.5.1", default-features = false, features = ["primitive-types"] } wasm-timer = "0.2" -sc-client-api = { version = "2.0.0-alpha.1", path = "../api" } -sc-network = { version = "0.8.0-alpha.1", path = "../network" } -sc-service = { version = "0.8.0-alpha.1", default-features = false, path = "../service" } -sp-blockchain = { version = "2.0.0-alpha.1", path = "../../primitives/blockchain" } -sp-runtime = { version = "2.0.0-alpha.1", path = "../../primitives/runtime" } +sc-client-api = { version = "2.0.0-alpha.2", path = "../api" } +sc-network = { version = "0.8.0-alpha.2", path = "../network" } +sc-service = { version = "0.8.0-alpha.2", default-features = false, path = "../service" } +sp-blockchain = { version = "2.0.0-alpha.2", path = "../../primitives/blockchain" } +sp-runtime = { version = "2.0.0-alpha.2", path = "../../primitives/runtime" } diff --git a/client/keystore/Cargo.toml b/client/keystore/Cargo.toml index d96b2db69a..13d72746ba 100644 --- a/client/keystore/Cargo.toml +++ b/client/keystore/Cargo.toml @@ -1,16 +1,19 @@ [package] name = "sc-keystore" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" homepage = "https://substrate.dev" repository = "https://github.com/paritytech/substrate/" +description = "Keystore (and session key management) for ed25519 based chains like Polkadot." +documentation = "https://docs.rs/sc-keystore" + [dependencies] derive_more = "0.99.2" -sp-core = { version = "2.0.0-alpha.1", path = "../../primitives/core" } -sp-application-crypto = { version = "2.0.0-alpha.1", path = "../../primitives/application-crypto" } +sp-core = { version = "2.0.0-alpha.2", path = "../../primitives/core" } +sp-application-crypto = { version = "2.0.0-alpha.2", path = "../../primitives/application-crypto" } hex = "0.4.0" rand = "0.7.2" serde_json = "1.0.41" diff --git a/client/network-gossip/Cargo.toml b/client/network-gossip/Cargo.toml index e42306c340..b69cf334e9 100644 --- a/client/network-gossip/Cargo.toml +++ b/client/network-gossip/Cargo.toml @@ -1,12 +1,14 @@ [package] description = "Gossiping for the Substrate network protocol" name = "sc-network-gossip" -version = "0.8.0-alpha.1" +version = "0.8.0-alpha.2" license = "GPL-3.0" authors = ["Parity Technologies "] edition = "2018" homepage = "https://substrate.dev" repository = "https://github.com/paritytech/substrate/" +documentation = "https://docs.rs/sc-network-gossip" + [dependencies] futures = "0.3.1" @@ -15,6 +17,6 @@ libp2p = { version = "0.16.1", default-features = false, features = ["libp2p-web log = "0.4.8" lru = "0.4.3" parking_lot = "0.10.0" -sc-network = { version = "0.8.0-alpha.1", path = "../network" } -sp-runtime = { version = "2.0.0-alpha.1", path = "../../primitives/runtime" } +sc-network = { version = "0.8.0-alpha.2", path = "../network" } +sp-runtime = { version = "2.0.0-alpha.2", path = "../../primitives/runtime" } wasm-timer = "0.2" diff --git a/client/network/Cargo.toml b/client/network/Cargo.toml index 2d50146653..44664b2a26 100644 --- a/client/network/Cargo.toml +++ b/client/network/Cargo.toml @@ -1,12 +1,14 @@ [package] description = "Substrate network protocol" name = "sc-network" -version = "0.8.0-alpha.1" +version = "0.8.0-alpha.2" license = "GPL-3.0" authors = ["Parity Technologies "] edition = "2018" homepage = "https://substrate.dev" repository = "https://github.com/paritytech/substrate/" +documentation = "https://docs.rs/sc-network" + [build-dependencies] prost-build = "0.6.1" @@ -19,7 +21,7 @@ derive_more = "0.99.2" either = "1.5.3" erased-serde = "0.3.9" fnv = "1.0.6" -fork-tree = { version = "2.0.0-alpha.1", path = "../../utils/fork-tree" } +fork-tree = { version = "2.0.0-alpha.2", path = "../../utils/fork-tree" } futures = "0.3.1" futures_codec = "0.3.3" futures-timer = "3.0.1" @@ -34,22 +36,22 @@ parking_lot = "0.10.0" prost = "0.6.1" rand = "0.7.2" rustc-hex = "2.0.1" -sc-block-builder = { version = "0.8.0-alpha.1", path = "../block-builder" } -sc-client = { version = "0.8.0-alpha.1", path = "../" } -sc-client-api = { version = "2.0.0-alpha.1", path = "../api" } -sc-peerset = { version = "2.0.0-alpha.1", path = "../peerset" } +sc-block-builder = { version = "0.8.0-alpha.2", path = "../block-builder" } +sc-client = { version = "0.8.0-alpha.2", path = "../" } +sc-client-api = { version = "2.0.0-alpha.2", path = "../api" } +sc-peerset = { version = "2.0.0-alpha.2", path = "../peerset" } pin-project = "0.4.6" serde = { version = "1.0.101", features = ["derive"] } serde_json = "1.0.41" slog = { version = "2.5.2", features = ["nested-values"] } slog_derive = "0.2.0" smallvec = "0.6.10" -sp-arithmetic = { version = "2.0.0-alpha.1", path = "../../primitives/arithmetic" } -sp-blockchain = { version = "2.0.0-alpha.1", path = "../../primitives/blockchain" } -sp-consensus = { version = "0.8.0-alpha.1", path = "../../primitives/consensus/common" } -sp-consensus-babe = { version = "0.8.0-alpha.1", path = "../../primitives/consensus/babe" } -sp-core = { version = "2.0.0-alpha.1", path = "../../primitives/core" } -sp-runtime = { version = "2.0.0-alpha.1", path = "../../primitives/runtime" } +sp-arithmetic = { version = "2.0.0-alpha.2", path = "../../primitives/arithmetic" } +sp-blockchain = { version = "2.0.0-alpha.2", path = "../../primitives/blockchain" } +sp-consensus = { version = "0.8.0-alpha.2", path = "../../primitives/consensus/common" } +sp-consensus-babe = { version = "0.8.0-alpha.2", path = "../../primitives/consensus/babe" } +sp-core = { version = "2.0.0-alpha.2", path = "../../primitives/core" } +sp-runtime = { version = "2.0.0-alpha.2", path = "../../primitives/runtime" } thiserror = "1" unsigned-varint = { version = "0.3.1", features = ["futures", "futures-codec"] } void = "1.0.2" @@ -61,7 +63,7 @@ assert_matches = "1.3" env_logger = "0.7.0" quickcheck = "0.9.0" rand = "0.7.2" -sp-keyring = { version = "2.0.0-alpha.1", path = "../../primitives/keyring" } +sp-keyring = { version = "2.0.0-alpha.2", path = "../../primitives/keyring" } sp-test-primitives = { version = "2.0.0-dev", path = "../../primitives/test-primitives" } substrate-test-runtime = { version = "2.0.0-dev", path = "../../test-utils/runtime" } substrate-test-runtime-client = { version = "2.0.0-dev", path = "../../test-utils/runtime/client" } diff --git a/client/network/test/Cargo.toml b/client/network/test/Cargo.toml index cd9258cc08..54265f1736 100644 --- a/client/network/test/Cargo.toml +++ b/client/network/test/Cargo.toml @@ -10,7 +10,7 @@ homepage = "https://substrate.dev" repository = "https://github.com/paritytech/substrate/" [dependencies] -sc-network = { version = "0.8.0-alpha.1", path = "../" } +sc-network = { version = "0.8.0-alpha.2", path = "../" } log = "0.4.8" parking_lot = "0.10.0" futures = "0.1.29" @@ -18,14 +18,14 @@ futures03 = { package = "futures", version = "0.3.1", features = ["compat"] } futures-timer = "3.0.1" rand = "0.7.2" libp2p = { version = "0.16.1", default-features = false, features = ["libp2p-websocket"] } -sp-consensus = { version = "0.8.0-alpha.1", path = "../../../primitives/consensus/common" } -sc-client = { version = "0.8.0-alpha.1", path = "../../" } -sc-client-api = { version = "2.0.0-alpha.1", path = "../../api" } -sp-blockchain = { version = "2.0.0-alpha.1", path = "../../../primitives/blockchain" } -sp-runtime = { version = "2.0.0-alpha.1", path = "../../../primitives/runtime" } -sp-core = { version = "2.0.0-alpha.1", path = "../../../primitives/core" } -sc-block-builder = { version = "0.8.0-alpha.1", path = "../../block-builder" } -sp-consensus-babe = { version = "0.8.0-alpha.1", path = "../../../primitives/consensus/babe" } +sp-consensus = { version = "0.8.0-alpha.2", path = "../../../primitives/consensus/common" } +sc-client = { version = "0.8.0-alpha.2", path = "../../" } +sc-client-api = { version = "2.0.0-alpha.2", path = "../../api" } +sp-blockchain = { version = "2.0.0-alpha.2", path = "../../../primitives/blockchain" } +sp-runtime = { version = "2.0.0-alpha.2", path = "../../../primitives/runtime" } +sp-core = { version = "2.0.0-alpha.2", path = "../../../primitives/core" } +sc-block-builder = { version = "0.8.0-alpha.2", path = "../../block-builder" } +sp-consensus-babe = { version = "0.8.0-alpha.2", path = "../../../primitives/consensus/babe" } env_logger = "0.7.0" substrate-test-runtime-client = { version = "2.0.0-dev", path = "../../../test-utils/runtime/client" } substrate-test-runtime = { version = "2.0.0-dev", path = "../../../test-utils/runtime" } diff --git a/client/offchain/Cargo.toml b/client/offchain/Cargo.toml index ba7cee6811..066be726e8 100644 --- a/client/offchain/Cargo.toml +++ b/client/offchain/Cargo.toml @@ -1,7 +1,7 @@ [package] description = "Substrate offchain workers" name = "sc-offchain" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" license = "GPL-3.0" authors = ["Parity Technologies "] edition = "2018" @@ -10,34 +10,34 @@ repository = "https://github.com/paritytech/substrate/" [dependencies] bytes = "0.5" -sc-client-api = { version = "2.0.0-alpha.1", path = "../api" } -sp-api = { version = "2.0.0-alpha.1", path = "../../primitives/api" } +sc-client-api = { version = "2.0.0-alpha.2", path = "../api" } +sp-api = { version = "2.0.0-alpha.2", path = "../../primitives/api" } fnv = "1.0.6" futures = "0.3.1" futures-timer = "3.0.1" log = "0.4.8" threadpool = "1.7" num_cpus = "1.10" -sp-offchain = { version = "2.0.0-alpha.1", path = "../../primitives/offchain" } +sp-offchain = { version = "2.0.0-alpha.2", path = "../../primitives/offchain" } codec = { package = "parity-scale-codec", version = "1.0.0", features = ["derive"] } parking_lot = "0.10.0" -sp-core = { version = "2.0.0-alpha.1", path = "../../primitives/core" } +sp-core = { version = "2.0.0-alpha.2", path = "../../primitives/core" } rand = "0.7.2" -sp-runtime = { version = "2.0.0-alpha.1", path = "../../primitives/runtime" } -sc-network = { version = "0.8.0-alpha.1", path = "../network" } -sc-keystore = { version = "2.0.0-alpha.1", path = "../keystore" } +sp-runtime = { version = "2.0.0-alpha.2", path = "../../primitives/runtime" } +sc-network = { version = "0.8.0-alpha.2", path = "../network" } +sc-keystore = { version = "2.0.0-alpha.2", path = "../keystore" } [target.'cfg(not(target_os = "unknown"))'.dependencies] hyper = "0.13.2" hyper-rustls = "0.19" [dev-dependencies] -sc-client-db = { version = "0.8.0-alpha.1", default-features = true, path = "../db/" } +sc-client-db = { version = "0.8.0-alpha.2", default-features = true, path = "../db/" } env_logger = "0.7.0" substrate-test-runtime-client = { version = "2.0.0-dev", path = "../../test-utils/runtime/client" } tokio = "0.2" -sc-transaction-pool = { version = "2.0.0-alpha.1", path = "../../client/transaction-pool" } -sp-transaction-pool = { version = "2.0.0-alpha.1", path = "../../primitives/transaction-pool" } +sc-transaction-pool = { version = "2.0.0-alpha.2", path = "../../client/transaction-pool" } +sp-transaction-pool = { version = "2.0.0-alpha.2", path = "../../primitives/transaction-pool" } [features] default = [] diff --git a/client/peerset/Cargo.toml b/client/peerset/Cargo.toml index 2ba10466fb..382a1e0b24 100644 --- a/client/peerset/Cargo.toml +++ b/client/peerset/Cargo.toml @@ -3,10 +3,12 @@ description = "Connectivity manager based on reputation" homepage = "http://parity.io" license = "GPL-3.0" name = "sc-peerset" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" authors = ["Parity Technologies "] edition = "2018" repository = "https://github.com/paritytech/substrate/" +documentation = "https://docs.rs/sc-peerset" + [dependencies] futures = "0.3.1" diff --git a/client/rpc-api/Cargo.toml b/client/rpc-api/Cargo.toml index 7ab70df55c..3fb6afb474 100644 --- a/client/rpc-api/Cargo.toml +++ b/client/rpc-api/Cargo.toml @@ -1,11 +1,12 @@ [package] name = "sc-rpc-api" -version = "0.8.0-alpha.1" +version = "0.8.0-alpha.2" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" homepage = "https://substrate.dev" repository = "https://github.com/paritytech/substrate/" +description = "Substrate RPC interfaces." [dependencies] codec = { package = "parity-scale-codec", version = "1.0.0" } @@ -17,10 +18,10 @@ jsonrpc-derive = "14.0.3" jsonrpc-pubsub = "14.0.3" log = "0.4.8" parking_lot = "0.10.0" -sp-core = { version = "2.0.0-alpha.1", path = "../../primitives/core" } -sp-version = { version = "2.0.0-alpha.1", path = "../../primitives/version" } -sp-runtime = { path = "../../primitives/runtime" , version = "2.0.0-alpha.1"} +sp-core = { version = "2.0.0-alpha.2", path = "../../primitives/core" } +sp-version = { version = "2.0.0-alpha.2", path = "../../primitives/version" } +sp-runtime = { path = "../../primitives/runtime" , version = "2.0.0-alpha.2"} serde = { version = "1.0.101", features = ["derive"] } serde_json = "1.0.41" -sp-transaction-pool = { version = "2.0.0-alpha.1", path = "../../primitives/transaction-pool" } -sp-rpc = { version = "2.0.0-alpha.1", path = "../../primitives/rpc" } +sp-transaction-pool = { version = "2.0.0-alpha.2", path = "../../primitives/transaction-pool" } +sp-rpc = { version = "2.0.0-alpha.2", path = "../../primitives/rpc" } diff --git a/client/rpc-servers/Cargo.toml b/client/rpc-servers/Cargo.toml index 1bec566f52..e2ccff65e6 100644 --- a/client/rpc-servers/Cargo.toml +++ b/client/rpc-servers/Cargo.toml @@ -1,11 +1,12 @@ [package] name = "sc-rpc-server" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" homepage = "https://substrate.dev" repository = "https://github.com/paritytech/substrate/" +description = "Substrate RPC servers." [dependencies] jsonrpc-core = "14.0.3" @@ -13,7 +14,7 @@ pubsub = { package = "jsonrpc-pubsub", version = "14.0.3" } log = "0.4.8" serde = "1.0.101" serde_json = "1.0.41" -sp-runtime = { version = "2.0.0-alpha.1", path = "../../primitives/runtime" } +sp-runtime = { version = "2.0.0-alpha.2", path = "../../primitives/runtime" } [target.'cfg(not(target_os = "unknown"))'.dependencies] http = { package = "jsonrpc-http-server", version = "14.0.3" } diff --git a/client/rpc/Cargo.toml b/client/rpc/Cargo.toml index d4f618f006..3fb0360601 100644 --- a/client/rpc/Cargo.toml +++ b/client/rpc/Cargo.toml @@ -1,43 +1,44 @@ [package] name = "sc-rpc" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" homepage = "https://substrate.dev" repository = "https://github.com/paritytech/substrate/" +description = "Substrate Client RPC" [dependencies] -sc-rpc-api = { version = "0.8.0-alpha.1", path = "../rpc-api" } -sc-client-api = { version = "2.0.0-alpha.1", path = "../api" } -sc-client = { version = "0.8.0-alpha.1", path = "../" } -sp-api = { version = "2.0.0-alpha.1", path = "../../primitives/api" } +sc-rpc-api = { version = "0.8.0-alpha.2", path = "../rpc-api" } +sc-client-api = { version = "2.0.0-alpha.2", path = "../api" } +sc-client = { version = "0.8.0-alpha.2", path = "../" } +sp-api = { version = "2.0.0-alpha.2", path = "../../primitives/api" } codec = { package = "parity-scale-codec", version = "1.0.0" } futures = { version = "0.3.1", features = ["compat"] } jsonrpc-pubsub = "14.0.3" log = "0.4.8" -sp-core = { version = "2.0.0-alpha.1", path = "../../primitives/core" } +sp-core = { version = "2.0.0-alpha.2", path = "../../primitives/core" } rpc = { package = "jsonrpc-core", version = "14.0.3" } -sp-version = { version = "2.0.0-alpha.1", path = "../../primitives/version" } +sp-version = { version = "2.0.0-alpha.2", path = "../../primitives/version" } serde_json = "1.0.41" -sp-session = { version = "2.0.0-alpha.1", path = "../../primitives/session" } -sp-offchain = { version = "2.0.0-alpha.1", path = "../../primitives/offchain" } -sp-runtime = { version = "2.0.0-alpha.1", path = "../../primitives/runtime" } -sp-rpc = { version = "2.0.0-alpha.1", path = "../../primitives/rpc" } -sp-state-machine = { version = "0.8.0-alpha.1", path = "../../primitives/state-machine" } -sc-executor = { version = "0.8.0-alpha.1", path = "../executor" } -sc-keystore = { version = "2.0.0-alpha.1", path = "../keystore" } -sp-transaction-pool = { version = "2.0.0-alpha.1", path = "../../primitives/transaction-pool" } -sp-blockchain = { version = "2.0.0-alpha.1", path = "../../primitives/blockchain" } +sp-session = { version = "2.0.0-alpha.2", path = "../../primitives/session" } +sp-offchain = { version = "2.0.0-alpha.2", path = "../../primitives/offchain" } +sp-runtime = { version = "2.0.0-alpha.2", path = "../../primitives/runtime" } +sp-rpc = { version = "2.0.0-alpha.2", path = "../../primitives/rpc" } +sp-state-machine = { version = "0.8.0-alpha.2", path = "../../primitives/state-machine" } +sc-executor = { version = "0.8.0-alpha.2", path = "../executor" } +sc-keystore = { version = "2.0.0-alpha.2", path = "../keystore" } +sp-transaction-pool = { version = "2.0.0-alpha.2", path = "../../primitives/transaction-pool" } +sp-blockchain = { version = "2.0.0-alpha.2", path = "../../primitives/blockchain" } hash-db = { version = "0.15.2", default-features = false } parking_lot = "0.10.0" [dev-dependencies] assert_matches = "1.3.0" futures01 = { package = "futures", version = "0.1.29" } -sc-network = { version = "0.8.0-alpha.1", path = "../network" } +sc-network = { version = "0.8.0-alpha.2", path = "../network" } rustc-hex = "2.0.1" -sp-io = { version = "2.0.0-alpha.1", path = "../../primitives/io" } +sp-io = { version = "2.0.0-alpha.2", path = "../../primitives/io" } substrate-test-runtime-client = { version = "2.0.0-dev", path = "../../test-utils/runtime/client" } tokio = "0.1.22" -sc-transaction-pool = { version = "2.0.0-alpha.1", path = "../transaction-pool" } +sc-transaction-pool = { version = "2.0.0-alpha.2", path = "../transaction-pool" } diff --git a/client/service/Cargo.toml b/client/service/Cargo.toml index 53c7739b09..462b77bcb0 100644 --- a/client/service/Cargo.toml +++ b/client/service/Cargo.toml @@ -1,11 +1,12 @@ [package] name = "sc-service" -version = "0.8.0-alpha.1" +version = "0.8.0-alpha.2" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" homepage = "https://substrate.dev" repository = "https://github.com/paritytech/substrate/" +description = "Substrate service. Starts a thread that spins up the network, client, and extrinsic pool. Manages communication between them." [features] default = ["rocksdb"] @@ -32,37 +33,37 @@ serde = "1.0.101" serde_json = "1.0.41" sysinfo = "0.9.5" target_info = "0.1.0" -sc-keystore = { version = "2.0.0-alpha.1", path = "../keystore" } -sp-io = { version = "2.0.0-alpha.1", path = "../../primitives/io" } -sp-runtime = { version = "2.0.0-alpha.1", path = "../../primitives/runtime" } -sp-blockchain = { version = "2.0.0-alpha.1", path = "../../primitives/blockchain" } -sp-core = { version = "2.0.0-alpha.1", path = "../../primitives/core" } -sp-session = { version = "2.0.0-alpha.1", path = "../../primitives/session" } -sp-application-crypto = { version = "2.0.0-alpha.1", path = "../../primitives/application-crypto" } -sp-consensus = { version = "0.8.0-alpha.1", path = "../../primitives/consensus/common" } -sc-network = { version = "0.8.0-alpha.1", path = "../network" } -sc-chain-spec = { version = "2.0.0-alpha.1", path = "../chain-spec" } -sc-client-api = { version = "2.0.0-alpha.1", path = "../api" } -sc-client = { version = "0.8.0-alpha.1", path = "../" } -sp-api = { version = "2.0.0-alpha.1", path = "../../primitives/api" } -sc-client-db = { version = "0.8.0-alpha.1", path = "../db" } +sc-keystore = { version = "2.0.0-alpha.2", path = "../keystore" } +sp-io = { version = "2.0.0-alpha.2", path = "../../primitives/io" } +sp-runtime = { version = "2.0.0-alpha.2", path = "../../primitives/runtime" } +sp-blockchain = { version = "2.0.0-alpha.2", path = "../../primitives/blockchain" } +sp-core = { version = "2.0.0-alpha.2", path = "../../primitives/core" } +sp-session = { version = "2.0.0-alpha.2", path = "../../primitives/session" } +sp-application-crypto = { version = "2.0.0-alpha.2", path = "../../primitives/application-crypto" } +sp-consensus = { version = "0.8.0-alpha.2", path = "../../primitives/consensus/common" } +sc-network = { version = "0.8.0-alpha.2", path = "../network" } +sc-chain-spec = { version = "2.0.0-alpha.2", path = "../chain-spec" } +sc-client-api = { version = "2.0.0-alpha.2", path = "../api" } +sc-client = { version = "0.8.0-alpha.2", path = "../" } +sp-api = { version = "2.0.0-alpha.2", path = "../../primitives/api" } +sc-client-db = { version = "0.8.0-alpha.2", path = "../db" } codec = { package = "parity-scale-codec", version = "1.0.0" } -sc-executor = { version = "0.8.0-alpha.1", path = "../executor" } -sc-transaction-pool = { version = "2.0.0-alpha.1", path = "../transaction-pool" } -sp-transaction-pool = { version = "2.0.0-alpha.1", path = "../../primitives/transaction-pool" } -sc-rpc-server = { version = "2.0.0-alpha.1", path = "../rpc-servers" } -sc-rpc = { version = "2.0.0-alpha.1", path = "../rpc" } -sc-telemetry = { version = "2.0.0-alpha.1", path = "../telemetry" } -sc-offchain = { version = "2.0.0-alpha.1", path = "../offchain" } +sc-executor = { version = "0.8.0-alpha.2", path = "../executor" } +sc-transaction-pool = { version = "2.0.0-alpha.2", path = "../transaction-pool" } +sp-transaction-pool = { version = "2.0.0-alpha.2", path = "../../primitives/transaction-pool" } +sc-rpc-server = { version = "2.0.0-alpha.2", path = "../rpc-servers" } +sc-rpc = { version = "2.0.0-alpha.2", path = "../rpc" } +sc-telemetry = { version = "2.0.0-alpha.2", path = "../telemetry" } +sc-offchain = { version = "2.0.0-alpha.2", path = "../offchain" } parity-multiaddr = { package = "parity-multiaddr", version = "0.5.0" } -prometheus-exporter = { path = "../../utils/prometheus" , version = "0.8.0-alpha.1"} -sc-tracing = { version = "2.0.0-alpha.1", path = "../tracing" } +prometheus-exporter = { path = "../../utils/prometheus" , version = "0.8.0-alpha.2"} +sc-tracing = { version = "2.0.0-alpha.2", path = "../tracing" } tracing = "0.1.10" parity-util-mem = { version = "0.5.1", default-features = false, features = ["primitive-types"] } [dev-dependencies] substrate-test-runtime-client = { version = "2.0.0-dev", path = "../../test-utils/runtime/client" } -sp-consensus-babe = { version = "0.8.0-alpha.1", path = "../../primitives/consensus/babe" } -grandpa = { version = "0.8.0-alpha.1", package = "sc-finality-grandpa", path = "../finality-grandpa" } -grandpa-primitives = { version = "2.0.0-alpha.1", package = "sp-finality-grandpa", path = "../../primitives/finality-grandpa" } +sp-consensus-babe = { version = "0.8.0-alpha.2", path = "../../primitives/consensus/babe" } +grandpa = { version = "0.8.0-alpha.2", package = "sc-finality-grandpa", path = "../finality-grandpa" } +grandpa-primitives = { version = "2.0.0-alpha.2", package = "sp-finality-grandpa", path = "../../primitives/finality-grandpa" } tokio = { version = "0.2", features = ["rt-core"] } diff --git a/client/service/test/Cargo.toml b/client/service/test/Cargo.toml index 80683ab89e..f27f880330 100644 --- a/client/service/test/Cargo.toml +++ b/client/service/test/Cargo.toml @@ -16,10 +16,10 @@ log = "0.4.8" env_logger = "0.7.0" fdlimit = "0.1.1" futures = { version = "0.3.1", features = ["compat"] } -sc-service = { version = "0.8.0-alpha.1", default-features = false, path = "../../service" } -sc-network = { version = "0.8.0-alpha.1", path = "../../network" } -sp-consensus = { version = "0.8.0-alpha.1", path = "../../../primitives/consensus/common" } -sc-client = { version = "0.8.0-alpha.1", path = "../../" } -sp-runtime = { version = "2.0.0-alpha.1", path = "../../../primitives/runtime" } -sp-core = { version = "2.0.0-alpha.1", path = "../../../primitives/core" } -sp-transaction-pool = { version = "2.0.0-alpha.1", path = "../../../primitives/transaction-pool" } +sc-service = { version = "0.8.0-alpha.2", default-features = false, path = "../../service" } +sc-network = { version = "0.8.0-alpha.2", path = "../../network" } +sp-consensus = { version = "0.8.0-alpha.2", path = "../../../primitives/consensus/common" } +sc-client = { version = "0.8.0-alpha.2", path = "../../" } +sp-runtime = { version = "2.0.0-alpha.2", path = "../../../primitives/runtime" } +sp-core = { version = "2.0.0-alpha.2", path = "../../../primitives/core" } +sp-transaction-pool = { version = "2.0.0-alpha.2", path = "../../../primitives/transaction-pool" } diff --git a/client/state-db/Cargo.toml b/client/state-db/Cargo.toml index 84ab262162..3f1c4b0cf6 100644 --- a/client/state-db/Cargo.toml +++ b/client/state-db/Cargo.toml @@ -1,16 +1,17 @@ [package] name = "sc-state-db" -version = "0.8.0-alpha.1" +version = "0.8.0-alpha.2" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" homepage = "https://substrate.dev" repository = "https://github.com/paritytech/substrate/" +description = "State database maintenance. Handles canonicalization and pruning in the database." [dependencies] parking_lot = "0.10.0" log = "0.4.8" -sp-core = { version = "2.0.0-alpha.1", path = "../../primitives/core" } +sp-core = { version = "2.0.0-alpha.2", path = "../../primitives/core" } codec = { package = "parity-scale-codec", version = "1.0.0", features = ["derive"] } [dev-dependencies] diff --git a/client/telemetry/Cargo.toml b/client/telemetry/Cargo.toml index 7ba8abafba..2b209e5284 100644 --- a/client/telemetry/Cargo.toml +++ b/client/telemetry/Cargo.toml @@ -1,12 +1,14 @@ [package] name = "sc-telemetry" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" authors = ["Parity Technologies "] description = "Telemetry utils" edition = "2018" license = "GPL-3.0" homepage = "https://substrate.dev" repository = "https://github.com/paritytech/substrate/" +documentation = "https://docs.rs/sc-telemetry" + [dependencies] bytes = "0.5" diff --git a/client/tracing/Cargo.toml b/client/tracing/Cargo.toml index e508c728f3..7201248a6a 100644 --- a/client/tracing/Cargo.toml +++ b/client/tracing/Cargo.toml @@ -1,11 +1,12 @@ [package] name = "sc-tracing" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" license = "GPL-3.0" authors = ["Parity Technologies "] edition = "2018" homepage = "https://substrate.dev" repository = "https://github.com/paritytech/substrate/" +description = "Instrumentation implementation for substrate." [dependencies] erased-serde = "0.3.9" @@ -16,7 +17,7 @@ serde_json = "1.0.41" slog = { version = "2.5.2", features = ["nested-values"] } tracing-core = "0.1.7" -sc-telemetry = { version = "2.0.0-alpha.1", path = "../telemetry" } +sc-telemetry = { version = "2.0.0-alpha.2", path = "../telemetry" } [dev-dependencies] tracing = "0.1.10" diff --git a/client/transaction-pool/Cargo.toml b/client/transaction-pool/Cargo.toml index 025fcec881..e3170d585e 100644 --- a/client/transaction-pool/Cargo.toml +++ b/client/transaction-pool/Cargo.toml @@ -1,11 +1,12 @@ [package] name = "sc-transaction-pool" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" homepage = "https://substrate.dev" repository = "https://github.com/paritytech/substrate/" +description = "Substrate transaction pool implementation." [dependencies] codec = { package = "parity-scale-codec", version = "1.0.0" } @@ -15,17 +16,17 @@ futures-diagnose = "1.0" log = "0.4.8" parking_lot = "0.10.0" wasm-timer = "0.2" -sp-core = { version = "2.0.0-alpha.1", path = "../../primitives/core" } -sp-api = { version = "2.0.0-alpha.1", path = "../../primitives/api" } -sp-runtime = { version = "2.0.0-alpha.1", path = "../../primitives/runtime" } -sc-transaction-graph = { version = "2.0.0-alpha.1", path = "./graph" } -sp-transaction-pool = { version = "2.0.0-alpha.1", path = "../../primitives/transaction-pool" } -sc-client-api = { version = "2.0.0-alpha.1", path = "../api" } -sp-blockchain = { version = "2.0.0-alpha.1", path = "../../primitives/blockchain" } +sp-core = { version = "2.0.0-alpha.2", path = "../../primitives/core" } +sp-api = { version = "2.0.0-alpha.2", path = "../../primitives/api" } +sp-runtime = { version = "2.0.0-alpha.2", path = "../../primitives/runtime" } +sc-transaction-graph = { version = "2.0.0-alpha.2", path = "./graph" } +sp-transaction-pool = { version = "2.0.0-alpha.2", path = "../../primitives/transaction-pool" } +sc-client-api = { version = "2.0.0-alpha.2", path = "../api" } +sp-blockchain = { version = "2.0.0-alpha.2", path = "../../primitives/blockchain" } futures-timer = "2.0" parity-util-mem = { version = "0.5.1", default-features = false, features = ["primitive-types"] } [dev-dependencies] -sp-keyring = { version = "2.0.0-alpha.1", path = "../../primitives/keyring" } +sp-keyring = { version = "2.0.0-alpha.2", path = "../../primitives/keyring" } substrate-test-runtime-transaction-pool = { version = "2.0.0-dev", path = "../../test-utils/runtime/transaction-pool" } substrate-test-runtime-client = { version = "2.0.0-dev", path = "../../test-utils/runtime/client" } diff --git a/client/transaction-pool/graph/Cargo.toml b/client/transaction-pool/graph/Cargo.toml index ba290dc616..6b79092192 100644 --- a/client/transaction-pool/graph/Cargo.toml +++ b/client/transaction-pool/graph/Cargo.toml @@ -1,11 +1,12 @@ [package] name = "sc-transaction-graph" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" homepage = "https://substrate.dev" repository = "https://github.com/paritytech/substrate/" +description = "Generic Transaction Pool" [dependencies] derive_more = "0.99.2" @@ -14,10 +15,10 @@ log = "0.4.8" parking_lot = "0.10.0" serde = { version = "1.0.101", features = ["derive"] } wasm-timer = "0.2" -sp-blockchain = { version = "2.0.0-alpha.1", path = "../../../primitives/blockchain" } -sp-core = { version = "2.0.0-alpha.1", path = "../../../primitives/core" } -sp-runtime = { version = "2.0.0-alpha.1", path = "../../../primitives/runtime" } -sp-transaction-pool = { version = "2.0.0-alpha.1", path = "../../../primitives/transaction-pool" } +sp-blockchain = { version = "2.0.0-alpha.2", path = "../../../primitives/blockchain" } +sp-core = { version = "2.0.0-alpha.2", path = "../../../primitives/core" } +sp-runtime = { version = "2.0.0-alpha.2", path = "../../../primitives/runtime" } +sp-transaction-pool = { version = "2.0.0-alpha.2", path = "../../../primitives/transaction-pool" } parity-util-mem = { version = "0.5.1", default-features = false, features = ["primitive-types"] } linked-hash-map = "0.5.2" diff --git a/frame/assets/Cargo.toml b/frame/assets/Cargo.toml index f9121d9d02..89f9a18887 100644 --- a/frame/assets/Cargo.toml +++ b/frame/assets/Cargo.toml @@ -1,26 +1,27 @@ [package] name = "pallet-assets" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" homepage = "https://substrate.dev" repository = "https://github.com/paritytech/substrate/" +description = "FRAME asset management pallet" [dependencies] serde = { version = "1.0.101", optional = true } codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false } # Needed for various traits. In our case, `OnFinalize`. -sp-runtime = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/runtime" } +sp-runtime = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/runtime" } # Needed for type-safe access to storage DB. -frame-support = { version = "2.0.0-alpha.1", default-features = false, path = "../support" } +frame-support = { version = "2.0.0-alpha.2", default-features = false, path = "../support" } # `system` module provides us with all sorts of useful stuff and macros depend on it being around. -frame-system = { version = "2.0.0-alpha.1", default-features = false, path = "../system" } +frame-system = { version = "2.0.0-alpha.2", default-features = false, path = "../system" } [dev-dependencies] -sp-core = { version = "2.0.0-alpha.1", path = "../../primitives/core" } -sp-std = { version = "2.0.0-alpha.1", path = "../../primitives/std" } -sp-io = { version = "2.0.0-alpha.1", path = "../../primitives/io" } +sp-core = { version = "2.0.0-alpha.2", path = "../../primitives/core" } +sp-std = { version = "2.0.0-alpha.2", path = "../../primitives/std" } +sp-io = { version = "2.0.0-alpha.2", path = "../../primitives/io" } [features] default = ["std"] diff --git a/frame/aura/Cargo.toml b/frame/aura/Cargo.toml index 8e2da7547c..8a0bb4c094 100644 --- a/frame/aura/Cargo.toml +++ b/frame/aura/Cargo.toml @@ -1,27 +1,28 @@ [package] name = "pallet-aura" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" homepage = "https://substrate.dev" repository = "https://github.com/paritytech/substrate/" +description = "FRAME AURA consensus pallet" [dependencies] -sp-application-crypto = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/application-crypto" } +sp-application-crypto = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/application-crypto" } codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } -sp-inherents = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/inherents" } -sp-core = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/core" } -sp-std = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/std" } +sp-inherents = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/inherents" } +sp-core = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/core" } +sp-std = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/std" } serde = { version = "1.0.101", optional = true } -pallet-session = { version = "2.0.0-alpha.1", default-features = false, path = "../session" } -sp-runtime = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/runtime" } -sp-io ={ path = "../../primitives/io", default-features = false , version = "2.0.0-alpha.1"} -frame-support = { version = "2.0.0-alpha.1", default-features = false, path = "../support" } -sp-consensus-aura = { path = "../../primitives/consensus/aura", default-features = false, version = "0.8.0-alpha.1"} -frame-system = { version = "2.0.0-alpha.1", default-features = false, path = "../system" } -sp-timestamp = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/timestamp" } -pallet-timestamp = { version = "2.0.0-alpha.1", default-features = false, path = "../timestamp" } +pallet-session = { version = "2.0.0-alpha.2", default-features = false, path = "../session" } +sp-runtime = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/runtime" } +sp-io ={ path = "../../primitives/io", default-features = false , version = "2.0.0-alpha.2"} +frame-support = { version = "2.0.0-alpha.2", default-features = false, path = "../support" } +sp-consensus-aura = { path = "../../primitives/consensus/aura", default-features = false, version = "0.8.0-alpha.2"} +frame-system = { version = "2.0.0-alpha.2", default-features = false, path = "../system" } +sp-timestamp = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/timestamp" } +pallet-timestamp = { version = "2.0.0-alpha.2", default-features = false, path = "../timestamp" } [dev-dependencies] diff --git a/frame/authority-discovery/Cargo.toml b/frame/authority-discovery/Cargo.toml index 7d79bf20f3..4d2a6642e3 100644 --- a/frame/authority-discovery/Cargo.toml +++ b/frame/authority-discovery/Cargo.toml @@ -1,27 +1,28 @@ [package] name = "pallet-authority-discovery" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" homepage = "https://substrate.dev" repository = "https://github.com/paritytech/substrate/" +description = "FRAME pallet for authority discovery" [dependencies] -sp-authority-discovery = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/authority-discovery" } -sp-application-crypto = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/application-crypto" } +sp-authority-discovery = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/authority-discovery" } +sp-application-crypto = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/application-crypto" } codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } -sp-core = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/core" } -sp-std = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/std" } +sp-core = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/core" } +sp-std = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/std" } serde = { version = "1.0.101", optional = true } -sp-io = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/io" } -pallet-session = { version = "2.0.0-alpha.1", features = ["historical" ], path = "../session", default-features = false } -sp-runtime = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/runtime" } -frame-support = { version = "2.0.0-alpha.1", default-features = false, path = "../support" } -frame-system = { version = "2.0.0-alpha.1", default-features = false, path = "../system" } +sp-io = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/io" } +pallet-session = { version = "2.0.0-alpha.2", features = ["historical" ], path = "../session", default-features = false } +sp-runtime = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/runtime" } +frame-support = { version = "2.0.0-alpha.2", default-features = false, path = "../support" } +frame-system = { version = "2.0.0-alpha.2", default-features = false, path = "../system" } [dev-dependencies] -sp-staking = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/staking" } +sp-staking = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/staking" } [features] default = ["std"] diff --git a/frame/authorship/Cargo.toml b/frame/authorship/Cargo.toml index f1d4c734a2..ff91917af9 100644 --- a/frame/authorship/Cargo.toml +++ b/frame/authorship/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "pallet-authorship" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" description = "Block and Uncle Author tracking for the FRAME" authors = ["Parity Technologies "] edition = "2018" @@ -9,15 +9,15 @@ homepage = "https://substrate.dev" repository = "https://github.com/paritytech/substrate/" [dependencies] -sp-core = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/core" } +sp-core = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/core" } codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } -sp-inherents = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/inherents" } -sp-authorship = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/authorship" } -sp-std = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/std" } -sp-runtime = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/runtime" } -frame-support = { version = "2.0.0-alpha.1", default-features = false, path = "../support" } -frame-system = { version = "2.0.0-alpha.1", default-features = false, path = "../system" } -sp-io ={ path = "../../primitives/io", default-features = false , version = "2.0.0-alpha.1"} +sp-inherents = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/inherents" } +sp-authorship = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/authorship" } +sp-std = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/std" } +sp-runtime = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/runtime" } +frame-support = { version = "2.0.0-alpha.2", default-features = false, path = "../support" } +frame-system = { version = "2.0.0-alpha.2", default-features = false, path = "../system" } +sp-io ={ path = "../../primitives/io", default-features = false , version = "2.0.0-alpha.2"} impl-trait-for-tuples = "0.1.3" [features] diff --git a/frame/babe/Cargo.toml b/frame/babe/Cargo.toml index 88e32d6a07..ce769275c9 100644 --- a/frame/babe/Cargo.toml +++ b/frame/babe/Cargo.toml @@ -1,33 +1,34 @@ [package] name = "pallet-babe" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" homepage = "https://substrate.dev" repository = "https://github.com/paritytech/substrate/" +description = "Consensus extension module for BABE consensus. Collects on-chain randomness from VRF outputs and manages epoch transitions." [dependencies] hex-literal = "0.2.1" codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } serde = { version = "1.0.101", optional = true } -sp-inherents = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/inherents" } -sp-std = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/std" } -sp-runtime = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/runtime" } -sp-staking = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/staking" } -frame-support = { version = "2.0.0-alpha.1", default-features = false, path = "../support" } -frame-system = { version = "2.0.0-alpha.1", default-features = false, path = "../system" } -pallet-timestamp = { version = "2.0.0-alpha.1", default-features = false, path = "../timestamp" } -sp-timestamp = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/timestamp" } -pallet-session = { version = "2.0.0-alpha.1", default-features = false, path = "../session" } -sp-consensus-babe = { version = "0.8.0-alpha.1", default-features = false, path = "../../primitives/consensus/babe" } -sp-io ={ path = "../../primitives/io", default-features = false , version = "2.0.0-alpha.1"} +sp-inherents = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/inherents" } +sp-std = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/std" } +sp-runtime = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/runtime" } +sp-staking = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/staking" } +frame-support = { version = "2.0.0-alpha.2", default-features = false, path = "../support" } +frame-system = { version = "2.0.0-alpha.2", default-features = false, path = "../system" } +pallet-timestamp = { version = "2.0.0-alpha.2", default-features = false, path = "../timestamp" } +sp-timestamp = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/timestamp" } +pallet-session = { version = "2.0.0-alpha.2", default-features = false, path = "../session" } +sp-consensus-babe = { version = "0.8.0-alpha.2", default-features = false, path = "../../primitives/consensus/babe" } +sp-io ={ path = "../../primitives/io", default-features = false , version = "2.0.0-alpha.2"} [dev-dependencies] lazy_static = "1.4.0" parking_lot = "0.10.0" -sp-version = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/version" } -sp-core = { version = "2.0.0-alpha.1", path = "../../primitives/core" } +sp-version = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/version" } +sp-core = { version = "2.0.0-alpha.2", path = "../../primitives/core" } substrate-test-runtime = { version = "2.0.0-dev", path = "../../test-utils/runtime" } [features] diff --git a/frame/balances/Cargo.toml b/frame/balances/Cargo.toml index 4356b43e61..bc8c1a23c3 100644 --- a/frame/balances/Cargo.toml +++ b/frame/balances/Cargo.toml @@ -1,25 +1,26 @@ [package] name = "pallet-balances" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" homepage = "https://substrate.dev" repository = "https://github.com/paritytech/substrate/" +description = "FRAME pallet to manage balances" [dependencies] serde = { version = "1.0.101", optional = true } codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } -sp-std = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/std" } -sp-io = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/io" } -sp-runtime = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/runtime" } -frame-benchmarking = { version = "2.0.0-alpha.1", default-features = false, path = "../benchmarking" } -frame-support = { version = "2.0.0-alpha.1", default-features = false, path = "../support" } -frame-system = { version = "2.0.0-alpha.1", default-features = false, path = "../system" } +sp-std = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/std" } +sp-io = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/io" } +sp-runtime = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/runtime" } +frame-benchmarking = { version = "2.0.0-alpha.2", default-features = false, path = "../benchmarking" } +frame-support = { version = "2.0.0-alpha.2", default-features = false, path = "../support" } +frame-system = { version = "2.0.0-alpha.2", default-features = false, path = "../system" } [dev-dependencies] -sp-core = { version = "2.0.0-alpha.1", path = "../../primitives/core" } -pallet-transaction-payment = { version = "2.0.0-alpha.1", path = "../transaction-payment" } +sp-core = { version = "2.0.0-alpha.2", path = "../../primitives/core" } +pallet-transaction-payment = { version = "2.0.0-alpha.2", path = "../transaction-payment" } [features] default = ["std"] diff --git a/frame/benchmarking/Cargo.toml b/frame/benchmarking/Cargo.toml index 72395d5cb1..810d6361dd 100644 --- a/frame/benchmarking/Cargo.toml +++ b/frame/benchmarking/Cargo.toml @@ -1,18 +1,19 @@ [package] name = "frame-benchmarking" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" homepage = "https://substrate.dev" repository = "https://github.com/paritytech/substrate/" +description = "Macro for benchmarking a FRAME runtime." [dependencies] codec = { package = "parity-scale-codec", version = "1.1.2", default-features = false } -sp-api = { version = "2.0.0-alpha.1", path = "../../primitives/api", default-features = false } -sp-runtime-interface = { version = "2.0.0-alpha.1", path = "../../primitives/runtime-interface", default-features = false } -sp-std = { version = "2.0.0-alpha.1", path = "../../primitives/std", default-features = false } -sp-io ={ path = "../../primitives/io", default-features = false , version = "2.0.0-alpha.1"} +sp-api = { version = "2.0.0-alpha.2", path = "../../primitives/api", default-features = false } +sp-runtime-interface = { version = "2.0.0-alpha.2", path = "../../primitives/runtime-interface", default-features = false } +sp-std = { version = "2.0.0-alpha.2", path = "../../primitives/std", default-features = false } +sp-io = { path = "../../primitives/io", default-features = false, version = "2.0.0-alpha.2" } [features] default = [ "std" ] diff --git a/frame/collective/Cargo.toml b/frame/collective/Cargo.toml index ca2f3203d5..14d926827d 100644 --- a/frame/collective/Cargo.toml +++ b/frame/collective/Cargo.toml @@ -1,25 +1,26 @@ [package] name = "pallet-collective" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" homepage = "https://substrate.dev" repository = "https://github.com/paritytech/substrate/" +description = "Collective system: Members of a set of account IDs can make their collective feelings known through dispatched calls from one of two specialized origins." [dependencies] serde = { version = "1.0.101", optional = true } codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } -sp-core = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/core" } -sp-std = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/std" } -sp-io = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/io" } -sp-runtime = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/runtime" } -frame-support = { version = "2.0.0-alpha.1", default-features = false, path = "../support" } -frame-system = { version = "2.0.0-alpha.1", default-features = false, path = "../system" } +sp-core = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/core" } +sp-std = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/std" } +sp-io = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/io" } +sp-runtime = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/runtime" } +frame-support = { version = "2.0.0-alpha.2", default-features = false, path = "../support" } +frame-system = { version = "2.0.0-alpha.2", default-features = false, path = "../system" } [dev-dependencies] hex-literal = "0.2.1" -pallet-balances = { version = "2.0.0-alpha.1", path = "../balances" } +pallet-balances = { version = "2.0.0-alpha.2", path = "../balances" } [features] default = ["std"] diff --git a/frame/contracts/Cargo.toml b/frame/contracts/Cargo.toml index 6feaf59f57..89e93e725f 100644 --- a/frame/contracts/Cargo.toml +++ b/frame/contracts/Cargo.toml @@ -1,11 +1,12 @@ [package] name = "pallet-contracts" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" homepage = "https://substrate.dev" repository = "https://github.com/paritytech/substrate/" +description = "FRAME pallet for WASM contracts" [dependencies] serde = { version = "1.0.101", optional = true, features = ["derive"] } @@ -13,22 +14,22 @@ pwasm-utils = { version = "0.12.0", default-features = false } codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } parity-wasm = { version = "0.41.0", default-features = false } wasmi-validation = { version = "0.3.0", default-features = false } -sp-core = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/core" } -sp-runtime = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/runtime" } -sp-io = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/io" } -sp-std = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/std" } -sp-sandbox = { version = "0.8.0-alpha.1", default-features = false, path = "../../primitives/sandbox" } -frame-support = { version = "2.0.0-alpha.1", default-features = false, path = "../support" } -frame-system = { version = "2.0.0-alpha.1", default-features = false, path = "../system" } -pallet-contracts-primitives = { version = "2.0.0-alpha.1", default-features = false, path = "common" } +sp-core = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/core" } +sp-runtime = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/runtime" } +sp-io = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/io" } +sp-std = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/std" } +sp-sandbox = { version = "0.8.0-alpha.2", default-features = false, path = "../../primitives/sandbox" } +frame-support = { version = "2.0.0-alpha.2", default-features = false, path = "../support" } +frame-system = { version = "2.0.0-alpha.2", default-features = false, path = "../system" } +pallet-contracts-primitives = { version = "2.0.0-alpha.2", default-features = false, path = "common" } [dev-dependencies] wabt = "0.9.2" assert_matches = "1.3.0" hex-literal = "0.2.1" -pallet-balances = { version = "2.0.0-alpha.1", path = "../balances" } -pallet-timestamp = { version = "2.0.0-alpha.1", path = "../timestamp" } -pallet-randomness-collective-flip = { version = "2.0.0-alpha.1", path = "../randomness-collective-flip" } +pallet-balances = { version = "2.0.0-alpha.2", path = "../balances" } +pallet-timestamp = { version = "2.0.0-alpha.2", path = "../timestamp" } +pallet-randomness-collective-flip = { version = "2.0.0-alpha.2", path = "../randomness-collective-flip" } [features] default = ["std"] diff --git a/frame/contracts/common/Cargo.toml b/frame/contracts/common/Cargo.toml index 03a03038d8..753e79c19e 100644 --- a/frame/contracts/common/Cargo.toml +++ b/frame/contracts/common/Cargo.toml @@ -1,17 +1,18 @@ [package] name = "pallet-contracts-primitives" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" homepage = "https://substrate.dev" repository = "https://github.com/paritytech/substrate/" +description = "A crate that hosts a common definitions that are relevant for the pallet-contracts." [dependencies] # This crate should not rely on any of the frame primitives. codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } -sp-std = { version = "2.0.0-alpha.1", default-features = false, path = "../../../primitives/std" } -sp-runtime = { version = "2.0.0-alpha.1", default-features = false, path = "../../../primitives/runtime" } +sp-std = { version = "2.0.0-alpha.2", default-features = false, path = "../../../primitives/std" } +sp-runtime = { version = "2.0.0-alpha.2", default-features = false, path = "../../../primitives/runtime" } [features] default = ["std"] diff --git a/frame/contracts/rpc/Cargo.toml b/frame/contracts/rpc/Cargo.toml index b91e17e608..c026ee6cdd 100644 --- a/frame/contracts/rpc/Cargo.toml +++ b/frame/contracts/rpc/Cargo.toml @@ -1,25 +1,26 @@ [package] name = "pallet-contracts-rpc" -version = "0.8.0-alpha.1" +version = "0.8.0-alpha.2" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" homepage = "https://substrate.dev" repository = "https://github.com/paritytech/substrate/" +description = "Node-specific RPC methods for interaction with contracts." [dependencies] codec = { package = "parity-scale-codec", version = "1.0.0" } jsonrpc-core = "14.0.3" jsonrpc-core-client = "14.0.3" jsonrpc-derive = "14.0.3" -sp-blockchain = { version = "2.0.0-alpha.1", path = "../../../primitives/blockchain" } -sp-core = { version = "2.0.0-alpha.1", path = "../../../primitives/core" } -sp-rpc = { version = "2.0.0-alpha.1", path = "../../../primitives/rpc" } +sp-blockchain = { version = "2.0.0-alpha.2", path = "../../../primitives/blockchain" } +sp-core = { version = "2.0.0-alpha.2", path = "../../../primitives/core" } +sp-rpc = { version = "2.0.0-alpha.2", path = "../../../primitives/rpc" } serde = { version = "1.0.101", features = ["derive"] } -sp-runtime = { version = "2.0.0-alpha.1", path = "../../../primitives/runtime" } -sp-api = { version = "2.0.0-alpha.1", path = "../../../primitives/api" } -pallet-contracts-primitives = { version = "2.0.0-alpha.1", path = "../common" } -pallet-contracts-rpc-runtime-api = { version = "0.8.0-alpha.1", path = "./runtime-api" } +sp-runtime = { version = "2.0.0-alpha.2", path = "../../../primitives/runtime" } +sp-api = { version = "2.0.0-alpha.2", path = "../../../primitives/api" } +pallet-contracts-primitives = { version = "2.0.0-alpha.2", path = "../common" } +pallet-contracts-rpc-runtime-api = { version = "0.8.0-alpha.2", path = "./runtime-api" } [dev-dependencies] serde_json = "1.0.41" diff --git a/frame/contracts/rpc/runtime-api/Cargo.toml b/frame/contracts/rpc/runtime-api/Cargo.toml index c84ab739df..96d3a8116d 100644 --- a/frame/contracts/rpc/runtime-api/Cargo.toml +++ b/frame/contracts/rpc/runtime-api/Cargo.toml @@ -1,18 +1,19 @@ [package] name = "pallet-contracts-rpc-runtime-api" -version = "0.8.0-alpha.1" +version = "0.8.0-alpha.2" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" homepage = "https://substrate.dev" repository = "https://github.com/paritytech/substrate/" +description = "Runtime API definition required by Contracts RPC extensions." [dependencies] -sp-api = { version = "2.0.0-alpha.1", default-features = false, path = "../../../../primitives/api" } +sp-api = { version = "2.0.0-alpha.2", default-features = false, path = "../../../../primitives/api" } codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } -sp-std = { version = "2.0.0-alpha.1", default-features = false, path = "../../../../primitives/std" } -sp-runtime = { version = "2.0.0-alpha.1", default-features = false, path = "../../../../primitives/runtime" } -pallet-contracts-primitives = { version = "2.0.0-alpha.1", default-features = false, path = "../../common" } +sp-std = { version = "2.0.0-alpha.2", default-features = false, path = "../../../../primitives/std" } +sp-runtime = { version = "2.0.0-alpha.2", default-features = false, path = "../../../../primitives/runtime" } +pallet-contracts-primitives = { version = "2.0.0-alpha.2", default-features = false, path = "../../common" } [features] default = ["std"] diff --git a/frame/democracy/Cargo.toml b/frame/democracy/Cargo.toml index 512a4676cb..e62e7a45d9 100644 --- a/frame/democracy/Cargo.toml +++ b/frame/democracy/Cargo.toml @@ -1,25 +1,26 @@ [package] name = "pallet-democracy" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" homepage = "https://substrate.dev" repository = "https://github.com/paritytech/substrate/" +description = "FRAME pallet for democracy" [dependencies] serde = { version = "1.0.101", optional = true, features = ["derive"] } codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } -sp-std = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/std" } -sp-io = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/io" } -sp-runtime = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/runtime" } -frame-support = { version = "2.0.0-alpha.1", default-features = false, path = "../support" } -frame-system = { version = "2.0.0-alpha.1", default-features = false, path = "../system" } +sp-std = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/std" } +sp-io = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/io" } +sp-runtime = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/runtime" } +frame-support = { version = "2.0.0-alpha.2", default-features = false, path = "../support" } +frame-system = { version = "2.0.0-alpha.2", default-features = false, path = "../system" } [dev-dependencies] -sp-core = { version = "2.0.0-alpha.1", path = "../../primitives/core" } -pallet-balances = { version = "2.0.0-alpha.1", path = "../balances" } -sp-storage = { version = "2.0.0-alpha.1", path = "../../primitives/storage" } +sp-core = { version = "2.0.0-alpha.2", path = "../../primitives/core" } +pallet-balances = { version = "2.0.0-alpha.2", path = "../balances" } +sp-storage = { version = "2.0.0-alpha.2", path = "../../primitives/storage" } hex-literal = "0.2.1" [features] diff --git a/frame/elections-phragmen/Cargo.toml b/frame/elections-phragmen/Cargo.toml index 882185bdce..80be82ff2c 100644 --- a/frame/elections-phragmen/Cargo.toml +++ b/frame/elections-phragmen/Cargo.toml @@ -1,26 +1,27 @@ [package] name = "pallet-elections-phragmen" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" homepage = "https://substrate.dev" repository = "https://github.com/paritytech/substrate/" +description = "FRAME election pallet for PHRAGMEN" [dependencies] codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } -sp-runtime = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/runtime" } -sp-phragmen = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/phragmen" } -frame-support = { version = "2.0.0-alpha.1", default-features = false, path = "../support" } -frame-system = { version = "2.0.0-alpha.1", default-features = false, path = "../system" } -sp-std = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/std" } +sp-runtime = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/runtime" } +sp-phragmen = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/phragmen" } +frame-support = { version = "2.0.0-alpha.2", default-features = false, path = "../support" } +frame-system = { version = "2.0.0-alpha.2", default-features = false, path = "../system" } +sp-std = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/std" } [dev-dependencies] -sp-io = { version = "2.0.0-alpha.1", path = "../../primitives/io" } +sp-io = { version = "2.0.0-alpha.2", path = "../../primitives/io" } hex-literal = "0.2.1" -pallet-balances = { version = "2.0.0-alpha.1", path = "../balances" } -sp-core = { version = "2.0.0-alpha.1", path = "../../primitives/core" } -substrate-test-utils = { version = "2.0.0-alpha.1", path = "../../test-utils" } +pallet-balances = { version = "2.0.0-alpha.2", path = "../balances" } +sp-core = { version = "2.0.0-alpha.2", path = "../../primitives/core" } +substrate-test-utils = { version = "2.0.0-alpha.2", path = "../../test-utils" } serde = { version = "1.0.101" } [features] diff --git a/frame/elections/Cargo.toml b/frame/elections/Cargo.toml index 38eec0dc24..81e128da31 100644 --- a/frame/elections/Cargo.toml +++ b/frame/elections/Cargo.toml @@ -1,25 +1,26 @@ [package] name = "pallet-elections" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" homepage = "https://substrate.dev" repository = "https://github.com/paritytech/substrate/" +description = "FRAME pallet for elections" [dependencies] serde = { version = "1.0.101", optional = true } codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } -sp-core = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/core" } -sp-std = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/std" } -sp-io = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/io" } -sp-runtime = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/runtime" } -frame-support = { version = "2.0.0-alpha.1", default-features = false, path = "../support" } -frame-system = { version = "2.0.0-alpha.1", default-features = false, path = "../system" } +sp-core = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/core" } +sp-std = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/std" } +sp-io = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/io" } +sp-runtime = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/runtime" } +frame-support = { version = "2.0.0-alpha.2", default-features = false, path = "../support" } +frame-system = { version = "2.0.0-alpha.2", default-features = false, path = "../system" } [dev-dependencies] hex-literal = "0.2.1" -pallet-balances = { version = "2.0.0-alpha.1", path = "../balances" } +pallet-balances = { version = "2.0.0-alpha.2", path = "../balances" } [features] default = ["std"] diff --git a/frame/evm/Cargo.toml b/frame/evm/Cargo.toml index d521b87270..649d6b778f 100644 --- a/frame/evm/Cargo.toml +++ b/frame/evm/Cargo.toml @@ -1,23 +1,24 @@ [package] name = "pallet-evm" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" homepage = "https://substrate.dev" repository = "https://github.com/paritytech/substrate/" +description = "FRAME EVM contracts pallet" [dependencies] serde = { version = "1.0.101", optional = true, features = ["derive"] } codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false } -frame-support = { version = "2.0.0-alpha.1", default-features = false, path = "../support" } -frame-system = { version = "2.0.0-alpha.1", default-features = false, path = "../system" } -pallet-timestamp = { version = "2.0.0-alpha.1", default-features = false, path = "../timestamp" } -pallet-balances = { version = "2.0.0-alpha.1", default-features = false, path = "../balances" } -sp-core = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/core" } -sp-runtime = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/runtime" } -sp-std = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/std" } -sp-io = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/io" } +frame-support = { version = "2.0.0-alpha.2", default-features = false, path = "../support" } +frame-system = { version = "2.0.0-alpha.2", default-features = false, path = "../system" } +pallet-timestamp = { version = "2.0.0-alpha.2", default-features = false, path = "../timestamp" } +pallet-balances = { version = "2.0.0-alpha.2", default-features = false, path = "../balances" } +sp-core = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/core" } +sp-runtime = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/runtime" } +sp-std = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/std" } +sp-io = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/io" } primitive-types = { version = "0.6.2", default-features = false, features = ["rlp"] } rlp = { version = "0.4", default-features = false } evm = { version = "0.15", default-features = false } diff --git a/frame/example-offchain-worker/Cargo.toml b/frame/example-offchain-worker/Cargo.toml index b10d9cb390..132ef779be 100644 --- a/frame/example-offchain-worker/Cargo.toml +++ b/frame/example-offchain-worker/Cargo.toml @@ -1,21 +1,22 @@ [package] name = "pallet-example-offchain-worker" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" authors = ["Parity Technologies "] edition = "2018" license = "Unlicense" homepage = "https://substrate.dev" repository = "https://github.com/paritytech/substrate/" +description = "FRAME example pallet for offchain worker" [dependencies] codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false } -frame-support = { version = "2.0.0-alpha.1", default-features = false, path = "../support" } -frame-system = { version = "2.0.0-alpha.1", default-features = false, path = "../system" } +frame-support = { version = "2.0.0-alpha.2", default-features = false, path = "../support" } +frame-system = { version = "2.0.0-alpha.2", default-features = false, path = "../system" } serde = { version = "1.0.101", optional = true } -sp-core = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/core" } -sp-io = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/io" } -sp-runtime = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/runtime" } -sp-std = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/std" } +sp-core = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/core" } +sp-io = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/io" } +sp-runtime = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/runtime" } +sp-std = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/std" } serde_json = { version = "1.0.46", default-features = false, features = ["alloc"] } [features] diff --git a/frame/example/Cargo.toml b/frame/example/Cargo.toml index bb6625e892..0062170454 100644 --- a/frame/example/Cargo.toml +++ b/frame/example/Cargo.toml @@ -1,24 +1,25 @@ [package] name = "pallet-example" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" authors = ["Parity Technologies "] edition = "2018" license = "Unlicense" homepage = "https://substrate.dev" repository = "https://github.com/paritytech/substrate/" +description = "FRAME example pallet" [dependencies] serde = { version = "1.0.101", optional = true } codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false } -frame-support = { version = "2.0.0-alpha.1", default-features = false, path = "../support" } -frame-system = { version = "2.0.0-alpha.1", default-features = false, path = "../system" } -pallet-balances = { version = "2.0.0-alpha.1", default-features = false, path = "../balances" } -sp-runtime = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/runtime" } -sp-std = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/std" } -sp-io = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/io" } +frame-support = { version = "2.0.0-alpha.2", default-features = false, path = "../support" } +frame-system = { version = "2.0.0-alpha.2", default-features = false, path = "../system" } +pallet-balances = { version = "2.0.0-alpha.2", default-features = false, path = "../balances" } +sp-runtime = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/runtime" } +sp-std = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/std" } +sp-io = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/io" } [dev-dependencies] -sp-core = { version = "2.0.0-alpha.1", path = "../../primitives/core" } +sp-core = { version = "2.0.0-alpha.2", path = "../../primitives/core" } [features] default = ["std"] diff --git a/frame/executive/Cargo.toml b/frame/executive/Cargo.toml index 8e95998360..63908edba2 100644 --- a/frame/executive/Cargo.toml +++ b/frame/executive/Cargo.toml @@ -1,27 +1,28 @@ [package] name = "frame-executive" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" homepage = "https://substrate.dev" repository = "https://github.com/paritytech/substrate/" +description = "FRAME executives engine" [dependencies] codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } -frame-support = { version = "2.0.0-alpha.1", default-features = false, path = "../support" } -frame-system = { version = "2.0.0-alpha.1", default-features = false, path = "../system" } +frame-support = { version = "2.0.0-alpha.2", default-features = false, path = "../support" } +frame-system = { version = "2.0.0-alpha.2", default-features = false, path = "../system" } serde = { version = "1.0.101", optional = true } -sp-io ={ path = "../../primitives/io", default-features = false , version = "2.0.0-alpha.1"} -sp-runtime = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/runtime" } -sp-std = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/std" } +sp-io ={ path = "../../primitives/io", default-features = false , version = "2.0.0-alpha.2"} +sp-runtime = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/runtime" } +sp-std = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/std" } [dev-dependencies] hex-literal = "0.2.1" -sp-core = { version = "2.0.0-alpha.1", path = "../../primitives/core" } -pallet-indices = { version = "2.0.0-alpha.1", path = "../indices" } -pallet-balances = { version = "2.0.0-alpha.1", path = "../balances" } -pallet-transaction-payment = { version = "2.0.0-alpha.1", path = "../transaction-payment" } +sp-core = { version = "2.0.0-alpha.2", path = "../../primitives/core" } +pallet-indices = { version = "2.0.0-alpha.2", path = "../indices" } +pallet-balances = { version = "2.0.0-alpha.2", path = "../balances" } +pallet-transaction-payment = { version = "2.0.0-alpha.2", path = "../transaction-payment" } [features] default = ["std"] diff --git a/frame/finality-tracker/Cargo.toml b/frame/finality-tracker/Cargo.toml index e9c661ebe6..5ca1bd28a5 100644 --- a/frame/finality-tracker/Cargo.toml +++ b/frame/finality-tracker/Cargo.toml @@ -1,26 +1,29 @@ [package] name = "pallet-finality-tracker" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" homepage = "https://substrate.dev" repository = "https://github.com/paritytech/substrate/" +description = "FRAME Pallet that tracks the last finalized block, as perceived by block authors." +documentation = "https://docs.rs/pallet-finality-tracker" + [dependencies] serde = { version = "1.0.101", default-features = false, features = ["derive"] } codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false } -sp-inherents = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/inherents" } -sp-std = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/std" } -sp-runtime = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/runtime" } -sp-finality-tracker = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/finality-tracker" } -frame-support = { version = "2.0.0-alpha.1", default-features = false, path = "../support" } -frame-system = { version = "2.0.0-alpha.1", default-features = false, path = "../system" } +sp-inherents = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/inherents" } +sp-std = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/std" } +sp-runtime = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/runtime" } +sp-finality-tracker = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/finality-tracker" } +frame-support = { version = "2.0.0-alpha.2", default-features = false, path = "../support" } +frame-system = { version = "2.0.0-alpha.2", default-features = false, path = "../system" } impl-trait-for-tuples = "0.1.3" [dev-dependencies] -sp-core = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/core" } -sp-io = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/io" } +sp-core = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/core" } +sp-io = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/io" } [features] default = ["std"] diff --git a/frame/generic-asset/Cargo.toml b/frame/generic-asset/Cargo.toml index ba79a8c13b..5e48bc8ad7 100644 --- a/frame/generic-asset/Cargo.toml +++ b/frame/generic-asset/Cargo.toml @@ -1,23 +1,24 @@ [package] name = "pallet-generic-asset" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" authors = ["Centrality Developers "] edition = "2018" license = "GPL-3.0" homepage = "https://substrate.dev" repository = "https://github.com/paritytech/substrate/" +description = "FRAME pallet for generic asset management" [dependencies] serde = { version = "1.0.101", optional = true } codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } -sp-std = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/std" } -sp-runtime = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/runtime" } -frame-support = { version = "2.0.0-alpha.1", default-features = false, path = "../support" } -frame-system = { version = "2.0.0-alpha.1", default-features = false, path = "../system" } +sp-std = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/std" } +sp-runtime = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/runtime" } +frame-support = { version = "2.0.0-alpha.2", default-features = false, path = "../support" } +frame-system = { version = "2.0.0-alpha.2", default-features = false, path = "../system" } [dev-dependencies] -sp-io ={ version = "2.0.0-alpha.1", path = "../../primitives/io" } -sp-core = { version = "2.0.0-alpha.1", path = "../../primitives/core" } +sp-io ={ version = "2.0.0-alpha.2", path = "../../primitives/io" } +sp-core = { version = "2.0.0-alpha.2", path = "../../primitives/core" } [features] default = ["std"] diff --git a/frame/grandpa/Cargo.toml b/frame/grandpa/Cargo.toml index a50e3beb32..f458a59a2c 100644 --- a/frame/grandpa/Cargo.toml +++ b/frame/grandpa/Cargo.toml @@ -1,27 +1,28 @@ [package] name = "pallet-grandpa" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" homepage = "https://substrate.dev" repository = "https://github.com/paritytech/substrate/" +description = "FRAME pallet for GRANDPA finality gadget" [dependencies] serde = { version = "1.0.101", optional = true, features = ["derive"] } codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } -sp-core = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/core" } -sp-finality-grandpa = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/finality-grandpa" } -sp-std = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/std" } -sp-runtime = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/runtime" } -sp-staking = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/staking" } -frame-support = { version = "2.0.0-alpha.1", default-features = false, path = "../support" } -frame-system = { version = "2.0.0-alpha.1", default-features = false, path = "../system" } -pallet-session = { version = "2.0.0-alpha.1", default-features = false, path = "../session" } -pallet-finality-tracker = { version = "2.0.0-alpha.1", default-features = false, path = "../finality-tracker" } +sp-core = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/core" } +sp-finality-grandpa = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/finality-grandpa" } +sp-std = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/std" } +sp-runtime = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/runtime" } +sp-staking = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/staking" } +frame-support = { version = "2.0.0-alpha.2", default-features = false, path = "../support" } +frame-system = { version = "2.0.0-alpha.2", default-features = false, path = "../system" } +pallet-session = { version = "2.0.0-alpha.2", default-features = false, path = "../session" } +pallet-finality-tracker = { version = "2.0.0-alpha.2", default-features = false, path = "../finality-tracker" } [dev-dependencies] -sp-io ={ version = "2.0.0-alpha.1", path = "../../primitives/io" } +sp-io ={ version = "2.0.0-alpha.2", path = "../../primitives/io" } [features] default = ["std"] diff --git a/frame/identity/Cargo.toml b/frame/identity/Cargo.toml index b40537f7d2..0cbeb2772b 100644 --- a/frame/identity/Cargo.toml +++ b/frame/identity/Cargo.toml @@ -1,26 +1,27 @@ [package] name = "pallet-identity" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" homepage = "https://substrate.dev" repository = "https://github.com/paritytech/substrate/" +description = "FRAME identity management pallet" [dependencies] serde = { version = "1.0.101", optional = true } codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } enumflags2 = { version = "0.6.2" } -sp-std = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/std" } -sp-io = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/io" } -sp-runtime = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/runtime" } -frame-benchmarking = { version = "2.0.0-alpha.1", default-features = false, path = "../benchmarking" } -frame-support = { version = "2.0.0-alpha.1", default-features = false, path = "../support" } -frame-system = { version = "2.0.0-alpha.1", default-features = false, path = "../system" } +sp-std = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/std" } +sp-io = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/io" } +sp-runtime = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/runtime" } +frame-benchmarking = { version = "2.0.0-alpha.2", default-features = false, path = "../benchmarking" } +frame-support = { version = "2.0.0-alpha.2", default-features = false, path = "../support" } +frame-system = { version = "2.0.0-alpha.2", default-features = false, path = "../system" } [dev-dependencies] -sp-core = { version = "2.0.0-alpha.1", path = "../../primitives/core" } -pallet-balances = { version = "2.0.0-alpha.1", path = "../balances" } +sp-core = { version = "2.0.0-alpha.2", path = "../../primitives/core" } +pallet-balances = { version = "2.0.0-alpha.2", path = "../balances" } [features] default = ["std"] diff --git a/frame/im-online/Cargo.toml b/frame/im-online/Cargo.toml index 269182f458..e1c35af54c 100644 --- a/frame/im-online/Cargo.toml +++ b/frame/im-online/Cargo.toml @@ -1,25 +1,26 @@ [package] name = "pallet-im-online" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" homepage = "https://substrate.dev" repository = "https://github.com/paritytech/substrate/" +description = "FRAME's I'm online pallet" [dependencies] -sp-application-crypto = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/application-crypto" } -pallet-authorship = { version = "2.0.0-alpha.1", default-features = false, path = "../authorship" } +sp-application-crypto = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/application-crypto" } +pallet-authorship = { version = "2.0.0-alpha.2", default-features = false, path = "../authorship" } codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } -sp-core = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/core" } -sp-std = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/std" } +sp-core = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/core" } +sp-std = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/std" } serde = { version = "1.0.101", optional = true } -pallet-session = { version = "2.0.0-alpha.1", default-features = false, path = "../session" } -sp-io = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/io" } -sp-runtime = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/runtime" } -sp-staking = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/staking" } -frame-support = { version = "2.0.0-alpha.1", default-features = false, path = "../support" } -frame-system = { version = "2.0.0-alpha.1", default-features = false, path = "../system" } +pallet-session = { version = "2.0.0-alpha.2", default-features = false, path = "../session" } +sp-io = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/io" } +sp-runtime = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/runtime" } +sp-staking = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/staking" } +frame-support = { version = "2.0.0-alpha.2", default-features = false, path = "../support" } +frame-system = { version = "2.0.0-alpha.2", default-features = false, path = "../system" } [features] default = ["std", "pallet-session/historical"] diff --git a/frame/indices/Cargo.toml b/frame/indices/Cargo.toml index a12ca83176..341b2722dc 100644 --- a/frame/indices/Cargo.toml +++ b/frame/indices/Cargo.toml @@ -1,25 +1,26 @@ [package] name = "pallet-indices" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" homepage = "https://substrate.dev" repository = "https://github.com/paritytech/substrate/" +description = "FRAME indices management pallet" [dependencies] serde = { version = "1.0.101", optional = true } codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } -sp-keyring = { version = "2.0.0-alpha.1", optional = true, path = "../../primitives/keyring" } -sp-std = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/std" } -sp-io = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/io" } -sp-runtime = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/runtime" } -sp-core = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/core" } -frame-support = { version = "2.0.0-alpha.1", default-features = false, path = "../support" } -frame-system = { version = "2.0.0-alpha.1", default-features = false, path = "../system" } +sp-keyring = { version = "2.0.0-alpha.2", optional = true, path = "../../primitives/keyring" } +sp-std = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/std" } +sp-io = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/io" } +sp-runtime = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/runtime" } +sp-core = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/core" } +frame-support = { version = "2.0.0-alpha.2", default-features = false, path = "../support" } +frame-system = { version = "2.0.0-alpha.2", default-features = false, path = "../system" } [dev-dependencies] -pallet-balances = { version = "2.0.0-alpha.1", path = "../balances" } +pallet-balances = { version = "2.0.0-alpha.2", path = "../balances" } [features] default = ["std"] diff --git a/frame/membership/Cargo.toml b/frame/membership/Cargo.toml index 4a66a2b04f..0d89a8038c 100644 --- a/frame/membership/Cargo.toml +++ b/frame/membership/Cargo.toml @@ -1,23 +1,24 @@ [package] name = "pallet-membership" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" homepage = "https://substrate.dev" repository = "https://github.com/paritytech/substrate/" +description = "FRAME membership management pallet" [dependencies] serde = { version = "1.0.101", optional = true } codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false } -sp-std = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/std" } -sp-io = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/io" } -frame-support = { version = "2.0.0-alpha.1", default-features = false, path = "../support" } -frame-system = { version = "2.0.0-alpha.1", default-features = false, path = "../system" } -sp-runtime = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/runtime" } +sp-std = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/std" } +sp-io = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/io" } +frame-support = { version = "2.0.0-alpha.2", default-features = false, path = "../support" } +frame-system = { version = "2.0.0-alpha.2", default-features = false, path = "../system" } +sp-runtime = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/runtime" } [dev-dependencies] -sp-core = { version = "2.0.0-alpha.1", path = "../../primitives/core" } +sp-core = { version = "2.0.0-alpha.2", path = "../../primitives/core" } [features] default = ["std"] diff --git a/frame/metadata/Cargo.toml b/frame/metadata/Cargo.toml index 9b53faed20..2d3160ac01 100644 --- a/frame/metadata/Cargo.toml +++ b/frame/metadata/Cargo.toml @@ -1,17 +1,18 @@ [package] name = "frame-metadata" -version = "11.0.0-alpha.1" +version = "11.0.0-alpha.2" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" homepage = "https://substrate.dev" repository = "https://github.com/paritytech/substrate/" +description = "Decodable variant of the RuntimeMetadata." [dependencies] codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } serde = { version = "1.0.101", optional = true, features = ["derive"] } -sp-std = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/std" } -sp-core = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/core" } +sp-std = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/std" } +sp-core = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/core" } [features] default = ["std"] diff --git a/frame/nicks/Cargo.toml b/frame/nicks/Cargo.toml index ae3249368d..44d9ee4a55 100644 --- a/frame/nicks/Cargo.toml +++ b/frame/nicks/Cargo.toml @@ -1,24 +1,25 @@ [package] name = "pallet-nicks" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" homepage = "https://substrate.dev" repository = "https://github.com/paritytech/substrate/" +description = "FRAME pallet for nick management" [dependencies] serde = { version = "1.0.101", optional = true } codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } -sp-std = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/std" } -sp-io = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/io" } -sp-runtime = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/runtime" } -frame-support = { version = "2.0.0-alpha.1", default-features = false, path = "../support" } -frame-system = { version = "2.0.0-alpha.1", default-features = false, path = "../system" } +sp-std = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/std" } +sp-io = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/io" } +sp-runtime = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/runtime" } +frame-support = { version = "2.0.0-alpha.2", default-features = false, path = "../support" } +frame-system = { version = "2.0.0-alpha.2", default-features = false, path = "../system" } [dev-dependencies] -sp-core = { version = "2.0.0-alpha.1", path = "../../primitives/core" } -pallet-balances = { version = "2.0.0-alpha.1", path = "../balances" } +sp-core = { version = "2.0.0-alpha.2", path = "../../primitives/core" } +pallet-balances = { version = "2.0.0-alpha.2", path = "../balances" } [features] default = ["std"] diff --git a/frame/offences/Cargo.toml b/frame/offences/Cargo.toml index f8301ed488..458bfd0555 100644 --- a/frame/offences/Cargo.toml +++ b/frame/offences/Cargo.toml @@ -1,25 +1,26 @@ [package] name = "pallet-offences" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" homepage = "https://substrate.dev" repository = "https://github.com/paritytech/substrate/" +description = "FRAME offences pallet" [dependencies] -pallet-balances = { version = "2.0.0-alpha.1", default-features = false, path = "../balances" } +pallet-balances = { version = "2.0.0-alpha.2", default-features = false, path = "../balances" } codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } -sp-std = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/std" } +sp-std = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/std" } serde = { version = "1.0.101", optional = true } -sp-runtime = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/runtime" } -sp-staking = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/staking" } -frame-support = { version = "2.0.0-alpha.1", default-features = false, path = "../support" } -frame-system = { version = "2.0.0-alpha.1", default-features = false, path = "../system" } +sp-runtime = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/runtime" } +sp-staking = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/staking" } +frame-support = { version = "2.0.0-alpha.2", default-features = false, path = "../support" } +frame-system = { version = "2.0.0-alpha.2", default-features = false, path = "../system" } [dev-dependencies] -sp-io = { version = "2.0.0-alpha.1", path = "../../primitives/io" } -sp-core = { version = "2.0.0-alpha.1", path = "../../primitives/core" } +sp-io = { version = "2.0.0-alpha.2", path = "../../primitives/io" } +sp-core = { version = "2.0.0-alpha.2", path = "../../primitives/core" } [features] default = ["std"] diff --git a/frame/randomness-collective-flip/Cargo.toml b/frame/randomness-collective-flip/Cargo.toml index dc7e4c18fd..de369b7b88 100644 --- a/frame/randomness-collective-flip/Cargo.toml +++ b/frame/randomness-collective-flip/Cargo.toml @@ -1,23 +1,24 @@ [package] name = "pallet-randomness-collective-flip" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" homepage = "https://substrate.dev" repository = "https://github.com/paritytech/substrate/" +description = "FRAME randomness collective flip pallet" [dependencies] safe-mix = { version = "1.0", default-features = false } codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } -sp-runtime = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/runtime" } -frame-support = { version = "2.0.0-alpha.1", default-features = false, path = "../support" } -frame-system = { version = "2.0.0-alpha.1", default-features = false, path = "../system" } -sp-std = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/std" } +sp-runtime = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/runtime" } +frame-support = { version = "2.0.0-alpha.2", default-features = false, path = "../support" } +frame-system = { version = "2.0.0-alpha.2", default-features = false, path = "../system" } +sp-std = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/std" } [dev-dependencies] -sp-core = { version = "2.0.0-alpha.1", path = "../../primitives/core" } -sp-io = { version = "2.0.0-alpha.1", path = "../../primitives/io" } +sp-core = { version = "2.0.0-alpha.2", path = "../../primitives/core" } +sp-io = { version = "2.0.0-alpha.2", path = "../../primitives/io" } [features] default = ["std"] diff --git a/frame/recovery/Cargo.toml b/frame/recovery/Cargo.toml index bab55baca0..efeb349f06 100644 --- a/frame/recovery/Cargo.toml +++ b/frame/recovery/Cargo.toml @@ -1,25 +1,26 @@ [package] name = "pallet-recovery" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" homepage = "https://substrate.dev" repository = "https://github.com/paritytech/substrate/" +description = "FRAME account recovery pallet" [dependencies] serde = { version = "1.0.101", optional = true } codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } enumflags2 = { version = "0.6.2" } -sp-std = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/std" } -sp-io = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/io" } -sp-runtime = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/runtime" } -frame-support = { version = "2.0.0-alpha.1", default-features = false, path = "../support" } -frame-system = { version = "2.0.0-alpha.1", default-features = false, path = "../system" } +sp-std = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/std" } +sp-io = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/io" } +sp-runtime = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/runtime" } +frame-support = { version = "2.0.0-alpha.2", default-features = false, path = "../support" } +frame-system = { version = "2.0.0-alpha.2", default-features = false, path = "../system" } [dev-dependencies] -sp-core = { version = "2.0.0-alpha.1", path = "../../primitives/core" } -pallet-balances = { version = "2.0.0-alpha.1", path = "../balances" } +sp-core = { version = "2.0.0-alpha.2", path = "../../primitives/core" } +pallet-balances = { version = "2.0.0-alpha.2", path = "../balances" } [features] default = ["std"] diff --git a/frame/scored-pool/Cargo.toml b/frame/scored-pool/Cargo.toml index 106f47a253..36efebd7b4 100644 --- a/frame/scored-pool/Cargo.toml +++ b/frame/scored-pool/Cargo.toml @@ -1,24 +1,25 @@ [package] name = "pallet-scored-pool" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" homepage = "https://substrate.dev" repository = "https://github.com/paritytech/substrate/" +description = "FRAME pallet for scored pools" [dependencies] codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } serde = { version = "1.0.101", optional = true } -sp-io = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/io" } -sp-runtime = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/runtime" } -sp-std = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/std" } -frame-support = { version = "2.0.0-alpha.1", default-features = false, path = "../support" } -frame-system = { version = "2.0.0-alpha.1", default-features = false, path = "../system" } +sp-io = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/io" } +sp-runtime = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/runtime" } +sp-std = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/std" } +frame-support = { version = "2.0.0-alpha.2", default-features = false, path = "../support" } +frame-system = { version = "2.0.0-alpha.2", default-features = false, path = "../system" } [dev-dependencies] -pallet-balances = { version = "2.0.0-alpha.1", path = "../balances" } -sp-core = { version = "2.0.0-alpha.1", path = "../../primitives/core" } +pallet-balances = { version = "2.0.0-alpha.2", path = "../balances" } +sp-core = { version = "2.0.0-alpha.2", path = "../../primitives/core" } [features] default = ["std"] diff --git a/frame/session/Cargo.toml b/frame/session/Cargo.toml index e09a268adb..5d2b3b5fa8 100644 --- a/frame/session/Cargo.toml +++ b/frame/session/Cargo.toml @@ -1,28 +1,29 @@ [package] name = "pallet-session" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" homepage = "https://substrate.dev" repository = "https://github.com/paritytech/substrate/" +description = "FRAME sessions pallet" [dependencies] serde = { version = "1.0.101", optional = true } codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } -sp-std = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/std" } -sp-runtime = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/runtime" } -sp-staking = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/staking" } -frame-support = { version = "2.0.0-alpha.1", default-features = false, path = "../support" } -frame-system = { version = "2.0.0-alpha.1", default-features = false, path = "../system" } -pallet-timestamp = { version = "2.0.0-alpha.1", default-features = false, path = "../timestamp" } -sp-trie = { optional = true, path = "../../primitives/trie", default-features = false , version = "2.0.0-alpha.1"} -sp-io ={ path = "../../primitives/io", default-features = false , version = "2.0.0-alpha.1"} +sp-std = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/std" } +sp-runtime = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/runtime" } +sp-staking = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/staking" } +frame-support = { version = "2.0.0-alpha.2", default-features = false, path = "../support" } +frame-system = { version = "2.0.0-alpha.2", default-features = false, path = "../system" } +pallet-timestamp = { version = "2.0.0-alpha.2", default-features = false, path = "../timestamp" } +sp-trie = { optional = true, path = "../../primitives/trie", default-features = false , version = "2.0.0-alpha.2"} +sp-io ={ path = "../../primitives/io", default-features = false , version = "2.0.0-alpha.2"} impl-trait-for-tuples = "0.1.3" [dev-dependencies] -sp-core = { version = "2.0.0-alpha.1", path = "../../primitives/core" } -sp-application-crypto = { version = "2.0.0-alpha.1", path = "../../primitives/application-crypto" } +sp-core = { version = "2.0.0-alpha.2", path = "../../primitives/core" } +sp-application-crypto = { version = "2.0.0-alpha.2", path = "../../primitives/application-crypto" } lazy_static = "1.4.0" [features] diff --git a/frame/society/Cargo.toml b/frame/society/Cargo.toml index 99c6342242..ef27acb1cb 100644 --- a/frame/society/Cargo.toml +++ b/frame/society/Cargo.toml @@ -1,25 +1,26 @@ [package] name = "pallet-society" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" homepage = "https://substrate.dev" repository = "https://github.com/paritytech/substrate/" +description = "FRAME society pallet" [dependencies] serde = { version = "1.0.101", optional = true } codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } -sp-io ={ path = "../../primitives/io", default-features = false , version = "2.0.0-alpha.1"} -sp-runtime = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/runtime" } -sp-std = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/std" } -frame-support = { version = "2.0.0-alpha.1", default-features = false, path = "../support" } -frame-system = { version = "2.0.0-alpha.1", default-features = false, path = "../system" } +sp-io ={ path = "../../primitives/io", default-features = false , version = "2.0.0-alpha.2"} +sp-runtime = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/runtime" } +sp-std = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/std" } +frame-support = { version = "2.0.0-alpha.2", default-features = false, path = "../support" } +frame-system = { version = "2.0.0-alpha.2", default-features = false, path = "../system" } rand_chacha = { version = "0.2", default-features = false } [dev-dependencies] -sp-core = { version = "2.0.0-alpha.1", path = "../../primitives/core" } -pallet-balances = { version = "2.0.0-alpha.1", path = "../balances" } +sp-core = { version = "2.0.0-alpha.2", path = "../../primitives/core" } +pallet-balances = { version = "2.0.0-alpha.2", path = "../balances" } [features] default = ["std"] diff --git a/frame/staking/Cargo.toml b/frame/staking/Cargo.toml index 5778696297..4731676526 100644 --- a/frame/staking/Cargo.toml +++ b/frame/staking/Cargo.toml @@ -1,32 +1,33 @@ [package] name = "pallet-staking" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" homepage = "https://substrate.dev" repository = "https://github.com/paritytech/substrate/" +description = "FRAME pallet staking" [dependencies] serde = { version = "1.0.101", optional = true } codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } -sp-keyring = { version = "2.0.0-alpha.1", optional = true, path = "../../primitives/keyring" } -sp-std = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/std" } -sp-phragmen = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/phragmen" } -sp-io ={ path = "../../primitives/io", default-features = false , version = "2.0.0-alpha.1"} -sp-runtime = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/runtime" } -sp-staking = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/staking" } -frame-support = { version = "2.0.0-alpha.1", default-features = false, path = "../support" } -frame-system = { version = "2.0.0-alpha.1", default-features = false, path = "../system" } -pallet-session = { version = "2.0.0-alpha.1", features = ["historical"], path = "../session", default-features = false } -pallet-authorship = { version = "2.0.0-alpha.1", default-features = false, path = "../authorship" } +sp-keyring = { version = "2.0.0-alpha.2", optional = true, path = "../../primitives/keyring" } +sp-std = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/std" } +sp-phragmen = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/phragmen" } +sp-io ={ path = "../../primitives/io", default-features = false , version = "2.0.0-alpha.2"} +sp-runtime = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/runtime" } +sp-staking = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/staking" } +frame-support = { version = "2.0.0-alpha.2", default-features = false, path = "../support" } +frame-system = { version = "2.0.0-alpha.2", default-features = false, path = "../system" } +pallet-session = { version = "2.0.0-alpha.2", features = ["historical"], path = "../session", default-features = false } +pallet-authorship = { version = "2.0.0-alpha.2", default-features = false, path = "../authorship" } [dev-dependencies] -sp-core = { version = "2.0.0-alpha.1", path = "../../primitives/core" } -pallet-balances = { version = "2.0.0-alpha.1", path = "../balances" } -pallet-timestamp = { version = "2.0.0-alpha.1", path = "../timestamp" } -pallet-staking-reward-curve = { version = "2.0.0-alpha.1", path = "../staking/reward-curve" } -substrate-test-utils = { version = "2.0.0-alpha.1", path = "../../test-utils" } +sp-core = { version = "2.0.0-alpha.2", path = "../../primitives/core" } +pallet-balances = { version = "2.0.0-alpha.2", path = "../balances" } +pallet-timestamp = { version = "2.0.0-alpha.2", path = "../timestamp" } +pallet-staking-reward-curve = { version = "2.0.0-alpha.2", path = "../staking/reward-curve" } +substrate-test-utils = { version = "2.0.0-alpha.2", path = "../../test-utils" } [features] migrate = [] diff --git a/frame/staking/reward-curve/Cargo.toml b/frame/staking/reward-curve/Cargo.toml index e414d544da..0b727cbcf5 100644 --- a/frame/staking/reward-curve/Cargo.toml +++ b/frame/staking/reward-curve/Cargo.toml @@ -1,11 +1,12 @@ [package] name = "pallet-staking-reward-curve" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" homepage = "https://substrate.dev" repository = "https://github.com/paritytech/substrate/" +description = "Reward Curve for FRAME staking pallet" [lib] proc-macro = true @@ -17,4 +18,4 @@ proc-macro2 = "1.0.6" proc-macro-crate = "0.1.4" [dev-dependencies] -sp-runtime = { version = "2.0.0-alpha.1", path = "../../../primitives/runtime" } +sp-runtime = { version = "2.0.0-alpha.2", path = "../../../primitives/runtime" } diff --git a/frame/sudo/Cargo.toml b/frame/sudo/Cargo.toml index fa2797d2f6..3360653c25 100644 --- a/frame/sudo/Cargo.toml +++ b/frame/sudo/Cargo.toml @@ -1,23 +1,24 @@ [package] name = "pallet-sudo" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" homepage = "https://substrate.dev" repository = "https://github.com/paritytech/substrate/" +description = "FRAME pallet for sudo" [dependencies] serde = { version = "1.0.101", optional = true } codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } -sp-std = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/std" } -sp-io = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/io" } -sp-runtime = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/runtime" } -frame-support = { version = "2.0.0-alpha.1", default-features = false, path = "../support" } -frame-system = { version = "2.0.0-alpha.1", default-features = false, path = "../system" } +sp-std = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/std" } +sp-io = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/io" } +sp-runtime = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/runtime" } +frame-support = { version = "2.0.0-alpha.2", default-features = false, path = "../support" } +frame-system = { version = "2.0.0-alpha.2", default-features = false, path = "../system" } [dev-dependencies] -sp-core = { version = "2.0.0-alpha.1", path = "../../primitives/core" } +sp-core = { version = "2.0.0-alpha.2", path = "../../primitives/core" } [features] default = ["std"] diff --git a/frame/support/Cargo.toml b/frame/support/Cargo.toml index e26cd64d52..c132802175 100644 --- a/frame/support/Cargo.toml +++ b/frame/support/Cargo.toml @@ -1,34 +1,35 @@ [package] name = "frame-support" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" homepage = "https://substrate.dev" repository = "https://github.com/paritytech/substrate/" +description = "Support code for the runtime." [dependencies] log = "0.4" serde = { version = "1.0.101", optional = true, features = ["derive"] } codec = { package = "parity-scale-codec", version = "1.0.6", default-features = false, features = ["derive"] } -frame-metadata = { version = "11.0.0-alpha.1", default-features = false, path = "../metadata" } -sp-std = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/std" } -sp-io ={ path = "../../primitives/io", default-features = false , version = "2.0.0-alpha.1"} -sp-runtime = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/runtime" } -sp-core = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/core" } -sp-arithmetic = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/arithmetic" } -sp-inherents = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/inherents" } -frame-support-procedural = { version = "2.0.0-alpha.1", path = "./procedural" } +frame-metadata = { version = "11.0.0-alpha.2", default-features = false, path = "../metadata" } +sp-std = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/std" } +sp-io ={ path = "../../primitives/io", default-features = false , version = "2.0.0-alpha.2"} +sp-runtime = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/runtime" } +sp-core = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/core" } +sp-arithmetic = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/arithmetic" } +sp-inherents = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/inherents" } +frame-support-procedural = { version = "2.0.0-alpha.2", path = "./procedural" } paste = "0.1.6" once_cell = { version = "1", default-features = false, optional = true } -sp-state-machine = { version = "0.8.0-alpha.1", optional = true, path = "../../primitives/state-machine" } +sp-state-machine = { version = "0.8.0-alpha.2", optional = true, path = "../../primitives/state-machine" } bitmask = { version = "0.5.0", default-features = false } impl-trait-for-tuples = "0.1.3" tracing = { version = "0.1.10", optional = true } [dev-dependencies] pretty_assertions = "0.6.1" -frame-system = { version = "2.0.0-alpha.1", path = "../system" } +frame-system = { version = "2.0.0-alpha.2", path = "../system" } [features] default = ["std"] diff --git a/frame/support/procedural/Cargo.toml b/frame/support/procedural/Cargo.toml index 4b39cf8ed4..39b7e175ee 100644 --- a/frame/support/procedural/Cargo.toml +++ b/frame/support/procedural/Cargo.toml @@ -1,17 +1,18 @@ [package] name = "frame-support-procedural" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" homepage = "https://substrate.dev" repository = "https://github.com/paritytech/substrate/" +description = "Proc macro of Support code for the runtime." [lib] proc-macro = true [dependencies] -frame-support-procedural-tools = { version = "2.0.0-alpha.1", path = "./tools" } +frame-support-procedural-tools = { version = "2.0.0-alpha.2", path = "./tools" } proc-macro2 = "1.0.6" quote = "1.0.2" syn = { version = "1.0.7", features = ["full"] } diff --git a/frame/support/procedural/tools/Cargo.toml b/frame/support/procedural/tools/Cargo.toml index 1c3a0f60d5..da107c024f 100644 --- a/frame/support/procedural/tools/Cargo.toml +++ b/frame/support/procedural/tools/Cargo.toml @@ -1,14 +1,15 @@ [package] name = "frame-support-procedural-tools" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" homepage = "https://substrate.dev" repository = "https://github.com/paritytech/substrate/" +description = "Proc macro helpers for procedural macros" [dependencies] -frame-support-procedural-tools-derive = { version = "2.0.0-alpha.1", path = "./derive" } +frame-support-procedural-tools-derive = { version = "2.0.0-alpha.2", path = "./derive" } proc-macro2 = "1.0.6" quote = "1.0.2" syn = { version = "1.0.7", features = ["full", "visit"] } diff --git a/frame/support/procedural/tools/derive/Cargo.toml b/frame/support/procedural/tools/derive/Cargo.toml index 98b9d79702..e95aa1d690 100644 --- a/frame/support/procedural/tools/derive/Cargo.toml +++ b/frame/support/procedural/tools/derive/Cargo.toml @@ -1,11 +1,12 @@ [package] name = "frame-support-procedural-tools-derive" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" homepage = "https://substrate.dev" repository = "https://github.com/paritytech/substrate/" +description = "Use to derive parsing for parsing struct." [lib] proc-macro = true diff --git a/frame/support/test/Cargo.toml b/frame/support/test/Cargo.toml index 594d4379fd..9d70664408 100644 --- a/frame/support/test/Cargo.toml +++ b/frame/support/test/Cargo.toml @@ -11,12 +11,12 @@ repository = "https://github.com/paritytech/substrate/" [dependencies] serde = { version = "1.0.101", default-features = false, features = ["derive"] } codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } -sp-io ={ path = "../../../primitives/io", default-features = false , version = "2.0.0-alpha.1"} -sp-state-machine = { version = "0.8.0-alpha.1", optional = true, path = "../../../primitives/state-machine" } -frame-support = { version = "2.0.0-alpha.1", default-features = false, path = "../" } -sp-inherents = { version = "2.0.0-alpha.1", default-features = false, path = "../../../primitives/inherents" } -sp-runtime = { version = "2.0.0-alpha.1", default-features = false, path = "../../../primitives/runtime" } -sp-core = { version = "2.0.0-alpha.1", default-features = false, path = "../../../primitives/core" } +sp-io ={ path = "../../../primitives/io", default-features = false , version = "2.0.0-alpha.2"} +sp-state-machine = { version = "0.8.0-alpha.2", optional = true, path = "../../../primitives/state-machine" } +frame-support = { version = "2.0.0-alpha.2", default-features = false, path = "../" } +sp-inherents = { version = "2.0.0-alpha.2", default-features = false, path = "../../../primitives/inherents" } +sp-runtime = { version = "2.0.0-alpha.2", default-features = false, path = "../../../primitives/runtime" } +sp-core = { version = "2.0.0-alpha.2", default-features = false, path = "../../../primitives/core" } trybuild = "1.0.17" pretty_assertions = "0.6.1" diff --git a/frame/system/Cargo.toml b/frame/system/Cargo.toml index e3a347c588..b75e038504 100644 --- a/frame/system/Cargo.toml +++ b/frame/system/Cargo.toml @@ -1,26 +1,27 @@ [package] name = "frame-system" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" homepage = "https://substrate.dev" repository = "https://github.com/paritytech/substrate/" +description = "FRAME system module" [dependencies] serde = { version = "1.0.101", optional = true, features = ["derive"] } codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } -sp-core = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/core" } -sp-std = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/std" } -sp-io ={ path = "../../primitives/io", default-features = false , version = "2.0.0-alpha.1"} -sp-runtime = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/runtime" } -sp-version = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/version" } -frame-support = { version = "2.0.0-alpha.1", default-features = false, path = "../support" } +sp-core = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/core" } +sp-std = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/std" } +sp-io = { path = "../../primitives/io", default-features = false, version = "2.0.0-alpha.2" } +sp-runtime = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/runtime" } +sp-version = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/version" } +frame-support = { version = "2.0.0-alpha.2", default-features = false, path = "../support" } impl-trait-for-tuples = "0.1.3" [dev-dependencies] criterion = "0.2.11" -sp-externalities = { version = "0.8.0-alpha.1", path = "../../primitives/externalities" } +sp-externalities = { version = "0.8.0-alpha.2", path = "../../primitives/externalities" } substrate-test-runtime-client = { version = "2.0.0-dev", path = "../../test-utils/runtime/client" } [features] diff --git a/frame/system/rpc/runtime-api/Cargo.toml b/frame/system/rpc/runtime-api/Cargo.toml index 99aa57eaf3..88df5ea3b8 100644 --- a/frame/system/rpc/runtime-api/Cargo.toml +++ b/frame/system/rpc/runtime-api/Cargo.toml @@ -1,14 +1,15 @@ [package] name = "frame-system-rpc-runtime-api" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" homepage = "https://substrate.dev" repository = "https://github.com/paritytech/substrate/" +description = "Runtime API definition required by System RPC extensions." [dependencies] -sp-api = { version = "2.0.0-alpha.1", default-features = false, path = "../../../../primitives/api" } +sp-api = { version = "2.0.0-alpha.2", default-features = false, path = "../../../../primitives/api" } codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false } [features] diff --git a/frame/timestamp/Cargo.toml b/frame/timestamp/Cargo.toml index a6f3da7ea4..fe73b081b0 100644 --- a/frame/timestamp/Cargo.toml +++ b/frame/timestamp/Cargo.toml @@ -1,28 +1,31 @@ [package] name = "pallet-timestamp" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" homepage = "https://substrate.dev" repository = "https://github.com/paritytech/substrate/" +description = "FRAME Timestamp Module" +documentation = "https://docs.rs/pallet-timestamp" + [dependencies] serde = { version = "1.0.101", optional = true } codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } -sp-std = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/std" } -sp-io = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/io" } -sp-runtime = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/runtime" } -sp-inherents = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/inherents" } -frame-benchmarking = { version = "2.0.0-alpha.1", default-features = false, path = "../benchmarking" } -frame-support = { version = "2.0.0-alpha.1", default-features = false, path = "../support" } -frame-system = { version = "2.0.0-alpha.1", default-features = false, path = "../system" } -sp-timestamp = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/timestamp" } +sp-std = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/std" } +sp-io = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/io" } +sp-runtime = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/runtime" } +sp-inherents = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/inherents" } +frame-benchmarking = { version = "2.0.0-alpha.2", default-features = false, path = "../benchmarking" } +frame-support = { version = "2.0.0-alpha.2", default-features = false, path = "../support" } +frame-system = { version = "2.0.0-alpha.2", default-features = false, path = "../system" } +sp-timestamp = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/timestamp" } impl-trait-for-tuples = "0.1.3" [dev-dependencies] -sp-io ={ version = "2.0.0-alpha.1", path = "../../primitives/io" } -sp-core = { version = "2.0.0-alpha.1", path = "../../primitives/core" } +sp-io ={ version = "2.0.0-alpha.2", path = "../../primitives/io" } +sp-core = { version = "2.0.0-alpha.2", path = "../../primitives/core" } [features] default = ["std"] diff --git a/frame/transaction-payment/Cargo.toml b/frame/transaction-payment/Cargo.toml index d60dbdaaf6..b92a22ecde 100644 --- a/frame/transaction-payment/Cargo.toml +++ b/frame/transaction-payment/Cargo.toml @@ -1,24 +1,25 @@ [package] name = "pallet-transaction-payment" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" homepage = "https://substrate.dev" repository = "https://github.com/paritytech/substrate/" +description = "FRAME pallet to manage transaction payments" [dependencies] codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } -sp-std = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/std" } -sp-runtime = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/runtime" } -frame-support = { version = "2.0.0-alpha.1", default-features = false, path = "../support" } -frame-system = { version = "2.0.0-alpha.1", default-features = false, path = "../system" } -pallet-transaction-payment-rpc-runtime-api = { version = "2.0.0-alpha.1", default-features = false, path = "./rpc/runtime-api" } +sp-std = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/std" } +sp-runtime = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/runtime" } +frame-support = { version = "2.0.0-alpha.2", default-features = false, path = "../support" } +frame-system = { version = "2.0.0-alpha.2", default-features = false, path = "../system" } +pallet-transaction-payment-rpc-runtime-api = { version = "2.0.0-alpha.2", default-features = false, path = "./rpc/runtime-api" } [dev-dependencies] -sp-io = { version = "2.0.0-alpha.1", path = "../../primitives/io" } -sp-core = { version = "2.0.0-alpha.1", path = "../../primitives/core" } -pallet-balances = { version = "2.0.0-alpha.1", path = "../balances" } +sp-io = { version = "2.0.0-alpha.2", path = "../../primitives/io" } +sp-core = { version = "2.0.0-alpha.2", path = "../../primitives/core" } +pallet-balances = { version = "2.0.0-alpha.2", path = "../balances" } [features] default = ["std"] diff --git a/frame/transaction-payment/rpc/Cargo.toml b/frame/transaction-payment/rpc/Cargo.toml index 689d3642cd..677b85b5fb 100644 --- a/frame/transaction-payment/rpc/Cargo.toml +++ b/frame/transaction-payment/rpc/Cargo.toml @@ -1,21 +1,22 @@ [package] name = "pallet-transaction-payment-rpc" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" homepage = "https://substrate.dev" repository = "https://github.com/paritytech/substrate/" +description = "RPC interface for the transaction payment module." [dependencies] codec = { package = "parity-scale-codec", version = "1.0.0" } jsonrpc-core = "14.0.3" jsonrpc-core-client = "14.0.3" jsonrpc-derive = "14.0.3" -sp-core = { version = "2.0.0-alpha.1", path = "../../../primitives/core" } -sp-rpc = { version = "2.0.0-alpha.1", path = "../../../primitives/rpc" } +sp-core = { version = "2.0.0-alpha.2", path = "../../../primitives/core" } +sp-rpc = { version = "2.0.0-alpha.2", path = "../../../primitives/rpc" } serde = { version = "1.0.101", features = ["derive"] } -sp-runtime = { version = "2.0.0-alpha.1", path = "../../../primitives/runtime" } -sp-api = { version = "2.0.0-alpha.1", path = "../../../primitives/api" } -sp-blockchain = { version = "2.0.0-alpha.1", path = "../../../primitives/blockchain" } -pallet-transaction-payment-rpc-runtime-api = { version = "2.0.0-alpha.1", path = "./runtime-api" } +sp-runtime = { version = "2.0.0-alpha.2", path = "../../../primitives/runtime" } +sp-api = { version = "2.0.0-alpha.2", path = "../../../primitives/api" } +sp-blockchain = { version = "2.0.0-alpha.2", path = "../../../primitives/blockchain" } +pallet-transaction-payment-rpc-runtime-api = { version = "2.0.0-alpha.2", path = "./runtime-api" } diff --git a/frame/transaction-payment/rpc/runtime-api/Cargo.toml b/frame/transaction-payment/rpc/runtime-api/Cargo.toml index 0b2dce0f55..1a5f5fc35f 100644 --- a/frame/transaction-payment/rpc/runtime-api/Cargo.toml +++ b/frame/transaction-payment/rpc/runtime-api/Cargo.toml @@ -1,19 +1,20 @@ [package] name = "pallet-transaction-payment-rpc-runtime-api" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" homepage = "https://substrate.dev" repository = "https://github.com/paritytech/substrate/" +description = "RPC runtime API for transaction payment FRAME pallet" [dependencies] serde = { version = "1.0.101", optional = true, features = ["derive"] } -sp-api = { version = "2.0.0-alpha.1", default-features = false, path = "../../../../primitives/api" } +sp-api = { version = "2.0.0-alpha.2", default-features = false, path = "../../../../primitives/api" } codec = { package = "parity-scale-codec", version = "1.0.6", default-features = false, features = ["derive"] } -sp-std = { version = "2.0.0-alpha.1", default-features = false, path = "../../../../primitives/std" } -sp-runtime = { version = "2.0.0-alpha.1", default-features = false, path = "../../../../primitives/runtime" } -frame-support = { version = "2.0.0-alpha.1", default-features = false, path = "../../../support" } +sp-std = { version = "2.0.0-alpha.2", default-features = false, path = "../../../../primitives/std" } +sp-runtime = { version = "2.0.0-alpha.2", default-features = false, path = "../../../../primitives/runtime" } +frame-support = { version = "2.0.0-alpha.2", default-features = false, path = "../../../support" } [dev-dependencies] serde_json = "1.0.41" diff --git a/frame/treasury/Cargo.toml b/frame/treasury/Cargo.toml index 2da2104e1c..c47a87fb56 100644 --- a/frame/treasury/Cargo.toml +++ b/frame/treasury/Cargo.toml @@ -1,24 +1,25 @@ [package] name = "pallet-treasury" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" homepage = "https://substrate.dev" repository = "https://github.com/paritytech/substrate/" +description = "FRAME pallet to manage treasury" [dependencies] serde = { version = "1.0.101", optional = true, features = ["derive"] } codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } -sp-std = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/std" } -sp-runtime = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/runtime" } -frame-support = { version = "2.0.0-alpha.1", default-features = false, path = "../support" } -frame-system = { version = "2.0.0-alpha.1", default-features = false, path = "../system" } -pallet-balances = { version = "2.0.0-alpha.1", default-features = false, path = "../balances" } +sp-std = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/std" } +sp-runtime = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/runtime" } +frame-support = { version = "2.0.0-alpha.2", default-features = false, path = "../support" } +frame-system = { version = "2.0.0-alpha.2", default-features = false, path = "../system" } +pallet-balances = { version = "2.0.0-alpha.2", default-features = false, path = "../balances" } [dev-dependencies] -sp-io ={ version = "2.0.0-alpha.1", path = "../../primitives/io" } -sp-core = { version = "2.0.0-alpha.1", path = "../../primitives/core" } +sp-io ={ version = "2.0.0-alpha.2", path = "../../primitives/io" } +sp-core = { version = "2.0.0-alpha.2", path = "../../primitives/core" } [features] default = ["std"] diff --git a/frame/utility/Cargo.toml b/frame/utility/Cargo.toml index 3aec9fc868..68d621861c 100644 --- a/frame/utility/Cargo.toml +++ b/frame/utility/Cargo.toml @@ -1,25 +1,26 @@ [package] name = "pallet-utility" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" homepage = "https://substrate.dev" repository = "https://github.com/paritytech/substrate/" +description = "FRAME utilities pallet" [dependencies] serde = { version = "1.0.101", optional = true } codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false } -frame-support = { version = "2.0.0-alpha.1", default-features = false, path = "../support" } -frame-system = { version = "2.0.0-alpha.1", default-features = false, path = "../system" } -sp-core = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/core" } -sp-runtime = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/runtime" } -sp-std = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/std" } -sp-io = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/io" } +frame-support = { version = "2.0.0-alpha.2", default-features = false, path = "../support" } +frame-system = { version = "2.0.0-alpha.2", default-features = false, path = "../system" } +sp-core = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/core" } +sp-runtime = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/runtime" } +sp-std = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/std" } +sp-io = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/io" } [dev-dependencies] -sp-core = { version = "2.0.0-alpha.1", path = "../../primitives/core" } -pallet-balances = { version = "2.0.0-alpha.1", path = "../balances" } +sp-core = { version = "2.0.0-alpha.2", path = "../../primitives/core" } +pallet-balances = { version = "2.0.0-alpha.2", path = "../balances" } [features] default = ["std"] diff --git a/frame/vesting/Cargo.toml b/frame/vesting/Cargo.toml index 76fec97201..ff16007ace 100644 --- a/frame/vesting/Cargo.toml +++ b/frame/vesting/Cargo.toml @@ -1,26 +1,27 @@ [package] name = "pallet-vesting" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" homepage = "https://substrate.dev" repository = "https://github.com/paritytech/substrate/" +description = "FRAME pallet for manage vesting" [dependencies] serde = { version = "1.0.101", optional = true } codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } enumflags2 = { version = "0.6.2" } -sp-std = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/std" } -sp-io = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/io" } -sp-runtime = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/runtime" } -frame-support = { version = "2.0.0-alpha.1", default-features = false, path = "../support" } -frame-system = { version = "2.0.0-alpha.1", default-features = false, path = "../system" } +sp-std = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/std" } +sp-io = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/io" } +sp-runtime = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/runtime" } +frame-support = { version = "2.0.0-alpha.2", default-features = false, path = "../support" } +frame-system = { version = "2.0.0-alpha.2", default-features = false, path = "../system" } [dev-dependencies] -sp-core = { version = "2.0.0-alpha.1", path = "../../primitives/core" } -pallet-balances = { version = "2.0.0-alpha.1", path = "../balances" } -sp-storage = { version = "2.0.0-alpha.1", path = "../../primitives/storage" } +sp-core = { version = "2.0.0-alpha.2", path = "../../primitives/core" } +pallet-balances = { version = "2.0.0-alpha.2", path = "../balances" } +sp-storage = { version = "2.0.0-alpha.2", path = "../../primitives/storage" } hex-literal = "0.2.1" [features] diff --git a/primitives/allocator/Cargo.toml b/primitives/allocator/Cargo.toml index 90c7d92238..af977ed240 100644 --- a/primitives/allocator/Cargo.toml +++ b/primitives/allocator/Cargo.toml @@ -1,16 +1,18 @@ [package] name = "sp-allocator" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" homepage = "https://substrate.dev" repository = "https://github.com/paritytech/substrate/" +description = "Collection of allocator implementations." +documentation = "https://docs.rs/sp-allocator" [dependencies] -sp-std = { version = "2.0.0-alpha.1", path = "../std", default-features = false } -sp-core = { version = "2.0.0-alpha.1", path = "../core", default-features = false } -sp-wasm-interface = { version = "2.0.0-alpha.1", path = "../wasm-interface", default-features = false } +sp-std = { version = "2.0.0-alpha.2", path = "../std", default-features = false } +sp-core = { version = "2.0.0-alpha.2", path = "../core", default-features = false } +sp-wasm-interface = { version = "2.0.0-alpha.2", path = "../wasm-interface", default-features = false } log = { version = "0.4.8", optional = true } derive_more = { version = "0.99.2", optional = true } diff --git a/primitives/api/Cargo.toml b/primitives/api/Cargo.toml index 165d05f028..6a985b4f48 100644 --- a/primitives/api/Cargo.toml +++ b/primitives/api/Cargo.toml @@ -1,20 +1,21 @@ [package] name = "sp-api" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" homepage = "https://substrate.dev" repository = "https://github.com/paritytech/substrate/" +description = "Substrate runtime api primitives" [dependencies] codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false } -sp-api-proc-macro = { version = "2.0.0-alpha.1", path = "proc-macro" } -sp-core = { version = "2.0.0-alpha.1", default-features = false, path = "../core" } -sp-std = { version = "2.0.0-alpha.1", default-features = false, path = "../std" } -sp-runtime = { version = "2.0.0-alpha.1", default-features = false, path = "../runtime" } -sp-version = { version = "2.0.0-alpha.1", default-features = false, path = "../version" } -sp-state-machine = { version = "0.8.0-alpha.1", optional = true, path = "../../primitives/state-machine" } +sp-api-proc-macro = { version = "2.0.0-alpha.2", path = "proc-macro" } +sp-core = { version = "2.0.0-alpha.2", default-features = false, path = "../core" } +sp-std = { version = "2.0.0-alpha.2", default-features = false, path = "../std" } +sp-runtime = { version = "2.0.0-alpha.2", default-features = false, path = "../runtime" } +sp-version = { version = "2.0.0-alpha.2", default-features = false, path = "../version" } +sp-state-machine = { version = "0.8.0-alpha.2", optional = true, path = "../../primitives/state-machine" } hash-db = { version = "0.15.2", optional = true } [dev-dependencies] diff --git a/primitives/api/proc-macro/Cargo.toml b/primitives/api/proc-macro/Cargo.toml index 0a659c626b..8e9bf11917 100644 --- a/primitives/api/proc-macro/Cargo.toml +++ b/primitives/api/proc-macro/Cargo.toml @@ -1,11 +1,14 @@ [package] name = "sp-api-proc-macro" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" homepage = "https://substrate.dev" repository = "https://github.com/paritytech/substrate/" +description = "Macros for declaring and implementing runtime apis." +documentation = "https://docs.rs/sp-api-proc-macro" + [lib] proc-macro = true diff --git a/primitives/api/test/Cargo.toml b/primitives/api/test/Cargo.toml index aa538754a7..7b018199a5 100644 --- a/primitives/api/test/Cargo.toml +++ b/primitives/api/test/Cargo.toml @@ -9,14 +9,14 @@ homepage = "https://substrate.dev" repository = "https://github.com/paritytech/substrate/" [dependencies] -sp-api = { version = "2.0.0-alpha.1", path = "../" } +sp-api = { version = "2.0.0-alpha.2", path = "../" } substrate-test-runtime-client = { version = "2.0.0-dev", path = "../../../test-utils/runtime/client" } -sp-version = { version = "2.0.0-alpha.1", path = "../../version" } -sp-runtime = { version = "2.0.0-alpha.1", path = "../../runtime" } -sp-blockchain = { version = "2.0.0-alpha.1", path = "../../blockchain" } -sp-consensus = { version = "0.8.0-alpha.1", path = "../../../primitives/consensus/common" } +sp-version = { version = "2.0.0-alpha.2", path = "../../version" } +sp-runtime = { version = "2.0.0-alpha.2", path = "../../runtime" } +sp-blockchain = { version = "2.0.0-alpha.2", path = "../../blockchain" } +sp-consensus = { version = "0.8.0-alpha.2", path = "../../../primitives/consensus/common" } codec = { package = "parity-scale-codec", version = "1.0.0" } -sp-state-machine = { version = "0.8.0-alpha.1", path = "../../../primitives/state-machine" } +sp-state-machine = { version = "0.8.0-alpha.2", path = "../../../primitives/state-machine" } trybuild = "1.0.17" rustversion = "1.0.0" diff --git a/primitives/application-crypto/Cargo.toml b/primitives/application-crypto/Cargo.toml index f8d36e4db8..630012ba70 100644 --- a/primitives/application-crypto/Cargo.toml +++ b/primitives/application-crypto/Cargo.toml @@ -1,19 +1,21 @@ [package] name = "sp-application-crypto" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" authors = ["Parity Technologies "] edition = "2018" description = "Provides facilities for generating application specific crypto wrapper types." license = "GPL-3.0" homepage = "https://substrate.dev" repository = "https://github.com/paritytech/substrate/" +documentation = "https://docs.rs/sp-application-crypto" + [dependencies] -sp-core = { version = "2.0.0-alpha.1", default-features = false, path = "../core" } +sp-core = { version = "2.0.0-alpha.2", default-features = false, path = "../core" } codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } serde = { version = "1.0.101", optional = true, features = ["derive"] } -sp-std = { version = "2.0.0-alpha.1", default-features = false, path = "../std" } -sp-io = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/io" } +sp-std = { version = "2.0.0-alpha.2", default-features = false, path = "../std" } +sp-io = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/io" } [features] default = [ "std" ] diff --git a/primitives/application-crypto/test/Cargo.toml b/primitives/application-crypto/test/Cargo.toml index ab84cdd0a6..0ed5355ce2 100644 --- a/primitives/application-crypto/test/Cargo.toml +++ b/primitives/application-crypto/test/Cargo.toml @@ -10,8 +10,8 @@ homepage = "https://substrate.dev" repository = "https://github.com/paritytech/substrate/" [dependencies] -sp-core = { version = "2.0.0-alpha.1", default-features = false, path = "../../core" } +sp-core = { version = "2.0.0-alpha.2", default-features = false, path = "../../core" } substrate-test-runtime-client = { version = "2.0.0-dev", path = "../../../test-utils/runtime/client" } -sp-runtime = { version = "2.0.0-alpha.1", path = "../../runtime" } -sp-api = { version = "2.0.0-alpha.1", path = "../../api" } -sp-application-crypto = { version = "2.0.0-alpha.1", path = "../" } +sp-runtime = { version = "2.0.0-alpha.2", path = "../../runtime" } +sp-api = { version = "2.0.0-alpha.2", path = "../../api" } +sp-application-crypto = { version = "2.0.0-alpha.2", path = "../" } diff --git a/primitives/arithmetic/Cargo.toml b/primitives/arithmetic/Cargo.toml index e8d73f595d..cfaaa2ebe3 100644 --- a/primitives/arithmetic/Cargo.toml +++ b/primitives/arithmetic/Cargo.toml @@ -1,19 +1,22 @@ [package] name = "sp-arithmetic" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" homepage = "https://substrate.dev" repository = "https://github.com/paritytech/substrate/" +description = "Minimal fixed point arithmetic primitives and types for runtime." +documentation = "https://docs.rs/sp-arithmetic" + [dependencies] codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } integer-sqrt = "0.1.2" num-traits = { version = "0.2.8", default-features = false } -sp-std = { version = "2.0.0-alpha.1", default-features = false, path = "../std" } +sp-std = { version = "2.0.0-alpha.2", default-features = false, path = "../std" } serde = { version = "1.0.101", optional = true, features = ["derive"] } -sp-debug-derive = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/debug-derive" } +sp-debug-derive = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/debug-derive" } [dev-dependencies] primitive-types = "0.6.2" diff --git a/primitives/authority-discovery/Cargo.toml b/primitives/authority-discovery/Cargo.toml index d5800bc566..d709394044 100644 --- a/primitives/authority-discovery/Cargo.toml +++ b/primitives/authority-discovery/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "sp-authority-discovery" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" authors = ["Parity Technologies "] description = "Authority discovery primitives" edition = "2018" @@ -9,11 +9,11 @@ homepage = "https://substrate.dev" repository = "https://github.com/paritytech/substrate/" [dependencies] -sp-application-crypto = { version = "2.0.0-alpha.1", default-features = false, path = "../application-crypto" } +sp-application-crypto = { version = "2.0.0-alpha.2", default-features = false, path = "../application-crypto" } codec = { package = "parity-scale-codec", default-features = false, version = "1.0.3" } -sp-std = { version = "2.0.0-alpha.1", default-features = false, path = "../std" } -sp-api = { version = "2.0.0-alpha.1", default-features = false, path = "../api" } -sp-runtime = { version = "2.0.0-alpha.1", default-features = false, path = "../runtime" } +sp-std = { version = "2.0.0-alpha.2", default-features = false, path = "../std" } +sp-api = { version = "2.0.0-alpha.2", default-features = false, path = "../api" } +sp-runtime = { version = "2.0.0-alpha.2", default-features = false, path = "../runtime" } [features] default = ["std"] diff --git a/primitives/authorship/Cargo.toml b/primitives/authorship/Cargo.toml index bc4840278a..e131393ff1 100644 --- a/primitives/authorship/Cargo.toml +++ b/primitives/authorship/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "sp-authorship" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" authors = ["Parity Technologies "] description = "Authorship primitives" edition = "2018" @@ -9,9 +9,9 @@ homepage = "https://substrate.dev" repository = "https://github.com/paritytech/substrate/" [dependencies] -sp-inherents = { version = "2.0.0-alpha.1", default-features = false, path = "../inherents" } -sp-runtime = { version = "2.0.0-alpha.1", default-features = false, path = "../runtime" } -sp-std = { version = "2.0.0-alpha.1", default-features = false, path = "../std" } +sp-inherents = { version = "2.0.0-alpha.2", default-features = false, path = "../inherents" } +sp-runtime = { version = "2.0.0-alpha.2", default-features = false, path = "../runtime" } +sp-std = { version = "2.0.0-alpha.2", default-features = false, path = "../std" } codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } [features] diff --git a/primitives/block-builder/Cargo.toml b/primitives/block-builder/Cargo.toml index cf6f7654fc..1e1a23fd6e 100644 --- a/primitives/block-builder/Cargo.toml +++ b/primitives/block-builder/Cargo.toml @@ -1,18 +1,19 @@ [package] name = "sp-block-builder" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" homepage = "https://substrate.dev" repository = "https://github.com/paritytech/substrate/" +description = "The block builder runtime api." [dependencies] -sp-runtime = { version = "2.0.0-alpha.1", default-features = false, path = "../runtime" } -sp-api = { version = "2.0.0-alpha.1", default-features = false, path = "../api" } -sp-std = { version = "2.0.0-alpha.1", default-features = false, path = "../std" } +sp-runtime = { version = "2.0.0-alpha.2", default-features = false, path = "../runtime" } +sp-api = { version = "2.0.0-alpha.2", default-features = false, path = "../api" } +sp-std = { version = "2.0.0-alpha.2", default-features = false, path = "../std" } codec = { package = "parity-scale-codec", version = "1.0.6", default-features = false } -sp-inherents = { version = "2.0.0-alpha.1", default-features = false, path = "../inherents" } +sp-inherents = { version = "2.0.0-alpha.2", default-features = false, path = "../inherents" } [features] default = [ "std" ] diff --git a/primitives/blockchain/Cargo.toml b/primitives/blockchain/Cargo.toml index 19cdcf1481..cdd31ad1af 100644 --- a/primitives/blockchain/Cargo.toml +++ b/primitives/blockchain/Cargo.toml @@ -1,11 +1,14 @@ [package] name = "sp-blockchain" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" homepage = "https://substrate.dev" repository = "https://github.com/paritytech/substrate/" +description = "Substrate blockchain traits and primitives." +documentation = "https://docs.rs/sp-blockchain" + [dependencies] log = "0.4.8" @@ -13,7 +16,7 @@ lru = "0.4.0" parking_lot = "0.10.0" derive_more = "0.99.2" codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } -sp-consensus = { version = "0.8.0-alpha.1", path = "../consensus/common" } -sp-runtime = { version = "2.0.0-alpha.1", path = "../runtime" } -sp-block-builder = { version = "2.0.0-alpha.1", path = "../block-builder" } -sp-state-machine = { version = "0.8.0-alpha.1", path = "../state-machine" } +sp-consensus = { version = "0.8.0-alpha.2", path = "../consensus/common" } +sp-runtime = { version = "2.0.0-alpha.2", path = "../runtime" } +sp-block-builder = { version = "2.0.0-alpha.2", path = "../block-builder" } +sp-state-machine = { version = "0.8.0-alpha.2", path = "../state-machine" } diff --git a/primitives/consensus/aura/Cargo.toml b/primitives/consensus/aura/Cargo.toml index a4372c85ec..e2800a528a 100644 --- a/primitives/consensus/aura/Cargo.toml +++ b/primitives/consensus/aura/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "sp-consensus-aura" -version = "0.8.0-alpha.1" +version = "0.8.0-alpha.2" authors = ["Parity Technologies "] description = "Primitives for Aura consensus" edition = "2018" @@ -9,13 +9,13 @@ homepage = "https://substrate.dev" repository = "https://github.com/paritytech/substrate/" [dependencies] -sp-application-crypto = { version = "2.0.0-alpha.1", default-features = false, path = "../../application-crypto" } +sp-application-crypto = { version = "2.0.0-alpha.2", default-features = false, path = "../../application-crypto" } codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false } -sp-std = { version = "2.0.0-alpha.1", default-features = false, path = "../../std" } -sp-api = { version = "2.0.0-alpha.1", default-features = false, path = "../../api" } -sp-runtime = { version = "2.0.0-alpha.1", default-features = false, path = "../../runtime" } -sp-inherents = { version = "2.0.0-alpha.1", default-features = false, path = "../../inherents" } -sp-timestamp = { version = "2.0.0-alpha.1", default-features = false, path = "../../timestamp" } +sp-std = { version = "2.0.0-alpha.2", default-features = false, path = "../../std" } +sp-api = { version = "2.0.0-alpha.2", default-features = false, path = "../../api" } +sp-runtime = { version = "2.0.0-alpha.2", default-features = false, path = "../../runtime" } +sp-inherents = { version = "2.0.0-alpha.2", default-features = false, path = "../../inherents" } +sp-timestamp = { version = "2.0.0-alpha.2", default-features = false, path = "../../timestamp" } [features] default = ["std"] diff --git a/primitives/consensus/babe/Cargo.toml b/primitives/consensus/babe/Cargo.toml index 52a344dd7f..ddc76cc634 100644 --- a/primitives/consensus/babe/Cargo.toml +++ b/primitives/consensus/babe/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "sp-consensus-babe" -version = "0.8.0-alpha.1" +version = "0.8.0-alpha.2" authors = ["Parity Technologies "] description = "Primitives for BABE consensus" edition = "2018" @@ -9,15 +9,15 @@ homepage = "https://substrate.dev" repository = "https://github.com/paritytech/substrate/" [dependencies] -sp-application-crypto = { version = "2.0.0-alpha.1", default-features = false, path = "../../application-crypto" } +sp-application-crypto = { version = "2.0.0-alpha.2", default-features = false, path = "../../application-crypto" } codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false } -sp-std = { version = "2.0.0-alpha.1", default-features = false, path = "../../std" } +sp-std = { version = "2.0.0-alpha.2", default-features = false, path = "../../std" } schnorrkel = { version = "0.8.5", features = ["preaudit_deprecated"], optional = true } -sp-api = { version = "2.0.0-alpha.1", default-features = false, path = "../../api" } -sp-consensus = { version = "0.8.0-alpha.1", optional = true, path = "../common" } -sp-inherents = { version = "2.0.0-alpha.1", default-features = false, path = "../../inherents" } -sp-runtime = { version = "2.0.0-alpha.1", default-features = false, path = "../../runtime" } -sp-timestamp = { version = "2.0.0-alpha.1", default-features = false, path = "../../timestamp" } +sp-api = { version = "2.0.0-alpha.2", default-features = false, path = "../../api" } +sp-consensus = { version = "0.8.0-alpha.2", optional = true, path = "../common" } +sp-inherents = { version = "2.0.0-alpha.2", default-features = false, path = "../../inherents" } +sp-runtime = { version = "2.0.0-alpha.2", default-features = false, path = "../../runtime" } +sp-timestamp = { version = "2.0.0-alpha.2", default-features = false, path = "../../timestamp" } [features] default = ["std"] diff --git a/primitives/consensus/common/Cargo.toml b/primitives/consensus/common/Cargo.toml index 3f9fc17fa3..8e5ddad32d 100644 --- a/primitives/consensus/common/Cargo.toml +++ b/primitives/consensus/common/Cargo.toml @@ -1,26 +1,28 @@ [package] name = "sp-consensus" -version = "0.8.0-alpha.1" +version = "0.8.0-alpha.2" authors = ["Parity Technologies "] -description = "Common utilities for substrate consensus" edition = "2018" license = "GPL-3.0" homepage = "https://substrate.dev" repository = "https://github.com/paritytech/substrate/" +description = "Common utilities for building and using consensus engines in substrate." +documentation = "https://docs.rs/sp-consensus/" + [dependencies] derive_more = "0.99.2" libp2p = { version = "0.16.1", default-features = false } log = "0.4.8" -sp-core = { path= "../../core" , version = "2.0.0-alpha.1"} -sp-inherents = { version = "2.0.0-alpha.1", path = "../../inherents" } -sp-state-machine = { version = "0.8.0-alpha.1", path = "../../../primitives/state-machine" } +sp-core = { path= "../../core" , version = "2.0.0-alpha.2"} +sp-inherents = { version = "2.0.0-alpha.2", path = "../../inherents" } +sp-state-machine = { version = "0.8.0-alpha.2", path = "../../../primitives/state-machine" } futures = { version = "0.3.1", features = ["thread-pool"] } futures-timer = "3.0.1" futures-diagnose = "1.0" -sp-std = { version = "2.0.0-alpha.1", path = "../../std" } -sp-version = { version = "2.0.0-alpha.1", path = "../../version" } -sp-runtime = { version = "2.0.0-alpha.1", path = "../../runtime" } +sp-std = { version = "2.0.0-alpha.2", path = "../../std" } +sp-version = { version = "2.0.0-alpha.2", path = "../../version" } +sp-runtime = { version = "2.0.0-alpha.2", path = "../../runtime" } codec = { package = "parity-scale-codec", version = "1.0.0", features = ["derive"] } parking_lot = "0.10.0" serde = { version = "1.0", features = ["derive"] } diff --git a/primitives/consensus/pow/Cargo.toml b/primitives/consensus/pow/Cargo.toml index 2e1ab504d9..7a8965a431 100644 --- a/primitives/consensus/pow/Cargo.toml +++ b/primitives/consensus/pow/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "sp-consensus-pow" -version = "0.8.0-alpha.1" +version = "0.8.0-alpha.2" authors = ["Parity Technologies "] description = "Primitives for Aura consensus" edition = "2018" @@ -9,10 +9,10 @@ homepage = "https://substrate.dev" repository = "https://github.com/paritytech/substrate/" [dependencies] -sp-api = { version = "2.0.0-alpha.1", default-features = false, path = "../../api" } -sp-std = { version = "2.0.0-alpha.1", default-features = false, path = "../../std" } -sp-runtime = { version = "2.0.0-alpha.1", default-features = false, path = "../../runtime" } -sp-core = { version = "2.0.0-alpha.1", default-features = false, path = "../../core" } +sp-api = { version = "2.0.0-alpha.2", default-features = false, path = "../../api" } +sp-std = { version = "2.0.0-alpha.2", default-features = false, path = "../../std" } +sp-runtime = { version = "2.0.0-alpha.2", default-features = false, path = "../../runtime" } +sp-core = { version = "2.0.0-alpha.2", default-features = false, path = "../../core" } codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } [features] diff --git a/primitives/core/Cargo.toml b/primitives/core/Cargo.toml index 174c4e806a..27efd587d4 100644 --- a/primitives/core/Cargo.toml +++ b/primitives/core/Cargo.toml @@ -1,14 +1,16 @@ [package] name = "sp-core" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" homepage = "https://substrate.dev" repository = "https://github.com/paritytech/substrate/" +description = "Shareable Substrate types." +documentation = "https://docs.rs/sp-core" [dependencies] -sp-std = { version = "2.0.0-alpha.1", default-features = false, path = "../std" } +sp-std = { version = "2.0.0-alpha.2", default-features = false, path = "../std" } codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } rustc-hex = { version = "2.0.1", default-features = false } log = { version = "0.4.8", default-features = false } @@ -28,9 +30,9 @@ num-traits = { version = "0.2.8", default-features = false } zeroize = { version = "1.0.0", default-features = false } lazy_static = { version = "1.4.0", default-features = false, optional = true } parking_lot = { version = "0.10.0", optional = true } -sp-debug-derive = { version = "2.0.0-alpha.1", path = "../debug-derive" } -sp-externalities = { version = "0.8.0-alpha.1", optional = true, path = "../externalities" } -sp-storage = { version = "2.0.0-alpha.1", default-features = false, path = "../storage" } +sp-debug-derive = { version = "2.0.0-alpha.2", path = "../debug-derive" } +sp-externalities = { version = "0.8.0-alpha.2", optional = true, path = "../externalities" } +sp-storage = { version = "2.0.0-alpha.2", default-features = false, path = "../storage" } libsecp256k1 = { version = "0.3.2", default-features = false, features = ["hmac"] } parity-util-mem = { version = "0.5.1", default-features = false, features = ["primitive-types"] } @@ -43,10 +45,10 @@ sha2 = { version = "0.8.0", default-features = false, optional = true } hex = { version = "0.4", default-features = false, optional = true } twox-hash = { version = "1.5.0", default-features = false, optional = true } -sp-runtime-interface = { version = "2.0.0-alpha.1", default-features = false, path = "../runtime-interface" } +sp-runtime-interface = { version = "2.0.0-alpha.2", default-features = false, path = "../runtime-interface" } [dev-dependencies] -sp-serializer = { version = "2.0.0-alpha.1", path = "../serializer" } +sp-serializer = { version = "2.0.0-alpha.2", path = "../serializer" } pretty_assertions = "0.6.1" hex-literal = "0.2.1" rand = "0.7.2" diff --git a/primitives/debug-derive/Cargo.toml b/primitives/debug-derive/Cargo.toml index 98d7758013..1dfc980578 100644 --- a/primitives/debug-derive/Cargo.toml +++ b/primitives/debug-derive/Cargo.toml @@ -1,11 +1,13 @@ [package] name = "sp-debug-derive" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" homepage = "https://substrate.dev" repository = "https://github.com/paritytech/substrate/" +description = "Macros to derive runtime debug implementation." +documentation = "https://docs.rs/sp-debug-derive" [lib] proc-macro = true diff --git a/primitives/externalities/Cargo.toml b/primitives/externalities/Cargo.toml index 9044d7b01e..4d654e0f94 100644 --- a/primitives/externalities/Cargo.toml +++ b/primitives/externalities/Cargo.toml @@ -1,13 +1,15 @@ [package] name = "sp-externalities" -version = "0.8.0-alpha.1" +version = "0.8.0-alpha.2" license = "GPL-3.0" authors = ["Parity Technologies "] edition = "2018" homepage = "https://substrate.dev" repository = "https://github.com/paritytech/substrate/" +description = "Substrate externalities abstraction" +documentation = "https://docs.rs/sp-externalities" [dependencies] -sp-storage = { version = "2.0.0-alpha.1", path = "../storage" } -sp-std = { version = "2.0.0-alpha.1", path = "../std" } +sp-storage = { version = "2.0.0-alpha.2", path = "../storage" } +sp-std = { version = "2.0.0-alpha.2", path = "../std" } environmental = { version = "1.1.1" } diff --git a/primitives/finality-grandpa/Cargo.toml b/primitives/finality-grandpa/Cargo.toml index cd621c7831..c24bb6e623 100644 --- a/primitives/finality-grandpa/Cargo.toml +++ b/primitives/finality-grandpa/Cargo.toml @@ -1,19 +1,22 @@ [package] name = "sp-finality-grandpa" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" homepage = "https://substrate.dev" repository = "https://github.com/paritytech/substrate/" +description = "Primitives for GRANDPA integration, suitable for WASM compilation." +documentation = "https://docs.rs/sp-finality-grandpa" + [dependencies] -sp-application-crypto = { version = "2.0.0-alpha.1", default-features = false, path = "../application-crypto" } +sp-application-crypto = { version = "2.0.0-alpha.2", default-features = false, path = "../application-crypto" } codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } -sp-std = { version = "2.0.0-alpha.1", default-features = false, path = "../std" } +sp-std = { version = "2.0.0-alpha.2", default-features = false, path = "../std" } serde = { version = "1.0.101", optional = true, features = ["derive"] } -sp-api = { version = "2.0.0-alpha.1", default-features = false, path = "../api" } -sp-runtime = { version = "2.0.0-alpha.1", default-features = false, path = "../runtime" } +sp-api = { version = "2.0.0-alpha.2", default-features = false, path = "../api" } +sp-runtime = { version = "2.0.0-alpha.2", default-features = false, path = "../runtime" } [features] default = ["std"] diff --git a/primitives/finality-tracker/Cargo.toml b/primitives/finality-tracker/Cargo.toml index e9321cc1a0..2e8be7e1e5 100644 --- a/primitives/finality-tracker/Cargo.toml +++ b/primitives/finality-tracker/Cargo.toml @@ -1,16 +1,17 @@ [package] name = "sp-finality-tracker" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" homepage = "https://substrate.dev" repository = "https://github.com/paritytech/substrate/" +description = "FRAME module that tracks the last finalized block, as perceived by block authors." [dependencies] codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false } -sp-inherents = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/inherents" } -sp-std = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/std" } +sp-inherents = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/inherents" } +sp-std = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/std" } [features] default = ["std"] diff --git a/primitives/inherents/Cargo.toml b/primitives/inherents/Cargo.toml index aa40369315..3a65576d60 100644 --- a/primitives/inherents/Cargo.toml +++ b/primitives/inherents/Cargo.toml @@ -1,16 +1,19 @@ [package] name = "sp-inherents" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" homepage = "https://substrate.dev" repository = "https://github.com/paritytech/substrate/" +description = "Provides types and traits for creating and checking inherents." +documentation = "https://docs.rs/sp-inherents" + [dependencies] parking_lot = { version = "0.10.0", optional = true } -sp-std = { version = "2.0.0-alpha.1", default-features = false, path = "../std" } -sp-core = { version = "2.0.0-alpha.1", default-features = false, path = "../core" } +sp-std = { version = "2.0.0-alpha.2", default-features = false, path = "../std" } +sp-core = { version = "2.0.0-alpha.2", default-features = false, path = "../core" } codec = { package = "parity-scale-codec", version = "1.0.6", default-features = false, features = ["derive"] } derive_more = { version = "0.99.2", optional = true } diff --git a/primitives/io/Cargo.toml b/primitives/io/Cargo.toml index 05a051e062..ff58d03d98 100644 --- a/primitives/io/Cargo.toml +++ b/primitives/io/Cargo.toml @@ -1,23 +1,26 @@ [package] name = "sp-io" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" homepage = "https://substrate.dev" repository = "https://github.com/paritytech/substrate/" +description = "I/O for Substrate runtimes" +documentation = "https://docs.rs/sp-io" + [dependencies] codec = { package = "parity-scale-codec", version = "1.0.6", default-features = false } hash-db = { version = "0.15.2", default-features = false } -sp-core = { version = "2.0.0-alpha.1", default-features = false, path = "../core" } -sp-std = { version = "2.0.0-alpha.1", default-features = false, path = "../std" } +sp-core = { version = "2.0.0-alpha.2", default-features = false, path = "../core" } +sp-std = { version = "2.0.0-alpha.2", default-features = false, path = "../std" } libsecp256k1 = { version = "0.3.4", optional = true } -sp-state-machine = { version = "0.8.0-alpha.1", optional = true, path = "../../primitives/state-machine" } -sp-wasm-interface = { version = "2.0.0-alpha.1", path = "../../primitives/wasm-interface", default-features = false } -sp-runtime-interface = { version = "2.0.0-alpha.1", default-features = false, path = "../runtime-interface" } -sp-trie = { version = "2.0.0-alpha.1", optional = true, path = "../../primitives/trie" } -sp-externalities = { version = "0.8.0-alpha.1", optional = true, path = "../externalities" } +sp-state-machine = { version = "0.8.0-alpha.2", optional = true, path = "../../primitives/state-machine" } +sp-wasm-interface = { version = "2.0.0-alpha.2", path = "../../primitives/wasm-interface", default-features = false } +sp-runtime-interface = { version = "2.0.0-alpha.2", default-features = false, path = "../runtime-interface" } +sp-trie = { version = "2.0.0-alpha.2", optional = true, path = "../../primitives/trie" } +sp-externalities = { version = "0.8.0-alpha.2", optional = true, path = "../externalities" } log = { version = "0.4.8", optional = true } [features] diff --git a/primitives/keyring/Cargo.toml b/primitives/keyring/Cargo.toml index 46793cd5e1..9177c37701 100644 --- a/primitives/keyring/Cargo.toml +++ b/primitives/keyring/Cargo.toml @@ -1,14 +1,17 @@ [package] name = "sp-keyring" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" homepage = "https://substrate.dev" repository = "https://github.com/paritytech/substrate/" +description = "Keyring support code for the runtime. A set of test accounts." +documentation = "https://docs.rs/sp-keyring" + [dependencies] -sp-core = { version = "2.0.0-alpha.1", path = "../core" } -sp-runtime = { version = "2.0.0-alpha.1", path = "../runtime" } +sp-core = { version = "2.0.0-alpha.2", path = "../core" } +sp-runtime = { version = "2.0.0-alpha.2", path = "../runtime" } lazy_static = "1.4.0" strum = { version = "0.16.0", features = ["derive"] } diff --git a/primitives/offchain/Cargo.toml b/primitives/offchain/Cargo.toml index 78f3071bf0..8e7853f6ea 100644 --- a/primitives/offchain/Cargo.toml +++ b/primitives/offchain/Cargo.toml @@ -1,7 +1,7 @@ [package] description = "Substrate offchain workers primitives" name = "sp-offchain" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" license = "GPL-3.0" authors = ["Parity Technologies "] edition = "2018" @@ -9,8 +9,8 @@ homepage = "https://substrate.dev" repository = "https://github.com/paritytech/substrate/" [dependencies] -sp-api = { version = "2.0.0-alpha.1", default-features = false, path = "../api" } -sp-runtime = { version = "2.0.0-alpha.1", default-features = false, path = "../runtime" } +sp-api = { version = "2.0.0-alpha.2", default-features = false, path = "../api" } +sp-runtime = { version = "2.0.0-alpha.2", default-features = false, path = "../runtime" } [features] default = ["std"] diff --git a/primitives/panic-handler/Cargo.toml b/primitives/panic-handler/Cargo.toml index 2f63f32aca..795aa24047 100644 --- a/primitives/panic-handler/Cargo.toml +++ b/primitives/panic-handler/Cargo.toml @@ -1,12 +1,13 @@ [package] name = "sp-panic-handler" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" authors = ["Parity Technologies "] -description = "Substrate panic handler." edition = "2018" license = "GPL-3.0" homepage = "https://substrate.dev" repository = "https://github.com/paritytech/substrate/" +description = "Custom panic hook with bug report link" +documentation = "https://docs.rs/sp-panic-handler" [dependencies] backtrace = "0.3.38" diff --git a/primitives/phragmen/Cargo.toml b/primitives/phragmen/Cargo.toml index ec0bdce2e4..23b872a15c 100644 --- a/primitives/phragmen/Cargo.toml +++ b/primitives/phragmen/Cargo.toml @@ -1,20 +1,21 @@ [package] name = "sp-phragmen" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" homepage = "https://substrate.dev" repository = "https://github.com/paritytech/substrate/" +description = "PHRAGMENT primitives" [dependencies] serde = { version = "1.0.101", optional = true, features = ["derive"] } -sp-std = { version = "2.0.0-alpha.1", default-features = false, path = "../std" } -sp-runtime = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/runtime" } +sp-std = { version = "2.0.0-alpha.2", default-features = false, path = "../std" } +sp-runtime = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/runtime" } [dev-dependencies] -substrate-test-utils = { version = "2.0.0-alpha.1", path = "../../test-utils" } -sp-io ={ version = "2.0.0-alpha.1", path = "../../primitives/io" } +substrate-test-utils = { version = "2.0.0-alpha.2", path = "../../test-utils" } +sp-io ={ version = "2.0.0-alpha.2", path = "../../primitives/io" } rand = "0.7.2" [features] diff --git a/primitives/rpc/Cargo.toml b/primitives/rpc/Cargo.toml index 322100bc2d..9694552617 100644 --- a/primitives/rpc/Cargo.toml +++ b/primitives/rpc/Cargo.toml @@ -1,15 +1,16 @@ [package] name = "sp-rpc" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" homepage = "https://substrate.dev" repository = "https://github.com/paritytech/substrate/" +description = "Substrate RPC primitives and utilities." [dependencies] serde = { version = "1.0.101", features = ["derive"] } -sp-core = { version = "2.0.0-alpha.1", path = "../core" } +sp-core = { version = "2.0.0-alpha.2", path = "../core" } [dev-dependencies] serde_json = "1.0.41" diff --git a/primitives/runtime-interface/Cargo.toml b/primitives/runtime-interface/Cargo.toml index 7235d63fb5..d3b3e3120b 100644 --- a/primitives/runtime-interface/Cargo.toml +++ b/primitives/runtime-interface/Cargo.toml @@ -1,26 +1,28 @@ [package] name = "sp-runtime-interface" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" homepage = "https://substrate.dev" repository = "https://github.com/paritytech/substrate/" +description = "Substrate runtime interface" +documentation = "https://docs.rs/sp-runtime-interface/" [dependencies] -sp-wasm-interface = { version = "2.0.0-alpha.1", path = "../wasm-interface", default-features = false } -sp-std = { version = "2.0.0-alpha.1", default-features = false, path = "../std" } -sp-runtime-interface-proc-macro = { version = "2.0.0-alpha.1", path = "proc-macro" } -sp-externalities = { version = "0.8.0-alpha.1", optional = true, path = "../externalities" } +sp-wasm-interface = { version = "2.0.0-alpha.2", path = "../wasm-interface", default-features = false } +sp-std = { version = "2.0.0-alpha.2", default-features = false, path = "../std" } +sp-runtime-interface-proc-macro = { version = "2.0.0-alpha.2", path = "proc-macro" } +sp-externalities = { version = "0.8.0-alpha.2", optional = true, path = "../externalities" } codec = { package = "parity-scale-codec", version = "1.0.6", default-features = false } static_assertions = "1.0.0" primitive-types = { version = "0.6.2", default-features = false } [dev-dependencies] sp-runtime-interface-test-wasm = { version = "2.0.0-dev", path = "test-wasm" } -sp-state-machine = { version = "0.8.0-alpha.1", path = "../../primitives/state-machine" } -sp-core = { version = "2.0.0-alpha.1", path = "../core" } -sp-io = { version = "2.0.0-alpha.1", path = "../io" } +sp-state-machine = { version = "0.8.0-alpha.2", path = "../../primitives/state-machine" } +sp-core = { version = "2.0.0-alpha.2", path = "../core" } +sp-io = { version = "2.0.0-alpha.2", path = "../io" } rustversion = "1.0.0" trybuild = "1.0.23" diff --git a/primitives/runtime-interface/proc-macro/Cargo.toml b/primitives/runtime-interface/proc-macro/Cargo.toml index 844ea0a749..e925f4db2e 100644 --- a/primitives/runtime-interface/proc-macro/Cargo.toml +++ b/primitives/runtime-interface/proc-macro/Cargo.toml @@ -1,11 +1,13 @@ [package] name = "sp-runtime-interface-proc-macro" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" homepage = "https://substrate.dev" repository = "https://github.com/paritytech/substrate/" +description = "This crate provides procedural macros for usage within the context of the Substrate runtime interface." +documentation = "https://docs.rs/sp-runtime-interface-proc-macro" [lib] proc-macro = true diff --git a/primitives/runtime-interface/test-wasm/Cargo.toml b/primitives/runtime-interface/test-wasm/Cargo.toml index 849237b90b..b322e529d6 100644 --- a/primitives/runtime-interface/test-wasm/Cargo.toml +++ b/primitives/runtime-interface/test-wasm/Cargo.toml @@ -10,10 +10,10 @@ repository = "https://github.com/paritytech/substrate/" publish = false [dependencies] -sp-runtime-interface = { version = "2.0.0-alpha.1", default-features = false, path = "../" } -sp-std = { version = "2.0.0-alpha.1", default-features = false, path = "../../std" } -sp-io = { version = "2.0.0-alpha.1", default-features = false, path = "../../io" } -sp-core = { version = "2.0.0-alpha.1", default-features = false, path = "../../core" } +sp-runtime-interface = { version = "2.0.0-alpha.2", default-features = false, path = "../" } +sp-std = { version = "2.0.0-alpha.2", default-features = false, path = "../../std" } +sp-io = { version = "2.0.0-alpha.2", default-features = false, path = "../../io" } +sp-core = { version = "2.0.0-alpha.2", default-features = false, path = "../../core" } [build-dependencies] wasm-builder-runner = { version = "1.0.5", package = "substrate-wasm-builder-runner", path = "../../../utils/wasm-builder-runner" } diff --git a/primitives/runtime-interface/test/Cargo.toml b/primitives/runtime-interface/test/Cargo.toml index 1215748370..6694272529 100644 --- a/primitives/runtime-interface/test/Cargo.toml +++ b/primitives/runtime-interface/test/Cargo.toml @@ -9,9 +9,9 @@ homepage = "https://substrate.dev" repository = "https://github.com/paritytech/substrate/" [dependencies] -sp-runtime-interface = { version = "2.0.0-alpha.1", path = "../" } -sc-executor = { version = "0.8.0-alpha.1", path = "../../../client/executor" } +sp-runtime-interface = { version = "2.0.0-alpha.2", path = "../" } +sc-executor = { version = "0.8.0-alpha.2", path = "../../../client/executor" } sp-runtime-interface-test-wasm = { version = "2.0.0-dev", path = "../test-wasm" } -sp-state-machine = { version = "0.8.0-alpha.1", path = "../../../primitives/state-machine" } -sp-core = { version = "2.0.0-alpha.1", path = "../../core" } -sp-io = { version = "2.0.0-alpha.1", path = "../../io" } +sp-state-machine = { version = "0.8.0-alpha.2", path = "../../../primitives/state-machine" } +sp-core = { version = "2.0.0-alpha.2", path = "../../core" } +sp-io = { version = "2.0.0-alpha.2", path = "../../io" } diff --git a/primitives/runtime/Cargo.toml b/primitives/runtime/Cargo.toml index ff73aa377d..37e6060bd3 100644 --- a/primitives/runtime/Cargo.toml +++ b/primitives/runtime/Cargo.toml @@ -1,25 +1,28 @@ [package] name = "sp-runtime" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" homepage = "https://substrate.dev" repository = "https://github.com/paritytech/substrate/" +description = "Runtime Modules shared primitive types." +documentation = "https://docs.rs/sp-runtime" + [dependencies] serde = { version = "1.0.101", optional = true, features = ["derive"] } codec = { package = "parity-scale-codec", version = "1.1.2", default-features = false, features = ["derive"] } -sp-core = { version = "2.0.0-alpha.1", default-features = false, path = "../core" } -sp-application-crypto = { version = "2.0.0-alpha.1", default-features = false, path = "../application-crypto" } -sp-arithmetic = { version = "2.0.0-alpha.1", default-features = false, path = "../arithmetic" } -sp-std = { version = "2.0.0-alpha.1", default-features = false, path = "../std" } -sp-io = { version = "2.0.0-alpha.1", default-features = false, path = "../io" } +sp-core = { version = "2.0.0-alpha.2", default-features = false, path = "../core" } +sp-application-crypto = { version = "2.0.0-alpha.2", default-features = false, path = "../application-crypto" } +sp-arithmetic = { version = "2.0.0-alpha.2", default-features = false, path = "../arithmetic" } +sp-std = { version = "2.0.0-alpha.2", default-features = false, path = "../std" } +sp-io = { version = "2.0.0-alpha.2", default-features = false, path = "../io" } log = { version = "0.4.8", optional = true } paste = "0.1.6" rand = { version = "0.7.2", optional = true } impl-trait-for-tuples = "0.1.3" -sp-inherents = { version = "2.0.0-alpha.1", default-features = false, path = "../inherents" } +sp-inherents = { version = "2.0.0-alpha.2", default-features = false, path = "../inherents" } parity-util-mem = { version = "0.5.1", default-features = false, features = ["primitive-types"] } [dev-dependencies] diff --git a/primitives/sandbox/Cargo.toml b/primitives/sandbox/Cargo.toml index 2bdd7d221c..aba1bdf245 100755 --- a/primitives/sandbox/Cargo.toml +++ b/primitives/sandbox/Cargo.toml @@ -1,18 +1,19 @@ [package] name = "sp-sandbox" -version = "0.8.0-alpha.1" +version = "0.8.0-alpha.2" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" homepage = "https://substrate.dev" repository = "https://github.com/paritytech/substrate/" +description = "This crate provides means to instantiate and execute wasm modules." [dependencies] wasmi = { version = "0.6.2", optional = true } -sp-core = { version = "2.0.0-alpha.1", default-features = false, path = "../core" } -sp-std = { version = "2.0.0-alpha.1", default-features = false, path = "../std" } -sp-io = { version = "2.0.0-alpha.1", default-features = false, path = "../io" } -sp-wasm-interface = { version = "2.0.0-alpha.1", default-features = false, path = "../wasm-interface" } +sp-core = { version = "2.0.0-alpha.2", default-features = false, path = "../core" } +sp-std = { version = "2.0.0-alpha.2", default-features = false, path = "../std" } +sp-io = { version = "2.0.0-alpha.2", default-features = false, path = "../io" } +sp-wasm-interface = { version = "2.0.0-alpha.2", default-features = false, path = "../wasm-interface" } codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false } [dev-dependencies] diff --git a/primitives/serializer/Cargo.toml b/primitives/serializer/Cargo.toml index 4d784a27bb..f71a4af678 100644 --- a/primitives/serializer/Cargo.toml +++ b/primitives/serializer/Cargo.toml @@ -1,11 +1,13 @@ [package] name = "sp-serializer" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" homepage = "https://substrate.dev" repository = "https://github.com/paritytech/substrate/" +description = "Substrate customizable serde serializer." +documentation = "https://docs.rs/sp-serializer" [dependencies] serde = "1.0.101" diff --git a/primitives/session/Cargo.toml b/primitives/session/Cargo.toml index 9042b17630..c644ec1518 100644 --- a/primitives/session/Cargo.toml +++ b/primitives/session/Cargo.toml @@ -1,17 +1,18 @@ [package] name = "sp-session" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" homepage = "https://substrate.dev" repository = "https://github.com/paritytech/substrate/" +description = "Primitives for sessions" [dependencies] -sp-api = { version = "2.0.0-alpha.1", default-features = false, path = "../api" } -sp-std = { version = "2.0.0-alpha.1", default-features = false, path = "../std" } -sp-core = { version = "2.0.0-alpha.1", default-features = false, path = "../core" } -sp-runtime = { version = "2.0.0-alpha.1", optional = true, path = "../runtime" } +sp-api = { version = "2.0.0-alpha.2", default-features = false, path = "../api" } +sp-std = { version = "2.0.0-alpha.2", default-features = false, path = "../std" } +sp-core = { version = "2.0.0-alpha.2", default-features = false, path = "../core" } +sp-runtime = { version = "2.0.0-alpha.2", optional = true, path = "../runtime" } [features] default = [ "std" ] diff --git a/primitives/staking/Cargo.toml b/primitives/staking/Cargo.toml index 688c95e49d..39f6467d43 100644 --- a/primitives/staking/Cargo.toml +++ b/primitives/staking/Cargo.toml @@ -1,16 +1,17 @@ [package] name = "sp-staking" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" homepage = "https://substrate.dev" repository = "https://github.com/paritytech/substrate/" +description = "A crate which contains primitives that are useful for implementation that uses staking approaches in general. Definitions related to sessions, slashing, etc go here." [dependencies] codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } -sp-runtime = { version = "2.0.0-alpha.1", default-features = false, path = "../runtime" } -sp-std = { version = "2.0.0-alpha.1", default-features = false, path = "../std" } +sp-runtime = { version = "2.0.0-alpha.2", default-features = false, path = "../runtime" } +sp-std = { version = "2.0.0-alpha.2", default-features = false, path = "../std" } [features] default = ["std"] diff --git a/primitives/state-machine/Cargo.toml b/primitives/state-machine/Cargo.toml index 7ddb3160f7..fed71d3edc 100644 --- a/primitives/state-machine/Cargo.toml +++ b/primitives/state-machine/Cargo.toml @@ -1,12 +1,13 @@ [package] name = "sp-state-machine" -version = "0.8.0-alpha.1" +version = "0.8.0-alpha.2" authors = ["Parity Technologies "] description = "Substrate State Machine" edition = "2018" license = "GPL-3.0" homepage = "https://substrate.dev" repository = "https://github.com/paritytech/substrate/" +documentation = "https://docs.rs/sp-state-machine" [dependencies] log = "0.4.8" @@ -14,13 +15,13 @@ parking_lot = "0.10.0" hash-db = "0.15.2" trie-db = "0.20.0" trie-root = "0.16.0" -sp-trie = { version = "2.0.0-alpha.1", path = "../trie" } -sp-core = { version = "2.0.0-alpha.1", path = "../core" } -sp-panic-handler = { version = "2.0.0-alpha.1", path = "../panic-handler" } +sp-trie = { version = "2.0.0-alpha.2", path = "../trie" } +sp-core = { version = "2.0.0-alpha.2", path = "../core" } +sp-panic-handler = { version = "2.0.0-alpha.2", path = "../panic-handler" } codec = { package = "parity-scale-codec", version = "1.0.0" } num-traits = "0.2.8" rand = "0.7.2" -sp-externalities = { version = "0.8.0-alpha.1", path = "../externalities" } +sp-externalities = { version = "0.8.0-alpha.2", path = "../externalities" } [dev-dependencies] hex-literal = "0.2.1" diff --git a/primitives/std/Cargo.toml b/primitives/std/Cargo.toml index e698c978a8..6799540939 100644 --- a/primitives/std/Cargo.toml +++ b/primitives/std/Cargo.toml @@ -1,12 +1,15 @@ [package] name = "sp-std" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" homepage = "https://substrate.dev" repository = "https://github.com/paritytech/substrate/" +description = "Lowest-abstraction level for the Substrate runtime: just exports useful primitives from std or client/alloc to be used with any code that depends on the runtime." +documentation = "https://docs.rs/sp-std" + [features] default = ["std"] std = [] diff --git a/primitives/storage/Cargo.toml b/primitives/storage/Cargo.toml index c84eb4c52c..863800bf15 100644 --- a/primitives/storage/Cargo.toml +++ b/primitives/storage/Cargo.toml @@ -1,18 +1,19 @@ [package] name = "sp-storage" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" authors = ["Parity Technologies "] edition = "2018" description = "Storage related primitives" license = "GPL-3.0" homepage = "https://substrate.dev" repository = "https://github.com/paritytech/substrate/" +documentation = "https://docs.rs/sp-storage/" [dependencies] -sp-std = { version = "2.0.0-alpha.1", default-features = false, path = "../std" } +sp-std = { version = "2.0.0-alpha.2", default-features = false, path = "../std" } serde = { version = "1.0.101", optional = true, features = ["derive"] } impl-serde = { version = "0.2.3", optional = true } -sp-debug-derive = { version = "2.0.0-alpha.1", path = "../debug-derive" } +sp-debug-derive = { version = "2.0.0-alpha.2", path = "../debug-derive" } [features] default = [ "std" ] diff --git a/primitives/test-primitives/Cargo.toml b/primitives/test-primitives/Cargo.toml index 83e92957ed..5c1bf0db0f 100644 --- a/primitives/test-primitives/Cargo.toml +++ b/primitives/test-primitives/Cargo.toml @@ -9,11 +9,11 @@ repository = "https://github.com/paritytech/substrate/" publish = false [dependencies] -sp-application-crypto = { version = "2.0.0-alpha.1", default-features = false, path = "../application-crypto" } +sp-application-crypto = { version = "2.0.0-alpha.2", default-features = false, path = "../application-crypto" } codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } -sp-core = { version = "2.0.0-alpha.1", default-features = false, path = "../core" } +sp-core = { version = "2.0.0-alpha.2", default-features = false, path = "../core" } serde = { version = "1.0.101", optional = true, features = ["derive"] } -sp-runtime = { version = "2.0.0-alpha.1", default-features = false, path = "../runtime" } +sp-runtime = { version = "2.0.0-alpha.2", default-features = false, path = "../runtime" } parity-util-mem = { version = "0.5.1", default-features = false, features = ["primitive-types"] } [features] diff --git a/primitives/timestamp/Cargo.toml b/primitives/timestamp/Cargo.toml index 82c5ab8f1b..790b6e9594 100644 --- a/primitives/timestamp/Cargo.toml +++ b/primitives/timestamp/Cargo.toml @@ -1,18 +1,19 @@ [package] name = "sp-timestamp" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" homepage = "https://substrate.dev" repository = "https://github.com/paritytech/substrate/" +description = "Substrate core types and inherents for timestamps." [dependencies] -sp-api = { version = "2.0.0-alpha.1", default-features = false, path = "../api" } -sp-std = { version = "2.0.0-alpha.1", default-features = false, path = "../std" } -sp-runtime = { version = "2.0.0-alpha.1", default-features = false, path = "../runtime" } +sp-api = { version = "2.0.0-alpha.2", default-features = false, path = "../api" } +sp-std = { version = "2.0.0-alpha.2", default-features = false, path = "../std" } +sp-runtime = { version = "2.0.0-alpha.2", default-features = false, path = "../runtime" } codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } -sp-inherents = { version = "2.0.0-alpha.1", default-features = false, path = "../inherents" } +sp-inherents = { version = "2.0.0-alpha.2", default-features = false, path = "../inherents" } impl-trait-for-tuples = "0.1.3" wasm-timer = "0.2" diff --git a/primitives/transaction-pool/Cargo.toml b/primitives/transaction-pool/Cargo.toml index 3cafd8f679..30d60d94f1 100644 --- a/primitives/transaction-pool/Cargo.toml +++ b/primitives/transaction-pool/Cargo.toml @@ -1,11 +1,14 @@ [package] name = "sp-transaction-pool" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" homepage = "https://substrate.dev" repository = "https://github.com/paritytech/substrate/" +description = "Transaction pool primitives types & Runtime API." +documentation = "https://docs.rs/sp-transaction-pool" + [dependencies] codec = { package = "parity-scale-codec", version = "1.0.0", optional = true } @@ -13,8 +16,8 @@ derive_more = { version = "0.99.2", optional = true } futures = { version = "0.3.1", optional = true } log = { version = "0.4.8", optional = true } serde = { version = "1.0.101", features = ["derive"], optional = true} -sp-api = { version = "2.0.0-alpha.1", default-features = false, path = "../api" } -sp-runtime = { version = "2.0.0-alpha.1", default-features = false, path = "../runtime" } +sp-api = { version = "2.0.0-alpha.2", default-features = false, path = "../api" } +sp-runtime = { version = "2.0.0-alpha.2", default-features = false, path = "../runtime" } [features] default = [ "std" ] diff --git a/primitives/trie/Cargo.toml b/primitives/trie/Cargo.toml index c448275eb0..451502618d 100644 --- a/primitives/trie/Cargo.toml +++ b/primitives/trie/Cargo.toml @@ -1,12 +1,13 @@ [package] name = "sp-trie" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" authors = ["Parity Technologies "] description = "Patricia trie stuff using a parity-scale-codec node format" repository = "https://github.com/paritytech/substrate/" license = "GPL-3.0" edition = "2018" homepage = "https://substrate.dev" +documentation = "https://docs.rs/sp-trie" [[bench]] name = "bench" @@ -14,12 +15,12 @@ harness = false [dependencies] codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false } -sp-std = { version = "2.0.0-alpha.1", default-features = false, path = "../std" } +sp-std = { version = "2.0.0-alpha.2", default-features = false, path = "../std" } hash-db = { version = "0.15.2", default-features = false } trie-db = { version = "0.20.0", default-features = false } trie-root = { version = "0.16.0", default-features = false } memory-db = { version = "0.19.0", default-features = false } -sp-core = { version = "2.0.0-alpha.1", default-features = false, path = "../core" } +sp-core = { version = "2.0.0-alpha.2", default-features = false, path = "../core" } [dev-dependencies] trie-bench = "0.20.0" diff --git a/primitives/version/Cargo.toml b/primitives/version/Cargo.toml index 128ff39960..2b3e64e561 100644 --- a/primitives/version/Cargo.toml +++ b/primitives/version/Cargo.toml @@ -1,18 +1,21 @@ [package] name = "sp-version" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" homepage = "https://substrate.dev" repository = "https://github.com/paritytech/substrate/" +description = "Version module for the Substrate runtime; Provides a function that returns the runtime version." +documentation = "https://docs.rs/sp-version" + [dependencies] impl-serde = { version = "0.2.3", optional = true } serde = { version = "1.0.101", optional = true, features = ["derive"] } codec = { package = "parity-scale-codec", version = "1.1.2", default-features = false, features = ["derive"] } -sp-std = { version = "2.0.0-alpha.1", default-features = false, path = "../std" } -sp-runtime = { version = "2.0.0-alpha.1", default-features = false, path = "../runtime" } +sp-std = { version = "2.0.0-alpha.2", default-features = false, path = "../std" } +sp-runtime = { version = "2.0.0-alpha.2", default-features = false, path = "../runtime" } [features] default = ["std"] diff --git a/primitives/wasm-interface/Cargo.toml b/primitives/wasm-interface/Cargo.toml index f05f1a0bfb..230ebe9624 100644 --- a/primitives/wasm-interface/Cargo.toml +++ b/primitives/wasm-interface/Cargo.toml @@ -1,16 +1,18 @@ [package] name = "sp-wasm-interface" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" homepage = "https://substrate.dev" repository = "https://github.com/paritytech/substrate/" +description = "Types and traits for interfacing between the host and the wasm runtime." +documentation = "https://docs.rs/sp-wasm-interface" [dependencies] wasmi = { version = "0.6.2", optional = true } impl-trait-for-tuples = "0.1.2" -sp-std = { version = "2.0.0-alpha.1", path = "../std", default-features = false } +sp-std = { version = "2.0.0-alpha.2", path = "../std", default-features = false } codec = { package = "parity-scale-codec", version = "1.1.2", default-features = false, features = ["derive"] } [features] diff --git a/test-utils/Cargo.toml b/test-utils/Cargo.toml index d7664f1e12..0fb86dd067 100644 --- a/test-utils/Cargo.toml +++ b/test-utils/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "substrate-test-utils" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" diff --git a/test-utils/client/Cargo.toml b/test-utils/client/Cargo.toml index 3b677b08be..9b5763272c 100644 --- a/test-utils/client/Cargo.toml +++ b/test-utils/client/Cargo.toml @@ -9,16 +9,16 @@ repository = "https://github.com/paritytech/substrate/" publish = false [dependencies] -sc-client-api = { version = "2.0.0-alpha.1", path = "../../client/api" } -sc-client = { version = "0.8.0-alpha.1", path = "../../client/" } -sc-client-db = { version = "0.8.0-alpha.1", features = ["test-helpers"], path = "../../client/db" } -sp-consensus = { version = "0.8.0-alpha.1", path = "../../primitives/consensus/common" } -sc-executor = { version = "0.8.0-alpha.1", path = "../../client/executor" } +sc-client-api = { version = "2.0.0-alpha.2", path = "../../client/api" } +sc-client = { version = "0.8.0-alpha.2", path = "../../client/" } +sc-client-db = { version = "0.8.0-alpha.2", features = ["test-helpers"], path = "../../client/db" } +sp-consensus = { version = "0.8.0-alpha.2", path = "../../primitives/consensus/common" } +sc-executor = { version = "0.8.0-alpha.2", path = "../../client/executor" } futures = "0.3.1" hash-db = "0.15.2" -sp-keyring = { version = "2.0.0-alpha.1", path = "../../primitives/keyring" } +sp-keyring = { version = "2.0.0-alpha.2", path = "../../primitives/keyring" } codec = { package = "parity-scale-codec", version = "1.0.0" } -sp-core = { version = "2.0.0-alpha.1", path = "../../primitives/core" } -sp-runtime = { version = "2.0.0-alpha.1", path = "../../primitives/runtime" } -sp-blockchain = { version = "2.0.0-alpha.1", path = "../../primitives/blockchain" } -sp-state-machine = { version = "0.8.0-alpha.1", path = "../../primitives/state-machine" } +sp-core = { version = "2.0.0-alpha.2", path = "../../primitives/core" } +sp-runtime = { version = "2.0.0-alpha.2", path = "../../primitives/runtime" } +sp-blockchain = { version = "2.0.0-alpha.2", path = "../../primitives/blockchain" } +sp-state-machine = { version = "0.8.0-alpha.2", path = "../../primitives/state-machine" } diff --git a/test-utils/runtime/Cargo.toml b/test-utils/runtime/Cargo.toml index 339aafa6e9..57ee6c0358 100644 --- a/test-utils/runtime/Cargo.toml +++ b/test-utils/runtime/Cargo.toml @@ -10,42 +10,42 @@ repository = "https://github.com/paritytech/substrate/" publish = false [dependencies] -sp-application-crypto = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/application-crypto" } -sp-consensus-aura = { version = "0.8.0-alpha.1", default-features = false, path = "../../primitives/consensus/aura" } -sp-consensus-babe = { version = "0.8.0-alpha.1", default-features = false, path = "../../primitives/consensus/babe" } -sp-block-builder = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/block-builder" } +sp-application-crypto = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/application-crypto" } +sp-consensus-aura = { version = "0.8.0-alpha.2", default-features = false, path = "../../primitives/consensus/aura" } +sp-consensus-babe = { version = "0.8.0-alpha.2", default-features = false, path = "../../primitives/consensus/babe" } +sp-block-builder = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/block-builder" } cfg-if = "0.1.10" codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } -frame-executive = { version = "2.0.0-alpha.1", default-features = false, path = "../../frame/executive" } -sp-inherents = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/inherents" } -sp-keyring = { version = "2.0.0-alpha.1", optional = true, path = "../../primitives/keyring" } +frame-executive = { version = "2.0.0-alpha.2", default-features = false, path = "../../frame/executive" } +sp-inherents = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/inherents" } +sp-keyring = { version = "2.0.0-alpha.2", optional = true, path = "../../primitives/keyring" } log = { version = "0.4.8", optional = true } memory-db = { version = "0.19.0", default-features = false } -sp-offchain = { path = "../../primitives/offchain", default-features = false, version = "2.0.0-alpha.1"} -sp-core = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/core" } -sp-std = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/std" } -sp-runtime-interface = { path = "../../primitives/runtime-interface", default-features = false, version = "2.0.0-alpha.1"} -sp-io = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/io" } -frame-support = { version = "2.0.0-alpha.1", default-features = false, path = "../../frame/support" } -sp-version = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/version" } +sp-offchain = { path = "../../primitives/offchain", default-features = false, version = "2.0.0-alpha.2"} +sp-core = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/core" } +sp-std = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/std" } +sp-runtime-interface = { path = "../../primitives/runtime-interface", default-features = false, version = "2.0.0-alpha.2"} +sp-io = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/io" } +frame-support = { version = "2.0.0-alpha.2", default-features = false, path = "../../frame/support" } +sp-version = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/version" } serde = { version = "1.0.101", optional = true, features = ["derive"] } -sp-session = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/session" } -sp-api = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/api" } -sp-runtime = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/runtime" } -pallet-babe = { version = "2.0.0-alpha.1", default-features = false, path = "../../frame/babe" } -frame-system = { version = "2.0.0-alpha.1", default-features = false, path = "../../frame/system" } -frame-system-rpc-runtime-api = { version = "2.0.0-alpha.1", default-features = false, path = "../../frame/system/rpc/runtime-api" } -pallet-timestamp = { version = "2.0.0-alpha.1", default-features = false, path = "../../frame/timestamp" } -sc-client = { version = "0.8.0-alpha.1", optional = true, path = "../../client" } -sp-trie = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/trie" } -sp-transaction-pool = { version = "2.0.0-alpha.1", default-features = false, path = "../../primitives/transaction-pool" } +sp-session = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/session" } +sp-api = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/api" } +sp-runtime = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/runtime" } +pallet-babe = { version = "2.0.0-alpha.2", default-features = false, path = "../../frame/babe" } +frame-system = { version = "2.0.0-alpha.2", default-features = false, path = "../../frame/system" } +frame-system-rpc-runtime-api = { version = "2.0.0-alpha.2", default-features = false, path = "../../frame/system/rpc/runtime-api" } +pallet-timestamp = { version = "2.0.0-alpha.2", default-features = false, path = "../../frame/timestamp" } +sc-client = { version = "0.8.0-alpha.2", optional = true, path = "../../client" } +sp-trie = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/trie" } +sp-transaction-pool = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/transaction-pool" } trie-db = { version = "0.20.0", default-features = false } parity-util-mem = { version = "0.5.1", default-features = false, features = ["primitive-types"] } [dev-dependencies] -sc-executor = { version = "0.8.0-alpha.1", path = "../../client/executor" } +sc-executor = { version = "0.8.0-alpha.2", path = "../../client/executor" } substrate-test-runtime-client = { version = "2.0.0-dev", path = "./client" } -sp-state-machine = { version = "0.8.0-alpha.1", path = "../../primitives/state-machine" } +sp-state-machine = { version = "0.8.0-alpha.2", path = "../../primitives/state-machine" } [build-dependencies] wasm-builder-runner = { version = "1.0.5", package = "substrate-wasm-builder-runner", path = "../../utils/wasm-builder-runner" } diff --git a/test-utils/runtime/client/Cargo.toml b/test-utils/runtime/client/Cargo.toml index 135eaa9b81..a6844d7ff9 100644 --- a/test-utils/runtime/client/Cargo.toml +++ b/test-utils/runtime/client/Cargo.toml @@ -9,14 +9,14 @@ repository = "https://github.com/paritytech/substrate/" publish = false [dependencies] -sc-block-builder = { version = "0.8.0-alpha.1", path = "../../../client/block-builder" } +sc-block-builder = { version = "0.8.0-alpha.2", path = "../../../client/block-builder" } substrate-test-client = { version = "2.0.0-dev", path = "../../client" } -sp-core = { version = "2.0.0-alpha.1", path = "../../../primitives/core" } +sp-core = { version = "2.0.0-alpha.2", path = "../../../primitives/core" } substrate-test-runtime = { version = "2.0.0-dev", path = "../../runtime" } -sp-runtime = { version = "2.0.0-alpha.1", path = "../../../primitives/runtime" } -sp-api = { version = "2.0.0-alpha.1", path = "../../../primitives/api" } -sp-blockchain = { version = "2.0.0-alpha.1", path = "../../../primitives/blockchain" } +sp-runtime = { version = "2.0.0-alpha.2", path = "../../../primitives/runtime" } +sp-api = { version = "2.0.0-alpha.2", path = "../../../primitives/api" } +sp-blockchain = { version = "2.0.0-alpha.2", path = "../../../primitives/blockchain" } codec = { package = "parity-scale-codec", version = "1.0.0" } -sc-client-api = { version = "2.0.0-alpha.1", path = "../../../client/api" } -sc-client = { version = "0.8.0-alpha.1", path = "../../../client/" } +sc-client-api = { version = "2.0.0-alpha.2", path = "../../../client/api" } +sc-client = { version = "0.8.0-alpha.2", path = "../../../client/" } futures = "0.3.1" diff --git a/test-utils/runtime/transaction-pool/Cargo.toml b/test-utils/runtime/transaction-pool/Cargo.toml index c18337ddeb..543b466a85 100644 --- a/test-utils/runtime/transaction-pool/Cargo.toml +++ b/test-utils/runtime/transaction-pool/Cargo.toml @@ -12,9 +12,9 @@ publish = false substrate-test-runtime-client = { version = "2.0.0-dev", path = "../client" } parking_lot = "0.10.0" codec = { package = "parity-scale-codec", version = "1.0.0" } -sp-blockchain = { version = "2.0.0-alpha.1", path = "../../../primitives/blockchain" } -sp-runtime = { version = "2.0.0-alpha.1", path = "../../../primitives/runtime" } -sp-transaction-pool = { version = "2.0.0-alpha.1", path = "../../../primitives/transaction-pool" } -sc-transaction-graph = { version = "2.0.0-alpha.1", path = "../../../client/transaction-pool/graph" } +sp-blockchain = { version = "2.0.0-alpha.2", path = "../../../primitives/blockchain" } +sp-runtime = { version = "2.0.0-alpha.2", path = "../../../primitives/runtime" } +sp-transaction-pool = { version = "2.0.0-alpha.2", path = "../../../primitives/transaction-pool" } +sc-transaction-graph = { version = "2.0.0-alpha.2", path = "../../../client/transaction-pool/graph" } futures = { version = "0.3.1", features = ["compat"] } derive_more = "0.99.2" diff --git a/utils/browser/Cargo.toml b/utils/browser/Cargo.toml index c6bb74857b..69df8c8601 100644 --- a/utils/browser/Cargo.toml +++ b/utils/browser/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "browser-utils" -version = "0.8.0-alpha.1" +version = "0.8.0-alpha.2" authors = ["Parity Technologies "] description = "Utilities for creating a browser light-client." edition = "2018" @@ -19,10 +19,10 @@ js-sys = "0.3.34" wasm-bindgen = "0.2.57" wasm-bindgen-futures = "0.4.7" kvdb-web = "0.4" -sc-informant = { version = "0.8.0-alpha.1", path = "../../client/informant" } -sc-service = { version = "0.8.0-alpha.1", path = "../../client/service", default-features = false } -sc-network = { path = "../../client/network" , version = "0.8.0-alpha.1"} -sc-chain-spec = { path = "../../client/chain-spec" , version = "2.0.0-alpha.1"} +sc-informant = { version = "0.8.0-alpha.2", path = "../../client/informant" } +sc-service = { version = "0.8.0-alpha.2", path = "../../client/service", default-features = false } +sc-network = { path = "../../client/network" , version = "0.8.0-alpha.2"} +sc-chain-spec = { path = "../../client/chain-spec" , version = "2.0.0-alpha.2"} # Imported just for the `no_cc` feature clear_on_drop = { version = "0.2.3", features = ["no_cc"] } diff --git a/utils/build-script-utils/Cargo.toml b/utils/build-script-utils/Cargo.toml index e590e8ac1b..a380cdbf8c 100644 --- a/utils/build-script-utils/Cargo.toml +++ b/utils/build-script-utils/Cargo.toml @@ -1,10 +1,11 @@ [package] name = "substrate-build-script-utils" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" homepage = "https://substrate.dev" repository = "https://github.com/paritytech/substrate/" +description = "Crate with utility functions for `build.rs` scripts." [dependencies] diff --git a/utils/fork-tree/Cargo.toml b/utils/fork-tree/Cargo.toml index 2056cd9819..57a89ad3d9 100644 --- a/utils/fork-tree/Cargo.toml +++ b/utils/fork-tree/Cargo.toml @@ -1,11 +1,13 @@ [package] name = "fork-tree" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" homepage = "https://substrate.dev" repository = "https://github.com/paritytech/substrate/" +description = "Utility library for managing tree-like ordered data with logic for pruning the tree while finalizing nodes." +documentation = "https://docs.rs/fork-tree" [dependencies] codec = { package = "parity-scale-codec", version = "1.0.0", features = ["derive"] } diff --git a/utils/frame/benchmarking-cli/Cargo.toml b/utils/frame/benchmarking-cli/Cargo.toml index 5d83902bf0..9e9e59c0ad 100644 --- a/utils/frame/benchmarking-cli/Cargo.toml +++ b/utils/frame/benchmarking-cli/Cargo.toml @@ -1,19 +1,20 @@ [package] name = "frame-benchmarking-cli" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" homepage = "https://substrate.dev" repository = "https://github.com/paritytech/substrate/" +description = "CLI for benchmarking FRAME" [dependencies] -frame-benchmarking = { version = "2.0.0-alpha.1", path = "../../../frame/benchmarking" } -sc-service = { version = "0.8.0-alpha.1", path = "../../../client/service" } -sc-cli = { version = "0.8.0-alpha.1", path = "../../../client/cli" } -sc-client = { version = "0.8.0-alpha.1", path = "../../../client" } -sc-client-db = { version = "0.8.0-alpha.1", path = "../../../client/db" } -sc-executor = { version = "0.8.0-alpha.1", path = "../../../client/executor" } -sp-runtime = { version = "2.0.0-alpha.1", path = "../../../primitives/runtime" } +frame-benchmarking = { version = "2.0.0-alpha.2", path = "../../../frame/benchmarking" } +sc-service = { version = "0.8.0-alpha.2", path = "../../../client/service" } +sc-cli = { version = "0.8.0-alpha.2", path = "../../../client/cli" } +sc-client = { version = "0.8.0-alpha.2", path = "../../../client" } +sc-client-db = { version = "0.8.0-alpha.2", path = "../../../client/db" } +sc-executor = { version = "0.8.0-alpha.2", path = "../../../client/executor" } +sp-runtime = { version = "2.0.0-alpha.2", path = "../../../primitives/runtime" } structopt = "0.3.8" codec = { version = "1.1.2", package = "parity-scale-codec" } diff --git a/utils/frame/rpc/support/Cargo.toml b/utils/frame/rpc/support/Cargo.toml index 01bdd5d73c..6b9a26b399 100644 --- a/utils/frame/rpc/support/Cargo.toml +++ b/utils/frame/rpc/support/Cargo.toml @@ -1,11 +1,12 @@ [package] name = "substrate-frame-rpc-support" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" authors = ["Parity Technologies ", "Andrew Dirksen "] edition = "2018" license = "GPL-3.0" homepage = "https://substrate.dev" repository = "https://github.com/paritytech/substrate/" +description = "Substrate RPC for FRAME's support" [dependencies] futures = { version = "0.3.0", features = ["compat"] } @@ -13,10 +14,10 @@ jsonrpc-client-transports = "14" jsonrpc-core = "14" codec = { package = "parity-scale-codec", version = "1" } serde = "1" -frame-support = { version = "2.0.0-alpha.1", path = "../../../../frame/support" } -sp-storage = { version = "2.0.0-alpha.1", path = "../../../../primitives/storage" } -sc-rpc-api = { version = "0.8.0-alpha.1", path = "../../../../client/rpc-api" } +frame-support = { version = "2.0.0-alpha.2", path = "../../../../frame/support" } +sp-storage = { version = "2.0.0-alpha.2", path = "../../../../primitives/storage" } +sc-rpc-api = { version = "0.8.0-alpha.2", path = "../../../../client/rpc-api" } [dev-dependencies] -frame-system = { version = "2.0.0-alpha.1", path = "../../../../frame/system" } +frame-system = { version = "2.0.0-alpha.2", path = "../../../../frame/system" } tokio = "0.1" diff --git a/utils/frame/rpc/system/Cargo.toml b/utils/frame/rpc/system/Cargo.toml index 3bbb199499..96399be6b8 100644 --- a/utils/frame/rpc/system/Cargo.toml +++ b/utils/frame/rpc/system/Cargo.toml @@ -1,14 +1,15 @@ [package] name = "substrate-frame-rpc-system" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" homepage = "https://substrate.dev" repository = "https://github.com/paritytech/substrate/" +description = "FRAME's system exposed over Substrate RPC" [dependencies] -sc-client = { version = "0.8.0-alpha.1", path = "../../../../client/" } +sc-client = { version = "0.8.0-alpha.2", path = "../../../../client/" } codec = { package = "parity-scale-codec", version = "1.0.0" } futures = "0.3.1" jsonrpc-core = "14.0.3" @@ -16,14 +17,14 @@ jsonrpc-core-client = "14.0.3" jsonrpc-derive = "14.0.3" log = "0.4.8" serde = { version = "1.0.101", features = ["derive"] } -sp-runtime = { version = "2.0.0-alpha.1", path = "../../../../primitives/runtime" } -sp-api = { version = "2.0.0-alpha.1", path = "../../../../primitives/api" } -frame-system-rpc-runtime-api = { version = "2.0.0-alpha.1", path = "../../../../frame/system/rpc/runtime-api" } -sp-core = { version = "2.0.0-alpha.1", path = "../../../../primitives/core" } -sp-blockchain = { version = "2.0.0-alpha.1", path = "../../../../primitives/blockchain" } -sp-transaction-pool = { version = "2.0.0-alpha.1", path = "../../../../primitives/transaction-pool" } +sp-runtime = { version = "2.0.0-alpha.2", path = "../../../../primitives/runtime" } +sp-api = { version = "2.0.0-alpha.2", path = "../../../../primitives/api" } +frame-system-rpc-runtime-api = { version = "2.0.0-alpha.2", path = "../../../../frame/system/rpc/runtime-api" } +sp-core = { version = "2.0.0-alpha.2", path = "../../../../primitives/core" } +sp-blockchain = { version = "2.0.0-alpha.2", path = "../../../../primitives/blockchain" } +sp-transaction-pool = { version = "2.0.0-alpha.2", path = "../../../../primitives/transaction-pool" } [dev-dependencies] substrate-test-runtime-client = { version = "2.0.0-dev", path = "../../../../test-utils/runtime/client" } env_logger = "0.7.0" -sc-transaction-pool = { version = "2.0.0-alpha.1", path = "../../../../client/transaction-pool" } +sc-transaction-pool = { version = "2.0.0-alpha.2", path = "../../../../client/transaction-pool" } diff --git a/utils/prometheus/Cargo.toml b/utils/prometheus/Cargo.toml index 1ad32dfec5..ccbb9bd07f 100644 --- a/utils/prometheus/Cargo.toml +++ b/utils/prometheus/Cargo.toml @@ -1,7 +1,7 @@ [package] description = "Prometheus exporter server" name = "prometheus-exporter" -version = "0.8.0-alpha.1" +version = "0.8.0-alpha.2" license = "GPL-3.0" authors = ["Parity Technologies "] edition = "2018" -- GitLab From d81f60e729c928ec18782170e28ff85c274f00d5 Mon Sep 17 00:00:00 2001 From: Nikolay Volf Date: Thu, 27 Feb 2020 14:18:10 +0300 Subject: [PATCH 053/301] Fix revalidation not revalidating multiple times (#5065) --- client/transaction-pool/src/lib.rs | 1 + client/transaction-pool/src/revalidation.rs | 34 +++++++++++++++++++-- client/transaction-pool/src/testing/pool.rs | 28 +++++++++++++++++ 3 files changed, 61 insertions(+), 2 deletions(-) diff --git a/client/transaction-pool/src/lib.rs b/client/transaction-pool/src/lib.rs index a69323553f..7ee73b862a 100644 --- a/client/transaction-pool/src/lib.rs +++ b/client/transaction-pool/src/lib.rs @@ -16,6 +16,7 @@ //! Substrate transaction pool implementation. +#![recursion_limit="256"] #![warn(missing_docs)] #![warn(unused_extern_crates)] diff --git a/client/transaction-pool/src/revalidation.rs b/client/transaction-pool/src/revalidation.rs index dbf8a29354..b915f1fe71 100644 --- a/client/transaction-pool/src/revalidation.rs +++ b/client/transaction-pool/src/revalidation.rs @@ -113,7 +113,9 @@ async fn batch_revalidate( } pool.validated_pool().remove_invalid(&invalid_hashes); - pool.resubmit(revalidated); + if revalidated.len() > 0 { + pool.resubmit(revalidated); + } } impl RevalidationWorker { @@ -149,6 +151,7 @@ impl RevalidationWorker { } else { for xt in &to_queue { extrinsics.remove(xt); + self.members.remove(xt); } } left -= to_queue.len(); @@ -163,6 +166,10 @@ impl RevalidationWorker { queued_exts } + fn len(&self) -> usize { + self.block_ordered.iter().map(|b| b.1.len()).sum() + } + fn push(&mut self, worker_payload: WorkerPayload) { // we don't add something that already scheduled for revalidation let transactions = worker_payload.transactions; @@ -170,7 +177,15 @@ impl RevalidationWorker { for ext_hash in transactions { // we don't add something that already scheduled for revalidation - if self.members.contains_key(&ext_hash) { continue; } + if self.members.contains_key(&ext_hash) { + log::debug!( + target: "txpool", + "[{:?}] Skipped adding for revalidation: Already there.", + ext_hash, + ); + + continue; + } self.block_ordered.entry(block_number) .and_modify(|value| { value.insert(ext_hash.clone()); }) @@ -198,7 +213,18 @@ impl RevalidationWorker { futures::select! { _ = interval.next() => { let next_batch = this.prepare_batch(); + let batch_len = next_batch.len(); + batch_revalidate(this.pool.clone(), this.api.clone(), this.best_block, next_batch).await; + + if batch_len > 0 || this.len() > 0 { + log::debug!( + target: "txpool", + "Revalidated {} transactions. Left in the queue for revalidation: {}.", + batch_len, + this.len(), + ); + } }, workload = from_queue.next() => { match workload { @@ -264,6 +290,10 @@ where /// If queue configured without background worker, this will resolve after /// revalidation is actually done. pub async fn revalidate_later(&self, at: NumberFor, transactions: Vec>) { + if transactions.len() > 0 { + log::debug!(target: "txpool", "Added {} transactions to revalidation queue", transactions.len()); + } + if let Some(ref to_worker) = self.background { if let Err(e) = to_worker.unbounded_send(WorkerPayload { at, transactions }) { log::warn!(target: "txpool", "Failed to update background worker: {:?}", e); diff --git a/client/transaction-pool/src/testing/pool.rs b/client/transaction-pool/src/testing/pool.rs index 6984877eef..d9f54ede94 100644 --- a/client/transaction-pool/src/testing/pool.rs +++ b/client/transaction-pool/src/testing/pool.rs @@ -267,6 +267,34 @@ fn should_not_retain_invalid_hashes_from_retracted() { assert_eq!(pool.status().ready, 0); } +#[test] +fn should_revalidate_transaction_multiple_times() { + let xt = uxt(Alice, 209); + + let (pool, _guard) = maintained_pool(); + + block_on(pool.submit_one(&BlockId::number(0), xt.clone())).expect("1. Imported"); + assert_eq!(pool.status().ready, 1); + + pool.api.push_block(1, vec![xt.clone()]); + + // maintenance is in background + block_on(pool.maintain(block_event(1))); + block_on(futures_timer::Delay::new(BACKGROUND_REVALIDATION_INTERVAL*2)); + + block_on(pool.submit_one(&BlockId::number(0), xt.clone())).expect("1. Imported"); + assert_eq!(pool.status().ready, 1); + + pool.api.push_block(2, vec![]); + pool.api.add_invalid(&xt); + + // maintenance is in background + block_on(pool.maintain(block_event(2))); + block_on(futures_timer::Delay::new(BACKGROUND_REVALIDATION_INTERVAL*2)); + + assert_eq!(pool.status().ready, 0); +} + #[test] fn should_push_watchers_during_maintaince() { fn alice_uxt(nonce: u64) -> Extrinsic { -- GitLab From 6e6d06c33911151d6240c94ad5bfb30e177a4af1 Mon Sep 17 00:00:00 2001 From: Seun Lanlege Date: Thu, 27 Feb 2020 12:19:07 +0100 Subject: [PATCH 054/301] removes use of sc_client::Client from sc_finality_grandpa (#5030) * removes use of sc_client::Client from sc_finality_grandpa * code formatting * code formatting * removes use of sc_client::Client from sc_finality_grandpa --- bin/node-template/node/src/service.rs | 6 +- bin/node/cli/src/service.rs | 2 +- client/api/src/backend.rs | 9 ++ client/finality-grandpa/Cargo.toml | 3 +- client/finality-grandpa/src/environment.rs | 79 +++++------ client/finality-grandpa/src/import.rs | 87 ++++++------ client/finality-grandpa/src/justification.rs | 15 +-- client/finality-grandpa/src/lib.rs | 135 ++++++++++--------- client/finality-grandpa/src/light_import.rs | 128 ++++++++---------- client/finality-grandpa/src/observer.rs | 79 ++++++----- client/finality-grandpa/src/tests.rs | 7 +- client/src/client.rs | 90 ++++++++----- client/src/lib.rs | 2 +- 13 files changed, 333 insertions(+), 309 deletions(-) diff --git a/bin/node-template/node/src/service.rs b/bin/node-template/node/src/service.rs index 6298f194e4..6e2a766dc1 100644 --- a/bin/node-template/node/src/service.rs +++ b/bin/node-template/node/src/service.rs @@ -42,9 +42,7 @@ macro_rules! new_full_start { .ok_or_else(|| sc_service::Error::SelectChainRequired)?; let (grandpa_block_import, grandpa_link) = - grandpa::block_import::<_, _, _, node_template_runtime::RuntimeApi, _>( - client.clone(), &*client, select_chain - )?; + grandpa::block_import(client.clone(), &*client, select_chain)?; let aura_block_import = sc_consensus_aura::AuraBlockImport::<_, _, _, AuraPair>::new( grandpa_block_import.clone(), client.clone(), @@ -202,7 +200,7 @@ pub fn new_light(config: Configuration) let fetch_checker = fetcher .map(|fetcher| fetcher.checker().clone()) .ok_or_else(|| "Trying to start light import queue without active fetch checker")?; - let grandpa_block_import = grandpa::light_block_import::<_, _, _, RuntimeApi>( + let grandpa_block_import = grandpa::light_block_import( client.clone(), backend, &*client.clone(), Arc::new(fetch_checker), )?; let finality_proof_import = grandpa_block_import.clone(); diff --git a/bin/node/cli/src/service.rs b/bin/node/cli/src/service.rs index 70dd0521de..90090cdf54 100644 --- a/bin/node/cli/src/service.rs +++ b/bin/node/cli/src/service.rs @@ -314,7 +314,7 @@ pub fn new_light(config: NodeConfiguration) let fetch_checker = fetcher .map(|fetcher| fetcher.checker().clone()) .ok_or_else(|| "Trying to start light import queue without active fetch checker")?; - let grandpa_block_import = grandpa::light_block_import::<_, _, _, RuntimeApi>( + let grandpa_block_import = grandpa::light_block_import( client.clone(), backend, &*client, diff --git a/client/api/src/backend.rs b/client/api/src/backend.rs index a389af5671..c3e56e7f8b 100644 --- a/client/api/src/backend.rs +++ b/client/api/src/backend.rs @@ -169,6 +169,15 @@ pub trait BlockImportOperation { fn mark_head(&mut self, id: BlockId) -> sp_blockchain::Result<()>; } +/// Interface for performing operations on the backend. +pub trait LockImportRun> { + /// Lock the import lock, and run operations inside. + fn lock_import_and_run(&self, f: F) -> Result + where + F: FnOnce(&mut ClientImportOperation) -> Result, + Err: From; +} + /// Finalize Facilities pub trait Finalizer> { /// Mark all blocks up to given as finalized in operation. diff --git a/client/finality-grandpa/Cargo.toml b/client/finality-grandpa/Cargo.toml index 51c52ddf6e..f8774ea283 100644 --- a/client/finality-grandpa/Cargo.toml +++ b/client/finality-grandpa/Cargo.toml @@ -21,8 +21,9 @@ assert_matches = "1.3.0" parity-scale-codec = { version = "1.0.0", features = ["derive"] } sp-arithmetic = { version = "2.0.0-alpha.2", path = "../../primitives/arithmetic" } sp-runtime = { version = "2.0.0-alpha.2", path = "../../primitives/runtime" } -sp-consensus = { version = "0.8.0-alpha.2", path = "../../primitives/consensus/common" } +sp-consensus = { version = "0.8.0-alpha.1", path = "../../primitives/consensus/common" } sp-core = { version = "2.0.0-alpha.2", path = "../../primitives/core" } +sp-api = { version = "2.0.0-alpha.2", path = "../../primitives/api" } sc-telemetry = { version = "2.0.0-alpha.2", path = "../telemetry" } sc-keystore = { version = "2.0.0-alpha.2", path = "../keystore" } serde_json = "1.0.41" diff --git a/client/finality-grandpa/src/environment.rs b/client/finality-grandpa/src/environment.rs index fd88113776..dca1eab993 100644 --- a/client/finality-grandpa/src/environment.rs +++ b/client/finality-grandpa/src/environment.rs @@ -25,18 +25,14 @@ use parity_scale_codec::{Decode, Encode}; use futures::prelude::*; use futures_timer::Delay; use parking_lot::RwLock; -use sp_blockchain::{HeaderBackend, Error as ClientError}; +use sp_blockchain::{HeaderBackend, Error as ClientError, HeaderMetadata}; +use std::marker::PhantomData; use sc_client_api::{ - BlockchainEvents, - backend::{AuxStore, Backend}, - Finalizer, - call_executor::CallExecutor, + backend::Backend, utils::is_descendent_of, }; -use sc_client::{ - apply_aux, Client, -}; +use sc_client::apply_aux; use finality_grandpa::{ BlockNumberOps, Equivocation, Error as GrandpaError, round::State as RoundState, voter, voter_set::VoterSet, @@ -377,8 +373,8 @@ impl SharedVoterSetState { } /// The environment we run GRANDPA in. -pub(crate) struct Environment, RA, SC, VR> { - pub(crate) client: Arc>, +pub(crate) struct Environment, SC, VR> { + pub(crate) client: Arc, pub(crate) select_chain: SC, pub(crate) voters: Arc>, pub(crate) config: Config, @@ -388,9 +384,10 @@ pub(crate) struct Environment, RA, SC, V pub(crate) set_id: SetId, pub(crate) voter_set_state: SharedVoterSetState, pub(crate) voting_rule: VR, + pub(crate) _phantom: PhantomData, } -impl, RA, SC, VR> Environment { +impl, SC, VR> Environment { /// Updates the voter set state using the given closure. The write lock is /// held during evaluation of the closure and the environment's voter set /// state is set to its result if successful. @@ -406,17 +403,16 @@ impl, RA, SC, VR> Environment +impl finality_grandpa::Chain> -for Environment +for Environment where Block: 'static, - B: Backend + 'static, - E: CallExecutor + Send + Sync, + BE: Backend, + C: crate::ClientForGrandpa, N: NetworkT + 'static + Send, SC: SelectChain + 'static, - VR: VotingRule>, - RA: Send + Sync, + VR: VotingRule, NumberFor: BlockNumberOps, { fn ancestry(&self, base: Block::Hash, block: Block::Hash) -> Result, GrandpaError> { @@ -432,7 +428,7 @@ where return None; } - let base_header = match self.client.header(&BlockId::Hash(block)).ok()? { + let base_header = match self.client.header(BlockId::Hash(block)).ok()? { Some(h) => h, None => { debug!(target: "afg", "Encountered error finding best chain containing {:?}: couldn't find base block", block); @@ -450,7 +446,7 @@ where match self.select_chain.finality_target(block, None) { Ok(Some(best_hash)) => { - let best_header = self.client.header(&BlockId::Hash(best_hash)).ok()? + let best_header = self.client.header(BlockId::Hash(best_hash)).ok()? .expect("Header known to exist after `finality_target` call; qed"); // check if our vote is currently being limited due to a pending change @@ -474,7 +470,7 @@ where break; } - target_header = self.client.header(&BlockId::Hash(*target_header.parent_hash())).ok()? + target_header = self.client.header(BlockId::Hash(*target_header.parent_hash())).ok()? .expect("Header known to exist after `finality_target` call; qed"); } @@ -519,17 +515,16 @@ where } -pub(crate) fn ancestry( - client: &Client, +pub(crate) fn ancestry( + client: &Arc, base: Block::Hash, block: Block::Hash, ) -> Result, GrandpaError> where - B: Backend, - E: CallExecutor, + Client: HeaderMetadata, { if base == block { return Err(GrandpaError::NotDescendent) } - let tree_route_res = sp_blockchain::tree_route(client, block, base); + let tree_route_res = sp_blockchain::tree_route(&**client, block, base); let tree_route = match tree_route_res { Ok(tree_route) => tree_route, @@ -550,19 +545,17 @@ pub(crate) fn ancestry( Ok(tree_route.retracted().iter().skip(1).map(|e| e.hash).collect()) } -impl +impl voter::Environment> -for Environment +for Environment where Block: 'static, - B: Backend + 'static, - E: CallExecutor + 'static + Send + Sync, + B: Backend, + C: crate::ClientForGrandpa + 'static, N: NetworkT + 'static + Send, - RA: 'static + Send + Sync, SC: SelectChain + 'static, - VR: VotingRule>, + VR: VotingRule, NumberFor: BlockNumberOps, - Client: AuxStore, { type Timer = Pin> + Send>>; type Id = AuthorityId; @@ -882,7 +875,7 @@ where commit: Commit, ) -> Result<(), Self::Error> { finalize_block( - &*self.client, + self.client.clone(), &self.authority_set, &self.consensus_changes, Some(self.config.justification_period.into()), @@ -940,8 +933,8 @@ impl From> for JustificationOrCommit< /// authority set change is enacted then a justification is created (if not /// given) and stored with the block when finalizing it. /// This method assumes that the block being finalized has already been imported. -pub(crate) fn finalize_block( - client: &Client, +pub(crate) fn finalize_block( + client: Arc, authority_set: &SharedAuthoritySet>, consensus_changes: &SharedConsensusChanges>, justification_period: Option>, @@ -949,16 +942,16 @@ pub(crate) fn finalize_block( number: NumberFor, justification_or_commit: JustificationOrCommit, ) -> Result<(), CommandOrError>> where - B: Backend, - E: CallExecutor + Send + Sync, - RA: Send + Sync, + Block: BlockT, + BE: Backend, + Client: crate::ClientForGrandpa, { // NOTE: lock must be held through writing to DB to avoid race. this lock // also implicitly synchronizes the check for last finalized number // below. let mut authority_set = authority_set.inner().write(); - let status = client.chain_info(); + let status = client.info(); if number <= status.finalized_number && client.hash(number)? == Some(hash) { // This can happen after a forced change (triggered by the finality tracker when finality is stalled), since // the voter will be restarted at the median last finalized block, which can be lower than the local best @@ -981,14 +974,14 @@ pub(crate) fn finalize_block( let mut consensus_changes = consensus_changes.lock(); let canon_at_height = |canon_number| { // "true" because the block is finalized - canonical_at_height(client, (hash, number), true, canon_number) + canonical_at_height(&*client, (hash, number), true, canon_number) }; let update_res: Result<_, Error> = client.lock_import_and_run(|import_op| { let status = authority_set.apply_standard_changes( hash, number, - &is_descendent_of::(client, None), + &is_descendent_of::(&*client, None), ).map_err(|e| Error::Safety(e.to_string()))?; // check if this is this is the first finalization of some consensus changes @@ -1031,7 +1024,7 @@ pub(crate) fn finalize_block( // finalization to remote nodes if !justification_required { if let Some(justification_period) = justification_period { - let last_finalized_number = client.chain_info().finalized_number; + let last_finalized_number = client.info().finalized_number; justification_required = (!last_finalized_number.is_zero() || number - last_finalized_number == justification_period) && (last_finalized_number / justification_period != number / justification_period); @@ -1040,7 +1033,7 @@ pub(crate) fn finalize_block( if justification_required { let justification = GrandpaJustification::from_commit( - client, + &client, round_number, commit, )?; diff --git a/client/finality-grandpa/src/import.rs b/client/finality-grandpa/src/import.rs index 2eb1b4a7c8..28a08339dc 100644 --- a/client/finality-grandpa/src/import.rs +++ b/client/finality-grandpa/src/import.rs @@ -21,9 +21,10 @@ use parity_scale_codec::Encode; use futures::channel::mpsc; use parking_lot::RwLockWriteGuard; -use sp_blockchain::{HeaderBackend, BlockStatus, well_known_cache_keys}; -use sc_client_api::{backend::{TransactionFor, Backend}, CallExecutor, utils::is_descendent_of}; -use sc_client::Client; +use sp_blockchain::{BlockStatus, well_known_cache_keys}; +use sc_client_api::{backend::Backend, utils::is_descendent_of}; +use sp_api::{TransactionFor}; + use sp_consensus::{ BlockImport, Error as ConsensusError, BlockCheckParams, BlockImportParams, ImportResult, JustificationImport, @@ -41,6 +42,7 @@ use crate::authorities::{AuthoritySet, SharedAuthoritySet, DelayKind, PendingCha use crate::consensus_changes::SharedConsensusChanges; use crate::environment::finalize_block; use crate::justification::GrandpaJustification; +use std::marker::PhantomData; /// A block-import handler for GRANDPA. /// @@ -51,16 +53,17 @@ use crate::justification::GrandpaJustification; /// /// When using GRANDPA, the block import worker should be using this block import /// object. -pub struct GrandpaBlockImport { - inner: Arc>, +pub struct GrandpaBlockImport { + inner: Arc, select_chain: SC, authority_set: SharedAuthoritySet>, send_voter_commands: mpsc::UnboundedSender>>, consensus_changes: SharedConsensusChanges>, + _phantom: PhantomData, } -impl Clone for - GrandpaBlockImport +impl Clone for + GrandpaBlockImport { fn clone(&self) -> Self { GrandpaBlockImport { @@ -69,24 +72,24 @@ impl Clone for authority_set: self.authority_set.clone(), send_voter_commands: self.send_voter_commands.clone(), consensus_changes: self.consensus_changes.clone(), + _phantom: PhantomData, } } } -impl JustificationImport - for GrandpaBlockImport where +impl JustificationImport + for GrandpaBlockImport where NumberFor: finality_grandpa::BlockNumberOps, - B: Backend + 'static, - E: CallExecutor + 'static + Clone + Send + Sync, DigestFor: Encode, - RA: Send + Sync, + BE: Backend, + Client: crate::ClientForGrandpa, SC: SelectChain, { type Error = ConsensusError; fn on_start(&mut self) -> Vec<(Block::Hash, NumberFor)> { let mut out = Vec::new(); - let chain_info = self.inner.chain_info(); + let chain_info = self.inner.info(); // request justifications for all pending changes for which change blocks have already been imported let authorities = self.authority_set.inner().read(); @@ -105,7 +108,7 @@ impl JustificationImport }; if let Ok(Some(hash)) = effective_block_hash { - if let Ok(Some(header)) = self.inner.header(&BlockId::Hash(hash)) { + if let Ok(Some(header)) = self.inner.header(BlockId::Hash(hash)) { if *header.number() == pending_change.effective_number() { out.push((header.hash(), *header.number())); } @@ -123,7 +126,7 @@ impl JustificationImport number: NumberFor, justification: Justification, ) -> Result<(), Self::Error> { - self.import_justification(hash, number, justification, false) + GrandpaBlockImport::import_justification(self, hash, number, justification, false) } } @@ -200,14 +203,13 @@ fn find_forced_change(header: &B::Header) header.digest().convert_first(|l| l.try_to(id).and_then(filter_log)) } -impl - GrandpaBlockImport +impl + GrandpaBlockImport where NumberFor: finality_grandpa::BlockNumberOps, - B: Backend + 'static, - E: CallExecutor + 'static + Clone + Send + Sync, DigestFor: Encode, - RA: Send + Sync, + BE: Backend, + Client: crate::ClientForGrandpa, { // check for a new authority set change. fn check_new_change(&self, header: &Block::Header, hash: Block::Hash) @@ -235,11 +237,11 @@ where }) } - fn make_authorities_changes<'a>( - &'a self, - block: &mut BlockImportParams>, + fn make_authorities_changes( + &self, + block: &mut BlockImportParams>, hash: Block::Hash, - ) -> Result, ConsensusError> { + ) -> Result, ConsensusError> { // when we update the authorities, we need to hold the lock // until the block is written to prevent a race if we need to restore // the old authority set on error or panic. @@ -325,10 +327,10 @@ where // for the canon block the new authority set should start // with. we use the minimum between the median and the local // best finalized block. - let best_finalized_number = self.inner.chain_info().finalized_number; + let best_finalized_number = self.inner.info().finalized_number; let canon_number = best_finalized_number.min(median_last_finalized_number); let canon_hash = - self.inner.header(&BlockId::Number(canon_number)) + self.inner.header(BlockId::Number(canon_number)) .map_err(|e| ConsensusError::ClientImport(e.to_string()))? .expect("the given block number is less or equal than the current best finalized number; \ current best finalized number must exist in chain; qed.") @@ -380,18 +382,17 @@ where } } -impl BlockImport - for GrandpaBlockImport where +impl BlockImport + for GrandpaBlockImport where NumberFor: finality_grandpa::BlockNumberOps, - B: Backend + 'static, - E: CallExecutor + 'static + Clone + Send + Sync, DigestFor: Encode, - RA: Send + Sync, - for<'a> &'a Client: - BlockImport>, + BE: Backend, + Client: crate::ClientForGrandpa, + for<'a> &'a Client: + BlockImport>, { type Error = ConsensusError; - type Transaction = TransactionFor; + type Transaction = TransactionFor; fn import_block( &mut self, @@ -521,31 +522,31 @@ impl BlockImport } } -impl GrandpaBlockImport { +impl GrandpaBlockImport { pub(crate) fn new( - inner: Arc>, + inner: Arc, select_chain: SC, authority_set: SharedAuthoritySet>, send_voter_commands: mpsc::UnboundedSender>>, consensus_changes: SharedConsensusChanges>, - ) -> GrandpaBlockImport { + ) -> GrandpaBlockImport { GrandpaBlockImport { inner, select_chain, authority_set, send_voter_commands, consensus_changes, + _phantom: PhantomData, } } } -impl - GrandpaBlockImport +impl + GrandpaBlockImport where + BE: Backend, + Client: crate::ClientForGrandpa, NumberFor: finality_grandpa::BlockNumberOps, - B: Backend + 'static, - E: CallExecutor + 'static + Clone + Send + Sync, - RA: Send + Sync, { /// Import a block justification and finalize the block. @@ -572,7 +573,7 @@ where }; let result = finalize_block( - &*self.inner, + self.inner.clone(), &self.authority_set, &self.consensus_changes, None, diff --git a/client/finality-grandpa/src/justification.rs b/client/finality-grandpa/src/justification.rs index ad96956454..084c0042ab 100644 --- a/client/finality-grandpa/src/justification.rs +++ b/client/finality-grandpa/src/justification.rs @@ -15,10 +15,9 @@ // along with Substrate. If not, see . use std::collections::{HashMap, HashSet}; +use std::sync::Arc; -use sc_client::Client; -use sc_client_api::{CallExecutor, backend::Backend}; -use sp_blockchain::Error as ClientError; +use sp_blockchain::{Error as ClientError, HeaderBackend}; use parity_scale_codec::{Encode, Decode}; use finality_grandpa::voter_set::VoterSet; use finality_grandpa::{Error as GrandpaError}; @@ -47,14 +46,12 @@ pub struct GrandpaJustification { impl GrandpaJustification { /// Create a GRANDPA justification from the given commit. This method /// assumes the commit is valid and well-formed. - pub(crate) fn from_commit( - client: &Client, + pub(crate) fn from_commit( + client: &Arc, round: u64, commit: Commit, ) -> Result, Error> where - B: Backend, - E: CallExecutor + Send + Sync, - RA: Send + Sync, + C: HeaderBackend, { let mut votes_ancestries_hashes = HashSet::new(); let mut votes_ancestries = Vec::new(); @@ -69,7 +66,7 @@ impl GrandpaJustification { loop { if current_hash == commit.target_hash { break; } - match client.header(&BlockId::Hash(current_hash))? { + match client.header(BlockId::Hash(current_hash))? { Some(current_header) => { if *current_header.number() <= commit.target_number { return error(); diff --git a/client/finality-grandpa/src/lib.rs b/client/finality-grandpa/src/lib.rs index 650b59dfff..887d30a70c 100644 --- a/client/finality-grandpa/src/lib.rs +++ b/client/finality-grandpa/src/lib.rs @@ -56,15 +56,18 @@ use futures::prelude::*; use futures::StreamExt; use log::{debug, info}; use futures::channel::mpsc; -use sc_client_api::{BlockchainEvents, CallExecutor, backend::{AuxStore, Backend}, ExecutionStrategy}; -use sp_blockchain::{HeaderBackend, Error as ClientError}; +use sc_client_api::{ + LockImportRun, BlockchainEvents, CallExecutor, + backend::{AuxStore, Backend}, ExecutionStrategy, Finalizer, TransactionFor, +}; +use sp_blockchain::{HeaderBackend, Error as ClientError, HeaderMetadata}; use sc_client::Client; use parity_scale_codec::{Decode, Encode}; use sp_runtime::generic::BlockId; use sp_runtime::traits::{NumberFor, Block as BlockT, DigestFor, Zero}; use sc_keystore::KeyStorePtr; use sp_inherents::InherentDataProviders; -use sp_consensus::SelectChain; +use sp_consensus::{SelectChain, BlockImport}; use sp_core::Pair; use sc_telemetry::{telemetry, CONSENSUS_INFO, CONSENSUS_DEBUG}; use serde_json; @@ -109,6 +112,8 @@ use sp_finality_grandpa::{AuthorityList, AuthorityPair, AuthoritySignature, SetI // Re-export these two because it's just so damn convenient. pub use sp_finality_grandpa::{AuthorityId, ScheduledChange}; +use sp_api::ProvideRuntimeApi; +use std::marker::PhantomData; #[cfg(test)] mod tests; @@ -245,10 +250,8 @@ pub(crate) trait BlockStatus { fn block_number(&self, hash: Block::Hash) -> Result>, Error>; } -impl BlockStatus for Arc> where - B: Backend, - E: CallExecutor + Send + Sync, - RA: Send + Sync, +impl BlockStatus for Arc where + Client: HeaderBackend, NumberFor: BlockNumberOps, { fn block_number(&self, hash: Block::Hash) -> Result>, Error> { @@ -257,6 +260,29 @@ impl BlockStatus for Arc } } +/// A trait that includes all the client functionalities grandpa requires. +/// Ideally this would be a trait alias, we're not there yet. +/// tracking issue https://github.com/rust-lang/rust/issues/41517 +pub trait ClientForGrandpa: + LockImportRun + Finalizer + AuxStore + + HeaderMetadata + HeaderBackend + + BlockchainEvents + ProvideRuntimeApi + + BlockImport, Error = sp_consensus::Error> + where + BE: Backend, + Block: BlockT, +{} + +impl ClientForGrandpa for T + where + BE: Backend, + Block: BlockT, + T: LockImportRun + Finalizer + AuxStore + + HeaderMetadata + HeaderBackend + + BlockchainEvents + ProvideRuntimeApi + + BlockImport, Error = sp_consensus::Error>, +{} + /// Something that one can ask to do a block sync request. pub(crate) trait BlockSyncRequester { /// Notifies the sync service to try and sync the given block from the given @@ -348,8 +374,8 @@ impl fmt::Display for CommandOrError { } } -pub struct LinkHalf { - client: Arc>, +pub struct LinkHalf { + client: Arc, select_chain: SC, persistent_data: PersistentData, voter_commands_rx: mpsc::UnboundedReceiver>>, @@ -390,22 +416,20 @@ impl GenesisAuthoritySetProvider for Client( - client: Arc>, +pub fn block_import( + client: Arc, genesis_authorities_provider: &dyn GenesisAuthoritySetProvider, select_chain: SC, ) -> Result<( - GrandpaBlockImport, - LinkHalf + GrandpaBlockImport, + LinkHalf, ), ClientError> where - B: Backend + 'static, - E: CallExecutor + Send + Sync, - RA: Send + Sync, SC: SelectChain, - Client: AuxStore, + BE: Backend + 'static, + Client: ClientForGrandpa + 'static, { - let chain_info = client.chain_info(); + let chain_info = client.info(); let genesis_hash = chain_info.genesis_hash; let persistent_data = aux_schema::load_persistent( @@ -440,10 +464,10 @@ where )) } -fn global_communication( +fn global_communication( set_id: SetId, voters: &Arc>, - client: &Arc>, + client: Arc, network: &NetworkBridge, keystore: &Option, ) -> ( @@ -455,10 +479,9 @@ fn global_communication( Error = CommandOrError>, > + Unpin, ) where - B: Backend, - E: CallExecutor + Send + Sync, + BE: Backend + 'static, + C: ClientForGrandpa + 'static, N: NetworkT, - RA: Send + Sync, NumberFor: BlockNumberOps, { let is_voter = is_voter(voters, keystore).is_some(); @@ -487,20 +510,18 @@ fn global_communication( /// Register the finality tracker inherent data provider (which is used by /// GRANDPA), if not registered already. -fn register_finality_tracker_inherent_data_provider( - client: Arc>, +fn register_finality_tracker_inherent_data_provider( + client: Arc, inherent_data_providers: &InherentDataProviders, ) -> Result<(), sp_consensus::Error> where - B: Backend + 'static, - E: CallExecutor + Send + Sync + 'static, - RA: Send + Sync + 'static, + Client: HeaderBackend + 'static, { if !inherent_data_providers.has_provider(&sp_finality_tracker::INHERENT_IDENTIFIER) { inherent_data_providers .register_provider(sp_finality_tracker::InherentDataProvider::new(move || { #[allow(deprecated)] { - let info = client.chain_info(); + let info = client.info(); telemetry!(CONSENSUS_INFO; "afg.finalized"; "finalized_number" => ?info.finalized_number, "finalized_hash" => ?info.finalized_hash, @@ -515,11 +536,11 @@ fn register_finality_tracker_inherent_data_provider( } /// Parameters used to run Grandpa. -pub struct GrandpaParams { +pub struct GrandpaParams { /// Configuration for the GRANDPA service. pub config: Config, /// A link to the block import worker. - pub link: LinkHalf, + pub link: LinkHalf, /// The Network instance. pub network: N, /// The inherent data providers. @@ -534,20 +555,18 @@ pub struct GrandpaParams { /// Run a GRANDPA voter as a task. Provide configuration and a link to a /// block import worker that has already been instantiated with `block_import`. -pub fn run_grandpa_voter( - grandpa_params: GrandpaParams, +pub fn run_grandpa_voter( + grandpa_params: GrandpaParams, ) -> sp_blockchain::Result + Unpin + Send + 'static> where Block::Hash: Ord, - B: Backend + 'static, - E: CallExecutor + Send + Sync + 'static, + BE: Backend + 'static, N: NetworkT + Send + Sync + Clone + 'static, SC: SelectChain + 'static, - VR: VotingRule> + Clone + 'static, + VR: VotingRule + Clone + 'static, NumberFor: BlockNumberOps, DigestFor: Encode, - RA: Send + Sync + 'static, X: futures::Future + Clone + Send + Unpin + 'static, - Client: AuxStore, + C: ClientForGrandpa + 'static, { let GrandpaParams { mut config, @@ -629,27 +648,25 @@ pub fn run_grandpa_voter( /// Future that powers the voter. #[must_use] -struct VoterWork, RA, SC, VR> { +struct VoterWork, SC, VR> { voter: Pin>>> + Send>>, - env: Arc>, + env: Arc>, voter_commands_rx: mpsc::UnboundedReceiver>>, network: NetworkBridge, } -impl VoterWork +impl VoterWork where Block: BlockT, + B: Backend + 'static, + C: ClientForGrandpa + 'static, N: NetworkT + Sync, NumberFor: BlockNumberOps, - RA: 'static + Send + Sync, - E: CallExecutor + Send + Sync + 'static, - B: Backend + 'static, SC: SelectChain + 'static, - VR: VotingRule> + Clone + 'static, - Client: AuxStore, + VR: VotingRule + Clone + 'static, { fn new( - client: Arc>, + client: Arc, config: Config, network: NetworkBridge, select_chain: SC, @@ -670,6 +687,7 @@ where authority_set: persistent_data.authority_set.clone(), consensus_changes: persistent_data.consensus_changes.clone(), voter_set_state: persistent_data.set_state.clone(), + _phantom: PhantomData, }); let mut work = VoterWork { @@ -700,7 +718,7 @@ where "authority_id" => authority_id.to_string(), ); - let chain_info = self.env.client.chain_info(); + let chain_info = self.env.client.info(); telemetry!(CONSENSUS_INFO; "afg.authority_set"; "number" => ?chain_info.finalized_number, "hash" => ?chain_info.finalized_hash, @@ -724,7 +742,7 @@ where let global_comms = global_communication( self.env.set_id, &self.env.voters, - &self.env.client, + self.env.client.clone(), &self.env.network, &self.env.config.keystore, ); @@ -789,6 +807,7 @@ where consensus_changes: self.env.consensus_changes.clone(), network: self.env.network.clone(), voting_rule: self.env.voting_rule.clone(), + _phantom: PhantomData, }); self.rebuild_voter(); @@ -813,17 +832,15 @@ where } } -impl Future for VoterWork +impl Future for VoterWork where Block: BlockT, + B: Backend + 'static, N: NetworkT + Sync, NumberFor: BlockNumberOps, - RA: 'static + Send + Sync, - E: CallExecutor + Send + Sync + 'static, - B: Backend + 'static, SC: SelectChain + 'static, - VR: VotingRule> + Clone + 'static, - Client: AuxStore, + C: ClientForGrandpa + 'static, + VR: VotingRule + Clone + 'static, { type Output = Result<(), Error>; @@ -868,15 +885,13 @@ where /// discards all GRANDPA messages (otherwise, we end up banning nodes that send /// us a `Neighbor` message, since there is no registered gossip validator for /// the engine id defined in the message.) -pub fn setup_disabled_grandpa( - client: Arc>, +pub fn setup_disabled_grandpa( + client: Arc, inherent_data_providers: &InherentDataProviders, network: N, ) -> Result<(), sp_consensus::Error> where - B: Backend + 'static, - E: CallExecutor + Send + Sync + 'static, - RA: Send + Sync + 'static, N: NetworkT + Send + Clone + 'static, + Client: HeaderBackend + 'static, { register_finality_tracker_inherent_data_provider( client, diff --git a/client/finality-grandpa/src/light_import.rs b/client/finality-grandpa/src/light_import.rs index 0181a93f10..258ea81bd5 100644 --- a/client/finality-grandpa/src/light_import.rs +++ b/client/finality-grandpa/src/light_import.rs @@ -18,8 +18,7 @@ use std::collections::HashMap; use std::sync::Arc; use log::{info, trace, warn}; use parking_lot::RwLock; -use sc_client::Client; -use sc_client_api::{CallExecutor, backend::{AuxStore, Backend, Finalizer, TransactionFor}}; +use sc_client_api::backend::{AuxStore, Backend, Finalizer, TransactionFor}; use sp_blockchain::{HeaderBackend, Error as ClientError, well_known_cache_keys}; use parity_scale_codec::{Encode, Decode}; use sp_consensus::{ @@ -48,17 +47,15 @@ const LIGHT_AUTHORITY_SET_KEY: &[u8] = b"grandpa_voters"; const LIGHT_CONSENSUS_CHANGES_KEY: &[u8] = b"grandpa_consensus_changes"; /// Create light block importer. -pub fn light_block_import( - client: Arc>, - backend: Arc, +pub fn light_block_import( + client: Arc, + backend: Arc, genesis_authorities_provider: &dyn GenesisAuthoritySetProvider, authority_set_provider: Arc>, -) -> Result, ClientError> +) -> Result, ClientError> where - B: Backend + 'static, - E: CallExecutor + 'static + Clone + Send + Sync, - RA: Send + Sync, - Client: AuxStore, + BE: Backend, + Client: crate::ClientForGrandpa, { let info = client.info(); let import_data = load_aux_import_data( @@ -79,14 +76,14 @@ pub fn light_block_import( /// It is responsible for: /// - checking GRANDPA justifications; /// - fetching finality proofs for blocks that are enacting consensus changes. -pub struct GrandpaLightBlockImport { - client: Arc>, - backend: Arc, +pub struct GrandpaLightBlockImport { + client: Arc, + backend: Arc, authority_set_provider: Arc>, data: Arc>>, } -impl Clone for GrandpaLightBlockImport { +impl Clone for GrandpaLightBlockImport { fn clone(&self) -> Self { GrandpaLightBlockImport { client: self.client.clone(), @@ -111,27 +108,26 @@ struct LightAuthoritySet { authorities: AuthorityList, } -impl GrandpaLightBlockImport { +impl GrandpaLightBlockImport { /// Create finality proof request builder. pub fn create_finality_proof_request_builder(&self) -> BoxFinalityProofRequestBuilder { Box::new(GrandpaFinalityProofRequestBuilder(self.data.clone())) as _ } } -impl BlockImport - for GrandpaLightBlockImport where +impl BlockImport + for GrandpaLightBlockImport where NumberFor: finality_grandpa::BlockNumberOps, - B: Backend + 'static, - E: CallExecutor + 'static + Clone + Send + Sync, DigestFor: Encode, - RA: Send + Sync, - for<'a> &'a Client: - BlockImport> - + Finalizer + BE: Backend + 'static, + for<'a> &'a Client: + HeaderBackend + + BlockImport> + + Finalizer + AuxStore, { type Error = ConsensusError; - type Transaction = TransactionFor; + type Transaction = TransactionFor; fn import_block( &mut self, @@ -151,23 +147,22 @@ impl BlockImport } } -impl FinalityProofImport - for GrandpaLightBlockImport where +impl FinalityProofImport + for GrandpaLightBlockImport where NumberFor: finality_grandpa::BlockNumberOps, - B: Backend + 'static, - E: CallExecutor + 'static + Clone + Send + Sync, DigestFor: Encode, - RA: Send + Sync, - for<'a> &'a Client: - BlockImport> - + Finalizer + BE: Backend + 'static, + for<'a> &'a Client: + HeaderBackend + + BlockImport> + + Finalizer + AuxStore, { type Error = ConsensusError; fn on_start(&mut self) -> Vec<(Block::Hash, NumberFor)> { let mut out = Vec::new(); - let chain_info = self.client.chain_info(); + let chain_info = (&*self.client).info(); let data = self.data.read(); for (pending_number, pending_hash) in data.consensus_changes.pending_changes() { @@ -567,7 +562,7 @@ fn on_post_finalization_error(error: ClientError, value_type: &str) -> Consensus #[cfg(test)] pub mod tests { use super::*; - use sp_consensus::ForkChoiceStrategy; + use sp_consensus::{ForkChoiceStrategy, BlockImport}; use sp_finality_grandpa::AuthorityId; use sp_core::{H256, crypto::Public}; use substrate_test_runtime_client::sc_client::in_mem::Blockchain as InMemoryAuxStore; @@ -575,37 +570,36 @@ pub mod tests { use crate::tests::TestApi; use crate::finality_proof::tests::TestJustification; - pub struct NoJustificationsImport( - pub GrandpaLightBlockImport + pub struct NoJustificationsImport( + pub GrandpaLightBlockImport ); - impl Clone - for NoJustificationsImport where + impl Clone + for NoJustificationsImport where NumberFor: finality_grandpa::BlockNumberOps, - B: Backend + 'static, - E: CallExecutor + 'static + Clone + Send + Sync, DigestFor: Encode, - RA: Send + Sync, + BE: Backend + 'static, { fn clone(&self) -> Self { NoJustificationsImport(self.0.clone()) } } - impl BlockImport - for NoJustificationsImport where + impl BlockImport + for NoJustificationsImport where NumberFor: finality_grandpa::BlockNumberOps, - B: Backend + 'static, - E: CallExecutor + 'static + Clone + Send + Sync, DigestFor: Encode, - RA: Send + Sync, - for<'a> &'a Client: - BlockImport> - + Finalizer + BE: Backend + 'static, + for <'a > &'a Client: + HeaderBackend + + BlockImport> + + Finalizer + AuxStore, + GrandpaLightBlockImport: + BlockImport, Error = ConsensusError> { type Error = ConsensusError; - type Transaction = TransactionFor; + type Transaction = TransactionFor; fn import_block( &mut self, @@ -624,16 +618,15 @@ pub mod tests { } } - impl FinalityProofImport - for NoJustificationsImport where + impl FinalityProofImport + for NoJustificationsImport where NumberFor: finality_grandpa::BlockNumberOps, - B: Backend + 'static, - E: CallExecutor + 'static + Clone + Send + Sync, + BE: Backend + 'static, DigestFor: Encode, - RA: Send + Sync, - for<'a> &'a Client: - BlockImport> - + Finalizer + for <'a > &'a Client: + HeaderBackend + + BlockImport> + + Finalizer + AuxStore, { type Error = ConsensusError; @@ -654,19 +647,15 @@ pub mod tests { } /// Creates light block import that ignores justifications that came outside of finality proofs. - pub fn light_block_import_without_justifications( - client: Arc>, - backend: Arc, + pub fn light_block_import_without_justifications( + client: Arc, + backend: Arc, genesis_authorities_provider: &dyn GenesisAuthoritySetProvider, authority_set_provider: Arc>, - ) -> Result, ClientError> + ) -> Result, ClientError> where - B: Backend + 'static, - E: CallExecutor + 'static + Clone + Send + Sync, - RA: Send + Sync, - Client: BlockImport - + Finalizer - + AuxStore, + BE: Backend + 'static, + Client: crate::ClientForGrandpa, { light_block_import(client, backend, genesis_authorities_provider, authority_set_provider) .map(NoJustificationsImport) @@ -677,6 +666,7 @@ pub mod tests { justification: Option, ) -> ImportResult { let (client, _backend) = substrate_test_runtime_client::new_light(); + let client = Arc::new(client); let mut import_data = LightImportData { last_finalized: Default::default(), authority_set: LightAuthoritySet::genesis(vec![(AuthorityId::from_slice(&[1; 32]), 1)]), @@ -696,7 +686,7 @@ pub mod tests { block.fork_choice = Some(ForkChoiceStrategy::LongestChain); do_import_block::<_, _, _, TestJustification>( - &client, + &*client, &mut import_data, block, new_cache, diff --git a/client/finality-grandpa/src/observer.rs b/client/finality-grandpa/src/observer.rs index 8345a34209..f6cf1a8aa1 100644 --- a/client/finality-grandpa/src/observer.rs +++ b/client/finality-grandpa/src/observer.rs @@ -26,10 +26,9 @@ use finality_grandpa::{ use log::{debug, info, warn}; use sp_consensus::SelectChain; -use sc_client_api::{CallExecutor, backend::{Backend, AuxStore}}; -use sc_client::Client; +use sc_client_api::backend::Backend; use sp_runtime::traits::{NumberFor, Block as BlockT}; - +use sp_blockchain::HeaderMetadata; use crate::{ global_communication, CommandOrError, CommunicationIn, Config, environment, LinkHalf, Error, aux_schema::PersistentData, VoterCommand, VoterSetState, @@ -38,17 +37,21 @@ use crate::authorities::SharedAuthoritySet; use crate::communication::{Network as NetworkT, NetworkBridge}; use crate::consensus_changes::SharedConsensusChanges; use sp_finality_grandpa::AuthorityId; +use std::marker::{PhantomData, Unpin}; -struct ObserverChain<'a, Block: BlockT, B, E, RA>(&'a Client); +struct ObserverChain<'a, Block: BlockT, Client> { + client: &'a Arc, + _phantom: PhantomData, +} -impl<'a, Block: BlockT, B, E, RA> finality_grandpa::Chain> - for ObserverChain<'a, Block, B, E, RA> where - B: Backend, - E: CallExecutor, +impl<'a, Block, Client> finality_grandpa::Chain> + for ObserverChain<'a, Block, Client> where + Block: BlockT, + Client: HeaderMetadata, NumberFor: BlockNumberOps, { fn ancestry(&self, base: Block::Hash, block: Block::Hash) -> Result, GrandpaError> { - environment::ancestry(&self.0, base, block) + environment::ancestry(&self.client, base, block) } fn best_chain_containing(&self, _block: Block::Hash) -> Option<(Block::Hash, NumberFor)> { @@ -57,8 +60,8 @@ impl<'a, Block: BlockT, B, E, RA> finality_grandpa::Chain( - client: &Arc>, +fn grandpa_observer( + client: &Arc, authority_set: &SharedAuthoritySet>, consensus_changes: &SharedConsensusChanges>, voters: &Arc>, @@ -67,13 +70,12 @@ fn grandpa_observer( note_round: F, ) -> impl Future>>> where NumberFor: BlockNumberOps, - B: Backend, - E: CallExecutor + Send + Sync + 'static, - RA: Send + Sync, S: Stream< Item = Result, CommandOrError>>, >, F: Fn(u64), + BE: Backend, + Client: crate::ClientForGrandpa, { let authority_set = authority_set.clone(); let consensus_changes = consensus_changes.clone(); @@ -101,7 +103,7 @@ fn grandpa_observer( let validation_result = match finality_grandpa::validate_commit( &commit, &voters, - &ObserverChain(&*client), + &ObserverChain { client: &client, _phantom: PhantomData }, ) { Ok(r) => r, Err(e) => return future::err(e.into()), @@ -113,7 +115,7 @@ fn grandpa_observer( // commit is valid, finalize the block it targets match environment::finalize_block( - &client, + client.clone(), &authority_set, &consensus_changes, None, @@ -153,19 +155,17 @@ fn grandpa_observer( /// NOTE: this is currently not part of the crate's public API since we don't consider /// it stable enough to use on a live network. #[allow(unused)] -pub fn run_grandpa_observer( +pub fn run_grandpa_observer( config: Config, - link: LinkHalf, + link: LinkHalf, network: N, on_exit: impl futures::Future + Clone + Send + Unpin + 'static, ) -> sp_blockchain::Result + Unpin + Send + 'static> where - B: Backend + 'static, - E: CallExecutor + Send + Sync + 'static, + BE: Backend + Unpin + 'static, N: NetworkT + Send + Clone + 'static, SC: SelectChain + 'static, NumberFor: BlockNumberOps, - RA: Send + Sync + 'static, - Client: AuxStore, + Client: crate::ClientForGrandpa + 'static, { let LinkHalf { client, @@ -199,28 +199,27 @@ pub fn run_grandpa_observer( /// Future that powers the observer. #[must_use] -struct ObserverWork, E, Backend, RA> { +struct ObserverWork> { observer: Pin>>> + Send>>, - client: Arc>, + client: Arc, network: NetworkBridge, persistent_data: PersistentData, keystore: Option, voter_commands_rx: mpsc::UnboundedReceiver>>, + _phantom: PhantomData, } -impl ObserverWork +impl ObserverWork where B: BlockT, - N: NetworkT, + BE: Backend + 'static, + Client: crate::ClientForGrandpa + 'static, + Network: NetworkT, NumberFor: BlockNumberOps, - RA: 'static + Send + Sync, - E: CallExecutor + Send + Sync + 'static, - Bk: Backend + 'static, - Client: AuxStore, { fn new( - client: Arc>, - network: NetworkBridge, + client: Arc, + network: NetworkBridge, persistent_data: PersistentData, keystore: Option, voter_commands_rx: mpsc::UnboundedReceiver>>, @@ -235,6 +234,7 @@ where persistent_data, keystore, voter_commands_rx, + _phantom: PhantomData, }; work.rebuild_observer(); work @@ -251,12 +251,12 @@ where let (global_in, _) = global_communication( set_id, &voters, - &self.client, + self.client.clone(), &self.network, &self.keystore, ); - let last_finalized_number = self.client.chain_info().finalized_number; + let last_finalized_number = self.client.info().finalized_number; // NOTE: since we are not using `round_communication` we have to // manually note the round with the gossip validator, otherwise we won't @@ -324,15 +324,13 @@ where } } -impl Future for ObserverWork +impl Future for ObserverWork where B: BlockT, + BE: Backend + Unpin + 'static, + C: crate::ClientForGrandpa+ 'static, N: NetworkT, NumberFor: BlockNumberOps, - RA: 'static + Send + Sync, - E: CallExecutor + Send + Sync + 'static, - Bk: Backend + 'static, - Client: AuxStore, { type Output = Result<(), Error>; @@ -379,6 +377,7 @@ mod tests { use crate::{aux_schema, communication::tests::{Event, make_test_network}}; use substrate_test_runtime_client::{TestClientBuilder, TestClientBuilderExt}; use sc_network::PeerId; + use sp_blockchain::HeaderBackend as _; use futures::executor; @@ -406,7 +405,7 @@ mod tests { let persistent_data = aux_schema::load_persistent( &*backend, - client.chain_info().genesis_hash, + client.info().genesis_hash, 0, || Ok(vec![]), ).unwrap(); diff --git a/client/finality-grandpa/src/tests.rs b/client/finality-grandpa/src/tests.rs index 16b50ccb9f..23c7ec9ba8 100644 --- a/client/finality-grandpa/src/tests.rs +++ b/client/finality-grandpa/src/tests.rs @@ -20,7 +20,7 @@ use super::*; use environment::HasVoted; use sc_network_test::{ Block, Hash, TestNetFactory, BlockImportAdapter, Peer, - PeersClient, PassThroughVerifier, + PeersClient, PassThroughVerifier, PeersFullClient, }; use sc_network::config::{ProtocolConfig, Roles, BoxFinalityProofRequestBuilder}; use parking_lot::Mutex; @@ -60,10 +60,8 @@ type PeerData = Mutex< Option< LinkHalf< - substrate_test_runtime_client::Backend, - substrate_test_runtime_client::Executor, Block, - substrate_test_runtime_client::runtime::RuntimeApi, + PeersFullClient, LongestChain > > @@ -1654,6 +1652,7 @@ fn grandpa_environment_respects_voting_rules() { voters: Arc::new(authority_set.current_authorities()), network, voting_rule, + _phantom: PhantomData, } }; diff --git a/client/src/client.rs b/client/src/client.rs index e9a8f1228c..babbaaf7ef 100644 --- a/client/src/client.rs +++ b/client/src/client.rs @@ -66,7 +66,7 @@ pub use sc_client_api::{ backend::{ self, BlockImportOperation, PrunableStateChangesTrieStorage, ClientImportOperation, Finalizer, ImportSummary, NewBlockState, - changes_tries_state_at_block, + LockImportRun, changes_tries_state_at_block, }, client::{ ImportNotifications, FinalityNotification, FinalityNotifications, BlockImportNotification, @@ -218,6 +218,61 @@ impl BlockOf for Client where type Type = Block; } +impl LockImportRun for Client + where + B: backend::Backend, + E: CallExecutor, + Block: BlockT, +{ + fn lock_import_and_run(&self, f: F) -> Result + where + F: FnOnce(&mut ClientImportOperation) -> Result, + Err: From, + { + let inner = || { + let _import_lock = self.backend.get_import_lock().write(); + + let mut op = ClientImportOperation { + op: self.backend.begin_operation()?, + notify_imported: None, + notify_finalized: Vec::new(), + }; + + let r = f(&mut op)?; + + let ClientImportOperation { op, notify_imported, notify_finalized } = op; + self.backend.commit_operation(op)?; + self.notify_finalized(notify_finalized)?; + + if let Some(notify_imported) = notify_imported { + self.notify_imported(notify_imported)?; + } + + Ok(r) + }; + + let result = inner(); + *self.importing_block.write() = None; + + result + } +} + +impl LockImportRun for &Client + where + Block: BlockT, + B: backend::Backend, + E: CallExecutor, +{ + fn lock_import_and_run(&self, f: F) -> Result + where + F: FnOnce(&mut ClientImportOperation) -> Result, + Err: From, + { + (**self).lock_import_and_run(f) + } +} + impl Client where B: backend::Backend, E: CallExecutor, @@ -835,39 +890,6 @@ impl Client where ) } - /// Lock the import lock, and run operations inside. - pub fn lock_import_and_run(&self, f: F) -> Result where - F: FnOnce(&mut ClientImportOperation) -> Result, - Err: From, - { - let inner = || { - let _import_lock = self.backend.get_import_lock().write(); - - let mut op = ClientImportOperation { - op: self.backend.begin_operation()?, - notify_imported: None, - notify_finalized: Vec::new(), - }; - - let r = f(&mut op)?; - - let ClientImportOperation { op, notify_imported, notify_finalized } = op; - self.backend.commit_operation(op)?; - self.notify_finalized(notify_finalized)?; - - if let Some(notify_imported) = notify_imported { - self.notify_imported(notify_imported)?; - } - - Ok(r) - }; - - let result = inner(); - *self.importing_block.write() = None; - - result - } - /// Apply a checked and validated block to an operation. If a justification is provided /// then `finalized` *must* be true. fn apply_block( diff --git a/client/src/lib.rs b/client/src/lib.rs index d97246d478..1d279cabad 100644 --- a/client/src/lib.rs +++ b/client/src/lib.rs @@ -98,7 +98,7 @@ pub use crate::{ client::{ new_with_backend, new_in_mem, - BlockBody, ImportNotifications, FinalityNotifications, BlockchainEvents, + BlockBody, ImportNotifications, FinalityNotifications, BlockchainEvents, LockImportRun, BlockImportNotification, Client, ClientInfo, ExecutionStrategies, FinalityNotification, LongestChain, BlockOf, ProvideUncles, BadBlocks, ForkBlocks, apply_aux, }, -- GitLab From 06fae63b0144eb0b50cc5ea515adf069ad1871ae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bastian=20K=C3=B6cher?= Date: Thu, 27 Feb 2020 13:38:55 +0100 Subject: [PATCH 055/301] Remove deprecated host functions (#5038) Sadly we need to keep one function `ext_blake2_256`. This function is manually defined in `sp-core`. --- .../executor/src/deprecated_host_interface.rs | 941 ------------------ client/executor/src/lib.rs | 3 - client/executor/src/native_executor.rs | 4 - client/executor/src/wasm_utils.rs | 173 ---- primitives/io/src/lib.rs | 51 + .../runtime-interface/test-wasm/src/lib.rs | 27 +- primitives/runtime-interface/test/src/lib.rs | 6 +- primitives/wasm-interface/src/lib.rs | 6 + 8 files changed, 72 insertions(+), 1139 deletions(-) delete mode 100644 client/executor/src/deprecated_host_interface.rs delete mode 100644 client/executor/src/wasm_utils.rs diff --git a/client/executor/src/deprecated_host_interface.rs b/client/executor/src/deprecated_host_interface.rs deleted file mode 100644 index 6ea0b11f5a..0000000000 --- a/client/executor/src/deprecated_host_interface.rs +++ /dev/null @@ -1,941 +0,0 @@ -// Copyright 2017-2020 Parity Technologies (UK) Ltd. -// This file is part of Substrate. - -// Substrate is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Substrate is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Substrate. If not, see . - -//! Definition and implementation of the old and deprecated Substrate runtime interface for the host. - -use codec::Encode; -use std::{convert::TryFrom, str}; -use sp_core::{ - blake2_128, blake2_256, twox_64, twox_128, twox_256, ed25519, sr25519, keccak_256, Blake2Hasher, Pair, - crypto::KeyTypeId, offchain, -}; -use sp_trie::{TrieConfiguration, trie_types::Layout}; -use sp_wasm_interface::{ - Pointer, WordSize, WritePrimitive, ReadPrimitive, FunctionContext, Result as WResult, -}; - -#[cfg(feature="wasm-extern-trace")] -macro_rules! debug_trace { - ( $( $x:tt )* ) => ( trace!( $( $x )* ) ) -} - -#[cfg(not(feature="wasm-extern-trace"))] -macro_rules! debug_trace { - ( $( $x:tt )* ) => () -} - -/// The old and deprecated Substrate externals. These are still required for backwards compatibility -/// reasons. -pub struct SubstrateExternals; - -enum RecoverResult { - Invalid(u32), - Valid(secp256k1::PublicKey), -} - -fn secp256k1_recover( - context: &mut dyn FunctionContext, - msg_data: Pointer, - sig_data: Pointer, -) -> WResult { - let mut sig = [0u8; 65]; - context.read_memory_into(sig_data, &mut sig[..]) - .map_err(|_| "Invalid attempt to get signature in ext_secp256k1_ecdsa_recover")?; - let rs = match secp256k1::Signature::parse_slice(&sig[0..64]) { - Ok(rs) => rs, - _ => return Ok(RecoverResult::Invalid(1)), - }; - - let recovery_id = if sig[64] > 26 { sig[64] - 27 } else { sig[64] } as u8; - let v = match secp256k1::RecoveryId::parse(recovery_id) { - Ok(v) => v, - _ => return Ok(RecoverResult::Invalid(2)), - }; - - let mut msg = [0u8; 32]; - context.read_memory_into(msg_data, &mut msg[..]) - .map_err(|_| "Invalid attempt to get message in ext_secp256k1_ecdsa_recover")?; - - Ok(match secp256k1::recover(&secp256k1::Message::parse(&msg), &rs, &v) { - Ok(pubkey) => RecoverResult::Valid(pubkey), - Err(_) => RecoverResult::Invalid(3), - }) -} - -impl_wasm_host_interface! { - impl SubstrateExternals where context { - ext_malloc(size: WordSize) -> Pointer { - let r = context.allocate_memory(size)?; - debug_trace!(target: "sp-io", "malloc {} bytes at {:?}", size, r); - Ok(r) - } - - ext_free(addr: Pointer) { - context.deallocate_memory(addr)?; - debug_trace!(target: "sp-io", "free {:?}", addr); - Ok(()) - } - - ext_sandbox_instantiate( - dispatch_thunk_idx: u32, - wasm_ptr: Pointer, - wasm_len: WordSize, - imports_ptr: Pointer, - imports_len: WordSize, - state: u32, - ) -> u32 { - let wasm = context.read_memory(wasm_ptr, wasm_len) - .map_err(|_| "OOB while ext_sandbox_instantiate: wasm")?; - let raw_env_def = context.read_memory(imports_ptr, imports_len) - .map_err(|_| "OOB while ext_sandbox_instantiate: imports")?; - - context.sandbox().instance_new(dispatch_thunk_idx, &wasm, &raw_env_def, state) - } - - ext_sandbox_instance_teardown(instance_idx: u32) { - context.sandbox().instance_teardown(instance_idx) - } - - ext_sandbox_invoke( - instance_idx: u32, - export_ptr: Pointer, - export_len: WordSize, - args_ptr: Pointer, - args_len: WordSize, - return_val_ptr: Pointer, - return_val_len: WordSize, - state: u32, - ) -> u32 { - let export = context.read_memory(export_ptr, export_len) - .map_err(|_| "OOB while ext_sandbox_invoke: export") - .and_then(|b| - String::from_utf8(b) - .map_err(|_| "Export name should be a valid utf-8 sequence") - )?; - - // Deserialize arguments and convert them into wasmi types. - let serialized_args = context.read_memory(args_ptr, args_len) - .map_err(|_| "OOB while ext_sandbox_invoke: args")?; - - context.sandbox().invoke( - instance_idx, - &export, - &serialized_args, - return_val_ptr, - return_val_len, - state, - ) - } - - ext_sandbox_memory_new(initial: WordSize, maximum: WordSize) -> u32 { - context.sandbox().memory_new(initial, maximum) - } - - ext_sandbox_memory_get( - memory_idx: u32, - offset: WordSize, - buf_ptr: Pointer, - buf_len: WordSize, - ) -> u32 { - context.sandbox().memory_get(memory_idx, offset, buf_ptr, buf_len) - } - - ext_sandbox_memory_set( - memory_idx: u32, - offset: WordSize, - val_ptr: Pointer, - val_len: WordSize, - ) -> u32 { - context.sandbox().memory_set(memory_idx, offset, val_ptr, val_len) - } - - ext_sandbox_memory_teardown(memory_idx: u32) { - context.sandbox().memory_teardown(memory_idx) - } - - ext_print_utf8(utf8_data: Pointer, utf8_len: WordSize) { - if let Ok(utf8) = context.read_memory(utf8_data, utf8_len) { - sp_io::misc::print_utf8(&utf8); - } - Ok(()) - } - - ext_print_hex(data: Pointer, len: WordSize) { - if let Ok(hex) = context.read_memory(data, len) { - sp_io::misc::print_hex(&hex); - } - Ok(()) - } - - ext_print_num(number: u64) { - sp_io::misc::print_num(number); - Ok(()) - } - - ext_log( - level: u32, - target_data: Pointer, - target_len: WordSize, - message_data: Pointer, - message_len: WordSize, - ) { - let target = context.read_memory(target_data, target_len) - .map_err(|_| "Invalid attempt to determine target in ext_log")?; - let message = context.read_memory(message_data, message_len) - .map_err(|_| "Invalid attempt to determine message in ext_log")?; - - let target_str = std::str::from_utf8(&target) - .map_err(|_| "Target invalid utf8 in ext_log")?; - - sp_io::logging::log(level.into(), &target_str, &message); - Ok(()) - } - - ext_set_storage( - key_data: Pointer, - key_len: WordSize, - value_data: Pointer, - value_len: WordSize, - ) { - let key = context.read_memory(key_data, key_len) - .map_err(|_| "Invalid attempt to determine key in ext_set_storage")?; - let value = context.read_memory(value_data, value_len) - .map_err(|_| "Invalid attempt to determine value in ext_set_storage")?; - Ok(sp_io::storage::set(&key, &value)) - } - - ext_clear_storage(key_data: Pointer, key_len: WordSize) { - let key = context.read_memory(key_data, key_len) - .map_err(|_| "Invalid attempt to determine key in ext_clear_storage")?; - Ok(sp_io::storage::clear(&key)) - } - - ext_exists_storage(key_data: Pointer, key_len: WordSize) -> u32 { - let key = context.read_memory(key_data, key_len) - .map_err(|_| "Invalid attempt to determine key in ext_exists_storage")?; - Ok(if sp_io::storage::exists(&key) { 1 } else { 0 }) - } - - ext_clear_prefix(prefix_data: Pointer, prefix_len: WordSize) { - let prefix = context.read_memory(prefix_data, prefix_len) - .map_err(|_| "Invalid attempt to determine prefix in ext_clear_prefix")?; - Ok(sp_io::storage::clear_prefix(&prefix)) - } - - ext_get_allocated_storage( - key_data: Pointer, - key_len: WordSize, - written_out: Pointer, - ) -> Pointer { - let key = context.read_memory(key_data, key_len) - .map_err(|_| "Invalid attempt to determine key in ext_get_allocated_storage")?; - - if let Some(value) = sp_io::storage::get(&key) { - let offset = context.allocate_memory(value.len() as u32)?; - context.write_memory(offset, &value) - .map_err(|_| "Invalid attempt to set memory in ext_get_allocated_storage")?; - context.write_primitive(written_out, value.len() as u32) - .map_err(|_| "Invalid attempt to write written_out in ext_get_allocated_storage")?; - Ok(offset) - } else { - context.write_primitive(written_out, u32::max_value()) - .map_err(|_| "Invalid attempt to write failed written_out in ext_get_allocated_storage")?; - Ok(Pointer::null()) - } - } - - ext_get_storage_into( - key_data: Pointer, - key_len: WordSize, - value_data: Pointer, - value_len: WordSize, - value_offset: WordSize, - ) -> WordSize { - let key = context.read_memory(key_data, key_len) - .map_err(|_| "Invalid attempt to get key in ext_get_storage_into")?; - - if let Some(value) = sp_io::storage::get(&key) { - let data = &value[value.len().min(value_offset as usize)..]; - let written = std::cmp::min(value_len as usize, data.len()); - context.write_memory(value_data, &data[..written]) - .map_err(|_| "Invalid attempt to set value in ext_get_storage_into")?; - Ok(value.len() as u32) - } else { - Ok(u32::max_value()) - } - } - - ext_storage_root(result: Pointer) { - context.write_memory(result, sp_io::storage::root().as_ref()) - .map_err(|_| "Invalid attempt to set memory in ext_storage_root".into()) - } - - ext_storage_changes_root( - parent_hash_data: Pointer, - _len: WordSize, - result: Pointer, - ) -> u32 { - let mut parent_hash = [0u8; 32]; - context.read_memory_into(parent_hash_data, &mut parent_hash[..]) - .map_err(|_| "Invalid attempt to get parent_hash in ext_storage_changes_root")?; - - if let Some(r) = sp_io::storage::changes_root(&parent_hash) { - context.write_memory(result, &r[..]) - .map_err(|_| "Invalid attempt to set memory in ext_storage_changes_root")?; - Ok(1) - } else { - Ok(0) - } - } - - ext_blake2_256_enumerated_trie_root( - values_data: Pointer, - lens_data: Pointer, - lens_len: WordSize, - result: Pointer, - ) { - let values = (0..lens_len) - .map(|i| context.read_primitive(lens_data.offset(i).ok_or("Pointer overflow")?)) - .collect::, _>>()? - .into_iter() - .scan(0u32, |acc, v| { let o = *acc; *acc += v; Some((o, v)) }) - .map(|(offset, len)| - context.read_memory(values_data.offset(offset).ok_or("Pointer overflow")?, len) - .map_err(|_| - "Invalid attempt to get memory in ext_blake2_256_enumerated_trie_root" - ) - ) - .collect::, _>>()?; - let r = Layout::::ordered_trie_root(values.into_iter()); - context.write_memory(result, &r[..]) - .map_err(|_| "Invalid attempt to set memory in ext_blake2_256_enumerated_trie_root")?; - Ok(()) - } - - ext_chain_id() -> u64 { - Ok(sp_io::misc::chain_id()) - } - - ext_twox_64(data: Pointer, len: WordSize, out: Pointer) { - let result: [u8; 8] = if len == 0 { - let hashed = twox_64(&[0u8; 0]); - hashed - } else { - let key = context.read_memory(data, len) - .map_err(|_| "Invalid attempt to get key in ext_twox_64")?; - let hashed_key = twox_64(&key); - hashed_key - }; - - context.write_memory(out, &result) - .map_err(|_| "Invalid attempt to set result in ext_twox_64")?; - Ok(()) - } - - ext_twox_128(data: Pointer, len: WordSize, out: Pointer) { - let result: [u8; 16] = if len == 0 { - let hashed = twox_128(&[0u8; 0]); - hashed - } else { - let key = context.read_memory(data, len) - .map_err(|_| "Invalid attempt to get key in ext_twox_128")?; - let hashed_key = twox_128(&key); - hashed_key - }; - - context.write_memory(out, &result) - .map_err(|_| "Invalid attempt to set result in ext_twox_128")?; - Ok(()) - } - - ext_twox_256(data: Pointer, len: WordSize, out: Pointer) { - let result: [u8; 32] = if len == 0 { - twox_256(&[0u8; 0]) - } else { - let mem = context.read_memory(data, len) - .map_err(|_| "Invalid attempt to get data in ext_twox_256")?; - twox_256(&mem) - }; - context.write_memory(out, &result) - .map_err(|_| "Invalid attempt to set result in ext_twox_256")?; - Ok(()) - } - - ext_blake2_128(data: Pointer, len: WordSize, out: Pointer) { - let result: [u8; 16] = if len == 0 { - let hashed = blake2_128(&[0u8; 0]); - hashed - } else { - let key = context.read_memory(data, len) - .map_err(|_| "Invalid attempt to get key in ext_blake2_128")?; - let hashed_key = blake2_128(&key); - hashed_key - }; - - context.write_memory(out, &result) - .map_err(|_| "Invalid attempt to set result in ext_blake2_128")?; - Ok(()) - } - - ext_blake2_256(data: Pointer, len: WordSize, out: Pointer) { - let result: [u8; 32] = if len == 0 { - blake2_256(&[0u8; 0]) - } else { - let mem = context.read_memory(data, len) - .map_err(|_| "Invalid attempt to get data in ext_blake2_256")?; - blake2_256(&mem) - }; - context.write_memory(out, &result) - .map_err(|_| "Invalid attempt to set result in ext_blake2_256")?; - Ok(()) - } - - ext_keccak_256(data: Pointer, len: WordSize, out: Pointer) { - let result: [u8; 32] = if len == 0 { - keccak_256(&[0u8; 0]) - } else { - let mem = context.read_memory(data, len) - .map_err(|_| "Invalid attempt to get data in ext_keccak_256")?; - keccak_256(&mem) - }; - context.write_memory(out, &result) - .map_err(|_| "Invalid attempt to set result in ext_keccak_256")?; - Ok(()) - } - - ext_ed25519_public_keys(id_data: Pointer, result_len: Pointer) -> Pointer { - let mut id = [0u8; 4]; - context.read_memory_into(id_data, &mut id[..]) - .map_err(|_| "Invalid attempt to get id in ext_ed25519_public_keys")?; - let key_type = KeyTypeId(id); - - let keys = sp_io::crypto::ed25519_public_keys(key_type).encode(); - - let len = keys.len() as u32; - let offset = context.allocate_memory(len)?; - - context.write_memory(offset, keys.as_ref()) - .map_err(|_| "Invalid attempt to set memory in ext_ed25519_public_keys")?; - context.write_primitive(result_len, len) - .map_err(|_| "Invalid attempt to write result_len in ext_ed25519_public_keys")?; - - Ok(offset) - } - - ext_ed25519_verify( - msg_data: Pointer, - msg_len: WordSize, - sig_data: Pointer, - pubkey_data: Pointer, - ) -> u32 { - let mut sig = [0u8; 64]; - context.read_memory_into(sig_data, &mut sig[..]) - .map_err(|_| "Invalid attempt to get signature in ext_ed25519_verify")?; - let mut pubkey = [0u8; 32]; - context.read_memory_into(pubkey_data, &mut pubkey[..]) - .map_err(|_| "Invalid attempt to get pubkey in ext_ed25519_verify")?; - let msg = context.read_memory(msg_data, msg_len) - .map_err(|_| "Invalid attempt to get message in ext_ed25519_verify")?; - - Ok(if ed25519::Pair::verify_weak(&sig, &msg, &pubkey) { - 0 - } else { - 1 - }) - } - - ext_ed25519_generate( - id_data: Pointer, - seed: Pointer, - seed_len: WordSize, - out: Pointer, - ) { - let mut id = [0u8; 4]; - context.read_memory_into(id_data, &mut id[..]) - .map_err(|_| "Invalid attempt to get id in ext_ed25519_generate")?; - let key_type = KeyTypeId(id); - - let seed = if seed_len == 0 { - None - } else { - Some( - context.read_memory(seed, seed_len) - .map_err(|_| "Invalid attempt to get seed in ext_ed25519_generate")? - ) - }; - - let pubkey = sp_io::crypto::ed25519_generate(key_type, seed); - - context.write_memory(out, pubkey.as_ref()) - .map_err(|_| "Invalid attempt to set out in ext_ed25519_generate".into()) - } - - ext_ed25519_sign( - id_data: Pointer, - pubkey_data: Pointer, - msg_data: Pointer, - msg_len: WordSize, - out: Pointer, - ) -> u32 { - let mut id = [0u8; 4]; - context.read_memory_into(id_data, &mut id[..]) - .map_err(|_| "Invalid attempt to get id in ext_ed25519_sign")?; - let key_type = KeyTypeId(id); - - let mut pubkey = [0u8; 32]; - context.read_memory_into(pubkey_data, &mut pubkey[..]) - .map_err(|_| "Invalid attempt to get pubkey in ext_ed25519_sign")?; - - let msg = context.read_memory(msg_data, msg_len) - .map_err(|_| "Invalid attempt to get message in ext_ed25519_sign")?; - - let pub_key = ed25519::Public::try_from(pubkey.as_ref()) - .map_err(|_| "Invalid `ed25519` public key")?; - - let signature = sp_io::crypto::ed25519_sign(key_type, &pub_key, &msg); - - match signature { - Some(signature) => { - context.write_memory(out, signature.as_ref()) - .map_err(|_| "Invalid attempt to set out in ext_ed25519_sign")?; - Ok(0) - }, - None => Ok(1), - } - } - - ext_sr25519_public_keys(id_data: Pointer, result_len: Pointer) -> Pointer { - let mut id = [0u8; 4]; - context.read_memory_into(id_data, &mut id[..]) - .map_err(|_| "Invalid attempt to get id in ext_sr25519_public_keys")?; - let key_type = KeyTypeId(id); - - let keys = sp_io::crypto::sr25519_public_keys(key_type).encode(); - - let len = keys.len() as u32; - let offset = context.allocate_memory(len)?; - - context.write_memory(offset, keys.as_ref()) - .map_err(|_| "Invalid attempt to set memory in ext_sr25519_public_keys")?; - context.write_primitive(result_len, len) - .map_err(|_| "Invalid attempt to write result_len in ext_sr25519_public_keys")?; - - Ok(offset) - } - - ext_sr25519_verify( - msg_data: Pointer, - msg_len: WordSize, - sig_data: Pointer, - pubkey_data: Pointer, - ) -> u32 { - let mut sig = [0u8; 64]; - context.read_memory_into(sig_data, &mut sig[..]) - .map_err(|_| "Invalid attempt to get signature in ext_sr25519_verify")?; - let mut pubkey = [0u8; 32]; - context.read_memory_into(pubkey_data, &mut pubkey[..]) - .map_err(|_| "Invalid attempt to get pubkey in ext_sr25519_verify")?; - let msg = context.read_memory(msg_data, msg_len) - .map_err(|_| "Invalid attempt to get message in ext_sr25519_verify")?; - - Ok(if sr25519::Pair::verify_weak(&sig, &msg, &pubkey) { - 0 - } else { - 1 - }) - } - - ext_sr25519_generate( - id_data: Pointer, - seed: Pointer, - seed_len: WordSize, - out: Pointer, - ) { - let mut id = [0u8; 4]; - context.read_memory_into(id_data, &mut id[..]) - .map_err(|_| "Invalid attempt to get id in ext_sr25519_generate")?; - let key_type = KeyTypeId(id); - let seed = if seed_len == 0 { - None - } else { - Some( - context.read_memory(seed, seed_len) - .map_err(|_| "Invalid attempt to get seed in ext_sr25519_generate")? - ) - }; - - let pubkey = sp_io::crypto::sr25519_generate(key_type, seed); - - context.write_memory(out, pubkey.as_ref()) - .map_err(|_| "Invalid attempt to set out in ext_sr25519_generate".into()) - } - - ext_sr25519_sign( - id_data: Pointer, - pubkey_data: Pointer, - msg_data: Pointer, - msg_len: WordSize, - out: Pointer, - ) -> u32 { - let mut id = [0u8; 4]; - context.read_memory_into(id_data, &mut id[..]) - .map_err(|_| "Invalid attempt to get id in ext_sr25519_sign")?; - let key_type = KeyTypeId(id); - - let mut pubkey = [0u8; 32]; - context.read_memory_into(pubkey_data, &mut pubkey[..]) - .map_err(|_| "Invalid attempt to get pubkey in ext_sr25519_sign")?; - - let msg = context.read_memory(msg_data, msg_len) - .map_err(|_| "Invalid attempt to get message in ext_sr25519_sign")?; - - let pub_key = sr25519::Public::try_from(pubkey.as_ref()) - .map_err(|_| "Invalid `sr25519` public key")?; - - let signature = sp_io::crypto::sr25519_sign(key_type, &pub_key, &msg); - - match signature { - Some(signature) => { - context.write_memory(out, signature.as_ref()) - .map_err(|_| "Invalid attempt to set out in ext_sr25519_sign")?; - Ok(0) - }, - None => Ok(1), - } - } - - ext_secp256k1_ecdsa_recover( - msg_data: Pointer, - sig_data: Pointer, - pubkey_data: Pointer, - ) -> u32 { - match secp256k1_recover(context, msg_data, sig_data)? { - RecoverResult::Invalid(c) => Ok(c), - RecoverResult::Valid(pubkey) => { - context.write_memory(pubkey_data, &pubkey.serialize()[1..65]) - .map_err(|_| "Invalid attempt to set pubkey in ext_secp256k1_ecdsa_recover")?; - Ok(0) - } - } - } - - ext_secp256k1_ecdsa_recover_compressed( - msg_data: Pointer, - sig_data: Pointer, - pubkey_data: Pointer, - ) -> u32 { - match secp256k1_recover(context, msg_data, sig_data)? { - RecoverResult::Invalid(c) => Ok(c), - RecoverResult::Valid(pubkey) => { - context.write_memory(pubkey_data, &pubkey.serialize_compressed()[..]) - .map_err(|_| "Invalid attempt to set pubkey in ext_secp256k1_ecdsa_recover")?; - Ok(0) - } - } - } - - ext_is_validator() -> u32 { - if sp_io::offchain::is_validator() { Ok(1) } else { Ok(0) } - } - - ext_submit_transaction(msg_data: Pointer, len: WordSize) -> u32 { - let extrinsic = context.read_memory(msg_data, len) - .map_err(|_| "OOB while ext_submit_transaction: wasm")?; - - let res = sp_io::offchain::submit_transaction(extrinsic); - - Ok(if res.is_ok() { 0 } else { 1 }) - } - - ext_network_state(written_out: Pointer) -> Pointer { - let res = sp_io::offchain::network_state(); - - let encoded = res.encode(); - let len = encoded.len() as u32; - let offset = context.allocate_memory(len)?; - context.write_memory(offset, &encoded) - .map_err(|_| "Invalid attempt to set memory in ext_network_state")?; - - context.write_primitive(written_out, len) - .map_err(|_| "Invalid attempt to write written_out in ext_network_state")?; - - Ok(offset) - } - - ext_timestamp() -> u64 { - Ok(sp_io::offchain::timestamp().unix_millis()) - } - - ext_sleep_until(deadline: u64) { - sp_io::offchain::sleep_until(offchain::Timestamp::from_unix_millis(deadline)); - Ok(()) - } - - ext_random_seed(seed_data: Pointer) { - // NOTE the runtime as assumptions about seed size. - let seed = sp_io::offchain::random_seed(); - - context.write_memory(seed_data, &seed) - .map_err(|_| "Invalid attempt to set value in ext_random_seed")?; - Ok(()) - } - - ext_local_storage_set( - kind: u32, - key: Pointer, - key_len: WordSize, - value: Pointer, - value_len: WordSize, - ) { - let kind = offchain::StorageKind::try_from(kind) - .map_err(|_| "storage kind OOB while ext_local_storage_set: wasm")?; - let key = context.read_memory(key, key_len) - .map_err(|_| "OOB while ext_local_storage_set: wasm")?; - let value = context.read_memory(value, value_len) - .map_err(|_| "OOB while ext_local_storage_set: wasm")?; - - sp_io::offchain::local_storage_set(kind, &key, &value); - - Ok(()) - } - - ext_local_storage_get( - kind: u32, - key: Pointer, - key_len: WordSize, - value_len: Pointer, - ) -> Pointer { - let kind = offchain::StorageKind::try_from(kind) - .map_err(|_| "storage kind OOB while ext_local_storage_get: wasm")?; - let key = context.read_memory(key, key_len) - .map_err(|_| "OOB while ext_local_storage_get: wasm")?; - - let maybe_value = sp_io::offchain::local_storage_get(kind, &key); - - let (offset, len) = if let Some(value) = maybe_value { - let offset = context.allocate_memory(value.len() as u32)?; - context.write_memory(offset, &value) - .map_err(|_| "Invalid attempt to set memory in ext_local_storage_get")?; - (offset, value.len() as u32) - } else { - (Pointer::null(), u32::max_value()) - }; - - context.write_primitive(value_len, len) - .map_err(|_| "Invalid attempt to write value_len in ext_local_storage_get")?; - - Ok(offset) - } - - ext_local_storage_compare_and_set( - kind: u32, - key: Pointer, - key_len: WordSize, - old_value: Pointer, - old_value_len: WordSize, - new_value: Pointer, - new_value_len: WordSize, - ) -> u32 { - let kind = offchain::StorageKind::try_from(kind) - .map_err(|_| "storage kind OOB while ext_local_storage_compare_and_set: wasm")?; - let key = context.read_memory(key, key_len) - .map_err(|_| "OOB while ext_local_storage_compare_and_set: wasm")?; - let new_value = context.read_memory(new_value, new_value_len) - .map_err(|_| "OOB while ext_local_storage_compare_and_set: wasm")?; - - let old_value = if old_value_len == u32::max_value() { - None - } else { - Some( - context.read_memory(old_value, old_value_len) - .map_err(|_| "OOB while ext_local_storage_compare_and_set: wasm")? - ) - }; - - let res = sp_io::offchain::local_storage_compare_and_set( - kind, - &key, - old_value, - &new_value, - ); - - Ok(if res { 0 } else { 1 }) - } - - ext_http_request_start( - method: Pointer, - method_len: WordSize, - url: Pointer, - url_len: WordSize, - meta: Pointer, - meta_len: WordSize, - ) -> u32 { - let method = context.read_memory(method, method_len) - .map_err(|_| "OOB while ext_http_request_start: wasm")?; - let url = context.read_memory(url, url_len) - .map_err(|_| "OOB while ext_http_request_start: wasm")?; - let meta = context.read_memory(meta, meta_len) - .map_err(|_| "OOB while ext_http_request_start: wasm")?; - - let method_str = str::from_utf8(&method) - .map_err(|_| "invalid str while ext_http_request_start: wasm")?; - let url_str = str::from_utf8(&url) - .map_err(|_| "invalid str while ext_http_request_start: wasm")?; - - let id = sp_io::offchain::http_request_start(method_str, url_str, &meta); - - if let Ok(id) = id { - Ok(id.into()) - } else { - Ok(u32::max_value()) - } - } - - ext_http_request_add_header( - request_id: u32, - name: Pointer, - name_len: WordSize, - value: Pointer, - value_len: WordSize, - ) -> u32 { - let name = context.read_memory(name, name_len) - .map_err(|_| "OOB while ext_http_request_add_header: wasm")?; - let value = context.read_memory(value, value_len) - .map_err(|_| "OOB while ext_http_request_add_header: wasm")?; - - let name_str = str::from_utf8(&name) - .map_err(|_| "Invalid str while ext_http_request_add_header: wasm")?; - let value_str = str::from_utf8(&value) - .map_err(|_| "Invalid str while ext_http_request_add_header: wasm")?; - - let res = sp_io::offchain::http_request_add_header( - offchain::HttpRequestId(request_id as u16), - name_str, - value_str, - ); - - Ok(if res.is_ok() { 0 } else { 1 }) - } - - ext_http_request_write_body( - request_id: u32, - chunk: Pointer, - chunk_len: WordSize, - deadline: u64, - ) -> u32 { - let chunk = context.read_memory(chunk, chunk_len) - .map_err(|_| "OOB while ext_http_request_write_body: wasm")?; - - let res = sp_io::offchain::http_request_write_body( - offchain::HttpRequestId(request_id as u16), - &chunk, - deadline_to_timestamp(deadline), - ); - - Ok(match res { - Ok(()) => 0, - Err(e) => e.into(), - }) - } - - ext_http_response_wait( - ids: Pointer, - ids_len: WordSize, - statuses: Pointer, - deadline: u64, - ) { - let ids = (0..ids_len) - .map(|i| - context.read_primitive(ids.offset(i).ok_or("Point overflow")?) - .map(|id: u32| offchain::HttpRequestId(id as u16)) - .map_err(|_| "OOB while ext_http_response_wait: wasm") - ) - .collect::, _>>()?; - - let res = sp_io::offchain::http_response_wait(&ids, deadline_to_timestamp(deadline)) - .into_iter() - .map(|status| u32::from(status)) - .enumerate() - // make sure to take up to `ids_len` to avoid exceeding the mem. - .take(ids_len as usize); - - for (i, status) in res { - context.write_primitive(statuses.offset(i as u32).ok_or("Point overflow")?, status) - .map_err(|_| "Invalid attempt to set memory in ext_http_response_wait")?; - } - - Ok(()) - } - - ext_http_response_headers( - request_id: u32, - written_out: Pointer, - ) -> Pointer { - use codec::Encode; - - let headers = sp_io::offchain::http_response_headers( - offchain::HttpRequestId(request_id as u16), - ); - - let encoded = headers.encode(); - let len = encoded.len() as u32; - let offset = context.allocate_memory(len)?; - - context.write_memory(offset, &encoded) - .map_err(|_| "Invalid attempt to set memory in ext_http_response_headers")?; - context.write_primitive(written_out, len) - .map_err(|_| "Invalid attempt to write written_out in ext_http_response_headers")?; - - Ok(offset) - } - - ext_http_response_read_body( - request_id: u32, - buffer: Pointer, - buffer_len: WordSize, - deadline: u64, - ) -> WordSize { - let mut internal_buffer = Vec::with_capacity(buffer_len as usize); - internal_buffer.resize(buffer_len as usize, 0); - - let res = sp_io::offchain::http_response_read_body( - offchain::HttpRequestId(request_id as u16), - &mut internal_buffer, - deadline_to_timestamp(deadline), - ); - - Ok(match res { - Ok(read) => { - context.write_memory(buffer, &internal_buffer[..read as usize]) - .map_err(|_| "Invalid attempt to set memory in ext_http_response_read_body")?; - - read as u32 - }, - Err(err) => { - u32::max_value() - u32::from(err) + 1 - } - }) - } - } -} - -fn deadline_to_timestamp(deadline: u64) -> Option { - if deadline == 0 { - None - } else { - Some(offchain::Timestamp::from_unix_millis(deadline)) - } -} diff --git a/client/executor/src/lib.rs b/client/executor/src/lib.rs index 152e3a4984..af53ed9183 100644 --- a/client/executor/src/lib.rs +++ b/client/executor/src/lib.rs @@ -29,11 +29,8 @@ #![warn(missing_docs)] #![recursion_limit="128"] -#[macro_use] -mod wasm_utils; #[macro_use] mod native_executor; -pub mod deprecated_host_interface; mod wasm_runtime; #[cfg(test)] mod integration_tests; diff --git a/client/executor/src/native_executor.rs b/client/executor/src/native_executor.rs index 4fe7a205f5..1364b753db 100644 --- a/client/executor/src/native_executor.rs +++ b/client/executor/src/native_executor.rs @@ -101,10 +101,6 @@ impl NativeExecutor { /// Defaults to `DEFAULT_HEAP_PAGES` if `None` is provided. pub fn new(fallback_method: WasmExecutionMethod, default_heap_pages: Option) -> Self { let mut host_functions = sp_io::SubstrateHostFunctions::host_functions(); - // Add the old and deprecated host functions as well, so that we support old wasm runtimes. - host_functions.extend( - crate::deprecated_host_interface::SubstrateExternals::host_functions(), - ); // Add the custom host functions provided by the user. host_functions.extend(D::ExtendHostFunctions::host_functions()); diff --git a/client/executor/src/wasm_utils.rs b/client/executor/src/wasm_utils.rs deleted file mode 100644 index 539e210a94..0000000000 --- a/client/executor/src/wasm_utils.rs +++ /dev/null @@ -1,173 +0,0 @@ -// Copyright 2017-2020 Parity Technologies (UK) Ltd. -// This file is part of Substrate. - -// Substrate is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Substrate is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Substrate. If not, see . - -//! Utilities for defining the wasm host environment. - -/// Converts arguments into respective WASM types. -#[macro_export] -macro_rules! convert_args { - () => ([]); - ( $( $t:ty ),* ) => ( [ $( <$t as $crate::sp_wasm_interface::IntoValue>::VALUE_TYPE, )* ] ); -} - -/// Generates a WASM signature for given list of parameters. -#[macro_export] -macro_rules! gen_signature { - ( ( $( $params: ty ),* ) ) => ( - $crate::sp_wasm_interface::Signature { - args: std::borrow::Cow::Borrowed(&convert_args!( $( $params ),* )[..]), - return_value: None, - } - ); - ( ( $( $params: ty ),* ) -> $returns:ty ) => ( - $crate::sp_wasm_interface::Signature { - args: std::borrow::Cow::Borrowed(&convert_args!( $( $params ),* )[..]), - return_value: Some(<$returns as $crate::sp_wasm_interface::IntoValue>::VALUE_TYPE), - } - ); -} - -macro_rules! gen_functions { - (@INTERNAL - { $( $generated:tt )* } - $context:ident, - ) => ( - vec![ $( $generated )* ] - ); - (@INTERNAL - { $( $generated:tt )* } - $context:ident, - $name:ident ( $( $names:ident: $params:ty ),* ) $( -> $returns:ty )? { $( $body:tt )* } - $( $tail:tt )* - ) => ( - gen_functions! { - @INTERNAL - { - $( $generated )* - { - struct $name; - - #[allow(unused)] - impl $crate::sp_wasm_interface::Function for $name { - fn name(&self) -> &str { - stringify!($name) - } - fn signature(&self) -> $crate::sp_wasm_interface::Signature { - gen_signature!( ( $( $params ),* ) $( -> $returns )? ) - } - fn execute( - &self, - context: &mut dyn $crate::sp_wasm_interface::FunctionContext, - args: &mut dyn Iterator, - ) -> ::std::result::Result, String> { - let mut $context = context; - marshall! { - args, - ( $( $names : $params ),* ) $( -> $returns )? => { $( $body )* } - } - } - } - - &$name as &dyn $crate::sp_wasm_interface::Function - }, - } - $context, - $( $tail )* - } - ); - - ( $context:ident, $( $tail:tt )* ) => ( - gen_functions!(@INTERNAL {} $context, $($tail)*); - ); -} - -/// Converts the list of arguments coming from WASM into their native types. -#[macro_export] -macro_rules! unmarshall_args { - ( $body:tt, $args_iter:ident, $( $names:ident : $params:ty ),*) => ({ - $( - let $names : $params = - $args_iter.next() - .and_then(|val| <$params as $crate::sp_wasm_interface::TryFromValue>::try_from_value(val)) - .expect( - "`$args_iter` comes from an argument of Externals::execute_function; - args to an external call always matches the signature of the external; - external signatures are built with count and types and in order defined by `$params`; - here, we iterating on `$params`; - qed; - " - ); - )* - $body - }) -} - -/// Since we can't specify the type of closure directly at binding site: -/// -/// ```nocompile -/// let f: FnOnce() -> Result<::NativeType, _> = || { /* ... */ }; -/// ``` -/// -/// we use this function to constrain the type of the closure. -#[inline(always)] -pub fn constrain_closure(f: F) -> F -where - F: FnOnce() -> Result -{ - f -} - -/// Pass the list of parameters by converting them to respective WASM types. -#[macro_export] -macro_rules! marshall { - ( $args_iter:ident, ( $( $names:ident : $params:ty ),* ) -> $returns:ty => $body:tt ) => ({ - let body = $crate::wasm_utils::constrain_closure::<$returns, _>(|| { - unmarshall_args!($body, $args_iter, $( $names : $params ),*) - }); - let r = body()?; - return Ok(Some($crate::sp_wasm_interface::IntoValue::into_value(r))) - }); - ( $args_iter:ident, ( $( $names:ident : $params:ty ),* ) => $body:tt ) => ({ - let body = $crate::wasm_utils::constrain_closure::<(), _>(|| { - unmarshall_args!($body, $args_iter, $( $names : $params ),*) - }); - body()?; - return Ok(None) - }) -} - -/// Implements the wasm host interface for the given type. -#[macro_export] -macro_rules! impl_wasm_host_interface { - ( - impl $interface_name:ident where $context:ident { - $( - $name:ident($( $names:ident : $params:ty ),* $(,)? ) $( -> $returns:ty )? - { $( $body:tt )* } - )* - } - ) => ( - impl $crate::sp_wasm_interface::HostFunctions for $interface_name { - #[allow(non_camel_case_types)] - fn host_functions() -> Vec<&'static dyn $crate::sp_wasm_interface::Function> { - gen_functions!( - $context, - $( $name( $( $names: $params ),* ) $( -> $returns )? { $( $body )* } )* - ) - } - } - ); -} diff --git a/primitives/io/src/lib.rs b/primitives/io/src/lib.rs index 4b520a240a..aef3eed5aa 100644 --- a/primitives/io/src/lib.rs +++ b/primitives/io/src/lib.rs @@ -915,6 +915,56 @@ pub fn oom(_: core::alloc::Layout) -> ! { #[cfg(feature = "std")] pub type TestExternalities = sp_state_machine::TestExternalities; +#[cfg(feature = "std")] +mod ext_blake2_256 { + use sp_wasm_interface::{Signature, Function, HostFunctions, ValueType, Value, FunctionContext}; + + /// There is a custom `extern function` in `sp_core::hasher` for `ext_blake2_256` hasher. This + /// custom extern was missed to remove and requires us to support this now. This type is a custom + /// implementation for the wasm function in native. + pub struct ExtBlake2_256; + + impl HostFunctions for ExtBlake2_256 { + fn host_functions() -> Vec<&'static dyn Function> { + vec![&ExtBlake2_256] + } + } + + impl Function for ExtBlake2_256 { + fn name(&self) -> &str { + "ext_blake2_256" + } + + fn signature(&self) -> Signature { + Signature::new_with_args(&[ValueType::I32, ValueType::I32, ValueType::I32][..]) + } + + fn execute( + &self, + context: &mut dyn FunctionContext, + args: &mut dyn Iterator, + ) -> sp_wasm_interface::Result> { + let data = args.next().and_then(|v| v.as_i32()) + .ok_or_else(|| "`data` not present or not an `i32`")? as u32; + let len = args.next().and_then(|v| v.as_i32()) + .ok_or_else(|| "`len` not present or not an `i32`")? as u32; + let out = args.next().and_then(|v| v.as_i32()) + .ok_or_else(|| "`out` not present or not an `i32`")? as u32; + + let result: [u8; 32] = if len == 0 { + sp_core::hashing::blake2_256(&[0u8; 0]) + } else { + let mem = context.read_memory(data.into(), len) + .map_err(|_| "Invalid attempt to get data in ext_blake2_256")?; + sp_core::hashing::blake2_256(&mem) + }; + context.write_memory(out.into(), &result) + .map_err(|_| "Invalid attempt to set result in ext_blake2_256")?; + Ok(None) + } + } +} + /// The host functions Substrate provides for the Wasm runtime environment. /// /// All these host functions will be callable from inside the Wasm environment. @@ -929,6 +979,7 @@ pub type SubstrateHostFunctions = ( logging::HostFunctions, sandbox::HostFunctions, crate::trie::HostFunctions, + ext_blake2_256::ExtBlake2_256, ); #[cfg(test)] diff --git a/primitives/runtime-interface/test-wasm/src/lib.rs b/primitives/runtime-interface/test-wasm/src/lib.rs index 4e99c0f06c..2e1ab52d67 100644 --- a/primitives/runtime-interface/test-wasm/src/lib.rs +++ b/primitives/runtime-interface/test-wasm/src/lib.rs @@ -105,23 +105,6 @@ pub trait TestApi { } } -/// Two random external functions from the old runtime interface. -/// This ensures that we still inherently export these functions from the host and that we are still -/// compatible with old wasm runtimes. -#[cfg(not(feature = "std"))] -extern "C" { - pub fn ext_clear_storage(key_data: *const u8, key_len: u32); - pub fn ext_keccak_256(data: *const u8, len: u32, out: *mut u8); -} - -/// Make sure the old runtime interface needs to be imported. -#[no_mangle] -#[cfg(not(feature = "std"))] -pub fn force_old_runtime_interface_import() { - unsafe { ext_clear_storage(sp_std::ptr::null(), 0); } - unsafe { ext_keccak_256(sp_std::ptr::null(), 0, sp_std::ptr::null_mut()); } -} - /// This function is not used, but we require it for the compiler to include `sp-io`. /// `sp-io` is required for its panic and oom handler. #[no_mangle] @@ -248,4 +231,14 @@ wasm_export_functions! { } assert_eq!(0, len); } + + fn test_ext_blake2_256() { + use sp_core::Hasher; + + let data = "hey, hash me please!"; + let hash = sp_core::Blake2Hasher::hash(data.as_bytes()); + + let expected = sp_io::hashing::blake2_256(data.as_bytes()); + assert_eq!(&expected, hash.as_ref()); + } } diff --git a/primitives/runtime-interface/test/src/lib.rs b/primitives/runtime-interface/test/src/lib.rs index 559a4281e0..5c5d1db970 100644 --- a/primitives/runtime-interface/test/src/lib.rs +++ b/primitives/runtime-interface/test/src/lib.rs @@ -33,7 +33,6 @@ fn call_wasm_method(method: &str) -> TestExternalities { ( HF, sp_io::SubstrateHostFunctions, - sc_executor::deprecated_host_interface::SubstrateExternals ) >( method, @@ -128,3 +127,8 @@ fn test_encoded_return_value_memory_is_freed() { fn test_array_return_value_memory_is_freed() { call_wasm_method::("test_array_return_value_memory_is_freed"); } + +#[test] +fn test_ext_blake2_256() { + call_wasm_method::("test_ext_blake2_256"); +} diff --git a/primitives/wasm-interface/src/lib.rs b/primitives/wasm-interface/src/lib.rs index 7bb4469c77..eda2ebb1b5 100644 --- a/primitives/wasm-interface/src/lib.rs +++ b/primitives/wasm-interface/src/lib.rs @@ -170,6 +170,12 @@ impl Pointer { } } +impl From for Pointer { + fn from(ptr: u32) -> Self { + Pointer::new(ptr) + } +} + impl From> for u32 { fn from(ptr: Pointer) -> Self { ptr.ptr -- GitLab From 037057ccb9590e5e3a26e646eb2cbad5d758c572 Mon Sep 17 00:00:00 2001 From: kianenigma Date: Thu, 27 Feb 2020 14:11:42 +0100 Subject: [PATCH 056/301] Refactor a lot --- frame/staking/src/slashing.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/frame/staking/src/slashing.rs b/frame/staking/src/slashing.rs index 3c8f39501a..13b717ab19 100644 --- a/frame/staking/src/slashing.rs +++ b/frame/staking/src/slashing.rs @@ -65,7 +65,7 @@ use codec::{Encode, Decode}; const REWARD_F1: Perbill = Perbill::from_percent(50); /// The index of a slashing span - unique to each stash. -pub(crate) type SpanIndex = u32; +pub type SpanIndex = u32; // A range of start..end eras for a slashing span. #[derive(Encode, Decode)] @@ -143,7 +143,7 @@ impl SlashingSpans { } /// Yields the era index where the most recent non-zero slash occurred. - pub(crate) fn last_nonzero_slash(&self) -> EraIndex { + pub fn last_nonzero_slash(&self) -> EraIndex { self.last_nonzero_slash } -- GitLab From 8c2236879e32e02b91455e19d38490f4741bf967 Mon Sep 17 00:00:00 2001 From: Seun Lanlege Date: Thu, 27 Feb 2020 17:12:00 +0100 Subject: [PATCH 057/301] removes use of sc_client::Client from sc_basic_authorship (#5050) * removes use of sc-client from sc-basic-authorship * refactor use of ProposerFactory * correct dep path --- Cargo.lock | 3 +- bin/node-template/node/src/service.rs | 8 +- bin/node/cli/src/service.rs | 16 +-- client/basic-authorship/Cargo.toml | 1 - .../basic-authorship/src/basic_authorship.rs | 106 +++++++++--------- client/basic-authorship/src/lib.rs | 5 +- client/block-builder/src/lib.rs | 21 ++++ client/consensus/babe/src/tests.rs | 2 +- client/consensus/manual-seal/src/lib.rs | 24 ++-- client/finality-grandpa/Cargo.toml | 1 + client/finality-grandpa/src/tests.rs | 1 + client/network/test/src/lib.rs | 2 +- client/src/client.rs | 55 +++++---- primitives/api/test/Cargo.toml | 1 + primitives/api/test/tests/runtime_calls.rs | 1 + test-utils/runtime/client/src/trait_tests.rs | 1 + 16 files changed, 136 insertions(+), 112 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 757b9ad080..245493986b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -5615,7 +5615,6 @@ dependencies = [ "parity-scale-codec", "parking_lot 0.10.0", "sc-block-builder", - "sc-client", "sc-client-api", "sc-telemetry", "sc-transaction-pool", @@ -6112,6 +6111,7 @@ dependencies = [ "parking_lot 0.10.0", "pin-project", "rand 0.7.3", + "sc-block-builder", "sc-client", "sc-client-api", "sc-keystore", @@ -6944,6 +6944,7 @@ dependencies = [ "criterion 0.3.1", "parity-scale-codec", "rustversion", + "sc-block-builder", "sp-api", "sp-blockchain", "sp-consensus", diff --git a/bin/node-template/node/src/service.rs b/bin/node-template/node/src/service.rs index 6e2a766dc1..7a714d5d7a 100644 --- a/bin/node-template/node/src/service.rs +++ b/bin/node-template/node/src/service.rs @@ -93,10 +93,10 @@ pub fn new_full(config: Configuration) .build()?; if participates_in_consensus { - let proposer = sc_basic_authorship::ProposerFactory { - client: service.client(), - transaction_pool: service.transaction_pool(), - }; + let proposer = sc_basic_authorship::ProposerFactory::new( + service.client(), + service.transaction_pool() + ); let client = service.client(); let select_chain = service.select_chain() diff --git a/bin/node/cli/src/service.rs b/bin/node/cli/src/service.rs index 90090cdf54..7df266a687 100644 --- a/bin/node/cli/src/service.rs +++ b/bin/node/cli/src/service.rs @@ -150,10 +150,10 @@ macro_rules! new_full { ($with_startup_data)(&block_import, &babe_link); if participates_in_consensus { - let proposer = sc_basic_authorship::ProposerFactory { - client: service.client(), - transaction_pool: service.transaction_pool(), - }; + let proposer = sc_basic_authorship::ProposerFactory::new( + service.client(), + service.transaction_pool() + ); let client = service.client(); let select_chain = service.select_chain() @@ -501,10 +501,10 @@ mod tests { let parent_header = service.client().header(&parent_id).unwrap().unwrap(); let parent_hash = parent_header.hash(); let parent_number = *parent_header.number(); - let mut proposer_factory = sc_basic_authorship::ProposerFactory { - client: service.client(), - transaction_pool: service.transaction_pool(), - }; + let mut proposer_factory = sc_basic_authorship::ProposerFactory::new( + service.client(), + service.transaction_pool() + ); let epoch = babe_link.epoch_changes().lock().epoch_for_child_of( descendent_query(&*service.client()), diff --git a/client/basic-authorship/Cargo.toml b/client/basic-authorship/Cargo.toml index c3fb8799bb..56bfb57072 100644 --- a/client/basic-authorship/Cargo.toml +++ b/client/basic-authorship/Cargo.toml @@ -16,7 +16,6 @@ sp-api = { version = "2.0.0-alpha.2", path = "../../primitives/api" } sp-runtime = { version = "2.0.0-alpha.2", path = "../../primitives/runtime" } sp-core = { version = "2.0.0-alpha.2", path = "../../primitives/core" } sp-blockchain = { version = "2.0.0-alpha.2", path = "../../primitives/blockchain" } -sc-client = { version = "0.8.0-alpha.2", path = "../" } sc-client-api = { version = "2.0.0-alpha.2", path = "../api" } sp-consensus = { version = "0.8.0-alpha.2", path = "../../primitives/consensus/common" } sp-inherents = { version = "2.0.0-alpha.2", path = "../../primitives/inherents" } diff --git a/client/basic-authorship/src/basic_authorship.rs b/client/basic-authorship/src/basic_authorship.rs index a99453544e..231d025591 100644 --- a/client/basic-authorship/src/basic_authorship.rs +++ b/client/basic-authorship/src/basic_authorship.rs @@ -19,8 +19,7 @@ // FIXME #1021 move this into sp-consensus use std::{time, sync::Arc}; -use sc_client_api::{CallExecutor, backend}; -use sc_client::Client as SubstrateClient; +use sc_client_api::backend; use codec::Decode; use sp_consensus::{evaluation, Proposal, RecordProof}; use sp_inherents::InherentData; @@ -32,35 +31,47 @@ use sp_runtime::{ }; use sp_transaction_pool::{TransactionPool, InPoolTransaction}; use sc_telemetry::{telemetry, CONSENSUS_INFO}; -use sc_block_builder::BlockBuilderApi; +use sc_block_builder::{BlockBuilderApi, BlockBuilderProvider}; use sp_api::{ProvideRuntimeApi, ApiExt}; use futures::prelude::*; +use sp_blockchain::HeaderBackend; +use std::marker::PhantomData; /// Proposer factory. -pub struct ProposerFactory where A: TransactionPool { +pub struct ProposerFactory { /// The client instance. - pub client: Arc, + client: Arc, /// The transaction pool. - pub transaction_pool: Arc, + transaction_pool: Arc, + /// phantom member to pin the `Backend` type. + _phantom: PhantomData, +} + +impl ProposerFactory { + pub fn new(client: Arc, transaction_pool: Arc) -> Self { + ProposerFactory { + client, + transaction_pool, + _phantom: PhantomData, + } + } } -impl ProposerFactory, A> +impl ProposerFactory where A: TransactionPool + 'static, B: backend::Backend + Send + Sync + 'static, - E: CallExecutor + Send + Sync + Clone + 'static, Block: BlockT, - RA: Send + Sync + 'static, - SubstrateClient: ProvideRuntimeApi, - as ProvideRuntimeApi>::Api: - BlockBuilderApi + - ApiExt>, + C: BlockBuilderProvider + HeaderBackend + ProvideRuntimeApi + + Send + Sync + 'static, + C::Api: ApiExt> + + BlockBuilderApi, { pub fn init_with_now( &mut self, parent_header: &::Header, now: Box time::Instant + Send + Sync>, - ) -> Proposer, A> { + ) -> Proposer { let parent_hash = parent_header.hash(); let id = BlockId::hash(parent_hash); @@ -75,6 +86,7 @@ impl ProposerFactory, A> parent_number: *parent_header.number(), transaction_pool: self.transaction_pool.clone(), now, + _phantom: PhantomData, }), }; @@ -82,21 +94,19 @@ impl ProposerFactory, A> } } -impl sp_consensus::Environment for - ProposerFactory, A> +impl sp_consensus::Environment for + ProposerFactory where A: TransactionPool + 'static, B: backend::Backend + Send + Sync + 'static, - E: CallExecutor + Send + Sync + Clone + 'static, Block: BlockT, - RA: Send + Sync + 'static, - SubstrateClient: ProvideRuntimeApi, - as ProvideRuntimeApi>::Api: - BlockBuilderApi + - ApiExt>, + C: BlockBuilderProvider + HeaderBackend + ProvideRuntimeApi + + Send + Sync + 'static, + C::Api: ApiExt> + + BlockBuilderApi, { type CreateProposer = future::Ready>; - type Proposer = Proposer, A>; + type Proposer = Proposer; type Error = sp_blockchain::Error; fn init( @@ -108,32 +118,31 @@ impl sp_consensus::Environment for } /// The proposer logic. -pub struct Proposer { - inner: Arc>, +pub struct Proposer { + inner: Arc>, } /// Proposer inner, to wrap parameters under Arc. -struct ProposerInner { +struct ProposerInner { client: Arc, parent_hash: ::Hash, parent_id: BlockId, parent_number: <::Header as HeaderT>::Number, transaction_pool: Arc, now: Box time::Instant + Send + Sync>, + _phantom: PhantomData, } -impl sp_consensus::Proposer for - Proposer, A> +impl sp_consensus::Proposer for + Proposer where A: TransactionPool + 'static, B: backend::Backend + Send + Sync + 'static, - E: CallExecutor + Send + Sync + Clone + 'static, Block: BlockT, - RA: Send + Sync + 'static, - SubstrateClient: ProvideRuntimeApi, - as ProvideRuntimeApi>::Api: - BlockBuilderApi + - ApiExt>, + C: BlockBuilderProvider + HeaderBackend + ProvideRuntimeApi + + Send + Sync + 'static, + C::Api: ApiExt> + + BlockBuilderApi, { type Transaction = backend::TransactionFor; type Proposal = tokio_executor::blocking::Blocking< @@ -157,16 +166,15 @@ impl sp_consensus::Proposer for } } -impl ProposerInner, A> where - A: TransactionPool, - B: sc_client_api::backend::Backend + Send + Sync + 'static, - E: CallExecutor + Send + Sync + Clone + 'static, - Block: BlockT, - RA: Send + Sync + 'static, - SubstrateClient: ProvideRuntimeApi, - as ProvideRuntimeApi>::Api: - BlockBuilderApi + - ApiExt>, +impl ProposerInner + where + A: TransactionPool, + B: backend::Backend + Send + Sync + 'static, + Block: BlockT, + C: BlockBuilderProvider + HeaderBackend + ProvideRuntimeApi + + Send + Sync + 'static, + C::Api: ApiExt> + + BlockBuilderApi, { fn propose_with( &self, @@ -315,10 +323,7 @@ mod tests { txpool.submit_at(&BlockId::number(0), vec![extrinsic(0), extrinsic(1)]) ).unwrap(); - let mut proposer_factory = ProposerFactory { - client: client.clone(), - transaction_pool: txpool.clone(), - }; + let mut proposer_factory = ProposerFactory::new(client.clone(), txpool.clone()); let cell = Mutex::new(time::Instant::now()); let mut proposer = proposer_factory.init_with_now( @@ -359,10 +364,7 @@ mod tests { txpool.submit_at(&BlockId::number(0), vec![extrinsic(0)]), ).unwrap(); - let mut proposer_factory = ProposerFactory { - client: client.clone(), - transaction_pool: txpool.clone(), - }; + let mut proposer_factory = ProposerFactory::new(client.clone(), txpool.clone()); let mut proposer = proposer_factory.init_with_now( &client.header(&block_id).unwrap().unwrap(), diff --git a/client/basic-authorship/src/lib.rs b/client/basic-authorship/src/lib.rs index e9087c89e0..5ec0bc6f9a 100644 --- a/client/basic-authorship/src/lib.rs +++ b/client/basic-authorship/src/lib.rs @@ -28,10 +28,7 @@ //! # let client = Arc::new(substrate_test_runtime_client::new()); //! # let txpool = Arc::new(BasicPool::new(Default::default(), Arc::new(FullChainApi::new(client.clone()))).0); //! // The first step is to create a `ProposerFactory`. -//! let mut proposer_factory = ProposerFactory { -//! client: client.clone(), -//! transaction_pool: txpool.clone(), -//! }; +//! let mut proposer_factory = ProposerFactory::new(client.clone(), txpool.clone()); //! //! // From this factory, we create a `Proposer`. //! let proposer = proposer_factory.init( diff --git a/client/block-builder/src/lib.rs b/client/block-builder/src/lib.rs index a93ad13783..4c14f3716f 100644 --- a/client/block-builder/src/lib.rs +++ b/client/block-builder/src/lib.rs @@ -63,6 +63,27 @@ impl>> Built } } +/// Block builder provider +pub trait BlockBuilderProvider + where + Block: BlockT, + B: backend::Backend, + Self: Sized, + RA: ProvideRuntimeApi, +{ + /// Create a new block, built on top of `parent`. + /// + /// When proof recording is enabled, all accessed trie nodes are saved. + /// These recorded trie nodes can be used by a third party to proof the + /// output of this block builder without having access to the full storage. + fn new_block_at>( + &self, + parent: &BlockId, + inherent_digests: DigestFor, + record_proof: R, + ) -> sp_blockchain::Result>; +} + /// Utility for building new (valid) blocks from a stream of extrinsics. pub struct BlockBuilder<'a, Block: BlockT, A: ProvideRuntimeApi, B> { extrinsics: Vec, diff --git a/client/consensus/babe/src/tests.rs b/client/consensus/babe/src/tests.rs index 4045e18b5c..9331319d55 100644 --- a/client/consensus/babe/src/tests.rs +++ b/client/consensus/babe/src/tests.rs @@ -23,7 +23,7 @@ use super::*; use authorship::claim_slot; use sp_consensus_babe::{AuthorityPair, SlotNumber}; -use sc_block_builder::BlockBuilder; +use sc_block_builder::{BlockBuilder, BlockBuilderProvider}; use sp_consensus::{ NoNetwork as DummyOracle, Proposal, RecordProof, import_queue::{BoxBlockImport, BoxJustificationImport, BoxFinalityProofImport}, diff --git a/client/consensus/manual-seal/src/lib.rs b/client/consensus/manual-seal/src/lib.rs index c4336485a1..18dc91ad34 100644 --- a/client/consensus/manual-seal/src/lib.rs +++ b/client/consensus/manual-seal/src/lib.rs @@ -244,10 +244,10 @@ mod tests { let select_chain = LongestChain::new(backend.clone()); let inherent_data_providers = InherentDataProviders::new(); let pool = Arc::new(BasicPool::new(Options::default(), api()).0); - let env = ProposerFactory { - transaction_pool: pool.clone(), - client: client.clone(), - }; + let env = ProposerFactory::new( + client.clone(), + pool.clone() + ); // this test checks that blocks are created as soon as transactions are imported into the pool. let (sender, receiver) = futures::channel::oneshot::channel(); let mut sender = Arc::new(Some(sender)); @@ -309,10 +309,10 @@ mod tests { let select_chain = LongestChain::new(backend.clone()); let inherent_data_providers = InherentDataProviders::new(); let pool = Arc::new(BasicPool::new(Options::default(), api()).0); - let env = ProposerFactory { - transaction_pool: pool.clone(), - client: client.clone(), - }; + let env = ProposerFactory::new( + client.clone(), + pool.clone() + ); // this test checks that blocks are created as soon as an engine command is sent over the stream. let (mut sink, stream) = futures::channel::mpsc::channel(1024); let future = run_manual_seal( @@ -378,10 +378,10 @@ mod tests { let inherent_data_providers = InherentDataProviders::new(); let pool_api = api(); let pool = Arc::new(BasicPool::new(Options::default(), pool_api.clone()).0); - let env = ProposerFactory { - transaction_pool: pool.clone(), - client: client.clone(), - }; + let env = ProposerFactory::new( + client.clone(), + pool.clone(), + ); // this test checks that blocks are created as soon as an engine command is sent over the stream. let (mut sink, stream) = futures::channel::mpsc::channel(1024); let future = run_manual_seal( diff --git a/client/finality-grandpa/Cargo.toml b/client/finality-grandpa/Cargo.toml index f8774ea283..773cbc2317 100644 --- a/client/finality-grandpa/Cargo.toml +++ b/client/finality-grandpa/Cargo.toml @@ -35,6 +35,7 @@ sc-network = { version = "0.8.0-alpha.2", path = "../network" } sc-network-gossip = { version = "0.8.0-alpha.2", path = "../network-gossip" } sp-finality-tracker = { version = "2.0.0-alpha.2", path = "../../primitives/finality-tracker" } sp-finality-grandpa = { version = "2.0.0-alpha.2", path = "../../primitives/finality-grandpa" } +sc-block-builder = { version = "0.8.0-alpha.2", path = "../block-builder" } finality-grandpa = { version = "0.11.1", features = ["derive-codec"] } pin-project = "0.4.6" diff --git a/client/finality-grandpa/src/tests.rs b/client/finality-grandpa/src/tests.rs index 23c7ec9ba8..6b9ab5e1f2 100644 --- a/client/finality-grandpa/src/tests.rs +++ b/client/finality-grandpa/src/tests.rs @@ -55,6 +55,7 @@ use finality_proof::{ FinalityProofProvider, AuthoritySetForFinalityProver, AuthoritySetForFinalityChecker, }; use consensus_changes::ConsensusChanges; +use sc_block_builder::BlockBuilderProvider; type PeerData = Mutex< diff --git a/client/network/test/src/lib.rs b/client/network/test/src/lib.rs index d09897e853..8dc8aff14d 100644 --- a/client/network/test/src/lib.rs +++ b/client/network/test/src/lib.rs @@ -35,7 +35,7 @@ use sc_client_api::{ FinalityNotification, backend::{TransactionFor, AuxStore, Backend, Finalizer}, }; -use sc_block_builder::BlockBuilder; +use sc_block_builder::{BlockBuilder, BlockBuilderProvider}; use sc_client::LongestChain; use sc_network::config::Roles; use sp_consensus::block_validation::DefaultBlockAnnounceValidator; diff --git a/client/src/client.rs b/client/src/client.rs index babbaaf7ef..d461a17ded 100644 --- a/client/src/client.rs +++ b/client/src/client.rs @@ -60,7 +60,7 @@ use sp_api::{ CallApiAt, ConstructRuntimeApi, Core as CoreApi, ApiExt, ApiRef, ProvideRuntimeApi, CallApiAtParams, }; -use sc_block_builder::BlockBuilderApi; +use sc_block_builder::{BlockBuilderApi, BlockBuilderProvider}; pub use sc_client_api::{ backend::{ @@ -863,33 +863,6 @@ impl Client where ) } - /// Create a new block, built on top of `parent`. - /// - /// When proof recording is enabled, all accessed trie nodes are saved. - /// These recorded trie nodes can be used by a third party to proof the - /// output of this block builder without having access to the full storage. - pub fn new_block_at>( - &self, - parent: &BlockId, - inherent_digests: DigestFor, - record_proof: R, - ) -> sp_blockchain::Result> where - E: Clone + Send + Sync, - RA: Send + Sync, - Self: ProvideRuntimeApi, - >::Api: BlockBuilderApi + - ApiExt> - { - sc_block_builder::BlockBuilder::new( - self, - self.expect_block_hash_from_id(parent)?, - self.expect_block_number_from_id(parent)?, - record_proof.into(), - inherent_digests, - &self.backend - ) - } - /// Apply a checked and validated block to an operation. If a justification is provided /// then `finalized` *must* be true. fn apply_block( @@ -1421,6 +1394,32 @@ impl Client where } } +impl BlockBuilderProvider for Client + where + B: backend::Backend + Send + Sync + 'static, + E: CallExecutor + Send + Sync + 'static, + Block: BlockT, + Self: ChainHeaderBackend + ProvideRuntimeApi, + >::Api: ApiExt> + + BlockBuilderApi, +{ + fn new_block_at>( + &self, + parent: &BlockId, + inherent_digests: DigestFor, + record_proof: R, + ) -> sp_blockchain::Result> { + sc_block_builder::BlockBuilder::new( + self, + self.expect_block_hash_from_id(parent)?, + self.expect_block_number_from_id(parent)?, + record_proof.into(), + inherent_digests, + &self.backend + ) + } +} + impl HeaderMetadata for Client where B: backend::Backend, E: CallExecutor, diff --git a/primitives/api/test/Cargo.toml b/primitives/api/test/Cargo.toml index 7b018199a5..dc1600b334 100644 --- a/primitives/api/test/Cargo.toml +++ b/primitives/api/test/Cargo.toml @@ -15,6 +15,7 @@ sp-version = { version = "2.0.0-alpha.2", path = "../../version" } sp-runtime = { version = "2.0.0-alpha.2", path = "../../runtime" } sp-blockchain = { version = "2.0.0-alpha.2", path = "../../blockchain" } sp-consensus = { version = "0.8.0-alpha.2", path = "../../../primitives/consensus/common" } +sc-block-builder = { version = "0.8.0-alpha.2", path = "../../../client/block-builder" } codec = { package = "parity-scale-codec", version = "1.0.0" } sp-state-machine = { version = "0.8.0-alpha.2", path = "../../../primitives/state-machine" } trybuild = "1.0.17" diff --git a/primitives/api/test/tests/runtime_calls.rs b/primitives/api/test/tests/runtime_calls.rs index 66412edae0..6a3af7469c 100644 --- a/primitives/api/test/tests/runtime_calls.rs +++ b/primitives/api/test/tests/runtime_calls.rs @@ -28,6 +28,7 @@ use sp_state_machine::{ use sp_consensus::SelectChain; use codec::Encode; +use sc_block_builder::BlockBuilderProvider; fn calling_function_with_strat(strat: ExecutionStrategy) { let client = TestClientBuilder::new().set_execution_strategy(strat).build(); diff --git a/test-utils/runtime/client/src/trait_tests.rs b/test-utils/runtime/client/src/trait_tests.rs index 05db43298f..5ceab4355d 100644 --- a/test-utils/runtime/client/src/trait_tests.rs +++ b/test-utils/runtime/client/src/trait_tests.rs @@ -30,6 +30,7 @@ use substrate_test_client::sp_consensus::BlockOrigin; use substrate_test_runtime::{self, Transfer}; use sp_runtime::generic::BlockId; use sp_runtime::traits::{Block as BlockT, HasherFor}; +use sc_block_builder::BlockBuilderProvider; /// helper to test the `leaves` implementation for various backends pub fn test_leaves_for_backend(backend: Arc) where -- GitLab From 850ffec250d098ac4b7c6e6ad29ce174e1d639ff Mon Sep 17 00:00:00 2001 From: Sergei Pepyakin Date: Thu, 27 Feb 2020 17:25:28 +0100 Subject: [PATCH 058/301] pallet-transaction-payment clean up (#5070) * Formatting clean up * Introduce separate setters for the fees. --- frame/transaction-payment/src/lib.rs | 85 ++++++++++++++++------------ 1 file changed, 49 insertions(+), 36 deletions(-) diff --git a/frame/transaction-payment/src/lib.rs b/frame/transaction-payment/src/lib.rs index 67b3fa63ac..3de0f944de 100644 --- a/frame/transaction-payment/src/lib.rs +++ b/frame/transaction-payment/src/lib.rs @@ -119,7 +119,8 @@ impl Module { { let dispatch_info = ::get_dispatch_info(&unchecked_extrinsic); - let partial_fee = >::compute_fee(len, dispatch_info, 0u32.into()); + let partial_fee = + >::compute_fee(len, dispatch_info, 0u32.into()); let DispatchInfo { weight, class, .. } = dispatch_info; RuntimeDispatchInfo { weight, class, partial_fee } @@ -165,9 +166,10 @@ impl ChargeTransactionPayment { let len_fee = per_byte.saturating_mul(len); let weight_fee = { - // cap the weight to the maximum defined in runtime, otherwise it will be the `Bounded` - // maximum of its data type, which is not desired. - let capped_weight = info.weight.min(::MaximumBlockWeight::get()); + // cap the weight to the maximum defined in runtime, otherwise it will be the + // `Bounded` maximum of its data type, which is not desired. + let capped_weight = info.weight + .min(::MaximumBlockWeight::get()); T::WeightToFee::convert(capped_weight) }; @@ -248,20 +250,21 @@ mod tests { use super::*; use codec::Encode; use frame_support::{ - parameter_types, impl_outer_origin, impl_outer_dispatch, + impl_outer_dispatch, impl_outer_origin, parameter_types, weights::{DispatchClass, DispatchInfo, GetDispatchInfo, Weight}, }; + use pallet_balances::Call as BalancesCall; + use pallet_transaction_payment_rpc_runtime_api::RuntimeDispatchInfo; use sp_core::H256; use sp_runtime::{ - Perbill, testing::{Header, TestXt}, - traits::{BlakeTwo256, IdentityLookup, Extrinsic}, + traits::{BlakeTwo256, Extrinsic, IdentityLookup}, + Perbill, }; - use pallet_balances::Call as BalancesCall; - use sp_std::cell::RefCell; - use pallet_transaction_payment_rpc_runtime_api::RuntimeDispatchInfo; + use std::cell::RefCell; - const CALL: &::Call = &Call::Balances(BalancesCall::transfer(2, 69)); + const CALL: &::Call = + &Call::Balances(BalancesCall::transfer(2, 69)); impl_outer_dispatch! { pub enum Call for Runtime where origin: Origin { @@ -318,7 +321,7 @@ mod tests { type ExistentialDeposit = ExistentialDeposit; type AccountStore = System; } -thread_local! { + thread_local! { static TRANSACTION_BASE_FEE: RefCell = RefCell::new(0); static TRANSACTION_BYTE_FEE: RefCell = RefCell::new(1); static WEIGHT_TO_FEE: RefCell = RefCell::new(1); @@ -373,10 +376,16 @@ thread_local! { } impl ExtBuilder { - pub fn fees(mut self, base: u64, byte: u64, weight: u64) -> Self { - self.base_fee = base; - self.byte_fee = byte; - self.weight_to_fee = weight; + pub fn base_fee(mut self, base_fee: u64) -> Self { + self.base_fee = base_fee; + self + } + pub fn byte_fee(mut self, byte_fee: u64) -> Self { + self.byte_fee = byte_fee; + self + } + pub fn weight_fee(mut self, weight_to_fee: u64) -> Self { + self.weight_to_fee = weight_to_fee; self } pub fn balance_factor(mut self, factor: u64) -> Self { @@ -416,9 +425,9 @@ thread_local! { #[test] fn signed_extension_transaction_payment_work() { - ExtBuilder::default() - .balance_factor(10) // 100 - .fees(5, 1, 1) // 5 fixed, 1 per byte, 1 per weight + ExtBuilder::default() + .balance_factor(10) + .base_fee(5) .build() .execute_with(|| { @@ -441,9 +450,9 @@ thread_local! { #[test] fn signed_extension_transaction_payment_is_bounded() { - ExtBuilder::default() + ExtBuilder::default() .balance_factor(1000) - .fees(0, 0, 1) + .byte_fee(0) .build() .execute_with(|| { @@ -464,7 +473,7 @@ thread_local! { #[test] fn signed_extension_allows_free_transactions() { ExtBuilder::default() - .fees(100, 1, 1) + .base_fee(100) .balance_factor(0) .build() .execute_with(|| @@ -503,7 +512,7 @@ thread_local! { #[test] fn signed_ext_length_fee_is_also_updated_per_congestion() { ExtBuilder::default() - .fees(5, 1, 1) + .base_fee(5) .balance_factor(10) .build() .execute_with(|| @@ -531,7 +540,8 @@ thread_local! { let ext = xt.encode(); let len = ext.len() as u32; ExtBuilder::default() - .fees(5, 1, 2) + .base_fee(5) + .weight_fee(2) .build() .execute_with(|| { @@ -558,10 +568,11 @@ thread_local! { #[test] fn compute_fee_works_without_multiplier() { ExtBuilder::default() - .fees(100, 10, 1) - .balance_factor(0) - .build() - .execute_with(|| + .base_fee(100) + .byte_fee(10) + .balance_factor(0) + .build() + .execute_with(|| { // Next fee multiplier is zero assert_eq!(NextFeeMultiplier::get(), Fixed64::from_natural(0)); @@ -597,10 +608,11 @@ thread_local! { #[test] fn compute_fee_works_with_multiplier() { ExtBuilder::default() - .fees(100, 10, 1) - .balance_factor(0) - .build() - .execute_with(|| + .base_fee(100) + .byte_fee(10) + .balance_factor(0) + .build() + .execute_with(|| { // Add a next fee multiplier NextFeeMultiplier::put(Fixed64::from_rational(1, 2)); // = 1/2 = .5 @@ -629,10 +641,11 @@ thread_local! { #[test] fn compute_fee_does_not_overflow() { ExtBuilder::default() - .fees(100, 10, 1) - .balance_factor(0) - .build() - .execute_with(|| + .base_fee(100) + .byte_fee(10) + .balance_factor(0) + .build() + .execute_with(|| { // Overflow is handled let dispatch_info = DispatchInfo { -- GitLab From e769ac4ab219b70317fbc1fe835a3464294369b7 Mon Sep 17 00:00:00 2001 From: Max Inden Date: Thu, 27 Feb 2020 17:48:26 +0100 Subject: [PATCH 059/301] =?UTF-8?q?*:=20Rename=20prometheus-exporter=20cra?= =?UTF-8?q?te=20to=20substrate-prometheus-end=E2=80=A6=20(#5076)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This patch renames the crate for the following two reasons: 1. The prometheus-exporter crate introduces native in-process Prometheus style instrumentation to the Substrate project. Within the Prometheus ecosystem the term "exporter" is used for external processes exposing metrics for e.g. the Linux Kernel. In-process exposition would be described via the term "endpoint". 2. "prometheus-exporter" is generic and ignores the fact that it is only usable within the context of Substrate. In addition the name "prometheus-exporter" is already taken on crates.io. --- Cargo.lock | 30 +++++++++++++++--------------- client/cli/Cargo.toml | 2 +- client/service/Cargo.toml | 2 +- client/service/src/builder.rs | 6 +++--- client/service/src/config.rs | 2 +- client/service/src/error.rs | 4 ++-- utils/prometheus/Cargo.toml | 4 ++-- utils/prometheus/src/lib.rs | 2 +- 8 files changed, 26 insertions(+), 26 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 245493986b..14ef98f1c2 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4988,19 +4988,6 @@ dependencies = [ "spin", ] -[[package]] -name = "prometheus-exporter" -version = "0.8.0-alpha.2" -dependencies = [ - "async-std", - "derive_more", - "futures-util", - "hyper 0.13.2", - "log 0.4.8", - "prometheus", - "tokio 0.2.11", -] - [[package]] name = "prost" version = "0.6.1" @@ -5685,7 +5672,6 @@ dependencies = [ "log 0.4.8", "names", "parity-util-mem", - "prometheus-exporter", "regex", "rpassword", "sc-client-api", @@ -5702,6 +5688,7 @@ dependencies = [ "sp-runtime", "sp-state-machine", "structopt", + "substrate-prometheus-endpoint", "tempfile", "time", "tokio 0.2.11", @@ -6413,7 +6400,6 @@ dependencies = [ "parity-scale-codec", "parity-util-mem", "parking_lot 0.10.0", - "prometheus-exporter", "sc-chain-spec", "sc-client", "sc-client-api", @@ -6442,6 +6428,7 @@ dependencies = [ "sp-runtime", "sp-session", "sp-transaction-pool", + "substrate-prometheus-endpoint", "substrate-test-runtime-client", "sysinfo", "target_info", @@ -7662,6 +7649,19 @@ dependencies = [ "substrate-test-runtime-client", ] +[[package]] +name = "substrate-prometheus-endpoint" +version = "0.8.0-alpha.2" +dependencies = [ + "async-std", + "derive_more", + "futures-util", + "hyper 0.13.2", + "log 0.4.8", + "prometheus", + "tokio 0.2.11", +] + [[package]] name = "substrate-test-client" version = "2.0.0-dev" diff --git a/client/cli/Cargo.toml b/client/cli/Cargo.toml index 4066e1136b..e8525644d7 100644 --- a/client/cli/Cargo.toml +++ b/client/cli/Cargo.toml @@ -33,7 +33,7 @@ sp-core = { version = "2.0.0-alpha.2", path = "../../primitives/core" } sc-service = { version = "0.8.0-alpha.2", default-features = false, path = "../service" } sp-state-machine = { version = "0.8.0-alpha.2", path = "../../primitives/state-machine" } sc-telemetry = { version = "2.0.0-alpha.2", path = "../telemetry" } -prometheus-exporter = { path = "../../utils/prometheus" , version = "0.8.0-alpha.2"} +substrate-prometheus-endpoint = { path = "../../utils/prometheus" , version = "0.8.0-alpha.2"} sp-keyring = { version = "2.0.0-alpha.2", path = "../../primitives/keyring" } names = "0.11.0" structopt = "0.3.8" diff --git a/client/service/Cargo.toml b/client/service/Cargo.toml index 462b77bcb0..d504ab2052 100644 --- a/client/service/Cargo.toml +++ b/client/service/Cargo.toml @@ -56,7 +56,7 @@ sc-rpc = { version = "2.0.0-alpha.2", path = "../rpc" } sc-telemetry = { version = "2.0.0-alpha.2", path = "../telemetry" } sc-offchain = { version = "2.0.0-alpha.2", path = "../offchain" } parity-multiaddr = { package = "parity-multiaddr", version = "0.5.0" } -prometheus-exporter = { path = "../../utils/prometheus" , version = "0.8.0-alpha.2"} +substrate-prometheus-endpoint = { path = "../../utils/prometheus" , version = "0.8.0-alpha.2"} sc-tracing = { version = "2.0.0-alpha.2", path = "../tracing" } tracing = "0.1.10" parity-util-mem = { version = "0.5.1", default-features = false, features = ["primitive-types"] } diff --git a/client/service/src/builder.rs b/client/service/src/builder.rs index 7159e532c4..8c85c38b18 100644 --- a/client/service/src/builder.rs +++ b/client/service/src/builder.rs @@ -53,7 +53,7 @@ use sysinfo::{get_current_pid, ProcessExt, System, SystemExt}; use sc_telemetry::{telemetry, SUBSTRATE_INFO}; use sp_transaction_pool::{MaintainedTransactionPool, ChainEvent}; use sp_blockchain; -use prometheus_exporter::{register, Gauge, U64, F64, Registry, PrometheusError, Opts, GaugeVec}; +use substrate_prometheus_endpoint::{register, Gauge, U64, F64, Registry, PrometheusError, Opts, GaugeVec}; struct ServiceMetrics { block_height_number: GaugeVec, @@ -1020,7 +1020,7 @@ ServiceBuilder< )); } - // Prometheus exporter and metrics + // Prometheus endpoint and metrics let metrics = if let Some(port) = config.prometheus_port { let registry = match prometheus_registry { Some(registry) => registry, @@ -1030,7 +1030,7 @@ ServiceBuilder< let metrics = ServiceMetrics::register(®istry)?; let future = select( - prometheus_exporter::init_prometheus(port, registry).boxed(), + substrate_prometheus_endpoint::init_prometheus(port, registry).boxed(), exit.clone() ).map(drop); diff --git a/client/service/src/config.rs b/client/service/src/config.rs index 002754f11c..974dac588d 100644 --- a/client/service/src/config.rs +++ b/client/service/src/config.rs @@ -93,7 +93,7 @@ pub struct Configuration { pub rpc_ws_max_connections: Option, /// CORS settings for HTTP & WS servers. `None` if all origins are allowed. pub rpc_cors: Option>, - /// Prometheus exporter Port. `None` if disabled. + /// Prometheus endpoint Port. `None` if disabled. pub prometheus_port: Option, /// Telemetry service URL. `None` if disabled. pub telemetry_endpoints: Option, diff --git a/client/service/src/error.rs b/client/service/src/error.rs index 4d0a2cef94..adf630e44c 100644 --- a/client/service/src/error.rs +++ b/client/service/src/error.rs @@ -53,8 +53,8 @@ impl<'a> From<&'a str> for Error { } } -impl From for Error { - fn from(e: prometheus_exporter::PrometheusError) -> Self { +impl From for Error { + fn from(e: substrate_prometheus_endpoint::PrometheusError) -> Self { Error::Other(format!("Prometheus error: {}", e)) } } diff --git a/utils/prometheus/Cargo.toml b/utils/prometheus/Cargo.toml index ccbb9bd07f..3944b35368 100644 --- a/utils/prometheus/Cargo.toml +++ b/utils/prometheus/Cargo.toml @@ -1,6 +1,6 @@ [package] -description = "Prometheus exporter server" -name = "prometheus-exporter" +description = "Endpoint to expose Prometheus metrics" +name = "substrate-prometheus-endpoint" version = "0.8.0-alpha.2" license = "GPL-3.0" authors = ["Parity Technologies "] diff --git a/utils/prometheus/src/lib.rs b/utils/prometheus/src/lib.rs index 1aaeff2a57..54b9183bc6 100644 --- a/utils/prometheus/src/lib.rs +++ b/utils/prometheus/src/lib.rs @@ -65,7 +65,7 @@ mod known_os { Http(hyper::http::Error), /// i/o error. Io(std::io::Error), - #[display(fmt = "Prometheus exporter port {} already in use.", _0)] + #[display(fmt = "Prometheus port {} already in use.", _0)] PortInUse(SocketAddr) } -- GitLab From f41677d00a51acfc9179917624ac8703658f81ea Mon Sep 17 00:00:00 2001 From: Ashley Date: Thu, 27 Feb 2020 18:28:29 +0100 Subject: [PATCH 060/301] rename `browser-utils` to `substrate-browser-utils` (#5079) --- Cargo.lock | 52 ++++++++++++++++++++-------------------- bin/node/cli/Cargo.toml | 2 +- utils/browser/Cargo.toml | 2 +- 3 files changed, 28 insertions(+), 28 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 14ef98f1c2..50c136dee0 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -422,31 +422,6 @@ dependencies = [ "slab", ] -[[package]] -name = "browser-utils" -version = "0.8.0-alpha.2" -dependencies = [ - "chrono", - "clear_on_drop", - "console_error_panic_hook", - "console_log", - "futures 0.1.29", - "futures 0.3.4", - "futures-timer 3.0.1", - "js-sys", - "kvdb-web", - "libp2p", - "log 0.4.8", - "rand 0.6.5", - "rand 0.7.3", - "sc-chain-spec", - "sc-informant", - "sc-network", - "sc-service", - "wasm-bindgen", - "wasm-bindgen-futures", -] - [[package]] name = "bs58" version = "0.2.5" @@ -3348,7 +3323,6 @@ name = "node-cli" version = "2.0.0-alpha.2" dependencies = [ "assert_cmd", - "browser-utils", "frame-benchmarking-cli", "frame-support", "frame-system", @@ -3406,6 +3380,7 @@ dependencies = [ "sp-timestamp", "sp-transaction-pool", "structopt", + "substrate-browser-utils", "substrate-build-script-utils", "tempfile", "tracing", @@ -7606,6 +7581,31 @@ dependencies = [ "sha2", ] +[[package]] +name = "substrate-browser-utils" +version = "0.8.0-alpha.2" +dependencies = [ + "chrono", + "clear_on_drop", + "console_error_panic_hook", + "console_log", + "futures 0.1.29", + "futures 0.3.4", + "futures-timer 3.0.1", + "js-sys", + "kvdb-web", + "libp2p", + "log 0.4.8", + "rand 0.6.5", + "rand 0.7.3", + "sc-chain-spec", + "sc-informant", + "sc-network", + "sc-service", + "wasm-bindgen", + "wasm-bindgen-futures", +] + [[package]] name = "substrate-build-script-utils" version = "2.0.0-alpha.2" diff --git a/bin/node/cli/Cargo.toml b/bin/node/cli/Cargo.toml index ca3665cf18..f160e32e97 100644 --- a/bin/node/cli/Cargo.toml +++ b/bin/node/cli/Cargo.toml @@ -98,7 +98,7 @@ node-inspect = { version = "0.8.0-alpha.2", optional = true, path = "../inspect" # WASM-specific dependencies wasm-bindgen = { version = "0.2.57", optional = true } wasm-bindgen-futures = { version = "0.4.7", optional = true } -browser-utils = { path = "../../../utils/browser", optional = true , version = "0.8.0-alpha.2"} +browser-utils = { package = "substrate-browser-utils", path = "../../../utils/browser", optional = true, version = "0.8.0-alpha.2" } [dev-dependencies] sc-keystore = { version = "2.0.0-alpha.2", path = "../../../client/keystore" } diff --git a/utils/browser/Cargo.toml b/utils/browser/Cargo.toml index 69df8c8601..18ea9920b4 100644 --- a/utils/browser/Cargo.toml +++ b/utils/browser/Cargo.toml @@ -1,5 +1,5 @@ [package] -name = "browser-utils" +name = "substrate-browser-utils" version = "0.8.0-alpha.2" authors = ["Parity Technologies "] description = "Utilities for creating a browser light-client." -- GitLab From 013c1ee167354a08283fb69915fda56a62fee943 Mon Sep 17 00:00:00 2001 From: Benjamin Kampmann Date: Thu, 27 Feb 2020 22:06:08 +0100 Subject: [PATCH 061/301] prepping for Alpha.3 (#5080) * Bump to alpha.3 * update gitlab-ci --- .gitlab-ci.yml | 4 +- Cargo.lock | 298 +++++++++--------- bin/node-template/node/Cargo.toml | 2 +- bin/node-template/pallets/template/Cargo.toml | 2 +- bin/node-template/runtime/Cargo.toml | 2 +- bin/node/cli/Cargo.toml | 2 +- bin/node/executor/Cargo.toml | 2 +- bin/node/inspect/Cargo.toml | 2 +- bin/node/primitives/Cargo.toml | 2 +- bin/node/rpc-client/Cargo.toml | 2 +- bin/node/rpc/Cargo.toml | 2 +- bin/node/runtime/Cargo.toml | 2 +- bin/node/testing/Cargo.toml | 2 +- bin/node/transaction-factory/Cargo.toml | 2 +- bin/utils/chain-spec-builder/Cargo.toml | 2 +- bin/utils/subkey/Cargo.toml | 2 +- client/Cargo.toml | 2 +- client/api/Cargo.toml | 2 +- client/authority-discovery/Cargo.toml | 2 +- client/basic-authorship/Cargo.toml | 2 +- client/block-builder/Cargo.toml | 2 +- client/chain-spec/Cargo.toml | 2 +- client/chain-spec/derive/Cargo.toml | 2 +- client/cli/Cargo.toml | 2 +- client/consensus/aura/Cargo.toml | 2 +- client/consensus/babe/Cargo.toml | 2 +- client/consensus/babe/rpc/Cargo.toml | 2 +- client/consensus/epochs/Cargo.toml | 2 +- client/consensus/manual-seal/Cargo.toml | 2 +- client/consensus/pow/Cargo.toml | 2 +- client/consensus/slots/Cargo.toml | 2 +- client/consensus/uncles/Cargo.toml | 2 +- client/db/Cargo.toml | 2 +- client/executor/Cargo.toml | 2 +- client/executor/common/Cargo.toml | 2 +- client/executor/wasmi/Cargo.toml | 2 +- client/executor/wasmtime/Cargo.toml | 2 +- client/finality-grandpa/Cargo.toml | 2 +- client/informant/Cargo.toml | 2 +- client/keystore/Cargo.toml | 2 +- client/network-gossip/Cargo.toml | 2 +- client/network/Cargo.toml | 2 +- client/offchain/Cargo.toml | 2 +- client/peerset/Cargo.toml | 2 +- client/rpc-api/Cargo.toml | 2 +- client/rpc-servers/Cargo.toml | 2 +- client/rpc/Cargo.toml | 2 +- client/service/Cargo.toml | 2 +- client/state-db/Cargo.toml | 2 +- client/telemetry/Cargo.toml | 2 +- client/tracing/Cargo.toml | 2 +- client/transaction-pool/Cargo.toml | 2 +- client/transaction-pool/graph/Cargo.toml | 2 +- frame/assets/Cargo.toml | 2 +- frame/aura/Cargo.toml | 2 +- frame/authority-discovery/Cargo.toml | 2 +- frame/authorship/Cargo.toml | 2 +- frame/babe/Cargo.toml | 2 +- frame/balances/Cargo.toml | 2 +- frame/benchmarking/Cargo.toml | 2 +- frame/collective/Cargo.toml | 2 +- frame/contracts/Cargo.toml | 2 +- frame/contracts/common/Cargo.toml | 2 +- frame/contracts/rpc/Cargo.toml | 2 +- frame/contracts/rpc/runtime-api/Cargo.toml | 2 +- frame/democracy/Cargo.toml | 2 +- frame/elections-phragmen/Cargo.toml | 2 +- frame/elections/Cargo.toml | 2 +- frame/evm/Cargo.toml | 2 +- frame/example-offchain-worker/Cargo.toml | 2 +- frame/example/Cargo.toml | 2 +- frame/executive/Cargo.toml | 2 +- frame/finality-tracker/Cargo.toml | 2 +- frame/generic-asset/Cargo.toml | 2 +- frame/grandpa/Cargo.toml | 2 +- frame/identity/Cargo.toml | 2 +- frame/im-online/Cargo.toml | 2 +- frame/indices/Cargo.toml | 2 +- frame/membership/Cargo.toml | 2 +- frame/metadata/Cargo.toml | 2 +- frame/nicks/Cargo.toml | 2 +- frame/offences/Cargo.toml | 2 +- frame/randomness-collective-flip/Cargo.toml | 2 +- frame/recovery/Cargo.toml | 2 +- frame/scored-pool/Cargo.toml | 2 +- frame/session/Cargo.toml | 2 +- frame/society/Cargo.toml | 2 +- frame/staking/Cargo.toml | 2 +- frame/staking/reward-curve/Cargo.toml | 2 +- frame/sudo/Cargo.toml | 2 +- frame/support/Cargo.toml | 2 +- frame/support/procedural/Cargo.toml | 2 +- frame/support/procedural/tools/Cargo.toml | 2 +- .../procedural/tools/derive/Cargo.toml | 2 +- frame/system/Cargo.toml | 2 +- frame/system/rpc/runtime-api/Cargo.toml | 2 +- frame/timestamp/Cargo.toml | 2 +- frame/transaction-payment/Cargo.toml | 2 +- frame/transaction-payment/rpc/Cargo.toml | 2 +- .../rpc/runtime-api/Cargo.toml | 2 +- frame/treasury/Cargo.toml | 2 +- frame/utility/Cargo.toml | 2 +- frame/vesting/Cargo.toml | 2 +- primitives/allocator/Cargo.toml | 2 +- primitives/api/Cargo.toml | 2 +- primitives/api/proc-macro/Cargo.toml | 2 +- primitives/application-crypto/Cargo.toml | 2 +- primitives/arithmetic/Cargo.toml | 2 +- primitives/authority-discovery/Cargo.toml | 2 +- primitives/authorship/Cargo.toml | 2 +- primitives/block-builder/Cargo.toml | 2 +- primitives/blockchain/Cargo.toml | 2 +- primitives/consensus/aura/Cargo.toml | 2 +- primitives/consensus/babe/Cargo.toml | 2 +- primitives/consensus/common/Cargo.toml | 2 +- primitives/consensus/pow/Cargo.toml | 2 +- primitives/core/Cargo.toml | 2 +- primitives/debug-derive/Cargo.toml | 2 +- primitives/externalities/Cargo.toml | 2 +- primitives/finality-grandpa/Cargo.toml | 2 +- primitives/finality-tracker/Cargo.toml | 2 +- primitives/inherents/Cargo.toml | 2 +- primitives/io/Cargo.toml | 2 +- primitives/keyring/Cargo.toml | 2 +- primitives/offchain/Cargo.toml | 2 +- primitives/panic-handler/Cargo.toml | 2 +- primitives/phragmen/Cargo.toml | 2 +- primitives/rpc/Cargo.toml | 2 +- primitives/runtime-interface/Cargo.toml | 2 +- .../runtime-interface/proc-macro/Cargo.toml | 2 +- primitives/runtime/Cargo.toml | 2 +- primitives/sandbox/Cargo.toml | 2 +- primitives/serializer/Cargo.toml | 2 +- primitives/session/Cargo.toml | 2 +- primitives/staking/Cargo.toml | 2 +- primitives/state-machine/Cargo.toml | 2 +- primitives/std/Cargo.toml | 2 +- primitives/storage/Cargo.toml | 2 +- primitives/timestamp/Cargo.toml | 2 +- primitives/transaction-pool/Cargo.toml | 2 +- primitives/trie/Cargo.toml | 2 +- primitives/version/Cargo.toml | 2 +- primitives/wasm-interface/Cargo.toml | 2 +- test-utils/Cargo.toml | 2 +- utils/browser/Cargo.toml | 2 +- utils/build-script-utils/Cargo.toml | 2 +- utils/fork-tree/Cargo.toml | 2 +- utils/frame/benchmarking-cli/Cargo.toml | 2 +- utils/frame/rpc/support/Cargo.toml | 2 +- utils/frame/rpc/system/Cargo.toml | 2 +- utils/prometheus/Cargo.toml | 2 +- 151 files changed, 300 insertions(+), 300 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index bc7ce84a80..19f7298ab6 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -38,8 +38,8 @@ variables: DOCKER_OS: "debian:stretch" ARCH: "x86_64" # FIXME set to release - CARGO_UNLEASH_INSTALL_PARAMS: "--version 1.0.0-alpha.6" - CARGO_UNLEASH_PKG_DEF: "--skip node node-* subkey chain-spec-builder" + CARGO_UNLEASH_INSTALL_PARAMS: "--version 1.0.0-alpha.8" + CARGO_UNLEASH_PKG_DEF: "--skip node node-* pallet-template pallet-example pallet-example-* subkey chain-spec-builder" .collect-artifacts: &collect-artifacts diff --git a/Cargo.lock b/Cargo.lock index 50c136dee0..67b3cf7f47 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -573,7 +573,7 @@ dependencies = [ [[package]] name = "chain-spec-builder" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" dependencies = [ "ansi_term 0.12.1", "node-cli", @@ -1417,14 +1417,14 @@ checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" [[package]] name = "fork-tree" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" dependencies = [ "parity-scale-codec", ] [[package]] name = "frame-benchmarking" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" dependencies = [ "parity-scale-codec", "sp-api", @@ -1435,7 +1435,7 @@ dependencies = [ [[package]] name = "frame-benchmarking-cli" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" dependencies = [ "frame-benchmarking", "parity-scale-codec", @@ -1450,7 +1450,7 @@ dependencies = [ [[package]] name = "frame-executive" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" dependencies = [ "frame-support", "frame-system", @@ -1468,7 +1468,7 @@ dependencies = [ [[package]] name = "frame-metadata" -version = "11.0.0-alpha.2" +version = "11.0.0-alpha.3" dependencies = [ "parity-scale-codec", "serde", @@ -1478,7 +1478,7 @@ dependencies = [ [[package]] name = "frame-support" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" dependencies = [ "bitmask", "frame-metadata", @@ -1503,7 +1503,7 @@ dependencies = [ [[package]] name = "frame-support-procedural" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" dependencies = [ "frame-support-procedural-tools", "proc-macro2", @@ -1513,7 +1513,7 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" dependencies = [ "frame-support-procedural-tools-derive", "proc-macro-crate", @@ -1524,7 +1524,7 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools-derive" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" dependencies = [ "proc-macro2", "quote", @@ -1549,7 +1549,7 @@ dependencies = [ [[package]] name = "frame-system" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" dependencies = [ "criterion 0.2.11", "frame-support", @@ -1567,7 +1567,7 @@ dependencies = [ [[package]] name = "frame-system-rpc-runtime-api" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" dependencies = [ "parity-scale-codec", "sp-api", @@ -3320,7 +3320,7 @@ dependencies = [ [[package]] name = "node-cli" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" dependencies = [ "assert_cmd", "frame-benchmarking-cli", @@ -3391,7 +3391,7 @@ dependencies = [ [[package]] name = "node-executor" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" dependencies = [ "criterion 0.3.1", "frame-benchmarking", @@ -3424,7 +3424,7 @@ dependencies = [ [[package]] name = "node-inspect" -version = "0.8.0-alpha.2" +version = "0.8.0-alpha.3" dependencies = [ "derive_more", "log 0.4.8", @@ -3440,7 +3440,7 @@ dependencies = [ [[package]] name = "node-primitives" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" dependencies = [ "pretty_assertions", "sp-core", @@ -3450,7 +3450,7 @@ dependencies = [ [[package]] name = "node-rpc" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" dependencies = [ "jsonrpc-core", "node-primitives", @@ -3473,7 +3473,7 @@ dependencies = [ [[package]] name = "node-rpc-client" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" dependencies = [ "env_logger 0.7.1", "futures 0.1.29", @@ -3486,7 +3486,7 @@ dependencies = [ [[package]] name = "node-runtime" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" dependencies = [ "frame-benchmarking", "frame-executive", @@ -3548,7 +3548,7 @@ dependencies = [ [[package]] name = "node-template" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" dependencies = [ "futures 0.3.4", "log 0.4.8", @@ -3576,7 +3576,7 @@ dependencies = [ [[package]] name = "node-template-runtime" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" dependencies = [ "frame-executive", "frame-support", @@ -3608,7 +3608,7 @@ dependencies = [ [[package]] name = "node-testing" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" dependencies = [ "criterion 0.3.1", "frame-support", @@ -3653,7 +3653,7 @@ dependencies = [ [[package]] name = "node-transaction-factory" -version = "0.8.0-alpha.2" +version = "0.8.0-alpha.3" dependencies = [ "log 0.4.8", "parity-scale-codec", @@ -3827,7 +3827,7 @@ dependencies = [ [[package]] name = "pallet-assets" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" dependencies = [ "frame-support", "frame-system", @@ -3841,7 +3841,7 @@ dependencies = [ [[package]] name = "pallet-aura" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" dependencies = [ "frame-support", "frame-system", @@ -3863,7 +3863,7 @@ dependencies = [ [[package]] name = "pallet-authority-discovery" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" dependencies = [ "frame-support", "frame-system", @@ -3881,7 +3881,7 @@ dependencies = [ [[package]] name = "pallet-authorship" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" dependencies = [ "frame-support", "frame-system", @@ -3897,7 +3897,7 @@ dependencies = [ [[package]] name = "pallet-babe" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" dependencies = [ "frame-support", "frame-system", @@ -3922,7 +3922,7 @@ dependencies = [ [[package]] name = "pallet-balances" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" dependencies = [ "frame-benchmarking", "frame-support", @@ -3938,7 +3938,7 @@ dependencies = [ [[package]] name = "pallet-collective" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" dependencies = [ "frame-support", "frame-system", @@ -3954,7 +3954,7 @@ dependencies = [ [[package]] name = "pallet-contracts" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" dependencies = [ "assert_matches", "frame-support", @@ -3979,7 +3979,7 @@ dependencies = [ [[package]] name = "pallet-contracts-primitives" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" dependencies = [ "parity-scale-codec", "sp-runtime", @@ -3988,7 +3988,7 @@ dependencies = [ [[package]] name = "pallet-contracts-rpc" -version = "0.8.0-alpha.2" +version = "0.8.0-alpha.3" dependencies = [ "jsonrpc-core", "jsonrpc-core-client", @@ -4007,7 +4007,7 @@ dependencies = [ [[package]] name = "pallet-contracts-rpc-runtime-api" -version = "0.8.0-alpha.2" +version = "0.8.0-alpha.3" dependencies = [ "pallet-contracts-primitives", "parity-scale-codec", @@ -4018,7 +4018,7 @@ dependencies = [ [[package]] name = "pallet-democracy" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" dependencies = [ "frame-support", "frame-system", @@ -4035,7 +4035,7 @@ dependencies = [ [[package]] name = "pallet-elections" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" dependencies = [ "frame-support", "frame-system", @@ -4051,7 +4051,7 @@ dependencies = [ [[package]] name = "pallet-elections-phragmen" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" dependencies = [ "frame-support", "frame-system", @@ -4069,7 +4069,7 @@ dependencies = [ [[package]] name = "pallet-evm" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" dependencies = [ "evm", "frame-support", @@ -4089,7 +4089,7 @@ dependencies = [ [[package]] name = "pallet-example" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" dependencies = [ "frame-support", "frame-system", @@ -4104,7 +4104,7 @@ dependencies = [ [[package]] name = "pallet-example-offchain-worker" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" dependencies = [ "frame-support", "frame-system", @@ -4119,7 +4119,7 @@ dependencies = [ [[package]] name = "pallet-finality-tracker" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" dependencies = [ "frame-support", "frame-system", @@ -4136,7 +4136,7 @@ dependencies = [ [[package]] name = "pallet-generic-asset" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" dependencies = [ "frame-support", "frame-system", @@ -4150,7 +4150,7 @@ dependencies = [ [[package]] name = "pallet-grandpa" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" dependencies = [ "frame-support", "frame-system", @@ -4168,7 +4168,7 @@ dependencies = [ [[package]] name = "pallet-identity" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" dependencies = [ "enumflags2", "frame-benchmarking", @@ -4185,7 +4185,7 @@ dependencies = [ [[package]] name = "pallet-im-online" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" dependencies = [ "frame-support", "frame-system", @@ -4203,7 +4203,7 @@ dependencies = [ [[package]] name = "pallet-indices" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" dependencies = [ "frame-support", "frame-system", @@ -4219,7 +4219,7 @@ dependencies = [ [[package]] name = "pallet-membership" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" dependencies = [ "frame-support", "frame-system", @@ -4233,7 +4233,7 @@ dependencies = [ [[package]] name = "pallet-nicks" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" dependencies = [ "frame-support", "frame-system", @@ -4248,7 +4248,7 @@ dependencies = [ [[package]] name = "pallet-offences" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" dependencies = [ "frame-support", "frame-system", @@ -4264,7 +4264,7 @@ dependencies = [ [[package]] name = "pallet-randomness-collective-flip" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" dependencies = [ "frame-support", "frame-system", @@ -4278,7 +4278,7 @@ dependencies = [ [[package]] name = "pallet-recovery" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" dependencies = [ "enumflags2", "frame-support", @@ -4294,7 +4294,7 @@ dependencies = [ [[package]] name = "pallet-scored-pool" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" dependencies = [ "frame-support", "frame-system", @@ -4309,7 +4309,7 @@ dependencies = [ [[package]] name = "pallet-session" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" dependencies = [ "frame-support", "frame-system", @@ -4329,7 +4329,7 @@ dependencies = [ [[package]] name = "pallet-society" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" dependencies = [ "frame-support", "frame-system", @@ -4345,7 +4345,7 @@ dependencies = [ [[package]] name = "pallet-staking" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" dependencies = [ "frame-support", "frame-system", @@ -4368,7 +4368,7 @@ dependencies = [ [[package]] name = "pallet-staking-reward-curve" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -4379,7 +4379,7 @@ dependencies = [ [[package]] name = "pallet-sudo" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" dependencies = [ "frame-support", "frame-system", @@ -4393,7 +4393,7 @@ dependencies = [ [[package]] name = "pallet-template" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" dependencies = [ "frame-support", "frame-system", @@ -4406,7 +4406,7 @@ dependencies = [ [[package]] name = "pallet-timestamp" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" dependencies = [ "frame-benchmarking", "frame-support", @@ -4424,7 +4424,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" dependencies = [ "frame-support", "frame-system", @@ -4439,7 +4439,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" dependencies = [ "jsonrpc-core", "jsonrpc-core-client", @@ -4456,7 +4456,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc-runtime-api" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" dependencies = [ "frame-support", "parity-scale-codec", @@ -4469,7 +4469,7 @@ dependencies = [ [[package]] name = "pallet-treasury" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" dependencies = [ "frame-support", "frame-system", @@ -4484,7 +4484,7 @@ dependencies = [ [[package]] name = "pallet-utility" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" dependencies = [ "frame-support", "frame-system", @@ -4499,7 +4499,7 @@ dependencies = [ [[package]] name = "pallet-vesting" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" dependencies = [ "enumflags2", "frame-support", @@ -5541,7 +5541,7 @@ dependencies = [ [[package]] name = "sc-authority-discovery" -version = "0.8.0-alpha.2" +version = "0.8.0-alpha.3" dependencies = [ "bytes 0.5.4", "derive_more", @@ -5570,7 +5570,7 @@ dependencies = [ [[package]] name = "sc-basic-authorship" -version = "0.8.0-alpha.2" +version = "0.8.0-alpha.3" dependencies = [ "futures 0.3.4", "log 0.4.8", @@ -5593,7 +5593,7 @@ dependencies = [ [[package]] name = "sc-block-builder" -version = "0.8.0-alpha.2" +version = "0.8.0-alpha.3" dependencies = [ "parity-scale-codec", "sc-client-api", @@ -5608,7 +5608,7 @@ dependencies = [ [[package]] name = "sc-chain-spec" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" dependencies = [ "impl-trait-for-tuples", "sc-chain-spec-derive", @@ -5622,7 +5622,7 @@ dependencies = [ [[package]] name = "sc-chain-spec-derive" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -5632,7 +5632,7 @@ dependencies = [ [[package]] name = "sc-cli" -version = "0.8.0-alpha.2" +version = "0.8.0-alpha.3" dependencies = [ "ansi_term 0.12.1", "app_dirs", @@ -5671,7 +5671,7 @@ dependencies = [ [[package]] name = "sc-client" -version = "0.8.0-alpha.2" +version = "0.8.0-alpha.3" dependencies = [ "derive_more", "env_logger 0.7.1", @@ -5708,7 +5708,7 @@ dependencies = [ [[package]] name = "sc-client-api" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" dependencies = [ "derive_more", "fnv", @@ -5739,7 +5739,7 @@ dependencies = [ [[package]] name = "sc-client-db" -version = "0.8.0-alpha.2" +version = "0.8.0-alpha.3" dependencies = [ "env_logger 0.7.1", "hash-db", @@ -5770,7 +5770,7 @@ dependencies = [ [[package]] name = "sc-consensus-aura" -version = "0.8.0-alpha.2" +version = "0.8.0-alpha.3" dependencies = [ "derive_more", "env_logger 0.7.1", @@ -5809,7 +5809,7 @@ dependencies = [ [[package]] name = "sc-consensus-babe" -version = "0.8.0-alpha.2" +version = "0.8.0-alpha.3" dependencies = [ "derive_more", "env_logger 0.7.1", @@ -5860,7 +5860,7 @@ dependencies = [ [[package]] name = "sc-consensus-babe-rpc" -version = "0.8.0-alpha.2" +version = "0.8.0-alpha.3" dependencies = [ "derive_more", "futures 0.3.4", @@ -5885,7 +5885,7 @@ dependencies = [ [[package]] name = "sc-consensus-epochs" -version = "0.8.0-alpha.2" +version = "0.8.0-alpha.3" dependencies = [ "fork-tree", "parity-scale-codec", @@ -5897,7 +5897,7 @@ dependencies = [ [[package]] name = "sc-consensus-manual-seal" -version = "0.8.0-alpha.2" +version = "0.8.0-alpha.3" dependencies = [ "derive_more", "env_logger 0.7.1", @@ -5925,7 +5925,7 @@ dependencies = [ [[package]] name = "sc-consensus-pow" -version = "0.8.0-alpha.2" +version = "0.8.0-alpha.3" dependencies = [ "derive_more", "futures 0.3.4", @@ -5945,7 +5945,7 @@ dependencies = [ [[package]] name = "sc-consensus-slots" -version = "0.8.0-alpha.2" +version = "0.8.0-alpha.3" dependencies = [ "futures 0.3.4", "futures-timer 3.0.1", @@ -5966,7 +5966,7 @@ dependencies = [ [[package]] name = "sc-consensus-uncles" -version = "0.8.0-alpha.2" +version = "0.8.0-alpha.3" dependencies = [ "log 0.4.8", "sc-client-api", @@ -5979,7 +5979,7 @@ dependencies = [ [[package]] name = "sc-executor" -version = "0.8.0-alpha.2" +version = "0.8.0-alpha.3" dependencies = [ "assert_matches", "derive_more", @@ -6012,7 +6012,7 @@ dependencies = [ [[package]] name = "sc-executor-common" -version = "0.8.0-alpha.2" +version = "0.8.0-alpha.3" dependencies = [ "derive_more", "log 0.4.8", @@ -6027,7 +6027,7 @@ dependencies = [ [[package]] name = "sc-executor-wasmi" -version = "0.8.0-alpha.2" +version = "0.8.0-alpha.3" dependencies = [ "log 0.4.8", "parity-scale-codec", @@ -6042,7 +6042,7 @@ dependencies = [ [[package]] name = "sc-executor-wasmtime" -version = "0.8.0-alpha.2" +version = "0.8.0-alpha.3" dependencies = [ "assert_matches", "log 0.4.8", @@ -6059,7 +6059,7 @@ dependencies = [ [[package]] name = "sc-finality-grandpa" -version = "0.8.0-alpha.2" +version = "0.8.0-alpha.3" dependencies = [ "assert_matches", "env_logger 0.7.1", @@ -6101,7 +6101,7 @@ dependencies = [ [[package]] name = "sc-informant" -version = "0.8.0-alpha.2" +version = "0.8.0-alpha.3" dependencies = [ "ansi_term 0.12.1", "futures 0.3.4", @@ -6117,7 +6117,7 @@ dependencies = [ [[package]] name = "sc-keystore" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" dependencies = [ "derive_more", "hex", @@ -6132,7 +6132,7 @@ dependencies = [ [[package]] name = "sc-network" -version = "0.8.0-alpha.2" +version = "0.8.0-alpha.3" dependencies = [ "assert_matches", "async-std", @@ -6190,7 +6190,7 @@ dependencies = [ [[package]] name = "sc-network-gossip" -version = "0.8.0-alpha.2" +version = "0.8.0-alpha.3" dependencies = [ "futures 0.3.4", "futures-timer 3.0.1", @@ -6232,7 +6232,7 @@ dependencies = [ [[package]] name = "sc-offchain" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" dependencies = [ "bytes 0.5.4", "env_logger 0.7.1", @@ -6263,7 +6263,7 @@ dependencies = [ [[package]] name = "sc-peerset" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" dependencies = [ "futures 0.3.4", "libp2p", @@ -6275,7 +6275,7 @@ dependencies = [ [[package]] name = "sc-rpc" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" dependencies = [ "assert_matches", "futures 0.1.29", @@ -6312,7 +6312,7 @@ dependencies = [ [[package]] name = "sc-rpc-api" -version = "0.8.0-alpha.2" +version = "0.8.0-alpha.3" dependencies = [ "derive_more", "futures 0.3.4", @@ -6334,7 +6334,7 @@ dependencies = [ [[package]] name = "sc-rpc-server" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" dependencies = [ "jsonrpc-core", "jsonrpc-http-server", @@ -6361,7 +6361,7 @@ dependencies = [ [[package]] name = "sc-service" -version = "0.8.0-alpha.2" +version = "0.8.0-alpha.3" dependencies = [ "derive_more", "exit-future", @@ -6434,7 +6434,7 @@ dependencies = [ [[package]] name = "sc-state-db" -version = "0.8.0-alpha.2" +version = "0.8.0-alpha.3" dependencies = [ "env_logger 0.7.1", "log 0.4.8", @@ -6445,7 +6445,7 @@ dependencies = [ [[package]] name = "sc-telemetry" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" dependencies = [ "bytes 0.5.4", "futures 0.3.4", @@ -6466,7 +6466,7 @@ dependencies = [ [[package]] name = "sc-tracing" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" dependencies = [ "erased-serde", "log 0.4.8", @@ -6481,7 +6481,7 @@ dependencies = [ [[package]] name = "sc-transaction-graph" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" dependencies = [ "assert_matches", "criterion 0.3.1", @@ -6503,7 +6503,7 @@ dependencies = [ [[package]] name = "sc-transaction-pool" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" dependencies = [ "derive_more", "futures 0.3.4", @@ -6864,7 +6864,7 @@ checksum = "4bf77cb82ba8453b42b6ae1d692e4cdc92f9a47beaf89a847c8be83f4e328ad3" [[package]] name = "sp-allocator" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" dependencies = [ "derive_more", "log 0.4.8", @@ -6875,7 +6875,7 @@ dependencies = [ [[package]] name = "sp-api" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" dependencies = [ "hash-db", "parity-scale-codec", @@ -6890,7 +6890,7 @@ dependencies = [ [[package]] name = "sp-api-proc-macro" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" dependencies = [ "blake2-rfc", "proc-macro-crate", @@ -6919,7 +6919,7 @@ dependencies = [ [[package]] name = "sp-application-crypto" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" dependencies = [ "parity-scale-codec", "serde", @@ -6941,7 +6941,7 @@ dependencies = [ [[package]] name = "sp-arithmetic" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" dependencies = [ "criterion 0.3.1", "integer-sqrt", @@ -6956,7 +6956,7 @@ dependencies = [ [[package]] name = "sp-authority-discovery" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" dependencies = [ "parity-scale-codec", "sp-api", @@ -6967,7 +6967,7 @@ dependencies = [ [[package]] name = "sp-authorship" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" dependencies = [ "parity-scale-codec", "sp-inherents", @@ -6977,7 +6977,7 @@ dependencies = [ [[package]] name = "sp-block-builder" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" dependencies = [ "parity-scale-codec", "sp-api", @@ -6988,7 +6988,7 @@ dependencies = [ [[package]] name = "sp-blockchain" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" dependencies = [ "derive_more", "log 0.4.8", @@ -7003,7 +7003,7 @@ dependencies = [ [[package]] name = "sp-consensus" -version = "0.8.0-alpha.2" +version = "0.8.0-alpha.3" dependencies = [ "derive_more", "futures 0.3.4", @@ -7025,7 +7025,7 @@ dependencies = [ [[package]] name = "sp-consensus-aura" -version = "0.8.0-alpha.2" +version = "0.8.0-alpha.3" dependencies = [ "parity-scale-codec", "sp-api", @@ -7038,7 +7038,7 @@ dependencies = [ [[package]] name = "sp-consensus-babe" -version = "0.8.0-alpha.2" +version = "0.8.0-alpha.3" dependencies = [ "parity-scale-codec", "schnorrkel", @@ -7053,7 +7053,7 @@ dependencies = [ [[package]] name = "sp-consensus-pow" -version = "0.8.0-alpha.2" +version = "0.8.0-alpha.3" dependencies = [ "parity-scale-codec", "sp-api", @@ -7064,7 +7064,7 @@ dependencies = [ [[package]] name = "sp-core" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" dependencies = [ "base58", "blake2-rfc", @@ -7108,7 +7108,7 @@ dependencies = [ [[package]] name = "sp-debug-derive" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" dependencies = [ "proc-macro2", "quote", @@ -7117,7 +7117,7 @@ dependencies = [ [[package]] name = "sp-externalities" -version = "0.8.0-alpha.2" +version = "0.8.0-alpha.3" dependencies = [ "environmental", "sp-std", @@ -7126,7 +7126,7 @@ dependencies = [ [[package]] name = "sp-finality-grandpa" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" dependencies = [ "parity-scale-codec", "serde", @@ -7138,7 +7138,7 @@ dependencies = [ [[package]] name = "sp-finality-tracker" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" dependencies = [ "parity-scale-codec", "sp-inherents", @@ -7147,7 +7147,7 @@ dependencies = [ [[package]] name = "sp-inherents" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" dependencies = [ "derive_more", "parity-scale-codec", @@ -7158,7 +7158,7 @@ dependencies = [ [[package]] name = "sp-io" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" dependencies = [ "hash-db", "libsecp256k1", @@ -7175,7 +7175,7 @@ dependencies = [ [[package]] name = "sp-keyring" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" dependencies = [ "lazy_static", "sp-core", @@ -7185,7 +7185,7 @@ dependencies = [ [[package]] name = "sp-offchain" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" dependencies = [ "sp-api", "sp-runtime", @@ -7193,7 +7193,7 @@ dependencies = [ [[package]] name = "sp-panic-handler" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" dependencies = [ "backtrace", "log 0.4.8", @@ -7201,7 +7201,7 @@ dependencies = [ [[package]] name = "sp-phragmen" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" dependencies = [ "rand 0.7.3", "serde", @@ -7213,7 +7213,7 @@ dependencies = [ [[package]] name = "sp-rpc" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" dependencies = [ "serde", "serde_json", @@ -7222,7 +7222,7 @@ dependencies = [ [[package]] name = "sp-runtime" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" dependencies = [ "impl-trait-for-tuples", "log 0.4.8", @@ -7242,7 +7242,7 @@ dependencies = [ [[package]] name = "sp-runtime-interface" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" dependencies = [ "parity-scale-codec", "primitive-types", @@ -7261,7 +7261,7 @@ dependencies = [ [[package]] name = "sp-runtime-interface-proc-macro" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" dependencies = [ "Inflector", "proc-macro-crate", @@ -7295,7 +7295,7 @@ dependencies = [ [[package]] name = "sp-sandbox" -version = "0.8.0-alpha.2" +version = "0.8.0-alpha.3" dependencies = [ "assert_matches", "parity-scale-codec", @@ -7309,7 +7309,7 @@ dependencies = [ [[package]] name = "sp-serializer" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" dependencies = [ "serde", "serde_json", @@ -7317,7 +7317,7 @@ dependencies = [ [[package]] name = "sp-session" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" dependencies = [ "sp-api", "sp-core", @@ -7327,7 +7327,7 @@ dependencies = [ [[package]] name = "sp-staking" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" dependencies = [ "parity-scale-codec", "sp-runtime", @@ -7336,7 +7336,7 @@ dependencies = [ [[package]] name = "sp-state-machine" -version = "0.8.0-alpha.2" +version = "0.8.0-alpha.3" dependencies = [ "hash-db", "hex-literal", @@ -7355,11 +7355,11 @@ dependencies = [ [[package]] name = "sp-std" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" [[package]] name = "sp-storage" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" dependencies = [ "impl-serde 0.2.3", "serde", @@ -7381,7 +7381,7 @@ dependencies = [ [[package]] name = "sp-timestamp" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" dependencies = [ "impl-trait-for-tuples", "parity-scale-codec", @@ -7394,7 +7394,7 @@ dependencies = [ [[package]] name = "sp-transaction-pool" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" dependencies = [ "derive_more", "futures 0.3.4", @@ -7407,7 +7407,7 @@ dependencies = [ [[package]] name = "sp-trie" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" dependencies = [ "criterion 0.2.11", "hash-db", @@ -7424,7 +7424,7 @@ dependencies = [ [[package]] name = "sp-version" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" dependencies = [ "impl-serde 0.2.3", "parity-scale-codec", @@ -7435,7 +7435,7 @@ dependencies = [ [[package]] name = "sp-wasm-interface" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" dependencies = [ "impl-trait-for-tuples", "parity-scale-codec", @@ -7541,7 +7541,7 @@ dependencies = [ [[package]] name = "subkey" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" dependencies = [ "clap", "derive_more", @@ -7583,7 +7583,7 @@ dependencies = [ [[package]] name = "substrate-browser-utils" -version = "0.8.0-alpha.2" +version = "0.8.0-alpha.3" dependencies = [ "chrono", "clear_on_drop", @@ -7608,11 +7608,11 @@ dependencies = [ [[package]] name = "substrate-build-script-utils" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" [[package]] name = "substrate-frame-rpc-support" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" dependencies = [ "frame-support", "frame-system", @@ -7628,7 +7628,7 @@ dependencies = [ [[package]] name = "substrate-frame-rpc-system" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" dependencies = [ "env_logger 0.7.1", "frame-system-rpc-runtime-api", @@ -7651,7 +7651,7 @@ dependencies = [ [[package]] name = "substrate-prometheus-endpoint" -version = "0.8.0-alpha.2" +version = "0.8.0-alpha.3" dependencies = [ "async-std", "derive_more", @@ -7756,7 +7756,7 @@ dependencies = [ [[package]] name = "substrate-test-utils" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" [[package]] name = "substrate-wasm-builder" diff --git a/bin/node-template/node/Cargo.toml b/bin/node-template/node/Cargo.toml index 42dcc8ac50..bccd0576df 100644 --- a/bin/node-template/node/Cargo.toml +++ b/bin/node-template/node/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "node-template" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" authors = ["Anonymous"] edition = "2018" license = "Unlicense" diff --git a/bin/node-template/pallets/template/Cargo.toml b/bin/node-template/pallets/template/Cargo.toml index 93e13c5505..808951a77d 100644 --- a/bin/node-template/pallets/template/Cargo.toml +++ b/bin/node-template/pallets/template/Cargo.toml @@ -2,7 +2,7 @@ authors = ['Anonymous'] edition = '2018' name = 'pallet-template' -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" license = "Unlicense" homepage = "https://substrate.dev" repository = "https://github.com/paritytech/substrate/" diff --git a/bin/node-template/runtime/Cargo.toml b/bin/node-template/runtime/Cargo.toml index e6b14f1a50..35856e3bdc 100644 --- a/bin/node-template/runtime/Cargo.toml +++ b/bin/node-template/runtime/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "node-template-runtime" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" authors = ["Anonymous"] edition = "2018" license = "Unlicense" diff --git a/bin/node/cli/Cargo.toml b/bin/node/cli/Cargo.toml index f160e32e97..48e4c634f0 100644 --- a/bin/node/cli/Cargo.toml +++ b/bin/node/cli/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "node-cli" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" authors = ["Parity Technologies "] description = "Substrate node implementation in Rust." build = "build.rs" diff --git a/bin/node/executor/Cargo.toml b/bin/node/executor/Cargo.toml index 94bd13954a..2d6dd8d12b 100644 --- a/bin/node/executor/Cargo.toml +++ b/bin/node/executor/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "node-executor" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" authors = ["Parity Technologies "] description = "Substrate node implementation in Rust." edition = "2018" diff --git a/bin/node/inspect/Cargo.toml b/bin/node/inspect/Cargo.toml index 218c38d0af..70ed7e3cfc 100644 --- a/bin/node/inspect/Cargo.toml +++ b/bin/node/inspect/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "node-inspect" -version = "0.8.0-alpha.2" +version = "0.8.0-alpha.3" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" diff --git a/bin/node/primitives/Cargo.toml b/bin/node/primitives/Cargo.toml index 0e053c9041..cb271b987d 100644 --- a/bin/node/primitives/Cargo.toml +++ b/bin/node/primitives/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "node-primitives" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" diff --git a/bin/node/rpc-client/Cargo.toml b/bin/node/rpc-client/Cargo.toml index d5d5dd90d8..8b37aff291 100644 --- a/bin/node/rpc-client/Cargo.toml +++ b/bin/node/rpc-client/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "node-rpc-client" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" diff --git a/bin/node/rpc/Cargo.toml b/bin/node/rpc/Cargo.toml index 28143b3bc3..1155eab304 100644 --- a/bin/node/rpc/Cargo.toml +++ b/bin/node/rpc/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "node-rpc" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" diff --git a/bin/node/runtime/Cargo.toml b/bin/node/runtime/Cargo.toml index 4151f45b8e..66e9dece17 100644 --- a/bin/node/runtime/Cargo.toml +++ b/bin/node/runtime/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "node-runtime" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" authors = ["Parity Technologies "] edition = "2018" build = "build.rs" diff --git a/bin/node/testing/Cargo.toml b/bin/node/testing/Cargo.toml index 3e8a4c4d1f..30402c5490 100644 --- a/bin/node/testing/Cargo.toml +++ b/bin/node/testing/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "node-testing" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" authors = ["Parity Technologies "] description = "Test utilities for Substrate node." edition = "2018" diff --git a/bin/node/transaction-factory/Cargo.toml b/bin/node/transaction-factory/Cargo.toml index 8a033ad4c1..64c7b8d42a 100644 --- a/bin/node/transaction-factory/Cargo.toml +++ b/bin/node/transaction-factory/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "node-transaction-factory" -version = "0.8.0-alpha.2" +version = "0.8.0-alpha.3" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" diff --git a/bin/utils/chain-spec-builder/Cargo.toml b/bin/utils/chain-spec-builder/Cargo.toml index 22924f8852..5e51c4358e 100644 --- a/bin/utils/chain-spec-builder/Cargo.toml +++ b/bin/utils/chain-spec-builder/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "chain-spec-builder" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" authors = ["Parity Technologies "] edition = "2018" build = "build.rs" diff --git a/bin/utils/subkey/Cargo.toml b/bin/utils/subkey/Cargo.toml index a6c239c6d7..dead684598 100644 --- a/bin/utils/subkey/Cargo.toml +++ b/bin/utils/subkey/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "subkey" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" diff --git a/client/Cargo.toml b/client/Cargo.toml index 09fa6a2aaf..91f3578ce2 100644 --- a/client/Cargo.toml +++ b/client/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "sc-client" -version = "0.8.0-alpha.2" +version = "0.8.0-alpha.3" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" diff --git a/client/api/Cargo.toml b/client/api/Cargo.toml index f1d3478c47..dcbf447f59 100644 --- a/client/api/Cargo.toml +++ b/client/api/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "sc-client-api" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" diff --git a/client/authority-discovery/Cargo.toml b/client/authority-discovery/Cargo.toml index a262730d60..923408865a 100644 --- a/client/authority-discovery/Cargo.toml +++ b/client/authority-discovery/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "sc-authority-discovery" -version = "0.8.0-alpha.2" +version = "0.8.0-alpha.3" authors = ["Parity Technologies "] edition = "2018" build = "build.rs" diff --git a/client/basic-authorship/Cargo.toml b/client/basic-authorship/Cargo.toml index 56bfb57072..61184f9517 100644 --- a/client/basic-authorship/Cargo.toml +++ b/client/basic-authorship/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "sc-basic-authorship" -version = "0.8.0-alpha.2" +version = "0.8.0-alpha.3" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" diff --git a/client/block-builder/Cargo.toml b/client/block-builder/Cargo.toml index ee8c1c8ae0..a41acc1612 100644 --- a/client/block-builder/Cargo.toml +++ b/client/block-builder/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "sc-block-builder" -version = "0.8.0-alpha.2" +version = "0.8.0-alpha.3" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" diff --git a/client/chain-spec/Cargo.toml b/client/chain-spec/Cargo.toml index 4f6e4be6a1..10d4fc2622 100644 --- a/client/chain-spec/Cargo.toml +++ b/client/chain-spec/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "sc-chain-spec" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" diff --git a/client/chain-spec/derive/Cargo.toml b/client/chain-spec/derive/Cargo.toml index 77532f9261..c76949011a 100644 --- a/client/chain-spec/derive/Cargo.toml +++ b/client/chain-spec/derive/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "sc-chain-spec-derive" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" diff --git a/client/cli/Cargo.toml b/client/cli/Cargo.toml index e8525644d7..588aa134ab 100644 --- a/client/cli/Cargo.toml +++ b/client/cli/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "sc-cli" -version = "0.8.0-alpha.2" +version = "0.8.0-alpha.3" authors = ["Parity Technologies "] description = "Substrate CLI interface." edition = "2018" diff --git a/client/consensus/aura/Cargo.toml b/client/consensus/aura/Cargo.toml index 41b1f4c460..0a7a7176c7 100644 --- a/client/consensus/aura/Cargo.toml +++ b/client/consensus/aura/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "sc-consensus-aura" -version = "0.8.0-alpha.2" +version = "0.8.0-alpha.3" authors = ["Parity Technologies "] description = "Aura consensus algorithm for substrate" edition = "2018" diff --git a/client/consensus/babe/Cargo.toml b/client/consensus/babe/Cargo.toml index 4ccd006433..b465ed1f13 100644 --- a/client/consensus/babe/Cargo.toml +++ b/client/consensus/babe/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "sc-consensus-babe" -version = "0.8.0-alpha.2" +version = "0.8.0-alpha.3" authors = ["Parity Technologies "] description = "BABE consensus algorithm for substrate" edition = "2018" diff --git a/client/consensus/babe/rpc/Cargo.toml b/client/consensus/babe/rpc/Cargo.toml index 11a8b28211..3f2cc4f0bc 100644 --- a/client/consensus/babe/rpc/Cargo.toml +++ b/client/consensus/babe/rpc/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "sc-consensus-babe-rpc" -version = "0.8.0-alpha.2" +version = "0.8.0-alpha.3" authors = ["Parity Technologies "] description = "RPC extensions for the BABE consensus algorithm" edition = "2018" diff --git a/client/consensus/epochs/Cargo.toml b/client/consensus/epochs/Cargo.toml index 48a14ea505..778dfa85fe 100644 --- a/client/consensus/epochs/Cargo.toml +++ b/client/consensus/epochs/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "sc-consensus-epochs" -version = "0.8.0-alpha.2" +version = "0.8.0-alpha.3" authors = ["Parity Technologies "] description = "Generic epochs-based utilities for consensus" edition = "2018" diff --git a/client/consensus/manual-seal/Cargo.toml b/client/consensus/manual-seal/Cargo.toml index 0ae7ddbd64..11fee0e3f9 100644 --- a/client/consensus/manual-seal/Cargo.toml +++ b/client/consensus/manual-seal/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "sc-consensus-manual-seal" -version = "0.8.0-alpha.2" +version = "0.8.0-alpha.3" authors = ["Parity Technologies "] description = "Manual sealing engine for Substrate" edition = "2018" diff --git a/client/consensus/pow/Cargo.toml b/client/consensus/pow/Cargo.toml index dd834e8326..83bcee453d 100644 --- a/client/consensus/pow/Cargo.toml +++ b/client/consensus/pow/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "sc-consensus-pow" -version = "0.8.0-alpha.2" +version = "0.8.0-alpha.3" authors = ["Parity Technologies "] description = "PoW consensus algorithm for substrate" edition = "2018" diff --git a/client/consensus/slots/Cargo.toml b/client/consensus/slots/Cargo.toml index a626e2f179..435fde0f6f 100644 --- a/client/consensus/slots/Cargo.toml +++ b/client/consensus/slots/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "sc-consensus-slots" -version = "0.8.0-alpha.2" +version = "0.8.0-alpha.3" authors = ["Parity Technologies "] description = "Generic slots-based utilities for consensus" edition = "2018" diff --git a/client/consensus/uncles/Cargo.toml b/client/consensus/uncles/Cargo.toml index 2c40e53928..ad325ed79f 100644 --- a/client/consensus/uncles/Cargo.toml +++ b/client/consensus/uncles/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "sc-consensus-uncles" -version = "0.8.0-alpha.2" +version = "0.8.0-alpha.3" authors = ["Parity Technologies "] description = "Generic uncle inclusion utilities for consensus" edition = "2018" diff --git a/client/db/Cargo.toml b/client/db/Cargo.toml index f6b65fdc3c..68460f42a6 100644 --- a/client/db/Cargo.toml +++ b/client/db/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "sc-client-db" -version = "0.8.0-alpha.2" +version = "0.8.0-alpha.3" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" diff --git a/client/executor/Cargo.toml b/client/executor/Cargo.toml index 9bc6ef910f..a108e63cd1 100644 --- a/client/executor/Cargo.toml +++ b/client/executor/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "sc-executor" -version = "0.8.0-alpha.2" +version = "0.8.0-alpha.3" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" diff --git a/client/executor/common/Cargo.toml b/client/executor/common/Cargo.toml index 9b3e39b6db..b3e6918174 100644 --- a/client/executor/common/Cargo.toml +++ b/client/executor/common/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "sc-executor-common" -version = "0.8.0-alpha.2" +version = "0.8.0-alpha.3" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" diff --git a/client/executor/wasmi/Cargo.toml b/client/executor/wasmi/Cargo.toml index ff52d537af..286acf2752 100644 --- a/client/executor/wasmi/Cargo.toml +++ b/client/executor/wasmi/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "sc-executor-wasmi" -version = "0.8.0-alpha.2" +version = "0.8.0-alpha.3" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" diff --git a/client/executor/wasmtime/Cargo.toml b/client/executor/wasmtime/Cargo.toml index f823d28ebf..f1cd5a2ece 100644 --- a/client/executor/wasmtime/Cargo.toml +++ b/client/executor/wasmtime/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "sc-executor-wasmtime" -version = "0.8.0-alpha.2" +version = "0.8.0-alpha.3" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" diff --git a/client/finality-grandpa/Cargo.toml b/client/finality-grandpa/Cargo.toml index 773cbc2317..7dea004eff 100644 --- a/client/finality-grandpa/Cargo.toml +++ b/client/finality-grandpa/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "sc-finality-grandpa" -version = "0.8.0-alpha.2" +version = "0.8.0-alpha.3" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" diff --git a/client/informant/Cargo.toml b/client/informant/Cargo.toml index a7dc6fa70a..a29d793c36 100644 --- a/client/informant/Cargo.toml +++ b/client/informant/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "sc-informant" -version = "0.8.0-alpha.2" +version = "0.8.0-alpha.3" authors = ["Parity Technologies "] description = "Substrate informant." edition = "2018" diff --git a/client/keystore/Cargo.toml b/client/keystore/Cargo.toml index 13d72746ba..247376bc46 100644 --- a/client/keystore/Cargo.toml +++ b/client/keystore/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "sc-keystore" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" diff --git a/client/network-gossip/Cargo.toml b/client/network-gossip/Cargo.toml index b69cf334e9..6ed9f4de59 100644 --- a/client/network-gossip/Cargo.toml +++ b/client/network-gossip/Cargo.toml @@ -1,7 +1,7 @@ [package] description = "Gossiping for the Substrate network protocol" name = "sc-network-gossip" -version = "0.8.0-alpha.2" +version = "0.8.0-alpha.3" license = "GPL-3.0" authors = ["Parity Technologies "] edition = "2018" diff --git a/client/network/Cargo.toml b/client/network/Cargo.toml index 44664b2a26..4e07e84ba9 100644 --- a/client/network/Cargo.toml +++ b/client/network/Cargo.toml @@ -1,7 +1,7 @@ [package] description = "Substrate network protocol" name = "sc-network" -version = "0.8.0-alpha.2" +version = "0.8.0-alpha.3" license = "GPL-3.0" authors = ["Parity Technologies "] edition = "2018" diff --git a/client/offchain/Cargo.toml b/client/offchain/Cargo.toml index 066be726e8..9aaf5de2a1 100644 --- a/client/offchain/Cargo.toml +++ b/client/offchain/Cargo.toml @@ -1,7 +1,7 @@ [package] description = "Substrate offchain workers" name = "sc-offchain" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" license = "GPL-3.0" authors = ["Parity Technologies "] edition = "2018" diff --git a/client/peerset/Cargo.toml b/client/peerset/Cargo.toml index 382a1e0b24..d90aa21c4f 100644 --- a/client/peerset/Cargo.toml +++ b/client/peerset/Cargo.toml @@ -3,7 +3,7 @@ description = "Connectivity manager based on reputation" homepage = "http://parity.io" license = "GPL-3.0" name = "sc-peerset" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" authors = ["Parity Technologies "] edition = "2018" repository = "https://github.com/paritytech/substrate/" diff --git a/client/rpc-api/Cargo.toml b/client/rpc-api/Cargo.toml index 3fb6afb474..984842dccf 100644 --- a/client/rpc-api/Cargo.toml +++ b/client/rpc-api/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "sc-rpc-api" -version = "0.8.0-alpha.2" +version = "0.8.0-alpha.3" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" diff --git a/client/rpc-servers/Cargo.toml b/client/rpc-servers/Cargo.toml index e2ccff65e6..79d2984c22 100644 --- a/client/rpc-servers/Cargo.toml +++ b/client/rpc-servers/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "sc-rpc-server" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" diff --git a/client/rpc/Cargo.toml b/client/rpc/Cargo.toml index 3fb0360601..2a37465e13 100644 --- a/client/rpc/Cargo.toml +++ b/client/rpc/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "sc-rpc" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" diff --git a/client/service/Cargo.toml b/client/service/Cargo.toml index d504ab2052..e7c55fae02 100644 --- a/client/service/Cargo.toml +++ b/client/service/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "sc-service" -version = "0.8.0-alpha.2" +version = "0.8.0-alpha.3" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" diff --git a/client/state-db/Cargo.toml b/client/state-db/Cargo.toml index 3f1c4b0cf6..5a69d8b31e 100644 --- a/client/state-db/Cargo.toml +++ b/client/state-db/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "sc-state-db" -version = "0.8.0-alpha.2" +version = "0.8.0-alpha.3" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" diff --git a/client/telemetry/Cargo.toml b/client/telemetry/Cargo.toml index 2b209e5284..108c13de35 100644 --- a/client/telemetry/Cargo.toml +++ b/client/telemetry/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "sc-telemetry" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" authors = ["Parity Technologies "] description = "Telemetry utils" edition = "2018" diff --git a/client/tracing/Cargo.toml b/client/tracing/Cargo.toml index 7201248a6a..ad988f0607 100644 --- a/client/tracing/Cargo.toml +++ b/client/tracing/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "sc-tracing" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" license = "GPL-3.0" authors = ["Parity Technologies "] edition = "2018" diff --git a/client/transaction-pool/Cargo.toml b/client/transaction-pool/Cargo.toml index e3170d585e..1b324e9758 100644 --- a/client/transaction-pool/Cargo.toml +++ b/client/transaction-pool/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "sc-transaction-pool" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" diff --git a/client/transaction-pool/graph/Cargo.toml b/client/transaction-pool/graph/Cargo.toml index 6b79092192..fbf405d735 100644 --- a/client/transaction-pool/graph/Cargo.toml +++ b/client/transaction-pool/graph/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "sc-transaction-graph" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" diff --git a/frame/assets/Cargo.toml b/frame/assets/Cargo.toml index 89f9a18887..ba2e58ba28 100644 --- a/frame/assets/Cargo.toml +++ b/frame/assets/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "pallet-assets" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" diff --git a/frame/aura/Cargo.toml b/frame/aura/Cargo.toml index 8a0bb4c094..110050071b 100644 --- a/frame/aura/Cargo.toml +++ b/frame/aura/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "pallet-aura" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" diff --git a/frame/authority-discovery/Cargo.toml b/frame/authority-discovery/Cargo.toml index 4d2a6642e3..b96cb2fac1 100644 --- a/frame/authority-discovery/Cargo.toml +++ b/frame/authority-discovery/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "pallet-authority-discovery" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" diff --git a/frame/authorship/Cargo.toml b/frame/authorship/Cargo.toml index ff91917af9..dec9d8b03c 100644 --- a/frame/authorship/Cargo.toml +++ b/frame/authorship/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "pallet-authorship" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" description = "Block and Uncle Author tracking for the FRAME" authors = ["Parity Technologies "] edition = "2018" diff --git a/frame/babe/Cargo.toml b/frame/babe/Cargo.toml index ce769275c9..14176a1ea4 100644 --- a/frame/babe/Cargo.toml +++ b/frame/babe/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "pallet-babe" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" diff --git a/frame/balances/Cargo.toml b/frame/balances/Cargo.toml index bc8c1a23c3..c4d963a2f4 100644 --- a/frame/balances/Cargo.toml +++ b/frame/balances/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "pallet-balances" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" diff --git a/frame/benchmarking/Cargo.toml b/frame/benchmarking/Cargo.toml index 810d6361dd..524ecabb3c 100644 --- a/frame/benchmarking/Cargo.toml +++ b/frame/benchmarking/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "frame-benchmarking" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" diff --git a/frame/collective/Cargo.toml b/frame/collective/Cargo.toml index 14d926827d..73200119ff 100644 --- a/frame/collective/Cargo.toml +++ b/frame/collective/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "pallet-collective" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" diff --git a/frame/contracts/Cargo.toml b/frame/contracts/Cargo.toml index 89e93e725f..632a1ff776 100644 --- a/frame/contracts/Cargo.toml +++ b/frame/contracts/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "pallet-contracts" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" diff --git a/frame/contracts/common/Cargo.toml b/frame/contracts/common/Cargo.toml index 753e79c19e..878887573b 100644 --- a/frame/contracts/common/Cargo.toml +++ b/frame/contracts/common/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "pallet-contracts-primitives" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" diff --git a/frame/contracts/rpc/Cargo.toml b/frame/contracts/rpc/Cargo.toml index c026ee6cdd..61491f7d79 100644 --- a/frame/contracts/rpc/Cargo.toml +++ b/frame/contracts/rpc/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "pallet-contracts-rpc" -version = "0.8.0-alpha.2" +version = "0.8.0-alpha.3" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" diff --git a/frame/contracts/rpc/runtime-api/Cargo.toml b/frame/contracts/rpc/runtime-api/Cargo.toml index 96d3a8116d..ee251cd2c0 100644 --- a/frame/contracts/rpc/runtime-api/Cargo.toml +++ b/frame/contracts/rpc/runtime-api/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "pallet-contracts-rpc-runtime-api" -version = "0.8.0-alpha.2" +version = "0.8.0-alpha.3" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" diff --git a/frame/democracy/Cargo.toml b/frame/democracy/Cargo.toml index e62e7a45d9..7ff3ae2b41 100644 --- a/frame/democracy/Cargo.toml +++ b/frame/democracy/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "pallet-democracy" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" diff --git a/frame/elections-phragmen/Cargo.toml b/frame/elections-phragmen/Cargo.toml index 80be82ff2c..08bbfc979e 100644 --- a/frame/elections-phragmen/Cargo.toml +++ b/frame/elections-phragmen/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "pallet-elections-phragmen" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" diff --git a/frame/elections/Cargo.toml b/frame/elections/Cargo.toml index 81e128da31..55f12028ae 100644 --- a/frame/elections/Cargo.toml +++ b/frame/elections/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "pallet-elections" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" diff --git a/frame/evm/Cargo.toml b/frame/evm/Cargo.toml index 649d6b778f..0d9091dfaf 100644 --- a/frame/evm/Cargo.toml +++ b/frame/evm/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "pallet-evm" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" diff --git a/frame/example-offchain-worker/Cargo.toml b/frame/example-offchain-worker/Cargo.toml index 132ef779be..39ba8c3287 100644 --- a/frame/example-offchain-worker/Cargo.toml +++ b/frame/example-offchain-worker/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "pallet-example-offchain-worker" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" authors = ["Parity Technologies "] edition = "2018" license = "Unlicense" diff --git a/frame/example/Cargo.toml b/frame/example/Cargo.toml index 0062170454..90a5b9c76b 100644 --- a/frame/example/Cargo.toml +++ b/frame/example/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "pallet-example" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" authors = ["Parity Technologies "] edition = "2018" license = "Unlicense" diff --git a/frame/executive/Cargo.toml b/frame/executive/Cargo.toml index 63908edba2..f5b4d5e186 100644 --- a/frame/executive/Cargo.toml +++ b/frame/executive/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "frame-executive" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" diff --git a/frame/finality-tracker/Cargo.toml b/frame/finality-tracker/Cargo.toml index 5ca1bd28a5..231e8c7608 100644 --- a/frame/finality-tracker/Cargo.toml +++ b/frame/finality-tracker/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "pallet-finality-tracker" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" diff --git a/frame/generic-asset/Cargo.toml b/frame/generic-asset/Cargo.toml index 5e48bc8ad7..3c452c11b0 100644 --- a/frame/generic-asset/Cargo.toml +++ b/frame/generic-asset/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "pallet-generic-asset" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" authors = ["Centrality Developers "] edition = "2018" license = "GPL-3.0" diff --git a/frame/grandpa/Cargo.toml b/frame/grandpa/Cargo.toml index f458a59a2c..feaf8fa804 100644 --- a/frame/grandpa/Cargo.toml +++ b/frame/grandpa/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "pallet-grandpa" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" diff --git a/frame/identity/Cargo.toml b/frame/identity/Cargo.toml index 0cbeb2772b..4f6bc9ca4a 100644 --- a/frame/identity/Cargo.toml +++ b/frame/identity/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "pallet-identity" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" diff --git a/frame/im-online/Cargo.toml b/frame/im-online/Cargo.toml index e1c35af54c..3201e808b2 100644 --- a/frame/im-online/Cargo.toml +++ b/frame/im-online/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "pallet-im-online" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" diff --git a/frame/indices/Cargo.toml b/frame/indices/Cargo.toml index 341b2722dc..462ee1c3b3 100644 --- a/frame/indices/Cargo.toml +++ b/frame/indices/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "pallet-indices" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" diff --git a/frame/membership/Cargo.toml b/frame/membership/Cargo.toml index 0d89a8038c..42e933aa3a 100644 --- a/frame/membership/Cargo.toml +++ b/frame/membership/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "pallet-membership" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" diff --git a/frame/metadata/Cargo.toml b/frame/metadata/Cargo.toml index 2d3160ac01..ee110ac254 100644 --- a/frame/metadata/Cargo.toml +++ b/frame/metadata/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "frame-metadata" -version = "11.0.0-alpha.2" +version = "11.0.0-alpha.3" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" diff --git a/frame/nicks/Cargo.toml b/frame/nicks/Cargo.toml index 44d9ee4a55..81fb07b3ca 100644 --- a/frame/nicks/Cargo.toml +++ b/frame/nicks/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "pallet-nicks" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" diff --git a/frame/offences/Cargo.toml b/frame/offences/Cargo.toml index 458bfd0555..e3601dda5b 100644 --- a/frame/offences/Cargo.toml +++ b/frame/offences/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "pallet-offences" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" diff --git a/frame/randomness-collective-flip/Cargo.toml b/frame/randomness-collective-flip/Cargo.toml index de369b7b88..b99f4c8e49 100644 --- a/frame/randomness-collective-flip/Cargo.toml +++ b/frame/randomness-collective-flip/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "pallet-randomness-collective-flip" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" diff --git a/frame/recovery/Cargo.toml b/frame/recovery/Cargo.toml index efeb349f06..39baba71e4 100644 --- a/frame/recovery/Cargo.toml +++ b/frame/recovery/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "pallet-recovery" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" diff --git a/frame/scored-pool/Cargo.toml b/frame/scored-pool/Cargo.toml index 36efebd7b4..83ec59cb78 100644 --- a/frame/scored-pool/Cargo.toml +++ b/frame/scored-pool/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "pallet-scored-pool" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" diff --git a/frame/session/Cargo.toml b/frame/session/Cargo.toml index 5d2b3b5fa8..3d98f92c43 100644 --- a/frame/session/Cargo.toml +++ b/frame/session/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "pallet-session" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" diff --git a/frame/society/Cargo.toml b/frame/society/Cargo.toml index ef27acb1cb..898a47010f 100644 --- a/frame/society/Cargo.toml +++ b/frame/society/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "pallet-society" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" diff --git a/frame/staking/Cargo.toml b/frame/staking/Cargo.toml index 4731676526..6e737aea3a 100644 --- a/frame/staking/Cargo.toml +++ b/frame/staking/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "pallet-staking" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" diff --git a/frame/staking/reward-curve/Cargo.toml b/frame/staking/reward-curve/Cargo.toml index 0b727cbcf5..3d0920e644 100644 --- a/frame/staking/reward-curve/Cargo.toml +++ b/frame/staking/reward-curve/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "pallet-staking-reward-curve" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" diff --git a/frame/sudo/Cargo.toml b/frame/sudo/Cargo.toml index 3360653c25..118bb6f1ff 100644 --- a/frame/sudo/Cargo.toml +++ b/frame/sudo/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "pallet-sudo" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" diff --git a/frame/support/Cargo.toml b/frame/support/Cargo.toml index c132802175..d961134142 100644 --- a/frame/support/Cargo.toml +++ b/frame/support/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "frame-support" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" diff --git a/frame/support/procedural/Cargo.toml b/frame/support/procedural/Cargo.toml index 39b7e175ee..1f5ec04d25 100644 --- a/frame/support/procedural/Cargo.toml +++ b/frame/support/procedural/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "frame-support-procedural" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" diff --git a/frame/support/procedural/tools/Cargo.toml b/frame/support/procedural/tools/Cargo.toml index da107c024f..8f0ce7b06a 100644 --- a/frame/support/procedural/tools/Cargo.toml +++ b/frame/support/procedural/tools/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "frame-support-procedural-tools" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" diff --git a/frame/support/procedural/tools/derive/Cargo.toml b/frame/support/procedural/tools/derive/Cargo.toml index e95aa1d690..872185d19f 100644 --- a/frame/support/procedural/tools/derive/Cargo.toml +++ b/frame/support/procedural/tools/derive/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "frame-support-procedural-tools-derive" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" diff --git a/frame/system/Cargo.toml b/frame/system/Cargo.toml index b75e038504..cb5b52b8ca 100644 --- a/frame/system/Cargo.toml +++ b/frame/system/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "frame-system" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" diff --git a/frame/system/rpc/runtime-api/Cargo.toml b/frame/system/rpc/runtime-api/Cargo.toml index 88df5ea3b8..2a0f3ff70f 100644 --- a/frame/system/rpc/runtime-api/Cargo.toml +++ b/frame/system/rpc/runtime-api/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "frame-system-rpc-runtime-api" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" diff --git a/frame/timestamp/Cargo.toml b/frame/timestamp/Cargo.toml index fe73b081b0..1c8dfa1dfb 100644 --- a/frame/timestamp/Cargo.toml +++ b/frame/timestamp/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "pallet-timestamp" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" diff --git a/frame/transaction-payment/Cargo.toml b/frame/transaction-payment/Cargo.toml index b92a22ecde..0e0ba1d5de 100644 --- a/frame/transaction-payment/Cargo.toml +++ b/frame/transaction-payment/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "pallet-transaction-payment" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" diff --git a/frame/transaction-payment/rpc/Cargo.toml b/frame/transaction-payment/rpc/Cargo.toml index 677b85b5fb..38fc10d56c 100644 --- a/frame/transaction-payment/rpc/Cargo.toml +++ b/frame/transaction-payment/rpc/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "pallet-transaction-payment-rpc" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" diff --git a/frame/transaction-payment/rpc/runtime-api/Cargo.toml b/frame/transaction-payment/rpc/runtime-api/Cargo.toml index 1a5f5fc35f..369f044a36 100644 --- a/frame/transaction-payment/rpc/runtime-api/Cargo.toml +++ b/frame/transaction-payment/rpc/runtime-api/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "pallet-transaction-payment-rpc-runtime-api" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" diff --git a/frame/treasury/Cargo.toml b/frame/treasury/Cargo.toml index c47a87fb56..a0bf1443da 100644 --- a/frame/treasury/Cargo.toml +++ b/frame/treasury/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "pallet-treasury" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" diff --git a/frame/utility/Cargo.toml b/frame/utility/Cargo.toml index 68d621861c..552f1dd254 100644 --- a/frame/utility/Cargo.toml +++ b/frame/utility/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "pallet-utility" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" diff --git a/frame/vesting/Cargo.toml b/frame/vesting/Cargo.toml index ff16007ace..ac23eef571 100644 --- a/frame/vesting/Cargo.toml +++ b/frame/vesting/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "pallet-vesting" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" diff --git a/primitives/allocator/Cargo.toml b/primitives/allocator/Cargo.toml index af977ed240..944cfa6de1 100644 --- a/primitives/allocator/Cargo.toml +++ b/primitives/allocator/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "sp-allocator" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" diff --git a/primitives/api/Cargo.toml b/primitives/api/Cargo.toml index 6a985b4f48..4c90c41d3f 100644 --- a/primitives/api/Cargo.toml +++ b/primitives/api/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "sp-api" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" diff --git a/primitives/api/proc-macro/Cargo.toml b/primitives/api/proc-macro/Cargo.toml index 8e9bf11917..e031f97ba9 100644 --- a/primitives/api/proc-macro/Cargo.toml +++ b/primitives/api/proc-macro/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "sp-api-proc-macro" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" diff --git a/primitives/application-crypto/Cargo.toml b/primitives/application-crypto/Cargo.toml index 630012ba70..7125ed7982 100644 --- a/primitives/application-crypto/Cargo.toml +++ b/primitives/application-crypto/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "sp-application-crypto" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" authors = ["Parity Technologies "] edition = "2018" description = "Provides facilities for generating application specific crypto wrapper types." diff --git a/primitives/arithmetic/Cargo.toml b/primitives/arithmetic/Cargo.toml index cfaaa2ebe3..924278ce89 100644 --- a/primitives/arithmetic/Cargo.toml +++ b/primitives/arithmetic/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "sp-arithmetic" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" diff --git a/primitives/authority-discovery/Cargo.toml b/primitives/authority-discovery/Cargo.toml index d709394044..84fe003b9a 100644 --- a/primitives/authority-discovery/Cargo.toml +++ b/primitives/authority-discovery/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "sp-authority-discovery" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" authors = ["Parity Technologies "] description = "Authority discovery primitives" edition = "2018" diff --git a/primitives/authorship/Cargo.toml b/primitives/authorship/Cargo.toml index e131393ff1..16f052fe0f 100644 --- a/primitives/authorship/Cargo.toml +++ b/primitives/authorship/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "sp-authorship" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" authors = ["Parity Technologies "] description = "Authorship primitives" edition = "2018" diff --git a/primitives/block-builder/Cargo.toml b/primitives/block-builder/Cargo.toml index 1e1a23fd6e..0c32752ed3 100644 --- a/primitives/block-builder/Cargo.toml +++ b/primitives/block-builder/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "sp-block-builder" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" diff --git a/primitives/blockchain/Cargo.toml b/primitives/blockchain/Cargo.toml index cdd31ad1af..a31cda5c29 100644 --- a/primitives/blockchain/Cargo.toml +++ b/primitives/blockchain/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "sp-blockchain" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" diff --git a/primitives/consensus/aura/Cargo.toml b/primitives/consensus/aura/Cargo.toml index e2800a528a..84b56e18c0 100644 --- a/primitives/consensus/aura/Cargo.toml +++ b/primitives/consensus/aura/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "sp-consensus-aura" -version = "0.8.0-alpha.2" +version = "0.8.0-alpha.3" authors = ["Parity Technologies "] description = "Primitives for Aura consensus" edition = "2018" diff --git a/primitives/consensus/babe/Cargo.toml b/primitives/consensus/babe/Cargo.toml index ddc76cc634..291958c100 100644 --- a/primitives/consensus/babe/Cargo.toml +++ b/primitives/consensus/babe/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "sp-consensus-babe" -version = "0.8.0-alpha.2" +version = "0.8.0-alpha.3" authors = ["Parity Technologies "] description = "Primitives for BABE consensus" edition = "2018" diff --git a/primitives/consensus/common/Cargo.toml b/primitives/consensus/common/Cargo.toml index 8e5ddad32d..0af3d1ad91 100644 --- a/primitives/consensus/common/Cargo.toml +++ b/primitives/consensus/common/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "sp-consensus" -version = "0.8.0-alpha.2" +version = "0.8.0-alpha.3" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" diff --git a/primitives/consensus/pow/Cargo.toml b/primitives/consensus/pow/Cargo.toml index 7a8965a431..978e56706d 100644 --- a/primitives/consensus/pow/Cargo.toml +++ b/primitives/consensus/pow/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "sp-consensus-pow" -version = "0.8.0-alpha.2" +version = "0.8.0-alpha.3" authors = ["Parity Technologies "] description = "Primitives for Aura consensus" edition = "2018" diff --git a/primitives/core/Cargo.toml b/primitives/core/Cargo.toml index 27efd587d4..8d69110ae6 100644 --- a/primitives/core/Cargo.toml +++ b/primitives/core/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "sp-core" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" diff --git a/primitives/debug-derive/Cargo.toml b/primitives/debug-derive/Cargo.toml index 1dfc980578..e15ef594d3 100644 --- a/primitives/debug-derive/Cargo.toml +++ b/primitives/debug-derive/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "sp-debug-derive" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" diff --git a/primitives/externalities/Cargo.toml b/primitives/externalities/Cargo.toml index 4d654e0f94..f462b7670e 100644 --- a/primitives/externalities/Cargo.toml +++ b/primitives/externalities/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "sp-externalities" -version = "0.8.0-alpha.2" +version = "0.8.0-alpha.3" license = "GPL-3.0" authors = ["Parity Technologies "] edition = "2018" diff --git a/primitives/finality-grandpa/Cargo.toml b/primitives/finality-grandpa/Cargo.toml index c24bb6e623..3b71946a00 100644 --- a/primitives/finality-grandpa/Cargo.toml +++ b/primitives/finality-grandpa/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "sp-finality-grandpa" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" diff --git a/primitives/finality-tracker/Cargo.toml b/primitives/finality-tracker/Cargo.toml index 2e8be7e1e5..23f3b5e394 100644 --- a/primitives/finality-tracker/Cargo.toml +++ b/primitives/finality-tracker/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "sp-finality-tracker" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" diff --git a/primitives/inherents/Cargo.toml b/primitives/inherents/Cargo.toml index 3a65576d60..94ee0b8935 100644 --- a/primitives/inherents/Cargo.toml +++ b/primitives/inherents/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "sp-inherents" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" diff --git a/primitives/io/Cargo.toml b/primitives/io/Cargo.toml index ff58d03d98..be148aacff 100644 --- a/primitives/io/Cargo.toml +++ b/primitives/io/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "sp-io" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" diff --git a/primitives/keyring/Cargo.toml b/primitives/keyring/Cargo.toml index 9177c37701..1ec4ebe547 100644 --- a/primitives/keyring/Cargo.toml +++ b/primitives/keyring/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "sp-keyring" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" diff --git a/primitives/offchain/Cargo.toml b/primitives/offchain/Cargo.toml index 8e7853f6ea..45324d368b 100644 --- a/primitives/offchain/Cargo.toml +++ b/primitives/offchain/Cargo.toml @@ -1,7 +1,7 @@ [package] description = "Substrate offchain workers primitives" name = "sp-offchain" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" license = "GPL-3.0" authors = ["Parity Technologies "] edition = "2018" diff --git a/primitives/panic-handler/Cargo.toml b/primitives/panic-handler/Cargo.toml index 795aa24047..592107b84f 100644 --- a/primitives/panic-handler/Cargo.toml +++ b/primitives/panic-handler/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "sp-panic-handler" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" diff --git a/primitives/phragmen/Cargo.toml b/primitives/phragmen/Cargo.toml index 23b872a15c..6a599bdabd 100644 --- a/primitives/phragmen/Cargo.toml +++ b/primitives/phragmen/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "sp-phragmen" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" diff --git a/primitives/rpc/Cargo.toml b/primitives/rpc/Cargo.toml index 9694552617..13d91e71d3 100644 --- a/primitives/rpc/Cargo.toml +++ b/primitives/rpc/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "sp-rpc" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" diff --git a/primitives/runtime-interface/Cargo.toml b/primitives/runtime-interface/Cargo.toml index d3b3e3120b..5084b00289 100644 --- a/primitives/runtime-interface/Cargo.toml +++ b/primitives/runtime-interface/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "sp-runtime-interface" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" diff --git a/primitives/runtime-interface/proc-macro/Cargo.toml b/primitives/runtime-interface/proc-macro/Cargo.toml index e925f4db2e..b18254f62f 100644 --- a/primitives/runtime-interface/proc-macro/Cargo.toml +++ b/primitives/runtime-interface/proc-macro/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "sp-runtime-interface-proc-macro" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" diff --git a/primitives/runtime/Cargo.toml b/primitives/runtime/Cargo.toml index 37e6060bd3..dbdeeabd2f 100644 --- a/primitives/runtime/Cargo.toml +++ b/primitives/runtime/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "sp-runtime" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" diff --git a/primitives/sandbox/Cargo.toml b/primitives/sandbox/Cargo.toml index aba1bdf245..7c797f6c0c 100755 --- a/primitives/sandbox/Cargo.toml +++ b/primitives/sandbox/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "sp-sandbox" -version = "0.8.0-alpha.2" +version = "0.8.0-alpha.3" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" diff --git a/primitives/serializer/Cargo.toml b/primitives/serializer/Cargo.toml index f71a4af678..39f78c078b 100644 --- a/primitives/serializer/Cargo.toml +++ b/primitives/serializer/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "sp-serializer" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" diff --git a/primitives/session/Cargo.toml b/primitives/session/Cargo.toml index c644ec1518..d01f7ee440 100644 --- a/primitives/session/Cargo.toml +++ b/primitives/session/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "sp-session" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" diff --git a/primitives/staking/Cargo.toml b/primitives/staking/Cargo.toml index 39f6467d43..986f7ecd7e 100644 --- a/primitives/staking/Cargo.toml +++ b/primitives/staking/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "sp-staking" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" diff --git a/primitives/state-machine/Cargo.toml b/primitives/state-machine/Cargo.toml index fed71d3edc..91036d74d7 100644 --- a/primitives/state-machine/Cargo.toml +++ b/primitives/state-machine/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "sp-state-machine" -version = "0.8.0-alpha.2" +version = "0.8.0-alpha.3" authors = ["Parity Technologies "] description = "Substrate State Machine" edition = "2018" diff --git a/primitives/std/Cargo.toml b/primitives/std/Cargo.toml index 6799540939..38a0c713c0 100644 --- a/primitives/std/Cargo.toml +++ b/primitives/std/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "sp-std" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" diff --git a/primitives/storage/Cargo.toml b/primitives/storage/Cargo.toml index 863800bf15..7e434cdd89 100644 --- a/primitives/storage/Cargo.toml +++ b/primitives/storage/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "sp-storage" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" authors = ["Parity Technologies "] edition = "2018" description = "Storage related primitives" diff --git a/primitives/timestamp/Cargo.toml b/primitives/timestamp/Cargo.toml index 790b6e9594..6a1a861908 100644 --- a/primitives/timestamp/Cargo.toml +++ b/primitives/timestamp/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "sp-timestamp" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" diff --git a/primitives/transaction-pool/Cargo.toml b/primitives/transaction-pool/Cargo.toml index 30d60d94f1..58023c58c4 100644 --- a/primitives/transaction-pool/Cargo.toml +++ b/primitives/transaction-pool/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "sp-transaction-pool" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" diff --git a/primitives/trie/Cargo.toml b/primitives/trie/Cargo.toml index 451502618d..db13e23831 100644 --- a/primitives/trie/Cargo.toml +++ b/primitives/trie/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "sp-trie" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" authors = ["Parity Technologies "] description = "Patricia trie stuff using a parity-scale-codec node format" repository = "https://github.com/paritytech/substrate/" diff --git a/primitives/version/Cargo.toml b/primitives/version/Cargo.toml index 2b3e64e561..d38c9d2d88 100644 --- a/primitives/version/Cargo.toml +++ b/primitives/version/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "sp-version" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" diff --git a/primitives/wasm-interface/Cargo.toml b/primitives/wasm-interface/Cargo.toml index 230ebe9624..dd3c1647f4 100644 --- a/primitives/wasm-interface/Cargo.toml +++ b/primitives/wasm-interface/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "sp-wasm-interface" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" diff --git a/test-utils/Cargo.toml b/test-utils/Cargo.toml index 0fb86dd067..d3477b94a6 100644 --- a/test-utils/Cargo.toml +++ b/test-utils/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "substrate-test-utils" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" diff --git a/utils/browser/Cargo.toml b/utils/browser/Cargo.toml index 18ea9920b4..19892cb7ce 100644 --- a/utils/browser/Cargo.toml +++ b/utils/browser/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "substrate-browser-utils" -version = "0.8.0-alpha.2" +version = "0.8.0-alpha.3" authors = ["Parity Technologies "] description = "Utilities for creating a browser light-client." edition = "2018" diff --git a/utils/build-script-utils/Cargo.toml b/utils/build-script-utils/Cargo.toml index a380cdbf8c..5903d107fb 100644 --- a/utils/build-script-utils/Cargo.toml +++ b/utils/build-script-utils/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "substrate-build-script-utils" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" diff --git a/utils/fork-tree/Cargo.toml b/utils/fork-tree/Cargo.toml index 57a89ad3d9..6d9d2757f0 100644 --- a/utils/fork-tree/Cargo.toml +++ b/utils/fork-tree/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "fork-tree" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" diff --git a/utils/frame/benchmarking-cli/Cargo.toml b/utils/frame/benchmarking-cli/Cargo.toml index 9e9e59c0ad..8d834c20a0 100644 --- a/utils/frame/benchmarking-cli/Cargo.toml +++ b/utils/frame/benchmarking-cli/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "frame-benchmarking-cli" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" diff --git a/utils/frame/rpc/support/Cargo.toml b/utils/frame/rpc/support/Cargo.toml index 6b9a26b399..1f448816e0 100644 --- a/utils/frame/rpc/support/Cargo.toml +++ b/utils/frame/rpc/support/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "substrate-frame-rpc-support" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" authors = ["Parity Technologies ", "Andrew Dirksen "] edition = "2018" license = "GPL-3.0" diff --git a/utils/frame/rpc/system/Cargo.toml b/utils/frame/rpc/system/Cargo.toml index 96399be6b8..e209a8d94b 100644 --- a/utils/frame/rpc/system/Cargo.toml +++ b/utils/frame/rpc/system/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "substrate-frame-rpc-system" -version = "2.0.0-alpha.2" +version = "2.0.0-alpha.3" authors = ["Parity Technologies "] edition = "2018" license = "GPL-3.0" diff --git a/utils/prometheus/Cargo.toml b/utils/prometheus/Cargo.toml index 3944b35368..bc7750a720 100644 --- a/utils/prometheus/Cargo.toml +++ b/utils/prometheus/Cargo.toml @@ -1,7 +1,7 @@ [package] description = "Endpoint to expose Prometheus metrics" name = "substrate-prometheus-endpoint" -version = "0.8.0-alpha.2" +version = "0.8.0-alpha.3" license = "GPL-3.0" authors = ["Parity Technologies "] edition = "2018" -- GitLab From 6653f4b8df572dd4016b968a68d0eeeb6d75b064 Mon Sep 17 00:00:00 2001 From: Marcio Diaz Date: Fri, 28 Feb 2020 12:05:27 +0100 Subject: [PATCH 062/301] Propagate DispatchError for benchmarks. (#5075) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Propagate DispatchError for benchmarks. * Apply review suggestions. * Use RuntimeString. * fix expect Co-Authored-By: Bastian Köcher Co-authored-by: Bastian Köcher --- Cargo.lock | 1 + bin/node/runtime/src/lib.rs | 19 ++++---- frame/benchmarking/Cargo.toml | 3 +- frame/benchmarking/src/utils.rs | 3 +- utils/frame/benchmarking-cli/src/lib.rs | 58 +++++++++++++------------ 5 files changed, 46 insertions(+), 38 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 67b3cf7f47..e32db20fd8 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1429,6 +1429,7 @@ dependencies = [ "parity-scale-codec", "sp-api", "sp-io", + "sp-runtime", "sp-runtime-interface", "sp-std", ] diff --git a/bin/node/runtime/src/lib.rs b/bin/node/runtime/src/lib.rs index 730a983a43..9e4496f1e9 100644 --- a/bin/node/runtime/src/lib.rs +++ b/bin/node/runtime/src/lib.rs @@ -31,7 +31,8 @@ pub use node_primitives::{AccountId, Signature}; use node_primitives::{AccountIndex, Balance, BlockNumber, Hash, Index, Moment}; use sp_api::impl_runtime_apis; use sp_runtime::{ - Permill, Perbill, Percent, ApplyExtrinsicResult, impl_opaque_keys, generic, create_runtime_str, + Permill, Perbill, Percent, ApplyExtrinsicResult, RuntimeString, + impl_opaque_keys, generic, create_runtime_str, }; use sp_runtime::curve::PiecewiseLinear; use sp_runtime::transaction_validity::TransactionValidity; @@ -821,15 +822,17 @@ impl_runtime_apis! { extrinsic: Vec, steps: Vec, repeat: u32, - ) -> Option> { + ) -> Result, RuntimeString> { use frame_benchmarking::Benchmarking; - match module.as_slice() { - b"pallet-balances" | b"balances" => Balances::run_benchmark(extrinsic, steps, repeat).ok(), - b"pallet-identity" | b"identity" => Identity::run_benchmark(extrinsic, steps, repeat).ok(), - b"pallet-timestamp" | b"timestamp" => Timestamp::run_benchmark(extrinsic, steps, repeat).ok(), - _ => None, - } + let result = match module.as_slice() { + b"pallet-balances" | b"balances" => Balances::run_benchmark(extrinsic, steps, repeat), + b"pallet-identity" | b"identity" => Identity::run_benchmark(extrinsic, steps, repeat), + b"pallet-timestamp" | b"timestamp" => Timestamp::run_benchmark(extrinsic, steps, repeat), + _ => Err("Benchmark not found for this pallet."), + }; + + result.map_err(|e| e.into()) } } } diff --git a/frame/benchmarking/Cargo.toml b/frame/benchmarking/Cargo.toml index 524ecabb3c..bd9660dc16 100644 --- a/frame/benchmarking/Cargo.toml +++ b/frame/benchmarking/Cargo.toml @@ -12,9 +12,10 @@ description = "Macro for benchmarking a FRAME runtime." codec = { package = "parity-scale-codec", version = "1.1.2", default-features = false } sp-api = { version = "2.0.0-alpha.2", path = "../../primitives/api", default-features = false } sp-runtime-interface = { version = "2.0.0-alpha.2", path = "../../primitives/runtime-interface", default-features = false } +sp-runtime = { version = "2.0.0-alpha.2", path = "../../primitives/runtime", default-features = false } sp-std = { version = "2.0.0-alpha.2", path = "../../primitives/std", default-features = false } sp-io = { path = "../../primitives/io", default-features = false, version = "2.0.0-alpha.2" } [features] default = [ "std" ] -std = [ "sp-runtime-interface/std", "sp-api/std", "codec/std", "sp-std/std" ] +std = [ "sp-runtime-interface/std", "sp-runtime/std", "sp-api/std", "codec/std", "sp-std/std" ] diff --git a/frame/benchmarking/src/utils.rs b/frame/benchmarking/src/utils.rs index 9db981a61c..f9d1ecf8cd 100644 --- a/frame/benchmarking/src/utils.rs +++ b/frame/benchmarking/src/utils.rs @@ -19,6 +19,7 @@ use codec::{Encode, Decode}; use sp_std::vec::Vec; use sp_io::hashing::blake2_256; +use sp_runtime::RuntimeString; /// An alphabet of possible parameters to use for benchmarking. #[derive(codec::Encode, codec::Decode, Clone, Copy, PartialEq, Debug)] @@ -42,7 +43,7 @@ sp_api::decl_runtime_apis! { extrinsic: Vec, steps: Vec, repeat: u32, - ) -> Option>; + ) -> Result, RuntimeString>; } } diff --git a/utils/frame/benchmarking-cli/src/lib.rs b/utils/frame/benchmarking-cli/src/lib.rs index b2f360e584..b09b1bad62 100644 --- a/utils/frame/benchmarking-cli/src/lib.rs +++ b/utils/frame/benchmarking-cli/src/lib.rs @@ -109,34 +109,36 @@ impl BenchmarkCmd { ) .execute(strategy.into()) .map_err(|e| format!("Error executing runtime benchmark: {:?}", e))?; - let results = > as Decode>::decode(&mut &result[..]) - .unwrap_or(None); - - if let Some(results) = results { - // Print benchmark metadata - println!( - "Pallet: {:?}, Extrinsic: {:?}, Steps: {:?}, Repeat: {:?}", - self.pallet, - self.extrinsic, - self.steps, - self.repeat, - ); - - // Print the table header - results[0].0.iter().for_each(|param| print!("{:?},", param.0)); - - print!("extrinsic_time,storage_root_time\n"); - // Print the values - results.iter().for_each(|result| { - let parameters = &result.0; - parameters.iter().for_each(|param| print!("{:?},", param.1)); - // Print extrinsic time and storage root time - print!("{:?},{:?}\n", result.1, result.2); - }); - - eprintln!("Done."); - } else { - eprintln!("No Results."); + + let results = , String> as Decode>::decode(&mut &result[..]) + .map_err(|e| format!("Failed to decode benchmark results: {:?}", e))?; + + match results { + Ok(results) => { + // Print benchmark metadata + println!( + "Pallet: {:?}, Extrinsic: {:?}, Steps: {:?}, Repeat: {:?}", + self.pallet, + self.extrinsic, + self.steps, + self.repeat, + ); + + // Print the table header + results[0].0.iter().for_each(|param| print!("{:?},", param.0)); + + print!("extrinsic_time,storage_root_time\n"); + // Print the values + results.iter().for_each(|result| { + let parameters = &result.0; + parameters.iter().for_each(|param| print!("{:?},", param.1)); + // Print extrinsic time and storage root time + print!("{:?},{:?}\n", result.1, result.2); + }); + + eprintln!("Done."); + } + Err(error) => eprintln!("Error: {:?}", error), } Ok(()) -- GitLab From 2b89c0e968c8ddfbb24ece4096ea3c06126ec9e3 Mon Sep 17 00:00:00 2001 From: kianenigma Date: Fri, 28 Feb 2020 13:08:15 +0100 Subject: [PATCH 063/301] More major fixes in perThing --- frame/staking/src/mock.rs | 2 +- frame/staking/src/offchain_election.rs | 23 +++---- frame/staking/src/testing_utils.rs | 5 -- primitives/arithmetic/fuzzer/Cargo.lock | 87 ++++--------------------- primitives/arithmetic/fuzzer/Cargo.toml | 6 +- primitives/arithmetic/src/lib.rs | 14 +++- primitives/arithmetic/src/per_things.rs | 39 +++++++---- 7 files changed, 68 insertions(+), 108 deletions(-) diff --git a/frame/staking/src/mock.rs b/frame/staking/src/mock.rs index ac201a7465..550e1a7e09 100644 --- a/frame/staking/src/mock.rs +++ b/frame/staking/src/mock.rs @@ -865,7 +865,7 @@ pub fn horrible_phragmen_with_post_processing( (compact, winners, score) } -// Note: this should always logicall reproduce [`offchain_election::prepare_submission`], yet we +// Note: this should always logically reproduce [`offchain_election::prepare_submission`], yet we // cannot do it since we want to have `tweak` injected into the process. pub fn do_phragmen_with_post_processing( do_reduce: bool, diff --git a/frame/staking/src/offchain_election.rs b/frame/staking/src/offchain_election.rs index 63d0565f6f..7f11381957 100644 --- a/frame/staking/src/offchain_election.rs +++ b/frame/staking/src/offchain_election.rs @@ -32,7 +32,7 @@ use sp_runtime::offchain::storage::StorageValueRef; use sp_runtime::PerThing; #[derive(RuntimeDebug)] -pub(crate) enum OffchainElectionError { +pub enum OffchainElectionError { /// No signing key has been found on the current node that maps to a validators. This node /// should not run the offchain election code. NoSigningKey, @@ -101,11 +101,6 @@ pub(crate) fn compute_offchain_election() -> Result<(), OffchainElecti for (index, ref pubkey) in local_keys.into_iter().filter_map(|key| keys.iter().enumerate().find(|(_, val_key)| **val_key == key) ) { - // make sure that the snapshot is available. - let snapshot_validators = >::snapshot_validators() - .ok_or(OffchainElectionError::SnapshotUnavailable)?; - let snapshot_nominators = >::snapshot_nominators() - .ok_or(OffchainElectionError::SnapshotUnavailable)?; // compute raw solution. let PhragmenResult { @@ -116,12 +111,10 @@ pub(crate) fn compute_offchain_election() -> Result<(), OffchainElecti // process and prepare it for submission. let (winners, compact, score) = prepare_submission::( - snapshot_nominators, - snapshot_validators, assignments, winners, true, - ); + )?; // sign it. let signature_payload: SignaturePayload = @@ -157,15 +150,19 @@ pub(crate) fn compute_offchain_election() -> Result<(), OffchainElecti /// /// This does a lot of stuff; read the inline comments. pub fn prepare_submission( - snapshot_nominators: Vec, - snapshot_validators: Vec, assignments: Vec>, winners: Vec<(T::AccountId, ExtendedBalance)>, do_reduce: bool, -) -> (Vec, Compact, PhragmenScore) +) -> Result<(Vec, Compact, PhragmenScore), OffchainElectionError> where ExtendedBalance: From<::Inner>, { + // make sure that the snapshot is available. + let snapshot_validators = >::snapshot_validators() + .ok_or(OffchainElectionError::SnapshotUnavailable)?; + let snapshot_nominators = >::snapshot_nominators() + .ok_or(OffchainElectionError::SnapshotUnavailable)?; + // all helper closures let nominator_index = |a: &T::AccountId| -> Option { snapshot_nominators.iter().position(|x| x == a).and_then(|i| @@ -227,5 +224,5 @@ where snapshot_validators.iter().position(|v| *v == w).unwrap().try_into().unwrap() ).collect::>(); - (winners, compact, score) + Ok((winners, compact, score)) } diff --git a/frame/staking/src/testing_utils.rs b/frame/staking/src/testing_utils.rs index 8903dabae5..c22cba87b9 100644 --- a/frame/staking/src/testing_utils.rs +++ b/frame/staking/src/testing_utils.rs @@ -300,12 +300,7 @@ pub fn get_seq_phragmen_solution(do_reduce: bool) assignments, } = >::do_phragmen::().unwrap(); - let snapshot_validators = >::snapshot_validators().unwrap(); - let snapshot_nominators = >::snapshot_nominators().unwrap(); - offchain_election::prepare_submission::( - snapshot_nominators, - snapshot_validators, assignments, winners, do_reduce, diff --git a/primitives/arithmetic/fuzzer/Cargo.lock b/primitives/arithmetic/fuzzer/Cargo.lock index 62b06674fb..a393fab576 100644 --- a/primitives/arithmetic/fuzzer/Cargo.lock +++ b/primitives/arithmetic/fuzzer/Cargo.lock @@ -32,9 +32,9 @@ checksum = "b0a5e3906bcbf133e33c1d4d95afc664ad37fbdb9f6568d8043e7ea8c27d93d3" [[package]] name = "byteorder" -version = "1.3.2" +version = "1.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7c3dd8985a7111efc5c80b44e23ecdd8c007de8ade3b96595387e812b957cf5" +checksum = "08c48aae112d48ed9f069b33538ea9e3e90aa263cfa3d1c24309612b1f7472de" [[package]] name = "c2-chacha" @@ -83,11 +83,6 @@ dependencies = [ [[package]] name = "honggfuzz" version = "0.5.45" -<<<<<<< HEAD -======= -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24c27b4aa3049d6d10d8e33d52c9d03ca9aec18f8a449b246f8c4a5b0c10fb34" ->>>>>>> 657484a45b1f941b695c01ff3b944a4d81bd1849 dependencies = [ "arbitrary", "lazy_static", @@ -117,9 +112,9 @@ checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" [[package]] name = "libc" -version = "0.2.66" +version = "0.2.67" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d515b1f41455adea1313a4a2ac8a8a477634fbae63cc6100e3aebb207ce61558" +checksum = "eb147597cdf94ed43ab7a9038716637d2d1bf2bc571da995d0028dec06bd3018" [[package]] name = "memmap" @@ -214,9 +209,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.8" +version = "1.0.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3acb317c6ff86a4e579dfa00fc5e6cca91ecbb4e7eb2df0468805b674eb88548" +checksum = "6c09721c6781493a2a492a96b5a5bf19b65917fe6728884e7c44dd0c60ca3435" dependencies = [ "unicode-xid", ] @@ -299,7 +294,7 @@ dependencies = [ [[package]] name = "sp-arithmetic" -version = "2.0.0" +version = "2.0.0-alpha.1" dependencies = [ "integer-sqrt", "num-traits", @@ -313,24 +308,16 @@ dependencies = [ name = "sp-arithmetic-fuzzer" version = "2.0.0" dependencies = [ -<<<<<<< HEAD - "honggfuzz 0.5.45", - "num-bigint 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", - "num-traits 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", - "primitive-types 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-arithmetic 2.0.0", -======= "honggfuzz", "num-bigint", "num-traits", "primitive-types", "sp-arithmetic", ->>>>>>> 657484a45b1f941b695c01ff3b944a4d81bd1849 ] [[package]] name = "sp-debug-derive" -version = "2.0.0" +version = "2.0.0-alpha.1" dependencies = [ "proc-macro2", "quote", @@ -339,7 +326,7 @@ dependencies = [ [[package]] name = "sp-std" -version = "2.0.0" +version = "2.0.0-alpha.1" [[package]] name = "static_assertions" @@ -349,9 +336,9 @@ checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" [[package]] name = "syn" -version = "1.0.14" +version = "1.0.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af6f3550d8dff9ef7dc34d384ac6f107e5d31c8f57d9f28e0081503f547ac8f5" +checksum = "123bd9499cfb380418d509322d7a6d52e5315f064fe4b3ad18a53d6b92c07859" dependencies = [ "proc-macro2", "quote", @@ -411,56 +398,4 @@ checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" name = "winapi-x86_64-pc-windows-gnu" version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -<<<<<<< HEAD - -[metadata] -"checksum arbitrary 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "64cf76cb6e2222ed0ea86b2b0ee2f71c96ec6edd5af42e84d59160e91b836ec4" -"checksum arrayvec 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)" = "cd9fd44efafa8690358b7408d253adf110036b88f55672a933f01d616ad9b1b9" -"checksum autocfg 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)" = "1d49d90015b3c36167a20fe2810c5cd875ad504b39cff3d4eae7977e6b7c1cb2" -"checksum bitvec 0.14.0 (registry+https://github.com/rust-lang/crates.io-index)" = "9633b74910e1870f50f5af189b08487195cdb83c0e27a71d6f64d5e09dd0538b" -"checksum byte-slice-cast 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "f6209f3b2c1edea170002e016d5ead6903d3bb0a846477f53bbeb614967a52a9" -"checksum byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "a7c3dd8985a7111efc5c80b44e23ecdd8c007de8ade3b96595387e812b957cf5" -"checksum c2-chacha 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "214238caa1bf3a496ec3392968969cab8549f96ff30652c9e56885329315f6bb" -"checksum cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)" = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822" -"checksum crunchy 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" -"checksum fixed-hash 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "72fe7539e2c5692c6989f2f9c0457e42f1e5768f96b85c87d273574670ae459f" -"checksum getrandom 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)" = "e7db7ca94ed4cd01190ceee0d8a8052f08a247aa1b469a7f68c6a3b71afcf407" -"checksum impl-codec 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "1be51a921b067b0eaca2fad532d9400041561aa922221cc65f95a85641c6bf53" -"checksum integer-sqrt 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "ea155abb3ba6f382a75f1418988c05fe82959ed9ce727de427f9cfd425b0c903" -"checksum lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" -"checksum libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)" = "1a31a0627fdf1f6a39ec0dd577e101440b7db22672c0901fe00a9a6fbb5c24e8" -"checksum memmap 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "6585fd95e7bb50d6cc31e20d4cf9afb4e2ba16c5846fc76793f11218da9c475b" -"checksum nodrop 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)" = "72ef4a56884ca558e5ddb05a1d1e7e1bfd9a68d9ed024c21704cc98872dae1bb" -"checksum num-bigint 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "f9c3f34cdd24f334cb265d9bf8bfa8a241920d026916785747a92f0e55541a1a" -"checksum num-integer 0.1.41 (registry+https://github.com/rust-lang/crates.io-index)" = "b85e541ef8255f6cf42bbfe4ef361305c6c135d10919ecc26126c4e5ae94bc09" -"checksum num-traits 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "6ba9a427cfca2be13aa6f6403b0b7e7368fe982bfa16fccc450ce74c46cd9b32" -"checksum parity-scale-codec 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)" = "001fbbb956d8593f321c7a784f64d16b2c99b2657823976eea729006ad2c3668" -"checksum parity-scale-codec-derive 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "42af752f59119656fa3cb31e8852ed24e895b968c0bdb41847da7f0cea6d155f" -"checksum ppv-lite86 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)" = "74490b50b9fbe561ac330df47c08f3f33073d2d00c150f719147d7c54522fa1b" -"checksum primitive-types 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)" = "a0253db64c26d8b4e7896dd2063b516d2a1b9e0a5da26b5b78335f236d1e9522" -"checksum proc-macro-crate 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "e10d4b51f154c8a7fb96fd6dad097cb74b863943ec010ac94b9fd1be8861fe1e" -"checksum proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)" = "cf3d2011ab5c909338f7887f4fc896d35932e29146c12c8d01da6b22a80ba759" -"checksum proc-macro2 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)" = "9c9e470a8dc4aeae2dee2f335e8f533e2d4b347e1434e5671afc49b054592f27" -"checksum quote 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)" = "6ce23b6b870e8f94f81fb0a363d65d86675884b34a09043c81e5562f11c1f8e1" -"checksum quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "053a8c8bcc71fcce321828dc897a98ab9760bef03a4fc36693c231e5b3216cfe" -"checksum rand 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)" = "3ae1b169243eaf61759b8475a998f0a385e42042370f3a7dbaf35246eacc8412" -"checksum rand_chacha 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "03a2a90da8c7523f554344f921aa97283eadf6ac484a6d2a7d0212fa7f8d6853" -"checksum rand_core 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" -"checksum rand_hc 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c" -"checksum rustc-hex 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "403bb3a286107a04825a5f82e1270acc1e14028d3d554d7a1e08914549575ab8" -"checksum serde 1.0.102 (registry+https://github.com/rust-lang/crates.io-index)" = "0c4b39bd9b0b087684013a792c59e3e07a46a01d2322518d8a1104641a0b1be0" -"checksum serde_derive 1.0.102 (registry+https://github.com/rust-lang/crates.io-index)" = "ca13fc1a832f793322228923fbb3aba9f3f44444898f835d31ad1b74fa0a2bf8" -"checksum static_assertions 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" -"checksum syn 0.15.44 (registry+https://github.com/rust-lang/crates.io-index)" = "9ca4b3b69a77cbe1ffc9e198781b7acb0c7365a883670e8f1c1bc66fba79a5c5" -"checksum syn 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)" = "661641ea2aa15845cddeb97dad000d22070bb5c1fb456b96c1cba883ec691e92" -"checksum toml 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)" = "01d1404644c8b12b16bfcffa4322403a91a451584daaaa7c28d3152e6cbc98cf" -"checksum uint 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)" = "e75a4cdd7b87b28840dba13c483b9a88ee6bbf16ba5c951ee1ecfcf723078e0d" -"checksum unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "fc72304796d0818e357ead4e000d19c9c174ab23dc11093ac919054d20a6a7fc" -"checksum unicode-xid 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "826e7639553986605ec5979c7dd957c7895e93eabed50ab2ffa7f6128a75097c" -"checksum wasi 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b89c3ce4ce14bdc6fb6beaf9ec7928ca331de5df7e5ea278375642a2f478570d" -"checksum winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)" = "8093091eeb260906a183e6ae1abdba2ef5ef2257a21801128899c3fc699229c6" -"checksum winapi-i686-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" -"checksum winapi-x86_64-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" -======= checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" ->>>>>>> 657484a45b1f941b695c01ff3b944a4d81bd1849 diff --git a/primitives/arithmetic/fuzzer/Cargo.toml b/primitives/arithmetic/fuzzer/Cargo.toml index 19d677f744..ae83e0e3df 100644 --- a/primitives/arithmetic/fuzzer/Cargo.toml +++ b/primitives/arithmetic/fuzzer/Cargo.toml @@ -6,7 +6,7 @@ edition = "2018" license = "GPL-3.0" [dependencies] -sp-arithmetic = { version = "2.0.0", path = ".." } +sp-arithmetic = { version = "2.0.0-alpha.1", path = ".." } honggfuzz = "0.5" primitive-types = "0.6.2" num-bigint = "0.2" @@ -18,6 +18,10 @@ num-traits = "0.2" name = "biguint" path = "src/biguint.rs" +[[bin]] +name = "per_thing_rational" +path = "src/per_thing_rational.rs" + [[bin]] name = "rational128" path = "src/rational128.rs" diff --git a/primitives/arithmetic/src/lib.rs b/primitives/arithmetic/src/lib.rs index a1cc3fa8d7..f6d8b53e34 100644 --- a/primitives/arithmetic/src/lib.rs +++ b/primitives/arithmetic/src/lib.rs @@ -19,7 +19,7 @@ #![cfg_attr(not(feature = "std"), no_std)] /// Copied from `sp-runtime` and documented there. -#[cfg(test)] +#[macro_export] macro_rules! assert_eq_error_rate { ($x:expr, $y:expr, $error:expr $(,)?) => { assert!( @@ -42,3 +42,15 @@ mod rational128; pub use fixed64::Fixed64; pub use per_things::{PerThing, Percent, PerU16, Permill, Perbill, Perquintill}; pub use rational128::Rational128; + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn peru16_rational_does_not_overflow() { + // A historical example that will panic only for per_thing type that are created with + // maximum capacity of their type, e.g. PerU16. + let _ = PerU16::from_rational_approximation(17424870u32, 17424870); + } +} diff --git a/primitives/arithmetic/src/per_things.rs b/primitives/arithmetic/src/per_things.rs index a548e9192f..a80bc13c20 100644 --- a/primitives/arithmetic/src/per_things.rs +++ b/primitives/arithmetic/src/per_things.rs @@ -33,7 +33,7 @@ pub trait PerThing: type Inner: BaseArithmetic + Copy + fmt::Debug; /// The data type that is used to store values bigger than the maximum of this type. This must - /// at least be able to store twice the size of `Self::ACCURACY`. + /// at least be able to store `Self::ACCURACY * Self::ACCURACY`. type Upper: BaseArithmetic + Copy + fmt::Debug; /// accuracy of this type @@ -85,7 +85,7 @@ pub trait PerThing: fn from_rational_approximation(p: N, q: N) -> Self where N: Clone + Ord + From + TryInto + TryInto + - ops::Div; + ops::Div + ops::Rem + ops::Add; /// A mul implementation that always rounds down, whilst the standard `Mul` implementation /// rounds to the nearest numbers @@ -108,7 +108,14 @@ pub trait PerThing: } macro_rules! implement_per_thing { - ($name:ident, $test_mod:ident, [$($test_units:tt),+], $max:tt, $type:ty, $upper_type:ty, $title:expr $(,)?) => { + ( + $name:ident, + $test_mod:ident, + [$($test_units:tt),+], + $max:tt, $type:ty, + $upper_type:ty, + $title:expr $(,)? + ) => { /// A fixed point representation of a number between in the range [0, 1]. /// #[doc = $title] @@ -153,29 +160,39 @@ macro_rules! implement_per_thing { fn from_fraction(x: f64) -> Self { Self((x * ($max as f64)) as Self::Inner) } fn from_rational_approximation(p: N, q: N) -> Self - where N: Clone + Ord + From + TryInto + TryInto + ops::Div + where N: + Clone + Ord + From + TryInto + TryInto + + ops::Div + ops::Rem + ops::Add { + let div_ceil = |x: N, f: N| -> N { + let mut o = x.clone() / f.clone(); + let r = x.rem(f.clone()); + if r > N::from(0) { + o = o + N::from(1); + } + o + }; + // q cannot be zero. let q: N = q.max((1 as Self::Inner).into()); // p should not be bigger than q. let p: N = p.min(q.clone()); - let factor: N = (q.clone() / $max.into()).max((1 as Self::Inner).into()); + let factor: N = div_ceil(q.clone(), $max.into()).max((1 as Self::Inner).into()); - // q cannot overflow: (q / (q/$max)) < 2 * $max. p < q hence p also cannot overflow. - // this implies that Self::Inner must be able to fit 2 * $max. - let q_reduce: $upper_type = (q / factor.clone()) + // q cannot overflow: (q / (q/$max)) < $max. p < q hence p also cannot overflow. + let q_reduce: $type = (q.clone() / factor.clone()) .try_into() .map_err(|_| "Failed to convert") .expect( - "q / (q/$max) < (2 * $max). Macro prevents any type being created that \ + "q / ceil(q/$max) < $max. Macro prevents any type being created that \ does not satisfy this; qed" ); - let p_reduce: $upper_type = (p / factor.clone()) + let p_reduce: $type = (p / factor) .try_into() .map_err(|_| "Failed to convert") .expect( - "q / (q/$max) < (2 * $max). Macro prevents any type being created that \ + "q / ceil(q/$max) < $max. Macro prevents any type being created that \ does not satisfy this; qed" ); -- GitLab From 4e445016ea9b6dad091a5b245a73b92282994846 Mon Sep 17 00:00:00 2001 From: kianenigma Date: Fri, 28 Feb 2020 13:08:37 +0100 Subject: [PATCH 064/301] Add new fuzz file --- .../fuzzer/src/per_thing_rational.rs | 123 ++++++++++++++++++ 1 file changed, 123 insertions(+) create mode 100644 primitives/arithmetic/fuzzer/src/per_thing_rational.rs diff --git a/primitives/arithmetic/fuzzer/src/per_thing_rational.rs b/primitives/arithmetic/fuzzer/src/per_thing_rational.rs new file mode 100644 index 0000000000..84207cbd16 --- /dev/null +++ b/primitives/arithmetic/fuzzer/src/per_thing_rational.rs @@ -0,0 +1,123 @@ +// Copyright 2019-2020 Parity Technologies (UK) Ltd. +// This file is part of Substrate. + +// Substrate is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Substrate is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Substrate. If not, see . + +//! # Running +//! Running this fuzzer can be done with `cargo hfuzz run per_thing_rational`. `honggfuzz` CLI options can +//! be used by setting `HFUZZ_RUN_ARGS`, such as `-n 4` to use 4 threads. +//! +//! # Debugging a panic +//! Once a panic is found, it can be debugged with +//! `cargo hfuzz run-debug per_thing_rational hfuzz_workspace/per_thing_rational/*.fuzz`. + +use honggfuzz::fuzz; +use sp_arithmetic::{ + PerThing, PerU16, Percent, Perbill, Perquintill, assert_eq_error_rate, + traits::SaturatedConversion, +}; + +fn main() { + loop { + fuzz!(| + data: ((u16, u16), (u32, u32), (u64, u64)) + | { + + let (u16_pair, u32_pair, u64_pair) = data; + + // peru16 + let (smaller, bigger) = (u16_pair.0.min(u16_pair.1), u16_pair.0.max(u16_pair.1)); + let ratio = PerU16::from_rational_approximation(smaller, bigger); + assert_per_thing_equal_error( + ratio, + PerU16::from_fraction(smaller as f64 / bigger.max(1) as f64), + 1, + ); + let (smaller, bigger) = (u32_pair.0.min(u32_pair.1), u32_pair.0.max(u32_pair.1)); + let ratio = PerU16::from_rational_approximation(smaller, bigger); + assert_per_thing_equal_error( + ratio, + PerU16::from_fraction(smaller as f64 / bigger.max(1) as f64), + 1, + ); + let (smaller, bigger) = (u64_pair.0.min(u64_pair.1), u64_pair.0.max(u64_pair.1)); + let ratio = PerU16::from_rational_approximation(smaller, bigger); + assert_per_thing_equal_error( + ratio, + PerU16::from_fraction(smaller as f64 / bigger.max(1) as f64), + 1, + ); + + // percent + let (smaller, bigger) = (u16_pair.0.min(u16_pair.1), u16_pair.0.max(u16_pair.1)); + let ratio = Percent::from_rational_approximation(smaller, bigger); + assert_per_thing_equal_error( + ratio, + Percent::from_fraction(smaller as f64 / bigger.max(1) as f64), + 1, + ); + + let (smaller, bigger) = (u32_pair.0.min(u32_pair.1), u32_pair.0.max(u32_pair.1)); + let ratio = Percent::from_rational_approximation(smaller, bigger); + assert_per_thing_equal_error( + ratio, + Percent::from_fraction(smaller as f64 / bigger.max(1) as f64), + 1, + ); + + let (smaller, bigger) = (u64_pair.0.min(u64_pair.1), u64_pair.0.max(u64_pair.1)); + let ratio = Percent::from_rational_approximation(smaller, bigger); + assert_per_thing_equal_error( + ratio, + Percent::from_fraction(smaller as f64 / bigger.max(1) as f64), + 1, + ); + + // perbill + let (smaller, bigger) = (u32_pair.0.min(u32_pair.1), u32_pair.0.max(u32_pair.1)); + let ratio = Perbill::from_rational_approximation(smaller, bigger); + assert_per_thing_equal_error( + ratio, + Perbill::from_fraction(smaller as f64 / bigger.max(1) as f64), + 100, + ); + + let (smaller, bigger) = (u64_pair.0.min(u64_pair.1), u64_pair.0.max(u64_pair.1)); + let ratio = Perbill::from_rational_approximation(smaller, bigger); + assert_per_thing_equal_error( + ratio, + Perbill::from_fraction(smaller as f64 / bigger.max(1) as f64), + 100, + ); + + // perquintillion + let (smaller, bigger) = (u64_pair.0.min(u64_pair.1), u64_pair.0.max(u64_pair.1)); + let ratio = Perquintill::from_rational_approximation(smaller, bigger); + assert_per_thing_equal_error( + ratio, + Perquintill::from_fraction(smaller as f64 / bigger.max(1) as f64), + 1000, + ); + + }) + } +} + +fn assert_per_thing_equal_error(a: T, b: T, err: u128) { + let a_abs = a.deconstruct().saturated_into::(); + let b_abs = b.deconstruct().saturated_into::(); + let diff = a_abs.max(b_abs) - a_abs.min(b_abs); + dbg!(&diff); + assert!(diff <= err, "{:?} !~ {:?}", a, b); +} -- GitLab From 7287c2b429fdc0a8f682527521652af7ae34a5e8 Mon Sep 17 00:00:00 2001 From: kianenigma Date: Fri, 28 Feb 2020 14:08:52 +0100 Subject: [PATCH 065/301] Update lock --- Cargo.lock | 1 + 1 file changed, 1 insertion(+) diff --git a/Cargo.lock b/Cargo.lock index 54cfa91611..f5f5382af1 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4360,6 +4360,7 @@ dependencies = [ "sp-application-crypto", "sp-core", "sp-io", + "sp-keyring", "sp-phragmen", "sp-runtime", "sp-staking", -- GitLab From ac6ce78b5c95df6a48bed7bfc7ccaf54c9f2f85f Mon Sep 17 00:00:00 2001 From: kianenigma Date: Fri, 28 Feb 2020 15:18:53 +0100 Subject: [PATCH 066/301] fix fuzzing code. --- frame/staking/fuzz/Cargo.lock | 371 +++++++++--------- frame/staking/fuzz/Cargo.toml | 26 +- frame/staking/fuzz/fuzz_targets/mock.rs | 2 +- .../fuzz/fuzz_targets/submit_solution.rs | 6 +- frame/staking/src/testing_utils.rs | 2 +- primitives/arithmetic/src/per_things.rs | 5 +- 6 files changed, 207 insertions(+), 205 deletions(-) diff --git a/frame/staking/fuzz/Cargo.lock b/frame/staking/fuzz/Cargo.lock index 7040f87b4b..ded6e7cd64 100644 --- a/frame/staking/fuzz/Cargo.lock +++ b/frame/staking/fuzz/Cargo.lock @@ -319,53 +319,54 @@ dependencies = [ [[package]] name = "frame-benchmarking" -version = "2.0.0-dev" +version = "2.0.0-alpha.3" dependencies = [ "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-api 2.0.0-dev", - "sp-io 2.0.0-dev", - "sp-runtime-interface 2.0.0-dev", - "sp-std 2.0.0-dev", + "sp-api 2.0.0-alpha.3", + "sp-io 2.0.0-alpha.3", + "sp-runtime 2.0.0-alpha.3", + "sp-runtime-interface 2.0.0-alpha.3", + "sp-std 2.0.0-alpha.3", ] [[package]] name = "frame-metadata" -version = "11.0.0-dev" +version = "11.0.0-alpha.3" dependencies = [ "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-core 2.0.0-dev", - "sp-std 2.0.0-dev", + "sp-core 2.0.0-alpha.3", + "sp-std 2.0.0-alpha.3", ] [[package]] name = "frame-support" -version = "2.0.0-dev" +version = "2.0.0-alpha.3" dependencies = [ "bitmask 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", - "frame-metadata 11.0.0-dev", - "frame-support-procedural 2.0.0-dev", + "frame-metadata 11.0.0-alpha.3", + "frame-support-procedural 2.0.0-alpha.3", "impl-trait-for-tuples 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "once_cell 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "paste 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-arithmetic 2.0.0-dev", - "sp-core 2.0.0-dev", - "sp-inherents 2.0.0-dev", - "sp-io 2.0.0-dev", - "sp-runtime 2.0.0-dev", - "sp-state-machine 0.8.0-dev", - "sp-std 2.0.0-dev", + "sp-arithmetic 2.0.0-alpha.3", + "sp-core 2.0.0-alpha.3", + "sp-inherents 2.0.0-alpha.3", + "sp-io 2.0.0-alpha.3", + "sp-runtime 2.0.0-alpha.3", + "sp-state-machine 0.8.0-alpha.3", + "sp-std 2.0.0-alpha.3", "tracing 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "frame-support-procedural" -version = "2.0.0-dev" +version = "2.0.0-alpha.3" dependencies = [ - "frame-support-procedural-tools 2.0.0-dev", + "frame-support-procedural-tools 2.0.0-alpha.3", "proc-macro2 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)", "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", "syn 1.0.14 (registry+https://github.com/rust-lang/crates.io-index)", @@ -373,9 +374,9 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools" -version = "2.0.0-dev" +version = "2.0.0-alpha.3" dependencies = [ - "frame-support-procedural-tools-derive 2.0.0-dev", + "frame-support-procedural-tools-derive 2.0.0-alpha.3", "proc-macro-crate 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", "proc-macro2 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)", "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", @@ -384,7 +385,7 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools-derive" -version = "2.0.0-dev" +version = "2.0.0-alpha.3" dependencies = [ "proc-macro2 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)", "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", @@ -393,17 +394,17 @@ dependencies = [ [[package]] name = "frame-system" -version = "2.0.0-dev" +version = "2.0.0-alpha.3" dependencies = [ - "frame-support 2.0.0-dev", + "frame-support 2.0.0-alpha.3", "impl-trait-for-tuples 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-core 2.0.0-dev", - "sp-io 2.0.0-dev", - "sp-runtime 2.0.0-dev", - "sp-std 2.0.0-dev", - "sp-version 2.0.0-dev", + "sp-core 2.0.0-alpha.3", + "sp-io 2.0.0-alpha.3", + "sp-runtime 2.0.0-alpha.3", + "sp-std 2.0.0-alpha.3", + "sp-version 2.0.0-alpha.3", ] [[package]] @@ -771,112 +772,112 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "pallet-authorship" -version = "2.0.0-dev" +version = "2.0.0-alpha.3" dependencies = [ - "frame-support 2.0.0-dev", - "frame-system 2.0.0-dev", + "frame-support 2.0.0-alpha.3", + "frame-system 2.0.0-alpha.3", "impl-trait-for-tuples 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-authorship 2.0.0-dev", - "sp-core 2.0.0-dev", - "sp-inherents 2.0.0-dev", - "sp-io 2.0.0-dev", - "sp-runtime 2.0.0-dev", - "sp-std 2.0.0-dev", + "sp-authorship 2.0.0-alpha.3", + "sp-core 2.0.0-alpha.3", + "sp-inherents 2.0.0-alpha.3", + "sp-io 2.0.0-alpha.3", + "sp-runtime 2.0.0-alpha.3", + "sp-std 2.0.0-alpha.3", ] [[package]] name = "pallet-balances" -version = "2.0.0-dev" +version = "2.0.0-alpha.3" dependencies = [ - "frame-benchmarking 2.0.0-dev", - "frame-support 2.0.0-dev", - "frame-system 2.0.0-dev", + "frame-benchmarking 2.0.0-alpha.3", + "frame-support 2.0.0-alpha.3", + "frame-system 2.0.0-alpha.3", "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-io 2.0.0-dev", - "sp-runtime 2.0.0-dev", - "sp-std 2.0.0-dev", + "sp-io 2.0.0-alpha.3", + "sp-runtime 2.0.0-alpha.3", + "sp-std 2.0.0-alpha.3", ] [[package]] name = "pallet-indices" -version = "2.0.0-dev" +version = "2.0.0-alpha.3" dependencies = [ - "frame-support 2.0.0-dev", - "frame-system 2.0.0-dev", + "frame-support 2.0.0-alpha.3", + "frame-system 2.0.0-alpha.3", "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-core 2.0.0-dev", - "sp-io 2.0.0-dev", - "sp-keyring 2.0.0-dev", - "sp-runtime 2.0.0-dev", - "sp-std 2.0.0-dev", + "sp-core 2.0.0-alpha.3", + "sp-io 2.0.0-alpha.3", + "sp-keyring 2.0.0-alpha.3", + "sp-runtime 2.0.0-alpha.3", + "sp-std 2.0.0-alpha.3", ] [[package]] name = "pallet-session" -version = "2.0.0-dev" +version = "2.0.0-alpha.3" dependencies = [ - "frame-support 2.0.0-dev", - "frame-system 2.0.0-dev", + "frame-support 2.0.0-alpha.3", + "frame-system 2.0.0-alpha.3", "impl-trait-for-tuples 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", - "pallet-timestamp 2.0.0-dev", + "pallet-timestamp 2.0.0-alpha.3", "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-io 2.0.0-dev", - "sp-runtime 2.0.0-dev", - "sp-staking 2.0.0-dev", - "sp-std 2.0.0-dev", - "sp-trie 2.0.0-dev", + "sp-io 2.0.0-alpha.3", + "sp-runtime 2.0.0-alpha.3", + "sp-staking 2.0.0-alpha.3", + "sp-std 2.0.0-alpha.3", + "sp-trie 2.0.0-alpha.3", ] [[package]] name = "pallet-staking" -version = "2.0.0-dev" +version = "2.0.0-alpha.3" dependencies = [ - "frame-support 2.0.0-dev", - "frame-system 2.0.0-dev", - "pallet-authorship 2.0.0-dev", - "pallet-indices 2.0.0-dev", - "pallet-session 2.0.0-dev", + "frame-support 2.0.0-alpha.3", + "frame-system 2.0.0-alpha.3", + "pallet-authorship 2.0.0-alpha.3", + "pallet-indices 2.0.0-alpha.3", + "pallet-session 2.0.0-alpha.3", "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "rand 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-application-crypto 2.0.0-dev", - "sp-core 2.0.0-dev", - "sp-io 2.0.0-dev", - "sp-phragmen 2.0.0-dev", - "sp-runtime 2.0.0-dev", - "sp-staking 2.0.0-dev", - "sp-std 2.0.0-dev", + "sp-application-crypto 2.0.0-alpha.3", + "sp-core 2.0.0-alpha.3", + "sp-io 2.0.0-alpha.3", + "sp-phragmen 2.0.0-alpha.3", + "sp-runtime 2.0.0-alpha.3", + "sp-staking 2.0.0-alpha.3", + "sp-std 2.0.0-alpha.3", ] [[package]] name = "pallet-staking-fuzz" version = "0.0.0" dependencies = [ - "frame-support 2.0.0-dev", - "frame-system 2.0.0-dev", + "frame-support 2.0.0-alpha.3", + "frame-system 2.0.0-alpha.3", "libfuzzer-sys 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "pallet-balances 2.0.0-dev", - "pallet-indices 2.0.0-dev", - "pallet-session 2.0.0-dev", - "pallet-staking 2.0.0-dev", - "pallet-staking-reward-curve 2.0.0-dev", - "pallet-timestamp 2.0.0-dev", + "pallet-balances 2.0.0-alpha.3", + "pallet-indices 2.0.0-alpha.3", + "pallet-session 2.0.0-alpha.3", + "pallet-staking 2.0.0-alpha.3", + "pallet-staking-reward-curve 2.0.0-alpha.3", + "pallet-timestamp 2.0.0-alpha.3", "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "rand 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-core 2.0.0-dev", - "sp-io 2.0.0-dev", - "sp-phragmen 2.0.0-dev", - "sp-runtime 2.0.0-dev", - "sp-std 2.0.0-dev", + "sp-core 2.0.0-alpha.3", + "sp-io 2.0.0-alpha.3", + "sp-phragmen 2.0.0-alpha.3", + "sp-runtime 2.0.0-alpha.3", + "sp-std 2.0.0-alpha.3", ] [[package]] name = "pallet-staking-reward-curve" -version = "2.0.0-dev" +version = "2.0.0-alpha.3" dependencies = [ "proc-macro-crate 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", "proc-macro2 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)", @@ -886,19 +887,19 @@ dependencies = [ [[package]] name = "pallet-timestamp" -version = "2.0.0-dev" +version = "2.0.0-alpha.3" dependencies = [ - "frame-benchmarking 2.0.0-dev", - "frame-support 2.0.0-dev", - "frame-system 2.0.0-dev", + "frame-benchmarking 2.0.0-alpha.3", + "frame-support 2.0.0-alpha.3", + "frame-system 2.0.0-alpha.3", "impl-trait-for-tuples 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-inherents 2.0.0-dev", - "sp-io 2.0.0-dev", - "sp-runtime 2.0.0-dev", - "sp-std 2.0.0-dev", - "sp-timestamp 2.0.0-dev", + "sp-inherents 2.0.0-alpha.3", + "sp-io 2.0.0-alpha.3", + "sp-runtime 2.0.0-alpha.3", + "sp-std 2.0.0-alpha.3", + "sp-timestamp 2.0.0-alpha.3", ] [[package]] @@ -1365,21 +1366,21 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "sp-api" -version = "2.0.0-dev" +version = "2.0.0-alpha.3" dependencies = [ "hash-db 0.15.2 (registry+https://github.com/rust-lang/crates.io-index)", "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-api-proc-macro 2.0.0-dev", - "sp-core 2.0.0-dev", - "sp-runtime 2.0.0-dev", - "sp-state-machine 0.8.0-dev", - "sp-std 2.0.0-dev", - "sp-version 2.0.0-dev", + "sp-api-proc-macro 2.0.0-alpha.3", + "sp-core 2.0.0-alpha.3", + "sp-runtime 2.0.0-alpha.3", + "sp-state-machine 0.8.0-alpha.3", + "sp-std 2.0.0-alpha.3", + "sp-version 2.0.0-alpha.3", ] [[package]] name = "sp-api-proc-macro" -version = "2.0.0-dev" +version = "2.0.0-alpha.3" dependencies = [ "blake2-rfc 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)", "proc-macro-crate 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1390,40 +1391,40 @@ dependencies = [ [[package]] name = "sp-application-crypto" -version = "2.0.0-dev" +version = "2.0.0-alpha.3" dependencies = [ "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-core 2.0.0-dev", - "sp-io 2.0.0-dev", - "sp-std 2.0.0-dev", + "sp-core 2.0.0-alpha.3", + "sp-io 2.0.0-alpha.3", + "sp-std 2.0.0-alpha.3", ] [[package]] name = "sp-arithmetic" -version = "2.0.0-dev" +version = "2.0.0-alpha.3" dependencies = [ "integer-sqrt 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", "num-traits 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-debug-derive 2.0.0-dev", - "sp-std 2.0.0-dev", + "sp-debug-derive 2.0.0-alpha.3", + "sp-std 2.0.0-alpha.3", ] [[package]] name = "sp-authorship" -version = "2.0.0-dev" +version = "2.0.0-alpha.3" dependencies = [ "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-inherents 2.0.0-dev", - "sp-runtime 2.0.0-dev", - "sp-std 2.0.0-dev", + "sp-inherents 2.0.0-alpha.3", + "sp-runtime 2.0.0-alpha.3", + "sp-std 2.0.0-alpha.3", ] [[package]] name = "sp-core" -version = "2.0.0-dev" +version = "2.0.0-alpha.3" dependencies = [ "base58 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "blake2-rfc 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1447,11 +1448,11 @@ dependencies = [ "schnorrkel 0.8.5 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", "sha2 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-debug-derive 2.0.0-dev", - "sp-externalities 0.8.0-dev", - "sp-runtime-interface 2.0.0-dev", - "sp-std 2.0.0-dev", - "sp-storage 2.0.0-dev", + "sp-debug-derive 2.0.0-alpha.3", + "sp-externalities 0.8.0-alpha.3", + "sp-runtime-interface 2.0.0-alpha.3", + "sp-std 2.0.0-alpha.3", + "sp-storage 2.0.0-alpha.3", "substrate-bip39 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "tiny-bip39 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", "tiny-keccak 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1462,7 +1463,7 @@ dependencies = [ [[package]] name = "sp-debug-derive" -version = "2.0.0-dev" +version = "2.0.0-alpha.3" dependencies = [ "proc-macro2 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)", "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1471,54 +1472,54 @@ dependencies = [ [[package]] name = "sp-externalities" -version = "0.8.0-dev" +version = "0.8.0-alpha.3" dependencies = [ "environmental 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-std 2.0.0-dev", - "sp-storage 2.0.0-dev", + "sp-std 2.0.0-alpha.3", + "sp-storage 2.0.0-alpha.3", ] [[package]] name = "sp-inherents" -version = "2.0.0-dev" +version = "2.0.0-alpha.3" dependencies = [ "derive_more 0.99.3 (registry+https://github.com/rust-lang/crates.io-index)", "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "parking_lot 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-core 2.0.0-dev", - "sp-std 2.0.0-dev", + "sp-core 2.0.0-alpha.3", + "sp-std 2.0.0-alpha.3", ] [[package]] name = "sp-io" -version = "2.0.0-dev" +version = "2.0.0-alpha.3" dependencies = [ "hash-db 0.15.2 (registry+https://github.com/rust-lang/crates.io-index)", "libsecp256k1 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-core 2.0.0-dev", - "sp-externalities 0.8.0-dev", - "sp-runtime-interface 2.0.0-dev", - "sp-state-machine 0.8.0-dev", - "sp-std 2.0.0-dev", - "sp-trie 2.0.0-dev", - "sp-wasm-interface 2.0.0-dev", + "sp-core 2.0.0-alpha.3", + "sp-externalities 0.8.0-alpha.3", + "sp-runtime-interface 2.0.0-alpha.3", + "sp-state-machine 0.8.0-alpha.3", + "sp-std 2.0.0-alpha.3", + "sp-trie 2.0.0-alpha.3", + "sp-wasm-interface 2.0.0-alpha.3", ] [[package]] name = "sp-keyring" -version = "2.0.0-dev" +version = "2.0.0-alpha.3" dependencies = [ "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-core 2.0.0-dev", - "sp-runtime 2.0.0-dev", + "sp-core 2.0.0-alpha.3", + "sp-runtime 2.0.0-alpha.3", "strum 0.16.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "sp-panic-handler" -version = "2.0.0-dev" +version = "2.0.0-alpha.3" dependencies = [ "backtrace 0.3.44 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1526,14 +1527,14 @@ dependencies = [ [[package]] name = "sp-phragmen" -version = "2.0.0-dev" +version = "2.0.0-alpha.3" dependencies = [ "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-core 2.0.0-dev", + "sp-core 2.0.0-alpha.3", "sp-phragmen-compact 2.0.0-dev", - "sp-runtime 2.0.0-dev", - "sp-std 2.0.0-dev", + "sp-runtime 2.0.0-alpha.3", + "sp-std 2.0.0-alpha.3", ] [[package]] @@ -1548,7 +1549,7 @@ dependencies = [ [[package]] name = "sp-runtime" -version = "2.0.0-dev" +version = "2.0.0-alpha.3" dependencies = [ "impl-trait-for-tuples 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1557,30 +1558,30 @@ dependencies = [ "paste 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", "rand 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-application-crypto 2.0.0-dev", - "sp-arithmetic 2.0.0-dev", - "sp-core 2.0.0-dev", - "sp-inherents 2.0.0-dev", - "sp-io 2.0.0-dev", - "sp-std 2.0.0-dev", + "sp-application-crypto 2.0.0-alpha.3", + "sp-arithmetic 2.0.0-alpha.3", + "sp-core 2.0.0-alpha.3", + "sp-inherents 2.0.0-alpha.3", + "sp-io 2.0.0-alpha.3", + "sp-std 2.0.0-alpha.3", ] [[package]] name = "sp-runtime-interface" -version = "2.0.0-dev" +version = "2.0.0-alpha.3" dependencies = [ "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "primitive-types 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-externalities 0.8.0-dev", - "sp-runtime-interface-proc-macro 2.0.0-dev", - "sp-std 2.0.0-dev", - "sp-wasm-interface 2.0.0-dev", + "sp-externalities 0.8.0-alpha.3", + "sp-runtime-interface-proc-macro 2.0.0-alpha.3", + "sp-std 2.0.0-alpha.3", + "sp-wasm-interface 2.0.0-alpha.3", "static_assertions 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "sp-runtime-interface-proc-macro" -version = "2.0.0-dev" +version = "2.0.0-alpha.3" dependencies = [ "Inflector 0.11.4 (registry+https://github.com/rust-lang/crates.io-index)", "proc-macro-crate 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1591,16 +1592,16 @@ dependencies = [ [[package]] name = "sp-staking" -version = "2.0.0-dev" +version = "2.0.0-alpha.3" dependencies = [ "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-runtime 2.0.0-dev", - "sp-std 2.0.0-dev", + "sp-runtime 2.0.0-alpha.3", + "sp-std 2.0.0-alpha.3", ] [[package]] name = "sp-state-machine" -version = "0.8.0-dev" +version = "0.8.0-alpha.3" dependencies = [ "hash-db 0.15.2 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1608,72 +1609,72 @@ dependencies = [ "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "parking_lot 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", "rand 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-core 2.0.0-dev", - "sp-externalities 0.8.0-dev", - "sp-panic-handler 2.0.0-dev", - "sp-trie 2.0.0-dev", + "sp-core 2.0.0-alpha.3", + "sp-externalities 0.8.0-alpha.3", + "sp-panic-handler 2.0.0-alpha.3", + "sp-trie 2.0.0-alpha.3", "trie-db 0.20.0 (registry+https://github.com/rust-lang/crates.io-index)", "trie-root 0.16.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "sp-std" -version = "2.0.0-dev" +version = "2.0.0-alpha.3" [[package]] name = "sp-storage" -version = "2.0.0-dev" +version = "2.0.0-alpha.3" dependencies = [ "impl-serde 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-debug-derive 2.0.0-dev", - "sp-std 2.0.0-dev", + "sp-debug-derive 2.0.0-alpha.3", + "sp-std 2.0.0-alpha.3", ] [[package]] name = "sp-timestamp" -version = "2.0.0-dev" +version = "2.0.0-alpha.3" dependencies = [ "impl-trait-for-tuples 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-api 2.0.0-dev", - "sp-inherents 2.0.0-dev", - "sp-runtime 2.0.0-dev", - "sp-std 2.0.0-dev", + "sp-api 2.0.0-alpha.3", + "sp-inherents 2.0.0-alpha.3", + "sp-runtime 2.0.0-alpha.3", + "sp-std 2.0.0-alpha.3", "wasm-timer 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "sp-trie" -version = "2.0.0-dev" +version = "2.0.0-alpha.3" dependencies = [ "hash-db 0.15.2 (registry+https://github.com/rust-lang/crates.io-index)", "memory-db 0.19.0 (registry+https://github.com/rust-lang/crates.io-index)", "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-core 2.0.0-dev", - "sp-std 2.0.0-dev", + "sp-core 2.0.0-alpha.3", + "sp-std 2.0.0-alpha.3", "trie-db 0.20.0 (registry+https://github.com/rust-lang/crates.io-index)", "trie-root 0.16.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "sp-version" -version = "2.0.0-dev" +version = "2.0.0-alpha.3" dependencies = [ "impl-serde 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-runtime 2.0.0-dev", - "sp-std 2.0.0-dev", + "sp-runtime 2.0.0-alpha.3", + "sp-std 2.0.0-alpha.3", ] [[package]] name = "sp-wasm-interface" -version = "2.0.0-dev" +version = "2.0.0-alpha.3" dependencies = [ "impl-trait-for-tuples 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-std 2.0.0-dev", + "sp-std 2.0.0-alpha.3", "wasmi 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", ] diff --git a/frame/staking/fuzz/Cargo.toml b/frame/staking/fuzz/Cargo.toml index 7de772d474..efcb5b1cfa 100644 --- a/frame/staking/fuzz/Cargo.toml +++ b/frame/staking/fuzz/Cargo.toml @@ -12,19 +12,19 @@ cargo-fuzz = true [dependencies] libfuzzer-sys = "0.3" codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } -pallet-staking = { version = "2.0.0-dev", path = "..", features = ["testing-utils"] } -pallet-staking-reward-curve = { version = "2.0.0-dev", path = "../reward-curve" } -pallet-session = { version = "2.0.0-dev", path = "../../session" } -pallet-indices = { version = "2.0.0-dev", path = "../../indices" } -pallet-balances = { version = "2.0.0-dev", path = "../../balances" } -pallet-timestamp = { version = "2.0.0-dev", path = "../../timestamp" } -frame-system = { version = "2.0.0-dev", path = "../../system" } -frame-support = { version = "2.0.0-dev", path = "../../support" } -sp-std = { version = "2.0.0-dev", path = "../../../primitives/std" } -sp-io ={ version = "2.0.0-dev", path = "../../../primitives/io" } -sp-core = { version = "2.0.0-dev", path = "../../../primitives/core" } -sp-phragmen = { version = "2.0.0-dev", path = "../../../primitives/phragmen" } -sp-runtime = { version = "2.0.0-dev", path = "../../../primitives/runtime" } +pallet-staking = { version = "2.0.0-alpha.2", path = "..", features = ["testing-utils"] } +pallet-staking-reward-curve = { version = "2.0.0-alpha.2", path = "../reward-curve" } +pallet-session = { version = "2.0.0-alpha.2", path = "../../session" } +pallet-indices = { version = "2.0.0-alpha.2", path = "../../indices" } +pallet-balances = { version = "2.0.0-alpha.2", path = "../../balances" } +pallet-timestamp = { version = "2.0.0-alpha.2", path = "../../timestamp" } +frame-system = { version = "2.0.0-alpha.2", path = "../../system" } +frame-support = { version = "2.0.0-alpha.2", path = "../../support" } +sp-std = { version = "2.0.0-alpha.2", path = "../../../primitives/std" } +sp-io ={ version = "2.0.0-alpha.2", path = "../../../primitives/io" } +sp-core = { version = "2.0.0-alpha.2", path = "../../../primitives/core" } +sp-phragmen = { version = "2.0.0-alpha.2", path = "../../../primitives/phragmen" } +sp-runtime = { version = "2.0.0-alpha.2", path = "../../../primitives/runtime" } rand = "0.7.3" # Prevent this from interfering with workspaces diff --git a/frame/staking/fuzz/fuzz_targets/mock.rs b/frame/staking/fuzz/fuzz_targets/mock.rs index 523088c24e..8b68e74ba5 100644 --- a/frame/staking/fuzz/fuzz_targets/mock.rs +++ b/frame/staking/fuzz/fuzz_targets/mock.rs @@ -86,7 +86,7 @@ impl frame_system::Trait for Test { type ModuleToIndex = (); type AccountData = pallet_balances::AccountData; type OnNewAccount = (); - type OnReapAccount = (Balances, Staking); + type OnKilledAccount = (Balances,); } parameter_types! { pub const ExistentialDeposit: Balance = 10; diff --git a/frame/staking/fuzz/fuzz_targets/submit_solution.rs b/frame/staking/fuzz/fuzz_targets/submit_solution.rs index 67f52320dd..5c9aa73bab 100644 --- a/frame/staking/fuzz/fuzz_targets/submit_solution.rs +++ b/frame/staking/fuzz/fuzz_targets/submit_solution.rs @@ -47,10 +47,10 @@ pub fn new_test_ext() -> Result { fuzz_target!(|do_reduce: bool| { let ext = new_test_ext(); let mode: Mode = unsafe { std::mem::transmute(testing_utils::random(0, 2)) }; - let num_validators = testing_utils::random(50, 500); - let num_nominators = testing_utils::random(100, 500); + let num_validators = testing_utils::random(200, 1000); + let num_nominators = testing_utils::random(500, 2000); let edge_per_voter = testing_utils::random(1, 16); - let to_elect = testing_utils::random(10, 50); + let to_elect = testing_utils::random(10, 200); println!("+++ instance with params {} / {} / {} / {:?} / {}", num_nominators, diff --git a/frame/staking/src/testing_utils.rs b/frame/staking/src/testing_utils.rs index c22cba87b9..badce8ca76 100644 --- a/frame/staking/src/testing_utils.rs +++ b/frame/staking/src/testing_utils.rs @@ -304,7 +304,7 @@ pub fn get_seq_phragmen_solution(do_reduce: bool) assignments, winners, do_reduce, - ) + ).unwrap() } /// Remove all validator, nominators, votes and exposures. diff --git a/primitives/arithmetic/src/per_things.rs b/primitives/arithmetic/src/per_things.rs index a80bc13c20..ca6967456b 100644 --- a/primitives/arithmetic/src/per_things.rs +++ b/primitives/arithmetic/src/per_things.rs @@ -556,7 +556,7 @@ macro_rules! implement_per_thing { $num_type::max_value() ).0 as $upper_type, $name::one().0 as $upper_type, - 1, + 2, ); assert_eq_error_rate!( $name::from_rational_approximation( @@ -564,7 +564,7 @@ macro_rules! implement_per_thing { $num_type::max_value() ).0 as $upper_type, $name::from_parts($max / 3).0 as $upper_type, - 2 + 2, ); assert_eq!( $name::from_rational_approximation(1, $num_type::max_value()), @@ -604,6 +604,7 @@ macro_rules! implement_per_thing { $name::from_rational_approximation(3 * max_value / 2, 3 * max_value), $name::from_fraction(0.5), ); + $(per_thing_from_rationale_approx_test!($test_units);)* } -- GitLab From 6b27391d8207610a7e632bcca7ef2cc8424b5351 Mon Sep 17 00:00:00 2001 From: Marcio Diaz Date: Fri, 28 Feb 2020 15:40:42 +0100 Subject: [PATCH 067/301] Add options to overwrite range bounds in benchmark command. (#5072) * Add --mins --maxs to benchmark command. * Apply review suggestions. --- bin/node/runtime/src/lib.rs | 26 +++++++++++++++-- frame/benchmarking/src/lib.rs | 38 ++++++++++++++++++------- frame/benchmarking/src/utils.rs | 12 +++++++- utils/frame/benchmarking-cli/src/lib.rs | 21 ++++++++++++-- 4 files changed, 81 insertions(+), 16 deletions(-) diff --git a/bin/node/runtime/src/lib.rs b/bin/node/runtime/src/lib.rs index 9e4496f1e9..ae8251f620 100644 --- a/bin/node/runtime/src/lib.rs +++ b/bin/node/runtime/src/lib.rs @@ -820,15 +820,35 @@ impl_runtime_apis! { fn dispatch_benchmark( module: Vec, extrinsic: Vec, + lowest_range_values: Vec, + highest_range_values: Vec, steps: Vec, repeat: u32, ) -> Result, RuntimeString> { use frame_benchmarking::Benchmarking; let result = match module.as_slice() { - b"pallet-balances" | b"balances" => Balances::run_benchmark(extrinsic, steps, repeat), - b"pallet-identity" | b"identity" => Identity::run_benchmark(extrinsic, steps, repeat), - b"pallet-timestamp" | b"timestamp" => Timestamp::run_benchmark(extrinsic, steps, repeat), + b"pallet-balances" | b"balances" => Balances::run_benchmark( + extrinsic, + lowest_range_values, + highest_range_values, + steps, + repeat, + ), + b"pallet-identity" | b"identity" => Identity::run_benchmark( + extrinsic, + lowest_range_values, + highest_range_values, + steps, + repeat, + ), + b"pallet-timestamp" | b"timestamp" => Timestamp::run_benchmark( + extrinsic, + lowest_range_values, + highest_range_values, + steps, + repeat, + ), _ => Err("Benchmark not found for this pallet."), }; diff --git a/frame/benchmarking/src/lib.rs b/frame/benchmarking/src/lib.rs index e6b6a4f3f5..d979000432 100644 --- a/frame/benchmarking/src/lib.rs +++ b/frame/benchmarking/src/lib.rs @@ -140,7 +140,13 @@ macro_rules! impl_benchmark { $( $name:ident ),* ) => { impl $crate::Benchmarking<$crate::BenchmarkResults> for Module { - fn run_benchmark(extrinsic: Vec, steps: Vec, repeat: u32) -> Result, &'static str> { + fn run_benchmark( + extrinsic: Vec, + lowest_range_values: Vec, + highest_range_values: Vec, + steps: Vec, + repeat: u32, + ) -> Result, &'static str> { // Map the input to the selected benchmark. let extrinsic = sp_std::str::from_utf8(extrinsic.as_slice()) .map_err(|_| "Could not find extrinsic")?; @@ -157,26 +163,38 @@ macro_rules! impl_benchmark { let mut results: Vec<$crate::BenchmarkResults> = Vec::new(); // Default number of steps for a component. - let mut prev_steps = &10; + let mut prev_steps = 10; // Select the component we will be benchmarking. Each component will be benchmarked. for (idx, (name, low, high)) in components.iter().enumerate() { // Get the number of steps for this component. - let steps = steps.get(idx).unwrap_or(&prev_steps); + let steps = steps.get(idx).cloned().unwrap_or(prev_steps); prev_steps = steps; + let lowest = lowest_range_values.get(idx).cloned().unwrap_or(*low); + let highest = highest_range_values.get(idx).cloned().unwrap_or(*high); + + let diff = highest - lowest; + // Create up to `STEPS` steps for that component between high and low. - let step_size = ((high - low) / steps).max(1); - let num_of_steps = (high - low) / step_size + 1; + let step_size = (diff / steps).max(1); + let num_of_steps = diff / step_size + 1; + for s in 0..num_of_steps { // This is the value we will be testing for component `name` - let component_value = low + step_size * s; + let component_value = lowest + step_size * s; - // Select the mid value for all the other components. + // Select the max value for all the other components. let c: Vec<($crate::BenchmarkParameter, u32)> = components.iter() - .map(|(n, l, h)| - (*n, if n == name { component_value } else { *h }) - ).collect(); + .enumerate() + .map(|(idx, (n, l, h))| + if n == name { + (*n, component_value) + } else { + (*n, *highest_range_values.get(idx).unwrap_or(h)) + } + ) + .collect(); // Run the benchmark `repeat` times. for _ in 0..repeat { diff --git a/frame/benchmarking/src/utils.rs b/frame/benchmarking/src/utils.rs index f9d1ecf8cd..87996c3f57 100644 --- a/frame/benchmarking/src/utils.rs +++ b/frame/benchmarking/src/utils.rs @@ -41,6 +41,8 @@ sp_api::decl_runtime_apis! { fn dispatch_benchmark( module: Vec, extrinsic: Vec, + lowest_range_values: Vec, + highest_range_values: Vec, steps: Vec, repeat: u32, ) -> Result, RuntimeString>; @@ -78,8 +80,16 @@ pub trait Benchmarking { /// Parameters /// - `extrinsic`: The name of extrinsic function you want to benchmark encoded as bytes. /// - `steps`: The number of sample points you want to take across the range of parameters. + /// - `lowest_range_values`: The lowest number for each range of parameters. + /// - `highest_range_values`: The highest number for each range of parameters. /// - `repeat`: The number of times you want to repeat a benchmark. - fn run_benchmark(extrinsic: Vec, steps: Vec, repeat: u32) -> Result, &'static str>; + fn run_benchmark( + extrinsic: Vec, + lowest_range_values: Vec, + highest_range_values: Vec, + steps: Vec, + repeat: u32, + ) -> Result, &'static str>; } /// The required setup for creating a benchmark. diff --git a/utils/frame/benchmarking-cli/src/lib.rs b/utils/frame/benchmarking-cli/src/lib.rs index b09b1bad62..899419e5de 100644 --- a/utils/frame/benchmarking-cli/src/lib.rs +++ b/utils/frame/benchmarking-cli/src/lib.rs @@ -39,6 +39,14 @@ pub struct BenchmarkCmd { #[structopt(short, long, use_delimiter = true)] pub steps: Vec, + /// Indicates lowest values for each of the component ranges. + #[structopt(long, use_delimiter = true)] + pub lowest_range_values: Vec, + + /// Indicates highest values for each of the component ranges. + #[structopt(long, use_delimiter = true)] + pub highest_range_values: Vec, + /// Select how many repetitions of this benchmark should run. #[structopt(short, long, default_value = "1")] pub repeat: u32, @@ -104,7 +112,14 @@ impl BenchmarkCmd { &mut changes, &executor, "Benchmark_dispatch_benchmark", - &(&self.pallet, &self.extrinsic, self.steps.clone(), self.repeat).encode(), + &( + &self.pallet, + &self.extrinsic, + self.lowest_range_values.clone(), + self.highest_range_values.clone(), + self.steps.clone(), + self.repeat, + ).encode(), Default::default(), ) .execute(strategy.into()) @@ -117,9 +132,11 @@ impl BenchmarkCmd { Ok(results) => { // Print benchmark metadata println!( - "Pallet: {:?}, Extrinsic: {:?}, Steps: {:?}, Repeat: {:?}", + "Pallet: {:?}, Extrinsic: {:?}, Lowest values: {:?}, Highest values: {:?}, Steps: {:?}, Repeat: {:?}", self.pallet, self.extrinsic, + self.lowest_range_values, + self.highest_range_values, self.steps, self.repeat, ); -- GitLab From b5ec7d412d27feafad79a7c94b6f6451f0efc04f Mon Sep 17 00:00:00 2001 From: Toralf Wittner Date: Fri, 28 Feb 2020 15:41:10 +0100 Subject: [PATCH 068/301] Update yamux to version 0.4.4. (#5086) --- Cargo.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index e32db20fd8..74d952d36f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -9120,9 +9120,9 @@ checksum = "d089681aa106a86fade1b0128fb5daf07d5867a509ab036d99988dec80429a57" [[package]] name = "yamux" -version = "0.4.3" +version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d73295bc9d9acf89dd9336b3b5f5b57731ee72b587857dd4312721a0196b48e5" +checksum = "f03098897b734bd943ab23f6aa9f98aafd72a88516deedd66f9d564c57bf2f19" dependencies = [ "bytes 0.5.4", "futures 0.3.4", -- GitLab From 29cee59229626644c549e36e7921fca42bed68da Mon Sep 17 00:00:00 2001 From: Ashley Date: Fri, 28 Feb 2020 17:02:33 +0100 Subject: [PATCH 069/301] Remove more instances of futures01 (#4633) * Start removing last few instances of futures01 * Use to_poll on wasm * Revert "Use to_poll on wasm" This reverts commit 1c61728f10d520df5f9b28c415a0db68e478b9c7. * Fix fg test * Upgrade network test futures * Update offchain hyper version * Update service test * bump tokio to 0.2.10 * Removed some unneeded tokios * fixes * fix run_until_all_full * Make service test debuggable * Update client/offchain/src/api/http.rs Co-Authored-By: Demi Obenour <48690212+DemiMarie-parity@users.noreply.github.com> * Add service_test to test-int output * nitpicking * Finally fix test * Give up and revert client/serviec/test * Revert gitlab ci too Co-authored-by: Demi Obenour --- Cargo.lock | 211 ++++++++++---------- client/consensus/aura/Cargo.toml | 2 - client/consensus/aura/src/lib.rs | 30 ++- client/consensus/babe/Cargo.toml | 2 - client/consensus/babe/src/lib.rs | 2 +- client/consensus/babe/src/tests.rs | 35 ++-- client/finality-grandpa/Cargo.toml | 3 +- client/finality-grandpa/src/tests.rs | 129 ++++++------- client/network/test/Cargo.toml | 4 +- client/network/test/src/lib.rs | 63 +++--- client/network/test/src/sync.rs | 278 ++++++++++++--------------- client/service/Cargo.toml | 1 - client/service/src/lib.rs | 6 +- client/service/src/status_sinks.rs | 31 +-- utils/frame/rpc/support/Cargo.toml | 2 +- utils/frame/rpc/support/src/lib.rs | 4 +- 16 files changed, 367 insertions(+), 436 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 74d952d36f..815981e2fc 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -61,9 +61,9 @@ dependencies = [ [[package]] name = "aho-corasick" -version = "0.7.8" +version = "0.7.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "743ad5a418686aad3b87fd14c43badd828cf26e214a00f92a384291cf22e1811" +checksum = "d5e63fd144e18ba274ae7095c0197a870a7b9468abc801dd62f190d80817d2ec" dependencies = [ "memchr", ] @@ -886,33 +886,36 @@ dependencies = [ [[package]] name = "crossbeam-channel" -version = "0.4.0" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "acec9a3b0b3559f15aee4f90746c4e5e293b701c0f7d3925d24e01645267b68c" +checksum = "cced8691919c02aac3cb0a1bc2e9b73d89e832bf9a06fc579d4e71b68a2da061" dependencies = [ "crossbeam-utils", + "maybe-uninit", ] [[package]] name = "crossbeam-deque" -version = "0.7.2" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3aa945d63861bfe624b55d153a39684da1e8c0bc8fba932f7ee3a3c16cea3ca" +checksum = "9f02af974daeee82218205558e51ec8768b48cf524bd01d550abe5573a608285" dependencies = [ "crossbeam-epoch", "crossbeam-utils", + "maybe-uninit", ] [[package]] name = "crossbeam-epoch" -version = "0.8.0" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5064ebdbf05ce3cb95e45c8b086f72263f4166b29b97f6baff7ef7fe047b55ac" +checksum = "058ed274caafc1f60c4997b5fc07bf7dc7cca454af7c6e81edffe5f33f70dace" dependencies = [ - "autocfg 0.1.7", + "autocfg 1.0.0", "cfg-if", "crossbeam-utils", "lazy_static", + "maybe-uninit", "memoffset", "scopeguard", ] @@ -929,11 +932,11 @@ dependencies = [ [[package]] name = "crossbeam-utils" -version = "0.7.0" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce446db02cdc3165b94ae73111e570793400d0794e46125cc4056c81cbb039f4" +checksum = "c3c7c73a2d1e9fc0886a08b93e98eb643461230d5f1925e4036204d5f2e261a8" dependencies = [ - "autocfg 0.1.7", + "autocfg 1.0.0", "cfg-if", "lazy_static", ] @@ -969,9 +972,9 @@ dependencies = [ [[package]] name = "csv-core" -version = "0.1.6" +version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b5cadb6b25c77aeff80ba701712494213f4a8418fcda2ee11b6560c3ad0bf4c" +checksum = "2b2466559f260f48ad25fe6317b3c8dac77b5bdb5763ac7d9d6103530663bc90" dependencies = [ "memchr", ] @@ -987,9 +990,9 @@ dependencies = [ [[package]] name = "ctor" -version = "0.1.12" +version = "0.1.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd8ce37ad4184ab2ce004c33bf6379185d3b1c95801cab51026bd271bf68eedc" +checksum = "47c5e5ac752e18207b12e16b10631ae5f7f68f8805f335f9b817ead83d9ffce1" dependencies = [ "quote", "syn", @@ -1043,15 +1046,15 @@ dependencies = [ [[package]] name = "data-encoding" -version = "2.1.2" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4f47ca1860a761136924ddd2422ba77b2ea54fe8cc75b9040804a0d9d32ad97" +checksum = "11c0346158a19b3627234e15596f5e465c360fcdb97d817bcb255e0510f5a788" [[package]] name = "derive_more" -version = "0.99.2" +version = "0.99.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2159be042979966de68315bce7034bb000c775f22e3e834e1c52ff78f041cae8" +checksum = "a806e96c59a76a5ba6e18735b6cf833344671e61e7863f2edb5c518ea2cac95c" dependencies = [ "proc-macro2", "quote", @@ -1752,9 +1755,9 @@ checksum = "a1de7508b218029b0f01662ed8f61b1c964b3ae99d6f25462d0f55a595109df6" [[package]] name = "futures-timer" -version = "3.0.1" +version = "3.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3de1a2b2a2a33d9e60e17980b60ee061eeaae96a5abe9121db0fdb9af167a1c5" +checksum = "e64b03909df88034c26dc1547e8970b91f98bdb65165d6a4e9110d94263dbb2c" dependencies = [ "gloo-timers", "send_wrapper 0.4.0", @@ -1959,7 +1962,7 @@ dependencies = [ "indexmap", "log 0.4.8", "slab", - "tokio 0.2.11", + "tokio 0.2.12", "tokio-util", ] @@ -1999,18 +2002,18 @@ dependencies = [ [[package]] name = "hermit-abi" -version = "0.1.6" +version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eff2656d88f158ce120947499e971d743c05dbcbed62e5bd2f38f1698bbc3772" +checksum = "1010591b26bbfe835e9faeabeb11866061cc7dcebffd56ad7d0942d0e61aefd8" dependencies = [ "libc", ] [[package]] name = "hex" -version = "0.4.1" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76cdda6bf525062a0c9e8f14ee2b37935c86b8efb6c8b69b3c83dfb518a914af" +checksum = "644f9158b2f133fd50f5fb3242878846d9eb792e445c893805ff0e3824006e35" [[package]] name = "hex-literal" @@ -2179,7 +2182,7 @@ dependencies = [ "net2", "pin-project", "time", - "tokio 0.2.11", + "tokio 0.2.12", "tower-service", "want 0.3.0", ] @@ -2196,7 +2199,7 @@ dependencies = [ "hyper 0.13.2", "rustls", "rustls-native-certs", - "tokio 0.2.11", + "tokio 0.2.12", "tokio-rustls", "webpki", ] @@ -2646,7 +2649,7 @@ dependencies = [ "ed25519-dalek", "fnv", "futures 0.3.4", - "futures-timer 3.0.1", + "futures-timer 3.0.2", "lazy_static", "libsecp256k1", "log 0.4.8", @@ -2943,7 +2946,7 @@ checksum = "f9e80ad4e3535345f3d666554ce347d3100453775611c05c60786bf9a1747a10" dependencies = [ "async-std", "futures 0.3.4", - "futures-timer 3.0.1", + "futures-timer 3.0.2", "get_if_addrs", "ipnet", "libp2p-core", @@ -3127,9 +3130,6 @@ name = "memchr" version = "2.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3728d817d99e5ac407411fa471ff9800a778d88a24685968b36824eaf4bee400" -dependencies = [ - "libc", -] [[package]] name = "memoffset" @@ -3819,9 +3819,9 @@ dependencies = [ [[package]] name = "owning_ref" -version = "0.4.0" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49a4b8ea2179e6a2e27411d3bca09ca6dd630821cf6894c6c7c8467a8ee7ef13" +checksum = "6ff55baddef9e4ad00f88b6c743a2a8062d4c6ade126c2a528644b8e444d52ce" dependencies = [ "stable_deref_trait", ] @@ -4712,9 +4712,9 @@ dependencies = [ [[package]] name = "paste" -version = "0.1.6" +version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "423a519e1c6e828f1e73b720f9d9ed2fa643dce8a7737fb43235ce0b41eeaa49" +checksum = "63e1afe738d71b1ebab5f1207c055054015427dbfc7bbe9ee1266894156ec046" dependencies = [ "paste-impl", "proc-macro-hack", @@ -4722,9 +4722,9 @@ dependencies = [ [[package]] name = "paste-impl" -version = "0.1.6" +version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4214c9e912ef61bf42b81ba9a47e8aad1b2ffaf739ab162bf96d1e011f54e6c5" +checksum = "6d4dc4a7f6f743211c5aab239640a65091535d97d43d92a52bca435a640892bb" dependencies = [ "proc-macro-hack", "proc-macro2", @@ -4840,9 +4840,9 @@ checksum = "74490b50b9fbe561ac330df47c08f3f33073d2d00c150f719147d7c54522fa1b" [[package]] name = "predicates" -version = "1.0.2" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9bfe52247e5cc9b2f943682a85a5549fb9662245caf094504e69a2f03fe64d4" +checksum = "1188bf092c81c18228c383b190c069a8a613c18a046ffa9fdfc0f5fc8fb2da8a" dependencies = [ "difference", "predicates-core", @@ -4900,9 +4900,9 @@ dependencies = [ [[package]] name = "proc-macro-error" -version = "0.4.8" +version = "0.4.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "875077759af22fa20b610ad4471d8155b321c89c3f2785526c9839b099be4e0a" +checksum = "052b3c9af39c7e5e94245f820530487d19eb285faedcb40e0c3275132293f242" dependencies = [ "proc-macro-error-attr", "proc-macro2", @@ -4913,9 +4913,9 @@ dependencies = [ [[package]] name = "proc-macro-error-attr" -version = "0.4.8" +version = "0.4.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5717d9fa2664351a01ed73ba5ef6df09c01a521cb42cb65a061432a826f3c7a" +checksum = "d175bef481c7902e63e3165627123fff3502f06ac043d3ef42d08c1246da9253" dependencies = [ "proc-macro2", "quote", @@ -4943,9 +4943,9 @@ checksum = "369a6ed065f249a159e06c45752c780bda2fb53c995718f9e484d08daa9eb42e" [[package]] name = "proc-macro2" -version = "1.0.8" +version = "1.0.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3acb317c6ff86a4e579dfa00fc5e6cca91ecbb4e7eb2df0468805b674eb88548" +checksum = "6c09721c6781493a2a492a96b5a5bf19b65917fe6728884e7c44dd0c60ca3435" dependencies = [ "unicode-xid", ] @@ -5548,7 +5548,7 @@ dependencies = [ "derive_more", "env_logger 0.7.1", "futures 0.3.4", - "futures-timer 3.0.1", + "futures-timer 3.0.2", "libp2p", "log 0.4.8", "parity-scale-codec", @@ -5667,7 +5667,7 @@ dependencies = [ "substrate-prometheus-endpoint", "tempfile", "time", - "tokio 0.2.11", + "tokio 0.2.12", ] [[package]] @@ -5775,9 +5775,8 @@ version = "0.8.0-alpha.3" dependencies = [ "derive_more", "env_logger 0.7.1", - "futures 0.1.29", "futures 0.3.4", - "futures-timer 3.0.1", + "futures-timer 3.0.2", "log 0.4.8", "parity-scale-codec", "parking_lot 0.10.0", @@ -5805,7 +5804,6 @@ dependencies = [ "sp-version", "substrate-test-runtime-client", "tempfile", - "tokio 0.1.22", ] [[package]] @@ -5815,9 +5813,8 @@ dependencies = [ "derive_more", "env_logger 0.7.1", "fork-tree", - "futures 0.1.29", "futures 0.3.4", - "futures-timer 3.0.1", + "futures-timer 3.0.2", "log 0.4.8", "merlin", "num-bigint", @@ -5856,7 +5853,6 @@ dependencies = [ "sp-version", "substrate-test-runtime-client", "tempfile", - "tokio 0.1.22", ] [[package]] @@ -5921,7 +5917,7 @@ dependencies = [ "substrate-test-runtime-client", "substrate-test-runtime-transaction-pool", "tempfile", - "tokio 0.2.11", + "tokio 0.2.12", ] [[package]] @@ -5949,7 +5945,7 @@ name = "sc-consensus-slots" version = "0.8.0-alpha.3" dependencies = [ "futures 0.3.4", - "futures-timer 3.0.1", + "futures-timer 3.0.2", "log 0.4.8", "parity-scale-codec", "parking_lot 0.10.0", @@ -6066,9 +6062,8 @@ dependencies = [ "env_logger 0.7.1", "finality-grandpa", "fork-tree", - "futures 0.1.29", "futures 0.3.4", - "futures-timer 3.0.1", + "futures-timer 3.0.2", "log 0.4.8", "parity-scale-codec", "parking_lot 0.10.0", @@ -6097,7 +6092,7 @@ dependencies = [ "sp-state-machine", "substrate-test-runtime-client", "tempfile", - "tokio 0.1.22", + "tokio 0.2.12", ] [[package]] @@ -6146,7 +6141,7 @@ dependencies = [ "fnv", "fork-tree", "futures 0.3.4", - "futures-timer 3.0.1", + "futures-timer 3.0.2", "futures_codec", "libp2p", "linked-hash-map", @@ -6194,7 +6189,7 @@ name = "sc-network-gossip" version = "0.8.0-alpha.3" dependencies = [ "futures 0.3.4", - "futures-timer 3.0.1", + "futures-timer 3.0.2", "libp2p", "log 0.4.8", "lru", @@ -6209,9 +6204,8 @@ name = "sc-network-test" version = "0.8.0-dev" dependencies = [ "env_logger 0.7.1", - "futures 0.1.29", "futures 0.3.4", - "futures-timer 3.0.1", + "futures-timer 3.0.2", "libp2p", "log 0.4.8", "parking_lot 0.10.0", @@ -6228,7 +6222,6 @@ dependencies = [ "substrate-test-runtime", "substrate-test-runtime-client", "tempfile", - "tokio 0.1.22", ] [[package]] @@ -6239,7 +6232,7 @@ dependencies = [ "env_logger 0.7.1", "fnv", "futures 0.3.4", - "futures-timer 3.0.1", + "futures-timer 3.0.2", "hyper 0.13.2", "hyper-rustls", "log 0.4.8", @@ -6259,7 +6252,7 @@ dependencies = [ "sp-transaction-pool", "substrate-test-runtime-client", "threadpool", - "tokio 0.2.11", + "tokio 0.2.12", ] [[package]] @@ -6369,7 +6362,7 @@ dependencies = [ "futures 0.1.29", "futures 0.3.4", "futures-diagnose", - "futures-timer 3.0.1", + "futures-timer 3.0.2", "lazy_static", "log 0.4.8", "parity-multiaddr 0.5.0", @@ -6408,7 +6401,6 @@ dependencies = [ "substrate-test-runtime-client", "sysinfo", "target_info", - "tokio 0.2.11", "tracing", "wasm-timer", ] @@ -6450,7 +6442,7 @@ version = "2.0.0-alpha.3" dependencies = [ "bytes 0.5.4", "futures 0.3.4", - "futures-timer 3.0.1", + "futures-timer 3.0.2", "libp2p", "log 0.4.8", "parking_lot 0.10.0", @@ -6556,9 +6548,9 @@ dependencies = [ [[package]] name = "scopeguard" -version = "1.0.0" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b42e15e59b18a828bbf5c58ea01debb36b9b096346de35d941dcb89009f24a0d" +checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" [[package]] name = "scroll" @@ -6676,9 +6668,9 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.47" +version = "1.0.48" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15913895b61e0be854afd32fd4163fcd2a3df34142cf2cb961b310ce694cbf90" +checksum = "9371ade75d4c2d6cb154141b9752cf3781ec9c05e0e5cf35060e1e70ee7b9c25" dependencies = [ "itoa", "ryu", @@ -7009,7 +7001,7 @@ dependencies = [ "derive_more", "futures 0.3.4", "futures-diagnose", - "futures-timer 3.0.1", + "futures-timer 3.0.2", "libp2p", "log 0.4.8", "parity-scale-codec", @@ -7592,7 +7584,7 @@ dependencies = [ "console_log", "futures 0.1.29", "futures 0.3.4", - "futures-timer 3.0.1", + "futures-timer 3.0.2", "js-sys", "kvdb-web", "libp2p", @@ -7624,7 +7616,7 @@ dependencies = [ "sc-rpc-api", "serde", "sp-storage", - "tokio 0.1.22", + "tokio 0.2.12", ] [[package]] @@ -7660,7 +7652,7 @@ dependencies = [ "hyper 0.13.2", "log 0.4.8", "prometheus", - "tokio 0.2.11", + "tokio 0.2.12", ] [[package]] @@ -7791,9 +7783,9 @@ checksum = "7c65d530b10ccaeac294f349038a597e435b18fb456aadd0840a623f83b9e941" [[package]] name = "syn" -version = "1.0.15" +version = "1.0.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a0294dc449adc58bb6592fff1a23d3e5e6e235afc6a0ffca2657d19e7bbffe5" +checksum = "123bd9499cfb380418d509322d7a6d52e5315f064fe4b3ad18a53d6b92c07859" dependencies = [ "proc-macro2", "quote", @@ -7901,18 +7893,18 @@ dependencies = [ [[package]] name = "thiserror" -version = "1.0.10" +version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "205684fd018ca14432b12cce6ea3d46763311a571c3d294e71ba3f01adcf1aad" +checksum = "ee14bf8e6767ab4c687c9e8bc003879e042a96fd67a3ba5934eadb6536bef4db" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.10" +version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57e4d2e50ca050ed44fb58309bdce3efa79948f84f9993ad1978de5eebdce5a7" +checksum = "a7b51e1fbc44b5a0840be594fbc0f960be09050f2617e61e6aa43bef97cd3ef4" dependencies = [ "proc-macro2", "quote", @@ -7950,9 +7942,9 @@ dependencies = [ [[package]] name = "tiny-bip39" -version = "0.7.0" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1cd1fb03fe8e07d17cd851a624a9fff74642a997b67fbd1ccd77533241640d92" +checksum = "a6848cd8f566953ce1e8faeba12ee23cbdbb0437754792cd857d44628b5685e3" dependencies = [ "failure", "hmac", @@ -7961,6 +7953,7 @@ dependencies = [ "rand 0.7.3", "rustc-hash", "sha2", + "unicode-normalization", ] [[package]] @@ -8017,9 +8010,9 @@ dependencies = [ [[package]] name = "tokio" -version = "0.2.11" +version = "0.2.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8fdd17989496f49cdc57978c96f0c9fe5e4a58a8bddc6813c449a4624f6a030b" +checksum = "b34bee1facdc352fba10c9c58b654e6ecb6a2250167772bf86071f7c5f2f5061" dependencies = [ "bytes 0.5.4", "fnv", @@ -8114,9 +8107,9 @@ dependencies = [ [[package]] name = "tokio-macros" -version = "0.2.4" +version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4b1e7ed7d5d4c2af3d999904b0eebe76544897cdbfb2b9684bed2174ab20f7c" +checksum = "f0c3acc6aa564495a0f2e1d59fab677cd7f81a19994cfc7f3ad0e64301560389" dependencies = [ "proc-macro2", "quote", @@ -8150,7 +8143,7 @@ checksum = "141afec0978abae6573065a48882c6bae44c5cc61db9b511ac4abf6a09bfd9cc" dependencies = [ "futures-core", "rustls", - "tokio 0.2.11", + "tokio 0.2.12", "webpki", ] @@ -8273,7 +8266,7 @@ dependencies = [ "futures-sink", "log 0.4.8", "pin-project-lite", - "tokio 0.2.11", + "tokio 0.2.12", ] [[package]] @@ -8293,9 +8286,9 @@ checksum = "e987b6bf443f4b5b3b6f38704195592cca41c5bb7aedd3c3693c7081f8289860" [[package]] name = "tracing" -version = "0.1.12" +version = "0.1.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e213bd24252abeb86a0b7060e02df677d367ce6cb772cef17e9214b8390a8d3" +checksum = "1721cc8cf7d770cc4257872507180f35a4797272f5962f24c806af9e7faf52ab" dependencies = [ "cfg-if", "tracing-attributes", @@ -8304,9 +8297,9 @@ dependencies = [ [[package]] name = "tracing-attributes" -version = "0.1.6" +version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04cfd395def5a60236e187e1ff905cb55668a59f29928dec05e6e1b1fd2ac1f3" +checksum = "7fbad39da2f9af1cae3016339ad7f2c7a9e870f12e8fd04c4fd7ef35b30c0d2b" dependencies = [ "quote", "syn", @@ -8314,9 +8307,9 @@ dependencies = [ [[package]] name = "tracing-core" -version = "0.1.9" +version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13a46f11e372b8bd4b4398ea54353412fdd7fd42a8370c7e543e218cf7661978" +checksum = "0aa83a9a47081cd522c09c81b31aec2c9273424976f922ad61c053b58350b715" dependencies = [ "lazy_static", ] @@ -8787,9 +8780,9 @@ checksum = "073da89bf1c84db000dd68ce660c1b4a08e3a2d28fd1e3394ab9e7abdde4a0f8" [[package]] name = "wasmparser" -version = "0.51.1" +version = "0.51.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e41b27a1677fe28c115de49efca55dabb14f7fece2c32947ffb9b1064fe5bd4" +checksum = "aeb1956b19469d1c5e63e459d29e7b5aa0f558d9f16fcef09736f8a265e6c10a" [[package]] name = "wasmtime" @@ -8805,7 +8798,7 @@ dependencies = [ "region", "rustc-demangle", "target-lexicon", - "wasmparser 0.51.1", + "wasmparser 0.51.4", "wasmtime-environ", "wasmtime-jit", "wasmtime-runtime", @@ -8825,7 +8818,7 @@ dependencies = [ "more-asserts", "target-lexicon", "thiserror", - "wasmparser 0.51.1", + "wasmparser 0.51.4", "wasmtime-environ", ] @@ -8853,7 +8846,7 @@ dependencies = [ "sha2", "thiserror", "toml", - "wasmparser 0.51.1", + "wasmparser 0.51.4", "winapi 0.3.8", "zstd", ] @@ -8875,7 +8868,7 @@ dependencies = [ "region", "target-lexicon", "thiserror", - "wasmparser 0.51.1", + "wasmparser 0.51.4", "wasmtime-debug", "wasmtime-environ", "wasmtime-runtime", @@ -8903,18 +8896,18 @@ dependencies = [ [[package]] name = "wast" -version = "7.0.0" +version = "9.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12a729d076deb29c8509fa71f2d427729f9394f9496844ed8fcab152f35d163d" +checksum = "ee7b16105405ca2aa2376ba522d8d4b1a11604941dd3bb7df9fd2ece60f8d16a" dependencies = [ "leb128", ] [[package]] name = "wat" -version = "1.0.8" +version = "1.0.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5795e34a4b39893653dec97e644fac85c31398e0ce1abecc48967aac83d9e8ce" +checksum = "56173f7f4fb59aebe35a7e71423845e1c6c7144bfb56362d497931b6b3bed0f6" dependencies = [ "wast", ] diff --git a/client/consensus/aura/Cargo.toml b/client/consensus/aura/Cargo.toml index 0a7a7176c7..e5b5975ca3 100644 --- a/client/consensus/aura/Cargo.toml +++ b/client/consensus/aura/Cargo.toml @@ -40,7 +40,5 @@ sc-network = { version = "0.8.0-alpha.2", path = "../../network" } sc-network-test = { version = "0.8.0-dev", path = "../../network/test" } sc-service = { version = "0.8.0-alpha.2", path = "../../service" } substrate-test-runtime-client = { version = "2.0.0-dev", path = "../../../test-utils/runtime/client" } -tokio = "0.1.22" env_logger = "0.7.0" tempfile = "3.1.0" -futures01 = { package = "futures", version = "0.1" } diff --git a/client/consensus/aura/src/lib.rs b/client/consensus/aura/src/lib.rs index 355c058645..5850228628 100644 --- a/client/consensus/aura/src/lib.rs +++ b/client/consensus/aura/src/lib.rs @@ -829,10 +829,10 @@ mod tests { use sp_runtime::traits::{Block as BlockT, DigestFor}; use sc_network::config::ProtocolConfig; use parking_lot::Mutex; - use tokio::runtime::current_thread; use sp_keyring::sr25519::Keyring; use sc_client::BlockchainEvents; use sp_consensus_aura::sr25519::AuthorityPair; + use std::task::Poll; type Error = sp_blockchain::Error; @@ -950,8 +950,8 @@ mod tests { let net = Arc::new(Mutex::new(net)); let mut import_notifications = Vec::new(); + let mut aura_futures = Vec::new(); - let mut runtime = current_thread::Runtime::new().unwrap(); let mut keystore_paths = Vec::new(); for (peer_id, key) in peers { let mut net = net.lock(); @@ -979,7 +979,7 @@ mod tests { &inherent_data_providers, slot_duration.get() ).expect("Registers aura inherent data provider"); - let aura = start_aura::<_, _, _, _, _, AuthorityPair, _, _, _>( + aura_futures.push(start_aura::<_, _, _, _, _, AuthorityPair, _, _, _>( slot_duration, client.clone(), select_chain, @@ -990,21 +990,19 @@ mod tests { false, keystore, sp_consensus::AlwaysCanAuthor, - ) - .expect("Starts aura") - .unit_error() - .compat(); - - runtime.spawn(aura); + ).expect("Starts aura")); } - runtime.spawn(futures01::future::poll_fn(move || { - net.lock().poll(); - Ok::<_, ()>(futures01::Async::NotReady::<()>) - })); - - runtime.block_on(future::join_all(import_notifications) - .unit_error().compat()).unwrap(); + futures::executor::block_on(future::select( + future::poll_fn(move |cx| { + net.lock().poll(cx); + Poll::<()>::Pending + }), + future::select( + future::join_all(aura_futures), + future::join_all(import_notifications) + ) + )); } #[test] diff --git a/client/consensus/babe/Cargo.toml b/client/consensus/babe/Cargo.toml index b465ed1f13..c6d61eb5ec 100644 --- a/client/consensus/babe/Cargo.toml +++ b/client/consensus/babe/Cargo.toml @@ -54,10 +54,8 @@ sc-network-test = { version = "0.8.0-dev", path = "../../network/test" } sc-service = { version = "0.8.0-alpha.2", path = "../../service" } substrate-test-runtime-client = { version = "2.0.0-dev", path = "../../../test-utils/runtime/client" } sc-block-builder = { version = "0.8.0-alpha.2", path = "../../block-builder" } -tokio = "0.1.22" env_logger = "0.7.0" tempfile = "3.1.0" -futures01 = { package = "futures", version = "0.1" } [features] test-helpers = [] diff --git a/client/consensus/babe/src/lib.rs b/client/consensus/babe/src/lib.rs index 000642fec4..967a78e7bf 100644 --- a/client/consensus/babe/src/lib.rs +++ b/client/consensus/babe/src/lib.rs @@ -318,7 +318,7 @@ pub struct BabeParams { pub can_author_with: CAW, } -/// Start the babe worker. The returned future should be run in a tokio runtime. +/// Start the babe worker. pub fn start_babe(BabeParams { keystore, client, diff --git a/client/consensus/babe/src/tests.rs b/client/consensus/babe/src/tests.rs index 9331319d55..a5493918f0 100644 --- a/client/consensus/babe/src/tests.rs +++ b/client/consensus/babe/src/tests.rs @@ -32,10 +32,9 @@ use sc_network_test::*; use sc_network_test::{Block as TestBlock, PeersClient}; use sc_network::config::{BoxFinalityProofRequestBuilder, ProtocolConfig}; use sp_runtime::{generic::DigestItem, traits::{Block as BlockT, DigestFor}}; -use tokio::runtime::current_thread; use sc_client_api::{BlockchainEvents, backend::TransactionFor}; use log::debug; -use std::{time::Duration, cell::RefCell}; +use std::{time::Duration, cell::RefCell, task::Poll}; type Item = DigestItem; @@ -354,7 +353,7 @@ fn run_one_test( let net = Arc::new(Mutex::new(net)); let mut import_notifications = Vec::new(); - let mut runtime = current_thread::Runtime::new().unwrap(); + let mut babe_futures = Vec::new(); let mut keystore_paths = Vec::new(); for (peer_id, seed) in peers { @@ -399,7 +398,7 @@ fn run_one_test( ); - runtime.spawn(start_babe(BabeParams { + babe_futures.push(start_babe(BabeParams { block_import: data.block_import.lock().take().expect("import set up during init"), select_chain, client, @@ -410,23 +409,23 @@ fn run_one_test( babe_link: data.link.clone(), keystore, can_author_with: sp_consensus::AlwaysCanAuthor, - }).expect("Starts babe").unit_error().compat()); + }).expect("Starts babe")); } - runtime.spawn(futures01::future::poll_fn(move || { - let mut net = net.lock(); - net.poll(); - for p in net.peers() { - for (h, e) in p.failed_verifications() { - panic!("Verification failed for {:?}: {}", h, e); + futures::executor::block_on(future::select( + futures::future::poll_fn(move |cx| { + let mut net = net.lock(); + net.poll(cx); + for p in net.peers() { + for (h, e) in p.failed_verifications() { + panic!("Verification failed for {:?}: {}", h, e); + } } - } - - Ok::<_, ()>(futures01::Async::NotReady::<()>) - })); - - runtime.block_on(future::join_all(import_notifications) - .unit_error().compat()).unwrap(); + + Poll::<()>::Pending + }), + future::select(future::join_all(import_notifications), future::join_all(babe_futures)) + )); } #[test] diff --git a/client/finality-grandpa/Cargo.toml b/client/finality-grandpa/Cargo.toml index 7dea004eff..8dcc24c3da 100644 --- a/client/finality-grandpa/Cargo.toml +++ b/client/finality-grandpa/Cargo.toml @@ -48,7 +48,6 @@ substrate-test-runtime-client = { version = "2.0.0-dev", path = "../../test-uti sp-consensus-babe = { version = "0.8.0-alpha.2", path = "../../primitives/consensus/babe" } sp-state-machine = { version = "0.8.0-alpha.2", path = "../../primitives/state-machine" } env_logger = "0.7.0" -tokio = "0.1.22" +tokio = { version = "0.2", features = ["rt-core"] } tempfile = "3.1.0" sp-api = { version = "2.0.0-alpha.2", path = "../../primitives/api" } -futures01 = { package = "futures", version = "0.1.29" } diff --git a/client/finality-grandpa/src/tests.rs b/client/finality-grandpa/src/tests.rs index 6b9ab5e1f2..6e81c2f00a 100644 --- a/client/finality-grandpa/src/tests.rs +++ b/client/finality-grandpa/src/tests.rs @@ -25,7 +25,7 @@ use sc_network_test::{ use sc_network::config::{ProtocolConfig, Roles, BoxFinalityProofRequestBuilder}; use parking_lot::Mutex; use futures_timer::Delay; -use tokio::runtime::current_thread; +use tokio::runtime::{Runtime, Handle}; use sp_keyring::Ed25519Keyring; use sc_client::LongestChain; use sc_client_api::backend::TransactionFor; @@ -47,8 +47,6 @@ use sp_runtime::generic::{BlockId, DigestItem}; use sp_core::{H256, NativeOrEncoded, ExecutionContext, crypto::Public}; use sp_finality_grandpa::{GRANDPA_ENGINE_ID, AuthorityList, GrandpaApi}; use sp_state_machine::{InMemoryBackend, prove_read, read_proof_check}; -use futures01::Async; -use futures::compat::Future01CompatExt; use authorities::AuthoritySet; use finality_proof::{ @@ -370,27 +368,25 @@ fn create_keystore(authority: Ed25519Keyring) -> (KeyStorePtr, tempfile::TempDir (keystore, keystore_path) } -fn block_until_complete(future: impl Future + Unpin, net: &Arc>, runtime: &mut current_thread::Runtime) { - let drive_to_completion = futures01::future::poll_fn(|| { - net.lock().poll(); Ok::, ()>(Async::NotReady) +fn block_until_complete(future: impl Future + Unpin, net: &Arc>, runtime: &mut Runtime) { + let drive_to_completion = futures::future::poll_fn(|cx| { + net.lock().poll(cx); Poll::<()>::Pending }); runtime.block_on( - future::select(future, drive_to_completion.compat()) - .map(|_| Ok::<(), ()>(())) - .compat() - ).unwrap(); + future::select(future, drive_to_completion) + ); } // run the voters to completion. provide a closure to be invoked after // the voters are spawned but before blocking on them. fn run_to_completion_with( - runtime: &mut current_thread::Runtime, + runtime: &mut Runtime, blocks: u64, net: Arc>, peers: &[Ed25519Keyring], with: F, ) -> u64 where - F: FnOnce(current_thread::Handle) -> Option>>> + F: FnOnce(Handle) -> Option>>> { use parking_lot::RwLock; @@ -398,7 +394,7 @@ fn run_to_completion_with( let highest_finalized = Arc::new(RwLock::new(0)); - if let Some(f) = (with)(runtime.handle()) { + if let Some(f) = (with)(runtime.handle().clone()) { wait_for.push(f); }; @@ -456,7 +452,7 @@ fn run_to_completion_with( assert_send(&voter); - runtime.spawn(voter.unit_error().compat()); + runtime.spawn(voter); } // wait for all finalized on each. @@ -468,7 +464,7 @@ fn run_to_completion_with( } fn run_to_completion( - runtime: &mut current_thread::Runtime, + runtime: &mut Runtime, blocks: u64, net: Arc>, peers: &[Ed25519Keyring] @@ -497,13 +493,13 @@ fn add_forced_change( #[test] fn finalize_3_voters_no_observers() { let _ = env_logger::try_init(); - let mut runtime = current_thread::Runtime::new().unwrap(); + let mut runtime = Runtime::new().unwrap(); let peers = &[Ed25519Keyring::Alice, Ed25519Keyring::Bob, Ed25519Keyring::Charlie]; let voters = make_ids(peers); let mut net = GrandpaTestNet::new(TestApi::new(voters), 3); net.peer(0).push_blocks(20, false); - net.block_until_sync(&mut runtime); + net.block_until_sync(); for i in 0..3 { assert_eq!(net.peer(i).client().info().best_number, 20, @@ -522,14 +518,14 @@ fn finalize_3_voters_no_observers() { #[test] fn finalize_3_voters_1_full_observer() { - let mut runtime = current_thread::Runtime::new().unwrap(); + let mut runtime = Runtime::new().unwrap(); let peers = &[Ed25519Keyring::Alice, Ed25519Keyring::Bob, Ed25519Keyring::Charlie]; let voters = make_ids(peers); let mut net = GrandpaTestNet::new(TestApi::new(voters), 4); net.peer(0).push_blocks(20, false); - net.block_until_sync(&mut runtime); + net.block_until_sync(); let net = Arc::new(Mutex::new(net)); let mut finality_notifications = Vec::new(); @@ -588,7 +584,7 @@ fn finalize_3_voters_1_full_observer() { } for voter in voters { - runtime.spawn(voter.unit_error().compat()); + runtime.spawn(voter); } // wait for all finalized on each. @@ -626,10 +622,10 @@ fn transition_3_voters_twice_1_full_observer() { let api = TestApi::new(genesis_voters); let net = Arc::new(Mutex::new(GrandpaTestNet::new(api, 8))); - let mut runtime = current_thread::Runtime::new().unwrap(); + let mut runtime = Runtime::new().unwrap(); net.lock().peer(0).push_blocks(1, false); - net.lock().block_until_sync(&mut runtime); + net.lock().block_until_sync(); for (i, peer) in net.lock().peers().iter().enumerate() { let full_client = peer.client().as_full().expect("only full clients are used in test"); @@ -689,7 +685,7 @@ fn transition_3_voters_twice_1_full_observer() { future::ready(()) }); - runtime.spawn(block_production.unit_error().compat()); + runtime.spawn(block_production); } let mut finality_notifications = Vec::new(); @@ -748,7 +744,7 @@ fn transition_3_voters_twice_1_full_observer() { }; let voter = run_grandpa_voter(grandpa_params).expect("all in order with client and network"); - runtime.spawn(voter.unit_error().compat()); + runtime.spawn(voter); } // wait for all finalized on each. @@ -759,14 +755,14 @@ fn transition_3_voters_twice_1_full_observer() { #[test] fn justification_is_emitted_when_consensus_data_changes() { - let mut runtime = current_thread::Runtime::new().unwrap(); + let mut runtime = Runtime::new().unwrap(); let peers = &[Ed25519Keyring::Alice, Ed25519Keyring::Bob, Ed25519Keyring::Charlie]; let mut net = GrandpaTestNet::new(TestApi::new(make_ids(peers)), 3); // import block#1 WITH consensus data change let new_authorities = vec![sp_consensus_babe::AuthorityId::from_slice(&[42; 32])]; net.peer(0).push_authorities_change_block(new_authorities); - net.block_until_sync(&mut runtime); + net.block_until_sync(); let net = Arc::new(Mutex::new(net)); run_to_completion(&mut runtime, 1, net.clone(), peers); @@ -777,13 +773,13 @@ fn justification_is_emitted_when_consensus_data_changes() { #[test] fn justification_is_generated_periodically() { - let mut runtime = current_thread::Runtime::new().unwrap(); + let mut runtime = Runtime::new().unwrap(); let peers = &[Ed25519Keyring::Alice, Ed25519Keyring::Bob, Ed25519Keyring::Charlie]; let voters = make_ids(peers); let mut net = GrandpaTestNet::new(TestApi::new(voters), 3); net.peer(0).push_blocks(32, false); - net.block_until_sync(&mut runtime); + net.block_until_sync(); let net = Arc::new(Mutex::new(net)); run_to_completion(&mut runtime, 32, net.clone(), peers); @@ -816,7 +812,7 @@ fn consensus_changes_works() { #[test] fn sync_justifications_on_change_blocks() { - let mut runtime = current_thread::Runtime::new().unwrap(); + let mut runtime = Runtime::new().unwrap(); let peers_a = &[Ed25519Keyring::Alice, Ed25519Keyring::Bob, Ed25519Keyring::Charlie]; let peers_b = &[Ed25519Keyring::Alice, Ed25519Keyring::Bob]; let voters = make_ids(peers_b); @@ -840,7 +836,7 @@ fn sync_justifications_on_change_blocks() { // add more blocks on top of it (until we have 25) net.peer(0).push_blocks(4, false); - net.block_until_sync(&mut runtime); + net.block_until_sync(); for i in 0..4 { assert_eq!(net.peer(i).client().info().best_number, 25, @@ -857,9 +853,9 @@ fn sync_justifications_on_change_blocks() { } // the last peer should get the justification by syncing from other peers - futures::executor::block_on(futures::future::poll_fn(move |_| { + futures::executor::block_on(futures::future::poll_fn(move |cx| { if net.lock().peer(3).client().justification(&BlockId::Number(21)).unwrap().is_none() { - net.lock().poll(); + net.lock().poll(cx); Poll::Pending } else { Poll::Ready(()) @@ -870,7 +866,7 @@ fn sync_justifications_on_change_blocks() { #[test] fn finalizes_multiple_pending_changes_in_order() { let _ = env_logger::try_init(); - let mut runtime = current_thread::Runtime::new().unwrap(); + let mut runtime = Runtime::new().unwrap(); let peers_a = &[Ed25519Keyring::Alice, Ed25519Keyring::Bob, Ed25519Keyring::Charlie]; let peers_b = &[Ed25519Keyring::Dave, Ed25519Keyring::Eve, Ed25519Keyring::Ferdie]; @@ -915,7 +911,7 @@ fn finalizes_multiple_pending_changes_in_order() { // add more blocks on top of it (until we have 30) net.peer(0).push_blocks(4, false); - net.block_until_sync(&mut runtime); + net.block_until_sync(); // all peers imported both change blocks for i in 0..6 { @@ -930,7 +926,7 @@ fn finalizes_multiple_pending_changes_in_order() { #[test] fn force_change_to_new_set() { let _ = env_logger::try_init(); - let mut runtime = current_thread::Runtime::new().unwrap(); + let mut runtime = Runtime::new().unwrap(); // two of these guys are offline. let genesis_authorities = &[ Ed25519Keyring::Alice, @@ -965,7 +961,7 @@ fn force_change_to_new_set() { }); net.lock().peer(0).push_blocks(25, false); - net.lock().block_until_sync(&mut runtime); + net.lock().block_until_sync(); for (i, peer) in net.lock().peers().iter().enumerate() { assert_eq!(peer.client().info().best_number, 26, @@ -1093,7 +1089,7 @@ fn voter_persists_its_votes() { use futures::channel::mpsc; let _ = env_logger::try_init(); - let mut runtime = current_thread::Runtime::new().unwrap(); + let mut runtime = Runtime::new().unwrap(); // we have two authorities but we'll only be running the voter for alice // we are going to be listening for the prevotes it casts @@ -1103,7 +1099,7 @@ fn voter_persists_its_votes() { // alice has a chain with 20 blocks let mut net = GrandpaTestNet::new(TestApi::new(voters.clone()), 2); net.peer(0).push_blocks(20, false); - net.block_until_sync(&mut runtime); + net.block_until_sync(); assert_eq!(net.peer(0).client().info().best_number, 20, "Peer #{} failed to sync", 0); @@ -1201,7 +1197,7 @@ fn voter_persists_its_votes() { net: net.clone(), client: client.clone(), keystore, - }.unit_error().compat()); + }); } let (exit_tx, exit_rx) = futures::channel::oneshot::channel::<()>(); @@ -1246,10 +1242,7 @@ fn voter_persists_its_votes() { HasVoted::No, ); - runtime.spawn( - network.map_err(|e| panic!("network bridge should not error: {:?}", e)) - .compat(), - ); + runtime.spawn(network); let round_tx = Arc::new(Mutex::new(round_tx)); let exit_tx = Arc::new(Mutex::new(Some(exit_tx))); @@ -1341,7 +1334,7 @@ fn voter_persists_its_votes() { panic!() } } - }).map(Ok).boxed().compat()); + })); } block_until_complete(exit_rx.into_future(), &net, &mut runtime); @@ -1350,13 +1343,13 @@ fn voter_persists_its_votes() { #[test] fn finalize_3_voters_1_light_observer() { let _ = env_logger::try_init(); - let mut runtime = current_thread::Runtime::new().unwrap(); + let mut runtime = Runtime::new().unwrap(); let authorities = &[Ed25519Keyring::Alice, Ed25519Keyring::Bob, Ed25519Keyring::Charlie]; let voters = make_ids(authorities); let mut net = GrandpaTestNet::new(TestApi::new(voters), 4); net.peer(0).push_blocks(20, false); - net.block_until_sync(&mut runtime); + net.block_until_sync(); for i in 0..4 { assert_eq!(net.peer(i).client().info().best_number, 20, @@ -1386,8 +1379,8 @@ fn finalize_3_voters_1_light_observer() { link, net.lock().peers[3].network_service().clone(), Exit, - ).unwrap().unit_error().compat() - ).unwrap(); + ).unwrap() + ); Some(Box::pin(finality_notifications.map(|_| ()))) }); @@ -1396,7 +1389,7 @@ fn finalize_3_voters_1_light_observer() { #[test] fn finality_proof_is_fetched_by_light_client_when_consensus_data_changes() { let _ = ::env_logger::try_init(); - let mut runtime = current_thread::Runtime::new().unwrap(); + let mut runtime = Runtime::new().unwrap(); let peers = &[Ed25519Keyring::Alice]; let mut net = GrandpaTestNet::new(TestApi::new(make_ids(peers)), 1); @@ -1407,18 +1400,17 @@ fn finality_proof_is_fetched_by_light_client_when_consensus_data_changes() { net.peer(0).push_authorities_change_block(vec![sp_consensus_babe::AuthorityId::from_slice(&[42; 32])]); let net = Arc::new(Mutex::new(net)); run_to_completion(&mut runtime, 1, net.clone(), peers); - net.lock().block_until_sync(&mut runtime); + net.lock().block_until_sync(); // check that the block#1 is finalized on light client - let mut runtime = current_thread::Runtime::new().unwrap(); - let _ = runtime.block_on(futures::future::poll_fn(move |_| { + runtime.block_on(futures::future::poll_fn(move |cx| { if net.lock().peer(1).client().info().finalized_number == 1 { Poll::Ready(()) } else { - net.lock().poll(); + net.lock().poll(cx); Poll::Pending } - }).unit_error().compat()); + })); } #[test] @@ -1427,7 +1419,7 @@ fn empty_finality_proof_is_returned_to_light_client_when_authority_set_is_differ const FORCE_CHANGE: bool = true; let _ = ::env_logger::try_init(); - let mut runtime = current_thread::Runtime::new().unwrap(); + let mut runtime = Runtime::new().unwrap(); // two of these guys are offline. let genesis_authorities = if FORCE_CHANGE { @@ -1472,14 +1464,14 @@ fn empty_finality_proof_is_returned_to_light_client_when_authority_set_is_differ vec![sp_consensus_babe::AuthorityId::from_slice(&[42; 32])] ); // #10 net.lock().peer(0).push_blocks(1, false); // best is #11 - net.lock().block_until_sync(&mut runtime); + net.lock().block_until_sync(); // finalize block #11 on full clients run_to_completion(&mut runtime, 11, net.clone(), peers_a); // request finalization by light client net.lock().add_light_peer(&GrandpaTestNet::default_config()); - net.lock().block_until_sync(&mut runtime); + net.lock().block_until_sync(); // check block, finalized on light client assert_eq!( @@ -1491,14 +1483,14 @@ fn empty_finality_proof_is_returned_to_light_client_when_authority_set_is_differ #[test] fn voter_catches_up_to_latest_round_when_behind() { let _ = env_logger::try_init(); - let mut runtime = current_thread::Runtime::new().unwrap(); + let mut runtime = Runtime::new().unwrap(); let peers = &[Ed25519Keyring::Alice, Ed25519Keyring::Bob]; let voters = make_ids(peers); let mut net = GrandpaTestNet::new(TestApi::new(voters), 3); net.peer(0).push_blocks(50, false); - net.block_until_sync(&mut runtime); + net.block_until_sync(); let net = Arc::new(Mutex::new(net)); let mut finality_notifications = Vec::new(); @@ -1548,19 +1540,18 @@ fn voter_catches_up_to_latest_round_when_behind() { let voter = voter(Some(keystore), peer_id, link, net.clone()); - runtime.spawn(voter.unit_error().compat()); + runtime.spawn(voter); } // wait for them to finalize block 50. since they'll vote on 3/4 of the // unfinalized chain it will take at least 4 rounds to do it. - let wait_for_finality = ::futures::future::join_all(finality_notifications) - .map(|_| ()); + let wait_for_finality = ::futures::future::join_all(finality_notifications); // spawn a new voter, it should be behind by at least 4 rounds and should be // able to catch up to the latest round let test = { let net = net.clone(); - let runtime = runtime.handle(); + let runtime = runtime.handle().clone(); wait_for_finality.then(move |_| { let peer_id = 2; @@ -1574,7 +1565,7 @@ fn voter_catches_up_to_latest_round_when_behind() { let voter = voter(None, peer_id, link, net); - runtime.spawn(voter.unit_error().compat()).unwrap(); + runtime.spawn(voter); let start_time = std::time::Instant::now(); let timeout = Duration::from_secs(5 * 60); @@ -1595,14 +1586,12 @@ fn voter_catches_up_to_latest_round_when_behind() { }) }; - let drive_to_completion = futures01::future::poll_fn(|| { - net.lock().poll(); Ok::, ()>(Async::NotReady) + let drive_to_completion = futures::future::poll_fn(|cx| { + net.lock().poll(cx); Poll::<()>::Pending }); runtime.block_on( - future::select(test, drive_to_completion.compat()) - .map(|_| Ok::<(), ()>(())) - .compat() - ).unwrap(); + future::select(test, drive_to_completion) + ); } #[test] diff --git a/client/network/test/Cargo.toml b/client/network/test/Cargo.toml index 54265f1736..7b749a6d31 100644 --- a/client/network/test/Cargo.toml +++ b/client/network/test/Cargo.toml @@ -13,8 +13,7 @@ repository = "https://github.com/paritytech/substrate/" sc-network = { version = "0.8.0-alpha.2", path = "../" } log = "0.4.8" parking_lot = "0.10.0" -futures = "0.1.29" -futures03 = { package = "futures", version = "0.3.1", features = ["compat"] } +futures = "0.3.1" futures-timer = "3.0.1" rand = "0.7.2" libp2p = { version = "0.16.1", default-features = false, features = ["libp2p-websocket"] } @@ -30,4 +29,3 @@ env_logger = "0.7.0" substrate-test-runtime-client = { version = "2.0.0-dev", path = "../../../test-utils/runtime/client" } substrate-test-runtime = { version = "2.0.0-dev", path = "../../../test-utils/runtime" } tempfile = "3.1.0" -tokio = "0.1.22" diff --git a/client/network/test/src/lib.rs b/client/network/test/src/lib.rs index 8dc8aff14d..94eeb8e5fb 100644 --- a/client/network/test/src/lib.rs +++ b/client/network/test/src/lib.rs @@ -21,7 +21,7 @@ mod block_import; #[cfg(test)] mod sync; -use std::{collections::HashMap, pin::Pin, sync::Arc, marker::PhantomData}; +use std::{collections::HashMap, pin::Pin, sync::Arc, marker::PhantomData, task::{Poll, Context as FutureContext}}; use libp2p::build_multiaddr; use log::trace; @@ -46,7 +46,6 @@ use sp_consensus::block_import::{BlockImport, ImportResult}; use sp_consensus::Error as ConsensusError; use sp_consensus::{BlockOrigin, ForkChoiceStrategy, BlockImportParams, BlockCheckParams, JustificationImport}; use futures::prelude::*; -use futures03::{Future as _, FutureExt as _, TryFutureExt as _, StreamExt as _, TryStreamExt as _}; use sc_network::{NetworkWorker, NetworkStateInfo, NetworkService, ReportHandle, config::ProtocolId}; use sc_network::config::{NetworkConfiguration, TransportConfig, BoxFinalityProofRequestBuilder}; use libp2p::PeerId; @@ -187,8 +186,8 @@ pub struct Peer { select_chain: Option>, backend: Option>, network: NetworkWorker::Hash>, - imported_blocks_stream: Box, Error = ()> + Send>, - finality_notification_stream: Box, Error = ()> + Send>, + imported_blocks_stream: Pin> + Send>>, + finality_notification_stream: Pin> + Send>>, } impl Peer { @@ -649,10 +648,8 @@ pub trait TestNetFactory: Sized { peer.network.add_known_address(network.service().local_peer_id(), listen_addr.clone()); } - let imported_blocks_stream = Box::new(client.import_notification_stream() - .map(|v| Ok::<_, ()>(v)).compat().fuse()); - let finality_notification_stream = Box::new(client.finality_notification_stream() - .map(|v| Ok::<_, ()>(v)).compat().fuse()); + let imported_blocks_stream = Box::pin(client.import_notification_stream().fuse()); + let finality_notification_stream = Box::pin(client.finality_notification_stream().fuse()); peers.push(Peer { data, @@ -724,10 +721,8 @@ pub trait TestNetFactory: Sized { peer.network.add_known_address(network.service().local_peer_id(), listen_addr.clone()); } - let imported_blocks_stream = Box::new(client.import_notification_stream() - .map(|v| Ok::<_, ()>(v)).compat().fuse()); - let finality_notification_stream = Box::new(client.finality_notification_stream() - .map(|v| Ok::<_, ()>(v)).compat().fuse()); + let imported_blocks_stream = Box::pin(client.import_notification_stream().fuse()); + let finality_notification_stream = Box::pin(client.finality_notification_stream().fuse()); peers.push(Peer { data, @@ -746,70 +741,70 @@ pub trait TestNetFactory: Sized { /// Polls the testnet until all nodes are in sync. /// /// Must be executed in a task context. - fn poll_until_sync(&mut self) -> Async<()> { - self.poll(); + fn poll_until_sync(&mut self, cx: &mut FutureContext) -> Poll<()> { + self.poll(cx); // Return `NotReady` if there's a mismatch in the highest block number. let mut highest = None; for peer in self.peers().iter() { if peer.is_major_syncing() || peer.network.num_queued_blocks() != 0 { - return Async::NotReady + return Poll::Pending } if peer.network.num_sync_requests() != 0 { - return Async::NotReady + return Poll::Pending } match (highest, peer.client.info().best_hash) { (None, b) => highest = Some(b), (Some(ref a), ref b) if a == b => {}, - (Some(_), _) => return Async::NotReady, + (Some(_), _) => return Poll::Pending } } - Async::Ready(()) + Poll::Ready(()) } /// Polls the testnet until theres' no activiy of any kind. /// /// Must be executed in a task context. - fn poll_until_idle(&mut self) -> Async<()> { - self.poll(); + fn poll_until_idle(&mut self, cx: &mut FutureContext) -> Poll<()> { + self.poll(cx); for peer in self.peers().iter() { if peer.is_major_syncing() || peer.network.num_queued_blocks() != 0 { - return Async::NotReady + return Poll::Pending } if peer.network.num_sync_requests() != 0 { - return Async::NotReady + return Poll::Pending } } - Async::Ready(()) + Poll::Ready(()) } /// Blocks the current thread until we are sync'ed. /// - /// Calls `poll_until_sync` repeatedly with the runtime passed as parameter. - fn block_until_sync(&mut self, runtime: &mut tokio::runtime::current_thread::Runtime) { - runtime.block_on(futures::future::poll_fn::<(), (), _>(|| Ok(self.poll_until_sync()))).unwrap(); + /// Calls `poll_until_sync` repeatedly. + fn block_until_sync(&mut self) { + futures::executor::block_on(futures::future::poll_fn::<(), _>(|cx| self.poll_until_sync(cx))); } /// Blocks the current thread until there are no pending packets. /// /// Calls `poll_until_idle` repeatedly with the runtime passed as parameter. - fn block_until_idle(&mut self, runtime: &mut tokio::runtime::current_thread::Runtime) { - runtime.block_on(futures::future::poll_fn::<(), (), _>(|| Ok(self.poll_until_idle()))).unwrap(); + fn block_until_idle(&mut self) { + futures::executor::block_on(futures::future::poll_fn::<(), _>(|cx| self.poll_until_idle(cx))); } /// Polls the testnet. Processes all the pending actions and returns `NotReady`. - fn poll(&mut self) { + fn poll(&mut self, cx: &mut FutureContext) { self.mut_peers(|peers| { for peer in peers { trace!(target: "sync", "-- Polling {}", peer.id()); - futures03::future::poll_fn(|cx| Pin::new(&mut peer.network).poll(cx)) - .map(|item| Ok::<_, ()>(item)) - .compat().poll().unwrap(); + if let Poll::Ready(res) = Pin::new(&mut peer.network).poll(cx) { + res.unwrap(); + } trace!(target: "sync", "-- Polling complete {}", peer.id()); // We poll `imported_blocks_stream`. - while let Ok(Async::Ready(Some(notification))) = peer.imported_blocks_stream.poll() { + while let Poll::Ready(Some(notification)) = peer.imported_blocks_stream.as_mut().poll_next(cx) { peer.network.on_block_imported( notification.header, Vec::new(), @@ -819,7 +814,7 @@ pub trait TestNetFactory: Sized { // We poll `finality_notification_stream`, but we only take the last event. let mut last = None; - while let Ok(Async::Ready(Some(item))) = peer.finality_notification_stream.poll() { + while let Poll::Ready(Some(item)) = peer.finality_notification_stream.as_mut().poll_next(cx) { last = Some(item); } if let Some(notification) = last { diff --git a/client/network/test/src/sync.rs b/client/network/test/src/sync.rs index 2094ddae60..3882575168 100644 --- a/client/network/test/src/sync.rs +++ b/client/network/test/src/sync.rs @@ -16,14 +16,12 @@ use sc_network::config::Roles; use sp_consensus::BlockOrigin; -use futures03::TryFutureExt as _; use std::time::Duration; -use tokio::runtime::current_thread; +use futures::executor::block_on; use super::*; fn test_ancestor_search_when_common_is(n: usize) { let _ = ::env_logger::try_init(); - let mut runtime = current_thread::Runtime::new().unwrap(); let mut net = TestNet::new(3); net.peer(0).push_blocks(n, false); @@ -34,7 +32,7 @@ fn test_ancestor_search_when_common_is(n: usize) { net.peer(1).push_blocks(100, false); net.peer(2).push_blocks(100, false); - net.block_until_sync(&mut runtime); + net.block_until_sync(); let peer1 = &net.peers()[1]; assert!(net.peers()[0].blockchain_canon_equals(peer1)); } @@ -42,24 +40,22 @@ fn test_ancestor_search_when_common_is(n: usize) { #[test] fn sync_peers_works() { let _ = ::env_logger::try_init(); - let mut runtime = current_thread::Runtime::new().unwrap(); let mut net = TestNet::new(3); - runtime.block_on(futures::future::poll_fn::<(), (), _>(|| -> Result<_, ()> { - net.poll(); + block_on(futures::future::poll_fn::<(), _>(|cx| { + net.poll(cx); for peer in 0..3 { if net.peer(peer).num_peers() != 2 { - return Ok(Async::NotReady) + return Poll::Pending } } - Ok(Async::Ready(())) - })).unwrap(); + Poll::Ready(()) + })); } #[test] fn sync_cycle_from_offline_to_syncing_to_offline() { let _ = ::env_logger::try_init(); - let mut runtime = current_thread::Runtime::new().unwrap(); let mut net = TestNet::new(3); for peer in 0..3 { // Offline, and not major syncing. @@ -71,51 +67,50 @@ fn sync_cycle_from_offline_to_syncing_to_offline() { net.peer(2).push_blocks(100, false); // Block until all nodes are online and nodes 0 and 1 and major syncing. - runtime.block_on(futures::future::poll_fn::<(), (), _>(|| -> Result<_, ()> { - net.poll(); + block_on(futures::future::poll_fn::<(), _>(|cx| { + net.poll(cx); for peer in 0..3 { // Online if net.peer(peer).is_offline() { - return Ok(Async::NotReady) + return Poll::Pending } if peer < 2 { // Major syncing. if net.peer(peer).blocks_count() < 100 && !net.peer(peer).is_major_syncing() { - return Ok(Async::NotReady) + return Poll::Pending } } } - Ok(Async::Ready(())) - })).unwrap(); + Poll::Ready(()) + })); // Block until all nodes are done syncing. - runtime.block_on(futures::future::poll_fn::<(), (), _>(|| -> Result<_, ()> { - net.poll(); + block_on(futures::future::poll_fn::<(), _>(|cx| { + net.poll(cx); for peer in 0..3 { if net.peer(peer).is_major_syncing() { - return Ok(Async::NotReady) + return Poll::Pending } } - Ok(Async::Ready(())) - })).unwrap(); + Poll::Ready(()) + })); // Now drop nodes 1 and 2, and check that node 0 is offline. net.peers.remove(2); net.peers.remove(1); - runtime.block_on(futures::future::poll_fn::<(), (), _>(|| -> Result<_, ()> { - net.poll(); + block_on(futures::future::poll_fn::<(), _>(|cx| { + net.poll(cx); if !net.peer(0).is_offline() { - Ok(Async::NotReady) + Poll::Pending } else { - Ok(Async::Ready(())) + Poll::Ready(()) } - })).unwrap(); + })); } #[test] fn syncing_node_not_major_syncing_when_disconnected() { let _ = ::env_logger::try_init(); - let mut runtime = current_thread::Runtime::new().unwrap(); let mut net = TestNet::new(3); // Generate blocks. @@ -125,36 +120,35 @@ fn syncing_node_not_major_syncing_when_disconnected() { assert!(!net.peer(1).is_major_syncing()); // Check that we switch to major syncing. - runtime.block_on(futures::future::poll_fn::<(), (), _>(|| -> Result<_, ()> { - net.poll(); + block_on(futures::future::poll_fn::<(), _>(|cx| { + net.poll(cx); if !net.peer(1).is_major_syncing() { - Ok(Async::NotReady) + Poll::Pending } else { - Ok(Async::Ready(())) + Poll::Ready(()) } - })).unwrap(); + })); // Destroy two nodes, and check that we switch to non-major syncing. net.peers.remove(2); net.peers.remove(0); - runtime.block_on(futures::future::poll_fn::<(), (), _>(|| -> Result<_, ()> { - net.poll(); + block_on(futures::future::poll_fn::<(), _>(|cx| { + net.poll(cx); if net.peer(0).is_major_syncing() { - Ok(Async::NotReady) + Poll::Pending } else { - Ok(Async::Ready(())) + Poll::Ready(()) } - })).unwrap(); + })); } #[test] fn sync_from_two_peers_works() { let _ = ::env_logger::try_init(); - let mut runtime = current_thread::Runtime::new().unwrap(); let mut net = TestNet::new(3); net.peer(1).push_blocks(100, false); net.peer(2).push_blocks(100, false); - net.block_until_sync(&mut runtime); + net.block_until_sync(); let peer1 = &net.peers()[1]; assert!(net.peers()[0].blockchain_canon_equals(peer1)); assert!(!net.peer(0).is_major_syncing()); @@ -163,12 +157,11 @@ fn sync_from_two_peers_works() { #[test] fn sync_from_two_peers_with_ancestry_search_works() { let _ = ::env_logger::try_init(); - let mut runtime = current_thread::Runtime::new().unwrap(); let mut net = TestNet::new(3); net.peer(0).push_blocks(10, true); net.peer(1).push_blocks(100, false); net.peer(2).push_blocks(100, false); - net.block_until_sync(&mut runtime); + net.block_until_sync(); let peer1 = &net.peers()[1]; assert!(net.peers()[0].blockchain_canon_equals(peer1)); } @@ -176,14 +169,13 @@ fn sync_from_two_peers_with_ancestry_search_works() { #[test] fn ancestry_search_works_when_backoff_is_one() { let _ = ::env_logger::try_init(); - let mut runtime = current_thread::Runtime::new().unwrap(); let mut net = TestNet::new(3); net.peer(0).push_blocks(1, false); net.peer(1).push_blocks(2, false); net.peer(2).push_blocks(2, false); - net.block_until_sync(&mut runtime); + net.block_until_sync(); let peer1 = &net.peers()[1]; assert!(net.peers()[0].blockchain_canon_equals(peer1)); } @@ -191,14 +183,13 @@ fn ancestry_search_works_when_backoff_is_one() { #[test] fn ancestry_search_works_when_ancestor_is_genesis() { let _ = ::env_logger::try_init(); - let mut runtime = current_thread::Runtime::new().unwrap(); let mut net = TestNet::new(3); net.peer(0).push_blocks(13, true); net.peer(1).push_blocks(100, false); net.peer(2).push_blocks(100, false); - net.block_until_sync(&mut runtime); + net.block_until_sync(); let peer1 = &net.peers()[1]; assert!(net.peers()[0].blockchain_canon_equals(peer1)); } @@ -221,10 +212,9 @@ fn ancestry_search_works_when_common_is_hundred() { #[test] fn sync_long_chain_works() { let _ = ::env_logger::try_init(); - let mut runtime = current_thread::Runtime::new().unwrap(); let mut net = TestNet::new(2); net.peer(1).push_blocks(500, false); - net.block_until_sync(&mut runtime); + net.block_until_sync(); let peer1 = &net.peers()[1]; assert!(net.peers()[0].blockchain_canon_equals(peer1)); } @@ -232,18 +222,17 @@ fn sync_long_chain_works() { #[test] fn sync_no_common_longer_chain_fails() { let _ = ::env_logger::try_init(); - let mut runtime = current_thread::Runtime::new().unwrap(); let mut net = TestNet::new(3); net.peer(0).push_blocks(20, true); net.peer(1).push_blocks(20, false); - runtime.block_on(futures::future::poll_fn::<(), (), _>(|| -> Result<_, ()> { - net.poll(); + block_on(futures::future::poll_fn::<(), _>(|cx| { + net.poll(cx); if net.peer(0).is_major_syncing() { - Ok(Async::NotReady) + Poll::Pending } else { - Ok(Async::Ready(())) + Poll::Ready(()) } - })).unwrap(); + })); let peer1 = &net.peers()[1]; assert!(!net.peers()[0].blockchain_canon_equals(peer1)); } @@ -251,10 +240,9 @@ fn sync_no_common_longer_chain_fails() { #[test] fn sync_justifications() { let _ = ::env_logger::try_init(); - let mut runtime = current_thread::Runtime::new().unwrap(); let mut net = JustificationTestNet::new(3); net.peer(0).push_blocks(20, false); - net.block_until_sync(&mut runtime); + net.block_until_sync(); // there's currently no justification for block #10 assert_eq!(net.peer(0).client().justification(&BlockId::Number(10)).unwrap(), None); @@ -274,26 +262,25 @@ fn sync_justifications() { net.peer(1).request_justification(&h2.hash().into(), 15); net.peer(1).request_justification(&h3.hash().into(), 20); - runtime.block_on(futures::future::poll_fn::<(), (), _>(|| { - net.poll(); + block_on(futures::future::poll_fn::<(), _>(|cx| { + net.poll(cx); for height in (10..21).step_by(5) { if net.peer(0).client().justification(&BlockId::Number(height)).unwrap() != Some(Vec::new()) { - return Ok(Async::NotReady); + return Poll::Pending; } if net.peer(1).client().justification(&BlockId::Number(height)).unwrap() != Some(Vec::new()) { - return Ok(Async::NotReady); + return Poll::Pending; } } - Ok(Async::Ready(())) - })).unwrap(); + Poll::Ready(()) + })); } #[test] fn sync_justifications_across_forks() { let _ = ::env_logger::try_init(); - let mut runtime = current_thread::Runtime::new().unwrap(); let mut net = JustificationTestNet::new(3); // we push 5 blocks net.peer(0).push_blocks(5, false); @@ -303,30 +290,29 @@ fn sync_justifications_across_forks() { // peer 1 will only see the longer fork. but we'll request justifications // for both and finalize the small fork instead. - net.block_until_sync(&mut runtime); + net.block_until_sync(); net.peer(0).client().finalize_block(BlockId::Hash(f1_best), Some(Vec::new()), true).unwrap(); net.peer(1).request_justification(&f1_best, 10); net.peer(1).request_justification(&f2_best, 11); - runtime.block_on(futures::future::poll_fn::<(), (), _>(|| { - net.poll(); + block_on(futures::future::poll_fn::<(), _>(|cx| { + net.poll(cx); if net.peer(0).client().justification(&BlockId::Number(10)).unwrap() == Some(Vec::new()) && net.peer(1).client().justification(&BlockId::Number(10)).unwrap() == Some(Vec::new()) { - Ok(Async::Ready(())) + Poll::Ready(()) } else { - Ok(Async::NotReady) + Poll::Pending } - })).unwrap(); + })); } #[test] fn sync_after_fork_works() { let _ = ::env_logger::try_init(); - let mut runtime = current_thread::Runtime::new().unwrap(); let mut net = TestNet::new(3); net.peer(0).push_blocks(30, false); net.peer(1).push_blocks(30, false); @@ -340,7 +326,7 @@ fn sync_after_fork_works() { net.peer(2).push_blocks(1, false); // peer 1 has the best chain - net.block_until_sync(&mut runtime); + net.block_until_sync(); let peer1 = &net.peers()[1]; assert!(net.peers()[0].blockchain_canon_equals(peer1)); (net.peers()[1].blockchain_canon_equals(peer1)); @@ -350,7 +336,6 @@ fn sync_after_fork_works() { #[test] fn syncs_all_forks() { let _ = ::env_logger::try_init(); - let mut runtime = current_thread::Runtime::new().unwrap(); let mut net = TestNet::new(4); net.peer(0).push_blocks(2, false); net.peer(1).push_blocks(2, false); @@ -358,7 +343,7 @@ fn syncs_all_forks() { net.peer(0).push_blocks(2, true); net.peer(1).push_blocks(4, false); - net.block_until_sync(&mut runtime); + net.block_until_sync(); // Check that all peers have all of the blocks. assert_eq!(9, net.peer(0).blocks_count()); assert_eq!(9, net.peer(1).blocks_count()); @@ -367,12 +352,11 @@ fn syncs_all_forks() { #[test] fn own_blocks_are_announced() { let _ = ::env_logger::try_init(); - let mut runtime = current_thread::Runtime::new().unwrap(); let mut net = TestNet::new(3); - net.block_until_sync(&mut runtime); // connect'em + net.block_until_sync(); // connect'em net.peer(0).generate_blocks(1, BlockOrigin::Own, |builder| builder.build().unwrap().block); - net.block_until_sync(&mut runtime); + net.block_until_sync(); assert_eq!(net.peer(0).client.info().best_number, 1); assert_eq!(net.peer(1).client.info().best_number, 1); @@ -384,7 +368,6 @@ fn own_blocks_are_announced() { #[test] fn blocks_are_not_announced_by_light_nodes() { let _ = ::env_logger::try_init(); - let mut runtime = current_thread::Runtime::new().unwrap(); let mut net = TestNet::new(0); // full peer0 is connected to light peer @@ -397,7 +380,7 @@ fn blocks_are_not_announced_by_light_nodes() { // Sync between 0 and 1. net.peer(0).push_blocks(1, false); assert_eq!(net.peer(0).client.info().best_number, 1); - net.block_until_sync(&mut runtime); + net.block_until_sync(); assert_eq!(net.peer(1).client.info().best_number, 1); // Add another node and remove node 0. @@ -405,18 +388,17 @@ fn blocks_are_not_announced_by_light_nodes() { net.peers.remove(0); // Poll for a few seconds and make sure 1 and 2 (now 0 and 1) don't sync together. - let mut delay = futures_timer::Delay::new(Duration::from_secs(5)).unit_error().compat(); - runtime.block_on(futures::future::poll_fn::<(), (), _>(|| { - net.poll(); - delay.poll().map_err(|_| ()) - })).unwrap(); + let mut delay = futures_timer::Delay::new(Duration::from_secs(5)); + block_on(futures::future::poll_fn::<(), _>(|cx| { + net.poll(cx); + Pin::new(&mut delay).poll(cx) + })); assert_eq!(net.peer(1).client.info().best_number, 0); } #[test] fn can_sync_small_non_best_forks() { let _ = ::env_logger::try_init(); - let mut runtime = current_thread::Runtime::new().unwrap(); let mut net = TestNet::new(2); net.peer(0).push_blocks(30, false); net.peer(1).push_blocks(30, false); @@ -435,14 +417,14 @@ fn can_sync_small_non_best_forks() { assert!(net.peer(1).client().header(&BlockId::Hash(small_hash)).unwrap().is_none()); // poll until the two nodes connect, otherwise announcing the block will not work - runtime.block_on(futures::future::poll_fn::<(), (), _>(|| -> Result<_, ()> { - net.poll(); + block_on(futures::future::poll_fn::<(), _>(|cx| { + net.poll(cx); if net.peer(0).num_peers() == 0 { - Ok(Async::NotReady) + Poll::Pending } else { - Ok(Async::Ready(())) + Poll::Ready(()) } - })).unwrap(); + })); // synchronization: 0 synced to longer chain and 1 didn't sync to small chain. @@ -455,32 +437,31 @@ fn can_sync_small_non_best_forks() { // after announcing, peer 1 downloads the block. - runtime.block_on(futures::future::poll_fn::<(), (), _>(|| -> Result<_, ()> { - net.poll(); + block_on(futures::future::poll_fn::<(), _>(|cx| { + net.poll(cx); assert!(net.peer(0).client().header(&BlockId::Hash(small_hash)).unwrap().is_some()); if net.peer(1).client().header(&BlockId::Hash(small_hash)).unwrap().is_none() { - return Ok(Async::NotReady) + return Poll::Pending } - Ok(Async::Ready(())) - })).unwrap(); - net.block_until_sync(&mut runtime); + Poll::Ready(()) + })); + net.block_until_sync(); let another_fork = net.peer(0).push_blocks_at(BlockId::Number(35), 2, true); net.peer(0).announce_block(another_fork, Vec::new()); - runtime.block_on(futures::future::poll_fn::<(), (), _>(|| -> Result<_, ()> { - net.poll(); + block_on(futures::future::poll_fn::<(), _>(|cx| { + net.poll(cx); if net.peer(1).client().header(&BlockId::Hash(another_fork)).unwrap().is_none() { - return Ok(Async::NotReady) + return Poll::Pending } - Ok(Async::Ready(())) - })).unwrap(); + Poll::Ready(()) + })); } #[test] fn can_not_sync_from_light_peer() { let _ = ::env_logger::try_init(); - let mut runtime = current_thread::Runtime::new().unwrap(); // given the network with 1 full nodes (#0) and 1 light node (#1) let mut net = TestNet::new(1); @@ -490,7 +471,7 @@ fn can_not_sync_from_light_peer() { net.peer(0).push_blocks(1, false); // and let the light client sync from this node - net.block_until_sync(&mut runtime); + net.block_until_sync(); // ensure #0 && #1 have the same best block let full0_info = net.peer(0).client.info(); @@ -504,29 +485,28 @@ fn can_not_sync_from_light_peer() { net.peers.remove(0); // ensure that the #2 (now #1) fails to sync block #1 even after 5 seconds - let mut test_finished = futures_timer::Delay::new(Duration::from_secs(5)).unit_error().compat(); - runtime.block_on(futures::future::poll_fn::<(), (), _>(|| -> Result<_, ()> { - net.poll(); - test_finished.poll().map_err(|_| ()) - })).unwrap(); + let mut test_finished = futures_timer::Delay::new(Duration::from_secs(5)); + block_on(futures::future::poll_fn::<(), _>(|cx| { + net.poll(cx); + Pin::new(&mut test_finished).poll(cx) + })); } #[test] fn light_peer_imports_header_from_announce() { let _ = ::env_logger::try_init(); - let mut runtime = current_thread::Runtime::new().unwrap(); - fn import_with_announce(net: &mut TestNet, runtime: &mut current_thread::Runtime, hash: H256) { + fn import_with_announce(net: &mut TestNet, hash: H256) { net.peer(0).announce_block(hash, Vec::new()); - runtime.block_on(futures::future::poll_fn::<(), (), _>(|| { - net.poll(); + block_on(futures::future::poll_fn::<(), _>(|cx| { + net.poll(cx); if net.peer(1).client().header(&BlockId::Hash(hash)).unwrap().is_some() { - Ok(Async::Ready(())) + Poll::Ready(()) } else { - Ok(Async::NotReady) + Poll::Pending } - })).unwrap(); + })); } // given the network with 1 full nodes (#0) and 1 light node (#1) @@ -534,21 +514,20 @@ fn light_peer_imports_header_from_announce() { net.add_light_peer(&Default::default()); // let them connect to each other - net.block_until_sync(&mut runtime); + net.block_until_sync(); // check that NEW block is imported from announce message let new_hash = net.peer(0).push_blocks(1, false); - import_with_announce(&mut net, &mut runtime, new_hash); + import_with_announce(&mut net, new_hash); // check that KNOWN STALE block is imported from announce message let known_stale_hash = net.peer(0).push_blocks_at(BlockId::Number(0), 1, true); - import_with_announce(&mut net, &mut runtime, known_stale_hash); + import_with_announce(&mut net, known_stale_hash); } #[test] fn can_sync_explicit_forks() { let _ = ::env_logger::try_init(); - let mut runtime = current_thread::Runtime::new().unwrap(); let mut net = TestNet::new(2); net.peer(0).push_blocks(30, false); net.peer(1).push_blocks(30, false); @@ -568,14 +547,14 @@ fn can_sync_explicit_forks() { assert!(net.peer(1).client().header(&BlockId::Hash(small_hash)).unwrap().is_none()); // poll until the two nodes connect, otherwise announcing the block will not work - runtime.block_on(futures::future::poll_fn::<(), (), _>(|| -> Result<_, ()> { - net.poll(); + block_on(futures::future::poll_fn::<(), _>(|cx| { + net.poll(cx); if net.peer(0).num_peers() == 0 || net.peer(1).num_peers() == 0 { - Ok(Async::NotReady) + Poll::Pending } else { - Ok(Async::Ready(())) + Poll::Ready(()) } - })).unwrap(); + })); // synchronization: 0 synced to longer chain and 1 didn't sync to small chain. @@ -589,21 +568,20 @@ fn can_sync_explicit_forks() { net.peer(1).set_sync_fork_request(vec![first_peer_id], small_hash, small_number); // peer 1 downloads the block. - runtime.block_on(futures::future::poll_fn::<(), (), _>(|| -> Result<_, ()> { - net.poll(); + block_on(futures::future::poll_fn::<(), _>(|cx| { + net.poll(cx); assert!(net.peer(0).client().header(&BlockId::Hash(small_hash)).unwrap().is_some()); if net.peer(1).client().header(&BlockId::Hash(small_hash)).unwrap().is_none() { - return Ok(Async::NotReady) + return Poll::Pending } - Ok(Async::Ready(())) - })).unwrap(); + Poll::Ready(()) + })); } #[test] fn syncs_header_only_forks() { let _ = ::env_logger::try_init(); - let mut runtime = current_thread::Runtime::new().unwrap(); let mut net = TestNet::new(0); let config = ProtocolConfig::default(); net.add_full_peer_with_states(&config, None); @@ -616,7 +594,7 @@ fn syncs_header_only_forks() { let small_number = net.peer(0).client().info().best_number; net.peer(1).push_blocks(4, false); - net.block_until_sync(&mut runtime); + net.block_until_sync(); // Peer 1 will sync the small fork even though common block state is missing assert_eq!(9, net.peer(0).blocks_count()); assert_eq!(9, net.peer(1).blocks_count()); @@ -624,19 +602,18 @@ fn syncs_header_only_forks() { // Request explicit header-only sync request for the ancient fork. let first_peer_id = net.peer(0).id(); net.peer(1).set_sync_fork_request(vec![first_peer_id], small_hash, small_number); - runtime.block_on(futures::future::poll_fn::<(), (), _>(|| -> Result<_, ()> { - net.poll(); + block_on(futures::future::poll_fn::<(), _>(|cx| { + net.poll(cx); if net.peer(1).client().header(&BlockId::Hash(small_hash)).unwrap().is_none() { - return Ok(Async::NotReady) + return Poll::Pending } - Ok(Async::Ready(())) - })).unwrap(); + Poll::Ready(()) + })); } #[test] fn does_not_sync_announced_old_best_block() { let _ = ::env_logger::try_init(); - let mut runtime = current_thread::Runtime::new().unwrap(); let mut net = TestNet::new(3); let old_hash = net.peer(0).push_blocks(1, false); @@ -645,19 +622,19 @@ fn does_not_sync_announced_old_best_block() { net.peer(1).push_blocks(20, true); net.peer(0).announce_block(old_hash, Vec::new()); - runtime.block_on(futures::future::poll_fn::<(), (), _>(|| -> Result<_, ()> { + block_on(futures::future::poll_fn::<(), _>(|cx| { // poll once to import announcement - net.poll(); - Ok(Async::Ready(())) - })).unwrap(); + net.poll(cx); + Poll::Ready(()) + })); assert!(!net.peer(1).is_major_syncing()); net.peer(0).announce_block(old_hash_with_parent, Vec::new()); - runtime.block_on(futures::future::poll_fn::<(), (), _>(|| -> Result<_, ()> { + block_on(futures::future::poll_fn::<(), _>(|cx| { // poll once to import announcement - net.poll(); - Ok(Async::Ready(())) - })).unwrap(); + net.poll(cx); + Poll::Ready(()) + })); assert!(!net.peer(1).is_major_syncing()); } @@ -665,19 +642,18 @@ fn does_not_sync_announced_old_best_block() { fn full_sync_requires_block_body() { // Check that we don't sync headers-only in full mode. let _ = ::env_logger::try_init(); - let mut runtime = current_thread::Runtime::new().unwrap(); let mut net = TestNet::new(2); net.peer(0).push_headers(1); // Wait for nodes to connect - runtime.block_on(futures::future::poll_fn::<(), (), _>(|| -> Result<_, ()> { - net.poll(); + block_on(futures::future::poll_fn::<(), _>(|cx| { + net.poll(cx); if net.peer(0).num_peers() == 0 || net.peer(1).num_peers() == 0 { - Ok(Async::NotReady) + Poll::Pending } else { - Ok(Async::Ready(())) + Poll::Ready(()) } - })).unwrap(); - net.block_until_idle(&mut runtime); + })); + net.block_until_idle(); assert_eq!(net.peer(1).client.info().best_number, 0); } diff --git a/client/service/Cargo.toml b/client/service/Cargo.toml index e7c55fae02..80ba12ca00 100644 --- a/client/service/Cargo.toml +++ b/client/service/Cargo.toml @@ -66,4 +66,3 @@ substrate-test-runtime-client = { version = "2.0.0-dev", path = "../../test-util sp-consensus-babe = { version = "0.8.0-alpha.2", path = "../../primitives/consensus/babe" } grandpa = { version = "0.8.0-alpha.2", package = "sc-finality-grandpa", path = "../finality-grandpa" } grandpa-primitives = { version = "2.0.0-alpha.2", package = "sp-finality-grandpa", path = "../../primitives/finality-grandpa" } -tokio = { version = "0.2", features = ["rt-core"] } diff --git a/client/service/src/lib.rs b/client/service/src/lib.rs index 99b4545341..c4678eb28d 100644 --- a/client/service/src/lib.rs +++ b/client/service/src/lib.rs @@ -116,6 +116,8 @@ pub struct Service { marker: PhantomData, } +impl Unpin for Service {} + /// Alias for a an implementation of `futures::future::Executor`. pub type TaskExecutor = Arc; @@ -229,7 +231,7 @@ impl AbstractService for Service, TSc, NetworkStatus, NetworkService, TExPool, TOc> where - TBl: BlockT + Unpin, + TBl: BlockT, TBackend: 'static + sc_client_api::backend::Backend, TExec: 'static + sc_client::CallExecutor + Send + Sync + Clone, TRtApi: 'static + Send + Sync, @@ -328,7 +330,7 @@ where } } -impl Future for +impl Future for Service { type Output = Result<(), Error>; diff --git a/client/service/src/status_sinks.rs b/client/service/src/status_sinks.rs index de5fe86573..8e189be157 100644 --- a/client/service/src/status_sinks.rs +++ b/client/service/src/status_sinks.rs @@ -122,28 +122,17 @@ mod tests { let (tx, rx) = mpsc::unbounded(); status_sinks.push(Duration::from_millis(100), tx); - let mut runtime = tokio::runtime::Runtime::new().unwrap(); - let mut val_order = 5; - runtime.spawn(futures::future::poll_fn(move |cx| { - status_sinks.poll(cx, || { val_order += 1; val_order }); - Poll::<()>::Pending - })); - - let done = rx - .into_future() - .then(|(item, rest)| { - assert_eq!(item, Some(6)); - rest.into_future() - }) - .then(|(item, rest)| { - assert_eq!(item, Some(7)); - rest.into_future() - }) - .map(|(item, _)| { - assert_eq!(item, Some(8)); - }); - runtime.block_on(done); + futures::executor::block_on(futures::future::select( + futures::future::poll_fn(move |cx| { + status_sinks.poll(cx, || { val_order += 1; val_order }); + Poll::<()>::Pending + }), + Box::pin(async { + let items: Vec = rx.take(3).collect().await; + assert_eq!(items, [6, 7, 8]); + }) + )); } } diff --git a/utils/frame/rpc/support/Cargo.toml b/utils/frame/rpc/support/Cargo.toml index 1f448816e0..162d25cf9b 100644 --- a/utils/frame/rpc/support/Cargo.toml +++ b/utils/frame/rpc/support/Cargo.toml @@ -20,4 +20,4 @@ sc-rpc-api = { version = "0.8.0-alpha.2", path = "../../../../client/rpc-api" } [dev-dependencies] frame-system = { version = "2.0.0-alpha.2", path = "../../../../frame/system" } -tokio = "0.1" +tokio = "0.2" diff --git a/utils/frame/rpc/support/src/lib.rs b/utils/frame/rpc/support/src/lib.rs index a9982945e7..42c10fb2cc 100644 --- a/utils/frame/rpc/support/src/lib.rs +++ b/utils/frame/rpc/support/src/lib.rs @@ -33,9 +33,7 @@ use sc_rpc_api::state::StateClient; /// A typed query on chain state usable from an RPC client. /// /// ```no_run -/// # use futures::compat::Compat; /// # use futures::compat::Future01CompatExt; -/// # use futures::future::FutureExt; /// # use jsonrpc_client_transports::RpcError; /// # use jsonrpc_client_transports::transports::http; /// # use codec::Encode; @@ -49,7 +47,7 @@ use sc_rpc_api::state::StateClient; /// # type Hash = (); /// # /// # fn main() -> Result<(), RpcError> { -/// # tokio::runtime::Runtime::new().unwrap().block_on(Compat::new(test().boxed())) +/// # tokio::runtime::Runtime::new().unwrap().block_on(test()) /// # } /// # /// # struct TestRuntime; -- GitLab From 7be2268863c36d827ce4c2d685c17deb16ebb071 Mon Sep 17 00:00:00 2001 From: kianenigma Date: Mon, 2 Mar 2020 08:49:00 +0100 Subject: [PATCH 070/301] Fix nominator retain test --- frame/staking/src/tests.rs | 31 ++++++++++++++++++++++++++----- 1 file changed, 26 insertions(+), 5 deletions(-) diff --git a/frame/staking/src/tests.rs b/frame/staking/src/tests.rs index c5aa800259..53e9b29927 100644 --- a/frame/staking/src/tests.rs +++ b/frame/staking/src/tests.rs @@ -3565,25 +3565,33 @@ mod offchain_phragmen { fn slash_kicks_validators_not_nominators() { ExtBuilder::default().build().execute_with(|| { start_era(1); + assert_eq_uvec!(Staking::current_elected(), vec![11, 21]); + // pre-slash balance assert_eq!(Balances::free_balance(11), 1000); - - let exposure = Staking::stakers(&11); assert_eq!(Balances::free_balance(101), 2000); - let nominated_value = exposure.others.iter().find(|o| o.who == 101).unwrap().value; + + // 11 and 21 both have the support of 100 + let exposure_11 = Staking::stakers(&11); + let exposure_21 = Staking::stakers(&21); + + assert_eq!(exposure_11.total, 1000 + 125); + assert_eq!(exposure_21.total, 1000 + 375); on_offence_now( &[ OffenceDetails { - offender: (11, exposure.clone()), + offender: (11, exposure_11.clone()), reporters: vec![], }, ], &[Perbill::from_percent(10)], ); + // post-slash balance + let nominator_slash_amount_11 = (125 / 10); assert_eq!(Balances::free_balance(11), 900); - assert_eq!(Balances::free_balance(101), 2000 - (nominated_value / 10)); + assert_eq!(Balances::free_balance(101), 2000 - nominator_slash_amount_11); // This is the best way to check that the validator was chilled; `get` will // return default value. @@ -3597,6 +3605,19 @@ fn slash_kicks_validators_not_nominators() { // re-registers. let last_slash = ::SlashingSpans::get(&11).unwrap().last_nonzero_slash(); assert!(nominations.submitted_in < last_slash); + + // actually re-bond the slashed validator + assert_ok!(Staking::validate(Origin::signed(10), Default::default())); + + start_era(2); + let exposure_11 = Staking::stakers(&11); + let exposure_21 = Staking::stakers(&21); + + // 10 is re-elected, but without the support of 100 + assert_eq!(exposure_11.total, 900); + + // 20 is re-elected, with the (almost) entire support of 100 + assert_eq!(exposure_21.total, 1000 + 500 - nominator_slash_amount_11); }); } -- GitLab From 3beb09d1e3a92d2dd5ad77df9dd47e46f691610a Mon Sep 17 00:00:00 2001 From: pscott <30843220+pscott@users.noreply.github.com> Date: Mon, 2 Mar 2020 10:59:39 +0100 Subject: [PATCH 071/301] Make export blocks default to json on stdout (#5090) * Make export blocks default to json on stdout * Multiline instead of single line to stay under 100 cols * Change --json flag to --binary, defaulting to json --- client/cli/src/commands/export_blocks_cmd.rs | 10 +++++----- client/service/src/builder.rs | 2 +- client/service/src/chain_ops.rs | 12 ++++++------ 3 files changed, 12 insertions(+), 12 deletions(-) diff --git a/client/cli/src/commands/export_blocks_cmd.rs b/client/cli/src/commands/export_blocks_cmd.rs index cdfa463c6d..21195cccd4 100644 --- a/client/cli/src/commands/export_blocks_cmd.rs +++ b/client/cli/src/commands/export_blocks_cmd.rs @@ -50,9 +50,9 @@ pub struct ExportBlocksCmd { #[structopt(long = "to", value_name = "BLOCK")] pub to: Option, - /// Use JSON output rather than binary. - #[structopt(long = "json")] - pub json: bool, + /// Use binary output rather than JSON. + #[structopt(long = "binary", value_name = "BOOL", parse(try_from_str), default_value("false"))] + pub binary: bool, #[allow(missing_docs)] #[structopt(flatten)] @@ -85,7 +85,7 @@ impl ExportBlocksCmd { let from = self.from.as_ref().and_then(|f| f.parse().ok()).unwrap_or(1); let to = self.to.as_ref().and_then(|t| t.parse().ok()); - let json = self.json; + let binary = self.binary; let file: Box = match &self.output { Some(filename) => Box::new(fs::File::create(filename)?), @@ -93,7 +93,7 @@ impl ExportBlocksCmd { }; run_until_exit(config, |config| { - Ok(builder(config)?.export_blocks(file, from.into(), to, json)) + Ok(builder(config)?.export_blocks(file, from.into(), to, binary)) }) } diff --git a/client/service/src/builder.rs b/client/service/src/builder.rs index 8c85c38b18..e5e4e132f9 100644 --- a/client/service/src/builder.rs +++ b/client/service/src/builder.rs @@ -742,7 +742,7 @@ pub trait ServiceBuilderCommand { output: impl Write + 'static, from: NumberFor, to: Option>, - json: bool + binary: bool ) -> Pin>>>; /// Performs a revert of `blocks` blocks. diff --git a/client/service/src/chain_ops.rs b/client/service/src/chain_ops.rs index a0724f3e1d..03db9232a1 100644 --- a/client/service/src/chain_ops.rs +++ b/client/service/src/chain_ops.rs @@ -203,7 +203,7 @@ impl< mut output: impl Write + 'static, from: NumberFor, to: Option>, - json: bool + binary: bool ) -> Pin>>> { let client = self.client; let mut block = from; @@ -230,7 +230,7 @@ impl< if !wrote_header { info!("Exporting blocks from #{} to #{}", block, last); - if !json { + if binary { let last_: u64 = last.saturated_into::(); let block_: u64 = block.saturated_into::(); let len: u64 = last_ - block_ + 1; @@ -241,13 +241,13 @@ impl< match client.block(&BlockId::number(block))? { Some(block) => { - if json { + if binary { + output.write_all(&block.encode())?; + } else { serde_json::to_writer(&mut output, &block) .map_err(|e| format!("Error writing JSON: {}", e))?; - } else { - output.write_all(&block.encode())?; } - }, + }, // Reached end of the chain. None => return std::task::Poll::Ready(Ok(())), } -- GitLab From 675f6b09590985a9c68721bc6852f2c3fe67c011 Mon Sep 17 00:00:00 2001 From: Fedor Sakharov Date: Mon, 2 Mar 2020 13:00:38 +0300 Subject: [PATCH 072/301] Offence reporting returns a result (#5082) * Offence reporting returns a result * Bump spec_version * Use unwrap instead of assertions * Fix more review grumbles --- bin/node/runtime/src/lib.rs | 2 +- frame/im-online/src/lib.rs | 4 +++- frame/im-online/src/mock.rs | 5 +++-- frame/offences/src/lib.rs | 8 +++++--- frame/offences/src/tests.rs | 20 ++++++++++---------- frame/staking/src/lib.rs | 7 ++++--- primitives/staking/src/offence.rs | 27 +++++++++++++++++++++++++-- 7 files changed, 51 insertions(+), 22 deletions(-) diff --git a/bin/node/runtime/src/lib.rs b/bin/node/runtime/src/lib.rs index ae8251f620..85889a50c2 100644 --- a/bin/node/runtime/src/lib.rs +++ b/bin/node/runtime/src/lib.rs @@ -82,7 +82,7 @@ pub const VERSION: RuntimeVersion = RuntimeVersion { // and set impl_version to 0. If only runtime // implementation changes and behavior does not, then leave spec_version as // is and increment impl_version. - spec_version: 226, + spec_version: 227, impl_version: 0, apis: RUNTIME_API_VERSIONS, }; diff --git a/frame/im-online/src/lib.rs b/frame/im-online/src/lib.rs index d6d13c66c2..9aa8d2d67f 100644 --- a/frame/im-online/src/lib.rs +++ b/frame/im-online/src/lib.rs @@ -608,7 +608,9 @@ impl pallet_session::OneSessionHandler for Module { let validator_set_count = keys.len() as u32; let offence = UnresponsivenessOffence { session_index, validator_set_count, offenders }; - T::ReportUnresponsiveness::report_offence(vec![], offence); + if let Err(e) = T::ReportUnresponsiveness::report_offence(vec![], offence) { + sp_runtime::print(e); + } } } diff --git a/frame/im-online/src/mock.rs b/frame/im-online/src/mock.rs index a703b24629..97a0e7eb84 100644 --- a/frame/im-online/src/mock.rs +++ b/frame/im-online/src/mock.rs @@ -22,7 +22,7 @@ use std::cell::RefCell; use crate::{Module, Trait}; use sp_runtime::Perbill; -use sp_staking::{SessionIndex, offence::ReportOffence}; +use sp_staking::{SessionIndex, offence::{ReportOffence, OffenceError}}; use sp_runtime::testing::{Header, UintAuthorityId, TestXt}; use sp_runtime::traits::{IdentityLookup, BlakeTwo256, ConvertInto}; use sp_core::H256; @@ -77,8 +77,9 @@ thread_local! { /// A mock offence report handler. pub struct OffenceHandler; impl ReportOffence for OffenceHandler { - fn report_offence(reporters: Vec, offence: Offence) { + fn report_offence(reporters: Vec, offence: Offence) -> Result<(), OffenceError> { OFFENCES.with(|l| l.borrow_mut().push((reporters, offence))); + Ok(()) } } diff --git a/frame/offences/src/lib.rs b/frame/offences/src/lib.rs index 7831ba65a3..27983cbb53 100644 --- a/frame/offences/src/lib.rs +++ b/frame/offences/src/lib.rs @@ -30,7 +30,7 @@ use frame_support::{ }; use sp_runtime::traits::Hash; use sp_staking::{ - offence::{Offence, ReportOffence, Kind, OnOffenceHandler, OffenceDetails}, + offence::{Offence, ReportOffence, Kind, OnOffenceHandler, OffenceDetails, OffenceError}, }; use codec::{Encode, Decode}; use frame_system as system; @@ -90,7 +90,7 @@ impl> where T::IdentificationTuple: Clone, { - fn report_offence(reporters: Vec, offence: O) { + fn report_offence(reporters: Vec, offence: O) -> Result<(), OffenceError> { let offenders = offence.offenders(); let time_slot = offence.time_slot(); let validator_set_count = offence.validator_set_count(); @@ -104,7 +104,7 @@ where ) { Some(triage) => triage, // The report contained only duplicates, so there is no need to slash again. - None => return, + None => return Err(OffenceError::DuplicateReport), }; // Deposit the event. @@ -123,6 +123,8 @@ where &slash_perbill, offence.session_index(), ); + + Ok(()) } } diff --git a/frame/offences/src/tests.rs b/frame/offences/src/tests.rs index f2f82cf7a8..0ed98427c6 100644 --- a/frame/offences/src/tests.rs +++ b/frame/offences/src/tests.rs @@ -40,7 +40,7 @@ fn should_report_an_authority_and_trigger_on_offence() { }; // when - Offences::report_offence(vec![], offence); + Offences::report_offence(vec![], offence).unwrap(); // then with_on_offence_fractions(|f| { @@ -61,7 +61,7 @@ fn should_not_report_the_same_authority_twice_in_the_same_slot() { time_slot, offenders: vec![5], }; - Offences::report_offence(vec![], offence.clone()); + Offences::report_offence(vec![], offence.clone()).unwrap(); with_on_offence_fractions(|f| { assert_eq!(f.clone(), vec![Perbill::from_percent(25)]); f.clear(); @@ -69,7 +69,7 @@ fn should_not_report_the_same_authority_twice_in_the_same_slot() { // when // report for the second time - Offences::report_offence(vec![], offence); + assert_eq!(Offences::report_offence(vec![], offence), Err(OffenceError::DuplicateReport)); // then with_on_offence_fractions(|f| { @@ -91,7 +91,7 @@ fn should_report_in_different_time_slot() { time_slot, offenders: vec![5], }; - Offences::report_offence(vec![], offence.clone()); + Offences::report_offence(vec![], offence.clone()).unwrap(); with_on_offence_fractions(|f| { assert_eq!(f.clone(), vec![Perbill::from_percent(25)]); f.clear(); @@ -100,7 +100,7 @@ fn should_report_in_different_time_slot() { // when // report for the second time offence.time_slot += 1; - Offences::report_offence(vec![], offence); + Offences::report_offence(vec![], offence).unwrap(); // then with_on_offence_fractions(|f| { @@ -123,7 +123,7 @@ fn should_deposit_event() { }; // when - Offences::report_offence(vec![], offence); + Offences::report_offence(vec![], offence).unwrap(); // then assert_eq!( @@ -149,7 +149,7 @@ fn doesnt_deposit_event_for_dups() { time_slot, offenders: vec![5], }; - Offences::report_offence(vec![], offence.clone()); + Offences::report_offence(vec![], offence.clone()).unwrap(); with_on_offence_fractions(|f| { assert_eq!(f.clone(), vec![Perbill::from_percent(25)]); f.clear(); @@ -157,7 +157,7 @@ fn doesnt_deposit_event_for_dups() { // when // report for the second time - Offences::report_offence(vec![], offence); + assert_eq!(Offences::report_offence(vec![], offence), Err(OffenceError::DuplicateReport)); // then // there is only one event. @@ -191,7 +191,7 @@ fn should_properly_count_offences() { time_slot, offenders: vec![4], }; - Offences::report_offence(vec![], offence1); + Offences::report_offence(vec![], offence1).unwrap(); with_on_offence_fractions(|f| { assert_eq!(f.clone(), vec![Perbill::from_percent(25)]); f.clear(); @@ -199,7 +199,7 @@ fn should_properly_count_offences() { // when // report for the second time - Offences::report_offence(vec![], offence2); + Offences::report_offence(vec![], offence2).unwrap(); // then // the 1st authority should have count 2 and the 2nd one should be reported only once. diff --git a/frame/staking/src/lib.rs b/frame/staking/src/lib.rs index ee708dabd3..81bce3b548 100644 --- a/frame/staking/src/lib.rs +++ b/frame/staking/src/lib.rs @@ -276,7 +276,7 @@ use sp_runtime::{ }; use sp_staking::{ SessionIndex, - offence::{OnOffenceHandler, OffenceDetails, Offence, ReportOffence}, + offence::{OnOffenceHandler, OffenceDetails, Offence, ReportOffence, OffenceError}, }; #[cfg(feature = "std")] use sp_runtime::{Serialize, Deserialize}; @@ -1828,7 +1828,7 @@ impl ReportOffence R: ReportOffence, O: Offence, { - fn report_offence(reporters: Vec, offence: O) { + fn report_offence(reporters: Vec, offence: O) -> Result<(), OffenceError> { >::ensure_storage_upgraded(); // disallow any slashing from before the current bonding period. @@ -1840,7 +1840,8 @@ impl ReportOffence } else { >::deposit_event( RawEvent::OldSlashingReportDiscarded(offence_session) - ) + ); + Ok(()) } } } diff --git a/primitives/staking/src/offence.rs b/primitives/staking/src/offence.rs index cac1ed065c..06e73f018b 100644 --- a/primitives/staking/src/offence.rs +++ b/primitives/staking/src/offence.rs @@ -91,14 +91,37 @@ pub trait Offence { ) -> Perbill; } +/// Errors that may happen on offence reports. +#[derive(PartialEq, sp_runtime::RuntimeDebug)] +pub enum OffenceError { + /// The report has already been sumbmitted. + DuplicateReport, + + /// Other error has happened. + Other(u8), +} + +impl sp_runtime::traits::Printable for OffenceError { + fn print(&self) { + "OffenceError".print(); + match self { + Self::DuplicateReport => "DuplicateReport".print(), + Self::Other(e) => { + "Other".print(); + e.print(); + } + } + } +} + /// A trait for decoupling offence reporters from the actual handling of offence reports. pub trait ReportOffence> { /// Report an `offence` and reward given `reporters`. - fn report_offence(reporters: Vec, offence: O); + fn report_offence(reporters: Vec, offence: O) -> Result<(), OffenceError>; } impl> ReportOffence for () { - fn report_offence(_reporters: Vec, _offence: O) {} + fn report_offence(_reporters: Vec, _offence: O) -> Result<(), OffenceError> { Ok(()) } } /// A trait to take action on an offence. -- GitLab From 1808b9333612058378b6aa4861f83718de88f92f Mon Sep 17 00:00:00 2001 From: Pierre Krieger Date: Mon, 2 Mar 2020 11:00:57 +0100 Subject: [PATCH 073/301] Update to libp2p 0.16.2 (#5088) --- Cargo.lock | 37 +++++++++----------------- bin/utils/subkey/Cargo.toml | 2 +- client/authority-discovery/Cargo.toml | 2 +- client/network-gossip/Cargo.toml | 2 +- client/network/Cargo.toml | 2 +- client/network/test/Cargo.toml | 2 +- client/peerset/Cargo.toml | 2 +- client/telemetry/Cargo.toml | 2 +- primitives/consensus/common/Cargo.toml | 2 +- utils/browser/Cargo.toml | 2 +- 10 files changed, 22 insertions(+), 33 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 815981e2fc..4da524e7ce 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2602,9 +2602,9 @@ dependencies = [ [[package]] name = "libp2p" -version = "0.16.1" +version = "0.16.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6bf152b510950e1030f2d3dcca5f0b4017892be50348a15fd3eec8b90c826fb" +checksum = "bba17ee9cac4bb89de5812159877d9b4f0a993bf41697a5a875940cd1eb71f24" dependencies = [ "bytes 0.5.4", "futures 0.3.4", @@ -2763,9 +2763,9 @@ dependencies = [ [[package]] name = "libp2p-kad" -version = "0.16.1" +version = "0.16.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76c260a92309112fff855ab2bd8f26c246c1dd380b87021abe61358dedb9748d" +checksum = "464dc8412978d40f0286be72ed9ab5e0e1386a4a06e7f174526739b5c3c1f041" dependencies = [ "arrayvec 0.5.1", "bytes 0.5.4", @@ -2828,11 +2828,11 @@ dependencies = [ [[package]] name = "libp2p-noise" -version = "0.16.0" +version = "0.16.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac7d33809afdf6794f09fdb2f9f94e1550ae230be5bae6430a078eb96fc9e5a6" +checksum = "b15a8a3d71f898beb6f854c8aae27aa1d198e0d1f2e49412261c2d90ef39675a" dependencies = [ - "curve25519-dalek 1.2.3", + "curve25519-dalek 2.0.0", "futures 0.3.4", "lazy_static", "libp2p-core", @@ -2843,7 +2843,7 @@ dependencies = [ "sha2", "snow", "static_assertions", - "x25519-dalek 0.5.2", + "x25519-dalek", "zeroize 1.1.0", ] @@ -2967,9 +2967,9 @@ dependencies = [ [[package]] name = "libp2p-wasm-ext" -version = "0.16.1" +version = "0.16.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d40c95ac1a9b7fb7770616e4165f34559885337f3be485b32acdd085261be3a" +checksum = "923581c055bc4b8c5f42d4ce5ef43e52fe5216f1ea4bc26476cb8a966ce6220b" dependencies = [ "futures 0.3.4", "js-sys", @@ -3002,9 +3002,9 @@ dependencies = [ [[package]] name = "libp2p-yamux" -version = "0.16.0" +version = "0.16.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f72aa5a7273c29c6eaea09108a49feaefc7456164863f64f86a193f9e78a4b7f" +checksum = "9dac30de24ccde0e67f363d71a125c587bbe6589503f664947e9b084b68a34f1" dependencies = [ "futures 0.3.4", "libp2p-core", @@ -6826,7 +6826,7 @@ dependencies = [ "rustc_version", "sha2", "subtle 2.2.2", - "x25519-dalek 0.6.0", + "x25519-dalek", ] [[package]] @@ -9083,17 +9083,6 @@ dependencies = [ "winapi-build", ] -[[package]] -name = "x25519-dalek" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ee1585dc1484373cbc1cee7aafda26634665cf449436fd6e24bfd1fad230538" -dependencies = [ - "clear_on_drop", - "curve25519-dalek 1.2.3", - "rand_core 0.3.1", -] - [[package]] name = "x25519-dalek" version = "0.6.0" diff --git a/bin/utils/subkey/Cargo.toml b/bin/utils/subkey/Cargo.toml index dead684598..b0777b1f70 100644 --- a/bin/utils/subkey/Cargo.toml +++ b/bin/utils/subkey/Cargo.toml @@ -30,7 +30,7 @@ derive_more = { version = "0.99.2" } sc-rpc = { version = "2.0.0-alpha.2", path = "../../../client/rpc" } jsonrpc-core-client = { version = "14.0.3", features = ["http"] } hyper = "0.12.35" -libp2p = "0.16.1" +libp2p = "0.16.2" serde_json = "1.0" [features] diff --git a/client/authority-discovery/Cargo.toml b/client/authority-discovery/Cargo.toml index 923408865a..1e4c70abfe 100644 --- a/client/authority-discovery/Cargo.toml +++ b/client/authority-discovery/Cargo.toml @@ -18,7 +18,7 @@ codec = { package = "parity-scale-codec", default-features = false, version = "1 derive_more = "0.99.2" futures = "0.3.1" futures-timer = "3.0.1" -libp2p = { version = "0.16.1", default-features = false, features = ["secp256k1", "libp2p-websocket"] } +libp2p = { version = "0.16.2", default-features = false, features = ["secp256k1", "libp2p-websocket"] } log = "0.4.8" prost = "0.6.1" rand = "0.7.2" diff --git a/client/network-gossip/Cargo.toml b/client/network-gossip/Cargo.toml index 6ed9f4de59..08c304c6e0 100644 --- a/client/network-gossip/Cargo.toml +++ b/client/network-gossip/Cargo.toml @@ -13,7 +13,7 @@ documentation = "https://docs.rs/sc-network-gossip" [dependencies] futures = "0.3.1" futures-timer = "3.0.1" -libp2p = { version = "0.16.1", default-features = false, features = ["libp2p-websocket"] } +libp2p = { version = "0.16.2", default-features = false, features = ["libp2p-websocket"] } log = "0.4.8" lru = "0.4.3" parking_lot = "0.10.0" diff --git a/client/network/Cargo.toml b/client/network/Cargo.toml index 4e07e84ba9..50a19e9da0 100644 --- a/client/network/Cargo.toml +++ b/client/network/Cargo.toml @@ -26,7 +26,7 @@ futures = "0.3.1" futures_codec = "0.3.3" futures-timer = "3.0.1" wasm-timer = "0.2" -libp2p = { version = "0.16.1", default-features = false, features = ["libp2p-websocket"] } +libp2p = { version = "0.16.2", default-features = false, features = ["libp2p-websocket"] } linked-hash-map = "0.5.2" linked_hash_set = "0.1.3" log = "0.4.8" diff --git a/client/network/test/Cargo.toml b/client/network/test/Cargo.toml index 7b749a6d31..7fec4f4da8 100644 --- a/client/network/test/Cargo.toml +++ b/client/network/test/Cargo.toml @@ -16,7 +16,7 @@ parking_lot = "0.10.0" futures = "0.3.1" futures-timer = "3.0.1" rand = "0.7.2" -libp2p = { version = "0.16.1", default-features = false, features = ["libp2p-websocket"] } +libp2p = { version = "0.16.2", default-features = false, features = ["libp2p-websocket"] } sp-consensus = { version = "0.8.0-alpha.2", path = "../../../primitives/consensus/common" } sc-client = { version = "0.8.0-alpha.2", path = "../../" } sc-client-api = { version = "2.0.0-alpha.2", path = "../../api" } diff --git a/client/peerset/Cargo.toml b/client/peerset/Cargo.toml index d90aa21c4f..9e76b8015a 100644 --- a/client/peerset/Cargo.toml +++ b/client/peerset/Cargo.toml @@ -12,7 +12,7 @@ documentation = "https://docs.rs/sc-peerset" [dependencies] futures = "0.3.1" -libp2p = { version = "0.16.1", default-features = false } +libp2p = { version = "0.16.2", default-features = false } log = "0.4.8" serde_json = "1.0.41" wasm-timer = "0.2" diff --git a/client/telemetry/Cargo.toml b/client/telemetry/Cargo.toml index 108c13de35..248c90ec68 100644 --- a/client/telemetry/Cargo.toml +++ b/client/telemetry/Cargo.toml @@ -16,7 +16,7 @@ parking_lot = "0.10.0" futures = "0.3.1" futures-timer = "3.0.1" wasm-timer = "0.2.0" -libp2p = { version = "0.16.1", default-features = false, features = ["libp2p-websocket"] } +libp2p = { version = "0.16.2", default-features = false, features = ["libp2p-websocket"] } log = "0.4.8" pin-project = "0.4.6" rand = "0.7.2" diff --git a/primitives/consensus/common/Cargo.toml b/primitives/consensus/common/Cargo.toml index 0af3d1ad91..684ae2d1f6 100644 --- a/primitives/consensus/common/Cargo.toml +++ b/primitives/consensus/common/Cargo.toml @@ -12,7 +12,7 @@ documentation = "https://docs.rs/sp-consensus/" [dependencies] derive_more = "0.99.2" -libp2p = { version = "0.16.1", default-features = false } +libp2p = { version = "0.16.2", default-features = false } log = "0.4.8" sp-core = { path= "../../core" , version = "2.0.0-alpha.2"} sp-inherents = { version = "2.0.0-alpha.2", path = "../../inherents" } diff --git a/utils/browser/Cargo.toml b/utils/browser/Cargo.toml index 19892cb7ce..e06794c6cc 100644 --- a/utils/browser/Cargo.toml +++ b/utils/browser/Cargo.toml @@ -12,7 +12,7 @@ repository = "https://github.com/paritytech/substrate/" futures = "0.3" futures01 = { package = "futures", version = "0.1.29" } log = "0.4.8" -libp2p = { version = "0.16.1", default-features = false } +libp2p = { version = "0.16.2", default-features = false } console_error_panic_hook = "0.1.6" console_log = "0.1.2" js-sys = "0.3.34" -- GitLab From 1bd7850751320a818f6f03aa419727f9925c7654 Mon Sep 17 00:00:00 2001 From: kianenigma Date: Mon, 2 Mar 2020 12:11:21 +0100 Subject: [PATCH 074/301] Add slashing check --- frame/staking/src/lib.rs | 9 ++- frame/staking/src/mock.rs | 4 +- frame/staking/src/slashing.rs | 4 +- frame/staking/src/tests.rs | 109 +++++++++++++++++++++++++++------- 4 files changed, 101 insertions(+), 25 deletions(-) diff --git a/frame/staking/src/lib.rs b/frame/staking/src/lib.rs index 1f78d65d98..9cb01e95c7 100644 --- a/frame/staking/src/lib.rs +++ b/frame/staking/src/lib.rs @@ -987,7 +987,7 @@ decl_error! { /// Error while building the assignment type from the compact. This can happen if an index /// is invalid, or if the weights _overflow_. PhragmenBogusCompact, - /// One of the submitted nominators is not an active nominator on chain. DEPRECATED. + /// One of the submitted nominators is not an active nominator on chain. PhragmenBogusNominator, /// One of the submitted nominators has an edge to which they have not voted on chain. PhragmenBogusNomination, @@ -1881,8 +1881,15 @@ impl Module { // NOTE: we don't really have to check here if the sum of all edges are the // nominator correct. Un-compacting assures this by definition. ensure!( + // each target in the provided distribution must be actually nominated by the + // nominator after the last non-zero slash. distribution.into_iter().all(|(t, _)| { nomination.targets.iter().find(|&tt| tt == t).is_some() + && + ::SlashingSpans::get(&t).map_or( + true, + |spans| nomination.submitted_in >= spans.last_nonzero_slash(), + ) }), Error::::PhragmenBogusNomination, ); diff --git a/frame/staking/src/mock.rs b/frame/staking/src/mock.rs index 550e1a7e09..570214fffc 100644 --- a/frame/staking/src/mock.rs +++ b/frame/staking/src/mock.rs @@ -824,7 +824,7 @@ pub fn horrible_phragmen_with_post_processing( // Ensure that this result is worse than seq-phragmen. Otherwise, it should not have been used // for testing. let score = { - let (_, _, better_score) = do_phragmen_with_post_processing(true, |_| {}); + let (_, _, better_score) = prepare_submission_with(true, |_| {}); let support = build_support_map::(&winners, &staked_assignment).0; let score = evaluate_support(&support); @@ -867,7 +867,7 @@ pub fn horrible_phragmen_with_post_processing( // Note: this should always logically reproduce [`offchain_election::prepare_submission`], yet we // cannot do it since we want to have `tweak` injected into the process. -pub fn do_phragmen_with_post_processing( +pub fn prepare_submission_with( do_reduce: bool, tweak: impl FnOnce(&mut Vec>), ) -> ( diff --git a/frame/staking/src/slashing.rs b/frame/staking/src/slashing.rs index 13b717ab19..efcd3d09de 100644 --- a/frame/staking/src/slashing.rs +++ b/frame/staking/src/slashing.rs @@ -52,7 +52,7 @@ use super::{ EraIndex, Trait, Module, Store, BalanceOf, Exposure, Perbill, SessionInterface, NegativeImbalanceOf, UnappliedSlash, }; -use sp_runtime::{traits::{Zero, Saturating}, PerThing}; +use sp_runtime::{traits::{Zero, Saturating}, PerThing, RuntimeDebug}; use frame_support::{ StorageMap, StorageDoubleMap, traits::{Currency, OnUnbalanced, Imbalance}, @@ -83,7 +83,7 @@ impl SlashingSpan { } /// An encoding of all of a nominator's slashing spans. -#[derive(Encode, Decode)] +#[derive(Encode, Decode, RuntimeDebug)] pub struct SlashingSpans { // the index of the current slashing span of the nominator. different for // every stash, resets when the account hits free balance 0. diff --git a/frame/staking/src/tests.rs b/frame/staking/src/tests.rs index 53e9b29927..1e0599c41a 100644 --- a/frame/staking/src/tests.rs +++ b/frame/staking/src/tests.rs @@ -2910,7 +2910,7 @@ mod offchain_phragmen { assert_eq!(Staking::era_election_status(), ElectionStatus::Open(12)); assert!(Staking::snapshot_validators().is_some()); - let (compact, winners, score) = do_phragmen_with_post_processing(true, |_| {}); + let (compact, winners, score) = prepare_submission_with(true, |_| {}); assert_ok!(Staking::submit_election_solution( Origin::signed(10), winners, @@ -2948,7 +2948,7 @@ mod offchain_phragmen { run_to_block(14); assert_eq!(Staking::era_election_status(), ElectionStatus::Open(12)); - let (compact, winners, score) = do_phragmen_with_post_processing(true, |_| {}); + let (compact, winners, score) = prepare_submission_with(true, |_| {}); assert_ok!( Staking::submit_election_solution( Origin::signed(10), @@ -2992,7 +2992,7 @@ mod offchain_phragmen { // create all the indices just to build the solution. Staking::create_stakers_snapshot(); - let (compact, winners, score) = do_phragmen_with_post_processing(true, |_| {}); + let (compact, winners, score) = prepare_submission_with(true, |_| {}); Staking::kill_stakers_snapshot(); assert_noop!( @@ -3016,7 +3016,7 @@ mod offchain_phragmen { run_to_block(12); // a good solution - let (compact, winners, score) = do_phragmen_with_post_processing(true, |_| {}); + let (compact, winners, score) = prepare_submission_with(true, |_| {}); assert_ok!(Staking::submit_election_solution(Origin::signed(10), winners, compact, score)); // a bad solution @@ -3046,7 +3046,7 @@ mod offchain_phragmen { assert_ok!(Staking::submit_election_solution(Origin::signed(10), winners, compact, score)); // a better solution - let (compact, winners, score) = do_phragmen_with_post_processing(true, |_| {}); + let (compact, winners, score) = prepare_submission_with(true, |_| {}); assert_ok!(Staking::submit_election_solution(Origin::signed(10), winners, compact, score)); }) } @@ -3105,7 +3105,7 @@ mod offchain_phragmen { ext.execute_with(||{ run_to_block(12); // put a good solution on-chain - let (compact, winners, score) = do_phragmen_with_post_processing(true, |_| {}); + let (compact, winners, score) = prepare_submission_with(true, |_| {}); assert_ok!( Staking::submit_election_solution(Origin::signed(10), winners, compact, score), ); @@ -3164,7 +3164,7 @@ mod offchain_phragmen { run_to_block(12); ValidatorCount::put(3); - let (compact, winners, score) = do_phragmen_with_post_processing(true, |_| {}); + let (compact, winners, score) = prepare_submission_with(true, |_| {}); ValidatorCount::put(4); assert_eq!(winners.len(), 3); @@ -3190,7 +3190,7 @@ mod offchain_phragmen { run_to_block(12); ValidatorCount::put(3); - let (compact, winners, score) = do_phragmen_with_post_processing(true, |_| {}); + let (compact, winners, score) = prepare_submission_with(true, |_| {}); ValidatorCount::put(4); assert_eq!(winners.len(), 3); @@ -3215,7 +3215,7 @@ mod offchain_phragmen { build_offchain_phragmen_test_ext(); run_to_block(12); - let (compact, winners, score) = do_phragmen_with_post_processing(true, |_| {}); + let (compact, winners, score) = prepare_submission_with(true, |_| {}); assert_eq!(winners.len(), 4); @@ -3241,7 +3241,7 @@ mod offchain_phragmen { assert_eq!(Staking::snapshot_nominators().unwrap().len(), 5 + 4); assert_eq!(Staking::snapshot_validators().unwrap().len(), 4); - let (mut compact, winners, score) = do_phragmen_with_post_processing(true, |_| {}); + let (mut compact, winners, score) = prepare_submission_with(true, |_| {}); // index 9 doesn't exist. compact.votes1.push((9, 2)); @@ -3269,7 +3269,7 @@ mod offchain_phragmen { assert_eq!(Staking::snapshot_nominators().unwrap().len(), 5 + 4); assert_eq!(Staking::snapshot_validators().unwrap().len(), 4); - let (mut compact, winners, score) = do_phragmen_with_post_processing(true, |_| {}); + let (mut compact, winners, score) = prepare_submission_with(true, |_| {}); // index 4 doesn't exist. compact.votes1.push((3, 4)); @@ -3297,7 +3297,7 @@ mod offchain_phragmen { assert_eq!(Staking::snapshot_nominators().unwrap().len(), 5 + 4); assert_eq!(Staking::snapshot_validators().unwrap().len(), 4); - let (compact, _, score) = do_phragmen_with_post_processing(true, |_| {}); + let (compact, _, score) = prepare_submission_with(true, |_| {}); // index 4 doesn't exist. let winners = vec![0, 1, 2, 4]; @@ -3325,7 +3325,7 @@ mod offchain_phragmen { assert_eq!(Staking::snapshot_nominators().unwrap().len(), 5 + 4); assert_eq!(Staking::snapshot_validators().unwrap().len(), 4); - let (compact, winners, score) = do_phragmen_with_post_processing(true, |a| { + let (compact, winners, score) = prepare_submission_with(true, |a| { a.iter_mut().find(|x| x.who == 5).map(|x| x.distribution = vec![(20, 50), (40, 30), (30, 20)] ); @@ -3351,7 +3351,7 @@ mod offchain_phragmen { build_offchain_phragmen_test_ext(); run_to_block(12); - let (compact, winners, score) = do_phragmen_with_post_processing(true, |a| { + let (compact, winners, score) = prepare_submission_with(true, |a| { // mutate a self vote to target someone else. That someone else is still among the // winners a.iter_mut().find(|x| x.who == 10).map(|x| @@ -3379,7 +3379,7 @@ mod offchain_phragmen { build_offchain_phragmen_test_ext(); run_to_block(12); - let (compact, winners, score) = do_phragmen_with_post_processing(true, |a| { + let (compact, winners, score) = prepare_submission_with(true, |a| { // Remove the self vote. a.retain(|x| x.who != 10); // add is as a new double vote @@ -3409,7 +3409,7 @@ mod offchain_phragmen { // Note: we don't reduce here to be able to tweak votes3. votes3 will vanish if you // reduce. - let (mut compact, winners, score) = do_phragmen_with_post_processing(false, |_| {}); + let (mut compact, winners, score) = prepare_submission_with(false, |_| {}); if let Some(c) = compact.votes3.iter_mut().find(|x| x.0 == 0) { // by default it should have been (0, [(2, 33%), (1, 33%)], 0) @@ -3446,7 +3446,7 @@ mod offchain_phragmen { build_offchain_phragmen_test_ext(); run_to_block(12); - let (compact, winners, score) = do_phragmen_with_post_processing(false, |a| { + let (compact, winners, score) = prepare_submission_with(false, |a| { // 3 only voted for 20 and 40. We add a fake vote to 30. The stake sum is still // correctly 100. a.iter_mut().find(|x| x.who == 3).map(|x| { @@ -3461,6 +3461,75 @@ mod offchain_phragmen { }) } + #[test] + fn nomination_slash_filter_is_checked() { + // If a nominator has voted for someone who has been recently slashed, that particular + // nomination should be disabled for the upcoming election. A solution mut respect this + // rule. + ExtBuilder::default() + .offchain_phragmen_ext() + .validator_count(4) + .has_stakers(false) + .build() + .execute_with(|| { + build_offchain_phragmen_test_ext(); + // finalize the round with fallback. This is needed since all nominator submission + // are in era zero and we want this one to pass with no problems. + run_to_block(15); + + // open the election window and create snapshots. + run_to_block(27); + + // a solution that has been prepared before the slash. + let (pre_compact, pre_winners, pre_score) = prepare_submission_with(false, |_| {}); + + // slash 10 + let offender_expo = Staking::stakers(10); + on_offence_now( + &[ + OffenceDetails { + offender: (10, offender_expo.clone()), + reporters: vec![], + }, + ], + &[Perbill::from_percent(10)], + ); + + // validate 10 again for the next round. + assert_ok!(Staking::validate(Origin::signed(10 + 1000), Default::default())); + + // a solution that has been prepared after the slash. + let (compact, winners, score) = prepare_submission_with(false, |_| {}); + + // The edges are different. + assert_ne!(compact, pre_compact); + // But the winners are the same. + assert_eq_uvec!(winners, pre_winners); + // 2 votes for 10 and 20, but the edge for 20 is gone, so there must be one less + // entry in votes2. + assert_eq!(compact.votes2.len(), pre_compact.votes2.len() - 1); + + // old results are invalid. + assert_noop!( + Staking::submit_election_solution( + Origin::signed(10), + pre_winners, + pre_compact, + pre_score, + ), + Error::::PhragmenBogusNomination, + ); + + // new results are okay. + assert_ok!( + Staking::submit_election_solution(Origin::signed(10), winners, compact, score), + ); + + // finish the round. + run_to_block(30); + }) + } + #[test] fn invalid_phragmen_result_wrong_score() { // A valid voter who's total distributed stake is more than what they bond @@ -3474,7 +3543,7 @@ mod offchain_phragmen { build_offchain_phragmen_test_ext(); run_to_block(12); - let (compact, winners, mut score) = do_phragmen_with_post_processing(true, |_| {}); + let (compact, winners, mut score) = prepare_submission_with(true, |_| {}); score[0] += 1; assert_noop!( @@ -3562,7 +3631,7 @@ mod offchain_phragmen { } #[test] -fn slash_kicks_validators_not_nominators() { +fn slash_kicks_validators_not_nominators_and_disables_nominator_for_kicked_validator() { ExtBuilder::default().build().execute_with(|| { start_era(1); assert_eq_uvec!(Staking::current_elected(), vec![11, 21]); @@ -3589,7 +3658,7 @@ fn slash_kicks_validators_not_nominators() { ); // post-slash balance - let nominator_slash_amount_11 = (125 / 10); + let nominator_slash_amount_11 = 125 / 10; assert_eq!(Balances::free_balance(11), 900); assert_eq!(Balances::free_balance(101), 2000 - nominator_slash_amount_11); -- GitLab From 65ad8e9632f1a627fc9fb386dc5b60a54741d7a0 Mon Sep 17 00:00:00 2001 From: Pierre Krieger Date: Mon, 2 Mar 2020 13:43:29 +0100 Subject: [PATCH 075/301] Remove request ID from the new protocol (#5049) --- client/network/src/protocol/block_requests.rs | 13 +- .../src/protocol/light_client_handler.rs | 162 +++++------------- .../network/src/protocol/schema/api.v1.proto | 18 +- .../src/protocol/schema/light.v1.proto | 22 +-- 4 files changed, 68 insertions(+), 147 deletions(-) diff --git a/client/network/src/protocol/block_requests.rs b/client/network/src/protocol/block_requests.rs index ef970657c5..20a99378b1 100644 --- a/client/network/src/protocol/block_requests.rs +++ b/client/network/src/protocol/block_requests.rs @@ -111,7 +111,7 @@ impl Config { let mut v = Vec::new(); v.extend_from_slice(b"/"); v.extend_from_slice(id.as_bytes()); - v.extend_from_slice(b"/sync/1"); + v.extend_from_slice(b"/sync/2"); self.protocol = v.into(); self } @@ -146,8 +146,7 @@ where , request: &api::v1::BlockRequest ) -> Result { - log::trace!("block request {} from peer {}: from block {:?} to block {:?}, max blocks {:?}", - request.id, + log::trace!("block request from peer {}: from block {:?} to block {:?}, max blocks {:?}", peer, request.from_block, request.to_block, @@ -242,7 +241,7 @@ where } } - Ok(api::v1::BlockResponse { id: request.id, blocks }) + Ok(api::v1::BlockResponse { blocks }) } } @@ -274,10 +273,10 @@ where fn inject_node_event(&mut self, peer: PeerId, Request(request, mut stream): Request) { match self.on_block_request(&peer, &request) { Ok(res) => { - log::trace!("enqueueing block response {} for peer {} with {} blocks", res.id, peer, res.blocks.len()); + log::trace!("enqueueing block response for peer {} with {} blocks", peer, res.blocks.len()); let mut data = Vec::with_capacity(res.encoded_len()); if let Err(e) = res.encode(&mut data) { - log::debug!("error encoding block response {} for peer {}: {}", res.id, peer, e) + log::debug!("error encoding block response for peer {}: {}", peer, e) } else { let future = async move { if let Err(e) = write_one(&mut stream, data).await { @@ -287,7 +286,7 @@ where self.outgoing.push(future.boxed()) } } - Err(e) => log::debug!("error handling block request {} from peer {}: {}", request.id, peer, e) + Err(e) => log::debug!("error handling block request from peer {}: {}", peer, e) } } diff --git a/client/network/src/protocol/light_client_handler.rs b/client/network/src/protocol/light_client_handler.rs index 77cf71408d..b531f3515a 100644 --- a/client/network/src/protocol/light_client_handler.rs +++ b/client/network/src/protocol/light_client_handler.rs @@ -127,7 +127,7 @@ impl Config { let mut v = Vec::new(); v.extend_from_slice(b"/"); v.extend_from_slice(id.as_bytes()); - v.extend_from_slice(b"/light/1"); + v.extend_from_slice(b"/light/2"); self.protocol = v.into(); self } @@ -350,7 +350,7 @@ where , response: api::v1::light::Response ) -> Result, Error> { - log::trace!("response {} from {}", response.id, peer); + log::trace!("response from {}", peer); use api::v1::light::response::Response; match response.response { Some(Response::RemoteCallResponse(response)) => @@ -419,12 +419,10 @@ where fn on_remote_call_request ( &mut self , peer: &PeerId - , request_id: u64 , request: &api::v1::light::RemoteCallRequest ) -> Result { - log::trace!("remote call request {} from {} ({} at {:?})", - request_id, + log::trace!("remote call request from {} ({} at {:?})", peer, request.method, request.block); @@ -434,8 +432,7 @@ where let proof = match self.chain.execution_proof(&block, &request.method, &request.data) { Ok((_, proof)) => proof, Err(e) => { - log::trace!("remote call request {} from {} ({} at {:?}) failed with: {}", - request_id, + log::trace!("remote call request from {} ({} at {:?}) failed with: {}", peer, request.method, request.block, @@ -449,13 +446,12 @@ where api::v1::light::response::Response::RemoteCallResponse(r) }; - Ok(api::v1::light::Response { id: request_id, response: Some(response) }) + Ok(api::v1::light::Response { response: Some(response) }) } fn on_remote_read_request ( &mut self , peer: &PeerId - , request_id: u64 , request: &api::v1::light::RemoteReadRequest ) -> Result { @@ -464,8 +460,7 @@ where return Err(Error::BadRequest("remote read request without keys")) } - log::trace!("remote read request {} from {} ({} at {:?})", - request_id, + log::trace!("remote read request from {} ({} at {:?})", peer, fmt_keys(request.keys.first(), request.keys.last()), request.block); @@ -475,8 +470,7 @@ where let proof = match self.chain.read_proof(&block, &request.keys) { Ok(proof) => proof, Err(error) => { - log::trace!("remote read request {} from {} ({} at {:?}) failed with: {}", - request_id, + log::trace!("remote read request from {} ({} at {:?}) failed with: {}", peer, fmt_keys(request.keys.first(), request.keys.last()), request.block, @@ -490,13 +484,12 @@ where api::v1::light::response::Response::RemoteReadResponse(r) }; - Ok(api::v1::light::Response { id: request_id, response: Some(response) }) + Ok(api::v1::light::Response { response: Some(response) }) } fn on_remote_read_child_request ( &mut self , peer: &PeerId - , request_id: u64 , request: &api::v1::light::RemoteReadChildRequest ) -> Result { @@ -505,8 +498,7 @@ where return Err(Error::BadRequest("remove read child request without keys")) } - log::trace!("remote read child request {} from {} ({} {} at {:?})", - request_id, + log::trace!("remote read child request from {} ({} {} at {:?})", peer, request.storage_key.to_hex::(), fmt_keys(request.keys.first(), request.keys.last()), @@ -519,8 +511,7 @@ where match self.chain.read_child_proof(&block, &request.storage_key, info, &request.keys) { Ok(proof) => proof, Err(error) => { - log::trace!("remote read child request {} from {} ({} {} at {:?}) failed with: {}", - request_id, + log::trace!("remote read child request from {} ({} {} at {:?}) failed with: {}", peer, request.storage_key.to_hex::(), fmt_keys(request.keys.first(), request.keys.last()), @@ -530,8 +521,7 @@ where } } } else { - log::trace!("remote read child request {} from {} ({} {} at {:?}) failed with: {}", - request_id, + log::trace!("remote read child request from {} ({} {} at {:?}) failed with: {}", peer, request.storage_key.to_hex::(), fmt_keys(request.keys.first(), request.keys.last()), @@ -546,25 +536,23 @@ where api::v1::light::response::Response::RemoteReadResponse(r) }; - Ok(api::v1::light::Response { id: request_id, response: Some(response) }) + Ok(api::v1::light::Response { response: Some(response) }) } fn on_remote_header_request ( &mut self , peer: &PeerId - , request_id: u64 , request: &api::v1::light::RemoteHeaderRequest ) -> Result { - log::trace!("remote header proof request {} from {} ({:?})", request_id, peer, request.block); + log::trace!("remote header proof request from {} ({:?})", peer, request.block); let block = Decode::decode(&mut request.block.as_ref())?; let (header, proof) = match self.chain.header_proof(block) { Ok((header, proof)) => (header.encode(), proof), Err(error) => { - log::trace!("remote header proof request {} from {} ({:?}) failed with: {}", - request_id, + log::trace!("remote header proof request from {} ({:?}) failed with: {}", peer, request.block, error); @@ -577,18 +565,16 @@ where api::v1::light::response::Response::RemoteHeaderResponse(r) }; - Ok(api::v1::light::Response { id: request_id, response: Some(response) }) + Ok(api::v1::light::Response { response: Some(response) }) } fn on_remote_changes_request ( &mut self , peer: &PeerId - , request_id: u64 , request: &api::v1::light::RemoteChangesRequest ) -> Result { - log::trace!("remote changes proof request {} from {} for key {} ({:?}..{:?})", - request_id, + log::trace!("remote changes proof request from {} for key {} ({:?}..{:?})", peer, if !request.storage_key.is_empty() { format!("{} : {}", request.storage_key.to_hex::(), request.key.to_hex::()) @@ -613,8 +599,7 @@ where let proof = match self.chain.key_changes_proof(first, last, min, max, storage_key.as_ref(), &key) { Ok(proof) => proof, Err(error) => { - log::trace!("remote changes proof request {} from {} for key {} ({:?}..{:?}) failed with: {}", - request_id, + log::trace!("remote changes proof request from {} for key {} ({:?}..{:?}) failed with: {}", peer, if let Some(sk) = storage_key { format!("{} : {}", sk.0.to_hex::(), key.0.to_hex::()) @@ -646,7 +631,7 @@ where api::v1::light::response::Response::RemoteChangesResponse(r) }; - Ok(api::v1::light::Response { id: request_id, response: Some(response) }) + Ok(api::v1::light::Response { response: Some(response) }) } } @@ -697,29 +682,29 @@ where match event { // An incoming request from remote has been received. Event::Request(request, mut stream) => { - log::trace!("incoming request {} from {}", peer, request.id); + log::trace!("incoming request from {}", peer); let result = match &request.request { Some(api::v1::light::request::Request::RemoteCallRequest(r)) => - self.on_remote_call_request(&peer, request.id, r), + self.on_remote_call_request(&peer, r), Some(api::v1::light::request::Request::RemoteReadRequest(r)) => - self.on_remote_read_request(&peer, request.id, r), + self.on_remote_read_request(&peer, r), Some(api::v1::light::request::Request::RemoteHeaderRequest(r)) => - self.on_remote_header_request(&peer, request.id, r), + self.on_remote_header_request(&peer, r), Some(api::v1::light::request::Request::RemoteReadChildRequest(r)) => - self.on_remote_read_child_request(&peer, request.id, r), + self.on_remote_read_child_request(&peer, r), Some(api::v1::light::request::Request::RemoteChangesRequest(r)) => - self.on_remote_changes_request(&peer, request.id, r), + self.on_remote_changes_request(&peer, r), None => { - log::debug!("ignoring request {} without request data from peer {}", request.id, peer); + log::debug!("ignoring request without request data from peer {}", peer); return } }; match result { Ok(response) => { - log::trace!("enqueueing response {} for peer {}", response.id, peer); + log::trace!("enqueueing response for peer {}", peer); let mut data = Vec::new(); if let Err(e) = response.encode(&mut data) { - log::debug!("error encoding response {} for peer {}: {}", response.id, peer, e) + log::debug!("error encoding response for peer {}: {}", peer, e) } else { let future = async move { if let Err(e) = write_one(&mut stream, data).await { @@ -733,16 +718,15 @@ where self.remove_peer(&peer); self.peerset.report_peer(peer, ReputationChange::new(-(1 << 12), "bad request")) } - Err(e) => log::debug!("error handling request {} from peer {}: {}", request.id, peer, e) + Err(e) => log::debug!("error handling request from peer {}: {}", peer, e) } } // A response to one of our own requests has been received. - Event::Response(response) => { - let id = response.id; + Event::Response(id, response) => { if let Some(request) = self.outstanding.remove(&id) { // We first just check if the response originates from the expected peer. if request.peer != peer { - log::debug!("was expecting response {} from {} instead of {}", id, request.peer, peer); + log::debug!("was expecting response from {} instead of {}", request.peer, peer); self.outstanding.insert(id, request); self.remove_peer(&peer); self.peerset.report_peer(peer, ReputationChange::new_fatal("response from unexpected peer")); @@ -836,16 +820,17 @@ where } }; if let Some(peer) = available_peer { - let id = self.next_request_id(); - let rq = serialize_request(id, &request.request); + let rq = serialize_request(&request.request); let mut buf = Vec::with_capacity(rq.encoded_len()); if let Err(e) = rq.encode(&mut buf) { - log::debug!("failed to serialize request {}: {}", id, e); + log::debug!("failed to serialize request: {}", e); send_reply(Err(ClientError::RemoteFetchFailed), request.request) } else { + let id = self.next_request_id(); log::trace!("sending request {} to peer {}", id, peer); let protocol = OutboundProtocol { request: buf, + request_id: id, max_data_size: self.config.max_data_size, protocol: self.config.protocol.clone(), }; @@ -918,7 +903,7 @@ fn retries(request: &Request) -> usize { rc.unwrap_or(0) } -fn serialize_request(id: u64, request: &Request) -> api::v1::light::Request { +fn serialize_request(request: &Request) -> api::v1::light::Request { let request = match request { Request::Header { request, .. } => { let r = api::v1::light::RemoteHeaderRequest { block: request.block.encode() }; @@ -962,7 +947,7 @@ fn serialize_request(id: u64, request: &Request) -> api::v1::light: } }; - api::v1::light::Request { id, request: Some(request) } + api::v1::light::Request { request: Some(request) } } fn send_reply(result: Result, ClientError>, request: Request) { @@ -1004,7 +989,7 @@ pub enum Event { /// Incoming request from remote and substream to use for the response. Request(api::v1::light::Request, T), /// Incoming response from remote. - Response(api::v1::light::Response), + Response(u64, api::v1::light::Response), } /// Substream upgrade protocol. @@ -1054,6 +1039,8 @@ where pub struct OutboundProtocol { /// The serialized protobuf request. request: Vec, + /// Local identifier for the request. Used to associate it with a response. + request_id: u64, /// The max. request length in bytes. max_data_size: usize, /// The protocol to use for upgrade negotiation. @@ -1082,7 +1069,7 @@ where write_one(&mut s, &self.request).await?; let vec = read_one(&mut s, self.max_data_size).await?; api::v1::light::Response::decode(&vec[..]) - .map(Event::Response) + .map(|r| Event::Response(self.request_id, r)) .map_err(|e| { ReadOneError::Io(io::Error::new(io::ErrorKind::Other, e)) }) @@ -1308,53 +1295,6 @@ mod tests { assert_eq!(0, behaviour.outstanding.len()); } - #[test] - fn disconnects_from_peer_on_response_with_wrong_id() { - let peer = PeerId::random(); - let pset = peerset(); - let mut behaviour = make_behaviour(true, pset.1, make_config()); - - behaviour.inject_connected(peer.clone(), empty_dialer()); - assert_eq!(1, behaviour.peers.len()); - - let chan = oneshot::channel(); - let request = fetcher::RemoteCallRequest { - block: Default::default(), - header: dummy_header(), - method: "test".into(), - call_data: vec![], - retry_count: Some(1), - }; - behaviour.request(Request::Call { request, sender: chan.0 }).unwrap(); - - assert_eq!(1, behaviour.pending_requests.len()); - assert_eq!(0, behaviour.outstanding.len()); - poll(&mut behaviour); // Make progress - assert_eq!(0, behaviour.pending_requests.len()); - assert_eq!(1, behaviour.outstanding.len()); - - // Construct response with bogus ID - let response = { - let r = api::v1::light::RemoteCallResponse { proof: empty_proof() }; - api::v1::light::Response { - id: 2365789, - response: Some(api::v1::light::response::Response::RemoteCallResponse(r)), - } - }; - - // Make sure our bogus ID is really not used. - assert!(!behaviour.outstanding.keys().any(|id| id == &response.id)); - - behaviour.inject_node_event(peer.clone(), Event::Response(response)); - assert!(behaviour.peers.is_empty()); - - poll(&mut behaviour); // More progress - - // The request should be back in the pending queue - assert_eq!(1, behaviour.pending_requests.len()); - assert_eq!(0, behaviour.outstanding.len()); - } - #[test] fn disconnects_from_peer_on_incorrect_response() { let peer = PeerId::random(); @@ -1386,12 +1326,11 @@ mod tests { let response = { let r = api::v1::light::RemoteCallResponse { proof: empty_proof() }; api::v1::light::Response { - id: request_id, response: Some(api::v1::light::response::Response::RemoteCallResponse(r)), } }; - behaviour.inject_node_event(peer.clone(), Event::Response(response)); + behaviour.inject_node_event(peer.clone(), Event::Response(request_id, response)); assert!(behaviour.peers.is_empty()); poll(&mut behaviour); // More progress @@ -1416,12 +1355,11 @@ mod tests { let response = { let r = api::v1::light::RemoteCallResponse { proof: empty_proof() }; api::v1::light::Response { - id: 2347895932, response: Some(api::v1::light::response::Response::RemoteCallResponse(r)), } }; - behaviour.inject_node_event(peer.clone(), Event::Response(response)); + behaviour.inject_node_event(peer.clone(), Event::Response(2347895932, response)); assert!(behaviour.peers.is_empty()); poll(&mut behaviour); @@ -1459,12 +1397,11 @@ mod tests { let response = { let r = api::v1::light::RemoteReadResponse { proof: empty_proof() }; // Not a RemoteCallResponse! api::v1::light::Response { - id: request_id, response: Some(api::v1::light::response::Response::RemoteReadResponse(r)), } }; - behaviour.inject_node_event(peer.clone(), Event::Response(response)); + behaviour.inject_node_event(peer.clone(), Event::Response(request_id, response)); assert!(behaviour.peers.is_empty()); poll(&mut behaviour); // More progress @@ -1513,11 +1450,10 @@ mod tests { let response = { let r = api::v1::light::RemoteCallResponse { proof: empty_proof() }; api::v1::light::Response { - id: request_id, response: Some(api::v1::light::response::Response::RemoteCallResponse(r)) } }; - behaviour.inject_node_event(responding_peer, Event::Response(response.clone())); + behaviour.inject_node_event(responding_peer, Event::Response(request_id, response.clone())); assert_matches!(poll(&mut behaviour), Poll::Ready(NetworkBehaviourAction::SendEvent { .. })); assert_matches!(chan.1.try_recv(), Ok(None)) } @@ -1527,11 +1463,10 @@ mod tests { let response = { let r = api::v1::light::RemoteCallResponse { proof: empty_proof() }; api::v1::light::Response { - id: request_id, response: Some(api::v1::light::response::Response::RemoteCallResponse(r)), } }; - behaviour.inject_node_event(responding_peer, Event::Response(response)); + behaviour.inject_node_event(responding_peer, Event::Response(request_id, response)); assert_matches!(poll(&mut behaviour), Poll::Pending); assert_matches!(chan.1.try_recv(), Ok(Some(Err(ClientError::RemoteFetchFailed)))) } @@ -1551,28 +1486,24 @@ mod tests { proof: empty_proof() }; api::v1::light::Response { - id: 1, response: Some(api::v1::light::response::Response::RemoteHeaderResponse(r)), } } Request::Read{..} => { let r = api::v1::light::RemoteReadResponse { proof: empty_proof() }; api::v1::light::Response { - id: 1, response: Some(api::v1::light::response::Response::RemoteReadResponse(r)), } } Request::ReadChild{..} => { let r = api::v1::light::RemoteReadResponse { proof: empty_proof() }; api::v1::light::Response { - id: 1, response: Some(api::v1::light::response::Response::RemoteReadResponse(r)), } } Request::Call{..} => { let r = api::v1::light::RemoteCallResponse { proof: empty_proof() }; api::v1::light::Response { - id: 1, response: Some(api::v1::light::response::Response::RemoteCallResponse(r)), } } @@ -1584,7 +1515,6 @@ mod tests { roots_proof: empty_proof() }; api::v1::light::Response { - id: 1, response: Some(api::v1::light::response::Response::RemoteChangesResponse(r)), } } @@ -1599,7 +1529,7 @@ mod tests { assert_eq!(1, behaviour.outstanding.len()); assert_eq!(1, *behaviour.outstanding.keys().next().unwrap()); - behaviour.inject_node_event(peer.clone(), Event::Response(response)); + behaviour.inject_node_event(peer.clone(), Event::Response(1, response)); poll(&mut behaviour); diff --git a/client/network/src/protocol/schema/api.v1.proto b/client/network/src/protocol/schema/api.v1.proto index 73128c53de..ccbf49d666 100644 --- a/client/network/src/protocol/schema/api.v1.proto +++ b/client/network/src/protocol/schema/api.v1.proto @@ -14,31 +14,27 @@ enum Direction { // Request block data from a peer. message BlockRequest { - // Unique request id. - uint64 id = 1; // Bits of block data to request. - uint32 fields = 2; + uint32 fields = 1; // Start from this block. oneof from_block { // Start with given hash. - bytes hash = 3; + bytes hash = 2; // Start with given block number. - bytes number = 4; + bytes number = 3; } // End at this block. An implementation defined maximum is used when unspecified. - bytes to_block = 5; // optional + bytes to_block = 4; // optional // Sequence direction. - Direction direction = 6; + Direction direction = 5; // Maximum number of blocks to return. An implementation defined maximum is used when unspecified. - uint32 max_blocks = 7; // optional + uint32 max_blocks = 6; // optional } // Response to `BlockRequest` message BlockResponse { - // Id of a request this response was made for. - uint64 id = 1; // Block data for the requested sequence. - repeated BlockData blocks = 2; + repeated BlockData blocks = 1; } // Block data sent in the response. diff --git a/client/network/src/protocol/schema/light.v1.proto b/client/network/src/protocol/schema/light.v1.proto index b9aee67b5e..1c98d49730 100644 --- a/client/network/src/protocol/schema/light.v1.proto +++ b/client/network/src/protocol/schema/light.v1.proto @@ -14,26 +14,22 @@ message Pair { // Enumerate all possible light client request messages. message Request { - // Unique request id. - uint64 id = 1; oneof request { - RemoteCallRequest remote_call_request = 2; - RemoteReadRequest remote_read_request = 3; - RemoteHeaderRequest remote_header_request = 4; - RemoteReadChildRequest remote_read_child_request = 5; - RemoteChangesRequest remote_changes_request = 6; + RemoteCallRequest remote_call_request = 1; + RemoteReadRequest remote_read_request = 2; + RemoteHeaderRequest remote_header_request = 3; + RemoteReadChildRequest remote_read_child_request = 4; + RemoteChangesRequest remote_changes_request = 5; } } // Enumerate all possible light client response messages. message Response { - /// Id of a request this response was made for. - uint64 id = 1; oneof response { - RemoteCallResponse remote_call_response = 2; - RemoteReadResponse remote_read_response = 3; - RemoteHeaderResponse remote_header_response = 4; - RemoteChangesResponse remote_changes_response = 6; + RemoteCallResponse remote_call_response = 1; + RemoteReadResponse remote_read_response = 2; + RemoteHeaderResponse remote_header_response = 3; + RemoteChangesResponse remote_changes_response = 4; } } -- GitLab From 5f9844d99aac4af3f7985b70581167479cfc88a2 Mon Sep 17 00:00:00 2001 From: Kian Paimani <5588131+kianenigma@users.noreply.github.com> Date: Mon, 2 Mar 2020 15:37:05 +0100 Subject: [PATCH 076/301] Update frame/staking/src/tests.rs Co-Authored-By: Joshy Orndorff --- frame/staking/src/tests.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frame/staking/src/tests.rs b/frame/staking/src/tests.rs index 1e0599c41a..e189cfee74 100644 --- a/frame/staking/src/tests.rs +++ b/frame/staking/src/tests.rs @@ -3464,7 +3464,7 @@ mod offchain_phragmen { #[test] fn nomination_slash_filter_is_checked() { // If a nominator has voted for someone who has been recently slashed, that particular - // nomination should be disabled for the upcoming election. A solution mut respect this + // nomination should be disabled for the upcoming election. A solution must respect this // rule. ExtBuilder::default() .offchain_phragmen_ext() -- GitLab From 7e383edb2f8ed9a912cc012905d752795b8a3201 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bastian=20K=C3=B6cher?= Date: Mon, 2 Mar 2020 18:20:04 +0100 Subject: [PATCH 077/301] Make sure we remove a peer on disconnect in gossip (#5104) * Make sure we remove peers on disconnect in gossip state machine * Clear up the code * Add a comment --- client/network-gossip/src/state_machine.rs | 49 ++++++++++++++++++++++ client/network/src/protocol/sync.rs | 3 +- client/network/src/protocol/sync/blocks.rs | 27 ++++++------ 3 files changed, 63 insertions(+), 16 deletions(-) diff --git a/client/network-gossip/src/state_machine.rs b/client/network-gossip/src/state_machine.rs index 26433e63ec..db5ea3603d 100644 --- a/client/network-gossip/src/state_machine.rs +++ b/client/network-gossip/src/state_machine.rs @@ -258,6 +258,7 @@ impl ConsensusGossip { let mut context = NetworkContext { gossip: self, network, engine_id: engine_id.clone() }; v.peer_disconnected(&mut context, &who); } + self.peers.remove(&who); } /// Perform periodic maintenance @@ -644,4 +645,52 @@ mod tests { let _ = consensus.live_message_sinks.remove(&([0, 0, 0, 0], topic)); assert_eq!(stream.next(), None); } + + #[test] + fn peer_is_removed_on_disconnect() { + struct TestNetwork; + impl Network for TestNetwork { + fn event_stream( + &self, + ) -> std::pin::Pin + Send>> { + unimplemented!("Not required in tests") + } + + fn report_peer(&self, _: PeerId, _: crate::ReputationChange) { + unimplemented!("Not required in tests") + } + + fn disconnect_peer(&self, _: PeerId) { + unimplemented!("Not required in tests") + } + + fn write_notification(&self, _: PeerId, _: crate::ConsensusEngineId, _: Vec) { + unimplemented!("Not required in tests") + } + + fn register_notifications_protocol( + &self, + _: ConsensusEngineId, + _: std::borrow::Cow<'static, [u8]>, + ) { + unimplemented!("Not required in tests") + } + + fn announce(&self, _: H256, _: Vec) { + unimplemented!("Not required in tests") + } + } + + let mut consensus = ConsensusGossip::::new(); + consensus.register_validator_internal([0, 0, 0, 0], Arc::new(AllowAll)); + + let mut network = TestNetwork; + + let peer_id = PeerId::random(); + consensus.new_peer(&mut network, peer_id.clone(), Roles::FULL); + assert!(consensus.peers.contains_key(&peer_id)); + + consensus.peer_disconnected(&mut network, peer_id.clone()); + assert!(!consensus.peers.contains_key(&peer_id)); + } } diff --git a/client/network/src/protocol/sync.rs b/client/network/src/protocol/sync.rs index b1cd89155e..d0427e61a8 100644 --- a/client/network/src/protocol/sync.rs +++ b/client/network/src/protocol/sync.rs @@ -1167,8 +1167,7 @@ impl ChainSync { } /// Restart the sync process. - fn restart<'a>(&'a mut self) -> impl Iterator), BadPeer>> + 'a - { + fn restart<'a>(&'a mut self) -> impl Iterator), BadPeer>> + 'a { self.queue_blocks.clear(); self.blocks.clear(); let info = self.client.info(); diff --git a/client/network/src/protocol/sync/blocks.rs b/client/network/src/protocol/sync/blocks.rs index d4e4581c67..279150a225 100644 --- a/client/network/src/protocol/sync/blocks.rs +++ b/client/network/src/protocol/sync/blocks.rs @@ -104,8 +104,7 @@ impl BlockCollection { common: NumberFor, max_parallel: u32, max_ahead: u32, - ) -> Option>> - { + ) -> Option>> { if peer_best <= common { // Bail out early return None; @@ -165,20 +164,20 @@ impl BlockCollection { pub fn drain(&mut self, from: NumberFor) -> Vec> { let mut drained = Vec::new(); let mut ranges = Vec::new(); - { - let mut prev = from; - for (start, range_data) in &mut self.blocks { - match range_data { - &mut BlockRangeState::Complete(ref mut blocks) if *start <= prev => { - prev = *start + (blocks.len() as u32).into(); - let mut blocks = mem::replace(blocks, Vec::new()); - drained.append(&mut blocks); - ranges.push(*start); - }, - _ => break, - } + + let mut prev = from; + for (start, range_data) in &mut self.blocks { + match range_data { + &mut BlockRangeState::Complete(ref mut blocks) if *start <= prev => { + prev = *start + (blocks.len() as u32).into(); + // Remove all elements from `blocks` and add them to `drained` + drained.append(blocks); + ranges.push(*start); + }, + _ => break, } } + for r in ranges { self.blocks.remove(&r); } -- GitLab From 555007f98f8d65a9677a0213a0c245c4910c9d1b Mon Sep 17 00:00:00 2001 From: kianenigma Date: Mon, 2 Mar 2020 19:49:55 +0100 Subject: [PATCH 078/301] Some formatting nits --- frame/staking/src/offchain_election.rs | 148 +++-- frame/staking/src/testing_utils.rs | 164 ++--- frame/staking/src/tests.rs | 842 +++++++++++++------------ primitives/phragmen/src/helpers.rs | 36 +- primitives/phragmen/src/lib.rs | 70 +- primitives/phragmen/src/node.rs | 45 +- primitives/phragmen/src/reduce.rs | 800 ++++++++++------------- 7 files changed, 1030 insertions(+), 1075 deletions(-) diff --git a/frame/staking/src/offchain_election.rs b/frame/staking/src/offchain_election.rs index 7f11381957..2e7daa92ca 100644 --- a/frame/staking/src/offchain_election.rs +++ b/frame/staking/src/offchain_election.rs @@ -16,20 +16,18 @@ //! Helpers for offchain worker election. -use crate::{ - Call, Module, Trait, ValidatorIndex, NominatorIndex, Compact, OffchainAccuracy, -}; +use crate::{Call, Compact, Module, NominatorIndex, OffchainAccuracy, Trait, ValidatorIndex}; use codec::Encode; -use frame_system::offchain::{SubmitUnsignedTransaction}; use frame_support::debug; +use frame_system::offchain::SubmitUnsignedTransaction; use sp_phragmen::{ - reduce, ExtendedBalance, PhragmenResult, Assignment, PhragmenScore, - build_support_map, evaluate_support, + build_support_map, evaluate_support, reduce, Assignment, ExtendedBalance, PhragmenResult, + PhragmenScore, }; -use sp_std::{prelude::*, convert::TryInto}; -use sp_runtime::{RuntimeAppPublic, RuntimeDebug}; use sp_runtime::offchain::storage::StorageValueRef; use sp_runtime::PerThing; +use sp_runtime::{RuntimeAppPublic, RuntimeDebug}; +use sp_std::{convert::TryInto, prelude::*}; #[derive(RuntimeDebug)] pub enum OffchainElectionError { @@ -64,22 +62,23 @@ pub(crate) fn set_check_offchain_execution_status( let storage = StorageValueRef::persistent(&OFFCHAIN_HEAD_DB); let threshold = T::BlockNumber::from(OFFCHAIN_REPEAT); - let mutate_stat = storage.mutate::< - _, - &'static str, - _, - >(|maybe_head: Option>| { - match maybe_head { - Some(Some(head)) if now < head => Err("fork."), - Some(Some(head)) if now >= head && now <= head + threshold => Err("recently executed."), - Some(Some(head)) if now > head + threshold => - // we can run again now. Write the new head. - Ok(now), - _ => - // value doesn't exists. Probably this node just booted up. Write, and run - Ok(now), - } - }); + let mutate_stat = + storage.mutate::<_, &'static str, _>(|maybe_head: Option>| { + match maybe_head { + Some(Some(head)) if now < head => Err("fork."), + Some(Some(head)) if now >= head && now <= head + threshold => { + Err("recently executed.") + } + Some(Some(head)) if now > head + threshold => { + // we can run again now. Write the new head. + Ok(now) + } + _ => { + // value doesn't exists. Probably this node just booted up. Write, and run + Ok(now) + } + } + }); match mutate_stat { // all good @@ -98,10 +97,11 @@ pub(crate) fn compute_offchain_election() -> Result<(), OffchainElecti // For each local key is in the stored authority keys, try and submit. Breaks out after first // successful submission. - for (index, ref pubkey) in local_keys.into_iter().filter_map(|key| - keys.iter().enumerate().find(|(_, val_key)| **val_key == key) - ) { - + for (index, ref pubkey) in local_keys.into_iter().filter_map(|key| { + keys.iter() + .enumerate() + .find(|(_, val_key)| **val_key == key) + }) { // compute raw solution. let PhragmenResult { winners, @@ -110,16 +110,12 @@ pub(crate) fn compute_offchain_election() -> Result<(), OffchainElecti .ok_or(OffchainElectionError::ElectionFailed)?; // process and prepare it for submission. - let (winners, compact, score) = prepare_submission::( - assignments, - winners, - true, - )?; + let (winners, compact, score) = prepare_submission::(assignments, winners, true)?; // sign it. - let signature_payload: SignaturePayload = - (&winners, &compact, &score, &(index as u32)); - let signature = pubkey.sign(&signature_payload.encode()) + let signature_payload: SignaturePayload = (&winners, &compact, &score, &(index as u32)); + let signature = pubkey + .sign(&signature_payload.encode()) .ok_or(OffchainElectionError::SigningFailed)?; // send it. @@ -129,16 +125,21 @@ pub(crate) fn compute_offchain_election() -> Result<(), OffchainElecti score, index as u32, signature, - ).into(); - - let ok = T::SubmitTransaction::submit_unsigned(call).map_err(|_| { - debug::native::warn!( - target: "staking", - "failed to submit offchain solution with key {:?}", - pubkey, - ); - }).is_ok(); - if ok { return Ok(()) } + ) + .into(); + + let ok = T::SubmitTransaction::submit_unsigned(call) + .map_err(|_| { + debug::native::warn!( + target: "staking", + "failed to submit offchain solution with key {:?}", + pubkey, + ); + }) + .is_ok(); + if ok { + return Ok(()); + } } // no key left and no submission. @@ -158,25 +159,30 @@ where ExtendedBalance: From<::Inner>, { // make sure that the snapshot is available. - let snapshot_validators = >::snapshot_validators() - .ok_or(OffchainElectionError::SnapshotUnavailable)?; - let snapshot_nominators = >::snapshot_nominators() - .ok_or(OffchainElectionError::SnapshotUnavailable)?; + let snapshot_validators = + >::snapshot_validators().ok_or(OffchainElectionError::SnapshotUnavailable)?; + let snapshot_nominators = + >::snapshot_nominators().ok_or(OffchainElectionError::SnapshotUnavailable)?; // all helper closures let nominator_index = |a: &T::AccountId| -> Option { - snapshot_nominators.iter().position(|x| x == a).and_then(|i| - >::try_into(i).ok() - ) + snapshot_nominators + .iter() + .position(|x| x == a) + .and_then(|i| >::try_into(i).ok()) }; let validator_index = |a: &T::AccountId| -> Option { - snapshot_validators.iter().position(|x| x == a).and_then(|i| - >::try_into(i).ok() - ) + snapshot_validators + .iter() + .position(|x| x == a) + .and_then(|i| >::try_into(i).ok()) }; // Clean winners. - let winners = winners.into_iter().map(|(w, _)| w).collect::>(); + let winners = winners + .into_iter() + .map(|(w, _)| w) + .collect::>(); // convert into absolute value and to obtain the reduced version. let mut staked = sp_phragmen::assignment_ratio_to_staked( @@ -205,24 +211,28 @@ where >::slashable_balance_of_extended, ); - let (support_map, _) = build_support_map::( - winners.as_slice(), - staked.as_slice(), - ); + let (support_map, _) = + build_support_map::(winners.as_slice(), staked.as_slice()); evaluate_support::(&support_map) }; // compact encode the assignment. - let compact = Compact::from_assignment( - low_accuracy_assignment, - nominator_index, - validator_index, - ).unwrap(); + let compact = + Compact::from_assignment(low_accuracy_assignment, nominator_index, validator_index) + .unwrap(); // winners to index. - let winners = winners.into_iter().map(|w| - snapshot_validators.iter().position(|v| *v == w).unwrap().try_into().unwrap() - ).collect::>(); + let winners = winners + .into_iter() + .map(|w| { + snapshot_validators + .iter() + .position(|v| *v == w) + .unwrap() + .try_into() + .unwrap() + }) + .collect::>(); Ok((winners, compact, score)) } diff --git a/frame/staking/src/testing_utils.rs b/frame/staking/src/testing_utils.rs index badce8ca76..94fdd18597 100644 --- a/frame/staking/src/testing_utils.rs +++ b/frame/staking/src/testing_utils.rs @@ -21,14 +21,16 @@ //! this feature in the current crate's Cargo.toml will leak the all of this into a normal release //! build. Just don't do it. -use rand::Rng; -use codec::{Encode, Decode}; -use sp_core::hashing::blake2_256; -use sp_phragmen::{reduce, evaluate_support, build_support_map, Assignment, StakedAssignment, PhragmenScore}; +use crate::*; +use codec::{Decode, Encode}; +use frame_support::assert_ok; use frame_system::RawOrigin; -use frame_support::{assert_ok}; use pallet_indices::address::Address; -use crate::*; +use rand::Rng; +use sp_core::hashing::blake2_256; +use sp_phragmen::{ + build_support_map, evaluate_support, reduce, Assignment, PhragmenScore, StakedAssignment, +}; const CTRL_PREFIX: u32 = 1000; const NOMINATOR_PREFIX: u32 = 1_000_000; @@ -47,7 +49,7 @@ pub fn random(a: u32, b: u32) -> u32 { /// Set the desired validator count, with related storage items. pub fn set_validator_count(to_elect: u32) { ValidatorCount::put(to_elect); - MinimumValidatorCount::put(to_elect/2); + MinimumValidatorCount::put(to_elect / 2); >::put(ElectionStatus::Open(T::BlockNumber::from(1u32))); } @@ -74,7 +76,8 @@ pub fn signed_account(index: u32) -> T::Origin { /// Bond a validator. pub fn bond_validator(stash: T::AccountId, ctrl: u32, val: BalanceOf) - where T::Lookup: StaticLookup> +where + T::Lookup: StaticLookup>, { let _ = T::Currency::make_free_balance_be(&stash, val); assert_ok!(>::bond( @@ -93,9 +96,10 @@ pub fn bond_nominator( stash: T::AccountId, ctrl: u32, val: BalanceOf, - target: Vec> -) where T::Lookup: StaticLookup> { - + target: Vec>, +) where + T::Lookup: StaticLookup>, +{ let _ = T::Currency::make_free_balance_be(&stash, val); assert_ok!(>::bond( signed::(stash), @@ -108,11 +112,10 @@ pub fn bond_nominator( /// Bond `nun_validators` validators and `num_nominator` nominators with `edge_per_voter` random /// votes per nominator. -pub fn setup_chain_stakers( - num_validators: u32, - num_voters: u32, - edge_per_voter: u32, -) where T::Lookup: StaticLookup> { +pub fn setup_chain_stakers(num_validators: u32, num_voters: u32, edge_per_voter: u32) +where + T::Lookup: StaticLookup>, +{ (0..num_validators).for_each(|i| { // println!("bonding validator {}/{}", i, num_validators); bond_validator::( @@ -124,7 +127,9 @@ pub fn setup_chain_stakers( (0..num_voters).for_each(|i| { let mut targets: Vec> = Vec::with_capacity(edge_per_voter as usize); - let mut all_targets = (0..num_validators).map(|t| address::(t)).collect::>(); + let mut all_targets = (0..num_validators) + .map(|t| address::(t)) + .collect::>(); assert!(num_validators >= edge_per_voter); (0..edge_per_voter).for_each(|_| { let target = all_targets.remove(random(0, all_targets.len() as u32 - 1) as usize); @@ -139,14 +144,14 @@ pub fn setup_chain_stakers( ); }); - >::create_stakers_snapshot(); } /// Build a _really bad_ but acceptable solution for election. This should always yield a solution /// which has a less score than the seq-phragmen. -pub fn get_weak_solution(do_reduce: bool) --> (Vec, Compact, PhragmenScore) { +pub fn get_weak_solution( + do_reduce: bool, +) -> (Vec, Compact, PhragmenScore) { use sp_std::collections::btree_map::BTreeMap; let mut backing_stake_of: BTreeMap> = BTreeMap::new(); @@ -164,7 +169,6 @@ pub fn get_weak_solution(do_reduce: bool) }) }); - // elect winners let mut sorted: Vec = backing_stake_of.keys().cloned().collect(); sorted.sort_by_key(|x| backing_stake_of.get(x).unwrap()); @@ -197,15 +201,17 @@ pub fn get_weak_solution(do_reduce: bool) // assign main portion // only take the first half into account. This should highly imbalance stuff, which is good. - dist - .iter_mut() - .take( if dist_len > 1 { (dist_len as usize) / 2 } else { 1 } ) - .for_each(|(_, w)| - { - let partial = stake / dist_len; - *w = partial; - sum += partial; - }); + dist.iter_mut() + .take(if dist_len > 1 { + (dist_len as usize) / 2 + } else { + 1 + }) + .for_each(|(_, w)| { + let partial = stake / dist_len; + *w = partial; + sum += partial; + }); // assign the leftover to last. let leftover = stake - sum; @@ -219,15 +225,17 @@ pub fn get_weak_solution(do_reduce: bool) }); // add self support to winners. - winners.iter().for_each(|w| staked_assignments.push(StakedAssignment { - who: w.clone(), - distribution: vec![( - w.clone(), - , u64>>::convert( - >::slashable_balance_of(&w) - ) as ExtendedBalance, - )] - })); + winners.iter().for_each(|w| { + staked_assignments.push(StakedAssignment { + who: w.clone(), + distribution: vec![( + w.clone(), + , u64>>::convert( + >::slashable_balance_of(&w), + ) as ExtendedBalance, + )], + }) + }); if do_reduce { reduce(&mut staked_assignments); @@ -238,73 +246,77 @@ pub fn get_weak_solution(do_reduce: bool) let snapshot_nominators = >::snapshot_nominators().unwrap(); let nominator_index = |a: &T::AccountId| -> Option { - snapshot_nominators.iter().position(|x| x == a).and_then(|i| - >::try_into(i).ok() - ) + snapshot_nominators + .iter() + .position(|x| x == a) + .and_then(|i| >::try_into(i).ok()) }; let validator_index = |a: &T::AccountId| -> Option { - snapshot_validators.iter().position(|x| x == a).and_then(|i| - >::try_into(i).ok() - ) + snapshot_validators + .iter() + .position(|x| x == a) + .and_then(|i| >::try_into(i).ok()) }; let stake_of = |who: &T::AccountId| -> ExtendedBalance { , u64>>::convert( - >::slashable_balance_of(who) + >::slashable_balance_of(who), ) as ExtendedBalance }; // convert back to ratio assignment. This takes less space. - let low_accuracy_assignment: Vec> = staked_assignments - .into_iter() - .map(|sa| sa.into_assignment(true)) - .collect(); + let low_accuracy_assignment: Vec> = + staked_assignments + .into_iter() + .map(|sa| sa.into_assignment(true)) + .collect(); // re-calculate score based on what the chain will decode. let score = { let staked: Vec> = low_accuracy_assignment - .iter() - .map(|a| { - let stake = stake_of(&a.who); - a.clone().into_staked(stake, true) - }).collect(); - - let (support_map, _) = build_support_map::( - winners.as_slice(), - staked.as_slice(), - ); + .iter() + .map(|a| { + let stake = stake_of(&a.who); + a.clone().into_staked(stake, true) + }) + .collect(); + + let (support_map, _) = + build_support_map::(winners.as_slice(), staked.as_slice()); evaluate_support::(&support_map) }; - // compact encode the assignment. - let compact = Compact::from_assignment( - low_accuracy_assignment, - nominator_index, - validator_index, - ).unwrap(); + let compact = + Compact::from_assignment(low_accuracy_assignment, nominator_index, validator_index) + .unwrap(); // winners to index. - let winners = winners.into_iter().map(|w| - snapshot_validators.iter().position(|v| *v == w).unwrap().try_into().unwrap() - ).collect::>(); + let winners = winners + .into_iter() + .map(|w| { + snapshot_validators + .iter() + .position(|v| *v == w) + .unwrap() + .try_into() + .unwrap() + }) + .collect::>(); (winners, compact, score) } /// Create a solution for seq-phragmen. This uses the same internal function as used by the offchain /// worker code. -pub fn get_seq_phragmen_solution(do_reduce: bool) --> (Vec, Compact, PhragmenScore) { +pub fn get_seq_phragmen_solution( + do_reduce: bool, +) -> (Vec, Compact, PhragmenScore) { let sp_phragmen::PhragmenResult { winners, assignments, } = >::do_phragmen::().unwrap(); - offchain_election::prepare_submission::( - assignments, - winners, - do_reduce, - ).unwrap() + offchain_election::prepare_submission::(assignments, winners, do_reduce).unwrap() } /// Remove all validator, nominators, votes and exposures. diff --git a/frame/staking/src/tests.rs b/frame/staking/src/tests.rs index 1e0599c41a..07001039f3 100644 --- a/frame/staking/src/tests.rs +++ b/frame/staking/src/tests.rs @@ -2687,22 +2687,21 @@ fn remove_multi_deferred() { } mod offchain_phragmen { - use std::sync::Arc; - use parking_lot::RwLock; use crate::*; + use frame_support::{assert_noop, assert_ok, debug}; use mock::*; - use sp_core::traits::KeystoreExt; - use sp_core::testing::KeyStore; + use parking_lot::RwLock; use sp_core::offchain::{ - OffchainExt, - TransactionPoolExt, - testing::{TestOffchainExt, TestTransactionPoolExt, PoolState}, + testing::{PoolState, TestOffchainExt, TestTransactionPoolExt}, + OffchainExt, TransactionPoolExt, }; + use sp_core::testing::KeyStore; + use sp_core::traits::KeystoreExt; use sp_io::TestExternalities; - use substrate_test_utils::assert_eq_uvec; - use frame_support::{assert_ok, assert_noop, debug}; - use sp_runtime::traits::OffchainWorker; use sp_phragmen::StakedAssignment; + use sp_runtime::traits::OffchainWorker; + use std::sync::Arc; + use substrate_test_utils::assert_eq_uvec; type DummyT = dummy_sr25519::AuthorityId; @@ -2736,11 +2735,14 @@ mod offchain_phragmen { let account = LOCAL_KEY_ACCOUNT.with(|v| *v.borrow()); let key = dummy_sr25519::dummy_key_for(account); - let _ = keystore.write().insert_unknown( - ::ID, - &format!("{}/staking{}", mock::PHRASE, account), - key.as_ref(), - ).unwrap(); + let _ = keystore + .write() + .insert_unknown( + ::ID, + &format!("{}/staking{}", mock::PHRASE, account), + key.as_ref(), + ) + .unwrap(); debug::native::debug!( target: "staking", "generated key for account {}: {:?}", @@ -2755,23 +2757,26 @@ mod offchain_phragmen { #[test] fn is_current_session_final_works() { - ExtBuilder::default().session_per_era(3).build().execute_with(|| { - start_era(1); - assert_eq!(Session::current_index(), 4); - assert_eq!(Staking::current_era(), 1); - assert_eq!(Staking::is_current_session_final(), false); - - start_session(4); - assert_eq!(Session::current_index(), 5); - assert_eq!(Staking::current_era(), 1); - assert_eq!(Staking::is_current_session_final(), true); - - start_session(5); - assert_eq!(Session::current_index(), 6); - // era changed. - assert_eq!(Staking::current_era(), 2); - assert_eq!(Staking::is_current_session_final(), false); - }) + ExtBuilder::default() + .session_per_era(3) + .build() + .execute_with(|| { + start_era(1); + assert_eq!(Session::current_index(), 4); + assert_eq!(Staking::current_era(), 1); + assert_eq!(Staking::is_current_session_final(), false); + + start_session(4); + assert_eq!(Session::current_index(), 5); + assert_eq!(Staking::current_era(), 1); + assert_eq!(Staking::is_current_session_final(), true); + + start_session(5); + assert_eq!(Session::current_index(), 6); + // era changed. + assert_eq!(Staking::current_era(), 2); + assert_eq!(Staking::is_current_session_final(), false); + }) } #[test] @@ -2781,46 +2786,45 @@ mod offchain_phragmen { .session_length(10) .election_lookahead(3) .build() - .execute_with( - || { - run_to_block(10); - assert_session_era!(1, 0); - assert_eq!(Staking::era_election_status(), ElectionStatus::Closed); - assert!(Staking::snapshot_nominators().is_none()); - assert!(Staking::snapshot_validators().is_none()); - - run_to_block(18); - assert_session_era!(1, 0); - assert_eq!(Staking::era_election_status(), ElectionStatus::Closed); - assert!(Staking::snapshot_nominators().is_none()); - assert!(Staking::snapshot_validators().is_none()); - - run_to_block(40); - assert_session_era!(4, 0); - assert_eq!(Staking::era_election_status(), ElectionStatus::Closed); - assert!(Staking::snapshot_nominators().is_none()); - assert!(Staking::snapshot_validators().is_none()); - - run_to_block(46); - assert_eq!(Staking::era_election_status(), ElectionStatus::Closed); - assert!(Staking::snapshot_nominators().is_none()); - assert!(Staking::snapshot_validators().is_none()); - - run_to_block(47); - assert_eq!(Staking::era_election_status(), ElectionStatus::Open(47)); - assert!(Staking::snapshot_nominators().is_some()); - assert!(Staking::snapshot_validators().is_some()); - - run_to_block(49); - assert_eq!(Staking::era_election_status(), ElectionStatus::Open(47)); - assert!(Staking::snapshot_nominators().is_some()); - assert!(Staking::snapshot_validators().is_some()); - - run_to_block(50); - assert_eq!(Staking::era_election_status(), ElectionStatus::Closed); - assert!(Staking::snapshot_nominators().is_none()); - assert!(Staking::snapshot_validators().is_none()); - }) + .execute_with(|| { + run_to_block(10); + assert_session_era!(1, 0); + assert_eq!(Staking::era_election_status(), ElectionStatus::Closed); + assert!(Staking::snapshot_nominators().is_none()); + assert!(Staking::snapshot_validators().is_none()); + + run_to_block(18); + assert_session_era!(1, 0); + assert_eq!(Staking::era_election_status(), ElectionStatus::Closed); + assert!(Staking::snapshot_nominators().is_none()); + assert!(Staking::snapshot_validators().is_none()); + + run_to_block(40); + assert_session_era!(4, 0); + assert_eq!(Staking::era_election_status(), ElectionStatus::Closed); + assert!(Staking::snapshot_nominators().is_none()); + assert!(Staking::snapshot_validators().is_none()); + + run_to_block(46); + assert_eq!(Staking::era_election_status(), ElectionStatus::Closed); + assert!(Staking::snapshot_nominators().is_none()); + assert!(Staking::snapshot_validators().is_none()); + + run_to_block(47); + assert_eq!(Staking::era_election_status(), ElectionStatus::Open(47)); + assert!(Staking::snapshot_nominators().is_some()); + assert!(Staking::snapshot_validators().is_some()); + + run_to_block(49); + assert_eq!(Staking::era_election_status(), ElectionStatus::Open(47)); + assert!(Staking::snapshot_nominators().is_some()); + assert!(Staking::snapshot_validators().is_some()); + + run_to_block(50); + assert_eq!(Staking::era_election_status(), ElectionStatus::Closed); + assert!(Staking::snapshot_nominators().is_none()); + assert!(Staking::snapshot_validators().is_none()); + }) } #[test] @@ -2831,13 +2835,18 @@ mod offchain_phragmen { assert_eq!(Staking::era_election_status(), ElectionStatus::Closed); // some election must have happened by now. assert_eq!( - System::events().into_iter().map(|r| r.event).filter_map(|e| { - if let MetaEvent::staking(inner) = e { - Some(inner) - } else { - None - } - }).last().unwrap(), + System::events() + .into_iter() + .map(|r| r.event) + .filter_map(|e| { + if let MetaEvent::staking(inner) = e { + Some(inner) + } else { + None + } + }) + .last() + .unwrap(), RawEvent::StakingElection(ElectionCompute::OnChain), ); }) @@ -2850,23 +2859,22 @@ mod offchain_phragmen { .offchain_phragmen_ext() .election_lookahead(3) .build() - .execute_with( - || { - run_to_block(12); - assert!(Staking::snapshot_validators().is_some()); - assert_eq!(Staking::era_election_status(), ElectionStatus::Open(12)); - - // nominate more than the limit - let limit: NominatorIndex = ValidatorIndex::max_value() as NominatorIndex + 1; - let ctrl = 1_000_000; - for i in 0..limit { - bond_validator((1000 + i).into(), (1000 + i + ctrl).into(), 100); - } + .execute_with(|| { + run_to_block(12); + assert!(Staking::snapshot_validators().is_some()); + assert_eq!(Staking::era_election_status(), ElectionStatus::Open(12)); + + // nominate more than the limit + let limit: NominatorIndex = ValidatorIndex::max_value() as NominatorIndex + 1; + let ctrl = 1_000_000; + for i in 0..limit { + bond_validator((1000 + i).into(), (1000 + i + ctrl).into(), 100); + } - run_to_block(27); - assert!(Staking::snapshot_validators().is_none()); - assert_eq!(Staking::era_election_status(), ElectionStatus::Closed); - }) + run_to_block(27); + assert!(Staking::snapshot_validators().is_none()); + assert_eq!(Staking::era_election_status(), ElectionStatus::Closed); + }) } #[test] @@ -2875,26 +2883,20 @@ mod offchain_phragmen { .offchain_phragmen_ext() .election_lookahead(3) .build() - .execute_with( - || { - run_to_block(12); - assert!(Staking::snapshot_validators().is_some()); - assert_eq!(Staking::era_election_status(), ElectionStatus::Open(12)); + .execute_with(|| { + run_to_block(12); + assert!(Staking::snapshot_validators().is_some()); + assert_eq!(Staking::era_election_status(), ElectionStatus::Open(12)); - let call = crate::Call::bond(999, 998, Default::default()); - let outer: mock::Call = call.into(); + let call = crate::Call::bond(999, 998, Default::default()); + let outer: mock::Call = call.into(); - let lock_staking: LockStakingStatus = Default::default(); - assert_eq!( - lock_staking.validate( - &10, - &outer, - Default::default(), - Default::default(), - ), - TransactionValidity::Err(InvalidTransaction::Stale.into()), - ) - }) + let lock_staking: LockStakingStatus = Default::default(); + assert_eq!( + lock_staking.validate(&10, &outer, Default::default(), Default::default(),), + TransactionValidity::Err(InvalidTransaction::Stale.into()), + ) + }) } #[test] @@ -2904,37 +2906,41 @@ mod offchain_phragmen { ExtBuilder::default() .offchain_phragmen_ext() .build() - .execute_with( - || { - run_to_block(12); - assert_eq!(Staking::era_election_status(), ElectionStatus::Open(12)); - assert!(Staking::snapshot_validators().is_some()); - - let (compact, winners, score) = prepare_submission_with(true, |_| {}); - assert_ok!(Staking::submit_election_solution( - Origin::signed(10), - winners, - compact, - score, - )); + .execute_with(|| { + run_to_block(12); + assert_eq!(Staking::era_election_status(), ElectionStatus::Open(12)); + assert!(Staking::snapshot_validators().is_some()); - let queued_result = Staking::queued_elected().unwrap(); - assert_eq!(queued_result.compute, ElectionCompute::Signed); + let (compact, winners, score) = prepare_submission_with(true, |_| {}); + assert_ok!(Staking::submit_election_solution( + Origin::signed(10), + winners, + compact, + score, + )); - run_to_block(15); - assert_eq!(Staking::era_election_status(), ElectionStatus::Closed); + let queued_result = Staking::queued_elected().unwrap(); + assert_eq!(queued_result.compute, ElectionCompute::Signed); - assert_eq!( - System::events().into_iter().map(|r| r.event).filter_map(|e| { - if let MetaEvent::staking(inner) = e { - Some(inner) - } else { - None - } - }).last().unwrap(), - RawEvent::StakingElection(ElectionCompute::Signed), - ); - }) + run_to_block(15); + assert_eq!(Staking::era_election_status(), ElectionStatus::Closed); + + assert_eq!( + System::events() + .into_iter() + .map(|r| r.event) + .filter_map(|e| { + if let MetaEvent::staking(inner) = e { + Some(inner) + } else { + None + } + }) + .last() + .unwrap(), + RawEvent::StakingElection(ElectionCompute::Signed), + ); + }) } #[test] @@ -2943,38 +2949,40 @@ mod offchain_phragmen { ExtBuilder::default() .offchain_phragmen_ext() .build() - .execute_with( - || { - run_to_block(14); - assert_eq!(Staking::era_election_status(), ElectionStatus::Open(12)); + .execute_with(|| { + run_to_block(14); + assert_eq!(Staking::era_election_status(), ElectionStatus::Open(12)); - let (compact, winners, score) = prepare_submission_with(true, |_| {}); - assert_ok!( - Staking::submit_election_solution( + let (compact, winners, score) = prepare_submission_with(true, |_| {}); + assert_ok!(Staking::submit_election_solution( Origin::signed(10), winners, compact, score, - ) - ); - - let queued_result = Staking::queued_elected().unwrap(); - assert_eq!(queued_result.compute, ElectionCompute::Signed); + )); - run_to_block(15); - assert_eq!(Staking::era_election_status(), ElectionStatus::Closed); + let queued_result = Staking::queued_elected().unwrap(); + assert_eq!(queued_result.compute, ElectionCompute::Signed); - assert_eq!( - System::events().into_iter().map(|r| r.event).filter_map(|e| { - if let MetaEvent::staking(inner) = e { - Some(inner) - } else { - None - } - }).last().unwrap(), - RawEvent::StakingElection(ElectionCompute::Signed), - ); - }) + run_to_block(15); + assert_eq!(Staking::era_election_status(), ElectionStatus::Closed); + + assert_eq!( + System::events() + .into_iter() + .map(|r| r.event) + .filter_map(|e| { + if let MetaEvent::staking(inner) = e { + Some(inner) + } else { + None + } + }) + .last() + .unwrap(), + RawEvent::StakingElection(ElectionCompute::Signed), + ); + }) } #[test] @@ -2984,22 +2992,21 @@ mod offchain_phragmen { ExtBuilder::default() .offchain_phragmen_ext() .build() - .execute_with( - || { - run_to_block(11); - // submission is not yet allowed - assert_eq!(Staking::era_election_status(), ElectionStatus::Closed); + .execute_with(|| { + run_to_block(11); + // submission is not yet allowed + assert_eq!(Staking::era_election_status(), ElectionStatus::Closed); - // create all the indices just to build the solution. - Staking::create_stakers_snapshot(); - let (compact, winners, score) = prepare_submission_with(true, |_| {}); - Staking::kill_stakers_snapshot(); + // create all the indices just to build the solution. + Staking::create_stakers_snapshot(); + let (compact, winners, score) = prepare_submission_with(true, |_| {}); + Staking::kill_stakers_snapshot(); - assert_noop!( - Staking::submit_election_solution(Origin::signed(10), winners, compact, score), - Error::::PhragmenEarlySubmission, - ); - }) + assert_noop!( + Staking::submit_election_solution(Origin::signed(10), winners, compact, score), + Error::::PhragmenEarlySubmission, + ); + }) } #[test] @@ -3010,22 +3017,26 @@ mod offchain_phragmen { .has_stakers(false) .validator_count(4) .build() - .execute_with( - || { - build_offchain_phragmen_test_ext(); - run_to_block(12); + .execute_with(|| { + build_offchain_phragmen_test_ext(); + run_to_block(12); - // a good solution - let (compact, winners, score) = prepare_submission_with(true, |_| {}); - assert_ok!(Staking::submit_election_solution(Origin::signed(10), winners, compact, score)); + // a good solution + let (compact, winners, score) = prepare_submission_with(true, |_| {}); + assert_ok!(Staking::submit_election_solution( + Origin::signed(10), + winners, + compact, + score + )); - // a bad solution - let (compact, winners, score) = horrible_phragmen_with_post_processing(false); - assert_noop!( - Staking::submit_election_solution(Origin::signed(10), winners, compact, score), - Error::::PhragmenWeakSubmission, - ); - }) + // a bad solution + let (compact, winners, score) = horrible_phragmen_with_post_processing(false); + assert_noop!( + Staking::submit_election_solution(Origin::signed(10), winners, compact, score), + Error::::PhragmenWeakSubmission, + ); + }) } #[test] @@ -3036,19 +3047,28 @@ mod offchain_phragmen { .validator_count(4) .has_stakers(false) .build() - .execute_with( - || { - build_offchain_phragmen_test_ext(); - run_to_block(12); + .execute_with(|| { + build_offchain_phragmen_test_ext(); + run_to_block(12); - // a meeeeh solution - let (compact, winners, score) = horrible_phragmen_with_post_processing(false); - assert_ok!(Staking::submit_election_solution(Origin::signed(10), winners, compact, score)); + // a meeeeh solution + let (compact, winners, score) = horrible_phragmen_with_post_processing(false); + assert_ok!(Staking::submit_election_solution( + Origin::signed(10), + winners, + compact, + score + )); - // a better solution - let (compact, winners, score) = prepare_submission_with(true, |_| {}); - assert_ok!(Staking::submit_election_solution(Origin::signed(10), winners, compact, score)); - }) + // a better solution + let (compact, winners, score) = prepare_submission_with(true, |_| {}); + assert_ok!(Staking::submit_election_solution( + Origin::signed(10), + winners, + compact, + score + )); + }) } #[test] @@ -3060,7 +3080,7 @@ mod offchain_phragmen { .validator_count(2) .build(); let state = offchainify(&mut ext); - ext.execute_with(||{ + ext.execute_with(|| { run_to_block(12); // local key 11 is in the elected set. @@ -3074,7 +3094,7 @@ mod offchain_phragmen { let call = extrinsic.call; let inner = match call { - mock::Call::Staking(inner) => { inner }, + mock::Call::Staking(inner) => inner, }; // pass this call to ValidateUnsigned @@ -3085,9 +3105,8 @@ mod offchain_phragmen { priority: 1125, // the proposed slot stake. requires: vec![], provides: vec![(Staking::current_era(), signing_key).encode()], - longevity: TryInto::::try_into( - ::ElectionLookahead::get() - ).unwrap_or(150_u64), + longevity: TryInto::::try_into(::ElectionLookahead::get()) + .unwrap_or(150_u64), propagate: true, }) ) @@ -3102,13 +3121,16 @@ mod offchain_phragmen { .validator_count(4) .build(); let state = offchainify(&mut ext); - ext.execute_with(||{ + ext.execute_with(|| { run_to_block(12); // put a good solution on-chain let (compact, winners, score) = prepare_submission_with(true, |_| {}); - assert_ok!( - Staking::submit_election_solution(Origin::signed(10), winners, compact, score), - ); + assert_ok!(Staking::submit_election_solution( + Origin::signed(10), + winners, + compact, + score + ),); // now run the offchain worker in the same chain state. Staking::offchain_worker(12); @@ -3119,7 +3141,7 @@ mod offchain_phragmen { let call = extrinsic.call; let inner = match call { - mock::Call::Staking(inner) => { inner }, + mock::Call::Staking(inner) => inner, }; // pass this call to ValidateUnsigned @@ -3138,7 +3160,7 @@ mod offchain_phragmen { .local_key_account(5) .build(); let state = offchainify(&mut ext); - ext.execute_with(||{ + ext.execute_with(|| { run_to_block(12); // local key 5 is not there. @@ -3158,22 +3180,21 @@ mod offchain_phragmen { .validator_count(4) .has_stakers(false) .build() - .execute_with( - || { - build_offchain_phragmen_test_ext(); - run_to_block(12); + .execute_with(|| { + build_offchain_phragmen_test_ext(); + run_to_block(12); - ValidatorCount::put(3); - let (compact, winners, score) = prepare_submission_with(true, |_| {}); - ValidatorCount::put(4); + ValidatorCount::put(3); + let (compact, winners, score) = prepare_submission_with(true, |_| {}); + ValidatorCount::put(4); - assert_eq!(winners.len(), 3); + assert_eq!(winners.len(), 3); - assert_noop!( - Staking::submit_election_solution(Origin::signed(10), winners, compact, score), - Error::::PhragmenBogusWinnerCount, - ); - }) + assert_noop!( + Staking::submit_election_solution(Origin::signed(10), winners, compact, score), + Error::::PhragmenBogusWinnerCount, + ); + }) } #[test] @@ -3184,22 +3205,21 @@ mod offchain_phragmen { .validator_count(8) // we simply cannot elect 8 .has_stakers(false) .build() - .execute_with( - || { - build_offchain_phragmen_test_ext(); - run_to_block(12); + .execute_with(|| { + build_offchain_phragmen_test_ext(); + run_to_block(12); - ValidatorCount::put(3); - let (compact, winners, score) = prepare_submission_with(true, |_| {}); - ValidatorCount::put(4); + ValidatorCount::put(3); + let (compact, winners, score) = prepare_submission_with(true, |_| {}); + ValidatorCount::put(4); - assert_eq!(winners.len(), 3); + assert_eq!(winners.len(), 3); - assert_noop!( - Staking::submit_election_solution(Origin::signed(10), winners, compact, score), - Error::::PhragmenBogusWinnerCount, - ); - }) + assert_noop!( + Staking::submit_election_solution(Origin::signed(10), winners, compact, score), + Error::::PhragmenBogusWinnerCount, + ); + }) } #[test] @@ -3210,20 +3230,22 @@ mod offchain_phragmen { .validator_count(8) // we simply cannot elect 8 .has_stakers(false) .build() - .execute_with( - || { - build_offchain_phragmen_test_ext(); - run_to_block(12); + .execute_with(|| { + build_offchain_phragmen_test_ext(); + run_to_block(12); - let (compact, winners, score) = prepare_submission_with(true, |_| {}); + let (compact, winners, score) = prepare_submission_with(true, |_| {}); - assert_eq!(winners.len(), 4); + assert_eq!(winners.len(), 4); - // all good. We chose 4 and it works. - assert_ok!( - Staking::submit_election_solution(Origin::signed(10), winners, compact, score), - ); - }) + // all good. We chose 4 and it works. + assert_ok!(Staking::submit_election_solution( + Origin::signed(10), + winners, + compact, + score + ),); + }) } #[test] @@ -3234,24 +3256,23 @@ mod offchain_phragmen { .validator_count(4) .has_stakers(false) .build() - .execute_with( - || { - build_offchain_phragmen_test_ext(); - run_to_block(12); + .execute_with(|| { + build_offchain_phragmen_test_ext(); + run_to_block(12); - assert_eq!(Staking::snapshot_nominators().unwrap().len(), 5 + 4); - assert_eq!(Staking::snapshot_validators().unwrap().len(), 4); - let (mut compact, winners, score) = prepare_submission_with(true, |_| {}); + assert_eq!(Staking::snapshot_nominators().unwrap().len(), 5 + 4); + assert_eq!(Staking::snapshot_validators().unwrap().len(), 4); + let (mut compact, winners, score) = prepare_submission_with(true, |_| {}); - // index 9 doesn't exist. - compact.votes1.push((9, 2)); + // index 9 doesn't exist. + compact.votes1.push((9, 2)); - // The error type sadly cannot be more specific now. - assert_noop!( - Staking::submit_election_solution(Origin::signed(10), winners, compact, score), - Error::::PhragmenBogusCompact, - ); - }) + // The error type sadly cannot be more specific now. + assert_noop!( + Staking::submit_election_solution(Origin::signed(10), winners, compact, score), + Error::::PhragmenBogusCompact, + ); + }) } #[test] @@ -3262,24 +3283,23 @@ mod offchain_phragmen { .validator_count(4) .has_stakers(false) .build() - .execute_with( - || { - build_offchain_phragmen_test_ext(); - run_to_block(12); + .execute_with(|| { + build_offchain_phragmen_test_ext(); + run_to_block(12); - assert_eq!(Staking::snapshot_nominators().unwrap().len(), 5 + 4); - assert_eq!(Staking::snapshot_validators().unwrap().len(), 4); - let (mut compact, winners, score) = prepare_submission_with(true, |_| {}); + assert_eq!(Staking::snapshot_nominators().unwrap().len(), 5 + 4); + assert_eq!(Staking::snapshot_validators().unwrap().len(), 4); + let (mut compact, winners, score) = prepare_submission_with(true, |_| {}); - // index 4 doesn't exist. - compact.votes1.push((3, 4)); + // index 4 doesn't exist. + compact.votes1.push((3, 4)); - // The error type sadly cannot be more specific now. - assert_noop!( - Staking::submit_election_solution(Origin::signed(10), winners, compact, score), - Error::::PhragmenBogusCompact, - ); - }) + // The error type sadly cannot be more specific now. + assert_noop!( + Staking::submit_election_solution(Origin::signed(10), winners, compact, score), + Error::::PhragmenBogusCompact, + ); + }) } #[test] @@ -3290,23 +3310,22 @@ mod offchain_phragmen { .validator_count(4) .has_stakers(false) .build() - .execute_with( - || { - build_offchain_phragmen_test_ext(); - run_to_block(12); + .execute_with(|| { + build_offchain_phragmen_test_ext(); + run_to_block(12); - assert_eq!(Staking::snapshot_nominators().unwrap().len(), 5 + 4); - assert_eq!(Staking::snapshot_validators().unwrap().len(), 4); - let (compact, _, score) = prepare_submission_with(true, |_| {}); + assert_eq!(Staking::snapshot_nominators().unwrap().len(), 5 + 4); + assert_eq!(Staking::snapshot_validators().unwrap().len(), 4); + let (compact, _, score) = prepare_submission_with(true, |_| {}); - // index 4 doesn't exist. - let winners = vec![0, 1, 2, 4]; + // index 4 doesn't exist. + let winners = vec![0, 1, 2, 4]; - assert_noop!( - Staking::submit_election_solution(Origin::signed(10), winners, compact, score), - Error::::PhragmenBogusWinner, - ); - }) + assert_noop!( + Staking::submit_election_solution(Origin::signed(10), winners, compact, score), + Error::::PhragmenBogusWinner, + ); + }) } #[test] @@ -3318,24 +3337,23 @@ mod offchain_phragmen { .validator_count(2) .has_stakers(false) .build() - .execute_with( - || { - build_offchain_phragmen_test_ext(); - run_to_block(12); + .execute_with(|| { + build_offchain_phragmen_test_ext(); + run_to_block(12); + + assert_eq!(Staking::snapshot_nominators().unwrap().len(), 5 + 4); + assert_eq!(Staking::snapshot_validators().unwrap().len(), 4); + let (compact, winners, score) = prepare_submission_with(true, |a| { + a.iter_mut() + .find(|x| x.who == 5) + .map(|x| x.distribution = vec![(20, 50), (40, 30), (30, 20)]); + }); - assert_eq!(Staking::snapshot_nominators().unwrap().len(), 5 + 4); - assert_eq!(Staking::snapshot_validators().unwrap().len(), 4); - let (compact, winners, score) = prepare_submission_with(true, |a| { - a.iter_mut().find(|x| x.who == 5).map(|x| - x.distribution = vec![(20, 50), (40, 30), (30, 20)] + assert_noop!( + Staking::submit_election_solution(Origin::signed(10), winners, compact, score), + Error::::PhragmenBogusEdge, ); - }); - - assert_noop!( - Staking::submit_election_solution(Origin::signed(10), winners, compact, score), - Error::::PhragmenBogusEdge, - ); - }) + }) } #[test] @@ -3346,24 +3364,26 @@ mod offchain_phragmen { .validator_count(4) .has_stakers(false) .build() - .execute_with( - || { - build_offchain_phragmen_test_ext(); - run_to_block(12); + .execute_with(|| { + build_offchain_phragmen_test_ext(); + run_to_block(12); + + let (compact, winners, score) = prepare_submission_with(true, |a| { + // mutate a self vote to target someone else. That someone else is still among the + // winners + a.iter_mut().find(|x| x.who == 10).map(|x| { + x.distribution + .iter_mut() + .find(|y| y.0 == 10) + .map(|y| y.0 = 20) + }); + }); - let (compact, winners, score) = prepare_submission_with(true, |a| { - // mutate a self vote to target someone else. That someone else is still among the - // winners - a.iter_mut().find(|x| x.who == 10).map(|x| - x.distribution.iter_mut().find(|y| y.0 == 10).map(|y| y.0 = 20) + assert_noop!( + Staking::submit_election_solution(Origin::signed(10), winners, compact, score), + Error::::PhragmenBogusSelfVote, ); - }); - - assert_noop!( - Staking::submit_election_solution(Origin::signed(10), winners, compact, score), - Error::::PhragmenBogusSelfVote, - ); - }) + }) } #[test] @@ -3374,24 +3394,26 @@ mod offchain_phragmen { .validator_count(4) .has_stakers(false) .build() - .execute_with( - || { - build_offchain_phragmen_test_ext(); - run_to_block(12); - - let (compact, winners, score) = prepare_submission_with(true, |a| { - // Remove the self vote. - a.retain(|x| x.who != 10); - // add is as a new double vote - a.push(StakedAssignment { who: 10, distribution: vec![(10, 50), (20, 50)]}); - }); + .execute_with(|| { + build_offchain_phragmen_test_ext(); + run_to_block(12); + + let (compact, winners, score) = prepare_submission_with(true, |a| { + // Remove the self vote. + a.retain(|x| x.who != 10); + // add is as a new double vote + a.push(StakedAssignment { + who: 10, + distribution: vec![(10, 50), (20, 50)], + }); + }); - // This raises score issue. - assert_noop!( - Staking::submit_election_solution(Origin::signed(10), winners, compact, score), - Error::::PhragmenBogusSelfVote, - ); - }) + // This raises score issue. + assert_noop!( + Staking::submit_election_solution(Origin::signed(10), winners, compact, score), + Error::::PhragmenBogusSelfVote, + ); + }) } #[test] @@ -3402,26 +3424,25 @@ mod offchain_phragmen { .validator_count(4) .has_stakers(false) .build() - .execute_with( - || { - build_offchain_phragmen_test_ext(); - run_to_block(12); + .execute_with(|| { + build_offchain_phragmen_test_ext(); + run_to_block(12); - // Note: we don't reduce here to be able to tweak votes3. votes3 will vanish if you - // reduce. - let (mut compact, winners, score) = prepare_submission_with(false, |_| {}); + // Note: we don't reduce here to be able to tweak votes3. votes3 will vanish if you + // reduce. + let (mut compact, winners, score) = prepare_submission_with(false, |_| {}); - if let Some(c) = compact.votes3.iter_mut().find(|x| x.0 == 0) { - // by default it should have been (0, [(2, 33%), (1, 33%)], 0) - // now the sum is above 100% - c.1 = [(2, percent(66)), (1, percent(66))]; - } + if let Some(c) = compact.votes3.iter_mut().find(|x| x.0 == 0) { + // by default it should have been (0, [(2, 33%), (1, 33%)], 0) + // now the sum is above 100% + c.1 = [(2, percent(66)), (1, percent(66))]; + } - assert_noop!( - Staking::submit_election_solution(Origin::signed(10), winners, compact, score), - Error::::PhragmenBogusCompact, - ); - }) + assert_noop!( + Staking::submit_election_solution(Origin::signed(10), winners, compact, score), + Error::::PhragmenBogusCompact, + ); + }) } #[test] @@ -3441,24 +3462,23 @@ mod offchain_phragmen { .validator_count(4) .has_stakers(false) .build() - .execute_with( - || { - build_offchain_phragmen_test_ext(); - run_to_block(12); - - let (compact, winners, score) = prepare_submission_with(false, |a| { - // 3 only voted for 20 and 40. We add a fake vote to 30. The stake sum is still - // correctly 100. - a.iter_mut().find(|x| x.who == 3).map(|x| { - x.distribution = vec![(20, 50), (40, 30), (30, 20)] + .execute_with(|| { + build_offchain_phragmen_test_ext(); + run_to_block(12); + + let (compact, winners, score) = prepare_submission_with(false, |a| { + // 3 only voted for 20 and 40. We add a fake vote to 30. The stake sum is still + // correctly 100. + a.iter_mut() + .find(|x| x.who == 3) + .map(|x| x.distribution = vec![(20, 50), (40, 30), (30, 20)]); }); - }); - assert_noop!( - Staking::submit_election_solution(Origin::signed(10), winners, compact, score), - Error::::PhragmenBogusNomination, - ); - }) + assert_noop!( + Staking::submit_election_solution(Origin::signed(10), winners, compact, score), + Error::::PhragmenBogusNomination, + ); + }) } #[test] @@ -3486,17 +3506,18 @@ mod offchain_phragmen { // slash 10 let offender_expo = Staking::stakers(10); on_offence_now( - &[ - OffenceDetails { - offender: (10, offender_expo.clone()), - reporters: vec![], - }, - ], + &[OffenceDetails { + offender: (10, offender_expo.clone()), + reporters: vec![], + }], &[Perbill::from_percent(10)], ); // validate 10 again for the next round. - assert_ok!(Staking::validate(Origin::signed(10 + 1000), Default::default())); + assert_ok!(Staking::validate( + Origin::signed(10 + 1000), + Default::default() + )); // a solution that has been prepared after the slash. let (compact, winners, score) = prepare_submission_with(false, |_| {}); @@ -3521,9 +3542,12 @@ mod offchain_phragmen { ); // new results are okay. - assert_ok!( - Staking::submit_election_solution(Origin::signed(10), winners, compact, score), - ); + assert_ok!(Staking::submit_election_solution( + Origin::signed(10), + winners, + compact, + score + ),); // finish the round. run_to_block(30); @@ -3538,19 +3562,18 @@ mod offchain_phragmen { .validator_count(4) .has_stakers(false) .build() - .execute_with( - || { - build_offchain_phragmen_test_ext(); - run_to_block(12); + .execute_with(|| { + build_offchain_phragmen_test_ext(); + run_to_block(12); - let (compact, winners, mut score) = prepare_submission_with(true, |_| {}); - score[0] += 1; + let (compact, winners, mut score) = prepare_submission_with(true, |_| {}); + score[0] += 1; - assert_noop!( - Staking::submit_election_solution(Origin::signed(10), winners, compact, score), - Error::::PhragmenBogusScore, - ); - }) + assert_noop!( + Staking::submit_election_solution(Origin::signed(10), winners, compact, score), + Error::::PhragmenBogusScore, + ); + }) } #[test] @@ -3648,19 +3671,20 @@ fn slash_kicks_validators_not_nominators_and_disables_nominator_for_kicked_valid assert_eq!(exposure_21.total, 1000 + 375); on_offence_now( - &[ - OffenceDetails { - offender: (11, exposure_11.clone()), - reporters: vec![], - }, - ], + &[OffenceDetails { + offender: (11, exposure_11.clone()), + reporters: vec![], + }], &[Perbill::from_percent(10)], ); // post-slash balance let nominator_slash_amount_11 = 125 / 10; assert_eq!(Balances::free_balance(11), 900); - assert_eq!(Balances::free_balance(101), 2000 - nominator_slash_amount_11); + assert_eq!( + Balances::free_balance(101), + 2000 - nominator_slash_amount_11 + ); // This is the best way to check that the validator was chilled; `get` will // return default value. @@ -3672,7 +3696,9 @@ fn slash_kicks_validators_not_nominators_and_disables_nominator_for_kicked_valid // and make sure that the vote will be ignored even if the validator // re-registers. - let last_slash = ::SlashingSpans::get(&11).unwrap().last_nonzero_slash(); + let last_slash = ::SlashingSpans::get(&11) + .unwrap() + .last_nonzero_slash(); assert!(nominations.submitted_in < last_slash); // actually re-bond the slashed validator diff --git a/primitives/phragmen/src/helpers.rs b/primitives/phragmen/src/helpers.rs index d1af411384..167c0de94d 100644 --- a/primitives/phragmen/src/helpers.rs +++ b/primitives/phragmen/src/helpers.rs @@ -16,19 +16,19 @@ //! Helper methods for phragmen. -use crate::{Assignment, StakedAssignment, ExtendedBalance, IdentifierT}; -use sp_std::prelude::*; +use crate::{Assignment, ExtendedBalance, IdentifierT, StakedAssignment}; use sp_runtime::PerThing; +use sp_std::prelude::*; /// Converts a vector of ratio assignments into ones with absolute budget value. pub fn assignment_ratio_to_staked( ratio: Vec>, stake_of: FS, ) -> Vec> - where - for <'r> FS: Fn(&'r A) -> ExtendedBalance, - T: sp_std::ops::Mul, - ExtendedBalance: From<::Inner>, +where + for<'r> FS: Fn(&'r A) -> ExtendedBalance, + T: sp_std::ops::Mul, + ExtendedBalance: From<::Inner>, { ratio .into_iter() @@ -42,12 +42,11 @@ pub fn assignment_ratio_to_staked( /// Converts a vector of staked assignments into ones with ratio values. pub fn assignment_staked_to_ratio( ratio: Vec>, -) -> Vec> where ExtendedBalance: From<::Inner> +) -> Vec> +where + ExtendedBalance: From<::Inner>, { - ratio - .into_iter() - .map(|a| a.into_assignment(true)) - .collect() + ratio.into_iter().map(|a| a.into_assignment(true)).collect() } #[cfg(test)] @@ -64,14 +63,14 @@ mod tests { distribution: vec![ (10u32, Perbill::from_fraction(0.5)), (20, Perbill::from_fraction(0.5)), - ] + ], }, Assignment { who: 2u32, distribution: vec![ (10, Perbill::from_fraction(0.33)), (20, Perbill::from_fraction(0.67)), - ] + ], }, ]; @@ -83,20 +82,13 @@ mod tests { vec![ StakedAssignment { who: 1u32, - distribution: vec![ - (10u32, 50), - (20, 50), - ] + distribution: vec![(10u32, 50), (20, 50),] }, StakedAssignment { who: 2u32, - distribution: vec![ - (10u32, 33), - (20, 67), - ] + distribution: vec![(10u32, 33), (20, 67),] } ] ); } } - diff --git a/primitives/phragmen/src/lib.rs b/primitives/phragmen/src/lib.rs index 8540584557..8e27d40b14 100644 --- a/primitives/phragmen/src/lib.rs +++ b/primitives/phragmen/src/lib.rs @@ -149,7 +149,7 @@ pub struct PhragmenResult { pub winners: Vec<(AccountId, ExtendedBalance)>, /// Individual assignments. for each tuple, the first elements is a voter and the second /// is the list of candidates that it supports. - pub assignments: Vec> + pub assignments: Vec>, } /// A voter's stake assignment among a set of targets, represented as ratios. @@ -163,7 +163,8 @@ pub struct Assignment { } impl Assignment - where ExtendedBalance: From<::Inner> +where + ExtendedBalance: From<::Inner>, { /// Convert from a ratio assignment into one with absolute values aka. [`StakedAssignment`]. /// @@ -175,20 +176,25 @@ impl Assignment /// If an edge ratio is [`Bounded::max_value()`], it is dropped. This edge can never mean /// anything useful. pub fn into_staked(self, stake: ExtendedBalance, fill: bool) -> StakedAssignment - where T: sp_std::ops::Mul + where + T: sp_std::ops::Mul, { let mut sum: ExtendedBalance = Bounded::min_value(); - let mut distribution = self.distribution.into_iter().filter_map(|(target, p)| { - // if this ratio is zero, then skip it. - if p == Bounded::min_value() { - None - } else { - let distribution_stake = p * stake; - // defensive only. We assume that balance cannot exceed extended balance. - sum = sum.saturating_add(distribution_stake); - Some((target, distribution_stake)) - } - }).collect::>(); + let mut distribution = self + .distribution + .into_iter() + .filter_map(|(target, p)| { + // if this ratio is zero, then skip it. + if p == Bounded::min_value() { + None + } else { + let distribution_stake = p * stake; + // defensive only. We assume that balance cannot exceed extended balance. + sum = sum.saturating_add(distribution_stake); + Some((target, distribution_stake)) + } + }) + .collect::>(); if fill { // NOTE: we can do this better. @@ -226,8 +232,7 @@ pub struct StakedAssignment { pub distribution: Vec<(AccountId, ExtendedBalance)>, } -impl StakedAssignment -{ +impl StakedAssignment { /// Converts self into the normal [`Assignment`] type. /// /// If `fill` is set to true, it _tries_ to ensure that all the potential rounding errors are @@ -241,29 +246,38 @@ impl StakedAssignment /// If an edge stake is so small that it cannot be represented in `T`, it is ignored. This edge /// can never be re-created and does not mean anything useful anymore. pub fn into_assignment(self, fill: bool) -> Assignment - where ExtendedBalance: From<::Inner> + where + ExtendedBalance: From<::Inner>, { let accuracy: u128 = T::ACCURACY.saturated_into(); let mut sum: u128 = Zero::zero(); let stake = self.distribution.iter().map(|x| x.1).sum(); - let mut distribution = self.distribution.into_iter().filter_map(|(target, w)| { - let per_thing = T::from_rational_approximation(w, stake); - if per_thing == Bounded::min_value() { - None - } else { - sum += per_thing.clone().deconstruct().saturated_into(); - Some((target, per_thing)) - } - }).collect::>(); + let mut distribution = self + .distribution + .into_iter() + .filter_map(|(target, w)| { + let per_thing = T::from_rational_approximation(w, stake); + if per_thing == Bounded::min_value() { + None + } else { + sum += per_thing.clone().deconstruct().saturated_into(); + Some((target, per_thing)) + } + }) + .collect::>(); if fill { if let Some(leftover) = accuracy.checked_sub(sum) { if let Some(last) = distribution.last_mut() { - last.1 = last.1.saturating_add(T::from_parts(leftover.saturated_into())); + last.1 = last + .1 + .saturating_add(T::from_parts(leftover.saturated_into())); } } else if let Some(excess) = sum.checked_sub(accuracy) { if let Some(last) = distribution.last_mut() { - last.1 = last.1.saturating_sub(T::from_parts(excess.saturated_into())); + last.1 = last + .1 + .saturating_sub(T::from_parts(excess.saturated_into())); } } } diff --git a/primitives/phragmen/src/node.rs b/primitives/phragmen/src/node.rs index e4061ec750..7687e3c33c 100644 --- a/primitives/phragmen/src/node.rs +++ b/primitives/phragmen/src/node.rs @@ -17,7 +17,7 @@ //! (very) Basic implementation of a graph node used in the reduce algorithm. use sp_runtime::RuntimeDebug; -use sp_std::{prelude::*, cell::RefCell, rc::Rc, fmt}; +use sp_std::{cell::RefCell, fmt, prelude::*, rc::Rc}; /// The role that a node can accept. #[derive(PartialEq, Eq, Ord, PartialOrd, Clone, RuntimeDebug)] @@ -59,7 +59,16 @@ impl Eq for NodeId {} #[cfg(feature = "std")] impl sp_std::fmt::Debug for NodeId { fn fmt(&self, f: &mut fmt::Formatter<'_>) -> sp_std::fmt::Result { - write!(f, "Node({:?}, {:?})", self.who, if self.role == NodeRole::Voter { "V" } else { "T" }) + write!( + f, + "Node({:?}, {:?})", + self.who, + if self.role == NodeRole::Voter { + "V" + } else { + "T" + } + ) } } @@ -83,7 +92,12 @@ impl Eq for Node {} #[cfg(feature = "std")] impl fmt::Debug for Node { fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - write!(f, "({:?} --> {:?})", self.id, self.parent.as_ref().map(|p| p.borrow().id.clone())) + write!( + f, + "({:?} --> {:?})", + self.id, + self.parent.as_ref().map(|p| p.borrow().id.clone()) + ) } } @@ -129,7 +143,9 @@ impl Node { let mut current = start.clone(); while let Some(ref next_parent) = current.clone().borrow().parent { - if visited.contains(next_parent) { break; } + if visited.contains(next_parent) { + break; + } parent_path.push(next_parent.clone()); current = next_parent.clone(); visited.push(current.clone()); @@ -156,7 +172,16 @@ mod tests { #[test] fn basic_create_works() { let node = Node::new(id(10)); - assert_eq!(node, Node { id: NodeId { who: 10, role: NodeRole::Target }, parent: None }); + assert_eq!( + node, + Node { + id: NodeId { + who: 10, + role: NodeRole::Target + }, + parent: None + } + ); } #[test] @@ -197,10 +222,7 @@ mod tests { (d.clone(), vec![e.clone(), a.clone(), d.clone()]), ); - assert_eq!( - Node::root(&a), - (d.clone(), vec![a.clone(), d.clone()]), - ); + assert_eq!(Node::root(&a), (d.clone(), vec![a.clone(), d.clone()]),); assert_eq!( Node::root(&c), @@ -212,10 +234,7 @@ mod tests { // <-- E Node::set_parent_of(&a, &f); - assert_eq!( - Node::root(&a), - (f.clone(), vec![a.clone(), f.clone()]), - ); + assert_eq!(Node::root(&a), (f.clone(), vec![a.clone(), f.clone()]),); assert_eq!( Node::root(&c), diff --git a/primitives/phragmen/src/reduce.rs b/primitives/phragmen/src/reduce.rs index d6a9ac3b5a..fea2552f61 100644 --- a/primitives/phragmen/src/reduce.rs +++ b/primitives/phragmen/src/reduce.rs @@ -47,16 +47,13 @@ //! //! 1. https://hackmd.io/JOn9x98iS0e0DPWQ87zGWg?view -// TODO: should be able to handle self votes. + Fuzzer should randomly create them - +use crate::node::{Node, NodeId, NodeRef, NodeRole}; +use crate::{ExtendedBalance, IdentifierT, StakedAssignment}; +use sp_runtime::traits::{Bounded, Zero}; use sp_std::{ + collections::btree_map::{BTreeMap, Entry::*}, prelude::*, - collections::{btree_map::{Entry::*, BTreeMap}}, }; -use sp_runtime::traits::{Zero, Bounded}; -use crate::node::{Node, NodeRef, NodeRole, NodeId}; -use crate::{ExtendedBalance, StakedAssignment, IdentifierT}; - /// Map type used for reduce_4. Can be easily swapped with HashMap. type Map = BTreeMap<(A, A), A>; @@ -65,12 +62,12 @@ type Map = BTreeMap<(A, A), A>; fn combinations_2(input: &[T]) -> Vec<(T, T)> { let n = input.len(); if n < 2 { - return Default::default() + return Default::default(); } - let mut comb = Vec::with_capacity(n * (n-1) / 2); + let mut comb = Vec::with_capacity(n * (n - 1) / 2); for i in 0..n { - for j in i+1..n { + for j in i + 1..n { comb.push((input[i].clone(), input[j].clone())) } } @@ -96,10 +93,7 @@ pub(crate) fn trailing_common(t1: &[T], t2: &[T]) -> usize { } /// Merges two parent roots as described by the reduce algorithm. -fn merge( - voter_root_path: Vec>, - target_root_path: Vec> -) { +fn merge(voter_root_path: Vec>, target_root_path: Vec>) { if voter_root_path.len() <= target_root_path.len() { // iterate from last to beginning, skipping the first one. This asserts that // indexing is always correct. @@ -107,20 +101,16 @@ fn merge( .iter() .take(voter_root_path.len() - 1) // take all except for last. .enumerate() - .map(|(i, n)| (n, voter_root_path[i+1].clone())) - .for_each(|(voter, next)| { - Node::set_parent_of(&next, &voter) - }); + .map(|(i, n)| (n, voter_root_path[i + 1].clone())) + .for_each(|(voter, next)| Node::set_parent_of(&next, &voter)); Node::set_parent_of(&voter_root_path[0], &target_root_path[0]); } else { target_root_path .iter() .take(target_root_path.len() - 1) // take all except for last. .enumerate() - .map(|(i, n)| (n, target_root_path[i+1].clone())) - .for_each(|(target, next)| { - Node::set_parent_of(&next, &target) - }); + .map(|(i, n)| (n, target_root_path[i + 1].clone())) + .for_each(|(target, next)| Node::set_parent_of(&next, &target)); Node::set_parent_of(&target_root_path[0], &voter_root_path[0]); } } @@ -133,10 +123,7 @@ fn merge( /// result will most likely be corrupt otherwise. /// /// O(|E_w| â‹… k). -fn reduce_4( - assignments: &mut Vec>, -) -> u32 { - +fn reduce_4(assignments: &mut Vec>) -> u32 { let mut combination_map: Map = Map::new(); let mut num_changed: u32 = Zero::zero(); @@ -157,7 +144,7 @@ fn reduce_4( match combination_map.entry((v1.clone(), v2.clone())) { Vacant(entry) => { entry.insert(who.clone()); - }, + } Occupied(mut entry) => { let other_who = entry.get_mut(); @@ -166,7 +153,8 @@ fn reduce_4( // reason for this is subtle; candidate_combinations is created once while the // inner loop might remove some edges. Note that if count() > 2, the we have // duplicates. - if assignments[assignment_index].distribution + if assignments[assignment_index] + .distribution .iter() .filter(|(t, _)| *t == v1 || *t == v2) .count() != 2 @@ -179,15 +167,19 @@ fn reduce_4( if maybe_other_assignments.is_none() { continue; } - let other_assignment = maybe_other_assignments - .expect("value is checked to be 'Some'"); + let other_assignment = + maybe_other_assignments.expect("value is checked to be 'Some'"); // Collect potential cycle votes - let mut other_cycle_votes = other_assignment.distribution + let mut other_cycle_votes = other_assignment + .distribution .iter() .filter_map(|(t, w)| { - if *t == v1 || *t == v2 { Some((t.clone(), *w)) } - else { None } + if *t == v1 || *t == v2 { + Some((t.clone(), *w)) + } else { + None + } }) .collect::>(); @@ -205,11 +197,18 @@ fn reduce_4( } else if other_votes_count == 2 { // This is a cycle. let mut who_cycle_votes: Vec<(A, ExtendedBalance)> = Vec::with_capacity(2); - assignments[assignment_index].distribution.iter().for_each(|(t, w)| { - if *t == v1 || *t == v2 { who_cycle_votes.push((t.clone(), *w)); } - }); + assignments[assignment_index] + .distribution + .iter() + .for_each(|(t, w)| { + if *t == v1 || *t == v2 { + who_cycle_votes.push((t.clone(), *w)); + } + }); - if who_cycle_votes.len() != 2 { continue; } + if who_cycle_votes.len() != 2 { + continue; + } // Align the targets similarly. This helps with the circulation below. if other_cycle_votes[0].0 != who_cycle_votes[0].0 { @@ -224,9 +223,13 @@ fn reduce_4( .chain(other_cycle_votes.iter()) .enumerate() .map(|(index, (t, w))| { - if *w <= min_value { min_value = *w; min_index = index; } + if *w <= min_value { + min_value = *w; + min_index = index; + } (t.clone(), *w) - }).collect::>(); + }) + .collect::>(); // min was in the first part of the chained iters let mut increase_indices: Vec = Vec::new(); @@ -255,51 +258,72 @@ fn reduce_4( // apply changes let mut remove_indices: Vec = Vec::with_capacity(1); increase_indices.into_iter().for_each(|i| { - let voter = if i < 2 { who.clone() } else { other_who.clone() }; + let voter = if i < 2 { + who.clone() + } else { + other_who.clone() + }; // Note: so this is pretty ambiguous. We should only look for one // assignment that meets this criteria and if we find multiple then that // is a corrupt input. Same goes for the next block. - assignments.iter_mut().filter(|a| a.who == voter).for_each(|ass| { - ass.distribution - .iter_mut() - .position(|(t, _)| *t == cycle[i].0) - .map(|idx| { - let next_value = ass.distribution[idx].1.saturating_add(min_value); - ass.distribution[idx].1 = next_value; - }); - }); + assignments + .iter_mut() + .filter(|a| a.who == voter) + .for_each(|ass| { + ass.distribution + .iter_mut() + .position(|(t, _)| *t == cycle[i].0) + .map(|idx| { + let next_value = + ass.distribution[idx].1.saturating_add(min_value); + ass.distribution[idx].1 = next_value; + }); + }); }); decrease_indices.into_iter().for_each(|i| { - let voter = if i < 2 { who.clone() } else { other_who.clone() }; - assignments.iter_mut().filter(|a| a.who == voter).for_each(|ass| { - ass.distribution - .iter_mut() - .position(|(t, _)| *t == cycle[i].0) - .map(|idx| { - let next_value = ass.distribution[idx].1.saturating_sub(min_value); - if next_value.is_zero() { - ass.distribution.remove(idx); - remove_indices.push(i); - num_changed += 1; - } else { - ass.distribution[idx].1 = next_value; - } - }); - }); + let voter = if i < 2 { + who.clone() + } else { + other_who.clone() + }; + assignments + .iter_mut() + .filter(|a| a.who == voter) + .for_each(|ass| { + ass.distribution + .iter_mut() + .position(|(t, _)| *t == cycle[i].0) + .map(|idx| { + let next_value = + ass.distribution[idx].1.saturating_sub(min_value); + if next_value.is_zero() { + ass.distribution.remove(idx); + remove_indices.push(i); + num_changed += 1; + } else { + ass.distribution[idx].1 = next_value; + } + }); + }); }); // remove either one of them. let who_removed = remove_indices.iter().find(|i| **i < 2usize).is_some(); - let other_removed = remove_indices.into_iter().find(|i| *i >= 2usize).is_some(); + let other_removed = + remove_indices.into_iter().find(|i| *i >= 2usize).is_some(); match (who_removed, other_removed) { - (false, true) => { *other_who = who.clone(); }, - (true, false) => {}, // nothing, other_who can stay there. - (true, true) => { entry.remove(); }, // remove and don't replace + (false, true) => { + *other_who = who.clone(); + } + (true, false) => {} // nothing, other_who can stay there. + (true, true) => { + entry.remove(); + } // remove and don't replace (false, false) => { // Neither of the edges was removed? impossible. debug_assert!(false, "Duplicate voter (or other corrupt input)."); - }, + } } } } @@ -318,9 +342,7 @@ fn reduce_4( /// result will most likely be corrupt otherwise. /// /// O(|Ew| â‹… m) -fn reduce_all( - assignments: &mut Vec>, -) -> u32 { +fn reduce_all(assignments: &mut Vec>) -> u32 { let mut num_changed: u32 = Zero::zero(); let mut tree: BTreeMap, NodeRef> = BTreeMap::new(); @@ -352,10 +374,14 @@ fn reduce_all( let target_exists = tree.contains_key(&target_id); // create both. - let voter_node = tree.entry(voter_id.clone()) - .or_insert(Node::new(voter_id).into_ref()).clone(); - let target_node = tree.entry(target_id.clone()) - .or_insert(Node::new(target_id).into_ref()).clone(); + let voter_node = tree + .entry(voter_id.clone()) + .or_insert(Node::new(voter_id).into_ref()) + .clone(); + let target_node = tree + .entry(target_id.clone()) + .or_insert(Node::new(target_id).into_ref()) + .clone(); // If one exists but the other one doesn't, or if both does not, then set the existing // one as the parent of the non-existing one and move on. Else, continue with the rest @@ -365,12 +391,12 @@ fn reduce_all( Node::set_parent_of(&target_node, &voter_node); dist_index += 1; continue; - }, + } (false, true) => { Node::set_parent_of(&voter_node, &target_node); dist_index += 1; continue; - }, + } (true, false) => { Node::set_parent_of(&target_node, &voter_node); dist_index += 1; @@ -392,21 +418,31 @@ fn reduce_all( // because roots are the same. #[cfg(feature = "std")] - debug_assert_eq!(target_root_path.last().unwrap(), voter_root_path.last().unwrap()); + debug_assert_eq!( + target_root_path.last().unwrap(), + voter_root_path.last().unwrap() + ); debug_assert!(common_count > 0); // cycle part of each path will be `path[path.len() - common_count - 1 : 0]` // NOTE: the order of chaining is important! it is always build from [target, ..., // voter] - let cycle = - target_root_path.iter().take(target_root_path.len() - common_count + 1).cloned() - .chain(voter_root_path.iter().take(voter_root_path.len() - common_count).rev().cloned()) + let cycle = target_root_path + .iter() + .take(target_root_path.len() - common_count + 1) + .cloned() + .chain( + voter_root_path + .iter() + .take(voter_root_path.len() - common_count) + .rev() + .cloned(), + ) .collect::>>(); // a cycle's length shall always be multiple of two. #[cfg(feature = "std")] debug_assert_eq!(cycle.len() % 2, 0); - // find minimum of cycle. let mut min_value: ExtendedBalance = Bounded::max_value(); // The voter and the target pair that create the min edge. @@ -417,8 +453,20 @@ fn reduce_all( // 1 -> next // 0 -> prev let mut min_direction = 0u32; // helpers - let next_index = |i| { if i < (cycle.len() - 1) { i + 1 } else { 0 } }; - let prev_index = |i| { if i > 0 { i - 1 } else { cycle.len() - 1 } }; + let next_index = |i| { + if i < (cycle.len() - 1) { + i + 1 + } else { + 0 + } + }; + let prev_index = |i| { + if i > 0 { + i - 1 + } else { + cycle.len() - 1 + } + }; for i in 0..cycle.len() { if cycle[i].borrow().id.role == NodeRole::Voter { // NOTE: sadly way too many clones since I don't want to make A: Copy @@ -463,72 +511,95 @@ fn reduce_all( let current = cycle[i].borrow(); if current.id.role == NodeRole::Voter { let prev = cycle[prev_index(i)].borrow(); - assignments.iter_mut().enumerate().filter(|(_, a)| a.who == current.id.who).for_each(|(target_ass_index, ass)| { - ass.distribution.iter_mut().position(|(t, _)| *t == prev.id.who).map(|idx| { - let next_value = if i % 2 == 0 { - if start_operation_add { - ass.distribution[idx].1.saturating_add(min_value) - } else { - ass.distribution[idx].1.saturating_sub(min_value) - } - } else { - if start_operation_add { - ass.distribution[idx].1.saturating_sub(min_value) - } else { - ass.distribution[idx].1.saturating_add(min_value) - } - }; - - if next_value.is_zero() { - // if the removed edge is from the current assignment, dis_index - // should NOT be increased. - if target_ass_index == assignment_index { should_inc_counter = false } - ass.distribution.remove(idx); - num_changed += 1; - // only add if this is not the min itself. - if !(i == min_index && min_direction == 0) { - additional_removed.push((cycle[i].clone(), cycle[prev_index(i)].clone())); - } - } else { - ass.distribution[idx].1 = next_value; - } + assignments + .iter_mut() + .enumerate() + .filter(|(_, a)| a.who == current.id.who) + .for_each(|(target_ass_index, ass)| { + ass.distribution + .iter_mut() + .position(|(t, _)| *t == prev.id.who) + .map(|idx| { + let next_value = if i % 2 == 0 { + if start_operation_add { + ass.distribution[idx].1.saturating_add(min_value) + } else { + ass.distribution[idx].1.saturating_sub(min_value) + } + } else { + if start_operation_add { + ass.distribution[idx].1.saturating_sub(min_value) + } else { + ass.distribution[idx].1.saturating_add(min_value) + } + }; + + if next_value.is_zero() { + // if the removed edge is from the current assignment, dis_index + // should NOT be increased. + if target_ass_index == assignment_index { + should_inc_counter = false + } + ass.distribution.remove(idx); + num_changed += 1; + // only add if this is not the min itself. + if !(i == min_index && min_direction == 0) { + additional_removed.push(( + cycle[i].clone(), + cycle[prev_index(i)].clone(), + )); + } + } else { + ass.distribution[idx].1 = next_value; + } + }); }); - }); let next = cycle[next_index(i)].borrow(); - assignments.iter_mut().enumerate().filter(|(_, a)| a.who == current.id.who).for_each(|(target_ass_index, ass)| { - ass.distribution.iter_mut().position(|(t, _)| *t == next.id.who).map(|idx| { - let next_value = if i % 2 == 0 { - if start_operation_add { - ass.distribution[idx].1.saturating_sub(min_value) - } else { - ass.distribution[idx].1.saturating_add(min_value) - } - } else { - if start_operation_add { - ass.distribution[idx].1.saturating_add(min_value) - } else { - ass.distribution[idx].1.saturating_sub(min_value) - } - }; - - if next_value.is_zero() { - // if the removed edge is from the current assignment, dis_index - // should NOT be increased. - if target_ass_index == assignment_index { should_inc_counter = false } - ass.distribution.remove(idx); - num_changed += 1; - if !(i == min_index && min_direction == 1) { - additional_removed.push((cycle[i].clone(), cycle[next_index(i)].clone())); - } - } else { - ass.distribution[idx].1 = next_value; - } + assignments + .iter_mut() + .enumerate() + .filter(|(_, a)| a.who == current.id.who) + .for_each(|(target_ass_index, ass)| { + ass.distribution + .iter_mut() + .position(|(t, _)| *t == next.id.who) + .map(|idx| { + let next_value = if i % 2 == 0 { + if start_operation_add { + ass.distribution[idx].1.saturating_sub(min_value) + } else { + ass.distribution[idx].1.saturating_add(min_value) + } + } else { + if start_operation_add { + ass.distribution[idx].1.saturating_add(min_value) + } else { + ass.distribution[idx].1.saturating_sub(min_value) + } + }; + + if next_value.is_zero() { + // if the removed edge is from the current assignment, dis_index + // should NOT be increased. + if target_ass_index == assignment_index { + should_inc_counter = false + } + ass.distribution.remove(idx); + num_changed += 1; + if !(i == min_index && min_direction == 1) { + additional_removed.push(( + cycle[i].clone(), + cycle[next_index(i)].clone(), + )); + } + } else { + ass.distribution[idx].1 = next_value; + } + }); }); - }); } - }; - + } // don't do anything if the edge removed itself. This is always the first and last // element @@ -539,7 +610,7 @@ fn reduce_all( let min_edge = vec![min_voter, min_target]; if min_chain_in_voter { // NOTE: safe; voter_root_path is always bigger than 1 element. - for i in 0..voter_root_path.len()-1 { + for i in 0..voter_root_path.len() - 1 { let current = voter_root_path[i].clone().borrow().id.who.clone(); let next = voter_root_path[i + 1].clone().borrow().id.who.clone(); if min_edge.contains(¤t) && min_edge.contains(&next) { @@ -550,7 +621,7 @@ fn reduce_all( Node::set_parent_of(&voter_node, &target_node); } else { // NOTE: safe; target_root_path is always bigger than 1 element. - for i in 0..target_root_path.len()-1 { + for i in 0..target_root_path.len() - 1 { let current = target_root_path[i].clone().borrow().id.who.clone(); let next = target_root_path[i + 1].clone().borrow().id.who.clone(); if min_edge.contains(¤t) && min_edge.contains(&next) { @@ -572,7 +643,9 @@ fn reduce_all( } // increment the counter if needed. - if should_inc_counter { dist_index += 1; } + if should_inc_counter { + dist_index += 1; + } } } } @@ -590,9 +663,7 @@ fn reduce_all( /// duplicate ids, only the first instance is ever updates. /// /// O(min{ |Ew| â‹… k + m3 , |Ew| â‹… m }) -pub fn reduce( - assignments: &mut Vec>, -) -> u32 where { +pub fn reduce(assignments: &mut Vec>) -> u32 where { let mut num_changed = reduce_4(assignments); num_changed += reduce_all(assignments); num_changed @@ -636,17 +707,11 @@ mod tests { let assignments = vec![ StakedAssignment { who: 1, - distribution: vec![ - (10, 25), - (20, 75), - ], + distribution: vec![(10, 25), (20, 75)], }, StakedAssignment { who: 2, - distribution: vec![ - (10, 50), - (20, 50), - ], + distribution: vec![(10, 50), (20, 50)], }, ]; @@ -659,16 +724,11 @@ mod tests { vec![ StakedAssignment { who: 1, - distribution: vec![ - (20, 100), - ], + distribution: vec![(20, 100),], }, StakedAssignment { who: 2, - distribution: vec![ - (10, 75), - (20, 25), - ], + distribution: vec![(10, 75), (20, 25),], }, ], ); @@ -679,37 +739,23 @@ mod tests { let mut assignments = vec![ StakedAssignment { who: 1, - distribution: vec![(10, 10)] + distribution: vec![(10, 10)], }, StakedAssignment { who: 2, - distribution: vec![ - (10, 15), - (20, 5), - ], + distribution: vec![(10, 15), (20, 5)], }, StakedAssignment { who: 3, - distribution: vec![ - (20, 15), - (40, 15) - ], + distribution: vec![(20, 15), (40, 15)], }, StakedAssignment { - who: 4, distribution: - vec![ - (20, 10), - (30, 10), - (40, 20), - ] + who: 4, + distribution: vec![(20, 10), (30, 10), (40, 20)], }, StakedAssignment { who: 5, - distribution: vec![ - (20, 20), - (30, 10), - (40, 20), - ], + distribution: vec![(20, 20), (30, 10), (40, 20)], }, ]; @@ -719,38 +765,25 @@ mod tests { assignments, vec![ StakedAssignment { - who: 1, - distribution: vec![ - (10, 10), - ] - }, - StakedAssignment { - who: 2, - distribution: vec![ - (10, 15), - (20, 5), - ], - }, - StakedAssignment { - who: 3, - distribution: vec![ - (20, 30), - ], - }, - StakedAssignment { - who: 4, distribution: - vec![ - (40, 40), - ] - }, - StakedAssignment { - who: 5, - distribution: vec![ - (20, 15), - (30, 20), - (40, 15), - ], - }, + who: 1, + distribution: vec![(10, 10),] + }, + StakedAssignment { + who: 2, + distribution: vec![(10, 15), (20, 5),], + }, + StakedAssignment { + who: 3, + distribution: vec![(20, 30),], + }, + StakedAssignment { + who: 4, + distribution: vec![(40, 40),] + }, + StakedAssignment { + who: 5, + distribution: vec![(20, 15), (30, 20), (40, 15),], + }, ], ) } @@ -760,37 +793,23 @@ mod tests { let mut assignments = vec![ StakedAssignment { who: 1, - distribution: vec![(10, 10)] + distribution: vec![(10, 10)], }, StakedAssignment { who: 2, - distribution: vec![ - (10, 15), - (20, 5), - ], + distribution: vec![(10, 15), (20, 5)], }, StakedAssignment { who: 3, - distribution: vec![ - (20, 15), - (40, 15) - ], + distribution: vec![(20, 15), (40, 15)], }, StakedAssignment { - who: 4, distribution: - vec![ - (20, 10), - (30, 10), - (40, 20), - ] + who: 4, + distribution: vec![(20, 10), (30, 10), (40, 20)], }, StakedAssignment { who: 5, - distribution: vec![ - (20, 20), - (30, 10), - (40, 20), - ], + distribution: vec![(20, 20), (30, 10), (40, 20)], }, ]; @@ -800,38 +819,25 @@ mod tests { assignments, vec![ StakedAssignment { - who: 1, - distribution: vec![ - (10, 10), - ] - }, - StakedAssignment { - who: 2, - distribution: vec![ - (10, 15), - (20, 5), - ], - }, - StakedAssignment { - who: 3, - distribution: vec![ - (20, 30), - ], - }, - StakedAssignment { - who: 4, distribution: - vec![ - (40, 40), - ] - }, - StakedAssignment { - who: 5, - distribution: vec![ - (20, 15), - (30, 20), - (40, 15), - ], - }, + who: 1, + distribution: vec![(10, 10),] + }, + StakedAssignment { + who: 2, + distribution: vec![(10, 15), (20, 5),], + }, + StakedAssignment { + who: 3, + distribution: vec![(20, 30),], + }, + StakedAssignment { + who: 4, + distribution: vec![(40, 40),] + }, + StakedAssignment { + who: 5, + distribution: vec![(20, 15), (30, 20), (40, 15),], + }, ], ) } @@ -841,41 +847,33 @@ mod tests { let mut assignments = vec![ StakedAssignment { who: 1, - distribution: vec![(10, 10)] + distribution: vec![(10, 10)], }, StakedAssignment { who: 2, - distribution: vec![ - (10, 15), - (20, 5), - ], + distribution: vec![(10, 15), (20, 5)], }, StakedAssignment { who: 3, - distribution: vec![ - (20, 15), - (40, 15) - ], + distribution: vec![(20, 15), (40, 15)], }, StakedAssignment { - who: 4, distribution: - vec![ - (20, 10), - (30, 10), - (40, 20), - ] + who: 4, + distribution: vec![(20, 10), (30, 10), (40, 20)], }, StakedAssignment { who: 5, - distribution: vec![ - (20, 20), - (30, 10), - (40, 20), - ], + distribution: vec![(20, 20), (30, 10), (40, 20)], }, // self vote from 10 and 20 to itself. - StakedAssignment { who: 10, distribution: vec![(10, 100)] }, - StakedAssignment { who: 20, distribution: vec![(20, 200)] }, + StakedAssignment { + who: 10, + distribution: vec![(10, 100)], + }, + StakedAssignment { + who: 20, + distribution: vec![(20, 200)], + }, ]; assert_eq!(3, reduce(&mut assignments)); @@ -885,40 +883,33 @@ mod tests { vec![ StakedAssignment { who: 1, - distribution: vec![ - (10, 10), - ] + distribution: vec![(10, 10),] }, StakedAssignment { who: 2, - distribution: vec![ - (10, 15), - (20, 5), - ], + distribution: vec![(10, 15), (20, 5),], }, StakedAssignment { who: 3, - distribution: vec![ - (20, 30), - ], + distribution: vec![(20, 30),], }, StakedAssignment { - who: 4, distribution: - vec![ - (40, 40), - ] + who: 4, + distribution: vec![(40, 40),] }, StakedAssignment { who: 5, - distribution: vec![ - (20, 15), - (30, 20), - (40, 15), - ], + distribution: vec![(20, 15), (30, 20), (40, 15),], }, // should stay untouched. - StakedAssignment { who: 10, distribution: vec![(10, 100)] }, - StakedAssignment { who: 20, distribution: vec![(20, 200)] }, + StakedAssignment { + who: 10, + distribution: vec![(10, 100)] + }, + StakedAssignment { + who: 20, + distribution: vec![(20, 200)] + }, ], ) } @@ -926,53 +917,16 @@ mod tests { #[test] fn reduce_3_common_votes_same_weight() { let mut assignments = vec![ - StakedAssignment { - who: 4, - distribution: vec![ - ( - 1000000, - 100, - ), - ( - 1000002, - 100, - ), - ( - 1000004, - 100, - ), - ], - }, - StakedAssignment { - who: 5, - distribution: vec![ - ( - 1000000, - 100, - ), - ( - 1000002, - 100, - ), - ( - 1000004, - 100, - ), - ], - }, - ]; - - reduce_4(&mut assignments); - - assert_eq!( - assignments, - vec![ StakedAssignment { who: 4, distribution: vec![ ( 1000000, - 200, + 100, + ), + ( + 1000002, + 100, ), ( 1000004, @@ -983,9 +937,13 @@ mod tests { StakedAssignment { who: 5, distribution: vec![ + ( + 1000000, + 100, + ), ( 1000002, - 200, + 100, ), ( 1000004, @@ -993,11 +951,23 @@ mod tests { ), ], }, - ], - ) - + ]; + reduce_4(&mut assignments); + assert_eq!( + assignments, + vec![ + StakedAssignment { + who: 4, + distribution: vec![(1000000, 200,), (1000004, 100,),], + }, + StakedAssignment { + who: 5, + distribution: vec![(1000002, 200,), (1000004, 100,),], + }, + ], + ) } #[test] @@ -1006,24 +976,15 @@ mod tests { let mut assignments = vec![ StakedAssignment { who: 1, - distribution: vec![ - (10, 10), - (20, 10) - ] + distribution: vec![(10, 10), (20, 10)], }, StakedAssignment { who: 1, - distribution: vec![ - (10, 15), - (20, 5), - ], + distribution: vec![(10, 15), (20, 5)], }, StakedAssignment { who: 2, - distribution: vec![ - (10, 15), - (20, 15) - ], + distribution: vec![(10, 15), (20, 15)], }, ]; @@ -1035,10 +996,7 @@ mod tests { let mut assignments = vec![ StakedAssignment { who: 1, - distribution: vec![ - (10, 15), - (20, 5), - ], + distribution: vec![(10, 15), (20, 5)], }, StakedAssignment { who: 2, @@ -1060,9 +1018,7 @@ mod tests { vec![ StakedAssignment { who: 1, - distribution: vec![ - (10, 20), - ], + distribution: vec![(10, 20),], }, StakedAssignment { who: 2, @@ -1083,101 +1039,27 @@ mod tests { let mut assignments = vec![ StakedAssignment { who: 1, - distribution: vec![ - ( - 103, - 72, - ), - ( - 101, - 53, - ), - ( - 100, - 83, - ), - ( - 102, - 38, - ), - ], + distribution: vec![(103, 72), (101, 53), (100, 83), (102, 38)], }, StakedAssignment { who: 2, - distribution: vec![ - ( - 103, - 18, - ), - ( - 101, - 36, - ), - ( - 102, - 54, - ), - ( - 100, - 94, - ), - ], + distribution: vec![(103, 18), (101, 36), (102, 54), (100, 94)], }, StakedAssignment { who: 3, - distribution: vec![ - ( - 100, - 96, - ), - ( - 101, - 35, - ), - ( - 102, - 52, - ), - ( - 103, - 69, - ), - ], + distribution: vec![(100, 96), (101, 35), (102, 52), (103, 69)], }, StakedAssignment { who: 4, - distribution: vec![ - ( - 102, - 34, - ), - ( - 100, - 47, - ), - ( - 103, - 91, - ), - ( - 101, - 73, - ), - ], + distribution: vec![(102, 34), (100, 47), (103, 91), (101, 73)], }, ]; - let winners = vec![ - 103, - 101, - 100, - 102, - ]; + let winners = vec![103, 101, 100, 102]; let n = 4; let m = winners.len() as u32; let num_reduced = reduce_all(&mut assignments); assert!(16 - num_reduced <= n + m); - } } -- GitLab From c8cc72f5cb70e32d62719cc795602351d4c36fe2 Mon Sep 17 00:00:00 2001 From: kianenigma Date: Tue, 3 Mar 2020 08:34:44 +0100 Subject: [PATCH 079/301] Review comments. --- frame/babe/src/lib.rs | 8 +++--- frame/staking/Cargo.toml | 7 +++++- frame/staking/src/lib.rs | 23 ++++++++--------- frame/staking/src/mock.rs | 34 ++++++++------------------ frame/staking/src/offchain_election.rs | 17 ++++++++----- frame/staking/src/testing_utils.rs | 13 ++++++---- frame/support/src/traits.rs | 8 +++--- 7 files changed, 54 insertions(+), 56 deletions(-) diff --git a/frame/babe/src/lib.rs b/frame/babe/src/lib.rs index e3d3d2f1b0..a9faf2ffe2 100644 --- a/frame/babe/src/lib.rs +++ b/frame/babe/src/lib.rs @@ -320,10 +320,10 @@ impl Module { /// In other word, this is only accurate if no slots are missed. Given missed slots, the slot /// number will grow while the block number will not. Hence, the result can be interpreted as an /// upper bound. - /// - /// -------------- IMPORTANT NOTE -------------- - /// This implementation is linked to how [`should_epoch_change`] is working. This might need to - /// be updated accordingly, if the underlying mechanics of slot and epochs change. + // + // -------------- IMPORTANT NOTE -------------- + // This implementation is linked to how [`should_epoch_change`] is working. This might need to + // be updated accordingly, if the underlying mechanics of slot and epochs change. pub fn next_expected_epoch_change(now: T::BlockNumber) -> T::BlockNumber { let next_slot = Self::current_epoch_start().saturating_add(T::EpochDuration::get()); let slots_remaining = next_slot diff --git a/frame/staking/Cargo.toml b/frame/staking/Cargo.toml index 9c533c9c13..27840cbc4f 100644 --- a/frame/staking/Cargo.toml +++ b/frame/staking/Cargo.toml @@ -38,7 +38,12 @@ env_logger = "0.7.1" [features] migrate = [] -testing-utils = ["std"] +testing-utils = [ + "std", + "pallet-indices/std", + "sp-core/std", + "rand/std", +] default = ["std"] std = [ "serde", diff --git a/frame/staking/src/lib.rs b/frame/staking/src/lib.rs index 9cb01e95c7..6b5c703305 100644 --- a/frame/staking/src/lib.rs +++ b/frame/staking/src/lib.rs @@ -243,7 +243,7 @@ //! - [Session](../pallet_session/index.html): Used to manage sessions. Also, a list of new //! validators is stored in the Session module's `Validators` at the end of each era. -#![recursion_limit="128"] +#![recursion_limit = "128"] #![cfg_attr(not(feature = "std"), no_std)] #[cfg(test)] @@ -304,7 +304,7 @@ pub(crate) const MAX_VALIDATORS: u32 = ValidatorIndex::max_value() as u32; pub(crate) const MAX_NOMINATORS: u32 = NominatorIndex::max_value(); // Note: Maximum nomination limit is set here -- 16. -generate_compact_solution_type!(pub CompactAssignments, 16); +generate_compact_solution_type!(pub GenericCompactAssignments, 16); /// Data type used to index nominators in the compact type pub type NominatorIndex = u32; @@ -329,11 +329,8 @@ pub type BalanceOf = <::Currency as Currency<::AccountId>>::Balance; /// The compact type for election solutions. -pub type Compact = CompactAssignments< - NominatorIndex, - ValidatorIndex, - OffchainAccuracy, ->; +pub type CompactAssignments = + GenericCompactAssignments; type PositiveImbalanceOf = <::Currency as Currency<::AccountId>>::PositiveImbalance; @@ -737,7 +734,7 @@ pub trait Trait: frame_system::Trait { /// The NPoS reward curve to use. type RewardCurve: Get<&'static PiecewiseLinear<'static>>; - /// Something that can predict the next session change. + /// Something that can estimate the next session change, accurately or as a best effort guess. type NextSessionChange: EstimateNextSessionChange; /// How many blocks ahead of the era do we try to run the phragmen offchain? Setting this to @@ -1290,7 +1287,7 @@ decl_module! { /// /// # /// - The transaction's complexity is proportional to the size of `targets`, - /// which is capped at Compact::LIMIT. + /// which is capped at CompactAssignments::LIMIT. /// - Both the reads and writes follow a similar pattern. /// # #[weight = SimpleDispatchInfo::FixedNormal(750_000)] @@ -1302,7 +1299,7 @@ decl_module! { let stash = &ledger.stash; ensure!(!targets.is_empty(), Error::::EmptyTargets); let targets = targets.into_iter() - .take(::LIMIT) + .take(::LIMIT) .map(|t| T::Lookup::lookup(t)) .collect::, _>>()?; @@ -1585,7 +1582,7 @@ decl_module! { pub fn submit_election_solution( origin, winners: Vec, - compact_assignments: Compact, + compact_assignments: CompactAssignments, score: PhragmenScore, ) { let _who = ensure_signed(origin)?; @@ -1603,7 +1600,7 @@ decl_module! { pub fn submit_election_solution_unsigned( origin, winners: Vec, - compact_assignments: Compact, + compact_assignments: CompactAssignments, score: PhragmenScore, // already used and checked in ValidateUnsigned. _validator_index: u32, @@ -1791,7 +1788,7 @@ impl Module { /// of the next round. This may be called by both a signed and an unsigned transaction. fn check_and_replace_solution( winners: Vec, - compact_assignments: Compact, + compact_assignments: CompactAssignments, compute: ElectionCompute, claimed_score: PhragmenScore, ) -> Result<(), Error> { diff --git a/frame/staking/src/mock.rs b/frame/staking/src/mock.rs index 570214fffc..6a32cb6ae4 100644 --- a/frame/staking/src/mock.rs +++ b/frame/staking/src/mock.rs @@ -751,11 +751,7 @@ pub fn on_offence_now( // distributed evenly. pub fn horrible_phragmen_with_post_processing( do_reduce: bool, -) -> ( - Compact, - Vec, - PhragmenScore, -) { +) -> (CompactAssignments, Vec, PhragmenScore) { use std::collections::BTreeMap; let mut backing_stake_of: BTreeMap = BTreeMap::new(); @@ -848,16 +844,12 @@ pub fn horrible_phragmen_with_post_processing( }; // convert back to ratio assignment. This takes less space. - let assignments_reduced = sp_phragmen::assignment_staked_to_ratio::< - AccountId, - OffchainAccuracy, - >(staked_assignment); + let assignments_reduced = + sp_phragmen::assignment_staked_to_ratio::(staked_assignment); - let compact = Compact::from_assignment( - assignments_reduced, - nominator_index, - validator_index, - ).unwrap(); + let compact = + CompactAssignments::from_assignment(assignments_reduced, nominator_index, validator_index) + .unwrap(); // winner ids to index let winners = winners.into_iter().map(|w| validator_index(&w).unwrap()).collect::>(); @@ -870,11 +862,7 @@ pub fn horrible_phragmen_with_post_processing( pub fn prepare_submission_with( do_reduce: bool, tweak: impl FnOnce(&mut Vec>), -) -> ( - Compact, - Vec, - PhragmenScore, -) { +) -> (CompactAssignments, Vec, PhragmenScore) { // run phragmen on the default stuff. let sp_phragmen::PhragmenResult { winners, @@ -922,11 +910,9 @@ pub fn prepare_submission_with( evaluate_support::(&support_map) }; - let compact = Compact::from_assignment( - assignments_reduced, - nominator_index, - validator_index, - ).unwrap(); + let compact = + CompactAssignments::from_assignment(assignments_reduced, nominator_index, validator_index) + .unwrap(); // winner ids to index diff --git a/frame/staking/src/offchain_election.rs b/frame/staking/src/offchain_election.rs index 2e7daa92ca..b6f221a118 100644 --- a/frame/staking/src/offchain_election.rs +++ b/frame/staking/src/offchain_election.rs @@ -16,7 +16,9 @@ //! Helpers for offchain worker election. -use crate::{Call, Compact, Module, NominatorIndex, OffchainAccuracy, Trait, ValidatorIndex}; +use crate::{ + Call, CompactAssignments, Module, NominatorIndex, OffchainAccuracy, Trait, ValidatorIndex, +}; use codec::Encode; use frame_support::debug; use frame_system::offchain::SubmitUnsignedTransaction; @@ -48,7 +50,7 @@ pub enum OffchainElectionError { /// The type of signature data encoded with the unsigned submission pub(crate) type SignaturePayload<'a> = ( &'a [ValidatorIndex], - &'a Compact, + &'a CompactAssignments, &'a PhragmenScore, &'a u32, ); @@ -154,7 +156,7 @@ pub fn prepare_submission( assignments: Vec>, winners: Vec<(T::AccountId, ExtendedBalance)>, do_reduce: bool, -) -> Result<(Vec, Compact, PhragmenScore), OffchainElectionError> +) -> Result<(Vec, CompactAssignments, PhragmenScore), OffchainElectionError> where ExtendedBalance: From<::Inner>, { @@ -217,9 +219,12 @@ where }; // compact encode the assignment. - let compact = - Compact::from_assignment(low_accuracy_assignment, nominator_index, validator_index) - .unwrap(); + let compact = CompactAssignments::from_assignment( + low_accuracy_assignment, + nominator_index, + validator_index, + ) + .unwrap(); // winners to index. let winners = winners diff --git a/frame/staking/src/testing_utils.rs b/frame/staking/src/testing_utils.rs index 94fdd18597..bae1060987 100644 --- a/frame/staking/src/testing_utils.rs +++ b/frame/staking/src/testing_utils.rs @@ -151,7 +151,7 @@ where /// which has a less score than the seq-phragmen. pub fn get_weak_solution( do_reduce: bool, -) -> (Vec, Compact, PhragmenScore) { +) -> (Vec, CompactAssignments, PhragmenScore) { use sp_std::collections::btree_map::BTreeMap; let mut backing_stake_of: BTreeMap> = BTreeMap::new(); @@ -286,9 +286,12 @@ pub fn get_weak_solution( }; // compact encode the assignment. - let compact = - Compact::from_assignment(low_accuracy_assignment, nominator_index, validator_index) - .unwrap(); + let compact = CompactAssignments::from_assignment( + low_accuracy_assignment, + nominator_index, + validator_index, + ) + .unwrap(); // winners to index. let winners = winners @@ -310,7 +313,7 @@ pub fn get_weak_solution( /// worker code. pub fn get_seq_phragmen_solution( do_reduce: bool, -) -> (Vec, Compact, PhragmenScore) { +) -> (Vec, CompactAssignments, PhragmenScore) { let sp_phragmen::PhragmenResult { winners, assignments, diff --git a/frame/support/src/traits.rs b/frame/support/src/traits.rs index 1e82263ee5..a8364769d3 100644 --- a/frame/support/src/traits.rs +++ b/frame/support/src/traits.rs @@ -87,7 +87,7 @@ impl< Created: Happened, Removed: Happened, K: FullCodec, - T: FullCodec + T: FullCodec, > StoredMap for StorageMapShim { fn get(k: &K) -> T { S::get(k) } fn is_explicit(k: &K) -> bool { S::contains_key(k) } @@ -138,9 +138,11 @@ impl< } } -/// Something that can predict at which block number the next era change will happen. +/// Something that can estimate at which block number the next era change will happen in a best +/// effort manner. The result may or may night be accurate, based on the chain configuration and +/// semantics. pub trait EstimateNextSessionChange { - /// Return the block number at which the next era change will happen. + /// Return the block number at which the next era change is estimated to happen. fn estimate_next_session_change(now: BlockNumber) -> BlockNumber; } -- GitLab From 9fb3a7f7ba3f2a19e9585c26075bee724ba08f81 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bastian=20K=C3=B6cher?= Date: Tue, 3 Mar 2020 10:24:26 +0100 Subject: [PATCH 080/301] Expose `state-db` memory info (#5110) This exposes memory statistics from the state-db. --- Cargo.lock | 33 +++++++++++ client/api/src/client.rs | 57 +++++++++++++++++-- client/db/src/lib.rs | 16 ++++-- client/db/src/light.rs | 9 +-- client/informant/src/lib.rs | 5 +- client/service/src/builder.rs | 16 ++++-- client/state-db/Cargo.toml | 3 + client/state-db/src/lib.rs | 86 ++++++++++++++++++++++------- client/state-db/src/noncanonical.rs | 10 +++- client/state-db/src/pruning.rs | 3 +- 10 files changed, 196 insertions(+), 42 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 4da524e7ce..47583e57e3 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1226,6 +1226,33 @@ dependencies = [ "serde_json", ] +[[package]] +name = "ethbloom" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32cfe1c169414b709cf28aa30c74060bdb830a03a8ba473314d079ac79d80a5f" +dependencies = [ + "crunchy", + "fixed-hash", + "impl-rlp", + "impl-serde 0.2.3", + "tiny-keccak 1.5.0", +] + +[[package]] +name = "ethereum-types" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba744248e3553a393143d5ebb68939fc3a4ec0c22a269682535f5ffe7fed728c" +dependencies = [ + "ethbloom", + "fixed-hash", + "impl-rlp", + "impl-serde 0.2.3", + "primitive-types", + "uint", +] + [[package]] name = "evm" version = "0.15.0" @@ -4626,7 +4653,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ef1476e40bf8f5c6776e9600983435821ca86eb9819d74a6207cca69d091406a" dependencies = [ "cfg-if", + "ethereum-types", + "hashbrown", "impl-trait-for-tuples", + "lru", "parity-util-mem-derive", "parking_lot 0.10.0", "primitive-types", @@ -6432,7 +6462,10 @@ dependencies = [ "env_logger 0.7.1", "log 0.4.8", "parity-scale-codec", + "parity-util-mem", + "parity-util-mem-derive", "parking_lot 0.10.0", + "sc-client-api", "sp-core", ] diff --git a/client/api/src/client.rs b/client/api/src/client.rs index 7503ce4a79..4980015568 100644 --- a/client/api/src/client.rs +++ b/client/api/src/client.rs @@ -97,13 +97,56 @@ pub struct ClientInfo { pub usage: Option, } +/// A wrapper to store the size of some memory. +#[derive(Default, Clone, Debug, Copy)] +pub struct MemorySize(usize); + +impl MemorySize { + /// Creates `Self` from the given `bytes` size. + pub fn from_bytes(bytes: usize) -> Self { + Self(bytes) + } + + /// Returns the memory size as bytes. + pub fn as_bytes(self) -> usize { + self.0 + } +} + +impl fmt::Display for MemorySize { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + if self.0 < 1024 { + write!(f, "{} bytes", self.0) + } else if self.0 < 1024 * 1024 { + write!(f, "{:.2} KiB", self.0 as f64 / 1024f64) + } else if self.0 < 1024 * 1024 * 1024 { + write!(f, "{:.2} MiB", self.0 as f64 / (1024f64 * 1024f64)) + } else { + write!(f, "{:.2} GiB", self.0 as f64 / (1024f64 * 1024f64 * 1024f64)) + } + } +} + +/// Memory statistics for state db. +#[derive(Default, Clone, Debug)] +pub struct StateDbMemoryInfo { + /// Memory usage of the non-canonical overlay + pub non_canonical: MemorySize, + /// Memory usage of the pruning window. + pub pruning: Option, + /// Memory usage of the pinned blocks. + pub pinned: MemorySize, +} + /// Memory statistics for client instance. #[derive(Default, Clone, Debug)] pub struct MemoryInfo { /// Size of state cache. - pub state_cache: usize, + pub state_cache: MemorySize, /// Size of backend database cache. - pub database_cache: usize, + pub database_cache: MemorySize, + /// Size of the state db. + pub state_db: StateDbMemoryInfo, } /// I/O statistics for client instance. @@ -144,10 +187,16 @@ pub struct UsageInfo { impl fmt::Display for UsageInfo { fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - write!(f, - "caches: ({} state, {} db overlay), i/o: ({} tx, {} write, {} read, {} avg tx, {}/{} key cache reads/total, {} key writes)", + write!( + f, + "caches: ({} state, {} db overlay), \ + state db: ({} non-canonical, {} pruning, {} pinned), \ + i/o: ({} tx, {} write, {} read, {} avg tx, {}/{} key cache reads/total, {} key writes)", self.memory.state_cache, self.memory.database_cache, + self.memory.state_db.non_canonical, + self.memory.state_db.pruning.unwrap_or_default(), + self.memory.state_db.pinned, self.io.transactions, self.io.bytes_written, self.io.bytes_read, diff --git a/client/db/src/lib.rs b/client/db/src/lib.rs index 5173497509..b4dd98457d 100644 --- a/client/db/src/lib.rs +++ b/client/db/src/lib.rs @@ -46,9 +46,11 @@ use std::path::PathBuf; use std::io; use std::collections::HashMap; -use sc_client_api::{execution_extensions::ExecutionExtensions, ForkBlocks, UsageInfo, MemoryInfo, BadBlocks, IoInfo}; -use sc_client_api::backend::NewBlockState; -use sc_client_api::backend::PrunableStateChangesTrieStorage; +use sc_client_api::{ + ForkBlocks, UsageInfo, MemoryInfo, BadBlocks, IoInfo, MemorySize, + execution_extensions::ExecutionExtensions, + backend::{NewBlockState, PrunableStateChangesTrieStorage}, +}; use sp_blockchain::{ Result as ClientResult, Error as ClientError, well_known_cache_keys, HeaderBackend, @@ -1455,13 +1457,17 @@ impl sc_client_api::backend::Backend for Backend { self.state_usage.take(), ) ); - let database_cache = parity_util_mem::malloc_size(&*self.storage.db); - let state_cache = (*&self.shared_cache).lock().used_storage_cache_size(); + let database_cache = MemorySize::from_bytes(parity_util_mem::malloc_size(&*self.storage.db)); + let state_cache = MemorySize::from_bytes( + (*&self.shared_cache).lock().used_storage_cache_size(), + ); + let state_db = self.storage.state_db.memory_info(); Some(UsageInfo { memory: MemoryInfo { state_cache, database_cache, + state_db, }, io: IoInfo { transactions: io_stats.transactions, diff --git a/client/db/src/light.rs b/client/db/src/light.rs index 14ce6ac0f9..3d30598b19 100644 --- a/client/db/src/light.rs +++ b/client/db/src/light.rs @@ -317,7 +317,7 @@ impl LightStorage { // if the header includes changes trie root, let's build a changes tries roots CHT if header.digest().log(DigestItem::as_changes_trie_root).is_some() { let mut current_num = new_cht_start; - let cht_range = ::std::iter::from_fn(|| { + let cht_range = std::iter::from_fn(|| { let old_current_num = current_num; current_num = current_num + One::one(); Some(old_current_num) @@ -572,15 +572,16 @@ impl LightBlockchainStorage for LightStorage #[cfg(not(target_os = "unknown"))] fn usage_info(&self) -> Option { - use sc_client_api::{MemoryInfo, IoInfo}; + use sc_client_api::{MemoryInfo, IoInfo, MemorySize}; - let database_cache = parity_util_mem::malloc_size(&*self.db); + let database_cache = MemorySize::from_bytes(parity_util_mem::malloc_size(&*self.db)); let io_stats = self.io_stats.take_or_else(|| self.db.io_stats(kvdb::IoStatsKind::SincePrevious)); Some(UsageInfo { memory: MemoryInfo { database_cache, - state_cache: 0, + state_cache: Default::default(), + state_db: Default::default(), }, io: IoInfo { transactions: io_stats.transactions, diff --git a/client/informant/src/lib.rs b/client/informant/src/lib.rs index 699dcfdd74..d104a64a2d 100644 --- a/client/informant/src/lib.rs +++ b/client/informant/src/lib.rs @@ -46,7 +46,10 @@ pub fn build(service: &impl AbstractService, format: OutputFormat) -> impl futur if let Some(ref usage) = info.usage { trace!(target: "usage", "Usage statistics: {}", usage); } else { - trace!(target: "usage", "Usage statistics not displayed as backend does not provide it") + trace!( + target: "usage", + "Usage statistics not displayed as backend does not provide it", + ) } #[cfg(not(target_os = "unknown"))] trace!( diff --git a/client/service/src/builder.rs b/client/service/src/builder.rs index e5e4e132f9..cce126f1b3 100644 --- a/client/service/src/builder.rs +++ b/client/service/src/builder.rs @@ -1085,10 +1085,18 @@ ServiceBuilder< "finalized_hash" => ?info.chain.finalized_hash, "bandwidth_download" => bandwidth_download, "bandwidth_upload" => bandwidth_upload, - "used_state_cache_size" => info.usage.as_ref().map(|usage| usage.memory.state_cache).unwrap_or(0), - "used_db_cache_size" => info.usage.as_ref().map(|usage| usage.memory.database_cache).unwrap_or(0), - "disk_read_per_sec" => info.usage.as_ref().map(|usage| usage.io.bytes_read).unwrap_or(0), - "disk_write_per_sec" => info.usage.as_ref().map(|usage| usage.io.bytes_written).unwrap_or(0), + "used_state_cache_size" => info.usage.as_ref() + .map(|usage| usage.memory.state_cache.as_bytes()) + .unwrap_or(0), + "used_db_cache_size" => info.usage.as_ref() + .map(|usage| usage.memory.database_cache.as_bytes()) + .unwrap_or(0), + "disk_read_per_sec" => info.usage.as_ref() + .map(|usage| usage.io.bytes_read) + .unwrap_or(0), + "disk_write_per_sec" => info.usage.as_ref() + .map(|usage| usage.io.bytes_written) + .unwrap_or(0), ); if let Some(metrics) = metrics.as_ref() { metrics.memory_usage_bytes.set(memory); diff --git a/client/state-db/Cargo.toml b/client/state-db/Cargo.toml index 5a69d8b31e..77e06670d1 100644 --- a/client/state-db/Cargo.toml +++ b/client/state-db/Cargo.toml @@ -11,8 +11,11 @@ description = "State database maintenance. Handles canonicalization and pruning [dependencies] parking_lot = "0.10.0" log = "0.4.8" +sc-client-api = { version = "2.0.0-alpha.2", path = "../api" } sp-core = { version = "2.0.0-alpha.2", path = "../../primitives/core" } codec = { package = "parity-scale-codec", version = "1.0.0", features = ["derive"] } +parity-util-mem = "0.5.1" +parity-util-mem-derive = "0.1.0" [dev-dependencies] env_logger = "0.7.0" diff --git a/client/state-db/src/lib.rs b/client/state-db/src/lib.rs index f670e4f35f..49b1a59285 100644 --- a/client/state-db/src/lib.rs +++ b/client/state-db/src/lib.rs @@ -31,7 +31,8 @@ mod noncanonical; mod pruning; -#[cfg(test)] mod test; +#[cfg(test)] +mod test; use std::fmt; use parking_lot::RwLock; @@ -40,6 +41,8 @@ use std::collections::{HashMap, hash_map::Entry}; use noncanonical::NonCanonicalOverlay; use pruning::RefWindow; use log::trace; +use parity_util_mem::{MallocSizeOf, malloc_size}; +use sc_client_api::{StateDbMemoryInfo, MemorySize}; const PRUNING_MODE: &[u8] = b"mode"; const PRUNING_MODE_ARCHIVE: &[u8] = b"archive"; @@ -120,7 +123,6 @@ pub struct ChangeSet { pub deleted: Vec, } - /// A set of changes to the backing database. #[derive(Default, Debug, Clone)] pub struct CommitSet { @@ -196,8 +198,11 @@ struct StateDbSync { pinned: HashMap, } -impl StateDbSync { - pub fn new(mode: PruningMode, db: &D) -> Result, Error> { +impl StateDbSync { + fn new( + mode: PruningMode, + db: &D, + ) -> Result, Error> { trace!(target: "state-db", "StateDb settings: {:?}", mode); // Check that settings match @@ -234,7 +239,13 @@ impl StateDbSync { } } - pub fn insert_block(&mut self, hash: &BlockHash, number: u64, parent_hash: &BlockHash, mut changeset: ChangeSet) -> Result, Error> { + fn insert_block( + &mut self, + hash: &BlockHash, + number: u64, + parent_hash: &BlockHash, + mut changeset: ChangeSet, + ) -> Result, Error> { let mut meta = ChangeSet::default(); if number == 0 { // Save pruning mode when writing first block. @@ -247,7 +258,7 @@ impl StateDbSync { // write changes immediately Ok(CommitSet { data: changeset, - meta: meta, + meta, }) }, PruningMode::Constrained(_) | PruningMode::ArchiveCanonical => { @@ -260,7 +271,10 @@ impl StateDbSync { } } - pub fn canonicalize_block(&mut self, hash: &BlockHash) -> Result, Error> { + fn canonicalize_block( + &mut self, + hash: &BlockHash, + ) -> Result, Error> { let mut commit = CommitSet::default(); if self.mode == PruningMode::ArchiveAll { return Ok(commit) @@ -280,18 +294,23 @@ impl StateDbSync { Ok(commit) } - pub fn best_canonical(&self) -> Option { + fn best_canonical(&self) -> Option { return self.non_canonical.last_canonicalized_block_number() } - pub fn is_pruned(&self, hash: &BlockHash, number: u64) -> bool { + fn is_pruned(&self, hash: &BlockHash, number: u64) -> bool { match self.mode { PruningMode::ArchiveAll => false, PruningMode::ArchiveCanonical | PruningMode::Constrained(_) => { if self.best_canonical().map(|c| number > c).unwrap_or(true) { !self.non_canonical.have_block(hash) } else { - self.pruning.as_ref().map_or(false, |pruning| number < pruning.pending() || !pruning.have_block(hash)) + self.pruning + .as_ref() + .map_or( + false, + |pruning| number < pruning.pending() || !pruning.have_block(hash), + ) } } } @@ -320,7 +339,7 @@ impl StateDbSync { /// Revert all non-canonical blocks with the best block number. /// Returns a database commit or `None` if not possible. /// For archive an empty commit set is returned. - pub fn revert_one(&mut self) -> Option> { + fn revert_one(&mut self) -> Option> { match self.mode { PruningMode::ArchiveAll => { Some(CommitSet::default()) @@ -331,7 +350,7 @@ impl StateDbSync { } } - pub fn pin(&mut self, hash: &BlockHash) -> Result<(), PinError> { + fn pin(&mut self, hash: &BlockHash) -> Result<(), PinError> { match self.mode { PruningMode::ArchiveAll => Ok(()), PruningMode::ArchiveCanonical | PruningMode::Constrained(_) => { @@ -352,7 +371,7 @@ impl StateDbSync { } } - pub fn unpin(&mut self, hash: &BlockHash) { + fn unpin(&mut self, hash: &BlockHash) { match self.pinned.entry(hash.clone()) { Entry::Occupied(mut entry) => { *entry.get_mut() -= 1; @@ -377,12 +396,14 @@ impl StateDbSync { db.get(key.as_ref()).map_err(|e| Error::Db(e)) } - pub fn apply_pending(&mut self) { + fn apply_pending(&mut self) { self.non_canonical.apply_pending(); if let Some(pruning) = &mut self.pruning { pruning.apply_pending(); } - trace!(target: "forks", "First available: {:?} ({}), Last canon: {:?} ({}), Best forks: {:?}", + trace!( + target: "forks", + "First available: {:?} ({}), Last canon: {:?} ({}), Best forks: {:?}", self.pruning.as_ref().and_then(|p| p.next_hash()), self.pruning.as_ref().map(|p| p.pending()).unwrap_or(0), self.non_canonical.last_canonicalized_hash(), @@ -391,12 +412,20 @@ impl StateDbSync { ); } - pub fn revert_pending(&mut self) { + fn revert_pending(&mut self) { if let Some(pruning) = &mut self.pruning { pruning.revert_pending(); } self.non_canonical.revert_pending(); } + + fn memory_info(&self) -> StateDbMemoryInfo { + StateDbMemoryInfo { + non_canonical: MemorySize::from_bytes(malloc_size(&self.non_canonical)), + pruning: self.pruning.as_ref().map(|p| MemorySize::from_bytes(malloc_size(p))), + pinned: MemorySize::from_bytes(malloc_size(&self.pinned)), + } + } } /// State DB maintenance. See module description. @@ -405,21 +434,33 @@ pub struct StateDb { db: RwLock>, } -impl StateDb { +impl StateDb { /// Creates a new instance. Does not expect any metadata in the database. - pub fn new(mode: PruningMode, db: &D) -> Result, Error> { + pub fn new( + mode: PruningMode, + db: &D, + ) -> Result, Error> { Ok(StateDb { db: RwLock::new(StateDbSync::new(mode, db)?) }) } /// Add a new non-canonical block. - pub fn insert_block(&self, hash: &BlockHash, number: u64, parent_hash: &BlockHash, changeset: ChangeSet) -> Result, Error> { + pub fn insert_block( + &self, + hash: &BlockHash, + number: u64, + parent_hash: &BlockHash, + changeset: ChangeSet, + ) -> Result, Error> { self.db.write().insert_block(hash, number, parent_hash, changeset) } /// Finalize a previously inserted block. - pub fn canonicalize_block(&self, hash: &BlockHash) -> Result, Error> { + pub fn canonicalize_block( + &self, + hash: &BlockHash, + ) -> Result, Error> { self.db.write().canonicalize_block(hash) } @@ -466,6 +507,11 @@ impl StateDb { pub fn revert_pending(&self) { self.db.write().revert_pending(); } + + /// Returns the current memory statistics of this instance. + pub fn memory_info(&self) -> StateDbMemoryInfo { + self.db.read().memory_info() + } } #[cfg(test)] diff --git a/client/state-db/src/noncanonical.rs b/client/state-db/src/noncanonical.rs index de7294d770..6a34523b66 100644 --- a/client/state-db/src/noncanonical.rs +++ b/client/state-db/src/noncanonical.rs @@ -30,6 +30,7 @@ const NON_CANONICAL_JOURNAL: &[u8] = b"noncanonical_journal"; const LAST_CANONICAL: &[u8] = b"last_canonical"; /// See module documentation. +#[derive(parity_util_mem_derive::MallocSizeOf)] pub struct NonCanonicalOverlay { last_canonicalized: Option<(BlockHash, u64)>, levels: VecDeque>>, @@ -55,6 +56,7 @@ fn to_journal_key(block: u64, index: u64) -> Vec { } #[cfg_attr(test, derive(PartialEq, Debug))] +#[derive(parity_util_mem_derive::MallocSizeOf)] struct BlockOverlay { hash: BlockHash, journal_key: Vec, @@ -99,8 +101,10 @@ fn discard_descendants( let mut discarded = Vec::new(); if let Some(level) = levels.get_mut(index) { *level = level.drain(..).filter_map(|overlay| { - let parent = parents.get(&overlay.hash).expect("there is a parent entry for each entry in levels; qed").clone(); - if parent == *hash { + let parent = parents.get(&overlay.hash) + .expect("there is a parent entry for each entry in levels; qed"); + + if parent == hash { discarded.push(overlay.hash.clone()); if pinned.contains_key(&overlay.hash) { // save to be discarded later. @@ -375,7 +379,7 @@ impl NonCanonicalOverlay { None } - /// Check if the block is in the canonicalization queue. + /// Check if the block is in the canonicalization queue. pub fn have_block(&self, hash: &BlockHash) -> bool { (self.parents.contains_key(hash) || self.pending_insertions.contains(hash)) && !self.pending_canonicalizations.contains(hash) diff --git a/client/state-db/src/pruning.rs b/client/state-db/src/pruning.rs index 71d018087b..6cf5f26006 100644 --- a/client/state-db/src/pruning.rs +++ b/client/state-db/src/pruning.rs @@ -31,6 +31,7 @@ const LAST_PRUNED: &[u8] = b"last_pruned"; const PRUNING_JOURNAL: &[u8] = b"pruning_journal"; /// See module documentation. +#[derive(parity_util_mem_derive::MallocSizeOf)] pub struct RefWindow { /// A queue of keys that should be deleted for each block in the pruning window. death_rows: VecDeque>, @@ -46,7 +47,7 @@ pub struct RefWindow { pending_prunings: usize, } -#[derive(Debug, PartialEq, Eq)] +#[derive(Debug, PartialEq, Eq, parity_util_mem_derive::MallocSizeOf)] struct DeathRow { hash: BlockHash, journal_key: Vec, -- GitLab From 798390fba8c03235ac2a25769c563ec7c6788425 Mon Sep 17 00:00:00 2001 From: joe petrowski <25483142+joepetrowski@users.noreply.github.com> Date: Tue, 3 Mar 2020 10:52:38 +0100 Subject: [PATCH 081/301] Change extrinsic_count to extrinsic_index in pallet-utility (#5044) Co-authored-by: Benjamin Kampmann --- frame/utility/src/lib.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frame/utility/src/lib.rs b/frame/utility/src/lib.rs index 76f3ca6bf6..0b60532c3d 100644 --- a/frame/utility/src/lib.rs +++ b/frame/utility/src/lib.rs @@ -538,7 +538,7 @@ impl Module { pub fn timepoint() -> Timepoint { Timepoint { height: >::block_number(), - index: >::extrinsic_count(), + index: >::extrinsic_index().unwrap_or_default(), } } -- GitLab From a201f34963dbd6fb7a266a5d6f0b5660ca0db34b Mon Sep 17 00:00:00 2001 From: Ashley Date: Tue, 3 Mar 2020 11:36:58 +0100 Subject: [PATCH 082/301] Add more metrics to prometheus (#5034) * Add a few things * Add finality_grandpa_round * fix fg tests * Nitpicks * Nitpicks * Fix name of prometheus crate --- Cargo.lock | 2 ++ bin/node-template/node/src/service.rs | 1 + bin/node/cli/src/service.rs | 1 + client/finality-grandpa/Cargo.toml | 1 + client/finality-grandpa/src/environment.rs | 31 ++++++++++++++++ client/finality-grandpa/src/lib.rs | 12 ++++++- client/finality-grandpa/src/tests.rs | 6 ++++ client/network/Cargo.toml | 1 + client/network/src/config.rs | 4 +++ client/network/src/error.rs | 3 ++ client/network/src/service.rs | 41 ++++++++++++++++++++-- client/network/test/src/lib.rs | 6 ++-- client/service/Cargo.toml | 2 +- client/service/src/builder.rs | 36 +++++++++++-------- client/service/src/error.rs | 4 +-- client/service/src/lib.rs | 8 +++++ 16 files changed, 135 insertions(+), 24 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 47583e57e3..d651563f13 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -6120,6 +6120,7 @@ dependencies = [ "sp-keyring", "sp-runtime", "sp-state-machine", + "substrate-prometheus-endpoint", "substrate-test-runtime-client", "tempfile", "tokio 0.2.12", @@ -6204,6 +6205,7 @@ dependencies = [ "sp-keyring", "sp-runtime", "sp-test-primitives", + "substrate-prometheus-endpoint", "substrate-test-runtime", "substrate-test-runtime-client", "tempfile", diff --git a/bin/node-template/node/src/service.rs b/bin/node-template/node/src/service.rs index 7a714d5d7a..f87aaf5ec2 100644 --- a/bin/node-template/node/src/service.rs +++ b/bin/node-template/node/src/service.rs @@ -157,6 +157,7 @@ pub fn new_full(config: Configuration) on_exit: service.on_exit(), telemetry_on_connect: Some(service.telemetry_on_connect_stream()), voting_rule: grandpa::VotingRulesBuilder::default().build(), + prometheus_registry: service.prometheus_registry() }; // the GRANDPA voter task is considered infallible, i.e. diff --git a/bin/node/cli/src/service.rs b/bin/node/cli/src/service.rs index 7df266a687..f31fa0b973 100644 --- a/bin/node/cli/src/service.rs +++ b/bin/node/cli/src/service.rs @@ -228,6 +228,7 @@ macro_rules! new_full { on_exit: service.on_exit(), telemetry_on_connect: Some(service.telemetry_on_connect_stream()), voting_rule: grandpa::VotingRulesBuilder::default().build(), + prometheus_registry: service.prometheus_registry(), }; // the GRANDPA voter task is considered infallible, i.e. diff --git a/client/finality-grandpa/Cargo.toml b/client/finality-grandpa/Cargo.toml index 8dcc24c3da..a58da417c0 100644 --- a/client/finality-grandpa/Cargo.toml +++ b/client/finality-grandpa/Cargo.toml @@ -35,6 +35,7 @@ sc-network = { version = "0.8.0-alpha.2", path = "../network" } sc-network-gossip = { version = "0.8.0-alpha.2", path = "../network-gossip" } sp-finality-tracker = { version = "2.0.0-alpha.2", path = "../../primitives/finality-tracker" } sp-finality-grandpa = { version = "2.0.0-alpha.2", path = "../../primitives/finality-grandpa" } +prometheus-endpoint = { package = "substrate-prometheus-endpoint", path = "../../utils/prometheus", version = "0.8.0-alpha.2" } sc-block-builder = { version = "0.8.0-alpha.2", path = "../block-builder" } finality-grandpa = { version = "0.11.1", features = ["derive-codec"] } pin-project = "0.4.6" diff --git a/client/finality-grandpa/src/environment.rs b/client/finality-grandpa/src/environment.rs index dca1eab993..21a44c32dc 100644 --- a/client/finality-grandpa/src/environment.rs +++ b/client/finality-grandpa/src/environment.rs @@ -58,6 +58,7 @@ use crate::justification::GrandpaJustification; use crate::until_imported::UntilVoteTargetImported; use crate::voting_rule::VotingRule; use sp_finality_grandpa::{AuthorityId, AuthoritySignature, SetId, RoundNumber}; +use prometheus_endpoint::{Gauge, U64, register, PrometheusError}; type HistoricalVotes = finality_grandpa::HistoricalVotes< ::Hash, @@ -372,6 +373,24 @@ impl SharedVoterSetState { } } +/// Prometheus metrics for GRANDPA. +#[derive(Clone)] +pub(crate) struct Metrics { + finality_grandpa_round: Gauge, +} + +impl Metrics { + pub(crate) fn register(registry: &prometheus_endpoint::Registry) -> Result { + Ok(Self { + finality_grandpa_round: register( + Gauge::new("finality_grandpa_round", "Highest completed GRANDPA round.")?, + registry + )?, + }) + } +} + + /// The environment we run GRANDPA in. pub(crate) struct Environment, SC, VR> { pub(crate) client: Arc, @@ -384,6 +403,7 @@ pub(crate) struct Environment, SC, pub(crate) set_id: SetId, pub(crate) voter_set_state: SharedVoterSetState, pub(crate) voting_rule: VR, + pub(crate) metrics: Option, pub(crate) _phantom: PhantomData, } @@ -397,6 +417,17 @@ impl, SC, VR> Environment { pub telemetry_on_connect: Option>, /// A voting rule used to potentially restrict target votes. pub voting_rule: VR, + /// The prometheus metrics registry. + pub prometheus_registry: Option, } /// Run a GRANDPA voter as a task. Provide configuration and a link to a @@ -576,6 +578,7 @@ pub fn run_grandpa_voter( on_exit, telemetry_on_connect, voting_rule, + prometheus_registry, } = grandpa_params; // NOTE: we have recently removed `run_grandpa_observer` from the public @@ -634,6 +637,7 @@ pub fn run_grandpa_voter( voting_rule, persistent_data, voter_commands_rx, + prometheus_registry, ); let voter_work = voter_work @@ -673,6 +677,7 @@ where voting_rule: VR, persistent_data: PersistentData, voter_commands_rx: mpsc::UnboundedReceiver>>, + prometheus_registry: Option, ) -> Self { let voters = persistent_data.authority_set.current_authorities(); @@ -687,6 +692,10 @@ where authority_set: persistent_data.authority_set.clone(), consensus_changes: persistent_data.consensus_changes.clone(), voter_set_state: persistent_data.set_state.clone(), + metrics: prometheus_registry.map(|registry| { + Metrics::register(®istry) + .expect("Other metrics would have failed to register before these; qed") + }), _phantom: PhantomData, }); @@ -807,6 +816,7 @@ where consensus_changes: self.env.consensus_changes.clone(), network: self.env.network.clone(), voting_rule: self.env.voting_rule.clone(), + metrics: self.env.metrics.clone(), _phantom: PhantomData, }); diff --git a/client/finality-grandpa/src/tests.rs b/client/finality-grandpa/src/tests.rs index 6e81c2f00a..7b5880f7ee 100644 --- a/client/finality-grandpa/src/tests.rs +++ b/client/finality-grandpa/src/tests.rs @@ -447,6 +447,7 @@ fn run_to_completion_with( on_exit: Exit, telemetry_on_connect: None, voting_rule: (), + prometheus_registry: None, }; let voter = run_grandpa_voter(grandpa_params).expect("all in order with client and network"); @@ -578,6 +579,7 @@ fn finalize_3_voters_1_full_observer() { on_exit: Exit, telemetry_on_connect: None, voting_rule: (), + prometheus_registry: None, }; voters.push(run_grandpa_voter(grandpa_params).expect("all in order with client and network")); @@ -741,6 +743,7 @@ fn transition_3_voters_twice_1_full_observer() { on_exit: Exit, telemetry_on_connect: None, voting_rule: (), + prometheus_registry: None, }; let voter = run_grandpa_voter(grandpa_params).expect("all in order with client and network"); @@ -1166,6 +1169,7 @@ fn voter_persists_its_votes() { on_exit: Exit, telemetry_on_connect: None, voting_rule: VotingRulesBuilder::default().build(), + prometheus_registry: None, }; let voter = run_grandpa_voter(grandpa_params) @@ -1511,6 +1515,7 @@ fn voter_catches_up_to_latest_round_when_behind() { on_exit: Exit, telemetry_on_connect: None, voting_rule: (), + prometheus_registry: None, }; Box::pin(run_grandpa_voter(grandpa_params).expect("all in order with client and network")) @@ -1642,6 +1647,7 @@ fn grandpa_environment_respects_voting_rules() { voters: Arc::new(authority_set.current_authorities()), network, voting_rule, + metrics: None, _phantom: PhantomData, } }; diff --git a/client/network/Cargo.toml b/client/network/Cargo.toml index 50a19e9da0..565796e319 100644 --- a/client/network/Cargo.toml +++ b/client/network/Cargo.toml @@ -52,6 +52,7 @@ sp-consensus = { version = "0.8.0-alpha.2", path = "../../primitives/consensus/c sp-consensus-babe = { version = "0.8.0-alpha.2", path = "../../primitives/consensus/babe" } sp-core = { version = "2.0.0-alpha.2", path = "../../primitives/core" } sp-runtime = { version = "2.0.0-alpha.2", path = "../../primitives/runtime" } +prometheus-endpoint = { package = "substrate-prometheus-endpoint", version = "0.8.0-alpha.2", path = "../../utils/prometheus" } thiserror = "1" unsigned-varint = { version = "0.3.1", features = ["futures", "futures-codec"] } void = "1.0.2" diff --git a/client/network/src/config.rs b/client/network/src/config.rs index f5cad5977f..76c0c9b544 100644 --- a/client/network/src/config.rs +++ b/client/network/src/config.rs @@ -41,6 +41,7 @@ use core::{fmt, iter}; use std::{future::Future, pin::Pin}; use std::{error::Error, fs, io::{self, Write}, net::Ipv4Addr, path::{Path, PathBuf}, sync::Arc}; use zeroize::Zeroize; +use prometheus_endpoint::Registry; /// Network initialization parameters. pub struct Params { @@ -90,6 +91,9 @@ pub struct Params { /// Type to check incoming block announcements. pub block_announce_validator: Box + Send>, + + /// Registry for recording prometheus metrics to. + pub metrics_registry: Option, } bitflags! { diff --git a/client/network/src/error.rs b/client/network/src/error.rs index ba5d5c2d0d..158e75fcf1 100644 --- a/client/network/src/error.rs +++ b/client/network/src/error.rs @@ -45,6 +45,8 @@ pub enum Error { /// The second peer id that was found for the bootnode. second_id: PeerId, }, + /// Prometheus metrics error. + Prometheus(prometheus_endpoint::PrometheusError) } // Make `Debug` use the `Display` implementation. @@ -60,6 +62,7 @@ impl std::error::Error for Error { Error::Io(ref err) => Some(err), Error::Client(ref err) => Some(err), Error::DuplicateBootnode { .. } => None, + Error::Prometheus(ref err) => Some(err), } } } diff --git a/client/network/src/service.rs b/client/network/src/service.rs index 288289d95c..821847add1 100644 --- a/client/network/src/service.rs +++ b/client/network/src/service.rs @@ -39,6 +39,7 @@ use libp2p::swarm::{NetworkBehaviour, SwarmBuilder, SwarmEvent}; use parking_lot::Mutex; use sc_peerset::PeersetHandle; use sp_runtime::{traits::{Block as BlockT, NumberFor}, ConsensusEngineId}; +use prometheus_endpoint::{Registry, Gauge, U64, register, PrometheusError}; use crate::{behaviour::{Behaviour, BehaviourOut}, config::{parse_str_addr, parse_addr}}; use crate::{transport, config::NonReservedPeerMode, ReputationChange}; @@ -294,6 +295,10 @@ impl NetworkWorker { from_worker, light_client_rqs: params.on_demand.and_then(|od| od.extract_receiver()), event_streams: Vec::new(), + metrics: match params.metrics_registry { + Some(registry) => Some(Metrics::register(®istry)?), + None => None + } }) } @@ -727,6 +732,26 @@ pub struct NetworkWorker { light_client_rqs: Option>>, /// Senders for events that happen on the network. event_streams: Vec>, + /// Prometheus network metrics. + metrics: Option +} + +struct Metrics { + is_major_syncing: Gauge, + peers_count: Gauge, +} + +impl Metrics { + fn register(registry: &Registry) -> Result { + Ok(Self { + is_major_syncing: register(Gauge::new( + "is_major_syncing", "Whether the node is performing a major sync or not.", + )?, registry)?, + peers_count: register(Gauge::new( + "peers_count", "Number of network gossip peers", + )?, registry)?, + }) + } } impl Future for NetworkWorker { @@ -818,16 +843,26 @@ impl Future for NetworkWorker { }; } + let num_connected_peers = this.network_service.user_protocol_mut().num_connected_peers(); + // Update the variables shared with the `NetworkService`. - this.num_connected.store(this.network_service.user_protocol_mut().num_connected_peers(), Ordering::Relaxed); + this.num_connected.store(num_connected_peers, Ordering::Relaxed); { let external_addresses = Swarm::::external_addresses(&this.network_service).cloned().collect(); *this.external_addresses.lock() = external_addresses; } - this.is_major_syncing.store(match this.network_service.user_protocol_mut().sync_state() { + + let is_major_syncing = match this.network_service.user_protocol_mut().sync_state() { SyncState::Idle => false, SyncState::Downloading => true, - }, Ordering::Relaxed); + }; + + this.is_major_syncing.store(is_major_syncing, Ordering::Relaxed); + + if let Some(metrics) = this.metrics.as_ref() { + metrics.is_major_syncing.set(is_major_syncing as u64); + metrics.peers_count.set(num_connected_peers as u64); + } Poll::Pending } diff --git a/client/network/test/src/lib.rs b/client/network/test/src/lib.rs index 94eeb8e5fb..0add6c63d5 100644 --- a/client/network/test/src/lib.rs +++ b/client/network/test/src/lib.rs @@ -640,7 +640,8 @@ pub trait TestNetFactory: Sized { transaction_pool: Arc::new(EmptyTransactionPool), protocol_id: ProtocolId::from(&b"test-protocol-name"[..]), import_queue, - block_announce_validator: Box::new(DefaultBlockAnnounceValidator::new(client.clone())) + block_announce_validator: Box::new(DefaultBlockAnnounceValidator::new(client.clone())), + metrics_registry: None, }).unwrap(); self.mut_peers(|peers| { @@ -713,7 +714,8 @@ pub trait TestNetFactory: Sized { transaction_pool: Arc::new(EmptyTransactionPool), protocol_id: ProtocolId::from(&b"test-protocol-name"[..]), import_queue, - block_announce_validator: Box::new(DefaultBlockAnnounceValidator::new(client.clone())) + block_announce_validator: Box::new(DefaultBlockAnnounceValidator::new(client.clone())), + metrics_registry: None, }).unwrap(); self.mut_peers(|peers| { diff --git a/client/service/Cargo.toml b/client/service/Cargo.toml index 80ba12ca00..5ae4a3a526 100644 --- a/client/service/Cargo.toml +++ b/client/service/Cargo.toml @@ -56,7 +56,7 @@ sc-rpc = { version = "2.0.0-alpha.2", path = "../rpc" } sc-telemetry = { version = "2.0.0-alpha.2", path = "../telemetry" } sc-offchain = { version = "2.0.0-alpha.2", path = "../offchain" } parity-multiaddr = { package = "parity-multiaddr", version = "0.5.0" } -substrate-prometheus-endpoint = { path = "../../utils/prometheus" , version = "0.8.0-alpha.2"} +prometheus-endpoint = { package = "substrate-prometheus-endpoint", path = "../../utils/prometheus" , version = "0.8.0-alpha.2"} sc-tracing = { version = "2.0.0-alpha.2", path = "../tracing" } tracing = "0.1.10" parity-util-mem = { version = "0.5.1", default-features = false, features = ["primitive-types"] } diff --git a/client/service/src/builder.rs b/client/service/src/builder.rs index cce126f1b3..01bba286c6 100644 --- a/client/service/src/builder.rs +++ b/client/service/src/builder.rs @@ -53,15 +53,15 @@ use sysinfo::{get_current_pid, ProcessExt, System, SystemExt}; use sc_telemetry::{telemetry, SUBSTRATE_INFO}; use sp_transaction_pool::{MaintainedTransactionPool, ChainEvent}; use sp_blockchain; -use substrate_prometheus_endpoint::{register, Gauge, U64, F64, Registry, PrometheusError, Opts, GaugeVec}; +use prometheus_endpoint::{register, Gauge, U64, F64, Registry, PrometheusError, Opts, GaugeVec}; struct ServiceMetrics { block_height_number: GaugeVec, - peers_count: Gauge, ready_transactions_number: Gauge, memory_usage_bytes: Gauge, cpu_usage_percentage: Gauge, network_per_sec_bytes: GaugeVec, + node_roles: Gauge, } impl ServiceMetrics { @@ -71,9 +71,6 @@ impl ServiceMetrics { Opts::new("block_height_number", "Height of the chain"), &["status"] )?, registry)?, - peers_count: register(Gauge::new( - "peers_count", "Number of network gossip peers", - )?, registry)?, ready_transactions_number: register(Gauge::new( "ready_transactions_number", "Number of transactions in the ready queue", )?, registry)?, @@ -87,6 +84,10 @@ impl ServiceMetrics { Opts::new("network_per_sec_bytes", "Networking bytes per second"), &["direction"] )?, registry)?, + node_roles: register(Gauge::new( + "node_roles", "The roles the node is running as", + )?, registry)?, + }) } } @@ -887,6 +888,14 @@ ServiceBuilder< let block_announce_validator = Box::new(sp_consensus::block_validation::DefaultBlockAnnounceValidator::new(client.clone())); + let prometheus_registry_and_port = match config.prometheus_port { + Some(port) => match prometheus_registry { + Some(registry) => Some((registry, port)), + None => Some((Registry::new_custom(Some("substrate".into()), None)?, port)) + }, + None => None + }; + let network_params = sc_network::config::Params { roles: config.roles, executor: { @@ -906,6 +915,7 @@ ServiceBuilder< import_queue, protocol_id, block_announce_validator, + metrics_registry: prometheus_registry_and_port.as_ref().map(|(r, _)| r.clone()) }; let has_bootnodes = !network_params.network_config.boot_nodes.is_empty(); @@ -1020,17 +1030,14 @@ ServiceBuilder< )); } - // Prometheus endpoint and metrics - let metrics = if let Some(port) = config.prometheus_port { - let registry = match prometheus_registry { - Some(registry) => registry, - None => Registry::new_custom(Some("substrate".into()), None)? - }; - + // Prometheus metrics + let metrics = if let Some((registry, port)) = prometheus_registry_and_port.clone() { let metrics = ServiceMetrics::register(®istry)?; + metrics.node_roles.set(u64::from(config.roles.bits())); + let future = select( - substrate_prometheus_endpoint::init_prometheus(port, registry).boxed(), + prometheus_endpoint::init_prometheus(port, registry).boxed(), exit.clone() ).map(drop); @@ -1043,7 +1050,6 @@ ServiceBuilder< } else { None }; - // Periodically notify the telemetry. let transaction_pool_ = transaction_pool.clone(); let client_ = client.clone(); @@ -1102,7 +1108,6 @@ ServiceBuilder< metrics.memory_usage_bytes.set(memory); metrics.cpu_usage_percentage.set(f64::from(cpu_usage)); metrics.ready_transactions_number.set(txpool_status.ready as u64); - metrics.peers_count.set(num_peers as u64); metrics.network_per_sec_bytes.with_label_values(&["download"]).set(net_status.average_download_per_sec); metrics.network_per_sec_bytes.with_label_values(&["upload"]).set(net_status.average_upload_per_sec); @@ -1305,6 +1310,7 @@ ServiceBuilder< _telemetry_on_connect_sinks: telemetry_connection_sinks.clone(), keystore, marker: PhantomData::, + prometheus_registry: prometheus_registry_and_port.map(|(r, _)| r) }) } } diff --git a/client/service/src/error.rs b/client/service/src/error.rs index adf630e44c..5a78a18789 100644 --- a/client/service/src/error.rs +++ b/client/service/src/error.rs @@ -53,8 +53,8 @@ impl<'a> From<&'a str> for Error { } } -impl From for Error { - fn from(e: substrate_prometheus_endpoint::PrometheusError) -> Self { +impl From for Error { + fn from(e: prometheus_endpoint::PrometheusError) -> Self { Error::Other(format!("Prometheus error: {}", e)) } } diff --git a/client/service/src/lib.rs b/client/service/src/lib.rs index c4678eb28d..5c59cdf91f 100644 --- a/client/service/src/lib.rs +++ b/client/service/src/lib.rs @@ -114,6 +114,7 @@ pub struct Service { _offchain_workers: Option>, keystore: sc_keystore::KeyStorePtr, marker: PhantomData, + prometheus_registry: Option, } impl Unpin for Service {} @@ -225,6 +226,9 @@ pub trait AbstractService: 'static + Future> + /// Get a handle to a future that will resolve on exit. fn on_exit(&self) -> ::exit_future::Exit; + + /// Get the prometheus metrics registry, if available. + fn prometheus_registry(&self) -> Option; } impl AbstractService for @@ -328,6 +332,10 @@ where fn on_exit(&self) -> exit_future::Exit { self.exit.clone() } + + fn prometheus_registry(&self) -> Option { + self.prometheus_registry.clone() + } } impl Future for -- GitLab From 62d4f5e139b467dc81069da2735f8bcbe18d3398 Mon Sep 17 00:00:00 2001 From: kianenigma Date: Tue, 3 Mar 2020 14:30:24 +0100 Subject: [PATCH 083/301] Fix cargo file --- Cargo.lock | 1 - frame/staking/Cargo.toml | 3 --- frame/staking/src/lib.rs | 5 +++-- 3 files changed, 3 insertions(+), 6 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 7a2660bb80..b0ce1c1790 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4360,7 +4360,6 @@ dependencies = [ "sp-application-crypto", "sp-core", "sp-io", - "sp-keyring", "sp-phragmen", "sp-runtime", "sp-staking", diff --git a/frame/staking/Cargo.toml b/frame/staking/Cargo.toml index 27840cbc4f..68ba32330a 100644 --- a/frame/staking/Cargo.toml +++ b/frame/staking/Cargo.toml @@ -11,7 +11,6 @@ description = "FRAME pallet staking" [dependencies] serde = { version = "1.0.101", optional = true } codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } -sp-keyring = { version = "2.0.0-alpha.2", optional = true, path = "../../primitives/keyring" } sp-std = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/std" } sp-phragmen = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/phragmen" } sp-io ={ path = "../../primitives/io", default-features = false , version = "2.0.0-alpha.2"} @@ -55,9 +54,7 @@ std = [ "sp-runtime/std", "sp-staking/std", "pallet-session/std", - "pallet-indices/std", "frame-system/std", "pallet-authorship/std", "sp-core/std", - "rand/std" ] diff --git a/frame/staking/src/lib.rs b/frame/staking/src/lib.rs index da2355c0ae..3a4d186033 100644 --- a/frame/staking/src/lib.rs +++ b/frame/staking/src/lib.rs @@ -737,8 +737,9 @@ pub trait Trait: frame_system::Trait { /// Something that can estimate the next session change, accurately or as a best effort guess. type NextSessionChange: EstimateNextSessionChange; - /// How many blocks ahead of the era do we try to run the phragmen offchain? Setting this to - /// zero will disable the offchain compute and only on-chain seq-phragmen will be used. + /// How many blocks ahead of the era, within the last do we try to run the phragmen offchain? + /// Setting this to zero will disable the offchain compute and only on-chain seq-phragmen will + /// be used. type ElectionLookahead: Get; /// The overarching call type. -- GitLab From 870540b7243ed7557b83a7bb6e978351ed81ebee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bastian=20K=C3=B6cher?= Date: Tue, 3 Mar 2020 14:40:02 +0100 Subject: [PATCH 084/301] Update to SCALE 1.2.0 (#5113) This updates `parity-scale-codec` to `1.2.0`, which includes multiple performance improvements and a fix that bounds the capacity of a vector at decoding. --- Cargo.lock | 8 ++++---- bin/node-template/pallets/template/Cargo.toml | 10 +++++----- bin/node-template/runtime/Cargo.toml | 2 +- bin/node/cli/Cargo.toml | 2 +- bin/node/executor/Cargo.toml | 2 +- bin/node/inspect/Cargo.toml | 2 +- bin/node/runtime/Cargo.toml | 2 +- bin/node/testing/Cargo.toml | 2 +- bin/node/transaction-factory/Cargo.toml | 2 +- bin/utils/subkey/Cargo.toml | 2 +- client/Cargo.toml | 2 +- client/api/Cargo.toml | 2 +- client/authority-discovery/Cargo.toml | 2 +- client/basic-authorship/Cargo.toml | 2 +- client/block-builder/Cargo.toml | 2 +- client/consensus/aura/Cargo.toml | 2 +- client/consensus/babe/Cargo.toml | 2 +- client/consensus/epochs/Cargo.toml | 2 +- client/consensus/pow/Cargo.toml | 2 +- client/consensus/slots/Cargo.toml | 2 +- client/db/Cargo.toml | 2 +- client/executor/Cargo.toml | 2 +- client/executor/common/Cargo.toml | 2 +- client/executor/wasmi/Cargo.toml | 2 +- client/executor/wasmtime/Cargo.toml | 2 +- client/finality-grandpa/Cargo.toml | 2 +- client/network/Cargo.toml | 2 +- client/offchain/Cargo.toml | 2 +- client/rpc-api/Cargo.toml | 2 +- client/rpc/Cargo.toml | 2 +- client/service/Cargo.toml | 2 +- client/state-db/Cargo.toml | 2 +- client/transaction-pool/Cargo.toml | 2 +- client/transaction-pool/graph/Cargo.toml | 2 +- frame/assets/Cargo.toml | 2 +- frame/aura/Cargo.toml | 2 +- frame/authority-discovery/Cargo.toml | 2 +- frame/authorship/Cargo.toml | 2 +- frame/babe/Cargo.toml | 2 +- frame/balances/Cargo.toml | 2 +- frame/benchmarking/Cargo.toml | 2 +- frame/collective/Cargo.toml | 2 +- frame/contracts/Cargo.toml | 2 +- frame/contracts/common/Cargo.toml | 2 +- frame/contracts/rpc/Cargo.toml | 2 +- frame/contracts/rpc/runtime-api/Cargo.toml | 2 +- frame/democracy/Cargo.toml | 2 +- frame/elections-phragmen/Cargo.toml | 2 +- frame/elections/Cargo.toml | 2 +- frame/evm/Cargo.toml | 2 +- frame/example-offchain-worker/Cargo.toml | 2 +- frame/example/Cargo.toml | 2 +- frame/executive/Cargo.toml | 2 +- frame/finality-tracker/Cargo.toml | 2 +- frame/generic-asset/Cargo.toml | 14 +++++++------- frame/grandpa/Cargo.toml | 2 +- frame/identity/Cargo.toml | 2 +- frame/im-online/Cargo.toml | 2 +- frame/indices/Cargo.toml | 2 +- frame/membership/Cargo.toml | 2 +- frame/metadata/Cargo.toml | 2 +- frame/nicks/Cargo.toml | 2 +- frame/offences/Cargo.toml | 2 +- frame/randomness-collective-flip/Cargo.toml | 2 +- frame/recovery/Cargo.toml | 2 +- frame/scored-pool/Cargo.toml | 2 +- frame/session/Cargo.toml | 2 +- frame/society/Cargo.toml | 2 +- frame/staking/Cargo.toml | 2 +- frame/sudo/Cargo.toml | 2 +- frame/support/Cargo.toml | 2 +- frame/support/test/Cargo.toml | 2 +- frame/system/Cargo.toml | 2 +- frame/system/rpc/runtime-api/Cargo.toml | 2 +- frame/timestamp/Cargo.toml | 2 +- frame/transaction-payment/Cargo.toml | 2 +- frame/transaction-payment/rpc/Cargo.toml | 2 +- .../transaction-payment/rpc/runtime-api/Cargo.toml | 2 +- frame/treasury/Cargo.toml | 2 +- frame/utility/Cargo.toml | 2 +- frame/vesting/Cargo.toml | 2 +- primitives/api/Cargo.toml | 2 +- primitives/api/test/Cargo.toml | 2 +- primitives/application-crypto/Cargo.toml | 4 ++-- primitives/arithmetic/Cargo.toml | 2 +- primitives/authority-discovery/Cargo.toml | 2 +- primitives/authorship/Cargo.toml | 2 +- primitives/block-builder/Cargo.toml | 2 +- primitives/blockchain/Cargo.toml | 2 +- primitives/consensus/aura/Cargo.toml | 2 +- primitives/consensus/babe/Cargo.toml | 2 +- primitives/consensus/common/Cargo.toml | 2 +- primitives/consensus/pow/Cargo.toml | 2 +- primitives/core/Cargo.toml | 2 +- primitives/finality-grandpa/Cargo.toml | 2 +- primitives/finality-tracker/Cargo.toml | 2 +- primitives/inherents/Cargo.toml | 2 +- primitives/io/Cargo.toml | 2 +- primitives/runtime-interface/Cargo.toml | 2 +- primitives/runtime/Cargo.toml | 2 +- primitives/sandbox/Cargo.toml | 2 +- primitives/staking/Cargo.toml | 2 +- primitives/state-machine/Cargo.toml | 2 +- primitives/test-primitives/Cargo.toml | 2 +- primitives/timestamp/Cargo.toml | 2 +- primitives/transaction-pool/Cargo.toml | 2 +- primitives/trie/Cargo.toml | 2 +- primitives/version/Cargo.toml | 2 +- primitives/wasm-interface/Cargo.toml | 2 +- test-utils/client/Cargo.toml | 2 +- test-utils/runtime/Cargo.toml | 2 +- test-utils/runtime/client/Cargo.toml | 2 +- test-utils/runtime/transaction-pool/Cargo.toml | 2 +- utils/fork-tree/Cargo.toml | 2 +- utils/frame/benchmarking-cli/Cargo.toml | 2 +- utils/frame/rpc/system/Cargo.toml | 2 +- 116 files changed, 130 insertions(+), 130 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index d651563f13..67346ad86b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4617,9 +4617,9 @@ dependencies = [ [[package]] name = "parity-scale-codec" -version = "1.1.2" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f747c06d9f3b2ad387ac881b9667298c81b1243aa9833f086e05996937c35507" +checksum = "f509c5e67ca0605ee17dcd3f91ef41cadd685c75a298fb6261b781a5acb3f910" dependencies = [ "arrayvec 0.5.1", "bitvec", @@ -4630,9 +4630,9 @@ dependencies = [ [[package]] name = "parity-scale-codec-derive" -version = "1.1.1" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34e513ff3e406f3ede6796dcdc83d0b32ffb86668cea1ccf7363118abeb00476" +checksum = "5a0ec292e92e8ec7c58e576adacc1e3f399c597c8f263c42f18420abe58e7245" dependencies = [ "proc-macro-crate", "proc-macro2", diff --git a/bin/node-template/pallets/template/Cargo.toml b/bin/node-template/pallets/template/Cargo.toml index 808951a77d..b39fcc1dae 100644 --- a/bin/node-template/pallets/template/Cargo.toml +++ b/bin/node-template/pallets/template/Cargo.toml @@ -9,7 +9,7 @@ repository = "https://github.com/paritytech/substrate/" description = "FRAME pallet template" [dependencies] -codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } +codec = { package = "parity-scale-codec", version = "1.2.0", default-features = false, features = ["derive"] } safe-mix = { default-features = false, version = '1.0.0' } [dependencies.frame-support] @@ -41,8 +41,8 @@ path = "../../../../primitives/runtime" [features] default = ['std'] std = [ - 'codec/std', - 'frame-support/std', - 'safe-mix/std', - 'system/std' + 'codec/std', + 'frame-support/std', + 'safe-mix/std', + 'system/std' ] diff --git a/bin/node-template/runtime/Cargo.toml b/bin/node-template/runtime/Cargo.toml index 35856e3bdc..9268dd8c05 100644 --- a/bin/node-template/runtime/Cargo.toml +++ b/bin/node-template/runtime/Cargo.toml @@ -8,7 +8,7 @@ homepage = "https://substrate.dev" repository = "https://github.com/paritytech/substrate/" [dependencies] -codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } +codec = { package = "parity-scale-codec", version = "1.2.0", default-features = false, features = ["derive"] } aura = { version = "2.0.0-alpha.2", default-features = false, package = "pallet-aura", path = "../../../frame/aura" } balances = { version = "2.0.0-alpha.2", default-features = false, package = "pallet-balances", path = "../../../frame/balances" } diff --git a/bin/node/cli/Cargo.toml b/bin/node/cli/Cargo.toml index 48e4c634f0..cfb1621b69 100644 --- a/bin/node/cli/Cargo.toml +++ b/bin/node/cli/Cargo.toml @@ -31,7 +31,7 @@ crate-type = ["cdylib", "rlib"] [dependencies] # third-party dependencies -codec = { package = "parity-scale-codec", version = "1.0.6" } +codec = { package = "parity-scale-codec", version = "1.2.0" } serde = { version = "1.0.102", features = ["derive"] } futures = { version = "0.3.1", features = ["compat"] } hex-literal = "0.2.1" diff --git a/bin/node/executor/Cargo.toml b/bin/node/executor/Cargo.toml index 2d6dd8d12b..c8ef75a5a2 100644 --- a/bin/node/executor/Cargo.toml +++ b/bin/node/executor/Cargo.toml @@ -9,7 +9,7 @@ homepage = "https://substrate.dev" repository = "https://github.com/paritytech/substrate/" [dependencies] -codec = { package = "parity-scale-codec", version = "1.0.0" } +codec = { package = "parity-scale-codec", version = "1.2.0" } node-primitives = { version = "2.0.0-alpha.2", path = "../primitives" } node-runtime = { version = "2.0.0-alpha.2", path = "../runtime" } sc-executor = { version = "0.8.0-alpha.2", path = "../../../client/executor" } diff --git a/bin/node/inspect/Cargo.toml b/bin/node/inspect/Cargo.toml index 70ed7e3cfc..022f4d0ca4 100644 --- a/bin/node/inspect/Cargo.toml +++ b/bin/node/inspect/Cargo.toml @@ -8,7 +8,7 @@ homepage = "https://substrate.dev" repository = "https://github.com/paritytech/substrate/" [dependencies] -codec = { package = "parity-scale-codec", version = "1.0.0" } +codec = { package = "parity-scale-codec", version = "1.2.0" } derive_more = "0.99" log = "0.4.8" sc-cli = { version = "0.8.0-alpha.2", path = "../../../client/cli" } diff --git a/bin/node/runtime/Cargo.toml b/bin/node/runtime/Cargo.toml index 66e9dece17..8a901660ce 100644 --- a/bin/node/runtime/Cargo.toml +++ b/bin/node/runtime/Cargo.toml @@ -11,7 +11,7 @@ repository = "https://github.com/paritytech/substrate/" [dependencies] # third-party dependencies -codec = { package = "parity-scale-codec", version = "1.0.6", default-features = false, features = ["derive"] } +codec = { package = "parity-scale-codec", version = "1.2.0", default-features = false, features = ["derive"] } integer-sqrt = { version = "0.1.2" } rustc-hex = { version = "2.0", optional = true } serde = { version = "1.0.102", optional = true } diff --git a/bin/node/testing/Cargo.toml b/bin/node/testing/Cargo.toml index 30402c5490..4496047b50 100644 --- a/bin/node/testing/Cargo.toml +++ b/bin/node/testing/Cargo.toml @@ -14,7 +14,7 @@ pallet-balances = { version = "2.0.0-alpha.2", path = "../../../frame/balances" sc-client = { version = "0.8.0-alpha.2", path = "../../../client/" } sc-client-db = { version = "0.8.0-alpha.2", path = "../../../client/db/", features = ["kvdb-rocksdb"] } sc-client-api = { version = "2.0.0-alpha.2", path = "../../../client/api/" } -codec = { package = "parity-scale-codec", version = "1.0.0" } +codec = { package = "parity-scale-codec", version = "1.2.0" } pallet-contracts = { version = "2.0.0-alpha.2", path = "../../../frame/contracts" } pallet-grandpa = { version = "2.0.0-alpha.2", path = "../../../frame/grandpa" } pallet-indices = { version = "2.0.0-alpha.2", path = "../../../frame/indices" } diff --git a/bin/node/transaction-factory/Cargo.toml b/bin/node/transaction-factory/Cargo.toml index 64c7b8d42a..8de968baa6 100644 --- a/bin/node/transaction-factory/Cargo.toml +++ b/bin/node/transaction-factory/Cargo.toml @@ -12,7 +12,7 @@ sp-block-builder = { version = "2.0.0-alpha.2", path = "../../../primitives/bloc sc-cli = { version = "0.8.0-alpha.2", path = "../../../client/cli" } sc-client-api = { version = "2.0.0-alpha.2", path = "../../../client/api" } sc-client = { version = "0.8.0-alpha.2", path = "../../../client" } -codec = { package = "parity-scale-codec", version = "1.0.0", features = ["derive"] } +codec = { package = "parity-scale-codec", version = "1.2.0", features = ["derive"] } sp-consensus = { version = "0.8.0-alpha.2", path = "../../../primitives/consensus/common" } log = "0.4.8" sp-core = { version = "2.0.0-alpha.2", path = "../../../primitives/core" } diff --git a/bin/utils/subkey/Cargo.toml b/bin/utils/subkey/Cargo.toml index b0777b1f70..252978a3a9 100644 --- a/bin/utils/subkey/Cargo.toml +++ b/bin/utils/subkey/Cargo.toml @@ -20,7 +20,7 @@ rustc-hex = "2.0.1" substrate-bip39 = "0.3.1" hex = "0.4.0" hex-literal = "0.2.1" -codec = { package = "parity-scale-codec", version = "1.0.0" } +codec = { package = "parity-scale-codec", version = "1.2.0" } frame-system = { version = "2.0.0-alpha.2", path = "../../../frame/system" } pallet-balances = { version = "2.0.0-alpha.2", path = "../../../frame/balances" } pallet-transaction-payment = { version = "2.0.0-alpha.2", path = "../../../frame/transaction-payment" } diff --git a/client/Cargo.toml b/client/Cargo.toml index 91f3578ce2..710cdbd128 100644 --- a/client/Cargo.toml +++ b/client/Cargo.toml @@ -11,7 +11,7 @@ description = "Substrate Client and associated logic." [dependencies] sc-block-builder = { version = "0.8.0-alpha.2", path = "block-builder" } sc-client-api = { version = "2.0.0-alpha.2", path = "api" } -codec = { package = "parity-scale-codec", version = "1.0.0", features = ["derive"] } +codec = { package = "parity-scale-codec", version = "1.2.0", features = ["derive"] } sp-consensus = { version = "0.8.0-alpha.2", path = "../primitives/consensus/common" } derive_more = { version = "0.99.2" } sc-executor = { version = "0.8.0-alpha.2", path = "executor" } diff --git a/client/api/Cargo.toml b/client/api/Cargo.toml index dcbf447f59..0256891054 100644 --- a/client/api/Cargo.toml +++ b/client/api/Cargo.toml @@ -11,7 +11,7 @@ documentation = "https://docs.rs/sc-client-api" [dependencies] -codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } +codec = { package = "parity-scale-codec", version = "1.2.0", default-features = false, features = ["derive"] } sp-consensus = { version = "0.8.0-alpha.2", path = "../../primitives/consensus/common" } derive_more = { version = "0.99.2" } sc-executor = { version = "0.8.0-alpha.2", path = "../executor" } diff --git a/client/authority-discovery/Cargo.toml b/client/authority-discovery/Cargo.toml index 1e4c70abfe..0c3b739bb9 100644 --- a/client/authority-discovery/Cargo.toml +++ b/client/authority-discovery/Cargo.toml @@ -14,7 +14,7 @@ prost-build = "0.6.1" [dependencies] bytes = "0.5.0" -codec = { package = "parity-scale-codec", default-features = false, version = "1.0.3" } +codec = { package = "parity-scale-codec", default-features = false, version = "1.2.0" } derive_more = "0.99.2" futures = "0.3.1" futures-timer = "3.0.1" diff --git a/client/basic-authorship/Cargo.toml b/client/basic-authorship/Cargo.toml index 61184f9517..7503221f65 100644 --- a/client/basic-authorship/Cargo.toml +++ b/client/basic-authorship/Cargo.toml @@ -11,7 +11,7 @@ description = "Basic implementation of block-authoring logic." [dependencies] log = "0.4.8" futures = "0.3.1" -codec = { package = "parity-scale-codec", version = "1.0.0" } +codec = { package = "parity-scale-codec", version = "1.2.0" } sp-api = { version = "2.0.0-alpha.2", path = "../../primitives/api" } sp-runtime = { version = "2.0.0-alpha.2", path = "../../primitives/runtime" } sp-core = { version = "2.0.0-alpha.2", path = "../../primitives/core" } diff --git a/client/block-builder/Cargo.toml b/client/block-builder/Cargo.toml index a41acc1612..745669c033 100644 --- a/client/block-builder/Cargo.toml +++ b/client/block-builder/Cargo.toml @@ -18,4 +18,4 @@ sp-blockchain = { version = "2.0.0-alpha.2", path = "../../primitives/blockchain sp-core = { version = "2.0.0-alpha.2", path = "../../primitives/core" } sp-block-builder = { version = "2.0.0-alpha.2", path = "../../primitives/block-builder" } sc-client-api = { version = "2.0.0-alpha.2", path = "../api" } -codec = { package = "parity-scale-codec", version = "1.0.6", features = ["derive"] } +codec = { package = "parity-scale-codec", version = "1.2.0", features = ["derive"] } diff --git a/client/consensus/aura/Cargo.toml b/client/consensus/aura/Cargo.toml index e5b5975ca3..be610c16d9 100644 --- a/client/consensus/aura/Cargo.toml +++ b/client/consensus/aura/Cargo.toml @@ -14,7 +14,7 @@ sp-consensus-aura = { version = "0.8.0-alpha.2", path = "../../../primitives/con sp-block-builder = { version = "2.0.0-alpha.2", path = "../../../primitives/block-builder" } sc-client = { version = "0.8.0-alpha.2", path = "../../" } sc-client-api = { version = "2.0.0-alpha.2", path = "../../api" } -codec = { package = "parity-scale-codec", version = "1.0.0" } +codec = { package = "parity-scale-codec", version = "1.2.0" } sp-consensus = { version = "0.8.0-alpha.2", path = "../../../primitives/consensus/common" } derive_more = "0.99.2" futures = "0.3.1" diff --git a/client/consensus/babe/Cargo.toml b/client/consensus/babe/Cargo.toml index c6d61eb5ec..66455adbdf 100644 --- a/client/consensus/babe/Cargo.toml +++ b/client/consensus/babe/Cargo.toml @@ -11,7 +11,7 @@ documentation = "https://docs.rs/sc-consensus-babe" [dependencies] -codec = { package = "parity-scale-codec", version = "1.0.0", features = ["derive"] } +codec = { package = "parity-scale-codec", version = "1.2.0", features = ["derive"] } sp-consensus-babe = { version = "0.8.0-alpha.2", path = "../../../primitives/consensus/babe" } sp-core = { version = "2.0.0-alpha.2", path = "../../../primitives/core" } sp-application-crypto = { version = "2.0.0-alpha.2", path = "../../../primitives/application-crypto" } diff --git a/client/consensus/epochs/Cargo.toml b/client/consensus/epochs/Cargo.toml index 778dfa85fe..fe23654298 100644 --- a/client/consensus/epochs/Cargo.toml +++ b/client/consensus/epochs/Cargo.toml @@ -9,7 +9,7 @@ homepage = "https://substrate.dev" repository = "https://github.com/paritytech/substrate/" [dependencies] -codec = { package = "parity-scale-codec", version = "1.0.0", features = ["derive"] } +codec = { package = "parity-scale-codec", version = "1.2.0", features = ["derive"] } parking_lot = "0.10.0" fork-tree = { version = "2.0.0-alpha.2", path = "../../../utils/fork-tree" } sp-runtime = { path = "../../../primitives/runtime" , version = "2.0.0-alpha.2"} diff --git a/client/consensus/pow/Cargo.toml b/client/consensus/pow/Cargo.toml index 83bcee453d..f95d196b62 100644 --- a/client/consensus/pow/Cargo.toml +++ b/client/consensus/pow/Cargo.toml @@ -9,7 +9,7 @@ homepage = "https://substrate.dev" repository = "https://github.com/paritytech/substrate/" [dependencies] -codec = { package = "parity-scale-codec", version = "1.0.0", features = ["derive"] } +codec = { package = "parity-scale-codec", version = "1.2.0", features = ["derive"] } sp-core = { version = "2.0.0-alpha.2", path = "../../../primitives/core" } sp-blockchain = { version = "2.0.0-alpha.2", path = "../../../primitives/blockchain" } sp-runtime = { version = "2.0.0-alpha.2", path = "../../../primitives/runtime" } diff --git a/client/consensus/slots/Cargo.toml b/client/consensus/slots/Cargo.toml index 435fde0f6f..fe7958b257 100644 --- a/client/consensus/slots/Cargo.toml +++ b/client/consensus/slots/Cargo.toml @@ -10,7 +10,7 @@ homepage = "https://substrate.dev" repository = "https://github.com/paritytech/substrate/" [dependencies] -codec = { package = "parity-scale-codec", version = "1.0.0" } +codec = { package = "parity-scale-codec", version = "1.2.0" } sc-client-api = { version = "2.0.0-alpha.2", path = "../../api" } sp-core = { version = "2.0.0-alpha.2", path = "../../../primitives/core" } sp-blockchain = { version = "2.0.0-alpha.2", path = "../../../primitives/blockchain" } diff --git a/client/db/Cargo.toml b/client/db/Cargo.toml index 68460f42a6..f92a5c48e2 100644 --- a/client/db/Cargo.toml +++ b/client/db/Cargo.toml @@ -18,7 +18,7 @@ kvdb-memorydb = "0.4.0" linked-hash-map = "0.5.2" hash-db = "0.15.2" parity-util-mem = { version = "0.5.1", default-features = false, features = ["std"] } -codec = { package = "parity-scale-codec", version = "1.0.0", features = ["derive"] } +codec = { package = "parity-scale-codec", version = "1.2.0", features = ["derive"] } sc-client-api = { version = "2.0.0-alpha.2", path = "../api" } sp-core = { version = "2.0.0-alpha.2", path = "../../primitives/core" } diff --git a/client/executor/Cargo.toml b/client/executor/Cargo.toml index a108e63cd1..46e4bb04bb 100644 --- a/client/executor/Cargo.toml +++ b/client/executor/Cargo.toml @@ -11,7 +11,7 @@ documentation = "https://docs.rs/sc-executor" [dependencies] derive_more = "0.99.2" -codec = { package = "parity-scale-codec", version = "1.0.0" } +codec = { package = "parity-scale-codec", version = "1.2.0" } sp-io = { version = "2.0.0-alpha.2", path = "../../primitives/io" } sp-core = { version = "2.0.0-alpha.2", path = "../../primitives/core" } sp-trie = { version = "2.0.0-alpha.2", path = "../../primitives/trie" } diff --git a/client/executor/common/Cargo.toml b/client/executor/common/Cargo.toml index b3e6918174..04db56938a 100644 --- a/client/executor/common/Cargo.toml +++ b/client/executor/common/Cargo.toml @@ -12,7 +12,7 @@ documentation = "https://docs.rs/sc-executor-common/" [dependencies] log = "0.4.8" derive_more = "0.99.2" -codec = { package = "parity-scale-codec", version = "1.0.0" } +codec = { package = "parity-scale-codec", version = "1.2.0" } wasmi = "0.6.2" sp-core = { version = "2.0.0-alpha.2", path = "../../../primitives/core" } sp-allocator = { version = "2.0.0-alpha.2", path = "../../../primitives/allocator" } diff --git a/client/executor/wasmi/Cargo.toml b/client/executor/wasmi/Cargo.toml index 286acf2752..aa259e29f8 100644 --- a/client/executor/wasmi/Cargo.toml +++ b/client/executor/wasmi/Cargo.toml @@ -13,7 +13,7 @@ documentation = "https://docs.rs/sc-execturo-wasmi" log = "0.4.8" wasmi = "0.6.2" parity-wasm = "0.41.0" -codec = { package = "parity-scale-codec", version = "1.0.0" } +codec = { package = "parity-scale-codec", version = "1.2.0" } sc-executor-common = { version = "0.8.0-alpha.2", path = "../common" } sp-wasm-interface = { version = "2.0.0-alpha.2", path = "../../../primitives/wasm-interface" } sp-runtime-interface = { version = "2.0.0-alpha.2", path = "../../../primitives/runtime-interface" } diff --git a/client/executor/wasmtime/Cargo.toml b/client/executor/wasmtime/Cargo.toml index f1cd5a2ece..57f4c2a842 100644 --- a/client/executor/wasmtime/Cargo.toml +++ b/client/executor/wasmtime/Cargo.toml @@ -12,7 +12,7 @@ description = "Defines a `WasmRuntime` that uses the Wasmtime JIT to execute." log = "0.4.8" wasmi = "0.6.2" parity-wasm = "0.41.0" -codec = { package = "parity-scale-codec", version = "1.0.0" } +codec = { package = "parity-scale-codec", version = "1.2.0" } sc-executor-common = { version = "0.8.0-alpha.2", path = "../common" } sp-wasm-interface = { version = "2.0.0-alpha.2", path = "../../../primitives/wasm-interface" } sp-runtime-interface = { version = "2.0.0-alpha.2", path = "../../../primitives/runtime-interface" } diff --git a/client/finality-grandpa/Cargo.toml b/client/finality-grandpa/Cargo.toml index a58da417c0..6cee0cd852 100644 --- a/client/finality-grandpa/Cargo.toml +++ b/client/finality-grandpa/Cargo.toml @@ -18,7 +18,7 @@ log = "0.4.8" parking_lot = "0.10.0" rand = "0.7.2" assert_matches = "1.3.0" -parity-scale-codec = { version = "1.0.0", features = ["derive"] } +parity-scale-codec = { version = "1.2.0", features = ["derive"] } sp-arithmetic = { version = "2.0.0-alpha.2", path = "../../primitives/arithmetic" } sp-runtime = { version = "2.0.0-alpha.2", path = "../../primitives/runtime" } sp-consensus = { version = "0.8.0-alpha.1", path = "../../primitives/consensus/common" } diff --git a/client/network/Cargo.toml b/client/network/Cargo.toml index 565796e319..d99dce2fd2 100644 --- a/client/network/Cargo.toml +++ b/client/network/Cargo.toml @@ -16,7 +16,7 @@ prost-build = "0.6.1" [dependencies] bitflags = "1.2.0" bytes = "0.5.0" -codec = { package = "parity-scale-codec", version = "1.0.0", features = ["derive"] } +codec = { package = "parity-scale-codec", version = "1.2.0", features = ["derive"] } derive_more = "0.99.2" either = "1.5.3" erased-serde = "0.3.9" diff --git a/client/offchain/Cargo.toml b/client/offchain/Cargo.toml index 9aaf5de2a1..9ea0372969 100644 --- a/client/offchain/Cargo.toml +++ b/client/offchain/Cargo.toml @@ -19,7 +19,7 @@ log = "0.4.8" threadpool = "1.7" num_cpus = "1.10" sp-offchain = { version = "2.0.0-alpha.2", path = "../../primitives/offchain" } -codec = { package = "parity-scale-codec", version = "1.0.0", features = ["derive"] } +codec = { package = "parity-scale-codec", version = "1.2.0", features = ["derive"] } parking_lot = "0.10.0" sp-core = { version = "2.0.0-alpha.2", path = "../../primitives/core" } rand = "0.7.2" diff --git a/client/rpc-api/Cargo.toml b/client/rpc-api/Cargo.toml index 984842dccf..0f3b72e519 100644 --- a/client/rpc-api/Cargo.toml +++ b/client/rpc-api/Cargo.toml @@ -9,7 +9,7 @@ repository = "https://github.com/paritytech/substrate/" description = "Substrate RPC interfaces." [dependencies] -codec = { package = "parity-scale-codec", version = "1.0.0" } +codec = { package = "parity-scale-codec", version = "1.2.0" } derive_more = "0.99.2" futures = { version = "0.3.1", features = ["compat"] } jsonrpc-core = "14.0.3" diff --git a/client/rpc/Cargo.toml b/client/rpc/Cargo.toml index 2a37465e13..9a8be85bec 100644 --- a/client/rpc/Cargo.toml +++ b/client/rpc/Cargo.toml @@ -13,7 +13,7 @@ sc-rpc-api = { version = "0.8.0-alpha.2", path = "../rpc-api" } sc-client-api = { version = "2.0.0-alpha.2", path = "../api" } sc-client = { version = "0.8.0-alpha.2", path = "../" } sp-api = { version = "2.0.0-alpha.2", path = "../../primitives/api" } -codec = { package = "parity-scale-codec", version = "1.0.0" } +codec = { package = "parity-scale-codec", version = "1.2.0" } futures = { version = "0.3.1", features = ["compat"] } jsonrpc-pubsub = "14.0.3" log = "0.4.8" diff --git a/client/service/Cargo.toml b/client/service/Cargo.toml index 5ae4a3a526..bfc08eb705 100644 --- a/client/service/Cargo.toml +++ b/client/service/Cargo.toml @@ -47,7 +47,7 @@ sc-client-api = { version = "2.0.0-alpha.2", path = "../api" } sc-client = { version = "0.8.0-alpha.2", path = "../" } sp-api = { version = "2.0.0-alpha.2", path = "../../primitives/api" } sc-client-db = { version = "0.8.0-alpha.2", path = "../db" } -codec = { package = "parity-scale-codec", version = "1.0.0" } +codec = { package = "parity-scale-codec", version = "1.2.0" } sc-executor = { version = "0.8.0-alpha.2", path = "../executor" } sc-transaction-pool = { version = "2.0.0-alpha.2", path = "../transaction-pool" } sp-transaction-pool = { version = "2.0.0-alpha.2", path = "../../primitives/transaction-pool" } diff --git a/client/state-db/Cargo.toml b/client/state-db/Cargo.toml index 77e06670d1..7c7823b534 100644 --- a/client/state-db/Cargo.toml +++ b/client/state-db/Cargo.toml @@ -13,7 +13,7 @@ parking_lot = "0.10.0" log = "0.4.8" sc-client-api = { version = "2.0.0-alpha.2", path = "../api" } sp-core = { version = "2.0.0-alpha.2", path = "../../primitives/core" } -codec = { package = "parity-scale-codec", version = "1.0.0", features = ["derive"] } +codec = { package = "parity-scale-codec", version = "1.2.0", features = ["derive"] } parity-util-mem = "0.5.1" parity-util-mem-derive = "0.1.0" diff --git a/client/transaction-pool/Cargo.toml b/client/transaction-pool/Cargo.toml index 1b324e9758..3d80e06c95 100644 --- a/client/transaction-pool/Cargo.toml +++ b/client/transaction-pool/Cargo.toml @@ -9,7 +9,7 @@ repository = "https://github.com/paritytech/substrate/" description = "Substrate transaction pool implementation." [dependencies] -codec = { package = "parity-scale-codec", version = "1.0.0" } +codec = { package = "parity-scale-codec", version = "1.2.0" } derive_more = "0.99.2" futures = { version = "0.3.1", features = ["compat"] } futures-diagnose = "1.0" diff --git a/client/transaction-pool/graph/Cargo.toml b/client/transaction-pool/graph/Cargo.toml index fbf405d735..10846acfea 100644 --- a/client/transaction-pool/graph/Cargo.toml +++ b/client/transaction-pool/graph/Cargo.toml @@ -24,7 +24,7 @@ linked-hash-map = "0.5.2" [dev-dependencies] assert_matches = "1.3.0" -codec = { package = "parity-scale-codec", version = "1.0.0" } +codec = { package = "parity-scale-codec", version = "1.2.0" } substrate-test-runtime = { version = "2.0.0-dev", path = "../../../test-utils/runtime" } criterion = "0.3" diff --git a/frame/assets/Cargo.toml b/frame/assets/Cargo.toml index ba2e58ba28..5b0b5f096a 100644 --- a/frame/assets/Cargo.toml +++ b/frame/assets/Cargo.toml @@ -10,7 +10,7 @@ description = "FRAME asset management pallet" [dependencies] serde = { version = "1.0.101", optional = true } -codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false } +codec = { package = "parity-scale-codec", version = "1.2.0", default-features = false } # Needed for various traits. In our case, `OnFinalize`. sp-runtime = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/runtime" } # Needed for type-safe access to storage DB. diff --git a/frame/aura/Cargo.toml b/frame/aura/Cargo.toml index 110050071b..77abfe4ae1 100644 --- a/frame/aura/Cargo.toml +++ b/frame/aura/Cargo.toml @@ -10,7 +10,7 @@ description = "FRAME AURA consensus pallet" [dependencies] sp-application-crypto = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/application-crypto" } -codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } +codec = { package = "parity-scale-codec", version = "1.2.0", default-features = false, features = ["derive"] } sp-inherents = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/inherents" } sp-core = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/core" } sp-std = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/std" } diff --git a/frame/authority-discovery/Cargo.toml b/frame/authority-discovery/Cargo.toml index b96cb2fac1..c82d1eab58 100644 --- a/frame/authority-discovery/Cargo.toml +++ b/frame/authority-discovery/Cargo.toml @@ -11,7 +11,7 @@ description = "FRAME pallet for authority discovery" [dependencies] sp-authority-discovery = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/authority-discovery" } sp-application-crypto = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/application-crypto" } -codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } +codec = { package = "parity-scale-codec", version = "1.2.0", default-features = false, features = ["derive"] } sp-core = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/core" } sp-std = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/std" } serde = { version = "1.0.101", optional = true } diff --git a/frame/authorship/Cargo.toml b/frame/authorship/Cargo.toml index dec9d8b03c..2a01cdbd8a 100644 --- a/frame/authorship/Cargo.toml +++ b/frame/authorship/Cargo.toml @@ -10,7 +10,7 @@ repository = "https://github.com/paritytech/substrate/" [dependencies] sp-core = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/core" } -codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } +codec = { package = "parity-scale-codec", version = "1.2.0", default-features = false, features = ["derive"] } sp-inherents = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/inherents" } sp-authorship = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/authorship" } sp-std = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/std" } diff --git a/frame/babe/Cargo.toml b/frame/babe/Cargo.toml index 14176a1ea4..7e39e5bed5 100644 --- a/frame/babe/Cargo.toml +++ b/frame/babe/Cargo.toml @@ -10,7 +10,7 @@ description = "Consensus extension module for BABE consensus. Collects on-chain [dependencies] hex-literal = "0.2.1" -codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } +codec = { package = "parity-scale-codec", version = "1.2.0", default-features = false, features = ["derive"] } serde = { version = "1.0.101", optional = true } sp-inherents = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/inherents" } sp-std = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/std" } diff --git a/frame/balances/Cargo.toml b/frame/balances/Cargo.toml index c4d963a2f4..9d26c5b957 100644 --- a/frame/balances/Cargo.toml +++ b/frame/balances/Cargo.toml @@ -10,7 +10,7 @@ description = "FRAME pallet to manage balances" [dependencies] serde = { version = "1.0.101", optional = true } -codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } +codec = { package = "parity-scale-codec", version = "1.2.0", default-features = false, features = ["derive"] } sp-std = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/std" } sp-io = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/io" } sp-runtime = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/runtime" } diff --git a/frame/benchmarking/Cargo.toml b/frame/benchmarking/Cargo.toml index bd9660dc16..ecaf987bb0 100644 --- a/frame/benchmarking/Cargo.toml +++ b/frame/benchmarking/Cargo.toml @@ -9,7 +9,7 @@ repository = "https://github.com/paritytech/substrate/" description = "Macro for benchmarking a FRAME runtime." [dependencies] -codec = { package = "parity-scale-codec", version = "1.1.2", default-features = false } +codec = { package = "parity-scale-codec", version = "1.2.0", default-features = false } sp-api = { version = "2.0.0-alpha.2", path = "../../primitives/api", default-features = false } sp-runtime-interface = { version = "2.0.0-alpha.2", path = "../../primitives/runtime-interface", default-features = false } sp-runtime = { version = "2.0.0-alpha.2", path = "../../primitives/runtime", default-features = false } diff --git a/frame/collective/Cargo.toml b/frame/collective/Cargo.toml index 73200119ff..60899feb4f 100644 --- a/frame/collective/Cargo.toml +++ b/frame/collective/Cargo.toml @@ -10,7 +10,7 @@ description = "Collective system: Members of a set of account IDs can make their [dependencies] serde = { version = "1.0.101", optional = true } -codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } +codec = { package = "parity-scale-codec", version = "1.2.0", default-features = false, features = ["derive"] } sp-core = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/core" } sp-std = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/std" } sp-io = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/io" } diff --git a/frame/contracts/Cargo.toml b/frame/contracts/Cargo.toml index 632a1ff776..86f39f8a82 100644 --- a/frame/contracts/Cargo.toml +++ b/frame/contracts/Cargo.toml @@ -11,7 +11,7 @@ description = "FRAME pallet for WASM contracts" [dependencies] serde = { version = "1.0.101", optional = true, features = ["derive"] } pwasm-utils = { version = "0.12.0", default-features = false } -codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } +codec = { package = "parity-scale-codec", version = "1.2.0", default-features = false, features = ["derive"] } parity-wasm = { version = "0.41.0", default-features = false } wasmi-validation = { version = "0.3.0", default-features = false } sp-core = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/core" } diff --git a/frame/contracts/common/Cargo.toml b/frame/contracts/common/Cargo.toml index 878887573b..0d009e7c82 100644 --- a/frame/contracts/common/Cargo.toml +++ b/frame/contracts/common/Cargo.toml @@ -10,7 +10,7 @@ description = "A crate that hosts a common definitions that are relevant for the [dependencies] # This crate should not rely on any of the frame primitives. -codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } +codec = { package = "parity-scale-codec", version = "1.2.0", default-features = false, features = ["derive"] } sp-std = { version = "2.0.0-alpha.2", default-features = false, path = "../../../primitives/std" } sp-runtime = { version = "2.0.0-alpha.2", default-features = false, path = "../../../primitives/runtime" } diff --git a/frame/contracts/rpc/Cargo.toml b/frame/contracts/rpc/Cargo.toml index 61491f7d79..092d049c54 100644 --- a/frame/contracts/rpc/Cargo.toml +++ b/frame/contracts/rpc/Cargo.toml @@ -9,7 +9,7 @@ repository = "https://github.com/paritytech/substrate/" description = "Node-specific RPC methods for interaction with contracts." [dependencies] -codec = { package = "parity-scale-codec", version = "1.0.0" } +codec = { package = "parity-scale-codec", version = "1.2.0" } jsonrpc-core = "14.0.3" jsonrpc-core-client = "14.0.3" jsonrpc-derive = "14.0.3" diff --git a/frame/contracts/rpc/runtime-api/Cargo.toml b/frame/contracts/rpc/runtime-api/Cargo.toml index ee251cd2c0..8435a6c423 100644 --- a/frame/contracts/rpc/runtime-api/Cargo.toml +++ b/frame/contracts/rpc/runtime-api/Cargo.toml @@ -10,7 +10,7 @@ description = "Runtime API definition required by Contracts RPC extensions." [dependencies] sp-api = { version = "2.0.0-alpha.2", default-features = false, path = "../../../../primitives/api" } -codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } +codec = { package = "parity-scale-codec", version = "1.2.0", default-features = false, features = ["derive"] } sp-std = { version = "2.0.0-alpha.2", default-features = false, path = "../../../../primitives/std" } sp-runtime = { version = "2.0.0-alpha.2", default-features = false, path = "../../../../primitives/runtime" } pallet-contracts-primitives = { version = "2.0.0-alpha.2", default-features = false, path = "../../common" } diff --git a/frame/democracy/Cargo.toml b/frame/democracy/Cargo.toml index 7ff3ae2b41..d2938956bd 100644 --- a/frame/democracy/Cargo.toml +++ b/frame/democracy/Cargo.toml @@ -10,7 +10,7 @@ description = "FRAME pallet for democracy" [dependencies] serde = { version = "1.0.101", optional = true, features = ["derive"] } -codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } +codec = { package = "parity-scale-codec", version = "1.2.0", default-features = false, features = ["derive"] } sp-std = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/std" } sp-io = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/io" } sp-runtime = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/runtime" } diff --git a/frame/elections-phragmen/Cargo.toml b/frame/elections-phragmen/Cargo.toml index 08bbfc979e..62ae091e9a 100644 --- a/frame/elections-phragmen/Cargo.toml +++ b/frame/elections-phragmen/Cargo.toml @@ -9,7 +9,7 @@ repository = "https://github.com/paritytech/substrate/" description = "FRAME election pallet for PHRAGMEN" [dependencies] -codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } +codec = { package = "parity-scale-codec", version = "1.2.0", default-features = false, features = ["derive"] } sp-runtime = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/runtime" } sp-phragmen = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/phragmen" } frame-support = { version = "2.0.0-alpha.2", default-features = false, path = "../support" } diff --git a/frame/elections/Cargo.toml b/frame/elections/Cargo.toml index 55f12028ae..e65f4e5d46 100644 --- a/frame/elections/Cargo.toml +++ b/frame/elections/Cargo.toml @@ -10,7 +10,7 @@ description = "FRAME pallet for elections" [dependencies] serde = { version = "1.0.101", optional = true } -codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } +codec = { package = "parity-scale-codec", version = "1.2.0", default-features = false, features = ["derive"] } sp-core = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/core" } sp-std = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/std" } sp-io = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/io" } diff --git a/frame/evm/Cargo.toml b/frame/evm/Cargo.toml index 0d9091dfaf..76407d57e4 100644 --- a/frame/evm/Cargo.toml +++ b/frame/evm/Cargo.toml @@ -10,7 +10,7 @@ description = "FRAME EVM contracts pallet" [dependencies] serde = { version = "1.0.101", optional = true, features = ["derive"] } -codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false } +codec = { package = "parity-scale-codec", version = "1.2.0", default-features = false } frame-support = { version = "2.0.0-alpha.2", default-features = false, path = "../support" } frame-system = { version = "2.0.0-alpha.2", default-features = false, path = "../system" } pallet-timestamp = { version = "2.0.0-alpha.2", default-features = false, path = "../timestamp" } diff --git a/frame/example-offchain-worker/Cargo.toml b/frame/example-offchain-worker/Cargo.toml index 39ba8c3287..ff8d780c3c 100644 --- a/frame/example-offchain-worker/Cargo.toml +++ b/frame/example-offchain-worker/Cargo.toml @@ -9,7 +9,7 @@ repository = "https://github.com/paritytech/substrate/" description = "FRAME example pallet for offchain worker" [dependencies] -codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false } +codec = { package = "parity-scale-codec", version = "1.2.0", default-features = false } frame-support = { version = "2.0.0-alpha.2", default-features = false, path = "../support" } frame-system = { version = "2.0.0-alpha.2", default-features = false, path = "../system" } serde = { version = "1.0.101", optional = true } diff --git a/frame/example/Cargo.toml b/frame/example/Cargo.toml index 90a5b9c76b..48c1fd57dc 100644 --- a/frame/example/Cargo.toml +++ b/frame/example/Cargo.toml @@ -10,7 +10,7 @@ description = "FRAME example pallet" [dependencies] serde = { version = "1.0.101", optional = true } -codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false } +codec = { package = "parity-scale-codec", version = "1.2.0", default-features = false } frame-support = { version = "2.0.0-alpha.2", default-features = false, path = "../support" } frame-system = { version = "2.0.0-alpha.2", default-features = false, path = "../system" } pallet-balances = { version = "2.0.0-alpha.2", default-features = false, path = "../balances" } diff --git a/frame/executive/Cargo.toml b/frame/executive/Cargo.toml index f5b4d5e186..deafb0cadd 100644 --- a/frame/executive/Cargo.toml +++ b/frame/executive/Cargo.toml @@ -9,7 +9,7 @@ repository = "https://github.com/paritytech/substrate/" description = "FRAME executives engine" [dependencies] -codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } +codec = { package = "parity-scale-codec", version = "1.2.0", default-features = false, features = ["derive"] } frame-support = { version = "2.0.0-alpha.2", default-features = false, path = "../support" } frame-system = { version = "2.0.0-alpha.2", default-features = false, path = "../system" } serde = { version = "1.0.101", optional = true } diff --git a/frame/finality-tracker/Cargo.toml b/frame/finality-tracker/Cargo.toml index 231e8c7608..1313080dfe 100644 --- a/frame/finality-tracker/Cargo.toml +++ b/frame/finality-tracker/Cargo.toml @@ -12,7 +12,7 @@ documentation = "https://docs.rs/pallet-finality-tracker" [dependencies] serde = { version = "1.0.101", default-features = false, features = ["derive"] } -codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false } +codec = { package = "parity-scale-codec", version = "1.2.0", default-features = false } sp-inherents = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/inherents" } sp-std = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/std" } sp-runtime = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/runtime" } diff --git a/frame/generic-asset/Cargo.toml b/frame/generic-asset/Cargo.toml index 3c452c11b0..a8df92e3c6 100644 --- a/frame/generic-asset/Cargo.toml +++ b/frame/generic-asset/Cargo.toml @@ -10,7 +10,7 @@ description = "FRAME pallet for generic asset management" [dependencies] serde = { version = "1.0.101", optional = true } -codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } +codec = { package = "parity-scale-codec", version = "1.2.0", default-features = false, features = ["derive"] } sp-std = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/std" } sp-runtime = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/runtime" } frame-support = { version = "2.0.0-alpha.2", default-features = false, path = "../support" } @@ -23,10 +23,10 @@ sp-core = { version = "2.0.0-alpha.2", path = "../../primitives/core" } [features] default = ["std"] std =[ - "serde/std", - "codec/std", - "sp-std/std", - "sp-runtime/std", - "frame-support/std", - "frame-system/std", + "serde/std", + "codec/std", + "sp-std/std", + "sp-runtime/std", + "frame-support/std", + "frame-system/std", ] diff --git a/frame/grandpa/Cargo.toml b/frame/grandpa/Cargo.toml index feaf8fa804..f5cce65fe9 100644 --- a/frame/grandpa/Cargo.toml +++ b/frame/grandpa/Cargo.toml @@ -10,7 +10,7 @@ description = "FRAME pallet for GRANDPA finality gadget" [dependencies] serde = { version = "1.0.101", optional = true, features = ["derive"] } -codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } +codec = { package = "parity-scale-codec", version = "1.2.0", default-features = false, features = ["derive"] } sp-core = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/core" } sp-finality-grandpa = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/finality-grandpa" } sp-std = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/std" } diff --git a/frame/identity/Cargo.toml b/frame/identity/Cargo.toml index 4f6bc9ca4a..7ea53f776e 100644 --- a/frame/identity/Cargo.toml +++ b/frame/identity/Cargo.toml @@ -10,7 +10,7 @@ description = "FRAME identity management pallet" [dependencies] serde = { version = "1.0.101", optional = true } -codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } +codec = { package = "parity-scale-codec", version = "1.2.0", default-features = false, features = ["derive"] } enumflags2 = { version = "0.6.2" } sp-std = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/std" } sp-io = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/io" } diff --git a/frame/im-online/Cargo.toml b/frame/im-online/Cargo.toml index 3201e808b2..ab8c066945 100644 --- a/frame/im-online/Cargo.toml +++ b/frame/im-online/Cargo.toml @@ -11,7 +11,7 @@ description = "FRAME's I'm online pallet" [dependencies] sp-application-crypto = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/application-crypto" } pallet-authorship = { version = "2.0.0-alpha.2", default-features = false, path = "../authorship" } -codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } +codec = { package = "parity-scale-codec", version = "1.2.0", default-features = false, features = ["derive"] } sp-core = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/core" } sp-std = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/std" } serde = { version = "1.0.101", optional = true } diff --git a/frame/indices/Cargo.toml b/frame/indices/Cargo.toml index 462ee1c3b3..d7e01765b5 100644 --- a/frame/indices/Cargo.toml +++ b/frame/indices/Cargo.toml @@ -10,7 +10,7 @@ description = "FRAME indices management pallet" [dependencies] serde = { version = "1.0.101", optional = true } -codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } +codec = { package = "parity-scale-codec", version = "1.2.0", default-features = false, features = ["derive"] } sp-keyring = { version = "2.0.0-alpha.2", optional = true, path = "../../primitives/keyring" } sp-std = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/std" } sp-io = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/io" } diff --git a/frame/membership/Cargo.toml b/frame/membership/Cargo.toml index 42e933aa3a..b54109083d 100644 --- a/frame/membership/Cargo.toml +++ b/frame/membership/Cargo.toml @@ -10,7 +10,7 @@ description = "FRAME membership management pallet" [dependencies] serde = { version = "1.0.101", optional = true } -codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false } +codec = { package = "parity-scale-codec", version = "1.2.0", default-features = false } sp-std = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/std" } sp-io = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/io" } frame-support = { version = "2.0.0-alpha.2", default-features = false, path = "../support" } diff --git a/frame/metadata/Cargo.toml b/frame/metadata/Cargo.toml index ee110ac254..b3d333f369 100644 --- a/frame/metadata/Cargo.toml +++ b/frame/metadata/Cargo.toml @@ -9,7 +9,7 @@ repository = "https://github.com/paritytech/substrate/" description = "Decodable variant of the RuntimeMetadata." [dependencies] -codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } +codec = { package = "parity-scale-codec", version = "1.2.0", default-features = false, features = ["derive"] } serde = { version = "1.0.101", optional = true, features = ["derive"] } sp-std = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/std" } sp-core = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/core" } diff --git a/frame/nicks/Cargo.toml b/frame/nicks/Cargo.toml index 81fb07b3ca..07c84c439f 100644 --- a/frame/nicks/Cargo.toml +++ b/frame/nicks/Cargo.toml @@ -10,7 +10,7 @@ description = "FRAME pallet for nick management" [dependencies] serde = { version = "1.0.101", optional = true } -codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } +codec = { package = "parity-scale-codec", version = "1.2.0", default-features = false, features = ["derive"] } sp-std = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/std" } sp-io = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/io" } sp-runtime = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/runtime" } diff --git a/frame/offences/Cargo.toml b/frame/offences/Cargo.toml index e3601dda5b..99c52e4088 100644 --- a/frame/offences/Cargo.toml +++ b/frame/offences/Cargo.toml @@ -10,7 +10,7 @@ description = "FRAME offences pallet" [dependencies] pallet-balances = { version = "2.0.0-alpha.2", default-features = false, path = "../balances" } -codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } +codec = { package = "parity-scale-codec", version = "1.2.0", default-features = false, features = ["derive"] } sp-std = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/std" } serde = { version = "1.0.101", optional = true } sp-runtime = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/runtime" } diff --git a/frame/randomness-collective-flip/Cargo.toml b/frame/randomness-collective-flip/Cargo.toml index b99f4c8e49..4e4ce76fee 100644 --- a/frame/randomness-collective-flip/Cargo.toml +++ b/frame/randomness-collective-flip/Cargo.toml @@ -10,7 +10,7 @@ description = "FRAME randomness collective flip pallet" [dependencies] safe-mix = { version = "1.0", default-features = false } -codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } +codec = { package = "parity-scale-codec", version = "1.2.0", default-features = false, features = ["derive"] } sp-runtime = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/runtime" } frame-support = { version = "2.0.0-alpha.2", default-features = false, path = "../support" } frame-system = { version = "2.0.0-alpha.2", default-features = false, path = "../system" } diff --git a/frame/recovery/Cargo.toml b/frame/recovery/Cargo.toml index 39baba71e4..80456aa375 100644 --- a/frame/recovery/Cargo.toml +++ b/frame/recovery/Cargo.toml @@ -10,7 +10,7 @@ description = "FRAME account recovery pallet" [dependencies] serde = { version = "1.0.101", optional = true } -codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } +codec = { package = "parity-scale-codec", version = "1.2.0", default-features = false, features = ["derive"] } enumflags2 = { version = "0.6.2" } sp-std = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/std" } sp-io = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/io" } diff --git a/frame/scored-pool/Cargo.toml b/frame/scored-pool/Cargo.toml index 83ec59cb78..a1b7b39d8c 100644 --- a/frame/scored-pool/Cargo.toml +++ b/frame/scored-pool/Cargo.toml @@ -9,7 +9,7 @@ repository = "https://github.com/paritytech/substrate/" description = "FRAME pallet for scored pools" [dependencies] -codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } +codec = { package = "parity-scale-codec", version = "1.2.0", default-features = false, features = ["derive"] } serde = { version = "1.0.101", optional = true } sp-io = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/io" } sp-runtime = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/runtime" } diff --git a/frame/session/Cargo.toml b/frame/session/Cargo.toml index 3d98f92c43..74ca9fe67b 100644 --- a/frame/session/Cargo.toml +++ b/frame/session/Cargo.toml @@ -10,7 +10,7 @@ description = "FRAME sessions pallet" [dependencies] serde = { version = "1.0.101", optional = true } -codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } +codec = { package = "parity-scale-codec", version = "1.2.0", default-features = false, features = ["derive"] } sp-std = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/std" } sp-runtime = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/runtime" } sp-staking = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/staking" } diff --git a/frame/society/Cargo.toml b/frame/society/Cargo.toml index 898a47010f..35b1c5c4a4 100644 --- a/frame/society/Cargo.toml +++ b/frame/society/Cargo.toml @@ -10,7 +10,7 @@ description = "FRAME society pallet" [dependencies] serde = { version = "1.0.101", optional = true } -codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } +codec = { package = "parity-scale-codec", version = "1.2.0", default-features = false, features = ["derive"] } sp-io ={ path = "../../primitives/io", default-features = false , version = "2.0.0-alpha.2"} sp-runtime = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/runtime" } sp-std = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/std" } diff --git a/frame/staking/Cargo.toml b/frame/staking/Cargo.toml index 6e737aea3a..ef4bb60a29 100644 --- a/frame/staking/Cargo.toml +++ b/frame/staking/Cargo.toml @@ -10,7 +10,7 @@ description = "FRAME pallet staking" [dependencies] serde = { version = "1.0.101", optional = true } -codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } +codec = { package = "parity-scale-codec", version = "1.2.0", default-features = false, features = ["derive"] } sp-keyring = { version = "2.0.0-alpha.2", optional = true, path = "../../primitives/keyring" } sp-std = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/std" } sp-phragmen = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/phragmen" } diff --git a/frame/sudo/Cargo.toml b/frame/sudo/Cargo.toml index 118bb6f1ff..8d645df85c 100644 --- a/frame/sudo/Cargo.toml +++ b/frame/sudo/Cargo.toml @@ -10,7 +10,7 @@ description = "FRAME pallet for sudo" [dependencies] serde = { version = "1.0.101", optional = true } -codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } +codec = { package = "parity-scale-codec", version = "1.2.0", default-features = false, features = ["derive"] } sp-std = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/std" } sp-io = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/io" } sp-runtime = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/runtime" } diff --git a/frame/support/Cargo.toml b/frame/support/Cargo.toml index d961134142..78a7642d9f 100644 --- a/frame/support/Cargo.toml +++ b/frame/support/Cargo.toml @@ -11,7 +11,7 @@ description = "Support code for the runtime." [dependencies] log = "0.4" serde = { version = "1.0.101", optional = true, features = ["derive"] } -codec = { package = "parity-scale-codec", version = "1.0.6", default-features = false, features = ["derive"] } +codec = { package = "parity-scale-codec", version = "1.2.0", default-features = false, features = ["derive"] } frame-metadata = { version = "11.0.0-alpha.2", default-features = false, path = "../metadata" } sp-std = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/std" } sp-io ={ path = "../../primitives/io", default-features = false , version = "2.0.0-alpha.2"} diff --git a/frame/support/test/Cargo.toml b/frame/support/test/Cargo.toml index 9d70664408..0a5595914b 100644 --- a/frame/support/test/Cargo.toml +++ b/frame/support/test/Cargo.toml @@ -10,7 +10,7 @@ repository = "https://github.com/paritytech/substrate/" [dependencies] serde = { version = "1.0.101", default-features = false, features = ["derive"] } -codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } +codec = { package = "parity-scale-codec", version = "1.2.0", default-features = false, features = ["derive"] } sp-io ={ path = "../../../primitives/io", default-features = false , version = "2.0.0-alpha.2"} sp-state-machine = { version = "0.8.0-alpha.2", optional = true, path = "../../../primitives/state-machine" } frame-support = { version = "2.0.0-alpha.2", default-features = false, path = "../" } diff --git a/frame/system/Cargo.toml b/frame/system/Cargo.toml index cb5b52b8ca..6a418cab8e 100644 --- a/frame/system/Cargo.toml +++ b/frame/system/Cargo.toml @@ -10,7 +10,7 @@ description = "FRAME system module" [dependencies] serde = { version = "1.0.101", optional = true, features = ["derive"] } -codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } +codec = { package = "parity-scale-codec", version = "1.2.0", default-features = false, features = ["derive"] } sp-core = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/core" } sp-std = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/std" } sp-io = { path = "../../primitives/io", default-features = false, version = "2.0.0-alpha.2" } diff --git a/frame/system/rpc/runtime-api/Cargo.toml b/frame/system/rpc/runtime-api/Cargo.toml index 2a0f3ff70f..3bcc34698a 100644 --- a/frame/system/rpc/runtime-api/Cargo.toml +++ b/frame/system/rpc/runtime-api/Cargo.toml @@ -10,7 +10,7 @@ description = "Runtime API definition required by System RPC extensions." [dependencies] sp-api = { version = "2.0.0-alpha.2", default-features = false, path = "../../../../primitives/api" } -codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false } +codec = { package = "parity-scale-codec", version = "1.2.0", default-features = false } [features] default = ["std"] diff --git a/frame/timestamp/Cargo.toml b/frame/timestamp/Cargo.toml index 1c8dfa1dfb..db1d9aaf37 100644 --- a/frame/timestamp/Cargo.toml +++ b/frame/timestamp/Cargo.toml @@ -12,7 +12,7 @@ documentation = "https://docs.rs/pallet-timestamp" [dependencies] serde = { version = "1.0.101", optional = true } -codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } +codec = { package = "parity-scale-codec", version = "1.2.0", default-features = false, features = ["derive"] } sp-std = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/std" } sp-io = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/io" } sp-runtime = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/runtime" } diff --git a/frame/transaction-payment/Cargo.toml b/frame/transaction-payment/Cargo.toml index 0e0ba1d5de..3a291dc516 100644 --- a/frame/transaction-payment/Cargo.toml +++ b/frame/transaction-payment/Cargo.toml @@ -9,7 +9,7 @@ repository = "https://github.com/paritytech/substrate/" description = "FRAME pallet to manage transaction payments" [dependencies] -codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } +codec = { package = "parity-scale-codec", version = "1.2.0", default-features = false, features = ["derive"] } sp-std = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/std" } sp-runtime = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/runtime" } frame-support = { version = "2.0.0-alpha.2", default-features = false, path = "../support" } diff --git a/frame/transaction-payment/rpc/Cargo.toml b/frame/transaction-payment/rpc/Cargo.toml index 38fc10d56c..309dfeedd5 100644 --- a/frame/transaction-payment/rpc/Cargo.toml +++ b/frame/transaction-payment/rpc/Cargo.toml @@ -9,7 +9,7 @@ repository = "https://github.com/paritytech/substrate/" description = "RPC interface for the transaction payment module." [dependencies] -codec = { package = "parity-scale-codec", version = "1.0.0" } +codec = { package = "parity-scale-codec", version = "1.2.0" } jsonrpc-core = "14.0.3" jsonrpc-core-client = "14.0.3" jsonrpc-derive = "14.0.3" diff --git a/frame/transaction-payment/rpc/runtime-api/Cargo.toml b/frame/transaction-payment/rpc/runtime-api/Cargo.toml index 369f044a36..96716769a3 100644 --- a/frame/transaction-payment/rpc/runtime-api/Cargo.toml +++ b/frame/transaction-payment/rpc/runtime-api/Cargo.toml @@ -11,7 +11,7 @@ description = "RPC runtime API for transaction payment FRAME pallet" [dependencies] serde = { version = "1.0.101", optional = true, features = ["derive"] } sp-api = { version = "2.0.0-alpha.2", default-features = false, path = "../../../../primitives/api" } -codec = { package = "parity-scale-codec", version = "1.0.6", default-features = false, features = ["derive"] } +codec = { package = "parity-scale-codec", version = "1.2.0", default-features = false, features = ["derive"] } sp-std = { version = "2.0.0-alpha.2", default-features = false, path = "../../../../primitives/std" } sp-runtime = { version = "2.0.0-alpha.2", default-features = false, path = "../../../../primitives/runtime" } frame-support = { version = "2.0.0-alpha.2", default-features = false, path = "../../../support" } diff --git a/frame/treasury/Cargo.toml b/frame/treasury/Cargo.toml index a0bf1443da..99071e9276 100644 --- a/frame/treasury/Cargo.toml +++ b/frame/treasury/Cargo.toml @@ -10,7 +10,7 @@ description = "FRAME pallet to manage treasury" [dependencies] serde = { version = "1.0.101", optional = true, features = ["derive"] } -codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } +codec = { package = "parity-scale-codec", version = "1.2.0", default-features = false, features = ["derive"] } sp-std = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/std" } sp-runtime = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/runtime" } frame-support = { version = "2.0.0-alpha.2", default-features = false, path = "../support" } diff --git a/frame/utility/Cargo.toml b/frame/utility/Cargo.toml index 552f1dd254..46f59a191a 100644 --- a/frame/utility/Cargo.toml +++ b/frame/utility/Cargo.toml @@ -10,7 +10,7 @@ description = "FRAME utilities pallet" [dependencies] serde = { version = "1.0.101", optional = true } -codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false } +codec = { package = "parity-scale-codec", version = "1.2.0", default-features = false } frame-support = { version = "2.0.0-alpha.2", default-features = false, path = "../support" } frame-system = { version = "2.0.0-alpha.2", default-features = false, path = "../system" } sp-core = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/core" } diff --git a/frame/vesting/Cargo.toml b/frame/vesting/Cargo.toml index ac23eef571..f01a0f6bf2 100644 --- a/frame/vesting/Cargo.toml +++ b/frame/vesting/Cargo.toml @@ -10,7 +10,7 @@ description = "FRAME pallet for manage vesting" [dependencies] serde = { version = "1.0.101", optional = true } -codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } +codec = { package = "parity-scale-codec", version = "1.2.0", default-features = false, features = ["derive"] } enumflags2 = { version = "0.6.2" } sp-std = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/std" } sp-io = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/io" } diff --git a/primitives/api/Cargo.toml b/primitives/api/Cargo.toml index 4c90c41d3f..a33ff0fa0d 100644 --- a/primitives/api/Cargo.toml +++ b/primitives/api/Cargo.toml @@ -9,7 +9,7 @@ repository = "https://github.com/paritytech/substrate/" description = "Substrate runtime api primitives" [dependencies] -codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false } +codec = { package = "parity-scale-codec", version = "1.2.0", default-features = false } sp-api-proc-macro = { version = "2.0.0-alpha.2", path = "proc-macro" } sp-core = { version = "2.0.0-alpha.2", default-features = false, path = "../core" } sp-std = { version = "2.0.0-alpha.2", default-features = false, path = "../std" } diff --git a/primitives/api/test/Cargo.toml b/primitives/api/test/Cargo.toml index dc1600b334..6d2207c178 100644 --- a/primitives/api/test/Cargo.toml +++ b/primitives/api/test/Cargo.toml @@ -16,7 +16,7 @@ sp-runtime = { version = "2.0.0-alpha.2", path = "../../runtime" } sp-blockchain = { version = "2.0.0-alpha.2", path = "../../blockchain" } sp-consensus = { version = "0.8.0-alpha.2", path = "../../../primitives/consensus/common" } sc-block-builder = { version = "0.8.0-alpha.2", path = "../../../client/block-builder" } -codec = { package = "parity-scale-codec", version = "1.0.0" } +codec = { package = "parity-scale-codec", version = "1.2.0" } sp-state-machine = { version = "0.8.0-alpha.2", path = "../../../primitives/state-machine" } trybuild = "1.0.17" rustversion = "1.0.0" diff --git a/primitives/application-crypto/Cargo.toml b/primitives/application-crypto/Cargo.toml index 7125ed7982..ee710b2988 100644 --- a/primitives/application-crypto/Cargo.toml +++ b/primitives/application-crypto/Cargo.toml @@ -12,7 +12,7 @@ documentation = "https://docs.rs/sp-application-crypto" [dependencies] sp-core = { version = "2.0.0-alpha.2", default-features = false, path = "../core" } -codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } +codec = { package = "parity-scale-codec", version = "1.2.0", default-features = false, features = ["derive"] } serde = { version = "1.0.101", optional = true, features = ["derive"] } sp-std = { version = "2.0.0-alpha.2", default-features = false, path = "../std" } sp-io = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/io" } @@ -25,7 +25,7 @@ std = [ "full_crypto", "sp-core/std", "codec/std", "serde", "sp-std/std", "sp-io # or Intel SGX. # For the regular wasm runtime builds this should not be used. full_crypto = [ - "sp-core/full_crypto", + "sp-core/full_crypto", # Don't add `panic_handler` and `alloc_error_handler` since they are expected to be provided # by the user anyway. "sp-io/disable_panic_handler", diff --git a/primitives/arithmetic/Cargo.toml b/primitives/arithmetic/Cargo.toml index 924278ce89..617e8b8e5c 100644 --- a/primitives/arithmetic/Cargo.toml +++ b/primitives/arithmetic/Cargo.toml @@ -11,7 +11,7 @@ documentation = "https://docs.rs/sp-arithmetic" [dependencies] -codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } +codec = { package = "parity-scale-codec", version = "1.2.0", default-features = false, features = ["derive"] } integer-sqrt = "0.1.2" num-traits = { version = "0.2.8", default-features = false } sp-std = { version = "2.0.0-alpha.2", default-features = false, path = "../std" } diff --git a/primitives/authority-discovery/Cargo.toml b/primitives/authority-discovery/Cargo.toml index 84fe003b9a..b4197c56d7 100644 --- a/primitives/authority-discovery/Cargo.toml +++ b/primitives/authority-discovery/Cargo.toml @@ -10,7 +10,7 @@ repository = "https://github.com/paritytech/substrate/" [dependencies] sp-application-crypto = { version = "2.0.0-alpha.2", default-features = false, path = "../application-crypto" } -codec = { package = "parity-scale-codec", default-features = false, version = "1.0.3" } +codec = { package = "parity-scale-codec", default-features = false, version = "1.2.0" } sp-std = { version = "2.0.0-alpha.2", default-features = false, path = "../std" } sp-api = { version = "2.0.0-alpha.2", default-features = false, path = "../api" } sp-runtime = { version = "2.0.0-alpha.2", default-features = false, path = "../runtime" } diff --git a/primitives/authorship/Cargo.toml b/primitives/authorship/Cargo.toml index 16f052fe0f..c5215631cc 100644 --- a/primitives/authorship/Cargo.toml +++ b/primitives/authorship/Cargo.toml @@ -12,7 +12,7 @@ repository = "https://github.com/paritytech/substrate/" sp-inherents = { version = "2.0.0-alpha.2", default-features = false, path = "../inherents" } sp-runtime = { version = "2.0.0-alpha.2", default-features = false, path = "../runtime" } sp-std = { version = "2.0.0-alpha.2", default-features = false, path = "../std" } -codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } +codec = { package = "parity-scale-codec", version = "1.2.0", default-features = false, features = ["derive"] } [features] default = [ "std" ] diff --git a/primitives/block-builder/Cargo.toml b/primitives/block-builder/Cargo.toml index 0c32752ed3..b5cb592d55 100644 --- a/primitives/block-builder/Cargo.toml +++ b/primitives/block-builder/Cargo.toml @@ -12,7 +12,7 @@ description = "The block builder runtime api." sp-runtime = { version = "2.0.0-alpha.2", default-features = false, path = "../runtime" } sp-api = { version = "2.0.0-alpha.2", default-features = false, path = "../api" } sp-std = { version = "2.0.0-alpha.2", default-features = false, path = "../std" } -codec = { package = "parity-scale-codec", version = "1.0.6", default-features = false } +codec = { package = "parity-scale-codec", version = "1.2.0", default-features = false } sp-inherents = { version = "2.0.0-alpha.2", default-features = false, path = "../inherents" } [features] diff --git a/primitives/blockchain/Cargo.toml b/primitives/blockchain/Cargo.toml index a31cda5c29..5fb8ce3574 100644 --- a/primitives/blockchain/Cargo.toml +++ b/primitives/blockchain/Cargo.toml @@ -15,7 +15,7 @@ log = "0.4.8" lru = "0.4.0" parking_lot = "0.10.0" derive_more = "0.99.2" -codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } +codec = { package = "parity-scale-codec", version = "1.2.0", default-features = false, features = ["derive"] } sp-consensus = { version = "0.8.0-alpha.2", path = "../consensus/common" } sp-runtime = { version = "2.0.0-alpha.2", path = "../runtime" } sp-block-builder = { version = "2.0.0-alpha.2", path = "../block-builder" } diff --git a/primitives/consensus/aura/Cargo.toml b/primitives/consensus/aura/Cargo.toml index 84b56e18c0..04d4119399 100644 --- a/primitives/consensus/aura/Cargo.toml +++ b/primitives/consensus/aura/Cargo.toml @@ -10,7 +10,7 @@ repository = "https://github.com/paritytech/substrate/" [dependencies] sp-application-crypto = { version = "2.0.0-alpha.2", default-features = false, path = "../../application-crypto" } -codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false } +codec = { package = "parity-scale-codec", version = "1.2.0", default-features = false } sp-std = { version = "2.0.0-alpha.2", default-features = false, path = "../../std" } sp-api = { version = "2.0.0-alpha.2", default-features = false, path = "../../api" } sp-runtime = { version = "2.0.0-alpha.2", default-features = false, path = "../../runtime" } diff --git a/primitives/consensus/babe/Cargo.toml b/primitives/consensus/babe/Cargo.toml index 291958c100..f910b73ed6 100644 --- a/primitives/consensus/babe/Cargo.toml +++ b/primitives/consensus/babe/Cargo.toml @@ -10,7 +10,7 @@ repository = "https://github.com/paritytech/substrate/" [dependencies] sp-application-crypto = { version = "2.0.0-alpha.2", default-features = false, path = "../../application-crypto" } -codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false } +codec = { package = "parity-scale-codec", version = "1.2.0", default-features = false } sp-std = { version = "2.0.0-alpha.2", default-features = false, path = "../../std" } schnorrkel = { version = "0.8.5", features = ["preaudit_deprecated"], optional = true } sp-api = { version = "2.0.0-alpha.2", default-features = false, path = "../../api" } diff --git a/primitives/consensus/common/Cargo.toml b/primitives/consensus/common/Cargo.toml index 684ae2d1f6..e8d3c0c611 100644 --- a/primitives/consensus/common/Cargo.toml +++ b/primitives/consensus/common/Cargo.toml @@ -23,7 +23,7 @@ futures-diagnose = "1.0" sp-std = { version = "2.0.0-alpha.2", path = "../../std" } sp-version = { version = "2.0.0-alpha.2", path = "../../version" } sp-runtime = { version = "2.0.0-alpha.2", path = "../../runtime" } -codec = { package = "parity-scale-codec", version = "1.0.0", features = ["derive"] } +codec = { package = "parity-scale-codec", version = "1.2.0", features = ["derive"] } parking_lot = "0.10.0" serde = { version = "1.0", features = ["derive"] } diff --git a/primitives/consensus/pow/Cargo.toml b/primitives/consensus/pow/Cargo.toml index 978e56706d..4abead3258 100644 --- a/primitives/consensus/pow/Cargo.toml +++ b/primitives/consensus/pow/Cargo.toml @@ -13,7 +13,7 @@ sp-api = { version = "2.0.0-alpha.2", default-features = false, path = "../../ap sp-std = { version = "2.0.0-alpha.2", default-features = false, path = "../../std" } sp-runtime = { version = "2.0.0-alpha.2", default-features = false, path = "../../runtime" } sp-core = { version = "2.0.0-alpha.2", default-features = false, path = "../../core" } -codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } +codec = { package = "parity-scale-codec", version = "1.2.0", default-features = false, features = ["derive"] } [features] default = ["std"] diff --git a/primitives/core/Cargo.toml b/primitives/core/Cargo.toml index 8d69110ae6..83ef683a39 100644 --- a/primitives/core/Cargo.toml +++ b/primitives/core/Cargo.toml @@ -11,7 +11,7 @@ documentation = "https://docs.rs/sp-core" [dependencies] sp-std = { version = "2.0.0-alpha.2", default-features = false, path = "../std" } -codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } +codec = { package = "parity-scale-codec", version = "1.2.0", default-features = false, features = ["derive"] } rustc-hex = { version = "2.0.1", default-features = false } log = { version = "0.4.8", default-features = false } serde = { version = "1.0.101", optional = true, features = ["derive"] } diff --git a/primitives/finality-grandpa/Cargo.toml b/primitives/finality-grandpa/Cargo.toml index 3b71946a00..d36f0e4b52 100644 --- a/primitives/finality-grandpa/Cargo.toml +++ b/primitives/finality-grandpa/Cargo.toml @@ -12,7 +12,7 @@ documentation = "https://docs.rs/sp-finality-grandpa" [dependencies] sp-application-crypto = { version = "2.0.0-alpha.2", default-features = false, path = "../application-crypto" } -codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } +codec = { package = "parity-scale-codec", version = "1.2.0", default-features = false, features = ["derive"] } sp-std = { version = "2.0.0-alpha.2", default-features = false, path = "../std" } serde = { version = "1.0.101", optional = true, features = ["derive"] } sp-api = { version = "2.0.0-alpha.2", default-features = false, path = "../api" } diff --git a/primitives/finality-tracker/Cargo.toml b/primitives/finality-tracker/Cargo.toml index 23f3b5e394..f89cb24d4a 100644 --- a/primitives/finality-tracker/Cargo.toml +++ b/primitives/finality-tracker/Cargo.toml @@ -9,7 +9,7 @@ repository = "https://github.com/paritytech/substrate/" description = "FRAME module that tracks the last finalized block, as perceived by block authors." [dependencies] -codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false } +codec = { package = "parity-scale-codec", version = "1.2.0", default-features = false } sp-inherents = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/inherents" } sp-std = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/std" } diff --git a/primitives/inherents/Cargo.toml b/primitives/inherents/Cargo.toml index 94ee0b8935..839edba73d 100644 --- a/primitives/inherents/Cargo.toml +++ b/primitives/inherents/Cargo.toml @@ -14,7 +14,7 @@ documentation = "https://docs.rs/sp-inherents" parking_lot = { version = "0.10.0", optional = true } sp-std = { version = "2.0.0-alpha.2", default-features = false, path = "../std" } sp-core = { version = "2.0.0-alpha.2", default-features = false, path = "../core" } -codec = { package = "parity-scale-codec", version = "1.0.6", default-features = false, features = ["derive"] } +codec = { package = "parity-scale-codec", version = "1.2.0", default-features = false, features = ["derive"] } derive_more = { version = "0.99.2", optional = true } [features] diff --git a/primitives/io/Cargo.toml b/primitives/io/Cargo.toml index be148aacff..4f74063802 100644 --- a/primitives/io/Cargo.toml +++ b/primitives/io/Cargo.toml @@ -11,7 +11,7 @@ documentation = "https://docs.rs/sp-io" [dependencies] -codec = { package = "parity-scale-codec", version = "1.0.6", default-features = false } +codec = { package = "parity-scale-codec", version = "1.2.0", default-features = false } hash-db = { version = "0.15.2", default-features = false } sp-core = { version = "2.0.0-alpha.2", default-features = false, path = "../core" } sp-std = { version = "2.0.0-alpha.2", default-features = false, path = "../std" } diff --git a/primitives/runtime-interface/Cargo.toml b/primitives/runtime-interface/Cargo.toml index 5084b00289..70092c0587 100644 --- a/primitives/runtime-interface/Cargo.toml +++ b/primitives/runtime-interface/Cargo.toml @@ -14,7 +14,7 @@ sp-wasm-interface = { version = "2.0.0-alpha.2", path = "../wasm-interface", def sp-std = { version = "2.0.0-alpha.2", default-features = false, path = "../std" } sp-runtime-interface-proc-macro = { version = "2.0.0-alpha.2", path = "proc-macro" } sp-externalities = { version = "0.8.0-alpha.2", optional = true, path = "../externalities" } -codec = { package = "parity-scale-codec", version = "1.0.6", default-features = false } +codec = { package = "parity-scale-codec", version = "1.2.0", default-features = false } static_assertions = "1.0.0" primitive-types = { version = "0.6.2", default-features = false } diff --git a/primitives/runtime/Cargo.toml b/primitives/runtime/Cargo.toml index dbdeeabd2f..430d29d8e2 100644 --- a/primitives/runtime/Cargo.toml +++ b/primitives/runtime/Cargo.toml @@ -12,7 +12,7 @@ documentation = "https://docs.rs/sp-runtime" [dependencies] serde = { version = "1.0.101", optional = true, features = ["derive"] } -codec = { package = "parity-scale-codec", version = "1.1.2", default-features = false, features = ["derive"] } +codec = { package = "parity-scale-codec", version = "1.2.0", default-features = false, features = ["derive"] } sp-core = { version = "2.0.0-alpha.2", default-features = false, path = "../core" } sp-application-crypto = { version = "2.0.0-alpha.2", default-features = false, path = "../application-crypto" } sp-arithmetic = { version = "2.0.0-alpha.2", default-features = false, path = "../arithmetic" } diff --git a/primitives/sandbox/Cargo.toml b/primitives/sandbox/Cargo.toml index 7c797f6c0c..060801a29e 100755 --- a/primitives/sandbox/Cargo.toml +++ b/primitives/sandbox/Cargo.toml @@ -14,7 +14,7 @@ sp-core = { version = "2.0.0-alpha.2", default-features = false, path = "../core sp-std = { version = "2.0.0-alpha.2", default-features = false, path = "../std" } sp-io = { version = "2.0.0-alpha.2", default-features = false, path = "../io" } sp-wasm-interface = { version = "2.0.0-alpha.2", default-features = false, path = "../wasm-interface" } -codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false } +codec = { package = "parity-scale-codec", version = "1.2.0", default-features = false } [dev-dependencies] wabt = "0.9.2" diff --git a/primitives/staking/Cargo.toml b/primitives/staking/Cargo.toml index 986f7ecd7e..2f85b8251b 100644 --- a/primitives/staking/Cargo.toml +++ b/primitives/staking/Cargo.toml @@ -9,7 +9,7 @@ repository = "https://github.com/paritytech/substrate/" description = "A crate which contains primitives that are useful for implementation that uses staking approaches in general. Definitions related to sessions, slashing, etc go here." [dependencies] -codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } +codec = { package = "parity-scale-codec", version = "1.2.0", default-features = false, features = ["derive"] } sp-runtime = { version = "2.0.0-alpha.2", default-features = false, path = "../runtime" } sp-std = { version = "2.0.0-alpha.2", default-features = false, path = "../std" } diff --git a/primitives/state-machine/Cargo.toml b/primitives/state-machine/Cargo.toml index 91036d74d7..51f311e44a 100644 --- a/primitives/state-machine/Cargo.toml +++ b/primitives/state-machine/Cargo.toml @@ -18,7 +18,7 @@ trie-root = "0.16.0" sp-trie = { version = "2.0.0-alpha.2", path = "../trie" } sp-core = { version = "2.0.0-alpha.2", path = "../core" } sp-panic-handler = { version = "2.0.0-alpha.2", path = "../panic-handler" } -codec = { package = "parity-scale-codec", version = "1.0.0" } +codec = { package = "parity-scale-codec", version = "1.2.0" } num-traits = "0.2.8" rand = "0.7.2" sp-externalities = { version = "0.8.0-alpha.2", path = "../externalities" } diff --git a/primitives/test-primitives/Cargo.toml b/primitives/test-primitives/Cargo.toml index 5c1bf0db0f..1879ca26b7 100644 --- a/primitives/test-primitives/Cargo.toml +++ b/primitives/test-primitives/Cargo.toml @@ -10,7 +10,7 @@ publish = false [dependencies] sp-application-crypto = { version = "2.0.0-alpha.2", default-features = false, path = "../application-crypto" } -codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } +codec = { package = "parity-scale-codec", version = "1.2.0", default-features = false, features = ["derive"] } sp-core = { version = "2.0.0-alpha.2", default-features = false, path = "../core" } serde = { version = "1.0.101", optional = true, features = ["derive"] } sp-runtime = { version = "2.0.0-alpha.2", default-features = false, path = "../runtime" } diff --git a/primitives/timestamp/Cargo.toml b/primitives/timestamp/Cargo.toml index 6a1a861908..1fc40a113f 100644 --- a/primitives/timestamp/Cargo.toml +++ b/primitives/timestamp/Cargo.toml @@ -12,7 +12,7 @@ description = "Substrate core types and inherents for timestamps." sp-api = { version = "2.0.0-alpha.2", default-features = false, path = "../api" } sp-std = { version = "2.0.0-alpha.2", default-features = false, path = "../std" } sp-runtime = { version = "2.0.0-alpha.2", default-features = false, path = "../runtime" } -codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } +codec = { package = "parity-scale-codec", version = "1.2.0", default-features = false, features = ["derive"] } sp-inherents = { version = "2.0.0-alpha.2", default-features = false, path = "../inherents" } impl-trait-for-tuples = "0.1.3" wasm-timer = "0.2" diff --git a/primitives/transaction-pool/Cargo.toml b/primitives/transaction-pool/Cargo.toml index 58023c58c4..69ec59cf5e 100644 --- a/primitives/transaction-pool/Cargo.toml +++ b/primitives/transaction-pool/Cargo.toml @@ -11,7 +11,7 @@ documentation = "https://docs.rs/sp-transaction-pool" [dependencies] -codec = { package = "parity-scale-codec", version = "1.0.0", optional = true } +codec = { package = "parity-scale-codec", version = "1.2.0", optional = true } derive_more = { version = "0.99.2", optional = true } futures = { version = "0.3.1", optional = true } log = { version = "0.4.8", optional = true } diff --git a/primitives/trie/Cargo.toml b/primitives/trie/Cargo.toml index db13e23831..ddce910609 100644 --- a/primitives/trie/Cargo.toml +++ b/primitives/trie/Cargo.toml @@ -14,7 +14,7 @@ name = "bench" harness = false [dependencies] -codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false } +codec = { package = "parity-scale-codec", version = "1.2.0", default-features = false } sp-std = { version = "2.0.0-alpha.2", default-features = false, path = "../std" } hash-db = { version = "0.15.2", default-features = false } trie-db = { version = "0.20.0", default-features = false } diff --git a/primitives/version/Cargo.toml b/primitives/version/Cargo.toml index d38c9d2d88..edaf940465 100644 --- a/primitives/version/Cargo.toml +++ b/primitives/version/Cargo.toml @@ -13,7 +13,7 @@ documentation = "https://docs.rs/sp-version" [dependencies] impl-serde = { version = "0.2.3", optional = true } serde = { version = "1.0.101", optional = true, features = ["derive"] } -codec = { package = "parity-scale-codec", version = "1.1.2", default-features = false, features = ["derive"] } +codec = { package = "parity-scale-codec", version = "1.2.0", default-features = false, features = ["derive"] } sp-std = { version = "2.0.0-alpha.2", default-features = false, path = "../std" } sp-runtime = { version = "2.0.0-alpha.2", default-features = false, path = "../runtime" } diff --git a/primitives/wasm-interface/Cargo.toml b/primitives/wasm-interface/Cargo.toml index dd3c1647f4..bbe53df258 100644 --- a/primitives/wasm-interface/Cargo.toml +++ b/primitives/wasm-interface/Cargo.toml @@ -13,7 +13,7 @@ documentation = "https://docs.rs/sp-wasm-interface" wasmi = { version = "0.6.2", optional = true } impl-trait-for-tuples = "0.1.2" sp-std = { version = "2.0.0-alpha.2", path = "../std", default-features = false } -codec = { package = "parity-scale-codec", version = "1.1.2", default-features = false, features = ["derive"] } +codec = { package = "parity-scale-codec", version = "1.2.0", default-features = false, features = ["derive"] } [features] default = [ "std" ] diff --git a/test-utils/client/Cargo.toml b/test-utils/client/Cargo.toml index 9b5763272c..77a614e5fe 100644 --- a/test-utils/client/Cargo.toml +++ b/test-utils/client/Cargo.toml @@ -17,7 +17,7 @@ sc-executor = { version = "0.8.0-alpha.2", path = "../../client/executor" } futures = "0.3.1" hash-db = "0.15.2" sp-keyring = { version = "2.0.0-alpha.2", path = "../../primitives/keyring" } -codec = { package = "parity-scale-codec", version = "1.0.0" } +codec = { package = "parity-scale-codec", version = "1.2.0" } sp-core = { version = "2.0.0-alpha.2", path = "../../primitives/core" } sp-runtime = { version = "2.0.0-alpha.2", path = "../../primitives/runtime" } sp-blockchain = { version = "2.0.0-alpha.2", path = "../../primitives/blockchain" } diff --git a/test-utils/runtime/Cargo.toml b/test-utils/runtime/Cargo.toml index 57ee6c0358..96d91992af 100644 --- a/test-utils/runtime/Cargo.toml +++ b/test-utils/runtime/Cargo.toml @@ -15,7 +15,7 @@ sp-consensus-aura = { version = "0.8.0-alpha.2", default-features = false, path sp-consensus-babe = { version = "0.8.0-alpha.2", default-features = false, path = "../../primitives/consensus/babe" } sp-block-builder = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/block-builder" } cfg-if = "0.1.10" -codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } +codec = { package = "parity-scale-codec", version = "1.2.0", default-features = false, features = ["derive"] } frame-executive = { version = "2.0.0-alpha.2", default-features = false, path = "../../frame/executive" } sp-inherents = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/inherents" } sp-keyring = { version = "2.0.0-alpha.2", optional = true, path = "../../primitives/keyring" } diff --git a/test-utils/runtime/client/Cargo.toml b/test-utils/runtime/client/Cargo.toml index a6844d7ff9..5f16e77860 100644 --- a/test-utils/runtime/client/Cargo.toml +++ b/test-utils/runtime/client/Cargo.toml @@ -16,7 +16,7 @@ substrate-test-runtime = { version = "2.0.0-dev", path = "../../runtime" } sp-runtime = { version = "2.0.0-alpha.2", path = "../../../primitives/runtime" } sp-api = { version = "2.0.0-alpha.2", path = "../../../primitives/api" } sp-blockchain = { version = "2.0.0-alpha.2", path = "../../../primitives/blockchain" } -codec = { package = "parity-scale-codec", version = "1.0.0" } +codec = { package = "parity-scale-codec", version = "1.2.0" } sc-client-api = { version = "2.0.0-alpha.2", path = "../../../client/api" } sc-client = { version = "0.8.0-alpha.2", path = "../../../client/" } futures = "0.3.1" diff --git a/test-utils/runtime/transaction-pool/Cargo.toml b/test-utils/runtime/transaction-pool/Cargo.toml index 543b466a85..3e22da468f 100644 --- a/test-utils/runtime/transaction-pool/Cargo.toml +++ b/test-utils/runtime/transaction-pool/Cargo.toml @@ -11,7 +11,7 @@ publish = false [dependencies] substrate-test-runtime-client = { version = "2.0.0-dev", path = "../client" } parking_lot = "0.10.0" -codec = { package = "parity-scale-codec", version = "1.0.0" } +codec = { package = "parity-scale-codec", version = "1.2.0" } sp-blockchain = { version = "2.0.0-alpha.2", path = "../../../primitives/blockchain" } sp-runtime = { version = "2.0.0-alpha.2", path = "../../../primitives/runtime" } sp-transaction-pool = { version = "2.0.0-alpha.2", path = "../../../primitives/transaction-pool" } diff --git a/utils/fork-tree/Cargo.toml b/utils/fork-tree/Cargo.toml index 6d9d2757f0..8ade20cd7b 100644 --- a/utils/fork-tree/Cargo.toml +++ b/utils/fork-tree/Cargo.toml @@ -10,4 +10,4 @@ description = "Utility library for managing tree-like ordered data with logic fo documentation = "https://docs.rs/fork-tree" [dependencies] -codec = { package = "parity-scale-codec", version = "1.0.0", features = ["derive"] } +codec = { package = "parity-scale-codec", version = "1.2.0", features = ["derive"] } diff --git a/utils/frame/benchmarking-cli/Cargo.toml b/utils/frame/benchmarking-cli/Cargo.toml index 8d834c20a0..93c62c3f96 100644 --- a/utils/frame/benchmarking-cli/Cargo.toml +++ b/utils/frame/benchmarking-cli/Cargo.toml @@ -17,4 +17,4 @@ sc-client-db = { version = "0.8.0-alpha.2", path = "../../../client/db" } sc-executor = { version = "0.8.0-alpha.2", path = "../../../client/executor" } sp-runtime = { version = "2.0.0-alpha.2", path = "../../../primitives/runtime" } structopt = "0.3.8" -codec = { version = "1.1.2", package = "parity-scale-codec" } +codec = { version = "1.2.0", package = "parity-scale-codec" } diff --git a/utils/frame/rpc/system/Cargo.toml b/utils/frame/rpc/system/Cargo.toml index e209a8d94b..8b1c62ccd7 100644 --- a/utils/frame/rpc/system/Cargo.toml +++ b/utils/frame/rpc/system/Cargo.toml @@ -10,7 +10,7 @@ description = "FRAME's system exposed over Substrate RPC" [dependencies] sc-client = { version = "0.8.0-alpha.2", path = "../../../../client/" } -codec = { package = "parity-scale-codec", version = "1.0.0" } +codec = { package = "parity-scale-codec", version = "1.2.0" } futures = "0.3.1" jsonrpc-core = "14.0.3" jsonrpc-core-client = "14.0.3" -- GitLab From 75116bd8c45c7e46a9b8eed9cb29ee4256ed631b Mon Sep 17 00:00:00 2001 From: Gavin Wood Date: Tue, 3 Mar 2020 14:48:20 +0100 Subject: [PATCH 085/301] Lazy payouts (#4474) * TODOs * Remove superfluous: * partial implementation * full implementation * fix preferences * update comments * upgrade test WIP * fix more tests * fix cutoff * fix saturation * comment * upgrade mock * upgrade test * WIP migration * WIP migration * remove slot stake stuff * fix merge * migration of ledger * remove equalize from test * add test * fix * update doc * fix compilation * improve test readibility * improve doc * fix most todo * fix migration and test * remove println * WIP * add test and spec * weight * update doc * safer end_era * fix exposure of conversion * Revert "safer end_era" This reverts commit 72ff737d27be67d87308514b13e2574bc5f09fce. * fix useless put * exposure clipped * doc * fix payout with clipped * fix node runtime * add doc * pluggable and generalized staking module * remove print * update doc * refactor * improve documentation and implementation * fix test * Fix test * fix test * fix test * fix remove lowest stake from exposure, not biggest. * nomination index arguments in nominator_payout * add test * try to fix offence * apply slashed and bond eras until active era * doc * update spec version * add test upgrade from previous test environment * Apply suggestions from code review Co-Authored-By: Shawn Tabrizi * nominators upgrade has been cleaned * dynamic history depth implementation * make current_era - history_depth included * Change equality check to start era to less than or equal * Use era specific validator prefs * Add print statement and comment about start era if < * fix next_reward overflow * make more check for bad era claim for zero cost * small refactor * code refactor + fix use of deprecated storage * fix wasm build * add comment * Fix tests * remove outdated comment * Apply suggestions from code review Co-Authored-By: Shawn Tabrizi * gather active era information into one storage Co-authored-by: thiolliere Co-authored-by: Shawn Tabrizi --- bin/node/cli/src/chain_spec.rs | 1 - bin/node/runtime/src/lib.rs | 2 + bin/node/testing/src/genesis.rs | 1 - frame/im-online/src/mock.rs | 2 + frame/session/src/historical.rs | 4 + frame/session/src/lib.rs | 13 +- frame/session/src/mock.rs | 2 + frame/staking/src/lib.rs | 940 +++++++++---- frame/staking/src/mock.rs | 95 +- frame/staking/src/tests.rs | 1251 +++++++++++------ .../tests/test_upgrade_from_master_dataset.rs | 59 + 11 files changed, 1701 insertions(+), 669 deletions(-) create mode 100644 frame/staking/src/tests/test_upgrade_from_master_dataset.rs diff --git a/bin/node/cli/src/chain_spec.rs b/bin/node/cli/src/chain_spec.rs index d163cdf391..af24db704c 100644 --- a/bin/node/cli/src/chain_spec.rs +++ b/bin/node/cli/src/chain_spec.rs @@ -247,7 +247,6 @@ pub fn testnet_genesis( }).collect::>(), }), pallet_staking: Some(StakingConfig { - current_era: 0, validator_count: initial_authorities.len() as u32 * 2, minimum_validator_count: initial_authorities.len() as u32, stakers: initial_authorities.iter().map(|x| { diff --git a/bin/node/runtime/src/lib.rs b/bin/node/runtime/src/lib.rs index 85889a50c2..be5ca25630 100644 --- a/bin/node/runtime/src/lib.rs +++ b/bin/node/runtime/src/lib.rs @@ -269,6 +269,7 @@ parameter_types! { pub const BondingDuration: pallet_staking::EraIndex = 24 * 28; pub const SlashDeferDuration: pallet_staking::EraIndex = 24 * 7; // 1/4 the bonding duration. pub const RewardCurve: &'static PiecewiseLinear<'static> = &REWARD_CURVE; + pub const MaxNominatorRewardedPerValidator: u32 = 64; } impl pallet_staking::Trait for Runtime { @@ -286,6 +287,7 @@ impl pallet_staking::Trait for Runtime { type SlashCancelOrigin = pallet_collective::EnsureProportionAtLeast<_3, _4, AccountId, CouncilCollective>; type SessionInterface = Self; type RewardCurve = RewardCurve; + type MaxNominatorRewardedPerValidator = MaxNominatorRewardedPerValidator; } parameter_types! { diff --git a/bin/node/testing/src/genesis.rs b/bin/node/testing/src/genesis.rs index 6aa7290a64..e35059e0c6 100644 --- a/bin/node/testing/src/genesis.rs +++ b/bin/node/testing/src/genesis.rs @@ -84,7 +84,6 @@ pub fn config_endowed( ] }), pallet_staking: Some(StakingConfig { - current_era: 0, stakers: vec![ (dave(), alice(), 111 * DOLLARS, pallet_staking::StakerStatus::Validator), (eve(), bob(), 100 * DOLLARS, pallet_staking::StakerStatus::Validator), diff --git a/frame/im-online/src/mock.rs b/frame/im-online/src/mock.rs index 97a0e7eb84..78b6409d54 100644 --- a/frame/im-online/src/mock.rs +++ b/frame/im-online/src/mock.rs @@ -49,6 +49,7 @@ impl pallet_session::SessionManager for TestSessionManager { VALIDATORS.with(|l| l.borrow_mut().take()) } fn end_session(_: SessionIndex) {} + fn start_session(_: SessionIndex) {} } impl pallet_session::historical::SessionManager for TestSessionManager { @@ -62,6 +63,7 @@ impl pallet_session::historical::SessionManager for TestSessionManager ) } fn end_session(_: SessionIndex) {} + fn start_session(_: SessionIndex) {} } /// An extrinsic type used for tests. diff --git a/frame/session/src/historical.rs b/frame/session/src/historical.rs index ced630e5fd..6c305a1a1d 100644 --- a/frame/session/src/historical.rs +++ b/frame/session/src/historical.rs @@ -108,6 +108,7 @@ pub trait SessionManager: crate::SessionManager /// If there was a validator set change, its returns the set of new validators along with their /// full identifications. fn new_session(new_index: SessionIndex) -> Option>; + fn start_session(start_index: SessionIndex); fn end_session(end_index: SessionIndex); } @@ -146,6 +147,9 @@ impl crate::SessionManager for NoteHistoricalRoot>::start_session(start_index) + } fn end_session(end_index: SessionIndex) { >::end_session(end_index) } diff --git a/frame/session/src/lib.rs b/frame/session/src/lib.rs index 6340b79f0f..1097cfd6be 100644 --- a/frame/session/src/lib.rs +++ b/frame/session/src/lib.rs @@ -162,10 +162,15 @@ pub trait SessionManager { /// Because the session pallet can queue validator set the ending session can be lower than the /// last new session index. fn end_session(end_index: SessionIndex); + /// Start the session. + /// + /// The session start to be used for validation + fn start_session(start_index: SessionIndex); } impl SessionManager for () { fn new_session(_: SessionIndex) -> Option> { None } + fn start_session(_: SessionIndex) {} fn end_session(_: SessionIndex) {} } @@ -423,6 +428,8 @@ decl_storage! { >::put(initial_validators_0); >::put(queued_keys); + + T::SessionManager::start_session(0); }); } } @@ -520,6 +527,8 @@ impl Module { // Inform the session handlers that a session is going to end. T::SessionHandler::on_before_session_ending(); + T::SessionManager::end_session(session_index); + // Get queued session keys and validators. let session_keys = >::get(); let validators = session_keys.iter() @@ -532,12 +541,12 @@ impl Module { DisabledValidators::take(); } - T::SessionManager::end_session(session_index); - // Increment session index. let session_index = session_index + 1; CurrentIndex::put(session_index); + T::SessionManager::start_session(session_index); + // Get next validator set. let maybe_next_validators = T::SessionManager::new_session(session_index + 1); let (next_validators, next_identities_changed) diff --git a/frame/session/src/mock.rs b/frame/session/src/mock.rs index df858c8ed5..9d64285b90 100644 --- a/frame/session/src/mock.rs +++ b/frame/session/src/mock.rs @@ -92,6 +92,7 @@ impl SessionHandler for TestSessionHandler { pub struct TestSessionManager; impl SessionManager for TestSessionManager { fn end_session(_: SessionIndex) {} + fn start_session(_: SessionIndex) {} fn new_session(_: SessionIndex) -> Option> { if !TEST_SESSION_CHANGED.with(|l| *l.borrow()) { VALIDATORS.with(|v| { @@ -112,6 +113,7 @@ impl SessionManager for TestSessionManager { #[cfg(feature = "historical")] impl crate::historical::SessionManager for TestSessionManager { fn end_session(_: SessionIndex) {} + fn start_session(_: SessionIndex) {} fn new_session(new_index: SessionIndex) -> Option> { diff --git a/frame/staking/src/lib.rs b/frame/staking/src/lib.rs index 81bce3b548..3609191f4c 100644 --- a/frame/staking/src/lib.rs +++ b/frame/staking/src/lib.rs @@ -104,6 +104,11 @@ //! The **reward and slashing** procedure is the core of the Staking module, attempting to _embrace //! valid behavior_ while _punishing any misbehavior or lack of availability_. //! +//! Reward must be claimed by stakers for each era before it gets too old by $HISTORY_DEPTH using +//! `payout_nominator` and `payout_validator` calls. +//! Only the [`T::MaxNominatorRewardedPerValidator`] biggest stakers can claim their reward. This +//! limit the i/o cost to compute nominators payout. +//! //! Slashing can occur at any point in time, once misbehavior is reported. Once slashing is //! determined, a value is deducted from the balance of the validator and all the nominators who //! voted for this validator (values are deducted from the _stash_ account of the slashed entity). @@ -122,6 +127,11 @@ //! //! An account can step back via the [`chill`](enum.Call.html#variant.chill) call. //! +//! ### Session managing +//! +//! The module implement the trait `SessionManager`. Which is the only API to query new validator +//! set and allowing these validator set to be rewarded once their era is ended. +//! //! ## Interface //! //! ### Dispatchable Functions @@ -159,14 +169,6 @@ //! //! ## Implementation Details //! -//! ### Slot Stake -//! -//! The term [`SlotStake`](./struct.Module.html#method.slot_stake) will be used throughout this -//! section. It refers to a value calculated at the end of each era, containing the _minimum value -//! at stake among all validators._ Note that a validator's value at stake might be a combination -//! of the validator's own stake and the votes it received. See [`Exposure`](./struct.Exposure.html) -//! for more details. -//! //! ### Reward Calculation //! //! Validators and nominators are rewarded at the end of each era. The total reward of an era is @@ -236,6 +238,7 @@ //! ## GenesisConfig //! //! The Staking module depends on the [`GenesisConfig`](./struct.GenesisConfig.html). +//! The `GenesisConfig` is optional and allow to set some initial stakers. //! //! ## Related Modules //! @@ -254,7 +257,7 @@ mod slashing; pub mod inflation; -use sp_std::{prelude::*, result}; +use sp_std::{prelude::*, result, collections::btree_map::BTreeMap}; use codec::{HasCompact, Encode, Decode}; use frame_support::{ decl_module, decl_event, decl_storage, ensure, decl_error, @@ -270,7 +273,7 @@ use sp_runtime::{ Perbill, PerThing, RuntimeDebug, curve::PiecewiseLinear, traits::{ - Convert, Zero, One, StaticLookup, CheckedSub, Saturating, Bounded, SaturatedConversion, + Convert, Zero, StaticLookup, CheckedSub, Saturating, SaturatedConversion, AtLeast32Bit, EnsureOrigin, } }; @@ -293,28 +296,29 @@ const STAKING_ID: LockIdentifier = *b"staking "; pub type EraIndex = u32; /// Counter for the number of "reward" points earned by a given validator. -pub type Points = u32; +pub type RewardPoint = u32; + +/// Information regarding the active era (era in used in session). +#[derive(Encode, Decode, Debug)] +pub struct ActiveEraInfo { + /// Index of era. + index: EraIndex, + /// Moment of start + /// + /// Start can be none if start hasn't been set for the era yet, + /// Start is set on the first on_finalize of the era to guarantee usage of `Time`. + start: Option, +} /// Reward points of an era. Used to split era total payout between validators. -#[derive(Encode, Decode, Default)] -pub struct EraPoints { +/// +/// This points will be used to reward validators and their respective nominators. +#[derive(PartialEq, Encode, Decode, Default, Debug)] +pub struct EraRewardPoints { /// Total number of points. Equals the sum of reward points for each validator. - total: Points, - /// The reward points earned by a given validator. The index of this vec corresponds to the - /// index into the current validator set. - individual: Vec, -} - -impl EraPoints { - /// Add the reward to the validator at the given index. Index must be valid - /// (i.e. `index < current_elected.len()`). - fn add_points_to_index(&mut self, index: u32, points: u32) { - if let Some(new_total) = self.total.checked_add(points) { - self.total = new_total; - self.individual.resize((index as usize + 1).max(self.individual.len()), 0); - self.individual[index as usize] += points; // Addition is less than total - } - } + total: RewardPoint, + /// The reward points earned by a given validator. + individual: BTreeMap, } /// Indicates the initial status of the staker. @@ -390,6 +394,8 @@ pub struct StakingLedger { /// Any balance that is becoming free, which may eventually be transferred out /// of the stash (assuming it doesn't get slashed first). pub unlocking: Vec>, + /// The latest and highest era which the staker has claimed reward for. + pub last_reward: Option, } impl< @@ -408,7 +414,14 @@ impl< false }) .collect(); - Self { total, active: self.active, stash: self.stash, unlocking } + + Self { + stash: self.stash, + total, + active: self.active, + unlocking, + last_reward: self.last_reward + } } /// Re-bond funds that were scheduled for unlocking. @@ -499,6 +512,8 @@ pub struct Nominations { /// The targets of nomination. pub targets: Vec, /// The era the nominations were submitted. + /// + /// Except for initial nominations which are considered submitted at era 0. pub submitted_in: EraIndex, /// Whether the nominations have been suppressed. pub suppressed: bool, @@ -595,6 +610,9 @@ pub trait Trait: frame_system::Trait { type Currency: LockableCurrency; /// Time used for computing era duration. + /// + /// It is guaranteed to start being called from the first `on_finalize`. Thus value at genesis + /// is not used. type Time: Time; /// Convert a balance into a number used for election calculation. @@ -635,6 +653,12 @@ pub trait Trait: frame_system::Trait { /// The NPoS reward curve to use. type RewardCurve: Get<&'static PiecewiseLinear<'static>>; + + /// The maximum number of nominator rewarded for each validator. + /// + /// For each validator only the `$MaxNominatorRewardedPerValidator` biggest stakers can claim + /// their reward. This used to limit the i/o cost for the nominator payout. + type MaxNominatorRewardedPerValidator: Get; } /// Mode of era-forcing. @@ -657,9 +681,18 @@ impl Default for Forcing { decl_storage! { trait Store for Module as Staking { + /// Number of era to keep in history. + /// + /// Information is kept for eras in `[current_era - history_depth; current_era] + /// + /// Must be more than the number of era delayed by session otherwise. + /// i.e. active era must always be in history. + /// i.e. `active_era > current_era - history_depth` must be guaranteed. + HistoryDepth get(fn history_depth) config(): u32 = 84; /// The ideal number of staking participants. pub ValidatorCount get(fn validator_count) config(): u32; + /// Minimum number of staking participants before emergency conditions are imposed. pub MinimumValidatorCount get(fn minimum_validator_count) config(): u32 = DEFAULT_MINIMUM_VALIDATOR_COUNT; @@ -671,6 +704,7 @@ decl_storage! { /// Map from all locked "stash" accounts to the controller account. pub Bonded get(fn bonded): map hasher(blake2_256) T::AccountId => Option; + /// Map from all (unlocked) "controller" accounts to the info regarding the staking. pub Ledger get(fn ledger): map hasher(blake2_256) T::AccountId @@ -684,40 +718,74 @@ decl_storage! { linked_map hasher(blake2_256) T::AccountId => ValidatorPrefs; /// The map from nominator stash key to the set of stash keys of all validators to nominate. - /// - /// NOTE: is private so that we can ensure upgraded before all typical accesses. - /// Direct storage APIs can still bypass this protection. - Nominators get(fn nominators): + pub Nominators get(fn nominators): linked_map hasher(blake2_256) T::AccountId => Option>; - /// Nominators for a particular account that is in action right now. You can't iterate - /// through validators here, but you can find them in the Session module. + /// The current era index. /// - /// This is keyed by the stash account. - pub Stakers get(fn stakers): - map hasher(blake2_256) T::AccountId => Exposure>; + /// This is the latest planned era, depending on how session module queues the validator + /// set, it might be active or not. + pub CurrentEra get(fn current_era): Option; - /// The currently elected validator set keyed by stash account ID. - pub CurrentElected get(fn current_elected): Vec; + /// The active era information, it holds index and start. + /// + /// The active era is the era currently rewarded. + /// Validator set of this era must be equal to `SessionInterface::validators`. + pub ActiveEra get(fn active_era): Option>>; - /// The current era index. - pub CurrentEra get(fn current_era) config(): EraIndex; + /// The session index at which the era start for the last `HISTORY_DEPTH` eras + pub ErasStartSessionIndex get(fn eras_start_session_index): + map hasher(blake2_256) EraIndex => Option; - /// The start of the current era. - pub CurrentEraStart get(fn current_era_start): MomentOf; + /// Exposure of validator at era. + /// + /// This is keyed first by the era index to allow bulk deletion and then the stash account. + /// + /// Is it removed after `HISTORY_DEPTH` eras. + /// If stakers hasn't been set or has been removed then empty exposure is returned. + pub ErasStakers get(fn eras_stakers): + double_map hasher(twox_64_concat) EraIndex, hasher(twox_64_concat) T::AccountId + => Exposure>; - /// The session index at which the current era started. - pub CurrentEraStartSessionIndex get(fn current_era_start_session_index): SessionIndex; + /// Clipped Exposure of validator at era. + /// + /// This is similar to [`ErasStakers`] but number of nominators exposed is reduce to the + /// `T::MaxNominatorRewardedPerValidator` biggest stakers. + /// This is used to limit the i/o cost for the nominator payout. + /// + /// This is keyed fist by the era index to allow bulk deletion and then the stash account. + /// + /// Is it removed after `HISTORY_DEPTH` eras. + /// If stakers hasn't been set or has been removed then empty exposure is returned. + pub ErasStakersClipped get(fn eras_stakers_clipped): + double_map hasher(twox_64_concat) EraIndex, hasher(twox_64_concat) T::AccountId + => Exposure>; - /// Rewards for the current era. Using indices of current elected set. - CurrentEraPointsEarned get(fn current_era_reward): EraPoints; + /// Similarly to `ErasStakers` this holds the preferences of validators. + /// + /// This is keyed fist by the era index to allow bulk deletion and then the stash account. + /// + /// Is it removed after `HISTORY_DEPTH` eras. + // If prefs hasn't been set or has been removed then 0 commission is returned. + pub ErasValidatorPrefs get(fn eras_validator_prefs): + double_map hasher(twox_64_concat) EraIndex, hasher(twox_64_concat) T::AccountId + => ValidatorPrefs; - /// The amount of balance actively at stake for each validator slot, currently. + /// The total validator era payout for the last `HISTORY_DEPTH` eras. /// - /// This is used to derive rewards and punishments. - pub SlotStake get(fn slot_stake) build(|config: &GenesisConfig| { - config.stakers.iter().map(|&(_, _, value, _)| value).min().unwrap_or_default() - }): BalanceOf; + /// Eras that haven't finished yet or has been removed doesn't have reward. + pub ErasValidatorReward get(fn eras_validator_reward): + map hasher(blake2_256) EraIndex => Option>; + + /// Rewards for the last `HISTORY_DEPTH` eras. + /// If reward hasn't been set or has been removed then 0 reward is returned. + pub ErasRewardPoints get(fn eras_reward_points): + map hasher(blake2_256) EraIndex => EraRewardPoints; + + /// The total amount staked for the last `HISTORY_DEPTH` eras. + /// If total hasn't been set or has been removed then 0 stake is returned. + pub ErasTotalStake get(fn eras_total_stake): + map hasher(blake2_256) EraIndex => BalanceOf; /// True if the next session change will be a new era regardless of index. pub ForceEra get(fn force_era) config(): Forcing; @@ -736,6 +804,9 @@ decl_storage! { map hasher(blake2_256) EraIndex => Vec>>; /// A mapping from still-bonded eras to the first session index of that era. + /// + /// Must contains information for eras for the range: + /// `[active_era - bounding_duration; active_era]` BondedEras: Vec<(EraIndex, SessionIndex)>; /// All slashing events on validators, mapped by era to the highest slash proportion @@ -760,6 +831,11 @@ decl_storage! { /// The earliest era for which we have a pending, unapplied slash. EarliestUnappliedSlash: Option; + + /// True if network has been upgraded to this version. + /// + /// True for new networks. + IsUpgraded build(|_| true): bool; } add_extra_genesis { config(stakers): @@ -797,9 +873,8 @@ decl_storage! { decl_event!( pub enum Event where Balance = BalanceOf, ::AccountId { - /// All validators have been rewarded by the first balance; the second is the remainder - /// from the maximum amount of reward. - Reward(Balance, Balance), + /// The staker has been rewarded by this amount. AccountId is controller account. + Reward(AccountId, Balance), /// One validator (and its nominators) has been slashed by the given amount. Slash(AccountId, Balance), /// An old slashing report from a prior era was discarded because it could @@ -833,6 +908,10 @@ decl_error! { NoUnlockChunk, /// Attempting to target a stash that still has funds. FundedTarget, + /// Invalid era to reward. + InvalidEraToReward, + /// Invalid number of nominations. + InvalidNumberOfNominations, } } @@ -854,8 +933,11 @@ decl_module! { fn on_finalize() { // Set the start of the first era. - if !>::exists() { - >::put(T::Time::now()); + if let Some(mut active_era) = Self::active_era() { + if active_era.start.is_none() { + active_era.start = Some(T::Time::now()); + >::put(active_era); + } } } @@ -906,7 +988,13 @@ decl_module! { let stash_balance = T::Currency::free_balance(&stash); let value = value.min(stash_balance); - let item = StakingLedger { stash, total: value, active: value, unlocking: vec![] }; + let item = StakingLedger { + stash, + total: value, + active: value, + unlocking: vec![], + last_reward: Self::current_era(), + }; Self::update_ledger(&controller, &item); } @@ -961,7 +1049,8 @@ decl_module! { /// - Contains a limited number of reads. /// - Each call (requires the remainder of the bonded balance to be above `minimum_balance`) /// will cause a new entry to be inserted into a vector (`Ledger.unlocking`) kept in storage. - /// The only way to clean the aforementioned storage item is also user-controlled via `withdraw_unbonded`. + /// The only way to clean the aforementioned storage item is also user-controlled via + /// `withdraw_unbonded`. /// - One DB entry. /// #[weight = SimpleDispatchInfo::FixedNormal(400_000)] @@ -984,7 +1073,8 @@ decl_module! { ledger.active = Zero::zero(); } - let era = Self::current_era() + T::BondingDuration::get(); + // Note: in case there is no current era it is fine to bond one era more. + let era = Self::current_era().unwrap_or(0) + T::BondingDuration::get(); ledger.unlocking.push(UnlockChunk { value, era }); Self::update_ledger(&controller, &ledger); } @@ -1009,8 +1099,10 @@ decl_module! { #[weight = SimpleDispatchInfo::FixedNormal(400_000)] fn withdraw_unbonded(origin) { let controller = ensure_signed(origin)?; - let ledger = Self::ledger(&controller).ok_or(Error::::NotController)?; - let ledger = ledger.consolidate_unlocked(Self::current_era()); + let mut ledger = Self::ledger(&controller).ok_or(Error::::NotController)?; + if let Some(current_era) = Self::current_era() { + ledger = ledger.consolidate_unlocked(current_era) + } if ledger.unlocking.is_empty() && ledger.active.is_zero() { // This account must have called `unbond()` with some value that caused the active @@ -1075,7 +1167,8 @@ decl_module! { let nominations = Nominations { targets, - submitted_in: Self::current_era(), + // initial nominations are considered submitted at era 0. See `Nominations` doc + submitted_in: Self::current_era().unwrap_or(0), suppressed: false, }; @@ -1243,6 +1336,58 @@ decl_module! { ::UnappliedSlashes::insert(&era, &unapplied); } + /// Make one nominator's payout for one era. + /// + /// - `who` is the controller account of the nominator to pay out. + /// - `era` may not be lower than one following the most recently paid era. If it is higher, + /// then it indicates an instruction to skip the payout of all previous eras. + /// - `validators` is the list of all validators that `who` had exposure to during `era`. + /// If it is incomplete, then less than the full reward will be paid out. + /// It must not exceed `MAX_NOMINATIONS`. + /// + /// WARNING: once an era is payed for a validator such validator can't claim the payout of + /// previous era. + /// + /// WARNING: Incorrect arguments here can result in loss of payout. Be very careful. + /// + /// # + /// - Number of storage read of `O(validators)`; `validators` is the argument of the call, + /// and is bounded by `MAX_NOMINATIONS`. + /// - Each storage read is `O(N)` size and decode complexity; `N` is the maximum + /// nominations that can be given to a single validator. + /// - Computation complexity: `O(MAX_NOMINATIONS * logN)`; `MAX_NOMINATIONS` is the + /// maximum number of validators that may be nominated by a single nominator, it is + /// bounded only economically (all nominators are required to place a minimum stake). + /// # + #[weight = SimpleDispatchInfo::FixedNormal(500_000)] + fn payout_nominator(origin, era: EraIndex, validators: Vec<(T::AccountId, u32)>) + -> DispatchResult + { + let who = ensure_signed(origin)?; + Self::do_payout_nominator(who, era, validators) + } + + /// Make one validator's payout for one era. + /// + /// - `who` is the controller account of the validator to pay out. + /// - `era` may not be lower than one following the most recently paid era. If it is higher, + /// then it indicates an instruction to skip the payout of all previous eras. + /// + /// WARNING: once an era is payed for a validator such validator can't claim the payout of + /// previous era. + /// + /// WARNING: Incorrect arguments here can result in loss of payout. Be very careful. + /// + /// # + /// - Time complexity: O(1). + /// - Contains a limited number of reads and writes. + /// # + #[weight = SimpleDispatchInfo::FixedNormal(500_000)] + fn payout_validator(origin, era: EraIndex) -> DispatchResult { + let who = ensure_signed(origin)?; + Self::do_payout_validator(who, era) + } + /// Rebond a portion of the stash scheduled to be unlocked. /// /// # @@ -1262,6 +1407,24 @@ decl_module! { Self::update_ledger(&controller, &ledger); } + /// Set history_depth value. + /// + /// Origin must be root. + #[weight = SimpleDispatchInfo::FixedOperational(500_000)] + fn set_history_depth(origin, #[compact] new_history_depth: EraIndex) { + ensure_root(origin)?; + if let Some(current_era) = Self::current_era() { + HistoryDepth::mutate(|history_depth| { + let last_kept = current_era.checked_sub(*history_depth).unwrap_or(0); + let new_last_kept = current_era.checked_sub(new_history_depth).unwrap_or(0); + for era_index in last_kept..new_last_kept { + Self::clear_era_information(era_index); + } + *history_depth = new_history_depth + }) + } + } + /// Remove all data structure concerning a staker/stash once its balance is zero. /// This is essentially equivalent to `withdraw_unbonded` except it can be called by anyone /// and the target `stash` must have no funds left. @@ -1288,6 +1451,111 @@ impl Module { // MUTABLES (DANGEROUS) + fn do_payout_nominator(who: T::AccountId, era: EraIndex, validators: Vec<(T::AccountId, u32)>) + -> DispatchResult + { + // validators len must not exceed `MAX_NOMINATIONS` to avoid querying more validator + // exposure than necessary. + if validators.len() > MAX_NOMINATIONS { + return Err(Error::::InvalidNumberOfNominations.into()); + } + + // Note: if era has no reward to be claimed, era may be future. better not to update + // `nominator_ledger.last_reward` in this case. + let era_payout = >::get(&era) + .ok_or_else(|| Error::::InvalidEraToReward)?; + + let mut nominator_ledger = >::get(&who).ok_or_else(|| Error::::NotController)?; + + if nominator_ledger.last_reward.map(|last_reward| last_reward >= era).unwrap_or(false) { + return Err(Error::::InvalidEraToReward.into()); + } + + nominator_ledger.last_reward = Some(era); + >::insert(&who, &nominator_ledger); + + let mut reward = Perbill::zero(); + let era_reward_points = >::get(&era); + + for (validator, nominator_index) in validators.into_iter() { + let commission = Self::eras_validator_prefs(&era, &validator).commission; + let validator_exposure = >::get(&era, &validator); + + if let Some(nominator_exposure) = validator_exposure.others + .get(nominator_index as usize) + { + if nominator_exposure.who != nominator_ledger.stash { + continue; + } + + let nominator_exposure_part = Perbill::from_rational_approximation( + nominator_exposure.value, + validator_exposure.total, + ); + let validator_point = era_reward_points.individual.get(&validator) + .map(|points| *points) + .unwrap_or_else(|| Zero::zero()); + let validator_point_part = Perbill::from_rational_approximation( + validator_point, + era_reward_points.total, + ); + reward = reward.saturating_add( + validator_point_part + .saturating_mul(Perbill::one().saturating_sub(commission)) + .saturating_mul(nominator_exposure_part) + ); + } + } + + if let Some(imbalance) = Self::make_payout(&nominator_ledger.stash, reward * era_payout) { + Self::deposit_event(RawEvent::Reward(who, imbalance.peek())); + } + + Ok(()) + } + + fn do_payout_validator(who: T::AccountId, era: EraIndex) -> DispatchResult { + // Note: if era has no reward to be claimed, era may be future. better not to update + // `ledger.last_reward` in this case. + let era_payout = >::get(&era) + .ok_or_else(|| Error::::InvalidEraToReward)?; + + let mut ledger = >::get(&who).ok_or_else(|| Error::::NotController)?; + if ledger.last_reward.map(|last_reward| last_reward >= era).unwrap_or(false) { + return Err(Error::::InvalidEraToReward.into()); + } + + ledger.last_reward = Some(era); + >::insert(&who, &ledger); + + let era_reward_points = >::get(&era); + let commission = Self::eras_validator_prefs(&era, &ledger.stash).commission; + let exposure = >::get(&era, &ledger.stash); + + let exposure_part = Perbill::from_rational_approximation( + exposure.own, + exposure.total, + ); + let validator_point = era_reward_points.individual.get(&ledger.stash) + .map(|points| *points) + .unwrap_or_else(|| Zero::zero()); + let validator_point_part = Perbill::from_rational_approximation( + validator_point, + era_reward_points.total, + ); + let reward = validator_point_part.saturating_mul( + commission.saturating_add( + Perbill::one().saturating_sub(commission).saturating_mul(exposure_part) + ) + ); + + if let Some(imbalance) = Self::make_payout(&ledger.stash, reward * era_payout) { + Self::deposit_event(RawEvent::Reward(who, imbalance.peek())); + } + + Ok(()) + } + /// Update the ledger for a controller. This will also update the stash lock. The lock will /// will lock the entire funds except paying for further transactions. fn update_ledger( @@ -1310,10 +1578,12 @@ impl Module { } /// Ensures storage is upgraded to most recent necessary state. - /// - /// Right now it's a no-op as all networks that are supported by Substrate Frame Core are - /// running with the latest staking storage scheme. - fn ensure_storage_upgraded() {} + fn ensure_storage_upgraded() { + if !IsUpgraded::get() { + IsUpgraded::put(true); + Self::do_upgrade(); + } + } /// Actually make a payment to a staker. This uses the currency's reward function /// to pay the right payee for the given staker account. @@ -1338,113 +1608,90 @@ impl Module { } } - /// Reward a given validator by a specific amount. Add the reward to the validator's, and its - /// nominators' balance, pro-rata based on their exposure, after having removed the validator's - /// pre-payout cut. - fn reward_validator(stash: &T::AccountId, reward: BalanceOf) -> PositiveImbalanceOf { - let off_the_table = Self::validators(stash).commission * reward; - let reward = reward.saturating_sub(off_the_table); - let mut imbalance = >::zero(); - let validator_cut = if reward.is_zero() { - Zero::zero() - } else { - let exposure = Self::stakers(stash); - let total = exposure.total.max(One::one()); - - for i in &exposure.others { - let per_u64 = Perbill::from_rational_approximation(i.value, total); - imbalance.maybe_subsume(Self::make_payout(&i.who, per_u64 * reward)); + /// Plan a new session potentially trigger a new era. + fn new_session(session_index: SessionIndex) -> Option> { + if let Some(current_era) = Self::current_era() { + // Initial era has been set. + + let current_era_start_session_index = Self::eras_start_session_index(current_era) + .unwrap_or_else(|| { + frame_support::print("Error: start_session_index must be set for current_era"); + 0 + }); + + let era_length = session_index.checked_sub(current_era_start_session_index) + .unwrap_or(0); // Must never happen. + + match ForceEra::get() { + Forcing::ForceNew => ForceEra::kill(), + Forcing::ForceAlways => (), + Forcing::NotForcing if era_length >= T::SessionsPerEra::get() => (), + _ => return None, } - let per_u64 = Perbill::from_rational_approximation(exposure.own, total); - per_u64 * reward - }; - - imbalance.maybe_subsume(Self::make_payout(stash, validator_cut + off_the_table)); - - imbalance - } - - /// Session has just ended. Provide the validator set for the next session if it's an era-end. - fn new_session(session_index: SessionIndex) -> Option> { - let era_length = session_index.checked_sub(Self::current_era_start_session_index()).unwrap_or(0); - match ForceEra::get() { - Forcing::ForceNew => ForceEra::kill(), - Forcing::ForceAlways => (), - Forcing::NotForcing if era_length >= T::SessionsPerEra::get() => (), - _ => return None, + Self::new_era(session_index) + } else { + // Set initial era + Self::new_era(session_index) } - - Self::new_era(session_index) } - /// Initialize the first session (and consequently the first era) - fn initial_session() -> Option> { - // note: `CurrentEraStart` is set in `on_finalize` of the first block because now is not - // available yet. - CurrentEraStartSessionIndex::put(0); - BondedEras::mutate(|bonded| bonded.push((0, 0))); - Self::select_validators().1 + /// Start a session potentially starting an era. + fn start_session(start_session: SessionIndex) { + let next_active_era = Self::active_era().map(|e| e.index + 1).unwrap_or(0); + if let Some(next_active_era_start_session_index) = + Self::eras_start_session_index(next_active_era) + { + if next_active_era_start_session_index == start_session { + Self::start_era(start_session); + } else if next_active_era_start_session_index < start_session { + // This arm should never happen, but better handle it than to stall the + // staking pallet. + frame_support::print("Warning: A session appears to have been skipped."); + Self::start_era(start_session); + } + } } - /// The era has changed - enact new staking set. - /// - /// NOTE: This always happens immediately before a session change to ensure that new validators - /// get a chance to set their session keys. - fn new_era(start_session_index: SessionIndex) -> Option> { - // Payout - let points = CurrentEraPointsEarned::take(); - let now = T::Time::now(); - let previous_era_start = >::mutate(|v| { - sp_std::mem::replace(v, now) - }); - let era_duration = now - previous_era_start; - if !era_duration.is_zero() { - let validators = Self::current_elected(); - - let validator_len: BalanceOf = (validators.len() as u32).into(); - let total_rewarded_stake = Self::slot_stake() * validator_len; - - let (total_payout, max_payout) = inflation::compute_total_payout( - &T::RewardCurve::get(), - total_rewarded_stake.clone(), - T::Currency::total_issuance(), - // Duration of era; more than u64::MAX is rewarded as u64::MAX. - era_duration.saturated_into::(), - ); - - let mut total_imbalance = >::zero(); + /// End a session potentially ending an era. + fn end_session(session_index: SessionIndex) { + if let Some(active_era) = Self::active_era() { + let next_active_era_start_session_index = + Self::eras_start_session_index(active_era.index + 1) + .unwrap_or_else(|| { + frame_support::print( + "Error: start_session_index must be set for active_era + 1" + ); + 0 + }); - for (v, p) in validators.iter().zip(points.individual.into_iter()) { - if p != 0 { - let reward = Perbill::from_rational_approximation(p, points.total) * total_payout; - total_imbalance.subsume(Self::reward_validator(v, reward)); - } + if next_active_era_start_session_index == session_index + 1 { + Self::end_era(active_era, session_index); } - - // assert!(total_imbalance.peek() == total_payout) - let total_payout = total_imbalance.peek(); - - let rest = max_payout.saturating_sub(total_payout); - Self::deposit_event(RawEvent::Reward(total_payout, rest)); - - T::Reward::on_unbalanced(total_imbalance); - T::RewardRemainder::on_unbalanced(T::Currency::issue(rest)); } + } - // Increment current era. - let current_era = CurrentEra::mutate(|s| { *s += 1; *s }); - - CurrentEraStartSessionIndex::mutate(|v| { - *v = start_session_index; + /// * Increment `active_era.index`, + /// * reset `active_era.start`, + /// * update `BondedEras` and apply slashes. + fn start_era(start_session: SessionIndex) { + let active_era = >::mutate(|active_era| { + let new_index = active_era.as_ref().map(|info| info.index + 1).unwrap_or(0); + *active_era = Some(ActiveEraInfo { + index: new_index, + // Set new active era start in next `on_finalize`. To guarantee usage of `Time` + start: None, + }); + new_index }); + let bonding_duration = T::BondingDuration::get(); BondedEras::mutate(|bonded| { - bonded.push((current_era, start_session_index)); + bonded.push((active_era, start_session)); - if current_era > bonding_duration { - let first_kept = current_era - bonding_duration; + if active_era > bonding_duration { + let first_kept = active_era - bonding_duration; // prune out everything that's from before the first-kept index. let n_to_prune = bonded.iter() @@ -1462,18 +1709,65 @@ impl Module { } }); - // Reassign all Stakers. - let (_slot_stake, maybe_new_validators) = Self::select_validators(); - Self::apply_unapplied_slashes(current_era); + Self::apply_unapplied_slashes(active_era); + } + + /// Compute payout for era. + fn end_era(active_era: ActiveEraInfo>, _session_index: SessionIndex) { + // Note: active_era_start can be None if end era is called during genesis config. + if let Some(active_era_start) = active_era.start { + let now = T::Time::now(); + + let era_duration = now - active_era_start; + let (total_payout, _max_payout) = inflation::compute_total_payout( + &T::RewardCurve::get(), + Self::eras_total_stake(&active_era.index), + T::Currency::total_issuance(), + // Duration of era; more than u64::MAX is rewarded as u64::MAX. + era_duration.saturated_into::(), + ); + + // Set ending era reward. + >::insert(&active_era.index, total_payout); + } + } + + /// Plan a new era. Return the potential new staking set. + fn new_era(start_session_index: SessionIndex) -> Option> { + // Increment or set current era. + let current_era = CurrentEra::mutate(|s| { + *s = Some(s.map(|s| s + 1).unwrap_or(0)); + s.unwrap() + }); + ErasStartSessionIndex::insert(¤t_era, &start_session_index); + + // Clean old era information. + if let Some(old_era) = current_era.checked_sub(Self::history_depth() + 1) { + Self::clear_era_information(old_era); + } + + // Set staking information for new era. + let maybe_new_validators = Self::select_validators(current_era); maybe_new_validators } + /// Clear all era information for given era. + fn clear_era_information(era_index: EraIndex) { + >::remove_prefix(era_index); + >::remove_prefix(era_index); + >::remove_prefix(era_index); + >::remove(era_index); + >::remove(era_index); + >::remove(era_index); + ErasStartSessionIndex::remove(era_index); + } + /// Apply previously-unapplied slashes on the beginning of a new era, after a delay. - fn apply_unapplied_slashes(current_era: EraIndex) { + fn apply_unapplied_slashes(active_era: EraIndex) { let slash_defer_duration = T::SlashDeferDuration::get(); ::EarliestUnappliedSlash::mutate(|earliest| if let Some(ref mut earliest) = earliest { - let keep_from = current_era.saturating_sub(slash_defer_duration); + let keep_from = active_era.saturating_sub(slash_defer_duration); for era in (*earliest)..keep_from { let era_slashes = ::UnappliedSlashes::take(&era); for slash in era_slashes { @@ -1485,19 +1779,25 @@ impl Module { }) } - /// Select a new validator set from the assembled stakers and their role preferences. + /// Select a new validator set from the assembled stakers and their role preferences, and store + /// staking information for the new current era. + /// + /// Fill the storages `ErasStakers`, `ErasStakersClipped`, `ErasValidatorPrefs` and + /// `ErasTotalStake` for current era. /// - /// Returns the new `SlotStake` value and a set of newly selected _stash_ IDs. + /// Returns a set of newly selected _stash_ IDs. /// /// Assumes storage is coherent with the declaration. - fn select_validators() -> (BalanceOf, Option>) { + fn select_validators(current_era: EraIndex) -> Option> { let mut all_nominators: Vec<(T::AccountId, Vec)> = Vec::new(); - let all_validator_candidates_iter = >::enumerate(); - let all_validators = all_validator_candidates_iter.map(|(who, _pref)| { - let self_vote = (who.clone(), vec![who.clone()]); + let mut all_validators_and_prefs = BTreeMap::new(); + let mut all_validators = Vec::new(); + for (validator, preference) in >::enumerate() { + let self_vote = (validator.clone(), vec![validator.clone()]); all_nominators.push(self_vote); - who - }).collect::>(); + all_validators_and_prefs.insert(validator.clone(), preference); + all_validators.push(validator); + } let nominator_votes = >::enumerate().map(|(nominator, nominations)| { let Nominations { submitted_in, mut targets, suppressed: _ } = nominations; @@ -1524,8 +1824,8 @@ impl Module { ); if let Some(phragmen_result) = maybe_phragmen_result { - let elected_stashes = phragmen_result.winners.iter() - .map(|(s, _)| s.clone()) + let elected_stashes = phragmen_result.winners.into_iter() + .map(|(s, _)| s) .collect::>(); let assignments = phragmen_result.assignments; @@ -1538,13 +1838,8 @@ impl Module { Self::slashable_balance_of, ); - // Clear Stakers. - for v in Self::current_elected().iter() { - >::remove(v); - } - - // Populate Stakers and figure out the minimum stake behind a slot. - let mut slot_stake = BalanceOf::::max_value(); + // Populate stakers information and figure out the total stake. + let mut total_staked = BalanceOf::::zero(); for (c, s) in supports.into_iter() { // build `struct exposure` from `support` let mut others = Vec::new(); @@ -1561,6 +1856,9 @@ impl Module { } total = total.saturating_add(value); }); + + total_staked = total_staked.saturating_add(total); + let exposure = Exposure { own, others, @@ -1570,24 +1868,31 @@ impl Module { // we simulate it in some tests. total, }; + >::insert(¤t_era, &c, &exposure); - if exposure.total < slot_stake { - slot_stake = exposure.total; + let mut exposure_clipped = exposure; + let clipped_max_len = T::MaxNominatorRewardedPerValidator::get() as usize; + if exposure_clipped.others.len() > clipped_max_len { + exposure_clipped.others.sort_unstable_by(|a, b| a.value.cmp(&b.value).reverse()); + exposure_clipped.others.truncate(clipped_max_len); } - >::insert(&c, exposure.clone()); + >::insert(¤t_era, &c, exposure_clipped); } - // Update slot stake. - >::put(&slot_stake); - - // Set the new validator set in sessions. - >::put(&elected_stashes); + // Insert current era staking informations + >::insert(¤t_era, total_staked); + let default_pref = ValidatorPrefs::default(); + for stash in &elected_stashes { + let pref = all_validators_and_prefs.get(stash) + .unwrap_or(&default_pref); // Must never happen, but better to be safe. + >::insert(¤t_era, stash, pref); + } // In order to keep the property required by `n_session_ending` // that we must return the new validator set even if it's the same as the old, // as long as any underlying economic conditions have changed, we don't attempt // to do any optimization where we compare against the prior set. - (slot_stake, Some(elected_stashes)) + Some(elected_stashes) } else { // There were not enough candidates for even our minimal level of functionality. // This is bad. @@ -1595,7 +1900,7 @@ impl Module { // and let the chain keep producing blocks until we can decide on a sufficiently // substantial set. // TODO: #2494 - (Self::slot_stake(), None) + None } } @@ -1633,66 +1938,207 @@ impl Module { /// /// COMPLEXITY: Complexity is `number_of_validator_to_reward x current_elected_len`. /// If you need to reward lots of validator consider using `reward_by_indices`. - pub fn reward_by_ids(validators_points: impl IntoIterator) { - CurrentEraPointsEarned::mutate(|rewards| { - let current_elected = >::current_elected(); - for (validator, points) in validators_points.into_iter() { - if let Some(index) = current_elected.iter() - .position(|elected| *elected == validator) - { - rewards.add_points_to_index(index as u32, points); + pub fn reward_by_ids( + validators_points: impl IntoIterator + ) { + if let Some(active_era) = Self::active_era() { + >::mutate(active_era.index, |era_rewards| { + for (validator, points) in validators_points.into_iter() { + *era_rewards.individual.entry(validator).or_default() += points; + era_rewards.total += points; } - } - }); + }); + } + } + + /// Ensures that at the end of the current session there will be a new era. + fn ensure_new_era() { + match ForceEra::get() { + Forcing::ForceAlways | Forcing::ForceNew => (), + _ => ForceEra::put(Forcing::ForceNew), + } } - /// Add reward points to validators using their validator index. + /// Update storages to current version /// - /// For each element in the iterator the given number of points in u32 is added to the - /// validator, thus duplicates are handled. - pub fn reward_by_indices(validators_points: impl IntoIterator) { - let current_elected_len = >::current_elected().len() as u32; + /// In old version the staking module has several issue about handling session delay, the + /// current era was always considered the active one. + /// + /// After the migration the current era will still be considered the active one for the era of + /// the upgrade. And the delay issue will be fixed when planning the next era. + // * create: + // * ActiveEraStart + // * ErasRewardPoints + // * ActiveEra + // * ErasStakers + // * ErasStakersClipped + // * ErasValidatorPrefs + // * ErasTotalStake + // * ErasStartSessionIndex + // * translate StakingLedger + // * removal of: + // * Stakers + // * SlotStake + // * CurrentElected + // * CurrentEraStart + // * CurrentEraStartSessionIndex + // * CurrentEraPointsEarned + fn do_upgrade() { + /// Deprecated storages used for migration only. + mod deprecated { + use crate::{Trait, BalanceOf, MomentOf, SessionIndex, Exposure}; + use codec::{Encode, Decode}; + use frame_support::{decl_module, decl_storage}; + use sp_std::prelude::*; + + /// Reward points of an era. Used to split era total payout between validators. + #[derive(Encode, Decode, Default)] + pub struct EraPoints { + /// Total number of points. Equals the sum of reward points for each validator. + pub total: u32, + /// The reward points earned by a given validator. The index of this vec corresponds to the + /// index into the current validator set. + pub individual: Vec, + } - CurrentEraPointsEarned::mutate(|rewards| { - for (validator_index, points) in validators_points.into_iter() { - if validator_index < current_elected_len { - rewards.add_points_to_index(validator_index, points); + decl_module! { + pub struct Module for enum Call where origin: T::Origin { } + } + + decl_storage! { + pub trait Store for Module as Staking { + pub SlotStake: BalanceOf; + + /// The currently elected validator set keyed by stash account ID. + pub CurrentElected: Vec; + + /// The start of the current era. + pub CurrentEraStart: MomentOf; + + /// The session index at which the current era started. + pub CurrentEraStartSessionIndex: SessionIndex; + + /// Rewards for the current era. Using indices of current elected set. + pub CurrentEraPointsEarned: EraPoints; + + /// Nominators for a particular account that is in action right now. You can't iterate + /// through validators here, but you can find them in the Session module. + /// + /// This is keyed by the stash account. + pub Stakers: map hasher(blake2_256) T::AccountId => Exposure>; } } + } + + #[derive(Encode, Decode)] + struct OldStakingLedger { + stash: AccountId, + #[codec(compact)] + total: Balance, + #[codec(compact)] + active: Balance, + unlocking: Vec>, + } + + let current_era_start_index = deprecated::CurrentEraStartSessionIndex::get(); + let current_era = as Store>::CurrentEra::get().unwrap_or(0); + let current_era_start = deprecated::CurrentEraStart::::get(); + as Store>::ErasStartSessionIndex::insert(current_era, current_era_start_index); + as Store>::ActiveEra::put(ActiveEraInfo { + index: current_era, + start: Some(current_era_start), }); - } - /// Ensures that at the end of the current session there will be a new era. - fn ensure_new_era() { - match ForceEra::get() { - Forcing::ForceAlways | Forcing::ForceNew => (), - _ => ForceEra::put(Forcing::ForceNew), + let current_elected = deprecated::CurrentElected::::get(); + let mut current_total_stake = >::zero(); + for validator in ¤t_elected { + let exposure = deprecated::Stakers::::get(validator); + current_total_stake += exposure.total; + as Store>::ErasStakers::insert(current_era, validator, &exposure); + + let mut exposure_clipped = exposure; + let clipped_max_len = T::MaxNominatorRewardedPerValidator::get() as usize; + if exposure_clipped.others.len() > clipped_max_len { + exposure_clipped.others.sort_unstable_by(|a, b| a.value.cmp(&b.value).reverse()); + exposure_clipped.others.truncate(clipped_max_len); + } + as Store>::ErasStakersClipped::insert(current_era, validator, exposure_clipped); + + let pref = as Store>::Validators::get(validator); + as Store>::ErasValidatorPrefs::insert(current_era, validator, pref); + } + as Store>::ErasTotalStake::insert(current_era, current_total_stake); + + let points = deprecated::CurrentEraPointsEarned::get(); + as Store>::ErasRewardPoints::insert(current_era, EraRewardPoints { + total: points.total, + individual: current_elected.iter().cloned().zip(points.individual.iter().cloned()).collect(), + }); + + let res = as Store>::Ledger::translate_values( + |old: OldStakingLedger>| StakingLedger { + stash: old.stash, + total: old.total, + active: old.active, + unlocking: old.unlocking, + last_reward: None, + } + ); + if let Err(e) = res { + frame_support::print("Encountered error in migration of Staking::Ledger map."); + frame_support::print("The number of removed key/value is:"); + frame_support::print(e); } + + + // Kill old storages + deprecated::Stakers::::remove_all(); + deprecated::SlotStake::::kill(); + deprecated::CurrentElected::::kill(); + deprecated::CurrentEraStart::::kill(); + deprecated::CurrentEraStartSessionIndex::kill(); + deprecated::CurrentEraPointsEarned::kill(); } } +/// In this implementation `new_session(session)` must be called before `end_session(session-1)` +/// i.e. the new session must be planned before the ending of the previous session. +/// +/// Once the first new_session is planned, all session must start and then end in order, though +/// some session can lag in between the newest session planned and the latest session started. impl pallet_session::SessionManager for Module { fn new_session(new_index: SessionIndex) -> Option> { Self::ensure_storage_upgraded(); - if new_index == 0 { - return Self::initial_session(); - } - Self::new_session(new_index - 1) + Self::new_session(new_index) + } + fn start_session(start_index: SessionIndex) { + Self::start_session(start_index) + } + fn end_session(end_index: SessionIndex) { + Self::end_session(end_index) } - fn end_session(_end_index: SessionIndex) {} } +/// This implementation has the same constrains as the implementation of +/// `pallet_session::SessionManager`. impl SessionManager>> for Module { fn new_session(new_index: SessionIndex) -> Option>)>> { >::new_session(new_index).map(|validators| { + let current_era = Self::current_era() + // Must be some as a new era has been created. + .unwrap_or(0); + validators.into_iter().map(|v| { - let exposure = >::get(&v); + let exposure = Self::eras_stakers(current_era, &v); (v, exposure) }).collect() }) } + fn start_session(start_index: SessionIndex) { + >::start_session(start_index) + } fn end_session(end_index: SessionIndex) { >::end_session(end_index) } @@ -1702,9 +2148,12 @@ impl SessionManager> /// * 20 points to the block producer for producing a (non-uncle) block in the relay chain, /// * 2 points to the block producer for each reference to a previously unreferenced uncle, and /// * 1 point to the producer of each referenced uncle block. -impl pallet_authorship::EventHandler for Module { +impl pallet_authorship::EventHandler for Module + where + T: Trait + pallet_authorship::Trait + pallet_session::Trait +{ fn note_author(author: T::AccountId) { - Self::reward_by_ids(vec![(author, 20)]); + Self::reward_by_ids(vec![(author, 20)]) } fn note_uncle(author: T::AccountId, _age: T::BlockNumber) { Self::reward_by_ids(vec![ @@ -1724,15 +2173,22 @@ impl Convert> for StashOf { } } -/// A typed conversion from stash account ID to the current exposure of nominators +/// A typed conversion from stash account ID to the active exposure of nominators /// on that account. +/// +/// Active exposure is the exposure of the validator set currently validating, i.e. in +/// `active_era`. It can differ from the latest planned exposure in `current_era`. pub struct ExposureOf(sp_std::marker::PhantomData); impl Convert>>> for ExposureOf { fn convert(validator: T::AccountId) -> Option>> { - Some(>::stakers(&validator)) + if let Some(active_era) = >::active_era() { + Some(>::eras_stakers(active_era.index, &validator)) + } else { + None + } } } @@ -1756,13 +2212,25 @@ impl OnOffenceHandler= current_era_start_session { - era_now + // fast path for active-era report - most likely. + // `slash_session` cannot be in a future active era. It must be in `active_era` or before. + let slash_era = if slash_session >= active_era_start_session_index { + active_era } else { let eras = BondedEras::get(); @@ -1775,7 +2243,7 @@ impl OnOffenceHandler::EarliestUnappliedSlash::mutate(|earliest| { if earliest.is_none() { - *earliest = Some(era_now) + *earliest = Some(active_era) } }); @@ -1796,7 +2264,7 @@ impl OnOffenceHandler OnOffenceHandler::UnappliedSlashes::mutate( - era_now, + active_era, move |for_later| for_later.push(unapplied), ); } diff --git a/frame/staking/src/mock.rs b/frame/staking/src/mock.rs index 22d6628463..b7cae91bed 100644 --- a/frame/staking/src/mock.rs +++ b/frame/staking/src/mock.rs @@ -16,22 +16,23 @@ //! Test utilities -use std::{collections::HashSet, cell::RefCell}; +use std::{collections::{HashSet, HashMap}, cell::RefCell}; use sp_runtime::{Perbill, KeyTypeId}; use sp_runtime::curve::PiecewiseLinear; -use sp_runtime::traits::{IdentityLookup, Convert, OpaqueKeys, OnInitialize, SaturatedConversion}; +use sp_runtime::traits::{IdentityLookup, Convert, OpaqueKeys, OnInitialize, OnFinalize, SaturatedConversion}; use sp_runtime::testing::{Header, UintAuthorityId}; use sp_staking::{SessionIndex, offence::{OffenceDetails, OnOffenceHandler}}; use sp_core::{H256, crypto::key_types}; use sp_io; use frame_support::{ - assert_ok, impl_outer_origin, parameter_types, StorageLinkedMap, StorageValue, + assert_ok, impl_outer_origin, parameter_types, StorageLinkedMap, StorageValue, StorageMap, + StorageDoubleMap, traits::{Currency, Get, FindAuthor}, weights::Weight, }; use crate::{ EraIndex, GenesisConfig, Module, Trait, StakerStatus, ValidatorPrefs, RewardDestination, - Nominators, inflation + Nominators, inflation, SessionInterface, Exposure, ErasStakers, ErasRewardPoints }; /// The AccountId alias in this test module. @@ -198,6 +199,7 @@ parameter_types! { pub const SessionsPerEra: SessionIndex = 3; pub const BondingDuration: EraIndex = 3; pub const RewardCurve: &'static PiecewiseLinear<'static> = &I_NPOS; + pub const MaxNominatorRewardedPerValidator: u32 = 64; } impl Trait for Test { type Currency = pallet_balances::Module; @@ -213,6 +215,7 @@ impl Trait for Test { type BondingDuration = BondingDuration; type SessionInterface = Self; type RewardCurve = RewardCurve; + type MaxNominatorRewardedPerValidator = MaxNominatorRewardedPerValidator; } pub struct ExtBuilder { @@ -328,7 +331,6 @@ impl ExtBuilder { }; let nominated = if self.nominate { vec![11, 21] } else { vec![] }; let _ = GenesisConfig::{ - current_era: 0, stakers: vec![ // (stash, controller, staked_amount, status) (11, 10, balance_factor * 1000, StakerStatus::::Validator), @@ -366,35 +368,34 @@ pub type Session = pallet_session::Module; pub type Timestamp = pallet_timestamp::Module; pub type Staking = Module; -pub fn check_exposure_all() { - Staking::current_elected().into_iter().for_each(|acc| check_exposure(acc)); +pub fn check_exposure_all(era: EraIndex) { + ErasStakers::::iter_prefix(era).for_each(check_exposure) } -pub fn check_nominator_all() { - >::enumerate().for_each(|(acc, _)| check_nominator_exposure(acc)); +pub fn check_nominator_all(era: EraIndex) { + >::enumerate() + .for_each(|(acc, _)| check_nominator_exposure(era, acc)); } /// Check for each selected validator: expo.total = Sum(expo.other) + expo.own -pub fn check_exposure(stash: u64) { - assert_is_stash(stash); - let expo = Staking::stakers(&stash); +pub fn check_exposure(expo: Exposure) { assert_eq!( expo.total as u128, expo.own as u128 + expo.others.iter().map(|e| e.value as u128).sum::(), - "wrong total exposure for {:?}: {:?}", stash, expo, + "wrong total exposure {:?}", expo, ); } /// Check that for each nominator: slashable_balance > sum(used_balance) /// Note: we might not consume all of a nominator's balance, but we MUST NOT over spend it. -pub fn check_nominator_exposure(stash: u64) { +pub fn check_nominator_exposure(era: EraIndex, stash: AccountId) { assert_is_stash(stash); let mut sum = 0; - Staking::current_elected() - .iter() - .map(|v| Staking::stakers(v)) - .for_each(|e| e.others.iter() - .filter(|i| i.who == stash) - .for_each(|i| sum += i.value)); + ErasStakers::::iter_prefix(era) + .for_each(|exposure| { + exposure.others.iter() + .filter(|i| i.who == stash) + .for_each(|i| sum += i.value) + }); let nominator_stake = Staking::slashable_balance_of(&stash); // a nominator cannot over-spend. assert!( @@ -403,11 +404,11 @@ pub fn check_nominator_exposure(stash: u64) { ); } -pub fn assert_is_stash(acc: u64) { +pub fn assert_is_stash(acc: AccountId) { assert!(Staking::bonded(&acc).is_some(), "Not a stash."); } -pub fn assert_ledger_consistent(stash: u64) { +pub fn assert_ledger_consistent(stash: AccountId) { assert_is_stash(stash); let ledger = Staking::ledger(stash - 1).unwrap(); @@ -437,9 +438,8 @@ pub fn advance_session() { } pub fn start_session(session_index: SessionIndex) { - // Compensate for session delay - let session_index = session_index + 1; for i in Session::current_index()..session_index { + Staking::on_finalize(System::block_number()); System::set_block_number((i + 1).into()); Timestamp::set_timestamp(System::block_number() * 1000); Session::on_initialize(System::block_number()); @@ -450,22 +450,21 @@ pub fn start_session(session_index: SessionIndex) { pub fn start_era(era_index: EraIndex) { start_session((era_index * 3).into()); - assert_eq!(Staking::current_era(), era_index); + assert_eq!(Staking::active_era().unwrap().index, era_index); } pub fn current_total_payout_for_duration(duration: u64) -> u64 { inflation::compute_total_payout( ::RewardCurve::get(), - >::slot_stake() * 2, + Staking::eras_total_stake(Staking::active_era().unwrap().index), Balances::total_issuance(), duration, ).0 } pub fn reward_all_elected() { - let rewards = >::current_elected().iter() - .map(|v| (*v, 1)) - .collect::>(); + let rewards = ::SessionInterface::validators().into_iter() + .map(|v| (v, 1)); >::reward_by_ids(rewards) } @@ -489,8 +488,8 @@ pub fn on_offence_in_era( } } - if Staking::current_era() == era { - Staking::on_offence(offenders, slash_fraction, Staking::current_era_start_session_index()); + if Staking::active_era().unwrap().index == era { + Staking::on_offence(offenders, slash_fraction, Staking::eras_start_session_index(era).unwrap()); } else { panic!("cannot slash in era {}", era); } @@ -500,6 +499,38 @@ pub fn on_offence_now( offenders: &[OffenceDetails>], slash_fraction: &[Perbill], ) { - let now = Staking::current_era(); + let now = Staking::active_era().unwrap().index; on_offence_in_era(offenders, slash_fraction, now) } + +/// Make all validator and nominator request their payment +pub fn make_all_reward_payment(era: EraIndex) { + let validators_with_reward = ErasRewardPoints::::get(era).individual.keys() + .cloned() + .collect::>(); + + // reward nominators + let mut nominator_controllers = HashMap::new(); + for validator in Staking::eras_reward_points(era).individual.keys() { + let validator_exposure = Staking::eras_stakers_clipped(era, validator); + for (nom_index, nom) in validator_exposure.others.iter().enumerate() { + if let Some(nom_ctrl) = Staking::bonded(nom.who) { + nominator_controllers.entry(nom_ctrl) + .or_insert(vec![]) + .push((validator.clone(), nom_index as u32)); + } + } + } + for (nominator_controller, validators_with_nom_index) in nominator_controllers { + assert_ok!(Staking::payout_nominator( + Origin::signed(nominator_controller), + era, + validators_with_nom_index, + )); + } + + // reward validators + for validator_controller in validators_with_reward.iter().filter_map(Staking::bonded) { + assert_ok!(Staking::payout_validator(Origin::signed(validator_controller), era)); + } +} diff --git a/frame/staking/src/tests.rs b/frame/staking/src/tests.rs index d950c171ad..98536a042a 100644 --- a/frame/staking/src/tests.rs +++ b/frame/staking/src/tests.rs @@ -16,6 +16,8 @@ //! Tests for the module. +mod test_upgrade_from_master_dataset; + use super::*; use mock::*; use sp_runtime::{assert_eq_error_rate, traits::{OnInitialize, BadOrigin}}; @@ -23,9 +25,13 @@ use sp_staking::offence::OffenceDetails; use frame_support::{ assert_ok, assert_noop, traits::{Currency, ReservableCurrency}, - dispatch::DispatchError, StorageMap, + StorageMap, + storage::migration::{put_storage_value, get_storage_value}, }; +use pallet_balances::Error as BalancesError; +use sp_io::hashing::blake2_256; use substrate_test_utils::assert_eq_uvec; +use crate::Store; #[test] fn force_unstake_works() { @@ -36,11 +42,7 @@ fn force_unstake_works() { // Cant transfer assert_noop!( Balances::transfer(Origin::signed(11), 1, 10), - DispatchError::Module { - index: 0, - error: 1, - message: Some("LiquidityRestrictions"), - } + BalancesError::::LiquidityRestrictions ); // Force unstake requires root. assert_noop!(Staking::force_unstake(Origin::signed(11), 11), BadOrigin); @@ -67,12 +69,12 @@ fn basic_setup_works() { // Account 10 controls the stash from account 11, which is 100 * balance_factor units assert_eq!( Staking::ledger(&10), - Some(StakingLedger { stash: 11, total: 1000, active: 1000, unlocking: vec![] }) + Some(StakingLedger { stash: 11, total: 1000, active: 1000, unlocking: vec![], last_reward: None }) ); // Account 20 controls the stash from account 21, which is 200 * balance_factor units assert_eq!( Staking::ledger(&20), - Some(StakingLedger { stash: 21, total: 1000, active: 1000, unlocking: vec![] }) + Some(StakingLedger { stash: 21, total: 1000, active: 1000, unlocking: vec![], last_reward: None }) ); // Account 1 does not control any stash assert_eq!(Staking::ledger(&1), None); @@ -86,27 +88,35 @@ fn basic_setup_works() { assert_eq!( Staking::ledger(100), - Some(StakingLedger { stash: 101, total: 500, active: 500, unlocking: vec![] }) + Some(StakingLedger { stash: 101, total: 500, active: 500, unlocking: vec![], last_reward: None }) ); assert_eq!(Staking::nominators(101).unwrap().targets, vec![11, 21]); assert_eq!( - Staking::stakers(11), - Exposure { total: 1125, own: 1000, others: vec![ IndividualExposure { who: 101, value: 125 }] } + Staking::eras_stakers(Staking::active_era().unwrap().index, 11), + Exposure { + total: 1125, + own: 1000, + others: vec![ IndividualExposure { who: 101, value: 125 }] + }, ); assert_eq!( - Staking::stakers(21), - Exposure { total: 1375, own: 1000, others: vec![ IndividualExposure { who: 101, value: 375 }] } + Staking::eras_stakers(Staking::active_era().unwrap().index, 21), + Exposure { + total: 1375, + own: 1000, + others: vec![ IndividualExposure { who: 101, value: 375 }] + }, ); // initial slot_stake - assert_eq!(Staking::slot_stake(), 1125); + assert_eq!(Staking::eras_total_stake(Staking::active_era().unwrap().index), 2500); // The number of validators required. assert_eq!(Staking::validator_count(), 2); // Initial Era and session - assert_eq!(Staking::current_era(), 0); + assert_eq!(Staking::active_era().unwrap().index, 0); // Account 10 has `balance_factor` free balance assert_eq!(Balances::free_balance(10), 1); @@ -116,8 +126,8 @@ fn basic_setup_works() { assert_eq!(Staking::force_era(), Forcing::NotForcing); // All exposures must be correct. - check_exposure_all(); - check_nominator_all(); + check_exposure_all(Staking::active_era().unwrap().index); + check_nominator_all(Staking::active_era().unwrap().index); }); } @@ -126,10 +136,10 @@ fn change_controller_works() { ExtBuilder::default().build().execute_with(|| { assert_eq!(Staking::bonded(&11), Some(10)); - assert!(>::enumerate().map(|(c, _)| c).collect::>().contains(&11)); + assert!(Session::validators().contains(&11)); // 10 can control 11 who is initially a validator. assert_ok!(Staking::chill(Origin::signed(10))); - assert!(!>::enumerate().map(|(c, _)| c).collect::>().contains(&11)); + assert!(Session::validators().contains(&11)); assert_ok!(Staking::set_controller(Origin::signed(11), 5)); @@ -149,114 +159,87 @@ fn rewards_should_work() { // * rewards get recorded per session // * rewards get paid per Era // * Check that nominators are also rewarded - ExtBuilder::default().nominate(false).build().execute_with(|| { - // Init some balances - let _ = Balances::make_free_balance_be(&2, 500); - - let delay = 1000; - let init_balance_2 = Balances::total_balance(&2); + ExtBuilder::default().nominate(true).build().execute_with(|| { let init_balance_10 = Balances::total_balance(&10); let init_balance_11 = Balances::total_balance(&11); + let init_balance_20 = Balances::total_balance(&20); + let init_balance_21 = Balances::total_balance(&21); + let init_balance_100 = Balances::total_balance(&100); + let init_balance_101 = Balances::total_balance(&101); - // Set payee to controller - assert_ok!(Staking::set_payee(Origin::signed(10), RewardDestination::Controller)); - - // Initial config should be correct - assert_eq!(Staking::current_era(), 0); - assert_eq!(Session::current_index(), 0); + // Check state + Payee::::insert(11, RewardDestination::Controller); + Payee::::insert(21, RewardDestination::Controller); + Payee::::insert(101, RewardDestination::Controller); - // Add a dummy nominator. - // - // Equal division indicates that the reward will be equally divided among validator and - // nominator. - >::insert(&11, Exposure { - own: 500, - total: 1000, - others: vec![IndividualExposure {who: 2, value: 500 }] - }); - - >::insert(&2, RewardDestination::Stash); - assert_eq!(Staking::payee(2), RewardDestination::Stash); - assert_eq!(Staking::payee(11), RewardDestination::Controller); - - let mut block = 3; // Block 3 => Session 1 => Era 0 - System::set_block_number(block); - Timestamp::set_timestamp(block * 5000); // on time. - Session::on_initialize(System::block_number()); - assert_eq!(Staking::current_era(), 0); - assert_eq!(Session::current_index(), 1); >::reward_by_ids(vec![(11, 50)]); >::reward_by_ids(vec![(11, 50)]); // This is the second validator of the current elected set. >::reward_by_ids(vec![(21, 50)]); - // This must be no-op as it is not an elected validator. - >::reward_by_ids(vec![(1001, 10_000)]); // Compute total payout now for whole duration as other parameter won't change - let total_payout = current_total_payout_for_duration(9 * 5 * 1000); - assert!(total_payout > 10); // Test is meaningful if reward something - - // No reward yet - assert_eq!(Balances::total_balance(&2), init_balance_2); - assert_eq!(Balances::total_balance(&10), init_balance_10); - assert_eq!(Balances::total_balance(&11), init_balance_11); - - block = 6; // Block 6 => Session 2 => Era 0 - System::set_block_number(block); - Timestamp::set_timestamp(block * 5000 + delay); // a little late. - Session::on_initialize(System::block_number()); - assert_eq!(Staking::current_era(), 0); - assert_eq!(Session::current_index(), 2); + let total_payout_0 = current_total_payout_for_duration(3 * 1000); + assert!(total_payout_0 > 10); // Test is meaningful if reward something - block = 9; // Block 9 => Session 3 => Era 1 - System::set_block_number(block); - Timestamp::set_timestamp(block * 5000); // back to being on time. no delays - Session::on_initialize(System::block_number()); - assert_eq!(Staking::current_era(), 1); - assert_eq!(Session::current_index(), 3); + start_session(1); - // 11 validator has 2/3 of the total rewards and half half for it and its nominator - assert_eq_error_rate!(Balances::total_balance(&2), init_balance_2 + total_payout / 3, 1); - assert_eq_error_rate!(Balances::total_balance(&10), init_balance_10 + total_payout / 3, 1); + assert_eq!(Balances::total_balance(&10), init_balance_10); assert_eq!(Balances::total_balance(&11), init_balance_11); - }); -} - -#[test] -fn multi_era_reward_should_work() { - // Should check that: - // The value of current_session_reward is set at the end of each era, based on - // slot_stake and session_reward. - ExtBuilder::default().nominate(false).build().execute_with(|| { - let init_balance_10 = Balances::total_balance(&10); - - // Set payee to controller - assert_ok!(Staking::set_payee(Origin::signed(10), RewardDestination::Controller)); - - // Compute now as other parameter won't change - let total_payout_0 = current_total_payout_for_duration(3000); - assert!(total_payout_0 > 10); // Test is meaningful if reward something - >::reward_by_ids(vec![(11, 1)]); + assert_eq!(Balances::total_balance(&20), init_balance_20); + assert_eq!(Balances::total_balance(&21), init_balance_21); + assert_eq!(Balances::total_balance(&100), init_balance_100); + assert_eq!(Balances::total_balance(&101), init_balance_101); + assert_eq_uvec!(Session::validators(), vec![11, 21]); + assert_eq!(Staking::eras_reward_points(Staking::active_era().unwrap().index), EraRewardPoints { + total: 50*3, + individual: vec![(11, 100), (21, 50)].into_iter().collect(), + }); + let part_for_10 = Perbill::from_rational_approximation::(1000, 1125); + let part_for_20 = Perbill::from_rational_approximation::(1000, 1375); + let part_for_100_from_10 = Perbill::from_rational_approximation::(125, 1125); + let part_for_100_from_20 = Perbill::from_rational_approximation::(375, 1375); - start_session(0); - start_session(1); start_session(2); start_session(3); - assert_eq!(Staking::current_era(), 1); - assert_eq!(Balances::total_balance(&10), init_balance_10 + total_payout_0); + assert_eq!(Staking::active_era().unwrap().index, 1); + mock::make_all_reward_payment(0); + + assert_eq_error_rate!(Balances::total_balance(&10), init_balance_10 + part_for_10 * total_payout_0*2/3, 2); + assert_eq_error_rate!(Balances::total_balance(&11), init_balance_11, 2); + assert_eq_error_rate!(Balances::total_balance(&20), init_balance_20 + part_for_20 * total_payout_0*1/3, 2); + assert_eq_error_rate!(Balances::total_balance(&21), init_balance_21, 2); + assert_eq_error_rate!( + Balances::total_balance(&100), + init_balance_100 + + part_for_100_from_10 * total_payout_0 * 2/3 + + part_for_100_from_20 * total_payout_0 * 1/3, + 2 + ); + assert_eq_error_rate!(Balances::total_balance(&101), init_balance_101, 2); - start_session(4); + assert_eq_uvec!(Session::validators(), vec![11, 21]); + >::reward_by_ids(vec![(11, 1)]); - let total_payout_1 = current_total_payout_for_duration(3000); + // Compute total payout now for whole duration as other parameter won't change + let total_payout_1 = current_total_payout_for_duration(3 * 1000); assert!(total_payout_1 > 10); // Test is meaningful if reward something - >::reward_by_ids(vec![(11, 101)]); - - // new era is triggered here. - start_session(5); - // pay time - assert_eq!(Balances::total_balance(&10), init_balance_10 + total_payout_0 + total_payout_1); + start_era(2); + mock::make_all_reward_payment(1); + + assert_eq_error_rate!(Balances::total_balance(&10), init_balance_10 + part_for_10 * (total_payout_0 * 2/3 + total_payout_1), 2); + assert_eq_error_rate!(Balances::total_balance(&11), init_balance_11, 2); + assert_eq_error_rate!(Balances::total_balance(&20), init_balance_20 + part_for_20 * total_payout_0 * 1/3, 2); + assert_eq_error_rate!(Balances::total_balance(&21), init_balance_21, 2); + assert_eq_error_rate!( + Balances::total_balance(&100), + init_balance_100 + + part_for_100_from_10 * (total_payout_0 * 2/3 + total_payout_1) + + part_for_100_from_20 * total_payout_0 * 1/3, + 2 + ); + assert_eq_error_rate!(Balances::total_balance(&101), init_balance_101, 2); }); } @@ -271,6 +254,9 @@ fn staking_should_work() { .fair(false) // to give 20 more staked value .build() .execute_with(|| { + // --- Block 1: + start_session(1); + Timestamp::set_timestamp(1); // Initialize time. // remember + compare this along with the test. @@ -279,55 +265,64 @@ fn staking_should_work() { // put some money in account that we'll use. for i in 1..5 { let _ = Balances::make_free_balance_be(&i, 2000); } - // --- Block 1: - start_session(1); + // --- Block 2: + start_session(2); // add a new candidate for being a validator. account 3 controlled by 4. assert_ok!(Staking::bond(Origin::signed(3), 4, 1500, RewardDestination::Controller)); + let current_era_at_bond = Staking::current_era(); assert_ok!(Staking::validate(Origin::signed(4), ValidatorPrefs::default())); // No effects will be seen so far. assert_eq_uvec!(validator_controllers(), vec![20, 10]); - // --- Block 2: - start_session(2); + // --- Block 3: + start_session(3); // No effects will be seen so far. Era has not been yet triggered. assert_eq_uvec!(validator_controllers(), vec![20, 10]); - // --- Block 3: the validators will now be queued. - start_session(3); - assert_eq!(Staking::current_era(), 1); - - // --- Block 4: the validators will now be changed. + // --- Block 4: the validators will now be queued. start_session(4); + assert_eq!(Staking::active_era().unwrap().index, 1); + + // --- Block 5: the validators are still in queue. + start_session(5); + + // --- Block 6: the validators will now be changed. + start_session(6); assert_eq_uvec!(validator_controllers(), vec![20, 4]); - // --- Block 4: Unstake 4 as a validator, freeing up the balance stashed in 3 + // --- Block 6: Unstake 4 as a validator, freeing up the balance stashed in 3 // 4 will chill Staking::chill(Origin::signed(4)).unwrap(); - // --- Block 5: nothing. 4 is still there. - start_session(5); + // --- Block 7: nothing. 4 is still there. + start_session(7); assert_eq_uvec!(validator_controllers(), vec![20, 4]); - // --- Block 6: 4 will not be a validator. - start_session(7); + // --- Block 8: + start_session(8); + + // --- Block 9: 4 will not be a validator. + start_session(9); assert_eq_uvec!(validator_controllers(), vec![20, 10]); // Note: the stashed value of 4 is still lock assert_eq!( Staking::ledger(&4), - Some(StakingLedger { stash: 3, total: 1500, active: 1500, unlocking: vec![] }) + Some(StakingLedger { + stash: 3, + total: 1500, + active: 1500, + unlocking: vec![], + last_reward: current_era_at_bond, + }) ); // e.g. it cannot spend more than 500 that it has free from the total 2000 assert_noop!( Balances::reserve(&3, 501), - DispatchError::Module { - index: 0, - error: 1, - message: Some("LiquidityRestrictions"), - } + BalancesError::::LiquidityRestrictions ); assert_ok!(Balances::reserve(&3, 409)); }); @@ -353,11 +348,12 @@ fn less_than_needed_candidates_works() { // But the exposure is updated in a simple way. No external votes exists. // This is purely self-vote. - assert_eq!(Staking::stakers(10).others.len(), 0); - assert_eq!(Staking::stakers(20).others.len(), 0); - assert_eq!(Staking::stakers(30).others.len(), 0); - check_exposure_all(); - check_nominator_all(); + assert!( + ErasStakers::::iter_prefix(Staking::active_era().unwrap().index) + .all(|exposure| exposure.others.is_empty()) + ); + check_exposure_all(Staking::active_era().unwrap().index); + check_nominator_all(Staking::active_era().unwrap().index); }); } @@ -379,6 +375,7 @@ fn no_candidate_emergency_condition() { // set the minimum validator count. ::MinimumValidatorCount::put(10); + // try to chill let _ = Staking::chill(Origin::signed(10)); // trigger era @@ -461,8 +458,6 @@ fn nominating_and_rewards_should_work() { assert!(total_payout_0 > 100); // Test is meaningful if reward something >::reward_by_ids(vec![(41, 1)]); >::reward_by_ids(vec![(31, 1)]); - >::reward_by_ids(vec![(21, 10)]); // must be no-op - >::reward_by_ids(vec![(11, 10)]); // must be no-op start_era(1); @@ -470,45 +465,40 @@ fn nominating_and_rewards_should_work() { assert_eq_uvec!(validator_controllers(), vec![20, 10]); // OLD validators must have already received some rewards. + mock::make_all_reward_payment(0); assert_eq!(Balances::total_balance(&40), 1 + total_payout_0 / 2); assert_eq!(Balances::total_balance(&30), 1 + total_payout_0 / 2); // ------ check the staked value of all parties. - // total expo of 10, with 1200 coming from nominators (externals), according to phragmen. - assert_eq!(Staking::stakers(11).own, 1000); - assert_eq!(Staking::stakers(11).total, 1000 + 800); - // 2 and 4 supported 10, each with stake 600, according to phragmen. - assert_eq!( - Staking::stakers(11).others.iter().map(|e| e.value).collect::>>(), - vec![400, 400] - ); + // 30 and 40 are not chosen anymore + assert_eq!(ErasStakers::::iter_prefix(Staking::active_era().unwrap().index).count(), 2); assert_eq!( - Staking::stakers(11).others.iter().map(|e| e.who).collect::>(), - vec![3, 1] - ); - // total expo of 20, with 500 coming from nominators (externals), according to phragmen. - assert_eq!(Staking::stakers(21).own, 1000); - assert_eq_error_rate!(Staking::stakers(21).total, 1000 + 1200, 2); - // 2 and 4 supported 20, each with stake 250, according to phragmen. - assert_eq!( - Staking::stakers(21).others.iter().map(|e| e.value).collect::>>(), - vec![600, 600] + Staking::eras_stakers(Staking::active_era().unwrap().index, 11), + Exposure { + total: 1000 + 800, + own: 1000, + others: vec![ + IndividualExposure { who: 3, value: 400 }, + IndividualExposure { who: 1, value: 400 }, + ] + }, ); assert_eq!( - Staking::stakers(21).others.iter().map(|e| e.who).collect::>(), - vec![3, 1] + Staking::eras_stakers(Staking::active_era().unwrap().index, 21), + Exposure { + total: 1000 + 1200, + own: 1000, + others: vec![ + IndividualExposure { who: 3, value: 600 }, + IndividualExposure { who: 1, value: 600 }, + ] + }, ); - // They are not chosen anymore - assert_eq!(Staking::stakers(31).total, 0); - assert_eq!(Staking::stakers(41).total, 0); - // the total reward for era 1 let total_payout_1 = current_total_payout_for_duration(3000); assert!(total_payout_1 > 100); // Test is meaningful if reward something - >::reward_by_ids(vec![(41, 10)]); // must be no-op - >::reward_by_ids(vec![(31, 10)]); // must be no-op >::reward_by_ids(vec![(21, 2)]); >::reward_by_ids(vec![(11, 1)]); @@ -517,6 +507,7 @@ fn nominating_and_rewards_should_work() { // nothing else will happen, era ends and rewards are paid again, // it is expected that nominators will also be paid. See below + mock::make_all_reward_payment(1); let payout_for_10 = total_payout_1 / 3; let payout_for_20 = 2 * total_payout_1 / 3; // Nominator 2: has [400/1800 ~ 2/9 from 10] + [600/2200 ~ 3/11 from 20]'s reward. ==> 2/9 + 3/11 @@ -545,8 +536,8 @@ fn nominating_and_rewards_should_work() { 1, ); - check_exposure_all(); - check_nominator_all(); + check_exposure_all(Staking::active_era().unwrap().index); + check_nominator_all(Staking::active_era().unwrap().index); }); } @@ -589,13 +580,13 @@ fn nominators_also_get_slashed() { &[OffenceDetails { offender: ( 11, - Staking::stakers(&11), + Staking::eras_stakers(Staking::active_era().unwrap().index, 11), ), reporters: vec![], }], &[Perbill::from_percent(5)], ); - let expo = Staking::stakers(11); + let expo = Staking::eras_stakers(Staking::active_era().unwrap().index, 11); let slash_value = 50; let total_slash = expo.total.min(slash_value); let validator_slash = expo.own.min(total_slash); @@ -604,8 +595,8 @@ fn nominators_also_get_slashed() { // initial + first era reward + slash assert_eq!(Balances::total_balance(&11), initial_balance - validator_slash); assert_eq!(Balances::total_balance(&2), initial_balance - nominator_slash); - check_exposure_all(); - check_nominator_all(); + check_exposure_all(Staking::active_era().unwrap().index); + check_nominator_all(Staking::active_era().unwrap().index); // Because slashing happened. assert!(is_disabled(10)); }); @@ -660,42 +651,52 @@ fn double_controlling_should_fail() { #[test] fn session_and_eras_work() { ExtBuilder::default().build().execute_with(|| { - assert_eq!(Staking::current_era(), 0); + assert_eq!(Staking::active_era().unwrap().index, 0); // Block 1: No change. - start_session(0); + start_session(1); assert_eq!(Session::current_index(), 1); - assert_eq!(Staking::current_era(), 0); + assert_eq!(Staking::active_era().unwrap().index, 0); - // Block 2: Simple era change. + // Block 2: No change. start_session(2); - assert_eq!(Session::current_index(), 3); - assert_eq!(Staking::current_era(), 1); + assert_eq!(Session::current_index(), 2); + assert_eq!(Staking::active_era().unwrap().index, 0); - // Block 3: Schedule an era length change; no visible changes. + // Block 3: Era increment. start_session(3); + assert_eq!(Session::current_index(), 3); + assert_eq!(Staking::active_era().unwrap().index, 1); + + // Block 4: No change. + start_session(4); assert_eq!(Session::current_index(), 4); - assert_eq!(Staking::current_era(), 1); + assert_eq!(Staking::active_era().unwrap().index, 1); - // Block 4: Era change kicks in. + // Block 5: No change. start_session(5); - assert_eq!(Session::current_index(), 6); - assert_eq!(Staking::current_era(), 2); + assert_eq!(Session::current_index(), 5); + assert_eq!(Staking::active_era().unwrap().index, 1); - // Block 5: No change. + // Block 6: Era increment. start_session(6); - assert_eq!(Session::current_index(), 7); - assert_eq!(Staking::current_era(), 2); + assert_eq!(Session::current_index(), 6); + assert_eq!(Staking::active_era().unwrap().index, 2); - // Block 6: No change. + // Block 7: No change. start_session(7); - assert_eq!(Session::current_index(), 8); - assert_eq!(Staking::current_era(), 2); + assert_eq!(Session::current_index(), 7); + assert_eq!(Staking::active_era().unwrap().index, 2); - // Block 7: Era increment. + // Block 8: No change. start_session(8); + assert_eq!(Session::current_index(), 8); + assert_eq!(Staking::active_era().unwrap().index, 2); + + // Block 9: Era increment. + start_session(9); assert_eq!(Session::current_index(), 9); - assert_eq!(Staking::current_era(), 3); + assert_eq!(Staking::active_era().unwrap().index, 3); }); } @@ -703,50 +704,53 @@ fn session_and_eras_work() { fn forcing_new_era_works() { ExtBuilder::default().build().execute_with(|| { // normal flow of session. - assert_eq!(Staking::current_era(), 0); + assert_eq!(Staking::active_era().unwrap().index, 0); start_session(0); - assert_eq!(Staking::current_era(), 0); + assert_eq!(Staking::active_era().unwrap().index, 0); start_session(1); - assert_eq!(Staking::current_era(), 0); + assert_eq!(Staking::active_era().unwrap().index, 0); start_session(2); - assert_eq!(Staking::current_era(), 1); + assert_eq!(Staking::active_era().unwrap().index, 0); + start_session(3); + assert_eq!(Staking::active_era().unwrap().index, 1); // no era change. ForceEra::put(Forcing::ForceNone); - start_session(3); - assert_eq!(Staking::current_era(), 1); start_session(4); - assert_eq!(Staking::current_era(), 1); + assert_eq!(Staking::active_era().unwrap().index, 1); start_session(5); - assert_eq!(Staking::current_era(), 1); + assert_eq!(Staking::active_era().unwrap().index, 1); start_session(6); - assert_eq!(Staking::current_era(), 1); + assert_eq!(Staking::active_era().unwrap().index, 1); + start_session(7); + assert_eq!(Staking::active_era().unwrap().index, 1); // back to normal. // this immediately starts a new session. ForceEra::put(Forcing::NotForcing); - start_session(7); - assert_eq!(Staking::current_era(), 2); start_session(8); - assert_eq!(Staking::current_era(), 2); + assert_eq!(Staking::active_era().unwrap().index, 1); // There is one session delay + start_session(9); + assert_eq!(Staking::active_era().unwrap().index, 2); // forceful change ForceEra::put(Forcing::ForceAlways); - start_session(9); - assert_eq!(Staking::current_era(), 3); start_session(10); - assert_eq!(Staking::current_era(), 4); + assert_eq!(Staking::active_era().unwrap().index, 2); // There is one session delay start_session(11); - assert_eq!(Staking::current_era(), 5); + assert_eq!(Staking::active_era().unwrap().index, 3); + start_session(12); + assert_eq!(Staking::active_era().unwrap().index, 4); // just one forceful change ForceEra::put(Forcing::ForceNew); - start_session(12); - assert_eq!(Staking::current_era(), 6); - - assert_eq!(ForceEra::get(), Forcing::NotForcing); start_session(13); - assert_eq!(Staking::current_era(), 6); + assert_eq!(Staking::active_era().unwrap().index, 5); + assert_eq!(ForceEra::get(), Forcing::NotForcing); + start_session(14); + assert_eq!(Staking::active_era().unwrap().index, 6); + start_session(15); + assert_eq!(Staking::active_era().unwrap().index, 6); }); } @@ -760,15 +764,11 @@ fn cannot_transfer_staked_balance() { // Confirm account 11 has some free balance assert_eq!(Balances::free_balance(11), 1000); // Confirm account 11 (via controller 10) is totally staked - assert_eq!(Staking::stakers(&11).total, 1000); + assert_eq!(Staking::eras_stakers(Staking::active_era().unwrap().index, 11).total, 1000); // Confirm account 11 cannot transfer as a result assert_noop!( Balances::transfer(Origin::signed(11), 20, 1), - DispatchError::Module { - index: 0, - error: 1, - message: Some("LiquidityRestrictions"), - } + BalancesError::::LiquidityRestrictions ); // Give account 11 extra free balance @@ -789,15 +789,11 @@ fn cannot_transfer_staked_balance_2() { // Confirm account 21 has some free balance assert_eq!(Balances::free_balance(21), 2000); // Confirm account 21 (via controller 20) is totally staked - assert_eq!(Staking::stakers(&21).total, 1000); + assert_eq!(Staking::eras_stakers(Staking::active_era().unwrap().index, 21).total, 1000); // Confirm account 21 can transfer at most 1000 assert_noop!( Balances::transfer(Origin::signed(21), 20, 1001), - DispatchError::Module { - index: 0, - error: 1, - message: Some("LiquidityRestrictions"), - } + BalancesError::::LiquidityRestrictions ); assert_ok!(Balances::transfer(Origin::signed(21), 20, 1000)); }); @@ -812,15 +808,11 @@ fn cannot_reserve_staked_balance() { // Confirm account 11 has some free balance assert_eq!(Balances::free_balance(11), 1000); // Confirm account 11 (via controller 10) is totally staked - assert_eq!(Staking::stakers(&11).own, 1000); + assert_eq!(Staking::eras_stakers(Staking::active_era().unwrap().index, 11).own, 1000); // Confirm account 11 cannot transfer as a result assert_noop!( Balances::reserve(&11, 1), - DispatchError::Module { - index: 0, - error: 1, - message: Some("LiquidityRestrictions"), - } + BalancesError::::LiquidityRestrictions ); // Give account 11 extra free balance @@ -835,7 +827,7 @@ fn reward_destination_works() { // Rewards go to the correct destination as determined in Payee ExtBuilder::default().nominate(false).build().execute_with(|| { // Check that account 11 is a validator - assert!(Staking::current_elected().contains(&11)); + assert!(Session::validators().contains(&11)); // Check the balance of the validator account assert_eq!(Balances::free_balance(10), 1); // Check the balance of the stash account @@ -846,6 +838,7 @@ fn reward_destination_works() { total: 1000, active: 1000, unlocking: vec![], + last_reward: None, })); // Compute total payout now for whole duration as other parameter won't change @@ -854,6 +847,7 @@ fn reward_destination_works() { >::reward_by_ids(vec![(11, 1)]); start_era(1); + mock::make_all_reward_payment(0); // Check that RewardDestination is Staked (default) assert_eq!(Staking::payee(&11), RewardDestination::Staked); @@ -865,6 +859,7 @@ fn reward_destination_works() { total: 1000 + total_payout_0, active: 1000 + total_payout_0, unlocking: vec![], + last_reward: Some(0), })); //Change RewardDestination to Stash @@ -876,6 +871,7 @@ fn reward_destination_works() { >::reward_by_ids(vec![(11, 1)]); start_era(2); + mock::make_all_reward_payment(1); // Check that RewardDestination is Stash assert_eq!(Staking::payee(&11), RewardDestination::Stash); @@ -889,6 +885,7 @@ fn reward_destination_works() { total: 1000 + total_payout_0, active: 1000 + total_payout_0, unlocking: vec![], + last_reward: Some(1), })); // Change RewardDestination to Controller @@ -903,6 +900,7 @@ fn reward_destination_works() { >::reward_by_ids(vec![(11, 1)]); start_era(3); + mock::make_all_reward_payment(2); // Check that RewardDestination is Controller assert_eq!(Staking::payee(&11), RewardDestination::Controller); @@ -914,6 +912,7 @@ fn reward_destination_works() { total: 1000 + total_payout_0, active: 1000 + total_payout_0, unlocking: vec![], + last_reward: Some(2), })); // Check that amount in staked account is NOT increased. assert_eq!(Balances::free_balance(11), recorded_stash_balance); @@ -926,45 +925,39 @@ fn validator_payment_prefs_work() { // Note: unstake threshold is being directly tested in slashing tests. // This test will focus on validator payment. ExtBuilder::default().build().execute_with(|| { - // Initial config - let stash_initial_balance = Balances::total_balance(&11); - - // check the balance of a validator accounts. - assert_eq!(Balances::total_balance(&10), 1); - // check the balance of a validator's stash accounts. - assert_eq!(Balances::total_balance(&11), stash_initial_balance); - // and the nominator (to-be) - let _ = Balances::make_free_balance_be(&2, 500); - - // add a dummy nominator. - >::insert(&11, Exposure { - own: 500, // equal division indicates that the reward will be equally divided among validator and nominator. - total: 1000, - others: vec![IndividualExposure {who: 2, value: 500 }] - }); - >::insert(&2, RewardDestination::Stash); + let commission = Perbill::from_percent(40); >::insert(&11, ValidatorPrefs { - commission: Perbill::from_percent(50), + commission: commission.clone(), }); + // Reward controller so staked ratio doesn't change. + >::insert(&11, RewardDestination::Controller); + >::insert(&101, RewardDestination::Controller); + + start_era(1); + mock::make_all_reward_payment(0); + + let balance_era_1_10 = Balances::total_balance(&10); + let balance_era_1_100 = Balances::total_balance(&100); + // Compute total payout now for whole duration as other parameter won't change - let total_payout_0 = current_total_payout_for_duration(3000); - assert!(total_payout_0 > 100); // Test is meaningful if reward something + let total_payout_1 = current_total_payout_for_duration(3000); + assert!(total_payout_1 > 100); // Test is meaningful if reward something + let exposure_1 = Staking::eras_stakers(Staking::active_era().unwrap().index, 11); >::reward_by_ids(vec![(11, 1)]); - start_era(1); + start_era(2); + mock::make_all_reward_payment(1); - // whats left to be shared is the sum of 3 rounds minus the validator's cut. - let shared_cut = total_payout_0 / 2; - // Validator's payee is Staked account, 11, reward will be paid here. - assert_eq!(Balances::total_balance(&11), stash_initial_balance + shared_cut / 2 + shared_cut); - // Controller account will not get any reward. - assert_eq!(Balances::total_balance(&10), 1); - // Rest of the reward will be shared and paid to the nominator in stake. - assert_eq!(Balances::total_balance(&2), 500 + shared_cut / 2); + let taken_cut = commission * total_payout_1; + let shared_cut = total_payout_1 - taken_cut; + let reward_of_10 = shared_cut * exposure_1.own / exposure_1.total + taken_cut; + let reward_of_100 = shared_cut * exposure_1.others[0].value / exposure_1.total; + assert_eq_error_rate!(Balances::total_balance(&10), balance_era_1_10 + reward_of_10, 2); + assert_eq_error_rate!(Balances::total_balance(&100), balance_era_1_100 + reward_of_100, 2); - check_exposure_all(); - check_nominator_all(); + check_exposure_all(Staking::active_era().unwrap().index); + check_nominator_all(Staking::active_era().unwrap().index); }); } @@ -985,6 +978,7 @@ fn bond_extra_works() { total: 1000, active: 1000, unlocking: vec![], + last_reward: None, })); // Give account 11 some large free balance greater than total @@ -998,6 +992,7 @@ fn bond_extra_works() { total: 1000 + 100, active: 1000 + 100, unlocking: vec![], + last_reward: None, })); // Call the bond_extra function with a large number, should handle it @@ -1008,6 +1003,7 @@ fn bond_extra_works() { total: 1000000, active: 1000000, unlocking: vec![], + last_reward: None, })); }); } @@ -1027,7 +1023,7 @@ fn bond_extra_and_withdraw_unbonded_works() { let _ = Balances::make_free_balance_be(&11, 1000000); // Initial config should be correct - assert_eq!(Staking::current_era(), 0); + assert_eq!(Staking::active_era().unwrap().index, 0); assert_eq!(Session::current_index(), 0); // check the balance of a validator accounts. @@ -1042,8 +1038,9 @@ fn bond_extra_and_withdraw_unbonded_works() { total: 1000, active: 1000, unlocking: vec![], + last_reward: None, })); - assert_eq!(Staking::stakers(&11), Exposure { total: 1000, own: 1000, others: vec![] }); + assert_eq!(Staking::eras_stakers(Staking::active_era().unwrap().index, 11), Exposure { total: 1000, own: 1000, others: vec![] }); // deposit the extra 100 units Staking::bond_extra(Origin::signed(11), 100).unwrap(); @@ -1053,14 +1050,15 @@ fn bond_extra_and_withdraw_unbonded_works() { total: 1000 + 100, active: 1000 + 100, unlocking: vec![], + last_reward: None, })); // Exposure is a snapshot! only updated after the next era update. - assert_ne!(Staking::stakers(&11), Exposure { total: 1000 + 100, own: 1000 + 100, others: vec![] }); + assert_ne!(Staking::eras_stakers(Staking::active_era().unwrap().index, 11), Exposure { total: 1000 + 100, own: 1000 + 100, others: vec![] }); // trigger next era. Timestamp::set_timestamp(10); start_era(2); - assert_eq!(Staking::current_era(), 2); + assert_eq!(Staking::active_era().unwrap().index, 2); // ledger should be the same. assert_eq!(Staking::ledger(&10), Some(StakingLedger { @@ -1068,20 +1066,21 @@ fn bond_extra_and_withdraw_unbonded_works() { total: 1000 + 100, active: 1000 + 100, unlocking: vec![], + last_reward: None, })); // Exposure is now updated. - assert_eq!(Staking::stakers(&11), Exposure { total: 1000 + 100, own: 1000 + 100, others: vec![] }); + assert_eq!(Staking::eras_stakers(Staking::active_era().unwrap().index, 11), Exposure { total: 1000 + 100, own: 1000 + 100, others: vec![] }); // Unbond almost all of the funds in stash. Staking::unbond(Origin::signed(10), 1000).unwrap(); assert_eq!(Staking::ledger(&10), Some(StakingLedger { - stash: 11, total: 1000 + 100, active: 100, unlocking: vec![UnlockChunk{ value: 1000, era: 2 + 3}] }) + stash: 11, total: 1000 + 100, active: 100, unlocking: vec![UnlockChunk{ value: 1000, era: 2 + 3}], last_reward: None }) ); // Attempting to free the balances now will fail. 2 eras need to pass. Staking::withdraw_unbonded(Origin::signed(10)).unwrap(); assert_eq!(Staking::ledger(&10), Some(StakingLedger { - stash: 11, total: 1000 + 100, active: 100, unlocking: vec![UnlockChunk{ value: 1000, era: 2 + 3}] })); + stash: 11, total: 1000 + 100, active: 100, unlocking: vec![UnlockChunk{ value: 1000, era: 2 + 3}], last_reward: None })); // trigger next era. start_era(3); @@ -1089,7 +1088,7 @@ fn bond_extra_and_withdraw_unbonded_works() { // nothing yet Staking::withdraw_unbonded(Origin::signed(10)).unwrap(); assert_eq!(Staking::ledger(&10), Some(StakingLedger { - stash: 11, total: 1000 + 100, active: 100, unlocking: vec![UnlockChunk{ value: 1000, era: 2 + 3}] })); + stash: 11, total: 1000 + 100, active: 100, unlocking: vec![UnlockChunk{ value: 1000, era: 2 + 3}], last_reward: None })); // trigger next era. start_era(5); @@ -1097,7 +1096,7 @@ fn bond_extra_and_withdraw_unbonded_works() { Staking::withdraw_unbonded(Origin::signed(10)).unwrap(); // Now the value is free and the staking ledger is updated. assert_eq!(Staking::ledger(&10), Some(StakingLedger { - stash: 11, total: 100, active: 100, unlocking: vec![] })); + stash: 11, total: 100, active: 100, unlocking: vec![], last_reward: None })); }) } @@ -1158,11 +1157,12 @@ fn rebond_works() { total: 1000, active: 1000, unlocking: vec![], + last_reward: None, }) ); start_era(2); - assert_eq!(Staking::current_era(), 2); + assert_eq!(Staking::active_era().unwrap().index, 2); // Try to rebond some funds. We get an error since no fund is unbonded. assert_noop!( @@ -1180,8 +1180,9 @@ fn rebond_works() { active: 100, unlocking: vec![UnlockChunk { value: 900, - era: 2 + 3 - },] + era: 2 + 3, + }], + last_reward: None, }) ); @@ -1194,6 +1195,7 @@ fn rebond_works() { total: 1000, active: 1000, unlocking: vec![], + last_reward: None, }) ); @@ -1206,6 +1208,7 @@ fn rebond_works() { total: 1000, active: 100, unlocking: vec![UnlockChunk { value: 900, era: 5 }], + last_reward: None, }) ); @@ -1218,6 +1221,7 @@ fn rebond_works() { total: 1000, active: 600, unlocking: vec![UnlockChunk { value: 400, era: 5 }], + last_reward: None, }) ); @@ -1229,7 +1233,8 @@ fn rebond_works() { stash: 11, total: 1000, active: 1000, - unlocking: vec![] + unlocking: vec![], + last_reward: None, }) ); @@ -1247,7 +1252,8 @@ fn rebond_works() { UnlockChunk { value: 300, era: 5 }, UnlockChunk { value: 300, era: 5 }, UnlockChunk { value: 300, era: 5 }, - ] + ], + last_reward: None, }) ); @@ -1262,7 +1268,8 @@ fn rebond_works() { unlocking: vec![ UnlockChunk { value: 300, era: 5 }, UnlockChunk { value: 100, era: 5 }, - ] + ], + last_reward: None, }) ); }) @@ -1295,6 +1302,7 @@ fn rebond_is_fifo() { total: 1000, active: 1000, unlocking: vec![], + last_reward: None, }) ); @@ -1310,7 +1318,8 @@ fn rebond_is_fifo() { active: 600, unlocking: vec![ UnlockChunk { value: 400, era: 2 + 3 }, - ] + ], + last_reward: None, }) ); @@ -1327,7 +1336,8 @@ fn rebond_is_fifo() { unlocking: vec![ UnlockChunk { value: 400, era: 2 + 3 }, UnlockChunk { value: 300, era: 3 + 3 }, - ] + ], + last_reward: None, }) ); @@ -1345,7 +1355,8 @@ fn rebond_is_fifo() { UnlockChunk { value: 400, era: 2 + 3 }, UnlockChunk { value: 300, era: 3 + 3 }, UnlockChunk { value: 200, era: 4 + 3 }, - ] + ], + last_reward: None, }) ); @@ -1360,36 +1371,34 @@ fn rebond_is_fifo() { unlocking: vec![ UnlockChunk { value: 400, era: 2 + 3 }, UnlockChunk { value: 100, era: 3 + 3 }, - ] + ], + last_reward: None, }) ); }) } #[test] -fn slot_stake_is_least_staked_validator_and_exposure_defines_maximum_punishment() { - // Test that slot_stake is determined by the least staked validator - // Test that slot_stake is the maximum punishment that can happen to a validator +fn reward_to_stake_works() { ExtBuilder::default().nominate(false).fair(false).build().execute_with(|| { // Confirm validator count is 2 assert_eq!(Staking::validator_count(), 2); // Confirm account 10 and 20 are validators assert!(>::contains_key(&11) && >::contains_key(&21)); - assert_eq!(Staking::stakers(&11).total, 1000); - assert_eq!(Staking::stakers(&21).total, 2000); + assert_eq!(Staking::eras_stakers(Staking::active_era().unwrap().index, 11).total, 1000); + assert_eq!(Staking::eras_stakers(Staking::active_era().unwrap().index, 21).total, 2000); // Give the man some money. let _ = Balances::make_free_balance_be(&10, 1000); let _ = Balances::make_free_balance_be(&20, 1000); - // We confirm initialized slot_stake is this value - assert_eq!(Staking::slot_stake(), Staking::stakers(&11).total); + // Bypass logic and change current exposure + ErasStakers::::insert(0, 21, Exposure { total: 69, own: 69, others: vec![] }); // Now lets lower account 20 stake - >::insert(&21, Exposure { total: 69, own: 69, others: vec![] }); - assert_eq!(Staking::stakers(&21).total, 69); - >::insert(&20, StakingLedger { stash: 22, total: 69, active: 69, unlocking: vec![] }); + assert_eq!(Staking::eras_stakers(Staking::active_era().unwrap().index, 21).total, 69); + >::insert(&20, StakingLedger { stash: 21, total: 69, active: 69, unlocking: vec![], last_reward: None }); // Compute total payout now for whole duration as other parameter won't change let total_payout_0 = current_total_payout_for_duration(3000); @@ -1399,19 +1408,23 @@ fn slot_stake_is_least_staked_validator_and_exposure_defines_maximum_punishment( // New era --> rewards are paid --> stakes are changed start_era(1); + mock::make_all_reward_payment(0); - // -- new balances + reward - assert_eq!(Staking::stakers(&11).total, 1000 + total_payout_0 / 2); - assert_eq!(Staking::stakers(&21).total, 69 + total_payout_0 / 2); + assert_eq!(Staking::eras_stakers(Staking::active_era().unwrap().index, 11).total, 1000); + assert_eq!(Staking::eras_stakers(Staking::active_era().unwrap().index, 21).total, 69); let _11_balance = Balances::free_balance(&11); assert_eq!(_11_balance, 1000 + total_payout_0 / 2); - // -- slot stake should also be updated. - assert_eq!(Staking::slot_stake(), 69 + total_payout_0 / 2); + // Trigger another new era as the info are frozen before the era start. + start_era(2); + + // -- new infos + assert_eq!(Staking::eras_stakers(Staking::active_era().unwrap().index, 11).total, 1000 + total_payout_0 / 2); + assert_eq!(Staking::eras_stakers(Staking::active_era().unwrap().index, 21).total, 69 + total_payout_0 / 2); - check_exposure_all(); - check_nominator_all(); + check_exposure_all(Staking::active_era().unwrap().index); + check_nominator_all(Staking::active_era().unwrap().index); }); } @@ -1529,8 +1542,6 @@ fn on_free_balance_zero_stash_removes_nominator() { fn switching_roles() { // Test that it should be possible to switch between roles (nominator, validator, idle) with minimal overhead. ExtBuilder::default().nominate(false).build().execute_with(|| { - Timestamp::set_timestamp(1); // Initialize time. - // Reset reward destination for i in &[10, 20] { assert_ok!(Staking::set_payee(Origin::signed(*i), RewardDestination::Controller)); } @@ -1550,20 +1561,7 @@ fn switching_roles() { assert_ok!(Staking::bond(Origin::signed(5), 6, 1000, RewardDestination::Controller)); assert_ok!(Staking::validate(Origin::signed(6), ValidatorPrefs::default())); - // new block - start_session(1); - - // no change - assert_eq_uvec!(validator_controllers(), vec![20, 10]); - - // new block - start_session(2); - - // no change - assert_eq_uvec!(validator_controllers(), vec![20, 10]); - - // new block --> ne era --> new validators - start_session(3); + start_era(1); // with current nominators 10 and 5 have the most stake assert_eq_uvec!(validator_controllers(), vec![6, 10]); @@ -1577,18 +1575,12 @@ fn switching_roles() { // 2 : 2000 self vote + 250 vote. // Winners: 20 and 2 - start_session(4); - assert_eq_uvec!(validator_controllers(), vec![6, 10]); - - start_session(5); - assert_eq_uvec!(validator_controllers(), vec![6, 10]); + start_era(2); - // ne era - start_session(6); assert_eq_uvec!(validator_controllers(), vec![2, 20]); - check_exposure_all(); - check_nominator_all(); + check_exposure_all(Staking::active_era().unwrap().index); + check_nominator_all(Staking::active_era().unwrap().index); }); } @@ -1632,6 +1624,7 @@ fn bond_with_no_staked_value() { ); // bonded with absolute minimum value possible. assert_ok!(Staking::bond(Origin::signed(1), 2, 5, RewardDestination::Controller)); + let current_era_at_bond = Staking::current_era(); assert_eq!(Balances::locks(&1)[0].amount, 5); // unbonding even 1 will cause all to be unbonded. @@ -1642,7 +1635,8 @@ fn bond_with_no_staked_value() { stash: 1, active: 0, total: 5, - unlocking: vec![UnlockChunk {value: 5, era: 3}] + unlocking: vec![UnlockChunk {value: 5, era: 3}], + last_reward: current_era_at_bond, }) ); @@ -1664,7 +1658,7 @@ fn bond_with_no_staked_value() { } #[test] -fn bond_with_little_staked_value_bounded_by_slot_stake() { +fn bond_with_little_staked_value_bounded() { // Behavior when someone bonds with little staked value. // Particularly when she votes and the candidate is elected. ExtBuilder::default() @@ -1683,36 +1677,40 @@ fn bond_with_little_staked_value_bounded_by_slot_stake() { assert_ok!(Staking::bond(Origin::signed(1), 2, 1, RewardDestination::Controller)); assert_ok!(Staking::validate(Origin::signed(2), ValidatorPrefs::default())); + // reward era 0 let total_payout_0 = current_total_payout_for_duration(3000); assert!(total_payout_0 > 100); // Test is meaningful if reward something reward_all_elected(); start_era(1); + mock::make_all_reward_payment(0); // 2 is elected. - // and fucks up the slot stake. assert_eq_uvec!(validator_controllers(), vec![20, 10, 2]); - assert_eq!(Staking::slot_stake(), 1); + // And has minimal stake + assert_eq!(Staking::eras_stakers(Staking::active_era().unwrap().index, 2).total, 0); // Old ones are rewarded. assert_eq!(Balances::free_balance(10), init_balance_10 + total_payout_0 / 3); // no rewards paid to 2. This was initial election. assert_eq!(Balances::free_balance(2), init_balance_2); + // reward era 1 let total_payout_1 = current_total_payout_for_duration(3000); assert!(total_payout_1 > 100); // Test is meaningful if reward something reward_all_elected(); start_era(2); + mock::make_all_reward_payment(1); assert_eq_uvec!(validator_controllers(), vec![20, 10, 2]); - assert_eq!(Staking::slot_stake(), 1); + assert_eq!(Staking::eras_stakers(Staking::active_era().unwrap().index, 2).total, 0); assert_eq!(Balances::free_balance(2), init_balance_2 + total_payout_1 / 3); assert_eq!( Balances::free_balance(&10), init_balance_10 + total_payout_0 / 3 + total_payout_1 / 3, ); - check_exposure_all(); - check_nominator_all(); + check_exposure_all(Staking::active_era().unwrap().index); + check_nominator_all(Staking::active_era().unwrap().index); }); } @@ -1732,8 +1730,8 @@ fn new_era_elects_correct_number_of_validators() { Session::on_initialize(System::block_number()); assert_eq!(validator_controllers().len(), 1); - check_exposure_all(); - check_nominator_all(); + check_exposure_all(Staking::active_era().unwrap().index); + check_nominator_all(Staking::active_era().unwrap().index); }) } @@ -1755,8 +1753,8 @@ fn phragmen_should_not_overflow_validators() { // This test will fail this. Will saturate. // check_exposure_all(); - assert_eq!(Staking::stakers(3).total, u64::max_value()); - assert_eq!(Staking::stakers(5).total, u64::max_value()); + assert_eq!(Staking::eras_stakers(Staking::active_era().unwrap().index, 3).total, u64::max_value()); + assert_eq!(Staking::eras_stakers(Staking::active_era().unwrap().index, 5).total, u64::max_value()); }) } @@ -1777,8 +1775,8 @@ fn phragmen_should_not_overflow_nominators() { assert_eq_uvec!(validator_controllers(), vec![4, 2]); // Saturate. - assert_eq!(Staking::stakers(3).total, u64::max_value()); - assert_eq!(Staking::stakers(5).total, u64::max_value()); + assert_eq!(Staking::eras_stakers(Staking::active_era().unwrap().index, 3).total, u64::max_value()); + assert_eq!(Staking::eras_stakers(Staking::active_era().unwrap().index, 5).total, u64::max_value()); }) } @@ -1796,8 +1794,8 @@ fn phragmen_should_not_overflow_ultimate() { assert_eq_uvec!(validator_controllers(), vec![4, 2]); // Saturate. - assert_eq!(Staking::stakers(3).total, u64::max_value()); - assert_eq!(Staking::stakers(5).total, u64::max_value()); + assert_eq!(Staking::eras_stakers(Staking::active_era().unwrap().index, 3).total, u64::max_value()); + assert_eq!(Staking::eras_stakers(Staking::active_era().unwrap().index, 5).total, u64::max_value()); }) } @@ -1812,10 +1810,19 @@ fn reward_validator_slashing_validator_doesnt_overflow() { // Set staker let _ = Balances::make_free_balance_be(&11, stake); - >::insert(&11, Exposure { total: stake, own: stake, others: vec![] }); + + let exposure = Exposure:: { total: stake, own: stake, others: vec![] }; + let reward = EraRewardPoints:: { + total: 1, + individual: vec![(11, 1)].into_iter().collect(), + }; // Check reward - let _ = Staking::reward_validator(&11, reward_slash); + ErasRewardPoints::::insert(0, reward); + ErasStakers::::insert(0, 11, &exposure); + ErasStakersClipped::::insert(0, 11, exposure); + ErasValidatorReward::::insert(0, stake); + assert_ok!(Staking::payout_validator(Origin::signed(10), 0)); assert_eq!(Balances::total_balance(&11), stake * 2); // Set staker @@ -1825,16 +1832,18 @@ fn reward_validator_slashing_validator_doesnt_overflow() { // only slashes out of bonded stake are applied. without this line, // it is 0. Staking::bond(Origin::signed(2), 20000, stake - 1, RewardDestination::default()).unwrap(); - >::insert(&11, Exposure { total: stake, own: 1, others: vec![ - IndividualExposure { who: 2, value: stake - 1 } - ]}); - + // Override exposure of 11 + ErasStakers::::insert(0, 11, Exposure { + total: stake, + own: 1, + others: vec![ IndividualExposure { who: 2, value: stake - 1 }] + }); // Check slashing on_offence_now( &[ OffenceDetails { - offender: (11, Staking::stakers(&11)), + offender: (11, Staking::eras_stakers(Staking::active_era().unwrap().index, 11)), reporters: vec![], }, ], @@ -1855,45 +1864,49 @@ fn reward_from_authorship_event_handler_works() { >::note_author(11); >::note_uncle(21, 1); - // An uncle author that is not currently elected doesn't get rewards, - // but the block producer does get reward for referencing it. - >::note_uncle(31, 1); // Rewarding the same two times works. >::note_uncle(11, 1); // Not mandatory but must be coherent with rewards - assert_eq!(>::get(), vec![21, 11]); + assert_eq_uvec!(Session::validators(), vec![11, 21]); // 21 is rewarded as an uncle producer // 11 is rewarded as a block producer and uncle referencer and uncle producer - assert_eq!(CurrentEraPointsEarned::get().individual, vec![1, 20 + 2 * 3 + 1]); - assert_eq!(CurrentEraPointsEarned::get().total, 28); + assert_eq!( + ErasRewardPoints::::get(Staking::active_era().unwrap().index), + EraRewardPoints { + individual: vec![(11, 20 + 2 * 2 + 1), (21, 1)].into_iter().collect(), + total: 26, + }, + ); }) } #[test] fn add_reward_points_fns_works() { ExtBuilder::default().build().execute_with(|| { - let validators = >::current_elected(); // Not mandatory but must be coherent with rewards - assert_eq!(validators, vec![21, 11]); + assert_eq!(Session::validators(), vec![21, 11]); - >::reward_by_indices(vec![ - (0, 1), - (1, 1), - (2, 1), - (1, 1), + >::reward_by_ids(vec![ + (21, 1), + (11, 1), + (11, 1), ]); >::reward_by_ids(vec![ (21, 1), (11, 1), - (31, 1), (11, 1), ]); - assert_eq!(CurrentEraPointsEarned::get().individual, vec![2, 4]); - assert_eq!(CurrentEraPointsEarned::get().total, 6); + assert_eq!( + ErasRewardPoints::::get(Staking::active_era().unwrap().index), + EraRewardPoints { + individual: vec![(11, 4), (21, 2)].into_iter().collect(), + total: 6, + }, + ); }) } @@ -1916,19 +1929,20 @@ fn era_is_always_same_length() { // session changes. ExtBuilder::default().build().execute_with(|| { start_era(1); - assert_eq!(Staking::current_era_start_session_index(), SessionsPerEra::get()); + assert_eq!(Staking::eras_start_session_index(Staking::active_era().unwrap().index).unwrap(), SessionsPerEra::get()); start_era(2); - assert_eq!(Staking::current_era_start_session_index(), SessionsPerEra::get() * 2); + assert_eq!(Staking::eras_start_session_index(Staking::active_era().unwrap().index).unwrap(), SessionsPerEra::get() * 2); let session = Session::current_index(); ForceEra::put(Forcing::ForceNew); advance_session(); - assert_eq!(Staking::current_era(), 3); - assert_eq!(Staking::current_era_start_session_index(), session + 1); + advance_session(); + assert_eq!(Staking::active_era().unwrap().index, 3); + assert_eq!(Staking::eras_start_session_index(Staking::active_era().unwrap().index).unwrap(), session + 2); start_era(4); - assert_eq!(Staking::current_era_start_session_index(), session + SessionsPerEra::get() + 1); + assert_eq!(Staking::eras_start_session_index(Staking::active_era().unwrap().index).unwrap(), session + 2 + SessionsPerEra::get()); }); } @@ -1939,7 +1953,7 @@ fn offence_forces_new_era() { &[OffenceDetails { offender: ( 11, - Staking::stakers(&11), + Staking::eras_stakers(Staking::active_era().unwrap().index, 11), ), reporters: vec![], }], @@ -1959,7 +1973,7 @@ fn offence_ensures_new_era_without_clobbering() { &[OffenceDetails { offender: ( 11, - Staking::stakers(&11), + Staking::eras_stakers(Staking::active_era().unwrap().index, 11), ), reporters: vec![], }], @@ -1973,12 +1987,13 @@ fn offence_ensures_new_era_without_clobbering() { #[test] fn offence_deselects_validator_when_slash_is_zero() { ExtBuilder::default().build().execute_with(|| { + assert!(Session::validators().contains(&11)); assert!(>::contains_key(11)); on_offence_now( &[OffenceDetails { offender: ( 11, - Staking::stakers(&11), + Staking::eras_stakers(Staking::active_era().unwrap().index, 11), ), reporters: vec![], }], @@ -1986,6 +2001,9 @@ fn offence_deselects_validator_when_slash_is_zero() { ); assert_eq!(Staking::force_era(), Forcing::ForceNew); assert!(!>::contains_key(11)); + start_era(1); + assert!(!Session::validators().contains(&11)); + assert!(!>::contains_key(11)); }); } @@ -1994,7 +2012,7 @@ fn slashing_performed_according_exposure() { // This test checks that slashing is performed according the exposure (or more precisely, // historical exposure), not the current balance. ExtBuilder::default().build().execute_with(|| { - assert_eq!(Staking::stakers(&11).own, 1000); + assert_eq!(Staking::eras_stakers(Staking::active_era().unwrap().index, 11).own, 1000); // Handle an offence with a historical exposure. on_offence_now( @@ -2023,11 +2041,12 @@ fn slash_in_old_span_does_not_deselect() { start_era(1); assert!(>::contains_key(11)); + assert!(Session::validators().contains(&11)); on_offence_now( &[OffenceDetails { offender: ( 11, - Staking::stakers(&11), + Staking::eras_stakers(Staking::active_era().unwrap().index, 11), ), reporters: vec![], }], @@ -2041,6 +2060,7 @@ fn slash_in_old_span_does_not_deselect() { Staking::validate(Origin::signed(10), Default::default()).unwrap(); assert_eq!(Staking::force_era(), Forcing::NotForcing); assert!(>::contains_key(11)); + assert!(!Session::validators().contains(&11)); start_era(3); @@ -2051,7 +2071,7 @@ fn slash_in_old_span_does_not_deselect() { &[OffenceDetails { offender: ( 11, - Staking::stakers(&11), + Staking::eras_stakers(Staking::active_era().unwrap().index, 11), ), reporters: vec![], }], @@ -2062,12 +2082,13 @@ fn slash_in_old_span_does_not_deselect() { // not for zero-slash. assert_eq!(Staking::force_era(), Forcing::NotForcing); assert!(>::contains_key(11)); + assert!(Session::validators().contains(&11)); on_offence_in_era( &[OffenceDetails { offender: ( 11, - Staking::stakers(&11), + Staking::eras_stakers(Staking::active_era().unwrap().index, 11), ), reporters: vec![], }], @@ -2079,6 +2100,7 @@ fn slash_in_old_span_does_not_deselect() { // or non-zero. assert_eq!(Staking::force_era(), Forcing::NotForcing); assert!(>::contains_key(11)); + assert!(Session::validators().contains(&11)); assert_ledger_consistent(11); }); } @@ -2091,13 +2113,13 @@ fn reporters_receive_their_slice() { // The reporters' reward is calculated from the total exposure. let initial_balance = 1125; - assert_eq!(Staking::stakers(&11).total, initial_balance); + assert_eq!(Staking::eras_stakers(Staking::active_era().unwrap().index, 11).total, initial_balance); on_offence_now( &[OffenceDetails { offender: ( 11, - Staking::stakers(&11), + Staking::eras_stakers(Staking::active_era().unwrap().index, 11), ), reporters: vec![1, 2], }], @@ -2122,13 +2144,13 @@ fn subsequent_reports_in_same_span_pay_out_less() { // The reporters' reward is calculated from the total exposure. let initial_balance = 1125; - assert_eq!(Staking::stakers(&11).total, initial_balance); + assert_eq!(Staking::eras_stakers(Staking::active_era().unwrap().index, 11).total, initial_balance); on_offence_now( &[OffenceDetails { offender: ( 11, - Staking::stakers(&11), + Staking::eras_stakers(Staking::active_era().unwrap().index, 11), ), reporters: vec![1], }], @@ -2144,7 +2166,7 @@ fn subsequent_reports_in_same_span_pay_out_less() { &[OffenceDetails { offender: ( 11, - Staking::stakers(&11), + Staking::eras_stakers(Staking::active_era().unwrap().index, 11), ), reporters: vec![1], }], @@ -2168,7 +2190,7 @@ fn invulnerables_are_not_slashed() { assert_eq!(Balances::free_balance(11), 1000); assert_eq!(Balances::free_balance(21), 2000); - let exposure = Staking::stakers(&21); + let exposure = Staking::eras_stakers(Staking::active_era().unwrap().index, 21); let initial_balance = Staking::slashable_balance_of(&21); let nominator_balances: Vec<_> = exposure.others @@ -2177,11 +2199,11 @@ fn invulnerables_are_not_slashed() { on_offence_now( &[ OffenceDetails { - offender: (11, Staking::stakers(&11)), + offender: (11, Staking::eras_stakers(Staking::active_era().unwrap().index, 11)), reporters: vec![], }, OffenceDetails { - offender: (21, Staking::stakers(&21)), + offender: (21, Staking::eras_stakers(Staking::active_era().unwrap().index, 21)), reporters: vec![], }, ], @@ -2215,7 +2237,7 @@ fn dont_slash_if_fraction_is_zero() { &[OffenceDetails { offender: ( 11, - Staking::stakers(&11), + Staking::eras_stakers(Staking::active_era().unwrap().index, 11), ), reporters: vec![], }], @@ -2236,7 +2258,7 @@ fn only_slash_for_max_in_era() { on_offence_now( &[ OffenceDetails { - offender: (11, Staking::stakers(&11)), + offender: (11, Staking::eras_stakers(Staking::active_era().unwrap().index, 11)), reporters: vec![], }, ], @@ -2250,7 +2272,7 @@ fn only_slash_for_max_in_era() { on_offence_now( &[ OffenceDetails { - offender: (11, Staking::stakers(&11)), + offender: (11, Staking::eras_stakers(Staking::active_era().unwrap().index, 11)), reporters: vec![], }, ], @@ -2263,7 +2285,7 @@ fn only_slash_for_max_in_era() { on_offence_now( &[ OffenceDetails { - offender: (11, Staking::stakers(&11)), + offender: (11, Staking::eras_stakers(Staking::active_era().unwrap().index, 11)), reporters: vec![], }, ], @@ -2284,7 +2306,7 @@ fn garbage_collection_after_slashing() { on_offence_now( &[ OffenceDetails { - offender: (11, Staking::stakers(&11)), + offender: (11, Staking::eras_stakers(Staking::active_era().unwrap().index, 11)), reporters: vec![], }, ], @@ -2298,7 +2320,7 @@ fn garbage_collection_after_slashing() { on_offence_now( &[ OffenceDetails { - offender: (11, Staking::stakers(&11)), + offender: (11, Staking::eras_stakers(Staking::active_era().unwrap().index, 11)), reporters: vec![], }, ], @@ -2325,21 +2347,21 @@ fn garbage_collection_on_window_pruning() { assert_eq!(Balances::free_balance(11), 1000); - let exposure = Staking::stakers(&11); + let exposure = Staking::eras_stakers(Staking::active_era().unwrap().index, 11); assert_eq!(Balances::free_balance(101), 2000); let nominated_value = exposure.others.iter().find(|o| o.who == 101).unwrap().value; on_offence_now( &[ OffenceDetails { - offender: (11, Staking::stakers(&11)), + offender: (11, Staking::eras_stakers(Staking::active_era().unwrap().index, 11)), reporters: vec![], }, ], &[Perbill::from_percent(10)], ); - let now = Staking::current_era(); + let now = Staking::active_era().unwrap().index; assert_eq!(Balances::free_balance(11), 900); assert_eq!(Balances::free_balance(101), 2000 - (nominated_value / 10)); @@ -2373,8 +2395,8 @@ fn slashing_nominators_by_span_max() { assert_eq!(Staking::slashable_balance_of(&21), 1000); - let exposure_11 = Staking::stakers(&11); - let exposure_21 = Staking::stakers(&21); + let exposure_11 = Staking::eras_stakers(Staking::active_era().unwrap().index, 11); + let exposure_21 = Staking::eras_stakers(Staking::active_era().unwrap().index, 21); assert_eq!(Balances::free_balance(101), 2000); let nominated_value_11 = exposure_11.others.iter().find(|o| o.who == 101).unwrap().value; let nominated_value_21 = exposure_21.others.iter().find(|o| o.who == 101).unwrap().value; @@ -2382,7 +2404,7 @@ fn slashing_nominators_by_span_max() { on_offence_in_era( &[ OffenceDetails { - offender: (11, Staking::stakers(&11)), + offender: (11, Staking::eras_stakers(Staking::active_era().unwrap().index, 11)), reporters: vec![], }, ], @@ -2416,7 +2438,7 @@ fn slashing_nominators_by_span_max() { on_offence_in_era( &[ OffenceDetails { - offender: (21, Staking::stakers(&21)), + offender: (21, Staking::eras_stakers(Staking::active_era().unwrap().index, 21)), reporters: vec![], }, ], @@ -2439,7 +2461,7 @@ fn slashing_nominators_by_span_max() { on_offence_in_era( &[ OffenceDetails { - offender: (11, Staking::stakers(&11)), + offender: (11, Staking::eras_stakers(Staking::active_era().unwrap().index, 11)), reporters: vec![], }, ], @@ -2475,7 +2497,7 @@ fn slashes_are_summed_across_spans() { on_offence_now( &[ OffenceDetails { - offender: (21, Staking::stakers(&21)), + offender: (21, Staking::eras_stakers(Staking::active_era().unwrap().index, 21)), reporters: vec![], }, ], @@ -2500,7 +2522,7 @@ fn slashes_are_summed_across_spans() { on_offence_now( &[ OffenceDetails { - offender: (21, Staking::stakers(&21)), + offender: (21, Staking::eras_stakers(Staking::active_era().unwrap().index, 21)), reporters: vec![], }, ], @@ -2525,14 +2547,14 @@ fn deferred_slashes_are_deferred() { assert_eq!(Balances::free_balance(11), 1000); - let exposure = Staking::stakers(&11); + let exposure = Staking::eras_stakers(Staking::active_era().unwrap().index, 11); assert_eq!(Balances::free_balance(101), 2000); let nominated_value = exposure.others.iter().find(|o| o.who == 101).unwrap().value; on_offence_now( &[ OffenceDetails { - offender: (11, Staking::stakers(&11)), + offender: (11, Staking::eras_stakers(Staking::active_era().unwrap().index, 11)), reporters: vec![], }, ], @@ -2568,7 +2590,7 @@ fn remove_deferred() { assert_eq!(Balances::free_balance(11), 1000); - let exposure = Staking::stakers(&11); + let exposure = Staking::eras_stakers(Staking::active_era().unwrap().index, 11); assert_eq!(Balances::free_balance(101), 2000); let nominated_value = exposure.others.iter().find(|o| o.who == 101).unwrap().value; @@ -2638,7 +2660,7 @@ fn remove_multi_deferred() { assert_eq!(Balances::free_balance(11), 1000); - let exposure = Staking::stakers(&11); + let exposure = Staking::eras_stakers(Staking::active_era().unwrap().index, 11); assert_eq!(Balances::free_balance(101), 2000); on_offence_now( @@ -2654,7 +2676,7 @@ fn remove_multi_deferred() { on_offence_now( &[ OffenceDetails { - offender: (21, Staking::stakers(&21)), + offender: (21, Staking::eras_stakers(Staking::active_era().unwrap().index, 21)), reporters: vec![], } ], @@ -2687,7 +2709,7 @@ fn slash_kicks_validators_not_nominators() { assert_eq!(Balances::free_balance(11), 1000); - let exposure = Staking::stakers(&11); + let exposure = Staking::eras_stakers(Staking::active_era().unwrap().index, 11); assert_eq!(Balances::free_balance(101), 2000); let nominated_value = exposure.others.iter().find(|o| o.who == 101).unwrap().value; @@ -2719,6 +2741,199 @@ fn slash_kicks_validators_not_nominators() { }); } +#[test] +fn claim_reward_at_the_last_era_and_no_double_claim_and_invalid_claim() { + // should check that: + // * rewards get paid until history_depth for both validators and nominators + // * an invalid era to claim doesn't update last_reward + // * double claim of one era fails + ExtBuilder::default().nominate(true).build().execute_with(|| { + let init_balance_10 = Balances::total_balance(&10); + let init_balance_100 = Balances::total_balance(&100); + + let part_for_10 = Perbill::from_rational_approximation::(1000, 1125); + let part_for_100 = Perbill::from_rational_approximation::(125, 1125); + + // Check state + Payee::::insert(11, RewardDestination::Controller); + Payee::::insert(101, RewardDestination::Controller); + + >::reward_by_ids(vec![(11, 1)]); + // Compute total payout now for whole duration as other parameter won't change + let total_payout_0 = current_total_payout_for_duration(3000); + assert!(total_payout_0 > 10); // Test is meaningful if reward something + + start_era(1); + + >::reward_by_ids(vec![(11, 1)]); + // Change total issuance in order to modify total payout + let _ = Balances::deposit_creating(&999, 1_000_000_000); + // Compute total payout now for whole duration as other parameter won't change + let total_payout_1 = current_total_payout_for_duration(3000); + assert!(total_payout_1 > 10); // Test is meaningful if reward something + assert!(total_payout_1 != total_payout_0); + + start_era(2); + + >::reward_by_ids(vec![(11, 1)]); + // Change total issuance in order to modify total payout + let _ = Balances::deposit_creating(&999, 1_000_000_000); + // Compute total payout now for whole duration as other parameter won't change + let total_payout_2 = current_total_payout_for_duration(3000); + assert!(total_payout_2 > 10); // Test is meaningful if reward something + assert!(total_payout_2 != total_payout_0); + assert!(total_payout_2 != total_payout_1); + + start_era(Staking::history_depth() + 1); + + let active_era = Staking::active_era().unwrap().index; + + // This is the latest planned era in staking, not the active era + let current_era = Staking::current_era().unwrap(); + + // Last kept is 1: + assert!(current_era - Staking::history_depth() == 1); + assert_noop!( + Staking::payout_validator(Origin::signed(10), 0), + // Fail: Era out of history + Error::::InvalidEraToReward + ); + assert_ok!(Staking::payout_validator(Origin::signed(10), 1)); + assert_ok!(Staking::payout_validator(Origin::signed(10), 2)); + assert_noop!( + Staking::payout_validator(Origin::signed(10), 2), + // Fail: Double claim + Error::::InvalidEraToReward + ); + assert_noop!( + Staking::payout_validator(Origin::signed(10), active_era), + // Fail: Era not finished yet + Error::::InvalidEraToReward + ); + + assert_noop!( + Staking::payout_nominator(Origin::signed(100), 0, vec![(11, 0)]), + // Fail: Era out of history + Error::::InvalidEraToReward + ); + assert_ok!(Staking::payout_nominator(Origin::signed(100), 1, vec![(11, 0)])); + assert_ok!(Staking::payout_nominator(Origin::signed(100), 2, vec![(11, 0)])); + assert_noop!( + Staking::payout_nominator(Origin::signed(100), 2, vec![(11, 0)]), + // Fail: Double claim + Error::::InvalidEraToReward + ); + assert_noop!( + Staking::payout_nominator(Origin::signed(100), active_era, vec![(11, 0)]), + // Fail: Era not finished yet + Error::::InvalidEraToReward + ); + + // Era 0 can't be rewarded anymore and current era can't be rewarded yet + // only era 1 and 2 can be rewarded. + + assert_eq!( + Balances::total_balance(&10), + init_balance_10 + part_for_10 * (total_payout_1 + total_payout_2), + ); + assert_eq!( + Balances::total_balance(&100), + init_balance_100 + part_for_100 * (total_payout_1 + total_payout_2), + ); + }); +} + +#[test] +fn upgrade_works() { + ExtBuilder::default().build().execute_with(|| { + start_era(3); + + assert_eq!(Session::validators(), vec![21, 11]); + + // Insert fake data to check the migration + put_storage_value::>(b"Staking", b"CurrentElected", b"", vec![21, 31]); + put_storage_value::(b"Staking", b"CurrentEraStartSessionIndex", b"", 5); + put_storage_value::>(b"Staking", b"CurrentEraStart", b"", 777); + put_storage_value( + b"Staking", b"Stakers", &blake2_256(&11u64.encode()), + Exposure:: { + total: 10, + own: 10, + others: vec![], + } + ); + put_storage_value( + b"Staking", b"Stakers", &blake2_256(&21u64.encode()), + Exposure:: { + total: 20, + own: 20, + others: vec![], + } + ); + put_storage_value( + b"Staking", b"Stakers", &blake2_256(&31u64.encode()), + Exposure:: { + total: 30, + own: 30, + others: vec![], + } + ); + put_storage_value::<(u32, Vec)>(b"Staking", b"CurrentEraPointsEarned", b"", (12, vec![2, 10])); + ::ErasStakers::remove_all(); + ::ErasStakersClipped::remove_all(); + + ::IsUpgraded::put(false); + + // Perform upgrade + Staking::ensure_storage_upgraded(); + + assert_eq!(::IsUpgraded::get(), true); + + // Check migration + assert_eq!(::ErasStartSessionIndex::get(3).unwrap(), 5); + assert_eq!(::ErasRewardPoints::get(3), EraRewardPoints { + total: 12, + individual: vec![(21, 2), (31, 10)].into_iter().collect(), + }); + assert_eq!(::ActiveEra::get().unwrap().index, 3); + assert_eq!(::ActiveEra::get().unwrap().start, Some(777)); + assert_eq!(::CurrentEra::get().unwrap(), 3); + assert_eq!(::ErasStakers::get(3, 11), Exposure { + total: 0, + own: 0, + others: vec![], + }); + assert_eq!(::ErasStakers::get(3, 21), Exposure { + total: 20, + own: 20, + others: vec![], + }); + assert_eq!(::ErasStakers::get(3, 31), Exposure { + total: 30, + own: 30, + others: vec![], + }); + assert_eq!(::ErasStakersClipped::get(3, 11), Exposure { + total: 0, + own: 0, + others: vec![], + }); + assert_eq!(::ErasStakersClipped::get(3, 21), Exposure { + total: 20, + own: 20, + others: vec![], + }); + assert_eq!(::ErasStakersClipped::get(3, 31), Exposure { + total: 30, + own: 30, + others: vec![], + }); + assert_eq!(::ErasValidatorPrefs::get(3, 21), Staking::validators(21)); + assert_eq!(::ErasValidatorPrefs::get(3, 31), Staking::validators(31)); + assert_eq!(::ErasTotalStake::get(3), 50); + }) +} + #[test] fn zero_slash_keeps_nominators() { ExtBuilder::default().build().execute_with(|| { @@ -2726,7 +2941,7 @@ fn zero_slash_keeps_nominators() { assert_eq!(Balances::free_balance(11), 1000); - let exposure = Staking::stakers(&11); + let exposure = Staking::eras_stakers(Staking::active_era().unwrap().index, 11); assert_eq!(Balances::free_balance(101), 2000); on_offence_now( @@ -2756,3 +2971,245 @@ fn zero_slash_keeps_nominators() { assert!(nominations.submitted_in >= last_slash); }); } + +#[test] +fn six_session_delay() { + ExtBuilder::default().build().execute_with(|| { + use pallet_session::SessionManager; + + let val_set = Session::validators(); + let init_session = Session::current_index(); + let init_active_era = Staking::active_era().unwrap().index; + // pallet-session is delaying session by one, thus the next session to plan is +2. + assert_eq!(>::new_session(init_session + 2), None); + assert_eq!(>::new_session(init_session + 3), Some(val_set.clone())); + assert_eq!(>::new_session(init_session + 4), None); + assert_eq!(>::new_session(init_session + 5), None); + assert_eq!(>::new_session(init_session + 6), Some(val_set.clone())); + + >::end_session(init_session); + >::start_session(init_session + 1); + assert_eq!(Staking::active_era().unwrap().index, init_active_era); + >::end_session(init_session + 1); + >::start_session(init_session + 2); + assert_eq!(Staking::active_era().unwrap().index, init_active_era); + + // Reward current era + Staking::reward_by_ids(vec![(11, 1)]); + + // New active era is triggered here. + >::end_session(init_session + 2); + >::start_session(init_session + 3); + assert_eq!(Staking::active_era().unwrap().index, init_active_era + 1); + >::end_session(init_session + 3); + >::start_session(init_session + 4); + assert_eq!(Staking::active_era().unwrap().index, init_active_era + 1); + >::end_session(init_session + 4); + >::start_session(init_session + 5); + assert_eq!(Staking::active_era().unwrap().index, init_active_era + 1); + + // Reward current era + Staking::reward_by_ids(vec![(21, 2)]); + + // New active era is triggered here. + >::end_session(init_session + 5); + >::start_session(init_session + 6); + assert_eq!(Staking::active_era().unwrap().index, init_active_era + 2); + + // That reward are correct + assert_eq!(Staking::eras_reward_points(init_active_era).total, 1); + assert_eq!(Staking::eras_reward_points(init_active_era + 1).total, 2); + }); +} + +#[test] +fn test_max_nominator_rewarded_per_validator_and_cant_steal_someone_else_reward() { + // Test: + // * If nominator nomination is below the $MaxNominatorRewardedPerValidator other nominator + // then the nominator can't claim its reward + // * A nominator can't claim another nominator reward + ExtBuilder::default().build().execute_with(|| { + for i in 0..=::MaxNominatorRewardedPerValidator::get() { + let stash = 10_000 + i as u64; + let controller = 20_000 + i as u64; + let balance = 10_000 + i as u64; + Balances::make_free_balance_be(&stash, balance); + assert_ok!( + Staking::bond( + Origin::signed(stash), + controller, + balance, + RewardDestination::Stash + ) + ); + assert_ok!(Staking::nominate(Origin::signed(controller), vec![11])); + } + mock::start_era(1); + + >::reward_by_ids(vec![(11, 1)]); + // Compute total payout now for whole duration as other parameter won't change + let total_payout_0 = current_total_payout_for_duration(3 * 1000); + assert!(total_payout_0 > 100); // Test is meaningful if reward something + + mock::start_era(2); + mock::make_all_reward_payment(1); + + // nominator 10_000 can't get its reward because exposure is clipped. However it will try + // to query other people reward. + assert_ok!(Staking::payout_nominator(Origin::signed(20_000), 1, vec![(11, 0)])); + + // Assert only nominators from 1 to Max are rewarded + for i in 0..=::MaxNominatorRewardedPerValidator::get() { + let stash = 10_000 + i as u64; + let balance = 10_000 + i as u64; + if stash == 10_000 { + assert!(Balances::free_balance(&stash) == balance); + } else { + assert!(Balances::free_balance(&stash) > balance); + } + } + }); +} + +// Test that an upgrade from previous test environment works. +#[test] +fn test_upgrade_from_master_works() { + let data_sets = &[ + test_upgrade_from_master_dataset::_0, + test_upgrade_from_master_dataset::_1, + test_upgrade_from_master_dataset::_2, + test_upgrade_from_master_dataset::_3, + test_upgrade_from_master_dataset::_4, + test_upgrade_from_master_dataset::_5, + test_upgrade_from_master_dataset::_6, + test_upgrade_from_master_dataset::_7, + test_upgrade_from_master_dataset::_8, + ]; + for data_set in data_sets.iter() { + let mut storage = sp_runtime::Storage::default(); + for (key, value) in data_set.iter() { + storage.top.insert(key.to_vec(), value.to_vec()); + } + let mut ext = sp_io::TestExternalities::from(storage); + ext.execute_with(|| { + let old_stakers = + get_storage_value::>(b"Staking", b"CurrentElected", b"").unwrap(); + let old_staker_0 = old_stakers[0]; + let old_staker_1 = old_stakers[1]; + let old_current_era = + get_storage_value::(b"Staking", b"CurrentEra", b"").unwrap(); + let old_staker_0_exposure = get_storage_value::>( + b"Staking", b"Stakers", &blake2_256(&old_staker_0.encode()) + ).unwrap(); + let old_staker_1_exposure = get_storage_value::>( + b"Staking", b"Stakers", &blake2_256(&old_staker_1.encode()) + ).unwrap(); + let ( + old_era_points_earned_total, + old_era_points_earned_individual + ) = get_storage_value::<(u32, Vec)>(b"Staking", b"CurrentEraPointsEarned", b"") + .unwrap_or((0, vec![])); + + Staking::ensure_storage_upgraded(); + assert!(::IsUpgraded::get()); + + // Check ActiveEra and CurrentEra + let active_era = Staking::active_era().unwrap().index; + let current_era = Staking::current_era().unwrap(); + assert!(current_era == active_era); + assert!(current_era == old_current_era); + + // Check ErasStartSessionIndex + let active_era_start = Staking::eras_start_session_index(active_era).unwrap(); + let current_era_start = Staking::eras_start_session_index(current_era).unwrap(); + let current_session_index = Session::current_index(); + assert!(current_era_start == active_era_start); + assert!(active_era_start <= current_session_index); + assert_eq!(::ErasStartSessionIndex::iter().count(), 1); + + // Check ErasStakers + assert_eq!(::ErasStakers::iter().count(), 2); + assert_eq!( + ::ErasStakers::get(current_era, old_staker_0), + old_staker_0_exposure + ); + assert_eq!( + ::ErasStakers::get(current_era, old_staker_1), + old_staker_1_exposure + ); + + // Check ErasStakersClipped + assert_eq!(::ErasStakersClipped::iter().count(), 2); + assert!(::ErasStakersClipped::iter().all(|exposure_clipped| { + let max = ::MaxNominatorRewardedPerValidator::get() as usize; + exposure_clipped.others.len() <= max + })); + assert_eq!( + ::ErasStakersClipped::get(current_era, old_staker_0), + old_staker_0_exposure + ); + assert_eq!( + ::ErasStakersClipped::get(current_era, old_staker_1), + old_staker_1_exposure + ); + + // Check ErasValidatorPrefs + assert_eq!(::ErasValidatorPrefs::iter().count(), 2); + assert_eq!( + ::ErasValidatorPrefs::get(current_era, old_staker_0), + Staking::validators(old_staker_0) + ); + assert_eq!( + ::ErasValidatorPrefs::get(current_era, old_staker_1), + Staking::validators(old_staker_1) + ); + + // Check ErasTotalStake + assert_eq!(::ErasTotalStake::iter().count(), 1); + assert_eq!( + ::ErasTotalStake::get(current_era), + old_staker_0_exposure.total + old_staker_1_exposure.total + ); + + // Check ErasRewardPoints + assert_eq!(::ErasRewardPoints::iter().count(), 1); + let mut individual = BTreeMap::new(); + if let Some(p) = old_era_points_earned_individual.get(0) { + individual.insert(old_staker_0, p.clone()); + } + if let Some(p) = old_era_points_earned_individual.get(1) { + individual.insert(old_staker_1, p.clone()); + } + assert_eq!( + ::ErasRewardPoints::get(current_era), + EraRewardPoints { + total: old_era_points_earned_total, + individual, + } + ); + + // Check ErasValidatorReward + assert_eq!(::ErasValidatorReward::iter().count(), 0); + }); + } +} + +#[test] +fn set_history_depth_works() { + ExtBuilder::default().build().execute_with(|| { + start_era(10); + Staking::set_history_depth(Origin::ROOT, 20).unwrap(); + assert!(::ErasTotalStake::contains_key(10 - 4)); + assert!(::ErasTotalStake::contains_key(10 - 5)); + Staking::set_history_depth(Origin::ROOT, 4).unwrap(); + assert!(::ErasTotalStake::contains_key(10 - 4)); + assert!(!::ErasTotalStake::contains_key(10 - 5)); + Staking::set_history_depth(Origin::ROOT, 3).unwrap(); + assert!(!::ErasTotalStake::contains_key(10 - 4)); + assert!(!::ErasTotalStake::contains_key(10 - 5)); + Staking::set_history_depth(Origin::ROOT, 8).unwrap(); + assert!(!::ErasTotalStake::contains_key(10 - 4)); + assert!(!::ErasTotalStake::contains_key(10 - 5)); + }); +} + diff --git a/frame/staking/src/tests/test_upgrade_from_master_dataset.rs b/frame/staking/src/tests/test_upgrade_from_master_dataset.rs new file mode 100644 index 0000000000..32f9b0a3ed --- /dev/null +++ b/frame/staking/src/tests/test_upgrade_from_master_dataset.rs @@ -0,0 +1,59 @@ +// Copyright 2020-2020 Parity Technologies (UK) Ltd. +// This file is part of Substrate. + +// Substrate is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Substrate is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Substrate. If not, see . + +//! Data set for testing update from previous staking module. +//! +//! Each data set correspond to the storage state for its corresponding block just before the +//! staking initialisation. +//! +//! it has been generated using the following code at commit +//! dc92587bea4032e0a0fc96785bfd9aa17c95459e +//! +//! ```nocompile +//! fn print_storage(i: u32) { +//! let mut storage = vec![]; +//! let mut current_key = vec![]; +//! while let Some(key) = sp_io::storage::next_key(¤t_key) { +//! storage.push((key.clone(), sp_io::storage::get(&key).unwrap())); +//! current_key = key; +//! } +//! println!("const _{}: &[(&[u8], &[u8])] = {:?};", i, storage); +//! } +//! +//! #[test] +//! fn get_states() { +//! let mut ext = ExtBuilder::default().build(); +//! +//! for index in 1..10u32 { +//! ext.execute_with(|| { +//! print_storage(index - 1); +//! System::set_block_number((index).into()); +//! Timestamp::set_timestamp(System::block_number() * 1000); +//! Session::on_initialize(System::block_number()); +//! }); +//! } +//! } +//! ``` + +pub const _0: &[(&[u8], &[u8])] = &[(&[38, 170, 57, 78, 234, 86, 48, 224, 124, 72, 174, 12, 149, 88, 206, 247, 2, 165, 193, 177, 154, 183, 160, 79, 83, 108, 81, 154, 202, 73, 131, 172], &[1, 0, 0, 0, 0, 0, 0, 0]), (&[38, 170, 57, 78, 234, 86, 48, 224, 124, 72, 174, 12, 149, 88, 206, 247, 10, 152, 253, 190, 156, 230, 197, 88, 55, 87, 108, 96, 199, 175, 56, 80], &[15, 0, 0, 0]), (&[38, 170, 57, 78, 234, 86, 48, 224, 124, 72, 174, 12, 149, 88, 206, 247, 128, 212, 30, 94, 22, 5, 103, 101, 188, 132, 97, 133, 16, 114, 201, 215], &[60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), (&[38, 170, 57, 78, 234, 86, 48, 224, 124, 72, 174, 12, 149, 88, 206, 247, 138, 66, 243, 51, 35, 203, 92, 237, 59, 68, 221, 130, 95, 218, 159, 204], &[69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69]), (&[38, 170, 57, 78, 234, 86, 48, 224, 124, 72, 174, 12, 149, 88, 206, 247, 164, 71, 4, 181, 104, 210, 22, 103, 53, 106, 90, 5, 12, 17, 135, 70, 129, 228, 122, 25, 230, 178, 155, 10, 101, 185, 89, 23, 98, 206, 81, 67, 237, 48, 208, 38, 30, 93, 36, 163, 32, 23, 82, 80, 107, 32, 241, 92], &[69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69]), (&[38, 170, 57, 78, 234, 86, 48, 224, 124, 72, 174, 12, 149, 88, 206, 247, 185, 157, 136, 14, 198, 129, 121, 156, 12, 243, 14, 136, 134, 55, 29, 169, 29, 189, 125, 11, 86, 26, 65, 210, 60, 42, 70, 154, 212, 47, 189, 112, 213, 67, 139, 174, 130, 111, 111, 214, 7, 65, 49, 144, 195, 124, 54, 59], &[0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), (&[38, 170, 57, 78, 234, 86, 48, 224, 124, 72, 174, 12, 149, 88, 206, 247, 185, 157, 136, 14, 198, 129, 121, 156, 12, 243, 14, 136, 134, 55, 29, 169, 77, 254, 57, 245, 78, 123, 168, 74, 190, 191, 139, 138, 100, 234, 72, 46, 45, 174, 43, 141, 96, 79, 230, 7, 252, 242, 172, 39, 100, 43, 161, 177], &[0, 0, 0, 0, 0, 0, 0, 0, 208, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 232, 3, 0, 0, 0, 0, 0, 0, 232, 3, 0, 0, 0, 0, 0, 0]), (&[38, 170, 57, 78, 234, 86, 48, 224, 124, 72, 174, 12, 149, 88, 206, 247, 185, 157, 136, 14, 198, 129, 121, 156, 12, 243, 14, 136, 134, 55, 29, 169, 83, 50, 194, 39, 103, 192, 178, 217, 125, 32, 22, 246, 168, 239, 120, 222, 173, 2, 155, 120, 7, 166, 176, 226, 172, 7, 43, 102, 21, 204, 92, 8], &[0, 0, 0, 0, 0, 0, 0, 0, 232, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 232, 3, 0, 0, 0, 0, 0, 0, 232, 3, 0, 0, 0, 0, 0, 0]), (&[38, 170, 57, 78, 234, 86, 48, 224, 124, 72, 174, 12, 149, 88, 206, 247, 185, 157, 136, 14, 198, 129, 121, 156, 12, 243, 14, 136, 134, 55, 29, 169, 94, 90, 15, 75, 176, 234, 179, 121, 134, 37, 171, 24, 100, 84, 93, 19, 212, 232, 208, 104, 153, 217, 219, 77, 97, 219, 157, 238, 147, 186, 2, 221], &[0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), (&[38, 170, 57, 78, 234, 86, 48, 224, 124, 72, 174, 12, 149, 88, 206, 247, 185, 157, 136, 14, 198, 129, 121, 156, 12, 243, 14, 136, 134, 55, 29, 169, 100, 74, 81, 252, 33, 158, 145, 69, 184, 87, 123, 183, 118, 40, 118, 123, 28, 47, 115, 116, 142, 218, 139, 120, 139, 252, 102, 161, 181, 42, 32, 248], &[0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 165, 212, 232, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), (&[38, 170, 57, 78, 234, 86, 48, 224, 124, 72, 174, 12, 149, 88, 206, 247, 185, 157, 136, 14, 198, 129, 121, 156, 12, 243, 14, 136, 134, 55, 29, 169, 108, 221, 179, 103, 175, 189, 88, 59, 180, 143, 155, 189, 125, 91, 163, 177, 208, 115, 139, 72, 129, 177, 205, 221, 56, 22, 149, 38, 216, 21, 129, 55], &[0, 0, 0, 0, 0, 0, 0, 0, 44, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), (&[38, 170, 57, 78, 234, 86, 48, 224, 124, 72, 174, 12, 149, 88, 206, 247, 185, 157, 136, 14, 198, 129, 121, 156, 12, 243, 14, 136, 134, 55, 29, 169, 137, 6, 59, 94, 171, 160, 104, 80, 196, 182, 201, 87, 28, 70, 86, 200, 124, 206, 182, 4, 38, 77, 37, 233, 32, 121, 227, 154, 137, 129, 91, 166], &[0, 0, 0, 0, 0, 0, 0, 0, 208, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0]), (&[38, 170, 57, 78, 234, 86, 48, 224, 124, 72, 174, 12, 149, 88, 206, 247, 185, 157, 136, 14, 198, 129, 121, 156, 12, 243, 14, 136, 134, 55, 29, 169, 165, 186, 85, 195, 163, 151, 212, 60, 23, 89, 63, 40, 154, 164, 151, 157, 10, 229, 146, 68, 179, 47, 3, 236, 19, 65, 97, 129, 175, 134, 209, 11], &[0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), (&[38, 170, 57, 78, 234, 86, 48, 224, 124, 72, 174, 12, 149, 88, 206, 247, 185, 157, 136, 14, 198, 129, 121, 156, 12, 243, 14, 136, 134, 55, 29, 169, 170, 10, 228, 226, 42, 96, 247, 17, 144, 247, 250, 141, 205, 84, 104, 175, 49, 59, 161, 58, 250, 178, 59, 219, 34, 1, 81, 12, 128, 142, 182, 22], &[0, 0, 0, 0, 0, 0, 0, 0, 208, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 232, 3, 0, 0, 0, 0, 0, 0, 232, 3, 0, 0, 0, 0, 0, 0]), (&[38, 170, 57, 78, 234, 86, 48, 224, 124, 72, 174, 12, 149, 88, 206, 247, 185, 157, 136, 14, 198, 129, 121, 156, 12, 243, 14, 136, 134, 55, 29, 169, 189, 225, 131, 90, 186, 237, 15, 242, 121, 87, 0, 55, 252, 73, 213, 189, 23, 110, 180, 130, 163, 178, 129, 109, 244, 252, 194, 204, 27, 200, 106, 202], &[0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), (&[38, 170, 57, 78, 234, 86, 48, 224, 124, 72, 174, 12, 149, 88, 206, 247, 185, 157, 136, 14, 198, 129, 121, 156, 12, 243, 14, 136, 134, 55, 29, 169, 213, 92, 123, 109, 126, 139, 228, 10, 88, 51, 198, 4, 8, 188, 78, 184, 171, 234, 78, 93, 168, 211, 37, 233, 8, 135, 156, 195, 59, 151, 205, 153], &[0, 0, 0, 0, 0, 0, 0, 0, 208, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), (&[38, 170, 57, 78, 234, 86, 48, 224, 124, 72, 174, 12, 149, 88, 206, 247, 185, 157, 136, 14, 198, 129, 121, 156, 12, 243, 14, 136, 134, 55, 29, 169, 216, 247, 229, 16, 146, 46, 205, 71, 180, 10, 28, 88, 41, 56, 34, 6, 69, 103, 185, 191, 60, 126, 225, 114, 12, 144, 76, 94, 12, 87, 247, 55], &[0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), (&[38, 170, 57, 78, 234, 86, 48, 224, 124, 72, 174, 12, 149, 88, 206, 247, 185, 157, 136, 14, 198, 129, 121, 156, 12, 243, 14, 136, 134, 55, 29, 169, 232, 139, 67, 253, 237, 99, 35, 239, 2, 255, 239, 251, 216, 196, 8, 70, 238, 9, 191, 49, 98, 113, 189, 34, 54, 150, 89, 201, 89, 221, 115, 58], &[0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), (&[38, 170, 57, 78, 234, 86, 48, 224, 124, 72, 174, 12, 149, 88, 206, 247, 185, 157, 136, 14, 198, 129, 121, 156, 12, 243, 14, 136, 134, 55, 29, 169, 233, 103, 96, 210, 116, 101, 58, 57, 180, 41, 168, 126, 186, 174, 157, 58, 164, 253, 245, 139, 144, 150, 207, 11, 235, 199, 196, 229, 164, 194, 237, 141], &[0, 0, 0, 0, 0, 0, 0, 0, 144, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), (&[38, 170, 57, 78, 234, 86, 48, 224, 124, 72, 174, 12, 149, 88, 206, 247, 185, 157, 136, 14, 198, 129, 121, 156, 12, 243, 14, 136, 134, 55, 29, 169, 250, 67, 84, 127, 177, 206, 187, 248, 7, 171, 139, 143, 54, 116, 13, 218, 140, 198, 7, 172, 12, 47, 130, 190, 178, 198, 48, 211, 195, 137, 122, 61], &[0, 0, 0, 0, 0, 0, 0, 0, 208, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 244, 1, 0, 0, 0, 0, 0, 0, 244, 1, 0, 0, 0, 0, 0, 0]), (&[58, 99, 111, 100, 101], &[]), (&[58, 101, 120, 116, 114, 105, 110, 115, 105, 99, 95, 105, 110, 100, 101, 120], &[0, 0, 0, 0]), (&[58, 104, 101, 97, 112, 112, 97, 103, 101, 115], &[8, 0, 0, 0, 0, 0, 0, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 11, 106, 69, 50, 30, 250, 233, 42, 234, 21, 224, 116, 14, 199, 175, 231], &[0, 0, 0, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 14, 160, 236, 172, 118, 69, 125, 15, 155, 57, 185, 129, 221, 16, 112, 18], &[8, 21, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 19, 142, 113, 97, 36, 145, 25, 45, 104, 222, 171, 126, 111, 86, 63, 225], &[2, 0, 0, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 40, 220, 203, 85, 155, 149, 196, 1, 104, 161, 178, 105, 101, 129, 181, 167], &[0, 0, 0, 0, 0, 0, 0, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 62, 209, 75, 69, 237, 32, 208, 84, 240, 94, 55, 226, 84, 44, 254, 112, 77, 254, 57, 245, 78, 123, 168, 74, 190, 191, 139, 138, 100, 234, 72, 46, 45, 174, 43, 141, 96, 79, 230, 7, 252, 242, 172, 39, 100, 43, 161, 177], &[40, 0, 0, 0, 0, 0, 0, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 62, 209, 75, 69, 237, 32, 208, 84, 240, 94, 55, 226, 84, 44, 254, 112, 83, 50, 194, 39, 103, 192, 178, 217, 125, 32, 22, 246, 168, 239, 120, 222, 173, 2, 155, 120, 7, 166, 176, 226, 172, 7, 43, 102, 21, 204, 92, 8], &[10, 0, 0, 0, 0, 0, 0, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 62, 209, 75, 69, 237, 32, 208, 84, 240, 94, 55, 226, 84, 44, 254, 112, 137, 6, 59, 94, 171, 160, 104, 80, 196, 182, 201, 87, 28, 70, 86, 200, 124, 206, 182, 4, 38, 77, 37, 233, 32, 121, 227, 154, 137, 129, 91, 166], &[30, 0, 0, 0, 0, 0, 0, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 62, 209, 75, 69, 237, 32, 208, 84, 240, 94, 55, 226, 84, 44, 254, 112, 170, 10, 228, 226, 42, 96, 247, 17, 144, 247, 250, 141, 205, 84, 104, 175, 49, 59, 161, 58, 250, 178, 59, 219, 34, 1, 81, 12, 128, 142, 182, 22], &[20, 0, 0, 0, 0, 0, 0, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 62, 209, 75, 69, 237, 32, 208, 84, 240, 94, 55, 226, 84, 44, 254, 112, 250, 67, 84, 127, 177, 206, 187, 248, 7, 171, 139, 143, 54, 116, 13, 218, 140, 198, 7, 172, 12, 47, 130, 190, 178, 198, 48, 211, 195, 137, 122, 61], &[100, 0, 0, 0, 0, 0, 0, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 66, 42, 219, 87, 159, 29, 191, 79, 56, 134, 197, 207, 163, 187, 140, 196, 94, 90, 15, 75, 176, 234, 179, 121, 134, 37, 171, 24, 100, 84, 93, 19, 212, 232, 208, 104, 153, 217, 219, 77, 97, 219, 157, 238, 147, 186, 2, 221], &[21, 0, 0, 0, 0, 0, 0, 0, 161, 15, 161, 15, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 66, 42, 219, 87, 159, 29, 191, 79, 56, 134, 197, 207, 163, 187, 140, 196, 165, 186, 85, 195, 163, 151, 212, 60, 23, 89, 63, 40, 154, 164, 151, 157, 10, 229, 146, 68, 179, 47, 3, 236, 19, 65, 97, 129, 175, 134, 209, 11], &[31, 0, 0, 0, 0, 0, 0, 0, 4, 4, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 66, 42, 219, 87, 159, 29, 191, 79, 56, 134, 197, 207, 163, 187, 140, 196, 189, 225, 131, 90, 186, 237, 15, 242, 121, 87, 0, 55, 252, 73, 213, 189, 23, 110, 180, 130, 163, 178, 129, 109, 244, 252, 194, 204, 27, 200, 106, 202], &[11, 0, 0, 0, 0, 0, 0, 0, 161, 15, 161, 15, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 66, 42, 219, 87, 159, 29, 191, 79, 56, 134, 197, 207, 163, 187, 140, 196, 213, 92, 123, 109, 126, 139, 228, 10, 88, 51, 198, 4, 8, 188, 78, 184, 171, 234, 78, 93, 168, 211, 37, 233, 8, 135, 156, 195, 59, 151, 205, 153], &[101, 0, 0, 0, 0, 0, 0, 0, 209, 7, 209, 7, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 66, 42, 219, 87, 159, 29, 191, 79, 56, 134, 197, 207, 163, 187, 140, 196, 216, 247, 229, 16, 146, 46, 205, 71, 180, 10, 28, 88, 41, 56, 34, 6, 69, 103, 185, 191, 60, 126, 225, 114, 12, 144, 76, 94, 12, 87, 247, 55], &[41, 0, 0, 0, 0, 0, 0, 0, 161, 15, 161, 15, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 80, 154, 155, 110, 250, 147, 245, 187, 131, 248, 88, 240, 186, 191, 211, 11], &[0, 0, 0, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 85, 121, 41, 127, 77, 251, 150, 9, 231, 228, 194, 235, 171, 156, 228, 10], &[0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 86, 239, 98, 39, 206, 203, 47, 7, 39, 76, 176, 87, 45, 143, 164, 194], &[101, 0, 0, 0, 0, 0, 0, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 106, 147, 17, 38, 51, 187, 51, 84, 230, 121, 82, 252, 221, 116, 12, 213], &[31, 0, 0, 0, 0, 0, 0, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 131, 229, 133, 187, 197, 253, 206, 197, 114, 25, 192, 220, 129, 239, 95, 244, 83, 50, 194, 39, 103, 192, 178, 217, 125, 32, 22, 246, 168, 239, 120, 222, 173, 2, 155, 120, 7, 166, 176, 226, 172, 7, 43, 102, 21, 204, 92, 8], &[149, 17, 161, 15, 4, 101, 0, 0, 0, 0, 0, 0, 0, 245, 1]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 131, 229, 133, 187, 197, 253, 206, 197, 114, 25, 192, 220, 129, 239, 95, 244, 170, 10, 228, 226, 42, 96, 247, 17, 144, 247, 250, 141, 205, 84, 104, 175, 49, 59, 161, 58, 250, 178, 59, 219, 34, 1, 81, 12, 128, 142, 182, 22], &[125, 21, 161, 15, 4, 101, 0, 0, 0, 0, 0, 0, 0, 221, 5]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 136, 220, 222, 147, 76, 101, 130, 39, 238, 29, 250, 252, 214, 225, 105, 3, 83, 50, 194, 39, 103, 192, 178, 217, 125, 32, 22, 246, 168, 239, 120, 222, 173, 2, 155, 120, 7, 166, 176, 226, 172, 7, 43, 102, 21, 204, 92, 8], &[0, 1, 21, 0, 0, 0, 0, 0, 0, 0, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 136, 220, 222, 147, 76, 101, 130, 39, 238, 29, 250, 252, 214, 225, 105, 3, 137, 6, 59, 94, 171, 160, 104, 80, 196, 182, 201, 87, 28, 70, 86, 200, 124, 206, 182, 4, 38, 77, 37, 233, 32, 121, 227, 154, 137, 129, 91, 166], &[0, 0, 1, 21, 0, 0, 0, 0, 0, 0, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 136, 220, 222, 147, 76, 101, 130, 39, 238, 29, 250, 252, 214, 225, 105, 3, 170, 10, 228, 226, 42, 96, 247, 17, 144, 247, 250, 141, 205, 84, 104, 175, 49, 59, 161, 58, 250, 178, 59, 219, 34, 1, 81, 12, 128, 142, 182, 22], &[0, 1, 31, 0, 0, 0, 0, 0, 0, 0, 1, 11, 0, 0, 0, 0, 0, 0, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 146, 32, 225, 114, 190, 211, 22, 96, 95, 115, 241, 255, 123, 74, 222, 152, 77, 254, 57, 245, 78, 123, 168, 74, 190, 191, 139, 138, 100, 234, 72, 46, 45, 174, 43, 141, 96, 79, 230, 7, 252, 242, 172, 39, 100, 43, 161, 177], &[0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 146, 32, 225, 114, 190, 211, 22, 96, 95, 115, 241, 255, 123, 74, 222, 152, 83, 50, 194, 39, 103, 192, 178, 217, 125, 32, 22, 246, 168, 239, 120, 222, 173, 2, 155, 120, 7, 166, 176, 226, 172, 7, 43, 102, 21, 204, 92, 8], &[0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 146, 32, 225, 114, 190, 211, 22, 96, 95, 115, 241, 255, 123, 74, 222, 152, 137, 6, 59, 94, 171, 160, 104, 80, 196, 182, 201, 87, 28, 70, 86, 200, 124, 206, 182, 4, 38, 77, 37, 233, 32, 121, 227, 154, 137, 129, 91, 166], &[0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 146, 32, 225, 114, 190, 211, 22, 96, 95, 115, 241, 255, 123, 74, 222, 152, 170, 10, 228, 226, 42, 96, 247, 17, 144, 247, 250, 141, 205, 84, 104, 175, 49, 59, 161, 58, 250, 178, 59, 219, 34, 1, 81, 12, 128, 142, 182, 22], &[0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 146, 32, 225, 114, 190, 211, 22, 96, 95, 115, 241, 255, 123, 74, 222, 152, 250, 67, 84, 127, 177, 206, 187, 248, 7, 171, 139, 143, 54, 116, 13, 218, 140, 198, 7, 172, 12, 47, 130, 190, 178, 198, 48, 211, 195, 137, 122, 61], &[0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 156, 106, 99, 127, 98, 174, 42, 241, 199, 227, 30, 237, 126, 150, 190, 4, 250, 67, 84, 127, 177, 206, 187, 248, 7, 171, 139, 143, 54, 116, 13, 218, 140, 198, 7, 172, 12, 47, 130, 190, 178, 198, 48, 211, 195, 137, 122, 61], &[8, 11, 0, 0, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 156, 189, 47, 11, 41, 160, 8, 163, 96, 9, 172, 68, 204, 160, 201, 105], &[101, 4, 0, 0, 0, 0, 0, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 180, 154, 39, 56, 238, 179, 8, 150, 170, 203, 139, 63, 180, 100, 113, 189], &[0, 0, 0, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 194, 154, 3, 16, 225, 187, 69, 210, 12, 172, 231, 124, 203, 98, 201, 125], &[0, 225, 245, 5]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 234, 7, 222, 43, 143, 1, 5, 22, 220, 163, 247, 239, 82, 247, 172, 90], &[4, 0, 0, 0, 0, 0, 0, 0, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 247, 218, 208, 49, 115, 36, 174, 202, 232, 116, 75, 135, 252, 149, 242, 243], &[0]), (&[194, 38, 18, 118, 204, 157, 31, 133, 152, 234, 75, 106, 116, 177, 92, 47, 33, 143, 38, 199, 58, 221, 99, 72, 151, 85, 11, 64, 3, 178, 107, 198, 77, 254, 57, 245, 78, 123, 168, 74, 190, 191, 139, 138, 100, 234, 72, 46, 45, 174, 43, 141, 96, 79, 230, 7, 252, 242, 172, 39, 100, 43, 161, 177], &[4, 115, 116, 97, 107, 105, 110, 103, 32, 232, 3, 0, 0, 0, 0, 0, 0, 2]), (&[194, 38, 18, 118, 204, 157, 31, 133, 152, 234, 75, 106, 116, 177, 92, 47, 33, 143, 38, 199, 58, 221, 99, 72, 151, 85, 11, 64, 3, 178, 107, 198, 83, 50, 194, 39, 103, 192, 178, 217, 125, 32, 22, 246, 168, 239, 120, 222, 173, 2, 155, 120, 7, 166, 176, 226, 172, 7, 43, 102, 21, 204, 92, 8], &[4, 115, 116, 97, 107, 105, 110, 103, 32, 232, 3, 0, 0, 0, 0, 0, 0, 2]), (&[194, 38, 18, 118, 204, 157, 31, 133, 152, 234, 75, 106, 116, 177, 92, 47, 33, 143, 38, 199, 58, 221, 99, 72, 151, 85, 11, 64, 3, 178, 107, 198, 137, 6, 59, 94, 171, 160, 104, 80, 196, 182, 201, 87, 28, 70, 86, 200, 124, 206, 182, 4, 38, 77, 37, 233, 32, 121, 227, 154, 137, 129, 91, 166], &[4, 115, 116, 97, 107, 105, 110, 103, 32, 1, 0, 0, 0, 0, 0, 0, 0, 2]), (&[194, 38, 18, 118, 204, 157, 31, 133, 152, 234, 75, 106, 116, 177, 92, 47, 33, 143, 38, 199, 58, 221, 99, 72, 151, 85, 11, 64, 3, 178, 107, 198, 170, 10, 228, 226, 42, 96, 247, 17, 144, 247, 250, 141, 205, 84, 104, 175, 49, 59, 161, 58, 250, 178, 59, 219, 34, 1, 81, 12, 128, 142, 182, 22], &[4, 115, 116, 97, 107, 105, 110, 103, 32, 232, 3, 0, 0, 0, 0, 0, 0, 2]), (&[194, 38, 18, 118, 204, 157, 31, 133, 152, 234, 75, 106, 116, 177, 92, 47, 33, 143, 38, 199, 58, 221, 99, 72, 151, 85, 11, 64, 3, 178, 107, 198, 250, 67, 84, 127, 177, 206, 187, 248, 7, 171, 139, 143, 54, 116, 13, 218, 140, 198, 7, 172, 12, 47, 130, 190, 178, 198, 48, 211, 195, 137, 122, 61], &[4, 115, 116, 97, 107, 105, 110, 103, 32, 244, 1, 0, 0, 0, 0, 0, 0, 2]), (&[194, 38, 18, 118, 204, 157, 31, 133, 152, 234, 75, 106, 116, 177, 92, 47, 87, 200, 117, 228, 207, 247, 65, 72, 228, 98, 143, 38, 75, 151, 76, 128], &[214, 61, 165, 212, 232, 0, 0, 0]), (&[194, 38, 18, 118, 204, 157, 31, 133, 152, 234, 75, 106, 116, 177, 92, 47, 227, 253, 141, 247, 41, 112, 188, 130, 229, 38, 126, 160, 30, 221, 217, 73], &[1]), (&[206, 197, 7, 13, 96, 157, 211, 73, 127, 114, 189, 224, 127, 201, 107, 160, 76, 1, 78, 107, 248, 184, 194, 192, 17, 231, 41, 11, 133, 105, 107, 179, 159, 230, 50, 156, 192, 179, 158, 9, 52, 58, 115, 101, 115, 115, 105, 111, 110, 58, 107, 101, 121, 115, 83, 50, 194, 39, 103, 192, 178, 217, 125, 32, 22, 246, 168, 239, 120, 222, 173, 2, 155, 120, 7, 166, 176, 226, 172, 7, 43, 102, 21, 204, 92, 8], &[11, 0, 0, 0, 0, 0, 0, 0]), (&[206, 197, 7, 13, 96, 157, 211, 73, 127, 114, 189, 224, 127, 201, 107, 160, 76, 1, 78, 107, 248, 184, 194, 192, 17, 231, 41, 11, 133, 105, 107, 179, 159, 230, 50, 156, 192, 179, 158, 9, 52, 58, 115, 101, 115, 115, 105, 111, 110, 58, 107, 101, 121, 115, 170, 10, 228, 226, 42, 96, 247, 17, 144, 247, 250, 141, 205, 84, 104, 175, 49, 59, 161, 58, 250, 178, 59, 219, 34, 1, 81, 12, 128, 142, 182, 22], &[21, 0, 0, 0, 0, 0, 0, 0]), (&[206, 197, 7, 13, 96, 157, 211, 73, 127, 114, 189, 224, 127, 201, 107, 160, 114, 99, 128, 64, 70, 131, 252, 137, 232, 35, 52, 80, 200, 170, 25, 80, 159, 230, 50, 156, 192, 179, 158, 9, 52, 58, 115, 101, 115, 115, 105, 111, 110, 58, 107, 101, 121, 115, 109, 123, 24, 86, 30, 19, 159, 228, 49, 200, 33, 139, 70, 205, 244, 47, 40, 190, 110, 43, 138, 12, 26, 121, 5, 219, 103, 1, 110, 91, 142, 123], &[11, 0, 0, 0, 0, 0, 0, 0]), (&[206, 197, 7, 13, 96, 157, 211, 73, 127, 114, 189, 224, 127, 201, 107, 160, 114, 99, 128, 64, 70, 131, 252, 137, 232, 35, 52, 80, 200, 170, 25, 80, 159, 230, 50, 156, 192, 179, 158, 9, 52, 58, 115, 101, 115, 115, 105, 111, 110, 58, 107, 101, 121, 115, 238, 43, 102, 225, 142, 104, 190, 12, 183, 86, 115, 25, 37, 223, 229, 65, 253, 167, 152, 54, 57, 147, 167, 137, 80, 161, 2, 235, 195, 174, 40, 244], &[21, 0, 0, 0, 0, 0, 0, 0]), (&[206, 197, 7, 13, 96, 157, 211, 73, 127, 114, 189, 224, 127, 201, 107, 160, 136, 220, 222, 147, 76, 101, 130, 39, 238, 29, 250, 252, 214, 225, 105, 3], &[8, 21, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0]), (&[206, 197, 7, 13, 96, 157, 211, 73, 127, 114, 189, 224, 127, 201, 107, 160, 152, 239, 125, 192, 96, 67, 110, 78, 216, 3, 175, 7, 99, 43, 137, 182, 17, 218, 109, 31, 118, 29, 223, 155, 219, 76, 157, 110, 83, 3, 235, 212, 31, 97, 133, 141, 10, 86, 71, 161, 167, 191, 224, 137, 191, 146, 27, 233], &[44, 175, 112, 32, 141, 187, 198, 225, 208, 96, 126, 2, 8, 79, 212, 67, 222, 67, 84, 75, 213, 91, 72, 122, 231, 108, 125, 176, 42, 11, 117, 78, 2, 0, 0, 0]), (&[206, 197, 7, 13, 96, 157, 211, 73, 127, 114, 189, 224, 127, 201, 107, 160, 152, 239, 125, 192, 96, 67, 110, 78, 216, 3, 175, 7, 99, 43, 137, 182, 225, 44, 34, 212, 241, 98, 217, 160, 18, 201, 49, 146, 51, 218, 93, 62, 146, 60, 197, 225, 2, 155, 143, 144, 228, 114, 73, 201, 171, 37, 107, 53], &[44, 175, 112, 32, 141, 187, 198, 225, 208, 96, 126, 2, 8, 79, 212, 67, 222, 67, 84, 75, 213, 91, 72, 122, 231, 108, 125, 176, 42, 11, 117, 78, 2, 0, 0, 0]), (&[206, 197, 7, 13, 96, 157, 211, 73, 127, 114, 189, 224, 127, 201, 107, 160, 224, 205, 208, 98, 230, 234, 242, 66, 149, 173, 76, 207, 196, 29, 70, 9], &[8, 21, 0, 0, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0]), (&[206, 197, 7, 13, 96, 157, 211, 73, 127, 114, 189, 224, 127, 201, 107, 160, 255, 58, 225, 39, 112, 190, 162, 228, 141, 155, 222, 115, 133, 231, 162, 95], &[0, 0, 0, 0, 2, 0, 0, 0])]; +pub const _1: &[(&[u8], &[u8])] = &[(&[38, 170, 57, 78, 234, 86, 48, 224, 124, 72, 174, 12, 149, 88, 206, 247, 2, 165, 193, 177, 154, 183, 160, 79, 83, 108, 81, 154, 202, 73, 131, 172], &[1, 0, 0, 0, 0, 0, 0, 0]), (&[38, 170, 57, 78, 234, 86, 48, 224, 124, 72, 174, 12, 149, 88, 206, 247, 10, 152, 253, 190, 156, 230, 197, 88, 55, 87, 108, 96, 199, 175, 56, 80], &[16, 0, 0, 0]), (&[38, 170, 57, 78, 234, 86, 48, 224, 124, 72, 174, 12, 149, 88, 206, 247, 128, 212, 30, 94, 22, 5, 103, 101, 188, 132, 97, 133, 16, 114, 201, 215], &[64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), (&[38, 170, 57, 78, 234, 86, 48, 224, 124, 72, 174, 12, 149, 88, 206, 247, 138, 66, 243, 51, 35, 203, 92, 237, 59, 68, 221, 130, 95, 218, 159, 204], &[69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69]), (&[38, 170, 57, 78, 234, 86, 48, 224, 124, 72, 174, 12, 149, 88, 206, 247, 164, 71, 4, 181, 104, 210, 22, 103, 53, 106, 90, 5, 12, 17, 135, 70, 129, 228, 122, 25, 230, 178, 155, 10, 101, 185, 89, 23, 98, 206, 81, 67, 237, 48, 208, 38, 30, 93, 36, 163, 32, 23, 82, 80, 107, 32, 241, 92], &[69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69]), (&[38, 170, 57, 78, 234, 86, 48, 224, 124, 72, 174, 12, 149, 88, 206, 247, 185, 157, 136, 14, 198, 129, 121, 156, 12, 243, 14, 136, 134, 55, 29, 169, 29, 189, 125, 11, 86, 26, 65, 210, 60, 42, 70, 154, 212, 47, 189, 112, 213, 67, 139, 174, 130, 111, 111, 214, 7, 65, 49, 144, 195, 124, 54, 59], &[0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), (&[38, 170, 57, 78, 234, 86, 48, 224, 124, 72, 174, 12, 149, 88, 206, 247, 185, 157, 136, 14, 198, 129, 121, 156, 12, 243, 14, 136, 134, 55, 29, 169, 77, 254, 57, 245, 78, 123, 168, 74, 190, 191, 139, 138, 100, 234, 72, 46, 45, 174, 43, 141, 96, 79, 230, 7, 252, 242, 172, 39, 100, 43, 161, 177], &[0, 0, 0, 0, 0, 0, 0, 0, 208, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 232, 3, 0, 0, 0, 0, 0, 0, 232, 3, 0, 0, 0, 0, 0, 0]), (&[38, 170, 57, 78, 234, 86, 48, 224, 124, 72, 174, 12, 149, 88, 206, 247, 185, 157, 136, 14, 198, 129, 121, 156, 12, 243, 14, 136, 134, 55, 29, 169, 83, 50, 194, 39, 103, 192, 178, 217, 125, 32, 22, 246, 168, 239, 120, 222, 173, 2, 155, 120, 7, 166, 176, 226, 172, 7, 43, 102, 21, 204, 92, 8], &[0, 0, 0, 0, 0, 0, 0, 0, 232, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 232, 3, 0, 0, 0, 0, 0, 0, 232, 3, 0, 0, 0, 0, 0, 0]), (&[38, 170, 57, 78, 234, 86, 48, 224, 124, 72, 174, 12, 149, 88, 206, 247, 185, 157, 136, 14, 198, 129, 121, 156, 12, 243, 14, 136, 134, 55, 29, 169, 94, 90, 15, 75, 176, 234, 179, 121, 134, 37, 171, 24, 100, 84, 93, 19, 212, 232, 208, 104, 153, 217, 219, 77, 97, 219, 157, 238, 147, 186, 2, 221], &[0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), (&[38, 170, 57, 78, 234, 86, 48, 224, 124, 72, 174, 12, 149, 88, 206, 247, 185, 157, 136, 14, 198, 129, 121, 156, 12, 243, 14, 136, 134, 55, 29, 169, 100, 74, 81, 252, 33, 158, 145, 69, 184, 87, 123, 183, 118, 40, 118, 123, 28, 47, 115, 116, 142, 218, 139, 120, 139, 252, 102, 161, 181, 42, 32, 248], &[0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 165, 212, 232, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), (&[38, 170, 57, 78, 234, 86, 48, 224, 124, 72, 174, 12, 149, 88, 206, 247, 185, 157, 136, 14, 198, 129, 121, 156, 12, 243, 14, 136, 134, 55, 29, 169, 108, 221, 179, 103, 175, 189, 88, 59, 180, 143, 155, 189, 125, 91, 163, 177, 208, 115, 139, 72, 129, 177, 205, 221, 56, 22, 149, 38, 216, 21, 129, 55], &[0, 0, 0, 0, 0, 0, 0, 0, 44, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), (&[38, 170, 57, 78, 234, 86, 48, 224, 124, 72, 174, 12, 149, 88, 206, 247, 185, 157, 136, 14, 198, 129, 121, 156, 12, 243, 14, 136, 134, 55, 29, 169, 137, 6, 59, 94, 171, 160, 104, 80, 196, 182, 201, 87, 28, 70, 86, 200, 124, 206, 182, 4, 38, 77, 37, 233, 32, 121, 227, 154, 137, 129, 91, 166], &[0, 0, 0, 0, 0, 0, 0, 0, 208, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0]), (&[38, 170, 57, 78, 234, 86, 48, 224, 124, 72, 174, 12, 149, 88, 206, 247, 185, 157, 136, 14, 198, 129, 121, 156, 12, 243, 14, 136, 134, 55, 29, 169, 165, 186, 85, 195, 163, 151, 212, 60, 23, 89, 63, 40, 154, 164, 151, 157, 10, 229, 146, 68, 179, 47, 3, 236, 19, 65, 97, 129, 175, 134, 209, 11], &[0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), (&[38, 170, 57, 78, 234, 86, 48, 224, 124, 72, 174, 12, 149, 88, 206, 247, 185, 157, 136, 14, 198, 129, 121, 156, 12, 243, 14, 136, 134, 55, 29, 169, 170, 10, 228, 226, 42, 96, 247, 17, 144, 247, 250, 141, 205, 84, 104, 175, 49, 59, 161, 58, 250, 178, 59, 219, 34, 1, 81, 12, 128, 142, 182, 22], &[0, 0, 0, 0, 0, 0, 0, 0, 208, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 232, 3, 0, 0, 0, 0, 0, 0, 232, 3, 0, 0, 0, 0, 0, 0]), (&[38, 170, 57, 78, 234, 86, 48, 224, 124, 72, 174, 12, 149, 88, 206, 247, 185, 157, 136, 14, 198, 129, 121, 156, 12, 243, 14, 136, 134, 55, 29, 169, 189, 225, 131, 90, 186, 237, 15, 242, 121, 87, 0, 55, 252, 73, 213, 189, 23, 110, 180, 130, 163, 178, 129, 109, 244, 252, 194, 204, 27, 200, 106, 202], &[0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), (&[38, 170, 57, 78, 234, 86, 48, 224, 124, 72, 174, 12, 149, 88, 206, 247, 185, 157, 136, 14, 198, 129, 121, 156, 12, 243, 14, 136, 134, 55, 29, 169, 213, 92, 123, 109, 126, 139, 228, 10, 88, 51, 198, 4, 8, 188, 78, 184, 171, 234, 78, 93, 168, 211, 37, 233, 8, 135, 156, 195, 59, 151, 205, 153], &[0, 0, 0, 0, 0, 0, 0, 0, 208, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), (&[38, 170, 57, 78, 234, 86, 48, 224, 124, 72, 174, 12, 149, 88, 206, 247, 185, 157, 136, 14, 198, 129, 121, 156, 12, 243, 14, 136, 134, 55, 29, 169, 216, 247, 229, 16, 146, 46, 205, 71, 180, 10, 28, 88, 41, 56, 34, 6, 69, 103, 185, 191, 60, 126, 225, 114, 12, 144, 76, 94, 12, 87, 247, 55], &[0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), (&[38, 170, 57, 78, 234, 86, 48, 224, 124, 72, 174, 12, 149, 88, 206, 247, 185, 157, 136, 14, 198, 129, 121, 156, 12, 243, 14, 136, 134, 55, 29, 169, 232, 139, 67, 253, 237, 99, 35, 239, 2, 255, 239, 251, 216, 196, 8, 70, 238, 9, 191, 49, 98, 113, 189, 34, 54, 150, 89, 201, 89, 221, 115, 58], &[0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), (&[38, 170, 57, 78, 234, 86, 48, 224, 124, 72, 174, 12, 149, 88, 206, 247, 185, 157, 136, 14, 198, 129, 121, 156, 12, 243, 14, 136, 134, 55, 29, 169, 233, 103, 96, 210, 116, 101, 58, 57, 180, 41, 168, 126, 186, 174, 157, 58, 164, 253, 245, 139, 144, 150, 207, 11, 235, 199, 196, 229, 164, 194, 237, 141], &[0, 0, 0, 0, 0, 0, 0, 0, 144, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), (&[38, 170, 57, 78, 234, 86, 48, 224, 124, 72, 174, 12, 149, 88, 206, 247, 185, 157, 136, 14, 198, 129, 121, 156, 12, 243, 14, 136, 134, 55, 29, 169, 250, 67, 84, 127, 177, 206, 187, 248, 7, 171, 139, 143, 54, 116, 13, 218, 140, 198, 7, 172, 12, 47, 130, 190, 178, 198, 48, 211, 195, 137, 122, 61], &[0, 0, 0, 0, 0, 0, 0, 0, 208, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 244, 1, 0, 0, 0, 0, 0, 0, 244, 1, 0, 0, 0, 0, 0, 0]), (&[58, 99, 111, 100, 101], &[]), (&[58, 101, 120, 116, 114, 105, 110, 115, 105, 99, 95, 105, 110, 100, 101, 120], &[0, 0, 0, 0]), (&[58, 104, 101, 97, 112, 112, 97, 103, 101, 115], &[8, 0, 0, 0, 0, 0, 0, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 11, 106, 69, 50, 30, 250, 233, 42, 234, 21, 224, 116, 14, 199, 175, 231], &[0, 0, 0, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 14, 160, 236, 172, 118, 69, 125, 15, 155, 57, 185, 129, 221, 16, 112, 18], &[8, 21, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 19, 142, 113, 97, 36, 145, 25, 45, 104, 222, 171, 126, 111, 86, 63, 225], &[2, 0, 0, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 40, 220, 203, 85, 155, 149, 196, 1, 104, 161, 178, 105, 101, 129, 181, 167], &[0, 0, 0, 0, 0, 0, 0, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 62, 209, 75, 69, 237, 32, 208, 84, 240, 94, 55, 226, 84, 44, 254, 112, 77, 254, 57, 245, 78, 123, 168, 74, 190, 191, 139, 138, 100, 234, 72, 46, 45, 174, 43, 141, 96, 79, 230, 7, 252, 242, 172, 39, 100, 43, 161, 177], &[40, 0, 0, 0, 0, 0, 0, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 62, 209, 75, 69, 237, 32, 208, 84, 240, 94, 55, 226, 84, 44, 254, 112, 83, 50, 194, 39, 103, 192, 178, 217, 125, 32, 22, 246, 168, 239, 120, 222, 173, 2, 155, 120, 7, 166, 176, 226, 172, 7, 43, 102, 21, 204, 92, 8], &[10, 0, 0, 0, 0, 0, 0, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 62, 209, 75, 69, 237, 32, 208, 84, 240, 94, 55, 226, 84, 44, 254, 112, 137, 6, 59, 94, 171, 160, 104, 80, 196, 182, 201, 87, 28, 70, 86, 200, 124, 206, 182, 4, 38, 77, 37, 233, 32, 121, 227, 154, 137, 129, 91, 166], &[30, 0, 0, 0, 0, 0, 0, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 62, 209, 75, 69, 237, 32, 208, 84, 240, 94, 55, 226, 84, 44, 254, 112, 170, 10, 228, 226, 42, 96, 247, 17, 144, 247, 250, 141, 205, 84, 104, 175, 49, 59, 161, 58, 250, 178, 59, 219, 34, 1, 81, 12, 128, 142, 182, 22], &[20, 0, 0, 0, 0, 0, 0, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 62, 209, 75, 69, 237, 32, 208, 84, 240, 94, 55, 226, 84, 44, 254, 112, 250, 67, 84, 127, 177, 206, 187, 248, 7, 171, 139, 143, 54, 116, 13, 218, 140, 198, 7, 172, 12, 47, 130, 190, 178, 198, 48, 211, 195, 137, 122, 61], &[100, 0, 0, 0, 0, 0, 0, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 66, 42, 219, 87, 159, 29, 191, 79, 56, 134, 197, 207, 163, 187, 140, 196, 94, 90, 15, 75, 176, 234, 179, 121, 134, 37, 171, 24, 100, 84, 93, 19, 212, 232, 208, 104, 153, 217, 219, 77, 97, 219, 157, 238, 147, 186, 2, 221], &[21, 0, 0, 0, 0, 0, 0, 0, 161, 15, 161, 15, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 66, 42, 219, 87, 159, 29, 191, 79, 56, 134, 197, 207, 163, 187, 140, 196, 165, 186, 85, 195, 163, 151, 212, 60, 23, 89, 63, 40, 154, 164, 151, 157, 10, 229, 146, 68, 179, 47, 3, 236, 19, 65, 97, 129, 175, 134, 209, 11], &[31, 0, 0, 0, 0, 0, 0, 0, 4, 4, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 66, 42, 219, 87, 159, 29, 191, 79, 56, 134, 197, 207, 163, 187, 140, 196, 189, 225, 131, 90, 186, 237, 15, 242, 121, 87, 0, 55, 252, 73, 213, 189, 23, 110, 180, 130, 163, 178, 129, 109, 244, 252, 194, 204, 27, 200, 106, 202], &[11, 0, 0, 0, 0, 0, 0, 0, 161, 15, 161, 15, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 66, 42, 219, 87, 159, 29, 191, 79, 56, 134, 197, 207, 163, 187, 140, 196, 213, 92, 123, 109, 126, 139, 228, 10, 88, 51, 198, 4, 8, 188, 78, 184, 171, 234, 78, 93, 168, 211, 37, 233, 8, 135, 156, 195, 59, 151, 205, 153], &[101, 0, 0, 0, 0, 0, 0, 0, 209, 7, 209, 7, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 66, 42, 219, 87, 159, 29, 191, 79, 56, 134, 197, 207, 163, 187, 140, 196, 216, 247, 229, 16, 146, 46, 205, 71, 180, 10, 28, 88, 41, 56, 34, 6, 69, 103, 185, 191, 60, 126, 225, 114, 12, 144, 76, 94, 12, 87, 247, 55], &[41, 0, 0, 0, 0, 0, 0, 0, 161, 15, 161, 15, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 80, 154, 155, 110, 250, 147, 245, 187, 131, 248, 88, 240, 186, 191, 211, 11], &[0, 0, 0, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 85, 121, 41, 127, 77, 251, 150, 9, 231, 228, 194, 235, 171, 156, 228, 10], &[0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 86, 239, 98, 39, 206, 203, 47, 7, 39, 76, 176, 87, 45, 143, 164, 194], &[101, 0, 0, 0, 0, 0, 0, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 106, 147, 17, 38, 51, 187, 51, 84, 230, 121, 82, 252, 221, 116, 12, 213], &[31, 0, 0, 0, 0, 0, 0, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 131, 229, 133, 187, 197, 253, 206, 197, 114, 25, 192, 220, 129, 239, 95, 244, 83, 50, 194, 39, 103, 192, 178, 217, 125, 32, 22, 246, 168, 239, 120, 222, 173, 2, 155, 120, 7, 166, 176, 226, 172, 7, 43, 102, 21, 204, 92, 8], &[149, 17, 161, 15, 4, 101, 0, 0, 0, 0, 0, 0, 0, 245, 1]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 131, 229, 133, 187, 197, 253, 206, 197, 114, 25, 192, 220, 129, 239, 95, 244, 170, 10, 228, 226, 42, 96, 247, 17, 144, 247, 250, 141, 205, 84, 104, 175, 49, 59, 161, 58, 250, 178, 59, 219, 34, 1, 81, 12, 128, 142, 182, 22], &[125, 21, 161, 15, 4, 101, 0, 0, 0, 0, 0, 0, 0, 221, 5]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 136, 220, 222, 147, 76, 101, 130, 39, 238, 29, 250, 252, 214, 225, 105, 3, 83, 50, 194, 39, 103, 192, 178, 217, 125, 32, 22, 246, 168, 239, 120, 222, 173, 2, 155, 120, 7, 166, 176, 226, 172, 7, 43, 102, 21, 204, 92, 8], &[0, 1, 21, 0, 0, 0, 0, 0, 0, 0, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 136, 220, 222, 147, 76, 101, 130, 39, 238, 29, 250, 252, 214, 225, 105, 3, 137, 6, 59, 94, 171, 160, 104, 80, 196, 182, 201, 87, 28, 70, 86, 200, 124, 206, 182, 4, 38, 77, 37, 233, 32, 121, 227, 154, 137, 129, 91, 166], &[0, 0, 1, 21, 0, 0, 0, 0, 0, 0, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 136, 220, 222, 147, 76, 101, 130, 39, 238, 29, 250, 252, 214, 225, 105, 3, 170, 10, 228, 226, 42, 96, 247, 17, 144, 247, 250, 141, 205, 84, 104, 175, 49, 59, 161, 58, 250, 178, 59, 219, 34, 1, 81, 12, 128, 142, 182, 22], &[0, 1, 31, 0, 0, 0, 0, 0, 0, 0, 1, 11, 0, 0, 0, 0, 0, 0, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 146, 32, 225, 114, 190, 211, 22, 96, 95, 115, 241, 255, 123, 74, 222, 152, 77, 254, 57, 245, 78, 123, 168, 74, 190, 191, 139, 138, 100, 234, 72, 46, 45, 174, 43, 141, 96, 79, 230, 7, 252, 242, 172, 39, 100, 43, 161, 177], &[0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 146, 32, 225, 114, 190, 211, 22, 96, 95, 115, 241, 255, 123, 74, 222, 152, 83, 50, 194, 39, 103, 192, 178, 217, 125, 32, 22, 246, 168, 239, 120, 222, 173, 2, 155, 120, 7, 166, 176, 226, 172, 7, 43, 102, 21, 204, 92, 8], &[0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 146, 32, 225, 114, 190, 211, 22, 96, 95, 115, 241, 255, 123, 74, 222, 152, 137, 6, 59, 94, 171, 160, 104, 80, 196, 182, 201, 87, 28, 70, 86, 200, 124, 206, 182, 4, 38, 77, 37, 233, 32, 121, 227, 154, 137, 129, 91, 166], &[0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 146, 32, 225, 114, 190, 211, 22, 96, 95, 115, 241, 255, 123, 74, 222, 152, 170, 10, 228, 226, 42, 96, 247, 17, 144, 247, 250, 141, 205, 84, 104, 175, 49, 59, 161, 58, 250, 178, 59, 219, 34, 1, 81, 12, 128, 142, 182, 22], &[0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 146, 32, 225, 114, 190, 211, 22, 96, 95, 115, 241, 255, 123, 74, 222, 152, 250, 67, 84, 127, 177, 206, 187, 248, 7, 171, 139, 143, 54, 116, 13, 218, 140, 198, 7, 172, 12, 47, 130, 190, 178, 198, 48, 211, 195, 137, 122, 61], &[0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 156, 106, 99, 127, 98, 174, 42, 241, 199, 227, 30, 237, 126, 150, 190, 4, 250, 67, 84, 127, 177, 206, 187, 248, 7, 171, 139, 143, 54, 116, 13, 218, 140, 198, 7, 172, 12, 47, 130, 190, 178, 198, 48, 211, 195, 137, 122, 61], &[8, 11, 0, 0, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 156, 189, 47, 11, 41, 160, 8, 163, 96, 9, 172, 68, 204, 160, 201, 105], &[101, 4, 0, 0, 0, 0, 0, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 180, 154, 39, 56, 238, 179, 8, 150, 170, 203, 139, 63, 180, 100, 113, 189], &[0, 0, 0, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 194, 154, 3, 16, 225, 187, 69, 210, 12, 172, 231, 124, 203, 98, 201, 125], &[0, 225, 245, 5]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 234, 7, 222, 43, 143, 1, 5, 22, 220, 163, 247, 239, 82, 247, 172, 90], &[4, 0, 0, 0, 0, 0, 0, 0, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 247, 218, 208, 49, 115, 36, 174, 202, 232, 116, 75, 135, 252, 149, 242, 243], &[0]), (&[194, 38, 18, 118, 204, 157, 31, 133, 152, 234, 75, 106, 116, 177, 92, 47, 33, 143, 38, 199, 58, 221, 99, 72, 151, 85, 11, 64, 3, 178, 107, 198, 77, 254, 57, 245, 78, 123, 168, 74, 190, 191, 139, 138, 100, 234, 72, 46, 45, 174, 43, 141, 96, 79, 230, 7, 252, 242, 172, 39, 100, 43, 161, 177], &[4, 115, 116, 97, 107, 105, 110, 103, 32, 232, 3, 0, 0, 0, 0, 0, 0, 2]), (&[194, 38, 18, 118, 204, 157, 31, 133, 152, 234, 75, 106, 116, 177, 92, 47, 33, 143, 38, 199, 58, 221, 99, 72, 151, 85, 11, 64, 3, 178, 107, 198, 83, 50, 194, 39, 103, 192, 178, 217, 125, 32, 22, 246, 168, 239, 120, 222, 173, 2, 155, 120, 7, 166, 176, 226, 172, 7, 43, 102, 21, 204, 92, 8], &[4, 115, 116, 97, 107, 105, 110, 103, 32, 232, 3, 0, 0, 0, 0, 0, 0, 2]), (&[194, 38, 18, 118, 204, 157, 31, 133, 152, 234, 75, 106, 116, 177, 92, 47, 33, 143, 38, 199, 58, 221, 99, 72, 151, 85, 11, 64, 3, 178, 107, 198, 137, 6, 59, 94, 171, 160, 104, 80, 196, 182, 201, 87, 28, 70, 86, 200, 124, 206, 182, 4, 38, 77, 37, 233, 32, 121, 227, 154, 137, 129, 91, 166], &[4, 115, 116, 97, 107, 105, 110, 103, 32, 1, 0, 0, 0, 0, 0, 0, 0, 2]), (&[194, 38, 18, 118, 204, 157, 31, 133, 152, 234, 75, 106, 116, 177, 92, 47, 33, 143, 38, 199, 58, 221, 99, 72, 151, 85, 11, 64, 3, 178, 107, 198, 170, 10, 228, 226, 42, 96, 247, 17, 144, 247, 250, 141, 205, 84, 104, 175, 49, 59, 161, 58, 250, 178, 59, 219, 34, 1, 81, 12, 128, 142, 182, 22], &[4, 115, 116, 97, 107, 105, 110, 103, 32, 232, 3, 0, 0, 0, 0, 0, 0, 2]), (&[194, 38, 18, 118, 204, 157, 31, 133, 152, 234, 75, 106, 116, 177, 92, 47, 33, 143, 38, 199, 58, 221, 99, 72, 151, 85, 11, 64, 3, 178, 107, 198, 250, 67, 84, 127, 177, 206, 187, 248, 7, 171, 139, 143, 54, 116, 13, 218, 140, 198, 7, 172, 12, 47, 130, 190, 178, 198, 48, 211, 195, 137, 122, 61], &[4, 115, 116, 97, 107, 105, 110, 103, 32, 244, 1, 0, 0, 0, 0, 0, 0, 2]), (&[194, 38, 18, 118, 204, 157, 31, 133, 152, 234, 75, 106, 116, 177, 92, 47, 87, 200, 117, 228, 207, 247, 65, 72, 228, 98, 143, 38, 75, 151, 76, 128], &[214, 61, 165, 212, 232, 0, 0, 0]), (&[194, 38, 18, 118, 204, 157, 31, 133, 152, 234, 75, 106, 116, 177, 92, 47, 227, 253, 141, 247, 41, 112, 188, 130, 229, 38, 126, 160, 30, 221, 217, 73], &[1]), (&[206, 197, 7, 13, 96, 157, 211, 73, 127, 114, 189, 224, 127, 201, 107, 160, 76, 1, 78, 107, 248, 184, 194, 192, 17, 231, 41, 11, 133, 105, 107, 179, 159, 230, 50, 156, 192, 179, 158, 9, 52, 58, 115, 101, 115, 115, 105, 111, 110, 58, 107, 101, 121, 115, 83, 50, 194, 39, 103, 192, 178, 217, 125, 32, 22, 246, 168, 239, 120, 222, 173, 2, 155, 120, 7, 166, 176, 226, 172, 7, 43, 102, 21, 204, 92, 8], &[11, 0, 0, 0, 0, 0, 0, 0]), (&[206, 197, 7, 13, 96, 157, 211, 73, 127, 114, 189, 224, 127, 201, 107, 160, 76, 1, 78, 107, 248, 184, 194, 192, 17, 231, 41, 11, 133, 105, 107, 179, 159, 230, 50, 156, 192, 179, 158, 9, 52, 58, 115, 101, 115, 115, 105, 111, 110, 58, 107, 101, 121, 115, 170, 10, 228, 226, 42, 96, 247, 17, 144, 247, 250, 141, 205, 84, 104, 175, 49, 59, 161, 58, 250, 178, 59, 219, 34, 1, 81, 12, 128, 142, 182, 22], &[21, 0, 0, 0, 0, 0, 0, 0]), (&[206, 197, 7, 13, 96, 157, 211, 73, 127, 114, 189, 224, 127, 201, 107, 160, 114, 99, 128, 64, 70, 131, 252, 137, 232, 35, 52, 80, 200, 170, 25, 80, 159, 230, 50, 156, 192, 179, 158, 9, 52, 58, 115, 101, 115, 115, 105, 111, 110, 58, 107, 101, 121, 115, 109, 123, 24, 86, 30, 19, 159, 228, 49, 200, 33, 139, 70, 205, 244, 47, 40, 190, 110, 43, 138, 12, 26, 121, 5, 219, 103, 1, 110, 91, 142, 123], &[11, 0, 0, 0, 0, 0, 0, 0]), (&[206, 197, 7, 13, 96, 157, 211, 73, 127, 114, 189, 224, 127, 201, 107, 160, 114, 99, 128, 64, 70, 131, 252, 137, 232, 35, 52, 80, 200, 170, 25, 80, 159, 230, 50, 156, 192, 179, 158, 9, 52, 58, 115, 101, 115, 115, 105, 111, 110, 58, 107, 101, 121, 115, 238, 43, 102, 225, 142, 104, 190, 12, 183, 86, 115, 25, 37, 223, 229, 65, 253, 167, 152, 54, 57, 147, 167, 137, 80, 161, 2, 235, 195, 174, 40, 244], &[21, 0, 0, 0, 0, 0, 0, 0]), (&[206, 197, 7, 13, 96, 157, 211, 73, 127, 114, 189, 224, 127, 201, 107, 160, 114, 118, 56, 0, 163, 106, 153, 253, 252, 124, 16, 246, 65, 95, 110, 230], &[1, 0, 0, 0]), (&[206, 197, 7, 13, 96, 157, 211, 73, 127, 114, 189, 224, 127, 201, 107, 160, 136, 220, 222, 147, 76, 101, 130, 39, 238, 29, 250, 252, 214, 225, 105, 3], &[8, 21, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0]), (&[206, 197, 7, 13, 96, 157, 211, 73, 127, 114, 189, 224, 127, 201, 107, 160, 148, 80, 191, 164, 185, 106, 63, 167, 163, 200, 244, 13, 166, 191, 50, 225], &[0]), (&[206, 197, 7, 13, 96, 157, 211, 73, 127, 114, 189, 224, 127, 201, 107, 160, 152, 239, 125, 192, 96, 67, 110, 78, 216, 3, 175, 7, 99, 43, 137, 182, 17, 218, 109, 31, 118, 29, 223, 155, 219, 76, 157, 110, 83, 3, 235, 212, 31, 97, 133, 141, 10, 86, 71, 161, 167, 191, 224, 137, 191, 146, 27, 233], &[44, 175, 112, 32, 141, 187, 198, 225, 208, 96, 126, 2, 8, 79, 212, 67, 222, 67, 84, 75, 213, 91, 72, 122, 231, 108, 125, 176, 42, 11, 117, 78, 2, 0, 0, 0]), (&[206, 197, 7, 13, 96, 157, 211, 73, 127, 114, 189, 224, 127, 201, 107, 160, 152, 239, 125, 192, 96, 67, 110, 78, 216, 3, 175, 7, 99, 43, 137, 182, 123, 10, 161, 115, 94, 91, 165, 141, 50, 54, 49, 108, 103, 31, 228, 240, 14, 211, 102, 238, 114, 65, 124, 158, 208, 42, 83, 168, 1, 158, 133, 184], &[44, 175, 112, 32, 141, 187, 198, 225, 208, 96, 126, 2, 8, 79, 212, 67, 222, 67, 84, 75, 213, 91, 72, 122, 231, 108, 125, 176, 42, 11, 117, 78, 2, 0, 0, 0]), (&[206, 197, 7, 13, 96, 157, 211, 73, 127, 114, 189, 224, 127, 201, 107, 160, 152, 239, 125, 192, 96, 67, 110, 78, 216, 3, 175, 7, 99, 43, 137, 182, 225, 44, 34, 212, 241, 98, 217, 160, 18, 201, 49, 146, 51, 218, 93, 62, 146, 60, 197, 225, 2, 155, 143, 144, 228, 114, 73, 201, 171, 37, 107, 53], &[44, 175, 112, 32, 141, 187, 198, 225, 208, 96, 126, 2, 8, 79, 212, 67, 222, 67, 84, 75, 213, 91, 72, 122, 231, 108, 125, 176, 42, 11, 117, 78, 2, 0, 0, 0]), (&[206, 197, 7, 13, 96, 157, 211, 73, 127, 114, 189, 224, 127, 201, 107, 160, 224, 205, 208, 98, 230, 234, 242, 66, 149, 173, 76, 207, 196, 29, 70, 9], &[8, 21, 0, 0, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0]), (&[206, 197, 7, 13, 96, 157, 211, 73, 127, 114, 189, 224, 127, 201, 107, 160, 255, 58, 225, 39, 112, 190, 162, 228, 141, 155, 222, 115, 133, 231, 162, 95], &[0, 0, 0, 0, 3, 0, 0, 0]), (&[240, 195, 101, 195, 207, 89, 214, 113, 235, 114, 218, 14, 122, 65, 19, 196, 159, 31, 5, 21, 244, 98, 205, 207, 132, 224, 241, 214, 4, 93, 252, 187], &[232, 3, 0, 0, 0, 0, 0, 0])]; +pub const _2: &[(&[u8], &[u8])] = &[(&[38, 170, 57, 78, 234, 86, 48, 224, 124, 72, 174, 12, 149, 88, 206, 247, 2, 165, 193, 177, 154, 183, 160, 79, 83, 108, 81, 154, 202, 73, 131, 172], &[2, 0, 0, 0, 0, 0, 0, 0]), (&[38, 170, 57, 78, 234, 86, 48, 224, 124, 72, 174, 12, 149, 88, 206, 247, 10, 152, 253, 190, 156, 230, 197, 88, 55, 87, 108, 96, 199, 175, 56, 80], &[17, 0, 0, 0]), (&[38, 170, 57, 78, 234, 86, 48, 224, 124, 72, 174, 12, 149, 88, 206, 247, 128, 212, 30, 94, 22, 5, 103, 101, 188, 132, 97, 133, 16, 114, 201, 215], &[68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), (&[38, 170, 57, 78, 234, 86, 48, 224, 124, 72, 174, 12, 149, 88, 206, 247, 138, 66, 243, 51, 35, 203, 92, 237, 59, 68, 221, 130, 95, 218, 159, 204], &[69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69]), (&[38, 170, 57, 78, 234, 86, 48, 224, 124, 72, 174, 12, 149, 88, 206, 247, 164, 71, 4, 181, 104, 210, 22, 103, 53, 106, 90, 5, 12, 17, 135, 70, 129, 228, 122, 25, 230, 178, 155, 10, 101, 185, 89, 23, 98, 206, 81, 67, 237, 48, 208, 38, 30, 93, 36, 163, 32, 23, 82, 80, 107, 32, 241, 92], &[69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69]), (&[38, 170, 57, 78, 234, 86, 48, 224, 124, 72, 174, 12, 149, 88, 206, 247, 185, 157, 136, 14, 198, 129, 121, 156, 12, 243, 14, 136, 134, 55, 29, 169, 29, 189, 125, 11, 86, 26, 65, 210, 60, 42, 70, 154, 212, 47, 189, 112, 213, 67, 139, 174, 130, 111, 111, 214, 7, 65, 49, 144, 195, 124, 54, 59], &[0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), (&[38, 170, 57, 78, 234, 86, 48, 224, 124, 72, 174, 12, 149, 88, 206, 247, 185, 157, 136, 14, 198, 129, 121, 156, 12, 243, 14, 136, 134, 55, 29, 169, 77, 254, 57, 245, 78, 123, 168, 74, 190, 191, 139, 138, 100, 234, 72, 46, 45, 174, 43, 141, 96, 79, 230, 7, 252, 242, 172, 39, 100, 43, 161, 177], &[0, 0, 0, 0, 0, 0, 0, 0, 208, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 232, 3, 0, 0, 0, 0, 0, 0, 232, 3, 0, 0, 0, 0, 0, 0]), (&[38, 170, 57, 78, 234, 86, 48, 224, 124, 72, 174, 12, 149, 88, 206, 247, 185, 157, 136, 14, 198, 129, 121, 156, 12, 243, 14, 136, 134, 55, 29, 169, 83, 50, 194, 39, 103, 192, 178, 217, 125, 32, 22, 246, 168, 239, 120, 222, 173, 2, 155, 120, 7, 166, 176, 226, 172, 7, 43, 102, 21, 204, 92, 8], &[0, 0, 0, 0, 0, 0, 0, 0, 232, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 232, 3, 0, 0, 0, 0, 0, 0, 232, 3, 0, 0, 0, 0, 0, 0]), (&[38, 170, 57, 78, 234, 86, 48, 224, 124, 72, 174, 12, 149, 88, 206, 247, 185, 157, 136, 14, 198, 129, 121, 156, 12, 243, 14, 136, 134, 55, 29, 169, 94, 90, 15, 75, 176, 234, 179, 121, 134, 37, 171, 24, 100, 84, 93, 19, 212, 232, 208, 104, 153, 217, 219, 77, 97, 219, 157, 238, 147, 186, 2, 221], &[0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), (&[38, 170, 57, 78, 234, 86, 48, 224, 124, 72, 174, 12, 149, 88, 206, 247, 185, 157, 136, 14, 198, 129, 121, 156, 12, 243, 14, 136, 134, 55, 29, 169, 100, 74, 81, 252, 33, 158, 145, 69, 184, 87, 123, 183, 118, 40, 118, 123, 28, 47, 115, 116, 142, 218, 139, 120, 139, 252, 102, 161, 181, 42, 32, 248], &[0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 165, 212, 232, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), (&[38, 170, 57, 78, 234, 86, 48, 224, 124, 72, 174, 12, 149, 88, 206, 247, 185, 157, 136, 14, 198, 129, 121, 156, 12, 243, 14, 136, 134, 55, 29, 169, 108, 221, 179, 103, 175, 189, 88, 59, 180, 143, 155, 189, 125, 91, 163, 177, 208, 115, 139, 72, 129, 177, 205, 221, 56, 22, 149, 38, 216, 21, 129, 55], &[0, 0, 0, 0, 0, 0, 0, 0, 44, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), (&[38, 170, 57, 78, 234, 86, 48, 224, 124, 72, 174, 12, 149, 88, 206, 247, 185, 157, 136, 14, 198, 129, 121, 156, 12, 243, 14, 136, 134, 55, 29, 169, 137, 6, 59, 94, 171, 160, 104, 80, 196, 182, 201, 87, 28, 70, 86, 200, 124, 206, 182, 4, 38, 77, 37, 233, 32, 121, 227, 154, 137, 129, 91, 166], &[0, 0, 0, 0, 0, 0, 0, 0, 208, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0]), (&[38, 170, 57, 78, 234, 86, 48, 224, 124, 72, 174, 12, 149, 88, 206, 247, 185, 157, 136, 14, 198, 129, 121, 156, 12, 243, 14, 136, 134, 55, 29, 169, 165, 186, 85, 195, 163, 151, 212, 60, 23, 89, 63, 40, 154, 164, 151, 157, 10, 229, 146, 68, 179, 47, 3, 236, 19, 65, 97, 129, 175, 134, 209, 11], &[0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), (&[38, 170, 57, 78, 234, 86, 48, 224, 124, 72, 174, 12, 149, 88, 206, 247, 185, 157, 136, 14, 198, 129, 121, 156, 12, 243, 14, 136, 134, 55, 29, 169, 170, 10, 228, 226, 42, 96, 247, 17, 144, 247, 250, 141, 205, 84, 104, 175, 49, 59, 161, 58, 250, 178, 59, 219, 34, 1, 81, 12, 128, 142, 182, 22], &[0, 0, 0, 0, 0, 0, 0, 0, 208, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 232, 3, 0, 0, 0, 0, 0, 0, 232, 3, 0, 0, 0, 0, 0, 0]), (&[38, 170, 57, 78, 234, 86, 48, 224, 124, 72, 174, 12, 149, 88, 206, 247, 185, 157, 136, 14, 198, 129, 121, 156, 12, 243, 14, 136, 134, 55, 29, 169, 189, 225, 131, 90, 186, 237, 15, 242, 121, 87, 0, 55, 252, 73, 213, 189, 23, 110, 180, 130, 163, 178, 129, 109, 244, 252, 194, 204, 27, 200, 106, 202], &[0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), (&[38, 170, 57, 78, 234, 86, 48, 224, 124, 72, 174, 12, 149, 88, 206, 247, 185, 157, 136, 14, 198, 129, 121, 156, 12, 243, 14, 136, 134, 55, 29, 169, 213, 92, 123, 109, 126, 139, 228, 10, 88, 51, 198, 4, 8, 188, 78, 184, 171, 234, 78, 93, 168, 211, 37, 233, 8, 135, 156, 195, 59, 151, 205, 153], &[0, 0, 0, 0, 0, 0, 0, 0, 208, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), (&[38, 170, 57, 78, 234, 86, 48, 224, 124, 72, 174, 12, 149, 88, 206, 247, 185, 157, 136, 14, 198, 129, 121, 156, 12, 243, 14, 136, 134, 55, 29, 169, 216, 247, 229, 16, 146, 46, 205, 71, 180, 10, 28, 88, 41, 56, 34, 6, 69, 103, 185, 191, 60, 126, 225, 114, 12, 144, 76, 94, 12, 87, 247, 55], &[0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), (&[38, 170, 57, 78, 234, 86, 48, 224, 124, 72, 174, 12, 149, 88, 206, 247, 185, 157, 136, 14, 198, 129, 121, 156, 12, 243, 14, 136, 134, 55, 29, 169, 232, 139, 67, 253, 237, 99, 35, 239, 2, 255, 239, 251, 216, 196, 8, 70, 238, 9, 191, 49, 98, 113, 189, 34, 54, 150, 89, 201, 89, 221, 115, 58], &[0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), (&[38, 170, 57, 78, 234, 86, 48, 224, 124, 72, 174, 12, 149, 88, 206, 247, 185, 157, 136, 14, 198, 129, 121, 156, 12, 243, 14, 136, 134, 55, 29, 169, 233, 103, 96, 210, 116, 101, 58, 57, 180, 41, 168, 126, 186, 174, 157, 58, 164, 253, 245, 139, 144, 150, 207, 11, 235, 199, 196, 229, 164, 194, 237, 141], &[0, 0, 0, 0, 0, 0, 0, 0, 144, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), (&[38, 170, 57, 78, 234, 86, 48, 224, 124, 72, 174, 12, 149, 88, 206, 247, 185, 157, 136, 14, 198, 129, 121, 156, 12, 243, 14, 136, 134, 55, 29, 169, 250, 67, 84, 127, 177, 206, 187, 248, 7, 171, 139, 143, 54, 116, 13, 218, 140, 198, 7, 172, 12, 47, 130, 190, 178, 198, 48, 211, 195, 137, 122, 61], &[0, 0, 0, 0, 0, 0, 0, 0, 208, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 244, 1, 0, 0, 0, 0, 0, 0, 244, 1, 0, 0, 0, 0, 0, 0]), (&[58, 99, 111, 100, 101], &[]), (&[58, 101, 120, 116, 114, 105, 110, 115, 105, 99, 95, 105, 110, 100, 101, 120], &[0, 0, 0, 0]), (&[58, 104, 101, 97, 112, 112, 97, 103, 101, 115], &[8, 0, 0, 0, 0, 0, 0, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 11, 106, 69, 50, 30, 250, 233, 42, 234, 21, 224, 116, 14, 199, 175, 231], &[0, 0, 0, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 14, 160, 236, 172, 118, 69, 125, 15, 155, 57, 185, 129, 221, 16, 112, 18], &[8, 21, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 19, 142, 113, 97, 36, 145, 25, 45, 104, 222, 171, 126, 111, 86, 63, 225], &[2, 0, 0, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 40, 220, 203, 85, 155, 149, 196, 1, 104, 161, 178, 105, 101, 129, 181, 167], &[0, 0, 0, 0, 0, 0, 0, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 62, 209, 75, 69, 237, 32, 208, 84, 240, 94, 55, 226, 84, 44, 254, 112, 77, 254, 57, 245, 78, 123, 168, 74, 190, 191, 139, 138, 100, 234, 72, 46, 45, 174, 43, 141, 96, 79, 230, 7, 252, 242, 172, 39, 100, 43, 161, 177], &[40, 0, 0, 0, 0, 0, 0, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 62, 209, 75, 69, 237, 32, 208, 84, 240, 94, 55, 226, 84, 44, 254, 112, 83, 50, 194, 39, 103, 192, 178, 217, 125, 32, 22, 246, 168, 239, 120, 222, 173, 2, 155, 120, 7, 166, 176, 226, 172, 7, 43, 102, 21, 204, 92, 8], &[10, 0, 0, 0, 0, 0, 0, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 62, 209, 75, 69, 237, 32, 208, 84, 240, 94, 55, 226, 84, 44, 254, 112, 137, 6, 59, 94, 171, 160, 104, 80, 196, 182, 201, 87, 28, 70, 86, 200, 124, 206, 182, 4, 38, 77, 37, 233, 32, 121, 227, 154, 137, 129, 91, 166], &[30, 0, 0, 0, 0, 0, 0, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 62, 209, 75, 69, 237, 32, 208, 84, 240, 94, 55, 226, 84, 44, 254, 112, 170, 10, 228, 226, 42, 96, 247, 17, 144, 247, 250, 141, 205, 84, 104, 175, 49, 59, 161, 58, 250, 178, 59, 219, 34, 1, 81, 12, 128, 142, 182, 22], &[20, 0, 0, 0, 0, 0, 0, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 62, 209, 75, 69, 237, 32, 208, 84, 240, 94, 55, 226, 84, 44, 254, 112, 250, 67, 84, 127, 177, 206, 187, 248, 7, 171, 139, 143, 54, 116, 13, 218, 140, 198, 7, 172, 12, 47, 130, 190, 178, 198, 48, 211, 195, 137, 122, 61], &[100, 0, 0, 0, 0, 0, 0, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 66, 42, 219, 87, 159, 29, 191, 79, 56, 134, 197, 207, 163, 187, 140, 196, 94, 90, 15, 75, 176, 234, 179, 121, 134, 37, 171, 24, 100, 84, 93, 19, 212, 232, 208, 104, 153, 217, 219, 77, 97, 219, 157, 238, 147, 186, 2, 221], &[21, 0, 0, 0, 0, 0, 0, 0, 161, 15, 161, 15, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 66, 42, 219, 87, 159, 29, 191, 79, 56, 134, 197, 207, 163, 187, 140, 196, 165, 186, 85, 195, 163, 151, 212, 60, 23, 89, 63, 40, 154, 164, 151, 157, 10, 229, 146, 68, 179, 47, 3, 236, 19, 65, 97, 129, 175, 134, 209, 11], &[31, 0, 0, 0, 0, 0, 0, 0, 4, 4, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 66, 42, 219, 87, 159, 29, 191, 79, 56, 134, 197, 207, 163, 187, 140, 196, 189, 225, 131, 90, 186, 237, 15, 242, 121, 87, 0, 55, 252, 73, 213, 189, 23, 110, 180, 130, 163, 178, 129, 109, 244, 252, 194, 204, 27, 200, 106, 202], &[11, 0, 0, 0, 0, 0, 0, 0, 161, 15, 161, 15, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 66, 42, 219, 87, 159, 29, 191, 79, 56, 134, 197, 207, 163, 187, 140, 196, 213, 92, 123, 109, 126, 139, 228, 10, 88, 51, 198, 4, 8, 188, 78, 184, 171, 234, 78, 93, 168, 211, 37, 233, 8, 135, 156, 195, 59, 151, 205, 153], &[101, 0, 0, 0, 0, 0, 0, 0, 209, 7, 209, 7, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 66, 42, 219, 87, 159, 29, 191, 79, 56, 134, 197, 207, 163, 187, 140, 196, 216, 247, 229, 16, 146, 46, 205, 71, 180, 10, 28, 88, 41, 56, 34, 6, 69, 103, 185, 191, 60, 126, 225, 114, 12, 144, 76, 94, 12, 87, 247, 55], &[41, 0, 0, 0, 0, 0, 0, 0, 161, 15, 161, 15, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 80, 154, 155, 110, 250, 147, 245, 187, 131, 248, 88, 240, 186, 191, 211, 11], &[0, 0, 0, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 85, 121, 41, 127, 77, 251, 150, 9, 231, 228, 194, 235, 171, 156, 228, 10], &[0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 86, 239, 98, 39, 206, 203, 47, 7, 39, 76, 176, 87, 45, 143, 164, 194], &[101, 0, 0, 0, 0, 0, 0, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 106, 147, 17, 38, 51, 187, 51, 84, 230, 121, 82, 252, 221, 116, 12, 213], &[31, 0, 0, 0, 0, 0, 0, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 131, 229, 133, 187, 197, 253, 206, 197, 114, 25, 192, 220, 129, 239, 95, 244, 83, 50, 194, 39, 103, 192, 178, 217, 125, 32, 22, 246, 168, 239, 120, 222, 173, 2, 155, 120, 7, 166, 176, 226, 172, 7, 43, 102, 21, 204, 92, 8], &[149, 17, 161, 15, 4, 101, 0, 0, 0, 0, 0, 0, 0, 245, 1]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 131, 229, 133, 187, 197, 253, 206, 197, 114, 25, 192, 220, 129, 239, 95, 244, 170, 10, 228, 226, 42, 96, 247, 17, 144, 247, 250, 141, 205, 84, 104, 175, 49, 59, 161, 58, 250, 178, 59, 219, 34, 1, 81, 12, 128, 142, 182, 22], &[125, 21, 161, 15, 4, 101, 0, 0, 0, 0, 0, 0, 0, 221, 5]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 136, 220, 222, 147, 76, 101, 130, 39, 238, 29, 250, 252, 214, 225, 105, 3, 83, 50, 194, 39, 103, 192, 178, 217, 125, 32, 22, 246, 168, 239, 120, 222, 173, 2, 155, 120, 7, 166, 176, 226, 172, 7, 43, 102, 21, 204, 92, 8], &[0, 1, 21, 0, 0, 0, 0, 0, 0, 0, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 136, 220, 222, 147, 76, 101, 130, 39, 238, 29, 250, 252, 214, 225, 105, 3, 137, 6, 59, 94, 171, 160, 104, 80, 196, 182, 201, 87, 28, 70, 86, 200, 124, 206, 182, 4, 38, 77, 37, 233, 32, 121, 227, 154, 137, 129, 91, 166], &[0, 0, 1, 21, 0, 0, 0, 0, 0, 0, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 136, 220, 222, 147, 76, 101, 130, 39, 238, 29, 250, 252, 214, 225, 105, 3, 170, 10, 228, 226, 42, 96, 247, 17, 144, 247, 250, 141, 205, 84, 104, 175, 49, 59, 161, 58, 250, 178, 59, 219, 34, 1, 81, 12, 128, 142, 182, 22], &[0, 1, 31, 0, 0, 0, 0, 0, 0, 0, 1, 11, 0, 0, 0, 0, 0, 0, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 146, 32, 225, 114, 190, 211, 22, 96, 95, 115, 241, 255, 123, 74, 222, 152, 77, 254, 57, 245, 78, 123, 168, 74, 190, 191, 139, 138, 100, 234, 72, 46, 45, 174, 43, 141, 96, 79, 230, 7, 252, 242, 172, 39, 100, 43, 161, 177], &[0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 146, 32, 225, 114, 190, 211, 22, 96, 95, 115, 241, 255, 123, 74, 222, 152, 83, 50, 194, 39, 103, 192, 178, 217, 125, 32, 22, 246, 168, 239, 120, 222, 173, 2, 155, 120, 7, 166, 176, 226, 172, 7, 43, 102, 21, 204, 92, 8], &[0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 146, 32, 225, 114, 190, 211, 22, 96, 95, 115, 241, 255, 123, 74, 222, 152, 137, 6, 59, 94, 171, 160, 104, 80, 196, 182, 201, 87, 28, 70, 86, 200, 124, 206, 182, 4, 38, 77, 37, 233, 32, 121, 227, 154, 137, 129, 91, 166], &[0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 146, 32, 225, 114, 190, 211, 22, 96, 95, 115, 241, 255, 123, 74, 222, 152, 170, 10, 228, 226, 42, 96, 247, 17, 144, 247, 250, 141, 205, 84, 104, 175, 49, 59, 161, 58, 250, 178, 59, 219, 34, 1, 81, 12, 128, 142, 182, 22], &[0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 146, 32, 225, 114, 190, 211, 22, 96, 95, 115, 241, 255, 123, 74, 222, 152, 250, 67, 84, 127, 177, 206, 187, 248, 7, 171, 139, 143, 54, 116, 13, 218, 140, 198, 7, 172, 12, 47, 130, 190, 178, 198, 48, 211, 195, 137, 122, 61], &[0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 156, 106, 99, 127, 98, 174, 42, 241, 199, 227, 30, 237, 126, 150, 190, 4, 250, 67, 84, 127, 177, 206, 187, 248, 7, 171, 139, 143, 54, 116, 13, 218, 140, 198, 7, 172, 12, 47, 130, 190, 178, 198, 48, 211, 195, 137, 122, 61], &[8, 11, 0, 0, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 156, 189, 47, 11, 41, 160, 8, 163, 96, 9, 172, 68, 204, 160, 201, 105], &[101, 4, 0, 0, 0, 0, 0, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 180, 154, 39, 56, 238, 179, 8, 150, 170, 203, 139, 63, 180, 100, 113, 189], &[0, 0, 0, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 194, 154, 3, 16, 225, 187, 69, 210, 12, 172, 231, 124, 203, 98, 201, 125], &[0, 225, 245, 5]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 234, 7, 222, 43, 143, 1, 5, 22, 220, 163, 247, 239, 82, 247, 172, 90], &[4, 0, 0, 0, 0, 0, 0, 0, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 247, 218, 208, 49, 115, 36, 174, 202, 232, 116, 75, 135, 252, 149, 242, 243], &[0]), (&[194, 38, 18, 118, 204, 157, 31, 133, 152, 234, 75, 106, 116, 177, 92, 47, 33, 143, 38, 199, 58, 221, 99, 72, 151, 85, 11, 64, 3, 178, 107, 198, 77, 254, 57, 245, 78, 123, 168, 74, 190, 191, 139, 138, 100, 234, 72, 46, 45, 174, 43, 141, 96, 79, 230, 7, 252, 242, 172, 39, 100, 43, 161, 177], &[4, 115, 116, 97, 107, 105, 110, 103, 32, 232, 3, 0, 0, 0, 0, 0, 0, 2]), (&[194, 38, 18, 118, 204, 157, 31, 133, 152, 234, 75, 106, 116, 177, 92, 47, 33, 143, 38, 199, 58, 221, 99, 72, 151, 85, 11, 64, 3, 178, 107, 198, 83, 50, 194, 39, 103, 192, 178, 217, 125, 32, 22, 246, 168, 239, 120, 222, 173, 2, 155, 120, 7, 166, 176, 226, 172, 7, 43, 102, 21, 204, 92, 8], &[4, 115, 116, 97, 107, 105, 110, 103, 32, 232, 3, 0, 0, 0, 0, 0, 0, 2]), (&[194, 38, 18, 118, 204, 157, 31, 133, 152, 234, 75, 106, 116, 177, 92, 47, 33, 143, 38, 199, 58, 221, 99, 72, 151, 85, 11, 64, 3, 178, 107, 198, 137, 6, 59, 94, 171, 160, 104, 80, 196, 182, 201, 87, 28, 70, 86, 200, 124, 206, 182, 4, 38, 77, 37, 233, 32, 121, 227, 154, 137, 129, 91, 166], &[4, 115, 116, 97, 107, 105, 110, 103, 32, 1, 0, 0, 0, 0, 0, 0, 0, 2]), (&[194, 38, 18, 118, 204, 157, 31, 133, 152, 234, 75, 106, 116, 177, 92, 47, 33, 143, 38, 199, 58, 221, 99, 72, 151, 85, 11, 64, 3, 178, 107, 198, 170, 10, 228, 226, 42, 96, 247, 17, 144, 247, 250, 141, 205, 84, 104, 175, 49, 59, 161, 58, 250, 178, 59, 219, 34, 1, 81, 12, 128, 142, 182, 22], &[4, 115, 116, 97, 107, 105, 110, 103, 32, 232, 3, 0, 0, 0, 0, 0, 0, 2]), (&[194, 38, 18, 118, 204, 157, 31, 133, 152, 234, 75, 106, 116, 177, 92, 47, 33, 143, 38, 199, 58, 221, 99, 72, 151, 85, 11, 64, 3, 178, 107, 198, 250, 67, 84, 127, 177, 206, 187, 248, 7, 171, 139, 143, 54, 116, 13, 218, 140, 198, 7, 172, 12, 47, 130, 190, 178, 198, 48, 211, 195, 137, 122, 61], &[4, 115, 116, 97, 107, 105, 110, 103, 32, 244, 1, 0, 0, 0, 0, 0, 0, 2]), (&[194, 38, 18, 118, 204, 157, 31, 133, 152, 234, 75, 106, 116, 177, 92, 47, 87, 200, 117, 228, 207, 247, 65, 72, 228, 98, 143, 38, 75, 151, 76, 128], &[214, 61, 165, 212, 232, 0, 0, 0]), (&[194, 38, 18, 118, 204, 157, 31, 133, 152, 234, 75, 106, 116, 177, 92, 47, 227, 253, 141, 247, 41, 112, 188, 130, 229, 38, 126, 160, 30, 221, 217, 73], &[1]), (&[206, 197, 7, 13, 96, 157, 211, 73, 127, 114, 189, 224, 127, 201, 107, 160, 76, 1, 78, 107, 248, 184, 194, 192, 17, 231, 41, 11, 133, 105, 107, 179, 159, 230, 50, 156, 192, 179, 158, 9, 52, 58, 115, 101, 115, 115, 105, 111, 110, 58, 107, 101, 121, 115, 83, 50, 194, 39, 103, 192, 178, 217, 125, 32, 22, 246, 168, 239, 120, 222, 173, 2, 155, 120, 7, 166, 176, 226, 172, 7, 43, 102, 21, 204, 92, 8], &[11, 0, 0, 0, 0, 0, 0, 0]), (&[206, 197, 7, 13, 96, 157, 211, 73, 127, 114, 189, 224, 127, 201, 107, 160, 76, 1, 78, 107, 248, 184, 194, 192, 17, 231, 41, 11, 133, 105, 107, 179, 159, 230, 50, 156, 192, 179, 158, 9, 52, 58, 115, 101, 115, 115, 105, 111, 110, 58, 107, 101, 121, 115, 170, 10, 228, 226, 42, 96, 247, 17, 144, 247, 250, 141, 205, 84, 104, 175, 49, 59, 161, 58, 250, 178, 59, 219, 34, 1, 81, 12, 128, 142, 182, 22], &[21, 0, 0, 0, 0, 0, 0, 0]), (&[206, 197, 7, 13, 96, 157, 211, 73, 127, 114, 189, 224, 127, 201, 107, 160, 114, 99, 128, 64, 70, 131, 252, 137, 232, 35, 52, 80, 200, 170, 25, 80, 159, 230, 50, 156, 192, 179, 158, 9, 52, 58, 115, 101, 115, 115, 105, 111, 110, 58, 107, 101, 121, 115, 109, 123, 24, 86, 30, 19, 159, 228, 49, 200, 33, 139, 70, 205, 244, 47, 40, 190, 110, 43, 138, 12, 26, 121, 5, 219, 103, 1, 110, 91, 142, 123], &[11, 0, 0, 0, 0, 0, 0, 0]), (&[206, 197, 7, 13, 96, 157, 211, 73, 127, 114, 189, 224, 127, 201, 107, 160, 114, 99, 128, 64, 70, 131, 252, 137, 232, 35, 52, 80, 200, 170, 25, 80, 159, 230, 50, 156, 192, 179, 158, 9, 52, 58, 115, 101, 115, 115, 105, 111, 110, 58, 107, 101, 121, 115, 238, 43, 102, 225, 142, 104, 190, 12, 183, 86, 115, 25, 37, 223, 229, 65, 253, 167, 152, 54, 57, 147, 167, 137, 80, 161, 2, 235, 195, 174, 40, 244], &[21, 0, 0, 0, 0, 0, 0, 0]), (&[206, 197, 7, 13, 96, 157, 211, 73, 127, 114, 189, 224, 127, 201, 107, 160, 114, 118, 56, 0, 163, 106, 153, 253, 252, 124, 16, 246, 65, 95, 110, 230], &[2, 0, 0, 0]), (&[206, 197, 7, 13, 96, 157, 211, 73, 127, 114, 189, 224, 127, 201, 107, 160, 136, 220, 222, 147, 76, 101, 130, 39, 238, 29, 250, 252, 214, 225, 105, 3], &[8, 21, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0]), (&[206, 197, 7, 13, 96, 157, 211, 73, 127, 114, 189, 224, 127, 201, 107, 160, 148, 80, 191, 164, 185, 106, 63, 167, 163, 200, 244, 13, 166, 191, 50, 225], &[0]), (&[206, 197, 7, 13, 96, 157, 211, 73, 127, 114, 189, 224, 127, 201, 107, 160, 152, 239, 125, 192, 96, 67, 110, 78, 216, 3, 175, 7, 99, 43, 137, 182, 17, 218, 109, 31, 118, 29, 223, 155, 219, 76, 157, 110, 83, 3, 235, 212, 31, 97, 133, 141, 10, 86, 71, 161, 167, 191, 224, 137, 191, 146, 27, 233], &[44, 175, 112, 32, 141, 187, 198, 225, 208, 96, 126, 2, 8, 79, 212, 67, 222, 67, 84, 75, 213, 91, 72, 122, 231, 108, 125, 176, 42, 11, 117, 78, 2, 0, 0, 0]), (&[206, 197, 7, 13, 96, 157, 211, 73, 127, 114, 189, 224, 127, 201, 107, 160, 152, 239, 125, 192, 96, 67, 110, 78, 216, 3, 175, 7, 99, 43, 137, 182, 123, 10, 161, 115, 94, 91, 165, 141, 50, 54, 49, 108, 103, 31, 228, 240, 14, 211, 102, 238, 114, 65, 124, 158, 208, 42, 83, 168, 1, 158, 133, 184], &[44, 175, 112, 32, 141, 187, 198, 225, 208, 96, 126, 2, 8, 79, 212, 67, 222, 67, 84, 75, 213, 91, 72, 122, 231, 108, 125, 176, 42, 11, 117, 78, 2, 0, 0, 0]), (&[206, 197, 7, 13, 96, 157, 211, 73, 127, 114, 189, 224, 127, 201, 107, 160, 152, 239, 125, 192, 96, 67, 110, 78, 216, 3, 175, 7, 99, 43, 137, 182, 140, 3, 159, 247, 202, 161, 124, 206, 191, 202, 220, 68, 189, 159, 206, 106, 75, 102, 153, 196, 208, 61, 226, 227, 52, 154, 161, 220, 17, 25, 60, 215], &[44, 175, 112, 32, 141, 187, 198, 225, 208, 96, 126, 2, 8, 79, 212, 67, 222, 67, 84, 75, 213, 91, 72, 122, 231, 108, 125, 176, 42, 11, 117, 78, 2, 0, 0, 0]), (&[206, 197, 7, 13, 96, 157, 211, 73, 127, 114, 189, 224, 127, 201, 107, 160, 152, 239, 125, 192, 96, 67, 110, 78, 216, 3, 175, 7, 99, 43, 137, 182, 225, 44, 34, 212, 241, 98, 217, 160, 18, 201, 49, 146, 51, 218, 93, 62, 146, 60, 197, 225, 2, 155, 143, 144, 228, 114, 73, 201, 171, 37, 107, 53], &[44, 175, 112, 32, 141, 187, 198, 225, 208, 96, 126, 2, 8, 79, 212, 67, 222, 67, 84, 75, 213, 91, 72, 122, 231, 108, 125, 176, 42, 11, 117, 78, 2, 0, 0, 0]), (&[206, 197, 7, 13, 96, 157, 211, 73, 127, 114, 189, 224, 127, 201, 107, 160, 224, 205, 208, 98, 230, 234, 242, 66, 149, 173, 76, 207, 196, 29, 70, 9], &[8, 21, 0, 0, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0]), (&[206, 197, 7, 13, 96, 157, 211, 73, 127, 114, 189, 224, 127, 201, 107, 160, 255, 58, 225, 39, 112, 190, 162, 228, 141, 155, 222, 115, 133, 231, 162, 95], &[0, 0, 0, 0, 4, 0, 0, 0]), (&[240, 195, 101, 195, 207, 89, 214, 113, 235, 114, 218, 14, 122, 65, 19, 196, 159, 31, 5, 21, 244, 98, 205, 207, 132, 224, 241, 214, 4, 93, 252, 187], &[208, 7, 0, 0, 0, 0, 0, 0])]; +pub const _3: &[(&[u8], &[u8])] = &[(&[38, 170, 57, 78, 234, 86, 48, 224, 124, 72, 174, 12, 149, 88, 206, 247, 2, 165, 193, 177, 154, 183, 160, 79, 83, 108, 81, 154, 202, 73, 131, 172], &[3, 0, 0, 0, 0, 0, 0, 0]), (&[38, 170, 57, 78, 234, 86, 48, 224, 124, 72, 174, 12, 149, 88, 206, 247, 10, 152, 253, 190, 156, 230, 197, 88, 55, 87, 108, 96, 199, 175, 56, 80], &[19, 0, 0, 0]), (&[38, 170, 57, 78, 234, 86, 48, 224, 124, 72, 174, 12, 149, 88, 206, 247, 128, 212, 30, 94, 22, 5, 103, 101, 188, 132, 97, 133, 16, 114, 201, 215], &[76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), (&[38, 170, 57, 78, 234, 86, 48, 224, 124, 72, 174, 12, 149, 88, 206, 247, 138, 66, 243, 51, 35, 203, 92, 237, 59, 68, 221, 130, 95, 218, 159, 204], &[69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69]), (&[38, 170, 57, 78, 234, 86, 48, 224, 124, 72, 174, 12, 149, 88, 206, 247, 164, 71, 4, 181, 104, 210, 22, 103, 53, 106, 90, 5, 12, 17, 135, 70, 129, 228, 122, 25, 230, 178, 155, 10, 101, 185, 89, 23, 98, 206, 81, 67, 237, 48, 208, 38, 30, 93, 36, 163, 32, 23, 82, 80, 107, 32, 241, 92], &[69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69]), (&[38, 170, 57, 78, 234, 86, 48, 224, 124, 72, 174, 12, 149, 88, 206, 247, 185, 157, 136, 14, 198, 129, 121, 156, 12, 243, 14, 136, 134, 55, 29, 169, 29, 189, 125, 11, 86, 26, 65, 210, 60, 42, 70, 154, 212, 47, 189, 112, 213, 67, 139, 174, 130, 111, 111, 214, 7, 65, 49, 144, 195, 124, 54, 59], &[0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), (&[38, 170, 57, 78, 234, 86, 48, 224, 124, 72, 174, 12, 149, 88, 206, 247, 185, 157, 136, 14, 198, 129, 121, 156, 12, 243, 14, 136, 134, 55, 29, 169, 77, 254, 57, 245, 78, 123, 168, 74, 190, 191, 139, 138, 100, 234, 72, 46, 45, 174, 43, 141, 96, 79, 230, 7, 252, 242, 172, 39, 100, 43, 161, 177], &[0, 0, 0, 0, 0, 0, 0, 0, 208, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 232, 3, 0, 0, 0, 0, 0, 0, 232, 3, 0, 0, 0, 0, 0, 0]), (&[38, 170, 57, 78, 234, 86, 48, 224, 124, 72, 174, 12, 149, 88, 206, 247, 185, 157, 136, 14, 198, 129, 121, 156, 12, 243, 14, 136, 134, 55, 29, 169, 83, 50, 194, 39, 103, 192, 178, 217, 125, 32, 22, 246, 168, 239, 120, 222, 173, 2, 155, 120, 7, 166, 176, 226, 172, 7, 43, 102, 21, 204, 92, 8], &[0, 0, 0, 0, 0, 0, 0, 0, 232, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 232, 3, 0, 0, 0, 0, 0, 0, 232, 3, 0, 0, 0, 0, 0, 0]), (&[38, 170, 57, 78, 234, 86, 48, 224, 124, 72, 174, 12, 149, 88, 206, 247, 185, 157, 136, 14, 198, 129, 121, 156, 12, 243, 14, 136, 134, 55, 29, 169, 94, 90, 15, 75, 176, 234, 179, 121, 134, 37, 171, 24, 100, 84, 93, 19, 212, 232, 208, 104, 153, 217, 219, 77, 97, 219, 157, 238, 147, 186, 2, 221], &[0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), (&[38, 170, 57, 78, 234, 86, 48, 224, 124, 72, 174, 12, 149, 88, 206, 247, 185, 157, 136, 14, 198, 129, 121, 156, 12, 243, 14, 136, 134, 55, 29, 169, 100, 74, 81, 252, 33, 158, 145, 69, 184, 87, 123, 183, 118, 40, 118, 123, 28, 47, 115, 116, 142, 218, 139, 120, 139, 252, 102, 161, 181, 42, 32, 248], &[0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 165, 212, 232, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), (&[38, 170, 57, 78, 234, 86, 48, 224, 124, 72, 174, 12, 149, 88, 206, 247, 185, 157, 136, 14, 198, 129, 121, 156, 12, 243, 14, 136, 134, 55, 29, 169, 108, 221, 179, 103, 175, 189, 88, 59, 180, 143, 155, 189, 125, 91, 163, 177, 208, 115, 139, 72, 129, 177, 205, 221, 56, 22, 149, 38, 216, 21, 129, 55], &[0, 0, 0, 0, 0, 0, 0, 0, 44, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), (&[38, 170, 57, 78, 234, 86, 48, 224, 124, 72, 174, 12, 149, 88, 206, 247, 185, 157, 136, 14, 198, 129, 121, 156, 12, 243, 14, 136, 134, 55, 29, 169, 137, 6, 59, 94, 171, 160, 104, 80, 196, 182, 201, 87, 28, 70, 86, 200, 124, 206, 182, 4, 38, 77, 37, 233, 32, 121, 227, 154, 137, 129, 91, 166], &[0, 0, 0, 0, 0, 0, 0, 0, 208, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0]), (&[38, 170, 57, 78, 234, 86, 48, 224, 124, 72, 174, 12, 149, 88, 206, 247, 185, 157, 136, 14, 198, 129, 121, 156, 12, 243, 14, 136, 134, 55, 29, 169, 165, 186, 85, 195, 163, 151, 212, 60, 23, 89, 63, 40, 154, 164, 151, 157, 10, 229, 146, 68, 179, 47, 3, 236, 19, 65, 97, 129, 175, 134, 209, 11], &[0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), (&[38, 170, 57, 78, 234, 86, 48, 224, 124, 72, 174, 12, 149, 88, 206, 247, 185, 157, 136, 14, 198, 129, 121, 156, 12, 243, 14, 136, 134, 55, 29, 169, 170, 10, 228, 226, 42, 96, 247, 17, 144, 247, 250, 141, 205, 84, 104, 175, 49, 59, 161, 58, 250, 178, 59, 219, 34, 1, 81, 12, 128, 142, 182, 22], &[0, 0, 0, 0, 0, 0, 0, 0, 208, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 232, 3, 0, 0, 0, 0, 0, 0, 232, 3, 0, 0, 0, 0, 0, 0]), (&[38, 170, 57, 78, 234, 86, 48, 224, 124, 72, 174, 12, 149, 88, 206, 247, 185, 157, 136, 14, 198, 129, 121, 156, 12, 243, 14, 136, 134, 55, 29, 169, 189, 225, 131, 90, 186, 237, 15, 242, 121, 87, 0, 55, 252, 73, 213, 189, 23, 110, 180, 130, 163, 178, 129, 109, 244, 252, 194, 204, 27, 200, 106, 202], &[0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), (&[38, 170, 57, 78, 234, 86, 48, 224, 124, 72, 174, 12, 149, 88, 206, 247, 185, 157, 136, 14, 198, 129, 121, 156, 12, 243, 14, 136, 134, 55, 29, 169, 213, 92, 123, 109, 126, 139, 228, 10, 88, 51, 198, 4, 8, 188, 78, 184, 171, 234, 78, 93, 168, 211, 37, 233, 8, 135, 156, 195, 59, 151, 205, 153], &[0, 0, 0, 0, 0, 0, 0, 0, 208, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), (&[38, 170, 57, 78, 234, 86, 48, 224, 124, 72, 174, 12, 149, 88, 206, 247, 185, 157, 136, 14, 198, 129, 121, 156, 12, 243, 14, 136, 134, 55, 29, 169, 216, 247, 229, 16, 146, 46, 205, 71, 180, 10, 28, 88, 41, 56, 34, 6, 69, 103, 185, 191, 60, 126, 225, 114, 12, 144, 76, 94, 12, 87, 247, 55], &[0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), (&[38, 170, 57, 78, 234, 86, 48, 224, 124, 72, 174, 12, 149, 88, 206, 247, 185, 157, 136, 14, 198, 129, 121, 156, 12, 243, 14, 136, 134, 55, 29, 169, 232, 139, 67, 253, 237, 99, 35, 239, 2, 255, 239, 251, 216, 196, 8, 70, 238, 9, 191, 49, 98, 113, 189, 34, 54, 150, 89, 201, 89, 221, 115, 58], &[0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), (&[38, 170, 57, 78, 234, 86, 48, 224, 124, 72, 174, 12, 149, 88, 206, 247, 185, 157, 136, 14, 198, 129, 121, 156, 12, 243, 14, 136, 134, 55, 29, 169, 233, 103, 96, 210, 116, 101, 58, 57, 180, 41, 168, 126, 186, 174, 157, 58, 164, 253, 245, 139, 144, 150, 207, 11, 235, 199, 196, 229, 164, 194, 237, 141], &[0, 0, 0, 0, 0, 0, 0, 0, 144, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), (&[38, 170, 57, 78, 234, 86, 48, 224, 124, 72, 174, 12, 149, 88, 206, 247, 185, 157, 136, 14, 198, 129, 121, 156, 12, 243, 14, 136, 134, 55, 29, 169, 250, 67, 84, 127, 177, 206, 187, 248, 7, 171, 139, 143, 54, 116, 13, 218, 140, 198, 7, 172, 12, 47, 130, 190, 178, 198, 48, 211, 195, 137, 122, 61], &[0, 0, 0, 0, 0, 0, 0, 0, 208, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 244, 1, 0, 0, 0, 0, 0, 0, 244, 1, 0, 0, 0, 0, 0, 0]), (&[58, 99, 111, 100, 101], &[]), (&[58, 101, 120, 116, 114, 105, 110, 115, 105, 99, 95, 105, 110, 100, 101, 120], &[0, 0, 0, 0]), (&[58, 104, 101, 97, 112, 112, 97, 103, 101, 115], &[8, 0, 0, 0, 0, 0, 0, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 11, 106, 69, 50, 30, 250, 233, 42, 234, 21, 224, 116, 14, 199, 175, 231], &[1, 0, 0, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 14, 160, 236, 172, 118, 69, 125, 15, 155, 57, 185, 129, 221, 16, 112, 18], &[8, 21, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 19, 142, 113, 97, 36, 145, 25, 45, 104, 222, 171, 126, 111, 86, 63, 225], &[2, 0, 0, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 40, 220, 203, 85, 155, 149, 196, 1, 104, 161, 178, 105, 101, 129, 181, 167], &[0, 0, 0, 0, 0, 0, 0, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 62, 209, 75, 69, 237, 32, 208, 84, 240, 94, 55, 226, 84, 44, 254, 112, 77, 254, 57, 245, 78, 123, 168, 74, 190, 191, 139, 138, 100, 234, 72, 46, 45, 174, 43, 141, 96, 79, 230, 7, 252, 242, 172, 39, 100, 43, 161, 177], &[40, 0, 0, 0, 0, 0, 0, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 62, 209, 75, 69, 237, 32, 208, 84, 240, 94, 55, 226, 84, 44, 254, 112, 83, 50, 194, 39, 103, 192, 178, 217, 125, 32, 22, 246, 168, 239, 120, 222, 173, 2, 155, 120, 7, 166, 176, 226, 172, 7, 43, 102, 21, 204, 92, 8], &[10, 0, 0, 0, 0, 0, 0, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 62, 209, 75, 69, 237, 32, 208, 84, 240, 94, 55, 226, 84, 44, 254, 112, 137, 6, 59, 94, 171, 160, 104, 80, 196, 182, 201, 87, 28, 70, 86, 200, 124, 206, 182, 4, 38, 77, 37, 233, 32, 121, 227, 154, 137, 129, 91, 166], &[30, 0, 0, 0, 0, 0, 0, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 62, 209, 75, 69, 237, 32, 208, 84, 240, 94, 55, 226, 84, 44, 254, 112, 170, 10, 228, 226, 42, 96, 247, 17, 144, 247, 250, 141, 205, 84, 104, 175, 49, 59, 161, 58, 250, 178, 59, 219, 34, 1, 81, 12, 128, 142, 182, 22], &[20, 0, 0, 0, 0, 0, 0, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 62, 209, 75, 69, 237, 32, 208, 84, 240, 94, 55, 226, 84, 44, 254, 112, 250, 67, 84, 127, 177, 206, 187, 248, 7, 171, 139, 143, 54, 116, 13, 218, 140, 198, 7, 172, 12, 47, 130, 190, 178, 198, 48, 211, 195, 137, 122, 61], &[100, 0, 0, 0, 0, 0, 0, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 66, 42, 219, 87, 159, 29, 191, 79, 56, 134, 197, 207, 163, 187, 140, 196, 94, 90, 15, 75, 176, 234, 179, 121, 134, 37, 171, 24, 100, 84, 93, 19, 212, 232, 208, 104, 153, 217, 219, 77, 97, 219, 157, 238, 147, 186, 2, 221], &[21, 0, 0, 0, 0, 0, 0, 0, 161, 15, 161, 15, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 66, 42, 219, 87, 159, 29, 191, 79, 56, 134, 197, 207, 163, 187, 140, 196, 165, 186, 85, 195, 163, 151, 212, 60, 23, 89, 63, 40, 154, 164, 151, 157, 10, 229, 146, 68, 179, 47, 3, 236, 19, 65, 97, 129, 175, 134, 209, 11], &[31, 0, 0, 0, 0, 0, 0, 0, 4, 4, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 66, 42, 219, 87, 159, 29, 191, 79, 56, 134, 197, 207, 163, 187, 140, 196, 189, 225, 131, 90, 186, 237, 15, 242, 121, 87, 0, 55, 252, 73, 213, 189, 23, 110, 180, 130, 163, 178, 129, 109, 244, 252, 194, 204, 27, 200, 106, 202], &[11, 0, 0, 0, 0, 0, 0, 0, 161, 15, 161, 15, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 66, 42, 219, 87, 159, 29, 191, 79, 56, 134, 197, 207, 163, 187, 140, 196, 213, 92, 123, 109, 126, 139, 228, 10, 88, 51, 198, 4, 8, 188, 78, 184, 171, 234, 78, 93, 168, 211, 37, 233, 8, 135, 156, 195, 59, 151, 205, 153], &[101, 0, 0, 0, 0, 0, 0, 0, 209, 7, 209, 7, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 66, 42, 219, 87, 159, 29, 191, 79, 56, 134, 197, 207, 163, 187, 140, 196, 216, 247, 229, 16, 146, 46, 205, 71, 180, 10, 28, 88, 41, 56, 34, 6, 69, 103, 185, 191, 60, 126, 225, 114, 12, 144, 76, 94, 12, 87, 247, 55], &[41, 0, 0, 0, 0, 0, 0, 0, 161, 15, 161, 15, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 80, 154, 155, 110, 250, 147, 245, 187, 131, 248, 88, 240, 186, 191, 211, 11], &[3, 0, 0, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 85, 121, 41, 127, 77, 251, 150, 9, 231, 228, 194, 235, 171, 156, 228, 10], &[0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 86, 239, 98, 39, 206, 203, 47, 7, 39, 76, 176, 87, 45, 143, 164, 194], &[101, 0, 0, 0, 0, 0, 0, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 106, 147, 17, 38, 51, 187, 51, 84, 230, 121, 82, 252, 221, 116, 12, 213], &[31, 0, 0, 0, 0, 0, 0, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 131, 229, 133, 187, 197, 253, 206, 197, 114, 25, 192, 220, 129, 239, 95, 244, 83, 50, 194, 39, 103, 192, 178, 217, 125, 32, 22, 246, 168, 239, 120, 222, 173, 2, 155, 120, 7, 166, 176, 226, 172, 7, 43, 102, 21, 204, 92, 8], &[149, 17, 161, 15, 4, 101, 0, 0, 0, 0, 0, 0, 0, 245, 1]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 131, 229, 133, 187, 197, 253, 206, 197, 114, 25, 192, 220, 129, 239, 95, 244, 170, 10, 228, 226, 42, 96, 247, 17, 144, 247, 250, 141, 205, 84, 104, 175, 49, 59, 161, 58, 250, 178, 59, 219, 34, 1, 81, 12, 128, 142, 182, 22], &[125, 21, 161, 15, 4, 101, 0, 0, 0, 0, 0, 0, 0, 221, 5]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 136, 220, 222, 147, 76, 101, 130, 39, 238, 29, 250, 252, 214, 225, 105, 3, 83, 50, 194, 39, 103, 192, 178, 217, 125, 32, 22, 246, 168, 239, 120, 222, 173, 2, 155, 120, 7, 166, 176, 226, 172, 7, 43, 102, 21, 204, 92, 8], &[0, 1, 21, 0, 0, 0, 0, 0, 0, 0, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 136, 220, 222, 147, 76, 101, 130, 39, 238, 29, 250, 252, 214, 225, 105, 3, 137, 6, 59, 94, 171, 160, 104, 80, 196, 182, 201, 87, 28, 70, 86, 200, 124, 206, 182, 4, 38, 77, 37, 233, 32, 121, 227, 154, 137, 129, 91, 166], &[0, 0, 1, 21, 0, 0, 0, 0, 0, 0, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 136, 220, 222, 147, 76, 101, 130, 39, 238, 29, 250, 252, 214, 225, 105, 3, 170, 10, 228, 226, 42, 96, 247, 17, 144, 247, 250, 141, 205, 84, 104, 175, 49, 59, 161, 58, 250, 178, 59, 219, 34, 1, 81, 12, 128, 142, 182, 22], &[0, 1, 31, 0, 0, 0, 0, 0, 0, 0, 1, 11, 0, 0, 0, 0, 0, 0, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 146, 32, 225, 114, 190, 211, 22, 96, 95, 115, 241, 255, 123, 74, 222, 152, 77, 254, 57, 245, 78, 123, 168, 74, 190, 191, 139, 138, 100, 234, 72, 46, 45, 174, 43, 141, 96, 79, 230, 7, 252, 242, 172, 39, 100, 43, 161, 177], &[0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 146, 32, 225, 114, 190, 211, 22, 96, 95, 115, 241, 255, 123, 74, 222, 152, 83, 50, 194, 39, 103, 192, 178, 217, 125, 32, 22, 246, 168, 239, 120, 222, 173, 2, 155, 120, 7, 166, 176, 226, 172, 7, 43, 102, 21, 204, 92, 8], &[0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 146, 32, 225, 114, 190, 211, 22, 96, 95, 115, 241, 255, 123, 74, 222, 152, 137, 6, 59, 94, 171, 160, 104, 80, 196, 182, 201, 87, 28, 70, 86, 200, 124, 206, 182, 4, 38, 77, 37, 233, 32, 121, 227, 154, 137, 129, 91, 166], &[0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 146, 32, 225, 114, 190, 211, 22, 96, 95, 115, 241, 255, 123, 74, 222, 152, 170, 10, 228, 226, 42, 96, 247, 17, 144, 247, 250, 141, 205, 84, 104, 175, 49, 59, 161, 58, 250, 178, 59, 219, 34, 1, 81, 12, 128, 142, 182, 22], &[0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 146, 32, 225, 114, 190, 211, 22, 96, 95, 115, 241, 255, 123, 74, 222, 152, 250, 67, 84, 127, 177, 206, 187, 248, 7, 171, 139, 143, 54, 116, 13, 218, 140, 198, 7, 172, 12, 47, 130, 190, 178, 198, 48, 211, 195, 137, 122, 61], &[0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 156, 106, 99, 127, 98, 174, 42, 241, 199, 227, 30, 237, 126, 150, 190, 4, 250, 67, 84, 127, 177, 206, 187, 248, 7, 171, 139, 143, 54, 116, 13, 218, 140, 198, 7, 172, 12, 47, 130, 190, 178, 198, 48, 211, 195, 137, 122, 61], &[8, 11, 0, 0, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 156, 189, 47, 11, 41, 160, 8, 163, 96, 9, 172, 68, 204, 160, 201, 105], &[101, 4, 0, 0, 0, 0, 0, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 166, 97, 104, 247, 231, 37, 155, 102, 112, 160, 111, 37, 101, 227, 229, 242], &[184, 11, 0, 0, 0, 0, 0, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 180, 154, 39, 56, 238, 179, 8, 150, 170, 203, 139, 63, 180, 100, 113, 189], &[0, 0, 0, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 194, 154, 3, 16, 225, 187, 69, 210, 12, 172, 231, 124, 203, 98, 201, 125], &[0, 225, 245, 5]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 234, 7, 222, 43, 143, 1, 5, 22, 220, 163, 247, 239, 82, 247, 172, 90], &[8, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 247, 218, 208, 49, 115, 36, 174, 202, 232, 116, 75, 135, 252, 149, 242, 243], &[0]), (&[194, 38, 18, 118, 204, 157, 31, 133, 152, 234, 75, 106, 116, 177, 92, 47, 33, 143, 38, 199, 58, 221, 99, 72, 151, 85, 11, 64, 3, 178, 107, 198, 77, 254, 57, 245, 78, 123, 168, 74, 190, 191, 139, 138, 100, 234, 72, 46, 45, 174, 43, 141, 96, 79, 230, 7, 252, 242, 172, 39, 100, 43, 161, 177], &[4, 115, 116, 97, 107, 105, 110, 103, 32, 232, 3, 0, 0, 0, 0, 0, 0, 2]), (&[194, 38, 18, 118, 204, 157, 31, 133, 152, 234, 75, 106, 116, 177, 92, 47, 33, 143, 38, 199, 58, 221, 99, 72, 151, 85, 11, 64, 3, 178, 107, 198, 83, 50, 194, 39, 103, 192, 178, 217, 125, 32, 22, 246, 168, 239, 120, 222, 173, 2, 155, 120, 7, 166, 176, 226, 172, 7, 43, 102, 21, 204, 92, 8], &[4, 115, 116, 97, 107, 105, 110, 103, 32, 232, 3, 0, 0, 0, 0, 0, 0, 2]), (&[194, 38, 18, 118, 204, 157, 31, 133, 152, 234, 75, 106, 116, 177, 92, 47, 33, 143, 38, 199, 58, 221, 99, 72, 151, 85, 11, 64, 3, 178, 107, 198, 137, 6, 59, 94, 171, 160, 104, 80, 196, 182, 201, 87, 28, 70, 86, 200, 124, 206, 182, 4, 38, 77, 37, 233, 32, 121, 227, 154, 137, 129, 91, 166], &[4, 115, 116, 97, 107, 105, 110, 103, 32, 1, 0, 0, 0, 0, 0, 0, 0, 2]), (&[194, 38, 18, 118, 204, 157, 31, 133, 152, 234, 75, 106, 116, 177, 92, 47, 33, 143, 38, 199, 58, 221, 99, 72, 151, 85, 11, 64, 3, 178, 107, 198, 170, 10, 228, 226, 42, 96, 247, 17, 144, 247, 250, 141, 205, 84, 104, 175, 49, 59, 161, 58, 250, 178, 59, 219, 34, 1, 81, 12, 128, 142, 182, 22], &[4, 115, 116, 97, 107, 105, 110, 103, 32, 232, 3, 0, 0, 0, 0, 0, 0, 2]), (&[194, 38, 18, 118, 204, 157, 31, 133, 152, 234, 75, 106, 116, 177, 92, 47, 33, 143, 38, 199, 58, 221, 99, 72, 151, 85, 11, 64, 3, 178, 107, 198, 250, 67, 84, 127, 177, 206, 187, 248, 7, 171, 139, 143, 54, 116, 13, 218, 140, 198, 7, 172, 12, 47, 130, 190, 178, 198, 48, 211, 195, 137, 122, 61], &[4, 115, 116, 97, 107, 105, 110, 103, 32, 244, 1, 0, 0, 0, 0, 0, 0, 2]), (&[194, 38, 18, 118, 204, 157, 31, 133, 152, 234, 75, 106, 116, 177, 92, 47, 87, 200, 117, 228, 207, 247, 65, 72, 228, 98, 143, 38, 75, 151, 76, 128], &[214, 61, 165, 212, 232, 0, 0, 0]), (&[194, 38, 18, 118, 204, 157, 31, 133, 152, 234, 75, 106, 116, 177, 92, 47, 227, 253, 141, 247, 41, 112, 188, 130, 229, 38, 126, 160, 30, 221, 217, 73], &[1]), (&[206, 197, 7, 13, 96, 157, 211, 73, 127, 114, 189, 224, 127, 201, 107, 160, 76, 1, 78, 107, 248, 184, 194, 192, 17, 231, 41, 11, 133, 105, 107, 179, 159, 230, 50, 156, 192, 179, 158, 9, 52, 58, 115, 101, 115, 115, 105, 111, 110, 58, 107, 101, 121, 115, 83, 50, 194, 39, 103, 192, 178, 217, 125, 32, 22, 246, 168, 239, 120, 222, 173, 2, 155, 120, 7, 166, 176, 226, 172, 7, 43, 102, 21, 204, 92, 8], &[11, 0, 0, 0, 0, 0, 0, 0]), (&[206, 197, 7, 13, 96, 157, 211, 73, 127, 114, 189, 224, 127, 201, 107, 160, 76, 1, 78, 107, 248, 184, 194, 192, 17, 231, 41, 11, 133, 105, 107, 179, 159, 230, 50, 156, 192, 179, 158, 9, 52, 58, 115, 101, 115, 115, 105, 111, 110, 58, 107, 101, 121, 115, 170, 10, 228, 226, 42, 96, 247, 17, 144, 247, 250, 141, 205, 84, 104, 175, 49, 59, 161, 58, 250, 178, 59, 219, 34, 1, 81, 12, 128, 142, 182, 22], &[21, 0, 0, 0, 0, 0, 0, 0]), (&[206, 197, 7, 13, 96, 157, 211, 73, 127, 114, 189, 224, 127, 201, 107, 160, 114, 99, 128, 64, 70, 131, 252, 137, 232, 35, 52, 80, 200, 170, 25, 80, 159, 230, 50, 156, 192, 179, 158, 9, 52, 58, 115, 101, 115, 115, 105, 111, 110, 58, 107, 101, 121, 115, 109, 123, 24, 86, 30, 19, 159, 228, 49, 200, 33, 139, 70, 205, 244, 47, 40, 190, 110, 43, 138, 12, 26, 121, 5, 219, 103, 1, 110, 91, 142, 123], &[11, 0, 0, 0, 0, 0, 0, 0]), (&[206, 197, 7, 13, 96, 157, 211, 73, 127, 114, 189, 224, 127, 201, 107, 160, 114, 99, 128, 64, 70, 131, 252, 137, 232, 35, 52, 80, 200, 170, 25, 80, 159, 230, 50, 156, 192, 179, 158, 9, 52, 58, 115, 101, 115, 115, 105, 111, 110, 58, 107, 101, 121, 115, 238, 43, 102, 225, 142, 104, 190, 12, 183, 86, 115, 25, 37, 223, 229, 65, 253, 167, 152, 54, 57, 147, 167, 137, 80, 161, 2, 235, 195, 174, 40, 244], &[21, 0, 0, 0, 0, 0, 0, 0]), (&[206, 197, 7, 13, 96, 157, 211, 73, 127, 114, 189, 224, 127, 201, 107, 160, 114, 118, 56, 0, 163, 106, 153, 253, 252, 124, 16, 246, 65, 95, 110, 230], &[3, 0, 0, 0]), (&[206, 197, 7, 13, 96, 157, 211, 73, 127, 114, 189, 224, 127, 201, 107, 160, 136, 220, 222, 147, 76, 101, 130, 39, 238, 29, 250, 252, 214, 225, 105, 3], &[8, 21, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0]), (&[206, 197, 7, 13, 96, 157, 211, 73, 127, 114, 189, 224, 127, 201, 107, 160, 148, 80, 191, 164, 185, 106, 63, 167, 163, 200, 244, 13, 166, 191, 50, 225], &[1]), (&[206, 197, 7, 13, 96, 157, 211, 73, 127, 114, 189, 224, 127, 201, 107, 160, 152, 239, 125, 192, 96, 67, 110, 78, 216, 3, 175, 7, 99, 43, 137, 182, 17, 218, 109, 31, 118, 29, 223, 155, 219, 76, 157, 110, 83, 3, 235, 212, 31, 97, 133, 141, 10, 86, 71, 161, 167, 191, 224, 137, 191, 146, 27, 233], &[44, 175, 112, 32, 141, 187, 198, 225, 208, 96, 126, 2, 8, 79, 212, 67, 222, 67, 84, 75, 213, 91, 72, 122, 231, 108, 125, 176, 42, 11, 117, 78, 2, 0, 0, 0]), (&[206, 197, 7, 13, 96, 157, 211, 73, 127, 114, 189, 224, 127, 201, 107, 160, 152, 239, 125, 192, 96, 67, 110, 78, 216, 3, 175, 7, 99, 43, 137, 182, 38, 160, 142, 77, 12, 81, 144, 240, 24, 113, 224, 86, 155, 98, 144, 184, 103, 96, 8, 93, 153, 241, 126, 180, 231, 230, 181, 143, 235, 141, 98, 73], &[44, 175, 112, 32, 141, 187, 198, 225, 208, 96, 126, 2, 8, 79, 212, 67, 222, 67, 84, 75, 213, 91, 72, 122, 231, 108, 125, 176, 42, 11, 117, 78, 2, 0, 0, 0]), (&[206, 197, 7, 13, 96, 157, 211, 73, 127, 114, 189, 224, 127, 201, 107, 160, 152, 239, 125, 192, 96, 67, 110, 78, 216, 3, 175, 7, 99, 43, 137, 182, 123, 10, 161, 115, 94, 91, 165, 141, 50, 54, 49, 108, 103, 31, 228, 240, 14, 211, 102, 238, 114, 65, 124, 158, 208, 42, 83, 168, 1, 158, 133, 184], &[44, 175, 112, 32, 141, 187, 198, 225, 208, 96, 126, 2, 8, 79, 212, 67, 222, 67, 84, 75, 213, 91, 72, 122, 231, 108, 125, 176, 42, 11, 117, 78, 2, 0, 0, 0]), (&[206, 197, 7, 13, 96, 157, 211, 73, 127, 114, 189, 224, 127, 201, 107, 160, 152, 239, 125, 192, 96, 67, 110, 78, 216, 3, 175, 7, 99, 43, 137, 182, 140, 3, 159, 247, 202, 161, 124, 206, 191, 202, 220, 68, 189, 159, 206, 106, 75, 102, 153, 196, 208, 61, 226, 227, 52, 154, 161, 220, 17, 25, 60, 215], &[44, 175, 112, 32, 141, 187, 198, 225, 208, 96, 126, 2, 8, 79, 212, 67, 222, 67, 84, 75, 213, 91, 72, 122, 231, 108, 125, 176, 42, 11, 117, 78, 2, 0, 0, 0]), (&[206, 197, 7, 13, 96, 157, 211, 73, 127, 114, 189, 224, 127, 201, 107, 160, 152, 239, 125, 192, 96, 67, 110, 78, 216, 3, 175, 7, 99, 43, 137, 182, 225, 44, 34, 212, 241, 98, 217, 160, 18, 201, 49, 146, 51, 218, 93, 62, 146, 60, 197, 225, 2, 155, 143, 144, 228, 114, 73, 201, 171, 37, 107, 53], &[44, 175, 112, 32, 141, 187, 198, 225, 208, 96, 126, 2, 8, 79, 212, 67, 222, 67, 84, 75, 213, 91, 72, 122, 231, 108, 125, 176, 42, 11, 117, 78, 2, 0, 0, 0]), (&[206, 197, 7, 13, 96, 157, 211, 73, 127, 114, 189, 224, 127, 201, 107, 160, 224, 205, 208, 98, 230, 234, 242, 66, 149, 173, 76, 207, 196, 29, 70, 9], &[8, 21, 0, 0, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0]), (&[206, 197, 7, 13, 96, 157, 211, 73, 127, 114, 189, 224, 127, 201, 107, 160, 255, 58, 225, 39, 112, 190, 162, 228, 141, 155, 222, 115, 133, 231, 162, 95], &[0, 0, 0, 0, 5, 0, 0, 0]), (&[240, 195, 101, 195, 207, 89, 214, 113, 235, 114, 218, 14, 122, 65, 19, 196, 159, 31, 5, 21, 244, 98, 205, 207, 132, 224, 241, 214, 4, 93, 252, 187], &[184, 11, 0, 0, 0, 0, 0, 0])]; +pub const _4: &[(&[u8], &[u8])] = &[(&[38, 170, 57, 78, 234, 86, 48, 224, 124, 72, 174, 12, 149, 88, 206, 247, 2, 165, 193, 177, 154, 183, 160, 79, 83, 108, 81, 154, 202, 73, 131, 172], &[4, 0, 0, 0, 0, 0, 0, 0]), (&[38, 170, 57, 78, 234, 86, 48, 224, 124, 72, 174, 12, 149, 88, 206, 247, 10, 152, 253, 190, 156, 230, 197, 88, 55, 87, 108, 96, 199, 175, 56, 80], &[20, 0, 0, 0]), (&[38, 170, 57, 78, 234, 86, 48, 224, 124, 72, 174, 12, 149, 88, 206, 247, 128, 212, 30, 94, 22, 5, 103, 101, 188, 132, 97, 133, 16, 114, 201, 215], &[80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), (&[38, 170, 57, 78, 234, 86, 48, 224, 124, 72, 174, 12, 149, 88, 206, 247, 138, 66, 243, 51, 35, 203, 92, 237, 59, 68, 221, 130, 95, 218, 159, 204], &[69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69]), (&[38, 170, 57, 78, 234, 86, 48, 224, 124, 72, 174, 12, 149, 88, 206, 247, 164, 71, 4, 181, 104, 210, 22, 103, 53, 106, 90, 5, 12, 17, 135, 70, 129, 228, 122, 25, 230, 178, 155, 10, 101, 185, 89, 23, 98, 206, 81, 67, 237, 48, 208, 38, 30, 93, 36, 163, 32, 23, 82, 80, 107, 32, 241, 92], &[69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69]), (&[38, 170, 57, 78, 234, 86, 48, 224, 124, 72, 174, 12, 149, 88, 206, 247, 185, 157, 136, 14, 198, 129, 121, 156, 12, 243, 14, 136, 134, 55, 29, 169, 29, 189, 125, 11, 86, 26, 65, 210, 60, 42, 70, 154, 212, 47, 189, 112, 213, 67, 139, 174, 130, 111, 111, 214, 7, 65, 49, 144, 195, 124, 54, 59], &[0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), (&[38, 170, 57, 78, 234, 86, 48, 224, 124, 72, 174, 12, 149, 88, 206, 247, 185, 157, 136, 14, 198, 129, 121, 156, 12, 243, 14, 136, 134, 55, 29, 169, 77, 254, 57, 245, 78, 123, 168, 74, 190, 191, 139, 138, 100, 234, 72, 46, 45, 174, 43, 141, 96, 79, 230, 7, 252, 242, 172, 39, 100, 43, 161, 177], &[0, 0, 0, 0, 0, 0, 0, 0, 208, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 232, 3, 0, 0, 0, 0, 0, 0, 232, 3, 0, 0, 0, 0, 0, 0]), (&[38, 170, 57, 78, 234, 86, 48, 224, 124, 72, 174, 12, 149, 88, 206, 247, 185, 157, 136, 14, 198, 129, 121, 156, 12, 243, 14, 136, 134, 55, 29, 169, 83, 50, 194, 39, 103, 192, 178, 217, 125, 32, 22, 246, 168, 239, 120, 222, 173, 2, 155, 120, 7, 166, 176, 226, 172, 7, 43, 102, 21, 204, 92, 8], &[0, 0, 0, 0, 0, 0, 0, 0, 232, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 232, 3, 0, 0, 0, 0, 0, 0, 232, 3, 0, 0, 0, 0, 0, 0]), (&[38, 170, 57, 78, 234, 86, 48, 224, 124, 72, 174, 12, 149, 88, 206, 247, 185, 157, 136, 14, 198, 129, 121, 156, 12, 243, 14, 136, 134, 55, 29, 169, 94, 90, 15, 75, 176, 234, 179, 121, 134, 37, 171, 24, 100, 84, 93, 19, 212, 232, 208, 104, 153, 217, 219, 77, 97, 219, 157, 238, 147, 186, 2, 221], &[0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), (&[38, 170, 57, 78, 234, 86, 48, 224, 124, 72, 174, 12, 149, 88, 206, 247, 185, 157, 136, 14, 198, 129, 121, 156, 12, 243, 14, 136, 134, 55, 29, 169, 100, 74, 81, 252, 33, 158, 145, 69, 184, 87, 123, 183, 118, 40, 118, 123, 28, 47, 115, 116, 142, 218, 139, 120, 139, 252, 102, 161, 181, 42, 32, 248], &[0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 165, 212, 232, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), (&[38, 170, 57, 78, 234, 86, 48, 224, 124, 72, 174, 12, 149, 88, 206, 247, 185, 157, 136, 14, 198, 129, 121, 156, 12, 243, 14, 136, 134, 55, 29, 169, 108, 221, 179, 103, 175, 189, 88, 59, 180, 143, 155, 189, 125, 91, 163, 177, 208, 115, 139, 72, 129, 177, 205, 221, 56, 22, 149, 38, 216, 21, 129, 55], &[0, 0, 0, 0, 0, 0, 0, 0, 44, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), (&[38, 170, 57, 78, 234, 86, 48, 224, 124, 72, 174, 12, 149, 88, 206, 247, 185, 157, 136, 14, 198, 129, 121, 156, 12, 243, 14, 136, 134, 55, 29, 169, 137, 6, 59, 94, 171, 160, 104, 80, 196, 182, 201, 87, 28, 70, 86, 200, 124, 206, 182, 4, 38, 77, 37, 233, 32, 121, 227, 154, 137, 129, 91, 166], &[0, 0, 0, 0, 0, 0, 0, 0, 208, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0]), (&[38, 170, 57, 78, 234, 86, 48, 224, 124, 72, 174, 12, 149, 88, 206, 247, 185, 157, 136, 14, 198, 129, 121, 156, 12, 243, 14, 136, 134, 55, 29, 169, 165, 186, 85, 195, 163, 151, 212, 60, 23, 89, 63, 40, 154, 164, 151, 157, 10, 229, 146, 68, 179, 47, 3, 236, 19, 65, 97, 129, 175, 134, 209, 11], &[0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), (&[38, 170, 57, 78, 234, 86, 48, 224, 124, 72, 174, 12, 149, 88, 206, 247, 185, 157, 136, 14, 198, 129, 121, 156, 12, 243, 14, 136, 134, 55, 29, 169, 170, 10, 228, 226, 42, 96, 247, 17, 144, 247, 250, 141, 205, 84, 104, 175, 49, 59, 161, 58, 250, 178, 59, 219, 34, 1, 81, 12, 128, 142, 182, 22], &[0, 0, 0, 0, 0, 0, 0, 0, 208, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 232, 3, 0, 0, 0, 0, 0, 0, 232, 3, 0, 0, 0, 0, 0, 0]), (&[38, 170, 57, 78, 234, 86, 48, 224, 124, 72, 174, 12, 149, 88, 206, 247, 185, 157, 136, 14, 198, 129, 121, 156, 12, 243, 14, 136, 134, 55, 29, 169, 189, 225, 131, 90, 186, 237, 15, 242, 121, 87, 0, 55, 252, 73, 213, 189, 23, 110, 180, 130, 163, 178, 129, 109, 244, 252, 194, 204, 27, 200, 106, 202], &[0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), (&[38, 170, 57, 78, 234, 86, 48, 224, 124, 72, 174, 12, 149, 88, 206, 247, 185, 157, 136, 14, 198, 129, 121, 156, 12, 243, 14, 136, 134, 55, 29, 169, 213, 92, 123, 109, 126, 139, 228, 10, 88, 51, 198, 4, 8, 188, 78, 184, 171, 234, 78, 93, 168, 211, 37, 233, 8, 135, 156, 195, 59, 151, 205, 153], &[0, 0, 0, 0, 0, 0, 0, 0, 208, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), (&[38, 170, 57, 78, 234, 86, 48, 224, 124, 72, 174, 12, 149, 88, 206, 247, 185, 157, 136, 14, 198, 129, 121, 156, 12, 243, 14, 136, 134, 55, 29, 169, 216, 247, 229, 16, 146, 46, 205, 71, 180, 10, 28, 88, 41, 56, 34, 6, 69, 103, 185, 191, 60, 126, 225, 114, 12, 144, 76, 94, 12, 87, 247, 55], &[0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), (&[38, 170, 57, 78, 234, 86, 48, 224, 124, 72, 174, 12, 149, 88, 206, 247, 185, 157, 136, 14, 198, 129, 121, 156, 12, 243, 14, 136, 134, 55, 29, 169, 232, 139, 67, 253, 237, 99, 35, 239, 2, 255, 239, 251, 216, 196, 8, 70, 238, 9, 191, 49, 98, 113, 189, 34, 54, 150, 89, 201, 89, 221, 115, 58], &[0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), (&[38, 170, 57, 78, 234, 86, 48, 224, 124, 72, 174, 12, 149, 88, 206, 247, 185, 157, 136, 14, 198, 129, 121, 156, 12, 243, 14, 136, 134, 55, 29, 169, 233, 103, 96, 210, 116, 101, 58, 57, 180, 41, 168, 126, 186, 174, 157, 58, 164, 253, 245, 139, 144, 150, 207, 11, 235, 199, 196, 229, 164, 194, 237, 141], &[0, 0, 0, 0, 0, 0, 0, 0, 144, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), (&[38, 170, 57, 78, 234, 86, 48, 224, 124, 72, 174, 12, 149, 88, 206, 247, 185, 157, 136, 14, 198, 129, 121, 156, 12, 243, 14, 136, 134, 55, 29, 169, 250, 67, 84, 127, 177, 206, 187, 248, 7, 171, 139, 143, 54, 116, 13, 218, 140, 198, 7, 172, 12, 47, 130, 190, 178, 198, 48, 211, 195, 137, 122, 61], &[0, 0, 0, 0, 0, 0, 0, 0, 208, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 244, 1, 0, 0, 0, 0, 0, 0, 244, 1, 0, 0, 0, 0, 0, 0]), (&[58, 99, 111, 100, 101], &[]), (&[58, 101, 120, 116, 114, 105, 110, 115, 105, 99, 95, 105, 110, 100, 101, 120], &[0, 0, 0, 0]), (&[58, 104, 101, 97, 112, 112, 97, 103, 101, 115], &[8, 0, 0, 0, 0, 0, 0, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 11, 106, 69, 50, 30, 250, 233, 42, 234, 21, 224, 116, 14, 199, 175, 231], &[1, 0, 0, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 14, 160, 236, 172, 118, 69, 125, 15, 155, 57, 185, 129, 221, 16, 112, 18], &[8, 21, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 19, 142, 113, 97, 36, 145, 25, 45, 104, 222, 171, 126, 111, 86, 63, 225], &[2, 0, 0, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 40, 220, 203, 85, 155, 149, 196, 1, 104, 161, 178, 105, 101, 129, 181, 167], &[0, 0, 0, 0, 0, 0, 0, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 62, 209, 75, 69, 237, 32, 208, 84, 240, 94, 55, 226, 84, 44, 254, 112, 77, 254, 57, 245, 78, 123, 168, 74, 190, 191, 139, 138, 100, 234, 72, 46, 45, 174, 43, 141, 96, 79, 230, 7, 252, 242, 172, 39, 100, 43, 161, 177], &[40, 0, 0, 0, 0, 0, 0, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 62, 209, 75, 69, 237, 32, 208, 84, 240, 94, 55, 226, 84, 44, 254, 112, 83, 50, 194, 39, 103, 192, 178, 217, 125, 32, 22, 246, 168, 239, 120, 222, 173, 2, 155, 120, 7, 166, 176, 226, 172, 7, 43, 102, 21, 204, 92, 8], &[10, 0, 0, 0, 0, 0, 0, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 62, 209, 75, 69, 237, 32, 208, 84, 240, 94, 55, 226, 84, 44, 254, 112, 137, 6, 59, 94, 171, 160, 104, 80, 196, 182, 201, 87, 28, 70, 86, 200, 124, 206, 182, 4, 38, 77, 37, 233, 32, 121, 227, 154, 137, 129, 91, 166], &[30, 0, 0, 0, 0, 0, 0, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 62, 209, 75, 69, 237, 32, 208, 84, 240, 94, 55, 226, 84, 44, 254, 112, 170, 10, 228, 226, 42, 96, 247, 17, 144, 247, 250, 141, 205, 84, 104, 175, 49, 59, 161, 58, 250, 178, 59, 219, 34, 1, 81, 12, 128, 142, 182, 22], &[20, 0, 0, 0, 0, 0, 0, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 62, 209, 75, 69, 237, 32, 208, 84, 240, 94, 55, 226, 84, 44, 254, 112, 250, 67, 84, 127, 177, 206, 187, 248, 7, 171, 139, 143, 54, 116, 13, 218, 140, 198, 7, 172, 12, 47, 130, 190, 178, 198, 48, 211, 195, 137, 122, 61], &[100, 0, 0, 0, 0, 0, 0, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 66, 42, 219, 87, 159, 29, 191, 79, 56, 134, 197, 207, 163, 187, 140, 196, 94, 90, 15, 75, 176, 234, 179, 121, 134, 37, 171, 24, 100, 84, 93, 19, 212, 232, 208, 104, 153, 217, 219, 77, 97, 219, 157, 238, 147, 186, 2, 221], &[21, 0, 0, 0, 0, 0, 0, 0, 161, 15, 161, 15, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 66, 42, 219, 87, 159, 29, 191, 79, 56, 134, 197, 207, 163, 187, 140, 196, 165, 186, 85, 195, 163, 151, 212, 60, 23, 89, 63, 40, 154, 164, 151, 157, 10, 229, 146, 68, 179, 47, 3, 236, 19, 65, 97, 129, 175, 134, 209, 11], &[31, 0, 0, 0, 0, 0, 0, 0, 4, 4, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 66, 42, 219, 87, 159, 29, 191, 79, 56, 134, 197, 207, 163, 187, 140, 196, 189, 225, 131, 90, 186, 237, 15, 242, 121, 87, 0, 55, 252, 73, 213, 189, 23, 110, 180, 130, 163, 178, 129, 109, 244, 252, 194, 204, 27, 200, 106, 202], &[11, 0, 0, 0, 0, 0, 0, 0, 161, 15, 161, 15, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 66, 42, 219, 87, 159, 29, 191, 79, 56, 134, 197, 207, 163, 187, 140, 196, 213, 92, 123, 109, 126, 139, 228, 10, 88, 51, 198, 4, 8, 188, 78, 184, 171, 234, 78, 93, 168, 211, 37, 233, 8, 135, 156, 195, 59, 151, 205, 153], &[101, 0, 0, 0, 0, 0, 0, 0, 209, 7, 209, 7, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 66, 42, 219, 87, 159, 29, 191, 79, 56, 134, 197, 207, 163, 187, 140, 196, 216, 247, 229, 16, 146, 46, 205, 71, 180, 10, 28, 88, 41, 56, 34, 6, 69, 103, 185, 191, 60, 126, 225, 114, 12, 144, 76, 94, 12, 87, 247, 55], &[41, 0, 0, 0, 0, 0, 0, 0, 161, 15, 161, 15, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 80, 154, 155, 110, 250, 147, 245, 187, 131, 248, 88, 240, 186, 191, 211, 11], &[3, 0, 0, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 85, 121, 41, 127, 77, 251, 150, 9, 231, 228, 194, 235, 171, 156, 228, 10], &[0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 86, 239, 98, 39, 206, 203, 47, 7, 39, 76, 176, 87, 45, 143, 164, 194], &[101, 0, 0, 0, 0, 0, 0, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 106, 147, 17, 38, 51, 187, 51, 84, 230, 121, 82, 252, 221, 116, 12, 213], &[31, 0, 0, 0, 0, 0, 0, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 131, 229, 133, 187, 197, 253, 206, 197, 114, 25, 192, 220, 129, 239, 95, 244, 83, 50, 194, 39, 103, 192, 178, 217, 125, 32, 22, 246, 168, 239, 120, 222, 173, 2, 155, 120, 7, 166, 176, 226, 172, 7, 43, 102, 21, 204, 92, 8], &[149, 17, 161, 15, 4, 101, 0, 0, 0, 0, 0, 0, 0, 245, 1]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 131, 229, 133, 187, 197, 253, 206, 197, 114, 25, 192, 220, 129, 239, 95, 244, 170, 10, 228, 226, 42, 96, 247, 17, 144, 247, 250, 141, 205, 84, 104, 175, 49, 59, 161, 58, 250, 178, 59, 219, 34, 1, 81, 12, 128, 142, 182, 22], &[125, 21, 161, 15, 4, 101, 0, 0, 0, 0, 0, 0, 0, 221, 5]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 136, 220, 222, 147, 76, 101, 130, 39, 238, 29, 250, 252, 214, 225, 105, 3, 83, 50, 194, 39, 103, 192, 178, 217, 125, 32, 22, 246, 168, 239, 120, 222, 173, 2, 155, 120, 7, 166, 176, 226, 172, 7, 43, 102, 21, 204, 92, 8], &[0, 1, 21, 0, 0, 0, 0, 0, 0, 0, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 136, 220, 222, 147, 76, 101, 130, 39, 238, 29, 250, 252, 214, 225, 105, 3, 137, 6, 59, 94, 171, 160, 104, 80, 196, 182, 201, 87, 28, 70, 86, 200, 124, 206, 182, 4, 38, 77, 37, 233, 32, 121, 227, 154, 137, 129, 91, 166], &[0, 0, 1, 21, 0, 0, 0, 0, 0, 0, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 136, 220, 222, 147, 76, 101, 130, 39, 238, 29, 250, 252, 214, 225, 105, 3, 170, 10, 228, 226, 42, 96, 247, 17, 144, 247, 250, 141, 205, 84, 104, 175, 49, 59, 161, 58, 250, 178, 59, 219, 34, 1, 81, 12, 128, 142, 182, 22], &[0, 1, 31, 0, 0, 0, 0, 0, 0, 0, 1, 11, 0, 0, 0, 0, 0, 0, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 146, 32, 225, 114, 190, 211, 22, 96, 95, 115, 241, 255, 123, 74, 222, 152, 77, 254, 57, 245, 78, 123, 168, 74, 190, 191, 139, 138, 100, 234, 72, 46, 45, 174, 43, 141, 96, 79, 230, 7, 252, 242, 172, 39, 100, 43, 161, 177], &[0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 146, 32, 225, 114, 190, 211, 22, 96, 95, 115, 241, 255, 123, 74, 222, 152, 83, 50, 194, 39, 103, 192, 178, 217, 125, 32, 22, 246, 168, 239, 120, 222, 173, 2, 155, 120, 7, 166, 176, 226, 172, 7, 43, 102, 21, 204, 92, 8], &[0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 146, 32, 225, 114, 190, 211, 22, 96, 95, 115, 241, 255, 123, 74, 222, 152, 137, 6, 59, 94, 171, 160, 104, 80, 196, 182, 201, 87, 28, 70, 86, 200, 124, 206, 182, 4, 38, 77, 37, 233, 32, 121, 227, 154, 137, 129, 91, 166], &[0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 146, 32, 225, 114, 190, 211, 22, 96, 95, 115, 241, 255, 123, 74, 222, 152, 170, 10, 228, 226, 42, 96, 247, 17, 144, 247, 250, 141, 205, 84, 104, 175, 49, 59, 161, 58, 250, 178, 59, 219, 34, 1, 81, 12, 128, 142, 182, 22], &[0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 146, 32, 225, 114, 190, 211, 22, 96, 95, 115, 241, 255, 123, 74, 222, 152, 250, 67, 84, 127, 177, 206, 187, 248, 7, 171, 139, 143, 54, 116, 13, 218, 140, 198, 7, 172, 12, 47, 130, 190, 178, 198, 48, 211, 195, 137, 122, 61], &[0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 156, 106, 99, 127, 98, 174, 42, 241, 199, 227, 30, 237, 126, 150, 190, 4, 250, 67, 84, 127, 177, 206, 187, 248, 7, 171, 139, 143, 54, 116, 13, 218, 140, 198, 7, 172, 12, 47, 130, 190, 178, 198, 48, 211, 195, 137, 122, 61], &[8, 11, 0, 0, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 156, 189, 47, 11, 41, 160, 8, 163, 96, 9, 172, 68, 204, 160, 201, 105], &[101, 4, 0, 0, 0, 0, 0, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 166, 97, 104, 247, 231, 37, 155, 102, 112, 160, 111, 37, 101, 227, 229, 242], &[184, 11, 0, 0, 0, 0, 0, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 180, 154, 39, 56, 238, 179, 8, 150, 170, 203, 139, 63, 180, 100, 113, 189], &[0, 0, 0, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 194, 154, 3, 16, 225, 187, 69, 210, 12, 172, 231, 124, 203, 98, 201, 125], &[0, 225, 245, 5]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 234, 7, 222, 43, 143, 1, 5, 22, 220, 163, 247, 239, 82, 247, 172, 90], &[8, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 247, 218, 208, 49, 115, 36, 174, 202, 232, 116, 75, 135, 252, 149, 242, 243], &[0]), (&[194, 38, 18, 118, 204, 157, 31, 133, 152, 234, 75, 106, 116, 177, 92, 47, 33, 143, 38, 199, 58, 221, 99, 72, 151, 85, 11, 64, 3, 178, 107, 198, 77, 254, 57, 245, 78, 123, 168, 74, 190, 191, 139, 138, 100, 234, 72, 46, 45, 174, 43, 141, 96, 79, 230, 7, 252, 242, 172, 39, 100, 43, 161, 177], &[4, 115, 116, 97, 107, 105, 110, 103, 32, 232, 3, 0, 0, 0, 0, 0, 0, 2]), (&[194, 38, 18, 118, 204, 157, 31, 133, 152, 234, 75, 106, 116, 177, 92, 47, 33, 143, 38, 199, 58, 221, 99, 72, 151, 85, 11, 64, 3, 178, 107, 198, 83, 50, 194, 39, 103, 192, 178, 217, 125, 32, 22, 246, 168, 239, 120, 222, 173, 2, 155, 120, 7, 166, 176, 226, 172, 7, 43, 102, 21, 204, 92, 8], &[4, 115, 116, 97, 107, 105, 110, 103, 32, 232, 3, 0, 0, 0, 0, 0, 0, 2]), (&[194, 38, 18, 118, 204, 157, 31, 133, 152, 234, 75, 106, 116, 177, 92, 47, 33, 143, 38, 199, 58, 221, 99, 72, 151, 85, 11, 64, 3, 178, 107, 198, 137, 6, 59, 94, 171, 160, 104, 80, 196, 182, 201, 87, 28, 70, 86, 200, 124, 206, 182, 4, 38, 77, 37, 233, 32, 121, 227, 154, 137, 129, 91, 166], &[4, 115, 116, 97, 107, 105, 110, 103, 32, 1, 0, 0, 0, 0, 0, 0, 0, 2]), (&[194, 38, 18, 118, 204, 157, 31, 133, 152, 234, 75, 106, 116, 177, 92, 47, 33, 143, 38, 199, 58, 221, 99, 72, 151, 85, 11, 64, 3, 178, 107, 198, 170, 10, 228, 226, 42, 96, 247, 17, 144, 247, 250, 141, 205, 84, 104, 175, 49, 59, 161, 58, 250, 178, 59, 219, 34, 1, 81, 12, 128, 142, 182, 22], &[4, 115, 116, 97, 107, 105, 110, 103, 32, 232, 3, 0, 0, 0, 0, 0, 0, 2]), (&[194, 38, 18, 118, 204, 157, 31, 133, 152, 234, 75, 106, 116, 177, 92, 47, 33, 143, 38, 199, 58, 221, 99, 72, 151, 85, 11, 64, 3, 178, 107, 198, 250, 67, 84, 127, 177, 206, 187, 248, 7, 171, 139, 143, 54, 116, 13, 218, 140, 198, 7, 172, 12, 47, 130, 190, 178, 198, 48, 211, 195, 137, 122, 61], &[4, 115, 116, 97, 107, 105, 110, 103, 32, 244, 1, 0, 0, 0, 0, 0, 0, 2]), (&[194, 38, 18, 118, 204, 157, 31, 133, 152, 234, 75, 106, 116, 177, 92, 47, 87, 200, 117, 228, 207, 247, 65, 72, 228, 98, 143, 38, 75, 151, 76, 128], &[214, 61, 165, 212, 232, 0, 0, 0]), (&[194, 38, 18, 118, 204, 157, 31, 133, 152, 234, 75, 106, 116, 177, 92, 47, 227, 253, 141, 247, 41, 112, 188, 130, 229, 38, 126, 160, 30, 221, 217, 73], &[1]), (&[206, 197, 7, 13, 96, 157, 211, 73, 127, 114, 189, 224, 127, 201, 107, 160, 76, 1, 78, 107, 248, 184, 194, 192, 17, 231, 41, 11, 133, 105, 107, 179, 159, 230, 50, 156, 192, 179, 158, 9, 52, 58, 115, 101, 115, 115, 105, 111, 110, 58, 107, 101, 121, 115, 83, 50, 194, 39, 103, 192, 178, 217, 125, 32, 22, 246, 168, 239, 120, 222, 173, 2, 155, 120, 7, 166, 176, 226, 172, 7, 43, 102, 21, 204, 92, 8], &[11, 0, 0, 0, 0, 0, 0, 0]), (&[206, 197, 7, 13, 96, 157, 211, 73, 127, 114, 189, 224, 127, 201, 107, 160, 76, 1, 78, 107, 248, 184, 194, 192, 17, 231, 41, 11, 133, 105, 107, 179, 159, 230, 50, 156, 192, 179, 158, 9, 52, 58, 115, 101, 115, 115, 105, 111, 110, 58, 107, 101, 121, 115, 170, 10, 228, 226, 42, 96, 247, 17, 144, 247, 250, 141, 205, 84, 104, 175, 49, 59, 161, 58, 250, 178, 59, 219, 34, 1, 81, 12, 128, 142, 182, 22], &[21, 0, 0, 0, 0, 0, 0, 0]), (&[206, 197, 7, 13, 96, 157, 211, 73, 127, 114, 189, 224, 127, 201, 107, 160, 114, 99, 128, 64, 70, 131, 252, 137, 232, 35, 52, 80, 200, 170, 25, 80, 159, 230, 50, 156, 192, 179, 158, 9, 52, 58, 115, 101, 115, 115, 105, 111, 110, 58, 107, 101, 121, 115, 109, 123, 24, 86, 30, 19, 159, 228, 49, 200, 33, 139, 70, 205, 244, 47, 40, 190, 110, 43, 138, 12, 26, 121, 5, 219, 103, 1, 110, 91, 142, 123], &[11, 0, 0, 0, 0, 0, 0, 0]), (&[206, 197, 7, 13, 96, 157, 211, 73, 127, 114, 189, 224, 127, 201, 107, 160, 114, 99, 128, 64, 70, 131, 252, 137, 232, 35, 52, 80, 200, 170, 25, 80, 159, 230, 50, 156, 192, 179, 158, 9, 52, 58, 115, 101, 115, 115, 105, 111, 110, 58, 107, 101, 121, 115, 238, 43, 102, 225, 142, 104, 190, 12, 183, 86, 115, 25, 37, 223, 229, 65, 253, 167, 152, 54, 57, 147, 167, 137, 80, 161, 2, 235, 195, 174, 40, 244], &[21, 0, 0, 0, 0, 0, 0, 0]), (&[206, 197, 7, 13, 96, 157, 211, 73, 127, 114, 189, 224, 127, 201, 107, 160, 114, 118, 56, 0, 163, 106, 153, 253, 252, 124, 16, 246, 65, 95, 110, 230], &[4, 0, 0, 0]), (&[206, 197, 7, 13, 96, 157, 211, 73, 127, 114, 189, 224, 127, 201, 107, 160, 136, 220, 222, 147, 76, 101, 130, 39, 238, 29, 250, 252, 214, 225, 105, 3], &[8, 21, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0]), (&[206, 197, 7, 13, 96, 157, 211, 73, 127, 114, 189, 224, 127, 201, 107, 160, 148, 80, 191, 164, 185, 106, 63, 167, 163, 200, 244, 13, 166, 191, 50, 225], &[0]), (&[206, 197, 7, 13, 96, 157, 211, 73, 127, 114, 189, 224, 127, 201, 107, 160, 152, 239, 125, 192, 96, 67, 110, 78, 216, 3, 175, 7, 99, 43, 137, 182, 17, 218, 109, 31, 118, 29, 223, 155, 219, 76, 157, 110, 83, 3, 235, 212, 31, 97, 133, 141, 10, 86, 71, 161, 167, 191, 224, 137, 191, 146, 27, 233], &[44, 175, 112, 32, 141, 187, 198, 225, 208, 96, 126, 2, 8, 79, 212, 67, 222, 67, 84, 75, 213, 91, 72, 122, 231, 108, 125, 176, 42, 11, 117, 78, 2, 0, 0, 0]), (&[206, 197, 7, 13, 96, 157, 211, 73, 127, 114, 189, 224, 127, 201, 107, 160, 152, 239, 125, 192, 96, 67, 110, 78, 216, 3, 175, 7, 99, 43, 137, 182, 38, 160, 142, 77, 12, 81, 144, 240, 24, 113, 224, 86, 155, 98, 144, 184, 103, 96, 8, 93, 153, 241, 126, 180, 231, 230, 181, 143, 235, 141, 98, 73], &[44, 175, 112, 32, 141, 187, 198, 225, 208, 96, 126, 2, 8, 79, 212, 67, 222, 67, 84, 75, 213, 91, 72, 122, 231, 108, 125, 176, 42, 11, 117, 78, 2, 0, 0, 0]), (&[206, 197, 7, 13, 96, 157, 211, 73, 127, 114, 189, 224, 127, 201, 107, 160, 152, 239, 125, 192, 96, 67, 110, 78, 216, 3, 175, 7, 99, 43, 137, 182, 123, 10, 161, 115, 94, 91, 165, 141, 50, 54, 49, 108, 103, 31, 228, 240, 14, 211, 102, 238, 114, 65, 124, 158, 208, 42, 83, 168, 1, 158, 133, 184], &[44, 175, 112, 32, 141, 187, 198, 225, 208, 96, 126, 2, 8, 79, 212, 67, 222, 67, 84, 75, 213, 91, 72, 122, 231, 108, 125, 176, 42, 11, 117, 78, 2, 0, 0, 0]), (&[206, 197, 7, 13, 96, 157, 211, 73, 127, 114, 189, 224, 127, 201, 107, 160, 152, 239, 125, 192, 96, 67, 110, 78, 216, 3, 175, 7, 99, 43, 137, 182, 140, 3, 159, 247, 202, 161, 124, 206, 191, 202, 220, 68, 189, 159, 206, 106, 75, 102, 153, 196, 208, 61, 226, 227, 52, 154, 161, 220, 17, 25, 60, 215], &[44, 175, 112, 32, 141, 187, 198, 225, 208, 96, 126, 2, 8, 79, 212, 67, 222, 67, 84, 75, 213, 91, 72, 122, 231, 108, 125, 176, 42, 11, 117, 78, 2, 0, 0, 0]), (&[206, 197, 7, 13, 96, 157, 211, 73, 127, 114, 189, 224, 127, 201, 107, 160, 152, 239, 125, 192, 96, 67, 110, 78, 216, 3, 175, 7, 99, 43, 137, 182, 140, 53, 210, 47, 69, 157, 119, 202, 76, 11, 11, 80, 53, 134, 151, 102, 214, 13, 24, 43, 151, 22, 171, 62, 136, 121, 224, 102, 71, 136, 153, 168], &[44, 175, 112, 32, 141, 187, 198, 225, 208, 96, 126, 2, 8, 79, 212, 67, 222, 67, 84, 75, 213, 91, 72, 122, 231, 108, 125, 176, 42, 11, 117, 78, 2, 0, 0, 0]), (&[206, 197, 7, 13, 96, 157, 211, 73, 127, 114, 189, 224, 127, 201, 107, 160, 152, 239, 125, 192, 96, 67, 110, 78, 216, 3, 175, 7, 99, 43, 137, 182, 225, 44, 34, 212, 241, 98, 217, 160, 18, 201, 49, 146, 51, 218, 93, 62, 146, 60, 197, 225, 2, 155, 143, 144, 228, 114, 73, 201, 171, 37, 107, 53], &[44, 175, 112, 32, 141, 187, 198, 225, 208, 96, 126, 2, 8, 79, 212, 67, 222, 67, 84, 75, 213, 91, 72, 122, 231, 108, 125, 176, 42, 11, 117, 78, 2, 0, 0, 0]), (&[206, 197, 7, 13, 96, 157, 211, 73, 127, 114, 189, 224, 127, 201, 107, 160, 224, 205, 208, 98, 230, 234, 242, 66, 149, 173, 76, 207, 196, 29, 70, 9], &[8, 21, 0, 0, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0]), (&[206, 197, 7, 13, 96, 157, 211, 73, 127, 114, 189, 224, 127, 201, 107, 160, 255, 58, 225, 39, 112, 190, 162, 228, 141, 155, 222, 115, 133, 231, 162, 95], &[0, 0, 0, 0, 6, 0, 0, 0]), (&[240, 195, 101, 195, 207, 89, 214, 113, 235, 114, 218, 14, 122, 65, 19, 196, 159, 31, 5, 21, 244, 98, 205, 207, 132, 224, 241, 214, 4, 93, 252, 187], &[160, 15, 0, 0, 0, 0, 0, 0])]; +pub const _5: &[(&[u8], &[u8])] = &[(&[38, 170, 57, 78, 234, 86, 48, 224, 124, 72, 174, 12, 149, 88, 206, 247, 2, 165, 193, 177, 154, 183, 160, 79, 83, 108, 81, 154, 202, 73, 131, 172], &[5, 0, 0, 0, 0, 0, 0, 0]), (&[38, 170, 57, 78, 234, 86, 48, 224, 124, 72, 174, 12, 149, 88, 206, 247, 10, 152, 253, 190, 156, 230, 197, 88, 55, 87, 108, 96, 199, 175, 56, 80], &[21, 0, 0, 0]), (&[38, 170, 57, 78, 234, 86, 48, 224, 124, 72, 174, 12, 149, 88, 206, 247, 128, 212, 30, 94, 22, 5, 103, 101, 188, 132, 97, 133, 16, 114, 201, 215], &[84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), (&[38, 170, 57, 78, 234, 86, 48, 224, 124, 72, 174, 12, 149, 88, 206, 247, 138, 66, 243, 51, 35, 203, 92, 237, 59, 68, 221, 130, 95, 218, 159, 204], &[69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69]), (&[38, 170, 57, 78, 234, 86, 48, 224, 124, 72, 174, 12, 149, 88, 206, 247, 164, 71, 4, 181, 104, 210, 22, 103, 53, 106, 90, 5, 12, 17, 135, 70, 129, 228, 122, 25, 230, 178, 155, 10, 101, 185, 89, 23, 98, 206, 81, 67, 237, 48, 208, 38, 30, 93, 36, 163, 32, 23, 82, 80, 107, 32, 241, 92], &[69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69]), (&[38, 170, 57, 78, 234, 86, 48, 224, 124, 72, 174, 12, 149, 88, 206, 247, 185, 157, 136, 14, 198, 129, 121, 156, 12, 243, 14, 136, 134, 55, 29, 169, 29, 189, 125, 11, 86, 26, 65, 210, 60, 42, 70, 154, 212, 47, 189, 112, 213, 67, 139, 174, 130, 111, 111, 214, 7, 65, 49, 144, 195, 124, 54, 59], &[0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), (&[38, 170, 57, 78, 234, 86, 48, 224, 124, 72, 174, 12, 149, 88, 206, 247, 185, 157, 136, 14, 198, 129, 121, 156, 12, 243, 14, 136, 134, 55, 29, 169, 77, 254, 57, 245, 78, 123, 168, 74, 190, 191, 139, 138, 100, 234, 72, 46, 45, 174, 43, 141, 96, 79, 230, 7, 252, 242, 172, 39, 100, 43, 161, 177], &[0, 0, 0, 0, 0, 0, 0, 0, 208, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 232, 3, 0, 0, 0, 0, 0, 0, 232, 3, 0, 0, 0, 0, 0, 0]), (&[38, 170, 57, 78, 234, 86, 48, 224, 124, 72, 174, 12, 149, 88, 206, 247, 185, 157, 136, 14, 198, 129, 121, 156, 12, 243, 14, 136, 134, 55, 29, 169, 83, 50, 194, 39, 103, 192, 178, 217, 125, 32, 22, 246, 168, 239, 120, 222, 173, 2, 155, 120, 7, 166, 176, 226, 172, 7, 43, 102, 21, 204, 92, 8], &[0, 0, 0, 0, 0, 0, 0, 0, 232, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 232, 3, 0, 0, 0, 0, 0, 0, 232, 3, 0, 0, 0, 0, 0, 0]), (&[38, 170, 57, 78, 234, 86, 48, 224, 124, 72, 174, 12, 149, 88, 206, 247, 185, 157, 136, 14, 198, 129, 121, 156, 12, 243, 14, 136, 134, 55, 29, 169, 94, 90, 15, 75, 176, 234, 179, 121, 134, 37, 171, 24, 100, 84, 93, 19, 212, 232, 208, 104, 153, 217, 219, 77, 97, 219, 157, 238, 147, 186, 2, 221], &[0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), (&[38, 170, 57, 78, 234, 86, 48, 224, 124, 72, 174, 12, 149, 88, 206, 247, 185, 157, 136, 14, 198, 129, 121, 156, 12, 243, 14, 136, 134, 55, 29, 169, 100, 74, 81, 252, 33, 158, 145, 69, 184, 87, 123, 183, 118, 40, 118, 123, 28, 47, 115, 116, 142, 218, 139, 120, 139, 252, 102, 161, 181, 42, 32, 248], &[0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 165, 212, 232, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), (&[38, 170, 57, 78, 234, 86, 48, 224, 124, 72, 174, 12, 149, 88, 206, 247, 185, 157, 136, 14, 198, 129, 121, 156, 12, 243, 14, 136, 134, 55, 29, 169, 108, 221, 179, 103, 175, 189, 88, 59, 180, 143, 155, 189, 125, 91, 163, 177, 208, 115, 139, 72, 129, 177, 205, 221, 56, 22, 149, 38, 216, 21, 129, 55], &[0, 0, 0, 0, 0, 0, 0, 0, 44, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), (&[38, 170, 57, 78, 234, 86, 48, 224, 124, 72, 174, 12, 149, 88, 206, 247, 185, 157, 136, 14, 198, 129, 121, 156, 12, 243, 14, 136, 134, 55, 29, 169, 137, 6, 59, 94, 171, 160, 104, 80, 196, 182, 201, 87, 28, 70, 86, 200, 124, 206, 182, 4, 38, 77, 37, 233, 32, 121, 227, 154, 137, 129, 91, 166], &[0, 0, 0, 0, 0, 0, 0, 0, 208, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0]), (&[38, 170, 57, 78, 234, 86, 48, 224, 124, 72, 174, 12, 149, 88, 206, 247, 185, 157, 136, 14, 198, 129, 121, 156, 12, 243, 14, 136, 134, 55, 29, 169, 165, 186, 85, 195, 163, 151, 212, 60, 23, 89, 63, 40, 154, 164, 151, 157, 10, 229, 146, 68, 179, 47, 3, 236, 19, 65, 97, 129, 175, 134, 209, 11], &[0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), (&[38, 170, 57, 78, 234, 86, 48, 224, 124, 72, 174, 12, 149, 88, 206, 247, 185, 157, 136, 14, 198, 129, 121, 156, 12, 243, 14, 136, 134, 55, 29, 169, 170, 10, 228, 226, 42, 96, 247, 17, 144, 247, 250, 141, 205, 84, 104, 175, 49, 59, 161, 58, 250, 178, 59, 219, 34, 1, 81, 12, 128, 142, 182, 22], &[0, 0, 0, 0, 0, 0, 0, 0, 208, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 232, 3, 0, 0, 0, 0, 0, 0, 232, 3, 0, 0, 0, 0, 0, 0]), (&[38, 170, 57, 78, 234, 86, 48, 224, 124, 72, 174, 12, 149, 88, 206, 247, 185, 157, 136, 14, 198, 129, 121, 156, 12, 243, 14, 136, 134, 55, 29, 169, 189, 225, 131, 90, 186, 237, 15, 242, 121, 87, 0, 55, 252, 73, 213, 189, 23, 110, 180, 130, 163, 178, 129, 109, 244, 252, 194, 204, 27, 200, 106, 202], &[0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), (&[38, 170, 57, 78, 234, 86, 48, 224, 124, 72, 174, 12, 149, 88, 206, 247, 185, 157, 136, 14, 198, 129, 121, 156, 12, 243, 14, 136, 134, 55, 29, 169, 213, 92, 123, 109, 126, 139, 228, 10, 88, 51, 198, 4, 8, 188, 78, 184, 171, 234, 78, 93, 168, 211, 37, 233, 8, 135, 156, 195, 59, 151, 205, 153], &[0, 0, 0, 0, 0, 0, 0, 0, 208, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), (&[38, 170, 57, 78, 234, 86, 48, 224, 124, 72, 174, 12, 149, 88, 206, 247, 185, 157, 136, 14, 198, 129, 121, 156, 12, 243, 14, 136, 134, 55, 29, 169, 216, 247, 229, 16, 146, 46, 205, 71, 180, 10, 28, 88, 41, 56, 34, 6, 69, 103, 185, 191, 60, 126, 225, 114, 12, 144, 76, 94, 12, 87, 247, 55], &[0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), (&[38, 170, 57, 78, 234, 86, 48, 224, 124, 72, 174, 12, 149, 88, 206, 247, 185, 157, 136, 14, 198, 129, 121, 156, 12, 243, 14, 136, 134, 55, 29, 169, 232, 139, 67, 253, 237, 99, 35, 239, 2, 255, 239, 251, 216, 196, 8, 70, 238, 9, 191, 49, 98, 113, 189, 34, 54, 150, 89, 201, 89, 221, 115, 58], &[0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), (&[38, 170, 57, 78, 234, 86, 48, 224, 124, 72, 174, 12, 149, 88, 206, 247, 185, 157, 136, 14, 198, 129, 121, 156, 12, 243, 14, 136, 134, 55, 29, 169, 233, 103, 96, 210, 116, 101, 58, 57, 180, 41, 168, 126, 186, 174, 157, 58, 164, 253, 245, 139, 144, 150, 207, 11, 235, 199, 196, 229, 164, 194, 237, 141], &[0, 0, 0, 0, 0, 0, 0, 0, 144, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), (&[38, 170, 57, 78, 234, 86, 48, 224, 124, 72, 174, 12, 149, 88, 206, 247, 185, 157, 136, 14, 198, 129, 121, 156, 12, 243, 14, 136, 134, 55, 29, 169, 250, 67, 84, 127, 177, 206, 187, 248, 7, 171, 139, 143, 54, 116, 13, 218, 140, 198, 7, 172, 12, 47, 130, 190, 178, 198, 48, 211, 195, 137, 122, 61], &[0, 0, 0, 0, 0, 0, 0, 0, 208, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 244, 1, 0, 0, 0, 0, 0, 0, 244, 1, 0, 0, 0, 0, 0, 0]), (&[58, 99, 111, 100, 101], &[]), (&[58, 101, 120, 116, 114, 105, 110, 115, 105, 99, 95, 105, 110, 100, 101, 120], &[0, 0, 0, 0]), (&[58, 104, 101, 97, 112, 112, 97, 103, 101, 115], &[8, 0, 0, 0, 0, 0, 0, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 11, 106, 69, 50, 30, 250, 233, 42, 234, 21, 224, 116, 14, 199, 175, 231], &[1, 0, 0, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 14, 160, 236, 172, 118, 69, 125, 15, 155, 57, 185, 129, 221, 16, 112, 18], &[8, 21, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 19, 142, 113, 97, 36, 145, 25, 45, 104, 222, 171, 126, 111, 86, 63, 225], &[2, 0, 0, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 40, 220, 203, 85, 155, 149, 196, 1, 104, 161, 178, 105, 101, 129, 181, 167], &[0, 0, 0, 0, 0, 0, 0, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 62, 209, 75, 69, 237, 32, 208, 84, 240, 94, 55, 226, 84, 44, 254, 112, 77, 254, 57, 245, 78, 123, 168, 74, 190, 191, 139, 138, 100, 234, 72, 46, 45, 174, 43, 141, 96, 79, 230, 7, 252, 242, 172, 39, 100, 43, 161, 177], &[40, 0, 0, 0, 0, 0, 0, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 62, 209, 75, 69, 237, 32, 208, 84, 240, 94, 55, 226, 84, 44, 254, 112, 83, 50, 194, 39, 103, 192, 178, 217, 125, 32, 22, 246, 168, 239, 120, 222, 173, 2, 155, 120, 7, 166, 176, 226, 172, 7, 43, 102, 21, 204, 92, 8], &[10, 0, 0, 0, 0, 0, 0, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 62, 209, 75, 69, 237, 32, 208, 84, 240, 94, 55, 226, 84, 44, 254, 112, 137, 6, 59, 94, 171, 160, 104, 80, 196, 182, 201, 87, 28, 70, 86, 200, 124, 206, 182, 4, 38, 77, 37, 233, 32, 121, 227, 154, 137, 129, 91, 166], &[30, 0, 0, 0, 0, 0, 0, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 62, 209, 75, 69, 237, 32, 208, 84, 240, 94, 55, 226, 84, 44, 254, 112, 170, 10, 228, 226, 42, 96, 247, 17, 144, 247, 250, 141, 205, 84, 104, 175, 49, 59, 161, 58, 250, 178, 59, 219, 34, 1, 81, 12, 128, 142, 182, 22], &[20, 0, 0, 0, 0, 0, 0, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 62, 209, 75, 69, 237, 32, 208, 84, 240, 94, 55, 226, 84, 44, 254, 112, 250, 67, 84, 127, 177, 206, 187, 248, 7, 171, 139, 143, 54, 116, 13, 218, 140, 198, 7, 172, 12, 47, 130, 190, 178, 198, 48, 211, 195, 137, 122, 61], &[100, 0, 0, 0, 0, 0, 0, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 66, 42, 219, 87, 159, 29, 191, 79, 56, 134, 197, 207, 163, 187, 140, 196, 94, 90, 15, 75, 176, 234, 179, 121, 134, 37, 171, 24, 100, 84, 93, 19, 212, 232, 208, 104, 153, 217, 219, 77, 97, 219, 157, 238, 147, 186, 2, 221], &[21, 0, 0, 0, 0, 0, 0, 0, 161, 15, 161, 15, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 66, 42, 219, 87, 159, 29, 191, 79, 56, 134, 197, 207, 163, 187, 140, 196, 165, 186, 85, 195, 163, 151, 212, 60, 23, 89, 63, 40, 154, 164, 151, 157, 10, 229, 146, 68, 179, 47, 3, 236, 19, 65, 97, 129, 175, 134, 209, 11], &[31, 0, 0, 0, 0, 0, 0, 0, 4, 4, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 66, 42, 219, 87, 159, 29, 191, 79, 56, 134, 197, 207, 163, 187, 140, 196, 189, 225, 131, 90, 186, 237, 15, 242, 121, 87, 0, 55, 252, 73, 213, 189, 23, 110, 180, 130, 163, 178, 129, 109, 244, 252, 194, 204, 27, 200, 106, 202], &[11, 0, 0, 0, 0, 0, 0, 0, 161, 15, 161, 15, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 66, 42, 219, 87, 159, 29, 191, 79, 56, 134, 197, 207, 163, 187, 140, 196, 213, 92, 123, 109, 126, 139, 228, 10, 88, 51, 198, 4, 8, 188, 78, 184, 171, 234, 78, 93, 168, 211, 37, 233, 8, 135, 156, 195, 59, 151, 205, 153], &[101, 0, 0, 0, 0, 0, 0, 0, 209, 7, 209, 7, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 66, 42, 219, 87, 159, 29, 191, 79, 56, 134, 197, 207, 163, 187, 140, 196, 216, 247, 229, 16, 146, 46, 205, 71, 180, 10, 28, 88, 41, 56, 34, 6, 69, 103, 185, 191, 60, 126, 225, 114, 12, 144, 76, 94, 12, 87, 247, 55], &[41, 0, 0, 0, 0, 0, 0, 0, 161, 15, 161, 15, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 80, 154, 155, 110, 250, 147, 245, 187, 131, 248, 88, 240, 186, 191, 211, 11], &[3, 0, 0, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 85, 121, 41, 127, 77, 251, 150, 9, 231, 228, 194, 235, 171, 156, 228, 10], &[0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 86, 239, 98, 39, 206, 203, 47, 7, 39, 76, 176, 87, 45, 143, 164, 194], &[101, 0, 0, 0, 0, 0, 0, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 106, 147, 17, 38, 51, 187, 51, 84, 230, 121, 82, 252, 221, 116, 12, 213], &[31, 0, 0, 0, 0, 0, 0, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 131, 229, 133, 187, 197, 253, 206, 197, 114, 25, 192, 220, 129, 239, 95, 244, 83, 50, 194, 39, 103, 192, 178, 217, 125, 32, 22, 246, 168, 239, 120, 222, 173, 2, 155, 120, 7, 166, 176, 226, 172, 7, 43, 102, 21, 204, 92, 8], &[149, 17, 161, 15, 4, 101, 0, 0, 0, 0, 0, 0, 0, 245, 1]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 131, 229, 133, 187, 197, 253, 206, 197, 114, 25, 192, 220, 129, 239, 95, 244, 170, 10, 228, 226, 42, 96, 247, 17, 144, 247, 250, 141, 205, 84, 104, 175, 49, 59, 161, 58, 250, 178, 59, 219, 34, 1, 81, 12, 128, 142, 182, 22], &[125, 21, 161, 15, 4, 101, 0, 0, 0, 0, 0, 0, 0, 221, 5]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 136, 220, 222, 147, 76, 101, 130, 39, 238, 29, 250, 252, 214, 225, 105, 3, 83, 50, 194, 39, 103, 192, 178, 217, 125, 32, 22, 246, 168, 239, 120, 222, 173, 2, 155, 120, 7, 166, 176, 226, 172, 7, 43, 102, 21, 204, 92, 8], &[0, 1, 21, 0, 0, 0, 0, 0, 0, 0, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 136, 220, 222, 147, 76, 101, 130, 39, 238, 29, 250, 252, 214, 225, 105, 3, 137, 6, 59, 94, 171, 160, 104, 80, 196, 182, 201, 87, 28, 70, 86, 200, 124, 206, 182, 4, 38, 77, 37, 233, 32, 121, 227, 154, 137, 129, 91, 166], &[0, 0, 1, 21, 0, 0, 0, 0, 0, 0, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 136, 220, 222, 147, 76, 101, 130, 39, 238, 29, 250, 252, 214, 225, 105, 3, 170, 10, 228, 226, 42, 96, 247, 17, 144, 247, 250, 141, 205, 84, 104, 175, 49, 59, 161, 58, 250, 178, 59, 219, 34, 1, 81, 12, 128, 142, 182, 22], &[0, 1, 31, 0, 0, 0, 0, 0, 0, 0, 1, 11, 0, 0, 0, 0, 0, 0, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 146, 32, 225, 114, 190, 211, 22, 96, 95, 115, 241, 255, 123, 74, 222, 152, 77, 254, 57, 245, 78, 123, 168, 74, 190, 191, 139, 138, 100, 234, 72, 46, 45, 174, 43, 141, 96, 79, 230, 7, 252, 242, 172, 39, 100, 43, 161, 177], &[0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 146, 32, 225, 114, 190, 211, 22, 96, 95, 115, 241, 255, 123, 74, 222, 152, 83, 50, 194, 39, 103, 192, 178, 217, 125, 32, 22, 246, 168, 239, 120, 222, 173, 2, 155, 120, 7, 166, 176, 226, 172, 7, 43, 102, 21, 204, 92, 8], &[0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 146, 32, 225, 114, 190, 211, 22, 96, 95, 115, 241, 255, 123, 74, 222, 152, 137, 6, 59, 94, 171, 160, 104, 80, 196, 182, 201, 87, 28, 70, 86, 200, 124, 206, 182, 4, 38, 77, 37, 233, 32, 121, 227, 154, 137, 129, 91, 166], &[0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 146, 32, 225, 114, 190, 211, 22, 96, 95, 115, 241, 255, 123, 74, 222, 152, 170, 10, 228, 226, 42, 96, 247, 17, 144, 247, 250, 141, 205, 84, 104, 175, 49, 59, 161, 58, 250, 178, 59, 219, 34, 1, 81, 12, 128, 142, 182, 22], &[0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 146, 32, 225, 114, 190, 211, 22, 96, 95, 115, 241, 255, 123, 74, 222, 152, 250, 67, 84, 127, 177, 206, 187, 248, 7, 171, 139, 143, 54, 116, 13, 218, 140, 198, 7, 172, 12, 47, 130, 190, 178, 198, 48, 211, 195, 137, 122, 61], &[0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 156, 106, 99, 127, 98, 174, 42, 241, 199, 227, 30, 237, 126, 150, 190, 4, 250, 67, 84, 127, 177, 206, 187, 248, 7, 171, 139, 143, 54, 116, 13, 218, 140, 198, 7, 172, 12, 47, 130, 190, 178, 198, 48, 211, 195, 137, 122, 61], &[8, 11, 0, 0, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 156, 189, 47, 11, 41, 160, 8, 163, 96, 9, 172, 68, 204, 160, 201, 105], &[101, 4, 0, 0, 0, 0, 0, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 166, 97, 104, 247, 231, 37, 155, 102, 112, 160, 111, 37, 101, 227, 229, 242], &[184, 11, 0, 0, 0, 0, 0, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 180, 154, 39, 56, 238, 179, 8, 150, 170, 203, 139, 63, 180, 100, 113, 189], &[0, 0, 0, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 194, 154, 3, 16, 225, 187, 69, 210, 12, 172, 231, 124, 203, 98, 201, 125], &[0, 225, 245, 5]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 234, 7, 222, 43, 143, 1, 5, 22, 220, 163, 247, 239, 82, 247, 172, 90], &[8, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 247, 218, 208, 49, 115, 36, 174, 202, 232, 116, 75, 135, 252, 149, 242, 243], &[0]), (&[194, 38, 18, 118, 204, 157, 31, 133, 152, 234, 75, 106, 116, 177, 92, 47, 33, 143, 38, 199, 58, 221, 99, 72, 151, 85, 11, 64, 3, 178, 107, 198, 77, 254, 57, 245, 78, 123, 168, 74, 190, 191, 139, 138, 100, 234, 72, 46, 45, 174, 43, 141, 96, 79, 230, 7, 252, 242, 172, 39, 100, 43, 161, 177], &[4, 115, 116, 97, 107, 105, 110, 103, 32, 232, 3, 0, 0, 0, 0, 0, 0, 2]), (&[194, 38, 18, 118, 204, 157, 31, 133, 152, 234, 75, 106, 116, 177, 92, 47, 33, 143, 38, 199, 58, 221, 99, 72, 151, 85, 11, 64, 3, 178, 107, 198, 83, 50, 194, 39, 103, 192, 178, 217, 125, 32, 22, 246, 168, 239, 120, 222, 173, 2, 155, 120, 7, 166, 176, 226, 172, 7, 43, 102, 21, 204, 92, 8], &[4, 115, 116, 97, 107, 105, 110, 103, 32, 232, 3, 0, 0, 0, 0, 0, 0, 2]), (&[194, 38, 18, 118, 204, 157, 31, 133, 152, 234, 75, 106, 116, 177, 92, 47, 33, 143, 38, 199, 58, 221, 99, 72, 151, 85, 11, 64, 3, 178, 107, 198, 137, 6, 59, 94, 171, 160, 104, 80, 196, 182, 201, 87, 28, 70, 86, 200, 124, 206, 182, 4, 38, 77, 37, 233, 32, 121, 227, 154, 137, 129, 91, 166], &[4, 115, 116, 97, 107, 105, 110, 103, 32, 1, 0, 0, 0, 0, 0, 0, 0, 2]), (&[194, 38, 18, 118, 204, 157, 31, 133, 152, 234, 75, 106, 116, 177, 92, 47, 33, 143, 38, 199, 58, 221, 99, 72, 151, 85, 11, 64, 3, 178, 107, 198, 170, 10, 228, 226, 42, 96, 247, 17, 144, 247, 250, 141, 205, 84, 104, 175, 49, 59, 161, 58, 250, 178, 59, 219, 34, 1, 81, 12, 128, 142, 182, 22], &[4, 115, 116, 97, 107, 105, 110, 103, 32, 232, 3, 0, 0, 0, 0, 0, 0, 2]), (&[194, 38, 18, 118, 204, 157, 31, 133, 152, 234, 75, 106, 116, 177, 92, 47, 33, 143, 38, 199, 58, 221, 99, 72, 151, 85, 11, 64, 3, 178, 107, 198, 250, 67, 84, 127, 177, 206, 187, 248, 7, 171, 139, 143, 54, 116, 13, 218, 140, 198, 7, 172, 12, 47, 130, 190, 178, 198, 48, 211, 195, 137, 122, 61], &[4, 115, 116, 97, 107, 105, 110, 103, 32, 244, 1, 0, 0, 0, 0, 0, 0, 2]), (&[194, 38, 18, 118, 204, 157, 31, 133, 152, 234, 75, 106, 116, 177, 92, 47, 87, 200, 117, 228, 207, 247, 65, 72, 228, 98, 143, 38, 75, 151, 76, 128], &[214, 61, 165, 212, 232, 0, 0, 0]), (&[194, 38, 18, 118, 204, 157, 31, 133, 152, 234, 75, 106, 116, 177, 92, 47, 227, 253, 141, 247, 41, 112, 188, 130, 229, 38, 126, 160, 30, 221, 217, 73], &[1]), (&[206, 197, 7, 13, 96, 157, 211, 73, 127, 114, 189, 224, 127, 201, 107, 160, 76, 1, 78, 107, 248, 184, 194, 192, 17, 231, 41, 11, 133, 105, 107, 179, 159, 230, 50, 156, 192, 179, 158, 9, 52, 58, 115, 101, 115, 115, 105, 111, 110, 58, 107, 101, 121, 115, 83, 50, 194, 39, 103, 192, 178, 217, 125, 32, 22, 246, 168, 239, 120, 222, 173, 2, 155, 120, 7, 166, 176, 226, 172, 7, 43, 102, 21, 204, 92, 8], &[11, 0, 0, 0, 0, 0, 0, 0]), (&[206, 197, 7, 13, 96, 157, 211, 73, 127, 114, 189, 224, 127, 201, 107, 160, 76, 1, 78, 107, 248, 184, 194, 192, 17, 231, 41, 11, 133, 105, 107, 179, 159, 230, 50, 156, 192, 179, 158, 9, 52, 58, 115, 101, 115, 115, 105, 111, 110, 58, 107, 101, 121, 115, 170, 10, 228, 226, 42, 96, 247, 17, 144, 247, 250, 141, 205, 84, 104, 175, 49, 59, 161, 58, 250, 178, 59, 219, 34, 1, 81, 12, 128, 142, 182, 22], &[21, 0, 0, 0, 0, 0, 0, 0]), (&[206, 197, 7, 13, 96, 157, 211, 73, 127, 114, 189, 224, 127, 201, 107, 160, 114, 99, 128, 64, 70, 131, 252, 137, 232, 35, 52, 80, 200, 170, 25, 80, 159, 230, 50, 156, 192, 179, 158, 9, 52, 58, 115, 101, 115, 115, 105, 111, 110, 58, 107, 101, 121, 115, 109, 123, 24, 86, 30, 19, 159, 228, 49, 200, 33, 139, 70, 205, 244, 47, 40, 190, 110, 43, 138, 12, 26, 121, 5, 219, 103, 1, 110, 91, 142, 123], &[11, 0, 0, 0, 0, 0, 0, 0]), (&[206, 197, 7, 13, 96, 157, 211, 73, 127, 114, 189, 224, 127, 201, 107, 160, 114, 99, 128, 64, 70, 131, 252, 137, 232, 35, 52, 80, 200, 170, 25, 80, 159, 230, 50, 156, 192, 179, 158, 9, 52, 58, 115, 101, 115, 115, 105, 111, 110, 58, 107, 101, 121, 115, 238, 43, 102, 225, 142, 104, 190, 12, 183, 86, 115, 25, 37, 223, 229, 65, 253, 167, 152, 54, 57, 147, 167, 137, 80, 161, 2, 235, 195, 174, 40, 244], &[21, 0, 0, 0, 0, 0, 0, 0]), (&[206, 197, 7, 13, 96, 157, 211, 73, 127, 114, 189, 224, 127, 201, 107, 160, 114, 118, 56, 0, 163, 106, 153, 253, 252, 124, 16, 246, 65, 95, 110, 230], &[5, 0, 0, 0]), (&[206, 197, 7, 13, 96, 157, 211, 73, 127, 114, 189, 224, 127, 201, 107, 160, 136, 220, 222, 147, 76, 101, 130, 39, 238, 29, 250, 252, 214, 225, 105, 3], &[8, 21, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0]), (&[206, 197, 7, 13, 96, 157, 211, 73, 127, 114, 189, 224, 127, 201, 107, 160, 148, 80, 191, 164, 185, 106, 63, 167, 163, 200, 244, 13, 166, 191, 50, 225], &[0]), (&[206, 197, 7, 13, 96, 157, 211, 73, 127, 114, 189, 224, 127, 201, 107, 160, 152, 239, 125, 192, 96, 67, 110, 78, 216, 3, 175, 7, 99, 43, 137, 182, 17, 218, 109, 31, 118, 29, 223, 155, 219, 76, 157, 110, 83, 3, 235, 212, 31, 97, 133, 141, 10, 86, 71, 161, 167, 191, 224, 137, 191, 146, 27, 233], &[44, 175, 112, 32, 141, 187, 198, 225, 208, 96, 126, 2, 8, 79, 212, 67, 222, 67, 84, 75, 213, 91, 72, 122, 231, 108, 125, 176, 42, 11, 117, 78, 2, 0, 0, 0]), (&[206, 197, 7, 13, 96, 157, 211, 73, 127, 114, 189, 224, 127, 201, 107, 160, 152, 239, 125, 192, 96, 67, 110, 78, 216, 3, 175, 7, 99, 43, 137, 182, 38, 160, 142, 77, 12, 81, 144, 240, 24, 113, 224, 86, 155, 98, 144, 184, 103, 96, 8, 93, 153, 241, 126, 180, 231, 230, 181, 143, 235, 141, 98, 73], &[44, 175, 112, 32, 141, 187, 198, 225, 208, 96, 126, 2, 8, 79, 212, 67, 222, 67, 84, 75, 213, 91, 72, 122, 231, 108, 125, 176, 42, 11, 117, 78, 2, 0, 0, 0]), (&[206, 197, 7, 13, 96, 157, 211, 73, 127, 114, 189, 224, 127, 201, 107, 160, 152, 239, 125, 192, 96, 67, 110, 78, 216, 3, 175, 7, 99, 43, 137, 182, 123, 10, 161, 115, 94, 91, 165, 141, 50, 54, 49, 108, 103, 31, 228, 240, 14, 211, 102, 238, 114, 65, 124, 158, 208, 42, 83, 168, 1, 158, 133, 184], &[44, 175, 112, 32, 141, 187, 198, 225, 208, 96, 126, 2, 8, 79, 212, 67, 222, 67, 84, 75, 213, 91, 72, 122, 231, 108, 125, 176, 42, 11, 117, 78, 2, 0, 0, 0]), (&[206, 197, 7, 13, 96, 157, 211, 73, 127, 114, 189, 224, 127, 201, 107, 160, 152, 239, 125, 192, 96, 67, 110, 78, 216, 3, 175, 7, 99, 43, 137, 182, 140, 3, 159, 247, 202, 161, 124, 206, 191, 202, 220, 68, 189, 159, 206, 106, 75, 102, 153, 196, 208, 61, 226, 227, 52, 154, 161, 220, 17, 25, 60, 215], &[44, 175, 112, 32, 141, 187, 198, 225, 208, 96, 126, 2, 8, 79, 212, 67, 222, 67, 84, 75, 213, 91, 72, 122, 231, 108, 125, 176, 42, 11, 117, 78, 2, 0, 0, 0]), (&[206, 197, 7, 13, 96, 157, 211, 73, 127, 114, 189, 224, 127, 201, 107, 160, 152, 239, 125, 192, 96, 67, 110, 78, 216, 3, 175, 7, 99, 43, 137, 182, 140, 53, 210, 47, 69, 157, 119, 202, 76, 11, 11, 80, 53, 134, 151, 102, 214, 13, 24, 43, 151, 22, 171, 62, 136, 121, 224, 102, 71, 136, 153, 168], &[44, 175, 112, 32, 141, 187, 198, 225, 208, 96, 126, 2, 8, 79, 212, 67, 222, 67, 84, 75, 213, 91, 72, 122, 231, 108, 125, 176, 42, 11, 117, 78, 2, 0, 0, 0]), (&[206, 197, 7, 13, 96, 157, 211, 73, 127, 114, 189, 224, 127, 201, 107, 160, 152, 239, 125, 192, 96, 67, 110, 78, 216, 3, 175, 7, 99, 43, 137, 182, 225, 44, 34, 212, 241, 98, 217, 160, 18, 201, 49, 146, 51, 218, 93, 62, 146, 60, 197, 225, 2, 155, 143, 144, 228, 114, 73, 201, 171, 37, 107, 53], &[44, 175, 112, 32, 141, 187, 198, 225, 208, 96, 126, 2, 8, 79, 212, 67, 222, 67, 84, 75, 213, 91, 72, 122, 231, 108, 125, 176, 42, 11, 117, 78, 2, 0, 0, 0]), (&[206, 197, 7, 13, 96, 157, 211, 73, 127, 114, 189, 224, 127, 201, 107, 160, 152, 239, 125, 192, 96, 67, 110, 78, 216, 3, 175, 7, 99, 43, 137, 182, 244, 170, 194, 251, 227, 63, 3, 85, 75, 254, 181, 89, 234, 38, 144, 237, 133, 33, 202, 164, 190, 150, 30, 97, 201, 26, 201, 161, 83, 13, 206, 122], &[44, 175, 112, 32, 141, 187, 198, 225, 208, 96, 126, 2, 8, 79, 212, 67, 222, 67, 84, 75, 213, 91, 72, 122, 231, 108, 125, 176, 42, 11, 117, 78, 2, 0, 0, 0]), (&[206, 197, 7, 13, 96, 157, 211, 73, 127, 114, 189, 224, 127, 201, 107, 160, 224, 205, 208, 98, 230, 234, 242, 66, 149, 173, 76, 207, 196, 29, 70, 9], &[8, 21, 0, 0, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0]), (&[206, 197, 7, 13, 96, 157, 211, 73, 127, 114, 189, 224, 127, 201, 107, 160, 255, 58, 225, 39, 112, 190, 162, 228, 141, 155, 222, 115, 133, 231, 162, 95], &[0, 0, 0, 0, 7, 0, 0, 0]), (&[240, 195, 101, 195, 207, 89, 214, 113, 235, 114, 218, 14, 122, 65, 19, 196, 159, 31, 5, 21, 244, 98, 205, 207, 132, 224, 241, 214, 4, 93, 252, 187], &[136, 19, 0, 0, 0, 0, 0, 0])]; +pub const _6: &[(&[u8], &[u8])] = &[(&[38, 170, 57, 78, 234, 86, 48, 224, 124, 72, 174, 12, 149, 88, 206, 247, 2, 165, 193, 177, 154, 183, 160, 79, 83, 108, 81, 154, 202, 73, 131, 172], &[6, 0, 0, 0, 0, 0, 0, 0]), (&[38, 170, 57, 78, 234, 86, 48, 224, 124, 72, 174, 12, 149, 88, 206, 247, 10, 152, 253, 190, 156, 230, 197, 88, 55, 87, 108, 96, 199, 175, 56, 80], &[23, 0, 0, 0]), (&[38, 170, 57, 78, 234, 86, 48, 224, 124, 72, 174, 12, 149, 88, 206, 247, 128, 212, 30, 94, 22, 5, 103, 101, 188, 132, 97, 133, 16, 114, 201, 215], &[92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), (&[38, 170, 57, 78, 234, 86, 48, 224, 124, 72, 174, 12, 149, 88, 206, 247, 138, 66, 243, 51, 35, 203, 92, 237, 59, 68, 221, 130, 95, 218, 159, 204], &[69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69]), (&[38, 170, 57, 78, 234, 86, 48, 224, 124, 72, 174, 12, 149, 88, 206, 247, 164, 71, 4, 181, 104, 210, 22, 103, 53, 106, 90, 5, 12, 17, 135, 70, 129, 228, 122, 25, 230, 178, 155, 10, 101, 185, 89, 23, 98, 206, 81, 67, 237, 48, 208, 38, 30, 93, 36, 163, 32, 23, 82, 80, 107, 32, 241, 92], &[69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69]), (&[38, 170, 57, 78, 234, 86, 48, 224, 124, 72, 174, 12, 149, 88, 206, 247, 185, 157, 136, 14, 198, 129, 121, 156, 12, 243, 14, 136, 134, 55, 29, 169, 29, 189, 125, 11, 86, 26, 65, 210, 60, 42, 70, 154, 212, 47, 189, 112, 213, 67, 139, 174, 130, 111, 111, 214, 7, 65, 49, 144, 195, 124, 54, 59], &[0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), (&[38, 170, 57, 78, 234, 86, 48, 224, 124, 72, 174, 12, 149, 88, 206, 247, 185, 157, 136, 14, 198, 129, 121, 156, 12, 243, 14, 136, 134, 55, 29, 169, 77, 254, 57, 245, 78, 123, 168, 74, 190, 191, 139, 138, 100, 234, 72, 46, 45, 174, 43, 141, 96, 79, 230, 7, 252, 242, 172, 39, 100, 43, 161, 177], &[0, 0, 0, 0, 0, 0, 0, 0, 208, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 232, 3, 0, 0, 0, 0, 0, 0, 232, 3, 0, 0, 0, 0, 0, 0]), (&[38, 170, 57, 78, 234, 86, 48, 224, 124, 72, 174, 12, 149, 88, 206, 247, 185, 157, 136, 14, 198, 129, 121, 156, 12, 243, 14, 136, 134, 55, 29, 169, 83, 50, 194, 39, 103, 192, 178, 217, 125, 32, 22, 246, 168, 239, 120, 222, 173, 2, 155, 120, 7, 166, 176, 226, 172, 7, 43, 102, 21, 204, 92, 8], &[0, 0, 0, 0, 0, 0, 0, 0, 232, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 232, 3, 0, 0, 0, 0, 0, 0, 232, 3, 0, 0, 0, 0, 0, 0]), (&[38, 170, 57, 78, 234, 86, 48, 224, 124, 72, 174, 12, 149, 88, 206, 247, 185, 157, 136, 14, 198, 129, 121, 156, 12, 243, 14, 136, 134, 55, 29, 169, 94, 90, 15, 75, 176, 234, 179, 121, 134, 37, 171, 24, 100, 84, 93, 19, 212, 232, 208, 104, 153, 217, 219, 77, 97, 219, 157, 238, 147, 186, 2, 221], &[0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), (&[38, 170, 57, 78, 234, 86, 48, 224, 124, 72, 174, 12, 149, 88, 206, 247, 185, 157, 136, 14, 198, 129, 121, 156, 12, 243, 14, 136, 134, 55, 29, 169, 100, 74, 81, 252, 33, 158, 145, 69, 184, 87, 123, 183, 118, 40, 118, 123, 28, 47, 115, 116, 142, 218, 139, 120, 139, 252, 102, 161, 181, 42, 32, 248], &[0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 165, 212, 232, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), (&[38, 170, 57, 78, 234, 86, 48, 224, 124, 72, 174, 12, 149, 88, 206, 247, 185, 157, 136, 14, 198, 129, 121, 156, 12, 243, 14, 136, 134, 55, 29, 169, 108, 221, 179, 103, 175, 189, 88, 59, 180, 143, 155, 189, 125, 91, 163, 177, 208, 115, 139, 72, 129, 177, 205, 221, 56, 22, 149, 38, 216, 21, 129, 55], &[0, 0, 0, 0, 0, 0, 0, 0, 44, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), (&[38, 170, 57, 78, 234, 86, 48, 224, 124, 72, 174, 12, 149, 88, 206, 247, 185, 157, 136, 14, 198, 129, 121, 156, 12, 243, 14, 136, 134, 55, 29, 169, 137, 6, 59, 94, 171, 160, 104, 80, 196, 182, 201, 87, 28, 70, 86, 200, 124, 206, 182, 4, 38, 77, 37, 233, 32, 121, 227, 154, 137, 129, 91, 166], &[0, 0, 0, 0, 0, 0, 0, 0, 208, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0]), (&[38, 170, 57, 78, 234, 86, 48, 224, 124, 72, 174, 12, 149, 88, 206, 247, 185, 157, 136, 14, 198, 129, 121, 156, 12, 243, 14, 136, 134, 55, 29, 169, 165, 186, 85, 195, 163, 151, 212, 60, 23, 89, 63, 40, 154, 164, 151, 157, 10, 229, 146, 68, 179, 47, 3, 236, 19, 65, 97, 129, 175, 134, 209, 11], &[0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), (&[38, 170, 57, 78, 234, 86, 48, 224, 124, 72, 174, 12, 149, 88, 206, 247, 185, 157, 136, 14, 198, 129, 121, 156, 12, 243, 14, 136, 134, 55, 29, 169, 170, 10, 228, 226, 42, 96, 247, 17, 144, 247, 250, 141, 205, 84, 104, 175, 49, 59, 161, 58, 250, 178, 59, 219, 34, 1, 81, 12, 128, 142, 182, 22], &[0, 0, 0, 0, 0, 0, 0, 0, 208, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 232, 3, 0, 0, 0, 0, 0, 0, 232, 3, 0, 0, 0, 0, 0, 0]), (&[38, 170, 57, 78, 234, 86, 48, 224, 124, 72, 174, 12, 149, 88, 206, 247, 185, 157, 136, 14, 198, 129, 121, 156, 12, 243, 14, 136, 134, 55, 29, 169, 189, 225, 131, 90, 186, 237, 15, 242, 121, 87, 0, 55, 252, 73, 213, 189, 23, 110, 180, 130, 163, 178, 129, 109, 244, 252, 194, 204, 27, 200, 106, 202], &[0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), (&[38, 170, 57, 78, 234, 86, 48, 224, 124, 72, 174, 12, 149, 88, 206, 247, 185, 157, 136, 14, 198, 129, 121, 156, 12, 243, 14, 136, 134, 55, 29, 169, 213, 92, 123, 109, 126, 139, 228, 10, 88, 51, 198, 4, 8, 188, 78, 184, 171, 234, 78, 93, 168, 211, 37, 233, 8, 135, 156, 195, 59, 151, 205, 153], &[0, 0, 0, 0, 0, 0, 0, 0, 208, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), (&[38, 170, 57, 78, 234, 86, 48, 224, 124, 72, 174, 12, 149, 88, 206, 247, 185, 157, 136, 14, 198, 129, 121, 156, 12, 243, 14, 136, 134, 55, 29, 169, 216, 247, 229, 16, 146, 46, 205, 71, 180, 10, 28, 88, 41, 56, 34, 6, 69, 103, 185, 191, 60, 126, 225, 114, 12, 144, 76, 94, 12, 87, 247, 55], &[0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), (&[38, 170, 57, 78, 234, 86, 48, 224, 124, 72, 174, 12, 149, 88, 206, 247, 185, 157, 136, 14, 198, 129, 121, 156, 12, 243, 14, 136, 134, 55, 29, 169, 232, 139, 67, 253, 237, 99, 35, 239, 2, 255, 239, 251, 216, 196, 8, 70, 238, 9, 191, 49, 98, 113, 189, 34, 54, 150, 89, 201, 89, 221, 115, 58], &[0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), (&[38, 170, 57, 78, 234, 86, 48, 224, 124, 72, 174, 12, 149, 88, 206, 247, 185, 157, 136, 14, 198, 129, 121, 156, 12, 243, 14, 136, 134, 55, 29, 169, 233, 103, 96, 210, 116, 101, 58, 57, 180, 41, 168, 126, 186, 174, 157, 58, 164, 253, 245, 139, 144, 150, 207, 11, 235, 199, 196, 229, 164, 194, 237, 141], &[0, 0, 0, 0, 0, 0, 0, 0, 144, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), (&[38, 170, 57, 78, 234, 86, 48, 224, 124, 72, 174, 12, 149, 88, 206, 247, 185, 157, 136, 14, 198, 129, 121, 156, 12, 243, 14, 136, 134, 55, 29, 169, 250, 67, 84, 127, 177, 206, 187, 248, 7, 171, 139, 143, 54, 116, 13, 218, 140, 198, 7, 172, 12, 47, 130, 190, 178, 198, 48, 211, 195, 137, 122, 61], &[0, 0, 0, 0, 0, 0, 0, 0, 208, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 244, 1, 0, 0, 0, 0, 0, 0, 244, 1, 0, 0, 0, 0, 0, 0]), (&[58, 99, 111, 100, 101], &[]), (&[58, 101, 120, 116, 114, 105, 110, 115, 105, 99, 95, 105, 110, 100, 101, 120], &[0, 0, 0, 0]), (&[58, 104, 101, 97, 112, 112, 97, 103, 101, 115], &[8, 0, 0, 0, 0, 0, 0, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 11, 106, 69, 50, 30, 250, 233, 42, 234, 21, 224, 116, 14, 199, 175, 231], &[2, 0, 0, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 14, 160, 236, 172, 118, 69, 125, 15, 155, 57, 185, 129, 221, 16, 112, 18], &[8, 21, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 19, 142, 113, 97, 36, 145, 25, 45, 104, 222, 171, 126, 111, 86, 63, 225], &[2, 0, 0, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 40, 220, 203, 85, 155, 149, 196, 1, 104, 161, 178, 105, 101, 129, 181, 167], &[0, 0, 0, 0, 0, 0, 0, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 62, 209, 75, 69, 237, 32, 208, 84, 240, 94, 55, 226, 84, 44, 254, 112, 77, 254, 57, 245, 78, 123, 168, 74, 190, 191, 139, 138, 100, 234, 72, 46, 45, 174, 43, 141, 96, 79, 230, 7, 252, 242, 172, 39, 100, 43, 161, 177], &[40, 0, 0, 0, 0, 0, 0, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 62, 209, 75, 69, 237, 32, 208, 84, 240, 94, 55, 226, 84, 44, 254, 112, 83, 50, 194, 39, 103, 192, 178, 217, 125, 32, 22, 246, 168, 239, 120, 222, 173, 2, 155, 120, 7, 166, 176, 226, 172, 7, 43, 102, 21, 204, 92, 8], &[10, 0, 0, 0, 0, 0, 0, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 62, 209, 75, 69, 237, 32, 208, 84, 240, 94, 55, 226, 84, 44, 254, 112, 137, 6, 59, 94, 171, 160, 104, 80, 196, 182, 201, 87, 28, 70, 86, 200, 124, 206, 182, 4, 38, 77, 37, 233, 32, 121, 227, 154, 137, 129, 91, 166], &[30, 0, 0, 0, 0, 0, 0, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 62, 209, 75, 69, 237, 32, 208, 84, 240, 94, 55, 226, 84, 44, 254, 112, 170, 10, 228, 226, 42, 96, 247, 17, 144, 247, 250, 141, 205, 84, 104, 175, 49, 59, 161, 58, 250, 178, 59, 219, 34, 1, 81, 12, 128, 142, 182, 22], &[20, 0, 0, 0, 0, 0, 0, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 62, 209, 75, 69, 237, 32, 208, 84, 240, 94, 55, 226, 84, 44, 254, 112, 250, 67, 84, 127, 177, 206, 187, 248, 7, 171, 139, 143, 54, 116, 13, 218, 140, 198, 7, 172, 12, 47, 130, 190, 178, 198, 48, 211, 195, 137, 122, 61], &[100, 0, 0, 0, 0, 0, 0, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 66, 42, 219, 87, 159, 29, 191, 79, 56, 134, 197, 207, 163, 187, 140, 196, 94, 90, 15, 75, 176, 234, 179, 121, 134, 37, 171, 24, 100, 84, 93, 19, 212, 232, 208, 104, 153, 217, 219, 77, 97, 219, 157, 238, 147, 186, 2, 221], &[21, 0, 0, 0, 0, 0, 0, 0, 161, 15, 161, 15, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 66, 42, 219, 87, 159, 29, 191, 79, 56, 134, 197, 207, 163, 187, 140, 196, 165, 186, 85, 195, 163, 151, 212, 60, 23, 89, 63, 40, 154, 164, 151, 157, 10, 229, 146, 68, 179, 47, 3, 236, 19, 65, 97, 129, 175, 134, 209, 11], &[31, 0, 0, 0, 0, 0, 0, 0, 4, 4, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 66, 42, 219, 87, 159, 29, 191, 79, 56, 134, 197, 207, 163, 187, 140, 196, 189, 225, 131, 90, 186, 237, 15, 242, 121, 87, 0, 55, 252, 73, 213, 189, 23, 110, 180, 130, 163, 178, 129, 109, 244, 252, 194, 204, 27, 200, 106, 202], &[11, 0, 0, 0, 0, 0, 0, 0, 161, 15, 161, 15, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 66, 42, 219, 87, 159, 29, 191, 79, 56, 134, 197, 207, 163, 187, 140, 196, 213, 92, 123, 109, 126, 139, 228, 10, 88, 51, 198, 4, 8, 188, 78, 184, 171, 234, 78, 93, 168, 211, 37, 233, 8, 135, 156, 195, 59, 151, 205, 153], &[101, 0, 0, 0, 0, 0, 0, 0, 209, 7, 209, 7, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 66, 42, 219, 87, 159, 29, 191, 79, 56, 134, 197, 207, 163, 187, 140, 196, 216, 247, 229, 16, 146, 46, 205, 71, 180, 10, 28, 88, 41, 56, 34, 6, 69, 103, 185, 191, 60, 126, 225, 114, 12, 144, 76, 94, 12, 87, 247, 55], &[41, 0, 0, 0, 0, 0, 0, 0, 161, 15, 161, 15, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 80, 154, 155, 110, 250, 147, 245, 187, 131, 248, 88, 240, 186, 191, 211, 11], &[6, 0, 0, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 85, 121, 41, 127, 77, 251, 150, 9, 231, 228, 194, 235, 171, 156, 228, 10], &[0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 86, 239, 98, 39, 206, 203, 47, 7, 39, 76, 176, 87, 45, 143, 164, 194], &[101, 0, 0, 0, 0, 0, 0, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 106, 147, 17, 38, 51, 187, 51, 84, 230, 121, 82, 252, 221, 116, 12, 213], &[31, 0, 0, 0, 0, 0, 0, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 131, 229, 133, 187, 197, 253, 206, 197, 114, 25, 192, 220, 129, 239, 95, 244, 83, 50, 194, 39, 103, 192, 178, 217, 125, 32, 22, 246, 168, 239, 120, 222, 173, 2, 155, 120, 7, 166, 176, 226, 172, 7, 43, 102, 21, 204, 92, 8], &[149, 17, 161, 15, 4, 101, 0, 0, 0, 0, 0, 0, 0, 245, 1]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 131, 229, 133, 187, 197, 253, 206, 197, 114, 25, 192, 220, 129, 239, 95, 244, 170, 10, 228, 226, 42, 96, 247, 17, 144, 247, 250, 141, 205, 84, 104, 175, 49, 59, 161, 58, 250, 178, 59, 219, 34, 1, 81, 12, 128, 142, 182, 22], &[125, 21, 161, 15, 4, 101, 0, 0, 0, 0, 0, 0, 0, 221, 5]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 136, 220, 222, 147, 76, 101, 130, 39, 238, 29, 250, 252, 214, 225, 105, 3, 83, 50, 194, 39, 103, 192, 178, 217, 125, 32, 22, 246, 168, 239, 120, 222, 173, 2, 155, 120, 7, 166, 176, 226, 172, 7, 43, 102, 21, 204, 92, 8], &[0, 1, 21, 0, 0, 0, 0, 0, 0, 0, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 136, 220, 222, 147, 76, 101, 130, 39, 238, 29, 250, 252, 214, 225, 105, 3, 137, 6, 59, 94, 171, 160, 104, 80, 196, 182, 201, 87, 28, 70, 86, 200, 124, 206, 182, 4, 38, 77, 37, 233, 32, 121, 227, 154, 137, 129, 91, 166], &[0, 0, 1, 21, 0, 0, 0, 0, 0, 0, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 136, 220, 222, 147, 76, 101, 130, 39, 238, 29, 250, 252, 214, 225, 105, 3, 170, 10, 228, 226, 42, 96, 247, 17, 144, 247, 250, 141, 205, 84, 104, 175, 49, 59, 161, 58, 250, 178, 59, 219, 34, 1, 81, 12, 128, 142, 182, 22], &[0, 1, 31, 0, 0, 0, 0, 0, 0, 0, 1, 11, 0, 0, 0, 0, 0, 0, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 146, 32, 225, 114, 190, 211, 22, 96, 95, 115, 241, 255, 123, 74, 222, 152, 77, 254, 57, 245, 78, 123, 168, 74, 190, 191, 139, 138, 100, 234, 72, 46, 45, 174, 43, 141, 96, 79, 230, 7, 252, 242, 172, 39, 100, 43, 161, 177], &[0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 146, 32, 225, 114, 190, 211, 22, 96, 95, 115, 241, 255, 123, 74, 222, 152, 83, 50, 194, 39, 103, 192, 178, 217, 125, 32, 22, 246, 168, 239, 120, 222, 173, 2, 155, 120, 7, 166, 176, 226, 172, 7, 43, 102, 21, 204, 92, 8], &[0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 146, 32, 225, 114, 190, 211, 22, 96, 95, 115, 241, 255, 123, 74, 222, 152, 137, 6, 59, 94, 171, 160, 104, 80, 196, 182, 201, 87, 28, 70, 86, 200, 124, 206, 182, 4, 38, 77, 37, 233, 32, 121, 227, 154, 137, 129, 91, 166], &[0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 146, 32, 225, 114, 190, 211, 22, 96, 95, 115, 241, 255, 123, 74, 222, 152, 170, 10, 228, 226, 42, 96, 247, 17, 144, 247, 250, 141, 205, 84, 104, 175, 49, 59, 161, 58, 250, 178, 59, 219, 34, 1, 81, 12, 128, 142, 182, 22], &[0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 146, 32, 225, 114, 190, 211, 22, 96, 95, 115, 241, 255, 123, 74, 222, 152, 250, 67, 84, 127, 177, 206, 187, 248, 7, 171, 139, 143, 54, 116, 13, 218, 140, 198, 7, 172, 12, 47, 130, 190, 178, 198, 48, 211, 195, 137, 122, 61], &[0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 156, 106, 99, 127, 98, 174, 42, 241, 199, 227, 30, 237, 126, 150, 190, 4, 250, 67, 84, 127, 177, 206, 187, 248, 7, 171, 139, 143, 54, 116, 13, 218, 140, 198, 7, 172, 12, 47, 130, 190, 178, 198, 48, 211, 195, 137, 122, 61], &[8, 11, 0, 0, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 156, 189, 47, 11, 41, 160, 8, 163, 96, 9, 172, 68, 204, 160, 201, 105], &[101, 4, 0, 0, 0, 0, 0, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 166, 97, 104, 247, 231, 37, 155, 102, 112, 160, 111, 37, 101, 227, 229, 242], &[112, 23, 0, 0, 0, 0, 0, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 180, 154, 39, 56, 238, 179, 8, 150, 170, 203, 139, 63, 180, 100, 113, 189], &[0, 0, 0, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 194, 154, 3, 16, 225, 187, 69, 210, 12, 172, 231, 124, 203, 98, 201, 125], &[0, 225, 245, 5]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 234, 7, 222, 43, 143, 1, 5, 22, 220, 163, 247, 239, 82, 247, 172, 90], &[12, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 247, 218, 208, 49, 115, 36, 174, 202, 232, 116, 75, 135, 252, 149, 242, 243], &[0]), (&[194, 38, 18, 118, 204, 157, 31, 133, 152, 234, 75, 106, 116, 177, 92, 47, 33, 143, 38, 199, 58, 221, 99, 72, 151, 85, 11, 64, 3, 178, 107, 198, 77, 254, 57, 245, 78, 123, 168, 74, 190, 191, 139, 138, 100, 234, 72, 46, 45, 174, 43, 141, 96, 79, 230, 7, 252, 242, 172, 39, 100, 43, 161, 177], &[4, 115, 116, 97, 107, 105, 110, 103, 32, 232, 3, 0, 0, 0, 0, 0, 0, 2]), (&[194, 38, 18, 118, 204, 157, 31, 133, 152, 234, 75, 106, 116, 177, 92, 47, 33, 143, 38, 199, 58, 221, 99, 72, 151, 85, 11, 64, 3, 178, 107, 198, 83, 50, 194, 39, 103, 192, 178, 217, 125, 32, 22, 246, 168, 239, 120, 222, 173, 2, 155, 120, 7, 166, 176, 226, 172, 7, 43, 102, 21, 204, 92, 8], &[4, 115, 116, 97, 107, 105, 110, 103, 32, 232, 3, 0, 0, 0, 0, 0, 0, 2]), (&[194, 38, 18, 118, 204, 157, 31, 133, 152, 234, 75, 106, 116, 177, 92, 47, 33, 143, 38, 199, 58, 221, 99, 72, 151, 85, 11, 64, 3, 178, 107, 198, 137, 6, 59, 94, 171, 160, 104, 80, 196, 182, 201, 87, 28, 70, 86, 200, 124, 206, 182, 4, 38, 77, 37, 233, 32, 121, 227, 154, 137, 129, 91, 166], &[4, 115, 116, 97, 107, 105, 110, 103, 32, 1, 0, 0, 0, 0, 0, 0, 0, 2]), (&[194, 38, 18, 118, 204, 157, 31, 133, 152, 234, 75, 106, 116, 177, 92, 47, 33, 143, 38, 199, 58, 221, 99, 72, 151, 85, 11, 64, 3, 178, 107, 198, 170, 10, 228, 226, 42, 96, 247, 17, 144, 247, 250, 141, 205, 84, 104, 175, 49, 59, 161, 58, 250, 178, 59, 219, 34, 1, 81, 12, 128, 142, 182, 22], &[4, 115, 116, 97, 107, 105, 110, 103, 32, 232, 3, 0, 0, 0, 0, 0, 0, 2]), (&[194, 38, 18, 118, 204, 157, 31, 133, 152, 234, 75, 106, 116, 177, 92, 47, 33, 143, 38, 199, 58, 221, 99, 72, 151, 85, 11, 64, 3, 178, 107, 198, 250, 67, 84, 127, 177, 206, 187, 248, 7, 171, 139, 143, 54, 116, 13, 218, 140, 198, 7, 172, 12, 47, 130, 190, 178, 198, 48, 211, 195, 137, 122, 61], &[4, 115, 116, 97, 107, 105, 110, 103, 32, 244, 1, 0, 0, 0, 0, 0, 0, 2]), (&[194, 38, 18, 118, 204, 157, 31, 133, 152, 234, 75, 106, 116, 177, 92, 47, 87, 200, 117, 228, 207, 247, 65, 72, 228, 98, 143, 38, 75, 151, 76, 128], &[214, 61, 165, 212, 232, 0, 0, 0]), (&[194, 38, 18, 118, 204, 157, 31, 133, 152, 234, 75, 106, 116, 177, 92, 47, 227, 253, 141, 247, 41, 112, 188, 130, 229, 38, 126, 160, 30, 221, 217, 73], &[1]), (&[206, 197, 7, 13, 96, 157, 211, 73, 127, 114, 189, 224, 127, 201, 107, 160, 76, 1, 78, 107, 248, 184, 194, 192, 17, 231, 41, 11, 133, 105, 107, 179, 159, 230, 50, 156, 192, 179, 158, 9, 52, 58, 115, 101, 115, 115, 105, 111, 110, 58, 107, 101, 121, 115, 83, 50, 194, 39, 103, 192, 178, 217, 125, 32, 22, 246, 168, 239, 120, 222, 173, 2, 155, 120, 7, 166, 176, 226, 172, 7, 43, 102, 21, 204, 92, 8], &[11, 0, 0, 0, 0, 0, 0, 0]), (&[206, 197, 7, 13, 96, 157, 211, 73, 127, 114, 189, 224, 127, 201, 107, 160, 76, 1, 78, 107, 248, 184, 194, 192, 17, 231, 41, 11, 133, 105, 107, 179, 159, 230, 50, 156, 192, 179, 158, 9, 52, 58, 115, 101, 115, 115, 105, 111, 110, 58, 107, 101, 121, 115, 170, 10, 228, 226, 42, 96, 247, 17, 144, 247, 250, 141, 205, 84, 104, 175, 49, 59, 161, 58, 250, 178, 59, 219, 34, 1, 81, 12, 128, 142, 182, 22], &[21, 0, 0, 0, 0, 0, 0, 0]), (&[206, 197, 7, 13, 96, 157, 211, 73, 127, 114, 189, 224, 127, 201, 107, 160, 114, 99, 128, 64, 70, 131, 252, 137, 232, 35, 52, 80, 200, 170, 25, 80, 159, 230, 50, 156, 192, 179, 158, 9, 52, 58, 115, 101, 115, 115, 105, 111, 110, 58, 107, 101, 121, 115, 109, 123, 24, 86, 30, 19, 159, 228, 49, 200, 33, 139, 70, 205, 244, 47, 40, 190, 110, 43, 138, 12, 26, 121, 5, 219, 103, 1, 110, 91, 142, 123], &[11, 0, 0, 0, 0, 0, 0, 0]), (&[206, 197, 7, 13, 96, 157, 211, 73, 127, 114, 189, 224, 127, 201, 107, 160, 114, 99, 128, 64, 70, 131, 252, 137, 232, 35, 52, 80, 200, 170, 25, 80, 159, 230, 50, 156, 192, 179, 158, 9, 52, 58, 115, 101, 115, 115, 105, 111, 110, 58, 107, 101, 121, 115, 238, 43, 102, 225, 142, 104, 190, 12, 183, 86, 115, 25, 37, 223, 229, 65, 253, 167, 152, 54, 57, 147, 167, 137, 80, 161, 2, 235, 195, 174, 40, 244], &[21, 0, 0, 0, 0, 0, 0, 0]), (&[206, 197, 7, 13, 96, 157, 211, 73, 127, 114, 189, 224, 127, 201, 107, 160, 114, 118, 56, 0, 163, 106, 153, 253, 252, 124, 16, 246, 65, 95, 110, 230], &[6, 0, 0, 0]), (&[206, 197, 7, 13, 96, 157, 211, 73, 127, 114, 189, 224, 127, 201, 107, 160, 136, 220, 222, 147, 76, 101, 130, 39, 238, 29, 250, 252, 214, 225, 105, 3], &[8, 21, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0]), (&[206, 197, 7, 13, 96, 157, 211, 73, 127, 114, 189, 224, 127, 201, 107, 160, 148, 80, 191, 164, 185, 106, 63, 167, 163, 200, 244, 13, 166, 191, 50, 225], &[1]), (&[206, 197, 7, 13, 96, 157, 211, 73, 127, 114, 189, 224, 127, 201, 107, 160, 152, 239, 125, 192, 96, 67, 110, 78, 216, 3, 175, 7, 99, 43, 137, 182, 17, 218, 109, 31, 118, 29, 223, 155, 219, 76, 157, 110, 83, 3, 235, 212, 31, 97, 133, 141, 10, 86, 71, 161, 167, 191, 224, 137, 191, 146, 27, 233], &[44, 175, 112, 32, 141, 187, 198, 225, 208, 96, 126, 2, 8, 79, 212, 67, 222, 67, 84, 75, 213, 91, 72, 122, 231, 108, 125, 176, 42, 11, 117, 78, 2, 0, 0, 0]), (&[206, 197, 7, 13, 96, 157, 211, 73, 127, 114, 189, 224, 127, 201, 107, 160, 152, 239, 125, 192, 96, 67, 110, 78, 216, 3, 175, 7, 99, 43, 137, 182, 38, 160, 142, 77, 12, 81, 144, 240, 24, 113, 224, 86, 155, 98, 144, 184, 103, 96, 8, 93, 153, 241, 126, 180, 231, 230, 181, 143, 235, 141, 98, 73], &[44, 175, 112, 32, 141, 187, 198, 225, 208, 96, 126, 2, 8, 79, 212, 67, 222, 67, 84, 75, 213, 91, 72, 122, 231, 108, 125, 176, 42, 11, 117, 78, 2, 0, 0, 0]), (&[206, 197, 7, 13, 96, 157, 211, 73, 127, 114, 189, 224, 127, 201, 107, 160, 152, 239, 125, 192, 96, 67, 110, 78, 216, 3, 175, 7, 99, 43, 137, 182, 91, 143, 41, 219, 118, 207, 78, 103, 110, 79, 201, 177, 112, 64, 49, 45, 235, 237, 175, 205, 86, 55, 251, 60, 123, 173, 210, 205, 220, 230, 164, 69], &[44, 175, 112, 32, 141, 187, 198, 225, 208, 96, 126, 2, 8, 79, 212, 67, 222, 67, 84, 75, 213, 91, 72, 122, 231, 108, 125, 176, 42, 11, 117, 78, 2, 0, 0, 0]), (&[206, 197, 7, 13, 96, 157, 211, 73, 127, 114, 189, 224, 127, 201, 107, 160, 152, 239, 125, 192, 96, 67, 110, 78, 216, 3, 175, 7, 99, 43, 137, 182, 123, 10, 161, 115, 94, 91, 165, 141, 50, 54, 49, 108, 103, 31, 228, 240, 14, 211, 102, 238, 114, 65, 124, 158, 208, 42, 83, 168, 1, 158, 133, 184], &[44, 175, 112, 32, 141, 187, 198, 225, 208, 96, 126, 2, 8, 79, 212, 67, 222, 67, 84, 75, 213, 91, 72, 122, 231, 108, 125, 176, 42, 11, 117, 78, 2, 0, 0, 0]), (&[206, 197, 7, 13, 96, 157, 211, 73, 127, 114, 189, 224, 127, 201, 107, 160, 152, 239, 125, 192, 96, 67, 110, 78, 216, 3, 175, 7, 99, 43, 137, 182, 140, 3, 159, 247, 202, 161, 124, 206, 191, 202, 220, 68, 189, 159, 206, 106, 75, 102, 153, 196, 208, 61, 226, 227, 52, 154, 161, 220, 17, 25, 60, 215], &[44, 175, 112, 32, 141, 187, 198, 225, 208, 96, 126, 2, 8, 79, 212, 67, 222, 67, 84, 75, 213, 91, 72, 122, 231, 108, 125, 176, 42, 11, 117, 78, 2, 0, 0, 0]), (&[206, 197, 7, 13, 96, 157, 211, 73, 127, 114, 189, 224, 127, 201, 107, 160, 152, 239, 125, 192, 96, 67, 110, 78, 216, 3, 175, 7, 99, 43, 137, 182, 140, 53, 210, 47, 69, 157, 119, 202, 76, 11, 11, 80, 53, 134, 151, 102, 214, 13, 24, 43, 151, 22, 171, 62, 136, 121, 224, 102, 71, 136, 153, 168], &[44, 175, 112, 32, 141, 187, 198, 225, 208, 96, 126, 2, 8, 79, 212, 67, 222, 67, 84, 75, 213, 91, 72, 122, 231, 108, 125, 176, 42, 11, 117, 78, 2, 0, 0, 0]), (&[206, 197, 7, 13, 96, 157, 211, 73, 127, 114, 189, 224, 127, 201, 107, 160, 152, 239, 125, 192, 96, 67, 110, 78, 216, 3, 175, 7, 99, 43, 137, 182, 225, 44, 34, 212, 241, 98, 217, 160, 18, 201, 49, 146, 51, 218, 93, 62, 146, 60, 197, 225, 2, 155, 143, 144, 228, 114, 73, 201, 171, 37, 107, 53], &[44, 175, 112, 32, 141, 187, 198, 225, 208, 96, 126, 2, 8, 79, 212, 67, 222, 67, 84, 75, 213, 91, 72, 122, 231, 108, 125, 176, 42, 11, 117, 78, 2, 0, 0, 0]), (&[206, 197, 7, 13, 96, 157, 211, 73, 127, 114, 189, 224, 127, 201, 107, 160, 152, 239, 125, 192, 96, 67, 110, 78, 216, 3, 175, 7, 99, 43, 137, 182, 244, 170, 194, 251, 227, 63, 3, 85, 75, 254, 181, 89, 234, 38, 144, 237, 133, 33, 202, 164, 190, 150, 30, 97, 201, 26, 201, 161, 83, 13, 206, 122], &[44, 175, 112, 32, 141, 187, 198, 225, 208, 96, 126, 2, 8, 79, 212, 67, 222, 67, 84, 75, 213, 91, 72, 122, 231, 108, 125, 176, 42, 11, 117, 78, 2, 0, 0, 0]), (&[206, 197, 7, 13, 96, 157, 211, 73, 127, 114, 189, 224, 127, 201, 107, 160, 224, 205, 208, 98, 230, 234, 242, 66, 149, 173, 76, 207, 196, 29, 70, 9], &[8, 21, 0, 0, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0]), (&[206, 197, 7, 13, 96, 157, 211, 73, 127, 114, 189, 224, 127, 201, 107, 160, 255, 58, 225, 39, 112, 190, 162, 228, 141, 155, 222, 115, 133, 231, 162, 95], &[0, 0, 0, 0, 8, 0, 0, 0]), (&[240, 195, 101, 195, 207, 89, 214, 113, 235, 114, 218, 14, 122, 65, 19, 196, 159, 31, 5, 21, 244, 98, 205, 207, 132, 224, 241, 214, 4, 93, 252, 187], &[112, 23, 0, 0, 0, 0, 0, 0])]; +pub const _7: &[(&[u8], &[u8])] = &[(&[38, 170, 57, 78, 234, 86, 48, 224, 124, 72, 174, 12, 149, 88, 206, 247, 2, 165, 193, 177, 154, 183, 160, 79, 83, 108, 81, 154, 202, 73, 131, 172], &[7, 0, 0, 0, 0, 0, 0, 0]), (&[38, 170, 57, 78, 234, 86, 48, 224, 124, 72, 174, 12, 149, 88, 206, 247, 10, 152, 253, 190, 156, 230, 197, 88, 55, 87, 108, 96, 199, 175, 56, 80], &[24, 0, 0, 0]), (&[38, 170, 57, 78, 234, 86, 48, 224, 124, 72, 174, 12, 149, 88, 206, 247, 128, 212, 30, 94, 22, 5, 103, 101, 188, 132, 97, 133, 16, 114, 201, 215], &[96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), (&[38, 170, 57, 78, 234, 86, 48, 224, 124, 72, 174, 12, 149, 88, 206, 247, 138, 66, 243, 51, 35, 203, 92, 237, 59, 68, 221, 130, 95, 218, 159, 204], &[69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69]), (&[38, 170, 57, 78, 234, 86, 48, 224, 124, 72, 174, 12, 149, 88, 206, 247, 164, 71, 4, 181, 104, 210, 22, 103, 53, 106, 90, 5, 12, 17, 135, 70, 129, 228, 122, 25, 230, 178, 155, 10, 101, 185, 89, 23, 98, 206, 81, 67, 237, 48, 208, 38, 30, 93, 36, 163, 32, 23, 82, 80, 107, 32, 241, 92], &[69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69]), (&[38, 170, 57, 78, 234, 86, 48, 224, 124, 72, 174, 12, 149, 88, 206, 247, 185, 157, 136, 14, 198, 129, 121, 156, 12, 243, 14, 136, 134, 55, 29, 169, 29, 189, 125, 11, 86, 26, 65, 210, 60, 42, 70, 154, 212, 47, 189, 112, 213, 67, 139, 174, 130, 111, 111, 214, 7, 65, 49, 144, 195, 124, 54, 59], &[0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), (&[38, 170, 57, 78, 234, 86, 48, 224, 124, 72, 174, 12, 149, 88, 206, 247, 185, 157, 136, 14, 198, 129, 121, 156, 12, 243, 14, 136, 134, 55, 29, 169, 77, 254, 57, 245, 78, 123, 168, 74, 190, 191, 139, 138, 100, 234, 72, 46, 45, 174, 43, 141, 96, 79, 230, 7, 252, 242, 172, 39, 100, 43, 161, 177], &[0, 0, 0, 0, 0, 0, 0, 0, 208, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 232, 3, 0, 0, 0, 0, 0, 0, 232, 3, 0, 0, 0, 0, 0, 0]), (&[38, 170, 57, 78, 234, 86, 48, 224, 124, 72, 174, 12, 149, 88, 206, 247, 185, 157, 136, 14, 198, 129, 121, 156, 12, 243, 14, 136, 134, 55, 29, 169, 83, 50, 194, 39, 103, 192, 178, 217, 125, 32, 22, 246, 168, 239, 120, 222, 173, 2, 155, 120, 7, 166, 176, 226, 172, 7, 43, 102, 21, 204, 92, 8], &[0, 0, 0, 0, 0, 0, 0, 0, 232, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 232, 3, 0, 0, 0, 0, 0, 0, 232, 3, 0, 0, 0, 0, 0, 0]), (&[38, 170, 57, 78, 234, 86, 48, 224, 124, 72, 174, 12, 149, 88, 206, 247, 185, 157, 136, 14, 198, 129, 121, 156, 12, 243, 14, 136, 134, 55, 29, 169, 94, 90, 15, 75, 176, 234, 179, 121, 134, 37, 171, 24, 100, 84, 93, 19, 212, 232, 208, 104, 153, 217, 219, 77, 97, 219, 157, 238, 147, 186, 2, 221], &[0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), (&[38, 170, 57, 78, 234, 86, 48, 224, 124, 72, 174, 12, 149, 88, 206, 247, 185, 157, 136, 14, 198, 129, 121, 156, 12, 243, 14, 136, 134, 55, 29, 169, 100, 74, 81, 252, 33, 158, 145, 69, 184, 87, 123, 183, 118, 40, 118, 123, 28, 47, 115, 116, 142, 218, 139, 120, 139, 252, 102, 161, 181, 42, 32, 248], &[0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 165, 212, 232, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), (&[38, 170, 57, 78, 234, 86, 48, 224, 124, 72, 174, 12, 149, 88, 206, 247, 185, 157, 136, 14, 198, 129, 121, 156, 12, 243, 14, 136, 134, 55, 29, 169, 108, 221, 179, 103, 175, 189, 88, 59, 180, 143, 155, 189, 125, 91, 163, 177, 208, 115, 139, 72, 129, 177, 205, 221, 56, 22, 149, 38, 216, 21, 129, 55], &[0, 0, 0, 0, 0, 0, 0, 0, 44, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), (&[38, 170, 57, 78, 234, 86, 48, 224, 124, 72, 174, 12, 149, 88, 206, 247, 185, 157, 136, 14, 198, 129, 121, 156, 12, 243, 14, 136, 134, 55, 29, 169, 137, 6, 59, 94, 171, 160, 104, 80, 196, 182, 201, 87, 28, 70, 86, 200, 124, 206, 182, 4, 38, 77, 37, 233, 32, 121, 227, 154, 137, 129, 91, 166], &[0, 0, 0, 0, 0, 0, 0, 0, 208, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0]), (&[38, 170, 57, 78, 234, 86, 48, 224, 124, 72, 174, 12, 149, 88, 206, 247, 185, 157, 136, 14, 198, 129, 121, 156, 12, 243, 14, 136, 134, 55, 29, 169, 165, 186, 85, 195, 163, 151, 212, 60, 23, 89, 63, 40, 154, 164, 151, 157, 10, 229, 146, 68, 179, 47, 3, 236, 19, 65, 97, 129, 175, 134, 209, 11], &[0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), (&[38, 170, 57, 78, 234, 86, 48, 224, 124, 72, 174, 12, 149, 88, 206, 247, 185, 157, 136, 14, 198, 129, 121, 156, 12, 243, 14, 136, 134, 55, 29, 169, 170, 10, 228, 226, 42, 96, 247, 17, 144, 247, 250, 141, 205, 84, 104, 175, 49, 59, 161, 58, 250, 178, 59, 219, 34, 1, 81, 12, 128, 142, 182, 22], &[0, 0, 0, 0, 0, 0, 0, 0, 208, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 232, 3, 0, 0, 0, 0, 0, 0, 232, 3, 0, 0, 0, 0, 0, 0]), (&[38, 170, 57, 78, 234, 86, 48, 224, 124, 72, 174, 12, 149, 88, 206, 247, 185, 157, 136, 14, 198, 129, 121, 156, 12, 243, 14, 136, 134, 55, 29, 169, 189, 225, 131, 90, 186, 237, 15, 242, 121, 87, 0, 55, 252, 73, 213, 189, 23, 110, 180, 130, 163, 178, 129, 109, 244, 252, 194, 204, 27, 200, 106, 202], &[0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), (&[38, 170, 57, 78, 234, 86, 48, 224, 124, 72, 174, 12, 149, 88, 206, 247, 185, 157, 136, 14, 198, 129, 121, 156, 12, 243, 14, 136, 134, 55, 29, 169, 213, 92, 123, 109, 126, 139, 228, 10, 88, 51, 198, 4, 8, 188, 78, 184, 171, 234, 78, 93, 168, 211, 37, 233, 8, 135, 156, 195, 59, 151, 205, 153], &[0, 0, 0, 0, 0, 0, 0, 0, 208, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), (&[38, 170, 57, 78, 234, 86, 48, 224, 124, 72, 174, 12, 149, 88, 206, 247, 185, 157, 136, 14, 198, 129, 121, 156, 12, 243, 14, 136, 134, 55, 29, 169, 216, 247, 229, 16, 146, 46, 205, 71, 180, 10, 28, 88, 41, 56, 34, 6, 69, 103, 185, 191, 60, 126, 225, 114, 12, 144, 76, 94, 12, 87, 247, 55], &[0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), (&[38, 170, 57, 78, 234, 86, 48, 224, 124, 72, 174, 12, 149, 88, 206, 247, 185, 157, 136, 14, 198, 129, 121, 156, 12, 243, 14, 136, 134, 55, 29, 169, 232, 139, 67, 253, 237, 99, 35, 239, 2, 255, 239, 251, 216, 196, 8, 70, 238, 9, 191, 49, 98, 113, 189, 34, 54, 150, 89, 201, 89, 221, 115, 58], &[0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), (&[38, 170, 57, 78, 234, 86, 48, 224, 124, 72, 174, 12, 149, 88, 206, 247, 185, 157, 136, 14, 198, 129, 121, 156, 12, 243, 14, 136, 134, 55, 29, 169, 233, 103, 96, 210, 116, 101, 58, 57, 180, 41, 168, 126, 186, 174, 157, 58, 164, 253, 245, 139, 144, 150, 207, 11, 235, 199, 196, 229, 164, 194, 237, 141], &[0, 0, 0, 0, 0, 0, 0, 0, 144, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), (&[38, 170, 57, 78, 234, 86, 48, 224, 124, 72, 174, 12, 149, 88, 206, 247, 185, 157, 136, 14, 198, 129, 121, 156, 12, 243, 14, 136, 134, 55, 29, 169, 250, 67, 84, 127, 177, 206, 187, 248, 7, 171, 139, 143, 54, 116, 13, 218, 140, 198, 7, 172, 12, 47, 130, 190, 178, 198, 48, 211, 195, 137, 122, 61], &[0, 0, 0, 0, 0, 0, 0, 0, 208, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 244, 1, 0, 0, 0, 0, 0, 0, 244, 1, 0, 0, 0, 0, 0, 0]), (&[58, 99, 111, 100, 101], &[]), (&[58, 101, 120, 116, 114, 105, 110, 115, 105, 99, 95, 105, 110, 100, 101, 120], &[0, 0, 0, 0]), (&[58, 104, 101, 97, 112, 112, 97, 103, 101, 115], &[8, 0, 0, 0, 0, 0, 0, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 11, 106, 69, 50, 30, 250, 233, 42, 234, 21, 224, 116, 14, 199, 175, 231], &[2, 0, 0, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 14, 160, 236, 172, 118, 69, 125, 15, 155, 57, 185, 129, 221, 16, 112, 18], &[8, 21, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 19, 142, 113, 97, 36, 145, 25, 45, 104, 222, 171, 126, 111, 86, 63, 225], &[2, 0, 0, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 40, 220, 203, 85, 155, 149, 196, 1, 104, 161, 178, 105, 101, 129, 181, 167], &[0, 0, 0, 0, 0, 0, 0, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 62, 209, 75, 69, 237, 32, 208, 84, 240, 94, 55, 226, 84, 44, 254, 112, 77, 254, 57, 245, 78, 123, 168, 74, 190, 191, 139, 138, 100, 234, 72, 46, 45, 174, 43, 141, 96, 79, 230, 7, 252, 242, 172, 39, 100, 43, 161, 177], &[40, 0, 0, 0, 0, 0, 0, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 62, 209, 75, 69, 237, 32, 208, 84, 240, 94, 55, 226, 84, 44, 254, 112, 83, 50, 194, 39, 103, 192, 178, 217, 125, 32, 22, 246, 168, 239, 120, 222, 173, 2, 155, 120, 7, 166, 176, 226, 172, 7, 43, 102, 21, 204, 92, 8], &[10, 0, 0, 0, 0, 0, 0, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 62, 209, 75, 69, 237, 32, 208, 84, 240, 94, 55, 226, 84, 44, 254, 112, 137, 6, 59, 94, 171, 160, 104, 80, 196, 182, 201, 87, 28, 70, 86, 200, 124, 206, 182, 4, 38, 77, 37, 233, 32, 121, 227, 154, 137, 129, 91, 166], &[30, 0, 0, 0, 0, 0, 0, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 62, 209, 75, 69, 237, 32, 208, 84, 240, 94, 55, 226, 84, 44, 254, 112, 170, 10, 228, 226, 42, 96, 247, 17, 144, 247, 250, 141, 205, 84, 104, 175, 49, 59, 161, 58, 250, 178, 59, 219, 34, 1, 81, 12, 128, 142, 182, 22], &[20, 0, 0, 0, 0, 0, 0, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 62, 209, 75, 69, 237, 32, 208, 84, 240, 94, 55, 226, 84, 44, 254, 112, 250, 67, 84, 127, 177, 206, 187, 248, 7, 171, 139, 143, 54, 116, 13, 218, 140, 198, 7, 172, 12, 47, 130, 190, 178, 198, 48, 211, 195, 137, 122, 61], &[100, 0, 0, 0, 0, 0, 0, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 66, 42, 219, 87, 159, 29, 191, 79, 56, 134, 197, 207, 163, 187, 140, 196, 94, 90, 15, 75, 176, 234, 179, 121, 134, 37, 171, 24, 100, 84, 93, 19, 212, 232, 208, 104, 153, 217, 219, 77, 97, 219, 157, 238, 147, 186, 2, 221], &[21, 0, 0, 0, 0, 0, 0, 0, 161, 15, 161, 15, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 66, 42, 219, 87, 159, 29, 191, 79, 56, 134, 197, 207, 163, 187, 140, 196, 165, 186, 85, 195, 163, 151, 212, 60, 23, 89, 63, 40, 154, 164, 151, 157, 10, 229, 146, 68, 179, 47, 3, 236, 19, 65, 97, 129, 175, 134, 209, 11], &[31, 0, 0, 0, 0, 0, 0, 0, 4, 4, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 66, 42, 219, 87, 159, 29, 191, 79, 56, 134, 197, 207, 163, 187, 140, 196, 189, 225, 131, 90, 186, 237, 15, 242, 121, 87, 0, 55, 252, 73, 213, 189, 23, 110, 180, 130, 163, 178, 129, 109, 244, 252, 194, 204, 27, 200, 106, 202], &[11, 0, 0, 0, 0, 0, 0, 0, 161, 15, 161, 15, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 66, 42, 219, 87, 159, 29, 191, 79, 56, 134, 197, 207, 163, 187, 140, 196, 213, 92, 123, 109, 126, 139, 228, 10, 88, 51, 198, 4, 8, 188, 78, 184, 171, 234, 78, 93, 168, 211, 37, 233, 8, 135, 156, 195, 59, 151, 205, 153], &[101, 0, 0, 0, 0, 0, 0, 0, 209, 7, 209, 7, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 66, 42, 219, 87, 159, 29, 191, 79, 56, 134, 197, 207, 163, 187, 140, 196, 216, 247, 229, 16, 146, 46, 205, 71, 180, 10, 28, 88, 41, 56, 34, 6, 69, 103, 185, 191, 60, 126, 225, 114, 12, 144, 76, 94, 12, 87, 247, 55], &[41, 0, 0, 0, 0, 0, 0, 0, 161, 15, 161, 15, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 80, 154, 155, 110, 250, 147, 245, 187, 131, 248, 88, 240, 186, 191, 211, 11], &[6, 0, 0, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 85, 121, 41, 127, 77, 251, 150, 9, 231, 228, 194, 235, 171, 156, 228, 10], &[0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 86, 239, 98, 39, 206, 203, 47, 7, 39, 76, 176, 87, 45, 143, 164, 194], &[101, 0, 0, 0, 0, 0, 0, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 106, 147, 17, 38, 51, 187, 51, 84, 230, 121, 82, 252, 221, 116, 12, 213], &[31, 0, 0, 0, 0, 0, 0, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 131, 229, 133, 187, 197, 253, 206, 197, 114, 25, 192, 220, 129, 239, 95, 244, 83, 50, 194, 39, 103, 192, 178, 217, 125, 32, 22, 246, 168, 239, 120, 222, 173, 2, 155, 120, 7, 166, 176, 226, 172, 7, 43, 102, 21, 204, 92, 8], &[149, 17, 161, 15, 4, 101, 0, 0, 0, 0, 0, 0, 0, 245, 1]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 131, 229, 133, 187, 197, 253, 206, 197, 114, 25, 192, 220, 129, 239, 95, 244, 170, 10, 228, 226, 42, 96, 247, 17, 144, 247, 250, 141, 205, 84, 104, 175, 49, 59, 161, 58, 250, 178, 59, 219, 34, 1, 81, 12, 128, 142, 182, 22], &[125, 21, 161, 15, 4, 101, 0, 0, 0, 0, 0, 0, 0, 221, 5]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 136, 220, 222, 147, 76, 101, 130, 39, 238, 29, 250, 252, 214, 225, 105, 3, 83, 50, 194, 39, 103, 192, 178, 217, 125, 32, 22, 246, 168, 239, 120, 222, 173, 2, 155, 120, 7, 166, 176, 226, 172, 7, 43, 102, 21, 204, 92, 8], &[0, 1, 21, 0, 0, 0, 0, 0, 0, 0, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 136, 220, 222, 147, 76, 101, 130, 39, 238, 29, 250, 252, 214, 225, 105, 3, 137, 6, 59, 94, 171, 160, 104, 80, 196, 182, 201, 87, 28, 70, 86, 200, 124, 206, 182, 4, 38, 77, 37, 233, 32, 121, 227, 154, 137, 129, 91, 166], &[0, 0, 1, 21, 0, 0, 0, 0, 0, 0, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 136, 220, 222, 147, 76, 101, 130, 39, 238, 29, 250, 252, 214, 225, 105, 3, 170, 10, 228, 226, 42, 96, 247, 17, 144, 247, 250, 141, 205, 84, 104, 175, 49, 59, 161, 58, 250, 178, 59, 219, 34, 1, 81, 12, 128, 142, 182, 22], &[0, 1, 31, 0, 0, 0, 0, 0, 0, 0, 1, 11, 0, 0, 0, 0, 0, 0, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 146, 32, 225, 114, 190, 211, 22, 96, 95, 115, 241, 255, 123, 74, 222, 152, 77, 254, 57, 245, 78, 123, 168, 74, 190, 191, 139, 138, 100, 234, 72, 46, 45, 174, 43, 141, 96, 79, 230, 7, 252, 242, 172, 39, 100, 43, 161, 177], &[0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 146, 32, 225, 114, 190, 211, 22, 96, 95, 115, 241, 255, 123, 74, 222, 152, 83, 50, 194, 39, 103, 192, 178, 217, 125, 32, 22, 246, 168, 239, 120, 222, 173, 2, 155, 120, 7, 166, 176, 226, 172, 7, 43, 102, 21, 204, 92, 8], &[0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 146, 32, 225, 114, 190, 211, 22, 96, 95, 115, 241, 255, 123, 74, 222, 152, 137, 6, 59, 94, 171, 160, 104, 80, 196, 182, 201, 87, 28, 70, 86, 200, 124, 206, 182, 4, 38, 77, 37, 233, 32, 121, 227, 154, 137, 129, 91, 166], &[0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 146, 32, 225, 114, 190, 211, 22, 96, 95, 115, 241, 255, 123, 74, 222, 152, 170, 10, 228, 226, 42, 96, 247, 17, 144, 247, 250, 141, 205, 84, 104, 175, 49, 59, 161, 58, 250, 178, 59, 219, 34, 1, 81, 12, 128, 142, 182, 22], &[0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 146, 32, 225, 114, 190, 211, 22, 96, 95, 115, 241, 255, 123, 74, 222, 152, 250, 67, 84, 127, 177, 206, 187, 248, 7, 171, 139, 143, 54, 116, 13, 218, 140, 198, 7, 172, 12, 47, 130, 190, 178, 198, 48, 211, 195, 137, 122, 61], &[0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 156, 106, 99, 127, 98, 174, 42, 241, 199, 227, 30, 237, 126, 150, 190, 4, 250, 67, 84, 127, 177, 206, 187, 248, 7, 171, 139, 143, 54, 116, 13, 218, 140, 198, 7, 172, 12, 47, 130, 190, 178, 198, 48, 211, 195, 137, 122, 61], &[8, 11, 0, 0, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 156, 189, 47, 11, 41, 160, 8, 163, 96, 9, 172, 68, 204, 160, 201, 105], &[101, 4, 0, 0, 0, 0, 0, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 166, 97, 104, 247, 231, 37, 155, 102, 112, 160, 111, 37, 101, 227, 229, 242], &[112, 23, 0, 0, 0, 0, 0, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 180, 154, 39, 56, 238, 179, 8, 150, 170, 203, 139, 63, 180, 100, 113, 189], &[0, 0, 0, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 194, 154, 3, 16, 225, 187, 69, 210, 12, 172, 231, 124, 203, 98, 201, 125], &[0, 225, 245, 5]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 234, 7, 222, 43, 143, 1, 5, 22, 220, 163, 247, 239, 82, 247, 172, 90], &[12, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 247, 218, 208, 49, 115, 36, 174, 202, 232, 116, 75, 135, 252, 149, 242, 243], &[0]), (&[194, 38, 18, 118, 204, 157, 31, 133, 152, 234, 75, 106, 116, 177, 92, 47, 33, 143, 38, 199, 58, 221, 99, 72, 151, 85, 11, 64, 3, 178, 107, 198, 77, 254, 57, 245, 78, 123, 168, 74, 190, 191, 139, 138, 100, 234, 72, 46, 45, 174, 43, 141, 96, 79, 230, 7, 252, 242, 172, 39, 100, 43, 161, 177], &[4, 115, 116, 97, 107, 105, 110, 103, 32, 232, 3, 0, 0, 0, 0, 0, 0, 2]), (&[194, 38, 18, 118, 204, 157, 31, 133, 152, 234, 75, 106, 116, 177, 92, 47, 33, 143, 38, 199, 58, 221, 99, 72, 151, 85, 11, 64, 3, 178, 107, 198, 83, 50, 194, 39, 103, 192, 178, 217, 125, 32, 22, 246, 168, 239, 120, 222, 173, 2, 155, 120, 7, 166, 176, 226, 172, 7, 43, 102, 21, 204, 92, 8], &[4, 115, 116, 97, 107, 105, 110, 103, 32, 232, 3, 0, 0, 0, 0, 0, 0, 2]), (&[194, 38, 18, 118, 204, 157, 31, 133, 152, 234, 75, 106, 116, 177, 92, 47, 33, 143, 38, 199, 58, 221, 99, 72, 151, 85, 11, 64, 3, 178, 107, 198, 137, 6, 59, 94, 171, 160, 104, 80, 196, 182, 201, 87, 28, 70, 86, 200, 124, 206, 182, 4, 38, 77, 37, 233, 32, 121, 227, 154, 137, 129, 91, 166], &[4, 115, 116, 97, 107, 105, 110, 103, 32, 1, 0, 0, 0, 0, 0, 0, 0, 2]), (&[194, 38, 18, 118, 204, 157, 31, 133, 152, 234, 75, 106, 116, 177, 92, 47, 33, 143, 38, 199, 58, 221, 99, 72, 151, 85, 11, 64, 3, 178, 107, 198, 170, 10, 228, 226, 42, 96, 247, 17, 144, 247, 250, 141, 205, 84, 104, 175, 49, 59, 161, 58, 250, 178, 59, 219, 34, 1, 81, 12, 128, 142, 182, 22], &[4, 115, 116, 97, 107, 105, 110, 103, 32, 232, 3, 0, 0, 0, 0, 0, 0, 2]), (&[194, 38, 18, 118, 204, 157, 31, 133, 152, 234, 75, 106, 116, 177, 92, 47, 33, 143, 38, 199, 58, 221, 99, 72, 151, 85, 11, 64, 3, 178, 107, 198, 250, 67, 84, 127, 177, 206, 187, 248, 7, 171, 139, 143, 54, 116, 13, 218, 140, 198, 7, 172, 12, 47, 130, 190, 178, 198, 48, 211, 195, 137, 122, 61], &[4, 115, 116, 97, 107, 105, 110, 103, 32, 244, 1, 0, 0, 0, 0, 0, 0, 2]), (&[194, 38, 18, 118, 204, 157, 31, 133, 152, 234, 75, 106, 116, 177, 92, 47, 87, 200, 117, 228, 207, 247, 65, 72, 228, 98, 143, 38, 75, 151, 76, 128], &[214, 61, 165, 212, 232, 0, 0, 0]), (&[194, 38, 18, 118, 204, 157, 31, 133, 152, 234, 75, 106, 116, 177, 92, 47, 227, 253, 141, 247, 41, 112, 188, 130, 229, 38, 126, 160, 30, 221, 217, 73], &[1]), (&[206, 197, 7, 13, 96, 157, 211, 73, 127, 114, 189, 224, 127, 201, 107, 160, 76, 1, 78, 107, 248, 184, 194, 192, 17, 231, 41, 11, 133, 105, 107, 179, 159, 230, 50, 156, 192, 179, 158, 9, 52, 58, 115, 101, 115, 115, 105, 111, 110, 58, 107, 101, 121, 115, 83, 50, 194, 39, 103, 192, 178, 217, 125, 32, 22, 246, 168, 239, 120, 222, 173, 2, 155, 120, 7, 166, 176, 226, 172, 7, 43, 102, 21, 204, 92, 8], &[11, 0, 0, 0, 0, 0, 0, 0]), (&[206, 197, 7, 13, 96, 157, 211, 73, 127, 114, 189, 224, 127, 201, 107, 160, 76, 1, 78, 107, 248, 184, 194, 192, 17, 231, 41, 11, 133, 105, 107, 179, 159, 230, 50, 156, 192, 179, 158, 9, 52, 58, 115, 101, 115, 115, 105, 111, 110, 58, 107, 101, 121, 115, 170, 10, 228, 226, 42, 96, 247, 17, 144, 247, 250, 141, 205, 84, 104, 175, 49, 59, 161, 58, 250, 178, 59, 219, 34, 1, 81, 12, 128, 142, 182, 22], &[21, 0, 0, 0, 0, 0, 0, 0]), (&[206, 197, 7, 13, 96, 157, 211, 73, 127, 114, 189, 224, 127, 201, 107, 160, 114, 99, 128, 64, 70, 131, 252, 137, 232, 35, 52, 80, 200, 170, 25, 80, 159, 230, 50, 156, 192, 179, 158, 9, 52, 58, 115, 101, 115, 115, 105, 111, 110, 58, 107, 101, 121, 115, 109, 123, 24, 86, 30, 19, 159, 228, 49, 200, 33, 139, 70, 205, 244, 47, 40, 190, 110, 43, 138, 12, 26, 121, 5, 219, 103, 1, 110, 91, 142, 123], &[11, 0, 0, 0, 0, 0, 0, 0]), (&[206, 197, 7, 13, 96, 157, 211, 73, 127, 114, 189, 224, 127, 201, 107, 160, 114, 99, 128, 64, 70, 131, 252, 137, 232, 35, 52, 80, 200, 170, 25, 80, 159, 230, 50, 156, 192, 179, 158, 9, 52, 58, 115, 101, 115, 115, 105, 111, 110, 58, 107, 101, 121, 115, 238, 43, 102, 225, 142, 104, 190, 12, 183, 86, 115, 25, 37, 223, 229, 65, 253, 167, 152, 54, 57, 147, 167, 137, 80, 161, 2, 235, 195, 174, 40, 244], &[21, 0, 0, 0, 0, 0, 0, 0]), (&[206, 197, 7, 13, 96, 157, 211, 73, 127, 114, 189, 224, 127, 201, 107, 160, 114, 118, 56, 0, 163, 106, 153, 253, 252, 124, 16, 246, 65, 95, 110, 230], &[7, 0, 0, 0]), (&[206, 197, 7, 13, 96, 157, 211, 73, 127, 114, 189, 224, 127, 201, 107, 160, 136, 220, 222, 147, 76, 101, 130, 39, 238, 29, 250, 252, 214, 225, 105, 3], &[8, 21, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0]), (&[206, 197, 7, 13, 96, 157, 211, 73, 127, 114, 189, 224, 127, 201, 107, 160, 148, 80, 191, 164, 185, 106, 63, 167, 163, 200, 244, 13, 166, 191, 50, 225], &[0]), (&[206, 197, 7, 13, 96, 157, 211, 73, 127, 114, 189, 224, 127, 201, 107, 160, 152, 239, 125, 192, 96, 67, 110, 78, 216, 3, 175, 7, 99, 43, 137, 182, 17, 218, 109, 31, 118, 29, 223, 155, 219, 76, 157, 110, 83, 3, 235, 212, 31, 97, 133, 141, 10, 86, 71, 161, 167, 191, 224, 137, 191, 146, 27, 233], &[44, 175, 112, 32, 141, 187, 198, 225, 208, 96, 126, 2, 8, 79, 212, 67, 222, 67, 84, 75, 213, 91, 72, 122, 231, 108, 125, 176, 42, 11, 117, 78, 2, 0, 0, 0]), (&[206, 197, 7, 13, 96, 157, 211, 73, 127, 114, 189, 224, 127, 201, 107, 160, 152, 239, 125, 192, 96, 67, 110, 78, 216, 3, 175, 7, 99, 43, 137, 182, 38, 160, 142, 77, 12, 81, 144, 240, 24, 113, 224, 86, 155, 98, 144, 184, 103, 96, 8, 93, 153, 241, 126, 180, 231, 230, 181, 143, 235, 141, 98, 73], &[44, 175, 112, 32, 141, 187, 198, 225, 208, 96, 126, 2, 8, 79, 212, 67, 222, 67, 84, 75, 213, 91, 72, 122, 231, 108, 125, 176, 42, 11, 117, 78, 2, 0, 0, 0]), (&[206, 197, 7, 13, 96, 157, 211, 73, 127, 114, 189, 224, 127, 201, 107, 160, 152, 239, 125, 192, 96, 67, 110, 78, 216, 3, 175, 7, 99, 43, 137, 182, 91, 143, 41, 219, 118, 207, 78, 103, 110, 79, 201, 177, 112, 64, 49, 45, 235, 237, 175, 205, 86, 55, 251, 60, 123, 173, 210, 205, 220, 230, 164, 69], &[44, 175, 112, 32, 141, 187, 198, 225, 208, 96, 126, 2, 8, 79, 212, 67, 222, 67, 84, 75, 213, 91, 72, 122, 231, 108, 125, 176, 42, 11, 117, 78, 2, 0, 0, 0]), (&[206, 197, 7, 13, 96, 157, 211, 73, 127, 114, 189, 224, 127, 201, 107, 160, 152, 239, 125, 192, 96, 67, 110, 78, 216, 3, 175, 7, 99, 43, 137, 182, 123, 10, 161, 115, 94, 91, 165, 141, 50, 54, 49, 108, 103, 31, 228, 240, 14, 211, 102, 238, 114, 65, 124, 158, 208, 42, 83, 168, 1, 158, 133, 184], &[44, 175, 112, 32, 141, 187, 198, 225, 208, 96, 126, 2, 8, 79, 212, 67, 222, 67, 84, 75, 213, 91, 72, 122, 231, 108, 125, 176, 42, 11, 117, 78, 2, 0, 0, 0]), (&[206, 197, 7, 13, 96, 157, 211, 73, 127, 114, 189, 224, 127, 201, 107, 160, 152, 239, 125, 192, 96, 67, 110, 78, 216, 3, 175, 7, 99, 43, 137, 182, 140, 3, 159, 247, 202, 161, 124, 206, 191, 202, 220, 68, 189, 159, 206, 106, 75, 102, 153, 196, 208, 61, 226, 227, 52, 154, 161, 220, 17, 25, 60, 215], &[44, 175, 112, 32, 141, 187, 198, 225, 208, 96, 126, 2, 8, 79, 212, 67, 222, 67, 84, 75, 213, 91, 72, 122, 231, 108, 125, 176, 42, 11, 117, 78, 2, 0, 0, 0]), (&[206, 197, 7, 13, 96, 157, 211, 73, 127, 114, 189, 224, 127, 201, 107, 160, 152, 239, 125, 192, 96, 67, 110, 78, 216, 3, 175, 7, 99, 43, 137, 182, 140, 53, 210, 47, 69, 157, 119, 202, 76, 11, 11, 80, 53, 134, 151, 102, 214, 13, 24, 43, 151, 22, 171, 62, 136, 121, 224, 102, 71, 136, 153, 168], &[44, 175, 112, 32, 141, 187, 198, 225, 208, 96, 126, 2, 8, 79, 212, 67, 222, 67, 84, 75, 213, 91, 72, 122, 231, 108, 125, 176, 42, 11, 117, 78, 2, 0, 0, 0]), (&[206, 197, 7, 13, 96, 157, 211, 73, 127, 114, 189, 224, 127, 201, 107, 160, 152, 239, 125, 192, 96, 67, 110, 78, 216, 3, 175, 7, 99, 43, 137, 182, 157, 255, 135, 106, 75, 148, 45, 10, 151, 17, 209, 130, 33, 137, 143, 17, 202, 57, 117, 21, 137, 235, 244, 212, 157, 116, 159, 107, 62, 73, 50, 146], &[44, 175, 112, 32, 141, 187, 198, 225, 208, 96, 126, 2, 8, 79, 212, 67, 222, 67, 84, 75, 213, 91, 72, 122, 231, 108, 125, 176, 42, 11, 117, 78, 2, 0, 0, 0]), (&[206, 197, 7, 13, 96, 157, 211, 73, 127, 114, 189, 224, 127, 201, 107, 160, 152, 239, 125, 192, 96, 67, 110, 78, 216, 3, 175, 7, 99, 43, 137, 182, 225, 44, 34, 212, 241, 98, 217, 160, 18, 201, 49, 146, 51, 218, 93, 62, 146, 60, 197, 225, 2, 155, 143, 144, 228, 114, 73, 201, 171, 37, 107, 53], &[44, 175, 112, 32, 141, 187, 198, 225, 208, 96, 126, 2, 8, 79, 212, 67, 222, 67, 84, 75, 213, 91, 72, 122, 231, 108, 125, 176, 42, 11, 117, 78, 2, 0, 0, 0]), (&[206, 197, 7, 13, 96, 157, 211, 73, 127, 114, 189, 224, 127, 201, 107, 160, 152, 239, 125, 192, 96, 67, 110, 78, 216, 3, 175, 7, 99, 43, 137, 182, 244, 170, 194, 251, 227, 63, 3, 85, 75, 254, 181, 89, 234, 38, 144, 237, 133, 33, 202, 164, 190, 150, 30, 97, 201, 26, 201, 161, 83, 13, 206, 122], &[44, 175, 112, 32, 141, 187, 198, 225, 208, 96, 126, 2, 8, 79, 212, 67, 222, 67, 84, 75, 213, 91, 72, 122, 231, 108, 125, 176, 42, 11, 117, 78, 2, 0, 0, 0]), (&[206, 197, 7, 13, 96, 157, 211, 73, 127, 114, 189, 224, 127, 201, 107, 160, 224, 205, 208, 98, 230, 234, 242, 66, 149, 173, 76, 207, 196, 29, 70, 9], &[8, 21, 0, 0, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0]), (&[206, 197, 7, 13, 96, 157, 211, 73, 127, 114, 189, 224, 127, 201, 107, 160, 255, 58, 225, 39, 112, 190, 162, 228, 141, 155, 222, 115, 133, 231, 162, 95], &[0, 0, 0, 0, 9, 0, 0, 0]), (&[240, 195, 101, 195, 207, 89, 214, 113, 235, 114, 218, 14, 122, 65, 19, 196, 159, 31, 5, 21, 244, 98, 205, 207, 132, 224, 241, 214, 4, 93, 252, 187], &[88, 27, 0, 0, 0, 0, 0, 0])]; +pub const _8: &[(&[u8], &[u8])] = &[(&[38, 170, 57, 78, 234, 86, 48, 224, 124, 72, 174, 12, 149, 88, 206, 247, 2, 165, 193, 177, 154, 183, 160, 79, 83, 108, 81, 154, 202, 73, 131, 172], &[8, 0, 0, 0, 0, 0, 0, 0]), (&[38, 170, 57, 78, 234, 86, 48, 224, 124, 72, 174, 12, 149, 88, 206, 247, 10, 152, 253, 190, 156, 230, 197, 88, 55, 87, 108, 96, 199, 175, 56, 80], &[25, 0, 0, 0]), (&[38, 170, 57, 78, 234, 86, 48, 224, 124, 72, 174, 12, 149, 88, 206, 247, 128, 212, 30, 94, 22, 5, 103, 101, 188, 132, 97, 133, 16, 114, 201, 215], &[100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), (&[38, 170, 57, 78, 234, 86, 48, 224, 124, 72, 174, 12, 149, 88, 206, 247, 138, 66, 243, 51, 35, 203, 92, 237, 59, 68, 221, 130, 95, 218, 159, 204], &[69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69]), (&[38, 170, 57, 78, 234, 86, 48, 224, 124, 72, 174, 12, 149, 88, 206, 247, 164, 71, 4, 181, 104, 210, 22, 103, 53, 106, 90, 5, 12, 17, 135, 70, 129, 228, 122, 25, 230, 178, 155, 10, 101, 185, 89, 23, 98, 206, 81, 67, 237, 48, 208, 38, 30, 93, 36, 163, 32, 23, 82, 80, 107, 32, 241, 92], &[69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69]), (&[38, 170, 57, 78, 234, 86, 48, 224, 124, 72, 174, 12, 149, 88, 206, 247, 185, 157, 136, 14, 198, 129, 121, 156, 12, 243, 14, 136, 134, 55, 29, 169, 29, 189, 125, 11, 86, 26, 65, 210, 60, 42, 70, 154, 212, 47, 189, 112, 213, 67, 139, 174, 130, 111, 111, 214, 7, 65, 49, 144, 195, 124, 54, 59], &[0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), (&[38, 170, 57, 78, 234, 86, 48, 224, 124, 72, 174, 12, 149, 88, 206, 247, 185, 157, 136, 14, 198, 129, 121, 156, 12, 243, 14, 136, 134, 55, 29, 169, 77, 254, 57, 245, 78, 123, 168, 74, 190, 191, 139, 138, 100, 234, 72, 46, 45, 174, 43, 141, 96, 79, 230, 7, 252, 242, 172, 39, 100, 43, 161, 177], &[0, 0, 0, 0, 0, 0, 0, 0, 208, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 232, 3, 0, 0, 0, 0, 0, 0, 232, 3, 0, 0, 0, 0, 0, 0]), (&[38, 170, 57, 78, 234, 86, 48, 224, 124, 72, 174, 12, 149, 88, 206, 247, 185, 157, 136, 14, 198, 129, 121, 156, 12, 243, 14, 136, 134, 55, 29, 169, 83, 50, 194, 39, 103, 192, 178, 217, 125, 32, 22, 246, 168, 239, 120, 222, 173, 2, 155, 120, 7, 166, 176, 226, 172, 7, 43, 102, 21, 204, 92, 8], &[0, 0, 0, 0, 0, 0, 0, 0, 232, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 232, 3, 0, 0, 0, 0, 0, 0, 232, 3, 0, 0, 0, 0, 0, 0]), (&[38, 170, 57, 78, 234, 86, 48, 224, 124, 72, 174, 12, 149, 88, 206, 247, 185, 157, 136, 14, 198, 129, 121, 156, 12, 243, 14, 136, 134, 55, 29, 169, 94, 90, 15, 75, 176, 234, 179, 121, 134, 37, 171, 24, 100, 84, 93, 19, 212, 232, 208, 104, 153, 217, 219, 77, 97, 219, 157, 238, 147, 186, 2, 221], &[0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), (&[38, 170, 57, 78, 234, 86, 48, 224, 124, 72, 174, 12, 149, 88, 206, 247, 185, 157, 136, 14, 198, 129, 121, 156, 12, 243, 14, 136, 134, 55, 29, 169, 100, 74, 81, 252, 33, 158, 145, 69, 184, 87, 123, 183, 118, 40, 118, 123, 28, 47, 115, 116, 142, 218, 139, 120, 139, 252, 102, 161, 181, 42, 32, 248], &[0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 165, 212, 232, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), (&[38, 170, 57, 78, 234, 86, 48, 224, 124, 72, 174, 12, 149, 88, 206, 247, 185, 157, 136, 14, 198, 129, 121, 156, 12, 243, 14, 136, 134, 55, 29, 169, 108, 221, 179, 103, 175, 189, 88, 59, 180, 143, 155, 189, 125, 91, 163, 177, 208, 115, 139, 72, 129, 177, 205, 221, 56, 22, 149, 38, 216, 21, 129, 55], &[0, 0, 0, 0, 0, 0, 0, 0, 44, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), (&[38, 170, 57, 78, 234, 86, 48, 224, 124, 72, 174, 12, 149, 88, 206, 247, 185, 157, 136, 14, 198, 129, 121, 156, 12, 243, 14, 136, 134, 55, 29, 169, 137, 6, 59, 94, 171, 160, 104, 80, 196, 182, 201, 87, 28, 70, 86, 200, 124, 206, 182, 4, 38, 77, 37, 233, 32, 121, 227, 154, 137, 129, 91, 166], &[0, 0, 0, 0, 0, 0, 0, 0, 208, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0]), (&[38, 170, 57, 78, 234, 86, 48, 224, 124, 72, 174, 12, 149, 88, 206, 247, 185, 157, 136, 14, 198, 129, 121, 156, 12, 243, 14, 136, 134, 55, 29, 169, 165, 186, 85, 195, 163, 151, 212, 60, 23, 89, 63, 40, 154, 164, 151, 157, 10, 229, 146, 68, 179, 47, 3, 236, 19, 65, 97, 129, 175, 134, 209, 11], &[0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), (&[38, 170, 57, 78, 234, 86, 48, 224, 124, 72, 174, 12, 149, 88, 206, 247, 185, 157, 136, 14, 198, 129, 121, 156, 12, 243, 14, 136, 134, 55, 29, 169, 170, 10, 228, 226, 42, 96, 247, 17, 144, 247, 250, 141, 205, 84, 104, 175, 49, 59, 161, 58, 250, 178, 59, 219, 34, 1, 81, 12, 128, 142, 182, 22], &[0, 0, 0, 0, 0, 0, 0, 0, 208, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 232, 3, 0, 0, 0, 0, 0, 0, 232, 3, 0, 0, 0, 0, 0, 0]), (&[38, 170, 57, 78, 234, 86, 48, 224, 124, 72, 174, 12, 149, 88, 206, 247, 185, 157, 136, 14, 198, 129, 121, 156, 12, 243, 14, 136, 134, 55, 29, 169, 189, 225, 131, 90, 186, 237, 15, 242, 121, 87, 0, 55, 252, 73, 213, 189, 23, 110, 180, 130, 163, 178, 129, 109, 244, 252, 194, 204, 27, 200, 106, 202], &[0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), (&[38, 170, 57, 78, 234, 86, 48, 224, 124, 72, 174, 12, 149, 88, 206, 247, 185, 157, 136, 14, 198, 129, 121, 156, 12, 243, 14, 136, 134, 55, 29, 169, 213, 92, 123, 109, 126, 139, 228, 10, 88, 51, 198, 4, 8, 188, 78, 184, 171, 234, 78, 93, 168, 211, 37, 233, 8, 135, 156, 195, 59, 151, 205, 153], &[0, 0, 0, 0, 0, 0, 0, 0, 208, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), (&[38, 170, 57, 78, 234, 86, 48, 224, 124, 72, 174, 12, 149, 88, 206, 247, 185, 157, 136, 14, 198, 129, 121, 156, 12, 243, 14, 136, 134, 55, 29, 169, 216, 247, 229, 16, 146, 46, 205, 71, 180, 10, 28, 88, 41, 56, 34, 6, 69, 103, 185, 191, 60, 126, 225, 114, 12, 144, 76, 94, 12, 87, 247, 55], &[0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), (&[38, 170, 57, 78, 234, 86, 48, 224, 124, 72, 174, 12, 149, 88, 206, 247, 185, 157, 136, 14, 198, 129, 121, 156, 12, 243, 14, 136, 134, 55, 29, 169, 232, 139, 67, 253, 237, 99, 35, 239, 2, 255, 239, 251, 216, 196, 8, 70, 238, 9, 191, 49, 98, 113, 189, 34, 54, 150, 89, 201, 89, 221, 115, 58], &[0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), (&[38, 170, 57, 78, 234, 86, 48, 224, 124, 72, 174, 12, 149, 88, 206, 247, 185, 157, 136, 14, 198, 129, 121, 156, 12, 243, 14, 136, 134, 55, 29, 169, 233, 103, 96, 210, 116, 101, 58, 57, 180, 41, 168, 126, 186, 174, 157, 58, 164, 253, 245, 139, 144, 150, 207, 11, 235, 199, 196, 229, 164, 194, 237, 141], &[0, 0, 0, 0, 0, 0, 0, 0, 144, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), (&[38, 170, 57, 78, 234, 86, 48, 224, 124, 72, 174, 12, 149, 88, 206, 247, 185, 157, 136, 14, 198, 129, 121, 156, 12, 243, 14, 136, 134, 55, 29, 169, 250, 67, 84, 127, 177, 206, 187, 248, 7, 171, 139, 143, 54, 116, 13, 218, 140, 198, 7, 172, 12, 47, 130, 190, 178, 198, 48, 211, 195, 137, 122, 61], &[0, 0, 0, 0, 0, 0, 0, 0, 208, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 244, 1, 0, 0, 0, 0, 0, 0, 244, 1, 0, 0, 0, 0, 0, 0]), (&[58, 99, 111, 100, 101], &[]), (&[58, 101, 120, 116, 114, 105, 110, 115, 105, 99, 95, 105, 110, 100, 101, 120], &[0, 0, 0, 0]), (&[58, 104, 101, 97, 112, 112, 97, 103, 101, 115], &[8, 0, 0, 0, 0, 0, 0, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 11, 106, 69, 50, 30, 250, 233, 42, 234, 21, 224, 116, 14, 199, 175, 231], &[2, 0, 0, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 14, 160, 236, 172, 118, 69, 125, 15, 155, 57, 185, 129, 221, 16, 112, 18], &[8, 21, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 19, 142, 113, 97, 36, 145, 25, 45, 104, 222, 171, 126, 111, 86, 63, 225], &[2, 0, 0, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 40, 220, 203, 85, 155, 149, 196, 1, 104, 161, 178, 105, 101, 129, 181, 167], &[0, 0, 0, 0, 0, 0, 0, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 62, 209, 75, 69, 237, 32, 208, 84, 240, 94, 55, 226, 84, 44, 254, 112, 77, 254, 57, 245, 78, 123, 168, 74, 190, 191, 139, 138, 100, 234, 72, 46, 45, 174, 43, 141, 96, 79, 230, 7, 252, 242, 172, 39, 100, 43, 161, 177], &[40, 0, 0, 0, 0, 0, 0, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 62, 209, 75, 69, 237, 32, 208, 84, 240, 94, 55, 226, 84, 44, 254, 112, 83, 50, 194, 39, 103, 192, 178, 217, 125, 32, 22, 246, 168, 239, 120, 222, 173, 2, 155, 120, 7, 166, 176, 226, 172, 7, 43, 102, 21, 204, 92, 8], &[10, 0, 0, 0, 0, 0, 0, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 62, 209, 75, 69, 237, 32, 208, 84, 240, 94, 55, 226, 84, 44, 254, 112, 137, 6, 59, 94, 171, 160, 104, 80, 196, 182, 201, 87, 28, 70, 86, 200, 124, 206, 182, 4, 38, 77, 37, 233, 32, 121, 227, 154, 137, 129, 91, 166], &[30, 0, 0, 0, 0, 0, 0, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 62, 209, 75, 69, 237, 32, 208, 84, 240, 94, 55, 226, 84, 44, 254, 112, 170, 10, 228, 226, 42, 96, 247, 17, 144, 247, 250, 141, 205, 84, 104, 175, 49, 59, 161, 58, 250, 178, 59, 219, 34, 1, 81, 12, 128, 142, 182, 22], &[20, 0, 0, 0, 0, 0, 0, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 62, 209, 75, 69, 237, 32, 208, 84, 240, 94, 55, 226, 84, 44, 254, 112, 250, 67, 84, 127, 177, 206, 187, 248, 7, 171, 139, 143, 54, 116, 13, 218, 140, 198, 7, 172, 12, 47, 130, 190, 178, 198, 48, 211, 195, 137, 122, 61], &[100, 0, 0, 0, 0, 0, 0, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 66, 42, 219, 87, 159, 29, 191, 79, 56, 134, 197, 207, 163, 187, 140, 196, 94, 90, 15, 75, 176, 234, 179, 121, 134, 37, 171, 24, 100, 84, 93, 19, 212, 232, 208, 104, 153, 217, 219, 77, 97, 219, 157, 238, 147, 186, 2, 221], &[21, 0, 0, 0, 0, 0, 0, 0, 161, 15, 161, 15, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 66, 42, 219, 87, 159, 29, 191, 79, 56, 134, 197, 207, 163, 187, 140, 196, 165, 186, 85, 195, 163, 151, 212, 60, 23, 89, 63, 40, 154, 164, 151, 157, 10, 229, 146, 68, 179, 47, 3, 236, 19, 65, 97, 129, 175, 134, 209, 11], &[31, 0, 0, 0, 0, 0, 0, 0, 4, 4, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 66, 42, 219, 87, 159, 29, 191, 79, 56, 134, 197, 207, 163, 187, 140, 196, 189, 225, 131, 90, 186, 237, 15, 242, 121, 87, 0, 55, 252, 73, 213, 189, 23, 110, 180, 130, 163, 178, 129, 109, 244, 252, 194, 204, 27, 200, 106, 202], &[11, 0, 0, 0, 0, 0, 0, 0, 161, 15, 161, 15, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 66, 42, 219, 87, 159, 29, 191, 79, 56, 134, 197, 207, 163, 187, 140, 196, 213, 92, 123, 109, 126, 139, 228, 10, 88, 51, 198, 4, 8, 188, 78, 184, 171, 234, 78, 93, 168, 211, 37, 233, 8, 135, 156, 195, 59, 151, 205, 153], &[101, 0, 0, 0, 0, 0, 0, 0, 209, 7, 209, 7, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 66, 42, 219, 87, 159, 29, 191, 79, 56, 134, 197, 207, 163, 187, 140, 196, 216, 247, 229, 16, 146, 46, 205, 71, 180, 10, 28, 88, 41, 56, 34, 6, 69, 103, 185, 191, 60, 126, 225, 114, 12, 144, 76, 94, 12, 87, 247, 55], &[41, 0, 0, 0, 0, 0, 0, 0, 161, 15, 161, 15, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 80, 154, 155, 110, 250, 147, 245, 187, 131, 248, 88, 240, 186, 191, 211, 11], &[6, 0, 0, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 85, 121, 41, 127, 77, 251, 150, 9, 231, 228, 194, 235, 171, 156, 228, 10], &[0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 86, 239, 98, 39, 206, 203, 47, 7, 39, 76, 176, 87, 45, 143, 164, 194], &[101, 0, 0, 0, 0, 0, 0, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 106, 147, 17, 38, 51, 187, 51, 84, 230, 121, 82, 252, 221, 116, 12, 213], &[31, 0, 0, 0, 0, 0, 0, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 131, 229, 133, 187, 197, 253, 206, 197, 114, 25, 192, 220, 129, 239, 95, 244, 83, 50, 194, 39, 103, 192, 178, 217, 125, 32, 22, 246, 168, 239, 120, 222, 173, 2, 155, 120, 7, 166, 176, 226, 172, 7, 43, 102, 21, 204, 92, 8], &[149, 17, 161, 15, 4, 101, 0, 0, 0, 0, 0, 0, 0, 245, 1]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 131, 229, 133, 187, 197, 253, 206, 197, 114, 25, 192, 220, 129, 239, 95, 244, 170, 10, 228, 226, 42, 96, 247, 17, 144, 247, 250, 141, 205, 84, 104, 175, 49, 59, 161, 58, 250, 178, 59, 219, 34, 1, 81, 12, 128, 142, 182, 22], &[125, 21, 161, 15, 4, 101, 0, 0, 0, 0, 0, 0, 0, 221, 5]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 136, 220, 222, 147, 76, 101, 130, 39, 238, 29, 250, 252, 214, 225, 105, 3, 83, 50, 194, 39, 103, 192, 178, 217, 125, 32, 22, 246, 168, 239, 120, 222, 173, 2, 155, 120, 7, 166, 176, 226, 172, 7, 43, 102, 21, 204, 92, 8], &[0, 1, 21, 0, 0, 0, 0, 0, 0, 0, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 136, 220, 222, 147, 76, 101, 130, 39, 238, 29, 250, 252, 214, 225, 105, 3, 137, 6, 59, 94, 171, 160, 104, 80, 196, 182, 201, 87, 28, 70, 86, 200, 124, 206, 182, 4, 38, 77, 37, 233, 32, 121, 227, 154, 137, 129, 91, 166], &[0, 0, 1, 21, 0, 0, 0, 0, 0, 0, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 136, 220, 222, 147, 76, 101, 130, 39, 238, 29, 250, 252, 214, 225, 105, 3, 170, 10, 228, 226, 42, 96, 247, 17, 144, 247, 250, 141, 205, 84, 104, 175, 49, 59, 161, 58, 250, 178, 59, 219, 34, 1, 81, 12, 128, 142, 182, 22], &[0, 1, 31, 0, 0, 0, 0, 0, 0, 0, 1, 11, 0, 0, 0, 0, 0, 0, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 146, 32, 225, 114, 190, 211, 22, 96, 95, 115, 241, 255, 123, 74, 222, 152, 77, 254, 57, 245, 78, 123, 168, 74, 190, 191, 139, 138, 100, 234, 72, 46, 45, 174, 43, 141, 96, 79, 230, 7, 252, 242, 172, 39, 100, 43, 161, 177], &[0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 146, 32, 225, 114, 190, 211, 22, 96, 95, 115, 241, 255, 123, 74, 222, 152, 83, 50, 194, 39, 103, 192, 178, 217, 125, 32, 22, 246, 168, 239, 120, 222, 173, 2, 155, 120, 7, 166, 176, 226, 172, 7, 43, 102, 21, 204, 92, 8], &[0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 146, 32, 225, 114, 190, 211, 22, 96, 95, 115, 241, 255, 123, 74, 222, 152, 137, 6, 59, 94, 171, 160, 104, 80, 196, 182, 201, 87, 28, 70, 86, 200, 124, 206, 182, 4, 38, 77, 37, 233, 32, 121, 227, 154, 137, 129, 91, 166], &[0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 146, 32, 225, 114, 190, 211, 22, 96, 95, 115, 241, 255, 123, 74, 222, 152, 170, 10, 228, 226, 42, 96, 247, 17, 144, 247, 250, 141, 205, 84, 104, 175, 49, 59, 161, 58, 250, 178, 59, 219, 34, 1, 81, 12, 128, 142, 182, 22], &[0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 146, 32, 225, 114, 190, 211, 22, 96, 95, 115, 241, 255, 123, 74, 222, 152, 250, 67, 84, 127, 177, 206, 187, 248, 7, 171, 139, 143, 54, 116, 13, 218, 140, 198, 7, 172, 12, 47, 130, 190, 178, 198, 48, 211, 195, 137, 122, 61], &[0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 156, 106, 99, 127, 98, 174, 42, 241, 199, 227, 30, 237, 126, 150, 190, 4, 250, 67, 84, 127, 177, 206, 187, 248, 7, 171, 139, 143, 54, 116, 13, 218, 140, 198, 7, 172, 12, 47, 130, 190, 178, 198, 48, 211, 195, 137, 122, 61], &[8, 11, 0, 0, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 156, 189, 47, 11, 41, 160, 8, 163, 96, 9, 172, 68, 204, 160, 201, 105], &[101, 4, 0, 0, 0, 0, 0, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 166, 97, 104, 247, 231, 37, 155, 102, 112, 160, 111, 37, 101, 227, 229, 242], &[112, 23, 0, 0, 0, 0, 0, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 180, 154, 39, 56, 238, 179, 8, 150, 170, 203, 139, 63, 180, 100, 113, 189], &[0, 0, 0, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 194, 154, 3, 16, 225, 187, 69, 210, 12, 172, 231, 124, 203, 98, 201, 125], &[0, 225, 245, 5]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 234, 7, 222, 43, 143, 1, 5, 22, 220, 163, 247, 239, 82, 247, 172, 90], &[12, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0]), (&[95, 62, 73, 7, 247, 22, 172, 137, 182, 52, 125, 21, 236, 236, 237, 202, 247, 218, 208, 49, 115, 36, 174, 202, 232, 116, 75, 135, 252, 149, 242, 243], &[0]), (&[194, 38, 18, 118, 204, 157, 31, 133, 152, 234, 75, 106, 116, 177, 92, 47, 33, 143, 38, 199, 58, 221, 99, 72, 151, 85, 11, 64, 3, 178, 107, 198, 77, 254, 57, 245, 78, 123, 168, 74, 190, 191, 139, 138, 100, 234, 72, 46, 45, 174, 43, 141, 96, 79, 230, 7, 252, 242, 172, 39, 100, 43, 161, 177], &[4, 115, 116, 97, 107, 105, 110, 103, 32, 232, 3, 0, 0, 0, 0, 0, 0, 2]), (&[194, 38, 18, 118, 204, 157, 31, 133, 152, 234, 75, 106, 116, 177, 92, 47, 33, 143, 38, 199, 58, 221, 99, 72, 151, 85, 11, 64, 3, 178, 107, 198, 83, 50, 194, 39, 103, 192, 178, 217, 125, 32, 22, 246, 168, 239, 120, 222, 173, 2, 155, 120, 7, 166, 176, 226, 172, 7, 43, 102, 21, 204, 92, 8], &[4, 115, 116, 97, 107, 105, 110, 103, 32, 232, 3, 0, 0, 0, 0, 0, 0, 2]), (&[194, 38, 18, 118, 204, 157, 31, 133, 152, 234, 75, 106, 116, 177, 92, 47, 33, 143, 38, 199, 58, 221, 99, 72, 151, 85, 11, 64, 3, 178, 107, 198, 137, 6, 59, 94, 171, 160, 104, 80, 196, 182, 201, 87, 28, 70, 86, 200, 124, 206, 182, 4, 38, 77, 37, 233, 32, 121, 227, 154, 137, 129, 91, 166], &[4, 115, 116, 97, 107, 105, 110, 103, 32, 1, 0, 0, 0, 0, 0, 0, 0, 2]), (&[194, 38, 18, 118, 204, 157, 31, 133, 152, 234, 75, 106, 116, 177, 92, 47, 33, 143, 38, 199, 58, 221, 99, 72, 151, 85, 11, 64, 3, 178, 107, 198, 170, 10, 228, 226, 42, 96, 247, 17, 144, 247, 250, 141, 205, 84, 104, 175, 49, 59, 161, 58, 250, 178, 59, 219, 34, 1, 81, 12, 128, 142, 182, 22], &[4, 115, 116, 97, 107, 105, 110, 103, 32, 232, 3, 0, 0, 0, 0, 0, 0, 2]), (&[194, 38, 18, 118, 204, 157, 31, 133, 152, 234, 75, 106, 116, 177, 92, 47, 33, 143, 38, 199, 58, 221, 99, 72, 151, 85, 11, 64, 3, 178, 107, 198, 250, 67, 84, 127, 177, 206, 187, 248, 7, 171, 139, 143, 54, 116, 13, 218, 140, 198, 7, 172, 12, 47, 130, 190, 178, 198, 48, 211, 195, 137, 122, 61], &[4, 115, 116, 97, 107, 105, 110, 103, 32, 244, 1, 0, 0, 0, 0, 0, 0, 2]), (&[194, 38, 18, 118, 204, 157, 31, 133, 152, 234, 75, 106, 116, 177, 92, 47, 87, 200, 117, 228, 207, 247, 65, 72, 228, 98, 143, 38, 75, 151, 76, 128], &[214, 61, 165, 212, 232, 0, 0, 0]), (&[194, 38, 18, 118, 204, 157, 31, 133, 152, 234, 75, 106, 116, 177, 92, 47, 227, 253, 141, 247, 41, 112, 188, 130, 229, 38, 126, 160, 30, 221, 217, 73], &[1]), (&[206, 197, 7, 13, 96, 157, 211, 73, 127, 114, 189, 224, 127, 201, 107, 160, 76, 1, 78, 107, 248, 184, 194, 192, 17, 231, 41, 11, 133, 105, 107, 179, 159, 230, 50, 156, 192, 179, 158, 9, 52, 58, 115, 101, 115, 115, 105, 111, 110, 58, 107, 101, 121, 115, 83, 50, 194, 39, 103, 192, 178, 217, 125, 32, 22, 246, 168, 239, 120, 222, 173, 2, 155, 120, 7, 166, 176, 226, 172, 7, 43, 102, 21, 204, 92, 8], &[11, 0, 0, 0, 0, 0, 0, 0]), (&[206, 197, 7, 13, 96, 157, 211, 73, 127, 114, 189, 224, 127, 201, 107, 160, 76, 1, 78, 107, 248, 184, 194, 192, 17, 231, 41, 11, 133, 105, 107, 179, 159, 230, 50, 156, 192, 179, 158, 9, 52, 58, 115, 101, 115, 115, 105, 111, 110, 58, 107, 101, 121, 115, 170, 10, 228, 226, 42, 96, 247, 17, 144, 247, 250, 141, 205, 84, 104, 175, 49, 59, 161, 58, 250, 178, 59, 219, 34, 1, 81, 12, 128, 142, 182, 22], &[21, 0, 0, 0, 0, 0, 0, 0]), (&[206, 197, 7, 13, 96, 157, 211, 73, 127, 114, 189, 224, 127, 201, 107, 160, 114, 99, 128, 64, 70, 131, 252, 137, 232, 35, 52, 80, 200, 170, 25, 80, 159, 230, 50, 156, 192, 179, 158, 9, 52, 58, 115, 101, 115, 115, 105, 111, 110, 58, 107, 101, 121, 115, 109, 123, 24, 86, 30, 19, 159, 228, 49, 200, 33, 139, 70, 205, 244, 47, 40, 190, 110, 43, 138, 12, 26, 121, 5, 219, 103, 1, 110, 91, 142, 123], &[11, 0, 0, 0, 0, 0, 0, 0]), (&[206, 197, 7, 13, 96, 157, 211, 73, 127, 114, 189, 224, 127, 201, 107, 160, 114, 99, 128, 64, 70, 131, 252, 137, 232, 35, 52, 80, 200, 170, 25, 80, 159, 230, 50, 156, 192, 179, 158, 9, 52, 58, 115, 101, 115, 115, 105, 111, 110, 58, 107, 101, 121, 115, 238, 43, 102, 225, 142, 104, 190, 12, 183, 86, 115, 25, 37, 223, 229, 65, 253, 167, 152, 54, 57, 147, 167, 137, 80, 161, 2, 235, 195, 174, 40, 244], &[21, 0, 0, 0, 0, 0, 0, 0]), (&[206, 197, 7, 13, 96, 157, 211, 73, 127, 114, 189, 224, 127, 201, 107, 160, 114, 118, 56, 0, 163, 106, 153, 253, 252, 124, 16, 246, 65, 95, 110, 230], &[8, 0, 0, 0]), (&[206, 197, 7, 13, 96, 157, 211, 73, 127, 114, 189, 224, 127, 201, 107, 160, 136, 220, 222, 147, 76, 101, 130, 39, 238, 29, 250, 252, 214, 225, 105, 3], &[8, 21, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0]), (&[206, 197, 7, 13, 96, 157, 211, 73, 127, 114, 189, 224, 127, 201, 107, 160, 148, 80, 191, 164, 185, 106, 63, 167, 163, 200, 244, 13, 166, 191, 50, 225], &[0]), (&[206, 197, 7, 13, 96, 157, 211, 73, 127, 114, 189, 224, 127, 201, 107, 160, 152, 239, 125, 192, 96, 67, 110, 78, 216, 3, 175, 7, 99, 43, 137, 182, 17, 218, 109, 31, 118, 29, 223, 155, 219, 76, 157, 110, 83, 3, 235, 212, 31, 97, 133, 141, 10, 86, 71, 161, 167, 191, 224, 137, 191, 146, 27, 233], &[44, 175, 112, 32, 141, 187, 198, 225, 208, 96, 126, 2, 8, 79, 212, 67, 222, 67, 84, 75, 213, 91, 72, 122, 231, 108, 125, 176, 42, 11, 117, 78, 2, 0, 0, 0]), (&[206, 197, 7, 13, 96, 157, 211, 73, 127, 114, 189, 224, 127, 201, 107, 160, 152, 239, 125, 192, 96, 67, 110, 78, 216, 3, 175, 7, 99, 43, 137, 182, 38, 160, 142, 77, 12, 81, 144, 240, 24, 113, 224, 86, 155, 98, 144, 184, 103, 96, 8, 93, 153, 241, 126, 180, 231, 230, 181, 143, 235, 141, 98, 73], &[44, 175, 112, 32, 141, 187, 198, 225, 208, 96, 126, 2, 8, 79, 212, 67, 222, 67, 84, 75, 213, 91, 72, 122, 231, 108, 125, 176, 42, 11, 117, 78, 2, 0, 0, 0]), (&[206, 197, 7, 13, 96, 157, 211, 73, 127, 114, 189, 224, 127, 201, 107, 160, 152, 239, 125, 192, 96, 67, 110, 78, 216, 3, 175, 7, 99, 43, 137, 182, 47, 1, 107, 122, 93, 185, 48, 218, 189, 234, 3, 170, 104, 210, 115, 77, 47, 164, 122, 5, 87, 226, 13, 19, 12, 193, 224, 68, 248, 220, 87, 150], &[44, 175, 112, 32, 141, 187, 198, 225, 208, 96, 126, 2, 8, 79, 212, 67, 222, 67, 84, 75, 213, 91, 72, 122, 231, 108, 125, 176, 42, 11, 117, 78, 2, 0, 0, 0]), (&[206, 197, 7, 13, 96, 157, 211, 73, 127, 114, 189, 224, 127, 201, 107, 160, 152, 239, 125, 192, 96, 67, 110, 78, 216, 3, 175, 7, 99, 43, 137, 182, 91, 143, 41, 219, 118, 207, 78, 103, 110, 79, 201, 177, 112, 64, 49, 45, 235, 237, 175, 205, 86, 55, 251, 60, 123, 173, 210, 205, 220, 230, 164, 69], &[44, 175, 112, 32, 141, 187, 198, 225, 208, 96, 126, 2, 8, 79, 212, 67, 222, 67, 84, 75, 213, 91, 72, 122, 231, 108, 125, 176, 42, 11, 117, 78, 2, 0, 0, 0]), (&[206, 197, 7, 13, 96, 157, 211, 73, 127, 114, 189, 224, 127, 201, 107, 160, 152, 239, 125, 192, 96, 67, 110, 78, 216, 3, 175, 7, 99, 43, 137, 182, 123, 10, 161, 115, 94, 91, 165, 141, 50, 54, 49, 108, 103, 31, 228, 240, 14, 211, 102, 238, 114, 65, 124, 158, 208, 42, 83, 168, 1, 158, 133, 184], &[44, 175, 112, 32, 141, 187, 198, 225, 208, 96, 126, 2, 8, 79, 212, 67, 222, 67, 84, 75, 213, 91, 72, 122, 231, 108, 125, 176, 42, 11, 117, 78, 2, 0, 0, 0]), (&[206, 197, 7, 13, 96, 157, 211, 73, 127, 114, 189, 224, 127, 201, 107, 160, 152, 239, 125, 192, 96, 67, 110, 78, 216, 3, 175, 7, 99, 43, 137, 182, 140, 3, 159, 247, 202, 161, 124, 206, 191, 202, 220, 68, 189, 159, 206, 106, 75, 102, 153, 196, 208, 61, 226, 227, 52, 154, 161, 220, 17, 25, 60, 215], &[44, 175, 112, 32, 141, 187, 198, 225, 208, 96, 126, 2, 8, 79, 212, 67, 222, 67, 84, 75, 213, 91, 72, 122, 231, 108, 125, 176, 42, 11, 117, 78, 2, 0, 0, 0]), (&[206, 197, 7, 13, 96, 157, 211, 73, 127, 114, 189, 224, 127, 201, 107, 160, 152, 239, 125, 192, 96, 67, 110, 78, 216, 3, 175, 7, 99, 43, 137, 182, 140, 53, 210, 47, 69, 157, 119, 202, 76, 11, 11, 80, 53, 134, 151, 102, 214, 13, 24, 43, 151, 22, 171, 62, 136, 121, 224, 102, 71, 136, 153, 168], &[44, 175, 112, 32, 141, 187, 198, 225, 208, 96, 126, 2, 8, 79, 212, 67, 222, 67, 84, 75, 213, 91, 72, 122, 231, 108, 125, 176, 42, 11, 117, 78, 2, 0, 0, 0]), (&[206, 197, 7, 13, 96, 157, 211, 73, 127, 114, 189, 224, 127, 201, 107, 160, 152, 239, 125, 192, 96, 67, 110, 78, 216, 3, 175, 7, 99, 43, 137, 182, 157, 255, 135, 106, 75, 148, 45, 10, 151, 17, 209, 130, 33, 137, 143, 17, 202, 57, 117, 21, 137, 235, 244, 212, 157, 116, 159, 107, 62, 73, 50, 146], &[44, 175, 112, 32, 141, 187, 198, 225, 208, 96, 126, 2, 8, 79, 212, 67, 222, 67, 84, 75, 213, 91, 72, 122, 231, 108, 125, 176, 42, 11, 117, 78, 2, 0, 0, 0]), (&[206, 197, 7, 13, 96, 157, 211, 73, 127, 114, 189, 224, 127, 201, 107, 160, 152, 239, 125, 192, 96, 67, 110, 78, 216, 3, 175, 7, 99, 43, 137, 182, 225, 44, 34, 212, 241, 98, 217, 160, 18, 201, 49, 146, 51, 218, 93, 62, 146, 60, 197, 225, 2, 155, 143, 144, 228, 114, 73, 201, 171, 37, 107, 53], &[44, 175, 112, 32, 141, 187, 198, 225, 208, 96, 126, 2, 8, 79, 212, 67, 222, 67, 84, 75, 213, 91, 72, 122, 231, 108, 125, 176, 42, 11, 117, 78, 2, 0, 0, 0]), (&[206, 197, 7, 13, 96, 157, 211, 73, 127, 114, 189, 224, 127, 201, 107, 160, 152, 239, 125, 192, 96, 67, 110, 78, 216, 3, 175, 7, 99, 43, 137, 182, 244, 170, 194, 251, 227, 63, 3, 85, 75, 254, 181, 89, 234, 38, 144, 237, 133, 33, 202, 164, 190, 150, 30, 97, 201, 26, 201, 161, 83, 13, 206, 122], &[44, 175, 112, 32, 141, 187, 198, 225, 208, 96, 126, 2, 8, 79, 212, 67, 222, 67, 84, 75, 213, 91, 72, 122, 231, 108, 125, 176, 42, 11, 117, 78, 2, 0, 0, 0]), (&[206, 197, 7, 13, 96, 157, 211, 73, 127, 114, 189, 224, 127, 201, 107, 160, 224, 205, 208, 98, 230, 234, 242, 66, 149, 173, 76, 207, 196, 29, 70, 9], &[8, 21, 0, 0, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0]), (&[206, 197, 7, 13, 96, 157, 211, 73, 127, 114, 189, 224, 127, 201, 107, 160, 255, 58, 225, 39, 112, 190, 162, 228, 141, 155, 222, 115, 133, 231, 162, 95], &[0, 0, 0, 0, 10, 0, 0, 0]), (&[240, 195, 101, 195, 207, 89, 214, 113, 235, 114, 218, 14, 122, 65, 19, 196, 159, 31, 5, 21, 244, 98, 205, 207, 132, 224, 241, 214, 4, 93, 252, 187], &[64, 31, 0, 0, 0, 0, 0, 0])]; -- GitLab From f3e635712e3116c28d026f3cc023b62408fa9f85 Mon Sep 17 00:00:00 2001 From: Marcio Diaz Date: Wed, 4 Mar 2020 10:13:14 +0100 Subject: [PATCH 086/301] Fix benchmarks! macro for non dispatchable code (#5100) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Init allowing non dispatchable closure to be benchmarked. * Remove example, add it in timestamp * Fix nits. * Move test to example. * Update frame/example/src/lib.rs Co-Authored-By: Shawn Tabrizi * Update frame/example/src/lib.rs Co-Authored-By: Shawn Tabrizi * Apply review suggestion: move test to benchmarking crate. * Update frame/benchmarking/src/lib.rs Co-Authored-By: Bastian Köcher * Remove unused imports. Co-authored-by: Shawn Tabrizi Co-authored-by: Bastian Köcher Co-authored-by: Benjamin Kampmann --- Cargo.lock | 3 + frame/benchmarking/Cargo.toml | 12 +- frame/benchmarking/src/lib.rs | 246 ++++++++++++++++---------------- frame/benchmarking/src/tests.rs | 169 ++++++++++++++++++++++ frame/benchmarking/src/utils.rs | 8 +- frame/example/Cargo.toml | 2 + frame/example/src/lib.rs | 42 +++++- 7 files changed, 352 insertions(+), 130 deletions(-) create mode 100644 frame/benchmarking/src/tests.rs diff --git a/Cargo.lock b/Cargo.lock index 67346ad86b..a7fdd2b4c9 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1456,6 +1456,8 @@ dependencies = [ name = "frame-benchmarking" version = "2.0.0-alpha.3" dependencies = [ + "frame-support", + "frame-system", "parity-scale-codec", "sp-api", "sp-io", @@ -4119,6 +4121,7 @@ dependencies = [ name = "pallet-example" version = "2.0.0-alpha.3" dependencies = [ + "frame-benchmarking", "frame-support", "frame-system", "pallet-balances", diff --git a/frame/benchmarking/Cargo.toml b/frame/benchmarking/Cargo.toml index ecaf987bb0..b39031a6b7 100644 --- a/frame/benchmarking/Cargo.toml +++ b/frame/benchmarking/Cargo.toml @@ -15,7 +15,17 @@ sp-runtime-interface = { version = "2.0.0-alpha.2", path = "../../primitives/run sp-runtime = { version = "2.0.0-alpha.2", path = "../../primitives/runtime", default-features = false } sp-std = { version = "2.0.0-alpha.2", path = "../../primitives/std", default-features = false } sp-io = { path = "../../primitives/io", default-features = false, version = "2.0.0-alpha.2" } +frame-support = { version = "2.0.0-alpha.2", default-features = false, path = "../support" } +frame-system = { version = "2.0.0-alpha.2", default-features = false, path = "../system" } [features] default = [ "std" ] -std = [ "sp-runtime-interface/std", "sp-runtime/std", "sp-api/std", "codec/std", "sp-std/std" ] +std = [ + "codec/std", + "sp-runtime-interface/std", + "sp-runtime/std", + "sp-api/std", + "sp-std/std", + "frame-support/std", + "frame-system/std", +] diff --git a/frame/benchmarking/src/lib.rs b/frame/benchmarking/src/lib.rs index d979000432..f7e98336b2 100644 --- a/frame/benchmarking/src/lib.rs +++ b/frame/benchmarking/src/lib.rs @@ -18,6 +18,7 @@ #![cfg_attr(not(feature = "std"), no_std)] +mod tests; mod utils; pub use utils::*; #[doc(hidden)] @@ -82,15 +83,14 @@ pub use sp_io::storage::root as storage_root; /// foo { /// let caller = account::(b"caller", 0, benchmarks_seed); /// let l = ...; -/// } _(Origin::Signed(caller), vec![0u8; l]) +/// }: _(Origin::Signed(caller), vec![0u8; l]) /// /// // second dispatchable: bar; this is a root dispatchable and accepts a `u8` vector of size -/// // `l`. We don't want it preininitialised like before so we override using the `=> ()` -/// // notation. +/// // `l`. We don't want it preininitialised like before so we override using the `=> ()` notation. /// // In this case, we explicitly name the call using `bar` instead of `_`. /// bar { /// let l = _ .. _ => (); -/// } bar(Origin::Root, vec![0u8; l]) +/// }: bar(Origin::Root, vec![0u8; l]) /// /// // third dispatchable: baz; this is a user dispatchable. It isn't dependent on length like the /// // other two but has its own complexity `c` that needs setting up. It uses `caller` (in the @@ -100,13 +100,13 @@ pub use sp_io::storage::root as storage_root; /// baz1 { /// let caller = account::(b"caller", 0, benchmarks_seed); /// let c = 0 .. 10 => setup_c(&caller, c); -/// } baz(Origin::Signed(caller)) +/// }: baz(Origin::Signed(caller)) /// /// // this is a second benchmark of the baz dispatchable with a different setup. /// baz2 { /// let caller = account::(b"caller", 0, benchmarks_seed); /// let c = 0 .. 10 => setup_c_in_some_other_way(&caller, c); -/// } baz(Origin::Signed(caller)) +/// }: baz(Origin::Signed(caller)) /// /// // this is benchmarking some code that is not a dispatchable. /// populate_a_set { @@ -115,7 +115,7 @@ pub use sp_io::storage::root as storage_root; /// for i in 0..x { /// m.insert(i); /// } -/// } { m.into_iter().collect::() } +/// }: { m.into_iter().collect::() } /// } /// ``` #[macro_export] @@ -134,97 +134,6 @@ macro_rules! benchmarks { } } -#[macro_export] -macro_rules! impl_benchmark { - ( - $( $name:ident ),* - ) => { - impl $crate::Benchmarking<$crate::BenchmarkResults> for Module { - fn run_benchmark( - extrinsic: Vec, - lowest_range_values: Vec, - highest_range_values: Vec, - steps: Vec, - repeat: u32, - ) -> Result, &'static str> { - // Map the input to the selected benchmark. - let extrinsic = sp_std::str::from_utf8(extrinsic.as_slice()) - .map_err(|_| "Could not find extrinsic")?; - let selected_benchmark = match extrinsic { - $( stringify!($name) => SelectedBenchmark::$name, )* - _ => return Err("Could not find extrinsic."), - }; - - // Warm up the DB - $crate::benchmarking::commit_db(); - $crate::benchmarking::wipe_db(); - - let components = , RawOrigin>>::components(&selected_benchmark); - let mut results: Vec<$crate::BenchmarkResults> = Vec::new(); - - // Default number of steps for a component. - let mut prev_steps = 10; - - // Select the component we will be benchmarking. Each component will be benchmarked. - for (idx, (name, low, high)) in components.iter().enumerate() { - // Get the number of steps for this component. - let steps = steps.get(idx).cloned().unwrap_or(prev_steps); - prev_steps = steps; - - let lowest = lowest_range_values.get(idx).cloned().unwrap_or(*low); - let highest = highest_range_values.get(idx).cloned().unwrap_or(*high); - - let diff = highest - lowest; - - // Create up to `STEPS` steps for that component between high and low. - let step_size = (diff / steps).max(1); - let num_of_steps = diff / step_size + 1; - - for s in 0..num_of_steps { - // This is the value we will be testing for component `name` - let component_value = lowest + step_size * s; - - // Select the max value for all the other components. - let c: Vec<($crate::BenchmarkParameter, u32)> = components.iter() - .enumerate() - .map(|(idx, (n, l, h))| - if n == name { - (*n, component_value) - } else { - (*n, *highest_range_values.get(idx).unwrap_or(h)) - } - ) - .collect(); - - // Run the benchmark `repeat` times. - for _ in 0..repeat { - // Set up the externalities environment for the setup we want to benchmark. - let (call, caller) = , RawOrigin>>::instance(&selected_benchmark, &c)?; - // Commit the externalities to the database, flushing the DB cache. - // This will enable worst case scenario for reading from the database. - $crate::benchmarking::commit_db(); - // Time the extrinsic logic. - let start_extrinsic = $crate::benchmarking::current_time(); - call.dispatch(caller.into())?; - let finish_extrinsic = $crate::benchmarking::current_time(); - let elapsed_extrinsic = finish_extrinsic - start_extrinsic; - // Time the storage root recalculation. - let start_storage_root = $crate::benchmarking::current_time(); - $crate::storage_root(); - let finish_storage_root = $crate::benchmarking::current_time(); - let elapsed_storage_root = finish_storage_root - start_storage_root; - results.push((c.clone(), elapsed_extrinsic, elapsed_storage_root)); - // Wipe the DB back to the genesis state. - $crate::benchmarking::wipe_db(); - } - } - } - return Ok(results); - } - } - } -} - #[macro_export] #[allow(missing_docs)] macro_rules! benchmarks_iter { @@ -247,14 +156,16 @@ macro_rules! benchmarks_iter { $( $rest:tt )* ) => { $crate::benchmarks_iter! { - { $( $common )* } ( $( $names )* ) $name { $( $code )* }: { Ok((crate::Call::::$dispatch($($arg),*), $origin)) } $( $rest )* + { $( $common )* } ( $( $names )* ) $name { $( $code )* }: { + Call::::$dispatch($($arg),*).dispatch($origin.into())?; + } $( $rest )* } }; // iteration arm: ( { $( $common:tt )* } ( $( $names:ident )* ) - $name:ident { $( $code:tt )* }: { $eval:expr } + $name:ident { $( $code:tt )* }: $eval:block $( $rest:tt )* ) => { $crate::benchmark_backend! { @@ -277,7 +188,7 @@ macro_rules! benchmark_backend { $( $common:tt )* } { $( PRE { $( $pre_parsed:tt )* } )* - } { $eval:expr } { + } { $eval:block } { let $pre_id:tt : $pre_ty:ty = $pre_ex:expr; $( $rest:tt )* } ) => { @@ -292,7 +203,7 @@ macro_rules! benchmark_backend { $( $common:tt )* } { $( $parsed:tt )* - } { $eval:expr } { + } { $eval:block } { let $param:ident in ( $param_from:expr ) .. $param_to:expr => $param_instancer:expr; $( $rest:tt )* }) => { @@ -308,7 +219,7 @@ macro_rules! benchmark_backend { $( { $common:ident , $common_from:tt , $common_to:expr , $common_instancer:expr } )* } { $( $parsed:tt )* - } { $eval:expr } { + } { $eval:block } { let $param:ident in ...; $( $rest:tt )* }) => { @@ -331,7 +242,7 @@ macro_rules! benchmark_backend { $( { $common:ident , $common_from:tt , $common_to:expr , $common_instancer:expr } )* } { $( $parsed:tt )* - } { $eval:expr } { + } { $eval:block } { let $param:ident in _ .. _ => $param_instancer:expr ; $( $rest:tt )* }) => { @@ -354,7 +265,7 @@ macro_rules! benchmark_backend { $( $common:tt )* } { $( $parsed:tt )* - } { $eval:expr } { + } { $eval:block } { let $param:ident in $param_from:tt .. $param_to:expr => $param_instancer:expr ; $( $rest:tt )* }) => { @@ -370,7 +281,7 @@ macro_rules! benchmark_backend { $( $common:tt )* } { $( $parsed:tt )* - } { $eval:expr } { + } { $eval:block } { let $param:ident in $param_from:tt .. $param_to:expr; $( $rest:tt )* }) => { @@ -386,7 +297,7 @@ macro_rules! benchmark_backend { $( $common:tt )* } { $( $parsed:tt )* - } { $eval:expr } { + } { $eval:block } { let $pre_id:tt = $pre_ex:expr; $( $rest:tt )* }) => { @@ -403,11 +314,11 @@ macro_rules! benchmark_backend { } { $( PRE { $pre_id:tt , $pre_ty:ty , $pre_ex:expr } )* $( PARAM { $param:ident , $param_from:expr , $param_to:expr , $param_instancer:expr } )* - } { $eval:expr } { $( $post:tt )* } ) => { + } { $eval:block } { $( $post:tt )* } ) => { #[allow(non_camel_case_types)] struct $name; #[allow(unused_variables)] - impl $crate::BenchmarkingSetup, RawOrigin> for $name { + impl $crate::BenchmarkingSetup for $name { fn components(&self) -> Vec<($crate::BenchmarkParameter, u32, u32)> { vec! [ $( @@ -417,7 +328,7 @@ macro_rules! benchmark_backend { } fn instance(&self, components: &[($crate::BenchmarkParameter, u32)]) - -> Result<(crate::Call, RawOrigin), &'static str> + -> Result Result<(), &'static str>>, &'static str> { $( let $common = $common_from; @@ -431,7 +342,8 @@ macro_rules! benchmark_backend { )* $( $param_instancer ; )* $( $post )* - $eval + + Ok(Box::new(move || -> Result<(), &'static str> { $eval; Ok(()) })) } } } @@ -463,28 +375,116 @@ macro_rules! selected_benchmark { } // Allow us to select a benchmark from the list of available benchmarks. - impl $crate::BenchmarkingSetup, RawOrigin> for SelectedBenchmark { + impl $crate::BenchmarkingSetup for SelectedBenchmark { fn components(&self) -> Vec<($crate::BenchmarkParameter, u32, u32)> { match self { - $( Self::$bench => <$bench as $crate::BenchmarkingSetup< - T, - Call, - RawOrigin, - >>::components(&$bench), )* + $( Self::$bench => <$bench as $crate::BenchmarkingSetup>::components(&$bench), )* } } fn instance(&self, components: &[($crate::BenchmarkParameter, u32)]) - -> Result<(Call, RawOrigin), &'static str> + -> Result Result<(), &'static str>>, &'static str> { match self { - $( Self::$bench => <$bench as $crate::BenchmarkingSetup< - T, - Call, - RawOrigin, - >>::instance(&$bench, components), )* + $( Self::$bench => <$bench as $crate::BenchmarkingSetup>::instance(&$bench, components), )* } } } }; } + +#[macro_export] +macro_rules! impl_benchmark { + ( + $( $name:ident ),* + ) => { + impl $crate::Benchmarking<$crate::BenchmarkResults> for Module { + fn run_benchmark( + extrinsic: Vec, + lowest_range_values: Vec, + highest_range_values: Vec, + steps: Vec, + repeat: u32, + ) -> Result, &'static str> { + // Map the input to the selected benchmark. + let extrinsic = sp_std::str::from_utf8(extrinsic.as_slice()) + .map_err(|_| "`extrinsic` is not a valid utf8 string!")?; + let selected_benchmark = match extrinsic { + $( stringify!($name) => SelectedBenchmark::$name, )* + _ => return Err("Could not find extrinsic."), + }; + + // Warm up the DB + $crate::benchmarking::commit_db(); + $crate::benchmarking::wipe_db(); + + let components = >::components(&selected_benchmark); + let mut results: Vec<$crate::BenchmarkResults> = Vec::new(); + + // Default number of steps for a component. + let mut prev_steps = 10; + + // Select the component we will be benchmarking. Each component will be benchmarked. + for (idx, (name, low, high)) in components.iter().enumerate() { + // Get the number of steps for this component. + let steps = steps.get(idx).cloned().unwrap_or(prev_steps); + prev_steps = steps; + + let lowest = lowest_range_values.get(idx).cloned().unwrap_or(*low); + let highest = highest_range_values.get(idx).cloned().unwrap_or(*high); + + let diff = highest - lowest; + + // Create up to `STEPS` steps for that component between high and low. + let step_size = (diff / steps).max(1); + let num_of_steps = diff / step_size + 1; + + for s in 0..num_of_steps { + // This is the value we will be testing for component `name` + let component_value = lowest + step_size * s; + + // Select the max value for all the other components. + let c: Vec<($crate::BenchmarkParameter, u32)> = components.iter() + .enumerate() + .map(|(idx, (n, _, h))| + if n == name { + (*n, component_value) + } else { + (*n, *highest_range_values.get(idx).unwrap_or(h)) + } + ) + .collect(); + + // Run the benchmark `repeat` times. + for _ in 0..repeat { + // Set up the externalities environment for the setup we want to benchmark. + let closure_to_benchmark = >::instance(&selected_benchmark, &c)?; + + // Commit the externalities to the database, flushing the DB cache. + // This will enable worst case scenario for reading from the database. + $crate::benchmarking::commit_db(); + + // Time the extrinsic logic. + let start_extrinsic = $crate::benchmarking::current_time(); + closure_to_benchmark()?; + let finish_extrinsic = $crate::benchmarking::current_time(); + let elapsed_extrinsic = finish_extrinsic - start_extrinsic; + + // Time the storage root recalculation. + let start_storage_root = $crate::benchmarking::current_time(); + $crate::storage_root(); + let finish_storage_root = $crate::benchmarking::current_time(); + let elapsed_storage_root = finish_storage_root - start_storage_root; + + results.push((c.clone(), elapsed_extrinsic, elapsed_storage_root)); + + // Wipe the DB back to the genesis state. + $crate::benchmarking::wipe_db(); + } + } + } + return Ok(results); + } + } + } +} diff --git a/frame/benchmarking/src/tests.rs b/frame/benchmarking/src/tests.rs new file mode 100644 index 0000000000..d47488604e --- /dev/null +++ b/frame/benchmarking/src/tests.rs @@ -0,0 +1,169 @@ +// Copyright 2020 Parity Technologies (UK) Ltd. +// This file is part of Substrate. + +// Substrate is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Substrate is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Substrate. If not, see . + +//! Tests for the module. + +#![cfg(test)] + +use super::*; +use codec::Decode; +use sp_std::prelude::*; +use sp_runtime::{ + traits::{Dispatchable, BlakeTwo256, IdentityLookup}, + testing::{H256, Header}, +}; +use frame_support::{dispatch::DispatchResult, decl_module, impl_outer_origin}; +use frame_system::{RawOrigin, ensure_signed, ensure_none}; + +decl_module! { + pub struct Module for enum Call where origin: T::Origin { + fn dummy(origin, _n: u32) -> DispatchResult { + let _sender = ensure_signed(origin)?; + Ok(()) + } + + fn other_dummy(origin, _n: u32) -> DispatchResult { + let _sender = ensure_none(origin)?; + Ok(()) + } + } +} + +impl_outer_origin! { + pub enum Origin for Test where system = frame_system {} +} + +pub trait Trait { + type Event; + type BlockNumber; + type AccountId: 'static + Default + Decode; + type Origin: From> + Into, Self::Origin>>; +} + +#[derive(Clone, Eq, PartialEq)] +pub struct Test; + +impl frame_system::Trait for Test { + type Origin = Origin; + type Index = u64; + type BlockNumber = u64; + type Hash = H256; + type Call = (); + type Hashing = BlakeTwo256; + type AccountId = u64; + type Lookup = IdentityLookup; + type Header = Header; + type Event = (); + type BlockHashCount = (); + type MaximumBlockWeight = (); + type MaximumBlockLength = (); + type AvailableBlockRatio = (); + type Version = (); + type ModuleToIndex = (); + type AccountData = (); + type OnNewAccount = (); + type OnKilledAccount = (); +} + +impl Trait for Test { + type Event = (); + type BlockNumber = u32; + type Origin = Origin; + type AccountId = u64; +} + +// This function basically just builds a genesis storage key/value store according to +// our desired mockup. +fn new_test_ext() -> sp_io::TestExternalities { + frame_system::GenesisConfig::default().build_storage::().unwrap().into() +} + +benchmarks!{ + _ { + // Define a common range for `b`. + let b in 1 .. 1000 => (); + } + + dummy { + let b in ...; + let caller = account("caller", 0, 0); + }: _ (RawOrigin::Signed(caller), b.into()) + + other_name { + let b in ...; + let caller = account("caller", 0, 0); + }: other_dummy (RawOrigin::Signed(caller), b.into()) + + sort_vector { + let x in 0 .. 10000; + let mut m = Vec::::new(); + for i in 0..x { + m.push(i); + } + }: { + m.sort(); + } +} + +#[test] +fn benchmarks_macro_works() { + // Check benchmark creation for `dummy`. + let selected_benchmark = SelectedBenchmark::dummy; + + let components = >::components(&selected_benchmark); + assert_eq!(components, vec![(BenchmarkParameter::b, 1, 1000)]); + + let closure = >::instance( + &selected_benchmark, + &[(BenchmarkParameter::b, 1)], + ).expect("failed to create closure"); + + new_test_ext().execute_with(|| { + assert_eq!(closure(), Ok(())); + }); +} + +#[test] +fn benchmarks_macro_rename_works() { + // Check benchmark creation for `other_dummy`. + let selected_benchmark = SelectedBenchmark::other_name; + let components = >::components(&selected_benchmark); + assert_eq!(components, vec![(BenchmarkParameter::b, 1, 1000)]); + + let closure = >::instance( + &selected_benchmark, + &[(BenchmarkParameter::b, 1)], + ).expect("failed to create closure"); + + new_test_ext().execute_with(|| { + assert_eq!(closure(), Err("Bad origin")); + }); +} + +#[test] +fn benchmarks_macro_works_for_non_dispatchable() { + let selected_benchmark = SelectedBenchmark::sort_vector; + + let components = >::components(&selected_benchmark); + assert_eq!(components, vec![(BenchmarkParameter::x, 0, 10000)]); + + let closure = >::instance( + &selected_benchmark, + &[(BenchmarkParameter::x, 1)], + ).expect("failed to create closure"); + + assert_eq!(closure(), Ok(())); +} \ No newline at end of file diff --git a/frame/benchmarking/src/utils.rs b/frame/benchmarking/src/utils.rs index 87996c3f57..bc6cfbcc86 100644 --- a/frame/benchmarking/src/utils.rs +++ b/frame/benchmarking/src/utils.rs @@ -17,7 +17,7 @@ //! Interfaces, types and utils for benchmarking a FRAME runtime. use codec::{Encode, Decode}; -use sp_std::vec::Vec; +use sp_std::{vec::Vec, prelude::Box}; use sp_io::hashing::blake2_256; use sp_runtime::RuntimeString; @@ -93,12 +93,12 @@ pub trait Benchmarking { } /// The required setup for creating a benchmark. -pub trait BenchmarkingSetup { +pub trait BenchmarkingSetup { /// Return the components and their ranges which should be tested in this benchmark. fn components(&self) -> Vec<(BenchmarkParameter, u32, u32)>; - /// Set up the storage, and prepare a call and caller to test in a single run of the benchmark. - fn instance(&self, components: &[(BenchmarkParameter, u32)]) -> Result<(Call, RawOrigin), &'static str>; + /// Set up the storage, and prepare a closure to test in a single run of the benchmark. + fn instance(&self, components: &[(BenchmarkParameter, u32)]) -> Result Result<(), &'static str>>, &'static str>; } /// Grab an account, seeded by a name and index. diff --git a/frame/example/Cargo.toml b/frame/example/Cargo.toml index 48c1fd57dc..515d1fd8d7 100644 --- a/frame/example/Cargo.toml +++ b/frame/example/Cargo.toml @@ -11,6 +11,7 @@ description = "FRAME example pallet" [dependencies] serde = { version = "1.0.101", optional = true } codec = { package = "parity-scale-codec", version = "1.2.0", default-features = false } +frame-benchmarking = { version = "2.0.0-alpha.2", default-features = false, path = "../benchmarking" } frame-support = { version = "2.0.0-alpha.2", default-features = false, path = "../support" } frame-system = { version = "2.0.0-alpha.2", default-features = false, path = "../system" } pallet-balances = { version = "2.0.0-alpha.2", default-features = false, path = "../balances" } @@ -27,6 +28,7 @@ std = [ "serde", "codec/std", "sp-runtime/std", + "frame-benchmarking/std", "frame-support/std", "frame-system/std", "pallet-balances/std", diff --git a/frame/example/src/lib.rs b/frame/example/src/lib.rs index f4139a310a..57d6c97729 100644 --- a/frame/example/src/lib.rs +++ b/frame/example/src/lib.rs @@ -258,10 +258,12 @@ use frame_support::{ dispatch::DispatchResult, decl_module, decl_storage, decl_event, weights::{SimpleDispatchInfo, DispatchInfo, DispatchClass, ClassifyDispatch, WeighData, Weight, PaysFee}, }; -use frame_system::{self as system, ensure_signed, ensure_root}; +use sp_std::prelude::*; +use frame_benchmarking::{benchmarks, account}; +use frame_system::{self as system, ensure_signed, ensure_root, RawOrigin}; use codec::{Encode, Decode}; use sp_runtime::{ - traits::{SignedExtension, Bounded, SaturatedConversion}, + traits::{SignedExtension, Bounded, SaturatedConversion, Dispatchable}, transaction_validity::{ ValidTransaction, TransactionValidityError, InvalidTransaction, TransactionValidity, }, @@ -642,6 +644,42 @@ impl SignedExtension for WatchDummy { } } +benchmarks!{ + _ { + // Define a common range for `b`. + let b in 1 .. 1000 => (); + } + + // This will measure the execution time of `accumulate_dummy` for b in [1..1000] range. + accumulate_dummy { + let b in ...; + let caller = account("caller", 0, 0); + }: _ (RawOrigin::Signed(caller), b.into()) + + // This will measure the execution time of `set_dummy` for b in [1..1000] range. + set_dummy { + let b in ...; + let caller = account("caller", 0, 0); + }: set_dummy (RawOrigin::Signed(caller), b.into()) + + // This will measure the execution time of `set_dummy` for b in [1..10] range. + another_set_dummy { + let b in 1 .. 10; + let caller = account("caller", 0, 0); + }: set_dummy (RawOrigin::Signed(caller), b.into()) + + // This will measure the execution time of sorting a vector. + sort_vector { + let x in 0 .. 10000; + let mut m = Vec::::new(); + for i in 0..x { + m.push(i); + } + }: { + m.sort(); + } +} + #[cfg(test)] mod tests { use super::*; -- GitLab From 85f1aa482e366d41dfa723b345b9bdc5fb174173 Mon Sep 17 00:00:00 2001 From: kianenigma Date: Wed, 4 Mar 2020 13:25:29 +0100 Subject: [PATCH 087/301] Almost all tests work again --- frame/staking/src/lib.rs | 56 +++++++++++++---------------- frame/staking/src/mock.rs | 4 +-- frame/staking/src/tests.rs | 74 +++++++++++++++++++------------------- 3 files changed, 64 insertions(+), 70 deletions(-) diff --git a/frame/staking/src/lib.rs b/frame/staking/src/lib.rs index b024c17b67..73b3785d07 100644 --- a/frame/staking/src/lib.rs +++ b/frame/staking/src/lib.rs @@ -950,25 +950,28 @@ decl_storage! { /// Snapshot of validators at the beginning of the current election window. This should only /// have a value when [`EraElectionStatus`] == `ElectionStatus::Open(_)`. - pub SnapshotValidators get(fn snapshot_validators): Option>; + SnapshotValidators get(fn snapshot_validators): Option>; /// Snapshot of nominators at the beginning of the current election window. This should only /// have a value when [`EraElectionStatus`] == `ElectionStatus::Open(_)`. - pub SnapshotNominators get(fn snapshot_nominators): Option>; + SnapshotNominators get(fn snapshot_nominators): Option>; /// The current set of staking keys. - pub Keys get(fn keys): Vec; + Keys get(fn keys): Vec; /// The next validator set. At the end of an era, if this is available (potentially from the /// result of an offchain worker), it is immediately used. Otherwise, the on-chain election /// is executed. - pub QueuedElected get(fn queued_elected): Option>>; + QueuedElected get(fn queued_elected): Option>>; /// The score of the current [`QueuedElected`]. - pub QueuedScore get(fn queued_score): Option; + QueuedScore get(fn queued_score): Option; /// Flag to control the execution of the offchain election. - pub EraElectionStatus get(fn era_election_status): ElectionStatus; + EraElectionStatus get(fn era_election_status): ElectionStatus; + + /// True of the current planned session is final + IsCurrentSessionFinal get(fn is_current_session_final): bool = false; /// True if network has been upgraded to this version. /// @@ -1100,7 +1103,8 @@ decl_module! { /// this block until the end of the era. fn on_initialize(now: T::BlockNumber) { Self::ensure_storage_upgraded(); - // @guillaume check: can this ever be none? except for the initial one? And what should I use here? this or ActiveEra? + // @guillaume Is using active era okay here? not current era? These two tests are related + // offchain_election_flag_is_triggered and is_current_session_final_works let maybe_current_era = Self::active_era(); if maybe_current_era.is_none() { return; } let current_era = maybe_current_era.expect("value checked to be 'Some'").index; @@ -1108,8 +1112,7 @@ decl_module! { if // if we don't have any ongoing offchain compute. Self::era_election_status() == ElectionStatus::Closed && - // and an era is about to be changed. - Self::is_current_session_final(current_era) + Self::is_current_session_final() { let next_session_change = T::NextSessionChange::estimate_next_session_change(now); @@ -1801,7 +1804,7 @@ impl Module { ) as ExtendedBalance } - /// The session index of the current era TODO: @guillaume check + /// The session index of the given era. fn start_session_index_of(era: EraIndex) -> SessionIndex { Self::eras_start_session_index(era) .unwrap_or_else(|| { @@ -1810,18 +1813,6 @@ impl Module { }) } - /// returns true if the end of the current session leads to an era change. - fn is_current_session_final(current_era: EraIndex) -> bool { - let current_index = T::SessionInterface::current_index(); - let era_length = current_index - .checked_sub(Self::start_session_index_of(current_era)) - .unwrap_or(0); - let session_per_era = T::SessionsPerEra::get() - .checked_sub(One::one()) - .unwrap_or(0); - era_length >= session_per_era - } - /// Dump the list of validators and nominators into vectors and keep them on-chain. /// /// This data is used to efficiently evaluate election results. returns `true` if the operation @@ -2018,7 +2009,6 @@ impl Module { /// Plan a new session potentially trigger a new era. fn new_session(session_index: SessionIndex) -> Option> { - println!("new session"); if let Some(current_era) = Self::current_era() { // Initial era has been set. @@ -2027,20 +2017,21 @@ impl Module { let era_length = session_index.checked_sub(current_era_start_session_index) .unwrap_or(0); // Must never happen. - dbg!( - >::block_number(), - Self::current_era(), - current_era_start_session_index, - session_index, - ); match ForceEra::get() { Forcing::ForceNew => ForceEra::kill(), Forcing::ForceAlways => (), Forcing::NotForcing if era_length >= T::SessionsPerEra::get() => (), - _ => return None, + _ => { + // not forcing, not a new era either. If final, set the flag. + if era_length + 1 >= >::get() { + IsCurrentSessionFinal::put(true); + } + return None + }, } - dbg!("NEW ERAAAAAAA"); + // new era. + IsCurrentSessionFinal::put(false); Self::new_era(session_index) } else { // Set initial era @@ -2411,9 +2402,10 @@ impl Module { debug::native::info!( target: "staking", - "new validator set of size {:?} has been elected via {:?}", + "new validator set of size {:?} has been elected via {:?} for era {:?}", elected_stashes.len(), compute, + current_era, ); Some(elected_stashes) diff --git a/frame/staking/src/mock.rs b/frame/staking/src/mock.rs index 9262a39ce2..0ad5a2a5ef 100644 --- a/frame/staking/src/mock.rs +++ b/frame/staking/src/mock.rs @@ -472,7 +472,7 @@ impl ExtBuilder { } pub fn offchain_phragmen_ext(self) -> Self { self - .session_per_era(3) + .session_per_era(4) .session_length(5) .election_lookahead(3) .local_key_account(11) @@ -680,7 +680,7 @@ pub fn advance_session() { } pub fn start_session(session_index: SessionIndex) { - assert_eq!(>::get(), 1, "start_session can only be used with session length 1."); + assert_eq!(>::get(), 1, "start_session can only be used with session length 1."); for i in Session::current_index()..session_index { Staking::on_finalize(System::block_number()); System::set_block_number((i + 1).into()); diff --git a/frame/staking/src/tests.rs b/frame/staking/src/tests.rs index 289eaa2bab..0ec9e75812 100644 --- a/frame/staking/src/tests.rs +++ b/frame/staking/src/tests.rs @@ -1920,7 +1920,6 @@ fn era_is_always_same_length() { let session_per_era = >::get(); start_era(1); - // TODO: @guillaume maybe we can use start_session_index_of here. assert_eq!(Staking::eras_start_session_index(active_era()).unwrap(), session_per_era); start_era(2); @@ -2770,29 +2769,20 @@ mod offchain_phragmen { .build() .execute_with(|| { start_era(1); - assert_eq!(Session::current_index(), 4); + assert_eq!(Session::current_index(), 3); assert_eq!(Staking::current_era(), Some(1)); - assert_eq!(Staking::is_current_session_final( - Staking::active_era().unwrap().index), - false, - ); + assert_eq!(Staking::is_current_session_final(), false); start_session(4); - assert_eq!(Session::current_index(), 5); + assert_eq!(Session::current_index(), 4); assert_eq!(Staking::current_era(), Some(1)); - assert_eq!(Staking::is_current_session_final( - Staking::active_era().unwrap().index), - true, - ); + assert_eq!(Staking::is_current_session_final(), true); start_session(5); - assert_eq!(Session::current_index(), 6); + assert_eq!(Session::current_index(), 5); // era changed. assert_eq!(Staking::current_era(), Some(2)); - assert_eq!(Staking::is_current_session_final( - Staking::active_era().unwrap().index), - false, - ); + assert_eq!(Staking::is_current_session_final(), false); }) } @@ -2815,40 +2805,47 @@ mod offchain_phragmen { run_to_block(18); assert_session_era!(1, 0); - assert_eq!(Staking::era_election_status(), ElectionStatus::Closed); - assert!(Staking::snapshot_nominators().is_none()); - assert!(Staking::snapshot_validators().is_none()); - run_to_block(39); + run_to_block(27); + assert_session_era!(2, 0); + + run_to_block(36); assert_session_era!(3, 0); + // fist era has session 0, which has 0 blocks length, so we have in total 40 blocks + // in the era. + run_to_block(37); + assert_session_era!(3, 0); + assert_eq!(Staking::era_election_status(), ElectionStatus::Open(37)); + assert!(Staking::snapshot_nominators().is_some()); + assert!(Staking::snapshot_validators().is_some()); + + run_to_block(38); + assert_eq!(Staking::era_election_status(), ElectionStatus::Open(37)); + + run_to_block(39); + assert_eq!(Staking::era_election_status(), ElectionStatus::Open(37)); + run_to_block(40); - assert_session_era!(4, 0); + assert_session_era!(4, 0); // TODO @guillaume I was expecting active era to be bumped by this point. Double check assert_eq!(Staking::era_election_status(), ElectionStatus::Closed); assert!(Staking::snapshot_nominators().is_none()); assert!(Staking::snapshot_validators().is_none()); - run_to_block(46); - assert_session_era!(4, 0); + run_to_block(86); + assert_session_era!(8, 1); assert_eq!(Staking::era_election_status(), ElectionStatus::Closed); assert!(Staking::snapshot_nominators().is_none()); assert!(Staking::snapshot_validators().is_none()); - run_to_block(47); - assert_session_era!(4, 0); - assert_eq!(Staking::era_election_status(), ElectionStatus::Open(47)); + // second era onwards has 50 blocks per era. + run_to_block(87); + assert_eq!(Staking::era_election_status(), ElectionStatus::Open(87)); assert!(Staking::snapshot_nominators().is_some()); assert!(Staking::snapshot_validators().is_some()); - run_to_block(49); - assert_session_era!(4, 0); - assert_eq!(Staking::era_election_status(), ElectionStatus::Open(47)); - assert!(Staking::snapshot_nominators().is_some()); - assert!(Staking::snapshot_validators().is_some()); - - run_to_block(50); - dbg!("HERE"); - assert_session_era!(5, 1); + run_to_block(90); + assert_session_era!(9, 1); assert_eq!(Staking::era_election_status(), ElectionStatus::Closed); assert!(Staking::snapshot_nominators().is_none()); assert!(Staking::snapshot_validators().is_none()); @@ -3526,7 +3523,7 @@ mod offchain_phragmen { run_to_block(15); // open the election window and create snapshots. - run_to_block(27); + run_to_block(32); // a solution that has been prepared before the slash. let (pre_compact, pre_winners, pre_score) = prepare_submission_with(false, |_| {}); @@ -3679,6 +3676,11 @@ mod offchain_phragmen { ); }) } + + #[test] + fn forcing_eras_works_with_offchain_fallback_or_submission() { + unimplemented!(); + } } #[test] -- GitLab From 23f65462114408ea58738caf8de591827dc168d4 Mon Sep 17 00:00:00 2001 From: Logan Saether Date: Wed, 4 Mar 2020 13:52:30 +0100 Subject: [PATCH 088/301] Adds more Democracy docs (#5077) * Adding more democracy docs * Remove Cargo.lock * Update docs in democracy * Update frame/democracy/src/lib.rs Co-Authored-By: Shawn Tabrizi * Update frame/democracy/src/lib.rs Co-Authored-By: joe petrowski <25483142+joepetrowski@users.noreply.github.com> * Update frame/democracy/src/lib.rs Co-Authored-By: joe petrowski <25483142+joepetrowski@users.noreply.github.com> * Update frame/democracy/src/lib.rs Co-Authored-By: joe petrowski <25483142+joepetrowski@users.noreply.github.com> * Update frame/democracy/src/lib.rs Co-Authored-By: joe petrowski <25483142+joepetrowski@users.noreply.github.com> * Update frame/democracy/src/lib.rs Co-Authored-By: joe petrowski <25483142+joepetrowski@users.noreply.github.com> * Update frame/democracy/src/lib.rs Co-Authored-By: joe petrowski <25483142+joepetrowski@users.noreply.github.com> * Update frame/democracy/src/lib.rs Co-Authored-By: joe petrowski <25483142+joepetrowski@users.noreply.github.com> * Update frame/democracy/src/lib.rs Co-Authored-By: joe petrowski <25483142+joepetrowski@users.noreply.github.com> * Resolve * Remove cargo.lock again * Add paragraph on AQB * Update frame/democracy/src/lib.rs * Update frame/democracy/src/lib.rs Co-authored-by: Shawn Tabrizi Co-authored-by: joe petrowski <25483142+joepetrowski@users.noreply.github.com> --- frame/democracy/src/lib.rs | 322 ++++++++++++++++++++++++++++++++++++- 1 file changed, 314 insertions(+), 8 deletions(-) diff --git a/frame/democracy/src/lib.rs b/frame/democracy/src/lib.rs index 6755fabd20..b2e234c91a 100644 --- a/frame/democracy/src/lib.rs +++ b/frame/democracy/src/lib.rs @@ -14,7 +14,140 @@ // You should have received a copy of the GNU General Public License // along with Substrate. If not, see . -//! Democratic system: Handles administration of general stakeholder voting. +//! # Democracy Pallet +//! +//! - [`democracy::Trait`](./trait.Trait.html) +//! - [`Call`](./enum.Call.html) +//! +//! ## Overview +//! +//! The Democracy pallet handles the administration of general stakeholder voting. +//! +//! There are two different queues that a proposal can be added to before it +//! becomes a referendum, 1) the proposal queue consisting of all public proposals +//! and 2) the external queue consisting of a single proposal that originates +//! from one of the _external_ origins (such as a collective group). +//! +//! Every launch period - a length defined in the runtime - the Democracy pallet +//! launches a referendum from a proposal that it takes from either the proposal +//! queue or the external queue in turn. Any token holder in the system can vote +//! on referenda. The voting system +//! uses time-lock voting by allowing the token holder to set their _conviction_ +//! behind a vote. The conviction will dictate the length of time the tokens +//! will be locked, as well as the multiplier that scales the vote power. +//! +//! ### Terminology +//! +//! - **Enactment Period:** The minimum period of locking and the period between a proposal being +//! approved and enacted. +//! - **Lock Period:** A period of time after proposal enactment that the tokens of _winning_ voters +//! will be locked. +//! - **Conviction:** An indication of a voter's strength of belief in their vote. An increase +//! of one in conviction indicates that a token holder is willing to lock their tokens for twice +//! as many lock periods after enactment. +//! - **Vote:** A value that can either be in approval ("Aye") or rejection ("Nay") +//! of a particular referendum. +//! - **Proposal:** A submission to the chain that represents an action that a proposer (either an +//! account or an external origin) suggests that the system adopt. +//! - **Referendum:** A proposal that is in the process of being voted on for +//! either acceptance or rejection as a change to the system. +//! - **Proxy:** An account that votes on behalf of a separate "Stash" account +//! that holds the funds. +//! - **Delegation:** The act of granting your voting power to the decisions of another account. +//! +//! ### Adaptive Quorum Biasing +//! +//! A _referendum_ can be either simple majority-carries in which 50%+1 of the +//! votes decide the outcome or _adaptive quorum biased_. Adaptive quorum biasing +//! makes the threshold for passing or rejecting a referendum higher or lower +//! depending on how the referendum was originally proposed. There are two types of +//! adaptive quorum biasing: 1) _positive turnout bias_ makes a referendum +//! require a super-majority to pass that decreases as turnout increases and +//! 2) _negative turnout bias_ makes a referendum require a super-majority to +//! reject that decreases as turnout increases. Another way to think about the +//! quorum biasing is that _positive bias_ referendums will be rejected by +//! default and _negative bias_ referendums get passed by default. +//! +//! ## Interface +//! +//! ### Dispatchable Functions +//! +//! #### Public +//! +//! These calls can be made from any externally held account capable of creating +//! a signed extrinsic. +//! +//! - `propose` - Submits a sensitive action, represented as a hash. +//! Requires a deposit. +//! - `second` - Signals agreement with a proposal, moves it higher on the +//! proposal queue, and requires a matching deposit to the original. +//! - `vote` - Votes in a referendum, either the vote is "Aye" to enact the +//! proposal or "Nay" to keep the status quo. +//! - `proxy_vote` - Votes in a referendum on behalf of a stash account. +//! - `activate_proxy` - Activates a proxy that is already open to the sender. +//! - `close_proxy` - Clears the proxy status, called by the proxy. +//! - `deactivate_proxy` - Deactivates a proxy back to the open status, called by +//! the stash. +//! - `open_proxy` - Opens a proxy account on behalf of the sender. +//! - `delegate` - Delegates the voting power (tokens * conviction) to another +//! account. +//! - `undelegate` - Stops the delegation of voting power to another account. +//! - `note_preimage` - Registers the preimage for an upcoming proposal, requires +//! a deposit that is returned once the proposal is enacted. +//! - `note_imminent_preimage` - Registers the preimage for an upcoming proposal. +//! Does not require a deposit, but the proposal must be in the dispatch queue. +//! - `reap_preimage` - Removes the preimage for an expired proposal. Will only +//! work under the condition that it's the same account that noted it and +//! after the voting period, OR it's a different account after the enactment period. +//! - `unlock` - Unlocks tokens that have an expired lock. +//! +//! #### Cancellation Origin +//! +//! This call can only be made by the `CancellationOrigin`. +//! +//! - `emergency_cancel` - Schedules an emergency cancellation of a referendum. +//! Can only happen once to a specific referendum. +//! +//! #### ExternalOrigin +//! +//! This call can only be made by the `ExternalOrigin`. +//! +//! - `external_propose` - Schedules a proposal to become a referendum once it is is legal +//! for an externally proposed referendum. +//! +//! #### External Majority Origin +//! +//! This call can only be made by the `ExternalMajorityOrigin`. +//! +//! - `external_propose_majority` - Schedules a proposal to become a majority-carries +//! referendum once it is legal for an externally proposed referendum. +//! +//! #### External Default Origin +//! +//! This call can only be made by the `ExternalDefaultOrigin`. +//! +//! - `external_propose_default` - Schedules a proposal to become a negative-turnout-bias +//! referendum once it is legal for an externally proposed referendum. +//! +//! #### Fast Track Origin +//! +//! This call can only be made by the `FastTrackOrigin`. +//! +//! - `fast_track` - Schedules the current externally proposed proposal that +//! is "majority-carries" to become a referendum immediately. +//! +//! #### Veto Origin +//! +//! This call can only be made by the `VetoOrigin`. +//! +//! - `veto_external` - Vetoes and blacklists the external proposal hash. +//! +//! #### Root +//! +//! - `cancel_referendum` - Removes a referendum. +//! - `cancel_queued` - Cancels a proposal that is queued for enactment. +//! - `clear_public_proposal` - Removes all public proposals. + #![recursion_limit="128"] #![cfg_attr(not(feature = "std"), no_std)] @@ -482,8 +615,16 @@ decl_module! { /// Propose a sensitive action to be taken. /// + /// The dispatch origin of this call must be _Signed_ and the sender must + /// have funds to cover the deposit. + /// + /// - `proposal_hash`: The hash of the proposal preimage. + /// - `value`: The amount of deposit (must be at least `MinimumDeposit`). + /// + /// Emits `Proposed`. + /// /// # - /// - O(1). + /// - `O(1)`. /// - Two DB changes, one DB entry. /// # #[weight = SimpleDispatchInfo::FixedNormal(5_000_000)] @@ -505,10 +646,15 @@ decl_module! { Self::deposit_event(RawEvent::Proposed(index, value)); } - /// Propose a sensitive action to be taken. + /// Signals agreement with a particular proposal. + /// + /// The dispatch origin of this call must be _Signed_ and the sender + /// must have funds to cover the deposit, equal to the original deposit. + /// + /// - `proposal`: The index of the proposal to second. /// /// # - /// - O(1). + /// - `O(1)`. /// - One DB entry. /// # #[weight = SimpleDispatchInfo::FixedNormal(5_000_000)] @@ -524,8 +670,13 @@ decl_module! { /// Vote in a referendum. If `vote.is_aye()`, the vote is to enact the proposal; /// otherwise it is a vote to keep the status quo. /// + /// The dispatch origin of this call must be _Signed_. + /// + /// - `ref_index`: The index of the referendum to vote for. + /// - `vote`: The vote configuration. + /// /// # - /// - O(1). + /// - `O(1)`. /// - One DB change, one DB entry. /// # #[weight = SimpleDispatchInfo::FixedNormal(200_000)] @@ -540,8 +691,13 @@ decl_module! { /// Vote in a referendum on behalf of a stash. If `vote.is_aye()`, the vote is to enact /// the proposal; otherwise it is a vote to keep the status quo. /// + /// The dispatch origin of this call must be _Signed_. + /// + /// - `ref_index`: The index of the referendum to proxy vote for. + /// - `vote`: The vote configuration. + /// /// # - /// - O(1). + /// - `O(1)`. /// - One DB change, one DB entry. /// # #[weight = SimpleDispatchInfo::FixedNormal(200_000)] @@ -556,6 +712,14 @@ decl_module! { /// Schedule an emergency cancellation of a referendum. Cannot happen twice to the same /// referendum. + /// + /// The dispatch origin of this call must be `CancellationOrigin`. + /// + /// -`ref_index`: The index of the referendum to cancel. + /// + /// # + /// - Depends on size of storage vec `VotersFor` for this referendum. + /// # #[weight = SimpleDispatchInfo::FixedOperational(500_000)] fn emergency_cancel(origin, ref_index: ReferendumIndex) { T::CancellationOrigin::ensure_origin(origin)?; @@ -570,6 +734,15 @@ decl_module! { /// Schedule a referendum to be tabled once it is legal to schedule an external /// referendum. + /// + /// The dispatch origin of this call must be `ExternalOrigin`. + /// + /// - `proposal_hash`: The preimage hash of the proposal. + /// + /// # + /// - `O(1)`. + /// - One DB change. + /// # #[weight = SimpleDispatchInfo::FixedNormal(5_000_000)] fn external_propose(origin, proposal_hash: T::Hash) { T::ExternalOrigin::ensure_origin(origin)?; @@ -586,8 +759,17 @@ decl_module! { /// Schedule a majority-carries referendum to be tabled next once it is legal to schedule /// an external referendum. /// + /// The dispatch of this call must be `ExternalMajorityOrigin`. + /// + /// - `proposal_hash`: The preimage hash of the proposal. + /// /// Unlike `external_propose`, blacklisting has no effect on this and it may replace a /// pre-scheduled `external_propose` call. + /// + /// # + /// - `O(1)`. + /// - One DB change. + /// # #[weight = SimpleDispatchInfo::FixedNormal(5_000_000)] fn external_propose_majority(origin, proposal_hash: T::Hash) { T::ExternalMajorityOrigin::ensure_origin(origin)?; @@ -597,8 +779,17 @@ decl_module! { /// Schedule a negative-turnout-bias referendum to be tabled next once it is legal to /// schedule an external referendum. /// + /// The dispatch of this call must be `ExternalDefaultOrigin`. + /// + /// - `proposal_hash`: The preimage hash of the proposal. + /// /// Unlike `external_propose`, blacklisting has no effect on this and it may replace a /// pre-scheduled `external_propose` call. + /// + /// # + /// - `O(1)`. + /// - One DB change. + /// # #[weight = SimpleDispatchInfo::FixedNormal(5_000_000)] fn external_propose_default(origin, proposal_hash: T::Hash) { T::ExternalDefaultOrigin::ensure_origin(origin)?; @@ -609,11 +800,21 @@ decl_module! { /// immediately. If there is no externally-proposed referendum currently, or if there is one /// but it is not a majority-carries referendum then it fails. /// + /// The dispatch of this call must be `FastTrackOrigin`. + /// /// - `proposal_hash`: The hash of the current external proposal. /// - `voting_period`: The period that is allowed for voting on this proposal. Increased to /// `EmergencyVotingPeriod` if too low. /// - `delay`: The number of block after voting has ended in approval and this should be /// enacted. This doesn't have a minimum amount. + /// + /// Emits `Started`. + /// + /// # + /// - One DB clear. + /// - One DB change. + /// - One extra DB entry. + /// # #[weight = SimpleDispatchInfo::FixedNormal(200_000)] fn fast_track(origin, proposal_hash: T::Hash, @@ -636,6 +837,19 @@ decl_module! { } /// Veto and blacklist the external proposal hash. + /// + /// The dispatch origin of this call must be `VetoOrigin`. + /// + /// - `proposal_hash`: The preimage hash of the proposal to veto and blacklist. + /// + /// Emits `Vetoed`. + /// + /// # + /// - Two DB entries. + /// - One DB clear. + /// - Performs a binary search on `existing_vetoers` which should not + /// be very large. + /// # #[weight = SimpleDispatchInfo::FixedNormal(200_000)] fn veto_external(origin, proposal_hash: T::Hash) { let who = T::VetoOrigin::ensure_origin(origin)?; @@ -661,6 +875,14 @@ decl_module! { } /// Remove a referendum. + /// + /// The dispatch origin of this call must be _Root_. + /// + /// - `ref_index`: The index of the referendum to cancel. + /// + /// # + /// - `O(1)`. + /// # #[weight = SimpleDispatchInfo::FixedOperational(10_000)] fn cancel_referendum(origin, #[compact] ref_index: ReferendumIndex) { ensure_root(origin)?; @@ -668,6 +890,14 @@ decl_module! { } /// Cancel a proposal queued for enactment. + /// + /// The dispatch origin of this call must be _Root_. + /// + /// - `which`: The index of the referendum to cancel. + /// + /// # + /// - One DB change. + /// # #[weight = SimpleDispatchInfo::FixedOperational(10_000)] fn cancel_queued(origin, which: ReferendumIndex) { ensure_root(origin)?; @@ -688,6 +918,10 @@ decl_module! { /// /// NOTE: Used to be called `set_proxy`. /// + /// The dispatch origin of this call must be _Signed_. + /// + /// - `proxy`: The account that will be activated as proxy. + /// /// # /// - One extra DB entry. /// # @@ -709,6 +943,8 @@ decl_module! { /// /// NOTE: Used to be called `resign_proxy`. /// + /// The dispatch origin of this call must be _Signed_. + /// /// # /// - One DB clear. /// # @@ -729,6 +965,10 @@ decl_module! { /// /// NOTE: Used to be called `remove_proxy`. /// + /// The dispatch origin of this call must be _Signed_. + /// + /// - `proxy`: The account that will be deactivated as proxy. + /// /// # /// - One DB clear. /// # @@ -747,6 +987,16 @@ decl_module! { /// Delegate vote. /// + /// Currency is locked indefinitely for as long as it's delegated. + /// + /// The dispatch origin of this call must be _Signed_. + /// + /// - `to`: The account to make a delegate of the sender. + /// - `conviction`: The conviction that will be attached to the delegated + /// votes. + /// + /// Emits `Delegated`. + /// /// # /// - One extra DB entry. /// # @@ -767,6 +1017,14 @@ decl_module! { /// Undelegate vote. /// + /// Must be sent from an account that has called delegate previously. + /// The tokens will be reduced from an indefinite lock to the maximum + /// possible according to the conviction of the prior delegation. + /// + /// The dispatch origin of this call must be _Signed_. + /// + /// Emits `Undelegated`. + /// /// # /// - O(1). /// # @@ -788,7 +1046,14 @@ decl_module! { Self::deposit_event(RawEvent::Undelegated(who)); } - /// Veto and blacklist the proposal hash. Must be from Root origin. + /// Clears all public proposals. + /// + /// The dispatch origin of this call must be _Root_. + /// + /// # + /// - `O(1)`. + /// - One DB clear. + /// # #[weight = SimpleDispatchInfo::FixedNormal(10_000)] fn clear_public_proposals(origin) { ensure_root(origin)?; @@ -798,6 +1063,17 @@ decl_module! { /// Register the preimage for an upcoming proposal. This doesn't require the proposal to be /// in the dispatch queue but does require a deposit, returned once enacted. + /// + /// The dispatch origin of this call must be _Signed_. + /// + /// - `encoded_proposal`: The preimage of a proposal. + /// + /// Emits `PreimageNoted`. + /// + /// # + /// - Dependent on the size of `encoded_proposal` but protected by a + /// required deposit. + /// # #[weight = SimpleDispatchInfo::FixedNormal(100_000)] fn note_preimage(origin, encoded_proposal: Vec) { let who = ensure_signed(origin)?; @@ -816,6 +1092,16 @@ decl_module! { /// Register the preimage for an upcoming proposal. This requires the proposal to be /// in the dispatch queue. No deposit is needed. + /// + /// The dispatch origin of this call must be _Signed_. + /// + /// - `encoded_proposal`: The preimage of a proposal. + /// + /// Emits `PreimageNoted`. + /// + /// # + /// - Dependent on the size of `encoded_proposal`. + /// # #[weight = SimpleDispatchInfo::FixedNormal(100_000)] fn note_imminent_preimage(origin, encoded_proposal: Vec) { let who = ensure_signed(origin)?; @@ -833,9 +1119,19 @@ decl_module! { /// Remove an expired proposal preimage and collect the deposit. /// + /// The dispatch origin of this call must be _Signed_. + /// + /// - `proposal_hash`: The preimage hash of a proposal. + /// /// This will only work after `VotingPeriod` blocks from the time that the preimage was /// noted, if it's the same account doing it. If it's a different account, then it'll only /// work an additional `EnactmentPeriod` later. + /// + /// Emits `PreimageReaped`. + /// + /// # + /// - One DB clear. + /// # #[weight = SimpleDispatchInfo::FixedNormal(10_000)] fn reap_preimage(origin, proposal_hash: T::Hash) { let who = ensure_signed(origin)?; @@ -855,6 +1151,17 @@ decl_module! { Self::deposit_event(RawEvent::PreimageReaped(proposal_hash, old, deposit, who)); } + /// Unlock tokens that have an expired lock. + /// + /// The dispatch origin of this call must be _Signed_. + /// + /// - `target`: The account to remove the lock on. + /// + /// Emits `Unlocked`. + /// + /// # + /// - `O(1)`. + /// # #[weight = SimpleDispatchInfo::FixedNormal(10_000)] fn unlock(origin, target: T::AccountId) { ensure_signed(origin)?; @@ -1066,7 +1373,6 @@ impl Module { fn clear_referendum(ref_index: ReferendumIndex) { >::remove(ref_index); - LowestUnbaked::mutate(|i| if *i == ref_index { *i += 1; let end = ReferendumCount::get(); -- GitLab From 69175fbe0beb37718c341b18191260000c61c3d9 Mon Sep 17 00:00:00 2001 From: Chevdor Date: Wed, 4 Mar 2020 14:17:50 +0100 Subject: [PATCH 089/301] Fix substrate default storage location (#5064) --- .maintain/Dockerfile | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/.maintain/Dockerfile b/.maintain/Dockerfile index 56bfc7a2cc..2fc1532aa2 100644 --- a/.maintain/Dockerfile +++ b/.maintain/Dockerfile @@ -20,7 +20,6 @@ RUN curl https://sh.rustup.rs -sSf | sh -s -- -y && \ export PATH="$PATH:$HOME/.cargo/bin" && \ rustup toolchain install nightly && \ rustup target add wasm32-unknown-unknown --toolchain nightly && \ - rustup default nightly && \ rustup default stable && \ cargo build "--$PROFILE" @@ -34,9 +33,10 @@ ARG PROFILE=release RUN mv /usr/share/ca* /tmp && \ rm -rf /usr/share/* && \ mv /tmp/ca-certificates /usr/share/ && \ - mkdir -p /root/.local/share/Polkadot && \ - ln -s /root/.local/share/Polkadot /data && \ - useradd -m -u 1000 -U -s /bin/sh -d /substrate substrate + useradd -m -u 1000 -U -s /bin/sh -d /substrate substrate && \ + mkdir -p /substrate/.local/share/substrate && \ + chown -R substrate:substrate /substrate/.local && \ + ln -s /substrate/.local/share/substrate /data COPY --from=builder /substrate/target/$PROFILE/substrate /usr/local/bin @@ -49,7 +49,7 @@ RUN rm -rf /usr/lib/python* && \ rm -rf /usr/bin /usr/sbin /usr/share/man USER substrate -EXPOSE 30333 9933 9944 +EXPOSE 30333 9933 9944 9615 VOLUME ["/data"] CMD ["/usr/local/bin/substrate"] -- GitLab From bb05439493dd346b54e00f295fa727fa2e0e023d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jakub=20P=C3=A1nik?= Date: Wed, 4 Mar 2020 14:19:38 +0100 Subject: [PATCH 090/301] Added subscribe_all_heads RPC function (#4979) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Added subscribe_all_heads RPC function * Update client/rpc/src/chain/tests.rs Fixed style ( spacing ) Co-Authored-By: Tomasz DrwiÄ™ga Co-authored-by: Tomasz DrwiÄ™ga --- client/rpc-api/src/chain/mod.rs | 16 +++++++++++-- client/rpc/src/chain/mod.rs | 42 +++++++++++++++++++++++++++++---- client/rpc/src/chain/tests.rs | 29 +++++++++++++++++++++++ 3 files changed, 81 insertions(+), 6 deletions(-) diff --git a/client/rpc-api/src/chain/mod.rs b/client/rpc-api/src/chain/mod.rs index 0c270a3f70..2ab3851d37 100644 --- a/client/rpc-api/src/chain/mod.rs +++ b/client/rpc-api/src/chain/mod.rs @@ -54,6 +54,18 @@ pub trait ChainApi { #[rpc(name = "chain_getFinalizedHead", alias("chain_getFinalisedHead"))] fn finalized_head(&self) -> Result; + /// All head subscription + #[pubsub(subscription = "chain_allHead", subscribe, name = "chain_subscribeAllHeads")] + fn subscribe_all_heads(&self, metadata: Self::Metadata, subscriber: Subscriber

); + + /// Unsubscribe from all head subscription. + #[pubsub(subscription = "chain_allHead", unsubscribe, name = "chain_unsubscribeAllHeads")] + fn unsubscribe_all_heads( + &self, + metadata: Option, + id: SubscriptionId, + ) -> RpcResult; + /// New head subscription #[pubsub( subscription = "chain_newHead", @@ -76,7 +88,7 @@ pub trait ChainApi { id: SubscriptionId, ) -> RpcResult; - /// New head subscription + /// Finalized head subscription #[pubsub( subscription = "chain_finalizedHead", subscribe, @@ -85,7 +97,7 @@ pub trait ChainApi { )] fn subscribe_finalized_heads(&self, metadata: Self::Metadata, subscriber: Subscriber
); - /// Unsubscribe from new head subscription. + /// Unsubscribe from finalized head subscription. #[pubsub( subscription = "chain_finalizedHead", unsubscribe, diff --git a/client/rpc/src/chain/mod.rs b/client/rpc/src/chain/mod.rs index a2971983c7..5285de670d 100644 --- a/client/rpc/src/chain/mod.rs +++ b/client/rpc/src/chain/mod.rs @@ -94,7 +94,33 @@ trait ChainBackend: Send + Sync + 'static Ok(self.client().chain_info().finalized_hash) } - /// New head subscription + /// All new head subscription + fn subscribe_all_heads( + &self, + _metadata: crate::metadata::Metadata, + subscriber: Subscriber, + ) { + subscribe_headers( + self.client(), + self.subscriptions(), + subscriber, + || self.client().chain_info().best_hash, + || self.client().import_notification_stream() + .map(|notification| Ok::<_, ()>(notification.header)) + .compat(), + ) + } + + /// Unsubscribe from all head subscription. + fn unsubscribe_all_heads( + &self, + _metadata: Option, + id: SubscriptionId, + ) -> RpcResult { + Ok(self.subscriptions().cancel(id)) + } + + /// New best head subscription fn subscribe_new_heads( &self, _metadata: crate::metadata::Metadata, @@ -112,7 +138,7 @@ trait ChainBackend: Send + Sync + 'static ) } - /// Unsubscribe from new head subscription. + /// Unsubscribe from new best head subscription. fn unsubscribe_new_heads( &self, _metadata: Option, @@ -121,7 +147,7 @@ trait ChainBackend: Send + Sync + 'static Ok(self.subscriptions().cancel(id)) } - /// New head subscription + /// Finalized head subscription fn subscribe_finalized_heads( &self, _metadata: crate::metadata::Metadata, @@ -138,7 +164,7 @@ trait ChainBackend: Send + Sync + 'static ) } - /// Unsubscribe from new head subscription. + /// Unsubscribe from finalized head subscription. fn unsubscribe_finalized_heads( &self, _metadata: Option, @@ -229,6 +255,14 @@ impl ChainApi, Block::Hash, Block::Header, Sig self.backend.finalized_head() } + fn subscribe_all_heads(&self, metadata: Self::Metadata, subscriber: Subscriber) { + self.backend.subscribe_all_heads(metadata, subscriber) + } + + fn unsubscribe_all_heads(&self, metadata: Option, id: SubscriptionId) -> RpcResult { + self.backend.unsubscribe_all_heads(metadata, id) + } + fn subscribe_new_heads(&self, metadata: Self::Metadata, subscriber: Subscriber) { self.backend.subscribe_new_heads(metadata, subscriber) } diff --git a/client/rpc/src/chain/tests.rs b/client/rpc/src/chain/tests.rs index eb05639018..02e4d2f163 100644 --- a/client/rpc/src/chain/tests.rs +++ b/client/rpc/src/chain/tests.rs @@ -195,6 +195,35 @@ fn should_notify_about_latest_block() { let remote = core.executor(); let (subscriber, id, transport) = Subscriber::new_test("test"); + { + let mut client = Arc::new(substrate_test_runtime_client::new()); + let api = new_full(client.clone(), Subscriptions::new(Arc::new(remote))); + + api.subscribe_all_heads(Default::default(), subscriber); + + // assert id assigned + assert_eq!(core.block_on(id), Ok(Ok(SubscriptionId::Number(1)))); + + let block = client.new_block(Default::default()).unwrap().build().unwrap().block; + client.import(BlockOrigin::Own, block).unwrap(); + } + + // assert initial head sent. + let (notification, next) = core.block_on(transport.into_future()).unwrap(); + assert!(notification.is_some()); + // assert notification sent to transport + let (notification, next) = core.block_on(next.into_future()).unwrap(); + assert!(notification.is_some()); + // no more notifications on this channel + assert_eq!(core.block_on(next.into_future()).unwrap().0, None); +} + +#[test] +fn should_notify_about_best_block() { + let mut core = ::tokio::runtime::Runtime::new().unwrap(); + let remote = core.executor(); + let (subscriber, id, transport) = Subscriber::new_test("test"); + { let mut client = Arc::new(substrate_test_runtime_client::new()); let api = new_full(client.clone(), Subscriptions::new(Arc::new(remote))); -- GitLab From 9b8af93b0b075a060f0ddc1af6e93d6361d0134b Mon Sep 17 00:00:00 2001 From: Kian Paimani <5588131+kianenigma@users.noreply.github.com> Date: Wed, 4 Mar 2020 14:30:26 +0100 Subject: [PATCH 091/301] Update frame/staking/src/tests.rs Co-Authored-By: thiolliere --- frame/staking/src/tests.rs | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/frame/staking/src/tests.rs b/frame/staking/src/tests.rs index 0ec9e75812..a1d94b4364 100644 --- a/frame/staking/src/tests.rs +++ b/frame/staking/src/tests.rs @@ -2827,7 +2827,7 @@ mod offchain_phragmen { assert_eq!(Staking::era_election_status(), ElectionStatus::Open(37)); run_to_block(40); - assert_session_era!(4, 0); // TODO @guillaume I was expecting active era to be bumped by this point. Double check + assert_session_era!(4, 0); assert_eq!(Staking::era_election_status(), ElectionStatus::Closed); assert!(Staking::snapshot_nominators().is_none()); assert!(Staking::snapshot_validators().is_none()); @@ -4217,4 +4217,3 @@ fn set_history_depth_works() { assert!(!::ErasTotalStake::contains_key(10 - 5)); }); } - -- GitLab From 58fcf2784da3ee9543f1f85a11006f656593e919 Mon Sep 17 00:00:00 2001 From: kianenigma Date: Wed, 4 Mar 2020 14:37:24 +0100 Subject: [PATCH 092/301] Fix review comments --- Cargo.lock | 1 + frame/staking/Cargo.toml | 9 +- frame/staking/src/lib.rs | 184 ++++++++++++------------- frame/staking/src/offchain_election.rs | 40 +++--- frame/staking/src/tests.rs | 5 - primitives/phragmen/src/helpers.rs | 4 +- primitives/phragmen/src/node.rs | 2 +- 7 files changed, 119 insertions(+), 126 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index ba9b22592c..16e3f67c30 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4391,6 +4391,7 @@ dependencies = [ "sp-runtime", "sp-staking", "sp-std", + "static_assertions", "substrate-test-utils", ] diff --git a/frame/staking/Cargo.toml b/frame/staking/Cargo.toml index 475f55de7f..3bab1d26d4 100644 --- a/frame/staking/Cargo.toml +++ b/frame/staking/Cargo.toml @@ -21,18 +21,19 @@ frame-system = { version = "2.0.0-alpha.2", default-features = false, path = ".. pallet-session = { version = "2.0.0-alpha.2", features = ["historical"], path = "../session", default-features = false } pallet-authorship = { version = "2.0.0-alpha.2", default-features = false, path = "../authorship" } sp-application-crypto = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/application-crypto" } +static_assertions = "1.1.0" # Optional imports for tesing-utils feature -pallet-indices = { version = "2.0.0-alpha.2", optional = true, path = "../indices" } -sp-core = { version = "2.0.0-alpha.2", optional = true, path = "../../primitives/core" } -rand = { version = "0.7.3", optional = true } +pallet-indices = { version = "2.0.0-alpha.2", optional = true, path = "../indices", default-features = false } +sp-core = { version = "2.0.0-alpha.2", optional = true, path = "../../primitives/core", default-features = false } +rand = { version = "0.7.3", optional = true, default-features = false } [dev-dependencies] pallet-balances = { version = "2.0.0-alpha.2", path = "../balances" } pallet-timestamp = { version = "2.0.0-alpha.2", path = "../timestamp" } pallet-staking-reward-curve = { version = "2.0.0-alpha.2", path = "../staking/reward-curve" } substrate-test-utils = { version = "2.0.0-alpha.2", path = "../../test-utils" } -parking_lot = { version = "0.10.0" } +parking_lot = "0.10.0" env_logger = "0.7.1" [features] diff --git a/frame/staking/src/lib.rs b/frame/staking/src/lib.rs index 73b3785d07..08a898de8f 100644 --- a/frame/staking/src/lib.rs +++ b/frame/staking/src/lib.rs @@ -281,6 +281,7 @@ use sp_runtime::{ }, transaction_validity::{ TransactionValidityError, TransactionValidity, ValidTransaction, InvalidTransaction, + UnknownTransaction, }, }; use sp_staking::{ @@ -295,7 +296,7 @@ use frame_system::{ }; use sp_phragmen::{ ExtendedBalance, Assignment, PhragmenScore, PhragmenResult, build_support_map, evaluate_support, - elect, generate_compact_solution_type, is_score_better, VotingLimit, + elect, generate_compact_solution_type, is_score_better, VotingLimit, SupportMap, }; const DEFAULT_MINIMUM_VALIDATOR_COUNT: u32 = 4; @@ -303,25 +304,29 @@ const MAX_UNLOCKING_CHUNKS: usize = 32; const MAX_NOMINATIONS: usize = ::LIMIT; const STAKING_ID: LockIdentifier = *b"staking "; -/// Maximum number of stakers that can be stored in a snapshot. -pub(crate) const MAX_VALIDATORS: u32 = ValidatorIndex::max_value() as u32; -pub(crate) const MAX_NOMINATORS: u32 = NominatorIndex::max_value(); - -// Note: Maximum nomination limit is set here -- 16. -generate_compact_solution_type!(pub GenericCompactAssignments, 16); - /// Data type used to index nominators in the compact type pub type NominatorIndex = u32; /// Data type used to index validators in the compact type. pub type ValidatorIndex = u16; +// Ensure the size of both ValidatorIndex and NominatorIndex +static_assertions::const_assert!(sp_std::mem::size_of::() <= sp_std::mem::size_of::()); +static_assertions::const_assert!(sp_std::mem::size_of::() <= sp_std::mem::size_of::()); + +/// Maximum number of stakers that can be stored in a snapshot. +pub(crate) const MAX_VALIDATORS: usize = ValidatorIndex::max_value() as usize; +pub(crate) const MAX_NOMINATORS: usize = NominatorIndex::max_value() as usize; + /// Counter for the number of eras that have passed. pub type EraIndex = u32; /// Counter for the number of "reward" points earned by a given validator. pub type RewardPoint = u32; +// Note: Maximum nomination limit is set here -- 16. +generate_compact_solution_type!(pub GenericCompactAssignments, 16); + /// Information regarding the active era (era in used in session). #[derive(Encode, Decode, Debug)] pub struct ActiveEraInfo { @@ -653,6 +658,23 @@ pub enum ElectionStatus { Open(BlockNumber), } +impl ElectionStatus { + fn is_open_at(&self, n: BlockNumber) -> bool { + *self == Self::Open(n) + } + + fn is_closed(&self) -> bool { + match self { + Self::Closed => true, + _ => false + } + } + + fn is_open(&self) -> bool { + !self.is_closed() + } +} + impl Default for ElectionStatus { fn default() -> Self { Self::Closed @@ -673,8 +695,6 @@ pub trait SessionInterface: frame_system::Trait { fn validators() -> Vec; /// Prune historical session tries up to but not including the given index. fn prune_historical_up_to(up_to: SessionIndex); - /// Current session index. - fn current_index() -> SessionIndex; } impl SessionInterface<::AccountId> for T where @@ -698,10 +718,6 @@ impl SessionInterface<::AccountId> for T whe fn prune_historical_up_to(up_to: SessionIndex) { >::prune_up_to(up_to); } - - fn current_index() -> SessionIndex { - >::current_index() - } } pub trait Trait: frame_system::Trait { @@ -1103,15 +1119,9 @@ decl_module! { /// this block until the end of the era. fn on_initialize(now: T::BlockNumber) { Self::ensure_storage_upgraded(); - // @guillaume Is using active era okay here? not current era? These two tests are related - // offchain_election_flag_is_triggered and is_current_session_final_works - let maybe_current_era = Self::active_era(); - if maybe_current_era.is_none() { return; } - let current_era = maybe_current_era.expect("value checked to be 'Some'").index; - if // if we don't have any ongoing offchain compute. - Self::era_election_status() == ElectionStatus::Closed && + Self::era_election_status().is_closed() && Self::is_current_session_final() { let next_session_change = @@ -1146,11 +1156,9 @@ decl_module! { /// Check if the current block number is the one at which the election window has been set /// to open. If so, it runs the offchain worker code. fn offchain_worker(now: T::BlockNumber) { - debug::RuntimeLogger::init(); use offchain_election::{set_check_offchain_execution_status, compute_offchain_election}; - let window_open = - Self::era_election_status() == ElectionStatus::::Open(now); + let window_open = Self::era_election_status().is_open_at(now); if window_open { let offchain_status = set_check_offchain_execution_status::(now); @@ -1821,12 +1829,12 @@ impl Module { let validators = >::enumerate().map(|(v, _)| v).collect::>(); let mut nominators = >::enumerate().map(|(n, _)| n).collect::>(); - // all validators nominate themselves; - nominators.extend(validators.clone()); - - let num_validators = validators.len() as u32; - let num_nominators = nominators.len() as u32; - if num_validators > MAX_VALIDATORS || num_nominators > MAX_NOMINATORS { + let num_validators = validators.len(); + let num_nominators = nominators.len(); + if + num_validators > MAX_VALIDATORS || + num_nominators.saturating_add(num_validators) > MAX_NOMINATORS + { debug::native::warn!( target: "staking", "Snapshot size too big [{} <> {}][{} <> {}].", @@ -1837,11 +1845,13 @@ impl Module { ); false } else { + // all validators nominate themselves; + nominators.extend(validators.clone()); + >::put(validators); >::put(nominators); true } - } /// Clears both snapshots of stakers. @@ -2048,10 +2058,10 @@ impl Module { claimed_score: PhragmenScore, ) -> Result<(), Error> { // discard early solutions - match Self::era_election_status() { - ElectionStatus::Closed => Err(Error::::PhragmenEarlySubmission)?, - ElectionStatus::Open(_) => { /* Open and no solutions received. Allowed. */ }, - } + ensure!( + Self::era_election_status().is_open(), + Error::::PhragmenEarlySubmission, + ); // assume the given score is valid. Is it better than what we have on-chain, if we have any? if let Some(queued_score) = Self::queued_score() { @@ -2084,11 +2094,9 @@ impl Module { // helpers let nominator_at = |i: NominatorIndex| -> Option { - // NOTE: we assume both `ValidatorIndex` and `NominatorIndex` are smaller than usize. snapshot_nominators.get(i as usize).cloned() }; let validator_at = |i: ValidatorIndex| -> Option { - // NOTE: we assume both `ValidatorIndex` and `NominatorIndex` are smaller than usize. snapshot_validators.get(i as usize).cloned() }; @@ -2179,28 +2187,7 @@ impl Module { ensure!(submitted_score == claimed_score, Error::::PhragmenBogusScore); // At last, alles Ok. Exposures and store the result. - let to_balance = |e: ExtendedBalance| - >>::convert(e); - - let exposures = supports.into_iter().map(|(validator, support)| { - let mut others = Vec::new(); - let mut own: BalanceOf = Zero::zero(); - let mut total: BalanceOf = Zero::zero(); - support.voters - .into_iter() - .map(|(target, weight)| (target, to_balance(weight))) - .for_each(|(nominator, stake)| { - if nominator == validator { - own = own.saturating_add(stake); - } else { - others.push(IndividualExposure { who: nominator, value: stake }); - } - total = total.saturating_add(stake); - }); - let exposure = Exposure { own, others, total }; - - (validator, exposure) - }).collect::)>>(); + let exposures = Self::collect_exposure(supports); debug::native::info!( target: "staking", @@ -2425,7 +2412,7 @@ impl Module { Self::do_phragmen_with_post_processing::(ElectionCompute::OnChain) ); - // either way, kill this. We remove it here to make sure it always has teh exact same + // either way, kill this. We remove it here to make sure it always has the exact same // lifetime as `QueuedElected`. QueuedScore::kill(); @@ -2461,39 +2448,8 @@ impl Module { &staked_assignments, ); - let to_balance = |e: ExtendedBalance| - >>::convert(e); - // collect exposures - let exposures = supports.into_iter().map(|(validator, support)| { - // build `struct exposure` from `support` - let mut others = Vec::new(); - let mut own: BalanceOf = Zero::zero(); - let mut total: BalanceOf = Zero::zero(); - support.voters - .into_iter() - .map(|(nominator, weight)| (nominator, to_balance(weight))) - .for_each(|(nominator, stake)| { - if nominator == validator { - own = own.saturating_add(stake); - } else { - others.push(IndividualExposure { who: nominator, value: stake }); - } - total = total.saturating_add(stake); - }); - - let exposure = Exposure { - own, - others, - // This might reasonably saturate and we cannot do much about it. The sum of - // someone's stake might exceed the balance type if they have the maximum amount - // of balance and receive some support. This is super unlikely to happen, yet we - // simulate it in some tests. - total, - }; - - (validator, exposure) - }).collect::)>>(); + let exposures = Self::collect_exposure(supports); // In order to keep the property required by `n_session_ending` that we must return the // new validator set even if it's the same as the old, as long as any underlying @@ -2521,8 +2477,7 @@ impl Module { /// No storage item is updated. fn do_phragmen() -> Option> { let mut all_nominators: Vec<(T::AccountId, Vec)> = Vec::new(); - let all_validator_candidates_iter = >::enumerate(); - let all_validators = all_validator_candidates_iter.map(|(who, _pref)| { + let all_validators = >::enumerate().map(|(who, _pref)| { // append self vote let self_vote = (who.clone(), vec![who.clone()]); all_nominators.push(self_vote); @@ -2555,6 +2510,38 @@ impl Module { ) } + /// Consume a set of [`Supports`] from [`sp_phragmen`] and collect them into a [`Exposure`] + fn collect_exposure(supports: SupportMap) -> Vec<(T::AccountId, Exposure>)> { + let to_balance = |e: ExtendedBalance| + >>::convert(e); + + supports.into_iter().map(|(validator, support)| { + // build `struct exposure` from `support` + let mut others = Vec::new(); + let mut own: BalanceOf = Zero::zero(); + let mut total: BalanceOf = Zero::zero(); + support.voters + .into_iter() + .map(|(nominator, weight)| (nominator, to_balance(weight))) + .for_each(|(nominator, stake)| { + if nominator == validator { + own = own.saturating_add(stake); + } else { + others.push(IndividualExposure { who: nominator, value: stake }); + } + total = total.saturating_add(stake); + }); + + let exposure = Exposure { + own, + others, + total, + }; + + (validator, exposure) + }).collect::)>>() + } + /// Remove all associated data of a stash account from the staking system. /// /// Assumes storage is upgraded before calling. @@ -3098,7 +3085,7 @@ impl frame_support::unsigned::ValidateUnsigned for Module { use offchain_election::SignaturePayload; // discard early solution - if Self::era_election_status() == ElectionStatus::Closed { + if Self::era_election_status().is_closed() { debug::native::debug!( target: "staking", "rejecting unsigned transaction because it is too early." @@ -3128,7 +3115,7 @@ impl frame_support::unsigned::ValidateUnsigned for Module { let all_keys = Self::keys(); let validator_key = all_keys.get(*validator_index as usize) // validator index is incorrect -- no key corresponds to it. - .ok_or(TransactionValidityError::Invalid(InvalidTransaction::Custom(0u8).into()))?; + .ok_or(TransactionValidityError::Unknown(UnknownTransaction::CannotLookup.into()))?; let signature_valid = payload.using_encoded(|encoded_payload| { validator_key.verify(&encoded_payload, &signature) @@ -3142,7 +3129,10 @@ impl frame_support::unsigned::ValidateUnsigned for Module { priority: score[0].saturated_into(), requires: vec![], provides: vec![(Self::current_era(), validator_key).encode()], - longevity: TryInto::::try_into(T::ElectionLookahead::get()).unwrap_or(150_u64), + // longevity: TryInto::::try_into(T::ElectionLookahead::get()).unwrap_or(150_u64), + longevity: TryInto::::try_into( + T::NextSessionChange::estimate_next_session_change(>::block_number()) - >::block_number() + ).unwrap_or(150_u64), propagate: true, }) } else { diff --git a/frame/staking/src/offchain_election.rs b/frame/staking/src/offchain_election.rs index b6f221a118..81a0bb05f1 100644 --- a/frame/staking/src/offchain_election.rs +++ b/frame/staking/src/offchain_election.rs @@ -43,8 +43,16 @@ pub enum OffchainElectionError { ElectionFailed, /// The snapshot data is not available. SnapshotUnavailable, - /// Failed to create the compact type. - CompactFailed, + /// Error from phragmen crate. This usually relates to compact operation. + PhragmenError(sp_phragmen::Error), + /// One of the computed winners is invalid. + InvalidWinner, +} + +impl From for OffchainElectionError { + fn from(e: sp_phragmen::Error) -> Self { + Self::PhragmenError(e) + } } /// The type of signature data encoded with the unsigned submission @@ -213,8 +221,7 @@ where >::slashable_balance_of_extended, ); - let (support_map, _) = - build_support_map::(winners.as_slice(), staked.as_slice()); + let (support_map, _) = build_support_map::(&winners, &staked); evaluate_support::(&support_map) }; @@ -223,21 +230,20 @@ where low_accuracy_assignment, nominator_index, validator_index, - ) - .unwrap(); + ).map_err(|e| OffchainElectionError::from(e))?; // winners to index. - let winners = winners - .into_iter() - .map(|w| { - snapshot_validators - .iter() - .position(|v| *v == w) - .unwrap() + let mut winners_indexed: Vec = Vec::with_capacity(winners.len()); + for w in winners { + if let Some(idx) = snapshot_validators.iter().position(|v| *v == w) { + let compact_index: ValidatorIndex = idx .try_into() - .unwrap() - }) - .collect::>(); + .map_err(|_| OffchainElectionError::InvalidWinner)?; + winners_indexed.push(compact_index); + } else { + return Err(OffchainElectionError::InvalidWinner); + } + } - Ok((winners, compact, score)) + Ok((winners_indexed, compact, score)) } diff --git a/frame/staking/src/tests.rs b/frame/staking/src/tests.rs index 0ec9e75812..3e1ed2f3cb 100644 --- a/frame/staking/src/tests.rs +++ b/frame/staking/src/tests.rs @@ -3676,11 +3676,6 @@ mod offchain_phragmen { ); }) } - - #[test] - fn forcing_eras_works_with_offchain_fallback_or_submission() { - unimplemented!(); - } } #[test] diff --git a/primitives/phragmen/src/helpers.rs b/primitives/phragmen/src/helpers.rs index 167c0de94d..b05bd41ec5 100644 --- a/primitives/phragmen/src/helpers.rs +++ b/primitives/phragmen/src/helpers.rs @@ -33,8 +33,8 @@ where ratio .into_iter() .map(|a| { - let who = a.who.clone(); - a.into_staked(stake_of(&who), true) + let stake = stake_of(&a.who); + a.into_staked(stake, true) }) .collect() } diff --git a/primitives/phragmen/src/node.rs b/primitives/phragmen/src/node.rs index 7687e3c33c..a66f9dbb48 100644 --- a/primitives/phragmen/src/node.rs +++ b/primitives/phragmen/src/node.rs @@ -57,7 +57,7 @@ impl PartialEq for NodeId { impl Eq for NodeId {} #[cfg(feature = "std")] -impl sp_std::fmt::Debug for NodeId { +impl sp_std::fmt::Debug for NodeId { fn fmt(&self, f: &mut fmt::Formatter<'_>) -> sp_std::fmt::Result { write!( f, -- GitLab From ef7eab27963537e84f928c1769c7a11eb666df32 Mon Sep 17 00:00:00 2001 From: kianenigma Date: Wed, 4 Mar 2020 15:35:17 +0100 Subject: [PATCH 093/301] More review stuff --- frame/staking/src/lib.rs | 47 +++++++++++++++++++++------------------- 1 file changed, 25 insertions(+), 22 deletions(-) diff --git a/frame/staking/src/lib.rs b/frame/staking/src/lib.rs index 08a898de8f..afc2821320 100644 --- a/frame/staking/src/lib.rs +++ b/frame/staking/src/lib.rs @@ -276,7 +276,7 @@ use sp_runtime::{ Perbill, PerU16, PerThing, RuntimeDebug, RuntimeAppPublic, curve::PiecewiseLinear, traits::{ - Convert, Zero, One, StaticLookup, CheckedSub, Saturating, SaturatedConversion, AtLeast32Bit, + Convert, Zero, StaticLookup, CheckedSub, Saturating, SaturatedConversion, AtLeast32Bit, EnsureOrigin, Member, SignedExtension, }, transaction_validity::{ @@ -1489,6 +1489,8 @@ decl_module! { } } + // ----- Root calls. + /// The ideal number of validators. #[weight = SimpleDispatchInfo::FixedNormal(5_000)] fn set_validator_count(origin, #[compact] new: u32) { @@ -1496,8 +1498,6 @@ decl_module! { ValidatorCount::put(new); } - // ----- Root calls. - /// Force there to be no new eras indefinitely. /// /// # @@ -1812,15 +1812,6 @@ impl Module { ) as ExtendedBalance } - /// The session index of the given era. - fn start_session_index_of(era: EraIndex) -> SessionIndex { - Self::eras_start_session_index(era) - .unwrap_or_else(|| { - frame_support::print("Error: start_session_index must be set for current_era"); - 0 - }) - } - /// Dump the list of validators and nominators into vectors and keep them on-chain. /// /// This data is used to efficiently evaluate election results. returns `true` if the operation @@ -2022,7 +2013,11 @@ impl Module { if let Some(current_era) = Self::current_era() { // Initial era has been set. - let current_era_start_session_index = Self::start_session_index_of(current_era); + let current_era_start_session_index = Self::eras_start_session_index(current_era) + .unwrap_or_else(|| { + frame_support::print("Error: start_session_index must be set for current_era"); + 0 + }); let era_length = session_index.checked_sub(current_era_start_session_index) .unwrap_or(0); // Must never happen. @@ -2033,7 +2028,7 @@ impl Module { Forcing::NotForcing if era_length >= T::SessionsPerEra::get() => (), _ => { // not forcing, not a new era either. If final, set the flag. - if era_length + 1 >= >::get() { + if era_length + 1 >= T::SessionsPerEra::get() { IsCurrentSessionFinal::put(true); } return None @@ -3053,16 +3048,24 @@ impl SignedExtension for LockStakingStatus { if let Some(inner_call) = call.is_sub_type() { if let ElectionStatus::Open(_) = >::era_election_status() { match inner_call { - Call::::bond(..) | - Call::::unbond(..) | - Call::::bond_extra(..) | - Call::::rebond(..) | - Call::::validate(..) | - Call::::nominate(..) | - Call::::chill(..) => { + Call::::set_payee(..) | + Call::::set_controller(..) | + Call::::set_validator_count(..) | + Call::::force_no_eras(..) | + Call::::force_new_era(..) | + Call::::set_invulnerables(..) | + Call::::force_unstake(..) | + Call::::force_new_era_always(..) | + Call::::cancel_deferred_slash(..) | + Call::::set_history_depth(..) | + Call::::reap_stash(..) | + Call::::submit_election_solution(..) | + Call::::submit_election_solution_unsigned(..) => { + // These calls are allowed. Nothing. + } + _ => { return Err(InvalidTransaction::Stale.into()); } - _ => { /* no problem */ } } } } -- GitLab From 5f704341f32f43e8f07335fd00e9095f7710089f Mon Sep 17 00:00:00 2001 From: kianenigma Date: Wed, 4 Mar 2020 16:06:49 +0100 Subject: [PATCH 094/301] Some nits --- bin/node/runtime/src/lib.rs | 1 - frame/staking/Cargo.toml | 1 + frame/staking/fuzz/Cargo.lock | 67 ++++++++++++++++++----------------- frame/staking/src/lib.rs | 2 +- 4 files changed, 36 insertions(+), 35 deletions(-) diff --git a/bin/node/runtime/src/lib.rs b/bin/node/runtime/src/lib.rs index f1ce3ff884..902a3682a1 100644 --- a/bin/node/runtime/src/lib.rs +++ b/bin/node/runtime/src/lib.rs @@ -316,7 +316,6 @@ parameter_types! { pub const BondingDuration: pallet_staking::EraIndex = 24 * 28; pub const SlashDeferDuration: pallet_staking::EraIndex = 24 * 7; // 1/4 the bonding duration. pub const RewardCurve: &'static PiecewiseLinear<'static> = &REWARD_CURVE; - /// This means that the offchain election is disabled for now. pub const ElectionLookahead: BlockNumber = 30; pub const MaxNominatorRewardedPerValidator: u32 = 64; } diff --git a/frame/staking/Cargo.toml b/frame/staking/Cargo.toml index 3bab1d26d4..bae804f99b 100644 --- a/frame/staking/Cargo.toml +++ b/frame/staking/Cargo.toml @@ -57,5 +57,6 @@ std = [ "pallet-session/std", "frame-system/std", "pallet-authorship/std", + "sp-application-crypto/std", "sp-core/std", ] diff --git a/frame/staking/fuzz/Cargo.lock b/frame/staking/fuzz/Cargo.lock index ded6e7cd64..693dd7a95c 100644 --- a/frame/staking/fuzz/Cargo.lock +++ b/frame/staking/fuzz/Cargo.lock @@ -321,7 +321,7 @@ dependencies = [ name = "frame-benchmarking" version = "2.0.0-alpha.3" dependencies = [ - "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-scale-codec 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "sp-api 2.0.0-alpha.3", "sp-io 2.0.0-alpha.3", "sp-runtime 2.0.0-alpha.3", @@ -333,7 +333,7 @@ dependencies = [ name = "frame-metadata" version = "11.0.0-alpha.3" dependencies = [ - "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-scale-codec 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", "sp-core 2.0.0-alpha.3", "sp-std 2.0.0-alpha.3", @@ -349,7 +349,7 @@ dependencies = [ "impl-trait-for-tuples 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "once_cell 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-scale-codec 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "paste 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", "sp-arithmetic 2.0.0-alpha.3", @@ -398,7 +398,7 @@ version = "2.0.0-alpha.3" dependencies = [ "frame-support 2.0.0-alpha.3", "impl-trait-for-tuples 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-scale-codec 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", "sp-core 2.0.0-alpha.3", "sp-io 2.0.0-alpha.3", @@ -571,7 +571,7 @@ name = "impl-codec" version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-scale-codec 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -777,7 +777,7 @@ dependencies = [ "frame-support 2.0.0-alpha.3", "frame-system 2.0.0-alpha.3", "impl-trait-for-tuples 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-scale-codec 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "sp-authorship 2.0.0-alpha.3", "sp-core 2.0.0-alpha.3", "sp-inherents 2.0.0-alpha.3", @@ -793,7 +793,7 @@ dependencies = [ "frame-benchmarking 2.0.0-alpha.3", "frame-support 2.0.0-alpha.3", "frame-system 2.0.0-alpha.3", - "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-scale-codec 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", "sp-io 2.0.0-alpha.3", "sp-runtime 2.0.0-alpha.3", @@ -806,7 +806,7 @@ version = "2.0.0-alpha.3" dependencies = [ "frame-support 2.0.0-alpha.3", "frame-system 2.0.0-alpha.3", - "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-scale-codec 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", "sp-core 2.0.0-alpha.3", "sp-io 2.0.0-alpha.3", @@ -823,7 +823,7 @@ dependencies = [ "frame-system 2.0.0-alpha.3", "impl-trait-for-tuples 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", "pallet-timestamp 2.0.0-alpha.3", - "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-scale-codec 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", "sp-io 2.0.0-alpha.3", "sp-runtime 2.0.0-alpha.3", @@ -841,7 +841,7 @@ dependencies = [ "pallet-authorship 2.0.0-alpha.3", "pallet-indices 2.0.0-alpha.3", "pallet-session 2.0.0-alpha.3", - "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-scale-codec 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "rand 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", "sp-application-crypto 2.0.0-alpha.3", @@ -851,6 +851,7 @@ dependencies = [ "sp-runtime 2.0.0-alpha.3", "sp-staking 2.0.0-alpha.3", "sp-std 2.0.0-alpha.3", + "static_assertions 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -866,7 +867,7 @@ dependencies = [ "pallet-staking 2.0.0-alpha.3", "pallet-staking-reward-curve 2.0.0-alpha.3", "pallet-timestamp 2.0.0-alpha.3", - "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-scale-codec 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "rand 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)", "sp-core 2.0.0-alpha.3", "sp-io 2.0.0-alpha.3", @@ -893,7 +894,7 @@ dependencies = [ "frame-support 2.0.0-alpha.3", "frame-system 2.0.0-alpha.3", "impl-trait-for-tuples 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-scale-codec 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", "sp-inherents 2.0.0-alpha.3", "sp-io 2.0.0-alpha.3", @@ -904,19 +905,19 @@ dependencies = [ [[package]] name = "parity-scale-codec" -version = "1.1.2" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "arrayvec 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", "bitvec 0.15.2 (registry+https://github.com/rust-lang/crates.io-index)", "byte-slice-cast 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-scale-codec-derive 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-scale-codec-derive 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "parity-scale-codec-derive" -version = "1.1.1" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "proc-macro-crate 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1369,7 +1370,7 @@ name = "sp-api" version = "2.0.0-alpha.3" dependencies = [ "hash-db 0.15.2 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-scale-codec 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "sp-api-proc-macro 2.0.0-alpha.3", "sp-core 2.0.0-alpha.3", "sp-runtime 2.0.0-alpha.3", @@ -1393,7 +1394,7 @@ dependencies = [ name = "sp-application-crypto" version = "2.0.0-alpha.3" dependencies = [ - "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-scale-codec 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", "sp-core 2.0.0-alpha.3", "sp-io 2.0.0-alpha.3", @@ -1406,7 +1407,7 @@ version = "2.0.0-alpha.3" dependencies = [ "integer-sqrt 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", "num-traits 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-scale-codec 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", "sp-debug-derive 2.0.0-alpha.3", "sp-std 2.0.0-alpha.3", @@ -1416,7 +1417,7 @@ dependencies = [ name = "sp-authorship" version = "2.0.0-alpha.3" dependencies = [ - "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-scale-codec 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "sp-inherents 2.0.0-alpha.3", "sp-runtime 2.0.0-alpha.3", "sp-std 2.0.0-alpha.3", @@ -1438,7 +1439,7 @@ dependencies = [ "libsecp256k1 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "num-traits 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-scale-codec 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "parity-util-mem 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", "parking_lot 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", "primitive-types 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1484,7 +1485,7 @@ name = "sp-inherents" version = "2.0.0-alpha.3" dependencies = [ "derive_more 0.99.3 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-scale-codec 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "parking_lot 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", "sp-core 2.0.0-alpha.3", "sp-std 2.0.0-alpha.3", @@ -1497,7 +1498,7 @@ dependencies = [ "hash-db 0.15.2 (registry+https://github.com/rust-lang/crates.io-index)", "libsecp256k1 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-scale-codec 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "sp-core 2.0.0-alpha.3", "sp-externalities 0.8.0-alpha.3", "sp-runtime-interface 2.0.0-alpha.3", @@ -1529,7 +1530,7 @@ dependencies = [ name = "sp-phragmen" version = "2.0.0-alpha.3" dependencies = [ - "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-scale-codec 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", "sp-core 2.0.0-alpha.3", "sp-phragmen-compact 2.0.0-dev", @@ -1553,7 +1554,7 @@ version = "2.0.0-alpha.3" dependencies = [ "impl-trait-for-tuples 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-scale-codec 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "parity-util-mem 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", "paste 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", "rand 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1570,7 +1571,7 @@ dependencies = [ name = "sp-runtime-interface" version = "2.0.0-alpha.3" dependencies = [ - "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-scale-codec 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "primitive-types 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", "sp-externalities 0.8.0-alpha.3", "sp-runtime-interface-proc-macro 2.0.0-alpha.3", @@ -1594,7 +1595,7 @@ dependencies = [ name = "sp-staking" version = "2.0.0-alpha.3" dependencies = [ - "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-scale-codec 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "sp-runtime 2.0.0-alpha.3", "sp-std 2.0.0-alpha.3", ] @@ -1606,7 +1607,7 @@ dependencies = [ "hash-db 0.15.2 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "num-traits 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-scale-codec 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "parking_lot 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", "rand 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)", "sp-core 2.0.0-alpha.3", @@ -1636,7 +1637,7 @@ name = "sp-timestamp" version = "2.0.0-alpha.3" dependencies = [ "impl-trait-for-tuples 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-scale-codec 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "sp-api 2.0.0-alpha.3", "sp-inherents 2.0.0-alpha.3", "sp-runtime 2.0.0-alpha.3", @@ -1650,7 +1651,7 @@ version = "2.0.0-alpha.3" dependencies = [ "hash-db 0.15.2 (registry+https://github.com/rust-lang/crates.io-index)", "memory-db 0.19.0 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-scale-codec 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "sp-core 2.0.0-alpha.3", "sp-std 2.0.0-alpha.3", "trie-db 0.20.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1662,7 +1663,7 @@ name = "sp-version" version = "2.0.0-alpha.3" dependencies = [ "impl-serde 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-scale-codec 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", "sp-runtime 2.0.0-alpha.3", "sp-std 2.0.0-alpha.3", @@ -1673,7 +1674,7 @@ name = "sp-wasm-interface" version = "2.0.0-alpha.3" dependencies = [ "impl-trait-for-tuples 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-scale-codec 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "sp-std 2.0.0-alpha.3", "wasmi 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -2136,8 +2137,8 @@ dependencies = [ "checksum num-traits 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)" = "c62be47e61d1842b9170f0fdeec8eba98e60e90e5446449a0545e5152acd7096" "checksum once_cell 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b1c601810575c99596d4afc46f78a678c80105117c379eb3650cf99b8a21ce5b" "checksum opaque-debug 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "2839e79665f131bdb5782e51f2c6c9599c133c6098982a54c794358bf432529c" -"checksum parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "f747c06d9f3b2ad387ac881b9667298c81b1243aa9833f086e05996937c35507" -"checksum parity-scale-codec-derive 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "34e513ff3e406f3ede6796dcdc83d0b32ffb86668cea1ccf7363118abeb00476" +"checksum parity-scale-codec 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "f509c5e67ca0605ee17dcd3f91ef41cadd685c75a298fb6261b781a5acb3f910" +"checksum parity-scale-codec-derive 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "5a0ec292e92e8ec7c58e576adacc1e3f399c597c8f263c42f18420abe58e7245" "checksum parity-util-mem 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ef1476e40bf8f5c6776e9600983435821ca86eb9819d74a6207cca69d091406a" "checksum parity-util-mem-derive 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "f557c32c6d268a07c921471619c0295f5efad3a0e76d4f97a05c091a51d110b2" "checksum parity-wasm 0.41.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ddfc878dac00da22f8f61e7af3157988424567ab01d9920b962ef7dcbd7cd865" diff --git a/frame/staking/src/lib.rs b/frame/staking/src/lib.rs index afc2821320..31e1b24ada 100644 --- a/frame/staking/src/lib.rs +++ b/frame/staking/src/lib.rs @@ -645,7 +645,7 @@ pub struct ElectionResult { /// Flat list of new exposures, to be updated in the [`Exposure`] storage. exposures: Vec<(AccountId, Exposure)>, /// Type of the result. This is kept on chain only to track and report the best score's - /// submission type. An optimisation can could remove this. + /// submission type. An optimisation could remove this. compute: ElectionCompute, } -- GitLab From bad64ce5af5a2f4ca9290640867d691df2e9006d Mon Sep 17 00:00:00 2001 From: Shawn Tabrizi Date: Wed, 4 Mar 2020 18:21:42 +0200 Subject: [PATCH 095/301] A Pallet for Benchmarking Common Runtime Operations (#4902) * Benchmark pallet * Add a bunch more benchmarks * do nothing test * new benchmarks * Clean up extra tests * Encode and Decode Vec * Starting to migrate benchmarks to macro * Use macro * Remove call and storage * Update Cargo.toml * Add storage recalc benchmark * Add support for custom functions in benchmark! macro * Reset DB for storage recalc * Feedback from review * Add more comments * Remove benchmark pallet from node * Fix cargo files * Fix comments * Change `crate` to `super` * missed one * Use results of benchmark encode/decode * Pass generic to extra functions * reset macro to master * Update lib.rs * Update to use standard syntax --- Cargo.lock | 14 ++ Cargo.toml | 1 + client/network/src/protocol/sync/blocks.rs | 1 - frame/balances/src/benchmarking.rs | 2 +- frame/benchmark/Cargo.toml | 29 ++++ frame/benchmark/src/benchmarking.rs | 131 +++++++++++++++ frame/benchmark/src/lib.rs | 177 +++++++++++++++++++++ frame/benchmarking/src/lib.rs | 7 +- frame/example/src/lib.rs | 2 +- frame/identity/src/benchmarking.rs | 2 +- frame/timestamp/src/benchmarking.rs | 1 - 11 files changed, 359 insertions(+), 8 deletions(-) create mode 100644 frame/benchmark/Cargo.toml create mode 100644 frame/benchmark/src/benchmarking.rs create mode 100644 frame/benchmark/src/lib.rs diff --git a/Cargo.lock b/Cargo.lock index a7fdd2b4c9..4489d0d280 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3966,6 +3966,20 @@ dependencies = [ "sp-std", ] +[[package]] +name = "pallet-benchmark" +version = "2.0.0-alpha.3" +dependencies = [ + "frame-benchmarking", + "frame-support", + "frame-system", + "parity-scale-codec", + "serde", + "sp-io", + "sp-runtime", + "sp-std", +] + [[package]] name = "pallet-collective" version = "2.0.0-alpha.3" diff --git a/Cargo.toml b/Cargo.toml index 1ac2beb052..0459bc8ebb 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -62,6 +62,7 @@ members = [ "frame/babe", "frame/balances", "frame/benchmarking", + "frame/benchmark", "frame/collective", "frame/contracts", "frame/contracts/rpc", diff --git a/client/network/src/protocol/sync/blocks.rs b/client/network/src/protocol/sync/blocks.rs index 279150a225..31b798ace2 100644 --- a/client/network/src/protocol/sync/blocks.rs +++ b/client/network/src/protocol/sync/blocks.rs @@ -14,7 +14,6 @@ // You should have received a copy of the GNU General Public License // along with Substrate. If not, see . -use std::mem; use std::cmp; use std::ops::Range; use std::collections::{HashMap, BTreeMap}; diff --git a/frame/balances/src/benchmarking.rs b/frame/balances/src/benchmarking.rs index 371692b650..2473ce2920 100644 --- a/frame/balances/src/benchmarking.rs +++ b/frame/balances/src/benchmarking.rs @@ -20,7 +20,7 @@ use super::*; use frame_system::RawOrigin; use frame_benchmarking::{benchmarks, account}; -use sp_runtime::traits::{Bounded, Dispatchable}; +use sp_runtime::traits::Bounded; use crate::Module as Balances; diff --git a/frame/benchmark/Cargo.toml b/frame/benchmark/Cargo.toml new file mode 100644 index 0000000000..bf237d992c --- /dev/null +++ b/frame/benchmark/Cargo.toml @@ -0,0 +1,29 @@ +[package] +name = "pallet-benchmark" +version = "2.0.0-alpha.3" +authors = ["Parity Technologies "] +edition = "2018" +license = "GPL-3.0" + +[dependencies] +serde = { version = "1.0.101", optional = true } +codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } +sp-std = { version = "2.0.0-alpha.3", default-features = false, path = "../../primitives/std" } +sp-io = { version = "2.0.0-alpha.3", default-features = false, path = "../../primitives/io" } +sp-runtime = { version = "2.0.0-alpha.3", default-features = false, path = "../../primitives/runtime" } +frame-support = { version = "2.0.0-alpha.3", default-features = false, path = "../support" } +frame-system = { version = "2.0.0-alpha.3", default-features = false, path = "../system" } +frame-benchmarking = { version = "2.0.0-alpha.3", default-features = false, path = "../benchmarking" } + +[features] +default = ["std"] +std = [ + "serde", + "codec/std", + "sp-std/std", + "sp-io/std", + "sp-runtime/std", + "frame-support/std", + "frame-system/std", + "frame-benchmarking/std", +] diff --git a/frame/benchmark/src/benchmarking.rs b/frame/benchmark/src/benchmarking.rs new file mode 100644 index 0000000000..29f9e8ee97 --- /dev/null +++ b/frame/benchmark/src/benchmarking.rs @@ -0,0 +1,131 @@ +// Copyright 2020 Parity Technologies (UK) Ltd. +// This file is part of Substrate. + +// Substrate is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Substrate is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Substrate. If not, see . + +//! Benchmarks for common FRAME Pallet operations. + +use super::*; + +use frame_system::RawOrigin; +use sp_std::prelude::*; +use frame_benchmarking::{benchmarks, account}; + +use crate::Module as Benchmark; + +const SEED: u32 = 0; + +benchmarks! { + _ { + let m in 1 .. 1000 => { + let origin = RawOrigin::Signed(account("member", m, SEED)); + Benchmark::::add_member_list(origin.into())? + }; + let i in 1 .. 1000 => { + MyMap::insert(i, i); + }; + let d in 1 .. 1000 => { + for i in 0..d { + for j in 0..100 { + MyDoubleMap::insert(i, j, d); + } + } + }; + } + + add_member_list { + let m in ...; + }: _(RawOrigin::Signed(account("member", m + 1, SEED))) + + append_member_list { + let m in ...; + }: _(RawOrigin::Signed(account("member", m + 1, SEED))) + + read_value { + let n in 1 .. 1000; + MyValue::put(n); + }: _(RawOrigin::Signed(account("user", 0, SEED)), n) + + put_value { + let n in 1 .. 1000; + }: _(RawOrigin::Signed(account("user", 0, SEED)), n) + + exists_value { + let n in 1 .. 1000; + MyValue::put(n); + }: _(RawOrigin::Signed(account("user", 0, SEED)), n) + + remove_value { + let i in ...; + }: _(RawOrigin::Signed(account("user", 0, SEED)), i) + + read_map { + let i in ...; + }: _(RawOrigin::Signed(account("user", 0, SEED)), i) + + insert_map { + let n in 1 .. 1000; + }: _(RawOrigin::Signed(account("user", 0, SEED)), n) + + contains_key_map { + let i in ...; + }: _(RawOrigin::Signed(account("user", 0, SEED)), i) + + remove_prefix { + let d in ...; + }: _(RawOrigin::Signed(account("user", 0, SEED)), d) + + do_nothing { + let n in 1 .. 1000; + }: _(RawOrigin::Signed(account("user", 0, SEED)), n) + + encode_accounts { + let a in 1 .. 1000; + let mut accounts = Vec::new(); + for _ in 0..a { + accounts.push(account::("encode", a, SEED)); + } + }: _(RawOrigin::Signed(account("user", 0, SEED)), accounts) + + decode_accounts { + let a in 1 .. 1000; + let mut accounts = Vec::new(); + for _ in 0..a { + accounts.push(account::("encode", a, SEED)); + } + let bytes = accounts.encode(); + }: _(RawOrigin::Signed(account("user", 0, SEED)), bytes) + + // Custom implementation to handle benchmarking of storage recalculation. + // Puts `repeat` number of items into random storage keys, and then times how + // long it takes to recalculate the storage root. + storage_root { + let z in 0 .. 10000; + }: { + for index in 0 .. z { + let random = (index).using_encoded(sp_io::hashing::blake2_256); + sp_io::storage::set(&random, &random); + } + } + + // Custom implementation to handle benchmarking of calling a host function. + // Will check how long it takes to call `current_time()`. + current_time { + let z in 0 .. 1000; + }: { + for _ in 0 .. z { + let _ = frame_benchmarking::benchmarking::current_time(); + } + } +} diff --git a/frame/benchmark/src/lib.rs b/frame/benchmark/src/lib.rs new file mode 100644 index 0000000000..ef7731eea4 --- /dev/null +++ b/frame/benchmark/src/lib.rs @@ -0,0 +1,177 @@ +// Copyright 2020 Parity Technologies (UK) Ltd. +// This file is part of Substrate. + +// Substrate is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Substrate is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Substrate. If not, see . + +//! A pallet that contains common runtime patterns in an isolated manner. +//! This pallet is **not** meant to be used in a production blockchain, just +//! for benchmarking and testing purposes. + +#![cfg_attr(not(feature = "std"), no_std)] + +use frame_support::{decl_module, decl_storage, decl_event, decl_error}; +use frame_support::traits::Currency; +use frame_system::{self as system, ensure_signed}; +use codec::{Encode, Decode}; +use sp_std::prelude::Vec; + +pub mod benchmarking; + +/// Type alias for currency balance. +pub type BalanceOf = <::Currency as Currency<::AccountId>>::Balance; + +/// The pallet's configuration trait. +pub trait Trait: system::Trait { + type Event: From> + Into<::Event>; + type Currency: Currency; +} + +// This pallet's storage items. +decl_storage! { + trait Store for Module as Benchmark { + MyMemberList: Vec; + MyMemberMap: map hasher(blake2_256) T::AccountId => bool; + MyValue: u32; + MyMap: map hasher(blake2_256) u32 => u32; + MyDoubleMap: double_map hasher(blake2_256) u32, hasher(blake2_256) u32 => u32; + } +} + +// The pallet's events +decl_event!( + pub enum Event where AccountId = ::AccountId { + Dummy(u32, AccountId), + } +); + +// The pallet's errors +decl_error! { + pub enum Error for Module { + } +} + +// The pallet's dispatchable functions. +decl_module! { + /// The module declaration. + pub struct Module for enum Call where origin: T::Origin { + type Error = Error; + + fn deposit_event() = default; + + /// Do nothing. + pub fn do_nothing(_origin, input: u32) { + if input > 0 { + return Ok(()); + } + } + + /// Read a value from storage value `repeat` number of times. + /// Note the first `get()` read here will pull from the underlying + /// storage database, however, the `repeat` calls will all pull from the + /// storage overlay cache. You must consider this when analyzing the + /// results of the benchmark. + pub fn read_value(_origin, repeat: u32) { + for _ in 0..repeat { + MyValue::get(); + } + } + + /// Put a value into a storage value. + pub fn put_value(_origin, repeat: u32) { + for r in 0..repeat { + MyValue::put(r); + } + } + + /// Read a value from storage `repeat` number of times. + /// Note the first `exists()` read here will pull from the underlying + /// storage database, however, the `repeat` calls will all pull from the + /// storage overlay cache. You must consider this when analyzing the + /// results of the benchmark. + pub fn exists_value(_origin, repeat: u32) { + for _ in 0..repeat { + MyValue::exists(); + } + } + + /// Remove a value from storage `repeat` number of times. + pub fn remove_value(_origin, repeat: u32) { + for r in 0..repeat { + MyMap::remove(r); + } + } + + /// Read a value from storage map `repeat` number of times. + pub fn read_map(_origin, repeat: u32) { + for r in 0..repeat { + MyMap::get(r); + } + } + + /// Insert a value into a map. + pub fn insert_map(_origin, repeat: u32) { + for r in 0..repeat { + MyMap::insert(r, r); + } + } + + /// Check is a map contains a value `repeat` number of times. + pub fn contains_key_map(_origin, repeat: u32) { + for r in 0..repeat { + MyMap::contains_key(r); + } + } + + /// Read a value from storage `repeat` number of times. + pub fn remove_prefix(_origin, repeat: u32) { + for r in 0..repeat { + MyDoubleMap::remove_prefix(r); + } + } + + // Add user to the list. + pub fn add_member_list(origin) { + let who = ensure_signed(origin)?; + MyMemberList::::mutate(|x| x.push(who)); + } + + // Append user to the list. + pub fn append_member_list(origin) { + let who = ensure_signed(origin)?; + MyMemberList::::append(&[who])?; + } + + // Encode a vector of accounts to bytes. + pub fn encode_accounts(_origin, accounts: Vec) { + let bytes = accounts.encode(); + + // In an attempt to tell the compiler not to optimize away this benchmark, we will use + // the result of encoding the accounts. + if bytes.is_empty() { + frame_support::print("You are encoding zero accounts."); + } + } + + // Decode bytes into a vector of accounts. + pub fn decode_accounts(_origin, bytes: Vec) { + let accounts: Vec = Decode::decode(&mut bytes.as_slice()).map_err(|_| "Could not decode")?; + + // In an attempt to tell the compiler not to optimize away this benchmark, we will use + // the result of decoding the bytes. + if accounts.is_empty() { + frame_support::print("You are decoding zero bytes."); + } + } + } +} diff --git a/frame/benchmarking/src/lib.rs b/frame/benchmarking/src/lib.rs index f7e98336b2..a18048d305 100644 --- a/frame/benchmarking/src/lib.rs +++ b/frame/benchmarking/src/lib.rs @@ -23,6 +23,7 @@ mod utils; pub use utils::*; #[doc(hidden)] pub use sp_io::storage::root as storage_root; +pub use sp_runtime::traits::Dispatchable; /// Construct pallet benchmarks for weighing dispatchables. /// @@ -79,14 +80,14 @@ pub use sp_io::storage::root as storage_root; /// } /// /// // first dispatchable: foo; this is a user dispatchable and operates on a `u8` vector of -/// // size `l`, which we allow to be initialised as usual. +/// // size `l`, which we allow to be initialized as usual. /// foo { /// let caller = account::(b"caller", 0, benchmarks_seed); /// let l = ...; /// }: _(Origin::Signed(caller), vec![0u8; l]) /// /// // second dispatchable: bar; this is a root dispatchable and accepts a `u8` vector of size -/// // `l`. We don't want it preininitialised like before so we override using the `=> ()` notation. +/// // `l`. We don't want it pre-initialized like before so we override using the `=> ()` notation. /// // In this case, we explicitly name the call using `bar` instead of `_`. /// bar { /// let l = _ .. _ => (); @@ -157,7 +158,7 @@ macro_rules! benchmarks_iter { ) => { $crate::benchmarks_iter! { { $( $common )* } ( $( $names )* ) $name { $( $code )* }: { - Call::::$dispatch($($arg),*).dispatch($origin.into())?; + as $crate::Dispatchable>::dispatch(Call::::$dispatch($($arg),*), $origin.into())?; } $( $rest )* } }; diff --git a/frame/example/src/lib.rs b/frame/example/src/lib.rs index 57d6c97729..826538ae58 100644 --- a/frame/example/src/lib.rs +++ b/frame/example/src/lib.rs @@ -263,7 +263,7 @@ use frame_benchmarking::{benchmarks, account}; use frame_system::{self as system, ensure_signed, ensure_root, RawOrigin}; use codec::{Encode, Decode}; use sp_runtime::{ - traits::{SignedExtension, Bounded, SaturatedConversion, Dispatchable}, + traits::{SignedExtension, Bounded, SaturatedConversion}, transaction_validity::{ ValidTransaction, TransactionValidityError, InvalidTransaction, TransactionValidity, }, diff --git a/frame/identity/src/benchmarking.rs b/frame/identity/src/benchmarking.rs index 20ff66f0db..b7a81956a5 100644 --- a/frame/identity/src/benchmarking.rs +++ b/frame/identity/src/benchmarking.rs @@ -21,7 +21,7 @@ use super::*; use frame_system::RawOrigin; use sp_io::hashing::blake2_256; use frame_benchmarking::benchmarks; -use sp_runtime::traits::{Bounded, Dispatchable}; +use sp_runtime::traits::Bounded; use crate::Module as Identity; diff --git a/frame/timestamp/src/benchmarking.rs b/frame/timestamp/src/benchmarking.rs index 52b589773e..5f69cdbe7e 100644 --- a/frame/timestamp/src/benchmarking.rs +++ b/frame/timestamp/src/benchmarking.rs @@ -22,7 +22,6 @@ use sp_std::prelude::*; use frame_system::RawOrigin; use frame_benchmarking::benchmarks; -use sp_runtime::traits::Dispatchable; const MAX_TIME: u32 = 100; -- GitLab From c3ff85d13b8b660c2c4eb850209c06a9397bed3e Mon Sep 17 00:00:00 2001 From: Benjamin Kampmann Date: Wed, 4 Mar 2020 17:22:02 +0100 Subject: [PATCH 096/301] Drop db-cache default from 1gig to 32mb (#5128) --- client/cli/src/params/import_params.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/cli/src/params/import_params.rs b/client/cli/src/params/import_params.rs index 36c62bc979..f7f68d68fb 100644 --- a/client/cli/src/params/import_params.rs +++ b/client/cli/src/params/import_params.rs @@ -55,7 +55,7 @@ pub struct ImportParams { pub execution_strategies: ExecutionStrategies, /// Limit the memory the database cache can use. - #[structopt(long = "db-cache", value_name = "MiB", default_value = "1024")] + #[structopt(long = "db-cache", value_name = "MiB", default_value = "32")] pub database_cache_size: u32, /// Specify the state cache size. -- GitLab From 046c22c133baadd57f8aa60e601be4d4ac9b9f86 Mon Sep 17 00:00:00 2001 From: Benjamin Kampmann Date: Wed, 4 Mar 2020 20:24:17 +0100 Subject: [PATCH 097/301] Forget peerset manager nodes after 5mn (#5108) * Forget peerstore nodes after 5mn * Bump to one hour * Also bump on rediscover --- client/peerset/src/lib.rs | 27 +++++++--- client/peerset/src/peersstate.rs | 84 ++++++++++++++++++++++++++++---- 2 files changed, 95 insertions(+), 16 deletions(-) diff --git a/client/peerset/src/lib.rs b/client/peerset/src/lib.rs index 53e3b35297..bd6c19a62d 100644 --- a/client/peerset/src/lib.rs +++ b/client/peerset/src/lib.rs @@ -23,7 +23,7 @@ use std::{collections::{HashSet, HashMap}, collections::VecDeque}; use futures::{prelude::*, channel::mpsc}; use log::{debug, error, trace}; use serde_json::json; -use std::{pin::Pin, task::Context, task::Poll}; +use std::{pin::Pin, task::{Context, Poll}, time::Duration}; use wasm_timer::Instant; pub use libp2p::PeerId; @@ -34,6 +34,9 @@ const BANNED_THRESHOLD: i32 = 82 * (i32::min_value() / 100); const DISCONNECT_REPUTATION_CHANGE: i32 = -256; /// Reserved peers group ID const RESERVED_NODES: &'static str = "reserved"; +/// Amount of time between the moment we disconnect from a node and the moment we remove it from +/// the list. +const FORGET_AFTER: Duration = Duration::from_secs(3600); #[derive(Debug)] enum Action { @@ -310,10 +313,11 @@ impl Peerset { /// Updates the value of `self.latest_time_update` and performs all the updates that happen /// over time, such as reputation increases for staying connected. fn update_time(&mut self) { + let now = Instant::now(); + // We basically do `(now - self.latest_update).as_secs()`, except that by the way we do it // we know that we're not going to miss seconds because of rounding to integers. let secs_diff = { - let now = Instant::now(); let elapsed_latest = self.latest_time_update - self.created; let elapsed_now = now - self.created; self.latest_time_update = now; @@ -345,10 +349,16 @@ impl Peerset { peer.set_reputation(after) } peersstate::Peer::NotConnected(mut peer) => { - let before = peer.reputation(); - let after = reput_tick(before); - trace!(target: "peerset", "Fleeting {}: {} -> {}", peer_id, before, after); - peer.set_reputation(after) + if peer.reputation() == 0 && + peer.last_connected_or_discovered() + FORGET_AFTER < now + { + peer.forget_peer(); + } else { + let before = peer.reputation(); + let after = reput_tick(before); + trace!(target: "peerset", "Fleeting {}: {} -> {}", peer_id, before, after); + peer.set_reputation(after) + } } peersstate::Peer::Unknown(_) => unreachable!("We iterate over known peers; qed") }; @@ -414,7 +424,10 @@ impl Peerset { let not_connected = match self.data.peer(&peer_id) { // If we're already connected, don't answer, as the docs mention. peersstate::Peer::Connected(_) => return, - peersstate::Peer::NotConnected(entry) => entry, + peersstate::Peer::NotConnected(mut entry) => { + entry.bump_last_connected_or_discovered(); + entry + }, peersstate::Peer::Unknown(entry) => entry.discover(), }; diff --git a/client/peerset/src/peersstate.rs b/client/peerset/src/peersstate.rs index 96a6698734..7abf17a5f8 100644 --- a/client/peerset/src/peersstate.rs +++ b/client/peerset/src/peersstate.rs @@ -17,8 +17,9 @@ //! Contains the state storage behind the peerset. use libp2p::PeerId; +use log::{error, warn}; use std::{borrow::Cow, collections::{HashSet, HashMap}}; -use log::warn; +use wasm_timer::Instant; /// State storage behind the peerset. /// @@ -69,7 +70,9 @@ struct Node { impl Default for Node { fn default() -> Node { Node { - connection_state: ConnectionState::NotConnected, + connection_state: ConnectionState::NotConnected { + last_connected: Instant::now(), + }, reputation: 0, } } @@ -83,7 +86,11 @@ enum ConnectionState { /// We are connected through an outgoing connection. Out, /// We are not connected to this node. - NotConnected, + NotConnected { + /// When we were last connected to the node, or if we were never connected when we + /// discovered it. + last_connected: Instant, + }, } impl ConnectionState { @@ -92,7 +99,7 @@ impl ConnectionState { match self { ConnectionState::In => true, ConnectionState::Out => true, - ConnectionState::NotConnected => false, + ConnectionState::NotConnected { .. } => false, } } } @@ -212,11 +219,13 @@ impl PeersState { match node.connection_state { ConnectionState::In => self.num_in -= 1, ConnectionState::Out => self.num_out -= 1, - ConnectionState::NotConnected => + ConnectionState::NotConnected { .. } => debug_assert!(false, "State inconsistency: disconnecting a disconnected node") } } - node.connection_state = ConnectionState::NotConnected; + node.connection_state = ConnectionState::NotConnected { + last_connected: Instant::now(), + }; } else { warn!(target: "peerset", "Attempting to disconnect unknown peer {}", peer_id); } @@ -292,7 +301,7 @@ impl PeersState { match peer.connection_state { ConnectionState::In => self.num_in += 1, ConnectionState::Out => self.num_out += 1, - ConnectionState::NotConnected => {}, + ConnectionState::NotConnected { .. } => {}, } } } @@ -305,7 +314,7 @@ impl PeersState { match peer.connection_state { ConnectionState::In => self.num_in -= 1, ConnectionState::Out => self.num_out -= 1, - ConnectionState::NotConnected => {}, + ConnectionState::NotConnected { .. } => {}, } } } @@ -467,6 +476,45 @@ impl<'a> NotConnectedPeer<'a> { self.peer_id.into_owned() } + /// Bumps the value that `last_connected_or_discovered` would return to now, even if we + /// didn't connect or disconnect. + pub fn bump_last_connected_or_discovered(&mut self) { + let state = match self.state.nodes.get_mut(&*self.peer_id) { + Some(s) => s, + None => return, + }; + + if let ConnectionState::NotConnected { last_connected } = &mut state.connection_state { + *last_connected = Instant::now(); + } + } + + /// Returns when we were last connected to this peer, or when we discovered it if we were + /// never connected. + /// + /// Guaranteed to be earlier than calling `Instant::now()` after the function returns. + pub fn last_connected_or_discovered(&self) -> Instant { + let state = match self.state.nodes.get(&*self.peer_id) { + Some(s) => s, + None => { + error!( + target: "peerset", + "State inconsistency with {}; not connected after borrow", + self.peer_id + ); + return Instant::now(); + } + }; + + match state.connection_state { + ConnectionState::NotConnected { last_connected } => last_connected, + _ => { + error!(target: "peerset", "State inconsistency with {}", self.peer_id); + Instant::now() + } + } + } + /// Tries to set the peer as connected as an outgoing connection. /// /// If there are enough slots available, switches the node to "connected" and returns `Ok`. If @@ -518,6 +566,22 @@ impl<'a> NotConnectedPeer<'a> { pub fn add_reputation(&mut self, modifier: i32) { self.state.add_reputation(&self.peer_id, modifier) } + + /// Un-discovers the peer. Removes it from the list. + pub fn forget_peer(self) -> UnknownPeer<'a> { + if self.state.nodes.remove(&*self.peer_id).is_none() { + error!( + target: "peerset", + "State inconsistency with {} when forgetting peer", + self.peer_id + ); + } + + UnknownPeer { + parent: self.state, + peer_id: self.peer_id, + } + } } /// A peer that we have never heard of. @@ -533,7 +597,9 @@ impl<'a> UnknownPeer<'a> { /// values using the `NotConnectedPeer` that this method returns. pub fn discover(self) -> NotConnectedPeer<'a> { self.parent.nodes.insert(self.peer_id.clone().into_owned(), Node { - connection_state: ConnectionState::NotConnected, + connection_state: ConnectionState::NotConnected { + last_connected: Instant::now(), + }, reputation: 0, }); -- GitLab From a193a19d57c894ddec17b95dc8f2b8f379be0d11 Mon Sep 17 00:00:00 2001 From: Benjamin Kampmann Date: Wed, 4 Mar 2020 20:26:16 +0100 Subject: [PATCH 098/301] Don't include `:code` by default in storage proofs (#5060) * Adds test to verify that the runtime currently is always contained in the proof * Start passing the runtime wasm code from the outside * Fix compilation * More build fixes * Make the test work as expected now :) * Last fixes * Fixes benchmarks * Review feedback * Apply suggestions from code review Co-Authored-By: Sergei Pepyakin * Review feedback * Fix compilation Co-authored-by: Sergei Pepyakin --- Cargo.lock | 4 + bin/node/executor/benches/bench.rs | 16 ++- bin/node/executor/tests/common.rs | 6 +- .../basic-authorship/src/basic_authorship.rs | 3 +- client/block-builder/Cargo.toml | 4 + client/block-builder/src/lib.rs | 54 ++++++++- client/executor/src/lib.rs | 8 +- client/executor/src/native_executor.rs | 16 ++- client/executor/src/wasm_runtime.rs | 41 +++---- client/network/src/chain.rs | 22 ++-- .../src/protocol/light_client_handler.rs | 19 +-- client/network/src/protocol/light_dispatch.rs | 6 +- client/src/call_executor.rs | 11 +- client/src/client.rs | 16 ++- client/src/genesis.rs | 14 +++ client/src/light/backend.rs | 4 +- client/src/light/call_executor.rs | 12 +- client/src/light/fetcher.rs | 11 +- frame/system/benches/bench.rs | 2 +- primitives/api/test/Cargo.toml | 1 + primitives/api/test/tests/runtime_calls.rs | 7 ++ primitives/core/src/traits.rs | 65 +++++++++++ primitives/runtime/src/generic/block.rs | 11 +- primitives/state-machine/src/backend.rs | 23 +++- primitives/state-machine/src/lib.rs | 66 +++++++++-- .../state-machine/src/proving_backend.rs | 100 +--------------- primitives/trie/src/lib.rs | 2 + primitives/trie/src/storage_proof.rs | 109 ++++++++++++++++++ test-utils/runtime/src/system.rs | 8 +- utils/frame/benchmarking-cli/Cargo.toml | 1 + utils/frame/benchmarking-cli/src/lib.rs | 1 + 31 files changed, 480 insertions(+), 183 deletions(-) create mode 100644 primitives/trie/src/storage_proof.rs diff --git a/Cargo.lock b/Cargo.lock index 4489d0d280..ee69ca599e 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1478,6 +1478,7 @@ dependencies = [ "sc-executor", "sc-service", "sp-runtime", + "sp-state-machine", "structopt", ] @@ -5652,6 +5653,8 @@ dependencies = [ "sp-core", "sp-runtime", "sp-state-machine", + "sp-trie", + "substrate-test-runtime-client", ] [[package]] @@ -6955,6 +6958,7 @@ dependencies = [ "sp-api", "sp-blockchain", "sp-consensus", + "sp-core", "sp-runtime", "sp-state-machine", "sp-version", diff --git a/bin/node/executor/benches/bench.rs b/bin/node/executor/benches/bench.rs index 034c7c6759..c411bec851 100644 --- a/bin/node/executor/benches/bench.rs +++ b/bin/node/executor/benches/bench.rs @@ -25,8 +25,8 @@ use node_runtime::constants::currency::*; use node_testing::keyring::*; use sp_core::{Blake2Hasher, NativeOrEncoded, NeverNativeValue}; use sp_core::storage::well_known_keys; -use sp_core::traits::CodeExecutor; -use frame_support::Hashable; +use sp_core::traits::{CodeExecutor, RuntimeCode}; +use frame_support::Hashable; use sp_state_machine::TestExternalities as CoreTestExternalities; use sc_executor::{NativeExecutor, RuntimeInfo, WasmExecutionMethod, Externalities}; @@ -89,9 +89,12 @@ fn construct_block( digest: Default::default(), }; + let runtime_code = RuntimeCode::from_externalities(ext).expect("`ext` provides `:code`"); + // execute the block to get the real header. executor.call::<_, NeverNativeValue, fn() -> _>( ext, + &runtime_code, "Core_initialize_block", &header.encode(), true, @@ -101,6 +104,7 @@ fn construct_block( for i in extrinsics.iter() { executor.call::<_, NeverNativeValue, fn() -> _>( ext, + &runtime_code, "BlockBuilder_apply_extrinsic", &i.encode(), true, @@ -110,6 +114,7 @@ fn construct_block( let header = match executor.call::<_, NeverNativeValue, fn() -> _>( ext, + &runtime_code, "BlockBuilder_finalize_block", &[0u8;0], true, @@ -165,7 +170,9 @@ fn bench_execute_block(c: &mut Criterion) { // Get the runtime version to initialize the runtimes cache. { let mut test_ext = new_test_ext(&genesis_config); - executor.runtime_version(&mut test_ext.ext()); + let runtime_code = RuntimeCode::from_externalities(&test_ext.ext()) + .expect("`test_ext` provides `:code`"); + executor.runtime_version(&mut test_ext.ext(), &runtime_code).unwrap(); } let blocks = test_blocks(&genesis_config, &executor); @@ -173,9 +180,12 @@ fn bench_execute_block(c: &mut Criterion) { b.iter_batched_ref( || new_test_ext(&genesis_config), |test_ext| { + let runtime_code = RuntimeCode::from_externalities(&test_ext.ext()) + .expect("`test_ext` provides `:code`"); for block in blocks.iter() { executor.call::<_, NeverNativeValue, fn() -> _>( &mut test_ext.ext(), + &runtime_code, "Core_execute_block", &block.0, use_native, diff --git a/bin/node/executor/tests/common.rs b/bin/node/executor/tests/common.rs index 090d2ee5d4..4b83825722 100644 --- a/bin/node/executor/tests/common.rs +++ b/bin/node/executor/tests/common.rs @@ -18,8 +18,7 @@ use codec::{Encode, Decode}; use frame_support::Hashable; use sp_state_machine::TestExternalities as CoreTestExternalities; use sp_core::{ - Blake2Hasher, NeverNativeValue, NativeOrEncoded, - traits::CodeExecutor, + Blake2Hasher, NeverNativeValue, NativeOrEncoded, traits::{CodeExecutor, RuntimeCode}, }; use sp_runtime::{ApplyExtrinsicResult, traits::Header as HeaderT}; use sc_executor::{NativeExecutor, WasmExecutionMethod}; @@ -74,8 +73,11 @@ pub fn executor_call< native_call: Option, ) -> (Result>, bool) { let mut t = t.ext(); + let runtime_code = RuntimeCode::from_externalities(&t) + .expect("Code should be part of the externalities"); executor().call::<_, R, NC>( &mut t, + &runtime_code, method, data, use_native, diff --git a/client/basic-authorship/src/basic_authorship.rs b/client/basic-authorship/src/basic_authorship.rs index 231d025591..a816a5498f 100644 --- a/client/basic-authorship/src/basic_authorship.rs +++ b/client/basic-authorship/src/basic_authorship.rs @@ -231,7 +231,8 @@ impl ProposerInner debug!("[{:?}] Pushed to the block.", pending_tx_hash); } Err(sp_blockchain::Error::ApplyExtrinsicFailed(sp_blockchain::ApplyExtrinsicFailed::Validity(e))) - if e.exhausted_resources() => { + if e.exhausted_resources() => + { if is_first { debug!("[{:?}] Invalid transaction: FullBlock on empty block", pending_tx_hash); unqueue_invalid.push(pending_tx_hash); diff --git a/client/block-builder/Cargo.toml b/client/block-builder/Cargo.toml index 745669c033..dd4ebcb07f 100644 --- a/client/block-builder/Cargo.toml +++ b/client/block-builder/Cargo.toml @@ -19,3 +19,7 @@ sp-core = { version = "2.0.0-alpha.2", path = "../../primitives/core" } sp-block-builder = { version = "2.0.0-alpha.2", path = "../../primitives/block-builder" } sc-client-api = { version = "2.0.0-alpha.2", path = "../api" } codec = { package = "parity-scale-codec", version = "1.2.0", features = ["derive"] } + +[dev-dependencies] +substrate-test-runtime-client = { path = "../../test-utils/runtime/client" } +sp-trie = { version = "2.0.0-alpha.2", path = "../../primitives/trie" } diff --git a/client/block-builder/src/lib.rs b/client/block-builder/src/lib.rs index 4c14f3716f..c9b2efbea9 100644 --- a/client/block-builder/src/lib.rs +++ b/client/block-builder/src/lib.rs @@ -152,12 +152,20 @@ where /// Push onto the block's list of extrinsics. /// - /// This will treat incoming extrinsic `xt` as trusted and skip signature check (for signed transactions). - pub fn push_trusted(&mut self, xt: ::Extrinsic) -> Result<(), ApiErrorFor> { + /// This will treat incoming extrinsic `xt` as trusted and skip signature check + /// (for signed transactions). + pub fn push_trusted( + &mut self, + xt: ::Extrinsic, + ) -> Result<(), ApiErrorFor> { self.push_internal(xt, true) } - fn push_internal(&mut self, xt: ::Extrinsic, skip_signature: bool) -> Result<(), ApiErrorFor> { + fn push_internal( + &mut self, + xt: ::Extrinsic, + skip_signature: bool, + ) -> Result<(), ApiErrorFor> { let block_id = &self.block_id; let extrinsics = &mut self.extrinsics; @@ -175,7 +183,7 @@ where ExecutionContext::BlockConstruction, xt.clone(), )? - } else { + } else { api.apply_extrinsic_with_context( block_id, ExecutionContext::BlockConstruction, @@ -241,3 +249,41 @@ where }) } } + +#[cfg(test)] +mod tests { + use super::*; + use sp_blockchain::HeaderBackend; + use sp_core::Blake2Hasher; + use sp_state_machine::Backend; + use substrate_test_runtime_client::{DefaultTestClientBuilderExt, TestClientBuilderExt}; + + #[test] + fn block_building_storage_proof_does_not_include_runtime_by_default() { + let builder = substrate_test_runtime_client::TestClientBuilder::new(); + let backend = builder.backend(); + let client = builder.build(); + + let block = BlockBuilder::new( + &client, + client.info().best_hash, + client.info().best_number, + RecordProof::Yes, + Default::default(), + &*backend, + ).unwrap().build().unwrap(); + + let proof = block.proof.expect("Proof is build on request"); + + let backend = sp_state_machine::create_proof_check_backend::( + block.storage_changes.transaction_storage_root, + proof, + ).unwrap(); + + assert!( + backend.storage(&sp_core::storage::well_known_keys::CODE) + .unwrap_err() + .contains("Database missing expected key"), + ); + } +} diff --git a/client/executor/src/lib.rs b/client/executor/src/lib.rs index af53ed9183..f8761caa98 100644 --- a/client/executor/src/lib.rs +++ b/client/executor/src/lib.rs @@ -110,8 +110,12 @@ pub trait RuntimeInfo { /// Native runtime information. fn native_version(&self) -> &NativeVersion; - /// Extract RuntimeVersion of given :code block - fn runtime_version (&self, ext: &mut E) -> error::Result; + /// Extract [`RuntimeVersion`](sp_version::RuntimeVersion) of the given `runtime_code`. + fn runtime_version( + &self, + ext: &mut E, + runtime_code: &sp_core::traits::RuntimeCode, + ) -> error::Result; } #[cfg(test)] diff --git a/client/executor/src/native_executor.rs b/client/executor/src/native_executor.rs index 1364b753db..5a41b65971 100644 --- a/client/executor/src/native_executor.rs +++ b/client/executor/src/native_executor.rs @@ -20,7 +20,7 @@ use crate::{ }; use sp_version::{NativeVersion, RuntimeVersion}; use codec::{Decode, Encode}; -use sp_core::{NativeOrEncoded, traits::{CodeExecutor, Externalities}}; +use sp_core::{NativeOrEncoded, traits::{CodeExecutor, Externalities, RuntimeCode}}; use log::trace; use std::{result, cell::RefCell, panic::{UnwindSafe, AssertUnwindSafe}, sync::Arc}; use sp_wasm_interface::{HostFunctions, Function}; @@ -130,6 +130,7 @@ impl NativeExecutor { fn with_runtime( &self, ext: &mut E, + runtime_code: &RuntimeCode, f: impl for<'a> FnOnce( AssertUnwindSafe<&'a mut (dyn WasmRuntime + 'static)>, &'a RuntimeVersion, @@ -138,8 +139,9 @@ impl NativeExecutor { ) -> Result where E: Externalities { RUNTIMES_CACHE.with(|cache| { let mut cache = cache.borrow_mut(); - let (runtime, version, code_hash) = cache.fetch_runtime( + let (runtime, version) = cache.fetch_runtime( ext, + runtime_code, self.fallback_method, self.default_heap_pages, &*self.host_functions, @@ -151,7 +153,7 @@ impl NativeExecutor { match f(runtime, version, ext) { Ok(res) => res, Err(e) => { - cache.invalidate_runtime(self.fallback_method, code_hash); + cache.invalidate_runtime(self.fallback_method, runtime_code.hash.clone()); Err(e) } } @@ -179,8 +181,9 @@ impl RuntimeInfo for NativeExecutor { fn runtime_version( &self, ext: &mut E, + runtime_code: &RuntimeCode, ) -> Result { - self.with_runtime(ext, |_runtime, version, _ext| Ok(Ok(version.clone()))) + self.with_runtime(ext, runtime_code, |_runtime, version, _ext| Ok(Ok(version.clone()))) } } @@ -195,13 +198,14 @@ impl CodeExecutor for NativeExecutor { >( &self, ext: &mut E, + runtime_code: &RuntimeCode, method: &str, data: &[u8], use_native: bool, native_call: Option, - ) -> (Result>, bool){ + ) -> (Result>, bool) { let mut used_native = false; - let result = self.with_runtime(ext, |mut runtime, onchain_version, mut ext| { + let result = self.with_runtime(ext, runtime_code, |mut runtime, onchain_version, mut ext| { match ( use_native, onchain_version.can_call_with(&self.native_version.runtime_version), diff --git a/client/executor/src/wasm_runtime.rs b/client/executor/src/wasm_runtime.rs index 9d54246ee0..ab7b219dbf 100644 --- a/client/executor/src/wasm_runtime.rs +++ b/client/executor/src/wasm_runtime.rs @@ -22,7 +22,7 @@ use crate::error::{Error, WasmError}; use log::{trace, warn}; use codec::Decode; -use sp_core::{storage::well_known_keys, traits::Externalities}; +use sp_core::traits::{Externalities, RuntimeCode}; use sp_version::RuntimeVersion; use std::{collections::hash_map::{Entry, HashMap}, panic::AssertUnwindSafe}; use sc_executor_common::wasm_runtime::WasmRuntime; @@ -86,8 +86,9 @@ impl RuntimesCache { /// /// # Parameters /// - /// `ext` - Externalities to use for the runtime. This is used for setting - /// up an initial runtime instance. + /// `ext` - Externalities to use for the getting the runtime's version call. + /// + /// `runtime_code` - The runtime wasm code used setup the runtime. /// /// `default_heap_pages` - Number of 64KB pages to allocate for Wasm execution. /// @@ -95,8 +96,8 @@ impl RuntimesCache { /// /// # Return value /// - /// If no error occurred a tuple `(&mut WasmRuntime, H256)` is - /// returned. `H256` is the hash of the runtime code. + /// If no error occurred a tuple `(&mut WasmRuntime, RuntimeVerion)` is + /// returned. /// /// In case of failure one of two errors can be returned: /// @@ -107,20 +108,14 @@ impl RuntimesCache { pub fn fetch_runtime( &mut self, ext: &mut E, + runtime_code: &RuntimeCode, wasm_method: WasmExecutionMethod, default_heap_pages: u64, host_functions: &[&'static dyn Function], - ) -> Result<(&mut (dyn WasmRuntime + 'static), &RuntimeVersion, Vec), Error> { - let code_hash = ext - .original_storage_hash(well_known_keys::CODE) - .ok_or(Error::InvalidCode("`CODE` not found in storage.".into()))?; - - let heap_pages = ext - .storage(well_known_keys::HEAP_PAGES) - .and_then(|pages| u64::decode(&mut &pages[..]).ok()) - .unwrap_or(default_heap_pages); + ) -> Result<(&mut (dyn WasmRuntime + 'static), &RuntimeVersion), Error> { + let heap_pages = runtime_code.heap_pages.unwrap_or(default_heap_pages); - let result = match self.instances.entry((wasm_method, code_hash.clone())) { + let result = match self.instances.entry((wasm_method, runtime_code.hash.clone())) { Entry::Occupied(o) => { let result = o.into_mut(); if let Ok(ref mut cached_runtime) = result { @@ -142,6 +137,7 @@ impl RuntimesCache { *result = create_versioned_wasm_runtime( ext, wasm_method, + runtime_code, heap_pages, host_functions.into(), ); @@ -157,6 +153,7 @@ impl RuntimesCache { let result = create_versioned_wasm_runtime( ext, wasm_method, + runtime_code, heap_pages, host_functions.into(), ); @@ -168,7 +165,7 @@ impl RuntimesCache { }; result.as_mut() - .map(|entry| (entry.runtime.as_mut(), &entry.version, code_hash)) + .map(|entry| (entry.runtime.as_mut(), &entry.version)) .map_err(|ref e| Error::InvalidCode(format!("{:?}", e))) } @@ -209,13 +206,17 @@ pub fn create_wasm_runtime_with_code( fn create_versioned_wasm_runtime( ext: &mut E, wasm_method: WasmExecutionMethod, + runtime_code: &RuntimeCode, heap_pages: u64, host_functions: Vec<&'static dyn Function>, ) -> Result { - let code = ext - .original_storage(well_known_keys::CODE) - .ok_or(WasmError::CodeNotFound)?; - let mut runtime = create_wasm_runtime_with_code(wasm_method, heap_pages, &code, host_functions, false)?; + let mut runtime = create_wasm_runtime_with_code( + wasm_method, + heap_pages, + &runtime_code.code, + host_functions, + false, + )?; // Call to determine runtime version. let version_result = { diff --git a/client/network/src/chain.rs b/client/network/src/chain.rs index b991a0e652..e85b5af79b 100644 --- a/client/network/src/chain.rs +++ b/client/network/src/chain.rs @@ -62,7 +62,12 @@ pub trait Client: Send + Sync { ) -> Result; /// Get method execution proof. - fn execution_proof(&self, block: &Block::Hash, method: &str, data: &[u8]) -> Result<(Vec, StorageProof), Error>; + fn execution_proof( + &self, + block: &Block::Hash, + method: &str, + data: &[u8], + ) -> Result<(Vec, StorageProof), Error>; /// Get key changes proof. fn key_changes_proof( @@ -152,11 +157,7 @@ impl Client for SubstrateClient where method: &str, data: &[u8], ) -> Result<(Vec, StorageProof), Error> { - (self as &SubstrateClient).execution_proof( - &BlockId::Hash(block.clone()), - method, - data, - ) + SubstrateClient::execution_proof(self, &BlockId::Hash(block.clone()), method, data) } fn key_changes_proof( @@ -168,7 +169,14 @@ impl Client for SubstrateClient where storage_key: Option<&StorageKey>, key: &StorageKey, ) -> Result, Error> { - (self as &SubstrateClient).key_changes_proof(first, last, min, max, storage_key, key) + (self as &SubstrateClient).key_changes_proof( + first, + last, + min, + max, + storage_key, + key, + ) } fn is_descendent_of(&self, base: &Block::Hash, block: &Block::Hash) -> Result { diff --git a/client/network/src/protocol/light_client_handler.rs b/client/network/src/protocol/light_client_handler.rs index b531f3515a..e4996b7c8b 100644 --- a/client/network/src/protocol/light_client_handler.rs +++ b/client/network/src/protocol/light_client_handler.rs @@ -254,13 +254,12 @@ where B: Block, { /// Construct a new light client handler. - pub fn new - ( cfg: Config - , chain: Arc> - , checker: Arc> - , peerset: sc_peerset::PeersetHandle - ) -> Self - { + pub fn new( + cfg: Config, + chain: Arc>, + checker: Arc>, + peerset: sc_peerset::PeersetHandle, + ) -> Self { LightClientHandler { config: cfg, chain, @@ -425,7 +424,8 @@ where log::trace!("remote call request from {} ({} at {:?})", peer, request.method, - request.block); + request.block, + ); let block = Decode::decode(&mut request.block.as_ref())?; @@ -436,7 +436,8 @@ where peer, request.method, request.block, - e); + e, + ); StorageProof::empty() } }; diff --git a/client/network/src/protocol/light_dispatch.rs b/client/network/src/protocol/light_dispatch.rs index aff220b6e0..f3da2c2a96 100644 --- a/client/network/src/protocol/light_dispatch.rs +++ b/client/network/src/protocol/light_dispatch.rs @@ -750,7 +750,11 @@ pub mod tests { } } - fn check_execution_proof(&self, _: &RemoteCallRequest, _: StorageProof) -> ClientResult> { + fn check_execution_proof( + &self, + _: &RemoteCallRequest, + _: StorageProof, + ) -> ClientResult> { match self.ok { true => Ok(vec![42]), false => Err(ClientError::Backend("Test error".into())), diff --git a/client/src/call_executor.rs b/client/src/call_executor.rs index 18ad5b113e..659e015239 100644 --- a/client/src/call_executor.rs +++ b/client/src/call_executor.rs @@ -25,7 +25,7 @@ use sp_state_machine::{ }; use sc_executor::{RuntimeVersion, RuntimeInfo, NativeVersion}; use sp_externalities::Extensions; -use sp_core::{NativeOrEncoded, NeverNativeValue, traits::CodeExecutor}; +use sp_core::{NativeOrEncoded, NeverNativeValue, traits::{CodeExecutor, RuntimeCode}}; use sp_api::{ProofRecorder, InitializeBlock, StorageTransactionCache}; use sc_client_api::{backend, call_executor::CallExecutor}; @@ -90,6 +90,7 @@ where method, call_data, extensions.unwrap_or_default(), + &sp_state_machine::backend::get_runtime_code(&state)?, ).execute_using_consensus_failure_handler::<_, NeverNativeValue, fn() -> _>( strategy.get_manager(), None, @@ -140,6 +141,8 @@ where // make sure to destroy state before exiting this function let mut state = self.backend.state_at(*at)?; + let runtime_code = sp_state_machine::backend::get_runtime_code(&state)?; + let result = match recorder { Some(recorder) => state.as_trie_backend() .ok_or_else(|| @@ -160,6 +163,7 @@ where method, call_data, extensions.unwrap_or_default(), + &runtime_code, ) // TODO: https://github.com/paritytech/substrate/issues/4455 // .with_storage_transaction_cache(storage_transaction_cache.as_mut().map(|c| &mut **c)) @@ -173,6 +177,7 @@ where method, call_data, extensions.unwrap_or_default(), + &runtime_code, ) .with_storage_transaction_cache(storage_transaction_cache.as_mut().map(|c| &mut **c)) .execute_using_consensus_failure_handler(execution_manager, native_call) @@ -197,7 +202,8 @@ where changes_trie_state, None, ); - let version = self.executor.runtime_version(&mut ext); + let wasm_code = RuntimeCode::from_externalities(&ext).map_err(|e| e.to_string().into()); + let version = wasm_code.and_then(|c| self.executor.runtime_version(&mut ext, &c)); { let _lock = self.backend.get_import_lock().read(); self.backend.destroy_state(state)?; @@ -218,6 +224,7 @@ where &self.executor, method, call_data, + &sp_state_machine::backend::get_runtime_code(trie_state)?, ) .map_err(Into::into) } diff --git a/client/src/client.rs b/client/src/client.rs index d461a17ded..68970cbb2a 100644 --- a/client/src/client.rs +++ b/client/src/client.rs @@ -41,8 +41,7 @@ use sp_runtime::{ use sp_state_machine::{ DBValue, Backend as StateBackend, ChangesTrieAnchorBlockId, prove_read, prove_child_read, ChangesTrieRootsStorage, ChangesTrieStorage, - ChangesTrieConfigurationRange, key_changes, key_changes_proof, StorageProof, - merge_storage_proofs, + ChangesTrieConfigurationRange, key_changes, key_changes_proof, }; use sc_executor::{RuntimeVersion, RuntimeInfo}; use sp_consensus::{ @@ -55,6 +54,7 @@ use sp_blockchain::{self as blockchain, well_known_cache_keys::Id as CacheKeyId, HeaderMetadata, CachedHeaderMetadata, }; +use sp_trie::StorageProof; use sp_api::{ CallApiAt, ConstructRuntimeApi, Core as CoreApi, ApiExt, ApiRef, ProvideRuntimeApi, @@ -482,9 +482,19 @@ impl Client where method: &str, call_data: &[u8] ) -> sp_blockchain::Result<(Vec, StorageProof)> { + // Make sure we include the `:code` and `:heap_pages` in the execution proof to be + // backwards compatible. + // + // TODO: Remove when solved: https://github.com/paritytech/substrate/issues/5047 + let code_proof = self.read_proof( + id, + &[well_known_keys::CODE.to_vec(), well_known_keys::HEAP_PAGES.to_vec()], + )?; + let state = self.state_at(id)?; let header = self.prepare_environment_block(id)?; prove_execution(state, header, &self.executor, method, call_data) + .map(|p| (p.0, StorageProof::merge(vec![p.1, code_proof]))) } /// Reads given header and generates CHT-based header proof. @@ -769,7 +779,7 @@ impl Client where Ok(()) }, ())?; - Ok(merge_storage_proofs(proofs)) + Ok(StorageProof::merge(proofs)) } /// Generates CHT-based proof for roots of changes tries at given blocks (that are part of single CHT). diff --git a/client/src/genesis.rs b/client/src/genesis.rs index fccdd71817..006ed00c43 100644 --- a/client/src/genesis.rs +++ b/client/src/genesis.rs @@ -89,6 +89,8 @@ mod tests { }; let hash = header.hash(); let mut overlay = OverlayedChanges::default(); + let runtime_code = sp_state_machine::backend::get_runtime_code(&backend) + .expect("Code is part of the backend"); StateMachine::new( backend, @@ -98,6 +100,7 @@ mod tests { "Core_initialize_block", &header.encode(), Default::default(), + &runtime_code, ).execute( ExecutionStrategy::NativeElseWasm, ).unwrap(); @@ -111,6 +114,7 @@ mod tests { "BlockBuilder_apply_extrinsic", &tx.encode(), Default::default(), + &runtime_code, ).execute( ExecutionStrategy::NativeElseWasm, ).unwrap(); @@ -124,6 +128,7 @@ mod tests { "BlockBuilder_finalize_block", &[], Default::default(), + &runtime_code, ).execute( ExecutionStrategy::NativeElseWasm, ).unwrap(); @@ -161,6 +166,8 @@ mod tests { let backend = InMemoryBackend::from(storage); let (b1data, _b1hash) = block1(genesis_hash, &backend); + let runtime_code = sp_state_machine::backend::get_runtime_code(&backend) + .expect("Code is part of the backend"); let mut overlay = OverlayedChanges::default(); let _ = StateMachine::new( @@ -171,6 +178,7 @@ mod tests { "Core_execute_block", &b1data, Default::default(), + &runtime_code, ).execute( ExecutionStrategy::NativeElseWasm, ).unwrap(); @@ -189,6 +197,8 @@ mod tests { let backend = InMemoryBackend::from(storage); let (b1data, _b1hash) = block1(genesis_hash, &backend); + let runtime_code = sp_state_machine::backend::get_runtime_code(&backend) + .expect("Code is part of the backend"); let mut overlay = OverlayedChanges::default(); let _ = StateMachine::new( @@ -199,6 +209,7 @@ mod tests { "Core_execute_block", &b1data, Default::default(), + &runtime_code, ).execute( ExecutionStrategy::AlwaysWasm, ).unwrap(); @@ -217,6 +228,8 @@ mod tests { let backend = InMemoryBackend::from(storage); let (b1data, _b1hash) = block1(genesis_hash, &backend); + let runtime_code = sp_state_machine::backend::get_runtime_code(&backend) + .expect("Code is part of the backend"); let mut overlay = OverlayedChanges::default(); let r = StateMachine::new( @@ -227,6 +240,7 @@ mod tests { "Core_execute_block", &b1data, Default::default(), + &runtime_code, ).execute( ExecutionStrategy::NativeElseWasm, ); diff --git a/client/src/light/backend.rs b/client/src/light/backend.rs index ad9f43587e..48434bb41d 100644 --- a/client/src/light/backend.rs +++ b/client/src/light/backend.rs @@ -172,9 +172,9 @@ impl ClientBackend for Backend> match maybe_val { Some(val) => self.blockchain.storage().insert_aux( &[(&key[..], &val[..])], - ::std::iter::empty(), + std::iter::empty(), )?, - None => self.blockchain.storage().insert_aux(::std::iter::empty(), &[&key[..]])?, + None => self.blockchain.storage().insert_aux(std::iter::empty(), &[&key[..]])?, } } } diff --git a/client/src/light/call_executor.rs b/client/src/light/call_executor.rs index 01a93c7821..a440f5ad67 100644 --- a/client/src/light/call_executor.rs +++ b/client/src/light/call_executor.rs @@ -29,7 +29,6 @@ use sp_externalities::Extensions; use sp_state_machine::{ self, Backend as StateBackend, OverlayedChanges, ExecutionStrategy, create_proof_check_backend, execution_proof_check_on_trie_backend, ExecutionManager, StorageProof, - merge_storage_proofs, }; use hash_db::Hasher; @@ -206,7 +205,7 @@ pub fn prove_execution( method, call_data, )?; - let total_proof = merge_storage_proofs(vec![init_proof, exec_proof]); + let total_proof = StorageProof::merge(vec![init_proof, exec_proof]); Ok((result, total_proof)) } @@ -259,12 +258,17 @@ fn check_execution_proof_with_make_header( &trie_backend, &mut changes, executor, "Core_initialize_block", &next_header.encode(), + &runtime_code, )?; // execute method @@ -274,7 +278,9 @@ fn check_execution_proof_with_make_header> LightDataChecker { H::Out: Ord + codec::Codec, { // all the checks are sharing the same storage - let storage = create_proof_check_backend_storage(remote_roots_proof); + let storage = remote_roots_proof.into_memory_db(); // remote_roots.keys() are sorted => we can use this to group changes tries roots // that are belongs to the same CHT @@ -187,7 +187,8 @@ impl> LightDataChecker { local_cht_root, block, remote_changes_trie_root, - &proving_backend)?; + &proving_backend, + )?; // and return the storage to use in following checks storage = proving_backend.into_storage(); @@ -270,7 +271,7 @@ impl FetchChecker for LightDataChecker body: Vec ) -> ClientResult> { // TODO: #2621 - let extrinsics_root = HashFor::::ordered_trie_root( + let extrinsics_root = HashFor::::ordered_trie_root( body.iter().map(Encode::encode).collect(), ); if *request.header.extrinsics_root() == extrinsics_root { @@ -294,7 +295,7 @@ struct RootsStorage<'a, Number: AtLeast32Bit, Hash: 'a> { impl<'a, H, Number, Hash> ChangesTrieRootsStorage for RootsStorage<'a, Number, Hash> where H: Hasher, - Number: ::std::fmt::Display + ::std::hash::Hash + Clone + AtLeast32Bit + Encode + Decode + Send + Sync + 'static, + Number: std::fmt::Display + std::hash::Hash + Clone + AtLeast32Bit + Encode + Decode + Send + Sync + 'static, Hash: 'a + Send + Sync + Clone + AsRef<[u8]>, { fn build_anchor( diff --git a/frame/system/benches/bench.rs b/frame/system/benches/bench.rs index cfcaa6f64a..90a4ad1d34 100644 --- a/frame/system/benches/bench.rs +++ b/frame/system/benches/bench.rs @@ -18,7 +18,7 @@ use criterion::{Criterion, criterion_group, criterion_main, black_box}; use frame_system as system; use frame_support::{decl_module, decl_event, impl_outer_origin, impl_outer_event, weights::Weight}; use sp_core::H256; -use sp_runtime::{Perbill, PerThing, traits::{BlakeTwo256, IdentityLookup}, testing::Header}; +use sp_runtime::{Perbill, traits::{BlakeTwo256, IdentityLookup}, testing::Header}; mod module { use super::*; diff --git a/primitives/api/test/Cargo.toml b/primitives/api/test/Cargo.toml index 6d2207c178..3b41e28cf3 100644 --- a/primitives/api/test/Cargo.toml +++ b/primitives/api/test/Cargo.toml @@ -24,6 +24,7 @@ rustversion = "1.0.0" [dev-dependencies] criterion = "0.3.0" substrate-test-runtime-client = { version = "2.0.0-dev", path = "../../../test-utils/runtime/client" } +sp-core = { version = "2.0.0-alpha.1", path = "../../core" } [[bench]] name = "bench" diff --git a/primitives/api/test/tests/runtime_calls.rs b/primitives/api/test/tests/runtime_calls.rs index 6a3af7469c..64c20473d1 100644 --- a/primitives/api/test/tests/runtime_calls.rs +++ b/primitives/api/test/tests/runtime_calls.rs @@ -164,6 +164,12 @@ fn record_proof_works() { let block_id = BlockId::Number(client.chain_info().best_number); let storage_root = longest_chain.best_chain().unwrap().state_root().clone(); + let runtime_code = sp_core::traits::RuntimeCode { + code: client.code_at(&block_id).unwrap(), + hash: vec![1], + heap_pages: None, + }; + let transaction = Transfer { amount: 1000, nonce: 0, @@ -192,5 +198,6 @@ fn record_proof_works() { &executor, "Core_execute_block", &block.encode(), + &runtime_code, ).expect("Executes block while using the proof backend"); } diff --git a/primitives/core/src/traits.rs b/primitives/core/src/traits.rs index bd02d39fb5..297430cfa6 100644 --- a/primitives/core/src/traits.rs +++ b/primitives/core/src/traits.rs @@ -98,6 +98,7 @@ pub trait CodeExecutor: Sized + Send + Sync + CallInWasm + Clone + 'static { >( &self, ext: &mut E, + runtime_code: &RuntimeCode, method: &str, data: &[u8], use_native: bool, @@ -105,6 +106,70 @@ pub trait CodeExecutor: Sized + Send + Sync + CallInWasm + Clone + 'static { ) -> (Result, Self::Error>, bool); } + +/// The Wasm code of a Substrate runtime. +#[derive(Debug, Clone, codec::Encode, codec::Decode)] +pub struct RuntimeCode { + /// The actual Wasm code as binary blob. + pub code: Vec, + /// The optional heap pages this `code` should be executed with. + /// + /// If `None` are given, the default value of the executor will be used. + pub heap_pages: Option, + /// The SCALE encoded hash of `code`. + /// + /// The hashing algorithm isn't that important, as long as all runtime + /// code instances use the same. + pub hash: Vec, +} + +impl PartialEq for RuntimeCode { + fn eq(&self, other: &Self) -> bool { + self.hash == other.hash + } +} + +impl RuntimeCode { + /// Create an `RuntimeCode` instance from the given `Externalities`. + /// + /// Extracts the code and the heap pages using the well known keys. + /// + /// Returns an error if the code could not be found. + pub fn from_externalities(ext: &dyn Externalities) -> Result { + let code = ext.storage(sp_storage::well_known_keys::CODE).ok_or(CodeNotFound)?; + let hash = ext.storage_hash(sp_storage::well_known_keys::CODE).ok_or(CodeNotFound)?; + let heap_pages = ext.storage(sp_storage::well_known_keys::HEAP_PAGES) + .and_then(|hp| codec::Decode::decode(&mut &hp[..]).ok()); + + Ok(Self { + code, + hash, + heap_pages, + }) + } + + /// Create an empty instance. + /// + /// This is only useful for tests that don't want to execute any code. + pub fn empty() -> Self { + Self { + code: Vec::new(), + hash: Vec::new(), + heap_pages: None, + } + } +} + +/// Could not find the `:code` in the externalities while initializing the [`RuntimeCode`]. +#[derive(Debug)] +pub struct CodeNotFound; + +impl std::fmt::Display for CodeNotFound { + fn fmt(&self, f: &mut std::fmt::Formatter) -> Result<(), std::fmt::Error> { + write!(f, "the storage entry `:code` doesn't have any code") + } +} + /// Something that can call a method in a WASM blob. pub trait CallInWasm: Send + Sync { /// Call the given `method` in the given `wasm_blob` using `call_data` (SCALE encoded arguments) diff --git a/primitives/runtime/src/generic/block.rs b/primitives/runtime/src/generic/block.rs index a46396dce0..fb07d6c215 100644 --- a/primitives/runtime/src/generic/block.rs +++ b/primitives/runtime/src/generic/block.rs @@ -25,7 +25,10 @@ use serde::{Deserialize, Serialize}; use sp_std::prelude::*; use sp_core::RuntimeDebug; use crate::codec::{Codec, Encode, Decode}; -use crate::traits::{self, Member, Block as BlockT, Header as HeaderT, MaybeSerialize, MaybeMallocSizeOf}; +use crate::traits::{ + self, Member, Block as BlockT, Header as HeaderT, MaybeSerialize, MaybeMallocSizeOf, + NumberFor, +}; use crate::Justification; /// Something to identify a block. @@ -35,9 +38,9 @@ use crate::Justification; #[cfg_attr(feature = "std", serde(deny_unknown_fields))] pub enum BlockId { /// Identify by block header hash. - Hash(<::Header as HeaderT>::Hash), + Hash(Block::Hash), /// Identify by block number. - Number(<::Header as HeaderT>::Number), + Number(NumberFor), } impl BlockId { @@ -47,7 +50,7 @@ impl BlockId { } /// Create a block ID from a number. - pub fn number(number: ::Number) -> Self { + pub fn number(number: NumberFor) -> Self { BlockId::Number(number) } } diff --git a/primitives/state-machine/src/backend.rs b/primitives/state-machine/src/backend.rs index ca6612a5e9..9db41718ee 100644 --- a/primitives/state-machine/src/backend.rs +++ b/primitives/state-machine/src/backend.rs @@ -18,9 +18,9 @@ use log::warn; use hash_db::Hasher; -use codec::Encode; +use codec::{Decode, Encode}; -use sp_core::storage::{ChildInfo, OwnedChildInfo}; +use sp_core::{traits::RuntimeCode, storage::{ChildInfo, OwnedChildInfo, well_known_keys}}; use sp_trie::{TrieMut, MemoryDB, trie_types::TrieDBMut}; use crate::{ @@ -359,3 +359,22 @@ pub(crate) fn insert_into_memory_db(mdb: &mut MemoryDB, input: I) -> Op Some(root) } + +/// Get the runtime code from the given `backend`. +/// +/// Returns an error if the `:code` could not be found. +pub fn get_runtime_code>(backend: &B) -> Result + where H::Out: Encode, +{ + let code = backend.storage(well_known_keys::CODE) + .ok() + .flatten() + .ok_or("`:code` not found")?; + let hash = H::hash(&code).encode(); + let heap_pages = backend.storage(well_known_keys::HEAP_PAGES) + .ok() + .flatten() + .and_then(|d| Decode::decode(&mut &d[..]).ok()); + + Ok(RuntimeCode { code, hash, heap_pages }) +} diff --git a/primitives/state-machine/src/lib.rs b/primitives/state-machine/src/lib.rs index bb2bb2c52c..2c6245c70d 100644 --- a/primitives/state-machine/src/lib.rs +++ b/primitives/state-machine/src/lib.rs @@ -23,8 +23,8 @@ use log::{warn, trace}; use hash_db::Hasher; use codec::{Decode, Encode, Codec}; use sp_core::{ - storage::ChildInfo, NativeOrEncoded, NeverNativeValue, - traits::{CodeExecutor, CallInWasmExt}, hexdisplay::HexDisplay, + storage::ChildInfo, NativeOrEncoded, NeverNativeValue, hexdisplay::HexDisplay, + traits::{CodeExecutor, CallInWasmExt, RuntimeCode}, }; use overlayed_changes::OverlayedChangeSet; use sp_externalities::Extensions; @@ -42,7 +42,7 @@ mod trie_backend; mod trie_backend_essence; mod stats; -pub use sp_trie::{trie_types::{Layout, TrieDBMut}, TrieMut, DBValue, MemoryDB}; +pub use sp_trie::{trie_types::{Layout, TrieDBMut}, StorageProof, TrieMut, DBValue, MemoryDB}; pub use testing::TestExternalities; pub use basic::BasicExternalities; pub use ext::Ext; @@ -67,8 +67,7 @@ pub use overlayed_changes::{ StorageCollection, ChildStorageCollection, }; pub use proving_backend::{ - create_proof_check_backend, create_proof_check_backend_storage, merge_storage_proofs, - ProofRecorder, ProvingBackend, ProvingBackendRecorder, StorageProof, + create_proof_check_backend, ProofRecorder, ProvingBackend, ProvingBackendRecorder, }; pub use trie_backend_essence::{TrieBackendStorage, Storage}; pub use trie_backend::TrieBackend; @@ -191,6 +190,7 @@ pub struct StateMachine<'a, B, H, N, Exec> changes_trie_state: Option>, _marker: PhantomData<(H, N)>, storage_transaction_cache: Option<&'a mut StorageTransactionCache>, + runtime_code: &'a RuntimeCode, } impl<'a, B, H, N, Exec> StateMachine<'a, B, H, N, Exec> where @@ -209,6 +209,7 @@ impl<'a, B, H, N, Exec> StateMachine<'a, B, H, N, Exec> where method: &'a str, call_data: &'a [u8], mut extensions: Extensions, + runtime_code: &'a RuntimeCode, ) -> Self { extensions.register(CallInWasmExt::new(exec.clone())); @@ -222,6 +223,7 @@ impl<'a, B, H, N, Exec> StateMachine<'a, B, H, N, Exec> where changes_trie_state, _marker: PhantomData, storage_transaction_cache: None, + runtime_code, } } @@ -292,6 +294,7 @@ impl<'a, B, H, N, Exec> StateMachine<'a, B, H, N, Exec> where let (result, was_native) = self.exec.call( &mut ext, + self.runtime_code, self.method, self.call_data, use_native, @@ -436,6 +439,7 @@ pub fn prove_execution( exec: &Exec, method: &str, call_data: &[u8], + runtime_code: &RuntimeCode, ) -> Result<(Vec, StorageProof), Box> where B: Backend, @@ -446,7 +450,14 @@ where { let trie_backend = backend.as_trie_backend() .ok_or_else(|| Box::new(ExecutionError::UnableToGenerateProof) as Box)?; - prove_execution_on_trie_backend::<_, _, N, _>(trie_backend, overlay, exec, method, call_data) + prove_execution_on_trie_backend::<_, _, N, _>( + trie_backend, + overlay, + exec, + method, + call_data, + runtime_code, + ) } /// Prove execution using the given trie backend, overlayed changes, and call executor. @@ -464,6 +475,7 @@ pub fn prove_execution_on_trie_backend( exec: &Exec, method: &str, call_data: &[u8], + runtime_code: &RuntimeCode, ) -> Result<(Vec, StorageProof), Box> where S: trie_backend_essence::TrieBackendStorage, @@ -474,7 +486,14 @@ where { let proving_backend = proving_backend::ProvingBackend::new(trie_backend); let mut sm = StateMachine::<_, H, N, Exec>::new( - &proving_backend, None, overlay, exec, method, call_data, Extensions::default(), + &proving_backend, + None, + overlay, + exec, + method, + call_data, + Extensions::default(), + runtime_code, ); let result = sm.execute_using_consensus_failure_handler::<_, NeverNativeValue, fn() -> _>( @@ -493,6 +512,7 @@ pub fn execution_proof_check( exec: &Exec, method: &str, call_data: &[u8], + runtime_code: &RuntimeCode, ) -> Result, Box> where H: Hasher, @@ -501,7 +521,14 @@ where N: crate::changes_trie::BlockNumber, { let trie_backend = create_proof_check_backend::(root.into(), proof)?; - execution_proof_check_on_trie_backend::<_, N, _>(&trie_backend, overlay, exec, method, call_data) + execution_proof_check_on_trie_backend::<_, N, _>( + &trie_backend, + overlay, + exec, + method, + call_data, + runtime_code, + ) } /// Check execution proof on proving backend, generated by `prove_execution` call. @@ -511,6 +538,7 @@ pub fn execution_proof_check_on_trie_backend( exec: &Exec, method: &str, call_data: &[u8], + runtime_code: &RuntimeCode, ) -> Result, Box> where H: Hasher, @@ -519,7 +547,14 @@ where N: crate::changes_trie::BlockNumber, { let mut sm = StateMachine::<_, H, N, Exec>::new( - trie_backend, None, overlay, exec, method, call_data, Extensions::default(), + trie_backend, + None, + overlay, + exec, + method, + call_data, + Extensions::default(), + runtime_code, ); sm.execute_using_consensus_failure_handler::<_, NeverNativeValue, fn() -> _>( @@ -692,7 +727,9 @@ mod tests { use super::*; use super::ext::Ext; use super::changes_trie::Configuration as ChangesTrieConfig; - use sp_core::{Blake2Hasher, map, traits::Externalities, storage::ChildStorageKey}; + use sp_core::{ + Blake2Hasher, map, traits::{Externalities, RuntimeCode}, storage::ChildStorageKey, + }; #[derive(Clone)] struct DummyCodeExecutor { @@ -714,6 +751,7 @@ mod tests { >( &self, ext: &mut E, + _: &RuntimeCode, _method: &str, _data: &[u8], use_native: bool, @@ -767,6 +805,7 @@ mod tests { fn execute_works() { let backend = trie_backend::tests::test_trie(); let mut overlayed_changes = Default::default(); + let wasm_code = RuntimeCode::empty(); let mut state_machine = StateMachine::new( &backend, @@ -781,6 +820,7 @@ mod tests { "test", &[], Default::default(), + &wasm_code, ); assert_eq!( @@ -794,6 +834,7 @@ mod tests { fn execute_works_with_native_else_wasm() { let backend = trie_backend::tests::test_trie(); let mut overlayed_changes = Default::default(); + let wasm_code = RuntimeCode::empty(); let mut state_machine = StateMachine::new( &backend, @@ -808,6 +849,7 @@ mod tests { "test", &[], Default::default(), + &wasm_code, ); assert_eq!(state_machine.execute(ExecutionStrategy::NativeElseWasm).unwrap(), vec![66]); @@ -818,6 +860,7 @@ mod tests { let mut consensus_failed = false; let backend = trie_backend::tests::test_trie(); let mut overlayed_changes = Default::default(); + let wasm_code = RuntimeCode::empty(); let mut state_machine = StateMachine::new( &backend, @@ -832,6 +875,7 @@ mod tests { "test", &[], Default::default(), + &wasm_code, ); assert!( @@ -864,6 +908,7 @@ mod tests { &executor, "test", &[], + &RuntimeCode::empty(), ).unwrap(); // check proof locally @@ -874,6 +919,7 @@ mod tests { &executor, "test", &[], + &RuntimeCode::empty(), ).unwrap(); // check that both results are correct diff --git a/primitives/state-machine/src/proving_backend.rs b/primitives/state-machine/src/proving_backend.rs index 672ec6ea79..60d891a3f0 100644 --- a/primitives/state-machine/src/proving_backend.rs +++ b/primitives/state-machine/src/proving_backend.rs @@ -18,19 +18,19 @@ use std::sync::Arc; use parking_lot::RwLock; -use codec::{Decode, Encode, Codec}; +use codec::{Decode, Codec}; use log::debug; use hash_db::{Hasher, HashDB, EMPTY_PREFIX, Prefix}; use sp_trie::{ MemoryDB, default_child_trie_root, read_trie_value_with, read_child_trie_value_with, - record_all_keys + record_all_keys, StorageProof, }; pub use sp_trie::Recorder; pub use sp_trie::trie_types::{Layout, TrieError}; use crate::trie_backend::TrieBackend; use crate::trie_backend_essence::{Ephemeral, TrieBackendEssence, TrieBackendStorage}; use crate::{Error, ExecutionError, Backend}; -use std::collections::{HashMap, HashSet}; +use std::collections::HashMap; use crate::DBValue; use sp_core::storage::ChildInfo; @@ -40,82 +40,6 @@ pub struct ProvingBackendRecorder<'a, S: 'a + TrieBackendStorage, H: 'a + Has pub(crate) proof_recorder: &'a mut Recorder, } -/// A proof that some set of key-value pairs are included in the storage trie. The proof contains -/// the storage values so that the partial storage backend can be reconstructed by a verifier that -/// does not already have access to the key-value pairs. -/// -/// The proof consists of the set of serialized nodes in the storage trie accessed when looking up -/// the keys covered by the proof. Verifying the proof requires constructing the partial trie from -/// the serialized nodes and performing the key lookups. -#[derive(Debug, PartialEq, Eq, Clone, Encode, Decode)] -pub struct StorageProof { - trie_nodes: Vec>, -} - -impl StorageProof { - /// Constructs a storage proof from a subset of encoded trie nodes in a storage backend. - pub fn new(trie_nodes: Vec>) -> Self { - StorageProof { trie_nodes } - } - - /// Returns a new empty proof. - /// - /// An empty proof is capable of only proving trivial statements (ie. that an empty set of - /// key-value pairs exist in storage). - pub fn empty() -> Self { - StorageProof { - trie_nodes: Vec::new(), - } - } - - /// Returns whether this is an empty proof. - pub fn is_empty(&self) -> bool { - self.trie_nodes.is_empty() - } - - /// Create an iterator over trie nodes constructed from the proof. The nodes are not guaranteed - /// to be traversed in any particular order. - pub fn iter_nodes(self) -> StorageProofNodeIterator { - StorageProofNodeIterator::new(self) - } -} - -/// An iterator over trie nodes constructed from a storage proof. The nodes are not guaranteed to -/// be traversed in any particular order. -pub struct StorageProofNodeIterator { - inner: > as IntoIterator>::IntoIter, -} - -impl StorageProofNodeIterator { - fn new(proof: StorageProof) -> Self { - StorageProofNodeIterator { - inner: proof.trie_nodes.into_iter(), - } - } -} - -impl Iterator for StorageProofNodeIterator { - type Item = Vec; - - fn next(&mut self) -> Option { - self.inner.next() - } -} - -/// Merges multiple storage proofs covering potentially different sets of keys into one proof -/// covering all keys. The merged proof output may be smaller than the aggregate size of the input -/// proofs due to deduplication of trie nodes. -pub fn merge_storage_proofs(proofs: I) -> StorageProof - where I: IntoIterator -{ - let trie_nodes = proofs.into_iter() - .flat_map(|proof| proof.iter_nodes()) - .collect::>() - .into_iter() - .collect(); - StorageProof { trie_nodes } -} - impl<'a, S, H> ProvingBackendRecorder<'a, S, H> where S: TrieBackendStorage, @@ -222,7 +146,7 @@ impl<'a, S: 'a + TrieBackendStorage, H: 'a + Hasher> ProvingBackend<'a, S, H> let root = essence.root().clone(); let recorder = ProofRecorderBackend { backend: essence.backend_storage(), - proof_recorder: proof_recorder, + proof_recorder, }; ProvingBackend(TrieBackend::new(recorder, root)) } @@ -370,7 +294,7 @@ where H: Hasher, H::Out: Codec, { - let db = create_proof_check_backend_storage(proof); + let db = proof.into_memory_db(); if db.contains(&root, EMPTY_PREFIX) { Ok(TrieBackend::new(db, root)) @@ -379,20 +303,6 @@ where } } -/// Create in-memory storage of proof check backend. -pub fn create_proof_check_backend_storage( - proof: StorageProof, -) -> MemoryDB -where - H: Hasher, -{ - let mut db = MemoryDB::default(); - for item in proof.iter_nodes() { - db.insert(EMPTY_PREFIX, &item); - } - db -} - #[cfg(test)] mod tests { use crate::InMemoryBackend; diff --git a/primitives/trie/src/lib.rs b/primitives/trie/src/lib.rs index f6131c8ed5..80570a9792 100644 --- a/primitives/trie/src/lib.rs +++ b/primitives/trie/src/lib.rs @@ -21,6 +21,7 @@ mod error; mod node_header; mod node_codec; +mod storage_proof; mod trie_stream; use sp_std::boxed::Box; @@ -35,6 +36,7 @@ pub use error::Error; pub use trie_stream::TrieStream; /// The Substrate format implementation of `NodeCodec`. pub use node_codec::NodeCodec; +pub use storage_proof::StorageProof; /// Various re-exports from the `trie-db` crate. pub use trie_db::{ Trie, TrieMut, DBValue, Recorder, CError, Query, TrieLayout, TrieConfiguration, nibble_ops, TrieDBIterator, diff --git a/primitives/trie/src/storage_proof.rs b/primitives/trie/src/storage_proof.rs new file mode 100644 index 0000000000..254adc2fcb --- /dev/null +++ b/primitives/trie/src/storage_proof.rs @@ -0,0 +1,109 @@ +// Copyright 2020 Parity Technologies (UK) Ltd. +// This file is part of Substrate. + +// Parity is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Parity is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Parity. If not, see . + +use sp_std::vec::Vec; +use codec::{Encode, Decode}; +use hash_db::{Hasher, HashDB}; + +/// A proof that some set of key-value pairs are included in the storage trie. The proof contains +/// the storage values so that the partial storage backend can be reconstructed by a verifier that +/// does not already have access to the key-value pairs. +/// +/// The proof consists of the set of serialized nodes in the storage trie accessed when looking up +/// the keys covered by the proof. Verifying the proof requires constructing the partial trie from +/// the serialized nodes and performing the key lookups. +#[derive(Debug, PartialEq, Eq, Clone, Encode, Decode)] +pub struct StorageProof { + trie_nodes: Vec>, +} + +impl StorageProof { + /// Constructs a storage proof from a subset of encoded trie nodes in a storage backend. + pub fn new(trie_nodes: Vec>) -> Self { + StorageProof { trie_nodes } + } + + /// Returns a new empty proof. + /// + /// An empty proof is capable of only proving trivial statements (ie. that an empty set of + /// key-value pairs exist in storage). + pub fn empty() -> Self { + StorageProof { + trie_nodes: Vec::new(), + } + } + + /// Returns whether this is an empty proof. + pub fn is_empty(&self) -> bool { + self.trie_nodes.is_empty() + } + + /// Create an iterator over trie nodes constructed from the proof. The nodes are not guaranteed + /// to be traversed in any particular order. + pub fn iter_nodes(self) -> StorageProofNodeIterator { + StorageProofNodeIterator::new(self) + } + + /// Creates a `MemoryDB` from `Self`. + pub fn into_memory_db(self) -> crate::MemoryDB { + self.into() + } + + /// Merges multiple storage proofs covering potentially different sets of keys into one proof + /// covering all keys. The merged proof output may be smaller than the aggregate size of the input + /// proofs due to deduplication of trie nodes. + pub fn merge(proofs: I) -> Self where I: IntoIterator { + let trie_nodes = proofs.into_iter() + .flat_map(|proof| proof.iter_nodes()) + .collect::>() + .into_iter() + .collect(); + + Self { trie_nodes } + } +} + +/// An iterator over trie nodes constructed from a storage proof. The nodes are not guaranteed to +/// be traversed in any particular order. +pub struct StorageProofNodeIterator { + inner: > as IntoIterator>::IntoIter, +} + +impl StorageProofNodeIterator { + fn new(proof: StorageProof) -> Self { + StorageProofNodeIterator { + inner: proof.trie_nodes.into_iter(), + } + } +} + +impl Iterator for StorageProofNodeIterator { + type Item = Vec; + + fn next(&mut self) -> Option { + self.inner.next() + } +} + +impl From for crate::MemoryDB { + fn from(proof: StorageProof) -> Self { + let mut db = crate::MemoryDB::default(); + for item in proof.iter_nodes() { + db.insert(crate::EMPTY_PREFIX, &item); + } + db + } +} diff --git a/test-utils/runtime/src/system.rs b/test-utils/runtime/src/system.rs index b410d317a1..073e06de81 100644 --- a/test-utils/runtime/src/system.rs +++ b/test-utils/runtime/src/system.rs @@ -338,7 +338,7 @@ mod tests { use sp_io::TestExternalities; use substrate_test_runtime_client::{AccountKeyring, Sr25519Keyring}; use crate::{Header, Transfer, WASM_BINARY}; - use sp_core::{NeverNativeValue, map, traits::CodeExecutor}; + use sp_core::{NeverNativeValue, map, traits::{CodeExecutor, RuntimeCode}}; use sc_executor::{NativeExecutor, WasmExecutionMethod, native_executor_instance}; use sp_io::hashing::twox_128; @@ -401,8 +401,11 @@ mod tests { fn block_import_works_wasm() { block_import_works(|b, ext| { let mut ext = ext.ext(); + let runtime_code = RuntimeCode::from_externalities(&ext) + .expect("Code is part of the externalities"); executor().call::<_, NeverNativeValue, fn() -> _>( &mut ext, + &runtime_code, "Core_execute_block", &b.encode(), false, @@ -494,8 +497,11 @@ mod tests { fn block_import_with_transaction_works_wasm() { block_import_with_transaction_works(|b, ext| { let mut ext = ext.ext(); + let runtime_code = RuntimeCode::from_externalities(&ext) + .expect("Code is part of the externalities"); executor().call::<_, NeverNativeValue, fn() -> _>( &mut ext, + &runtime_code, "Core_execute_block", &b.encode(), false, diff --git a/utils/frame/benchmarking-cli/Cargo.toml b/utils/frame/benchmarking-cli/Cargo.toml index 93c62c3f96..89143ee9fe 100644 --- a/utils/frame/benchmarking-cli/Cargo.toml +++ b/utils/frame/benchmarking-cli/Cargo.toml @@ -16,5 +16,6 @@ sc-client = { version = "0.8.0-alpha.2", path = "../../../client" } sc-client-db = { version = "0.8.0-alpha.2", path = "../../../client/db" } sc-executor = { version = "0.8.0-alpha.2", path = "../../../client/executor" } sp-runtime = { version = "2.0.0-alpha.2", path = "../../../primitives/runtime" } +sp-state-machine = { version = "0.8.0-alpha.2", path = "../../../primitives/state-machine" } structopt = "0.3.8" codec = { version = "1.2.0", package = "parity-scale-codec" } diff --git a/utils/frame/benchmarking-cli/src/lib.rs b/utils/frame/benchmarking-cli/src/lib.rs index 899419e5de..1074944554 100644 --- a/utils/frame/benchmarking-cli/src/lib.rs +++ b/utils/frame/benchmarking-cli/src/lib.rs @@ -121,6 +121,7 @@ impl BenchmarkCmd { self.repeat, ).encode(), Default::default(), + &sp_state_machine::backend::get_runtime_code(&state)?, ) .execute(strategy.into()) .map_err(|e| format!("Error executing runtime benchmark: {:?}", e))?; -- GitLab From b9206e1f969c44270c0ca32f0781863e43418839 Mon Sep 17 00:00:00 2001 From: Gavin Wood Date: Wed, 4 Mar 2020 20:34:33 +0100 Subject: [PATCH 099/301] add ss58 prefix for Acala & Laminar (#5061) --- primitives/core/src/crypto.rs | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/primitives/core/src/crypto.rs b/primitives/core/src/crypto.rs index 3833c8a912..40b9a5ec31 100644 --- a/primitives/core/src/crypto.rs +++ b/primitives/core/src/crypto.rs @@ -436,12 +436,20 @@ ss58_address_format!( (0, "polkadot", "Polkadot Relay-chain, direct checksum, standard account (*25519).") KusamaAccountDirect => (2, "kusama", "Kusama Relay-chain, direct checksum, standard account (*25519).") - DothereumAccountDirect => - (20, "dothereum", "Dothereum Para-chain, direct checksum, standard account (*25519).") - KulupuAccountDirect => - (16, "kulupu", "Kulupu mainnet, direct checksum, standard account (*25519).") EdgewareAccountDirect => (7, "edgeware", "Edgeware mainnet, direct checksum, standard account (*25519).") + KaruraAccountDirect => + (8, "karura", "Acala Karura canary network, direct checksum, standard account (*25519).") + ReynoldsAccountDirect => + (9, "reynolds", "Laminar Reynolds canary network, direct checksum, standard account (*25519).") + AcalaAccountDirect => + (10, "acala", "Acala mainnet, direct checksum, standard account (*25519).") + LaminarAccountDirect => + (11, "laminar", "Laminar mainnet, direct checksum, standard account (*25519).") + KulupuAccountDirect => + (16, "kulupu", "Kulupu mainnet, direct checksum, standard account (*25519).") + DothereumAccountDirect => + (20, "dothereum", "Dothereum Para-chain, direct checksum, standard account (*25519).") CentrifugeAccountDirect => (36, "centrifuge", "Centrifuge Chain mainnet, direct checksum, standard account (*25519).") SubstraTeeAccountDirect => -- GitLab From 76acf5d6a609407bee27cc3c66b5586faac8f09b Mon Sep 17 00:00:00 2001 From: Benjamin Kampmann Date: Thu, 5 Mar 2020 08:51:03 +0100 Subject: [PATCH 100/301] Reduce usage of `Blake2Hasher` (#5132) This reduces the usage of `Blake2Hasher` in the code base and replaces it with `BlakeTwo256`. The most important change is the removal of the custom extern function for `Blake2Hasher`. The runtime `Hash` trait is now also simplified and directly requires that the implementing type implements `Hashable`. --- Cargo.lock | 6 +- bin/node/executor/benches/bench.rs | 7 +- bin/node/executor/tests/basic.rs | 19 ++-- bin/node/executor/tests/common.rs | 14 ++- bin/node/executor/tests/fees.rs | 12 +-- client/api/src/backend.rs | 16 +-- client/api/src/call_executor.rs | 8 +- client/authority-discovery/src/tests.rs | 2 +- client/block-builder/src/lib.rs | 8 +- client/consensus/slots/src/lib.rs | 4 +- client/db/src/bench.rs | 30 +++--- client/db/src/changes_tries_storage.rs | 12 +-- client/db/src/lib.rs | 50 ++++----- client/db/src/light.rs | 6 +- client/db/src/storage_cache.rs | 100 +++++++++--------- client/executor/Cargo.toml | 1 + client/executor/src/integration_tests/mod.rs | 7 +- client/finality-grandpa/src/tests.rs | 8 +- client/rpc/src/state/state_light.rs | 6 +- client/service/src/builder.rs | 8 +- client/src/call_executor.rs | 6 +- client/src/cht.rs | 8 +- client/src/client.rs | 20 ++-- client/src/genesis.rs | 8 +- client/src/in_mem.rs | 16 +-- client/src/lib.rs | 1 - client/src/light/backend.rs | 26 +++-- client/src/light/call_executor.rs | 19 ++-- client/src/light/fetcher.rs | 16 +-- client/src/light/mod.rs | 14 +-- client/transaction-pool/src/api.rs | 3 +- frame/benchmarking/src/tests.rs | 7 +- frame/contracts/src/lib.rs | 2 +- frame/session/src/historical.rs | 6 +- .../api/proc-macro/src/impl_runtime_apis.rs | 18 ++-- primitives/api/src/lib.rs | 22 ++-- primitives/api/test/tests/runtime_calls.rs | 6 +- .../consensus/common/src/block_import.rs | 4 +- primitives/consensus/common/src/lib.rs | 4 +- primitives/core/src/hasher.rs | 26 +---- primitives/core/src/lib.rs | 4 +- primitives/io/src/lib.rs | 51 --------- .../runtime-interface/test-wasm/src/lib.rs | 10 -- primitives/runtime-interface/test/Cargo.toml | 2 +- primitives/runtime-interface/test/src/lib.rs | 7 +- primitives/runtime/Cargo.toml | 2 + .../runtime/src/random_number_generator.rs | 2 +- primitives/runtime/src/traits.rs | 29 ++--- primitives/state-machine/Cargo.toml | 1 + primitives/state-machine/src/basic.rs | 2 +- .../src/changes_trie/changes_iterator.rs | 34 +++--- .../state-machine/src/changes_trie/prune.rs | 26 ++--- .../state-machine/src/in_memory_backend.rs | 3 +- primitives/state-machine/src/lib.rs | 19 ++-- .../state-machine/src/proving_backend.rs | 19 ++-- primitives/state-machine/src/testing.rs | 10 +- primitives/state-machine/src/trie_backend.rs | 11 +- primitives/trie/Cargo.toml | 1 + primitives/trie/benches/bench.rs | 4 +- test-utils/client/src/lib.rs | 6 +- .../runtime/client/src/block_builder_ext.rs | 4 +- test-utils/runtime/client/src/lib.rs | 6 +- test-utils/runtime/client/src/trait_tests.rs | 8 +- test-utils/runtime/src/lib.rs | 6 +- 64 files changed, 372 insertions(+), 451 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index ee69ca599e..6b3fca15e4 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -6045,6 +6045,7 @@ dependencies = [ "sp-externalities", "sp-io", "sp-panic-handler", + "sp-runtime", "sp-runtime-interface", "sp-serializer", "sp-state-machine", @@ -7273,6 +7274,7 @@ dependencies = [ name = "sp-runtime" version = "2.0.0-alpha.3" dependencies = [ + "hash256-std-hasher", "impl-trait-for-tuples", "log 0.4.8", "parity-scale-codec", @@ -7324,8 +7326,8 @@ name = "sp-runtime-interface-test" version = "2.0.0-dev" dependencies = [ "sc-executor", - "sp-core", "sp-io", + "sp-runtime", "sp-runtime-interface", "sp-runtime-interface-test-wasm", "sp-state-machine", @@ -7397,6 +7399,7 @@ dependencies = [ "sp-core", "sp-externalities", "sp-panic-handler", + "sp-runtime", "sp-trie", "trie-db", "trie-root", @@ -7464,6 +7467,7 @@ dependencies = [ "memory-db", "parity-scale-codec", "sp-core", + "sp-runtime", "sp-std", "trie-bench", "trie-db", diff --git a/bin/node/executor/benches/bench.rs b/bin/node/executor/benches/bench.rs index c411bec851..faebdd302a 100644 --- a/bin/node/executor/benches/bench.rs +++ b/bin/node/executor/benches/bench.rs @@ -23,12 +23,13 @@ use node_runtime::{ }; use node_runtime::constants::currency::*; use node_testing::keyring::*; -use sp_core::{Blake2Hasher, NativeOrEncoded, NeverNativeValue}; +use sp_core::{NativeOrEncoded, NeverNativeValue}; use sp_core::storage::well_known_keys; use sp_core::traits::{CodeExecutor, RuntimeCode}; use frame_support::Hashable; use sp_state_machine::TestExternalities as CoreTestExternalities; use sc_executor::{NativeExecutor, RuntimeInfo, WasmExecutionMethod, Externalities}; +use sp_runtime::traits::BlakeTwo256; criterion_group!(benches, bench_execute_block); criterion_main!(benches); @@ -54,7 +55,7 @@ fn sign(xt: CheckedExtrinsic) -> UncheckedExtrinsic { node_testing::keyring::sign(xt, VERSION, GENESIS_HASH) } -fn new_test_ext(genesis_config: &GenesisConfig) -> TestExternalities { +fn new_test_ext(genesis_config: &GenesisConfig) -> TestExternalities { let mut test_ext = TestExternalities::new_with_code( COMPACT_CODE, genesis_config.build_storage().unwrap(), @@ -76,7 +77,7 @@ fn construct_block( let extrinsics = extrinsics.into_iter().map(sign).collect::>(); // calculate the header fields that we can. - let extrinsics_root = Layout::::ordered_trie_root( + let extrinsics_root = Layout::::ordered_trie_root( extrinsics.iter().map(Encode::encode) ).to_fixed_bytes() .into(); diff --git a/bin/node/executor/tests/basic.rs b/bin/node/executor/tests/basic.rs index eb629029c6..1ee0a17c81 100644 --- a/bin/node/executor/tests/basic.rs +++ b/bin/node/executor/tests/basic.rs @@ -21,13 +21,11 @@ use frame_support::{ weights::{GetDispatchInfo, DispatchInfo, DispatchClass}, }; use sp_core::{ - Blake2Hasher, NeverNativeValue, map, - traits::Externalities, - storage::{well_known_keys, Storage}, + NeverNativeValue, map, traits::Externalities, storage::{well_known_keys, Storage}, }; use sp_runtime::{ ApplyExtrinsicResult, Fixed64, - traits::{Hash as HashT, Convert}, + traits::{Hash as HashT, Convert, BlakeTwo256}, transaction_validity::InvalidTransaction, }; use pallet_contracts::ContractAddressFor; @@ -93,7 +91,6 @@ fn changes_trie_block() -> (Vec, Hash) { ) } - /// block 1 and 2 must be created together to ensure transactions are only signed once (since they /// are not guaranteed to be deterministic) and to ensure that the correct state is propagated /// from block1's execution to block2 to derive the correct storage_root. @@ -161,7 +158,7 @@ fn block_with_size(time: u64, nonce: u32, size: usize) -> (Vec, Hash) { #[test] fn panic_execution_with_foreign_code_gives_error() { - let mut t = TestExternalities::::new_with_code(BLOATY_CODE, Storage { + let mut t = TestExternalities::::new_with_code(BLOATY_CODE, Storage { top: map![ >::hashed_key_for(alice()) => { (69u128, 0u8, 0u128, 0u128, 0u128).encode() @@ -197,7 +194,7 @@ fn panic_execution_with_foreign_code_gives_error() { #[test] fn bad_extrinsic_with_native_equivalent_code_gives_error() { - let mut t = TestExternalities::::new_with_code(COMPACT_CODE, Storage { + let mut t = TestExternalities::::new_with_code(COMPACT_CODE, Storage { top: map![ >::hashed_key_for(alice()) => { (0u32, 0u8, 69u128, 0u128, 0u128, 0u128).encode() @@ -233,7 +230,7 @@ fn bad_extrinsic_with_native_equivalent_code_gives_error() { #[test] fn successful_execution_with_native_equivalent_code_gives_ok() { - let mut t = TestExternalities::::new_with_code(COMPACT_CODE, Storage { + let mut t = TestExternalities::::new_with_code(COMPACT_CODE, Storage { top: map![ >::hashed_key_for(alice()) => { (0u32, 0u8, 111 * DOLLARS, 0u128, 0u128, 0u128).encode() @@ -275,7 +272,7 @@ fn successful_execution_with_native_equivalent_code_gives_ok() { #[test] fn successful_execution_with_foreign_code_gives_ok() { - let mut t = TestExternalities::::new_with_code(BLOATY_CODE, Storage { + let mut t = TestExternalities::::new_with_code(BLOATY_CODE, Storage { top: map![ >::hashed_key_for(alice()) => { (0u32, 0u8, 111 * DOLLARS, 0u128, 0u128, 0u128).encode() @@ -700,7 +697,7 @@ fn native_big_block_import_fails_on_fallback() { #[test] fn panic_execution_gives_error() { - let mut t = TestExternalities::::new_with_code(BLOATY_CODE, Storage { + let mut t = TestExternalities::::new_with_code(BLOATY_CODE, Storage { top: map![ >::hashed_key().to_vec() => { 0_u128.encode() @@ -731,7 +728,7 @@ fn panic_execution_gives_error() { #[test] fn successful_execution_gives_ok() { - let mut t = TestExternalities::::new_with_code(COMPACT_CODE, Storage { + let mut t = TestExternalities::::new_with_code(COMPACT_CODE, Storage { top: map![ >::hashed_key_for(alice()) => { (0u32, 0u8, 111 * DOLLARS, 0u128, 0u128, 0u128).encode() diff --git a/bin/node/executor/tests/common.rs b/bin/node/executor/tests/common.rs index 4b83825722..25ada87a97 100644 --- a/bin/node/executor/tests/common.rs +++ b/bin/node/executor/tests/common.rs @@ -17,10 +17,8 @@ use codec::{Encode, Decode}; use frame_support::Hashable; use sp_state_machine::TestExternalities as CoreTestExternalities; -use sp_core::{ - Blake2Hasher, NeverNativeValue, NativeOrEncoded, traits::{CodeExecutor, RuntimeCode}, -}; -use sp_runtime::{ApplyExtrinsicResult, traits::Header as HeaderT}; +use sp_core::{NeverNativeValue, NativeOrEncoded, traits::{CodeExecutor, RuntimeCode}}; +use sp_runtime::{ApplyExtrinsicResult, traits::{Header as HeaderT, BlakeTwo256}}; use sc_executor::{NativeExecutor, WasmExecutionMethod}; use sc_executor::error::Result; @@ -66,7 +64,7 @@ pub fn executor_call< R:Decode + Encode + PartialEq, NC: FnOnce() -> std::result::Result + std::panic::UnwindSafe >( - t: &mut TestExternalities, + t: &mut TestExternalities, method: &str, data: &[u8], use_native: bool, @@ -85,7 +83,7 @@ pub fn executor_call< ) } -pub fn new_test_ext(code: &[u8], support_changes_trie: bool) -> TestExternalities { +pub fn new_test_ext(code: &[u8], support_changes_trie: bool) -> TestExternalities { let mut ext = TestExternalities::new_with_code( code, node_testing::genesis::config(support_changes_trie, Some(code)).build_storage().unwrap(), @@ -99,7 +97,7 @@ pub fn new_test_ext(code: &[u8], support_changes_trie: bool) -> TestExternalitie /// `extrinsics` must be a list of valid extrinsics, i.e. none of the extrinsics for example /// can report `ExhaustResources`. Otherwise, this function panics. pub fn construct_block( - env: &mut TestExternalities, + env: &mut TestExternalities, number: BlockNumber, parent_hash: Hash, extrinsics: Vec, @@ -111,7 +109,7 @@ pub fn construct_block( // calculate the header fields that we can. let extrinsics_root = - Layout::::ordered_trie_root(extrinsics.iter().map(Encode::encode)) + Layout::::ordered_trie_root(extrinsics.iter().map(Encode::encode)) .to_fixed_bytes() .into(); diff --git a/bin/node/executor/tests/fees.rs b/bin/node/executor/tests/fees.rs index 024c02bd6a..ea9d740a05 100644 --- a/bin/node/executor/tests/fees.rs +++ b/bin/node/executor/tests/fees.rs @@ -20,14 +20,8 @@ use frame_support::{ traits::Currency, weights::GetDispatchInfo, }; -use sp_core::{ - Blake2Hasher, NeverNativeValue, map, - storage::Storage, -}; -use sp_runtime::{ - Fixed64, Perbill, - traits::Convert, -}; +use sp_core::{NeverNativeValue, map, storage::Storage}; +use sp_runtime::{Fixed64, Perbill, traits::{Convert, BlakeTwo256}}; use node_runtime::{ CheckedExtrinsic, Call, Runtime, Balances, TransactionPayment, TransactionBaseFee, TransactionByteFee, WeightFeeCoefficient, @@ -136,7 +130,7 @@ fn transaction_fee_is_correct_ultimate() { // - 1 MILLICENTS in substrate node. // - 1 milli-dot based on current polkadot runtime. // (this baed on assigning 0.1 CENT to the cheapest tx with `weight = 100`) - let mut t = TestExternalities::::new_with_code(COMPACT_CODE, Storage { + let mut t = TestExternalities::::new_with_code(COMPACT_CODE, Storage { top: map![ >::hashed_key_for(alice()) => { (0u32, 0u8, 100 * DOLLARS, 0 * DOLLARS, 0 * DOLLARS, 0 * DOLLARS).encode() diff --git a/client/api/src/backend.rs b/client/api/src/backend.rs index c3e56e7f8b..1f76aa8c1a 100644 --- a/client/api/src/backend.rs +++ b/client/api/src/backend.rs @@ -21,7 +21,7 @@ use std::collections::HashMap; use sp_core::ChangesTrieConfigurationRange; use sp_core::offchain::OffchainStorage; use sp_runtime::{generic::BlockId, Justification, Storage}; -use sp_runtime::traits::{Block as BlockT, NumberFor, HasherFor}; +use sp_runtime::traits::{Block as BlockT, NumberFor, HashFor}; use sp_state_machine::{ ChangesTrieState, ChangesTrieStorage as StateChangesTrieStorage, ChangesTrieTransaction, StorageCollection, ChildStorageCollection, @@ -43,7 +43,7 @@ pub use sp_state_machine::Backend as StateBackend; pub type StateBackendFor = >::State; /// Extracts the transaction for the given state backend. -pub type TransactionForSB = >>::Transaction; +pub type TransactionForSB = >>::Transaction; /// Extracts the transaction for the given backend. pub type TransactionFor = TransactionForSB, Block>; @@ -111,7 +111,7 @@ impl NewBlockState { /// Keeps hold if the inserted block state and data. pub trait BlockImportOperation { /// Associated state backend type. - type State: StateBackend>; + type State: StateBackend>; /// Returns pending state. /// @@ -149,7 +149,7 @@ pub trait BlockImportOperation { /// Inject changes trie data into the database. fn update_changes_trie( &mut self, - update: ChangesTrieTransaction, NumberFor>, + update: ChangesTrieTransaction, NumberFor>, ) -> sp_blockchain::Result<()>; /// Insert auxiliary keys. @@ -253,7 +253,7 @@ pub trait Backend: AuxStore + Send + Sync { /// Associated blockchain backend type. type Blockchain: BlockchainBackend; /// Associated state backend type. - type State: StateBackend> + Send; + type State: StateBackend> + Send; /// Offchain workers local storage. type OffchainStorage: OffchainStorage; @@ -344,10 +344,10 @@ pub trait Backend: AuxStore + Send + Sync { /// Changes trie storage that supports pruning. pub trait PrunableStateChangesTrieStorage: - StateChangesTrieStorage, NumberFor> + StateChangesTrieStorage, NumberFor> { /// Get reference to StateChangesTrieStorage. - fn storage(&self) -> &dyn StateChangesTrieStorage, NumberFor>; + fn storage(&self) -> &dyn StateChangesTrieStorage, NumberFor>; /// Get configuration at given block. fn configuration_at(&self, at: &BlockId) -> sp_blockchain::Result< ChangesTrieConfigurationRange, Block::Hash> @@ -377,7 +377,7 @@ pub trait RemoteBackend: Backend { pub fn changes_tries_state_at_block<'a, Block: BlockT>( block: &BlockId, maybe_storage: Option<&'a dyn PrunableStateChangesTrieStorage>, -) -> sp_blockchain::Result, NumberFor>>> { +) -> sp_blockchain::Result, NumberFor>>> { let storage = match maybe_storage { Some(storage) => storage, None => return Ok(None), diff --git a/client/api/src/call_executor.rs b/client/api/src/call_executor.rs index aff38a26aa..1a7b53d541 100644 --- a/client/api/src/call_executor.rs +++ b/client/api/src/call_executor.rs @@ -19,7 +19,7 @@ use std::{panic::UnwindSafe, result, cell::RefCell}; use codec::{Encode, Decode}; use sp_runtime::{ - generic::BlockId, traits::{Block as BlockT, HasherFor}, + generic::BlockId, traits::{Block as BlockT, HashFor}, }; use sp_state_machine::{ OverlayedChanges, ExecutionManager, ExecutionStrategy, StorageProof, @@ -89,7 +89,7 @@ pub trait CallExecutor { /// Execute a call to a contract on top of given state, gathering execution proof. /// /// No changes are made. - fn prove_at_state>>( + fn prove_at_state>>( &self, mut state: S, overlay: &mut OverlayedChanges, @@ -107,9 +107,9 @@ pub trait CallExecutor { /// Execute a call to a contract on top of given trie state, gathering execution proof. /// /// No changes are made. - fn prove_at_trie_state>>( + fn prove_at_trie_state>>( &self, - trie_state: &sp_state_machine::TrieBackend>, + trie_state: &sp_state_machine::TrieBackend>, overlay: &mut OverlayedChanges, method: &str, call_data: &[u8] diff --git a/client/authority-discovery/src/tests.rs b/client/authority-discovery/src/tests.rs index 77ed6a1d94..55ee6c7aac 100644 --- a/client/authority-discovery/src/tests.rs +++ b/client/authority-discovery/src/tests.rs @@ -215,7 +215,7 @@ impl ApiExt for RuntimeApi { fn into_storage_changes( &self, _: &Self::StateBackend, - _: Option<&sp_api::ChangesTrieState, sp_api::NumberFor>>, + _: Option<&sp_api::ChangesTrieState, sp_api::NumberFor>>, _: ::Hash, ) -> std::result::Result, String> where Self: Sized diff --git a/client/block-builder/src/lib.rs b/client/block-builder/src/lib.rs index c9b2efbea9..82c7c91159 100644 --- a/client/block-builder/src/lib.rs +++ b/client/block-builder/src/lib.rs @@ -28,9 +28,7 @@ use codec::Encode; use sp_runtime::{ generic::BlockId, - traits::{ - Header as HeaderT, Hash, Block as BlockT, HashFor, DigestFor, NumberFor, One, HasherFor, - }, + traits::{Header as HeaderT, Hash, Block as BlockT, HashFor, DigestFor, NumberFor, One}, }; use sp_blockchain::{ApplyExtrinsicFailed, Error}; use sp_core::ExecutionContext; @@ -47,7 +45,7 @@ use sc_client_api::backend; /// backend to get the state of the block. Furthermore an optional `proof` is included which /// can be used to proof that the build block contains the expected data. The `proof` will /// only be set when proof recording was activated. -pub struct BuiltBlock>> { +pub struct BuiltBlock>> { /// The actual block that was build. pub block: Block, /// The changes that need to be applied to the backend to get the state of the build block. @@ -56,7 +54,7 @@ pub struct BuiltBlock, } -impl>> BuiltBlock { +impl>> BuiltBlock { /// Convert into the inner values. pub fn into_inner(self) -> (Block, StorageChanges, Option) { (self.block, self.storage_changes, self.proof) diff --git a/client/consensus/slots/src/lib.rs b/client/consensus/slots/src/lib.rs index 892c8b1364..e23b2fb321 100644 --- a/client/consensus/slots/src/lib.rs +++ b/client/consensus/slots/src/lib.rs @@ -37,7 +37,7 @@ use futures_timer::Delay; use sp_inherents::{InherentData, InherentDataProviders}; use log::{debug, error, info, warn}; use sp_runtime::generic::BlockId; -use sp_runtime::traits::{Block as BlockT, Header, HasherFor, NumberFor}; +use sp_runtime::traits::{Block as BlockT, Header, HashFor, NumberFor}; use sp_api::{ProvideRuntimeApi, ApiRef}; use std::{fmt::Debug, ops::Deref, pin::Pin, sync::Arc, time::{Instant, Duration}}; use sc_telemetry::{telemetry, CONSENSUS_DEBUG, CONSENSUS_WARN, CONSENSUS_INFO}; @@ -47,7 +47,7 @@ use parking_lot::Mutex; /// /// See [`sp_state_machine::StorageChanges`] for more information. pub type StorageChanges = - sp_state_machine::StorageChanges, NumberFor>; + sp_state_machine::StorageChanges, NumberFor>; /// A worker that should be invoked at every new slot. pub trait SlotWorker { diff --git a/client/db/src/bench.rs b/client/db/src/bench.rs index 9858a5c148..b6a6b3f8d4 100644 --- a/client/db/src/bench.rs +++ b/client/db/src/bench.rs @@ -24,14 +24,14 @@ use rand::Rng; use hash_db::{Prefix, Hasher}; use sp_trie::{MemoryDB, prefixed_key}; use sp_core::storage::ChildInfo; -use sp_runtime::traits::{Block as BlockT, HasherFor}; +use sp_runtime::traits::{Block as BlockT, HashFor}; use sp_runtime::Storage; use sp_state_machine::{DBValue, backend::Backend as StateBackend}; use kvdb::{KeyValueDB, DBTransaction}; use kvdb_rocksdb::{Database, DatabaseConfig}; type DbState = sp_state_machine::TrieBackend< - Arc>>, HasherFor + Arc>>, HashFor >; struct StorageDb { @@ -39,9 +39,9 @@ struct StorageDb { _block: std::marker::PhantomData, } -impl sp_state_machine::Storage> for StorageDb { +impl sp_state_machine::Storage> for StorageDb { fn get(&self, key: &Block::Hash, prefix: Prefix) -> Result, String> { - let key = prefixed_key::>(key, prefix); + let key = prefixed_key::>(key, prefix); self.db.get(0, &key) .map_err(|e| format!("Database backend error: {:?}", e)) } @@ -53,7 +53,7 @@ pub struct BenchmarkingState { root: Cell, state: RefCell>>, db: Cell>>, - genesis: as StateBackend>>::Transaction, + genesis: as StateBackend>>::Transaction, } impl BenchmarkingState { @@ -64,8 +64,8 @@ impl BenchmarkingState { let path = temp_dir.join(&name); let mut root = B::Hash::default(); - let mut mdb = MemoryDB::>::default(); - sp_state_machine::TrieDBMut::>::new(&mut mdb, &mut root); + let mut mdb = MemoryDB::>::default(); + sp_state_machine::TrieDBMut::>::new(&mut mdb, &mut root); std::fs::create_dir(&path).map_err(|_| String::from("Error creating temp dir"))?; let mut state = BenchmarkingState { @@ -108,8 +108,8 @@ impl BenchmarkingState { self.db.set(None); *self.state.borrow_mut() = None; let mut root = B::Hash::default(); - let mut mdb = MemoryDB::>::default(); - sp_state_machine::TrieDBMut::>::new(&mut mdb, &mut root); + let mut mdb = MemoryDB::>::default(); + sp_state_machine::TrieDBMut::>::new(&mut mdb, &mut root); self.root.set(root); std::fs::remove_dir_all(&self.path).map_err(|_| "Error removing database dir".into()) @@ -126,10 +126,10 @@ fn state_err() -> String { "State is not open".into() } -impl StateBackend> for BenchmarkingState { - type Error = as StateBackend>>::Error; - type Transaction = as StateBackend>>::Transaction; - type TrieBackendStorage = as StateBackend>>::TrieBackendStorage; +impl StateBackend> for BenchmarkingState { + type Error = as StateBackend>>::Error; + type Transaction = as StateBackend>>::Transaction; + type TrieBackendStorage = as StateBackend>>::TrieBackendStorage; fn storage(&self, key: &[u8]) -> Result>, Self::Error> { self.state.borrow().as_ref().ok_or_else(state_err)?.storage(key) @@ -244,12 +244,12 @@ impl StateBackend> for BenchmarkingState { } fn as_trie_backend(&mut self) - -> Option<&sp_state_machine::TrieBackend>> + -> Option<&sp_state_machine::TrieBackend>> { None } - fn commit(&self, storage_root: as Hasher>::Out, mut transaction: Self::Transaction) + fn commit(&self, storage_root: as Hasher>::Out, mut transaction: Self::Transaction) -> Result<(), Self::Error> { if let Some(db) = self.db.take() { diff --git a/client/db/src/changes_tries_storage.rs b/client/db/src/changes_tries_storage.rs index 99488bbaed..a28cd604fe 100644 --- a/client/db/src/changes_tries_storage.rs +++ b/client/db/src/changes_tries_storage.rs @@ -28,7 +28,7 @@ use sc_client_api::backend::PrunableStateChangesTrieStorage; use sp_blockchain::{well_known_cache_keys, Cache as BlockchainCache}; use sp_core::{ChangesTrieConfiguration, ChangesTrieConfigurationRange, convert_hash}; use sp_runtime::traits::{ - Block as BlockT, Header as HeaderT, HasherFor, NumberFor, One, Zero, CheckedSub, + Block as BlockT, Header as HeaderT, HashFor, NumberFor, One, Zero, CheckedSub, }; use sp_runtime::generic::{BlockId, DigestItem, ChangesTrieSignal}; use sp_state_machine::{DBValue, ChangesTrieBuildCache, ChangesTrieCacheAction}; @@ -150,7 +150,7 @@ impl DbChangesTrieStorage { pub fn commit( &self, tx: &mut DBTransaction, - mut changes_trie: MemoryDB>, + mut changes_trie: MemoryDB>, parent_block: ComplexBlockId, block: ComplexBlockId, new_header: &Block::Header, @@ -377,7 +377,7 @@ impl DbChangesTrieStorage { } impl PrunableStateChangesTrieStorage for DbChangesTrieStorage { - fn storage(&self) -> &dyn sp_state_machine::ChangesTrieStorage, NumberFor> { + fn storage(&self) -> &dyn sp_state_machine::ChangesTrieStorage, NumberFor> { self } @@ -396,7 +396,7 @@ impl PrunableStateChangesTrieStorage for DbChangesTrieStor } } -impl sp_state_machine::ChangesTrieRootsStorage, NumberFor> +impl sp_state_machine::ChangesTrieRootsStorage, NumberFor> for DbChangesTrieStorage { fn build_anchor( @@ -469,12 +469,12 @@ impl sp_state_machine::ChangesTrieRootsStorage, } } -impl sp_state_machine::ChangesTrieStorage, NumberFor> +impl sp_state_machine::ChangesTrieStorage, NumberFor> for DbChangesTrieStorage where Block: BlockT, { - fn as_roots_storage(&self) -> &dyn sp_state_machine::ChangesTrieRootsStorage, NumberFor> { + fn as_roots_storage(&self) -> &dyn sp_state_machine::ChangesTrieRootsStorage, NumberFor> { self } diff --git a/client/db/src/lib.rs b/client/db/src/lib.rs index b4dd98457d..d4c157986f 100644 --- a/client/db/src/lib.rs +++ b/client/db/src/lib.rs @@ -67,7 +67,7 @@ use sp_runtime::{ BuildStorage, }; use sp_runtime::traits::{ - Block as BlockT, Header as HeaderT, NumberFor, Zero, One, SaturatedConversion, HasherFor, + Block as BlockT, Header as HeaderT, NumberFor, Zero, One, SaturatedConversion, HashFor, }; use sc_executor::RuntimeInfo; use sp_state_machine::{ @@ -99,7 +99,7 @@ const DEFAULT_CHILD_RATIO: (usize, usize) = (1, 10); /// DB-backed patricia trie state, transaction type is an overlay of changes to commit. pub type DbState = sp_state_machine::TrieBackend< - Arc>>, HasherFor + Arc>>, HashFor >; /// Re-export the KVDB trait so that one can pass an implementation of it. @@ -139,10 +139,10 @@ impl std::fmt::Debug for RefTrackingState { } } -impl StateBackend> for RefTrackingState { - type Error = as StateBackend>>::Error; - type Transaction = as StateBackend>>::Transaction; - type TrieBackendStorage = as StateBackend>>::TrieBackendStorage; +impl StateBackend> for RefTrackingState { + type Error = as StateBackend>>::Error; + type Transaction = as StateBackend>>::Transaction; + type TrieBackendStorage = as StateBackend>>::TrieBackendStorage; fn storage(&self, key: &[u8]) -> Result>, Self::Error> { self.state.storage(key) @@ -251,7 +251,7 @@ impl StateBackend> for RefTrackingState { } fn as_trie_backend(&mut self) - -> Option<&sp_state_machine::TrieBackend>> + -> Option<&sp_state_machine::TrieBackend>> { self.state.as_trie_backend() } @@ -521,10 +521,10 @@ impl HeaderMetadata for BlockchainDb { /// Database transaction pub struct BlockImportOperation { old_state: CachingState, Block>, - db_updates: PrefixedMemoryDB>, + db_updates: PrefixedMemoryDB>, storage_updates: StorageCollection, child_storage_updates: ChildStorageCollection, - changes_trie_updates: MemoryDB>, + changes_trie_updates: MemoryDB>, changes_trie_build_cache_update: Option>>, changes_trie_config_update: Option>, pending_block: Option>, @@ -576,7 +576,7 @@ impl sc_client_api::backend::BlockImportOperation for Bloc // Currently cache isn't implemented on full nodes. } - fn update_db_storage(&mut self, update: PrefixedMemoryDB>) -> ClientResult<()> { + fn update_db_storage(&mut self, update: PrefixedMemoryDB>) -> ClientResult<()> { self.db_updates = update; Ok(()) } @@ -623,7 +623,7 @@ impl sc_client_api::backend::BlockImportOperation for Bloc fn update_changes_trie( &mut self, - update: ChangesTrieTransaction, NumberFor>, + update: ChangesTrieTransaction, NumberFor>, ) -> ClientResult<()> { self.changes_trie_updates = update.0; self.changes_trie_build_cache_update = Some(update.1); @@ -668,9 +668,9 @@ struct StorageDb { pub state_db: StateDb>, } -impl sp_state_machine::Storage> for StorageDb { +impl sp_state_machine::Storage> for StorageDb { fn get(&self, key: &Block::Hash, prefix: Prefix) -> Result, String> { - let key = prefixed_key::>(key, prefix); + let key = prefixed_key::>(key, prefix); self.state_db.get(&key, self) .map_err(|e| format!("Database backend error: {:?}", e)) } @@ -690,13 +690,13 @@ struct DbGenesisStorage(pub Block::Hash); impl DbGenesisStorage { pub fn new() -> Self { let mut root = Block::Hash::default(); - let mut mdb = MemoryDB::>::default(); - sp_state_machine::TrieDBMut::>::new(&mut mdb, &mut root); + let mut mdb = MemoryDB::>::default(); + sp_state_machine::TrieDBMut::>::new(&mut mdb, &mut root); DbGenesisStorage(root) } } -impl sp_state_machine::Storage> for DbGenesisStorage { +impl sp_state_machine::Storage> for DbGenesisStorage { fn get(&self, _key: &Block::Hash, _prefix: Prefix) -> Result, String> { Ok(None) } @@ -1653,7 +1653,7 @@ pub(crate) mod tests { use hash_db::{HashDB, EMPTY_PREFIX}; use super::*; use crate::columns; - use sp_core::{Blake2Hasher, H256}; + use sp_core::H256; use sc_client_api::backend::{Backend as BTrait, BlockImportOperation as Op}; use sc_client::blockchain::Backend as BLBTrait; use sp_runtime::testing::{Header, Block as RawBlock, ExtrinsicWrapper}; @@ -1664,11 +1664,11 @@ pub(crate) mod tests { pub(crate) type Block = RawBlock>; - pub fn prepare_changes(changes: Vec<(Vec, Vec)>) -> (H256, MemoryDB) { + pub fn prepare_changes(changes: Vec<(Vec, Vec)>) -> (H256, MemoryDB) { let mut changes_root = H256::default(); - let mut changes_trie_update = MemoryDB::::default(); + let mut changes_trie_update = MemoryDB::::default(); { - let mut trie = TrieDBMut::::new( + let mut trie = TrieDBMut::::new( &mut changes_trie_update, &mut changes_root ); @@ -1900,7 +1900,7 @@ pub(crate) mod tests { backend.commit_operation(op).unwrap(); assert_eq!(backend.storage.db.get( columns::STATE, - &sp_trie::prefixed_key::(&key, EMPTY_PREFIX) + &sp_trie::prefixed_key::(&key, EMPTY_PREFIX) ).unwrap().unwrap(), &b"hello"[..]); hash }; @@ -1937,7 +1937,7 @@ pub(crate) mod tests { backend.commit_operation(op).unwrap(); assert_eq!(backend.storage.db.get( columns::STATE, - &sp_trie::prefixed_key::(&key, EMPTY_PREFIX) + &sp_trie::prefixed_key::(&key, EMPTY_PREFIX) ).unwrap().unwrap(), &b"hello"[..]); hash }; @@ -1975,7 +1975,7 @@ pub(crate) mod tests { assert!(backend.storage.db.get( columns::STATE, - &sp_trie::prefixed_key::(&key, EMPTY_PREFIX) + &sp_trie::prefixed_key::(&key, EMPTY_PREFIX) ).unwrap().is_some()); hash }; @@ -2009,7 +2009,7 @@ pub(crate) mod tests { backend.commit_operation(op).unwrap(); assert!(backend.storage.db.get( columns::STATE, - &sp_trie::prefixed_key::(&key, EMPTY_PREFIX) + &sp_trie::prefixed_key::(&key, EMPTY_PREFIX) ).unwrap().is_none()); } @@ -2018,7 +2018,7 @@ pub(crate) mod tests { backend.finalize_block(BlockId::Number(3), None).unwrap(); assert!(backend.storage.db.get( columns::STATE, - &sp_trie::prefixed_key::(&key, EMPTY_PREFIX) + &sp_trie::prefixed_key::(&key, EMPTY_PREFIX) ).unwrap().is_none()); } diff --git a/client/db/src/light.rs b/client/db/src/light.rs index 3d30598b19..cda1a11952 100644 --- a/client/db/src/light.rs +++ b/client/db/src/light.rs @@ -36,7 +36,7 @@ use sp_blockchain::{ use sc_client::light::blockchain::Storage as LightBlockchainStorage; use codec::{Decode, Encode}; use sp_runtime::generic::{DigestItem, BlockId}; -use sp_runtime::traits::{Block as BlockT, Header as HeaderT, Zero, One, NumberFor, HasherFor}; +use sp_runtime::traits::{Block as BlockT, Header as HeaderT, Zero, One, NumberFor, HashFor}; use crate::cache::{DbCacheSync, DbCache, ComplexBlockId, EntryType as CacheEntryType}; use crate::utils::{self, meta_keys, DatabaseType, Meta, db_err, read_db, block_id_to_lookup_key, read_meta}; use crate::{DatabaseSettings, FrozenForDuration}; @@ -305,7 +305,7 @@ impl LightStorage { Some(old_current_num) }); - let new_header_cht_root = cht::compute_root::, _>( + let new_header_cht_root = cht::compute_root::, _>( cht::size(), new_cht_number, cht_range.map(|num| self.hash(num)) )?; transaction.put( @@ -322,7 +322,7 @@ impl LightStorage { current_num = current_num + One::one(); Some(old_current_num) }); - let new_changes_trie_cht_root = cht::compute_root::, _>( + let new_changes_trie_cht_root = cht::compute_root::, _>( cht::size(), new_cht_number, cht_range .map(|num| self.changes_trie_root(BlockId::Number(num))) )?; diff --git a/client/db/src/storage_cache.rs b/client/db/src/storage_cache.rs index 6ef29f47b8..6f289369e2 100644 --- a/client/db/src/storage_cache.rs +++ b/client/db/src/storage_cache.rs @@ -21,7 +21,7 @@ use std::sync::Arc; use parking_lot::{Mutex, RwLock, RwLockUpgradableReadGuard}; use linked_hash_map::{LinkedHashMap, Entry}; use hash_db::Hasher; -use sp_runtime::traits::{Block as BlockT, Header, HasherFor, NumberFor}; +use sp_runtime::traits::{Block as BlockT, Header, HashFor, NumberFor}; use sp_core::hexdisplay::HexDisplay; use sp_core::storage::ChildInfo; use sp_state_machine::{ @@ -281,7 +281,7 @@ pub struct CacheChanges { /// Shared canonical state cache. shared_cache: SharedCache, /// Local cache of values for this state. - local_cache: RwLock>>, + local_cache: RwLock>>, /// Hash of the block on top of which this instance was created or /// `None` if cache is disabled pub parent_hash: Option, @@ -296,7 +296,7 @@ pub struct CacheChanges { /// For canonical instances local cache is accumulated and applied /// in `sync_cache` along with the change overlay. /// For non-canonical clones local cache and changes are dropped. -pub struct CachingState>, B: BlockT> { +pub struct CachingState>, B: BlockT> { /// Usage statistics usage: StateUsageStats, /// Backing state. @@ -305,7 +305,7 @@ pub struct CachingState>, B: BlockT> { pub cache: CacheChanges, } -impl>, B: BlockT> std::fmt::Debug for CachingState { +impl>, B: BlockT> std::fmt::Debug for CachingState { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { write!(f, "Block {:?}", self.cache.parent_hash) } @@ -420,7 +420,7 @@ impl CacheChanges { } -impl>, B: BlockT> CachingState { +impl>, B: BlockT> CachingState { /// Create a new instance wrapping generic State and shared cache. pub fn new(state: S, shared_cache: SharedCache, parent_hash: Option) -> Self { CachingState { @@ -489,7 +489,7 @@ impl>, B: BlockT> CachingState { } } -impl>, B: BlockT> StateBackend> for CachingState { +impl>, B: BlockT> StateBackend> for CachingState { type Error = S::Error; type Transaction = S::Transaction; type TrieBackendStorage = S::TrieBackendStorage; @@ -659,7 +659,7 @@ impl>, B: BlockT> StateBackend> for Ca self.state.child_keys(storage_key, child_info, prefix) } - fn as_trie_backend(&mut self) -> Option<&TrieBackend>> { + fn as_trie_backend(&mut self) -> Option<&TrieBackend>> { self.state.as_trie_backend() } @@ -671,9 +671,11 @@ impl>, B: BlockT> StateBackend> for Ca #[cfg(test)] mod tests { use super::*; - use sp_runtime::testing::{H256, Block as RawBlock, ExtrinsicWrapper}; + use sp_runtime::{ + traits::BlakeTwo256, + testing::{H256, Block as RawBlock, ExtrinsicWrapper}, + }; use sp_state_machine::InMemoryBackend; - use sp_core::Blake2Hasher; type Block = RawBlock>; @@ -695,7 +697,7 @@ mod tests { // blocks [ 3a(c) 2a(c) 2b 1b 1a(c) 0 ] // state [ 5 5 4 3 2 2 ] let mut s = CachingState::new( - InMemoryBackend::::default(), + InMemoryBackend::::default(), shared.clone(), Some(root_parent), ); @@ -710,14 +712,14 @@ mod tests { ); let mut s = CachingState::new( - InMemoryBackend::::default(), + InMemoryBackend::::default(), shared.clone(), Some(h0), ); s.cache.sync_cache(&[], &[], vec![], vec![], Some(h1a), Some(1), true); let mut s = CachingState::new( - InMemoryBackend::::default(), + InMemoryBackend::::default(), shared.clone(), Some(h0), ); @@ -732,7 +734,7 @@ mod tests { ); let mut s = CachingState::new( - InMemoryBackend::::default(), + InMemoryBackend::::default(), shared.clone(), Some(h1b), ); @@ -747,7 +749,7 @@ mod tests { ); let mut s = CachingState::new( - InMemoryBackend::::default(), + InMemoryBackend::::default(), shared.clone(), Some(h1a), ); @@ -762,35 +764,35 @@ mod tests { ); let mut s = CachingState::new( - InMemoryBackend::::default(), + InMemoryBackend::::default(), shared.clone(), Some(h2a), ); s.cache.sync_cache(&[], &[], vec![], vec![], Some(h3a), Some(3), true); let s = CachingState::new( - InMemoryBackend::::default(), + InMemoryBackend::::default(), shared.clone(), Some(h3a), ); assert_eq!(s.storage(&key).unwrap().unwrap(), vec![5]); let s = CachingState::new( - InMemoryBackend::::default(), + InMemoryBackend::::default(), shared.clone(), Some(h1a), ); assert!(s.storage(&key).unwrap().is_none()); let s = CachingState::new( - InMemoryBackend::::default(), + InMemoryBackend::::default(), shared.clone(), Some(h2b), ); assert!(s.storage(&key).unwrap().is_none()); let s = CachingState::new( - InMemoryBackend::::default(), + InMemoryBackend::::default(), shared.clone(), Some(h1b), ); @@ -799,7 +801,7 @@ mod tests { // reorg to 3b // blocks [ 3b(c) 3a 2a 2b(c) 1b 1a 0 ] let mut s = CachingState::new( - InMemoryBackend::::default(), + InMemoryBackend::::default(), shared.clone(), Some(h2b), ); @@ -813,7 +815,7 @@ mod tests { true, ); let s = CachingState::new( - InMemoryBackend::::default(), + InMemoryBackend::::default(), shared.clone(), Some(h3a), ); @@ -834,7 +836,7 @@ mod tests { let shared = new_shared_cache::(256*1024, (0,1)); let mut s = CachingState::new( - InMemoryBackend::::default(), + InMemoryBackend::::default(), shared.clone(), Some(root_parent), ); @@ -849,14 +851,14 @@ mod tests { ); let mut s = CachingState::new( - InMemoryBackend::::default(), + InMemoryBackend::::default(), shared.clone(), Some(h1), ); s.cache.sync_cache(&[], &[], vec![], vec![], Some(h2a), Some(2), true); let mut s = CachingState::new( - InMemoryBackend::::default(), + InMemoryBackend::::default(), shared.clone(), Some(h1), ); @@ -871,7 +873,7 @@ mod tests { ); let mut s = CachingState::new( - InMemoryBackend::::default(), + InMemoryBackend::::default(), shared.clone(), Some(h2b), ); @@ -886,7 +888,7 @@ mod tests { ); let s = CachingState::new( - InMemoryBackend::::default(), + InMemoryBackend::::default(), shared.clone(), Some(h2a), ); @@ -906,21 +908,21 @@ mod tests { let shared = new_shared_cache::(256*1024, (0,1)); let mut s = CachingState::new( - InMemoryBackend::::default(), + InMemoryBackend::::default(), shared.clone(), Some(root_parent), ); s.cache.sync_cache(&[], &[], vec![], vec![], Some(h1), Some(1), true); let mut s = CachingState::new( - InMemoryBackend::::default(), + InMemoryBackend::::default(), shared.clone(), Some(h1), ); s.cache.sync_cache(&[], &[], vec![], vec![], Some(h2a), Some(2), true); let mut s = CachingState::new( - InMemoryBackend::::default(), + InMemoryBackend::::default(), shared.clone(), Some(h2a), ); @@ -935,14 +937,14 @@ mod tests { ); let mut s = CachingState::new( - InMemoryBackend::::default(), + InMemoryBackend::::default(), shared.clone(), Some(h1), ); s.cache.sync_cache(&[], &[], vec![], vec![], Some(h2b), Some(2), false); let mut s = CachingState::new( - InMemoryBackend::::default(), + InMemoryBackend::::default(), shared.clone(), Some(h2b), ); @@ -957,7 +959,7 @@ mod tests { ); let s = CachingState::new( - InMemoryBackend::::default(), + InMemoryBackend::::default(), shared.clone(), Some(h3a), ); @@ -971,7 +973,7 @@ mod tests { let h0 = H256::random(); let mut s = CachingState::new( - InMemoryBackend::::default(), shared.clone(), Some(root_parent.clone()), + InMemoryBackend::::default(), shared.clone(), Some(root_parent.clone()), ); let key = H256::random()[..].to_vec(); @@ -1009,7 +1011,7 @@ mod tests { let h0 = H256::random(); let mut s = CachingState::new( - InMemoryBackend::::default(), + InMemoryBackend::::default(), shared.clone(), Some(root_parent), ); @@ -1053,7 +1055,7 @@ mod tests { let shared = new_shared_cache::(256 * 1024, (0, 1)); let mut s = CachingState::new( - InMemoryBackend::::default(), + InMemoryBackend::::default(), shared.clone(), Some(root_parent.clone()), ); @@ -1068,7 +1070,7 @@ mod tests { ); let mut s = CachingState::new( - InMemoryBackend::::default(), + InMemoryBackend::::default(), shared.clone(), Some(h0), ); @@ -1083,7 +1085,7 @@ mod tests { ); let mut s = CachingState::new( - InMemoryBackend::::default(), + InMemoryBackend::::default(), shared.clone(), Some(h1), ); @@ -1106,7 +1108,7 @@ mod tests { s.cache.sync_cache(&[], &[], vec![], vec![], None, None, true); let s = CachingState::new( - InMemoryBackend::::default(), + InMemoryBackend::::default(), shared.clone(), Some(h1), ); @@ -1121,9 +1123,11 @@ mod qc { use quickcheck::{quickcheck, TestResult, Arbitrary}; use super::*; - use sp_runtime::testing::{H256, Block as RawBlock, ExtrinsicWrapper}; + use sp_runtime::{ + traits::BlakeTwo256, + testing::{H256, Block as RawBlock, ExtrinsicWrapper}, + }; use sp_state_machine::InMemoryBackend; - use sp_core::Blake2Hasher; type Block = RawBlock>; @@ -1250,22 +1254,22 @@ mod qc { } } - fn head_state(&self, hash: H256) -> CachingState, Block> { + fn head_state(&self, hash: H256) -> CachingState, Block> { CachingState::new( - InMemoryBackend::::default(), + InMemoryBackend::::default(), self.shared.clone(), Some(hash) ) } - fn canon_head_state(&self) -> CachingState, Block> { + fn canon_head_state(&self) -> CachingState, Block> { self.head_state(self.canon.last().expect("Expected to be one commit").hash) } fn mutate_static( &mut self, action: Action, - ) -> CachingState, Block> { + ) -> CachingState, Block> { self.mutate(action).expect("Expected to provide only valid actions to the mutate_static") } @@ -1284,7 +1288,7 @@ mod qc { fn mutate( &mut self, action: Action, - ) -> Result, Block>, ()> { + ) -> Result, Block>, ()> { let state = match action { Action::Fork { depth, hash, changes } => { let pos = self.canon.len() as isize - depth as isize; @@ -1321,7 +1325,7 @@ mod qc { }; let mut state = CachingState::new( - InMemoryBackend::::default(), + InMemoryBackend::::default(), self.shared.clone(), Some(parent) ); @@ -1360,7 +1364,7 @@ mod qc { } let mut state = CachingState::new( - InMemoryBackend::::default(), + InMemoryBackend::::default(), self.shared.clone(), Some(parent_hash) ); @@ -1407,7 +1411,7 @@ mod qc { self.canon.push(node); let mut state = CachingState::new( - InMemoryBackend::::default(), + InMemoryBackend::::default(), self.shared.clone(), Some(fork_at) ); diff --git a/client/executor/Cargo.toml b/client/executor/Cargo.toml index 46e4bb04bb..1353bc5730 100644 --- a/client/executor/Cargo.toml +++ b/client/executor/Cargo.toml @@ -39,6 +39,7 @@ sc-runtime-test = { version = "2.0.0-dev", path = "runtime-test" } substrate-test-runtime = { version = "2.0.0-dev", path = "../../test-utils/runtime" } sp-state-machine = { version = "0.8.0-alpha.2", path = "../../primitives/state-machine" } test-case = "0.3.3" +sp-runtime = { version = "2.0.0-alpha.2", path = "../../primitives/runtime" } [features] default = [ "std" ] diff --git a/client/executor/src/integration_tests/mod.rs b/client/executor/src/integration_tests/mod.rs index c0516d3ac7..87ca33c4da 100644 --- a/client/executor/src/integration_tests/mod.rs +++ b/client/executor/src/integration_tests/mod.rs @@ -19,7 +19,7 @@ mod sandbox; use codec::{Encode, Decode}; use hex_literal::hex; use sp_core::{ - Blake2Hasher, blake2_128, blake2_256, ed25519, sr25519, map, Pair, + blake2_128, blake2_256, ed25519, sr25519, map, Pair, offchain::{OffchainExt, testing}, traits::Externalities, }; @@ -28,10 +28,11 @@ use sp_state_machine::TestExternalities as CoreTestExternalities; use test_case::test_case; use sp_trie::{TrieConfiguration, trie_types::Layout}; use sp_wasm_interface::HostFunctions as _; +use sp_runtime::traits::BlakeTwo256; use crate::WasmExecutionMethod; -pub type TestExternalities = CoreTestExternalities; +pub type TestExternalities = CoreTestExternalities; type HostFunctions = sp_io::SubstrateHostFunctions; fn call_in_wasm( @@ -440,7 +441,7 @@ fn ordered_trie_root_should_work(wasm_method: WasmExecutionMethod) { wasm_method, &mut ext.ext(), ).unwrap(), - Layout::::ordered_trie_root(trie_input.iter()).as_bytes().encode(), + Layout::::ordered_trie_root(trie_input.iter()).as_bytes().encode(), ); } diff --git a/client/finality-grandpa/src/tests.rs b/client/finality-grandpa/src/tests.rs index 7b5880f7ee..2734101500 100644 --- a/client/finality-grandpa/src/tests.rs +++ b/client/finality-grandpa/src/tests.rs @@ -42,7 +42,7 @@ use std::{ pin::Pin, task, }; use parity_scale_codec::Decode; -use sp_runtime::traits::{Block as BlockT, Header as HeaderT, HasherFor}; +use sp_runtime::traits::{Block as BlockT, Header as HeaderT, HashFor}; use sp_runtime::generic::{BlockId, DigestItem}; use sp_core::{H256, NativeOrEncoded, ExecutionContext, crypto::Public}; use sp_finality_grandpa::{GRANDPA_ENGINE_ID, AuthorityList, GrandpaApi}; @@ -289,7 +289,7 @@ impl ApiExt for RuntimeApi { fn into_storage_changes( &self, _: &Self::StateBackend, - _: Option<&sp_api::ChangesTrieState, sp_api::NumberFor>>, + _: Option<&sp_api::ChangesTrieState, sp_api::NumberFor>>, _: ::Hash, ) -> std::result::Result, String> where Self: Sized @@ -323,7 +323,7 @@ impl AuthoritySetForFinalityProver for TestApi { fn prove_authorities(&self, block: &BlockId) -> Result { let authorities = self.authorities(block)?; - let backend = >>::from(vec![ + let backend = >>::from(vec![ (None, vec![(b"authorities".to_vec(), Some(authorities.encode()))]) ]); let proof = prove_read(backend, vec![b"authorities"]) @@ -339,7 +339,7 @@ impl AuthoritySetForFinalityChecker for TestApi { header: ::Header, proof: StorageProof, ) -> Result { - let results = read_proof_check::, _>( + let results = read_proof_check::, _>( *header.state_root(), proof, vec![b"authorities"] ) .expect("failure checking read proof for authorities"); diff --git a/client/rpc/src/state/state_light.rs b/client/rpc/src/state/state_light.rs index 7b2455a8fc..4d2e8fbb05 100644 --- a/client/rpc/src/state/state_light.rs +++ b/client/rpc/src/state/state_light.rs @@ -52,7 +52,7 @@ use sp_core::{ Bytes, OpaqueMetadata, storage::{StorageKey, StorageData, StorageChangeSet}, }; use sp_version::RuntimeVersion; -use sp_runtime::{generic::BlockId, traits::{Block as BlockT, HasherFor}}; +use sp_runtime::{generic::BlockId, traits::{Block as BlockT, HashFor}}; use super::{StateBackend, error::{FutureResult, Error}, client_err}; @@ -241,7 +241,7 @@ impl StateBackend for LightState::hash(&storage.0)))) + result(Ok(maybe_storage.map(|storage| HashFor::::hash(&storage.0)))) ) ) } @@ -302,7 +302,7 @@ impl StateBackend for LightState::hash(&storage.0)))) + result(Ok(maybe_storage.map(|storage| HashFor::::hash(&storage.0)))) ) ) } diff --git a/client/service/src/builder.rs b/client/service/src/builder.rs index 01bba286c6..bc731dd2de 100644 --- a/client/service/src/builder.rs +++ b/client/service/src/builder.rs @@ -39,7 +39,7 @@ use sc_network::{NetworkService, NetworkStateInfo}; use parking_lot::{Mutex, RwLock}; use sp_runtime::generic::BlockId; use sp_runtime::traits::{ - Block as BlockT, NumberFor, SaturatedConversion, HasherFor, UniqueSaturatedInto, + Block as BlockT, NumberFor, SaturatedConversion, HashFor, UniqueSaturatedInto, }; use sp_api::ProvideRuntimeApi; use sc_executor::{NativeExecutor, NativeExecutionDispatch}; @@ -159,19 +159,19 @@ pub type TLightClient = Client< /// Light client backend type. pub type TLightBackend = sc_client::light::backend::Backend< sc_client_db::light::LightStorage, - HasherFor, + HashFor, >; /// Light call executor type. pub type TLightCallExecutor = sc_client::light::call_executor::GenesisCallExecutor< sc_client::light::backend::Backend< sc_client_db::light::LightStorage, - HasherFor + HashFor >, sc_client::LocalCallExecutor< sc_client::light::backend::Backend< sc_client_db::light::LightStorage, - HasherFor + HashFor >, NativeExecutor >, diff --git a/client/src/call_executor.rs b/client/src/call_executor.rs index 659e015239..db95309458 100644 --- a/client/src/call_executor.rs +++ b/client/src/call_executor.rs @@ -17,7 +17,7 @@ use std::{sync::Arc, panic::UnwindSafe, result, cell::RefCell}; use codec::{Encode, Decode}; use sp_runtime::{ - generic::BlockId, traits::{Block as BlockT, HasherFor, NumberFor}, + generic::BlockId, traits::{Block as BlockT, HashFor, NumberFor}, }; use sp_state_machine::{ self, OverlayedChanges, Ext, ExecutionManager, StateMachine, ExecutionStrategy, @@ -211,9 +211,9 @@ where version.map_err(|e| sp_blockchain::Error::VersionInvalid(format!("{:?}", e)).into()) } - fn prove_at_trie_state>>( + fn prove_at_trie_state>>( &self, - trie_state: &sp_state_machine::TrieBackend>, + trie_state: &sp_state_machine::TrieBackend>, overlay: &mut OverlayedChanges, method: &str, call_data: &[u8] diff --git a/client/src/cht.rs b/client/src/cht.rs index 1435b77ec5..de67280632 100644 --- a/client/src/cht.rs +++ b/client/src/cht.rs @@ -331,8 +331,8 @@ pub fn decode_cht_value(value: &[u8]) -> Option { #[cfg(test)] mod tests { - use sp_core::Blake2Hasher; use substrate_test_runtime_client::runtime::Header; + use sp_runtime::traits::BlakeTwo256; use super::*; #[test] @@ -398,7 +398,7 @@ mod tests { #[test] fn compute_root_works() { - assert!(compute_root::( + assert!(compute_root::( SIZE as _, 42, ::std::iter::repeat_with(|| Ok(Some(H256::from_low_u64_be(1)))) @@ -409,7 +409,7 @@ mod tests { #[test] #[should_panic] fn build_proof_panics_when_querying_wrong_block() { - assert!(build_proof::( + assert!(build_proof::( SIZE as _, 0, vec![(SIZE * 1000) as u64], @@ -420,7 +420,7 @@ mod tests { #[test] fn build_proof_works() { - assert!(build_proof::( + assert!(build_proof::( SIZE as _, 0, vec![(SIZE / 2) as u64], diff --git a/client/src/client.rs b/client/src/client.rs index 68970cbb2a..5a0093308e 100644 --- a/client/src/client.rs +++ b/client/src/client.rs @@ -34,7 +34,7 @@ use sp_runtime::{ Justification, BuildStorage, generic::{BlockId, SignedBlock, DigestItem}, traits::{ - Block as BlockT, Header as HeaderT, Zero, NumberFor, HasherFor, SaturatedConversion, One, + Block as BlockT, Header as HeaderT, Zero, NumberFor, HashFor, SaturatedConversion, One, DigestFor, }, }; @@ -120,7 +120,7 @@ impl <'a, State, Block> KeyIterator<'a, State, Block> { impl<'a, State, Block> Iterator for KeyIterator<'a, State, Block> where Block: BlockT, - State: StateBackend>, + State: StateBackend>, { type Item = StorageKey; @@ -527,7 +527,7 @@ impl Client where Some(old_current_num) }); let headers = cht_range.map(|num| self.block_hash(num)); - let proof = cht::build_proof::, _, _>( + let proof = cht::build_proof::, _, _>( cht_size, cht_num, std::iter::once(block_num), @@ -600,7 +600,7 @@ impl Client where zero: config_zero.clone(), end: config_end.map(|(config_end_number, _)| config_end_number), }; - let result_range: Vec<(NumberFor, u32)> = key_changes::, _>( + let result_range: Vec<(NumberFor, u32)> = key_changes::, _>( config_range, storage.storage(), range_first, @@ -654,12 +654,12 @@ impl Client where cht_size: NumberFor, ) -> sp_blockchain::Result> { struct AccessedRootsRecorder<'a, Block: BlockT> { - storage: &'a dyn ChangesTrieStorage, NumberFor>, + storage: &'a dyn ChangesTrieStorage, NumberFor>, min: NumberFor, required_roots_proofs: Mutex, Block::Hash>>, }; - impl<'a, Block: BlockT> ChangesTrieRootsStorage, NumberFor> for + impl<'a, Block: BlockT> ChangesTrieRootsStorage, NumberFor> for AccessedRootsRecorder<'a, Block> { fn build_anchor(&self, hash: Block::Hash) @@ -686,11 +686,11 @@ impl Client where } } - impl<'a, Block: BlockT> ChangesTrieStorage, NumberFor> for + impl<'a, Block: BlockT> ChangesTrieStorage, NumberFor> for AccessedRootsRecorder<'a, Block> { fn as_roots_storage(&self) - -> &dyn sp_state_machine::ChangesTrieRootsStorage, NumberFor> + -> &dyn sp_state_machine::ChangesTrieRootsStorage, NumberFor> { self } @@ -734,7 +734,7 @@ impl Client where zero: config_zero, end: config_end.map(|(config_end_number, _)| config_end_number), }; - let proof_range = key_changes_proof::, _>( + let proof_range = key_changes_proof::, _>( config_range, &recording_storage, first_number, @@ -801,7 +801,7 @@ impl Client where .map(|block| block.and_then(|block| block.digest().log(DigestItem::as_changes_trie_root).cloned())) ); - let proof = cht::build_proof::, _, _>( + let proof = cht::build_proof::, _, _>( cht_size, cht_num, blocks, diff --git a/client/src/genesis.rs b/client/src/genesis.rs index 006ed00c43..c3ca82292d 100644 --- a/client/src/genesis.rs +++ b/client/src/genesis.rs @@ -53,7 +53,7 @@ mod tests { runtime::{Hash, Transfer, Block, BlockNumber, Header, Digest}, AccountKeyring, Sr25519Keyring, }; - use sp_core::Blake2Hasher; + use sp_runtime::traits::BlakeTwo256; use hex_literal::*; native_executor_instance!( @@ -67,7 +67,7 @@ mod tests { } fn construct_block( - backend: &InMemoryBackend, + backend: &InMemoryBackend, number: BlockNumber, parent_hash: Hash, state_root: Hash, @@ -78,7 +78,7 @@ mod tests { let transactions = txs.into_iter().map(|tx| tx.into_signed_tx()).collect::>(); let iter = transactions.iter().map(Encode::encode); - let extrinsics_root = Layout::::ordered_trie_root(iter).into(); + let extrinsics_root = Layout::::ordered_trie_root(iter).into(); let mut header = Header { parent_hash, @@ -137,7 +137,7 @@ mod tests { (vec![].and(&Block { header, extrinsics: transactions }), hash) } - fn block1(genesis_hash: Hash, backend: &InMemoryBackend) -> (Vec, Hash) { + fn block1(genesis_hash: Hash, backend: &InMemoryBackend) -> (Vec, Hash) { construct_block( backend, 1, diff --git a/client/src/in_mem.rs b/client/src/in_mem.rs index dcff8102ae..bdbfdbc7ec 100644 --- a/client/src/in_mem.rs +++ b/client/src/in_mem.rs @@ -24,7 +24,7 @@ use sp_core::offchain::storage::{ InMemOffchainStorage as OffchainStorage }; use sp_runtime::generic::BlockId; -use sp_runtime::traits::{Block as BlockT, Header as HeaderT, Zero, NumberFor, HasherFor}; +use sp_runtime::traits::{Block as BlockT, Header as HeaderT, Zero, NumberFor, HashFor}; use sp_runtime::{Justification, Storage}; use sp_state_machine::{ ChangesTrieTransaction, InMemoryBackend, Backend as StateBackend, StorageCollection, @@ -462,8 +462,8 @@ impl sc_client_api::light::Storage for Blockchain pub struct BlockImportOperation { pending_block: Option>, pending_cache: HashMap>, - old_state: InMemoryBackend>, - new_state: Option>>, + old_state: InMemoryBackend>, + new_state: Option>>, aux: Vec<(Vec, Option>)>, finalized_blocks: Vec<(BlockId, Option)>, set_head: Option>, @@ -472,7 +472,7 @@ pub struct BlockImportOperation { impl backend::BlockImportOperation for BlockImportOperation where Block::Hash: Ord, { - type State = InMemoryBackend>; + type State = InMemoryBackend>; fn state(&self) -> sp_blockchain::Result> { Ok(Some(&self.old_state)) @@ -499,7 +499,7 @@ impl backend::BlockImportOperation for BlockImportOperatio fn update_db_storage( &mut self, - update: > as StateBackend>>::Transaction, + update: > as StateBackend>>::Transaction, ) -> sp_blockchain::Result<()> { self.new_state = Some(self.old_state.update(update)); Ok(()) @@ -507,7 +507,7 @@ impl backend::BlockImportOperation for BlockImportOperatio fn update_changes_trie( &mut self, - _update: ChangesTrieTransaction, NumberFor>, + _update: ChangesTrieTransaction, NumberFor>, ) -> sp_blockchain::Result<()> { Ok(()) } @@ -564,7 +564,7 @@ impl backend::BlockImportOperation for BlockImportOperatio /// > **Warning**: Doesn't support all the features necessary for a proper database. Only use this /// > struct for testing purposes. Do **NOT** use in production. pub struct Backend where Block::Hash: Ord { - states: RwLock>>>, + states: RwLock>>>, blockchain: Blockchain, import_lock: RwLock<()>, } @@ -599,7 +599,7 @@ impl backend::AuxStore for Backend where Block::Hash: Ord impl backend::Backend for Backend where Block::Hash: Ord { type BlockImportOperation = BlockImportOperation; type Blockchain = Blockchain; - type State = InMemoryBackend>; + type State = InMemoryBackend>; type OffchainStorage = OffchainStorage; fn begin_operation(&self) -> sp_blockchain::Result { diff --git a/client/src/lib.rs b/client/src/lib.rs index 1d279cabad..f282449c27 100644 --- a/client/src/lib.rs +++ b/client/src/lib.rs @@ -47,7 +47,6 @@ //! ``` //! use std::sync::Arc; //! use sc_client::{Client, in_mem::Backend, LocalCallExecutor}; -//! use sp_core::Blake2Hasher; //! use sp_runtime::Storage; //! use sc_executor::{NativeExecutor, WasmExecutionMethod}; //! diff --git a/client/src/light/backend.rs b/client/src/light/backend.rs index 48434bb41d..749e24af04 100644 --- a/client/src/light/backend.rs +++ b/client/src/light/backend.rs @@ -31,7 +31,7 @@ use sp_state_machine::{ StorageCollection, ChildStorageCollection, }; use sp_runtime::{generic::BlockId, Justification, Storage}; -use sp_runtime::traits::{Block as BlockT, NumberFor, Zero, Header, HasherFor}; +use sp_runtime::traits::{Block as BlockT, NumberFor, Zero, Header, HashFor}; use crate::in_mem::check_genesis_storage; use sp_blockchain::{Error as ClientError, Result as ClientResult}; use sc_client_api::{ @@ -65,7 +65,7 @@ pub struct ImportOperation { aux_ops: Vec<(Vec, Option>)>, finalized_blocks: Vec>, set_head: Option>, - storage_update: Option>>, + storage_update: Option>>, changes_trie_config_update: Option>, _phantom: std::marker::PhantomData, } @@ -111,7 +111,7 @@ impl AuxStore for Backend { } } -impl ClientBackend for Backend> +impl ClientBackend for Backend> where Block: BlockT, S: BlockchainStorage, @@ -119,7 +119,7 @@ impl ClientBackend for Backend> { type BlockImportOperation = ImportOperation; type Blockchain = Blockchain; - type State = GenesisOrUnavailableState>; + type State = GenesisOrUnavailableState>; type OffchainStorage = InMemOffchainStorage; fn begin_operation(&self) -> ClientResult { @@ -238,7 +238,7 @@ impl ClientBackend for Backend> } } -impl RemoteBackend for Backend> +impl RemoteBackend for Backend> where Block: BlockT, S: BlockchainStorage + 'static, @@ -262,7 +262,7 @@ impl BlockImportOperation for ImportOperation S: BlockchainStorage, Block::Hash: Ord, { - type State = GenesisOrUnavailableState>; + type State = GenesisOrUnavailableState>; fn state(&self) -> ClientResult> { // None means 'locally-stateless' backend @@ -287,7 +287,7 @@ impl BlockImportOperation for ImportOperation fn update_db_storage( &mut self, - _update: >>::Transaction, + _update: >>::Transaction, ) -> ClientResult<()> { // we're not storing anything locally => ignore changes Ok(()) @@ -295,7 +295,7 @@ impl BlockImportOperation for ImportOperation fn update_changes_trie( &mut self, - _update: ChangesTrieTransaction, NumberFor>, + _update: ChangesTrieTransaction, NumberFor>, ) -> ClientResult<()> { // we're not storing anything locally => ignore changes Ok(()) @@ -515,10 +515,10 @@ impl StateBackend for GenesisOrUnavailableState #[cfg(test)] mod tests { - use sp_core::Blake2Hasher; use substrate_test_runtime_client::{self, runtime::Block}; use sc_client_api::backend::NewBlockState; use crate::light::blockchain::tests::{DummyBlockchain, DummyStorage}; + use sp_runtime::traits::BlakeTwo256; use super::*; #[test] @@ -526,7 +526,9 @@ mod tests { let def = Default::default(); let header0 = substrate_test_runtime_client::runtime::Header::new(0, def, def, def, Default::default()); - let backend: Backend<_, Blake2Hasher> = Backend::new(Arc::new(DummyBlockchain::new(DummyStorage::new()))); + let backend: Backend<_, BlakeTwo256> = Backend::new( + Arc::new(DummyBlockchain::new(DummyStorage::new())), + ); let mut op = backend.begin_operation().unwrap(); op.set_block_data(header0, None, None, NewBlockState::Final).unwrap(); op.reset_storage(Default::default()).unwrap(); @@ -540,7 +542,9 @@ mod tests { #[test] fn unavailable_state_is_created_when_genesis_state_is_unavailable() { - let backend: Backend<_, Blake2Hasher> = Backend::new(Arc::new(DummyBlockchain::new(DummyStorage::new()))); + let backend: Backend<_, BlakeTwo256> = Backend::new( + Arc::new(DummyBlockchain::new(DummyStorage::new())), + ); match backend.state_at(BlockId::Number(0)).unwrap() { GenesisOrUnavailableState::Unavailable => (), diff --git a/client/src/light/call_executor.rs b/client/src/light/call_executor.rs index a440f5ad67..613d88045d 100644 --- a/client/src/light/call_executor.rs +++ b/client/src/light/call_executor.rs @@ -23,7 +23,7 @@ use std::{ use codec::{Encode, Decode}; use sp_core::{convert_hash, NativeOrEncoded, traits::CodeExecutor}; use sp_runtime::{ - generic::BlockId, traits::{One, Block as BlockT, Header as HeaderT, HasherFor}, + generic::BlockId, traits::{One, Block as BlockT, Header as HeaderT, HashFor}, }; use sp_externalities::Extensions; use sp_state_machine::{ @@ -152,9 +152,9 @@ impl CallExecutor for } } - fn prove_at_trie_state>>( + fn prove_at_trie_state>>( &self, - _state: &sp_state_machine::TrieBackend>, + _state: &sp_state_machine::TrieBackend>, _changes: &mut OverlayedChanges, _method: &str, _call_data: &[u8], @@ -180,7 +180,7 @@ pub fn prove_execution( ) -> ClientResult<(Vec, StorageProof)> where Block: BlockT, - S: StateBackend>, + S: StateBackend>, E: CallExecutor, { let trie_state = state.as_trie_backend() @@ -291,9 +291,10 @@ mod tests { runtime::{Header, Digest, Block}, TestClient, ClientBlockImportExt, }; use sc_executor::{NativeExecutor, WasmExecutionMethod}; - use sp_core::{Blake2Hasher, H256}; + use sp_core::H256; use sc_client_api::backend::{Backend, NewBlockState}; use crate::in_mem::Backend as InMemBackend; + use sp_runtime::traits::BlakeTwo256; struct DummyCallExecutor; @@ -348,9 +349,9 @@ mod tests { unreachable!() } - fn prove_at_trie_state>>( + fn prove_at_trie_state>>( &self, - _trie_state: &sp_state_machine::TrieBackend>, + _trie_state: &sp_state_machine::TrieBackend>, _overlay: &mut OverlayedChanges, _method: &str, _call_data: &[u8] @@ -381,7 +382,7 @@ mod tests { ).unwrap(); // check remote execution proof locally - let local_result = check_execution_proof::<_, _, Blake2Hasher>( + let local_result = check_execution_proof::<_, _, BlakeTwo256>( &local_executor(), &RemoteCallRequest { block: substrate_test_runtime_client::runtime::Hash::default(), @@ -408,7 +409,7 @@ mod tests { ).unwrap(); // check remote execution proof locally - let execution_result = check_execution_proof_with_make_header::<_, _, Blake2Hasher, _>( + let execution_result = check_execution_proof_with_make_header::<_, _, BlakeTwo256, _>( &local_executor(), &RemoteCallRequest { block: substrate_test_runtime_client::runtime::Hash::default(), diff --git a/client/src/light/fetcher.rs b/client/src/light/fetcher.rs index b5fccb455a..00e3eef2b6 100644 --- a/client/src/light/fetcher.rs +++ b/client/src/light/fetcher.rs @@ -342,12 +342,12 @@ pub mod tests { }; use sp_consensus::BlockOrigin; - use crate::in_mem::{Blockchain as InMemoryBlockchain}; + use crate::in_mem::Blockchain as InMemoryBlockchain; use crate::light::fetcher::{FetchChecker, LightDataChecker, RemoteHeaderRequest}; use crate::light::blockchain::tests::{DummyStorage, DummyBlockchain}; - use sp_core::{blake2_256, Blake2Hasher, ChangesTrieConfiguration, H256}; + use sp_core::{blake2_256, ChangesTrieConfiguration, H256}; use sp_core::storage::{well_known_keys, StorageKey, ChildInfo}; - use sp_runtime::generic::BlockId; + use sp_runtime::{generic::BlockId, traits::BlakeTwo256}; use sp_state_machine::Backend; use super::*; @@ -355,7 +355,7 @@ pub mod tests { type TestChecker = LightDataChecker< NativeExecutor, - Blake2Hasher, + BlakeTwo256, Block, DummyStorage, >; @@ -465,7 +465,7 @@ pub mod tests { // check remote read proof locally let local_storage = InMemoryBlockchain::::new(); - let local_cht_root = cht::compute_root::(4, 0, local_headers_hashes).unwrap(); + let local_cht_root = cht::compute_root::(4, 0, local_headers_hashes).unwrap(); if insert_cht { local_storage.insert_cht_root(1, local_cht_root); } @@ -479,7 +479,7 @@ pub mod tests { fn header_with_computed_extrinsics_root(extrinsics: Vec) -> Header { use sp_trie::{TrieConfiguration, trie_types::Layout}; let iter = extrinsics.iter().map(Encode::encode); - let extrinsics_root = Layout::::ordered_trie_root(iter); + let extrinsics_root = Layout::::ordered_trie_root(iter); // only care about `extrinsics_root` Header::new(0, extrinsics_root, H256::zero(), H256::zero(), Default::default()) @@ -625,7 +625,7 @@ pub mod tests { ).unwrap(); // prepare local checker, having a root of changes trie CHT#0 - let local_cht_root = cht::compute_root::(4, 0, remote_roots.iter().cloned().map(|ct| Ok(Some(ct)))).unwrap(); + let local_cht_root = cht::compute_root::(4, 0, remote_roots.iter().cloned().map(|ct| Ok(Some(ct)))).unwrap(); let mut local_storage = DummyStorage::new(); local_storage.changes_tries_cht_roots.insert(0, local_cht_root); let local_checker = TestChecker::new( @@ -732,7 +732,7 @@ pub mod tests { // we're testing this test case here: // (1, 4, dave.clone(), vec![(4, 0), (1, 1), (1, 0)]), let (remote_client, remote_roots, _) = prepare_client_with_key_changes(); - let local_cht_root = cht::compute_root::( + let local_cht_root = cht::compute_root::( 4, 0, remote_roots.iter().cloned().map(|ct| Ok(Some(ct)))).unwrap(); let dave = blake2_256(&runtime::system::balance_of_key(AccountKeyring::Dave.into())).to_vec(); let dave = StorageKey(dave); diff --git a/client/src/light/mod.rs b/client/src/light/mod.rs index d65fdef711..ca1a3a50c6 100644 --- a/client/src/light/mod.rs +++ b/client/src/light/mod.rs @@ -26,7 +26,7 @@ use std::sync::Arc; use sc_executor::RuntimeInfo; use sp_core::traits::CodeExecutor; use sp_runtime::BuildStorage; -use sp_runtime::traits::{Block as BlockT, HasherFor}; +use sp_runtime::traits::{Block as BlockT, HashFor}; use sp_blockchain::Result as ClientResult; use crate::call_executor::LocalCallExecutor; @@ -45,7 +45,7 @@ pub fn new_light_blockchain>(storage: S) -> A } /// Create an instance of light client backend. -pub fn new_light_backend(blockchain: Arc>) -> Arc>> +pub fn new_light_backend(blockchain: Arc>) -> Arc>> where B: BlockT, S: BlockchainStorage, @@ -55,15 +55,15 @@ pub fn new_light_backend(blockchain: Arc>) -> Arc( - backend: Arc>>, + backend: Arc>>, genesis_storage: &GS, code_executor: E, ) -> ClientResult< Client< - Backend>, + Backend>, GenesisCallExecutor< - Backend>, - LocalCallExecutor>, E> + Backend>, + LocalCallExecutor>, E> >, B, RA @@ -91,7 +91,7 @@ pub fn new_light( pub fn new_fetch_checker>( blockchain: Arc>, executor: E, -) -> LightDataChecker, B, S> +) -> LightDataChecker, B, S> where E: CodeExecutor, { diff --git a/client/transaction-pool/src/api.rs b/client/transaction-pool/src/api.rs index 84e06cc33e..d14f532435 100644 --- a/client/transaction-pool/src/api.rs +++ b/client/transaction-pool/src/api.rs @@ -27,7 +27,6 @@ use sc_client_api::{ light::{Fetcher, RemoteCallRequest, RemoteBodyRequest}, BlockBody, }; -use sp_core::Hasher; use sp_runtime::{ generic::BlockId, traits::{self, Block as BlockT, BlockIdTo, Header as HeaderT, Hash as HashT}, transaction_validity::TransactionValidity, @@ -120,7 +119,7 @@ impl sc_transaction_graph::ChainApi for FullChainApi) -> (Self::Hash, usize) { ex.using_encoded(|x| { - (traits::HasherFor::::hash(x), x.len()) + ( as traits::Hash>::hash(x), x.len()) }) } } diff --git a/frame/benchmarking/src/tests.rs b/frame/benchmarking/src/tests.rs index d47488604e..4327476c4a 100644 --- a/frame/benchmarking/src/tests.rs +++ b/frame/benchmarking/src/tests.rs @@ -21,10 +21,7 @@ use super::*; use codec::Decode; use sp_std::prelude::*; -use sp_runtime::{ - traits::{Dispatchable, BlakeTwo256, IdentityLookup}, - testing::{H256, Header}, -}; +use sp_runtime::{traits::{BlakeTwo256, IdentityLookup}, testing::{H256, Header}}; use frame_support::{dispatch::DispatchResult, decl_module, impl_outer_origin}; use frame_system::{RawOrigin, ensure_signed, ensure_none}; @@ -166,4 +163,4 @@ fn benchmarks_macro_works_for_non_dispatchable() { ).expect("failed to create closure"); assert_eq!(closure(), Ok(())); -} \ No newline at end of file +} diff --git a/frame/contracts/src/lib.rs b/frame/contracts/src/lib.rs index 571ae9700c..93e470a51b 100644 --- a/frame/contracts/src/lib.rs +++ b/frame/contracts/src/lib.rs @@ -254,7 +254,7 @@ where let mut buf = Vec::new(); storage_root.using_encoded(|encoded| buf.extend_from_slice(encoded)); buf.extend_from_slice(code_hash.as_ref()); - RawTombstoneContractInfo(Hasher::hash(&buf[..]), PhantomData) + RawTombstoneContractInfo(::hash(&buf[..]), PhantomData) } } diff --git a/frame/session/src/historical.rs b/frame/session/src/historical.rs index 6c305a1a1d..5b492d8d21 100644 --- a/frame/session/src/historical.rs +++ b/frame/session/src/historical.rs @@ -28,7 +28,7 @@ use sp_std::prelude::*; use codec::{Encode, Decode}; use sp_runtime::KeyTypeId; -use sp_runtime::traits::{Convert, OpaqueKeys, Hash as HashT}; +use sp_runtime::traits::{Convert, OpaqueKeys}; use frame_support::{decl_module, decl_storage}; use frame_support::{Parameter, print}; use sp_trie::{MemoryDB, Trie, TrieMut, Recorder, EMPTY_PREFIX}; @@ -155,14 +155,12 @@ impl crate::SessionManager for NoteHistoricalRoot = <::Hashing as HashT>::Hasher; - /// A tuple of the validator's ID and their full identification. pub type IdentificationTuple = (::ValidatorId, ::FullIdentification); /// a trie instance for checking and generating proofs. pub struct ProvingTrie { - db: MemoryDB>, + db: MemoryDB, root: T::Hash, } diff --git a/primitives/api/proc-macro/src/impl_runtime_apis.rs b/primitives/api/proc-macro/src/impl_runtime_apis.rs index 770a843bfa..07d7ae4040 100644 --- a/primitives/api/proc-macro/src/impl_runtime_apis.rs +++ b/primitives/api/proc-macro/src/impl_runtime_apis.rs @@ -237,7 +237,7 @@ fn generate_runtime_api_base_structures() -> Result { pub struct RuntimeApiImpl + 'static> where // Rust bug: https://github.com/rust-lang/rust/issues/24159 - C::StateBackend: #crate_::StateBackend<#crate_::HasherFor>, + C::StateBackend: #crate_::StateBackend<#crate_::HashFor>, { call: &'static C, commit_on_success: std::cell::RefCell, @@ -257,7 +257,7 @@ fn generate_runtime_api_base_structures() -> Result { for RuntimeApiImpl where // Rust bug: https://github.com/rust-lang/rust/issues/24159 - C::StateBackend: #crate_::StateBackend<#crate_::HasherFor>, + C::StateBackend: #crate_::StateBackend<#crate_::HashFor>, {} #[cfg(any(feature = "std", test))] @@ -265,7 +265,7 @@ fn generate_runtime_api_base_structures() -> Result { for RuntimeApiImpl where // Rust bug: https://github.com/rust-lang/rust/issues/24159 - C::StateBackend: #crate_::StateBackend<#crate_::HasherFor>, + C::StateBackend: #crate_::StateBackend<#crate_::HashFor>, {} #[cfg(any(feature = "std", test))] @@ -273,7 +273,7 @@ fn generate_runtime_api_base_structures() -> Result { for RuntimeApiImpl where // Rust bug: https://github.com/rust-lang/rust/issues/24159 - C::StateBackend: #crate_::StateBackend<#crate_::HasherFor>, + C::StateBackend: #crate_::StateBackend<#crate_::HashFor>, { type Error = C::Error; } @@ -283,7 +283,7 @@ fn generate_runtime_api_base_structures() -> Result { RuntimeApiImpl where // Rust bug: https://github.com/rust-lang/rust/issues/24159 - C::StateBackend: #crate_::StateBackend<#crate_::HasherFor>, + C::StateBackend: #crate_::StateBackend<#crate_::HashFor>, { type StateBackend = C::StateBackend; @@ -327,7 +327,7 @@ fn generate_runtime_api_base_structures() -> Result { &self, backend: &Self::StateBackend, changes_trie_state: Option<&#crate_::ChangesTrieState< - #crate_::HasherFor, + #crate_::HashFor, #crate_::NumberFor, >>, parent_hash: Block::Hash, @@ -351,7 +351,7 @@ fn generate_runtime_api_base_structures() -> Result { where C: #crate_::CallApiAt + 'static, // Rust bug: https://github.com/rust-lang/rust/issues/24159 - C::StateBackend: #crate_::StateBackend<#crate_::HasherFor>, + C::StateBackend: #crate_::StateBackend<#crate_::HashFor>, { type RuntimeApi = RuntimeApiImpl; @@ -373,7 +373,7 @@ fn generate_runtime_api_base_structures() -> Result { impl> RuntimeApiImpl where // Rust bug: https://github.com/rust-lang/rust/issues/24159 - C::StateBackend: #crate_::StateBackend<#crate_::HasherFor>, + C::StateBackend: #crate_::StateBackend<#crate_::HashFor>, { fn call_api_at< R: #crate_::Encode + #crate_::Decode + PartialEq, @@ -603,7 +603,7 @@ impl<'a> Fold for ApiRuntimeImplToApiRuntimeApiImpl<'a> { where_clause.predicates.push( parse_quote! { RuntimeApiImplCall::StateBackend: - #crate_::StateBackend<#crate_::HasherFor<__SR_API_BLOCK__>> + #crate_::StateBackend<#crate_::HashFor<__SR_API_BLOCK__>> } ); diff --git a/primitives/api/src/lib.rs b/primitives/api/src/lib.rs index bde00d4817..0901be5831 100644 --- a/primitives/api/src/lib.rs +++ b/primitives/api/src/lib.rs @@ -50,7 +50,7 @@ pub use sp_core::to_substrate_wasm_fn_return_value; #[doc(hidden)] pub use sp_runtime::{ traits::{ - Block as BlockT, GetNodeBlockType, GetRuntimeBlockType, HasherFor, NumberFor, + Block as BlockT, GetNodeBlockType, GetRuntimeBlockType, HashFor, NumberFor, Header as HeaderT, Hash as HashT, }, generic::BlockId, transaction_validity::TransactionValidity, @@ -228,22 +228,20 @@ pub use sp_api_proc_macro::impl_runtime_apis; /// A type that records all accessed trie nodes and generates a proof out of it. #[cfg(feature = "std")] -pub type ProofRecorder = sp_state_machine::ProofRecorder< - <<::Header as HeaderT>::Hashing as HashT>::Hasher ->; +pub type ProofRecorder = sp_state_machine::ProofRecorder>; /// A type that is used as cache for the storage transactions. #[cfg(feature = "std")] pub type StorageTransactionCache = sp_state_machine::StorageTransactionCache< - >>::Transaction, HasherFor, NumberFor + >>::Transaction, HashFor, NumberFor >; #[cfg(feature = "std")] pub type StorageChanges = sp_state_machine::StorageChanges< - >>::Transaction, - HasherFor, + >>::Transaction, + HashFor, NumberFor >; @@ -255,7 +253,7 @@ pub type StateBackendFor = /// Extract the state backend transaction type for a type that implements `ProvideRuntimeApi`. #[cfg(feature = "std")] pub type TransactionFor = - as StateBackend>>::Transaction; + as StateBackend>>::Transaction; /// Something that can be constructed to a runtime api. #[cfg(feature = "std")] @@ -279,7 +277,7 @@ pub trait ApiErrorExt { #[cfg(feature = "std")] pub trait ApiExt: ApiErrorExt { /// The state backend that is used to store the block states. - type StateBackend: StateBackend>; + type StateBackend: StateBackend>; /// The given closure will be called with api instance. Inside the closure any api call is /// allowed. After doing the api call, the closure is allowed to map the `Result` to a @@ -328,7 +326,7 @@ pub trait ApiExt: ApiErrorExt { fn into_storage_changes( &self, backend: &Self::StateBackend, - changes_trie_state: Option<&ChangesTrieState, NumberFor>>, + changes_trie_state: Option<&ChangesTrieState, NumberFor>>, parent_hash: Block::Hash, ) -> Result, String> where Self: Sized; } @@ -355,7 +353,7 @@ pub enum InitializeBlock<'a, Block: BlockT> { /// Parameters for [`CallApiAt::call_api_at`]. #[cfg(feature = "std")] -pub struct CallApiAtParams<'a, Block: BlockT, C, NC, Backend: StateBackend>> { +pub struct CallApiAtParams<'a, Block: BlockT, C, NC, Backend: StateBackend>> { /// A reference to something that implements the [`Core`] api. pub core_api: &'a C, /// The block id that determines the state that should be setup when calling the function. @@ -389,7 +387,7 @@ pub trait CallApiAt { type Error: std::fmt::Debug + From; /// The state backend that is used to store the block states. - type StateBackend: StateBackend>; + type StateBackend: StateBackend>; /// Calls the given api function with the given encoded arguments at the given block and returns /// the encoded result. diff --git a/primitives/api/test/tests/runtime_calls.rs b/primitives/api/test/tests/runtime_calls.rs index 64c20473d1..9088f18265 100644 --- a/primitives/api/test/tests/runtime_calls.rs +++ b/primitives/api/test/tests/runtime_calls.rs @@ -18,9 +18,9 @@ use sp_api::ProvideRuntimeApi; use substrate_test_runtime_client::{ prelude::*, DefaultTestClientBuilderExt, TestClientBuilder, - runtime::{TestAPI, DecodeFails, Transfer, Header}, + runtime::{TestAPI, DecodeFails, Transfer, Block}, }; -use sp_runtime::{generic::BlockId, traits::{Header as HeaderT, Hash as HashT}}; +use sp_runtime::{generic::BlockId, traits::{Header as HeaderT, HashFor}}; use sp_state_machine::{ ExecutionStrategy, create_proof_check_backend, execution_proof_check_on_trie_backend, @@ -184,7 +184,7 @@ fn record_proof_works() { builder.push(transaction.clone()).unwrap(); let (block, _, proof) = builder.build().expect("Bake block").into_inner(); - let backend = create_proof_check_backend::<<
::Hashing as HashT>::Hasher>( + let backend = create_proof_check_backend::>( storage_root, proof.expect("Proof was generated"), ).expect("Creates proof backend."); diff --git a/primitives/consensus/common/src/block_import.rs b/primitives/consensus/common/src/block_import.rs index 3000477ded..eb90ac9f1d 100644 --- a/primitives/consensus/common/src/block_import.rs +++ b/primitives/consensus/common/src/block_import.rs @@ -16,7 +16,7 @@ //! Block import helpers. -use sp_runtime::traits::{Block as BlockT, DigestItemFor, Header as HeaderT, NumberFor, HasherFor}; +use sp_runtime::traits::{Block as BlockT, DigestItemFor, Header as HeaderT, NumberFor, HashFor}; use sp_runtime::Justification; use serde::{Serialize, Deserialize}; use std::borrow::Cow; @@ -139,7 +139,7 @@ pub struct BlockImportParams { /// The changes to the storage to create the state for the block. If this is `Some(_)`, /// the block import will not need to re-execute the block for importing it. pub storage_changes: Option< - sp_state_machine::StorageChanges, NumberFor> + sp_state_machine::StorageChanges, NumberFor> >, /// Is this block finalized already? /// `true` implies instant finality. diff --git a/primitives/consensus/common/src/lib.rs b/primitives/consensus/common/src/lib.rs index 4927faede0..09dc031dc9 100644 --- a/primitives/consensus/common/src/lib.rs +++ b/primitives/consensus/common/src/lib.rs @@ -32,7 +32,7 @@ use std::sync::Arc; use std::time::Duration; use sp_runtime::{ - generic::BlockId, traits::{Block as BlockT, DigestFor, NumberFor, HasherFor}, + generic::BlockId, traits::{Block as BlockT, DigestFor, NumberFor, HashFor}, }; use futures::prelude::*; pub use sp_inherents::InherentData; @@ -93,7 +93,7 @@ pub struct Proposal { /// Optional proof that was recorded while building the block. pub proof: Option, /// The storage changes while building this block. - pub storage_changes: sp_state_machine::StorageChanges, NumberFor>, + pub storage_changes: sp_state_machine::StorageChanges, NumberFor>, } /// Used as parameter to [`Proposer`] to tell the requirement on recording a proof. diff --git a/primitives/core/src/hasher.rs b/primitives/core/src/hasher.rs index 68fce90644..28da432da7 100644 --- a/primitives/core/src/hasher.rs +++ b/primitives/core/src/hasher.rs @@ -16,27 +16,10 @@ //! Substrate Blake2b Hasher implementation -use hash_db::Hasher; -use hash256_std_hasher::Hash256StdHasher; -use crate::hash::H256; - pub mod blake2 { - use super::{Hasher, Hash256StdHasher, H256}; - #[cfg(feature = "std")] - use crate::hashing::blake2_256; - - #[cfg(not(feature = "std"))] - extern "C" { - fn ext_blake2_256(data: *const u8, len: u32, out: *mut u8); - } - #[cfg(not(feature = "std"))] - fn blake2_256(data: &[u8]) -> [u8; 32] { - let mut result: [u8; 32] = Default::default(); - unsafe { - ext_blake2_256(data.as_ptr(), data.len() as u32, result.as_mut_ptr()); - } - result - } + use hash_db::Hasher; + use hash256_std_hasher::Hash256StdHasher; + use crate::hash::H256; /// Concrete implementation of Hasher using Blake2b 256-bit hashes #[derive(Debug)] @@ -46,8 +29,9 @@ pub mod blake2 { type Out = H256; type StdHasher = Hash256StdHasher; const LENGTH: usize = 32; + fn hash(x: &[u8]) -> Self::Out { - blake2_256(x).into() + crate::hashing::blake2_256(x).into() } } } diff --git a/primitives/core/src/lib.rs b/primitives/core/src/lib.rs index 01a96d8853..79721b9b76 100644 --- a/primitives/core/src/lib.rs +++ b/primitives/core/src/lib.rs @@ -61,6 +61,7 @@ pub mod ed25519; pub mod sr25519; pub mod ecdsa; pub mod hash; +#[cfg(feature = "std")] mod hasher; pub mod offchain; pub mod sandbox; @@ -77,8 +78,7 @@ pub use changes_trie::{ChangesTrieConfiguration, ChangesTrieConfigurationRange}; pub use crypto::{DeriveJunction, Pair, Public}; pub use hash_db::Hasher; -// Switch back to Blake after PoC-3 is out -// pub use self::hasher::blake::BlakeHasher; +#[cfg(feature = "std")] pub use self::hasher::blake2::Blake2Hasher; pub use sp_storage as storage; diff --git a/primitives/io/src/lib.rs b/primitives/io/src/lib.rs index aef3eed5aa..4b520a240a 100644 --- a/primitives/io/src/lib.rs +++ b/primitives/io/src/lib.rs @@ -915,56 +915,6 @@ pub fn oom(_: core::alloc::Layout) -> ! { #[cfg(feature = "std")] pub type TestExternalities = sp_state_machine::TestExternalities; -#[cfg(feature = "std")] -mod ext_blake2_256 { - use sp_wasm_interface::{Signature, Function, HostFunctions, ValueType, Value, FunctionContext}; - - /// There is a custom `extern function` in `sp_core::hasher` for `ext_blake2_256` hasher. This - /// custom extern was missed to remove and requires us to support this now. This type is a custom - /// implementation for the wasm function in native. - pub struct ExtBlake2_256; - - impl HostFunctions for ExtBlake2_256 { - fn host_functions() -> Vec<&'static dyn Function> { - vec![&ExtBlake2_256] - } - } - - impl Function for ExtBlake2_256 { - fn name(&self) -> &str { - "ext_blake2_256" - } - - fn signature(&self) -> Signature { - Signature::new_with_args(&[ValueType::I32, ValueType::I32, ValueType::I32][..]) - } - - fn execute( - &self, - context: &mut dyn FunctionContext, - args: &mut dyn Iterator, - ) -> sp_wasm_interface::Result> { - let data = args.next().and_then(|v| v.as_i32()) - .ok_or_else(|| "`data` not present or not an `i32`")? as u32; - let len = args.next().and_then(|v| v.as_i32()) - .ok_or_else(|| "`len` not present or not an `i32`")? as u32; - let out = args.next().and_then(|v| v.as_i32()) - .ok_or_else(|| "`out` not present or not an `i32`")? as u32; - - let result: [u8; 32] = if len == 0 { - sp_core::hashing::blake2_256(&[0u8; 0]) - } else { - let mem = context.read_memory(data.into(), len) - .map_err(|_| "Invalid attempt to get data in ext_blake2_256")?; - sp_core::hashing::blake2_256(&mem) - }; - context.write_memory(out.into(), &result) - .map_err(|_| "Invalid attempt to set result in ext_blake2_256")?; - Ok(None) - } - } -} - /// The host functions Substrate provides for the Wasm runtime environment. /// /// All these host functions will be callable from inside the Wasm environment. @@ -979,7 +929,6 @@ pub type SubstrateHostFunctions = ( logging::HostFunctions, sandbox::HostFunctions, crate::trie::HostFunctions, - ext_blake2_256::ExtBlake2_256, ); #[cfg(test)] diff --git a/primitives/runtime-interface/test-wasm/src/lib.rs b/primitives/runtime-interface/test-wasm/src/lib.rs index 2e1ab52d67..ee7120b1b8 100644 --- a/primitives/runtime-interface/test-wasm/src/lib.rs +++ b/primitives/runtime-interface/test-wasm/src/lib.rs @@ -231,14 +231,4 @@ wasm_export_functions! { } assert_eq!(0, len); } - - fn test_ext_blake2_256() { - use sp_core::Hasher; - - let data = "hey, hash me please!"; - let hash = sp_core::Blake2Hasher::hash(data.as_bytes()); - - let expected = sp_io::hashing::blake2_256(data.as_bytes()); - assert_eq!(&expected, hash.as_ref()); - } } diff --git a/primitives/runtime-interface/test/Cargo.toml b/primitives/runtime-interface/test/Cargo.toml index 6694272529..53c05b68b3 100644 --- a/primitives/runtime-interface/test/Cargo.toml +++ b/primitives/runtime-interface/test/Cargo.toml @@ -13,5 +13,5 @@ sp-runtime-interface = { version = "2.0.0-alpha.2", path = "../" } sc-executor = { version = "0.8.0-alpha.2", path = "../../../client/executor" } sp-runtime-interface-test-wasm = { version = "2.0.0-dev", path = "../test-wasm" } sp-state-machine = { version = "0.8.0-alpha.2", path = "../../../primitives/state-machine" } -sp-core = { version = "2.0.0-alpha.2", path = "../../core" } +sp-runtime = { version = "2.0.0-alpha.2", path = "../../runtime" } sp-io = { version = "2.0.0-alpha.2", path = "../../io" } diff --git a/primitives/runtime-interface/test/src/lib.rs b/primitives/runtime-interface/test/src/lib.rs index 5c5d1db970..01fc0a46b7 100644 --- a/primitives/runtime-interface/test/src/lib.rs +++ b/primitives/runtime-interface/test/src/lib.rs @@ -23,7 +23,7 @@ use sp_runtime_interface::*; use sp_runtime_interface_test_wasm::{WASM_BINARY, test_api::HostFunctions}; use sp_wasm_interface::HostFunctions as HostFunctionsT; -type TestExternalities = sp_state_machine::TestExternalities; +type TestExternalities = sp_state_machine::TestExternalities; fn call_wasm_method(method: &str) -> TestExternalities { let mut ext = TestExternalities::default(); @@ -127,8 +127,3 @@ fn test_encoded_return_value_memory_is_freed() { fn test_array_return_value_memory_is_freed() { call_wasm_method::("test_array_return_value_memory_is_freed"); } - -#[test] -fn test_ext_blake2_256() { - call_wasm_method::("test_ext_blake2_256"); -} diff --git a/primitives/runtime/Cargo.toml b/primitives/runtime/Cargo.toml index 430d29d8e2..84e452a5b4 100644 --- a/primitives/runtime/Cargo.toml +++ b/primitives/runtime/Cargo.toml @@ -24,6 +24,7 @@ rand = { version = "0.7.2", optional = true } impl-trait-for-tuples = "0.1.3" sp-inherents = { version = "2.0.0-alpha.2", default-features = false, path = "../inherents" } parity-util-mem = { version = "0.5.1", default-features = false, features = ["primitive-types"] } +hash256-std-hasher = { version = "0.15.2", default-features = false } [dev-dependencies] serde_json = "1.0.41" @@ -44,4 +45,5 @@ std = [ "serde", "sp-inherents/std", "parity-util-mem/std", + "hash256-std-hasher/std", ] diff --git a/primitives/runtime/src/random_number_generator.rs b/primitives/runtime/src/random_number_generator.rs index e741aac097..c3cd3dfb90 100644 --- a/primitives/runtime/src/random_number_generator.rs +++ b/primitives/runtime/src/random_number_generator.rs @@ -66,7 +66,7 @@ impl RandomNumberGenerator { loop { if self.offset() + needed > self.current.as_ref().len() { // rehash - self.current = Hashing::hash(self.current.as_ref()); + self.current = ::hash(self.current.as_ref()); self.offset = 0; } let data = &self.current.as_ref()[self.offset()..self.offset() + needed]; diff --git a/primitives/runtime/src/traits.rs b/primitives/runtime/src/traits.rs index fef20c826a..d9c32d221c 100644 --- a/primitives/runtime/src/traits.rs +++ b/primitives/runtime/src/traits.rs @@ -25,7 +25,7 @@ use std::fmt::Display; use std::str::FromStr; #[cfg(feature = "std")] use serde::{Serialize, Deserialize, de::DeserializeOwned}; -use sp_core::{self, Hasher, Blake2Hasher, TypeId, RuntimeDebug}; +use sp_core::{self, Hasher, TypeId, RuntimeDebug}; use crate::codec::{Codec, Encode, Decode}; use crate::transaction_validity::{ ValidTransaction, TransactionValidity, TransactionValidityError, UnknownTransaction, @@ -369,20 +369,19 @@ pub trait OffchainWorker { /// Abstraction around hashing // Stupid bug in the Rust compiler believes derived // traits must be fulfilled by all type parameters. -pub trait Hash: 'static + MaybeSerializeDeserialize + Debug + Clone + Eq + PartialEq { +pub trait Hash: 'static + MaybeSerializeDeserialize + Debug + Clone + Eq + PartialEq + Hasher::Output> { /// The hash type produced. type Output: Member + MaybeSerializeDeserialize + Debug + sp_std::hash::Hash + AsRef<[u8]> + AsMut<[u8]> + Copy + Default + Encode + Decode; - /// The associated hash_db Hasher type. - type Hasher: Hasher; - /// Produce the hash of some byte-slice. - fn hash(s: &[u8]) -> Self::Output; + fn hash(s: &[u8]) -> Self::Output { + ::hash(s) + } /// Produce the hash of some codec-encodable value. fn hash_of(s: &S) -> Self::Output { - Encode::using_encoded(s, Self::hash) + Encode::using_encoded(s, ::hash) } /// The ordered Patricia tree root of the given `input`. @@ -397,12 +396,18 @@ pub trait Hash: 'static + MaybeSerializeDeserialize + Debug + Clone + Eq + Parti #[cfg_attr(feature = "std", derive(Serialize, Deserialize))] pub struct BlakeTwo256; -impl Hash for BlakeTwo256 { - type Output = sp_core::H256; - type Hasher = Blake2Hasher; - fn hash(s: &[u8]) -> Self::Output { +impl Hasher for BlakeTwo256 { + type Out = sp_core::H256; + type StdHasher = hash256_std_hasher::Hash256StdHasher; + const LENGTH: usize = 32; + + fn hash(s: &[u8]) -> Self::Out { sp_io::hashing::blake2_256(s).into() } +} + +impl Hash for BlakeTwo256 { + type Output = sp_core::H256; fn trie_root(input: Vec<(Vec, Vec)>) -> Self::Output { sp_io::trie::blake2_256_root(input) @@ -616,8 +621,6 @@ pub trait ExtrinsicMetadata { type SignedExtensions: SignedExtension; } -/// Extract the hasher type for a block. -pub type HasherFor = as Hash>::Hasher; /// Extract the hashing type for a block. pub type HashFor = <::Header as Header>::Hashing; /// Extract the number type for a block. diff --git a/primitives/state-machine/Cargo.toml b/primitives/state-machine/Cargo.toml index 51f311e44a..16f921c3ac 100644 --- a/primitives/state-machine/Cargo.toml +++ b/primitives/state-machine/Cargo.toml @@ -25,6 +25,7 @@ sp-externalities = { version = "0.8.0-alpha.2", path = "../externalities" } [dev-dependencies] hex-literal = "0.2.1" +sp-runtime = { version = "2.0.0-alpha.2", path = "../runtime" } [features] default = [] diff --git a/primitives/state-machine/src/basic.rs b/primitives/state-machine/src/basic.rs index 966648bc82..7252ae10e9 100644 --- a/primitives/state-machine/src/basic.rs +++ b/primitives/state-machine/src/basic.rs @@ -350,7 +350,7 @@ mod tests { top: Default::default(), children: map![ child_storage.clone() => StorageChild { - data: map![ b"doe".to_vec() => b"reindeer".to_vec() ], + data: map![ b"doe".to_vec() => b"reindeer".to_vec() ], child_info: CHILD_INFO_1.to_owned(), } ] diff --git a/primitives/state-machine/src/changes_trie/changes_iterator.rs b/primitives/state-machine/src/changes_trie/changes_iterator.rs index 9f2d44967d..685786218c 100644 --- a/primitives/state-machine/src/changes_trie/changes_iterator.rs +++ b/primitives/state-machine/src/changes_trie/changes_iterator.rs @@ -376,13 +376,13 @@ impl<'a, H, Number> Iterator for ProvingDrilldownIterator<'a, H, Number> #[cfg(test)] mod tests { use std::iter::FromIterator; - use sp_core::Blake2Hasher; use crate::changes_trie::Configuration; use crate::changes_trie::input::InputPair; use crate::changes_trie::storage::InMemoryStorage; + use sp_runtime::traits::BlakeTwo256; use super::*; - fn prepare_for_drilldown() -> (Configuration, InMemoryStorage) { + fn prepare_for_drilldown() -> (Configuration, InMemoryStorage) { let config = Configuration { digest_interval: 4, digest_levels: 2 }; let backend = InMemoryStorage::with_inputs(vec![ // digest: 1..4 => [(3, 0)] @@ -447,7 +447,7 @@ mod tests { #[test] fn drilldown_iterator_works() { let (config, storage) = prepare_for_drilldown(); - let drilldown_result = key_changes::( + let drilldown_result = key_changes::( configuration_range(&config, 0), &storage, 1, @@ -458,7 +458,7 @@ mod tests { ).and_then(Result::from_iter); assert_eq!(drilldown_result, Ok(vec![(8, 2), (8, 1), (6, 3), (3, 0)])); - let drilldown_result = key_changes::( + let drilldown_result = key_changes::( configuration_range(&config, 0), &storage, 1, @@ -469,7 +469,7 @@ mod tests { ).and_then(Result::from_iter); assert_eq!(drilldown_result, Ok(vec![])); - let drilldown_result = key_changes::( + let drilldown_result = key_changes::( configuration_range(&config, 0), &storage, 1, @@ -480,7 +480,7 @@ mod tests { ).and_then(Result::from_iter); assert_eq!(drilldown_result, Ok(vec![(3, 0)])); - let drilldown_result = key_changes::( + let drilldown_result = key_changes::( configuration_range(&config, 0), &storage, 1, @@ -491,7 +491,7 @@ mod tests { ).and_then(Result::from_iter); assert_eq!(drilldown_result, Ok(vec![(6, 3), (3, 0)])); - let drilldown_result = key_changes::( + let drilldown_result = key_changes::( configuration_range(&config, 0), &storage, 7, @@ -502,7 +502,7 @@ mod tests { ).and_then(Result::from_iter); assert_eq!(drilldown_result, Ok(vec![(8, 2), (8, 1)])); - let drilldown_result = key_changes::( + let drilldown_result = key_changes::( configuration_range(&config, 0), &storage, 5, @@ -519,7 +519,7 @@ mod tests { let (config, storage) = prepare_for_drilldown(); storage.clear_storage(); - assert!(key_changes::( + assert!(key_changes::( configuration_range(&config, 0), &storage, 1, @@ -529,7 +529,7 @@ mod tests { &[42], ).and_then(|i| i.collect::, _>>()).is_err()); - assert!(key_changes::( + assert!(key_changes::( configuration_range(&config, 0), &storage, 1, @@ -543,7 +543,7 @@ mod tests { #[test] fn drilldown_iterator_fails_when_range_is_invalid() { let (config, storage) = prepare_for_drilldown(); - assert!(key_changes::( + assert!(key_changes::( configuration_range(&config, 0), &storage, 1, @@ -552,7 +552,7 @@ mod tests { None, &[42], ).is_err()); - assert!(key_changes::( + assert!(key_changes::( configuration_range(&config, 0), &storage, 20, @@ -570,12 +570,12 @@ mod tests { // create drilldown iterator that records all trie nodes during drilldown let (remote_config, remote_storage) = prepare_for_drilldown(); - let remote_proof = key_changes_proof::( + let remote_proof = key_changes_proof::( configuration_range(&remote_config, 0), &remote_storage, 1, &AnchorBlockId { hash: Default::default(), number: 16 }, 16, None, &[42]).unwrap(); let (remote_config, remote_storage) = prepare_for_drilldown(); - let remote_proof_child = key_changes_proof::( + let remote_proof_child = key_changes_proof::( configuration_range(&remote_config, 0), &remote_storage, 1, &AnchorBlockId { hash: Default::default(), number: 16 }, 16, Some(&b"1"[..]), &[42]).unwrap(); @@ -584,13 +584,13 @@ mod tests { // create drilldown iterator that works the same, but only depends on trie let (local_config, local_storage) = prepare_for_drilldown(); local_storage.clear_storage(); - let local_result = key_changes_proof_check::( + let local_result = key_changes_proof_check::( configuration_range(&local_config, 0), &local_storage, remote_proof, 1, &AnchorBlockId { hash: Default::default(), number: 16 }, 16, None, &[42]); let (local_config, local_storage) = prepare_for_drilldown(); local_storage.clear_storage(); - let local_result_child = key_changes_proof_check::( + let local_result_child = key_changes_proof_check::( configuration_range(&local_config, 0), &local_storage, remote_proof_child, 1, &AnchorBlockId { hash: Default::default(), number: 16 }, 16, Some(&b"1"[..]), &[42]); @@ -621,7 +621,7 @@ mod tests { input[91 - 1].1.push(InputPair::DigestIndex(DigestIndex { block: 91, key: vec![42] }, vec![80])); let storage = InMemoryStorage::with_inputs(input, vec![]); - let drilldown_result = key_changes::( + let drilldown_result = key_changes::( config_range, &storage, 1, diff --git a/primitives/state-machine/src/changes_trie/prune.rs b/primitives/state-machine/src/changes_trie/prune.rs index f6be3223ae..87923dc2f5 100644 --- a/primitives/state-machine/src/changes_trie/prune.rs +++ b/primitives/state-machine/src/changes_trie/prune.rs @@ -114,14 +114,15 @@ fn prune_trie( mod tests { use std::collections::HashSet; use sp_trie::MemoryDB; - use sp_core::{H256, Blake2Hasher}; + use sp_core::H256; use crate::backend::insert_into_memory_db; use crate::changes_trie::storage::InMemoryStorage; use codec::Encode; + use sp_runtime::traits::BlakeTwo256; use super::*; fn prune_by_collect( - storage: &dyn Storage, + storage: &dyn Storage, first: u64, last: u64, current_block: u64, @@ -135,27 +136,26 @@ mod tests { #[test] fn prune_works() { - fn prepare_storage() -> InMemoryStorage { - + fn prepare_storage() -> InMemoryStorage { let child_key = ChildIndex { block: 67u64, storage_key: b"1".to_vec() }.encode(); - let mut mdb1 = MemoryDB::::default(); - let root1 = insert_into_memory_db::( + let mut mdb1 = MemoryDB::::default(); + let root1 = insert_into_memory_db::( &mut mdb1, vec![(vec![10], vec![20])]).unwrap(); - let mut mdb2 = MemoryDB::::default(); - let root2 = insert_into_memory_db::( + let mut mdb2 = MemoryDB::::default(); + let root2 = insert_into_memory_db::( &mut mdb2, vec![(vec![11], vec![21]), (vec![12], vec![22])], ).unwrap(); - let mut mdb3 = MemoryDB::::default(); - let ch_root3 = insert_into_memory_db::( + let mut mdb3 = MemoryDB::::default(); + let ch_root3 = insert_into_memory_db::( &mut mdb3, vec![(vec![110], vec![120])]).unwrap(); - let root3 = insert_into_memory_db::(&mut mdb3, vec![ + let root3 = insert_into_memory_db::(&mut mdb3, vec![ (vec![13], vec![23]), (vec![14], vec![24]), (child_key, ch_root3.as_ref().encode()), ]).unwrap(); - let mut mdb4 = MemoryDB::::default(); - let root4 = insert_into_memory_db::( + let mut mdb4 = MemoryDB::::default(); + let root4 = insert_into_memory_db::( &mut mdb4, vec![(vec![15], vec![25])], ).unwrap(); diff --git a/primitives/state-machine/src/in_memory_backend.rs b/primitives/state-machine/src/in_memory_backend.rs index 0a29468bbc..7e474d45b6 100644 --- a/primitives/state-machine/src/in_memory_backend.rs +++ b/primitives/state-machine/src/in_memory_backend.rs @@ -362,11 +362,12 @@ impl Backend for InMemory where H::Out: Codec { #[cfg(test)] mod tests { use super::*; + use sp_runtime::traits::BlakeTwo256; /// Assert in memory backend with only child trie keys works as trie backend. #[test] fn in_memory_with_child_trie_only() { - let storage = InMemory::::default(); + let storage = InMemory::::default(); let child_info = OwnedChildInfo::new_default(b"unique_id_1".to_vec()); let mut storage = storage.update( vec![( diff --git a/primitives/state-machine/src/lib.rs b/primitives/state-machine/src/lib.rs index 2c6245c70d..31d4f3a804 100644 --- a/primitives/state-machine/src/lib.rs +++ b/primitives/state-machine/src/lib.rs @@ -727,9 +727,8 @@ mod tests { use super::*; use super::ext::Ext; use super::changes_trie::Configuration as ChangesTrieConfig; - use sp_core::{ - Blake2Hasher, map, traits::{Externalities, RuntimeCode}, storage::ChildStorageKey, - }; + use sp_core::{map, traits::{Externalities, RuntimeCode}, storage::ChildStorageKey}; + use sp_runtime::traits::BlakeTwo256; #[derive(Clone)] struct DummyCodeExecutor { @@ -912,7 +911,7 @@ mod tests { ).unwrap(); // check proof locally - let local_result = execution_proof_check::( + let local_result = execution_proof_check::( remote_root, remote_proof, &mut Default::default(), @@ -935,7 +934,7 @@ mod tests { b"abc".to_vec() => b"2".to_vec(), b"bbb".to_vec() => b"3".to_vec() ]; - let mut state = InMemoryBackend::::from(initial); + let mut state = InMemoryBackend::::from(initial); let backend = state.as_trie_backend().unwrap(); let mut overlay = OverlayedChanges { committed: map![ @@ -978,7 +977,7 @@ mod tests { #[test] fn set_child_storage_works() { - let mut state = InMemoryBackend::::default(); + let mut state = InMemoryBackend::::default(); let backend = state.as_trie_backend().unwrap(); let mut overlay = OverlayedChanges::default(); let mut cache = StorageTransactionCache::default(); @@ -1025,12 +1024,12 @@ mod tests { let remote_root = remote_backend.storage_root(::std::iter::empty()).0; let remote_proof = prove_read(remote_backend, &[b"value2"]).unwrap(); // check proof locally - let local_result1 = read_proof_check::( + let local_result1 = read_proof_check::( remote_root, remote_proof.clone(), &[b"value2"], ).unwrap(); - let local_result2 = read_proof_check::( + let local_result2 = read_proof_check::( remote_root, remote_proof.clone(), &[&[0xff]], @@ -1050,13 +1049,13 @@ mod tests { CHILD_INFO_1, &[b"value3"], ).unwrap(); - let local_result1 = read_child_proof_check::( + let local_result1 = read_child_proof_check::( remote_root, remote_proof.clone(), b":child_storage:default:sub1", &[b"value3"], ).unwrap(); - let local_result2 = read_child_proof_check::( + let local_result2 = read_child_proof_check::( remote_root, remote_proof.clone(), b":child_storage:default:sub1", diff --git a/primitives/state-machine/src/proving_backend.rs b/primitives/state-machine/src/proving_backend.rs index 60d891a3f0..119fb59a72 100644 --- a/primitives/state-machine/src/proving_backend.rs +++ b/primitives/state-machine/src/proving_backend.rs @@ -308,16 +308,17 @@ mod tests { use crate::InMemoryBackend; use crate::trie_backend::tests::test_trie; use super::*; - use sp_core::{Blake2Hasher, storage::ChildStorageKey}; + use sp_core::storage::ChildStorageKey; use crate::proving_backend::create_proof_check_backend; use sp_trie::PrefixedMemoryDB; + use sp_runtime::traits::BlakeTwo256; const CHILD_INFO_1: ChildInfo<'static> = ChildInfo::new_default(b"unique_id_1"); const CHILD_INFO_2: ChildInfo<'static> = ChildInfo::new_default(b"unique_id_2"); fn test_proving<'a>( - trie_backend: &'a TrieBackend,Blake2Hasher>, - ) -> ProvingBackend<'a, PrefixedMemoryDB, Blake2Hasher> { + trie_backend: &'a TrieBackend,BlakeTwo256>, + ) -> ProvingBackend<'a, PrefixedMemoryDB, BlakeTwo256> { ProvingBackend::new(trie_backend) } @@ -338,7 +339,7 @@ mod tests { #[test] fn proof_is_invalid_when_does_not_contains_root() { use sp_core::H256; - let result = create_proof_check_backend::( + let result = create_proof_check_backend::( H256::from_low_u64_be(1), StorageProof::empty() ); @@ -361,7 +362,7 @@ mod tests { #[test] fn proof_recorded_and_checked() { let contents = (0..64).map(|i| (vec![i], Some(vec![i]))).collect::>(); - let in_memory = InMemoryBackend::::default(); + let in_memory = InMemoryBackend::::default(); let mut in_memory = in_memory.update(vec![(None, contents)]); let in_memory_root = in_memory.storage_root(::std::iter::empty()).0; (0..64).for_each(|i| assert_eq!(in_memory.storage(&[i]).unwrap().unwrap(), vec![i])); @@ -376,7 +377,7 @@ mod tests { let proof = proving.extract_proof(); - let proof_check = create_proof_check_backend::(in_memory_root.into(), proof).unwrap(); + let proof_check = create_proof_check_backend::(in_memory_root.into(), proof).unwrap(); assert_eq!(proof_check.storage(&[42]).unwrap().unwrap(), vec![42]); } @@ -393,7 +394,7 @@ mod tests { (Some((own2.clone(), CHILD_INFO_2.to_owned())), (10..15).map(|i| (vec![i], Some(vec![i]))).collect()), ]; - let in_memory = InMemoryBackend::::default(); + let in_memory = InMemoryBackend::::default(); let mut in_memory = in_memory.update(contents); let in_memory_root = in_memory.full_storage_root::<_, Vec<_>, _>( ::std::iter::empty(), @@ -425,7 +426,7 @@ mod tests { let proof = proving.extract_proof(); - let proof_check = create_proof_check_backend::( + let proof_check = create_proof_check_backend::( in_memory_root.into(), proof ).unwrap(); @@ -439,7 +440,7 @@ mod tests { assert_eq!(proving.child_storage(&own1[..], CHILD_INFO_1, &[64]), Ok(Some(vec![64]))); let proof = proving.extract_proof(); - let proof_check = create_proof_check_backend::( + let proof_check = create_proof_check_backend::( in_memory_root.into(), proof ).unwrap(); diff --git a/primitives/state-machine/src/testing.rs b/primitives/state-machine/src/testing.rs index 39a34509b7..aec42c7678 100644 --- a/primitives/state-machine/src/testing.rs +++ b/primitives/state-machine/src/testing.rs @@ -34,13 +34,12 @@ use sp_core::{ well_known_keys::{CHANGES_TRIE_CONFIG, CODE, HEAP_PAGES, is_child_storage_key}, Storage, }, - Blake2Hasher, }; use codec::Encode; use sp_externalities::{Extensions, Extension}; /// Simple HashMap-based Externalities impl. -pub struct TestExternalities +pub struct TestExternalities where H::Out: codec::Codec, { @@ -198,11 +197,12 @@ impl sp_externalities::ExtensionStore for TestExternalities where mod tests { use super::*; use sp_core::traits::Externalities; + use sp_runtime::traits::BlakeTwo256; use hex_literal::hex; #[test] fn commit_should_work() { - let mut ext = TestExternalities::::default(); + let mut ext = TestExternalities::::default(); let mut ext = ext.ext(); ext.set_storage(b"doe".to_vec(), b"reindeer".to_vec()); ext.set_storage(b"dog".to_vec(), b"puppy".to_vec()); @@ -213,7 +213,7 @@ mod tests { #[test] fn set_and_retrieve_code() { - let mut ext = TestExternalities::::default(); + let mut ext = TestExternalities::::default(); let mut ext = ext.ext(); let code = vec![1, 2, 3]; @@ -225,6 +225,6 @@ mod tests { #[test] fn check_send() { fn assert_send() {} - assert_send::>(); + assert_send::>(); } } diff --git a/primitives/state-machine/src/trie_backend.rs b/primitives/state-machine/src/trie_backend.rs index dbaae323c0..e64dd590e5 100644 --- a/primitives/state-machine/src/trie_backend.rs +++ b/primitives/state-machine/src/trie_backend.rs @@ -245,9 +245,10 @@ impl, H: Hasher> Backend for TrieBackend where #[cfg(test)] pub mod tests { use std::collections::HashSet; - use sp_core::{Blake2Hasher, H256}; + use sp_core::H256; use codec::Encode; use sp_trie::{TrieMut, PrefixedMemoryDB, trie_types::TrieDBMut, KeySpacedDBMut}; + use sp_runtime::traits::BlakeTwo256; use super::*; const CHILD_KEY_1: &[u8] = b":child_storage:default:sub1"; @@ -255,9 +256,9 @@ pub mod tests { const CHILD_UUID_1: &[u8] = b"unique_id_1"; const CHILD_INFO_1: ChildInfo<'static> = ChildInfo::new_default(CHILD_UUID_1); - fn test_db() -> (PrefixedMemoryDB, H256) { + fn test_db() -> (PrefixedMemoryDB, H256) { let mut root = H256::default(); - let mut mdb = PrefixedMemoryDB::::default(); + let mut mdb = PrefixedMemoryDB::::default(); { let mut mdb = KeySpacedDBMut::new(&mut mdb, CHILD_UUID_1); let mut trie = TrieDBMut::new(&mut mdb, &mut root); @@ -281,7 +282,7 @@ pub mod tests { (mdb, root) } - pub(crate) fn test_trie() -> TrieBackend, Blake2Hasher> { + pub(crate) fn test_trie() -> TrieBackend, BlakeTwo256> { let (mdb, root) = test_db(); TrieBackend::new(mdb, root) } @@ -312,7 +313,7 @@ pub mod tests { #[test] fn pairs_are_empty_on_empty_storage() { - assert!(TrieBackend::, Blake2Hasher>::new( + assert!(TrieBackend::, BlakeTwo256>::new( PrefixedMemoryDB::default(), Default::default(), ).pairs().is_empty()); diff --git a/primitives/trie/Cargo.toml b/primitives/trie/Cargo.toml index ddce910609..ff3c04b541 100644 --- a/primitives/trie/Cargo.toml +++ b/primitives/trie/Cargo.toml @@ -27,6 +27,7 @@ trie-bench = "0.20.0" trie-standardmap = "0.15.2" criterion = "0.2.11" hex-literal = "0.2.1" +sp-runtime = { version = "2.0.0-alpha.2", path = "../runtime" } [features] default = ["std"] diff --git a/primitives/trie/benches/bench.rs b/primitives/trie/benches/bench.rs index 72a53c18d2..d385b4bacd 100644 --- a/primitives/trie/benches/bench.rs +++ b/primitives/trie/benches/bench.rs @@ -20,11 +20,11 @@ criterion_main!(benches); fn benchmark(c: &mut Criterion) { trie_bench::standard_benchmark::< - sp_trie::Layout, + sp_trie::Layout, sp_trie::TrieStream, >(c, "substrate-blake2"); trie_bench::standard_benchmark::< - sp_trie::Layout, + sp_trie::Layout, sp_trie::TrieStream, >(c, "substrate-keccak"); } diff --git a/test-utils/client/src/lib.rs b/test-utils/client/src/lib.rs index afe11903d5..7d22abf3d8 100644 --- a/test-utils/client/src/lib.rs +++ b/test-utils/client/src/lib.rs @@ -33,7 +33,7 @@ pub use sp_keyring::{ ed25519::Keyring as Ed25519Keyring, sr25519::Keyring as Sr25519Keyring, }; -pub use sp_core::{Blake2Hasher, traits::BareCryptoStorePtr}; +pub use sp_core::traits::BareCryptoStorePtr; pub use sp_runtime::{Storage, StorageChild}; pub use sp_state_machine::ExecutionStrategy; pub use self::client_ext::{ClientExt, ClientBlockImportExt}; @@ -41,13 +41,13 @@ pub use self::client_ext::{ClientExt, ClientBlockImportExt}; use std::sync::Arc; use std::collections::HashMap; use sp_core::storage::{well_known_keys, ChildInfo}; -use sp_runtime::traits::Block as BlockT; +use sp_runtime::traits::{Block as BlockT, BlakeTwo256}; use sc_client::LocalCallExecutor; /// Test client light database backend. pub type LightBackend = sc_client::light::backend::Backend< sc_client_db::light::LightStorage, - Blake2Hasher, + BlakeTwo256, >; /// A genesis storage initialization trait. diff --git a/test-utils/runtime/client/src/block_builder_ext.rs b/test-utils/runtime/client/src/block_builder_ext.rs index 6b9a6f79ab..3a9f54d06c 100644 --- a/test-utils/runtime/client/src/block_builder_ext.rs +++ b/test-utils/runtime/client/src/block_builder_ext.rs @@ -19,7 +19,7 @@ use sp_api::{ApiExt, ProvideRuntimeApi}; use sp_core::ChangesTrieConfiguration; use sc_client_api::backend; -use sp_runtime::traits::HasherFor; +use sp_runtime::traits::HashFor; use sc_block_builder::BlockBuilderApi; @@ -50,7 +50,7 @@ impl<'a, A, B> BlockBuilderExt for sc_block_builder::BlockBuilder<'a, substrate_ B: backend::Backend, // Rust bug: https://github.com/rust-lang/rust/issues/24159 backend::StateBackendFor: - sp_api::StateBackend>, + sp_api::StateBackend>, { fn push_transfer(&mut self, transfer: substrate_test_runtime::Transfer) -> Result<(), sp_blockchain::Error> { self.push(transfer.into_signed_tx()) diff --git a/test-utils/runtime/client/src/lib.rs b/test-utils/runtime/client/src/lib.rs index 21cf94dfa6..9a50893024 100644 --- a/test-utils/runtime/client/src/lib.rs +++ b/test-utils/runtime/client/src/lib.rs @@ -33,7 +33,7 @@ pub use self::block_builder_ext::BlockBuilderExt; use sp_core::{sr25519, ChangesTrieConfiguration}; use sp_core::storage::{ChildInfo, Storage, StorageChild}; use substrate_test_runtime::genesismap::{GenesisConfig, additional_storage_with_genesis}; -use sp_runtime::traits::{Block as BlockT, Header as HeaderT, Hash as HashT, NumberFor, HasherFor}; +use sp_runtime::traits::{Block as BlockT, Header as HeaderT, Hash as HashT, NumberFor, HashFor}; use sc_client::{ light::fetcher::{ Fetcher, @@ -82,7 +82,7 @@ pub type LightExecutor = sc_client::light::call_executor::GenesisCallExecutor< sc_client::LocalCallExecutor< sc_client::light::backend::Backend< sc_client_db::light::LightStorage, - HasherFor + HashFor >, NativeExecutor > @@ -243,7 +243,7 @@ impl TestClientBuilderExt for TestClientBuilder< B: sc_client_api::backend::Backend + 'static, // Rust bug: https://github.com/rust-lang/rust/issues/24159 >::State: - sp_api::StateBackend>, + sp_api::StateBackend>, { fn genesis_init_mut(&mut self) -> &mut GenesisParameters { Self::genesis_init_mut(self) diff --git a/test-utils/runtime/client/src/trait_tests.rs b/test-utils/runtime/client/src/trait_tests.rs index 5ceab4355d..4af8aa37b6 100644 --- a/test-utils/runtime/client/src/trait_tests.rs +++ b/test-utils/runtime/client/src/trait_tests.rs @@ -29,7 +29,7 @@ use sc_client_api::blockchain::{Backend as BlockChainBackendT, HeaderBackend}; use substrate_test_client::sp_consensus::BlockOrigin; use substrate_test_runtime::{self, Transfer}; use sp_runtime::generic::BlockId; -use sp_runtime::traits::{Block as BlockT, HasherFor}; +use sp_runtime::traits::{Block as BlockT, HashFor}; use sc_block_builder::BlockBuilderProvider; /// helper to test the `leaves` implementation for various backends @@ -37,7 +37,7 @@ pub fn test_leaves_for_backend(backend: Arc) where B: backend::Backend, // Rust bug: https://github.com/rust-lang/rust/issues/24159 backend::StateBackendFor: - sp_api::StateBackend>, + sp_api::StateBackend>, { // block tree: // G -> A1 -> A2 -> A3 -> A4 -> A5 @@ -206,7 +206,7 @@ pub fn test_children_for_backend(backend: Arc) where B: backend::LocalBackend, // Rust bug: https://github.com/rust-lang/rust/issues/24159 >::State: - sp_api::StateBackend>, + sp_api::StateBackend>, { // block tree: // G -> A1 -> A2 -> A3 -> A4 -> A5 @@ -336,7 +336,7 @@ pub fn test_blockchain_query_by_number_gets_canonical(backend: Arc, // Rust bug: https://github.com/rust-lang/rust/issues/24159 >::State: - sp_api::StateBackend>, + sp_api::StateBackend>, { // block tree: // G -> A1 -> A2 -> A3 -> A4 -> A5 diff --git a/test-utils/runtime/src/lib.rs b/test-utils/runtime/src/lib.rs index 55e153103d..497de36c8b 100644 --- a/test-utils/runtime/src/lib.rs +++ b/test-utils/runtime/src/lib.rs @@ -25,7 +25,7 @@ pub mod system; use sp_std::{prelude::*, marker::PhantomData}; use codec::{Encode, Decode, Input, Error}; -use sp_core::{Blake2Hasher, OpaqueMetadata, RuntimeDebug, ChangesTrieConfiguration}; +use sp_core::{OpaqueMetadata, RuntimeDebug, ChangesTrieConfiguration}; use sp_application_crypto::{ed25519, sr25519, RuntimeAppPublic}; use trie_db::{TrieMut, Trie}; use sp_trie::PrefixedMemoryDB; @@ -419,7 +419,7 @@ fn code_using_trie() -> u64 { let mut root = sp_std::default::Default::default(); let _ = { let v = &pairs; - let mut t = TrieDBMut::::new(&mut mdb, &mut root); + let mut t = TrieDBMut::::new(&mut mdb, &mut root); for i in 0..v.len() { let key: &[u8]= &v[i].0; let val: &[u8] = &v[i].1; @@ -430,7 +430,7 @@ fn code_using_trie() -> u64 { t }; - if let Ok(trie) = TrieDB::::new(&mdb, &root) { + if let Ok(trie) = TrieDB::::new(&mdb, &root) { if let Ok(iter) = trie.iter() { let mut iter_pairs = Vec::new(); for pair in iter { -- GitLab From f633e4614a9bf62448f9a1e2c4fc9deb08c9e5e5 Mon Sep 17 00:00:00 2001 From: Benjamin Kampmann Date: Thu, 5 Mar 2020 08:52:23 +0100 Subject: [PATCH 101/301] Support enabling features with `wasm-builder` (#5131) This adds support for enabling features in the wasm build. The `default` and `std` feature are ignored in the build. --- Cargo.lock | 1 + utils/wasm-builder/Cargo.toml | 1 + utils/wasm-builder/src/wasm_project.rs | 66 +++++++++++++++++++++----- 3 files changed, 55 insertions(+), 13 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 6b3fca15e4..79872ffc6e 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -7819,6 +7819,7 @@ dependencies = [ "build-helper", "cargo_metadata", "fs2", + "itertools", "tempfile", "toml", "walkdir", diff --git a/utils/wasm-builder/Cargo.toml b/utils/wasm-builder/Cargo.toml index 245ec63114..1aac891393 100644 --- a/utils/wasm-builder/Cargo.toml +++ b/utils/wasm-builder/Cargo.toml @@ -18,3 +18,4 @@ walkdir = "2.2.9" fs2 = "0.4.3" wasm-gc-api = "0.1.11" atty = "0.2.13" +itertools = "0.8.2" diff --git a/utils/wasm-builder/src/wasm_project.rs b/utils/wasm-builder/src/wasm_project.rs index c4f00b9cf4..1e6d7fa463 100644 --- a/utils/wasm-builder/src/wasm_project.rs +++ b/utils/wasm-builder/src/wasm_project.rs @@ -28,6 +28,8 @@ use walkdir::WalkDir; use fs2::FileExt; +use itertools::Itertools; + /// Holds the path to the bloaty WASM binary. pub struct WasmBinaryBloaty(PathBuf); @@ -87,8 +89,13 @@ pub fn create_and_compile( // Lock the workspace exclusively for us let _lock = WorkspaceLock::new(&wasm_workspace_root); - let project = create_project(cargo_manifest, &wasm_workspace); - create_wasm_workspace_project(&wasm_workspace, cargo_manifest); + let crate_metadata = MetadataCommand::new() + .manifest_path(cargo_manifest) + .exec() + .expect("`cargo metadata` can not fail on project `Cargo.toml`; qed"); + + let project = create_project(cargo_manifest, &wasm_workspace, &crate_metadata); + create_wasm_workspace_project(&wasm_workspace, &crate_metadata.workspace_root); build_project(&project, default_rustflags); let (wasm_binary, bloaty) = compact_wasm_file( @@ -232,15 +239,9 @@ fn find_and_clear_workspace_members(wasm_workspace: &Path) -> Vec { members } -fn create_wasm_workspace_project(wasm_workspace: &Path, cargo_manifest: &Path) { +fn create_wasm_workspace_project(wasm_workspace: &Path, workspace_root_path: &Path) { let members = find_and_clear_workspace_members(wasm_workspace); - let crate_metadata = MetadataCommand::new() - .manifest_path(cargo_manifest) - .exec() - .expect("`cargo metadata` can not fail on project `Cargo.toml`; qed"); - let workspace_root_path = crate_metadata.workspace_root; - let mut workspace_toml: Table = toml::from_str( &fs::read_to_string( workspace_root_path.join("Cargo.toml"), @@ -281,8 +282,10 @@ fn create_wasm_workspace_project(wasm_workspace: &Path, cargo_manifest: &Path) { p.iter_mut() .filter(|(k, _)| k == &"path") .for_each(|(_, v)| { - if let Some(path) = v.as_str() { - *v = workspace_root_path.join(path).display().to_string().into(); + if let Some(path) = v.as_str().map(PathBuf::from) { + if path.is_relative() { + *v = workspace_root_path.join(path).display().to_string().into(); + } } }) ); @@ -296,11 +299,45 @@ fn create_wasm_workspace_project(wasm_workspace: &Path, cargo_manifest: &Path) { ).expect("WASM workspace `Cargo.toml` writing can not fail; qed"); } +/// Get a list of enabled features for the project. +fn project_enabled_features( + cargo_manifest: &Path, + crate_metadata: &cargo_metadata::Metadata, +) -> Vec { + let package = crate_metadata.packages + .iter() + .find(|p| p.manifest_path == cargo_manifest) + .expect("Wasm project exists in its own metadata; qed"); + + let mut enabled_features = package.features.keys() + .filter(|f| { + let mut feature_env = f.replace("-", "_"); + feature_env.make_ascii_uppercase(); + + // We don't want to enable the `std`/`default` feature for the wasm build and + // we need to check if the feature is enabled by checking the env variable. + *f != "std" + && *f != "default" + && env::var(format!("CARGO_FEATURE_{}", feature_env)) + .map(|v| v == "1") + .unwrap_or_default() + }) + .cloned() + .collect::>(); + + enabled_features.sort(); + enabled_features +} + /// Create the project used to build the wasm binary. /// /// # Returns /// The path to the created project. -fn create_project(cargo_manifest: &Path, wasm_workspace: &Path) -> PathBuf { +fn create_project( + cargo_manifest: &Path, + wasm_workspace: &Path, + crate_metadata: &cargo_metadata::Metadata, +) -> PathBuf { let crate_name = get_crate_name(cargo_manifest); let crate_path = cargo_manifest.parent().expect("Parent path exists; qed"); let wasm_binary = get_wasm_binary_name(cargo_manifest); @@ -308,6 +345,8 @@ fn create_project(cargo_manifest: &Path, wasm_workspace: &Path) -> PathBuf { fs::create_dir_all(project_folder.join("src")).expect("Wasm project dir create can not fail; qed"); + let enabled_features = project_enabled_features(&cargo_manifest, &crate_metadata); + write_file_if_changed( project_folder.join("Cargo.toml"), format!( @@ -322,11 +361,12 @@ fn create_project(cargo_manifest: &Path, wasm_workspace: &Path) -> PathBuf { crate-type = ["cdylib"] [dependencies] - wasm_project = {{ package = "{crate_name}", path = "{crate_path}", default-features = false }} + wasm_project = {{ package = "{crate_name}", path = "{crate_path}", default-features = false, features = [ {features} ] }} "#, crate_name = crate_name, crate_path = crate_path.display(), wasm_binary = wasm_binary, + features = enabled_features.into_iter().map(|f| format!("\"{}\"", f)).join(","), ) ); -- GitLab From e3bef607eb805d80e2ac2e71bb401f5d8ba843a1 Mon Sep 17 00:00:00 2001 From: Gavin Wood Date: Thu, 5 Mar 2020 09:29:12 +0100 Subject: [PATCH 102/301] Task manager for background/async tasks in service (#5092) * Reorganize tasks into task manager * move to separate file and improve api * address api issues * fix spawning inside closures * decouple executor * tasks_setup -> tasks_builder * remove drops * add deprecatiion comment * add pub(super) * fix identation --- client/service/src/builder.rs | 155 +++++++++++------------ client/service/src/lib.rs | 99 ++------------- client/service/src/task_manager.rs | 190 +++++++++++++++++++++++++++++ 3 files changed, 273 insertions(+), 171 deletions(-) create mode 100644 client/service/src/task_manager.rs diff --git a/client/service/src/builder.rs b/client/service/src/builder.rs index bc731dd2de..db60c94997 100644 --- a/client/service/src/builder.rs +++ b/client/service/src/builder.rs @@ -15,7 +15,7 @@ // along with Substrate. If not, see . use crate::{Service, NetworkStatus, NetworkState, error::Error, DEFAULT_PROTOCOL_ID, MallocSizeOfWasm}; -use crate::{SpawnTaskHandle, start_rpc_servers, build_network_future, TransactionPoolAdapter}; +use crate::{TaskManagerBuilder, start_rpc_servers, build_network_future, TransactionPoolAdapter}; use crate::status_sinks; use crate::config::{Configuration, DatabaseConfig, KeystoreConfig}; use sc_client_api::{ @@ -30,7 +30,7 @@ use sp_consensus::import_queue::ImportQueue; use futures::{ Future, FutureExt, StreamExt, channel::mpsc, - future::{select, ready} + future::ready, }; use sc_keystore::{Store as Keystore}; use log::{info, warn, error}; @@ -44,7 +44,6 @@ use sp_runtime::traits::{ use sp_api::ProvideRuntimeApi; use sc_executor::{NativeExecutor, NativeExecutionDispatch}; use std::{ - borrow::Cow, io::{Read, Write, Seek}, marker::PhantomData, sync::Arc, pin::Pin }; @@ -117,6 +116,7 @@ pub struct ServiceBuilder, pub (crate) client: Arc, backend: Arc, + tasks_builder: TaskManagerBuilder, keystore: Arc>, fetcher: Option, select_chain: Option, @@ -181,6 +181,7 @@ type TFullParts = ( TFullClient, Arc>, Arc>, + TaskManagerBuilder, ); /// Creates a new full client for the given config. @@ -212,6 +213,8 @@ fn new_full_parts( KeystoreConfig::None => return Err("No keystore config provided!".into()), }; + let tasks_builder = TaskManagerBuilder::new(); + let executor = NativeExecutor::::new( config.wasm_method, config.default_heap_pages, @@ -262,7 +265,7 @@ fn new_full_parts( )? }; - Ok((client, backend, keystore)) + Ok((client, backend, keystore, tasks_builder)) } impl ServiceBuilder<(), (), TGen, TCSExt, (), (), (), (), (), (), (), (), ()> @@ -285,7 +288,7 @@ where TGen: RuntimeGenesis, TCSExt: Extension { (), TFullBackend, >, Error> { - let (client, backend, keystore) = new_full_parts(&config)?; + let (client, backend, keystore, tasks_builder) = new_full_parts(&config)?; let client = Arc::new(client); @@ -294,6 +297,7 @@ where TGen: RuntimeGenesis, TCSExt: Extension { client, backend, keystore, + tasks_builder, fetcher: None, select_chain: None, import_queue: (), @@ -326,6 +330,8 @@ where TGen: RuntimeGenesis, TCSExt: Extension { (), TLightBackend, >, Error> { + let tasks_builder = TaskManagerBuilder::new(); + let keystore = match &config.keystore { KeystoreConfig::Path { path, password } => Keystore::open( path.clone(), @@ -378,6 +384,7 @@ where TGen: RuntimeGenesis, TCSExt: Extension { config, client, backend, + tasks_builder, keystore, fetcher: Some(fetcher.clone()), select_chain: None, @@ -451,6 +458,7 @@ impl + Send>>, Cow<'static, str>)>(); - // A side-channel for essential tasks to communicate shutdown. let (essential_failed_tx, essential_failed_rx) = mpsc::unbounded(); @@ -869,7 +878,7 @@ ServiceBuilder< imports_external_transactions: !config.roles.is_light(), pool: transaction_pool.clone(), client: client.clone(), - executor: SpawnTaskHandle { sender: to_spawn_tx.clone(), on_exit: exit.clone() }, + executor: tasks_builder.spawn_handle(), }); let protocol_id = { @@ -899,11 +908,9 @@ ServiceBuilder< let network_params = sc_network::config::Params { roles: config.roles, executor: { - let to_spawn_tx = to_spawn_tx.clone(); + let spawn_handle = tasks_builder.spawn_handle(); Some(Box::new(move |fut| { - if let Err(e) = to_spawn_tx.unbounded_send((fut, From::from("libp2p-node"))) { - error!("Failed to spawn libp2p background task: {:?}", e); - } + spawn_handle.spawn("libp2p-node", fut); })) }, network_config: config.network.clone(), @@ -935,20 +942,19 @@ ServiceBuilder< _ => None, }; + let spawn_handle = tasks_builder.spawn_handle(); + // Spawn background tasks which were stacked during the // service building. for (title, background_task) in background_tasks { - let _ = to_spawn_tx.unbounded_send(( - background_task, - title.into(), - )); + spawn_handle.spawn(title, background_task); } { // block notifications let txpool = Arc::downgrade(&transaction_pool); let offchain = offchain_workers.as_ref().map(Arc::downgrade); - let to_spawn_tx_ = to_spawn_tx.clone(); + let notifications_spawn_handle = tasks_builder.spawn_handle(); let network_state_info: Arc = network.clone(); let is_validator = config.roles.is_authority(); @@ -970,15 +976,14 @@ ServiceBuilder< let offchain = offchain.as_ref().and_then(|o| o.upgrade()); match offchain { Some(offchain) if is_new_best => { - let future = offchain.on_block_imported( - &header, - network_state_info.clone(), - is_validator, + notifications_spawn_handle.spawn( + "offchain-on-block", + offchain.on_block_imported( + &header, + network_state_info.clone(), + is_validator, + ), ); - let _ = to_spawn_tx_.unbounded_send(( - Box::pin(future), - From::from("offchain-on-block"), - )); }, Some(_) => log::debug!( target: "sc_offchain", @@ -991,20 +996,19 @@ ServiceBuilder< let txpool = txpool.upgrade(); if let Some(txpool) = txpool.as_ref() { - let future = txpool.maintain(event); - let _ = to_spawn_tx_.unbounded_send(( - Box::pin(future), - From::from("txpool-maintain") - )); + notifications_spawn_handle.spawn( + "txpool-maintain", + txpool.maintain(event), + ); } ready(()) }); - let _ = to_spawn_tx.unbounded_send(( - Box::pin(select(events, exit.clone()).map(drop)), - From::from("txpool-and-offchain-notif"), - )); + spawn_handle.spawn( + "txpool-and-offchain-notif", + events, + ); } { @@ -1024,28 +1028,20 @@ ServiceBuilder< ready(()) }); - let _ = to_spawn_tx.unbounded_send(( - Box::pin(select(events, exit.clone()).map(drop)), - From::from("telemetry-on-block"), - )); + spawn_handle.spawn( + "telemetry-on-block", + events, + ); } // Prometheus metrics let metrics = if let Some((registry, port)) = prometheus_registry_and_port.clone() { let metrics = ServiceMetrics::register(®istry)?; - metrics.node_roles.set(u64::from(config.roles.bits())); - - let future = select( - prometheus_endpoint::init_prometheus(port, registry).boxed(), - exit.clone() - ).map(drop); - - let _ = to_spawn_tx.unbounded_send(( - Box::pin(future), - From::from("prometheus-endpoint") - )); - + spawn_handle.spawn( + "prometheus-endpoint", + prometheus_endpoint::init_prometheus(port, registry).map(drop) + ); Some(metrics) } else { None @@ -1123,10 +1119,10 @@ ServiceBuilder< ready(()) }); - let _ = to_spawn_tx.unbounded_send(( - Box::pin(select(tel_task, exit.clone()).map(drop)), - From::from("telemetry-periodic-send"), - )); + spawn_handle.spawn( + "telemetry-periodic-send", + tel_task, + ); // Periodically send the network state to the telemetry. let (netstat_tx, netstat_rx) = mpsc::unbounded::<(NetworkStatus<_>, NetworkState)>(); @@ -1139,10 +1135,10 @@ ServiceBuilder< ); ready(()) }); - let _ = to_spawn_tx.unbounded_send(( - Box::pin(select(tel_task_2, exit.clone()).map(drop)), - From::from("telemetry-periodic-network-state"), - )); + spawn_handle.spawn( + "telemetry-periodic-network-state", + tel_task_2, + ); // RPC let (system_rpc_tx, system_rpc_rx) = mpsc::unbounded(); @@ -1156,10 +1152,7 @@ ServiceBuilder< properties: chain_spec.properties().clone(), }; - let subscriptions = sc_rpc::Subscriptions::new(Arc::new(SpawnTaskHandle { - sender: to_spawn_tx.clone(), - on_exit: exit.clone() - })); + let subscriptions = sc_rpc::Subscriptions::new(Arc::new(tasks_builder.spawn_handle())); let (chain, state) = if let (Some(remote_backend), Some(on_demand)) = (remote_backend.as_ref(), on_demand.as_ref()) { @@ -1217,18 +1210,17 @@ ServiceBuilder< let rpc_handlers = gen_handler(); let rpc = start_rpc_servers(&config, gen_handler)?; - - let _ = to_spawn_tx.unbounded_send(( - Box::pin(select(build_network_future( + spawn_handle.spawn( + "network-worker", + build_network_future( config.roles, network_mut, client.clone(), network_status_sinks.clone(), system_rpc_rx, has_bootnodes, - ), exit.clone()).map(drop)), - From::from("network-worker"), - )); + ), + ); let telemetry_connection_sinks: Arc>>> = Default::default(); @@ -1269,9 +1261,12 @@ ServiceBuilder< }); ready(()) }); - let _ = to_spawn_tx.unbounded_send((Box::pin(select( - future, exit.clone() - ).map(drop)), From::from("telemetry-worker"))); + + spawn_handle.spawn( + "telemetry-worker", + future, + ); + telemetry }); @@ -1288,21 +1283,13 @@ ServiceBuilder< Ok(Service { client, + task_manager: tasks_builder.into_task_manager(config.task_executor.ok_or(Error::TaskExecutorRequired)?), network, network_status_sinks, select_chain, transaction_pool, - exit, - signal: Some(signal), essential_failed_tx, essential_failed_rx, - to_spawn_tx, - to_spawn_rx, - task_executor: if let Some(exec) = config.task_executor { - exec - } else { - return Err(Error::TaskExecutorRequired); - }, rpc_handlers, _rpc: rpc, _telemetry: telemetry, diff --git a/client/service/src/lib.rs b/client/service/src/lib.rs index 5c59cdf91f..db56c141db 100644 --- a/client/service/src/lib.rs +++ b/client/service/src/lib.rs @@ -26,6 +26,7 @@ pub mod error; mod builder; mod status_sinks; +mod task_manager; use std::{borrow::Cow, io, pin::Pin}; use std::marker::PhantomData; @@ -37,10 +38,9 @@ use std::task::{Poll, Context}; use parking_lot::Mutex; use sc_client::Client; -use exit_future::Signal; use futures::{ Future, FutureExt, Stream, StreamExt, - future::select, channel::mpsc, + channel::mpsc, compat::*, sink::SinkExt, task::{Spawn, FutureObj, SpawnError}, @@ -69,6 +69,8 @@ pub use sc_executor::NativeExecutionDispatch; pub use std::{ops::Deref, result::Result, sync::Arc}; #[doc(hidden)] pub use sc_network::config::{FinalityProofProvider, OnDemand, BoxFinalityProofRequestBuilder}; +pub use task_manager::{TaskManagerBuilder, SpawnTaskHandle}; +use task_manager::TaskManager; const DEFAULT_PROTOCOL_ID: &str = "sup"; @@ -85,28 +87,18 @@ impl MallocSizeOfWasm for T {} /// Substrate service. pub struct Service { client: Arc, + task_manager: TaskManager, select_chain: Option, network: Arc, /// Sinks to propagate network status updates. /// For each element, every time the `Interval` fires we push an element on the sender. network_status_sinks: Arc>>, transaction_pool: Arc, - /// A future that resolves when the service has exited, this is useful to - /// make sure any internally spawned futures stop when the service does. - exit: exit_future::Exit, - /// A signal that makes the exit future above resolve, fired on service drop. - signal: Option, /// Send a signal when a spawned essential task has concluded. The next time /// the service future is polled it should complete with an error. essential_failed_tx: mpsc::UnboundedSender<()>, /// A receiver for spawned essential-tasks concluding. essential_failed_rx: mpsc::UnboundedReceiver<()>, - /// Sender for futures that must be spawned as background tasks. - to_spawn_tx: mpsc::UnboundedSender<(Pin + Send>>, Cow<'static, str>)>, - /// Receiver for futures that must be spawned as background tasks. - to_spawn_rx: mpsc::UnboundedReceiver<(Pin + Send>>, Cow<'static, str>)>, - /// How to spawn background tasks. - task_executor: Arc + Send>>) + Send + Sync>, rpc_handlers: sc_rpc_server::RpcHandler, _rpc: Box, _telemetry: Option, @@ -119,48 +111,6 @@ pub struct Service { impl Unpin for Service {} -/// Alias for a an implementation of `futures::future::Executor`. -pub type TaskExecutor = Arc; - -/// An handle for spawning tasks in the service. -#[derive(Clone)] -pub struct SpawnTaskHandle { - sender: mpsc::UnboundedSender<(Pin + Send>>, Cow<'static, str>)>, - on_exit: exit_future::Exit, -} - -impl SpawnTaskHandle { - /// Spawns the given task with the given name. - pub fn spawn(&self, name: impl Into>, task: impl Future + Send + 'static) { - let on_exit = self.on_exit.clone(); - let future = async move { - futures::pin_mut!(task); - let _ = select(on_exit, task).await; - }; - if self.sender.unbounded_send((Box::pin(future), name.into())).is_err() { - error!("Failed to send task to spawn over channel"); - } - } -} - -impl Spawn for SpawnTaskHandle { - fn spawn_obj(&self, future: FutureObj<'static, ()>) - -> Result<(), SpawnError> { - let future = select(self.on_exit.clone(), future).map(drop); - self.sender.unbounded_send((Box::pin(future), From::from("unnamed"))) - .map_err(|_| SpawnError::shutdown()) - } -} - -type Boxed01Future01 = Box + Send + 'static>; - -impl futures01::future::Executor for SpawnTaskHandle { - fn execute(&self, future: Boxed01Future01) -> Result<(), futures01::future::ExecuteError>{ - self.spawn("unnamed", future.compat().map(drop)); - Ok(()) - } -} - /// Abstraction over a Substrate service. pub trait AbstractService: 'static + Future> + Spawn + Send + Unpin { @@ -225,6 +175,7 @@ pub trait AbstractService: 'static + Future> + fn transaction_pool(&self) -> Arc; /// Get a handle to a future that will resolve on exit. + #[deprecated(note = "Use `spawn_task`/`spawn_essential_task` instead, those functions will attach on_exit signal.")] fn on_exit(&self) -> ::exit_future::Exit; /// Get the prometheus metrics registry, if available. @@ -265,12 +216,7 @@ where } fn spawn_task(&self, name: impl Into>, task: impl Future + Send + 'static) { - let on_exit = self.on_exit(); - let task = async move { - futures::pin_mut!(task); - let _ = select(on_exit, task).await; - }; - let _ = self.to_spawn_tx.unbounded_send((Box::pin(task), name.into())); + self.task_manager.spawn(name, task) } fn spawn_essential_task(&self, name: impl Into>, task: impl Future + Send + 'static) { @@ -281,20 +227,12 @@ where error!("Essential task failed. Shutting down service."); let _ = essential_failed.send(()); }); - let on_exit = self.on_exit(); - let task = async move { - futures::pin_mut!(essential_task); - let _ = select(on_exit, essential_task).await; - }; - let _ = self.to_spawn_tx.unbounded_send((Box::pin(task), name.into())); + let _ = self.spawn_task(name, essential_task); } fn spawn_task_handle(&self) -> SpawnTaskHandle { - SpawnTaskHandle { - sender: self.to_spawn_tx.clone(), - on_exit: self.on_exit(), - } + self.task_manager.spawn_handle() } fn rpc_query(&self, mem: &RpcSession, request: &str) -> Pin> + Send>> { @@ -330,7 +268,7 @@ where } fn on_exit(&self) -> exit_future::Exit { - self.exit.clone() + self.task_manager.on_exit() } fn prometheus_registry(&self) -> Option { @@ -355,9 +293,7 @@ impl Future for } } - while let Poll::Ready(Some((task_to_spawn, name))) = Pin::new(&mut this.to_spawn_rx).poll_next(cx) { - (this.task_executor)(Box::pin(futures_diagnose::diagnose(name, task_to_spawn))); - } + this.task_manager.process_receiver(cx); // The service future never ends. Poll::Pending @@ -371,7 +307,7 @@ impl Spawn for &self, future: FutureObj<'static, ()> ) -> Result<(), SpawnError> { - self.to_spawn_tx.unbounded_send((Box::pin(future), From::from("unnamed"))) + self.task_manager.scheduler().unbounded_send((Box::pin(future), From::from("unnamed"))) .map_err(|_| SpawnError::shutdown()) } } @@ -525,17 +461,6 @@ pub struct NetworkStatus { pub average_upload_per_sec: u64, } -impl Drop for - Service -{ - fn drop(&mut self) { - debug!(target: "service", "Substrate service shutdown"); - if let Some(signal) = self.signal.take() { - let _ = signal.fire(); - } - } -} - #[cfg(not(target_os = "unknown"))] // Wrapper for HTTP and WS servers that makes sure they are properly shut down. mod waiting { diff --git a/client/service/src/task_manager.rs b/client/service/src/task_manager.rs new file mode 100644 index 0000000000..d7041e44b9 --- /dev/null +++ b/client/service/src/task_manager.rs @@ -0,0 +1,190 @@ +// Copyright 2020 Parity Technologies (UK) Ltd. +// This file is part of Substrate. + +// Substrate is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Substrate is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +//! Substrate service tasks management module. + +use std::{ + result::Result, sync::Arc, + task::{Poll, Context}, + borrow::Cow, pin::Pin, +}; +use exit_future::Signal; +use log::{debug, error}; +use futures::{ + Future, FutureExt, Stream, + future::select, channel::mpsc, + compat::*, + task::{Spawn, FutureObj, SpawnError}, +}; + +/// Type alias for service task executor (usually runtime). +pub type ServiceTaskExecutor = Arc + Send>>) + Send + Sync>; + +/// Type alias for the task scheduler. +pub type TaskScheduler = mpsc::UnboundedSender<(Pin + Send>>, Cow<'static, str>)>; + +/// Helper struct to setup background tasks execution for service. +pub struct TaskManagerBuilder { + /// A future that resolves when the service has exited, this is useful to + /// make sure any internally spawned futures stop when the service does. + on_exit: exit_future::Exit, + /// A signal that makes the exit future above resolve, fired on service drop. + signal: Option, + /// Sender for futures that must be spawned as background tasks. + to_spawn_tx: TaskScheduler, + /// Receiver for futures that must be spawned as background tasks. + to_spawn_rx: mpsc::UnboundedReceiver<(Pin + Send>>, Cow<'static, str>)>, +} + +impl TaskManagerBuilder { + /// New asynchronous task manager setup. + pub fn new() -> Self { + let (signal, on_exit) = exit_future::signal(); + let (to_spawn_tx, to_spawn_rx) = mpsc::unbounded(); + Self { + on_exit, + signal: Some(signal), + to_spawn_tx, + to_spawn_rx, + } + } + + /// Get spawn handle. + /// + /// Tasks spawned through this handle will get scheduled once + /// service is up and running. + pub fn spawn_handle(&self) -> SpawnTaskHandle { + SpawnTaskHandle { + on_exit: self.on_exit.clone(), + sender: self.to_spawn_tx.clone(), + } + } + + /// Convert into actual task manager from initial setup. + pub(crate) fn into_task_manager(self, executor: ServiceTaskExecutor) -> TaskManager { + let TaskManagerBuilder { + on_exit, + signal, + to_spawn_rx, + to_spawn_tx + } = self; + TaskManager { + on_exit, + signal, + to_spawn_tx, + to_spawn_rx, + executor, + } + } +} + +/// An handle for spawning tasks in the service. +#[derive(Clone)] +pub struct SpawnTaskHandle { + sender: TaskScheduler, + on_exit: exit_future::Exit, +} + +impl SpawnTaskHandle { + /// Spawns the given task with the given name. + pub fn spawn(&self, name: impl Into>, task: impl Future + Send + 'static) { + let on_exit = self.on_exit.clone(); + let future = async move { + futures::pin_mut!(task); + let _ = select(on_exit, task).await; + }; + if self.sender.unbounded_send((Box::pin(future), name.into())).is_err() { + error!("Failed to send task to spawn over channel"); + } + } +} + +impl Spawn for SpawnTaskHandle { + fn spawn_obj(&self, future: FutureObj<'static, ()>) + -> Result<(), SpawnError> { + let future = select(self.on_exit.clone(), future).map(drop); + self.sender.unbounded_send((Box::pin(future), From::from("unnamed"))) + .map_err(|_| SpawnError::shutdown()) + } +} + +type Boxed01Future01 = Box + Send + 'static>; + +impl futures01::future::Executor for SpawnTaskHandle { + fn execute(&self, future: Boxed01Future01) -> Result<(), futures01::future::ExecuteError>{ + self.spawn("unnamed", future.compat().map(drop)); + Ok(()) + } +} + +/// Helper struct to manage background/async tasks in Service. +pub struct TaskManager { + /// A future that resolves when the service has exited, this is useful to + /// make sure any internally spawned futures stop when the service does. + on_exit: exit_future::Exit, + /// A signal that makes the exit future above resolve, fired on service drop. + signal: Option, + /// Sender for futures that must be spawned as background tasks. + to_spawn_tx: TaskScheduler, + /// Receiver for futures that must be spawned as background tasks. + to_spawn_rx: mpsc::UnboundedReceiver<(Pin + Send>>, Cow<'static, str>)>, + /// How to spawn background tasks. + executor: ServiceTaskExecutor, +} + +impl TaskManager { + /// Spawn background/async task, which will be aware on exit signal. + pub(super) fn spawn(&self, name: impl Into>, task: impl Future + Send + 'static) { + let on_exit = self.on_exit.clone(); + let future = async move { + futures::pin_mut!(task); + let _ = select(on_exit, task).await; + }; + if self.to_spawn_tx.unbounded_send((Box::pin(future), name.into())).is_err() { + error!("Failed to send task to spawn over channel"); + } + } + + pub(super) fn spawn_handle(&self) -> SpawnTaskHandle { + SpawnTaskHandle { + on_exit: self.on_exit.clone(), + sender: self.to_spawn_tx.clone(), + } + } + + /// Get sender where background/async tasks can be sent. + pub(super) fn scheduler(&self) -> TaskScheduler { + self.to_spawn_tx.clone() + } + + /// Process background task receiver. + pub(super) fn process_receiver(&mut self, cx: &mut Context) { + while let Poll::Ready(Some((task_to_spawn, name))) = Pin::new(&mut self.to_spawn_rx).poll_next(cx) { + (self.executor)(Box::pin(futures_diagnose::diagnose(name, task_to_spawn))); + } + } + + /// Clone on exit signal. + pub(super) fn on_exit(&self) -> exit_future::Exit { + self.on_exit.clone() + } +} + +impl Drop for TaskManager { + fn drop(&mut self) { + debug!(target: "service", "Tasks manager shutdown"); + if let Some(signal) = self.signal.take() { + let _ = signal.fire(); + } + } +} -- GitLab From bea883b3592106f2e2c1ef413b3503fa983c55a8 Mon Sep 17 00:00:00 2001 From: Gavin Wood Date: Thu, 5 Mar 2020 10:29:38 +0100 Subject: [PATCH 103/301] use fixed quote (#5135) --- client/chain-spec/derive/Cargo.toml | 2 +- frame/staking/reward-curve/Cargo.toml | 2 +- frame/support/procedural/Cargo.toml | 2 +- frame/support/procedural/tools/Cargo.toml | 2 +- frame/support/procedural/tools/derive/Cargo.toml | 2 +- primitives/api/proc-macro/Cargo.toml | 2 +- primitives/debug-derive/Cargo.toml | 2 +- primitives/runtime-interface/proc-macro/Cargo.toml | 2 +- 8 files changed, 8 insertions(+), 8 deletions(-) diff --git a/client/chain-spec/derive/Cargo.toml b/client/chain-spec/derive/Cargo.toml index c76949011a..801d86c754 100644 --- a/client/chain-spec/derive/Cargo.toml +++ b/client/chain-spec/derive/Cargo.toml @@ -14,7 +14,7 @@ proc-macro = true [dependencies] proc-macro-crate = "0.1.4" proc-macro2 = "1.0.6" -quote = "1.0.2" +quote = "=1.0.2" syn = "1.0.7" [dev-dependencies] diff --git a/frame/staking/reward-curve/Cargo.toml b/frame/staking/reward-curve/Cargo.toml index 3d0920e644..bca5a13fe6 100644 --- a/frame/staking/reward-curve/Cargo.toml +++ b/frame/staking/reward-curve/Cargo.toml @@ -13,7 +13,7 @@ proc-macro = true [dependencies] syn = { version = "1.0.7", features = ["full", "visit"] } -quote = "1.0" +quote = "=1.0.2" proc-macro2 = "1.0.6" proc-macro-crate = "0.1.4" diff --git a/frame/support/procedural/Cargo.toml b/frame/support/procedural/Cargo.toml index 1f5ec04d25..a4187673cc 100644 --- a/frame/support/procedural/Cargo.toml +++ b/frame/support/procedural/Cargo.toml @@ -14,5 +14,5 @@ proc-macro = true [dependencies] frame-support-procedural-tools = { version = "2.0.0-alpha.2", path = "./tools" } proc-macro2 = "1.0.6" -quote = "1.0.2" +quote = "=1.0.2" syn = { version = "1.0.7", features = ["full"] } diff --git a/frame/support/procedural/tools/Cargo.toml b/frame/support/procedural/tools/Cargo.toml index 8f0ce7b06a..4aa32de9c0 100644 --- a/frame/support/procedural/tools/Cargo.toml +++ b/frame/support/procedural/tools/Cargo.toml @@ -11,6 +11,6 @@ description = "Proc macro helpers for procedural macros" [dependencies] frame-support-procedural-tools-derive = { version = "2.0.0-alpha.2", path = "./derive" } proc-macro2 = "1.0.6" -quote = "1.0.2" +quote = "=1.0.2" syn = { version = "1.0.7", features = ["full", "visit"] } proc-macro-crate = "0.1.4" diff --git a/frame/support/procedural/tools/derive/Cargo.toml b/frame/support/procedural/tools/derive/Cargo.toml index 872185d19f..8691b1d396 100644 --- a/frame/support/procedural/tools/derive/Cargo.toml +++ b/frame/support/procedural/tools/derive/Cargo.toml @@ -13,5 +13,5 @@ proc-macro = true [dependencies] proc-macro2 = "1.0.6" -quote = { version = "1.0.2", features = ["proc-macro"] } +quote = { version = "=1.0.2", features = ["proc-macro"] } syn = { version = "1.0.7", features = ["proc-macro" ,"full", "extra-traits", "parsing"] } diff --git a/primitives/api/proc-macro/Cargo.toml b/primitives/api/proc-macro/Cargo.toml index e031f97ba9..2667a2642e 100644 --- a/primitives/api/proc-macro/Cargo.toml +++ b/primitives/api/proc-macro/Cargo.toml @@ -14,7 +14,7 @@ documentation = "https://docs.rs/sp-api-proc-macro" proc-macro = true [dependencies] -quote = "1.0.2" +quote = "=1.0.2" syn = { version = "1.0.8", features = ["full", "fold", "extra-traits", "visit"] } proc-macro2 = "1.0.6" blake2-rfc = { version = "0.2.18", default-features = false } diff --git a/primitives/debug-derive/Cargo.toml b/primitives/debug-derive/Cargo.toml index e15ef594d3..bce3fbbbe3 100644 --- a/primitives/debug-derive/Cargo.toml +++ b/primitives/debug-derive/Cargo.toml @@ -13,7 +13,7 @@ documentation = "https://docs.rs/sp-debug-derive" proc-macro = true [dependencies] -quote = "1.0.2" +quote = "=1.0.2" syn = "1.0.7" proc-macro2 = "1.0" diff --git a/primitives/runtime-interface/proc-macro/Cargo.toml b/primitives/runtime-interface/proc-macro/Cargo.toml index b18254f62f..ca37c46c7f 100644 --- a/primitives/runtime-interface/proc-macro/Cargo.toml +++ b/primitives/runtime-interface/proc-macro/Cargo.toml @@ -14,7 +14,7 @@ proc-macro = true [dependencies] syn = { version = "1.0.5", features = ["full", "visit", "fold", "extra-traits"] } -quote = "1.0.2" +quote = "=1.0.2" proc-macro2 = "1.0.3" Inflector = "0.11.4" proc-macro-crate = "0.1.4" -- GitLab From 5cbc17a9683f19d0f5d2e241949466b0a8572808 Mon Sep 17 00:00:00 2001 From: Benjamin Kampmann Date: Thu, 5 Mar 2020 10:40:55 +0100 Subject: [PATCH 104/301] Hide benchmarks behind a feature flag (#5024) * Hide benchmarks behind a feature flag * Propage attributes in impl_runtime_apis macro * Bump impl_version * Fillter cfg attributes * Hide more things under the feature * Fix set_block_number availability * Rename filter_attrs -> filter_cfg_attrs * Rename runtime_benchmarks to runtime-benchmarks --- bin/node/runtime/Cargo.toml | 3 +- bin/node/runtime/src/lib.rs | 3 +- frame/balances/Cargo.toml | 3 +- frame/balances/src/lib.rs | 1 + frame/identity/Cargo.toml | 3 +- frame/identity/src/lib.rs | 1 + frame/system/Cargo.toml | 1 + frame/system/src/lib.rs | 2 +- frame/timestamp/Cargo.toml | 5 +- frame/timestamp/src/lib.rs | 1 + .../api/proc-macro/src/impl_runtime_apis.rs | 61 ++++++++++++++++--- 11 files changed, 68 insertions(+), 16 deletions(-) diff --git a/bin/node/runtime/Cargo.toml b/bin/node/runtime/Cargo.toml index 8a901660ce..b92e9bc8ae 100644 --- a/bin/node/runtime/Cargo.toml +++ b/bin/node/runtime/Cargo.toml @@ -35,7 +35,7 @@ sp-version = { version = "2.0.0-alpha.2", default-features = false, path = "../. # frame dependencies frame-executive = { version = "2.0.0-alpha.2", default-features = false, path = "../../../frame/executive" } -frame-benchmarking = { version = "2.0.0-alpha.2", default-features = false, path = "../../../frame/benchmarking" } +frame-benchmarking = { version = "2.0.0-alpha.2", default-features = false, path = "../../../frame/benchmarking", optional = true } frame-support = { version = "2.0.0-alpha.2", default-features = false, path = "../../../frame/support" } frame-system = { version = "2.0.0-alpha.2", default-features = false, path = "../../../frame/system" } frame-system-rpc-runtime-api = { version = "2.0.0-alpha.2", default-features = false, path = "../../../frame/system/rpc/runtime-api/" } @@ -132,3 +132,4 @@ std = [ "pallet-recovery/std", "pallet-vesting/std", ] +runtime-benchmarks = ["frame-benchmarking"] diff --git a/bin/node/runtime/src/lib.rs b/bin/node/runtime/src/lib.rs index be5ca25630..3a7df27466 100644 --- a/bin/node/runtime/src/lib.rs +++ b/bin/node/runtime/src/lib.rs @@ -83,7 +83,7 @@ pub const VERSION: RuntimeVersion = RuntimeVersion { // implementation changes and behavior does not, then leave spec_version as // is and increment impl_version. spec_version: 227, - impl_version: 0, + impl_version: 1, apis: RUNTIME_API_VERSIONS, }; @@ -818,6 +818,7 @@ impl_runtime_apis! { } } + #[cfg(feature = "runtime-benchmarks")] impl frame_benchmarking::Benchmark for Runtime { fn dispatch_benchmark( module: Vec, diff --git a/frame/balances/Cargo.toml b/frame/balances/Cargo.toml index 9d26c5b957..6bb551c9c6 100644 --- a/frame/balances/Cargo.toml +++ b/frame/balances/Cargo.toml @@ -14,7 +14,7 @@ codec = { package = "parity-scale-codec", version = "1.2.0", default-features = sp-std = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/std" } sp-io = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/io" } sp-runtime = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/runtime" } -frame-benchmarking = { version = "2.0.0-alpha.2", default-features = false, path = "../benchmarking" } +frame-benchmarking = { version = "2.0.0-alpha.2", default-features = false, path = "../benchmarking", optional = true } frame-support = { version = "2.0.0-alpha.2", default-features = false, path = "../support" } frame-system = { version = "2.0.0-alpha.2", default-features = false, path = "../system" } @@ -34,3 +34,4 @@ std = [ "frame-support/std", "frame-system/std", ] +runtime-benchmarks = ["frame-benchmarking"] diff --git a/frame/balances/src/lib.rs b/frame/balances/src/lib.rs index 4dbaf4b8a8..b4a1b810df 100644 --- a/frame/balances/src/lib.rs +++ b/frame/balances/src/lib.rs @@ -155,6 +155,7 @@ mod tests_composite; #[cfg(test)] #[macro_use] mod tests; +#[cfg(feature = "runtime-benchmarks")] mod benchmarking; use sp_std::prelude::*; diff --git a/frame/identity/Cargo.toml b/frame/identity/Cargo.toml index 7ea53f776e..3dbffedffc 100644 --- a/frame/identity/Cargo.toml +++ b/frame/identity/Cargo.toml @@ -15,7 +15,7 @@ enumflags2 = { version = "0.6.2" } sp-std = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/std" } sp-io = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/io" } sp-runtime = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/runtime" } -frame-benchmarking = { version = "2.0.0-alpha.2", default-features = false, path = "../benchmarking" } +frame-benchmarking = { version = "2.0.0-alpha.2", default-features = false, path = "../benchmarking", optional = true } frame-support = { version = "2.0.0-alpha.2", default-features = false, path = "../support" } frame-system = { version = "2.0.0-alpha.2", default-features = false, path = "../system" } @@ -35,3 +35,4 @@ std = [ "frame-support/std", "frame-system/std", ] +runtime-benchmarks = ["frame-benchmarking"] diff --git a/frame/identity/src/lib.rs b/frame/identity/src/lib.rs index 68b7905961..cb2071d5d9 100644 --- a/frame/identity/src/lib.rs +++ b/frame/identity/src/lib.rs @@ -78,6 +78,7 @@ use frame_support::{ }; use frame_system::{self as system, ensure_signed, ensure_root}; +#[cfg(feature = "runtime-benchmarks")] pub mod benchmarking; type BalanceOf = <::Currency as Currency<::AccountId>>::Balance; diff --git a/frame/system/Cargo.toml b/frame/system/Cargo.toml index 6a418cab8e..4e350be1a9 100644 --- a/frame/system/Cargo.toml +++ b/frame/system/Cargo.toml @@ -36,6 +36,7 @@ std = [ "sp-runtime/std", "sp-version/std", ] +runtime-benchmarks = [] [[bench]] name = "bench" diff --git a/frame/system/src/lib.rs b/frame/system/src/lib.rs index f89c9efbd2..6cac08117a 100644 --- a/frame/system/src/lib.rs +++ b/frame/system/src/lib.rs @@ -885,7 +885,7 @@ impl Module { /// Set the block number to something in particular. Can be used as an alternative to /// `initialize` for tests that don't need to bother with the other environment entries. - #[cfg(any(feature = "std", test))] + #[cfg(any(feature = "std", feature = "runtime-benchmarks", test))] pub fn set_block_number(n: T::BlockNumber) { >::put(n); } diff --git a/frame/timestamp/Cargo.toml b/frame/timestamp/Cargo.toml index db1d9aaf37..ff5b72de67 100644 --- a/frame/timestamp/Cargo.toml +++ b/frame/timestamp/Cargo.toml @@ -14,10 +14,10 @@ documentation = "https://docs.rs/pallet-timestamp" serde = { version = "1.0.101", optional = true } codec = { package = "parity-scale-codec", version = "1.2.0", default-features = false, features = ["derive"] } sp-std = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/std" } -sp-io = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/io" } +sp-io = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/io", optional = true } sp-runtime = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/runtime" } sp-inherents = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/inherents" } -frame-benchmarking = { version = "2.0.0-alpha.2", default-features = false, path = "../benchmarking" } +frame-benchmarking = { version = "2.0.0-alpha.2", default-features = false, path = "../benchmarking", optional = true } frame-support = { version = "2.0.0-alpha.2", default-features = false, path = "../support" } frame-system = { version = "2.0.0-alpha.2", default-features = false, path = "../system" } sp-timestamp = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/timestamp" } @@ -40,3 +40,4 @@ std = [ "frame-system/std", "sp-timestamp/std" ] +runtime-benchmarks = ["frame-benchmarking", "sp-io"] diff --git a/frame/timestamp/src/lib.rs b/frame/timestamp/src/lib.rs index 1c3fec2112..2a37dfdddb 100644 --- a/frame/timestamp/src/lib.rs +++ b/frame/timestamp/src/lib.rs @@ -90,6 +90,7 @@ #![cfg_attr(not(feature = "std"), no_std)] +#[cfg(feature = "runtime-benchmarks")] mod benchmarking; use sp_std::{result, cmp}; diff --git a/primitives/api/proc-macro/src/impl_runtime_apis.rs b/primitives/api/proc-macro/src/impl_runtime_apis.rs index 07d7ae4040..e16cf3b5c4 100644 --- a/primitives/api/proc-macro/src/impl_runtime_apis.rs +++ b/primitives/api/proc-macro/src/impl_runtime_apis.rs @@ -27,7 +27,7 @@ use proc_macro2::{Span, TokenStream}; use quote::quote; use syn::{ - spanned::Spanned, parse_macro_input, Ident, Type, ItemImpl, Path, Signature, + spanned::Spanned, parse_macro_input, Ident, Type, ItemImpl, Path, Signature, Attribute, ImplItem, parse::{Parse, ParseStream, Result, Error}, PathArguments, GenericArgument, TypePath, fold::{self, Fold}, parse_quote, }; @@ -141,7 +141,7 @@ fn extract_runtime_block_ident(trait_: &Path) -> Result<&TypePath> { fn generate_impl_calls( impls: &[ItemImpl], input: &Ident -) -> Result> { +) -> Result)>> { let mut impl_calls = Vec::new(); for impl_ in impls { @@ -162,9 +162,12 @@ fn generate_impl_calls( &impl_trait )?; - impl_calls.push( - (impl_trait_ident.clone(), method.sig.ident.clone(), impl_call) - ); + impl_calls.push(( + impl_trait_ident.clone(), + method.sig.ident.clone(), + impl_call, + filter_cfg_attrs(&impl_.attrs), + )); } } } @@ -178,9 +181,12 @@ fn generate_dispatch_function(impls: &[ItemImpl]) -> Result { let c = generate_crate_access(HIDDEN_INCLUDES_ID); let impl_calls = generate_impl_calls(impls, &data)? .into_iter() - .map(|(trait_, fn_name, impl_)| { + .map(|(trait_, fn_name, impl_, attrs)| { let name = prefix_function_with_trait(&trait_, &fn_name); - quote!( #name => Some(#c::Encode::encode(&{ #impl_ })), ) + quote!( + #( #attrs )* + #name => Some(#c::Encode::encode(&{ #impl_ })), + ) }); Ok(quote!( @@ -200,13 +206,14 @@ fn generate_wasm_interface(impls: &[ItemImpl]) -> Result { let c = generate_crate_access(HIDDEN_INCLUDES_ID); let impl_calls = generate_impl_calls(impls, &input)? .into_iter() - .map(|(trait_, fn_name, impl_)| { + .map(|(trait_, fn_name, impl_, attrs)| { let fn_name = Ident::new( &prefix_function_with_trait(&trait_, &fn_name), Span::call_site() ); quote!( + #( #attrs )* #[cfg(not(feature = "std"))] #[no_mangle] pub fn #fn_name(input_data: *mut u8, input_len: usize) -> u64 { @@ -447,6 +454,7 @@ fn generate_api_impl_for_runtime(impls: &[ItemImpl]) -> Result { let trait_ = extend_with_runtime_decl_path(trait_); impl_.trait_.as_mut().unwrap().1 = trait_; + impl_.attrs = filter_cfg_attrs(&impl_.attrs); impls_prepared.push(impl_); } @@ -622,6 +630,8 @@ impl<'a> Fold for ApiRuntimeImplToApiRuntimeApiImpl<'a> { } ); + input.attrs = filter_cfg_attrs(&input.attrs); + // The implementation for the `RuntimeApiImpl` is only required when compiling with // the feature `std` or `test`. input.attrs.push(parse_quote!( #[cfg(any(feature = "std", test))] )); @@ -695,8 +705,12 @@ fn generate_runtime_api_versions(impls: &[ItemImpl]) -> Result { let id: Path = parse_quote!( #path ID ); let version: Path = parse_quote!( #path VERSION ); + let attrs = filter_cfg_attrs(&impl_.attrs); - result.push(quote!( (#id, #version) )); + result.push(quote!( + #( #attrs )* + (#id, #version) + )); } let c = generate_crate_access(HIDDEN_INCLUDES_ID); @@ -745,3 +759,32 @@ fn impl_runtime_apis_impl_inner(api_impls: &[ItemImpl]) -> Result { ) ) } + +// Filters all attributes except the cfg ones. +fn filter_cfg_attrs(attrs: &[Attribute]) -> Vec { + attrs.into_iter().filter(|a| a.path.is_ident("cfg")).cloned().collect() +} + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn filter_non_cfg_attributes() { + let cfg_std: Attribute = parse_quote!(#[cfg(feature = "std")]); + let cfg_benchmarks: Attribute = parse_quote!(#[cfg(feature = "runtime-benchmarks")]); + + let attrs = vec![ + cfg_std.clone(), + parse_quote!(#[derive(Debug)]), + parse_quote!(#[test]), + cfg_benchmarks.clone(), + parse_quote!(#[allow(non_camel_case_types)]), + ]; + + let filtered = filter_cfg_attrs(&attrs); + assert_eq!(filtered.len(), 2); + assert_eq!(cfg_std, filtered[0]); + assert_eq!(cfg_benchmarks, filtered[1]); + } +} -- GitLab From 1d3d688e37018f6c5da93b0aa36f75136aaccdef Mon Sep 17 00:00:00 2001 From: Arkadiy Paronyan Date: Thu, 5 Mar 2020 10:55:05 +0100 Subject: [PATCH 105/301] Revert "Don't include `:code` by default in storage proofs (#5060)" (#5136) This reverts commit a193a19d57c894ddec17b95dc8f2b8f379be0d11. --- Cargo.lock | 4 - bin/node/executor/benches/bench.rs | 16 +-- bin/node/executor/tests/common.rs | 5 +- .../basic-authorship/src/basic_authorship.rs | 3 +- client/block-builder/Cargo.toml | 4 - client/block-builder/src/lib.rs | 54 +-------- client/executor/src/lib.rs | 8 +- client/executor/src/native_executor.rs | 16 +-- client/executor/src/wasm_runtime.rs | 41 ++++--- client/network/src/chain.rs | 22 ++-- .../src/protocol/light_client_handler.rs | 19 ++- client/network/src/protocol/light_dispatch.rs | 6 +- client/src/call_executor.rs | 11 +- client/src/client.rs | 16 +-- client/src/genesis.rs | 14 --- client/src/light/backend.rs | 4 +- client/src/light/call_executor.rs | 12 +- client/src/light/fetcher.rs | 11 +- frame/system/benches/bench.rs | 2 +- primitives/api/test/Cargo.toml | 1 - primitives/api/test/tests/runtime_calls.rs | 7 -- primitives/core/src/traits.rs | 65 ----------- primitives/runtime/src/generic/block.rs | 11 +- primitives/state-machine/src/backend.rs | 23 +--- primitives/state-machine/src/lib.rs | 64 ++-------- .../state-machine/src/proving_backend.rs | 100 +++++++++++++++- primitives/trie/src/lib.rs | 2 - primitives/trie/src/storage_proof.rs | 109 ------------------ test-utils/runtime/src/system.rs | 8 +- utils/frame/benchmarking-cli/Cargo.toml | 1 - utils/frame/benchmarking-cli/src/lib.rs | 1 - 31 files changed, 182 insertions(+), 478 deletions(-) delete mode 100644 primitives/trie/src/storage_proof.rs diff --git a/Cargo.lock b/Cargo.lock index 79872ffc6e..ca3ba91b84 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1478,7 +1478,6 @@ dependencies = [ "sc-executor", "sc-service", "sp-runtime", - "sp-state-machine", "structopt", ] @@ -5653,8 +5652,6 @@ dependencies = [ "sp-core", "sp-runtime", "sp-state-machine", - "sp-trie", - "substrate-test-runtime-client", ] [[package]] @@ -6959,7 +6956,6 @@ dependencies = [ "sp-api", "sp-blockchain", "sp-consensus", - "sp-core", "sp-runtime", "sp-state-machine", "sp-version", diff --git a/bin/node/executor/benches/bench.rs b/bin/node/executor/benches/bench.rs index faebdd302a..98aa75edfc 100644 --- a/bin/node/executor/benches/bench.rs +++ b/bin/node/executor/benches/bench.rs @@ -25,8 +25,8 @@ use node_runtime::constants::currency::*; use node_testing::keyring::*; use sp_core::{NativeOrEncoded, NeverNativeValue}; use sp_core::storage::well_known_keys; -use sp_core::traits::{CodeExecutor, RuntimeCode}; -use frame_support::Hashable; +use sp_core::traits::CodeExecutor; +use frame_support::Hashable; use sp_state_machine::TestExternalities as CoreTestExternalities; use sc_executor::{NativeExecutor, RuntimeInfo, WasmExecutionMethod, Externalities}; use sp_runtime::traits::BlakeTwo256; @@ -90,12 +90,9 @@ fn construct_block( digest: Default::default(), }; - let runtime_code = RuntimeCode::from_externalities(ext).expect("`ext` provides `:code`"); - // execute the block to get the real header. executor.call::<_, NeverNativeValue, fn() -> _>( ext, - &runtime_code, "Core_initialize_block", &header.encode(), true, @@ -105,7 +102,6 @@ fn construct_block( for i in extrinsics.iter() { executor.call::<_, NeverNativeValue, fn() -> _>( ext, - &runtime_code, "BlockBuilder_apply_extrinsic", &i.encode(), true, @@ -115,7 +111,6 @@ fn construct_block( let header = match executor.call::<_, NeverNativeValue, fn() -> _>( ext, - &runtime_code, "BlockBuilder_finalize_block", &[0u8;0], true, @@ -171,9 +166,7 @@ fn bench_execute_block(c: &mut Criterion) { // Get the runtime version to initialize the runtimes cache. { let mut test_ext = new_test_ext(&genesis_config); - let runtime_code = RuntimeCode::from_externalities(&test_ext.ext()) - .expect("`test_ext` provides `:code`"); - executor.runtime_version(&mut test_ext.ext(), &runtime_code).unwrap(); + executor.runtime_version(&mut test_ext.ext()); } let blocks = test_blocks(&genesis_config, &executor); @@ -181,12 +174,9 @@ fn bench_execute_block(c: &mut Criterion) { b.iter_batched_ref( || new_test_ext(&genesis_config), |test_ext| { - let runtime_code = RuntimeCode::from_externalities(&test_ext.ext()) - .expect("`test_ext` provides `:code`"); for block in blocks.iter() { executor.call::<_, NeverNativeValue, fn() -> _>( &mut test_ext.ext(), - &runtime_code, "Core_execute_block", &block.0, use_native, diff --git a/bin/node/executor/tests/common.rs b/bin/node/executor/tests/common.rs index 25ada87a97..a39acbb42b 100644 --- a/bin/node/executor/tests/common.rs +++ b/bin/node/executor/tests/common.rs @@ -17,7 +17,7 @@ use codec::{Encode, Decode}; use frame_support::Hashable; use sp_state_machine::TestExternalities as CoreTestExternalities; -use sp_core::{NeverNativeValue, NativeOrEncoded, traits::{CodeExecutor, RuntimeCode}}; +use sp_core::{NeverNativeValue, NativeOrEncoded, traits::CodeExecutor}; use sp_runtime::{ApplyExtrinsicResult, traits::{Header as HeaderT, BlakeTwo256}}; use sc_executor::{NativeExecutor, WasmExecutionMethod}; use sc_executor::error::Result; @@ -71,11 +71,8 @@ pub fn executor_call< native_call: Option, ) -> (Result>, bool) { let mut t = t.ext(); - let runtime_code = RuntimeCode::from_externalities(&t) - .expect("Code should be part of the externalities"); executor().call::<_, R, NC>( &mut t, - &runtime_code, method, data, use_native, diff --git a/client/basic-authorship/src/basic_authorship.rs b/client/basic-authorship/src/basic_authorship.rs index a816a5498f..231d025591 100644 --- a/client/basic-authorship/src/basic_authorship.rs +++ b/client/basic-authorship/src/basic_authorship.rs @@ -231,8 +231,7 @@ impl ProposerInner debug!("[{:?}] Pushed to the block.", pending_tx_hash); } Err(sp_blockchain::Error::ApplyExtrinsicFailed(sp_blockchain::ApplyExtrinsicFailed::Validity(e))) - if e.exhausted_resources() => - { + if e.exhausted_resources() => { if is_first { debug!("[{:?}] Invalid transaction: FullBlock on empty block", pending_tx_hash); unqueue_invalid.push(pending_tx_hash); diff --git a/client/block-builder/Cargo.toml b/client/block-builder/Cargo.toml index dd4ebcb07f..745669c033 100644 --- a/client/block-builder/Cargo.toml +++ b/client/block-builder/Cargo.toml @@ -19,7 +19,3 @@ sp-core = { version = "2.0.0-alpha.2", path = "../../primitives/core" } sp-block-builder = { version = "2.0.0-alpha.2", path = "../../primitives/block-builder" } sc-client-api = { version = "2.0.0-alpha.2", path = "../api" } codec = { package = "parity-scale-codec", version = "1.2.0", features = ["derive"] } - -[dev-dependencies] -substrate-test-runtime-client = { path = "../../test-utils/runtime/client" } -sp-trie = { version = "2.0.0-alpha.2", path = "../../primitives/trie" } diff --git a/client/block-builder/src/lib.rs b/client/block-builder/src/lib.rs index 82c7c91159..9695fddf86 100644 --- a/client/block-builder/src/lib.rs +++ b/client/block-builder/src/lib.rs @@ -150,20 +150,12 @@ where /// Push onto the block's list of extrinsics. /// - /// This will treat incoming extrinsic `xt` as trusted and skip signature check - /// (for signed transactions). - pub fn push_trusted( - &mut self, - xt: ::Extrinsic, - ) -> Result<(), ApiErrorFor> { + /// This will treat incoming extrinsic `xt` as trusted and skip signature check (for signed transactions). + pub fn push_trusted(&mut self, xt: ::Extrinsic) -> Result<(), ApiErrorFor> { self.push_internal(xt, true) } - fn push_internal( - &mut self, - xt: ::Extrinsic, - skip_signature: bool, - ) -> Result<(), ApiErrorFor> { + fn push_internal(&mut self, xt: ::Extrinsic, skip_signature: bool) -> Result<(), ApiErrorFor> { let block_id = &self.block_id; let extrinsics = &mut self.extrinsics; @@ -181,7 +173,7 @@ where ExecutionContext::BlockConstruction, xt.clone(), )? - } else { + } else { api.apply_extrinsic_with_context( block_id, ExecutionContext::BlockConstruction, @@ -247,41 +239,3 @@ where }) } } - -#[cfg(test)] -mod tests { - use super::*; - use sp_blockchain::HeaderBackend; - use sp_core::Blake2Hasher; - use sp_state_machine::Backend; - use substrate_test_runtime_client::{DefaultTestClientBuilderExt, TestClientBuilderExt}; - - #[test] - fn block_building_storage_proof_does_not_include_runtime_by_default() { - let builder = substrate_test_runtime_client::TestClientBuilder::new(); - let backend = builder.backend(); - let client = builder.build(); - - let block = BlockBuilder::new( - &client, - client.info().best_hash, - client.info().best_number, - RecordProof::Yes, - Default::default(), - &*backend, - ).unwrap().build().unwrap(); - - let proof = block.proof.expect("Proof is build on request"); - - let backend = sp_state_machine::create_proof_check_backend::( - block.storage_changes.transaction_storage_root, - proof, - ).unwrap(); - - assert!( - backend.storage(&sp_core::storage::well_known_keys::CODE) - .unwrap_err() - .contains("Database missing expected key"), - ); - } -} diff --git a/client/executor/src/lib.rs b/client/executor/src/lib.rs index f8761caa98..af53ed9183 100644 --- a/client/executor/src/lib.rs +++ b/client/executor/src/lib.rs @@ -110,12 +110,8 @@ pub trait RuntimeInfo { /// Native runtime information. fn native_version(&self) -> &NativeVersion; - /// Extract [`RuntimeVersion`](sp_version::RuntimeVersion) of the given `runtime_code`. - fn runtime_version( - &self, - ext: &mut E, - runtime_code: &sp_core::traits::RuntimeCode, - ) -> error::Result; + /// Extract RuntimeVersion of given :code block + fn runtime_version (&self, ext: &mut E) -> error::Result; } #[cfg(test)] diff --git a/client/executor/src/native_executor.rs b/client/executor/src/native_executor.rs index 5a41b65971..1364b753db 100644 --- a/client/executor/src/native_executor.rs +++ b/client/executor/src/native_executor.rs @@ -20,7 +20,7 @@ use crate::{ }; use sp_version::{NativeVersion, RuntimeVersion}; use codec::{Decode, Encode}; -use sp_core::{NativeOrEncoded, traits::{CodeExecutor, Externalities, RuntimeCode}}; +use sp_core::{NativeOrEncoded, traits::{CodeExecutor, Externalities}}; use log::trace; use std::{result, cell::RefCell, panic::{UnwindSafe, AssertUnwindSafe}, sync::Arc}; use sp_wasm_interface::{HostFunctions, Function}; @@ -130,7 +130,6 @@ impl NativeExecutor { fn with_runtime( &self, ext: &mut E, - runtime_code: &RuntimeCode, f: impl for<'a> FnOnce( AssertUnwindSafe<&'a mut (dyn WasmRuntime + 'static)>, &'a RuntimeVersion, @@ -139,9 +138,8 @@ impl NativeExecutor { ) -> Result where E: Externalities { RUNTIMES_CACHE.with(|cache| { let mut cache = cache.borrow_mut(); - let (runtime, version) = cache.fetch_runtime( + let (runtime, version, code_hash) = cache.fetch_runtime( ext, - runtime_code, self.fallback_method, self.default_heap_pages, &*self.host_functions, @@ -153,7 +151,7 @@ impl NativeExecutor { match f(runtime, version, ext) { Ok(res) => res, Err(e) => { - cache.invalidate_runtime(self.fallback_method, runtime_code.hash.clone()); + cache.invalidate_runtime(self.fallback_method, code_hash); Err(e) } } @@ -181,9 +179,8 @@ impl RuntimeInfo for NativeExecutor { fn runtime_version( &self, ext: &mut E, - runtime_code: &RuntimeCode, ) -> Result { - self.with_runtime(ext, runtime_code, |_runtime, version, _ext| Ok(Ok(version.clone()))) + self.with_runtime(ext, |_runtime, version, _ext| Ok(Ok(version.clone()))) } } @@ -198,14 +195,13 @@ impl CodeExecutor for NativeExecutor { >( &self, ext: &mut E, - runtime_code: &RuntimeCode, method: &str, data: &[u8], use_native: bool, native_call: Option, - ) -> (Result>, bool) { + ) -> (Result>, bool){ let mut used_native = false; - let result = self.with_runtime(ext, runtime_code, |mut runtime, onchain_version, mut ext| { + let result = self.with_runtime(ext, |mut runtime, onchain_version, mut ext| { match ( use_native, onchain_version.can_call_with(&self.native_version.runtime_version), diff --git a/client/executor/src/wasm_runtime.rs b/client/executor/src/wasm_runtime.rs index ab7b219dbf..9d54246ee0 100644 --- a/client/executor/src/wasm_runtime.rs +++ b/client/executor/src/wasm_runtime.rs @@ -22,7 +22,7 @@ use crate::error::{Error, WasmError}; use log::{trace, warn}; use codec::Decode; -use sp_core::traits::{Externalities, RuntimeCode}; +use sp_core::{storage::well_known_keys, traits::Externalities}; use sp_version::RuntimeVersion; use std::{collections::hash_map::{Entry, HashMap}, panic::AssertUnwindSafe}; use sc_executor_common::wasm_runtime::WasmRuntime; @@ -86,9 +86,8 @@ impl RuntimesCache { /// /// # Parameters /// - /// `ext` - Externalities to use for the getting the runtime's version call. - /// - /// `runtime_code` - The runtime wasm code used setup the runtime. + /// `ext` - Externalities to use for the runtime. This is used for setting + /// up an initial runtime instance. /// /// `default_heap_pages` - Number of 64KB pages to allocate for Wasm execution. /// @@ -96,8 +95,8 @@ impl RuntimesCache { /// /// # Return value /// - /// If no error occurred a tuple `(&mut WasmRuntime, RuntimeVerion)` is - /// returned. + /// If no error occurred a tuple `(&mut WasmRuntime, H256)` is + /// returned. `H256` is the hash of the runtime code. /// /// In case of failure one of two errors can be returned: /// @@ -108,14 +107,20 @@ impl RuntimesCache { pub fn fetch_runtime( &mut self, ext: &mut E, - runtime_code: &RuntimeCode, wasm_method: WasmExecutionMethod, default_heap_pages: u64, host_functions: &[&'static dyn Function], - ) -> Result<(&mut (dyn WasmRuntime + 'static), &RuntimeVersion), Error> { - let heap_pages = runtime_code.heap_pages.unwrap_or(default_heap_pages); + ) -> Result<(&mut (dyn WasmRuntime + 'static), &RuntimeVersion, Vec), Error> { + let code_hash = ext + .original_storage_hash(well_known_keys::CODE) + .ok_or(Error::InvalidCode("`CODE` not found in storage.".into()))?; + + let heap_pages = ext + .storage(well_known_keys::HEAP_PAGES) + .and_then(|pages| u64::decode(&mut &pages[..]).ok()) + .unwrap_or(default_heap_pages); - let result = match self.instances.entry((wasm_method, runtime_code.hash.clone())) { + let result = match self.instances.entry((wasm_method, code_hash.clone())) { Entry::Occupied(o) => { let result = o.into_mut(); if let Ok(ref mut cached_runtime) = result { @@ -137,7 +142,6 @@ impl RuntimesCache { *result = create_versioned_wasm_runtime( ext, wasm_method, - runtime_code, heap_pages, host_functions.into(), ); @@ -153,7 +157,6 @@ impl RuntimesCache { let result = create_versioned_wasm_runtime( ext, wasm_method, - runtime_code, heap_pages, host_functions.into(), ); @@ -165,7 +168,7 @@ impl RuntimesCache { }; result.as_mut() - .map(|entry| (entry.runtime.as_mut(), &entry.version)) + .map(|entry| (entry.runtime.as_mut(), &entry.version, code_hash)) .map_err(|ref e| Error::InvalidCode(format!("{:?}", e))) } @@ -206,17 +209,13 @@ pub fn create_wasm_runtime_with_code( fn create_versioned_wasm_runtime( ext: &mut E, wasm_method: WasmExecutionMethod, - runtime_code: &RuntimeCode, heap_pages: u64, host_functions: Vec<&'static dyn Function>, ) -> Result { - let mut runtime = create_wasm_runtime_with_code( - wasm_method, - heap_pages, - &runtime_code.code, - host_functions, - false, - )?; + let code = ext + .original_storage(well_known_keys::CODE) + .ok_or(WasmError::CodeNotFound)?; + let mut runtime = create_wasm_runtime_with_code(wasm_method, heap_pages, &code, host_functions, false)?; // Call to determine runtime version. let version_result = { diff --git a/client/network/src/chain.rs b/client/network/src/chain.rs index e85b5af79b..b991a0e652 100644 --- a/client/network/src/chain.rs +++ b/client/network/src/chain.rs @@ -62,12 +62,7 @@ pub trait Client: Send + Sync { ) -> Result; /// Get method execution proof. - fn execution_proof( - &self, - block: &Block::Hash, - method: &str, - data: &[u8], - ) -> Result<(Vec, StorageProof), Error>; + fn execution_proof(&self, block: &Block::Hash, method: &str, data: &[u8]) -> Result<(Vec, StorageProof), Error>; /// Get key changes proof. fn key_changes_proof( @@ -157,7 +152,11 @@ impl Client for SubstrateClient where method: &str, data: &[u8], ) -> Result<(Vec, StorageProof), Error> { - SubstrateClient::execution_proof(self, &BlockId::Hash(block.clone()), method, data) + (self as &SubstrateClient).execution_proof( + &BlockId::Hash(block.clone()), + method, + data, + ) } fn key_changes_proof( @@ -169,14 +168,7 @@ impl Client for SubstrateClient where storage_key: Option<&StorageKey>, key: &StorageKey, ) -> Result, Error> { - (self as &SubstrateClient).key_changes_proof( - first, - last, - min, - max, - storage_key, - key, - ) + (self as &SubstrateClient).key_changes_proof(first, last, min, max, storage_key, key) } fn is_descendent_of(&self, base: &Block::Hash, block: &Block::Hash) -> Result { diff --git a/client/network/src/protocol/light_client_handler.rs b/client/network/src/protocol/light_client_handler.rs index e4996b7c8b..b531f3515a 100644 --- a/client/network/src/protocol/light_client_handler.rs +++ b/client/network/src/protocol/light_client_handler.rs @@ -254,12 +254,13 @@ where B: Block, { /// Construct a new light client handler. - pub fn new( - cfg: Config, - chain: Arc>, - checker: Arc>, - peerset: sc_peerset::PeersetHandle, - ) -> Self { + pub fn new + ( cfg: Config + , chain: Arc> + , checker: Arc> + , peerset: sc_peerset::PeersetHandle + ) -> Self + { LightClientHandler { config: cfg, chain, @@ -424,8 +425,7 @@ where log::trace!("remote call request from {} ({} at {:?})", peer, request.method, - request.block, - ); + request.block); let block = Decode::decode(&mut request.block.as_ref())?; @@ -436,8 +436,7 @@ where peer, request.method, request.block, - e, - ); + e); StorageProof::empty() } }; diff --git a/client/network/src/protocol/light_dispatch.rs b/client/network/src/protocol/light_dispatch.rs index f3da2c2a96..aff220b6e0 100644 --- a/client/network/src/protocol/light_dispatch.rs +++ b/client/network/src/protocol/light_dispatch.rs @@ -750,11 +750,7 @@ pub mod tests { } } - fn check_execution_proof( - &self, - _: &RemoteCallRequest, - _: StorageProof, - ) -> ClientResult> { + fn check_execution_proof(&self, _: &RemoteCallRequest, _: StorageProof) -> ClientResult> { match self.ok { true => Ok(vec![42]), false => Err(ClientError::Backend("Test error".into())), diff --git a/client/src/call_executor.rs b/client/src/call_executor.rs index db95309458..1fdbfe981a 100644 --- a/client/src/call_executor.rs +++ b/client/src/call_executor.rs @@ -25,7 +25,7 @@ use sp_state_machine::{ }; use sc_executor::{RuntimeVersion, RuntimeInfo, NativeVersion}; use sp_externalities::Extensions; -use sp_core::{NativeOrEncoded, NeverNativeValue, traits::{CodeExecutor, RuntimeCode}}; +use sp_core::{NativeOrEncoded, NeverNativeValue, traits::CodeExecutor}; use sp_api::{ProofRecorder, InitializeBlock, StorageTransactionCache}; use sc_client_api::{backend, call_executor::CallExecutor}; @@ -90,7 +90,6 @@ where method, call_data, extensions.unwrap_or_default(), - &sp_state_machine::backend::get_runtime_code(&state)?, ).execute_using_consensus_failure_handler::<_, NeverNativeValue, fn() -> _>( strategy.get_manager(), None, @@ -141,8 +140,6 @@ where // make sure to destroy state before exiting this function let mut state = self.backend.state_at(*at)?; - let runtime_code = sp_state_machine::backend::get_runtime_code(&state)?; - let result = match recorder { Some(recorder) => state.as_trie_backend() .ok_or_else(|| @@ -163,7 +160,6 @@ where method, call_data, extensions.unwrap_or_default(), - &runtime_code, ) // TODO: https://github.com/paritytech/substrate/issues/4455 // .with_storage_transaction_cache(storage_transaction_cache.as_mut().map(|c| &mut **c)) @@ -177,7 +173,6 @@ where method, call_data, extensions.unwrap_or_default(), - &runtime_code, ) .with_storage_transaction_cache(storage_transaction_cache.as_mut().map(|c| &mut **c)) .execute_using_consensus_failure_handler(execution_manager, native_call) @@ -202,8 +197,7 @@ where changes_trie_state, None, ); - let wasm_code = RuntimeCode::from_externalities(&ext).map_err(|e| e.to_string().into()); - let version = wasm_code.and_then(|c| self.executor.runtime_version(&mut ext, &c)); + let version = self.executor.runtime_version(&mut ext); { let _lock = self.backend.get_import_lock().read(); self.backend.destroy_state(state)?; @@ -224,7 +218,6 @@ where &self.executor, method, call_data, - &sp_state_machine::backend::get_runtime_code(trie_state)?, ) .map_err(Into::into) } diff --git a/client/src/client.rs b/client/src/client.rs index 5a0093308e..adb3598b78 100644 --- a/client/src/client.rs +++ b/client/src/client.rs @@ -41,7 +41,8 @@ use sp_runtime::{ use sp_state_machine::{ DBValue, Backend as StateBackend, ChangesTrieAnchorBlockId, prove_read, prove_child_read, ChangesTrieRootsStorage, ChangesTrieStorage, - ChangesTrieConfigurationRange, key_changes, key_changes_proof, + ChangesTrieConfigurationRange, key_changes, key_changes_proof, StorageProof, + merge_storage_proofs, }; use sc_executor::{RuntimeVersion, RuntimeInfo}; use sp_consensus::{ @@ -54,7 +55,6 @@ use sp_blockchain::{self as blockchain, well_known_cache_keys::Id as CacheKeyId, HeaderMetadata, CachedHeaderMetadata, }; -use sp_trie::StorageProof; use sp_api::{ CallApiAt, ConstructRuntimeApi, Core as CoreApi, ApiExt, ApiRef, ProvideRuntimeApi, @@ -482,19 +482,9 @@ impl Client where method: &str, call_data: &[u8] ) -> sp_blockchain::Result<(Vec, StorageProof)> { - // Make sure we include the `:code` and `:heap_pages` in the execution proof to be - // backwards compatible. - // - // TODO: Remove when solved: https://github.com/paritytech/substrate/issues/5047 - let code_proof = self.read_proof( - id, - &[well_known_keys::CODE.to_vec(), well_known_keys::HEAP_PAGES.to_vec()], - )?; - let state = self.state_at(id)?; let header = self.prepare_environment_block(id)?; prove_execution(state, header, &self.executor, method, call_data) - .map(|p| (p.0, StorageProof::merge(vec![p.1, code_proof]))) } /// Reads given header and generates CHT-based header proof. @@ -779,7 +769,7 @@ impl Client where Ok(()) }, ())?; - Ok(StorageProof::merge(proofs)) + Ok(merge_storage_proofs(proofs)) } /// Generates CHT-based proof for roots of changes tries at given blocks (that are part of single CHT). diff --git a/client/src/genesis.rs b/client/src/genesis.rs index c3ca82292d..0eecc6cdae 100644 --- a/client/src/genesis.rs +++ b/client/src/genesis.rs @@ -89,8 +89,6 @@ mod tests { }; let hash = header.hash(); let mut overlay = OverlayedChanges::default(); - let runtime_code = sp_state_machine::backend::get_runtime_code(&backend) - .expect("Code is part of the backend"); StateMachine::new( backend, @@ -100,7 +98,6 @@ mod tests { "Core_initialize_block", &header.encode(), Default::default(), - &runtime_code, ).execute( ExecutionStrategy::NativeElseWasm, ).unwrap(); @@ -114,7 +111,6 @@ mod tests { "BlockBuilder_apply_extrinsic", &tx.encode(), Default::default(), - &runtime_code, ).execute( ExecutionStrategy::NativeElseWasm, ).unwrap(); @@ -128,7 +124,6 @@ mod tests { "BlockBuilder_finalize_block", &[], Default::default(), - &runtime_code, ).execute( ExecutionStrategy::NativeElseWasm, ).unwrap(); @@ -166,8 +161,6 @@ mod tests { let backend = InMemoryBackend::from(storage); let (b1data, _b1hash) = block1(genesis_hash, &backend); - let runtime_code = sp_state_machine::backend::get_runtime_code(&backend) - .expect("Code is part of the backend"); let mut overlay = OverlayedChanges::default(); let _ = StateMachine::new( @@ -178,7 +171,6 @@ mod tests { "Core_execute_block", &b1data, Default::default(), - &runtime_code, ).execute( ExecutionStrategy::NativeElseWasm, ).unwrap(); @@ -197,8 +189,6 @@ mod tests { let backend = InMemoryBackend::from(storage); let (b1data, _b1hash) = block1(genesis_hash, &backend); - let runtime_code = sp_state_machine::backend::get_runtime_code(&backend) - .expect("Code is part of the backend"); let mut overlay = OverlayedChanges::default(); let _ = StateMachine::new( @@ -209,7 +199,6 @@ mod tests { "Core_execute_block", &b1data, Default::default(), - &runtime_code, ).execute( ExecutionStrategy::AlwaysWasm, ).unwrap(); @@ -228,8 +217,6 @@ mod tests { let backend = InMemoryBackend::from(storage); let (b1data, _b1hash) = block1(genesis_hash, &backend); - let runtime_code = sp_state_machine::backend::get_runtime_code(&backend) - .expect("Code is part of the backend"); let mut overlay = OverlayedChanges::default(); let r = StateMachine::new( @@ -240,7 +227,6 @@ mod tests { "Core_execute_block", &b1data, Default::default(), - &runtime_code, ).execute( ExecutionStrategy::NativeElseWasm, ); diff --git a/client/src/light/backend.rs b/client/src/light/backend.rs index 749e24af04..6b5f926300 100644 --- a/client/src/light/backend.rs +++ b/client/src/light/backend.rs @@ -172,9 +172,9 @@ impl ClientBackend for Backend> match maybe_val { Some(val) => self.blockchain.storage().insert_aux( &[(&key[..], &val[..])], - std::iter::empty(), + ::std::iter::empty(), )?, - None => self.blockchain.storage().insert_aux(std::iter::empty(), &[&key[..]])?, + None => self.blockchain.storage().insert_aux(::std::iter::empty(), &[&key[..]])?, } } } diff --git a/client/src/light/call_executor.rs b/client/src/light/call_executor.rs index 613d88045d..f8db30194b 100644 --- a/client/src/light/call_executor.rs +++ b/client/src/light/call_executor.rs @@ -29,6 +29,7 @@ use sp_externalities::Extensions; use sp_state_machine::{ self, Backend as StateBackend, OverlayedChanges, ExecutionStrategy, create_proof_check_backend, execution_proof_check_on_trie_backend, ExecutionManager, StorageProof, + merge_storage_proofs, }; use hash_db::Hasher; @@ -205,7 +206,7 @@ pub fn prove_execution( method, call_data, )?; - let total_proof = StorageProof::merge(vec![init_proof, exec_proof]); + let total_proof = merge_storage_proofs(vec![init_proof, exec_proof]); Ok((result, total_proof)) } @@ -258,17 +259,12 @@ fn check_execution_proof_with_make_header( &trie_backend, &mut changes, executor, "Core_initialize_block", &next_header.encode(), - &runtime_code, )?; // execute method @@ -278,9 +274,7 @@ fn check_execution_proof_with_make_header> LightDataChecker { H::Out: Ord + codec::Codec, { // all the checks are sharing the same storage - let storage = remote_roots_proof.into_memory_db(); + let storage = create_proof_check_backend_storage(remote_roots_proof); // remote_roots.keys() are sorted => we can use this to group changes tries roots // that are belongs to the same CHT @@ -187,8 +187,7 @@ impl> LightDataChecker { local_cht_root, block, remote_changes_trie_root, - &proving_backend, - )?; + &proving_backend)?; // and return the storage to use in following checks storage = proving_backend.into_storage(); @@ -271,7 +270,7 @@ impl FetchChecker for LightDataChecker body: Vec ) -> ClientResult> { // TODO: #2621 - let extrinsics_root = HashFor::::ordered_trie_root( + let extrinsics_root = HashFor::::ordered_trie_root( body.iter().map(Encode::encode).collect(), ); if *request.header.extrinsics_root() == extrinsics_root { @@ -295,7 +294,7 @@ struct RootsStorage<'a, Number: AtLeast32Bit, Hash: 'a> { impl<'a, H, Number, Hash> ChangesTrieRootsStorage for RootsStorage<'a, Number, Hash> where H: Hasher, - Number: std::fmt::Display + std::hash::Hash + Clone + AtLeast32Bit + Encode + Decode + Send + Sync + 'static, + Number: ::std::fmt::Display + ::std::hash::Hash + Clone + AtLeast32Bit + Encode + Decode + Send + Sync + 'static, Hash: 'a + Send + Sync + Clone + AsRef<[u8]>, { fn build_anchor( diff --git a/frame/system/benches/bench.rs b/frame/system/benches/bench.rs index 90a4ad1d34..cfcaa6f64a 100644 --- a/frame/system/benches/bench.rs +++ b/frame/system/benches/bench.rs @@ -18,7 +18,7 @@ use criterion::{Criterion, criterion_group, criterion_main, black_box}; use frame_system as system; use frame_support::{decl_module, decl_event, impl_outer_origin, impl_outer_event, weights::Weight}; use sp_core::H256; -use sp_runtime::{Perbill, traits::{BlakeTwo256, IdentityLookup}, testing::Header}; +use sp_runtime::{Perbill, PerThing, traits::{BlakeTwo256, IdentityLookup}, testing::Header}; mod module { use super::*; diff --git a/primitives/api/test/Cargo.toml b/primitives/api/test/Cargo.toml index 3b41e28cf3..6d2207c178 100644 --- a/primitives/api/test/Cargo.toml +++ b/primitives/api/test/Cargo.toml @@ -24,7 +24,6 @@ rustversion = "1.0.0" [dev-dependencies] criterion = "0.3.0" substrate-test-runtime-client = { version = "2.0.0-dev", path = "../../../test-utils/runtime/client" } -sp-core = { version = "2.0.0-alpha.1", path = "../../core" } [[bench]] name = "bench" diff --git a/primitives/api/test/tests/runtime_calls.rs b/primitives/api/test/tests/runtime_calls.rs index 9088f18265..18beaad917 100644 --- a/primitives/api/test/tests/runtime_calls.rs +++ b/primitives/api/test/tests/runtime_calls.rs @@ -164,12 +164,6 @@ fn record_proof_works() { let block_id = BlockId::Number(client.chain_info().best_number); let storage_root = longest_chain.best_chain().unwrap().state_root().clone(); - let runtime_code = sp_core::traits::RuntimeCode { - code: client.code_at(&block_id).unwrap(), - hash: vec![1], - heap_pages: None, - }; - let transaction = Transfer { amount: 1000, nonce: 0, @@ -198,6 +192,5 @@ fn record_proof_works() { &executor, "Core_execute_block", &block.encode(), - &runtime_code, ).expect("Executes block while using the proof backend"); } diff --git a/primitives/core/src/traits.rs b/primitives/core/src/traits.rs index 297430cfa6..bd02d39fb5 100644 --- a/primitives/core/src/traits.rs +++ b/primitives/core/src/traits.rs @@ -98,7 +98,6 @@ pub trait CodeExecutor: Sized + Send + Sync + CallInWasm + Clone + 'static { >( &self, ext: &mut E, - runtime_code: &RuntimeCode, method: &str, data: &[u8], use_native: bool, @@ -106,70 +105,6 @@ pub trait CodeExecutor: Sized + Send + Sync + CallInWasm + Clone + 'static { ) -> (Result, Self::Error>, bool); } - -/// The Wasm code of a Substrate runtime. -#[derive(Debug, Clone, codec::Encode, codec::Decode)] -pub struct RuntimeCode { - /// The actual Wasm code as binary blob. - pub code: Vec, - /// The optional heap pages this `code` should be executed with. - /// - /// If `None` are given, the default value of the executor will be used. - pub heap_pages: Option, - /// The SCALE encoded hash of `code`. - /// - /// The hashing algorithm isn't that important, as long as all runtime - /// code instances use the same. - pub hash: Vec, -} - -impl PartialEq for RuntimeCode { - fn eq(&self, other: &Self) -> bool { - self.hash == other.hash - } -} - -impl RuntimeCode { - /// Create an `RuntimeCode` instance from the given `Externalities`. - /// - /// Extracts the code and the heap pages using the well known keys. - /// - /// Returns an error if the code could not be found. - pub fn from_externalities(ext: &dyn Externalities) -> Result { - let code = ext.storage(sp_storage::well_known_keys::CODE).ok_or(CodeNotFound)?; - let hash = ext.storage_hash(sp_storage::well_known_keys::CODE).ok_or(CodeNotFound)?; - let heap_pages = ext.storage(sp_storage::well_known_keys::HEAP_PAGES) - .and_then(|hp| codec::Decode::decode(&mut &hp[..]).ok()); - - Ok(Self { - code, - hash, - heap_pages, - }) - } - - /// Create an empty instance. - /// - /// This is only useful for tests that don't want to execute any code. - pub fn empty() -> Self { - Self { - code: Vec::new(), - hash: Vec::new(), - heap_pages: None, - } - } -} - -/// Could not find the `:code` in the externalities while initializing the [`RuntimeCode`]. -#[derive(Debug)] -pub struct CodeNotFound; - -impl std::fmt::Display for CodeNotFound { - fn fmt(&self, f: &mut std::fmt::Formatter) -> Result<(), std::fmt::Error> { - write!(f, "the storage entry `:code` doesn't have any code") - } -} - /// Something that can call a method in a WASM blob. pub trait CallInWasm: Send + Sync { /// Call the given `method` in the given `wasm_blob` using `call_data` (SCALE encoded arguments) diff --git a/primitives/runtime/src/generic/block.rs b/primitives/runtime/src/generic/block.rs index fb07d6c215..a46396dce0 100644 --- a/primitives/runtime/src/generic/block.rs +++ b/primitives/runtime/src/generic/block.rs @@ -25,10 +25,7 @@ use serde::{Deserialize, Serialize}; use sp_std::prelude::*; use sp_core::RuntimeDebug; use crate::codec::{Codec, Encode, Decode}; -use crate::traits::{ - self, Member, Block as BlockT, Header as HeaderT, MaybeSerialize, MaybeMallocSizeOf, - NumberFor, -}; +use crate::traits::{self, Member, Block as BlockT, Header as HeaderT, MaybeSerialize, MaybeMallocSizeOf}; use crate::Justification; /// Something to identify a block. @@ -38,9 +35,9 @@ use crate::Justification; #[cfg_attr(feature = "std", serde(deny_unknown_fields))] pub enum BlockId { /// Identify by block header hash. - Hash(Block::Hash), + Hash(<::Header as HeaderT>::Hash), /// Identify by block number. - Number(NumberFor), + Number(<::Header as HeaderT>::Number), } impl BlockId { @@ -50,7 +47,7 @@ impl BlockId { } /// Create a block ID from a number. - pub fn number(number: NumberFor) -> Self { + pub fn number(number: ::Number) -> Self { BlockId::Number(number) } } diff --git a/primitives/state-machine/src/backend.rs b/primitives/state-machine/src/backend.rs index 9db41718ee..ca6612a5e9 100644 --- a/primitives/state-machine/src/backend.rs +++ b/primitives/state-machine/src/backend.rs @@ -18,9 +18,9 @@ use log::warn; use hash_db::Hasher; -use codec::{Decode, Encode}; +use codec::Encode; -use sp_core::{traits::RuntimeCode, storage::{ChildInfo, OwnedChildInfo, well_known_keys}}; +use sp_core::storage::{ChildInfo, OwnedChildInfo}; use sp_trie::{TrieMut, MemoryDB, trie_types::TrieDBMut}; use crate::{ @@ -359,22 +359,3 @@ pub(crate) fn insert_into_memory_db(mdb: &mut MemoryDB, input: I) -> Op Some(root) } - -/// Get the runtime code from the given `backend`. -/// -/// Returns an error if the `:code` could not be found. -pub fn get_runtime_code>(backend: &B) -> Result - where H::Out: Encode, -{ - let code = backend.storage(well_known_keys::CODE) - .ok() - .flatten() - .ok_or("`:code` not found")?; - let hash = H::hash(&code).encode(); - let heap_pages = backend.storage(well_known_keys::HEAP_PAGES) - .ok() - .flatten() - .and_then(|d| Decode::decode(&mut &d[..]).ok()); - - Ok(RuntimeCode { code, hash, heap_pages }) -} diff --git a/primitives/state-machine/src/lib.rs b/primitives/state-machine/src/lib.rs index 31d4f3a804..ce7fc243c1 100644 --- a/primitives/state-machine/src/lib.rs +++ b/primitives/state-machine/src/lib.rs @@ -23,8 +23,8 @@ use log::{warn, trace}; use hash_db::Hasher; use codec::{Decode, Encode, Codec}; use sp_core::{ - storage::ChildInfo, NativeOrEncoded, NeverNativeValue, hexdisplay::HexDisplay, - traits::{CodeExecutor, CallInWasmExt, RuntimeCode}, + storage::ChildInfo, NativeOrEncoded, NeverNativeValue, + traits::{CodeExecutor, CallInWasmExt}, hexdisplay::HexDisplay, }; use overlayed_changes::OverlayedChangeSet; use sp_externalities::Extensions; @@ -42,7 +42,7 @@ mod trie_backend; mod trie_backend_essence; mod stats; -pub use sp_trie::{trie_types::{Layout, TrieDBMut}, StorageProof, TrieMut, DBValue, MemoryDB}; +pub use sp_trie::{trie_types::{Layout, TrieDBMut}, TrieMut, DBValue, MemoryDB}; pub use testing::TestExternalities; pub use basic::BasicExternalities; pub use ext::Ext; @@ -67,7 +67,8 @@ pub use overlayed_changes::{ StorageCollection, ChildStorageCollection, }; pub use proving_backend::{ - create_proof_check_backend, ProofRecorder, ProvingBackend, ProvingBackendRecorder, + create_proof_check_backend, create_proof_check_backend_storage, merge_storage_proofs, + ProofRecorder, ProvingBackend, ProvingBackendRecorder, StorageProof, }; pub use trie_backend_essence::{TrieBackendStorage, Storage}; pub use trie_backend::TrieBackend; @@ -190,7 +191,6 @@ pub struct StateMachine<'a, B, H, N, Exec> changes_trie_state: Option>, _marker: PhantomData<(H, N)>, storage_transaction_cache: Option<&'a mut StorageTransactionCache>, - runtime_code: &'a RuntimeCode, } impl<'a, B, H, N, Exec> StateMachine<'a, B, H, N, Exec> where @@ -209,7 +209,6 @@ impl<'a, B, H, N, Exec> StateMachine<'a, B, H, N, Exec> where method: &'a str, call_data: &'a [u8], mut extensions: Extensions, - runtime_code: &'a RuntimeCode, ) -> Self { extensions.register(CallInWasmExt::new(exec.clone())); @@ -223,7 +222,6 @@ impl<'a, B, H, N, Exec> StateMachine<'a, B, H, N, Exec> where changes_trie_state, _marker: PhantomData, storage_transaction_cache: None, - runtime_code, } } @@ -294,7 +292,6 @@ impl<'a, B, H, N, Exec> StateMachine<'a, B, H, N, Exec> where let (result, was_native) = self.exec.call( &mut ext, - self.runtime_code, self.method, self.call_data, use_native, @@ -439,7 +436,6 @@ pub fn prove_execution( exec: &Exec, method: &str, call_data: &[u8], - runtime_code: &RuntimeCode, ) -> Result<(Vec, StorageProof), Box> where B: Backend, @@ -450,14 +446,7 @@ where { let trie_backend = backend.as_trie_backend() .ok_or_else(|| Box::new(ExecutionError::UnableToGenerateProof) as Box)?; - prove_execution_on_trie_backend::<_, _, N, _>( - trie_backend, - overlay, - exec, - method, - call_data, - runtime_code, - ) + prove_execution_on_trie_backend::<_, _, N, _>(trie_backend, overlay, exec, method, call_data) } /// Prove execution using the given trie backend, overlayed changes, and call executor. @@ -475,7 +464,6 @@ pub fn prove_execution_on_trie_backend( exec: &Exec, method: &str, call_data: &[u8], - runtime_code: &RuntimeCode, ) -> Result<(Vec, StorageProof), Box> where S: trie_backend_essence::TrieBackendStorage, @@ -486,14 +474,7 @@ where { let proving_backend = proving_backend::ProvingBackend::new(trie_backend); let mut sm = StateMachine::<_, H, N, Exec>::new( - &proving_backend, - None, - overlay, - exec, - method, - call_data, - Extensions::default(), - runtime_code, + &proving_backend, None, overlay, exec, method, call_data, Extensions::default(), ); let result = sm.execute_using_consensus_failure_handler::<_, NeverNativeValue, fn() -> _>( @@ -512,7 +493,6 @@ pub fn execution_proof_check( exec: &Exec, method: &str, call_data: &[u8], - runtime_code: &RuntimeCode, ) -> Result, Box> where H: Hasher, @@ -521,14 +501,7 @@ where N: crate::changes_trie::BlockNumber, { let trie_backend = create_proof_check_backend::(root.into(), proof)?; - execution_proof_check_on_trie_backend::<_, N, _>( - &trie_backend, - overlay, - exec, - method, - call_data, - runtime_code, - ) + execution_proof_check_on_trie_backend::<_, N, _>(&trie_backend, overlay, exec, method, call_data) } /// Check execution proof on proving backend, generated by `prove_execution` call. @@ -538,7 +511,6 @@ pub fn execution_proof_check_on_trie_backend( exec: &Exec, method: &str, call_data: &[u8], - runtime_code: &RuntimeCode, ) -> Result, Box> where H: Hasher, @@ -547,14 +519,7 @@ where N: crate::changes_trie::BlockNumber, { let mut sm = StateMachine::<_, H, N, Exec>::new( - trie_backend, - None, - overlay, - exec, - method, - call_data, - Extensions::default(), - runtime_code, + trie_backend, None, overlay, exec, method, call_data, Extensions::default(), ); sm.execute_using_consensus_failure_handler::<_, NeverNativeValue, fn() -> _>( @@ -727,7 +692,7 @@ mod tests { use super::*; use super::ext::Ext; use super::changes_trie::Configuration as ChangesTrieConfig; - use sp_core::{map, traits::{Externalities, RuntimeCode}, storage::ChildStorageKey}; + use sp_core::{map, traits::Externalities, storage::ChildStorageKey}; use sp_runtime::traits::BlakeTwo256; #[derive(Clone)] @@ -750,7 +715,6 @@ mod tests { >( &self, ext: &mut E, - _: &RuntimeCode, _method: &str, _data: &[u8], use_native: bool, @@ -804,7 +768,6 @@ mod tests { fn execute_works() { let backend = trie_backend::tests::test_trie(); let mut overlayed_changes = Default::default(); - let wasm_code = RuntimeCode::empty(); let mut state_machine = StateMachine::new( &backend, @@ -819,7 +782,6 @@ mod tests { "test", &[], Default::default(), - &wasm_code, ); assert_eq!( @@ -833,7 +795,6 @@ mod tests { fn execute_works_with_native_else_wasm() { let backend = trie_backend::tests::test_trie(); let mut overlayed_changes = Default::default(); - let wasm_code = RuntimeCode::empty(); let mut state_machine = StateMachine::new( &backend, @@ -848,7 +809,6 @@ mod tests { "test", &[], Default::default(), - &wasm_code, ); assert_eq!(state_machine.execute(ExecutionStrategy::NativeElseWasm).unwrap(), vec![66]); @@ -859,7 +819,6 @@ mod tests { let mut consensus_failed = false; let backend = trie_backend::tests::test_trie(); let mut overlayed_changes = Default::default(); - let wasm_code = RuntimeCode::empty(); let mut state_machine = StateMachine::new( &backend, @@ -874,7 +833,6 @@ mod tests { "test", &[], Default::default(), - &wasm_code, ); assert!( @@ -907,7 +865,6 @@ mod tests { &executor, "test", &[], - &RuntimeCode::empty(), ).unwrap(); // check proof locally @@ -918,7 +875,6 @@ mod tests { &executor, "test", &[], - &RuntimeCode::empty(), ).unwrap(); // check that both results are correct diff --git a/primitives/state-machine/src/proving_backend.rs b/primitives/state-machine/src/proving_backend.rs index 119fb59a72..7b6e8e0e69 100644 --- a/primitives/state-machine/src/proving_backend.rs +++ b/primitives/state-machine/src/proving_backend.rs @@ -18,19 +18,19 @@ use std::sync::Arc; use parking_lot::RwLock; -use codec::{Decode, Codec}; +use codec::{Decode, Encode, Codec}; use log::debug; use hash_db::{Hasher, HashDB, EMPTY_PREFIX, Prefix}; use sp_trie::{ MemoryDB, default_child_trie_root, read_trie_value_with, read_child_trie_value_with, - record_all_keys, StorageProof, + record_all_keys }; pub use sp_trie::Recorder; pub use sp_trie::trie_types::{Layout, TrieError}; use crate::trie_backend::TrieBackend; use crate::trie_backend_essence::{Ephemeral, TrieBackendEssence, TrieBackendStorage}; use crate::{Error, ExecutionError, Backend}; -use std::collections::HashMap; +use std::collections::{HashMap, HashSet}; use crate::DBValue; use sp_core::storage::ChildInfo; @@ -40,6 +40,82 @@ pub struct ProvingBackendRecorder<'a, S: 'a + TrieBackendStorage, H: 'a + Has pub(crate) proof_recorder: &'a mut Recorder, } +/// A proof that some set of key-value pairs are included in the storage trie. The proof contains +/// the storage values so that the partial storage backend can be reconstructed by a verifier that +/// does not already have access to the key-value pairs. +/// +/// The proof consists of the set of serialized nodes in the storage trie accessed when looking up +/// the keys covered by the proof. Verifying the proof requires constructing the partial trie from +/// the serialized nodes and performing the key lookups. +#[derive(Debug, PartialEq, Eq, Clone, Encode, Decode)] +pub struct StorageProof { + trie_nodes: Vec>, +} + +impl StorageProof { + /// Constructs a storage proof from a subset of encoded trie nodes in a storage backend. + pub fn new(trie_nodes: Vec>) -> Self { + StorageProof { trie_nodes } + } + + /// Returns a new empty proof. + /// + /// An empty proof is capable of only proving trivial statements (ie. that an empty set of + /// key-value pairs exist in storage). + pub fn empty() -> Self { + StorageProof { + trie_nodes: Vec::new(), + } + } + + /// Returns whether this is an empty proof. + pub fn is_empty(&self) -> bool { + self.trie_nodes.is_empty() + } + + /// Create an iterator over trie nodes constructed from the proof. The nodes are not guaranteed + /// to be traversed in any particular order. + pub fn iter_nodes(self) -> StorageProofNodeIterator { + StorageProofNodeIterator::new(self) + } +} + +/// An iterator over trie nodes constructed from a storage proof. The nodes are not guaranteed to +/// be traversed in any particular order. +pub struct StorageProofNodeIterator { + inner: > as IntoIterator>::IntoIter, +} + +impl StorageProofNodeIterator { + fn new(proof: StorageProof) -> Self { + StorageProofNodeIterator { + inner: proof.trie_nodes.into_iter(), + } + } +} + +impl Iterator for StorageProofNodeIterator { + type Item = Vec; + + fn next(&mut self) -> Option { + self.inner.next() + } +} + +/// Merges multiple storage proofs covering potentially different sets of keys into one proof +/// covering all keys. The merged proof output may be smaller than the aggregate size of the input +/// proofs due to deduplication of trie nodes. +pub fn merge_storage_proofs(proofs: I) -> StorageProof + where I: IntoIterator +{ + let trie_nodes = proofs.into_iter() + .flat_map(|proof| proof.iter_nodes()) + .collect::>() + .into_iter() + .collect(); + StorageProof { trie_nodes } +} + impl<'a, S, H> ProvingBackendRecorder<'a, S, H> where S: TrieBackendStorage, @@ -146,7 +222,7 @@ impl<'a, S: 'a + TrieBackendStorage, H: 'a + Hasher> ProvingBackend<'a, S, H> let root = essence.root().clone(); let recorder = ProofRecorderBackend { backend: essence.backend_storage(), - proof_recorder, + proof_recorder: proof_recorder, }; ProvingBackend(TrieBackend::new(recorder, root)) } @@ -294,7 +370,7 @@ where H: Hasher, H::Out: Codec, { - let db = proof.into_memory_db(); + let db = create_proof_check_backend_storage(proof); if db.contains(&root, EMPTY_PREFIX) { Ok(TrieBackend::new(db, root)) @@ -303,6 +379,20 @@ where } } +/// Create in-memory storage of proof check backend. +pub fn create_proof_check_backend_storage( + proof: StorageProof, +) -> MemoryDB +where + H: Hasher, +{ + let mut db = MemoryDB::default(); + for item in proof.iter_nodes() { + db.insert(EMPTY_PREFIX, &item); + } + db +} + #[cfg(test)] mod tests { use crate::InMemoryBackend; diff --git a/primitives/trie/src/lib.rs b/primitives/trie/src/lib.rs index 80570a9792..f6131c8ed5 100644 --- a/primitives/trie/src/lib.rs +++ b/primitives/trie/src/lib.rs @@ -21,7 +21,6 @@ mod error; mod node_header; mod node_codec; -mod storage_proof; mod trie_stream; use sp_std::boxed::Box; @@ -36,7 +35,6 @@ pub use error::Error; pub use trie_stream::TrieStream; /// The Substrate format implementation of `NodeCodec`. pub use node_codec::NodeCodec; -pub use storage_proof::StorageProof; /// Various re-exports from the `trie-db` crate. pub use trie_db::{ Trie, TrieMut, DBValue, Recorder, CError, Query, TrieLayout, TrieConfiguration, nibble_ops, TrieDBIterator, diff --git a/primitives/trie/src/storage_proof.rs b/primitives/trie/src/storage_proof.rs deleted file mode 100644 index 254adc2fcb..0000000000 --- a/primitives/trie/src/storage_proof.rs +++ /dev/null @@ -1,109 +0,0 @@ -// Copyright 2020 Parity Technologies (UK) Ltd. -// This file is part of Substrate. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -use sp_std::vec::Vec; -use codec::{Encode, Decode}; -use hash_db::{Hasher, HashDB}; - -/// A proof that some set of key-value pairs are included in the storage trie. The proof contains -/// the storage values so that the partial storage backend can be reconstructed by a verifier that -/// does not already have access to the key-value pairs. -/// -/// The proof consists of the set of serialized nodes in the storage trie accessed when looking up -/// the keys covered by the proof. Verifying the proof requires constructing the partial trie from -/// the serialized nodes and performing the key lookups. -#[derive(Debug, PartialEq, Eq, Clone, Encode, Decode)] -pub struct StorageProof { - trie_nodes: Vec>, -} - -impl StorageProof { - /// Constructs a storage proof from a subset of encoded trie nodes in a storage backend. - pub fn new(trie_nodes: Vec>) -> Self { - StorageProof { trie_nodes } - } - - /// Returns a new empty proof. - /// - /// An empty proof is capable of only proving trivial statements (ie. that an empty set of - /// key-value pairs exist in storage). - pub fn empty() -> Self { - StorageProof { - trie_nodes: Vec::new(), - } - } - - /// Returns whether this is an empty proof. - pub fn is_empty(&self) -> bool { - self.trie_nodes.is_empty() - } - - /// Create an iterator over trie nodes constructed from the proof. The nodes are not guaranteed - /// to be traversed in any particular order. - pub fn iter_nodes(self) -> StorageProofNodeIterator { - StorageProofNodeIterator::new(self) - } - - /// Creates a `MemoryDB` from `Self`. - pub fn into_memory_db(self) -> crate::MemoryDB { - self.into() - } - - /// Merges multiple storage proofs covering potentially different sets of keys into one proof - /// covering all keys. The merged proof output may be smaller than the aggregate size of the input - /// proofs due to deduplication of trie nodes. - pub fn merge(proofs: I) -> Self where I: IntoIterator { - let trie_nodes = proofs.into_iter() - .flat_map(|proof| proof.iter_nodes()) - .collect::>() - .into_iter() - .collect(); - - Self { trie_nodes } - } -} - -/// An iterator over trie nodes constructed from a storage proof. The nodes are not guaranteed to -/// be traversed in any particular order. -pub struct StorageProofNodeIterator { - inner: > as IntoIterator>::IntoIter, -} - -impl StorageProofNodeIterator { - fn new(proof: StorageProof) -> Self { - StorageProofNodeIterator { - inner: proof.trie_nodes.into_iter(), - } - } -} - -impl Iterator for StorageProofNodeIterator { - type Item = Vec; - - fn next(&mut self) -> Option { - self.inner.next() - } -} - -impl From for crate::MemoryDB { - fn from(proof: StorageProof) -> Self { - let mut db = crate::MemoryDB::default(); - for item in proof.iter_nodes() { - db.insert(crate::EMPTY_PREFIX, &item); - } - db - } -} diff --git a/test-utils/runtime/src/system.rs b/test-utils/runtime/src/system.rs index 073e06de81..b410d317a1 100644 --- a/test-utils/runtime/src/system.rs +++ b/test-utils/runtime/src/system.rs @@ -338,7 +338,7 @@ mod tests { use sp_io::TestExternalities; use substrate_test_runtime_client::{AccountKeyring, Sr25519Keyring}; use crate::{Header, Transfer, WASM_BINARY}; - use sp_core::{NeverNativeValue, map, traits::{CodeExecutor, RuntimeCode}}; + use sp_core::{NeverNativeValue, map, traits::CodeExecutor}; use sc_executor::{NativeExecutor, WasmExecutionMethod, native_executor_instance}; use sp_io::hashing::twox_128; @@ -401,11 +401,8 @@ mod tests { fn block_import_works_wasm() { block_import_works(|b, ext| { let mut ext = ext.ext(); - let runtime_code = RuntimeCode::from_externalities(&ext) - .expect("Code is part of the externalities"); executor().call::<_, NeverNativeValue, fn() -> _>( &mut ext, - &runtime_code, "Core_execute_block", &b.encode(), false, @@ -497,11 +494,8 @@ mod tests { fn block_import_with_transaction_works_wasm() { block_import_with_transaction_works(|b, ext| { let mut ext = ext.ext(); - let runtime_code = RuntimeCode::from_externalities(&ext) - .expect("Code is part of the externalities"); executor().call::<_, NeverNativeValue, fn() -> _>( &mut ext, - &runtime_code, "Core_execute_block", &b.encode(), false, diff --git a/utils/frame/benchmarking-cli/Cargo.toml b/utils/frame/benchmarking-cli/Cargo.toml index 89143ee9fe..93c62c3f96 100644 --- a/utils/frame/benchmarking-cli/Cargo.toml +++ b/utils/frame/benchmarking-cli/Cargo.toml @@ -16,6 +16,5 @@ sc-client = { version = "0.8.0-alpha.2", path = "../../../client" } sc-client-db = { version = "0.8.0-alpha.2", path = "../../../client/db" } sc-executor = { version = "0.8.0-alpha.2", path = "../../../client/executor" } sp-runtime = { version = "2.0.0-alpha.2", path = "../../../primitives/runtime" } -sp-state-machine = { version = "0.8.0-alpha.2", path = "../../../primitives/state-machine" } structopt = "0.3.8" codec = { version = "1.2.0", package = "parity-scale-codec" } diff --git a/utils/frame/benchmarking-cli/src/lib.rs b/utils/frame/benchmarking-cli/src/lib.rs index 1074944554..899419e5de 100644 --- a/utils/frame/benchmarking-cli/src/lib.rs +++ b/utils/frame/benchmarking-cli/src/lib.rs @@ -121,7 +121,6 @@ impl BenchmarkCmd { self.repeat, ).encode(), Default::default(), - &sp_state_machine::backend::get_runtime_code(&state)?, ) .execute(strategy.into()) .map_err(|e| format!("Error executing runtime benchmark: {:?}", e))?; -- GitLab From 58267dc480fe83221f53c9f2c1583ac6251dd40b Mon Sep 17 00:00:00 2001 From: kianenigma Date: Thu, 5 Mar 2020 11:06:42 +0100 Subject: [PATCH 106/301] Fix new staking / session / babe relation --- bin/node/runtime/src/lib.rs | 3 +- frame/authority-discovery/src/lib.rs | 1 + frame/babe/src/lib.rs | 4 +- frame/babe/src/mock.rs | 1 + frame/im-online/src/mock.rs | 1 + frame/session/src/lib.rs | 56 ++++++++++++++++++++++--- frame/session/src/mock.rs | 1 + frame/staking/fuzz/Cargo.lock | 2 + frame/staking/fuzz/Cargo.toml | 2 +- frame/staking/fuzz/fuzz_targets/mock.rs | 19 +++------ frame/staking/src/lib.rs | 11 ++--- frame/staking/src/mock.rs | 17 ++------ frame/staking/src/testing_utils.rs | 10 +++-- frame/support/src/traits.rs | 30 +++++++++---- 14 files changed, 100 insertions(+), 58 deletions(-) diff --git a/bin/node/runtime/src/lib.rs b/bin/node/runtime/src/lib.rs index 902a3682a1..c77ad035c1 100644 --- a/bin/node/runtime/src/lib.rs +++ b/bin/node/runtime/src/lib.rs @@ -293,6 +293,7 @@ impl pallet_session::Trait for Runtime { type SessionHandler = ::KeyTypeIdProviders; type Keys = SessionKeys; type DisabledValidatorsThreshold = DisabledValidatorsThreshold; + type NextSessionRotation = Babe; } impl pallet_session::historical::Trait for Runtime { @@ -335,7 +336,7 @@ impl pallet_staking::Trait for Runtime { type SlashCancelOrigin = pallet_collective::EnsureProportionAtLeast<_3, _4, AccountId, CouncilCollective>; type SessionInterface = Self; type RewardCurve = RewardCurve; - type NextSessionChange = Babe; + type NextNewSession = Session; type ElectionLookahead = ElectionLookahead; type Call = Call; type SubmitTransaction = TransactionSubmitterOf; diff --git a/frame/authority-discovery/src/lib.rs b/frame/authority-discovery/src/lib.rs index 8ee4931e48..b8f28b432b 100644 --- a/frame/authority-discovery/src/lib.rs +++ b/frame/authority-discovery/src/lib.rs @@ -121,6 +121,7 @@ mod tests { type ValidatorId = AuthorityId; type ValidatorIdOf = ConvertInto; type DisabledValidatorsThreshold = DisabledValidatorsThreshold; + type NextSessionRotation = pallet_session::PeriodicSessions; } impl pallet_session::historical::Trait for Test { diff --git a/frame/babe/src/lib.rs b/frame/babe/src/lib.rs index a9faf2ffe2..8f504c19db 100644 --- a/frame/babe/src/lib.rs +++ b/frame/babe/src/lib.rs @@ -491,8 +491,8 @@ impl OnTimestampSet for Module { fn on_timestamp_set(_moment: T::Moment) { } } -impl frame_support::traits::EstimateNextSessionChange for Module { - fn estimate_next_session_change(now: T::BlockNumber) -> T::BlockNumber { +impl frame_support::traits::EstimateNextSessionRotation for Module { + fn estimate_next_session_rotation(now: T::BlockNumber) -> T::BlockNumber { Self::next_expected_epoch_change(now) } } diff --git a/frame/babe/src/mock.rs b/frame/babe/src/mock.rs index 7aad3febb5..90ec0efdde 100644 --- a/frame/babe/src/mock.rs +++ b/frame/babe/src/mock.rs @@ -86,6 +86,7 @@ impl pallet_session::Trait for Test { type ValidatorIdOf = (); type Keys = MockSessionKeys; type DisabledValidatorsThreshold = DisabledValidatorsThreshold; + type NextSessionRotation = Babe; } impl pallet_timestamp::Trait for Test { diff --git a/frame/im-online/src/mock.rs b/frame/im-online/src/mock.rs index 78b6409d54..1fd1bcbdfe 100644 --- a/frame/im-online/src/mock.rs +++ b/frame/im-online/src/mock.rs @@ -141,6 +141,7 @@ impl pallet_session::Trait for Runtime { type Keys = UintAuthorityId; type Event = (); type DisabledValidatorsThreshold = DisabledValidatorsThreshold; + type NextSessionRotation = pallet_session::PeriodicSessions; } impl pallet_session::historical::Trait for Runtime { diff --git a/frame/session/src/lib.rs b/frame/session/src/lib.rs index 1097cfd6be..f1c761c357 100644 --- a/frame/session/src/lib.rs +++ b/frame/session/src/lib.rs @@ -103,10 +103,14 @@ use sp_std::{prelude::*, marker::PhantomData, ops::{Sub, Rem}}; use codec::Decode; use sp_runtime::{KeyTypeId, Perbill, RuntimeAppPublic, BoundToRuntimeAppPublic}; use frame_support::weights::SimpleDispatchInfo; -use sp_runtime::traits::{Convert, Zero, Member, OpaqueKeys}; +use sp_runtime::traits::{Convert, Zero, Member, OpaqueKeys, Saturating}; use sp_staking::SessionIndex; -use frame_support::{ensure, decl_module, decl_event, decl_storage, decl_error, ConsensusEngineId}; -use frame_support::{traits::{Get, FindAuthor, ValidatorRegistration}, Parameter}; +use frame_support::{ + ensure, decl_module, decl_event, decl_storage, decl_error, ConsensusEngineId, Parameter, +}; +use frame_support::traits::{ + Get, FindAuthor, ValidatorRegistration, EstimateNextSessionRotation, EstimateNextNewSession, +}; use frame_support::dispatch::{self, DispatchResult, DispatchError}; use frame_system::{self as system, ensure_signed}; @@ -143,6 +147,31 @@ impl< } } +impl< + BlockNumber: Rem + Sub + Zero + PartialOrd + Saturating + Clone, + Period: Get, + Offset: Get, +> EstimateNextSessionRotation for PeriodicSessions { + fn estimate_next_session_rotation(now: BlockNumber) -> BlockNumber { + let offset = Offset::get(); + let period = Period::get(); + if now > offset { + let block_after_last_session = (now.clone() - offset) % period.clone(); + match block_after_last_session > Zero::zero() { + true => + { + now.saturating_add( + period.saturating_sub(block_after_last_session) + ) + } + false => Zero::zero() + } + } else { + offset + } + } +} + /// A trait for managing creation of new validator set. pub trait SessionManager { /// Plan a new session, and optionally provide the new validator set. @@ -155,7 +184,7 @@ pub trait SessionManager { /// The returned validator set, if any, will not be applied until `new_index`. /// `new_index` is strictly greater than from previous call. /// - /// The first session start at index 0. + /// The first session starts at index 0. fn new_session(new_index: SessionIndex) -> Option>; /// End the session. /// @@ -324,6 +353,11 @@ pub trait Trait: frame_system::Trait { /// Indicator for when to end the session. type ShouldEndSession: ShouldEndSession; + /// Something that can predict the next session rotation. This should typically come from the + /// same logical unit that provides [`ShouldEndSession`], yet, it gives a best effort estimate. + /// It is helpful to implement [`EstimateNextNewSession`]. + type NextSessionRotation: EstimateNextSessionRotation; + /// Handler for managing new session. type SessionManager: SessionManager; @@ -744,6 +778,14 @@ impl> FindAuthor } } +impl EstimateNextNewSession for Module { + /// This session module always calls new_session and next_session at the same time, hence we + /// do a simple proxy and pass the function to next rotation. + fn estimate_next_new_session(now: T::BlockNumber) -> T::BlockNumber { + T::NextSessionRotation::estimate_next_session_rotation(now) + } +} + #[cfg(test)] mod tests { use super::*; @@ -1001,17 +1043,19 @@ mod tests { fn get() -> u64 { 3 } } - type P = PeriodicSessions; for i in 0..3 { + assert_eq!(P::estimate_next_session_rotation(i), 3); assert!(!P::should_end_session(i)); } assert!(P::should_end_session(3)); + assert_eq!(P::estimate_next_session_rotation(3), 3); - for i in (1..10).map(|i| 3 + i) { + for i in 4..13 { assert!(!P::should_end_session(i)); + assert_eq!(P::estimate_next_session_rotation(i), 13); } assert!(P::should_end_session(13)); diff --git a/frame/session/src/mock.rs b/frame/session/src/mock.rs index 9d64285b90..dd28d35749 100644 --- a/frame/session/src/mock.rs +++ b/frame/session/src/mock.rs @@ -205,6 +205,7 @@ impl Trait for Test { type Keys = MockSessionKeys; type Event = (); type DisabledValidatorsThreshold = DisabledValidatorsThreshold; + type NextSessionRotation = (); } #[cfg(feature = "historical")] diff --git a/frame/staking/fuzz/Cargo.lock b/frame/staking/fuzz/Cargo.lock index 693dd7a95c..b24f525047 100644 --- a/frame/staking/fuzz/Cargo.lock +++ b/frame/staking/fuzz/Cargo.lock @@ -321,6 +321,8 @@ dependencies = [ name = "frame-benchmarking" version = "2.0.0-alpha.3" dependencies = [ + "frame-support 2.0.0-alpha.3", + "frame-system 2.0.0-alpha.3", "parity-scale-codec 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "sp-api 2.0.0-alpha.3", "sp-io 2.0.0-alpha.3", diff --git a/frame/staking/fuzz/Cargo.toml b/frame/staking/fuzz/Cargo.toml index efcb5b1cfa..0b5bc21815 100644 --- a/frame/staking/fuzz/Cargo.toml +++ b/frame/staking/fuzz/Cargo.toml @@ -11,7 +11,7 @@ cargo-fuzz = true [dependencies] libfuzzer-sys = "0.3" -codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } +codec = { package = "parity-scale-codec", version = "1.2.0", default-features = false, features = ["derive"] } pallet-staking = { version = "2.0.0-alpha.2", path = "..", features = ["testing-utils"] } pallet-staking-reward-curve = { version = "2.0.0-alpha.2", path = "../reward-curve" } pallet-session = { version = "2.0.0-alpha.2", path = "../../session" } diff --git a/frame/staking/fuzz/fuzz_targets/mock.rs b/frame/staking/fuzz/fuzz_targets/mock.rs index 8b68e74ba5..4bb3437f92 100644 --- a/frame/staking/fuzz/fuzz_targets/mock.rs +++ b/frame/staking/fuzz/fuzz_targets/mock.rs @@ -18,7 +18,6 @@ use sp_runtime::traits::{Convert, SaturatedConversion}; use frame_support::{impl_outer_origin, impl_outer_dispatch, parameter_types}; -use frame_support::traits::{Get, EstimateNextSessionChange}; type AccountId = u64; type AccountIndex = u32; @@ -29,6 +28,7 @@ type System = frame_system::Module; type Balances = pallet_balances::Module; type Staking = pallet_staking::Module; type Indices = pallet_indices::Module; +type Session = pallet_session::Module; impl_outer_origin! { pub enum Origin for Test where system = frame_system {} @@ -52,18 +52,6 @@ impl Convert for CurrencyToVoteHandler { } } -pub struct PeriodicSessionChange

(sp_std::marker::PhantomData

); -impl

EstimateNextSessionChange for PeriodicSessionChange

-where - P: Get, -{ - fn estimate_next_session_change(now: BlockNumber) -> BlockNumber { - let period = P::get(); - let excess = now % period; - now - excess + period - } -} - #[derive(Clone, Eq, PartialEq, Debug)] pub struct Test; @@ -142,6 +130,7 @@ impl pallet_session::Trait for Test { type SessionManager = pallet_session::historical::NoteHistoricalRoot; type Keys = SessionKeys; type ShouldEndSession = pallet_session::PeriodicSessions<(), ()>; + type NextSessionRotation = pallet_session::PeriodicSessions<(), ()>; type SessionHandler = TestSessionHandler; type Event = (); type ValidatorId = AccountId; @@ -160,6 +149,7 @@ pallet_staking_reward_curve::build! { } parameter_types! { pub const RewardCurve: &'static sp_runtime::curve::PiecewiseLinear<'static> = &I_NPOS; + pub const MaxNominatorRewardedPerValidator: u32 = 64; } pub type Extrinsic = sp_runtime::testing::TestXt; @@ -183,9 +173,10 @@ impl pallet_staking::Trait for Test { type BondingDuration = (); type SessionInterface = Self; type RewardCurve = RewardCurve; - type NextSessionChange = PeriodicSessionChange<()>; + type NextNewSession = Session; type ElectionLookahead = (); type Call = Call; type SubmitTransaction = SubmitTransaction; type KeyType = sp_runtime::testing::UintAuthorityId; + type MaxNominatorRewardedPerValidator = MaxNominatorRewardedPerValidator; } diff --git a/frame/staking/src/lib.rs b/frame/staking/src/lib.rs index 31e1b24ada..8d18e5d074 100644 --- a/frame/staking/src/lib.rs +++ b/frame/staking/src/lib.rs @@ -268,7 +268,7 @@ use frame_support::{ dispatch::{IsSubType, DispatchResult}, traits::{ Currency, LockIdentifier, LockableCurrency, WithdrawReasons, OnUnbalanced, Imbalance, Get, - Time, EstimateNextSessionChange, + Time, EstimateNextNewSession, } }; use pallet_session::historical; @@ -770,7 +770,7 @@ pub trait Trait: frame_system::Trait { type RewardCurve: Get<&'static PiecewiseLinear<'static>>; /// Something that can estimate the next session change, accurately or as a best effort guess. - type NextSessionChange: EstimateNextSessionChange; + type NextNewSession: EstimateNextNewSession; /// How many blocks ahead of the era, within the last do we try to run the phragmen offchain? /// Setting this to zero will disable the offchain compute and only on-chain seq-phragmen will @@ -1125,7 +1125,7 @@ decl_module! { Self::is_current_session_final() { let next_session_change = - T::NextSessionChange::estimate_next_session_change(now); + T::NextNewSession::estimate_next_new_session(now); if let Some(remaining) = next_session_change.checked_sub(&now) { if remaining <= T::ElectionLookahead::get() && !remaining.is_zero() { // create snapshot. @@ -3132,10 +3132,7 @@ impl frame_support::unsigned::ValidateUnsigned for Module { priority: score[0].saturated_into(), requires: vec![], provides: vec![(Self::current_era(), validator_key).encode()], - // longevity: TryInto::::try_into(T::ElectionLookahead::get()).unwrap_or(150_u64), - longevity: TryInto::::try_into( - T::NextSessionChange::estimate_next_session_change(>::block_number()) - >::block_number() - ).unwrap_or(150_u64), + longevity: TryInto::::try_into(T::ElectionLookahead::get()).unwrap_or(150_u64), propagate: true, }) } else { diff --git a/frame/staking/src/mock.rs b/frame/staking/src/mock.rs index 0ad5a2a5ef..e524fa116b 100644 --- a/frame/staking/src/mock.rs +++ b/frame/staking/src/mock.rs @@ -29,7 +29,7 @@ use sp_core::H256; use frame_support::{ assert_ok, impl_outer_origin, parameter_types, StorageLinkedMap, StorageValue, StorageMap, impl_outer_dispatch, StorageDoubleMap, impl_outer_event, - traits::{Currency, Get, FindAuthor, EstimateNextSessionChange}, + traits::{Currency, Get, FindAuthor}, weights::Weight, }; use frame_system::offchain::{CreateTransaction, Signer, TransactionSubmitter}; @@ -178,18 +178,6 @@ impl_outer_event! { } } -pub struct PeriodicSessionChange

(sp_std::marker::PhantomData

); -impl

EstimateNextSessionChange for PeriodicSessionChange

-where - P: Get, -{ - fn estimate_next_session_change(now: BlockNumber) -> BlockNumber { - let period = P::get(); - let excess = now % period; - now - excess + period - } -} - /// Author of block is always 11 pub struct Author11; impl FindAuthor for Author11 { @@ -267,6 +255,7 @@ impl pallet_session::Trait for Test { type ValidatorId = AccountId; type ValidatorIdOf = crate::StashOf; type DisabledValidatorsThreshold = DisabledValidatorsThreshold; + type NextSessionRotation = pallet_session::PeriodicSessions; } impl pallet_session::historical::Trait for Test { @@ -317,7 +306,7 @@ impl Trait for Test { type BondingDuration = BondingDuration; type SessionInterface = Self; type RewardCurve = RewardCurve; - type NextSessionChange = PeriodicSessionChange; + type NextNewSession = Session; type ElectionLookahead = ElectionLookahead; type Call = Call; type SubmitTransaction = SubmitTransaction; diff --git a/frame/staking/src/testing_utils.rs b/frame/staking/src/testing_utils.rs index bae1060987..79a462335b 100644 --- a/frame/staking/src/testing_utils.rs +++ b/frame/staking/src/testing_utils.rs @@ -152,7 +152,6 @@ where pub fn get_weak_solution( do_reduce: bool, ) -> (Vec, CompactAssignments, PhragmenScore) { - use sp_std::collections::btree_map::BTreeMap; let mut backing_stake_of: BTreeMap> = BTreeMap::new(); // self stake @@ -323,16 +322,19 @@ pub fn get_seq_phragmen_solution( } /// Remove all validator, nominators, votes and exposures. -pub fn clean() { +pub fn clean(era: EraIndex) + where + ::AccountId: codec::EncodeLike, + u32: codec::EncodeLike, +{ >::enumerate().for_each(|(k, _)| { let ctrl = >::bonded(&k).unwrap(); >::remove(&k); >::remove(&k); - >::remove(&k); >::remove(&ctrl); + >::remove(k, era); }); >::enumerate().for_each(|(k, _)| >::remove(k)); - >::remove_all(); >::remove_all(); >::remove_all(); >::kill(); diff --git a/frame/support/src/traits.rs b/frame/support/src/traits.rs index a8364769d3..5626b13719 100644 --- a/frame/support/src/traits.rs +++ b/frame/support/src/traits.rs @@ -138,17 +138,29 @@ impl< } } -/// Something that can estimate at which block number the next era change will happen in a best -/// effort manner. The result may or may night be accurate, based on the chain configuration and -/// semantics. -pub trait EstimateNextSessionChange { - /// Return the block number at which the next era change is estimated to happen. - fn estimate_next_session_change(now: BlockNumber) -> BlockNumber; +/// Something that can estimate at which block the next session rotation will happen. This should +/// be the same logical unit that dictates `ShouldEndSession` to the session module. No Assumptions +/// are made about the scheduling of the sessions. +pub trait EstimateNextSessionRotation { + /// Return the block number at which the next session rotation is estimated to happen. + fn estimate_next_session_rotation(now: BlockNumber) -> BlockNumber; } -impl EstimateNextSessionChange for () { - fn estimate_next_session_change(_: BlockNumber) -> BlockNumber { - // practically never +impl EstimateNextSessionRotation for () { + fn estimate_next_session_rotation(_: BlockNumber) -> BlockNumber { + Bounded::max_value() + } +} + +/// Something that can estimate at which block the next `new_session` will be triggered. This must +/// always be implemented by the session module. +pub trait EstimateNextNewSession { + /// Return the block number at which the next new session is estimated to happen. + fn estimate_next_new_session(now: BlockNumber) -> BlockNumber; +} + +impl EstimateNextNewSession for () { + fn estimate_next_new_session(_: BlockNumber) -> BlockNumber { Bounded::max_value() } } -- GitLab From 69ea3c4eb9ce487b7c4f15294ec4b15981c7b671 Mon Sep 17 00:00:00 2001 From: Benjamin Kampmann Date: Thu, 5 Mar 2020 11:25:28 +0100 Subject: [PATCH 107/301] Use 128mb for db cache default (#5134) --- client/cli/src/params/import_params.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/cli/src/params/import_params.rs b/client/cli/src/params/import_params.rs index f7f68d68fb..95d7623d11 100644 --- a/client/cli/src/params/import_params.rs +++ b/client/cli/src/params/import_params.rs @@ -55,7 +55,7 @@ pub struct ImportParams { pub execution_strategies: ExecutionStrategies, /// Limit the memory the database cache can use. - #[structopt(long = "db-cache", value_name = "MiB", default_value = "32")] + #[structopt(long = "db-cache", value_name = "MiB", default_value = "128")] pub database_cache_size: u32, /// Specify the state cache size. -- GitLab From dc124bb3c43bfc878ade3e504c2faf9c7b38e24e Mon Sep 17 00:00:00 2001 From: Gavin Wood Date: Thu, 5 Mar 2020 12:03:20 +0100 Subject: [PATCH 108/301] Adds `vested_transfer` to Vesting pallet (#5029) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Add the vested_transfer function with tests * Add VestingDeposit for minimum amount to create a new schedule * Remove irrelevant file commit * Bump spec * Add weight comment * Fix CI build * Make the check before the transfer * Update frame/vesting/src/lib.rs Co-Authored-By: Shawn Tabrizi * Update frame/vesting/src/lib.rs Co-Authored-By: Shawn Tabrizi * Update frame/vesting/src/lib.rs Co-Authored-By: Bastian Köcher * Update frame/vesting/src/lib.rs Co-Authored-By: Bastian Köcher * Update frame/vesting/src/lib.rs Co-Authored-By: Bastian Köcher * Add tab to line 249 * Rename to `MinVestedTransfer` for clarity Co-authored-by: Shawn Tabrizi Co-authored-by: Bastian Köcher --- bin/node/runtime/src/lib.rs | 9 ++- frame/vesting/src/lib.rs | 143 +++++++++++++++++++++++++++++++++++- 2 files changed, 148 insertions(+), 4 deletions(-) diff --git a/bin/node/runtime/src/lib.rs b/bin/node/runtime/src/lib.rs index 3a7df27466..0844b32f7c 100644 --- a/bin/node/runtime/src/lib.rs +++ b/bin/node/runtime/src/lib.rs @@ -82,8 +82,8 @@ pub const VERSION: RuntimeVersion = RuntimeVersion { // and set impl_version to 0. If only runtime // implementation changes and behavior does not, then leave spec_version as // is and increment impl_version. - spec_version: 227, - impl_version: 1, + spec_version: 229, + impl_version: 0, apis: RUNTIME_API_VERSIONS, }; @@ -590,10 +590,15 @@ impl pallet_society::Trait for Runtime { type ChallengePeriod = ChallengePeriod; } +parameter_types! { + pub const MinVestedTransfer: Balance = 100 * DOLLARS; +} + impl pallet_vesting::Trait for Runtime { type Event = Event; type Currency = Balances; type BlockNumberToBalance = ConvertInto; + type MinVestedTransfer = MinVestedTransfer; } construct_runtime!( diff --git a/frame/vesting/src/lib.rs b/frame/vesting/src/lib.rs index fdc480ddd0..d4a34d4e17 100644 --- a/frame/vesting/src/lib.rs +++ b/frame/vesting/src/lib.rs @@ -52,10 +52,12 @@ use codec::{Encode, Decode}; use sp_runtime::{DispatchResult, RuntimeDebug, traits::{ StaticLookup, Zero, AtLeast32Bit, MaybeSerializeDeserialize, Convert }}; -use frame_support::{decl_module, decl_event, decl_storage, decl_error}; +use frame_support::{decl_module, decl_event, decl_storage, decl_error, ensure}; use frame_support::traits::{ - Currency, LockableCurrency, VestingSchedule, WithdrawReason, LockIdentifier + Currency, LockableCurrency, VestingSchedule, WithdrawReason, LockIdentifier, ExistenceRequirement, + Get, }; +use frame_support::weights::SimpleDispatchInfo; use frame_system::{self as system, ensure_signed}; type BalanceOf = <::Currency as Currency<::AccountId>>::Balance; @@ -69,6 +71,9 @@ pub trait Trait: frame_system::Trait { /// Convert the block number into a balance. type BlockNumberToBalance: Convert>; + + /// The minimum amount transferred to call `vested_transfer`. + type MinVestedTransfer: Get>; } const VESTING_ID: LockIdentifier = *b"vesting "; @@ -158,6 +163,8 @@ decl_error! { NotVesting, /// An existing vesting schedule already exists for this account that cannot be clobbered. ExistingVestingSchedule, + /// Amount being transferred is too low to create a vesting schedule. + AmountLow, } } @@ -166,6 +173,9 @@ decl_module! { pub struct Module for enum Call where origin: T::Origin { type Error = Error; + /// The minimum amount to be transferred to create a new vesting schedule. + const MinVestedTransfer: BalanceOf = T::MinVestedTransfer::get(); + fn deposit_event() = default; /// Unlock any vested funds of the sender account. @@ -206,6 +216,40 @@ decl_module! { ensure_signed(origin)?; Self::update_lock(T::Lookup::lookup(target)?) } + + /// Create a vested transfer. + /// + /// The dispatch origin for this call must be _Signed_. + /// + /// - `target`: The account that should be transferred the vested funds. + /// - `amount`: The amount of funds to transfer and will be vested. + /// - `schedule`: The vesting schedule attached to the transfer. + /// + /// Emits `VestingCreated`. + /// + /// # + /// - Creates a new storage entry, but is protected by a minimum transfer + /// amount needed to succeed. + /// # + #[weight = SimpleDispatchInfo::FixedNormal(1_000_000)] + pub fn vested_transfer( + origin, + target: ::Source, + schedule: VestingInfo, T::BlockNumber>, + ) -> DispatchResult { + let transactor = ensure_signed(origin)?; + ensure!(schedule.locked >= T::MinVestedTransfer::get(), Error::::AmountLow); + + let who = T::Lookup::lookup(target)?; + ensure!(!Vesting::::contains_key(&who), Error::::ExistingVestingSchedule); + + T::Currency::transfer(&transactor, &who, schedule.locked, ExistenceRequirement::AllowDeath)?; + + Self::add_vesting_schedule(&who, schedule.locked, schedule.per_block, schedule.starting_block) + .expect("user does not have an existing vesting schedule; q.e.d."); + + Ok(()) + } } } @@ -348,10 +392,14 @@ mod tests { type ExistentialDeposit = ExistentialDeposit; type AccountStore = System; } + parameter_types! { + pub const MinVestedTransfer: u64 = 256 * 2; + } impl Trait for Test { type Event = (); type Currency = Balances; type BlockNumberToBalance = Identity; + type MinVestedTransfer = MinVestedTransfer; } type System = frame_system::Module; type Balances = pallet_balances::Module; @@ -613,4 +661,95 @@ mod tests { assert_ok!(Balances::transfer(Some(12).into(), 3, 256 * 5)); }); } + + #[test] + fn vested_transfer_works() { + ExtBuilder::default() + .existential_deposit(256) + .build() + .execute_with(|| { + assert_eq!(System::block_number(), 1); + let user3_free_balance = Balances::free_balance(&3); + let user4_free_balance = Balances::free_balance(&4); + assert_eq!(user3_free_balance, 256 * 30); + assert_eq!(user4_free_balance, 256 * 40); + // Account 4 should not have any vesting yet. + assert_eq!(Vesting::vesting(&4), None); + // Make the schedule for the new transfer. + let new_vesting_schedule = VestingInfo { + locked: 256 * 5, + per_block: 64, // Vesting over 20 blocks + starting_block: 10, + }; + assert_ok!(Vesting::vested_transfer(Some(3).into(), 4, new_vesting_schedule)); + // Now account 4 should have vesting. + assert_eq!(Vesting::vesting(&4), Some(new_vesting_schedule)); + // Ensure the transfer happened correctly. + let user3_free_balance_updated = Balances::free_balance(&3); + assert_eq!(user3_free_balance_updated, 256 * 25); + let user4_free_balance_updated = Balances::free_balance(&4); + assert_eq!(user4_free_balance_updated, 256 * 45); + // Account 4 has 5 * 256 locked. + assert_eq!(Vesting::vesting_balance(&4), Some(256 * 5)); + + System::set_block_number(20); + assert_eq!(System::block_number(), 20); + + // Account 4 has 5 * 64 units vested by block 20. + assert_eq!(Vesting::vesting_balance(&4), Some(10 * 64)); + + System::set_block_number(30); + assert_eq!(System::block_number(), 30); + + // Account 4 has fully vested. + assert_eq!(Vesting::vesting_balance(&4), Some(0)); + }); + } + + #[test] + fn vested_transfer_correctly_fails() { + ExtBuilder::default() + .existential_deposit(256) + .build() + .execute_with(|| { + assert_eq!(System::block_number(), 1); + let user2_free_balance = Balances::free_balance(&2); + let user4_free_balance = Balances::free_balance(&4); + assert_eq!(user2_free_balance, 256 * 20); + assert_eq!(user4_free_balance, 256 * 40); + // Account 2 should already have a vesting schedule. + let user2_vesting_schedule = VestingInfo { + locked: 256 * 20, + per_block: 256, // Vesting over 20 blocks + starting_block: 10, + }; + assert_eq!(Vesting::vesting(&2), Some(user2_vesting_schedule)); + + // The vesting schedule we will try to create, fails due to pre-existence of schedule. + let new_vesting_schedule = VestingInfo { + locked: 256 * 5, + per_block: 64, // Vesting over 20 blocks + starting_block: 10, + }; + assert_noop!( + Vesting::vested_transfer(Some(4).into(), 2, new_vesting_schedule), + Error::::ExistingVestingSchedule, + ); + + // Fails due to too low transfer amount. + let new_vesting_schedule_too_low = VestingInfo { + locked: 256 * 1, + per_block: 64, + starting_block: 10, + }; + assert_noop!( + Vesting::vested_transfer(Some(3).into(), 4, new_vesting_schedule_too_low), + Error::::AmountLow, + ); + + // Verify no currency transfer happened. + assert_eq!(user2_free_balance, 256 * 20); + assert_eq!(user4_free_balance, 256 * 40); + }); + } } -- GitLab From f74589ef9446d455f7258e38953bf3be9a32f416 Mon Sep 17 00:00:00 2001 From: Gavin Wood Date: Thu, 5 Mar 2020 13:37:59 +0100 Subject: [PATCH 109/301] Adds a session getter to historical proofs (#5125) * Adds a session getter to historical proofs * Bump spec_version * Adds some useful trait derives to Proof --- bin/node/runtime/src/lib.rs | 2 +- frame/session/src/historical.rs | 11 +++++++++-- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/bin/node/runtime/src/lib.rs b/bin/node/runtime/src/lib.rs index 0844b32f7c..1cc0a2b725 100644 --- a/bin/node/runtime/src/lib.rs +++ b/bin/node/runtime/src/lib.rs @@ -82,7 +82,7 @@ pub const VERSION: RuntimeVersion = RuntimeVersion { // and set impl_version to 0. If only runtime // implementation changes and behavior does not, then leave spec_version as // is and increment impl_version. - spec_version: 229, + spec_version: 230, impl_version: 0, apis: RUNTIME_API_VERSIONS, }; diff --git a/frame/session/src/historical.rs b/frame/session/src/historical.rs index 5b492d8d21..91719c27f2 100644 --- a/frame/session/src/historical.rs +++ b/frame/session/src/historical.rs @@ -27,7 +27,7 @@ use sp_std::prelude::*; use codec::{Encode, Decode}; -use sp_runtime::KeyTypeId; +use sp_runtime::{KeyTypeId, RuntimeDebug}; use sp_runtime::traits::{Convert, OpaqueKeys}; use frame_support::{decl_module, decl_storage}; use frame_support::{Parameter, print}; @@ -258,12 +258,19 @@ impl ProvingTrie { } /// Proof of ownership of a specific key. -#[derive(Encode, Decode, Clone)] +#[derive(Encode, Decode, Clone, Eq, PartialEq, RuntimeDebug)] pub struct Proof { session: SessionIndex, trie_nodes: Vec>, } +impl Proof { + /// Returns a session this proof was generated for. + pub fn session(&self) -> SessionIndex { + self.session + } +} + impl> frame_support::traits::KeyOwnerProofSystem<(KeyTypeId, D)> for Module { -- GitLab From 3272f26b1d683d973fdc08580b35cf27dfe5494d Mon Sep 17 00:00:00 2001 From: Gavin Wood Date: Thu, 5 Mar 2020 13:38:16 +0100 Subject: [PATCH 110/301] remove on_exit from grandpa (#5098) --- bin/node-template/node/src/service.rs | 1 - bin/node/cli/src/service.rs | 1 - client/finality-grandpa/src/lib.rs | 12 ++++-------- client/finality-grandpa/src/observer.rs | 6 +++--- client/finality-grandpa/src/tests.rs | 17 ----------------- 5 files changed, 7 insertions(+), 30 deletions(-) diff --git a/bin/node-template/node/src/service.rs b/bin/node-template/node/src/service.rs index f87aaf5ec2..fe1b3af4eb 100644 --- a/bin/node-template/node/src/service.rs +++ b/bin/node-template/node/src/service.rs @@ -154,7 +154,6 @@ pub fn new_full(config: Configuration) link: grandpa_link, network: service.network(), inherent_data_providers: inherent_data_providers.clone(), - on_exit: service.on_exit(), telemetry_on_connect: Some(service.telemetry_on_connect_stream()), voting_rule: grandpa::VotingRulesBuilder::default().build(), prometheus_registry: service.prometheus_registry() diff --git a/bin/node/cli/src/service.rs b/bin/node/cli/src/service.rs index f31fa0b973..ca7bd43161 100644 --- a/bin/node/cli/src/service.rs +++ b/bin/node/cli/src/service.rs @@ -225,7 +225,6 @@ macro_rules! new_full { link: grandpa_link, network: service.network(), inherent_data_providers: inherent_data_providers.clone(), - on_exit: service.on_exit(), telemetry_on_connect: Some(service.telemetry_on_connect_stream()), voting_rule: grandpa::VotingRulesBuilder::default().build(), prometheus_registry: service.prometheus_registry(), diff --git a/client/finality-grandpa/src/lib.rs b/client/finality-grandpa/src/lib.rs index e9ea244a72..38c1070d77 100644 --- a/client/finality-grandpa/src/lib.rs +++ b/client/finality-grandpa/src/lib.rs @@ -536,7 +536,7 @@ fn register_finality_tracker_inherent_data_provider( } /// Parameters used to run Grandpa. -pub struct GrandpaParams { +pub struct GrandpaParams { /// Configuration for the GRANDPA service. pub config: Config, /// A link to the block import worker. @@ -545,8 +545,6 @@ pub struct GrandpaParams { pub network: N, /// The inherent data providers. pub inherent_data_providers: InherentDataProviders, - /// Handle to a future that will resolve on exit. - pub on_exit: X, /// If supplied, can be used to hook on telemetry connection established events. pub telemetry_on_connect: Option>, /// A voting rule used to potentially restrict target votes. @@ -557,8 +555,8 @@ pub struct GrandpaParams { /// Run a GRANDPA voter as a task. Provide configuration and a link to a /// block import worker that has already been instantiated with `block_import`. -pub fn run_grandpa_voter( - grandpa_params: GrandpaParams, +pub fn run_grandpa_voter( + grandpa_params: GrandpaParams, ) -> sp_blockchain::Result + Unpin + Send + 'static> where Block::Hash: Ord, BE: Backend + 'static, @@ -567,7 +565,6 @@ pub fn run_grandpa_voter( VR: VotingRule + Clone + 'static, NumberFor: BlockNumberOps, DigestFor: Encode, - X: futures::Future + Clone + Send + Unpin + 'static, C: ClientForGrandpa + 'static, { let GrandpaParams { @@ -575,7 +572,6 @@ pub fn run_grandpa_voter( link, network, inherent_data_providers, - on_exit, telemetry_on_connect, voting_rule, prometheus_registry, @@ -647,7 +643,7 @@ pub fn run_grandpa_voter( let telemetry_task = telemetry_task .then(|_| future::pending::<()>()); - Ok(future::select(future::select(voter_work, on_exit), telemetry_task).map(drop)) + Ok(future::select(voter_work, telemetry_task).map(drop)) } /// Future that powers the voter. diff --git a/client/finality-grandpa/src/observer.rs b/client/finality-grandpa/src/observer.rs index f6cf1a8aa1..97352b68e3 100644 --- a/client/finality-grandpa/src/observer.rs +++ b/client/finality-grandpa/src/observer.rs @@ -159,8 +159,8 @@ pub fn run_grandpa_observer( config: Config, link: LinkHalf, network: N, - on_exit: impl futures::Future + Clone + Send + Unpin + 'static, -) -> sp_blockchain::Result + Unpin + Send + 'static> where +) -> sp_blockchain::Result + Unpin + Send + 'static> +where BE: Backend + Unpin + 'static, N: NetworkT + Send + Clone + 'static, SC: SelectChain + 'static, @@ -194,7 +194,7 @@ pub fn run_grandpa_observer( warn!("GRANDPA Observer failed: {:?}", e); }); - Ok(future::select(observer_work, on_exit).map(drop)) + Ok(observer_work.map(drop)) } /// Future that powers the observer. diff --git a/client/finality-grandpa/src/tests.rs b/client/finality-grandpa/src/tests.rs index 2734101500..aedcb20a59 100644 --- a/client/finality-grandpa/src/tests.rs +++ b/client/finality-grandpa/src/tests.rs @@ -190,17 +190,6 @@ impl TestNetFactory for GrandpaTestNet { } } -#[derive(Clone)] -struct Exit; - -impl futures::Future for Exit { - type Output = (); - - fn poll(self: Pin<&mut Self>, _: &mut task::Context) -> task::Poll<()> { - task::Poll::Pending - } -} - #[derive(Default, Clone)] pub(crate) struct TestApi { genesis_authorities: AuthorityList, @@ -444,7 +433,6 @@ fn run_to_completion_with( link: link, network: net_service, inherent_data_providers: InherentDataProviders::new(), - on_exit: Exit, telemetry_on_connect: None, voting_rule: (), prometheus_registry: None, @@ -576,7 +564,6 @@ fn finalize_3_voters_1_full_observer() { link: link, network: net_service, inherent_data_providers: InherentDataProviders::new(), - on_exit: Exit, telemetry_on_connect: None, voting_rule: (), prometheus_registry: None, @@ -740,7 +727,6 @@ fn transition_3_voters_twice_1_full_observer() { link: link, network: net_service, inherent_data_providers: InherentDataProviders::new(), - on_exit: Exit, telemetry_on_connect: None, voting_rule: (), prometheus_registry: None, @@ -1166,7 +1152,6 @@ fn voter_persists_its_votes() { link, network: this.net.lock().peers[0].network_service().clone(), inherent_data_providers: InherentDataProviders::new(), - on_exit: Exit, telemetry_on_connect: None, voting_rule: VotingRulesBuilder::default().build(), prometheus_registry: None, @@ -1382,7 +1367,6 @@ fn finalize_3_voters_1_light_observer() { }, link, net.lock().peers[3].network_service().clone(), - Exit, ).unwrap() ); @@ -1512,7 +1496,6 @@ fn voter_catches_up_to_latest_round_when_behind() { link, network: net.lock().peer(peer_id).network_service().clone(), inherent_data_providers: InherentDataProviders::new(), - on_exit: Exit, telemetry_on_connect: None, voting_rule: (), prometheus_registry: None, -- GitLab From 3f96ea8f7fa23f6763f92ad7638103d729852611 Mon Sep 17 00:00:00 2001 From: Gavin Wood Date: Thu, 5 Mar 2020 13:39:45 +0100 Subject: [PATCH 111/301] Remove `sender` from `Applyable`. (#5129) --- frame/executive/src/lib.rs | 4 ++-- primitives/runtime/src/generic/checked_extrinsic.rs | 5 ----- primitives/runtime/src/testing.rs | 3 --- primitives/runtime/src/traits.rs | 6 ------ 4 files changed, 2 insertions(+), 16 deletions(-) diff --git a/frame/executive/src/lib.rs b/frame/executive/src/lib.rs index d7fecf4590..022e26d3cb 100644 --- a/frame/executive/src/lib.rs +++ b/frame/executive/src/lib.rs @@ -118,7 +118,7 @@ impl< where Block::Extrinsic: Checkable + Codec, CheckedOf: - Applyable + + Applyable + GetDispatchInfo, CallOf: Dispatchable, OriginOf: From>, @@ -143,7 +143,7 @@ impl< where Block::Extrinsic: Checkable + Codec, CheckedOf: - Applyable + + Applyable + GetDispatchInfo, CallOf: Dispatchable, OriginOf: From>, diff --git a/primitives/runtime/src/generic/checked_extrinsic.rs b/primitives/runtime/src/generic/checked_extrinsic.rs index 20aefbdf99..25a8274354 100644 --- a/primitives/runtime/src/generic/checked_extrinsic.rs +++ b/primitives/runtime/src/generic/checked_extrinsic.rs @@ -45,14 +45,9 @@ where Origin: From>, Info: Clone, { - type AccountId = AccountId; type Call = Call; type DispatchInfo = Info; - fn sender(&self) -> Option<&Self::AccountId> { - self.signed.as_ref().map(|x| &x.0) - } - fn validate>( &self, info: Self::DispatchInfo, diff --git a/primitives/runtime/src/testing.rs b/primitives/runtime/src/testing.rs index 6f6ea3dd16..e840cdd100 100644 --- a/primitives/runtime/src/testing.rs +++ b/primitives/runtime/src/testing.rs @@ -410,12 +410,9 @@ impl Applyable for TestXt where Origin: From>, Info: Clone, { - type AccountId = u64; type Call = Call; type DispatchInfo = Info; - fn sender(&self) -> Option<&Self::AccountId> { self.signature.as_ref().map(|x| &x.0) } - /// Checks to see if this is a valid *transaction*. It returns information on it if so. fn validate>( &self, diff --git a/primitives/runtime/src/traits.rs b/primitives/runtime/src/traits.rs index d9c32d221c..c6d85b22f4 100644 --- a/primitives/runtime/src/traits.rs +++ b/primitives/runtime/src/traits.rs @@ -879,18 +879,12 @@ impl SignedExtension for () { /// Also provides information on to whom this information is attributable and an index that allows /// each piece of attributable information to be disambiguated. pub trait Applyable: Sized + Send + Sync { - /// ID of the account that is responsible for this piece of information (sender). - type AccountId: Member + MaybeDisplay; - /// Type by which we can dispatch. Restricts the `UnsignedValidator` type. type Call; /// An opaque set of information attached to the transaction. type DispatchInfo: Clone; - /// Returns a reference to the sender if any. - fn sender(&self) -> Option<&Self::AccountId>; - /// Checks to see if this is a valid *transaction*. It returns information on it if so. fn validate>( &self, -- GitLab From 32d6ed9fc4f644c407c07996cfbd6dfa4c3ba5f8 Mon Sep 17 00:00:00 2001 From: Gavin Wood Date: Thu, 5 Mar 2020 13:40:33 +0100 Subject: [PATCH 112/301] Pass Prometheus `Registry` into `Client` (#5120) * Add a few metrics to Client * Improve PrometheusConfig * Fix client docs --- Cargo.lock | 2 ++ bin/node/testing/src/bench.rs | 1 + client/Cargo.toml | 1 + client/cli/src/commands/runcmd.rs | 11 +++---- client/db/Cargo.toml | 1 + client/db/src/lib.rs | 3 ++ client/service/src/builder.rs | 50 ++++--------------------------- client/service/src/config.rs | 29 ++++++++++++++++-- client/service/test/src/lib.rs | 2 +- client/src/client.rs | 7 ++++- client/src/lib.rs | 1 + client/src/light/mod.rs | 3 ++ test-utils/client/src/lib.rs | 3 +- 13 files changed, 59 insertions(+), 55 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index ca3ba91b84..07ee88e170 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -5749,6 +5749,7 @@ dependencies = [ "sp-std", "sp-trie", "sp-version", + "substrate-prometheus-endpoint", "substrate-test-runtime-client", "tempfile", "tracing", @@ -5812,6 +5813,7 @@ dependencies = [ "sp-runtime", "sp-state-machine", "sp-trie", + "substrate-prometheus-endpoint", "substrate-test-runtime-client", "tempfile", ] diff --git a/bin/node/testing/src/bench.rs b/bin/node/testing/src/bench.rs index 58a7ab933e..19906dd6a1 100644 --- a/bin/node/testing/src/bench.rs +++ b/bin/node/testing/src/bench.rs @@ -155,6 +155,7 @@ impl BenchDb { None, None, ExecutionExtensions::new(profile.into_execution_strategies(), None), + None, ).expect("Should not fail"); (client, backend) diff --git a/client/Cargo.toml b/client/Cargo.toml index 710cdbd128..61199f04da 100644 --- a/client/Cargo.toml +++ b/client/Cargo.toml @@ -34,6 +34,7 @@ sp-blockchain = { version = "2.0.0-alpha.2", path = "../primitives/blockchain" } sp-state-machine = { version = "0.8.0-alpha.2", path = "../primitives/state-machine" } sc-telemetry = { version = "2.0.0-alpha.2", path = "telemetry" } sp-trie = { version = "2.0.0-alpha.2", path = "../primitives/trie" } +prometheus-endpoint = { package = "substrate-prometheus-endpoint", version = "0.8.0-alpha.2", path = "../utils/prometheus" } tracing = "0.1.10" [dev-dependencies] diff --git a/client/cli/src/commands/runcmd.rs b/client/cli/src/commands/runcmd.rs index f29bc3c743..0ad6fefcce 100644 --- a/client/cli/src/commands/runcmd.rs +++ b/client/cli/src/commands/runcmd.rs @@ -24,7 +24,7 @@ use regex::Regex; use chrono::prelude::*; use sc_service::{ AbstractService, Configuration, ChainSpecExtension, RuntimeGenesis, ChainSpec, Roles, - config::KeystoreConfig, + config::{KeystoreConfig, PrometheusConfig}, }; use sc_telemetry::TelemetryEndpoints; @@ -423,11 +423,12 @@ impl RunCmd { // Override prometheus if self.no_prometheus { - config.prometheus_port = None; - } else if config.prometheus_port.is_none() { + config.prometheus_config = None; + } else if config.prometheus_config.is_none() { let prometheus_interface: &str = if self.prometheus_external { "0.0.0.0" } else { "127.0.0.1" }; - config.prometheus_port = Some( - parse_address(&format!("{}:{}", prometheus_interface, 9615), self.prometheus_port)?); + config.prometheus_config = Some(PrometheusConfig::new_with_default_registry( + parse_address(&format!("{}:{}", prometheus_interface, 9615), self.prometheus_port)?, + )); } config.tracing_targets = self.import_params.tracing_targets.clone().into(); diff --git a/client/db/Cargo.toml b/client/db/Cargo.toml index f92a5c48e2..8eaae24e52 100644 --- a/client/db/Cargo.toml +++ b/client/db/Cargo.toml @@ -30,6 +30,7 @@ sc-state-db = { version = "0.8.0-alpha.2", path = "../state-db" } sp-trie = { version = "2.0.0-alpha.2", path = "../../primitives/trie" } sp-consensus = { version = "0.8.0-alpha.2", path = "../../primitives/consensus/common" } sp-blockchain = { version = "2.0.0-alpha.2", path = "../../primitives/blockchain" } +prometheus-endpoint = { package = "substrate-prometheus-endpoint", version = "0.8.0-alpha.2", path = "../../utils/prometheus" } [dev-dependencies] sp-keyring = { version = "2.0.0-alpha.2", path = "../../primitives/keyring" } diff --git a/client/db/src/lib.rs b/client/db/src/lib.rs index d4c157986f..eed1fc0e1d 100644 --- a/client/db/src/lib.rs +++ b/client/db/src/lib.rs @@ -84,6 +84,7 @@ use crate::storage_cache::{CachingState, SharedCache, new_shared_cache}; use crate::stats::StateUsageStats; use log::{trace, debug, warn}; pub use sc_state_db::PruningMode; +use prometheus_endpoint::Registry; #[cfg(any(feature = "kvdb-rocksdb", test))] pub use bench::BenchmarkingState; @@ -291,6 +292,7 @@ pub fn new_client( fork_blocks: ForkBlocks, bad_blocks: BadBlocks, execution_extensions: ExecutionExtensions, + prometheus_registry: Option, ) -> Result<( sc_client::Client< Backend, @@ -317,6 +319,7 @@ pub fn new_client( fork_blocks, bad_blocks, execution_extensions, + prometheus_registry, )?, backend, )) diff --git a/client/service/src/builder.rs b/client/service/src/builder.rs index db60c94997..bfb979c19e 100644 --- a/client/service/src/builder.rs +++ b/client/service/src/builder.rs @@ -17,7 +17,7 @@ use crate::{Service, NetworkStatus, NetworkState, error::Error, DEFAULT_PROTOCOL_ID, MallocSizeOfWasm}; use crate::{TaskManagerBuilder, start_rpc_servers, build_network_future, TransactionPoolAdapter}; use crate::status_sinks; -use crate::config::{Configuration, DatabaseConfig, KeystoreConfig}; +use crate::config::{Configuration, DatabaseConfig, KeystoreConfig, PrometheusConfig}; use sc_client_api::{ self, BlockchainEvents, @@ -128,7 +128,6 @@ pub struct ServiceBuilder>>, marker: PhantomData<(TBl, TRtApi)>, background_tasks: Vec<(&'static str, BackgroundTask)>, - prometheus_registry: Option } /// Full client type. @@ -262,6 +261,7 @@ fn new_full_parts( fork_blocks, bad_blocks, extensions, + config.prometheus_config.as_ref().map(|config| config.registry.clone()), )? }; @@ -308,7 +308,6 @@ where TGen: RuntimeGenesis, TCSExt: Extension { remote_backend: None, background_tasks: Default::default(), marker: PhantomData, - prometheus_registry: None, }) } @@ -378,6 +377,7 @@ where TGen: RuntimeGenesis, TCSExt: Extension { backend.clone(), config.expect_chain_spec(), executor, + config.prometheus_config.as_ref().map(|config| config.registry.clone()), )?); Ok(ServiceBuilder { @@ -396,7 +396,6 @@ where TGen: RuntimeGenesis, TCSExt: Extension { remote_backend: Some(remote_blockchain), background_tasks: Default::default(), marker: PhantomData, - prometheus_registry: None, }) } } @@ -470,7 +469,6 @@ impl Self { - Self { - config: self.config, - client: self.client, - backend: self.backend, - tasks_builder: self.tasks_builder, - keystore: self.keystore, - fetcher: self.fetcher, - select_chain: self.select_chain, - import_queue: self.import_queue, - finality_proof_request_builder: self.finality_proof_request_builder, - finality_proof_provider: self.finality_proof_provider, - transaction_pool: self.transaction_pool, - rpc_extensions: self.rpc_extensions, - remote_backend: self.remote_backend, - background_tasks: self.background_tasks, - marker: self.marker, - prometheus_registry: Some(registry), - } - } } /// Implemented on `ServiceBuilder`. Allows running block commands, such as import/export/validate @@ -845,7 +816,6 @@ ServiceBuilder< rpc_extensions, remote_backend, background_tasks, - prometheus_registry, } = self; sp_session::generate_initial_session_keys( @@ -897,14 +867,6 @@ ServiceBuilder< let block_announce_validator = Box::new(sp_consensus::block_validation::DefaultBlockAnnounceValidator::new(client.clone())); - let prometheus_registry_and_port = match config.prometheus_port { - Some(port) => match prometheus_registry { - Some(registry) => Some((registry, port)), - None => Some((Registry::new_custom(Some("substrate".into()), None)?, port)) - }, - None => None - }; - let network_params = sc_network::config::Params { roles: config.roles, executor: { @@ -922,7 +884,7 @@ ServiceBuilder< import_queue, protocol_id, block_announce_validator, - metrics_registry: prometheus_registry_and_port.as_ref().map(|(r, _)| r.clone()) + metrics_registry: config.prometheus_config.as_ref().map(|config| config.registry.clone()) }; let has_bootnodes = !network_params.network_config.boot_nodes.is_empty(); @@ -1035,7 +997,7 @@ ServiceBuilder< } // Prometheus metrics - let metrics = if let Some((registry, port)) = prometheus_registry_and_port.clone() { + let metrics = if let Some(PrometheusConfig { port, registry }) = config.prometheus_config.clone() { let metrics = ServiceMetrics::register(®istry)?; metrics.node_roles.set(u64::from(config.roles.bits())); spawn_handle.spawn( @@ -1297,7 +1259,7 @@ ServiceBuilder< _telemetry_on_connect_sinks: telemetry_connection_sinks.clone(), keystore, marker: PhantomData::, - prometheus_registry: prometheus_registry_and_port.map(|(r, _)| r) + prometheus_registry: config.prometheus_config.map(|config| config.registry) }) } } diff --git a/client/service/src/config.rs b/client/service/src/config.rs index 974dac588d..6400712cad 100644 --- a/client/service/src/config.rs +++ b/client/service/src/config.rs @@ -27,6 +27,7 @@ use sc_chain_spec::{ChainSpec, NoExtension}; use sp_core::crypto::Protected; use target_info::Target; use sc_telemetry::TelemetryEndpoints; +use prometheus_endpoint::Registry; /// Executable version. Used to pass version information from the root crate. #[derive(Clone)] @@ -93,8 +94,8 @@ pub struct Configuration { pub rpc_ws_max_connections: Option, /// CORS settings for HTTP & WS servers. `None` if all origins are allowed. pub rpc_cors: Option>, - /// Prometheus endpoint Port. `None` if disabled. - pub prometheus_port: Option, + /// Prometheus endpoint configuration. `None` if disabled. + pub prometheus_config: Option, /// Telemetry service URL. `None` if disabled. pub telemetry_endpoints: Option, /// External WASM transport for the telemetry. If `Some`, when connection to a telemetry @@ -165,6 +166,28 @@ pub enum DatabaseConfig { Custom(Arc), } +/// Configuration of the Prometheus endpoint. +#[derive(Clone)] +pub struct PrometheusConfig { + /// Port to use. + pub port: SocketAddr, + /// A metrics registry to use. Useful for setting the metric prefix. + pub registry: Registry, +} + +impl PrometheusConfig { + /// Create a new config using the default registry. + /// + /// The default registry prefixes metrics with `substrate`. + pub fn new_with_default_registry(port: SocketAddr) -> Self { + Self { + port, + registry: Registry::new_custom(Some("substrate".into()), None) + .expect("this can only fail if the prefix is empty") + } + } +} + impl Default for Configuration { /// Create a default config fn default() -> Self { @@ -190,7 +213,7 @@ impl Default for Configuration { rpc_ws: None, rpc_ws_max_connections: None, rpc_cors: Some(vec![]), - prometheus_port: None, + prometheus_config: None, telemetry_endpoints: None, telemetry_external_transport: None, default_heap_pages: None, diff --git a/client/service/test/src/lib.rs b/client/service/test/src/lib.rs index 5f679b82b3..03cccbe4a0 100644 --- a/client/service/test/src/lib.rs +++ b/client/service/test/src/lib.rs @@ -199,7 +199,7 @@ fn node_config ( rpc_ws: None, rpc_ws_max_connections: None, rpc_cors: None, - prometheus_port: None, + prometheus_config: None, telemetry_endpoints: None, telemetry_external_transport: None, default_heap_pages: None, diff --git a/client/src/client.rs b/client/src/client.rs index adb3598b78..8941487039 100644 --- a/client/src/client.rs +++ b/client/src/client.rs @@ -78,6 +78,7 @@ pub use sc_client_api::{ CallExecutor, }; use sp_blockchain::Error; +use prometheus_endpoint::Registry; use crate::{ call_executor::LocalCallExecutor, @@ -171,6 +172,7 @@ pub fn new_in_mem( executor: E, genesis_storage: &S, keystore: Option, + prometheus_registry: Option, ) -> sp_blockchain::Result, LocalCallExecutor, E>, @@ -181,7 +183,7 @@ pub fn new_in_mem( S: BuildStorage, Block: BlockT, { - new_with_backend(Arc::new(in_mem::Backend::new()), executor, genesis_storage, keystore) + new_with_backend(Arc::new(in_mem::Backend::new()), executor, genesis_storage, keystore, prometheus_registry) } /// Create a client with the explicitly provided backend. @@ -191,6 +193,7 @@ pub fn new_with_backend( executor: E, build_genesis_storage: &S, keystore: Option, + prometheus_registry: Option, ) -> sp_blockchain::Result, Block, RA>> where E: CodeExecutor + RuntimeInfo, @@ -207,6 +210,7 @@ pub fn new_with_backend( Default::default(), Default::default(), extensions, + prometheus_registry, ) } @@ -286,6 +290,7 @@ impl Client where fork_blocks: ForkBlocks, bad_blocks: BadBlocks, execution_extensions: ExecutionExtensions, + _prometheus_registry: Option, ) -> sp_blockchain::Result { if backend.blockchain().header(BlockId::Number(Zero::zero()))?.is_none() { let genesis_storage = build_genesis_storage.build_storage()?; diff --git a/client/src/lib.rs b/client/src/lib.rs index f282449c27..9c6393314f 100644 --- a/client/src/lib.rs +++ b/client/src/lib.rs @@ -68,6 +68,7 @@ //! Default::default(), //! Default::default(), //! Default::default(), +//! None, //! ); //! ``` //! diff --git a/client/src/light/mod.rs b/client/src/light/mod.rs index ca1a3a50c6..07816b3b35 100644 --- a/client/src/light/mod.rs +++ b/client/src/light/mod.rs @@ -28,6 +28,7 @@ use sp_core::traits::CodeExecutor; use sp_runtime::BuildStorage; use sp_runtime::traits::{Block as BlockT, HashFor}; use sp_blockchain::Result as ClientResult; +use prometheus_endpoint::Registry; use crate::call_executor::LocalCallExecutor; use crate::client::Client; @@ -58,6 +59,7 @@ pub fn new_light( backend: Arc>>, genesis_storage: &GS, code_executor: E, + prometheus_registry: Option, ) -> ClientResult< Client< Backend>, @@ -84,6 +86,7 @@ pub fn new_light( Default::default(), Default::default(), Default::default(), + prometheus_registry, ) } diff --git a/test-utils/client/src/lib.rs b/test-utils/client/src/lib.rs index 7d22abf3d8..37fa1e2b34 100644 --- a/test-utils/client/src/lib.rs +++ b/test-utils/client/src/lib.rs @@ -210,7 +210,8 @@ impl TestClientBuilder Date: Thu, 5 Mar 2020 13:44:18 +0100 Subject: [PATCH 113/301] Introduce `on_runtime_upgrade` (#5058) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Initial idea of `on_runtime_upgrade` * Runtime storage for module version * Gui shawntabrizi runtime upgrade (#5118) * adding unleash to ci (#5020) * adding unleash to ci * fixing formatting * with a dot please * alpha.3 now * do not publish testing helpers * remove old test-helpers cruft * fix cargo.lock * with alpha 4 * do not publish runtime-interface-test either * disable more test crates from publishing * switch to alpha.5 * replace tempdir with tempfile * update lru * switch to bytes 0.5 * release script fixes * switch on and to latest alpha * BUT THE SPACES * Fix: CI failing for some CLI tests (#5043) * Initial commit Forked at: 41bb2193a267805e2093a081bc3e2aaccc64283a Parent branch: origin/master * Increase killing grace period of CLI tests and display more info * Use --dev everywhere possible * Put pruning mode to its own params struct * Add pruning params to export-blocks command * Added missing file * Removed not-dev mode in tests * Add pruning mode to the revert command * Decrease killing grace period again * Move back unsafe_pruning to import_params * Applied proposed changes * aura: remove unused tx pool (#5046) * aura: remove unused transaction pool parameter * node-template: remove transaction pool from aura * aura: fix tests * Extend rust nightly detection in `wasm-builder` (#5021) Instead of just testing `cargo` and `rustup run nightly`, we now test the `CARGO` env variable and also scan non default nightlies. The user is also now able to select the toolchain with `WASM_BUILD_TOOLCHAIN`. * Add steps setting to benchmarking CLI (#5033) * Add steps setting to CLI, use max value to hit worst case. * Bump impl_version. * Apply review suggestion. * Remove indices from node-template (#5025) * Remove indices from node-template * Use identity lookup instead * Bump impl * clean cargo.toml * Fix documentation for "BlockBuilder::push_trusted" (#5051) * fix doc * rephrase * do not check unleash on every PR, only master and tags (#5054) * do not check unleash on every PR, only master and tags * move scripts folder * add signed-tag check to CI * remove publish-to-crates-io dependencies Co-authored-by: s3krit * prepare version to alpha.1 (#5055) bump version to -alpha.1 * Sync: validate block responses for required data (#5052) * Less verbose state-db logging * Validate block responses for block bodies * Update client/network/src/protocol.rs Co-Authored-By: Bastian Köcher * Added validation test * Disconnect on missing header as well * Typo Co-Authored-By: André Silva Co-authored-by: Bastian Köcher Co-authored-by: André Silva * Make these chainspecs fields private (#5031) * Fix dockerfile (#5059) * Adds documentation for `wipe` and `commit` (#5053) * Adds documentation for `wipe` and `commit` This adds documentation to `wipe` and `commit` of `Externalities`. Besides that it removes the default implementation that would just panic and requires that all implementers of the trait implement the functions. * Update primitives/externalities/src/lib.rs Co-Authored-By: joe petrowski <25483142+joepetrowski@users.noreply.github.com> Co-authored-by: joe petrowski <25483142+joepetrowski@users.noreply.github.com> * Fix the issue with `trybuild`'s `ui` tests (#4992) * repro ui bug * fix the tests * test with the new image * test without CARGO_HOME * test without fixes * test again * fix trybuild old versions * bump CArgo.lock * fix trybuild newest versions * bump Cargo.lock * trying on the latest image * bump Cargo.lock * run with the old image * ci will be green on the image from 2020-02-19 [skip ci] * bump Cargo.lock * Activate publishing of draft releases... (#5062) * Activate publishing of draft releases... ... And fix the message sending (missing parameter). * publish_draft_release.sh now checks latest... ... release on github rather than just a tag * Fix/div by zero (#5041) * Handle gas_price being zero separately * Bump spec_version * Add a unit & integration tests for gas price = 0 * set missing metadata fields, prepping alpha.2 (#5067) * setting first batch of descriptions * fix what I just broke * next batch * and pallets, too * last batch * set cargo.lock * keep'em dev-deps * bump version to alpha.2 * Fix revalidation not revalidating multiple times (#5065) * removes use of sc_client::Client from sc_finality_grandpa (#5030) * removes use of sc_client::Client from sc_finality_grandpa * code formatting * code formatting * removes use of sc_client::Client from sc_finality_grandpa * Remove deprecated host functions (#5038) Sadly we need to keep one function `ext_blake2_256`. This function is manually defined in `sp-core`. * removes use of sc_client::Client from sc_basic_authorship (#5050) * removes use of sc-client from sc-basic-authorship * refactor use of ProposerFactory * correct dep path * pallet-transaction-payment clean up (#5070) * Formatting clean up * Introduce separate setters for the fees. * *: Rename prometheus-exporter crate to substrate-prometheus-end… (#5076) This patch renames the crate for the following two reasons: 1. The prometheus-exporter crate introduces native in-process Prometheus style instrumentation to the Substrate project. Within the Prometheus ecosystem the term "exporter" is used for external processes exposing metrics for e.g. the Linux Kernel. In-process exposition would be described via the term "endpoint". 2. "prometheus-exporter" is generic and ignores the fact that it is only usable within the context of Substrate. In addition the name "prometheus-exporter" is already taken on crates.io. * rename `browser-utils` to `substrate-browser-utils` (#5079) * prepping for Alpha.3 (#5080) * Bump to alpha.3 * update gitlab-ci * Propagate DispatchError for benchmarks. (#5075) * Propagate DispatchError for benchmarks. * Apply review suggestions. * Use RuntimeString. * fix expect Co-Authored-By: Bastian Köcher Co-authored-by: Bastian Köcher * Add options to overwrite range bounds in benchmark command. (#5072) * Add --mins --maxs to benchmark command. * Apply review suggestions. * Update yamux to version 0.4.4. (#5086) * Remove more instances of futures01 (#4633) * Start removing last few instances of futures01 * Use to_poll on wasm * Revert "Use to_poll on wasm" This reverts commit 1c61728f10d520df5f9b28c415a0db68e478b9c7. * Fix fg test * Upgrade network test futures * Update offchain hyper version * Update service test * bump tokio to 0.2.10 * Removed some unneeded tokios * fixes * fix run_until_all_full * Make service test debuggable * Update client/offchain/src/api/http.rs Co-Authored-By: Demi Obenour <48690212+DemiMarie-parity@users.noreply.github.com> * Add service_test to test-int output * nitpicking * Finally fix test * Give up and revert client/serviec/test * Revert gitlab ci too Co-authored-by: Demi Obenour * Make export blocks default to json on stdout (#5090) * Make export blocks default to json on stdout * Multiline instead of single line to stay under 100 cols * Change --json flag to --binary, defaulting to json * Offence reporting returns a result (#5082) * Offence reporting returns a result * Bump spec_version * Use unwrap instead of assertions * Fix more review grumbles * Update to libp2p 0.16.2 (#5088) * Remove request ID from the new protocol (#5049) * Make sure we remove a peer on disconnect in gossip (#5104) * Make sure we remove peers on disconnect in gossip state machine * Clear up the code * Add a comment * Expose `state-db` memory info (#5110) This exposes memory statistics from the state-db. * Change extrinsic_count to extrinsic_index in pallet-utility (#5044) Co-authored-by: Benjamin Kampmann * Add more metrics to prometheus (#5034) * Add a few things * Add finality_grandpa_round * fix fg tests * Nitpicks * Nitpicks * Fix name of prometheus crate * Update to SCALE 1.2.0 (#5113) This updates `parity-scale-codec` to `1.2.0`, which includes multiple performance improvements and a fix that bounds the capacity of a vector at decoding. * Lazy payouts (#4474) * TODOs * Remove superfluous: * partial implementation * full implementation * fix preferences * update comments * upgrade test WIP * fix more tests * fix cutoff * fix saturation * comment * upgrade mock * upgrade test * WIP migration * WIP migration * remove slot stake stuff * fix merge * migration of ledger * remove equalize from test * add test * fix * update doc * fix compilation * improve test readibility * improve doc * fix most todo * fix migration and test * remove println * WIP * add test and spec * weight * update doc * safer end_era * fix exposure of conversion * Revert "safer end_era" This reverts commit 72ff737d27be67d87308514b13e2574bc5f09fce. * fix useless put * exposure clipped * doc * fix payout with clipped * fix node runtime * add doc * pluggable and generalized staking module * remove print * update doc * refactor * improve documentation and implementation * fix test * Fix test * fix test * fix test * fix remove lowest stake from exposure, not biggest. * nomination index arguments in nominator_payout * add test * try to fix offence * apply slashed and bond eras until active era * doc * update spec version * add test upgrade from previous test environment * Apply suggestions from code review Co-Authored-By: Shawn Tabrizi * nominators upgrade has been cleaned * dynamic history depth implementation * make current_era - history_depth included * Change equality check to start era to less than or equal * Use era specific validator prefs * Add print statement and comment about start era if < * fix next_reward overflow * make more check for bad era claim for zero cost * small refactor * code refactor + fix use of deprecated storage * fix wasm build * add comment * Fix tests * remove outdated comment * Apply suggestions from code review Co-Authored-By: Shawn Tabrizi * gather active era information into one storage Co-authored-by: thiolliere Co-authored-by: Shawn Tabrizi * impl on_runtime_upgrade Co-authored-by: Benjamin Kampmann Co-authored-by: Cecile Tonglet Co-authored-by: André Silva Co-authored-by: Bastian Köcher Co-authored-by: Marcio Diaz Co-authored-by: Nikolay Volf Co-authored-by: s3krit Co-authored-by: Arkadiy Paronyan Co-authored-by: Pierre Krieger Co-authored-by: Chevdor Co-authored-by: joe petrowski <25483142+joepetrowski@users.noreply.github.com> Co-authored-by: Denis Pisarev Co-authored-by: Eric Co-authored-by: Seun Lanlege Co-authored-by: Sergei Pepyakin Co-authored-by: Max Inden Co-authored-by: Ashley Co-authored-by: Toralf Wittner Co-authored-by: Demi Obenour Co-authored-by: pscott <30843220+pscott@users.noreply.github.com> Co-authored-by: Fedor Sakharov Co-authored-by: Gavin Wood Co-authored-by: thiolliere * make compile * Add some tests * docs * Remove "useless" code * Fix merge and use n + 1 block number * Fix tests * unfix ui tests * Update on_initialize.stderr * fix test * Fix test * Bump spec * Remove `on_finalise` and `on_initialise` * Use bool for tracking runtime upgraded * typo * Support runtime upgrade with `set_storage` * Refactor migration code location * add trailing newlines * Remove old `IsUpgraded` flag * Update state root * Exhaustive match statement * Apply suggestions from code review Co-Authored-By: Kian Paimani <5588131+kianenigma@users.noreply.github.com> Co-authored-by: Benjamin Kampmann Co-authored-by: Cecile Tonglet Co-authored-by: André Silva Co-authored-by: Bastian Köcher Co-authored-by: Marcio Diaz Co-authored-by: Nikolay Volf Co-authored-by: s3krit Co-authored-by: Arkadiy Paronyan Co-authored-by: Pierre Krieger Co-authored-by: Chevdor Co-authored-by: joe petrowski <25483142+joepetrowski@users.noreply.github.com> Co-authored-by: Denis Pisarev Co-authored-by: Eric Co-authored-by: Seun Lanlege Co-authored-by: Sergei Pepyakin Co-authored-by: Max Inden Co-authored-by: Ashley Co-authored-by: Toralf Wittner Co-authored-by: Demi Obenour Co-authored-by: pscott <30843220+pscott@users.noreply.github.com> Co-authored-by: Fedor Sakharov Co-authored-by: Gavin Wood Co-authored-by: thiolliere Co-authored-by: Kian Paimani <5588131+kianenigma@users.noreply.github.com> --- frame/balances/src/lib.rs | 105 ++------- frame/balances/src/migration.rs | 88 +++++++ frame/democracy/src/lib.rs | 4 +- frame/executive/src/lib.rs | 17 +- frame/staking/src/lib.rs | 185 ++------------- frame/staking/src/migration/deprecated.rs | 73 ++++++ frame/staking/src/migration/mod.rs | 119 ++++++++++ .../test_upgrade_from_master_dataset.rs | 0 frame/staking/src/migration/tests.rs | 220 ++++++++++++++++++ frame/staking/src/tests.rs | 218 ----------------- frame/support/src/dispatch.rs | 187 ++++++++++++++- frame/support/src/storage/mod.rs | 12 +- frame/support/src/storage/unhashed.rs | 4 + frame/support/src/weights.rs | 14 +- .../tests/reserved_keyword/on_initialize.rs | 2 +- .../reserved_keyword/on_initialize.stderr | 30 +-- frame/system/src/lib.rs | 28 +++ frame/vesting/src/lib.rs | 4 +- .../consensus/common/src/select_chain.rs | 4 +- primitives/runtime/src/offchain/http.rs | 2 +- primitives/runtime/src/traits.rs | 8 + 21 files changed, 811 insertions(+), 513 deletions(-) create mode 100644 frame/balances/src/migration.rs create mode 100644 frame/staking/src/migration/deprecated.rs create mode 100644 frame/staking/src/migration/mod.rs rename frame/staking/src/{tests => migration}/test_upgrade_from_master_dataset.rs (100%) create mode 100644 frame/staking/src/migration/tests.rs diff --git a/frame/balances/src/lib.rs b/frame/balances/src/lib.rs index b4a1b810df..f91c9e8229 100644 --- a/frame/balances/src/lib.rs +++ b/frame/balances/src/lib.rs @@ -157,6 +157,7 @@ mod tests_composite; mod tests; #[cfg(feature = "runtime-benchmarks")] mod benchmarking; +mod migration; use sp_std::prelude::*; use sp_std::{cmp, result, mem, fmt::Debug, ops::BitOr, convert::Infallible}; @@ -348,6 +349,21 @@ impl AccountData { } } +// A value placed in storage that represents the current version of the Balances storage. +// This value is used by the `on_runtime_upgrade` logic to determine whether we run +// storage migration logic. This should match directly with the semantic versions of the Rust crate. +#[derive(Encode, Decode, Clone, Copy, PartialEq, Eq, RuntimeDebug)] +enum Releases { + V1_0_0, + V2_0_0, +} + +impl Default for Releases { + fn default() -> Self { + Releases::V1_0_0 + } +} + decl_storage! { trait Store for Module, I: Instance=DefaultInstance> as Balances { /// The total units issued in the system. @@ -367,10 +383,10 @@ decl_storage! { /// NOTE: Should only be accessed when setting, changing and freeing a lock. pub Locks get(fn locks): map hasher(blake2_256) T::AccountId => Vec>; - /// True if network has been upgraded to this version. + /// Storage version of the pallet. /// - /// True for new networks. - IsUpgraded build(|_: &GenesisConfig| true): bool; + /// This is set to v2.0.0 for new networks. + StorageVersion build(|_: &GenesisConfig| Releases::V2_0_0): Releases; } add_extra_genesis { config(balances): Vec<(T::AccountId, T::Balance)>; @@ -518,11 +534,8 @@ decl_module! { >::transfer(&transactor, &dest, value, KeepAlive)?; } - fn on_initialize() { - if !IsUpgraded::::get() { - IsUpgraded::::put(true); - Self::do_upgrade(); - } + fn on_runtime_upgrade() { + migration::on_runtime_upgrade::(); } } } @@ -548,82 +561,6 @@ impl OldBalanceLock { impl, I: Instance> Module { // PRIVATE MUTABLES - // Upgrade from the pre-#4649 balances/vesting into the new balances. - pub fn do_upgrade() { - sp_runtime::print("Upgrading account balances..."); - // First, migrate from old FreeBalance to new Account. - // We also move all locks across since only accounts with FreeBalance values have locks. - // FreeBalance: map T::AccountId => T::Balance - for (hash, free) in StorageIterator::::new(b"Balances", b"FreeBalance").drain() { - let mut account = AccountData { free, ..Default::default() }; - // Locks: map T::AccountId => Vec - let old_locks = get_storage_value::>>(b"Balances", b"Locks", &hash); - if let Some(locks) = old_locks { - let locks = locks.into_iter() - .map(|i| { - let (result, expiry) = i.upgraded(); - if expiry != T::BlockNumber::max_value() { - // Any `until`s that are not T::BlockNumber::max_value come from - // democracy and need to be migrated over there. - // Democracy: Locks get(locks): map T::AccountId => Option; - put_storage_value(b"Democracy", b"Locks", &hash, expiry); - } - result - }) - .collect::>(); - for l in locks.iter() { - if l.reasons == Reasons::All || l.reasons == Reasons::Misc { - account.misc_frozen = account.misc_frozen.max(l.amount); - } - if l.reasons == Reasons::All || l.reasons == Reasons::Fee { - account.fee_frozen = account.fee_frozen.max(l.amount); - } - } - put_storage_value(b"Balances", b"Locks", &hash, locks); - } - put_storage_value(b"Balances", b"Account", &hash, account); - } - // Second, migrate old ReservedBalance into new Account. - // ReservedBalance: map T::AccountId => T::Balance - for (hash, reserved) in StorageIterator::::new(b"Balances", b"ReservedBalance").drain() { - let mut account = get_storage_value::>(b"Balances", b"Account", &hash).unwrap_or_default(); - account.reserved = reserved; - put_storage_value(b"Balances", b"Account", &hash, account); - } - - // Finally, migrate vesting and ensure locks are in place. We will be lazy and just lock - // for the maximum amount (i.e. at genesis). Users will need to call "vest" to reduce the - // lock to something sensible. - // pub Vesting: map T::AccountId => Option; - for (hash, vesting) in StorageIterator::<(T::Balance, T::Balance, T::BlockNumber)>::new(b"Balances", b"Vesting").drain() { - let mut account = get_storage_value::>(b"Balances", b"Account", &hash).unwrap_or_default(); - let mut locks = get_storage_value::>>(b"Balances", b"Locks", &hash).unwrap_or_default(); - locks.push(BalanceLock { - id: *b"vesting ", - amount: vesting.0.clone(), - reasons: Reasons::Misc, - }); - account.misc_frozen = account.misc_frozen.max(vesting.0.clone()); - put_storage_value(b"Vesting", b"Vesting", &hash, vesting); - put_storage_value(b"Balances", b"Locks", &hash, locks); - put_storage_value(b"Balances", b"Account", &hash, account); - } - - for (hash, balances) in StorageIterator::>::new(b"Balances", b"Account").drain() { - let nonce = take_storage_value::(b"System", b"AccountNonce", &hash).unwrap_or_default(); - let mut refs: system::RefCount = 0; - // The items in Kusama that would result in a ref count being incremented. - if have_storage_value(b"Democracy", b"Proxy", &hash) { refs += 1 } - // We skip Recovered since it's being replaced anyway. - let mut prefixed_hash = twox_64(&b":session:keys"[..]).to_vec(); - prefixed_hash.extend(&b":session:keys"[..]); - prefixed_hash.extend(&hash[..]); - if have_storage_value(b"Session", b"NextKeys", &prefixed_hash) { refs += 1 } - if have_storage_value(b"Staking", b"Bonded", &hash) { refs += 1 } - put_storage_value(b"System", b"Account", &hash, (nonce, refs, &balances)); - } - } - /// Get the free balance of an account. pub fn free_balance(who: impl sp_std::borrow::Borrow) -> T::Balance { Self::account(who.borrow()).free diff --git a/frame/balances/src/migration.rs b/frame/balances/src/migration.rs new file mode 100644 index 0000000000..16c764d59f --- /dev/null +++ b/frame/balances/src/migration.rs @@ -0,0 +1,88 @@ +use super::*; + +pub fn on_runtime_upgrade, I: Instance>() { + match StorageVersion::::get() { + Releases::V2_0_0 => return, + Releases::V1_0_0 => upgrade_v1_to_v2::(), + } +} + +// Upgrade from the pre-#4649 balances/vesting into the new balances. +fn upgrade_v1_to_v2, I: Instance>() { + sp_runtime::print("Upgrading account balances..."); + // First, migrate from old FreeBalance to new Account. + // We also move all locks across since only accounts with FreeBalance values have locks. + // FreeBalance: map T::AccountId => T::Balance + for (hash, free) in StorageIterator::::new(b"Balances", b"FreeBalance").drain() { + let mut account = AccountData { free, ..Default::default() }; + // Locks: map T::AccountId => Vec + let old_locks = get_storage_value::>>(b"Balances", b"Locks", &hash); + if let Some(locks) = old_locks { + let locks = locks.into_iter() + .map(|i| { + let (result, expiry) = i.upgraded(); + if expiry != T::BlockNumber::max_value() { + // Any `until`s that are not T::BlockNumber::max_value come from + // democracy and need to be migrated over there. + // Democracy: Locks get(locks): map T::AccountId => Option; + put_storage_value(b"Democracy", b"Locks", &hash, expiry); + } + result + }) + .collect::>(); + for l in locks.iter() { + if l.reasons == Reasons::All || l.reasons == Reasons::Misc { + account.misc_frozen = account.misc_frozen.max(l.amount); + } + if l.reasons == Reasons::All || l.reasons == Reasons::Fee { + account.fee_frozen = account.fee_frozen.max(l.amount); + } + } + put_storage_value(b"Balances", b"Locks", &hash, locks); + } + put_storage_value(b"Balances", b"Account", &hash, account); + } + // Second, migrate old ReservedBalance into new Account. + // ReservedBalance: map T::AccountId => T::Balance + for (hash, reserved) in StorageIterator::::new(b"Balances", b"ReservedBalance").drain() { + let mut account = get_storage_value::>(b"Balances", b"Account", &hash).unwrap_or_default(); + account.reserved = reserved; + put_storage_value(b"Balances", b"Account", &hash, account); + } + + // Finally, migrate vesting and ensure locks are in place. We will be lazy and just lock + // for the maximum amount (i.e. at genesis). Users will need to call "vest" to reduce the + // lock to something sensible. + // pub Vesting: map T::AccountId => Option; + for (hash, vesting) in StorageIterator::<(T::Balance, T::Balance, T::BlockNumber)>::new(b"Balances", b"Vesting").drain() { + let mut account = get_storage_value::>(b"Balances", b"Account", &hash).unwrap_or_default(); + let mut locks = get_storage_value::>>(b"Balances", b"Locks", &hash).unwrap_or_default(); + locks.push(BalanceLock { + id: *b"vesting ", + amount: vesting.0.clone(), + reasons: Reasons::Misc, + }); + account.misc_frozen = account.misc_frozen.max(vesting.0.clone()); + put_storage_value(b"Vesting", b"Vesting", &hash, vesting); + put_storage_value(b"Balances", b"Locks", &hash, locks); + put_storage_value(b"Balances", b"Account", &hash, account); + } + + for (hash, balances) in StorageIterator::>::new(b"Balances", b"Account").drain() { + let nonce = take_storage_value::(b"System", b"AccountNonce", &hash).unwrap_or_default(); + let mut refs: system::RefCount = 0; + // The items in Kusama that would result in a ref count being incremented. + if have_storage_value(b"Democracy", b"Proxy", &hash) { refs += 1 } + // We skip Recovered since it's being replaced anyway. + let mut prefixed_hash = twox_64(&b":session:keys"[..]).to_vec(); + prefixed_hash.extend(&b":session:keys"[..]); + prefixed_hash.extend(&hash[..]); + if have_storage_value(b"Session", b"NextKeys", &prefixed_hash) { refs += 1 } + if have_storage_value(b"Staking", b"Bonded", &hash) { refs += 1 } + put_storage_value(b"System", b"Account", &hash, (nonce, refs, &balances)); + } + + take_storage_value::(b"Balances", b"IsUpgraded", &[]); + + StorageVersion::::put(Releases::V2_0_0); +} diff --git a/frame/democracy/src/lib.rs b/frame/democracy/src/lib.rs index b2e234c91a..5632103ab3 100644 --- a/frame/democracy/src/lib.rs +++ b/frame/democracy/src/lib.rs @@ -1555,7 +1555,7 @@ mod tests { }; use sp_core::H256; use sp_runtime::{ - traits::{BlakeTwo256, IdentityLookup, Bounded, BadOrigin, OnInitialize}, + traits::{BlakeTwo256, IdentityLookup, Bounded, BadOrigin, OnRuntimeUpgrade}, testing::Header, Perbill, }; use pallet_balances::{BalanceLock, Error as BalancesError}; @@ -1713,7 +1713,7 @@ mod tests { ]; s.top = data.into_iter().collect(); sp_io::TestExternalities::new(s).execute_with(|| { - Balances::on_initialize(1); + Balances::on_runtime_upgrade(); assert_eq!(Balances::free_balance(1), 5); assert_eq!(Balances::reserved_balance(1), 5); assert_eq!(Balances::usable_balance(&1), 2); diff --git a/frame/executive/src/lib.rs b/frame/executive/src/lib.rs index 022e26d3cb..7bf39989ec 100644 --- a/frame/executive/src/lib.rs +++ b/frame/executive/src/lib.rs @@ -75,13 +75,16 @@ #![cfg_attr(not(feature = "std"), no_std)] use sp_std::{prelude::*, marker::PhantomData}; -use frame_support::weights::{GetDispatchInfo, WeighBlock, DispatchInfo}; +use frame_support::{ + storage::StorageValue, + weights::{GetDispatchInfo, WeighBlock, DispatchInfo} +}; use sp_runtime::{ generic::Digest, ApplyExtrinsicResult, traits::{ self, Header, Zero, One, Checkable, Applyable, CheckEqual, OnFinalize, OnInitialize, - NumberFor, Block as BlockT, OffchainWorker, Dispatchable, Saturating, + NumberFor, Block as BlockT, OffchainWorker, Dispatchable, Saturating, OnRuntimeUpgrade, }, transaction_validity::TransactionValidity, }; @@ -110,6 +113,7 @@ impl< Context: Default, UnsignedValidator, AllModules: + OnRuntimeUpgrade + OnInitialize + OnFinalize + OffchainWorker + @@ -135,6 +139,7 @@ impl< Context: Default, UnsignedValidator, AllModules: + OnRuntimeUpgrade + OnInitialize + OnFinalize + OffchainWorker + @@ -176,6 +181,12 @@ where extrinsics_root: &System::Hash, digest: &Digest, ) { + if frame_system::RuntimeUpgraded::take() { + ::on_runtime_upgrade(); + >::register_extra_weight_unchecked( + >::on_runtime_upgrade() + ); + } >::initialize( block_number, parent_hash, @@ -573,7 +584,7 @@ mod tests { header: Header { parent_hash: [69u8; 32].into(), number: 1, - state_root: hex!("17caebd966d10cc6dc9659edf7fa3196511593f6c39f80f9b97cdbc3b0855cf3").into(), + state_root: hex!("8a22606e925c39bb0c8e8f6f5871c0aceab88a2fcff6b2d92660af8f6daff0b1").into(), extrinsics_root: hex!("03170a2e7597b7b7e3d84c05391d139a62b157e78786d8c082f29dcf4c111314").into(), digest: Digest { logs: vec![], }, }, diff --git a/frame/staking/src/lib.rs b/frame/staking/src/lib.rs index 3609191f4c..612efecea1 100644 --- a/frame/staking/src/lib.rs +++ b/frame/staking/src/lib.rs @@ -254,6 +254,7 @@ mod mock; #[cfg(test)] mod tests; mod slashing; +mod migration; pub mod inflation; @@ -679,6 +680,21 @@ impl Default for Forcing { fn default() -> Self { Forcing::NotForcing } } +// A value placed in storage that represents the current version of the Staking storage. +// This value is used by the `on_runtime_upgrade` logic to determine whether we run +// storage migration logic. This should match directly with the semantic versions of the Rust crate. +#[derive(Encode, Decode, Clone, Copy, PartialEq, Eq, RuntimeDebug)] +enum Releases { + V1_0_0, + V2_0_0, +} + +impl Default for Releases { + fn default() -> Self { + Releases::V1_0_0 + } +} + decl_storage! { trait Store for Module as Staking { /// Number of era to keep in history. @@ -832,10 +848,10 @@ decl_storage! { /// The earliest era for which we have a pending, unapplied slash. EarliestUnappliedSlash: Option; - /// True if network has been upgraded to this version. + /// Storage version of the pallet. /// - /// True for new networks. - IsUpgraded build(|_| true): bool; + /// This is set to v2.0.0 for new networks. + StorageVersion build(|_: &GenesisConfig| Releases::V2_0_0): Releases; } add_extra_genesis { config(stakers): @@ -927,8 +943,8 @@ decl_module! { fn deposit_event() = default; - fn on_initialize() { - Self::ensure_storage_upgraded(); + fn on_runtime_upgrade() { + migration::on_runtime_upgrade::(); } fn on_finalize() { @@ -1132,8 +1148,6 @@ decl_module! { /// # #[weight = SimpleDispatchInfo::FixedNormal(750_000)] fn validate(origin, prefs: ValidatorPrefs) { - Self::ensure_storage_upgraded(); - let controller = ensure_signed(origin)?; let ledger = Self::ledger(&controller).ok_or(Error::::NotController)?; let stash = &ledger.stash; @@ -1154,8 +1168,6 @@ decl_module! { /// # #[weight = SimpleDispatchInfo::FixedNormal(750_000)] fn nominate(origin, targets: Vec<::Source>) { - Self::ensure_storage_upgraded(); - let controller = ensure_signed(origin)?; let ledger = Self::ledger(&controller).ok_or(Error::::NotController)?; let stash = &ledger.stash; @@ -1433,7 +1445,6 @@ decl_module! { /// /// - `stash`: The stash account to reap. Its balance must be zero. fn reap_stash(_origin, stash: T::AccountId) { - Self::ensure_storage_upgraded(); ensure!(T::Currency::total_balance(&stash).is_zero(), Error::::FundedTarget); Self::kill_stash(&stash)?; T::Currency::remove_lock(STAKING_ID, &stash); @@ -1577,14 +1588,6 @@ impl Module { >::remove(stash); } - /// Ensures storage is upgraded to most recent necessary state. - fn ensure_storage_upgraded() { - if !IsUpgraded::get() { - IsUpgraded::put(true); - Self::do_upgrade(); - } - } - /// Actually make a payment to a staker. This uses the currency's reward function /// to pay the right payee for the given staker account. fn make_payout(stash: &T::AccountId, amount: BalanceOf) -> Option> { @@ -1958,147 +1961,6 @@ impl Module { _ => ForceEra::put(Forcing::ForceNew), } } - - /// Update storages to current version - /// - /// In old version the staking module has several issue about handling session delay, the - /// current era was always considered the active one. - /// - /// After the migration the current era will still be considered the active one for the era of - /// the upgrade. And the delay issue will be fixed when planning the next era. - // * create: - // * ActiveEraStart - // * ErasRewardPoints - // * ActiveEra - // * ErasStakers - // * ErasStakersClipped - // * ErasValidatorPrefs - // * ErasTotalStake - // * ErasStartSessionIndex - // * translate StakingLedger - // * removal of: - // * Stakers - // * SlotStake - // * CurrentElected - // * CurrentEraStart - // * CurrentEraStartSessionIndex - // * CurrentEraPointsEarned - fn do_upgrade() { - /// Deprecated storages used for migration only. - mod deprecated { - use crate::{Trait, BalanceOf, MomentOf, SessionIndex, Exposure}; - use codec::{Encode, Decode}; - use frame_support::{decl_module, decl_storage}; - use sp_std::prelude::*; - - /// Reward points of an era. Used to split era total payout between validators. - #[derive(Encode, Decode, Default)] - pub struct EraPoints { - /// Total number of points. Equals the sum of reward points for each validator. - pub total: u32, - /// The reward points earned by a given validator. The index of this vec corresponds to the - /// index into the current validator set. - pub individual: Vec, - } - - decl_module! { - pub struct Module for enum Call where origin: T::Origin { } - } - - decl_storage! { - pub trait Store for Module as Staking { - pub SlotStake: BalanceOf; - - /// The currently elected validator set keyed by stash account ID. - pub CurrentElected: Vec; - - /// The start of the current era. - pub CurrentEraStart: MomentOf; - - /// The session index at which the current era started. - pub CurrentEraStartSessionIndex: SessionIndex; - - /// Rewards for the current era. Using indices of current elected set. - pub CurrentEraPointsEarned: EraPoints; - - /// Nominators for a particular account that is in action right now. You can't iterate - /// through validators here, but you can find them in the Session module. - /// - /// This is keyed by the stash account. - pub Stakers: map hasher(blake2_256) T::AccountId => Exposure>; - } - } - } - - #[derive(Encode, Decode)] - struct OldStakingLedger { - stash: AccountId, - #[codec(compact)] - total: Balance, - #[codec(compact)] - active: Balance, - unlocking: Vec>, - } - - let current_era_start_index = deprecated::CurrentEraStartSessionIndex::get(); - let current_era = as Store>::CurrentEra::get().unwrap_or(0); - let current_era_start = deprecated::CurrentEraStart::::get(); - as Store>::ErasStartSessionIndex::insert(current_era, current_era_start_index); - as Store>::ActiveEra::put(ActiveEraInfo { - index: current_era, - start: Some(current_era_start), - }); - - let current_elected = deprecated::CurrentElected::::get(); - let mut current_total_stake = >::zero(); - for validator in ¤t_elected { - let exposure = deprecated::Stakers::::get(validator); - current_total_stake += exposure.total; - as Store>::ErasStakers::insert(current_era, validator, &exposure); - - let mut exposure_clipped = exposure; - let clipped_max_len = T::MaxNominatorRewardedPerValidator::get() as usize; - if exposure_clipped.others.len() > clipped_max_len { - exposure_clipped.others.sort_unstable_by(|a, b| a.value.cmp(&b.value).reverse()); - exposure_clipped.others.truncate(clipped_max_len); - } - as Store>::ErasStakersClipped::insert(current_era, validator, exposure_clipped); - - let pref = as Store>::Validators::get(validator); - as Store>::ErasValidatorPrefs::insert(current_era, validator, pref); - } - as Store>::ErasTotalStake::insert(current_era, current_total_stake); - - let points = deprecated::CurrentEraPointsEarned::get(); - as Store>::ErasRewardPoints::insert(current_era, EraRewardPoints { - total: points.total, - individual: current_elected.iter().cloned().zip(points.individual.iter().cloned()).collect(), - }); - - let res = as Store>::Ledger::translate_values( - |old: OldStakingLedger>| StakingLedger { - stash: old.stash, - total: old.total, - active: old.active, - unlocking: old.unlocking, - last_reward: None, - } - ); - if let Err(e) = res { - frame_support::print("Encountered error in migration of Staking::Ledger map."); - frame_support::print("The number of removed key/value is:"); - frame_support::print(e); - } - - - // Kill old storages - deprecated::Stakers::::remove_all(); - deprecated::SlotStake::::kill(); - deprecated::CurrentElected::::kill(); - deprecated::CurrentEraStart::::kill(); - deprecated::CurrentEraStartSessionIndex::kill(); - deprecated::CurrentEraPointsEarned::kill(); - } } /// In this implementation `new_session(session)` must be called before `end_session(session-1)` @@ -2108,7 +1970,6 @@ impl Module { /// some session can lag in between the newest session planned and the latest session started. impl pallet_session::SessionManager for Module { fn new_session(new_index: SessionIndex) -> Option> { - Self::ensure_storage_upgraded(); Self::new_session(new_index) } fn start_session(start_index: SessionIndex) { @@ -2208,8 +2069,6 @@ impl OnOffenceHandler>::ensure_storage_upgraded(); - let reward_proportion = SlashRewardFraction::get(); let active_era = { @@ -2297,8 +2156,6 @@ impl ReportOffence O: Offence, { fn report_offence(reporters: Vec, offence: O) -> Result<(), OffenceError> { - >::ensure_storage_upgraded(); - // disallow any slashing from before the current bonding period. let offence_session = offence.session_index(); let bonded_eras = BondedEras::get(); diff --git a/frame/staking/src/migration/deprecated.rs b/frame/staking/src/migration/deprecated.rs new file mode 100644 index 0000000000..41cf665229 --- /dev/null +++ b/frame/staking/src/migration/deprecated.rs @@ -0,0 +1,73 @@ +// Copyright 2020 Parity Technologies (UK) Ltd. +// This file is part of Substrate. + +// Substrate is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Substrate is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Substrate. If not, see . + +/// Deprecated storages used for migration from v1.0.0 to v2.0.0 only. + +use crate::{Trait, BalanceOf, MomentOf, SessionIndex, Exposure, UnlockChunk}; +use codec::{Encode, Decode, HasCompact}; +use frame_support::{decl_module, decl_storage}; +use sp_std::prelude::*; + +/// Reward points of an era. Used to split era total payout between validators. +#[derive(Encode, Decode, Default)] +pub struct EraPoints { + /// Total number of points. Equals the sum of reward points for each validator. + pub total: u32, + /// The reward points earned by a given validator. The index of this vec corresponds to the + /// index into the current validator set. + pub individual: Vec, +} + +#[derive(Encode, Decode)] +pub struct OldStakingLedger { + pub stash: AccountId, + #[codec(compact)] + pub total: Balance, + #[codec(compact)] + pub active: Balance, + pub unlocking: Vec>, +} + +decl_module! { + pub struct Module for enum Call where origin: T::Origin { } +} + +decl_storage! { + pub trait Store for Module as Staking { + pub SlotStake: BalanceOf; + + /// The currently elected validator set keyed by stash account ID. + pub CurrentElected: Vec; + + /// The start of the current era. + pub CurrentEraStart: MomentOf; + + /// The session index at which the current era started. + pub CurrentEraStartSessionIndex: SessionIndex; + + /// Rewards for the current era. Using indices of current elected set. + pub CurrentEraPointsEarned: EraPoints; + + /// Nominators for a particular account that is in action right now. You can't iterate + /// through validators here, but you can find them in the Session module. + /// + /// This is keyed by the stash account. + pub Stakers: map hasher(blake2_256) T::AccountId => Exposure>; + + /// Old upgrade flag. + pub IsUpgraded: bool; + } +} diff --git a/frame/staking/src/migration/mod.rs b/frame/staking/src/migration/mod.rs new file mode 100644 index 0000000000..971e409189 --- /dev/null +++ b/frame/staking/src/migration/mod.rs @@ -0,0 +1,119 @@ +// Copyright 2020 Parity Technologies (UK) Ltd. +// This file is part of Substrate. + +// Substrate is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Substrate is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Substrate. If not, see . + +//! Update storage from v1.0.0 to v2.0.0 +//! +//! In old version the staking module has several issue about handling session delay, the +//! current era was always considered the active one. +//! +//! After the migration the current era will still be considered the active one for the era of +//! the upgrade. And the delay issue will be fixed when planning the next era. +// * create: +// * ActiveEraStart +// * ErasRewardPoints +// * ActiveEra +// * ErasStakers +// * ErasStakersClipped +// * ErasValidatorPrefs +// * ErasTotalStake +// * ErasStartSessionIndex +// * translate StakingLedger +// * removal of: +// * Stakers +// * SlotStake +// * CurrentElected +// * CurrentEraStart +// * CurrentEraStartSessionIndex +// * CurrentEraPointsEarned + +use super::*; +mod deprecated; +#[cfg(test)] +mod tests; +#[cfg(test)] +mod test_upgrade_from_master_dataset; + +pub fn on_runtime_upgrade() { + match StorageVersion::get() { + Releases::V2_0_0 => return, + Releases::V1_0_0 => upgrade_v1_to_v2::(), + } +} + +fn upgrade_v1_to_v2() { + deprecated::IsUpgraded::kill(); + + let current_era_start_index = deprecated::CurrentEraStartSessionIndex::get(); + let current_era = as Store>::CurrentEra::get().unwrap_or(0); + let current_era_start = deprecated::CurrentEraStart::::get(); + as Store>::ErasStartSessionIndex::insert(current_era, current_era_start_index); + as Store>::ActiveEra::put(ActiveEraInfo { + index: current_era, + start: Some(current_era_start), + }); + + let current_elected = deprecated::CurrentElected::::get(); + let mut current_total_stake = >::zero(); + for validator in ¤t_elected { + let exposure = deprecated::Stakers::::get(validator); + current_total_stake += exposure.total; + as Store>::ErasStakers::insert(current_era, validator, &exposure); + + let mut exposure_clipped = exposure; + let clipped_max_len = T::MaxNominatorRewardedPerValidator::get() as usize; + if exposure_clipped.others.len() > clipped_max_len { + exposure_clipped.others.sort_unstable_by(|a, b| a.value.cmp(&b.value).reverse()); + exposure_clipped.others.truncate(clipped_max_len); + } + as Store>::ErasStakersClipped::insert(current_era, validator, exposure_clipped); + + let pref = as Store>::Validators::get(validator); + as Store>::ErasValidatorPrefs::insert(current_era, validator, pref); + } + as Store>::ErasTotalStake::insert(current_era, current_total_stake); + + let points = deprecated::CurrentEraPointsEarned::get(); + as Store>::ErasRewardPoints::insert(current_era, EraRewardPoints { + total: points.total, + individual: current_elected.iter().cloned().zip(points.individual.iter().cloned()).collect(), + }); + + let res = as Store>::Ledger::translate_values( + |old: deprecated::OldStakingLedger>| StakingLedger { + stash: old.stash, + total: old.total, + active: old.active, + unlocking: old.unlocking, + last_reward: None, + } + ); + if let Err(e) = res { + frame_support::print("Encountered error in migration of Staking::Ledger map."); + frame_support::print("The number of removed key/value is:"); + frame_support::print(e); + } + + + // Kill old storages + deprecated::Stakers::::remove_all(); + deprecated::SlotStake::::kill(); + deprecated::CurrentElected::::kill(); + deprecated::CurrentEraStart::::kill(); + deprecated::CurrentEraStartSessionIndex::kill(); + deprecated::CurrentEraPointsEarned::kill(); + + StorageVersion::put(Releases::V2_0_0); +} diff --git a/frame/staking/src/tests/test_upgrade_from_master_dataset.rs b/frame/staking/src/migration/test_upgrade_from_master_dataset.rs similarity index 100% rename from frame/staking/src/tests/test_upgrade_from_master_dataset.rs rename to frame/staking/src/migration/test_upgrade_from_master_dataset.rs diff --git a/frame/staking/src/migration/tests.rs b/frame/staking/src/migration/tests.rs new file mode 100644 index 0000000000..d1ba35cadc --- /dev/null +++ b/frame/staking/src/migration/tests.rs @@ -0,0 +1,220 @@ +use crate::*; +use crate::mock::*; +use frame_support::storage::migration::*; +use sp_core::hashing::blake2_256; +use super::test_upgrade_from_master_dataset; +use sp_runtime::traits::OnRuntimeUpgrade; + +#[test] +fn upgrade_works() { + ExtBuilder::default().build().execute_with(|| { + start_era(3); + + assert_eq!(Session::validators(), vec![21, 11]); + + // Insert fake data to check the migration + put_storage_value::>(b"Staking", b"CurrentElected", b"", vec![21, 31]); + put_storage_value::(b"Staking", b"CurrentEraStartSessionIndex", b"", 5); + put_storage_value::>(b"Staking", b"CurrentEraStart", b"", 777); + put_storage_value( + b"Staking", b"Stakers", &blake2_256(&11u64.encode()), + Exposure:: { + total: 10, + own: 10, + others: vec![], + } + ); + put_storage_value( + b"Staking", b"Stakers", &blake2_256(&21u64.encode()), + Exposure:: { + total: 20, + own: 20, + others: vec![], + } + ); + put_storage_value( + b"Staking", b"Stakers", &blake2_256(&31u64.encode()), + Exposure:: { + total: 30, + own: 30, + others: vec![], + } + ); + put_storage_value::<(u32, Vec)>(b"Staking", b"CurrentEraPointsEarned", b"", (12, vec![2, 10])); + ::ErasStakers::remove_all(); + ::ErasStakersClipped::remove_all(); + + ::StorageVersion::put(Releases::V1_0_0); + + // Perform upgrade + Staking::on_runtime_upgrade(); + + assert_eq!(::StorageVersion::get(), Releases::V2_0_0); + + // Check migration + assert_eq!(::ErasStartSessionIndex::get(3).unwrap(), 5); + assert_eq!(::ErasRewardPoints::get(3), EraRewardPoints { + total: 12, + individual: vec![(21, 2), (31, 10)].into_iter().collect(), + }); + assert_eq!(::ActiveEra::get().unwrap().index, 3); + assert_eq!(::ActiveEra::get().unwrap().start, Some(777)); + assert_eq!(::CurrentEra::get().unwrap(), 3); + assert_eq!(::ErasStakers::get(3, 11), Exposure { + total: 0, + own: 0, + others: vec![], + }); + assert_eq!(::ErasStakers::get(3, 21), Exposure { + total: 20, + own: 20, + others: vec![], + }); + assert_eq!(::ErasStakers::get(3, 31), Exposure { + total: 30, + own: 30, + others: vec![], + }); + assert_eq!(::ErasStakersClipped::get(3, 11), Exposure { + total: 0, + own: 0, + others: vec![], + }); + assert_eq!(::ErasStakersClipped::get(3, 21), Exposure { + total: 20, + own: 20, + others: vec![], + }); + assert_eq!(::ErasStakersClipped::get(3, 31), Exposure { + total: 30, + own: 30, + others: vec![], + }); + assert_eq!(::ErasValidatorPrefs::get(3, 21), Staking::validators(21)); + assert_eq!(::ErasValidatorPrefs::get(3, 31), Staking::validators(31)); + assert_eq!(::ErasTotalStake::get(3), 50); + }) +} + +// Test that an upgrade from previous test environment works. +#[test] +fn test_upgrade_from_master_works() { + let data_sets = &[ + test_upgrade_from_master_dataset::_0, + test_upgrade_from_master_dataset::_1, + test_upgrade_from_master_dataset::_2, + test_upgrade_from_master_dataset::_3, + test_upgrade_from_master_dataset::_4, + test_upgrade_from_master_dataset::_5, + test_upgrade_from_master_dataset::_6, + test_upgrade_from_master_dataset::_7, + test_upgrade_from_master_dataset::_8, + ]; + for data_set in data_sets.iter() { + let mut storage = sp_runtime::Storage::default(); + for (key, value) in data_set.iter() { + storage.top.insert(key.to_vec(), value.to_vec()); + } + let mut ext = sp_io::TestExternalities::from(storage); + ext.execute_with(|| { + let old_stakers = + get_storage_value::>(b"Staking", b"CurrentElected", b"").unwrap(); + let old_staker_0 = old_stakers[0]; + let old_staker_1 = old_stakers[1]; + let old_current_era = + get_storage_value::(b"Staking", b"CurrentEra", b"").unwrap(); + let old_staker_0_exposure = get_storage_value::>( + b"Staking", b"Stakers", &blake2_256(&old_staker_0.encode()) + ).unwrap(); + let old_staker_1_exposure = get_storage_value::>( + b"Staking", b"Stakers", &blake2_256(&old_staker_1.encode()) + ).unwrap(); + let ( + old_era_points_earned_total, + old_era_points_earned_individual + ) = get_storage_value::<(u32, Vec)>(b"Staking", b"CurrentEraPointsEarned", b"") + .unwrap_or((0, vec![])); + + Staking::on_runtime_upgrade(); + assert!(::StorageVersion::get() == Releases::V2_0_0); + + // Check ActiveEra and CurrentEra + let active_era = Staking::active_era().unwrap().index; + let current_era = Staking::current_era().unwrap(); + assert!(current_era == active_era); + assert!(current_era == old_current_era); + + // Check ErasStartSessionIndex + let active_era_start = Staking::eras_start_session_index(active_era).unwrap(); + let current_era_start = Staking::eras_start_session_index(current_era).unwrap(); + let current_session_index = Session::current_index(); + assert!(current_era_start == active_era_start); + assert!(active_era_start <= current_session_index); + assert_eq!(::ErasStartSessionIndex::iter().count(), 1); + + // Check ErasStakers + assert_eq!(::ErasStakers::iter().count(), 2); + assert_eq!( + ::ErasStakers::get(current_era, old_staker_0), + old_staker_0_exposure + ); + assert_eq!( + ::ErasStakers::get(current_era, old_staker_1), + old_staker_1_exposure + ); + + // Check ErasStakersClipped + assert_eq!(::ErasStakersClipped::iter().count(), 2); + assert!(::ErasStakersClipped::iter().all(|exposure_clipped| { + let max = ::MaxNominatorRewardedPerValidator::get() as usize; + exposure_clipped.others.len() <= max + })); + assert_eq!( + ::ErasStakersClipped::get(current_era, old_staker_0), + old_staker_0_exposure + ); + assert_eq!( + ::ErasStakersClipped::get(current_era, old_staker_1), + old_staker_1_exposure + ); + + // Check ErasValidatorPrefs + assert_eq!(::ErasValidatorPrefs::iter().count(), 2); + assert_eq!( + ::ErasValidatorPrefs::get(current_era, old_staker_0), + Staking::validators(old_staker_0) + ); + assert_eq!( + ::ErasValidatorPrefs::get(current_era, old_staker_1), + Staking::validators(old_staker_1) + ); + + // Check ErasTotalStake + assert_eq!(::ErasTotalStake::iter().count(), 1); + assert_eq!( + ::ErasTotalStake::get(current_era), + old_staker_0_exposure.total + old_staker_1_exposure.total + ); + + // Check ErasRewardPoints + assert_eq!(::ErasRewardPoints::iter().count(), 1); + let mut individual = BTreeMap::new(); + if let Some(p) = old_era_points_earned_individual.get(0) { + individual.insert(old_staker_0, p.clone()); + } + if let Some(p) = old_era_points_earned_individual.get(1) { + individual.insert(old_staker_1, p.clone()); + } + assert_eq!( + ::ErasRewardPoints::get(current_era), + EraRewardPoints { + total: old_era_points_earned_total, + individual, + } + ); + + // Check ErasValidatorReward + assert_eq!(::ErasValidatorReward::iter().count(), 0); + }); + } +} diff --git a/frame/staking/src/tests.rs b/frame/staking/src/tests.rs index 98536a042a..507b5591d5 100644 --- a/frame/staking/src/tests.rs +++ b/frame/staking/src/tests.rs @@ -16,8 +16,6 @@ //! Tests for the module. -mod test_upgrade_from_master_dataset; - use super::*; use mock::*; use sp_runtime::{assert_eq_error_rate, traits::{OnInitialize, BadOrigin}}; @@ -26,10 +24,8 @@ use frame_support::{ assert_ok, assert_noop, traits::{Currency, ReservableCurrency}, StorageMap, - storage::migration::{put_storage_value, get_storage_value}, }; use pallet_balances::Error as BalancesError; -use sp_io::hashing::blake2_256; use substrate_test_utils::assert_eq_uvec; use crate::Store; @@ -2843,97 +2839,6 @@ fn claim_reward_at_the_last_era_and_no_double_claim_and_invalid_claim() { }); } -#[test] -fn upgrade_works() { - ExtBuilder::default().build().execute_with(|| { - start_era(3); - - assert_eq!(Session::validators(), vec![21, 11]); - - // Insert fake data to check the migration - put_storage_value::>(b"Staking", b"CurrentElected", b"", vec![21, 31]); - put_storage_value::(b"Staking", b"CurrentEraStartSessionIndex", b"", 5); - put_storage_value::>(b"Staking", b"CurrentEraStart", b"", 777); - put_storage_value( - b"Staking", b"Stakers", &blake2_256(&11u64.encode()), - Exposure:: { - total: 10, - own: 10, - others: vec![], - } - ); - put_storage_value( - b"Staking", b"Stakers", &blake2_256(&21u64.encode()), - Exposure:: { - total: 20, - own: 20, - others: vec![], - } - ); - put_storage_value( - b"Staking", b"Stakers", &blake2_256(&31u64.encode()), - Exposure:: { - total: 30, - own: 30, - others: vec![], - } - ); - put_storage_value::<(u32, Vec)>(b"Staking", b"CurrentEraPointsEarned", b"", (12, vec![2, 10])); - ::ErasStakers::remove_all(); - ::ErasStakersClipped::remove_all(); - - ::IsUpgraded::put(false); - - // Perform upgrade - Staking::ensure_storage_upgraded(); - - assert_eq!(::IsUpgraded::get(), true); - - // Check migration - assert_eq!(::ErasStartSessionIndex::get(3).unwrap(), 5); - assert_eq!(::ErasRewardPoints::get(3), EraRewardPoints { - total: 12, - individual: vec![(21, 2), (31, 10)].into_iter().collect(), - }); - assert_eq!(::ActiveEra::get().unwrap().index, 3); - assert_eq!(::ActiveEra::get().unwrap().start, Some(777)); - assert_eq!(::CurrentEra::get().unwrap(), 3); - assert_eq!(::ErasStakers::get(3, 11), Exposure { - total: 0, - own: 0, - others: vec![], - }); - assert_eq!(::ErasStakers::get(3, 21), Exposure { - total: 20, - own: 20, - others: vec![], - }); - assert_eq!(::ErasStakers::get(3, 31), Exposure { - total: 30, - own: 30, - others: vec![], - }); - assert_eq!(::ErasStakersClipped::get(3, 11), Exposure { - total: 0, - own: 0, - others: vec![], - }); - assert_eq!(::ErasStakersClipped::get(3, 21), Exposure { - total: 20, - own: 20, - others: vec![], - }); - assert_eq!(::ErasStakersClipped::get(3, 31), Exposure { - total: 30, - own: 30, - others: vec![], - }); - assert_eq!(::ErasValidatorPrefs::get(3, 21), Staking::validators(21)); - assert_eq!(::ErasValidatorPrefs::get(3, 31), Staking::validators(31)); - assert_eq!(::ErasTotalStake::get(3), 50); - }) -} - #[test] fn zero_slash_keeps_nominators() { ExtBuilder::default().build().execute_with(|| { @@ -3071,129 +2976,6 @@ fn test_max_nominator_rewarded_per_validator_and_cant_steal_someone_else_reward( }); } -// Test that an upgrade from previous test environment works. -#[test] -fn test_upgrade_from_master_works() { - let data_sets = &[ - test_upgrade_from_master_dataset::_0, - test_upgrade_from_master_dataset::_1, - test_upgrade_from_master_dataset::_2, - test_upgrade_from_master_dataset::_3, - test_upgrade_from_master_dataset::_4, - test_upgrade_from_master_dataset::_5, - test_upgrade_from_master_dataset::_6, - test_upgrade_from_master_dataset::_7, - test_upgrade_from_master_dataset::_8, - ]; - for data_set in data_sets.iter() { - let mut storage = sp_runtime::Storage::default(); - for (key, value) in data_set.iter() { - storage.top.insert(key.to_vec(), value.to_vec()); - } - let mut ext = sp_io::TestExternalities::from(storage); - ext.execute_with(|| { - let old_stakers = - get_storage_value::>(b"Staking", b"CurrentElected", b"").unwrap(); - let old_staker_0 = old_stakers[0]; - let old_staker_1 = old_stakers[1]; - let old_current_era = - get_storage_value::(b"Staking", b"CurrentEra", b"").unwrap(); - let old_staker_0_exposure = get_storage_value::>( - b"Staking", b"Stakers", &blake2_256(&old_staker_0.encode()) - ).unwrap(); - let old_staker_1_exposure = get_storage_value::>( - b"Staking", b"Stakers", &blake2_256(&old_staker_1.encode()) - ).unwrap(); - let ( - old_era_points_earned_total, - old_era_points_earned_individual - ) = get_storage_value::<(u32, Vec)>(b"Staking", b"CurrentEraPointsEarned", b"") - .unwrap_or((0, vec![])); - - Staking::ensure_storage_upgraded(); - assert!(::IsUpgraded::get()); - - // Check ActiveEra and CurrentEra - let active_era = Staking::active_era().unwrap().index; - let current_era = Staking::current_era().unwrap(); - assert!(current_era == active_era); - assert!(current_era == old_current_era); - - // Check ErasStartSessionIndex - let active_era_start = Staking::eras_start_session_index(active_era).unwrap(); - let current_era_start = Staking::eras_start_session_index(current_era).unwrap(); - let current_session_index = Session::current_index(); - assert!(current_era_start == active_era_start); - assert!(active_era_start <= current_session_index); - assert_eq!(::ErasStartSessionIndex::iter().count(), 1); - - // Check ErasStakers - assert_eq!(::ErasStakers::iter().count(), 2); - assert_eq!( - ::ErasStakers::get(current_era, old_staker_0), - old_staker_0_exposure - ); - assert_eq!( - ::ErasStakers::get(current_era, old_staker_1), - old_staker_1_exposure - ); - - // Check ErasStakersClipped - assert_eq!(::ErasStakersClipped::iter().count(), 2); - assert!(::ErasStakersClipped::iter().all(|exposure_clipped| { - let max = ::MaxNominatorRewardedPerValidator::get() as usize; - exposure_clipped.others.len() <= max - })); - assert_eq!( - ::ErasStakersClipped::get(current_era, old_staker_0), - old_staker_0_exposure - ); - assert_eq!( - ::ErasStakersClipped::get(current_era, old_staker_1), - old_staker_1_exposure - ); - - // Check ErasValidatorPrefs - assert_eq!(::ErasValidatorPrefs::iter().count(), 2); - assert_eq!( - ::ErasValidatorPrefs::get(current_era, old_staker_0), - Staking::validators(old_staker_0) - ); - assert_eq!( - ::ErasValidatorPrefs::get(current_era, old_staker_1), - Staking::validators(old_staker_1) - ); - - // Check ErasTotalStake - assert_eq!(::ErasTotalStake::iter().count(), 1); - assert_eq!( - ::ErasTotalStake::get(current_era), - old_staker_0_exposure.total + old_staker_1_exposure.total - ); - - // Check ErasRewardPoints - assert_eq!(::ErasRewardPoints::iter().count(), 1); - let mut individual = BTreeMap::new(); - if let Some(p) = old_era_points_earned_individual.get(0) { - individual.insert(old_staker_0, p.clone()); - } - if let Some(p) = old_era_points_earned_individual.get(1) { - individual.insert(old_staker_1, p.clone()); - } - assert_eq!( - ::ErasRewardPoints::get(current_era), - EraRewardPoints { - total: old_era_points_earned_total, - individual, - } - ); - - // Check ErasValidatorReward - assert_eq!(::ErasValidatorReward::iter().count(), 0); - }); - } -} - #[test] fn set_history_depth_works() { ExtBuilder::default().build().execute_with(|| { diff --git a/frame/support/src/dispatch.rs b/frame/support/src/dispatch.rs index 084ea285af..a9c48097ad 100644 --- a/frame/support/src/dispatch.rs +++ b/frame/support/src/dispatch.rs @@ -196,6 +196,10 @@ impl Parameter for T where T: Codec + EncodeLike + Clone + Eq + fmt::Debug {} /// /// The following reserved functions also take the block number (with type `T::BlockNumber`) as an optional input: /// +/// * `on_runtime_upgrade`: Executes at the beginning of a block prior to on_initialize when there +/// is a runtime upgrade. This allows each module to upgrade its storage before the storage items are used. +/// As such, **calling other modules must be avoided**!! Using this function will implement the +/// [`OnRuntimeUpgrade`](../sp_runtime/traits/trait.OnRuntimeUpgrade.html) trait. /// * `on_initialize`: Executes at the beginning of a block. Using this function will /// implement the [`OnInitialize`](../sp_runtime/traits/trait.OnInitialize.html) trait. /// * `on_finalize`: Executes at the end of a block. Using this function will @@ -229,6 +233,7 @@ macro_rules! decl_module { {} {} {} + {} [] $($t)* ); @@ -261,6 +266,7 @@ macro_rules! decl_module { {} {} {} + {} [] $($t)* ); @@ -274,6 +280,7 @@ macro_rules! decl_module { { $( $other_where_bounds:tt )* } {} { $( $on_initialize:tt )* } + { $( $on_runtime_upgrade:tt )* } { $( $on_finalize:tt )* } { $( $offchain:tt )* } { $( $constants:tt )* } @@ -290,6 +297,7 @@ macro_rules! decl_module { { $( $other_where_bounds )* } { $vis fn deposit_event() = default; } { $( $on_initialize )* } + { $( $on_runtime_upgrade )* } { $( $on_finalize )* } { $( $offchain )* } { $( $constants )* } @@ -305,6 +313,7 @@ macro_rules! decl_module { { $( $other_where_bounds:tt )* } {} { $( $on_initialize:tt )* } + { $( $on_runtime_upgrade:tt )* } { $( $on_finalize:tt )* } { $( $offchain:tt )* } { $( $constants:tt )* } @@ -326,6 +335,7 @@ macro_rules! decl_module { { $( $other_where_bounds:tt )* } { $( $deposit_event:tt )* } { $( $on_initialize:tt )* } + { $( $on_runtime_upgrade:tt )* } {} { $( $offchain:tt )* } { $( $constants:tt )* } @@ -342,6 +352,7 @@ macro_rules! decl_module { { $( $other_where_bounds )* } { $( $deposit_event )* } { $( $on_initialize )* } + { $( $on_runtime_upgrade )* } { #[weight = $crate::dispatch::SimpleDispatchInfo::zero()] fn on_finalize( $( $param_name : $param ),* ) { $( $impl )* } @@ -361,6 +372,7 @@ macro_rules! decl_module { { $( $other_where_bounds:tt )* } { $( $deposit_event:tt )* } { $( $on_initialize:tt )* } + { $( $on_runtime_upgrade:tt )* } {} { $( $offchain:tt )* } { $( $constants:tt )* } @@ -378,6 +390,7 @@ macro_rules! decl_module { { $( $other_where_bounds )* } { $( $deposit_event )* } { $( $on_initialize )* } + { $( $on_runtime_upgrade )* } { #[weight = $weight] fn on_finalize( $( $param_name : $param ),* ) { $( $impl )* } @@ -389,6 +402,85 @@ macro_rules! decl_module { $($rest)* ); }; + // Add on_runtime_upgrade, without a given weight. + (@normalize + $(#[$attr:meta])* + pub struct $mod_type:ident< + $trait_instance:ident: $trait_name:ident$(, I: $instantiable:path $(= $module_default_instance:path)?)? + > + for enum $call_type:ident where origin: $origin_type:ty, system = $system:ident + { $( $other_where_bounds:tt )* } + { $( $deposit_event:tt )* } + { $( $on_initialize:tt )* } + {} + { $( $on_finalize:tt )* } + { $( $offchain:tt )* } + { $( $constants:tt )* } + { $( $error_type:tt )* } + [ $( $dispatchables:tt )* ] + $(#[doc = $doc_attr:tt])* + fn on_runtime_upgrade( $( $param_name:ident : $param:ty ),* $(,)? ) { $( $impl:tt )* } + $($rest:tt)* + ) => { + $crate::decl_module!(@normalize + $(#[$attr])* + pub struct $mod_type<$trait_instance: $trait_name$(, I: $instantiable $(= $module_default_instance)?)?> + for enum $call_type where origin: $origin_type, system = $system + { $( $other_where_bounds )* } + { $( $deposit_event )* } + { $( $on_initialize )* } + { + #[weight = $crate::dispatch::SimpleDispatchInfo::zero()] + fn on_runtime_upgrade( $( $param_name : $param ),* ) { $( $impl )* } + } + { $( $on_finalize )* } + { $( $offchain )* } + { $( $constants )* } + { $( $error_type )* } + [ $( $dispatchables )* ] + $($rest)* + ); + }; + // Add on_runtime_upgrade, given weight. + (@normalize + $(#[$attr:meta])* + pub struct $mod_type:ident< + $trait_instance:ident: $trait_name:ident$(, I: $instantiable:path $(= $module_default_instance:path)?)? + > + for enum $call_type:ident where origin: $origin_type:ty, system = $system:ident + { $( $other_where_bounds:tt )* } + { $( $deposit_event:tt )* } + { $( $on_initialize:tt )* } + {} + { $( $on_finalize:tt )* } + { $( $offchain:tt )* } + { $( $constants:tt )* } + { $( $error_type:tt )* } + [ $( $dispatchables:tt )* ] + $(#[doc = $doc_attr:tt])* + #[weight = $weight:expr] + fn on_runtime_upgrade( $( $param_name:ident : $param:ty ),* $(,)? ) { $( $impl:tt )* } + $($rest:tt)* + ) => { + $crate::decl_module!(@normalize + $(#[$attr])* + pub struct $mod_type<$trait_instance: $trait_name$(, I: $instantiable $(= $module_default_instance)?)?> + for enum $call_type where origin: $origin_type, system = $system + { $( $other_where_bounds )* } + { $( $deposit_event )* } + { $( $on_initialize )* } + { + #[weight = $weight] + fn on_runtime_upgrade( $( $param_name : $param ),* ) { $( $impl )* } + } + { $( $on_finalize )* } + { $( $offchain )* } + { $( $constants )* } + { $( $error_type )* } + [ $( $dispatchables )* ] + $($rest)* + ); + }; // Add on_initialize, without a given weight. (@normalize $(#[$attr:meta])* @@ -399,6 +491,7 @@ macro_rules! decl_module { { $( $other_where_bounds:tt )* } { $( $deposit_event:tt )* } {} + { $( $on_runtime_upgrade:tt )* } { $( $on_finalize:tt )* } { $( $offchain:tt )* } { $( $constants:tt )* } @@ -418,6 +511,7 @@ macro_rules! decl_module { #[weight = $crate::dispatch::SimpleDispatchInfo::zero()] fn on_initialize( $( $param_name : $param ),* ) { $( $impl )* } } + { $( $on_runtime_upgrade )* } { $( $on_finalize )* } { $( $offchain )* } { $( $constants )* } @@ -436,6 +530,7 @@ macro_rules! decl_module { { $( $other_where_bounds:tt )* } { $( $deposit_event:tt )* } {} + { $( $on_runtime_upgrade:tt )* } { $( $on_finalize:tt )* } { $( $offchain:tt )* } { $( $constants:tt )* } @@ -456,6 +551,7 @@ macro_rules! decl_module { #[weight = $weight] fn on_initialize( $( $param_name : $param ),* ) { $( $impl )* } } + { $( $on_runtime_upgrade )* } { $( $on_finalize )* } { $( $offchain )* } { $( $constants )* } @@ -474,6 +570,7 @@ macro_rules! decl_module { { $( $other_where_bounds:tt )* } { $( $deposit_event:tt )* } { $( $on_initialize:tt )* } + { $( $on_runtime_upgrade:tt )* } { $( $on_finalize:tt )* } { } { $( $constants:tt )* } @@ -492,6 +589,7 @@ macro_rules! decl_module { { $( $other_where_bounds )* } { $( $deposit_event )* } { $( $on_initialize )* } + { $( $on_runtime_upgrade )* } { $( $on_finalize )* } { fn offchain_worker( $( $param_name : $param ),* ) { $( $impl )* } } { $( $constants )* } @@ -512,6 +610,7 @@ macro_rules! decl_module { { $( $other_where_bounds:tt )* } { $( $deposit_event:tt )* } { $( $on_initialize:tt )* } + { $( $on_runtime_upgrade:tt )* } { $( $on_finalize:tt )* } { $( $offchain:tt )* } { $( $constants:tt )* } @@ -531,6 +630,7 @@ macro_rules! decl_module { { $( $other_where_bounds )* } { $( $deposit_event )* } { $( $on_initialize )* } + { $( $on_runtime_upgrade )* } { $( $on_finalize )* } { $( $offchain )* } { @@ -555,6 +655,7 @@ macro_rules! decl_module { { $( $other_where_bounds:tt )* } { $( $deposit_event:tt )* } { $( $on_initialize:tt )* } + { $( $on_runtime_upgrade:tt )* } { $( $on_finalize:tt )* } { $( $offchain:tt )* } { $( $constants:tt )* } @@ -573,6 +674,7 @@ macro_rules! decl_module { { $( $other_where_bounds )* } { $( $deposit_event )* } { $( $on_initialize )* } + { $( $on_runtime_upgrade )* } { $( $on_finalize )* } { $( $offchain )* } { $( $constants )* } @@ -592,6 +694,7 @@ macro_rules! decl_module { { $( $other_where_bounds:tt )* } { $( $deposit_event:tt )* } { $( $on_initialize:tt )* } + { $( $on_runtime_upgrade:tt )* } { $( $on_finalize:tt )* } { $( $offchain:tt )* } { $( $constants:tt )* } @@ -608,6 +711,7 @@ macro_rules! decl_module { { $( $other_where_bounds )* } { $( $deposit_event )* } { $( $on_initialize )* } + { $( $on_runtime_upgrade )* } { $( $on_finalize )* } { $( $offchain )* } { $( $constants )* } @@ -628,6 +732,7 @@ macro_rules! decl_module { { $( $other_where_bounds:tt )* } { $( $deposit_event:tt )* } { $( $on_initialize:tt )* } + { $( $on_runtime_upgrade:tt )* } { $( $on_finalize:tt )* } { $( $offchain:tt )* } { $( $constants:tt )* } @@ -649,6 +754,7 @@ macro_rules! decl_module { { $( $other_where_bounds )* } { $( $deposit_event )* } { $( $on_initialize )* } + { $( $on_runtime_upgrade )* } { $( $on_finalize )* } { $( $offchain )* } { $( $constants )* } @@ -676,6 +782,7 @@ macro_rules! decl_module { { $( $other_where_bounds:tt )* } { $( $deposit_event:tt )* } { $( $on_initialize:tt )* } + { $( $on_runtime_upgrade:tt )* } { $( $on_finalize:tt )* } { $( $offchain:tt )* } { $( $constants:tt )* } @@ -696,6 +803,7 @@ macro_rules! decl_module { { $( $other_where_bounds )* } { $( $deposit_event )* } { $( $on_initialize )* } + { $( $on_runtime_upgrade )* } { $( $on_finalize )* } { $( $offchain )* } { $( $constants )* } @@ -717,6 +825,7 @@ macro_rules! decl_module { { $( $other_where_bounds:tt )* } { $( $deposit_event:tt )* } { $( $on_initialize:tt )* } + { $( $on_runtime_upgrade:tt )* } { $( $on_finalize:tt )* } { $( $offchain:tt )* } { $( $constants:tt )* } @@ -742,6 +851,7 @@ macro_rules! decl_module { { $( $other_where_bounds:tt )* } { $( $deposit_event:tt )* } { $( $on_initialize:tt )* } + { $( $on_runtime_upgrade:tt )* } { $( $on_finalize:tt )* } { $( $offchain:tt )* } { $( $constants:tt )* } @@ -767,6 +877,7 @@ macro_rules! decl_module { { $( $other_where_bounds:tt )* } { $( $deposit_event:tt )* } { $( $on_initialize:tt )* } + { $( $on_runtime_upgrade:tt )* } { $( $on_finalize:tt )* } { $( $offchain:tt )* } { $( $constants:tt )* } @@ -793,6 +904,7 @@ macro_rules! decl_module { { $( $other_where_bounds:tt )* } { $( $deposit_event:tt )* } { $( $on_initialize:tt )* } + { $( $on_runtime_upgrade:tt )* } { $( $on_finalize:tt )* } { $( $offchain:tt )* } { $( $constants:tt )* } @@ -808,6 +920,7 @@ macro_rules! decl_module { { $( $other_where_bounds )* } { $( $deposit_event )* } { $( $on_initialize )* } + { $( $on_runtime_upgrade )* } { $( $on_finalize )* } { $( $offchain )* } { $( $constants )* } @@ -903,6 +1016,39 @@ macro_rules! decl_module { {} }; + (@impl_on_runtime_upgrade + $module:ident<$trait_instance:ident: $trait_name:ident$(, $instance:ident: $instantiable:path)?>; + { $( $other_where_bounds:tt )* } + #[weight = $weight:expr] + fn on_runtime_upgrade() { $( $impl:tt )* } + ) => { + impl<$trait_instance: $trait_name$(, $instance: $instantiable)?> + $crate::sp_runtime::traits::OnRuntimeUpgrade + for $module<$trait_instance$(, $instance)?> where $( $other_where_bounds )* + { + fn on_runtime_upgrade() { + use $crate::sp_std::if_std; + if_std! { + use $crate::tracing; + let span = tracing::span!(tracing::Level::DEBUG, "on_runtime_upgrade"); + let _enter = span.enter(); + } + { $( $impl )* } + } + } + }; + + (@impl_on_runtime_upgrade + $module:ident<$trait_instance:ident: $trait_name:ident$(, $instance:ident: $instantiable:path)?>; + { $( $other_where_bounds:tt )* } + ) => { + impl<$trait_instance: $trait_name$(, $instance: $instantiable)?> + $crate::sp_runtime::traits::OnRuntimeUpgrade + for $module<$trait_instance$(, $instance)?> where $( $other_where_bounds )* + {} + }; + + (@impl_on_finalize $module:ident<$trait_instance:ident: $trait_name:ident$(, $instance:ident: $instantiable:path)?>; { $( $other_where_bounds:tt )* } @@ -961,6 +1107,10 @@ macro_rules! decl_module { (@impl_block_hooks_weight $module:ident<$trait_instance:ident: $trait_name:ident$(, $instance:ident: $instantiable:path)?>; { $( $other_where_bounds:tt )* } + @runtime_upgrade $( + #[weight = $weight_runtime_update:expr] + fn on_runtime_upgrade($( $param_runtime_upgrade:ident : $param_ty_runtime_upgrade:ty )*) { $( $impl_runtime_upgrade:tt )* } + )? @init $( #[weight = $weight_initialize:expr] fn on_initialize($( $param_initialize:ident : $param_ty_initialize:ty )*) { $( $impl_initialize:tt )* } @@ -974,6 +1124,11 @@ macro_rules! decl_module { $crate::dispatch::WeighBlock<$trait_instance::BlockNumber> for $module<$trait_instance$(, $instance)?> where $( $other_where_bounds )* { + $( + fn on_runtime_upgrade() -> $crate::dispatch::Weight { + >::weigh_data(&$weight_initialize, ()) + } + )? $( fn on_initialize(n: $trait_instance::BlockNumber) -> $crate::dispatch::Weight { >::weigh_data(&$weight_initialize, n) @@ -1208,6 +1363,7 @@ macro_rules! decl_module { { $( $other_where_bounds:tt )* } { $( $deposit_event:tt )* } { $( $on_initialize:tt )* } + { $( $on_runtime_upgrade:tt )* } { $( $on_finalize:tt )* } { $( $offchain:tt )* } { $( $constants:tt )* } @@ -1231,6 +1387,14 @@ macro_rules! decl_module { $( $on_initialize )* } + $crate::decl_module! { + @impl_on_runtime_upgrade + $mod_type<$trait_instance: $trait_name $(, $instance: $instantiable)?>; + { $( $other_where_bounds )* } + $( $on_runtime_upgrade )* + } + + $crate::decl_module! { @impl_on_finalize $mod_type<$trait_instance: $trait_name $(, $instance: $instantiable)?>; @@ -1242,6 +1406,7 @@ macro_rules! decl_module { @impl_block_hooks_weight $mod_type<$trait_instance: $trait_name $(, $instance: $instantiable)?>; { $( $other_where_bounds )* } + @runtime_upgrade $( $on_runtime_upgrade )* @init $( $on_initialize )* @fin $( $on_finalize )* } @@ -1869,15 +2034,12 @@ macro_rules! __check_reserved_fn_name { (on_initialize $( $rest:ident )*) => { $crate::__check_reserved_fn_name!(@compile_error on_initialize); }; - (on_initialise $( $rest:ident )*) => { - $crate::__check_reserved_fn_name!(@compile_error_renamed on_initialise on_initialize); + (on_runtime_upgrade $( $rest:ident )*) => { + $crate::__check_reserved_fn_name!(@compile_error on_runtime_upgrade); }; (on_finalize $( $rest:ident )*) => { $crate::__check_reserved_fn_name!(@compile_error on_finalize); }; - (on_finalise $( $rest:ident )*) => { - $crate::__check_reserved_fn_name!(@compile_error_renamed on_finalise on_finalize); - }; (offchain_worker $( $rest:ident )*) => { $crate::__check_reserved_fn_name!(@compile_error offchain_worker); }; @@ -1914,7 +2076,7 @@ macro_rules! __check_reserved_fn_name { #[allow(dead_code)] mod tests { use super::*; - use crate::sp_runtime::traits::{OnInitialize, OnFinalize}; + use crate::sp_runtime::traits::{OnInitialize, OnFinalize, OnRuntimeUpgrade}; use crate::weights::{DispatchInfo, DispatchClass}; use crate::traits::{CallMetadata, GetCallMetadata, GetCallName}; @@ -1936,8 +2098,8 @@ mod tests { } } - struct BLockWeight; - impl> WeighData for BLockWeight { + struct BlockWeight; + impl> WeighData for BlockWeight { fn weigh_data(&self, target: BlockNumber) -> Weight { let target: u32 = target.into(); if target % 2 == 0 { 10 } else { 0 } @@ -1957,8 +2119,10 @@ mod tests { #[weight = SimpleDispatchInfo::FixedNormal(7)] fn on_initialize(n: T::BlockNumber,) { if n.into() == 42 { panic!("on_initialize") } } - #[weight = BLockWeight] + #[weight = BlockWeight] fn on_finalize(n: T::BlockNumber) { if n.into() == 42 { panic!("on_finalize") } } + #[weight = SimpleDispatchInfo::FixedOperational(69)] + fn on_runtime_upgrade() { } fn offchain_worker() {} #[weight = SimpleDispatchInfo::FixedOperational(5)] @@ -2100,6 +2264,11 @@ mod tests { as OnFinalize>::on_finalize(42); } + #[test] + fn on_runtime_upgrade_should_work() { + as OnRuntimeUpgrade>::on_runtime_upgrade(); + } + #[test] fn weight_should_attach_to_call_enum() { // operational. diff --git a/frame/support/src/storage/mod.rs b/frame/support/src/storage/mod.rs index 4bca5ea402..c28626ad2c 100644 --- a/frame/support/src/storage/mod.rs +++ b/frame/support/src/storage/mod.rs @@ -65,8 +65,8 @@ pub trait StorageValue { /// /// # Usage /// - /// This would typically be called inside the module implementation of on_initialize, while - /// ensuring **no usage of this storage are made before the call to `on_initialize`**. (More + /// This would typically be called inside the module implementation of on_runtime_upgrade, while + /// ensuring **no usage of this storage are made before the call to `on_runtime_upgrade`**. (More /// precisely prior initialized modules doesn't make use of this storage). fn translate) -> Option>(f: F) -> Result, ()>; @@ -265,8 +265,8 @@ pub trait StorageLinkedMap { /// /// # Usage /// - /// This would typically be called inside the module implementation of on_initialize, while - /// ensuring **no usage of this storage are made before the call to `on_initialize`**. (More + /// This would typically be called inside the module implementation of on_runtime_upgrade, while + /// ensuring **no usage of this storage are made before the call to `on_runtime_upgrade`**. (More /// precisely prior initialized modules doesn't make use of this storage). fn translate(translate_key: TK, translate_val: TV) -> Result<(), Option> where K2: FullCodec + Clone, V2: Decode, TK: Fn(K2) -> K, TV: Fn(V2) -> V; @@ -460,8 +460,8 @@ pub trait StoragePrefixedMap { /// /// # Usage /// - /// This would typically be called inside the module implementation of on_initialize, while - /// ensuring **no usage of this storage are made before the call to `on_initialize`**. (More + /// This would typically be called inside the module implementation of on_runtime_upgrade, while + /// ensuring **no usage of this storage are made before the call to `on_runtime_upgrade`**. (More /// precisely prior initialized modules doesn't make use of this storage). fn translate_values(translate_val: TV) -> Result<(), u32> where OldValue: Decode, TV: Fn(OldValue) -> Value diff --git a/frame/support/src/storage/unhashed.rs b/frame/support/src/storage/unhashed.rs index 54910e99a4..1ecf46ef18 100644 --- a/frame/support/src/storage/unhashed.rs +++ b/frame/support/src/storage/unhashed.rs @@ -101,6 +101,10 @@ pub fn get_raw(key: &[u8]) -> Option> { } /// Put a raw byte slice into storage. +/// +/// **WARNING**: If you set the storage of the Substrate Wasm (`well_known_keys::CODE`), +/// you should also call `frame_system::RuntimeUpgraded::put(true)` to trigger the +/// `on_runtime_upgrade` logic. pub fn put_raw(key: &[u8], value: &[u8]) { sp_io::storage::set(key, value) } diff --git a/frame/support/src/weights.rs b/frame/support/src/weights.rs index c46cca683b..8926ed9493 100644 --- a/frame/support/src/weights.rs +++ b/frame/support/src/weights.rs @@ -67,9 +67,11 @@ pub trait ClassifyDispatch { fn classify_dispatch(&self, target: T) -> DispatchClass; } -/// Means of determining the weight of a block's life cycle hooks: `on_initialize`, `on_finalize` and -/// such. +/// Means of determining the weight of a block's life cycle hooks: `on_initialize`, `on_finalize`, +/// `on_runtime_upgrade`, and such. pub trait WeighBlock { + /// Return the weight of the block's on_runtime_upgrade hook. + fn on_runtime_upgrade() -> Weight { Zero::zero() } /// Return the weight of the block's on_initialize hook. fn on_initialize(_: BlockNumber) -> Weight { Zero::zero() } /// Return the weight of the block's on_finalize hook. @@ -87,6 +89,14 @@ pub trait PaysFee { /// Maybe I can do something to remove the duplicate code here. #[impl_for_tuples(30)] impl WeighBlock for SingleModule { + fn on_runtime_upgrade() -> Weight { + let mut accumulated_weight: Weight = Zero::zero(); + for_tuples!( + #( accumulated_weight = accumulated_weight.saturating_add(SingleModule::on_runtime_upgrade()); )* + ); + accumulated_weight + } + fn on_initialize(n: BlockNumber) -> Weight { let mut accumulated_weight: Weight = Zero::zero(); for_tuples!( diff --git a/frame/support/test/tests/reserved_keyword/on_initialize.rs b/frame/support/test/tests/reserved_keyword/on_initialize.rs index e389529bca..84feb2d93f 100644 --- a/frame/support/test/tests/reserved_keyword/on_initialize.rs +++ b/frame/support/test/tests/reserved_keyword/on_initialize.rs @@ -27,6 +27,6 @@ macro_rules! reserved { } } -reserved!(on_finalize on_initialize on_finalise on_initialise offchain_worker deposit_event); +reserved!(on_finalize on_initialize on_runtime_upgrade offchain_worker deposit_event); fn main() {} diff --git a/frame/support/test/tests/reserved_keyword/on_initialize.stderr b/frame/support/test/tests/reserved_keyword/on_initialize.stderr index 13c2ef8d2c..d20a6e1145 100644 --- a/frame/support/test/tests/reserved_keyword/on_initialize.stderr +++ b/frame/support/test/tests/reserved_keyword/on_initialize.stderr @@ -1,47 +1,39 @@ error: Invalid call fn name: `on_finalize`, name is reserved and doesn't match expected signature, please refer to `decl_module!` documentation to see the appropriate usage, or rename it to an unreserved keyword. --> $DIR/on_initialize.rs:30:1 | -30 | reserved!(on_finalize on_initialize on_finalise on_initialise offchain_worker deposit_event); - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ in this macro invocation +30 | reserved!(on_finalize on_initialize on_runtime_upgrade offchain_worker deposit_event); + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ in this macro invocation | = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) error: Invalid call fn name: `on_initialize`, name is reserved and doesn't match expected signature, please refer to `decl_module!` documentation to see the appropriate usage, or rename it to an unreserved keyword. --> $DIR/on_initialize.rs:30:1 | -30 | reserved!(on_finalize on_initialize on_finalise on_initialise offchain_worker deposit_event); - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ in this macro invocation +30 | reserved!(on_finalize on_initialize on_runtime_upgrade offchain_worker deposit_event); + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ in this macro invocation | = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) -error: `on_finalise` was renamed to `on_finalize`. Please rename your function accordingly. +error: Invalid call fn name: `on_runtime_upgrade`, name is reserved and doesn't match expected signature, please refer to `decl_module!` documentation to see the appropriate usage, or rename it to an unreserved keyword. --> $DIR/on_initialize.rs:30:1 | -30 | reserved!(on_finalize on_initialize on_finalise on_initialise offchain_worker deposit_event); - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ in this macro invocation - | - = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) - -error: `on_initialise` was renamed to `on_initialize`. Please rename your function accordingly. - --> $DIR/on_initialize.rs:30:1 - | -30 | reserved!(on_finalize on_initialize on_finalise on_initialise offchain_worker deposit_event); - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ in this macro invocation +30 | reserved!(on_finalize on_initialize on_runtime_upgrade offchain_worker deposit_event); + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ in this macro invocation | = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) error: Invalid call fn name: `offchain_worker`, name is reserved and doesn't match expected signature, please refer to `decl_module!` documentation to see the appropriate usage, or rename it to an unreserved keyword. --> $DIR/on_initialize.rs:30:1 | -30 | reserved!(on_finalize on_initialize on_finalise on_initialise offchain_worker deposit_event); - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ in this macro invocation +30 | reserved!(on_finalize on_initialize on_runtime_upgrade offchain_worker deposit_event); + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ in this macro invocation | = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) error: `deposit_event` function is reserved and must follow the syntax: `$vis:vis fn deposit_event() = default;` --> $DIR/on_initialize.rs:30:1 | -30 | reserved!(on_finalize on_initialize on_finalise on_initialise offchain_worker deposit_event); - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ in this macro invocation +30 | reserved!(on_finalize on_initialize on_runtime_upgrade offchain_worker deposit_event); + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ in this macro invocation | = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) diff --git a/frame/system/src/lib.rs b/frame/system/src/lib.rs index 6cac08117a..f1286beac4 100644 --- a/frame/system/src/lib.rs +++ b/frame/system/src/lib.rs @@ -367,6 +367,9 @@ decl_storage! { /// the `EventIndex` then in case if the topic has the same contents on the next block /// no notification will be triggered thus the event might be lost. EventTopics get(fn event_topics): map hasher(blake2_256) T::Hash => Vec<(T::BlockNumber, EventIndex)>; + + /// A bool to track if the runtime was upgraded last block. + pub RuntimeUpgraded: bool; } add_extra_genesis { config(changes_trie_config): Option; @@ -486,6 +489,7 @@ decl_module! { } storage::unhashed::put_raw(well_known_keys::CODE, &code); + RuntimeUpgraded::put(true); Self::deposit_event(RawEvent::CodeUpdated); } @@ -494,6 +498,7 @@ decl_module! { pub fn set_code_without_checks(origin, code: Vec) { ensure_root(origin)?; storage::unhashed::put_raw(well_known_keys::CODE, &code); + RuntimeUpgraded::put(true); Self::deposit_event(RawEvent::CodeUpdated); } @@ -521,6 +526,9 @@ decl_module! { ensure_root(origin)?; for i in &items { storage::unhashed::put_raw(&i.0, &i.1); + if i.0 == well_known_keys::CODE { + RuntimeUpgraded::put(true); + } } } @@ -1971,6 +1979,26 @@ mod tests { System::events(), vec![EventRecord { phase: Phase::ApplyExtrinsic(0), event: 102u16, topics: vec![] }], ); + + assert_eq!(RuntimeUpgraded::get(), true); + }); + } + + #[test] + fn runtime_upgraded_with_set_storage() { + let executor = substrate_test_runtime_client::new_native_executor(); + let mut ext = new_test_ext(); + ext.register_extension(sp_core::traits::CallInWasmExt::new(executor)); + ext.execute_with(|| { + System::set_storage( + RawOrigin::Root.into(), + vec![( + well_known_keys::CODE.to_vec(), + substrate_test_runtime_client::runtime::WASM_BINARY.to_vec() + )], + ).unwrap(); + + assert_eq!(RuntimeUpgraded::get(), true); }); } } diff --git a/frame/vesting/src/lib.rs b/frame/vesting/src/lib.rs index d4a34d4e17..02d5bebfd2 100644 --- a/frame/vesting/src/lib.rs +++ b/frame/vesting/src/lib.rs @@ -345,7 +345,7 @@ mod tests { use sp_runtime::{ Perbill, testing::Header, - traits::{BlakeTwo256, IdentityLookup, Identity, OnInitialize}, + traits::{BlakeTwo256, IdentityLookup, Identity, OnRuntimeUpgrade}, }; use sp_storage::Storage; @@ -484,7 +484,7 @@ mod tests { ]; s.top = data.into_iter().collect(); sp_io::TestExternalities::new(s).execute_with(|| { - Balances::on_initialize(1); + Balances::on_runtime_upgrade(); assert_eq!(Balances::free_balance(6), 60); assert_eq!(Balances::usable_balance(&6), 30); System::set_block_number(2); diff --git a/primitives/consensus/common/src/select_chain.rs b/primitives/consensus/common/src/select_chain.rs index d94511c110..fe0d397204 100644 --- a/primitives/consensus/common/src/select_chain.rs +++ b/primitives/consensus/common/src/select_chain.rs @@ -23,11 +23,11 @@ use sp_runtime::traits::{Block as BlockT, NumberFor}; /// specific chain build. /// /// The Strategy can be customized for the two use cases of authoring new blocks -/// upon the best chain or which fork to finalise. Unless implemented differently +/// upon the best chain or which fork to finalize. Unless implemented differently /// by default finalization methods fall back to use authoring, so as a minimum /// `_authoring`-functions must be implemented. /// -/// Any particular user must make explicit, however, whether they intend to finalise +/// Any particular user must make explicit, however, whether they intend to finalize /// or author through the using the right function call, as these might differ in /// some implementations. /// diff --git a/primitives/runtime/src/offchain/http.rs b/primitives/runtime/src/offchain/http.rs index 88f4323ad7..bbc929526b 100644 --- a/primitives/runtime/src/offchain/http.rs +++ b/primitives/runtime/src/offchain/http.rs @@ -241,7 +241,7 @@ impl<'a, I: AsRef<[u8]>, T: IntoIterator> Request<'a, T> { sp_io::offchain::http_request_write_body(id, chunk.as_ref(), self.deadline)?; } - // finalise the request + // finalize the request sp_io::offchain::http_request_write_body(id, &[], self.deadline)?; Ok(PendingRequest { diff --git a/primitives/runtime/src/traits.rs b/primitives/runtime/src/traits.rs index c6d85b22f4..4e30e545e4 100644 --- a/primitives/runtime/src/traits.rs +++ b/primitives/runtime/src/traits.rs @@ -345,6 +345,14 @@ pub trait OnInitialize { fn on_initialize(_n: BlockNumber) {} } +/// The runtime upgrade trait. Implementing this lets you express what should happen +/// when the runtime upgrades, and changes may need to occur to your module. +#[impl_for_tuples(30)] +pub trait OnRuntimeUpgrade { + /// Perform a module upgrade. + fn on_runtime_upgrade() {} +} + /// Off-chain computation trait. /// /// Implementing this trait on a module allows you to perform long-running tasks -- GitLab From 9a1524b879d15908b47fb004be4cc01d4026905c Mon Sep 17 00:00:00 2001 From: Gavin Wood Date: Thu, 5 Mar 2020 13:47:51 +0100 Subject: [PATCH 114/301] adding a ss58 format for Darwinia Network (#5026) --- primitives/core/src/crypto.rs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/primitives/core/src/crypto.rs b/primitives/core/src/crypto.rs index 40b9a5ec31..574b8d417d 100644 --- a/primitives/core/src/crypto.rs +++ b/primitives/core/src/crypto.rs @@ -454,6 +454,8 @@ ss58_address_format!( (36, "centrifuge", "Centrifuge Chain mainnet, direct checksum, standard account (*25519).") SubstraTeeAccountDirect => (44, "substratee", "Any SubstraTEE off-chain network private account, direct checksum, standard account (*25519).") + DarwiniaAccountDirect => + (18, "darwinia", "Darwinia Chain mainnet, direct checksum, standard account (*25519).") ); /// Set the default "version" (actually, this is a bit of a misnomer and the version byte is -- GitLab From c37cfbf855bee9526795a1cf1b0e2fd15f100c91 Mon Sep 17 00:00:00 2001 From: Benjamin Kampmann Date: Thu, 5 Mar 2020 14:02:04 +0100 Subject: [PATCH 115/301] Better wasm instance cache (#5109) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Wasm instance cache * Reduce slot locking * Fixed test * Dispose of instance in case of error * Fixed benches * Style, comments, some renames * Replaced upgradable lock with mutex * Bump dependencies * Re-export CallInWasm * Update client/executor/src/wasm_runtime.rs Co-Authored-By: Bastian Köcher * Update client/executor/src/native_executor.rs Co-Authored-By: Bastian Köcher * Update client/executor/src/native_executor.rs Co-Authored-By: Bastian Köcher * Update client/executor/src/wasm_runtime.rs Co-Authored-By: Bastian Köcher * Update client/executor/wasmtime/src/runtime.rs Co-Authored-By: Bastian Köcher * Update client/executor/src/wasm_runtime.rs Co-Authored-By: Bastian Köcher * Update client/executor/src/wasm_runtime.rs Co-Authored-By: Bastian Köcher * Update client/executor/src/wasm_runtime.rs Co-Authored-By: Bastian Köcher * Indents * Whitespace * Formatting * Added issue link Co-authored-by: Benjamin Kampmann Co-authored-by: Gavin Wood Co-authored-by: Bastian Köcher --- Cargo.lock | 149 +++++---- bin/node/executor/benches/bench.rs | 8 +- bin/node/executor/tests/common.rs | 2 +- client/executor/common/src/wasm_runtime.rs | 23 +- client/executor/src/integration_tests/mod.rs | 56 ++-- client/executor/src/lib.rs | 80 +---- client/executor/src/native_executor.rs | 307 ++++++++++-------- client/executor/src/wasm_runtime.rs | 311 ++++++++++++------- client/executor/wasmi/src/lib.rs | 144 +++++---- client/executor/wasmtime/Cargo.toml | 5 +- client/executor/wasmtime/src/host.rs | 11 +- client/executor/wasmtime/src/imports.rs | 13 +- client/executor/wasmtime/src/lib.rs | 2 +- client/executor/wasmtime/src/runtime.rs | 104 ++++--- client/executor/wasmtime/src/state_holder.rs | 74 ++--- primitives/core/src/traits.rs | 3 +- primitives/runtime-interface/test/src/lib.rs | 28 +- primitives/state-machine/src/lib.rs | 3 +- test-utils/runtime/src/system.rs | 4 +- 19 files changed, 724 insertions(+), 603 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 07ee88e170..4f42fa17cd 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -713,25 +713,23 @@ checksum = "e7ca8a5221364ef15ce201e8ed2f609fc312682a8f4e0e3d4aa5879764e0fa3b" [[package]] name = "cranelift-bforest" -version = "0.58.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd0f53d59dc9ab1c8ab68c991d8406b52b7a0aab0b15b05a3a6895579c4e5dd9" +version = "0.59.0" +source = "git+https://github.com/paritytech/wasmtime?branch=a-thread-safe-api#851887d84d03543f931f6312448d0dd5d8a9324e" dependencies = [ "cranelift-entity", ] [[package]] name = "cranelift-codegen" -version = "0.58.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0381a794836fb994c47006465d46d46be072483b667f36013d993b9895117fee" +version = "0.59.0" +source = "git+https://github.com/paritytech/wasmtime?branch=a-thread-safe-api#851887d84d03543f931f6312448d0dd5d8a9324e" dependencies = [ "byteorder 1.3.4", "cranelift-bforest", "cranelift-codegen-meta", "cranelift-codegen-shared", "cranelift-entity", - "gimli 0.20.0", + "gimli", "log 0.4.8", "serde", "smallvec 1.2.0", @@ -741,9 +739,8 @@ dependencies = [ [[package]] name = "cranelift-codegen-meta" -version = "0.58.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "208c3c8d82bfef32a534c5020c6cfc3bc92f41388f1246b7bb98cf543331abaa" +version = "0.59.0" +source = "git+https://github.com/paritytech/wasmtime?branch=a-thread-safe-api#851887d84d03543f931f6312448d0dd5d8a9324e" dependencies = [ "cranelift-codegen-shared", "cranelift-entity", @@ -751,24 +748,21 @@ dependencies = [ [[package]] name = "cranelift-codegen-shared" -version = "0.58.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea048c456a517e56fd6df8f0e3947922897e6e6f61fbc5eb557a36c7b8ff6394" +version = "0.59.0" +source = "git+https://github.com/paritytech/wasmtime?branch=a-thread-safe-api#851887d84d03543f931f6312448d0dd5d8a9324e" [[package]] name = "cranelift-entity" -version = "0.58.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c8c7ed50812194c9e9de1fa39c77b39fc9ab48173d5e7ee88b25b6a8953e9b8" +version = "0.59.0" +source = "git+https://github.com/paritytech/wasmtime?branch=a-thread-safe-api#851887d84d03543f931f6312448d0dd5d8a9324e" dependencies = [ "serde", ] [[package]] name = "cranelift-frontend" -version = "0.58.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21ceb931d9f919731df1b1ecdc716b5c66384b413a7f95909d1f45441ab9bef5" +version = "0.59.0" +source = "git+https://github.com/paritytech/wasmtime?branch=a-thread-safe-api#851887d84d03543f931f6312448d0dd5d8a9324e" dependencies = [ "cranelift-codegen", "log 0.4.8", @@ -778,9 +772,8 @@ dependencies = [ [[package]] name = "cranelift-native" -version = "0.58.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "564ee82268bc25b914fcf331edfc2452f2d9ca34f976b187b4ca668beba250c8" +version = "0.59.0" +source = "git+https://github.com/paritytech/wasmtime?branch=a-thread-safe-api#851887d84d03543f931f6312448d0dd5d8a9324e" dependencies = [ "cranelift-codegen", "raw-cpuid", @@ -789,9 +782,8 @@ dependencies = [ [[package]] name = "cranelift-wasm" -version = "0.58.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de63e2271b374be5b07f359184e2126a08fb24d24a740cbc178b7e0107ddafa5" +version = "0.59.0" +source = "git+https://github.com/paritytech/wasmtime?branch=a-thread-safe-api#851887d84d03543f931f6312448d0dd5d8a9324e" dependencies = [ "cranelift-codegen", "cranelift-entity", @@ -799,7 +791,7 @@ dependencies = [ "log 0.4.8", "serde", "thiserror", - "wasmparser 0.48.2", + "wasmparser", ] [[package]] @@ -1886,27 +1878,18 @@ dependencies = [ "wasm-bindgen", ] -[[package]] -name = "gimli" -version = "0.19.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "162d18ae5f2e3b90a993d202f1ba17a5633c2484426f8bcae201f86194bacd00" -dependencies = [ - "arrayvec 0.4.12", - "byteorder 1.3.4", - "fallible-iterator", - "indexmap", - "stable_deref_trait", -] - [[package]] name = "gimli" version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "81dd6190aad0f05ddbbf3245c54ed14ca4aa6dd32f22312b70d8f168c3e3e633" dependencies = [ + "arrayvec 0.5.1", "byteorder 1.3.4", + "fallible-iterator", "indexmap", + "smallvec 1.2.0", + "stable_deref_trait", ] [[package]] @@ -3773,6 +3756,20 @@ dependencies = [ "libc", ] +[[package]] +name = "object" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea44a4fd660ab0f38434934ca0212e90fbeaaee54126ef20a3451c30c95bafae" +dependencies = [ + "flate2", + "goblin", + "parity-wasm 0.41.0", + "scroll", + "target-lexicon", + "uuid", +] + [[package]] name = "ole32-sys" version = "0.2.0" @@ -6096,11 +6093,11 @@ dependencies = [ "parity-scale-codec", "parity-wasm 0.41.0", "sc-executor-common", + "scoped-tls", "sp-allocator", "sp-core", "sp-runtime-interface", "sp-wasm-interface", - "wasmi", "wasmtime", ] @@ -6601,6 +6598,12 @@ dependencies = [ "zeroize 0.9.3", ] +[[package]] +name = "scoped-tls" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea6a9290e3c9cf0f18145ef7ffa62d68ee0bf5fcd651017e586dc7fd5da448c2" + [[package]] name = "scopeguard" version = "1.1.0" @@ -8596,6 +8599,12 @@ dependencies = [ "percent-encoding 2.1.0", ] +[[package]] +name = "uuid" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fde2f6a4bea1d6e007c4ad38c6839fa71cbb63b6dbf5b595aa38dc9b1093c11" + [[package]] name = "vcpkg" version = "0.2.8" @@ -8831,12 +8840,6 @@ dependencies = [ "parity-wasm 0.41.0", ] -[[package]] -name = "wasmparser" -version = "0.48.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "073da89bf1c84db000dd68ce660c1b4a08e3a2d28fd1e3394ab9e7abdde4a0f8" - [[package]] name = "wasmparser" version = "0.51.4" @@ -8845,9 +8848,8 @@ checksum = "aeb1956b19469d1c5e63e459d29e7b5aa0f558d9f16fcef09736f8a265e6c10a" [[package]] name = "wasmtime" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5614d964c3e7d07a13b59aca66103c52656bd80430f0d86dc7eeb3af4f03d4a2" +version = "0.12.0" +source = "git+https://github.com/paritytech/wasmtime?branch=a-thread-safe-api#851887d84d03543f931f6312448d0dd5d8a9324e" dependencies = [ "anyhow", "backtrace", @@ -8857,9 +8859,10 @@ dependencies = [ "region", "rustc-demangle", "target-lexicon", - "wasmparser 0.51.4", + "wasmparser", "wasmtime-environ", "wasmtime-jit", + "wasmtime-profiling", "wasmtime-runtime", "wat", "winapi 0.3.8", @@ -8867,25 +8870,23 @@ dependencies = [ [[package]] name = "wasmtime-debug" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "feb5900275b4ef0b621ce725b9d5660b12825d7f7d79b392b97baf089ffab8c0" +version = "0.12.0" +source = "git+https://github.com/paritytech/wasmtime?branch=a-thread-safe-api#851887d84d03543f931f6312448d0dd5d8a9324e" dependencies = [ "anyhow", "faerie", - "gimli 0.19.0", + "gimli", "more-asserts", "target-lexicon", "thiserror", - "wasmparser 0.51.4", + "wasmparser", "wasmtime-environ", ] [[package]] name = "wasmtime-environ" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f04661851e133fb11691c4a0f92a705766b4bbf7afc06811f949e295cc8414fc" +version = "0.12.0" +source = "git+https://github.com/paritytech/wasmtime?branch=a-thread-safe-api#851887d84d03543f931f6312448d0dd5d8a9324e" dependencies = [ "anyhow", "base64 0.11.0", @@ -8905,16 +8906,15 @@ dependencies = [ "sha2", "thiserror", "toml", - "wasmparser 0.51.4", + "wasmparser", "winapi 0.3.8", "zstd", ] [[package]] name = "wasmtime-jit" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d451353764ce55c9bb6a8b260063cfc209b7adadd277a9a872ab4563a69e357c" +version = "0.12.0" +source = "git+https://github.com/paritytech/wasmtime?branch=a-thread-safe-api#851887d84d03543f931f6312448d0dd5d8a9324e" dependencies = [ "anyhow", "cfg-if", @@ -8927,29 +8927,46 @@ dependencies = [ "region", "target-lexicon", "thiserror", - "wasmparser 0.51.4", + "wasmparser", "wasmtime-debug", "wasmtime-environ", + "wasmtime-profiling", "wasmtime-runtime", "winapi 0.3.8", ] +[[package]] +name = "wasmtime-profiling" +version = "0.12.0" +source = "git+https://github.com/paritytech/wasmtime?branch=a-thread-safe-api#851887d84d03543f931f6312448d0dd5d8a9324e" +dependencies = [ + "gimli", + "goblin", + "lazy_static", + "libc", + "object", + "scroll", + "serde", + "target-lexicon", +] + [[package]] name = "wasmtime-runtime" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7dbd4fc114b828cae3e405fed413df4b3814d87a92ea029640cec9ba41f0c162" +version = "0.12.0" +source = "git+https://github.com/paritytech/wasmtime?branch=a-thread-safe-api#851887d84d03543f931f6312448d0dd5d8a9324e" dependencies = [ "backtrace", "cc", "cfg-if", "indexmap", + "lazy_static", "libc", "memoffset", "more-asserts", "region", "thiserror", "wasmtime-environ", + "wasmtime-profiling", "winapi 0.3.8", ] diff --git a/bin/node/executor/benches/bench.rs b/bin/node/executor/benches/bench.rs index 98aa75edfc..3209bb8729 100644 --- a/bin/node/executor/benches/bench.rs +++ b/bin/node/executor/benches/bench.rs @@ -91,7 +91,7 @@ fn construct_block( }; // execute the block to get the real header. - executor.call::<_, NeverNativeValue, fn() -> _>( + executor.call:: _>( ext, "Core_initialize_block", &header.encode(), @@ -100,7 +100,7 @@ fn construct_block( ).0.unwrap(); for i in extrinsics.iter() { - executor.call::<_, NeverNativeValue, fn() -> _>( + executor.call:: _>( ext, "BlockBuilder_apply_extrinsic", &i.encode(), @@ -109,7 +109,7 @@ fn construct_block( ).0.unwrap(); } - let header = match executor.call::<_, NeverNativeValue, fn() -> _>( + let header = match executor.call:: _>( ext, "BlockBuilder_finalize_block", &[0u8;0], @@ -175,7 +175,7 @@ fn bench_execute_block(c: &mut Criterion) { || new_test_ext(&genesis_config), |test_ext| { for block in blocks.iter() { - executor.call::<_, NeverNativeValue, fn() -> _>( + executor.call:: _>( &mut test_ext.ext(), "Core_execute_block", &block.0, diff --git a/bin/node/executor/tests/common.rs b/bin/node/executor/tests/common.rs index a39acbb42b..34f3034208 100644 --- a/bin/node/executor/tests/common.rs +++ b/bin/node/executor/tests/common.rs @@ -71,7 +71,7 @@ pub fn executor_call< native_call: Option, ) -> (Result>, bool) { let mut t = t.ext(); - executor().call::<_, R, NC>( + executor().call::( &mut t, method, data, diff --git a/client/executor/common/src/wasm_runtime.rs b/client/executor/common/src/wasm_runtime.rs index 7af6c2bd53..b59ca8ba93 100644 --- a/client/executor/common/src/wasm_runtime.rs +++ b/client/executor/common/src/wasm_runtime.rs @@ -17,18 +17,25 @@ //! Definitions for a wasm runtime. use crate::error::Error; -use sp_wasm_interface::{Function, Value}; +use sp_wasm_interface::Value; -/// A trait that defines an abstract wasm runtime. +/// A trait that defines an abstract WASM runtime module. /// /// This can be implemented by an execution engine. -pub trait WasmRuntime { - /// Return the host functions that are registered for this Wasm runtime. - fn host_functions(&self) -> &[&'static dyn Function]; +pub trait WasmModule: Sync + Send { + /// Create a new instance. + fn new_instance(&self) -> Result, Error>; +} - /// Call a method in the Substrate runtime by name. Returns the encoded result on success. - fn call(&mut self, method: &str, data: &[u8]) -> Result, Error>; +/// A trait that defines an abstract wasm module instance. +/// +/// This can be implemented by an execution engine. +pub trait WasmInstance: Send { + /// Call a method on this WASM instance and reset it afterwards. + /// Returns the encoded result on success. + fn call(&self, method: &str, data: &[u8]) -> Result, Error>; /// Get the value from a global with the given `name`. - fn get_global_val(&self, name: &str) -> Result, Error>; + /// This method is only suitable for getting immutable globals. + fn get_global_const(&self, name: &str) -> Result, Error>; } diff --git a/client/executor/src/integration_tests/mod.rs b/client/executor/src/integration_tests/mod.rs index 87ca33c4da..e787b229ec 100644 --- a/client/executor/src/integration_tests/mod.rs +++ b/client/executor/src/integration_tests/mod.rs @@ -21,7 +21,7 @@ use hex_literal::hex; use sp_core::{ blake2_128, blake2_256, ed25519, sr25519, map, Pair, offchain::{OffchainExt, testing}, - traits::Externalities, + traits::{Externalities, CallInWasm}, }; use sc_runtime_test::WASM_BINARY; use sp_state_machine::TestExternalities as CoreTestExternalities; @@ -40,15 +40,18 @@ fn call_in_wasm( call_data: &[u8], execution_method: WasmExecutionMethod, ext: &mut E, -) -> crate::error::Result> { - crate::call_in_wasm::( +) -> Result, String> { + let executor = crate::WasmExecutor::new( + execution_method, + Some(1024), + HostFunctions::host_functions(), + true, + ); + executor.call_in_wasm( + &WASM_BINARY[..], function, call_data, - execution_method, ext, - &WASM_BINARY[..], - 1024, - true, ) } @@ -84,12 +87,12 @@ fn call_not_existing_function(wasm_method: WasmExecutionMethod) { match wasm_method { WasmExecutionMethod::Interpreted => assert_eq!( &format!("{:?}", e), - "Wasmi(Trap(Trap { kind: Host(Other(\"Function `missing_external` is only a stub. Calling a stub is not allowed.\")) }))" + "\"Trap: Trap { kind: Host(Other(\\\"Function `missing_external` is only a stub. Calling a stub is not allowed.\\\")) }\"" ), #[cfg(feature = "wasmtime")] WasmExecutionMethod::Compiled => assert_eq!( &format!("{:?}", e), - "Other(\"Wasm execution trapped: call to a missing function env:missing_external\")" + "\"Wasm execution trapped: call to a missing function env:missing_external\"" ), } } @@ -113,12 +116,12 @@ fn call_yet_another_not_existing_function(wasm_method: WasmExecutionMethod) { match wasm_method { WasmExecutionMethod::Interpreted => assert_eq!( &format!("{:?}", e), - "Wasmi(Trap(Trap { kind: Host(Other(\"Function `yet_another_missing_external` is only a stub. Calling a stub is not allowed.\")) }))" + "\"Trap: Trap { kind: Host(Other(\\\"Function `yet_another_missing_external` is only a stub. Calling a stub is not allowed.\\\")) }\"" ), #[cfg(feature = "wasmtime")] WasmExecutionMethod::Compiled => assert_eq!( &format!("{:?}", e), - "Other(\"Wasm execution trapped: call to a missing function env:yet_another_missing_external\")" + "\"Wasm execution trapped: call to a missing function env:yet_another_missing_external\"" ), } } @@ -502,29 +505,32 @@ fn offchain_http_should_work(wasm_method: WasmExecutionMethod) { fn should_trap_when_heap_exhausted(wasm_method: WasmExecutionMethod) { let mut ext = TestExternalities::default(); - crate::call_in_wasm::( + let executor = crate::WasmExecutor::new( + wasm_method, + Some(17), // `17` is the initial number of pages compiled into the binary. + HostFunctions::host_functions(), + true, + ); + executor.call_in_wasm( + &WASM_BINARY[..], "test_exhaust_heap", &[0], - wasm_method, &mut ext.ext(), - &WASM_BINARY[..], - // `17` is the initial number of pages compiled into the binary. - 17, - true, ).unwrap(); } #[test_case(WasmExecutionMethod::Interpreted)] #[cfg_attr(feature = "wasmtime", test_case(WasmExecutionMethod::Compiled))] fn returns_mutable_static(wasm_method: WasmExecutionMethod) { - let mut instance = crate::wasm_runtime::create_wasm_runtime_with_code( + let runtime = crate::wasm_runtime::create_wasm_runtime_with_code( wasm_method, 1024, &WASM_BINARY[..], HostFunctions::host_functions(), true, - ).expect("Creates instance"); + ).expect("Creates runtime"); + let instance = runtime.new_instance().unwrap(); let res = instance.call("returns_mutable_static", &[0]).unwrap(); assert_eq!(33, u64::decode(&mut &res[..]).unwrap()); @@ -550,13 +556,14 @@ fn restoration_of_globals(wasm_method: WasmExecutionMethod) { // to our allocator algorithm there are inefficiencies. const REQUIRED_MEMORY_PAGES: u64 = 32; - let mut instance = crate::wasm_runtime::create_wasm_runtime_with_code( + let runtime = crate::wasm_runtime::create_wasm_runtime_with_code( wasm_method, REQUIRED_MEMORY_PAGES, &WASM_BINARY[..], HostFunctions::host_functions(), true, - ).expect("Creates instance"); + ).expect("Creates runtime"); + let instance = runtime.new_instance().unwrap(); // On the first invocation we allocate approx. 768KB (75%) of stack and then trap. let res = instance.call("allocates_huge_stack_array", &true.encode()); @@ -569,15 +576,16 @@ fn restoration_of_globals(wasm_method: WasmExecutionMethod) { #[test_case(WasmExecutionMethod::Interpreted)] fn heap_is_reset_between_calls(wasm_method: WasmExecutionMethod) { - let mut instance = crate::wasm_runtime::create_wasm_runtime_with_code( + let runtime = crate::wasm_runtime::create_wasm_runtime_with_code( wasm_method, 1024, &WASM_BINARY[..], HostFunctions::host_functions(), true, - ).expect("Creates instance"); + ).expect("Creates runtime"); + let instance = runtime.new_instance().unwrap(); - let heap_base = instance.get_global_val("__heap_base") + let heap_base = instance.get_global_const("__heap_base") .expect("`__heap_base` is valid") .expect("`__heap_base` exists") .as_i32() diff --git a/client/executor/src/lib.rs b/client/executor/src/lib.rs index af53ed9183..1c21026fd8 100644 --- a/client/executor/src/lib.rs +++ b/client/executor/src/lib.rs @@ -36,82 +36,24 @@ mod wasm_runtime; mod integration_tests; pub use wasmi; -pub use native_executor::{with_externalities_safe, NativeExecutor, NativeExecutionDispatch}; +pub use native_executor::{with_externalities_safe, NativeExecutor, WasmExecutor, NativeExecutionDispatch}; pub use sp_version::{RuntimeVersion, NativeVersion}; pub use codec::Codec; #[doc(hidden)] -pub use sp_core::traits::Externalities; +pub use sp_core::traits::{Externalities, CallInWasm}; #[doc(hidden)] pub use sp_wasm_interface; pub use wasm_runtime::WasmExecutionMethod; pub use sc_executor_common::{error, sandbox}; -/// Call the given `function` in the given wasm `code`. -/// -/// The signature of `function` needs to follow the default Substrate function signature. -/// -/// - `call_data`: Will be given as input parameters to `function` -/// - `execution_method`: The execution method to use. -/// - `ext`: The externalities that should be set while executing the wasm function. -/// If `None` is given, no externalities will be set. -/// - `heap_pages`: The number of heap pages to allocate. -/// -/// Returns the `Vec` that contains the return value of the function. -pub fn call_in_wasm( - function: &str, - call_data: &[u8], - execution_method: WasmExecutionMethod, - ext: &mut dyn Externalities, - code: &[u8], - heap_pages: u64, - allow_missing_func_imports: bool, -) -> error::Result> { - call_in_wasm_with_host_functions( - function, - call_data, - execution_method, - ext, - code, - heap_pages, - HF::host_functions(), - allow_missing_func_imports, - ) -} - -/// Non-generic version of [`call_in_wasm`] that takes the `host_functions` as parameter. -/// For more information please see [`call_in_wasm`]. -pub fn call_in_wasm_with_host_functions( - function: &str, - call_data: &[u8], - execution_method: WasmExecutionMethod, - ext: &mut dyn Externalities, - code: &[u8], - heap_pages: u64, - host_functions: Vec<&'static dyn sp_wasm_interface::Function>, - allow_missing_func_imports: bool, -) -> error::Result> { - let instance = wasm_runtime::create_wasm_runtime_with_code( - execution_method, - heap_pages, - code, - host_functions, - allow_missing_func_imports, - )?; - - // It is safe, as we delete the instance afterwards. - let mut instance = std::panic::AssertUnwindSafe(instance); - - with_externalities_safe(ext, move || instance.call(function, call_data)).and_then(|r| r) -} - /// Provides runtime information. pub trait RuntimeInfo { /// Native runtime information. fn native_version(&self) -> &NativeVersion; /// Extract RuntimeVersion of given :code block - fn runtime_version (&self, ext: &mut E) -> error::Result; + fn runtime_version(&self, ext: &mut dyn Externalities) -> error::Result; } #[cfg(test)] @@ -119,19 +61,25 @@ mod tests { use super::*; use sc_runtime_test::WASM_BINARY; use sp_io::TestExternalities; + use sp_wasm_interface::HostFunctions; + use sp_core::traits::CallInWasm; #[test] fn call_in_interpreted_wasm_works() { let mut ext = TestExternalities::default(); let mut ext = ext.ext(); - let res = call_in_wasm::( + + let executor = WasmExecutor::new( + WasmExecutionMethod::Interpreted, + Some(8), + sp_io::SubstrateHostFunctions::host_functions(), + true, + ); + let res = executor.call_in_wasm( + &WASM_BINARY[..], "test_empty_return", &[], - WasmExecutionMethod::Interpreted, &mut ext, - &WASM_BINARY, - 8, - true, ).unwrap(); assert_eq!(res, vec![0u8; 0]); } diff --git a/client/executor/src/native_executor.rs b/client/executor/src/native_executor.rs index 1364b753db..dfc88d2ede 100644 --- a/client/executor/src/native_executor.rs +++ b/client/executor/src/native_executor.rs @@ -16,19 +16,15 @@ use crate::{ RuntimeInfo, error::{Error, Result}, - wasm_runtime::{RuntimesCache, WasmExecutionMethod}, + wasm_runtime::{RuntimeCache, WasmExecutionMethod, CodeSource}, }; use sp_version::{NativeVersion, RuntimeVersion}; use codec::{Decode, Encode}; use sp_core::{NativeOrEncoded, traits::{CodeExecutor, Externalities}}; use log::trace; -use std::{result, cell::RefCell, panic::{UnwindSafe, AssertUnwindSafe}, sync::Arc}; +use std::{result, panic::{UnwindSafe, AssertUnwindSafe}, sync::Arc}; use sp_wasm_interface::{HostFunctions, Function}; -use sc_executor_common::wasm_runtime::WasmRuntime; - -thread_local! { - static RUNTIMES_CACHE: RefCell = RefCell::new(RuntimesCache::new()); -} +use sc_executor_common::wasm_runtime::WasmInstance; /// Default num of pages for the heap const DEFAULT_HEAP_PAGES: u64 = 1024; @@ -75,42 +71,43 @@ pub trait NativeExecutionDispatch: Send + Sync { fn native_version() -> NativeVersion; } -/// A generic `CodeExecutor` implementation that uses a delegate to determine wasm code equivalence -/// and dispatch to native code when possible, falling back on `WasmExecutor` when not. -pub struct NativeExecutor { - /// Dummy field to avoid the compiler complaining about us not using `D`. - _dummy: std::marker::PhantomData, +/// An abstraction over Wasm code executor. Supports selecting execution backend and +/// manages runtime cache. +#[derive(Clone)] +pub struct WasmExecutor { /// Method used to execute fallback Wasm code. - fallback_method: WasmExecutionMethod, - /// Native runtime version info. - native_version: NativeVersion, + method: WasmExecutionMethod, /// The number of 64KB pages to allocate for Wasm execution. default_heap_pages: u64, /// The host functions registered with this instance. host_functions: Arc>, + /// WASM runtime cache. + cache: Arc, + /// Allow missing function imports. + allow_missing_func_imports: bool, } -impl NativeExecutor { +impl WasmExecutor { /// Create new instance. /// /// # Parameters /// - /// `fallback_method` - Method used to execute fallback Wasm code. + /// `method` - Method used to execute Wasm code. /// /// `default_heap_pages` - Number of 64KB pages to allocate for Wasm execution. /// Defaults to `DEFAULT_HEAP_PAGES` if `None` is provided. - pub fn new(fallback_method: WasmExecutionMethod, default_heap_pages: Option) -> Self { - let mut host_functions = sp_io::SubstrateHostFunctions::host_functions(); - - // Add the custom host functions provided by the user. - host_functions.extend(D::ExtendHostFunctions::host_functions()); - - NativeExecutor { - _dummy: Default::default(), - fallback_method, - native_version: D::native_version(), + pub fn new( + method: WasmExecutionMethod, + default_heap_pages: Option, + host_functions: Vec<&'static dyn Function>, + allow_missing_func_imports: bool, + ) -> Self { + WasmExecutor { + method, default_heap_pages: default_heap_pages.unwrap_or(DEFAULT_HEAP_PAGES), host_functions: Arc::new(host_functions), + cache: Arc::new(RuntimeCache::new()), + allow_missing_func_imports, } } @@ -127,46 +124,90 @@ impl NativeExecutor { /// runtime is invalidated on any `panic!` to prevent a poisoned state. `ext` is already /// implicitly handled as unwind safe, as we store it in a global variable while executing the /// native runtime. - fn with_runtime( + fn with_instance<'c, R, F>( &self, - ext: &mut E, - f: impl for<'a> FnOnce( - AssertUnwindSafe<&'a mut (dyn WasmRuntime + 'static)>, - &'a RuntimeVersion, - AssertUnwindSafe<&'a mut E>, + code: CodeSource<'c>, + ext: &mut dyn Externalities, + f: F, + ) -> Result + where F: FnOnce( + AssertUnwindSafe<&dyn WasmInstance>, + Option<&RuntimeVersion>, + AssertUnwindSafe<&mut dyn Externalities>, ) -> Result>, - ) -> Result where E: Externalities { - RUNTIMES_CACHE.with(|cache| { - let mut cache = cache.borrow_mut(); - let (runtime, version, code_hash) = cache.fetch_runtime( - ext, - self.fallback_method, - self.default_heap_pages, - &*self.host_functions, - )?; - - let runtime = AssertUnwindSafe(runtime); - let ext = AssertUnwindSafe(ext); - - match f(runtime, version, ext) { - Ok(res) => res, - Err(e) => { - cache.invalidate_runtime(self.fallback_method, code_hash); - Err(e) - } + { + match self.cache.with_instance( + code, + ext, + self.method, + self.default_heap_pages, + &*self.host_functions, + self.allow_missing_func_imports, + |instance, version, ext| { + let instance = AssertUnwindSafe(instance); + let ext = AssertUnwindSafe(ext); + f(instance, version, ext) } - }) + )? { + Ok(r) => r, + Err(e) => Err(e), + } } } -impl Clone for NativeExecutor { - fn clone(&self) -> Self { +impl sp_core::traits::CallInWasm for WasmExecutor { + fn call_in_wasm( + &self, + wasm_blob: &[u8], + method: &str, + call_data: &[u8], + ext: &mut dyn Externalities, + ) -> std::result::Result, String> { + self.with_instance(CodeSource::Custom(wasm_blob), ext, |instance, _, mut ext| { + with_externalities_safe( + &mut **ext, + move || instance.call(method, call_data), + ) + }).map_err(|e| e.to_string()) + } +} + +/// A generic `CodeExecutor` implementation that uses a delegate to determine wasm code equivalence +/// and dispatch to native code when possible, falling back on `WasmExecutor` when not. +pub struct NativeExecutor { + /// Dummy field to avoid the compiler complaining about us not using `D`. + _dummy: std::marker::PhantomData, + /// Native runtime version info. + native_version: NativeVersion, + /// Fallback wasm executor. + wasm: WasmExecutor, +} + +impl NativeExecutor { + /// Create new instance. + /// + /// # Parameters + /// + /// `fallback_method` - Method used to execute fallback Wasm code. + /// + /// `default_heap_pages` - Number of 64KB pages to allocate for Wasm execution. + /// Defaults to `DEFAULT_HEAP_PAGES` if `None` is provided. + pub fn new(fallback_method: WasmExecutionMethod, default_heap_pages: Option) -> Self { + let mut host_functions = sp_io::SubstrateHostFunctions::host_functions(); + + // Add the custom host functions provided by the user. + host_functions.extend(D::ExtendHostFunctions::host_functions()); + let wasm_executor = WasmExecutor::new( + fallback_method, + default_heap_pages, + host_functions, + false, + ); + NativeExecutor { _dummy: Default::default(), - fallback_method: self.fallback_method, native_version: D::native_version(), - default_heap_pages: self.default_heap_pages, - host_functions: self.host_functions.clone(), + wasm: wasm_executor, } } } @@ -176,90 +217,109 @@ impl RuntimeInfo for NativeExecutor { &self.native_version } - fn runtime_version( + fn runtime_version( &self, - ext: &mut E, + ext: &mut dyn Externalities, ) -> Result { - self.with_runtime(ext, |_runtime, version, _ext| Ok(Ok(version.clone()))) + self.wasm.with_instance(CodeSource::Externalities, ext, + |_instance, version, _ext| + Ok(version.cloned().ok_or_else(|| Error::ApiError("Unknown version".into()))) + ) } } impl CodeExecutor for NativeExecutor { type Error = Error; - fn call - < - E: Externalities, + fn call< R: Decode + Encode + PartialEq, NC: FnOnce() -> result::Result + UnwindSafe, >( &self, - ext: &mut E, + ext: &mut dyn Externalities, method: &str, data: &[u8], use_native: bool, native_call: Option, - ) -> (Result>, bool){ + ) -> (Result>, bool) { let mut used_native = false; - let result = self.with_runtime(ext, |mut runtime, onchain_version, mut ext| { - match ( - use_native, - onchain_version.can_call_with(&self.native_version.runtime_version), - native_call, - ) { - (_, false, _) => { - trace!( - target: "executor", - "Request for native execution failed (native: {}, chain: {})", - self.native_version.runtime_version, - onchain_version, - ); - - with_externalities_safe( - &mut **ext, - move || runtime.call(method, data).map(NativeOrEncoded::Encoded) - ) - } - (false, _, _) => { - with_externalities_safe( - &mut **ext, - move || runtime.call(method, data).map(NativeOrEncoded::Encoded) - ) - }, - (true, true, Some(call)) => { - trace!( - target: "executor", - "Request for native execution with native call succeeded (native: {}, chain: {}).", - self.native_version.runtime_version, - onchain_version, - ); - - used_native = true; - let res = with_externalities_safe(&mut **ext, move || (call)()) - .and_then(|r| r - .map(NativeOrEncoded::Native) - .map_err(|s| Error::ApiError(s.to_string())) + let result = self.wasm.with_instance( + CodeSource::Externalities, + ext, + |instance, onchain_version, mut ext| { + let onchain_version = onchain_version.ok_or_else( + || Error::ApiError("Unknown version".into()) + )?; + match ( + use_native, + onchain_version.can_call_with(&self.native_version.runtime_version), + native_call, + ) { + (_, false, _) => { + trace!( + target: "executor", + "Request for native execution failed (native: {}, chain: {})", + self.native_version.runtime_version, + onchain_version, ); - Ok(res) - } - _ => { - trace!( - target: "executor", - "Request for native execution succeeded (native: {}, chain: {})", - self.native_version.runtime_version, - onchain_version - ); - - used_native = true; - Ok(D::dispatch(&mut **ext, method, data).map(NativeOrEncoded::Encoded)) + with_externalities_safe( + &mut **ext, + move || instance.call(method, data).map(NativeOrEncoded::Encoded) + ) + } + (false, _, _) => { + with_externalities_safe( + &mut **ext, + move || instance.call(method, data).map(NativeOrEncoded::Encoded) + ) + }, + (true, true, Some(call)) => { + trace!( + target: "executor", + "Request for native execution with native call succeeded \ + (native: {}, chain: {}).", + self.native_version.runtime_version, + onchain_version, + ); + + used_native = true; + let res = with_externalities_safe(&mut **ext, move || (call)()) + .and_then(|r| r + .map(NativeOrEncoded::Native) + .map_err(|s| Error::ApiError(s.to_string())) + ); + + Ok(res) + } + _ => { + trace!( + target: "executor", + "Request for native execution succeeded (native: {}, chain: {})", + self.native_version.runtime_version, + onchain_version + ); + + used_native = true; + Ok(D::dispatch(&mut **ext, method, data).map(NativeOrEncoded::Encoded)) + } } } - }); + ); (result, used_native) } } +impl Clone for NativeExecutor { + fn clone(&self) -> Self { + NativeExecutor { + _dummy: Default::default(), + native_version: D::native_version(), + wasm: self.wasm.clone(), + } + } +} + impl sp_core::traits::CallInWasm for NativeExecutor { fn call_in_wasm( &self, @@ -268,16 +328,7 @@ impl sp_core::traits::CallInWasm for NativeExecutor< call_data: &[u8], ext: &mut dyn Externalities, ) -> std::result::Result, String> { - crate::call_in_wasm_with_host_functions( - method, - call_data, - self.fallback_method, - ext, - wasm_blob, - self.default_heap_pages, - (*self.host_functions).clone(), - false, - ).map_err(|e| e.to_string()) + sp_core::traits::CallInWasm::call_in_wasm(&self.wasm, wasm_blob, method, call_data, ext) } } @@ -379,7 +430,7 @@ mod tests { let executor = NativeExecutor::::new(WasmExecutionMethod::Interpreted, None); my_interface::HostFunctions::host_functions().iter().for_each(|function| { assert_eq!( - executor.host_functions.iter().filter(|f| f == &function).count(), + executor.wasm.host_functions.iter().filter(|f| f == &function).count(), 2, ); }); diff --git a/client/executor/src/wasm_runtime.rs b/client/executor/src/wasm_runtime.rs index 9d54246ee0..180baf0a2f 100644 --- a/client/executor/src/wasm_runtime.rs +++ b/client/executor/src/wasm_runtime.rs @@ -19,13 +19,15 @@ //! The primary means of accessing the runtimes is through a cache which saves the reusable //! components of the runtime that are expensive to initialize. +use std::sync::Arc; +use std::borrow::Cow; use crate::error::{Error, WasmError}; -use log::{trace, warn}; +use parking_lot::{Mutex, RwLock}; use codec::Decode; use sp_core::{storage::well_known_keys, traits::Externalities}; use sp_version::RuntimeVersion; -use std::{collections::hash_map::{Entry, HashMap}, panic::AssertUnwindSafe}; -use sc_executor_common::wasm_runtime::WasmRuntime; +use std::panic::AssertUnwindSafe; +use sc_executor_common::wasm_runtime::{WasmModule, WasmInstance}; use sp_wasm_interface::Function; @@ -39,15 +41,33 @@ pub enum WasmExecutionMethod { Compiled, } +/// Executoed code origin. +pub enum CodeSource<'a> { + /// Take code from storage, + Externalities, + /// Use provided code, + Custom(&'a [u8]), +} + /// A Wasm runtime object along with its cached runtime version. struct VersionedRuntime { - runtime: Box, + /// Runtime code hash. + code_hash: Vec, + /// Wasm runtime type. + wasm_method: WasmExecutionMethod, + /// Shared runtime that can spawn instances. + module: Box, /// The number of WebAssembly heap pages this instance was created with. heap_pages: u64, - /// Runtime version according to `Core_version`. - version: RuntimeVersion, + /// Runtime version according to `Core_version` if any. + version: Option, + /// Cached instance pool. + instances: RwLock<[Option>>>; MAX_INSTANCES]>, } +const MAX_RUNTIMES: usize = 2; +const MAX_INSTANCES: usize = 8; + /// Cache for the runtimes. /// /// When an instance is requested for the first time it is added to this cache. Metadata is kept @@ -60,130 +80,184 @@ struct VersionedRuntime { /// /// For now the cache grows indefinitely, but that should be fine for now since runtimes can only be /// upgraded rarely and there are no other ways to make the node to execute some other runtime. -pub struct RuntimesCache { - /// A cache of runtime instances along with metadata, ready to be reused. +pub struct RuntimeCache { + /// A cache of runtimes along with metadata. /// - /// Instances are keyed by the Wasm execution method and the hash of their code. - instances: HashMap<(WasmExecutionMethod, Vec), Result>, + /// Runtimes sorted by recent usage. The most recently used is at the front. + runtimes: Mutex<[Option>; MAX_RUNTIMES]>, } -impl RuntimesCache { +impl RuntimeCache { /// Creates a new instance of a runtimes cache. - pub fn new() -> RuntimesCache { - RuntimesCache { - instances: HashMap::new(), + pub fn new() -> RuntimeCache { + RuntimeCache { + runtimes: Default::default(), } } - /// Fetches an instance of the runtime. - /// - /// On first use we create a new runtime instance, save it to the cache - /// and persist its initial memory. - /// - /// Each subsequent request will return this instance, with its memory restored - /// to the persisted initial memory. Thus, we reuse one single runtime instance - /// for every `fetch_runtime` invocation. + /// Prepares a WASM module instance and executes given function for it. /// + /// This uses internal cache to find avaiable instance or create a new one. /// # Parameters /// + /// `code` - Provides external code or tells the executor to fetch it from storage. + /// /// `ext` - Externalities to use for the runtime. This is used for setting /// up an initial runtime instance. /// /// `default_heap_pages` - Number of 64KB pages to allocate for Wasm execution. /// + /// `wasm_method` - Type of WASM backend to use. + /// /// `host_functions` - The host functions that should be registered for the Wasm runtime. /// - /// # Return value + /// `allow_missing_func_imports` - Ignore missing function imports. /// - /// If no error occurred a tuple `(&mut WasmRuntime, H256)` is - /// returned. `H256` is the hash of the runtime code. + /// `f` - Function to execute. /// + /// # Returns result of `f` wrapped in an additonal result. /// In case of failure one of two errors can be returned: /// /// `Err::InvalidCode` is returned for runtime code issues. /// /// `Error::InvalidMemoryReference` is returned if no memory export with the /// identifier `memory` can be found in the runtime. - pub fn fetch_runtime( - &mut self, - ext: &mut E, + pub fn with_instance<'c, R, F>( + &self, + code: CodeSource<'c>, + ext: &mut dyn Externalities, wasm_method: WasmExecutionMethod, default_heap_pages: u64, host_functions: &[&'static dyn Function], - ) -> Result<(&mut (dyn WasmRuntime + 'static), &RuntimeVersion, Vec), Error> { - let code_hash = ext - .original_storage_hash(well_known_keys::CODE) - .ok_or(Error::InvalidCode("`CODE` not found in storage.".into()))?; - - let heap_pages = ext - .storage(well_known_keys::HEAP_PAGES) - .and_then(|pages| u64::decode(&mut &pages[..]).ok()) - .unwrap_or(default_heap_pages); + allow_missing_func_imports: bool, + f: F, + ) -> Result, Error> + where F: FnOnce( + &dyn WasmInstance, + Option<&RuntimeVersion>, + &mut dyn Externalities) + -> Result, + { + let (code_hash, heap_pages) = match &code { + CodeSource::Externalities => { + ( + ext + .original_storage_hash(well_known_keys::CODE) + .ok_or(Error::InvalidCode("`CODE` not found in storage.".into()))?, + ext + .storage(well_known_keys::HEAP_PAGES) + .and_then(|pages| u64::decode(&mut &pages[..]).ok()) + .unwrap_or(default_heap_pages), + ) + }, + CodeSource::Custom(code) => { + (sp_core::blake2_256(code).to_vec(), default_heap_pages) + } + }; - let result = match self.instances.entry((wasm_method, code_hash.clone())) { - Entry::Occupied(o) => { - let result = o.into_mut(); - if let Ok(ref mut cached_runtime) = result { - let heap_pages_changed = cached_runtime.heap_pages != heap_pages; - let host_functions_changed = cached_runtime.runtime.host_functions() - != host_functions; - if heap_pages_changed || host_functions_changed { - let changed = if heap_pages_changed { - "heap_pages" - } else { - "host functions" - }; + let mut runtimes = self.runtimes.lock(); // this must be released prior to calling f + let pos = runtimes.iter().position(|r| r.as_ref().map_or( + false, + |r| r.wasm_method == wasm_method && + r.code_hash == code_hash && + r.heap_pages == heap_pages + )); - trace!( - target: "runtimes_cache", - "{} were changed. Reinstantiating the instance", - changed, - ); - *result = create_versioned_wasm_runtime( - ext, - wasm_method, - heap_pages, - host_functions.into(), - ); - if let Err(ref err) = result { - warn!(target: "runtimes_cache", "cannot create a runtime: {:?}", err); - } + let runtime = match pos { + Some(n) => runtimes[n] + .clone() + .expect("`position` only returns `Some` for entries that are `Some`"), + None => { + let code = match code { + CodeSource::Externalities => { + Cow::Owned(ext.original_storage(well_known_keys::CODE) + .ok_or(WasmError::CodeNotFound)?) } - } - result - }, - Entry::Vacant(v) => { - trace!(target: "runtimes_cache", "no instance found in cache, creating now."); + CodeSource::Custom(code) => { + Cow::Borrowed(code) + } + }; + let result = create_versioned_wasm_runtime( + &code, + code_hash, ext, wasm_method, heap_pages, host_functions.into(), + allow_missing_func_imports, ); if let Err(ref err) = result { - warn!(target: "runtimes_cache", "cannot create a runtime: {:?}", err); + log::warn!(target: "wasm-runtime", "Cannot create a runtime: {:?}", err); } - v.insert(result) + Arc::new(result?) } }; - result.as_mut() - .map(|entry| (entry.runtime.as_mut(), &entry.version, code_hash)) - .map_err(|ref e| Error::InvalidCode(format!("{:?}", e))) - } + // Rearrange runtimes by last recently used. + match pos { + Some(0) => {}, + Some(n) => { + for i in (1 .. n + 1).rev() { + runtimes.swap(i, i - 1); + } + } + None => { + runtimes[MAX_RUNTIMES-1] = Some(runtime.clone()); + for i in (1 .. MAX_RUNTIMES).rev() { + runtimes.swap(i, i - 1); + } + } + } + drop(runtimes); - /// Invalidate the runtime for the given `wasm_method` and `code_hash`. - /// - /// Invalidation of a runtime is useful when there was a `panic!` in native while executing it. - /// The `panic!` maybe have brought the runtime into a poisoned state and so, it is better to - /// invalidate this runtime instance. - pub fn invalidate_runtime( - &mut self, - wasm_method: WasmExecutionMethod, - code_hash: Vec, - ) { - // Just remove the instance, it will be re-created the next time it is requested. - self.instances.remove(&(wasm_method, code_hash)); + let result = { + // Find a free instance + let instance_pool = runtime.instances.read().clone(); + let instance = instance_pool + .iter() + .find_map(|i| i.as_ref().and_then(|i| i.try_lock())); + if let Some(mut locked) = instance { + let result = f(&**locked, runtime.version.as_ref(), ext); + if let Err(e) = &result { + log::warn!(target: "wasm-runtime", "Evicting failed runtime instance: {:?}", e); + *locked = runtime.module.new_instance()?; + } + result + } else { + // Allocate a new instance + let instance = runtime.module.new_instance()?; + + let result = f(&*instance, runtime.version.as_ref(), ext); + match &result { + Ok(_) => { + let mut instance_pool = runtime.instances.write(); + if let Some(ref mut slot) = instance_pool.iter_mut().find(|s| s.is_none()) { + **slot = Some(Arc::new(Mutex::new(instance))); + log::debug!( + target: "wasm-runtime", + "Allocated WASM instance {}/{}", + instance_pool.len(), + MAX_INSTANCES, + ); + } else { + log::warn!(target: "wasm-runtime", "Ran out of free WASM instances"); + } + } + Err(e) => { + log::warn!( + target: + "wasm-runtime", + "Fresh runtime instance failed with {:?}", + e, + ); + } + } + result + } + }; + + Ok(result) } } @@ -194,28 +268,43 @@ pub fn create_wasm_runtime_with_code( code: &[u8], host_functions: Vec<&'static dyn Function>, allow_missing_func_imports: bool, -) -> Result, WasmError> { +) -> Result, WasmError> { match wasm_method { WasmExecutionMethod::Interpreted => - sc_executor_wasmi::create_instance(code, heap_pages, host_functions, allow_missing_func_imports) - .map(|runtime| -> Box { Box::new(runtime) }), + sc_executor_wasmi::create_runtime( + code, + heap_pages, + host_functions, + allow_missing_func_imports + ).map(|runtime| -> Box { Box::new(runtime) }), #[cfg(feature = "wasmtime")] WasmExecutionMethod::Compiled => - sc_executor_wasmtime::create_instance(code, heap_pages, host_functions, allow_missing_func_imports) - .map(|runtime| -> Box { Box::new(runtime) }), + sc_executor_wasmtime::create_runtime( + code, + heap_pages, + host_functions, + allow_missing_func_imports + ).map(|runtime| -> Box { Box::new(runtime) }), } } -fn create_versioned_wasm_runtime( - ext: &mut E, +fn create_versioned_wasm_runtime( + code: &[u8], + code_hash: Vec, + ext: &mut dyn Externalities, wasm_method: WasmExecutionMethod, heap_pages: u64, host_functions: Vec<&'static dyn Function>, + allow_missing_func_imports: bool, ) -> Result { - let code = ext - .original_storage(well_known_keys::CODE) - .ok_or(WasmError::CodeNotFound)?; - let mut runtime = create_wasm_runtime_with_code(wasm_method, heap_pages, &code, host_functions, false)?; + let time = std::time::Instant::now(); + let mut runtime = create_wasm_runtime_with_code( + wasm_method, + heap_pages, + &code, + host_functions, + allow_missing_func_imports, + )?; // Call to determine runtime version. let version_result = { @@ -224,21 +313,33 @@ fn create_versioned_wasm_runtime( // The following unwind safety assertion is OK because if the method call panics, the // runtime will be dropped. - let mut runtime = AssertUnwindSafe(runtime.as_mut()); + let runtime = AssertUnwindSafe(runtime.as_mut()); crate::native_executor::with_externalities_safe( &mut **ext, - move || runtime.call("Core_version", &[]) + move || runtime.new_instance()?.call("Core_version", &[]) ).map_err(|_| WasmError::Instantiation("panic in call to get runtime version".into()))? }; - let encoded_version = version_result - .map_err(|e| WasmError::Instantiation(format!("failed to call \"Core_version\": {}", e)))?; - let version = RuntimeVersion::decode(&mut encoded_version.as_slice()) - .map_err(|_| WasmError::Instantiation("failed to decode \"Core_version\" result".into()))?; + let version = match version_result { + Ok(version) => Some(RuntimeVersion::decode(&mut version.as_slice()) + .map_err(|_| + WasmError::Instantiation("failed to decode \"Core_version\" result".into()) + )?), + Err(_) => None, + }; + log::debug!( + target: "wasm-runtime", + "Prepared new runtime version {:?} in {} ms.", + version, + time.elapsed().as_millis(), + ); Ok(VersionedRuntime { - runtime, + code_hash, + module: runtime, version, heap_pages, + wasm_method, + instances: Default::default(), }) } diff --git a/client/executor/wasmi/src/lib.rs b/client/executor/wasmi/src/lib.rs index a0e11dfcf8..6348c24133 100644 --- a/client/executor/wasmi/src/lib.rs +++ b/client/executor/wasmi/src/lib.rs @@ -14,10 +14,10 @@ // You should have received a copy of the GNU General Public License // along with Substrate. If not, see . -//! This crate provides an implementation of `WasmRuntime` that is baked by wasmi. +//! This crate provides an implementation of `WasmModule` that is baked by wasmi. use sc_executor_common::{error::{Error, WasmError}, sandbox}; -use std::{str, mem, cell::RefCell}; +use std::{str, mem, cell::RefCell, sync::Arc}; use wasmi::{ Module, ModuleInstance, MemoryInstance, MemoryRef, TableRef, ImportsBuilder, ModuleRef, memory_units::Pages, RuntimeValue::{I32, I64, self}, @@ -30,7 +30,7 @@ use sp_wasm_interface::{ FunctionContext, Pointer, WordSize, Sandbox, MemoryId, Result as WResult, Function, }; use sp_runtime_interface::unpack_ptr_and_len; -use sc_executor_common::wasm_runtime::WasmRuntime; +use sc_executor_common::wasm_runtime::{WasmModule, WasmInstance}; struct FunctionExecutor<'a> { sandbox_store: sandbox::Store, @@ -623,9 +623,77 @@ impl StateSnapshot { } } -/// A runtime along with its initial state snapshot. -#[derive(Clone)] +/// A runtime along with initial copy of data segments. pub struct WasmiRuntime { + /// A wasm module. + module: Module, + /// The host functions registered for this instance. + host_functions: Arc>, + /// Enable stub generation for functions that are not available in `host_functions`. + /// These stubs will error when the wasm blob tries to call them. + allow_missing_func_imports: bool, + /// Numer of heap pages this runtime uses. + heap_pages: u64, + /// Data segments created for each new instance. + data_segments: Vec, +} + +impl WasmModule for WasmiRuntime { + fn new_instance(&self) -> Result, Error> { + // Instantiate this module. + let (instance, missing_functions, memory) = instantiate_module( + self.heap_pages as usize, + &self.module, + &self.host_functions, + self.allow_missing_func_imports, + ).map_err(|e| WasmError::Instantiation(e.to_string()))?; + + // Take state snapshot before executing anything. + let state_snapshot = StateSnapshot::take(&instance, self.data_segments.clone()) + .expect( + "`take` returns `Err` if the module is not valid; + we already loaded module above, thus the `Module` is proven to be valid at this point; + qed + ", + ); + + Ok(Box::new(WasmiInstance { + instance, + memory, + state_snapshot, + host_functions: self.host_functions.clone(), + allow_missing_func_imports: self.allow_missing_func_imports, + missing_functions, + })) + } +} + +/// Create a new `WasmiRuntime` given the code. This function loads the module and +/// stores it in the instance. +pub fn create_runtime( + code: &[u8], + heap_pages: u64, + host_functions: Vec<&'static dyn Function>, + allow_missing_func_imports: bool, +) -> Result { + let module = Module::from_buffer(&code).map_err(|_| WasmError::InvalidModule)?; + + // Extract the data segments from the wasm code. + // + // A return of this error actually indicates that there is a problem in logic, since + // we just loaded and validated the `module` above. + let data_segments = extract_data_segments(&code)?; + Ok(WasmiRuntime { + module, + data_segments, + host_functions: Arc::new(host_functions), + allow_missing_func_imports, + heap_pages, + }) +} + +/// Wasmi instance wrapper along with the state snapshot. +pub struct WasmiInstance { /// A wasm module instance. instance: ModuleRef, /// The memory instance of used by the wasm module. @@ -633,7 +701,7 @@ pub struct WasmiRuntime { /// The snapshot of the instance's state taken just after the instantiation. state_snapshot: StateSnapshot, /// The host functions registered for this instance. - host_functions: Vec<&'static dyn Function>, + host_functions: Arc>, /// Enable stub generation for functions that are not available in `host_functions`. /// These stubs will error when the wasm blob tries to call them. allow_missing_func_imports: bool, @@ -641,13 +709,12 @@ pub struct WasmiRuntime { missing_functions: Vec, } -impl WasmRuntime for WasmiRuntime { - fn host_functions(&self) -> &[&'static dyn Function] { - &self.host_functions - } +// This is safe because `WasmiInstance` does not leak any references to `self.memory` and `self.instance` +unsafe impl Send for WasmiInstance {} +impl WasmInstance for WasmiInstance { fn call( - &mut self, + &self, method: &str, data: &[u8], ) -> Result, Error> { @@ -664,67 +731,26 @@ impl WasmRuntime for WasmiRuntime { &self.memory, method, data, - &self.host_functions, + self.host_functions.as_ref(), self.allow_missing_func_imports, - &self.missing_functions, + self.missing_functions.as_ref(), ) } - fn get_global_val(&self, name: &str) -> Result, Error> { + fn get_global_const(&self, name: &str) -> Result, Error> { match self.instance.export_by_name(name) { Some(global) => Ok(Some( global - .as_global() - .ok_or_else(|| format!("`{}` is not a global", name))? - .get() - .into() + .as_global() + .ok_or_else(|| format!("`{}` is not a global", name))? + .get() + .into() )), None => Ok(None), } } } -pub fn create_instance( - code: &[u8], - heap_pages: u64, - host_functions: Vec<&'static dyn Function>, - allow_missing_func_imports: bool, -) -> Result { - let module = Module::from_buffer(&code).map_err(|_| WasmError::InvalidModule)?; - - // Extract the data segments from the wasm code. - // - // A return of this error actually indicates that there is a problem in logic, since - // we just loaded and validated the `module` above. - let data_segments = extract_data_segments(&code)?; - - // Instantiate this module. - let (instance, missing_functions, memory) = instantiate_module( - heap_pages as usize, - &module, - &host_functions, - allow_missing_func_imports, - ).map_err(|e| WasmError::Instantiation(e.to_string()))?; - - // Take state snapshot before executing anything. - let state_snapshot = StateSnapshot::take(&instance, data_segments) - .expect( - "`take` returns `Err` if the module is not valid; - we already loaded module above, thus the `Module` is proven to be valid at this point; - qed - ", - ); - - Ok(WasmiRuntime { - instance, - memory, - state_snapshot, - host_functions, - allow_missing_func_imports, - missing_functions, - }) -} - /// Extract the data segments from the given wasm code. /// /// Returns `Err` if the given wasm code cannot be deserialized. diff --git a/client/executor/wasmtime/Cargo.toml b/client/executor/wasmtime/Cargo.toml index 57f4c2a842..9f8784cc98 100644 --- a/client/executor/wasmtime/Cargo.toml +++ b/client/executor/wasmtime/Cargo.toml @@ -10,7 +10,7 @@ description = "Defines a `WasmRuntime` that uses the Wasmtime JIT to execute." [dependencies] log = "0.4.8" -wasmi = "0.6.2" +scoped-tls = "1.0" parity-wasm = "0.41.0" codec = { package = "parity-scale-codec", version = "1.2.0" } sc-executor-common = { version = "0.8.0-alpha.2", path = "../common" } @@ -18,8 +18,7 @@ sp-wasm-interface = { version = "2.0.0-alpha.2", path = "../../../primitives/was sp-runtime-interface = { version = "2.0.0-alpha.2", path = "../../../primitives/runtime-interface" } sp-core = { version = "2.0.0-alpha.2", path = "../../../primitives/core" } sp-allocator = { version = "2.0.0-alpha.2", path = "../../../primitives/allocator" } - -wasmtime = "0.11" +wasmtime = { git = "https://github.com/paritytech/wasmtime", branch = "a-thread-safe-api" } [dev-dependencies] assert_matches = "1.3.0" diff --git a/client/executor/wasmtime/src/host.rs b/client/executor/wasmtime/src/host.rs index e0cc6ecc9a..29187ac663 100644 --- a/client/executor/wasmtime/src/host.rs +++ b/client/executor/wasmtime/src/host.rs @@ -19,7 +19,7 @@ use crate::instance_wrapper::InstanceWrapper; use crate::util; -use std::cell::RefCell; +use std::{cell::RefCell, rc::Rc}; use log::trace; use codec::{Encode, Decode}; use sp_allocator::FreeingBumpHeapAllocator; @@ -51,12 +51,12 @@ pub struct HostState { // borrow after performing necessary queries/changes. sandbox_store: RefCell>, allocator: RefCell, - instance: InstanceWrapper, + instance: Rc, } impl HostState { /// Constructs a new `HostState`. - pub fn new(allocator: FreeingBumpHeapAllocator, instance: InstanceWrapper) -> Self { + pub fn new(allocator: FreeingBumpHeapAllocator, instance: Rc) -> Self { HostState { sandbox_store: RefCell::new(sandbox::Store::new()), allocator: RefCell::new(allocator), @@ -64,11 +64,6 @@ impl HostState { } } - /// Destruct the host state and extract the `InstanceWrapper` passed at the creation. - pub fn into_instance(self) -> InstanceWrapper { - self.instance - } - /// Materialize `HostContext` that can be used to invoke a substrate host `dyn Function`. pub fn materialize<'a>(&'a self) -> HostContext<'a> { HostContext(self) diff --git a/client/executor/wasmtime/src/imports.rs b/client/executor/wasmtime/src/imports.rs index 349f84a0d7..48299ffd62 100644 --- a/client/executor/wasmtime/src/imports.rs +++ b/client/executor/wasmtime/src/imports.rs @@ -14,7 +14,7 @@ // You should have received a copy of the GNU General Public License // along with Substrate. If not, see . -use crate::state_holder::StateHolder; +use crate::state_holder; use sc_executor_common::error::WasmError; use sp_wasm_interface::{Function, Value, ValueType}; use std::any::Any; @@ -34,7 +34,6 @@ pub struct Imports { /// Goes over all imports of a module and prepares a vector of `Extern`s that can be used for /// instantiation of the module. Returns an error if there are imports that cannot be satisfied. pub fn resolve_imports( - state_holder: &StateHolder, module: &Module, host_functions: &[&'static dyn Function], heap_pages: u32, @@ -58,7 +57,6 @@ pub fn resolve_imports( } _ => resolve_func_import( module, - state_holder, import_ty, host_functions, allow_missing_func_imports, @@ -112,7 +110,6 @@ fn resolve_memory_import( fn resolve_func_import( module: &Module, - state_holder: &StateHolder, import_ty: &ImportType, host_functions: &[&'static dyn Function], allow_missing_func_imports: bool, @@ -152,7 +149,7 @@ fn resolve_func_import( ))); } - Ok(HostFuncHandler::new(&state_holder, *host_func).into_extern(module)) + Ok(HostFuncHandler::new(*host_func).into_extern(module)) } /// Returns `true` if `lhs` and `rhs` represent the same signature. @@ -163,14 +160,12 @@ fn signature_matches(lhs: &wasmtime::FuncType, rhs: &wasmtime::FuncType) -> bool /// This structure implements `Callable` and acts as a bridge between wasmtime and /// substrate host functions. struct HostFuncHandler { - state_holder: StateHolder, host_func: &'static dyn Function, } impl HostFuncHandler { - fn new(state_holder: &StateHolder, host_func: &'static dyn Function) -> Self { + fn new(host_func: &'static dyn Function) -> Self { Self { - state_holder: state_holder.clone(), host_func, } } @@ -188,7 +183,7 @@ impl Callable for HostFuncHandler { wasmtime_params: &[Val], wasmtime_results: &mut [Val], ) -> Result<(), wasmtime::Trap> { - let unwind_result = self.state_holder.with_context(|host_ctx| { + let unwind_result = state_holder::with_context(|host_ctx| { let mut host_ctx = host_ctx.expect( "host functions can be called only from wasm instance; wasm instance is always called initializing context; diff --git a/client/executor/wasmtime/src/lib.rs b/client/executor/wasmtime/src/lib.rs index 8f4801e6da..66e4e08523 100644 --- a/client/executor/wasmtime/src/lib.rs +++ b/client/executor/wasmtime/src/lib.rs @@ -23,4 +23,4 @@ mod imports; mod instance_wrapper; mod util; -pub use runtime::create_instance; +pub use runtime::create_runtime; diff --git a/client/executor/wasmtime/src/runtime.rs b/client/executor/wasmtime/src/runtime.rs index b99d334787..02acd33e69 100644 --- a/client/executor/wasmtime/src/runtime.rs +++ b/client/executor/wasmtime/src/runtime.rs @@ -15,57 +15,85 @@ // along with Substrate. If not, see . //! Defines the compiled Wasm runtime that uses Wasmtime internally. +use std::rc::Rc; +use std::sync::Arc; use crate::host::HostState; -use crate::imports::{resolve_imports, Imports}; +use crate::imports::{Imports, resolve_imports}; use crate::instance_wrapper::InstanceWrapper; -use crate::state_holder::StateHolder; +use crate::state_holder; use sc_executor_common::{ error::{Error, Result, WasmError}, - wasm_runtime::WasmRuntime, + wasm_runtime::{WasmModule, WasmInstance}, }; use sp_allocator::FreeingBumpHeapAllocator; use sp_runtime_interface::unpack_ptr_and_len; use sp_wasm_interface::{Function, Pointer, WordSize, Value}; use wasmtime::{Config, Engine, Module, Store}; -/// A `WasmRuntime` implementation using wasmtime to compile the runtime module to machine code +/// A `WasmModule` implementation using wasmtime to compile the runtime module to machine code /// and execute the compiled code. pub struct WasmtimeRuntime { - module: Module, - imports: Imports, - state_holder: StateHolder, + module: Arc, heap_pages: u32, + allow_missing_func_imports: bool, host_functions: Vec<&'static dyn Function>, } -impl WasmRuntime for WasmtimeRuntime { - fn host_functions(&self) -> &[&'static dyn Function] { - &self.host_functions +impl WasmModule for WasmtimeRuntime { + fn new_instance(&self) -> Result> { + // Scan all imports, find the matching host functions, and create stubs that adapt arguments + // and results. + let imports = resolve_imports( + &self.module, + &self.host_functions, + self.heap_pages, + self.allow_missing_func_imports, + )?; + + Ok(Box::new(WasmtimeInstance { + module: self.module.clone(), + imports, + heap_pages: self.heap_pages, + })) } +} + +/// A `WasmInstance` implementation that reuses compiled module and spawns instances +/// to execute the compiled code. +pub struct WasmtimeInstance { + module: Arc, + imports: Imports, + heap_pages: u32, +} + +// This is safe because `WasmtimeInstance` does not leak reference to `self.imports` +// and all imports don't reference any anything, other than host functions and memory +unsafe impl Send for WasmtimeInstance {} - fn call(&mut self, method: &str, data: &[u8]) -> Result> { +impl WasmInstance for WasmtimeInstance { + fn call(&self, method: &str, data: &[u8]) -> Result> { + // TODO: reuse the instance and reset globals after call + // https://github.com/paritytech/substrate/issues/5141 + let instance = Rc::new(InstanceWrapper::new(&self.module, &self.imports, self.heap_pages)?); call_method( - &self.module, - &mut self.imports, - &self.state_holder, + instance, method, data, - self.heap_pages, ) } - fn get_global_val(&self, name: &str) -> Result> { - // Yeah, there is no better way currently :( - InstanceWrapper::new(&self.module, &self.imports, self.heap_pages)? - .get_global_val(name) + fn get_global_const(&self, name: &str) -> Result> { + let instance = InstanceWrapper::new(&self.module, &self.imports, self.heap_pages)?; + instance.get_global_val(name) } } + /// Create a new `WasmtimeRuntime` given the code. This function performs translation from Wasm to /// machine code, which can be computationally heavy. -pub fn create_instance( +pub fn create_runtime( code: &[u8], heap_pages: u64, host_functions: Vec<&'static dyn Function>, @@ -80,55 +108,37 @@ pub fn create_instance( let module = Module::new(&store, code) .map_err(|e| WasmError::Other(format!("cannot create module: {}", e)))?; - let state_holder = StateHolder::empty(); - - // Scan all imports, find the matching host functions, and create stubs that adapt arguments - // and results. - let imports = resolve_imports( - &state_holder, - &module, - &host_functions, - heap_pages as u32, - allow_missing_func_imports, - )?; - Ok(WasmtimeRuntime { - module, - imports, - state_holder, + module: Arc::new(module), heap_pages: heap_pages as u32, + allow_missing_func_imports, host_functions, }) } /// Call a function inside a precompiled Wasm module. fn call_method( - module: &Module, - imports: &mut Imports, - state_holder: &StateHolder, + instance_wrapper: Rc, method: &str, data: &[u8], - heap_pages: u32, ) -> Result> { - let instance_wrapper = InstanceWrapper::new(module, imports, heap_pages)?; let entrypoint = instance_wrapper.resolve_entrypoint(method)?; let heap_base = instance_wrapper.extract_heap_base()?; let allocator = FreeingBumpHeapAllocator::new(heap_base); - perform_call(data, state_holder, instance_wrapper, entrypoint, allocator) + perform_call(data, instance_wrapper, entrypoint, allocator) } fn perform_call( data: &[u8], - state_holder: &StateHolder, - instance_wrapper: InstanceWrapper, + instance_wrapper: Rc, entrypoint: wasmtime::Func, mut allocator: FreeingBumpHeapAllocator, ) -> Result> { let (data_ptr, data_len) = inject_input_data(&instance_wrapper, &mut allocator, data)?; - let host_state = HostState::new(allocator, instance_wrapper); - let (ret, host_state) = state_holder.with_initialized_state(host_state, || { + let host_state = HostState::new(allocator, instance_wrapper.clone()); + let ret = state_holder::with_initialized_state(&host_state, || { match entrypoint.call(&[ wasmtime::Val::I32(u32::from(data_ptr) as i32), wasmtime::Val::I32(u32::from(data_len) as i32), @@ -146,9 +156,7 @@ fn perform_call( } }); let (output_ptr, output_len) = ret?; - - let instance = host_state.into_instance(); - let output = extract_output_data(&instance, output_ptr, output_len)?; + let output = extract_output_data(&instance_wrapper, output_ptr, output_len)?; Ok(output) } diff --git a/client/executor/wasmtime/src/state_holder.rs b/client/executor/wasmtime/src/state_holder.rs index 57564ed3ec..42cb79e7a3 100644 --- a/client/executor/wasmtime/src/state_holder.rs +++ b/client/executor/wasmtime/src/state_holder.rs @@ -15,63 +15,29 @@ // along with Substrate. If not, see . use crate::host::{HostContext, HostState}; -use std::cell::RefCell; -use std::rc::Rc; -/// A common place to store a reference to the `HostState`. -/// -/// This structure is passed into each host function handler and retained in the implementation of -/// `WasmRuntime`. Whenever a call into a runtime method is initiated, the host state is populated -/// with the state for that runtime method call. +scoped_tls::scoped_thread_local!(static HOST_STATE: HostState); + +/// Provide `HostState` for the runtime method call and execute the given function `f`. /// -/// During the execution of the runtime method call, wasm can call imported host functions. When -/// that happens the host function handler gets a `HostContext` (obtainable through having a -/// `HostState` reference). -#[derive(Clone)] -pub struct StateHolder { - // This is `Some` only during a call. - state: Rc>>, +/// During the execution of the provided function `with_context` will be callable. +pub fn with_initialized_state(s: &HostState, f: F) -> R +where + F: FnOnce() -> R, +{ + HOST_STATE.set(s, f) } -impl StateHolder { - /// Create a placeholder `StateHolder`. - pub fn empty() -> StateHolder { - StateHolder { - state: Rc::new(RefCell::new(None)), - } - } - - /// Provide `HostState` for the runtime method call and execute the given function `f`. - /// - /// During the execution of the provided function `with_context` will be callable. - pub fn with_initialized_state(&self, state: HostState, f: F) -> (R, HostState) - where - F: FnOnce() -> R, - { - *self.state.borrow_mut() = Some(state); - - let ret = f(); - let state = self - .state - .borrow_mut() - .take() - .expect("cannot be None since was just assigned; qed"); - - (ret, state) - } - - /// Create a `HostContext` from the contained `HostState` and execute the given function `f`. - /// - /// This function is only callable within closure passed to `init_state`. Otherwise, the passed - /// context will be `None`. - pub fn with_context(&self, f: F) -> R - where - F: FnOnce(Option) -> R, - { - let state = self.state.borrow(); - match *state { - Some(ref state) => f(Some(state.materialize())), - None => f(None), - } +/// Create a `HostContext` from the contained `HostState` and execute the given function `f`. +/// +/// This function is only callable within closure passed to `init_state`. Otherwise, the passed +/// context will be `None`. +pub fn with_context(f: F) -> R +where + F: FnOnce(Option) -> R, +{ + if !HOST_STATE.is_set() { + return f(None) } + HOST_STATE.with(|state| f(Some(state.materialize()))) } diff --git a/primitives/core/src/traits.rs b/primitives/core/src/traits.rs index bd02d39fb5..e86a0234bf 100644 --- a/primitives/core/src/traits.rs +++ b/primitives/core/src/traits.rs @@ -92,12 +92,11 @@ pub trait CodeExecutor: Sized + Send + Sync + CallInWasm + Clone + 'static { /// Call a given method in the runtime. Returns a tuple of the result (either the output data /// or an execution error) together with a `bool`, which is true if native execution was used. fn call< - E: Externalities, R: codec::Codec + PartialEq, NC: FnOnce() -> Result + UnwindSafe, >( &self, - ext: &mut E, + ext: &mut dyn Externalities, method: &str, data: &[u8], use_native: bool, diff --git a/primitives/runtime-interface/test/src/lib.rs b/primitives/runtime-interface/test/src/lib.rs index 01fc0a46b7..014a46e9d7 100644 --- a/primitives/runtime-interface/test/src/lib.rs +++ b/primitives/runtime-interface/test/src/lib.rs @@ -22,26 +22,27 @@ use sp_runtime_interface::*; use sp_runtime_interface_test_wasm::{WASM_BINARY, test_api::HostFunctions}; use sp_wasm_interface::HostFunctions as HostFunctionsT; +use sc_executor::CallInWasm; type TestExternalities = sp_state_machine::TestExternalities; fn call_wasm_method(method: &str) -> TestExternalities { let mut ext = TestExternalities::default(); let mut ext_ext = ext.ext(); + let mut host_functions = HF::host_functions(); + host_functions.extend(sp_io::SubstrateHostFunctions::host_functions()); - sc_executor::call_in_wasm::< - ( - HF, - sp_io::SubstrateHostFunctions, - ) - >( + let executor = sc_executor::WasmExecutor::new( + sc_executor::WasmExecutionMethod::Interpreted, + Some(8), + host_functions, + false, + ); + executor.call_in_wasm( + &WASM_BINARY[..], method, &[], - sc_executor::WasmExecutionMethod::Interpreted, &mut ext_ext, - &WASM_BINARY[..], - 8, - false, ).expect(&format!("Executes `{}`", method)); ext @@ -87,7 +88,7 @@ fn test_return_input_public_key() { #[test] #[should_panic( - expected = "Other(\"Instantiation: Export ext_test_api_return_input_version_1 not found\")" + expected = "\"Instantiation: Export ext_test_api_return_input_version_1 not found\"" )] fn host_function_not_found() { call_wasm_method::<()>("test_return_data"); @@ -96,8 +97,9 @@ fn host_function_not_found() { #[test] #[should_panic( expected = - "FunctionExecution(\"ext_test_api_invalid_utf8_data_version_1\", \ - \"Invalid utf8 data provided\")" + "Executes `test_invalid_utf8_data_should_return_an_error`: \ + \"Trap: Trap { kind: Host(FunctionExecution(\\\"ext_test_api_invalid_utf8_data_version_1\\\", \ + \\\"Invalid utf8 data provided\\\")) }\"" )] fn test_invalid_utf8_data_should_return_an_error() { call_wasm_method::("test_invalid_utf8_data_should_return_an_error"); diff --git a/primitives/state-machine/src/lib.rs b/primitives/state-machine/src/lib.rs index ce7fc243c1..ff41237c83 100644 --- a/primitives/state-machine/src/lib.rs +++ b/primitives/state-machine/src/lib.rs @@ -709,12 +709,11 @@ mod tests { type Error = u8; fn call< - E: Externalities, R: Encode + Decode + PartialEq, NC: FnOnce() -> result::Result, >( &self, - ext: &mut E, + ext: &mut dyn Externalities, _method: &str, _data: &[u8], use_native: bool, diff --git a/test-utils/runtime/src/system.rs b/test-utils/runtime/src/system.rs index b410d317a1..9eb501c4c8 100644 --- a/test-utils/runtime/src/system.rs +++ b/test-utils/runtime/src/system.rs @@ -401,7 +401,7 @@ mod tests { fn block_import_works_wasm() { block_import_works(|b, ext| { let mut ext = ext.ext(); - executor().call::<_, NeverNativeValue, fn() -> _>( + executor().call:: _>( &mut ext, "Core_execute_block", &b.encode(), @@ -494,7 +494,7 @@ mod tests { fn block_import_with_transaction_works_wasm() { block_import_with_transaction_works(|b, ext| { let mut ext = ext.ext(); - executor().call::<_, NeverNativeValue, fn() -> _>( + executor().call:: _>( &mut ext, "Core_execute_block", &b.encode(), -- GitLab From 2c1ce061cead424608d52a185bd25ee569be5e17 Mon Sep 17 00:00:00 2001 From: Gavin Wood Date: Thu, 5 Mar 2020 15:57:03 +0100 Subject: [PATCH 116/301] Introduce default-setting prime for collective (#5137) * Introduce default-setting prime for collective * Docs. * Elections phragmen supports prime * Fix * Membership supports prime * Fix * Update frame/collective/src/lib.rs Co-Authored-By: Shawn Tabrizi Co-authored-by: Shawn Tabrizi --- bin/node/runtime/src/lib.rs | 12 + frame/collective/src/lib.rs | 279 +++++++++++++++---- frame/elections-phragmen/src/lib.rs | 32 +++ frame/membership/src/lib.rs | 102 ++++++- frame/support/src/storage/generator/value.rs | 8 + frame/support/src/storage/mod.rs | 4 + frame/support/src/traits.rs | 12 + 7 files changed, 399 insertions(+), 50 deletions(-) diff --git a/bin/node/runtime/src/lib.rs b/bin/node/runtime/src/lib.rs index 1cc0a2b725..ae0de952e4 100644 --- a/bin/node/runtime/src/lib.rs +++ b/bin/node/runtime/src/lib.rs @@ -68,6 +68,7 @@ use impls::{CurrencyToVoteHandler, Author, LinearWeightToFee, TargetedFeeAdjustm /// Constant values used within the runtime. pub mod constants; use constants::{time::*, currency::*}; +use frame_system::Trait; // Make the WASM binary available. #[cfg(feature = "std")] @@ -330,11 +331,16 @@ impl pallet_democracy::Trait for Runtime { type Slash = Treasury; } +parameter_types! { + pub const CouncilMotionDuration: BlockNumber = 5 * DAYS; +} + type CouncilCollective = pallet_collective::Instance1; impl pallet_collective::Trait for Runtime { type Origin = Origin; type Proposal = Call; type Event = Event; + type MotionDuration = CouncilMotionDuration; } parameter_types! { @@ -360,11 +366,16 @@ impl pallet_elections_phragmen::Trait for Runtime { type TermDuration = TermDuration; } +parameter_types! { + pub const TechnicalMotionDuration: BlockNumber = 5 * DAYS; +} + type TechnicalCollective = pallet_collective::Instance2; impl pallet_collective::Trait for Runtime { type Origin = Origin; type Proposal = Call; type Event = Event; + type MotionDuration = TechnicalMotionDuration; } impl pallet_membership::Trait for Runtime { @@ -373,6 +384,7 @@ impl pallet_membership::Trait for Runtime { type RemoveOrigin = pallet_collective::EnsureProportionMoreThan<_1, _2, AccountId, CouncilCollective>; type SwapOrigin = pallet_collective::EnsureProportionMoreThan<_1, _2, AccountId, CouncilCollective>; type ResetOrigin = pallet_collective::EnsureProportionMoreThan<_1, _2, AccountId, CouncilCollective>; + type PrimeOrigin = pallet_collective::EnsureProportionMoreThan<_1, _2, AccountId, CouncilCollective>; type MembershipInitialized = TechnicalCommittee; type MembershipChanged = TechnicalCommittee; } diff --git a/frame/collective/src/lib.rs b/frame/collective/src/lib.rs index 605cda3cb7..b5620e3406 100644 --- a/frame/collective/src/lib.rs +++ b/frame/collective/src/lib.rs @@ -18,7 +18,20 @@ //! through dispatched calls from one of two specialized origins. //! //! The membership can be provided in one of two ways: either directly, using the Root-dispatchable -//! function `set_members`, or indirectly, through implementing the `ChangeMembers` +//! function `set_members`, or indirectly, through implementing the `ChangeMembers`. +//! +//! A "prime" member may be set allowing their vote to act as the default vote in case of any +//! abstentions after the voting period. +//! +//! Voting happens through motions comprising a proposal (i.e. a curried dispatchable) plus a +//! number of approvals required for it to pass and be called. Motions are open for members to +//! vote on for a minimum period given by `MotionDuration`. As soon as the needed number of +//! approvals is given, the motion is closed and executed. If the number of approvals is not reached +//! during the voting period, then `close` may be called by any account in order to force the end +//! the motion explicitly. If a prime member is defined then their vote is used in place of any +//! abstentions and the proposal is executed if there are enough approvals counting the new votes. +//! +//! If there are not, or if no prime is set, then the motion is dropped without being executed. #![cfg_attr(not(feature = "std"), no_std)] #![recursion_limit="128"] @@ -30,7 +43,7 @@ use sp_runtime::traits::{Hash, EnsureOrigin}; use frame_support::weights::SimpleDispatchInfo; use frame_support::{ dispatch::{Dispatchable, Parameter}, codec::{Encode, Decode}, - traits::{ChangeMembers, InitializeMembers}, decl_module, decl_event, + traits::{Get, ChangeMembers, InitializeMembers}, decl_module, decl_event, decl_storage, decl_error, ensure, }; use frame_system::{self as system, ensure_signed, ensure_root}; @@ -53,6 +66,9 @@ pub trait Trait: frame_system::Trait { /// The outer event type. type Event: From> + Into<::Event>; + + /// The time-out for council motions. + type MotionDuration: Get; } /// Origin for the collective module. @@ -71,7 +87,7 @@ pub type Origin = RawOrigin<::Ac #[derive(PartialEq, Eq, Clone, Encode, Decode, RuntimeDebug)] /// Info for keeping track of a motion being voted on. -pub struct Votes { +pub struct Votes { /// The proposal's unique index. index: ProposalIndex, /// The number of approval votes that are needed to pass the motion. @@ -80,6 +96,8 @@ pub struct Votes { ayes: Vec, /// The current set of voters that rejected it. nays: Vec, + /// The hard end time of this vote. + end: BlockNumber, } decl_storage! { @@ -91,11 +109,14 @@ decl_storage! { map hasher(blake2_256) T::Hash => Option<>::Proposal>; /// Votes on a given proposal, if it is ongoing. pub Voting get(fn voting): - map hasher(blake2_256) T::Hash => Option>; + map hasher(blake2_256) T::Hash => Option>; /// Proposals so far. pub ProposalCount get(fn proposal_count): u32; /// The current members of the collective. This is stored sorted (just by value). pub Members get(fn members): Vec; + /// The member who provides the default vote for any other members that do not vote before + /// the timeout. If None, then no member has that privilege. + pub Prime get(fn prime): Option; } add_extra_genesis { config(phantom): sp_std::marker::PhantomData; @@ -123,6 +144,8 @@ decl_event! { Executed(Hash, bool), /// A single member did some action; `bool` is true if returned without error. MemberExecuted(Hash, bool), + /// A proposal was closed after its duration was up. + Closed(Hash, MemberCount, MemberCount), } } @@ -140,6 +163,8 @@ decl_error! { DuplicateVote, /// Members are already initialized! AlreadyInitialized, + /// The close call is made too early, before the end of the voting. + TooEarly, } } @@ -152,19 +177,21 @@ decl_module! { fn deposit_event() = default; - /// Set the collective's membership manually to `new_members`. Be nice to the chain and - /// provide it pre-sorted. + /// Set the collective's membership. + /// + /// - `new_members`: The new member list. Be nice to the chain and + // provide it sorted. + /// - `prime`: The prime member whose vote sets the default. /// /// Requires root origin. #[weight = SimpleDispatchInfo::FixedOperational(100_000)] - fn set_members(origin, new_members: Vec) { + fn set_members(origin, new_members: Vec, prime: Option) { ensure_root(origin)?; let mut new_members = new_members; new_members.sort(); - >::mutate(|m| { - >::set_members_sorted(&new_members[..], m); - *m = new_members; - }); + let old = Members::::get(); + >::set_members_sorted(&new_members[..], &old); + Prime::::set(prime); } /// Dispatch a proposal from a member using the `Member` origin. @@ -202,7 +229,8 @@ decl_module! { >::mutate(|i| *i += 1); >::mutate(|proposals| proposals.push(proposal_hash)); >::insert(proposal_hash, *proposal); - let votes = Votes { index, threshold, ayes: vec![who.clone()], nays: vec![] }; + let end = system::Module::::block_number() + T::MotionDuration::get(); + let votes = Votes { index, threshold, ayes: vec![who.clone()], nays: vec![], end }; >::insert(proposal_hash, votes); Self::deposit_event(RawEvent::Proposed(who, index, proposal_hash, threshold)); @@ -249,32 +277,55 @@ decl_module! { Self::deposit_event(RawEvent::Voted(who, proposal, approve, yes_votes, no_votes)); let seats = Self::members().len() as MemberCount; + let approved = yes_votes >= voting.threshold; let disapproved = seats.saturating_sub(no_votes) < voting.threshold; if approved || disapproved { - if approved { - Self::deposit_event(RawEvent::Approved(proposal)); - - // execute motion, assuming it exists. - if let Some(p) = >::take(&proposal) { - let origin = RawOrigin::Members(voting.threshold, seats).into(); - let ok = p.dispatch(origin).is_ok(); - Self::deposit_event(RawEvent::Executed(proposal, ok)); - } - } else { - // disapproved - >::remove(&proposal); - Self::deposit_event(RawEvent::Disapproved(proposal)); - } - - // remove vote - >::remove(&proposal); - >::mutate(|proposals| proposals.retain(|h| h != &proposal)); + Self::finalize_proposal(approved, seats, voting, proposal); } else { - // update voting - >::insert(&proposal, voting); + Voting::::insert(&proposal, voting); } } + + /// May be called by any signed account after the voting duration has ended in order to + /// finish voting and close the proposal. + /// + /// Abstentions are counted as rejections unless there is a prime member set and the prime + /// member cast an approval. + /// + /// - the weight of `proposal` preimage. + /// - up to three events deposited. + /// - one read, two removals, one mutation. (plus three static reads.) + /// - computation and i/o `O(P + L + M)` where: + /// - `M` is number of members, + /// - `P` is number of active proposals, + /// - `L` is the encoded length of `proposal` preimage. + #[weight = SimpleDispatchInfo::FixedOperational(200_000)] + fn close(origin, proposal: T::Hash, #[compact] index: ProposalIndex) { + let _ = ensure_signed(origin)?; + + let voting = Self::voting(&proposal).ok_or(Error::::ProposalMissing)?; + ensure!(voting.index == index, Error::::WrongIndex); + ensure!(system::Module::::block_number() >= voting.end, Error::::TooEarly); + + // default to true only if there's a prime and they voted in favour. + let default = Self::prime().map_or( + false, + |who| voting.ayes.iter().any(|a| a == &who), + ); + + let mut no_votes = voting.nays.len() as MemberCount; + let mut yes_votes = voting.ayes.len() as MemberCount; + let seats = Self::members().len() as MemberCount; + let abstentions = seats - (yes_votes + no_votes); + match default { + true => yes_votes += abstentions, + false => no_votes += abstentions, + } + + Self::deposit_event(RawEvent::Closed(proposal, yes_votes, no_votes)); + Self::finalize_proposal(yes_votes >= voting.threshold, seats, voting, proposal); + } } } @@ -282,10 +333,54 @@ impl, I: Instance> Module { pub fn is_member(who: &T::AccountId) -> bool { Self::members().contains(who) } + + /// Weight: + /// If `approved`: + /// - the weight of `proposal` preimage. + /// - two events deposited. + /// - two removals, one mutation. + /// - computation and i/o `O(P + L)` where: + /// - `P` is number of active proposals, + /// - `L` is the encoded length of `proposal` preimage. + /// + /// If not `approved`: + /// - one event deposited. + /// Two removals, one mutation. + /// Computation and i/o `O(P)` where: + /// - `P` is number of active proposals + fn finalize_proposal( + approved: bool, + seats: MemberCount, + voting: Votes, + proposal: T::Hash, + ) { + if approved { + Self::deposit_event(RawEvent::Approved(proposal)); + + // execute motion, assuming it exists. + if let Some(p) = ProposalOf::::take(&proposal) { + let origin = RawOrigin::Members(voting.threshold, seats).into(); + let ok = p.dispatch(origin).is_ok(); + Self::deposit_event(RawEvent::Executed(proposal, ok)); + } + } else { + // disapproved + ProposalOf::::remove(&proposal); + Self::deposit_event(RawEvent::Disapproved(proposal)); + } + + // remove vote + Voting::::remove(&proposal); + Proposals::::mutate(|proposals| proposals.retain(|h| h != &proposal)); + } } impl, I: Instance> ChangeMembers for Module { - fn change_members_sorted(_incoming: &[T::AccountId], outgoing: &[T::AccountId], new: &[T::AccountId]) { + fn change_members_sorted( + _incoming: &[T::AccountId], + outgoing: &[T::AccountId], + new: &[T::AccountId], + ) { // remove accounts from all current voting in motions. let mut outgoing = outgoing.to_vec(); outgoing.sort_unstable(); @@ -302,7 +397,12 @@ impl, I: Instance> ChangeMembers for Module { } ); } - >::put(new); + Members::::put(new); + Prime::::kill(); + } + + fn set_prime(prime: Option) { + Prime::::set(prime); } } @@ -415,6 +515,7 @@ mod tests { pub const MaximumBlockWeight: Weight = 1024; pub const MaximumBlockLength: u32 = 2 * 1024; pub const AvailableBlockRatio: Perbill = Perbill::one(); + pub const MotionDuration: u64 = 3; } impl frame_system::Trait for Test { type Origin = Origin; @@ -441,11 +542,13 @@ mod tests { type Origin = Origin; type Proposal = Call; type Event = Event; + type MotionDuration = MotionDuration; } impl Trait for Test { type Origin = Origin; type Proposal = Call; type Event = Event; + type MotionDuration = MotionDuration; } pub type Block = sp_runtime::generic::Block; @@ -486,22 +589,101 @@ mod tests { Call::System(frame_system::Call::remark(value.encode())) } + #[test] + fn close_works() { + make_ext().execute_with(|| { + System::set_block_number(1); + let proposal = make_proposal(42); + let hash = BlakeTwo256::hash_of(&proposal); + + assert_ok!(Collective::propose(Origin::signed(1), 3, Box::new(proposal.clone()))); + assert_ok!(Collective::vote(Origin::signed(2), hash.clone(), 0, true)); + + System::set_block_number(3); + assert_noop!( + Collective::close(Origin::signed(4), hash.clone(), 0), + Error::::TooEarly + ); + + System::set_block_number(4); + assert_ok!(Collective::close(Origin::signed(4), hash.clone(), 0)); + + let record = |event| EventRecord { phase: Phase::Finalization, event, topics: vec![] }; + assert_eq!(System::events(), vec![ + record(Event::collective_Instance1(RawEvent::Proposed(1, 0, hash.clone(), 3))), + record(Event::collective_Instance1(RawEvent::Voted(2, hash.clone(), true, 2, 0))), + record(Event::collective_Instance1(RawEvent::Closed(hash.clone(), 2, 1))), + record(Event::collective_Instance1(RawEvent::Disapproved(hash.clone()))) + ]); + }); + } + + #[test] + fn close_with_prime_works() { + make_ext().execute_with(|| { + System::set_block_number(1); + let proposal = make_proposal(42); + let hash = BlakeTwo256::hash_of(&proposal); + assert_ok!(Collective::set_members(Origin::ROOT, vec![1, 2, 3], Some(3))); + + assert_ok!(Collective::propose(Origin::signed(1), 3, Box::new(proposal.clone()))); + assert_ok!(Collective::vote(Origin::signed(2), hash.clone(), 0, true)); + + System::set_block_number(4); + assert_ok!(Collective::close(Origin::signed(4), hash.clone(), 0)); + + let record = |event| EventRecord { phase: Phase::Finalization, event, topics: vec![] }; + assert_eq!(System::events(), vec![ + record(Event::collective_Instance1(RawEvent::Proposed(1, 0, hash.clone(), 3))), + record(Event::collective_Instance1(RawEvent::Voted(2, hash.clone(), true, 2, 0))), + record(Event::collective_Instance1(RawEvent::Closed(hash.clone(), 2, 1))), + record(Event::collective_Instance1(RawEvent::Disapproved(hash.clone()))) + ]); + }); + } + + #[test] + fn close_with_voting_prime_works() { + make_ext().execute_with(|| { + System::set_block_number(1); + let proposal = make_proposal(42); + let hash = BlakeTwo256::hash_of(&proposal); + assert_ok!(Collective::set_members(Origin::ROOT, vec![1, 2, 3], Some(1))); + + assert_ok!(Collective::propose(Origin::signed(1), 3, Box::new(proposal.clone()))); + assert_ok!(Collective::vote(Origin::signed(2), hash.clone(), 0, true)); + + System::set_block_number(4); + assert_ok!(Collective::close(Origin::signed(4), hash.clone(), 0)); + + let record = |event| EventRecord { phase: Phase::Finalization, event, topics: vec![] }; + assert_eq!(System::events(), vec![ + record(Event::collective_Instance1(RawEvent::Proposed(1, 0, hash.clone(), 3))), + record(Event::collective_Instance1(RawEvent::Voted(2, hash.clone(), true, 2, 0))), + record(Event::collective_Instance1(RawEvent::Closed(hash.clone(), 3, 0))), + record(Event::collective_Instance1(RawEvent::Approved(hash.clone()))), + record(Event::collective_Instance1(RawEvent::Executed(hash.clone(), false))) + ]); + }); + } + #[test] fn removal_of_old_voters_votes_works() { make_ext().execute_with(|| { System::set_block_number(1); let proposal = make_proposal(42); let hash = BlakeTwo256::hash_of(&proposal); + let end = 4; assert_ok!(Collective::propose(Origin::signed(1), 3, Box::new(proposal.clone()))); assert_ok!(Collective::vote(Origin::signed(2), hash.clone(), 0, true)); assert_eq!( Collective::voting(&hash), - Some(Votes { index: 0, threshold: 3, ayes: vec![1, 2], nays: vec![] }) + Some(Votes { index: 0, threshold: 3, ayes: vec![1, 2], nays: vec![], end }) ); Collective::change_members_sorted(&[4], &[1], &[2, 3, 4]); assert_eq!( Collective::voting(&hash), - Some(Votes { index: 0, threshold: 3, ayes: vec![2], nays: vec![] }) + Some(Votes { index: 0, threshold: 3, ayes: vec![2], nays: vec![], end }) ); let proposal = make_proposal(69); @@ -510,12 +692,12 @@ mod tests { assert_ok!(Collective::vote(Origin::signed(3), hash.clone(), 1, false)); assert_eq!( Collective::voting(&hash), - Some(Votes { index: 1, threshold: 2, ayes: vec![2], nays: vec![3] }) + Some(Votes { index: 1, threshold: 2, ayes: vec![2], nays: vec![3], end }) ); Collective::change_members_sorted(&[], &[3], &[2, 4]); assert_eq!( Collective::voting(&hash), - Some(Votes { index: 1, threshold: 2, ayes: vec![2], nays: vec![] }) + Some(Votes { index: 1, threshold: 2, ayes: vec![2], nays: vec![], end }) ); }); } @@ -526,16 +708,17 @@ mod tests { System::set_block_number(1); let proposal = make_proposal(42); let hash = BlakeTwo256::hash_of(&proposal); + let end = 4; assert_ok!(Collective::propose(Origin::signed(1), 3, Box::new(proposal.clone()))); assert_ok!(Collective::vote(Origin::signed(2), hash.clone(), 0, true)); assert_eq!( Collective::voting(&hash), - Some(Votes { index: 0, threshold: 3, ayes: vec![1, 2], nays: vec![] }) + Some(Votes { index: 0, threshold: 3, ayes: vec![1, 2], nays: vec![], end }) ); - assert_ok!(Collective::set_members(Origin::ROOT, vec![2, 3, 4])); + assert_ok!(Collective::set_members(Origin::ROOT, vec![2, 3, 4], None)); assert_eq!( Collective::voting(&hash), - Some(Votes { index: 0, threshold: 3, ayes: vec![2], nays: vec![] }) + Some(Votes { index: 0, threshold: 3, ayes: vec![2], nays: vec![], end }) ); let proposal = make_proposal(69); @@ -544,12 +727,12 @@ mod tests { assert_ok!(Collective::vote(Origin::signed(3), hash.clone(), 1, false)); assert_eq!( Collective::voting(&hash), - Some(Votes { index: 1, threshold: 2, ayes: vec![2], nays: vec![3] }) + Some(Votes { index: 1, threshold: 2, ayes: vec![2], nays: vec![3], end }) ); - assert_ok!(Collective::set_members(Origin::ROOT, vec![2, 4])); + assert_ok!(Collective::set_members(Origin::ROOT, vec![2, 4], None)); assert_eq!( Collective::voting(&hash), - Some(Votes { index: 1, threshold: 2, ayes: vec![2], nays: vec![] }) + Some(Votes { index: 1, threshold: 2, ayes: vec![2], nays: vec![], end }) ); }); } @@ -560,12 +743,13 @@ mod tests { System::set_block_number(1); let proposal = make_proposal(42); let hash = proposal.blake2_256().into(); + let end = 4; assert_ok!(Collective::propose(Origin::signed(1), 3, Box::new(proposal.clone()))); assert_eq!(Collective::proposals(), vec![hash]); assert_eq!(Collective::proposal_of(&hash), Some(proposal)); assert_eq!( Collective::voting(&hash), - Some(Votes { index: 0, threshold: 3, ayes: vec![1], nays: vec![] }) + Some(Votes { index: 0, threshold: 3, ayes: vec![1], nays: vec![], end }) ); assert_eq!(System::events(), vec![ @@ -629,10 +813,11 @@ mod tests { System::set_block_number(1); let proposal = make_proposal(42); let hash: H256 = proposal.blake2_256().into(); + let end = 4; assert_ok!(Collective::propose(Origin::signed(1), 2, Box::new(proposal.clone()))); assert_eq!( Collective::voting(&hash), - Some(Votes { index: 0, threshold: 2, ayes: vec![1], nays: vec![] }) + Some(Votes { index: 0, threshold: 2, ayes: vec![1], nays: vec![], end }) ); assert_noop!( Collective::vote(Origin::signed(1), hash.clone(), 0, true), @@ -641,7 +826,7 @@ mod tests { assert_ok!(Collective::vote(Origin::signed(1), hash.clone(), 0, false)); assert_eq!( Collective::voting(&hash), - Some(Votes { index: 0, threshold: 2, ayes: vec![], nays: vec![1] }) + Some(Votes { index: 0, threshold: 2, ayes: vec![], nays: vec![1], end }) ); assert_noop!( Collective::vote(Origin::signed(1), hash.clone(), 0, false), diff --git a/frame/elections-phragmen/src/lib.rs b/frame/elections-phragmen/src/lib.rs index a9474ae844..55b7b3f128 100644 --- a/frame/elections-phragmen/src/lib.rs +++ b/frame/elections-phragmen/src/lib.rs @@ -690,6 +690,7 @@ impl Module { // split new set into winners and runners up. let split_point = desired_seats.min(new_set_with_stake.len()); let mut new_members = (&new_set_with_stake[..split_point]).to_vec(); + let most_popular = new_members.first().map(|x| x.0.clone()); // save the runners up as-is. They are sorted based on desirability. // sort and save the members. @@ -722,6 +723,7 @@ impl Module { &outgoing.clone(), &new_members_ids, ); + T::ChangeMembers::set_prime(most_popular); // outgoing candidates lose their bond. let mut to_burn_bond = outgoing.to_vec(); @@ -864,6 +866,7 @@ mod tests { thread_local! { pub static MEMBERS: RefCell> = RefCell::new(vec![]); + pub static PRIME: RefCell> = RefCell::new(None); } pub struct TestChangeMembers; @@ -898,6 +901,11 @@ mod tests { assert_eq!(old_plus_incoming, new_plus_outgoing); MEMBERS.with(|m| *m.borrow_mut() = new.to_vec()); + PRIME.with(|p| *p.borrow_mut() = None); + } + + fn set_prime(who: Option) { + PRIME.with(|p| *p.borrow_mut() = who); } } @@ -1250,6 +1258,30 @@ mod tests { }); } + #[test] + fn prime_works() { + ExtBuilder::default().build().execute_with(|| { + assert_ok!(Elections::submit_candidacy(Origin::signed(3))); + assert_ok!(Elections::submit_candidacy(Origin::signed(4))); + assert_ok!(Elections::submit_candidacy(Origin::signed(5))); + + assert_ok!(Elections::vote(Origin::signed(1), vec![4, 3], 10)); + assert_ok!(Elections::vote(Origin::signed(2), vec![4], 20)); + assert_ok!(Elections::vote(Origin::signed(3), vec![3], 30)); + assert_ok!(Elections::vote(Origin::signed(4), vec![4], 40)); + assert_ok!(Elections::vote(Origin::signed(5), vec![5], 50)); + + System::set_block_number(5); + assert_ok!(Elections::end_block(System::block_number())); + + assert_eq!(Elections::members_ids(), vec![4, 5]); + assert_eq!(Elections::candidates(), vec![]); + + assert_ok!(Elections::vote(Origin::signed(3), vec![4, 5], 10)); + assert_eq!(PRIME.with(|p| *p.borrow()), Some(4)); + }); + } + #[test] fn cannot_vote_for_more_than_candidates() { ExtBuilder::default().build().execute_with(|| { diff --git a/frame/membership/src/lib.rs b/frame/membership/src/lib.rs index c39055c1bc..129f3c4003 100644 --- a/frame/membership/src/lib.rs +++ b/frame/membership/src/lib.rs @@ -17,7 +17,7 @@ //! # Membership Module //! //! Allows control of membership of a set of `AccountId`s, useful for managing membership of of a -//! collective. +//! collective. A prime member may be set. // Ensure we're `no_std` when compiling for Wasm. #![cfg_attr(not(feature = "std"), no_std)] @@ -47,6 +47,9 @@ pub trait Trait: frame_system::Trait { /// Required origin for resetting membership. type ResetOrigin: EnsureOrigin; + /// Required origin for setting or resetting the prime member. + type PrimeOrigin: EnsureOrigin; + /// The receiver of the signal for when the membership has been initialized. This happens pre- /// genesis and will usually be the same as `MembershipChanged`. If you need to do something /// different on initialization, then you can change this accordingly. @@ -60,6 +63,9 @@ decl_storage! { trait Store for Module, I: Instance=DefaultInstance> as Membership { /// The current membership, stored as an ordered Vec. Members get(fn members): Vec; + + /// The current prime member, if one exists. + Prime get(fn prime): Option; } add_extra_genesis { config(members): Vec; @@ -144,6 +150,7 @@ decl_module! { >::put(&members); T::MembershipChanged::change_members_sorted(&[], &[who], &members[..]); + Self::rejig_prime(&members); Self::deposit_event(RawEvent::MemberRemoved); } @@ -151,6 +158,8 @@ decl_module! { /// Swap out one member `remove` for another `add`. /// /// May only be called from `SwapOrigin` or root. + /// + /// Prime membership is *not* passed from `remove` to `add`, if extant. #[weight = SimpleDispatchInfo::FixedNormal(50_000)] fn swap_member(origin, remove: T::AccountId, add: T::AccountId) { T::SwapOrigin::try_origin(origin) @@ -171,6 +180,7 @@ decl_module! { &[remove], &members[..], ); + Self::rejig_prime(&members); Self::deposit_event(RawEvent::MembersSwapped); } @@ -189,15 +199,19 @@ decl_module! { members.sort(); >::mutate(|m| { T::MembershipChanged::set_members_sorted(&members[..], m); + Self::rejig_prime(&members); *m = members; }); + Self::deposit_event(RawEvent::MembersReset); } /// Swap out the sending member for some other key `new`. /// /// May only be called from `Signed` origin of a current member. + /// + /// Prime membership is passed from the origin account to `new`, if extant. #[weight = SimpleDispatchInfo::FixedNormal(50_000)] fn change_key(origin, new: T::AccountId) { let remove = ensure_signed(origin)?; @@ -211,14 +225,51 @@ decl_module! { >::put(&members); T::MembershipChanged::change_members_sorted( - &[new], - &[remove], + &[new.clone()], + &[remove.clone()], &members[..], ); + + if Prime::::get() == Some(remove) { + Prime::::put(&new); + T::MembershipChanged::set_prime(Some(new)); + } } Self::deposit_event(RawEvent::KeyChanged); } + + /// Set the prime member. Must be a current member. + #[weight = SimpleDispatchInfo::FixedNormal(50_000)] + fn set_prime(origin, who: T::AccountId) { + T::PrimeOrigin::try_origin(origin) + .map(|_| ()) + .or_else(ensure_root)?; + Self::members().binary_search(&who).ok().ok_or(Error::::NotMember)?; + Prime::::put(&who); + T::MembershipChanged::set_prime(Some(who)); + } + + /// Remove the prime member if it exists. + #[weight = SimpleDispatchInfo::FixedNormal(50_000)] + fn clear_prime(origin) { + T::PrimeOrigin::try_origin(origin) + .map(|_| ()) + .or_else(ensure_root)?; + Prime::::kill(); + T::MembershipChanged::set_prime(None); + } + } +} + +impl, I: Instance> Module { + fn rejig_prime(members: &[T::AccountId]) { + if let Some(prime) = Prime::::get() { + match members.binary_search(&prime) { + Ok(_) => T::MembershipChanged::set_prime(Some(prime)), + Err(_) => Prime::::kill(), + } + } } } @@ -283,6 +334,7 @@ mod tests { thread_local! { static MEMBERS: RefCell> = RefCell::new(vec![]); + static PRIME: RefCell> = RefCell::new(None); } pub struct TestChangeMembers; @@ -297,6 +349,10 @@ mod tests { assert_eq!(old_plus_incoming, new_plus_outgoing); MEMBERS.with(|m| *m.borrow_mut() = new.to_vec()); + PRIME.with(|p| *p.borrow_mut() = None); + } + fn set_prime(who: Option) { + PRIME.with(|p| *p.borrow_mut() = who); } } impl InitializeMembers for TestChangeMembers { @@ -311,6 +367,7 @@ mod tests { type RemoveOrigin = EnsureSignedBy; type SwapOrigin = EnsureSignedBy; type ResetOrigin = EnsureSignedBy; + type PrimeOrigin = EnsureSignedBy; type MembershipInitialized = TestChangeMembers; type MembershipChanged = TestChangeMembers; } @@ -337,6 +394,21 @@ mod tests { }); } + #[test] + fn prime_member_works() { + new_test_ext().execute_with(|| { + assert_noop!(Membership::set_prime(Origin::signed(4), 20), BadOrigin); + assert_noop!(Membership::set_prime(Origin::signed(5), 15), Error::::NotMember); + assert_ok!(Membership::set_prime(Origin::signed(5), 20)); + assert_eq!(Membership::prime(), Some(20)); + assert_eq!(PRIME.with(|m| *m.borrow()), Membership::prime()); + + assert_ok!(Membership::clear_prime(Origin::signed(5))); + assert_eq!(Membership::prime(), None); + assert_eq!(PRIME.with(|m| *m.borrow()), Membership::prime()); + }); + } + #[test] fn add_member_works() { new_test_ext().execute_with(|| { @@ -353,9 +425,12 @@ mod tests { new_test_ext().execute_with(|| { assert_noop!(Membership::remove_member(Origin::signed(5), 20), BadOrigin); assert_noop!(Membership::remove_member(Origin::signed(2), 15), Error::::NotMember); + assert_ok!(Membership::set_prime(Origin::signed(5), 20)); assert_ok!(Membership::remove_member(Origin::signed(2), 20)); assert_eq!(Membership::members(), vec![10, 30]); assert_eq!(MEMBERS.with(|m| m.borrow().clone()), Membership::members()); + assert_eq!(Membership::prime(), None); + assert_eq!(PRIME.with(|m| *m.borrow()), Membership::prime()); }); } @@ -365,11 +440,19 @@ mod tests { assert_noop!(Membership::swap_member(Origin::signed(5), 10, 25), BadOrigin); assert_noop!(Membership::swap_member(Origin::signed(3), 15, 25), Error::::NotMember); assert_noop!(Membership::swap_member(Origin::signed(3), 10, 30), Error::::AlreadyMember); + + assert_ok!(Membership::set_prime(Origin::signed(5), 20)); assert_ok!(Membership::swap_member(Origin::signed(3), 20, 20)); assert_eq!(Membership::members(), vec![10, 20, 30]); + assert_eq!(Membership::prime(), Some(20)); + assert_eq!(PRIME.with(|m| *m.borrow()), Membership::prime()); + + assert_ok!(Membership::set_prime(Origin::signed(5), 10)); assert_ok!(Membership::swap_member(Origin::signed(3), 10, 25)); assert_eq!(Membership::members(), vec![20, 25, 30]); assert_eq!(MEMBERS.with(|m| m.borrow().clone()), Membership::members()); + assert_eq!(Membership::prime(), None); + assert_eq!(PRIME.with(|m| *m.borrow()), Membership::prime()); }); } @@ -385,11 +468,14 @@ mod tests { #[test] fn change_key_works() { new_test_ext().execute_with(|| { + assert_ok!(Membership::set_prime(Origin::signed(5), 10)); assert_noop!(Membership::change_key(Origin::signed(3), 25), Error::::NotMember); assert_noop!(Membership::change_key(Origin::signed(10), 20), Error::::AlreadyMember); assert_ok!(Membership::change_key(Origin::signed(10), 40)); assert_eq!(Membership::members(), vec![20, 30, 40]); assert_eq!(MEMBERS.with(|m| m.borrow().clone()), Membership::members()); + assert_eq!(Membership::prime(), Some(40)); + assert_eq!(PRIME.with(|m| *m.borrow()), Membership::prime()); }); } @@ -405,10 +491,20 @@ mod tests { #[test] fn reset_members_works() { new_test_ext().execute_with(|| { + assert_ok!(Membership::set_prime(Origin::signed(5), 20)); assert_noop!(Membership::reset_members(Origin::signed(1), vec![20, 40, 30]), BadOrigin); + assert_ok!(Membership::reset_members(Origin::signed(4), vec![20, 40, 30])); assert_eq!(Membership::members(), vec![20, 30, 40]); assert_eq!(MEMBERS.with(|m| m.borrow().clone()), Membership::members()); + assert_eq!(Membership::prime(), Some(20)); + assert_eq!(PRIME.with(|m| *m.borrow()), Membership::prime()); + + assert_ok!(Membership::reset_members(Origin::signed(4), vec![10, 40, 30])); + assert_eq!(Membership::members(), vec![10, 30, 40]); + assert_eq!(MEMBERS.with(|m| m.borrow().clone()), Membership::members()); + assert_eq!(Membership::prime(), None); + assert_eq!(PRIME.with(|m| *m.borrow()), Membership::prime()); }); } } diff --git a/frame/support/src/storage/generator/value.rs b/frame/support/src/storage/generator/value.rs index 4083576e29..9e26131f48 100644 --- a/frame/support/src/storage/generator/value.rs +++ b/frame/support/src/storage/generator/value.rs @@ -91,6 +91,14 @@ impl> storage::StorageValue for G { unhashed::put(&Self::storage_value_final_key(), &val) } + fn set(maybe_val: Self::Query) { + if let Some(val) = G::from_query_to_optional_value(maybe_val) { + unhashed::put(&Self::storage_value_final_key(), &val) + } else { + unhashed::kill(&Self::storage_value_final_key()) + } + } + fn kill() { unhashed::kill(&Self::storage_value_final_key()) } diff --git a/frame/support/src/storage/mod.rs b/frame/support/src/storage/mod.rs index c28626ad2c..e5d845cb22 100644 --- a/frame/support/src/storage/mod.rs +++ b/frame/support/src/storage/mod.rs @@ -73,6 +73,10 @@ pub trait StorageValue { /// Store a value under this key into the provided storage instance. fn put>(val: Arg); + /// Store a value under this key into the provided storage instance; this uses the query + /// type rather than the underlying value. + fn set(val: Self::Query); + /// Mutate the value fn mutate R>(f: F) -> R; diff --git a/frame/support/src/traits.rs b/frame/support/src/traits.rs index bd6895bda5..c1e9e7c317 100644 --- a/frame/support/src/traits.rs +++ b/frame/support/src/traits.rs @@ -808,6 +808,8 @@ impl WithdrawReasons { pub trait ChangeMembers { /// A number of members `incoming` just joined the set and replaced some `outgoing` ones. The /// new set is given by `new`, and need not be sorted. + /// + /// This resets any previous value of prime. fn change_members(incoming: &[AccountId], outgoing: &[AccountId], mut new: Vec) { new.sort_unstable(); Self::change_members_sorted(incoming, outgoing, &new[..]); @@ -817,6 +819,8 @@ pub trait ChangeMembers { /// new set is thus given by `sorted_new` and **must be sorted**. /// /// NOTE: This is the only function that needs to be implemented in `ChangeMembers`. + /// + /// This resets any previous value of prime. fn change_members_sorted( incoming: &[AccountId], outgoing: &[AccountId], @@ -825,6 +829,8 @@ pub trait ChangeMembers { /// Set the new members; they **must already be sorted**. This will compute the diff and use it to /// call `change_members_sorted`. + /// + /// This resets any previous value of prime. fn set_members_sorted(new_members: &[AccountId], old_members: &[AccountId]) { let (incoming, outgoing) = Self::compute_members_diff(new_members, old_members); Self::change_members_sorted(&incoming[..], &outgoing[..], &new_members); @@ -865,14 +871,20 @@ pub trait ChangeMembers { } (incoming, outgoing) } + + /// Set the prime member. + fn set_prime(_prime: Option) {} } impl ChangeMembers for () { fn change_members(_: &[T], _: &[T], _: Vec) {} fn change_members_sorted(_: &[T], _: &[T], _: &[T]) {} fn set_members_sorted(_: &[T], _: &[T]) {} + fn set_prime(_: Option) {} } + + /// Trait for type that can handle the initialization of account IDs at genesis. pub trait InitializeMembers { /// Initialize the members to the given `members`. -- GitLab From 0f28c33ae79ff2d4109bbdb4c755ba64a7c6a35a Mon Sep 17 00:00:00 2001 From: Gavin Wood Date: Thu, 5 Mar 2020 15:57:38 +0100 Subject: [PATCH 117/301] Expose the `runtime-benchmarks` feature to the cli crate (#5143) This exposes the `runtime-benchmarks` feature via the cli crate and makes sure the benchmarking can be enabled. This requires that the user goes to `bin/node/cli` and runs `cargo build --features runtime-benchmarks` to build a node that has the feature enabled. --- bin/node/cli/Cargo.toml | 1 + bin/node/runtime/Cargo.toml | 7 ++++++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/bin/node/cli/Cargo.toml b/bin/node/cli/Cargo.toml index cfb1621b69..e18b6b228e 100644 --- a/bin/node/cli/Cargo.toml +++ b/bin/node/cli/Cargo.toml @@ -151,3 +151,4 @@ wasmtime = [ "sc-cli/wasmtime", "sc-service/wasmtime", ] +runtime-benchmarks = [ "node-runtime/runtime-benchmarks" ] diff --git a/bin/node/runtime/Cargo.toml b/bin/node/runtime/Cargo.toml index b92e9bc8ae..0d65cf5339 100644 --- a/bin/node/runtime/Cargo.toml +++ b/bin/node/runtime/Cargo.toml @@ -132,4 +132,9 @@ std = [ "pallet-recovery/std", "pallet-vesting/std", ] -runtime-benchmarks = ["frame-benchmarking"] +runtime-benchmarks = [ + "frame-benchmarking", + "pallet-timestamp/runtime-benchmarks", + "pallet-identity/runtime-benchmarks", + "pallet-balances/runtime-benchmarks", +] -- GitLab From 744dfe5ae2033b616a7639035898984e658d2efd Mon Sep 17 00:00:00 2001 From: Benjamin Kampmann Date: Thu, 5 Mar 2020 16:41:10 +0100 Subject: [PATCH 118/301] removes use of sc_client::Client from sc-rpc (#5063) * removes use of sc_client::Client from sc-rpc * remove Client impl from sc-finality-benches * remove client impl from sc-finality-grandpa * read_proof accepts iterator * remove generic Executor param from ExecutorProvider * fix long ass line * code style changes * merge with master Co-authored-by: Arkadiy Paronyan --- Cargo.lock | 2 + bin/node-template/node/Cargo.toml | 1 + bin/node-template/node/src/service.rs | 27 +- bin/node/cli/src/service.rs | 27 +- client/api/Cargo.toml | 1 + client/api/src/backend.rs | 119 ++++ client/api/src/call_executor.rs | 12 + client/api/src/client.rs | 8 +- client/api/src/lib.rs | 2 + client/api/src/proof_provider.rs | 71 +++ client/finality-grandpa/src/environment.rs | 5 +- client/finality-grandpa/src/finality_proof.rs | 40 +- client/finality-grandpa/src/import.rs | 3 +- client/finality-grandpa/src/lib.rs | 17 +- client/finality-grandpa/src/light_import.rs | 4 +- client/finality-grandpa/src/observer.rs | 2 +- client/finality-grandpa/src/tests.rs | 5 +- client/network/src/chain.rs | 37 +- client/network/src/protocol.rs | 7 +- .../src/protocol/light_client_handler.rs | 9 +- client/offchain/src/lib.rs | 1 + client/rpc/src/author/mod.rs | 38 +- client/rpc/src/author/tests.rs | 6 +- client/rpc/src/chain/chain_full.rs | 26 +- client/rpc/src/chain/chain_light.rs | 20 +- client/rpc/src/chain/mod.rs | 68 +- client/rpc/src/state/mod.rs | 54 +- client/rpc/src/state/state_full.rs | 48 +- client/rpc/src/state/state_light.rs | 25 +- client/service/src/builder.rs | 5 +- client/service/src/chain_ops.rs | 1 + client/src/client.rs | 584 ++++++++---------- client/src/light/call_executor.rs | 3 +- client/src/light/fetcher.rs | 5 +- 34 files changed, 739 insertions(+), 544 deletions(-) create mode 100644 client/api/src/proof_provider.rs diff --git a/Cargo.lock b/Cargo.lock index 4f42fa17cd..9a380eaac1 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3569,6 +3569,7 @@ dependencies = [ "sc-basic-authorship", "sc-cli", "sc-client", + "sc-client-api", "sc-consensus-aura", "sc-executor", "sc-finality-grandpa", @@ -5777,6 +5778,7 @@ dependencies = [ "sp-runtime", "sp-state-machine", "sp-std", + "sp-storage", "sp-test-primitives", "sp-transaction-pool", "sp-trie", diff --git a/bin/node-template/node/Cargo.toml b/bin/node-template/node/Cargo.toml index bccd0576df..1e8c3fad2e 100644 --- a/bin/node-template/node/Cargo.toml +++ b/bin/node-template/node/Cargo.toml @@ -30,6 +30,7 @@ sp-consensus = { version = "0.8.0-alpha.2", path = "../../../primitives/consensu grandpa = { version = "0.8.0-alpha.2", package = "sc-finality-grandpa", path = "../../../client/finality-grandpa" } grandpa-primitives = { version = "2.0.0-alpha.2", package = "sp-finality-grandpa", path = "../../../primitives/finality-grandpa" } sc-client = { version = "0.8.0-alpha.2", path = "../../../client/" } +sc-client-api = { version = "2.0.0-alpha.2", path = "../../../client/api" } sp-runtime = { version = "2.0.0-alpha.2", path = "../../../primitives/runtime" } sc-basic-authorship = { path = "../../../client/basic-authorship" , version = "0.8.0-alpha.2"} diff --git a/bin/node-template/node/src/service.rs b/bin/node-template/node/src/service.rs index fe1b3af4eb..f289ff5854 100644 --- a/bin/node-template/node/src/service.rs +++ b/bin/node-template/node/src/service.rs @@ -3,13 +3,14 @@ use std::sync::Arc; use std::time::Duration; use sc_client::LongestChain; +use sc_client_api::ExecutorProvider; use node_template_runtime::{self, GenesisConfig, opaque::Block, RuntimeApi}; use sc_service::{error::{Error as ServiceError}, AbstractService, Configuration, ServiceBuilder}; use sp_inherents::InherentDataProviders; use sc_executor::native_executor_instance; pub use sc_executor::NativeExecutor; use sp_consensus_aura::sr25519::{AuthorityPair as AuraPair}; -use grandpa::{self, FinalityProofProvider as GrandpaFinalityProofProvider}; +use grandpa::{self, FinalityProofProvider as GrandpaFinalityProofProvider, StorageAndProofProvider}; // Our native executor instance. native_executor_instance!( @@ -24,6 +25,7 @@ native_executor_instance!( /// be able to perform chain operations. macro_rules! new_full_start { ($config:expr) => {{ + use std::sync::Arc; let mut import_setup = None; let inherent_data_providers = sp_inherents::InherentDataProviders::new(); @@ -42,7 +44,7 @@ macro_rules! new_full_start { .ok_or_else(|| sc_service::Error::SelectChainRequired)?; let (grandpa_block_import, grandpa_link) = - grandpa::block_import(client.clone(), &*client, select_chain)?; + grandpa::block_import(client.clone(), &(client.clone() as Arc<_>), select_chain)?; let aura_block_import = sc_consensus_aura::AuraBlockImport::<_, _, _, AuraPair>::new( grandpa_block_import.clone(), client.clone(), @@ -87,9 +89,11 @@ pub fn new_full(config: Configuration) .expect("Link Half and Block Import are present for Full Services or setup failed before. qed"); let service = builder - .with_finality_proof_provider(|client, backend| - Ok(Arc::new(GrandpaFinalityProofProvider::new(backend, client)) as _) - )? + .with_finality_proof_provider(|client, backend| { + // GenesisAuthoritySetProvider is implemented for StorageAndProofProvider + let provider = client as Arc>; + Ok(Arc::new(GrandpaFinalityProofProvider::new(backend, provider)) as _) + })? .build()?; if participates_in_consensus { @@ -201,7 +205,10 @@ pub fn new_light(config: Configuration) .map(|fetcher| fetcher.checker().clone()) .ok_or_else(|| "Trying to start light import queue without active fetch checker")?; let grandpa_block_import = grandpa::light_block_import( - client.clone(), backend, &*client.clone(), Arc::new(fetch_checker), + client.clone(), + backend, + &(client.clone() as Arc<_>), + Arc::new(fetch_checker), )?; let finality_proof_import = grandpa_block_import.clone(); let finality_proof_request_builder = @@ -218,8 +225,10 @@ pub fn new_light(config: Configuration) Ok((import_queue, finality_proof_request_builder)) })? - .with_finality_proof_provider(|client, backend| - Ok(Arc::new(GrandpaFinalityProofProvider::new(backend, client)) as _) - )? + .with_finality_proof_provider(|client, backend| { + // GenesisAuthoritySetProvider is implemented for StorageAndProofProvider + let provider = client as Arc>; + Ok(Arc::new(GrandpaFinalityProofProvider::new(backend, provider)) as _) + })? .build() } diff --git a/bin/node/cli/src/service.rs b/bin/node/cli/src/service.rs index ca7bd43161..332c47ea13 100644 --- a/bin/node/cli/src/service.rs +++ b/bin/node/cli/src/service.rs @@ -22,7 +22,7 @@ use std::sync::Arc; use sc_consensus_babe; use sc_client::{self, LongestChain}; -use grandpa::{self, FinalityProofProvider as GrandpaFinalityProofProvider}; +use grandpa::{self, FinalityProofProvider as GrandpaFinalityProofProvider, StorageAndProofProvider}; use node_executor; use node_primitives::Block; use node_runtime::{GenesisConfig, RuntimeApi}; @@ -45,6 +45,7 @@ use sc_offchain::OffchainWorkers; /// be able to perform chain operations. macro_rules! new_full_start { ($config:expr) => {{ + use std::sync::Arc; type RpcExtension = jsonrpc_core::IoHandler; let mut import_setup = None; let inherent_data_providers = sp_inherents::InherentDataProviders::new(); @@ -64,7 +65,7 @@ macro_rules! new_full_start { .ok_or_else(|| sc_service::Error::SelectChainRequired)?; let (grandpa_block_import, grandpa_link) = grandpa::block_import( client.clone(), - &*client, + &(client.clone() as Arc<_>), select_chain, )?; let justification_import = grandpa_block_import.clone(); @@ -116,6 +117,7 @@ macro_rules! new_full { ($config:expr, $with_startup_data: expr) => {{ use futures::prelude::*; use sc_network::Event; + use sc_client_api::ExecutorProvider; let ( is_authority, @@ -139,9 +141,11 @@ macro_rules! new_full { let (builder, mut import_setup, inherent_data_providers) = new_full_start!($config); let service = builder - .with_finality_proof_provider(|client, backend| - Ok(Arc::new(grandpa::FinalityProofProvider::new(backend, client)) as _) - )? + .with_finality_proof_provider(|client, backend| { + // GenesisAuthoritySetProvider is implemented for StorageAndProofProvider + let provider = client as Arc>; + Ok(Arc::new(grandpa::FinalityProofProvider::new(backend, provider)) as _) + })? .build()?; let (block_import, grandpa_link, babe_link) = import_setup.take() @@ -255,8 +259,7 @@ type ConcreteBlock = node_primitives::Block; type ConcreteClient = Client< Backend, - LocalCallExecutor, - NativeExecutor>, + LocalCallExecutor, NativeExecutor>, ConcreteBlock, node_runtime::RuntimeApi >; @@ -317,7 +320,7 @@ pub fn new_light(config: NodeConfiguration) let grandpa_block_import = grandpa::light_block_import( client.clone(), backend, - &*client, + &(client.clone() as Arc<_>), Arc::new(fetch_checker), )?; @@ -342,9 +345,11 @@ pub fn new_light(config: NodeConfiguration) Ok((import_queue, finality_proof_request_builder)) })? - .with_finality_proof_provider(|client, backend| - Ok(Arc::new(GrandpaFinalityProofProvider::new(backend, client)) as _) - )? + .with_finality_proof_provider(|client, backend| { + // GenesisAuthoritySetProvider is implemented for StorageAndProofProvider + let provider = client as Arc>; + Ok(Arc::new(GrandpaFinalityProofProvider::new(backend, provider)) as _) + })? .with_rpc_extensions(|builder,| -> Result { diff --git a/client/api/Cargo.toml b/client/api/Cargo.toml index 0256891054..7ceb12eaf6 100644 --- a/client/api/Cargo.toml +++ b/client/api/Cargo.toml @@ -34,6 +34,7 @@ sp-runtime = { version = "2.0.0-alpha.2", default-features = false, path = "../. sp-state-machine = { version = "0.8.0-alpha.2", path = "../../primitives/state-machine" } sc-telemetry = { version = "2.0.0-alpha.2", path = "../telemetry" } sp-trie = { version = "2.0.0-alpha.2", path = "../../primitives/trie" } +sp-storage = { version = "2.0.0-alpha.2", path = "../../primitives/storage" } sp-transaction-pool = { version = "2.0.0-alpha.2", path = "../../primitives/transaction-pool" } [dev-dependencies] diff --git a/client/api/src/backend.rs b/client/api/src/backend.rs index 1f76aa8c1a..808ca7a870 100644 --- a/client/api/src/backend.rs +++ b/client/api/src/backend.rs @@ -26,6 +26,7 @@ use sp_state_machine::{ ChangesTrieState, ChangesTrieStorage as StateChangesTrieStorage, ChangesTrieTransaction, StorageCollection, ChildStorageCollection, }; +use sp_storage::{StorageData, StorageKey, ChildInfo}; use crate::{ blockchain::{ Backend as BlockchainBackend, well_known_cache_keys @@ -38,6 +39,7 @@ use sp_consensus::BlockOrigin; use parking_lot::RwLock; pub use sp_state_machine::Backend as StateBackend; +use std::marker::PhantomData; /// Extracts the state backend type for the given backend. pub type StateBackendFor = >::State; @@ -237,6 +239,123 @@ pub trait AuxStore { fn get_aux(&self, key: &[u8]) -> sp_blockchain::Result>>; } +/// An `Iterator` that iterates keys in a given block under a prefix. +pub struct KeyIterator<'a, State, Block> { + state: State, + prefix: Option<&'a StorageKey>, + current_key: Vec, + _phantom: PhantomData, +} + +impl <'a, State, Block> KeyIterator<'a, State, Block> { + /// create a KeyIterator instance + pub fn new(state: State, prefix: Option<&'a StorageKey>, current_key: Vec) -> Self { + Self { + state, + prefix, + current_key, + _phantom: PhantomData, + } + } +} + +impl<'a, State, Block> Iterator for KeyIterator<'a, State, Block> where + Block: BlockT, + State: StateBackend>, +{ + type Item = StorageKey; + + fn next(&mut self) -> Option { + let next_key = self.state + .next_storage_key(&self.current_key) + .ok() + .flatten()?; + // this terminates the iterator the first time it fails. + if let Some(prefix) = self.prefix { + if !next_key.starts_with(&prefix.0[..]) { + return None; + } + } + self.current_key = next_key.clone(); + Some(StorageKey(next_key)) + } +} +/// Provides acess to storage primitives +pub trait StorageProvider> { + /// Given a `BlockId` and a key, return the value under the key in that block. + fn storage(&self, id: &BlockId, key: &StorageKey) -> sp_blockchain::Result>; + + /// Given a `BlockId` and a key prefix, return the matching storage keys in that block. + fn storage_keys(&self, id: &BlockId, key_prefix: &StorageKey) -> sp_blockchain::Result>; + + /// Given a `BlockId` and a key, return the value under the hash in that block. + fn storage_hash(&self, id: &BlockId, key: &StorageKey) -> sp_blockchain::Result>; + + /// Given a `BlockId` and a key prefix, return the matching child storage keys and values in that block. + fn storage_pairs( + &self, + id: &BlockId, + key_prefix: &StorageKey + ) -> sp_blockchain::Result>; + + /// Given a `BlockId` and a key prefix, return a `KeyIterator` iterates matching storage keys in that block. + fn storage_keys_iter<'a>( + &self, + id: &BlockId, + prefix: Option<&'a StorageKey>, + start_key: Option<&StorageKey> + ) -> sp_blockchain::Result>; + + /// Given a `BlockId`, a key and a child storage key, return the value under the key in that block. + fn child_storage( + &self, + id: &BlockId, + storage_key: &StorageKey, + child_info: ChildInfo, + key: &StorageKey + ) -> sp_blockchain::Result>; + + /// Given a `BlockId`, a key prefix, and a child storage key, return the matching child storage keys. + fn child_storage_keys( + &self, + id: &BlockId, + child_storage_key: &StorageKey, + child_info: ChildInfo, + key_prefix: &StorageKey + ) -> sp_blockchain::Result>; + + /// Given a `BlockId`, a key and a child storage key, return the hash under the key in that block. + fn child_storage_hash( + &self, + id: &BlockId, + storage_key: &StorageKey, + child_info: ChildInfo, + key: &StorageKey + ) -> sp_blockchain::Result>; + + /// Get longest range within [first; last] that is possible to use in `key_changes` + /// and `key_changes_proof` calls. + /// Range could be shortened from the beginning if some changes tries have been pruned. + /// Returns Ok(None) if changes tries are not supported. + fn max_key_changes_range( + &self, + first: NumberFor, + last: BlockId, + ) -> sp_blockchain::Result, BlockId)>>; + + /// Get pairs of (block, extrinsic) where key has been changed at given blocks range. + /// Works only for runtimes that are supporting changes tries. + /// + /// Changes are returned in descending order (i.e. last block comes first). + fn key_changes( + &self, + first: NumberFor, + last: BlockId, + storage_key: Option<&StorageKey>, + key: &StorageKey + ) -> sp_blockchain::Result, u32)>>; +} + /// Client backend. /// /// Manages the data layer. diff --git a/client/api/src/call_executor.rs b/client/api/src/call_executor.rs index 1a7b53d541..f39d797157 100644 --- a/client/api/src/call_executor.rs +++ b/client/api/src/call_executor.rs @@ -29,6 +29,18 @@ use sp_externalities::Extensions; use sp_core::NativeOrEncoded; use sp_api::{ProofRecorder, InitializeBlock, StorageTransactionCache}; +use crate::execution_extensions::ExecutionExtensions; + +/// Executor Provider +pub trait ExecutorProvider { + /// executor instance + type Executor: CallExecutor; + /// Get call executor reference. + fn executor(&self) -> &Self::Executor; + + /// Get a reference to the execution extensions. + fn execution_extensions(&self) -> &ExecutionExtensions; +} /// Method call executor. pub trait CallExecutor { diff --git a/client/api/src/client.rs b/client/api/src/client.rs index 4980015568..22503732be 100644 --- a/client/api/src/client.rs +++ b/client/api/src/client.rs @@ -21,7 +21,7 @@ use futures::channel::mpsc; use sp_core::storage::StorageKey; use sp_runtime::{ traits::{Block as BlockT, NumberFor}, - generic::BlockId + generic::{BlockId, SignedBlock} }; use sp_consensus::BlockOrigin; @@ -76,9 +76,13 @@ pub trait BlockchainEvents { /// Fetch block body by ID. pub trait BlockBody { /// Get block body by ID. Returns `None` if the body is not stored. - fn block_body(&self, + fn block_body( + &self, id: &BlockId ) -> sp_blockchain::Result::Extrinsic>>>; + + /// Get full block by id. + fn block(&self, id: &BlockId) -> sp_blockchain::Result>>; } /// Provide a list of potential uncle headers for a given block. diff --git a/client/api/src/lib.rs b/client/api/src/lib.rs index 69d0c94ac2..66f51e75c7 100644 --- a/client/api/src/lib.rs +++ b/client/api/src/lib.rs @@ -23,6 +23,7 @@ pub mod client; pub mod execution_extensions; pub mod light; pub mod notifications; +pub mod proof_provider; pub use sp_blockchain as blockchain; pub use backend::*; @@ -31,6 +32,7 @@ pub use call_executor::*; pub use client::*; pub use light::*; pub use notifications::*; +pub use proof_provider::*; pub use sp_state_machine::{StorageProof, ExecutionStrategy}; diff --git a/client/api/src/proof_provider.rs b/client/api/src/proof_provider.rs new file mode 100644 index 0000000000..2d9876f7ad --- /dev/null +++ b/client/api/src/proof_provider.rs @@ -0,0 +1,71 @@ +// Copyright 2017-2020 Parity Technologies (UK) Ltd. +// This file is part of Substrate. + +// Substrate is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Substrate is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Substrate. If not, see . +//! Proof utilities +use sp_runtime::{ + generic::BlockId, + traits::{Block as BlockT}, +}; +use crate::{StorageProof, ChangesProof}; +use sp_storage::{ChildInfo, StorageKey}; + +/// Interface for providing block proving utilities. +pub trait ProofProvider { + /// Reads storage value at a given block + key, returning read proof. + fn read_proof( + &self, + id: &BlockId, + keys: &mut dyn Iterator, + ) -> sp_blockchain::Result; + + /// Reads child storage value at a given block + storage_key + key, returning + /// read proof. + fn read_child_proof( + &self, + id: &BlockId, + storage_key: &[u8], + child_info: ChildInfo, + keys: &mut dyn Iterator, + ) -> sp_blockchain::Result; + + /// Execute a call to a contract on top of state in a block of given hash + /// AND returning execution proof. + /// + /// No changes are made. + fn execution_proof( + &self, + id: &BlockId, + method: &str, + call_data: &[u8], + ) -> sp_blockchain::Result<(Vec, StorageProof)>; + /// Reads given header and generates CHT-based header proof. + fn header_proof(&self, id: &BlockId) -> sp_blockchain::Result<(Block::Header, StorageProof)>; + + /// Get proof for computation of (block, extrinsic) pairs where key has been changed at given blocks range. + /// `min` is the hash of the first block, which changes trie root is known to the requester - when we're using + /// changes tries from ascendants of this block, we should provide proofs for changes tries roots + /// `max` is the hash of the last block known to the requester - we can't use changes tries from descendants + /// of this block. + /// Works only for runtimes that are supporting changes tries. + fn key_changes_proof( + &self, + first: Block::Hash, + last: Block::Hash, + min: Block::Hash, + max: Block::Hash, + storage_key: Option<&StorageKey>, + key: &StorageKey, + ) -> sp_blockchain::Result>; +} diff --git a/client/finality-grandpa/src/environment.rs b/client/finality-grandpa/src/environment.rs index 21a44c32dc..a0f37f20cb 100644 --- a/client/finality-grandpa/src/environment.rs +++ b/client/finality-grandpa/src/environment.rs @@ -28,10 +28,7 @@ use parking_lot::RwLock; use sp_blockchain::{HeaderBackend, Error as ClientError, HeaderMetadata}; use std::marker::PhantomData; -use sc_client_api::{ - backend::Backend, - utils::is_descendent_of, -}; +use sc_client_api::{backend::Backend, utils::is_descendent_of}; use sc_client::apply_aux; use finality_grandpa::{ BlockNumberOps, Equivocation, Error as GrandpaError, round::State as RoundState, diff --git a/client/finality-grandpa/src/finality_proof.rs b/client/finality-grandpa/src/finality_proof.rs index d52db6c099..2c85839b5e 100644 --- a/client/finality-grandpa/src/finality_proof.rs +++ b/client/finality-grandpa/src/finality_proof.rs @@ -34,16 +34,15 @@ //! finality proof (that finalizes some block C that is ancestor of the B and descendant //! of the U) could be returned. -use std::iter; use std::sync::Arc; use log::{trace, warn}; use sp_blockchain::{Backend as BlockchainBackend, Error as ClientError, Result as ClientResult}; use sc_client_api::{ - backend::Backend, CallExecutor, StorageProof, + backend::Backend, StorageProof, light::{FetchChecker, RemoteReadRequest}, + StorageProvider, ProofProvider, }; -use sc_client::Client; use parity_scale_codec::{Encode, Decode}; use finality_grandpa::BlockNumberOps; use sp_runtime::{ @@ -67,12 +66,25 @@ pub trait AuthoritySetForFinalityProver: Send + Sync { fn prove_authorities(&self, block: &BlockId) -> ClientResult; } -/// Client-based implementation of AuthoritySetForFinalityProver. -impl AuthoritySetForFinalityProver for Client +/// Trait that combines `StorageProvider` and `ProofProvider` +pub trait StorageAndProofProvider: StorageProvider + ProofProvider + Send + Sync where - B: Backend + Send + Sync + 'static, - E: CallExecutor + 'static + Clone + Send + Sync, - RA: Send + Sync, + Block: BlockT, + BE: Backend + Send + Sync, +{} + +/// Blanket implementation. +impl StorageAndProofProvider for P + where + Block: BlockT, + BE: Backend + Send + Sync, + P: StorageProvider + ProofProvider + Send + Sync, +{} + +/// Implementation of AuthoritySetForFinalityProver. +impl AuthoritySetForFinalityProver for Arc> + where + BE: Backend + Send + Sync + 'static, { fn authorities(&self, block: &BlockId) -> ClientResult { let storage_key = StorageKey(GRANDPA_AUTHORITIES_KEY.to_vec()); @@ -83,7 +95,7 @@ impl AuthoritySetForFinalityProver for Client) -> ClientResult { - self.read_proof(block, iter::once(GRANDPA_AUTHORITIES_KEY)) + self.read_proof(block, &mut std::iter::once(GRANDPA_AUTHORITIES_KEY)) } } @@ -146,11 +158,13 @@ impl FinalityProofProvider /// /// - backend for accessing blockchain data; /// - authority_provider for calling and proving runtime methods. - pub fn new( + pub fn new

( backend: Arc, - authority_provider: Arc>, - ) -> Self { - FinalityProofProvider { backend, authority_provider } + authority_provider: P, + ) -> Self + where P: AuthoritySetForFinalityProver + 'static, + { + FinalityProofProvider { backend, authority_provider: Arc::new(authority_provider) } } } diff --git a/client/finality-grandpa/src/import.rs b/client/finality-grandpa/src/import.rs index 28a08339dc..ea1deccdaf 100644 --- a/client/finality-grandpa/src/import.rs +++ b/client/finality-grandpa/src/import.rs @@ -541,8 +541,7 @@ impl GrandpaBlockImport - GrandpaBlockImport +impl GrandpaBlockImport where BE: Backend, Client: crate::ClientForGrandpa, diff --git a/client/finality-grandpa/src/lib.rs b/client/finality-grandpa/src/lib.rs index 38c1070d77..afee2bec53 100644 --- a/client/finality-grandpa/src/lib.rs +++ b/client/finality-grandpa/src/lib.rs @@ -57,11 +57,11 @@ use futures::StreamExt; use log::{debug, info}; use futures::channel::mpsc; use sc_client_api::{ + backend::{AuxStore, Backend}, LockImportRun, BlockchainEvents, CallExecutor, - backend::{AuxStore, Backend}, ExecutionStrategy, Finalizer, TransactionFor, + ExecutionStrategy, Finalizer, TransactionFor, ExecutorProvider, }; use sp_blockchain::{HeaderBackend, Error as ClientError, HeaderMetadata}; -use sc_client::Client; use parity_scale_codec::{Decode, Encode}; use sp_runtime::generic::BlockId; use sp_runtime::traits::{NumberFor, Block as BlockT, DigestFor, Zero}; @@ -96,7 +96,7 @@ mod observer; mod until_imported; mod voting_rule; -pub use finality_proof::FinalityProofProvider; +pub use finality_proof::{FinalityProofProvider, StorageAndProofProvider}; pub use justification::GrandpaJustification; pub use light_import::light_block_import; pub use voting_rule::{ @@ -266,7 +266,7 @@ impl BlockStatus for Arc where pub trait ClientForGrandpa: LockImportRun + Finalizer + AuxStore + HeaderMetadata + HeaderBackend - + BlockchainEvents + ProvideRuntimeApi + + BlockchainEvents + ProvideRuntimeApi + ExecutorProvider + BlockImport, Error = sp_consensus::Error> where BE: Backend, @@ -279,7 +279,7 @@ impl ClientForGrandpa for T Block: BlockT, T: LockImportRun + Finalizer + AuxStore + HeaderMetadata + HeaderBackend - + BlockchainEvents + ProvideRuntimeApi + + BlockchainEvents + ProvideRuntimeApi + ExecutorProvider + BlockImport, Error = sp_consensus::Error>, {} @@ -387,11 +387,8 @@ pub trait GenesisAuthoritySetProvider { fn get(&self) -> Result; } -impl GenesisAuthoritySetProvider for Client - where - B: Backend + Send + Sync + 'static, - E: CallExecutor + Send + Sync, - RA: Send + Sync, +impl GenesisAuthoritySetProvider for Arc> + where E: CallExecutor, { fn get(&self) -> Result { // This implementation uses the Grandpa runtime API instead of reading directly from the diff --git a/client/finality-grandpa/src/light_import.rs b/client/finality-grandpa/src/light_import.rs index 258ea81bd5..276f5d0f28 100644 --- a/client/finality-grandpa/src/light_import.rs +++ b/client/finality-grandpa/src/light_import.rs @@ -18,7 +18,9 @@ use std::collections::HashMap; use std::sync::Arc; use log::{info, trace, warn}; use parking_lot::RwLock; -use sc_client_api::backend::{AuxStore, Backend, Finalizer, TransactionFor}; +use sc_client_api::{ + backend::{AuxStore, Backend, Finalizer, TransactionFor}, +}; use sp_blockchain::{HeaderBackend, Error as ClientError, well_known_cache_keys}; use parity_scale_codec::{Encode, Decode}; use sp_consensus::{ diff --git a/client/finality-grandpa/src/observer.rs b/client/finality-grandpa/src/observer.rs index 97352b68e3..921e5a3dd5 100644 --- a/client/finality-grandpa/src/observer.rs +++ b/client/finality-grandpa/src/observer.rs @@ -328,7 +328,7 @@ impl Future for ObserverWork where B: BlockT, BE: Backend + Unpin + 'static, - C: crate::ClientForGrandpa+ 'static, + C: crate::ClientForGrandpa + 'static, N: NetworkT, NumberFor: BlockNumberOps, { diff --git a/client/finality-grandpa/src/tests.rs b/client/finality-grandpa/src/tests.rs index aedcb20a59..0774194d7e 100644 --- a/client/finality-grandpa/src/tests.rs +++ b/client/finality-grandpa/src/tests.rs @@ -39,7 +39,7 @@ use sp_consensus::{ use std::{ collections::{HashMap, HashSet}, result, - pin::Pin, task, + pin::Pin, }; use parity_scale_codec::Decode; use sp_runtime::traits::{Block as BlockT, Header as HeaderT, HashFor}; @@ -170,8 +170,7 @@ impl TestNetFactory for GrandpaTestNet { ) -> Option>> { match client { PeersClient::Full(_, ref backend) => { - let authorities_provider = Arc::new(self.test_config.clone()); - Some(Arc::new(FinalityProofProvider::new(backend.clone(), authorities_provider))) + Some(Arc::new(FinalityProofProvider::new(backend.clone(), self.test_config.clone()))) }, PeersClient::Light(_, _) => None, } diff --git a/client/network/src/chain.rs b/client/network/src/chain.rs index b991a0e652..3c075ec881 100644 --- a/client/network/src/chain.rs +++ b/client/network/src/chain.rs @@ -18,7 +18,7 @@ use sc_client::Client as SubstrateClient; use sp_blockchain::{Error, Info as BlockchainInfo}; -use sc_client_api::{ChangesProof, StorageProof, CallExecutor}; +use sc_client_api::{ChangesProof, StorageProof, CallExecutor, ProofProvider}; use sp_consensus::{BlockImport, BlockStatus, Error as ConsensusError}; use sp_runtime::traits::{Block as BlockT, Header as HeaderT, NumberFor}; use sp_runtime::generic::{BlockId}; @@ -50,7 +50,11 @@ pub trait Client: Send + Sync { -> Result<(Block::Header, StorageProof), Error>; /// Get storage read execution proof. - fn read_proof(&self, block: &Block::Hash, keys: &[Vec]) -> Result; + fn read_proof( + &self, + block: &Block::Hash, + keys: &mut dyn Iterator, + ) -> Result; /// Get child storage read execution proof. fn read_child_proof( @@ -58,7 +62,7 @@ pub trait Client: Send + Sync { block: &Block::Hash, storage_key: &[u8], child_info: ChildInfo, - keys: &[Vec], + keys: &mut dyn Iterator, ) -> Result; /// Get method execution proof. @@ -125,14 +129,19 @@ impl Client for SubstrateClient where (self as &SubstrateClient).justification(id) } - fn header_proof(&self, block_number: ::Number) - -> Result<(Block::Header, StorageProof), Error> - { - (self as &SubstrateClient).header_proof(&BlockId::Number(block_number)) + fn header_proof( + &self, + block_number: ::Number, + )-> Result<(Block::Header, StorageProof), Error> { + ProofProvider::::header_proof(self, &BlockId::Number(block_number)) } - fn read_proof(&self, block: &Block::Hash, keys: &[Vec]) -> Result { - (self as &SubstrateClient).read_proof(&BlockId::Hash(block.clone()), keys) + fn read_proof( + &self, + block: &Block::Hash, + keys: &mut dyn Iterator, + ) -> Result { + ProofProvider::::read_proof(self, &BlockId::Hash(block.clone()), keys) } fn read_child_proof( @@ -140,10 +149,9 @@ impl Client for SubstrateClient where block: &Block::Hash, storage_key: &[u8], child_info: ChildInfo, - keys: &[Vec], + keys: &mut dyn Iterator, ) -> Result { - (self as &SubstrateClient) - .read_child_proof(&BlockId::Hash(block.clone()), storage_key, child_info, keys) + ProofProvider::::read_child_proof(self, &BlockId::Hash(block.clone()), storage_key, child_info, keys) } fn execution_proof( @@ -152,7 +160,8 @@ impl Client for SubstrateClient where method: &str, data: &[u8], ) -> Result<(Vec, StorageProof), Error> { - (self as &SubstrateClient).execution_proof( + ProofProvider::::execution_proof( + self, &BlockId::Hash(block.clone()), method, data, @@ -168,7 +177,7 @@ impl Client for SubstrateClient where storage_key: Option<&StorageKey>, key: &StorageKey, ) -> Result, Error> { - (self as &SubstrateClient).key_changes_proof(first, last, min, max, storage_key, key) + ProofProvider::::key_changes_proof(self, first, last, min, max, storage_key, key) } fn is_descendent_of(&self, base: &Block::Hash, block: &Block::Hash) -> Result { diff --git a/client/network/src/protocol.rs b/client/network/src/protocol.rs index d344321e68..5d7adfdcc3 100644 --- a/client/network/src/protocol.rs +++ b/client/network/src/protocol.rs @@ -1473,7 +1473,10 @@ impl Protocol { trace!(target: "sync", "Remote read request {} from {} ({} at {})", request.id, who, keys_str(), request.block); - let proof = match self.context_data.chain.read_proof(&request.block, &request.keys) { + let proof = match self.context_data.chain.read_proof( + &request.block, + &mut request.keys.iter().map(AsRef::as_ref) + ) { Ok(proof) => proof, Err(error) => { trace!(target: "sync", "Remote read request {} from {} ({} at {}) failed with: {}", @@ -1523,7 +1526,7 @@ impl Protocol { &request.block, &request.storage_key, child_info, - &request.keys, + &mut request.keys.iter().map(AsRef::as_ref), ) { Ok(proof) => proof, Err(error) => { diff --git a/client/network/src/protocol/light_client_handler.rs b/client/network/src/protocol/light_client_handler.rs index b531f3515a..a141e134fc 100644 --- a/client/network/src/protocol/light_client_handler.rs +++ b/client/network/src/protocol/light_client_handler.rs @@ -467,7 +467,7 @@ where let block = Decode::decode(&mut request.block.as_ref())?; - let proof = match self.chain.read_proof(&block, &request.keys) { + let proof = match self.chain.read_proof(&block, &mut request.keys.iter().map(AsRef::as_ref)) { Ok(proof) => proof, Err(error) => { log::trace!("remote read request from {} ({} at {:?}) failed with: {}", @@ -508,7 +508,12 @@ where let proof = if let Some(info) = ChildInfo::resolve_child_info(request.child_type, &request.child_info[..]) { - match self.chain.read_child_proof(&block, &request.storage_key, info, &request.keys) { + match self.chain.read_child_proof( + &block, + &request.storage_key, + info, + &mut request.keys.iter().map(AsRef::as_ref) + ) { Ok(proof) => proof, Err(error) => { log::trace!("remote read child request from {} ({} {} at {:?}) failed with: {}", diff --git a/client/offchain/src/lib.rs b/client/offchain/src/lib.rs index 7fc9671fcb..27a7f50845 100644 --- a/client/offchain/src/lib.rs +++ b/client/offchain/src/lib.rs @@ -169,6 +169,7 @@ mod tests { use substrate_test_runtime_client::runtime::Block; use sc_transaction_pool::{BasicPool, FullChainApi}; use sp_transaction_pool::{TransactionPool, InPoolTransaction}; + use sc_client_api::ExecutorProvider; struct MockNetworkStateInfo(); diff --git a/client/rpc/src/author/mod.rs b/client/rpc/src/author/mod.rs index 06bdcf883c..80a3a4349e 100644 --- a/client/rpc/src/author/mod.rs +++ b/client/rpc/src/author/mod.rs @@ -22,8 +22,7 @@ mod tests; use std::{sync::Arc, convert::TryInto}; use log::warn; -use sc_client::Client; -use sp_blockchain::Error as ClientError; +use sp_blockchain::{Error as ClientError, HeaderBackend}; use rpc::futures::{ Sink, Future, @@ -36,7 +35,7 @@ use jsonrpc_pubsub::{typed::Subscriber, SubscriptionId}; use codec::{Encode, Decode}; use sp_core::{Bytes, traits::BareCryptoStorePtr}; use sp_api::ProvideRuntimeApi; -use sp_runtime::{generic, traits}; +use sp_runtime::generic; use sp_transaction_pool::{ TransactionPool, InPoolTransaction, TransactionStatus, BlockHash, TxHash, TransactionFor, error::IntoPoolError, @@ -48,9 +47,9 @@ pub use sc_rpc_api::author::*; use self::error::{Error, FutureResult, Result}; /// Authoring API -pub struct Author { +pub struct Author { /// Substrate client - client: Arc>, + client: Arc, /// Transactions pool pool: Arc

, /// Subscriptions manager @@ -59,10 +58,10 @@ pub struct Author { keystore: BareCryptoStorePtr, } -impl Author { +impl Author { /// Create new instance of Authoring API. pub fn new( - client: Arc>, + client: Arc, pool: Arc

, subscriptions: Subscriptions, keystore: BareCryptoStorePtr, @@ -76,18 +75,11 @@ impl Author { } } -impl AuthorApi, BlockHash

> - for Author::Block, RA> -where - B: sc_client_api::backend::Backend<

::Block> + Send + Sync + 'static, - E: sc_client::CallExecutor<

::Block> + Send + Sync + 'static, - P: TransactionPool + Sync + Send + 'static, - P::Block: traits::Block, - P::Error: 'static, - RA: Send + Sync + 'static, - Client: ProvideRuntimeApi, - as ProvideRuntimeApi>::Api: - SessionKeys, +impl AuthorApi, BlockHash

> for Author + where + P: TransactionPool + Sync + Send + 'static, + Client: HeaderBackend + ProvideRuntimeApi + Send + Sync + 'static, + Client::Api: SessionKeys, { type Metadata = crate::metadata::Metadata; @@ -105,7 +97,7 @@ where } fn rotate_keys(&self) -> Result { - let best_block_hash = self.client.chain_info().best_hash; + let best_block_hash = self.client.info().best_hash; self.client.runtime_api().generate_session_keys( &generic::BlockId::Hash(best_block_hash), None, @@ -113,7 +105,7 @@ where } fn has_session_keys(&self, session_keys: Bytes) -> Result { - let best_block_hash = self.client.chain_info().best_hash; + let best_block_hash = self.client.info().best_hash; let keys = self.client.runtime_api().decode_session_keys( &generic::BlockId::Hash(best_block_hash), session_keys.to_vec(), @@ -133,7 +125,7 @@ where Ok(xt) => xt, Err(err) => return Box::new(result(Err(err.into()))), }; - let best_block_hash = self.client.chain_info().best_hash; + let best_block_hash = self.client.info().best_hash; Box::new(self.pool .submit_one(&generic::BlockId::hash(best_block_hash), xt) .compat() @@ -176,7 +168,7 @@ where xt: Bytes, ) { let submit = || -> Result<_> { - let best_block_hash = self.client.chain_info().best_hash; + let best_block_hash = self.client.info().best_hash; let dxt = TransactionFor::

::decode(&mut &xt[..]) .map_err(error::Error::from)?; Ok( diff --git a/client/rpc/src/author/tests.rs b/client/rpc/src/author/tests.rs index 41bfc46d38..3093cd9d3b 100644 --- a/client/rpc/src/author/tests.rs +++ b/client/rpc/src/author/tests.rs @@ -25,8 +25,8 @@ use sp_core::{ }; use rpc::futures::Stream as _; use substrate_test_runtime_client::{ - self, AccountKeyring, runtime::{Extrinsic, Transfer, SessionKeys, RuntimeApi, Block}, - DefaultTestClientBuilderExt, TestClientBuilderExt, Backend, Client, Executor, + self, AccountKeyring, runtime::{Extrinsic, Transfer, SessionKeys, Block}, + DefaultTestClientBuilderExt, TestClientBuilderExt, Backend, Client, }; use sc_transaction_pool::{BasicPool, FullChainApi}; use tokio::runtime; @@ -75,7 +75,7 @@ impl Default for TestSetup { } impl TestSetup { - fn author(&self) -> Author { + fn author(&self) -> Author> { Author { client: self.client.clone(), pool: self.pool.clone(), diff --git a/client/rpc/src/chain/chain_full.rs b/client/rpc/src/chain/chain_full.rs index ff732368fe..ea562d4774 100644 --- a/client/rpc/src/chain/chain_full.rs +++ b/client/rpc/src/chain/chain_full.rs @@ -20,37 +20,39 @@ use std::sync::Arc; use rpc::futures::future::result; use sc_rpc_api::Subscriptions; -use sc_client_api::{CallExecutor, backend::Backend}; -use sc_client::Client; +use sc_client_api::{BlockchainEvents, BlockBody}; use sp_runtime::{generic::{BlockId, SignedBlock}, traits::{Block as BlockT}}; use super::{ChainBackend, client_err, error::FutureResult}; +use std::marker::PhantomData; +use sp_blockchain::HeaderBackend; /// Blockchain API backend for full nodes. Reads all the data from local database. -pub struct FullChain { +pub struct FullChain { /// Substrate client. - client: Arc>, + client: Arc, /// Current subscriptions. subscriptions: Subscriptions, + /// phantom member to pin the block type + _phantom: PhantomData, } -impl FullChain { +impl FullChain { /// Create new Chain API RPC handler. - pub fn new(client: Arc>, subscriptions: Subscriptions) -> Self { + pub fn new(client: Arc, subscriptions: Subscriptions) -> Self { Self { client, subscriptions, + _phantom: PhantomData, } } } -impl ChainBackend for FullChain where +impl ChainBackend for FullChain where Block: BlockT + 'static, - B: Backend + Send + Sync + 'static, - E: CallExecutor + Send + Sync + 'static, - RA: Send + Sync + 'static, + Client: BlockBody + HeaderBackend + BlockchainEvents + 'static, { - fn client(&self) -> &Arc> { + fn client(&self) -> &Arc { &self.client } @@ -60,7 +62,7 @@ impl ChainBackend for FullChain) -> FutureResult> { Box::new(result(self.client - .header(&BlockId::Hash(self.unwrap_or_best(hash))) + .header(BlockId::Hash(self.unwrap_or_best(hash))) .map_err(client_err) )) } diff --git a/client/rpc/src/chain/chain_light.rs b/client/rpc/src/chain/chain_light.rs index 3e26bd24bb..b258c8dd3b 100644 --- a/client/rpc/src/chain/chain_light.rs +++ b/client/rpc/src/chain/chain_light.rs @@ -22,7 +22,7 @@ use rpc::futures::future::{result, Future, Either}; use sc_rpc_api::Subscriptions; use sc_client::{ - Client, light::{fetcher::{Fetcher, RemoteBodyRequest}, blockchain::RemoteBlockchain}, + light::{fetcher::{Fetcher, RemoteBodyRequest}, blockchain::RemoteBlockchain}, }; use sp_runtime::{ generic::{BlockId, SignedBlock}, @@ -30,12 +30,14 @@ use sp_runtime::{ }; use super::{ChainBackend, client_err, error::FutureResult}; +use sp_blockchain::HeaderBackend; +use sc_client_api::BlockchainEvents; /// Blockchain API backend for light nodes. Reads all the data from local /// database, if available, or fetches it from remote node otherwise. -pub struct LightChain { +pub struct LightChain { /// Substrate client. - client: Arc>, + client: Arc, /// Current subscriptions. subscriptions: Subscriptions, /// Remote blockchain reference @@ -44,10 +46,10 @@ pub struct LightChain { fetcher: Arc, } -impl> LightChain { +impl> LightChain { /// Create new Chain API RPC handler. pub fn new( - client: Arc>, + client: Arc, subscriptions: Subscriptions, remote_blockchain: Arc>, fetcher: Arc, @@ -61,14 +63,12 @@ impl> LightChain } } -impl ChainBackend for LightChain where +impl ChainBackend for LightChain where Block: BlockT + 'static, - B: sc_client_api::backend::Backend + Send + Sync + 'static, - E: sc_client::CallExecutor + Send + Sync + 'static, - RA: Send + Sync + 'static, + Client: BlockchainEvents + HeaderBackend + Send + Sync + 'static, F: Fetcher + Send + Sync + 'static, { - fn client(&self) -> &Arc> { + fn client(&self) -> &Arc { &self.client } diff --git a/client/rpc/src/chain/mod.rs b/client/rpc/src/chain/mod.rs index 5285de670d..e7a927e780 100644 --- a/client/rpc/src/chain/mod.rs +++ b/client/rpc/src/chain/mod.rs @@ -32,7 +32,7 @@ use rpc::{ use sc_rpc_api::Subscriptions; use sc_client::{ - self, Client, BlockchainEvents, + self, BlockchainEvents, light::{fetcher::Fetcher, blockchain::RemoteBlockchain}, }; use jsonrpc_pubsub::{typed::Subscriber, SubscriptionId}; @@ -45,16 +45,17 @@ use sp_runtime::{ use self::error::{Result, Error, FutureResult}; pub use sc_rpc_api::chain::*; +use sp_blockchain::HeaderBackend; +use sc_client_api::BlockBody; /// Blockchain backend API -trait ChainBackend: Send + Sync + 'static +trait ChainBackend: Send + Sync + 'static where Block: BlockT + 'static, - B: sc_client_api::backend::Backend + Send + Sync + 'static, - E: sc_client::CallExecutor + Send + Sync + 'static, + Client: HeaderBackend + BlockchainEvents + 'static, { /// Get client reference. - fn client(&self) -> &Arc>; + fn client(&self) -> &Arc; /// Get subscriptions reference. fn subscriptions(&self) -> &Subscriptions; @@ -62,7 +63,7 @@ trait ChainBackend: Send + Sync + 'static /// Tries to unwrap passed block hash, or uses best block hash otherwise. fn unwrap_or_best(&self, hash: Option) -> Block::Hash { match hash.into() { - None => self.client().chain_info().best_hash, + None => self.client().info().best_hash, Some(hash) => hash, } } @@ -81,9 +82,9 @@ trait ChainBackend: Send + Sync + 'static number: Option>>, ) -> Result> { Ok(match number { - None => Some(self.client().chain_info().best_hash), + None => Some(self.client().info().best_hash), Some(num_or_hex) => self.client() - .header(&BlockId::number(num_or_hex.to_number()?)) + .header(BlockId::number(num_or_hex.to_number()?)) .map_err(client_err)? .map(|h| h.hash()), }) @@ -91,7 +92,7 @@ trait ChainBackend: Send + Sync + 'static /// Get hash of the last finalized block in the canon chain. fn finalized_head(&self) -> Result { - Ok(self.client().chain_info().finalized_hash) + Ok(self.client().info().finalized_hash) } /// All new head subscription @@ -104,7 +105,7 @@ trait ChainBackend: Send + Sync + 'static self.client(), self.subscriptions(), subscriber, - || self.client().chain_info().best_hash, + || self.client().info().best_hash, || self.client().import_notification_stream() .map(|notification| Ok::<_, ()>(notification.header)) .compat(), @@ -130,7 +131,7 @@ trait ChainBackend: Send + Sync + 'static self.client(), self.subscriptions(), subscriber, - || self.client().chain_info().best_hash, + || self.client().info().best_hash, || self.client().import_notification_stream() .filter(|notification| future::ready(notification.is_new_best)) .map(|notification| Ok::<_, ()>(notification.header)) @@ -157,7 +158,7 @@ trait ChainBackend: Send + Sync + 'static self.client(), self.subscriptions(), subscriber, - || self.client().chain_info().finalized_hash, + || self.client().info().finalized_hash, || self.client().finality_notification_stream() .map(|notification| Ok::<_, ()>(notification.header)) .compat(), @@ -175,15 +176,13 @@ trait ChainBackend: Send + Sync + 'static } /// Create new state API that works on full node. -pub fn new_full( - client: Arc>, +pub fn new_full( + client: Arc, subscriptions: Subscriptions, -) -> Chain +) -> Chain where Block: BlockT + 'static, - B: sc_client_api::backend::Backend + Send + Sync + 'static, - E: sc_client::CallExecutor + Send + Sync + 'static + Clone, - RA: Send + Sync + 'static, + Client: BlockBody + HeaderBackend + BlockchainEvents + 'static, { Chain { backend: Box::new(self::chain_full::FullChain::new(client, subscriptions)), @@ -191,17 +190,15 @@ pub fn new_full( } /// Create new state API that works on light node. -pub fn new_light>( - client: Arc>, +pub fn new_light>( + client: Arc, subscriptions: Subscriptions, remote_blockchain: Arc>, fetcher: Arc, -) -> Chain +) -> Chain where Block: BlockT + 'static, - B: sc_client_api::backend::Backend + Send + Sync + 'static, - E: sc_client::CallExecutor + Send + Sync + 'static + Clone, - RA: Send + Sync + 'static, + Client: BlockBody + HeaderBackend + BlockchainEvents + 'static, F: Send + Sync + 'static, { Chain { @@ -215,15 +212,15 @@ pub fn new_light>( } /// Chain API with subscriptions support. -pub struct Chain { - backend: Box>, +pub struct Chain { + backend: Box>, } -impl ChainApi, Block::Hash, Block::Header, SignedBlock> for Chain where - Block: BlockT + 'static, - B: sc_client_api::backend::Backend + Send + Sync + 'static, - E: sc_client::CallExecutor + Send + Sync + 'static, - RA: Send + Sync + 'static +impl ChainApi, Block::Hash, Block::Header, SignedBlock> for + Chain + where + Block: BlockT + 'static, + Client: HeaderBackend + BlockchainEvents + 'static, { type Metadata = crate::metadata::Metadata; @@ -281,16 +278,15 @@ impl ChainApi, Block::Hash, Block::Header, Sig } /// Subscribe to new headers. -fn subscribe_headers( - client: &Arc>, +fn subscribe_headers( + client: &Arc, subscriptions: &Subscriptions, subscriber: Subscriber, best_block_hash: G, stream: F, ) where Block: BlockT + 'static, - B: sc_client_api::backend::Backend + Send + Sync + 'static, - E: sc_client::CallExecutor + Send + Sync + 'static, + Client: HeaderBackend + 'static, F: FnOnce() -> S, G: FnOnce() -> Block::Hash, ERR: ::std::fmt::Debug, @@ -298,7 +294,7 @@ fn subscribe_headers( { subscriptions.add(subscriber, |sink| { // send current head right at the start. - let header = client.header(&BlockId::Hash(best_block_hash())) + let header = client.header(BlockId::Hash(best_block_hash())) .map_err(client_err) .and_then(|header| { header.ok_or_else(|| "Best header missing.".to_owned().into()) diff --git a/client/rpc/src/state/mod.rs b/client/rpc/src/state/mod.rs index 8f621cc8af..82568866ee 100644 --- a/client/rpc/src/state/mod.rs +++ b/client/rpc/src/state/mod.rs @@ -27,26 +27,26 @@ use jsonrpc_pubsub::{typed::Subscriber, SubscriptionId}; use rpc::{Result as RpcResult, futures::{Future, future::result}}; use sc_rpc_api::Subscriptions; -use sc_client::{Client, CallExecutor, light::{blockchain::RemoteBlockchain, fetcher::Fetcher}}; +use sc_client::{light::{blockchain::RemoteBlockchain, fetcher::Fetcher}}; use sp_core::{Bytes, storage::{StorageKey, StorageData, StorageChangeSet}}; use sp_version::RuntimeVersion; use sp_runtime::traits::Block as BlockT; -use sp_api::{Metadata, ProvideRuntimeApi}; +use sp_api::{Metadata, ProvideRuntimeApi, CallApiAt}; use self::error::{Error, FutureResult}; pub use sc_rpc_api::state::*; +use sc_client_api::{ExecutorProvider, StorageProvider, BlockchainEvents, Backend}; +use sp_blockchain::{HeaderMetadata, HeaderBackend}; const STORAGE_KEYS_PAGED_MAX_COUNT: u32 = 1000; /// State backend API. -pub trait StateBackend: Send + Sync + 'static +pub trait StateBackend: Send + Sync + 'static where Block: BlockT + 'static, - B: sc_client_api::backend::Backend + Send + Sync + 'static, - E: sc_client::CallExecutor + Send + Sync + 'static, - RA: Send + Sync + 'static, + Client: Send + Sync + 'static, { /// Call runtime method at given block. fn call( @@ -194,18 +194,18 @@ pub trait StateBackend: Send + Sync + 'static } /// Create new state API that works on full node. -pub fn new_full( - client: Arc>, +pub fn new_full( + client: Arc, subscriptions: Subscriptions, -) -> State +) -> State where Block: BlockT + 'static, - B: sc_client_api::backend::Backend + Send + Sync + 'static, - E: CallExecutor + Send + Sync + 'static + Clone, - RA: Send + Sync + 'static, - Client: ProvideRuntimeApi, - as ProvideRuntimeApi>::Api: - Metadata, + BE: Backend + 'static, + Client: ExecutorProvider + StorageProvider + HeaderBackend + + HeaderMetadata + BlockchainEvents + + CallApiAt + + ProvideRuntimeApi + Send + Sync + 'static, + Client::Api: Metadata, { State { backend: Box::new(self::state_full::FullState::new(client, subscriptions)), @@ -213,17 +213,19 @@ pub fn new_full( } /// Create new state API that works on light node. -pub fn new_light>( - client: Arc>, +pub fn new_light>( + client: Arc, subscriptions: Subscriptions, remote_blockchain: Arc>, fetcher: Arc, -) -> State +) -> State where Block: BlockT + 'static, - B: sc_client_api::backend::Backend + Send + Sync + 'static, - E: CallExecutor + Send + Sync + 'static + Clone, - RA: Send + Sync + 'static, + BE: Backend + 'static, + Client: ExecutorProvider + StorageProvider + + HeaderMetadata + + ProvideRuntimeApi + HeaderBackend + BlockchainEvents + + Send + Sync + 'static, F: Send + Sync + 'static, { State { @@ -237,16 +239,14 @@ pub fn new_light>( } /// State API with subscriptions support. -pub struct State { - backend: Box>, +pub struct State { + backend: Box>, } -impl StateApi for State +impl StateApi for State where Block: BlockT + 'static, - B: sc_client_api::backend::Backend + Send + Sync + 'static, - E: CallExecutor + Send + Sync + 'static + Clone, - RA: Send + Sync + 'static, + Client: Send + Sync + 'static, { type Metadata = crate::metadata::Metadata; diff --git a/client/rpc/src/state/state_full.rs b/client/rpc/src/state/state_full.rs index 3d5613626e..b7589d2aef 100644 --- a/client/rpc/src/state/state_full.rs +++ b/client/rpc/src/state/state_full.rs @@ -26,12 +26,8 @@ use rpc::{Result as RpcResult, futures::{stream, Future, Sink, Stream, future::r use sc_rpc_api::Subscriptions; use sc_client_api::backend::Backend; -use sp_blockchain::{ - Result as ClientResult, Error as ClientError, HeaderMetadata, CachedHeaderMetadata -}; -use sc_client::{ - Client, CallExecutor, BlockchainEvents -}; +use sp_blockchain::{Result as ClientResult, Error as ClientError, HeaderMetadata, CachedHeaderMetadata, HeaderBackend}; +use sc_client::BlockchainEvents; use sp_core::{ Bytes, storage::{well_known_keys, StorageKey, StorageData, StorageChangeSet, ChildInfo}, }; @@ -40,9 +36,11 @@ use sp_runtime::{ generic::BlockId, traits::{Block as BlockT, NumberFor, SaturatedConversion}, }; -use sp_api::{Metadata, ProvideRuntimeApi}; +use sp_api::{Metadata, ProvideRuntimeApi, CallApiAt}; use super::{StateBackend, error::{FutureResult, Error, Result}, client_err, child_resolution_error}; +use std::marker::PhantomData; +use sc_client_api::{CallExecutor, StorageProvider, ExecutorProvider}; /// Ranges to query in state_queryStorage. struct QueryStorageRange { @@ -59,25 +57,27 @@ struct QueryStorageRange { } /// State API backend for full nodes. -pub struct FullState { - client: Arc>, +pub struct FullState { + client: Arc, subscriptions: Subscriptions, + _phantom: PhantomData<(BE, Block)> } -impl FullState +impl FullState where + BE: Backend, + Client: StorageProvider + HeaderBackend + + HeaderMetadata, Block: BlockT + 'static, - B: Backend + Send + Sync + 'static, - E: CallExecutor + Send + Sync + 'static + Clone, { /// Create new state API backend for full nodes. - pub fn new(client: Arc>, subscriptions: Subscriptions) -> Self { - Self { client, subscriptions } + pub fn new(client: Arc, subscriptions: Subscriptions) -> Self { + Self { client, subscriptions, _phantom: PhantomData } } /// Returns given block hash or best block hash if None is passed. fn block_or_best(&self, hash: Option) -> ClientResult { - Ok(hash.unwrap_or_else(|| self.client.chain_info().best_hash)) + Ok(hash.unwrap_or_else(|| self.client.info().best_hash)) } /// Splits the `query_storage` block range into 'filtered' and 'unfiltered' subranges. @@ -212,14 +212,14 @@ impl FullState } } -impl StateBackend for FullState where +impl StateBackend for FullState where Block: BlockT + 'static, - B: Backend + Send + Sync + 'static, - E: CallExecutor + Send + Sync + 'static + Clone, - RA: Send + Sync + 'static, - Client: ProvideRuntimeApi, - as ProvideRuntimeApi>::Api: - Metadata, + BE: Backend + 'static, + Client: ExecutorProvider + StorageProvider + HeaderBackend + + HeaderMetadata + BlockchainEvents + + CallApiAt + ProvideRuntimeApi + + Send + Sync + 'static, + Client::Api: Metadata, { fn call( &self, @@ -424,7 +424,7 @@ impl StateBackend for FullState StateBackend for FullState>; /// State API backend for light nodes. -pub struct LightState, B, E, RA> { - client: Arc>, +pub struct LightState, Client> { + client: Arc, subscriptions: Subscriptions, version_subscriptions: SimpleSubscriptions, storage_subscriptions: Arc>>, @@ -134,16 +133,14 @@ impl SharedRequests for SimpleSubscriptions where } } -impl + 'static, B, E, RA> LightState +impl + 'static, Client> LightState where Block: BlockT, - B: Backend + Send + Sync + 'static, - E: CallExecutor + Send + Sync + 'static + Clone, - RA: Send + Sync + 'static, + Client: HeaderBackend + Send + Sync + 'static, { /// Create new state API backend for light nodes. pub fn new( - client: Arc>, + client: Arc, subscriptions: Subscriptions, remote_blockchain: Arc>, fetcher: Arc, @@ -164,16 +161,14 @@ impl + 'static, B, E, RA> LightState) -> Block::Hash { - hash.unwrap_or_else(|| self.client.chain_info().best_hash) + hash.unwrap_or_else(|| self.client.info().best_hash) } } -impl StateBackend for LightState +impl StateBackend for LightState where Block: BlockT, - B: Backend + Send + Sync + 'static, - E: CallExecutor + Send + Sync + 'static + Clone, - RA: Send + Sync + 'static, + Client: BlockchainEvents + HeaderBackend + Send + Sync + 'static, F: Fetcher + 'static { fn call( diff --git a/client/service/src/builder.rs b/client/service/src/builder.rs index bfb979c19e..096f492e64 100644 --- a/client/service/src/builder.rs +++ b/client/service/src/builder.rs @@ -23,6 +23,7 @@ use sc_client_api::{ BlockchainEvents, backend::RemoteBackend, light::RemoteBlockchain, execution_extensions::ExtensionsFactory, + ExecutorProvider, CallExecutor }; use sc_client::Client; use sc_chain_spec::{RuntimeGenesis, Extension}; @@ -799,7 +800,9 @@ ServiceBuilder< TBackend::OffchainStorage, TBl >, - >, Error> { + >, Error> + where TExec: CallExecutor, + { let ServiceBuilder { marker: _, mut config, diff --git a/client/service/src/chain_ops.rs b/client/service/src/chain_ops.rs index 03db9232a1..350aac9175 100644 --- a/client/service/src/chain_ops.rs +++ b/client/service/src/chain_ops.rs @@ -35,6 +35,7 @@ use sp_consensus::{ use sc_executor::{NativeExecutor, NativeExecutionDispatch}; use std::{io::{Read, Write, Seek}, pin::Pin}; +use sc_client_api::BlockBody; /// Build a chain spec json pub fn build_spec(spec: ChainSpec, raw: bool) -> error::Result where diff --git a/client/src/client.rs b/client/src/client.rs index 8941487039..c921d29701 100644 --- a/client/src/client.rs +++ b/client/src/client.rs @@ -66,7 +66,8 @@ pub use sc_client_api::{ backend::{ self, BlockImportOperation, PrunableStateChangesTrieStorage, ClientImportOperation, Finalizer, ImportSummary, NewBlockState, - LockImportRun, changes_tries_state_at_block, + changes_tries_state_at_block, StorageProvider, + LockImportRun, }, client::{ ImportNotifications, FinalityNotification, FinalityNotifications, BlockImportNotification, @@ -75,7 +76,7 @@ pub use sc_client_api::{ }, execution_extensions::{ExecutionExtensions, ExecutionStrategies}, notifications::{StorageNotifications, StorageEventStream}, - CallExecutor, + CallExecutor, ExecutorProvider, ProofProvider, }; use sp_blockchain::Error; use prometheus_endpoint::Registry; @@ -85,6 +86,7 @@ use crate::{ light::{call_executor::prove_execution, fetcher::ChangesProof}, in_mem, genesis, cht, block_rules::{BlockRules, LookupResult as BlockLookupResult}, }; +use crate::client::backend::KeyIterator; /// Substrate Client pub struct Client where Block: BlockT { @@ -100,46 +102,6 @@ pub struct Client where Block: BlockT { _phantom: PhantomData, } -/// An `Iterator` that iterates keys in a given block under a prefix. -pub struct KeyIterator<'a, State, Block> { - state: State, - prefix: Option<&'a StorageKey>, - current_key: Vec, - _phantom: PhantomData, -} - -impl <'a, State, Block> KeyIterator<'a, State, Block> { - fn new(state: State, prefix: Option<&'a StorageKey>, current_key: Vec) -> Self { - Self { - state, - prefix, - current_key, - _phantom: PhantomData, - } - } -} - -impl<'a, State, Block> Iterator for KeyIterator<'a, State, Block> where - Block: BlockT, - State: StateBackend>, -{ - type Item = StorageKey; - - fn next(&mut self) -> Option { - let next_key = self.state - .next_storage_key(&self.current_key) - .ok() - .flatten()?; - if let Some(prefix) = self.prefix { - if !next_key.starts_with(&prefix.0[..]) { - return None; - } - } - self.current_key = next_key.clone(); - Some(StorageKey(next_key)) - } -} - // used in importing a block, where additional changes are made after the runtime // executed. enum PrePostHeader { @@ -324,119 +286,14 @@ impl Client where }) } - /// Get a reference to the execution extensions. - pub fn execution_extensions(&self) -> &ExecutionExtensions { - &self.execution_extensions - } - /// Get a reference to the state at a given block. pub fn state_at(&self, block: &BlockId) -> sp_blockchain::Result { self.backend.state_at(*block) } - /// Given a `BlockId` and a key prefix, return the matching storage keys in that block. - pub fn storage_keys(&self, id: &BlockId, key_prefix: &StorageKey) -> sp_blockchain::Result> { - let keys = self.state_at(id)?.keys(&key_prefix.0).into_iter().map(StorageKey).collect(); - Ok(keys) - } - - /// Given a `BlockId` and a key prefix, return the matching child storage keys and values in that block. - pub fn storage_pairs(&self, id: &BlockId, key_prefix: &StorageKey) - -> sp_blockchain::Result> - { - let state = self.state_at(id)?; - let keys = state - .keys(&key_prefix.0) - .into_iter() - .map(|k| { - let d = state.storage(&k).ok().flatten().unwrap_or_default(); - (StorageKey(k), StorageData(d)) - }) - .collect(); - Ok(keys) - } - - /// Given a `BlockId` and a key prefix, return a `KeyIterator` iterates matching storage keys in that block. - pub fn storage_keys_iter<'a>( - &self, - id: &BlockId, - prefix: Option<&'a StorageKey>, - start_key: Option<&StorageKey> - ) -> sp_blockchain::Result> { - let state = self.state_at(id)?; - let start_key = start_key - .or(prefix) - .map(|key| key.0.clone()) - .unwrap_or_else(Vec::new); - Ok(KeyIterator::new(state, prefix, start_key)) - } - - /// Given a `BlockId` and a key, return the value under the key in that block. - pub fn storage(&self, id: &BlockId, key: &StorageKey) - -> sp_blockchain::Result> - { - Ok(self.state_at(id)? - .storage(&key.0).map_err(|e| sp_blockchain::Error::from_state(Box::new(e)))? - .map(StorageData) - ) - } - - /// Given a `BlockId` and a key, return the value under the hash in that block. - pub fn storage_hash(&self, id: &BlockId, key: &StorageKey) - -> sp_blockchain::Result> - { - Ok(self.state_at(id)? - .storage_hash(&key.0).map_err(|e| sp_blockchain::Error::from_state(Box::new(e)))? - ) - } - - /// Given a `BlockId`, a key prefix, and a child storage key, return the matching child storage keys. - pub fn child_storage_keys( - &self, - id: &BlockId, - child_storage_key: &StorageKey, - child_info: ChildInfo, - key_prefix: &StorageKey - ) -> sp_blockchain::Result> { - let keys = self.state_at(id)? - .child_keys(&child_storage_key.0, child_info, &key_prefix.0) - .into_iter() - .map(StorageKey) - .collect(); - Ok(keys) - } - - /// Given a `BlockId`, a key and a child storage key, return the value under the key in that block. - pub fn child_storage( - &self, - id: &BlockId, - storage_key: &StorageKey, - child_info: ChildInfo, - key: &StorageKey - ) -> sp_blockchain::Result> { - Ok(self.state_at(id)? - .child_storage(&storage_key.0, child_info, &key.0) - .map_err(|e| sp_blockchain::Error::from_state(Box::new(e)))? - .map(StorageData)) - } - - /// Given a `BlockId`, a key and a child storage key, return the hash under the key in that block. - pub fn child_storage_hash( - &self, - id: &BlockId, - storage_key: &StorageKey, - child_info: ChildInfo, - key: &StorageKey - ) -> sp_blockchain::Result> { - Ok(self.state_at(id)? - .child_storage_hash(&storage_key.0, child_info, &key.0) - .map_err(|e| sp_blockchain::Error::from_state(Box::new(e)))? - ) - } - /// Get the code at a given block. pub fn code_at(&self, id: &BlockId) -> sp_blockchain::Result> { - Ok(self.storage(id, &StorageKey(well_known_keys::CODE.to_vec()))? + Ok(StorageProvider::storage(self, id, &StorageKey(well_known_keys::CODE.to_vec()))? .expect("None is returned if there's no value stored for the given key;\ ':code' key is always defined; qed").0) } @@ -446,57 +303,6 @@ impl Client where self.executor.runtime_version(id) } - /// Get call executor reference. - pub fn executor(&self) -> &E { - &self.executor - } - - /// Reads storage value at a given block + key, returning read proof. - pub fn read_proof(&self, id: &BlockId, keys: I) -> sp_blockchain::Result where - I: IntoIterator, - I::Item: AsRef<[u8]>, - { - self.state_at(id) - .and_then(|state| prove_read(state, keys) - .map_err(Into::into)) - } - - /// Reads child storage value at a given block + storage_key + key, returning - /// read proof. - pub fn read_child_proof( - &self, - id: &BlockId, - storage_key: &[u8], - child_info: ChildInfo, - keys: I, - ) -> sp_blockchain::Result where - I: IntoIterator, - I::Item: AsRef<[u8]>, - { - self.state_at(id) - .and_then(|state| prove_child_read(state, storage_key, child_info, keys) - .map_err(Into::into)) - } - - /// Execute a call to a contract on top of state in a block of given hash - /// AND returning execution proof. - /// - /// No changes are made. - pub fn execution_proof(&self, - id: &BlockId, - method: &str, - call_data: &[u8] - ) -> sp_blockchain::Result<(Vec, StorageProof)> { - let state = self.state_at(id)?; - let header = self.prepare_environment_block(id)?; - prove_execution(state, header, &self.executor, method, call_data) - } - - /// Reads given header and generates CHT-based header proof. - pub fn header_proof(&self, id: &BlockId) -> sp_blockchain::Result<(Block::Header, StorageProof)> { - self.header_proof_with_cht_size(id, cht::size()) - } - /// Get block hash by number. pub fn block_hash(&self, block_number: <::Header as HeaderT>::Number @@ -531,112 +337,6 @@ impl Client where Ok((header, proof)) } - /// Get longest range within [first; last] that is possible to use in `key_changes` - /// and `key_changes_proof` calls. - /// Range could be shortened from the beginning if some changes tries have been pruned. - /// Returns Ok(None) if changes tries are not supported. - pub fn max_key_changes_range( - &self, - first: NumberFor, - last: BlockId, - ) -> sp_blockchain::Result, BlockId)>> { - let last_number = self.backend.blockchain().expect_block_number_from_id(&last)?; - let last_hash = self.backend.blockchain().expect_block_hash_from_id(&last)?; - if first > last_number { - return Err(sp_blockchain::Error::ChangesTrieAccessFailed("Invalid changes trie range".into())); - } - - let (storage, configs) = match self.require_changes_trie(first, last_hash, false).ok() { - Some((storage, configs)) => (storage, configs), - None => return Ok(None), - }; - - let first_available_changes_trie = configs.last().map(|config| config.0); - match first_available_changes_trie { - Some(first_available_changes_trie) => { - let oldest_unpruned = storage.oldest_pruned_digest_range_end(); - let first = std::cmp::max(first_available_changes_trie, oldest_unpruned); - Ok(Some((first, last))) - }, - None => Ok(None) - } - } - - /// Get pairs of (block, extrinsic) where key has been changed at given blocks range. - /// Works only for runtimes that are supporting changes tries. - /// - /// Changes are returned in descending order (i.e. last block comes first). - pub fn key_changes( - &self, - first: NumberFor, - last: BlockId, - storage_key: Option<&StorageKey>, - key: &StorageKey - ) -> sp_blockchain::Result, u32)>> { - let last_number = self.backend.blockchain().expect_block_number_from_id(&last)?; - let last_hash = self.backend.blockchain().expect_block_hash_from_id(&last)?; - let (storage, configs) = self.require_changes_trie(first, last_hash, true)?; - - let mut result = Vec::new(); - let best_number = self.backend.blockchain().info().best_number; - for (config_zero, config_end, config) in configs { - let range_first = ::std::cmp::max(first, config_zero + One::one()); - let range_anchor = match config_end { - Some((config_end_number, config_end_hash)) => if last_number > config_end_number { - ChangesTrieAnchorBlockId { hash: config_end_hash, number: config_end_number } - } else { - ChangesTrieAnchorBlockId { hash: convert_hash(&last_hash), number: last_number } - }, - None => ChangesTrieAnchorBlockId { hash: convert_hash(&last_hash), number: last_number }, - }; - - let config_range = ChangesTrieConfigurationRange { - config: &config, - zero: config_zero.clone(), - end: config_end.map(|(config_end_number, _)| config_end_number), - }; - let result_range: Vec<(NumberFor, u32)> = key_changes::, _>( - config_range, - storage.storage(), - range_first, - &range_anchor, - best_number, - storage_key.as_ref().map(|x| &x.0[..]), - &key.0) - .and_then(|r| r.map(|r| r.map(|(block, tx)| (block, tx))).collect::>()) - .map_err(|err| sp_blockchain::Error::ChangesTrieAccessFailed(err))?; - result.extend(result_range); - } - - Ok(result) - } - - /// Get proof for computation of (block, extrinsic) pairs where key has been changed at given blocks range. - /// `min` is the hash of the first block, which changes trie root is known to the requester - when we're using - /// changes tries from ascendants of this block, we should provide proofs for changes tries roots - /// `max` is the hash of the last block known to the requester - we can't use changes tries from descendants - /// of this block. - /// Works only for runtimes that are supporting changes tries. - pub fn key_changes_proof( - &self, - first: Block::Hash, - last: Block::Hash, - min: Block::Hash, - max: Block::Hash, - storage_key: Option<&StorageKey>, - key: &StorageKey, - ) -> sp_blockchain::Result> { - self.key_changes_proof_with_cht_size( - first, - last, - min, - max, - storage_key, - key, - cht::size(), - ) - } - /// Does the same work as `key_changes_proof`, but assumes that CHTs are of passed size. pub fn key_changes_proof_with_cht_size( &self, @@ -1344,17 +1044,6 @@ impl Client where self.backend.blockchain().justification(*id) } - /// Get full block by id. - pub fn block(&self, id: &BlockId) - -> sp_blockchain::Result>> - { - Ok(match (self.header(id)?, self.body(id)?, self.justification(id)?) { - (Some(header), Some(extrinsics), justification) => - Some(SignedBlock { block: Block::new(header, extrinsics), justification }), - _ => None, - }) - } - /// Gets the uncles of the block with `target_hash` going back `max_generation` ancestors. pub fn uncles(&self, target_hash: Block::Hash, max_generation: NumberFor) -> sp_blockchain::Result> { let load_header = |id: Block::Hash| -> sp_blockchain::Result { @@ -1399,6 +1088,70 @@ impl Client where } } +impl ProofProvider for Client where + B: backend::Backend, + E: CallExecutor, + Block: BlockT, +{ + fn read_proof( + &self, + id: &BlockId, + keys: &mut dyn Iterator, + ) -> sp_blockchain::Result { + self.state_at(id) + .and_then(|state| prove_read(state, keys) + .map_err(Into::into)) + } + + fn read_child_proof( + &self, + id: &BlockId, + storage_key: &[u8], + child_info: ChildInfo, + keys: &mut dyn Iterator, + ) -> sp_blockchain::Result { + self.state_at(id) + .and_then(|state| prove_child_read(state, storage_key, child_info, keys) + .map_err(Into::into)) + } + + fn execution_proof( + &self, + id: &BlockId, + method: &str, + call_data: &[u8] + ) -> sp_blockchain::Result<(Vec, StorageProof)> { + let state = self.state_at(id)?; + let header = self.prepare_environment_block(id)?; + prove_execution(state, header, &self.executor, method, call_data) + } + + fn header_proof(&self, id: &BlockId) -> sp_blockchain::Result<(Block::Header, StorageProof)> { + self.header_proof_with_cht_size(id, cht::size()) + } + + fn key_changes_proof( + &self, + first: Block::Hash, + last: Block::Hash, + min: Block::Hash, + max: Block::Hash, + storage_key: Option<&StorageKey>, + key: &StorageKey, + ) -> sp_blockchain::Result> { + self.key_changes_proof_with_cht_size( + first, + last, + min, + max, + storage_key, + key, + cht::size(), + ) + } +} + + impl BlockBuilderProvider for Client where B: backend::Backend + Send + Sync + 'static, @@ -1425,6 +1178,196 @@ impl BlockBuilderProvider for Client ExecutorProvider for Client where + B: backend::Backend, + E: CallExecutor, + Block: BlockT, +{ + type Executor = E; + + fn executor(&self) -> &Self::Executor { + &self.executor + } + + fn execution_extensions(&self) -> &ExecutionExtensions { + &self.execution_extensions + } +} + +impl StorageProvider for Client where + B: backend::Backend, + E: CallExecutor, + Block: BlockT, +{ + fn storage_keys(&self, id: &BlockId, key_prefix: &StorageKey) -> sp_blockchain::Result> { + let keys = self.state_at(id)?.keys(&key_prefix.0).into_iter().map(StorageKey).collect(); + Ok(keys) + } + + fn storage_pairs(&self, id: &BlockId, key_prefix: &StorageKey) + -> sp_blockchain::Result> + { + let state = self.state_at(id)?; + let keys = state + .keys(&key_prefix.0) + .into_iter() + .map(|k| { + let d = state.storage(&k).ok().flatten().unwrap_or_default(); + (StorageKey(k), StorageData(d)) + }) + .collect(); + Ok(keys) + } + + + fn storage_keys_iter<'a>( + &self, + id: &BlockId, + prefix: Option<&'a StorageKey>, + start_key: Option<&StorageKey> + ) -> sp_blockchain::Result> { + let state = self.state_at(id)?; + let start_key = start_key + .or(prefix) + .map(|key| key.0.clone()) + .unwrap_or_else(Vec::new); + Ok(KeyIterator::new(state, prefix, start_key)) + } + + + fn storage(&self, id: &BlockId, key: &StorageKey) -> sp_blockchain::Result> + { + Ok(self.state_at(id)? + .storage(&key.0).map_err(|e| sp_blockchain::Error::from_state(Box::new(e)))? + .map(StorageData) + ) + } + + + fn storage_hash(&self, id: &BlockId, key: &StorageKey) -> sp_blockchain::Result> + { + Ok(self.state_at(id)? + .storage_hash(&key.0).map_err(|e| sp_blockchain::Error::from_state(Box::new(e)))? + ) + } + + + fn child_storage_keys( + &self, + id: &BlockId, + child_storage_key: &StorageKey, + child_info: ChildInfo, + key_prefix: &StorageKey + ) -> sp_blockchain::Result> { + let keys = self.state_at(id)? + .child_keys(&child_storage_key.0, child_info, &key_prefix.0) + .into_iter() + .map(StorageKey) + .collect(); + Ok(keys) + } + + + fn child_storage( + &self, + id: &BlockId, + storage_key: &StorageKey, + child_info: ChildInfo, + key: &StorageKey + ) -> sp_blockchain::Result> { + Ok(self.state_at(id)? + .child_storage(&storage_key.0, child_info, &key.0) + .map_err(|e| sp_blockchain::Error::from_state(Box::new(e)))? + .map(StorageData)) + } + + + fn child_storage_hash( + &self, + id: &BlockId, + storage_key: &StorageKey, + child_info: ChildInfo, + key: &StorageKey + ) -> sp_blockchain::Result> { + Ok(self.state_at(id)? + .child_storage_hash(&storage_key.0, child_info, &key.0) + .map_err(|e| sp_blockchain::Error::from_state(Box::new(e)))? + ) + } + + fn max_key_changes_range( + &self, + first: NumberFor, + last: BlockId, + ) -> sp_blockchain::Result, BlockId)>> { + let last_number = self.backend.blockchain().expect_block_number_from_id(&last)?; + let last_hash = self.backend.blockchain().expect_block_hash_from_id(&last)?; + if first > last_number { + return Err(sp_blockchain::Error::ChangesTrieAccessFailed("Invalid changes trie range".into())); + } + + let (storage, configs) = match self.require_changes_trie(first, last_hash, false).ok() { + Some((storage, configs)) => (storage, configs), + None => return Ok(None), + }; + + let first_available_changes_trie = configs.last().map(|config| config.0); + match first_available_changes_trie { + Some(first_available_changes_trie) => { + let oldest_unpruned = storage.oldest_pruned_digest_range_end(); + let first = std::cmp::max(first_available_changes_trie, oldest_unpruned); + Ok(Some((first, last))) + }, + None => Ok(None) + } + } + + fn key_changes( + &self, + first: NumberFor, + last: BlockId, + storage_key: Option<&StorageKey>, + key: &StorageKey + ) -> sp_blockchain::Result, u32)>> { + let last_number = self.backend.blockchain().expect_block_number_from_id(&last)?; + let last_hash = self.backend.blockchain().expect_block_hash_from_id(&last)?; + let (storage, configs) = self.require_changes_trie(first, last_hash, true)?; + + let mut result = Vec::new(); + let best_number = self.backend.blockchain().info().best_number; + for (config_zero, config_end, config) in configs { + let range_first = ::std::cmp::max(first, config_zero + One::one()); + let range_anchor = match config_end { + Some((config_end_number, config_end_hash)) => if last_number > config_end_number { + ChangesTrieAnchorBlockId { hash: config_end_hash, number: config_end_number } + } else { + ChangesTrieAnchorBlockId { hash: convert_hash(&last_hash), number: last_number } + }, + None => ChangesTrieAnchorBlockId { hash: convert_hash(&last_hash), number: last_number }, + }; + + let config_range = ChangesTrieConfigurationRange { + config: &config, + zero: config_zero.clone(), + end: config_end.map(|(config_end_number, _)| config_end_number), + }; + let result_range: Vec<(NumberFor, u32)> = key_changes::, _>( + config_range, + storage.storage(), + range_first, + &range_anchor, + best_number, + storage_key.as_ref().map(|x| &x.0[..]), + &key.0) + .and_then(|r| r.map(|r| r.map(|(block, tx)| (block, tx))).collect::>()) + .map_err(|err| sp_blockchain::Error::ChangesTrieAccessFailed(err))?; + result.extend(result_range); + } + + Ok(result) + } +} + impl HeaderMetadata for Client where B: backend::Backend, E: CallExecutor, @@ -1902,6 +1845,15 @@ impl BlockBody for Client ) -> sp_blockchain::Result::Extrinsic>>> { self.body(id) } + + fn block(&self, id: &BlockId) -> sp_blockchain::Result>> + { + Ok(match (self.header(id)?, self.body(id)?, self.justification(id)?) { + (Some(header), Some(extrinsics), justification) => + Some(SignedBlock { block: Block::new(header, extrinsics), justification }), + _ => None, + }) + } } impl backend::AuxStore for Client diff --git a/client/src/light/call_executor.rs b/client/src/light/call_executor.rs index f8db30194b..cae5d5a0aa 100644 --- a/client/src/light/call_executor.rs +++ b/client/src/light/call_executor.rs @@ -40,7 +40,7 @@ use sp_blockchain::{Error as ClientError, Result as ClientResult}; use sc_client_api::{ backend::RemoteBackend, light::RemoteCallRequest, - call_executor::CallExecutor + call_executor::CallExecutor, }; use sc_executor::{RuntimeVersion, NativeVersion}; @@ -288,6 +288,7 @@ mod tests { use sp_core::H256; use sc_client_api::backend::{Backend, NewBlockState}; use crate::in_mem::Backend as InMemBackend; + use sc_client_api::ProofProvider; use sp_runtime::traits::BlakeTwo256; struct DummyCallExecutor; diff --git a/client/src/light/fetcher.rs b/client/src/light/fetcher.rs index c4989e90b5..87e21e3c0e 100644 --- a/client/src/light/fetcher.rs +++ b/client/src/light/fetcher.rs @@ -349,6 +349,7 @@ pub mod tests { use sp_runtime::{generic::BlockId, traits::BlakeTwo256}; use sp_state_machine::Backend; use super::*; + use sc_client_api::{StorageProvider, ProofProvider}; const CHILD_INFO_1: ChildInfo<'static> = ChildInfo::new_default(b"unique_id_1"); @@ -378,7 +379,7 @@ pub mod tests { .and_then(|v| Decode::decode(&mut &v.0[..]).ok()).unwrap(); let remote_read_proof = remote_client.read_proof( &remote_block_id, - &[well_known_keys::HEAP_PAGES], + &mut std::iter::once(well_known_keys::HEAP_PAGES), ).unwrap(); // check remote read proof locally @@ -426,7 +427,7 @@ pub mod tests { &remote_block_id, b":child_storage:default:child1", CHILD_INFO_1, - &[b"key1"], + &mut std::iter::once("key1".as_bytes()), ).unwrap(); // check locally -- GitLab From bee2f5d84db65f05d3fdb42a4edf113dc10263fc Mon Sep 17 00:00:00 2001 From: Kian Paimani <5588131+kianenigma@users.noreply.github.com> Date: Thu, 5 Mar 2020 16:59:29 +0100 Subject: [PATCH 119/301] Update primitives/phragmen/src/lib.rs Co-Authored-By: thiolliere --- primitives/phragmen/src/lib.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/primitives/phragmen/src/lib.rs b/primitives/phragmen/src/lib.rs index 8e27d40b14..dcca878d82 100644 --- a/primitives/phragmen/src/lib.rs +++ b/primitives/phragmen/src/lib.rs @@ -613,7 +613,7 @@ pub fn evaluate_support( } /// Compares two sets of phragmen scores based on desirability and returns true if `that` is -/// better `this`. +/// better than `this`. /// /// Evaluation is done in a lexicographic manner. /// -- GitLab From 3def57b55f46f78418a8f79327da3be4b40719fe Mon Sep 17 00:00:00 2001 From: Kian Paimani <5588131+kianenigma@users.noreply.github.com> Date: Thu, 5 Mar 2020 16:59:53 +0100 Subject: [PATCH 120/301] Update primitives/phragmen/src/lib.rs Co-Authored-By: thiolliere --- primitives/phragmen/src/lib.rs | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/primitives/phragmen/src/lib.rs b/primitives/phragmen/src/lib.rs index dcca878d82..4ec63a4b2e 100644 --- a/primitives/phragmen/src/lib.rs +++ b/primitives/phragmen/src/lib.rs @@ -639,11 +639,11 @@ pub fn is_score_better(this: PhragmenScore, that: PhragmenScore) -> bool { /// /// No value is returned from the function and the `supports` parameter is updated. /// -/// `assignments`: exactly the same is the output of phragmen. -/// `supports`: mutable reference to s `SupportMap`. This parameter is updated. -/// `tolerance`: maximum difference that can occur before an early quite happens. -/// `iterations`: maximum number of iterations that will be processed. -/// `stake_of`: something that can return the stake stake of a particular candidate or voter. +/// - `assignments`: exactly the same is the output of phragmen. +/// - `supports`: mutable reference to s `SupportMap`. This parameter is updated. +/// - `tolerance`: maximum difference that can occur before an early quite happens. +/// - `iterations`: maximum number of iterations that will be processed. +/// - `stake_of`: something that can return the stake stake of a particular candidate or voter. pub fn equalize( mut assignments: Vec>, supports: &mut SupportMap, -- GitLab From 9590986002a9b809aac381742ec11e28e41e0fbc Mon Sep 17 00:00:00 2001 From: Kian Paimani <5588131+kianenigma@users.noreply.github.com> Date: Thu, 5 Mar 2020 17:00:30 +0100 Subject: [PATCH 121/301] Update primitives/phragmen/compact/src/lib.rs Co-Authored-By: thiolliere --- primitives/phragmen/compact/src/lib.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/primitives/phragmen/compact/src/lib.rs b/primitives/phragmen/compact/src/lib.rs index 1d6ce46bcc..9c6b126c1b 100644 --- a/primitives/phragmen/compact/src/lib.rs +++ b/primitives/phragmen/compact/src/lib.rs @@ -35,8 +35,8 @@ const PREFIX: &'static str = "votes"; /// /// ```ignore /// // generate a struct with nominator and edge weight u128, with maximum supported -/// // edge per voter of 32. -/// generate_compact_solution_type(pub TestCompact, 32) +/// // edge per voter of 16. +/// generate_compact_solution_type(pub TestCompact, 16) /// ``` /// /// This generates: -- GitLab From 9e52443bfc5cd3e204351f8872aeca83a304a3cf Mon Sep 17 00:00:00 2001 From: Gavin Wood Date: Thu, 5 Mar 2020 17:00:31 +0100 Subject: [PATCH 122/301] Don't remove invalid transactions when skipping. (#5121) * Don't remove invalid transactions when skipping. * Use a special kind of extrinsic instead of arbitrary limit. * Fix txpool tests. * Attempt to create more blocks. * Bump lock Co-authored-by: Gavin Wood Co-authored-by: Nikolay Volf --- bin/node/executor/benches/bench.rs | 2 +- .../basic-authorship/src/basic_authorship.rs | 88 +++++++++++++++++-- .../transaction-pool/graph/benches/basics.rs | 6 +- client/transaction-pool/graph/src/pool.rs | 6 +- test-utils/runtime/src/lib.rs | 32 +++++-- test-utils/runtime/src/system.rs | 17 ++-- .../runtime/transaction-pool/src/lib.rs | 4 +- 7 files changed, 133 insertions(+), 22 deletions(-) diff --git a/bin/node/executor/benches/bench.rs b/bin/node/executor/benches/bench.rs index 3209bb8729..ef0cdf445a 100644 --- a/bin/node/executor/benches/bench.rs +++ b/bin/node/executor/benches/bench.rs @@ -166,7 +166,7 @@ fn bench_execute_block(c: &mut Criterion) { // Get the runtime version to initialize the runtimes cache. { let mut test_ext = new_test_ext(&genesis_config); - executor.runtime_version(&mut test_ext.ext()); + executor.runtime_version(&mut test_ext.ext()).unwrap(); } let blocks = test_blocks(&genesis_config, &executor); diff --git a/client/basic-authorship/src/basic_authorship.rs b/client/basic-authorship/src/basic_authorship.rs index 231d025591..41216c2b54 100644 --- a/client/basic-authorship/src/basic_authorship.rs +++ b/client/basic-authorship/src/basic_authorship.rs @@ -26,15 +26,15 @@ use sp_inherents::InherentData; use log::{error, info, debug, trace}; use sp_core::ExecutionContext; use sp_runtime::{ - traits::{Block as BlockT, Hash as HashT, Header as HeaderT, DigestFor, BlakeTwo256}, generic::BlockId, + traits::{Block as BlockT, Hash as HashT, Header as HeaderT, DigestFor, BlakeTwo256}, }; use sp_transaction_pool::{TransactionPool, InPoolTransaction}; use sc_telemetry::{telemetry, CONSENSUS_INFO}; use sc_block_builder::{BlockBuilderApi, BlockBuilderProvider}; use sp_api::{ProvideRuntimeApi, ApiExt}; use futures::prelude::*; -use sp_blockchain::HeaderBackend; +use sp_blockchain::{HeaderBackend, ApplyExtrinsicFailed}; use std::marker::PhantomData; /// Proposer factory. @@ -230,7 +230,7 @@ impl ProposerInner Ok(()) => { debug!("[{:?}] Pushed to the block.", pending_tx_hash); } - Err(sp_blockchain::Error::ApplyExtrinsicFailed(sp_blockchain::ApplyExtrinsicFailed::Validity(e))) + Err(sp_blockchain::Error::ApplyExtrinsicFailed(ApplyExtrinsicFailed::Validity(e))) if e.exhausted_resources() => { if is_first { debug!("[{:?}] Invalid transaction: FullBlock on empty block", pending_tx_hash); @@ -246,6 +246,13 @@ impl ProposerInner break; } } + Err(e) if skipped > 0 => { + trace!( + "[{:?}] Ignoring invalid transaction when skipping: {}", + pending_tx_hash, + e + ); + } Err(e) => { debug!("[{:?}] Invalid transaction: {}", pending_tx_hash, e); unqueue_invalid.push(pending_tx_hash); @@ -292,10 +299,10 @@ mod tests { use super::*; use parking_lot::Mutex; - use sp_consensus::Proposer; + use sp_consensus::{BlockOrigin, Proposer}; use substrate_test_runtime_client::{ - runtime::{Extrinsic, Transfer}, AccountKeyring, DefaultTestClientBuilderExt, - TestClientBuilderExt, + prelude::*, + runtime::{Extrinsic, Transfer}, }; use sc_transaction_pool::{BasicPool, FullChainApi}; use sp_api::Core; @@ -395,4 +402,73 @@ mod tests { storage_changes.transaction_storage_root, ); } + + #[test] + fn should_not_remove_invalid_transactions_when_skipping() { + // given + let mut client = Arc::new(substrate_test_runtime_client::new()); + let txpool = Arc::new( + BasicPool::new(Default::default(), Arc::new(FullChainApi::new(client.clone()))).0 + ); + + futures::executor::block_on( + txpool.submit_at(&BlockId::number(0), vec![ + extrinsic(0), + extrinsic(1), + Transfer { + amount: Default::default(), + nonce: 2, + from: AccountKeyring::Alice.into(), + to: Default::default(), + }.into_resources_exhausting_tx(), + extrinsic(3), + Transfer { + amount: Default::default(), + nonce: 4, + from: AccountKeyring::Alice.into(), + to: Default::default(), + }.into_resources_exhausting_tx(), + extrinsic(5), + extrinsic(6), + ]) + ).unwrap(); + + let mut proposer_factory = ProposerFactory::new(client.clone(), txpool.clone()); + let mut propose_block = | + client: &TestClient, + number, + expected_block_extrinsics, + expected_pool_transactions, + | { + let mut proposer = proposer_factory.init_with_now( + &client.header(&BlockId::number(number)).unwrap().unwrap(), + Box::new(move || time::Instant::now()), + ); + + // when + let deadline = time::Duration::from_secs(9); + let block = futures::executor::block_on( + proposer.propose(Default::default(), Default::default(), deadline, RecordProof::No) + ).map(|r| r.block).unwrap(); + + // then + // block should have some extrinsics although we have some more in the pool. + assert_eq!(block.extrinsics().len(), expected_block_extrinsics); + assert_eq!(txpool.ready().count(), expected_pool_transactions); + + block + }; + + // let's create one block and import it + let block = propose_block(&client, 0, 2, 7); + client.import(BlockOrigin::Own, block).unwrap(); + + // now let's make sure that we can still make some progress + + // This is most likely incorrect, and caused by #5139 + let tx_remaining = 0; + let block = propose_block(&client, 1, 2, tx_remaining); + client.import(BlockOrigin::Own, block).unwrap(); + } } + diff --git a/client/transaction-pool/graph/benches/basics.rs b/client/transaction-pool/graph/benches/basics.rs index 54bbe930b3..6f5d39f09f 100644 --- a/client/transaction-pool/graph/benches/basics.rs +++ b/client/transaction-pool/graph/benches/basics.rs @@ -113,7 +113,11 @@ impl ChainApi for TestApi { } fn uxt(transfer: Transfer) -> Extrinsic { - Extrinsic::Transfer(transfer, Default::default()) + Extrinsic::Transfer { + transfer, + signature: Default::default(), + exhaust_resources_when_not_first: false, + } } fn bench_configured(pool: Pool, number: u64) { diff --git a/client/transaction-pool/graph/src/pool.rs b/client/transaction-pool/graph/src/pool.rs index 12601bb8d2..f0bf17dcb8 100644 --- a/client/transaction-pool/graph/src/pool.rs +++ b/client/transaction-pool/graph/src/pool.rs @@ -524,7 +524,11 @@ mod tests { } fn uxt(transfer: Transfer) -> Extrinsic { - Extrinsic::Transfer(transfer, Default::default()) + Extrinsic::Transfer { + transfer, + signature: Default::default(), + exhaust_resources_when_not_first: false, + } } fn pool() -> Pool { diff --git a/test-utils/runtime/src/lib.rs b/test-utils/runtime/src/lib.rs index 497de36c8b..5ddeff3901 100644 --- a/test-utils/runtime/src/lib.rs +++ b/test-utils/runtime/src/lib.rs @@ -101,7 +101,25 @@ impl Transfer { pub fn into_signed_tx(self) -> Extrinsic { let signature = sp_keyring::AccountKeyring::from_public(&self.from) .expect("Creates keyring from public key.").sign(&self.encode()).into(); - Extrinsic::Transfer(self, signature) + Extrinsic::Transfer { + transfer: self, + signature, + exhaust_resources_when_not_first: false, + } + } + + /// Convert into a signed extrinsic, which will only end up included in the block + /// if it's the first transaction. Otherwise it will cause `ResourceExhaustion` error + /// which should be considered as block being full. + #[cfg(feature = "std")] + pub fn into_resources_exhausting_tx(self) -> Extrinsic { + let signature = sp_keyring::AccountKeyring::from_public(&self.from) + .expect("Creates keyring from public key.").sign(&self.encode()).into(); + Extrinsic::Transfer { + transfer: self, + signature, + exhaust_resources_when_not_first: true, + } } } @@ -109,7 +127,11 @@ impl Transfer { #[derive(Clone, PartialEq, Eq, Encode, Decode, RuntimeDebug)] pub enum Extrinsic { AuthoritiesChange(Vec), - Transfer(Transfer, AccountSignature), + Transfer { + transfer: Transfer, + signature: AccountSignature, + exhaust_resources_when_not_first: bool, + }, IncludeData(Vec), StorageChange(Vec, Option>), ChangesTrieConfigUpdate(Option), @@ -130,9 +152,9 @@ impl BlindCheckable for Extrinsic { fn check(self, _signature: CheckSignature) -> Result { match self { Extrinsic::AuthoritiesChange(new_auth) => Ok(Extrinsic::AuthoritiesChange(new_auth)), - Extrinsic::Transfer(transfer, signature) => { + Extrinsic::Transfer { transfer, signature, exhaust_resources_when_not_first } => { if sp_runtime::verify_encoded_lazy(&signature, &transfer, &transfer.from) { - Ok(Extrinsic::Transfer(transfer, signature)) + Ok(Extrinsic::Transfer { transfer, signature, exhaust_resources_when_not_first }) } else { Err(InvalidTransaction::BadProof.into()) } @@ -165,7 +187,7 @@ impl ExtrinsicT for Extrinsic { impl Extrinsic { pub fn transfer(&self) -> &Transfer { match self { - Extrinsic::Transfer(ref transfer, _) => transfer, + Extrinsic::Transfer { ref transfer, .. } => transfer, _ => panic!("cannot convert to transfer ref"), } } diff --git a/test-utils/runtime/src/system.rs b/test-utils/runtime/src/system.rs index 9eb501c4c8..4ce774598f 100644 --- a/test-utils/runtime/src/system.rs +++ b/test-utils/runtime/src/system.rs @@ -192,7 +192,7 @@ pub fn validate_transaction(utx: Extrinsic) -> TransactionValidity { /// This doesn't attempt to validate anything regarding the block. pub fn execute_transaction(utx: Extrinsic) -> ApplyExtrinsicResult { let extrinsic_index: u32 = storage::unhashed::get(well_known_keys::EXTRINSIC_INDEX).unwrap(); - let result = execute_transaction_backend(&utx); + let result = execute_transaction_backend(&utx, extrinsic_index); ExtrinsicData::insert(extrinsic_index, utx.encode()); storage::unhashed::put(well_known_keys::EXTRINSIC_INDEX, &(extrinsic_index + 1)); result @@ -237,7 +237,7 @@ pub fn finalize_block() -> Header { extrinsics_root, state_root: storage_root, parent_hash, - digest: digest, + digest, } } @@ -247,13 +247,18 @@ fn check_signature(utx: &Extrinsic) -> Result<(), TransactionValidityError> { utx.clone().check(CheckSignature::Yes).map_err(|_| InvalidTransaction::BadProof.into()).map(|_| ()) } -fn execute_transaction_backend(utx: &Extrinsic) -> ApplyExtrinsicResult { +fn execute_transaction_backend(utx: &Extrinsic, extrinsic_index: u32) -> ApplyExtrinsicResult { check_signature(utx)?; match utx { - Extrinsic::Transfer(ref transfer, _) => execute_transfer_backend(transfer), - Extrinsic::AuthoritiesChange(ref new_auth) => execute_new_authorities_backend(new_auth), + Extrinsic::Transfer { exhaust_resources_when_not_first: true, .. } if extrinsic_index != 0 => + Err(InvalidTransaction::ExhaustsResources.into()), + Extrinsic::Transfer { ref transfer, .. } => + execute_transfer_backend(transfer), + Extrinsic::AuthoritiesChange(ref new_auth) => + execute_new_authorities_backend(new_auth), Extrinsic::IncludeData(_) => Ok(Ok(())), - Extrinsic::StorageChange(key, value) => execute_storage_change(key, value.as_ref().map(|v| &**v)), + Extrinsic::StorageChange(key, value) => + execute_storage_change(key, value.as_ref().map(|v| &**v)), Extrinsic::ChangesTrieConfigUpdate(ref new_config) => execute_changes_trie_config_update(new_config.clone()), } diff --git a/test-utils/runtime/transaction-pool/src/lib.rs b/test-utils/runtime/transaction-pool/src/lib.rs index aedc7dc4c3..8cd4e58954 100644 --- a/test-utils/runtime/transaction-pool/src/lib.rs +++ b/test-utils/runtime/transaction-pool/src/lib.rs @@ -265,7 +265,7 @@ pub fn uxt(who: AccountKeyring, nonce: Index) -> Extrinsic { nonce, amount: 1, }; - let signature = transfer.using_encoded(|e| who.sign(e)); - Extrinsic::Transfer(transfer, signature.into()) + let signature = transfer.using_encoded(|e| who.sign(e)).into(); + Extrinsic::Transfer { transfer, signature, exhaust_resources_when_not_first: false } } -- GitLab From 870436e9fd83376dd61edcd65eff8d1670a81e32 Mon Sep 17 00:00:00 2001 From: Gavin Wood Date: Thu, 5 Mar 2020 17:00:44 +0100 Subject: [PATCH 123/301] remove derivation of debug in no_std (#5146) --- frame/staking/src/lib.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/frame/staking/src/lib.rs b/frame/staking/src/lib.rs index 612efecea1..2dc377c55a 100644 --- a/frame/staking/src/lib.rs +++ b/frame/staking/src/lib.rs @@ -300,7 +300,7 @@ pub type EraIndex = u32; pub type RewardPoint = u32; /// Information regarding the active era (era in used in session). -#[derive(Encode, Decode, Debug)] +#[derive(Encode, Decode, RuntimeDebug)] pub struct ActiveEraInfo { /// Index of era. index: EraIndex, @@ -314,7 +314,7 @@ pub struct ActiveEraInfo { /// Reward points of an era. Used to split era total payout between validators. /// /// This points will be used to reward validators and their respective nominators. -#[derive(PartialEq, Encode, Decode, Default, Debug)] +#[derive(PartialEq, Encode, Decode, Default, RuntimeDebug)] pub struct EraRewardPoints { /// Total number of points. Equals the sum of reward points for each validator. total: RewardPoint, -- GitLab From 027756ea80b81c71410da3fb751ae99cc3173b34 Mon Sep 17 00:00:00 2001 From: Gavin Wood Date: Thu, 5 Mar 2020 17:01:24 +0100 Subject: [PATCH 124/301] Add more prometheus metrics to `network::Protocol`. (#5145) --- client/network/src/protocol.rs | 145 +++++++++++++++++- client/network/src/protocol/sync.rs | 21 +++ .../src/protocol/sync/extra_requests.rs | 21 +++ client/network/src/service.rs | 5 +- 4 files changed, 189 insertions(+), 3 deletions(-) diff --git a/client/network/src/protocol.rs b/client/network/src/protocol.rs index 5d7adfdcc3..c19a230769 100644 --- a/client/network/src/protocol.rs +++ b/client/network/src/protocol.rs @@ -38,6 +38,7 @@ use sp_arithmetic::traits::SaturatedConversion; use message::{BlockAnnounce, BlockAttributes, Direction, FromBlock, Message, RequestId}; use message::generic::Message as GenericMessage; use light_dispatch::{LightDispatch, LightDispatchNetwork, RequestData}; +use prometheus_endpoint::{Registry, Gauge, register, PrometheusError, U64}; use sync::{ChainSync, SyncState}; use crate::service::{TransactionPool, ExHashT}; use crate::config::{BoxFinalityProofRequestBuilder, Roles}; @@ -135,6 +136,105 @@ mod rep { pub const BAD_RESPONSE: Rep = Rep::new(-(1 << 12), "Incomplete response"); } +struct Metrics { + handshaking_peers: Gauge, + obsolete_requests: Gauge, + peers: Gauge, + queued_blocks: Gauge, + fork_targets: Gauge, + finality_proofs_pending: Gauge, + finality_proofs_active: Gauge, + finality_proofs_failed: Gauge, + finality_proofs_importing: Gauge, + justifications_pending: Gauge, + justifications_active: Gauge, + justifications_failed: Gauge, + justifications_importing: Gauge +} + +impl Metrics { + fn register(r: &Registry) -> Result { + Ok(Metrics { + handshaking_peers: { + let g = Gauge::new("sync_handshaking_peers", "number of newly connected peers")?; + register(g, r)? + }, + obsolete_requests: { + let g = Gauge::new("sync_obsolete_requests", "total number of obsolete requests")?; + register(g, r)? + }, + peers: { + let g = Gauge::new("sync_peers", "number of peers we sync with")?; + register(g, r)? + }, + queued_blocks: { + let g = Gauge::new("sync_queued_blocks", "number of blocks in import queue")?; + register(g, r)? + }, + fork_targets: { + let g = Gauge::new("sync_fork_targets", "fork sync targets")?; + register(g, r)? + }, + justifications_pending: { + let g = Gauge::new( + "sync_extra_justifications_pending", + "number of pending extra justifications requests" + )?; + register(g, r)? + }, + justifications_active: { + let g = Gauge::new( + "sync_extra_justifications_active", + "number of active extra justifications requests" + )?; + register(g, r)? + }, + justifications_failed: { + let g = Gauge::new( + "sync_extra_justifications_failed", + "number of failed extra justifications requests" + )?; + register(g, r)? + }, + justifications_importing: { + let g = Gauge::new( + "sync_extra_justifications_importing", + "number of importing extra justifications requests" + )?; + register(g, r)? + }, + finality_proofs_pending: { + let g = Gauge::new( + "sync_extra_finality_proofs_pending", + "number of pending extra finality proof requests" + )?; + register(g, r)? + }, + finality_proofs_active: { + let g = Gauge::new( + "sync_extra_finality_proofs_active", + "number of active extra finality proof requests" + )?; + register(g, r)? + }, + finality_proofs_failed: { + let g = Gauge::new( + "sync_extra_finality_proofs_failed", + "number of failed extra finality proof requests" + )?; + register(g, r)? + }, + finality_proofs_importing: { + let g = Gauge::new( + "sync_extra_finality_proofs_importing", + "number of importing extra finality proof requests" + )?; + register(g, r)? + }, + }) + } +} + // Lock must always be taken in order declared here. pub struct Protocol { /// Interval at which we call `tick`. @@ -163,6 +263,8 @@ pub struct Protocol { protocol_name_by_engine: HashMap>, /// For each protocol name, the legacy gossiping engine ID. protocol_engine_by_name: HashMap, ConsensusEngineId>, + /// Prometheus metrics. + metrics: Option, } #[derive(Default)] @@ -371,7 +473,8 @@ impl Protocol { finality_proof_request_builder: Option>, protocol_id: ProtocolId, peerset_config: sc_peerset::PeersetConfig, - block_announce_validator: Box + Send> + block_announce_validator: Box + Send>, + metrics_registry: Option<&Registry> ) -> error::Result<(Protocol, sc_peerset::PeersetHandle)> { let info = chain.info(); let sync = ChainSync::new( @@ -416,6 +519,11 @@ impl Protocol { behaviour, protocol_name_by_engine: HashMap::new(), protocol_engine_by_name: HashMap::new(), + metrics: if let Some(r) = metrics_registry { + Some(Metrics::register(r)?) + } else { + None + } }; Ok((protocol, peerset_handle)) @@ -859,6 +967,7 @@ impl Protocol { behaviour: &mut self.behaviour, peerset: self.peerset_handle.clone(), }); + self.report_metrics() } fn maintain_peers(&mut self) { @@ -1767,6 +1876,40 @@ impl Protocol { } out } + + fn report_metrics(&self) { + use std::convert::TryInto; + + if let Some(metrics) = &self.metrics { + let mut obsolete_requests: u64 = 0; + for peer in self.context_data.peers.values() { + let n = peer.obsolete_requests.len().try_into().unwrap_or(std::u64::MAX); + obsolete_requests = obsolete_requests.saturating_add(n); + } + metrics.obsolete_requests.set(obsolete_requests); + + let n = self.handshaking_peers.len().try_into().unwrap_or(std::u64::MAX); + metrics.handshaking_peers.set(n); + + let n = self.context_data.peers.len().try_into().unwrap_or(std::u64::MAX); + metrics.peers.set(n); + + let m = self.sync.metrics(); + + metrics.fork_targets.set(m.fork_targets.into()); + metrics.queued_blocks.set(m.queued_blocks.into()); + + metrics.justifications_pending.set(m.justifications.pending_requests.into()); + metrics.justifications_active.set(m.justifications.active_requests.into()); + metrics.justifications_failed.set(m.justifications.failed_requests.into()); + metrics.justifications_importing.set(m.justifications.importing_requests.into()); + + metrics.finality_proofs_pending.set(m.finality_proofs.pending_requests.into()); + metrics.finality_proofs_active.set(m.finality_proofs.active_requests.into()); + metrics.finality_proofs_failed.set(m.finality_proofs.failed_requests.into()); + metrics.finality_proofs_importing.set(m.finality_proofs.importing_requests.into()); + } + } } /// Outcome of an incoming custom message. diff --git a/client/network/src/protocol/sync.rs b/client/network/src/protocol/sync.rs index d0427e61a8..04afc5d918 100644 --- a/client/network/src/protocol/sync.rs +++ b/client/network/src/protocol/sync.rs @@ -1202,6 +1202,27 @@ impl ChainSync { fn is_already_downloading(&self, hash: &B::Hash) -> bool { self.peers.iter().any(|(_, p)| p.state == PeerSyncState::DownloadingStale(*hash)) } + + /// Return some key metrics. + pub(crate) fn metrics(&self) -> Metrics { + use std::convert::TryInto; + Metrics { + queued_blocks: self.queue_blocks.len().try_into().unwrap_or(std::u32::MAX), + fork_targets: self.fork_targets.len().try_into().unwrap_or(std::u32::MAX), + finality_proofs: self.extra_finality_proofs.metrics(), + justifications: self.extra_justifications.metrics(), + _priv: () + } + } +} + +#[derive(Debug)] +pub(crate) struct Metrics { + pub(crate) queued_blocks: u32, + pub(crate) fork_targets: u32, + pub(crate) finality_proofs: extra_requests::Metrics, + pub(crate) justifications: extra_requests::Metrics, + _priv: () } /// Request the ancestry for a block. Sends a request for header and justification for the given diff --git a/client/network/src/protocol/sync/extra_requests.rs b/client/network/src/protocol/sync/extra_requests.rs index 38c250cddf..81b12a1a70 100644 --- a/client/network/src/protocol/sync/extra_requests.rs +++ b/client/network/src/protocol/sync/extra_requests.rs @@ -53,6 +53,15 @@ pub(crate) struct ExtraRequests { request_type_name: &'static str, } +#[derive(Debug)] +pub(crate) struct Metrics { + pub(crate) pending_requests: u32, + pub(crate) active_requests: u32, + pub(crate) importing_requests: u32, + pub(crate) failed_requests: u32, + _priv: () +} + impl ExtraRequests { pub(crate) fn new(request_type_name: &'static str) -> Self { ExtraRequests { @@ -240,6 +249,18 @@ impl ExtraRequests { pub(crate) fn pending_requests(&self) -> impl Iterator> { self.pending_requests.iter() } + + /// Get some key metrics. + pub(crate) fn metrics(&self) -> Metrics { + use std::convert::TryInto; + Metrics { + pending_requests: self.pending_requests.len().try_into().unwrap_or(std::u32::MAX), + active_requests: self.active_requests.len().try_into().unwrap_or(std::u32::MAX), + failed_requests: self.failed_requests.len().try_into().unwrap_or(std::u32::MAX), + importing_requests: self.importing_requests.len().try_into().unwrap_or(std::u32::MAX), + _priv: () + } + } } /// Matches peers with pending extra requests. diff --git a/client/network/src/service.rs b/client/network/src/service.rs index 821847add1..5c618ac4ec 100644 --- a/client/network/src/service.rs +++ b/client/network/src/service.rs @@ -210,7 +210,8 @@ impl NetworkWorker { params.finality_proof_request_builder, params.protocol_id.clone(), peerset_config, - params.block_announce_validator + params.block_announce_validator, + params.metrics_registry.as_ref() )?; // Build the swarm. @@ -858,7 +859,7 @@ impl Future for NetworkWorker { }; this.is_major_syncing.store(is_major_syncing, Ordering::Relaxed); - + if let Some(metrics) = this.metrics.as_ref() { metrics.is_major_syncing.set(is_major_syncing as u64); metrics.peers_count.set(num_connected_peers as u64); -- GitLab From bb1b68d2dcdc7a8a0b6311eb2b4ac1fb88aa004f Mon Sep 17 00:00:00 2001 From: Gavin Wood Date: Thu, 5 Mar 2020 17:01:36 +0100 Subject: [PATCH 125/301] Remove substrate-ui.parity.io from CORS whitelist (#5142) The only up-to-date deployment of PolkadotJS apps is currently on https://polkadot.js.org/apps/. https://substrate-ui.parity.io is only useful as deliberately kept outdated version of Apps, to be used for projects still on Substrate 1.0 It cannot be used with the up-to-date chains running the Substrate 2.0 codebase, and probably won't be maintained much longer. --- client/cli/src/commands/runcmd.rs | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/client/cli/src/commands/runcmd.rs b/client/cli/src/commands/runcmd.rs index 0ad6fefcce..2a070b27b8 100644 --- a/client/cli/src/commands/runcmd.rs +++ b/client/cli/src/commands/runcmd.rs @@ -140,9 +140,8 @@ pub struct RunCmd { /// /// A comma-separated list of origins (protocol://domain or special `null` /// value). Value of `all` will disable origin validation. Default is to - /// allow localhost, https://polkadot.js.org and - /// https://substrate-ui.parity.io origins. When running in --dev mode the - /// default is to allow all origins. + /// allow localhost and https://polkadot.js.org origins. When running in + /// --dev mode the default is to allow all origins. #[structopt(long = "rpc-cors", value_name = "ORIGINS", parse(try_from_str = parse_cors))] pub rpc_cors: Option, @@ -408,7 +407,6 @@ impl RunCmd { "https://localhost:*".into(), "https://127.0.0.1:*".into(), "https://polkadot.js.org".into(), - "https://substrate-ui.parity.io".into(), ]) }).into(); -- GitLab From fca34f6180522724e318f14a32980102e6199958 Mon Sep 17 00:00:00 2001 From: Gavin Wood Date: Thu, 5 Mar 2020 17:01:52 +0100 Subject: [PATCH 126/301] Remove `Backend::destroy_state` (#5068) * Remove `Backend::destroy_state` This removes the `destroy_state` function of `Backend` and instead moves the functionality into the `Drop` implementation of the state. This makes it much easier to work with the state, as the user no longer needs to call` destroy_state` manually. However, it requires that we switch from `RwLock` to `ReentrantMutex` as while importing a block we maybe need to lock again in `drop`. * Bring back the `RwLock` and some other clean ups * Fix compilation --- client/api/src/backend.rs | 5 - client/block-builder/src/lib.rs | 10 +- client/db/src/lib.rs | 92 ++++++++---- client/db/src/stats.rs | 16 ++- client/db/src/storage_cache.rs | 247 +++++++++++++++++++++++++++++--- client/src/call_executor.rs | 34 ++--- client/src/client.rs | 14 +- 7 files changed, 318 insertions(+), 100 deletions(-) diff --git a/client/api/src/backend.rs b/client/api/src/backend.rs index 808ca7a870..d10e62cc54 100644 --- a/client/api/src/backend.rs +++ b/client/api/src/backend.rs @@ -420,11 +420,6 @@ pub trait Backend: AuxStore + Send + Sync { /// Returns state backend with post-state of given block. fn state_at(&self, block: BlockId) -> sp_blockchain::Result; - /// Destroy state and save any useful data, such as cache. - fn destroy_state(&self, _state: Self::State) -> sp_blockchain::Result<()> { - Ok(()) - } - /// Attempts to revert the chain by `n` blocks. If `revert_finalized` is set /// it will attempt to revert past any finalized block, this is unsafe and /// can potentially leave the node in an inconsistent state. diff --git a/client/block-builder/src/lib.rs b/client/block-builder/src/lib.rs index 9695fddf86..2666fd9cd7 100644 --- a/client/block-builder/src/lib.rs +++ b/client/block-builder/src/lib.rs @@ -224,17 +224,11 @@ where &state, changes_trie_state.as_ref(), parent_hash, - ); - - // We need to destroy the state, before we check if `storage_changes` is `Ok(_)` - { - let _lock = self.backend.get_import_lock().read(); - self.backend.destroy_state(state)?; - } + )?; Ok(BuiltBlock { block: ::new(header, self.extrinsics), - storage_changes: storage_changes?, + storage_changes, proof, }) } diff --git a/client/db/src/lib.rs b/client/db/src/lib.rs index eed1fc0e1d..746c73bea2 100644 --- a/client/db/src/lib.rs +++ b/client/db/src/lib.rs @@ -80,7 +80,7 @@ use crate::changes_tries_storage::{DbChangesTrieStorage, DbChangesTrieStorageTra use sc_client::leaves::{LeafSet, FinalizationDisplaced}; use sc_state_db::StateDb; use sp_blockchain::{CachedHeaderMetadata, HeaderMetadata, HeaderMetadataCache}; -use crate::storage_cache::{CachingState, SharedCache, new_shared_cache}; +use crate::storage_cache::{CachingState, SyncingCachingState, SharedCache, new_shared_cache}; use crate::stats::StateUsageStats; use log::{trace, debug, warn}; pub use sc_state_db::PruningMode; @@ -523,7 +523,7 @@ impl HeaderMetadata for BlockchainDb { /// Database transaction pub struct BlockImportOperation { - old_state: CachingState, Block>, + old_state: SyncingCachingState, Block>, db_updates: PrefixedMemoryDB>, storage_updates: StorageCollection, child_storage_updates: ChildStorageCollection, @@ -549,7 +549,7 @@ impl BlockImportOperation { } impl sc_client_api::backend::BlockImportOperation for BlockImportOperation { - type State = CachingState, Block>; + type State = SyncingCachingState, Block>; fn state(&self) -> ClientResult> { Ok(Some(&self.old_state)) @@ -755,10 +755,10 @@ pub struct Backend { blockchain: BlockchainDb, canonicalization_delay: u64, shared_cache: SharedCache, - import_lock: RwLock<()>, + import_lock: Arc>, is_archive: bool, io_stats: FrozenForDuration<(kvdb::IoStats, StateUsageInfo)>, - state_usage: StateUsageStats, + state_usage: Arc, } impl Backend { @@ -830,7 +830,7 @@ impl Backend { import_lock: Default::default(), is_archive: is_archive_pruning, io_stats: FrozenForDuration::new(std::time::Duration::from_secs(1)), - state_usage: StateUsageStats::new(), + state_usage: Arc::new(StateUsageStats::new()), }) } @@ -1132,8 +1132,14 @@ impl Backend { self.state_usage.tally_writes(ops, bytes); let number_u64 = number.saturated_into::(); - let commit = self.storage.state_db.insert_block(&hash, number_u64, &pending_block.header.parent_hash(), changeset) - .map_err(|e: sc_state_db::Error| sp_blockchain::Error::from(format!("State database error: {:?}", e)))?; + let commit = self.storage.state_db.insert_block( + &hash, + number_u64, + &pending_block.header.parent_hash(), + changeset, + ).map_err(|e: sc_state_db::Error| + sp_blockchain::Error::from(format!("State database error: {:?}", e)) + )?; apply_state_commit(&mut transaction, commit); // Check if need to finalize. Genesis is always finalized instantly. @@ -1161,7 +1167,8 @@ impl Backend { changes_trie_cache_ops, )?); self.state_usage.merge_sm(operation.old_state.usage_info()); - let cache = operation.old_state.release(); // release state reference so that it can be finalized + // release state reference so that it can be finalized + let cache = operation.old_state.into_cache_changes(); if finalized { // TODO: ensure best chain contains this block. @@ -1189,9 +1196,20 @@ impl Backend { displaced_leaf }; - let mut children = children::read_children(&*self.storage.db, columns::META, meta_keys::CHILDREN_PREFIX, parent_hash)?; + let mut children = children::read_children( + &*self.storage.db, + columns::META, + meta_keys::CHILDREN_PREFIX, + parent_hash, + )?; children.push(hash); - children::write_children(&mut transaction, columns::META, meta_keys::CHILDREN_PREFIX, parent_hash, children); + children::write_children( + &mut transaction, + columns::META, + meta_keys::CHILDREN_PREFIX, + parent_hash, + children, + ); meta_updates.push((hash, number, pending_block.leaf_state.is_best(), finalized)); @@ -1201,7 +1219,7 @@ impl Backend { }; let cache_update = if let Some(set_head) = operation.set_head { - if let Some(header) = ::sc_client::blockchain::HeaderBackend::header(&self.blockchain, set_head)? { + if let Some(header) = sc_client::blockchain::HeaderBackend::header(&self.blockchain, set_head)? { let number = header.number(); let hash = header.hash(); @@ -1271,7 +1289,6 @@ impl Backend { Ok(()) } - // write stuff to a transaction after a new block is finalized. // this canonicalizes finalized blocks. Fails if called with a block which // was not a child of the last finalized block. @@ -1359,11 +1376,13 @@ impl sc_client_api::backend::AuxStore for Backend where Block: Blo impl sc_client_api::backend::Backend for Backend { type BlockImportOperation = BlockImportOperation; type Blockchain = BlockchainDb; - type State = CachingState, Block>; + type State = SyncingCachingState, Block>; type OffchainStorage = offchain::LocalStorage; fn begin_operation(&self) -> ClientResult { - let old_state = self.state_at(BlockId::Hash(Default::default()))?; + let mut old_state = self.state_at(BlockId::Hash(Default::default()))?; + old_state.disable_syncing(); + Ok(BlockImportOperation { pending_block: None, old_state, @@ -1386,13 +1405,13 @@ impl sc_client_api::backend::Backend for Backend { block: BlockId, ) -> ClientResult<()> { operation.old_state = self.state_at(block)?; + operation.old_state.disable_syncing(); + operation.commit_state = true; Ok(()) } - fn commit_operation(&self, operation: Self::BlockImportOperation) - -> ClientResult<()> - { + fn commit_operation(&self, operation: Self::BlockImportOperation) -> ClientResult<()> { let usage = operation.old_state.usage_info(); self.state_usage.merge_sm(usage); @@ -1452,7 +1471,6 @@ impl sc_client_api::backend::Backend for Backend { Some(self.offchain_storage.clone()) } - fn usage_info(&self) -> Option { let (io_stats, state_stats) = self.io_stats.take_or_else(|| ( @@ -1577,7 +1595,17 @@ impl sc_client_api::backend::Backend for Backend { let root = genesis_storage.0.clone(); let db_state = DbState::::new(Arc::new(genesis_storage), root); let state = RefTrackingState::new(db_state, self.storage.clone(), None); - return Ok(CachingState::new(state, self.shared_cache.clone(), None)); + let caching_state = CachingState::new( + state, + self.shared_cache.clone(), + None, + ); + return Ok(SyncingCachingState::new( + caching_state, + self.state_usage.clone(), + self.blockchain.meta.clone(), + self.import_lock.clone(), + )); }, _ => {} } @@ -1600,7 +1628,17 @@ impl sc_client_api::backend::Backend for Backend { self.storage.clone(), Some(hash.clone()), ); - Ok(CachingState::new(state, self.shared_cache.clone(), Some(hash))) + let caching_state = CachingState::new( + state, + self.shared_cache.clone(), + Some(hash), + ); + Ok(SyncingCachingState::new( + caching_state, + self.state_usage.clone(), + self.blockchain.meta.clone(), + self.import_lock.clone(), + )) } else { Err( sp_blockchain::Error::UnknownBlock( @@ -1635,17 +1673,8 @@ impl sc_client_api::backend::Backend for Backend { } } - fn destroy_state(&self, state: Self::State) -> ClientResult<()> { - self.state_usage.merge_sm(state.usage_info()); - if let Some(hash) = state.cache.parent_hash.clone() { - let is_best = self.blockchain.meta.read().best_hash == hash; - state.release().sync_cache(&[], &[], vec![], vec![], None, None, is_best); - } - Ok(()) - } - fn get_import_lock(&self) -> &RwLock<()> { - &self.import_lock + &*self.import_lock } } @@ -1844,6 +1873,7 @@ pub(crate) mod tests { op.update_db_storage(overlay).unwrap(); header.state_root = root.into(); + op.update_storage(storage, Vec::new()).unwrap(); op.set_block_data( header, Some(vec![]), diff --git a/client/db/src/stats.rs b/client/db/src/stats.rs index 805a0f498f..1d6ed8e7f0 100644 --- a/client/db/src/stats.rs +++ b/client/db/src/stats.rs @@ -59,8 +59,14 @@ impl StateUsageStats { } /// Tally one child key read. - pub fn tally_child_key_read(&self, key: &(Vec, Vec), val: Option>, cache: bool) -> Option> { - self.tally_read(key.0.len() as u64 + key.1.len() as u64 + val.as_ref().map(|x| x.len() as u64).unwrap_or(0), cache); + pub fn tally_child_key_read( + &self, + key: &(Vec, Vec), + val: Option>, + cache: bool, + ) -> Option> { + let bytes = key.0.len() + key.1.len() + val.as_ref().map(|x| x.len()).unwrap_or(0); + self.tally_read(bytes as u64, cache); val } @@ -80,11 +86,15 @@ impl StateUsageStats { self.bytes_read_cache.fetch_add(info.cache_reads.bytes, AtomicOrdering::Relaxed); } + /// Returns the collected `UsageInfo` and resets the internal state. pub fn take(&self) -> sp_state_machine::UsageInfo { use sp_state_machine::UsageUnit; fn unit(ops: &AtomicU64, bytes: &AtomicU64) -> UsageUnit { - UsageUnit { ops: ops.swap(0, AtomicOrdering::Relaxed), bytes: bytes.swap(0, AtomicOrdering::Relaxed) } + UsageUnit { + ops: ops.swap(0, AtomicOrdering::Relaxed), + bytes: bytes.swap(0, AtomicOrdering::Relaxed), + } } sp_state_machine::UsageInfo { diff --git a/client/db/src/storage_cache.rs b/client/db/src/storage_cache.rs index 6f289369e2..2ac1ee3dbd 100644 --- a/client/db/src/storage_cache.rs +++ b/client/db/src/storage_cache.rs @@ -18,6 +18,7 @@ use std::collections::{VecDeque, HashSet, HashMap}; use std::sync::Arc; +use std::hash::Hash as StdHash; use parking_lot::{Mutex, RwLock, RwLockUpgradableReadGuard}; use linked_hash_map::{LinkedHashMap, Entry}; use hash_db::Hasher; @@ -29,8 +30,7 @@ use sp_state_machine::{ StorageCollection, ChildStorageCollection, }; use log::trace; -use std::hash::Hash as StdHash; -use crate::stats::StateUsageStats; +use crate::{utils::Meta, stats::StateUsageStats}; const STATE_CACHE_BLOCKS: usize = 12; @@ -296,16 +296,16 @@ pub struct CacheChanges { /// For canonical instances local cache is accumulated and applied /// in `sync_cache` along with the change overlay. /// For non-canonical clones local cache and changes are dropped. -pub struct CachingState>, B: BlockT> { +pub struct CachingState { /// Usage statistics usage: StateUsageStats, /// Backing state. state: S, /// Cache data. - pub cache: CacheChanges, + cache: CacheChanges, } -impl>, B: BlockT> std::fmt::Debug for CachingState { +impl std::fmt::Debug for CachingState { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { write!(f, "Block {:?}", self.cache.parent_hash) } @@ -417,12 +417,15 @@ impl CacheChanges { } } } - } impl>, B: BlockT> CachingState { /// Create a new instance wrapping generic State and shared cache. - pub fn new(state: S, shared_cache: SharedCache, parent_hash: Option) -> Self { + pub(crate) fn new( + state: S, + shared_cache: SharedCache, + parent_hash: Option, + ) -> Self { CachingState { usage: StateUsageStats::new(), state, @@ -433,7 +436,7 @@ impl>, B: BlockT> CachingState { hashes: Default::default(), child_storage: Default::default(), }), - parent_hash: parent_hash, + parent_hash, }, } } @@ -445,8 +448,7 @@ impl>, B: BlockT> CachingState { child_key: Option<&ChildStorageKey>, parent_hash: &Option, modifications: &VecDeque> - ) -> bool - { + ) -> bool { let mut parent = match *parent_hash { None => { trace!("Cache lookup skipped for {:?}: no parent hash", key.as_ref().map(HexDisplay::from)); @@ -479,14 +481,12 @@ impl>, B: BlockT> CachingState { } } } - trace!("Cache lookup skipped for {:?}: parent hash is unknown", key.as_ref().map(HexDisplay::from)); + trace!( + "Cache lookup skipped for {:?}: parent hash is unknown", + key.as_ref().map(HexDisplay::from), + ); false } - - /// Dispose state and return cache data. - pub fn release(self) -> CacheChanges { - self.cache - } } impl>, B: BlockT> StateBackend> for CachingState { @@ -668,6 +668,213 @@ impl>, B: BlockT> StateBackend> for Cachin } } +/// Extended [`CachingState`] that will sync the caches on drop. +pub struct SyncingCachingState { + /// The usage statistics of the backend. These will be updated on drop. + state_usage: Arc, + /// Reference to the meta db. + meta: Arc, Block::Hash>>>, + /// Mutex to lock get exlusive access to the backend. + lock: Arc>, + /// The wrapped caching state. + /// + /// This is required to be a `Option`, because sometimes we want to extract + /// the cache changes and Rust does not allow to move fields from types that + /// implement `Drop`. + caching_state: Option>, + /// Disable syncing of the cache. This is by default always `false`. However, + /// we need to disable syncing when this is a state in a + /// [`BlockImportOperation`](crate::BlockImportOperation). The import operation + /// takes care to sync the cache and more importantly we want to prevent a dead + /// lock. + disable_syncing: bool, +} + +impl SyncingCachingState { + /// Create new automatic syncing state. + pub fn new( + caching_state: CachingState, + state_usage: Arc, + meta: Arc, B::Hash>>>, + lock: Arc>, + ) -> Self { + Self { + caching_state: Some(caching_state), + state_usage, + meta, + lock, + disable_syncing: false, + } + } + + /// Returns the reference to the internal [`CachingState`]. + fn caching_state(&self) -> &CachingState { + self.caching_state + .as_ref() + .expect("`caching_state` is always valid for the lifetime of the object; qed") + } + + /// Convert `Self` into the cache changes. + pub fn into_cache_changes(mut self) -> CacheChanges { + self.caching_state + .take() + .expect("`caching_state` is always valid for the lifetime of the object; qed") + .cache + } + + /// Disable syncing the cache on drop. + pub fn disable_syncing(&mut self) { + self.disable_syncing = true; + } +} + +impl std::fmt::Debug for SyncingCachingState { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + self.caching_state().fmt(f) + } +} + +impl>, B: BlockT> StateBackend> for SyncingCachingState { + type Error = S::Error; + type Transaction = S::Transaction; + type TrieBackendStorage = S::TrieBackendStorage; + + fn storage(&self, key: &[u8]) -> Result>, Self::Error> { + self.caching_state().storage(key) + } + + fn storage_hash(&self, key: &[u8]) -> Result, Self::Error> { + self.caching_state().storage_hash(key) + } + + fn child_storage( + &self, + storage_key: &[u8], + child_info: ChildInfo, + key: &[u8], + ) -> Result>, Self::Error> { + self.caching_state().child_storage(storage_key, child_info, key) + } + + fn exists_storage(&self, key: &[u8]) -> Result { + self.caching_state().exists_storage(key) + } + + fn exists_child_storage( + &self, + storage_key: &[u8], + child_info: ChildInfo, + key: &[u8], + ) -> Result { + self.caching_state().exists_child_storage(storage_key, child_info, key) + } + + fn for_keys_in_child_storage( + &self, + storage_key: &[u8], + child_info: ChildInfo, + f: F, + ) { + self.caching_state().for_keys_in_child_storage(storage_key, child_info, f) + } + + fn next_storage_key(&self, key: &[u8]) -> Result>, Self::Error> { + self.caching_state().next_storage_key(key) + } + + fn next_child_storage_key( + &self, + storage_key: &[u8], + child_info: ChildInfo, + key: &[u8], + ) -> Result>, Self::Error> { + self.caching_state().next_child_storage_key(storage_key, child_info, key) + } + + fn for_keys_with_prefix(&self, prefix: &[u8], f: F) { + self.caching_state().for_keys_with_prefix(prefix, f) + } + + fn for_key_values_with_prefix(&self, prefix: &[u8], f: F) { + self.caching_state().for_key_values_with_prefix(prefix, f) + } + + fn for_child_keys_with_prefix( + &self, + storage_key: &[u8], + child_info: ChildInfo, + prefix: &[u8], + f: F, + ) { + self.caching_state().for_child_keys_with_prefix(storage_key, child_info, prefix, f) + } + + fn storage_root(&self, delta: I) -> (B::Hash, Self::Transaction) + where + I: IntoIterator, Option>)>, + { + self.caching_state().storage_root(delta) + } + + fn child_storage_root( + &self, + storage_key: &[u8], + child_info: ChildInfo, + delta: I, + ) -> (B::Hash, bool, Self::Transaction) + where + I: IntoIterator, Option>)>, + { + self.caching_state().child_storage_root(storage_key, child_info, delta) + } + + fn pairs(&self) -> Vec<(Vec, Vec)> { + self.caching_state().pairs() + } + + fn keys(&self, prefix: &[u8]) -> Vec> { + self.caching_state().keys(prefix) + } + + fn child_keys( + &self, + storage_key: &[u8], + child_info: ChildInfo, + prefix: &[u8], + ) -> Vec> { + self.caching_state().child_keys(storage_key, child_info, prefix) + } + + fn as_trie_backend(&mut self) -> Option<&TrieBackend>> { + self.caching_state + .as_mut() + .expect("`caching_state` is valid for the lifetime of the object; qed") + .as_trie_backend() + } + + fn usage_info(&self) -> sp_state_machine::UsageInfo { + self.caching_state().usage_info() + } +} + +impl Drop for SyncingCachingState { + fn drop(&mut self) { + if self.disable_syncing { + return; + } + + if let Some(mut caching_state) = self.caching_state.take() { + let _lock = self.lock.read(); + + self.state_usage.merge_sm(caching_state.usage.take()); + if let Some(hash) = caching_state.cache.parent_hash.clone() { + let is_best = self.meta.read().best_hash == hash; + caching_state.cache.sync_cache(&[], &[], vec![], vec![], None, None, is_best); + } + } + } +} + #[cfg(test)] mod tests { use super::*; @@ -1258,7 +1465,7 @@ mod qc { CachingState::new( InMemoryBackend::::default(), self.shared.clone(), - Some(hash) + Some(hash), ) } @@ -1327,7 +1534,7 @@ mod qc { let mut state = CachingState::new( InMemoryBackend::::default(), self.shared.clone(), - Some(parent) + Some(parent), ); state.cache.sync_cache( @@ -1366,7 +1573,7 @@ mod qc { let mut state = CachingState::new( InMemoryBackend::::default(), self.shared.clone(), - Some(parent_hash) + Some(parent_hash), ); state.cache.sync_cache( @@ -1413,7 +1620,7 @@ mod qc { let mut state = CachingState::new( InMemoryBackend::::default(), self.shared.clone(), - Some(fork_at) + Some(fork_at), ); let height = pos as u64 + enacted.len() as u64 + 2; diff --git a/client/src/call_executor.rs b/client/src/call_executor.rs index 1fdbfe981a..b5206d3c46 100644 --- a/client/src/call_executor.rs +++ b/client/src/call_executor.rs @@ -80,7 +80,6 @@ where let changes_trie = backend::changes_tries_state_at_block( id, self.backend.changes_trie_storage() )?; - // make sure to destroy state before exiting this function let state = self.backend.state_at(*id)?; let return_data = StateMachine::new( &state, @@ -93,12 +92,9 @@ where ).execute_using_consensus_failure_handler::<_, NeverNativeValue, fn() -> _>( strategy.get_manager(), None, - ); - { - let _lock = self.backend.get_import_lock().read(); - self.backend.destroy_state(state)?; - } - Ok(return_data?.into_encoded()) + )?; + + Ok(return_data.into_encoded()) } fn contextual_call< @@ -138,9 +134,8 @@ where let changes_trie_state = backend::changes_tries_state_at_block(at, self.backend.changes_trie_storage())?; let mut storage_transaction_cache = storage_transaction_cache.map(|c| c.borrow_mut()); - // make sure to destroy state before exiting this function let mut state = self.backend.state_at(*at)?; - let result = match recorder { + match recorder { Some(recorder) => state.as_trie_backend() .ok_or_else(|| Box::new(sp_state_machine::ExecutionError::UnableToGenerateProof) @@ -176,18 +171,15 @@ where ) .with_storage_transaction_cache(storage_transaction_cache.as_mut().map(|c| &mut **c)) .execute_using_consensus_failure_handler(execution_manager, native_call) - }; - { - let _lock = self.backend.get_import_lock().read(); - self.backend.destroy_state(state)?; - } - result.map_err(Into::into) + }.map_err(Into::into) } fn runtime_version(&self, id: &BlockId) -> sp_blockchain::Result { let mut overlay = OverlayedChanges::default(); - let changes_trie_state = backend::changes_tries_state_at_block(id, self.backend.changes_trie_storage())?; - // make sure to destroy state before exiting this function + let changes_trie_state = backend::changes_tries_state_at_block( + id, + self.backend.changes_trie_storage(), + )?; let state = self.backend.state_at(*id)?; let mut cache = StorageTransactionCache::::default(); let mut ext = Ext::new( @@ -197,12 +189,8 @@ where changes_trie_state, None, ); - let version = self.executor.runtime_version(&mut ext); - { - let _lock = self.backend.get_import_lock().read(); - self.backend.destroy_state(state)?; - } - version.map_err(|e| sp_blockchain::Error::VersionInvalid(format!("{:?}", e)).into()) + self.executor.runtime_version(&mut ext) + .map_err(|e| sp_blockchain::Error::VersionInvalid(format!("{:?}", e)).into()) } fn prove_at_trie_state>>( diff --git a/client/src/client.rs b/client/src/client.rs index c921d29701..699e3320ff 100644 --- a/client/src/client.rs +++ b/client/src/client.rs @@ -830,15 +830,7 @@ impl Client where &state, changes_trie_state.as_ref(), *parent_hash, - ); - - { - let _lock = self.backend.get_import_lock().read(); - self.backend.destroy_state(state)?; - } - - // Make sure to consume the error, only after we have destroyed the state. - let gen_storage_changes = gen_storage_changes?; + )?; if import_block.header.state_root() != &gen_storage_changes.transaction_storage_root @@ -1792,7 +1784,9 @@ where fn best_block_header(&self) -> sp_blockchain::Result<::Header> { let info = self.backend.blockchain().info(); let import_lock = self.backend.get_import_lock(); - let best_hash = self.backend.blockchain().best_containing(info.best_hash, None, import_lock)? + let best_hash = self.backend + .blockchain() + .best_containing(info.best_hash, None, import_lock)? .unwrap_or(info.best_hash); Ok(self.backend.blockchain().header(BlockId::Hash(best_hash))? -- GitLab From adacbd18a752597beffb9dbb805bd884c83557f0 Mon Sep 17 00:00:00 2001 From: Gavin Wood Date: Thu, 5 Mar 2020 17:11:46 +0100 Subject: [PATCH 127/301] Add Github Action for Matrix release bot (#5117) --- .github/workflows/release-bot.yml | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 .github/workflows/release-bot.yml diff --git a/.github/workflows/release-bot.yml b/.github/workflows/release-bot.yml new file mode 100644 index 0000000000..08aa94417c --- /dev/null +++ b/.github/workflows/release-bot.yml @@ -0,0 +1,18 @@ +name: Pushes release updates to a pre-defined Matrix room +on: + release: + types: + - edited + - prereleased + - published +jobs: + ping_matrix: + runs-on: ubuntu-latest + steps: + - name: send message + uses: s3krit/matrix-message-action@v0.0.2 + with: + room_id: ${{ secrets.MATRIX_ROOM_ID }} + access_token: ${{ secrets.MATRIX_ACCESS_TOKEN }} + message: "**${{github.event.repository.full_name}}:** A release has been ${{github.event.action}}
Release version [${{github.event.release.tag_name}}](${{github.event.release.html_url}})

***Description:***
${{github.event.release.body}}
" + server: "matrix.parity.io" -- GitLab From 6566d816d67cae5d9b1358dbbe5963e8da289dcf Mon Sep 17 00:00:00 2001 From: kianenigma Date: Thu, 5 Mar 2020 19:50:26 +0100 Subject: [PATCH 128/301] Some doc updates to slashing --- frame/staking/src/lib.rs | 5 ++--- frame/staking/src/slashing.rs | 8 +++---- frame/staking/src/tests.rs | 41 ++++++++++++++++++++++++++--------- 3 files changed, 37 insertions(+), 17 deletions(-) diff --git a/frame/staking/src/lib.rs b/frame/staking/src/lib.rs index 8d18e5d074..deffbb7ec5 100644 --- a/frame/staking/src/lib.rs +++ b/frame/staking/src/lib.rs @@ -2875,7 +2875,7 @@ impl OnOffenceHandler OnOffenceHandler>::contains_key(11)); + on_offence_now( &[OffenceDetails { offender: ( @@ -1990,9 +1992,12 @@ fn offence_deselects_validator_when_slash_is_zero() { }], &[Perbill::from_percent(0)], ); + assert_eq!(Staking::force_era(), Forcing::ForceNew); assert!(!>::contains_key(11)); + start_era(1); + assert!(!Session::validators().contains(&11)); assert!(!>::contains_key(11)); }); @@ -2033,6 +2038,7 @@ fn slash_in_old_span_does_not_deselect() { assert!(>::contains_key(11)); assert!(Session::validators().contains(&11)); + on_offence_now( &[OffenceDetails { offender: ( @@ -2043,6 +2049,7 @@ fn slash_in_old_span_does_not_deselect() { }], &[Perbill::from_percent(0)], ); + assert_eq!(Staking::force_era(), Forcing::ForceNew); assert!(!>::contains_key(11)); @@ -2070,7 +2077,7 @@ fn slash_in_old_span_does_not_deselect() { 1, ); - // not for zero-slash. + // not forcing for zero-slash and previous span. assert_eq!(Staking::force_era(), Forcing::NotForcing); assert!(>::contains_key(11)); assert!(Session::validators().contains(&11)); @@ -2091,7 +2098,7 @@ fn slash_in_old_span_does_not_deselect() { // or non-zero. assert_eq!(Staking::force_era(), Forcing::NotForcing); assert!(>::contains_key(11)); - assert!(Session::validators().contains(&11)); + assert!(Session::validators().contains(&11)); assert_ledger_consistent(11); }); } @@ -2130,7 +2137,7 @@ fn reporters_receive_their_slice() { #[test] fn subsequent_reports_in_same_span_pay_out_less() { // This test verifies that the reporters of the offence receive their slice from the slashed - // amount. + // amount, but less and less if they submit multiple reports in one span. ExtBuilder::default().build().execute_with(|| { // The reporters' reward is calculated from the total exposure. let initial_balance = 1125; @@ -2237,12 +2244,16 @@ fn dont_slash_if_fraction_is_zero() { // The validator hasn't been slashed. The new era is not forced. assert_eq!(Balances::free_balance(11), 1000); + assert_eq!(Staking::force_era(), Forcing::ForceNew); + assert_ledger_consistent(11); }); } #[test] fn only_slash_for_max_in_era() { + // multiple slashes within one era are only applied if it is more than any previous slash in the + // same era. ExtBuilder::default().build().execute_with(|| { assert_eq!(Balances::free_balance(11), 1000); @@ -2291,6 +2302,7 @@ fn only_slash_for_max_in_era() { #[test] fn garbage_collection_after_slashing() { + // ensures that `SlashingSpans` and `SpanSlash` of an account is removed after reaping. ExtBuilder::default().existential_deposit(2).build().execute_with(|| { assert_eq!(Balances::free_balance(11), 256_000); @@ -2333,27 +2345,28 @@ fn garbage_collection_after_slashing() { #[test] fn garbage_collection_on_window_pruning() { + // ensures that `ValidatorSlashInEra` and `NominatorSlashInEra` are cleared after + // `BondingDuration`. ExtBuilder::default().build().execute_with(|| { start_era(1); assert_eq!(Balances::free_balance(11), 1000); + let now = Staking::active_era().unwrap().index; - let exposure = Staking::eras_stakers(Staking::active_era().unwrap().index, 11); + let exposure = Staking::eras_stakers(now, 11); assert_eq!(Balances::free_balance(101), 2000); let nominated_value = exposure.others.iter().find(|o| o.who == 101).unwrap().value; on_offence_now( &[ OffenceDetails { - offender: (11, Staking::eras_stakers(Staking::active_era().unwrap().index, 11)), + offender: (11, Staking::eras_stakers(now, 11)), reporters: vec![], }, ], &[Perbill::from_percent(10)], ); - let now = Staking::active_era().unwrap().index; - assert_eq!(Balances::free_balance(11), 900); assert_eq!(Balances::free_balance(101), 2000 - (nominated_value / 10)); @@ -2385,10 +2398,8 @@ fn slashing_nominators_by_span_max() { assert_eq!(Balances::free_balance(101), 2000); assert_eq!(Staking::slashable_balance_of(&21), 1000); - let exposure_11 = Staking::eras_stakers(Staking::active_era().unwrap().index, 11); let exposure_21 = Staking::eras_stakers(Staking::active_era().unwrap().index, 21); - assert_eq!(Balances::free_balance(101), 2000); let nominated_value_11 = exposure_11.others.iter().find(|o| o.who == 101).unwrap().value; let nominated_value_21 = exposure_21.others.iter().find(|o| o.who == 101).unwrap().value; @@ -3579,6 +3590,16 @@ mod offchain_phragmen { }) } + #[test] + fn slashing_while_election_window() { + unimplemented!(); + } + + #[test] + fn era_forcing() { + unimplemented!(); + } + #[test] fn invalid_phragmen_result_wrong_score() { // A valid voter who's total distributed stake is more than what they bond -- GitLab From e6cc799a33d6deefb44b0416901632c83a8d3ecd Mon Sep 17 00:00:00 2001 From: Gavin Wood Date: Thu, 5 Mar 2020 21:38:41 +0100 Subject: [PATCH 129/301] Add lots of networking metrics for Prometheus (#5126) * Add some metrics * Address concerns --- client/network/src/behaviour.rs | 10 + client/network/src/discovery.rs | 20 +- client/network/src/protocol.rs | 10 + .../src/protocol/generic_proto/behaviour.rs | 24 +++ client/network/src/service.rs | 172 ++++++++++++++++-- client/peerset/src/lib.rs | 5 + client/peerset/src/peersstate.rs | 2 +- 7 files changed, 220 insertions(+), 23 deletions(-) diff --git a/client/network/src/behaviour.rs b/client/network/src/behaviour.rs index a03a6caa2f..e7aca1975c 100644 --- a/client/network/src/behaviour.rs +++ b/client/network/src/behaviour.rs @@ -54,6 +54,8 @@ pub enum BehaviourOut { BlockImport(BlockOrigin, Vec>), JustificationImport(Origin, B::Hash, NumberFor, Justification), FinalityProofImport(Origin, B::Hash, NumberFor, Vec), + /// Started a random Kademlia discovery query. + RandomKademliaStarted, Event(Event), } @@ -96,6 +98,11 @@ impl Behaviour { self.discovery.add_known_address(peer_id, addr) } + /// Returns the number of nodes that are in the Kademlia k-buckets. + pub fn num_kbuckets_entries(&mut self) -> usize { + self.discovery.num_kbuckets_entries() + } + /// Borrows `self` and returns a struct giving access to the information about a node. /// /// Returns `None` if we don't know anything about this node. Always returns `Some` for nodes @@ -216,6 +223,9 @@ impl NetworkBehaviourEventProcess DiscoveryOut::ValuePutFailed(key) => { self.events.push(BehaviourOut::Event(Event::Dht(DhtEvent::ValuePutFailed(key)))); } + DiscoveryOut::RandomKademliaStarted => { + self.events.push(BehaviourOut::RandomKademliaStarted); + } } } } diff --git a/client/network/src/discovery.rs b/client/network/src/discovery.rs index 8360fce518..ecce7d81e3 100644 --- a/client/network/src/discovery.rs +++ b/client/network/src/discovery.rs @@ -176,6 +176,11 @@ impl DiscoveryBehaviour { pub fn put_value(&mut self, key: record::Key, value: Vec) { self.kademlia.put_record(Record::new(key, value), Quorum::All); } + + /// Returns the number of nodes that are in the Kademlia k-buckets. + pub fn num_kbuckets_entries(&mut self) -> usize { + self.kademlia.kbuckets_entries().count() + } } /// Event generated by the `DiscoveryBehaviour`. @@ -203,6 +208,9 @@ pub enum DiscoveryOut { /// Inserting a value into the DHT failed. ValuePutFailed(record::Key), + + /// Started a random Kademlia query. + RandomKademliaStarted, } impl NetworkBehaviour for DiscoveryBehaviour { @@ -330,25 +338,33 @@ impl NetworkBehaviour for DiscoveryBehaviour { // Poll the stream that fires when we need to start a random Kademlia query. while let Poll::Ready(_) = self.next_kad_random_query.poll_unpin(cx) { - if self.num_connections < self.discovery_only_if_under_num { + let actually_started = if self.num_connections < self.discovery_only_if_under_num { let random_peer_id = PeerId::random(); debug!(target: "sub-libp2p", "Libp2p <= Starting random Kademlia request for \ {:?}", random_peer_id); self.kademlia.get_closest_peers(random_peer_id); + true + } else { debug!( target: "sub-libp2p", "Kademlia paused due to high number of connections ({})", self.num_connections ); - } + false + }; // Schedule the next random query with exponentially increasing delay, // capped at 60 seconds. self.next_kad_random_query = Delay::new(self.duration_to_next_kad); self.duration_to_next_kad = cmp::min(self.duration_to_next_kad * 2, Duration::from_secs(60)); + + if actually_started { + let ev = DiscoveryOut::RandomKademliaStarted; + return Poll::Ready(NetworkBehaviourAction::GenerateEvent(ev)); + } } // Poll Kademlia. diff --git a/client/network/src/protocol.rs b/client/network/src/protocol.rs index c19a230769..17208aab50 100644 --- a/client/network/src/protocol.rs +++ b/client/network/src/protocol.rs @@ -539,6 +539,16 @@ impl Protocol { self.behaviour.is_open(peer_id) } + /// Returns the list of all the peers that the peerset currently requests us to be connected to. + pub fn requested_peers(&self) -> impl Iterator { + self.behaviour.requested_peers() + } + + /// Returns the number of discovered nodes that we keep in memory. + pub fn num_discovered_peers(&self) -> usize { + self.behaviour.num_discovered_peers() + } + /// Disconnects the given peer if we are connected to it. pub fn disconnect_peer(&mut self, peer_id: &PeerId) { self.behaviour.disconnect_peer(peer_id) diff --git a/client/network/src/protocol/generic_proto/behaviour.rs b/client/network/src/protocol/generic_proto/behaviour.rs index 24e96681a0..727415baaf 100644 --- a/client/network/src/protocol/generic_proto/behaviour.rs +++ b/client/network/src/protocol/generic_proto/behaviour.rs @@ -191,6 +191,20 @@ impl PeerState { PeerState::Incoming { .. } => false, } } + + /// True if that node has been requested by the PSM. + fn is_requested(&self) -> bool { + match self { + PeerState::Poisoned => false, + PeerState::Banned { .. } => false, + PeerState::PendingRequest { .. } => true, + PeerState::Requested => true, + PeerState::Disabled { .. } => false, + PeerState::DisabledPendingEnable { .. } => true, + PeerState::Enabled { .. } => true, + PeerState::Incoming { .. } => false, + } + } } /// State of an "incoming" message sent to the peer set manager. @@ -277,6 +291,11 @@ impl GenericProto { self.notif_protocols.push((protocol_name.into(), engine_id, handshake_msg.into())); } + /// Returns the number of discovered nodes that we keep in memory. + pub fn num_discovered_peers(&self) -> usize { + self.peerset.num_discovered_peers() + } + /// Returns the list of all the peers we have an open channel to. pub fn open_peers<'a>(&'a self) -> impl Iterator + 'a { self.peers.iter().filter(|(_, state)| state.is_open()).map(|(id, _)| id) @@ -360,6 +379,11 @@ impl GenericProto { } } + /// Returns the list of all the peers that the peerset currently requests us to be connected to. + pub fn requested_peers<'a>(&'a self) -> impl Iterator + 'a { + self.peers.iter().filter(|(_, state)| state.is_requested()).map(|(id, _)| id) + } + /// Returns true if we try to open protocols with the given peer. pub fn is_enabled(&self, peer_id: &PeerId) -> bool { match self.peers.get(peer_id) { diff --git a/client/network/src/service.rs b/client/network/src/service.rs index 5c618ac4ec..a220a009f3 100644 --- a/client/network/src/service.rs +++ b/client/network/src/service.rs @@ -25,7 +25,7 @@ //! The methods of the [`NetworkService`] are implemented by sending a message over a channel, //! which is then processed by [`NetworkWorker::poll`]. -use std::{borrow::Cow, collections::{HashMap, HashSet}, fs, marker::PhantomData, io, path::Path}; +use std::{borrow::Cow, collections::{HashMap, HashSet}, fs, marker::PhantomData, io, path::Path, str}; use std::sync::{Arc, atomic::{AtomicBool, AtomicUsize, Ordering}}; use std::pin::Pin; use std::task::Poll; @@ -39,7 +39,7 @@ use libp2p::swarm::{NetworkBehaviour, SwarmBuilder, SwarmEvent}; use parking_lot::Mutex; use sc_peerset::PeersetHandle; use sp_runtime::{traits::{Block as BlockT, NumberFor}, ConsensusEngineId}; -use prometheus_endpoint::{Registry, Gauge, U64, register, PrometheusError}; +use prometheus_endpoint::{Registry, Counter, CounterVec, Gauge, GaugeVec, Opts, U64, register, PrometheusError}; use crate::{behaviour::{Behaviour, BehaviourOut}, config::{parse_str_addr, parse_addr}}; use crate::{transport, config::NonReservedPeerMode, ReputationChange}; @@ -734,25 +734,108 @@ pub struct NetworkWorker { /// Senders for events that happen on the network. event_streams: Vec>, /// Prometheus network metrics. - metrics: Option + metrics: Option, } struct Metrics { + // This list is ordered alphabetically + connections: Gauge, + import_queue_blocks_submitted: Counter, + import_queue_finality_proofs_submitted: Counter, + import_queue_justifications_submitted: Counter, is_major_syncing: Gauge, + kbuckets_num_nodes: Gauge, + network_per_sec_bytes: GaugeVec, + notifications_total: CounterVec, + num_event_stream_channels: Gauge, + opened_notification_streams: GaugeVec, peers_count: Gauge, + peerset_num_discovered: Gauge, + peerset_num_requested: Gauge, + random_kademalia_queries_total: Counter, } impl Metrics { fn register(registry: &Registry) -> Result { Ok(Self { + // This list is ordered alphabetically + connections: register(Gauge::new( + "sub_libp2p_connections", "Number of libp2p connections" + )?, registry)?, + import_queue_blocks_submitted: register(Counter::new( + "import_queue_blocks_submitted", + "Number of blocks submitted to the import queue.", + )?, registry)?, + import_queue_finality_proofs_submitted: register(Counter::new( + "import_queue_finality_proofs_submitted", + "Number of finality proofs submitted to the import queue.", + )?, registry)?, + import_queue_justifications_submitted: register(Counter::new( + "import_queue_justifications_submitted", + "Number of justifications submitted to the import queue.", + )?, registry)?, is_major_syncing: register(Gauge::new( - "is_major_syncing", "Whether the node is performing a major sync or not.", + "sub_libp2p_is_major_syncing", "Whether the node is performing a major sync or not.", + )?, registry)?, + kbuckets_num_nodes: register(Gauge::new( + "sub_libp2p_kbuckets_num_nodes", "Number of nodes in the Kademlia k-buckets" + )?, registry)?, + network_per_sec_bytes: register(GaugeVec::new( + Opts::new( + "sub_libp2p_network_per_sec_bytes", + "Average bandwidth usage per second" + ), + &["direction"] + )?, registry)?, + notifications_total: register(CounterVec::new( + Opts::new( + "sub_libp2p_notifications_total", + "Number of notification received from all nodes" + ), + &["direction", "protocol"] + )?, registry)?, + num_event_stream_channels: register(Gauge::new( + "sub_libp2p_num_event_stream_channels", + "Number of internal active channels that broadcast network events", + )?, registry)?, + opened_notification_streams: register(GaugeVec::new( + Opts::new( + "sub_libp2p_opened_notification_streams", + "Number of open notification substreams" + ), + &["protocol"] )?, registry)?, peers_count: register(Gauge::new( - "peers_count", "Number of network gossip peers", + "sub_libp2p_peers_count", "Number of network gossip peers", + )?, registry)?, + peerset_num_discovered: register(Gauge::new( + "sub_libp2p_peerset_num_discovered", "Number of nodes stored in the peerset manager", + )?, registry)?, + peerset_num_requested: register(Gauge::new( + "sub_libp2p_peerset_num_requested", "Number of nodes that the peerset manager wants us to be connected to", + )?, registry)?, + random_kademalia_queries_total: register(Counter::new( + "sub_libp2p_random_kademalia_queries_total", "Number of random Kademlia queries started", )?, registry)?, }) } + + fn update_with_network_event(&self, event: &Event) { + match event { + Event::NotificationStreamOpened { engine_id, .. } => { + self.opened_notification_streams.with_label_values(&[&engine_id_to_string(&engine_id)]).inc(); + }, + Event::NotificationStreamClosed { engine_id, .. } => { + self.opened_notification_streams.with_label_values(&[&engine_id_to_string(&engine_id)]).dec(); + }, + Event::NotificationsReceived { messages, .. } => { + for (engine_id, _) in messages { + self.notifications_total.with_label_values(&["in", &engine_id_to_string(&engine_id)]).inc(); + } + }, + _ => {} + } + } } impl Future for NetworkWorker { @@ -800,10 +883,15 @@ impl Future for NetworkWorker { this.network_service.user_protocol_mut().set_sync_fork_request(peer_ids, &hash, number), ServiceToWorkerMsg::EventStream(sender) => this.event_streams.push(sender), - ServiceToWorkerMsg::WriteNotification { message, engine_id, target } => - this.network_service.user_protocol_mut().write_notification(target, engine_id, message), + ServiceToWorkerMsg::WriteNotification { message, engine_id, target } => { + if let Some(metrics) = this.metrics.as_ref() { + metrics.notifications_total.with_label_values(&["out", &engine_id_to_string(&engine_id)]).inc(); + } + this.network_service.user_protocol_mut().write_notification(target, engine_id, message) + }, ServiceToWorkerMsg::RegisterNotifProtocol { engine_id, protocol_name } => { - let events = this.network_service.user_protocol_mut().register_notifications_protocol(engine_id, protocol_name); + let events = this.network_service.user_protocol_mut() + .register_notifications_protocol(engine_id, protocol_name); for event in events { this.event_streams.retain(|sender| sender.unbounded_send(event.clone()).is_ok()); } @@ -821,18 +909,47 @@ impl Future for NetworkWorker { match poll_value { Poll::Pending => break, - Poll::Ready(SwarmEvent::Behaviour(BehaviourOut::BlockImport(origin, blocks))) => - this.import_queue.import_blocks(origin, blocks), - Poll::Ready(SwarmEvent::Behaviour(BehaviourOut::JustificationImport(origin, hash, nb, justification))) => - this.import_queue.import_justification(origin, hash, nb, justification), - Poll::Ready(SwarmEvent::Behaviour(BehaviourOut::FinalityProofImport(origin, hash, nb, proof))) => - this.import_queue.import_finality_proof(origin, hash, nb, proof), - Poll::Ready(SwarmEvent::Behaviour(BehaviourOut::Event(ev))) => - this.event_streams.retain(|sender| sender.unbounded_send(ev.clone()).is_ok()), - Poll::Ready(SwarmEvent::Connected(peer_id)) => - trace!(target: "sub-libp2p", "Libp2p => Connected({:?})", peer_id), - Poll::Ready(SwarmEvent::Disconnected(peer_id)) => - trace!(target: "sub-libp2p", "Libp2p => Disconnected({:?})", peer_id), + Poll::Ready(SwarmEvent::Behaviour(BehaviourOut::BlockImport(origin, blocks))) => { + if let Some(metrics) = this.metrics.as_ref() { + metrics.import_queue_blocks_submitted.inc(); + } + this.import_queue.import_blocks(origin, blocks); + }, + Poll::Ready(SwarmEvent::Behaviour(BehaviourOut::JustificationImport(origin, hash, nb, justification))) => { + if let Some(metrics) = this.metrics.as_ref() { + metrics.import_queue_justifications_submitted.inc(); + } + this.import_queue.import_justification(origin, hash, nb, justification); + }, + Poll::Ready(SwarmEvent::Behaviour(BehaviourOut::FinalityProofImport(origin, hash, nb, proof))) => { + if let Some(metrics) = this.metrics.as_ref() { + metrics.import_queue_finality_proofs_submitted.inc(); + } + this.import_queue.import_finality_proof(origin, hash, nb, proof); + }, + Poll::Ready(SwarmEvent::Behaviour(BehaviourOut::RandomKademliaStarted)) => { + if let Some(metrics) = this.metrics.as_ref() { + metrics.random_kademalia_queries_total.inc(); + } + }, + Poll::Ready(SwarmEvent::Behaviour(BehaviourOut::Event(ev))) => { + this.event_streams.retain(|sender| sender.unbounded_send(ev.clone()).is_ok()); + if let Some(metrics) = this.metrics.as_ref() { + metrics.update_with_network_event(&ev); + } + }, + Poll::Ready(SwarmEvent::Connected(peer_id)) => { + trace!(target: "sub-libp2p", "Libp2p => Connected({:?})", peer_id); + if let Some(metrics) = this.metrics.as_ref() { + metrics.connections.inc(); + } + }, + Poll::Ready(SwarmEvent::Disconnected(peer_id)) => { + trace!(target: "sub-libp2p", "Libp2p => Disconnected({:?})", peer_id); + if let Some(metrics) = this.metrics.as_ref() { + metrics.connections.dec(); + } + }, Poll::Ready(SwarmEvent::NewListenAddr(addr)) => trace!(target: "sub-libp2p", "Libp2p => NewListenAddr({})", addr), Poll::Ready(SwarmEvent::ExpiredListenAddr(addr)) => @@ -861,8 +978,14 @@ impl Future for NetworkWorker { this.is_major_syncing.store(is_major_syncing, Ordering::Relaxed); if let Some(metrics) = this.metrics.as_ref() { + metrics.network_per_sec_bytes.with_label_values(&["in"]).set(this.service.bandwidth.average_download_per_sec()); + metrics.network_per_sec_bytes.with_label_values(&["out"]).set(this.service.bandwidth.average_upload_per_sec()); metrics.is_major_syncing.set(is_major_syncing as u64); + metrics.kbuckets_num_nodes.set(this.network_service.num_kbuckets_entries() as u64); + metrics.num_event_stream_channels.set(this.event_streams.len() as u64); metrics.peers_count.set(num_connected_peers as u64); + metrics.peerset_num_discovered.set(this.network_service.user_protocol().num_discovered_peers() as u64); + metrics.peerset_num_requested.set(this.network_service.user_protocol().requested_peers().count() as u64); } Poll::Pending @@ -872,6 +995,15 @@ impl Future for NetworkWorker { impl Unpin for NetworkWorker { } +/// Turns a `ConsensusEngineId` into a representable string. +fn engine_id_to_string(id: &ConsensusEngineId) -> Cow { + if let Ok(s) = std::str::from_utf8(&id[..]) { + Cow::Borrowed(s) + } else { + Cow::Owned(format!("{:?}", id)) + } +} + /// The libp2p swarm, customized for our needs. type Swarm = libp2p::swarm::Swarm>; diff --git a/client/peerset/src/lib.rs b/client/peerset/src/lib.rs index bd6c19a62d..87ed2336ae 100644 --- a/client/peerset/src/lib.rs +++ b/client/peerset/src/lib.rs @@ -518,6 +518,11 @@ impl Peerset { }) } + /// Returns the number of peers that we have discovered. + pub fn num_discovered_peers(&self) -> usize { + self.data.peers().len() + } + /// Returns priority group by id. pub fn get_priority_group(&self, group_id: &str) -> Option> { self.data.get_priority_group(group_id) diff --git a/client/peerset/src/peersstate.rs b/client/peerset/src/peersstate.rs index 7abf17a5f8..843ec0a360 100644 --- a/client/peerset/src/peersstate.rs +++ b/client/peerset/src/peersstate.rs @@ -144,7 +144,7 @@ impl PeersState { /// Returns the list of all the peers we know of. // Note: this method could theoretically return a `Peer`, but implementing that // isn't simple. - pub fn peers(&self) -> impl Iterator { + pub fn peers(&self) -> impl ExactSizeIterator { self.nodes.keys() } -- GitLab From 1667f6e95690d28e5eb38fa4ede445d340c676bd Mon Sep 17 00:00:00 2001 From: kianenigma Date: Thu, 5 Mar 2020 21:42:19 +0100 Subject: [PATCH 130/301] Fix derive --- primitives/phragmen/fuzzer/Cargo.lock | 160 +++++++++++++------------- primitives/phragmen/fuzzer/Cargo.toml | 2 +- primitives/phragmen/src/node.rs | 10 +- 3 files changed, 82 insertions(+), 90 deletions(-) diff --git a/primitives/phragmen/fuzzer/Cargo.lock b/primitives/phragmen/fuzzer/Cargo.lock index 09303dde83..14286d239d 100644 --- a/primitives/phragmen/fuzzer/Cargo.lock +++ b/primitives/phragmen/fuzzer/Cargo.lock @@ -385,7 +385,7 @@ name = "impl-codec" version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-scale-codec 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -569,19 +569,19 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "parity-scale-codec" -version = "1.1.2" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "arrayvec 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", "bitvec 0.15.2 (registry+https://github.com/rust-lang/crates.io-index)", "byte-slice-cast 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-scale-codec-derive 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-scale-codec-derive 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "parity-scale-codec-derive" -version = "1.1.1" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "proc-macro-crate 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1006,30 +1006,30 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "sp-application-crypto" -version = "2.0.0" +version = "2.0.0-alpha.3" dependencies = [ - "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-scale-codec 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-core 2.0.0", - "sp-io 2.0.0", - "sp-std 2.0.0", + "sp-core 2.0.0-alpha.3", + "sp-io 2.0.0-alpha.3", + "sp-std 2.0.0-alpha.3", ] [[package]] name = "sp-arithmetic" -version = "2.0.0" +version = "2.0.0-alpha.3" dependencies = [ "integer-sqrt 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", "num-traits 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-scale-codec 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-debug-derive 2.0.0", - "sp-std 2.0.0", + "sp-debug-derive 2.0.0-alpha.3", + "sp-std 2.0.0-alpha.3", ] [[package]] name = "sp-core" -version = "2.0.0" +version = "2.0.0-alpha.3" dependencies = [ "base58 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "blake2-rfc 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1043,7 +1043,7 @@ dependencies = [ "libsecp256k1 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "num-traits 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-scale-codec 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "parity-util-mem 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", "parking_lot 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", "primitive-types 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1053,11 +1053,11 @@ dependencies = [ "schnorrkel 0.8.5 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", "sha2 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-debug-derive 2.0.0", - "sp-externalities 0.8.0", - "sp-runtime-interface 2.0.0", - "sp-std 2.0.0", - "sp-storage 2.0.0", + "sp-debug-derive 2.0.0-alpha.3", + "sp-externalities 0.8.0-alpha.3", + "sp-runtime-interface 2.0.0-alpha.3", + "sp-std 2.0.0-alpha.3", + "sp-storage 2.0.0-alpha.3", "substrate-bip39 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "tiny-bip39 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", "tiny-keccak 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1068,7 +1068,7 @@ dependencies = [ [[package]] name = "sp-debug-derive" -version = "2.0.0" +version = "2.0.0-alpha.3" dependencies = [ "proc-macro2 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)", "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1077,44 +1077,44 @@ dependencies = [ [[package]] name = "sp-externalities" -version = "0.8.0" +version = "0.8.0-alpha.3" dependencies = [ "environmental 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-std 2.0.0", - "sp-storage 2.0.0", + "sp-std 2.0.0-alpha.3", + "sp-storage 2.0.0-alpha.3", ] [[package]] name = "sp-inherents" -version = "2.0.0" +version = "2.0.0-alpha.3" dependencies = [ "derive_more 0.99.2 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-scale-codec 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "parking_lot 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-core 2.0.0", - "sp-std 2.0.0", + "sp-core 2.0.0-alpha.3", + "sp-std 2.0.0-alpha.3", ] [[package]] name = "sp-io" -version = "2.0.0" +version = "2.0.0-alpha.3" dependencies = [ "hash-db 0.15.2 (registry+https://github.com/rust-lang/crates.io-index)", "libsecp256k1 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-core 2.0.0", - "sp-externalities 0.8.0", - "sp-runtime-interface 2.0.0", - "sp-state-machine 0.8.0", - "sp-std 2.0.0", - "sp-trie 2.0.0", - "sp-wasm-interface 2.0.0", + "parity-scale-codec 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-core 2.0.0-alpha.3", + "sp-externalities 0.8.0-alpha.3", + "sp-runtime-interface 2.0.0-alpha.3", + "sp-state-machine 0.8.0-alpha.3", + "sp-std 2.0.0-alpha.3", + "sp-trie 2.0.0-alpha.3", + "sp-wasm-interface 2.0.0-alpha.3", ] [[package]] name = "sp-panic-handler" -version = "2.0.0" +version = "2.0.0-alpha.3" dependencies = [ "backtrace 0.3.42 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1122,19 +1122,19 @@ dependencies = [ [[package]] name = "sp-phragmen" -version = "2.0.0" +version = "2.0.0-alpha.3" dependencies = [ - "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-scale-codec 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-core 2.0.0", - "sp-phragmen-compact 2.0.0", - "sp-runtime 2.0.0", - "sp-std 2.0.0", + "sp-core 2.0.0-alpha.3", + "sp-phragmen-compact 2.0.0-dev", + "sp-runtime 2.0.0-alpha.3", + "sp-std 2.0.0-alpha.3", ] [[package]] name = "sp-phragmen-compact" -version = "2.0.0" +version = "2.0.0-dev" dependencies = [ "proc-macro-crate 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", "proc-macro2 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1148,44 +1148,44 @@ version = "2.0.0" dependencies = [ "honggfuzz 0.5.45", "rand 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-phragmen 2.0.0", + "sp-phragmen 2.0.0-alpha.3", ] [[package]] name = "sp-runtime" -version = "2.0.0" +version = "2.0.0-alpha.3" dependencies = [ "impl-trait-for-tuples 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-scale-codec 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "parity-util-mem 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", "paste 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", "rand 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-application-crypto 2.0.0", - "sp-arithmetic 2.0.0", - "sp-core 2.0.0", - "sp-inherents 2.0.0", - "sp-io 2.0.0", - "sp-std 2.0.0", + "sp-application-crypto 2.0.0-alpha.3", + "sp-arithmetic 2.0.0-alpha.3", + "sp-core 2.0.0-alpha.3", + "sp-inherents 2.0.0-alpha.3", + "sp-io 2.0.0-alpha.3", + "sp-std 2.0.0-alpha.3", ] [[package]] name = "sp-runtime-interface" -version = "2.0.0" +version = "2.0.0-alpha.3" dependencies = [ - "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-scale-codec 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "primitive-types 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-externalities 0.8.0", - "sp-runtime-interface-proc-macro 2.0.0", - "sp-std 2.0.0", - "sp-wasm-interface 2.0.0", + "sp-externalities 0.8.0-alpha.3", + "sp-runtime-interface-proc-macro 2.0.0-alpha.3", + "sp-std 2.0.0-alpha.3", + "sp-wasm-interface 2.0.0-alpha.3", "static_assertions 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "sp-runtime-interface-proc-macro" -version = "2.0.0" +version = "2.0.0-alpha.3" dependencies = [ "Inflector 0.11.4 (registry+https://github.com/rust-lang/crates.io-index)", "proc-macro-crate 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1196,56 +1196,56 @@ dependencies = [ [[package]] name = "sp-state-machine" -version = "0.8.0" +version = "0.8.0-alpha.3" dependencies = [ "hash-db 0.15.2 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "num-traits 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-scale-codec 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "parking_lot 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", "rand 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-core 2.0.0", - "sp-externalities 0.8.0", - "sp-panic-handler 2.0.0", - "sp-trie 2.0.0", + "sp-core 2.0.0-alpha.3", + "sp-externalities 0.8.0-alpha.3", + "sp-panic-handler 2.0.0-alpha.3", + "sp-trie 2.0.0-alpha.3", "trie-db 0.20.0 (registry+https://github.com/rust-lang/crates.io-index)", "trie-root 0.16.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "sp-std" -version = "2.0.0" +version = "2.0.0-alpha.3" [[package]] name = "sp-storage" -version = "2.0.0" +version = "2.0.0-alpha.3" dependencies = [ "impl-serde 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-debug-derive 2.0.0", - "sp-std 2.0.0", + "sp-debug-derive 2.0.0-alpha.3", + "sp-std 2.0.0-alpha.3", ] [[package]] name = "sp-trie" -version = "2.0.0" +version = "2.0.0-alpha.3" dependencies = [ "hash-db 0.15.2 (registry+https://github.com/rust-lang/crates.io-index)", "memory-db 0.19.0 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-core 2.0.0", - "sp-std 2.0.0", + "parity-scale-codec 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-core 2.0.0-alpha.3", + "sp-std 2.0.0-alpha.3", "trie-db 0.20.0 (registry+https://github.com/rust-lang/crates.io-index)", "trie-root 0.16.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "sp-wasm-interface" -version = "2.0.0" +version = "2.0.0-alpha.3" dependencies = [ "impl-trait-for-tuples 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-std 2.0.0", + "parity-scale-codec 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-std 2.0.0-alpha.3", "wasmi 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1526,8 +1526,8 @@ dependencies = [ "checksum num-traits 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)" = "c62be47e61d1842b9170f0fdeec8eba98e60e90e5446449a0545e5152acd7096" "checksum once_cell 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b1c601810575c99596d4afc46f78a678c80105117c379eb3650cf99b8a21ce5b" "checksum opaque-debug 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "2839e79665f131bdb5782e51f2c6c9599c133c6098982a54c794358bf432529c" -"checksum parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "f747c06d9f3b2ad387ac881b9667298c81b1243aa9833f086e05996937c35507" -"checksum parity-scale-codec-derive 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "34e513ff3e406f3ede6796dcdc83d0b32ffb86668cea1ccf7363118abeb00476" +"checksum parity-scale-codec 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "f509c5e67ca0605ee17dcd3f91ef41cadd685c75a298fb6261b781a5acb3f910" +"checksum parity-scale-codec-derive 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "5a0ec292e92e8ec7c58e576adacc1e3f399c597c8f263c42f18420abe58e7245" "checksum parity-util-mem 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ef1476e40bf8f5c6776e9600983435821ca86eb9819d74a6207cca69d091406a" "checksum parity-util-mem-derive 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "f557c32c6d268a07c921471619c0295f5efad3a0e76d4f97a05c091a51d110b2" "checksum parity-wasm 0.41.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ddfc878dac00da22f8f61e7af3157988424567ab01d9920b962ef7dcbd7cd865" diff --git a/primitives/phragmen/fuzzer/Cargo.toml b/primitives/phragmen/fuzzer/Cargo.toml index c9f79e3f17..645b1c151b 100644 --- a/primitives/phragmen/fuzzer/Cargo.toml +++ b/primitives/phragmen/fuzzer/Cargo.toml @@ -5,7 +5,7 @@ authors = ["Parity Technologies "] edition = "2018" [dependencies] -sp-phragmen = { version = "2.0.0-dev", path = ".." } +sp-phragmen = { version = "2.0.0-alpha.3", path = ".." } honggfuzz = "0.5" rand = "0.7.3" diff --git a/primitives/phragmen/src/node.rs b/primitives/phragmen/src/node.rs index a66f9dbb48..92ef325a34 100644 --- a/primitives/phragmen/src/node.rs +++ b/primitives/phragmen/src/node.rs @@ -33,7 +33,7 @@ pub(crate) type NodeRef
= RefCellOf>; /// Identifier of a node. This is particularly handy to have a proper `PartialEq` implementation. /// Otherwise, self votes wouldn't have been indistinguishable. -#[derive(PartialOrd, Ord, Clone)] +#[derive(PartialOrd, Ord, Clone, PartialEq, Eq)] pub(crate) struct NodeId { /// An account-like identifier representing the node. pub who: A, @@ -48,14 +48,6 @@ impl NodeId { } } -impl PartialEq for NodeId { - fn eq(&self, other: &NodeId) -> bool { - self.who == other.who && self.role == other.role - } -} - -impl Eq for NodeId {} - #[cfg(feature = "std")] impl sp_std::fmt::Debug for NodeId { fn fmt(&self, f: &mut fmt::Formatter<'_>) -> sp_std::fmt::Result { -- GitLab From e25c10356389a365c3b30b58f4979e090c8804ed Mon Sep 17 00:00:00 2001 From: kianenigma Date: Thu, 5 Mar 2020 21:54:30 +0100 Subject: [PATCH 131/301] Remove imports --- bin/node/runtime/src/lib.rs | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/bin/node/runtime/src/lib.rs b/bin/node/runtime/src/lib.rs index c23e2729a6..afcecbb206 100644 --- a/bin/node/runtime/src/lib.rs +++ b/bin/node/runtime/src/lib.rs @@ -31,7 +31,7 @@ pub use node_primitives::{AccountId, Signature}; use node_primitives::{AccountIndex, Balance, BlockNumber, Hash, Index, Moment}; use sp_api::impl_runtime_apis; use sp_runtime::{ - Permill, Perbill, Percent, ApplyExtrinsicResult, RuntimeString, + Permill, Perbill, Percent, ApplyExtrinsicResult, impl_opaque_keys, generic, create_runtime_str, }; use sp_runtime::curve::PiecewiseLinear; @@ -68,7 +68,6 @@ use impls::{CurrencyToVoteHandler, Author, LinearWeightToFee, TargetedFeeAdjustm /// Constant values used within the runtime. pub mod constants; use constants::{time::*, currency::*}; -use frame_system::Trait; // Make the WASM binary available. #[cfg(feature = "std")] -- GitLab From 8c672e107789ed10973d937ba8cac245404377e2 Mon Sep 17 00:00:00 2001 From: Gavin Wood Date: Thu, 5 Mar 2020 22:14:55 +0100 Subject: [PATCH 132/301] Revert quote fixed version and upgrade failure (#5152) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Revert "use fixed quote (#5135)" This reverts commit bea883b3592106f2e2c1ef413b3503fa983c55a8. * Upgrade failure version * Update frame/staking/reward-curve/Cargo.toml Co-Authored-By: André Silva * Ahh I'm dumb Co-authored-by: Gavin Wood Co-authored-by: André Silva --- Cargo.lock | 12 ++++++------ client/chain-spec/derive/Cargo.toml | 2 +- frame/staking/reward-curve/Cargo.toml | 2 +- frame/support/procedural/Cargo.toml | 2 +- frame/support/procedural/tools/Cargo.toml | 2 +- frame/support/procedural/tools/derive/Cargo.toml | 2 +- primitives/api/proc-macro/Cargo.toml | 2 +- primitives/debug-derive/Cargo.toml | 2 +- primitives/runtime-interface/proc-macro/Cargo.toml | 2 +- 9 files changed, 14 insertions(+), 14 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 9a380eaac1..2bed3b2bb5 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1318,9 +1318,9 @@ dependencies = [ [[package]] name = "failure" -version = "0.1.6" +version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8273f13c977665c5db7eb2b99ae520952fe5ac831ae4cd09d80c4c7042b5ed9" +checksum = "b8529c2421efa3066a5cbd8063d2244603824daccb6936b079010bb2aa89464b" dependencies = [ "backtrace", "failure_derive", @@ -1328,9 +1328,9 @@ dependencies = [ [[package]] name = "failure_derive" -version = "0.1.6" +version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0bc225b78e0391e4b8683440bf2e63c2deeeb2ce5189eab46e2b68c6d3725d08" +checksum = "030a733c8287d6213886dd487564ff5c8f6aae10278b3588ed177f9d18f8d231" dependencies = [ "proc-macro2", "quote", @@ -5108,9 +5108,9 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.2" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "053a8c8bcc71fcce321828dc897a98ab9760bef03a4fc36693c231e5b3216cfe" +checksum = "2bdc6c187c65bca4260c9011c9e3132efe4909da44726bad24cf7572ae338d7f" dependencies = [ "proc-macro2", ] diff --git a/client/chain-spec/derive/Cargo.toml b/client/chain-spec/derive/Cargo.toml index 801d86c754..df0e2f92b2 100644 --- a/client/chain-spec/derive/Cargo.toml +++ b/client/chain-spec/derive/Cargo.toml @@ -14,7 +14,7 @@ proc-macro = true [dependencies] proc-macro-crate = "0.1.4" proc-macro2 = "1.0.6" -quote = "=1.0.2" +quote = "1.0.3" syn = "1.0.7" [dev-dependencies] diff --git a/frame/staking/reward-curve/Cargo.toml b/frame/staking/reward-curve/Cargo.toml index bca5a13fe6..d55813682e 100644 --- a/frame/staking/reward-curve/Cargo.toml +++ b/frame/staking/reward-curve/Cargo.toml @@ -13,7 +13,7 @@ proc-macro = true [dependencies] syn = { version = "1.0.7", features = ["full", "visit"] } -quote = "=1.0.2" +quote = "1.0.3" proc-macro2 = "1.0.6" proc-macro-crate = "0.1.4" diff --git a/frame/support/procedural/Cargo.toml b/frame/support/procedural/Cargo.toml index a4187673cc..8d8ecb18a7 100644 --- a/frame/support/procedural/Cargo.toml +++ b/frame/support/procedural/Cargo.toml @@ -14,5 +14,5 @@ proc-macro = true [dependencies] frame-support-procedural-tools = { version = "2.0.0-alpha.2", path = "./tools" } proc-macro2 = "1.0.6" -quote = "=1.0.2" +quote = "1.0.3" syn = { version = "1.0.7", features = ["full"] } diff --git a/frame/support/procedural/tools/Cargo.toml b/frame/support/procedural/tools/Cargo.toml index 4aa32de9c0..52773f6fbe 100644 --- a/frame/support/procedural/tools/Cargo.toml +++ b/frame/support/procedural/tools/Cargo.toml @@ -11,6 +11,6 @@ description = "Proc macro helpers for procedural macros" [dependencies] frame-support-procedural-tools-derive = { version = "2.0.0-alpha.2", path = "./derive" } proc-macro2 = "1.0.6" -quote = "=1.0.2" +quote = "1.0.3" syn = { version = "1.0.7", features = ["full", "visit"] } proc-macro-crate = "0.1.4" diff --git a/frame/support/procedural/tools/derive/Cargo.toml b/frame/support/procedural/tools/derive/Cargo.toml index 8691b1d396..6bed290c7d 100644 --- a/frame/support/procedural/tools/derive/Cargo.toml +++ b/frame/support/procedural/tools/derive/Cargo.toml @@ -13,5 +13,5 @@ proc-macro = true [dependencies] proc-macro2 = "1.0.6" -quote = { version = "=1.0.2", features = ["proc-macro"] } +quote = { version = "1.0.3", features = ["proc-macro"] } syn = { version = "1.0.7", features = ["proc-macro" ,"full", "extra-traits", "parsing"] } diff --git a/primitives/api/proc-macro/Cargo.toml b/primitives/api/proc-macro/Cargo.toml index 2667a2642e..940e217596 100644 --- a/primitives/api/proc-macro/Cargo.toml +++ b/primitives/api/proc-macro/Cargo.toml @@ -14,7 +14,7 @@ documentation = "https://docs.rs/sp-api-proc-macro" proc-macro = true [dependencies] -quote = "=1.0.2" +quote = "1.0.3" syn = { version = "1.0.8", features = ["full", "fold", "extra-traits", "visit"] } proc-macro2 = "1.0.6" blake2-rfc = { version = "0.2.18", default-features = false } diff --git a/primitives/debug-derive/Cargo.toml b/primitives/debug-derive/Cargo.toml index bce3fbbbe3..1ffa37308e 100644 --- a/primitives/debug-derive/Cargo.toml +++ b/primitives/debug-derive/Cargo.toml @@ -13,7 +13,7 @@ documentation = "https://docs.rs/sp-debug-derive" proc-macro = true [dependencies] -quote = "=1.0.2" +quote = "1.0.3" syn = "1.0.7" proc-macro2 = "1.0" diff --git a/primitives/runtime-interface/proc-macro/Cargo.toml b/primitives/runtime-interface/proc-macro/Cargo.toml index ca37c46c7f..3743b2e09a 100644 --- a/primitives/runtime-interface/proc-macro/Cargo.toml +++ b/primitives/runtime-interface/proc-macro/Cargo.toml @@ -14,7 +14,7 @@ proc-macro = true [dependencies] syn = { version = "1.0.5", features = ["full", "visit", "fold", "extra-traits"] } -quote = "=1.0.2" +quote = "1.0.3" proc-macro2 = "1.0.3" Inflector = "0.11.4" proc-macro-crate = "0.1.4" -- GitLab From 81ddd48af603b6a7f541da562667e40f79d8f474 Mon Sep 17 00:00:00 2001 From: kianenigma Date: Fri, 6 Mar 2020 09:06:20 +0100 Subject: [PATCH 133/301] Remove unimplemented tests --- frame/staking/src/tests.rs | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/frame/staking/src/tests.rs b/frame/staking/src/tests.rs index 1d65ab3c37..e971601393 100644 --- a/frame/staking/src/tests.rs +++ b/frame/staking/src/tests.rs @@ -3586,16 +3586,6 @@ mod offchain_phragmen { }) } - #[test] - fn slashing_while_election_window() { - unimplemented!(); - } - - #[test] - fn era_forcing() { - unimplemented!(); - } - #[test] fn invalid_phragmen_result_wrong_score() { // A valid voter who's total distributed stake is more than what they bond -- GitLab From 7b39077af588a6bcd426ba925c77aa571b7f93f5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bastian=20K=C3=B6cher?= Date: Fri, 6 Mar 2020 15:27:59 +0100 Subject: [PATCH 134/301] Revert "Build block without checking signatures (#4916)" (#5159) * Revert "Build block without checking signatures (#4916)" This reverts commit dc92587bea4032e0a0fc96785bfd9aa17c95459e. * Some further clean ups --- bin/node-template/runtime/src/lib.rs | 4 - bin/node/runtime/src/lib.rs | 11 +-- .../basic-authorship/src/basic_authorship.rs | 4 +- client/block-builder/src/lib.rs | 38 +------- client/rpc/src/state/tests.rs | 2 +- client/service/src/lib.rs | 3 +- frame/executive/src/lib.rs | 90 ++++-------------- frame/transaction-payment/src/lib.rs | 4 +- primitives/block-builder/src/lib.rs | 6 +- primitives/runtime/src/generic/mod.rs | 9 -- .../src/generic/unchecked_extrinsic.rs | 34 +++---- primitives/runtime/src/testing.rs | 91 ++++--------------- primitives/runtime/src/traits.rs | 10 +- test-utils/runtime/src/lib.rs | 11 +-- test-utils/runtime/src/system.rs | 3 +- 15 files changed, 68 insertions(+), 252 deletions(-) diff --git a/bin/node-template/runtime/src/lib.rs b/bin/node-template/runtime/src/lib.rs index 2bc4c27450..e5feffc32d 100644 --- a/bin/node-template/runtime/src/lib.rs +++ b/bin/node-template/runtime/src/lib.rs @@ -297,10 +297,6 @@ impl_runtime_apis! { Executive::apply_extrinsic(extrinsic) } - fn apply_trusted_extrinsic(extrinsic: ::Extrinsic) -> ApplyExtrinsicResult { - Executive::apply_trusted_extrinsic(extrinsic) - } - fn finalize_block() -> ::Header { Executive::finalize_block() } diff --git a/bin/node/runtime/src/lib.rs b/bin/node/runtime/src/lib.rs index ae0de952e4..94dc857b21 100644 --- a/bin/node/runtime/src/lib.rs +++ b/bin/node/runtime/src/lib.rs @@ -31,7 +31,7 @@ pub use node_primitives::{AccountId, Signature}; use node_primitives::{AccountIndex, Balance, BlockNumber, Hash, Index, Moment}; use sp_api::impl_runtime_apis; use sp_runtime::{ - Permill, Perbill, Percent, ApplyExtrinsicResult, RuntimeString, + Permill, Perbill, Percent, ApplyExtrinsicResult, impl_opaque_keys, generic, create_runtime_str, }; use sp_runtime::curve::PiecewiseLinear; @@ -68,7 +68,6 @@ use impls::{CurrencyToVoteHandler, Author, LinearWeightToFee, TargetedFeeAdjustm /// Constant values used within the runtime. pub mod constants; use constants::{time::*, currency::*}; -use frame_system::Trait; // Make the WASM binary available. #[cfg(feature = "std")] @@ -83,7 +82,7 @@ pub const VERSION: RuntimeVersion = RuntimeVersion { // and set impl_version to 0. If only runtime // implementation changes and behavior does not, then leave spec_version as // is and increment impl_version. - spec_version: 230, + spec_version: 231, impl_version: 0, apis: RUNTIME_API_VERSIONS, }; @@ -705,10 +704,6 @@ impl_runtime_apis! { Executive::apply_extrinsic(extrinsic) } - fn apply_trusted_extrinsic(extrinsic: ::Extrinsic) -> ApplyExtrinsicResult { - Executive::apply_trusted_extrinsic(extrinsic) - } - fn finalize_block() -> ::Header { Executive::finalize_block() } @@ -844,7 +839,7 @@ impl_runtime_apis! { highest_range_values: Vec, steps: Vec, repeat: u32, - ) -> Result, RuntimeString> { + ) -> Result, sp_runtime::RuntimeString> { use frame_benchmarking::Benchmarking; let result = match module.as_slice() { diff --git a/client/basic-authorship/src/basic_authorship.rs b/client/basic-authorship/src/basic_authorship.rs index 41216c2b54..9dfe1c33be 100644 --- a/client/basic-authorship/src/basic_authorship.rs +++ b/client/basic-authorship/src/basic_authorship.rs @@ -203,7 +203,7 @@ impl ProposerInner inherent_data )? { - block_builder.push_trusted(extrinsic)?; + block_builder.push(extrinsic)?; } // proceed with transactions @@ -226,7 +226,7 @@ impl ProposerInner let pending_tx_data = pending_tx.data().clone(); let pending_tx_hash = pending_tx.hash().clone(); trace!("[{:?}] Pushing to the block.", pending_tx_hash); - match sc_block_builder::BlockBuilder::push_trusted(&mut block_builder, pending_tx_data) { + match sc_block_builder::BlockBuilder::push(&mut block_builder, pending_tx_data) { Ok(()) => { debug!("[{:?}] Pushed to the block.", pending_tx_hash); } diff --git a/client/block-builder/src/lib.rs b/client/block-builder/src/lib.rs index 2666fd9cd7..6aaa8e9016 100644 --- a/client/block-builder/src/lib.rs +++ b/client/block-builder/src/lib.rs @@ -145,43 +145,15 @@ where /// /// This will ensure the extrinsic can be validly executed (by executing it). pub fn push(&mut self, xt: ::Extrinsic) -> Result<(), ApiErrorFor> { - self.push_internal(xt, false) - } - - /// Push onto the block's list of extrinsics. - /// - /// This will treat incoming extrinsic `xt` as trusted and skip signature check (for signed transactions). - pub fn push_trusted(&mut self, xt: ::Extrinsic) -> Result<(), ApiErrorFor> { - self.push_internal(xt, true) - } - - fn push_internal(&mut self, xt: ::Extrinsic, skip_signature: bool) -> Result<(), ApiErrorFor> { let block_id = &self.block_id; let extrinsics = &mut self.extrinsics; - let use_trusted = skip_signature && self - .api - .has_api_with::>, _>( - block_id, - |version| version >= 5, - )?; - self.api.map_api_result(|api| { - let apply_result = if use_trusted { - api.apply_trusted_extrinsic_with_context( - block_id, - ExecutionContext::BlockConstruction, - xt.clone(), - )? - } else { - api.apply_extrinsic_with_context( - block_id, - ExecutionContext::BlockConstruction, - xt.clone(), - )? - }; - - match apply_result { + match api.apply_extrinsic_with_context( + block_id, + ExecutionContext::BlockConstruction, + xt.clone(), + )? { Ok(_) => { extrinsics.push(xt); Ok(()) diff --git a/client/rpc/src/state/tests.rs b/client/rpc/src/state/tests.rs index 6508d46ddd..a0ab11e977 100644 --- a/client/rpc/src/state/tests.rs +++ b/client/rpc/src/state/tests.rs @@ -402,7 +402,7 @@ fn should_return_runtime_version() { let result = "{\"specName\":\"test\",\"implName\":\"parity-test\",\"authoringVersion\":1,\ \"specVersion\":1,\"implVersion\":2,\"apis\":[[\"0xdf6acb689907609b\",2],\ - [\"0x37e397fc7c91f5e4\",1],[\"0xd2bc9897eed08f15\",1],[\"0x40fe3ad401f8959a\",5],\ + [\"0x37e397fc7c91f5e4\",1],[\"0xd2bc9897eed08f15\",1],[\"0x40fe3ad401f8959a\",4],\ [\"0xc6e9a76309f39b09\",1],[\"0xdd718d5cc53262d4\",1],[\"0xcbca25e39f142387\",1],\ [\"0xf78b278be53f454c\",2],[\"0xab3c0572291feb8b\",1],[\"0xbc9d89904f5b923f\",1]]}"; diff --git a/client/service/src/lib.rs b/client/service/src/lib.rs index db56c141db..bc5273e700 100644 --- a/client/service/src/lib.rs +++ b/client/service/src/lib.rs @@ -656,7 +656,6 @@ mod tests { use futures::executor::block_on; use sp_consensus::SelectChain; use sp_runtime::traits::BlindCheckable; - use sp_runtime::generic::CheckSignature; use substrate_test_runtime_client::{prelude::*, runtime::{Extrinsic, Transfer}}; use sc_transaction_pool::{BasicPool, FullChainApi}; @@ -685,7 +684,7 @@ mod tests { // then assert_eq!(transactions.len(), 1); - assert!(transactions[0].1.clone().check(CheckSignature::Yes).is_ok()); + assert!(transactions[0].1.clone().check().is_ok()); // this should not panic let _ = transactions[0].1.transfer(); } diff --git a/frame/executive/src/lib.rs b/frame/executive/src/lib.rs index 7bf39989ec..1d1fb95ce4 100644 --- a/frame/executive/src/lib.rs +++ b/frame/executive/src/lib.rs @@ -80,15 +80,13 @@ use frame_support::{ weights::{GetDispatchInfo, WeighBlock, DispatchInfo} }; use sp_runtime::{ - generic::Digest, - ApplyExtrinsicResult, + generic::Digest, ApplyExtrinsicResult, traits::{ self, Header, Zero, One, Checkable, Applyable, CheckEqual, OnFinalize, OnInitialize, NumberFor, Block as BlockT, OffchainWorker, Dispatchable, Saturating, OnRuntimeUpgrade, }, transaction_validity::TransactionValidity, }; -use sp_runtime::generic::CheckSignature; use sp_runtime::traits::ValidateUnsigned; use codec::{Codec, Encode}; use frame_system::{extrinsics_root, DigestOf}; @@ -263,22 +261,13 @@ where pub fn apply_extrinsic(uxt: Block::Extrinsic) -> ApplyExtrinsicResult { let encoded = uxt.encode(); let encoded_len = encoded.len(); - Self::apply_extrinsic_with_len(uxt, encoded_len, Some(encoded), CheckSignature::Yes) - } - - /// Apply extrinsic outside of the block execution function. - /// - /// Same as `apply_extrinsic`, but skips signature checks. - pub fn apply_trusted_extrinsic(uxt: Block::Extrinsic) -> ApplyExtrinsicResult { - let encoded = uxt.encode(); - let encoded_len = encoded.len(); - Self::apply_extrinsic_with_len(uxt, encoded_len, Some(encoded), CheckSignature::No) + Self::apply_extrinsic_with_len(uxt, encoded_len, Some(encoded)) } /// Apply an extrinsic inside the block execution function. fn apply_extrinsic_no_note(uxt: Block::Extrinsic) { let l = uxt.encode().len(); - match Self::apply_extrinsic_with_len(uxt, l, None, CheckSignature::Yes) { + match Self::apply_extrinsic_with_len(uxt, l, None) { Ok(_) => (), Err(e) => { let err: &'static str = e.into(); panic!(err) }, } @@ -289,13 +278,9 @@ where uxt: Block::Extrinsic, encoded_len: usize, to_note: Option>, - check_signature: CheckSignature, ) -> ApplyExtrinsicResult { // Verify that the signature is good. - let xt = uxt.check( - check_signature, - &Default::default(), - )?; + let xt = uxt.check(&Default::default())?; // We don't need to make sure to `note_extrinsic` only after we know it's going to be // executed to prevent it from leaking in storage since at this point, it will either @@ -343,7 +328,7 @@ where /// Changes made to storage should be discarded. pub fn validate_transaction(uxt: Block::Extrinsic) -> TransactionValidity { let encoded_len = uxt.using_encoded(|d| d.len()); - let xt = uxt.check(CheckSignature::Yes, &Default::default())?; + let xt = uxt.check(&Default::default())?; let dispatch_info = xt.get_dispatch_info(); xt.validate::(dispatch_info, encoded_len) @@ -541,8 +526,8 @@ mod tests { ) } - fn sign_extra(who: u64, nonce: u64, fee: u64) -> (u64, SignedExtra) { - (who, extra(nonce, fee)) + fn sign_extra(who: u64, nonce: u64, fee: u64) -> Option<(u64, SignedExtra)> { + Some((who, extra(nonce, fee))) } #[test] @@ -551,7 +536,7 @@ mod tests { pallet_balances::GenesisConfig:: { balances: vec![(1, 211)], }.assimilate_storage(&mut t).unwrap(); - let xt = TestXt::new_signed(sign_extra(1, 0, 0), Call::Balances(BalancesCall::transfer(2, 69))); + let xt = TestXt::new(Call::Balances(BalancesCall::transfer(2, 69)), sign_extra(1, 0, 0)); let weight = xt.get_dispatch_info().weight as u64; let mut t = sp_io::TestExternalities::new(t); t.execute_with(|| { @@ -631,7 +616,7 @@ mod tests { fn bad_extrinsic_not_inserted() { let mut t = new_test_ext(1); // bad nonce check! - let xt = TestXt::new_signed(sign_extra(1, 30, 0), Call::Balances(BalancesCall::transfer(33, 69))); + let xt = TestXt::new(Call::Balances(BalancesCall::transfer(33, 69)), sign_extra(1, 30, 0)); t.execute_with(|| { Executive::initialize_block(&Header::new( 1, @@ -649,7 +634,7 @@ mod tests { fn block_weight_limit_enforced() { let mut t = new_test_ext(10000); // given: TestXt uses the encoded len as fixed Len: - let xt = TestXt::new_signed(sign_extra(1, 0, 0), Call::Balances(BalancesCall::transfer(33, 0))); + let xt = TestXt::new(Call::Balances(BalancesCall::transfer(33, 0)), sign_extra(1, 0, 0)); let encoded = xt.encode(); let encoded_len = encoded.len() as Weight; let limit = AvailableBlockRatio::get() * MaximumBlockWeight::get() - 175; @@ -666,8 +651,8 @@ mod tests { assert_eq!(>::all_extrinsics_weight(), 175); for nonce in 0..=num_to_exhaust_block { - let xt = TestXt::new_signed( - sign_extra(1, nonce.into(), 0), Call::Balances(BalancesCall::transfer(33, 0)), + let xt = TestXt::new( + Call::Balances(BalancesCall::transfer(33, 0)), sign_extra(1, nonce.into(), 0), ); let res = Executive::apply_extrinsic(xt); if nonce != num_to_exhaust_block { @@ -686,9 +671,9 @@ mod tests { #[test] fn block_weight_and_size_is_stored_per_tx() { - let xt = TestXt::new_signed(sign_extra(1, 0, 0), Call::Balances(BalancesCall::transfer(33, 0))); - let x1 = TestXt::new_signed(sign_extra(1, 1, 0), Call::Balances(BalancesCall::transfer(33, 0))); - let x2 = TestXt::new_signed(sign_extra(1, 2, 0), Call::Balances(BalancesCall::transfer(33, 0))); + let xt = TestXt::new(Call::Balances(BalancesCall::transfer(33, 0)), sign_extra(1, 0, 0)); + let x1 = TestXt::new(Call::Balances(BalancesCall::transfer(33, 0)), sign_extra(1, 1, 0)); + let x2 = TestXt::new(Call::Balances(BalancesCall::transfer(33, 0)), sign_extra(1, 2, 0)); let len = xt.clone().encode().len() as u32; let mut t = new_test_ext(1); t.execute_with(|| { @@ -712,7 +697,7 @@ mod tests { #[test] fn validate_unsigned() { - let xt = TestXt::new_unsigned(Call::Balances(BalancesCall::set_balance(33, 69, 69))); + let xt = TestXt::new(Call::Balances(BalancesCall::set_balance(33, 69, 69)), None); let mut t = new_test_ext(1); t.execute_with(|| { @@ -721,45 +706,6 @@ mod tests { }); } - #[test] - fn unsigned_weight_is_noted_when_applied() { - let xt = TestXt::new_unsigned(Call::Balances(BalancesCall::set_balance(33, 69, 69))); - let len = xt.clone().encode().len() as u32; - let mut t = new_test_ext(1); - t.execute_with(|| { - assert_eq!(>::all_extrinsics_weight(), 0); - assert_eq!(>::all_extrinsics_len(), 0); - - // This is okay -- balances transfer will panic since it requires ensure_signed. - assert_eq!(Executive::apply_extrinsic(xt), Ok(Err(DispatchError::BadOrigin))); - - assert_eq!(>::all_extrinsics_weight(), len); - assert_eq!(>::all_extrinsics_len(), len); - }); - } - - #[test] - fn apply_trusted_skips_signature_check_but_not_others() { - let xt1 = TestXt::new_signed(sign_extra(1, 0, 0), Call::Balances(BalancesCall::transfer(33, 0))) - .badly_signed(); - - let mut t = new_test_ext(1); - - t.execute_with(|| { - assert_eq!(Executive::apply_trusted_extrinsic(xt1), Ok(Ok(()))); - }); - - let xt2 = TestXt::new_signed(sign_extra(1, 0, 0), Call::Balances(BalancesCall::transfer(33, 0))) - .invalid(TransactionValidityError::Invalid(InvalidTransaction::Call)); - - t.execute_with(|| { - assert_eq!( - Executive::apply_trusted_extrinsic(xt2), - Err(TransactionValidityError::Invalid(InvalidTransaction::Call)) - ); - }); - } - #[test] fn can_pay_for_tx_fee_on_full_lock() { let id: LockIdentifier = *b"0 "; @@ -772,9 +718,9 @@ mod tests { 110, lock, ); - let xt = TestXt::new_signed( - sign_extra(1, 0, 0), + let xt = TestXt::new( Call::System(SystemCall::remark(vec![1u8])), + sign_extra(1, 0, 0), ); let weight = xt.get_dispatch_info().weight as u64; Executive::initialize_block(&Header::new( diff --git a/frame/transaction-payment/src/lib.rs b/frame/transaction-payment/src/lib.rs index 3de0f944de..fe15bdf794 100644 --- a/frame/transaction-payment/src/lib.rs +++ b/frame/transaction-payment/src/lib.rs @@ -258,7 +258,7 @@ mod tests { use sp_core::H256; use sp_runtime::{ testing::{Header, TestXt}, - traits::{BlakeTwo256, Extrinsic, IdentityLookup}, + traits::{BlakeTwo256, IdentityLookup}, Perbill, }; use std::cell::RefCell; @@ -535,7 +535,7 @@ mod tests { let call = Call::Balances(BalancesCall::transfer(2, 69)); let origin = 111111; let extra = (); - let xt = TestXt::new(call, Some((origin, extra))).unwrap(); + let xt = TestXt::new(call, Some((origin, extra))); let info = xt.get_dispatch_info(); let ext = xt.encode(); let len = ext.len() as u32; diff --git a/primitives/block-builder/src/lib.rs b/primitives/block-builder/src/lib.rs index 71c2a3ccb5..732c937c1a 100644 --- a/primitives/block-builder/src/lib.rs +++ b/primitives/block-builder/src/lib.rs @@ -24,17 +24,13 @@ use sp_inherents::{InherentData, CheckInherentsResult}; sp_api::decl_runtime_apis! { /// The `BlockBuilder` api trait that provides the required functionality for building a block. - #[api_version(5)] + #[api_version(4)] pub trait BlockBuilder { /// Apply the given extrinsic. /// /// Returns an inclusion outcome which specifies if this extrinsic is included in /// this block or not. fn apply_extrinsic(extrinsic: ::Extrinsic) -> ApplyExtrinsicResult; - /// Apply the given extrinsic. - /// - /// Same as `apply_extrinsic`, but skips signature verification. - fn apply_trusted_extrinsic(extrinsic: ::Extrinsic) -> ApplyExtrinsicResult; /// Finish the current block. #[renamed("finalise_block", 3)] fn finalize_block() -> ::Header; diff --git a/primitives/runtime/src/generic/mod.rs b/primitives/runtime/src/generic/mod.rs index f6399fff13..5e9928ba19 100644 --- a/primitives/runtime/src/generic/mod.rs +++ b/primitives/runtime/src/generic/mod.rs @@ -39,15 +39,6 @@ pub use self::digest::{ use crate::codec::Encode; use sp_std::prelude::*; -/// Perform singature check. -#[derive(PartialEq, Eq, Clone, Copy)] -pub enum CheckSignature { - /// Perform. - Yes, - /// Don't perform. - No, -} - fn encode_with_vec_prefix)>(encoder: F) -> Vec { let size = ::sp_std::mem::size_of::(); let reserve = match size { diff --git a/primitives/runtime/src/generic/unchecked_extrinsic.rs b/primitives/runtime/src/generic/unchecked_extrinsic.rs index 0db60e32a6..a516bc1f7f 100644 --- a/primitives/runtime/src/generic/unchecked_extrinsic.rs +++ b/primitives/runtime/src/generic/unchecked_extrinsic.rs @@ -24,8 +24,7 @@ use crate::{ self, Member, MaybeDisplay, SignedExtension, Checkable, Extrinsic, ExtrinsicMetadata, IdentifyAccount, }, - generic::{CheckSignature, CheckedExtrinsic}, - transaction_validity::{TransactionValidityError, InvalidTransaction}, + generic::CheckedExtrinsic, transaction_validity::{TransactionValidityError, InvalidTransaction}, }; const TRANSACTION_VERSION: u8 = 4; @@ -121,26 +120,18 @@ where { type Checked = CheckedExtrinsic; - fn check(self, check_signature: CheckSignature, lookup: &Lookup) -> Result { + fn check(self, lookup: &Lookup) -> Result { Ok(match self.signature { Some((signed, signature, extra)) => { let signed = lookup.lookup(signed)?; + let raw_payload = SignedPayload::new(self.function, extra)?; + if !raw_payload.using_encoded(|payload| { + signature.verify(payload, &signed) + }) { + return Err(InvalidTransaction::BadProof.into()) + } - let (function, extra) = if let CheckSignature::No = check_signature { - (self.function, extra) - } else { - let raw_payload = SignedPayload::new(self.function, extra)?; - - if !raw_payload.using_encoded(|payload| { - signature.verify(payload, &signed) - }) { - return Err(InvalidTransaction::BadProof.into()) - } - let (function, extra, _) = raw_payload.deconstruct(); - - (function, extra) - }; - + let (function, extra, _) = raw_payload.deconstruct(); CheckedExtrinsic { signed: Some((signed, extra)), function, @@ -331,7 +322,6 @@ mod tests { use sp_io::hashing::blake2_256; use crate::codec::{Encode, Decode}; use crate::traits::{SignedExtension, IdentifyAccount, IdentityLookup}; - use crate::generic::CheckSignature; use serde::{Serialize, Deserialize}; type TestContext = IdentityLookup; @@ -412,7 +402,7 @@ mod tests { fn unsigned_check_should_work() { let ux = Ex::new_unsigned(vec![0u8; 0]); assert!(!ux.is_signed().unwrap_or(false)); - assert!(>::check(ux, CheckSignature::Yes, &Default::default()).is_ok()); + assert!(>::check(ux, &Default::default()).is_ok()); } #[test] @@ -425,7 +415,7 @@ mod tests { ); assert!(ux.is_signed().unwrap_or(false)); assert_eq!( - >::check(ux, CheckSignature::Yes, &Default::default()), + >::check(ux, &Default::default()), Err(InvalidTransaction::BadProof.into()), ); } @@ -440,7 +430,7 @@ mod tests { ); assert!(ux.is_signed().unwrap_or(false)); assert_eq!( - >::check(ux, CheckSignature::Yes, &Default::default()), + >::check(ux, &Default::default()), Ok(CEx { signed: Some((TEST_ACCOUNT, TestExtra)), function: vec![0u8; 0] }), ); } diff --git a/primitives/runtime/src/testing.rs b/primitives/runtime/src/testing.rs index e840cdd100..2439070054 100644 --- a/primitives/runtime/src/testing.rs +++ b/primitives/runtime/src/testing.rs @@ -24,10 +24,11 @@ use crate::traits::{ SignedExtension, Dispatchable, }; use crate::traits::ValidateUnsigned; -use crate::{generic::{self, CheckSignature}, KeyTypeId, ApplyExtrinsicResult}; +use crate::{generic, KeyTypeId, ApplyExtrinsicResult}; pub use sp_core::{H256, sr25519}; use sp_core::{crypto::{CryptoType, Dummy, key_types, Public}, U256}; -use crate::transaction_validity::{TransactionValidity, TransactionValidityError, InvalidTransaction}; +use crate::transaction_validity::{TransactionValidity, TransactionValidityError}; + /// Authority Id #[derive(Default, PartialEq, Eq, Clone, Encode, Decode, Debug, Hash, Serialize, Deserialize, PartialOrd, Ord)] pub struct UintAuthorityId(pub u64); @@ -293,69 +294,24 @@ impl<'a, Xt> Deserialize<'a> for Block where Block: Decode { } } -/// Test validity. -#[derive(PartialEq, Eq, Clone, Encode, Decode)] -pub enum TestValidity { - /// Valid variant that will pass all checks. - Valid, - /// Variant with invalid signature. - /// - /// Will fail signature check. - SignatureInvalid(TransactionValidityError), - /// Variant with invalid logic. - /// - /// Will fail all checks. - OtherInvalid(TransactionValidityError), -} - -/// Test transaction. +/// Test transaction, tuple of (sender, call, signed_extra) +/// with index only used if sender is some. /// -/// Used to mock actual transaction. +/// If sender is some then the transaction is signed otherwise it is unsigned. #[derive(PartialEq, Eq, Clone, Encode, Decode)] pub struct TestXt { - /// Signature with extra. - /// - /// if some, then the transaction is signed. Transaction is unsigned otherwise. + /// Signature of the extrinsic. pub signature: Option<(u64, Extra)>, - /// Validity. - /// - /// Instantiate invalid variant and transaction will fail correpsonding checks. - pub validity: TestValidity, - /// Call. + /// Call of the extrinsic. pub call: Call, } impl TestXt { - /// New signed test `TextXt`. - pub fn new_signed(signature: (u64, Extra), call: Call) -> Self { - TestXt { - signature: Some(signature), - validity: TestValidity::Valid, - call, - } - } - - /// New unsigned test `TextXt`. - pub fn new_unsigned(call: Call) -> Self { - TestXt { - signature: None, - validity: TestValidity::Valid, - call, - } + /// Create a new `TextXt`. + pub fn new(call: Call, signature: Option<(u64, Extra)>) -> Self { + Self { call, signature } } - - /// Build invalid variant of `TestXt`. - pub fn invalid(mut self, err: TransactionValidityError) -> Self { - self.validity = TestValidity::OtherInvalid(err); - self - } - - /// Build badly signed variant of `TestXt`. - pub fn badly_signed(mut self) -> Self { - self.validity = TestValidity::SignatureInvalid(TransactionValidityError::Invalid(InvalidTransaction::BadProof)); - self - } - } +} // Non-opaque extrinsics always 0. parity_util_mem::malloc_size_of_is_0!(any: TestXt); @@ -368,29 +324,14 @@ impl Serialize for TestXt where TestXt: E impl Debug for TestXt { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - write!(f, "TestXt({:?}, {}, ...)", - self.signature.as_ref().map(|x| &x.0), - if let TestValidity::Valid = self.validity { "valid" } else { "invalid" } - ) + write!(f, "TestXt({:?}, ...)", self.signature.as_ref().map(|x| &x.0)) } } impl Checkable for TestXt { type Checked = Self; - fn check(self, signature: CheckSignature, _: &Context) -> Result { - match self.validity { - TestValidity::Valid => Ok(self), - TestValidity::SignatureInvalid(e) => - if let CheckSignature::No = signature { - Ok(self) - } else { - Err(e) - }, - TestValidity::OtherInvalid(e) => Err(e), - } - } + fn check(self, _: &Context) -> Result { Ok(self) } } - impl traits::Extrinsic for TestXt { type Call = Call; type SignaturePayload = (u64, Extra); @@ -399,8 +340,8 @@ impl traits::Extrinsic for TestXt Some(self.signature.is_some()) } - fn new(call: Call, signature: Option) -> Option { - Some(TestXt { signature, call, validity: TestValidity::Valid }) + fn new(c: Call, sig: Option) -> Option { + Some(TestXt { signature: sig, call: c }) } } diff --git a/primitives/runtime/src/traits.rs b/primitives/runtime/src/traits.rs index 4e30e545e4..39e015505b 100644 --- a/primitives/runtime/src/traits.rs +++ b/primitives/runtime/src/traits.rs @@ -30,7 +30,7 @@ use crate::codec::{Codec, Encode, Decode}; use crate::transaction_validity::{ ValidTransaction, TransactionValidity, TransactionValidityError, UnknownTransaction, }; -use crate::generic::{Digest, DigestItem, CheckSignature}; +use crate::generic::{Digest, DigestItem}; pub use sp_arithmetic::traits::{ AtLeast32Bit, UniqueSaturatedInto, UniqueSaturatedFrom, Saturating, SaturatedConversion, Zero, One, Bounded, CheckedAdd, CheckedSub, CheckedMul, CheckedDiv, @@ -647,7 +647,7 @@ pub trait Checkable: Sized { type Checked; /// Check self, given an instance of Context. - fn check(self, signature: CheckSignature, c: &Context) -> Result; + fn check(self, c: &Context) -> Result; } /// A "checkable" piece of information, used by the standard Substrate Executive in order to @@ -659,15 +659,15 @@ pub trait BlindCheckable: Sized { type Checked; /// Check self. - fn check(self, signature: CheckSignature) -> Result; + fn check(self) -> Result; } // Every `BlindCheckable` is also a `StaticCheckable` for arbitrary `Context`. impl Checkable for T { type Checked = ::Checked; - fn check(self, signature: CheckSignature, _c: &Context) -> Result { - BlindCheckable::check(self, signature) + fn check(self, _c: &Context) -> Result { + BlindCheckable::check(self) } } diff --git a/test-utils/runtime/src/lib.rs b/test-utils/runtime/src/lib.rs index 5ddeff3901..f4797f7ce9 100644 --- a/test-utils/runtime/src/lib.rs +++ b/test-utils/runtime/src/lib.rs @@ -41,7 +41,6 @@ use sp_runtime::{ BlindCheckable, BlakeTwo256, Block as BlockT, Extrinsic as ExtrinsicT, GetNodeBlockType, GetRuntimeBlockType, Verify, IdentityLookup, }, - generic::CheckSignature, }; use sp_version::RuntimeVersion; pub use sp_core::{hash::H256}; @@ -149,7 +148,7 @@ impl serde::Serialize for Extrinsic { impl BlindCheckable for Extrinsic { type Checked = Self; - fn check(self, _signature: CheckSignature) -> Result { + fn check(self) -> Result { match self { Extrinsic::AuthoritiesChange(new_auth) => Ok(Extrinsic::AuthoritiesChange(new_auth)), Extrinsic::Transfer { transfer, signature, exhaust_resources_when_not_first } => { @@ -516,10 +515,6 @@ cfg_if! { system::execute_transaction(extrinsic) } - fn apply_trusted_extrinsic(extrinsic: ::Extrinsic) -> ApplyExtrinsicResult { - system::execute_transaction(extrinsic) - } - fn finalize_block() -> ::Header { system::finalize_block() } @@ -707,10 +702,6 @@ cfg_if! { system::execute_transaction(extrinsic) } - fn apply_trusted_extrinsic(extrinsic: ::Extrinsic) -> ApplyExtrinsicResult { - system::execute_transaction(extrinsic) - } - fn finalize_block() -> ::Header { system::finalize_block() } diff --git a/test-utils/runtime/src/system.rs b/test-utils/runtime/src/system.rs index 4ce774598f..1e29f789dc 100644 --- a/test-utils/runtime/src/system.rs +++ b/test-utils/runtime/src/system.rs @@ -29,7 +29,6 @@ use sp_runtime::{ transaction_validity::{ TransactionValidity, ValidTransaction, InvalidTransaction, TransactionValidityError, }, - generic::CheckSignature, }; use codec::{KeyedVec, Encode, Decode}; use frame_system::Trait; @@ -244,7 +243,7 @@ pub fn finalize_block() -> Header { #[inline(always)] fn check_signature(utx: &Extrinsic) -> Result<(), TransactionValidityError> { use sp_runtime::traits::BlindCheckable; - utx.clone().check(CheckSignature::Yes).map_err(|_| InvalidTransaction::BadProof.into()).map(|_| ()) + utx.clone().check().map_err(|_| InvalidTransaction::BadProof.into()).map(|_| ()) } fn execute_transaction_backend(utx: &Extrinsic, extrinsic_index: u32) -> ApplyExtrinsicResult { -- GitLab From c521592110c4a3b25f3341f78e43f08a56fb3dcd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Silva?= Date: Fri, 6 Mar 2020 17:31:35 +0000 Subject: [PATCH 135/301] client: don't log on 0 gossip messages (#5173) --- client/network-gossip/src/state_machine.rs | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/client/network-gossip/src/state_machine.rs b/client/network-gossip/src/state_machine.rs index db5ea3603d..675f021365 100644 --- a/client/network-gossip/src/state_machine.rs +++ b/client/network-gossip/src/state_machine.rs @@ -356,7 +356,10 @@ impl ConsensusGossip { who: PeerId, messages: Vec, ) { - trace!(target:"gossip", "Received {} messages from peer {}", messages.len(), who); + if !messages.is_empty() { + trace!(target: "gossip", "Received {} messages from peer {}", messages.len(), who); + } + for message in messages { let message_hash = HashFor::::hash(&message.data[..]); -- GitLab From 7e3d71541505d10965c25238eb7649a7716cebfe Mon Sep 17 00:00:00 2001 From: thiolliere Date: Fri, 6 Mar 2020 18:31:48 +0100 Subject: [PATCH 136/301] Fix staking bug (#5170) * fix staking bug * add some guarantee note in SessionManager while it is not fixed in staking * bumpd impl version --- frame/session/src/lib.rs | 2 ++ frame/staking/src/lib.rs | 15 +++++---------- 2 files changed, 7 insertions(+), 10 deletions(-) diff --git a/frame/session/src/lib.rs b/frame/session/src/lib.rs index 1097cfd6be..62c122fad3 100644 --- a/frame/session/src/lib.rs +++ b/frame/session/src/lib.rs @@ -156,6 +156,8 @@ pub trait SessionManager { /// `new_index` is strictly greater than from previous call. /// /// The first session start at index 0. + /// + /// `new_session(session)` is guaranteed to be called before `end_session(session-1)`. fn new_session(new_index: SessionIndex) -> Option>; /// End the session. /// diff --git a/frame/staking/src/lib.rs b/frame/staking/src/lib.rs index 2dc377c55a..627cd1c2a1 100644 --- a/frame/staking/src/lib.rs +++ b/frame/staking/src/lib.rs @@ -1659,17 +1659,12 @@ impl Module { /// End a session potentially ending an era. fn end_session(session_index: SessionIndex) { if let Some(active_era) = Self::active_era() { - let next_active_era_start_session_index = + if let Some(next_active_era_start_session_index) = Self::eras_start_session_index(active_era.index + 1) - .unwrap_or_else(|| { - frame_support::print( - "Error: start_session_index must be set for active_era + 1" - ); - 0 - }); - - if next_active_era_start_session_index == session_index + 1 { - Self::end_era(active_era, session_index); + { + if next_active_era_start_session_index == session_index + 1 { + Self::end_era(active_era, session_index); + } } } } -- GitLab From 638be17d262510478789eab4a32f9d8f84ec296a Mon Sep 17 00:00:00 2001 From: Joshy Orndorff Date: Fri, 6 Mar 2020 12:32:00 -0500 Subject: [PATCH 137/301] Increase node template max block weight (#5171) --- bin/node-template/runtime/src/lib.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bin/node-template/runtime/src/lib.rs b/bin/node-template/runtime/src/lib.rs index e5feffc32d..0414759a5a 100644 --- a/bin/node-template/runtime/src/lib.rs +++ b/bin/node-template/runtime/src/lib.rs @@ -120,7 +120,7 @@ pub fn native_version() -> NativeVersion { parameter_types! { pub const BlockHashCount: BlockNumber = 250; - pub const MaximumBlockWeight: Weight = 1_000_000; + pub const MaximumBlockWeight: Weight = 1_000_000_000; pub const AvailableBlockRatio: Perbill = Perbill::from_percent(75); pub const MaximumBlockLength: u32 = 5 * 1024 * 1024; pub const Version: RuntimeVersion = VERSION; -- GitLab From cc580956b20e78562d5227474d025fcd565111cd Mon Sep 17 00:00:00 2001 From: Alexander Krupenkin Date: Fri, 6 Mar 2020 18:32:18 +0100 Subject: [PATCH 138/301] adding a ss58 format for Plasm Network (#5155) --- primitives/core/src/crypto.rs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/primitives/core/src/crypto.rs b/primitives/core/src/crypto.rs index 574b8d417d..8fa7c7e7b4 100644 --- a/primitives/core/src/crypto.rs +++ b/primitives/core/src/crypto.rs @@ -436,6 +436,8 @@ ss58_address_format!( (0, "polkadot", "Polkadot Relay-chain, direct checksum, standard account (*25519).") KusamaAccountDirect => (2, "kusama", "Kusama Relay-chain, direct checksum, standard account (*25519).") + PlasmAccountDirect => + (5, "plasm", "Plasm Network, direct checksum, standard account (*25519).") EdgewareAccountDirect => (7, "edgeware", "Edgeware mainnet, direct checksum, standard account (*25519).") KaruraAccountDirect => -- GitLab From 9d7686614e3a88267ccea2dd236676851889127f Mon Sep 17 00:00:00 2001 From: Nikolay Volf Date: Fri, 6 Mar 2020 20:32:33 +0300 Subject: [PATCH 139/301] Add state/database caches to prometheus (#5165) * add state/database caches to prometheus * also state-db memory * use suggestions from review --- client/service/src/builder.rs | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/client/service/src/builder.rs b/client/service/src/builder.rs index 096f492e64..e49f568733 100644 --- a/client/service/src/builder.rs +++ b/client/service/src/builder.rs @@ -62,6 +62,9 @@ struct ServiceMetrics { cpu_usage_percentage: Gauge, network_per_sec_bytes: GaugeVec, node_roles: Gauge, + database_cache: Gauge, + state_cache: Gauge, + state_db: GaugeVec, } impl ServiceMetrics { @@ -87,7 +90,16 @@ impl ServiceMetrics { node_roles: register(Gauge::new( "node_roles", "The roles the node is running as", )?, registry)?, - + database_cache: register(Gauge::new( + "database_cache_bytes", "RocksDB cache size in bytes", + )?, registry)?, + state_cache: register(Gauge::new( + "state_cache_bytes", "State cache size in bytes", + )?, registry)?, + state_db: register(GaugeVec::new( + Opts::new("state_db_cache_bytes", "State DB cache in bytes"), + &["subtype"] + )?, registry)?, }) } } @@ -1079,6 +1091,17 @@ ServiceBuilder< if let Some(best_seen_block) = best_seen_block { metrics.block_height_number.with_label_values(&["sync_target"]).set(best_seen_block); } + + if let Some(info) = info.usage.as_ref() { + metrics.database_cache.set(info.memory.database_cache.as_bytes() as u64); + metrics.state_cache.set(info.memory.state_cache.as_bytes() as u64); + + metrics.state_db.with_label_values(&["non_canonical"]).set(info.memory.state_db.non_canonical.as_bytes() as u64); + if let Some(pruning) = info.memory.state_db.pruning { + metrics.state_db.with_label_values(&["pruning"]).set(pruning.as_bytes() as u64); + } + metrics.state_db.with_label_values(&["pinned"]).set(info.memory.state_db.pinned.as_bytes() as u64); + } } ready(()) -- GitLab From 1a022888a35c94118296c470e25744ca864f5e2b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Silva?= Date: Fri, 6 Mar 2020 17:32:50 +0000 Subject: [PATCH 140/301] client: fix notification sinks leak during initial sync (#5161) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * client: fix notification sinks leak during initial sync * client: add test for notification sink cleanup * Make it compile * Further cleanup * client: fix test for notification sinks cleanup Co-authored-by: Bastian Köcher --- client/src/client.rs | 112 +++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 107 insertions(+), 5 deletions(-) diff --git a/client/src/client.rs b/client/src/client.rs index 699e3320ff..adfdfb4b63 100644 --- a/client/src/client.rs +++ b/client/src/client.rs @@ -208,11 +208,9 @@ impl LockImportRun for Client let ClientImportOperation { op, notify_imported, notify_finalized } = op; self.backend.commit_operation(op)?; - self.notify_finalized(notify_finalized)?; - if let Some(notify_imported) = notify_imported { - self.notify_imported(notify_imported)?; - } + self.notify_finalized(notify_finalized)?; + self.notify_imported(notify_imported)?; Ok(r) }; @@ -919,6 +917,15 @@ impl Client where ) -> sp_blockchain::Result<()> { let mut sinks = self.finality_notification_sinks.lock(); + if notify_finalized.is_empty() { + // cleanup any closed finality notification sinks + // since we won't be running the loop below which + // would also remove any closed sinks. + sinks.retain(|sink| !sink.is_closed()); + + return Ok(()); + } + for finalized_hash in notify_finalized { let header = self.header(&BlockId::Hash(finalized_hash))? .expect("header already known to exist in DB because it is indicated in the tree route; qed"); @@ -939,7 +946,27 @@ impl Client where Ok(()) } - fn notify_imported(&self, notify_import: ImportSummary) -> sp_blockchain::Result<()> { + fn notify_imported( + &self, + notify_import: Option>, + ) -> sp_blockchain::Result<()> { + let notify_import = match notify_import { + Some(notify_import) => notify_import, + None => { + // cleanup any closed import notification sinks since we won't + // be sending any notifications below which would remove any + // closed sinks. this is necessary since during initial sync we + // won't send any import notifications which could lead to a + // temporary leak of closed/discarded notification sinks (e.g. + // from consensus code). + self.import_notification_sinks + .lock() + .retain(|sink| !sink.is_closed()); + + return Ok(()); + } + }; + if let Some(storage_changes) = notify_import.storage_changes { // TODO [ToDr] How to handle re-orgs? Should we re-emit all storage changes? self.storage_notifications.lock() @@ -3410,4 +3437,79 @@ pub(crate) mod tests { .collect(); assert_eq!(res, [hex!("cf722c0832b5231d35e29f319ff27389f5032bfc7bfc3ba5ed7839f2042fb99f").to_vec()]); } + + #[test] + fn cleans_up_closed_notification_sinks_on_block_import() { + use substrate_test_runtime_client::GenesisInit; + + // NOTE: we need to build the client here instead of using the client + // provided by test_runtime_client otherwise we can't access the private + // `import_notification_sinks` and `finality_notification_sinks` fields. + let mut client = + new_in_mem::< + _, + substrate_test_runtime_client::runtime::Block, + _, + substrate_test_runtime_client::runtime::RuntimeApi + >( + substrate_test_runtime_client::new_native_executor(), + &substrate_test_runtime_client::GenesisParameters::default().genesis_storage(), + None, + None, + ) + .unwrap(); + + type TestClient = Client< + in_mem::Backend, + LocalCallExecutor, sc_executor::NativeExecutor>, + substrate_test_runtime_client::runtime::Block, + substrate_test_runtime_client::runtime::RuntimeApi, + >; + + let import_notif1 = client.import_notification_stream(); + let import_notif2 = client.import_notification_stream(); + let finality_notif1 = client.finality_notification_stream(); + let finality_notif2 = client.finality_notification_stream(); + + // for some reason I can't seem to use `ClientBlockImportExt` + let bake_and_import_block = |client: &mut TestClient, origin| { + let block = client + .new_block(Default::default()) + .unwrap() + .build() + .unwrap() + .block; + + let (header, extrinsics) = block.deconstruct(); + let mut import = BlockImportParams::new(origin, header); + import.body = Some(extrinsics); + import.fork_choice = Some(ForkChoiceStrategy::LongestChain); + client.import_block(import, Default::default()).unwrap(); + }; + + // after importing a block we should still have 4 notification sinks + // (2 import + 2 finality) + bake_and_import_block(&mut client, BlockOrigin::Own); + assert_eq!(client.import_notification_sinks.lock().len(), 2); + assert_eq!(client.finality_notification_sinks.lock().len(), 2); + + // if we drop one import notification receiver and one finality + // notification receiver + drop(import_notif2); + drop(finality_notif2); + + // the sinks should be cleaned up after block import + bake_and_import_block(&mut client, BlockOrigin::Own); + assert_eq!(client.import_notification_sinks.lock().len(), 1); + assert_eq!(client.finality_notification_sinks.lock().len(), 1); + + // the same thing should happen if block import happens during initial + // sync + drop(import_notif1); + drop(finality_notif1); + + bake_and_import_block(&mut client, BlockOrigin::NetworkInitialSync); + assert_eq!(client.import_notification_sinks.lock().len(), 0); + assert_eq!(client.finality_notification_sinks.lock().len(), 0); + } } -- GitLab From f4616afc193db7cdba98d4eb812bdd4e65a9d572 Mon Sep 17 00:00:00 2001 From: Ashley Date: Fri, 6 Mar 2020 18:34:53 +0100 Subject: [PATCH 141/301] Fix browser node (#5166) --- client/executor/src/wasm_runtime.rs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/client/executor/src/wasm_runtime.rs b/client/executor/src/wasm_runtime.rs index 180baf0a2f..680bc4c458 100644 --- a/client/executor/src/wasm_runtime.rs +++ b/client/executor/src/wasm_runtime.rs @@ -297,6 +297,7 @@ fn create_versioned_wasm_runtime( host_functions: Vec<&'static dyn Function>, allow_missing_func_imports: bool, ) -> Result { + #[cfg(not(target_os = "unknown"))] let time = std::time::Instant::now(); let mut runtime = create_wasm_runtime_with_code( wasm_method, @@ -326,6 +327,7 @@ fn create_versioned_wasm_runtime( )?), Err(_) => None, }; + #[cfg(not(target_os = "unknown"))] log::debug!( target: "wasm-runtime", "Prepared new runtime version {:?} in {} ms.", -- GitLab From a9d9e42e5a37d63b4f006467ceb9dfa5a6656dcc Mon Sep 17 00:00:00 2001 From: Gavin Wood Date: Fri, 6 Mar 2020 21:23:14 +0100 Subject: [PATCH 142/301] Migration fix (#5174) --- bin/node/runtime/src/lib.rs | 2 +- frame/balances/src/migration.rs | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/bin/node/runtime/src/lib.rs b/bin/node/runtime/src/lib.rs index 94dc857b21..7b203d2e93 100644 --- a/bin/node/runtime/src/lib.rs +++ b/bin/node/runtime/src/lib.rs @@ -82,7 +82,7 @@ pub const VERSION: RuntimeVersion = RuntimeVersion { // and set impl_version to 0. If only runtime // implementation changes and behavior does not, then leave spec_version as // is and increment impl_version. - spec_version: 231, + spec_version: 232, impl_version: 0, apis: RUNTIME_API_VERSIONS, }; diff --git a/frame/balances/src/migration.rs b/frame/balances/src/migration.rs index 16c764d59f..d50f916b31 100644 --- a/frame/balances/src/migration.rs +++ b/frame/balances/src/migration.rs @@ -74,8 +74,9 @@ fn upgrade_v1_to_v2, I: Instance>() { // The items in Kusama that would result in a ref count being incremented. if have_storage_value(b"Democracy", b"Proxy", &hash) { refs += 1 } // We skip Recovered since it's being replaced anyway. - let mut prefixed_hash = twox_64(&b":session:keys"[..]).to_vec(); - prefixed_hash.extend(&b":session:keys"[..]); + let k = b":session:keys".encode(); + let mut prefixed_hash = twox_64(&k[..]).to_vec(); + prefixed_hash.extend(&k[..]); prefixed_hash.extend(&hash[..]); if have_storage_value(b"Session", b"NextKeys", &prefixed_hash) { refs += 1 } if have_storage_value(b"Staking", b"Bonded", &hash) { refs += 1 } -- GitLab From 4869840fb39ee38b1b1751333c8d5a5447f4ef6c Mon Sep 17 00:00:00 2001 From: Nikolay Volf Date: Fri, 6 Mar 2020 23:24:39 +0300 Subject: [PATCH 143/301] Fix possible corner case in revalidation (#5172) * remove all from members * add test --- client/transaction-pool/src/revalidation.rs | 5 +++- client/transaction-pool/src/testing/pool.rs | 30 +++++++++++++++++++++ 2 files changed, 34 insertions(+), 1 deletion(-) diff --git a/client/transaction-pool/src/revalidation.rs b/client/transaction-pool/src/revalidation.rs index b915f1fe71..4b3f9955ca 100644 --- a/client/transaction-pool/src/revalidation.rs +++ b/client/transaction-pool/src/revalidation.rs @@ -151,7 +151,6 @@ impl RevalidationWorker { } else { for xt in &to_queue { extrinsics.remove(xt); - self.members.remove(xt); } } left -= to_queue.len(); @@ -163,6 +162,10 @@ impl RevalidationWorker { } } + for hash in queued_exts.iter() { + self.members.remove(hash); + } + queued_exts } diff --git a/client/transaction-pool/src/testing/pool.rs b/client/transaction-pool/src/testing/pool.rs index d9f54ede94..7494ba2684 100644 --- a/client/transaction-pool/src/testing/pool.rs +++ b/client/transaction-pool/src/testing/pool.rs @@ -295,6 +295,36 @@ fn should_revalidate_transaction_multiple_times() { assert_eq!(pool.status().ready, 0); } +#[test] +fn should_revalidate_across_many_blocks() { + let xt1 = uxt(Alice, 209); + let xt2 = uxt(Alice, 210); + let xt3 = uxt(Alice, 211); + + let (pool, _guard) = maintained_pool(); + + block_on(pool.submit_one(&BlockId::number(1), xt1.clone())).expect("1. Imported"); + block_on(pool.submit_one(&BlockId::number(1), xt2.clone())).expect("1. Imported"); + assert_eq!(pool.status().ready, 2); + + pool.api.push_block(1, vec![]); + block_on(pool.maintain(block_event(1))); + block_on(futures_timer::Delay::new(BACKGROUND_REVALIDATION_INTERVAL*2)); + + + block_on(pool.submit_one(&BlockId::number(2), xt3.clone())).expect("1. Imported"); + assert_eq!(pool.status().ready, 3); + + pool.api.push_block(2, vec![xt1.clone()]); + block_on(pool.maintain(block_event(2))); + block_on(futures_timer::Delay::new(BACKGROUND_REVALIDATION_INTERVAL*2)); + + assert_eq!(pool.status().ready, 2); + // xt1 and xt2 validated twice, then xt3 once, then xt2 and xt3 again + assert_eq!(pool.api.validation_requests().len(), 7); +} + + #[test] fn should_push_watchers_during_maintaince() { fn alice_uxt(nonce: u64) -> Extrinsic { -- GitLab From c13a009bee2d9f147c1cb36e78cfb88a1d80352b Mon Sep 17 00:00:00 2001 From: Pierre Krieger Date: Fri, 6 Mar 2020 21:24:51 +0100 Subject: [PATCH 144/301] Fix NotificationStreamClosed reported when it shouldn't (#5160) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Fix NotificationStreamClosed reported when it shouldn't * Fix test * Add test * Update client/network/src/protocol.rs Co-Authored-By: Bastian Köcher * Oops, fix test Co-authored-by: Bastian Köcher --- client/network/src/config.rs | 2 +- client/network/src/protocol.rs | 66 ++++++++++++++++--- client/network/src/protocol/light_dispatch.rs | 18 ++--- client/network/src/service.rs | 31 +++++++++ client/network/test/src/lib.rs | 30 +-------- 5 files changed, 102 insertions(+), 45 deletions(-) diff --git a/client/network/src/config.rs b/client/network/src/config.rs index 76c0c9b544..b7a802b537 100644 --- a/client/network/src/config.rs +++ b/client/network/src/config.rs @@ -21,7 +21,7 @@ pub use crate::chain::{Client, FinalityProofProvider}; pub use crate::on_demand_layer::OnDemand; -pub use crate::service::TransactionPool; +pub use crate::service::{TransactionPool, EmptyTransactionPool}; pub use libp2p::{identity, core::PublicKey, wasm_ext::ExtTransport, build_multiaddr}; // Note: this re-export shouldn't be part of the public API of the crate and will be removed in diff --git a/client/network/src/protocol.rs b/client/network/src/protocol.rs index 17208aab50..a577513220 100644 --- a/client/network/src/protocol.rs +++ b/client/network/src/protocol.rs @@ -779,7 +779,7 @@ impl Protocol { } /// Called by peer when it is disconnecting - pub fn on_peer_disconnected(&mut self, peer: PeerId) { + pub fn on_peer_disconnected(&mut self, peer: PeerId) -> CustomMessageOutcome { if self.important_peers.contains(&peer) { warn!(target: "sync", "Reserved peer {} disconnected", peer); } else { @@ -796,7 +796,15 @@ impl Protocol { self.light_dispatch.on_disconnect(LightDispatchIn { behaviour: &mut self.behaviour, peerset: self.peerset_handle.clone(), - }, peer); + }, &peer); + + // Notify all the notification protocols as closed. + CustomMessageOutcome::NotificationStreamClosed { + remote: peer, + protocols: self.protocol_name_by_engine.keys().cloned().collect(), + } + } else { + CustomMessageOutcome::None } } @@ -2063,12 +2071,7 @@ impl NetworkBehaviour for Protocol { CustomMessageOutcome::None } GenericProtoOut::CustomProtocolClosed { peer_id, .. } => { - self.on_peer_disconnected(peer_id.clone()); - // Notify all the notification protocols as closed. - CustomMessageOutcome::NotificationStreamClosed { - remote: peer_id, - protocols: self.protocol_name_by_engine.keys().cloned().collect(), - } + self.on_peer_disconnected(peer_id.clone()) }, GenericProtoOut::CustomMessage { peer_id, message } => self.on_custom_message(peer_id, message), @@ -2139,3 +2142,50 @@ impl Drop for Protocol { debug!(target: "sync", "Network stats:\n{}", self.format_stats()); } } + +#[cfg(test)] +mod tests { + use crate::PeerId; + use crate::protocol::light_dispatch::AlwaysBadChecker; + use crate::config::{EmptyTransactionPool, Roles}; + use super::{CustomMessageOutcome, Protocol, ProtocolConfig}; + + use sp_consensus::block_validation::DefaultBlockAnnounceValidator; + use std::sync::Arc; + use substrate_test_runtime_client::{TestClientBuilder, TestClientBuilderExt}; + use substrate_test_runtime_client::runtime::{Block, Hash}; + + #[test] + fn no_handshake_no_notif_closed() { + let client = Arc::new(TestClientBuilder::with_default_backend().build_with_longest_chain().0); + + let (mut protocol, _) = Protocol::::new( + ProtocolConfig { + roles: Roles::FULL, + max_parallel_downloads: 10, + }, + client.clone(), + Arc::new(AlwaysBadChecker), + Arc::new(EmptyTransactionPool), + None, + None, + From::from(&b"test"[..]), + sc_peerset::PeersetConfig { + in_peers: 10, + out_peers: 10, + bootnodes: Vec::new(), + reserved_only: false, + reserved_nodes: Vec::new(), + }, + Box::new(DefaultBlockAnnounceValidator::new(client.clone())), + None + ).unwrap(); + + let dummy_peer_id = PeerId::random(); + let _ = protocol.on_peer_connected(dummy_peer_id.clone()); + match protocol.on_peer_disconnected(dummy_peer_id) { + CustomMessageOutcome::None => {}, + _ => panic!() + }; + } +} diff --git a/client/network/src/protocol/light_dispatch.rs b/client/network/src/protocol/light_dispatch.rs index aff220b6e0..b734fc91eb 100644 --- a/client/network/src/protocol/light_dispatch.rs +++ b/client/network/src/protocol/light_dispatch.rs @@ -273,7 +273,7 @@ impl LightDispatch where info!("Invalid remote {} response from peer {}", rtype, peer); network.report_peer(&peer, ReputationChange::new_fatal("Invalid remote response")); network.disconnect_peer(&peer); - self.remove_peer(peer); + self.remove_peer(&peer); return; }, }; @@ -285,7 +285,7 @@ impl LightDispatch where info!("Failed to check remote {} response from peer {}: {}", rtype, peer, error); network.report_peer(&peer, ReputationChange::new_fatal("Failed remote response check")); network.disconnect_peer(&peer); - self.remove_peer(peer); + self.remove_peer(&peer); if retry_count > 0 { (retry_count - 1, Some(retry_request_data)) @@ -299,7 +299,7 @@ impl LightDispatch where info!("Unexpected response to remote {} from peer", rtype); network.report_peer(&peer, ReputationChange::new_fatal("Unexpected remote response")); network.disconnect_peer(&peer); - self.remove_peer(peer); + self.remove_peer(&peer); (retry_count, Some(retry_request_data)) }, @@ -337,7 +337,7 @@ impl LightDispatch where } /// Call this when we disconnect from a node. - pub fn on_disconnect(&mut self, network: impl LightDispatchNetwork, peer: PeerId) { + pub fn on_disconnect(&mut self, network: impl LightDispatchNetwork, peer: &PeerId) { self.remove_peer(peer); self.dispatch(network); } @@ -523,15 +523,15 @@ impl LightDispatch where /// Removes a peer from the list of known peers. /// /// Puts back the active request that this node was performing into `pending_requests`. - fn remove_peer(&mut self, peer: PeerId) { - self.best_blocks.remove(&peer); + fn remove_peer(&mut self, peer: &PeerId) { + self.best_blocks.remove(peer); - if let Some(request) = self.active_peers.remove(&peer) { + if let Some(request) = self.active_peers.remove(peer) { self.pending_requests.push_front(request); return; } - if let Some(idle_index) = self.idle_peers.iter().position(|i| *i == peer) { + if let Some(idle_index) = self.idle_peers.iter().position(|i| i == peer) { self.idle_peers.swap_remove_back(idle_index); } } @@ -860,7 +860,7 @@ pub mod tests { assert_eq!(1, total_peers(&light_dispatch)); assert!(!light_dispatch.best_blocks.is_empty()); - light_dispatch.on_disconnect(&mut network_interface, peer0); + light_dispatch.on_disconnect(&mut network_interface, &peer0); assert_eq!(0, total_peers(&light_dispatch)); assert!(light_dispatch.best_blocks.is_empty()); } diff --git a/client/network/src/service.rs b/client/network/src/service.rs index a220a009f3..c3b8c8577e 100644 --- a/client/network/src/service.rs +++ b/client/network/src/service.rs @@ -80,6 +80,37 @@ pub trait TransactionPool: Send + Sync { fn transaction(&self, hash: &H) -> Option; } +/// Dummy implementation of the [`TransactionPool`] trait for a transaction pool that is always +/// empty and discards all incoming transactions. +/// +/// Requires the "hash" type to implement the `Default` trait. +/// +/// Useful for testing purposes. +pub struct EmptyTransactionPool; + +impl TransactionPool for EmptyTransactionPool { + fn transactions(&self) -> Vec<(H, B::Extrinsic)> { + Vec::new() + } + + fn hash_of(&self, _transaction: &B::Extrinsic) -> H { + Default::default() + } + + fn import( + &self, + _report_handle: ReportHandle, + _who: PeerId, + _rep_change_good: ReputationChange, + _rep_change_bad: ReputationChange, + _transaction: B::Extrinsic + ) {} + + fn on_broadcasted(&self, _: HashMap>) {} + + fn transaction(&self, _h: &H) -> Option { None } +} + /// A cloneable handle for reporting cost/benefits of peers. #[derive(Clone)] pub struct ReportHandle { diff --git a/client/network/test/src/lib.rs b/client/network/test/src/lib.rs index 0add6c63d5..06e8c5c334 100644 --- a/client/network/test/src/lib.rs +++ b/client/network/test/src/lib.rs @@ -46,17 +46,18 @@ use sp_consensus::block_import::{BlockImport, ImportResult}; use sp_consensus::Error as ConsensusError; use sp_consensus::{BlockOrigin, ForkChoiceStrategy, BlockImportParams, BlockCheckParams, JustificationImport}; use futures::prelude::*; -use sc_network::{NetworkWorker, NetworkStateInfo, NetworkService, ReportHandle, config::ProtocolId}; +use sc_network::{NetworkWorker, NetworkStateInfo, NetworkService, config::ProtocolId}; use sc_network::config::{NetworkConfiguration, TransportConfig, BoxFinalityProofRequestBuilder}; use libp2p::PeerId; use parking_lot::Mutex; use sp_core::H256; -use sc_network::config::{ProtocolConfig, TransactionPool}; +use sc_network::config::ProtocolConfig; use sp_runtime::generic::{BlockId, OpaqueDigestItemId}; use sp_runtime::traits::{Block as BlockT, Header as HeaderT, NumberFor}; use sp_runtime::Justification; use substrate_test_runtime_client::{self, AccountKeyring}; +pub use sc_network::config::EmptyTransactionPool; pub use substrate_test_runtime_client::runtime::{Block, Extrinsic, Hash, Transfer}; pub use substrate_test_runtime_client::{TestClient, TestClientBuilder, TestClientBuilderExt}; @@ -382,31 +383,6 @@ impl Peer { } } -pub struct EmptyTransactionPool; - -impl TransactionPool for EmptyTransactionPool { - fn transactions(&self) -> Vec<(Hash, Extrinsic)> { - Vec::new() - } - - fn hash_of(&self, _transaction: &Extrinsic) -> Hash { - Hash::default() - } - - fn import( - &self, - _report_handle: ReportHandle, - _who: PeerId, - _rep_change_good: sc_network::ReputationChange, - _rep_change_bad: sc_network::ReputationChange, - _transaction: Extrinsic - ) {} - - fn on_broadcasted(&self, _: HashMap>) {} - - fn transaction(&self, _h: &Hash) -> Option { None } -} - /// Implements `BlockImport` for any `Transaction`. Internally the transaction is /// "converted", aka the field is set to `None`. /// -- GitLab From 54f8350ce78c21880106ceb2fbf9ac92a3f5e070 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Silva?= Date: Fri, 6 Mar 2020 22:20:57 +0000 Subject: [PATCH 145/301] node: reset flaming fir testnet (#5176) --- bin/node/cli/res/flaming-fir.json | 183 ++++++++++++++++-------------- 1 file changed, 99 insertions(+), 84 deletions(-) diff --git a/bin/node/cli/res/flaming-fir.json b/bin/node/cli/res/flaming-fir.json index 413fa3b6d7..573a9e3aa5 100644 --- a/bin/node/cli/res/flaming-fir.json +++ b/bin/node/cli/res/flaming-fir.json @@ -1,6 +1,6 @@ { "name": "Flaming Fir", - "id": "flamingfir5", + "id": "flamingfir6", "bootNodes": [ "/ip4/35.246.224.91/tcp/30333/p2p/QmaGKGpdm2iLiVCAnEcwrAhHxrcjMdGao4UubJxq7AF77n", "/ip4/35.246.224.91/tcp/30334/ws/p2p/QmaGKGpdm2iLiVCAnEcwrAhHxrcjMdGao4UubJxq7AF77n", @@ -17,7 +17,7 @@ 0 ] ], - "protocolId": "fir5", + "protocolId": "fir6", "properties": { "tokenDecimals": 15, "tokenSymbol": "FIR" @@ -28,94 +28,109 @@ "genesis": { "raw": { "top": { - "0x2371e21684d2fae99bcb4d579242f74a8a2d09463effcc78a22d75b9cb87dffc": "0x0000000000000000", - "0xcec5070d609dd3497f72bde07fc96ba0e0cdd062e6eaf24295ad4ccfc41d4609": "0x10cafad6120836227e4660c07c046c2b56e8fba10cbf3fcfdcc566d774e14fd367e23578cbc267982cfc0bf7be54cd952fa3c07631850880ca88e395e25f4812c7c2ecc9feda5c727ce1f77e6a662efd98f39212fea555b286b702eb8842303479c2ecc9feda5c727ce1f77e6a662efd98f39212fea555b286b702eb8842303479c2ecc9feda5c727ce1f77e6a662efd98f39212fea555b286b702eb8842303479f417395797ff444345d7c25355bbab14de5ca8857104a028d969147a4fbd6e297e8a1b8e637a062656eff12dc94bbbc3e254d9bb93bd44972f0a96c7fdde5b4de225a23a02d254dee5384fe46fc083306e597a85b31c75f4e8674349d8f7a41ee225a23a02d254dee5384fe46fc083306e597a85b31c75f4e8674349d8f7a41ee225a23a02d254dee5384fe46fc083306e597a85b31c75f4e8674349d8f7a41e2a009220d327910e8ffd89167b7d96eb8871a37c374ec0adfdf1b6c384b227615202d3e9c3bf075b44615f9ac4c28b8627079a219ff66e01655487c3bde52eb8e410a5800082ee863e06344590e83ef0b60fb6ea2126086ea9bc5c579ff4b86ce410a5800082ee863e06344590e83ef0b60fb6ea2126086ea9bc5c579ff4b86ce410a5800082ee863e06344590e83ef0b60fb6ea2126086ea9bc5c579ff4b86cdc94ff7f625d9ef7824766f90a5eb8aa03f99b7b28664585950221d0d2358e3af6e62e9231c0424c1b747ffb5ccaedcb9fd6fddc2bfcb2db963c02db74c0c84dfe451858d3bff3683df83e029f44d62cc4f285f7a1004542679ffa35ed68310afe451858d3bff3683df83e029f44d62cc4f285f7a1004542679ffa35ed68310afe451858d3bff3683df83e029f44d62cc4f285f7a1004542679ffa35ed68310a", - "0x5f3e4907f716ac89b6347d15ececedca0b6a45321efae92aea15e0740ec7afe7": "0x00000000", - "0x5f3e4907f716ac89b6347d15ececedca3ed14b45ed20d054f05e37e2542cfe7085268962a32b3f1cffce32ce1e5f6d6d3d633f7e21fd4e659402a2c62cab64ca": "0xfe451858d3bff3683df83e029f44d62cc4f285f7a1004542679ffa35ed68310a", - "0x3a636f6465": "0x0061736d010000000193033860037f7f7f017f60027f7f017f60027f7f0060017f0060037f7f7f0060057f7f7f7f7f0060047f7f7f7f0060017f017e60037f7e7e0060027e7e0060017e017f60017e017e60017e0060037e7e7f0060047e7e7f7e017e60047e7e7f7e0060057e7e7f7e7e0060037f7e7f017f60047f7e7e7f017f60067f7e7e7f7f7f017f6000017f60027f7e017e60047f7e7e7e017f60027f7e017f6000017e60047f7f7f7f017f60037f7f7e017e60027f7f017e60017f017f60037e7e7f017e60000060037e7f7f017f60067f7f7f7f7f7f017f60057f7f7f7f7f017f60027f7e0060067f7f7f7f7f7f0060047f7f7e7e0060057f7f7e7e7f0060057f7f7f7e7e0060027e7f0060067f7f7e7e7f7f0060067f7f7f7e7e7f0060077f7e7e7e7e7e7e0060087e7e7e7e7e7e7e7e017f60047f7e7e7e0060067f7f7f7f7e7e0060077f7f7e7e7f7f7f0060087f7f7f7f7f7e7e7f0060077f7f7f7e7e7f7f0060047f7f7f7f017e60077f7f7f7e7e7e7f0060057f7e7e7f7f0060037f7e7f0060047f7e7e7f0060057f7e7e7e7e0060067f7e7e7e7e7f0002ad0d2a03656e76196578745f6c6f6767696e675f6c6f675f76657273696f6e5f31000803656e76196578745f73746f726167655f7365745f76657273696f6e5f31000903656e761e6578745f68617368696e675f74776f785f3132385f76657273696f6e5f31000a03656e76196578745f73746f726167655f6765745f76657273696f6e5f31000b03656e761d6578745f6d6973635f7072696e745f757466385f76657273696f6e5f31000c03656e761b6578745f73746f726167655f636c6561725f76657273696f6e5f31000c03656e76206578745f68617368696e675f626c616b65325f3235365f76657273696f6e5f31000a03656e76286578745f73746f726167655f6368696c645f73746f726167655f6b696c6c5f76657273696f6e5f31000d03656e761f6578745f73746f726167655f6368696c645f6765745f76657273696f6e5f31000e03656e76216578745f73746f726167655f6368696c645f636c6561725f76657273696f6e5f31000f03656e761f6578745f73746f726167655f6368696c645f7365745f76657273696f6e5f31001003656e76236578745f63727970746f5f656432353531395f7665726966795f76657273696f6e5f31001103656e76236578745f63727970746f5f737232353531395f7665726966795f76657273696f6e5f31001103656e76226578745f73746f726167655f636c6561725f7072656669785f76657273696f6e5f31000c03656e761c6578745f6d6973635f7072696e745f6e756d5f76657273696f6e5f31000c03656e76206578745f73746f726167655f6368696c645f726f6f745f76657273696f6e5f31000b03656e76206578745f73616e64626f785f6d656d6f72795f6e65775f76657273696f6e5f31000103656e76256578745f73616e64626f785f6d656d6f72795f74656172646f776e5f76657273696f6e5f31000303656e76216578745f73616e64626f785f696e7374616e74696174655f76657273696f6e5f31001203656e761c6578745f73616e64626f785f696e766f6b655f76657273696f6e5f31001303656e76276578745f73616e64626f785f696e7374616e63655f74656172646f776e5f76657273696f6e5f31000303656e761c6578745f6d6973635f7072696e745f6865785f76657273696f6e5f31000c03656e76236578745f6f6666636861696e5f69735f76616c696461746f725f76657273696f6e5f31001403656e76286578745f6f6666636861696e5f6c6f63616c5f73746f726167655f6765745f76657273696f6e5f31001503656e76346578745f6f6666636861696e5f6c6f63616c5f73746f726167655f636f6d706172655f616e645f7365745f76657273696f6e5f31001603656e76286578745f6f6666636861696e5f6c6f63616c5f73746f726167655f7365745f76657273696f6e5f31000803656e76256578745f63727970746f5f656432353531395f67656e65726174655f76657273696f6e5f31001703656e761a6578745f73746f726167655f726f6f745f76657273696f6e5f31001803656e76226578745f73746f726167655f6368616e6765735f726f6f745f76657273696f6e5f31000b03656e761d6578745f68617368696e675f74776f785f36345f76657273696f6e5f31000a03656e76206578745f73616e64626f785f6d656d6f72795f6765745f76657273696f6e5f31001903656e76206578745f73616e64626f785f6d656d6f72795f7365745f76657273696f6e5f31001903656e76256578745f63727970746f5f737232353531395f67656e65726174655f76657273696f6e5f31001703656e76296578745f6f6666636861696e5f7375626d69745f7472616e73616374696f6e5f76657273696f6e5f31000b03656e76246578745f6f6666636861696e5f6e6574776f726b5f73746174655f76657273696f6e5f31001803656e76286578745f63727970746f5f737232353531395f7075626c69635f6b6579735f76657273696f6e5f31000703656e76216578745f63727970746f5f737232353531395f7369676e5f76657273696f6e5f31001a03656e76376578745f63727970746f5f736563703235366b315f65636473615f7265636f7665725f636f6d707265737365645f76657273696f6e5f31001b03656e761e6578745f616c6c6f6361746f725f6d616c6c6f635f76657273696f6e5f31001c03656e761c6578745f616c6c6f6361746f725f667265655f76657273696f6e5f31000303656e761a6578745f73746f726167655f726561645f76657273696f6e5f31001d03656e762a6578745f747269655f626c616b65325f3235365f6f7264657265645f726f6f745f76657273696f6e5f31000a03bc05ba051c1c030300001c1c1b1e1e1e040204001e060001010201021f030720190200060101011c0101010101010201060304030001010001012100000100010202040201020001010102030303020202021c020201020302020202020204020202020202020322010203020402041c022302020404082404022403081e030402040209080325260202020227060202040224030302020428242624080303020303020202020229081e040203040204022a2b010406050603031e1e02020202020403030304050402010402022a03020302020304050401040201062c040203030203021c02020202020202030202192403030302020202041c0402020202021c1c020202032d0303020409030303020202042a02030303040302040202010103030401030303030303030303030303030303030303032e2f04230330060202030202020202020202040204040602060404040204030302020202030302020904020306020201060202011e06230606060606060606060606060606060606060606060606060631021b1b0203020602031b1b1b021b0204021b04021b1b1b0402021b020201030501001b1b1b1b1b321b1b1b040406020303030202020302040402040402021c040404020404040403030302020302020203060303030303020303030203020204040202020224020202330202031e0302040202020203020205042602020302030302030202020203030302020203020202020202020202022904011c061c020202050302031c0202030203020202030202020219040203000101030302020606060303020102020302020201020106020404030303010104040504340202020402010502020404030303030205020201040206010401020101010101010402020104040302040102010301010401040304041c01010208010105040606040401050504040404060301010101000000003535363636370407017001f001f00105030100120619037f01418080c0000b7f0041e8a1c6000b7f0041e8a1c6000b078f0518066d656d6f72790200195f5f696e6469726563745f66756e6374696f6e5f7461626c6501000a5f5f646174615f656e6403010b5f5f686561705f62617365030209686173685f7465737400320c436f72655f76657273696f6e00af0312436f72655f657865637574655f626c6f636b00b00315436f72655f696e697469616c697a655f626c6f636b00b703114d657461646174615f6d6574616461746100b8031c426c6f636b4275696c6465725f6170706c795f65787472696e73696300b9031b426c6f636b4275696c6465725f66696e616c697a655f626c6f636b00bb0320426c6f636b4275696c6465725f696e686572656e745f65787472696e7369637300bf031c426c6f636b4275696c6465725f636865636b5f696e686572656e747300c20318426c6f636b4275696c6465725f72616e646f6d5f7365656400c3032b5461676765645472616e73616374696f6e51756575655f76616c69646174655f7472616e73616374696f6e00c403214f6666636861696e576f726b65724170695f6f6666636861696e5f776f726b657200c8031e4772616e6470614170695f6772616e6470615f617574686f72697469657300d00315426162654170695f636f6e66696775726174696f6e00d10321417574686f72697479446973636f766572794170695f617574686f72697469657300d2031d4163636f756e744e6f6e63654170695f6163636f756e745f6e6f6e636500d30311436f6e7472616374734170695f63616c6c00d40318436f6e7472616374734170695f6765745f73746f7261676500d603205472616e73616374696f6e5061796d656e744170695f71756572795f696e666f00d7032153657373696f6e4b6579735f67656e65726174655f73657373696f6e5f6b65797300d80309c503010041010bef01404f554ac6054b4c5263c5028e01c9027bc40292039403950396039703980399039a039b039c039d039e039f03a003a103a203a303a403a503a603a703a803a903aa03ab03ac03ad03ce03f204a105a30583058f0553ae05cd05a605d805b905bb05b7053c3d3e83046544595a5b5c5d5e5f6a6b716c6d6e6f708803b501b401b601bc01e203bb01c501da04b304c004c8015150890287029d029c029b029a02b702b602b502c104ec01ed01f001ef01eb01f101df03de03ca02ab02fa03b504cb0281038203f603f503f703cc02cd02fe03ce02c401c301cf02c601bb02bc029c049a04d002a304ab0486028502d1028802d804d604d202dc0482048004d302810498029702d4029902c702c602d502e804e904ba01b901d602b302b202d702b402bf02b704b604d802bb04f004ef04d902820581058005da02c701db02bd02ae04ad04dc02b004e102fb01fc01fe01fd01fa01ff01f10484038303c205c505e103e003f803a204a104a0049f049d04a504a404af04b204b104ba04b904b804c504c404c304c204bf04be04bd04bc04db04d904e004df04de04dd04e504e604e704c804eb04ea04aa05a505a905a805a705d605b405b805d505d905d7050a98b646ba0506002000102b0b0600200010260b06002000102d0b0600200010270b0a00200020012002102f0b2801017f0240200210262203450d002003200020022001200120024b1b10db051a200010270b20030b0600200010310b1c01017f0240200010262201450d0020014100200010da051a0b20010bff0202017f037e230041206b220224002001ad42adfed5e4d485fda8d8007e42b9e0007c210302400240024002400240200141084b0d00200141014b0d0120010d02420021040c030b0240200141104b0d00200241106a2000290000200385420042adfed5e4d485fda8d800420010e005200241186a29030020022903107c200120006a41786a2900008521040c040b200120006a41786a2900002105200321040340200029000020048542adfed5e4d485fda8d8007e42178942adfed5e4d485fda8d8007e2003852103200041086a2100200442cf829ebbefefde82147c2104200141786a220141084b0d000b200320058521040c030b0240200141034b0d00200120006a417e6a33000042108620003300008420038521040c030b200120006a417c6a35000042208620003500008420038521040c020b200031000021040b200420038521040b20022004420042adfed5e4d485fda8d800420010e005200241086a290300210420022903002103200241206a2400200420037c42c300850b05001034000b2400410041988cc600ad4280808080f00084419f8cc600ad4280808080a00484100000000b1100418080c0004111419480c0001036000b3a01017f230041206b2203240020034204370310200342013702042003200136021c200320003602182003200341186a360200200320021041000b830301067f230041306b2202240020012802002103024002402001280204220441037422050d00410021060c010b200341046a2107410021060340200728020020066a2106200741086a2107200541786a22050d000b0b024002400240024002400240200141146a2802000d00200621070c010b024020040d0041bc80c000410041001038000b024002402006410f4b0d002003280204450d010b200620066a220720064f0d010b4101210541002107200241086a21060c010b2007417f4c0d01200241086a2106024020070d0041012105410021070c010b2007102a2205450d020b200241003602102002200736020c200220053602082002200241086a360214200241186a41106a200141106a290200370300200241186a41086a200141086a29020037030020022001290200370318200241146a41cc80c000200241186a10390d0220002006290200370200200041086a200641086a280200360200200241306a24000f0b103a000b1033000b41e480c0004133200241186a419881c000103b000b6c01017f230041306b2203240020032002360204200320013602002003411c6a41023602002003412c6a41013602002003420237020c200341f083c000360208200341013602242003200341206a360218200320033602282003200341046a360220200341086a20001041000bc40801087f230041c0006b22032400200341246a2001360200200341346a200241146a2802002204360200200341033a00382003412c6a2002280210220520044103746a36020020034280808080800437030820032000360220410021062003410036021820034100360210200320053602302003200536022802400240024002400240200228020822070d0020022802002108200228020422092004200420094b1b220a450d0141012104200020082802002008280204200128020c1100000d04200841086a210241012106034002402005280200200341086a200541046a280200110100450d00410121040c060b2006200a4f0d02200241046a210020022802002101200541086a2105200241086a210241012104200641016a2106200328022020012000280200200328022428020c110000450d000c050b0b20022802002108200228020422092002410c6a2802002205200520094b1b220a450d0041012104200020082802002008280204200128020c1100000d03200741106a2105200841086a21024101210603402003200541786a28020036020c2003200541106a2d00003a003820032005417c6a28020036020841002101410021000240024002400240200541086a2802000e0400010203000b2005410c6a2802002104410121000c020b02402005410c6a2802002207200328023422044f0d0041002100200328023020074103746a22072802044102470d0220072802002802002104410121000c020b41e489c000200720041038000b4100210020032802282207200328022c460d002003200741086a3602284100210020072802044102470d0020072802002802002104410121000b2003200436021420032000360210024002400240024002400240024020052802000e0404010006040b20032802282200200328022c470d010c050b200541046a2802002200200328023422044f0d01200328023020004103746a22002802044102470d04200028020028020021040c030b2003200041086a36022820002802044102470d03200028020028020021040c020b41e489c000200020041038000b200541046a28020021040b410121010b2003200436021c2003200136021802400240200541706a2802004101460d0020032802282204200328022c460d042003200441086a3602280c010b200541746a2802002204200328023422004f0d04200328023020044103746a21040b02402004280200200341086a200441046a280200110100450d00410121040c050b2006200a4f0d01200241046a210020022802002101200541246a2105200241086a210241012104200641016a2106200328022020012000280200200328022428020c110000450d000c040b0b0240200920064d0d00410121042003280220200820064103746a22052802002005280204200328022428020c1100000d030b410021040c020b419088c000412b41bc88c0001036000b41f489c000200420001038000b200341c0006a240020040b05001035000b810101017f230041c0006b220424002004200136020c2004200036020820042003360214200420023602102004412c6a41023602002004413c6a41033602002004420237021c2004419cafc000360218200441043602342004200441306a3602282004200441106a3602382004200441086a360230200441186a41acafc0001041000bad0101037f0240024002400240200028020022002802042203200028020822046b2002490d00200028020021030c010b200420026a22052004490d02200341017422042005200420054b1b22044100480d020240024020030d002004102a21030c010b200028020020032004102e21030b2003450d012000200436020420002003360200200028020821040b2000200420026a360208200320046a2001200210db051a41000f0b1033000b1035000b970401047f230041106b22022400200028020021000240024002400240024002402001418001490d002002410036020c2001418010490d0102402001418080044f0d0020022001413f71418001723a000e20022001410676413f71418001723a000d20022001410c76410f7141e001723a000c410321010c030b20022001413f71418001723a000f2002200141127641f001723a000c20022001410676413f71418001723a000e20022001410c76413f71418001723a000d410421010c020b0240200028020822032000280204470d00200341016a22042003490d05200341017422052004200520044b1b22044100480d050240024020030d002004102a21030c010b200028020020032004102e21030b2003450d042000200436020420002003360200200028020821030b200028020020036a20013a00002000200028020841016a3602080c020b20022001413f71418001723a000d20022001410676411f7141c001723a000c410221010b0240024020002802042204200028020822036b2001490d00200028020021040c010b200320016a22052003490d03200441017422032005200320054b1b22034100480d030240024020040d002003102a21040c010b200028020020042003102e21040b2004450d022000200336020420002004360200200028020821030b2000200320016a360208200420036a2002410c6a200110db051a0b200241106a240041000f0b1033000b1035000b6301017f230041206b2202240020022000280200360204200241086a41106a200141106a290200370300200241086a41086a200141086a29020037030020022001290200370308200241046a41cc80c000200241086a10392101200241206a240020010b6f01017f230041306b2202240020022001360204200220003602002002411c6a41023602002002412c6a41013602002002420237020c2002418c86c000360208200241013602242002200241206a3602182002200241046a36022820022002360220200241086a419c86c0001041000b0d0020003502004101200110420b3101017f230041106b220224002002200136020c200220003602082002418084c0003602042002410136020020021043000bd40203027f017e037f230041306b22032400412721040240024020004290ce005a0d00200021050c010b412721040340200341096a20046a2206417c6a200020004290ce0080220542f0b17f7e7ca7220741ffff037141e4006e220841017441c284c0006a2f00003b00002006417e6a2008419c7f6c20076a41ffff037141017441c284c0006a2f00003b00002004417c6a2104200042ffc1d72f5621062005210020060d000b0b02402005a7220641e3004c0d00200341096a2004417e6a22046a2005a7220741ffff037141e4006e2206419c7f6c20076a41ffff037141017441c284c0006a2f00003b00000b024002402006410a480d00200341096a2004417e6a22046a200641017441c284c0006a2f00003b00000c010b200341096a2004417f6a22046a200641306a3a00000b2002200141dc9ec6004100200341096a20046a412720046b10452104200341306a240020040b6f01017f230041c0006b220124002001200036020c200141346a410136020020014201370224200141d49ec6003602202001410536023c2001200141386a36023020012001410c6a360238200141106a200141206a1037410141988cc60041072001280210200128021810c70500000b0c004283e1a2baf1cbc4f0370be40501057f024002402001450d00412b418080c4002000280200220641017122011b2107200120056a21080c010b200541016a210820002802002106412d21070b0240024020064104710d00410021020c010b4100210902402003450d002003210a200221010340200920012d000041c00171418001466a2109200141016a2101200a417f6a220a0d000b0b200820036a20096b21080b410121010240024020002802084101460d00200020072002200310460d012000280218200420052000411c6a28020028020c1100000f0b02402000410c6a280200220920084b0d00200020072002200310460d012000280218200420052000411c6a28020028020c1100000f0b0240024020064108710d0041002101200920086b22092108024002400240410120002d0030220a200a4103461b0e0402010001020b20094101762101200941016a41017621080c010b41002108200921010b200141016a210103402001417f6a2201450d0220002802182000280204200028021c280210110100450d000b41010f0b41012101200041013a003020004130360204200020072002200310460d0141002101200920086b220a2103024002400240410120002d0030220920094103461b0e0402010001020b200a4101762101200a41016a41017621030c010b41002103200a21010b200141016a2101024003402001417f6a2201450d0120002802182000280204200028021c280210110100450d000b41010f0b2000280204210a41012101200028021820042005200028021c28020c1100000d01200341016a2109200028021c210320002802182100034002402009417f6a22090d0041000f0b410121012000200a2003280210110100450d000c020b0b2000280204210a41012101200020072002200310460d00200028021820042005200028021c28020c1100000d00200841016a2109200028021c210320002802182100034002402009417f6a22090d0041000f0b410121012000200a2003280210110100450d000b0b20010b5401017f024002402001418080c400460d0041012104200028021820012000411c6a2802002802101101000d010b024020020d0041000f0b2000280218200220032000411c6a28020028020c11000021040b20040b6f01017f230041306b2202240020022001360204200220003602002002411c6a41023602002002412c6a41013602002002420237020c200241ec86c000360208200241013602242002200241206a3602182002200241046a36022820022002360220200241086a41fc86c0001041000b8507010c7f200028021021030240024002400240200028020822044101460d0020030d012000280218200120022000411c6a28020028020c11000021030c030b2003450d010b0240024020020d00410021020c010b200120026a2105200041146a28020041016a21064100210720012103200121080340200341016a210902400240024020032c0000220a417f4a0d000240024020092005470d004100210b200521030c010b20032d0001413f71210b200341026a220921030b200a411f71210c0240200a41ff0171220a41df014b0d00200b200c41067472210a0c020b0240024020032005470d004100210d2005210e0c010b20032d0000413f71210d200341016a2209210e0b200d200b41067472210b0240200a41f0014f0d00200b200c410c7472210a0c020b02400240200e2005470d004100210a200921030c010b200e41016a2103200e2d0000413f71210a0b200b410674200c411274418080f0007172200a72220a418080c400470d020c040b200a41ff0171210a0b200921030b02402006417f6a2206450d00200720086b20036a21072003210820052003470d010c020b0b200a418080c400460d00024002402007450d0020072002460d0041002103200720024f0d01200120076a2c00004140480d010b200121030b2007200220031b21022003200120031b21010b20040d002000280218200120022000411c6a28020028020c1100000f0b4100210902402002450d002002210a200121030340200920032d000041c00171418001466a2109200341016a2103200a417f6a220a0d000b0b0240200220096b200028020c2206490d002000280218200120022000411c6a28020028020c1100000f0b410021074100210902402002450d00410021092002210a200121030340200920032d000041c00171418001466a2109200341016a2103200a417f6a220a0d000b0b200920026b20066a2209210a024002400240410020002d0030220320034103461b0e0402010001020b20094101762107200941016a410176210a0c010b4100210a200921070b200741016a2103024003402003417f6a2203450d0120002802182000280204200028021c280210110100450d000b41010f0b2000280204210941012103200028021820012002200028021c28020c1100000d00200a41016a2103200028021c210a20002802182100034002402003417f6a22030d0041000f0b20002009200a280210110100450d000b41010f0b20030bd40801067f230041f0006b220424002004200336020c20042002360208410121052001210602402001418102490d00410020016b2107418002210803400240200820014f0d00200020086a2c000041bf7f4c0d0041002105200821060c020b2008417f6a21064100210520084101460d01200720086a21092006210820094101470d000b0b200420063602142004200036021020044100410520051b36021c200441dc9ec60041b287c00020051b3602180240024002400240200220014b22080d00200320014b0d00200220034b0d01024002402002450d0020012002460d00200120024d0d01200020026a2c00004140480d010b200321020b200420023602202002450d0220022001460d02200141016a210903400240200220014f0d00200020026a2c000041404e0d040b2002417f6a210820024101460d0420092002462106200821022006450d000c040b0b20042002200320081b360228200441306a41146a4103360200200441c8006a41146a4104360200200441d4006a410436020020044203370234200441b887c0003602302004410136024c2004200441c8006a3602402004200441186a3602582004200441106a3602502004200441286a360248200441306a41d087c0001041000b200441e4006a4104360200200441c8006a41146a4104360200200441d4006a4101360200200441306a41146a410436020020044204370234200441e087c0003602302004410136024c2004200441c8006a3602402004200441186a3602602004200441106a36025820042004410c6a3602502004200441086a360248200441306a418088c0001041000b200221080b024020082001460d00410121060240024002400240200020086a22092c00002202417f4a0d0041002105200020016a220621010240200941016a2006460d00200941026a210120092d0001413f7121050b2002411f712109200241ff017141df014b0d01200520094106747221010c020b2004200241ff0171360224200441286a21020c020b4100210020062107024020012006460d00200141016a210720012d0000413f7121000b200020054106747221010240200241ff017141f0014f0d0020012009410c747221010c010b41002102024020072006460d0020072d0000413f7121020b20014106742009411274418080f00071722002722201418080c400460d020b2004200136022441012106200441286a21022001418001490d00410221062001418010490d0041034104200141808004491b21060b200420083602282004200620086a36022c200441306a41146a4105360200200441ec006a4104360200200441e4006a4104360200200441c8006a41146a4106360200200441d4006a410736020020044205370234200441cc88c000360230200420023602582004410136024c2004200441c8006a3602402004200441186a3602682004200441106a3602602004200441246a3602502004200441206a360248200441306a41f488c0001041000b419088c000412b41bc88c0001036000b100020012000280200200028020410480b6f01037f230041206b22022400024020002802002001104e0d002001411c6a280200210320012802182104200242043703182002420137020c200241dc89c00036020820042003200241086a10390d0020002802042001104e2101200241206a240020010f0b200241206a240041010be70a02077f017e410121020240200128021841272001411c6a2802002802101101000d0041022103024002400240024002402000280200220241776a2200411e4d0d00200241dc00470d010c020b41f40021040240024020000e1f05010202000202020202020202020202020202020202020202030202020203050b41f20021040c040b41ee0021040c030b02400240024002400240024002402002104d0d00024002400240024002400240200241808004490d00200241808008490d0120024190fc476a4190fc0b490d0a200241e28b746a41e28d2c490d0a2002419fa8746a419f18490d0a200241dee2746a410e490d0a200241feffff0071419ef00a460d0a200241a9b2756a4129490d0a200241cb91756a410a4d0d0a410121030c0e0b20024180fe03714108762105419896c000210041002106200241ff017121040340200041026a2107200620002d000122036a2108024020002d000022002005460d00200020054b0d092008210620072100200741ea96c000470d010c090b20082006490d02200841a5024b0d03200641ea96c0006a2100024003402003450d012003417f6a210320002d00002106200041016a210020062004470d000c0c0b0b2008210620072100200741ea96c000470d000c080b0b20024180fe0371410876210541c99bc000210041002106200241ff017121040340200041026a2107200620002d000122036a2108024020002d000022002005460d00200020054b0d0720082106200721002007418f9cc000470d010c070b20082006490d03200841a6014b0d042006418f9cc0006a2100024003402003450d012003417f6a210320002d00002106200041016a210020062004470d000c0b0b0b20082106200721002007418f9cc000470d000c060b0b200620081047000b200841a502103f000b200620081047000b200841a601103f000b200241017267410276410773ad4280808080d0008421090c040b200241ffff0371210441b59dc00021034101210002400340200341016a21080240024020032d0000220641187441187522074100480d00200821030c010b200841cda0c000460d02200741ff007141087420032d0001722106200341026a21030b200420066b22044100480d0320004101732100200341cda0c000470d000c030b0b419088c000412b41bc88c0001036000b200241ffff03712104418f99c0002103410121000340200341016a21080240024020032d0000220641187441187522074100480d00200821030c010b200841c99bc000460d05200741ff007141087420032d0001722106200341026a21030b200420066b22044100480d0120004101732100200341c99bc000470d000b0b4101210320004101710d030b200241017267410276410773ad4280808080d0008421090b410321030c020b419088c000412b41bc88c0001036000b0b200221040b03402003210641dc0021004101210241012103024002400240024020060e0401020300010b024002400240024002402009422088a741ff01710e06050403020100050b200942ffffffff8f60834280808080c000842109410321030c060b200942ffffffff8f608342808080803084210941f5002100410321030c050b200942ffffffff8f608342808080802084210941fb002100410321030c040b20042009a72206410274411c7176410f712203413072200341d7006a2003410a491b210002402006450d002009427f7c42ffffffff0f83200942808080807083842109410321030c040b200942ffffffff8f6083428080808010842109410321030c030b200942ffffffff8f6083210941fd002100410321030c020b20012802184127200128021c2802101101000f0b41002103200421000b20012802182000200128021c280210110100450d000b0b20020b950201017f024002402000418010490d00024002400240024002400240200041808004490d002000410c7641706a2201418002490d0141f0a0c00020014180021038000b200041067641606a220141df074b0d01200141b88cc0006a2d0000220141c9004b0d02200141037441c0a1c0006a21010c060b2001419894c0006a2d00004106742000410676413f7172220141ff034b0d0220014190a6c0006a2d0000220141394b0d0320014103744190aac0006a21010c050b41d0a0c000200141e0071038000b41e0a0c000200141ca001038000b4180a1c00020014180041038000b4190a1c0002001413a1038000b200041037641f8ffffff017141a08ac0006a21010b200129030042012000413f71ad86834200520ba10201037f23004180016b2202240002400240024002400240200128020022034110710d0020034120710d012000ad41012001104221000c020b410021030340200220036a41ff006a2000410f712204413072200441d7006a2004410a491b3a00002003417f6a2103200041047622000d000b20034180016a22004181014f0d022001410141b087c0004102200220036a4180016a410020036b104521000c010b410021030340200220036a41ff006a2000410f712204413072200441376a2004410a491b3a00002003417f6a2103200041047622000d000b20034180016a22004181014f0d022001410141b087c0004102200220036a4180016a410020036b104521000b20024180016a240020000f0b20004180011047000b20004180011047000b0d0020003502004101200110420b1c00200128021841b6aec000410b2001411c6a28020028020c1100000b1c00200128021841c1aec000410e2001411c6a28020028020c1100000b6901037f230041206b220224002001411c6a280200210320012802182104200241086a41106a2000280200220141106a290200370300200241086a41086a200141086a2902003703002002200129020037030820042003200241086a10392101200241206a240020010b1500200120002802002200280200200028020410480b5e01017f230041306b220224002002200136020c20022000360208200241246a410136020020024201370214200241d49ec6003602102002410436022c2002200241286a3602202002200241086a360228200241106a418cafc0001041000b140020002802002001200028020428020c1101000bf30201067f410021040240024020024103712205450d00410420056b2205450d0020032005200520034b1b210441002105200141ff01712106034020042005460d01200220056a2107200541016a210520072d000022072006470d000b410121032007200141ff01714641016a41017120056a417f6a21050c010b200141ff017121060240024020034108490d002004200341786a22084b0d00200641818284086c210502400340200220046a220741046a2802002005732209417f73200941fffdfb776a7120072802002005732207417f73200741fffdfb776a7172418081828478710d01200441086a220420084d0d000b0b200420034b0d010b200220046a2109200320046b210241002103410021050240034020022005460d01200920056a2107200541016a210520072d000022072006470d000b410121032007200141ff01714641016a41017120056a417f6a21050b200520046a21050c010b200420031047000b20002005360204200020033602000b2601017f200028020022012802002001280204200028020428020020002802082802001049000b850804057f017e017f017e02400240024002402002450d00410020016b410020014103711b2103200241796a4100200241074b1b210441002105034002400240200120056a2d000022064118744118752207417f4a0d0042808080801021080240200641ee81c0006a2d0000417e6a220941024d0d0042808080808020210a0c070b0240024002400240024020090e03000102000b200541016a22062002490d024200210a0c090b4200210a200541016a220920024f0d08200120096a2d0000210902400240200641a07e6a2206410d4b0d000240024020060e0e0002020202020202020202020201000b200941e0017141a001460d0242808080808020210a0c0c0b02402009411874411875417f4c0d0042808080808020210a0c0c0b200941ff017141a001490d0142808080808020210a0c0b0b02402007411f6a41ff0171410b4b0d0002402009411874411875417f4c0d0042808080808020210a0c0c0b200941ff017141c001490d0142808080808020210a0c0b0b0240200941ff017141bf014d0d0042808080808020210a0c0b0b0240200741fe017141ee01460d0042808080808020210a0c0b0b2009411874411875417f4c0d0042808080808020210a0c0a0b42002108200541026a220620024f0d09200120066a2d000041c00171418001460d020c070b4200210a200541016a220920024f0d07200120096a2d0000210902400240200641907e6a220641044b0d000240024020060e050002020201000b200941f0006a41ff01714130490d0242808080808020210a0c0b0b02402009411874411875417f4c0d0042808080808020210a0c0b0b200941ff0171419001490d0142808080808020210a0c0a0b0240200941ff017141bf014d0d0042808080808020210a0c0a0b02402007410f6a41ff017141024d0d0042808080808020210a0c0a0b2009411874411875417f4c0d0042808080808020210a0c090b200541026a220620024f0d07200120066a2d000041c00171418001470d0642002108200541036a220620024f0d08200120066a2d000041c00171418001460d01428080808080e000210a42808080801021080c080b42808080808020210a4280808080102108200120066a2d000041c00171418001470d070b200641016a21050c010b0240200320056b4103710d000240200520044f0d000340200120056a220641046a280200200628020072418081828478710d01200541086a22052004490d000b0b200520024f0d010340200120056a2c00004100480d022002200541016a2205470d000c040b0b200541016a21050b20052002490d000b0b20002001360204200041086a2002360200200041003602000f0b428080808080c000210a42808080801021080c010b420021080b2000200a2008842005ad84370204200041013602000b02000ba20401077f230041306b220324000240024020020d00410021040c010b200341286a210502400240024002400340024020002802082d0000450d0020002802004188b0c0004104200028020428020c1100000d050b2003410a3602282003428a808080103703202003200236021c200341003602182003200236021420032001360210200341086a410a200120021056024002400240024020032802084101470d00200328020c210403402003200420032802186a41016a2204360218024002402004200328022422064f0d00200328021421070c010b200328021422072004490d00200641054f0d072003280210200420066b22086a22092005460d0420092005200610dd05450d040b200328021c22092004490d0220072009490d0220032006200341106a6a41176a2d0000200328021020046a200920046b10562003280204210420032802004101460d000b0b2003200328021c3602180b200028020841003a0000200221040c010b200028020841013a0000200841016a21040b2000280204210920002802002106024020044520022004467222070d00200220044d0d03200120046a2c000041bf7f4c0d030b200620012004200928020c1100000d04024020070d00200220044d0d04200120046a2c000041bf7f4c0d040b200120046a2101200220046b22020d000b410021040c040b20064104103f000b20012002410020041049000b20012002200420021049000b410121040b200341306a240020040bf90101017f230041106b220224002002410036020c0240024002402001418001490d002001418010490d0102402001418080044f0d0020022001413f71418001723a000e20022001410676413f71418001723a000d20022001410c76410f7141e001723a000c410321010c030b20022001413f71418001723a000f2002200141127641f001723a000c20022001410676413f71418001723a000e20022001410c76413f71418001723a000d410421010c020b200220013a000c410121010c010b20022001413f71418001723a000d20022001410676411f7141c001723a000c410221010b20002002410c6a2001105a2101200241106a240020010b6001017f230041206b2202240020022000360204200241086a41106a200141106a290200370300200241086a41086a200141086a29020037030020022001290200370308200241046a41f0afc000200241086a10392101200241206a240020010b0d00200028020020012002105a0b800201017f230041106b22022400200028020021002002410036020c0240024002402001418001490d002001418010490d0102402001418080044f0d0020022001413f71418001723a000e20022001410676413f71418001723a000d20022001410c76410f7141e001723a000c410321010c030b20022001413f71418001723a000f2002200141127641f001723a000c20022001410676413f71418001723a000e20022001410c76413f71418001723a000d410421010c020b200220013a000c410121010c010b20022001413f71418001723a000d20022001410676411f7141c001723a000c410221010b20002002410c6a2001105a2101200241106a240020010b6301017f230041206b2202240020022000280200360204200241086a41106a200141106a290200370300200241086a41086a200141086a29020037030020022001290200370308200241046a41f0afc000200241086a10392101200241206a240020010bdb0302047f057e230041d0006b2205240041012106024020002d00040d0020002d000521070240200028020022082d00004104710d0041012106200828021841eeafc000418cb0c000200741ff017122071b4102410320071b2008411c6a28020028020c1100000d014101210620002802002208280218200120022008411c6a28020028020c1100000d01410121062000280200220828021841f5adc20041022008411c6a28020028020c1100000d0120032000280200200428020c11010021060c010b0240200741ff01710d00410121062008280218418fb0c00041032008411c6a28020028020c1100000d01200028020021080b41012106200541013a00172005200541176a360210200829020821092008290210210a200541346a41d4afc000360200200520082902183703082008290220210b2008290228210c200520082d00303a00482008290200210d2005200c3703402005200b3703382005200a370328200520093703202005200d3703182005200541086a360230200541086a20012002105a0d00200541086a41f5adc2004102105a0d002003200541186a200428020c1101000d00200528023041ecafc0004102200528023428020c11000021060b200041013a0005200020063a0004200541d0006a240020000bf30202047f057e230041d0006b2203240041012104024020002d00080d00200028020421050240200028020022062d00004104710d0041012104200628021841eeafc0004195b0c00020051b4102410120051b2006411c6a28020028020c1100000d0120012000280200200228020c11010021040c010b024020050d004101210420062802184196b0c00041022006411c6a28020028020c1100000d01200028020021060b41012104200341013a00172003200341176a3602102006290208210720062902102108200341346a41d4afc00036020020032006290218370308200629022021092006290228210a200320062d00303a00482006290200210b2003200a3703402003200937033820032008370328200320073703202003200b3703182003200341086a3602302001200341186a200228020c1101000d00200328023041ecafc0004102200328023428020c11000021040b200020043a00082000200028020441016a360204200341d0006a240020000bf40202037f057e230041d0006b2203240041012104024020002d00040d0020002d000521040240200028020022052d00004104710d000240200441ff0171450d0041012104200528021841eeafc00041022005411c6a28020028020c1100000d02200028020021050b20012005200228020c11010021040c010b0240200441ff01710d0041012104200528021841d3afc00041012005411c6a28020028020c1100000d01200028020021050b41012104200341013a00172003200341176a3602102005290208210620052902102107200341346a41d4afc000360200200320052902183703082005290220210820052902282109200320052d00303a00482005290200210a200320093703402003200837033820032007370328200320063703202003200a3703182003200341086a3602302001200341186a200228020c1101000d00200328023041ecafc0004102200328023428020c11000021040b200041013a0005200020043a0004200341d0006a240020000b6401027f230041206b220224002001411c6a280200210320012802182101200241086a41106a200041106a290200370300200241086a41086a200041086a2902003703002002200029020037030820012003200241086a10392100200241206a240020000bc30f020d7f017e230041206b220324004101210402400240200228021841222002411c6a2802002802101101000d000240024020010d00410021050c010b200020016a21062000210741002105410021080240034020072109200741016a210a02400240024020072c0000220b417f4a0d0002400240200a2006470d004100210c200621070c010b20072d0001413f71210c200741026a220a21070b200b411f7121040240200b41ff0171220b41df014b0d00200c200441067472210b0c020b0240024020072006470d004100210d2006210e0c010b20072d0000413f71210d200741016a220a210e0b200d200c41067472210c0240200b41f0014f0d00200c2004410c7472210b0c020b02400240200e2006470d004100210b200a21070c010b200e41016a2107200e2d0000413f71210b0b200c4106742004411274418080f0007172200b72220b418080c400470d020c040b200b41ff0171210b0b200a21070b4102210a024002400240024002400240200b41776a220c411e4d0d00200b41dc00470d010c020b41f400210e02400240200c0e1f05010202000202020202020202020202020202020202020202030202020203050b41f200210e0c040b41ee00210e0c030b02400240200b104d0d00024002400240024002400240024002400240200b41808004490d00200b41808008490d01200b4190fc476a4190fc0b490d09200b41e28b746a41e28d2c490d09200b419fa8746a419f18490d09200b41dee2746a410e490d09200b41feffff0071419ef00a460d09200b41a9b2756a4129490d09200b41cb91756a410a4d0d090c0e0b200b4180fe0371410876210f419896c000210c410021040340200c41026a210d2004200c2d0001220a6a210e0240200c2d0000220c200f460d00200c200f4b0d08200e2104200d210c200d41ea96c000470d010c080b200e2004490d02200e41a5024b0d03200441ea96c0006a210c02400340200a450d01200a417f6a210a200c2d00002104200c41016a210c2004200b41ff0171470d000c0b0b0b200e2104200d210c200d41ea96c000470d000c070b0b200b4180fe0371410876210f41c99bc000210c410021040340200c41026a210d2004200c2d0001220a6a210e0240200c2d0000220c200f460d00200c200f4b0d06200e2104200d210c200d418f9cc000470d010c060b200e2004490d03200e41a6014b0d042004418f9cc0006a210c02400340200a450d01200a417f6a210a200c2d00002104200c41016a210c2004200b41ff0171470d000c0a0b0b200e2104200d210c200d418f9cc000470d000c050b0b2004200e1047000b200e41a502103f000b2004200e1047000b200e41a601103f000b200b41ffff0371210e41b59dc000210a4101210c02400340200a41016a210d02400240200a2d00002204411874411875220f4100480d00200d210a0c010b200d41cda0c000460d02200f41ff0071410874200a2d0001722104200a41026a210a0b200e20046b220e4100480d03200c410173210c200a41cda0c000470d000c030b0b419088c000412b41bc88c0001036000b200b41ffff0371210e418f99c000210a4101210c0340200a41016a210d02400240200a2d00002204411874411875220f4100480d00200d210a0c010b200d41c99bc000460d04200f41ff0071410874200a2d0001722104200a41026a210a0b200e20046b220e4100480d01200c410173210c200a41c99bc000470d000b0b200c4101710d050b200b41017267410276410773ad4280808080d0008421104103210a0c020b419088c000412b41bc88c0001036000b0b200b210e0b2003200136020420032000360200200320053602082003200836020c0240024020082005490d0002402005450d0020052001460d00200520014f0d01200020056a2c000041bf7f4c0d010b02402008450d0020082001460d00200820014f0d01200020086a2c000041bf7f4c0d010b2002280218200020056a200820056b200228021c28020c110000450d01410121040c060b20032003410c6a3602182003200341086a36021420032003360210200341106a1057000b0340200a210c4101210441dc0021054101210a024002400240024002400240200c0e0402010500020b02400240024002402010422088a741ff01710e06050302010006050b201042ffffffff8f60834280808080308421104103210a41f50021050c070b201042ffffffff8f60834280808080208421104103210a41fb0021050c060b200e2010a7220c410274411c7176410f71220a413072200a41d7006a200a410a491b21050240200c450d002010427f7c42ffffffff0f832010428080808070838421100c050b201042ffffffff8f60834280808080108421100c040b201042ffffffff8f608321104103210a41fd0021050c040b4100210a200e21050c030b4101210a0240200b418001490d004102210a200b418010490d0041034104200b41808004491b210a0b200a20086a21050c040b201042ffffffff8f60834280808080c0008421100b4103210a0b20022802182005200228021c2802101101000d050c000b0b200820096b20076a210820062007470d000b0b2005450d0020052001460d00200520014f0d02200020056a2c000041bf7f4c0d020b410121042002280218200020056a200120056b200228021c28020c1100000d0020022802184122200228021c28021011010021040b200341206a240020040f0b20002001200520011049000b1c00200128021841dc9ec60041052001411c6a28020028020c1100000bf20301087f20002802042102024002400240024020002802004101460d00200041086a28020022002001106720004103742200450d01200220006a2103200141086a2104034020022802002105200241046a28020022002001106702400240200141046a22062802002207200428020022086b2000490d00200128020021070c010b200820006a22092008490d05200741017422082009200820094b1b22084100480d050240024020070d002008102a21070c010b200128020020072008102e21070b2007450d042001200736020020062008360200200428020021080b2004200820006a360200200720086a2005200010db051a200241086a22022003470d000c020b0b2000410c6a28020022002001106720004103742200450d00200220006a2103200141086a2104034020022802002105200241046a28020022002001106702400240200141046a22062802002207200428020022086b2000490d00200128020021070c010b200820006a22092008490d04200741017422082009200820094b1b22084100480d040240024020070d002008102a21070c010b200128020020072008102e21070b2007450d032001200736020020062008360200200428020021080b2004200820006a360200200720086a2005200010db051a200241086a22022003470d000b0b0f0b1033000b1035000be10601037f0240024002402000413f4b0d0002400240200141046a280200200141086a2802002202460d00200128020021030c010b200241016a22032002490d03200241017422042003200420034b1b22044100480d030240024020020d002004102a21030c010b200128020020022004102e21030b2003450d0220012003360200200141046a2004360200200141086a28020021020b200141086a200241016a360200200320026a20004102743a00000f0b0240200041808001490d0002402000418080808004490d0002400240200141046a280200200141086a2802002202460d00200128020021030c010b200241016a22032002490d04200241017422042003200420034b1b22044100480d040240024020020d002004102a21030c010b200128020020022004102e21030b2003450d0320012003360200200141046a2004360200200141086a28020021020b200141086a2204200241016a360200200320026a41033a000002400240200141046a2802002203200428020022026b4104490d00200128020021030c010b200241046a22042002490d04200341017422022004200220044b1b22024100480d040240024020030d002002102a21030c010b200128020020032002102e21030b2003450d0320012003360200200141046a2002360200200141086a28020021020b200141086a200241046a360200200320026a20003600000f0b02400240200141046a2802002203200141086a28020022026b4104490d00200128020021030c010b200241046a22042002490d03200341017422022004200220044b1b22024100480d030240024020030d002002102a21030c010b200128020020032002102e21030b2003450d0220012003360200200141046a2002360200200141086a28020021020b200141086a200241046a360200200320026a20004102744102723600000f0b02400240200141046a2802002203200141086a28020022026b4102490d00200128020021030c010b200241026a22042002490d02200341017422022004200220044b1b22024100480d020240024020030d002002102a21030c010b200128020020032002102e21030b2003450d0120012003360200200141046a2002360200200141086a28020021020b200141086a200241026a360200200320026a20004102744101723b00000f0b1033000b1035000bc91b010a7f230041106b220324002001200210670240024002402001450d00200141d8006c2104410021050340200020056a220641046a2802002107200641086a28020022082002106702400240200241046a2209280200220a200241086a2201280200220b6b2008490d002002280200210a0c010b200b20086a220c200b490d04200a410174220b200c200b200c4b1b220b4100480d0402400240200a0d00200b102a210a0c010b2002280200200a200b102e210a0b200a450d032002200a3602002009200b3602002001280200210b0b2001200b20086a360200200a200b6a2007200810db051a200641d4006a2d0000210a02400240200928020020012802002208460d002002280200210b0c010b200841016a220b2008490d0420084101742207200b2007200b4b1b22074100480d040240024020080d002007102a210b0c010b200228020020082007102e210b0b200b450d032002200b36020020092007360200200128020021080b2001200841016a360200200b20086a200a3a000002402006410c6a2d0000220841024b0d0002400240024020080e03000102000b02400240200928020020012802002208460d002002280200210b0c010b200841016a220b2008490d072008410174220a200b200a200b4b1b220a4100480d070240024020080d00200a102a210b0c010b20022802002008200a102e210b0b200b450d062002200b3602002009200a360200200128020021080b2001200841016a360200200b20086a41003a0000200641146a2802002107200641186a280200220820021067024002402009280200220a2001280200220b6b2008490d002002280200210a0c010b200b20086a220c200b490d07200a410174220b200c200b200c4b1b220b4100480d0702400240200a0d00200b102a210a0c010b2002280200200a200b102e210a0b200a450d062002200a3602002009200b3602002001280200210b0b2001200b20086a360200200a200b6a2007200810db051a0c020b02400240200928020020012802002208460d002002280200210b0c010b200841016a220b2008490d062008410174220a200b200a200b4b1b220a4100480d060240024020080d00200a102a210b0c010b20022802002008200a102e210b0b200b450d052002200b3602002009200a360200200128020021080b2001200841016a360200200b20086a41013a00002006410d6a2d0000210a02400240200928020020012802002208460d002002280200210b0c010b200841016a220b2008490d0620084101742207200b2007200b4b1b22074100480d060240024020080d002007102a210b0c010b200228020020082007102e210b0b200b450d052002200b36020020092007360200200128020021080b2001200841016a360200200b20086a200a3a0000200641146a2802002107200641186a280200220820021067024002402009280200220a2001280200220b6b2008490d002002280200210a0c010b200b20086a220c200b490d06200a410174220b200c200b200c4b1b220b4100480d0602400240200a0d00200b102a210a0c010b2002280200200a200b102e210a0b200a450d052002200a3602002009200b3602002001280200210b0b2001200b20086a360200200a200b6a2007200810db051a200641206a2802002107200641246a280200220820021067024002402009280200220a2001280200220b6b2008490d002002280200210a0c010b200b20086a220c200b490d06200a410174220b200c200b200c4b1b220b4100480d0602400240200a0d00200b102a210a0c010b2002280200200a200b102e210a0b200a450d052002200a3602002009200b3602002001280200210b0b2001200b20086a360200200a200b6a2007200810db051a2006410e6a2d0000210a02400240200928020020012802002208460d002002280200210b0c010b200841016a220b2008490d0620084101742207200b2007200b4b1b22074100480d060240024020080d002007102a210b0c010b200228020020082007102e210b0b200b450d052002200b36020020092007360200200128020021080b2001200841016a360200200b20086a200a3a00000c010b02400240200928020020012802002208460d002002280200210b0c010b200841016a220b2008490d052008410174220a200b200a200b4b1b220a4100480d050240024020080d00200a102a210b0c010b20022802002008200a102e210b0b200b450d042002200b3602002009200a360200200128020021080b2001200841016a360200200b20086a41023a00002006410d6a2d0000210a02400240200928020020012802002208460d002002280200210b0c010b200841016a220b2008490d0520084101742207200b2007200b4b1b22074100480d050240024020080d002007102a210b0c010b200228020020082007102e210b0b200b450d042002200b36020020092007360200200128020021080b2001200841016a360200200b20086a200a3a0000200641146a2802002107200641186a280200220820021067024002402009280200220a2001280200220b6b2008490d002002280200210a0c010b200b20086a220c200b490d05200a410174220b200c200b200c4b1b220b4100480d0502400240200a0d00200b102a210a0c010b2002280200200a200b102e210a0b200a450d042002200a3602002009200b3602002001280200210b0b2001200b20086a360200200a200b6a2007200810db051a200641206a2802002107200641246a280200220820021067024002402009280200220a2001280200220b6b2008490d002002280200210a0c010b200b20086a220c200b490d05200a410174220b200c200b200c4b1b220b4100480d0502400240200a0d00200b102a210a0c010b2002280200200a200b102e210a0b200a450d042002200a3602002009200b3602002001280200210b0b2001200b20086a360200200a200b6a2007200810db051a2006412c6a2802002107200641306a280200220820021067024002402009280200220a2001280200220b6b2008490d002002280200210a0c010b200b20086a220c200b490d05200a410174220b200c200b200c4b1b220b4100480d0502400240200a0d00200b102a210a0c010b2002280200200a200b102e210a0b200a450d042002200a3602002009200b3602002001280200210b0b2001200b20086a360200200a200b6a2007200810db051a2006410e6a2d0000220841044b0d000240024002400240024020080e050001020304000b02400240200928020020012802002208460d002002280200210b0c010b200841016a220b2008490d092008410174220a200b200a200b4b1b220a4100480d090240024020080d00200a102a210b0c010b20022802002008200a102e210b0b200b450d082002200b3602002009200a360200200128020021080b2001200841016a360200200b20086a41003a00000c040b02400240200928020020012802002208460d002002280200210b0c010b200841016a220b2008490d082008410174220a200b200a200b4b1b220a4100480d080240024020080d00200a102a210b0c010b20022802002008200a102e210b0b200b450d072002200b3602002009200a360200200128020021080b2001200841016a360200200b20086a41013a00000c030b02400240200928020020012802002208460d002002280200210b0c010b200841016a220b2008490d072008410174220a200b200a200b4b1b220a4100480d070240024020080d00200a102a210b0c010b20022802002008200a102e210b0b200b450d062002200b3602002009200a360200200128020021080b2001200841016a360200200b20086a41023a00000c020b02400240200928020020012802002208460d002002280200210b0c010b200841016a220b2008490d062008410174220a200b200a200b4b1b220a4100480d060240024020080d00200a102a210b0c010b20022802002008200a102e210b0b200b450d052002200b3602002009200a360200200128020021080b2001200841016a360200200b20086a41033a00000c010b02400240200928020020012802002208460d002002280200210b0c010b200841016a220b2008490d052008410174220a200b200a200b4b1b220a4100480d050240024020080d00200a102a210b0c010b20022802002008200a102e210b0b200b450d042002200b3602002009200a360200200128020021080b2001200841016a360200200b20086a41043a00000b02400240200641346a2802004101460d002003200641386a2802002006413c6a28020028020c110200200328020021072003280208220820021067024002402009280200220a2001280200220b6b2008490d002002280200210a0c010b200b20086a220c200b490d06200a410174220b200c200b200c4b1b220b4100480d0602400240200a0d00200b102a210a0c010b2002280200200a200b102e210a0b200a450d052002200a3602002009200b3602002001280200210b0b2001200b20086a360200200a200b6a2007200810db051a2003280204450d012007102c0c010b200641386a2802002107200641c0006a280200220820021067024002402009280200220a2001280200220b6b2008490d002002280200210a0c010b200b20086a220c200b490d05200a410174220b200c200b200c4b1b220b4100480d0502400240200a0d00200b102a210a0c010b2002280200200a200b102e210a0b200a450d042002200a3602002009200b3602002001280200210b0b2001200b20086a360200200a200b6a2007200810db051a0b200641c4006a200210662004200541d8006a2205470d000b0b200341106a24000f0b1033000b1035000bdc0601087f20002802042102024002400240024020002802004101460d00200041086a2802002200200110672000450d01200041186c2103200241146a2100200141086a2102200141046a21040340200041706a2802002105200041746a2802002206200110670240024020042802002207200228020022086b2006490d00200128020021070c010b200820066a22092008490d05200741017422082009200820094b1b22084100480d050240024020070d002008102a21070c010b200128020020072008102e21070b2007450d042001200736020020042008360200200228020021080b2002200820066a360200200720086a2005200610db051a2000417c6a280200210520002802002206200110670240024020042802002207200228020022086b2006490d00200128020021070c010b200820066a22092008490d05200741017422082009200820094b1b22084100480d050240024020070d002008102a21070c010b200128020020072008102e21070b2007450d042001200736020020042008360200200228020021080b2002200820066a360200200720086a2005200610db051a200041186a2100200341686a22030d000c020b0b2000410c6a2802002200200110672000450d00200041186c2103200241146a2100200141086a2102200141046a21040340200041706a2802002105200041746a2802002206200110670240024020042802002207200228020022086b2006490d00200128020021070c010b200820066a22092008490d04200741017422082009200820094b1b22084100480d040240024020070d002008102a21070c010b200128020020072008102e21070b2007450d032001200736020020042008360200200228020021080b2002200820066a360200200720086a2005200610db051a2000417c6a280200210520002802002206200110670240024020042802002207200228020022086b2006490d00200128020021070c010b200820066a22092008490d04200741017422082009200820094b1b22084100480d040240024020070d002008102a21070c010b200128020020072008102e21070b2007450d032001200736020020042008360200200228020021080b2002200820066a360200200720086a2005200610db051a200041186a2100200341686a22030d000b0b0f0b1033000b1035000b040041010bb60101017f230041c0006b2202240020024100360210200242013703082002410836021c20022001410c6a3602202002200241206a3602182002200241086a3602242002413c6a41013602002002420137022c200241d49ec6003602282002200241186a360238200241246a41b4b0c000200241286a10391a20012d0000417f6a41ff0171200141046a290200200235021042208620023502088410000240200228020c450d002002280208102c0b200241c0006a24000bbc0101037f02400240024002402000280200220041046a2802002203200041086a28020022046b2002490d00200028020021030c010b200420026a22052004490d02200341017422042005200420054b1b22044100480d020240024020030d002004102a21030c010b200028020020032004102e21030b2003450d0120002003360200200041046a2004360200200041086a28020021040b200041086a200420026a360200200320046a2001200210db051a41000f0b1033000b1035000ba70301047f230041106b22022400200028020021002002410036020c02400240200141ff004b0d00200220013a000c410121010c010b0240200141ff0f4b0d0020022001413f71418001723a000d20022001410676411f7141c001723a000c410221010c010b0240200141ffff034b0d0020022001413f71418001723a000e20022001410676413f71418001723a000d20022001410c76410f7141e001723a000c410321010c010b20022001413f71418001723a000f2002200141127641f001723a000c20022001410676413f71418001723a000e20022001410c76413f71418001723a000d410421010b0240024002400240200041046a2802002203200041086a28020022046b2001490d00200028020021030c010b200420016a22052004490d02200341017422042005200420054b1b22044100480d020240024020030d002004102a21030c010b200028020020032004102e21030b2003450d0120002003360200200041046a2004360200200041086a28020021040b200041086a200420016a360200200320046a2002410c6a200110db051a200241106a240041000f0b1033000b1035000b6301017f230041206b2202240020022000280200360204200241086a41106a200141106a290200370300200241086a41086a200141086a29020037030020022001290200370308200241046a41b4b0c000200241086a10392101200241206a240020010b040041000b02000b02000b950201057f230041f0026b22012400024020002802082202200028020c460d00200141b8016a4101722103200141e0016a210403402000200241b8016a36020820022d00002105200141b8016a200241016a41b70110db051a20054103460d01200141016a200141b8016a41b70110db051a200120053a00b8012003200141016a41b70110db051a02400240200541014b0d000240024020050e020001000b024020012802c001450d0020012802bc01102c0b20012d00c8014105490d0220012802f001450d0220012802ec01102c0c020b200410730c010b20012802a002450d00200128029c02102c0b20002802082202200028020c470d000b0b02402000280204450d002000280200102c0b200141f0026a24000bad0c01057f024002402000280200220141164b0d000240024002400240024002400240024002400240024002400240024020010e1700010f0f020f0f030405060708090f0a0f0b0c0d0f0f0f000b0240200041086a280200220141064b0d00024002400240024020010e0713130013010203130b200041106a280200450d122000410c6a280200102c0f0b200041106a280200450d112000410c6a280200102c0f0b0240200041146a2802002202450d002000410c6a2802002101200241186c210203400240200141046a280200450d002001280200102c0b0240200141106a280200450d002001410c6a280200102c0b200141186a2101200241686a22020d000b0b200041106a280200450d10200028020c102c0f0b0240200041146a2802002202450d002000410c6a28020021012002410c6c210203400240200141046a280200450d002001280200102c0b2001410c6a2101200241746a22020d000b0b200041106a280200450d0f200028020c102c0f0b200041106a280200450d0e2000410c6a280200102c0f0b02402000410c6a2802002202450d002000280204210120024190016c210203402001107320014190016a2101200241f07e6a22020d000b0b200041086a280200450d0d2000280204102c0f0b02402000410c6a2802002201450d0020002802042203200141f0006c6a2104034002402003410c6a2802002202450d0020032802042101200241246c210203400240024020012d0000220541034b0d0002400240024020050e0404000102040b2001410c6a280200450d03200141086a280200102c0c030b2001410c6a280200450d02200141086a280200102c0c020b2001410c6a280200450d01200141086a280200102c0c010b200141086a280200450d00200141046a280200102c0b200141246a21012002415c6a22020d000b0b200341f0006a21010240200341086a280200450d002003280204102c0b2001210320012004470d000b0b200041086a280200450d0c2000280204102c0f0b0240200041086a2d00002201410f4b0d00410120017441bfbf03710d0c024020014106470d00200041106a280200450d0d2000410c6a280200102c0f0b200041106a280200450d0c2000410c6a280200102c0f0b200041146a280200450d0b200041106a280200102c0f0b200041086a280200450d0a2000280204102c0f0b200041086a2d0000416d6a220141014b0d090240024020010e020001000b200041106a280200450d0a2000410c6a280200102c0f0b200041106a280200450d092000410c6a280200102c0f0b20002d0004417f6a220141024b0d0802400240024020010e03000102000b2000410c6a280200450d0a200041086a280200102c0f0b200041086a220128020010732001280200102c0f0b2000410c6a220128020010732001280200102c0f0b20002d0004417f6a220141024b0d0702400240024020010e03000102000b2000410c6a280200450d09200041086a280200102c0f0b200041086a220128020010732001280200102c0f0b2000410c6a220128020010732001280200102c0f0b200041086a2802004101470d06200041106a280200450d062000410c6a280200102c0f0b20002d00044104470d052000410c6a280200450d05200041086a280200102c0f0b200041086a280200450d042000280204102c0f0b200041086a2d0000417e6a220141024b0d0302400240024020010e03000102000b200041106a280200450d052000410c6a280200102c0f0b200041346a280200450d04200041306a280200102c0f0b200041306a280200450d032000412c6a280200102c0f0b02402000280204220141024b0d00024020010e03040004040b200041086a220128020010732001280200102c0f0b2000412c6a220128020010732001280200102c0f0b02402000410c6a280200450d00200041086a280200102c0b02402000411c6a2802002202450d00200041146a28020021012002410c6c210203400240200141046a280200450d002001280200102c0b2001410c6a2101200241746a22020d000b0b200041186a280200450d012000280214102c0c010b02402000280204220141034b0d00024020010e0402000202020b2000410c6a280200450d01200041086a280200102c0f0b200041306a280200450d002000412c6a280200102c0f0b0ba205020c7f047e230041f0006b22022400200220011075024002400240024020022802000d00200128020441286e220341286c2204417f4c0d02200228020421050240024020040d00410821060c010b2004102a2206450d040b02402005450d00410021070340200241003a00682007220841016a210720012802042109417f210a410021040240024002400240034020092004460d01200241c8006a20046a2001280200220b2d00003a000020012009200a6a3602042001200b41016a3602002002200441016a220c3a0068200a417f6a210a200c2104200c4120470d000b200241286a41186a2204200241c8006a41186a290300370300200241286a41106a220a200241c8006a41106a290300370300200241286a41086a220d200241c8006a41086a290300370300200220022903483703282009200c6b220c4108490d01200b290001210e2001200b41096a3602002001200c41786a360204200241086a41086a220c200d290300370300200241086a41106a2209200a290300370300200241086a41186a220a20042903003703002002200229032837030820032008470d030240200841017422042007200420074b1b2203ad42287e220f422088a70d00200fa7220441004e0d030b1035000b200441ff0171450d00200241003a00680b200041003602002003450d052006102c0c050b0240024020080d002004102a21060c010b2006200841286c2004102e21060b2006450d060b2006200841286c6a22042002290308370300200c290300210f20092903002110200a29030021112004200e370320200441186a2011370300200441106a2010370300200441086a200f37030020072005470d000b0b2000200336020420002006360200200041086a20053602000c010b200041003602000b200241f0006a24000f0b103a000b1033000bcf0201067f0240024020012802042202450d00200128020022032d0000210420012002417f6a2205360204410121062001200341016a3602000240200441037122074103460d0002400240024020070e03000102000b20044102762107410021060c040b41012106024020050d000c040b20032d0001210520012002417e6a3602042001200341026a3602002005410874200472220141ffff0371418002490d03200141fcff03714102762107410021060c030b20054103490d01200341036a2d0000210620032f0001210720012002417c6a3602042001200341046a3602002007200641107472410874200472220141808004492106200141027621070c020b0240200441034d0d000c020b20054104490d012003280001210720012002417b6a3602042001200341056a36020020074180808080044921060c010b410121060b20002007360204200020063602000b800201077f230041106b2202240002400240024020012802042203450d00200128020022042d0000210520012003417f6a22063602042001200441016a3602002006450d0020042d0001210720012003417e6a22063602042001200441026a3602002006450d0020042d0002210820012003417d6a22063602042001200441036a3602002006450d0020042d0003210620012003417c6a3602042001200441046a3602002002200110772002280200450d01200020022903003702042000410c6a200241086a280200360200200020074108742005722008411074722006411874723602000c020b200041003602040c010b200041003602040b200241106a24000be70101047f230041106b22022400200241086a20011075024002400240024020022802080d0002402001280204200228020c22034f0d00200041003602000c020b2003417f4c0d02024002400240024020030d00410121040c010b200310302204450d0120012802042003490d0220042001280200200310db051a200128020422052003490d062001200520036b3602042001200128020020036a3602000b2000200336020420002004360200200041086a20033602000c030b1033000b200041003602002004102c0c010b200041003602000b200241106a24000f0b103a000b200320051047000bcf0101067f024002402000280208220141ffffff3f712001470d0020014105742202417f4c0d00200028020021030240024020020d00410121040c010b2002102a2204450d020b024020010d0041000f0b20014105742105410021000340200420006a2202200320006a2206290000370000200241186a200641186a290000370000200241106a200641106a290000370000200241086a200641086a2900003700002005200041206a2200470d000b2001410574410575210002402001450d002004102c0b20000f0b103a000b1033000bbf0302077f027e230041106b220224000240024002402000280208220341146a2204417f4c0d000240024020040d00410121050c010b2004102a2205450d02200028020821030b200241003602082002200436020420022005360200200028020021062003200210670240024020022802042205200228020822076b2003490d00200228020021040c010b200720036a22042007490d03200541017422082004200820044b1b22084100480d030240024020050d002008102a21040c010b200228020020052008102e21040b2004450d022002200836020420022004360200200821050b2002200720036a2208360208200420076a2006200310db051a200041186a29030021092000290310210a02400240200520086b4110490d00200841106a21030c010b200841106a22032008490d03200541017422002003200020034b1b22004100480d030240024020050d002000102a21040c010b200420052000102e21040b2004450d022002200036020420022004360200200021050b200420086a220020093700082000200a37000020012902002003ad4220862004ad84100102402005450d002004102c0b200241106a24000f0b103a000b1033000b1035000b9203010a7f200041086a220228020021034100210420024100360200024002402003450d004100210541002106410021044100210702400340024002402004450d00200741057421080340200720034f0d062001200028020022096b2008460d02200920086a220a2001412010dd05450d020240200620076a220b20034f0d00200920056a20086a2209200a290000370000200941186a200a41186a290000370000200941106a200a41106a290000370000200941086a200a41086a290000370000200841206a2108200741016a22072003490d010c050b0b41fcb4c000200b20031038000b200028020020074105746a21080340200720034f0d0520012008460d0120082001412010dd05450d01200841206a2108200741016a22072003490d000b410021040c030b200541606a21052006417f6a2106200441016a2104200741016a22072003490d000b0b2004450d00200320074d0d00200028020020074105746a220820044105746b2008200320076b41057410dc051a0b2002200320046b3602000f0b41a8b4c000200720031038000bbd0101047f230041106b22022400200028020821032000280200210041012104200128021841d1afc00041012001411c6a28020028020c1100002105200241003a0005200220053a00042002200136020002402003450d0003402002200036020c20022002410c6a41dc9ac50010621a200041016a21002003417f6a22030d000b20022d000421050b0240200541ff01710d002002280200220028021841d2afc00041012000411c6a28020028020c11000021040b200241106a240020040bf70405027f017e0a7f037e037f230041206b220224000240024020012802082203ad42d0007e2204422088a70d002004a72205417f4c0d00200128020021060240024020050d00410821070c010b2005102a2207450d020b0240024020030d00410021080c010b2006200341d0006c6a2109410021082007210a0340200241186a220b200641186a290300370300200241106a220c200641106a290300370300200241086a220d200641086a29030037030020022006290300370300200641c8006a280200220ead42307e2204422088a70d022004a72205417f4c0d02200641386a2903002104200641306a290300210f200641286a2903002110200641c0006a2802002101200629032021110240024020050d00410821120c010b2005102a2212450d040b200641d0006a210602400240200e0d00410021130c010b2001200e41306c6a211441002113201221050340200520012903003703002005200141086a290300370308200541106a200141106a290300370300200541186a200141186a290300370300200541206a200141206a290300370300200541286a200141286a290300370300200541306a2105201341016a2113200141306a22012014470d000b0b200a2011370320200a2002290300370300200a41386a2004370300200a41306a200f370300200a41286a2010370300200a41c8006a2013360200200a41c4006a200e360200200a41c0006a2012360200200a41186a200b290300370300200a41106a200c290300370300200a41086a200d290300370300200841016a2108200a41d0006a210a20062009470d000b0b200020083602082000200336020420002007360200200241206a24000f0b103a000b1033000bb10301037f024020002802082201450d002000280200220020014198016c6a21020340024020002d0000417f6a2201410f4b0d00024002400240024002400240024020010e1000070707070107070207030704070506000b200041086a280200450d06200041046a280200102c0c060b200041086a2d00004101470d05200041146a280200450d05200041106a280200102c0c050b200041046a2d00000d042000410c6a280200450d04200041086a280200102c0c040b200041046a2802000d032000410c6a280200450d03200041086a280200102c0c030b200041086a2d00004105490d02200041306a280200450d022000412c6a280200102c0c020b200041046a2d00004102490d010240200041106a2802002201450d00200141d0006c2103200041086a28020041c0006a210103400240200141046a280200450d002001280200102c0b200141d0006a2101200341b07f6a22030d000b0b2000410c6a280200450d012000280208102c0c010b200041086a280200450d00200041046a280200102c0b20004198016a210102402000418c016a280200450d00200028028801102c0b2001210020012002470d000b0b0be802010b7f230041106b22022400200241086a20011075024002400240024020022802080d0020012802042203417c712204417f4c0d02200228020c210502400240200341027622060d00410421070c010b2004102a2207450d040b02402005450d0041002108410021094100210403400240024002402001280204220a4104490d00200441016a21032001280200220b280000210c2001200a417c6a3602042001200b41046a36020020042006470d02024020082003200820034b1b220641ffffffff03712006470d002006410274220a41004e0d020b1035000b200041003602002006450d052007102c0c050b0240024020040d00200a102a21070c010b20072009200a102e21070b2007450d060b200720096a200c360200200841026a2108200941046a21092003210420052003470d000b0b2000200636020420002007360200200041086a20053602000c010b200041003602000b200241106a24000f0b103a000b1033000bba05020c7f067e230041f0006b22022400200220011075024002400240024020022802000d00200128020441306e220341306c2204417f4c0d02200228020421050240024020040d00410821060c010b2004102a2206450d040b02402005450d00410021070340200241003a00682007220841016a210720012802042109417f210a410021040240024002400240034020092004460d01200241c8006a20046a2001280200220b2d00003a000020012009200a6a3602042001200b41016a3602002002200441016a220c3a0068200a417f6a210a200c2104200c4120470d000b200241286a41186a2204200241c8006a41186a290300370300200241286a41106a220a200241c8006a41106a290300370300200241286a41086a220d200241c8006a41086a290300370300200220022903483703282009200c6b220c4110490d01200b41096a290000210e200b290001210f2001200c41706a3602042001200b41116a360200200241086a41086a220c200d290300370300200241086a41106a2209200a290300370300200241086a41186a220a20042903003703002002200229032837030820032008470d030240200841017422042007200420074b1b2203ad42307e2210422088a70d002010a7220441004e0d030b1035000b200441ff0171450d00200241003a00680b200041003602002003450d052006102c0c050b0240024020080d002004102a21060c010b2006200841306c2004102e21060b2006450d060b200c290300211020092903002111200a2903002112200229030821132006200841306c6a2204200f37032020042013370300200441286a200e370300200441186a2012370300200441106a2011370300200441086a201037030020072005470d000b0b2000200336020420002006360200200041086a20053602000c010b200041003602000b200241f0006a24000f0b103a000b1033000bd90403087f017e017f230041f0016b22022400200241086a200110750240024002400240024020022802080d00200128020441f0006e220341f0006c2204417f4c0d02200228020c21050240024020040d00410421060c010b2004102a2206450d040b024002402005450d00410021074100210841002109034020024180016a2001108101200228028401450d02200941016a2104200241106a20024180016a41f00010db051a024020092003470d0020072004200720044b1b2203ad42f0007e220a422088a70d08200aa7220b4100480d080240024020090d00200b102a21060c010b20062008200b102e21060b2006450d070b200620086a200241106a41f00010db051a200741026a2107200841f0006a21082004210920052004470d000b0b2000200336020420002006360200200041086a20053602000c020b2000410036020002402009450d00200620086a210120062107034002402007410c6a2802002209450d0020072802042104200941246c210903400240024020042d0000220841034b0d0002400240024020080e0404000102040b2004410c6a280200450d03200441086a280200102c0c030b2004410c6a280200450d02200441086a280200102c0c020b2004410c6a280200450d01200441086a280200102c0c010b200441086a280200450d00200441046a280200102c0b200441246a21042009415c6a22090d000b0b200741f0006a21040240200741086a280200450d002007280204102c0b2004210720012004470d000b0b2003450d012006102c0c010b200041003602000b200241f0016a24000f0b103a000b1033000b1035000ba00a03077f037e057f230041d0026b2202240041002103200241003a00c8022001280204417f6a210402400240024003402004417f460d01200241a8026a20036a200128020022052d00003a0000200120043602042001200541016a3602002002200341016a22053a00c8022004417f6a21042005210320054120470d000b200241e8006a41086a200241a8026a41086a290300370300200241e8006a41106a200241a8026a41106a290300370300200241e8006a41186a200241a8026a41186a290300370300200220022903a8023703682002200110752002280200450d01200041003602040c020b0240200341ff0171450d00200241003a00c8020b200041003602040c010b2002280204210641002104200241003a00c80220012802042107417f21030240034020072004460d01200241a8026a20046a200128020022082d00003a00002001200720036a3602042001200841016a3602002002200441016a22053a00c8022003417f6a21032005210420054120470d000b200241a8016a41086a200241a8026a41086a2903002209370300200241a8016a41106a200241a8026a41106a290300220a370300200241a8016a41186a200241a8026a41186a290300220b37030020024188016a41086a200937030020024188016a41106a200a37030020024188016a41186a200b370300200220022903a80222093703a801200220093703880141002104200241003a00c802200720056b210c200720036a210303400240200c2004470d000240200441ff0171450d00200241003a00c8020b200041003602040c030b200241a8026a20046a200820046a220541016a2d00003a0000200120033602042001200541026a3602002002200441016a22053a00c8022003417f6a21032005210420054120470d000b200241e8016a41086a200241a8026a41086a2903002209370300200241e8016a41106a200241a8026a41106a290300220a370300200241e8016a41186a200241a8026a41186a290300220b370300200241c8016a41086a22042009370300200241c8016a41106a2203200a370300200241c8016a41186a2205200b370300200220022903a80222093703e801200220093703c801200241a8026a2001108301024020022802a8022201450d00200241c8006a41086a2208200241e8006a41086a290300370300200241c8006a41106a2207200241e8006a41106a290300370300200241c8006a41186a220c200241e8006a41186a290300370300200241286a41086a220d20024188016a41086a290300370300200241286a41106a220e20024188016a41106a290300370300200241286a41186a220f20024188016a41186a29030037030020022002290368370348200220022903880137032820022902ac022109200241086a41186a22102005290300370300200241086a41106a22052003290300370300200241086a41086a22032004290300370300200220022903c801370308200020093702082000200136020420002006360200200041106a2002290348370200200041186a2008290300370200200041206a2007290300370200200041286a200c290300370200200041306a2002290328370200200041386a200d290300370200200041c0006a200e290300370200200041c8006a200f290300370200200041e8006a2010290300370200200041e0006a2005290300370200200041d8006a2003290300370200200041d0006a20022903083702000c020b200041003602040c010b0240200441ff0171450d00200241003a00c8020b200041003602040b200241d0026a24000ba104010a7f230041d0006b22022400200220011075024002400240024020022802000d00200128020422034160712204417f4c0d022002280204210502400240200341057622060d00410121070c010b2004102a2207450d040b02402005450d00410021080340200241003a00482008220941016a21082001280204417f6a21034100210402400240024003402003417f460d01200241286a20046a2001280200220a2d00003a0000200120033602042001200a41016a3602002002200441016a220a3a00482003417f6a2103200a2104200a4120470d000b200241086a41186a2204200241286a41186a290300370300200241086a41106a220a200241286a41106a290300370300200241086a41086a220b200241286a41086a2903003703002002200229032837030820062009470d020240200941017422032008200320084b1b220641ffffff3f712006470d002006410574220341004e0d020b1035000b0240200441ff0171450d00200241003a00480b200041003602002006450d052007102c0c050b0240024020090d002003102a21070c010b200720094105742003102e21070b2007450d060b200720094105746a22032002290308370000200341186a2004290300370000200341106a200a290300370000200341086a200b29030037000020082005470d000b0b2000200636020420002007360200200041086a20053602000c010b200041003602000b200241d0006a24000f0b103a000b1033000b990b03117f017e037f23004180016b2202240020022001107502400240024002400240024020022802000d00200128020441246e220341246c2204417f4c0d01200228020421050240024020040d00410421060c010b2004102a2206450d030b0240024020050d00410021040c010b200241286a411c6a2107200241d8006a4104722108200241db006a2109200241336a210a200241c8006a410172220b41076a210c4100210d4100210e03402001280204220f450d06200128020022102d000021042001200f417f6a22113602042001201041016a360200200441064b0d0602400240024002400240024020040e07040c000c020301040b41002104200241003a0078200f417e6a210f0340024020112004470d00200441ff0171450d0d200241003a00780c0d0b200241d8006a20046a201020046a221241016a2d00003a00002001200f3602042001201241026a3602002002200441016a22123a0078200f417f6a210f2012210420124120470d000b200241286a41086a200841086a290000370300200241286a41106a200841106a290000370300200241286a41186a200841186a280000360200200220082900003703282002280258210f200741026a200241c8006a41026a2d00003a0000200720022f00483b0000410021120c040b200241d8006a20011076200228025c450d0a200241c8006a41086a200841086a28020022043602002002200829020022133703482002280258210f200941086a200436000020092013370000200220022900583703282002200241d8006a41076a29000037002f410121120c030b200241d8006a20011076200228025c450d09200241c8006a41086a200841086a28020022043602002002200829020022133703482002280258210f200941086a200436000020092013370000200220022900583703282002200241d8006a41076a29000037002f410221120c020b200241d8006a20011076200228025c450d08200241c8006a41086a200841086a28020022043602002002200829020022133703482002280258210f200941086a200436000020092013370000200220022900583703282002200241d8006a41076a29000037002f410321120c010b200241c8006a2001107720022802482204450d07200a2002290258370000200a41086a200241d8006a41086a290200370000200a41106a200241d8006a41106a2802003600002002200b2900003703282002200c28000036002f41042112201441ffffff07712004411874722214210f0b200241086a41176a2210200241286a41176a290000370000200241086a41106a2211200241286a41106a290300370300200241086a41086a2215200241286a41086a290300370300200220022903283703080240200e2003470d00200341016a22042003490d06200341017422162004201620044b1b2216ad42247e2213422088a70d062013a722044100480d060240024020030d002004102a21060c010b2006200341246c2004102e21060b2006450d05201621030b2006200e41246c6a2204200f360001200420123a0000200420022903083700052004410d6a2015290300370000200441156a20112903003700002004411c6a2010290000370000200d41246a210d200e41016a2204210e20042005470d000b0b2000200336020420002006360200200041086a20043602000c050b200041003602000c040b103a000b1033000b1035000b200041003602000240200e450d002006210403400240024020042d0000220141034b0d0002400240024020010e0404000102040b2004410c6a280200450d03200441086a280200102c0c030b2004410c6a280200450d02200441086a280200102c0c020b2004410c6a280200450d01200441086a280200102c0c010b200441086a280200450d00200441046a280200102c0b200441246a2104200d415c6a220d0d000b0b2003450d002006102c0b20024180016a24000bdf0704067f017e0a7f027e230041f0006b22032400200341206a2001200228020c22041102000240024020032802200d002000410036020820004208370200200120022802001103002002280204450d012001102c0c010b200341c8006a41106a200341206a41106a290300370300200341c8006a41086a200341206a41086a290300370300200341c8006a41186a200341206a41186a290300370300200341c8006a41206a200341206a41206a280200360200200341086a200341d4006a290200370300200341106a200341dc006a290200370300200341186a200341e4006a290200370300200320032903203703482003200329024c370300200341c8006a200120022802102205110200024002400240417f2003280248220641016a220720072006491b2208ad42287e2209422088a70d002009a72206417f4c0d000240024020060d004108210a4108210b0c010b2006102a220a450d02200a210b0b200a2003290300370300200a41186a200341186a220c290300370300200a41106a200341106a220d290300370300200a41086a200341086a290300370300200b4201370320200341206a200120041102000240024020032802200d004101210e0c010b200341c8006a410472210641c800210f4101210e0340200341c8006a41206a200341206a41206a280200360200200341c8006a41186a2210200341206a41186a290300370300200341c8006a41106a2211200341206a41106a290300370300200341c8006a41086a2212200341206a41086a29030037030020032003290320370348200341086a2207200641086a290200370300200d200641106a290200370300200c200641186a290200370300200320062902003703002010200c2903003703002011200d29030037030020122007290300370300200320032903003703480240200e2008470d00200341206a200120051102002008417f2003280220220741016a221320132007491b6a22072008490d05200841017422132007201320074b1b2207ad42287e2209422088a70d052009a722134100480d050240024020080d002013102a210a0c010b200a200841286c2013102e210a0b200a450d04200a210b200721080b200b200f6a221341606a2207200329034837030020122903002109201129030021142010290300211520134201370300200741186a2015370300200741106a2014370300200741086a2009370300200341206a20012004110200200f41286a210f200e41016a210e20032802200d000b0b2001200228020011030002402002280204450d002001102c0b2000200e360208200020083602042000200b3602000c030b103a000b1033000b1035000b200341f0006a24000ba308040c7f017e057f037e23004180016b22022400024002400240200141086a220328020022042001410c6a2802002205460d002001280210220628020021072006280208220841014b210903402003200441206a220a360200200241e0006a41186a200441186a290000370300200241e0006a41106a200441106a290000370300200241e0006a41086a200441086a29000037030020022004290000370360410021040240024020090d0020080e020401040b2008210b0340200b410176220c20046a220d20042007200d4105746a200241e0006a412010dd054101481b2104200b200c6b220b41014b0d000b0b200720044105746a200241e0006a412010dd050d02200a2104200a2005470d000b0b20004100360208200042013702002001280204450d012001280200102c0c010b200241c0006a41086a2204200241e0006a41086a290300370300200241c0006a41106a220b200241e0006a41106a290300370300200241c0006a41186a220c200241e0006a41186a29030037030020022002290360220e3703002002200e370340024002404120102a220f450d00200f2002290340370000200f41186a200c290300370000200f41106a200b290300370000200f41086a2004290300370000200128020421102001280200211102400240200a2005470d0041012112410121130c010b41012112410121130340200628020821032006280200210702400340200241e0006a41186a2208200a41186a290000370300200241e0006a41106a2209200a41106a290000370300200241e0006a41086a2201200a41086a2900003703002002200a290000370360200a41206a210a4100210402400240200341014b0d0020030e020301030b2003210b0340200b410176220c20046a220d20042007200d4105746a200241e0006a412010dd054101481b2104200b200c6b220b41014b0d000b0b200720044105746a200241e0006a412010dd050d01200a2005470d000c030b0b200241c0006a41086a2001290300220e370300200241c0006a41106a20092903002214370300200241c0006a41186a20082903002215370300200220022903602216370340200241186a220b2015370300200241106a220c2014370300200241086a220d200e37030020022016370300024020132012470d00201241016a22042012490d04201241017422072004200720044b1b221341ffffff3f712013470d04201341057422044100480d040240024020120d002004102a210f0c010b200f20124105742004102e210f0b200f450d030b200f20124105746a22042002290300370000200441186a200b290300370000200441106a200c290300370000200441086a200d290300370000201241016a2112200a2005470d000b0b02402010450d002011102c0b20002012360208200020133602042000200f3602000c020b1033000b1035000b20024180016a24000ba20705077f037e097f017e017f23004180016b22022400024002400240200141086a220328020022042001410c6a2802002205460d0020012802102106200241f4006a2107034020032004220841206a2204360200200841086a2903002109200841106a290300210a2008290300210b200241e0006a41186a200841186a290300370300200241e0006a41106a200a370300200241e0006a41086a20093703002002200b3703600240200aa720062802004d0d002001280214220c2007460d002007290000200c290000520d030b20052004470d000b0b20004100360208200042083702002001280204450d012001280200102c0c010b200241086a2204200241e0006a41086a290300370300200241106a2203200241e0006a41106a290300370300200241186a2207200241e0006a41186a29030037030020022002290360220a3703202002200a37030002400240024002404120102a220d450d00200d2002290300370300200d41186a2007290300370300200d41106a2003290300370300200d41086a20042903003703002001280204210e2001280200210f200541606a2008460d02200841206a2110200541606a2111200241f4006a21014101211241012113200d21140340200c2001460d032010210802400340200241e0006a41186a2204200841186a290300370300200241e0006a41106a2203200841106a290300220a370300200241e0006a41086a2207200841086a290300370300200220082903003703600240200aa720062802004d0d002001290000200c290000520d020b2005200841206a2208470d000c060b0b200241206a41086a2007290300220a370300200241206a41106a20032903002209370300200241206a41186a2004290300220b3703002002200229036022153703202004200b370300200320093703002007200a37030020022015370360024020132012470d00201241016a22132012490d03201241017422102013201020134b1b221341ffffff3f712013470d03201341057422104100480d030240024020120d002010102a21140c010b201420124105742010102e21140b2014450d020b200841206a2110201420124105746a22162002290360370300201641186a2004290300370300201641106a2003290300370300201641086a2007290300370300201241016a211220112008470d000c040b0b1033000b1035000b4101211241012113200d21140b0240200e450d00200f102c0b2000201236020820002013360204200020143602000b20024180016a24000bfe1503077f027e057f230041206b2202240002400240024041aa02102a2203450d00200241aa0236020420022003360200200341003b00002002410236020802400240200128020022042903684202520d00024020022802044102470d00200228020041024104102e2203450d0320024104360204200220033602000b200228020041043a00022002200228020841016a3602080c010b024020022802044102470d00200228020041024104102e2203450d0220024104360204200220033602000b20022802004184013a00022002200228020841016a36020820042002108801024020042d0024220341024b0d0002400240024020030e03000102000b02400240200228020420022802082203460d00200228020021010c010b200341016a22012003490d07200341017422052001200520014b1b22054100480d070240024020030d002005102a21010c010b200228020020032005102e21010b2001450d052002200536020420022001360200200228020821030b2002200341016a360208200120036a41003a0000200441256a2106410021010340200620016a2d0000210702400240200228020420022802082203460d00200228020021050c010b200341016a22052003490d08200341017422082005200820054b1b22084100480d080240024020030d002008102a21050c010b200228020020032008102e21050b2005450d062002200836020420022005360200200228020821030b2002200341016a360208200520036a20073a0000200141016a220141c000470d000c030b0b02400240200228020420022802082203460d00200228020021010c010b200341016a22012003490d06200341017422052001200520014b1b22054100480d060240024020030d002005102a21010c010b200228020020032005102e21010b2001450d042002200536020420022001360200200228020821030b2002200341016a360208200120036a41013a0000200441256a2106410021010340200620016a2d0000210702400240200228020420022802082203460d00200228020021050c010b200341016a22052003490d07200341017422082005200820054b1b22084100480d070240024020030d002008102a21050c010b200228020020032008102e21050b2005450d052002200836020420022005360200200228020821030b2002200341016a360208200520036a20073a0000200141016a220141c000470d000c020b0b02400240200228020420022802082203460d00200228020021010c010b200341016a22012003490d05200341017422052001200520014b1b22054100480d050240024020030d002005102a21010c010b200228020020032005102e21010b2001450d032002200536020420022001360200200228020821030b2002200341016a360208200120036a41023a0000412521010340200420016a2d0000210702400240200228020420022802082203460d00200228020021050c010b200341016a22052003490d06200341017422082005200820054b1b22084100480d060240024020030d002008102a21050c010b200228020020032008102e21050b2005450d042002200836020420022005360200200228020821030b2002200341016a360208200520036a20073a0000200141016a220141e600470d000b0b0240024020042903684201510d0002400240200228020420022802082203460d00200228020021010c010b200341016a22012003490d06200341017422052001200520014b1b22054100480d060240024020030d002005102a21010c010b200228020020032005102e21010b2001450d042002200536020420022001360200200228020821030b2002200341016a360208200120036a41003a00000c010b200441f8006a29030020042903702209420c88220a4201200a4201561b80210a0240024020022802042201200228020822036b4102490d00200228020021010c010b200341026a22052003490d05200141017422032005200320054b1b22034100480d050240024020010d002003102a21010c010b200228020020012003102e21010b2001450d032002200336020420022001360200200228020821030b2002200341026a360208200120036a200aa741047420097aa7417f6a22034101200341014b1b2203410f2003410f491b723b00000b20044190016a2002108901200220044180016a360210200241106a2002108a010b20044198016a2002108b012002280208210320024100360218200242013703102003417e6a200241106a10672002280208220141014d0d01200228021821042002280214210b2002280210210720024100360208200228020021030240024002400240024002402001417e6a2208450d00410221062004450d04200320072d00003a00004101210c2002200228020841016a36020820044101460d04200720046a210d200320072d00013a00012002200228020841016a36020841022106200741026a21052004417e6a220e0d014100210e0c020b0240024002402002280204220120044f0d00200141017422052004200520044b1b22054100480d0a0240024020010d002005102a21030c010b200320012005102e21030b2003450d082002200536020420022003360200200228020821060c010b410021062004450d010b200320066a220120072d00003a0000024020044101470d00200641016a21060c010b2004417f6a2105200741016a2103200141016a21010340200120032d00003a0000200141016a2101200341016a21032005417f6a22050d000b200620046a21060b20022006360208410221060c020b024002402002280204220320016b200e490d00200228020021030c010b2001200e6a22062001490d07200341017422012006200120064b1b22014100480d070240024020030d002001102a21030c010b200228020020032001102e21030b2003450d0520022001360204200220033602000b200320046a200341026a200810dc051a0240200420022802082203460d00200420036b21062004417e6a2101200228020020036a210c410021030340024020012003470d00200421060c040b200c20036a20052d00003a00002002200228020841016a360208200541016a21052006200341016a2203470d000b200d20056b220e0d004100210e4101210c200421060c010b200e4100480d0620042106200e102a220c450d040b0240200d2005460d00200c20052d00003a00004101210f02400240200541016a2203200d470d00200c41016a21040c010b200c41016a21012007200420056b6a21050340200120032d00003a0000200141016a2101200d200341016a2203470d000b2005450d01200c20056a21042005210f0b0240024020022802042203200820066a22016b200f490d00200228020021030c010b2001200f6a22052001490d07200341017422012005200120054b1b22014100480d070240024020030d002001102a21030c010b200228020020032001102e21030b2003450d0520022001360204200220033602000b20032006200f6a220d6a200320066a200810dc051a0240200d20022802082203460d00200228020020036a21012006200f6a20036b2105200c2103034020042003460d01200120032d00003a00002002200228020841016a360208200341016a2103200141016a21012005417f6a22050d000b0b200d21060b200e450d00200c102c0b2008450d010b0240200620022802082203460d002002280200220120036a200120066a200810dc051a0b2002200820036a3602080b0240200b450d002007102c0b20002002290300370200200041086a200241086a280200360200200241206a24000f0b1033000b41dafec500411c41acfec5001036000b1035000bfd0701037f02400240024020002d00004101460d0002400240200141046a280200200141086a2802002202460d00200128020021030c010b200241016a22032002490d03200241017422042003200420034b1b22044100480d030240024020020d002004102a21030c010b200128020020022004102e21030b2003450d0220012003360200200141046a2004360200200141086a28020021020b200141086a200241016a360200200320026a41ff013a0000200041016a20011091010f0b0240024002400240200041046a280200220241ffff034b0d00200241ef014b0d03200141046a280200200141086a2802002200460d01200128020021030c020b02400240200141046a280200200141086a2802002200460d00200128020021030c010b200041016a22032000490d05200041017422042003200420034b1b22044100480d050240024020000d002004102a21030c010b200128020020002004102e21030b2003450d0420012003360200200141046a2004360200200141086a28020021000b200141086a2204200041016a360200200320006a41fd013a000002400240200141046a2802002203200428020022006b4104490d00200128020021030c010b200041046a22042000490d05200341017422002004200020044b1b22004100480d050240024020030d002000102a21030c010b200128020020032000102e21030b2003450d0420012003360200200141046a2000360200200141086a28020021000b200141086a200041046a360200200320006a20023600000f0b200041016a22032000490d03200041017422042003200420034b1b22044100480d030240024020000d002004102a21030c010b200128020020002004102e21030b2003450d0220012003360200200141046a2004360200200141086a28020021000b200141086a200041016a360200200320006a20023a00000f0b02400240200141046a280200200141086a2802002200460d00200128020021030c010b200041016a22032000490d02200041017422042003200420034b1b22044100480d020240024020000d002004102a21030c010b200128020020002004102e21030b2003450d0120012003360200200141046a2004360200200141086a28020021000b200141086a2204200041016a360200200320006a41fc013a000002400240200141046a2802002203200428020022006b4102490d00200128020021030c010b200041026a22042000490d02200341017422002004200020044b1b22004100480d020240024020030d002000102a21030c010b200128020020032000102e21030b2003450d0120012003360200200141046a2000360200200141086a28020021000b200141086a200041026a360200200320006a20023b00000f0b1033000b1035000bed0601037f02400240024020002802002202413f4b0d0002400240200141046a280200200141086a2802002200460d00200128020021030c010b200041016a22032000490d03200041017422042003200420034b1b22044100480d030240024020000d002004102a21030c010b200128020020002004102e21030b2003450d0220012003360200200141046a2004360200200141086a28020021000b200141086a200041016a360200200320006a20024102743a00000f0b0240200241808001490d0002402002418080808004490d0002400240200141046a280200200141086a2802002202460d00200128020021030c010b200241016a22032002490d04200241017422042003200420034b1b22044100480d040240024020020d002004102a21030c010b200128020020022004102e21030b2003450d0320012003360200200141046a2004360200200141086a28020021020b200141086a2204200241016a360200200320026a41033a00002000280200210302400240200141046a2802002202200428020022006b4104490d00200128020021020c010b200041046a22042000490d04200241017422002004200020044b1b22004100480d040240024020020d002000102a21020c010b200128020020022000102e21020b2002450d0320012002360200200141046a2000360200200141086a28020021000b200141086a200041046a360200200220006a20033600000f0b02400240200141046a2802002203200141086a28020022006b4104490d00200128020021030c010b200041046a22042000490d03200341017422002004200020044b1b22004100480d030240024020030d002000102a21030c010b200128020020032000102e21030b2003450d0220012003360200200141046a2000360200200141086a28020021000b200141086a200041046a360200200320006a20024102744102723600000f0b02400240200141046a2802002203200141086a28020022006b4102490d00200128020021030c010b200041026a22042000490d02200341017422002004200020044b1b22004100480d020240024020030d002000102a21030c010b200128020020032000102e21030b2003450d0120012003360200200141046a2000360200200141086a28020021000b200141086a200041026a360200200320006a20024102744101723b00000f0b1033000b1035000bd50903017f027e057f230041e0006b220224000240024002400240200028020022002903002203423f56200041086a290300220442005220045022051b0d0002400240200141046a280200200141086a2802002200460d00200128020021050c010b200041016a22052000490d04200041017422062005200620054b1b22064100480d040240024020000d002006102a21050c010b200128020020002006102e21050b2005450d0320012005360200200141046a2006360200200141086a28020021000b200141086a200041016a360200200520006a2003a74102743a00000c010b024020034280800154410020051b0d000240200342808080800454410020051b0d000240411020047920037942c0007c20044200521ba741037622066b4104490d0002400240200141046a280200200141086a2802002205460d00200128020021070c010b200541016a22082005490d06200541017422072008200720084b1b22084100480d060240024020050d002008102a21070c010b200128020020052008102e21070b2007450d0520012007360200200141046a2008360200200141086a28020021050b200141086a2208200541016a360200200720056a413320064102746b3a0000200029030021032002200041086a290300220437030820022003370300200641706a2105200141046a2107034002400240200728020020082802002200460d00200128020021060c010b200041016a22062000490d07200041017422092006200920064b1b22094100480d070240024020000d002009102a21060c010b200128020020002009102e21060b2006450d062001200636020020072009360200200828020021000b2008200041016a360200200620006a2003a73a00002003420888200442388684210320044208882104200541016a22002005492106200021052006450d000b20022003370300200220043703082003200484500d03200241286a41146a4109360200200241346a410a360200200241106a41146a410336020020022002360240200241a0e2c10036024420024203370214200241ec9fc6003602102002410a36022c200242043703582002420137024c200241d8e1c1003602482002200241286a3602202002200241c8006a3602382002200241c4006a3602302002200241c0006a360228200241106a4184c5c5001041000b4196e1c100413641acfec5001036000b02400240200141046a2802002205200141086a28020022006b4104490d00200128020021050c010b200041046a22062000490d04200541017422002006200020064b1b22004100480d040240024020050d002000102a21050c010b200128020020052000102e21050b2005450d0320012005360200200141046a2000360200200141086a28020021000b200141086a200041046a360200200520006a2003a74102744102723600000c010b02400240200141046a2802002205200141086a28020022006b4102490d00200128020021050c010b200041026a22062000490d03200541017422002006200020064b1b22004100480d030240024020050d002000102a21050c010b200128020020052000102e21050b2005450d0220012005360200200141046a2000360200200141086a28020021000b200141086a200041026a360200200520006a2003a74102744101723b00000b200241e0006a24000f0b1033000b1035000bdeca0103057f017e067f230041206b22022400024002400240024002402000280200220341174b0d0002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020030e18000102030405060708090a0b0c0d0e0f1011121314151617000b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d1a200341017422052004200520044b1b22054100480d1a0240024020030d002005102a21040c010b200128020020032005102e21040b2004450d1920012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41003a00002000280208417f6a220341064b0d17024002400240024002400240024020030e0700010203040506000b200241003a001402400240200141046a280200200141086a2802002200460d00200128020021030c010b200041016a22032000490d20200041017422042003200420034b1b22044100480d200240024020000d002004102a21030c010b200128020020002004102e21030b2003450d1f20012003360200200141046a2004360200200141086a28020021000b200141086a200041016a360200200320006a41003a00000c1d0b200241013a001402400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d1f200341017422052004200520044b1b22054100480d1f0240024020030d002005102a21040c010b200128020020032005102e21040b2004450d1e20012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41013a0000200028020c2106200041146a28020022002001106702400240200141046a2802002204200528020022036b2000490d00200128020021040c010b200320006a22052003490d1f200441017422032005200320054b1b22034100480d1f0240024020040d002003102a21040c010b200128020020042003102e21040b2004450d1e20012004360200200141046a2003360200200141086a28020021030b200141086a200320006a360200200420036a2006200010db051a0c1c0b200241023a001402400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d1e200341017422052004200520044b1b22054100480d1e0240024020030d002005102a21040c010b200128020020032005102e21040b2004450d1d20012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41023a00002000290310210702400240200141046a2802002203200528020022006b4108490d00200128020021030c010b200041086a22042000490d1e200341017422002004200020044b1b22004100480d1e0240024020030d002000102a21030c010b200128020020032000102e21030b2003450d1d20012003360200200141046a2000360200200141086a28020021000b200141086a200041086a360200200320006a20073700000c1b0b200241033a001402400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d1d200341017422052004200520044b1b22054100480d1d0240024020030d002005102a21040c010b200128020020032005102e21040b2004450d1c20012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41033a0000200028020c2106200041146a28020022002001106702400240200141046a2802002204200528020022036b2000490d00200128020021040c010b200320006a22052003490d1d200441017422032005200320054b1b22034100480d1d0240024020040d002003102a21040c010b200128020020042003102e21040b2004450d1c20012004360200200141046a2003360200200141086a28020021030b200141086a200320006a360200200420036a2006200010db051a0c1a0b200141086a2802002103200241043a0014024002402003200141046a280200460d00200128020021050c010b200341016a22042003490d1c200341017422052004200520044b1b22044100480d1c0240024020030d002004102a21050c010b200128020020032004102e21050b2005450d1b20012005360200200141046a2004360200200141086a28020021030b200141086a2204200341016a360200200520036a41043a0000200028020c2103200041146a2802002200200110672000450d192003200041186c6a2108200141046a2106034020032802002109200341086a280200220020011067024002402006280200220a200428020022056b2000490d002001280200210a0c010b200520006a220b2005490d1d200a4101742205200b2005200b4b1b22054100480d1d02400240200a0d002005102a210a0c010b2001280200200a2005102e210a0b200a450d1c2001200a36020020062005360200200428020021050b2004200520006a360200200a20056a2009200010db051a2003410c6a2802002109200341146a280200220020011067024002402006280200220a200428020022056b2000490d002001280200210a0c010b200520006a220b2005490d1d200a4101742205200b2005200b4b1b22054100480d1d02400240200a0d002005102a210a0c010b2001280200200a2005102e210a0b200a450d1c2001200a36020020062005360200200428020021050b2004200520006a360200200a20056a2009200010db051a200341186a22032008470d000c1a0b0b200241053a001402400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d1b200341017422052004200520044b1b22054100480d1b0240024020030d002005102a21040c010b200128020020032005102e21040b2004450d1a20012004360200200141046a2005360200200141086a28020021030b200141086a2206200341016a360200200420036a41053a0000200028020c2104200041146a2802002200200110672000450d1820042000410c6c6a2108200141046a210903402004280200210a200441086a2802002200200110670240024020092802002205200628020022036b2000490d00200128020021050c010b200320006a220b2003490d1c20054101742203200b2003200b4b1b22034100480d1c0240024020050d002003102a21050c010b200128020020052003102e21050b2005450d1b2001200536020020092003360200200628020021030b2006200320006a360200200520036a200a200010db051a2004410c6a22042008470d000c190b0b200241063a001402400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d1a200341017422052004200520044b1b22054100480d1a0240024020030d002005102a21040c010b200128020020032005102e21040b2004450d1920012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41063a0000200028020c2106200041146a28020022002001106702400240200141046a2802002204200528020022036b2000490d00200128020021040c010b200320006a22052003490d1a200441017422032005200320054b1b22034100480d1a0240024020040d002003102a21040c010b200128020020042003102e21040b2004450d1920012004360200200141046a2003360200200141086a28020021030b200141086a200320006a360200200420036a2006200010db051a0c170b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d19200341017422052004200520044b1b22054100480d190240024020030d002005102a21040c010b200128020020032005102e21040b2004450d1820012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41013a000002400240200141046a28020020052802002203460d00200128020021040c010b200341016a22042003490d19200341017422052004200520044b1b22054100480d190240024020030d002005102a21040c010b200128020020032005102e21040b2004450d1820012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41003a0000200028020421032000410c6a2802002200200110672000450d1620004190016c2100034020032001108b0120034190016a2103200041f07e6a22000d000c170b0b02400240200141046a280200200141086a2802002200460d00200128020021030c010b200041016a22032000490d18200041017422042003200420034b1b22044100480d180240024020000d002004102a21030c010b200128020020002004102e21030b2003450d1720012003360200200141046a2004360200200141086a28020021000b200141086a200041016a360200200320006a41023a0000200110e6020c150b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d17200341017422052004200520044b1b22054100480d170240024020030d002005102a21040c010b200128020020032005102e21040b2004450d1620012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41033a000002400240200141046a28020020052802002203460d00200128020021040c010b200341016a22042003490d17200341017422052004200520044b1b22054100480d170240024020030d002005102a21040c010b200128020020032005102e21040b2004450d1620012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41003a0000200041086a200110c3020c140b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d16200341017422052004200520044b1b22054100480d160240024020030d002005102a21040c010b200128020020032005102e21040b2004450d1520012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41043a000002400240200141046a28020020052802002203460d00200128020021040c010b200341016a22042003490d16200341017422052004200520044b1b22054100480d160240024020030d002005102a21040c010b200128020020032005102e21040b2004450d1520012004360200200141046a2005360200200141086a28020021030b200141086a220a200341016a360200200420036a41003a00002000280204210c2000410c6a2802002200200110672000450d13200c200041f0006c6a210d200141046a210b034020022001360200200c41106a2002109402200c200110890120022001360200200c41306a200210940220022001360200200c41d0006a2002109402200c2802042104200c28020c22002001106702402000450d00200041246c210903402002200410e7022002280200210602400240200b2802002205200a28020022006b20022802082203490d00200128020021050c010b200020036a22082000490d19200541017422002008200020084b1b22004100480d190240024020050d002000102a21050c010b200128020020052000102e21050b2005450d1820012005360200200b2000360200200a28020021000b200a200020036a360200200520006a2006200310db051a02402002280204450d002006102c0b200441246a21042009415c6a22090d000b0b200c41f0006a220c200d470d000c140b0b02400240200141046a280200200141086a2802002200460d00200128020021030c010b200041016a22032000490d15200041017422042003200420034b1b22044100480d150240024020000d002004102a21030c010b200128020020002004102e21030b2003450d1420012003360200200141046a2004360200200141086a28020021000b200141086a200041016a360200200320006a41053a0000200110e6020c120b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d14200341017422052004200520044b1b22054100480d140240024020030d002005102a21040c010b200128020020032005102e21040b2004450d1320012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41063a00002000280208417f6a220341034b0d110240024002400240024020030e0400010203000b200241003a001402400240200141046a280200200141086a2802002204460d00200128020021050c010b200441016a22032004490d18200441017422052003200520034b1b22034100480d180240024020040d002003102a21050c010b200128020020042003102e21050b2005450d1720012005360200200141046a2003360200200141086a28020021040b200041306a2103200141086a200441016a360200200520046a41003a00002000410c6a2001108801200241106a21000c030b200241013a001402400240200141046a280200200141086a2802002204460d00200128020021050c010b200441016a22032004490d17200441017422052003200520034b1b22034100480d170240024020040d002003102a21050c010b200128020020042003102e21050b2005450d1620012005360200200141046a2003360200200141086a28020021040b200041c0006a2103200141086a200441016a360200200520046a41013a00002000410c6a20011088012002200041306a360214200241146a2001108a01200241186a21000c020b200241023a001402400240200141046a280200200141086a2802002204460d00200128020021050c010b200441016a22032004490d16200441017422052003200520034b1b22034100480d160240024020040d002003102a21050c010b200128020020042003102e21050b2005450d1520012005360200200141046a2003360200200141086a28020021040b200041d8006a2103200141086a200441016a360200200520046a41023a00002000410c6a2001108801200041306a20011088012002411c6a21000c010b200241033a001402400240200141046a280200200141086a2802002204460d00200128020021050c010b200441016a22032004490d15200441017422052003200520034b1b22034100480d150240024020040d002003102a21050c010b200128020020042003102e21050b2005450d1420012005360200200141046a2003360200200141086a28020021040b200041306a2103200141086a200441016a360200200520046a41033a00002000410c6a2001108801200221000b2000200336020020002001108a010c110b02400240200141046a2206280200200141086a22032802002204460d00200128020021050c010b200441016a22052004490d132004410174220a2005200a20054b1b220a4100480d130240024020040d00200a102a21050c010b20012802002004200a102e21050b2005450d1220012005360200200141046a200a360200200141086a28020021040b2003200441016a360200200520046a41073a0000200041086a22052d0000417f6a2204410f4b0d10024002400240024002400240024002400240024002400240024002400240024020040e10000102030405060708090a0b0c0d0e0f000b200241003a001402400240200628020020032802002204460d002001280200210a0c010b200441016a220a2004490d2220044101742209200a2009200a4b1b22094100480d220240024020040d002009102a210a0c010b200128020020042009102e210a0b200a450d212001200a360200200141046a2009360200200141086a28020021040b200141086a200441016a360200200a20046a41003a00002000410c6a20011088012002200041306a36020020022001108a0120052d0001220041024b0d1f02400240024020000e03000102000b200241003a001402400240200628020020032802002200460d00200128020021040c010b200041016a22042000490d24200041017422052004200520044b1b22054100480d240240024020000d002005102a21040c010b200128020020002005102e21040b2004450d2320012004360200200141046a2005360200200141086a28020021000b2003200041016a360200200420006a41003a00000c210b200241013a001402400240200628020020032802002200460d00200128020021040c010b200041016a22042000490d23200041017422052004200520044b1b22054100480d230240024020000d002005102a21040c010b200128020020002005102e21040b2004450d2220012004360200200141046a2005360200200141086a28020021000b2003200041016a360200200420006a41013a00000c200b200241023a001402400240200628020020032802002200460d00200128020021040c010b200041016a22042000490d22200041017422052004200520044b1b22054100480d220240024020000d002005102a21040c010b200128020020002005102e21040b2004450d2120012004360200200141046a2005360200200141086a28020021000b2003200041016a360200200420006a41023a00000c1f0b200241013a001402400240200628020020032802002203460d00200128020021040c010b200341016a22042003490d21200341017422052004200520044b1b22054100480d210240024020030d002005102a21040c010b200128020020032005102e21040b2004450d2020012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41013a00002002200041106a36020020022001108a010c1e0b200241023a001402400240200628020020032802002203460d00200128020021040c010b200341016a22042003490d20200341017422052004200520044b1b22054100480d200240024020030d002005102a21040c010b200128020020032005102e21040b2004450d1f20012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41023a00002002200041106a36020020022001108a010c1d0b200241033a001402400240200628020020032802002200460d00200128020021040c010b200041016a22042000490d1f200041017422052004200520044b1b22054100480d1f0240024020000d002005102a21040c010b200128020020002005102e21040b2004450d1e20012004360200200141046a2005360200200141086a28020021000b2003200041016a360200200420006a41033a00000c1c0b200241043a001402400240200628020020032802002203460d00200128020021040c010b200341016a22042003490d1e200341017422052004200520044b1b22054100480d1e0240024020030d002005102a21040c010b200128020020032005102e21040b2004450d1d20012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41043a00002000410c6a20011089010c1b0b200241053a001402400240200628020020032802002203460d00200128020021040c010b200341016a22042003490d1d200341017422052004200520044b1b22054100480d1d0240024020030d002005102a21040c010b200128020020032005102e21040b2004450d1c20012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41053a0000200028020c2103200041146a2802002200200110672000450d1a200041246c2100034020032001108801200341246a21032000415c6a22000d000c1b0b0b200241063a001402400240200628020020032802002200460d00200128020021040c010b200041016a22042000490d1c200041017422052004200520044b1b22054100480d1c0240024020000d002005102a21040c010b200128020020002005102e21040b2004450d1b20012004360200200141046a2005360200200141086a28020021000b2003200041016a360200200420006a41063a00000c190b200241073a001402400240200628020020032802002200460d00200128020021040c010b200041016a22042000490d1b2000410174220a2004200a20044b1b220a4100480d1b0240024020000d00200a102a21040c010b20012802002000200a102e21040b2004450d1a20012004360200200141046a200a360200200141086a28020021000b2003200041016a360200200420006a41073a000020052d0001220041024b0d1802400240024020000e03000102000b200241003a001402400240200628020020032802002200460d00200128020021040c010b200041016a22042000490d1d200041017422052004200520044b1b22054100480d1d0240024020000d002005102a21040c010b200128020020002005102e21040b2004450d1c20012004360200200141046a2005360200200141086a28020021000b2003200041016a360200200420006a41003a00000c1a0b200241013a001402400240200628020020032802002200460d00200128020021040c010b200041016a22042000490d1c200041017422052004200520044b1b22054100480d1c0240024020000d002005102a21040c010b200128020020002005102e21040b2004450d1b20012004360200200141046a2005360200200141086a28020021000b2003200041016a360200200420006a41013a00000c190b200241023a001402400240200628020020032802002200460d00200128020021040c010b200041016a22042000490d1b200041017422052004200520044b1b22054100480d1b0240024020000d002005102a21040c010b200128020020002005102e21040b2004450d1a20012004360200200141046a2005360200200141086a28020021000b2003200041016a360200200420006a41023a00000c180b200241083a001402400240200628020020032802002203460d00200128020021040c010b200341016a22042003490d1a200341017422052004200520044b1b22054100480d1a0240024020030d002005102a21040c010b200128020020032005102e21040b2004450d1920012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41083a00002000410c6a20011088010c170b200241093a001402400240200628020020032802002203460d00200128020021040c010b200341016a22042003490d19200341017422052004200520044b1b22054100480d190240024020030d002005102a21040c010b200128020020032005102e21040b2004450d1820012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41093a00002000410c6a20011089010c160b2002410a3a001402400240200628020020032802002200460d00200128020021040c010b200041016a22042000490d18200041017422052004200520044b1b22054100480d180240024020000d002005102a21040c010b200128020020002005102e21040b2004450d1720012004360200200141046a2005360200200141086a28020021000b2003200041016a360200200420006a410a3a00000c150b2002410b3a001402400240200628020020032802002200460d00200128020021040c010b200041016a22042000490d17200041017422052004200520044b1b22054100480d170240024020000d002005102a21040c010b200128020020002005102e21040b2004450d1620012004360200200141046a2005360200200141086a28020021000b2003200041016a360200200420006a410b3a00000c140b2002410c3a001402400240200628020020032802002203460d00200128020021040c010b200341016a22042003490d16200341017422052004200520044b1b22054100480d160240024020030d002005102a21040c010b200128020020032005102e21040b2004450d1520012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a410c3a0000200028020c2103200041146a2802002200200110672000450d1320004105742100034020032001109101200341206a2103200041606a22000d000c140b0b2002410d3a001402400240200628020020032802002200460d00200128020021030c010b200041016a22032000490d15200041017422042003200420034b1b22044100480d150240024020000d002004102a21030c010b200128020020002004102e21030b2003450d1420012003360200200141046a2004360200200141086a28020021000b200141086a200041016a360200200320006a410d3a0000200541016a20011091010c120b2002410e3a001402400240200628020020032802002200460d00200128020021040c010b200041016a22042000490d14200041017422052004200520044b1b22054100480d140240024020000d002005102a21040c010b200128020020002005102e21040b2004450d1320012004360200200141046a2005360200200141086a28020021000b2003200041016a360200200420006a410e3a00000c110b2002410f3a001402400240200628020020032802002204460d00200128020021050c010b200441016a22052004490d132004410174220a2005200a20054b1b220a4100480d130240024020040d00200a102a21050c010b20012802002004200a102e21050b2005450d1220012005360200200141046a200a360200200141086a28020021040b2003200441016a360200200520046a410f3a0000200028020c210a0240024020062802002205200328020022046b4104490d00200128020021050c010b200441046a22092004490d13200541017422042009200420094b1b22044100480d130240024020050d002004102a21050c010b200128020020052004102e21050b2005450d1220012005360200200141046a2004360200200141086a28020021040b200141086a2208200441046a360200200520046a200a36000020002802102104200041186a2802002200200110672000450d102000410274210a0340200428020021090240024020062802002205200328020022006b4104490d00200128020021050c010b200041046a220b2000490d1420054101742200200b2000200b4b1b22004100480d140240024020050d002000102a21050c010b200128020020052000102e21050b2005450d1320012005360200200141046a2000360200200828020021000b200441046a21042003200041046a360200200520006a2009360000200a417c6a220a0d000c110b0b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d12200341017422052004200520044b1b22054100480d120240024020030d002005102a21040c010b200128020020032005102e21040b2004450d1120012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41083a000002400240200141046a28020020052802002203460d00200128020021040c010b200341016a22042003490d12200341017422052004200520044b1b22054100480d120240024020030d002005102a21040c010b200128020020032005102e21040b2004450d1120012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41003a0000200041106a2001109101200041306a2001109101200041d0006a2001109101200041f0006a2001109101200028020421062000410c6a28020022002001106702400240200141046a2802002204200528020022036b2000490d00200128020021040c010b200320006a22052003490d12200441017422032005200320054b1b22034100480d120240024020040d002003102a21040c010b200128020020042003102e21040b2004450d1120012004360200200141046a2003360200200141086a28020021030b200141086a200320006a360200200420036a2006200010db051a0c0f0b02400240200141046a2206280200200141086a22042802002203460d00200128020021050c010b200341016a22052003490d112003410174220a2005200a20054b1b220a4100480d110240024020030d00200a102a21050c010b20012802002003200a102e21050b2005450d1020012005360200200141046a200a360200200141086a28020021030b2004200341016a360200200520036a41093a0000200041086a22052d0000417f6a220341144b0d0e02400240024002400240024002400240024002400240024002400240024002400240024002400240024020030e15000102030405060708090a0b0c0d0e0f1011121314000b02400240200628020020042802002203460d00200128020021040c010b200341016a22042003490d25200341017422062004200620044b1b22064100480d250240024020030d002006102a21040c010b200128020020032006102e21040b2004450d2420012004360200200141046a2006360200200141086a28020021030b200141086a200341016a360200200420036a41003a000020022001360200200541016a20021094022002200041306a36020020022001108a010c220b02400240200628020020042802002203460d00200128020021040c010b200341016a22042003490d24200341017422052004200520044b1b22054100480d240240024020030d002005102a21040c010b200128020020032005102e21040b2004450d2320012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41013a00002000410c6a20011089010c210b02400240200628020020042802002203460d00200128020021060c010b200341016a22062003490d232003410174220a2006200a20064b1b220a4100480d230240024020030d00200a102a21060c010b20012802002003200a102e21060b2006450d2220012006360200200141046a200a360200200141086a28020021030b200141086a220a200341016a360200200620036a41023a00002000410c6a200110890120052d00012106200541026a2d0000210502400240200141046a280200200a2802002200460d00200128020021030c010b200041016a22032000490d232000410174220a2003200a20034b1b220a4100480d230240024020000d00200a102a21030c010b20012802002000200a102e21030b2003450d2220012003360200200141046a200a360200200141086a28020021000b2004200041016a360200200320006a20064100474107742005723a00000c200b02400240200628020020042802002203460d00200128020021060c010b200341016a22062003490d222003410174220a2006200a20064b1b220a4100480d220240024020030d00200a102a21060c010b20012802002003200a102e21060b2006450d2120012006360200200141046a200a360200200141086a28020021030b200141086a220a200341016a360200200620036a41033a00002000410c6a200110890120052d00012106200541026a2d0000210502400240200141046a280200200a2802002200460d00200128020021030c010b200041016a22032000490d222000410174220a2003200a20034b1b220a4100480d220240024020000d00200a102a21030c010b20012802002000200a102e21030b2003450d2120012003360200200141046a200a360200200141086a28020021000b2004200041016a360200200320006a20064100474107742005723a00000c1f0b02400240200628020020042802002203460d00200128020021050c010b200341016a22052003490d212003410174220a2005200a20054b1b220a4100480d210240024020030d00200a102a21050c010b20012802002003200a102e21050b2005450d2020012005360200200141046a200a360200200141086a28020021030b2004200341016a360200200520036a41043a0000200028020c21050240024020062802002203200428020022006b4104490d00200128020021030c010b200041046a22062000490d21200341017422002006200020064b1b22004100480d210240024020030d002000102a21030c010b200128020020032000102e21030b2003450d2020012003360200200141046a2000360200200141086a28020021000b2004200041046a360200200320006a20053600000c1e0b02400240200628020020042802002200460d00200128020021030c010b200041016a22032000490d20200041017422042003200420034b1b22044100480d200240024020000d002004102a21030c010b200128020020002004102e21030b2003450d1f20012003360200200141046a2004360200200141086a28020021000b200141086a200041016a360200200320006a41053a000020022001360200200541016a20021094020c1d0b02400240200628020020042802002200460d00200128020021030c010b200041016a22032000490d1f200041017422042003200420034b1b22044100480d1f0240024020000d002004102a21030c010b200128020020002004102e21030b2003450d1e20012003360200200141046a2004360200200141086a28020021000b200141086a200041016a360200200320006a41063a000020022001360200200541016a20021094020c1c0b02400240200628020020042802002200460d00200128020021030c010b200041016a22032000490d1e200041017422042003200420034b1b22044100480d1e0240024020000d002004102a21030c010b200128020020002004102e21030b2003450d1d20012003360200200141046a2004360200200141086a28020021000b200141086a200041016a360200200320006a41073a000020022001360200200541016a20021094020c1b0b02400240200628020020042802002203460d002001280200210a0c010b200341016a220a2003490d1d20034101742209200a2009200a4b1b22094100480d1d0240024020030d002009102a210a0c010b200128020020032009102e210a0b200a450d1c2001200a360200200141046a2009360200200141086a28020021030b200141086a2209200341016a360200200a20036a41083a000020022001360200200541016a2002109402200028022c210a02400240200141046a2802002205200928020022036b4104490d00200128020021050c010b200341046a22092003490d1d200541017422032009200320094b1b22034100480d1d0240024020050d002003102a21050c010b200128020020052003102e21050b2005450d1c20012005360200200141046a2003360200200141086a28020021030b2004200341046a360200200520036a200a360000200028023021050240024020062802002203200428020022006b4104490d00200128020021030c010b200041046a22062000490d1d200341017422002006200020064b1b22004100480d1d0240024020030d002000102a21030c010b200128020020032000102e21030b2003450d1c20012003360200200141046a2000360200200141086a28020021000b2004200041046a360200200320006a20053600000c1a0b02400240200628020020042802002200460d00200128020021030c010b200041016a22032000490d1c200041017422042003200420034b1b22044100480d1c0240024020000d002004102a21030c010b200128020020002004102e21030b2003450d1b20012003360200200141046a2004360200200141086a28020021000b200141086a200041016a360200200320006a41093a000020022001360200200541016a20021094020c190b02400240200628020020042802002203460d00200128020021040c010b200341016a22042003490d1b200341017422052004200520044b1b22054100480d1b0240024020030d002005102a21040c010b200128020020032005102e21040b2004450d1a20012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a410a3a00002000410c6a20011089010c180b02400240200628020020042802002203460d00200128020021050c010b200341016a22052003490d1a2003410174220a2005200a20054b1b220a4100480d1a0240024020030d00200a102a21050c010b20012802002003200a102e21050b2005450d1920012005360200200141046a200a360200200141086a28020021030b2004200341016a360200200520036a410b3a0000200028020c21050240024020062802002203200428020022006b4104490d00200128020021030c010b200041046a22062000490d1c200341017422002006200020064b1b22004100480d1c0240024020030d002000102a21030c010b200128020020032000102e21030b2003450d1b20012003360200200141046a2000360200200141086a28020021000b2004200041046a360200200320006a20053600000c170b02400240200628020020042802002200460d00200128020021030c010b200041016a22032000490d1b200041017422042003200420034b1b22044100480d1b0240024020000d002004102a21030c010b200128020020002004102e21030b2003450d1a20012003360200200141046a2004360200200141086a28020021000b200141086a200041016a360200200320006a410c3a0000200541016a20011091010c160b02400240200628020020042802002200460d00200128020021030c010b200041016a22032000490d1a200041017422052003200520034b1b22054100480d1a0240024020000d002005102a21030c010b200128020020002005102e21030b2003450d1920012003360200200141046a2005360200200141086a28020021000b2004200041016a360200200320006a410d3a00000c150b02400240200628020020042802002200460d00200128020021030c010b200041016a22032000490d19200041017422042003200420034b1b22044100480d190240024020000d002004102a21030c010b200128020020002004102e21030b2003450d1820012003360200200141046a2004360200200141086a28020021000b200141086a200041016a360200200320006a410e3a0000200541016a20011091010c140b02400240200628020020042802002200460d00200128020021030c010b200041016a22032000490d182000410174220a2003200a20034b1b220a4100480d180240024020000d00200a102a21030c010b20012802002000200a102e21030b2003450d1720012003360200200141046a200a360200200141086a28020021000b200141086a200041016a360200200320006a410f3a0000200541016a200110910120052d0021220041064b0d130240024002400240024002400240024020000e0700010203040506000b410021030c060b410121030c050b410221030c040b410321030c030b410421030c020b410521030c010b410621030b200220033a001402400240200628020020042802002200460d00200128020021050c010b200041016a22052000490d18200041017422062005200620054b1b22064100480d180240024020000d002006102a21050c010b200128020020002006102e21050b2005450d1720012005360200200141046a2006360200200141086a28020021000b2004200041016a360200200520006a20033a00000c130b02400240200628020020042802002200460d00200128020021030c010b200041016a22032000490d17200041017422052003200520034b1b22054100480d170240024020000d002005102a21030c010b200128020020002005102e21030b2003450d1620012003360200200141046a2005360200200141086a28020021000b2004200041016a360200200320006a41103a00000c120b02400240200628020020042802002200460d00200128020021030c010b200041016a22032000490d16200041017422052003200520034b1b22054100480d160240024020000d002005102a21030c010b200128020020002005102e21030b2003450d1520012003360200200141046a2005360200200141086a28020021000b2004200041016a360200200320006a41113a00000c110b02400240200628020020042802002203460d00200128020021050c010b200341016a22052003490d15200341017422062005200620054b1b22064100480d150240024020030d002006102a21050c010b200128020020032006102e21050b2005450d1420012005360200200141046a2006360200200141086a28020021030b200141086a2206200341016a360200200520036a41123a0000200028020c210a200041146a28020022002001106702400240200141046a2802002205200628020022036b2000490d00200128020021050c010b200320006a22062003490d15200541017422032006200320064b1b22034100480d150240024020050d002003102a21050c010b200128020020052003102e21050b2005450d1420012005360200200141046a2003360200200141086a28020021030b2004200320006a360200200520036a200a200010db051a0c100b02400240200628020020042802002203460d00200128020021050c010b200341016a22052003490d14200341017422062005200620054b1b22064100480d140240024020030d002006102a21050c010b200128020020032006102e21050b2005450d1320012005360200200141046a2006360200200141086a28020021030b200141086a2206200341016a360200200520036a41133a0000200028020c210a200041146a28020022002001106702400240200141046a2802002205200628020022036b2000490d00200128020021050c010b200320006a22062003490d14200541017422032006200320064b1b22034100480d140240024020050d002003102a21050c010b200128020020052003102e21050b2005450d1320012005360200200141046a2003360200200141086a28020021030b2004200320006a360200200520036a200a200010db051a0c0f0b02400240200628020020042802002200460d00200128020021030c010b200041016a22032000490d13200041017422042003200420034b1b22044100480d130240024020000d002004102a21030c010b200128020020002004102e21030b2003450d1220012003360200200141046a2004360200200141086a28020021000b200141086a200041016a360200200320006a41143a000020022001360200200541016a20021094020c0e0b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d12200341017422052004200520044b1b22054100480d120240024020030d002005102a21040c010b200128020020032005102e21040b2004450d1120012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a410a3a0000200041046a200110e8020c0d0b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d11200341017422052004200520044b1b22054100480d110240024020030d002005102a21040c010b200128020020032005102e21040b2004450d1020012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a410b3a0000200041046a200110e8020c0c0b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d10200341017422052004200520044b1b22054100480d100240024020030d002005102a21040c010b200128020020032005102e21040b2004450d0f20012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a410c3a00002000280208417f6a220341054b0d0b02400240024002400240024020030e06000102030405000b200241003a001402400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d15200341017422052004200520044b1b22054100480d150240024020030d002005102a21040c010b200128020020032005102e21040b2004450d1420012004360200200141046a2005360200200141086a28020021030b200041186a2105200141086a200341016a360200200420036a41003a0000200028020c2103200041146a28020022002001106702402000450d0020004105742100034020032001109101200341206a2103200041606a22000d000b0b2002200536020020022001108a010c100b200241013a001402400240200141046a280200200141086a2802002200460d00200128020021030c010b200041016a22032000490d14200041017422042003200420034b1b22044100480d140240024020000d002004102a21030c010b200128020020002004102e21030b2003450d1320012003360200200141046a2004360200200141086a28020021000b200141086a200041016a360200200320006a41013a00000c0f0b200241023a001402400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d13200341017422052004200520044b1b22054100480d130240024020030d002005102a21040c010b200128020020032005102e21040b2004450d1220012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41023a00002000410c6a20011088010c0e0b200241033a001402400240200141046a280200200141086a2802002200460d00200128020021030c010b200041016a22032000490d12200041017422042003200420034b1b22044100480d120240024020000d002004102a21030c010b200128020020002004102e21030b2003450d1120012003360200200141046a2004360200200141086a28020021000b200141086a200041016a360200200320006a41033a00000c0d0b200141086a2802002100200241043a0014024002402000200141046a280200460d00200128020021030c010b200041016a22032000490d11200041017422042003200420034b1b22044100480d110240024020000d002004102a21030c010b200128020020002004102e21030b2003450d1020012003360200200141046a2004360200200141086a28020021000b200141086a200041016a360200200320006a41043a00000c0c0b200241053a001402400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d10200341017422052004200520044b1b22054100480d100240024020030d002005102a21040c010b200128020020032005102e21040b2004450d0f20012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41053a00002000410c6a20011088010c0b0b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d0f200341017422052004200520044b1b22054100480d0f0240024020030d002005102a21040c010b200128020020032005102e21040b2004450d0e20012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a410d3a0000200041046a22032d0000417f6a220441044b0d0a0240024002400240024020040e050001020304000b200241003a001402400240200141046a280200200141086a2802002200460d00200128020021040c010b200041016a22042000490d13200041017422052004200520044b1b22054100480d130240024020000d002005102a21040c010b200128020020002005102e21040b2004450d1220012004360200200141046a2005360200200141086a28020021000b200141086a200041016a360200200420006a41003a0000200341016a20011091010c0e0b200141086a2802002100200141046a2802002104200241013a00140240024020042000460d00200128020021040c010b200041016a22042000490d12200041017422052004200520044b1b22054100480d120240024020000d002005102a21040c010b200128020020002005102e21040b2004450d1120012004360200200141046a2005360200200141086a28020021000b200141086a200041016a360200200420006a41013a0000200341016a20011091010c0d0b200241023a001402400240200141046a280200200141086a2802002200460d00200128020021040c010b200041016a22042000490d11200041017422052004200520044b1b22054100480d110240024020000d002005102a21040c010b200128020020002005102e21040b2004450d1020012004360200200141046a2005360200200141086a28020021000b200141086a200041016a360200200420006a41023a0000200341016a2001109101200341216a20011091010c0c0b200241033a001402400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d10200341017422052004200520044b1b22054100480d100240024020030d002005102a21040c010b200128020020032005102e21040b2004450d0f20012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41033a000020002802082103200041106a2802002200200110672000450d0b20004105742100034020032001109101200341206a2103200041606a22000d000c0c0b0b200141086a2802002100200241043a0014024002402000200141046a280200460d00200128020021040c010b200041016a22042000490d0f200041017422052004200520044b1b22054100480d0f0240024020000d002005102a21040c010b200128020020002005102e21040b2004450d0e20012004360200200141046a2005360200200141086a28020021000b200141086a200041016a360200200420006a41043a0000200341016a20011091010c0a0b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d0e200341017422052004200520044b1b22054100480d0e0240024020030d002005102a21040c010b200128020020032005102e21040b2004450d0d20012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a410e3a000002400240200141046a28020020052802002203460d00200128020021040c010b200341016a22042003490d0e200341017422052004200520044b1b22054100480d0e0240024020030d002005102a21040c010b200128020020032005102e21040b2004450d0d20012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41003a0000200041046a20011089010c090b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d0d200341017422052004200520044b1b22054100480d0d0240024020030d002005102a21040c010b200128020020032005102e21040b2004450d0c20012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a410f3a000002400240200141046a28020020052802002203460d00200128020021040c010b200341016a22042003490d0d200341017422052004200520044b1b22054100480d0d0240024020030d002005102a21040c010b200128020020032005102e21040b2004450d0c20012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41003a0000200028020421062000410c6a28020022002001106702400240200141046a2802002204200528020022036b2000490d00200128020021040c010b200320006a22052003490d0d200441017422032005200320054b1b22034100480d0d0240024020040d002003102a21040c010b200128020020042003102e21040b2004450d0c20012004360200200141046a2003360200200141086a28020021030b200141086a200320006a360200200420036a2006200010db051a0c080b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d0c200341017422052004200520044b1b22054100480d0c0240024020030d002005102a21040c010b200128020020032005102e21040b2004450d0b20012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41103a00002000280208417f6a220341024b0d0702400240024020030e03000102000b200241003a001402400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d0e200341017422052004200520044b1b22054100480d0e0240024020030d002005102a21040c010b200128020020032005102e21040b2004450d0d20012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41003a00002002200041306a36020020022001108a012000410c6a20011088010c090b200241013a001402400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d0d200341017422052004200520044b1b22054100480d0d0240024020030d002005102a21040c010b200128020020032005102e21040b2004450d0c20012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41013a00002000410c6a20011089010c080b200241023a001402400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d0c200341017422052004200520044b1b22054100480d0c0240024020030d002005102a21040c010b200128020020032005102e21040b2004450d0b20012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41023a00002000410c6a20011089010c070b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d0b200341017422052004200520044b1b22054100480d0b0240024020030d002005102a21040c010b200128020020032005102e21040b2004450d0a20012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41113a0000200041086a22042d0000417f6a220341044b0d060240024002400240024020030e050001020304000b200241003a001402400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d0f200341017422052004200520044b1b22054100480d0f0240024020030d002005102a21040c010b200128020020032005102e21040b2004450d0e20012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41003a0000200041106a200110e9020c0a0b200241013a001402400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d0e200341017422052004200520044b1b22054100480d0e0240024020030d002005102a21040c010b200128020020032005102e21040b2004450d0d20012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41013a0000200041186a200110c302200028020c2106200041146a28020022002001106702400240200141046a2802002204200528020022036b2000490d00200128020021040c010b200320006a22052003490d0e200441017422032005200320054b1b22034100480d0e0240024020040d002003102a21040c010b200128020020042003102e21040b2004450d0d20012004360200200141046a2003360200200141086a28020021030b200141086a200320006a360200200420036a2006200010db051a0c090b200241023a001402400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d0d200341017422052004200520044b1b22054100480d0d0240024020030d002005102a21040c010b200128020020032005102e21040b2004450d0c20012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41023a00002000410c6a20011088012002200041c0006a36020020022001108a01200041d0006a200110c30220002802302106200041386a28020022002001106702400240200141046a2802002204200528020022036b2000490d00200128020021040c010b200320006a22052003490d0d200441017422032005200320054b1b22034100480d0d0240024020040d002003102a21040c010b200128020020042003102e21040b2004450d0c20012004360200200141046a2003360200200141086a28020021030b200141086a200320006a360200200420036a2006200010db051a0c080b200241033a001402400240200141046a280200200141086a2802002203460d00200128020021050c010b200341016a22052003490d0c200341017422062005200620054b1b22064100480d0c0240024020030d002006102a21050c010b200128020020032006102e21050b2005450d0b20012005360200200141046a2006360200200141086a28020021030b200141086a2206200341016a360200200520036a41033a00002002200041386a36020020022001108a01200041c8006a200110c30220022001360200200441016a2002109402200028022c2105200041346a28020022002001106702400240200141046a2802002204200628020022036b2000490d00200128020021040c010b200320006a22062003490d0c200441017422032006200320064b1b22034100480d0c0240024020040d002003102a21040c010b200128020020042003102e21040b2004450d0b20012004360200200141046a2003360200200141086a28020021030b200141086a200320006a360200200420036a2005200010db051a0c070b200141086a2802002100200241043a0014024002402000200141046a280200460d00200128020021030c010b200041016a22032000490d0b200041017422052003200520034b1b22054100480d0b0240024020000d002005102a21030c010b200128020020002005102e21030b2003450d0a20012003360200200141046a2005360200200141086a28020021000b200141086a2205200041016a360200200320006a41043a0000200441016a2001109101024020042d00214101460d00200241003a001402400240200141046a28020020052802002200460d00200128020021030c010b200041016a22032000490d0c200041017422042003200420034b1b22044100480d0c0240024020000d002004102a21030c010b200128020020002004102e21030b2003450d0b20012003360200200141046a2004360200200141086a28020021000b200141086a200041016a360200200320006a41003a00000c070b200241013a001402400240200141046a28020020052802002200460d00200128020021030c010b200041016a22032000490d0b200041017422052003200520034b1b22054100480d0b0240024020000d002005102a21030c010b200128020020002005102e21030b2003450d0a20012003360200200141046a2005360200200141086a28020021000b200141086a200041016a360200200320006a41013a0000200441226a20011091010c060b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d0a200341017422052004200520044b1b22054100480d0a0240024020030d002005102a21040c010b200128020020032005102e21040b2004450d0920012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41123a00002000280204417f6a220341024b0d0502400240024020030e03000102000b200241003a001402400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d0c200341017422052004200520044b1b22054100480d0c0240024020030d002005102a21040c010b200128020020032005102e21040b2004450d0b20012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41003a000020002802082001108b010c070b200241013a001402400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d0b200341017422052004200520044b1b22054100480d0b0240024020030d002005102a21040c010b200128020020032005102e21040b2004450d0a20012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41013a0000200041086a20011088010c060b200241023a001402400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d0a200341017422052004200520044b1b22054100480d0a0240024020030d002005102a21040c010b200128020020032005102e21040b2004450d0920012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41023a0000200041086a2001108801200028022c2001108b010c050b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d09200341017422052004200520044b1b22054100480d090240024020030d002005102a21040c010b200128020020032005102e21040b2004450d0820012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41133a000002400240200141046a28020020052802002203460d00200128020021040c010b200341016a22042003490d09200341017422052004200520044b1b22054100480d090240024020030d002005102a21040c010b200128020020032005102e21040b2004450d0820012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41003a00002000280204210602400240200141046a2802002204200528020022036b4104490d00200128020021040c010b200341046a22052003490d09200441017422032005200320054b1b22034100480d090240024020040d002003102a21040c010b200128020020042003102e21040b2004450d0820012004360200200141046a2003360200200141086a28020021030b200141086a220a200341046a360200200420036a2006360000200041086a2802002106200041106a28020022032001106702400240200141046a2802002205200a28020022046b2003490d00200128020021050c010b200420036a220a2004490d0920054101742204200a2004200a4b1b22044100480d090240024020050d002004102a21050c010b200128020020052004102e21050b2005450d0820012005360200200141046a2004360200200141086a28020021040b200141086a220a200420036a360200200520046a2006200310db051a200041146a28020021052000411c6a28020022032001106702402003450d0020052003410c6c6a210c200141046a210b034020052802002109200541086a28020022032001106702400240200b2802002206200a28020022046b2003490d00200128020021060c010b200420036a22082004490d0b200641017422042008200420084b1b22044100480d0b0240024020060d002004102a21060c010b200128020020062004102e21060b2006450d0a20012006360200200b2004360200200a28020021040b200a200420036a360200200620046a2009200310db051a2005410c6a2205200c470d000b0b200041206a280200210502400240200141046a2802002204200a28020022036b4104490d00200128020021040c010b200341046a22062003490d09200441017422032006200320064b1b22034100480d090240024020040d002003102a21040c010b200128020020042003102e21040b2004450d0820012004360200200141046a2003360200200141086a28020021030b200141086a2206200341046a360200200420036a2005360000200041246a280200210a02400240200141046a2802002204200628020022036b4104490d00200128020021040c010b200341046a22052003490d09200441017422032005200320054b1b22034100480d090240024020040d002003102a21040c010b200128020020042003102e21040b2004450d0820012004360200200141046a2003360200200141086a28020021030b200141086a2205200341046a360200200420036a200a360000200041286a210b4100210303402002200b20036a2d000022063a001402400240200141046a220a28020020052802002200460d00200128020021040c010b200041016a22042000490d0a200041017422092004200920044b1b22094100480d0a0240024020000d002009102a21040c010b200128020020002009102e21040b2004450d0920012004360200200a2009360200200528020021000b2005200041016a360200200420006a20063a0000200341016a220341c000470d000c050b0b02400240200141046a280200200141086a2802002200460d00200128020021030c010b200041016a22032000490d08200041017422042003200420034b1b22044100480d080240024020000d002004102a21030c010b200128020020002004102e21030b2003450d0720012003360200200141046a2004360200200141086a28020021000b200141086a200041016a360200200320006a41143a0000200110e6020c030b02400240200141046a280200200141086a2802002200460d00200128020021030c010b200041016a22032000490d07200041017422042003200420034b1b22044100480d070240024020000d002004102a21030c010b200128020020002004102e21030b2003450d0620012003360200200141046a2004360200200141086a28020021000b200141086a200041016a360200200320006a41153a0000200110e6020c020b02400240200141046a280200200141086a2802002200460d00200128020021030c010b200041016a22032000490d06200041017422042003200420034b1b22044100480d060240024020000d002004102a21030c010b200128020020002004102e21030b2003450d0520012003360200200141046a2004360200200141086a28020021000b200141086a200041016a360200200320006a41163a0000200110e6020c010b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d05200341017422052004200520044b1b22054100480d050240024020030d002005102a21040c010b200128020020032005102e21040b2004450d0420012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41173a00002000280204417f6a220341034b0d00024002400240024020030e0400010203000b200241003a001402400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d08200341017422052004200520044b1b22054100480d080240024020030d002005102a21040c010b200128020020032005102e21040b2004450d0720012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41003a000020002802082106200041106a28020022002001106702400240200141046a2802002204200528020022036b2000490d00200128020021040c010b200320006a22052003490d08200441017422032005200320054b1b22034100480d080240024020040d002003102a21040c010b200128020020042003102e21040b2004450d0720012004360200200141046a2003360200200141086a28020021030b200141086a200320006a360200200420036a2006200010db051a0c030b200241013a001402400240200141046a280200200141086a2802002200460d00200128020021030c010b200041016a22032000490d07200041017422042003200420034b1b22044100480d070240024020000d002004102a21030c010b200128020020002004102e21030b2003450d0620012003360200200141046a2004360200200141086a28020021000b200141086a200041016a360200200320006a41013a00000c020b200241023a001402400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d06200341017422052004200520044b1b22054100480d060240024020030d002005102a21040c010b200128020020032005102e21040b2004450d0520012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41023a0000200041086a20011088010c010b200241033a001402400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d05200341017422052004200520044b1b22054100480d050240024020030d002005102a21040c010b200128020020032005102e21040b2004450d0420012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41033a0000200041086a2001108801200028022c2106200041346a28020022002001106702400240200141046a2802002204200528020022036b2000490d00200128020021040c010b200320006a22052003490d05200441017422032005200320054b1b22034100480d050240024020040d002003102a21040c010b200128020020042003102e21040b2004450d0420012004360200200141046a2003360200200141086a28020021030b200141086a200320006a360200200420036a2006200010db051a0b200241206a24000f0b1033000b1035000b1033000b1035000ba67b05057f037e077f037e037f230041a0036b22012400200141e0006a41186a4200370300200141e0006a41106a22024200370300200141e0006a41086a220342003703002001420037036020014180026a41086a220441e0d9c500ad4280808080f001841002220541086a29000037030020012005290000370380022005102c20032004290300370300200120012903800222063703a00220012006370360200441beb9c000ad4280808080d001841002220541086a29000037030020012005290000370380022005102c20022001290380022206370300200141f0026a41086a2003290300370300200141f0026a41106a2006370300200141f0026a41186a2004290300370300200120063703a002200120012903603703f002200141203602e4012001200141f0026a3602e00120014180026a200141f0026aad2207428080808080048422081003108d010240024020012802800222030d0041022104200141023602e4020c010b20012802840221052001200428020022043602f401200120033602f0010240024020044104490d002001200341046a3602f00120012004417c6a22093602f40120094104490d00200328000021092001200441786a3602f4012001200341086a3602f0012003280004210a200141e0006a200141f0016a10742001280260220b450d002001290264210641002104200141003a00a00202400240024020012802f401220c450d002001200c417f6a220d3602f401200120012802f001220e41016a3602f001200e2d00004101460d010b0c010b200d4104490d002001200c417b6a3602f4012001200e41056a3602f001200e280001210f410121040b2001200f3602e802200120063702dc022001200b3602d8022001200a3602d402200120093602d0020c010b200141003602b802200142013703b0022001410b3602a4022001200141e0016a3602a0022001200141b0026a36029003200141f4006a410136020020014201370264200141d0b0c2003602602001200141a0026a36027020014190036a41c49ac500200141e0006a10391a20013502b80242208620013502b002841004024020012802b402450d0020012802b002102c0b410221040b200120043602e4022005450d002003102c0b200141e0006a41106a2203200141d0026a41106a2205280200360200200141e0006a41086a2209200141d0026a41086a220a290300370300200120012903d002370360024002400240024002400240024002400240024020044102460d00200141b0026a41106a20032802002203360200200141b0026a41086a200929030022103703002001200129036022063703b00220052003360200200a2010370300200141e8026a200f360200200120063703d002200120043602e40202402006a722032000470d000240024020044101460d00200141e0026a280200220fad42287e2206422088a70d042006a72203417f4c0d0420012802d802210420012802d402210b0240024020030d004108210a0c010b2003102a220a450d090b410021050240200f450d00200f41286c210941002105200a21030340200441086a2903002106200441106a2903002110200441186a290300211120042903002112200341206a200441206a290300370300200341186a2011370300200341106a2010370300200341086a200637030020032012370300200341286a2103200541016a2105200441286a2104200941586a22090d000b0b20014180036a200b360200200141f0026a410c6a2005360200200141f0026a41086a200f3602002001200a3602f402200141003602f002200141e0006a200141f0026a108f012001418b026a200141e0006a41086a2802003600002001200129036037008302200141e0006a410c6a20014187026a290000370000200141c6a4b9da04360061200141023a00602001200129008002370065200141e0006a109001200f450d01200a102c0c010b200141e0026a280200220aad42287e2206422088a70d032006a72203417f4c0d0320012802d802210420012802d402210c0240024020030d004108210b0c010b2003102a220b450d080b02400240200a0d00410021050c010b200a41286c210941002105200b21030340200441086a2903002106200441106a2903002110200441186a290300211120042903002112200341206a200441206a290300370300200341186a2011370300200341106a2010370300200341086a200637030020032012370300200341286a2103200541016a2105200441286a2104200941586a22090d000b0b20014184036a200c36020020014180036a2005360200200141f0026a410c6a200a360200200141f0026a41086a200b3602002001200f3602f402200141013602f002200141e0006a200141f0026a108f012001418b026a200141e0006a41086a2802003600002001200129036037008302200141e0006a410c6a20014187026a290000370000200141c6a4b9da04360061200141023a00602001200129008002370065200141e0006a109001200a450d00200b102c0b20012802d00221030b024020012802d40220036a2000470d004101102a2204450d06200142013702642001200436026020014101360268200141013a00a002200441013a000020012802d8022103200141e0026a2802002204200141e0006a106702402004450d002003200441286c6a210f03402003200141e0006a109101200341206a29030021060240024020012802642205200128026822046b4108490d00200128026021050c010b200441086a22092004490d0d200541017422042009200420094b1b22044100480d0d0240024020050d002004102a21050c010b200128026020052004102e21050b2005450d092001200436026420012005360260200128026821040b2001200441086a360268200520046a2006370000200f200341286a2203470d000b0b200141d8026a21032001280264210441b5b5c000ad4280808080c00284200135026842208620012802602205ad84100102402004450d002005102c0b200141e0006a41086a22042003290000370300200141e0006a41106a2205200341086a280000360200200141003602642001410b3a006041014100200141e0006a109201200141e0006a41186a220f420037030020054200370300200442003703002001420037036020014180026a41086a220341e0d9c500ad4280808080f001841002220941086a29000037030020012009290000370380022009102c20042003290300370300200120012903800222063703a00220012006370360200341beb9c000ad4280808080d001841002220941086a29000037030020012009290000370380022009102c200141a0026a41086a20032903002206370300200120012903800222103703a00220022010370000200241086a2006370000200141f0026a41086a2004290300370300200141f0026a41106a2005290300370300200141f0026a41186a200f290300370300200120012903603703f002200810050c010b200141dc026a280200450d0020012802d802102c0b200141e0006a41186a22094200370300200141e0006a41106a220f4200370300200141e0006a41086a220342003703002001420037036020014180026a41086a220441e0d9c500ad4280808080f001841002220541086a29000037030020012005290000370380022005102c20032004290300370300200120012903800222063703a00220012006370360200441cbb9c000ad4280808080d000841002220541086a29000037030020012005290000370380022005102c200141a0026a41086a20042903002206370300200120012903800222103703a00220022010370000200241086a2006370000200141f0026a41086a2003290300370300200141f0026a41106a200f290300370300200141f0026a41186a2009290300370300200120012903603703f00220014120360284022001200141f0026a36028002200141b0026a20081003108d0120012802b0022204450d03200141b0026a41086a280200210520012802b402210941002103200141003a00a0020240024002402005450d0020042d0000220f41034b0d00024002400240200f0e0405000102050b2005417f6a4108490d0220042900012106410121030c040b410221030c020b2005417f6a4108490d0020042900012106410321030c020b200141003602d802200142013703d0022001410b3602a402200120014180026a3602a0022001200141d0026a3602f001200141f4006a410136020020014201370264200141d0b0c2003602602001200141a0026a360270200141f0016a41c49ac500200141e0006a10391a20013502d80242208620013502d002841004024020012802d402450d0020012802d002102c0b410421030b0b02402009450d002004102c0b2003417f6a220441024b0d0320040e03020301020b103a000b2006422088a7210402402006a722032000470d00200141043602f002200120043602f402200141e0006a200141f0026a108f012001418b026a200141e8006a2802003600002001200129036037008302200141ec006a20014187026a290000370000200141c6a4b9da04360061200141023a00602001200129008002370065200141e0006a1090010b200420036a2000470d01200141003602d002200141e0006a41186a22094200370300200141e0006a41106a220f4200370300200141e0006a41086a220342003703002001420037036020014180026a41086a220441e0d9c500ad4280808080f001841002220541086a29000037030020012005290000370380022005102c20032004290300370300200120012903800222063703a00220012006370360200441cbb9c000ad4280808080d000841002220541086a29000037030020012005290000370380022005102c200141a0026a41086a20042903002206370300200120012903800222103703a00220022010370000200241086a2006370000200141f0026a41086a2003290300370300200141f0026a41106a200f290300370300200141f0026a41186a2009290300370300200120012903603703f002200141e0006a200141d0026a1093012008200135026842208620012802602204ad84100102402001280264450d002004102c0b200141023602642001410b3a006041014100200141e0006a1092010c010b2006422088a7210402402006a722032000470d00200141033602f002200120043602f402200141e0006a200141f0026a108f012001418b026a200141e8006a2802003600002001200129036037008302200141ec006a20014187026a290000370000200141c6a4b9da04360061200141023a00602001200129008002370065200141e0006a1090010b200420036a2000470d00200141023602d002200141e0006a41186a22094200370300200141e0006a41106a220f4200370300200141e0006a41086a220342003703002001420037036020014180026a41086a220441e0d9c500ad4280808080f001841002220541086a29000037030020012005290000370380022005102c20032004290300370300200120012903800222063703a00220012006370360200441cbb9c000ad4280808080d000841002220541086a29000037030020012005290000370380022005102c200141a0026a41086a20042903002206370300200120012903800222103703a00220022010370000200241086a2006370000200141f0026a41086a2003290300370300200141f0026a41106a200f290300370300200141f0026a41186a2009290300370300200120012903603703f002200141e0006a200141d0026a1093012008200135026842208620012802602204ad84100102402001280264450d002004102c0b200141013602642001410b3a006041014100200141e0006a1092010b200141e0006a41186a22054200370300200141e0006a41106a220e4200370300200141e0006a41086a2203420037030020014200370360200141e0016a41086a220441f9e8c500ad428080808090018422101002220941086a290000370300200120092900003703e0012009102c20032004290300370300200120012903e001370360200441de99c500ad4280808080e000841002220941086a290000370300200120092900003703e0012009102c200e20012903e0012206370300200141f0026a41086a220f2003290300370300200141f0026a41106a22022006370300200141f0026a41186a22002004290300370300200120063703d002200120012903603703f002200141d8006a200141f0026a4120109401200128025c210d02402001280258220a4101470d002007428080808080048410050b20054200370300200e42003703002003420037030020014200370360200420101002220941086a290000370300200120092900003703e0012009102c20032004290300370300200120012903e00137036020044183d7c500ad4280808080b001841002220941086a290000370300200120092900003703e0012009102c200141d0026a41086a20042903002206370300200120012903e00122103703d002200e2010370000200e41086a2006370000200f20032903003703002002200e29030037030020002005290300370300200120012903603703f00202400240200141f0026a109501220441ff01714102460d0020044101710d010b4104102a2203450d0120034100360200200141e0006a41186a220f4200370300200141e0006a41106a22024200370300200141e0006a41086a2205420037030020014200370360200141e0016a41086a220441f9e8c500ad42808080809001841002220941086a290000370300200120092900003703e0012009102c20052004290300370300200120012903e001370360200441e499c500ad4280808080b001841002220941086a290000370300200120092900003703e0012009102c200141d0026a41086a20042903002206370300200120012903e00122103703d002200e2010370000200e41086a2006370000200141f0026a41086a2005290300370300200141f0026a41106a2002290300370300200141f0026a41186a200f290300370300200120012903603703f00220014100360268200142013703604101200141e0006a10672003280200210f0240024020012802642209200128026822056b4104490d00200128026021040c010b200541046a22042005490d06200941017422022004200220044b1b22024100480d060240024020090d002002102a21040c010b200128026020092002102e21040b2004450d022001200236026420012004360260200221090b2001200541046a2202360268200420056a200f3600002007428080808080048422062002ad4220862004ad84100102402009450d002004102c0b2003102c4104102a2203450d0120034100360200200141e0006a41186a220f4200370300200141e0006a41106a22024200370300200141e0006a41086a2205420037030020014200370360200141e0016a41086a220441f9e8c500ad42808080809001841002220941086a290000370300200120092900003703e0012009102c20052004290300370300200120012903e001370360200441ec9ac500ad4280808080c001841002220941086a290000370300200120092900003703e0012009102c200141d0026a41086a20042903002210370300200120012903e00122113703d002200e2011370000200e41086a2010370000200141f0026a41086a2005290300370300200141f0026a41106a2002290300370300200141f0026a41186a200f290300370300200120012903603703f00220014100360268200142013703604101200141e0006a10672003280200210f0240024020012802642209200128026822056b4104490d00200128026021040c010b200541046a22042005490d06200941017422022004200220044b1b22024100480d060240024020090d002002102a21040c010b200128026020092002102e21040b2004450d022001200236026420012004360260200221090b2001200541046a2202360268200420056a200f36000020062002ad4220862004ad84100102402009450d002004102c0b2003102c200141e0006a41186a22054200370300200141e0006a41106a22094200370300200141e0006a41086a2203420037030020014200370360200141e0016a41086a220441f9e8c500ad428080808090018422101002220f41086a2900003703002001200f2900003703e001200f102c20032004290300370300200120012903e001370360200441f89ac500ad4280808080e000841002220f41086a2900003703002001200f2900003703e001200f102c200141d0026a41086a220220042903002211370300200120012903e00122123703d002200e2012370000200e41086a22002011370000200141f0026a41086a220b2003290300370300200141f0026a41106a220c2009290300370300200141f0026a41186a22132005290300370300200120012903603703f002200141003602602006200141e0006aad4280808080c00084100120054200370300200942003703002003420037030020014200370360200420101002220f41086a2900003703002001200f2900003703e001200f102c20032004290300370300200120012903e00137036020044183d7c500ad4280808080b001841002220f41086a2900003703002001200f2900003703e001200f102c200220042903002210370300200120012903e00122113703d002200e201137000020002010370000200b2003290300370300200c200929030037030020132005290300370300200120012903603703f002200141013a00a0022006200141a0026aad4280808080108410010b200141e0006a41186a22054200370300200141e0006a41106a22094200370300200141e0006a41086a2203420037030020014200370360200141e0016a41086a220441f9e8c500ad428080808090018422061002220f41086a2900003703002001200f2900003703e001200f102c20032004290300370300200120012903e001370360200441e499c500ad4280808080b001841002220f41086a2900003703002001200f2900003703e001200f102c200141d0026a41086a220220042903002210370300200120012903e00122113703d002200e2011370000200e41086a22002010370000200141f0026a41086a220b2003290300370300200141f0026a41106a220c2009290300370300200141f0026a41186a22142005290300370300200120012903603703f002200141e0006a200141f0026a10960102400240200128026022130d004104211341002115420021110c010b20012902642211422088a721150b20054200370300200942003703002003420037030020014200370360200420061002220f41086a2900003703002001200f2900003703e001200f102c20032004290300370300200120012903e001370360200441ec9ac500ad4280808080c001841002220f41086a2900003703002001200f2900003703e001200f102c200220042903002206370300200120012903e00122103703d002200e201037000020002006370000200b2003290300370300200c200929030037030020142005290300370300200120012903603703f002200141e0006a200141f0026a109601024002402001280260220f450d002001200f3602b00220012902642210422088a7210b0c010b4104210f200141043602b0024100210b420021100b02400240024002400240200a0d002015417f6a220420154f0d01200420154b0d01201320044102746a280200210d0b201541002015419c7f6a22042004201541016a4b1b2214490d012014450d03201320144102746a210c200bad21062013210a0340200a2802002102024002400240024002402006a7220041014b0d004100210420000e020201020b4100210420002103034020042003410176220520046a22092002200f20094102746a280200491b2104200320056b220341014b0d000b0b2002200f200441027422036a2802002205460d022004200220054b6a21040c010b410021040b2001200436026041a49bc500412e200141e0006a41d49bc500103b000b20062004ad580d03200f20036a2203200341046a2004417f7320006a41027410dc051a201042ffffffff0f832000417f6a220bad422086842110200a41046a220a200c460d042006427f7c210620012802b002210f0c000b0b41fe9ac50041261054000b41dafec500411c41acfec5001036000b418ab4c000411d41acfec5001036000b201142ffffffff0f8321060240201520146b2204450d0002402014450d002013201320144102746a200441027410dc051a2010422088a7210b0b20062004ad4220868421060b20012802b002210f41002104024002400240024002400240200b41014b0d00200b0e020201020b200b2103034020042003410176220520046a2209200d200f20094102746a280200491b2104200320056b220341014b0d000b0b0240200d200f20044102746a2802002203460d002004200d20034b6a21040b200b2004490d010b200b2010a7470d02200b41016a2203200b490d07200b41017422052003200520034b1b220341ffffffff03712003470d072003410274220541004e0d010c070b41ecb3c000411e41acfec5001036000b02400240200b0d002005102a210f0c010b200f200b4102742005102e210f0b200f450d012001200f3602b0022003ad21100b200f20044102746a220341046a2003200b20046b41027410dc051a2003200d360200024020064220882211a722032006a7470d00200341016a22042003490d052011a722094101742205200420042005491b220441ffffffff03712004470d05200441027422054100480d050240024020030d002005102a21130c010b201320094102742005102e21130b2013450d012006422088a721032004ad21060b201320034102746a200d3602000240200b41016a220c0d0041e49bc50041c30041acfec5001036000b200c200c41017622044d0d0120012802b002220520044102746a280200210d0240200c4101710d00200c2004417f6a22044d0d03200520044102746a280200200d6a410176210d0b200141e0006a41186a220f4200370300200141e0006a41106a22024200370300200141e0006a41086a2205420037030020014200370360200141e0016a41086a220441f9e8c500ad42808080809001841002220941086a290000370300200120092900003703e0012009102c20052004290300370300200120012903e001370360200441e499c500ad4280808080b001841002220941086a290000370300200120092900003703e0012009102c200141d0026a41086a20042903002211370300200120012903e00122123703d002200e2012370000200e41086a2011370000200141f0026a41086a2005290300370300200141f0026a41106a2002290300370300200141f0026a41186a200f290300370300200120012903603703f0022001410036026820014201370360200341016a2215200141e0006a10670240024020150d00200128026821022001280264210f200128026021030c010b4100200128026822046b2105200341027441046a21002001280264210f2013210903402009280200210a02400240200f20056a4104490d00200128026021030c010b200441046a22032004490d07200f41017422022003200220034b1b22024100480d0702400240200f0d002002102a21030c010b2001280260200f2002102e21030b2003450d0320012002360264200120033602602002210f0b200941046a21092001200441046a2202360268200320046a200a3600002005417c6a2105200221042000417c6a22000d000b0b2006a721042007428080808080048422062002ad4220862003ad8410010240200f450d002003102c0b02402004450d002013102c0b20012802b0022113200141e0006a41186a22094200370300200141e0006a41106a220f4200370300200141e0006a41086a2203420037030020014200370360200141e0016a41086a220441f9e8c500ad42808080809001841002220541086a290000370300200120052900003703e0012005102c20032004290300370300200120012903e001370360200441ec9ac500ad4280808080c001841002220541086a290000370300200120052900003703e0012005102c200141d0026a41086a20042903002211370300200120012903e00122123703d002200e2012370000200e41086a2011370000200141f0026a41086a2003290300370300200141f0026a41106a200f290300370300200141f0026a41186a2009290300370300200120012903603703f0022001420137036020014100360268200c200141e0006a1067200b41027441046a21024100200128026822046b21052010a7210b2001280264210f2013210903402009280200210a02400240200f20056a4104490d00200128026021030c010b200441046a22032004490d06200f41017422002003200020034b1b22004100480d0602400240200f0d002000102a21030c010b2001280260200f2000102e21030b2003450d0220012000360264200120033602602000210f0b200941046a21092001200441046a2200360268200320046a200a3600002005417c6a2105200021042002417c6a22020d000b20062000ad4220862003ad8410010240200f450d002003102c0b0240200b450d002013102c0b200141e0006a41186a22094200370300200141e0006a41106a22034200370300200141e0006a41086a2204420037030020014200370360200141e0016a41086a220541f9e8c500ad42808080809001841002220f41086a2900003703002001200f2900003703e001200f102c20042005290300370300200120012903e001370360200541f89ac500ad4280808080e000841002220f41086a2900003703002001200f2900003703e001200f102c200141d0026a41086a20052903002210370300200120012903e00122113703d002200e2011370000200e41086a2010370000200141f0026a41086a220f2004290300370300200141f0026a41106a22022003290300370300200141f0026a41186a22002009290300370300200120012903603703f0022001200d3602602006200141e0006aad22114280808080c0008410010240201541e500470d002009420037030020034200370300200442003703002001420037036020054191b0c200ad4280808080e000841002220a41086a2900003703002001200a2900003703e001200a102c20042005290300370300200120012903e001370360200541acb0c200ad4280808080e000841002220a41086a2900003703002001200a2900003703e001200a102c200320012903e0012206370300200f20042903003703002002200637030020002005290300370300200120063703d002200120012903603703f002200141d0006a200141f0026a4120109401200d419a086a2001280254410020012802501b4b0d00200141e0006a41186a220c4200370300200141e0006a41106a220e4200370300200141e0006a41086a220a420037030020014200370360200141e0016a41086a220541e0d9c500ad4280808080f001841002220b41086a2900003703002001200b2900003703e001200b102c200a2005290300370300200120012903e001370360200541aeb5c000ad4280808080f000841002220b41086a2900003703002001200b2900003703e001200b102c200141d0026a41086a20052903002206370300200120012903e00122103703d00220032010370000200341086a2006370000200141f0026a41086a200a290300370300200141f0026a41106a200e290300370300200141f0026a41186a200c290300370300200120012903603703f0024108102a2205450d012005200d360004200541e400360000200742808080808004842005ad428080808080018410012005102c0b2009420037030020034200370300200442003703002001420037036020014180026a41086a22054196e0c500ad4280808080f0008422101002220941086a29000037030020012009290000370380022009102c20042005290300370300200120012903800222063703d00220012006370360200541e6f8c200ad4280808080f0018422121002220941086a29000037030020012009290000370380022009102c20032001290380022206370300200f20042903003703002002200637030020002005290300370300200120063703d002200120012903603703f002200141c8006a200141f0026a4120410141004100109701024020012802484101460d00200141e0006a41186a220f4200370300200141e0006a41106a22094200370300200141e0006a41086a220542003703002001420037036020014180026a41086a220441f9e8c500ad42808080809001841002220241086a29000037030020012002290000370380022002102c2005200429030037030020012001290380023703602004419db1c200ad428080808030841002220241086a29000037030020012002290000370380022002102c20092001290380022206370300200141f0026a41086a22002005290300370300200141f0026a41106a220a2006370300200141f0026a41186a220b2004290300370300200120063703d002200120012903603703f002200141386a200141f0026a109801200129034021062001280238210c200f4200370300200942003703002005420037030020014200370360200420101002220241086a29000037030020012002290000370380022002102c20052004290300370300200120012903800222103703d00220012010370360200420121002220241086a29000037030020012002290000370380022002102c200141d0026a41086a20042903002210370300200120012903800222123703d00220032012370000200341086a201037000020002005290300370300200a2009290300370300200b200f290300370300200120012903603703f002200120064200200c1b370360200742808080808004842011428080808080018410010b200141e0006a41186a22024200370300200141e0006a41106a22034200370300200141e0006a41086a2205420037030020014200370360200141f0016a41086a2204418be9c500ad42808080808001841002220941086a290000370300200120092900003703f0012009102c20052004290300370300200120012903f00122063703d0022001200637036020044193e9c500ad42808080809002841002220941086a290000370300200120092900003703f0012009102c200320012903f0012206370300200141f0026a41086a2005290300370300200141f0026a41106a2006370300200141f0026a41186a2004290300370300200120063703d002200120012903603703f002200141286a200141f0026a109801200129033021102001280228210020014180026a41186a420037030020014180026a41106a220a420037030020014180026a41086a22094200370300200142003703800220044191b0c200ad4280808080e000841002220f41086a2900003703002001200f2900003703f001200f102c20092004290300370300200120012903f00137038002200441e0c2c200ad4280808080b002841002220f41086a2900003703002001200f2900003703f001200f102c200a20012903f0012206370300200520092903003703002003200637030020022004290300370300200120063703a0022001200129038002370360200141206a200141e0006a4120109401200141106a2001280224410020012802201b22044180e59af70020044180e59af7004b22051b4180e59af700200420051b6bad220642002006420010e005200642a8c3018021122010420020001b210642092001290310221042808090bbbad6adf00d7f20012903182010423f87521b211002400240200441ffe49af7004b0d0042ffffffffffffffffff00428080808080808080807f2006201220107d22127d22104200531b20102006427f5522042012427f554720042010427f5547711b22064280ec94a37c20064280ec94a37c551b21060c010b42ffffffffffffffffff00428080808080808080807f2006201220107c22127c22104200531b20102006427f5522042012427f554620042010427f5547711b21060b200141e0006a41186a22094200370300200141e0006a41106a22054200370300200141e0006a41086a2204420037030020014200370360200141f0016a41086a220f418be9c500ad42808080808001841002220241086a290000370300200120022900003703f0012002102c2004200f290300370300200120012903f00122103703d00220012010370360200f4193e9c500ad42808080809002841002220241086a290000370300200120022900003703f0012002102c200141d0026a41086a200f2903002210370300200120012903f00122123703d00220032012370000200341086a2010370000200141f0026a41086a220f2004290300370300200141f0026a41106a22022005290300370300200141f0026a41186a22002009290300370300200120012903603703f0022001200637036020074280808080800484220620114280808080800184100120094200370300200542003703002004420037030020014200370360200141a0026a41086a220341a4c6c500ad4280808080a0018422121002220a41086a2900003703002001200a2900003703a002200a102c20042003290300370300200120012903a00222103703d00220012010370360200341baecc100ad4280808080e000841002220a41086a2900003703002001200a2900003703a002200a102c200520012903a0022210370300200f20042903003703002002201037030020002003290300370300200120103703d002200120012903603703f0022006100520094200370300200542003703002004420037030020014200370360200320121002220a41086a2900003703002001200a2900003703a002200a102c20042003290300370300200120012903a00222103703d00220012010370360200341aec6c500ad4280808080c001841002220a41086a2900003703002001200a2900003703a002200a102c200920032903002210370300200f2004290300370300200220012903a002221237030020002010370300200120123703d002200120012903603703f0022006100520094200370300200542003703002004420037030020014200370360200141e0016a41086a220341f9e8c500ad42808080809001841002220941086a290000370300200120092900003703e0012009102c20042003290300370300200120012903e00137036020034182e9c500ad42808080809001841002220941086a290000370300200120092900003703e0012009102c200520012903e0012210370300200f200429030037030020022010370300200020032903003703002001201037038002200120012903603703f002200141f0026a109501220441ff01714102460d03200610052004410171450d03200141e0006a41186a4200370300200141e0006a41106a22094200370300200141e0006a41086a2203420037030020014200370360200141e0016a41086a220441bac6c500ad4280808080c000841002220541086a290000370300200120052900003703e0012005102c20032004290300370300200120012903e0012206370380022001200637036020044183d7c500ad4280808080b001841002220541086a290000370300200120052900003703e0012005102c200920012903e0012206370300200141f0026a41086a2003290300370300200141f0026a41106a2006370300200141f0026a41186a2004290300370300200120063703a002200120012903603703f002200141e0006a200141f0026a109901024020012d006022044102460d00200742808080808004841005200141b0026a41086a200141e9006a290000370300200141b0026a41106a200141f1006a290000370300200141b0026a41186a200141f9006a290000370300200120012900613703b0020240200441037122044103460d0020040e03010001010b200141d0026a41186a200141b0026a41186a290300370300200141d0026a41106a200141b0026a41106a290300370300200141d0026a41086a200141b0026a41086a290300370300200120012903b0023703d002200141e0006a41186a22054200370300200141e0006a41106a220f4200370300200141e0006a41086a2203420037030020014200370360200141e0016a41086a220441bac6c500ad4280808080c0008422061002220241086a290000370300200120022900003703e0012002102c20032004290300370300200120012903e0012210370380022001201037036020044181c7c500ad4280808080c001841002220241086a290000370300200120022900003703e0012002102c200141a0026a41086a220220042903002210370300200120012903e00122123703a00220092012370000200941086a2010370000200141f0026a41086a2003290300370300200141f0026a41106a200f290300370300200141f0026a41186a2005290300370300200120012903603703f002200141086a200141f0026a4120109401200128020c210a2001280208210b200420061002220041086a290000370300200120002900003703e0012000102c200141f0016a41086a220c2004290300370300200120012903e0013703f0012004418dc7c500ad42808080809002841002220041086a290000370300200120002900003703e0012000102c20022004290300370300200120012903e0013703a0022001200a4100200b1b22003602f00220014180026a41186a220a20074280808080c000841006220441186a29000037030020014180026a41106a220b200441106a29000037030020014180026a41086a220e200441086a29000037030020012004290000370380022004102c2005200a290300370300200f200b2903003703002003200e290300370300200120012903800237036041c000102a2204450d01200420012903f001370000200441086a200c290300370000200420012903a002370010200441186a200229030037000020042001290360370020200441286a2003290300370000200441306a200f290300370000200441386a2005290300370000200141e0006a200441c000109a010240024020012802602203450d002001200129026422063702940320012003360290032006422088a721052006a7210f0c010b4100210520014100360298032001420137039003410121034100210f0b2004102c024002402005418002490d004120102a2203450d03200320012903d002370000200341186a200141d0026a41186a290300370000200341106a200141d0026a41106a290300370000200341086a200141d0026a41086a290300370000200141e0016a41086a220441bac6c500ad4280808080c000841002220541086a290000370300200120052900003703e0012005102c200141f0016a41086a220f2004290300370300200120012903e0013703f0012004418dc7c500ad42808080809002841002220541086a290000370300200120052900003703e0012005102c200141a0026a41086a22052004290300370300200120012903e0013703a0022001200041016a22023602f00220014180026a41186a220020074280808080c000841006220441186a29000037030020014180026a41106a220a200441106a29000037030020014180026a41086a220b200441086a29000037030020012004290000370380022004102c200141e0006a41186a220c2000290300370300200141e0006a41106a2200200a290300370300200141e0006a41086a220a200b290300370300200120012903800237036041c000102a2204450d03200420012903f001370000200441086a200f290300370000200420012903a002370010200441186a200529030037000020042001290360370020200441286a200a290300370000200441306a2000290300370000200441386a200c290300370000200141e0006a20034101109b012004ad4280808080800884200135026842208620012802602205ad84100102402001280264450d002005102c0b2004102c2003102c200141e0006a41186a220f4200370300200141e0006a41106a22004200370300200141e0006a41086a2203420037030020014200370360200141e0016a41086a220441bac6c500ad4280808080c000841002220541086a290000370300200120052900003703e0012005102c20032004290300370300200120012903e0012206370380022001200637036020044181c7c500ad4280808080c001841002220541086a290000370300200120052900003703e0012005102c200141a0026a41086a20042903002206370300200120012903e00122103703a00220092010370000200941086a2006370000200141f0026a41086a2003290300370300200141f0026a41106a2000290300370300200141f0026a41186a200f290300370300200120012903603703f002200120023602602007428080808080048420114280808080c0008410010c010b200141e0006a41186a2209200141d0026a41186a290300370300200141e0006a41106a2202200141d0026a41106a290300370300200141e0006a41086a220a200141d0026a41086a290300370300200120012903d00237036002402005200f470d00200f41016a2204200f490d07200f410174220b2004200b20044b1b220441ffffff3f712004470d072004410574220b4100480d0702400240200f0d00200b102a21030c010b2003200f410574200b102e21030b2003450d03200120043602940320012003360290030b200320054105746a22042001290360370000200441186a2009290300370000200441106a2002290300370000200441086a200a2903003700002001200541016a220f36029803200141e0016a41086a220441bac6c500ad4280808080c000841002220541086a290000370300200120052900003703e0012005102c200141f0016a41086a2004290300370300200120012903e0013703f0012004418dc7c500ad42808080809002841002220541086a290000370300200120052900003703e0012005102c200141a0026a41086a2004290300370300200120012903e0013703a002200120003602f00220014180026a41186a220520074280808080c000841006220441186a29000037030020014180026a41106a2200200441106a29000037030020014180026a41086a220b200441086a29000037030020012004290000370380022004102c2009200529030037030020022000290300370300200a200b290300370300200120012903800237036041c000102a2204450d02200420012903f001370000200441086a200141f0016a41086a290300370000200420012903a002370010200441186a200141a0026a41086a29030037000020042001290360370020200441286a200141e0006a41086a290300370000200441306a200141f0006a290300370000200441386a200141e0006a41186a290300370000200141e0006a2003200f109b012004ad4280808080800884200135026842208620012802602203ad84100102402001280264450d002003102c0b2004102c0b200128029403450d00200128029003102c0b200141a0036a24000f0b1033000b41d087c6002004200c1038000b41d087c6002004200c1038000b41f2b0c200412b41acfec5001036000b1035000ba60101047f230041206b2202240020022001a7220336020820022001422088a7220436020c02402004450d0020032d0000210520022004417f6a36020c2002200341016a360208200541014b0d00410021030240024020050e020100010b200241106a200241086a107720022802102203450d01200229021421010b2000200137020420002003360200200241206a24000f0b41d88bc600412e200241106a41888cc600103b000bbd0101047f230041106b22022400200028020421032000280200210041012104200128021841d1afc00041012001411c6a28020028020c1100002105200241003a0005200220053a00042002200136020002402003450d0003402002200036020c20022002410c6a41dc9ac50010621a200041016a21002003417f6a22030d000b20022d000421050b0240200541ff01710d002002280200220028021841d2afc00041012000411c6a28020028020c11000021040b200241106a240020040be40c03047f017e027f230041106b2202240020024100360208200242013703000240024002402001280200220341044b0d000240024002400240024020030e050001020304000b4101102a2203450d05200242818080801037020420022003360200200341013a0000200128020421042001410c6a28020022032002106702402003450d002004200341286c6a2105034020042002109101200441206a29030021060240024020022802042207200228020822036b4108490d00200228020021070c010b200341086a22082003490d09200741017422032008200320084b1b22034100480d090240024020070d002003102a21070c010b200228020020072003102e21070b2007450d082002200336020420022007360200200228020821030b2002200341086a360208200720036a20063700002005200441286a2204470d000b0b200141106a28020021070240024020022802042204200228020822036b4104490d00200228020021040c010b200341046a22082003490d07200441017422032008200320084b1b22034100480d070240024020040d002003102a21040c010b200228020020042003102e21040b2004450d062002200336020420022004360200200228020821030b2002200341046a360208200420036a20073600000c040b4101102a2203450d04200242818080801037020420022003360200200341023a0000200128020421070240024020022802042204200228020822036b4104490d00200228020021040c010b200341046a22082003490d06200441017422052008200520084b1b22084100480d060240024020040d002008102a21040c010b200228020020042008102e21040b2004450d0520022008360204200220043602000b2002200341046a360208200420036a200736000020012802082104200141106a28020022032002106702402003450d002004200341286c6a2105034020042002109101200441206a29030021060240024020022802042207200228020822036b4108490d00200228020021070c010b200341086a22082003490d08200741017422032008200320084b1b22034100480d080240024020070d002003102a21070c010b200228020020072003102e21070b2007450d072002200336020420022007360200200228020821030b2002200341086a360208200720036a20063700002005200441286a2204470d000b0b200141146a28020021070240024020022802042204200228020822036b4104490d00200228020021040c010b200341046a22082003490d06200441017422032008200320084b1b22034100480d060240024020040d002003102a21040c010b200228020020042003102e21040b2004450d052002200336020420022004360200200228020821030b2002200341046a360208200420036a20073600000c030b4101102a2203450d03200242818080801037020420022003360200200341033a0000200141086a29030021060240024020022802042207200228020822036b4108490d00200341086a2104200228020021070c010b200341086a22042003490d05200741017422082004200820044b1b22084100480d050240024020070d002008102a21070c010b200228020020072008102e21070b2007450d0420022008360204200220073602000b20022004360208200720036a20063700000c020b4101102a2203450d02200242818080801037020420022003360200200341043a0000200128020421070240024020022802042204200228020822036b4104490d00200228020021040c010b200341046a22082003490d04200441017422012008200120084b1b22084100480d040240024020040d002008102a21040c010b200228020020042008102e21040b2004450d0320022008360204200220043602000b2002200341046a360208200420036a20073600000c010b4101102a2203450d01200242818080801037020420022003360200200341053a0000200128020421080240024020022802042207200228020822036b4104490d00200341046a2104200228020021070c010b200341046a22042003490d03200741017422012004200120044b1b22014100480d030240024020070d002001102a21070c010b200228020020072001102e21070b2007450d0220022001360204200220073602000b20022004360208200720036a20083600000b20002002290300370200200041086a200241086a280200360200200241106a24000f0b1033000b1035000beb0807017f017e057f017e017f017e027f230041f0006b2201240042002102200141386a41186a22034200370300200141386a41106a22044200370300200141386a41086a2205420037030020014200370338200141e0006a41086a22064191b0c200ad4280808080e000841002220741086a290000370300200120072900003703602007102c2005200629030037030020012001290360220837032820012008370338200641cab0c200ad4280808080e000841002220741086a290000370300200120072900003703602007102c200420012903602208370300200141086a41086a2005290300370300200141086a41106a2008370300200141086a41186a20062903003703002001200837032820012001290338370308200141386a200141086a10e40202400240200128023822070d004104210741002106410021090c010b200129023c2202422088a721062002a721090b200141386a41206a200041206a2802003602002003200041186a2902003703002004200041106a2902003703002005200041086a2902003703002001200029020037033802400240024020062009470d00024020062002a7470d00200641016a22002006490d03200641017422052000200520004b1bad220842247e220a422088a70d03200aa722004100480d030240024020060d002000102a21070c010b2007200641246c2000102e21070b2007450d0220024280808080708320088421020b2002422088a721060b2007200641246c220b6a22002001290338370200200041206a200141386a41206a280200360200200041186a200141386a41186a2203290300370200200041106a200141386a41106a2209290300370200200041086a200141386a41086a220029030037020020034200370300200942003703002000420037030020014200370338200141e0006a41086a22054191b0c200ad4280808080e000841002220c41086a2900003703002001200c290000370360200c102c2000200529030037030020012001290360220837032820012008370338200541cab0c200ad4280808080e000841002220c41086a2900003703002001200c290000370360200c102c200141286a41086a2005290300220837030020012001290360220a3703282004200a370000200441086a2008370000200141086a41086a2000290300370300200141086a41106a2009290300370300200141086a41186a2003290300370300200120012903383703082001412036023c2001200141086a3602382007200641016a2200200141386a10da03024020002006490d00200b41246a21002007210603400240024020062d0000220441034b0d0002400240024020040e0404000102040b2006410c6a280200450d03200641086a280200102c0c030b2006410c6a280200450d02200641086a280200102c0c020b2006410c6a280200450d01200641086a280200102c0c010b200641086a280200450d00200641046a280200102c0b200641246a21062000415c6a22000d000b0b02402002a7450d002007102c0b200141f0006a24000f0b1033000b1035000bdb2601067f20002d000021020240024002400240200141046a2203280200200141086a22042802002205460d00200128020021060c010b200541016a22062005490d02200541017422072006200720064b1b22074100480d020240024020050d002007102a21060c010b200128020020052007102e21060b2006450d0120012006360200200141046a2007360200200141086a28020021050b2004200541016a360200200620056a20023a000020002d0001210202400240200328020020042802002205460d00200128020021060c010b200541016a22062005490d02200541017422072006200720064b1b22074100480d020240024020050d002007102a21060c010b200128020020052007102e21060b2006450d0120012006360200200141046a2007360200200141086a28020021050b2004200541016a360200200620056a20023a000020002d0002210202400240200328020020042802002205460d00200128020021060c010b200541016a22062005490d02200541017422072006200720064b1b22074100480d020240024020050d002007102a21060c010b200128020020052007102e21060b2006450d0120012006360200200141046a2007360200200141086a28020021050b2004200541016a360200200620056a20023a000020002d0003210202400240200328020020042802002205460d00200128020021060c010b200541016a22062005490d02200541017422072006200720064b1b22074100480d020240024020050d002007102a21060c010b200128020020052007102e21060b2006450d0120012006360200200141046a2007360200200141086a28020021050b2004200541016a360200200620056a20023a000020002d0004210202400240200328020020042802002205460d00200128020021060c010b200541016a22062005490d02200541017422072006200720064b1b22074100480d020240024020050d002007102a21060c010b200128020020052007102e21060b2006450d0120012006360200200141046a2007360200200141086a28020021050b2004200541016a360200200620056a20023a000020002d0005210202400240200328020020042802002205460d00200128020021060c010b200541016a22062005490d02200541017422072006200720064b1b22074100480d020240024020050d002007102a21060c010b200128020020052007102e21060b2006450d0120012006360200200141046a2007360200200141086a28020021050b2004200541016a360200200620056a20023a000020002d0006210202400240200328020020042802002205460d00200128020021060c010b200541016a22062005490d02200541017422072006200720064b1b22074100480d020240024020050d002007102a21060c010b200128020020052007102e21060b2006450d0120012006360200200141046a2007360200200141086a28020021050b2004200541016a360200200620056a20023a000020002d0007210202400240200328020020042802002205460d00200128020021060c010b200541016a22062005490d02200541017422072006200720064b1b22074100480d020240024020050d002007102a21060c010b200128020020052007102e21060b2006450d0120012006360200200141046a2007360200200141086a28020021050b2004200541016a360200200620056a20023a000020002d0008210202400240200328020020042802002205460d00200128020021060c010b200541016a22062005490d02200541017422072006200720064b1b22074100480d020240024020050d002007102a21060c010b200128020020052007102e21060b2006450d0120012006360200200141046a2007360200200141086a28020021050b2004200541016a360200200620056a20023a000020002d0009210202400240200328020020042802002205460d00200128020021060c010b200541016a22062005490d02200541017422072006200720064b1b22074100480d020240024020050d002007102a21060c010b200128020020052007102e21060b2006450d0120012006360200200141046a2007360200200141086a28020021050b2004200541016a360200200620056a20023a000020002d000a210202400240200328020020042802002205460d00200128020021060c010b200541016a22062005490d02200541017422072006200720064b1b22074100480d020240024020050d002007102a21060c010b200128020020052007102e21060b2006450d0120012006360200200141046a2007360200200141086a28020021050b2004200541016a360200200620056a20023a000020002d000b210202400240200328020020042802002205460d00200128020021060c010b200541016a22062005490d02200541017422072006200720064b1b22074100480d020240024020050d002007102a21060c010b200128020020052007102e21060b2006450d0120012006360200200141046a2007360200200141086a28020021050b2004200541016a360200200620056a20023a000020002d000c210202400240200328020020042802002205460d00200128020021060c010b200541016a22062005490d02200541017422072006200720064b1b22074100480d020240024020050d002007102a21060c010b200128020020052007102e21060b2006450d0120012006360200200141046a2007360200200141086a28020021050b2004200541016a360200200620056a20023a000020002d000d210202400240200328020020042802002205460d00200128020021060c010b200541016a22062005490d02200541017422072006200720064b1b22074100480d020240024020050d002007102a21060c010b200128020020052007102e21060b2006450d0120012006360200200141046a2007360200200141086a28020021050b2004200541016a360200200620056a20023a000020002d000e210202400240200328020020042802002205460d00200128020021060c010b200541016a22062005490d02200541017422072006200720064b1b22074100480d020240024020050d002007102a21060c010b200128020020052007102e21060b2006450d0120012006360200200141046a2007360200200141086a28020021050b2004200541016a360200200620056a20023a000020002d000f210202400240200328020020042802002205460d00200128020021060c010b200541016a22062005490d02200541017422072006200720064b1b22074100480d020240024020050d002007102a21060c010b200128020020052007102e21060b2006450d0120012006360200200141046a2007360200200141086a28020021050b2004200541016a360200200620056a20023a000020002d0010210202400240200328020020042802002205460d00200128020021060c010b200541016a22062005490d02200541017422072006200720064b1b22074100480d020240024020050d002007102a21060c010b200128020020052007102e21060b2006450d0120012006360200200141046a2007360200200141086a28020021050b2004200541016a360200200620056a20023a000020002d0011210202400240200328020020042802002205460d00200128020021060c010b200541016a22062005490d02200541017422072006200720064b1b22074100480d020240024020050d002007102a21060c010b200128020020052007102e21060b2006450d0120012006360200200141046a2007360200200141086a28020021050b2004200541016a360200200620056a20023a000020002d0012210202400240200328020020042802002205460d00200128020021060c010b200541016a22062005490d02200541017422072006200720064b1b22074100480d020240024020050d002007102a21060c010b200128020020052007102e21060b2006450d0120012006360200200141046a2007360200200141086a28020021050b2004200541016a360200200620056a20023a000020002d0013210202400240200328020020042802002205460d00200128020021060c010b200541016a22062005490d02200541017422072006200720064b1b22074100480d020240024020050d002007102a21060c010b200128020020052007102e21060b2006450d0120012006360200200141046a2007360200200141086a28020021050b2004200541016a360200200620056a20023a000020002d0014210202400240200328020020042802002205460d00200128020021060c010b200541016a22062005490d02200541017422072006200720064b1b22074100480d020240024020050d002007102a21060c010b200128020020052007102e21060b2006450d0120012006360200200141046a2007360200200141086a28020021050b2004200541016a360200200620056a20023a000020002d0015210202400240200328020020042802002205460d00200128020021060c010b200541016a22062005490d02200541017422072006200720064b1b22074100480d020240024020050d002007102a21060c010b200128020020052007102e21060b2006450d0120012006360200200141046a2007360200200141086a28020021050b2004200541016a360200200620056a20023a000020002d0016210202400240200328020020042802002205460d00200128020021060c010b200541016a22062005490d02200541017422072006200720064b1b22074100480d020240024020050d002007102a21060c010b200128020020052007102e21060b2006450d0120012006360200200141046a2007360200200141086a28020021050b2004200541016a360200200620056a20023a000020002d0017210202400240200328020020042802002205460d00200128020021060c010b200541016a22062005490d02200541017422072006200720064b1b22074100480d020240024020050d002007102a21060c010b200128020020052007102e21060b2006450d0120012006360200200141046a2007360200200141086a28020021050b2004200541016a360200200620056a20023a000020002d0018210202400240200328020020042802002205460d00200128020021060c010b200541016a22062005490d02200541017422072006200720064b1b22074100480d020240024020050d002007102a21060c010b200128020020052007102e21060b2006450d0120012006360200200141046a2007360200200141086a28020021050b2004200541016a360200200620056a20023a000020002d0019210202400240200328020020042802002205460d00200128020021060c010b200541016a22062005490d02200541017422072006200720064b1b22074100480d020240024020050d002007102a21060c010b200128020020052007102e21060b2006450d0120012006360200200141046a2007360200200141086a28020021050b2004200541016a360200200620056a20023a000020002d001a210202400240200328020020042802002205460d00200128020021060c010b200541016a22062005490d02200541017422072006200720064b1b22074100480d020240024020050d002007102a21060c010b200128020020052007102e21060b2006450d0120012006360200200141046a2007360200200141086a28020021050b2004200541016a360200200620056a20023a000020002d001b210202400240200328020020042802002205460d00200128020021060c010b200541016a22062005490d02200541017422072006200720064b1b22074100480d020240024020050d002007102a21060c010b200128020020052007102e21060b2006450d0120012006360200200141046a2007360200200141086a28020021050b2004200541016a360200200620056a20023a000020002d001c210202400240200328020020042802002205460d00200128020021060c010b200541016a22062005490d02200541017422072006200720064b1b22074100480d020240024020050d002007102a21060c010b200128020020052007102e21060b2006450d0120012006360200200141046a2007360200200141086a28020021050b2004200541016a360200200620056a20023a000020002d001d210202400240200328020020042802002205460d00200128020021060c010b200541016a22062005490d02200541017422072006200720064b1b22074100480d020240024020050d002007102a21060c010b200128020020052007102e21060b2006450d0120012006360200200141046a2007360200200141086a28020021050b2004200541016a360200200620056a20023a000020002d001e210202400240200328020020042802002205460d00200128020021060c010b200541016a22062005490d02200541017422072006200720064b1b22074100480d020240024020050d002007102a21060c010b200128020020052007102e21060b2006450d0120012006360200200141046a2007360200200141086a28020021050b2004200541016a360200200620056a20023a000020002d001f210502400240200328020020042802002200460d00200128020021030c010b200041016a22032000490d02200041017422062003200620034b1b22064100480d020240024020000d002006102a21030c010b200128020020002006102e21030b2003450d0120012003360200200141046a2006360200200141086a28020021000b2004200041016a360200200320006a20053a00000f0b1033000b1035000be32303087f037e097f23004180046b22032400200341186a4181b0c2004110109401200328021c21042003280218210541012106410021074100210802400240024002402001450d00200141057422074100480d022007102a2206450d012001410574220941606a410576210a20062107200021080340200841086a290000210b200841106a290000210c200841186a290000210d20072008290000370000200741186a200d370000200741106a200c370000200741086a200b370000200741206a2107200841206a2108200941606a22090d000b200a41016a2108200121070b200341a4016a200436020020032005453602a001200341206a200241800110db051a200341b0016a2008360200200341ac016a2007360200200320063602a80120034180036a41186a2206420037030020034180036a41106a2209420037030020034180036a41086a220842003703002003420037038003200341e0036a41086a22074191b0c200ad4280808080e00084220c1002220241086a290000370300200320022900003703e0032002102c20082007290300370300200320032903e003220b3703f0022003200b37038003200741e4c4c200ad4280808080a00184220d1002220241086a290000370300200320022900003703e0032002102c200920032903e003220b370300200341d0026a41086a22022008290300370300200341d0026a41106a200b370300200341d0026a41186a220420072903003703002003200b3703c80320032003290380033703d002200341106a200341d0026a412010940102400240024002400240024002400240024002402003280214410020032802101b220541016a220e2005490d002006420037030020034180036a41106a220a42003703002008420037030020034200370380032007200c1002220f41086a2900003703002003200f2900003703e003200f102c20082007290300370300200320032903e003220b3703f0022003200b370380032007200d1002220f41086a2900003703002003200f2900003703e003200f102c200341c8036a41086a220f2007290300220b370300200320032903e003220d3703c8032009200d370000200941086a2210200b37000020022008290300370300200341d0026a41106a2211200a2903003703002004200629030037030020032003290380033703d0022003200e3602b801200341d0026aad4280808080800484220b200341b8016aad4280808080c000841001200341b8016a200341206a41980110db051a20064200370300200a42003703002008420037030020034200370380032007200c1002220e41086a2900003703002003200e2900003703e003200e102c20082007290300370300200320032903e003220c3703f0022003200c37038003200741fdb1c200ad4280808080e000841002220e41086a2900003703002003200e2900003703e003200e102c200f2007290300220c370300200320032903e003220d3703c8032009200d3700002010200c370000200220082903003703002011200a2903003703002004200629030037030020032003290380033703d002200341c8036a200b1003108d010240024020032802c803450d00200341a0036a41086a200341c8036a41086a280200360200200320032903c8033703a0030c010b200341003602e803200342083703e00320034100360288032003420137038003410020034180036a1067200341a8036a20032802880336020020032003290380033703a003200341e0036a107d0b200341b0036a41086a200341a0036a41086a2802002207360200200320032903a0033703b003024002402007450d0020034180036a20032802b0032007410110db032003280280034101470d0120032802b403450d0920032802b003102c0c090b4101200341b0036a1067200341b8016a200341b0036a10dc030c060b200328028403210202402003418c036a280200220720034180036a41086a2802002208460d0020032802b803200720086b6a220641046a2204417f4c0d0d0240024020040d004101210a0c010b2004102a220a450d0c0b200320043602f4022003200a3602f002200320063602f8022003200341f0026a36028003200220034180036a200710c80220062007490d0220032802f80222022006490d0320032802b80322022008490d0420032802f002210420032802b003210a2003200620076b22063602c0032003200220086b22023602c40320062002470d05200420076a200a20086a200610db051a200341b8016a200341f0026a10dc0320032802f802210820032802f402210620032802f002210720032802b403450d0720032802b003102c0c070b2003200341b0036a36028003200220034180036a200810c802200341b8016a200341b0036a10dc030c050b200341206a10dd030c080b200720061047000b20062002103f000b200820021047000b200341e0036a41146a4109360200200341ec036a410c360200200341c8036a41146a4103360200200342033702cc03200341ec9fc6003602c8032003410c3602e4032003200341c0036a3602f8032003200341c4036a3602fc0320034204370390032003420137028403200341c0a0c600360280032003200341e0036a3602d803200320034180036a3602f0032003200341fc036a3602e8032003200341f8036a3602e003200341c8036a41fca0c6001041000b20032802b803210820032802b403210620032802b00321070b20070d010b200341b8016a10dd030c010b200b2008ad4220862007ad84100102402006450d002007102c0b200341b8016a10dd0320034180036a41186a2202420037030020034180036a41106a2204420037030020034180036a41086a220642003703002003420037038003200341e0036a41086a22084191b0c200ad4280808080e00084220c1002220741086a290000370300200320072900003703e0032007102c20062008290300370300200320032903e003220b3703f0022003200b37038003200841acb0c200ad4280808080e000841002220741086a290000370300200320072900003703e0032007102c200341c8036a41086a220a2008290300220b370300200320032903e003220d3703c8032009200d370000200941086a200b370000200341d0026a41086a22112006290300370300200341d0026a41106a22122004290300370300200341d0026a41186a2213200229030037030020032003290380033703d002200341086a200341d0026a41201094012001450d00200328020c410020032802081b21142001410574211003402008200c1002220741086a290000370300200320072900003703e0032007102c200341f0026a41086a22092008290300370300200320032903e0033703f00220084183b2c200ad4280808080b001841002220741086a290000370300200320072900003703e0032007102c200a2008290300370300200320032903e0033703c803200341b8016a41186a220142011006220741186a290000370300200341b8016a41106a220e200741106a290000370300200341b8016a41086a220f200741086a290000370300200320072900003703b8012007102c200220012903003703002004200e2903003703002006200f290300370300200320032903b8013703800341c000102a2207450d02200720032903f002370000200720032903c8033700102007200329038003370020200741086a2009290300370000200741186a200a290300370000200741286a2006290300370000200741306a2004290300370000200741386a2002290300370000200341d0026a2000109f01200741c000418001102e2207450d02200720032903d002370040200741d8006a2013290300370000200741d0006a2012290300370000200741c8006a201129030037000020034180036a2007ad4280808080800c84220b1003108d01024002402003280280032201450d002003280288032109200328028403210e0c010b200341003602c001200342013703b8014100200341b8016a106720032802c001210920032802bc01210e20032802b80121010b200320093602d0032003200e3602cc03200320013602c8030240024002400240024002400240024002400240024002402009450d00200341b8016a20012009410110db0320032802b8014101460d0420032802bc01210f20032802c401220920032802c0012201460d0320032802d003200920016b6a220e41046a2215417f4c0d1020150d01410121160c020b4101200341c8036a10670240024020032802cc03220120032802d00322096b4104490d0020032802c80321010c010b200941046a220e2009490d0f20014101742209200e2009200e4b1b22094100480d0f0240024020010d002009102a21010c010b20032802c80320012009102e21010b2001450d0e200320093602cc03200320013602c80320032802d00321090b2003200941046a3602d003200120096a20143600000240024020032802cc03220120032802d00322096b4104490d0020032802c80321010c010b200941046a220e2009490d0f20014101742209200e2009200e4b1b22094100480d0f0240024020010d002009102a21010c010b20032802c80320012009102e21010b2001450d0e200320093602cc03200320013602c80320032802d00321090b2003200941046a3602d003200120096a20053600000c080b2015102a2216450d0c0b200320153602d402200320163602d0022003200e3602d8022003200341d0026a3602b801200f200341b8016a200910c802200e2009490d0220032802d802220f200e490d0320032802d003220f2001490d0420032802d002211520032802c80321162003200e20096b220e3602fc032003200f20016b220f3602a003200e200f470d05201520096a201620016a200e10db051a0240024020032802d402220120032802d80222096b4104490d0020032802d00221010c010b200941046a220e2009490d0d20014101742209200e2009200e4b1b22094100480d0d0240024020010d002009102a21010c010b20032802d00220012009102e21010b2001450d0c200320093602d402200320013602d00220032802d80221090b2003200941046a3602d802200120096a20143600000240024020032802d402220120032802d80222096b4104490d0020032802d00221010c010b200941046a220e2009490d0d20014101742209200e2009200e4b1b22094100480d0d0240024020010d002009102a21010c010b20032802d00220012009102e21010b2001450d0c200320093602d402200320013602d00220032802d80221090b2003200941046a3602d802200120096a200536000020032802d802210120032802d402210e20032802d002210920032802cc03450d0720032802c803102c0c070b2003200341c8036a3602b801200f200341b8016a200110c8020240024020032802cc03220120032802d00322096b4104490d0020032802c80321010c010b200941046a220e2009490d0c20014101742209200e2009200e4b1b22094100480d0c0240024020010d002009102a21010c010b20032802c80320012009102e21010b2001450d0b200320093602cc03200320013602c80320032802d00321090b2003200941046a3602d003200120096a20143600000240024020032802cc03220120032802d00322096b4104490d0020032802c80321010c010b200941046a220e2009490d0c20014101742209200e2009200e4b1b22094100480d0c0240024020010d002009102a21010c010b20032802c80320012009102e21010b2001450d0b200320093602cc03200320013602c80320032802d00321090b2003200941046a3602d003200120096a20053600000c050b20032802cc03450d0620032802c803102c0c060b2009200e1047000b200e200f103f000b2001200f1047000b200341e0036a41146a4109360200200341ec036a410c36020020034180036a41146a41033602002003420337028403200341ec9fc600360280032003410c3602e4032003200341fc036a3602b0032003200341a0036a3602f002200342043703c801200342013702bc01200341c0a0c6003602b8012003200341e0036a360290032003200341b8016a3602f0032003200341f0026a3602e8032003200341b0036a3602e00320034180036a41fca0c6001041000b20032802d003210120032802cc03210e20032802c80321090b2009450d00200b2001ad4220862009ad8410010240200e450d002009102c0b200041206a21002007102c201041606a22100d010c020b0b2007102c0b20034180046a24000f0b1033000b1035000b103a000b8c0201037f024002400240024002400240024020012802000e0400010203000b410121024101102a2201450d05200141003a0000410121030c040b4101102a2202450d04200241013a000020012802042103200241014105102e2202450d042002200336000120012802082104410a210320024105410a102e2201450d04200120043600050c020b410121024101102a2201450d03200141023a0000410121030c020b4101102a2202450d02200241033a000020012802042103200241014105102e2202450d022002200336000120012802082104410a210320024105410a102e2201450d02200120043600050b410921020b2000200236020820002003360204200020013602000f0b1033000b8f0201037f230041d0006b220324002003200236020420032001360200200341086a2002ad4220862001ad841003108d0102400240200328020822040d00410021010c010b200328020c210502400240200341106a2802004104490d0020042800002102410121010c010b4100210120034100360220200342013703182003410b36022c200320033602282003200341186a360234200341cc006a41013602002003420137023c200341d0b0c2003602382003200341286a360248200341346a41c49ac500200341386a10391a200335022042208620033502188410040240200328021c450d002003280218102c0b0b2005450d002004102c0b2000200236020420002001360200200341d0006a24000b950201047f230041d0006b220124002001412036020420012000360200200141086a2000ad42808080808004841003108d0102400240200128020822020d00410221000c010b200128020c210302400240200141106a280200450d0020022d0000220441014b0d0041002100024020040e020200020b410121000c010b20014100360220200142013703182001410b36022c200120013602282001200141186a360234200141cc006a41013602002001420137023c200141d0b0c2003602382001200141286a360248200141346a41c49ac500200141386a10391a200135022042208620013502188410040240200128021c450d002001280218102c0b410221000b2003450d002002102c0b200141d0006a240020000bbc0201027f230041e0006b220224002002412036020c20022001360208200241106a2001ad42808080808004841003108d0102400240200228021022010d00200041003602000c010b200228021421032002200241106a41086a28020036022420022001360220200241c8006a200241206a107e024002402002280248450d0020002002290348370200200041086a200241c8006a41086a2802003602000c010b20024100360230200242013703282002410b36023c2002200241086a3602382002200241286a360244200241dc006a41013602002002420137024c200241d0b0c2003602482002200241386a360258200241c4006a41c49ac500200241c8006a10391a2002350230422086200235022884100420004100360200200228022c450d002002280228102c0b2003450d002001102c0b200241e0006a24000b940102017f017e230041106b2206240002402002ad4220862001ad842004ad4220862003ad84200510282207422088a72203450d002007a722042d0000220241014b0d00410021050240024020020e020100010b2003417f6a4104490d0120042800012101410121050b2000200136020420002005360200200641106a24000f0b41d88bc600412e200641086a41888cc600103b000b990204017f017e017f017e230041d0006b220224002002412036020420022001360200200241086a2001ad42808080808004841003108d0102400240200228020822010d00420021030c010b200228020c210402400240200241086a41086a2802004108490d0020012900002105420121030c010b20024100360220200242013703182002410b36022c200220023602282002200241186a360234200241cc006a41013602002002420137023c200241d0b0c2003602382002200241286a360248200241346a41c49ac500200241386a10391a200235022042208620023502188410040240200228021c450d002002280218102c0b420021030b2004450d002001102c0b2000200537030820002003370300200241d0006a24000bd80402067f047e230041f0006b220224002002412036020c20022001360208200241106a2001ad42808080808004841003108d0102400240200228021022030d00200041023a00000c010b2002280214210402400240200241186a2802002205450d0020032d0000220641014b0d00410021010240024020060e020100010b41002101200241003a0068200341016a21072005417f6a21060340024020062001470d00200141ff0171450d03200241003a00680c030b200241c8006a20016a200720016a2d00003a00002002200141016a22053a00682005210120054120470d000b200241206a41186a200241c8006a41186a290300370300200241206a41106a200241c8006a41106a290300370300200241206a41086a200241c8006a41086a29030037030020022002290348370320410121010b200241c8006a41186a200241206a41186a2903002208370300200241c8006a41106a200241206a41106a2903002209370300200241c8006a41086a200241206a41086a290300220a37030020022002290320220b370348200041196a2008370000200041116a2009370000200041096a200a3700002000200b3700010c010b20024100360228200242013703202002410b3602442002200241086a3602402002200241206a36026c200241dc006a41013602002002420137024c200241d0b0c2003602482002200241c0006a360258200241ec006a41c49ac500200241c8006a10391a2002350228422086200235022084100402402002280224450d002002280220102c0b410221010b200020013a00002004450d002003102c0b200241f0006a24000bdf06010c7f23004190016b220324002003200236021420032001360210200341186a2002ad4220862001ad841003108d0102400240200328021822040d00200041003602000c010b200328021c21052003200341206a28020036023c20032004360238200341086a200341386a1075024002400240024020032802080d0002400240200328023c22014160712202417f4c0d00200328020c210602400240200141057622070d00410121080c010b2002102a2208450d020b02402006450d004100210903402001210a200341003a0088012009220b41016a2109410021010240024002400340200a2001460d01200341e8006a20016a200328023822022d00003a00002003200241016a3602382003200141016a22023a0088012002210120024120470d000b200341c8006a41186a220c200341e8006a41186a290300370300200341c8006a41106a220d200341e8006a41106a290300370300200341c8006a41086a220e200341e8006a41086a290300370300200320032903683703482007200b470d020240200b41017422012009200120094b1b220741ffffff3f712007470d002007410574220141004e0d020b1035000b2003410036023c0240200141ff0171450d00200341003a0088010b200341003602282007450d072008102c0c070b02400240200b0d002001102a21080c010b2008200b4105742001102e21080b2008450d040b200a20026b21012008200b4105746a220b2003290348370000200b41186a200c290300370000200b41106a200d290300370000200b41086a200e29030037000020092006470d000b200341306a20063602002003200736022c200320083602282003200a20026b36023c0c050b200341306a20063602002003200736022c2003200836022820080d040c030b103a000b1033000b200341003602280b20034100360250200342013703482003410b36022c2003200341106a3602282003200341c8006a360244200341fc006a41013602002003420137026c200341d0b0c2003602682003200341286a360278200341c4006a41c49ac500200341e8006a10391a2003350250422086200335024884100420004100360200200328024c450d012003280248102c0c010b20002003290328370200200041086a200341286a41086a2802003602000b2005450d002004102c0b20034190016a24000bed2401057f230041106b2203240020034100360208200342013703002002200310670240024002402002450d00200120024105746a2104034020012d0000210502400240200328020420032802082202460d00200328020021060c010b200241016a22062002490d04200241017422072006200720064b1b22074100480d040240024020020d002007102a21060c010b200328020020022007102e21060b2006450d0320032007360204200320063602000b2003200241016a360208200620026a20053a0000200141016a2d0000210502400240200328020420032802082202460d00200328020021060c010b200241016a22062002490d04200241017422072006200720064b1b22074100480d040240024020020d002007102a21060c010b200328020020022007102e21060b2006450d0320032007360204200320063602000b2003200241016a360208200620026a20053a0000200141026a2d0000210502400240200328020420032802082202460d00200328020021060c010b200241016a22062002490d04200241017422072006200720064b1b22074100480d040240024020020d002007102a21060c010b200328020020022007102e21060b2006450d0320032007360204200320063602000b2003200241016a360208200620026a20053a0000200141036a2d0000210502400240200328020420032802082202460d00200328020021060c010b200241016a22062002490d04200241017422072006200720064b1b22074100480d040240024020020d002007102a21060c010b200328020020022007102e21060b2006450d0320032007360204200320063602000b2003200241016a360208200620026a20053a0000200141046a2d0000210502400240200328020420032802082202460d00200328020021060c010b200241016a22062002490d04200241017422072006200720064b1b22074100480d040240024020020d002007102a21060c010b200328020020022007102e21060b2006450d0320032007360204200320063602000b2003200241016a360208200620026a20053a0000200141056a2d0000210502400240200328020420032802082202460d00200328020021060c010b200241016a22062002490d04200241017422072006200720064b1b22074100480d040240024020020d002007102a21060c010b200328020020022007102e21060b2006450d0320032007360204200320063602000b2003200241016a360208200620026a20053a0000200141066a2d0000210502400240200328020420032802082202460d00200328020021060c010b200241016a22062002490d04200241017422072006200720064b1b22074100480d040240024020020d002007102a21060c010b200328020020022007102e21060b2006450d0320032007360204200320063602000b2003200241016a360208200620026a20053a0000200141076a2d0000210502400240200328020420032802082202460d00200328020021060c010b200241016a22062002490d04200241017422072006200720064b1b22074100480d040240024020020d002007102a21060c010b200328020020022007102e21060b2006450d0320032007360204200320063602000b2003200241016a360208200620026a20053a0000200141086a2d0000210502400240200328020420032802082202460d00200328020021060c010b200241016a22062002490d04200241017422072006200720064b1b22074100480d040240024020020d002007102a21060c010b200328020020022007102e21060b2006450d0320032007360204200320063602000b2003200241016a360208200620026a20053a0000200141096a2d0000210502400240200328020420032802082202460d00200328020021060c010b200241016a22062002490d04200241017422072006200720064b1b22074100480d040240024020020d002007102a21060c010b200328020020022007102e21060b2006450d0320032007360204200320063602000b2003200241016a360208200620026a20053a00002001410a6a2d0000210502400240200328020420032802082202460d00200328020021060c010b200241016a22062002490d04200241017422072006200720064b1b22074100480d040240024020020d002007102a21060c010b200328020020022007102e21060b2006450d0320032007360204200320063602000b2003200241016a360208200620026a20053a00002001410b6a2d0000210502400240200328020420032802082202460d00200328020021060c010b200241016a22062002490d04200241017422072006200720064b1b22074100480d040240024020020d002007102a21060c010b200328020020022007102e21060b2006450d0320032007360204200320063602000b2003200241016a360208200620026a20053a00002001410c6a2d0000210502400240200328020420032802082202460d00200328020021060c010b200241016a22062002490d04200241017422072006200720064b1b22074100480d040240024020020d002007102a21060c010b200328020020022007102e21060b2006450d0320032007360204200320063602000b2003200241016a360208200620026a20053a00002001410d6a2d0000210502400240200328020420032802082202460d00200328020021060c010b200241016a22062002490d04200241017422072006200720064b1b22074100480d040240024020020d002007102a21060c010b200328020020022007102e21060b2006450d0320032007360204200320063602000b2003200241016a360208200620026a20053a00002001410e6a2d0000210502400240200328020420032802082202460d00200328020021060c010b200241016a22062002490d04200241017422072006200720064b1b22074100480d040240024020020d002007102a21060c010b200328020020022007102e21060b2006450d0320032007360204200320063602000b2003200241016a360208200620026a20053a00002001410f6a2d0000210502400240200328020420032802082202460d00200328020021060c010b200241016a22062002490d04200241017422072006200720064b1b22074100480d040240024020020d002007102a21060c010b200328020020022007102e21060b2006450d0320032007360204200320063602000b2003200241016a360208200620026a20053a0000200141106a2d0000210502400240200328020420032802082202460d00200328020021060c010b200241016a22062002490d04200241017422072006200720064b1b22074100480d040240024020020d002007102a21060c010b200328020020022007102e21060b2006450d0320032007360204200320063602000b2003200241016a360208200620026a20053a0000200141116a2d0000210502400240200328020420032802082202460d00200328020021060c010b200241016a22062002490d04200241017422072006200720064b1b22074100480d040240024020020d002007102a21060c010b200328020020022007102e21060b2006450d0320032007360204200320063602000b2003200241016a360208200620026a20053a0000200141126a2d0000210502400240200328020420032802082202460d00200328020021060c010b200241016a22062002490d04200241017422072006200720064b1b22074100480d040240024020020d002007102a21060c010b200328020020022007102e21060b2006450d0320032007360204200320063602000b2003200241016a360208200620026a20053a0000200141136a2d0000210502400240200328020420032802082202460d00200328020021060c010b200241016a22062002490d04200241017422072006200720064b1b22074100480d040240024020020d002007102a21060c010b200328020020022007102e21060b2006450d0320032007360204200320063602000b2003200241016a360208200620026a20053a0000200141146a2d0000210502400240200328020420032802082202460d00200328020021060c010b200241016a22062002490d04200241017422072006200720064b1b22074100480d040240024020020d002007102a21060c010b200328020020022007102e21060b2006450d0320032007360204200320063602000b2003200241016a360208200620026a20053a0000200141156a2d0000210502400240200328020420032802082202460d00200328020021060c010b200241016a22062002490d04200241017422072006200720064b1b22074100480d040240024020020d002007102a21060c010b200328020020022007102e21060b2006450d0320032007360204200320063602000b2003200241016a360208200620026a20053a0000200141166a2d0000210502400240200328020420032802082202460d00200328020021060c010b200241016a22062002490d04200241017422072006200720064b1b22074100480d040240024020020d002007102a21060c010b200328020020022007102e21060b2006450d0320032007360204200320063602000b2003200241016a360208200620026a20053a0000200141176a2d0000210502400240200328020420032802082202460d00200328020021060c010b200241016a22062002490d04200241017422072006200720064b1b22074100480d040240024020020d002007102a21060c010b200328020020022007102e21060b2006450d0320032007360204200320063602000b2003200241016a360208200620026a20053a0000200141186a2d0000210502400240200328020420032802082202460d00200328020021060c010b200241016a22062002490d04200241017422072006200720064b1b22074100480d040240024020020d002007102a21060c010b200328020020022007102e21060b2006450d0320032007360204200320063602000b2003200241016a360208200620026a20053a0000200141196a2d0000210502400240200328020420032802082202460d00200328020021060c010b200241016a22062002490d04200241017422072006200720064b1b22074100480d040240024020020d002007102a21060c010b200328020020022007102e21060b2006450d0320032007360204200320063602000b2003200241016a360208200620026a20053a00002001411a6a2d0000210502400240200328020420032802082202460d00200328020021060c010b200241016a22062002490d04200241017422072006200720064b1b22074100480d040240024020020d002007102a21060c010b200328020020022007102e21060b2006450d0320032007360204200320063602000b2003200241016a360208200620026a20053a00002001411b6a2d0000210502400240200328020420032802082202460d00200328020021060c010b200241016a22062002490d04200241017422072006200720064b1b22074100480d040240024020020d002007102a21060c010b200328020020022007102e21060b2006450d0320032007360204200320063602000b2003200241016a360208200620026a20053a00002001411c6a2d0000210502400240200328020420032802082202460d00200328020021060c010b200241016a22062002490d04200241017422072006200720064b1b22074100480d040240024020020d002007102a21060c010b200328020020022007102e21060b2006450d0320032007360204200320063602000b2003200241016a360208200620026a20053a00002001411d6a2d0000210502400240200328020420032802082202460d00200328020021060c010b200241016a22062002490d04200241017422072006200720064b1b22074100480d040240024020020d002007102a21060c010b200328020020022007102e21060b2006450d0320032007360204200320063602000b2003200241016a360208200620026a20053a00002001411e6a2d0000210502400240200328020420032802082202460d00200328020021060c010b200241016a22062002490d04200241017422072006200720064b1b22074100480d040240024020020d002007102a21060c010b200328020020022007102e21060b2006450d0320032007360204200320063602000b2003200241016a360208200620026a20053a00002001411f6a2d0000210502400240200328020420032802082202460d00200328020021060c010b200241016a22062002490d04200241017422072006200720064b1b22074100480d040240024020020d002007102a21060c010b200328020020022007102e21060b2006450d0320032007360204200320063602000b2003200241016a360208200620026a20053a0000200141206a22012004470d000b0b20002003290300370200200041086a200341086a280200360200200341106a24000f0b1033000b1035000b9a0808017f027e037f017e017f027e047f037e23004190016b22032400200341206a200020012002109d01200341206a41086a290300210420032903202105200341d0006a41186a22064200370300200341d0006a41106a22074200370300200341d0006a41086a220842003703002003420037035020034180016a41086a2200418be9c500ad428080808080018422091002220a41086a2900003703002003200a29000037038001200a102c200820002903003703002003200329038001220b3703702003200b370350200041c9b5c000ad4280808080d00184220c1002220a41086a2900003703002003200a29000037038001200a102c2007200329038001220b370300200341306a41086a220a2008290300370300200341306a41106a220d200b370300200341306a41186a220e20002903003703002003200b37037020032003290350370330200341086a200341306a4120109e01200120057d200520017d200520015820042002582004200251220f1b22101b2111200220047d2001200554ad7d200420027d2005200154ad7d20101b2112200341086a41106a2903004200200328020822101b210b2003290310420020101b21130240024020052001562004200256200f1b0d0020064200370300200742003703002008420037030020034200370350200020091002220f41086a2900003703002003200f29000037038001200f102c2008200029030037030020032003290380012201370370200320013703502000200c1002220f41086a2900003703002003200f29000037038001200f102c200341f0006a41086a200029030022013703002003200329038001220237037020072002370000200741086a2001370000200a2008290300370300200d2007290300370300200e20062903003703002003200329035037033020034200200b20127d2013201154ad7d2201201320117d22022013562001200b562001200b511b22001b37035820034200200220001b370350200341d0006a21000c010b20064200370300200742003703002008420037030020034200370350200020091002220f41086a2900003703002003200f29000037038001200f102c2008200029030037030020032003290380012201370370200320013703502000200c1002220f41086a2900003703002003200f29000037038001200f102c200341f0006a41086a200029030022013703002003200329038001220237037020072002370000200741086a2001370000200a2008290300370300200d2007290300370300200e2006290300370300200320032903503703302003427f200b20127c201320117c22022013542200ad7c220120002001200b542001200b511b22001b3703582003427f200220001b370350200341d0006a21000b200341306aad42808080808004842000ad4280808080800284100120034190016a24000b950804057f047e037f017e23004190016b2204240020044180016a41086a2205418be9c500ad42808080808001841002220641086a29000037030020042006290000370380012006102c200441f0006a41086a220720052903003703002004200429038001370370200541d6b5c000ad4280808080b001841002220641086a29000037030020042006290000370380012006102c200441306a41086a220620052903003703002004200429038001370330200441d0006a2001109f010240024041c000102a2205450d00200520042903703700002005200429033037001020052004290050370020200541086a2007290300370000200541186a2006290300370000200541286a200441d0006a41086a290000370000200541306a200441d0006a41106a2206290000370000200541386a200441d0006a41186a2208290000370000200441186a200541c000109e01200441186a41106a29030021092004290320210a200428021821072005102c4200210b200441d0006a2001200a420020071b220a20027c22022009420020071b20037c2002200a54ad7c10a0012006290300210220042903582103024020042903504200520d002003210b0c020b2008420037030020064200370300200441d0006a41086a220142003703002004420037035020044180016a41086a2205418be9c500ad4280808080800184220a1002220741086a29000037030020042007290000370380012007102c200120052903003703002004200429038001220937037020042009370350200541c9b5c000ad4280808080d00184220c1002220741086a29000037030020042007290000370380012007102c20062004290380012209370300200441306a41086a220d2001290300370300200441306a41106a220e2009370300200441306a41186a220f200529030037030020042009370370200420042903503703302004200441306a4120109e01200441106a29030021092004290308211020042802002107200842003703002006420037030020014200370300200442003703502005200a1002220641086a29000037030020042006290000370380012006102c200120052903003703002004200429038001220a3703702004200a3703502005200c1002220641086a29000037030020042006290000370380012006102c20082005290300220a370300200d2001290300370300200e200429038001220c370300200f200a3703002004200c37037020042004290350370330200442002009420020071b220920027d2010420020071b2202200354ad7d220a200220037d2203200256200a200956200a2009511b22051b37035820044200200320051b370350200441306aad4280808080800484200441d0006aad42808080808002841001420021020c010b1033000b2000200b3703002000200237030820044190016a24000ba80202017f037e230041d0006b220324002003200236020420032001360200200341086a2002ad4220862001ad841003108d0102400240200328020822010d00420021040c010b200328020c210202400240200341086a41086a2802004110490d00200141086a290000210520012900002106420121040c010b20034100360220200342013703182003410b36022c200320033602282003200341186a360234200341cc006a41013602002003420137023c200341d0b0c2003602382003200341286a360248200341346a41c49ac500200341386a10391a200335022042208620033502188410040240200328021c450d002003280218102c0b420021040b2002450d002001102c0b2000200637030820002004370300200041106a2005370300200341d0006a24000bc30401057f230041206b2202240020012d0000210302404101102a2204450d00200420033a000020012d00012103200441014102102e2204450d00200420033a000120012d00022103200441024104102e2204450d00200420033a0002200420012d00033a000320012d00042103200441044108102e2204450d00200420033a0004200420012d00053a0005200420012d00063a0006200420012d00073a000720012d00082103200441084110102e2204450d00200420033a0008200420012d00093a0009200420012d000a3a000a200420012d000b3a000b200420012d000c3a000c200420012d000d3a000d200420012d000e3a000e200420012d000f3a000f20012d00102103200441104120102e2204450d00200420033a0010200420012d00113a0011200420012d00123a0012200420012d00133a0013200420012d00143a0014200420012d00153a0015200420012d00163a0016200420012d00173a0017200420012d00183a0018200420012d00193a0019200420012d001a3a001a200420012d001b3a001b200420012d001c3a001c200420012d001d3a001d200420012d001e3a001e200420012d001f3a001f200241186a22032004ad42808080808004841006220141186a290000370300200241106a2205200141106a290000370300200241086a2206200141086a290000370300200220012900003703002001102c200041186a2003290300370000200041106a2005290300370000200041086a2006290300370000200020022903003700002004102c200241206a24000f0b1033000b800802057f037e230041c0016b22042400200441c0006a41086a2205418be9c500ad42808080808001841002220641086a290000370300200420062900003703402006102c200441206a41086a2207200529030037030020042004290340370320200541d6b5c000ad4280808080b001841002220641086a290000370300200420062900003703402006102c200441306a41086a2208200529030037030020042004290340370330200441c0006a2001109f010240024041c000102a2206450d00200620042903203700002006200429033037001020062004290040370020200641086a2007290300370000200641186a2008290300370000200641286a2005290000370000200641306a200441c0006a41106a290000370000200641386a200441c0006a41186a290000370000200441086a200641c000109e01200441086a41106a29030021092004290310210a200428020821052006102c2009420020051b210b200a420020051b21090240200242ffffe883b1de1656200342005220035022061b0d002009200b844200520d0020004200370300200041013a0018200041106a4200370300200041086a42003703000c020b4101210502402002428080e983b1de1654410020061b0d00200441c0006a41086a2205418be9c500ad42808080808001841002220641086a290000370300200420062900003703402006102c200441206a41086a2207200529030037030020042004290340370320200541d6b5c000ad4280808080b001841002220641086a290000370300200420062900003703402006102c200441306a41086a2208200529030037030020042004290340370330200441c0006a2001109f0141c000102a2206450d01200620042903203700002006200429033037001020062004290040370020200641086a2007290300370000200641186a2008290300370000200641286a2005290000370000200641306a200441c0006a41106a290000370000200641386a200441c0006a41186a290000370000410021052004200641c000410141004100109701200428020021072006102c20074101460d00200110a101200441c0006a41386a2003370300200441c0006a41306a200237030041002105200441c0006a41086a41003a0000200441c9006a2001290000370000200441d1006a200141086a290000370000200441d9006a200141106a290000370000200441e1006a200141186a290000370000200441033a004041014100200441c0006a1092010b20012002200310a201200041106a200b20037d2009200254ad7d2003200b7d2002200954ad7d2009200256200b200356200b2003511b22061b3703002000200920027d200220097d20061b370308200020053a001820002006ad3703000c010b1033000b200441c0016a24000bbb0e05057f017e027f027e027f230041f0016b22012400200141e0006a41186a4200370300200141e0006a41106a22024200370300200141e0006a41086a2203420037030020014200370360200141e0016a41086a220441b5e5c200ad4280808080f000841002220541086a290000370300200120052900003703e0012005102c20032004290300370300200120012903e001220637035020012006370360200441bce5c200ad4280808080b001841002220541086a290000370300200120052900003703e0012005102c200220012903e0012206370300200141306a41086a2003290300370300200141306a41106a2006370300200141306a41186a20042903003703002001200637035020012001290360370330200141186a200141306a412010940120012802182107200128021c210820002d000021030240024002404101102a2204450d00200420033a000020002d00012103200441014102102e2204450d00200420033a000120002d00022103200441024104102e2204450d00200420033a0002200420002d00033a000320002d00042103200441044108102e2204450d00200420033a0004200420002d00053a0005200420002d00063a0006200420002d00073a000720002d00082103200441084110102e2204450d00200420033a0008200420002d00093a0009200420002d000a3a000a200420002d000b3a000b200420002d000c3a000c200420002d000d3a000d200420002d000e3a000e200420002d000f3a000f20002d00102103200441104120102e2204450d00200420033a0010200420002d00113a0011200420002d00123a0012200420002d00133a0013200420002d00143a0014200420002d00153a0015200420002d00163a0016200420002d00173a0017200420002d00183a0018200420002d00193a0019200420002d001a3a001a200420002d001b3a001b200420002d001c3a001c200420002d001d3a001d200420002d001e3a001e200420002d001f3a001f20042d0000210320042d000121052004102c200141306a2003200541087472410676220510910202402003413f71220420012802384f0d00200141086a200128023020044105746a220410b1012001290308200141086a41086a290300844200520d00200041086a2900002106200041106a2900002109200041186a290000210a20042000290000370000200441186a200a370000200441106a2009370000200441086a2006370000200141e0006a41086a200141306a41086a280200360200200120012903303703602005200141e0006a10fc030c030b2008410020071b210402402001280234450d002001280230102c0b200141e0006a20041091020240200128026841c000490d000340200441016a210402402001280264450d002001280260102c0b200141e0006a20041091022001280268413f4b0d000b0b200141206a41086a200141e0006a41086a2207280200220336020020012001290360370320200141e0006a41186a2208200041186a290000370300200141e0006a41106a220b200041106a2900003703002007200041086a29000037030020012000290000370360024020032001280224470d00200341016a22052003490d022003410174220c2005200c20054b1b220541ffffff3f712005470d022005410574220c4100480d020240024020030d00200c102a210c0c010b20012802202003410574200c102e210c0b200c450d01200120053602242001200c3602200b200320044106746a210c200128022020034105746a22052001290360370000200541086a2007290300370000200541106a200b290300370000200541186a20082903003700002001200341016a22033602280240200341c000470d00200141e0006a41186a22084200370300200141e0006a41106a220b4200370300200141e0006a41086a2205420037030020014200370360200141e0016a41086a220341b5e5c200ad4280808080f000841002220741086a290000370300200120072900003703e0012007102c20052003290300370300200120012903e001220637035020012006370360200341bce5c200ad4280808080b001841002220741086a290000370300200120072900003703e0012007102c200141d0006a41086a20032903002206370300200120012903e001220937035020022009370000200241086a2006370000200141306a41086a2005290300370300200141306a41106a200b290300370300200141306a41186a2008290300370300200120012903603703302001200441016a360260200141306aad4280808080800484200141e0006aad4280808080c0008410010b200141e0006a41086a2203200141206a41086a280200360200200120012903203703602004200141e0006a10fc0320032000290000370300200141e0006a41106a200041086a290000370300200141e0006a41186a200041106a29000037030020014180016a200041186a2900003703002001200c360264200141023a006041014100200141e0006a1092010c020b1033000b1035000b200141f0016a24000bb11403057f037e027f230041d0036b22032400200341c8026a41086a2204418be9c500ad42808080808001841002220541086a290000370300200320052900003703c8022005102c200341386a41086a22062004290300370300200320032903c802370338200441d6b5c000ad4280808080b001841002220541086a290000370300200320052900003703c8022005102c200341b8016a41086a22072004290300370300200320032903c8023703b801200341c8026a2000109f010240024041c000102a2205450d0020052003290338370000200520032903b801370010200520032900c802370020200541086a2006290300370000200541186a2007290300370000200541286a2004290000370000200541306a200341d8026a290000370000200541386a200341c8026a41186a290000370000200320013703c802200320023703d0022005ad4280808080800884200341c8026aad428080808080028410012005102c0240200142ffffe883b1de165620024200522002501b0d00200341c8026a41086a2204418be9c500ad42808080808001841002220541086a290000370300200320052900003703c8022005102c200341386a41086a22062004290300370300200320032903c802370338200441d6b5c000ad4280808080b001841002220541086a290000370300200320052900003703c8022005102c200341b8016a41086a22072004290300370300200320032903c8023703b801200341c8026a2000109f0141c000102a2205450d0120052003290338370000200520032903b801370010200520032900c802370020200541086a2006290300370000200541186a2007290300370000200541286a2004290000370000200541306a200341c8026a41106a290000370000200541386a200341c8026a41186a290000370000200341206a200541c000109e01200341206a41106a29030021082003290328210902402003290320220a4201520d002005ad428080808080088410050b2005102c200341c8026a41086a2204418be9c500ad42808080808001841002220541086a290000370300200320052900003703c8022005102c200341386a41086a22062004290300370300200320032903c802370338200441f0b5c000ad4280808080d000841002220541086a290000370300200320052900003703c8022005102c200341b8016a41086a22072004290300370300200320032903c8023703b801200341c8026a2000109f0141c000102a2205450d0120052003290338370000200520032903b801370010200520032900c802370020200541086a2006290300370000200541186a2007290300370000200541286a2004290000370000200541306a200341d8026a220b290000370000200541386a200341c8026a41186a220c2900003700002005ad428080808080088410052005102c10a301200010a401200441e4d2c500ad42808080808001841002220541086a290000370300200320052900003703c8022005102c20062004290300370300200320032903c802370338200441a9e4c300ad4280808080e001841002220541086a290000370300200320052900003703c8022005102c20072004290300370300200320032903c8023703b801200341c8026a2000109f0141c000102a2205450d0120052003290338370000200520032903b801370010200520032900c802370020200541086a200341386a41086a290300370000200541186a200341b8016a41086a290300370000200541286a200341c8026a41086a290000370000200541306a200b290000370000200541386a200c290000370000200341c8026a200541c00010a501024020032d00c80222044102460d002005ad428080808080088410050b200341e8026a2802002107200341e4026a280200210b200341e0026a28020021062005102c0240024002400240200441037122054103460d0020050e03010003010b20040d02200b0d010c020b200741164d0d042007ad4220862006ad84200741696aad422086200641176aad8441011007200b450d010b2006102c0b200341b8026a200010a601200341c8026a20032802b802220520032802c002220610a701024020032d00c80241014722040d002006ad4220862005ad8410050b200341b8016a200341c8026a41017241800110db051a200341c8026a200341b8016a41800110db051a0240024020040d00200341386a200341c8026a41800110db051a024020032802bc02450d002005102c0b200341c8026a200341386a41800110db051a200341c0016a4120360200200341e7e485f3063602b8012003200341c8026a3602bc01200341b8026a200341b8016a10a80120033502c00242208620032802b8022205ad841005024020032802bc02450d002005102c0b200341e2c289ab063602b801200341203602c0012003200341c8026a41206a3602bc01200341b8026a200341b8016a10a80120033502c00242208620032802b8022205ad841005024020032802bc02450d002005102c0b200341203602c001200320034188036a3602bc01200341e9dabdf3063602b801200341b8026a200341b8016a10a80120033502c00242208620032802b8022205ad841005024020032802bc02450d002005102c0b200341203602c0012003200341a8036a3602bc01200341e1ea91cb063602b801200341b8026a200341b8016a10a80120033502c00242208620032802b8022205ad84100520032802bc02450d012005102c0c010b20032802bc02450d002005102c0b200341c8026a41086a2204418be9c500ad42808080808001841002220541086a290000370300200320052900003703c8022005102c200341386a41086a22062004290300370300200320032903c802370338200441e1b5c000ad4280808080f001841002220541086a290000370300200320052900003703c8022005102c200341b8016a41086a22072004290300370300200320032903c8023703b801200341c8026a2000109f0141c000102a2205450d0120052003290338370000200520032903b801370010200520032900c802370020200541086a2006290300370000200541186a2007290300370000200541286a2004290000370000200541306a200341c8026a41106a290000370000200541386a200341c8026a41186a290000370000200341086a200541c000109e01200341086a41106a290300210220032903102101200328020821042005102c2002420020041b21022001420020041b2101024020094200200aa722051b22092008420020051b220884500d000240200142ffffe883b1de165620024200522002501b0d002009200810a9010c010b2000200120097c220a200220087c200a200154ad7c220210aa01200a21010b20012002844200520d00200010ab0120034180036a2008370300200341f8026a2009370300200341c8026a41086a41013a0000200341d1026a2000290000370000200341d9026a200041086a290000370000200341e1026a200041106a290000370000200341e9026a200041186a290000370000200341033a00c80241014100200341c8026a1092010b200341d0036a24000f0b1033000b411720071047000b8f2105057f017e047f017e127f230041c0046b2200240020004188026a41186a420037030020004188026a41106a2201420037030020004188026a41086a220242003703002000420037038802200041186a41086a22034196e0c500ad4280808080f000841002220441086a290000370300200020042900003703182004102c200220032903003703002000200029031822053703a004200020053703880220034193e1c500ad4280808080e001841002220441086a290000370300200020042900003703182004102c200120002903182205370300200041e0026a41086a2002290300370300200041e0026a41106a2005370300200041e0026a41186a2003290300370300200020053703a00420002000290388023703e002200041106a200041e0026a412010940141012106024002402000280214410020002802101b220341014d0d00200321060c010b024020030e020001000b20004188026a41186a420037030020004188026a41106a2206420037030020004188026a41086a22024200370300200042003703880220004180046a41086a22034196e0c500ad4280808080f000841002220441086a29000037030020002004290000370380042004102c200220032903003703002000200029038004370388022003419de0c500ad4280808080a001841002220441086a29000037030020002004290000370380042004102c20062000290380042205370300200041e0026a41086a2002290300370300200041e0026a41106a2005370300200041e0026a41186a2003290300370300200020053703a00420002000290388023703e002200041086a200041e0026a4120109401200028020c210420002802082107200041e0026a10840420004188026a20002802e002220320002802e80210d301024020002802e402450d002003102c0b410121030240024020002d0088024101460d00200041a0046a41186a200041e0026a41186a290000370300200041a0046a41106a200041e0026a41106a290000370300200041a0046a41086a200041e0026a41086a290000370300200020002900e0023703a004410021020c010b200041a8046a20004192026a290100370300200041b0046a2000419a026a290100370300200041b7046a200041a1026a2900003700002000200029018a023703a0044100210320002d00890221020b20004180046a41086a2206200041a0046a41086a29030037030020004180046a41106a2208200041a0046a41106a29030037030020004180046a41186a200041a0046a41186a290300370300200020002903a004370380040240024020030d00200041286a41176a220320004180046a41176a290000370000200041286a41106a22092008290300370300200041286a41086a2208200629030022053703002000200029038004220a370328200041e8006a41096a2005370000200041e8006a41116a2009290300370000200041e8006a41186a2003290000370000200020023a00682000200a370069200020023a00880220004188026a41096a200829030037000020004188026a41116a200929030037000020004188026a41186a20032900003700002000200029032837008902200041e0026a10840420002802e0022103200020002802e8023602a404200020033602a00420004188026a200041a0046a10a102024020002802e402450d002003102c0b20004180046a41086a22024196e0c500ad4280808080f0008422051002220341086a29000037030020002003290000370380042003102c200041e0036a41086a2206200229030037030020002000290380043703e003200241aff8c200ad4280808080a00184220a1002220341086a29000037030020002003290000370380042003102c200041186a41086a220b2002290300370300200020002903800437031820004180046a200041e8006a109f01024041c000102a2203450d002004410020071b210c200041aa026a210d20004188026a410172210e200041b6026a210f20004195026a21104100211120004180046a41106a21120340200320002903e003370000200320002903183700102003200029008004370020200341086a2006290300370000200341186a200b290300370000200341286a2002290000370000200341306a2012290000370000200341386a20004180046a41186a221329000037000020004188026a200341c00010a002024020002d00940222044102460d002003ad428080808080088410050b200041a8016a41086a2207201041086a290000370300200041a8016a41106a2208201041106a290000370300200041a8016a41186a2209201041186a29000037030020004188016a41086a2214200f41086a29010037030020004188016a41106a2215200f41106a29010037030020004188016a41186a2216200f41186a290100370300200020102900003703a8012000200f29010037038801024020044102470d0002402011410171450d00200041a0046a41186a200041c8006a41186a290300370300200041a0046a41106a200041c8006a41106a290300370300200041a0046a41086a200041c8006a41086a290300370300200020002903483703a00420004180046a41086a22044196e0c500ad4280808080f000841002220241086a29000037030020002002290000370380042002102c200041e0036a41086a2206200429030037030020002000290380043703e003200441aff8c200ad4280808080a001841002220241086a29000037030020002002290000370380042002102c200041186a41086a22072004290300370300200020002903800437031820004180046a200041a0046a109f0141c000102a2202450d03200220002903e003370000200220002903183700102002200029038004370020200241086a2006290300370000200241186a2007290300370000200241286a2004290300370000200241306a20004180046a41106a290300370000200241386a20004180046a41186a29030037000020004188026a200241c00010ee03024020002d0098024102460d0020004180046a41106a20004188026a41106a28020036020020004180046a41086a20004188026a41086a290300370300200020002903880237038004200041e0026a2000419c026a41c20010db051a200041003a0081032000200041e0026a3602ac03200020004180046a3602a803200041c0003602e403200020023602e003200041a8036a200041e0036a108504200028028404450d00200028028004102c0b2002102c0b2003102c418ae3c300ad4280808080a0078410040c040b2000280290022111200028028c022117200028028802211820002d00b5022119200041e8016a41086a221a2007290300370300200041e8016a41106a221b2008290300370300200041e8016a41186a221c2009290300370300200041c8016a41086a22072014290300370300200041c8016a41106a22082015290300370300200041c8016a41186a22092016290300370300200020002903a8013703e80120002000290388013703c80141002114410021150240201941ff017141014722160d00200041a8036a41186a2009290300370300200041a8036a41106a2008290300370300200041a8036a41086a2007290300370300200020002903c8013703a803410121150b200041003a00d8032000200c3602d403200020113602d003200020173602cc03200020183602c803200041e0036a41186a22112009290300370300200041e0036a41106a2217200829030037030020062007290300370300200020002903c8013703e003200041e0026a41186a2207201c290300370300200041e0026a41106a2208201b290300370300200041e0026a41086a2209201a290300370300200020002903e8013703e002024020044101470d00200041a0046a41186a2007290300370300200041a0046a41106a2008290300370300200041a0046a41086a2009290300370300200020002903e0023703a004410121140b201320112903003703002012201729030037030020022006290300370300200020002903e0033703800441002104024020160d0020072013290300370300200820122903003703002009200229030037030020002000290380043703e002410121040b200e20002903a004370000200d20002903e002370000200e41086a200041a0046a41086a290300370000200e41106a200041a0046a41106a290300370000200e41186a200041a0046a41186a290300370000200d41086a2009290300370000200d41106a2008290300370000200d41186a2007290300370000200020143a008802200020043a00a9022007200041e8006a41186a22142903003703002008200041e8006a41106a22162903003703002009200041e8006a41086a2211290300370300200020002903683703e002200220051002220441086a29000037030020002004290000370380042004102c2006200229030037030020002000290380043703e0032002200a1002220441086a29000037030020002004290000370380042004102c200b2002290300370300200020002903800437031820004180046a200041e0026a109f0141c000102a2204450d01200420002903e003370000200420002903183700102004200029038004370020200441086a2006290300370000200441186a200b290300370000200441286a2002290300370000200441306a2012290300370000200441386a2013290300370000200020004188026a360284042000200041c8036a36028004200041c0003602a404200020043602a00420004180046a200041a0046a108504024020150d002004102c024020002802cc03450d0020002802c803102c0b2003102c0c040b200041c8006a41186a2007290300370300200041c8006a41106a2008290300370300200041c8006a41086a20092903003703002011200041a8036a41086a2903003703002016200041a8036a41106a2903003703002014200041a8036a41186a290300370300200020002903e002370348200020002903a8033703682004102c024020002802cc03450d0020002802c803102c0b2003102c200220051002220341086a29000037030020002003290000370380042003102c2006200229030037030020002000290380043703e0032002200a1002220341086a29000037030020002003290000370380042003102c200b2002290300370300200020002903800437031820004180046a200041e8006a109f014101211141c000102a22030d000b0b1033000b200241ff017122034102460d00418ae3c300ad4280808080a00784100420034101460d0041c4e3c300ad4280808080d0048410040b41e9e3c300ad42808080809005841004410121060b20004188026a41186a2207420037030020004188026a41106a2208420037030020004188026a41086a220242003703002000420037038802200041186a41086a22034196e0c500ad4280808080f000841002220441086a290000370300200020042900003703182004102c200220032903003703002000200029031822053703a004200020053703880220034193e1c500ad4280808080e001841002220441086a290000370300200020042900003703182004102c200041a0046a41086a2003290300220537030020002000290318220a3703a0042001200a370000200141086a2005370000200041e0026a41086a2002290300370300200041e0026a41106a2008290300370300200041e0026a41186a200729030037030020002000290388023703e0022000200636028802200041e0026aad428080808080048420004188026aad4280808080c000841001200041c0046a24000bf50d03057f017e077f23004190016b22012400200141e8006a41086a22024196e0c500ad4280808080f000841002220341086a290000370300200120032900003703682003102c200141c8006a41086a2204200229030037030020012001290368370348200241d3f8c200ad4280808080e000841002220341086a290000370300200120032900003703682003102c200141d8006a41086a2205200229030037030020012001290368370358200141e8006a2000109f0102400240024002400240024041c000102a2203450d00200320012903483700002003200129035837001020032001290068370020200341086a2004290300370000200341186a2005290300370000200341286a2002290000370000200341306a200141e8006a41106a290000370000200341386a200141e8006a41186a290000370000200141e8006a200341c00010d3010240024020012d00684101470d002003ad42808080808008841005200141086a41186a220220014181016a290000370300200141086a41106a2204200141f9006a290000370300200141086a41086a2205200141f1006a290000370300200120012900693703082003102c200141286a41186a2002290300370300200141286a41106a2004290300370300200141286a41086a200529030037030020012001290308370328200141e8006a41086a22024196e0c500ad4280808080f000841002220341086a290000370300200120032900003703682003102c200141c8006a41086a2204200229030037030020012001290368370348200241d9f8c200ad4280808080e000841002220341086a290000370300200120032900003703682003102c200141d8006a41086a2205200229030037030020012001290368370358200141e8006a200141286a109f0141c000102a2203450d02200320012903483700002003200129035837001020032001290068370020200341086a2004290300370000200341186a2005290300370000200341286a2002290000370000200341306a200141f8006a290000370000200341386a200141e8006a41186a2900003700002003ad428080808080088410052003102c0c010b2003102c0b200141e8006a41086a22024196e0c500ad4280808080f0008422061002220341086a290000370300200120032900003703682003102c200141c8006a41086a2204200229030037030020012001290368370348200241b5fdc200ad4280808080d000841002220341086a290000370300200120032900003703682003102c200141d8006a41086a2205200229030037030020012001290368370358200141e8006a2000109f0141c000102a2203450d00200320012903483700002003200129035837001020032001290068370020200341086a2004290300370000200341186a2005290300370000200341286a2002290000370000200341306a200141f8006a2204290000370000200341386a200141e8006a41186a22052900003700002003ad428080808080088410052003102c20001086042000108704200220061002220341086a290000370300200120032900003703682003102c200141086a41086a2002290300370300200120012903683703082002419bf9c200ad4280808080d001841002220341086a290000370300200120032900003703682003102c200141286a41086a200229030037030020012001290368370328200141e8006a2000109f0141c000102a2203450d00200320012903083700002003200129032837001020032001290068370020200341086a200141086a41086a290300370000200341186a200141286a41086a290300370000200341286a200141e8006a41086a2207290000370000200341306a2004290000370000200341386a2005290000370000200141e8006a200341c00010f1030240200128027022080d002003102c0c060b2003ad4280808080800884100520012802682109200129027421062003102c20082006422088a74102746a210a2006a7210b2009210c2008210441002105410041ff01710e03010203010b1033000b410121030c020b410221030c010b410021030b0340024002400240024002400240024020030e03000102020b2004200a460d03200441046a210441022103200c417f6a2202210c0c020b41002103024020054102460d0041022105200921020c020b2004200a460d02200441046a210441022105200c417f6a2202210c410221030c010b2005410247210d410121034102210520092102200d450d010b200141e8006a41186a200041186a290000370300200141e8006a41106a200041106a2900003703002007200041086a290000370300200120023602880120012000290000370368200141e8006a1088040240200341ff01710e03000203000b410121030c030b200b450d032008102c0c030b410221030c010b410021030c000b0b20014190016a24000ba40b030b7f047e047f23004180016b220324002003200236020420032001360200200341086a2002ad4220862001ad841003108d0102400240200328020822040d00200041023a00000c010b200328020c21052003200341106a280200220236022c20032004360228024002402002450d0020042d0000210120032002417f6a36022c2003200441016a360228200141014b0d0002400240024002400240024020010e020001000b200341d8006a200341286a107720032802582206450d05200328025c2107200328022c22084104490d03200341e0006a28020021092003280228220a280000210b20032008417c6a220c36022c2003200a41046a36022841002101200341003a0078417b21020c010b41002101200341003a00782002417f6a21082002417e6a21020340024020082001470d00200141ff0171450d06200341003a00780c060b200341d8006a20016a200420016a220d41016a2d00003a00002003200d41026a3602282003200141016a220d3a00782003200236022c2002417f6a2102200d2101200d4120470d000b2003200328005b3600332003200328025836023020032003280033360043200320032802303602402003200328024036025020032003280043360053200341e7006a290000210e200329005f210f200328006f21062003280073210720032d0077210920032003280053360023200320032802503602202003200341cc006a28000036001b20032003280049360218410121010c010b03400240200c2001470d000240200141ff0171450d00200341003a00780b20070d040c050b200341d8006a20016a200a20016a220d41046a2d00003a00002003200820026a36022c2003200d41056a3602282003200141016a220d3a00782002417f6a2102200d2101200d4120470d000b2003200328005b36003320032003280258360230200320032802303602402003200328003336004302400240024002402008200d6b2201417c6a4110490d00200341e7006a2900002110200329005f2111200328006f21022003280073210c20032d007721122003200a200d6a221341146a221436022820032001416c6a220a36022c200a4104490d002013410c6a290000210e201341046a290000210f2014280000210a2003200141686a36022c2003201341186a2214360228200841686a200d460d0320142d000021142003200141676a221536022c2003201341196a360228201441014b0d034100210d20140e020201020b20070d050c060b20154104490d01201341196a28000021082003200141636a36022c20032013411d6a3602284101210d0b2003200328004336005320032003280240360250200320032802503602182003200328005336001b200320032800493602202003200341cc006a280000360023410021010c010b2007450d030c020b2003200328002336005b20032003280220360258200320032802183602302003200328001b360033200041106a200e370000200041086a200f370000200041046a200328005b36000020002003280258360001200041306a20083600002000412c6a200d360000200041286a200a360000200041246a200b360000200041206a20093600002000411c6a2007360000200041186a2006360000200041c3006a20103700002000413b6a2011370000200041d3006a20123a0000200041cf006a200c360000200041cb006a2002360000200041346a2003280230360000200041376a20032800333600000c030b2007450d010b2006102c0b20034100360238200342013703302003410b360244200320033602402003200341306a360250200341ec006a41013602002003420137025c200341d0b0c2003602582003200341c0006a360268200341d0006a41c49ac500200341d8006a10391a2003350238422086200335023084100402402003280234450d002003280230102c0b410221010b200020013a00002005450d002004102c0b20034180016a24000bbc0501087f230041c0006b22022400200241086a220341ecddc500ad4280808080f000841002220441086a290000370300200220042900003703002004102c200241206a41086a200329030037030020022002290300370320200341c3fbc000ad42808080808001841002220441086a290000370300200220042900003703002004102c200241306a41086a200329030037030020022002290300370330200241b6fbc000410d1083020240024002400240024002402002280208220541206a2204417f4c0d0020022802002106024002402004450d002004102a2203450d062004410f4d0d01200421070c050b200441017422034110200341104b1b2207102a21030c030b200441017422084110200841104b1b220741004e0d010c050b103a000b200320042007102e21030b2003450d010b20032002290320370000200341086a200241206a41086a2903003700000240024020074170714110460d00200721080c010b200741017422084120200841204b1b22084100480d02200320072008102e2203450d010b20032002290330370010200341186a200241306a41086a29030037000002400240200841606a2005490d00200821070c010b200541206a22072005490d02200841017422092007200920074b1b22074100480d02200320082007102e2203450d010b200341206a2006200510db051a02402002280204450d002006102c0b20022001109f0102400240200720046b411f4d0d00200721080c010b200441206a22082004490d02200741017422062008200620084b1b22084100480d02200320072008102e2203450d010b200320046a22042002290000370000200441186a200241186a290000370000200441106a200241106a290000370000200441086a200241086a2900003700002000200541c0006a3602082000200836020420002003360200200241c0006a24000f0b1033000b1035000bd60201027f230041c0026b220324002003200236020c20032001360208200341106a2002ad4220862001ad841003108d0102400240200328021022010d00200041003a00000c010b200328021421042003200341186a2802003602ac02200320013602a802200341a0016a200341a8026a10e201410121020240024020032d00a0014101460d00200341206a200341a0016a41017241800110db051a200041016a200341206a41800110db051a0c010b4100210220034100360228200342013703202003410b3602b4022003200341086a3602b0022003200341206a3602bc02200341b4016a4101360200200342013702a401200341d0b0c2003602a0012003200341b0026a3602b001200341bc026a41c49ac500200341a0016a10391a200335022842208620033502208410042003280224450d002003280220102c0b200020023a00002004450d002001102c0b200341c0026a24000bcf0b010d7f230041d0006b22022400200241306a41086a220341ecddc500ad4280808080f000841002220441086a290000370300200220042900003703302004102c200241206a41086a200329030037030020022002290330370320200341cbfbc000ad42808080808001841002220441086a290000370300200220042900003703302004102c200241086a200329030037030020022002290330370300200241306a41b6fbc000410d1083020240024002402002280238220541206a2206417f4c0d002002280230210702400240024002402006450d002006102a2203450d052006410f4d0d01200621080c030b200641017422034110200341104b1b2208102a21030c010b200641017422044110200441104b1b22084100480d04200320062008102e21030b2003450d020b20032002290320370000200341086a200241206a41086a2903003700000240024020084170714110460d00200821040c010b200841017422044120200441204b1b22044100480d03200320082004102e2203450d020b20032002290300370010200341186a200241086a29030037000002400240200441606a2005490d00200421090c010b200541206a22082005490d032004410174220a2008200a20084b1b22094100480d03200320042009102e2203450d020b200341206a2007200510db051a02402002280234450d002007102c0b200141086a280200220a41046a2208417f4c0d000240024020080d00410121040c010b2008102a2204450d020b20024100360238200220083602342002200436023020012d00002107024020080d004101102a2204450d0220024101360234200220043602300b20024101360238200420073a000020012d0001210b02402002280234220720022802382208470d00200841016a22072008490d032008410174220c2007200c20074b1b22074100480d030240024020080d002007102a21040c010b200420082007102e21040b2004450d0220022007360234200220043602300b2002200841016a220c360238200420086a200b3a000020012d0002210d024002402007200c460d002007210b0c010b200741016a220b2007490d032007410174220e200b200e200b4b1b220b4100480d030240024020070d00200b102a21040c010b20042007200b102e21040b2004450d022002200b360234200220043602300b2002200841026a22073602382004200c6a200d3a000020012d0003210c0240200b2007470d00200b41016a220d200b490d03200b410174220e200d200e200d4b1b220d4100480d0302400240200b0d00200d102a21040c010b2004200b200d102e21040b2004450d022002200d360234200220043602300b2002200841036a360238200420076a200c3a000020012802042107200a200241306a10670240024020022802342201200228023822046b200a490d00200228023021080c010b2004200a6a22082004490d032001410174220b2008200b20084b1b220b4100480d030240024020010d00200b102a21080c010b20022802302001200b102e21080b2008450d022002200b36023420022008360230200b21010b200820046a2007200a10db051a200241306a41186a22072004200a6aad4220862008ad841006220441186a290000370300200241306a41106a220a200441106a290000370300200241306a41086a220b200441086a290000370300200220042900003703302004102c200241186a2007290300370300200241106a200a290300370300200241086a200b2903003703002002200229033037030002402001450d002008102c0b02400240200920066b411f4d0d00200921080c010b200641206a22042006490d03200941017422082004200820044b1b22084100480d03200320092008102e2203450d020b200320066a22042002290300370000200441186a200241186a290300370000200441106a200241106a290300370000200441086a200241086a2903003700002000200541c0006a3602082000200836020420002003360200200241d0006a24000f0b103a000b1033000b1035000b890a08017f017e047f017e017f017e037f017e230041b0016b22022400200241386a2000200110ce01200241386a41106a29030021012002290340210002400240024020022903382203a7450d00200241f0006a41186a22044200370300200241f0006a41106a22054200370300200241f0006a41086a2206420037030020024200370370200241a0016a41086a2207418be9c500ad428080808080018422081002220941086a290000370300200220092900003703a0012009102c20062007290300370300200220022903a00122033703900120022003370370200741c9b5c000ad4280808080d00184220a1002220941086a290000370300200220092900003703a0012009102c200520022903a0012203370300200241d0006a41086a220b2006290300370300200241d0006a41106a220c2003370300200241d0006a41186a220d2007290300370300200220033703900120022002290370370350200241206a200241d0006a4120109e01200241206a41106a29030021032002290328210e2002280220210920044200370300200542003703002006420037030020024200370370200720081002220541086a290000370300200220052900003703a0012005102c20062007290300370300200220022903a001220837039001200220083703702007200a1002220541086a290000370300200220052900003703a0012005102c200420072903002208370300200b2006290300370300200c20022903a001220a370300200d20083703002002200a3703900120022002290370370350200242002003420020091b220320017d200e420020091b2201200054ad7d2208200120007d2200200156200820035620082003511b22071b37037820024200200020071b370370200241f0006a2107200241d0006a21060c010b2003500d01200241f0006a41186a22044200370300200241f0006a41106a22054200370300200241f0006a41086a2206420037030020024200370370200241a0016a41086a2207418be9c500ad428080808080018422081002220941086a290000370300200220092900003703a0012009102c20062007290300370300200220022903a00122033703900120022003370370200741c9b5c000ad4280808080d00184220a1002220941086a290000370300200220092900003703a0012009102c200520022903a0012203370300200241d0006a41086a220b2006290300370300200241d0006a41106a220c2003370300200241d0006a41186a220d2007290300370300200220033703900120022002290370370350200241086a200241d0006a4120109e01200241086a41106a29030021032002290310210e2002280208210920044200370300200542003703002006420037030020024200370370200720081002220541086a290000370300200220052900003703a0012005102c20062007290300370300200220022903a001220837039001200220083703702007200a1002220541086a290000370300200220052900003703a0012005102c200420072903002208370300200b2006290300370300200c20022903a001220a370300200d20083703002002200a3703900120022002290370370350200242002003420020091b220320017d200e420020091b2201200054ad7d2208200120007d2200200156200820035620082003511b22071b37037820024200200020071b370370200241f0006a2107200241d0006a21060b2006ad42808080808004842007ad428080808080028410010b200241b0016a24000b8e0a02057f037e230041d0016b22032400200341d0006a41086a2204418be9c500ad42808080808001841002220541086a290000370300200320052900003703502005102c200341306a41086a2206200429030037030020032003290350370330200441e1b5c000ad4280808080f001841002220541086a290000370300200320052900003703502005102c200341c0006a41086a2207200429030037030020032003290350370340200341d0006a2000109f01024041c000102a2205450d00200520032903303700002005200329034037001020052003290050370020200541086a2006290300370000200541186a2007290300370000200541286a2004290000370000200541306a200341e0006a290000370000200541386a200341d0006a41186a29000037000020032001370350200320023703582005ad4280808080800884200341d0006aad428080808080028410012005102c0240200142ffffe883b1de165620024200522002501b0d00200341d0006a41086a2204418be9c500ad42808080808001841002220541086a290000370300200320052900003703502005102c200341306a41086a2206200429030037030020032003290350370330200441e1b5c000ad4280808080f001841002220541086a290000370300200320052900003703502005102c200341c0006a41086a2207200429030037030020032003290350370340200341d0006a2000109f0141c000102a2205450d01200520032903303700002005200329034037001020052003290050370020200541086a2006290300370000200541186a2007290300370000200541286a2004290000370000200541306a200341d0006a41106a290000370000200541386a200341d0006a41186a290000370000200341186a200541c000109e01200341186a41106a29030021082003290320210902402003290318220a4201520d002005ad428080808080088410050b2005102c200341d0006a41086a2204418be9c500ad42808080808001841002220541086a290000370300200320052900003703502005102c200341306a41086a2206200429030037030020032003290350370330200441d6b5c000ad4280808080b001841002220541086a290000370300200320052900003703502005102c200341c0006a41086a2207200429030037030020032003290350370340200341d0006a2000109f0141c000102a2205450d01200520032903303700002005200329034037001020052003290050370020200541086a2006290300370000200541186a2007290300370000200541286a2004290000370000200541306a200341d0006a41106a290000370000200541386a200341d0006a41186a2900003700002003200541c000109e01200341106a290300210220032903082101200328020021042005102c2002420020041b21022001420020041b2101024020094200200aa722051b22092008420020051b220884500d000240200142ffffe883b1de165620024200522002501b0d002009200810a9010c010b2000200120097c220a200220087c200a200154ad7c220210a201200a21010b20012002844200520d00200010ab0120034188016a200837030020034180016a2009370300200341d0006a41086a41013a0000200341d9006a2000290000370000200341e1006a200041086a290000370000200341e9006a200041106a290000370000200341f1006a200041186a290000370000200341033a005041014100200341d0006a1092010b200341d0016a24000f0b1033000bbb0201057f230041c0006b22012400200141206a41086a22024191b0c200ad4280808080e000841002220341086a290000370300200120032900003703202003102c200141086a220420022903003703002001200129032037030020024197b0c200ad4280808080c001841002220341086a290000370300200120032900003703202003102c200141106a41086a2205200229030037030020012001290320370310200141206a2000109f01024041c000102a22030d001033000b200320012903003700002003200129031037001020032001290020370020200341086a2004290300370000200341186a2005290300370000200341286a2002290000370000200341306a200141306a290000370000200341386a200141206a41186a2900003700002003ad428080808080088410052003102c200141c0006a24000bdb0402057f047e230041e0006b22052400200541c0006a41086a2206418be9c500ad42808080808001841002220741086a290000370300200520072900003703402007102c200541206a41086a2208200629030037030020052005290340370320200641d6b5c000ad4280808080b001841002220741086a290000370300200520072900003703402007102c200541306a41086a2209200629030037030020052005290340370330200541c0006a2001109f01024002400240024041c000102a2207450d00200720052903203700002007200529033037001020072005290040370020200741086a2008290300370000200741186a2009290300370000200741286a2006290000370000200741306a200541c0006a41106a290000370000200741386a200541c0006a41186a290000370000200541086a200741c000109e01200541086a41106a290300210a2005290310210b200528020821062007102c410121070240200b420020061b220b20027d220c200b56200a420020061b220a20037d200b200254ad7d220d200a56200d200a511b4101470d00200041d0b9c000360204200041086a411d3602000c040b0240200b428080e983b1de16544100200a501b0d00200c42ffffe883b1de1656200d420052200d501b0d00200041edb9c000360204200041086a411a3602000c030b200520012004200c200d10ad01200528020022070d012001200c200d10a201200041106a2003370300200041086a2002370300410021070c030b1033000b2005280204210620002007360204200041086a20063602000b410121070b20002007360200200541e0006a24000bd40f08047f017e017f047e037f027e017f017e230041d0016b22052400024002400240024002402002410671450d00200541b8016a41086a2206418be9c500ad42808080808001841002220741086a290000370300200520072900003703b8012007102c200541a8016a41086a22082006290300370300200520052903b8013703a80120064187bac000ad4280808080f000841002220741086a290000370300200520072900003703b8012007102c200541e8006a41086a22072006290300370300200520052903b80137036820054188016a2001109f0141c000102a2206450d01200620052903a801370000200620052903683700102006200529008801370020200641086a2008290300370000200641186a2007290300370000200641286a20054188016a41086a290000370000200641306a20054188016a41106a290000370000200641386a20054188016a41186a290000370000200541c00036025c20052006360258200541b8016a2006ad42808080808008841003108d010240024020052802b80122070d00420021090c010b20052802bc01210802400240200541b8016a41086a280200220a4110490d00200a4170714110460d00200a417c714120460d00200741086a290000210b2007290000210c200741186a290000210d2007290010210e2007280020210f420121090c010b20054100360270200542013703682005410b3602ac012005200541d8006a3602a8012005200541e8006a3602cc012005419c016a41013602002005420137028c01200541d0b0c200360288012005200541a8016a36029801200541cc016a41c49ac50020054188016a10391a200535027042208620053502688410040240200528026c450d002005280268102c0b420021090b2008450d002007102c0b2006102c2009500d00200541b8016a41086a2207418be9c500ad42808080808001841002220641086a290000370300200520062900003703b8012006102c200541a8016a41086a22082007290300370300200520052903b8013703a801200741d6b5c000ad4280808080b001841002220641086a290000370300200520062900003703b8012006102c200541e8006a41086a220a2007290300370300200520052903b80137036820054188016a2001109f0141c000102a2206450d01200620052903a801370000200620052903683700102006200529008801370020200641086a2008290300370000200641186a200a290300370000200641286a20054188016a41086a2208290000370000200641306a20054188016a41106a2210290000370000200641386a20054188016a41186a2211290000370000200541c0006a200641c000109e01200541c0006a41106a290300211220052903482113200528024021142006102c42002115201142003703002010420037030020084200370300200542003703880120074191b0c200ad4280808080e000841002220641086a290000370300200520062900003703b8012006102c20082007290300370300200520052903b80137038801200741acb0c200ad4280808080e000841002220641086a290000370300200520062900003703b8012006102c201020052903b8012209370300200a2008290300370300200541e8006a41106a2009370300200541e8006a41186a2007290300370300200520093703a8012005200529038801370368200541386a200541e8006a4120109401200541186a200d42004100200528023c410020052802381b2206200f6b2207200720064b1bad2209420010e005200541286a20094200200e420010e005200541086a42004200200e420010e0052012420020141b210e2013420020141b210d4200210902402005290310200529032084420052200541286a41086a2903002213200529030820052903187c7c2212201354720d00200b2012200c2005290328221556200b201256200b2012511b22061b20127d200c201520061b220b201554ad7d2109200b20157d21150b2015200d200d201556200e200956200e2009511b22061b2003562009200e20061b220920045620092004511b450d0041bfbac0002106412621010c040b200541d8006a200110ae01200528026022080d0141002106200528025c450d022005280258102c0c020b1033000b20054188016a41186a420037030020054188016a41106a220a420037030020054188016a41086a220142003703002005420037038801200541b8016a41086a22064191b0c200ad4280808080e000841002220741086a290000370300200520072900003703b8012007102c20012006290300370300200520052903b80137038801200641acb0c200ad4280808080e000841002220741086a290000370300200520072900003703b8012007102c200a20052903b8012209370300200541e8006a41086a2001290300370300200541e8006a41106a2009370300200541e8006a41186a2006290300370300200520093703a80120052005290388013703682005200541e8006a41201094012005280204410020052802001b210720084105742101200528025c21082005280258220a21060240034002402007200641106a2802004f0d002006290300200358200641086a290300220920045820092004511b0d002006411c6a2d000020027141ff01710d020b200641206a2106200141606a22010d000b410021062008450d01200a102c0c010b418ebac00021062008450d00200a102c0b413121010b2000200136020420002006360200200541d0016a24000bac09030c7f037e037f230041f0006b22022400200241286a41086a2203418be9c500ad42808080808001841002220441086a290000370300200220042900003703282004102c200241086a41086a2205200329030037030020022002290328370308200341f0b5c000ad4280808080d000841002220441086a290000370300200220042900003703282004102c200241186a41086a2206200329030037030020022002290328370318200241286a2001109f0102400240024041c000102a2204450d00200420022903083700002004200229031837001020042002290028370020200441086a2005290300370000200441186a2006290300370000200441286a2003290000370000200441306a200241386a290000370000200441386a200241286a41186a290000370000200241c00036024c20022004360248200241086a2004ad42808080808008841003108d010240024020022802082207450d00200228020c21082002200241106a280200360254200220073602502002200241d0006a107502400240024020022802000d00200228025422034160712201417f4c0d0620022802042109024002402003410576220a0d00410821010c010b2001102a2201450d060b02402009450d00411d210b4100210c4100210d0340200241186a200241d0006a10af010240024020022d00184101460d00200228025422054110490d002002290019210e20022002280250220341106a3602502002200541706a220636025420064104490d00200341086a290000210f2003290000211020022005416c6a22063602542002200341146a36025020060d010b20024100360228200a450d042001102c0c040b200d41016a210620032800102111200241ec006a41026a200241d8006a41026a2d000022123a0000200241e8006a41026a221320123a000020022005416b6a3602542002200341156a360250200220022f005822053b016c200220053b016820032d001421050240200d200a470d00200c2006200c20064b1b220a41ffffff3f71200a470d0a200a41057422034100480d0a02400240200d0d002003102a21010c010b2001200b41636a2003102e21010b2001450d080b2001200b6a2203417f6a20053a0000200341636a2205200f37030820052010370300200341776a200e370200200341736a2011360200200320022f01683b0000200341026a20132d00003a0000200c41026a210c200b41206a210b2006210d20092006470d000b200241306a20093602002002200a36022c20022001360228200229022c210e0c030b200241306a20093602002002200a36022c200220013602282001450d01200229022c210e0c020b200241003602280b4100210120024100360220200242013703182002410b36025c2002200241c8006a3602582002200241186a3602642002413c6a41013602002002420137022c200241d0b0c2003602282002200241d8006a360238200241e4006a41c49ac500200241286a10391a200235022042208620023502188410040240200228021c450d002002280218102c0b0b02402008450d002007102c0b2001450d002000200e370204200020013602000c010b20004100360208200042083702000b2004102c200241f0006a24000f0b1033000b103a000b1035000bf00204027f017e017f077e0240024020012802042202450d0020012802002203310000210420012002417f6a22053602042001200341016a3602002005450d012003310001210620012002417e6a22053602042001200341026a3602002005450d012003310002210720012002417d6a22053602042001200341036a3602002005450d012003310003210820012002417c6a22053602042001200341046a3602002005450d012003310004210920012002417b6a22053602042001200341056a3602002005450d012003310005210a20012002417a6a22053602042001200341066a3602002005450d012003310006210b2001200241796a22053602042001200341076a3602002005450d01200041003a00002003310007210c2001200241786a3602042001200341086a3602002000200c423886200b42308684200a422886842009422086842008421886842007421086842006420886842004843700010f0b200041013a00000f0b200041013a00000b831003097f027e037f230041c0006b22022400200241206a41086a2203418be9c500ad42808080808001841002220441086a290000370300200220042900003703202004102c200241086a2205200329030037030020022002290320370300200341f0b5c000ad4280808080d000841002220441086a290000370300200220042900003703202004102c200241106a41086a2204200329030037030020022002290320370310200241206a2000109f010240024041c000102a2206450d00200620022903003700002006200229031037001020062002290020370020200641086a2005290300370000200641186a2004290300370000200641286a2003290000370000200641306a200241206a41106a290000370000200641386a200241206a41186a290000370000200128020021072001280208210320024100360228200242013703202003200241206a106702402003450d0020034105742108410021090340200720096a220341146a2d0000210502400240200228022420022802282204460d00200228022021000c010b200441016a22002004490d042004410174220a2000200a20004b1b220a4100480d040240024020040d00200a102a21000c010b20022802202004200a102e21000b2000450d032002200a360224200220003602200b2002200441016a360228200020046a20053a0000200341156a2d0000210502400240200228022420022802282204460d00200228022021000c010b200441016a22002004490d042004410174220a2000200a20004b1b220a4100480d040240024020040d00200a102a21000c010b20022802202004200a102e21000b2000450d032002200a360224200220003602200b2002200441016a360228200020046a20053a0000200341166a2d0000210502400240200228022420022802282204460d00200228022021000c010b200441016a22002004490d042004410174220a2000200a20004b1b220a4100480d040240024020040d00200a102a21000c010b20022802202004200a102e21000b2000450d032002200a360224200220003602200b2002200441016a360228200020046a20053a0000200341176a2d0000210502400240200228022420022802282204460d00200228022021000c010b200441016a22002004490d042004410174220a2000200a20004b1b220a4100480d040240024020040d00200a102a21000c010b20022802202004200a102e21000b2000450d032002200a360224200220003602200b2002200441016a360228200020046a20053a0000200341186a2d0000210502400240200228022420022802282204460d00200228022021000c010b200441016a22002004490d042004410174220a2000200a20004b1b220a4100480d040240024020040d00200a102a21000c010b20022802202004200a102e21000b2000450d032002200a360224200220003602200b2002200441016a360228200020046a20053a0000200341196a2d0000210502400240200228022420022802282204460d00200228022021000c010b200441016a22002004490d042004410174220a2000200a20004b1b220a4100480d040240024020040d00200a102a21000c010b20022802202004200a102e21000b2000450d032002200a360224200220003602200b2002200441016a360228200020046a20053a00002003411a6a2d0000210502400240200228022420022802282204460d00200228022021000c010b200441016a22002004490d042004410174220a2000200a20004b1b220a4100480d040240024020040d00200a102a21000c010b20022802202004200a102e21000b2000450d032002200a360224200220003602200b2002200441016a360228200020046a20053a00002003411b6a2d0000210502400240200228022420022802282204460d00200228022021000c010b200441016a22002004490d042004410174220a2000200a20004b1b220a4100480d040240024020040d00200a102a21000c010b20022802202004200a102e21000b2000450d032002200a360224200220003602200b2002200441016a360228200020046a20053a0000200341086a290300210b2003290300210c0240024020022802242200200228022822056b4110490d00200228022021040c010b200541106a22042005490d042000410174220a2004200a20044b1b220a4100480d040240024020000d00200a102a21040c010b20022802202000200a102e21040b2004450d032002200a36022420022004360220200a21000b200420056a220a200b370008200a200c3700002002200541106a220a360228200341106a280200210d02402000200a6b41034b0d00200a41046a220e200a490d042000410174220f200e200f200e4b1b220e4100480d040240024020000d00200e102a21040c010b20042000200e102e21040b2004450d032002200e360224200220043602200b2002200541146a3602282004200a6a200d3600002003411c6a2d0000210002400240200228022420022802282203460d00200228022021040c010b200341016a22042003490d04200341017422052004200520044b1b22054100480d040240024020030d002005102a21040c010b200228022020032005102e21040b2004450d0320022005360224200220043602200b2002200341016a360228200420036a20003a00002008200941206a2209470d000b0b200228022421032006ad4280808080800884200235022842208620022802202204ad84100102402003450d002004102c0b2006102c0240200141046a280200450d002007102c0b200241c0006a24000f0b1033000b1035000bc50504027f017e057f047e230041f0006b22022400200241d0006a41086a2203418be9c500ad428080808080018422041002220541086a290000370300200220052900003703502005102c200241306a41086a2206200329030037030020022002290350370330200341d6b5c000ad4280808080b001841002220541086a290000370300200220052900003703502005102c200241c0006a41086a2207200329030037030020022002290350370340200241d0006a2001109f01024041c000102a2205450d00200520022903303700002005200229034037001020052002290050370020200541086a2006290300370000200541186a2007290300370000200541286a2003290000370000200541306a200241d0006a41106a2208290000370000200541386a200241d0006a41186a2209290000370000200241186a200541c000109e01200241186a41106a290300210a2002290320210b2002290318210c2005102c200320041002220541086a290000370300200220052900003703502005102c2006200329030037030020022002290350370330200341e1b5c000ad4280808080f001841002220541086a290000370300200220052900003703502005102c2007200329030037030020022002290350370340200241d0006a2001109f0141c000102a2205450d00200520022903303700002005200229034037001020052002290050370020200541086a200241306a41086a290300370000200541186a200241c0006a41086a290300370000200541286a200241d0006a41086a290000370000200541306a2008290000370000200541386a20092900003700002002200541c000109e01200241106a29030021042002290308210d200228020021032005102c2000200d420020031b220d200b4200200ca722051b7c220b37030020002004420020031b200a420020051b7c200b200d54ad7c370308200241f0006a24000f0b1033000be10301077f230041f0006b22022400200241d0006a41086a220341e0d9c500ad4280808080f001841002220441086a290000370300200220042900003703502004102c200241086a41086a2205200329030037030020022002290350370308200341efd9c500ad4280808080c001841002220441086a290000370300200220042900003703502004102c200241186a41086a220620032903003703002002200229035037031820022000370348200241d0006a41186a2207200241c8006aad42808080808001841006220441186a290000370300200241d0006a41106a2208200441106a2900003703002003200441086a290000370300200220042900003703502004102c200241286a41186a22042007290300370300200241286a41106a22072008290300370300200241286a41086a2208200329030037030020022002290350370328024041c000102a22030d001033000b200320022903083700002003200229031837001020032002290328370020200341086a2005290300370000200341186a2006290300370000200341286a2008290300370000200341306a2007290300370000200341386a2004290300370000200220013602502003ad4280808080800884200241d0006aad4280808080c0008410012003102c200241f0006a24000b861305067f017e027f037e057f23004180016b22042400200441c0006a41186a22054200370300200441c0006a41106a22064200370300200441c0006a41086a2207420037030020044200370340200441f0006a41086a220841e0d9c500ad4280808080f001841002220941086a290000370300200420092900003703702009102c2007200829030037030020042004290370220a3703602004200a370340200841beb9c000ad4280808080d001841002220941086a290000370300200420092900003703702009102c20062004290370220a370300200441206a41086a22092007290300370300200441206a41106a220b200a370300200441206a41186a220c20082903003703002004200a37036020042004290340370320200441186a200441206a4120410141004100109701024002400240024020042802184101460d002005420037030020064200370300200742003703002004420037034020084191b0c200ad4280808080e000841002220541086a290000370300200420052900003703702005102c2007200829030037030020042004290370370340200841acb0c200ad4280808080e000841002220541086a290000370300200420052900003703702005102c20062004290370220a37030020092007290300370300200b200a370300200c20082903003703002004200a37036020042004290340370320200441106a200441206a41201094012004280214410020042802101b2109024020024101460d00200441206a210c0c020b200441c0006a41186a22054200370300200441c0006a41106a220b4200370300200441c0006a41086a2207420037030020044200370340200441f0006a41086a220841e0d9c500ad4280808080f00184220d1002220c41086a2900003703002004200c290000370370200c102c2007200829030037030020042004290370220a3703602004200a37034020084180bfc000ad4280808080a00184220e1002220c41086a2900003703002004200c290000370370200c102c200441e0006a41086a220c2008290300220a37030020042004290370220f3703602006200f370000200641086a2210200a370000200441206a41086a22112007290300370300200441206a41106a2212200b290300370300200441206a41186a2213200529030037030020042004290340370320200441086a200441206a4120109401024002402004280208450d00200428020c20094b0d010b20054200370300200b420037030020074200370300200442003703402008200d1002221441086a290000370300200420142900003703702014102c2007200829030037030020042004290370220a3703602004200a3703402008200e1002221441086a290000370300200420142900003703702014102c200c2008290300220a37030020042004290370220f3703602006200f3700002010200a370000201120072903003703002012200b29030037030020132005290300370300200420042903403703202004200920014101746a360240200441206aad4280808080800484200441c0006aad4280808080c000841001200441206a210c0c020b200041046a280200450d022000280200102c0c020b200041046a280200450d012000280200102c0c010b20002802082107200028020421102000280200210b200441c0006a41186a22114200370300200441c0006a41106a22124200370300200441c0006a41086a2200420037030020044200370340200441f0006a41086a220841e0d9c500ad4280808080f001841002220541086a290000370300200420052900003703702005102c2000200829030037030020042004290370220a3703602004200a370340200841beb9c000ad4280808080d001841002220541086a290000370300200420052900003703702005102c200441e0006a41086a2008290300220a37030020042004290370220f3703602006200f370000200641086a200a370000200441206a41086a2000290300370300200441206a41106a2012290300370300200441206a41186a20112903003703002004200429034037032020044100360248200442013703404104102a2208450d012004410436024420042004280248220641046a36024820042008360240200820066a200936000002400240024020042802442206200428024822086b4104490d00200428024021060c010b200841046a22002008490d01200641017422082000200820004b1b22084100480d010240024020060d002008102a21060c010b200428024020062008102e21060b2006450d032004200836024420042006360240200428024821080b2004200841046a360248200620086a20013600002007200441c0006a106702402007450d00200b200741286c6a2109200b210703402007200441c0006a109101200741206a290300210a0240024020042802442206200428024822086b4108490d00200428024021060c010b200841086a22002008490d03200641017422082000200820004b1b22084100480d030240024020060d002008102a21060c010b200428024020062008102e21060b2006450d052004200836024420042006360240200428024821080b2004200841086a360248200620086a200a3700002009200741286a2207470d000b0b20042802442107200428024821080240024020024101460d000240024020072008460d00200428024021070c010b200841016a22072008490d03200841017422062007200620074b1b22064100480d030240024020080d002006102a21070c010b200428024020082006102e21070b2007450d052004200636024420042007360240200428024821080b2004200841016a360248200720086a41003a00000c010b0240024020072008460d00200428024021070c010b200841016a22072008490d02200841017422062007200620074b1b22064100480d020240024020080d002006102a21070c010b200428024020082006102e21070b2007450d042004200636024420042007360240200428024821080b2004200841016a360248200720086a41013a00000240024020042802442207200428024822086b4104490d00200428024021070c010b200841046a22062008490d02200741017422082006200820064b1b22084100480d020240024020070d002008102a21070c010b200428024020072008102e21070b2007450d042004200836024420042007360240200428024821080b2004200841046a360248200720086a20033600000b20042802442108200cad4280808080800484200435024842208620042802402207ad84100102402008450d002007102c0b2010450d01200b102c0c010b1035000b20044180016a24000f0b1033000b290020004101360204200041086a200128020420012802006b41a0016e2201360200200020013602000bf40101047f230041d0006b21020240200128020022032001280204470d00200041003602000f0b2001200341a0016a3602002002200341c2006a29000037012a2002200341ca006a290000370132200241106a220120022903303703002002200341d2006a29000037013a200241186a220420022903383703002002200341da006a2800003601422002200341de006a2f00003b0146200241206a220520022903403703002002200341c0006a2f00003b01282002200229032837030820002003360200200020022903083700042000410c6a2001290300370000200041146a20042903003700002000411c6a20052903003700000bb905020b7f047e23004190016b22032400024002402001280200220420012802042205460d002001200441a0016a22063602002003200441c2006a29000037016a2003200441ca006a290000370172200341c8006a41086a220720032903703703002003200441d2006a29000037017a200341c8006a41106a220820032903783703002003200441da006a280000360182012003200441de006a2f00003b018601200341c8006a41186a22092003290380013703002003200441c0006a2f00003b016820032003290368370348200341286a41186a220a2009290300370300200341286a41106a220b2008290300370300200341286a41086a220c200729030037030020032003290348370328200541e07e6a210d02400340200341086a41186a200a290300220e370300200341086a41106a200b290300220f370300200341086a41086a200c2903002210370300200320032903282211370308200341e8006a41186a200e370300200341e8006a41106a200f370300200341e8006a41086a2010370300200320113703682002450d01200d2004460d022001200641a0016a22053602002003200641c2006a29000037016a2003200641ca006a290000370172200720032903703703002003200641d2006a29000037017a200820032903783703002003200641da006a280000360182012003200641de006a2f00003b01860120092003290380013703002003200641c0006a2f00003b016820032003290368370348200a2009290300370300200b2008290300370300200c200729030037030020032003290348370328200441a0016a21042002417f6a2102200521060c000b0b20002004360200200020032903683702042000410c6a200341f0006a290300370200200041146a200341f8006a2903003702002000411c6a20034180016a2903003702000c010b200041003602000b20034190016a24000bfa0202057f027e230041e0006b22022400200241c0006a41086a2203418be9c500ad42808080808001841002220441086a290000370300200220042900003703402004102c200241206a41086a2205200329030037030020022002290340370320200341d6b5c000ad4280808080b001841002220441086a290000370300200220042900003703402004102c200241306a41086a2206200329030037030020022002290340370330200241c0006a2001109f01024041c000102a22040d001033000b200420022903203700002004200229033037001020042002290040370020200441086a2005290300370000200441186a2006290300370000200441286a2003290000370000200441306a200241c0006a41106a290000370000200441386a200241c0006a41186a290000370000200241086a200441c000109e01200241086a41106a290300210720022903102108200228020821032004102c20002007420020031b37030820002008420020031b370300200241e0006a24000bf60302037f037e230041f0006b22042400200441206a200110b1010240024002402004290320200441206a41086a29030084500d00200441d0006a41086a2205418be9c500ad42808080808001841002220641086a290000370300200420062900003703502006102c200441306a41086a200529030037030020042004290350370330200541d6b5c000ad4280808080b001841002220641086a290000370300200420062900003703502006102c200441c0006a41086a200529030037030020042004290350370340200441d0006a2001109f0141c000102a2205450d02200520042903303700002005200429034037001020052004290050370020200541086a200441306a41086a290300370000200541186a200441c0006a41086a290300370000200541286a200441d0006a41086a290000370000200541306a200441d0006a41106a290000370000200541386a200441d0006a41186a290000370000200441086a200541c000109e01200441086a41106a290300210720042903102108200428020821062005102c20012008420020061b220820027c22092007420020061b20037c2009200854ad7c10a201200041106a2003370300200041086a2002370300410021050c010b2000418cb5c000360204200041086a4122360200410121050b20002005360200200441f0006a24000f0b1033000b1300200041013602042000418cbfc0003602000b3400200041e0d9c50036020420004100360200200041146a4107360200200041106a418cc0c000360200200041086a420f3702000b2c01017f02404108102a22020d001033000b20004288808080800137020420002002360200200242003700000b2201017f230041106b220224002002410036020020002002109301200241106a24000beb0c0b077f017e017f017e067f027e017f027e027f017e017f230041f0006b22032400200341d0006a41186a22044200370300200341d0006a41106a2205420037030041082106200341d0006a41086a2207420037030020034200370350200341386a41086a22084191b0c200ad4280808080e000841002220941086a290000370300200320092900003703382009102c2007200829030037030020032003290338370350200841acb0c200ad4280808080e000841002220941086a290000370300200320092900003703382009102c20052003290338220a370300200341086a41086a2007290300370300200341086a41106a200a370300200341086a41186a20082903003703002003200a370328200320032903503703082003200341086a412010940120032802042108200328020021092000280000210b2000350004210c200341d0006a200110ae014100210d2003280250210e2003280254210f02400240024002400240024002400240024020032802582210450d002008410020091b2111200e201041057422106a2112200341e4006a2109200e21080340200841086a290300210a200841106a2903002113200829030021142004200841186a290300370300200520133703002007200a3703002003201437035020092000460d0220092900002000290000510d0202402003280260221520114d0d002003410a6a200341ef006a2d00003a0000200320032f006d3b0108200341d8006a2903002114427f2113200329035021164201210a20032d006c2109200329026421170c040b200841206a2108201041606a22100d000b0b200f450d02200e102c0c020b200328026022092002200920024b1b211520032d006c4102722109427f21164200211341002102200329026421174200210a4100210b427f21140b200341cc006a41026a220d200341086a41026a2d00003a0000200320032f01083b014c4120102a2206450d0420062016370300200620093a001c2006201737021420062015360210200620032f014c3b001d200620143703082006411f6a200d2d00003a00000240024020104120470d004101210d20132114410121070c010b200841206a2104201241606a2118200341ed006a2119200341e4006a2109201321144101210d41012107034020042108024002400340200341d0006a41186a200841186a290300370300200341d0006a41106a200841106a290300370300200341d0006a41086a2210200841086a290300370300200320082903003703500240024020092000460d0020092900002000290000510d002003280260220520114d0d01200341086a41026a201941026a2d00003a0000200320192f00003b0108201029030021162003290350211720032d006c21152003290264211a0c040b200a4201510d024200211341002102420021144200210a4100210b0b2012200841206a2208470d000c040b0b2010290300220a201420032903502217201356200a201456200a2014511b22101b21162017201320101b2117200328026022102002201020024b1b210520032d006c410272211542002113410021022003290264211a420021144200210a4100210b0b200341286a41026a200341086a41026a2d000022103a0000200320032f010822043b0128200341d0006a41026a221b20103a0000200320043b015002402007200d470d00200d41016a2210200d490d08200d41017422072010200720104b1b220741ffffff3f712007470d08200741057422104100480d0802400240200d0d002010102a21060c010b2006200d4105742010102e21060b2006450d070b200841206a21042006200d4105746a221020153a001c20102016370308201020173703002010201a37021420102005360210201020032f01503b001d2010411f6a201b2d00003a0000200d41016a210d20182008470d000b0b0240200f450d00200e102c0b200a4201520d03200d2007470d020c010b427f2113427f21140b200d41016a2208200d490d03200d41017422002008200020084b1b220741ffffff3f712007470d03200741057422084100480d0302400240200d0d002008102a21060c010b2006200d4105742008102e21060b2006450d020b2006200d4105746a22082014370308200820133703002008200b36021420082002360210200841186a200c42808080802084370300200d41016a210d0b2003200d36025820032007360254200320063602502001200341d0006a10b001200341f0006a24000f0b1033000b1035000be20c06077f027e017f017e037f0b7e23002206210720064180016b41607122062400200641e0006a41186a22084200370300200641e0006a41106a22094200370300200641e0006a41086a220a420037030020064200370360200641d0006a41086a220b4191b0c200ad4280808080e000841002220c41086a2900003703002006200c290000370350200c102c200a200b29030037030020062006290350370360200b41acb0c200ad4280808080e000841002220c41086a2900003703002006200c290000370350200c102c20092006290350220d370300200641206a41086a200a290300370300200641206a41106a200d370300200641206a41186a200b2903003703002006200d37034020062006290360370320200641186a200641206a4120109401200628021c210b2006280218210c2006200337033020062002370328200620043602384201210e200642013703202006200028000036023c2000350004210d200641e0006a200110ae014100210f200d2005ad42ff0183422086842110200628026021112006280264211202400240024002400240024020062802682205450d00200b4100200c1b210420112005410574220c6a2113200641f4006a21052006290320220e21022006290328221421152006290330221621172006290338221821192011210b0340200b41086a290300210d200b41106a2903002103200b290300211a2008200b41186a29030037030020092003370300200a200d3703002006201a3703600240024020052000460d0020052900002000290000510d000240200628027020044b0d002002210d420021020c020b2009290300211b2006290368211c2006290360211d2006290378211e2002210d420121020c010b4200210e4200211442002116420021184200210d2010211e2015211d2017211c2019211b0b20024201510d02200b41206a210b200d2102200c41606a220c0d000b2006200e3703202006201437032820062016370330200620183703380b2012450d012011102c0c010b2006200d3703202006201537032820062017370330200620193703384120102a2205450d022005201e3703182005201d3703002005201c370308200541106a201b37030002400240200c4120470d004101210f200d210e4101210a0c010b200b41206a210b200641f4006a2109200d210e4101210f4101210a03400240024020092000460d00200d21020340200641e0006a41186a200b41186a290300370300200641e0006a41106a220c200b41106a290300370300200641e0006a41086a200b41086a2903003703002006200b2903003703600240024020092900002000290000510d000240200628027020044b0d002002210d420021020c020b200c290300211e2006290368211a200629036021032006290378211d2002210d420121020c010b4200210e200642003703204200210d201521032017211a2019211e2010211d0b024020024201510d00200d21022013200b41206a220b470d010c050b0b200b41206a210b0c010b0240034020064200370320200d4201510d014200210d2013200b41206a220b470d000b4200210e0c030b200b41206a210b4200210e4200210d201521032017211a2019211e2010211d0b0240200a200f470d00200f41016a220c200f490d06200f410174220a200c200a200c4b1b220a41ffffff3f71200a470d06200a410574220c4100480d0602400240200f0d00200c102a21050c010b2005200f410574200c102e21050b2005450d050b2005200f4105746a220c201a370308200c2003370300200c41106a201e370300200c41186a201d370300200f41016a210f200b2013470d000b0b2012450d012011102c0c010b4100210a410821050b0240200e4201520d00200641e0006a41106a2200200641206a410872220b41106a290300370300200641e0006a41086a220c200b41086a2903003703002006200b2903003703600240200f200a470d00200f41016a220b200f490d03200f4101742209200b2009200b4b1b220a41ffffff3f71200a470d03200a410574220b4100480d0302400240200f0d00200b102a21050c010b2005200f410574200b102e21050b2005450d020b2005200f4105746a220b2006290360370300200b41106a2000290300370300200b41086a200c290300370300200b41186a2010370300200f41016a210f0b2006200f3602682006200a360264200620053602602001200641e0006a10b001200724000f0b1033000b1035000bb20302057f027e230041e0006b22042400200441c0006a41086a2205418be9c500ad42808080808001841002220641086a290000370300200420062900003703402006102c200441206a41086a2207200529030037030020042004290340370320200541e1b5c000ad4280808080f001841002220641086a290000370300200420062900003703402006102c200441306a41086a2208200529030037030020042004290340370330200441c0006a2001109f01024041c000102a22060d001033000b200620042903203700002006200429033037001020062004290040370020200641086a2007290300370000200641186a2008290300370000200641286a2005290000370000200641306a200441c0006a41106a290000370000200641386a200441c0006a41186a290000370000200441086a200641c000109e01200441086a41106a29030021092004290310210a200428020821052006102c2001200a420020051b220a2002200a200a2002562009420020051b220920035620092003511b22061b22027d20092003200920061b22037d200a200254ad7d10aa012000200337030820002002370300200441e0006a24000be70606027f017e057f027e017f037e23004180016b22052400200541306a200210b1010240024002402005290330200541306a41086a29030084500d00200541e0006a41086a2206418be9c500ad428080808080018422071002220841086a290000370300200520082900003703602008102c200541c0006a41086a200629030037030020052005290360370340200641e1b5c000ad4280808080f001841002220841086a290000370300200520082900003703602008102c200541d0006a41086a200629030037030020052005290360370350200541e0006a2001109f0141c000102a2206450d02200620052903403700002006200529035037001020062005290060370020200641086a200541c0006a41086a2209290300370000200641186a200541d0006a41086a220a290300370000200641286a200541e0006a41086a2208290000370000200641306a200541e0006a41106a220b290000370000200641386a200541e0006a41186a220c290000370000200541186a200641c000109e01200541186a41106a290300210d2005290320210e2005280218210f2006102c200820071002220641086a290000370300200520062900003703602006102c2009200829030037030020052005290360370340200841d6b5c000ad4280808080b001841002220641086a290000370300200520062900003703602006102c200a200829030037030020052005290360370350200541e0006a2002109f0141c000102a2206450d02200620052903403700002006200529035037001020062005290060370020200641086a2009290300370000200641186a200a290300370000200641286a2008290000370000200641306a200b290000370000200641386a200c2900003700002005200641c000109e01200541106a290300211020052903082107200528020021082006102c20022007420020081b22112003200e4200200f1b220e200e200356200d4200200f1b220d200456200d2004511b22061b22077c22122010420020081b2004200d20061b22107c2012201154ad7c10a2012001200e20077d200d20107d200e200754ad7d10aa01200041106a200420107d2003200754ad7d370300200041086a200320077d370300410021060c010b2000418cb5c000360204200041086a4122360200410121060b2000200636020020054180016a24000f0b1033000bd40602057f047e23004180016b22042400200441e0006a41086a2205418be9c500ad42808080808001841002220641086a290000370300200420062900003703602006102c200441c0006a41086a2207200529030037030020042004290360370340200541d6b5c000ad4280808080b001841002220641086a290000370300200420062900003703602006102c200441d0006a41086a2208200529030037030020042004290360370350200441e0006a2001109f0102400240024041c000102a2206450d00200620042903403700002006200429035037001020062004290060370020200641086a2007290300370000200641186a2008290300370000200641286a2005290000370000200641306a200441e0006a41106a290000370000200641386a200441e0006a41186a290000370000200441286a200641c000109e01200441286a41106a29030021092004290330210a200428022821052006102c0240200a420020051b220a20025422062009420020051b220920035420092003511b450d00419ccbc0002106411521050c030b200441206a20014104200a20027d220a200920037d2006ad7d220910ad01200428022022060d01200441e0006a41086a2205418be9c500ad42808080808001841002220641086a290000370300200420062900003703602006102c200441c0006a41086a2207200529030037030020042004290360370340200541e1b5c000ad4280808080f001841002220641086a290000370300200420062900003703602006102c200441d0006a41086a2208200529030037030020042004290360370350200441e0006a2001109f0141c000102a2206450d00200620042903403700002006200429035037001020062004290060370020200641086a2007290300370000200641186a2008290300370000200641286a2005290000370000200641306a200441e0006a41106a290000370000200641386a200441e0006a41186a290000370000200441086a200641c000109e01200441086a41106a290300210b2004290310210c200428020821052006102c2001200c420020051b220c20027c2202200b420020051b20037c2002200c54ad7c10aa012001200a200910a201410021060c020b1033000b200428022421050b200020053602042000200636020020044180016a24000bf90506027f017e057f027e017f027e230041f0006b22032400200341d0006a41086a2204418be9c500ad428080808080018422051002220641086a290000370300200320062900003703502006102c200341306a41086a2207200429030037030020032003290350370330200441e1b5c000ad4280808080f001841002220641086a290000370300200320062900003703502006102c200341c0006a41086a2208200429030037030020032003290350370340200341d0006a2000109f01024041c000102a2206450d00200620032903303700002006200329034037001020062003290050370020200641086a2007290300370000200641186a2008290300370000200641286a2004290000370000200641306a200341d0006a41106a2209290000370000200641386a200341d0006a41186a220a290000370000200341186a200641c000109e01200341186a41106a290300210b2003290320210c2003280218210d2006102c200420051002220641086a290000370300200320062900003703502006102c2007200429030037030020032003290350370330200441d6b5c000ad4280808080b001841002220641086a290000370300200320062900003703502006102c2008200429030037030020032003290350370340200341d0006a2000109f0141c000102a2206450d00200620032903303700002006200329034037001020062003290050370020200641086a200341306a41086a290300370000200641186a200341c0006a41086a290300370000200641286a200341d0006a41086a290000370000200641306a2009290000370000200641386a200a2900003700002003200641c000109e01200341106a290300210e20032903082105200328020021042006102c20002005420020041b220f2001200c4200200d1b22052005200156200b4200200d1b220b200256200b2002511b22061b22017c220c200e420020041b2002200b20061b22027c200c200f54ad7c10a2012000200520017d200b20027d2005200154ad7d10aa01200341f0006a24000f0b1033000b130020004104360204200041b4cbc0003602000b34002000418be9c50036020420004100360200200041146a4105360200200041106a41a4e0c000360200200041086a42083702000b3301017f02404110102a22020d001033000b2002420037000820024200370000200042908080808002370204200020023602000b13002000410336020420004194f1c0003602000b3400200041bddbc50036020420004100360200200041146a4103360200200041106a41b0f3c000360200200041086a42083702000b4d01027f230041106b2202240002404104102a22030d001033000b2002420437020420022003360200410020021067200041086a200228020836020020002002290300370200200241106a24000b8c0601077f230041d0006b22022400200241306a41086a220341bddbc500ad42808080808001841002220441086a290000370300200220042900003703302004102c200241206a41086a220520032903003703002002200229033037032020034194f6c000ad4280808080e002841002220441086a290000370300200220042900003703302004102c200241086a2206200329030037030020022002290330370300200241306a41cffac00010ca01024002400240024041c000102a2204450d00200420022903203700002004200229030037001020042002290030370020200441086a2005290300370000200441186a2006290300370000200441286a2003290000370000200441306a200241c0006a290000370000200441386a200241306a41186a2900003700002001280208220341046a2205417f4c0d01200128020021070240024020050d00410121010c010b2005102a2201450d010b2002410036023820022005360234200220013602302003200241306a10670240024020022802342206200228023822016b2003490d00200228023021050c010b200120036a22052001490d03200641017422082005200820054b1b22084100480d030240024020060d002008102a21050c010b200228023020062008102e21050b2005450d012002200836023420022005360230200821060b200520016a2007200310db051a200241306a41186a2207200120036aad4220862005ad841006220341186a290000370300200241306a41106a2201200341106a290000370300200241306a41086a2208200341086a290000370300200220032900003703302003102c200241186a2007290300370300200241106a2001290300370300200241086a20082903003703002002200229033037030002402006450d002005102c0b200441c000418001102e22040d030b1033000b103a000b1035000b20042002290300370040200441d8006a200241186a290300370000200441d0006a200241106a290300370000200441c8006a200241086a29030037000020004280818080800c37020420002004360200200241d0006a24000b920301057f230041206b2202240020012d0000210302404101102a2204450d00200420033a000020012d00012103200441014102102e2204450d00200420033a000120012d00022103200441024104102e2204450d00200420033a0002200420012d00033a000320012d00042103200441044108102e2204450d00200420033a0004200420012d00053a0005200420012d00063a0006200420012d00073a000720012d00082103200441084110102e2204450d00200420033a0008200420012d00093a0009200420012d000a3a000a200420012d000b3a000b200420012d000c3a000c200420012d000d3a000d200420012d000e3a000e200420012d000f3a000f200241186a22032004ad42808080808002841006220141186a290000370300200241106a2205200141106a290000370300200241086a2206200141086a290000370300200220012900003703002001102c200041186a2003290300370000200041106a2005290300370000200041086a2006290300370000200020022903003700002004102c200241206a24000f0b1033000bb00e030e7f017e037f230041d0026b22022400200241f0016a41086a220341bddbc500ad42808080808001841002220441086a290000370300200220042900003703f0012004102c200241e8006a41086a22052003290300370300200220022903f001370368200341b7b9c000ad4280808080f000841002220441086a290000370300200220042900003703f0012004102c200241b0016a41086a22042003290300370300200220022903f0013703b001200241f0016a2001109f01024041c000102a2201450d0020012002290368370000200120022903b001370010200120022900f001370020200141086a2005290300370000200141186a2004290300370000200141286a2003290000370000200141306a200241f0016a41106a2206290000370000200141386a200241f0016a41186a2207290000370000200241c00036024420022001360240200241c8006a2001ad42808080808008841003108d0102400240200228024822050d00410021030c010b200228024c21082002200241d0006a28020022093602ac01200220053602a80141002103200241003a00200240024002400340024020092003470d00200241003602ac01200341ff0171450d02200241003a00200c020b200220036a200520036a22042d00003a00002002200441016a3602a8012002200341016a22043a00202004210320044120470d000b200241b0026a41086a220a200241086a220b290300370300200241b0026a41106a220c200241106a220d290300370300200241b0026a41186a220e200241186a220f290300370300200220022903003703b0022002200920046b3602ac012002200241a8016a10cc0120022802202203450d00200241f0016a41186a2209200e290300370300200241f0016a41106a220e200c290300370300200241f0016a41086a220c200a290300370300200241f0016a41286a220a200b290300370300200241f0016a41306a220b200d290300370300200241f0016a41386a220d200f290300370300200220022903b0023703f0012002200229030037039002200241246a2802002104200241286a220f2903002110200241b0016a41086a200c290300370300200241b0016a41106a200e290300370300200241b0016a41186a2009290300370300200241b0016a41206a2209200229039002370300200241b0016a41286a220c200a290300370300200241b0016a41306a220a200b290300370300200241b0016a41386a220b200d290300370300200220022903f0013703b001200241f0016a200241a8016a10820120022802f0010d012004450d002003102c0b41002103200241003602b801200242013703b0012002410b36026c2002200241c0006a3602682002200241b0016a36020020024184026a4101360200200242013702f401200241d0b0c2003602f0012002200241e8006a36028002200241c49ac500200241f0016a10391a20023502b80142208620023502b001841004024020022802b401450d0020022802b001102c0b0c010b200241d8006a41086a220d200241f0016a41086a280200360200200241e8006a41086a220e200241b0016a41086a290300370300200241e8006a41106a2211200241b0016a41106a290300370300200241e8006a41186a2212200241b0016a41186a290300370300200241e8006a41206a22132009290300370300200241e8006a41286a2209200c290300370300200241e8006a41306a220c200a290300370300200241e8006a41386a220a200b290300370300200220022903f001370358200220022903b001370368200241386a200a290300370300200241306a200c290300370300200f2009290300370300200241206a2013290300370300200241186a2012290300370300200241106a2011290300370300200241086a200e290300370300200241b0026a41086a200d28020036020020022002290368370300200220022903583703b0020b2008450d002005102c0b200241f0016a41086a2205200241086a2903003703002006200241106a2903003703002007200241186a290300370300200241f0016a41206a2209200241206a290300370300200241f0016a41286a200241286a290300370300200241f0016a41306a200241306a290300370300200241f0016a41386a200241386a290300370300200220022903003703f001200241b0016a41086a2206200241b0026a41086a280200360200200220022903b0023703b00102402003450d00200020022903f00137030020002004360244200041c8006a2010370200200041386a200241f0016a41386a290300370300200041306a200241f0016a41306a290300370300200041286a200241f0016a41286a290300370300200041206a2009290300370300200041186a200241f0016a41186a290300370300200041106a200241f0016a41106a290300370300200041086a2005290300370300200041d8006a2006280200360200200041d0006a20022903b0013702000b200020033602402001102c200241d0026a24000f0b1033000b860705017f047e087f057e017f23004180026b22022400200241c0006a2001108e02024002402002290340a7450d00200041003602200c010b200241c0006a41106a290300210320022903482104200241286a2001108e0202402002290328a7450d00200041003602200c010b200241286a41106a290300210520022903302106200241206a20011075024002400240024020022802200d00200128020441306e220741306c2208417f4c0d02200228022421090240024020080d004108210a0c010b2008102a220a450d040b02402009450d004100210b0340200241003a00f801200b220c41016a210b2001280204417f6a21084100210d024002400240024003402008417f460d01200241d8016a200d6a2001280200220e2d00003a0000200120083602042001200e41016a3602002002200d41016a220e3a00f8012008417f6a2108200e210d200e4120470d000b200241b8016a41186a2208200241d8016a41186a290300370300200241b8016a41106a220d200241d8016a41106a290300370300200241b8016a41086a220e200241d8016a41086a290300370300200220022903d8013703b801200241086a2001108e022002290308a70d01200241086a41106a290300210f20022903102110200241f8006a41086a200e2903002211370300200241f8006a41106a200d2903002212370300200241f8006a41186a20082903002213370300200241d8006a41086a220d2011370300200241d8006a41106a220e2012370300200241d8006a41186a22142013370300200220022903b8012211370378200220113703582007200c470d030240200c4101742208200b2008200b4b1b2207ad42307e2211422088a70d002011a7220841004e0d030b1035000b200d41ff0171450d00200241003a00f8010b200241f8006a41086a20024198016a41086a2903003703002007450d04200a102c0c040b02400240200c0d002008102a210a0c010b200a200c41306c2008102e210a0b200a450d060b200a200c41306c6a2208200f3703082008201037030020082002290358370310200841186a200d290300370300200841206a200e290300370300200841286a2014290300370300200b2009470d000b0b200a0d010b200041003602200c030b20002004370300200020073602242000200a3602202000200637031020002003370308200041286a2009360200200041186a20053703000c020b103a000b1033000b20024180026a24000bb90d08027f017e027f017e047f027e017f037e230041e0016b22062400200641e0006a41086a2207418be9c500ad428080808080018422081002220941086a290000370300200620092900003703602009102c200641c0006a41086a220a200729030037030020062006290360370340200741d6b5c000ad4280808080b00184220b1002220941086a290000370300200620092900003703602009102c200641d0006a41086a220c200729030037030020062006290360370350200641e0006a2001109f010240024041c000102a2209450d00200920062903403700002009200629035037001020092006290060370020200941086a200a290300370000200941186a200c2903003700004128210d200941286a2007290000370000200941306a200641e0006a41106a220e290000370000200941386a200641e0006a41186a220f290000370000200641286a200941c000109e01200641286a41106a290300211020062903302111200628022821122009102c200720081002220941086a290000370300200620092900003703602009102c200a2007290300370300200620062903603703402007200b1002220941086a290000370300200620092900003703602009102c200c200729030037030020062006290360370350200641e0006a2002109f0141c000102a2209450d00200920062903403700002009200629035037001020092006290060370020200941086a200641c0006a41086a290300370000200941186a200641d0006a41086a290300370000200941286a200641e0006a41086a290000370000200941306a200e290000370000200941386a200f290000370000200641106a200941c000109e01200641106a41106a2903002113200629031821142006280210210a2009102c41dffac000210920034280a094a58d1d7c2208200354220720042007ad7c220b200454200820035a1b0d0102402011420020121b221120087d22152011562010420020121b2210200b7d2011200854ad7d220820105620082010511b4101470d0041868dc2002109411d210d0c020b20134200200a1b210b20144200200a1b21100240200342ffffe883b1de165620044200522004501b0d002010200b8450450d0041a38dc2002109411f210d0c020b200641086a200141022015200810ad01024020062802082209450d00200628020c210d0c020b0240201020037c22112010542209200b20047c2009ad7c2210200b542010200b511b450d0041c28dc2002109412d210d0c020b41002109024020012002470d000c020b024020012002412010dd050d000c020b0240201542ffffe883b1de165620084200522008501b0d0020050d004187fbc0002109411b210d0c020b20012015200810a201200641e0006a41086a2209418be9c500ad42808080808001841002220741086a290000370300200620072900003703602007102c200641c0006a41086a220a200929030037030020062006290360370340200941d6b5c000ad4280808080b001841002220741086a290000370300200620072900003703602007102c200641d0006a41086a220c200929030037030020062006290360370350200641e0006a2002109f0141c000102a2207450d00200720062903403700002007200629035037001020072006290060370020200741086a200a290300370000200741186a200c290300370000200741286a2009290000370000200741306a200641e0006a41106a290000370000200741386a200641e0006a41186a290000370000410021092006200741c0004101410041001097012006280200210a2007102c0240200a4101460d00200210a101200641e0006a41386a2010370300200641e0006a41306a2011370300200641e0006a41086a41003a0000200641e9006a2002290000370000200641f1006a200241086a290000370000200641f9006a200241106a29000037000020064181016a200241186a290000370000200641033a006041014100200641e0006a1092010b200641c8016a4200370300200641c0016a4280a094a58d1d370300200641b8016a2004370300200641b0016a2003370300200641e0006a41086a41023a0000200641e9006a200129000037000020064189016a2002290000370000200641f1006a200141086a290000370000200641f9006a200141106a29000037000020064181016a200141186a29000037000020064191016a200241086a29000037000020064199016a200241106a290000370000200641a1016a200241186a290000370000200641033a006041014100200641e0006a10920120022011201010a2014280a094a58d1d420010a9010c010b1033000b2000200d36020420002009360200200641e0016a24000be90408027f017e037f017e017f027e037f017e23004180016b2203240020012002844200522204ad2105024020040d00200341c0006a41186a22064200370300200341c0006a41106a22074200370300200341c0006a41086a2208420037030020034200370340200341f0006a41086a2204418be9c500ad428080808080018422091002220a41086a2900003703002003200a290000370370200a102c2008200429030037030020032003290370220b3703602003200b370340200441c9b5c000ad4280808080d00184220c1002220a41086a2900003703002003200a290000370370200a102c20072003290370220b370300200341206a41086a220d2008290300370300200341206a41106a220e200b370300200341206a41186a220f20042903003703002003200b37036020032003290340370320200341086a200341206a4120109e01200341086a41106a290300210b200329031021102003280208210a20064200370300200742003703002008420037030020034200370340200420091002220741086a290000370300200320072900003703702007102c20082004290300370300200320032903702209370360200320093703402004200c1002220741086a290000370300200320072900003703702007102c200620042903002209370300200d2008290300370300200e2003290370220c370300200f20093703002003200c370360200320032903403703202003200b4200200a1b370348200320104200200a1b370340200341206aad4280808080800484200341c0006aad428080808080028410010b2000200137030820002005370300200041106a200237030020034180016a24000bb3ac010f017f017e047f017e077f017e027f017e027f017e027f017e157f027e0e7f230041f0056b2200240042002101200041b0036a41186a4200370300200041b0036a41106a22024200370300200041b0036a41086a22034200370300200042003703b003200041b0046a41086a220441e5d6c500ad42808080808002841002220541086a290000370300200020052900003703b0042005102c20032004290300370300200020002903b0043703b0032004419883c100ad4280808080a001841002220541086a290000370300200020052900003703b0042005102c200220002903b0042206370300200041c0056a41086a2003290300370300200041c0056a41106a2006370300200041c0056a41186a20042903003703002000200637038803200020002903b0033703c005200041b0036a200041c0056a412010d0010240024020002802b00322070d0041012107410021080c010b20002902b4032201422088a721080b0240024002400240200841ffffff3f712008470d0020084105742204417f4c0d000240024020040d00410121090c010b2004102a2209450d020b4100210a4100210b4100210c02402008450d00200841057421052009210420072103034020042003290000370000200441186a200341186a290000370000200441106a200341106a290000370000200441086a200341086a290000370000200441206a2104200341206a2103200541606a22050d000b200841057441606a41057641016a210c2008210b0b200041b0036a41186a22084200370300200041b0036a41106a220d4200370300200041b0036a41086a22034200370300200042003703b003200041b0046a41086a220441e5d6c500ad42808080808002841002220541086a290000370300200020052900003703b0042005102c20032004290300370300200020002903b0043703b003200441eae5c200ad4280808080f000841002220541086a290000370300200020052900003703b0042005102c20004188036a41086a20042903002206370300200020002903b004220e370388032002200e370000200241086a2006370000200041c0056a41086a2003290300370300200041c0056a41106a200d290300370300200041c0056a41186a2008290300370300200020002903b0033703c005200041b0036a200041c0056a10d10120002902b403420020002802b00322031b2206422088a7220541306c220841306d21040240024020080d004101210f0c010b200441ffffff3f712004470d04200441057422084100480d042008102a220f450d022004210a0b2006a721102003410820031b210d0240024020050d00410021080c010b200541306c210541002108200f2104200d21030340200341086a2900002106200341106a290000210e20032900002111200441186a200341186a290000370000200441106a200e370000200441086a200637000020042011370000200841016a2108200441206a2104200341306a2103200541506a22050d000b0b02402010450d00200d102c0b02402001a722042001422088a7220d6b20084f0d00200d20086a2203200d490d04200441017422052003200520034b1b220341ffffff3f712003470d04200341057422054100480d040240024020040d002005102a21070c010b200720044105742005102e21070b2007450d022001422088a7210d2003ad21010b2007200d4105746a200f200841057410db051a0240200a450d00200f102c0b200041b0036a41186a220f4200370300200041b0036a41106a220a4200370300200041b0036a41086a22034200370300200042003703b003200041b0046a41086a220441e5d6c500ad42808080808002841002220541086a290000370300200020052900003703b0042005102c20032004290300370300200020002903b0043703b003200441a283c100ad42808080809001841002220541086a290000370300200020052900003703b0042005102c20004188036a41086a20042903002206370300200020002903b004220e370388032002200e370000200241086a2006370000200041c0056a41086a2003290300370300200041c0056a41106a200a290300370300200041c0056a41186a200f290300370300200020002903b0033703c005200041b0036a200041c0056a10d10120002902b403420020002802b00322041b2206422088a7220341306c220241306d210f410021050240024020020d004101210a4100210f0c010b200f41ffffff3f71200f470d04200f41057422024100480d042002102a220a450d020b2006a721122004410820041b211002402003450d00200341306c210241002105200a2104201021030340200341086a2900002106200341106a290000210e20032900002111200441186a200341186a290000370000200441106a200e370000200441086a200637000020042011370000200541016a2105200441206a2104200341306a2103200241506a22020d000b0b200d20086a211302402012450d002010102c0b024002402001a7220420136b2005490d00200142ffffffff0f8321140c010b201320056a22032013490d04200441017422082003200820034b1b220341ffffff3f712003470d04200341057422084100480d040240024020040d002008102a21070c010b200720044105742008102e21070b2007450d022003ad21140b200720134105746a200a200541057410db051a0240200f450d00200a102c0b200041c0056a10d201200041b0036a20002802c005220420002802c80510d301024020002802c405450d002004102c0b200041e0026a41086a200041b0036a41086a22032903002206370300200041e0026a41106a200041b0036a41106a2208290300220e370300200041e0026a41186a200041b0036a41186a22022903002211370300200041e0026a41206a200041b0036a41206a2d000022043a0000200020002903b00322013703e00220004188036a41206a20043a000020004188036a41186a201137030020004188036a41106a200e37030020004188036a41086a20063703002000200137038803200041b0036a20004188036a10d4010240024020002802d00322040d004104211541002108410021160c010b200041c0056a41186a2002290300370300200041c0056a41106a2008290300370300200041c0056a41086a2003290300370300200020002903b0033703c00520002902d4032106412c102a2215450d02201520002903c0053702002015200637022420152004360220201541186a200041c0056a41186a2204290300370200201541106a200041c0056a41106a2203290300370200201541086a200041c0056a41086a2208290300370200200041c0056a41206a20004188036a41206a2d00003a0000200420004188036a41186a290300370300200320004188036a41106a290300370300200820004188036a41086a29030037030020002000290388033703c005200041b0036a200041c0056a10d401024020002802d003220d0d0041012108410121160c010b41022102412c210341012108410121160340200041c0046a41186a200041b0036a41186a2903002206370300200041c0046a41106a200041b0036a41106a290300220e370300200041c0046a41086a200041b0036a41086a2903002211370300200020002903b00322013703c00420002902d4032117200041e0046a41186a220f2006370300200041e0046a41106a220a200e370300200041e0046a41086a22102011370300200020013703e004024020082016470d00200841016a22042008490d0620022004200220044b1b2216ad422c7e2206422088a70d062006a722044100480d060240024020080d002004102a21150c010b201520032004102e21150b2015450d040b201520036a220420002903e004370200200441186a200f290300370200200441106a200a290300370200200441086a2010290300370200200441246a2017370200200441206a200d360200200241026a21022003412c6a2103200841016a2108200041b0036a200041c0056a10d40120002802d003220d0d000b0b2000420037028405200041d0e1c100360280052008201320056a22046a2218ad42e0007e2206422088a70d002006a72219417f4c0d00410821120240024020190d004108211a4108211b0c010b2019102a221a450d02201a211b0b410021134100211c024020044105742202450d002002410575221cad42d8007e2206422088a70d042006a722034100480d042003102a2212450d020b02402004450d00200241606a211d200041e0036a2103200041d8036a211e2012210d41002105200721040340200041e0026a41186a220f200441186a220a290000370300200041e0026a41106a2210200441106a2213290000370300200041e0026a41086a221f200441086a2220290000370300200020042900003703e002200041c0056a41186a200a290000370300200041c0056a41106a2013290000370300200041c0056a41086a2020290000370300200020042900003703c00520004180056a200041c0056a200510d501200041b0036a41086a4200370300200041b0036a41106a4200370300200041b0036a41186a4200370300200041b0036a41206a4200370300201e4200370300200341186a200f290300370000200341106a2010290300370000200341086a201f290300370000200320002903e002370000200042003703b003200d200041b0036a41d00010db05220d41d0006a41003a0000200d41d8006a210d200441206a2104200541016a2105200241606a22020d000b201d41057641016a21130b02402014500d002007102c0b0240024020182008412c6c2204412c6d2203490d00201821210c010b201841017422052003200520034b1b2221ad42e0007e2206422088a70d042006a722034100480d040240024020180d002003102a211a0c010b201a20192003102e211a0b201a450d02201a211b0b201520046a212202400240024020080d0041002123201521240c010b200041e0046a41106a211f20152104201a21254100212302400340200041c0046a41186a2203200441186a290200370300200041c0046a41106a2205200441106a290200370300200041c0046a41086a2208200441086a290200370300200020042902003703c0042004412c6a212420042802202226450d02200441286a2802002110200441246a2802002127200041e0026a41186a22282003290300370300200041e0026a41106a22292005290300370300200041e0026a41086a222a2008290300370300200020002903c0043703e002200041d0026a200041e0026a10d6012010ad42c8007e2206422088a70d042006a72204417f4c0d04200041d0026a41086a290300211720002903d00221140240024020040d004108211e0c010b2004102a221e450d060b02400240024020100d0041002110410021200c010b202620104105746a211d410021202026210d0340200d41086a2900002106200d41106a290000210e200d2900002111200041b0036a41186a2207200d41186a290000370300200041b0036a41106a2218200e370300200041b0036a41086a22192006370300200020113703b003200d41206a210d20004180056a2104200028028405210f024003402004280200220241086a210320022f0106220a4105742104410021050240024003402004450d01200041b0036a2003412010dd052208450d02200441606a2104200541016a2105200341206a21032008417f4a0d000b2005417f6a210a0b200f450d02200f417f6a210f2002200a4102746a4194036a21040c010b0b2013200220054102746a41e8026a220328020022044d0d032012200441d8006c6a22042903202106200441286a290300210e200041e0046a41186a22024200370300201f4200370300200041e0046a41086a22054200370300200042003703e004200041b0046a41086a2204418be9c500ad42808080808001841002220841086a290000370300200020082900003703b0042008102c20052004290300370300200020002903b0043703e004200441c9b5c000ad4280808080d001841002220841086a290000370300200020082900003703b0042008102c200041b0056a41086a20042903002211370300200020002903b00422013703b005201f2001370000201f41086a2011370000200041c0056a41086a2005290300370300200041c0056a41106a201f290300370300200041c0056a41186a2002290300370300200020002903e0043703c005200041b8026a200041c0056a4120109e01200041a8026a20002903c002200041b8026a41106a290300427f420010e1052013200328020022044d0d0520004198026a2014201720002903a802420020002802b80222051b221142012011420156200041a8026a41086a290300420020051b22114200522011501b22051b2011420020051b10e1052012200441d8006c6a220441286a427f200e20062000290398027c22112006542205ad7c220120052001200e54201120065a1b22051b3703002004427f201120051b37032020004188036a41186a2205200729030037030020004188036a41106a2208201829030037030020004188036a41086a22022019290300370300200020002903b00337038803200328020021030240024020202010460d00202021040c010b201041016a22042010490d0c2010410174220f2004200f20044b1b220fad42c8007e2206422088a70d0c2006a722044100480d0c0240024020100d002004102a211e0c010b201e201041c8006c2004102e211e0b201e450d0a20102104200f21100b201e200441c8006c6a2204420037030020042003360220200441186a4200370300200441106a4200370300200441086a420037030020042000290388033702242004412c6a2002290300370200200441346a20082903003702002004413c6a2005290300370200202041016a21200b200d201d470d000b0b02402027450d002026102c0b20004190056a41186a2208202829030037030020004190056a41106a2202202929030037030020004190056a41086a220d202a290300370300200020002903e00237039005200041e0046a41186a220f4200370300201f4200370300200041e0046a41086a22034200370300200042003703e004200041b0046a41086a2204418be9c500ad42808080808001841002220541086a290000370300200020052900003703b0042005102c20032004290300370300200020002903b0043703e004200441c9b5c000ad4280808080d001841002220541086a290000370300200020052900003703b0042005102c200041b0056a41086a20042903002206370300200020002903b004220e3703b005201f200e370000201f41086a2006370000200041c0056a41086a2003290300370300200041c0056a41106a201f290300370300200041c0056a41186a200f290300370300200020002903e0043703c00520004180026a200041c0056a4120109e01200041f0016a20002903880220004180026a41106a290300427f420010e105200041e0016a2014201720002903f001420020002802800222041b220642012006420156200041f0016a41086a290300420020041b22064200522006501b22041b2006420020041b10e10520254200370308202520002903e00137030020254200370310202541186a4200370300202541286a42003703002025420137032020252020360238202520103602342025201e360230202520002903900537023c202541c4006a200d290300370200202541cc006a2002290300370200202541d4006a2008290300370200202341016a2123202541e0006a21252024210420242022470d010c040b0b41d087c600200420131038000b41a888c600200420131038000b20242022460d000340202441206a2802002203450d012024412c6a21040240202441246a280200450d002003102c0b2004212420222004470d000b0b02402016450d002015102c0b41c007102a2207450d0141f006102a222b450d014100212841142129024002402013411420134114491b222a0d004114212c410021150c010b201241a87f6a2126201341d8006c2124201b202341e0006c6a21184114211d200041b0036a41186a2116200041b0036a41106a211e200041b0036a41086a21274100211541002125034002402013450d00202421032012210403400240200441d0006a2d00000d0002400240200441206a290300220e200441286a29030022118450450d0042002106427f210e427f21110c010b427f2106200041d0016a427f427f200e201110e105200041d0016a41086a290300211120002903d001210e0b2004200e37030020042011370308200441106a2006370300200441186a20063703000b200441d8006a2104200341a87f6a22030d000b0b201b210802402023450d0002400340024020082802382204450d00200441c8006c2105200828023041206a210403402013200428020022034d0d0302402012200341d8006c6a22032d00500d0020032903202206200341286a290300220e84500d00200041b0036a2008290310200841186a2903002008290300200841086a2903002006200e10d701200320032903002206427f2006427f20002903b80320002802b00341014622021b22117c220e200e200654220d200341086a220f2903002206427f201e29030020021b22017c200dad7c220e200654200e2006511b22021b201120018450220d1b370300200f2006427f200e20021b200d1b3703000b200441c8006a2104200541b87f6a22050d000b0b200841e0006a22082018460d020c000b0b41a888c600200320131038000b202541016a21252024210420262103201221050340024020040d00201d212c0c030b200441a87f6a2104200341d8006a2103200541d0006a2108200541d8006a2202210520082d00000d000b02402004450d00200341086a2903002106200341186a290300210e200341106a2903002111200329030021014100210503400240200220056a220841d0006a2d00000d00200841086a29030022172006200120062011200e200829030022142017200841106a290300222d200841186a290300222e10d80141ff0171410146220d1b210620142001200d1b2101202e200e200d1b210e202d2011200d1b211120082003200d1b21030b2004200541d8006a2205470d000b20030d00201d212c0c020b200341013a005002402023450d002003410c6a211f200341306a2120201b21050340200541e0006a2119024020052802382208450d0020052802302104200841c8006c2108034002400240201f2004460d00200441246a2020412010dd050d010b200541186a22022903002101200341086a220d2903002106200529031021112003290300210e20032903102117200441186a200341186a220f290300370300200441106a2017370300200420064200200620017d200e201154ad7d2217200e20117d2214200e56201720065620172006511b220a1b20112001845022101b3703082004200e42002014200a1b20101b370300200d2903002106200f290300210e2003290300211120052003290310370320200541286a200e37030020052011370310200220063703000b200441c8006a2104200841b87f6a22080d000b0b2019210520192018470d000b0b2016200341c8006a290000370300201e200341c0006a2900003703002027200341386a290000370300200020032900303703b003200341286a29030021062003290320210e024002402015201d460d00201d212c0c010b201d41016a2204201d490d06201d41017422032004200320044b1b222cad42307e2211422088a70d062011a722044100480d0602400240201d0d002004102a21070c010b2007201d41306c2004102e21070b2007450d04201d2115202c211d0b20272903002111201e29030021012016290300211720002903b00321142007201541306c6a2204200e37032020042014370300200441286a2006370300200441186a2017370300200441106a2001370300200441086a2011370300201541016a21152025202a490d000b0b02402023450d00201b202341e0006c6a2124201541306c211841142129200041c0056a41186a2119200041c0056a41106a211d200041c0056a41086a212541002128201b211f03402019201f41d4006a290000370300201d201f41cc006a2900003703002025201f41c4006a2900003703002000201f29003c3703c0050240201f2802382204450d00201f280230220a200441c8006c6a2120201f41106a211e41002110410421134100210f0340200a220d41246a2105200d41c8006a210a410021082018210320072104024003402003450d01024020052004460d0020042005412010dd052102200841016a2108200341506a2103200441306a210420020d010b0b418094ebdc0321040240201e200d10d9010d00410021030240200d290310201f29032085200d41186a290300201f41286a29030085844200520d00200041b0036a428094ebdc034200200d290300200d41086a290300201e290300201e41086a29030010d70120002802b0034101460d0120002903b803220e42ff93ebdc0356200041b0036a41106a29030022064200522006501b0d01200ea721030b200321040b200020043602b0032000418094ebdc033602b403200041b0036a2004418094ebdc034b4102746a2802002103200041b0036a41186a2205200d413c6a290000370300200041b0036a41106a2208200d41346a290000370300200041b0036a41086a2202200d412c6a2900003703002000200d2900243703b00302400240200f2010460d00200f21040c010b201041016a22042010490d092010410174220d2004200d20044b1b220dad42247e2206422088a70d092006a722044100480d090240024020100d002004102a21130c010b2013201041246c2004102e21130b2013450d0720102104200d21100b2013200441246c6a220420002903b003370200200229030021062008290300210e2005290300211120042003360220200441186a2011370200200441106a200e370200200441086a2006370200200f41016a210f0b200a2020470d000b024002400240200f450d0002400240200f41246c22050d00410021030c010b201341206a2104410021030340200428020020036a2103200441246a21042005415c6a22050d000b0b02404100418094ebdc0320036b22042004418094ebdc034b1b220d200f6e2204418094ebdc032004418094ebdc03491b2202450d00201341206a2104410021030340200f2003460d032000417f2004280200220520026a220820082005491b22053602b0032000418094ebdc033602b4032004200041b0036a2005418094ebdc034b4102746a280200360200200441246a2104200f200341016a2203470d000b0b0240200d2002200f6c6b2202450d00410021040340200f2004200f7022034d0d042000417f2013200341246c6a2203280220220541016a220820082005491b22053602b0032000418094ebdc033602b4032003200041b0036a2005418094ebdc034b4102746a280200360220200441016a22042002490d000b0b200041b0036a41186a22032019290300370300200041b0036a41106a2205201d290300370300200041b0036a41086a22082025290300370300200020002903c0053703b003024020282029470d00202941016a22042029490d0a202941017422022004200220044b1b2204ad422c7e2206422088a70d0a2006a722024100480d0a0240024020290d002002102a212b0c010b202b2029412c6c2002102e212b0b202b450d0820292128200421290b202b2028412c6c6a220420002903b003370200200829030021062005290300210e200329030021112004200f3602282004201036022420042013360220200441186a2011370200200441106a200e370200200441086a2006370200202841016a21280c030b2010450d022013102c0c020b41d087c6002003200f1038000b41d087c6002003200f1038000b201f41e0006a221f2024470d000b0b0240201c450d002012102c0b02402023450d00202341e0006c2103201b41306a210403400240200441046a280200450d002004280200102c0b200441e0006a2104200341a07f6a22030d000b0b02402021450d00201a102c0b20002802800520002802840520002802880510da010240024020070d0041012113200041013a00b403200041093a00b00341014100200041b0036a109201200041c0056a21020c010b42002106200041b0036a41186a4200370300200041b0036a41106a222f420037030041082108200041b0036a41086a22034200370300200042003703b003200041b0046a41086a220441e5d6c500ad42808080808002841002220541086a290000370300200020052900003703b0042005102c20032004290300370300200020002903b004220e370388032000200e3703b003200441eae5c200ad4280808080f000841002220541086a290000370300200020052900003703b0042005102c202f20002903b004220e370300200041c0056a41086a2003290300370300200041c0056a41106a200e370300200041c0056a41186a20042903003703002000200e37038803200020002903b0033703c005200041b0036a200041c0056a10d101024020002802b0032204450d00200041c0056aad4280808080800484100520002902b4032106200421080b2006422088a7220441306c220341306d2130410021220240024020030d0041012131410021300c010b203041ffffff3f712030470d05203041057422034100480d052003102a2231450d030b2006a7210202402004450d00200441306c21054100212220312104200821030340200341086a2900002106200341106a290000210e20032900002111200441186a200341186a290000370000200441106a200e370000200441086a200637000020042011370000202241016a2122200441206a2104200341306a2103200541506a22050d000b0b02402002450d002008102c0b42002106200041b0036a41186a22024200370300200041b0036a41106a220d420037030041082108200041b0036a41086a22034200370300200042003703b003200041b0046a41086a220441e5d6c500ad42808080808002841002220541086a290000370300200020052900003703b0042005102c20032004290300370300200020002903b004220e370388032000200e3703b003200441a283c100ad42808080809001841002220541086a290000370300200020052900003703b0042005102c20004188036a41086a2004290300220e370300200020002903b004221137038803202f2011370000202f41086a200e370000200041c0056a41086a2003290300370300200041c0056a41106a200d290300370300200041c0056a41186a2002290300370300200020002903b0033703c005200041b0036a200041c0056a10d101024020002802b0032204450d00200041c0056aad4280808080800484100520002902b4032106200421080b2006422088a7220441306c220341306d21324100211b0240024020030d0041012133410021320c010b203241ffffff3f712032470d05203241057422034100480d052003102a2233450d030b2006a7210202402004450d00200441306c21054100211b20332104200821030340200341086a2900002106200341106a290000210e20032900002111200441186a200341186a290000370000200441106a200e370000200441086a200637000020042011370000201b41016a211b200441206a2104200341306a2103200541506a22050d000b0b02402002450d002008102c0b024002400240201541306c2203450d00200721040340200441286a2903002106200441206a290300210e200041e0046a41186a200441186a290200370300200041e0046a41106a200441106a290200370300200041e0046a41086a200441086a290200370300200020042902003703e004200e2006844200520d02200441306a2104200341506a22030d000b0b410121184100211e0240202c0d00410021190c020b2007102c410021190c010b200041e0026a41086a2205200041e0046a41086a290300370300200041e0026a41106a2208200041e0046a41106a290300370300200041e0026a41186a2202200041e0046a41186a290300370300200020002903e004220637039005200020063703e0024120102a2218450d03201820002903e002370000201841186a2002290300370000201841106a2008290300370000201841086a20052903003700000240024020034130470d004101211e410121190c010b200441306a21052007201541306c6a220241506a210d4101211e4101211903402005210402400340200441286a2903002106200441206a290300210e200041e0046a41186a2203200441186a290200370300200041e0046a41106a2205200441106a290200370300200041e0046a41086a2208200441086a290200370300200020042902003703e004200e2006844200520d012002200441306a2204470d000c030b0b200041c0056a41086a20082903002206370300200041c0056a41106a2005290300220e370300200041c0056a41186a20032903002211370300200020002903e00422013703c00520004190056a41186a2208201137030020004190056a41106a220f200e37030020004190056a41086a220a2006370300200020013703900502402019201e470d00201e41016a2203201e490d08201e41017422052003200520034b1b221941ffffff3f712019470d08201941057422034100480d0802400240201e0d002003102a21180c010b2018201e4105742003102e21180b2018450d060b200441306a21052018201e4105746a2203200029039005370000200341186a2008290300370000200341106a200f290300370000200341086a200a290300370000201e41016a211e200d2004470d000b0b202c450d002007102c0b200042003702e402200041d0e1c1003602e0020240201e450d00201e410574210320182104034020004188036a41186a200441186a29000037030020004188036a41106a200441106a29000037030020004188036a41086a200441086a2900003703002000200429000037038803200041b0036a41186a4200370300200041b0036a41106a4200370300200041b0036a41086a4200370300200042003703b003200041003602d803200042083703d003200041c0056a200041e0026a20004188036a200041b0036a10db01024020002802e0052205450d0020002802e405450d002005102c0b200441206a2104200341606a22030d000b0b02402028412c6c2204450d00202b20046a2120200041e0046a41106a2113418be9c500ad42808080808001842117202b211003400240201028022841246c2204450d002010280220221220046a211f0340200041c0016a201010d601200041c0016a41086a290300210e20002903c0012111200041e0046a41186a2208420037030020134200370300200041e0046a41086a22034200370300200042003703e004200041b0046a41086a220420171002220541086a290000370300200020052900003703b0042005102c20032004290300370300200020002903b0043703e004200441c9b5c000ad4280808080d001841002220541086a290000370300200020052900003703b0042005102c200041b0056a41086a20042903002206370300200020002903b00422013703b00520132001370000201341086a2006370000200041c0056a41086a2003290300370300200041c0056a41106a2013290300370300200041c0056a41186a2008290300370300200020002903e0043703c005200041a8016a200041c0056a4120109e0120004198016a20002903b001200041a8016a41106a290300427f420010e10520004188016a2011200e200029039801420020002802a80122041b22064201200642015620004198016a41086a290300420020041b22064200522006501b22041b2006420020041b10e105200041f8006a2000290388012206428094ebdc0380220e4200201222023502202211420010e005200041f8006a41086a2903002000290378220120112006200e4280ec94a37c7e7c7e22062006428094ebdc038022064280ec94a37c7e7c4280cab5ee01562006a76aad7c2206200154ad7c210e200241246a2112200041e0026a210420002802e402210f024003402004280200220d41086a2103200d2f0106220a4105742104410021050240024003402004450d0120022003412010dd052208450d02200441606a2104200541016a2105200341206a21032008417f4a0d000b2005417f6a210a0b200f450d02200f417f6a210f200d200a4102746a41f8066a21040c010b0b200d41e8026a200541306c6a2104024020022010460d0020022010412010dd05450d002004427f2004290310221120067c220120012011542203200441186a22052903002211200e7c2003ad7c220120115420012011511b22031b3703102005427f200120031b37030020004188036a41186a2202201041186a29000037030020004188036a41106a220d201041106a29000037030020004188036a41086a220f201041086a2900003703002000201029000037038803200441286a2105200441206a2108024020042802282203200441246a280200470d00200341016a22042003490d0b2003410174220a2004200a20044b1b220aad42307e2211422088a70d0b2011a722044100480d0b0240024020030d002004102a21040c010b2008280200200341306c2004102e21040b2004450d0920082004360200200841046a200a360200200528020021030b2008280200200341306c6a220420002903880337030020042006370320200441186a2002290300370300200441106a200d290300370300200441086a200f290300370300200441286a200e3703002005200528020041016a3602000c010b2004427f2004290300221120067c220120012011542203200441086a22052903002211200e7c2003ad7c220120115420012011511b22031b3703002005427f200120031b3703002004427f2004290310221120067c220620062011542203200441186a22052903002206200e7c2003ad7c220e200654200e2006511b22031b3703102005427f200e20031b3703000b2012201f470d000b0b2010412c6a22102020470d000b0b4108213420004190056a41086a200041e0026a41086a280200360200200020002903e0023703900502400240201e0d00410021354100212a0c010b201e41057422044105752235ad42307e2206422088a70d052006a722034100480d052003102a2234450d03201820046a211e200041e0046a41106a21134100212a418be9c500ad428080808080018421172034210d2018210f0340200f41086a2900002106200f41106a290000210e200f2900002111200041b0036a41186a2212200f41186a290000370300200041b0036a41106a221f200e370300200041b0036a41086a22202006370300200020113703b003200f41206a210f20004190056a2104200028029405210a024003402004280200220241086a210320022f01062210410574210441002105024003402004450d01200041b0036a2003412010dd052208450d03200441606a2104200541016a2105200341206a21032008417f4a0d000b2005417f6a21100b0240200a450d00200a417f6a210a200220104102746a41f8066a21040c010b0b41cec4c10041da001054000b20004188036a41186a2208201229030037030020004188036a41106a220a201f29030037030020004188036a41086a22102020290300370300200020002903b003370388032002200541306c6a22044180036a290300210e200441f8026a2903002111200041e0046a41186a2202420037030020134200370300200041e0046a41086a22034200370300200042003703e004200041b0046a41086a220420171002220541086a290000370300200020052900003703b0042005102c20032004290300370300200020002903b0043703e004200441c9b5c000ad4280808080d001841002220541086a290000370300200020052900003703b0042005102c200041b0056a41086a20042903002206370300200020002903b00422013703b00520132001370000201341086a2006370000200041c0056a41086a2003290300370300200041c0056a41106a2013290300370300200041c0056a41186a2002290300370300200020002903e0043703c005200041e0006a200041c0056a4120109e01200041d0006a2000290368200041e0006a41106a290300427f420010e105200041c0006a20002903504200200028026022041b220642012006420156200041d0006a41086a290300420020041b22064200522006501b22041b2006420020041b2011200e10e005200d41186a2008290300370300200d41106a200a290300370300200d41086a2010290300370300200d200029038803370300200d41286a200041c0006a41086a290300370300200d2000290340370320202a41016a212a200d41306a210d200f201e470d000b0b02402019450d002018102c0b4100213602400240202a410d202a410d491b22370d004108211341002126410021230c010b203741306c2204102a2213450d03024020040d0041002126203721230c010b203741306c210841002105410021260340203420056a22042903002106200441086a290300210e200441106a2903002111200441186a2903002101201320056a220341286a200441286a290300370300200341206a200441206a290300370300200341186a2001370300200341106a2011370300200341086a200e37030020032006370300202641016a21262008200541306a2205470d000b0240024020264115490d0020264101762238ad42307e2206422088a70d042006a72204417f4c0d040240024020040d00410821394108210a0c010b2004102a2239450d062039210a0b201341506a213a201341f07e6a213b410421204100213c41002124410021122026212503402025210d41002125410121020240200d417f6a2205450d000240024002400240024002402013200541306c6a200d41306c220f20136a41a07f6a412010dd054100480d00200d417e6a2108203b200f6a210441002125410021030340024020082003470d00200d21020c080b200341016a2103200441306a2004412010dd052105200441506a21042005417f4a0d000b200341016a21022003417f73200d6a21050c010b203b200f6a210402400340024020054101470d00410021050c020b2005417f6a2105200441306a2004412010dd052103200441506a210420034100480d000b0b200d2005490d01200d20264b0d03200d20056b22024101762208450d00203a200f6a21042013200541306c6a21030340200041b0036a41286a220f200341286a2210290300370300200041b0036a41206a221f200341206a221e290300370300200041b0036a41186a2218200341186a2219290300370300200041b0036a41106a221d200341106a2225290300370300200041b0036a41086a2215200341086a2223290300370300200020032903003703b003200441086a22162903002106200441106a2227290300210e200441186a221a2903002111200441206a221c2903002101200441286a222129030021172003200429030037030020102017370300201e2001370300201920113703002025200e370300202320063703002021200f290300370300201c201f290300370300201a20182903003703002027201d29030037030020162015290300370300200420002903b003370300200441506a2104200341306a21032008417f6a22080d000b0b024020050d00200521250c050b0240200241094d0d00200521250c050b200d20264b0d01200d20056b21082013200541306c6a210f0340200d2005417f6a2225490d040240200d20256b22024102490d002013200541306c6a22042013202541306c6a2205412010dd05417f4a0d002005290300210620052004290300370300200041b0036a41286a2218200541286a2203290300370300200041b0036a41206a2219200541206a2210290300370300200041b0036a41186a221d200541186a221f290300370300200041b0036a41106a2215200541106a221e290300370300200041b0036a41086a2223200541086a22162903003703002016200441086a290300370300201e200441106a290300370300201f200441186a2903003703002010200441206a2903003703002003200441286a290300370300200020063703b0034101211e024020024103490d00200541e0006a200041b0036a412010dd05417f4a0d0041022103200f210402400340200441286a200441d8006a290300370300200441206a200441d0006a290300370300200441186a200441c8006a290300370300200441106a200441c0006a290300370300200441086a200441386a2903003703002004200441306a221029030037030020082003460d01200441e0006a211f2003211e20102104200341016a2103201f200041b0036a412010dd05417f4a0d020c000b0b2003211e0b2005201e41306c6a220420002903b003370300200441286a2018290300370300200441206a2019290300370300200441186a201d290300370300200441106a2015290300370300200441086a20232903003703000b2025450d05200f41506a210f200841016a2108202521052002410a4f0d050c000b0b2005200d1047000b200d2005417f6a2225490d010b200d2026103f000b2025200d1047000b02402012203c470d00203c41016a2204203c490d09203c41017422032004200320044b1b220441ffffffff01712004470d09200441037422034100480d0902400240203c0d002003102a21200c010b2020203c4103742003102e21200b2020450d072004213c202421120b202020124103746a2204200236020420042025360200202441016a221221240240024020124102490d0002400340024002400240024020202012417f6a22244103746a2204280200450d00201241037420206a220841746a2802002205200428020422034d0d000240201241024b0d0020122124410221122025450d080c090b20202012417d6a221e4103746a2802042204200320056a4d0d010240201241034b0d0020122124410321122025450d080c090b200841646a280200200420056a4d0d01201221240c060b20124103490d012004280204210320202012417d6a221e4103746a28020421040b20042003490d010b2012417e6a211e0b0240024002400240024002402012201e41016a22154b2223450d002012201e4b2216450d012020201e4103746a2218280204222720182802006a2204202020154103746a2219280200221d490d02200420264b0d032013201d41306c6a22102019280204221f41306c22036a2108200441306c21052004201d6b220d201f6b2204201f4f0d0420392008200441306c220310db051a200a20036a210202400240201f4101480d00200441014e0d010b20082104200a21050c060b203a20056a21032008210403402003200441506a2208200241506a220d200d2008412010dd05410048220f1b2205290300370300200341286a200541286a290300370300200341206a200541206a290300370300200341186a200541186a290300370300200341106a200541106a290300370300200341086a200541086a2903003703002002200d200f1b21020240201020082004200f1b2204490d00200a21050c070b200341506a2103200a2105200a2002490d000c060b0b41d087c600201520121038000b41d087c600201e20121038000b201d20041047000b20042026103f000b20392010200310db051a200a20036a210202400240201f4101480d00200d201f4a0d010b20102104200a21050c010b201320056a210f200a210520102104034020042008200520082005412010dd05410048220d1b2203290300370300200441286a200341286a290300370300200441206a200341206a290300370300200441186a200341186a290300370300200441106a200341106a290300370300200441086a200341086a2903003703002005200541306a200d1b2105200441306a2104200841306a2008200d1b2208200f4f0d01200220054b0d000b0b20042005200220056b220320034130706b10db051a02402016450d002018201d360200201841046a2027201f6a3602002023450d022019201941086a20122015417f736a41037410dc051a20242112202441014d0d030c010b0b41a888c600201e20121038000b418ab4c000411d41acfec5001036000b20250d010b0b0240203c450d002020102c0b2038450d012039102c0c010b20264102490d002026417f6a2103202641306c20136a41506a21024101210503400240024002400240202620032204417f6a2203490d00202620036b220d4102490d032013200441306c6a22042013200341306c6a2208412010dd05417f4a0d032008290300210620082004290300370300200041b0036a41286a2212200841286a220f290300370300200041b0036a41206a221f200841206a220a290300370300200041b0036a41186a2220200841186a2210290300370300200041b0036a41106a221e200841106a2218290300370300200041b0036a41086a2219200841086a221d290300370300201d200441086a2903003703002018200441106a2903003703002010200441186a290300370300200a200441206a290300370300200f200441286a290300370300200020063703b00341012104200d4103490d02200841e0006a200041b0036a412010dd05417f4a0d024100210d200221040340200441286a200441d8006a290300370300200441206a200441d0006a290300370300200441186a200441c8006a290300370300200441106a200441c0006a290300370300200441086a200441386a2903003703002004200441306a220a2903003703002005200d220f460d02200f417f6a210d200441e0006a2110200a21042010200041b0036a412010dd05417f4a0d020c000b0b200320261047000b4102200f6b21040b2008200441306c6a220420002903b003370300200441286a2012290300370300200441206a201f290300370300200441186a2020290300370300200441106a201e290300370300200441086a20192903003703000b200241506a21022005417f6a210520030d000b0b203721230b2013202641306c6a221220136b220341306e21040240024020030d004101211d0c010b200441057422034100480d052003102a221d450d03200421360b0240024020132012470d00410021050c010b2013202641306c6a210841002105201d210420132103034020042003290000370000200441186a200341186a290000370000200441106a200341106a290000370000200441086a200341086a290000370000200541016a2105200441206a21042008200341306a2203470d000b0b024002402034202a41306c6a2034203741306c6a6b22040d0041082118410021160c010b200441306e211620044100480d052004102a2218450d030b02400240202a410d4b0d00410121274100210a2018210f410121100c010b203741306c202a41306c22046b2108200420346a41506a21044100210a201821030340200441086a2903002106200441106a290300210e200441186a290300211120042903002101200341286a200441286a290300370300200341206a200441206a290300370300200341186a2011370300200341106a200e370300200341086a200637030020032001370300200341306a2103200441506a2104200a41016a210a200841306a22080d000b200a41ffffff3f71200a470d05200a41057422044100480d052004102a2210450d032018200a41306c6a210f410021270b024002402018200f470d00410021080c010b410021082010210420182103034020042003290000370000200441186a200341186a290000370000200441106a200341106a290000370000200441086a200341086a290000370000200841016a2108200441206a2104200f200341306a2203470d000b0b200041b0036a201d20052031202210dc01200041c4036a280200220d41ffffff3f71200d470d01200d410574221f417f4c0d01200041c0036a280200212a20002802bc03211520002802b403212220002802b003211a02400240201f0d00410121200c010b201f102a2220450d030b02400240200d0d0041002104410021030c010b200d41057421022020210420152103034020042003290000370000200441186a200341186a290000370000200441106a200341106a290000370000200441086a200341086a290000370000200441206a2104200341206a2103200241606a22020d000b200d41057441606a41057641016a2103200d21040b20202003201d200510dd0102402004450d002020102c0b02400240201f0d00410121190c010b201f102a2219450d030b02400240200d0d004100210d410021040c010b200d41057421052019210420152103034020042003290000370000200441186a200341186a290000370000200441106a200341106a290000370000200441086a200341086a290000370000200441206a2104200341206a2103200541606a22050d000b200d41057441606a41057641016a21040b200041b0036a201020082033201b10dc01200041c4036a2802002105200041c0036a280200210220002802bc032103024020002802b403450d0020002802b003102c0b02400240200d20046b20054105742205410575221f490d002004201f6a2125200d21240c010b2004201f6a22252004490d05200d410174221f2025201f20254b1b222441ffffff3f712024470d052024410574221f4100480d0502400240200d0d00201f102a21190c010b2019200d410574201f102e21190b2019450d030b201920044105746a2003200510db051a02402002450d002003102c0b0240200c450d002009200c4105746a211f024020260d0020084105742102200921080340200841086a2900002106200841106a290000210e20082900002111200041c0056a41186a200841186a290000370300200041c0056a41106a200e370300200041c0056a41086a2006370300200020113703c005200841206a210820022103201021040240024003402003450d01200041c0056a2004460d02200341606a21032004200041c0056a412010dd052105200441206a210420050d000c020b0b200041206a200041c0056a4280809aa6eaafe301420010bf012000290320200041206a41086a29030010a9010b2008201f470d000c020b0b200841057421202026410146211e2009210d0340200d41086a2900002106200d41106a290000210e200d2900002111200041c0056a41186a200d41186a290000370300200041c0056a41106a200e370300200041c0056a41086a2006370300200020113703c005410021030240201e0d0041002103202621050340200041b0036a41186a20132005410176220820036a220241306c6a220441186a290000370300200041b0036a41106a200441106a290000370300200041b0036a41086a200441086a290000370300200020042900003703b00320022003200041b0036a200041c0056a412010dd054101481b2103200520086b220541014b0d000b0b200d41206a210d200041b0036a41186a2013200341306c6a220441186a290000370300200041b0036a41106a200441106a290000370300200041b0036a41086a200441086a290000370300200020042900003703b00320202103201021040240200041b0036a200041c0056a412010dd05450d00024003402003450d01200041c0056a2004460d02200341606a21032004200041c0056a412010dd052105200441206a210420050d000c020b0b200041306a200041c0056a4280809aa6eaafe301420010bf012000290330200041306a41086a29030010a9010b200d201f470d000b0b0240200b450d002009102c0b02402025450d0020254105742103201921040340200441086a2900002106200441106a290000210e20042900002111200041b0036a41186a200441186a290000370300200041b0036a41106a200e370300200041b0036a41086a2006370300200020113703b003200041106a200041b0036a4280809aa6eaafe301420010bf012000290310200041106a41086a29030010a901200441206a2104200341606a22030d000b0b02402024450d002019102c0b200041b0036a41186a22084200370300200041b0036a41106a22024200370300200041b0036a41086a22034200370300200042003703b003200041b0046a41086a220441e5d6c500ad42808080808002841002220541086a290000370300200020052900003703b0042005102c20032004290300370300200020002903b004220637038803200020063703b003200441eae5c200ad4280808080f000841002220541086a290000370300200020052900003703b0042005102c20004188036a41086a20042903002206370300200020002903b004220e37038803202f200e370000202f41086a2006370000200041c0056a41086a2003290300370300200041c0056a41106a2002290300370300200041c0056a41186a2008290300370300200020002903b0033703c005200041003602b803200042013703b0032026200041b0036a1067024002402026450d002013210403402004200041b0036a109101200441286a2903002106200441206a290300210e0240024020002802b403220820002802b80322036b4110490d0020002802b00321050c010b200341106a22052003490d08200841017422032005200320054b1b22024100480d080240024020080d002002102a21050c010b20002802b00320082002102e21050b2005450d06200020023602b403200020053602b00320002802b8032103200221080b200520036a220220063700082002200e3700002000200341106a22033602b8032012200441306a2204470d000c020b0b20002802b803210320002802b403210820002802b00321050b200041c0056aad428080808080048422112003ad4220862005ad84100102402008450d002005102c0b200041b0036a41186a22084200370300200041b0036a41106a22024200370300200041b0036a41086a22034200370300200042003703b003200041b0046a41086a220441e5d6c500ad42808080808002841002220541086a290000370300200020052900003703b0042005102c20032004290300370300200020002903b004220637038803200020063703b003200441a283c100ad42808080809001841002220541086a290000370300200020052900003703b0042005102c20004188036a41086a20042903002206370300200020002903b004220e37038803202f200e370000202f41086a2006370000200041c0056a41086a2003290300370300200041c0056a41106a2002290300370300200041c0056a41186a2008290300370300200020002903b0033703c005200041003602b803200042013703b003200a200041b0036a1067024002402027450d0020002802b803210320002802b403210820002802b00321050c010b2018210403402004200041b0036a109101200441286a2903002106200441206a290300210e0240024020002802b403220820002802b80322036b4110490d0020002802b00321050c010b200341106a22052003490d07200841017422032005200320054b1b22024100480d070240024020080d002002102a21050c010b20002802b00320082002102e21050b2005450d05200020023602b403200020053602b00320002802b8032103200221080b200520036a220220063700082002200e3700002000200341106a22033602b803200f200441306a2204470d000b0b20112003ad4220862005ad84100102402008450d002005102c0b2026ad42307e2206422088a70d012006a72204417f4c0d010240024020040d004108210d0c010b2004102a220d450d030b0240024020122013470d00410021050c010b2013202641306c6a210841002105200d2104201321030340200341086a2903002106200341106a290300210e200341186a290300211120032903002101200441286a200341286a290300370300200441206a200341206a290300370300200441186a2011370300200441106a200e370300200441086a200637030020042001370300200441306a2104200541016a21052008200341306a2203470d000b0b2005ad42307e2206422088a70d012006a72204417f4c0d010240024020040d004108210f0c010b2004102a220f450d030b410021080240200541306c2202450d0041002108200f2104200d21030340200341086a2903002106200341106a290300210e200341186a290300211120032903002101200441286a200341286a290300370300200441206a200341206a290300370300200441186a2011370300200441106a200e370300200441086a200637030020042001370300200441306a2104200841016a2108200341306a2103200241506a22020d000b0b200041c0036a2008360200200041bc036a2005360200200041b8036a200f360200200041003a00b403200041093a00b003200020002f00c0053b00b5032000200041c2056a2d00003a00b70341014100200041b0036a10920102402026450d00200d102c0b0240202a450d002015102c0b02402022450d00201a102c0b0240200a450d002010102c0b02402016450d002018102c0b02402036450d00201d102c0b02402023450d002013102c0b02402035450d002034102c0b200028029805210220002802900521040240024020002802940522050d00200421030c010b2005210820042103034020032802f80621032008417f6a22080d000b0340200420042f01064102746a41f8066a28020021042005417f6a22050d000b0b200041cc036a20042f0106360200200041c8036a4100360200200041c4036a2004360200200020023602d003200041003602c003200042003703b803200020033602b403200041003602b003200041b0036a10de0102402032450d002033102c0b02402030450d002031102c0b02402028450d002028412c6c2103202b41206a210403400240200441046a280200450d002004280200102c0b2004412c6a2104200341546a22030d000b0b41002113200041c0056a21022029450d00202b102c0b200041b0036a41186a22054200370300200041b0036a41106a22084200370300200041b0036a41086a22034200370300200042003703b003200041b0046a41086a220441e5d6c500ad428080808080028422061002220d41086a2900003703002000200d2900003703b004200d102c20032004290300370300200020002903b004220e370388032000200e3703b0032004419883c100ad4280808080a001841002220d41086a2900003703002000200d2900003703b004200d102c200820002903b004220e370300200041c0056a41086a220d2003290300370300200041c0056a41106a220f200e370300200041c0056a41186a220a20042903003703002000200e37038803200020002903b0033703c0052002ad4280808080800484220e1005200542003703002008420037030020034200370300200042003703b003200420061002221041086a290000370300200020102900003703b0042010102c20032004290300370300200020002903b004221137038803200020113703b003200441f5d6c500ad4280808080e0018422111002221041086a290000370300200020102900003703b0042010102c200520042903002201370300200d2003290300370300200f20002903b0042217370300200a20013703002000201737038803200020002903b0033703c005200041086a2002412010940120002802082102200028020c2110200542003703002008420037030020034200370300200042003703b003200420061002220841086a290000370300200020082900003703b0042008102c20032004290300370300200020002903b004220637038803200020063703b003200420111002220841086a290000370300200020082900003703b0042008102c200520042903002206370300200d2003290300370300200f20002903b0042211370300200a20063703002000201137038803200020002903b0033703c0052000201041016a410120021b3602b003200e200041b0036aad4280808080c0008410010240024020070d00200b450d042013410173450d010c040b2013450d030240202c450d002007102c0b02402028450d002028412c6c2103202b41206a210403400240200441046a280200450d002004280200102c0b2004412c6a2104200341546a22030d000b0b02402029450d00202b102c0b200b450d030b2009102c0c020b103a000b1033000b200041f0056a24000f0b1035000bbc0201017f230041e0006b220324002003200236020c20032001360208200341106a2002ad4220862001ad841003108d0102400240200328021022010d00200041003602000c010b200328021421022003200341106a41086a28020036022420032001360220200341c8006a200341206a108201024002402003280248450d0020002003290348370200200041086a200341c8006a41086a2802003602000c010b20034100360230200342013703282003410b36023c2003200341086a3602382003200341286a360244200341dc006a41013602002003420137024c200341d0b0c2003602482003200341386a360258200341c4006a41c49ac500200341c8006a10391a2003350230422086200335022884100420004100360200200328022c450d002003280228102c0b2002450d002001102c0b200341e0006a24000bbc0201027f230041e0006b220224002002412036020c20022001360208200241106a2001ad42808080808004841003108d0102400240200228021022010d00200041003602000c010b200228021421032002200241106a41086a28020036022420022001360220200241c8006a200241206a107f024002402002280248450d0020002002290348370200200041086a200241c8006a41086a2802003602000c010b20024100360230200242013703282002410b36023c2002200241086a3602382002200241286a360244200241dc006a41013602002002420137024c200241d0b0c2003602482002200241386a360258200241c4006a41c49ac500200241c8006a10391a2002350230422086200235022884100420004100360200200228022c450d002002280228102c0b2003450d002001102c0b200241e0006a24000bb30303047f017e017f230041d0006b22012400200141c0006a41086a220241e5d6c500ad42808080808002841002220341086a290000370300200120032900003703402003102c200141206a41086a2204200229030037030020012001290340370320200241a2fbc000ad4280808080d001841002220341086a290000370300200120032900003703402003102c200141306a41086a20022903002205370300200141086a2004290300370300200141186a20053703002001200129034022053703302001200129032037030020012005370310024002404101450d004120210402400240024002404120450d004120102a22020d010c050b411021044110102a2202450d04200141106a210320022001290300370000200241086a200141086a2903003700000c010b20022001290300370000200241086a200141086a290300370000200141106a21034120210641204110470d010b20022004200441017422064120200641204b1b2206102e2202450d020b20022003290000370010200241186a200341086a290000370000200041203602082000200636020420002002360200200141d0006a24000f0b103a000b1033000bd50302047f047e230041f0006b220324002003200236020c20032001360208200341106a2002ad4220862001ad841003108d0102400240200328021022040d00200041003a00000c010b200341186a28020021052003280214210641002101200341003a006802400340024020052001470d000240200141ff0171450d00200341003a00680b4100210120034100360228200342013703202003410b3602442003200341086a3602402003200341206a36026c200341dc006a41013602002003420137024c200341d0b0c2003602482003200341c0006a360258200341ec006a41c49ac500200341c8006a10391a200335022842208620033502208410042003280224450d022003280220102c0c020b200341c8006a20016a200420016a2d00003a00002003200141016a22023a00682002210120024120470d000b200341206a41186a200341c8006a41186a2903002207370300200341206a41106a200341c8006a41106a2903002208370300200341206a41086a200341c8006a41086a290300220937030020032003290348220a370320200041196a2007370000200041116a2008370000200041096a20093700002000200a370001410121010b200020013a00002006450d002004102c0b200341f0006a24000bbe0703037f047e037f23002202210320024180036b41607122022400200141186a22042900002105200420022903f80137000020012900102106200120022903f00137001020012900082107200120022903e801370008200241003a00e00120012900002108200120022903e0013700002002200537039801200220063703900120022007370388012002200837038001200141206a2d00002104200241e0016a41176a22092005370000200241e0016a41106a220a200229009101370300200241e0016a41086a220b20022900890137030020022002290081013703e001024002402008a741ff01714101460d00200041003602200c010b200241186a41176a2009290000370000200241186a41106a200a290300370300200241186a41086a200b290300370300200220022903e001370318200220043a0037200241d0016a200241186a108402200241e0016a20022802d001220420022802d80110a002024020022d00ec014102470d00200241003602c802200242013703c002200241d0026a41146a410d360200200241dc026a410b360200200241103602ec02200241e5d6c5003602e8022002410b3602d402200241073602f402200241affbc0003602f0022002200241d0016a3602e0022002200241f0026a3602d8022002200241e8026a3602d0022002200241c0026a3602fc02200241386a41146a41033602002002420337023c200241a89cc5003602382002200241d0026a360248200241fc026a41c49ac500200241386a10391a20023502c80242208620023502c00284100420004100360220024020022802c402450d0020022802c002102c0b20022802d401450d0120022802d001102c200324000f0b20024180016a200241e0016a41d00010db051a024020022802d401450d002004102c0b200241d0026a41086a220420024180016a41086a28020036020020022002290380013703d002200241386a2002418c016a41c20010db051a200141206a200241f9006a2d00003a0000200141186a200241f1006a290000370000200141106a200241e9006a290000370000200141086a200241e1006a29000037000020012002290059370000200241e0016a41186a200241186a41186a2903002205370300200241e0016a41106a200241186a41106a2903002208370300200241e0016a41086a200241186a41086a2903002206370300200020022903182207370200200041086a2006370200200041106a2008370200200041186a2005370200200220073703e001200041206a20022903d002370200200041286a2004280200360200200324000f0b200324000bac1b03087f047e107f23004180056b22032400200341d0006a41186a200141186a290000370300200341d0006a41106a200141106a290000370300200341d0006a41086a200141086a290000370300200320012900003703500240024002402000280200220441d0e1c100460d00200028020421050c010b41002105200341c0016a410041e00210da051a200341b8016a22014100360200200341b0016a2206420037030020034190016a41186a420037030020034190016a41106a420037030020034190016a41086a42003703002003420037039001419403102a2204450d01200441003b010620044100360200200441086a200341c0016a41e00210db051a20044190036a200128020036020020044188036a200629030037020020044180036a200341a8016a290300370200200441f8026a200341a0016a290300370200200441f0026a20034190016a41086a29030037020020042003290390013702e80220004100360204200020043602000b024002400340200441086a2106200441066a210720042f010622084105742101410021090240024003402001450d01200341d0006a2006412010dd05220a450d02200141606a2101200941016a2109200641206a2106200a417f4a0d000b2009417f6a21080b2005450d022005417f6a2105200420084102746a4194036a28020021040c010b0b200420094102746a41e8026a20023602000c010b200341086a41186a200341d0006a41186a2201290300220b370300200341086a41106a200341d0006a41106a2206290300220c370300200341086a41086a200341d0006a41086a2209290300220d37030020032003290350220e3703082000200028020841016a3602082001200b3703002006200c3703002009200d3703002003200e37035002400240024020072f01002205410b490d00200341c0016a410041e00210da051a200341b8016a22014100360200200341b0016a2206420037030020034190016a41186a420037030020034190016a41106a420037030020034190016a41086a42003703002003420037039001419403102a220f450d04200f41003b0106200f4100360200200f41086a200341c0016a41e00210db052109200f4190036a2001280200360200200f4188036a2006290300370200200f4180036a20034190016a41186a290300370200200f41f8026a20034190016a41106a290300370200200f41f0026a20034190016a41086a290300370200200f2003290390013702e802200320042f00c8013b018c012003200441ca016a2d00003a008e01200441cb016a2800002110200441cf016a2800002111200441d3016a2800002112200441d7016a28000021132003200441e0016a29000037007d200320042900db0137037820042802800321142009200441e8016a20042f010641796a220141057410db052109200f41e8026a20044184036a200141027410db05210a200441063b0106200f20013b0106200320032f018c013b0174200320032d008e013a007620032003290378370390012003200329007d3700950120084107490d01200f41066a210720092008417a6a22054105746a2009200841796a22064105746a2209200141ffff037120066b41057410dc051a200941186a200341d0006a41186a290300370000200941106a200341d0006a41106a290300370000200941086a200341d0006a41086a29030037000020092003290350370000200a20054102746a2109200a20064102746a21010c020b200441086a220a200841016a22004105746a200a20084105746a220a200520086b41057410dc051a200a41186a2001290300370000200a41106a2006290300370000200a41086a2009290300370000200a2003290350370000200441e8026a220120004102746a200120084102746a220120042f010620086b41027410dc051a20012002360200200420042f010641016a3b01060c020b200441086a2201200841016a22064105746a200120084105746a220120072f010020086b41057410dc051a200141186a200341d0006a41186a290300370000200141106a200341d0006a41106a290300370000200141086a200341d0006a41086a29030037000020012003290350370000200441e8026a220920084102746a2101200920064102746a2109200821060b2009200120072f010020066b41027410dc051a20012002360200200720072f010041016a3b0100200341f0006a41026a221520032d007622013a00002003413c6a41026a221620013a000020032003290095013700452003200329039001370340200320032f017422013b01702003200329004537002d20032003290340370328200320013b013c024020042802002205450d0020042f01042107200341c0016a41027221170340201520162d00003a0000200320032f013c3b0170200320032903283703502003200329002d370055200741ffff0371210402400240024020052f01062201410b490d002017410041be0310da051a41c403102a220a450d06200a4100360200200a41046a200341c0016a41c00310db051a200320052f00c8013b018c012003200541ca016a2d00003a008e012003200541db016a2900003703782003200541e0016a29000037007d200541cb016a2800002118200541cf016a2800002119200541d3016a280000211a200541d7016a280000211b20054180036a280200211c200a41086a200541e8016a20052f0106220641796a220141057410db05211d200a41e8026a20054184036a200141027410db05211e200a4194036a200541b0036a2006417a6a220841027410db052102200541063b0106200a20013b010602402008450d00410021012002210603402006280200220920013b01042009200a360200200641046a21062008200141016a2201470d000b0b200320032d008e0122013a0076200320032f018c0122063b017420032003290378370390012003200329007d37009501200341c0006a41026a220820013a0000200320063b014020032003290390013703c00120032003290095013700c501200741ffff037122064107490d01201d2004417a6a22094105746a201d200441796a22014105746a2206200a2f010620016b41057410dc051a200641186a20032900553700002006201336000f2006201236000b2006201136000720062010360003200641026a20152d00003a0000200620032f01703b000020062003290350370013201e200941027422066a201e20014102746a2207200a2f0106221020016b41027410dc051a20072014360200200a201041016a22073b01062004410274221020026a416c6a200220066a2206200741ffff0371220420096b41027410dc051a2006200f36020020042009490d02200a20106a41fc026a2106034020062802002209200141016a22013b01042009200a360200200641046a210620012004490d000c030b0b200541086a2206200441016a22094105746a200620044105746a2206200120046b41057410dc051a200641186a20032900553700002006201336000f2006201236000b2006201136000720062010360003200641026a200341f0006a41026a2d00003a0000200620032f01703b000020062003290350370013200541e8026a2201200941027422066a20012004410274220a6a220120052f0106220820046b41027410dc051a200120143602002005200841016a22013b0106200a20054194036a22046a41086a200420066a2206200141ffff0371220a20096b41027410dc051a2006200f360200200741ffff0371200a4f0d0420052009417f6a22014102746a4198036a2106034020062802002209200141016a22013b010420092005360200200641046a21062001200a490d000c050b0b200541086a2201200441016a22074105746a200120044105746a220120052f010620046b41057410dc051a200141186a20032900553700002001201336000f2001201236000b2001201136000720012010360003200141026a20152d00003a0000200120032f01703b000020012003290350370013200541e8026a2209200741027422026a2009200441027422016a220920052f0106221020046b41027410dc051a200920143602002005201041016a22093b0106200120054194036a22106a41086a201020026a2202200941ffff0371220920076b41027410dc051a2002200f360200200620094f0d00200520016a4198036a2101034020012802002206200441016a22043b010420062005360200200141046a210120092004470d000b0b201620082d00003a0000200320032f01403b013c200320032903c001370328200320032900c50137002d0240200528020022010d0020182110201b2113201a211220192111200a210f201c21140c020b20052f0104210720182110201b2113201a21122019211120012105201c2114200a210f0c000b0b200341c0016a410272410041be0310da051a41c403102a2201450d0120014100360200200141046a200341c0016a41c00310db051a20012000280200220636029403200020013602002000200028020441016a360204200641003b010420062001360200200120012f010622094105746a220641086a20032f013c3b00002006410a6a2003413c6a41026a2d00003a0000200641176a2013360000200641136a20123600002006410f6a20113600002006410b6a20103600002006411b6a2003290328370000200641206a200329002d37000020014194036a200941016a22064102746a200f360200200120094102746a41e8026a2014360200200120063b0106200f20063b0104200f20013602000b20034180056a24000f0b1033000bfa0202057f027e230041e0006b22022400200241c0006a41086a220341e5d6c500ad42808080808002841002220441086a290000370300200220042900003703402004102c200241206a41086a2205200329030037030020022002290340370320200341fdfbc000ad4280808080f000841002220441086a290000370300200220042900003703402004102c200241306a41086a2206200329030037030020022002290340370330200241c0006a2001109f01024041c000102a22040d001033000b200420022903203700002004200229033037001020042002290040370020200441086a2005290300370000200441186a2006290300370000200441286a2003290000370000200441306a200241c0006a41106a290000370000200441386a200241c0006a41186a290000370000200241086a200441c000109e01200241086a41106a290300210720022903102108200228020821032004102c20002007420020031b37030820002008420020031b370300200241e0006a24000b852d07017f017e017f027e017f027e187f23004180036b2207240002400240024002402001200284500d002003200484500d004201210820074198016a200320012003200156200420025620042002511b22091b220a2004200220091b220b20054201200542015620064200522006501b220c1b220520064200200c1b220610e10520074188016a200729039801220d20074198016a41086a290300220e2005200610e0052002200420091b21022001200320091b2104200a20072903880185200b20074188016a41086a290300858450450d01200d210a200e210b420021060c020b20004100360200200041106a4200370300200041086a42003703000c020b200741f8006a200420022005200610e105200741e8006a20072903782201200741f8006a41086a29030022032005200610e0054200200620042007290368852002200741e8006a41086a29030085845022091b21064201200520091b21082003200220091b21022001200420091b21040b200741386a200b42002004420010e005200741c8006a20024200200a420010e005200741d8006a200a42002004420010e005024002400240024002400240024002400240024002400240024002400240200b420052200242005271200729034042005272200729035042005272200741d8006a41086a2903002201200729033820072903487c7c2203200154724101470d004110102a2209450d0d2009200a3e020c2009200a4220883e02082009200b3e02042009200b4220883e020020074284808080c00037029c02200720093602980220074198026a10bd05200741a8016a41086a20072802a00236020020072007290398023703a8014110102a2209450d0d200920043e020c200920044220883e0208200920023e0204200920024220883e020020074284808080c00037029c02200720093602980220074198026a10bd05200741b8016a41086a20072802a00236020020072007290398023703b8014110102a2209450d0d20092008a7220f36020c200920084220883e0208200920063e0204200920064220883e020020074284808080c00037029c02200720093602980220074198026a10bd0520072802a0022110200728029c0221112007280298022112200741f0026a41086a200741b8016a41086a280200360200200720072903b8013703f00220074198026a41086a200741a8016a41086a280200360200200720072903a80137039802200741c8016a20074198026a200741f0026a10bf05024020072802f402450d0020072802f002102c0b200741c8016a10bd0520104101460d0120072802cc01211320072802c80121142010450d0a2012280200450d0a024020072802d0012215450d002014280200450d0b201520104d0d0b200720103602d401201520106b221641016a22174101201741014b1b221841ffffffff03712018470d0320184102742209417f4c0d030240024020090d00410421190c010b200910302219450d0f0b201041ffffffff03712010470d032010410274221a417f4c0d0302400240201a0d004104211b0c010b201a1030221b450d0f0b410221094101210f2012280200220c67221c211d0240200c41ffffffff034b0d0041022109201c210c4101210f034020094101200c4101711b200f6c210f200c41034b211e200920096c2109200c410176221d210c201e0d000b0b200720153602f802200720133602f402200720143602f0024104102a220c450d0e200c20094101201d4101461b200f6c220f360200200742818080801037029c022007200c36029802200741d8016a200741f0026a20074198026a10bf05200c102c02400240201a0d00410421090c010b201a102a2209450d0f0b20092012201041027410db052109200720103602f802200720103602f402200720093602f0024104102a2209450d0e2009200f360200200742818080801037029c022007200936029802200741e8016a200741f0026a20074198026a10bf052009102c0240024020072802d40120176a220920072802e001220c4d0d00024002402009200c6b22090d004104210f410021090c010b200941ffffffff03712009470d022009410274220f4100480d02200f102a220f450d11200f4100200941027410da051a0b20072802d801211d2009211e0240200c450d002009200c6a221e2009490d0220094101742214201e2014201e4b1b221e41ffffffff0371201e470d02201e41027422144100480d020240024020090d002014102a210f0c010b200f20094102742014102e210f0b200f450d110b200f20094102746a201d200c41027410db051a2009200c6a2109024020072802dc01450d00201d102c0b200720093602e0012007201e3602dc012007200f3602d8010b200741e8016a10bd050240024002400240024002400240024002400240034020072016221f3602f401024020072802e001220920072802d401220c201f6a220f417f736a221e2009490d0041d087c600201e20091038000b0240024002400240024002400240024002400240024002400240024020092009200f6b220f4d0d0020072802f00122092009200c6b220c4d0d0120072802e801200c4102746a35020022024200510d02201f201f4100476b211620072802d8012209201e4102746a35020021012009200f4102746a3502002104200741003602f80120072004200142208684200280220137038002200741003602880220072004200120027e7d42ffffffff0f83370390022007200741f4016a3602ac022007200741d8016a3602a8022007200741d4016a3602a4022007200741e8016a3602a002200720074188026a36029c022007200741f8016a3602980220074198026a10c0051a034020072802880241016a41004c0d04024020072903900242ffffffff0f560d0020074198026a10c0050d010b0b2007290380022102200720072802d40120072802f40122096a3602f402200720093602f0022007200741d8016a3602fc02200741023a00f802200741b0026a200741f0026a10c30520072802f001220941ffffffff03712009470d1d2009410274220c417f4c0d1d20072802e801210f02400240200c0d004104211e0c010b200c102a221e450d290b201e200f200c10db05210c200720093602e802200720093602e4022007200c3602e0024108102a2209450d2820092002a72220360204200920024220883e020020074282808080203702f402200720093602f002200741c0026a200741e0026a200741f0026a10bf052009102c20072802b802222120072802c8022222202120224b1b22144101201441014b1b220c41ffffffff0371200c470d1d200c410274220f417f4c0d1d20072802b402212320072802b002212402400240200f0d00410421250c010b200f10302225450d290b2014450d062022417f6a221a20224b211520072802c00221262021417f6a221720214b0d04200c417f6a21092025200f6a417c6a211d4100210f4200210203404100211e024020212017200f6b22134d0d004100211e201320174b0d00202420134102746a280200211e0b201ead21044100211e024020150d002022201a200f6b22134d0d002013201a4b0d00202620134102746a280200211e0b024002402004201ead22037d22012004560d00200120027d220a2001560d00200a42ffffffff0f832104420021020c010b20044280808080108420027d20037d2104420121020b200c20094d0d09201d20043e0200201d417c6a211d2009417f6a2109200f41016a220f2014490d000c060b0b41d087c600200f20091038000b41d087c600200c20091038000b419089c600411941b888c6001036000b41c689c6004118200741f0026a41e089c600103b000b200c417f6a21092025200f6a417c6a211e4100211d4200210203404100210f024020150d004100210f2022201a201d6b22134d0d004100210f2013201a4b0d00202620134102746a280200210f0b024002404200200fad22017d22044200520d00200420027d22032004560d00200342ffffffff0f832104420021020c010b428080808010200220017c7d2104420121020b200c20094d0d04201e20043e0200201e417c6a211e2009417f6a2109201d41016a221d2014490d000b0b41012113200250450d010b410021130b02402023450d002024102c0b20072802d401221e20072802f401220f6a2215201e490d05200f20154f0d01200f417f7321090340200c200c200f6a20096a221d4d0d03200920072802e00122146a220f20094f0d0420072802d801200f4102746a2025201d4102746a2802003602002009417f6a210920072802f401210f201e417f6a221e0d000c050b0b41a888c6002009200c1038000b201e450d020c030b41d087c60020222021202220214b1b22074101200741014b1b200f6a20096a200c1038000b41a888c600200f20141038000b200c200c2015417f7322096a200f6a220f4d0d0220072802e001220c20096a2209200c4f0d0320072802d80120094102746a2025200f4102746a28020036020020072802f401210f0b2018200f417f736a220920184f0d03201920094102746a202036020002402013450d00201820072802f401417f736a220920184f0d05201920094102746a22092009280200417f6a36020020072802f401210920072802d401210c200741023a00f8022007200c20096a3602f402200720093602f0022007200741d8016a3602fc02200741d0026a200741f0026a10c30520072802f001220941ffffffff03712009470d102009410274220c417f4c0d1020072802e801210f02400240200c0d004104211e0c010b200c102a221e450d1c0b201e200f200c10db05210c200720093602f802200720093602f4022007200c3602f002200741e0026a200741f0026a200741d0026a10be05024020072802d401220920072802f40122146a220c2009490d00024002402014200c4f0d00200c417f73210920072802e002211320072802e802210f2014211e0340200f200f201e6a20096a221e4d0d0a200920072802e00122156a221d20094f0d0b20072802d801201d4102746a2013201e4102746a280200360200200941016a210920072802f401211e2014200c417f6a220c490d000c020b0b20090d0120072802e802210f2014211e0b201e2014417f7322096a220c200f6a221e200c4f0d0920072802e001220c20096a2209200c4f0d0a20072802d80120094102746a20072802e002201e4102746a2802003602000b024020072802e402450d0020072802e002102c0b20072802d402450d0020072802d002102c0b2025102c024020072802c402450d0020072802c002102c0b201f0d000b0240201c450d004101210920072802d401220c4101460d134100200c6b2114201c411f7121134100201c6b411f7121152010410274201b6a417c6a210c417f210903400240200920072802e001221e6a220f2009490d0041d087c600200f201e1038000b201e200f417f6a221d4d0d0a201020096a221e20104f0d0b200c20072802d801221e201d4102746a280200201574201e200f4102746a28020020137672360200200c417c6a210c20142009417f6a2209460d130c000b0b20072802e001211020072802dc01210f20072802d801211e201b102c410021090c130b41d087c600200f200c1038000b41a888c6002009200c1038000b41a888c600200920181038000b41d087c600200920181038000b41d087c600201e200f1038000b41a888c600201d20151038000b41d087c600201e200f1038000b41a888c6002009200c1038000b41d087c600200f417f6a201e1038000b41a888c600201e20101038000b1035000b41d087c600410041001038000b200741286a200729035820032008200610e10520004100360200200041106a200741286a41086a290300370300200041086a20072903283703000c0e0b20074198026a41086a200741c8016a41086a280200221d360200200720072903c80137039802201d4101201d41014b1b221e41ffffffff0371201e470d00201e4102742209417f4c0d000240024020090d004104211a0c010b20091030221a450d0c0b201d450d02201d417f6a2114201a201e201d6b22134102746a210c200f4101200f41014b1bad21024200210441002109200728029802210f0340201e201320096a22154d0d02200c2004422086200f35020084220420028022013e020020142009460d03200c41046a210c200f41046a210f2004200120027e7d2104201d200941016a22094b0d000b41d087c6002009201d1038000b103a000b41a888c6002015201e1038000b2007201e3602f8022007201e3602f4022007201a3602f002200728029c02450d07200728029802102c0c070b20072802d40121090b20072802e001220c200c20096b220f4d0d012010201020096b22094d0d02201b20094102746a20072802d801200f4102746a280200201c411f7176360200410121092010210f201b211e0b024020072802ec01450d0020072802e801102c0b2009450d0320072802dc01450d0320072802d801102c0c030b41d087c600200f200c1038000b41a888c600200920101038000b4100211902402013450d002014102c0b0b4104102a2209450d01200941003602004104102a220c450d01200c41003602004101211d0240024020190d002009211941012118200c211e4101210f410121100c010b2009102c200c102c0b2007201836028002200720183602fc01200720193602f801200720103602a0022007200f36029c022007201e3602980220074198026a10bd05420021020240024020072802a00222094105744180014d0d00421d21040c010b4100211d024020090d00420021040c010b200728029802220c200941027422096a417c6a220f280200211e0240200c200f470d00201ead21040c010b200c41786a210f201ead2104200741206a211e4120210c420021020340200741186a200f20096a3502004200200c41e0007110de05201e29030020027c2007290318220220047c2204200254ad7c2102200c41206a210c2009417c6a22094104470d000b0b0240200728029c02450d00200728029802102c0b201d0d020240200420084201882006423f8684562002200642018822045620022004511b450d0020074188026a41086a200741f8016a41086a280200360200200720072903f801370388024110102a2209450d0220094280808080103702082009420037020020074284808080c00037029c02200720093602980220074198026a10bd05200741f0026a41086a20072802a00236020020072007290398023703f002200741f8016a20074188026a200741f0026a10be0520072802f402450d0020072802f002102c0b200741f0026a41086a200741f8016a41086a280200360200200720072903f8013703f0020b200741f0026a10bd0520074198026a41086a2209200741f0026a41086a280200360200200720072903f0023703980220074198026a10bd054200210202400240200928020022094105744180014d0d00421d21044101211d0c010b4100211d024020090d00420021040c010b200728029802220c200941027422096a417c6a220f280200211e0240200c200f470d00201ead21040c010b200c41786a210f201ead2104200741106a211e4120210c420021020340200741086a200f20096a3502004200200c41e0007110de05201e29030020027c2007290308220220047c2204200254ad7c2102200c41206a210c2009417c6a22094104470d000b0b0240200728029c02450d00200728029802102c0b02400240201d0d00200041106a2002370300200041086a2004370300410021090c010b200041d08ac600360204200041086a4119360200410121090b200020093602002011450d022012102c0c020b1033000b200720043e029c02200741a989c6003602980241908ac600412f20074198026a41c08ac600103b000b20074180036a24000bd30201037f230041d0006b220824000240024002402002200685200320078584500d00200220038450450d01410121090c020b417f20002004852001200585844200522000200454200120055420012005511b1b21090c010b0240200620078450450d0041ff0121090c010b200841206a2000200110c405200841306a2006200710c405200841c0006a41086a2209200841206a41086a220a280200360200200820082903203703402008200841c0006a200841306a10bf0502402008280234450d002008280230102c0b200841206a2004200510c405200841306a2002200310c4052009200a28020036020020082008290320370340200841106a200841c0006a200841306a10bf0502402008280234450d002008280230102c0b2008200841106a10c105210902402008280214450d002008280210102c0b2008280204450d002008280200102c0b200841d0006a240020090beb0203017f047e017f230041d0006b2202240002400240200029031022032001290310220485200041186a2903002205200141186a29030022068584500d00200241206a2000290300200041086a29030010c405200241306a2004200610c405200241c0006a41086a2200200241206a41086a2207280200360200200220022903203703402002200241c0006a200241306a10bf0502402002280234450d002002280230102c0b200241206a2001290300200141086a29030010c405200241306a2003200510c4052000200728020036020020022002290320370340200241106a200241c0006a200241306a10bf0502402002280234450d002002280230102c0b2002200241106a10c105210002402002280214450d002002280210102c0b200041ff0171210002402002280204450d002002280200102c0b20004521000c010b2000290300200129030085200041086a290300200141086a29030085845021000b200241d0006a240020000b8b0303017f017e027f02402001450d00034020002802940321002001417f6a22010d000b0b02402002450d00410021034100210103402002417f6a210202400240200120002f01064f0d00200141016a21010c010b02400240200028020022010d002003ad210441002105410021010c010b20003301044220862003ad842104410121050b2000102c2004a72103024002402004422088a7220620012f01064f0d00200121000c010b034002400240200128020022000d002003ad2104410021000c010b200541016a210520013301044220862003ad8421040b2001102c2004a72103200021012004422088a7220620002f01064f0d000b0b200641027420006a4198036a280200210002402005417f6a2201450d00034020002802940321002001417f6a22010d000b0b410021010b20020d000b0b0240200041d0e1c100460d00200028020021012000102c2001450d00200128020021002001102c2000450d00024020002802002201450d0003402000102c2001210020012802002203210120030d000b0b2000102c0b0bf62803087f057e277f230041d00c6b22042400200441e0016a41186a200241186a290000370300200441e0016a41106a200241106a290000370300200441e0016a41086a200241086a290000370300200420022900003703e0010240024002402001280200220541d0e1c100460d00200128020421060c010b41002106200441c0026a410041e00210da051a200441a8056a410041900410da051a41f806102a2205450d01200541003b010620054100360200200541086a200441c0026a41e00210db051a200541e8026a200441a8056a41900410db051a20014100360204200120053602000b024002400340200541086a2107200541066a210820052f0106220941057421024100210a0240024003402002450d01200441e0016a2007412010dd05220b450d02200241606a2102200a41016a210a200741206a2107200b417f4a0d000b200a417f6a21090b2006450d022006417f6a2106200520094102746a41f8066a28020021050c010b0b2005200a41306c6a22024180036a2207290300210c2003290300210d2003290308210e2003290310210f2007200341186a290300370300200241f8026a220729030021102007200f370300200241f0026a2207290300210f2007200e370300200241e8026a2207290300210e2007200d370300200441a8056a41086a220720024190036a220a290300370300200420024188036a22022903003703a80520022003290320370300200a200341286a290300370300200441c0026a41086a22022007290300370300200420042903a805220d3703c002200041186a200c370300200020103703102000200f3703082000200e3703002000200d370320200041286a20022903003703000c010b200441186a2202200441e0016a41186a2207290300370300200441106a200441e0016a41106a220a290300220c370300200441086a200441e0016a41086a220b290300220d370300200420042903e001220e3703002001200128020841016a360208200441f8006a41106a2206200c370300200441f8006a41086a2211200d370300200441f8006a41186a221220022903003703002004200e370378200441e0016a41286a2213200341286a290300370300200441e0016a41206a2214200341206a2903003703002007200341186a290300370300200a200341106a290300370300200b200341086a290300370300200420032903003703e00102400240024020082f01002203410b490d00200441c0026a410041e00210da051a200441a8056a410041900410da051a41f806102a2215450d04201541003b010620154100360200201541086a200441c0026a41e00210db052107201541e8026a200441a8056a41900410db05210a200441a8056a41086a220b20054190056a290300370300200441a8056a41106a220320054198056a290300370300200441a8056a41186a2206200541a0056a290300370300200441a8056a41206a2211200541a8056a290300370300200441a8056a41286a2212200541b0056a290300370300200420052900db013703a8022004200541e0016a2900003700ad0220042005290388053703a805200420052f00c8013b01bc022004200541ca016a2d00003a00be02200541cb016a2800002116200541cf016a2800002117200541d3016a2800002118200541d7016a28000021192007200541e8016a20052f010641796a220241057410db052107200a200541b8056a200241306c10db05210a200541063b0106201520023b0106200420042f01bc023b01a402200420042d00be023a00a602200420042903a80237039002200420042900ad0237009502200441c0026a41286a2012290300370300200441c0026a41206a2011290300370300200441c0026a41186a2006290300370300200441c0026a41106a2003290300370300200441c0026a41086a200b290300370300200420042903a8053703c0020240024020094107490d00200941057420076a41c07e6a2007200941796a220b4105746a2207200241ffff0371200b6b41057410dc051a200741186a200441f8006a41186a290300370000200741106a200441f8006a41106a290300370000200741086a200441f8006a41086a29030037000020072004290378370000200941306c200a6a220241e07d6a200241b07d6a2202201541066a22082f0100200b6b41306c10dc051a200241286a200441e0016a41286a290300370300200241206a200441e0016a41206a290300370300200241186a200441e0016a41186a290300370300200241106a200441e0016a41106a290300370300200241086a200441e0016a41086a290300370300200220042903e0013703000c010b200541086a20094105746a220241206a200220082f010020096b41057410dc051a200241186a200441f8006a41186a290300370000200241106a200441f8006a41106a290300370000200241086a200441f8006a41086a29030037000020022004290378370000200541e8026a200941306c6a220241306a200220082f010020096b41306c10dc051a200241286a200441e0016a41286a290300370300200241206a200441e0016a41206a290300370300200241186a200441e0016a41186a290300370300200241106a200441e0016a41106a290300370300200241086a200441e0016a41086a290300370300200220042903e0013703000b200820082f010041016a3b0100200441c8016a41026a220220042d00a6023a000020044198016a41086a221a200441c0026a41086a221b29030037030020044198016a41106a221c200441c0026a41106a221d29030037030020044198016a41186a221e200441c0026a41186a221f29030037030020044198016a41206a2220200441c0026a41206a222129030037030020044198016a41286a2222200441c0026a41286a2223290300370300200420042f01a4023b01c8012004200429039002370368200420042900950237006d200420042903c00237039801200441386a41286a22242022290300370300200441386a41206a22252020290300370300200441386a41186a2226201e290300370300200441386a41106a2227201c290300370300200441386a41086a2228201a290300370300200441346a41026a222920022d00003a00002004200429039801370338200420042903683703202004200429006d370025200420042f01c8013b013420052802002203450d0120052f01042114200441a8056a410272212a0340200441dc016a41026a222b20292d00003a0000200420042f01343b01dc01200420042903203703682004200429002537006d200441e0016a41286a222c2024290300370300200441e0016a41206a222d2025290300370300200441e0016a41186a222e2026290300370300200441e0016a41106a222f2027290300370300200441e0016a41086a22302028290300370300200420042903383703e001201441ffff0371210502400240024020032f01062202410b490d00202a410041a20710da051a41a807102a220b450d08200b4100360200200b41046a200441a8056a41a40710db051a200420032f00c8013b01bc022004200341ca016a2d00003a00be02200420032900db013703a8022004200341e0016a2900003700ad02200341cb016a2800002131200341cf016a2800002132200341d3016a2800002133200341d7016a2800002134200441a8056a41286a2209200341b0056a290300370300200441a8056a41206a2208200341a8056a290300370300200441a8056a41186a2211200341a0056a290300370300200441a8056a41106a221220034198056a290300370300200441a8056a41086a221320034190056a29030037030020042003290388053703a805200b41086a200341e8016a20032f0106220741796a220241057410db052135200b41e8026a200341b8056a200241306c10db052136200b41f8066a20034194076a2007417a6a220641027410db052137200341063b0106200b20023b010602402006450d00410021022037210703402007280200220a20023b0104200a200b360200200741046a21072006200241016a2202470d000b0b2023200929030037030020212008290300370300201f2011290300370300201d2012290300370300201b2013290300370300200420042903a8053703c002200420042f01bc023b01a402200420042d00be023a00a602200420042903a80237039002200420042900ad0237009502200441a4056a41026a220620042d00a6023a0000200420042f01a4023b01a4052004200429039002370378200420042900950237007d20092023290300370300200820212903003703002011201f2903003703002012201d2903003703002013201b290300370300200420042903c0023703a805201441ffff037122074107490d0120352005417a6a220a4105746a2035200541796a22024105746a2207200b2f010620026b41057410dc051a200741186a200429006d3700002007201936000f2007201836000b2007201736000720072016360003200741026a202b2d00003a0000200720042f01dc013b000020072004290368370013200541306c20366a220741e07d6a200741b07d6a2207200b2f0106221420026b41306c10dc051a200741286a202c290300370300200741206a202d290300370300200741186a202e290300370300200741106a202f290300370300200741086a2030290300370300200720042903e001370300200b201441016a22073b01062005410274221620376a416c6a2037200a4102746a2214200741ffff03712205200a6b41027410dc051a201420153602002005200a490d02200b20166a41e0066a210703402007280200220a200241016a22023b0104200a200b360200200741046a210720022005490d000c030b0b200341086a2207200541016a220a4105746a200720054105746a2207200220056b220b41057410dc051a2007201936000f2007201836000b2007201736000720072016360003200741026a200441dc016a41026a2d00003a0000200720042f01dc013b000020072004290368370013200741186a200429006d3700002003200541306c6a22074198036a200741e8026a2206200b41306c10dc051a20074190036a20044188026a29030037030020074188036a20044180026a29030037030020074180036a200441e0016a41186a290300370300200741f8026a200441f0016a290300370300200741f0026a200441e0016a41086a290300370300200620042903e0013703002003200241016a22023b01062005410274200341f8066a22076a41086a2007200a4102746a2207200241ffff0371200a6b41027410dc051a20072015360200201441ffff037120032f010622024f0d052015200a3b010420152003360200200a20024f0d052002417f6a210b2003200a417f6a22024102746a4180076a210703402007280200220a200241026a3b0104200a2003360200200741046a2107200b200241016a2202470d000c060b0b200341086a2202200541016a220a4105746a200220054105746a220220032f0106221420056b223741057410dc051a2002201936000f2002201836000b2002201736000720022016360003200241026a202b2d00003a0000200220042f01dc013b000020022004290368370013200241186a200429006d370000200341e8026a200541306c6a220241306a2002203741306c10dc051a200241286a202c290300370300200241206a202d290300370300200241186a202e290300370300200241106a202f290300370300200241086a2030290300370300200220042903e0013703002003201441016a22023b010620054102742237200341f8066a22146a41086a2014200a4102746a2214200241ffff0371200a6b41027410dc051a20142015360200200720032f0106220a4f0d00200320376a41fc066a2102034020022802002207200541016a22053b010420072003360200200241046a2102200a2005470d000b0b200441d8016a41026a220220062d00003a0000201a2013290300370300201c2012290300370300201e20112903003703002020200829030037030020222009290300370300200420042f01a4053b01d801200420042903783703c8012004200429007d3700cd01200420042903a8053703980120242022290300370300202520202903003703002026201e2903003703002027201c2903003703002028201a290300370300202920022d00003a00002004200429039801370338200420042903c801370320200420042900cd01370025200420042f01d8013b01340240200328020022020d0020312116203421192033211820322117200b21150c030b20032f010421142031211620342119203321182032211720022103200b21150c000b0b200520094105746a220241286a200241086a2201200320096b41057410dc051a200241206a2012290300370000200241186a2006290300370000200241106a2011290300370000200120042903783700002005200941306c6a22024198036a200241e8026a220320052f010620096b41306c10dc051a20024190036a201329030037030020024188036a201429030037030020024180036a2007290300370300200241f8026a200a290300370300200241f0026a200b290300370300200320042903e001370300200520052f010641016a3b01060c010b200441a8056a410272410041a20710da051a41a807102a2202450d0220024100360200200241046a200441a8056a41a40710db051a2002200128020022073602f806200120023602002001200128020441016a360204200741003b010420072002360200200220022f0106220a4105746a220741086a20042f01343b00002007410a6a200441346a41026a2d00003a0000200741176a2019360000200741136a20183600002007410f6a20173600002007410b6a20163600002007411b6a2004290320370000200741206a20042900253700002002200a41306c6a220741e8026a2004290338370300200741f0026a200441386a41086a290300370300200741f8026a200441c8006a29030037030020074180036a200441d0006a29030037030020074188036a200441386a41206a29030037030020074190036a200441e0006a290300370300200241f8066a200a41016a22074102746a2015360200200220073b010620152002360200201520073b01040b200041003602200b200441d00c6a24000f0b1033000bac0901157f230041206b220524002003410020041b21062001410020021b2107200341206a200320041b2108200141206a200120021b2109200120024105746a210a200320044105746a210b4100210c4100210d4101210e4100210f410021104101211102400340200c4101742112200c41057421130240024002400340024020060d0020082114200e2115200d2116200c21020c020b2006210120082103200e2115200d2116200c2102201321042012211702400340024002402007450d0020012007460d0320012007412010dd052214450d032014417f4c0d01200321082015210e2016210d2002210c200121060c060b200541186a2203200641186a290000370300200541106a2202200641106a290000370300200541086a2207200641086a290000370300200520062900003703000240200c200d470d00200c41016a2201200c490d09200c41017422042001200420014b1b220d41ffffff3f71200d470d09200d41057422014100480d0902400240200c0d002001102a210e0c010b200e200c4105742001102e210e0b200e450d070b200e200c4105746a22012005290300370000200141186a2003290300370000200141106a2002290300370000200141086a200729030037000041002107410020082008200b4622011b2106201241026a2112201341206a2113200c41016a210c2008200841206a20011b21080c030b200541186a2214200141186a290000370300200541106a2218200141106a290000370300200541086a2219200141086a29000037030020052001290000370300024020022016470d00200241016a22012002490d0820172001201720014b1b221641ffffff3f712016470d08201641057422014100480d080240024020020d002001102a21150c010b201520042001102e21150b2015450d060b201520046a22012005290300370000200141186a2014290300370000200141106a2018290300370000200141086a2019290300370000410020032003200b4622141b2101201741026a2117200441206a2104200241016a21022003200341206a20141b221421032001450d030c000b0b0b2015210e2016210d2002210c2003200341206a2003200b4622011b2108410020092009200a4622021b21074100200320011b21062009200941206a20021b21090c030b41002106024020070d002000201536020c2000200f3602082000201036020420002011360200200041146a2002360200200041106a2016360200200541206a24000f0b201421082015210e2016210d2002210c0b200541186a2203200741186a290000370300200541106a2202200741106a290000370300200541086a2204200741086a290000370300200520072900003703000240200f2010470d00200f41016a2201200f490d03200f41017422072001200720014b1b221041ffffff3f712010470d03201041057422014100480d0302400240200f0d002001102a21110c010b2011200f4105742001102e21110b2011450d010b2011200f4105746a22012005290300370000200141186a2003290300370000200141106a2002290300370000200141086a2004290300370000410020092009200a4622011b2107200f41016a210f2009200941206a20011b21090c010b0b1033000b1035000b901008087f027e047f017e057f027e017f057e230022042105200441a0016b41607122042400024002400240200141ffffff3f712001470d0020014105742206417f4c0d000240024020060d00410121070c010b2006102a2207450d020b410021084100210602402001450d002001410574210820072106034020062000290000370000200641186a200041186a290000370000200641106a200041106a290000370000200641086a200041086a290000370000200641206a2106200041206a2100200841606a22080d000b200141057441606a41057641016a2106200121080b200420063602102004200836020c2004200736020820072006410041202006676b108903200441e0006a41186a22094200370300200441e0006a41106a220a4200370300200441e0006a41086a220b420037030020044200370360200441286a41086a220841fde7c200ad4280808080b00284220c1002220041086a290000370300200420002900003703282000102c200b200829030037030020042004290328370360200841e1e5c200ad42808080809001841002220041086a290000370300200420002900003703282000102c200a2004290328220d370300200441c0006a41086a220e200b290300370300200441c0006a41106a220f200d370300200441c0006a41186a221020082903003703002004200d3703900120042004290360370340200441e0006a200441c0006a412010d00120042802602200410120001b21112004290264420020001b2212422088a72200450d0220004105742113200441e0006a4114722114200441e0006a4108722115200441c0006a410c722116200441e0006a410c6a2117201121060340200641086a290000210d200641106a2900002118200629000021192009200641186a290000370300200a2018370300200b200d370300200420193703602008200c1002220041086a290000370300200420002900003703282000102c200441186a41086a2201200829030037030020042004290328370318200841f1e5c200ad4280808080e000841002220041086a290000370300200420002900003703282000102c20044190016a41086a220720082903003703002004200429032837039001200441c0006a200441e0006a109f0141c000102a2200450d0220002004290318370000200020042903900137001020002004290040370020200041086a2001290300370000200041186a2007290300370000200041286a200e290000370000200041306a200f290000370000200041386a2010290000370000200441e0006a200041c00010e5032008201741086a290200370300200441286a41106a221a201741106a28020036020020042017290200370328024020042802682201450d002004290360210d20162004290328370200201641086a2008290300370200201641106a201a2802003602002004200d3703400b20042001360248200441003602682004290358211920042004290378221b3703582004290350211c20042004290370221d3703502004290340211e2004200429036022183703402004290348210d20042004290368221f370348201fa7210102400240200da7221a0d00201f210d201d211c201b21190c010b2004201e3703602004200d3703682004201c370370200420193703782004201a201ca74105746a3602342004201a3602302004200d422088a736022c2004201a3602282004200441086a36023820044190016a200441286a108501201541086a200728020036020020152004290390013702002004201c422088a7221a2019422088a74105746a3602342004201a36023020042019a736022c2004201a3602282004200441086a36023820044190016a200441286a108501201441086a200728020036020020142004290390013702002004290368210d20042903602118200429037821192004290370211c02402001450d00201ba721070240201f422088a7450d002001102c0b2007450d00201d422088a7102c0b200420183703402004200d3703482004201c37035020042019370358200da721010b200420183703602004200d3703682004201c370370200da72107200420193703780240024020010d002000ad428080808080088410050c010b200441c00036022c20042000360228200441e0006a200441286a10fd030b02402007450d002019a721010240200d422088a7450d002007102c0b2001450d00201c422088a7102c0b200641206a21062000102c201341606a22130d000c030b0b103a000b1033000b02402012a7450d002011102c0b200441c0006a41186a4200370300200441c0006a41106a22014200370300200441c0006a41086a2206420037030020044200370340200441286a41086a220041fde7c200ad4280808080b002841002220841086a290000370300200420082900003703282008102c2006200029030037030020042004290328220d3703182004200d370340200041eae5c200ad4280808080f000841002220841086a290000370300200420082900003703282008102c20012004290328220d370300200441e0006a41086a2006290300370300200441e0006a41106a200d370300200441e0006a41186a20002903003703002004200d370390012004200429034037036020044100360248200442013703402003200441c0006a106702402003450d002003410574210003402002200441c0006a109101200241206a2102200041606a22000d000b0b20042802442100200441e0006aad4280808080800484200435024842208620042802402206ad84100102402000450d002006102c0b0240200428020c450d002004280208102c0b200524000bab0101037f230041d0006b220124002001200010fb030240200141c0006a2802002202450d00034002402001280244450d002002102c0b2001200010fb03200128024022020d000b0b02402000280204220241d0e1c100460d00200228020021032002102c2003450d00200328020021002003102c2000450d00024020002802002202450d0003402000102c2002210020022802002203210220030d000b0b2000102c0b200141d0006a24000bd0700c057f017e017f017e047f027e0b7f017e087f017e047f017e23004180076b2201240010e001024002400240024002400240024020004101470d0010a3010c010b200141d0046a41186a22024200370300200141d0046a41106a22034200370300200141d0046a41086a22044200370300200142003703d004200141b0036a41086a220541bac6c500ad4280808080c0008422061002220741086a290000370300200120072900003703b0032007102c20042005290300370300200120012903b00322083703d003200120083703d004200541dec6c500ad4280808080b001841002220741086a290000370300200120072900003703b0032007102c200320012903b0032208370300200141e0056a41086a22072004290300370300200141e0056a41106a22092008370300200141e0056a41186a220a20052903003703002001200837038801200120012903d0043703e005200141e8006a200141e0056a109801200129037021082001280268210b200242003703002003420037030020044200370300200142003703d004200520061002220c41086a2900003703002001200c2900003703b003200c102c20042005290300370300200120012903b003220d3703d0032001200d3703d004200541bec6c500ad4280808080a001841002220c41086a2900003703002001200c2900003703b003200c102c20022005290300220d37030020072004290300370300200920012903b003220e370300200a200d3703002001200e37038801200120012903d0043703e005200141d8006a200141e0056a1098012001280258210f2001290360210d200242003703002003420037030020044200370300200142003703d004200520061002220c41086a2900003703002001200c2900003703b003200c102c20042005290300370300200120012903b00322063703d003200120063703d004200541d3c6c500ad4280808080b001841002220c41086a2900003703002001200c2900003703b003200c102c20022005290300220637030020072004290300370300200920012903b003220e370300200a20063703002001200e37038801200120012903d0043703e005200141c8006a200141e0056a1098010240420020084200200b1b22062001290350420020012802481b200d42c8017e4200200f1b7c7d220820082006561b42c801540d00200a42003703002009420037030020074200370300200142003703e005200541ecddc500ad4280808080f0008422061002220441086a290000370300200120042900003703b0032004102c20072005290300370300200120012903b003220837038801200120083703e005200541f3ddc500ad4280808080c001841002220441086a290000370300200120042900003703b0032004102c200920012903b0032208370300200141d0036a41086a22042007290300370300200141d0036a41106a22022008370300200141d0036a41186a220c20052903003703002001200837038801200120012903e0053703d003200141c0006a200141d0036a41201094012001280244211020012802402111200a42003703002009420037030020074200370300200142003703e005200520061002220b41086a2900003703002001200b2900003703b003200b102c20072005290300370300200120012903b003220837038801200120083703e005200541ffddc500ad4280808080d001841002220b41086a2900003703002001200b2900003703b003200b102c200a2005290300220837030020042007290300370300200220012903b003220d370300200c20083703002001200d37038801200120012903e0053703d003200141d0036a109501210b10e101200a42003703002009420037030020074200370300200142003703e005200520061002220f41086a2900003703002001200f2900003703b003200f102c20072005290300370300200120012903b003220637038801200120063703e005200541ab83c100ad4280808080a001841002220f41086a2900003703002001200f2900003703b003200f102c200a2005290300220637030020042007290300370300200220012903b0032208370300200c20063703002001200837038801200120012903e0053703d0032001412036027c2001200141d0036a360278200141d0056a200141d0036aad4280808080800484220e1003108d014100211202400240024002400240024020012802d00522020d004100210a0c010b20012802d405210c2001200141d8056a280200360284012001200236028001200141386a20014180016a107502400240024020012802380d00200128028401220741a0016e221341a0016c2205417f4c0d04200128023c21140240024020050d004101210a0c010b2005102a220a450d0d0b02402014450d00200141e0056a41206a2115200141a8026a41017221164100210f0340200141003a00c802200f41016a21174100210502400240024002400340200141003a00af0320072005460d01200141a8026a20056a20012802800122042d00003a00002001200441016a360280012001200541016a22043a00c8022004210520044120470d000b200141d0046a41086a2205200141a8026a41086a290300370300200141d0046a41106a2218200141a8026a41106a290300370300200141d0046a41186a2219200141a8026a41186a290300370300200120012903a8023703d0042001200720046b36028401200141a8026a20014180016a10e20120012d00a8024101460d01200141e0056a41186a2019290300370300200141e0056a41106a2018290300370300200141e0056a41086a2005290300370300200120012903d0043703e0052015201641800110db051a20014188016a200141e0056a41a00110db051a2013200f470d03200f41017422052017200520174b1b2213ad42a0017e2206422088a70d142006a7220541004e0d020c140b2001410036028401200541ff0171450d00200141003a00c8020b200141003602b0032013450d05200a102c0c050b02400240200f0d002005102a210a0c010b200a200f41a0016c2005102e210a0b200a450d0f0b200a200f41a0016c6a20014188016a41a00110db051a20172014460d0120012802840121072017210f0c000b0b200141b8036a2014360200200120133602b4032001200a3602b003200a450d0120012902b40321060c020b200141003602b0030b4100210a200141003602900120014201370388012001410b3602ac022001200141f8006a3602a802200120014188016a3602d004200141f4056a4101360200200142013702e405200141d0b0c2003602e0052001200141a8026a3602f005200141d0046a41c49ac500200141e0056a10391a2001350290014220862001350288018410040240200128028c01450d00200128028801102c0b0b200c450d002002102c0b20064200200a1b221a422088a7221b41a0016c220241a0016e21054101211c02402002450d002005410574102a221c450d09200521120b200b41ff0171210c200a4101200a1b2115410021070240201b450d00201b41a0016c210a41002107201c210520152104034020052004290000370000200541186a200441186a290000370000200541106a200441106a290000370000200541086a200441086a290000370000200741016a2107200541206a2105200441a0016a2104200a41e07e6a220a0d000b0b200c410247210c200141e0056a41186a220f4200370300200141e0056a41106a22144200370300200141e0056a41086a22044200370300200142003703e005200141b0036a41086a220541ecddc500ad4280808080f000841002220a41086a2900003703002001200a2900003703b003200a102c20042005290300370300200120012903b003220637038801200120063703e005200541c9f8c200ad4280808080a001841002220a41086a2900003703002001200a2900003703b003200a102c20014188016a41086a20052903002206370300200120012903b00322083703880120092008370000200941086a2006370000200141d0036a41086a2004290300370300200141d0036a41106a2014290300370300200141d0036a41186a200f290300370300200120012903e0053703d003200141003602e805200142013703e0052007200141e0056a106702402007450d0020074105742104201c210503402005200141e0056a109101200541206a2105200441606a22040d000b0b200b200c71211820012802e4052105200e20013502e80542208620012802e0052204ad84100102402005450d002004102c0b02402018450d00200141e0056a41186a220a4200370300200141e0056a41106a220c4200370300200141e0056a41086a22044200370300200142003703e005200141b0036a41086a220541ecddc500ad4280808080f000841002220741086a290000370300200120072900003703b0032007102c20042005290300370300200120012903b003220637038801200120063703e0052005418cdec500ad4280808080a002841002220741086a290000370300200120072900003703b0032007102c20014188016a41086a20052903002206370300200120012903b00322083703880120092008370000200941086a2006370000200141d0036a41086a2004290300370300200141d0036a41106a200c290300370300200141d0036a41186a200a290300370300200120012903e0053703d003200141e0056a200141d0036a10960120012802e0052205450d00200e100520012802e405450d002005102c0b201520026a21174101211d10a301200141e0056a201041016a410120111b221e10e3010240024020012802e005221f0d00200141e0056a41186a4200370300200141e0056a41106a220a4200370300200141e0056a41086a22044200370300200142003703e005200141b0036a41086a220541ecddc500ad4280808080f000841002220741086a290000370300200120072900003703b0032007102c20042005290300370300200120012903b0033703e005200541c9f8c200ad4280808080a001841002220741086a290000370300200120072900003703b0032007102c200a20012903b003220637030020014188016a41086a200429030037030020014188016a41106a200637030020014188016a41186a2005290300370300200120063703a802200120012903e00537038801200141e0056a20014188016a412010d00120012902e405420020012802e00522051b21062005410120051b21204100211f410021210c010b200141e8056a3502002106200141f0056a280200210a200141ec056a280200210720012802e40521220240200141f4056a2802002205450d00200541d0006c2104200741c0006a210503400240200541046a280200450d002005280200102c0b200541d0006a2105200441b07f6a22040d000b0b0240200a450d002007102c0b20064220862022ad842106410121214100211d201f21200b200141e0056a41186a220a4200370300200141e0056a41106a22024200370300200141e0056a41086a22044200370300200142003703e005200141b0036a41086a220541ecddc500ad4280808080f000841002220741086a290000370300200120072900003703b0032007102c20042005290300370300200120012903b003220837038801200120083703e005200541f3ddc500ad4280808080c001841002220741086a290000370300200120072900003703b0032007102c20014188016a41086a20052903002208370300200120012903b003220d370388012009200d370000200941086a2008370000200141d0036a41086a2004290300370300200141d0036a41106a2002290300370300200141d0036a41186a200a290300370300200120012903e0053703d0032001201e3602e005200e200141e0056aad22234280808080c000841001200120213a00af032001201736027c200120153602782001200141f8006a360284012001200141af036a3602800141002113024002402006422088a7220541057422040d0041012116410021240c010b20044105752224ad42a0017e2208422088a70d0b2008a722044100480d0b2004102a2216450d090b2006a7212502402005450d002005410574220741606a410576212620014188016a4101722111200141e0056a41206a2114200141d0036a41e0006a2127200141d0036a41c0006a2119200141d0036a41206a21132016210a202021050340200541086a2900002106200541106a29000021082005290000210d200141b0036a41186a2202200541186a290000370300200141b0036a41106a220c2008370300200141b0036a41086a220b20063703002001200d3703b003200141d0056a200141b0036a10a60120014188016a20012802d005221020012802d80510a70120012d008801210f200141a8026a201141800110db051a410021040240200f4101470d00200141d0046a200141a8026a41800110db051a410121040b024020012802d405450d002010102c0b024002402004450d00200141d0036a200141d0046a41800110db051a0c010b200141d0036a410041800110da051a0b02402001280280012d00000d00200128028401220f2802002204200f280204460d00200f200441a0016a36020002400240200141d0036a200441206a220f460d00200f200141d0036a412010dd050d010b02402013200441c0006a220f460d00200f2013412010dd050d010b02402019200441e0006a220f460d00200f2019412010dd050d010b202720044180016a2204460d0120042027412010dd05450d010b20012802800141013a00000b200541206a2105200141e0056a41186a2002290300370300200141e0056a41106a200c290300370300200141e0056a41086a200b290300370300200120012903b0033703e0052014200141d0036a41800110db051a200a200141e0056a41a00110db0541a0016a210a200741606a22070d000b202641016a21130b02402025450d002020102c0b2013ad42a0017e2206422088a70d002006a72205417f4c0d0020012d00af0321110240024020050d00410121100c010b2005102a2210450d090b4100210c02402013450d002016201341a0016c6a210f200141e0056a4180016a2104200141e0056a41e0006a2107200141e0056a41c0006a210a200141e0056a41206a21024100210c2010210b201621050340200141e0056a41186a200541186a290000370300200141e0056a41106a200541106a290000370300200141e0056a41086a200541086a290000370300200120052900003703e005200241186a200541386a290000370000200241106a200541306a290000370000200241086a200541286a2900003700002002200541206a290000370000200a200541c0006a290000370000200a41086a200541c8006a290000370000200a41106a200541d0006a290000370000200a41186a200541d8006a2900003700002007200541e0006a290000370000200741086a200541e8006a290000370000200741106a200541f0006a290000370000200741186a200541f8006a290000370000200420054180016a290000370000200441086a20054188016a290000370000200441106a20054190016a290000370000200441186a20054198016a290000370000200c41016a210c200b200141e0056a41a00110db0541a0016a210b200541a0016a2205200f470d000b0b200141e0056a41186a220a4200370300200141e0056a41106a22024200370300200141e0056a41086a22044200370300200142003703e005200141b0036a41086a220541ecddc500ad4280808080f000841002220741086a290000370300200120072900003703b0032007102c20042005290300370300200120012903b003220637038801200120063703e005200541ab83c100ad4280808080a001841002220741086a290000370300200120072900003703b0032007102c20014188016a41086a20052903002206370300200120012903b00322083703880120092008370000200941086a2006370000200141d0036a41086a2004290300370300200141d0036a41106a2002290300370300200141d0036a41186a200a290300370300200120012903e0053703d003200141003602e805200142013703e005200c200141e0056a10670240200c450d002010200c41a0016c6a21042010210503402005200141e0056a109101200541206a200141e0056a109101200541c0006a200141e0056a109101200541e0006a200141e0056a10910120054180016a200141e0056a109101200541a0016a22052004470d000b0b20012802e4052105200e20013502e80542208620012802e0052204ad84100102402005450d002004102c0b02402013450d002010102c0b200141e0056a41186a220a4200370300200141e0056a41106a22024200370300200141e0056a41086a22044200370300200142003703e005200141b0036a41086a220541ecddc500ad4280808080f000841002220741086a290000370300200120072900003703b0032007102c20042005290300370300200120012903b003220637038801200120063703e005200541ffddc500ad4280808080d001841002220741086a290000370300200120072900003703b0032007102c20014188016a41086a20052903002206370300200120012903b00322083703880120092008370000200941086a2006370000200141d0036a41086a2004290300370300200141d0036a41106a2002290300370300200141d0036a41186a200a290300370300200120012903e0053703d003200120113a00e005200e20234280808080108410012001201e3602e405200141053a00e00541014100200141e0056a1092014108102a2207450d082007201736020420072015360200024020180d00200141e0056a41186a220c4200370300200141e0056a41106a220a4200370300200141e0056a41086a22044200370300200142003703e005200141d0036a41086a220541e0d9c500ad4280808080f001841002220241086a290000370300200120022900003703d0032002102c20042005290300370300200120012903d00322063703a802200120063703e005200541d4d9c500ad4280808080c001841002220241086a290000370300200120022900003703d0032002102c200a20012903d003220637030020014188016a41086a220b200429030037030020014188016a41106a220f200637030020014188016a41186a22102005290300370300200120063703a802200120012903e00537038801200141286a20014188016a1098012001290330210820012802282111200c4200370300200a420037030020044200370300200142003703e005200541ecddc500ad4280808080f000841002220241086a290000370300200120022900003703d0032002102c20042005290300370300200120012903d0033703e005200541f3ddc500ad4280808080c001841002220241086a290000370300200120022900003703d0032002102c200a20012903d0032206370300200b2004290300370300200f200637030020102005290300370300200120063703a802200120012903e00537038801200141206a20014188016a41201094012008420020111b2001280224410020012802201b10b2012007102c0c040b02400240201b450d002007201541a0016a220a360200200141003a008006201541206a2104410021050340200141003a00af03200141e0056a20056a200420056a2d00003a00002001200541016a22053a00800620054120470d000b20014188016a41086a2205200141e0056a41086a29030037030020014188016a41106a2204200141e0056a41106a29030037030020014188016a41186a2202200141e0056a41186a290300370300200120012903e0053703880120150d010b2007102c4108210f4100210a410021050c030b200141a8026a41186a2002290300370300200141a8026a41106a2004290300370300200141a8026a41086a200529030037030020012001290388013703a8022017200a6b41a0016e41016a220541286c2204417f4c0d002004102a220f450d08200f20012903a802370300200f4201370320200f41186a200141a8026a41186a290300370300200f41106a200141a8026a41106a290300370300200f41086a200141a8026a41086a2903003703000240200728020022042007280204470d004101210a0c020b2007200441a0016a360200200141003a008006200441206a210a410021040340200141003a00af03200141e0056a20046a200a20046a2d00003a00002001200441016a22043a00800620044120470d000b200141d0046a41186a2219200141e0056a41186a2202290300220637030020014188016a41086a2210200141e0056a41086a220c29030037030020014188016a41106a2211200141e0056a41106a220b29030037030020014188016a41186a22142006370300200120012903e005370388014101210a0340200141a8026a41186a20142903002206370300200141a8026a41106a20112903002208370300200141a8026a41086a2010290300220d3703002001200129038801220e3703a80220022006370300200b2008370300200c200d3703002001200e3703e005024002402005200a460d00200521090c010b200728020420072802006b41a0016e20056a41016a22042005490d0c200541017422092004200920044b1b2209ad42287e2206422088a70d0c2006a722044100480d0c0240024020050d002004102a210f0c010b200f200541286c2004102e210f0b200f450d0a0b200f200a41286c6a220520012903e005370300200c2903002106200b29030021082002290300210d20054201370320200541186a200d370300200541106a2008370300200541086a2006370300200a41016a210a0240200728020022042007280204470d00200921050c030b2007200441a0016a36020041002105200141003a008006200441206a21040340200141003a00af03200141e0056a20056a200420056a2d00003a00002001200541016a22053a00800620054120470d000b2019200229030022063703002010200c2903003703002011200b29030037030020142006370300200120012903e00537038801200921050c000b0b103a000b2007102c0b200141e0056a41186a4200370300200141e0056a41106a22024200370300200141e0056a41086a22074200370300200142003703e005200141d0036a41086a220441e0d9c500ad4280808080f001841002220c41086a2900003703002001200c2900003703d003200c102c20072004290300370300200120012903d00322063703a802200120063703e005200441aeb5c000ad4280808080f000841002220c41086a2900003703002001200c2900003703d003200c102c200220012903d003220637030020014188016a41086a200729030037030020014188016a41106a200637030020014188016a41186a2004290300370300200120063703a802200120012903e00537038801200141e0056a20014188016a10e4010240024020012802e0054101460d002001200a3602e805200120053602e4052001200f3602e005200141e0056a41004100200110b30120014188016aad428080808080048421060c010b20014188016aad42808080808004842206100520012902e40521082001200a3602e805200120053602e4052001200f3602e005200141e0056a2008a741012008422088a710b3010b200141e0056a41186a220a4200370300200141e0056a41106a22074200370300200141e0056a41086a22044200370300200142003703e005200141d0036a41086a220541e0d9c500ad4280808080f0018422081002220c41086a2900003703002001200c2900003703d003200c102c20042005290300370300200120012903d003220d3703a8022001200d3703e005200541d4d9c500ad4280808080c00184220d1002220c41086a2900003703002001200c2900003703d003200c102c200141a8026a41086a22112005290300220e370300200120012903d00322283703a80220022028370000200241086a2214200e37000020014188016a41086a220c200429030037030020014188016a41106a220b200729030037030020014188016a41186a220f200a290300370300200120012903e00537038801200141106a20014188016a109801200128021021092001290318210e200a42003703002007420037030020044200370300200142003703e005200520081002221041086a290000370300200120102900003703d0032010102c20042005290300370300200120012903d00322083703a802200120083703e0052005200d1002221041086a290000370300200120102900003703d0032010102c201120052903002208370300200120012903d003220d3703a8022002200d37000020142008370000200c2004290300370300200b2007290300370300200f200a290300370300200120012903e005370388012001200e42017c420120091b22083703e0052006202342808080808001841001200a42003703002007420037030020044200370300200142003703e005200541ecddc500ad4280808080f000841002220a41086a2900003703002001200a2900003703d003200a102c20042005290300370300200120012903d0033703e005200541f3ddc500ad4280808080c001841002220a41086a2900003703002001200a2900003703d003200a102c200720012903d0032206370300200c2004290300370300200b2006370300200f2005290300370300200120063703a802200120012903e00537038801200141086a20014188016a41201094012008200128020c410020012802081b10b2010b4108102a2205450d0420052017360204200520153602004108102a2204450d0420042016201341a0016c6a221e360204200420163602002005200410e5014108102a2207450d0420072017360204200720153602004108102a2219450d042019201e36020420192016360200200141e0056a41186a220c4200370300200141e0056a41106a221b4200370300200141e0056a41086a22044200370300200142003703e005200141d0036a41086a22054191b0c200ad4280808080e000841002220a41086a2900003703002001200a2900003703d003200a102c20042005290300370300200120012903d0033703e005200541acb0c200ad4280808080e000841002220a41086a2900003703002001200a2900003703d003200a102c201b20012903d003220637030020014188016a41086a200429030037030020014188016a41106a200637030020014188016a41186a2005290300370300200120063703a802200120012903e00537038801200120014188016a41201094012001280200210b2001280204210f200141d0046a41186a22104200370300200141d0046a41106a22114200370300200141d0046a41086a220a4200370300200142003703d004200541a3dbc500ad42808080808001841002220241086a290000370300200120022900003703d0032002102c200a2005290300370300200120012903d003220637038801200120063703d00420054187a6c500ad42808080808001841002220241086a290000370300200120022900003703d0032002102c200141b0036a41086a20052903002206370300200120012903d00322083703b00320032008370000200341086a20063700002004200a290300370300201b2011290300370300200c2010290300370300200120012903d0043703e0052001200f41e4006a41e400200b1b3602880120234280808080800484222320014188016aad22284280808080c0008410010240024002402007280200220520072802042202460d002007200541a0016a220c360200200141003a008006200541e0006a2104410021050340200141003a00af03200141e0056a20056a200420056a2d00003a00002001200541016a22053a00800620054120470d000b200141a8026a41086a2205200141e0056a41086a290300370300200141a8026a41106a220b200141e0056a41106a290300370300200141a8026a41186a220f200141e0056a41186a290300370300200120012903e005220637038801200120063703a8024101210a2002200c6b41a0016e41016a2204410574102a2210450d07201020012903a802370000201041186a200f290300370000201041106a200b290300370000201041086a2005290300370000200728020022052007280204460d012007200541a0016a360200200141003a008006200541e0006a210a410021050340200141003a00af03200141e0056a20056a200a20056a2d00003a00002001200541016a22053a00800620054120470d000b200141d0046a41186a2213200141e0056a41186a2202290300220637030020014188016a41086a2211200141e0056a41086a220c29030037030020014188016a41106a2214200141e0056a41106a220b29030037030020014188016a41186a22092006370300200120012903e005370388014101210a0340200141a8026a41186a20092903002206370300200141a8026a41106a20142903002208370300200141a8026a41086a2011290300220d3703002001200129038801220e3703a80220022006370300200b2008370300200c200d3703002001200e3703e005024002402004200a460d002004210f0c010b200728020420072802006b41a0016e20046a41016a22052004490d0b2004410174220f2005200f20054b1b220f41ffffff3f71200f470d0b200f41057422054100480d0b0240024020040d002005102a21100c010b201020044105742005102e21100b2010450d090b2010200a4105746a220520012903e005370000200541186a2002290300370000200541106a200b290300370000200541086a200c290300370000200a41016a210a0240200728020022042007280204470d00200f21040c030b2007200441a0016a36020041002105200141003a008006200441e0006a21040340200141003a00af03200141e0056a20056a200420056a2d00003a00002001200541016a22053a00800620054120470d000b2013200229030022063703002011200c2903003703002014200b29030037030020092006370300200120012903e00537038801200f21040c000b0b2007102c41002104410121104100210a0c010b2007102c0b200141d0046a41186a220c4200370300200141d0046a41106a220b4200370300200141d0046a41086a22074200370300200142003703d004200141d0036a41086a220541a3dbc500ad42808080808001841002220241086a290000370300200120022900003703d0032002102c20072005290300370300200120012903d003220637038801200120063703d004200541a0c6c500ad4280808080c000841002220241086a290000370300200120022900003703d0032002102c200141b0036a41086a20052903002206370300200120012903d00322083703b00320032008370000200341086a2006370000200141e0056a41086a2007290300370300200141e0056a41106a200b290300370300200141e0056a41186a200c290300370300200120012903d0043703e00520014100360290012001420137038801200a20014188016a10670240200a450d00200a4105742107201021050340200520014188016a109101200541206a2105200741606a22070d000b0b200128028c01210520232001350290014220862001280288012207ad84100102402005450d002007102c0b02402004450d002010102c0b2019102c4108102a220a450d04200a2017360204200a20153602004108102a2219450d042019201e36020420192016360200024002400240024002402018450d00200a2802002205200a2802042202460d01200a200541a0016a220c360200200141003a00800620054180016a2104410021050340200141003a00af03200141e0056a20056a200420056a2d00003a00002001200541016a22053a00800620054120470d000b200141a8026a41086a2205200141e0056a41086a290300370300200141a8026a41106a220b200141e0056a41106a290300370300200141a8026a41186a220f200141e0056a41186a290300370300200120012903e005220637038801200120063703a802410121072002200c6b41a0016e41016a2204410574102a2210450d09201020012903a802370000201041186a200f290300370000201041106a200b290300370000201041086a2005290300370000200a2802002205200a2802042213460d02200a200541a0016a2217360200200141003a00800620054180016a2107410021050340200141003a00af03200141e0056a20056a200720056a2d00003a00002001200541016a22053a00800620054120470d000b200141d0046a41186a2218200141e0056a41186a2202290300220637030020014188016a41086a2211200141e0056a41086a220c29030037030020014188016a41106a2214200141e0056a41106a220b29030037030020014188016a41186a22092006370300200120012903e00537038801410121070340200141a8026a41186a20092903002206370300200141a8026a41106a20142903002208370300200141a8026a41086a2011290300220d3703002001200129038801220e3703a80220022006370300200b2008370300200c200d3703002001200e3703e0050240024020042007460d002004210f0c010b201320176b41a0016e20046a41016a22052004490d0d2004410174220f2005200f20054b1b220f41ffffff3f71200f470d0d200f41057422054100480d0d0240024020040d002005102a21100c010b201020044105742005102e21100b2010450d0b0b201020074105746a220520012903e005370000200541186a2002290300370000200541106a200b290300370000200541086a200c290300370000200741016a21070240200a2802002204200a2802042213470d00200f21040c040b200a200441a0016a221736020041002105200141003a00800620044180016a21040340200141003a00af03200141e0056a20056a200420056a2d00003a00002001200541016a22053a00800620054120470d000b2018200229030022063703002011200c2903003703002014200b29030037030020092006370300200120012903e00537038801200f21040c000b0b2019102c200a102c0c030b200a102c4101211041002107410021040c010b200a102c0b200141e0056a41186a220c4200370300200141e0056a41106a220b4200370300200141e0056a41086a220a4200370300200142003703e005200141d0036a41086a2205418ec6c500ad4280808080a002841002220241086a290000370300200120022900003703d0032002102c200a2005290300370300200120012903d0033703e005200541a0c6c500ad4280808080c000841002220241086a290000370300200120022900003703d0032002102c200141a8026a41086a20052903002206370300200120012903d00322083703a802201b2008370000201b41086a200637000020014188016a41086a200a29030037030020014188016a41106a200b29030037030020014188016a41186a200c290300370300200120012903e00537038801200141003602e805200142013703e0052007200141e0056a106702402007450d00200741057421072010210503402005200141e0056a109101200541206a2105200741606a22070d000b0b20012802e40521052028428080808080048420013502e80542208620012802e0052207ad84100102402005450d002007102c0b02402004450d002010102c0b2019102c0b02402024450d002016102c0b02402022450d00201d2021720d00201f102c0b02402012450d00201c102c0b201aa7450d002015102c0b10a301200041044b0d010b200141e0056a210c0c010b200141d0046a41186a220a4200370300200141d0046a41106a22024200370300200141d0046a41086a22044200370300200142003703d004200141b0036a41086a220541a4c6c500ad4280808080a001841002220741086a290000370300200120072900003703b0032007102c20042005290300370300200120012903b0033703d004200541f889c200ad4280808080e000841002220741086a290000370300200120072900003703b0032007102c20014188016a41086a20052903002206370300200120012903b00322083703880120032008370000200341086a2006370000200141e0056a41086a2004290300370300200141e0056a41106a2002290300370300200141e0056a41186a200a290300370300200120012903d0043703e00520014188016a200141e0056a10e6012001280288012205410420051b210202400240200129028c01420020051b2206422088a7220c41c4006c22050d00410021040c010b2000417b6a210a200220056a2107410021042002210502400340024020052d00004101460d00200541046a280200200a4f0d020b200441016a21042007200541c4006a2205470d000b0b2004200c4b0d030b200642ffffffff0f8321060240200c20046b2205450d0002402004450d0020022002200441c4006c6a200541c4006c10dc051a0b2005ad42208620068421060b200141d0046a41186a4200370300200141d0046a41106a220a4200370300200141d0046a41086a22044200370300200142003703d004200141b0036a41086a220541a4c6c500ad4280808080a001841002220741086a290000370300200120072900003703b0032007102c20042005290300370300200120012903b00322083703a802200120083703d004200541f889c200ad4280808080e000841002220741086a290000370300200120072900003703b0032007102c200a20012903b0032208370300200141e0056a41086a2004290300370300200141e0056a41106a2008370300200141e0056a41186a2005290300370300200120083703d003200120012903d0043703e00520014188016a20022006422088a710e701200141e0056aad42808080808004842001350290014220862001280288012204ad8410012006a721050240200128028c01450d002004102c0b200141e0056a210c2005450d002002102c0b200141d0046a41186a220a4200370300200141d0046a41106a22074200370300200141d0046a41086a22044200370300200142003703d004200141b0036a41086a220541a4c6c500ad4280808080a001841002220241086a290000370300200120022900003703b0032002102c20042005290300370300200120012903b00322063703a802200120063703d004200541aec6c500ad4280808080c001841002220241086a290000370300200120022900003703b0032002102c200720012903b0032206370300200141e0056a41086a22022004290300370300200141e0056a41106a220b2006370300200141e0056a41186a220f2005290300370300200120063703d003200120012903d0043703e005200141003a00af03200cad4280808080800484200141af036aad42808080801084100120014188016a10e801200a20014188016a41186a220c290300370300200720014188016a41106a2210290300370300200420014188016a41086a221129030037030020012001290388013703d0044124102a2205450d00200520012903d00437000020054114360220200541186a200a290300370000200541106a2007290300370000200541086a200429030037000020014281808080103702e405200120053602e005200141e0056a10e901200f200c290300370300200b20102903003703002002201129030037030020012001290388013703e005200141e0056a10ea0110e00120014180076a24000f0b1033000b41dafec500411c41acfec5001036000b1035000b8a1e0a057f017e037f017e017f027e017f017e047f027e23004190046b22002400200041b8036a41186a4200370300200041b8036a41106a22014200370300200041b8036a41086a22024200370300200042003703b803200041f8026a41086a220341bac6c500ad4280808080c000841002220441086a290000370300200020042900003703f8022004102c20022003290300370300200020002903f80222053703e001200020053703b80320034183d7c500ad4280808080b001841002220441086a290000370300200020042900003703f8022004102c200120002903f8022205370300200041e8036a41086a2002290300370300200041e8036a41106a2005370300200041e8036a41186a2003290300370300200020053703e001200020002903b8033703e803200041f0016a200041e8036a1099010240024020002d00f0014102470d00200041f0016a41186a4200370300200041f0016a41106a22064200370300200041f0016a41086a22024200370300200042003703f00120034191b0c200ad4280808080e000841002220441086a290000370300200020042900003703f8022004102c20022003290300370300200020002903f8023703f001200341cab0c200ad4280808080e000841002220441086a290000370300200020042900003703f8022004102c200620002903f802220537030020004180016a41086a200229030037030020004180016a41106a200537030020004180016a41186a200329030037030020002005370318200020002903f00137038001200041b8036a20004180016a10e4020240024020002802b80322030d0041002107200041003602880120004204370380014102210620004180016a21080c010b200020002902bc0322053702840120002003360280012005a7210720004180016a210802402005422088a72202450d00200241246c210202400340024020032d00004101470d00200341016a2800002104200341086a28020021062000200341106a2802003602bc03200020063602b803200441c28289aa04470d00200041f0016a200041b8036a10e50220002d00f00122064102470d020b200341246a21032002415c6a2202450d020c000b0b200020002800f401360073200020002800f101360270200041f8016a2903002105200041186a20004180026a41d80010db051a200041d8026a29030021090c010b410221060b2008280200210a024020082802082203450d00200341246c2102200a210303400240024020032d0000220441034b0d0002400240024020040e0404000102040b2003410c6a280200450d03200341086a280200102c0c030b2003410c6a280200450d02200341086a280200102c0c020b2003410c6a280200450d01200341086a280200102c0c010b200341086a280200450d00200341046a280200102c0b200341246a21032002415c6a22020d000b0b02402007450d00200a102c0b200020002802703602d801200020002800733600db0120004180016a200041186a41d80010db051a0240024020064102470d0041002102200041e8036a21080c010b200020002802d8013602f002200020002800db013600f302200020053703e802200041f0016a20004180016a41d80010db051a200020093703e002200041b8036a41186a22044200370300200041b8036a41106a22084200370300200041b8036a41086a22024200370300200042003703b803200041f8026a41086a220341bac6c500ad4280808080c0008422091002220a41086a2900003703002000200a2900003703f802200a102c20022003290300370300200020002903f802220b3703e0012000200b3703b803200341d3c6c500ad4280808080b00184220c1002220a41086a2900003703002000200a2900003703f802200a102c200041e0016a41086a220d2003290300220b370300200020002903f802220e3703e0012001200e370000200141086a220f200b370000200041e8036a41086a220a2002290300370300200041e8036a41106a22072008290300370300200041e8036a41186a22102004290300370300200020002903b8033703e803200041086a200041e8036a109801024002402000280208450d002000290310500d00200041e8036aad4280808080800484210b200041e8036a21080c010b200041e8026a200041e0026a20064101461b290300210b200442003703002008420037030020024200370300200042003703b803200320091002221141086a290000370300200020112900003703f8022011102c20022003290300370300200020002903f802220e3703e0012000200e3703b8032003200c1002221141086a290000370300200020112900003703f8022011102c200d2003290300220e370300200020002903f802220c3703e0012001200c370000200f200e370000200a20022903003703002007200829030037030020102004290300370300200020002903b8033703e8032000200b3703b803200041e8036aad4280808080800484220b200041b8036aad42808080808001841001200442003703002008420037030020024200370300200042003703b803200320091002221141086a290000370300200020112900003703f8022011102c20022003290300370300200020002903f802220e3703e0012000200e3703b803200341c8c6c500ad4280808080b001841002221141086a290000370300200020112900003703f8022011102c200d2003290300220e370300200020002903f802220c3703e0012001200c370000200f200e370000200a20022903003703002007200829030037030020102004290300370300200020002903b8033703e803200041b8036a200041e8036a10ff0220002902bc03210e20002802b8032111200442003703002008420037030020024200370300200042003703b803200320091002221241086a290000370300200020122900003703f8022012102c20022003290300370300200020002903f80222093703e001200020093703b803200341e9c6c500ad4280808080a001841002221241086a290000370300200020122900003703f8022012102c200d20032903002209370300200020002903f802220c3703e0012001200c370000200f2009370000200a20022903003703002007200829030037030020102004290300370300200020002903b8033703e803200041b8036a200041e8036a10800320002d00b80321032010200041d1036a2900003703002007200041c9036a290000370300200a200041c1036a290000370300200020002900b9033703e8032011410820111b21020240024020034101460d00200041b0036a4200370300200041a8036a4200370300200041a0036a420037030020004200370398030c010b20004198036a41186a200041e8036a41186a29030037030020004198036a41106a200041e8036a41106a29030037030020004198036a41086a200041e8036a41086a290300370300200020002903e803370398030b200041f8026a41086a20004198036a41086a2903002209370300200041f8026a41106a20004198036a41106a290300220c370300200041f8026a41186a20004198036a41186a2903002213370300200020002903980322143703f802200041b8036a41086a2203200e420020111b370300200041b8036a41106a2014370300200041b8036a41186a2009370300200041d8036a200c370300200041e0036a2013370300200020023602bc03200041003602b803200041e8036a200041b8036a108b02200041a3036a200041e8036a41086a280200360000200020002903e80337009b03200041f4036a2000419f036a290000370000200041c28289aa043600e903200041023a00e80320002000290098033700ed03200041e8036a109001024020002802b8030d002003280200450d0020002802bc03102c0b200041e8036a21080b200041e8026a200041e0026a20064101461b2903002109200041b8036a41186a220a4200370300200041b8036a41106a22074200370300200041b8036a41086a22024200370300200042003703b803200041f8026a41086a220341bac6c500ad4280808080c000841002220441086a290000370300200020042900003703f8022004102c20022003290300370300200020002903f802220e3703e0012000200e3703b803200341dec6c500ad4280808080b001841002220441086a290000370300200020042900003703f8022004102c200041e0016a41086a2003290300220e370300200020002903f802220c3703e0012001200c370000200141086a200e370000200041e8036a41086a2002290300370300200041e8036a41106a2007290300370300200041e8036a41186a200a290300370300200020002903b8033703e803200020093703b803200b200041b8036aad428080808080018410014100210220060d0020004198036a41086a200041f0016a41086a29030037030020004198036a41106a200041f0016a41106a2d00003a0000200020002800f30236007b200020002802f002360278200020002903f00137039803410121020b200041f0016a41086a2005370300200041f0016a41106a200029039803370300200041f0016a41186a20004198036a41086a29030037030020004190026a20004198036a41106a2d00003a0000200020023a00f001200020002802783600f1012000200028007b3600f401200041b8036a41186a220a4200370300200041b8036a41106a22074200370300200041b8036a41086a22044200370300200042003703b803200041f8026a41086a220341bac6c500ad4280808080c000841002220641086a290000370300200020062900003703f8022006102c20042003290300370300200020002903f80222053703e001200020053703b80320034183d7c500ad4280808080b001841002220641086a290000370300200020062900003703f8022006102c200041e0016a41086a20032903002205370300200020002903f80222093703e00120012009370000200141086a2005370000200041e8036a41086a2004290300370300200041e8036a41106a2007290300370300200041e8036a41186a200a290300370300200020002903b8033703e8034101102a2203450d01200042013702840120002003360280010240024020020d002000410136028801200341003a00000c010b2000410136028801200341013a0000200041f0016a41017220004180016a10ba020b20002802840121032008ad42808080808004842000350288014220862000280280012202ad8410012003450d002002102c0b20004190046a24000f0b1033000b83790d067f017e017f017e057f017e017f017e0a7f017e167f037e057f23004180066b2200240020004180056a41186a2201420037030020004180056a41106a220242003703004108210320004180056a41086a220442003703002000420037038005200041b0026a41086a220541ecddc500ad4280808080f0008422061002220741086a290000370300200020072900003703b0022007102c20042005290300370300200020002903b00237038005200541f3ddc500ad4280808080c001841002220741086a290000370300200020072900003703b0022007102c200220002903b0022208370300200041b0046a41086a22092004290300370300200041b0046a41106a220a2008370300200041b0046a41186a220b2005290300370300200020083703e00320002000290380053703b004200041286a200041b0046a4120109401200028022c210c2000280228210d2001420037030020024200370300200442003703002000420037038005200541a3dbc500ad42808080808001841002220741086a290000370300200020072900003703b0022007102c20042005290300370300200020002903b00237038005200541a0c6c500ad4280808080c000841002220741086a290000370300200020072900003703b0022007102c20012005290300220837030020092004290300370300200a20002903b002220e370300200b20083703002000200e3703e00320002000290380053703b00420004180056a200041b0046a10f002200028028005210f20002902840521102001420037030020024200370300200442003703002000420037038005200520061002220741086a290000370300200020072900003703b0022007102c20042005290300370300200020002903b00237038005200541c9f8c200ad4280808080a001841002220741086a290000370300200020072900003703b0022007102c20012005290300220837030020092004290300370300200a20002903b0022206370300200b2008370300200020063703e00320002000290380053703b00420004180056a200041b0046a412010d0012000280280052207410120071b2111200029028405420020071b2208a72112024002400240024002400240024002402008422088a72207450d002011200741057422136a2114200041c4036a211520004180056a41206a2116200041f8026a4104722117200041d0026a410472211841022107410021190340200041e0016a41186a201120196a221a41186a2900002208370300200041e0016a41106a201a41106a2900002206370300200041e0016a41086a201a41086a290000220e3703002000201a290000221b3703e0012018201b370200201841086a200e370200201841106a2006370200201841186a200837020020002007417e6a221c3602d0024100211d0240201c201810cb030d00200041f8026a41206a200041d0026a41206a280200360200200041f8026a41186a200041d0026a41186a290300370300200041f8026a41106a200041d0026a41106a290300370300200041f8026a41086a200041d0026a41086a290300370300200020002903d0023703f80220004190026a41186a221d201741186a221c29000037030020004190026a41106a221e201741106a221f29000037030020004190026a41086a2220201741086a222129000037030020002017290000370390022001201c2900003703002002201f290000370300200420212900003703002000201729000037038005200041a0036a20004180056a109204200041b0026a41186a221c201d290300370300200041b0026a41106a221f201e2903003703002005202029030037030020002000290390023703b00220002802c003221d450d00201620002903a003370300201641186a200041a0036a41186a290300370300201641106a200041a0036a41106a290300370300201641086a200041a0036a41086a2903003703002001201c2903003703002002201f2903003703002004200529030037030020004180026a41086a221c201541086a280200360200200020002903b002370380052000201529020037038002200041b0046a41386a221e20004180056a41386a290300370300200041b0046a41306a221f20004180056a41306a290300370300200041b0046a41286a222020004180056a41286a290300370300200041b0046a41206a22212016290300370300200b2001290300370300200a20022903003703002009200429030037030020002000290380053703b004200041e0036a41386a201e290300370300200041e0036a41306a201f290300370300200041e0036a41286a2020290300370300200041e0036a41206a2021290300370300200041e0036a41186a200b290300370300200041e0036a41106a200a290300370300200041e0036a41086a2009290300370300200020002903b0043703e003200041d0036a41086a201c28020036020020002000290380023703d0030b200041a0016a41086a200041e0036a41086a290300370300200041a0016a41106a200041e0036a41106a290300370300200041a0016a41186a200041e0036a41186a290300370300200041a0016a41206a200041e0036a41206a290300370300200041a0016a41286a200041e0036a41286a290300370300200041a0016a41306a200041e0036a41306a290300370300200041a0016a41386a200041e0036a41386a29030037030020004190016a41086a200041d0036a41086a280200360200200020002903e0033703a001200020002903d00337039001201d0d02200741016a21072013201941206a2219470d000b0b410021222000410036029801200042083703900102402012450d002011102c0b4100211d0c010b200041c0006a41386a2218200041a0016a41386a290300370300200041c0006a41306a2217200041a0016a41306a290300370300200041c0006a41286a2204200041a0016a41286a290300370300200041c0006a41206a221c200041a0016a41206a290300370300200041c0006a41186a2205200041a0016a41186a290300370300200041c0006a41106a2201200041a0016a41106a290300370300200041c0006a41086a221e200041a0016a41086a29030037030020004180016a41086a221f20004190016a41086a280200360200200020002903a001370340200020002903900137038001200041306a41086a2220201f280200360200200020002903800137033020004180056a41086a221f201e29030037030020004180056a41106a221e200129030037030020004180056a41186a2201200529030037030020004180056a41206a2205201c29030037030020004180056a41286a221c200429030037030020004180056a41306a2204201729030037030020004180056a41386a221720182903003703002000200029034037038005200041b0046a41086a22182020280200360200200020002903303703b00441d000102a2203450d0120032000290380053703002003201d360240200320002903b004370244200341386a2017290300370300200341306a2004290300370300200341286a201c290300370300200341206a2005290300370300200341186a2001290300370300200341106a201e290300370300200341086a201f290300370300200341cc006a20182802003602000240024002400240201341606a2019470d004101211d0c010b201a41206a2118201320196b41606a2105200041c4036a2120200041f8026a4104722117200041d0026a410472211a0340200041e0016a41186a201841186a2219290000370300200041e0016a41106a201841106a221d290000370300200041e0016a41086a201841086a2204290000370300200020182900003703e00120002007417f6a221c3602d00220042900002108201d29000021062018290000210e201a41186a2019290000370000201a41106a2006370000201a41086a2008370000201a200e370000410021190240201c201a10cb030d00200041f8026a41206a200041d0026a41206a280200360200200041f8026a41186a200041d0026a41186a290300370300200041f8026a41106a200041d0026a41106a290300370300200041f8026a41086a200041d0026a41086a290300370300200020002903d0023703f80220004190026a41186a2219201741186a220429000037030020004190026a41106a2201201741106a221c29000037030020004190026a41086a2213201741086a221e290000370300200020172900003703900220004180056a41186a221d200429000037030020004180056a41106a2204201c29000037030020004180056a41086a221c201e2900003703002000201729000037038005200041a0036a20004180056a109204200041b0026a41186a221e2019290300370300200041b0026a41106a221f2001290300370300200041b0026a41086a2201201329030037030020002000290390023703b00220002802c0032219450d00201620002903a003370300201641186a200041a0036a41186a290300370300201641106a200041a0036a41106a290300370300201641086a200041a0036a41086a290300370300201d201e2903003703002004201f290300370300201c200129030037030020004180026a41086a2201202041086a280200360200200020002903b002370380052000202029020037038002200041b0046a41386a221320004180056a41386a290300370300200041b0046a41306a221e20004180056a41306a290300370300200041b0046a41286a221f20004180056a41286a290300370300200041b0046a41206a222120004180056a41206a290300370300200041b0046a41186a2209201d290300370300200041b0046a41106a221d2004290300370300200041b0046a41086a2204201c29030037030020002000290380053703b004200041e0036a41386a2013290300370300200041e0036a41306a201e290300370300200041e0036a41286a201f290300370300200041e0036a41206a2021290300370300200041e0036a41186a2009290300370300200041e0036a41106a201d290300370300200041e0036a41086a2004290300370300200020002903b0043703e003200041d0036a41086a200128020036020020002000290380023703d0030b200041a0016a41086a200041e0036a41086a290300370300200041a0016a41106a200041e0036a41106a290300370300200041a0016a41186a200041e0036a41186a290300370300200041a0016a41206a200041e0036a41206a290300370300200041a0016a41286a200041e0036a41286a290300370300200041a0016a41306a200041e0036a41306a290300370300200041a0016a41386a200041e0036a41386a29030037030020004190016a41086a200041d0036a41086a280200360200200020002903e0033703a001200020002903d0033703900120190d02201841206a21184101211d200741016a2107200541606a22050d000b0b410121220c010b200041c0006a41386a2223200041a0016a41386a221e290300370300200041c0006a41306a2224200041a0016a41306a221f290300370300200041c0006a41286a2225200041a0016a41286a2220290300370300200041c0006a41206a2226200041a0016a41206a2221290300370300200041c0006a41186a2227200041a0016a41186a2209290300370300200041c0006a41106a2228200041a0016a41106a220a290300370300200041c0006a41086a2229200041a0016a41086a220b29030037030020004180016a41086a222a20004190016a41086a2215280200360200200020002903a001370340200020002903900137038001200041306a41086a222b202a2802003602002000200029038001370330201841206a2118200041c4036a212c200041f8026a4104722117200041d0026a410472211a4101211d41012122034020004180056a41086a2205202929030037030020004180056a41106a2201202829030037030020004180056a41186a2213202729030037030020004180056a41206a222d202629030037030020004180056a41286a222e202529030037030020004180056a41306a222f202429030037030020004180056a41386a223020232903003703002000200029034037038005200041b0046a41086a2231202b280200360200200020002903303703b00402402022201d470d00201d41016a2204201d490d08201d410174221c2004201c20044b1b2222ad42d0007e2208422088a70d082008a722044100480d0802400240201d0d002004102a21030c010b2003201d41d0006c2004102e21030b2003450d040b2003201d41d0006c6a22042000290380053703002001290300210820132903002106202d290300210e202e290300211b202f2903002132203029030021332005290300213420042019360240200441086a2034370300200441386a2033370300200441306a2032370300200441286a201b370300200441206a200e370300200441186a2006370300200441106a2008370300200420002903b004370244200441cc006a2031280200360200201d41016a211d20182014460d010340200041e0016a41186a201841186a2219290000370300200041e0016a41106a201841106a2204290000370300200041e0016a41086a201841086a221c290000370300200020182900003703e001200020073602d002201c2900002108200429000021062018290000210e201a41186a2019290000370000201a41106a2006370000201a41086a2008370000201a200e3700004100211902402007201a10cb030d00200041f8026a41206a200041d0026a41206a280200360200200041f8026a41186a200041d0026a41186a290300370300200041f8026a41106a200041d0026a41106a290300370300200041f8026a41086a200041d0026a41086a290300370300200020002903d0023703f80220004190026a41186a2219201741186a220429000037030020004190026a41106a221c201741106a223529000037030020004190026a41086a2236201741086a223729000037030020002017290000370390022013200429000037030020012035290000370300200520372900003703002000201729000037038005200041a0036a20004180056a109204200041b0026a41186a22042019290300370300200041b0026a41106a2235201c290300370300200041b0026a41086a221c203629030037030020002000290390023703b00220002802c0032219450d00201620002903a003370300201641186a200041a0036a41186a290300370300201641106a200041a0036a41106a290300370300201641086a200041a0036a41086a29030037030020132004290300370300200120352903003703002005201c29030037030020004180026a41086a2204202c41086a280200360200200020002903b002370380052000202c29020037038002200041b0046a41386a221c2030290300370300200041b0046a41306a2235202f290300370300200041b0046a41286a2236202e290300370300200041b0046a41206a2237202d290300370300200041b0046a41186a22382013290300370300200041b0046a41106a223920012903003703002031200529030037030020002000290380053703b004200041e0036a41386a201c290300370300200041e0036a41306a2035290300370300200041e0036a41286a2036290300370300200041e0036a41206a2037290300370300200041e0036a41186a2038290300370300200041e0036a41106a2039290300370300200041e0036a41086a2031290300370300200020002903b0043703e003200041d0036a41086a200428020036020020002000290380023703d0030b200b200041e0036a41086a290300370300200a200041e0036a41106a2903003703002009200041e0036a41186a2903003703002021200041e0036a41206a2903003703002020200041e0036a41286a290300370300201f200041e0036a41306a290300370300201e200041e0036a41386a2903003703002015200041d0036a41086a280200360200200020002903e0033703a001200020002903d00337039001024020190d00200741016a21072014201841206a2218460d030c010b0b2023201e2903003703002024201f2903003703002025202029030037030020262021290300370300202720092903003703002028200a2903003703002029200b290300370300202a2015280200360200200020002903a001370340200020002903900137038001202b202a2802003602002000200029038001370330201841206a2118200741016a21070c000b0b02402012450d002011102c0b2000201d36029801200020223602940120002003360290010b20004180056a41186a2219420037030020004180056a41106a2217420037030020004180056a41086a221a42003703002000420037038005200041b0026a41086a220741ecddc500ad4280808080f0008422081002221841086a290000370300200020182900003703b0022018102c201a2007290300370300200020002903b00237038005200741f3ddc500ad4280808080c0018422061002221841086a290000370300200020182900003703b0022018102c200041e0036a41086a22162007290300220e370300200020002903b002221b3703e0032002201b370000200241086a2201200e370000200041b0046a41086a2204201a290300370300200041b0046a41106a22112017290300370300200041b0046a41186a2213201929030037030020002000290380053703b004200041206a200041b0046a41201094012000280224211c20002802202105200741a3dbc500ad4280808080800184220e1002221841086a290000370300200020182900003703b0022018102c20162007290300370300200020002903b0023703e003200741abdbc500ad4280808080a002841002221841086a290000370300200020182900003703b0022018102c20042007290300370300200020002903b0023703b0042000201c410020051b3602a001200041b0026a41186a221c200041a0016aad4280808080c00084221b1006221841186a290000370300200041b0026a41106a2205201841106a2900003703002007201841086a290000370300200020182900003703b0022018102c2019201c29030037030020172005290300370300201a2007290300370300200020002903b0023703800541c000102a2218450d00201820002903e003370000201820002903b0043700102018200029038005370020201841086a2016290300370000201841186a2004290300370000201841286a201a290300370000201841306a2017290300370000201841386a20192903003700002018ad4280808080800884100d2018102c2019420037030020174200370300201a42003703002000420037038005200720081002221841086a290000370300200020182900003703b0022018102c201a2007290300370300200020002903b00237038005200720061002221841086a290000370300200020182900003703b0022018102c201620072903002208370300200020002903b00222063703e00320022006370000200120083700002004201a290300370300201120172903003703002013201929030037030020002000290380053703b004200041186a200041b0046a4120109401200028021c2102200028021821012007200e1002221841086a290000370300200020182900003703b0022018102c20162007290300370300200020002903b0023703e00320074182aac500ad4280808080e001841002221841086a290000370300200020182900003703b0022018102c20042007290300370300200020002903b0023703b00420002002410020011b3602a001201c201b1006221841186a2900003703002005201841106a2900003703002007201841086a290000370300200020182900003703b0022018102c2019201c29030037030020172005290300370300201a2007290300370300200020002903b0023703800541c000102a2207450d0020104200200f1b210e200720002903e003370000200720002903b0043700102007200029038005370020200741086a200041e0036a41086a290300370000200741186a200041b0046a41086a290300370000200741286a20004180056a41086a2218290300370000200741306a20004180056a41106a290300370000200741386a20004180056a41186a2903003700002007ad4280808080800884100d2007102c0240024002400240201d450d0020004180056a20004190016a107c200041bb046a201828020036000020002000290380053700b3042000418c056a200041b7046a290000370000200041023a0084052000410f3a008005200020002900b004370085054101410020004180056a109201200041f8026a41106a20004190016a41086a2802003602002000200e422088a722393602fc022000200c4100200d1b22173602f802200020002903900137038003200041d0036a200041f8026a41086a107c20002802d803211c20002802d403213820002802d00321224104102a2212450d042012201736000020004284808080c0003702a401200020123602a001200041b0026a41086a220741bddbc500ad42808080808001841002221841086a290000370300200020182900003703b0022018102c200041e0036a41086a221a2007290300370300200020002903b0023703e003200741c5dbc500ad4280808080a002841002221841086a290000370300200020182900003703b0022018102c200041b0046a41086a22182007290300370300200020002903b0023703b00420004190026a41cffac00010ca0141c000102a2207450d04200720002903e003370000200720002903b0043700102007200029039002370020200741086a201a290300370000200741186a2018290300370000200741286a20004190026a41086a290300370000200741306a200041a0026a290300370000200741386a20004190026a41186a29030037000020004180056a200741c00010bd03200029028405210820002802800521182007102c20002008420020181b22064220883e02b40420002018410120181b22053602b004200041106a200041b0046a1075200028021421044100211620002802100d0320002802b404220741246e221d41246c2218417f4c0d010240024020180d00410421160c010b2018102a2216450d050b2004450d0341002102034020074104490d03200241016a210120002007417c6a221a3602b404200020002802b004221941046a3602b0042019280000211141002107200041003a00a00503400240201a2007470d00200041003602b404200741ff0171450d05200041003a00a0050c050b20004180056a20076a201920076a221841046a2d00003a00002000201841056a3602b0042000200741016a22183a00a0052018210720184120470d000b200041b0026a41086a221920004180056a41086a290300370300200041b0026a41106a221320004180056a41106a290300370300200041b0026a41186a221e20004180056a41186a29030037030020002000290380053703b0022000201a20186b22073602b4040240201d2002470d00200241017422182001201820014b1b221dad42247e2208422088a70d0a2008a722184100480d0a0240024020020d002018102a21160c010b2016200241246c2018102e21160b2016450d060b2016200241246c6a22182011360200201820002903b0023702042018410c6a2019290300370200201841146a20132903003702002018411c6a201e2903003702002001210220012004470d000c040b0b200041013a0084052000410f3a0080054101410020004180056a1092012022450d062003102c0c060b103a000b0240201d0d00410021160c010b2016102c410021160b20004180056a200041a0016a10c901200041b0046a200028028005221820002802880510d00120002802b004210720002902b40421080240200028028405450d002018102c0b2008420020071b210802402006a7450d002005102c0b201d410020161b21312016410420161b211d2007410120071b21362008a721350240024002400240024002400240201c450d002004410020161b21042008422088a721012022201c41d0006c6a210320004180056a410c6a211120004180056a41306a211e20004180056a41206a211f200041e0036a41c4006a210a200041a8046a21374100212c20222116034020004180056a41386a22182016220741386a290300370300201e200741306a29030037030020004180056a41286a221a200741286a290300370300201f200741206a29030037030020004180056a41186a221c200741186a29030037030020004180056a41106a2205200741106a29030037030020004180056a41086a2202200741086a29030037030020004180026a41086a2219200741cc006a28020036020020002007290300370380052000200741c4006a29020037038002200741d0006a2116200741c0006a2802002207450d02200041c0006a41386a22132018290300370300200041c0006a41306a2218201e290300370300200041c0006a41286a2220201a290300370300200041c0006a41206a221a201f290300370300200041c0006a41186a2221201c290300370300200041c0006a41106a22092005290300370300200041c0006a41086a220b200229030037030020004180016a41086a221520192802003602002000200029038005370340200020002903800237038001200041e0036a41386a2013290300370300200041e0036a41306a22192018290300370300200041e0036a41286a2020290300370300200041e0036a41206a2213201a290300370300200041e0036a41186a2021290300370300200041e0036a41106a2009290300370300200041e0036a41086a200b290300370300200020002903403703e003200020073602a004200a200029038001370200200a41086a20152802003602004104102a221a450d08201a2017360000201141002900cffa40370000201141086a41002900d7fa4037000020004284808080c000370284052000201a360280052000200041e0036a36029c054108102a2207450d08200042083702b404200020073602b0042011200041b0046a10ec024104200041b0046a10670240024020002802b404221820002802b80422076b4104490d0020002802b00421180c010b200741046a22202007490d0d201841017422072020200720204b1b22074100480d0d0240024020180d002007102a21180c010b20002802b00420182007102e21180b2018450d09200020073602b404200020183602b00420002802b80421070b2000200741046a3602b804201820076a201a280000360000200041e0036a200041b0046a109101200020133602a003200041a0036a200041b0046a108a01200020193602a003200041a0036a200041b0046a108a0120002802a004210720372802002218200041b0046a106702402018450d00201841306c21180340200741106a200041b0046a109101200020073602a003200741306a2107200041a0036a200041b0046a108a01201841506a22180d000b0b20002802b4042119200041b0026a41186a221320003502b80442208620002802b0042221ad841006220741186a290000370300200041b0026a41106a2220200741106a290000370300200041b0026a41086a2218200741086a290000370300200020072900003703b0022007102c200041a0016a41186a220b2013290300370300200041a0016a41106a22152020290300370300200041a0016a41086a22142018290300370300200020002903b0023703a00102402019450d002021102c0b201a102c201841bddbc500ad428080808080018422081002220741086a290000370300200020072900003703b0022007102c200041d0026a41086a22192018290300370300200020002903b0023703d002201841b7b9c000ad4280808080f0008422061002220741086a290000370300200020072900003703b0022007102c200041a0036a41086a22132018290300370300200020002903b0023703a003200041b0046a200041a0016a109f0141c000102a2207450d08200720002903d002370000200720002903a003370010200720002900b004370020200741086a2019290300370000200741186a2013290300370000200741286a200041b0046a41086a2220290000370000200741306a200041b0046a41106a2221290000370000200741386a200041b0046a41186a2209290000370000200041086a200741c0004101410041001097012000280208211a2007102c02400240201a4101470d0020002802a404450d0120002802a004102c0c010b200041b0046a200041e0036a41d00010db051a20004180056a200041b0046a41d00010db051a200041003602d805200042013703d005201820081002220741086a290000370300200020072900003703b0022007102c20192018290300370300200020002903b0023703d002201820061002220741086a290000370300200020072900003703b0022007102c20132018290300370300200020002903b0023703a003200041b0046a200041a0016a109f0141c000102a221a450d09201a20002903d002370000201a20002903a003370010201a20002900b004370020201a41086a2019290300370000201a41186a2013290300370000201a41286a2020290000370000201a41306a2021290000370000201a41386a2009290000370000200041003602b804200042013703b00420004180056a200041b0046a1091012000201f3602a003200041a0036a200041b0046a108a012000201e3602a003200041a0036a200041b0046a108a0120002802c005210720002802c8052218200041b0046a106702402018450d00201841306c21180340200741106a200041b0046a109101200020073602a003200741306a2107200041a0036a200041b0046a108a01201841506a22180d000b0b20002802d005210720002802d8052218200041b0046a106702402018450d002018410574211803402007200041b0046a109101200741206a2107201841606a22180d000b0b20002802b4042107201aad428080808080088420003502b80442208620002802b0042218ad84100102402007450d002018102c0b201a102c024020002802c405450d0020002802c005102c0b024020002802d405450d0020002802d005102c0b201c200b2903003703002005201529030037030020022014290300370300200020002903a0013703800541002107024002400240200441014b0d00024020040e020002000b200041e0016a41186a201c290300370300200041e0016a41106a2005290300370300200041e0016a41086a200229030037030020002000290380053703e001410021070c020b20042118034020072018410176221a20076a2219201d201941246c6a28020020174b1b21072018201a6b221841014b0d000b0b0240201d200741246c6a28020022182017460d00200720182017496a21070b200041e0016a41186a201c290300370300200041e0016a41106a2005290300370300200041e0016a41086a200229030037030020002000290380053703e001200420074f0d0041ecb3c000411e41acfec5001036000b024020042031470d00200441016a22182004490d0e2004410174221a2018201a20184b1b2231ad42247e2208422088a70d0e2008a722184100480d0e0240024020040d002018102a211d0c010b201d200441246c2018102e211d0b201d450d0a0b201d200741246c6a221841246a2018200420076b41246c10dc051a201820173602002018411c6a200041e0016a41186a290300370200201841146a200041e0016a41106a2903003702002018410c6a200041e0016a41086a290300370200201820002903e0013702042009201c290300370300202120052903003703002020200229030037030020002000290380053703b004024020012035470d00200141016a22072001490d0e200141017422182007201820074b1b223541ffffff3f712035470d0e203541057422074100480d0e0240024020010d002007102a21360c010b203620014105742007102e21360b2036450d0a0b200441016a2104203620014105746a220720002903b004370000200741186a2009290300370000200741106a2021290300370000200741086a20202903003700004101212c200141016a21010b20162003470d000b200321160c010b2038450d012022102c0c010b024020162003460d000340201641c0006a2802002218450d01201641d0006a21070240201641c4006a280200450d002018102c0b2007211620032007470d000b0b02402038450d002022102c0b202c410171450d0002402001450d002001410574211820362107034020004180056a200710cb0120002802c005221a0d03200741206a2107201841606a22180d000b0b4108211c41002105410021020c020b2012102c02402035450d002036102c0b2031450d02201d102c0c020b200041e0036a41386a221c20004180056a41386a2219290300370300200041e0036a41306a222020004180056a41306a2205290300370300200041e0036a41286a222120004180056a41286a2202290300370300200041e0036a41206a220920004180056a41206a2211290300370300200041e0036a41186a220a20004180056a41186a2213290300370300200041e0036a41106a220b20004180056a41106a221e290300370300200041e0036a41086a221520004180056a41086a221f290300370300200041a0036a41086a220320004180056a41cc006a290200370300200041a0036a41106a221420004180056a41d4006a290200370300200041a0036a41186a223720004180056a41dc006a28020036020020002000290380053703e0032000200041c4056a22162902003703a003200041c0006a41086a222c2015290300370300200041c0006a41106a2215200b290300370300200041c0006a41186a220b200a290300370300200041c0006a41206a220a2009290300370300200041c0006a41286a22092021290300370300200041c0006a41306a22212020290300370300200041c0006a41386a2220201c290300370300200041a0016a41086a221c2003290300370300200041a0016a41106a22032014290300370300200041a0016a41186a22142037280200360200200020002903e003370340200020002903a0033703a001201f202c290300370300201e20152903003703002013200b2903003703002011200a2903003703002002200929030037030020052021290300370300201920202903003703002000200029034037038005200041b0046a41086a2220201c290300370300200041b0046a41106a22212003290300370300200041b0046a41186a22092014280200360200200020002903a0013703b00441e000102a221c450d03201c200029038005370300201c201a360240201c20002903b004370244201c41386a2019290300370300201c41306a2005290300370300201c41286a2002290300370300201c41206a2011290300370300201c41186a2013290300370300201c41106a201e290300370300201c41086a201f290300370300201c41cc006a2020290300370200201c41d4006a2021290300370200201c41dc006a2009280200360200024020184120470d0041012105410121020c010b200741206a211f203620014105746a221a41606a211441012105410121020340201f21070240034020004180056a200710cb0120002802c00522180d01201a200741206a2207470d000c030b0b200041e0036a41386a221920004180056a41386a2220290300370300200041e0036a41306a221f20004180056a41306a2221290300370300200041e0036a41286a223720004180056a41286a2209290300370300200041e0036a41206a222c20004180056a41206a220a290300370300200041e0036a41186a221120004180056a41186a220b290300370300200041e0036a41106a221320004180056a41106a2215290300370300200041e0036a41086a221e20004180056a41086a2203290300370300200041a0036a41086a2222201641086a290200370300200041a0036a41106a2238201641106a290200370300200041a0036a41186a220c201641186a28020036020020002000290380053703e003200020162902003703a003200041b0046a41086a220d201e290300370300200041b0046a41106a222d2013290300370300200041b0046a41186a222e2011290300370300200041b0046a41206a222f202c290300370300200041b0046a41286a222c2037290300370300200041b0046a41306a2237201f290300370300200041b0046a41386a221f2019290300370300200041a0016a41086a22192022290300370300200041a0016a41106a22222038290300370300200041a0016a41186a2238200c280200360200200020002903e0033703b004200020002903a0033703a0012003200d2903003703002015202d290300370300200b202e290300370300200a202f2903003703002009202c290300370300202120372903003703002020201f290300370300200020002903b00437038005201e20192903003703002013202229030037030020112038280200360200200020002903a0013703e003024020022005470d00200541016a22192005490d09200541017422022019200220194b1b2202ad42e0007e2208422088a70d092008a722194100480d090240024020050d002019102a211c0c010b201c200541e0006c2019102e211c0b201c450d050b200741206a211f201c200541e0006c6a2219200029038005370300201941106a2015290300370300201941086a200329030037030020212903002108202029030021062009290300211b200a2903002110200b2903002132201941c0006a2018360200201941186a2032370300201941206a2010370300201941286a201b370300201941386a2006370300201941306a2008370300201941c4006a20002903e003370200201941cc006a201e290300370200201941d4006a2013290300370200201941dc006a2011280200360200200541016a210520142007470d000b0b200041a0056a20043602002000419c056a203136020020004190056a2001ad4220862035ad843703002000203636028c0520004284808080c0003702840520002012360280052000201d36029805200041003602b804200042013703b0042004200041b0046a106702402004450d00201d200441246c6a2104201d21180340201828020021190240024020002802b404221a20002802b80422076b4104490d0020002802b004211a0c010b200741046a22162007490d09201a41017422072016200720164b1b22074100480d0902400240201a0d002007102a211a0c010b20002802b004201a2007102e211a0b201a450d05200020073602b4042000201a3602b00420002802b80421070b2000200741046a3602b804201a20076a20193600002000200041b0046a3602e003201841046a200041e0036a109402201841246a22182004470d000b0b20002802b804211920002802b404211620002802b004211a200041b0026a41086a220741bddbc500ad42808080808001841002221841086a290000370300200020182900003703b0022018102c200041e0036a41086a22042007290300370300200020002903b0023703e003200741c5dbc500ad4280808080a002841002221841086a290000370300200020182900003703b0022018102c200041b0046a41086a22182007290300370300200020002903b0023703b00420004190026a41cffac00010ca0141c000102a2207450d02200720002903e003370000200720002903b0043700102007200029039002370020200741086a2004290300370000200741186a2018290300370000200741286a20004190026a41086a290300370000200741306a200041a0026a290300370000200741386a20004190026a41186a290300370000200041c0003602b404200020073602b004201a2019200041b0046a10f1022007102c02402016450d00201a102c0b200041e0036a20004180056a10c90120003502e803210820002802e003211a200041003602b804200042013703b0042001200041b0046a106702402001450d00200141057421182036210703402000200041b0046a3602a0012007200041a0016a109402200741206a2107201841606a22180d000b0b20002802b40421072008422086201aad8420003502b80442208620002802b0042218ad84100102402007450d002018102c0b024020002802e403450d00201a102c0b2012102c02402035450d002036102c0b02402031450d00201d102c0b201c0d010b200028028003211a024020004188036a2802002207450d00200741d0006c2118201a41c0006a210703400240200741046a280200450d002007280200102c0b200741d0006a2107201841b07f6a22180d000b0b20004184036a280200450d04201a102c0c040b4104102a2207450d002007201736000020004188056a4284808080c0003703004100211a20004198056a41002900d7fa40370300200041103a00800520004180056a41106a41002900cffa4037030020002007360284054101410020004180056a10920102402039410a6e417f7320056a221820054b0d002000418094ebdc0336028405200020394101203941014b1b2207201841036c221820072018491b2007418094ebdc036e22184101201841014b1b22186ead428094ebdc037e200720186ead8042ffffffff0f834280bbb0217e428094ebdc0380a722073602800520004180056a2007418094ebdc034b4102746a280200211a0b2005450d01200541ffffffff03712005470d04200541027422074100480d042007102a2219450d00200521182019210703402007201a360200200741046a21072018417f6a22180d000b201c200520192005201710a60402402005450d002019102c0b2005450d02200541e0006c2118201c41d4006a210703400240200741706a280200450d002007416c6a280200102c0b02402007280200450d002007417c6a280200102c0b200741e0006a2107201841a07f6a22180d000c030b0b1033000b201c410041044100201710a6040b02402002450d00201c102c0b200028028003211a024020004188036a2802002207450d00200741d0006c2118201a41c0006a210703400240200741046a280200450d002007280200102c0b200741d0006a2107201841b07f6a22180d000b0b20004184036a280200450d00201a102c0b0240200ea7450d00200f4101200f1b102c0b20004180066a24000f0b1035000ba60901077f230041d0026b2202240041002103200241003a002820012802042104417f210502400240034020042003460d01200241086a20036a200128020022062d00003a00002001200420056a3602042001200641016a3602002002200341016a22073a00282005417f6a21052007210320074120470d000b20024188016a41086a200241086a41086a29030037030020024188016a41106a200241086a41106a29030037030020024188016a41186a200241086a41186a290300370300200220022903083703880141002108200241003a0028200420076b2107200420056a21030340024020072008470d000240200841ff0171450d00200241003a00280b200041013a00000c030b200241086a20086a200620086a220541016a2d00003a0000200120033602042001200541026a3602002002200841016a22053a00282003417f6a21032005210820054120470d000b200241a8016a41086a200241086a41086a290300370300200241a8016a41106a200241086a41106a290300370300200241a8016a41186a200241086a41186a290300370300200220022903083703a80141002107200241003a0028200620056a2108034002402003417f470d000240200741ff0171450d00200241003a00280b200041013a00000c030b200241086a20076a200820076a220541016a2d00003a0000200120033602042001200541026a3602002002200741016a22053a00282003417f6a21032005210720054120470d000b200241c8016a41086a200241086a41086a290300370300200241c8016a41106a200241086a41106a290300370300200241c8016a41186a200241086a41186a290300370300200220022903083703c80141002107200241003a00c802200820056a41016a2105034002402003417f470d000240200741ff0171450d00200241003a00c8020b200041013a00000c030b200241a8026a20076a20052d00003a0000200120033602042001200541016a22053602002002200741016a22083a00c8022003417f6a21032008210720084120470d000b200241e8016a41086a2201200241a8026a41086a290300370300200241e8016a41106a2203200241a8026a41106a290300370300200241e8016a41186a2205200241a8026a41186a290300370300200241086a41086a20024188016a41086a290300370300200241086a41106a20024188016a41106a290300370300200241086a41186a20024188016a41186a290300370300200220022903a8023703e8012002200229038801370308200241c0006a200241a8016a41186a290300370300200241386a200241a8016a41106a290300370300200241306a200241a8016a41086a290300370300200220022903a801370328200241e0006a200241c8016a41186a290300370300200241d8006a200241c8016a41106a290300370300200241d0006a200241c8016a41086a290300370300200220022903c80137034820024180016a2005290300370300200241f8006a2003290300370300200241f0006a2001290300370300200220022903e801370368200041016a200241086a41800110db051a200041003a00000c010b0240200341ff0171450d00200241003a00280b200041013a00000b200241d0026a24000bca8c020f057f017e017f017e097f017e037f017e017f027e017f037e017f157e167f230041e00e6b22022400200241900e6a41186a22034200370300200241900e6a41106a22044200370300200241900e6a41086a22054200370300200242003703900e200241c80d6a41086a22064196e0c500ad4280808080f0008422071002220841086a290000370300200220082900003703c80d2008102c20052006290300370300200220022903c80d22093703e80c200220093703900e200641a7e0c500ad4280808080b003841002220841086a290000370300200220082900003703c80d2008102c200420022903c80d2209370300200241880b6a41086a220a2005290300370300200241880b6a41106a220b2009370300200241880b6a41186a220c2006290300370300200220093703a80d200220022903900e3703880b200241c80a6a200241880b6a412010940120022802cc0a210d20022802c80a210e200342003703002004420037030020054200370300200242003703900e200620071002220841086a290000370300200220082900003703c80d2008102c20052006290300370300200220022903c80d22093703e80c200220093703900e200641d8e0c500ad42808080808001841002220841086a290000370300200220082900003703c80d2008102c200320062903002209370300200a2005290300370300200b20022903c80d2207370300200c2009370300200220073703a80d200220022903900e3703880b02400240024002404100200241880b6a10ec032206200641ff01714104461b41ff0171220641034b0d00024020060e0400020103000b2001200d4100200e1b6b220620014b0d00200641064f0d020b200041003602000c020b200241900e6a41186a22084200370300200241900e6a41106a220a4200370300200241900e6a41086a22054200370300200242003703900e200241c80d6a41086a22064196e0c500ad4280808080f000841002220341086a290000370300200220032900003703c80d2003102c20052006290300370300200220022903c80d22093703e80c200220093703900e200641d8e0c500ad42808080808001841002220341086a290000370300200220032900003703c80d2003102c200241a80d6a41086a20062903002209370300200220022903c80d22073703a80d20042007370000200441086a2009370000200241880b6a41086a2005290300370300200241880b6a41106a200a290300370300200241880b6a41186a2008290300370300200220022903900e3703880b200241880b6aad428080808080048410050b200241e80b6a41186a4200370300200241e80b6a41106a220f420037030041082110200241e80b6a41086a22054200370300200242003703e80b200241c80d6a41086a220641ecddc500ad4280808080f000841002220441086a290000370300200220042900003703c80d2004102c20052006290300370300200220022903c80d3703e80b200641c9f8c200ad4280808080a001841002220441086a290000370300200220042900003703c80d2004102c200f20022903c80d2209370300200241880b6a41086a2005290300370300200241880b6a41106a2009370300200241880b6a41186a2006290300370300200220093703a80d200220022903e80b3703880b200241e80b6a200241880b6a412010d0014100211141002112024002400240024020022902ec0b420020022802e80b22061b2209422088a722054105742204450d0020044105752212ad42d0007e2207422088a70d032007a722044100480d032004102a2210450d010b2009a7210d2006410120061b210c02402005450d002005410574220441606a210e200241e80b6a41206a210620102103200c21050340200541086a2900002109200541106a290000210720052900002113200241880b6a41186a2208200541186a290000370300200241880b6a41106a220a2007370300200241880b6a41086a220b2009370300200220133703880b200241b00b6a200241880b6a109204200241e80b6a41186a2008290300370300200241e80b6a41106a200a290300370300200241e80b6a41086a200b290300370300200620022903b00b370300200641086a200241b00b6a41086a290300370300200641106a200241b00b6a41106a290300370300200641186a200241b00b6a41186a290300370300200641206a200241b00b6a41206a290300370300200641286a200241b00b6a41286a290300370300200220022903880b3703e80b2003200241e80b6a41d00010db0541d0006a2103200541206a2105200441606a22040d000b200e41057641016a21110b0240200d450d00200c102c0b200241880b6a41186a22044200370300200241880b6a41106a22144200370300200241880b6a41086a22054200370300200242003703880b200241c80d6a41086a22064196e0c500ad4280808080f0008422091002220341086a290000370300200220032900003703c80d2003102c20052006290300370300200220022903c80d22073703e80c200220073703880b200641c2e0c500ad4280808080e002841002220341086a290000370300200220032900003703c80d2003102c201420022903c80d2207370300200241e80b6a41086a22032005290300370300200241e80b6a41106a22082007370300200241e80b6a41186a220a2006290300370300200220073703a80d200220022903880b3703e80b200241b00b6a200241e80b6a10e403410021150240024020022802b40b22160d004104211642002117410021180c010b200241e80b6aad4280808080800484100520022802b00b211820022903b80b21170b200a42003703002008420037030020034200370300200242003703e80b200641f9e8c500ad42808080809001841002220b41086a2900003703002002200b2900003703c80d200b102c20032006290300370300200220022903c80d3703e80b2006419db1c200ad428080808030841002220b41086a2900003703002002200b2900003703c80d200b102c200241a80d6a41086a220b20062903002207370300200220022903c80d22133703a80d200f2013370000200f41086a200737000020052003290300370300201420082903003703002004200a290300370300200220022903e80b3703880b200241b80a6a200241880b6a10980120022903c00a210720022802b80a210d200442003703002014420037030020054200370300200242003703880b200620091002220c41086a2900003703002002200c2900003703c80d200c102c20052006290300370300200220022903c80d22133703e80c200220133703880b200641e6f8c200ad4280808080f0018422131002220c41086a2900003703002002200c2900003703c80d200c102c200b20062903002219370300200220022903c80d221a3703a80d2014201a370000201441086a220e20193700002003200529030037030020082014290300370300200a2004290300370300200220022903880b3703e80b200241a80a6a200241e80b6a10980120022903b00a211920022802a80a211b200442003703002014420037030020054200370300200242003703880b200620091002220c41086a2900003703002002200c2900003703c80d200c102c20052006290300370300200220022903c80d22093703e80c200220093703880b200620131002220c41086a2900003703002002200c2900003703c80d200c102c200b20062903002209370300200220022903c80d22133703a80d20142013370000200e20093700002003200529030037030020082014290300370300200a2004290300370300200220022903880b3703e80b200220074200200d1b22093703b00b200241e80b6aad221c4280808080800484221d200241b00b6aad221e428080808080018410010240200920194200201b1b7d2213500d00200241e80b6a41186a22044200370300200241e80b6a41106a22034200370300200241e80b6a41086a22054200370300200242003703e80b200241c80d6a41086a22064196e0c500ad4280808080f0008422091002220841086a290000370300200220082900003703c80d2008102c20052006290300370300200220022903c80d3703e80b200641bafdc200ad4280808080e001841002220841086a290000370300200220082900003703c80d2008102c200241a80d6a41086a220d20062903002207370300200220022903c80d22193703a80d200f2019370000200f41086a221f2007370000200241880b6a41086a22082005290300370300200241880b6a41106a220a2003290300370300200241880b6a41186a220b2004290300370300200220022903e80b3703880b200241e80b6a200241880b6a412010d00120022802e80b210c20022902ec0b2119200b4200370300200a420037030020084200370300200242003703880b200620091002220e41086a2900003703002002200e2900003703c80d200e102c20082006290300370300200220022903c80d22093703e80c200220093703880b200641c8fdc200ad42808080809001841002220e41086a2900003703002002200e2900003703c80d200e102c200d20062903002209370300200220022903c80d22073703a80d20142007370000201441086a2009370000200520082903003703002003200a2903003703002004200b290300370300200220022903880b3703e80b200241900a6a200241e80b6a4120109e01200241900a6a41106a290300211a20022903980a212020022802900a210e200442003703002003420037030020054200370300200242003703e80b2006418be9c500ad42808080808001841002221b41086a2900003703002002201b2900003703c80d201b102c20052006290300370300200220022903c80d3703e80b200641c9b5c000ad4280808080d001841002221b41086a2900003703002002201b2900003703c80d201b102c200d20062903002209370300200220022903c80d22073703a80d200f2007370000201f200937000020082005290300370300200a2003290300370300200b2004290300370300200220022903e80b3703880b200241f8096a200241880b6a4120109e01200241e8096a20022903800a420020022802f80922061b2207200241f8096a41106a290300420020061b2209428094ebdc03420010e105200241c8096a20204200200e1b201a4200200e1b20194200200c1b22214220882222420010e005200241d8096a20022903e809221a200241e8096a41086a29030022204280ec94a37c427f10e0052009200241c8096a41086a290300221920022903c8092223200756201920095620192009511b22061b21092007202320061b212320022903d80920077c21192022a721032013428086ebc7f5002013428086ebc7f500541b421f8042ffffffff0f83428094ebdc037e429880b5e50380212241012105200c4101200c1b211f41d87d21060240024003402006450d01200241b8096a201a2020200641ccf0c1006a3502002207420010e0052005417f6a2105200641086a2106202320022903b8092213200720197e22072007428094ebdc038022074280ec94a37c7e7c4280cab5ee01562007a76aad7c2207542009200241b8096a41086a2903002007201354ad7c22075420092007511b2204450d000b0240200441016a41017120056b2206417f6a220520064d0d00200241b8086a201a202042c0f0f50b420010e005200241c0086a29030020022903b8082207201942c0f0f50b7e201942288022094280ec94a37c7e7c4280cab5ee01562009a76aad7c2209200754ad7c21130c020b0240200541244b0d00200241a8096a201a20202005410374220441a4eec1006a2802002208ad2207420010e00520024188096a202320022903a8092213200720197e22072007428094ebdc038022074280ec94a37c7e7c4280cab5ee01562007a76aad7c220720232007562009200241a8096a41086a2903002007201354ad7c22135620092013511b22051b22242007202320051b22077d22232009201320051b2013200920051b7d2024200754ad7d41002006410374220a41a4eec1006a280200220620086b2208200820064b1b22064101200641014b1bad2209420010e105200241f8086a200229038809220720024188096a41086a29030022242009420010e00520024198096a201a2020200441a8eec1006a2802002206ad2225420010e005200241c8086a20244200200a41a8eec1006a28020022042006200420064b22081b2006200420081b6bad2213420010e005200241e8086a200742002013420010e005200241d8086a420042002007420010e005427f427f200241e8086a41086a290300220720022903c80820022903d8087c7c222420022903d00820022903e0088442005220242007547222081b2224427f20022903e80820081b2207202320022903f8087d20137e2009807c22092007542208ad7c221320082013202454200920075a1b22081b2123427f200920081b211320024198096a41086a2903002002290398092209202520197e22072007428094ebdc038022074280ec94a37c7e7c4280cab5ee01562007a76aad7c2207200954ad7c210902402005200420064d730d004200200920237d2007201354ad7d2223200720137d2224200756202320095620232009511b22061b21134200202420061b21090c030b427f200920237c200720137c22232007542206ad7c22072006200720095420072009511b22061b2113427f202320061b21090c020b41b8a9c500200541251038000b200241a8086a201a202042e8aafa0b420010e005200241b0086a29030020022903a8082207201942e8aafa0b7e22092009428094ebdc038022094280ec94a37c7e7c4280cab5ee01562009a76aad7c2209200754ad7c21130b42002126200241e8076a201a20204280c2d72f420010e005200241d8076a20022903e807221a20194280c2d72f7e2019420a8022074280ec94a37c7e7c4280cab5ee01562007a76aad7c2207200241e8076a41086a2903002007201a54ad7c428094ebdc03420010e10520024198086a20092013428094ebdc03420010e105200241c8076a20022903d8072213200241d8076a41086a29030022194280ec94a37c427f10e005200241b8076a201320192022420010e00520024188086a200229039808221320024198086a41086a29030022194280ec94a37c427f10e005200241f8076a201320192022420010e0052022200720022903c8077c7e2227428094ebdc0380212820022903b8072129200241b8076a41086a290300212a202220092002290388087c7e2207428094ebdc038021090240024020030d004200212b0c010b201f20034105746a210e20162017422088a74102746a210d200241a8076a20022903f8072213200720094280ec94a37c7e7c4280cab5ee01562009a76aad7c2209200241f8076a41086a2903002009201354ad7c428094ebdc03420010e10520024198076a20022903a807222c200241a8076a41086a290300222d4280ec94a37c427f10e00520184101201841014b1b220a418094ebdc036e22064101200641014b1b210b20092002290398077c212e200241880b6a41106a2118420021264200212b20162103201f21080240024002400240024003402003200d460d060240024020032802002206450d0020024188076a202c202d200a2006200a2006491b200b6ead428094ebdc037e200a200b6ead8042ffffffff0f832209420010e005200241c80d6a41086a22064196e0c500ad4280808080f000841002220541086a290000370300200220052900003703c80d2005102c200241e80c6a41086a22042006290300370300200220022903c80d3703e80c200641c9f8c200ad4280808080a001841002220541086a290000370300200220052900003703c80d2005102c200241a80d6a41086a22052006290300370300200220022903c80d3703a80d200241880b6a2008109f012009202e7e2213428094ebdc03802109200229038807210720024188076a41086a290300211941c000102a2206450d0a20192007201320094280ec94a37c7e7c4280cab5ee01562009a76aad7c2209200754ad7c2107200620022903e80c370000200641086a2004290300370000200620022903a80d370010200641186a2005290300370000200620022903880b370020200641286a200241880b6a41086a290300370000200641306a2018290300370000200641386a200241880b6a41186a290300370000200241c0003602b40e200220063602b00e200241880b6a2006ad42808080808008841003108d010240024020022802880b22050d00410021040c010b200228028c0b211b200220022802900b3602e40a200220053602e00a20024180076a200241e00a6a1075024002402002280280070d00200228028407210c410121040c010b200241003602b80b200242013703b00b2002410b3602ec0d2002200241b00e6a3602e80d2002200241b00b6a3602900e200241013602fc0b200242013702ec0b200241d0b0c2003602e80b2002200241e80d6a3602f80b200241900e6a41c49ac500200241e80b6a10391a20023502b80b42208620023502b00b841004024020022802b40b450d0020022802b00b102c0b410021040b201b450d002005102c0b42002113200241f0066a20092007428094ebdc03420010e105200241e0066a20022903f0062219200241f0066a41086a290300221a4280ec94a37c427f10e005200241d0066a2019201a200c410020041bad2220420010e0052006102c200242003703b80b200242003703b00b024002404200200920022903d00622192020200920022903e0067c7e221a201a428094ebdc0380221a4280ec94a37c7e7c4280cab5ee0156201aa76aad7c222f7d221a201a2009562007200241d0066a41086a290300202f201954ad7c22307d2009202f54ad7d220920075620092007511b22061b22314200200920061b22328450450d00420021090c010b200241e80b6a2008109204200241c0066a20022903e80b220942012009420156200241e80b6a41086a29030022094200522009501b22061b22132009420020061b2209428094ebdc03420010e10520022802880c210c200241c0066a41086a290300213320022903c0062134024020022802900c2206450d00200241b0066a2013200920344201203442015620334200522033501b22051b221a2033420020051b222010e10520024190066a20312032428094ebdc03420010e105200241a0066a20312032428094ebdc03420010e20520022903b006220742ffffffff0f56200241b0066a41086a29030022194200522019501b0d032007a7450d05200c200641306c6a2104200742ffffffff0f83212320024190066a41086a2903002122200229039006212420022903a0062125200c2106034020024180066a20132006290300220720132007542009200641086a29030022075420092007511b22051b2009200720051b201a202010e105200229038006220742808080801054410020024180066a41086a290300501b450d0a200241d8056a20242022200742ffffffff0f83428094ebdc037e20238042ffffffff0f832207420010e005200241e8056a200641106a20022903d8052219200720257e22072007428094ebdc038022074280ec94a37c7e7c4280cab5ee01562007a76aad7c2207200241d8056a41086a2903002007201954ad7c109304200241b00b6a20022903e80520022903f005200241e8056a41106a290300108202200641306a22062004470d000b0b200241b8056a2013200920344201203442015620334200522033501b22061b221a2033420020061b222010e10520022903b8052207428080808010544100200241b8056a41086a290300501b450d05200241a8056a201320022903f80b221920132019542009200241e80b6a41186a29030022195420092019511b22061b2009201920061b201a202010e10520022903a8052209428080808010544100200241a8056a41086a290300501b450d062007a7450d0720024198056a20312032428094ebdc03420010e10520024188056a200229039805221320024198056a41086a29030022194280ec94a37c427f10e005200241f8046a20132019200942ffffffff0f83428094ebdc037e200742ffffffff0f838042ffffffff0f832209420010e00520022903f8042207200920312002290388057c7e22092009428094ebdc038022094280ec94a37c7e7c4280cab5ee01562009a76aad7c2213200754ad2109200241f8046a41086a29030021070240200228028c0c450d00200c102c0b200720097c21090b200241e0046a20082013202f7c2207200920307c2007201354ad7c109304200241b00b6a20022903e00420022903e804200241e0046a41106a290300108202427f202b200241b00b6a41086a2903007c202620022903b00b7c22072026542206ad7c220920062009202b542009202b511b22061b212b427f200720061b21260b200341046a2103200841206a2208200e470d010c070b0b2002411136028c0b200241f9e2c3003602880b41a7e1c30041e000200241880b6a4184ebc300103b000b200241c8056a2013200c290300220720132007542009200c41086a29030022075420092007511b22061b2009200720061b201a202010e10520022903c805428080808010544100200241c8056a41086a290300501b450d0341e0e2c30041194188e2c3001036000b2002411136028c0b200241f9e2c3003602880b41a7e1c30041e000200241880b6a4184ebc300103b000b2002411136028c0b200241f9e2c3003602880b41a7e1c30041e000200241880b6a4184ebc300103b000b41e0e2c30041194188e2c3001036000b2002411136028c0b200241f9e2c3003602880b41a7e1c30041e000200241880b6a4184ebc300103b000b202a2029202720284280ec94a37c7e7c4280cab5ee01562028a76aad7c2209202954ad7c210702402017a7450d002016102c0b200241e80b6a41186a202b370300200241e80b6a41106a2026370300200241e80b6a41086a41003a0000200241900c6a42002007202b7d2009202654ad7d2213200920267d2219200956201320075620132007511b22061b2207370300200241e80b6a41206a4200201920061b2213370300200241043a00e80b41014100200241e80b6a109201200241c8046a2026202b10ce01200241c8046a41106a290300211920022903d004211a02400240024020022903c8042209a7450d00200241880d6a41186a22044200370300200241880d6a41106a22034200370300200241880d6a41086a22054200370300200242003703880d200241c80d6a41086a2206418be9c500ad428080808080018422201002220841086a290000370300200220082900003703c80d2008102c20052006290300370300200220022903c80d22093703e80b200220093703880d200641c9b5c000ad4280808080d0018422231002220841086a290000370300200220082900003703c80d2008102c200320022903c80d2209370300200241e80c6a41086a220a2005290300370300200241e80c6a41106a220b2009370300200241e80c6a41186a220c2006290300370300200220093703880b200220022903880d3703e80c200241b0046a200241e80c6a4120109e01200241b0046a41106a290300210920022903b804212220022802b0042108200442003703002003420037030020054200370300200242003703880d200620201002220341086a290000370300200220032900003703c80d2003102c20052006290300370300200220022903c80d22203703e80b200220203703880d200620231002220341086a290000370300200220032900003703c80d2003102c200420062903002220370300200a2005290300370300200b20022903c80d2223370300200c2020370300200220233703880b200220022903880d3703e80c2002427f2009420020081b220920197c2022420020081b2219201a7c221a2019542206ad7c22192006201920095420192009511b22061b3703f00b2002427f201a20061b3703e80b200241e80b6a2106200241e80c6a21050c010b2009500d01200241880d6a41186a22044200370300200241880d6a41106a22034200370300200241880d6a41086a22054200370300200242003703880d200241c80d6a41086a2206418be9c500ad428080808080018422201002220841086a290000370300200220082900003703c80d2008102c20052006290300370300200220022903c80d22093703e80b200220093703880d200641c9b5c000ad4280808080d0018422231002220841086a290000370300200220082900003703c80d2008102c200320022903c80d2209370300200241e80c6a41086a220a2005290300370300200241e80c6a41106a220b2009370300200241e80c6a41186a220c2006290300370300200220093703880b200220022903880d3703e80c20024198046a200241e80c6a4120109e0120024198046a41106a290300210920022903a00421222002280298042108200442003703002003420037030020054200370300200242003703880d200620201002220341086a290000370300200220032900003703c80d2003102c20052006290300370300200220022903c80d22203703e80b200220203703880d200620231002220341086a290000370300200220032900003703c80d2003102c200420062903002220370300200a2005290300370300200b20022903c80d2223370300200c2020370300200220233703880b200220022903880d3703e80c2002427f2009420020081b220920197c2022420020081b2219201a7c221a2019542206ad7c22192006201920095420192009511b22061b3703f00b2002427f201a20061b3703e80b200241e80b6a2106200241e80c6a21050b2005ad42808080808004842006ad428080808080028410010b200241e80b6a41186a22044200370300200241e80b6a41106a22034200370300200241e80b6a41086a22054200370300200242003703e80b200241c80d6a41086a2206418be9c500ad428080808080018422201002220841086a290000370300200220082900003703c80d2008102c20052006290300370300200220022903c80d22093703b00b200220093703e80b200641c9b5c000ad4280808080d0018422231002220841086a290000370300200220082900003703c80d2008102c200241a80d6a41086a220b20062903002209370300200220022903c80d22193703a80d200f2019370000200f41086a220c2009370000200241880b6a41086a220d2005290300370300200241880b6a41106a220e2003290300370300200241880b6a41186a221b2004290300370300200220022903e80b3703880b20024180046a200241880b6a4120109e0120024180046a41106a290300210920022903880421192002280280042108200442003703002003420037030020054200370300200242003703e80b200620201002220a41086a2900003703002002200a2900003703c80d200a102c20052006290300370300200220022903c80d221a3703b00b2002201a3703e80b200620231002220a41086a2900003703002002200a2900003703c80d200a102c200b2006290300221a370300200220022903c80d22223703a80d200f2022370000200c201a370000200d2005290300370300200e2003290300370300201b2004290300370300200220022903e80b3703880b2002427f2009420020081b220920077c2019420020081b221920137c22222019542208ad7c221a2008201a200954201a2009511b22081b3703f00b2002427f202220081b3703e80b200241880b6aad4280808080800484201c4280808080800284221a1001024002402019427f85201320081b22132009427f85200720081b2209844200520d00200241880d6a41186a22044200370300200241880d6a41106a22034200370300200241880d6a41086a22054200370300200242003703880d200620201002220841086a290000370300200220082900003703c80d2008102c20052006290300370300200220022903c80d22093703e80b200220093703880d200620231002220841086a290000370300200220082900003703c80d2008102c200320022903c80d2209370300200241e80c6a41086a220a2005290300370300200241e80c6a41106a220b2009370300200241e80c6a41186a220c2006290300370300200220093703880b200220022903880d3703e80c200241e8036a200241e80c6a4120109e01200241e8036a41106a290300210920022903f003210720022802e8032108200442003703002003420037030020054200370300200242003703880d200620201002220341086a290000370300200220032900003703c80d2003102c20052006290300370300200220022903c80d22133703e80b200220133703880d200620231002220341086a290000370300200220032900003703c80d2003102c200420062903002213370300200a2005290300370300200b20022903c80d2219370300200c2013370300200220193703880b200220022903880d3703e80c20022009420020081b3703f00b20022007420020081b3703e80b200241e80c6aad4280808080800484201a10010c010b200241e80b6a10ae02200241e80b6a20132009109c012004200937030020032013370300200541053a00002002410c3a00e80b41014100200241e80b6a1092010b410121152021a7450d00201f102c0b200241880b6a41186a22044200370300200241880b6a41106a22034200370300200241880b6a41086a22054200370300200242003703880b200241c80d6a41086a22064196e0c500ad4280808080f0008422091002220841086a290000370300200220082900003703c80d2008102c20052006290300370300200220022903c80d22073703e80c200220073703880b2006419de0c500ad4280808080a0018422071002220841086a290000370300200220082900003703c80d2008102c200241a80d6a41086a220820062903002213370300200220022903c80d22193703a80d20142019370000201441086a220a2013370000200241e80b6a41086a220b2005290300370300200241e80b6a41106a220c2003290300370300200241e80b6a41186a220d2004290300370300200220022903880b3703e80b200241e0036a200241e80b6a412010940120022802e403211b20022802e0032118200442003703002003420037030020054200370300200242003703880b200620091002220e41086a2900003703002002200e2900003703c80d200e102c20052006290300370300200220022903c80d22133703e80c200220133703880b200620071002220e41086a2900003703002002200e2900003703c80d200e102c200820062903002207370300200220022903c80d22133703a80d20142013370000200a2007370000200b2005290300370300200c2003290300370300200d2004290300370300200220022903880b3703e80b2002201b410020181b221b41016a22353602b00b201d201e4280808080c0008422071001200442003703002003420037030020054200370300200242003703880b200620091002220e41086a2900003703002002200e2900003703c80d200e102c20052006290300370300200220022903c80d22133703e80c200220133703880b200641a7e0c500ad4280808080b0038422131002220e41086a2900003703002002200e2900003703c80d200e102c200820062903002219370300200220022903c80d221a3703a80d2014201a370000200a2019370000200b2005290300370300200c2003290300370300200d2004290300370300200220022903880b3703e80b200241d8036a200241e80b6a4120109401200442003703002003420037030020054200370300200242003703880b200620091002220e41086a2900003703002002200e2900003703c80d200e102c20052006290300370300200220022903c80d22193703e80c200220193703880b200620131002220e41086a2900003703002002200e2900003703c80d200e102c200820062903002213370300200220022903c80d22193703a80d20142019370000200a2013370000200b2005290300370300200c2003290300370300200d2004290300370300200220022903880b3703e80b200220013602b00b201d20071001200442003703002003420037030020054200370300200242003703880b200620091002220e41086a2900003703002002200e2900003703c80d200e102c20052006290300370300200220022903c80d22093703e80c200220093703880b200641f3e0c500ad4280808080a001841002220e41086a2900003703002002200e2900003703c80d200e102c200820062903002209370300200220022903c80d22073703a80d20142007370000200a2009370000200b2005290300370300200c2003290300370300200d2004290300370300200220022903880b3703e80b200241b00b6a200241e80b6a10eb0320022802b00b2206410420061b2118024020022902b40b420020061b22094220882207a722062009a7470d00200641016a22052006490d032007a722034101742204200520052004491b220541ffffffff01712005470d03200541037422044100480d030240024020060d002004102a21180c010b201820034103742004102e21180b2018450d012009422088a721062005ad21090b201820064103746a2205200136020420052035360200200942ffffffff0f832113200641016a213602400240203541a1054f0d0020132036ad4220868421130c010b2036450d00201b41e17a6a2104200641037441086a2105410021372018210602400340200628020020044f0d01200641086a2106203741016a2137200541786a22050d000b0b0240024020362037490d00024020370d00410021060c020b2037410374211f201e4280808080c0008421092018211b0340201b2802002101200241c80d6a41086a22054196e0c500ad4280808080f0008422071002220641086a290000370300200220062900003703c80d2006102c200241e80b6a41086a22042005290300370300200220022903c80d3703e80b200541f5f8c200ad4280808080b002841002220641086a290000370300200220062900003703c80d2006102c200241880b6a41086a22032005290300370300200220022903c80d3703880b200220013602b00b200241880d6a41186a220820091006220641186a290000370300200241880d6a41106a220a200641106a290000370300200241880d6a41086a220b200641086a290000370300200220062900003703880d2006102c200241e80c6a41186a220c2008290300370300200241e80c6a41106a220d200a290300370300200241e80c6a41086a220e200b290300370300200220022903880d3703e80c41c000102a2206450d04200620022903e80b370000200641086a2004290300370000200620022903880b370010200641186a2003290300370000200620022903e80c370020200641286a200e290300370000200641306a200d290300370000200641386a200c2903003700002006ad4280808080800884100d2006102c200520071002220641086a290000370300200220062900003703c80d2006102c20042005290300370300200220022903c80d3703e80b20054188f9c200ad4280808080b002841002220641086a290000370300200220062900003703c80d2006102c20032005290300370300200220022903c80d3703880b200220013602b00b200820091006220641186a290000370300200a200641106a290000370300200b200641086a290000370300200220062900003703880d2006102c200c2008290300370300200d200a290300370300200e200b290300370300200220022903880d3703e80c41c000102a2206450d04201b41086a211b200620022903e80b370000200641086a2004290300370000200620022903880b370010200641186a2003290300370000200620022903e80c370020200641286a200e290300370000200641306a200d290300370000200641386a200c2903003700002006ad4280808080800884100d2006102c201f41786a221f0d000b203721060c010b41dafec500411c41acfec5001036000b203620376b221f450d0002402006450d002018201820064103746a201f41037410dc051a0b20182802042136200241e80c6a41186a22374200370300200241e80c6a41106a220e4200370300200241e80c6a41086a221b4200370300200242003703e80c200241c80d6a41086a220341ecddc500ad4280808080f00084221a1002220641086a290000370300200220062900003703c80d2006102c201b2003290300370300200220022903c80d22093703e80b200220093703e80c200341e1ddc500ad4280808080b0018422201002220641086a290000370300200220062900003703c80d2006102c200e20022903c80d2209370300200241a80d6a41086a2238201b290300370300200241a80d6a41106a22392009370300200241a80d6a41186a223a2003290300370300200220093703880b200220022903e80c3703a80d200241e80b6a200241a80d6a10e4014101210420022902ec0b21190240024020022802e80b22064101460d00200641014621040c010b2019422088a7223b20362036203b4b1b22012019a72205490d000240200120054d0d00201e4280808080c00084210941ecddc500ad4280808080f0008421070340200241c80d6a41086a220620071002220441086a290000370300200220042900003703c80d2004102c200241e80b6a41086a22082006290300370300200220022903c80d3703e80b200641a1c6c100ad4280808080a002841002220441086a290000370300200220042900003703c80d2004102c200241880b6a41086a22042006290300370300200220022903c80d3703880b200220053602b00b200241880d6a41186a220a20091006220641186a290000370300200241880d6a41106a220b200641106a290000370300200241880d6a41086a220c200641086a290000370300200220062900003703880d2006102c200241e80c6a41186a220d200a290300370300200241e80c6a41106a220a200b290300370300200241e80c6a41086a220b200c290300370300200220022903880d3703e80c41c000102a2206450d04200620022903e80b370000200641086a2008290300370000200620022903880b370010200641186a2004290300370000200620022903e80c370020200641286a200b290300370000200641306a200a290300370000200641386a200d2903003700002006ad428080808080088410052006102c2001200541016a2205470d000b0b2036203b4921042019428080808070832001ad8421190b2013201fad42208684211320374200370300200e4200370300201b4200370300200242003703e80c2003201a1002220641086a290000370300200220062900003703c80d2006102c201b2003290300370300200220022903c80d22093703e80b200220093703e80c200320201002220641086a290000370300200220062900003703c80d2006102c200241880b6a41086a20032903002209370300200220022903c80d22073703880b200e2007370000200e41086a20093700002038201b2903003703002039200e290300370300203a2037290300370300200220022903e80c3703a80d024020040d00200241a80d6aad428080808080048410050c010b4108102a2206450d01200620193e0000200620194220883e0004200241a80d6aad42808080808004842006ad428080808080018410012006102c0b200241880b6a41186a22034200370300200241880b6a41106a22084200370300200241880b6a41086a22054200370300200242003703880b200241c80d6a41086a22064196e0c500ad4280808080f000841002220441086a290000370300200220042900003703c80d2004102c20052006290300370300200220022903c80d22093703e80c200220093703880b200641f3e0c500ad4280808080a001841002220441086a290000370300200220042900003703c80d2004102c200241a80d6a41086a20062903002209370300200220022903c80d22073703a80d20142007370000201441086a2009370000200241e80b6a41086a2005290300370300200241e80b6a41106a2008290300370300200241e80b6a41186a2003290300370300200220022903880b3703e80b0240024020180d00201d10050c010b200241003602b80b200242013703b00b2013422088a72206200241b00b6a10670240024020060d0020022802b80b210320022802b40b210420022802b00b21050c010b201820064103746a211b410020022802b80b220a6b210320022802b40b2104410021060340200a20066a2108201820066a220b280200210d02400240200420036a4104490d0020022802b00b21050c010b200841046a22052008490d062004410174220c2005200c20054b1b220c4100480d060240024020040d00200c102a21050c010b20022802b00b2004200c102e21050b2005450d042002200c3602b40b200220053602b00b200c21040b2002200841046a220c3602b80b2005200a6a20066a200d360000200b41046a280200210d0240200420036a417c6a41034b0d00200c41046a220e200c490d062004410174220c200e200c200e4b1b220c4100480d060240024020040d00200c102a21050c010b20052004200c102e21050b2005450d042002200c3602b40b200220053602b00b200c21040b2002200841086a3602b80b2005200a6a20066a41046a200d360000200341786a2103200641086a2106200b41086a201b470d000b200a20066a21030b2013a72106201d2003ad4220862005ad84100102402004450d002005102c0b2006450d002018102c0b200241003602d80a200242043703d00a200241e80b6a108a04200241e00a6a20022802e80b220620022802f00b10d301024020022802ec0b450d002006102c0b200241880b6a410c6a200241e00a6a41086a290300370200200241880b6a41146a200241e00a6a41106a290300370200200241880b6a411c6a200241e00a6a41186a290300370200200241880b6a41246a200241e00a6a41206a2d00003a0000200220022903e00a37028c0b2002200241d00a6a3602880b200241e80b6a200241880b6a410472109404410121180240024020022802e80b4101460d004100211b4100211f0c010b200241b00b6a41206a200241e80b6a41246a280200360200200241b00b6a41186a200241e80b6a411c6a22062902002209370300200241b00b6a41106a200241e80b6a41146a22052902002207370300200241b00b6a41086a200241e80b6a410c6a22042902002213370300200220022902ec0b22193703b00b200241900e6a41186a2009370300200241900e6a41106a2007370300200241900e6a41086a2013370300200220193703900e200241e80c6a41186a2006290200370300200241e80c6a41106a2005290200370300200241e80c6a41086a2004290200370300200220022902ec0b3703e80c4120102a2205450d01200520022903900e370000200541186a200241900e6a41186a2203290300370000200541106a200241900e6a41106a2208290300370000200541086a200241900e6a41086a220a290300370000200241a80d6a41086a200241e80c6a41086a2903002209370300200241a80d6a41106a200241e80c6a41106a2903002207370300200241a80d6a41186a200241e80c6a41186a2903002213370300200220022903e80c22193703a80d20022802880b2106200241880d6a41186a220b2013370300200241880d6a41106a220c2007370300200241880d6a41086a220d2009370300200220193703880d024020062802082204200641046a280200470d00200441016a220e2004490d042004410174221b200e201b200e4b1b220ead422c7e2209422088a70d042009a7221b4100480d040240024020040d00201b102a21040c010b20062802002004412c6c201b102e21040b2004450d0220062004360200200641046a200e360200200628020821040b200d2903002109200c2903002107200b290300211320022903880d211920062802002004412c6c6a22044281808080103702242004200536022020042019370200200441186a2013370200200441106a2007370200200441086a20093702004101211b2006200628020841016a360208200241b00e6a41086a200a290300370300200241b00e6a41106a2008290300370300200241b00e6a41186a2003290300370300200220022903900e3703b00e4120102a2218450d01201820022903b00e370000201841186a200241b00e6a41186a220e290300370000201841106a200241b00e6a41106a2201290300370000201841086a200241b00e6a41086a2237290300370000200241b00b6a41206a200241880b6a41206a290300370300200241b00b6a41186a200241880b6a41186a290300370300200241b00b6a41106a200241880b6a41106a290300370300200241b00b6a41086a200241880b6a41086a290300370300200220022903880b3703b00b200241e80b6a200241b00b6a410472223c109404024020022802e80b4101460d004101211f0c010b200241e80b6a41047221054102210a412021084101211b4101211f0340200241e80d6a41206a200541206a280200360200200241e80d6a41186a200541186a22062902002209370300200241e80d6a41106a200541106a22042902002207370300200241e80d6a41086a200541086a220329020022133703002002200529020022193703e80d200241900e6a41186a220b2009370300200241900e6a41106a220c2007370300200241900e6a41086a220d2013370300200220193703900e200241e80c6a41186a22362006290000370300200241e80c6a41106a22062004290000370300200241e80c6a41086a22382003290000370300200220052900003703e80c4120102a2204450d02200420022903900e370000200441186a200b290300370000200441106a200c290300370000200441086a200d290300370000200241a80d6a41086a20382903002209370300200241a80d6a41106a20062903002207370300200241a80d6a41186a20362903002213370300200220022903e80c22193703a80d20022802b00b2106200241880d6a41186a22362013370300200241880d6a41106a22382007370300200241880d6a41086a22392009370300200220193703880d024020062802082203200641046a223a280200470d00200341016a223b2003490d052003410174223d203b203d203b4b1b223bad422c7e2209422088a70d052009a7223d4100480d050240024020030d00203d102a21030c010b20062802002003412c6c203d102e21030b2003450d0320062003360200203a203b360200200628020821030b20392903002109203829030021072036290300211320022903880d211920062802002003412c6c6a22034281808080103702242003200436022020032019370200200341186a2013370200200341106a2007370200200341086a20093702002006200628020841016a360208200241c80d6a41086a2206200d290300370300200241c80d6a41106a2204200c290300370300200241c80d6a41186a2203200b290300370300200220022903900e3703c80d200e20032903003703002001200429030037030020372006290300370300200220022903c80d3703b00e0240201b201f470d00201b41016a2206201b490d05200a2006200a20064b1b221f41ffffff3f71201f470d05201f41057422064100480d0502400240201b0d002006102a21180c010b201820082006102e21180b2018450d030b201820086a220620022903b00e370000200641186a200e290300370000200641106a2001290300370000200641086a2037290300370000200241e80b6a203c109404200a41026a210a200841206a2108201b41016a211b20022802e80b4101460d000b0b200241b00b6a108404200241e80b6a20022802b00b220620022802b80b10d301024020022802b40b450d002006102c0b200241e80d6a41086a200241e80b6a41086a22362903002209370300200241e80d6a41106a200241e80b6a41106a22382903002207370300200241e80d6a41186a200241e80b6a41186a22392903002213370300200241e80d6a41206a200241e80b6a41206a220d2d000022063a0000200220022903e80b22193703e80d200241880b6a41206a20063a0000200241880b6a41186a2013370300200241880b6a41106a2007370300200241880b6a41086a2009370300200220193703880b200241e80b6a200241880b6a109504024020022d00980c4102460d000340200241b00b6a41286a200241e80b6a41286a280200360200200241b00b6a41206a200d290300370300200241b00b6a41186a220e2039290300370300200241b00b6a41106a22012038290300370300200241b00b6a41086a22372036290300370300200220022903e80b3703b00b200d28020021084100210a0240200229028c0c2209422088a72203450d0020022802940c210c4100210a41002106024003402006210502400240200a0d000340024020062003490d00200621050c0a0b2002200820064105746a3602c80d200241900e6a200241c80d6a1090040240024020022802980e2205450d0020022802940e21040240200228029c0e450d002005102c0b200641016a21062004200c4d0d010c040b200641016a21060b20062003490d000b4100210a0c040b0340200520034f0d082002200820054105746a22043602c80d200241900e6a200241c80d6a1090040240024020022802980e22060d00200541016a21060c010b20022802940e210b0240200228029c0e450d002006102c0b200541016a2106200b200c4b0d020b02402005200a6b220520034f0d00200820054105746a22052004290000370000200541186a200441186a290000370000200541106a200441106a290000370000200541086a200441086a29000037000020062105200620034f0d040c010b0b41fcb4c000200520031038000b200a41016a210a20062003490d000b0b200a450d00200620034f0d00200820064105746a2205200a4105746b2005200320066b41057410dc051a0b200241b00e6a41186a2206200e290300370300200241b00e6a41106a22052001290300370300200241b00e6a41086a22042037290300370300200220022903b00b3703b00e2008450d01200241880d6a41186a220b2006290300370300200241880d6a41106a220c2005290300370300200241880d6a41086a220e2004290300370300200220022903b00e3703880d0240024020022802d80a220520022802d40a460d0020022802d00a21060c010b200541016a22062005490d05200541017422042006200420064b1b2204ad422c7e2207422088a70d052007a722064100480d050240024020050d002006102a21060c010b20022802d00a2005412c6c2006102e21060b2006450d03200220043602d40a200220063602d00a0b200e2903002107200c2903002113200b290300211920022903880d211a20062005412c6c6a2206200942ffffffff0f832003200a6bad42208684370224200620083602202006201a370200200641186a2019370200200641106a2013370200200641086a20073702002002200541016a3602d80a200241e80b6a200241880b6a10950420022d00980c4102470d000b0b200241880b6a41186a22044200370300200241880b6a41106a22034200370300200241880b6a41086a22054200370300200242003703880b200241c80d6a41086a22064196e0c500ad4280808080f0008422091002220841086a290000370300200220082900003703c80d2008102c20052006290300370300200220022903c80d22073703e80c200220073703880b200641f3dfc500ad4280808080e001841002220841086a290000370300200220082900003703c80d2008102c200241a80d6a41086a220a20062903002207370300200220022903c80d22133703a80d20142013370000201441086a220b2007370000200241e80b6a41086a220c2005290300370300200241e80b6a41106a220d2003290300370300200241e80b6a41186a220e2004290300370300200220022903880b3703e80b200241d0036a200241e80b6a412010940120022802d403213e20022802d003213f200442003703002003420037030020054200370300200242003703880b200620091002220841086a290000370300200220082900003703c80d2008102c20052006290300370300200220022903c80d22093703e80c200220093703880b20064181e0c500ad4280808080d002841002220841086a290000370300200220082900003703c80d2008102c200a20062903002209370300200220022903c80d22073703a80d20142007370000200b2009370000200c2005290300370300200d2003290300370300200e2004290300370300200220022903880b3703e80b200241c8036a200241e80b6a412010940120022802cc03210620022802c803210520022802d00a214020022802d40a214120022802d80a2136200242003702d40e200241d0e1c1003602d00e02400240024002402036201b6a2239ad42e0007e2209422088a70d002009a72238417f4c0d004108210e0240024020380d0041082142410821430c010b2038102a2242450d05204221430b4100210d410021440240201b4105742203450d0020034105752244ad42d8007e2209422088a70d072009a722044100480d072004102a220e450d050b2006410420051b223a41014b213b0240201b450d00200341606a213c200241980c6a2105200241900c6a2137200e210841002104201821060340200241b00e6a41186a220a200641186a220b290000370300200241b00e6a41106a220c200641106a220d290000370300200241b00e6a41086a221b200641086a2201290000370300200220062900003703b00e200241b00b6a41186a200b290000370300200241b00b6a41106a200d290000370300200241b00b6a41086a2001290000370300200220062900003703b00b200241d00e6a200241b00b6a200410d501200241e80b6a41086a4200370300200241e80b6a41106a4200370300200241e80b6a41186a4200370300200241e80b6a41206a420037030020374200370300200541186a200a290300370000200541106a200c290300370000200541086a201b290300370000200520022903b00e370000200242003703e80b2008200241e80b6a41d00010db05220841d0006a41003a0000200841d8006a2108200641206a2106200441016a2104200341606a22030d000b203c41057641016a210d0b203a4101203b1b21060240201f450d002018102c0b02400240024002400240200d2006490d000240024020392036412c6c2206412c6d2205490d00203921450c010b203941017422042005200420054b1b2245ad42e0007e2209422088a70d0c2009a722054100480d0c0240024020390d002005102a21420c010b204220382005102e21420b2042450d0a204221430b204020066a2146024020360d004100213d2040213b0c040b200241880d6a41106a2101204021062042213a4100213d0340200241b00e6a41186a2205200641186a290200370300200241b00e6a41106a2204200641106a290200370300200241b00e6a41086a2203200641086a290200370300200220062902003703b00e2006412c6a213b2006280220223c450d04200641286a280200211b200641246a2802002147200241b00b6a41186a22482005290300370300200241b00b6a41106a22492004290300370300200241b00b6a41086a224a2003290300370300200220022903b00e3703b00b200241b8036a200241b00b6a109604201bad42c8007e2209422088a70d062009a72206417f4c0d06200241b8036a41086a290300211a20022903b80321200240024020060d004108211f0c010b2006102a221f450d0b0b02400240201b0d004100211b410021180c010b203c201b4105746a213941002118203c210a0340200a41086a2900002109200a41106a2900002107200a2900002113200241e80b6a41186a2237200a41186a290000370300200241e80b6a41106a22362007370300200241e80b6a41086a22382009370300200220133703e80b200a41206a210a200241d00e6a210620022802d40e210b024003402006280200220841086a210520082f0106220c4105742106410021040240024003402006450d01200241e80b6a2005412010dd052203450d02200641606a2106200441016a2104200541206a21052003417f4a0d000b2004417f6a210c0b200b450d02200b417f6a210b2008200c4102746a4194036a21060c010b0b200d200820044102746a41e8026a220528020022064d0d05200e200641d8006c6a22062903202109200641286a2903002107200241880d6a41186a2208420037030020014200370300200241880d6a41086a22044200370300200242003703880d200241c80d6a41086a2206418be9c500ad42808080808001841002220341086a290000370300200220032900003703c80d2003102c20042006290300370300200220022903c80d3703880d200641c9b5c000ad4280808080d001841002220341086a290000370300200220032900003703c80d2003102c200241880b6a41086a20062903002213370300200220022903c80d22193703880b20012019370000200141086a2013370000200241e80c6a41086a2004290300370300200241e80c6a41106a2001290300370300200241e80c6a41186a2008290300370300200220022903880d3703e80c200241a0036a200241e80c6a4120109e0120024190036a20022903a803200241a0036a41106a290300427f420010e105200d200528020022064d0d0620024180036a2020201a200229039003420020022802a00322041b22134201201342015620024190036a41086a290300420020041b22134200522013501b22041b2013420020041b10e105200e200641d8006c6a220641286a427f200720092002290380037c22132009542204ad7c221920042019200754201320095a1b22041b3703002006427f201320041b370320200241a80d6a41186a22042037290300370300200241a80d6a41106a22032036290300370300200241a80d6a41086a22082038290300370300200220022903e80b3703a80d20052802002105024002402018201b460d00201821060c010b201b41016a2206201b490d10201b410174220b2006200b20064b1b220bad42c8007e2209422088a70d102009a722064100480d1002400240201b0d002006102a211f0c010b201f201b41c8006c2006102e211f0b201f450d0e201b2106200b211b0b201f200641c8006c6a2206420037030020062005360220200641186a4200370300200641106a4200370300200641086a4200370300200620022903a80d3702242006412c6a2008290300370200200641346a20032903003702002006413c6a2004290300370200201841016a21180b200a2039470d000b0b02402047450d00203c102c0b200241900e6a41186a22032048290300370300200241900e6a41106a22082049290300370300200241900e6a41086a220a204a290300370300200220022903b00b3703900e200241880d6a41186a220b420037030020014200370300200241880d6a41086a22054200370300200242003703880d200241c80d6a41086a2206418be9c500ad42808080808001841002220441086a290000370300200220042900003703c80d2004102c20052006290300370300200220022903c80d3703880d200641c9b5c000ad4280808080d001841002220441086a290000370300200220042900003703c80d2004102c200241880b6a41086a20062903002209370300200220022903c80d22073703880b20012007370000200141086a2009370000200241e80c6a41086a2005290300370300200241e80c6a41106a2001290300370300200241e80c6a41186a200b290300370300200220022903880d3703e80c200241e8026a200241e80c6a4120109e01200241d8026a20022903f002200241e8026a41106a290300427f420010e105200241c8026a2020201a20022903d802420020022802e80222061b220942012009420156200241d8026a41086a290300420020061b22094200522009501b22061b2009420020061b10e105203a4200370308203a20022903c802370300203a4200370310203a41186a4200370300203a41286a4200370300203a4201370320203a2018360238203a201b360234203a201f360230203a20022903900e37023c203a41c4006a200a290300370200203a41cc006a2008290300370200203a41d4006a2003290300370200203d41016a213d203a41e0006a213a203b2106203b2046470d000c050b0b02402044450d00200e102c0b02402039450d002042102c0b20022802d00e20022802d40e20022802d80e10da0102402036450d002036412c6c2105204041206a210603400240200641046a280200450d002006280200102c0b2006412c6a2106200541546a22050d000b0b2041450d062040102c0c060b41d087c6002006200d1038000b41a888c6002006200d1038000b203b2046460d000340203b41206a2802002205450d01203b412c6a21060240203b41246a280200450d002005102c0b2006213b20462006470d000b0b203e4100203f1b213a02402041450d002040102c0b203aad42307e2209422088a70d002009a72206417f4c0d000240024020060d00410821370c010b2006102a2237450d050b203a412c6c2206417f4c0d000240024020060d004104214a0c010b2006102a224a450d050b4100213b02400240200d203a200d203a491b223e0d00203a2140410021480c010b200e41a87f6a2147200d41d8006c213c2043203d41e0006c6a211f200241b00e6a41186a2149200241b00e6a41106a2146200241b00e6a41086a2141203a2138410021484100213903400240200d450d00203c2105200e210603400240200641d0006a2d00000d0002400240200641206a2903002207200641286a29030022138450450d0042002109427f2107427f21130c010b427f2109200241b8026a427f427f2007201310e105200241b8026a41086a290300211320022903b80221070b2006200737030020062013370308200641106a2009370300200641186a20093703000b200641d8006a2106200541a87f6a22050d000b0b204321030240203d450d0002400340024020032802382206450d00200641c8006c2104200328023041206a21060340200d200628020022054d0d030240200e200541d8006c6a22052d00500d0020052903202209200541286a290300220784500d00200241e80b6a2003290310200341186a2903002003290300200341086a2903002009200710d701200520052903002209427f2009427f20022903f00b20022802e80b41014622081b22137c22072007200954220a200541086a220b2903002209427f200241e80b6a41106a29030020081b22197c200aad7c220720095420072009511b22081b201320198450220a1b370300200b2009427f200720081b200a1b3703000b200641c8006a2106200441b87f6a22040d000b0b200341e0006a2203201f460d020c000b0b41a888c6002005200d1038000b203941016a2139203c210620472105200e21040340024020060d00203821400c030b200641a87f6a2106200541d8006a2105200441d0006a2103200441d8006a2208210420032d00000d000b02402006450d00200541086a2903002109200541186a2903002107200541106a2903002113200529030021194100210403400240200820046a220341d0006a2d00000d00200341086a290300221a2009201920092013200720032903002220201a200341106a2903002223200341186a290300222210d80141ff0171410146220a1b210920202019200a1b211920222007200a1b210720232013200a1b211320032005200a1b21050b2006200441d8006a2204470d000b20050d00203821400c020b200541013a00500240203d450d002005410c6a2101200541306a2118204321040340200441e0006a2136024020042802382203450d0020042802302106200341c8006c210303400240024020012006460d00200641246a2018412010dd050d010b200441186a22082903002119200541086a220a290300210920042903102113200529030021072005290310211a200641186a200541186a220b290300370300200641106a201a370300200620094200200920197d2007201354ad7d221a200720137d2220200756201a200956201a2009511b220c1b201320198450221b1b3703082006200742002020200c1b201b1b370300200a2903002109200b29030021072005290300211320042005290310370320200441286a200737030020042013370310200820093703000b200641c8006a2106200341b87f6a22030d000b0b203621042036201f470d000b0b2049200541c8006a2900003703002046200541c0006a2900003703002041200541386a290000370300200220052900303703b00e200541286a2903002109200529032021070240024020482038460d00203821400c010b203841016a22062038490d09203841017422052006200520064b1b2240ad42307e2213422088a70d092013a722064100480d090240024020380d002006102a21370c010b2037203841306c2006102e21370b2037450d0720382148204021380b20412903002113204629030021192049290300211a20022903b00e21202037204841306c6a2206200737032020062020370300200641286a2009370300200641186a201a370300200641106a2019370300200641086a2013370300204841016a21482039203e490d000b0b0240203d450d002043203d41e0006c6a2147204841306c2136200241b00b6a41186a2138200241b00b6a41106a2139200241b00b6a41086a213c4100213b2043210103402038200141d4006a2900003703002039200141cc006a290000370300203c200141c4006a2900003703002002200129003c3703b00b024020012802382206450d002001280230220c200641c8006c6a2118200141106a211f4100210d4104211b4100210b0340200c220a41246a2104200a41c8006a210c410021032036210520372106024003402005450d01024020042006460d0020062004412010dd052108200341016a2103200541506a2105200641306a210620080d010b0b418094ebdc0321060240201f200a10d9010d00410021050240200a290310200129032085200a41186a290300200141286a29030085844200520d00200241e80b6a428094ebdc034200200a290300200a41086a290300201f290300201f41086a29030010d70120022802e80b4101460d0120022903f00b220742ff93ebdc0356200241e80b6a41106a29030022094200522009501b0d012007a721050b200521060b200220063602e80b2002418094ebdc033602ec0b200241e80b6a2006418094ebdc034b4102746a2802002105200241c80d6a41186a2204200a413c6a290000370300200241c80d6a41106a2203200a41346a290000370300200241c80d6a41086a2208200a412c6a2900003703002002200a2900243703c80d02400240200b200d460d00200b21060c010b200d41016a2206200d490d0c200d410174220a2006200a20064b1b220aad42247e2209422088a70d0c2009a722064100480d0c02400240200d0d002006102a211b0c010b201b200d41246c2006102e211b0b201b450d0a200d2106200a210d0b201b200641246c6a220620022903c80d37020020082903002109200329030021072004290300211320062005360220200641186a2013370200200641106a2007370200200641086a2009370200200b41016a210b0b200c2018470d000b024002400240200b450d0002400240200b41246c22040d00410021050c010b201b41206a2106410021050340200628020020056a2105200641246a21062004415c6a22040d000b0b02404100418094ebdc0320056b22062006418094ebdc034b1b220a200b6e2206418094ebdc032006418094ebdc03491b2208450d00201b41206a2106410021050340200b2005460d032002417f2006280200220420086a220320032004491b22043602e80b2002418094ebdc033602ec0b2006200241e80b6a2004418094ebdc034b4102746a280200360200200641246a2106200b200541016a2205470d000b0b0240200a2008200b6c6b2208450d00410021060340200b2006200b7022054d0d042002417f201b200541246c6a2205280220220441016a220320032004491b22043602e80b2002418094ebdc033602ec0b2005200241e80b6a2004418094ebdc034b4102746a280200360220200641016a22062008490d000b0b200241e80b6a41186a22052038290300370300200241e80b6a41106a22042039290300370300200241e80b6a41086a2203203c290300370300200220022903b00b3703e80b0240203b203a470d00203a41016a2206203a490d0d203a41017422082006200820064b1b2206ad422c7e2209422088a70d0d2009a722084100480d0d02400240203a0d002008102a214a0c010b204a203a412c6c2008102e214a0b204a450d0b203a213b2006213a0b204a203b412c6c6a220620022903e80b3702002003290300210920042903002107200529030021132006200b3602282006200d3602242006201b360220200641186a2013370200200641106a2007370200200641086a2009370200203b41016a213b0c030b200d450d02201b102c0c020b41d087c6002005200b1038000b41d087c6002005200b1038000b200141e0006a22012047470d000b0b02402044450d00200e102c0b0240203d450d00203d41e0006c2105204341306a210603400240200641046a280200450d002006280200102c0b200641e0006a2106200541a07f6a22050d000b0b02402045450d002042102c0b20022802d00e20022802d40e20022802d80e10da012037450d02204841306c220641306e21050240024020060d0042002126410121430c010b200541057422044100480d072004102a2243450d052005ad21260b024002402037203720066a470d00410021480c010b204841306c2104410021482043210620372105034020062005290000370000200641186a200541186a290000370000200641106a200541106a290000370000200641086a200541086a290000370000204841016a2148200641206a2106200541306a2105200441506a22040d000b0b200242003702b40e200241d0e1c1003602b00e02402048450d0020484105742105204321060340200241880b6a41186a200641186a290000370300200241880b6a41106a200641106a290000370300200241880b6a41086a200641086a290000370300200220062900003703880b200241e80b6a41186a4200370300200241e80b6a41106a4200370300200241e80b6a41086a4200370300200242003703e80b200241003602900c200242083703880c200241b00b6a200241b00e6a200241880b6a200241e80b6a10db01024020022802d00b2204450d0020022802d40b450d002004102c0b200641206a2106200541606a22050d000b0b0240203b412c6c2206450d00204a20066a2118200241880d6a41106a210e418be9c500ad4280808080800184211a204a210d03400240200d28022841246c2206450d00200d280220221b20066a21010340200241a8026a200d109604200241a8026a41086a290300210720022903a8022113200241880d6a41186a22034200370300200e4200370300200241880d6a41086a22054200370300200242003703880d200241c80d6a41086a2206201a1002220441086a290000370300200220042900003703c80d2004102c20052006290300370300200220022903c80d3703880d200641c9b5c000ad4280808080d001841002220441086a290000370300200220042900003703c80d2004102c200241880b6a41086a20062903002209370300200220022903c80d22193703880b200e2019370000200e41086a2009370000200241e80c6a41086a2005290300370300200241e80c6a41106a200e290300370300200241e80c6a41186a2003290300370300200220022903880d3703e80c20024190026a200241e80c6a4120109e0120024180026a20022903980220024190026a41106a290300427f420010e105200241f0016a20132007200229038002420020022802900222061b22094201200942015620024180026a41086a290300420020061b22094200522009501b22061b2009420020061b10e105200241e0016a20022903f0012209428094ebdc038022074200201b22083502202213420010e005200241e0016a41086a29030020022903e00122192013200920074280ec94a37c7e7c7e22092009428094ebdc038022094280ec94a37c7e7c4280cab5ee01562009a76aad7c2209201954ad7c2107200841246a211b200241b00e6a210620022802b40e210b024003402006280200220a41086a2105200a2f0106220c4105742106410021040240024003402006450d0120082005412010dd052203450d02200641606a2106200441016a2104200541206a21052003417f4a0d000b2004417f6a210c0b200b450d02200b417f6a210b200a200c4102746a41f8066a21060c010b0b200a41e8026a200441306c6a210602402008200d460d002008200d412010dd05450d002006427f2006290310221320097c221920192013542205200641186a2204290300221320077c2005ad7c221920135420192013511b22051b3703102004427f201920051b370300200241a80d6a41186a2208200d41186a290000370300200241a80d6a41106a220a200d41106a290000370300200241a80d6a41086a220b200d41086a2900003703002002200d2900003703a80d200641286a2104200641206a2103024020062802282205200641246a280200470d00200541016a22062005490d0d2005410174220c2006200c20064b1b220cad42307e2213422088a70d0d2013a722064100480d0d0240024020050d002006102a21060c010b2003280200200541306c2006102e21060b2006450d0b20032006360200200341046a200c360200200428020021050b200b2903002113200a29030021192008290300212020022903a80d21232003280200200541306c6a2206200937032020062023370300200641286a2007370300200641186a2020370300200641106a2019370300200641086a20133703002004200428020041016a3602000c010b2006427f2006290300221320097c221920192013542205200641086a2204290300221320077c2005ad7c221920135420192013511b22051b3703002004427f201920051b3703002006427f2006290310221320097c220920092013542205200641186a2204290300220920077c2005ad7c220720095420072009511b22051b3703102004427f200720051b3703000b201b2001470d000b0b200d412c6a220d2018470d000b0b20022802b80e210e20022802b40e210820022802b00e2105200241e80b6a41186a220a4200370300200241e80b6a41106a220b4200370300200241e80b6a41086a22044200370300200242003703e80b200241c80d6a41086a22064196e0c500ad4280808080f000841002220341086a290000370300200220032900003703c80d2003102c20042006290300370300200220022903c80d3703e80b200641bafdc200ad4280808080e001841002220341086a290000370300200220032900003703c80d2003102c200241a80d6a41086a20062903002209370300200220022903c80d22073703a80d200f2007370000200f41086a2009370000200241880b6a41086a2004290300370300200241880b6a41106a200b290300370300200241880b6a41186a200a290300370300200220022903e80b3703880b200241e80b6a200241880b6a412010d00120022902ec0b420020022802e80b22061b210702402006410120061b220d450d002007422088a72206450d002006410574210a4196e0c500ad4280808080f000842109200241980b6a210c200d21040340200241c80d6a41086a220620091002220341086a290000370300200220032900003703c80d2003102c200241e80c6a41086a220b2006290300370300200220022903c80d3703e80c200641dff8c200ad4280808080f000841002220341086a290000370300200220032900003703c80d2003102c200241a80d6a41086a22032006290300370300200220022903c80d3703a80d200241880b6a2004109f0141c000102a2206450d06200441206a2104200620022903e80c370000200641086a200b290300370000200620022903a80d370010200641186a2003290300370000200620022903880b370020200641286a200241880b6a41086a290300370000200641306a200c290300370000200641386a200241880b6a41186a2903003700002006ad428080808080088410052006102c200a41606a220a0d000b0b02402007a7450d00200d102c0b0240024020080d00200521060c010b2008210420052106034020062802f80621062004417f6a22040d000b0340200520052f01064102746a41f8066a28020021052008417f6a22080d000b0b200241cc0b6a20052f0106360200200241b00b6a41186a4100360200200241c40b6a20053602002002200e3602d00b200241003602c00b200242003703b80b200220063602b40b200241003602b00b200241e80b6a200241b00b6a10fb030240200241e80b6a41c0006a28020022380d00427f2125427f21220c020b200241880d6a41106a2103200241e80b6a41106a211f200241e80b6a41386a2146200241e80b6a41286a2142427f2125427f21220340200241900e6a41086a200241e80b6a41086a22062903002209370300200241900e6a41106a201f2903002207370300200241900e6a41186a200241e80b6a41186a22362903002213370300200220022903e80b22193703900e204629030021232042290300212420022802ac0c214920022802b00c210a20022903980c212b20022903880c212f200241b00e6a41186a2013370300200241b00e6a41106a2007370300200241b00e6a41086a2009370300200220193703b00e20364200370300201f420037030020064200370300200242003703e80b200241c80d6a41086a2204418be9c500ad4280808080800184221a1002220541086a290000370300200220052900003703c80d2005102c20062004290300370300200220022903c80d3703e80b200441c9b5c000ad4280808080d0018422201002220541086a290000370300200220052900003703c80d2005102c200241a80d6a41086a220c20042903002209370300200220022903c80d22073703a80d200f2007370000200f41086a220b2009370000200241880b6a41086a22182006290300370300200241880b6a41106a223c201f290300370300200241880b6a41186a223d2036290300370300200220022903e80b3703880b200241c8016a200241880b6a4120109e01200241a0016a20022903d001200241c8016a41106a290300427f420010e10520022802c801210520364200370300201f420037030020064200370300200242003703e80b2004201a1002220841086a290000370300200220082900003703c80d2008102c20062004290300370300200220022903c80d3703e80b200420201002220841086a290000370300200220082900003703c80d2008102c200c20042903002209370300200220022903c80d22073703a80d200f2007370000200b200937000020182006290300370300203c201f290300370300203d2036290300370300200220022903e80b3703880b200241b0016a200241880b6a4120109e0120024190016a20022903b801200241b0016a41106a290300427f420010e105200241f0006a20022903a001420020051b220942012009420156200241a0016a41086a290300420020051b22094200522009501b22061b2009420020061b202f202410e00520024180016a200229039001420020022802b00122061b22094201200942015620024190016a41086a290300420020061b22094200522009501b22061b2009420020061b202b202310e005200a41306c220d41306d2106200241f0006a41086a290300212b20024180016a41086a29030021234100210b2002290370212f200229038001212441082139410021470240200d450d002006ad42307e2209422088a70d082009a722054100480d082005102a2239450d06200621470b02402038200d6a2038460d004100210b20392106203821050340200541286a2903002107200541206a2903002113200241a80d6a41186a220e200541186a290300370300200241a80d6a41106a221b200541106a290300370300200c200541086a290300370300200220052903003703a80d200241880d6a41186a2201420037030020034200370300200241880d6a41086a22084200370300200242003703880d2004201a1002220a41086a2900003703002002200a2900003703c80d200a102c20082004290300370300200220022903c80d3703880d200420201002220a41086a2900003703002002200a2900003703c80d200a102c201820042903002209370300200220022903c80d22193703880b20032019370000200341086a2009370000200241e80c6a41086a2008290300370300200241e80c6a41106a2003290300370300200241e80c6a41186a2001290300370300200220022903880d3703e80c200241d8006a200241e80c6a4120109e01200241c8006a2002290360200241d8006a41106a290300427f420010e105200241386a20022903484200200228025822081b220942012009420156200241c8006a41086a290300420020081b22094200522009501b22081b2009420020081b2013200710e0052006200241386a41086a29030037030820062002290338370300200641106a20022903a80d370300200641186a200c290300370300200641206a201b290300370300200641286a200e290300370300200641306a2106200b41016a210b200541306a2105200d41506a220d0d000b0b02402049450d002038102c0b200bad42307e2209422088a70d012009a72206417f4c0d010240024020060d004108210d0c010b2006102a220d450d060b02400240200b0d00410021080c010b2039200b41306c6a210a41002108200d2106203921050340200620052903003703002006200541086a290300370308200641106a200541106a290300370300200641186a200541186a290300370300200641206a200541206a290300370300200641286a200541286a290300370300200641306a2106200841016a2108200541306a2205200a470d000b0b2036202b3703002002202f3703f80b200220243703e80b200220083602900c2002200b36028c0c2002200d3602880c200220233703f00b20044196e0c500ad4280808080f000841002220641086a290000370300200220062900003703c80d2006102c200241e80c6a41086a22052004290300370300200220022903c80d3703e80c200441dff8c200ad4280808080f000841002220641086a290000370300200220062900003703c80d2006102c200c2004290300370300200220022903c80d3703a80d200241880b6a200241b00e6a109f0141c000102a2204450d05200420022903e80c370000200441086a2005290300370000200420022903a80d370010200441186a200c290300370000200420022903880b370020200441286a2018290300370000200441306a203c290300370000200441386a203d290300370000200241003602900b200242013703880b2002200241e80b6a3602c80d200241c80d6a200241880b6a108a012002201f3602c80d200241c80d6a200241880b6a108a0120022802880c210620022802900c2205200241880b6a106702402005450d00200541306c21050340200641106a200241880b6a109101200220063602c80d200641306a2106200241c80d6a200241880b6a108a01200541506a22050d000b0b200228028c0b21062004ad428080808080088420023502900b42208620022802880b2205ad84100102402006450d002005102c0b2024202554210620232022512105202320225421082004102c0240200228028c0c450d0020022802880c102c0b2006200820051b210602402047450d002039102c0b2023202220061b21222024202520061b2125200241e80b6a200241b00b6a10fb0320022802a80c2238450d020c000b0b103a000b200241b00b6a10de01200241880b6a41186a22044200370300200241880b6a41106a22034200370300200241880b6a41086a22054200370300200242003703880b200241c80d6a41086a22064196e0c500ad4280808080f0008422091002220841086a290000370300200220082900003703c80d2008102c20052006290300370300200220022903c80d22073703e80c200220073703880b200641c8fdc200ad42808080809001841002220841086a290000370300200220082900003703c80d2008102c200241a80d6a41086a220a20062903002207370300200220022903c80d22133703a80d20142013370000201441086a220b2007370000200241e80b6a41086a220c2005290300370300200241e80b6a41106a220d2003290300370300200241e80b6a41186a220e2004290300370300200220022903880b3703e80b200220223703b80b200220253703b00b201d201e42808080808002841001200442003703002003420037030020054200370300200242003703880b200620091002220841086a290000370300200220082900003703c80d2008102c20052006290300370300200220022903c80d22093703e80c200220093703880b200641bafdc200ad4280808080e001841002220841086a290000370300200220082900003703c80d2008102c200a20062903002209370300200220022903c80d22073703a80d20142007370000200b2009370000200c2005290300370300200d2003290300370300200e2004290300370300200220022903880b3703e80b200241003602b80b200242013703b00b2048200241b00b6a106702402048450d00204841057421052043210603402006200241b00b6a109101200641206a2106200541606a22050d000b0b20022802b40b2106201d20023502b80b42208620022802b00b2205ad84100102402006450d002005102c0b2048ad21090240203b450d00203b412c6c2105204a41206a210603400240200641046a280200450d002006280200102c0b2006412c6a2106200541546a22050d000b0b200942208621090240203a450d00204a102c0b202620098421342040450d012037102c0c010b200241880b6a41186a22034200370300200241880b6a41106a22084200370300200241880b6a41086a22054200370300200242003703880b200241c80d6a41086a22064196e0c500ad4280808080f000841002220441086a290000370300200220042900003703c80d2004102c20052006290300370300200220022903c80d22093703e80c200220093703880b200641c8fdc200ad42808080809001841002220441086a290000370300200220042900003703c80d2004102c200241a80d6a41086a20062903002209370300200220022903c80d22073703a80d20142007370000201441086a2009370000200241e80b6a41086a2005290300370300200241e80b6a41106a2008290300370300200241e80b6a41186a2003290300370300200220022903880b3703e80b200241206a200241e80b6a4120109e01410021430b200241880b6a41186a224a4200370300200241880b6a41106a22464200370300200241880b6a41086a22494200370300200242003703880b200241c80d6a41086a22484196e0c500ad4280808080f0008422331002220641086a290000370300200220062900003703c80d2006102c20492048290300370300200220022903c80d22093703e80c200220093703880b204841fde0c500ad4280808080e0028422311002220641086a290000370300200220062900003703c80d2006102c200241a80d6a41086a224020482903002209370300200220022903c80d22073703a80d20142007370000201441086a22442009370000200241e80b6a41086a22412049290300370300200241e80b6a41106a223e2046290300370300200241e80b6a41186a223f204a290300370300200220022903880b3703e80b200241186a200241e80b6a4120109401200228021c21420240200228021822454101470d00024020424100203541d87e6a2206200620354b1b22474f0d00201c4280808080c00084212f200241e80b6a41386a210f200241e80b6a41246a21084196e0c500ad4280808080f0008421262042213c0340200241c80d6a41086a220620261002220541086a290000370300200220052900003703c80d2005102c200241e80c6a41086a22042006290300370300200220022903c80d3703e80c200641d1fdc200ad42808080808002841002220541086a290000370300200220052900003703c80d2005102c200241a80d6a41086a22052006290300370300200220022903c80d3703a80d2002203c3602e80b200241880d6a41186a2203202f1006220641186a290000370300200241880d6a41106a220a200641106a290000370300200241880d6a41086a220b200641086a290000370300200220062900003703880d2006102c200241880b6a41186a220c2003290300370300200241880b6a41106a220d200a290300370300200241880b6a41086a220a200b290300370300200220022903880d3703880b41c000102a2206450d03200620022903e80c370000200641086a2004290300370000200620022903a80d370010200641186a2005290300370000200620022903880b370020200641286a200a290300370000200641306a200d290300370000200641386a200c290300370000200241e80b6a200641c00010e9030240024020022802e80b223d450d002006ad4280808080800884100520022902ec0b212b0c010b4200212b4108213d0b2006102c203d202b422088a7220641d8006c6a210e203d210302402006450d000340200c200341186a290300370300200d200341106a290300370300200a200341086a2903003703002003280220210b20032903002109200241e80b6a41206a221b200341c4006a290200370300200241e80b6a41286a2201200341cc006a290200370300200241e80b6a41306a2218200341d4006a280200360200200241e80b6a41086a22062003412c6a290200370300200241e80b6a41106a2205200341346a290200370300200241e80b6a41186a22042003413c6a290200370300200220093703880b2002200341246a2902003703e80b200341d8006a2103200b450d01200241e80d6a41186a221f200c290300370300200241e80d6a41106a2237200d290300370300200241e80d6a41086a2236200a290300370300200241b00b6a41086a22382006290300370300200241b00b6a41106a22392005290300370300200241b00b6a41186a223a2004290300370300200241b00b6a41206a223b201b290300370300200241b00b6a41286a221b2001290300370300200241b00b6a41306a22012018280200360200200220022903880b3703e80d200220022903e80b3703b00b2004201f2903003703002005203729030037030020062036290300370300200820022903b00b370200200841086a2038290300370200200841106a2039290300370200200841186a203a290300370200200841206a203b290300370200200841286a201b290300370200200841306a2001280200360200200220022903e80d3703e80b2002200b3602880c200242003703e80a200242003703e00a200220042903003703900b200220052903003703880b200f20022903e80b2006290300200241880b6a200241e00a6a109704024020022802900c2205450d0020022802880c2106200541306c210503402006200641206a290300200641286a290300200241880b6a200241e00a6a109704200641306a2106200541506a22050d000b0b200241e00a6a41086a290300212320022903e00a2122024020022903880b2207200a290300220984500d00200228029c0c2205450d0020022802940c2106200241086a202220072022200754202320095420232009511b22041b22242023200920041b22252005ad420010e10520054105742105200241086a41086a29030021132002290308211a202421092025210703402006201a20092009201a56200720135620072013511b22041b22192013200720041b2220109c01200720207d2009201954ad7d2107200920197d2109200641206a2106200541606a22050d000b427f202320257d2022202454ad7d221320077c202220247d220720097c22192007542206ad7c22092006200920135420092013511b22061b2123427f201920061b21220b2022202310b1020240200228028c0c450d0020022802880c102c0b024020022802980c450d0020022802940c102c0b2003200e470d000b200e21030b202ba7210a02402003200e460d000340200341206a2802002205450d01200341306a28020021062003412c6a28020021040240200341246a280200450d002005102c0b200341d8006a210302402006450d002004102c0b200e2003470d000b0b203c41016a213c0240200a450d00203d102c0b203c2047470d000b0b20422047204220474b1b21420b204a42003703002046420037030020494200370300200242003703880b204820331002220641086a290000370300200220062900003703c80d2006102c20492048290300370300200220022903c80d22093703e80c200220093703880b204820311002220641086a290000370300200220062900003703c80d2006102c204020482903002209370300200220022903c80d22073703a80d201420073700002044200937000020412049290300370300203e2046290300370300203f204a290300370300200220022903880b3703e80b0240024020450d00201d10050c010b200220423602b00b201d201e4280808080c0008410010b024020152017a745720d002016102c0b024020430d002000410036020002402011450d00201141d0006c2105201041c0006a210603400240200641046a280200450d002006280200102c0b200641d0006a2106200541b07f6a22050d000b0b2012450d042010102c0c040b2000203437020420002043360200200041146a2011360200200041106a20123602002000410c6a20103602000c030b1033000b41a8b4c000200520031038000b1035000b200241e00e6a24000bbc0201047f230041d0006b220224002002412036020420022001360200200241086a2001ad42808080808004841003108d0102400240200228020822010d00200041003602000c010b200241106a2802002103200228020c2104200241003602380240024020034104490d0020012800002105200241003602382003417c714104460d00200041086a200128000436020020002005360204410121030c010b20024100360220200242013703182002410b36022c200220023602282002200241186a360234200241cc006a41013602002002420137023c200241d0b0c2003602382002200241286a360248200241346a41c49ac500200241386a10391a200235022042208620023502188410040240200228021c450d002002280218102c0b410021030b200020033602002004450d002001102c0b200241d0006a24000bd5340b067f017e017f027e027f017e037f017e217f027e207f230041e0016b22022400200241186a200041e8bac000108401200241286a200141f4bcc00010840120022802202103200228021c210420022802182105200241386a41086a200241286a41086a28020036020020022002290328370338200241c8006a41186a22064200370300200241c8006a41106a22074200370300200241c8006a41086a2200420037030020024200370348200241d0016a41086a220141bac6c500ad4280808080c0008422081002220941086a290000370300200220092900003703d0012009102c20002001290300370300200220022903d001220a3703c0012002200a370348200141bec6c500ad4280808080a00184220b1002220941086a290000370300200220092900003703d0012009102c200720022903d001220a370300200241f8006a41086a22092000290300370300200241f8006a41106a220c200a370300200241f8006a41186a220d20012903003703002002200a3703c00120022002290348370378200241086a200241f8006a109801024002400240024002402002290310420020022802081b220e42017c220a200e540d0020064200370300200742003703002000420037030020024200370348200120081002220f41086a2900003703002002200f2900003703d001200f102c20002001290300370300200220022903d001220e3703c0012002200e3703482001200b1002220f41086a2900003703002002200f2900003703d001200f102c200241c0016a41086a22102001290300220b370300200220022903d001220e3703c0012007200e370000200741086a2211200b37000020092000290300370300200c2007290300370300200d2006290300370300200220022903483703782002200a370348200241f8006aad42808080808004842212200241c8006aad220b4280808080800184100120064200370300200742003703002000420037030020024200370348200120081002220f41086a2900003703002002200f2900003703d001200f102c20002001290300370300200220022903d00122083703c00120022008370348200141c8c6c500ad4280808080b001841002220f41086a2900003703002002200f2900003703d001200f102c201020012903002208370300200220022903d001220e3703c0012007200e3700002011200837000020092000290300370300200c2007290300370300200d20062903003703002002200229034837037820024100360250200242013703482003200241c8006a106702402003450d002005200341286c6a21092005210003402000200241c8006a109101200041206a290300210802400240200228024c2206200228025022016b4108490d00200228024821060c010b200141086a22032001490d07200641017422012003200120034b1b22014100480d070240024020060d002001102a21060c010b200228024820062001102e21060b2006450d042002200136024c20022006360248200228025021010b2002200141086a360250200620016a20083700002009200041286a2200470d000b0b200228024c21012012200235025042208620022802482200ad84100102402001450d002000102c0b02402004450d002005102c0b200a42017c220e200a540d02200241f8006a41186a22064200370300200241f8006a41106a22134200370300200241f8006a41086a2200420037030020024200370378200241d0016a41086a220141bac6c500ad4280808080c0008422081002220341086a290000370300200220032900003703d0012003102c20002001290300370300200220022903d001220a3703c0012002200a370378200141f3c6c500ad4280808080e001841002220341086a290000370300200220032900003703d0012003102c201320022903d001220a37030020024198016a41086a2203200029030037030020024198016a41106a2209200a37030020024198016a41186a220c20012903003703002002200a3703c0012002200229037837039801200241c8006a20024198016a1080034100211441002115410021164100211741002118410021194100211a4100211b4100211c4100211d4100211e4100211f410021204100212141002122410021234100212441002125410021264100212741002128410021294100212a4100212b4100212c4100212d4100212e4100212f41002130410021314100213241002133024020022d00484101470d00200241c8006a41086a2d0000211b200241d1006a2d0000211c200241d2006a2d0000211d200241d3006a2d0000211e200241d4006a2d0000211f200241d5006a2d00002120200241d6006a2d00002121200241d7006a2d00002122200241c8006a41106a2d00002123200241d9006a2d00002124200241da006a2d00002125200241db006a2d00002126200241dc006a2d00002127200241dd006a2d00002128200241de006a2d00002129200241df006a2d0000212a200241c8006a41186a2d0000212b200241e1006a2d0000212c200241e2006a2d0000212d200241e3006a2d0000212e200241e4006a2d0000212f200241e5006a2d00002130200241e6006a2d00002131200241e7006a2d00002132200241e8006a2d0000213320022d0049211420022d004a211520022d004b211620022d004c211720022d004d211820022d004e211920022d004f211a0b20064200370300201342003703002000420037030020024200370378200120081002220d41086a2900003703002002200d2900003703d001200d102c20002001290300370300200220022903d001220a3703c0012002200a37037820014181c7c500ad4280808080c00184220a1002220d41086a2900003703002002200d2900003703d001200d102c200241c0016a41086a220f20012903002234370300200220022903d00122353703c00120132035370000201341086a220520343700002003200029030037030020092013290300370300200c20062903003703002002200229037837039801200220024198016a4120109401200228020421042002280200211020064200370300201342003703002000420037030020024200370378200120081002220d41086a2900003703002002200d2900003703d001200d102c20002001290300370300200220022903d00122083703c001200220083703782001200a1002220d41086a2900003703002002200d2900003703d001200d102c200f20012903002208370300200220022903d001220a3703c0012013200a370000200520083700002003200029030037030020092013290300370300200c200629030037030020022002290378370398012002410036024820024198016aad42808080808004842234200b4280808080c000841001417f2004410020101b223641016a220120012036491b410d744128722237417f4c0d032037102a2203450d012003200e370020200320333a001f200320323a001e200320313a001d200320303a001c2003202f3a001b2003202e3a001a2003202d3a00192003202c3a00182003202b3a00172003202a3a0016200320293a0015200320283a0014200320273a0013200320263a0012200320253a0011200320243a0010200320233a000f200320223a000e200320213a000d200320203a000c2003201f3a000b2003201e3a000a2003201d3a00092003201c3a00082003201b3a00072003201a3a0006200320193a0005200320183a0004200320173a0003200320163a0002200320153a0001200320143a0000200241d0016aad4280808080c00084210a4128213841002100410021394100213a410021010340024002400240024002402001450d0020042006470d010b034020012109200020364f0d02200241d0016a41086a220141bac6c500ad4280808080c000841002220641086a290000370300200220062900003703d0012006102c200241c0016a41086a220c2001290300370300200220022903d0013703c0012001418dc7c500ad42808080809002841002220641086a290000370300200220062900003703d0012006102c200241f8006a41086a22062001290300370300200220022903d001370378200220003602d001200a100622012d001f210d20012d001e210f20012d001d210520012d001c210420012d001b211020012d001a211120012d0019213b20012d0018213c20012d0017213d20012d0016213e20012d0015213f20012d0014214020012d0013214120012d0012214220012d0011214320012d0010214420012d000f214520012d000e214620012d000d214720012d000c214820012d000b214920012d000a214a20012d0009214b20012d0008214c20012d0007214d20012d0006214e20012d0005214f20012d0004215020012d0003215120012d0002215220012d0001215320012d000021542001102c41c000102a2201450d07200120022903c001370000200120022903783700102001200d3a003f2001200f3a003e200120053a003d200120043a003c200120103a003b200120113a003a2001203b3a00392001203c3a00382001203d3a00372001203e3a00362001203f3a0035200120403a0034200120413a0033200120423a0032200120433a0031200120443a0030200120453a002f200120463a002e200120473a002d200120483a002c200120493a002b2001204a3a002a2001204b3a00292001204c3a00282001204d3a00272001204e3a00262001204f3a0025200120503a0024200120513a0023200120523a0022200120533a0021200120543a0020200141086a200c290300370000200141186a2006290300370000200241f8006a200141c000109a01024020022802782206450d002001ad428080808080088410050b200229027c21082001102c2006410120061b2201450d022008420020061b2208422088a7210602402009450d002055450d00203a102c0b200041016a21002008a721552001213a200121392006450d000b200120064105746a2104200121392001213a200121060b20024198016a41186a200641186a220929000037030020024198016a41106a200641106a220c29000037030020024198016a41086a200641086a220d2900003703002002200629000037039801200d2900002108200c290000210b2006290000210e200241c8006a41186a220c2009290000370300200241c8006a41106a2209200b370300200241c8006a41086a220d20083703002002200e370348200241f8006a41186a220f200c290300370300200241f8006a41106a220c2009290300370300200241f8006a41086a2205200d29030037030020022002290348370378203720386b411f4b0d02203841206a22092038490d082037410174220d2009200d20094b1b220941004e0d010c080b02402009450d002055450d002039102c0b2038ad4220862003ad84100622012d001f210920012d001e210c20012d001d210d20012d001c210f20012d001b210520012d001a210420012d0019211020012d0018211120012d0017213b20012d0016213c20012d0015213d20012d0014213e20012d0013213f20012d0012214020012d0011214120012d0010214220012d000f214320012d000e214420012d000d214520012d000c214620012d000b214720012d000a214820012d0009214920012d0008214a20012d0007214b20012d0006214c20012d0005214d20012d0004214e20012d0003214f20012d0002215020012d0001215120012d000021522001102c02402037450d002003102c0b200241f8006a41186a22034200370300200241f8006a41106a22534200370300200241f8006a41086a2200420037030020024200370378200241d0016a41086a220141bac6c500ad4280808080c000841002220641086a290000370300200220062900003703d0012006102c20002001290300370300200220022903d00122083703c00120022008370378200141f3c6c500ad4280808080e001841002220641086a290000370300200220062900003703d0012006102c200241c0016a41086a20012903002208370300200220022903d001220a3703c0012013200a370000201341086a200837000020024198016a41086a200029030037030020024198016a41106a205329030037030020024198016a41186a200329030037030020022002290378370398014101102a2201450d04200120523a0000200141014102102e2201450d04200120513a0001200141024104102e2201450d042001204f3a0003200120503a0002200141044108102e2201450d042001204b3a00072001204c3a00062001204d3a00052001204e3a0004200141084110102e2201450d04200120433a000f200120443a000e200120453a000d200120463a000c200120473a000b200120483a000a200120493a00092001204a3a0008200141104120102e2201450d04200120093a001f2001200c3a001e2001200d3a001d2001200f3a001c200120053a001b200120043a001a200120103a0019200120113a00182001203b3a00172001203c3a00162001203d3a00152001203e3a00142001203f3a0013200120403a0012200120413a0011200120423a001020342001ad428080808080048410012001102c200241c8006a41186a22034200370300200241c8006a41106a22094200370300200241c8006a41086a2200420037030020024200370348200241d0016a41086a220141bac6c500ad4280808080c000841002220641086a290000370300200220062900003703d0012006102c20002001290300370300200220022903d00122083703c00120022008370348200141e9c6c500ad4280808080a001841002220641086a290000370300200220062900003703d0012006102c200241c0016a41086a20012903002208370300200220022903d001220a3703c0012007200a370000200741086a2008370000200241f8006a41086a2000290300370300200241f8006a41106a2009290300370300200241f8006a41186a2003290300370300200220022903483703784101102a2201450d04200120143a0000200141014102102e2201450d04200120153a0001200141024104102e2201450d04200120173a0003200120163a0002200141044108102e2201450d042001201b3a00072001201a3a0006200120193a0005200120183a0004200141084110102e2201450d04200120233a000f200120223a000e200120213a000d200120203a000c2001201f3a000b2001201e3a000a2001201d3a00092001201c3a0008200141104120102e2201450d04200120333a001f200120323a001e200120313a001d200120303a001c2001202f3a001b2001202e3a001a2001202d3a00192001202c3a00182001202b3a00172001202a3a0016200120293a0015200120283a0014200120273a0013200120263a0012200120253a0011200120243a001020122001ad428080808080048410012001102c200241c8006a41186a22004200370300200241c8006a41106a22064200370300200241c8006a41086a2203420037030020024200370348200241d0016a41086a220141bac6c500ad4280808080c000841002220941086a290000370300200220092900003703d0012009102c20032001290300370300200220022903d00122083703c00120022008370348200141f3c6c500ad4280808080e001841002220941086a290000370300200220092900003703d0012009102c200241c0016a41086a20012903002208370300200220022903d001220a3703c0012007200a370000200741086a2008370000200241f8006a41086a2003290300370300200241f8006a41106a2006290300370300200241f8006a41186a200029030037030020022002290348370378200241c8006a200241f8006a10800341002101410021094100210c4100210d4100210f410021054100210441002110410021114100213b4100213c4100213d4100213e4100213f410021404100214141002142410021434100214441002145410021464100214741002148410021494100214a4100214b4100214c4100214d4100214e4100214f4100215041002151024020022d00484101470d0020032d0000214a200241d1006a2d00002149200241d2006a2d00002148200241d3006a2d00002147200241d4006a2d00002146200241d5006a2d00002145200241d6006a2d00002144200241d7006a2d0000214320062d00002142200241d9006a2d00002141200241da006a2d00002140200241db006a2d0000213f200241dc006a2d0000213e200241dd006a2d0000213d200241de006a2d0000213c200241df006a2d0000213b20002d00002111200241e1006a2d00002110200241e2006a2d00002104200241e3006a2d00002105200241e4006a2d0000210f200241e5006a2d0000210d200241e6006a2d0000210c200241e7006a2d00002109200241e8006a2d0000210120022d0049215120022d004a215020022d004b214f20022d004c214e20022d004d214d20022d004e214c20022d004f214b0b200241f4006a200d3a0000200241f0006a20103a0000200241ec006a203d3a0000200241e8006a20413a0000200241e4006a20453a0000200020493a0000200241dc006a204d3a0000200620513a0000200241c8006a410c6a200241386a41086a2802003602002002200229033837024c200220013a0077200220093a00762002200c3a00752002200f3a0073200220053a0072200220043a0071200220113a006f2002203b3a006e2002203c3a006d2002203e3a006b2002203f3a006a200220403a0069200220423a0067200220433a0066200220443a0065200220463a0063200220473a0062200220483a00612002204a3a005f2002204b3a005e2002204c3a005d2002204e3a005b2002204f3a005a200220503a00592002410036024820024198016a200241c8006a108b0220024183016a20024198016a41086a280200360000200220022903980137007b20024198016a410c6a200241ff006a290000370000200241c28289aa0436009901200241023a0098012002200229007837009d0120024198016a109001024020022802480d00200241d0006a280200450d00200228024c102c0b200241e0016a24000f0b0240024020370d002009102a21030c010b200320372009102e21030b2003450d03200921370b200641206a2106200320386a22092002290378370000200941186a200f290300370000200941106a200c290300370000200941086a2005290300370000203841206a21380c000b0b41e2a8c20041c9001054000b1033000b41e2a8c20041c9001054000b103a000b1035000bd71302157f037e230041f0026b220224002002412036021420022001360210200241186a2001ad42808080808004841003108d0102400240200228021822030d00200041003602000c010b200228021c21042002200241206a28020036023c20022003360238200241086a200241386a107502400240024002400240024020022802080d00200228023c220541c4006e220641c4006c2201417f4c0d01200228020c210702400240024020010d00410421080c010b2001102a2208450d010b2007450d03200241c8026a41077221094100210a03400240024002400240024002402005450d0020022005417f6a220b36023c20022002280238220c41016a360238200c2d0000220141014b0d000240024020010e020001000b200b41034d0d0120024184026a41026a20024188026a41026a2d00003a0000200241e8016a41086a200241a8026a41086a290200370300200241e8016a41106a200241a8026a41106a290200370300200241e8016a41186a200241a8026a41186a2d00003a0000200241c8016a41086a200241c8026a41086a290100370300200241c8016a41106a200241c8026a41106a290100370300200241c8016a41186a200241c8026a41186a290100370300200220022f0088023b018402200220022902a8023703e801200220022901c8023703c80120022005417b6a220d36023c2002200c41056a360238200c280001210e200220022f01a4023b01c6014100210f0c030b4100210f200241003a00e8022005417e6a211003400240200b200f2201470d000240200141ff0171450d00200241003a00e8020b4100210d4102210f0c040b200241c8026a20016a200c20016a220f41016a2d00003a00002002200f41026a3602382002200141016a220f3a00e8022002201036023c2010417f6a2110200f4120470d000b200241a4026a41026a221120022d00ca023a000020024188026a41086a2212200941086a29000037030020024188026a41106a2213200941106a29000037030020024188026a41186a2214200941186a2d00003a0000200220022f01c8023b01a40220022009290000370388024100210d200b200f460d0120022800cb0221152002201036023c2002200c200f6a220b41026a3602380240200b41016a2d0000220f41014d0d002010210d4102210f0c030b024002400240200f0e020100010b4100210f200241003a00e802200520016b417c6a2101034002402010200f470d000240200f41ff0171450d00200241003a00e8020b4100210d0c050b200241c8026a200f6a200b200f6a220c41026a2d00003a00002002200c41036a3602382002200f41016a220c3a00e8022002200136023c2001417f6a2101200c210f200c4120470d000b200241a8026a41186a200241c8026a41186a290300370300200241a8026a41106a200241c8026a41106a290300370300200241a8026a41086a200241c8026a41086a290300370300200220022903c8023703a8022010200c6b210d410121160c010b410021162010210d0b200241c8016a41186a200241a8026a41186a290300370300200241c8016a41106a200241a8026a41106a290300370300200241c8016a41086a200241a8026a41086a29030037030020024184026a41026a20112d00003a0000200241e8016a41086a2012290300370300200241e8016a41106a2013290300370300200241e8016a41186a20142d00003a0000200220022903a8023703c801200220022f01a4023b01840220022002290388023703e8014101210f2015210e0c020b200241c2016a41026a20024184026a41026a2d00003a0000200241a8016a41086a200241e8016a41086a290300370300200241a8016a41106a200241e8016a41106a290300370300200241a8016a41186a200241e8016a41186a2d00003a000020024188016a41086a200241c8016a41086a29030037030020024188016a41106a200241c8016a41106a29030037030020024188016a41186a200241c8016a41186a290300370300200220022f0184023b01c201200220022903e8013703a801200220022903c80137038801200220022f01c6013b0186010c020b4102210f0b200241c2016a41026a220120024184026a41026a2d00003a0000200241a8016a41086a220c200241e8016a41086a290300370300200241a8016a41106a220b200241e8016a41106a290300370300200241a8016a41186a2205200241e8016a41186a2d00003a000020024188016a41086a2211200241c8016a41086a29030037030020024188016a41106a2212200241c8016a41106a29030037030020024188016a41186a2213200241c8016a41186a290300370300200220022f0184023b01c201200220022903e8013703a801200220022903c80137038801200220022f01c6013b018601200f4102460d00200a41016a211020024182016a41026a221420012d00003a0000200241e8006a41086a2215200c290300370300200241e8006a41106a220c200b290300370300200241e8006a41186a220b20052d00003a0000200241c8006a41086a22052011290300370300200241c8006a41106a22112012290300370300200241c8006a41186a22122013290300370300200220022f01c2013b018201200220022903a8013703682002200229038801370348200220022f0186013b01462006200a470d020240200a41017422012010200120104b1b2206ad42c4007e2217422088a70d002017a7220141004e0d020b1035000b200241003602282006450d072008102c0c070b02400240200a0d002001102a21080c010b2008200a41c4006c2001102e21080b2008450d020b2008200a41c4006c6a2201200f3a00002001200e360004200141036a20142d00003a0000200120022f0182013b0001200b2d0000210f200c29030021172015290300211820022903682119200120163a002120012019370008200141106a2018370000200141186a2017370000200141206a200f3a00002001413a6a2012290300370000200141326a20112903003700002001412a6a200529030037000020012002290348370022200120022f01463b0042200d21052010210a20102007470d000b200241306a20073602002002200636022c200220083602280c050b1033000b200241003602280c020b103a000b200241306a20073602002002200636022c2002200836022820080d010b200241003602b002200242013703a8022002410b3602cc012002200241106a3602c8012002200241a8026a36028801200241dc026a4101360200200242013702cc02200241d0b0c2003602c8022002200241c8016a3602d80220024188016a41c49ac500200241c8026a10391a20023502b00242208620023502a8028410042000410036020020022802ac02450d0120022802a802102c0c010b20002002290328370200200041086a200241286a41086a2802003602000b2004450d002003102c0b200241f0026a24000b860701057f230041106b2203240020034100360208200342013703002002200310670240024002402002450d00200241c4006c210403400240024020012d00004101460d0002400240200328020420032802082202460d00200328020021050c010b200241016a22052002490d06200241017422062005200620054b1b22064100480d060240024020020d002006102a21050c010b200328020020022006102e21050b2005450d052003200636020420032005360200200328020821020b2003200241016a360208200520026a41003a0000200141046a28020021060240024020032802042205200328020822026b4104490d00200328020021050c010b200241046a22072002490d06200541017422022007200220074b1b22024100480d060240024020050d002002102a21050c010b200328020020052002102e21050b2005450d052003200236020420032005360200200328020821020b2003200241046a360208200520026a20063600000c010b02400240200328020420032802082202460d00200328020021050c010b200241016a22052002490d05200241017422062005200620054b1b22064100480d050240024020020d002006102a21050c010b200328020020022006102e21050b2005450d042003200636020420032005360200200328020821020b2003200241016a360208200520026a41013a00002003200336020c200141016a2003410c6a1094020240200141216a2d00004101460d0002400240200328020420032802082202460d00200328020021050c010b200241016a22052002490d06200241017422062005200620054b1b22064100480d060240024020020d002006102a21050c010b200328020020022006102e21050b2005450d052003200636020420032005360200200328020821020b2003200241016a360208200520026a41003a00000c010b02400240200328020420032802082202460d00200328020021050c010b200241016a22052002490d05200241017422062005200620054b1b22064100480d050240024020020d002006102a21050c010b200328020020022006102e21050b2005450d042003200636020420032005360200200328020821020b2003200241016a360208200520026a41013a0000200141226a20031091010b200141c4006a2101200441bc7f6a22040d000b0b20002003290300370200200041086a200341086a280200360200200341106a24000f0b1033000b1035000ba20f06017f017e057f017e057f017e230041f0016b2201240042002102200141e0006a41186a22034200370300200141e0006a41106a22044200370300200141e0006a41086a2205420037030020014200370360200141d0006a41086a220641a4c6c500ad4280808080a001841002220741086a290000370300200120072900003703502007102c2005200629030037030020012001290350220837034020012008370360200641baecc100ad4280808080e000841002220741086a290000370300200120072900003703502007102c200420012903502208370300200141206a41086a2005290300370300200141206a41106a2008370300200141206a41186a2006290300370300200120083703402001200129036037032020014180016a200141206a412010d30120012d0080012107200320014199016a290000370300200420014191016a290000370300200520014189016a29000037030020012001290081013703600240024020074101470d0020002001290360370000200041186a2003290300370000200041106a2004290300370000200041086a20052903003700000c010b20014180016a41186a420037030020014180016a41106a2209420037030020014180016a41086a22074200370300200142003703800120064191b0c200ad4280808080e000841002220a41086a2900003703002001200a290000370350200a102c200720062903003703002001200129035037038001200641cab0c200ad4280808080e000841002220a41086a2900003703002001200a290000370350200a102c20092001290350220837030020052007290300370300200420083703002003200629030037030020012008370320200120012903800137036020014180016a200141e0006a10e40202400240200128028001220a0d004104210a410021060c010b2001290284012202422088a721060b02400240200641246c2206450d002006415c6a2105200a210603400240024020062d00004101460d002005450d030c010b200641016a2800002103200641086a28020021072001200641106a280200360264200120073602600240200341c28289aa04460d0020050d010c030b20014180016a200141e0006a10e50220012d00800122054102460d02200141e4016a2802002109200128028401210b20014180016a41186a420037030020014180016a41106a220c420037030020014180016a41086a220342003703002001420037038001200141d0006a41086a220641ecddc500ad4280808080f000841002220741086a290000370300200120072900003703502007102c200320062903003703002001200129035037038001200641c9f8c200ad4280808080a001841002220741086a290000370300200120072900003703502007102c200c20012903502208370300200141e0006a41086a2003290300370300200141e0006a41106a2008370300200141e0006a41186a200629030037030020012008370320200120012903800137036020014180016a200141e0006a412010d0012001280280012206410120061b2107410021030240200b200920054101711b2205200129028401420020061b2208422088a74f0d00200720054105746a2206450d00200141186a200641186a290000370300200141106a200641106a290000370300200141086a200641086a29000037030020012006290000370300410121030b02402008a7450d002007102c0b2003450d0220014180016a41186a2207200141186a29030037030020014180016a41106a2209200141106a29030037030020014180016a41086a220b200141086a2903003703002001200129030037038001200141e0006a41186a220c4200370300200141e0006a41106a220d4200370300200141e0006a41086a2205420037030020014200370360200141d0006a41086a220641a4c6c500ad4280808080a001841002220341086a290000370300200120032900003703502003102c2005200629030037030020012001290350220837034020012008370360200641baecc100ad4280808080e000841002220341086a290000370300200120032900003703502003102c200141c0006a41086a2006290300220837030020012001290350220e3703402004200e370000200441086a2008370000200141206a41086a2005290300370300200141206a41106a200d290300370300200141206a41186a200c29030037030020012001290360370320200141203602642001200141206a36026020014180016a200141e0006a10a102200041186a2007290300370000200041106a2009290300370000200041086a200b29030037000020002001290380013700000c030b200641246a21062005415c6a21050c000b0b20004200370000200041186a4200370000200041106a4200370000200041086a42003700000b02402002422088a72206450d00200641246c2105200a210603400240024020062d0000220341034b0d0002400240024020030e0404000102040b2006410c6a280200450d03200641086a280200102c0c030b2006410c6a280200450d02200641086a280200102c0c020b2006410c6a280200450d01200641086a280200102c0c010b200641086a280200450d00200641046a280200102c0b200641246a21062005415c6a22050d000b0b2002a7450d00200a102c0b200141f0016a24000bfd0d09057f017e017f017e037f017e027f027e087f230041e0006b22012400200141206a41186a22024200370300200141206a41106a22034200370300200141206a41086a2204420037030020014200370320200141d0006a41086a22054196e0c500ad4280808080f0008422061002220741086a290000370300200120072900003703502007102c2004200529030037030020012001290350220837034020012008370320200541c2e0c500ad4280808080e002841002220741086a290000370300200120072900003703502007102c200320012903502208370300200141086a22092004290300370300200141106a220a2008370300200141186a220b20052903003703002001200837034020012001290320370300200141206a200110e4032001290328210c200128022421072001280220210d20024200370300200342003703002004420037030020014200370320200520061002220e41086a2900003703002001200e290000370350200e102c2004200529030037030020012001290350370320200541bafdc200ad4280808080e001841002220e41086a2900003703002001200e290000370350200e102c20032001290350220837030020092004290300370300200a2008370300200b20052903003703002001200837034020012001290320370300200141206a2001412010d001200d410020071b210b200c420020071b210f20012902244200200128022022051b21102007410420071b21112005410120051b210d2000280200211220002802042113024002400240024020002802082205450d002012200541246c6a21142010422088a741057421152012210903402009280220210a200941086a2900002108200941106a29000021062009290000210c2002200941186a29000037030020032006370300200420083703002001200c370320200941246a21094100210020152107200d21050240024003402007450d02200141206a2005460d01200041016a2100200741606a21072005200141206a412010dd05210e200541206a2105200e0d000b200e4541016a41017120006a417f6a21000b200b200a6a2207200b490d000240200041016a220e200f422088a722054d0d000240200fa7220b20056b200e2005200e20054b1b221620056b220e4f0d002005200e6a22172005490d07200b41017422182017201820174b1b221741ffffffff03712017470d07201741027422184100480d0702400240200b0d002018102a21110c010b2011200b4102742018102e21110b2011450d052017ad210f0b201120054102746a210b02400240200e4102490d00200b410020162005417f736a220e41027410da051a2011200520166a20056b4102746a417c6a210b200e20056a21050c010b200e450d010b200b4100360200200541016a21050b200520004d0d04201120004102746a22002000280200200a6a360200200f42ffffffff0f832005ad42208684210f2007210b0b20092014470d000b0b02402013450d002012102c0b02402010a7450d00200d102c0b200141206a41186a220e4200370300200141206a41106a22094200370300200141206a41086a2207420037030020014200370320200141d0006a41086a22054196e0c500ad4280808080f000841002220041086a290000370300200120002900003703502000102c2007200529030037030020012001290350220837034020012008370320200541c2e0c500ad4280808080e002841002220041086a290000370300200120002900003703502000102c200141c0006a41086a2005290300220837030020012001290350220637034020032006370000200341086a2008370000200141086a2007290300370300200141106a2009290300370300200141186a200e290300370300200120012903203703000240024020110d002001ad428080808080048410050c010b20014100360228200142013703204104102a2205450d012005200b36000020014284808080c00037022420012005360220200f422088a72205200141206a10670240024020050d002001280228210a20012802242109200128022021070c010b2005410274210b4100200128022822056b2100200128022421092011210e0340200e280200210302400240200920006a4104490d00200128022021070c010b200541046a22072005490d062009410174220a2007200a20074b1b220a4100480d060240024020090d00200a102a21070c010b20012802202009200a102e21070b2007450d042001200a36022420012007360220200a21090b200e41046a210e2001200541046a220a360228200720056a20033600002000417c6a2100200a2105200b417c6a220b0d000b0b2001ad4280808080800484200aad4220862007ad84100102402009450d002007102c0b2011450d00200fa7450d002011102c0b200141e0006a24000f0b1033000b41a888c600200020051038000b1035000b940703067f017e057f230041a0016b2201240020014180016a41186a2202420037030020014180016a41106a2203420037030020014180016a41086a220442003703002001420037038001200141f0006a41086a220541ecddc500ad4280808080f000841002220641086a290000370300200120062900003703702006102c200420052903003703002001200129037037038001200541f3ddc500ad4280808080c001841002220641086a290000370300200120062900003703702006102c200320012903702207370300200141d0006a41086a22062004290300370300200141d0006a41106a22082007370300200141d0006a41186a22092005290300370300200120073703102001200129038001370350200141086a200141d0006a4120109401200128020c210a2001280208210b200141106a41186a200041186a290000370300200141106a41106a200041106a290000370300200141106a41086a200041086a29000037030020012000290000370310200541a3dbc500ad42808080808001841002220041086a290000370300200120002900003703702000102c200141306a41086a220c20052903003703002001200129037037033020054182aac500ad4280808080e001841002220041086a290000370300200120002900003703702000102c200141c0006a41086a22002005290300370300200120012903703703402001200a4100200b1b3602702002200141f0006aad4280808080c000841006220541186a2900003703002003200541106a2900003703002004200541086a29000037030020012005290000370380012005102c2009200229030037030020082003290300370300200620042903003703002001200129038001370350024041c000102a2205450d00200520012903303700002005200129034037001020052001290350370020200541086a200c290300370000200541186a2000290300370000200541286a2006290300370000200541306a2008290300370000200541386a200929030037000020014180016a200141106a109f01200541c000418001102e2205450d002005200129008001370040200541d8006a20014198016a290000370000200541d0006a20014190016a290000370000200541c8006a20014188016a2900003700002001200541e0001094012001200128020441016a410120012802001b360280012005ad4280808080800c8420014180016aad4280808080c0008410012005102c200141a0016a24000f0b1033000b3802017f017e230041106b220324002003200210b701200329030021042000200341086a29030037030820002004370300200341106a24000b800201057f230041c0006b2205240002400240024020030d00200041003602000c010b2003280208220641164d0d0120032802002107200541206a41186a22082004ad42808080808004841006220341186a290000370300200541206a41106a2204200341106a290000370300200541206a41086a2209200341086a290000370300200520032900003703202003102c200541186a2008290300370300200541106a2004290300370300200541086a20092903003703002005200529032037030020002006ad4220862007ad84200641696aad422086200741176aad8441012005ad42808080808004841008108d010b200541c0006a24000f0b411720061047000baf0201027f23004190016b220324002003200210ee010240024020032d000022024102470d00200041003a00000c010b200341e0006a200341286a290300370300200341e8006a200341306a290300370300200341d8006a41186a200341386a290300370300200341d8006a41206a200341c0006a290300370300200341d8006a41286a200341c8006a290300370300200341d8006a41306a200341d0006a2802003602002003200341206a29030037035802402002450d00200041003a00000c010b2003411c6a2802002102200341186a28020021042000200329026c370001200041013a0000200041196a20034184016a290200370000200041116a200341fc006a290200370000200041096a200341d8006a411c6a2902003700002002450d002004102c0b20034190016a24000bfe0201057f230041c0016b22022400200241086a220341e4d2c500ad42808080808001841002220441086a290000370300200220042900003703002004102c200241d8006a41086a2205200329030037030020022002290300370358200341a9e4c300ad4280808080e001841002220441086a290000370300200220042900003703002004102c200241e8006a41086a220620032903003703002002200229030037036820022001109f01024041c000102a2204450d00200420022903583700002004200229036837001020042002290000370020200441086a2005290300370000200441186a2006290300370000200441286a2003290000370000200441306a200241106a290000370000200441386a200241186a2900003700002002200441c00010a50120022d00002103200241e8006a200241017241d70010db051a0240024020034102470d00200041023a00000c010b200020033a0000200041016a200241e8006a41d70010db051a0b2004102c200241c0016a24000f0b1033000bd10201057f230041d0006b22022400200241306a41086a220341e4d2c500ad42808080808001841002220441086a290000370300200220042900003703302004102c200241106a41086a2205200329030037030020022002290330370310200341a9e4c300ad4280808080e001841002220441086a290000370300200220042900003703302004102c200241206a41086a2206200329030037030020022002290330370320200241306a2001109f01024041c000102a22040d001033000b200420022903103700002004200229032037001020042002290030370020200441086a2005290300370000200441186a2006290300370000200441286a2003290000370000200441306a200241c0006a290000370000200441386a200241306a41186a290000370000200241086a200441c000410141004100109701200228020821032004102c200241d0006a240020034101460b870102017f037e230041e0006b22032400200341086a200210ee010240024020032d000822024102470d00420021040c010b2002410173ad2104200341186a2903002105200341106a290300210620020d00200341246a280200450d00200341206a280200102c0b2000200637030820002004370300200041106a2005370300200341e0006a24000be72e0a057f067e0d7f067e057f027e0d7f027e067f027e230041a0056b22022400200128020821032001280200210402400240200128020422050d00200421010c010b2005210620042101034020012802880b21012006417f6a22060d000b0340200420042f01064102746a41880b6a28020021042005417f6a22050d000b0b200241fc006a20042f0106360200200241e0006a41186a4100360200200241f4006a200436020020022003360280012002410036027042002107200242003703682002200136026420024100360260200241c8016a200241e0006a10f2010240024020022903e80122084202520d00420021094200210a0c010b200241f0046aad4280808080800484210b200241d0046aad4280808080800484210c200241fc016a210d200241c8016a412c6a210e200241c8016a410472210f200241c8016a41106a2103200241a5026a2110200241c8016a41086a2111200241a8036a412c6a2112200241a8036a41106a2113200241f8016a211420024190026a211542002107420021094200210a0340200241a8016a41186a2205200241c8016a41186a2201290300370300200241a8016a41106a22062003290300370300200241a8016a41086a2216201129030037030020024188016a41086a2217201041086a29000037030020024188016a41106a2218201041106a29000037030020024188016a41186a2219201041186a290000370300200220022903c8013703a80120022010290000370388012014290300211a2015290300211b20022903f001211c200229038802211d200229038002211e200229039802211f20022802a002212020022d00a402212120022d00c5022104200241c8026a41186a2005290300370300200241c8026a41106a2006290300370300200241c8026a41086a2016290300370300200220022903a8013703c802200241e8026a41186a22162019290300370300200241e8026a41106a22222018290300370300200241e8026a41086a2223201729030037030020022002290388013703e802024002400240024002402004ad42ff0183200820085022051b4201520d00200241c8016a200241c8026a4200201c20051b4200201a20051b10a00120022d00e0012105200241c8006a200a2007200920022903c80120022903d001200329030010f301200241c8006a41106a2903002109200229035021072002290348210a20050d010b024002400240202141ff0171222441014622050d00200441ff01710d002020201ea772450d010b200241c8016a200241c8026a10ee010240024020022d00c8012217417f6a220641014b0d00024020060e020002000b20170d0420022802e401450d0420022802e001102c0c040b20024188036a41086a200d41086a29020037030020024188036a41106a200d41106a29020037030020024188036a41186a200d41186a2902003703002002200d290200370388032003290300212520022903d0012126200228029c02212720022802f801212820022802f401212920022802f001212a20022802ec01212b20022802e801212c20022802e401212d20022802e001212e0c020b4102212920170d0120022802e401450d0120022802e001102c0c010b201fa7210402400240201f422088a722050d00200421010c010b2005210620042101034020012802ec0321012006417f6a22060d000b0340200420042f01064102746a41ec036a28020021042005417f6a22050d000b0b200220203602e801200241003602e001200241003602d801200242003703d001200220013602cc01200241003602c801200220043602dc01200220042f01063602e401200241c8016a10f4010c040b4102212f0240024002400240024020294102460d00202c417f4c0d0202400240202c0d0041002130410121310c010b202c2130202c102a2231450d020b2031202e202c10db051a200120024188036a41186a290300370300200320024188036a41106a290300370300201120024188036a41086a29030037030020022002290388033703c8012029410146212f202c2132202b21332026213420252135202a2136202821370b200241f0046a41186a22182001290300370300200241f0046a41106a22192003290300370300200241f0046a41086a22212011290300370300200241d0046a41086a22382023290300370300200241d0046a41106a22392022290300370300200241d0046a41186a223a2016290300370300200220022903c8013703f004200220022903e8023703d00402400240024002400240024002400240200441ff01710d00202f4102460d01201220022903f004370200201241086a2021290300370200201241106a2019290300370200201241186a2018290300370200200220343703a803200220373602d0032002202f3602cc03200220363602c803200220333602c403200220323602c003200220303602bc03200220313602b803200220353703b0032036213b2034213c2035213d203321060c030b202f4102470d010b2005450d03200241f8036a200241c8026a10f501200142003703002003420037030041082106200241c8016a41086a22054200370300200242003703c801200241b0046a41086a22044191b0c200ad4280808080e000841002221741086a290000370300200220172900003703b0042017102c20052004290300370300200220022903b0043703c801200441acb0c200ad4280808080e000841002221741086a290000370300200220172900003703b0042017102c20024190056a41086a20042903002208370300200220022903b004221c370390052003201c370000200341086a200837000020024188046a41086a200529030037030020024188046a41106a200329030037030020024188046a41186a2001290300370300200220022903c80137038804200241386a20024188046a4120109401200228023c210420022802382105201341086a200241f8036a41086a280200360200201320022903f803370200201220022903d004370100201241086a200241d0046a41086a290300370100201241106a2039290300370100201241186a203a290300370100427f213c2002427f3703b0032002427f3703a803200241083602c4034100212f200241003602cc0320022004410020051b223b3602c803427f213d0c010b203241164d0d072032ad4220862031ad84203241696aad422086203141176aad84410110072005450d01200241f8036a200241c8026a10f501200142003703002003420037030041082106200241c8016a41086a22054200370300200242003703c801200241b0046a41086a22044191b0c200ad4280808080e000841002221741086a290000370300200220172900003703b0042017102c20052004290300370300200220022903b0043703c801200441acb0c200ad4280808080e000841002221741086a290000370300200220172900003703b0042017102c20024190056a41086a20042903002208370300200220022903b004221c370390052003201c370000200341086a200837000020024188046a41086a200529030037030020024188046a41106a200329030037030020024188046a41186a2001290300370300200220022903c80137038804200241c0006a20024188046a41201094012002280244210420022802402105201341086a200241f8036a41086a280200360200201320022903f803370200201220022903d004370100201241086a200241d0046a41086a290300370100201241106a2039290300370100201241186a203a290300370100427f213c2002427f3703b0032002427f3703a803200241083602c4034100212f200241003602cc0320022004410020051b223b3602c80302402030450d002031102c427f213c0b427f213d0b0240201e4201520d002002201d3703a8032002201b3703b003201d213c201b213d0b02402024450d00201220022903e802370000201241186a2016290300370000201241106a2022290300370000201241086a20232903003700000b02402020450d00200142003703002003420037030020114200370300200242003703c801200241b0046a41086a22044191b0c200ad4280808080e000841002220541086a290000370300200220052900003703b0042005102c20112004290300370300200220022903b0043703c801200441acb0c200ad4280808080e000841002220541086a290000370300200220052900003703b0042005102c20024190056a41086a20042903002208370300200220022903b004221e370390052003201e370000200341086a200837000020024188046a41086a201129030037030020024188046a41106a200329030037030020024188046a41186a2001290300370300200220022903c80137038804200241306a20024188046a41201094014101212f200241013602cc0320022002280234410020022802301b3602d0030b201fa72104201f422088a722160d02200421050c030b200241c8026a10f6012030450d002031102c0b20294102460d06202d0d054100212d0c060b2016211720042105034020052802ec0321052017417f6a22170d000b0340200420042f01064102746a41ec036a28020021042016417f6a22160d000b0b20042f01062116200220203602a804200220163602a404200241003602a0042002200436029c04200241003602980420024200370390042002200536028c042002410036028804200241c8016a20024188046a10f70120022802c8014101470d0620022802c003222041696aad42208620022802b803220441176aad8421082020ad4220862004ad84211f0340200241b0046a41186a200f41186a290200221e370300200241b0046a41106a200f41106a290200221c370300200241b0046a41086a200f41086a290200221a3703002002200f290200221d3703b00420022802ec01210520022802f001211720022802f4012116203a201e3703002039201c3703002038201a3703002002201d3703d00402400240202041164d0d002001200c1006220441186a2900003703002003200441106a2900003703002011200441086a290000370300200220042900003703c8012004102c201820012903003703002019200329030037030020212011290300370300200220022903c8013703f004200241c8016a201f20084101200b1008108d0120022802c8012204450d01200620022802d0016b210620022802cc01450d012004102c0c010b411720201047000b0240024020050d002001200c1006220441186a2900003703002003200441106a2900003703002011200441086a290000370300200220042900003703c8012004102c201820012903003703002019200329030037030020212011290300370300200220022903c8013703f004201f20084101200b10090c010b2001200c1006220441186a2900003703002003200441106a2900003703002011200441086a290000370300200220042900003703c8012004102c201820012903003703002019200329030037030020212011290300370300200220022903c8013703f004201f20084101200b2016ad4220862005ad84100a200620166a21062017450d002005102c0b200241c8016a20024188046a10f70120022802c8014101470d060c000b0b1033000b103a000b411720321047000b202e102c0b201fa7210402400240201f422088a722050d00200421010c010b2005210620042101034020012802ec0321012006417f6a22060d000b0340200420042f01064102746a41ec036a28020021042005417f6a22050d000b0b200220203602e801200241003602e001200241003602d801200242003703d001200220013602cc01200241003602c801200220043602dc01200220042f01063602e401200241c8016a10f4010c020b200220063602c4030b20024188046a10f40120024188046a41186a220420024188036a41186a29030037030020024188046a41106a220120024188036a41106a29030037030020024188046a41086a220520024188036a41086a2903003703002002200229038803370388040240024020294102460d00200e200229038804370200200e41086a2005290300370200200e41106a2001290300370200200e41186a2004290300370200200220263703c801200220283602f001200220293602ec012002202a3602e8012002202b3602e4012002202d3602dc012002202e3602d8012002202736029402200220253703d0012002202c3602e001410121040240202c20022802c003470d0002400240202e20022802b8032201460d00202e2001202c10dd050d02202b2006470d020c010b202b2006470d010b200e2012412010dd050d002026203c852025203d85844200520d00202a203b470d0002402029202f470d004100210420294101470d01202820022802d003460d010b410121040b0240202d450d00202e102c0b20044102460d002004450d010b2011200241a8036a41d00010db051a200241003a00c801200241c8026a200241c8016a10f8010c010b20022802bc03450d0020022802b803102c0b200241c8016a200241e0006a10f20120022903e80122084202520d000b0b200241e0006a10f90102400240200a500d00200241c8016a41186a22054200370300200241c8016a41106a22064200370300200241c8016a41086a22014200370300200242003703c801200241b0046a41086a2204418be9c500ad4280808080800184221f1002220341086a290000370300200220032900003703b0042003102c20012004290300370300200220022903b00422083703a803200220083703c801200441c9b5c000ad4280808080d00184220c1002220341086a290000370300200220032900003703b0042003102c200620022903b004220837030020024188046a41086a2211200129030037030020024188046a41106a220f200837030020024188046a41186a221620042903003703002002200837039005200220022903c80137038804200241186a20024188046a4120109e01200241186a41106a29030021082002290320210b20022802182103200542003703002006420037030020014200370300200242003703c8012004201f1002220641086a290000370300200220062900003703b0042006102c20012004290300370300200220022903b004221f3703a8032002201f3703c8012004200c1002220641086a290000370300200220062900003703b0042006102c20052004290300221f37030020112001290300370300200f20022903b004220c3703002016201f3703002002200c37039005200220022903c80137038804200242002008420020031b220820097d200b420020031b221f200754ad7d220c201f20077d220b201f56200c200856200c2008511b22041b3703d00120024200200b20041b3703c801200241c8016a210420024188046a21010c010b02402007200984500d0041b583c100413341acfec5001036000b200241c8016a41186a22054200370300200241c8016a41106a22064200370300200241c8016a41086a22014200370300200242003703c801200241b0046a41086a2204418be9c500ad4280808080800184221f1002220341086a290000370300200220032900003703b0042003102c20012004290300370300200220022903b00422083703a803200220083703c801200441c9b5c000ad4280808080d00184220c1002220341086a290000370300200220032900003703b0042003102c200620022903b004220837030020024188046a41086a2211200129030037030020024188046a41106a220f200837030020024188046a41186a221620042903003703002002200837039005200220022903c80137038804200220024188046a4120109e01200241106a29030021082002290308210b20022802002103200542003703002006420037030020014200370300200242003703c8012004201f1002220641086a290000370300200220062900003703b0042006102c20012004290300370300200220022903b004221f3703a8032002201f3703c8012004200c1002220641086a290000370300200220062900003703b0042006102c20052004290300221f37030020112001290300370300200f20022903b004220c3703002016201f3703002002200c37039005200220022903c8013703880420022008420020031b3703d0012002200b420020031b3703c801200241c8016a210420024188046a21010b2001ad42808080808004842004ad42808080808002841001200241a0056a24000bf90503087f017e017f23004180026b2202240002400240024020012802202203450d0020012003417f6a36022020012802082104200128020c2203200128020422052f01064f0d01200241186a2206200520034105746a220741206a290000370300200241106a2208200741186a290000370300200241086a2209200741106a2900003703002002200741086a290000370300200241206a2005200341e0006c6a41e8026a41e00010db051a2001200341016a36020c200120043602082001200536020420024180016a41186a200629030037030020024180016a41106a200829030037030020024180016a41086a2009290300370300200220022903003703800120024180016a41206a200241206a41e00010db051a200020024180016a41800110db051a0c020b200042023703200c010b2001280200210702400240200528020022030d002004ad210a410021030c010b200741016a210720053301044220862004ad84210a0b2005102c200aa7210402400240200a422088a7220620032f01064f0d00200321050c010b034002400240200328020022050d002004ad210a410021050c010b200741016a210720033301044220862004ad84210a0b2003102c200aa7210420052103200a422088a7220620052f01064f0d000b0b200241186a2208200520064105746a220341206a290000370300200241106a2209200341186a290000370300200241086a220b200341106a2900003703002002200341086a290000370300200241206a2005200641e0006c6a41e8026a41e00010db051a200641027420056a418c0b6a280200210302402007417f6a2205450d00034020032802880b21032005417f6a22050d000b0b2001410036020c20012004360208200120033602042001410036020020024180016a41186a200829030037030020024180016a41106a200929030037030020024180016a41086a200b290300370300200220022903003703800120024180016a41206a200241206a41e00010db051a200020024180016a41800110db051a0b20024180026a24000ba31108037f037e047f017e017f017e037f017e230041c0016b220724002004a7210802400240024002400240024020014201510d0041012109024020084101460d00427f200320067c200220057c220a2002542208ad7c220b2008200b200354200b2003511b22081b210b427f200a20081b210a4200210c4100210d0c040b2002200556200320065620032006511b450d01200320067d2002200554ad7d210b200220057d210a4200210c0c020b4101210d024020084101470d00427f200320067c200220057c22012002542208ad7c22022008200220035420022003511b22081b210b427f200120081b210a410021094201210c0c040b200741306a20042005200642012002200310f301200741c0006a290300210b2007290338210a2007290330210c0c040b200620037d2005200254ad7d210b200520027d210a4201210c0b410021094101210d0b2001500d0020074180016a41186a220e420037030020074180016a41106a220f420037030020074180016a41086a221042003703002007420037038001200741b0016a41086a2208418be9c500ad428080808080018422111002221241086a290000370300200720122900003703b0012012102c20102008290300370300200720072903b00122013703a0012007200137038001200841c9b5c000ad4280808080d0018422131002221241086a290000370300200720122900003703b0012012102c200f20072903b0012201370300200741e0006a41086a22142010290300370300200741e0006a41106a22152001370300200741e0006a41186a22162008290300370300200720013703a0012007200729038001370360200741c8006a200741e0006a4120109e01200741c8006a41106a29030021012007290350211720072802482112200e4200370300200f4200370300201042003703002007420037038001200820111002220f41086a2900003703002007200f2900003703b001200f102c20102008290300370300200720072903b00122113703a0012007201137038001200820131002220f41086a2900003703002007200f2900003703b001200f102c200e2008290300221137030020142010290300370300201520072903b001221337030020162011370300200720133703a0012007200729038001370360200742002001420020121b220120037d2017420020121b2203200254ad7d2211200320027d2202200356201120015620112001511b22081b3703880120074200200220081b37038001200741e0006aad428080808080048420074180016aad428080808080028410010b02402004500d002009450d0120074180016a41186a2209420037030020074180016a41106a220d420037030020074180016a41086a221042003703002007420037038001200741b0016a41086a2208418be9c500ad428080808080018422021002220e41086a2900003703002007200e2900003703b001200e102c20102008290300370300200720072903b00122033703a0012007200337038001200841c9b5c000ad4280808080d0018422041002220e41086a2900003703002007200e2900003703b001200e102c200d20072903b0012203370300200741e0006a41086a220f2010290300370300200741e0006a41106a22122003370300200741e0006a41186a22142008290300370300200720033703a0012007200729038001370360200741186a200741e0006a4120109e01200741186a41106a2903002103200729032021012007280218210e20094200370300200d4200370300201042003703002007420037038001200820021002220d41086a2900003703002007200d2900003703b001200d102c20102008290300370300200720072903b00122023703a0012007200237038001200820041002220d41086a2900003703002007200d2900003703b001200d102c200920082903002202370300200f2010290300370300201220072903b001220437030020142002370300200720043703a00120072007290380013703602007420020034200200e1b220320067d20014200200e1b2202200554ad7d2204200220057d2205200256200420035620042003511b22081b3703880120074200200520081b37038001200741e0006aad428080808080048420074180016aad428080808080028410010c010b200d450d0020074180016a41186a2209420037030020074180016a41106a220d420037030020074180016a41086a221042003703002007420037038001200741b0016a41086a2208418be9c500ad428080808080018422021002220e41086a2900003703002007200e2900003703b001200e102c20102008290300370300200720072903b00122033703a0012007200337038001200841c9b5c000ad4280808080d0018422041002220e41086a2900003703002007200e2900003703b001200e102c200d20072903b0012203370300200741e0006a41086a220f2010290300370300200741e0006a41106a22122003370300200741e0006a41186a22142008290300370300200720033703a00120072007290380013703602007200741e0006a4120109e01200741106a2903002103200729030821012007280200210e20094200370300200d4200370300201042003703002007420037038001200820021002220d41086a2900003703002007200d2900003703b001200d102c20102008290300370300200720072903b00122023703a0012007200237038001200820041002220d41086a2900003703002007200d2900003703b001200d102c200920082903002202370300200f2010290300370300201220072903b001220437030020142002370300200720043703a00120072007290380013703602007427f20034200200e1b220320067c20014200200e1b220220057c22052002542208ad7c22022008200220035420022003511b22081b370388012007427f200520081b37038001200741e0006aad428080808080048420074180016aad428080808080028410010b2000200a3703082000200c370300200041106a200b370300200741c0016a24000bb00101037f230041306b220124002001200010f701024020012802004101470d000340024020012802242202450d002001280228450d002002102c0b2001200010f70120012802004101460d000b0b02402000280204220241d0e1c100460d00200228020021032002102c2003450d00200328020021002003102c2000450d00024020002802002202450d0003402000102c2002210020022802002203210220030d000b0b2000102c0b200141306a24000bc50805057f017e017f027e037f230041f0006b22022400200241d0006a41186a22034200370300200241d0006a41106a22044200370300200241d0006a41086a2205420037030020024200370350200241c0006a41086a220641e4d2c500ad428080808080018422071002220841086a290000370300200220082900003703402008102c200520062903003703002002200229034022093703302002200937035020064183d3c500ad4280808080e00184220a1002220841086a290000370300200220082900003703402008102c200420022903402209370300200241106a41086a22082005290300370300200241106a41106a220b2009370300200241106a41186a220c200629030037030020022009370330200220022903503703102002200241106a1098012002280200210d2002290308210920034200370300200442003703002005420037030020024200370350200620071002220441086a290000370300200220042900003703402004102c20052006290300370300200220022903402207370330200220073703502006200a1002220441086a290000370300200220042900003703402004102c20032006290300220737030020082005290300370300200b2002290340220a370300200c20073703002002200a370330200220022903503703102002200942017c4201200d1b2209370350200241106aad4280808080800484200241d0006aad4280808080800184100102404120102a2206450d0020062001290000370000200641186a200141186a290000370000200641106a200141106a290000370000200641086a200141086a2900003700002006412041c000102e2205450d0020052009370020200241d0006a41186a22012005ad42808080808005841006220641186a290000370300200241d0006a41106a2203200641106a290000370300200241d0006a41086a2204200641086a290000370300200220062900003703502006102c200241106a41186a2001290300370300200241106a41106a2003290300370300200241106a41086a2004290300370300200220022903503703104137102a2206450d00200642bac6a1cbc68dd9aff300370000200642f4dec98bf6ac999de400370008200641e5cc85ab073600102006413a3a0016200641ece8013b001420062002290310370017200620022f01183b001f2006200228011a360021200620022f011e3b0025200620022d00203a0027200620022d00213a0028200620022d00223a0029200620022d00233a002a200620022d00243a002b200620022d00253a002c200620022d00263a002d200620022d00273a002e200620022d00283a002f200620022d00293a0030200620022d002a3a0031200620022d002b3a0032200620022d002c3a0033200620022d002d3a0034200620022d002e3a0035200620022d002f3a0036200041bcfec3004194fec3006b410f6a36020820004137360204200020063602002005102c200241f0006a24000f0b1033000bbb0201057f230041c0006b22012400200141206a41086a220241e4d2c500ad42808080808001841002220341086a290000370300200120032900003703202003102c200141086a2204200229030037030020012001290320370300200241a9e4c300ad4280808080e001841002220341086a290000370300200120032900003703202003102c200141106a41086a2205200229030037030020012001290320370310200141206a2000109f01024041c000102a22030d001033000b200320012903003700002003200129031037001020032001290020370020200341086a2004290300370000200341186a2005290300370000200341286a2002290000370000200341306a200141306a290000370000200341386a200141206a41186a2900003700002003ad428080808080088410052003102c200141c0006a24000bdd0605057f047e017f017e047f23004190016b2202240002400240024020012802202203450d0020012003417f6a36022020012802082104200128020c2203200128020422052f01064f0d01200241e0006a41186a200520034105746a220641206a2900002207370300200241e0006a41106a200641186a2900002208370300200241e0006a41086a200641106a29000022093703002002200641086a290000220a370360200241306a41086a20052003410c6c6a220641f0026a280200220b360200200641e8026a290200210c2001200341016a36020c20012004360208200120053602042002200c3703302000200a3702042000410c6a2009370200200041146a20083702002000411c6a2007370200200041246a200c3702002000412c6a200b360200200041013602000c020b200041003602000c010b2001280200210602400240200528020022030d002004ad210c410021030c010b200641016a210620053301044220862004ad84210c0b2005102c200ca7210402400240200c422088a7220b20032f01064f0d00200321050c010b034002400240200328020022050d002004ad210c410021050c010b200641016a210620033301044220862004ad84210c0b2003102c200ca7210420052103200c422088a7220b20052f01064f0d000b0b200241306a41186a220d2005200b4105746a220341206a290000370300200241306a41106a220e200341186a290000370300200241306a41086a220f200341106a2900003703002002200341086a290000370330200241d0006a41086a22102005200b410c6c6a220341f0026a2802003602002002200341e8026a290200370350200b41027420056a41f0036a280200210302402006417f6a2205450d00034020032802ec0321032005417f6a22050d000b0b2001410036020c200120043602082001200336020420014100360200200241e0006a41186a200d290300220c370300200241e0006a41106a200e2903002207370300200241e0006a41086a200f290300220837030020024188016a201028020022033602002000200229033022093702042000410c6a2008370200200041146a20073702002000411c6a200c370200200041246a2002290350220c3702002000412c6a2003360200200220093703602002200c37038001200041013602000b20024190016a24000b8a0401057f230041c0006b22022400200241206a41086a220341e4d2c500ad42808080808001841002220441086a290000370300200220042900003703202004102c200241086a2205200329030037030020022002290320370300200341a9e4c300ad4280808080e001841002220441086a290000370300200220042900003703202004102c200241106a41086a2206200329030037030020022002290320370310200241206a2000109f01024041c000102a2204450d00200420022903003700002004200229031037001020042002290020370020200441086a2005290300370000200441186a2006290300370000200441286a2003290000370000200441306a200241306a290000370000200441386a200241206a41186a290000370000200241003602282002420137032020012d000021004101102a21030240024020004101460d002003450d02200242818080801037022420022003360220200341003a0000200141086a200241206a10b4040c010b2003450d01200242818080801037022420022003360220200341013a00002002200241206a360210200141016a200241106a1094020b200228022421032004ad4280808080800884200235022842208620022802202200ad84100102402003450d002000102c0b2004102c024020012d00000d002001411c6a280200450d00200141186a280200102c0b200241c0006a24000f0b1033000bca0201067f230041b0016b22012400200141086a200010f201024020012903284202510d000340200128026021022001280258210302400240200128025c22040d00200321050c010b2004210620032105034020052802ec0321052006417f6a22060d000b0340200320032f01064102746a41ec036a28020021032004417f6a22040d000b0b200120023602a801200141003602a001200141003602980120014200370390012001200536028c0120014100360288012001200336029c01200120032f01063602a40120014188016a10f401200141086a200010f20120012903284202520d000b0b02402000280204220341d0e1c100460d00200328020021042003102c2004450d00200428020021052004102c2005450d00024020052802002203450d0003402005102c2003210520032802002204210320040d000b0b2005102c0b200141b0016a24000be80202097f027e230041206b220324000240200128020041016a220441004c0d0020012004360200200141046a2105200141086a28020021060240024003402005280200220741086a210820072f0106220941057421054100210a0240024003402005450d0120022008412010dd05220b450d02200541606a2105200a41016a210a200841206a2108200b417f4a0d000b200a417f6a21090b2006450d022006417f6a2106200720094102746a41880b6a21050c010b0b2007200a41e0006c6a220541c5036a310000200541e8026a290300220c200c5022081ba7450d004200200541f8026a29030020081b210c4200200541f0026a29030020081b210d0c010b200341086a20012802102002200141146a28020028021c110400200341106a290300210c200128020021042003290308210d0b20012004417f6a3602002000200c3703082000200d370300200341206a24000f0b41c689c6004118200341186a418883c100103b000bd40402097f017e230041106b22052400024002400240200128020041016a220641004c0d0020012006360200200141046a2106200141086a28020021070240024003402006280200220841086a210920082f0106220a41057421064100210b0240024003402006450d0120022009412010dd05220c450d02200641606a2106200b41016a210b200941206a2109200c417f4a0d000b200b417f6a210a0b2007450d022007417f6a21072008200a4102746a41880b6a21060c010b0b2008200b41e0006c6a22094198036a2106200941e8026a210d2009419c036a2802002107024003402006280200220841086a210920082f0106220a41057421064100210b0240024003402006450d0120042009412010dd05220c450d02200641606a2106200b41016a210b200941206a2109200c417f4a0d000b200b417f6a210a0b024020070d004100210c0c030b2007417f6a21072008200a4102746a41ec036a21060c010b0b4101210c0240200841e8026a200b410c6c6a2206280200220b0d00410021060c010b20062802082209417f4c0d040240024020090d0020054200370300410121060c010b2009102a2206450d0620054100360204200520093602000b200520093602042006200b200910db051a2005290300210e0b02400240200d2d005d450d0020064100200c1b21060c010b200c450d010b2000200e370204200020063602000c010b20002001280210200220032004200141146a28020028020c1105000b20012001280200417f6a360200200541106a24000f0b41c689c6004118200541086a418883c100103b000b103a000b1033000bcb0401097f230041c0006b220324000240200128020041016a220441004c0d0020012004360200200141046a2105200141086a280200210602400240024003402005280200220741086a210820072f0106220941057421054100210a0240024003402005450d0120022008412010dd05220b450d02200541606a2105200a41016a210a200841206a2108200b417f4a0d000b200a417f6a21090b2006450d022006417f6a2106200720094102746a41880b6a21050c010b0b2007200a41e0006c6a220841e8026a210502400240200841c5036a2d00000d00200341206a41086a220a200541c5006a290000370300200341206a41106a220b200541cd006a290000370300200341206a41186a2207200541d5006a29000037030020032005413d6a2900003703204102210820052d003c4101470d01200341186a2007290300370300200341106a200b290300370300200341086a200a29030037030020032003290320370300410121080c010b200341086a200541c5006a290000370300200341106a200541cd006a290000370300200341186a200541d5006a29000037030020032005413d6a29000037030020052d003c21080b200841ff01714102470d010b200020012802102002200141146a280200280210110400200128020021040c010b200020083a000020002003290300370001200041096a200341086a290300370000200041116a200341106a290300370000200041196a200341186a2903003700000b20012004417f6a360200200341c0006a24000f0b41c689c6004118200341206a418883c100103b000bb80201097f230041106b220224000240200028020041016a220341004c0d0020002003360200200041046a2104200041086a280200210502400240024003402004280200220641086a210720062f010622084105742104410021090240024003402004450d0120012007412010dd05220a450d02200441606a2104200941016a2109200741206a2107200a417f4a0d000b2009417f6a21080b2005450d022005417f6a2105200620084102746a41880b6a21040c010b0b2006200941e0006c6a220441a4036a2d000022074101410220074101461b200441c5036a2d00001b22044102470d010b20002802102001200041146a2802002802181101002104200028020021030c010b200441014621040b20002003417f6a360200200241106a240020040f0b41c689c6004118200241086a418883c100103b000bfc0202097f037e230041206b220324000240200128020041016a220441004c0d0020012004360200200141046a2105200141086a28020021060240024003402005280200220741086a210820072f0106220941057421054100210a0240024003402005450d0120022008412010dd05220b450d02200541606a2105200a41016a210a200841206a2108200b417f4a0d000b200a417f6a21090b2006450d022006417f6a2106200720094102746a41880b6a21050c010b0b2007200a41e0006c6a22054190036a290300210c20054188036a290300210d20054180036a290300210e0240200541c5036a2d00000d00200ea721054201210e2005450d010c020b200e4202520d010b200320012802102002200141146a280200280214110400200341106a290300210c200128020021042003290308210d2003290300210e0b20012004417f6a360200200041106a200c3703002000200d3703082000200e370300200341206a24000f0b41c689c6004118200341186a418883c100103b000b851409057f017e0c7f047e037f017e037f047e097f230041f00c6b22022400024020002802000d002000417f360200200128020821032001280200210402400240200128020422050d00200421010c010b2005210620042101034020012802880b21012006417f6a22060d000b0340200420042f01064102746a41880b6a28020021042005417f6a22050d000b0b2002411c6a20042f0106360200200241186a4100360200200241146a20043602002002200336022020024100360210200242003703082002200136020420024100360200200241f0016a200210f201024020022903900222074202510d002000410c6a2108200041046a2109200241900a6a41146a210a200241900a6a41206a210b200241f0016a4104722103200241f0016a413d6a210c200241cd026a210d200241b8026a210e200241f0016a41306a210f200241f0016a41286a21100340200241c8006a41086a2204200241f0016a41086a2211290300370300200241c8006a41106a2201200241f0016a41106a2212290300370300200241c8006a41186a2205200241f0016a41186a2213290300370300200220022903f001370348200e2903002114200f290300211520022903b0022116200229039802211720022f01ee02211820022d00ed02211920022d00cc02211a20022903a802211b20022802c002211c20022802c402211d20022802c802211e200241286a41186a200d41186a290000221f370300200241286a41106a200d41106a2900002220370300200241286a41086a200d41086a29000022213703002002200d2900002222370328200241e8006a41186a2223201f370300200241e8006a41106a22242020370300200241e8006a41086a222520213703002002202237036820024188016a41186a2226200529030037030020024188016a41106a2227200129030037030020024188016a41086a222820042903003703002002200229034837038801024002400240024002402009280200222941d0e1c100460d002000280208212a0c010b200241900a6a410041e00210da051a200241f0016a410041a00810da051a41880b102a2229450d014100212a202941003b010620294100360200202941086a200241900a6a41e00210db051a202941e8026a200241f0016a41a00810db051a20004100360208200020293602040b0340202941086a210120292f0106222b410574210441002105024003402004450d0120024188016a2001412010dd052206450d04200441606a2104200541016a2105200141206a21012006417f4a0d000b2005417f6a212b0b0240202a450d00202a417f6a212a2029202b4102746a41880b6a28020021290c010b0b200241c0016a41186a2026290300221f370300200241c0016a41106a20272903002220370300200241c0016a41086a20282903002221370300200220022903880122223703c001200a2022370200200a41086a2021370200200a41106a2020370200200a41186a201f370200200220083602a00a2002202b36029c0a200220093602980a200220293602940a200241003602900a20102014370300201220153703002002201637039002200220173703f8012002201a3a00ac022002201e3602a8022002201d3602a4022002201c3602a0022002201b37038802200220073703f001200c2002290368370000200c41086a2025290300370000200c41106a2024290300370000200c41186a2023290300370000200220183b01ce02200220193a00cd02200241900a6a200241f0016a1080021a0c020b1033000b202941e8026a200541e0006c6a2129024020194101710d0020292029290300200720075022041b37030020292029290308201720041b370308202941106a22012001290300201520041b370300200241900a6a41186a22062023290300370300200241900a6a41106a222a2024290300370300200241900a6a41086a222b2025290300370300200220022903683703900a20292d003c21012013202941d5006a22052900003703002012202941cd006a22192900003703002011202941c5006a222329000037030020022029413d6a22242900003703f0012028200241900a6a200241f0016a201a41ff0171410146221a1b220441086a2900003703002027200441106a2900003703002026200441186a2900003703002002200429000037038801202941012001201a1b3a003c2024200229038801370000202320282903003700002019202729030037000020052026290300370000202920162029290320201ba722041b370320202941286a22012014200129030020041b3703002029201b202929031820041b37031802400240201d0d00201c21040c010b201d2101201c2104034020042802ec0321042001417f6a22010d000b0340201c201c2f01064102746a41ec036a280200211c201d417f6a221d0d000b0b201c2f010621012002201e3602a801200220013602a401200241003602a0012002201c36029c01200241003602980120024200370390012002200436028c012002410036028801200241f0016a20024188016a10f701024020022802f0014101470d00202941306a211c0340200241900a6a41286a200341286a280200360200200b200341206a2902003703002006200341186a2204290200370300202a200341106a2201290200370300202b200341086a2205290200370300200220032902003703900a200241c0016a41186a2004290000370300200241c0016a41106a2001290000370300200241c0016a41086a2005290000370300200220032900003703c001200241e0016a41086a200b41086a2802003602002002200b2902003703e001200241b0016a201c200241c0016a200241e0016a108102024020022802b001450d0020022802b4012204450d0020022802b801450d002004102c0b200241f0016a20024188016a10f70120022802f0014101460d000b0b20024188016a10f4010c010b202941386a212b202941306a212a202928023821262029280230210402400240202941346a28020022050d00200421010c010b2005210620042101034020012802ec0321012006417f6a22060d000b0340200420042f01064102746a41ec036a28020021042005417f6a22050d000b0b200220263602900220024100360288022002410036028002200242003703f801200220013602f401200241003602f0012002200436028402200220042f010636028c02200241f0016a10f401202941286a201437030020292016370320202941106a2015370300202920173703082029201b37031820292007370300202a201d360204202a201c360200202b201e3602002029201a3a003c2029413d6a2002290368370000202941c5006a2025290300370000202941cd006a2024290300370000202941d5006a2023290300370000202920183b015e202920193a005d0b200241f0016a200210f20120022903900222074202520d000b0b200210f9012000200028020041016a360200200241f00c6a24000f0b41f089c6004110200241f0016a41f882c100103b000bf41801187f230041d0116b2202240020002802102203200328020041016a360200200028020c21042000280208210520002802042103200241206a41186a22062000412c6a290000370300200241206a41106a2207200041246a290000370300200241206a41086a22082000411c6a29000037030020022000290014370320200241a0026a200141e00010db051a024002400240024020032f01062201410b490d00200241b0036a410041e00210da051a20024198066a410041a00810da051a41880b102a2209450d03200941003b010620094100360200200941086a200241b0036a41e00210db052101200941e8026a20024198066a41a00810db052106200220032f00c8013b01ac032002200341ca016a2d00003a00ae03200220032900db01370398032002200341e0016a29000037009d03200341cb016a280000210a200341cf016a280000210b200341d3016a280000210c200341d7016a280000210d20024198066a200341a8076a41e00010db051a2001200341e8016a20032f010641796a220041057410db052101200620034188086a200041e0006c10db052106200341063b0106200920003b0106200220022f01ac033b019403200220022d00ae033a0096032002200229039803370380032002200229009d0337008503200241b0036a20024198066a41e00010db051a0240024020044107490d00200441057420016a41c07e6a2001200441796a22074105746a2201200041ffff037120076b41057410dc051a200141186a200241206a41186a290300370000200141106a200241206a41106a290300370000200141086a200241206a41086a29030037000020012002290320370000200441e0006c20066a220041c07b6a200041e07a6a220e200941066a22002f010020076b41e0006c10dc051a200e200241a0026a41e00010db051a0c010b200341086a20044105746a220141206a2001200341066a22002f010020046b41057410dc051a200141186a200241206a41186a290300370000200141106a200241206a41106a290300370000200141086a200241206a41086a29030037000020012002290320370000200341e8026a200441e0006c6a220e41e0006a200e20002f010020046b41e0006c10dc051a200e200241a0026a41e00010db051a0b20024188026a41026a220420022d0096033a0000200020002f010041016a3b0100200220022f0194033b01880220022002290380033703800120022002290085033700850120024190016a200241b0036a41e00010db051a2002411c6a41026a220f20042d00003a0000200220022f0188023b011c2002200229038001370308200220022900850137000d200241206a20024190016a41e00010db051a20032802002206450d0120032f0104211020024198066a410272211103402002419c026a41026a2212200f2d00003a0000200220022f011c3b019c0220022002290308370388022002200229000d37008d02200241a0026a200241206a41e00010db051a201041ffff0371210702400240024020062f01062203410b490d002011410041b20b10da051a41b80b102a2201450d0720014100360200200141046a20024198066a41b40b10db051a200220062f00c8013b01ac032002200641ca016a2d00003a00ae03200220062900db01370398032002200641e0016a29000037009d03200641cb016a2800002113200641cf016a2800002114200641d3016a2800002115200641d7016a280000211620024198066a200641a8076a41e00010db051a200141086a200641e8016a20062f0106220041796a220341057410db052117200141e8026a20064188086a200341e0006c10db052118200141880b6a200641a40b6a2000417a6a220841027410db052119200641063b0106200120033b010602402008450d00410021032019210003402000280200220420033b010420042001360200200041046a21002008200341016a2203470d000b0b200241b0036a20024198066a41e00010db051a200220022d00ae0322033a009603200220022f01ac0322003b0194032002200229009d033700850320022002290398033703800320024194066a41026a220820033a0000200220003b01940620022002290380033703800120022002290085033700850120024198066a200241b0036a41e00010db051a201041ffff037122004107490d0120172007417a6a22044105746a2017200741796a22034105746a220020012f010620036b41057410dc051a200041186a200229008d023700002000200d36000f2000200c36000b2000200b3600072000200a360003200041026a20122d00003a0000200020022f019c023b00002000200229038802370013200741e0006c20186a220041c07b6a200041e07a6a220020012f010620036b41e0006c10dc051a2000200241a0026a41e00010db051a200120012f010641016a22003b01062007410274220a20196a416c6a201920044102746a2210200041ffff0371220720046b41027410dc051a2010200936020020072004490d022001200a6a41f00a6a2100034020002802002204200341016a22033b010420042001360200200041046a210020032007490d000c030b0b200641086a2200200741016a22044105746a200020074105746a2200200320076b220141057410dc051a2000200d36000f2000200c36000b2000200b3600072000200a360003200041026a2002419c026a41026a2d00003a0000200020022f019c023b00002000200229038802370013200041186a200229008d023700002006200741e0006c6a220041c8036a200041e8026a2200200141e0006c10dc051a2000200241a0026a41e00010db051a2006200341016a22033b01062007410274200641880b6a22006a41086a200020044102746a2200200341ffff037120046b41027410dc051a20002009360200201041ffff037120062f010622034f0d05200920043b010420092006360200200420034f0d052003417f6a210120062004417f6a22034102746a41900b6a2100034020002802002204200341026a3b010420042006360200200041046a21002001200341016a2203470d000c060b0b200641086a2203200741016a22044105746a200320074105746a220320062f0106221020076b221941057410dc051a2003200d36000f2003200c36000b2003200b3600072003200a360003200341026a20122d00003a0000200320022f019c023b00002003200229038802370013200341186a200229008d02370000200641e8026a200741e0006c6a220341e0006a2003201941e0006c10dc051a2003200241a0026a41e00010db051a2006201041016a22033b010620074102742219200641880b6a22106a41086a201020044102746a2210200341ffff037120046b41027410dc051a20102009360200200020062f010622044f0d00200620196a418c0b6a2103034020032802002200200741016a22073b010420002006360200200341046a210320042007470d000b0b20024184026a41026a220320082d00003a0000200220022f0194063b01840220022002290380013703f00120022002290085013700f50120024190016a20024198066a41e00010db051a200f20032d00003a0000200220022f0184023b011c200220022903f001370308200220022900f50137000d200241206a20024190016a41e00010db051a0240200628020022030d002013210a2016210d2015210c2014210b200121090c030b20062f010421102013210a2016210d2015210c2014210b20032106200121090c000b0b200320044105746a220041286a200041086a2210200120046b41057410dc051a200041206a2006290300370000200041186a2007290300370000200041106a2008290300370000201020022903203700002003200441e0006c6a220041c8036a200041e8026a220e20032f010620046b41e0006c10dc051a200e200241a0026a41e00010db051a200320032f010641016a3b01060c010b20024198066a410272410041b20b10da051a41b80b102a2203450d0120034100360200200341046a20024198066a41b40b10db051a2003200528020022003602880b200520033602002005200528020441016a360204200041003b010420002003360200200320032f010622044105746a220041086a20022f011c3b00002000410a6a2002411c6a41026a2d00003a0000200041176a200d360000200041136a200c3600002000410f6a200b3600002000410b6a200a3600002000411b6a2002290308370000200041206a200229000d3700002003200441e0006c6a41e8026a200241206a41e00010db051a200341880b6a200441016a22004102746a2009360200200320003b0106200920003b0104200920033602000b200241d0116a2400200e0f0b1033000b9d1e03087f037e127f23004180076b22042400200441e0006a41186a200241186a290000370300200441e0006a41106a200241106a290000370300200441e0006a41086a200241086a290000370300200420022900003703600240024002402001280200220541d0e1c100460d00200128020421060c010b41002106200441e8026a410041e00210da051a200441c0016a410041840110da051a41ec03102a2205450d01200541003b010620054100360200200541086a200441e8026a41e00210db051a200541e8026a200441c0016a41840110db051a20014100360204200120053602000b024002400340200541086a2107200541066a210820052f0106220941057421024100210a0240024003402002450d01200441e0006a2007412010dd05220b450d02200241606a2102200a41016a210a200741206a2107200b417f4a0d000b200a417f6a21090b2006450d022006417f6a2106200520094102746a41ec036a28020021050c010b0b200441e8026a41086a22022005200a410c6c6a220741f0026a220a2802003602002004200741e8026a22072902003703e80220072003290200370200200a200341086a280200360200200441c0016a41086a20022802002202360200200420042903e802220c3703c0012000410c6a20023602002000200c370204200041013602000c010b200441086a41186a220b200441e0006a41186a2202290300370300200441086a41106a200441e0006a41106a2207290300220c370300200441086a41086a200441e0006a41086a220a290300220d37030020042004290360220e3703082001200128020841016a3602082007200c370300200a200d3703002002200b2903003703002004200e370360200441d8026a41086a2206200341086a280200360200200420032902003703d80202400240024020082f01002203410b490d00200441e8026a410041e00210da051a200441c0016a410041840110da051a41ec03102a220f450d04200f41003b0106200f4100360200200f41086a200441e8026a41e00210db052107200f41e8026a200441c0016a41840110db05210a200441e8026a41086a220b200541b8036a280200360200200420052900db013703a8012004200541e0016a2900003700ad01200420052902b0033703e802200420052f00c8013b01bc012004200541ca016a2d00003a00be01200541cb016a2800002110200541cf016a2800002111200541d3016a2800002112200541d7016a28000021132007200541e8016a20052f010641796a220241057410db052107200a200541bc036a2002410c6c10db05210a200541063b0106200f20023b0106200420042f01bc013b01a401200420042d00be013a00a601200420042903a8013703c001200420042900ad013700c501200441286a41086a200b280200360200200420042903e8023703280240024020094107490d00200941057420076a41c07e6a2007200941796a220b4105746a2207200241ffff0371200b6b41057410dc051a200741186a200441e0006a41186a290300370000200741106a200441e0006a41106a290300370000200741086a200441e0006a41086a290300370000200720042903603700002009410c6c200a6a220241b87f6a200241ac7f6a2202200f41066a22082f0100200b6b410c6c10dc051a200241086a200441d8026a41086a280200360200200220042903d8023702000c010b200541086a20094105746a220241206a200220082f010020096b41057410dc051a200241186a200441e0006a41186a290300370000200241106a200441e0006a41106a290300370000200241086a200441e0006a41086a29030037000020022004290360370000200541e8026a2009410c6c6a2202410c6a200220082f010020096b410c6c10dc051a200241086a200441d8026a41086a280200360200200220042903d8023702000b200820082f010041016a3b010020044198016a41026a220220042d00a6013a0000200441c8026a41086a2214200441286a41086a280200360200200420042f01a4013b019801200420042903c001370350200420042900c501370055200420042903283703c8022004413c6a41026a221520022d00003a0000200420042f0198013b013c2004200429005537002d20042004290350370328200441c0006a41086a22162014280200360200200420042903c80237034020052802002206450d0120052f01042103200441e8026a4102722117034020044194016a41026a221820152d00003a0000200420042f013c3b019401200420042903283703602004200429002d37006520044198016a41086a221920162802003602002004200429034037039801200341ffff0371210502400240024020062f01062202410b490d002017410041960410da051a419c04102a220b450d08200b4100360200200b41046a200441e8026a41980410db051a200420062f00c8013b01bc012004200641ca016a2d00003a00be012004200641db016a2900003703a8012004200641e0016a2900003700ad01200641cb016a280000211a200641cf016a280000211b200641d3016a280000211c200641d7016a280000211d200441e8026a41086a221e200641b8036a2802003602002004200641b0036a2902003703e802200b41086a200641e8016a20062f0106220741796a220241057410db05211f200b41e8026a200641bc036a2002410c6c10db052120200b41ec036a20064188046a2007417a6a220941027410db052108200641063b0106200b20023b010602402009450d00410021022008210703402007280200220a20023b0104200a200b360200200741046a21072009200241016a2202470d000b0b200441d8026a41086a2202201e280200360200200420042d00be0122073a00a601200420042f01bc01220a3b01a401200420042903a8013703c001200420042900ad013700c501200420042903e8023703d802200441c4026a41026a220920073a00002004200a3b01c402200420042903c0013703e802200420042900c5013700ed0220142002280200360200200420042903d8023703c802200341ffff037122074107490d01201f2005417a6a220a4105746a201f200541796a22024105746a2207200b2f010620026b41057410dc051a200741186a20042900653700002007201336000f2007201236000b2007201136000720072010360003200741026a20182d00003a0000200720042f0194013b0000200720042903603700132005410c6c20206a220741b87f6a200741ac7f6a2207200b2f0106220320026b410c6c10dc051a200741086a20192802003602002007200429039801370200200b200341016a22073b01062005410274221020086a416c6a2008200a4102746a2203200741ffff03712205200a6b41027410dc051a2003200f3602002005200a490d02200b20106a41d4036a210703402007280200220a200241016a22023b0104200a200b360200200741046a210720022005490d000c030b0b200641086a2207200541016a220a4105746a200720054105746a2207200220056b41057410dc051a200741186a20042900653700002007201336000f2007201236000b2007201136000720072010360003200741026a20044194016a41026a2d00003a0000200720042f0194013b00002007200429036037001320062005410c6c6a220241f4026a200241e8026a220720062f0106220b20056b410c6c10dc051a200241f0026a20044198016a41086a28020036020020072004290398013702002006200b41016a22023b01062005410274200641ec036a22076a41086a2007200a4102746a2207200241ffff0371220b200a6b41027410dc051a2007200f360200200341ffff0371200b4f0d052006200a417f6a22024102746a41f0036a210703402007280200220a200241016a22023b0104200a2006360200200741046a21072002200b490d000c060b0b200641086a2202200541016a22034105746a200220054105746a220220062f010620056b41057410dc051a200241186a20042900653700002002201336000f2002201236000b2002201136000720022010360003200241026a20182d00003a0000200220042f0194013b000020022004290360370013200641e8026a2005410c6c6a2202410c6a200220062f0106220a20056b410c6c10dc051a200241086a201928020036020020022004290398013702002006200a41016a22023b010620054102742210200641ec036a220a6a41086a200a20034102746a2208200241ffff0371220a20036b41027410dc051a2008200f3602002007200a4f0d00200620106a41f0036a2102034020022802002207200541016a22053b010420072006360200200241046a2102200a2005470d000b0b20044190016a41026a220220092d00003a000020044180016a41086a22072014280200360200200420042f01c402220a3b019001200420042903e802370350200420042900ed02370055200420042903c80237038001201520022d00003a00002004200a3b013c2004200429005537002d200420042903503703282016200728020036020020042004290380013703400240200628020022020d00201a2110201d2113201c2112201b2111200b210f0c030b20062f01042103201a2110201d2113201c2112201b211120022106200b210f0c000b0b200520094105746a220b41286a200b41086a2201200320096b41057410dc051a200b41206a2002290300370000200b41186a2007290300370000200b41106a200a2903003700002001200429036037000020052009410c6c6a220241f4026a200241e8026a220720052f010620096b410c6c10dc051a200241f0026a2006280200360200200720042903d802370200200520052f010641016a3b01060c010b200441e8026a410272410041960410da051a419c04102a2202450d0220024100360200200241046a200441e8026a41980410db051a2002200128020022073602ec03200120023602002001200128020441016a360204200741003b010420072002360200200220022f0106220a4105746a220741086a20042f013c3b00002007410a6a2004413c6a41026a2d00003a0000200741176a2013360000200741136a20123600002007410f6a20113600002007410b6a20103600002007411b6a2004290328370000200741206a200429002d3700002002200a410c6c6a220741f0026a200441c0006a41086a280200360200200741e8026a2004290340370200200241ec036a200a41016a22074102746a200f360200200220073b0106200f20073b0104200f20023602000b200041003602000b20044180076a24000f0b1033000bc50506047f017e017f017e037f017e23004180016b22042400024002402001a74101470d002000427f2000290300220120027c220220022001542205200041086a2206290300220120037c2005ad7c220220015420022001511b22051b3703002006427f200220051b3703000c010b20014201520d00200441c0006a41186a22064200370300200441c0006a41106a22074200370300200441c0006a41086a2205420037030020044200370340200441f0006a41086a2200418be9c500ad428080808080018422081002220941086a290000370300200420092900003703702009102c2005200029030037030020042004290370220137036020042001370340200041c9b5c000ad4280808080d00184220a1002220941086a290000370300200420092900003703702009102c200720042903702201370300200441206a41086a220b2005290300370300200441206a41106a220c2001370300200441206a41186a220d20002903003703002004200137036020042004290340370320200441086a200441206a4120109e01200441086a41106a29030021012004290310210e2004280208210920064200370300200742003703002005420037030020044200370340200020081002220741086a290000370300200420072900003703702007102c20052000290300370300200420042903702208370360200420083703402000200a1002220741086a290000370300200420072900003703702007102c200620002903002208370300200b2005290300370300200c2004290370220a370300200d20083703002004200a370360200420042903403703202004427f2001420020091b220120037c200e420020091b220320027c22082003542200ad7c22022000200220015420022001511b22001b3703482004427f200820001b370340200441206aad4280808080800484200441c0006aad428080808080028410010b20044180016a24000ba90603067f017e077f230041106b2203240002400240024002400240200241046a2204417f4c0d000240024020040d00410121050c010b2004102a2205450d040b2003410036020820032004360204200320053602002002200310670240024020032802042206200328020822046b2002490d00200328020021070c010b200420026a22052004490d05200641017422082005200820054b1b22054100480d050240024020060d002005102a21070c010b200328020020062005102e21070b2007450d042003200536020420032007360200200521060b200720046a2001200210db051a200420026a2201ad4220862007ad84101d220229000021092002102c20032009370300200720016a210a200141086a220b20014f0d01200341086a210c20032108410021024100210b410121042007210d41002105034020024101742101200c200841016a220e6b210f034020082d0000210802402002200b470d00200f210b024002400240200541ff01710e03010200010b200a200d6b210b0c010b417f200f200a200d6b6a220b200b200f491b210b0b2002417f200b41016a22102010200b491b6a220b2002490d072001200b2001200b4b1b220b4100480d070240024020020d00200b102a21040c010b20042002200b102e21040b2004450d060b200420026a20083a0000024002400240024002400240200541ff01710e03010300010b200a200d460d010c040b0240200e200c460d00410021050c030b200a200d470d030b200241016a21020c070b41012105200e200c470d00200241016a21020c060b200241016a2102200e21080c020b200241016a210241022105200141026a2101200d220841016a210d0c000b0b0b103a000b410121040240200b450d00200b4100480d03200b102a2204450d020b410021020340200420026a200320026a2d00003a0000200241016a22024108470d000b024020010d00410821020c010b200420026a2105410021020340200520026a200720026a2d00003a00002001200241016a2202470d000b200a20076b41086a21020b200020023602082000200b3602042000200436020002402006450d002007102c0b200341106a24000f0b1033000b1035000bbd0201057f230041c0006b22022400200241206a41086a220341e5d6c500ad42808080808002841002220441086a290000370300200220042900003703202004102c200241086a2205200329030037030020022002290320370300200341affbc000ad4280808080f000841002220441086a290000370300200220042900003703202004102c200241106a41086a2206200329030037030020022002290320370310200241206a2001109f01024041c000102a22040d001033000b200420022903003700002004200229031037001020042002290020370020200042c0808080800837020420002004360200200441086a2005290300370000200441186a2006290300370000200441286a2003290000370000200441306a200241306a290000370000200441386a200241206a41186a290000370000200241c0006a24000b130020004101360204200041e883c1003602000b3400200041ecddc50036020420004100360200200041146a4107360200200041106a41b487c100360200200041086a42073702000b2c01017f02404104102a22020d001033000b20004284808080c00037020420002002360200200241003600000b130020004101360204200041f493c1003602000bfa0101057f230041106b22022400024002404111102a2203450d002002421137020420022003360200410d200210670240024020022802042204200228020822036b410d490d002003410d6a2105200228020021040c010b2003410d6a22052003490d02200441017422062005200620054b1b22064100480d020240024020040d002006102a21040c010b200228020020042006102e21040b2004450d0120022006360204200220043602000b20022005360208200420036a220341002900b6fb40370000200341056a41002900bbfb4037000020002002290300370200200041086a2002280208360200200241106a24000f0b1033000b1035000bfb1206057f027e047f017e047f027e23004180016b22012400200141286a41186a4200370300200141286a41106a22024200370300200141286a41086a2203420037030020014200370328200141186a41086a220441ecddc500ad4280808080f000841002220541086a290000370300200120052900003703182005102c2003200429030037030020012001290318370328200441c9f8c200ad4280808080a001841002220541086a290000370300200120052900003703182005102c200220012903182206370300200141d8006a41086a2003290300370300200141d8006a41106a2006370300200141d8006a41186a20042903003703002001200637030820012001290328370358200141286a200141d8006a412010d001200129022c4200200128022822041b2207422088a74105742103410021052004410120041b22082104024002400240024002400340024020030d00410221090c030b20002004460d0120042000412010dd052102200541016a2105200341606a2103200441206a210420020d000b20024541016a41017120056a417f6a21050b200141286a41186a4200370300200141286a41106a220a4200370300200141286a41086a2203420037030020014200370328200141186a41086a220441ecddc500ad4280808080f000841002220041086a290000370300200120002900003703182000102c20032004290300370300200120012903182206370308200120063703282004418cdec500ad4280808080a002841002220041086a290000370300200120002900003703182000102c200a20012903182206370300200141d8006a41086a2003290300370300200141d8006a41106a2006370300200141d8006a41186a20042903003703002001200637030820012001290328370358200141286a200141d8006a10960120012802282203410420031b210b410021040240024002400240200129022c420020031b2206422088220ca7220d41014b0d00200d0e020201020b200d2103034020042003410176220020046a22022005200b20024102746a280200491b2104200320006b220341014b0d000b0b4100210902402005200b20044102746a2802002203470d004100210e0c020b2004200520034b6a21040b200141286a41186a220f4200370300200141286a41106a22104200370300200141286a41086a2200420037030020014200370328200141186a41086a220341ecddc500ad4280808080f000841002220241086a290000370300200120022900003703182002102c2000200329030037030020012001290318220c3703082001200c370328200341c9f8c200ad4280808080a001841002220241086a290000370300200120022900003703182002102c200141086a41086a2003290300220c370300200120012903182211370308200a2011370000200a41086a200c370000200141d8006a41086a2000290300370300200141d8006a41106a2010290300370300200141d8006a41186a200f29030037030020012001290328370358200141186a200141d8006aad42808080808004841003108d01024002400240024020012802182200450d00200128021c21022001200328020036022c200120003602282001200141286a107520012802000d01200128020421030c020b2001420037022c20014101360228200141286a107821030c020b410021030b2002450d002000102c0b20032003418094ebdc036e22004180ec94a37c6c6aad4280fd87d1007e2212428094ebdc038021112004200d4b0d020240200d2006a7470d00200d41016a2203200d490d05200d4101742202200320032002491b220341ffffffff03712003470d05200341027422024100480d0502400240200d0d002002102a210b0c010b200b200d4102742002102e210b0b200b450d042003ad21060b200b20044102746a220341046a2003200d20046b41027410dc051a200320053602004101210e200642ffffffff0f83200d41016a2204ad220c422086842106200420004180fd87d1006c2011a76a201220114280ec94a37c7e7c4280cab5ee01566a4b21090b200141286a41186a22024200370300200141286a41106a220d4200370300200141286a41086a2203420037030020014200370328200141186a41086a220441ecddc500ad4280808080f000841002220041086a290000370300200120002900003703182000102c20032004290300370300200120012903182211370308200120113703282004418cdec500ad4280808080a002841002220041086a290000370300200120002900003703182000102c200141086a41086a20042903002211370300200120012903182212370308200a2012370000200a41086a2011370000200141d8006a41086a2003290300370300200141d8006a41106a200d290300370300200141d8006a41186a20022903003703002001200129032837035802400240200b0d00200141d8006aad428080808080048410050c010b2001410036023020014201370328200ca72203200141286a10670240024020030d002001280230210a200128022c210d200128022821030c010b4100200128023022046b2100200b20034102746a2110200128022c210d200b210203402002280200210f02400240200d20006a4104490d00200128022821030c010b200441046a22032004490d07200d410174220a2003200a20034b1b220a4100480d0702400240200d0d00200a102a21030c010b2001280228200d200a102e21030b2003450d062001200a36022c20012003360228200a210d0b2001200441046a220a360230200320046a200f3600002000417c6a2100200a21042010200241046a2202470d000b0b2006a72104200141d8006aad4280808080800484200aad4220862003ad8410010240200d450d002003102c0b2004450d00200b102c0b200e450d00200141d8006a41086a22042005ad37030020014102360258200141286a200141d8006a108f01200141236a2203200141286a41086a22022802003600002001200129032837001b200141286a410c6a2001411f6a2200290000370000200141c6a4b9da04360029200141023a00282001200129001837002d200141286a109001200141013602282001200536022c200141d8006a200141286a108b02200320042802003600002001200129035837001b200141d8006a410c6a2000290000370000200141c28289aa04360059200141023a00582001200129001837005d200141d8006a10900120012802280d002002280200450d00200128022c102c0b02402007a7450d002008102c0b20014180016a240020090f0b41ecb3c000411e41acfec5001036000b1033000b1035000b9a0403047f017e027f230041106b220224002002410036020820024201370300200128020021034101102a2104024002400240024020034101460d002004450d02200242818080801037020420022004360200200441013a0000200128020421032001410c6a28020022042002106702402004450d002003200441286c6a2105034020032002109101200341206a29030021060240024020022802042207200228020822046b4108490d00200228020021070c010b200441086a22082004490d06200741017422042008200420084b1b22044100480d060240024020070d002004102a21070c010b200228020020072004102e21070b2007450d052002200436020420022007360200200228020821040b2002200441086a360208200720046a20063700002005200341286a2203470d000b0b200141106a200210ba020c010b2004450d01200242818080801037020420022004360200200441023a0000200128020421070240024020022802042203200228020822046b4104490d00200228020021030c010b200441046a22082004490d03200341017422052008200520084b1b22084100480d030240024020030d002008102a21030c010b200228020020032008102e21030b2003450d0220022008360204200220033602000b2002200441046a360208200320046a20073600000b20002002290300370200200041086a200241086a280200360200200241106a24000f0b1033000b1035000be31104047f017e037f047e230041b0056b22022400200241206a2001107502400240024002400240024020022802200d00024020022802242203450d0003402003417f6a22030d000b0b20012802042203450d01200128020022042d0000210520012003417f6a3602042001200441016a36020002400240200541ff00714104470d0020054118744118754100480d01420221060c060b200042033703680c060b200241c0036a2001108d0220022d00c0034102460d0220024198036a41206a200241c0036a41206a28020036020020024198036a41186a200241c0036a41186a29030037030020024198036a41106a200241c0036a41106a29030037030020024198036a41086a200241c0036a41086a290300370300200220022903c0033703980320012802042205450d02200128020022042d0000210320012005417f6a3602042001200441016a360200200341024b0d02024002400240024020030e03000102000b41002103200241003a00c0022005417f6a2107417e21080340024020072003470d00200341ff0171450d07200241003a00c0020c070b20024180026a20036a200420036a220941016a2d00003a00002001200520086a3602042001200941026a3602002002200341016a22093a00c0022008417f6a210820092103200941c000470d000b200241f0046a41386a20024180026a41386a2903002206370300200241f0046a41306a20024180026a41306a290300220a370300200241f0046a41286a20024180026a41286a290300220b370300200241f0046a41206a20024180026a41206a290300220c370300200241f0046a41186a20024180026a41186a290300220d370300200241a8046a41086a20024180026a41086a290300370300200241a8046a41106a20024180026a41106a290300370300200241a8046a41186a200d370300200241a8046a41206a200c370300200241a8046a41286a200b370300200241a8046a41306a200a370300200241a8046a41386a200637030020022002290380023703a8042009417f7320056a2105200420096a41016a2104410021030c020b41002103200241003a00c0022005417f6a2107417e21080340024020072003470d00200341ff0171450d06200241003a00c002420221060c070b20024180026a20036a200420036a220941016a2d00003a00002001200520086a3602042001200941026a3602002002200341016a22093a00c0022008417f6a210820092103200941c000470d000b200241f0046a41386a20024180026a41386a2903002206370300200241f0046a41306a20024180026a41306a290300220a370300200241f0046a41286a20024180026a41286a290300220b370300200241f0046a41206a20024180026a41206a290300220c370300200241f0046a41186a20024180026a41186a290300220d370300200241a8046a41086a20024180026a41086a290300370300200241a8046a41106a20024180026a41106a290300370300200241a8046a41186a200d370300200241a8046a41206a200c370300200241a8046a41286a200b370300200241a8046a41306a200a370300200241a8046a41386a200637030020022002290380023703a8042009417f7320056a210541012103200420096a41016a21040c010b41002103200241003a00c1022005417f6a2107417e21080340024020072003470d00200341ff0171450d05200241003a00c102420221060c060b20024180026a20036a200420036a220941016a2d00003a00002001200520086a3602042001200941026a3602002002200341016a22093a00c1022008417f6a210820092103200941c100470d000b200241a8046a20024180026a41c10010db051a2009417f7320056a2105200420096a41016a2104410221030b200241e7036a200241a8046a41c10010db051a2005450d022004310000210b20012005417f6a22083602042001200441016a36020002400240200b50450d00420021060c010b2008450d032004310001210c20012005417e6a3602042001200441026a3602004202200b420f8386220a4204540d0342012106200c420886200b84420488200a420c88220b4201200b4201561b7e220b200a5a0d030b200241186a2001107520022802180d02200228021c210520022001108e022002290300a70d02200241106a290300210d2002290308210c200241f0046a41206a20024198036a41206a280200360200200241f0046a41186a20024198036a41186a290300370300200241f0046a41106a20024198036a41106a290300370300200241f0046a41086a20024198036a41086a29030037030020022002290398033703f00420024180026a200241e7036a41c10010db051a200220022f0196033b01fe010c030b200042033703680c040b200042033703680c030b420221060b200241d8016a41086a2204200241f0046a41086a290300370300200241d8016a41106a2208200241f0046a41106a290300370300200241d8016a41186a2209200241f0046a41186a290300370300200241d8016a41206a2207200241f0046a41206a280200360200200220022903f0043703d80120024197016a20024180026a41c10010db051a200220022f01fe013b019401024020064202520d00200042033703680c020b200241f0006a41206a2007280200360200200241f0006a41186a2009290300370300200241f0006a41106a2008290300370300200241f0006a41086a2004290300370300200220022903d8013703702002412f6a20024197016a41c10010db051a200220022f0194013b012c0b20024180026a2001108f0202402002280280024118460d0020002002290370370300200020033a0024200041206a200241f0006a41206a280200360200200041186a200241f0006a41186a290300370300200041106a200241f0006a41106a290300370300200041086a200241f0006a41086a290300370300200041256a2002412f6a41c10010db051a200020022f012c3b016620004188016a200d37030020004180016a200c37030020004190016a2005360200200041f8006a200b3703002000200a3703702000200637036820004198016a20024180026a41900110db051a0c010b200042033703680b200241b0056a24000bf40601067f230041f0006b21020240024002400240024002400240024002400240024020012802042203450d00200128020022042d0000210520012003417f6a2206360204410121072001200441016a360200200541f001490d0a200541847e6a220541034b0d0420050e0401020803010b200041023a00000f0b20064102490d0320042f0001210520012003417d6a3602042001200441036a360200200541ef014b0d04200041023a00000f0b20064104490d042004280001210520012003417b6a3602042001200441056a36020041012107200541ffff034b0d07200041023a00000f0b41002105200241003a00682003417f6a21062003417e6a210302400340024020062005470d000240200541ff0171450d00200241003a00680b410121010c020b200241c8006a20056a200420056a220741016a2d00003a0000200120033602042001200741026a3602002002200541016a22073a00682003417f6a21032007210520074120470d000b200241c6006a20022d004a3a0000200241306a200241d7006a290000370300200241386a200241df006a290000370300200241c0006a200241e7006a2d00003a0000200220022f01483b01442002200229004f370328200228004b2105410021010b200241246a41026a2203200241c4006a41026a2d00003a0000200241086a41086a2207200241286a41086a290300370300200241086a41106a2204200241286a41106a290300370300200241086a41186a2206200241286a41186a2d00003a0000200220022f01443b0124200220022903283703082001450d05200041023a00000f0b200041023a00000f0b200041023a00000f0b410121070c030b200041023a00000f0b0240200641044f0d00200041023a00000f0b200041023a000020012003417b6a3602042001200441056a3602000f0b200241286a41026a20032d00003a0000200241c8006a41086a2007290300370300200241c8006a41106a2004290300370300200241c8006a41186a20062d00003a0000200220022f01243b012820022002290308370348410021070b200020073a0000200020022f01283b0001200041046a2005360200200041086a2002290348370200200041036a2002412a6a2d00003a0000200041106a200241c8006a41086a290300370200200041186a200241c8006a41106a290300370200200041206a200241c8006a41186a2802003602000bde0506067f017e017f017e017f017e230041206b220224000240024020012802042203450d00200128020022042d0000210520012003417f6a22063602042001200441016a360200024002400240200541037122074103460d0002400240024020070e03000102000b2005410276ad21080c040b410121072006450d0220042d0001210620012003417e6a3602042001200441026a3602002006410874200572220141ffff0371418002490d02200141fcff0371410276ad21080c030b4101210720064103490d01200441036a2d0000210620042f0001210920012003417c6a3602042001200441046a3602002009200641107472410874200572220141808004490d012001410276ad21080c020b024020054102762209410c4b0d0002400240024020090e0d00030303010303030303030302000b20064104490d052004350001210820012003417b6a3602042001200441056a36020020084280808080045421074200210a0c060b20064108490d04200429000121082001200341776a3602042001200441096a3602002008428080808080808080015421074200210a0c050b20064110490d03200441096a290000210a2004290001210820012003416f6a3602042001200441116a360200200a428080808080808080015421070c040b200941046a220641104b0d022003417e6a2103200441026a21044100210541012107200241186a210b420021084200210a03402003417f460d01200241106a2004417f6a3100004200200541037441f8007110de0520012003360204200120043602002003417f6a2103200441016a2104200b290300200a84210a20022903102008842108200541016a220541ff01712006490d000b2002427f427f41e80020094103746b41f8007110df052008200229030058200a200241086a290300220c58200a200c511b21070c030b0c020b4200210a410021070c010b410121070b20002008370308200041106a200a37030020002007ad370300200241206a24000bd28f010b077f017e037f027e017f057e057f017e057f027e027f230041f0096b220224000240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020012802042203450d00200128020022042d0000210520012003417f6a22063602042001200441016a360200200541174b0d1920050e180102030405060708090a0b0c0d0e0f101112131415161718010b200041183602000c360b2006450d3420042d0001210620012003417e6a22073602042001200441026a360200200641064b0d34410121080240024002400240024002400240024020060e0707000102030406070b200241d0076a2001107720022802d0072205450d3b20022902d4072109410221080c060b20074108490d3a200429000221092001200341766a36020420012004410a6a360200410321080c050b200241d0076a2001107720022802d0072205450d3920022902d4072109410421080c040b200241086a2001107520022802080d38200128020441186e220a41186c2204417f4c0d25200228020c210b0240024020040d00410421050c010b2004102a2205450d270b0240200b450d004100210841002104410021060340200241b0046a200110770240024020022802b0042207450d0020022902b4042109200241d0076a2001107720022802d0070d012009a7450d002007102c0b02402006450d002005210103400240200141046a280200450d002001280200102c0b0240200141106a280200450d002001410c6a280200102c0b200141186a2101200441686a22040d000b0b200a0d040c3b0b200641016a210320022802d807210c20022903d007210d02402006200a470d0020082003200820034b1b220aad42187e220e422088a70d2a200ea7220f4100480d2a0240024020060d00200f102a21050c010b20052004200f102e21050b2005450d290b200520046a22062007360200200641146a200c3602002006410c6a200d370200200641046a2009370200200841026a2108200441186a210420032106200b2003470d000b0b2005450d38200bad422086200aad842109410521080c030b200241106a2001107520022802100d372001280204410c6e220c410c6c2204417f4c0d242002280214210a0240024020040d00410421050c010b2004102a2205450d260b02400240200a450d004100210841002104410021060340200241d0076a2001107720022802d007450d02200641016a2103200241b0046a41086a2207200241d0076a41086a280200360200200220022903d0073703b00402402006200c470d0020082003200820034b1b220cad420c7e2209422088a70d2a2009a7220b4100480d2a0240024020060d00200b102a21050c010b20052004200b102e21050b2005450d290b200520046a220620022903b004370200200641086a2007280200360200200841026a21082004410c6a210420032106200a2003470d000b0b2005450d38200aad422086200cad842109410621080c030b02402006450d002005210103400240200141046a280200450d002001280200102c0b2001410c6a2101200441746a22040d000b0b200c450d370b2005102c0c360b200241d0076a2001107720022802d0072205450d3520022902d4072109410721080b20004100360200200041106a20093702002000410c6a2005360200200041086a2008360200200041186a200241e0086a41f80010db051a0c350b02402006450d0020042d0001210520012003417e6a3602042001200441026a36020020050d00200241186a2001107520022802180d0020012802044190016e22074190016c2204417f4c0d21200228021c210c0240024020040d00410821080c010b2004102a2208450d230b02400240200c450d004100210641002104410021050340200241e0086a2001108f0220022802e0084118460d02200541016a2103200241d0076a200241e0086a41900110db051a024020052007470d0020062003200620034b1b2207ad4290017e2209422088a70d272009a7220a4100480d270240024020050d00200a102a21080c010b20082004200a102e21080b2008450d260b200820046a200241d0076a41900110db051a200641026a210620044190016a210420032105200c2003470d000b0b2008450d012000200836020420004101360200200041086a200cad4220862007ad84370200200041106a200241b0046a41800110db051a0c360b02402005450d002008210103402001107320014190016a2101200441f07e6a22040d000b0b2007450d002008102c0b200041183602000c340b02402006450d0020012003417e6a3602042001200441026a3602000b200041183602000c330b02402006450d0020042d0001210520012003417e6a3602042001200441026a36020020050d00200241206a200110c2022002290320a70d002002290328210920004103360200200041086a2009370300200041106a200241e0086a41800110db051a0c330b200041183602000c320b02402006450d0020042d0001210520012003417e6a3602042001200441026a36020020050d00200241d0076a200110800120022802d00722010d160b200041183602000c310b02402006450d0020012003417e6a3602042001200441026a3602000b200041183602000c300b02402006450d0020042d0001210520012003417e6a3602042001200441026a360200200541034b0d00024002400240024020050e0400010203000b200241d0076a2001108d0220022d00d0074102460d03200241b0046a41086a2203200241dc076a290200370300200241b0046a41106a2205200241e4076a290200370300200241b0046a41186a2206200241ec076a290200370300200220022902d4073703b00420022802d0072104200241306a2001108e022002290330a70d03200241306a41106a29030021092002290338210d20024190046a41186a200629030037030020024190046a41106a200529030037030020024190046a41086a2003290300370300200220022903b00437039004410121010c310b200241d0076a2001108d0220022d00d0074102460d02200241b8046a200241dc076a290200370300200241b0046a41106a200241e4076a290200370300200241c8046a200241ec076a290200370300200220022902d4073703b00420022802d0072104200241e0006a2001108e022002290360a70d02200241e0006a41106a29030021092002290368210d200241c8006a2001108e022002290348a70d02200241c8006a41106a29030021102002290350211120024190046a41186a200241b0046a41186a29030037030020024190046a41106a200241b0046a41106a29030037030020024190046a41086a200241b0046a41086a290300370300200220022903b00437039004410221010c300b200241d0076a2001108d0220022d00d0074102460d01200241c8066a41086a200241dc076a290200370300200241c8066a41106a200241e4076a290200370300200241c8066a41186a200241ec076a290200370300200220022902d4073703c80620022802d0072104200241d0076a2001108d0220022d00d0074102460d01200241b0046a41206a2203200241d0076a41206a280200360200200241b0046a41186a200241d0076a41186a290300370300200241b0046a41106a200241d0076a41106a290300370300200241b0046a41086a200241d0076a41086a290300370300200220022903d0073703b004200241f8006a2001108e022002290378a70d01200241f8006a41106a29030021122002290380012113200241c8056a41186a200241c8066a41186a2903002209370300200241c8056a41106a200241c8066a41106a290300220d37030020024190046a41086a200241c8066a41086a29030037030020024190046a41106a200d37030020024190046a41186a2009370300200220022903c80637039004200241b0046a41086a2903002109200241b0046a41186a2903002110200241b0046a41106a29030021112003350200211420022903b004210d410321010c2f0b200241d0076a2001108d0220022d00d0074102460d00200241b0046a41086a2203200241dc076a290200370300200241b0046a41106a2205200241e4076a290200370300200241b0046a41186a2206200241ec076a290200370300200220022902d4073703b00420022802d007210420024190016a2001108e02200229039001a70d0020024190016a41106a2903002109200229039801210d20024190046a41086a200329030037030020024190046a41106a200529030037030020024190046a41186a2006290300370300200220022903b00437039004410421010c2e0b200041183602000c2f0b2006450d2b20042d0001210520012003417e6a22153602042001200441026a3602002005410f4b0d2b4104211602400240024002400240024002400240024002400240024002400240024020050e1000010239030405060708090a0b0c0d0e000b200241d0076a2001108d0220022d00d0074102460d392002200241eb076a2f00003b01b004200241dc076a290200210d200241e7076a2800002117200241e6076a2d00002118200241e5076a2d00002119200241e4076a2d0000210f200241ed076a2d0000210b200241ee076a2d0000210c200241ef076a2d00002107200241f0076a280200210a20022902d407210920022802d0072106200241a8016a2001108e0220022903a801a70d3920012802042204450d39200241b8016a290300211a20022903b001210e200128020022032d0000210820012004417f6a360204410121162001200341016a360200200841024b0d39200220022f01b0043b01c6050c380b200241c0016a2001108e0220022903c001a70d38200241d0016a290300210d20022903c8012109200220022f01c8063b01c605200241d9066a290000211a20022900d106210e20022d00ca06210b20022d00cb06210c20022d00cc06210720022800cd06210a410221160c370b200241d8016a2001108e0220022903d801a70d37200241e8016a290300210d20022903e0012109200220022f00b5043b01c605200241c6046a290100211a20022901be04210e20022800b104211720022d00b704210b20022d00b804210c20022d00b904210720022801ba04210a410321160c360b200241f0016a2001107520022802f0010d3620022802f4012106200220022f01d0073b01c60542002109410521164200210d0c350b200241f8016a2001107520022802f8010d35200128020441246e221b41246c2204417f4c0d2420022802fc01211c0240024020040d00410421060c010b2004102a2206450d260b0240201c450d004123210541002108410021040340200241d0076a2001108d02200220022f00ef073b01c805024020022d00d00722074102470d00201b450d382006102c0c380b200441016a210320022800eb07210c20022d00ea07210a20022d00e907210b20022d00e807210f20022903e007210920022903d807210d20022802d407211920022d00d307211820022d00d207211720022d00d107211620022d00f107211d20022d00f207211e20022d00f3072115200220022f01c8053b01c80602402004201b470d0020082003200820034b1b221bad42247e220e422088a70d29200ea7221f4100480d290240024020040d00201f102a21060c010b20062005415d6a201f102e21060b2006450d280b200620056a220441776a200a3a0000200441766a200b3a0000200441756a200f3a0000200441606a20183a00002004415f6a20173a00002004415e6a20163a00002004415d6a20073a00002004416d6a2009370000200441656a200d370000200441616a2019360000200441786a200c3600002004417c6a20022f01c8063b00002004417e6a201d3a00002004417f6a201e3a0000200420153a0000200841026a2108200541246a210520032104201c2003470d000b0b2006450d35201cad422086201bad842109200220022f01b0043b01c6054200210d410621160c340b410721160c330b2015450d3320042d0002210820012003417d6a3602042001200441036a360200200841034f0d33200220022f01d0073b01c605410821160c320b200241d0076a2001108d0220022d00d0074102460d322002200241eb076a2f00003b01c605200241dc076a290200210d200241e7076a2800002117200241e6076a2d00002118200241e5076a2d00002119200241e4076a2d0000210f200241ed076a2d0000210b200241ee076a2d0000210c200241ef076a2d00002107200241f0076a280200210a20022902d407210920022802d0072106410921160c310b20024180026a200110752002280280020d312002280284022106200220022f0190043b01c60542002109410a21164200210d0c300b410b21160c2f0b410c21160c2e0b200241d0076a200110820120022802d0072206450d2e200220022f01b0043b01c60520022902d40721094200210d410d21160c2d0b41002105200241003a00f0072003417e6a21082003417d6a21030340024020082005470d00200541ff0171450d2f200241003a00f0070c2f0b200241d0076a20056a200420056a220641026a2d00003a0000200120033602042001200641036a3602002002200541016a22063a00f0072003417f6a21032006210520064120470d000b200220022f01ee073b01c605200241df076a290000210d20022900d707210920022801ea07211720022d00e907211820022d00e807211920022d00e707210f20022800d307210620022d00d207211d20022d00d107211e20022d00d0072108410e21160c2c0b410f21160c2b0b20154104490d2b2004280002210620012003417a6a3602042001200441066a360200200241d0076a2001107e20022802d007450d2b200220022f01b0043b01c605200241d8076a350200210d20022903d0072109411021160c2a0b02402006450d0020042d0001210520012003417e6a3602042001200441026a36020020050d00200241c8066a200110e20120022d00c8064101460d00200241c8056a200241c8066a41017241800110db051a200241c8066a2001107720022802c80622010d130b200041183602000c2d0b2006450d2720042d0001210520012003417e6a221d3602042001200441026a360200200541144b0d27410e21160240024002400240024002400240024002400240024002400240024002400240024002400240024020050e15000102030405060708090a0b0c3a0d0e0f10111213000b41002105200241003a00f0072003417e6a21082003417d6a21030340024020082005470d00200541ff0171450d3c200241003a00f0070c3c0b200241d0076a20056a200420056a220641026a2d00003a0000200120033602042001200641036a3602002002200541016a22063a00f0072003417f6a21032006210520064120470d000b200220022f01ee073b01b004200241df076a290000210920022900d707210d20022801ea07210f20022d00e907210b20022d00e807210a20022d00e707210c20022800d307210720022d00d207211820022d00d107211920022d00d007211720024188026a2001108e02200229038802a70d3a20024198026a290300211a200229039002210e200220022f01b0043b01c405410121160c390b200241a0026a2001107520022802a0020d3920022802a4022107200220022f01d0073b01c405410221160c380b200241a8026a2001107520022802a8020d3820012802042204450d3820022802ac022107200128020022052d0000210320012004417f6a3602042001200541016a360200200341ff0071221941064b0d38200220022f01d0073b01c40520034107762117410321160c370b200241b0026a2001107520022802b0020d3720012802042204450d3720022802b4022107200128020022052d0000210320012004417f6a3602042001200541016a360200200341ff0071221941064b0d37200220022f01d0073b01c40520034107762117410421160c360b201d41034d0d362004280002210720012003417a6a3602042001200441066a360200200220022f01d0073b01c405410521160c350b41002105200241003a00f0072003417e6a21082003417d6a21030340024020082005470d00200541ff0171450d37200241003a00f0070c370b200241d0076a20056a200420056a220641026a2d00003a0000200120033602042001200641036a3602002002200541016a22063a00f0072003417f6a21032006210520064120470d000b200220022f01ee073b01c405200241df076a290000210920022900d707210d20022801ea07210f20022d00e907210b20022d00e807210a20022d00e707210c20022800d307210720022d00d207211820022d00d107211920022d00d0072117410621160c340b41002105200241003a00f0072003417e6a21082003417d6a21030340024020082005470d00200541ff0171450d36200241003a00f0070c360b200241d0076a20056a200420056a220641026a2d00003a0000200120033602042001200641036a3602002002200541016a22063a00f0072003417f6a21032006210520064120470d000b200220022f01ee073b01c405200241df076a290000210920022900d707210d20022801ea07210f20022d00e907210b20022d00e807210a20022d00e707210c20022800d307210720022d00d207211820022d00d107211920022d00d0072117410721160c330b41002105200241003a00f0072003417e6a21082003417d6a21030340024020082005470d00200541ff0171450d35200241003a00f0070c350b200241d0076a20056a200420056a220641026a2d00003a0000200120033602042001200641036a3602002002200541016a22063a00f0072003417f6a21032006210520064120470d000b200220022f01ee073b01c405200241df076a290000210920022900d707210d20022801ea07210f20022d00e907210b20022d00e807210a20022d00e707210c20022800d307210720022d00d207211820022d00d107211920022d00d0072117410821160c320b41002105200241003a00f0072003417e6a2107417d21060340024020072005470d00200541ff0171450d34200241003a00f0070c340b200241d0076a20056a200420056a220841026a2d00003a00002001200320066a3602042001200841036a3602002002200541016a22083a00f0072006417f6a21062008210520084120470d000b200220022f01ee073b01c805200320086b2203417e6a4104490d32200241df076a290000210920022900d707210d20022801ea07210f20022d00e907210b20022d00e807210a20022d00e707210c20022800d307210720022d00d207211820022d00d107211920022d00d0072117200420086a220441026a280000210620012003417a6a22053602042001200441066a220836020020054104490d322008350000210e2001200341766a36020420012004410a6a360200200220022f01c8053b01c4054200211a410921160c310b41002105200241003a00f0072003417e6a21082003417d6a21030340024020082005470d00200541ff0171450d33200241003a00f0070c330b200241d0076a20056a200420056a220641026a2d00003a0000200120033602042001200641036a3602002002200541016a22063a00f0072003417f6a21032006210520064120470d000b200220022f01ee073b01c405200241df076a290000210920022900d707210d20022801ea07210f20022d00e907210b20022d00e807210a20022d00e707210c20022800d307210720022d00d207211820022d00d107211920022d00d0072117410a21160c300b200241b8026a2001107520022802b8020d3020022802bc022107200220022f01d0073b01c405410b21160c2f0b201d41034d0d2f2004280002210720012003417a6a3602042001200441066a360200200220022f0190043b01c405410c21160c2e0b41002105200241003a00f0072003417e6a21082003417d6a21030340024020082005470d00200541ff0171450d30200241003a00f0070c300b200241d0076a20056a200420056a220641026a2d00003a0000200120033602042001200641036a3602002002200541016a22063a00f0072003417f6a21032006210520064120470d000b200220022f01ee073b01c405200241df076a290000210920022900d707210d20022801ea07210f20022d00e907210b20022d00e807210a20022d00e707210c20022800d307210720022d00d207211820022d00d107211920022d00d0072117410d21160c2d0b41002105200241003a00f0072003417e6a21082003417d6a21030340024020082005470d00200541ff0171450d2f200241003a00f0070c2f0b200241d0076a20056a200420056a220641026a2d00003a0000200120033602042001200641036a3602002002200541016a22063a00f0072003417f6a21032006210520064120470d000b200220022f01ee073b01c405410f2116200241d0076a410f6a290000210920022900d707210d20022801ea07210f20022d00e907210b20022d00e807210a20022d00e707210c20022800d307210720022d00d207211820022d00d107211920022d00d00721170c2c0b41002105200241003a00f0072003417e6a21072003417d6a21060340024020072005470d00200541ff0171450d2e200241003a00f0070c2e0b200241d0076a20056a200420056a220841026a2d00003a0000200120063602042001200841036a3602002002200541016a22083a00f0072006417f6a21062008210520084120470d000b200220022900d707220d3703c806200220022f01ee073b00df06200220022801ea07220f3600db06200220022d00e907220b3a00da06200220022d00e807220a3a00d906200220022d00e707220c3a00d8062002200241df076a29000022093703d0062003417e6a2008460d2c20022800d307210720022d00d207211820022d00d107211920022d00d0072117200420086a220441026a2d00002108200120063602042001200441036a360200200841064b0d2c200220022f00df063b01c405411021160c2b0b411121160c2a0b411221160c290b200241d0076a2001107720022802d0072207450d29200220022f01b0043b01c40520022902d407210d411321160c280b200241d0076a2001107720022802d0072207450d28200220022f01b0043b01c40520022902d407210d411421160c270b41002105200241003a00f0072003417e6a21082003417d6a21030340024020082005470d00200541ff0171450d29200241003a00f0070c290b200241d0076a20056a200420056a220641026a2d00003a0000200120033602042001200641036a3602002002200541016a22063a00f0072003417f6a21032006210520064120470d000b200241bd046a200241df076a2900002209370000200220022900d707220d3700b504200220022f01ee0722013b01cc04200220022801ea07220f3602c804200220022d00e907220b3a00c704200220022d00e807220a3a00c604200220022d00e707220c3a00c504200220022800d30722073600b104200220022d00d20722183a00b00420022d00d107211920022d00d0072117200220013b01c405411521160c260b200241d0076a200110fd0220022d00d0074105470d11200041183602000c2b0b200241d0076a200110fd0220022d00d0074105470d11200041183602000c2a0b2006450d2220042d0001210520012003417e6a360204410221032001200441026a360200200541054b0d220240024002400240024020050e06001701020304000b200241d0076a200110820120022802d0072204450d26200241d8076a280200210820022802d4072106200241c0026a2001108e0220022903c002a7450d152006450d262004102c0c260b200241d0076a2001108d0220022d00d0074102460d25200220022902d407221a3703c805200241dc076a290200210d200241e4076a290200210e200241ec076a290200210920022802d007210420022802cc052108201aa72106410321030c150b410421030c140b410521030c130b200241d0076a2001108d0220022d00d0074102460d22200220022902d407221a3703c805200241dc076a290200210d200241e4076a290200210e200241ec076a290200210920022802d007210420022802cc052108201aa72106410621030c120b2006450d2020042d0001210520012003417e6a3602042001200441026a360200200541044b0d200240024002400240024020050e050001020304000b41002105200241003a00f0072003417e6a21082003417d6a21030340024020082005470d00200541ff0171450d26200241003a00f0070c260b200241d0076a20056a200420056a220641026a2d00003a0000200120033602042001200641036a3602002002200541016a22063a00f0072003417f6a21032006210520064120470d000b200241bd046a200241df076a2900002209370000200220022900d707220d3700b504200220022801ea07220a3602c804200220022d00e907220b3a00c704200220022d00e807220f3a00c604200220022d00e70722193a00c504200220022800d307220c3600b104200220022d00d20722183a00b00420022d00d007211720022d00d1072116200220022f01ee073b01c405200220022f01c8063b01c205410121010c230b41002105200241003a00f0072003417e6a21082003417d6a21030340024020082005470d00200541ff0171450d25200241003a00f0070c250b200241d0076a20056a200420056a220641026a2d00003a0000200120033602042001200641036a3602002002200541016a22063a00f0072003417f6a21032006210520064120470d000b200241bd046a200241df076a2900002209370000200220022900d707220d3700b504200220022801ea07220a3602c804200220022d00e907220b3a00c704200220022d00e807220f3a00c604200220022d00e70722193a00c504200220022800d307220c3600b104200220022d00d20722183a00b00420022d00d007211720022d00d1072116200220022f01ee073b01c405200220022f01c8063b01c205410221010c220b41002105200241003a00f007410220036b21072003417d6a210603400240200720056a0d00200541ff0171450d24200241003a00f0070c240b200241d0076a20056a200420056a220841026a2d00003a0000200120063602042001200841036a3602002002200541016a22083a00f0072006417f6a21062008210520084120470d000b200241bd046a200241df076a2900002209370000200220022900d707220d3700b504200220022801ea07220a3602c804200220022d00e907220b3a00c704200220022d00e807220f3a00c604200220022d00e70722193a00c504200220022800d307220c3600b104200220022d00d20722183a00b00420022d00d007211720022d00d1072116200220022f01ee073b01c60541002105200241003a00f007200420086a2107200820036b41026a210303400240200320056a0d00200541ff0171450d24200241003a00f0070c240b200241d0076a20056a200720056a220441026a2d00003a0000200120063602042001200441036a3602002002200541016a22043a00f0072006417f6a21062004210520044120470d000b200241bd046a200241df076a290000221a370000200220022900d707220e3700b504200220022801ea07221e3602c804200220022d00e907221d3a00c704200220022d00e80722073a00c604200220022d00e70722083a00c504200220022800d30722063600b104200220022d00d20722053a00b00420022d00d007210420022d00d1072103200220022f01ee073b01c205200220022f01c6053b01c405410321010c210b200241d0076a200110820120022802d007220c450d21200220022f01b0043b01c405200220022f01c8063b01c20520022902d407210d410421010c200b41002105200241003a00f0072003417e6a21082003417d6a21030340024020082005470d00200541ff0171450d22200241003a00f0070c220b200241d0076a20056a200420056a220641026a2d00003a0000200120033602042001200641036a3602002002200541016a22063a00f0072003417f6a21032006210520064120470d000b200241bd046a200241df076a2900002209370000200220022801ea073602c804200220022d00e9073a00c704200220022f00e7073b00c504200220022f01ee073b01cc04200220022900d707220d3700b504200220022800d307220c3600b104200220022d00d20722183a00b00420022d00d007211720022d00d1072116200241d8066a220120022900c504370300200241e0066a200241cd046a2d00003a0000200241d0066a20093703002002200d3703c80620012d0000211920022d00d906210f20022d00da06210b20022800db06210a200220022f00df063b01c405200220022f01c8053b01c205410521010c1f0b024002402006450d0020042d0001210520012003417e6a3602042001200441026a36020020050d00200241d8026a2001107520022802d802450d010b200041183602000c280b20022802dc0221012000410e36020020002001360204200041086a200241e0086a41880110db051a0c270b02402006450d0020042d0001210520012003417e6a3602042001200441026a36020020050d00200241d0076a2001107720022802d00722010d110b200041183602000c260b02402006450d0020042d0001210520012003417e6a3602042001200441026a360200200541024b0d0002400240024020050e03000102000b200241e0026a2001108e0220022903e002a70d02200241f0026a290300210920022903e802210d200241d0076a2001108d0220022d00d0074102460d02200241b8046a200241dc076a290200370300200241c0046a200241e4076a290200370300200241c8046a200241ec076a290200370300200220022902d4073703b00420022802d0072101410121040c1e0b200241f8026a2001107520022802f8020d0120022802fc022101200241b0046a41186a200241d0076a41186a290300370300200241b0046a41106a200241d0076a41106a290300370300200241b0046a41086a200241d0076a41086a290300370300200220022903d0073703b004410221040c1d0b20024180036a200110752002280280030d002002280284032101200241b0046a41186a200241d0076a41186a290300370300200241b0046a41106a200241d0076a41106a290300370300200241b0046a41086a200241d0076a41086a290300370300200220022903d0073703b004410321040c1c0b200041183602000c250b2006450d1820042d0001210520012003417e6a3602042001200441026a360200200541044b0d180240024002400240024020050e050001020304000b200241e0086a200110fe0220022d00d0094102460d1c200241d8076a20024190096a290300370300200241e0076a20024198096a290300370300200220022f00f7083b01c20520022002290388093703d007200241f3086a280000210c200241fc086a280200210420022d00f208210a20022d00f108210b20022d00f008210320022903e808210920022903e008210d20022d00f908210520022d00fa08210620022d00fb08210f200229038009210e200220022f00bf093b01c005200241b0096a2903002120200241bb096a2800002101200241d0096a290300212120022903a809211420022d00ba09210820022d00b909211620022d00b809211d20022903a009211a20022802c409211e20022903c809211320022d00c309211520022d00c209211b20022d00c109211c4101211f0c1d0b20024188036a200110c202200229038803a70d1b2002290390032109200241b0046a2001107720022802b0042207450d1b200241d0076a41086a200241e0086a41086a290300370300200241d0076a41106a200241e0086a41106a290300370300200220022f01c8063b01c205200220022903e0083703d007200220022f0190043b01c00520022902b404210d420021144102211f420021200c1c0b200241e0086a2001108d0220022d00e0084102460d1a2002200241fb086a2f00003b01b004200241ec086a2902002109200241f7086a280000210c200241f6086a2d0000210a200241f5086a2d0000210b200241f4086a2d00002103200241fd086a2d00002105200241fe086a2d00002106200241ff086a2d0000210f20024180096a280200210420022902e408210d20022802e0082107200241a8036a2001108e0220022903a803a70d1a200241b8036a290300210e20022903b003212020024198036a200110c202200229039803a70d1a20022903a003211a200241e0086a2001107720022802e008450d1a200241e0076a200e370300200220203703d807200220022f01b0043b01c205200220022f0190043b01c0052002200241e8086a2802003602d00720022903e008210e420021144103211f420021200c1b0b200241d0036a2001108e0220022903d003a70d19200241e0036a290300210e20022903d803211a200241c0036a200110c20220022903c003a70d1920022903c803212041002103200241003a0080092001280204417f6a2104024003402004417f460d01200241e0086a20036a200128020022052d00003a0000200120043602042001200541016a3602002002200341016a22053a0080092004417f6a21042005210320054120470d000b200241d8066a200241f7086a2900002221370300200241e0066a200241ff086a2d00003a0000200241d0066a200241ef086a2900002209370300200220022900e708220d3703c80620022800e308210720022d00e208211920022d00e108211820022d00e008211720022800db06210c20022d00da06210a20022d00d906210b200220022f00df063b019004200241e0086a2001107720022802e0082204450d1a2021a721032002201a3703d007200220022f0190043b01c205200220203703e007200220022f01b0043b01c0052002200e3703d80720022902e408210e420021144104211f420021200c1b0b200341ff0171450d19200241003a0080090c190b41002105200241003a0080092003417e6a21072003417d6a21060340024020072005470d00200541ff0171450d1a200241003a0080090c1a0b200241e0086a20056a200420056a220841026a2d00003a0000200120063602042001200841036a3602002002200541016a22083a0080092006417f6a21062008210520084120470d000b200241d8066a200241f7086a290000221a370300200241e0066a200241ff086a2d00003a0000200241d0066a200241ef086a2900002209370300200220022900e708220d3703c80620022800e308210720022d00e208211920022d00e108211820022d00e008211720022800db06210c20022d00da06210a20022d00d906210b200220022f00df063b01c6052003417e6a2008460d18200420086a221641026a2d0000211d200120063602042001201641036a360200201d41014b0d184100210502400240201d0e020100010b41002104200241003a008009200820036b41036a2106200320086b417c6a210303400240200620046a0d00200441ff0171450d1b200241003a0080090c1b0b200241e0086a20046a201620046a220541036a2d00003a0000200120033602042001200541046a3602002002200441016a22053a0080092003417f6a21032005210420054120470d000b200241bd046a200241ef086a290000370000200220022f01fe0822013b01f003200220022900e7083700b504200220022800e3083600b104200220022d00e2083a00b004200220022801fa083602c804200220022d00f9083a00c704200220022f00f7083b00c50420022d00e108210f20022d00e0082106200220013b01cc0420022902b404210e20022802b0042104200241d8066a20013b0100200241d0066a200241c4046a290200370300200220022902bc043703c806410121050b201aa72103200241d0076a41106a200241c8066a41106a2f01003b0100200241d0076a41086a200241c8066a41086a290300370300200241e6076a20024194046a2f01003b0100200220022903c8063703d007200220022f01c6053b01c20520022002280190043601e207200220022f01c4053b01c005420021144105211f420021200c190b02402006450d0020042d0001210520012003417e6a3602042001200441026a360200200541024b0d00024002400240024020050e03000102000b200241d0076a2001108f0220022802d0074118460d03200241e0086a200241d0076a41900110db051a419001102a2204450d142004200241e0086a41900110db051a410121010c020b200241e0086a2001108d024102210120022d00e0084102460d02200241e0056a200241fc086a290200220d370300200241d8056a200241f4086a2902002209370300200241ec086a290200211a20022802e008210420022902e408210e0c010b200241e0086a2001108d0220022d00e0084102460d01200241d0066a200241ec086a290200370300200241d8066a200241f4086a290200370300200241c8066a41186a200241fc086a290200370300200220022902e4083703c80620022802e0082104200241d0076a2001108f0220022802d0074118460d01200241e0086a200241d0076a41900110db051a419001102a2203450d122003200241e0086a41900110db051a200241c8056a41186a200241c8066a41186a290300220d370300200241c8056a41106a200241c8066a41106a2903002209370300200241d0066a290300211a20022903c806210e410321010b2000200136020420004112360200200041246a200d3702002000411c6a2009370200200041146a201a3702002000410c6a200e3702002000412c6a2003360200200041086a2004360200200041306a200241b0046a41e00010db051a0c240b200041183602000c230b2006450d1520042d0001210520012003417e6a22063602042001200441026a36020020050d1520064104490d152004280002211820012003417a6a3602042001200441066a360200200241e0086a2001107720022802e008220f450d15200241e8086a280200211720022802e4082119200241e8036a2001107520022802e8030d142001280204410c6e220c410c6c2204417f4c0d0e20022802ec03210a0240024020040d00410421080c010b2004102a2208450d100b0240200a450d004100210641002104410021050340200241e0086a2001107720022802e0082207450d15200541016a210320022902e408210902402005200c470d0020062003200620034b1b220cad420c7e220d422088a70d13200da7220b4100480d130240024020050d00200b102a21080c010b20082004200b102e21080b2008450d120b200820046a22052007360200200541046a2009370200200641026a21062004410c6a210420032105200a2003470d000b0b2008450d14200f450d15200128020422034104490d1220012802002206280000210b20012003417c6a22043602042001200641046a36020020044104490d11200628000421162001200341786a22073602042001200641086a36020041002104200241003a00a009200341776a21030340024020072004470d000240200441ff0171450d00200241003a00a0090b02402019450d00200f102c0b0240200a450d00200a410c6c21042008210103400240200141046a280200450d002001280200102c0b2001410c6a2101200441746a22040d000b0b200c450d172008102c0c170b200241e0086a20046a200620046a220541086a2d00003a0000200120033602042001200541096a3602002002200441016a22053a00a0092003417f6a210320052104200541c000470d000b200241d0076a41386a2201200241e0086a41386a290300370300200241d0076a41306a2204200241e0086a41306a290300370300200241d0076a41286a2203200241e0086a41286a290300370300200241d0076a41206a2205200241e0086a41206a290300370300200241d0076a41186a2206200241e0086a41186a290300370300200241d0076a41106a2207200241e0086a41106a290300370300200241d0076a41086a221d200241e0086a41086a290300370300200220022903e0083703d007200f0d0d0c150b02402006450d0020012003417e6a3602042001200441026a3602000b200041183602000c210b02402006450d0020012003417e6a3602042001200441026a3602000b200041183602000c200b02402006450d0020012003417e6a3602042001200441026a3602000b200041183602000c1f0b2006450d0120042d0001210520012003417e6a360204410221032001200441026a360200200541034b0d01024002400240024020050e0400030102000b200241d0076a2001107720022802d0072204450d0420022902d4072109410121030c020b200241d0076a2001108d0220022d00d0074102460d03200241dc076a290200211a200241e4076a2902002120200241ec076a290200210d20022802d007210420022902d40721094200210e410321030c010b200241d0076a2001108d0220022d00d0074102460d02200241b0046a41086a2203200241dc076a290200370300200241c0046a2205200241e4076a290200370300200241c8046a2208200241ec076a290200370300200220022902d4073703b00420022802d0072104200241d0076a2001107720022802d007450d02200241d0076a41086a280200210620022903d007210e2003290300211a200529030021202008290300210d20022903b0042109410421030b20002003360204200041173602002000412c6a200e370200200041246a200d3702002000411c6a2020370200200041146a201a370200200041346a20063602002000410c6a2009370200200041086a2004360200200041386a200241e0086a41d80010db051a0c1e0b200041183602000c1d0b200041183602000c1c0b200041086a20022902d4073702002000200136020420004104360200200041106a200241e0086a41800110db051a0c1b0b200220022902cc063703e008200241e0086a41086a200241c8056a41800110db051a200241d0076a200241e0086a41880110db051a200241b0046a200241d0076a41880110db051a2000200136020420004108360200200041086a200241b0046a41880110db051a0c1a0b200241b0046a41206a200241d0076a41206a2903002209370300200241b0046a41186a200241d0076a41186a290300220d370300200241b0046a41106a200241d0076a41106a290300220e370300200241b0046a41086a200241d0076a41086a290300221a370300200220022903d00722203703b0042000410a360200200020203702042000410c6a201a370200200041146a200e3702002000411c6a200d370200200041246a20093702002000412c6a200241e0086a41e40010db051a0c190b200241b0046a41206a200241d0076a41206a2903002209370300200241b0046a41186a200241d0076a41186a290300220d370300200241b0046a41106a200241d0076a41106a290300220e370300200241b0046a41086a200241d0076a41086a290300221a370300200220022903d00722203703b0042000410b360200200020203702042000410c6a201a370200200041146a200e3702002000411c6a200d370200200041246a20093702002000412c6a200241e0086a41e40010db051a0c180b200241d0026a290300210e20022903c802210d410121030b2000410c360200200041206a200e370200200041186a200d370200200041286a2009370200200041146a2008360200200041106a20063602002000410c6a2004360200200041086a2003360200200041306a200241e0086a41e00010db051a0c160b200041086a20022902d407370200200020013602042000410f360200200041106a200241e0086a41800110db051a0c150b200241b0046a41386a221e2001290300370300200241b0046a41306a22012004290300370300200241b0046a41286a22042003290300370300200241b0046a41206a22032005290300370300200241b0046a41186a22052006290300370300200241b0046a41106a22062007290300370300200241b0046a41086a2207201d290300370300200220022903d0073703b004200041246a2016360200200041206a200b3602002000411c6a200a360200200041186a200c360200200041146a2008360200200041106a20173602002000410c6a2019360200200041086a200f3602002000201836020420004113360200200041286a20022903b004370200200041306a2007290300370200200041386a2006290300370200200041c0006a2005290300370200200041c8006a2003290300370200200041d0006a2004290300370200200041d8006a2001290300370200200041e0006a201e29030037020020004188016a200241c8066a41206a29030037030020004180016a200241c8066a41186a290300370300200041f8006a200241c8066a41106a290300370300200041f0006a200241c8066a41086a290300370300200041e8006a20022903c8063703000c140b103a000b1033000b1035000b02402019450d00200f102c0b0240200a450d00200a410c6c21042008210103400240200141046a280200450d002001280200102c0b2001410c6a2101200441746a22040d000b0b200c450d032008102c0c030b02402019450d00200f102c0b0240200a450d00200a410c6c21042008210103400240200141046a280200450d002001280200102c0b2001410c6a2101200441746a22040d000b0b200c450d022008102c0c020b02402005450d002008210103400240200141046a280200450d002001280200102c0b2001410c6a2101200441746a22040d000b0b200c450d002008102c0b2019450d00200f102c0b200041183602000c0c0b200041183602000c0b0b200241c8056a41086a2222200241d0076a41086a290300370300200241c8056a41106a2223200241d0076a41106a290300370300200220022f01c2053b01be05200220022903d0073703c805200220022f01c0053b01bc05200041236a200c3600002000200a3a00222000200b3a0021200041206a20033a0000200041186a2009370200200041106a200d3700002000410c6a2007360000200020193a000b200020183a000a200020173a0009200041086a201f3a000020004111360200200041306a200e3702002000412c6a20043602002000200f3a002b200020063a002a200020053a0029200020022f01be053b0027200041c8006a2023290300370200200041c0006a2022290300370200200041386a20022903c805370200200041e0006a2020370200200041d8006a2014370200200041eb006a2001360000200020083a006a200020163a0069200041e8006a201d3a0000200041d0006a201a37020020022f01bc05210120004180016a2021370200200041f8006a2013370200200041f4006a201e360200200020153a00732000201b3a00722000201c3a0071200020013b006f0c0a0b200241c8066a41186a200241b0046a41186a290300220e370300200241c8066a41106a200241b0046a41106a290300221a370300200241c8066a41086a200241b0046a41086a2903002220370300200220022903b00422213703c806200041386a2009370200200041306a200d3702002000410c6a2001360200200041086a200436020020004110360200200041106a2021370200200041186a2020370200200041206a201a370200200041286a200e370200200041c0006a200241e0086a41d00010db051a0c090b200220022f01c40522153b01c005200220022f01c2053b01be052000411f6a200a3600002000200b3a001e2000200f3a001d2000411c6a20193a0000200041146a20093700002000410c6a200d370000200041086a200c360000200020183a0007200020163a0006200020173a0005200020013a00042000410d3602002000413f6a201e3600002000201d3a003e200020073a003d2000413c6a20083a0000200041346a201a3700002000412c6a200e370000200041286a2006360000200020053a0027200020033a0026200020043a0025200020153b0023200020022f01be053b0043200041c8006a200241e0086a41c80010db051a0c080b200041183602000c070b200041183602000c060b200220022f01c40522013b01c205200041386a201a370200200041306a200e370200200041236a200f3600002000200b3a00222000200a3a0021200041206a200c3a0000200041186a2009370200200041106a200d3702002000410c6a2007360200200020183a000b200020193a000a200020173a0009200041086a20163a0000200041093602002000412c6a2006360200200020083a0029200020013b0027200041c0006a200241e0086a41d00010db051a0c050b200041183602000c040b200220022f01c60522013b01c405200041186a200d370200200041106a2009370200200041386a201a370200200041306a200e370200200041236a2017360000200020183a0022200020193a0021200041206a200f3a00002000410c6a20063602002000201d3a000b2000201e3a000a200020083a0009200041086a20163a0000200041073602002000412c6a200a360200200020073a002b2000200c3a002a2000200b3a0029200020013b0027200041c0006a200241e0086a41d00010db051a0c030b200041183602000c020b200241f0036a41186a20024190046a41186a290300220e370300200241f0036a41106a20024190046a41106a290300221a370300200241f0036a41086a20024190046a41086a2903002220370300200220022903900422213703f003200041e0006a2012370200200041d8006a2013370200200041c8006a2010370200200041c0006a2011370200200041386a2009370200200041306a200d3702002000410c6a2004360200200041086a200136020020004106360200200041106a2021370200200041186a2020370200200041206a201a370200200041286a200e370200200041d0006a2014370200200041e8006a20022903e008370300200041f0006a200241e0086a41086a290300370300200041f8006a200241e0086a41106a29030037030020004180016a200241e0086a41186a29030037030020004188016a200241e0086a41206a2903003703000c010b200041183602000b200241f0096a24000b802205017f037e087f017e037f230041800b6b22022400420221030240024002400240024002400240200129036822044202520d00200241106a20014198016a41900110db051a0c010b200241ee016a200141246a41c20010db051a200241b0026a41086a20014188016a290300370300200241b0026a41106a20014190016a290300370300200220014180016a2903003703b002200141f8006a2903002103200129037021052001280204210620012d00002107200241e00a6a41026a2208200141036a2d00003a0000200241e8026a41086a2209200141106a290200370300200241e8026a41106a220a200141186a290200370300200241e8026a41186a220b200141206a280200360200200220012f00013b01e00a200220012902083703e80202400240024020074101460d00200241a00a6a41026a20082d00003a0000200241e0066a41086a2009290300370300200241e0066a41106a200a290300370300200241e0066a41186a200b2d00003a0000200220022f01e00a3b01a00a200220022903e8023703e0060c010b200241f8076a200641067610910220022802f8072107024002402002280280082006413f7122064b0d00410021080c010b200241a00a6a41026a200720064105746a220641026a2d00003a0000200241e8066a2006410f6a290000370300200241f0066a200641176a290000370300200241f8066a2006411f6a2d00003a0000200220062f00003b01a00a200220062900073703e00620062800032106410121080b024020022802fc07450d002007102c0b20080d00410121070c010b200241f8076a41026a200241a00a6a41026a2d00003a0000200241e8026a41086a200241e0066a41086a290300370300200241e8026a41106a200241e0066a41106a290300370300200241e8026a41186a200241e0066a41186a2d00003a0000200220022f01a00a3b01f807200220022903e0063703e802410021070b200241800a6a41026a2208200241f8076a41026a2d00003a0000200241c8056a41086a2209200241e8026a41086a290300370300200241c8056a41106a220a200241e8026a41106a290300370300200241c8056a41186a220b200241e8026a41186a2d00003a0000200220022f01f8073b01800a200220022903e8023703c80502402007450d00200041013b0001200041013a0000200041036a41003a000020014198016a1092020c060b200241d7026a2009290300370000200241df026a200a290300370000200241e7026a200b2d00003a0000200220022f01800a3b01c802200220063600cb02200220022903c8053700cf02200220082d00003a00ca02200241f8076a20014198016a41900110db051a20024188096a41106a200241b0026a41106a29030037030020024188096a41086a200241b0026a41086a290300370300200220022903b0023703880941002106200241e00a6a4100109302200241800a6a41086a200241eb0a6a290000370300200241800a6a41106a200241f30a6a290000370300200241950a6a200241e00a6a41186a2209290000370000200220022900e30a3703800a20022f01e00a210c20022d00e20a210d200241a00a6a41186a4200370300200241a00a6a41106a220a4200370300200241a00a6a41086a22074200370300200242003703a00a200241e0096a41086a22014191b0c200ad4280808080e000841002220841086a290000370300200220082900003703e0092008102c20072001290300370300200220022903e009220e3703c00a2002200e3703a00a200141acb0c200ad4280808080e000841002220841086a290000370300200220082900003703e0092008102c200a20022903e009220e370300200241e00a6a41086a2007290300370300200241e00a6a41106a200e370300200920012903003703002002200e3703d00a200220022903a00a3703e00a200241086a200241e00a6a4120109401024020044201520d0020054200510d02200228020c410020022802081b2101417f21062001ad220e20032003200e541b220e200e20037d2005827d220e42ffffffff0f560d00200ea721060b200241e0096a41086a22014191b0c200ad4280808080e000841002220741086a290000370300200220072900003703e0092007102c200241c00a6a41086a22082001290300370300200220022903e0093703c00a200141a3b0c200ad42808080809001841002220741086a290000370300200220072900003703e0092007102c200241d00a6a41086a22072001290300370300200220022903e0093703d00a200220063602e009200241e00a6a41186a2209200241e0096aad4280808080c000841006220141186a290000370300200241e00a6a41106a220a200141106a290000370300200241e00a6a41086a220b200141086a290000370300200220012900003703e00a2001102c200241a00a6a41186a220f2009290300370300200241a00a6a41106a2209200a290300370300200241a00a6a41086a220a200b290300370300200220022903e00a3703a00a41c000102a2201450d02200120022903c00a370000200141086a2008290300370000200120022903d00a370010200141186a2007290300370000200120022903a00a370020200141286a200a290300370000200141306a2009290300370000200141386a200f290300370000410121072002200141c000410141004100109701200228020021082001102c0240024020084101460d000c010b200241e00a6a2006109302200241e0096a41086a200241eb0a6a290000370300200241e0096a41106a200241f30a6a290000370300200241e0096a41156a200241f80a6a290000370000200241a00a6a41086a200241800a6a41086a290300370300200241a00a6a41106a200241800a6a41106a290300370300200241a00a6a41156a200241800a6a41156a290000370000200220022900e30a3703e009200220022903800a3703a00a20022f01e00a20022d00e20a411074722101410021070b200241c0096a41156a2206200241a00a6a41156a290000370000200241c0096a41106a2208200241a00a6a41106a290300370300200241c0096a41086a2209200241a00a6a41086a290300370300200241a0096a41086a220a200241e0096a41086a290300370300200241a0096a41106a220b200241e0096a41106a290300370300200241a0096a41156a220f200241e0096a41156a290000370000200220022903a00a3703c009200220022903e0093703a00902402007450d00200241f8076a109202200041036a41003a0000200041800a3b0001200041013a00000c060b20024190056a41156a2207200629000037000020024190056a41106a2206200829030037030020024190056a41086a22082009290300370300200241f0046a41086a2209200a290300370300200241f0046a41106a220a200b290300370300200241f0046a41156a220b200f290000370000200220022903c00937039005200220022903a0093703f004200241b0056a41106a220f20024188096a41106a290300370300200241b0056a41086a221020024188096a41086a29030037030020022002290388093703b005200241e0066a41046a200241f8076a41900110db051a200241c8056a200241e0066a41940110db051a200241e8026a200241c8056a41046a41900110db051a200241ac046a2211200c200d41107472220c3b010020024188046a200337030020024180046a200537030020024190046a220d20022903b00537030020024198046a2010290300370300200241a0046a2210200f290300370300200241af046a200229039005370000200241b7046a2008290300370000200241bf046a2006290300370000200241c4046a2007290000370000200241c6013602a804200241e8026a41c6016a200c4110763a0000200220043703f803200241ce046a20014110763a0000200241cc046a220720013b0100200241cf046a20022903f004370000200241d7046a2009290300370000200241df046a200a290300370000200241e4046a200b2900003700004104102a2201450d02200242043702e406200220013602e006200241e8026a200241e0066a108b010240024020022903f8034201510d000240024020022802e40620022802e8062201460d0020022802e00621060c010b200141016a22062001490d06200141017422082006200820064b1b22084100480d060240024020010d002008102a21060c010b20022802e00620012008102e21060b2006450d05200220083602e406200220063602e00620022802e80621010b2002200141016a3602e806200620016a41003a00000c010b2002290388042002290380042203420c882204420120044201561b8021040240024020022802e406220620022802e80622016b4102490d0020022802e00621060c010b200141026a22082001490d05200641017422012008200120084b1b22014100480d050240024020060d002001102a21060c010b20022802e00620062001102e21060b2006450d04200220013602e406200220063602e00620022802e80621010b2002200141026a3602e806200620016a2004a741047420037aa7417f6a22014101200141014b1b2201410f2001410f491b723b00000b2010200241e0066a1089012002200d3602c805200241c8056a200241e0066a108a0120022802a80421080240024020022802e406220620022802e80622016b4104490d0020022802e00621060c010b200141046a22092001490d04200641017422012009200120094b1b22014100480d040240024020060d002001102a21060c010b20022802e00620062001102e21060b2006450d03200220013602e406200220063602e00620022802e80621010b2002200141046a3602e806200620016a20083600002002200241e0066a3602c8052011200241c8056a1094022002200241e0066a3602c8052007200241c8056a10940220022802e006210120022802e40621070240024020022802e80622064180024b0d00200241ee016a20012006200241c8026a10950221060c010b200241e00a6a41186a22082006ad4220862001ad841006220641186a290000370300200241e00a6a41106a2209200641106a290000370300200241e00a6a41086a220a200641086a290000370300200220062900003703e00a2006102c200241a00a6a41186a2008290300370300200241a00a6a41106a2009290300370300200241a00a6a41086a200a290300370300200220022903e00a3703a00a200241ee016a200241a00a6a4120200241c8026a10950221060b02402007450d002001102c0b2006450d04200241c8016a41086a200241c8026a41086a290300370300200241c8016a41106a200241c8026a41106a290300370300200241c8016a41186a200241c8026a41186a290300370300200241a0016a41086a20024188046a290300370300200241a0016a41106a20024190046a290300370300200241a0016a41186a20024198046a290300370300200241c0016a200241a0046a290300370300200220022903c8023703c801200220024180046a2903003703a00120022903f8032103200241106a200241e8026a41900110db051a0b200041086a20022903c801370300200041286a2003370300200041306a20022903a001370300200041206a200241c8016a41186a290300370300200041186a200241c8016a41106a290300370300200041106a200241c8016a41086a290300370300200041386a200241a0016a41086a290300370300200041c0006a200241a0016a41106a290300370300200041c8006a200241a0016a41186a290300370300200041d0006a200241a0016a41206a290300370300200041d8006a200241106a41900110db051a200041003a0000200241800b6a24000f0b41c090c600411941dc90c6001036000b1033000b1035000b20004180083b0001200041013a0000200041036a41003a0000200241e8026a1092020b200241800b6a24000bff0301067f230041f0006b22022400200241d0006a41086a220341b5e5c200ad4280808080f000841002220441086a290000370300200220042900003703502004102c200241086a41086a2205200329030037030020022002290350370308200341c7e5c200ad4280808080f000841002220441086a290000370300200220042900003703502004102c200241186a41086a22062003290300370300200220022903503703182002200136024c200241d0006a41186a2201200241cc006aad4280808080c000841006220441186a290000370300200241d0006a41106a2207200441106a2900003703002003200441086a290000370300200220042900003703502004102c200241286a41186a22042001290300370300200241286a41106a22012007290300370300200241286a41086a2207200329030037030020022002290350370328024041c000102a2203450d00200320022903083700002003200229031837001020032002290328370020200341086a2005290300370000200341186a2006290300370000200341286a2007290300370000200341306a2001290300370000200341386a2004290300370000200241d0006a200341c00010d0010240024020022802502204450d0020002002290254370204200020043602000c010b20004100360208200042013702000b2003102c200241f0006a24000f0b1033000bb30c01057f024002402000280200220141164b0d000240024002400240024002400240024002400240024002400240024020010e1700010f0f020f0f030405060708090f0a0f0b0c0d0f0f0f000b0240200041086a280200220141064b0d00024002400240024020010e0713130013010203130b200041106a280200450d122000410c6a280200102c0f0b200041106a280200450d112000410c6a280200102c0f0b0240200041146a2802002202450d002000410c6a2802002101200241186c210203400240200141046a280200450d002001280200102c0b0240200141106a280200450d002001410c6a280200102c0b200141186a2101200241686a22020d000b0b200041106a280200450d10200028020c102c0f0b0240200041146a2802002202450d002000410c6a28020021012002410c6c210203400240200141046a280200450d002001280200102c0b2001410c6a2101200241746a22020d000b0b200041106a280200450d0f200028020c102c0f0b200041106a280200450d0e2000410c6a280200102c0f0b02402000410c6a2802002202450d002000280204210120024190016c210203402001107320014190016a2101200241f07e6a22020d000b0b200041086a280200450d0d2000280204102c0f0b02402000410c6a2802002201450d0020002802042203200141f0006c6a2104034002402003410c6a2802002202450d0020032802042101200241246c210203400240024020012d0000220541034b0d0002400240024020050e0404000102040b2001410c6a280200450d03200141086a280200102c0c030b2001410c6a280200450d02200141086a280200102c0c020b2001410c6a280200450d01200141086a280200102c0c010b200141086a280200450d00200141046a280200102c0b200141246a21012002415c6a22020d000b0b200341f0006a21010240200341086a280200450d002003280204102c0b2001210320012004470d000b0b200041086a280200450d0c2000280204102c0f0b0240200041086a2d00002201410f4b0d00410120017441bfbf03710d0c024020014106470d00200041106a280200450d0d2000410c6a280200102c0f0b200041106a280200450d0c2000410c6a280200102c0f0b200041146a280200450d0b200041106a280200102c0f0b200041086a280200450d0a2000280204102c0f0b200041086a2d0000416d6a220141014b0d090240024020010e020001000b200041106a280200450d0a2000410c6a280200102c0f0b200041106a280200450d092000410c6a280200102c0f0b20002d0004417f6a220141024b0d0802400240024020010e03000102000b2000410c6a280200450d0a200041086a280200102c0f0b200041086a22012802001092022001280200102c0f0b2000410c6a22012802001092022001280200102c0f0b20002d0004417f6a220141024b0d0702400240024020010e03000102000b2000410c6a280200450d09200041086a280200102c0f0b200041086a22012802001092022001280200102c0f0b2000410c6a22012802001092022001280200102c0f0b200041086a2802004101470d06200041106a280200450d062000410c6a280200102c0f0b20002d00044104470d052000410c6a280200450d05200041086a280200102c0f0b200041086a280200450d042000280204102c0f0b200041086a2d0000417e6a220141024b0d0302400240024020010e03000102000b200041106a280200450d052000410c6a280200102c0f0b200041346a280200450d04200041306a280200102c0f0b200041306a280200450d032000412c6a280200102c0f0b02402000280204220141024b0d00024020010e03040004040b200041086a22012802001092022001280200102c0f0b2000412c6a22012802001092022001280200102c0f0b02402000410c6a280200450d00200041086a280200102c0b02402000411c6a2802002202450d00200041146a28020021012002410c6c210203400240200141046a280200450d002001280200102c0b2001410c6a2101200241746a22020d000b0b200041186a280200450d012000280214102c0c010b02402000280204220141034b0d00024020010e0402000202020b2000410c6a280200450d01200041086a280200102c0f0b200041306a280200450d002000412c6a280200102c0f0b0bef0401067f230041f0006b22022400200241086a22034191b0c200ad4280808080e000841002220441086a290000370300200220042900003703002004102c200241286a41086a2205200329030037030020022002290300370328200341a3b0c200ad42808080809001841002220441086a290000370300200220042900003703002004102c200241386a41086a22062003290300370300200220022903003703382002200136026c200241186a2201200241ec006aad4280808080c000841006220441186a290000370300200241106a2207200441106a2900003703002003200441086a290000370300200220042900003703002004102c200241c8006a41186a22042001290300370300200241c8006a41106a22012007290300370300200241c8006a41086a2207200329030037030020022002290300370348024041c000102a2203450d00200320022903283700002003200229033837001020032002290348370020200341086a2005290300370000200341186a2006290300370000200341286a2007290300370000200341306a2001290300370000200341386a20042903003700002002200341c00010d3012007200241096a2900003703002001200241116a2900003703002004200241196a290000370300200220022900013703480240024020022d00004101460d0020004200370000200041186a4200370000200041106a4200370000200041086a42003700000c010b20002002290348370000200041186a200241c8006a41186a290300370000200041106a200241c8006a41106a290300370000200041086a200241c8006a41086a2903003700000b2003102c200241f0006a24000f0b1033000b920501037f20002d00002102024002404101102a2203450d00200320023a000020002d00012102200341014102102e2203450d00200320023a000120002d00022102200341024104102e2203450d00200320023a0002200320002d00033a000320002d00042102200341044108102e2203450d00200320023a0004200320002d00053a0005200320002d00063a0006200320002d00073a000720002d00082102200341084110102e2203450d00200320023a0008200320002d00093a0009200320002d000a3a000a200320002d000b3a000b200320002d000c3a000c200320002d000d3a000d200320002d000e3a000e200320002d000f3a000f20002d00102102200341104120102e2203450d00200320023a0010200320002d00113a0011200320002d00123a0012200320002d00133a0013200320002d00143a0014200320002d00153a0015200320002d00163a0016200320002d00173a0017200320002d00183a0018200320002d00193a0019200320002d001a3a001a200320002d001b3a001b200320002d001c3a001c200320002d001d3a001d200320002d001e3a001e200320002d001f3a001f024002402001280200220041046a2802002202200041086a28020022016b4120490d00200028020021020c010b200141206a22042001490d02200241017422012004200120044b1b22014100480d020240024020020d002001102a21020c010b200028020020022001102e21020b2002450d0120002002360200200041046a2001360200200041086a28020021010b200041086a200141206a360200200220016a220041186a200341186a290000370000200041106a200341106a290000370000200041086a200341086a290000370000200020032900003700002003102c0f0b1033000b1035000b9e0501037f230041b0016b22042400024002400240024020002d00000e03000102000b200441206a41186a200341186a290000370300200441206a41106a200341106a290000370300200441206a41086a200341086a29000037030020042003290000370320200041016a2002ad4220862001ad84200441206a100b41014621000c020b200441206a41186a200341186a290000370300200441206a41106a200341106a290000370300200441206a41086a200341086a29000037030020042003290000370320200041016a2002ad4220862001ad84200441206a100c41014621000c010b20044190016a41186a22052002ad4220862001ad841006220141186a29000037030020044190016a41106a2202200141106a29000037030020044190016a41086a2206200141086a29000037030020042001290000370390012001102c200441186a2005290300370300200441106a2002290300370300200441086a2006290300370300200420042903900137030041012101200441206a200041016a200410be024100210020042d00200d00200441c8006a41206a200441c1006a2d00003a0000200441c8006a41186a200441396a290000370300200441c8006a41106a200441316a290000370300200441c8006a41086a200441296a290000370300200420042900213703482005200441c8006aad42808080809004841006220041186a2900003703002002200041106a2900003703002006200041086a29000037030020042000290000370390012000102c200441f0006a41186a2005290300370300200441f0006a41106a2002290300370300200441f0006a41086a200629030037030020042004290390013703700240200441f0006a2003460d00200441f0006a2003412010dd054521010b200121000b200441b0016a240020000ba00701087f230041d00b6b220424000240024020002802000d002000417f360200200441206a41186a200141186a290000370300200441206a41106a200141106a290000370300200441206a41086a200141086a29000037030020042001290000370320024002402000280204220541d0e1c100460d00200041086a28020021060c010b41002106200441f0086a410041e00210da051a200441d0006a410041a00810da051a41880b102a2205450d02200541003b010620054100360200200541086a200441f0086a41e00210db051a200541e8026a200441d0006a41a00810db051a200041086a4100360200200020053602040b200041046a210702400240034020052f010622084105742109410021014100210a02400240034020092001460d01200441206a200520016a41086a412010dd05220b450d02200141206a2101200a41016a210a200b417f4a0d000b200a417f6a21080b2006450d022006417f6a2106200520084102746a41880b6a28020021050c010b0b2000410c6a210b410121010c010b200441186a200441206a41186a290300370300200441106a200441206a41106a290300370300200441086a200441206a41086a290300370300200420042903203703002000410c6a210b410021062008210a410021010b0240024020010d002004418c096a200441086a29030037020020044194096a200441106a2903003702002004419c096a200441186a2903003702002004200b360280092004200a3602fc08200420073602f808200420053602f408200420063602f0082004200429030037028409200441f0006a2004290340370300200441f8006a200441c0006a41086a29030037030020044184016a42003702002004420037036820044200370350200441d0e1c10036028001200441003a008c012004418d016a200429002037000020044195016a200441206a41086a2900003700002004419d016a200441206a41106a290000370000200441a5016a200441206a41186a290000370000200441003a00ad01200441f0086a200441d0006a10800221010c010b200441e8006a4200370300200441e4006a41d0e1c100360200200441003602702004410036026020044200370358200441d0e1c100360254200441003602502005200a41e0006c6a41e8026a2101200441d0006a10f4010b200141106a200337030020012002370308200142013703002000200028020041016a360200200441d00b6a24000f0b41f089c6004110200441d0006a41f882c100103b000b1033000b130020004106360204200041cc95c1003602000b3400200041e5d6c50036020420004100360200200041146a4106360200200041106a41fcaec100360200200041086a42103702000b130020004105360204200041e8b7c1003602000b2e01017f02404104102a22020d001033000b20004284808080c0003702042000200236020020024180a70c3600000b2c01017f02404104102a22020d001033000b20004284808080c00037020420002002360200200241073600000b2c01017f02404104102a22020d001033000b20004284808080c000370204200020023602002002410d3600000b3a01017f02404110102a22020d001033000b2002420037000820024280809aa6eaafe301370000200042908080808002370204200020023602000bed6807017f027e027f017e127f027e017f230041d0046b220324000240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020012802000e0700010203040508000b200341a4026a41013602002003420137029402200341fcc4c50036029002200341043602a401200341f4c4c5003602a0012003200341a0016a3602a00220034190026a4184c5c5001041000b200141186a2903002104200141106a29030021052001410c6a2802002106200141086a2802002107200128020421012002411a6a2901002108200241196a2d00002109200241186a2d0000210a200241166a2f0100210b200241156a2d0000210c200241146a2d0000210d200241126a2f0100210e200241116a2d0000210f200241106a2d000021102002410e6a2f010021112002410d6a2d000021122002410c6a2d000021132002410a6a2f01002114200241096a2d00002115200241046a2d0000211641022117200241026a2f010021180240024020022d00000d0020022d00014101470d00200241056a2d00002117200241066a2f01002119200241086a2d000021024100211a0c010b4101211a41002102410021190b201941ffff0371410874200241187472201741ff01717221190240201a450d0041d6b2c0002102410f2117024002400240024020190e05000102031e000b20144108742015722013411874722102201141087420127220104118747221170c1d0b41dd8cc6002102410e21170c1c0b41c3b2c0002102411321170c1b0b41b2b2c0002102411121170c1a0b20032008370370200320093a006f2003200a3a006e2003200b3b016c2003200c3a006b2003200d3a006a2003200e3b01682003200f3a0067200320103a0066200320113b0164200320123a0063200320133a0062200320143b0160200320153a005f2003201936005b200320163a005a200320183b015820034190026a41186a420037030020034190026a41106a2202420037030020034190026a41086a22194200370300200342003703900220034180016a41086a221741e5d6c500ad42808080808002841002221a41086a2900003703002003201a29000037038001201a102c20192017290300370300200320032903800122083703f00120032008370390022017419883c100ad4280808080a001841002221a41086a2900003703002003201a29000037038001201a102c20022003290380012208370300200341c0036a41086a2019290300370300200341c0036a41106a2008370300200341c0036a41186a2017290300370300200320083703a00120032003290390023703c003200341a0016a200341c0036aad428080808080048422081003108d01024002400240024020032802a0012217450d0020032802a40121192003200341a8016a280200360294022003201736029002200341286a20034190026a107520032802280d01200328022c21100c020b2003420037029402200341013602900220034190026a107821100c020b410021100b2019450d002017102c0b20034190026a41186a2211420037030020034190026a41106a2212420037030020034190026a41086a22194200370300200342003703900220034180016a41086a221741e5d6c500ad42808080808002841002221a41086a2900003703002003201a29000037038001201a102c201920172903003703002003200329038001221b3703f0012003201b37039002201741eae5c200ad4280808080f000841002221a41086a2900003703002003201a29000037038001201a102c200341a0016a41086a2017290300221b3703002003200329038001221c3703a0012002201c370000200241086a201b370000200341c0036a41086a2019290300370300200341c0036a41106a2012290300370300200341c0036a41186a201129030037030020032003290390023703c00320034190026a20081003108d010240024020032802900222020d00410021170c010b200328029402211a200320192802003602a401200320023602a001200341206a200341a0016a10750240024020032802200d00200328022421170c010b410021170b201a450d002002102c0b0240201720106a22020d0041d7bbc1002102412f21170c1a0b0240200620024d0d004186bcc1002102412021170c1a0b41a6bcc100210241252117200641104b0d19024020060d0041cbbcc10021020c1a0b02402005428180e983b1de165441002004501b450d0041f0bcc1002102413021170c1a0b0240200341d8006a109f020d00200341186a200341d8006a428080e983b1de16420010c1012003280218450d0041a0bdc1002102411d21170c1a0b200341086a200341d8006a10b101200342f0d0c9abc6add9b1f400370378200341f8006a200341d8006a2003290308220820052008200554200341086a41086a290300220820045420082004511b22021b22052008200420021b2208417f411e10be0120034180016a41086a221741e5d6c500ad428080808080028422041002220241086a29000037030020032002290000370380012002102c200341f0016a41086a2219201729030037030020032003290380013703f001201741fdfbc000ad4280808080f000841002220241086a29000037030020032002290000370380012002102c200341a0016a41086a221a201729030037030020032003290380013703a00120034190026a200341d8006a109f0141c000102a2202450d16200220032903f001370000200241086a2019290300370000200220032903a001370010200241186a201a2903003700002002200329039002370020200241286a20034190026a41086a290300370000200241306a200341a0026a2210290300370000200241386a20034190026a41186a2211290300370000200320083703980220032005370390022002ad428080808080088420034190026aad428080808080028410012002102c201720041002220241086a29000037030020032002290000370380012002102c2019201729030037030020032003290380013703f001201741affbc000ad4280808080f000841002220241086a29000037030020032002290000370380012002102c201a201729030037030020032003290380013703a00120034190026a200341d8006a109f0141c000102a2217450d16201720032903f001370000201741086a200341f0016a41086a290300370000201720032903a001370010201741186a200341a0016a41086a2903003700002017200329039002370020201741286a20034190026a41086a290300370000201741306a2010290300370000201741386a2011290300370000200341a0016a201741c00010a0020240024020032d00ac0122024102460d00200341f0036a41086a200341b5016a290000370300200341f0036a41106a200341bd016a290000370300200341f0036a41186a200341c5016a29000037030020034180016a41086a200341d6016a29010037030020034180016a41106a200341de016a29010037030020034180016a41186a200341e6016a2901003703002003200341ad016a2900003703f0032003200341ce016a29010037038001200341cd016a2d0000211920032802a401450d0120032802a001102c0c010b2003200341d8006a3602940320034190026a10d20120034198036a200328029002220220032802980210d3010240200328029402450d002002102c0b0240024020032d0098030d0020034190026a10d201200328029002210220032003280298023602f403200320023602f003200341d8006a200341f0036a10a1020240200328029402450d002002102c0b410021190c010b200341d8036a200341b1036a290000370300200341c0036a41106a200341a9036a290000370300200341c0036a41086a200341a1036a29000037030020032003290099033703c003200341e0036a200341c0036a10840220034190026a20032802e003221a20032802e803221010a002024020032d009c024102470d00200341003602f801200342013703f00120034180016a41146a410d36020020034180016a410c6a410b360200200341103602bc04200341e5d6c5003602b8042003410b36028401200341073602c404200341affbc0003602c0042003200341e0036a360290012003200341c0046a360288012003200341b8046a360280012003200341f0016a3602cc04200341f0036a41146a4103360200200342033702f403200341c09dc5003602f003200320034180016a36028004200341cc046a41c49ac500200341f0036a10391a20033502f80142208620033502f0018410042003280294032119200341f0036a10d20120032802f0032102200320032802f803360284012003200236028001201920034180016a10a102024020032802f403450d002002102c0b024020032802f401450d0020032802f001102c0b024020032802e403450d0020032802e003102c0b410021190c010b200341f0036a20034190026a410c6a41c20010db051a20032d009104211920034180016a41086a20034190026a41086a280200220236020020034180016a41106a20034192046a410020194101461b3602002003200329039002220837038001200320034194036a36028c01200341003602f801200342013703f0012002200341f0016a106720034180016a410c6a21122008a7211102402002450d00200241057421192011210203402002200341f0016a109101200241206a2102201941606a22190d000b0b2012200341f0016a10a20220032802f40121022010ad422086201aad8420033502f80142208620032802f0012219ad84100102402002450d002019102c0b0240200328028401450d002011102c0b024020032802e403450d0020032802e003102c0b200328029403211920034190026a10d201200328029002210220032003280298023602f403200320023602f0032019200341f0036a10a1020240200328029402450d002002102c0b20034180016a41086a200341c0036a41086a29030037030020034180016a41106a200341c0036a41106a29030037030020034180016a41186a200341c0036a41186a290300370300200320032903c00337038001410121190b410021020b2003419d026a20032903f003370000200341bd026a20193a0000200341be026a200329038001370100200341a5026a200341f0036a41086a290300370000200341ad026a200341f0036a41106a290300370000200341b5026a200341f0036a41186a290300370000200341c6026a20034180016a41086a290300370100200341ce026a20034180016a41106a290300370100200341d6026a20034180016a41186a290300370100200320023a009c02200320063602980220032007360294022003200136029002200341003602a801200342013703a0012006200341a0016a1067200641057421022003419c026a210703402001200341a0016a109101200141206a2101200241606a22020d000b2007200341a0016a10a30220032802a40121022017ad428080808080088420033502a80142208620032802a0012201ad84100102402002450d002001102c0b2017102c200328029402450d18200328029002102c0c180b2002411a6a2901002108200241196a2d00002117200241186a2d00002107200241166a2f01002119200241156a2d0000211a200241146a2d00002110200241126a2f01002111200241116a2d00002112200241106a2d000021132002410e6a2f010021142002410d6a2d000021152002410c6a2d000021062002410a6a2f01002109200241096a2d0000210a200241046a2d0000210b41022101200241026a2f0100210c0240024020022d00000d0020022d00014101470d00200241056a2d00002101200241066a2f0100210d200241086a2d000021024100210e0c010b4101210e410021024100210d0b200320083703d803200320173a00d703200320073a00d603200320193b01d4032003201a3a00d303200320103a00d203200320113b01d003200320123a00cf03200320133a00ce03200320143b01cc03200320153a00cb03200320063a00ca03200320093b01c8032003200a3a00c7032003200b3a00c2032003200c3b01c0032003200d41ffff0371410874200241187472200141ff01717222013600c3030240200e450d0041d6b2c0002102410f2117024020010e05001605081b000b20032800c703210220032800cb0321170c1a0b20034190026a41186a200341c0036a41186a29030037030020034190026a41106a200341c0036a41106a29030037030020034190026a41086a200341c0036a41086a290300370300200320032903c00337039002024020034190026a109f02450d0020034190026a410110a402410021020c1a0b410f21174199bfc10021020c190b41022107200341b8046a41026a200141076a2d00003a0000200341d8006a41086a200141146a290200370300200341d8006a41106a2001411c6a290200370300200341d8006a41186a200141246a280200360200200320012f00053b01b80420032001410c6a290200370358200141086a280200211720012d000421152002411a6a2901002108200241196a2d00002106200241186a2d00002109200241166a2f0100210a200241156a2d0000210b200241146a2d0000210c200241126a2f0100210d200241116a2d0000210e200241106a2d0000211a2002410e6a2f010021102002410d6a2d000021112002410c6a2d000021122002410a6a2f01002113200241096a2d00002114200241046a2d0000210f200241026a2f010021160240024020022d00000d0020022d00014101470d00200241056a2d00002107200241066a2f01002101200241086a2d00002102410021190c010b4101211941002101410021020b200141ffff0371410874200741ff017172200241187472210102402019450d0041d6b2c0002102410f2117024020010e05001504071a000b201341087420147220124118747221022010410874201172201a4118747221170c190b200320083703b003200320063a00af03200320093a00ae032003200a3b01ac032003200b3a00ab032003200c3a00aa032003200d3b01a8032003200e3a00a7032003201a3a00a603200320103b01a403200320113a00a303200320123a00a203200320133b01a003200320143a009f032003200136009b032003200f3a009a03200320163b019803200341e0036a41026a2202200341b8046a41026a2d00003a000020034180016a41086a200341d8006a41086a29030037030020034180016a41106a2201200341d8006a41106a29030037030020034180016a41186a200341d8006a41186a280200360200200320032f01b8043b01e00320032003290358370380010240201541ff01714101460d00200341c0046a41026a20022d00003a0000200341f0016a41086a20034180016a41086a290300370300200341f0016a41106a2001290300370300200341f0016a41186a20034180016a41186a2d00003a0000200320032f01e0033b01c00420032003290380013703f0010c120b200341a0016a201741067610910220032802a00121010240024020032802a8012017413f7122024b0d00410021020c010b200341c0046a41026a200120024105746a220241026a2d00003a0000200341f8016a2002410f6a29000037030020034180026a200241176a29000037030020034188026a2002411f6a2d00003a0000200320022f00003b01c004200320022900073703f00120022800032117410121020b024020032802a401450d002001102c0b20020d11410121020c120b2002411a6a2901002108200241196a2d00002114200241186a2d00002115200241166a2f01002106200241156a2d00002109200241146a2d0000210a200241126a2f0100210b200241116a2d0000210c200241106a2d000021192002410e6a2f0100211a2002410d6a2d000021102002410c6a2d000021112002410a6a2f01002112200241096a2d00002113200241046a2d0000210d41022101200241026a2f0100210e0240024020022d00000d0020022d00014101470d00200241056a2d00002101200241066a2f01002117200241086a2d00002102410021070c010b4101210741002117410021020b201741ffff0371410874200141ff017172200241187472210102402007450d0041d6b2c0002102410f2117024020010e050014030619000b20124108742013722011411874722102201a41087420107220194118747221170c180b2003200837038804200320143a008704200320153a008604200320063b018404200320093a0083042003200a3a0082042003200b3b0180042003200c3a00ff03200320193a00fe032003201a3b01fc03200320103a00fb03200320113a00fa03200320123b01f803200320133a00f703200320013600f3032003200d3a00f2032003200e3b01f00320034190026a41186a420037030020034190026a41106a2210420037030020034190026a41086a22014200370300200342003703900220034180016a41086a220241e5d6c500ad42808080808002841002221741086a29000037030020032017290000370380012017102c200120022903003703002003200329038001370390022002419883c100ad4280808080a001841002221741086a29000037030020032017290000370380012017102c20102003290380012208370300200341a0016a41086a2001290300370300200341a0016a41106a2008370300200341a0016a41186a2002290300370300200320083703c00320032003290390023703a00120034190026a200341a0016a412010d0012003280290022201410120011b21194100211a410021020240200329029402420020011b2208422088a7220141014b0d004100210720010e020f0e0f0b03402001410176221720026a22072002201920074105746a200341f0036a412010dd054101481b2102200120176b220141014b0d000c0e0b0b2002411a6a2901002108200241196a2d00002115200241186a2d00002106200241166a2f01002109200241156a2d0000210a200241146a2d0000210b200241126a2f0100210c200241116a2d0000210d200241106a2d0000211a2002410e6a2f010021102002410d6a2d000021112002410c6a2d000021122002410a6a2f01002113200241096a2d00002114200241046a2d0000210e41022117200241026a2f0100210f0240024020022d00000d0020022d00014101470d00200241056a2d00002117200241066a2f01002107200241086a2d00002102410021190c010b4101211941002107410021020b200741ffff0371410874201741ff01717220024118747221072019450d0141d6b2c0002102410f2117024020070e050012010417000b201341087420147220124118747221022010410874201172201a4118747221170c160b41c3b2c0002102411321170c150b2003200837038804200320153a008704200320063a008604200320093b0184042003200a3a0083042003200b3a0082042003200c3b0180042003200d3a00ff032003201a3a00fe03200320103b01fc03200320113a00fb03200320123a00fa03200320133b01f803200320143a00f703200320073600f3032003200e3a00f2032003200f3b01f003200341a0016a200341f0036a10a50220032d00a001450d0320034190026a41186a420037030020034190026a41106a2210420037030020034190026a41086a22174200370300200342003703900220034180016a41086a220241e5d6c500ad42808080808002841002220741086a29000037030020032007290000370380012007102c20172002290300370300200320032903800137039002200241a283c100ad42808080809001841002220741086a29000037030020032007290000370380012007102c20102003290380012208370300200341a0016a41086a2017290300370300200341a0016a41106a2008370300200341a0016a41186a2002290300370300200320083703c00320032003290390023703a00120034190026a200341a0016a10d1012003280290022217410820171b211a41002102024002400240024002400240200329029402420020171b2205422088a7221141014b0d0020110e020201020b2011211703402017410176220720026a22192002201a201941306c6a200341f0036a412010dd054101481b2102201720076b221741014b0d000b0b201a200241306c6a200341f0036a412010dd05450d010b20034190026a41186a2219420037030020034190026a41106a2211420037030020034190026a41086a22174200370300200342003703900220034180016a41086a220241e5d6c500ad42808080808002841002220741086a29000037030020032007290000370380012007102c201720022903003703002003200329038001370390022002419883c100ad4280808080a001841002220741086a29000037030020032007290000370380012007102c200341c0036a41086a20022903002208370300200320032903800122043703c00320102004370000201041086a2008370000200341a0016a41086a2017290300370300200341a0016a41106a2011290300370300200341a0016a41186a201929030037030020032003290390023703a00120034190026a200341a0016a412010d0012003280290022217410120171b211041002102024002400240200329029402420020171b2208422088a7221141014b0d0020110e020201020b2011211703402017410176220720026a22192002201020194105746a200341f0036a412010dd054101481b2102201720076b221741014b0d000b0b201020024105746a200341f0036a412010dd05450d030b41ebbec10021022008a70d010c0b0b200220114f0d06201a200241306c6a2217201741306a2002417f7320116a41306c10dc051a200341f0036a4280809aa6eaafe301420010c201200341c0036a41186a4200370300200341c0036a41106a22194200370300200341c0036a41086a22174200370300200342003703c00320034180016a41086a220241e5d6c500ad42808080808002841002220741086a29000037030020032007290000370380012007102c20172002290300370300200320032903800122083703f001200320083703c003200241a283c100ad42808080809001841002220741086a29000037030020032007290000370380012007102c2019200329038001220837030020034190026a41086a201729030037030020034190026a41106a200837030020034190026a41186a2002290300370300200320083703a001200320032903c00337039002200341003602a801200342013703a0012011417f6a2202200341a0016a10670240024020020d0020032802a801211720032802a401211920032802a00121070c010b201a200241306c6a2111201a210203402002200341a0016a109101200241286a2903002108200241206a29030021040240024020032802a401221920032802a80122176b4110490d0020032802a00121070c010b201741106a22072017490d11201941017422172007201720074b1b22104100480d110240024020190d002010102a21070c010b20032802a00120192010102e21070b2007450d15200320103602a401200320073602a00120032802a8012117201021190b200720176a22102008370008201020043700002003201741106a22173602a8012011200241306a2202470d000b0b20034190026aad42808080808004842017ad4220862007ad84100102402019450d002007102c0b410021022005a7450d0b201a102c0c0b0b2010102c0c090b200220114f0d05201020024105746a2217201741206a2002417f7320116a41057410dc051a200341f0036a4280809aa6eaafe301420010c201200341c0036a41186a4200370300200341c0036a41106a22194200370300200341c0036a41086a22174200370300200342003703c00320034180016a41086a220241e5d6c500ad42808080808002841002220741086a29000037030020032007290000370380012007102c20172002290300370300200320032903800122043703f001200320043703c0032002419883c100ad4280808080a001841002220741086a29000037030020032007290000370380012007102c2019200329038001220437030020034190026a41086a201729030037030020034190026a41106a200437030020034190026a41186a2002290300370300200320043703a001200320032903c00337039002200341003602a801200342013703a0012011417f6a2202200341a0016a106702402002450d00201141057441606a21172010210203402002200341a0016a109101200241206a2102201741606a22170d000b0b20032802a401210220034190026aad428080808080048420033502a80142208620032802a0012217ad84100102402002450d002017102c0b410021022008a7450d082010102c0c080b200341d8006a41026a2217200141076a2d00003a0000200341f0036a41086a2207200141146a290200370300200341f0036a41106a22192001411c6a290200370300200341f0036a41186a221a200141246a280200360200200320012f00053b015820032001410c6a2902003703f00320022d000120022d000072450d010b41b2b2c0002102411121170c120b200141086a280200210220012d00042101200341e0036a41026a20172d00003a000020034180016a41086a200729030037030020034180016a41106a201929030037030020034180016a41186a201a280200360200200320032f01583b01e003200320032903f003370380010240200141ff01714101460d00200341c0046a41026a200341e0036a41026a2d00003a0000200341f0016a41086a20034180016a41086a290300370300200341f0016a41106a20034180016a41106a290300370300200341f0016a41186a20034180016a41186a2d00003a0000200320032f01e0033b01c00420032003290380013703f0010c040b20034190026a20024106761091022003280290022101024002402003280298022002413f7122024b0d00410021170c010b200341c0046a41026a200120024105746a220241026a2d00003a0000200341f8016a2002410f6a29000037030020034180026a200241176a29000037030020034188026a2002411f6a2d00003a0000200320022f00003b01c004200320022900073703f00120022800032102410121170b0240200328029402450d002001102c0b20170d03410121010c040b200341f0036a4280809aa6eaafe301420010c2012003419d026a200341f8036a290300370000200341a5026a20034180046a290300370000200341ad026a20034188046a290300370000200341033a009402200341093a009002200320032903f00337009502410021024101410020034190026a1092010c050b418ab4c000411d41acfec5001036000b418ab4c000411d41acfec5001036000b20034198036a41026a200341c0046a41026a2d00003a000020034190026a41086a200341f0016a41086a29030037030020034190026a41106a200341f0016a41106a29030037030020034190026a41186a200341f0016a41186a2d00003a0000200320032f01c0043b019803200320032903f00137039002410021010b200341c0036a41026a20034198036a41026a2d00003a0000200341cf036a20034190026a41086a290300370000200341d7036a20034190026a41106a290300370000200341df036a20034190026a41186a2d00003a0000200320032f0198033b01c003200320023600c30320032003290390023700c70320010d07200341a0016a41186a200341c0036a41186a290100370300200341a0016a41106a200341c0036a41106a290100370300200341a0016a41086a200341c0036a41086a290100370300200320032901c0033703a00120034198036a200341a0016a10a502024020032d0098034101460d0020032d0099032101200341c8006a200341a0016a4280809aa6eaafe301420010bf012003290348200341c8006a41086a29030010a9012003419d026a200341a0016a41086a290300370000200341a5026a200341b0016a290300370000200341ad026a200341b8016a290300370000200341023a009402200341093a009002200320032903a00137009502410021024101410020034190026a10920102402001450d000c0e0b10cf010c0d0b200341a0036a2802002117200328029c0321020c0c0b2005a7450d00201a102c0b412e211720012802004101470d0a200141086a280200450d0a2001280204102c0c0a0b0240201920024105746a200341f0036a412010dd0522010d004101211a200221070c010b2001411f7620026a21070b02402008a7450d002019102c0b0240201a450d0041e7bdc1002102411e21170c090b4185bec100210241212117200341f0036a10a6020d0841a6bec1002102200341f0036a10a7020d0842002108200341c0006a200341f0036a4280809aa6eaafe301420010c10102402003280240450d0041c7bec1002102412421170c090b200329038804210420032d008704211920032d008604211a20032f018404211120032d008304211220032d008204211320032f018004211420032d00ff03211520032d00fe03210620032f01fc03210920032d00fb03210a20032d00fa03210b20032f01f803210c20032d00f703210d20032800f303210e20032d00f203210f20032f01f003211620034190026a41186a2218420037030020034190026a41106a221d420037030020034190026a41086a22014200370300200342003703900220034180016a41086a220241e5d6c500ad42808080808002841002221741086a29000037030020032017290000370380012017102c200120022903003703002003200329038001370390022002419883c100ad4280808080a001841002221741086a29000037030020032017290000370380012017102c200341c0036a41086a200229030022053703002003200329038001221b3703c0032010201b370000201041086a2005370000200341a0016a41086a2001290300370300200341a0016a41106a201d290300370300200341a0016a41186a201829030037030020032003290390023703a00120034190026a200341a0016a412010d0010240024020032802900222170d004100210241012117410021010c010b2003290294022208422088a721012008a721020b024020012007490d00024020012002470d0020022008a7470d00200241016a22102002490d02200241017422182010201820104b1b221041ffffff3f712010470d02201041057422184100480d020240024020020d002018102a21170c010b201720024105742018102e21170b2017450d062010ad21080b201720074105746a220241206a2002200120076b41057410dc051a20022004370018200220193a00172002201a3a0016200220113b0014200220123a0013200220133a0012200220143b0010200220153a000f200220063a000e200220093b000c2002200a3a000b2002200b3a000a2002200c3b00082002200d3a00072002200e3600032002200f3a0002200220163b0000200341c0036a41186a4200370300200341c0036a41106a221a4200370300200341c0036a41086a22074200370300200342003703c00320034180016a41086a220241e5d6c500ad42808080808002841002221941086a29000037030020032019290000370380012019102c20072002290300370300200320032903800122043703f001200320043703c0032002419883c100ad4280808080a001841002221941086a29000037030020032019290000370380012019102c201a200329038001220437030020034190026a41086a200729030037030020034190026a41106a200437030020034190026a41186a2002290300370300200320043703a001200320032903c00337039002024020170d0020034190026aad42808080808004841005410021020c0a0b200341003602a801200342013703a001200141016a2202200341a0016a106702402002450d00201720024105746a21012017210203402002200341a0016a1091012001200241206a2202470d000b0b2008a7210220032802a401210120034190026aad428080808080048420033502a80142208620032802a0012207ad84100102402001450d002007102c0b2002450d072017102c410021020c090b41ecb3c000411e41acfec5001036000b1035000b200341c0036a41026a200341c0046a41026a2d00003a0000200341a0016a41086a200341f0016a41086a290300370300200341a0016a41106a200341f0016a41106a290300370300200341a0016a41186a200341f0016a41186a2d00003a0000200320032f01c0043b01c003200320032903f0013703a001410021020b2003419f026a200341a0016a41086a290300370000200341a7026a200341a0016a41106a290300370000200341af026a200341a0016a41186a2d00003a0000200320032f01c0033b0190022003201736009302200320032903a001370097022003200341c2036a2d00003a00920220020d00200341f0036a41186a20034190026a41186a290300370300200341f0036a41106a20034190026a41106a290300370300200341f0036a41086a20034190026a41086a29030037030020032003290390023703f003024020034198036a200341f0036a412010dd050d0041bdbdc1002102411221170c060b024020034198036a109f020d0041cfbdc1002102411821170c060b02400240200341f0036a109f02450d0020034180016a41086a221041e5d6c500ad428080808080028422051002220241086a29000037030020032002290000370380012002102c200341f0016a41086a2201201029030037030020032003290380013703f001201041affbc000ad4280808080f000841002220241086a29000037030020032002290000370380012002102c200341a0016a41086a2212201029030037030020032003290380013703a001200341c0036a200341f0036a109f0141c000102a2202450d03200220032903f001370000200241086a2001290300370000200220032903a001370010200241186a2012290300370000200220032903c003370020200241286a200341c0036a41086a2214290300370000200241306a200341c0036a41106a290300370000200241386a200341c0036a41186a29030037000020034190026a200241c00010d0012002102c2003280290022202410120021b2215200329029402420020021b221b422088a74105746a211320034190026a41106a211120152119034020192013460d020240201910a6020d00201910a7020d0020034190026a41186a221742003703002011420037030020034190026a41086a220242003703002003420037039002201020051002220141086a29000037030020032001290000370380012001102c200220102903003703002003200329038001370390022010419883c100ad4280808080a001841002220141086a29000037030020032001290000370380012001102c201420102903002208370300200320032903800122043703c00320112004370000201141086a200837000020122002290300370300200341a0016a41106a2011290300370300200341a0016a41186a201729030037030020032003290390023703a00120034190026a200341a0016a412010d0012003280290022201410120011b211a41002102024002400240200329029402420020011b2208422088a7220141014b0d0020010e020201020b03402001410176221720026a22072002201a20074105746a2019412010dd054101481b2102200120176b220141014b0d000b0b201a20024105746a2019412010dd054521020b02402008a7450d00201a102c0b201941206a21192002450d010b0b201ba7450d002015102c0b200341306a20034198036a428080e983b1de16420010bf012003290330200341386a29030010a9014100210120034198036a21170c030b0240201ba7450d002015102c0b20034190026a200341f0036a20034198036a428080e983b1de16420010c00141012101200341f0036a21172003280290024101470d0220034198026a280200211720032802940221020c050b41dd8cc6002102410e21170c040b1033000b410021022017410010a4022003419d026a200341f0036a41086a290300370000200341a5026a200341f0036a41106a290300370000200341ad026a200341f0036a41186a290300370000200341b5026a200329039803370000200341bd026a20034198036a41086a290300370000200341c5026a20034198036a41106a290300370000200341cd026a20034198036a41186a290300370000200341d5026a20013a0000200341043a009402200341093a009002200320032903f003370095024101410020034190026a1092010c020b410021020c010b2007450d002001102c0b2000201736020420002002360200200341d0046a24000bd10201057f230041d0006b22012400200141306a41086a220241e5d6c500ad42808080808002841002220341086a290000370300200120032900003703302003102c200141106a41086a2204200229030037030020012001290330370310200241fdfbc000ad4280808080f000841002220341086a290000370300200120032900003703302003102c200141206a41086a2205200229030037030020012001290330370320200141306a2000109f01024041c000102a22030d001033000b200320012903103700002003200129032037001020032001290030370020200341086a2004290300370000200341186a2005290300370000200341286a2002290000370000200341306a200141c0006a290000370000200341386a200141306a41186a290000370000200141086a200341c000410141004100109701200128020821022003102c200141d0006a240020024101460be80b030a7f017e027f230041a0026b220324002003200236020c20032001360208200341106a2002ad4220862001ad841003108d0102400240200328021022040d00200041023a000c0c010b200328021421052003200341106a41086a28020036026420032004360260200341e8006a200341e0006a10820102400240024020032802682206450d00200328026c2107024020032802642201450d00200341e8006a41086a280200210820032001417f6a220936026420032003280260220a41016a220b360260200a2d0000220141014b0d004100210c0240024020010e020100010b41002101200341003a0098020340024020092001470d0020034100360264200141ff0171450d03200341003a0098020c030b200341f8016a20016a200a20016a220241016a2d00003a00002003200241026a3602602003200141016a22023a0098022002210120024120470d000b200341b8016a41086a200341f8016a41086a290300220d37030020034198016a41186a200341f8016a41186a29030037030020034198016a41106a200341f8016a41106a29030037030020034198016a41086a200d3703002003200920026b2209360264200320032903f801220d3703b8012003200d370398014101210c200a20026a41016a210b0b200341f8006a41186a20034198016a41186a290300370300200341f8006a41106a20034198016a41106a290300370300200341f8006a41086a20034198016a41086a29030037030020032003290398013703782009450d0020032009417f6a22093602642003200b41016a360260200b2d0000220141014b0d00410021020240024020010e020100010b41002101200341003a0098020340024020092001470d0020034100360264200141ff0171450d03200341003a0098020c030b200341f8016a20016a200b20016a220241016a2d00003a00002003200241026a3602602003200141016a22023a0098022002210120024120470d000b200341b8016a41086a200341f8016a41086a290300220d37030020034198016a41186a200341f8016a41186a29030037030020034198016a41106a200341f8016a41106a29030037030020034198016a41086a200d3703002003200920026b360264200320032903f801220d3703b8012003200d37039801410121020b200341206a41186a220120034198016a41186a290300370300200341206a41106a220920034198016a41106a290300370300200341206a41086a220a20034198016a41086a290300370300200341c0006a41086a220b200341f8006a41086a290300370300200341c0006a41106a220e200341f8006a41106a290300370300200341c0006a41186a220f200341f8006a41186a290300370300200320032903980137032020032003290378370340200c4102460d02200020083602082000200736020420002006360200200341f8016a41086a2206200b290300370300200341f8016a41106a220b200e290300370300200341f8016a41186a2207200f290300370300200341d8016a41086a2208200a290300370300200341d8016a41106a220a2009290300370300200341d8016a41186a22092001290300370300200320032903403703f801200320032903203703d801200320032f011e3b01b801200041256a20072903003700002000411d6a200b290300370000200041156a2006290300370000200020032903f80137000d2000412d6a20023a00002000412e6a20032903d801370000200041366a20082903003700002000413e6a200a290300370000200041c6006a2009290300370000200041ce006a20032f01b8013b00000c030b2007450d002006102c0b4102210c0b200341003602e001200342013703d8012003410b3602bc012003200341086a3602b8012003200341d8016a360298012003418c026a4101360200200342013702fc01200341d0b0c2003602f8012003200341b8016a3602880220034198016a41c49ac500200341f8016a10391a20033502e00142208620033502d80184100420032802dc01450d0020032802d801102c0b2000200c3a000c2005450d002004102c0b200341a0026a24000bc30301027f20002d0000210202404101102a2203450d00200320023a000020002d00012102200341014102102e2203450d00200320023a000120002d00022102200341024104102e2203450d00200320023a0002200320002d00033a000320002d00042102200341044108102e2203450d00200320023a0004200320002d00053a0005200320002d00063a0006200320002d00073a000720002d00082102200341084110102e2203450d00200320023a0008200320002d00093a0009200320002d000a3a000a200320002d000b3a000b200320002d000c3a000c200320002d000d3a000d200320002d000e3a000e200320002d000f3a000f20002d00102102200341104120102e2203450d00200320023a0010200320002d00113a0011200320002d00123a0012200320002d00133a0013200320002d00143a0014200320002d00153a0015200320002d00163a0016200320002d00173a0017200320002d00183a0018200320002d00193a0019200320002d001a3a001a200320002d001b3a001b200320002d001c3a001c200320002d001d3a001d200320002d001e3a001e200320002d001f3a001f20012902002003ad428080808080048410012003102c0f0b1033000ba00501047f200141046a2802002102200141086a28020021030240024002400240200028020022040d000240024020022003460d00200128020021020c010b200341016a22022003490d04200341017422042002200420024b1b22044100480d040240024020030d002004102a21020c010b200128020020032004102e21020b2002450d0320012002360200200141046a2004360200200141086a28020021030b200141086a200341016a360200200220036a41003a00000c010b0240024020022003460d00200128020021020c010b200341016a22022003490d03200341017422052002200520024b1b22054100480d030240024020030d002005102a21020c010b200128020020032005102e21020b2002450d0220012002360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200220036a41013a0000200428020020011091010b200141046a2802002102200141086a28020021030240200028020422040d000240024020022003460d00200128020021000c010b200341016a22002003490d03200341017422022000200220004b1b22024100480d030240024020030d002002102a21000c010b200128020020032002102e21000b2000450d0220012000360200200141046a2002360200200141086a28020021030b200141086a200341016a360200200020036a41003a00000f0b0240024020022003460d00200128020021000c010b200341016a22002003490d02200341017422022000200220004b1b22024100480d020240024020030d002002102a21000c010b200128020020032002102e21000b2000450d0120012000360200200141046a2002360200200141086a28020021030b200141086a200341016a360200200020036a41013a0000200420011091010f0b1033000b1035000bb50501037f024002400240024020002d00004101460d0002400240200141046a280200200141086a2802002202460d00200128020021030c010b200241016a22032002490d04200241017422042003200420034b1b22044100480d040240024020020d002004102a21030c010b200128020020022004102e21030b2003450d0320012003360200200141046a2004360200200141086a28020021020b200141086a200241016a360200200320026a41003a00000c010b02400240200141046a280200200141086a2802002202460d00200128020021030c010b200241016a22032002490d03200241017422042003200420034b1b22044100480d030240024020020d002004102a21030c010b200128020020022004102e21030b2003450d0220012003360200200141046a2004360200200141086a28020021020b200141086a200241016a360200200320026a41013a0000200041016a20011091010b024020002d00214101460d0002400240200141046a280200200141086a2802002200460d00200128020021020c010b200041016a22022000490d03200041017422032002200320024b1b22034100480d030240024020000d002003102a21020c010b200128020020002003102e21020b2002450d0220012002360200200141046a2003360200200141086a28020021000b200141086a200041016a360200200220006a41003a00000f0b02400240200141046a280200200141086a2802002202460d00200128020021030c010b200241016a22032002490d02200241017422042003200420034b1b22044100480d020240024020020d002004102a21030c010b200128020020022004102e21030b2003450d0120012003360200200141046a2004360200200141086a28020021020b200141086a200241016a360200200320026a41013a0000200041226a20011091010f0b1033000b1035000bdb1505047f017e027f017e047f23004180046b22022400200241e0006a41086a220341e5d6c500ad42808080808002841002220441086a290000370300200220042900003703602004102c200241186a41086a2205200329030037030020022002290360370318200341affbc000ad4280808080f000841002220441086a290000370300200220042900003703602004102c200241a0026a41086a22042003290300370300200220022903603703a002200241f0026a2000109f01024041c000102a2203450d0020032002290318370000200320022903a002370010200320022900f002370020200341086a2005290300370000200341186a2004290300370000200341286a200241f0026a41086a290000370000200341306a20024180036a290000370000200341386a200241f0026a41186a290000370000200241f0026a200341c00010a002024020022d00fc0222044102460d002003ad428080808080088410050b20022902f402210620022802f0022107200241186a200241fd026a41c30010db051a200241e0006a200241186a41c30010db051a0240024020044102470d002003102c0c010b200220043a00a801200241a8016a410172200241e0006a41c10010db052108200241ca016a21050240024020022d00c9014101460d00200241003602f0010c010b200241f0016a200510840220022d00a80121040b02400240024002400240200441ff01714101460d0020024100360280020c010b20024180026a20081084022002280280020d010b024020022d00c9014101460d00200241f0026a10d20120023502f80242208620022802f0022204ad84100520022802f402450d022004102c0c020b200241f0026a10d20120022802f0022104200220022802f8023602a402200220043602a0022005200241a0026a10a10220022802f402450d012004102c0c010b20024190026a41086a20024180026a41086a28020022083602002002200229038002220937039002200241a0026a2009a7220a200810a0020240024020022d00ac024102470d00200241003602c803200242013703c003200241d0036a41146a410d360200200241dc036a410b360200200241103602ec03200241e5d6c5003602e8032002410b3602d403200241073602f403200241affbc0003602f003200220024190026a3602e0032002200241f0036a3602d8032002200241e8036a3602d0032002200241c0036a3602fc03200241f0026a41146a4103360200200242033702f402200241849dc5003602f0022002200241d0036a36028003200241fc036a41c49ac500200241f0026a10391a20023502c80342208620023502c00384100420022802c403450d0120022802c003102c0c010b200241f0026a200241a0026a41d00010db051a200241bd036a200241c9016a220441206a2d00003a0000200241b5036a200441186a290000370000200241ad036a200441106a290000370000200241a5036a200441086a2900003700002002419d036a2004290000370000200241003602d803200242013703d00320022802f002210420022802f8022205200241d0036a1067200241fc026a210b02402005450d002005410574210503402004200241d0036a109101200441206a2104200541606a22050d000b0b200b200241d0036a10a30220022802d40321042008ad422086200aad8420023502d80342208620022802d0032205ad84100102402004450d002005102c0b20022802f402450d0020022802f002102c0b0240200228029402450d00200228029002102c0b4101210a0c010b4100210a0b0240024020022802f00122080d00410021040c010b20024190026a41086a200241f0016a41086a280200220b360200200220022903f001220937039002200241a0026a2009a7220c200b10a0020240024020022d00ac024102470d00200241003602c803200242013703c003200241d0036a41146a410d360200200241dc036a410b360200200241103602ec03200241e5d6c5003602e8032002410b3602d403200241073602f403200241affbc0003602f003200220024190026a3602e0032002200241f0036a3602d8032002200241e8036a3602d0032002200241c0036a3602fc03200241f0026a41146a4103360200200242033702f402200241a89cc5003602f0022002200241d0036a36028003200241fc036a41c49ac500200241f0026a10391a20023502c80342208620023502c00384100420022802c403450d0120022802c003102c0c010b200241f0026a200241a0026a41d00010db051a2002419c036a200241a8016a41206a2d00003a000020024194036a200241c0016a2903003702002002418c036a200241b8016a29030037020020024184036a200241a8016a41086a290300370200200220022903a8013702fc02200241003602d803200242013703d00320022802f002210420022802f8022205200241d0036a1067200241fc026a210d02402005450d002005410574210503402004200241d0036a109101200441206a2104200541606a22050d000b0b200d200241d0036a10a30220022802d4032104200bad422086200cad8420023502d80342208620022802d0032205ad84100102402004450d002005102c0b20022802f402450d0020022802f002102c0b0240200228029402450d00200228029002102c0b410121040b0240200a200228028002220545720d00200228028402450d002005102c0b02402004200845720d0020022802f401450d002008102c0b2003102c2007450d002006a7450d002007410120071b102c0b200241e0006a41086a220441e5d6c500ad42808080808002841002220341086a290000370300200220032900003703602003102c200241186a41086a2205200429030037030020022002290360370318200441fdfbc000ad4280808080f000841002220341086a290000370300200220032900003703602003102c200241a0026a41086a22072004290300370300200220022903603703a002200241f0026a2000109f0141c000102a2203450d0020032002290318370000200320022903a002370010200320022900f002370020200341086a2005290300370000200341186a2007290300370000200341286a200241f0026a41086a2205290000370000200341306a200241f0026a41106a2208290000370000200341386a200241f0026a41186a220a2900003700002003ad428080808080088410052003102c200242f0d0c9abc6add9b1f400370310200a42003703002008420037030020054200370300200242003703f00220044191b0c200ad4280808080e000841002220341086a290000370300200220032900003703602003102c20052004290300370300200220022903603703f002200441acb0c200ad4280808080e000841002220341086a290000370300200220032900003703602003102c20082002290360220637030020072005290300370300200241a0026a41106a2006370300200241a0026a41186a200429030037030020022006370318200220022903f0023703a002200241086a200241a0026a41201094012002200228020c410020022802081b360260200241f0026a200010ae0120022802f402210420022802f002210320022802f802210820024184036a200241106a3602002002200320084105746a3602fc02200220033602f802200220043602f402200220033602f0022002200241e0006a36028003200241a0026a200241f0026a10860120052007280200360200200220022903a0023703f0022000200241f0026a10b00102402001450d002000428080e983b1de16420010c2010b20024180046a24000f0b1033000ba61b09057f017e027f027e027f037e017f057e017f230041c0016b22022400200241a0016a41186a4200370300200241a0016a41106a22034200370300200241a0016a41086a22044200370300200242003703a001200241206a41086a220541e5d6c500ad42808080808002841002220641086a290000370300200220062900003703202006102c20042005290300370300200220022903203703a001200541eae5c200ad4280808080f000841002220641086a290000370300200220062900003703202006102c20032002290320220737030020024180016a41086a200429030037030020024180016a41106a200737030020024180016a41186a200529030037030020022007370360200220022903a00137038001200241c0006a20024180016a10d101024002400240024002400240200228024022080d0041002109410821080c010b2002290244220aa721094100210502400240200a422088220ba7220c41014b0d00200c0e020201020b200c210403402004410176220620056a220d20052008200d41306c6a2001412010dd054101481b2105200420066b220441014b0d000b0b2008200541306c6a2001412010dd05450d010b200041013a0000200041086a410c360200200041046a41aeecc1003602002009450d012008102c0c010b02400240024002402005200c4f0d002008200541306c6a2204200441306a200c2005417f736a41306c10dc051a200241a0016a41186a22094200370300200241a0016a41106a220c4200370300200241a0016a41086a220d4200370300200242003703a001200241206a41086a220541e5d6c500ad428080808080028422071002220441086a290000370300200220042900003703202004102c200d2005290300370300200220022903203703a001200541a283c100ad4280808080900184220e1002220441086a290000370300200220042900003703202004102c200241e0006a41086a22042005290300220f37030020022002290320221037036020032010370000200341086a200f37000020024180016a41086a200d29030037030020024180016a41106a200c29030037030020024180016a41186a2009290300370300200220022903a00137038001200241a0016a20024180016a10d10120022802a0012206410820061b21110240024020022902a401420020061b220f422088221050450d00420021100c010b20092011201042ffffffff0f7c2210a741306c6a220641186a290300370300200c200641106a290300370300200d200641086a290300370300200220062903003703a0012010422086200f42ffffffff0f8384210f200641286a290300211220062903202113420121100b200241e0006a41186a4200370300200241e0006a41106a220c42003703002004420037030020024200370360200520071002220641086a290000370300200220062900003703202006102c2004200529030037030020022002290320220737038001200220073703602005200e1002220641086a290000370300200220062900003703202006102c200c20022903202207370300200241c0006a41086a2004290300370300200241c0006a41106a2007370300200241c0006a41186a20052903003703002002200737038001200220022903603703400240024020110d00200241c0006aad428080808080048410050c010b20024100360288012002420137038001200f422088a7220520024180016a10670240024020050d002002280288012104200228028401210d20022802800121060c010b2011200541306c6a2109201121050340200520024180016a109101200541286a2903002107200541206a290300210e02400240200228028401220d20022802880122046b4110490d0020022802800121060c010b200441106a22062004490d0a200d41017422042006200420064b1b22034100480d0a02400240200d0d002003102a21060c010b200228028001200d2003102e21060b2006450d092002200336028401200220063602800120022802880121042003210d0b200620046a220320073700082003200e3700002002200441106a2204360288012009200541306a2205470d000b0b200241c0006aad42808080808004842004ad4220862006ad8410010240200d450d002006102c0b200fa7450d002011102c0b200a42ffffffff0f83200b42ffffffff0f7c2214422086221584210b200241186a200241a0016a41186a2903002207370300200241106a200241a0016a41106a290300220e370300200241086a200241a0016a41086a290300220f370300200220022903a0012216370300200241206a41186a22052007370300200241206a41106a2204200e370300200241206a41086a2203200f370300200220163703200240201050450d00410021110c040b20024180016a41186a200529030037030020024180016a41106a200429030037030020024180016a41086a20032903003703002002200229032037038001410021050240024002402014a7220941014b0d0020090e020201020b2009210403402004410176220620056a220d20052008200d41306c6a20024180016a412010dd054101481b2105200420066b220441014b0d000b0b2008200541306c6a20024180016a412010dd052204450d022004411f7620056a21050b200241c0006a41186a20024180016a41186a2903002207370300200241c0006a41106a20024180016a41106a290300220e370300200241c0006a41086a20024180016a41086a290300220f37030020022002290380012210370340200241e0006a41186a2007370300200241e0006a41106a200e370300200241e0006a41086a200f37030020022010370360200241a0016a41186a2007370300200241a0016a41106a200e370300200241a0016a41086a200f370300200220103703a001200520094b0d0202402009200aa7470d00200941016a22042009490d07200941017422062004200620044b1bad220742307e220e422088a70d07200ea722044100480d070240024020090d002004102a21080c010b2008200941306c2004102e21080b2008450d062015200784210b0b2008200541306c6a220441306a2004200920056b41306c10dc051a200441286a201237030020042013370320200441186a200241a0016a41186a290300370300200441106a200241a0016a41106a290300370300200441086a200241a0016a41086a290300370300200420022903a001370300200b42ffffffff0f83200a4280808080708384210b410121110c030b418ab4c000411d41acfec5001036000b200241c0006a41186a20024180016a41186a290300370300200241c0006a41106a20024180016a41106a290300370300200241c0006a41086a20024180016a41086a2903003703002002200229038001370340410021110c010b41ecb3c000411e41acfec5001036000b200241e0006a41186a22064200370300200241e0006a41106a220d4200370300200241e0006a41086a2205420037030020024200370360200341e5d6c500ad42808080808002841002220441086a290000370300200220042900003703202004102c200520032903003703002002200229032022073703800120022007370360200341eae5c200ad4280808080f000841002220441086a290000370300200220042900003703202004102c20024180016a41086a2003290300220737030020022002290320220e37038001200c200e370000200c41086a2007370000200241c0006a41086a2005290300370300200241c0006a41106a200d290300370300200241c0006a41186a200629030037030020022002290360370340200241003602a801200242013703a001200b422088a7220c200241a0016a106702400240200c0d0020022802a801210420022802a401210d20022802a00121060c010b2008200c41306c6a21092008210503402005200241a0016a109101200541286a2903002107200541206a290300210e0240024020022802a401220d20022802a80122046b4110490d0020022802a00121060c010b200441106a22062004490d05200d41017422042006200420064b1b22034100480d0502400240200d0d002003102a21060c010b20022802a001200d2003102e21060b2006450d04200220033602a401200220063602a00120022802a80121042003210d0b200620046a220320073700082003200e3700002002200441106a22043602a8012009200541306a2205470d000b0b200241c0006aad42808080808004842004ad4220862006ad8410010240200d450d002006102c0b200c41306c220541306d2103410021060240024020050d0041012109410021030c010b200341ffffff3f712003470d03200341057422054100480d032005102a2209450d020b200ba721170240200c450d00200c41306c210d4100210620092105200821040340200441086a2900002107200441106a290000210e2004290000210a200541186a200441186a290000370000200541106a200e370000200541086a20073700002005200a370000200641016a2106200541206a2105200441306a2104200d41506a220d0d000b0b02402017450d002008102c0b200241a0016a41186a200141186a290000370300200241a0016a41106a200141106a290000370300200241a0016a41086a200141086a290000370300200220012900003703a001200241a0016a41012009200610dd01200020113a0001200041003a0000200041026a2002290180013701002000410a6a20024180016a41086a2f01003b01002003450d002009102c0b200241c0016a24000f0b1033000b1035000b960303057f017e017f230041e0006b22012400200141206a41186a4200370300200141206a41106a22024200370300200141206a41086a2203420037030020014200370320200141d0006a41086a220441e5d6c500ad42808080808002841002220541086a290000370300200120052900003703502005102c2003200429030037030020012001290350370320200441eae5c200ad4280808080f000841002220541086a290000370300200120052900003703502005102c200220012903502206370300200141086a2003290300370300200141106a2006370300200141186a20042903003703002001200637034020012001290320370300200141206a200110d10120012802202203410820031b2107410021040240024002402001290224420020031b2206422088a7220341014b0d0020030e020201020b03402003410176220520046a220220042007200241306c6a2000412010dd054101481b2104200320056b220341014b0d000b0b2007200441306c6a2000412010dd054521040b02402006a7450d002007102c0b200141e0006a240020040b960303057f017e017f230041e0006b22012400200141206a41186a4200370300200141206a41106a22024200370300200141206a41086a2203420037030020014200370320200141d0006a41086a220441e5d6c500ad42808080808002841002220541086a290000370300200120052900003703502005102c2003200429030037030020012001290350370320200441a283c100ad42808080809001841002220541086a290000370300200120052900003703502005102c200220012903502206370300200141086a2003290300370300200141106a2006370300200141186a20042903003703002001200637034020012001290320370300200141206a200110d10120012802202203410820031b2107410021040240024002402001290224420020031b2206422088a7220341014b0d0020030e020201020b03402003410176220520046a220220042007200241306c6a2000412010dd054101481b2104200320056b220341014b0d000b0b2007200441306c6a2000412010dd054521040b02402006a7450d002007102c0b200141e0006a240020040bb309010a7f230041b0016b2202240041002103024020012802102204450d0020012802082205200128020c460d00200128021421062001200541246a360208200241c4006a41026a2207200541036a2d00003a0000200241286a41086a2208200541106a290000370300200241286a41106a2209200541186a290000370300200241286a41186a220a200541206a280000360200200220052f00013b01442002200541086a29000037032820052d0000220b4102460d00200541046a280000210520012004417f6a360210200241086a41026a20072d00003a000020024190016a41086a200829030037030020024190016a41106a200929030037030020024190016a41186a200a280200360200200220022f01443b01082002200229032837039001024002400240200b4101460d002002418c016a41026a200241086a41026a2d00003a0000200241f0006a41086a20024190016a41086a290300370300200241f0006a41106a20024190016a41106a290300370300200241f0006a41186a20024190016a41186a2d00003a0000200220022f01083b018c0120022002290390013703700c010b200241c8006a2005410676109102200228024821040240024020022802502005413f7122014b0d00410021010c010b2002418c016a41026a200420014105746a220141026a2d00003a0000200241f8006a2001410f6a29000037030020024180016a200141176a29000037030020024188016a2001411f6a2d00003a0000200220012f00003b018c012002200129000737037020012800032105410121010b0240200228024c450d002004102c0b20010d00410121010c010b200241ec006a41026a2002418c016a41026a2d00003a000020024190016a41086a200241f0006a41086a29030037030020024190016a41106a200241f0006a41106a29030037030020024190016a41186a200241f0006a41186a2d00003a0000200220022f018c013b016c2002200229037037039001410021010b200241e8006a41026a2204200241ec006a41026a2d00003a0000200241c8006a41086a220720024190016a41086a290300370300200241c8006a41106a220820024190016a41106a290300370300200241c8006a41186a220920024190016a41186a2d00003a0000200220022f016c3b016820022002290390013703480240024020010d002002418c016a41026a20042d00003a0000200241f0006a41086a2007290300370300200241f0006a41106a2008290300370300200241f0006a41186a20092d00003a0000200220022f01683b018c0120022002290348370370410121010c010b200641013a0000410021010b200241246a41026a22042002418c016a41026a2d00003a0000200241086a41086a2207200241f0006a41086a290300370300200241086a41106a2208200241f0006a41106a290300370300200241086a41186a2209200241f0006a41186a2d00003a0000200220022f018c013b0124200220022903703703082001450d00200020022f01243b0001200041046a2005360000200041086a2002290308370000200041036a20042d00003a0000200041106a2007290300370000200041186a2008290300370000200041206a20092d00003a0000410121030b200020033a0000200241b0016a24000bc30405057f017e017f017e067f230041f0016b22022400024002402000280200220320002802044f0d00200028020c2104200141086a210520024190016a4102722106024003402000200341016a36020020024190016a2000280208280200220310af0120022d0090014101460d012002290091012107200241086a2003107720022802082208450d01200229020c210920022007370300024002402001280200220a41d0e1c100460d002001280204210b0c010b2006410041da0010da051a200241086a410041840110da051a41e401102a220a450d044100210b200a4100360200200a41046a20024190016a41dc0010db051a200a41e0006a200241086a41840110db051a200141003602042001200a3602000b024002400340200a41086a210c200a2f0106220d41037421034100210e024003402003450d012002200c410810dd05220f450d03200341786a2103200e41016a210e200c41086a210c200f417f4a0d000b200e417f6a210d0b0240200b450d00200b417f6a210b200a200d4102746a41e4016a280200210a0c010b0b2002200737021c200220053602182002200d360214200220013602102002200a36020c2002410036020820022009370294012002200836029001200241086a20024190016a10aa020c010b200a200e410c6c6a220341e4006a220c280200210e200c2009370200200341e0006a220c2802002103200c20083602002003450d00200e450d002003102c0b200028020022032000280204490d000c020b0b200441013a00000b200241f0016a24000f0b1033000bcc1207027f017e057f027e017f017e0a7f230041b0036b2202240020002802102203200328020041016a36020020002902142104200028020c2103200028020821052000280200210620002802042100200241f0016a41086a2207200141086a280200360200200220012902003703f001024002400240024020002f01062201410b490d00200241d0026a410272410041da0010da051a200241386a410041840110da051a41e401102a2208450d0320084100360200200841046a200241d0026a41dc0010db051a200841e0006a200241386a41840110db052107200241386a41086a2209200041b0016a280200360200200220002902a8013703382000413c6a330000210a2000413e6a310000210b20002d003f210c2000350038210d200841086a200041c0006a20002f010641796a220141037410db05210e2007200041b4016a2001410c6c10db052107200041063b0106200820013b0106200241d0026a41086a2009280200360200200220022903383703d002200d200a200b4210868442208684210a0240024020034107490d002003410374200e6a41506a200e200341796a22094103746a220e200141ffff037120096b41037410dc051a200e20043700002003410c6c20076a220341b87f6a200341ac7f6a2203200841066a22012f010020096b410c6c10dc051a200341086a200241f0016a41086a280200360200200320022903f0013702000c010b200041086a20034103746a220741086a2007200041066a22012f010020036b41037410dc051a20072004370000200041e0006a2003410c6c6a2207410c6a200720012f010020036b410c6c10dc051a200741086a200241f0016a41086a280200360200200720022903f0013702000b200120012f010041016a3b0100200241286a41086a220f200241d0026a41086a22102802002203360200200241086a221120033602002002200c3a0017200220022903d00222043703282002200a3e02102002200a4230883c00162002200a4220883d011420022004370300200229031021042000280200220c450d0120002f01042112200241d0026a410272211303402002200641016a22063602202002200c360224200f201128020036020020022002290300370328201241ffff03712109024002400240200c2f01062200410b490d002013410041da0010da051a200241f0016a200241d0026a41dc0010db051a200241386a410041b40110da051a419402102a2207450d0720074100360200200741046a200241f0016a41dc0010db051a200741e0006a200241386a41b40110db052103200c41386a290000210a200241386a41086a2214200c41b0016a2802003602002002200c41a8016a290200370338200741086a200c41c0006a200c2f0106220141796a220041037410db0521152003200c41b4016a2000410c6c10db052116200741e4016a200c4180026a2001417a6a220e41027410db052117200c41063b0106200720003b01060240200e450d00410021002017210303402003280200220120003b010420012007360200200341046a2103200e200041016a2200470d000b0b20102014280200220036020020022002290338220b3703d002201420003602002002200b370338201241ffff037122034107490d0120152009417a6a22034103746a2015200941796a22004103746a220120072f010620006b41037410dc051a200120043700002009410c6c20166a220141b87f6a200141ac7f6a220120072f0106220e20006b410c6c10dc051a200141086a200f280200360200200120022903283702002007200e41016a22013b01062009410274221220176a416c6a201720034102746a220e200141ffff0371220920036b41027410dc051a200e200836020020092003490d02200720126a41cc016a2103034020032802002201200041016a22003b010420012007360200200341046a210320002009490d000c030b0b200c41086a2201200941016a22034103746a200120094103746a2201200020096b220741037410dc051a20012004370000200c2009410c6c6a220141ec006a200141e0006a220e2007410c6c10dc051a200141e8006a200241286a41086a280200360200200e2002290328370200200c200041016a22003b01062009410274200c41e4016a22016a41086a200120034102746a2201200041ffff0371220720036b41027410dc051a20012008360200201241ffff037120074f0d05200c2003417f6a22004102746a41e8016a2103034020032802002201200041016a22003b01042001200c360200200341046a210320002007490d000c060b0b200c41086a2200200941016a220e4103746a200020094103746a2200200c2f0106220120096b221241037410dc051a20002004370000200c41e0006a2009410c6c6a2200410c6a20002012410c6c10dc051a200041086a200f28020036020020002002290328370200200c200141016a22003b010620094102742217200c41e4016a22016a41086a2001200e4102746a2212200041ffff03712201200e6b41027410dc051a20122008360200200320014f0d00200c20176a41e8016a2100034020002802002203200941016a22093b01042003200c360200200041046a210020012009470d000b0b200241106a41086a2014280200220036020020112000360200200220022903382204370310200220043703000240200c28020022000d0020072108200a21040c030b200c2f010421122000210c200a2104200721080c000b0b200020034103746a220941106a200941086a2209200120036b41037410dc051a2009200437000020002003410c6c6a220141ec006a200141e0006a220920002f010620036b410c6c10dc051a200141e8006a2007280200360200200920022903f001370200200020002f010641016a3b01060c010b200241d0026a410272410041da0010da051a200241f0016a200241d0026a41dc0010db051a200241386a410041b40110da051a419402102a2200450d0120004100360200200041046a200241f0016a41dc0010db051a200041e0006a200241386a41b40110db0521012000200528020022033602e401200520003602002005200528020441016a360204200341003b010420032000360200200120002f01062203410c6c6a22012002290300370200200020034103746a41086a2004370000200141086a200241086a280200360200200041e4016a200341016a22034102746a2008360200200020033b0106200820033b0104200820003602000b200241b0036a24000f0b1033000b0900200042043702000bf10602027f067e230041d0016b220624000240200341ff0171450d00200641d0006a2001ad42004280c8afa025420010e005200641c0006a2002418094ebdc032002418094ebdc03491bad420042e807420010e00520064190016a41186a420037030020064190016a41106a2207420037030020064190016a41086a220342003703002006420037039001200641c0016a41086a2202418be9c500ad42808080808001841002220141086a290000370300200620012900003703c0012001102c20032002290300370300200620062903c0013703900120024193e9c500ad42808080809002841002220141086a290000370300200620012900003703c0012001102c200720062903c0012208370300200641f0006a41086a2003290300370300200641f0006a41106a2008370300200641f0006a41186a2002290300370300200620083703b0012006200629039001370370200641d0006a41086a290300200641c0006a41086a2903007c2006290350220820062903407c2209200854ad7c20094280a094a58d1d7c2208200954ad7c2109200641e0006a200641f0006a1098010240024020062802600d00410021024200210a0c010b2006290368220b200b423f87220a7c200a85210a200b42005521020b200641206a20082009428094ebdc03420010e105200641106a2006290320220b200641206a41086a290300220c4280ec94a37c427f10e005200641306a20082009200a428094ebdc0380220d420010e0052006200a200d4280ec94a37c7e7ca72203360290012006418094ebdc03360294012006200b200c20064190016a2003418094ebdc034b4102746a350200220a420010e005427f427f2009200641306a41086a290300200641086a2903007c2006290330220c20062903007c220b200c54ad7c200b200a200820062903107c7e220a200a428094ebdc0380220a4280ec94a37c7e7c4280cab5ee0156200aa76aad7c220a200b54ad7c220c7c2008200a7c220d2008542203ad7c220b2003200b200954200b2009511b22031b42002009200c7d2008200a54ad7d220b2008200a7d220a200856200b200956200b2009511b22011b20021b220820057c427f200d20031b4200200a20011b20021b220920047c22042009542202ad7c22092002200920085420092008511b22021b2105427f200420021b21040b2000200437030020002005370308200641d0016a24000bb9280a017f047e067f027e047f017e017f017e0b7f027e230041e0046b2201240002400240024020004180e101700d00200141a0036a10ae0220014190016a200141a0036a10b7012001420020014190016a41086a29030022022001290390012203428080e983b1de1654ad7d2204200342808097fccea1697c22052003562004200256200342ffffe883b1de16561b22061b22033703a80120014200200520061b22023703a001200141a0036a41186a22072003370300200141a0036a41106a22082002370300200141a0036a41086a220941013a00002001410c3a00a0034100210a41014100200141a0036a109201200141003a00b701200142003703c001200142003703b801200742003703002008420037030020094200370300200142003703a003200141c8016a41086a220b41a4e9c500ad4280808080800184220c1002220641086a290000370300200120062900003703c8012006102c2009200b290300370300200120012903c80122033703c002200120033703a003200b41b9e9c500ad4280808080900184220d1002220641086a290000370300200120062900003703c8012006102c200820012903c8012203370300200141d8016a41086a220e2009290300370300200141d8016a41106a220f2003370300200141d8016a41186a2210200b290300370300200120033703c002200120012903a0033703d801200141a0036a200141d8016a10960120012802a0032206410420061b2111024020012902a403420020061b2212422088a72213450d00200141c8016aad4280808080c000842114200141a9036a2115200141c0026a41c0006a2116200141e0026a2117410021184100210a41002106024003400240024002400240200a450d00201120064102746a21192011200620186a4102746a211a0340200620134f0d02200141d8016a2019280200221b10af0220012903d8014201520d04200141c0026a200e41e00010db051a20012903a001220420012903c002220554200141a0016a41086a2903002203200141c0026a41086a29030022025420032002511b450d03200141013a00b7010240201820066a221b20134f0d00201a2019280200360200201941046a2119201a41046a211a200641016a22062013490d010c070b0b41fcb4c000201b20131038000b201120064102746a21190340200620134f0d01200141d8016a2019280200221b10af0220012903d8014201520d03200141c0026a200e41e00010db051a20012903a001220420012903c00222055a200141a0016a41086a2903002203200141c0026a41086a29030022025a20032002511b0d02201941046a2119200141013a00b701200641016a22062013490d000b4100210a0c050b41a8b4c000200620131038000b2001200420057d3703a0012001200320027d2004200554ad7d3703a801200b200c1002221941086a290000370300200120192900003703c8012019102c200141a0046a41086a221a200b290300370300200120012903c8013703a004200b41e1e5c200ad42808080809001841002221941086a290000370300200120192900003703c8012019102c200141b0046a41086a221c200b290300370300200120012903c8013703b0042001201b3602c801200720141006221941186a2900003703002008201941106a2900003703002009201941086a290000370300200120192900003703a0032019102c200141c0046a41186a221d2007290300370300200141c0046a41106a221e2008290300370300200141c0046a41086a221f2009290300370300200120012903a0033703c00441c000102a2219450d06201920012903a004370000201941086a201a290300370000201920012903b004370010201941186a201c290300370000201920012903c004370020201941286a201f290300370000201941306a201e290300370000201941386a201d2903003700002019ad428080808080088410052019102c201720012903d002200141c0026a41186a29030010c20120014180016a201620012903c002200141c0026a41086a2219290300109d01200141b8016a41086a221a427f201a290300220320014180016a41086a2903007c20012903b80122022001290380017c2204200254221aad7c2202201a200220035420022003511b221a1b3703002001427f2004201a1b3703b80120012903c0022103200141a0036a41386a201929030037030020152016290000370000201541086a201641086a290000370000201541106a201641106a290000370000201541186a201641186a290000370000200120033703d003200141023a00a8032001410c3a00a0032001201b3602cc0341014100200141a0036a1092010b2018417f6a2118200a41016a210a200641016a22062013490d000b0b200a450d00200620134f0d00201120064102746a2219200a4102746b2019201320066b41027410dc051a0b200742003703002008420037030020094200370300200142003703a003200b200c1002220641086a290000370300200120062900003703c8012006102c2009200b290300370300200120012903c80122033703c002200120033703a003200b200d1002220641086a290000370300200120062900003703c8012006102c200141c0026a41086a200b2903002203370300200120012903c80122023703c00220082002370000200841086a2003370000200e2009290300370300200f200829030037030020102007290300370300200120012903a0033703d8010240024020110d00200141d8016aad428080808080048410050c010b200141003602a803200142013703a0032013200a6b2206200141a0036a10670240024020060d0020012802a803211320012802a403210e20012802a00321190c010b201120064102746a210b20012802a403210e20012802a80321062011211a0340201a280200211b02400240200e20066b4104490d00200641046a211320012802a00321190c010b200641046a22132006490d05200e41017422192013201920134b1b22184100480d0502400240200e0d002018102a21190c010b20012802a003200e2018102e21190b2019450d06200120183602a403200120193602a0032018210e0b200120133602a803201920066a201b36000020132106200b201a41046a221a470d000b0b2012a72106200141d8016aad42808080808004842013ad4220862019ad8410010240200e450d002019102c0b2006450d002011102c0b024020012d00b7010d00200141d8006a20012903a0012203200141a0016a41086a2206290300220242c0843d420010e105200141c8006a20012903582204200141d8006a41086a290300220542c0fb42427f10e005200141386a2004200542a0c21e420010e005200620022002200141386a41086a29030020012903382204200320012903487c220542a0c21e7e2005420188220542c0fb427e7c42a0c21e562005a76aad7c2205200454ad7c22042005200356200420025620042002511b22131b22047d20032003200520131b220254ad7d3703002001200320027d3703a001200141a0036a41186a22194200370300200141a0036a41106a221a4200370300200141a0036a41086a22134200370300200142003703a003200141c8016a41086a2206418be9c500ad428080808080018422051002220e41086a2900003703002001200e2900003703c801200e102c20132006290300370300200120012903c80122033703c004200120033703a003200641c9b5c000ad4280808080d00184220c1002220e41086a2900003703002001200e2900003703c801200e102c201a20012903c8012203370300200141d8016a41086a22182013290300370300200141d8016a41106a220b2003370300200141d8016a41186a22082006290300370300200120033703c004200120012903a0033703d801200141e8006a200141d8016a4120109e01200141e8006a41106a29030021032001290370210d2001280268210e20194200370300201a420037030020134200370300200142003703a003200620051002221b41086a2900003703002001201b2900003703c801201b102c20132006290300370300200120012903c80122053703c004200120053703a0032006200c1002221b41086a2900003703002001201b2900003703c801201b102c20192006290300220537030020182013290300370300200b20012903c801220c370300200820053703002001200c3703c004200120012903a0033703d8012001420020034200200e1b220320047d200d4200200e1b2205200254ad7d220c200520027d220d200556200c200356200c2003511b22061b3703a80320014200200d20061b3703a003200141d8016aad4280808080800484200141a0036aad42808080808002841001200141b8016a41086a220e427f200e290300220c2003200420061b7c20012903b80122032005200220061b7c22052003542206ad7c220320062003200c542003200c511b22061b3703002001427f200520061b3703b80120192004370300201a2002370300201341033a00002001410c3a00a00341014100200141a0036a1092010b200141c0026a10ae02200141d8016a200141c0026a20012903b8012203200141b8016a41086a2903002202410210ac010240024020012802d8010d00200141d8016a41106a290300210520012903e0012104200141a0036a41186a22194200370300200141a0036a41106a22064200370300200141a0036a41086a221a4200370300200142003703a003200141c8016a41086a2213418be9c500ad428080808080018422141002220e41086a2900003703002001200e2900003703c801200e102c201a2013290300370300200120012903c801220c3703a0042001200c3703a003201341c9b5c000ad4280808080d0018422201002220e41086a2900003703002001200e2900003703c801200e102c200620012903c801220c370300200141c0046a41086a201a290300370300200141c0046a41106a221a200c370300200141c0046a41186a220e20132903003703002001200c3703b004200120012903a0033703c004200141086a200141c0046a4120109e01200220057d2003200454ad7d200520027d2004200354ad7d20042003582005200258200520025122131b221b1b2121200320047d200420037d201b1b2112200141086a41106a29030042002001280208221b1b210c20012903104200201b1b210d024002402004200356200520025620131b0d002019420037030020064200370300200141a0036a41086a221b4200370300200142003703a003200141c8016a41086a221320141002221841086a290000370300200120182900003703c8012018102c201b2013290300370300200120012903c80122033703a004200120033703a003201320201002221841086a290000370300200120182900003703c8012018102c200141b0046a41086a20132903002203370300200120012903c80122023703b00420062002370000200641086a2003370000200141c0046a41086a201b290300370300201a2006290300370300200e2019290300370300200120012903a0033703c0042001427f200c20217c200d20127c2202200d542206ad7c220320062003200c542003200c511b22061b3703a8032001427f200220061b3703a003200141a0036a21060c010b2019420037030020064200370300200141a0036a41086a221b4200370300200142003703a003200141c8016a41086a221320141002221841086a290000370300200120182900003703c8012018102c201b2013290300370300200120012903c80122033703a004200120033703a003201320201002221841086a290000370300200120182900003703c8012018102c200141b0046a41086a20132903002203370300200120012903c80122023703b00420062002370000200641086a2003370000200141c0046a41086a201b290300370300201a2006290300370300200e2019290300370300200120012903a0033703c00420014200200c20217d200d201254ad7d2203200d20127d2202200d562003200c562003200c511b22061b3703a80320014200200220061b3703a003200141a0036a21060b200141c0046aad42808080808004842006ad428080808080028410010c010b41c9c5c100ad4280808080a009841004200141a0036a41186a22194200370300200141a0036a41106a221a4200370300200141a0036a41086a22134200370300200142003703a003200141c8016a41086a2206418be9c500ad428080808080018422051002220e41086a2900003703002001200e2900003703c801200e102c20132006290300370300200120012903c80122043703c004200120043703a003200641c9b5c000ad4280808080d00184220c1002220e41086a2900003703002001200e2900003703c801200e102c201a20012903c8012204370300200141d8016a41086a221b2013290300370300200141d8016a41106a22182004370300200141d8016a41186a220b2006290300370300200120043703c004200120012903a0033703d801200141206a200141d8016a4120109e01200141206a41106a29030021042001290328210d2001280220210e20194200370300201a420037030020134200370300200142003703a003200620051002221a41086a2900003703002001201a2900003703c801201a102c20132006290300370300200120012903c80122053703c004200120053703a0032006200c1002221a41086a2900003703002001201a2900003703c801201a102c201920062903002205370300201b2013290300370300201820012903c801220c370300200b20053703002001200c3703c004200120012903a0033703d8012001427f20044200200e1b220420027c200d4200200e1b220220037c22052002542206ad7c22032006200320045420032004511b22061b3703a8032001427f200520061b3703a003200141d8016aad4280808080800484200141a0036aad428080808080028410010b20012903a0012103200141b8036a200141a0016a41086a290300370300200141b0036a2003370300200141a0036a41086a41043a00002001410c3a00a00341014100200141a0036a1092010b2000108c01200141e0046a24000f0b1035000b1033000be70301067f230041d0006b22012400200141ed003a0008024002404101102a2202450d00200241ed003a0000200141ef003a0008200241014102102e2202450d00200241ef003a0001200141e4003a0008200241024104102e2202450d00200241e4003a0002200241ec003a0003200141f0003a0008200241044108102e2202450d00200241f0003a0004200241f9003a00052002412f3a0006200241f4003a0007200141f2003a0008200241084110102e2203450d00200341f2003a0008200341f3003a0009200341f2003a000a200341f9003a000b200141003a0048410c210220032104410021050340200141003a0008200141086a20042002410047220610db051a024020020d00200141003a00080b20022006490d02200141286a20056a20012d00083a00002001200541016a22053a0048200220066b2102200420066a210420054120470d000b200141086a41186a2202200141286a41186a290300370300200141086a41106a2205200141286a41106a290300370300200141086a41086a2206200141286a41086a290300370300200120012903283703082003102c200041186a2002290300370000200041106a2005290300370000200041086a200629030037000020002001290308370000200141d0006a24000f0b1033000b200620021047000b8d0402077f017e230041f0016b22022400200241086a220341a4e9c500ad42808080808001841002220441086a290000370300200220042900003703002004102c200241e8006a41086a2205200329030037030020022002290300370368200341e1e5c200ad42808080809001841002220441086a290000370300200220042900003703002004102c200241f8006a41086a2206200329030037030020022002290300370378200220013602ec01200241186a2201200241ec016aad4280808080c000841006220441186a290000370300200241106a2207200441106a2900003703002003200441086a290000370300200220042900003703002004102c20024188016a41186a2208200129030037030020024188016a41106a2201200729030037030020024188016a41086a220720032903003703002002200229030037038801024041c000102a2204450d0020042002290368370000200420022903783700102004200229038801370020200441086a2005290300370000200441186a2006290300370000200441286a2007290300370000200441306a2001290300370000200441386a20082903003700002002200441c00010b8022002290300210920024188016a200341e00010db051a0240024020094201510d00200042003703000c010b20004201370300200041086a20024188016a41e00010db051a0b2004102c200241f0016a24000f0b1033000b961b05067f017e047f017e277f230041c00d6b22032400200341106a41186a22044200370300200341106a41106a22054200370300200341106a41086a2206420037030020034200370310200341f00c6a41086a22074191b0c200ad4280808080e000841002220841086a290000370300200320082900003703f00c2008102c20062007290300370300200320032903f00c370310200741acb0c200ad4280808080e000841002220841086a290000370300200320082900003703f00c2008102c200520032903f00c2209370300200341a00d6a41086a220a2006290300370300200341a00d6a41106a220b2009370300200341a00d6a41186a220c2007290300370300200320093703900d200320032903103703a00d200341086a200341a00d6a4120109401200328020c21082003280208210d20044200370300200542003703002006420037030020034200370310200741c586c200ad42808080808003841002220541086a290000370300200320052900003703f00c2005102c20062007290300370300200320032903f00c37031020074193c6c100ad4280808080e001841002220541086a290000370300200320052900003703f00c2005102c200420072903002209370300200a2006290300370300200b20032903f00c220e370300200c20093703002003200e3703900d200320032903103703a00d200341106a200341a00d6a412010d00120032802102206410120061b210f024002402003290214420020061b2209422088a722040d0020004200370000200041186a4200370000200041106a4200370000200041086a42003700000c010b200341106a410041e00c10da051a2008417f6a41d100704130200d1b2106200241056a2110200f41206a2111200f20044105746a2112410021134100211441002115410021164100211741002118410021194100211a4100211b4100211c4100211d4100211e4100211f410021204100212141002122410021234100212441002125410021264100212741002128410021294100212a4100212b4100212c4100212d4100212e4100212f410021304100213141002132200f21084100213341d10021340240034020332105024002402006450d000240200f450d00200641016a2106034020112008220441206a22352004201246220d1b21082006417f6a22060d000b20112035200d1b2108200f2004200d1b220d0d020c040b200641016a2106034020122008460d04200841206a21082006417f6a22060d000b200841606a220d0d010c030b024020082012470d0020112108200f220d0d010c030b2008210d200841206a21080b02400240024002402010417f4c0d00024002402010450d002010102a2206450d0341002104200341003602a80d200320103602a40d200320063602a00d0c010b200341003602a80d200320103602a40d200341013602a00d4101102a2206450d02200341013602a40d200320063602a00d20032802a80d21040b2003200441016a3602a80d200620046a20053a00002002200341a00d6a10670240024020032802a40d220420032802a80d22066b2002490d0020032802a00d21040c010b200620026a22352006490d03200441017422062035200620354b1b22064100480d030240024020040d002006102a21040c010b20032802a00d20042006102e21040b2004450d02200320063602a40d200320043602a00d20032802a80d21060b2003200620026a3602a80d200420066a2001200210db051a2003200341a00d6a3602900d200d200341900d6a10940220032802a40d2104200c20033502a80d42208620032802a00d2233ad841006220641186a290000370300200b200641106a290000370300200a200641086a290000370300200320062900003703a00d2006102c200341f00c6a41186a220d200c290300370300200341f00c6a41106a2235200b2903003703002007200a290300370300200320032903a00d3703f00c02402004450d002033102c0b2034417f6a2134200541016a2133200341106a20054103704105746a220620032903f00c370000200641186a200d290300370000200641106a2035290300370000200641086a20072903003700004100210403402005200541036e220d417d6c6a4102470d04200341106a20046a220641df006a2d000022132006411f6a2d000022147120132014722006413f6a2d000071722132200641de006a2d000022132006411e6a2d000022147120132014722006413e6a2d000071722131200641dd006a2d000022132006411d6a2d000022147120132014722006413d6a2d000071722130200641dc006a2d000022132006411c6a2d000022147120132014722006413c6a2d00007172212f200641db006a2d000022132006411b6a2d000022147120132014722006413b6a2d00007172212e200641da006a2d000022132006411a6a2d000022147120132014722006413a6a2d00007172212d200641d9006a2d00002213200641196a2d00002214712013201472200641396a2d00007172212c200641d8006a2d00002213200641186a2d00002214712013201472200641386a2d00007172212b200641d7006a2d00002213200641176a2d00002214712013201472200641376a2d00007172212a200641d6006a2d00002213200641166a2d00002214712013201472200641366a2d000071722129200641d5006a2d00002213200641156a2d00002214712013201472200641356a2d000071722128200641d4006a2d00002213200641146a2d00002214712013201472200641346a2d000071722127200641d3006a2d00002213200641136a2d00002214712013201472200641336a2d000071722126200641d2006a2d00002213200641126a2d00002214712013201472200641326a2d000071722125200641d1006a2d00002213200641116a2d00002214712013201472200641316a2d000071722124200641d0006a2d00002213200641106a2d00002214712013201472200641306a2d000071722123200641cf006a2d000022132006410f6a2d000022147120132014722006412f6a2d000071722122200641ce006a2d000022132006410e6a2d000022147120132014722006412e6a2d000071722121200641cd006a2d000022132006410d6a2d000022147120132014722006412d6a2d000071722120200641cc006a2d000022132006410c6a2d000022147120132014722006412c6a2d00007172211f200641cb006a2d000022132006410b6a2d000022147120132014722006412b6a2d00007172211e200641ca006a2d000022132006410a6a2d000022147120132014722006412a6a2d00007172211d200641c9006a2d00002213200641096a2d00002214712013201472200641296a2d00007172211c200641c8006a2d00002213200641086a2d00002214712013201472200641286a2d00007172211b200641c7006a2d00002213200641076a2d00002214712013201472200641276a2d00007172211a200641c6006a2d00002213200641066a2d00002214712013201472200641266a2d000071722119200641c5006a2d00002213200641056a2d00002214712013201472200641256a2d000071722118200641c4006a2d00002213200641046a2d00002214712013201472200641246a2d000071722117200641c3006a2d00002213200641036a2d00002214712013201472200641236a2d000071722116200641c2006a2d00002213200641026a2d00002214712013201472200641226a2d000071722115200641c1006a2d00002213200641016a2d00002214712013201472200641216a2d000071722114200641c0006a2d0000221320062d00002235712013203572200641206a2d000071722113200441800c460d04200341106a2004200d410574200541096e41e0006c6b6a6a220641ff006a20323a0000200641fe006a20313a0000200641fd006a20303a0000200641fc006a202f3a0000200641fb006a202e3a0000200641fa006a202d3a0000200641f9006a202c3a0000200641f8006a202b3a0000200641f7006a202a3a0000200641f6006a20293a0000200641f5006a20283a0000200641f4006a20273a0000200641f3006a20263a0000200641f2006a20253a0000200641f1006a20243a0000200641f0006a20233a0000200641ef006a20223a0000200641ee006a20213a0000200641ed006a20203a0000200641ec006a201f3a0000200641eb006a201e3a0000200641ea006a201d3a0000200641e9006a201c3a0000200641e8006a201b3a0000200641e7006a201a3a0000200641e6006a20193a0000200641e5006a20183a0000200641e4006a20173a0000200641e3006a20163a0000200641e2006a20153a0000200641e1006a20143a0000200641e0006a20133a0000200d2105200441e0006a220441e00c470d000c040b0b103a000b1033000b1035000b4100210620340d000b0b200020323a001f200020313a001e200020303a001d2000202f3a001c2000202e3a001b2000202d3a001a2000202c3a00192000202b3a00182000202a3a0017200020293a0016200020283a0015200020273a0014200020263a0013200020253a0012200020243a0011200020233a0010200020223a000f200020213a000e200020203a000d2000201f3a000c2000201e3a000b2000201d3a000a2000201c3a00092000201b3a00082000201a3a0007200020193a0006200020183a0005200020173a0004200020163a0003200020153a0002200020143a0001200020133a00000b02402009a7450d00200f102c0b200341c00d6a24000bf40508017f017e047f017e017f017e037f017e230041f0016b22022400200241186a2000200110ce01200241186a41106a2903002101200229032021000240024020022903182203a7450d00200241e0006a10ae02200241e0006a20002001109c01200241f8006a2001370300200241e0006a41106a2000370300200241e8006a41053a00002002410c3a006041014100200241e0006a1092010c010b2003500d00200241e0006a41186a22044200370300200241e0006a41106a22054200370300200241e0006a41086a2206420037030020024200370360200241e0016a41086a2207418be9c500ad428080808080018422081002220941086a290000370300200220092900003703e0012009102c20062007290300370300200220022903e001220337035020022003370360200741c9b5c000ad4280808080d00184220a1002220941086a290000370300200220092900003703e0012009102c200520022903e0012203370300200241306a41086a220b2006290300370300200241306a41106a220c2003370300200241306a41186a220d200729030037030020022003370350200220022903603703302002200241306a4120109e01200241106a29030021032002290308210e2002280200210920044200370300200542003703002006420037030020024200370360200720081002220541086a290000370300200220052900003703e0012005102c20062007290300370300200220022903e0012208370350200220083703602007200a1002220541086a290000370300200220052900003703e0012005102c200420072903002208370300200b2006290300370300200c20022903e001220a370300200d20083703002002200a37035020022002290360370330200242002003420020091b220320017d200e420020091b2201200054ad7d2208200120007d2200200156200820035620082003511b22071b37036820024200200020071b370360200241306aad4280808080800484200241e0006aad428080808080028410010b200241f0016a24000b130020004103360204200041b4c6c1003602000b3400200041a4e9c50036020420004100360200200041146a4103360200200041106a419ccdc100360200200041086a42083702000b1300200041043602042000419cd1c1003602000b2e01017f02404104102a22020d001033000b20004284808080c00037020420002002360200200241a0c21e3600000b2e01017f02404104102a22020d001033000b20004284808080c0003702042000200236020020024180e1013600000b2e01017f02404104102a22020d001033000b20004284808080c00037020420002002360200200241d086033600000be90804067f027e077f027e230041e0016b220324002003200236020420032001360200200341086a2002ad4220862001ad841003108d0102400240200328020822040d00200042003703000c010b200341106a2802002105200328020c210641002101200341003a00d801200541706a2107024002400340024020052001470d00200141ff0171450d02200341003a00d8010c020b200341b8016a20016a200420016a2d00003a00002003200141016a22023a00d8012007417f6a21072002210120024120470d000b200341d8006a41086a200341b8016a41086a290300370300200341d8006a41106a200341b8016a41106a290300370300200341d8006a41186a200341b8016a41186a290300370300200320032903b801370358200520026b22084110490d00200420026a22052900002109200541086a290000210a41002101200341003a00d801200841706a21080340024020082001470d00200141ff0171450d02200341003a00d8010c020b200341b8016a20016a200520016a41106a2d00003a00002003200141016a22023a00d8012002210120024120470d000b200341f8006a41086a220b200341b8016a41086a2201290300370300200341f8006a41106a220c200341b8016a41106a2208290300370300200341f8006a41186a220d200341b8016a41186a220e290300370300200320032903b801370378200720026b410f4d0d00200341386a41086a2207200341d8006a41086a290300370300200341386a41106a220f200341d8006a41106a290300370300200341386a41186a2210200341d8006a41186a290300370300200341186a41086a2211200b290300370300200341186a41106a220b200c290300370300200341186a41186a220c200d2903003703002003200329035837033820032003290378370318200520026a220241106a2900002112200241186a2900002113200120072903003703002008200f290300370300200e201029030037030020034198016a41086a2202201129030037030020034198016a41106a2207200b29030037030020034198016a41186a2205200c290300370300200320032903383703b8012003200329031837039801200041206a2013370300200041186a2012370300200041106a200a37030020002009370308200041286a20032903b801370300200041306a2001290300370300200041386a2008290300370300200041c0006a200e290300370300200041c8006a200329039801370300200041d0006a2002290300370300200041d8006a2007290300370300200041e0006a2005290300370300420121090c010b200341003602a00120034201370398012003410b36027c20032003360278200320034198016a360258200341cc016a4101360200200342013702bc01200341d0b0c2003602b8012003200341f8006a3602c801200341d8006a41c49ac500200341b8016a10391a20033502a0014220862003350298018410040240200328029c01450d00200328029801102c0b420021090b200020093703002006450d002004102c0b200341e0016a24000bc70904067f017e047f017e230041b0016b22072400200741206a200242002003200410e005200741f0006a41186a22084200370300200741f0006a41106a22094200370300200741f0006a41086a220a420037030020074200370370200741a0016a41086a220b41e4d2c500ad428080808080018422041002220c41086a2900003703002007200c2900003703a001200c102c200a200b290300370300200720072903a00122033703900120072003370370200b41ecd2c500ad4280808080800184220d1002220c41086a2900003703002007200c2900003703a001200c102c200920072903a0012203370300200741d0006a41086a220c200a290300370300200741d0006a41106a220e2003370300200741d0006a41186a220f200b290300370300200720033703900120072007290370370350200741c0006a200741d0006a10980120072903482103200728024021102008420037030020094200370300200a420037030020074200370370200b20041002221141086a290000370300200720112900003703a0012011102c200a200b290300370300200720072903a00122043703900120072004370370200b200d1002221141086a290000370300200720112900003703a0012011102c2008200b2903002204370300200c200a290300370300200e20072903a001220d370300200f20043703002007200d37039001200720072903703703502007200120027d2003420020101b7c370370200741d0006aad42808080808004842204200741f0006aad220d42808080808001841001200741306a20002007290320200741206a41086a290300109d012005200729033022027d200220057d2002200558200741306a41086a290300220320065820032006511b22111b2101200620037d2005200254ad7d200320067d2002200554ad7d20111b2105024002402011450d002001200510a9010c010b2008420037030020094200370300200a420037030020074200370370200b418be9c500ad428080808080018422021002221141086a290000370300200720112900003703a0012011102c200a200b290300370300200720072903a00122063703900120072006370370200b41c9b5c000ad4280808080d0018422031002221141086a290000370300200720112900003703a0012011102c200920072903a0012206370300200c200a290300370300200e2006370300200f200b290300370300200720063703900120072007290370370350200741086a200741d0006a4120109e01200741086a41106a290300210620072903102112200728020821112008420037030020094200370300200a420037030020074200370370200b20021002220941086a290000370300200720092900003703a0012009102c200a200b290300370300200720072903a00122023703900120072002370370200b20031002220941086a290000370300200720092900003703a0012009102c2008200b2903002202370300200c200a290300370300200e20072903a0012203370300200f20023703002007200337039001200720072903703703502007427f2006420020111b220620057c2012420020111b220520017c2202200554220bad7c2205200b200520065420052006511b220b1b3703782007427f2002200b1b3703702004200d428080808080028410010b200741b0016a24000bdb2601067f20002d000021020240024002400240200141046a2203280200200141086a22042802002205460d00200128020021060c010b200541016a22062005490d02200541017422072006200720064b1b22074100480d020240024020050d002007102a21060c010b200128020020052007102e21060b2006450d0120012006360200200141046a2007360200200141086a28020021050b2004200541016a360200200620056a20023a000020002d0001210202400240200328020020042802002205460d00200128020021060c010b200541016a22062005490d02200541017422072006200720064b1b22074100480d020240024020050d002007102a21060c010b200128020020052007102e21060b2006450d0120012006360200200141046a2007360200200141086a28020021050b2004200541016a360200200620056a20023a000020002d0002210202400240200328020020042802002205460d00200128020021060c010b200541016a22062005490d02200541017422072006200720064b1b22074100480d020240024020050d002007102a21060c010b200128020020052007102e21060b2006450d0120012006360200200141046a2007360200200141086a28020021050b2004200541016a360200200620056a20023a000020002d0003210202400240200328020020042802002205460d00200128020021060c010b200541016a22062005490d02200541017422072006200720064b1b22074100480d020240024020050d002007102a21060c010b200128020020052007102e21060b2006450d0120012006360200200141046a2007360200200141086a28020021050b2004200541016a360200200620056a20023a000020002d0004210202400240200328020020042802002205460d00200128020021060c010b200541016a22062005490d02200541017422072006200720064b1b22074100480d020240024020050d002007102a21060c010b200128020020052007102e21060b2006450d0120012006360200200141046a2007360200200141086a28020021050b2004200541016a360200200620056a20023a000020002d0005210202400240200328020020042802002205460d00200128020021060c010b200541016a22062005490d02200541017422072006200720064b1b22074100480d020240024020050d002007102a21060c010b200128020020052007102e21060b2006450d0120012006360200200141046a2007360200200141086a28020021050b2004200541016a360200200620056a20023a000020002d0006210202400240200328020020042802002205460d00200128020021060c010b200541016a22062005490d02200541017422072006200720064b1b22074100480d020240024020050d002007102a21060c010b200128020020052007102e21060b2006450d0120012006360200200141046a2007360200200141086a28020021050b2004200541016a360200200620056a20023a000020002d0007210202400240200328020020042802002205460d00200128020021060c010b200541016a22062005490d02200541017422072006200720064b1b22074100480d020240024020050d002007102a21060c010b200128020020052007102e21060b2006450d0120012006360200200141046a2007360200200141086a28020021050b2004200541016a360200200620056a20023a000020002d0008210202400240200328020020042802002205460d00200128020021060c010b200541016a22062005490d02200541017422072006200720064b1b22074100480d020240024020050d002007102a21060c010b200128020020052007102e21060b2006450d0120012006360200200141046a2007360200200141086a28020021050b2004200541016a360200200620056a20023a000020002d0009210202400240200328020020042802002205460d00200128020021060c010b200541016a22062005490d02200541017422072006200720064b1b22074100480d020240024020050d002007102a21060c010b200128020020052007102e21060b2006450d0120012006360200200141046a2007360200200141086a28020021050b2004200541016a360200200620056a20023a000020002d000a210202400240200328020020042802002205460d00200128020021060c010b200541016a22062005490d02200541017422072006200720064b1b22074100480d020240024020050d002007102a21060c010b200128020020052007102e21060b2006450d0120012006360200200141046a2007360200200141086a28020021050b2004200541016a360200200620056a20023a000020002d000b210202400240200328020020042802002205460d00200128020021060c010b200541016a22062005490d02200541017422072006200720064b1b22074100480d020240024020050d002007102a21060c010b200128020020052007102e21060b2006450d0120012006360200200141046a2007360200200141086a28020021050b2004200541016a360200200620056a20023a000020002d000c210202400240200328020020042802002205460d00200128020021060c010b200541016a22062005490d02200541017422072006200720064b1b22074100480d020240024020050d002007102a21060c010b200128020020052007102e21060b2006450d0120012006360200200141046a2007360200200141086a28020021050b2004200541016a360200200620056a20023a000020002d000d210202400240200328020020042802002205460d00200128020021060c010b200541016a22062005490d02200541017422072006200720064b1b22074100480d020240024020050d002007102a21060c010b200128020020052007102e21060b2006450d0120012006360200200141046a2007360200200141086a28020021050b2004200541016a360200200620056a20023a000020002d000e210202400240200328020020042802002205460d00200128020021060c010b200541016a22062005490d02200541017422072006200720064b1b22074100480d020240024020050d002007102a21060c010b200128020020052007102e21060b2006450d0120012006360200200141046a2007360200200141086a28020021050b2004200541016a360200200620056a20023a000020002d000f210202400240200328020020042802002205460d00200128020021060c010b200541016a22062005490d02200541017422072006200720064b1b22074100480d020240024020050d002007102a21060c010b200128020020052007102e21060b2006450d0120012006360200200141046a2007360200200141086a28020021050b2004200541016a360200200620056a20023a000020002d0010210202400240200328020020042802002205460d00200128020021060c010b200541016a22062005490d02200541017422072006200720064b1b22074100480d020240024020050d002007102a21060c010b200128020020052007102e21060b2006450d0120012006360200200141046a2007360200200141086a28020021050b2004200541016a360200200620056a20023a000020002d0011210202400240200328020020042802002205460d00200128020021060c010b200541016a22062005490d02200541017422072006200720064b1b22074100480d020240024020050d002007102a21060c010b200128020020052007102e21060b2006450d0120012006360200200141046a2007360200200141086a28020021050b2004200541016a360200200620056a20023a000020002d0012210202400240200328020020042802002205460d00200128020021060c010b200541016a22062005490d02200541017422072006200720064b1b22074100480d020240024020050d002007102a21060c010b200128020020052007102e21060b2006450d0120012006360200200141046a2007360200200141086a28020021050b2004200541016a360200200620056a20023a000020002d0013210202400240200328020020042802002205460d00200128020021060c010b200541016a22062005490d02200541017422072006200720064b1b22074100480d020240024020050d002007102a21060c010b200128020020052007102e21060b2006450d0120012006360200200141046a2007360200200141086a28020021050b2004200541016a360200200620056a20023a000020002d0014210202400240200328020020042802002205460d00200128020021060c010b200541016a22062005490d02200541017422072006200720064b1b22074100480d020240024020050d002007102a21060c010b200128020020052007102e21060b2006450d0120012006360200200141046a2007360200200141086a28020021050b2004200541016a360200200620056a20023a000020002d0015210202400240200328020020042802002205460d00200128020021060c010b200541016a22062005490d02200541017422072006200720064b1b22074100480d020240024020050d002007102a21060c010b200128020020052007102e21060b2006450d0120012006360200200141046a2007360200200141086a28020021050b2004200541016a360200200620056a20023a000020002d0016210202400240200328020020042802002205460d00200128020021060c010b200541016a22062005490d02200541017422072006200720064b1b22074100480d020240024020050d002007102a21060c010b200128020020052007102e21060b2006450d0120012006360200200141046a2007360200200141086a28020021050b2004200541016a360200200620056a20023a000020002d0017210202400240200328020020042802002205460d00200128020021060c010b200541016a22062005490d02200541017422072006200720064b1b22074100480d020240024020050d002007102a21060c010b200128020020052007102e21060b2006450d0120012006360200200141046a2007360200200141086a28020021050b2004200541016a360200200620056a20023a000020002d0018210202400240200328020020042802002205460d00200128020021060c010b200541016a22062005490d02200541017422072006200720064b1b22074100480d020240024020050d002007102a21060c010b200128020020052007102e21060b2006450d0120012006360200200141046a2007360200200141086a28020021050b2004200541016a360200200620056a20023a000020002d0019210202400240200328020020042802002205460d00200128020021060c010b200541016a22062005490d02200541017422072006200720064b1b22074100480d020240024020050d002007102a21060c010b200128020020052007102e21060b2006450d0120012006360200200141046a2007360200200141086a28020021050b2004200541016a360200200620056a20023a000020002d001a210202400240200328020020042802002205460d00200128020021060c010b200541016a22062005490d02200541017422072006200720064b1b22074100480d020240024020050d002007102a21060c010b200128020020052007102e21060b2006450d0120012006360200200141046a2007360200200141086a28020021050b2004200541016a360200200620056a20023a000020002d001b210202400240200328020020042802002205460d00200128020021060c010b200541016a22062005490d02200541017422072006200720064b1b22074100480d020240024020050d002007102a21060c010b200128020020052007102e21060b2006450d0120012006360200200141046a2007360200200141086a28020021050b2004200541016a360200200620056a20023a000020002d001c210202400240200328020020042802002205460d00200128020021060c010b200541016a22062005490d02200541017422072006200720064b1b22074100480d020240024020050d002007102a21060c010b200128020020052007102e21060b2006450d0120012006360200200141046a2007360200200141086a28020021050b2004200541016a360200200620056a20023a000020002d001d210202400240200328020020042802002205460d00200128020021060c010b200541016a22062005490d02200541017422072006200720064b1b22074100480d020240024020050d002007102a21060c010b200128020020052007102e21060b2006450d0120012006360200200141046a2007360200200141086a28020021050b2004200541016a360200200620056a20023a000020002d001e210202400240200328020020042802002205460d00200128020021060c010b200541016a22062005490d02200541017422072006200720064b1b22074100480d020240024020050d002007102a21060c010b200128020020052007102e21060b2006450d0120012006360200200141046a2007360200200141086a28020021050b2004200541016a360200200620056a20023a000020002d001f210502400240200328020020042802002200460d00200128020021030c010b200041016a22032000490d02200041017422062003200620034b1b22064100480d020240024020000d002006102a21030c010b200128020020002006102e21030b2003450d0120012003360200200141046a2006360200200141086a28020021000b2004200041016a360200200320006a20053a00000f0b1033000b1035000b34002000418be9c50036020420004100360200200041146a4101360200200041106a41f0d6c100360200200041086a42083702000b130020004102360204200041e4d7c1003602000b3400200041c586c20036020420004100360200200041146a4101360200200041106a41f4d8c100360200200041086a42183702000bb80303017f017e027f230041d0006b2203240002402001200210252204422088a72201450d002004a722022d0000220541014b0d002001417f6a210602400240024020050e020001000b41002101200341003a0049200241016a21050340024020062001470d00200141ff0171450d04200341003a00490c040b200341286a20016a200520016a2d00003a00002003200141016a22023a00492002210120024121470d000b200341106a200341316a290000370300200341186a200341396a290000370300200341206a200341c1006a2900003703002003200329002937030820032d00282101410021020c010b2006450d0120022d0001220141034f0d01200341086a41186a200341286a41186a290000370300200341086a41106a200341286a41106a290000370300200341086a41086a200341286a41086a29000037030020032003290028370308410121020b200020013a0001200020023a0000200041026a20032903083700002000410a6a200341106a290300370000200041126a200341186a2903003700002000411a6a200341206a290300370000200341d0006a24000f0b41d88bc600412e200341286a41888cc600103b000b130020004102360204200041f4e9c5003602000bf80303097f017e017f230041e0026b22022400200141086a2802002103200028020421042000280200210520012802042106024020002802082207200028020c2208460d0020012802002100200241086a41096a2109200241d0016a410472210a0240034020072802002101200241c4006a200741046a418c0110db051a20014118460d01200220013602d001200a200241c4006a418c0110db051a200241003b0118200241086a200241d0016a200241186a10c1022002290308210b20022d00102101200241d0016a41026a220c200941026a2d00003a0000200220092f00003b01d001024020014102460d00200241186a41026a200c2d00003a0000200220022f01d0013b01180b200041086a20013a00002000200b370200200041096a20022f01183b00002000410b6a200241186a41026a2d00003a00002000410c6a2100200341016a210320074190016a22072008470d000b200821070c010b20074190016a21070b20062003360200024020072008460d00200241d0016a4104722101034020072802002100200241d0016a200741046a418c0110db051a20004118460d01200241c4006a200241d0016a418c0110db051a200220003602d0012001200241c4006a418c0110db051a200241d0016a107320074190016a22072008470d000b0b02402004450d002005102c0b200241e0026a24000bc4880308017f017e067f027e057f017e197f067e230041c00a6b220324000240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020012802000e180102000304001b1a19181716150e0d0c0b0a090800000007010b000b200141106a29030021042001410c6a280200210520022d0001210620022d00002102024002400240024002400240024002400240200141086a2802002207417f6a0e0708000102030405080b2004a7210702400240200241ff01710d00200641ff01714101460d010b2007450d3b2005102c0c3b0b2007450d362005102c0c360b200220067241ff01710d384108102a2202450d212002200437000041dddac200ad4280808080a001842002ad428080808080018410012002102c0c350b2004a721070240200220067241ff0171450d0020070d040c380b41e7dac200ad4280808080d000842004428080808070832005ad8410012007450d342005102c0c340b2004422088a721082004a721090240200220067241ff0171450d0002402008450d00200841186c21062005210203400240200241046a280200450d002002280200102c0b0240200241106a280200450d002002410c6a280200102c0b200241186a2102200641686a22060d000b0b410121064100210a4103210820090d320c330b0240200841186c2202450d00200520026a2106200521020340200241086a350200422086200235020084200241146a3502004220862002410c6a350200841001200241186a22022006470d000b0b02402008450d00200841186c21062005210203400240200241046a280200450d002002280200102c0b0240200241106a280200450d002002410c6a280200102c0b200241186a2102200641686a22060d000b0b410121064100210a4105210820090d310c320b2004422088a721082004a721090240200220067241ff0171450d0002402008450d002008410c6c21062005210203400240200241046a280200450d002002280200102c0b2002410c6a2102200641746a22060d000b0b410021064101210a410321082009450d320c310b02402008410c6c2202450d00200520026a2106200521020340200241086a35020042208620023502008410052002410c6a22022006470d000b0b02402008450d002008410c6c21062005210203400240200241046a280200450d002002280200102c0b2002410c6a2102200641746a22060d000b0b410021064101210a4105210820090d300c310b2004a72107200220067241ff0171450d012007450d340b2005102c0c330b2004428080808070832005ad84100d2007450d2f2005102c0c2f0b200220067241ff01710d310c2e0b2001410c6a2802002106200141086a280200210820012802042107024020022d000120022d000072450d0002402006450d0020064190016c21062007210203402002107320024190016a2102200641f07e6a22060d000b0b02402008450d002007102c0b20004181023b010820004111360204200041b2b2c000360200410021052000410a6a41003a0000410121070c350b41002105200341003602a806200342043703a00620064190016c22024190016d210a0240024020020d00410421060c010b200aad420c7e2204422088a70d0d2004a722064100480d0d2006102a2206450d1a2003200a3602a406200320063602a0060b2003200720026a3602bc09200320073602b80920032008ad4220862007ad843703b009200341a8076a41086a41003602002003200341a0066a41086a3602ac07200320063602a807200341b0096a200341a8076a10c002200341b0086a41086a200341a0066a41086a2802002202360200200320032903a00622043703b008200341b3076a2002360000200320043700ab07200341b0096a41086a200341af076a29000037000041012107200341013a00b009200320032900a8073700b10941014100200341b0096a109201200041023a00080c340b024020022d00000d0020022d000141ff01714102470d00200141086a2903002104200341c0036a41186a22054200370300200341c0036a41106a22024200370300200341c0036a41086a22074200370300200342003703c00341f9e8c500ad4280808080900184220b1002220628000321082006290007210c20062d000f210a20062f00002109200641026a2d0000210d2006102c2003200d3a00c203200320093b01c0032003200a3a00cf032003200c3700c703200320083600c3034182e9c500ad4280808080900184100222062d000f21082006280003210a2006290007210c20062f00002109200641026a2d0000210d2006102c200341d2036a220e200d3a0000200220093b0100200341a0036a41086a220920072903003703002003200c3700d7032003200a3600d303200341a0036a41106a220a2002290300370300200320083a00df03200341a0036a41186a22082005290300370300200320032903c0033703a003200341206a200341a0036a412041014100410010970120032802204101460d03200542003703002002420037030020074200370300200342003703c003200b10022206280003210d2006290007210b20062d000f210f20062f00002110200641026a2d000021112006102c200320113a00c203200320103b01c0032003200f3a00cf032003200b3700c7032003200d3600c303419db1c200ad42808080803084220b100222062d000f210d2006280003210f2006290007210c20062f00002110200641026a2d000021112006102c200e20113a0000200220103b0100200920072903003703002003200c3700d7032003200f3600d303200a20022903003703002003200d3a00df0320082005290300370300200320032903c0033703a003200341106a200341a0036a10980102402003290318500d002003280210450d00200341c0036a41186a22054200370300200341c0036a41106a22064200370300200341c0036a41086a22074200370300200342003703c00341f9e8c500ad42808080809001841002220228000321082002290007210c20022d000f210a20022f00002109200241026a2d0000210d2002102c2003200d3a00c203200320093b01c0032003200a3a00cf032003200c3700c703200320083600c303419db1c200ad42808080803084100222022d000f21082002280003210a2002290007210c20022f00002109200241026a2d0000210d2002102c200341d2036a200d3a0000200620093b0100200341a0036a41086a20072903003703002003200c3700d7032003200a3600d303200341a0036a41106a2006290300370300200320083a00df03200341a0036a41186a2005290300370300200320032903c0033703a0032003200341a0036a109801200329030842dc0b7c42dc0b20032802001b2004560d030b200341c0036a41186a22054200370300200341c0036a41106a22024200370300200341c0036a41086a22074200370300200342003703c00341f9e8c500ad4280808080900184220c1002220628000321082006290007211220062d000f210a20062f00002109200641026a2d0000210d2006102c2003200d3a00c203200320093b01c0032003200a3a00cf03200320123700c703200320083600c303200b100222062d000f21082006280003210a2006290007210b20062f00002109200641026a2d0000210d2006102c200341d2036a220e200d3a0000200220093b0100200341a0036a41086a220920072903003703002003200b3700d7032003200a3600d303200341a0036a41106a220a2002290300370300200320083a00df03200341a0036a41186a22082005290300370300200320032903c0033703a003200320043703b009200341a0036aad42808080808004842204200341b0096aad220b42808080808001841001200542003703002002420037030020074200370300200342003703c003200c10022206280003210d2006290007210c20062d000f210f20062f00002110200641026a2d000021112006102c200320113a00c203200320103b01c0032003200f3a00cf032003200c3700c7032003200d3600c3034182e9c500ad4280808080900184100222062d000f210d2006280003210f2006290007210c20062f00002110200641026a2d000021112006102c200e20113a0000200220103b0100200920072903003703002003200c3700d7032003200f3600d303200a20022903003703002003200d3a00df0320082005290300370300200320032903c0033703a00341012107200341013a00b0092004200b428080808010841001200041023a0008410121050c340b20004181063b01082000410f360204200041d6b2c0003602002000410a6a41003a00000c210b2001410c6a2802002106200141086a280200210f2001280204210a41d6b2c0002109410f210d20022d00000d2420022d000141ff01714102470d2402402006410b490d00410f210d41e4ecc10021090c260b41a4c6c500ad4280808080a00184220b1002220228000321052002290007210420022d000f210720022f00002108200241026a2d000021092002102c41aec6c500ad4280808080c00184221210022202280003210d2002290007210c20022d000f210e20022f00002110200241026a2d000021112002102c200341b0096a41126a221320113a0000200320103b01c009200320093a00b209200320083b01b0092003200e3a00cf092003200c3700c7092003200d3600c309200320073a00bf09200320043700b709200320053600b3090240200341b0096a109501220241ff01714102460d002002410171450d0041bd8fc2002109411c210d0c250b200b1002220228000321052002290007210420022d000f210720022f00002108200241026a2d000021092002102c201210022202280003210d2002290007210c20022d000f210e20022f00002110200241026a2d000021112002102c201320113a0000200320103b01c009200320093a00b209200320083b01b0092003200e3a00cf092003200c3700c7092003200d3600c309200320073a00bf09200320043700b709200320053600b309200341013a00a807200341b0096aad42808080808004842212200341a8076aad42808080801084100142002104200341a0066a41186a22074200370300200341a0066a41106a22024200370300200341a0066a41086a22084200370300200342003703a0064191b0c200ad4280808080e000841002220528000321092005290007210c20052d000f210d20052f0000210e200541026a2d000021102005102c200320103a00a2062003200e3b01a0062003200d3a00af062003200c3700a706200320093600a30641acb0c200ad4280808080e00084100222052d000f21092005280003210d2005290007210c20052f0000210e200541026a2d000021102005102c200341a0066a41126a221120103a00002002200e3b0100200341b0086a41086a220e20082903003703002003200c3700b7062003200d3600b306200341b0086a41106a220d2002290300370300200320093a00bf06200341b0086a41186a22092007290300370300200320032903a0063703b008200341306a200341b0086a41201094012003280234211020032802302113200742003703002002420037030020084200370300200342003703a006200b1002220528000321142005290007210b20052d000f211520052f00002116200541026a2d000021172005102c200320173a00a206200320163b01a006200320153a00af062003200b3700a706200320143600a30641f889c200ad4280808080e00084100222052d000f2114200528000321152005290007210b20052f00002116200541026a2d000021172005102c201120173a0000200220163b0100200e20082903003703002003200b3700b706200320153600b306200d2002290300370300200320143a00bf0620092007290300370300200320032903a0063703b008200341b0096a200341b0086a10e6010240024020032802b0092205450d00200320053602c00320032902b4092204422088a721022004a721070c010b41042105200341043602c00341002102410021070b0240024020022007460d002004422088210b0c010b024020022004a7470d00200241016a22072002490d0c200241017422082007200820074b1bad220b42c4007e220c422088a70d0c200ca722074100480d0c0240024020020d002007102a21050c010b2005200241c4006c2007102e21050b2005450d19200320053602c003200442808080807083200b8421040b2004422088220ba721020b2005200241c4006c6a220241003a000020022010410020131b360204200220032f00a8073b0001200241036a200341a8076a41026a2d00003a0000200220032902b009370208200241106a200341b0096a41086a2218290200370200200241186a200341b0096a41106a2219290200370200200241206a200341b0096a41186a290200370200200241286a200341b0096a41206a290200370200200241306a200341b0096a41286a290200370200200241386a200341b0096a41306a290200370200200241c0006a200341b0096a41386a280200360200200b422086200442ffffffff0f83844280808080107c2104200a200641f0006c6a2111024020060d00200a21070c230b200341b2066a211a200a210703402007280204210220072802002106200341b0096a200741086a41e80010db051a200741f0006a21072002450d23200341a8076a200341b0096a41e80010db051a200320023602b409200320063602b0092018200341a8076a41e80010db051a20032802c0032114200341a0066a41186a22084200370300200341a0066a41106a22064200370300200341a0066a41086a220e4200370300200342003703a0064191b0c200ad4280808080e000841002220228000321052002290007210b20022d000f210920022f0000210d200241026a2d000021102002102c200320103a00a2062003200d3b01a006200320093a00af062003200b3700a706200320053600a30641acb0c200ad4280808080e00084100222022d000f2105200228000321092002290007210b20022f0000210d200241026a2d000021102002102c201a20103a00002006200d3b0100200341b0086a41086a2213200e2903003703002003200b3700b706200320093600b306200341b0086a41106a2006290300370300200320053a00bf06200341b0086a41186a22152008290300370300200320032903a0063703b008200341286a200341b0086a412010940120032802282106200328022c2105200341b0086a200341b0096a10ee0202400240024020032802b00922020d0041ef8fc20021094110210d0c010b024020022005410020061b22064d0d00411a210d41ff8fc20021090c010b200341a0066a2002417f6a1093020240200341a0066a2019412010dd05450d004119210d419990c20021090c010b024020032802b009220941002006417b6a2202200220064b1b4f0d004126210d41b290c20021090c010b02400240201420142004422088220ba7221041c4006c22066a460d00201441016a2102034002402002417f6a2d00004101470d0041012105200341b0086a2002460d032002200341b0086a412010dd05450d030b200241c4006a2102200641bc7f6a22060d000b0b410021050b200341a0066a2009109302200341a0066a200341b0086a412010dd05210220034180046a41086a2216200341a0056a41086a221729020037030020034180046a41106a221b200341a0056a41106a221c290200370300200320032902a0053703800441d98fc20021094116210d20050d2420020d010c240b20034180046a41086a200341a0056a41086a29020037030020034180046a41106a200341a0056a41106a290200370300200320032902a005370380040c230b20034180056a410e6a220520034180046a410e6a29010037010020034180056a41086a2209201629030037030020032003290380043703800520034180046a200341b0096a10ee02200341a0056a41186a220d4200370300201c420037030020174200370300200342003703a00520154200370300200341b0086a41106a221d420037030020134200370300200342003703b00841c800102a2202450d18200341a0066a10e801200241186a2008290300370200200241106a200341a0066a41106a2206290300370200200241086a200e290300370200200220032903a0063702002002410236022020024101360244200220032903b0083700242002412c6a2013290300370000200241346a201d2903003700002002413c6a2015290300370000200320023602e00320034282808080203702e403200341e0036a10e9012008200d2903003703002006201c290300370300200e2017290300370300200320032903a0053703a006200341a0066a10ea01200e20162903003703002006201b290300370300200820034180046a41186a29030037030020132009290300370300200341b0086a410e6a2209200529010037010020032003290380043703a00620032003290380053703b0080240024020102004a7460d002004210c0c010b201041016a22022010490d0c200ba74101742205200220022005491bad220c42c4007e220b422088a70d0c200ba722024100480d0c0240024020100d002002102a21020c010b2014201041c4006c2002102e21020b2002450d19200320023602c0032004422088220ba721100b20032802c003201041c4006c6a220241013a0000200220032903a00637000120024116360028200241d98fc200360024200241003a0021200220032903b00837002c200241096a200e290300370000200241116a2006290300370000200241196a20082903003700002002413a6a2009290100370000200241346a2013290300370000200c42ffffffff0f832104200b422086210b024020032802bc092206450d0020032802b4092102200641246c210603400240024020022d0000220541034b0d0002400240024020050e0404000102040b2002410c6a280200450d03200241086a280200102c0c030b2002410c6a280200450d02200241086a280200102c0c020b2002410c6a280200450d01200241086a280200102c0c010b200241086a280200450d00200241046a280200102c0b200241246a21022006415c6a22060d000b0b200b2004842104024020032802b809450d0020032802b409102c0b20044280808080107c210420072011470d000c240b0b419cdbc20041ce0041acfec5001036000b41ecdac200413041acfec5001036000b2002410a6a2f010022084108762109200241066a2f0100220d410876211e200141106a28020022064118762113200641087621142002411a6a290100210b200241196a2d0000211f200241186a2d00002120200241166a2f01002121200241156a2d00002122200241146a2d00002123200241126a2f01002124200241116a2d00002125200241106a2d000021262002410e6a2f010021272002410d6a2d000021282002410c6a2d00002129200241096a2d00002105200241086a2d00002111200241056a2d0000210e200241046a2d00002110200241026a2f0100212a200141216a2900002104200141206a2d000021152001411d6a2f000021162001411c6a2d00002117200141196a2f0000211c200141186a2d0000211b200141156a2f0000211d200141146a2d000021182001410c6a2802002107200141086a280200210a20022d0001210f20022d0000210220012d001f211920012d001b211a20012d0017212b02400240024002400240024002400240024002400240024002400240024002400240024020012802040e050001020304000b200341b0096a41146a4101360200200342013702b409200341fcc4c5003602b009200341043602a406200341f4c4c5003602a0062003200341a0066a3602c009200341b0096a4184c5c5001041000b02400240200241ff01710d00200f41ff01714101460d010b4113210641c3b2c00021020c0c0b2003200b3703c0072003201f3a00bf07200320203a00be07200320213b01bc07200320223a00bb07200320233a00ba07200320243b01b807200320253a00b707200320263a00b607200320273b01b407200320283a00b307200320293a00b207200320083b01b007200320053a00af07200320103a00aa072003202a3b01a8072003200d410874201141187472200e723600ab070240200641034f0d004183b3c4002102410e21060c0c0b0240200641104d0d004191b3c4002102410d21060c0c0b41afb7c500ad4280808080c00084100222022d000f2105200229000721042002280003210820022f00002109200241026a2d0000210d2002102c41c4f9c300ad4280808080e00084100222022d000f210e2002290007210b2002280003210f20022f00002110200241026a2d000021112002102c200341a0036a200341a8076a109f0141c000102a2202450d24200220043700072002200836000320022009200d4110747222083b0000200241026a20084110763a0000200220053a000f2002200b3700172002200f3600132002201020114110747222053b0010200241126a20054110763a00002002200e3a001f200220032902a003370020200241286a200341a0036a41086a290200370000200241306a200341a0036a41106a290200370000200241386a200341a0036a41186a290200370000200341b0096a200241c00010ef02024020032802b00922050d002002102c42002104428080e983b1de16210b20034180036a200341a8076a428080e983b1de16420010c1012003280280032202450d0420032802840321060c0c0b200341b0096a41186a2903002104200341b0096a41106a290300210b20032802b40921082002102c200341b0096a41086a41003a0000200341b9096a20032903a807370000200341c9096a200341a8076a41106a290300370000200341d1096a200341a8076a41186a290300370000200341a8076a41086a290300210c200341113a00b009200341b0096a41116a200c37000041014100200341b0096a1092012008450d092005102c0c090b02400240200241ff01710d00200f41ff01714101470d00410021020c010b410121024102210e410021114100210d0b2003200b3702b8032003201f3a00b703200320203a00b603200320213b01b403200320223a00b303200320233a00b203200320243b01b003200320253a00af03200320263a00ae03200320273b01ac03200320283a00ab03200320293a00aa03200320083b01a803200320053a00a703200320103a00a2032003202a3b01a0032003200d410874201141187472200e7222053600a30302402002450d0041d6b2c0002102410f2106024002400240024020050e050001020310000b20032800a703210220032800ab0321060c0f0b41dd8cc6002102410e21060c0e0b41c3b2c0002102411321060c0d0b41b2b2c0002102411121060c0c0b200341a8076a41186a200341a0036a41186a290200370300200341a8076a41106a200341a0036a41106a290200370300200341a8076a41086a200341a0036a41086a290200370300200320032902a0033703a80741afb7c500ad4280808080c00084100222022d000f2106200229000721042002280003210520022f00002107200241026a2d000021082002102c41c4f9c300ad4280808080e00084100222022d000f210a2002290007210b2002280003210920022f0000210d200241026a2d0000210e2002102c200341c0036a200341a8076a109f0141c000102a2202450d2320022004370007200220053600032002200720084110747222053b0000200241026a20054110763a0000200220063a000f2002200b370017200220093600132002200d200e4110747222063b0010200241126a20064110763a00002002200a3a001f200220032902c003370020200241286a200341c8036a290200370000200241306a200341c0036a41106a290200370000200241386a200341c0036a41186a290200370000200341b0096a200241c00010ef02024020032802b0092206450d002002ad428080808080088410050b200341b0096a41186a2903002104200341c0096a290300210b20032802b40921052002102c2006450d0702402005450d002006102c0b200341a8076a200b200410c201200341e8096a2004370300200341e0096a200b370300200341b0096a41086a41033a0000200341b9096a20032903a807370000200341c9096a200341b8076a290300370000200341d1096a200341c0076a290300370000200341a8076a41086a2903002104200341113a00b009200341b0096a41116a200437000041014100200341b0096a1092010c0c0b024002400240200241ff017122114101460d00201e2109200d2108200e21050c010b2005210f201041ff01714101460d010b20114103460d00200f20027241ff0171450d00419eb3c4002102410a21060c0d0b0240200a41ff01714101460d00200a4118762109200a4108762105200a41107621080c050b200341b0096a200741067610910220032802b009210a0240024020032802b8092007413f7122024b0d00410021020c010b200a20024105746a22022f0000220541087621082002290018210420022d0017211520022d0016211920022f0014211620022d0013211720022d0012211a20022f0010211c20022d000f211b20022d000e212b20022f000c211d20022d000b211820022d000a211320022f0008211420022d000721062002280003210720022d00022109410121020b024020032802b409450d00200a102c0b20020d04410121050c050b200141346a2802002121200141306a28020021112001412c6a280200211f024002400240200241ff017122204101460d00201e2109200d2108200e21050c010b2005210f201041ff01714101460d010b20204103460d00200f20027241ff0171450d00419eb3c4002102410a21060c030b0240200a41ff01714101460d00200a4118762109200a4108762105200a41107621080c020b200341b0096a200741067610910220032802b009210a0240024020032802b8092007413f7122024b0d00410021020c010b200a20024105746a22022f0000220541087621082002290018210420022d0017211520022d0016211920022f0014211620022d0013211720022d0012211a20022f0010211c20022d000f211b20022d000e212b20022f000c211d20022d000b211820022d000a211320022f0008211420022d000721062002280003210720022d00022109410121020b024020032802b409450d00200a102c0b20020d0141dd8cc6002102410e21060c020b200341b0096a41086a41023a0000200341b9096a20032903a807370000200341a8076a41086a290300210c200341113a00b009200341b0096a41116a200c370000200341c9096a200341b8076a290300370000200341d1096a200341c0076a29030037000041014100200341b0096a1092010c050b200320043703c007200320153a00bf07200320193a00be07200320163b01bc07200320173a00bb072003201a3a00ba072003201c3b01b8072003201b3a00b7072003202b3a00b6072003201d3b01b407200320183a00b307200320133a00b207200320143b01b007200320063a00af07200320073600ab07200320093a00aa0720032008410874200541ff0171723b01a80741afb7c500ad4280808080c00084100222022d000f2106200229000721042002280003210520022f00002107200241026a2d000021082002102c41c4f9c300ad4280808080e00084100222022d000f210a2002290007210b2002280003210920022f0000210d200241026a2d0000210e2002102c200341c0036a200341a8076a109f0141c000102a2202450d1f20022004370007200220053600032002200720084110747222053b0000200241026a20054110763a0000200220063a000f2002200b370017200220093600132002200d200e4110747222063b0010200241126a20064110763a00002002200a3a001f200220032902c003370020200241286a200341c0036a41086a290200370000200241306a200341c0036a41106a290200370000200241386a200341c0036a41186a290200370000200341b0096a200241c00010ef02200341b0096a41186a22052903002104200341b0096a41106a290300210b20032802b409210720032802b00921062002102c0240024020060d004200210b420021040c010b2007450d002006102c0b200520043703002003200b3703c009200320213602b809200320113602b4092003201f3602b00941afb7c500ad4280808080c00084100222022d000f2106200229000721042002280003210520022f00002107200241026a2d000021082002102c41c4f9c300ad4280808080e00084100222022d000f210a2002290007210b2002280003210920022f0000210d200241026a2d0000210e2002102c200341a0036a200341a8076a109f0141c000102a2202450d1f20022004370007200220053600032002200720084110747222053b0000200241026a20054110763a0000200220063a000f2002200b370017200220093600132002200d200e4110747222063b0010200241126a20064110763a00002002200a3a001f200220032902a003370020200241286a200341a0036a41086a290200370000200241306a200341a0036a41106a290200370000200241386a200341a0036a41186a290200370000200341c0003602a406200320023602a006200341b0096a200341a0066a10792002102c02402011450d00201f102c0b200341b0096a41086a41013a0000200341b9096a20032903a807370000200341c9096a200341b8076a290300370000200341d1096a200341a8076a41186a290300370000200341a8076a41086a2903002104200341113a00b009200341b0096a41116a20043700004100210241014100200341b0096a1092010c050b2011450d06201f102c0c060b2008410874200541ff0171722102410021050b200320043702b803200320153a00b703200320193a00b603200320163b01b403200320173a00b3032003201a3a00b2032003201c3b01b0032003201b3a00af032003202b3a00ae032003201d3b01ac03200320183a00ab03200320133a00aa03200320143b01a803200320063a00a703200320073600a303200320093a00a203200320023b01a00302402005450d0041dd8cc6002102410e21060c070b200341a8076a41186a200341a0036a41186a290200370300200341a8076a41106a200341a0036a41106a290200370300200341a8076a41086a200341a0036a41086a290200370300200320032902a0033703a80741afb7c500ad4280808080c00084100222022d000f2106200229000721042002280003210520022f00002107200241026a2d000021082002102c41c4f9c300ad4280808080e00084100222022d000f210a2002290007210b2002280003210920022f0000210d200241026a2d0000210e2002102c200341c0036a200341a8076a109f0141c000102a2202450d1c20022004370007200220053600032002200720084110747222053b0000200241026a20054110763a0000200220063a000f2002200b370017200220093600132002200d200e4110747222063b0010200241126a20064110763a00002002200a3a001f200220032902c003370020200241286a200341c0036a41086a290200370000200241306a200341c0036a41106a290200370000200241386a200341c0036a41186a290200370000200341b0096a200241c00010ef02024020032802b0092206450d002002ad428080808080088410050b200341c8096a2903002104200341c0096a290300210b20032802b40921052002102c2006450d0002402005450d002006102c0b20034188036a200341a8076a200b200410bf0120032903880320034188036a41086a29030010b102200341e8096a2004370300200341e0096a200b370300200341b0096a41086a41043a0000200341b9096a20032903a807370000200341c9096a200341b8076a290300370000200341d1096a200341c0076a290300370000200341a8076a41086a2903002104200341113a00b009200341b0096a41116a200437000041014100200341b0096a1092010c050b41a8b3c4002102410921060c050b200341b0096a41186a20043703002003200b3703c009200320063602b809200320073602b4092003200a3602b00941afb7c500ad4280808080c00084100222022d000f2106200229000721042002280003210520022f00002108200241026a2d000021092002102c41c4f9c300ad4280808080e00084100222022d000f210d2002290007210b2002280003210e20022f0000210f200241026a2d000021102002102c200341c0036a200341a8076a109f0141c000102a2202450d1a20022004370007200220053600032002200820094110747222053b0000200241026a20054110763a0000200220063a000f2002200b3700172002200e3600132002200f20104110747222063b0010200241126a20064110763a00002002200d3a001f200220032902c003370020200241286a200341c8036a290200370000200241306a200341c0036a41106a290200370000200241386a200341c0036a41186a290200370000200341c0003602a406200320023602a006200341b0096a200341a0066a10792002102c02402007450d00200a102c0b410021020b0c010b2007450d00200a102c0b20020d010b200041023a00084100210d0c010b200041812e3b010820002006360204200020023602004100210d2000410a6a41003a00000b41012107410121054101210e4101210f4101211041012111410121134101211441012115410121084101210a4101210941012100410121060c3b0b2001411c6a280200210e200141186a2802002110200141146a280200210f2001410c6a2802002111200141086a280200211341d6b2c0002107410f21050240024020022d00000d0020022d000141ff01714102470d00200141246a2802002114200141106a2802002115200341a0036a41186a22054200370300200341a0036a41106a22064200370300200341a0036a41086a22074200370300200342003703a00341ecddc500ad4280808080f000841002220228000321082002290007210420022d000f210a20022f00002109200241026a2d0000210d2002102c2003200d3a00a203200320093b01a0032003200a3a00af03200320043700a703200320083600a30341f3ddc500ad4280808080c00184100222022d000f21082002280003210a2002290007210420022f00002109200241026a2d0000210d2002102c200341a0036a41126a200d3a0000200620093b0100200341e0036a41086a2007290300370300200320043700b7032003200a3600b303200341e0036a41106a2006290300370300200320083a00bf03200341e0036a41186a2005290300370300200320032903a0033703e003200341f8026a200341e0036a412010940120032802fc02210620032802f802210541a3dbc500ad4280808080800184100222022d000f2116200229000721042002280003211720022f0000211c200241026a2d0000211b2002102c41abdbc500ad4280808080a00284100222022d000f211d2002290007210b2002280003211820022f00002119200241026a2d0000211a2002102c20032006410020051b222b3602a807200341c0036a41186a2205200341a8076aad22124280808080c00084220c1006220241186a290000370300200341c0036a41106a2207200241106a290000370300200341c0036a41086a2208200241086a290000370300200320022900003703c0032002102c200341b0096a41186a220a2005290300370300200341b0096a41106a22092007290300370300200341b0096a41086a220d2008290300370300200320032903c0033703b00941c000102a2202450d1520022004370007200220173600032002201c201b4110747222063b0000200241026a20064110763a0000200220163a000f2002200b3700172002201836001320022019201a4110747222063b0010200241126a20064110763a00002002201d3a001f200220032903b009370020200241286a200d290300370000200241306a2009290300370000200241386a200a290300370000200320143602a8072005200c1006220641186a2900003703002007200641106a2900003703002008200641086a290000370300200320062900003703c0032006102c200a200529030037030020092007290300370300200d2008290300370300200320032903c0033703b009200241c000418001102e2202450d15200220032903b00937004041182105200241d8006a200341b0096a41186a290300370000200241d0006a200341b0096a41106a290300370000200241c8006a200341b0096a41086a290300370000200341f0026a200241e00041014100410010970120032802f00221072002102c200341a0036a41186a22084200370300200341a0036a41106a22064200370300200341a0036a41086a220a4200370300200342003703a00341a3dbc500ad42808080808001841002220228000321092002290007210420022d000f210d20022f00002116200241026a2d000021172002102c200320173a00a203200320163b01a0032003200d3a00af03200320043700a703200320093600a30341a0c6c500ad4280808080c00084100222022d000f21092002280003210d2002290007210420022f00002116200241026a2d000021172002102c200341b2036a20173a0000200620163b0100200341e0036a41086a200a290300370300200320043700b7032003200d3600b303200341e0036a41106a2006290300370300200320093a00bf03200341e0036a41186a2008290300370300200320032903a0033703e003200341b0096a200341e0036a10f00220032802b0092202410120021b211620032902b409420020021b210402400240024020074101470d0041e1c5c5002107411521050c010b201620144105746a410020142004422088a7491b22020d0141f6c5c50021070b2004a7450d012016102c0c010b200241086a290000210b200241106a290000210c2002290000212c200341a8076a41186a200241186a290000222d370300200341a8076a41106a200c370300200341a8076a41086a200b3703002003202c3703a807200341bd096a200b370000200341c5096a200c370000200341cd096a202d370000200341003a00b4092003410f3a00b0092003202c3700b50941014100200341b0096a109201200341003602b809200342013703b0092015200341b0096a10670240024020032802b409220620032802b80922026b2015490d0020032802b00921060c010b200220156a22052002490d09200641017422072005200720054b1b22054100480d090240024020060d002005102a21060c010b20032802b00920062005102e21060b2006450d16200320053602b409200320063602b0090b2003200220156a3602b809200620026a2013201510db051a200e200341b0096a106702400240200e450d00200f200e410c6c6a210d200f210603402006280200210a200641086a2802002202200341b0096a10670240024020032802b409220820032802b80922056b2002490d0020032802b00921070c010b200520026a22072005490d0c200841017422092007200920074b1b22094100480d0c0240024020080d002009102a21070c010b20032802b00920082009102e21070b2007450d19200320093602b409200320073602b009200921080b2003200520026a22093602b809200720056a200a200210db051a2006410c6a2206200d470d000c020b0b20032802b809210920032802b409210820032802b00921070b41a3dbc500ad4280808080800184100222022d000f21062002290007210b2002280003211520022f00002117200241026a2d0000211c2002102c41abdbc500ad4280808080a00284100222022d000f211b2002290007210c2002280003211d20022f00002118200241026a2d000021192002102c2003202b3602a807200341c0036a41186a220520124280808080c000841006220241186a290000370300200341c0036a41106a220a200241106a290000370300200341c0036a41086a220d200241086a290000370300200320022900003703c0032002102c200341b0096a41186a221a2005290300370300200341b0096a41106a222b200a290300370300200341b0096a41086a221f200d290300370300200320032903c0033703b00941c000102a2202450d152002201820194110747222183b001020022017201c4110747222173b00002002201b3a001f2002200c3700172002201d360013200220063a000f2002200b37000720022015360003200220032903b009370020200241126a20184110763a0000200241026a20174110763a0000200241286a201f290300370000200241306a202b290300370000200241386a201a290300370000200320143602b0092005200341b0096aad4280808080c000841006220641186a290000370300200a200641106a290000370300200d200641086a290000370300200320062900003703c0032006102c200341a0056a41186a2005290300370300200341a0056a41106a200a290300370300200341a0056a41086a200d290300370300200320032903c0033703a005200241c000418001102e2202450d15200220032903a005370040200241d8006a200341b8056a290300370000200241d0006a200341b0056a290300370000200241c8006a200341a8056a290300370000200341e0003602b409200320023602b00920072009200341b0096a10f1022002102c02402008450d002007102c0b02402004a7450d002016102c0b02402011450d002013102c0b0240200e450d00200e410c6c2106200f210203400240200241046a280200450d002002280200102c0b2002410c6a2102200641746a22060d000b0b02402010450d00200f102c0b200041023a0008410021060c010b02402011450d002013102c0b0240200e450d00200e410c6c2106200f210203400240200241046a280200450d002002280200102c0b2002410c6a2102200641746a22060d000b0b02402010450d00200f102c0b20004181263b01082000200536020420002007360200410021062000410a6a41003a00000b41012107410121054101210e4101210f4101211041012111410121134101211441012115410121084101210a41012109410121000c390b200141206a290200210c200141186a290200210b2002411a6a2901002104200241196a2d00002108200241186a2d0000210a200241166a2f01002109200241156a2d0000210d200241146a2d0000210e200241126a2f0100210f200241116a2d00002110200241106a2d000021112002410e6a2f010021132002410d6a2d000021142002410c6a2d000021152002410a6a2f01002116200241096a2d00002117200241086a2d0000211c200241066a2f0100211b200241056a2d0000211d200241046a2d00002118200241026a2f01002119200141286a2802002107200141106a29020021122001410c6a280200211a200141086a280200210620022d0001210520022d00002102024002400240024002400240024002400240024002400240024020012802040e0400010203000b200341b0096a41146a4101360200200342013702b409200341fcc4c5003602b009200341043602a406200341f4c4c5003602a0062003200341a0066a3602c009200341b0096a4184c5c5001041000b41002107200241ff01710d07200541ff01714101470d07200320043703b806200320083a00b7062003200a3a00b606200320093b01b4062003200d3a00b3062003200e3a00b2062003200f3b01b006200320103a00af06200320113a00ae06200320133b01ac06200320143a00ab06200320183a00a206200320193b01a006200320164108742017722015411874723600a7062003201b410874201d72201c411874723600a306200341c0036a41186a22074200370300200341c0036a41106a22054200370300200341c0036a41086a22084200370300200342003703c00341afb7c500ad4280808080c0008410022202280003210a2002290007210420022d000f210920022f0000210d200241026a2d0000210e2002102c2003200e3a00c2032003200d3b01c003200320093a00cf03200320043700c7032003200a3600c303418cb8c500ad42808080803084100222022d000f210a200228000321092002290007210420022f0000210d200241026a2d0000210e2002102c200341d2036a200e3a00002005200d3b0100200341a0036a41086a2008290300370300200320043700d703200320093600d303200341a0036a41106a20052903003703002003200a3a00df03200341a0036a41186a2007290300370300200320032903c0033703a003200341b0096a200341a0036a412010d30120032d00b00921022007200341c9096a2900003703002005200341c1096a2900003703002008200341b9096a290000370300200320032900b1093703c0030240024020024101460d00200341a8076a41186a4200370300200341a8076a41106a4200370300200341a8076a41086a4200370300200342003703a8070c010b200341a8076a41186a2007290300370300200341a8076a41106a2005290300370300200341a8076a41086a2008290300370300200320032903c0033703a8070b41022107200341a0066a200341a8076a412010dd050d07200341b0096a200641900110db051a200341003b01a807200341b0086a200341b0096a200341a8076a10c10241012102024020032d00b80822054102460d00200341b9086a310000210b20033100ba08210420033502b408210c20032802b008210741eb8cc600ad4280808080d00184100402402005450d00200b100e0b2004100e410021022007450d00200c4220862007ad8410040b200320023a00b2092003410e3b01b00941014100200341b0096a1092012006102c0c090b200320064118763a008205200320064108763b01800502400240200241ff01710d00200541ff01714101460d010b410021070c080b200320043703b806200320083a00b7062003200a3a00b606200320093b01b4062003200d3a00b3062003200e3a00b2062003200f3b01b006200320103a00af06200320113a00ae06200320133b01ac06200320143a00ab06200320183a00a206200320193b01a006200320164108742017722015411874723600a7062003201b410874201d72201c411874723600a306200341c0036a41186a22084200370300200341c0036a41106a22054200370300200341c0036a41086a220a4200370300200342003703c00341afb7c500ad4280808080c000841002220228000321092002290007210420022d000f210d20022f0000210e200241026a2d0000210f2002102c2003200f3a00c2032003200e3b01c0032003200d3a00cf03200320043700c703200320093600c303418cb8c500ad42808080803084100222022d000f21092002280003210d2002290007210420022f0000210e200241026a2d0000210f2002102c200341d2036a200f3a00002005200e3b0100200341a0036a41086a200a290300370300200320043700d7032003200d3600d303200341a0036a41106a2005290300370300200320093a00df03200341a0036a41186a2008290300370300200320032903c0033703a003200341b0096a200341a0036a412010d30120032d00b00921022008200341c9096a2900003703002005200341c1096a290000370300200a200341b9096a290000370300200320032900b1093703c0030240024020024101460d00200341a8076a41186a4200370300200341a8076a41106a4200370300200341a8076a41086a4200370300200342003703a8070c010b200341a8076a41186a2008290300370300200341a8076a41106a2005290300370300200341a8076a41086a200a290300370300200320032903c0033703a8070b200341a0066a200341a8076a412010dd050d010240200641ff01714101460d0020032f01800520032d00820541107472210a200b420888a72109200b422088a7210d200ba7210e0c060b200341b0096a201a41067610910220032802b00921060240024020032802b809201a413f7122024b0d00410021020c010b200620024105746a22022f0010200241126a2d000041107472210920022f0000200241026a2d000041107472210a20022d001f21072002290017210c2002280013210d20022d000f210e200229000721122002280003211a410121020b024020032802b409450d002006102c0b20020d05410121070c070b2001412c6a280200212b200341b0086a41106a200c3703002003200b3703b808200320073602c808200320123703b00802400240200241ff01710d00200541ff01714101460d010b202b109202410021070c040b200320043703b806200320083a00b7062003200a3a00b606200320093b01b4062003200d3a00b3062003200e3a00b2062003200f3b01b006200320103a00af06200320113a00ae06200320133b01ac06200320143a00ab06200320183a00a206200320193b01a006200320164108742017722015411874723600a7062003201b410874201d72201c411874723600a306200341c0036a41186a22074200370300200341c0036a41106a22054200370300200341c0036a41086a22084200370300200342003703c00341afb7c500ad4280808080c0008410022202280003210a2002290007210420022d000f210920022f0000210d200241026a2d0000210e2002102c2003200e3a00c2032003200d3b01c003200320093a00cf03200320043700c7032003200a3600c303418cb8c500ad42808080803084100222022d000f210a200228000321092002290007210420022f0000210d200241026a2d0000210e2002102c200341d2036a200e3a00002005200d3b0100200341a0036a41086a2008290300370300200320043700d703200320093600d303200341a0036a41106a20052903003703002003200a3a00df03200341a0036a41186a2007290300370300200320032903c0033703a003200341b0096a200341a0036a412010d30120032d00b00921022007200341c9096a2900003703002005200341c1096a2900003703002008200341b9096a290000370300200320032900b1093703c0030240024020024101460d00200341a8076a41186a4200370300200341a8076a41106a4200370300200341a8076a41086a4200370300200342003703a8070c010b200341a8076a41186a2007290300370300200341a8076a41106a2005290300370300200341a8076a41086a2008290300370300200320032903c0033703a8070b200341a0066a200341a8076a412010dd050d010240200641ff01714101460d0020064108762102200341c0086a290300210420032903b808220b420888a72106200b422088a72107200ba7210820032802c808210a20032903b008210b0c030b200341b0096a201a41067610910220032802b00921090240024020032802b809201a413f7122024b0d00410021050c010b200920024105746a22052f0010200541126a2d000041107472210620052f0000200541026a2d000041107472210220052d001f210a200529001721042005280013210720052d000f21082005290007210b2005280003211a410121050b024020032802b409450d002009102c0b20050d02202b109202410121070c030b410221070c050b202b109202410221070c010b200320063b01f003200341e0036a41126a20064110763a00002003200a3a00ff03200320043700f703200320073600f303200320083a00ef032003200b3700e7032003201a3600e303200320023b01e003200320024110763a00e203200341b0096a202b41900110db051a200341b2076a200341e8036a290300370100200341a8076a41126a20032903f003370100200341c2076a200341f8036a29030037010020034180023b01a807200320032903e0033701aa07200341a0056a200341b0096a200341a8076a10c10241012102024020032d00a80522064102460d00200341a9056a310000210b20033100aa05210420033502a405210c20032802a005210541eb8cc600ad4280808080d00184100402402006450d00200b100e0b2004100e410021022005450d00200c4220862005ad8410040b200320023a00b2092003418e043b01b00941014100200341b0096a109201410321070b202b102c0c020b200341c0036a41186a22054200370300200341c0036a41106a22064200370300200341c0036a41086a22084200370300200342003703c00341afb7c500ad4280808080c0008410022202280003210f2002290007210420022d000f211020022f00002111200241026a2d000021132002102c200320133a00c203200320113b01c003200320103a00cf03200320043700c7032003200f3600c303418cb8c500ad42808080803084100222022d000f210f200228000321102002290007210420022f00002111200241026a2d000021132002102c200341d2036a20133a0000200620113b0100200341a0036a41086a2008290300370300200320043700d703200320103600d303200341a0036a41106a20062903003703002003200f3a00df03200341a0036a41186a2005290300370300200320032903c0033703a003200341b0096a200341a0036a412010d30120032d00b00921022005200341c9096a2900003703002006200341c1096a2900003703002008200341b9096a290000370300200320032900b1093703c0030240024020024101460d00200341a0056a41186a4200370300200341a0056a41106a4200370300200341a0056a41086a4200370300200342003703a0050c010b200341a0056a41186a2005290300370300200341a0056a41106a2006290300370300200341a0056a41086a2008290300370300200320032903c0033703a0050b200341ba096a200341a8056a290300370100200341b0096a41126a2202200341a0056a41106a290300370100200341ca096a200341b8056a2903003701002003418e023b01b009200320032903a0053701b20941014100200341b0096a109201200320093b01c009200220094110763a0000200320073a00cf092003200c3700c7092003200d3600c3092003200e3a00bf09200320123700b7092003201a3600b3092003200a3b01b0092003200a4110763a00b20941afb7c500ad4280808080c000841002220228000321062002290007210420022d000f210520022f00002107200241026a2d000021082002102c418cb8c500ad4280808080308410022202280003210a2002290007210b20022d000f210920022f0000210d200241026a2d0000210e2002102c200341e0036a41126a200e3a00002003200d3b01f003200320083a00e203200320073b01e003200320093a00ff032003200b3700f7032003200a3600f303200320053a00ef03200320043700e703200320063600e303200341203602ac072003200341e0036a3602a807200341b0096a200341a8076a10a102410321070c010b20061092022006102c0b41cfe7c5002102410b21064102210502400240024020070e0400010203000b41c3b2c000210241132106410021050c010b41dd8cc6002102410e2106410121050b20004181243b010820002006360204200020023602002000410a6a20053a00000c010b200041023a00080b4100210041012107410121054101210e4101210f4101211041012111410121134101211441012115410121084101210a41012109410121060c380b200341b0096a200141086a41800110db051a200341a8076a41206a200241206a290200370300200341a8076a41186a200241186a290200370300200341a8076a41106a200241106a290200370300200341a8076a41086a200241086a290200370300200320022902003703a807200341e8026a200341b0096a200341a8076a10f2020240024020032802e80222020d00200041023a0008410021090c010b20032802ec02210620004181223b010820002002360200410021092000410a6a41003a0000200020063602040b41012107410121054101210e4101210f4101211041012111410121134101211441012115410121084101210a0c360b200341a0056a41086a220a2001411c6a290200370300200341a0056a41106a2209200141246a290200370300200341a0056a41186a220d2001412c6a2802003602002003200141146a2902003703a005200241086a2802002105200241046a28020021072001410c6a280200210820022d0000210602400240024002400240024002400240024002400240200141086a2802000e0400010203000b200341b0096a41146a4101360200200342013702b409200341fcc4c5003602b009200341043602a406200341f4c4c5003602a0062003200341a0066a3602c009200341b0096a4184c5c5001041000b200141386a290300210b200141306a29030021042002411a6a290100210c200241196a2d0000210f200241186a2d00002110200241166a2f01002111200241156a2d00002113200241146a2d00002114200241126a2f01002115200241116a2d00002116200241106a2d000021172002410e6a2f0100211c2002410d6a2d0000211b2002410c6a2d0000211d200241026a2f01002118200141106a280200210e20022d00012102200341b0086a41186a200d280200360200200341b0086a41106a2009290300370300200341b0086a41086a200a290300370300200320032903a0053703b00802400240200641ff01710d00200241ff01714101460d010b4113210641c3b2c0002105410021020c080b2003200c3703c0072003200f3a00bf07200320103a00be07200320113b01bc07200320133a00bb07200320143a00ba07200320153b01b807200320163a00b707200320173a00b6072003201c3b01b4072003201b3a00b307200320073a00aa07200320183b01a80720032005411076410874200541087641ff017172201d411874723600af0720032007411076410874200741087641ff0171722005411874723600ab0702400240200841ff01714101460d0020084108762107200341c0086a290300212c20032903b808220c420888a72108200c422088a72109200ca7210d20032802c808210f20032903b008212d0c010b200341b0096a200e41067610910220032802b00921060240024020032802b809200e413f7122024b0d00410021020c010b200620024105746a22022f0010200241126a2d000041107472210820022f0000200241026a2d000041107472210720022d001f210f2002290017212c2002280013210920022d000f210d2002290007212d2002280003210e410121020b024020032802b409450d002006102c0b2002450d060b200341b8026a2004200b42c0843d420010e105200341a8026a20032903b802220c200341b8026a41086a290300221242c0fb42427f10e00520034198026a200c201242d08603420010e005200341c8026a200341a8076a2003290398022212200420032903a8027c220c42d086037e200c421480220c42c0fb427e7c42a0c21e56200ca76aad7c220c428080e983b1de16200c428080e983b1de165620034198026a41086a290300200c201254ad7c220c420052200c501b22021b2212200c420020021b220c10c10120032802c8020d06200341e0036a41186a22054200370300200341e0036a41106a22064200370300200341e0036a41086a220a4200370300200342003703e00341a4e9c500ad4280808080800184222e1002220228000321102002290007212f20022d000f211120022f00002113200241026a2d000021142002102c200320143a00e203200320133b01e003200320113a00ef032003202f3700e703200320103600e30341ace9c500ad4280808080d00184222f100222022d000f2110200228000321112002290007213020022f00002113200241026a2d000021142002102c200341e0036a41126a221520143a0000200620133b0100200341a0036a41086a2213200a290300370300200320303700f703200320113600f303200341a0036a41106a22112006290300370300200320103a00ff03200341a0036a41186a22102005290300370300200320032903e0033703a00320034190026a200341a0036a4120109401200328029402211420032802900221162005420037030020064200370300200a4200370300200342003703e003202e1002220228000321172002290007213020022d000f211c20022f0000211b200241026a2d0000211d2002102c2003201d3a00e2032003201b3b01e0032003201c3a00ef03200320303700e703200320173600e303202f100222022d000f21172002280003211c2002290007212f20022f0000211b200241026a2d0000211d2002102c2015201d3a00002006201b3b01002013200a2903003703002003202f3700f7032003201c3600f30320112006290300370300200320173a00ff0320102005290300370300200320032903e0033703a00320032014410020161b221041016a3602b009200341a0036aad4280808080800484200341b0096aad4280808080c000841001200341820a6a20084110763a0000200341800a6a20083b0100200341b0096a41186a200c370300200341b0096a41386a200341a8076a41186a290300370300200341b0096a41306a200341a8076a41106a290300370300200341b0096a41286a200341a8076a41086a2903003703002003418f0a6a200f3a0000200341870a6a202c370000200341830a6a2009360000200341ff096a200d3a0000200341f7096a202d370000200341f3096a200e360000200320073b01f009200341f2096a20074110763a00002003200b3703b809200320043703b009200320123703c009200320032903a8073703d009202e100222022d000f2107200229000721042002280003210820022f00002109200241026a2d0000210d2002102c41e1e5c200ad4280808080900184100222022d000f210e2002290007210b2002280003210f20022f00002111200241026a2d000021132002102c200320103602a006200341c0036a41186a2214200341a0066aad4280808080c000841006220241186a290000370300200341c0036a41106a2215200241106a290000370300200341c0036a41086a2216200241086a290000370300200320022900003703c0032002102c2005201429030037030020062015290300370300200a2016290300370300200320032903c0033703e00341c000102a2202450d19200220043700072002200836000320022009200d4110747222083b0000200241026a20084110763a0000200220073a000f2002200b3700172002200f3600132002201120134110747222073b0010200241126a20074110763a00002002200e3a001f200220032903e003370020200241286a200341e0036a41086a290300370000200241306a2006290300370000200241386a2005290300370000200341003602a806200342013703a006200341b0096a41206a200341a0066a109101200341b0096a41086a290300210420032903b009210b0240024020032802a406220520032802a80622066b4110490d0020032802a00621050c010b200641106a22072006490d0d200541017422062007200620074b1b22064100480d0d0240024020050d002006102a21050c010b20032802a00620052006102e21050b2005450d1a200320063602a406200320053602a00620032802a80621060b200520066a220520043700082005200b3700002003200641106a3602a806200341b0096a41c0006a200341a0066a109101200341c8096a290300210420032903c009210b0240024020032802a406220720032802a80622056b4110490d0020032802a00621060c010b200541106a22062005490d0d200741017422052006200520064b1b22084100480d0d0240024020070d002008102a21060c010b20032802a00620072008102e21060b2006450d1a200320083602a406200320063602a00620032802a8062105200821070b200620056a220820043700082008200b3700002002ad4280808080800884200541106aad4220862006ad84100102402007450d002006102c0b2002102c200341b8096a41003a00002003410c3a00b009200341b0096a410c6a201036020041014100200341b0096a1092010c080b200641ff01714101470d0320054102490d03200741ff01710d0341a4e9c500ad4280808080800184100222022d000f2106200229000721042002280003210520022f00002107200241026a2d0000210a2002102c41e1e5c200ad4280808080900184100222022d000f21092002290007210b2002280003210d20022f0000210e200241026a2d0000210f2002102c200320083602b009200341c0036a41186a2208200341b0096aad4280808080c000841006220241186a290000370300200341c0036a41106a2210200241106a290000370300200341c0036a41086a2211200241086a290000370300200320022900003703c0032002102c200341a0036a41186a22132008290300370300200341a0036a41106a22082010290300370300200341a0036a41086a22102011290300370300200320032903c0033703a00341c000102a2202450d18200220043700072002200536000320022007200a4110747222053b0000200241026a20054110763a0000200220063a000f2002200b3700172002200d3600132002200e200f4110747222063b0010200241126a20064110763a0000200220093a001f200220032903a003370020200241286a2010290300370000200241306a2008290300370000200241386a2013290300370000200341b0096a200241c00010b802024020032903b00942015222060d002002ad428080808080088410050b20032903b8092104200341a0066a200341c0096a41d80010db051a200341b0096a200341a0066a41d80010db051a20060d01200341b0086a200341b0096a41d80010db051a2002102c200320043703a807200341a8076a41086a200341b0086a41d80010db051a200341d0026a200341c8076a20032903b807200341c0076a29030010bf0120032903d002200341d0026a41086a29030010a9010c070b200641ff01714101470d0220054104490d02200741ff01710d0241a4e9c500ad4280808080800184100222022d000f2106200229000721042002280003210520022f00002107200241026a2d0000210a2002102c41e1e5c200ad4280808080900184100222022d000f21092002290007210b2002280003210d20022f0000210e200241026a2d0000210f2002102c200320083602b009200341c0036a41186a2210200341b0096aad4280808080c000841006220241186a290000370300200341c0036a41106a2211200241106a290000370300200341c0036a41086a2213200241086a290000370300200320022900003703c0032002102c200341a0036a41186a22142010290300370300200341a0036a41106a22102011290300370300200341a0036a41086a22112013290300370300200320032903c0033703a00341c000102a2202450d17200220043700072002200536000320022007200a4110747222053b0000200241026a20054110763a0000200220063a000f2002200b3700172002200d3600132002200e200f4110747222063b0010200241126a20064110763a0000200220093a001f200220032903a003370020200241286a2011290300370000200241306a2010290300370000200241386a2014290300370000200341e0026a200241c00041014100410010970120032802e00221062002102c20064101470d01200341a0036a41186a22054200370300200341a0036a41106a22024200370300200341a0036a41086a22074200370300200342003703a00341a4e9c500ad4280808080800184220c10022206280003210a2006290007210420062d000f210920062f0000210d200641026a2d0000210e2006102c2003200e3a00a2032003200d3b01a003200320093a00af03200320043700a7032003200a3600a30341b9e9c500ad42808080809001842212100222062d000f210a200628000321092006290007210420062f0000210d200641026a2d0000210e2006102c200341a0036a41126a200e3a00002002200d3b0100200341e0036a41086a220d2007290300370300200320043700b703200320093600b303200341e0036a41106a220920022903003703002003200a3a00bf03200341e0036a41186a220a2005290300370300200320032903a0033703e003200341b0096a200341e0036a10960120032802b0092206410420061b210e024020032902b409420020061b2204422088220ba722062004a7470d00200641016a220f2006490d0b200ba722114101742210200f200f2010491b220f41ffffffff0371200f470d0b200f41027422104100480d0b0240024020060d002010102a210e0c010b200e20114102742010102e210e0b200e450d182004422088220ba72106200fad21040b200e20064102746a2008360200200542003703002002420037030020074200370300200342003703a003200c1002220628000321082006290007210c20062d000f210f20062f00002110200641026a2d000021112006102c200320113a00a203200320103b01a0032003200f3a00af032003200c3700a703200320083600a3032012100222062d000f21082006280003210f2006290007210c20062f00002110200641026a2d000021112006102c200341b2036a20113a0000200220103b0100200d20072903003703002003200c3700b7032003200f3600b30320092002290300370300200320083a00bf03200a2005290300370300200320032903a0033703e0030240200e0d00200341e0036aad428080808080048410050c070b200341003602b809200342013703b009200ba741016a2206200341b0096a10670240024020060d0020032802b809210a20032802b409210820032802b00921060c010b410020032802b80922026b2105200e20064102746a210d20032802b4092108200e210703402007280200210902400240200820056a4104490d0020032802b00921060c010b200241046a22062002490d0d2008410174220a2006200a20064b1b220a4100480d0d0240024020080d00200a102a21060c010b20032802b0092008200a102e21060b2006450d1a2003200a3602b409200320063602b009200a21080b2003200241046a220a3602b809200620026a20093600002005417c6a2105200a2102200d200741046a2207470d000b0b2004a72102200341e0036aad4280808080800484200aad4220862006ad84100102402008450d002006102c0b2002450d06200e102c0c060b2002102c0b41dee9c500210541142106410321020c030b410e210641cf8cc6002105410021020c020b41dd8cc6002105410e2106410121020c010b41c2e9c5002105411c2106410221020b20004181203b010820002006360204200020053602002000410a6a20023a00000c1a0b200041023a00080c190b200141086a28020021062001280204210502400240024020022d00000d0020022d000141ff01714101460d010b02402006450d002005102c0b200041811e3b010820004113360204200041c3b2c0003602004100210a2000410a6a41003a00000c010b02402006450d002005102c0b200041023a00084100210a0b41012107410121054101210e4101210f4101211041012111410121134101211441012115410121080c330b02400240024020022d00000d0020022d000141ff01714102470d0020012802042106200341e0036a41186a22074200370300200341e0036a41106a22054200370300200341e0036a41086a22084200370300200342003703e00341f9e8c500ad428080808090018410022202280003210a2002290007210420022d000f210920022f0000210d200241026a2d0000210e2002102c2003200e3a00e2032003200d3b01e003200320093a00ef03200320043700e7032003200a3600e30341de99c500ad4280808080e00084100222022d000f210a200228000321092002290007210420022f0000210d200241026a2d0000210e2002102c200341e0036a41126a200e3a00002005200d3b0100200341a0056a41086a2008290300370300200320043700f703200320093600f303200341a0056a41106a20052903003703002003200a3a00ff03200341a0056a41186a2007290300370300200320032903e0033703a00520034188026a200341a0056a41204101410041001097012003280288024101460d01200341c0036a41186a22074200370300200341c0036a41106a22054200370300200341c0036a41086a22084200370300200342003703c0034191b0c200ad4280808080e0008410022202280003210a2002290007210420022d000f210920022f0000210d200241026a2d0000210e2002102c2003200e3a00c2032003200d3b01c003200320093a00cf03200320043700c7032003200a3600c30341acb0c200ad4280808080e00084100222022d000f210a200228000321092002290007210420022f0000210d200241026a2d0000210e2002102c200341c0036a41126a200e3a00002005200d3b0100200341a0036a41086a2008290300370300200320043700d703200320093600d303200341a0036a41106a20052903003703002003200a3a00df03200341a0036a41186a2007290300370300200320032903c0033703a00320034180026a200341a0036a412010940120032802840241002003280280021b2006490d02200341e0036a41186a22074200370300200341e0036a41106a22054200370300200341e0036a41086a22084200370300200342003703e00341f9e8c500ad428080808090018410022202280003210a2002290007210420022d000f210920022f0000210d200241026a2d0000210e2002102c2003200e3a00e2032003200d3b01e003200320093a00ef03200320043700e7032003200a3600e30341de99c500ad4280808080e00084100222022d000f210a200228000321092002290007210420022f0000210d200241026a2d0000210e2002102c200341f2036a200e3a00002005200d3b0100200341a0056a41086a2008290300370300200320043700f703200320093600f303200341a0056a41106a20052903003703002003200a3a00ff03200341a0056a41186a2007290300370300200320032903e0033703a005200320063602b009200341a0056aad4280808080800484200341b0096aad4280808080c000841001200041023a00080c1a0b200041811c3b01082000410f360204200041d6b2c0003602002000410a6a41003a00000c190b41ef99c500413141acfec5001036000b41a09ac500412341acfec5001036000b20034180056a41026a220d200141076a2d00003a0000200341a8076a41086a220e2001411c6a290200370300200341a8076a41106a220f200141246a290200370300200341a8076a41186a2001412c6a290200370300200341c8076a200141346a290200370300200341d0076a2001413c6a290200370300200341d8076a200141c4006a2d00003a0000200320012f00053b0180052003200141146a2902003703a807200141086a28020021082001410c6a280200210a200141106a28020021052002410c6a2802002110200241086a280200210720022f0001200241036a2d0000411074722111200241046a280200211320022d000021060240024002400240024002400240024002400240024002400240024002400240024002400240024020012d000422090e06000102030405000b200341b0096a41146a4101360200200342013702b409200341fcc4c5003602b009200341043602a406200341f4c4c5003602a0062003200341a0066a3602c009200341b0096a4184c5c5001041000b200341b7066a200e290300370000200341bf066a200f2d00003a0000200320032f0180053b01a006200320053600ab062003200a3600a706200320083600a306200320032903a8073700af062003200d2d00003a00a206024002402006417f6a220241024b0d00024020020e03000102000b200741017420104d0d00201341ff0171450d010b200620117241ff01710d140b200341c0036a41186a22054200370300200341c0036a41106a22064200370300200341c0036a41086a22074200370300200342003703c00341e9eac100ad4280808080b0028410022202280003210d2002290007210420022d000f210e20022f0000210f200241026a2d000021102002102c200320103a00c2032003200f3b01c0032003200e3a00cf03200320043700c7032003200d3600c30341eae5c200ad4280808080f00084100222022d000f210d2002280003210e2002290007210420022f0000210f200241026a2d000021102002102c200341d2036a20103a00002006200f3b0100200341a0036a41086a2007290300370300200320043700d7032003200e3600d303200341a0036a41106a20062903003703002003200d3a00df03200341a0036a41186a2005290300370300200320032903c0033703a003200341b0096a200341a0036a412010d001024020032802b009220d0d004101210d20034101360280044100210f410021100c100b2003200d3602800420032802b409210f20032902b4092204a7211041002102024002402004422088a7220e41014b0d00200e0e021101110b200e210603402006410176220520026a22072002200d20074105746a200341a0066a412010dd054101481b2102200620056b220641014b0d000b0b0240200d20024105746a200341a0066a412010dd0522060d00419eecc10021052010450d12200d102c4110210f0c150b200341b0096a41186a200341a0066a41186a290300370300200341b0096a41106a200341a0066a41106a290300370300200341b0096a41086a200341a0066a41086a290300370300200320032903a0063703b00902402006411f7620026a2205200e4b0d00200341b0096a21060c110b41ecb3c000411e41acfec5001036000b200341b7066a200e290300370000200341bf066a200f2d00003a0000200320032f0180053b01a006200320053600ab062003200a3600a706200320083600a306200320032903a8073700af062003200d2d00003a00a206024002402006417f6a220241024b0d00024020020e03000102000b200741017420104d0d00201341ff0171450d010b200620117241ff01710d130b200341c0036a41186a22054200370300200341c0036a41106a22064200370300200341c0036a41086a22074200370300200342003703c00341e9eac100ad4280808080b0028410022202280003210d2002290007210420022d000f210e20022f0000210f200241026a2d000021102002102c200320103a00c2032003200f3b01c0032003200e3a00cf03200320043700c7032003200d3600c30341eae5c200ad4280808080f00084100222022d000f210d2002280003210e2002290007210420022f0000210f200241026a2d000021102002102c200341d2036a20103a00002006200f3b0100200341a0036a41086a2007290300370300200320043700d7032003200e3600d303200341a0036a41106a20062903003703002003200d3a00df03200341a0036a41186a2005290300370300200320032903c0033703a003200341b0096a200341a0036a412010d00120032802b0092206410120061b210d41002102024002400240024020032902b409420020061b2204422088a7220e41014b0d00200e0e020201020b200e210603402006410176220520026a22072002200d20074105746a200341a0066a412010dd054101481b2102200620056b220641014b0d000b0b200d20024105746a200341a0066a412010dd05450d010b41aeecc1002105410c210f2004a7450d14200d102c0c140b2002200e4f0d03200d20024105746a2206200641206a2002417f73200e6a41057410dc051a200341a0056a41186a22054200370300200341a0056a41106a22064200370300200341a0056a41086a22074200370300200342003703a00541e9eac100ad4280808080b0028410022202280003210f2002290007210b20022d000f211020022f00002111200241026a2d000021132002102c200320133a00a205200320113b01a005200320103a00af052003200b3700a7052003200f3600a30541eae5c200ad4280808080f00084100222022d000f210f200228000321102002290007210b20022f00002111200241026a2d000021132002102c200341b2056a20133a0000200620113b0100200341b0096a41086a20072903003703002003200b3700b705200320103600b305200341b0096a41106a20062903003703002003200f3a00bf05200341b0096a41186a2005290300370300200320032903a0053703b009200341003602b808200342013703b008200e417f6a2205200341b0086a106702402005450d00200e41057441606a2106200d210203402002200341b0086a109101200241206a2102200641606a22060d000b0b20032802b4082102200341b0096aad428080808080048420033502b80842208620032802b0082206ad84100102402002450d002006102c0b200341b0096a41186a200341a0066a41186a290300370300200341b0096a41106a200341a0066a41106a290300370300200341b0096a41086a200341a0066a41086a290300370300200320032903a0063703b009200341b0096a4101200d200510f3022003418a023b01b0094100210541014100200341b0096a1092012004a7450d0b200d102c0c0b0b200341c7086a200e290300370000200341cf086a200f2d00003a0000200320032f0180053b01b008200320053600bb082003200a3600b708200320083600b308200320032903a8073700bf082003200d2d00003a00b208200341a0066a41186a200341d1076a290000370300200341a0066a41106a200341c9076a290000370300200341a0066a41086a200341a8076a41196a290000370300200320032900b9073703a006024002402006417f6a220241024b0d00024020020e03000102000b200741017420104d0d00201341ff0171450d010b200620117241ff01710d120b0240200341b0086a200341a0066a412010dd050d00410021050c0b0b200341c0036a41186a22054200370300200341c0036a41106a22064200370300200341c0036a41086a22074200370300200342003703c00341e9eac100ad4280808080b0028410022202280003210d2002290007210420022d000f210e20022f0000210f200241026a2d000021102002102c200320103a00c2032003200f3b01c0032003200e3a00cf03200320043700c7032003200d3600c30341eae5c200ad4280808080f00084100222022d000f210d2002280003210e2002290007210420022f0000210f200241026a2d000021102002102c200341d2036a20103a00002006200f3b0100200341a0036a41086a2007290300370300200320043700d7032003200e3600d303200341a0036a41106a20062903003703002003200d3a00df03200341a0036a41186a2005290300370300200320032903c0033703a003200341b0096a200341a0036a412010d00120032802b0092206410120061b210741aeecc1002105410c210f410021020240024020032902b409420020061b2204422088a7221041014b0d0020100e020e010e0b2010210603402006410176220d20026a220e20022007200e4105746a200341b0086a412010dd054101481b21022006200d6b220641014b0d000b0b200720024105746a2211200341b0086a412010dd050d0c410021060240201041014b0d0020100e020a090a0b2010210503402005410176220d20066a220e20062007200e4105746a200341a0066a412010dd054101481b21062005200d6b220541014b0d000c090b0b024002402006417f6a220241024b0d00024020020e03000102000b200741017420104d0d00201341ff0171450d010b200620117241ff0171450d000240200a450d002008102c0b419eb3c4002105410a210f0c140b2008200510f402200341c0036a41186a22074200370300200341c0036a41106a22064200370300200341c0036a41086a220d4200370300200342003703c00341e9eac100ad4280808080b00284220410022202280003210e2002290007210b20022d000f210f20022f00002110200241026a2d000021112002102c200320113a00c203200320103b01c0032003200f3a00cf032003200b3700c7032003200e3600c30341eae5c200ad4280808080f00084220b100222022d000f210e2002280003210f2002290007210c20022f00002110200241026a2d000021112002102c200341c0036a41126a20113a0000200620103b0100200341a0036a41086a200d2903003703002003200c3700d7032003200f3600d303200341a0036a41106a20062903003703002003200e3a00df03200341a0036a41186a2007290300370300200320032903c0033703a003200341b0096a200341a0036a412010d0012008200520032802b0092202410120021b220620032902b409420020021b220c422088a710f5020240200ca7450d002006102c0b200341a0056a41186a22074200370300200341a0056a41106a22064200370300200341a0056a41086a220d4200370300200342003703a005200410022202280003210e2002290007210420022d000f210f20022f00002110200241026a2d000021112002102c200320113a00a205200320103b01a0052003200f3a00af05200320043700a7052003200e3600a305200b100222022d000f210e2002280003210f2002290007210420022f00002110200241026a2d000021112002102c200341a0056a41126a20113a0000200620103b0100200341b0096a41086a200d290300370300200320043700b7052003200f3600b305200341b0096a41106a20062903003703002003200e3a00bf05200341b0096a41186a2007290300370300200320032903a0053703b009200341003602a806200342013703a0062005200341a0066a106702402005450d00200541057421062008210203402002200341a0066a109101200241206a2102200641606a22060d000b0b20032802a4062102200341b0096aad428080808080048420033502a80642208620032802a0062206ad84100102402002450d002006102c0b0240200a450d002008102c0b2003418a063b01b009410021054101210241014100200341b0096a1092010c120b201041107621142010410876211520074110762116200741087621172002411a6a2901002104200241196a2d0000211b200241186a2d0000211d200241166a2f01002118200241156a2d00002119200241146a2d0000211a200241126a2f0100212b200241116a2d0000211f200241106a2d0000211c200341c7086a200e290300370000200341cf086a200f2d00003a0000200320032f0180053b01b008200320053600bb082003200a3600b708200320083600b308200320032903a8073700bf082003200d2d00003a00b208410220134108762007411874724102201141ff017141014622051b20061b21020240024020060d0020050d010b41d6b2c0002105410f210f024002400240024020020e050001020315000b201741ff01712016410874722010411874722105201541ff0171201441087472201c41187472210f0c140b41dd8cc6002105410e210f0c130b41c3b2c00021054113210f0c120b41b2b2c00021054111210f0c110b200320043703b8062003201b3a00b7062003201d3a00b606200320183b01b406200320193a00b3062003201a3a00b2062003202b3b01b0062003201f3a00af062003201c3a00ae06200320143b01ac06200320153a00ab06200320103a00aa06200320163b01a806200320173a00a706200320023600a306200320133a00a206200320114108763b01a006200341a0066a200341b0086a412010dd05450d03200341c0036a41186a22054200370300200341c0036a41106a22064200370300200341c0036a41086a22074200370300200342003703c00341e9eac100ad4280808080b0028410022202280003210d2002290007210420022d000f210e20022f0000210f200241026a2d000021102002102c200320103a00c2032003200f3b01c0032003200e3a00cf03200320043700c7032003200d3600c30341eae5c200ad4280808080f00084100222022d000f210d2002280003210e2002290007210420022f0000210f200241026a2d000021102002102c200341d2036a20103a00002006200f3b0100200341a0036a41086a2007290300370300200320043700d7032003200e3600d303200341a0036a41106a20062903003703002003200d3a00df03200341a0036a41186a2005290300370300200320032903c0033703a003200341b0096a200341a0036a412010d00120032802b0092206410120061b210741aeecc1002105410c210f410021020240024020032902b409420020061b2204422088a7221041014b0d0020100e020701070b2010210603402006410176220d20026a220e20022007200e4105746a200341a0066a412010dd054101481b21022006200d6b220641014b0d000b0b200720024105746a2211200341a0066a412010dd050d05410021060240201041014b0d0020100e020302030b2010210503402005410176220d20066a220e20062007200e4105746a200341b0086a412010dd054101481b21062005200d6b220541014b0d000c020b0b418ab4c000411d41acfec5001036000b200720064105746a200341b0086a412010dd050d00419eecc10021054110210f0c030b200341e0036a41186a2206200341b0086a41186a290300370300200341e0036a41106a2205200341b0086a41106a290300370300200341e0036a41086a220d200341b0086a41086a290300370300200320032903b0083703e003200220104f0d01201120032903e003370000201141186a2006290300370000201141106a2005290300370000201141086a200d2903003700002007201010f402200341a0056a41186a22054200370300200341a0056a41106a22064200370300200341a0056a41086a220d4200370300200342003703a00541e9eac100ad4280808080b0028410022202280003210e2002290007210b20022d000f210f20022f00002111200241026a2d000021132002102c200320133a00a205200320113b01a0052003200f3a00af052003200b3700a7052003200e3600a30541eae5c200ad4280808080f00084100222022d000f210e2002280003210f2002290007210b20022f00002111200241026a2d000021132002102c200341b2056a20133a0000200620113b0100200341b0096a41086a200d2903003703002003200b3700b7052003200f3600b305200341b0096a41106a20062903003703002003200e3a00bf05200341b0096a41186a2005290300370300200320032903a0053703b00941002102200341003602a805200342013703a0052010200341a0056a1067201041057421060340200720026a200341a0056a1091012006200241206a2202470d000b20032802a4052102200341b0096aad428080808080048420033502a80542208620032802a0052206ad84100102402002450d002006102c0b200341b0096a41186a200341a0066a41186a290300370300200341b0096a41106a200341a0066a41106a290300370300200341b0096a41086a200341a0066a41086a290300370300200320032903a0063703b009200341b0096a41012007201010f3022004a7450d002007102c0b2003418a083b01b0094100210541014100200341b0096a1092010c040b41a888c600200220101038000b2004a7450d0a2007102c0c0a0b200720064105746a200341a0066a412010dd050d00419eecc10021054110210f0c030b200341e0036a41186a2206200341a0066a41186a290300370300200341e0036a41106a2205200341a0066a41106a290300370300200341e0036a41086a220d200341a0066a41086a290300370300200320032903a0063703e003200220104f0d01201120032903e003370000201141186a2006290300370000201141106a2005290300370000201141086a200d2903003700002007201010f402200341a0056a41186a22054200370300200341a0056a41106a22064200370300200341a0056a41086a220d4200370300200342003703a00541e9eac100ad4280808080b0028410022202280003210e2002290007210b20022d000f210f20022f00002111200241026a2d000021132002102c200320133a00a205200320113b01a0052003200f3a00af052003200b3700a7052003200e3600a30541eae5c200ad4280808080f00084100222022d000f210e2002280003210f2002290007210b20022f00002111200241026a2d000021132002102c200341b2056a20133a0000200620113b0100200341b0096a41086a200d2903003703002003200b3700b7052003200f3600b305200341b0096a41106a20062903003703002003200e3a00bf05200341b0096a41186a2005290300370300200320032903a0053703b00941002102200341003602a805200342013703a0052010200341a0056a1067201041057421060340200720026a200341a0056a1091012006200241206a2202470d000b20032802a4052102200341b0096aad428080808080048420033502a80542208620032802a0052206ad84100102402002450d002006102c0b200341b0096a41186a200341b0086a41186a290300370300200341b0096a41106a200341b0086a41106a290300370300200341b0096a41086a200341b0086a41086a290300370300200320032903b0083703b009200341b0096a41012007201010f3022003418a043b01b0094100210541014100200341b0096a1092012004a7450d002007102c0b0c070b41a888c600200220101038000b2004a7450d052007102c0c050b200341b0096a41186a200341a0066a41186a290300370300200341b0096a41106a200341a0066a41106a290300370300200341b0096a41086a200341a0066a41086a290300370300200320032903a0063703b0094100210e200341b0096a2106410021050b02400240200e2010460d00200f21100c010b0240200f200e460d00200f21100c010b200f41016a2202200f490d02200f41017422072002200720024b1b221041ffffff3f712010470d02201041057422024100480d0202400240200f0d002002102a210d0c010b200d200f4105742002102e210d0b200d450d0f2003200d360280040b200d20054105746a220241206a2002200e20056b41057410dc051a200241186a200641186a290000370000200241106a200641106a290000370000200241086a200641086a29000037000020022006290000370000200341a0056a41186a22054200370300200341a0056a41106a22064200370300200341a0056a41086a22074200370300200342003703a00541e9eac100ad4280808080b0028410022202280003210d2002290007210420022d000f210f20022f00002111200241026a2d000021132002102c200320133a00a205200320113b01a0052003200f3a00af05200320043700a7052003200d3600a30541eae5c200ad4280808080f00084100222022d000f210d2002280003210f2002290007210420022f00002111200241026a2d000021132002102c200341b2056a20133a0000200620113b0100200341b0096a41086a2007290300370300200320043700b7052003200f3600b305200341b0096a41106a20062903003703002003200d3a00bf05200341b0096a41186a2005290300370300200320032903a0053703b0092003280280042102200341003602b808200342013703b008200e41016a2207200341b0086a106702402007200e490d00200e41057441206a210603402002200341b0086a109101200241206a2102200641606a22060d000b0b20032802b4082102200341b0096aad428080808080048420033502b80842208620032802b0082206ad84100102402002450d002006102c0b200341b0096a41186a200341a0066a41186a290300370300200341b0096a41106a200341a0066a41106a290300370300200341b0096a41086a200341a0066a41086a290300370300200320032903a0063703b00941002105410141002003280280042202200710f3022003410a3b01b00941014100200341b0096a1092012010450d002002102c0b4110210f0c020b1035000b419eb3c4002105410a210f0b410021020b024020094104470d002002200a45720d002008102c0b20050d00200041023a0008410021080c010b200041811a3b01082000200f36020420002005360200410021082000410a6a41003a00000b41012107410121054101210e4101210f41012110410121114101211341012114410121150c2a0b200341a8076a41206a200141286a290300370300200341a8076a41186a200141206a290300370300200341a8076a41106a200141186a290300370300200341a8076a41086a200141106a2903003703002003200141086a2903003703a807200341b0096a41206a200241206a290200370300200341b0096a41186a200241186a290200370300200341b0096a41106a200241106a290200370300200341b0096a41086a200241086a290200370300200320022902003703b009200341f8016a200341a8076a200341b0096a109e020240024020032802f80122020d00200041023a0008410021150c010b20032802fc01210620004181183b010820002002360200410021152000410a6a41003a0000200020063602040b41012107410121054101210e4101210f410121104101211141012113410121140c280b200341a8076a41206a200141246a290200370300200341a8076a41186a2001411c6a290200370300200341a8076a41106a200141146a290200370300200341a8076a41086a2001410c6a290200370300200320012902043703a807200341b0096a41206a200241206a290200370300200341b0096a41186a200241186a290200370300200341b0096a41106a200241106a290200370300200341b0096a41086a200241086a290200370300200320022902003703b009200341f0016a200341a8076a200341b0096a10f6020240024020032802f00122020d00200041023a0008410021140c010b20032802f401210620004181163b010820002002360200410021142000410a6a41003a0000200020063602040b41012107410121054101210e4101210f4101211041012111410121130c260b200341a8076a41206a200141246a290200370300200341a8076a41186a2001411c6a290200370300200341a8076a41106a200141146a290200370300200341a8076a41086a2001410c6a290200370300200320012902043703a807200341b0096a41206a200241206a290200370300200341b0096a41186a200241186a290200370300200341b0096a41106a200241106a290200370300200341b0096a41086a200241086a290200370300200320022902003703b009200341e8016a200341a8076a200341b0096a10f7020240024020032802e80122020d00200041023a0008410021130c010b20032802ec01210620004181143b010820002002360200410021132000410a6a41003a0000200020063602040b41012107410121054101210e4101210f41012110410121110c240b200341b0096a41306a200141386a290300370300200341b0096a41286a200141306a290300370300200341b0096a41206a200141286a290300370300200341b0096a41186a200141206a290300370300200341b0096a41106a200141186a290300370300200341b0096a41086a200141106a2903003703002003200141086a2903003703b009200341a8076a41206a200241206a290200370300200341a8076a41186a200241186a290200370300200341a8076a41106a200241106a290200370300200341a8076a41086a200241086a290200370300200320022902003703a807200341e0016a200341b0096a200341a8076a10f8020240024020032802e00122020d00200041023a0008410021110c010b20032802e401210620004181123b010820002002360200410021112000410a6a41003a0000200020063602040b41012107410121054101210e4101210f410121100c220b200141086a280200211120012802042116200341b0096a2001410c6a41840110db051a2002411a6a2901002104200241196a2d0000210f200241186a2d00002110200241166a2f01002113200241156a2d00002114200241146a2d00002115200241126a2f01002117200241116a2d0000211c200241106a2d000021072002410e6a2f010021082002410d6a2d0000210a2002410c6a2d000021092002410a6a2f0100210d200241096a2d0000210e200241046a2d0000211b200241026a2f0100211d200241056a280000210520022d0000210620022d0001210220034180046a200341b0096a41046a41800110db051a410220054102200241014622021b20061b21050240024002400240024020060d0020020d010b41d6b2c0002102410f2106024002400240024020050e050001020305000b200d410874200e7220094118747221022008410874200a7220074118747221060c040b41dd8cc6002102410e21060c030b41c3b2c0002102411321060c020b41b2b2c0002102411121060c010b200320043703c8082003200f3a00c708200320103a00c608200320133b01c408200320143a00c308200320153a00c208200320173b01c0082003201c3a00bf08200320073a00be08200320083b01bc082003200a3a00bb08200320093a00ba082003200d3b01b8082003200e3a00b708200320053600b3082003201b3a00b2082003201d3b01b008200341a8076a200341b0086a10f902024020032802c8072202450d00200341a0066a41106a200341e0076a290300370300200341a0066a41086a200341d8076a290300370300200341a0066a41186a200341e8076a290300370300200341c0066a200341f0076a280200360200200341c0036a41086a2206200341ac066a290200370300200341c0036a41106a2205200341b4066a290200370300200341c0036a41186a2207200341bc066a2902003703002003200341d0076a2903003703a006200320032902a4063703c003024020032802cc07450d002002102c0b20034180056a41086a200629030037030020034180056a41106a200529030037030020034180056a41186a2007290300370300200320032903c00337038005200341a0056a20034180046a41800110db051a200341e0036a20034180056a10a601200341a8076a20032802e003220620032802e80310a70120032d00a8072102200341b0086a200341a8076a41017241800110db051a0240024020024101460d00200341003a00a0060c010b200341013a00a006200341a0066a410172200341b0086a41800110db051a0b024020032802e403450d002006102c0b200341a0056a41206a2113200341e0056a211420034180066a2115200341c1066a2117200341e1066a211c20034181076a211b200341a0066a410172211d200341a8076a4101722105417021080340410021060240024002400240200841a4eec1006a280000220241e6e485f3064a220f0d00200241e2c289ab06460d0141012107200241e1ea91cb06470d0341202106201521070c030b200241e9dabdf306460d0141012107200241e7e485f306470d0241202106200341a0056a21070c020b41202106201321070c010b41202106201421070b200320063602b808200320073602b408200320023602b008200341c0036a200341b0086a10a801200341a8076a20032802c003220a20032802c80310d301200341a0036a41086a2209200541086a290000370300200341a0036a41106a220d200541106a290000370300200341a0036a41186a220e200541186a290000370300200320052900003703a0030240024020032d00a8074101470d00200341e0036a41186a2210200e290300370300200341e0036a41106a220e200d290300370300200341e0036a41086a220d2009290300370300200320032903a0033703e003024020032802c403450d00200a102c0b200341a8076a41186a2010290300370300200341a8076a41106a200e290300370300200341a8076a41086a200d290300370300200320032903e0033703a807200341a8076a20034180056a412010dd05450d0141bfbbc1002102411821060c040b20032802c403450d00200a102c0b0240024020032d00a0064101470d004100210a410121090240024002400240200f0d00200241e2c289ab06460d01200241e1ea91cb06470d034120210a201b21090c030b200241e9dabdf306460d01200241e7e485f306470d024120210a201d21090c020b4120210a201721090c010b4120210a201c21090b02402006200a470d0020072009460d0220072009200610dd05450d020b2003200a3602b007200320093602ac07200320023602a807200341b0086a200341a8076a10a80120033502b80842208620032802b008220aad84100520032802b408450d00200a102c0b200320063602b007200320073602ac07200320023602a807200341b0086a200341a8076a10a80120032802b0082102200320032802b8083602ac07200320023602a80720034180056a200341a8076a10a10220032802b408450d002002102c0b200841046a22080d000b200341b0086a20034180056a10a60120032802b008210220033502b8082104200341003602b007200342013703a807200341a0056a200341a8076a109101200341c0056a200341a8076a109101200341e0056a200341a8076a10910120034180066a200341a8076a10910120032802ac07210620044220862002ad8420033502b00742208620032802a8072205ad84100102402006450d002005102c0b024020032802b408450d002002102c0b2011450d022016102c0c020b4198bbc1002102412721060b02402011450d002016102c0b2002450d0020004181103b01082000200636020420002002360200410021102000410a6a41003a00000c010b200041023a0008410021100b41012107410121054101210e4101210f0c200b200341b0096a41306a200141386a290300370300200341b0096a41286a200141306a290300370300200341b0096a41206a200141286a290300370300200341b0096a41186a200141206a290300370300200341b0096a41106a200141186a290300370300200341b0096a41086a200141106a2903003703002003200141086a2903003703b009200341a8076a41206a200241206a290200370300200341a8076a41186a200241186a290200370300200341a8076a41106a200241106a290200370300200341a8076a41086a200241086a290200370300200320022902003703a807200341a0066a200341b0096a200341a8076a10fa02410c21020240024020032802a0062206410c470d00200041023a00080c010b4195e2c5002105410b210702400240024002400240024002400240024002400240024020060e0c000102030405060708090a0b000b20032802a4062105200341a8066a2802002102410021070c0a0b41dd8cc6002105410e2102410121070c090b4188e2c5002105410d2102410221070c080b4180e2c500210541082102410321070c070b41f3e1c5002105410d2102410421070c060b41e6e1c5002105410d2102410521070c050b41dde1c500210541092102410621070c040b41d1e1c5002105410721070c030b41c3e1c5002105410e2102410821070c020b41b2e1c500210541112102410921070c010b41a1e1c500210541112102410a21070b200041810e3b010820002002360204200020053602002000410a6a20073a00000b4100210f41012107410121054101210e0c1e0b2003419c036a41026a22072001410f6a2d00003a000020034180046a41086a22082001411c6a29020037030020034180046a41106a220a200141246a29020037030020034180046a41186a22092001412c6a280200360200200320012f000d3b019c032003200141146a29020037038004200141c8006a2903002112200141c0006a290300212c200141386a290300210c2002411a6a2901002104200241196a2d0000210f200241186a2d00002110200241166a2f01002111200241156a2d00002113200241146a2d00002114200241126a2f0100211541112106200241116a2d00002116200241106a2d000021172002410e6a2f0100211c2002410d6a2d0000211b2002410c6a2d0000211d2002410a6a2f01002118200241096a2d00002119200241086a2d0000211a200241066a2f0100212b200241056a2d0000211f200241046a2d00002120200241026a2f01002121200141106a28020021052001410c6a2d00002122200141306a290300210b20022d0001210d20022d0000210e0240024002400240024002400240024002400240024002400240024002400240200141086a2802000e050001020304000b200341b0096a41146a4101360200200342013702b409200341fcc4c5003602b009200341043602a406200341f4c4c5003602a0062003200341a0066a3602c009200341b0096a4184c5c5001041000b200341a0066a41086a2008290300370300200341a0066a41106a200a290300370300200341a0066a41186a2009280200360200200320032f019c033b01800520032003290380043703a006200320072d00003a008205200320043703b8052003200f3a00b705200320103a00b605200320113b01b405200320133a00b305200320143a00b205200320153b01b005200320163a00af05200320173a00ae052003201c3b01ac052003201b3a00ab052003201d3a00aa05200320183b01a805200320193a00a70520034102202b410874201f72201a411874724102200d41ff017141014622061b200e41ff017122021b22073600a305200320203a00a205200320213b01a0050240024020020d0020060d010b41d6b2c0002102410f210620070e050416050617040b200341a8076a41186a200341a0056a41186a290300370300200341a8076a41106a200341a0056a41106a290300370300200341a8076a41086a200341a0056a41086a290300370300200320032903a0053703a8070240202241ff01714101460d00200341a0066a41106a290300210420032f01800520032d00820541107472210220032903a8062212420888a721062012422088a721072012a7210820032802b806210a20032903a00621120c130b200341b0086a200541067610910220032802b00821090240024020032802b8082005413f7122024b0d004100210d0c010b200920024105746a22052f0010200541126a2d000041107472210620052f0000200541026a2d000041107472210220052d001f210a200529001721042005280013210720052d000f210820052900072112200528000321054101210d0b024020032802b408450d002009102c0b200d0d12410121090c130b200341a0066a41086a2008290300370300200341a0066a41106a200a290300370300200341a0066a41186a2009280200360200200320032f019c033b01b00820032003290380043703a006200320072d00003a00b20841b2b2c0002102200d200e7241ff01710d1502400240202241ff01714101460d00200341a0066a41106a290300210420032f01b00820032d00b20841107472210220032903a806222d420888a72106202d422088a72107202da7210820032802b806210a20032903a006212d0c010b200341b0096a200541067610910220032802b00921090240024020032802b8092005413f7122024b0d004100210d0c010b200920024105746a22052f0010200541126a2d000041107472210620052f0000200541026a2d000041107472210220052d001f210a200529001721042005280013210720052d000f21082005290007212d200528000321054101210d0b024020032802b409450d002009102c0b200d450d150b200320063b01b807200341a8076a41126a20064110763a00002003200a3a00c707200320043700bf07200320073600bb07200320083a00b7072003202d3700af07200320053600ab07200320023b01a807200320024110763a00aa07418be9c500ad4280808080800184100222022d000f2106200229000721042002280003210520022f00002107200241026a2d000021082002102c41d6b5c000ad4280808080b00184100222022d000f210a2002290007212d2002280003210920022f0000210d200241026a2d0000210e2002102c200341a0056a200341a8076a109f0141c000102a2202450d0d20022004370007200220053600032002200720084110747222053b0000200241026a20054110763a0000200220063a000f2002202d370017200220093600132002200d200e4110747222063b0010200241126a20064110763a00002002200a3a001f200220032903a005370020200241286a200341a0056a41086a290300370000200241306a200341a0056a41106a290300370000200241386a200341a0056a41186a290300370000200341b8016a200241c000109e01200341b8016a41106a290300212f20032903c001210420032802b80121062002102c4200200b200b428080e983b1de16544100200c501b22021b222d2004420020061b222e564200200c20021b2204202f420020061b220b562004200b5122021b0d06202d202e542004200b5420021b450d0c200341c0036a41186a22054200370300200341c0036a41106a22024200370300200341c0036a41086a22074200370300200342003703c003418be9c500ad4280808080800184220c1002220628000321082006290007212f20062d000f210a20062f00002109200641026a2d0000210d2006102c2003200d3a00c203200320093b01c0032003200a3a00cf032003202f3700c703200320083600c30341c9b5c000ad4280808080d00184222f100222062d000f21082006280003210a2006290007213020062f00002109200641026a2d0000210d2006102c200341d2036a220e200d3a0000200220093b0100200341a0036a41086a22092007290300370300200320303700d7032003200a3600d303200341a0036a41106a220a2002290300370300200320083a00df03200341a0036a41186a220d2005290300370300200320032903c0033703a003200341a0016a200341a0036a4120109e01200341a0016a41106a290300213020032903a801213120032802a0012108200542003703002002420037030020074200370300200342003703c003200c10022206280003210f2006290007210c20062d000f211020062f00002111200641026a2d000021132006102c200320133a00c203200320113b01c003200320103a00cf032003200c3700c7032003200f3600c303202f100222062d000f210f200628000321102006290007210c20062f00002111200641026a2d000021132006102c200e20133a0000200220113b0100200920072903003703002003200c3700d703200320103600d303200a20022903003703002003200f3a00df03200d2005290300370300200320032903c0033703a003200342002030420020081b220c202e202d54ad2004200b7d7c7c2031420020081b220b202e202d7d222f54ad7d222e200b202f7d222f200b56202e200c56202e200c511b22021b3703b80920034200202f20021b3703b009200341b0096a2102200341a0036a21060c0b0b200141e0006a2903002104200141d8006a290300212d200141d0006a290300212e200341a0066a41086a2008290300370300200341a0066a41106a200a290300370300200341a0066a41186a2009280200360200200320032f019c033b018005200320072d00003a00820520032003290380043703a00641b2b2c0002102200d200e7241ff01710d140240202241ff01714101460d00200341a0066a41106a290300212f20032f01800520032d00820541107472210220032903a8062230420888a721062030422088a721072030a7210820032802b806210a20032903a00621300c090b200341b0096a200541067610910220032802b00921090240024020032802b8092005413f7122024b0d004100210d0c010b200920024105746a22052f0010200541126a2d000041107472210620052f0000200541026a2d000041107472210220052d001f210a2005290017212f2005280013210720052d000f210820052900072130200528000321054101210d0b024020032802b409450d002009102c0b200d0d08410121090c090b200341b0086a41086a2008290300370300200341b0086a41106a200a290300370300200341b0086a41186a2009280200360200200320032f019c033b01800520032003290380043703b008200320072d00003a008205200320043703b8052003200f3a00b705200320103a00b605200320113b01b405200320133a00b305200320143a00b205200320153b01b005200320163a00af05200320173a00ae052003201c3b01ac052003201b3a00ab052003201d3a00aa05200320183b01a805200320193a00a70520034102202b410874201a41187472201f724102200d41ff017141014622061b200e41ff017122021b22073600a305200320203a00a205200320213b01a005024020020d0020060d040b41d6b2c0002102410f210620070e050012010213000b20032800a705210220032800ab0521060c120b41c3b2c0002102411321060c110b41b2b2c0002102411121060c100b200341a8076a41186a200341a0056a41186a290300370300200341a8076a41106a200341a0056a41106a290300370300200341a8076a41086a200341a0056a41086a290300370300200320032903a0053703a8070240202241ff01714101460d00200341b0086a41106a290300210420032f01800520032d00820541107472210220032903b8082212420888a721062012422088a721072012a7210820032802c808210a20032903b00821120c020b200341a0066a200541067610910220032802a00621090240024020032802a8062005413f7122024b0d004100210d0c010b200920024105746a22052f0010200541126a2d000041107472210620052f0000200541026a2d000041107472210220052d001f210a200529001721042005280013210720052d000f210820052900072112200528000321054101210d0b024020032802a406450d002009102c0b200d0d01410121090c020b200341c0036a41186a22054200370300200341c0036a41106a22024200370300200341c0036a41086a22074200370300200342003703c003418be9c500ad4280808080800184220c1002220628000321082006290007212f20062d000f210a20062f00002109200641026a2d0000210d2006102c2003200d3a00c203200320093b01c0032003200a3a00cf032003202f3700c703200320083600c30341c9b5c000ad4280808080d00184222f100222062d000f21082006280003210a2006290007213020062f00002109200641026a2d0000210d2006102c200341d2036a220e200d3a0000200220093b0100200341a0036a41086a22092007290300370300200320303700d7032003200a3600d303200341a0036a41106a220a2002290300370300200320083a00df03200341a0036a41186a220d2005290300370300200320032903c0033703a00320034188016a200341a0036a4120109e0120034188016a41106a290300213020032903900121312003280288012108200542003703002002420037030020074200370300200342003703c003200c10022206280003210f2006290007210c20062d000f211020062f00002111200641026a2d000021132006102c200320133a00c203200320113b01c003200320103a00cf032003200c3700c7032003200f3600c303202f100222062d000f210f200628000321102006290007210c20062f00002111200641026a2d000021132006102c200e20133a0000200220113b0100200920072903003703002003200c3700d703200320103600d303200a20022903003703002003200f3a00df03200d2005290300370300200320032903c0033703a0032003427f2030420020081b220c2004200b7d202d202e54ad7d7c2031420020081b220b202d202e7d7c222e200b542202ad7c220b2002200b200c54200b200c511b22021b3703b8092003427f202e20021b3703b009200341b0096a2102200341a0036a21060c040b410021090b200320063b01f003200341f2036a20064110763a00002003200a3a00ff03200320043700f703200320073600f303200320083a00ef03200320123700e703200320053600e303200320023b01e003200320024110763a00e20320090d0b200341b0096a41186a200341e0036a41186a290300370300200341b0096a41106a200341e0036a41106a290300370300200341b0096a41086a200341e0036a41086a290300370300200320032903e0033703b009200341d8016a200341a8076a200341b0096a200b200c410010cd01024020032802d8012202450d0020032802dc0121060c0d0b410021020c0c0b410021090b200320063b01b005200341b2056a20064110763a00002003200a3a00bf052003202f3700b705200320073600b305200320083a00af05200320303700a705200320053600a305200320023b01a005200320024110763a00a20520090d09200b422088a72105200341a8076a41186a200341a0056a41186a290300370300200341a8076a41106a200341a0056a41106a290300370300200341a8076a41086a200341a0056a41086a290300370300200320032903a0053703a807024002400240200ba741ff01714101460d00200b420888a72102202c420888a72106202c422088a72107202ea7210a202ca721080c010b200341b0086a200b422688a710910220032802b00821090240024020032802b8082005413f7122054b0d004100210d202f21122030210c0c010b200920054105746a22052f0010200541126a2d000041107472210620052f0000200541026a2d000041107472210220052d001f210a200529001721122005280013210720052d000f21082005290007210c200528000321054101210d0b024020032802b408450d002009102c0b200d0d00410121090c010b410021090b200320063b01f003200341f2036a20064110763a00002003200a3a00ff03200320123700f703200320073600f303200320083a00ef032003200c3700e703200320053600e303200320023b01e003200320024110763a00e20320090d09200341b0096a41186a200341e0036a41186a290300370300200341b0096a41106a200341e0036a41106a290300370300200341b0096a41086a200341e0036a41086a290300370300200320032903e0033703b009200341d0016a200341a8076a200341b0096a202d2004410110cd0120032802d0012202450d0820032802d40121060c0a0b2006ad42808080808004842002ad428080808080028410010b200341a8076a202d200410a201418be9c500ad4280808080800184100222022d000f21062002290007210b2002280003210520022f00002107200241026a2d000021082002102c41e1b5c000ad4280808080f00184100222022d000f210a2002290007210c2002280003210920022f0000210d200241026a2d0000210e2002102c200341e0036a200341a8076a109f0141c000102a2202450d002002200b370007200220053600032002200720084110747222053b0000200241026a20054110763a0000200220063a000f2002200c370017200220093600132002200d200e4110747222063b0010200241126a20064110763a00002002200a3a001f200220032903e003370020200241286a200341e0036a41086a290300370000200241306a200341e0036a41106a290300370000200241386a200341e0036a41186a290300370000200341f0006a200241c000109e01200341f0006a41106a290300212e2003290378210b200328027021062002102c4200202c202c428080e983b1de165441002012501b22021b220c200b420020061b222c564200201220021b220b202e420020061b221256200b20125122021b0d01200c202c54200b20125420021b450d03200341c0036a41186a22054200370300200341c0036a41106a22024200370300200341c0036a41086a22074200370300200342003703c003418be9c500ad4280808080800184222e1002220628000321082006290007212f20062d000f210a20062f00002109200641026a2d0000210d2006102c2003200d3a00c203200320093b01c0032003200a3a00cf032003202f3700c703200320083600c30341c9b5c000ad4280808080d00184222f100222062d000f21082006280003210a2006290007213020062f00002109200641026a2d0000210d2006102c200341d2036a220e200d3a0000200220093b0100200341a0036a41086a22092007290300370300200320303700d7032003200a3600d303200341a0036a41106a220a2002290300370300200320083a00df03200341a0036a41186a220d2005290300370300200320032903c0033703a003200341d8006a200341a0036a4120109e01200341d8006a41106a29030021302003290360213120032802582108200542003703002002420037030020074200370300200342003703c003202e10022206280003210f2006290007212e20062d000f211020062f00002111200641026a2d000021132006102c200320133a00c203200320113b01c003200320103a00cf032003202e3700c7032003200f3600c303202f100222062d000f210f200628000321102006290007212e20062f00002111200641026a2d000021132006102c200e20133a0000200220113b0100200920072903003703002003202e3700d703200320103600d303200a20022903003703002003200f3a00df03200d2005290300370300200320032903c0033703a003200342002030420020081b222e202c200c54ad200b20127d7c7c2031420020081b2212202c200c7d222f54ad7d222c2012202f7d222f201256202c202e56202c202e511b22021b3703b80920034200202f20021b3703b009200341b0096a2102200341a0036a21060c020b1033000b200341c0036a41186a22054200370300200341c0036a41106a22024200370300200341c0036a41086a22074200370300200342003703c003418be9c500ad4280808080800184222e1002220628000321082006290007212f20062d000f210a20062f00002109200641026a2d0000210d2006102c2003200d3a00c203200320093b01c0032003200a3a00cf032003202f3700c703200320083600c30341c9b5c000ad4280808080d00184222f100222062d000f21082006280003210a2006290007213020062f00002109200641026a2d0000210d2006102c200341c0036a41126a220e200d3a0000200220093b0100200341a0036a41086a22092007290300370300200320303700d7032003200a3600d303200341a0036a41106a220a2002290300370300200320083a00df03200341a0036a41186a220d2005290300370300200320032903c0033703a003200341c0006a200341a0036a4120109e01200341c0006a41106a29030021302003290348213120032802402108200542003703002002420037030020074200370300200342003703c003202e10022206280003210f2006290007212e20062d000f211020062f00002111200641026a2d000021132006102c200320133a00c203200320113b01c003200320103a00cf032003202e3700c7032003200f3600c303202f100222062d000f210f200628000321102006290007212e20062f00002111200641026a2d000021132006102c200e20133a0000200220113b0100200920072903003703002003202e3700d703200320103600d303200a20022903003703002003200f3a00df03200d2005290300370300200320032903c0033703a0032003427f2030420020081b222e200b20127d200c202c54ad7d7c2031420020081b2212200c202c7d7c222c2012542202ad7c221220022012202e542012202e511b22021b3703b8092003427f202c20021b3703b009200341b0096a2102200341a0036a21060b2006ad42808080808004842002ad428080808080028410010b200341a8076a200c200b10aa01200341f8096a200b370300200341f0096a200c370300200341e8096a2004370300200341e0096a202d370300200341b0096a41086a41033a0000200341b9096a20032903a807370000200341c1096a200341a8076a41086a290300370000200341c9096a200341b8076a290300370000200341d1096a200341c0076a290300370000200341033a00b0094100210241014100200341b0096a1092010c040b410021090b200320063b01f003200341f2036a20064110763a00002003200a3a00ff03200320043700f703200320073600f303200320083a00ef03200320123700e703200320053600e303200320023b01e003200320024110763a00e20320090d01200341b0096a41186a200341e0036a41186a290300370300200341b0096a41106a200341e0036a41106a290300370300200341b0096a41086a200341e0036a41086a290300370300200320032903e0033703b009200341386a200341a8076a200341b0096a200b200c410110cd0120032802382202450d00200328023c21060c020b410021020c010b41dd8cc6002102410e21060b024020020d00200041023a00080c010b200041810c3b010820002006360204200020023602002000410a6a41003a00000b41012107410121050c110b024020032802bc092206450d0020032802b4092102200641246c210603400240024020022d0000220541034b0d0002400240024020050e0404000102040b2002410c6a280200450d03200241086a280200102c0c030b2002410c6a280200450d02200241086a280200102c0c020b2002410c6a280200450d01200241086a280200102c0c010b200241086a280200450d00200241046a280200102c0b200241246a21022006415c6a22060d000b0b024020032802b809450d0020032802b409102c0b024020072011460d00034020072802042208450d01200741086a280200210e02402007410c6a2802002202450d00200241246c21062008210203400240024020022d0000220541034b0d0002400240024020050e0404000102040b2002410c6a280200450d03200241086a280200102c0c030b2002410c6a280200450d02200241086a280200102c0c020b2002410c6a280200450d01200241086a280200102c0c010b200241086a280200450d00200241046a280200102c0b200241246a21022006415c6a22060d000b0b200741f0006a21070240200e450d002008102c0b20072011470d000b0b0240200f450d00200a102c0b2004a7450d052014102c0c050b20072011460d00034020072802042208450d01200741086a280200210902402007410c6a2802002202450d00200241246c21062008210203400240024020022d0000220541034b0d0002400240024020050e0404000102040b2002410c6a280200450d03200241086a280200102c0c030b2002410c6a280200450d02200241086a280200102c0c020b2002410c6a280200450d01200241086a280200102c0c010b200241086a280200450d00200241046a280200102c0b200241246a21022006415c6a22060d000b0b200741f0006a210702402009450d002008102c0b20072011470d000b0b0240200f450d00200a102c0b41a4c6c500ad4280808080a001841002220228000321062002290007210b20022d000f210520022f00002107200241026a2d000021082002102c41f889c200ad4280808080e0008410022202280003210a2002290007210c20022d000f210920022f0000210d200241026a2d0000210e2002102c200341c2096a200e3a00002003200d3b01c009200320083a00b209200320073b01b009200320093a00cf092003200c3700c7092003200a3600c309200320053a00bf092003200b3700b709200320063600b309200341a8076a20032802c00322022004422088a710e701201220033502b00742208620032802a8072206ad841001024020032802ac07450d002006102c0b02402004a7450d002002102c0b200041023a00084100210e0c040b2006450d010b200a200641f0006c6a2108200a2107034002402007410c6a2802002206450d0020072802042102200641246c210603400240024020022d0000220541034b0d0002400240024020050e0404000102040b2002410c6a280200450d03200241086a280200102c0c030b2002410c6a280200450d02200241086a280200102c0c020b2002410c6a280200450d01200241086a280200102c0c010b200241086a280200450d00200241046a280200102c0b200241246a21022006415c6a22060d000b0b200741f0006a21020240200741086a280200450d002007280204102c0b2002210720022008470d000b0b200f450d00200a102c0b20004181083b01082000200d360204200020093602004100210e2000410a6a41003a00000b41012107410121050c0a0b2005102c0b0240024002402007417e6a220241054b0d000240024002400240024020020e06000501020304000b41000d062004a70d050c060b41000d052004a70d040c050b200a450d0402402004422088a72202450d00200241186c21062005210203400240200241046a280200450d002002280200102c0b0240200241106a280200450d002002410c6a280200102c0b200241186a2102200641686a22060d000b0b2004a70d030c040b2006450d0302402004422088a72202450d002002410c6c21062005210203400240200241046a280200450d002002280200102c0b2002410c6a2102200641746a22060d000b0b2004a70d020c030b41000d022004a70d010c020b02402007417f6a220241024b0d0020020e03020002020b2004a7450d010b2005102c0b41d6b2c0002102410f21064104210720080e06010204030500010b200041023a0008410121050c050b410021070c030b41dd8cc6002102410e2106410121070c020b41b2b2c000210241112106410321070c010b41c3b2c000210241132106410221070b41012105200041013b010820002006360204200020023602002000410a6a20073a00000b410021070b4101210e0b4101210f0b410121100b410121110b410121130b410121140b410121150b410121080b4101210a0b410121090b41012100410121060b4101210d0b024002402001280200220241134b0d000240024002400240024002400240024002400240024002400240024020020e1400010e0f020e0f030405060708090f0a0f0b0c0d000b2007450d0e200141086a10fb020c0e0b2005450d0d02402001410c6a2802002206450d002001280204210220064190016c210603402002107320024190016a2102200641f07e6a22060d000b0b200141086a280200450d0d2001280204102c0c0d0b200e450d0c02402001410c6a2802002202450d0020012802042207200241f0006c6a2100034002402007410c6a2802002206450d0020072802042102200641246c210603400240024020022d0000220541034b0d0002400240024020050e0404000102040b2002410c6a280200450d03200241086a280200102c0c030b2002410c6a280200450d02200241086a280200102c0c020b2002410c6a280200450d01200241086a280200102c0c010b200241086a280200450d00200241046a280200102c0b200241246a21022006415c6a22060d000b0b200741f0006a21020240200741086a280200450d002007280204102c0b2002210720022000470d000b0b200141086a280200450d0c2001280204102c0c0c0b200f450d0b0240200141086a2d00002202410f4b0d00410120027441bfbf03710d0c024020024106470d00200141106a280200450d0d2001410c6a280200102c0c0d0b200141106a280200450d0c2001410c6a280200102c0c0c0b200141146a280200450d0b200141106a280200102c0c0b0b2010450d0a200141086a280200450d0a2001280204102c0c0a0b2011450d09200141086a2d0000416d6a220241014b0d090240024020020e020001000b200141106a280200450d0a2001410c6a280200102c0c0a0b200141106a280200450d092001410c6a280200102c0c090b2013450d0820012d0004417f6a220241024b0d0802400240024020020e03000102000b2001410c6a280200450d0a200141086a280200102c0c0a0b200141086a220228020010fc022002280200102c0c090b2001410c6a220228020010fc022002280200102c0c080b2014450d0720012d0004417f6a220241024b0d0702400240024020020e03000102000b2001410c6a280200450d09200141086a280200102c0c090b200141086a220228020010fc022002280200102c0c080b2001410c6a220228020010fc022002280200102c0c070b2015450d06200141086a2802004101470d06200141106a280200450d062001410c6a280200102c0c060b2008450d0520012d00044104470d052001410c6a280200450d05200141086a280200102c0c050b200a450d04200141086a280200450d042001280204102c0c040b2009450d03200141086a2d0000417e6a220241024b0d0302400240024020020e03000102000b200141106a280200450d052001410c6a280200102c0c050b200141346a280200450d04200141306a280200102c0c040b200141306a280200450d032001412c6a280200102c0c030b2000450d0202402001280204220241024b0d00024020020e03040004040b200141086a220228020010fc022002280200102c0c030b2001412c6a220228020010fc022002280200102c0c020b2006450d0102402001410c6a280200450d00200141086a280200102c0b02402001411c6a2802002206450d00200141146a28020021022006410c6c210603400240200241046a280200450d002002280200102c0b2002410c6a2102200641746a22060d000b0b200141186a280200450d012001280214102c0c010b200d450d0002402001280204220241034b0d00024020020e0402000202020b2001410c6a280200450d01200141086a280200102c0c010b200141306a280200450d002001412c6a280200102c0b200341c00a6a24000bb50404057f017e017f017e0240024020012802042202450d00200128020022032d0000210420012002417f6a22053602042001200341016a3602000240200441037122064103460d00024002400240024020060e03000102000b2004410276ad21070c020b41012106024020050d000c050b20032d0001210520012002417e6a3602042001200341026a3602002005410874200472220141ffff0371418002490d04200141fcff0371410276ad21070c010b410121060240200541034f0d000c040b200341036a2d0000210520032f0001210820012002417c6a3602042001200341046a3602002008200541107472410874200472220141808004490d032001410276ad21070b410021060c020b02402004410276220841044b0d000240024020080e050002020201000b20054104490d022003350001210720012002417b6a3602042001200341056a36020020074280808080045421060c030b20054108490d01200329000121072001200241776a3602042001200341096a3602002007428080808080808080015421060c020b200841046a220541084b0d002002417e6a2102200341026a2103410021044200210741012106034002402002417f470d000c030b2003417f6a310000210920012002360204200120033602002002417f6a2102200341016a210320092004410374413871ad862007842107200441016a220441ff01712005490d000b2007427f412820084103746b413871ad885821060c010b410121060b2000200737030820002006ad3703000b810903017f017e057f230041e0006b22022400024002400240024020002903002203423f560d0002400240200141046a280200200141086a2802002200460d00200128020021040c010b200041016a22042000490d04200041017422052004200520044b1b22054100480d040240024020000d002005102a21040c010b200128020020002005102e21040b2004450d0320012004360200200141046a2005360200200141086a28020021000b200141086a200041016a360200200420006a2003a74102743a00000c010b0240200342808001540d0002402003428080808004540d0002404108200379a741037622056b4104490d0002400240200141046a280200200141086a2802002204460d00200128020021060c010b200441016a22072004490d06200441017422062007200620074b1b22074100480d060240024020040d002007102a21060c010b200128020020042007102e21060b2006450d0520012006360200200141046a2007360200200141086a28020021040b200141086a2207200441016a360200200620046a411320054102746b3a0000200220002903002203370308200541786a2104200141046a2106034002400240200628020020072802002200460d00200128020021050c010b200041016a22052000490d07200041017422082005200820054b1b22084100480d070240024020000d002008102a21050c010b200128020020002008102e21050b2005450d062001200536020020062008360200200728020021000b2007200041016a360200200520006a2003a73a000020034208882103200441016a22002004492105200021042005450d000b200220033703082003500d03200241286a41146a4109360200200241346a410e360200200241106a41146a41033602002002200241086a360240200241d0e1c10036024420024203370214200241ec9fc6003602102002410e36022c200242043703582002420137024c200241d8e1c1003602482002200241286a3602202002200241c8006a3602382002200241c4006a3602302002200241c0006a360228200241106a4184c5c5001041000b4196e1c100413641acfec5001036000b02400240200141046a2802002204200141086a28020022006b4104490d00200128020021040c010b200041046a22052000490d04200441017422002005200020054b1b22004100480d040240024020040d002000102a21040c010b200128020020042000102e21040b2004450d0320012004360200200141046a2000360200200141086a28020021000b200141086a200041046a360200200420006a2003a74102744102723600000c010b02400240200141046a2802002204200141086a28020022006b4102490d00200128020021040c010b200041026a22052000490d03200441017422002005200020054b1b22004100480d030240024020040d002000102a21040c010b200128020020042000102e21040b2004450d0220012004360200200141046a2000360200200141086a28020021000b200141086a200041026a360200200420006a2003a74102744101723b00000b200241e0006a24000f0b1033000b1035000bbf0202027f017e23004180016b220224002000280200210002400240024002400240200128020022034110710d002000290300210420034120710d01200441012001104221000c020b20002903002104410021000340200220006a41ff006a2004a7410f712203413072200341d7006a2003410a491b3a00002000417f6a2100200442048822044200520d000b20004180016a22034181014f0d022001410141b087c0004102200220006a4180016a410020006b104521000c010b410021000340200220006a41ff006a2004a7410f712203413072200341376a2003410a491b3a00002000417f6a2100200442048822044200520d000b20004180016a22034181014f0d022001410141b087c0004102200220006a4180016a410020006b104521000b20024180016a240020000f0b20034180011047000b20034180011047000b810605027f027e017f027e027f230041a0016b220224002000280200210002400240024002400240024002400240200128020022034110710d00200041086a29030021042000290300210520034120710d0220054290ce005441002004501b450d012005a72103412721000c060b200041086a2903002105200029030021044180012100024003402000450d01200241206a20006a417f6a2004a7410f712203413072200341d7006a2003410a491b3a00002000417f6a210020044204882005423c8684220420054204882205844200520d000b0b20004181014f0d022001410141b087c0004102200241206a20006a41800120006b104521000c060b41272100200241186a21060340200241106a200520044290ce00420010e1052002200229031022072006290300220842f0b17f427f10e005200241206a20006a2203417c6a200520022903007ca7220941ffff037141e4006e220a41017441c284c0006a2f00003b00002003417e6a200a419c7f6c20096a41ffff037141017441c284c0006a2f00003b0000200542ffc1d72f56210320044200522109200450210a2000417c6a2100200721052008210420032009200a1b0d000c040b0b4180012100024003402000450d01200241206a20006a417f6a2005a7410f712203413072200341376a2003410a491b3a00002000417f6a210020054204882004423c8684220520044204882204844200520d000b0b20004181014f0d012001410141b087c0004102200241206a20006a41800120006b104521000c040b20004180011047000b20004180011047000b2007a721030b02400240200341e3004a0d00200321090c010b200241206a2000417e6a22006a2003200341ffff037141e4006e2209419c7f6c6a41ffff037141017441c284c0006a2f00003b00000b024002402009410a480d00200241206a2000417e6a22006a200941017441c284c0006a2f00003b00000c010b200241206a2000417f6a22006a200941306a3a00000b2001410141dc9ec6004100200241206a20006a412720006b104521000b200241a0016a240020000b130020004105360204200041b0e2c1003602000b3400200041e9eac10036020420004100360200200041146a4101360200200041106a41fceac100360200200041086a42133702000b8d0301027f230041e0006b22032400200341003a0005024002402000413f4b0d0041012104200341013a0005200320004102743a00000c010b02400240200041808001490d0020004180808080044f0d0141042104200341043a0005200320004102744102723602000c020b41022104200341023a0005200320004102744101723b01000c010b41052104200341053a0005200341033a0000200320003600010b024002402001280200220028020822012002490d0020002802002100200320023602082003200436020c20042002470d0120002003200210db051a200341e0006a24000f0b20022001103f000b200341286a41146a4109360200200341346a410c360200200341106a41146a410336020020034203370214200341ec9fc6003602102003410c36022c2003200341086a36024020032003410c6a360244200342043703582003420137024c200341c0a0c6003602482003200341286a3602202003200341c8006a3602382003200341c4006a3602302003200341c0006a360228200341106a41fca0c6001041000bb60201037f23004180016b220224002000280200210002400240024002400240200128020022034110710d002000280200210420034120710d012004ad41012001104221000c020b20002802002104410021000340200220006a41ff006a2004410f712203413072200341d7006a2003410a491b3a00002000417f6a2100200441047622040d000b20004180016a22044181014f0d022001410141b087c0004102200220006a4180016a410020006b104521000c010b410021000340200220006a41ff006a2004410f712203413072200341376a2003410a491b3a00002000417f6a2100200441047622040d000b20004180016a22044181014f0d022001410141b087c0004102200220006a4180016a410020006b104521000b20024180016a240020000f0b20044180011047000b20044180011047000b130020004102360204200041ccb0c0003602000b130020004101360204200041f8eac5003602000b3400200041a4c6c50036020420004100360200200041146a4103360200200041106a41f087c200360200200041086a420a3702000b130020004101360204200041e486c2003602000b13002000410136020420004180dcc2003602000b130020004104360204200041f8b5c0003602000b130020004103360204200041b4f9c2003602000b130020004101360204200041a0dec5003602000b13002000411036020420004184b5c4003602000b130020004106360204200041f4ddc2003602000b13002000410536020420004184fcc0003602000b130020004106360204200041b8dbc1003602000b13002000410336020420004190d7c5003602000b130020004106360204200041a8bfc1003602000b130020004106360204200041c0e4c3003602000b130020004103360204200041e4a3c5003602000b13002000410336020420004190a6c5003602000b130020004101360204200041d8dbc5003602000b130020004105360204200041b8ddc3003602000bca2504027f027e087f037e230041b00d6b22072400024002400240024002400240024002402001280230200128024022082802b801460d002004420020042903082209200841c0006a2903007d220a200a20095622081b37030820080d02200741186a41186a200141e8006a290000370300200741186a41106a200141e0006a290000370300200741186a41086a200141d8006a29000037030020072001290050370318200741b0026a41186a220b2006280208220cad4220862006350200841006220841186a290000370300200741b0026a41106a220d200841106a290000370300200741b0026a41086a220e200841086a290000370300200720082900003703b0022008102c200741d00a6a41186a200b290300370300200741d00a6a41106a200d290300370300200741d00a6a41086a200e290300370300200720072903b0023703d00a4120102a22080d010c070b200041cf8bc20036020420004101360200200041086a41293602002000410c6a2006290200370200200041146a200641086a2802003602000c050b20082005290000370000200841186a200541186a290000370000200841106a200541106a290000370000200841086a200541086a2900003700002008412041c000102e2208450d05200820072903d00a370020200841386a200741d00a6a41186a290300370000200841306a200741d00a6a41106a290300370000200841286a200741d00a6a41086a290300370000200841c000418001102e2208450d0520082007290318370040200841d8006a200741186a41186a290300370000200841d0006a200741186a41106a290300370000200841c8006a200741186a41086a290300370000200741b0026a41186a220d2008ad4280808080800c841006220b41186a290000370300200741b0026a41106a220e200b41106a290000370300200741b0026a41086a220f200b41086a2900003703002007200b2900003703b002200b102c200741386a41186a220b200d290300370300200741386a41106a220d200e290300370300200741386a41086a220e200f290300370300200720072903b0023703382008102c20062902002109200741d8006a41d8006a200e290300370300200741b8016a200d290300370300200741c0016a200b29030037030020074194016a410036020020074184016a41f88bc200360200200741f8006a4200370300200741f4006a221041d0e1c10036020020072001360260200741d8006a41286a200141186a2211360200200720072903383703a8012007420837028c012007410036027020074100360264200720012802483602a00120072001290340370398012007200128023041016a360288012001290300210a2007200128024c3602a4012007200a370358200741c8016a41186a200541186a290000370300200741c8016a41106a200541106a290000370300200741c8016a41086a200541086a29000037030020074101360270200720052900003703c8012011200741386a10fd01210620072007280270417f6a2208360270024002400240024020060d0020080d012007417f36027020074190026a41186a200741386a41186a29030037030020074190026a41106a200741386a41106a29030037030020074190026a41086a200741386a41086a2903003703002007200729033837039002024002402007280274220e41d0e1c100460d002007280278210f0c010b4100210f200741d00a6a410041e00210da051a200741b0026a410041a00810da051a41880b102a220e450d0a200e41003b0106200e4100360200200e41086a200741d00a6a41e00210db051a200e41e8026a200741b0026a41a00810db051a200741003602782007200e3602740b024002400340200e41086a2108200e2f0106221241057421064100210b0240024003402006450d0120074190026a2008412010dd05220d450d02200641606a2106200b41016a210b200841206a2108200d417f4a0d000b200b417f6a21120b200f450d02200f417f6a210f200e20124102746a41880b6a280200210e0c010b0b200e200b41e0006c6a41e8026a21060c010b200741f0016a41186a20074190026a41186a290300220a370300200741f0016a41106a20074190026a41106a2903002213370300200741f0016a41086a20074190026a41086a2903002214370300200720072903900222153703f001200741ec0a6a2014370200200741d00a6a41246a2013370200200741fc0a6a200a3702002007200741d8006a41246a3602e00a200720123602dc0a200720103602d80a2007200e3602d40a200741003602d00a200720153702e40a200741e4026a4200370200200741003a00ec02200742003703b002200741003a008d03200741d0e1c1003602e002200742003703c802200741d00a6a200741b0026a10800221060b200741e0016a290300210a20064201370318200641013a003c200641286a427f370300200641206a427f3703002006413d6a20072903c801370000200641c5006a200741d0016a290300370000200641cd006a200741d8016a290300370000200641d5006a200a3700002007200728027041016a360270200741106a20044101200741186a200741386a20022003200741d8006a10de022007280210220e0d02200741b0026a200520072802a00128020010df02024020072802b0024101470d002009422088a72106200741b8026a280200210520072802b402210e2009a721010c080b20074190026a41186a200741b0026a410472220641186a2802002208360200200741d00a6a41106a200641086a290200370300200741d00a6a41186a200641106a290200370300200741f00a6a2008360200200741063602d40a200741b3cbc5003602d00a200720062902003703d80a200728029c0121062007200741d8006a3602c8022007290358210a20072802a4012108200741d8026a200741186a41086a290300370300200741e0026a200741186a41106a290300370300200741e8026a200741186a41186a290300370300200720033703b802200720023703b002200720083602cc022007200a3703c002200720072903183703d0022007200c3602f801200720093703f00120074190026a2006200741d00a6a200741b0026a200741f0016a200410e0022007419c026a290200210220074190026a41086a2802002112200728029402210f02402007280290024101470d002002422088a72106200741a4026a280200210c2002a7210120122105200f210e0c070b200728027041016a220c41004c0d032007200c360270200728027821040240024003402010280200220541086a210820052f0106220e41057421064100210b0240024003402006450d01200741386a2008412010dd05220d450d02200641606a2106200b41016a210b200841206a2108200d417f4a0d000b200b417f6a210e0b2004450d022004417f6a21042005200e4102746a41880b6a21100c010b0b2005200b41e0006c6a220641c5036a310000200641e8026a290300220320035022081ba7450d004200200641f8026a29030020081b21034200200641f0026a29030020081b21090c010b2007200728028001200741386a20072802840128021c110400200741086a2903002103200729030021092007280270210c0b2007200c417f6a3602702009200728029801220629037854200320064180016a29030022095420032009511b450d052002a7210c419c8cc200210e411e2105200f2101201221060c060b2009422088a721062009a7210141d3fbc000210e412a21050c060b41f089c6004110200741b0026a41f882c100103b000b200728021421052009422088a721062009a721010c040b41c689c6004118200741b0026a418883c100103b000b200041ba8cc20036020420004101360200200041086a412a3602002000410c6a2006290200370200200041146a200641086a2802003602000c030b20074190026a41086a2208200741186a41086a29030037030020074190026a41106a220b200741186a41106a29030037030020074190026a41186a220d200741186a41186a290300370300200741f0016a41086a2205200741386a41086a290300370300200741f0016a41106a2204200741386a41106a290300370300200741f0016a41186a220e200741386a41186a2903003703002007200729031837039002200720072903383703f001024002402007280294012206200728029001470d00200641016a220c2006490d0120064101742210200c2010200c4b1b220cad42b8017e2203422088a70d012003a722104100480d010240024020060d002010102a21060c010b200728028c01200641b8016c2010102e21060b2006450d052007200c360290012007200636028c0120072802940121060b200728028c01200641b8016c6a220641003a0000200620072f00ed013b0001200641013a00102006410036000c200642013700042006200729039002370011200620072903f001370031200641036a200741ef016a2d00003a0000200641196a2008290300370000200641216a200b290300370000200641296a200d290300370000200641396a2005290300370000200641c1006a2004290300370000200641c9006a200e290300370000200641e0006a200741d7016a290000370000200641d9006a200741c8016a41086a290000370000200620072900c801370051200641e8006a200741b0026a41d00010db051a200720072802940141016a2208360294010240200741d00a6a41186a280200450d00200741e40a6a280200102c20072802940121080b200728029001210e200728028c012105200728027c210c2007280278210d2007280274210602402007280264220b450d00200741e8006a280200450d00200b102c0b0240024020024280808080f01f8350450d002007200c3602b8022007200d3602b402200720063602b0022011200741b0026a10ff012007200e3602b402200720053602b00220072005200841b8016c22086a22043602bc0202400240200141386a280200220b2001413c6a28020022066b200841b8016d220d490d002001280234210b0c010b2006200d6a220e2006490d03200b4101742206200e2006200e4b1b2206ad42b8017e2203422088a70d032003a7220e4100480d0302400240200b0d00200e102a210b0c010b2001280234200b41b8016c200e102e210b0b200b450d072001200b360234200141386a20063602002001413c6a28020021060b200b200641b8016c6a2005200810db051a2001413c6a22062006280200200d6a360200200720043602b802200741b0026a10720c010b02402008450d00200841b8016c210441002108034002400240200520086a220b2d0000220141014b0d000240024020010e020001000b0240200b41086a280200450d00200b41046a280200102c0b200b41106a2d00004105490d02200b41386a280200450d02200b41346a280200102c0c020b200b41286a10730c010b200b41e8006a280200450d00200b41e4006a280200102c0b2004200841b8016a2208470d000b0b0240200e450d002005102c0b02400240200d0d00200621080c010b200d210b20062108034020082802880b2108200b417f6a220b0d000b0340200620062f01064102746a41880b6a2802002106200d417f6a220d0d000b0b200741cc026a20062f0106360200200741c8026a4100360200200741c4026a20063602002007200c3602d002200741003602c002200742003703b802200720083602b402200741003602b002200741b0026a10f9010b20002007290338370004200041003602002000412c6a2002370200200041286a2012360200200041246a200f3602002000411c6a200741d0006a290300370000200041146a200741c8006a2903003700002000410c6a200741c0006a2903003700000c030b1035000b200741e80a6a280200450d00200741e40a6a280200102c0b024020072802642208450d00200741e8006a280200450d002008102c0b2006ad2102200728027c21042007280274210602400240200728027822080d002006210b0c010b2008210d2006210b0340200b2802880b210b200d417f6a220d0d000b0340200620062f01064102746a41880b6a28020021062008417f6a22080d000b0b200242208621022001ad2103200741cc026a20062f010636020041002108200741c8026a4100360200200741c4026a2006360200200720043602d002200741003602c002200742003703b8022007200b3602b402200741003602b002200741b0026a10f90102402007280294012206450d00200728028c01210d200641b8016c2101034002400240200d20086a22062d0000220b41014b0d0002400240200b0e020001000b0240200641086a280200450d00200641046a280200102c0b200641106a2d00004105490d02200641386a280200450d02200641346a280200102c0c020b200641286a10730c010b200641e8006a280200450d00200641e4006a280200102c0b2001200841b8016a2208470d000b0b200220038421020240200728029001450d00200728028c01102c0b2000200e36020420004101360200200041146a200c3602002000410c6a2002370200200041086a20053602000b200741b00d6a24000f0b1033000bbc0d020b7f067e230041e0016b22082400024002400240024002400240200728021841016a220941004c0d00200741186a210a20072009360218200741206a280200210b2007411c6a220c210d024002400340200d280200220e41086a210f200e2f01062210410574210d41002111024002400340200d450d012004200f412010dd052212450d02200d41606a210d201141016a2111200f41206a210f2012417f4a0d000b2011417f6a21100b200b450d02200b417f6a210b200e20104102746a41880b6a210d0c010b0b200e201141e0006c6a220d41c5036a310000200d41e8026a2903002213201350220f1ba7450d004200200d41f8026a290300200f1b21144200200d41f0026a290300200f1b21150c010b200841306a200741286a28020020042007412c6a28020028021c110400200841386a290300211420072802182109200829033021150b20072009417f6a360218200141186a29030021132007280240210d20012903102116024002400240024041004101410220152014842217501b20021b0e03010200010b200d41a8016a210d0c020b200d4188016a210d0c010b200d4198016a210d0b20162013844200510d01200841206a200d290300200d41086a2903002016201310e10520014200200129030822132008290320427f200841206a41086a290300501b7d22162016201356220d1b3703080240200d450d0041e48cc200210d4122210f0c060b200a28020041016a220141004c0d02200720013602182007280220210b024002400340200c280200220e41086a210f200e2f01062210410574210d41002111024002400340200d450d012003200f412010dd052212450d02200d41606a210d201141016a2111200f41206a210f2012417f4a0d000b2011417f6a21100b200b450d02200b417f6a210b200e20104102746a41880b6a210c0c010b0b200e201141e0006c6a220d41c5036a310000200d41e8026a2903002213201350220f1ba7450d004200200d41f8026a290300200f1b21134200200d41f0026a290300200f1b21160c010b200841106a200741286a28020020032007412c6a28020028021c110400200841186a290300211320072802182101200829031021160b200a2001417f6a3602000240201620057d2218201656201320067d2016200554ad7d221620135620162013511b4101470d0041868dc200210d411d210f0c060b024020174200520d002007280240220d290378200556200d4180016a290300221320065620132006511b450d0041a38dc200210d411f210f0c060b200841086a200341022018201610ad0102402008280208220d450d00200828020c210f0c060b0240201520057c2217201554220d201420067c200dad7c221320145420132014511b450d0041c28dc200210d412d210f0c060b4100210d024020032004470d000c060b024020032004412010dd050d000c060b200a200320182016109602200a200420172013109602200841b8016a41086a2211200341086a290000370300200841b8016a41106a2212200341106a290000370300200841b8016a41186a220e200341186a29000037030020084198016a41086a220b200441086a29000037030020084198016a41106a2210200441106a29000037030020084198016a41186a2201200441186a290000370300200820032900003703b801200820042900003703980102402007413c6a280200220f200741386a280200470d00200f41016a220d200f490d05200f4101742204200d2004200d4b1b2204ad42b8017e2213422088a70d052013a7220d4100480d0502400240200f0d00200d102a210d0c010b2007280234200f41b8016c200d102e210d0b200d450d042007200d360234200741386a2004360200200728023c210f0b4100210d2007280234200f41b8016c6a220f41003a0000200f20082f00dd013b0001200f4200370008200f4101360004200f20082903b801370011200f200829039801370031200f41036a200841df016a2d00003a0000200f41106a41003a0000200f41196a2011290300370000200f41216a2012290300370000200f41296a200e290300370000200f41396a200b290300370000200f41c1006a2010290300370000200f41c9006a2001290300370000200f2005370358200f41e0006a2006370300200f41d4006a20084191016a41036a280000360000200f200828009101360051200f41e8006a200841c0006a41d00010db051a2007200728023c41016a36023c0c050b41c689c6004118200841c0006a418883c100103b000b41b0c5c100411941d890c2001036000b41c689c6004118200841c0006a418883c100103b000b1033000b1035000b2000200f3602042000200d360200200841e0016a24000b811402097f017e230041d0016b2203240020034198016a41086a220441e4d2c500ad42808080808001841002220541086a29000037030020032005290000370398012005102c20034188016a41086a220620042903003703002003200329039801370388012004419ee4c300ad4280808080b001841002220541086a29000037030020032005290000370398012005102c200341d8006a41086a22072004290300370300200320032903980137035820034198016a2001109f01024002400240024041c000102a2205450d002005200329038801370000200520032903583700102005200329009801370020200541086a2006290300370000200541186a2007290300370000200541286a2004290000370000200541306a200341a8016a290000370000200541386a20034198016a41186a290000370000200341c0003602bc01200320053602b801200341186a2005ad42808080808008841003108d0102400240200328021822070d00410221040c010b200328021c21082003200341206a2802003602c401200320073602c001200341106a200341c0016a10750240024020032802100d0020032802142106200341086a200341c0016a107520032802080d00200328020c21092003200341c0016a107520032802000d0020032802c4012204450d002003280204210a20032004417f6a3602c401200320032802c001220441016a3602c00120042d0000220b41014b0d004100210402400240200b0e020100010b410121040b20034198016a200341c0016a1077200328029801450d00200341d8006a41086a20034198016a41086a280200220b360200200341f8006a41086a200b360200200341f4006a41026a20034188016a41026a2d00003a0000200320032f008801220b3b01cc0120032003290398013703782003200b3b01740c010b20034100360260200342013703582003410b36028c012003200341b8016a360288012003200341d8006a3602cc01200341ac016a41013602002003420137029c01200341d0b0c20036029801200320034188016a3602a801200341cc016a41c49ac50020034198016a10391a200335026042208620033502588410040240200328025c450d002003280258102c0b410221040b2008450d002007102c0b20034198016a41086a2207200341f8006a41086a280200360200200341d8006a41026a200341f4006a41026a2d00003a00002003200329037837039801200320032f01743b015802400240024020044102460d00200341c8006a41086a22082007280200360200200341c4006a41026a2207200341d8006a41026a2d00003a00002003200329039801370348200320032f01583b01442005102c200341386a41086a20082802002205360200200341346a41026a20072d000022073a0000200341186a41146a2005360200200341336a20073a000020032003290348220c3703382003200a3602202003200936021c200320043a00302003200c370224200320032f01443b003120032006360218200228025820064d0d0220034198016a41086a220441e4d2c500ad42808080808001841002220541086a29000037030020032005290000370398012005102c20034188016a41086a2206200429030037030020032003290398013703880120044192e4c300ad4280808080c001841002220541086a29000037030020032005290000370398012005102c200341d8006a41086a22072004290300370300200320032903980137035820034198016a2001109f0141c000102a2205450d032005200329038801370000200520032903583700102005200329009801370020200541086a2006290300370000200541186a2007290300370000200541286a2004290000370000200541306a200341a8016a290000370000200541386a20034198016a41186a29000037000020034198016a200541c00010bd03200329029c01210c20032802980121042005102c20040d01200041a1e8c20036020420004101360200200041086a411a3602000c050b2005102c200041086a411136020020004190e8c200360204200041013602000c050b20034198016a2004200c422088a7200210ff03200ca7210702402003280298014101470d002000200329029c01370204200041013602002007450d042004102c0c040b200341d8006a41186a220220034198016a410472220541186a280200360200200341d8006a41106a2209200541106a290200370300200341d8006a41086a2206200541086a290200370300200320052902003703580240200341186a41106a2205280200450d002003280224102c0b200341186a41186a200228020036020020052009290300370300200341186a41086a20062903003703002003200329035837031820034198016a41086a220541e4d2c500ad42808080808001841002220241086a29000037030020032002290000370398012002102c20034188016a41086a20052903003703002003200329039801370388012005419ee4c300ad4280808080b001841002220241086a29000037030020032002290000370398012002102c20062005290300370300200320032903980137035820034198016a2001109f0141c000102a2205450d012005200329038801370000200520032903583700102005200329009801370020200541086a20034188016a41086a290300370000200541186a200341d8006a41086a290300370000200541286a20034198016a41086a290000370000200541306a200341a8016a290000370000200541386a20034198016a41186a290000370000200341003602a0012003420137039801200341186a20034198016a108901200341186a41047220034198016a108901200341186a41086a20034198016a10890120032d0030210202400240200328029c0120032802a0012201460d0020032802980121060c010b200141016a22062001490d03200141017422092006200920064b1b22094100480d030240024020010d002009102a21060c010b20032802980120012009102e21060b2006450d022003200936029c0120032006360298010b2003200141016a3602a001200620016a20023a00002003280224210a2003412c6a280200220620034198016a106702400240200328029c01220920032802a00122026b2006490d0020032802980121010c010b200220066a22012002490d03200941017422082001200820014b1b22084100480d030240024020090d002008102a21010c010b20032802980120092008102e21010b2001450d022003200836029c012003200136029801200821090b200120026a200a200610db051a2005ad4280808080800884200220066aad4220862001ad84100102402009450d002001102c0b2005102c2007450d002004102c0b20002003290318370204200041003602002000411c6a200341306a280200360200200041146a200341286a2903003702002000410c6a200341206a2903003702000c030b1033000b1035000b200341286a280200450d002003280224102c0b200341d0016a24000bc71c04087f027e017f017e230041e0006b220624000240024002402002410c6a280200200241106a28020010102207417f460d00410c102a22080d010c020b109103000b200820073602082008428180808010370200200641186a420037030020064280808080c00037031020064204370308024002400240024002402008280200220741016a220941014d0d00200820093602002007417e460d002008200741026a3602000240200628021c22072006280218470d00200741016a22092007490d022007410174220a2009200a20094b1b220941ffffffff03712009470d022009410274220a4100480d020240024020070d00200a102a210a0c010b20062802142007410274200a102e210a0b200a450d06200620093602182006200a3602140b200628021420074102746a20083602002006200628021c41016a36021c2008280208210b4103102a2209450d05200941026a41002d009a86463a0000200941002f009886463b00004106102a220a450d05200a41046a41002f00d9b8453b0000200a41002800d5b845360000024020062802102207200628020c470d00200741016a220c2007490d022007410174220d200c200d200c4b1b220c41ffffff3f71200c470d02200c410574220d4100480d020240024020070d00200d102a210d0c010b20062802082007410574200d102e210d0b200d450d062006200c36020c2006200d3602080b200628020820074105746a220741013602182007200a36020c2007428380808030370204200720093602002007411c6a200b360200200741106a4286808080e0003702002006200628021041016a36021020082008280200417f6a2207360200024020070d002008280208101120082008280204417f6a220736020420070d002008102c0b200641086a419886c6004103419b86c6004103410f109303200641086a419886c60041034191d3c500410f4110109303200641086a419886c600410341a0d3c500410f4111109303200641086a419886c600410341afd3c50041084112109303200641086a419886c600410341b7d3c500410f4113109303200641086a419886c600410341c6d3c500410a4114109303200641086a419886c600410341d0d3c500410a4115109303200641086a419886c600410341dad3c500410b4116109303200641086a419886c600410341e5d3c500410d4117109303200641086a419886c600410341f2d3c500410c4118109303200641086a419886c600410341fed3c500410b4119109303200641086a419886c60041034189d4c5004115411a109303200641086a419886c6004103419ed4c500410a411b109303200641086a419886c600410341a8d4c5004107411c109303200641086a419886c600410341afd4c5004113411d109303200641086a419886c600410341c2d4c5004111411e109303200641086a419886c600410341d3d4c500410e411f109303200641086a419886c600410341e1d4c50041104120109303200641086a419886c600410341f1d4c50041104121109303200641086a419886c60041034181d5c50041114122109303200641086a419886c60041034192d5c50041114123109303200641086a419886c600410341a3d5c50041164124109303200641086a419886c600410341b9d5c50041124125109303200641086a419886c600410341cbd5c500410b4126109303200641086a419886c600410341d6d5c50041104127109303200641086a419886c600410341e6d5c50041174128109303200641206a410c6a200441086a280200360200200620033602204100210b2006410036023c20062005360238200620083602342006200429020037022420062001280200360230200241146a350200210e2002411c6a350200210f200628020821072006280210210820064100360258200642013703502008200641d0006a106702402008450d00200720084105746a2105034020072802002104200741086a2802002208200641d0006a1067024002402006280254220a200628025822096b2008490d002006280250210a0c010b200920086a22012009490d04200a41017422032001200320014b1b22014100480d0402400240200a0d002001102a210a0c010b2006280250200a2001102e210a0b200a450d08200620013602542006200a3602500b2006200920086a360258200a20096a2004200810db051a2007410c6a2802002103200741146a280200220a200641d0006a10670240024020062802542209200628025822046b200a490d00200628025021080c010b2004200a6a22082004490d04200941017422012008200120084b1b22014100480d040240024020090d002001102a21080c010b200628025020092001102e21080b2008450d082006200136025420062008360250200121090b20062004200a6a2201360258200820046a2003200a10db051a02400240200741186a2802004101460d000240024020092001460d002009210a0c010b200941016a220a2009490d0620094101742204200a2004200a4b1b220a4100480d060240024020090d00200a102a21080c010b20082009200a102e21080b2008450d0a2006200a360254200620083602500b2006200141016a2209360258200820016a41013a000020062007411c6a2802002204360248200641c8006a21010c010b0240024020092001460d002009210a0c010b200941016a220a2009490d0520094101742204200a2004200a4b1b220a4100480d050240024020090d00200a102a21080c010b20082009200a102e21080b2008450d092006200a360254200620083602500b2006200141016a2209360258200820016a41023a000020062007411c6a2802002204360248200641c8006a21010b0240200a20096b41034b0d00200941046a22042009490d04200a41017422032004200320044b1b22044100480d0402400240200a0d002004102a21080c010b2008200a2004102e21080b2008450d082006200436025420062008360250200128020021040b2006200941046a360258200820096a2004360000200741206a22072005470d000b0b2006280254210302404129200f422086200e8420063502584220862006280250220dad84200641206a1012220c41036a220841024b0d000240024020080e03000201000b4102210b0b41012104024020030d000c060b200d102c0c050b200628021c220541ffffffff03712005470d0220054102742207417f4c0d02200628021421080240024020070d00410421100c010b2007102a2210450d060b0240024020050d004100210a0c010b200541027421044100210a2010210703402008280200220928020041016a220141014d0d02200841046a21082009200136020020072009360200200a41016a210a200741046a21072004417c6a22040d000b0b02402003450d00200d102c0b2002350204210e2002350200210f20064100360258200642013703504100200641d0006a1067200635025821112006280254210920062802502107410a10302208450d050240024002400240200c200e422086200f8420114220862007ad842008410a200641206a101341036a220241034b0d004101210420020e0402000001020b41ac91c600412841acfec5001036000b2006410936024c410121042006200841016a36024820082d0000220241014b0d01410421010240024020020e020100010b200641d0006a200641c8006a10ae03200628025022014104460d02200628025421030b410021040b2008102c2009450d042007102c0c040b2008102c024020090d000c040b2007102c0c030b00000b1035000b103a000b200c10140240200a450d00200a4102742107201021080340200828020022092009280200417f6a3602000240200828020022092802000d0020092802081011200828020022092009280204417f6a360204200828020022092802040d002009102c0b200841046a21082007417c6a22070d000b0b4102210b2005450d002010102c0b200641206a41086a28020021072006280234210820062802242109024002400240024002400240024002400240200628023c220a0d002006412c6a290200210e20040d04200141044b0d0320010e050203030301020b2000200a36020420004100360200200041106a41003a0000200041086a200641c0006a29030037020002402007450d002009102c0b20082008280200417f6a220736020020070d072008280208101120082008280204417f6a22073602042007450d060c070b2000200936020441002109200041106a41003a00002000410c6a4100360200200041086a20073602000c040b20002009360204200041106a20033a00002000410c6a200e3e0200200041086a2007360200410021090c030b200041cfbcc500360204200041146a200e3e0200200041106a20073602002000410c6a2009360200200041086a41113602000c010b0240200b450d00200041f0bcc500360204200041146a200e3e0200200041106a20073602002000410c6a2009360200200041086a41103602000c010b200041e0bcc500360204200041146a200e3e0200200041106a20073602002000410c6a2009360200200041086a41103602000b410121090b2000200936020020082008280200417f6a220736020020070d012008280208101120082008280204417f6a220736020420070d010b2008102c0b024020062802102207450d00200628020821082007410574210703400240200841046a280200450d002008280200102c0b0240200841106a280200450d002008410c6a280200102c0b200841206a2108200741606a22070d000b0b0240200628020c450d002006280208102c0b0240200628021c2207450d0020062802142108200741027421070340200828020022092009280200417f6a3602000240200828020022092802000d0020092802081011200828020022092009280204417f6a360204200828020022092802040d002009102c0b200841046a21082007417c6a22070d000b0b02402006280218450d002006280214102c0b200641e0006a24000f0b1033000bc50101057f230041306b220124002000410c6a28020021022000280204210302400240200041086a28020022040d00200321000c010b2004210520032100034020002802880b21002005417f6a22050d000b0340200320032f01064102746a41880b6a28020021032004417f6a22040d000b0b200141246a20032f0106360200200141206a41003602002001411c6a20033602002001200236022820014100360218200142003703102001200036020c20014100360208200141086a10f901200141306a24000b8d2a020c7f037e230022072108200741800f6b41607122072400200720043703382007200337033020072005360244024002400240024002402001280230200128024022092802b801460d002005420020052903082203200941386a2903007d2204200420035622091b37030820090d0120074180046a20024100410110e302200741a4046a280200210a200741a0046a280200210b20072d008804220541037122094103460d0220090e03030203030b200041ef8dc20036020420004101360200200041086a41293602002000410c6a2006290200370200200041146a200641086a2802003602000c030b200041988ec20036020420004101360200200041086a41233602002000410c6a2006290200370200200041146a200641086a280200360200200824000f0b200041bb8ec20036020420004101360200200041086a41193602002000410c6a2006290200370200200041146a200641086a28020036020020050d01200a450d01200b102c200824000f0b200741a8046a2802002109200741c8006a41186a220c200141e8006a290000370300200741c8006a41106a220d200141e0006a290000370300200741c8006a41086a220e200141d8006a290000370300200720012900503703484100210f41002110024002400240024002400240024002400240024002400240024020050d002009417f4c0d010240024020090d002007420037038004410121100c010b2009102a2210450d0a200741003602840420072009360280040b20072009360284042010200b200910db051a2007290380042103200a450d00200b102c0b200741a4016a410036020020074194016a41f88bc200360200200741e8006a41206a420037030020074184016a41d0e1c100360200200741e8006a41106a2003370300200741e8006a41d8006a200241086a290000370300200741e8006a41e0006a200241106a290000370300200741e8006a41e8006a200241186a29000037030020072001360270200741e8006a41286a200141186a22113602002007420837029c01200741003602800120072010360274200720022900003703b801200720012802483602b001200720012903403703a8012007200128023041016a36029801200129030021032007200128024c3602b40120072003370368200741d8016a41206a200e290300370300200741d8016a41286a200d29030037030020074188026a200c290300370300200741ec016a200641086a280200360200200720023602e001200720072903483703f001200720062902003702e4012007200741c4006a3602dc012007200741306a3602d8010240024020072903302203200741306a41086a290300220484500d00200741286a20072802444100200741f0016a200220032004200741e8006a10de02200728022822060d01200728028001210f20072802e00121020b200f41016a220d41004c0d02200741d8016a41186a210e200741e4016a210f2007200d36028001200741e8006a41206a280200210a20074184016a2212210602400240024003402006280200220b41086a2105200b2f0106220c4105742106410021090240024003402006450d0120022005412010dd052210450d02200641606a2106200941016a2109200541206a21052010417f4a0d000b2009417f6a210c0b200a450d02200a417f6a210a200b200c4102746a41880b6a21060c010b0b200b200941e0006c6a220541e8026a210602400240200541c5036a2d00000d0020074180046a41086a2209200641c5006a29000037030020074180046a41106a2210200641cd006a29000037030020074180046a41186a220b200641d5006a29000037030020072006413d6a290000370380044102210520062d003c4101470d01200741a00c6a41186a200b290300370300200741a00c6a41106a2010290300370300200741a00c6a41086a200929030037030020072007290380043703a00c410121050c010b200741a80c6a200641c5006a290000370300200741b00c6a200641cd006a290000370300200741b80c6a200641d5006a29000037030020072006413d6a2900003703a00c20062d003c21050b200541ff01714102470d010b20074190026a2007280290012002200728029401280210110400200728028001210d20072d00900221050c010b20074199026a200741a80c6a290300370000200741a1026a200741b00c6a290300370000200741a9026a200741b80c6a290300370000200720053a009002200720072903a00c370091020b2007200d417f6a360280014101210a0240200541ff01714101470d00200741b8026a41186a200741a9026a290000370300200741b8026a41106a200741a1026a290000370300200741b8026a41086a20074199026a29000037030020072007290091023703b80220074180046a200741b8026a20072802b00128020010df0202402007280280044101470d0020072902e4012203422088a7210520074180046a41086a28020021092007280284042106200741ec016a28020021102003a721020c0e0b200741a00c6a41186a220520074180046a410472220641186a2802002209360200200741d8026a41106a200641086a290200370300200741d8026a41186a200641106a290200370300200741f8026a2009360200200741043602dc02200741afcbc5003602d802200720062902003703e00220072802ac0121062005200e41186a2900002203370300200741a00c6a41106a200e41106a2900002204370300200741a00c6a41086a2205200e41086a2900002213370300200741a8046a2013370300200741b0046a2004370300200741b8046a20033703002007200e29000022033703a00c200720033703a00420072802d801220941086a29030021032007200741e8006a36029804200929030021042007290368211320072802b4012109200720033703880420072004370380042007200936029c0420072013370390042005200f41086a2802003602002007200f2902003703a00c200741e0036a2006200741d8026a20074180046a200741a00c6a20072802dc0128020010e002200741ec036a2902002103200741e0036a41086a280200210c20072802e403210a024020072802e0034101470d002003422088a72105200741f4036a28020021102003a72102200c2109200a21060c0d0b20072802800141016a220f41004c0d0420072802e00121022007200f36028001200728028801210d201221060240024003402006280200220b41086a2105200b2f0106220e4105742106410021090240024003402006450d0120022005412010dd052210450d02200641606a2106200941016a2109200541206a21052010417f4a0d000b2009417f6a210e0b200d450d02200d417f6a210d200b200e4102746a41880b6a21060c010b0b200b200941e0006c6a220641c5036a310000200641e8026a290300220420045022051ba7450d004200200641f8026a29030020051b21044200200641f0026a29030020051b21130c010b200741186a200728029001200220072802940128021c110400200741206a290300210420072903182113200728028001210f0b2007200f417f6a221036028001201320072802a801220629037854200420064180016a29030022135420042013511b0d050c060b4100210c420021030240200741e8016a280200450d0020072802e401102c0b420021040c060b200728022c210920072902e4012203422088a721052003a72102200741ec016a28020021100c0b0b103a000b41c689c600411820074180046a418883c100103b000b41c689c600411820074180046a418883c100103b000b20072802702206450d020240024020072802e0012205200641d0006a2209460d0020092005412010dd05450d00034020062802082206450d022005200641d0006a2209460d0120092005412010dd050d000b0b2003a7211041d48ec200210641372109200c2105200a21020c070b20100d032007417f36028001200741003a00bc03200742003702b403200741013a009d03200741d0e1c1003602b003200741e0036a41186a200541186a290000370300200741e0036a41106a200541106a290000370300200741e0036a41086a200541086a290000370300200720052900003703e00302400240200728028401221041d0e1c100460d00200728028801210b0c010b200741a00c6a410041e00210da051a20074180046a410041a00810da051a41880b102a2210450d054100210b201041003b010620104100360200201041086a200741a00c6a41e00210db051a201041e8026a20074180046a41a00810db051a200741003602880120072010360284010b02400240034020102f0106220d4105742102410021064100210502400240034020022006460d01200741e0036a201020066a41086a412010dd052209450d02200641206a2106200541016a21052009417f4a0d000b2005417f6a210d0b200b450d02200b417f6a210b2010200d4102746a41880b6a28020021100c010b0b2010200541e0006c6a22064190036a20072903a80337030020064188036a20072903a003370300200641c0036a200729039803370000200641b8036a200729039003370000200641b0036a200729038803370000200641a8036a20072903800337000020064180036a4200370300200641e8026a2205290300211320054200370300200641a0036a22052802002102200520072903b80337030020064198036a22062903002104200620072903b0033703002004a721062004422088a721050c010b200741c0036a41186a200741e0036a41186a2903002204370300200741c0036a41106a200741e0036a41106a2903002213370300200741c0036a41086a200741e0036a41086a2903002214370300200720072903e00322153703c003200741bc0c6a2014370200200741a00c6a41246a2013370200200741cc0c6a20043702002007200741e8006a41246a3602b00c2007200d3602ac0c200720123602a80c200720103602a40c200741003602a00c200720153702b40c20074180046a41186a42003703002007420037038004200741b8046a20072903b803370300200741b0046a20072903b003370300200741a8046a20072903a803370300200741a0046a20072903a003370300200741d8046a200729039803370300200741d0046a200729039003370300200741c8046a200729038803370300200741c0046a200729038003370300200741a00c6a20074180046a1080021a420221130b024020134202510d000240024020050d00200621090c010b2005211020062109034020092802ec0321092010417f6a22100d000b0340200620062f01064102746a41ec036a28020021062005417f6a22050d000b0b2007419c046a20062f010636020020074198046a410036020020074194046a2006360200200720023602a004200741003602900420074200370388042007200936028404200741003602800420074180046a10f4010b200720072802800141016a360280010b0240200741f0026a280200450d00200741ec026a280200102c0b200342ffffffff0f83210420034280808080708321030b20072802a401210520072802a001210d200728029c01210b200728028c01210e20072802880121102007280284012106024020072802742209450d00200741f8006a280200450d002009102c0b200420038421040240024020034280808080f01f8350450d002007200e3602880420072010360284042007200636028004201120074180046a10ff012007200d360284042007200b360280042007200b200541b8016c22056a220236028c0402400240200141386a28020022092001413c6a28020022066b200541b8016d2210490d00200128023421090c010b200620106a220d2006490d0620094101742206200d2006200d4b1b2206ad42b8017e2203422088a70d062003a7220d4100480d060240024020090d00200d102a21090c010b2001280234200941b8016c200d102e21090b2009450d0520012009360234200141386a20063602002001413c6a28020021060b2009200641b8016c6a200b200510db051a2001413c6a2206200628020020106a360200200720023602880420074180046a10722000410c6a2004370200200041086a200c3602002000200a3602040c010b2000200a3602042000410c6a2004370200200041086a200c36020002402005450d00200541b8016c210141002105034002400240200b20056a22092d0000220241014b0d000240024020020e020001000b0240200941086a280200450d00200941046a280200102c0b200941106a2d00004105490d02200941386a280200450d02200941346a280200102c0c020b200941286a10730c010b200941e8006a280200450d00200941e4006a280200102c0b2001200541b8016a2205470d000b0b0240200d450d00200b102c0b0240024020100d00200621050c010b2010210920062105034020052802880b21052009417f6a22090d000b0340200620062f01064102746a41880b6a28020021062010417f6a22100d000b0b2007419c046a20062f010636020020074198046a410036020020074194046a20063602002007200e3602a004200741003602900420074200370388042007200536028404200741003602800420074180046a10f9010b20004100360200200824000f0b418b8fc20041321054000b41f089c600411020074180046a41f882c100103b000b1033000b1035000b200741f0026a280200450d00200741ec026a280200102c0b2000200636020420004101360200200041146a2010360200200041086a20093602002000410c6a2005ad4220862002ad84370200024020072802742206450d00200741f8006a280200450d002006102c0b200741e8006a411c6a2802002106200728028c0121000240024020072802880122050d00200621090c010b2005211020062109034020092802880b21092010417f6a22100d000b0340200620062f01064102746a41880b6a28020021062005417f6a22050d000b0b20074180046a411c6a20062f01063602004100210520074198046a410036020020074194046a2006360200200720003602a004200741003602900420074200370388042007200936028404200741003602800420074180046a10f901024020072802a4012206450d00200728029c012110200641b8016c2100034002400240201020056a22062d0000220941014b0d000240024020090e020001000b0240200641086a280200450d00200641046a280200102c0b200641106a2d00004105490d02200641386a280200450d02200641346a280200102c0c020b200641286a10730c010b200641e8006a280200450d00200641e4006a280200102c0b2000200541b8016a2205470d000b0b20072802a001450d00200728029c01102c200824000f0b200824000be71f07057f027e0c7f077e017f017e057f230041b0036b22042400200441a0016a200110ee010240024020042d00a0012205417f6a41ff017141024f0d00200041003a0000200041086a200441a0016a41d80010db051a0c010b200441f8016a41086a2206200441a0016a413c6a290200370300200441f8016a41106a2207200441a0016a41c4006a290200370300200441f8016a41186a2208200441a0016a41cc006a2902003703002004200441a0016a41346a2902003703f801200441a0016a41106a2903002109200441a0016a41086a290300210a200441a0016a41306a280200210b200441a0016a412c6a280200210c200441a0016a41246a280200210d200441a0016a41206a280200210e200441bc016a280200210f200441a0016a41186a2802002110200441a0016a41d4006a2802002111200441a0016a41286a280200211220044198026a41186a420037030020044198026a41106a2213420037030020044198026a41086a221442003703002004420037039802200441a0036a41086a22154191b0c200ad4280808080e000841002221641086a290000370300200420162900003703a0032016102c20142015290300370300200420042903a00337039802201541acb0c200ad4280808080e000841002221641086a290000370300200420162900003703a0032016102c201320042903a0032217370300200441f0026a41086a2014290300370300200441f0026a41106a2017370300200441f0026a41186a2015290300370300200420173703900320042004290398023703f00220044198016a200441f0026a4120109401024002400240024002400240024002400240024041004100200428029c0141002004280298011b221520026b2202200220154b1b220220126b2214201420024b1b2214450d0020044188016a200110b701200441f8006a200429038801221720044188016a41086a2903002218428080a8ec85afd1b101420010e1054200200dad22192004290378221a7d221b201b2019564200200441f8006a41086a2903002019201a54ad7c7d22194200522019501b22021b221a4200201920021b221984500d020240024002400240024002402017428080d287e2bc2d5441002018501b0d00200441e0006a2014ad4200201a201910e005200441d0006a2004290360200441e0006a41086a290300428080e983b1de16420010e005200441f0006a20014108420020172017428080aef89dc3527c2219200a200a201956200920182019201754ad7c427f7c22195620092019511b22021b221a2004290350221b201a201b542019200920021b221a200441d0006a41086a290300221954201a2019511b22021b221c7d221d201d2017562018201a201920021b221a7d2017201c54ad7d221720185620172018511b22141b4200201720141b10ad0120042802700d03024020020d002003450d030b20044198026a2001201c201a410810ac012004280298024101460d0a200441386a20044198026a41086a29030020044198026a41106a220629030010ce01200441386a41106a290300211a2004290340211720042903382218a7450d0120044198026a41186a220742003703002006420037030020044198026a41086a221642003703002004420037039802200441a0036a41086a2214418be9c500ad428080808080018422181002220841086a290000370300200420082900003703a0032008102c20162014290300370300200420042903a003221c370390032004201c37039802201441c9b5c000ad4280808080d00184221c1002220841086a290000370300200420082900003703a0032008102c20044190036a41086a221e2014290300221d370300200420042903a003221f370390032013201f370000201341086a2220201d370000200441f0026a41086a22212016290300370300200441f0026a41106a22222006290300370300200441f0026a41186a2223200729030037030020042004290398023703f002200441206a200441f0026a4120109e01200441206a41106a290300211d2004290328211f200428022021082007420037030020064200370300201642003703002004420037039802201420181002222441086a290000370300200420242900003703a0032024102c20162014290300370300200420042903a00322183703900320042018370398022014201c1002222441086a290000370300200420242900003703a0032024102c201e20142903002218370300200420042903a003221c370390032013201c3700002020201837000020212016290300370300202220062903003703002023200729030037030020042004290398023703f00220044200201d420020081b2218201a7d201f420020081b221a201754ad7d221c201a20177d2217201a56201c201856201c2018511b22141b3703a00220044200201720141b37039802200441f0026aad428080808080048420044198026aad428080808080028410010c020b200110f601200e41164d0d08200ead4220862010ad84200e41696aad422086201041176aad8441011007200041023a0008200041013a00000c030b2018500d0020044198026a41186a2206420037030020044198026a41106a2207420037030020044198026a41086a221642003703002004420037039802200441a0036a41086a2214418be9c500ad428080808080018422181002220841086a290000370300200420082900003703a0032008102c20162014290300370300200420042903a003221c370390032004201c37039802201441c9b5c000ad4280808080d00184221c1002220841086a290000370300200420082900003703a0032008102c20044190036a41086a221e2014290300221d370300200420042903a003221f370390032013201f370000201341086a2220201d370000200441f0026a41086a22212016290300370300200441f0026a41106a22222007290300370300200441f0026a41186a2223200629030037030020042004290398023703f002200441086a200441f0026a4120109e01200441086a41106a290300211d2004290310211f200428020821082006420037030020074200370300201642003703002004420037039802201420181002222441086a290000370300200420242900003703a0032024102c20162014290300370300200420042903a00322183703900320042018370398022014201c1002222441086a290000370300200420242900003703a0032024102c201e20142903002218370300200420042903a003221c370390032013201c3700002020201837000020212016290300370300202220072903003703002023200629030037030020042004290398023703f00220044200201d420020081b2218201a7d201f420020081b221a201754ad7d221c201a20177d2217201a56201c201856201c2018511b22141b3703a00220044200201720141b37039802200441f0026aad428080808080048420044198026aad428080808080028410010b20020d0020030d02200041003a0008200041023a0000200041186a2009370000200041106a200a370000200041386a200b360000200041346a200c360000200041306a20123600002000412c6a200d360000200041286a200e360000200041246a200f360000200041206a20103600002000413c6a20042903f801370000200041c4006a20044180026a290300370000200041cc006a200441f8016a41106a290300370000200041d4006a200441f8016a41186a290300370000200041dc006a2011360000200541037122004103460d0420000e030d04040d0b200ead4220862010ad842209100f2117200441003602a803200442013703a0032017a722032017422088a72212200441a0036a1086030240024020042802a403221620042802a80322146b4120490d00201441206a211520042802a00321020c010b201441206a22152014490d09201641017422022015200220154b1b220d4100480d090240024020160d00200d102a21020c010b20042802a0032016200d102e21020b2002450d082004200d3602a403200420023602a003200d21160b200420153602a803200220146a221420042903f801370000201441086a200441f8016a41086a290300370000201441106a200441f8016a41106a290300370000201441186a200441f8016a41186a29030037000020044198026a41186a22142015ad4220862002ad841006221541186a29000037030020044198026a41106a220d201541106a29000037030020044198026a41086a2213201541086a29000037030020042015290000370398022015102c200441f0026a41186a22152014290300370300200441f0026a41106a2214200d290300370300200441f0026a41086a220d201329030037030020042004290398023703f00202402016450d002002102c0b200441b1026a2015290300370000200441a9026a2014290300370000200441a1026a200d290300370000200420042903f00237009902200441013a009802200120044198026a108703200e41164d0d092009200e41696aad422086201041176aad8441011007200041013a0000200041086a20044198026a41d80010db051a2012450d002003102c0b200f450d092010102c0c090b200441c8026a200b360200200441c4026a200c360200200441c0026a2015360200200441bc026a200d360200200441b8026a200e360200200441b4026a200f36020020044198026a41186a2010360200200441cc026a20042903f801370200200441d4026a200441f8016a41086a290300370200200441dc026a200441f8016a41106a290300370200200441e4026a200441f8016a41186a29030037020020044198026a41106a200920197d200a201b54ad7d370300200441003a0098022004200a201b7d3703a002200120044198026a108703200041023a0000200041086a20044198026a41d80010db051a0c080b200041003a0008200041003a0000200041186a2009370000200041106a200a370000200041386a200b360000200041346a200c360000200041306a20123600002000412c6a200d360000200041286a200e360000200041246a200f360000200041206a20103600002000413c6a20042903f801370000200041c4006a2006290300370000200041cc006a2007290300370000200041d4006a2008290300370000200041dc006a20113600000c070b200f450d080c070b200041003a0008200041003a0000200041186a2009370000200041106a200a370000200041386a200b360000200041346a200c360000200041306a20123600002000412c6a200d360000200041286a200e360000200041246a200f360000200041206a20103600002000413c6a20042903f801370000200041c4006a20044180026a290300370000200041cc006a200441f8016a41106a290300370000200041d4006a200441f8016a41186a290300370000200041dc006a20113600000c050b4117200e1047000b2004200429029c023703f00241aba9c20041fe00200441f0026a41acaac200103b000b1033000b1035000b4117200e1047000b0240200541037122004103460d0020000e03020000020b200f450d010b2010102c0b200441b0036a24000baf0201037f230041e0006b220224002002412036020c20022001360208200241106a2001ad42808080808004841003108d0102400240200228021022010d00200041003602000c010b200228021421032002200241186a28020036022420022001360220200241c8006a200241206a1083010240024020022802482204450d002000200229024c370204200020043602000c010b20024100360230200242013703282002410b36023c2002200241086a3602382002200241286a360244200241dc006a41013602002002420137024c200241d0b0c2003602482002200241386a360258200241c4006a41c49ac500200241c8006a10391a2002350230422086200235022884100420004100360200200228022c450d002002280228102c0b2003450d002001102c0b200241e0006a24000bd20903067f017e057f230041f0016b22022400024002400240024002400240024020012802042203450d00200128020022042d0000210520012003417f6a22063602042001200441016a3602002005417f6a220541014b0d0520050e020102010b200041023a00000c050b20064104490d012004280001210720012003417b6a22053602042001200441056a36020020054108490d02200429000521082001200341736a36020420012004410d6a36020041002105200241003a00b001410d20036b2109200341726a210603400240200920056a0d000240200541ff0171450d00200241003a00b0010b200041023a00000c060b20024190016a20056a200420056a220a410d6a2d00003a0000200120063602042001200a410e6a3602002002200541016a220a3a00b0012006417f6a2106200a2105200a4120470d000b200241f0006a41186a20024190016a41186a290300370300200241f0006a41106a20024190016a41106a290300370300200241f0006a41086a20024190016a41086a290300370300200220022903900137037041002105200241003a00d0012004200a6a2109200a20036b410d6a210a03400240200a20056a0d000240200541ff0171450d00200241003a00d0010b200041023a00000c060b20024190016a20056a200920056a2204410d6a2d00003a00002001200636020420012004410e6a3602002002200541016a22043a00d0012006417f6a210620042105200441c000470d000b200241106a41386a220120024190016a41386a290300370300200241106a41306a220520024190016a41306a290300370300200241106a41286a220620024190016a41286a290300370300200241106a41206a220420024190016a41206a290300370300200241106a41186a220a20024190016a41186a290300370300200241106a41106a220320024190016a41106a290300370300200241106a41086a220920024190016a41086a290300370300200241d0006a41086a220b200241f0006a41086a290300370300200241d0006a41106a220c200241f0006a41106a290300370300200241d0006a41186a220d200241f0006a41186a290300370300200220022903900137031020022002290370370350200041003a000020002002290350370001200041096a200b290300370000200041116a200c290300370000200041196a200d290300370000200041216a2002290310370000200041296a2009290300370000200041316a2003290300370000200041396a200a290300370000200041c1006a2004290300370000200041c9006a2006290300370000200041d1006a2005290300370000200041d9006a2001290300370000200041e3006a2002410f6a2d00003a0000200041e1006a20022f000d3b0000200041e8006a2008370300200041e4006a20073602000c040b0240024020064104490d002004280001210620012003417b6a22053602042001200441056a360200200541084f0d010b200041023a00000c040b200041013a0000200020022f00103b0001200429000521082001200341736a36020420012004410d6a360200200041086a2008370300200041046a2006360200200041036a200241126a2d00003a0000200041106a20024190016a41e00010db051a0c030b200041023a00000c020b200041023a00000c010b200041023a00000b200241f0016a24000bf70101077f230041106b220124002001410036020820014201370300200110e60220012802042102200128020021030240024002400240200041046a2802002204200041086a28020022056b20012802082206490d00200028020021040c010b200520066a22072005490d02200441017422052007200520074b1b22054100480d020240024020040d002005102a21040c010b200028020020042005102e21040b2004450d0120002004360200200041046a2005360200200041086a28020021050b200041086a200520066a360200200420056a2003200610db051a02402002450d002003102c0b200141106a24000f0b1033000b1035000b931501067f230041106b220224000240024002400240024002400240024020012d00000e050003010204000b20024100360208200242013703004101102a2203450d05200242818080801037020420022003360200200341023a00002002200236020c200141016a2002410c6a1094020c040b20024100360208200242013703004101102a2203450d04200242818080801037020420022003360200200341043a000020012d0001210402400240200228020420022802082203460d00200228020021050c010b200341016a22052003490d06200341017422062005200620054b1b22064100480d060240024020030d002006102a21050c010b200228020020032006102e21050b2005450d0520022006360204200220053602000b2002200341016a360208200520036a20043a000020012d0002210402400240200228020420022802082203460d00200228020021050c010b200341016a22052003490d06200341017422062005200620054b1b22064100480d060240024020030d002006102a21050c010b200228020020032006102e21050b2005450d0520022006360204200220053602000b2002200341016a360208200520036a20043a000020012d0003210402400240200228020420022802082203460d00200228020021050c010b200341016a22052003490d06200341017422062005200620054b1b22064100480d060240024020030d002006102a21050c010b200228020020032006102e21050b2005450d0520022006360204200220053602000b2002200341016a360208200520036a20043a000020012d0004210402400240200228020420022802082203460d00200228020021050c010b200341016a22052003490d06200341017422062005200620054b1b22064100480d060240024020030d002006102a21050c010b200228020020032006102e21050b2005450d0520022006360204200220053602000b2002200341016a360208200520036a20043a000020012802082104200141106a2802002201200210670240024020022802042205200228020822036b2001490d00200228020021050c010b200320016a22062003490d06200541017422072006200720064b1b22064100480d060240024020050d002006102a21050c010b200228020020052006102e21050b2005450d0520022006360204200220053602000b2002200320016a360208200520036a2004200110db051a0c030b20024100360208200242013703004101102a2203450d03200242818080801037020420022003360200200341053a000020012d0001210402400240200228020420022802082203460d00200228020021050c010b200341016a22052003490d05200341017422062005200620054b1b22064100480d050240024020030d002006102a21050c010b200228020020032006102e21050b2005450d0420022006360204200220053602000b2002200341016a360208200520036a20043a000020012d0002210402400240200228020420022802082203460d00200228020021050c010b200341016a22052003490d05200341017422062005200620054b1b22064100480d050240024020030d002006102a21050c010b200228020020032006102e21050b2005450d0420022006360204200220053602000b2002200341016a360208200520036a20043a000020012d0003210402400240200228020420022802082203460d00200228020021050c010b200341016a22052003490d05200341017422062005200620054b1b22064100480d050240024020030d002006102a21050c010b200228020020032006102e21050b2005450d0420022006360204200220053602000b2002200341016a360208200520036a20043a000020012d0004210402400240200228020420022802082203460d00200228020021050c010b200341016a22052003490d05200341017422062005200620054b1b22064100480d050240024020030d002006102a21050c010b200228020020032006102e21050b2005450d0420022006360204200220053602000b2002200341016a360208200520036a20043a000020012802082104200141106a2802002201200210670240024020022802042205200228020822036b2001490d00200228020021050c010b200320016a22062003490d05200541017422072006200720064b1b22064100480d050240024020050d002006102a21050c010b200228020020052006102e21050b2005450d0420022006360204200220053602000b2002200320016a360208200520036a2004200110db051a0c020b20024100360208200242013703004101102a2203450d02200242818080801037020420022003360200200341063a000020012d0001210402400240200228020420022802082203460d00200228020021050c010b200341016a22052003490d04200341017422062005200620054b1b22064100480d040240024020030d002006102a21050c010b200228020020032006102e21050b2005450d0320022006360204200220053602000b2002200341016a360208200520036a20043a000020012d0002210402400240200228020420022802082203460d00200228020021050c010b200341016a22052003490d04200341017422062005200620054b1b22064100480d040240024020030d002006102a21050c010b200228020020032006102e21050b2005450d0320022006360204200220053602000b2002200341016a360208200520036a20043a000020012d0003210402400240200228020420022802082203460d00200228020021050c010b200341016a22052003490d04200341017422062005200620054b1b22064100480d040240024020030d002006102a21050c010b200228020020032006102e21050b2005450d0320022006360204200220053602000b2002200341016a360208200520036a20043a000020012d0004210402400240200228020420022802082203460d00200228020021050c010b200341016a22052003490d04200341017422062005200620054b1b22064100480d040240024020030d002006102a21050c010b200228020020032006102e21050b2005450d0320022006360204200220053602000b2002200341016a360208200520036a20043a000020012802082104200141106a2802002201200210670240024020022802042205200228020822036b2001490d00200228020021050c010b200320016a22062003490d04200541017422072006200720064b1b22064100480d040240024020050d002006102a21050c010b200228020020052006102e21050b2005450d0320022006360204200220053602000b2002200320016a360208200520036a2004200110db051a0c010b20024100360208200242013703004101102a2203450d01200242818080801037020420022003360200200341003a0000200141046a28020021042001410c6a2802002201200210670240024020022802042205200228020822036b2001490d00200228020021050c010b200320016a22062003490d03200541017422072006200720064b1b22064100480d030240024020050d002006102a21050c010b200228020020052006102e21050b2005450d0220022006360204200220053602000b2002200320016a360208200520036a2004200110db051a0b200020022201290200370200200041086a200141086a280200360200200241106a24000f0b1033000b1035000bd70701047f230041106b2202240002400240024020002d0000417f6a220341034b0d00024002400240024020030e0400010203000b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d06200341017422052004200520044b1b22054100480d060240024020030d002005102a21040c010b200128020020032005102e21040b2004450d0520012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41003a0000200028020421032000410c6a2802002200200110672000450d0320004105742100034020032001109101200341206a2103200041606a22000d000c040b0b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d05200341017422052004200520044b1b22054100480d050240024020030d002005102a21040c010b200128020020032005102e21040b2004450d0420012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41013a000020002802042001108b010c020b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d04200341017422052004200520044b1b22054100480d040240024020030d002005102a21040c010b200128020020032005102e21040b2004450d0320012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41023a0000200041046a200110890120002802082001108b010c010b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d03200341017422052004200520044b1b22054100480d030240024020030d002005102a21040c010b200128020020032005102e21040b2004450d0220012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41033a00002002200136020c200041016a2002410c6a109402200041246a200110890120002d0021210402400240200141046a28020020052802002203460d00200128020021000c010b200341016a22002003490d03200341017422052000200520004b1b22054100480d030240024020030d002005102a21000c010b200128020020032005102e21000b2000450d0220012000360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200020036a20043a00000b200241106a24000f0b1033000b1035000bcd1702047f017e200028025821020240024002400240200141046a2802002203200141086a28020022046b4104490d00200128020021030c010b200441046a22052004490d02200341017422042005200420054b1b22044100480d020240024020030d002004102a21030c010b200128020020032004102e21030b2003450d0120012003360200200141046a2004360200200141086a28020021040b200141086a2205200441046a360200200320046a20023600002000290300210602400240200141046a2802002203200528020022046b4108490d00200128020021030c010b200441086a22022004490d02200341017422042002200420024b1b22044100480d020240024020030d002004102a21030c010b200128020020032004102e21030b2003450d0120012003360200200141046a2004360200200141086a28020021040b200141086a2202200441086a360200200320046a20063700002000290308210602400240200141046a2802002203200228020022046b4108490d00200128020021030c010b200441086a22022004490d02200341017422042002200420024b1b22044100480d020240024020030d002004102a21030c010b200128020020032004102e21030b2003450d0120012003360200200141046a2004360200200141086a28020021040b200141086a2202200441086a360200200320046a20063700002000290310210602400240200141046a2802002203200228020022046b4108490d00200128020021030c010b200441086a22022004490d02200341017422042002200420024b1b22044100480d020240024020030d002004102a21030c010b200128020020032004102e21030b2003450d0120012003360200200141046a2004360200200141086a28020021040b200141086a2202200441086a360200200320046a20063700002000290318210602400240200141046a2802002203200228020022046b4108490d00200128020021030c010b200441086a22022004490d02200341017422042002200420024b1b22044100480d020240024020030d002004102a21030c010b200128020020032004102e21030b2003450d0120012003360200200141046a2004360200200141086a28020021040b200141086a2202200441086a360200200320046a20063700002000290320210602400240200141046a2802002203200228020022046b4108490d00200128020021030c010b200441086a22022004490d02200341017422042002200420024b1b22044100480d020240024020030d002004102a21030c010b200128020020032004102e21030b2003450d0120012003360200200141046a2004360200200141086a28020021040b200141086a2202200441086a360200200320046a20063700002000290328210602400240200141046a2802002203200228020022046b4108490d00200128020021030c010b200441086a22022004490d02200341017422042002200420024b1b22044100480d020240024020030d002004102a21030c010b200128020020032004102e21030b2003450d0120012003360200200141046a2004360200200141086a28020021040b200141086a2202200441086a360200200320046a20063700002000290330210602400240200141046a2802002203200228020022046b4108490d00200128020021030c010b200441086a22022004490d02200341017422042002200420024b1b22044100480d020240024020030d002004102a21030c010b200128020020032004102e21030b2003450d0120012003360200200141046a2004360200200141086a28020021040b200141086a2202200441086a360200200320046a20063700002000290338210602400240200141046a2802002203200228020022046b4108490d00200128020021030c010b200441086a22022004490d02200341017422042002200420024b1b22044100480d020240024020030d002004102a21030c010b200128020020032004102e21030b2003450d0120012003360200200141046a2004360200200141086a28020021040b200141086a2202200441086a360200200320046a20063700002000290340210602400240200141046a2802002203200228020022046b4108490d00200128020021030c010b200441086a22022004490d02200341017422042002200420024b1b22044100480d020240024020030d002004102a21030c010b200128020020032004102e21030b2003450d0120012003360200200141046a2004360200200141086a28020021040b200141086a2202200441086a360200200320046a20063700002000290348210602400240200141046a2802002203200228020022046b4108490d00200128020021030c010b200441086a22022004490d02200341017422042002200420024b1b22044100480d020240024020030d002004102a21030c010b200128020020032004102e21030b2003450d0120012003360200200141046a2004360200200141086a28020021040b200141086a2202200441086a360200200320046a20063700002000290350210602400240200141046a2802002203200228020022046b4108490d00200128020021030c010b200441086a22022004490d02200341017422042002200420024b1b22044100480d020240024020030d002004102a21030c010b200128020020032004102e21030b2003450d0120012003360200200141046a2004360200200141086a28020021040b200141086a2202200441086a360200200320046a2006370000200028025c210502400240200141046a2802002203200228020022046b4104490d00200128020021030c010b200441046a22022004490d02200341017422042002200420024b1b22044100480d020240024020030d002004102a21030c010b200128020020032004102e21030b2003450d0120012003360200200141046a2004360200200141086a28020021040b200141086a2202200441046a360200200320046a20053600002000280260210502400240200141046a2802002203200228020022046b4104490d00200128020021030c010b200441046a22022004490d02200341017422042002200420024b1b22044100480d020240024020030d002004102a21030c010b200128020020032004102e21030b2003450d0120012003360200200141046a2004360200200141086a28020021040b200141086a2202200441046a360200200320046a20053600002000280264210502400240200141046a2802002203200228020022046b4104490d00200128020021030c010b200441046a22022004490d02200341017422042002200420024b1b22044100480d020240024020030d002004102a21030c010b200128020020032004102e21030b2003450d0120012003360200200141046a2004360200200141086a28020021040b200141086a2202200441046a360200200320046a20053600002000280268210502400240200141046a2802002203200228020022046b4104490d00200128020021030c010b200441046a22022004490d02200341017422042002200420024b1b22044100480d020240024020030d002004102a21030c010b200128020020032004102e21030b2003450d0120012003360200200141046a2004360200200141086a28020021040b200141086a2202200441046a360200200320046a200536000020002d0070210502400240200141046a28020020022802002204460d00200128020021030c010b200441016a22032004490d02200441017422022003200220034b1b22024100480d020240024020040d002002102a21030c010b200128020020042002102e21030b2003450d0120012003360200200141046a2002360200200141086a28020021040b200141086a2202200441016a360200200320046a20053a0000200028026c210302400240200141046a2802002204200228020022006b4104490d00200128020021040c010b200041046a22022000490d02200441017422002002200020024b1b22004100480d020240024020040d002000102a21040c010b200128020020042000102e21040b2004450d0120012004360200200141046a2000360200200141086a28020021000b200141086a200041046a360200200420006a20033600000f0b1033000b1035000bb8be0102087f027e230041106b220224000240024002400240024020002d0000220341114b0d0002400240024002400240024002400240024002400240024002400240024002400240024020030e12000102030405060708090a0b0c0d0e0f1011000b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d14200341017422052004200520044b1b22054100480d140240024020030d002005102a21040c010b200128020020032005102e21040b2004450d1320012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41003a00000240024020002802044101460d00200241003a000002400240200141046a28020020052802002203460d00200128020021040c010b200341016a22042003490d16200341017422052004200520044b1b22054100480d160240024020030d002005102a21040c010b200128020020032005102e21040b2004450d1520012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41003a00002000280208210602400240200141046a2802002204200528020022036b4104490d00200128020021040c010b200341046a22052003490d16200441017422032005200320054b1b22034100480d160240024020040d002003102a21040c010b200128020020042003102e21040b2004450d1520012004360200200141046a2003360200200141086a28020021030b200141086a200341046a360200200420036a20063600002000410c6a2103410721050c010b200241013a000002400240200141046a28020020052802002203460d00200128020021040c010b200341016a22042003490d15200341017422052004200520044b1b22054100480d150240024020030d002005102a21040c010b200128020020032005102e21040b2004450d1420012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41013a0000410021040240200041106a2d00004101470d00200241013a000002400240200141046a28020020052802002203460d00200128020021040c010b200341016a22042003490d16200341017422062004200620044b1b22064100480d160240024020030d002006102a21040c010b200128020020032006102e21040b2004450d1520012004360200200141046a2006360200200141086a28020021030b200141086a200341016a360200200420036a41013a000020002d001121040b200220043a000002400240200141046a28020020052802002203460d00200128020021050c010b200341016a22052003490d15200341017422062005200620054b1b22064100480d150240024020030d002006102a21050c010b200128020020032006102e21050b2005450d1420012005360200200141046a2006360200200141086a28020021030b200141086a2206200341016a360200200520036a20043a00002002200041126a2d000022053a000002400240200141046a28020020062802002203460d00200128020021040c010b200341016a22042003490d15200341017422062004200620044b1b22064100480d150240024020030d002006102a21040c010b200128020020032006102e21040b2004450d1420012004360200200141046a2006360200200141086a28020021030b200141086a2206200341016a360200200420036a20053a00002000280214210502400240200141046a2802002204200628020022036b4104490d00200128020021040c010b200341046a22062003490d15200441017422032006200320064b1b22034100480d150240024020040d002003102a21040c010b200128020020042003102e21040b2004450d1420012004360200200141046a2003360200200141086a28020021030b200141086a200341046a360200200420036a2005360000200041186a2103411321050b200220032d000022063a000002400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d14200341017422072004200720044b1b22074100480d140240024020030d002007102a21040c010b200128020020032007102e21040b2004450d1320012004360200200141046a2007360200200141086a28020021030b200141086a2207200341016a360200200420036a20063a00002002200020056a41066a2d000022043a000002400240200141046a28020020072802002200460d00200128020021030c010b200041016a22032000490d14200041017422052003200520034b1b22054100480d140240024020000d002005102a21030c010b200128020020002005102e21030b2003450d1320012003360200200141046a2005360200200141086a28020021000b200141086a200041016a360200200320006a20043a00000c110b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d13200341017422052004200520044b1b22054100480d130240024020030d002005102a21040c010b200128020020032005102e21040b2004450d1220012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41013a000002400240200141046a28020020052802002204460d00200128020021050c010b200441016a22032004490d13200441017422052003200520034b1b22034100480d130240024020040d002003102a21050c010b200128020020042003102e21050b2005450d1220012005360200200141046a2003360200200141086a28020021040b200141086a2203200441016a360200200520046a41003a0000200028020421042000410c6a2802002200200110672000450d102000410c6c21082004410a6a2104200141046a210603404100210502402004417e6a22072d00004102460d00200241013a000002400240200628020020032802002200460d00200128020021050c010b200041016a22052000490d15200041017422092005200920054b1b22094100480d150240024020000d002009102a21050c010b200128020020002009102e21050b2005450d142001200536020020062009360200200328020021000b2003200041016a360200200520006a41013a000041002105024020072d00004101470d00200241013a000002400240200628020020032802002200460d00200128020021050c010b200041016a22052000490d16200041017422072005200720054b1b22074100480d160240024020000d002007102a21050c010b200128020020002007102e21050b2005450d152001200536020020062007360200200328020021000b2003200041016a360200200520006a41013a00002004417f6a2d000021050b200220053a000002400240200628020020032802002200460d00200128020021070c010b200041016a22072000490d15200041017422092007200920074b1b22094100480d150240024020000d002009102a21070c010b200128020020002009102e21070b2007450d142001200736020020062009360200200328020021000b2003200041016a360200200720006a20053a000020042d000021050b200220053a000002400240200628020020032802002200460d00200128020021070c010b200041016a22072000490d14200041017422092007200920074b1b22094100480d140240024020000d002009102a21070c010b200128020020002009102e21070b2007450d132001200736020020062009360200200328020021000b2003200041016a360200200720006a20053a00002004410c6a2104200841746a22080d000c110b0b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d12200341017422052004200520044b1b22054100480d120240024020030d002005102a21040c010b200128020020032005102e21040b2004450d1120012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41023a000002400240200141046a28020020052802002203460d00200128020021040c010b200341016a22042003490d12200341017422052004200520044b1b22054100480d120240024020030d002005102a21040c010b200128020020032005102e21040b2004450d1120012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41003a0000200041086a20011091012000280204210402400240200141046a2802002203200528020022006b4104490d00200128020021030c010b200041046a22052000490d12200341017422002005200020054b1b22004100480d120240024020030d002000102a21030c010b200128020020032000102e21030b2003450d1120012003360200200141046a2000360200200141086a28020021000b200141086a200041046a360200200320006a20043600000c0f0b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d11200341017422052004200520044b1b22054100480d110240024020030d002005102a21040c010b200128020020032005102e21040b2004450d1020012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41033a000020002d0008220341034b0d0e0240024002400240024020030e0400010203000b200241003a000002400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d15200341017422052004200520044b1b22054100480d150240024020030d002005102a21040c010b200128020020032005102e21040b2004450d1420012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41003a0000200041096a20011091012000290330210a2002200041386a2903003703082002200a3703000c030b200241013a000002400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d14200341017422052004200520044b1b22054100480d140240024020030d002005102a21040c010b200128020020032005102e21040b2004450d1320012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41013a0000200041096a20011091012000290330210a2002200041386a2903003703082002200a3703000c020b200241023a000002400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d13200341017422052004200520044b1b22054100480d130240024020030d002005102a21040c010b200128020020032005102e21040b2004450d1220012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41023a0000200041096a2001109101200041296a2001109101200041d8006a290300210a2000290350210b02400240200141046a2802002204200528020022036b4110490d00200128020021040c010b200341106a22052003490d13200441017422032005200320054b1b22034100480d130240024020040d002003102a21040c010b200128020020042003102e21040b2004450d1220012004360200200141046a2003360200200141086a28020021030b200141086a200341106a360200200420036a2203200a3700082003200b3700002000290360210a2002200041e8006a2903003703082002200a3703000c010b200241033a000002400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d12200341017422052004200520044b1b22054100480d120240024020030d002005102a21040c010b200128020020032005102e21040b2004450d1120012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41033a0000200041096a2001109101200041386a290300210a2000290330210b02400240200141046a2802002204200528020022036b4110490d00200128020021040c010b200341106a22052003490d12200441017422032005200320054b1b22034100480d120240024020040d002003102a21040c010b200128020020042003102e21040b2004450d1120012004360200200141046a2003360200200141086a28020021030b200141086a200341106a360200200420036a2203200a3700082003200b3700002000290340210a2002200041c8006a2903003703082002200a3703000b2002210302400240200141046a2802002204200141086a28020022006b4110490d00200128020021040c010b200041106a22052000490d11200441017422002005200020054b1b22004100480d110240024020040d002000102a21040c010b200128020020042000102e21040b2004450d1020012004360200200141046a2000360200200141086a28020021000b200141086a200041106a360200200420006a220141086a200341086a290000370000200120032900003700000c0e0b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d10200341017422052004200520044b1b22054100480d100240024020030d002005102a21040c010b200128020020032005102e21040b2004450d0f20012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41043a000020002d0008220341024b0d0d02400240024020030e03000102000b200241003a000002400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d12200341017422052004200520044b1b22054100480d120240024020030d002005102a21040c010b200128020020032005102e21040b2004450d1120012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41003a0000200041186a290300210a2000290310210b02400240200141046a2802002204200528020022036b4110490d00200128020021040c010b200341106a22052003490d12200441017422032005200320054b1b22034100480d120240024020040d002003102a21040c010b200128020020042003102e21040b2004450d1120012004360200200141046a2003360200200141086a28020021030b200141086a2205200341106a360200200420036a2203200a3700082003200b370000200041286a290300210a2000290320210b02400240200141046a2802002203200528020022006b4110490d00200128020021030c010b200041106a22042000490d12200341017422002004200020044b1b22004100480d120240024020030d002000102a21030c010b200128020020032000102e21030b2003450d1120012003360200200141046a2000360200200141086a28020021000b200141086a200041106a360200200320006a2201200a3700082001200b3700000c0f0b200241013a000002400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d11200341017422052004200520044b1b22054100480d110240024020030d002005102a21040c010b200128020020032005102e21040b2004450d1020012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41013a0000200041096a2001109101200041386a290300210a2000290330210b02400240200141046a2802002203200528020022006b4110490d00200128020021030c010b200041106a22042000490d11200341017422002004200020044b1b22004100480d110240024020030d002000102a21030c010b200128020020032000102e21030b2003450d1020012003360200200141046a2000360200200141086a28020021000b200141086a200041106a360200200320006a2201200a3700082001200b3700000c0e0b200241023a000002400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d10200341017422052004200520044b1b22054100480d100240024020030d002005102a21040c010b200128020020032005102e21040b2004450d0f20012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41023a0000200028020c210402400240200141046a2802002203200528020022006b4104490d00200128020021030c010b200041046a22052000490d10200341017422002005200020054b1b22004100480d100240024020030d002000102a21030c010b200128020020032000102e21030b2003450d0f20012003360200200141046a2000360200200141086a28020021000b200141086a200041046a360200200320006a20043600000c0d0b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d0f200341017422052004200520044b1b22054100480d0f0240024020030d002005102a21040c010b200128020020032005102e21040b2004450d0e20012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41053a000002400240200141046a28020020052802002203460d00200128020021040c010b200341016a22042003490d0f200341017422052004200520044b1b22054100480d0f0240024020030d002005102a21040c010b200128020020032005102e21040b2004450d0e20012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41003a00002000280204210402400240200141046a2802002203200528020022006b4104490d00200128020021030c010b200041046a22052000490d0f200341017422002005200020054b1b22004100480d0f0240024020030d002000102a21030c010b200128020020032000102e21030b2003450d0e20012003360200200141046a2000360200200141086a28020021000b200141086a200041046a360200200320006a20043600000c0c0b02400240200141046a2206280200200141086a22042802002203460d00200128020021050c010b200341016a22052003490d0e200341017422072005200720054b1b22074100480d0e0240024020030d002007102a21050c010b200128020020032007102e21050b2005450d0d20012005360200200141046a2007360200200141086a28020021030b2004200341016a360200200520036a41063a0000024002400240024002400240024002400240024002400240024002400240024020002d00080e10000102030405060708090a0b0c0d0e0f000b200241003a000002400240200628020020042802002203460d00200128020021050c010b200341016a22052003490d1d200341017422072005200720054b1b22074100480d1d0240024020030d002007102a21050c010b200128020020032007102e21050b2005450d1c20012005360200200141046a2007360200200141086a28020021030b2004200341016a360200200520036a41003a0000200028020c21070240024020062802002205200428020022036b4104490d00200128020021050c010b200341046a22082003490d1d200541017422032008200320084b1b22034100480d1d0240024020050d002003102a21050c010b200128020020052003102e21050b2005450d1c20012005360200200141046a2003360200200141086a28020021030b2004200341046a360200200520036a2007360000200041186a290300210a2000290310210b0240024020062802002203200428020022006b4110490d00200128020021030c010b200041106a22052000490d1d200341017422002005200020054b1b22004100480d1d0240024020030d002000102a21030c010b200128020020032000102e21030b2003450d1c20012003360200200141046a2000360200200141086a28020021000b2004200041106a360200200320006a2201200a3700082001200b3700000c1a0b200241013a000002400240200628020020042802002203460d00200128020021050c010b200341016a22052003490d1c200341017422072005200720054b1b22074100480d1c0240024020030d002007102a21050c010b200128020020032007102e21050b2005450d1b20012005360200200141046a2007360200200141086a28020021030b2004200341016a360200200520036a41013a0000200028020c21070240024020062802002205200428020022036b4104490d00200128020021050c010b200341046a22082003490d1c200541017422032008200320084b1b22034100480d1c0240024020050d002003102a21050c010b200128020020052003102e21050b2005450d1b20012005360200200141046a2003360200200141086a28020021030b2004200341046a360200200520036a2007360000200041286a290300210a2000290320210b0240024020062802002205200428020022036b4110490d00200128020021040c010b200341106a22042003490d1c200541017422032004200320044b1b22034100480d1c0240024020050d002003102a21040c010b200128020020052003102e21040b2004450d1b20012004360200200141046a2003360200200141086a28020021030b200141086a200341106a360200200420036a2203200a3700082003200b37000020002802102103200041186a2802002200200110672000450d1920004105742100034020032001109101200341206a2103200041606a22000d000c1a0b0b200241023a000002400240200628020020042802002200460d00200128020021030c010b200041016a22032000490d1b200041017422052003200520034b1b22054100480d1b0240024020000d002005102a21030c010b200128020020002005102e21030b2003450d1a20012003360200200141046a2005360200200141086a28020021000b2004200041016a360200200320006a41023a00000c180b200241033a000002400240200628020020042802002203460d00200128020021050c010b200341016a22052003490d1a200341017422072005200720054b1b22074100480d1a0240024020030d002007102a21050c010b200128020020032007102e21050b2005450d1920012005360200200141046a2007360200200141086a28020021030b2004200341016a360200200520036a41033a0000200028020c21070240024020062802002205200428020022036b4104490d00200128020021050c010b200341046a22082003490d1a200541017422032008200320084b1b22034100480d1a0240024020050d002003102a21050c010b200128020020052003102e21050b2005450d1920012005360200200141046a2003360200200141086a28020021030b2004200341046a360200200520036a200736000020002d0009220041024b0d1702400240024020000e03000102000b200241003a000002400240200628020020042802002200460d00200128020021030c010b200041016a22032000490d1c200041017422052003200520034b1b22054100480d1c0240024020000d002005102a21030c010b200128020020002005102e21030b2003450d1b20012003360200200141046a2005360200200141086a28020021000b2004200041016a360200200320006a41003a00000c190b200241013a000002400240200628020020042802002200460d00200128020021030c010b200041016a22032000490d1b200041017422052003200520034b1b22054100480d1b0240024020000d002005102a21030c010b200128020020002005102e21030b2003450d1a20012003360200200141046a2005360200200141086a28020021000b2004200041016a360200200320006a41013a00000c180b200241023a000002400240200628020020042802002200460d00200128020021030c010b200041016a22032000490d1a200041017422052003200520034b1b22054100480d1a0240024020000d002005102a21030c010b200128020020002005102e21030b2003450d1920012003360200200141046a2005360200200141086a28020021000b2004200041016a360200200320006a41023a00000c170b200241043a000002400240200628020020042802002203460d00200128020021050c010b200341016a22052003490d19200341017422072005200720054b1b22074100480d190240024020030d002007102a21050c010b200128020020032007102e21050b2005450d1820012005360200200141046a2007360200200141086a28020021030b2004200341016a360200200520036a41043a0000200028020c21050240024020062802002203200428020022006b4104490d00200128020021030c010b200041046a22062000490d19200341017422002006200020064b1b22004100480d190240024020030d002000102a21030c010b200128020020032000102e21030b2003450d1820012003360200200141046a2000360200200141086a28020021000b2004200041046a360200200320006a20053600000c160b200241053a000002400240200628020020042802002203460d00200128020021050c010b200341016a22052003490d18200341017422072005200720054b1b22074100480d180240024020030d002007102a21050c010b200128020020032007102e21050b2005450d1720012005360200200141046a2007360200200141086a28020021030b2004200341016a360200200520036a41053a0000200028020c21050240024020062802002203200428020022006b4104490d00200128020021030c010b200041046a22062000490d18200341017422002006200020064b1b22004100480d180240024020030d002000102a21030c010b200128020020032000102e21030b2003450d1720012003360200200141046a2000360200200141086a28020021000b2004200041046a360200200320006a20053600000c150b200241063a000002400240200628020020042802002203460d00200128020021050c010b200341016a22052003490d17200341017422072005200720054b1b22074100480d170240024020030d002007102a21050c010b200128020020032007102e21050b2005450d1620012005360200200141046a2007360200200141086a28020021030b2004200341016a360200200520036a41063a0000200028020c21050240024020062802002203200428020022006b4104490d00200128020021030c010b200041046a22062000490d17200341017422002006200020064b1b22004100480d170240024020030d002000102a21030c010b200128020020032000102e21030b2003450d1620012003360200200141046a2000360200200141086a28020021000b2004200041046a360200200320006a20053600000c140b200241073a000002400240200628020020042802002203460d00200128020021050c010b200341016a22052003490d16200341017422072005200720054b1b22074100480d160240024020030d002007102a21050c010b200128020020032007102e21050b2005450d1520012005360200200141046a2007360200200141086a28020021030b2004200341016a360200200520036a41073a0000200028020c21070240024020062802002205200428020022036b4104490d00200128020021050c010b200341046a22082003490d16200541017422032008200320084b1b22034100480d160240024020050d002003102a21050c010b200128020020052003102e21050b2005450d1520012005360200200141046a2003360200200141086a28020021030b2004200341046a360200200520036a2007360000200220002d000922053a000002400240200628020020042802002200460d00200128020021030c010b200041016a22032000490d16200041017422062003200620034b1b22064100480d160240024020000d002006102a21030c010b200128020020002006102e21030b2003450d1520012003360200200141046a2006360200200141086a28020021000b2004200041016a360200200320006a20053a00000c130b200241083a000002400240200628020020042802002203460d00200128020021040c010b200341016a22042003490d15200341017422052004200520044b1b22054100480d150240024020030d002005102a21040c010b200128020020032005102e21040b2004450d1420012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41083a0000200041096a2001109101200041296a20011091010c120b200241093a000002400240200628020020042802002203460d00200128020021040c010b200341016a22042003490d14200341017422052004200520044b1b22054100480d140240024020030d002005102a21040c010b200128020020032005102e21040b2004450d1320012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41093a0000200041096a20011091010c110b2002410a3a000002400240200628020020042802002203460d00200128020021050c010b200341016a22052003490d13200341017422062005200620054b1b22064100480d130240024020030d002006102a21050c010b200128020020032006102e21050b2005450d1220012005360200200141046a2006360200200141086a28020021030b200141086a2206200341016a360200200520036a410a3a0000200041096a200110910120022001360200200041296a2002109402200028024c210502400240200141046a2802002203200628020022006b4104490d00200128020021030c010b200041046a22062000490d13200341017422002006200020064b1b22004100480d130240024020030d002000102a21030c010b200128020020032000102e21030b2003450d1220012003360200200141046a2000360200200141086a28020021000b2004200041046a360200200320006a20053600000c100b2002410b3a000002400240200628020020042802002203460d00200128020021050c010b200341016a22052003490d12200341017422062005200620054b1b22064100480d120240024020030d002006102a21050c010b200128020020032006102e21050b2005450d1120012005360200200141046a2006360200200141086a28020021030b200141086a2206200341016a360200200520036a410b3a000020022001360200200041096a2002109402200041296a2001109101200041d8006a290300210a2000290350210b02400240200141046a2802002203200628020022006b4110490d00200128020021030c010b200041106a22052000490d12200341017422002005200020054b1b22004100480d120240024020030d002000102a21030c010b200128020020032000102e21030b2003450d1120012003360200200141046a2000360200200141086a28020021000b2004200041106a360200200320006a2201200a3700082001200b3700000c0f0b2002410c3a000002400240200628020020042802002203460d00200128020021050c010b200341016a22052003490d11200341017422062005200620054b1b22064100480d110240024020030d002006102a21050c010b200128020020032006102e21050b2005450d1020012005360200200141046a2006360200200141086a28020021030b200141086a2206200341016a360200200520036a410c3a000020022001360200200041096a2002109402200041296a2001109101200041d8006a290300210a2000290350210b02400240200141046a2802002203200628020022006b4110490d00200128020021030c010b200041106a22052000490d11200341017422002005200020054b1b22004100480d110240024020030d002000102a21030c010b200128020020032000102e21030b2003450d1020012003360200200141046a2000360200200141086a28020021000b2004200041106a360200200320006a2201200a3700082001200b3700000c0e0b2002410d3a000002400240200628020020042802002203460d00200128020021050c010b200341016a22052003490d10200341017422062005200620054b1b22064100480d100240024020030d002006102a21050c010b200128020020032006102e21050b2005450d0f20012005360200200141046a2006360200200141086a28020021030b200141086a2206200341016a360200200520036a410d3a000020022001360200200041096a2002109402200028022c210502400240200141046a2802002203200628020022006b4104490d00200128020021030c010b200041046a22062000490d10200341017422002006200020064b1b22004100480d100240024020030d002000102a21030c010b200128020020032000102e21030b2003450d0f20012003360200200141046a2000360200200141086a28020021000b2004200041046a360200200320006a20053600000c0d0b2002410e3a000002400240200628020020042802002203460d00200128020021050c010b200341016a22052003490d0f200341017422062005200620054b1b22064100480d0f0240024020030d002006102a21050c010b200128020020032006102e21050b2005450d0e20012005360200200141046a2006360200200141086a28020021030b200141086a2206200341016a360200200520036a410e3a000020022001360200200041096a2002109402200028022c210502400240200141046a2802002203200628020022006b4104490d00200128020021030c010b200041046a22062000490d0f200341017422002006200020064b1b22004100480d0f0240024020030d002000102a21030c010b200128020020032000102e21030b2003450d0e20012003360200200141046a2000360200200141086a28020021000b2004200041046a360200200320006a20053600000c0c0b2002410f3a000002400240200628020020042802002203460d00200128020021040c010b200341016a22042003490d0e200341017422052004200520044b1b22054100480d0e0240024020030d002005102a21040c010b200128020020032005102e21040b2004450d0d20012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a410f3a000020022001360200200041096a2002109402200041296a2001109101200041f8006a290300210a2000290370210b02400240200141046a2802002204200528020022036b4110490d00200128020021040c010b200341106a22052003490d0e200441017422032005200320054b1b22034100480d0e0240024020040d002003102a21040c010b200128020020042003102e21040b2004450d0d20012004360200200141046a2003360200200141086a28020021030b200141086a200341106a360200200420036a2203200a3700082003200b370000200041c9006a20011091010c0b0b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d0d200341017422052004200520044b1b22054100480d0d0240024020030d002005102a21040c010b200128020020032005102e21040b2004450d0c20012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41073a0000200041046a200110eb020c0a0b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d0e200341017422052004200520044b1b22054100480d0e0240024020030d002005102a21040c010b200128020020032005102e21040b2004450d0d20012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41083a0000200041046a200110eb020c090b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d0d200341017422052004200520044b1b22054100480d0d0240024020030d002005102a21040c010b200128020020032005102e21040b2004450d0c20012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41093a000020002d0004220341044b0d080240024002400240024020030e050001020304000b200241003a000002400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d11200341017422052004200520044b1b22054100480d110240024020030d002005102a21040c010b200128020020032005102e21040b2004450d1020012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41003a000020002802082103200041106a2802002200200110672000450d0c2003200041306c6a2108200141046a2106034020032001109101200341286a290300210a200341206a290300210b0240024020062802002204200528020022006b4110490d00200128020021040c010b200041106a22072000490d12200441017422002007200020074b1b22004100480d120240024020040d002000102a21040c010b200128020020042000102e21040b2004450d112001200436020020062000360200200528020021000b2005200041106a360200200420006a2200200a3700082000200b3700002008200341306a2203470d000c0d0b0b200241013a000002400240200141046a280200200141086a2802002200460d00200128020021030c010b200041016a22032000490d10200041017422042003200420034b1b22044100480d100240024020000d002004102a21030c010b200128020020002004102e21030b2003450d0f20012003360200200141046a2004360200200141086a28020021000b200141086a200041016a360200200320006a41013a00000c0b0b200241023a000002400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d0f200341017422052004200520044b1b22054100480d0f0240024020030d002005102a21040c010b200128020020032005102e21040b2004450d0e20012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41023a0000200041056a20011091010c0a0b200241033a000002400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d0e200341017422052004200520044b1b22054100480d0e0240024020030d002005102a21040c010b200128020020032005102e21040b2004450d0d20012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41033a0000200041056a20011091010c090b200141086a2802002103200241043a0000024002402003200141046a280200460d00200128020021040c010b200341016a22042003490d0d200341017422052004200520044b1b22054100480d0d0240024020030d002005102a21040c010b200128020020032005102e21040b2004450d0c20012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41043a0000200041056a2001109101200041256a2001109101200220002d004522043a000002400240200141046a28020020052802002200460d00200128020021030c010b200041016a22032000490d0d200041017422052003200520034b1b22054100480d0d0240024020000d002005102a21030c010b200128020020002005102e21030b2003450d0c20012003360200200141046a2005360200200141086a28020021000b200141086a200041016a360200200320006a20043a00000c080b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d0c200341017422052004200520044b1b22054100480d0c0240024020030d002005102a21040c010b200128020020032005102e21040b2004450d0b20012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a410a3a000020002d0001220041054b0d07024002400240024002400240024020000e06000102030405000b410021030c050b410121030c040b410221030c030b410321030c020b410421030c010b410521030b200220033a000002400240200141046a280200200141086a2802002200460d00200128020021040c010b200041016a22042000490d0c200041017422052004200520044b1b22054100480d0c0240024020000d002005102a21040c010b200128020020002005102e21040b2004450d0b20012004360200200141046a2005360200200141086a28020021000b200141086a200041016a360200200420006a20033a00000c070b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d0b200341017422052004200520044b1b22054100480d0b0240024020030d002005102a21040c010b200128020020032005102e21040b2004450d0a20012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a410b3a00002000280204220341024b0d0602400240024020030e03000102000b200241003a000002400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d0d200341017422052004200520044b1b22054100480d0d0240024020030d002005102a21040c010b200128020020032005102e21040b2004450d0c20012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41003a000020002802082103200041106a2802002200200110672000450d082003200041286c6a2108200141046a2106034020032001109101200341206a290300210a0240024020062802002204200528020022006b4108490d00200128020021040c010b200041086a22072000490d0e200441017422002007200020074b1b22004100480d0e0240024020040d002000102a21040c010b200128020020042000102e21040b2004450d0d2001200436020020062000360200200528020021000b2005200041086a360200200420006a200a3700002008200341286a2203470d000c090b0b200241013a000002400240200141046a280200200141086a2802002200460d00200128020021030c010b200041016a22032000490d0c200041017422042003200420034b1b22044100480d0c0240024020000d002004102a21030c010b200128020020002004102e21030b2003450d0b20012003360200200141046a2004360200200141086a28020021000b200141086a200041016a360200200320006a41013a00000c070b200241023a000002400240200141046a280200200141086a2802002200460d00200128020021030c010b200041016a22032000490d0b200041017422042003200420034b1b22044100480d0b0240024020000d002004102a21030c010b200128020020002004102e21030b2003450d0a20012003360200200141046a2004360200200141086a28020021000b200141086a200041016a360200200320006a41023a00000c060b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d0a200341017422052004200520044b1b22054100480d0a0240024020030d002005102a21040c010b200128020020032005102e21040b2004450d0920012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a410c3a000020002d0008220341054b0d0502400240024002400240024020030e06000102030405000b200241003a000002400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d0f200341017422052004200520044b1b22054100480d0f0240024020030d002005102a21040c010b200128020020032005102e21040b2004450d0e20012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41003a0000200028020c210402400240200141046a2802002203200528020022006b4104490d00200128020021030c010b200041046a22052000490d0f200341017422002005200020054b1b22004100480d0f0240024020030d002000102a21030c010b200128020020032000102e21030b2003450d0e20012003360200200141046a2000360200200141086a28020021000b200141086a200041046a360200200320006a20043600000c0a0b200241013a000002400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d0e200341017422052004200520044b1b22054100480d0e0240024020030d002005102a21040c010b200128020020032005102e21040b2004450d0d20012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41013a0000200041186a290300210a2000290310210b02400240200141046a2802002203200528020022006b4110490d00200128020021030c010b200041106a22042000490d0e200341017422002004200020044b1b22004100480d0e0240024020030d002000102a21030c010b200128020020032000102e21030b2003450d0d20012003360200200141046a2000360200200141086a28020021000b200141086a200041106a360200200320006a2201200a3700082001200b3700000c090b200241023a000002400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d0d200341017422052004200520044b1b22054100480d0d0240024020030d002005102a21040c010b200128020020032005102e21040b2004450d0c20012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41023a0000200028022c210602400240200141046a2802002204200528020022036b4104490d00200128020021040c010b200341046a22052003490d0d200441017422032005200320054b1b22034100480d0d0240024020040d002003102a21040c010b200128020020042003102e21040b2004450d0c20012004360200200141046a2003360200200141086a28020021030b200141086a2205200341046a360200200420036a2006360000200041386a290300210a2000290330210b02400240200141046a2802002204200528020022036b4110490d00200128020021040c010b200341106a22052003490d0d200441017422032005200320054b1b22034100480d0d0240024020040d002003102a21040c010b200128020020042003102e21040b2004450d0c20012004360200200141046a2003360200200141086a28020021030b200141086a200341106a360200200420036a2203200a3700082003200b370000200041096a20011091010c080b200241033a000002400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d0c200341017422052004200520044b1b22054100480d0c0240024020030d002005102a21040c010b200128020020032005102e21040b2004450d0b20012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41033a0000200041186a290300210a2000290310210b02400240200141046a2802002203200528020022006b4110490d00200128020021030c010b200041106a22042000490d0c200341017422002004200020044b1b22004100480d0c0240024020030d002000102a21030c010b200128020020032000102e21030b2003450d0b20012003360200200141046a2000360200200141086a28020021000b200141086a200041106a360200200320006a2201200a3700082001200b3700000c070b200141086a2802002103200241043a0000024002402003200141046a280200460d00200128020021040c010b200341016a22042003490d0b200341017422052004200520044b1b22054100480d0b0240024020030d002005102a21040c010b200128020020032005102e21040b2004450d0a20012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41043a0000200041186a290300210a2000290310210b02400240200141046a2802002203200528020022006b4110490d00200128020021030c010b200041106a22042000490d0b200341017422002004200020044b1b22004100480d0b0240024020030d002000102a21030c010b200128020020032000102e21030b2003450d0a20012003360200200141046a2000360200200141086a28020021000b200141086a200041106a360200200320006a2201200a3700082001200b3700000c060b200241053a000002400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d0a200341017422052004200520044b1b22054100480d0a0240024020030d002005102a21040c010b200128020020032005102e21040b2004450d0920012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41053a0000200041186a290300210a2000290310210b02400240200141046a2802002203200528020022006b4110490d00200128020021030c010b200041106a22042000490d0a200341017422002004200020044b1b22004100480d0a0240024020030d002000102a21030c010b200128020020032000102e21030b2003450d0920012003360200200141046a2000360200200141086a28020021000b200141086a200041106a360200200320006a2201200a3700082001200b3700000c050b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d09200341017422052004200520044b1b22054100480d090240024020030d002005102a21040c010b200128020020032005102e21040b2004450d0820012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a410d3a000020002d0008220341054b0d0402400240024002400240024020030e06000102030405000b200241003a000002400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d0e200341017422052004200520044b1b22054100480d0e0240024020030d002005102a21040c010b200128020020032005102e21040b2004450d0d20012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41003a0000200041096a2001109101200041296a2001109101200041d8006a290300210a2000290350210b02400240200141046a2802002203200528020022006b4110490d00200128020021030c010b200041106a22042000490d0e200341017422002004200020044b1b22004100480d0e0240024020030d002000102a21030c010b200128020020032000102e21030b2003450d0d20012003360200200141046a2000360200200141086a28020021000b200141086a200041106a360200200320006a2201200a3700082001200b3700000c090b200241013a000002400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d0d200341017422052004200520044b1b22054100480d0d0240024020030d002005102a21040c010b200128020020032005102e21040b2004450d0c20012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41013a0000200041096a2001109101200041296a20011091010c080b200241023a000002400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d0c200341017422052004200520044b1b22054100480d0c0240024020030d002005102a21040c010b200128020020032005102e21040b2004450d0b20012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41023a000020022001360200200041096a20021094020c070b200241033a000002400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d0b200341017422052004200520044b1b22054100480d0b0240024020030d002005102a21040c010b200128020020032005102e21040b2004450d0a20012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41033a0000200028020c210402400240200141046a2802002203200528020022006b4104490d00200128020021030c010b200041046a22052000490d0b200341017422002005200020054b1b22004100480d0b0240024020030d002000102a21030c010b200128020020032000102e21030b2003450d0a20012003360200200141046a2000360200200141086a28020021000b200141086a200041046a360200200320006a20043600000c060b200141086a2802002103200241043a0000024002402003200141046a280200460d00200128020021040c010b200341016a22042003490d0a200341017422052004200520044b1b22054100480d0a0240024020030d002005102a21040c010b200128020020032005102e21040b2004450d0920012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41043a0000200041096a2001109101200220002d002922043a000002400240200141046a28020020052802002200460d00200128020021030c010b200041016a22032000490d0a200041017422052003200520034b1b22054100480d0a0240024020000d002005102a21030c010b200128020020002005102e21030b2003450d0920012003360200200141046a2005360200200141086a28020021000b200141086a200041016a360200200320006a20043a00000c050b200241053a000002400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d09200341017422052004200520044b1b22054100480d090240024020030d002005102a21040c010b200128020020032005102e21040b2004450d0820012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41053a0000200041096a2001109101200028022c2106200041346a28020022002001106702400240200141046a2802002204200528020022036b2000490d00200128020021040c010b200320006a22052003490d09200441017422032005200320054b1b22034100480d090240024020040d002003102a21040c010b200128020020042003102e21040b2004450d0820012004360200200141046a2003360200200141086a28020021030b200141086a200320006a360200200420036a2006200010db051a0c040b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d08200341017422052004200520044b1b22054100480d080240024020030d002005102a21040c010b200128020020032005102e21040b2004450d0720012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a410e3a000020002d0001220341024b0d0302400240024020030e03000102000b200241003a000002400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d0a200341017422052004200520044b1b22054100480d0a0240024020030d002005102a21040c010b200128020020032005102e21040b2004450d0920012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41003a0000200220002d000222043a000002400240200141046a28020020052802002200460d00200128020021030c010b200041016a22032000490d0a200041017422052003200520034b1b22054100480d0a0240024020000d002005102a21030c010b200128020020002005102e21030b2003450d0920012003360200200141046a2005360200200141086a28020021000b200141086a200041016a360200200320006a20043a00000c050b200241013a000002400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d09200341017422052004200520044b1b22054100480d090240024020030d002005102a21040c010b200128020020032005102e21040b2004450d0820012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41013a0000200041026a20011091010c040b200241023a000002400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d08200341017422052004200520044b1b22054100480d080240024020030d002005102a21040c010b200128020020032005102e21040b2004450d0720012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41023a0000200220002d000222043a000002400240200141046a28020020052802002200460d00200128020021030c010b200041016a22032000490d08200041017422052003200520034b1b22054100480d080240024020000d002005102a21030c010b200128020020002005102e21030b2003450d0720012003360200200141046a2005360200200141086a28020021000b200141086a200041016a360200200320006a20043a00000c030b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d07200341017422052004200520044b1b22054100480d070240024020030d002005102a21040c010b200128020020032005102e21040b2004450d0620012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a410f3a000020002d0004220341024b0d0202400240024020030e03000102000b200241003a000002400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d09200341017422052004200520044b1b22054100480d090240024020030d002005102a21040c010b200128020020032005102e21040b2004450d0820012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41003a0000200041056a20011091010c040b200241013a000002400240200141046a280200200141086a2802002200460d00200128020021030c010b200041016a22032000490d08200041017422042003200420034b1b22044100480d080240024020000d002004102a21030c010b200128020020002004102e21030b2003450d0720012003360200200141046a2004360200200141086a28020021000b200141086a200041016a360200200320006a41013a00000c030b200241023a000002400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d07200341017422052004200520044b1b22054100480d070240024020030d002005102a21040c010b200128020020032005102e21040b2004450d0620012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41023a000020002802082104200041106a2802002200200110672000450d022004200041d0006c6a21050340200420011091012002200441206a36020020022001108a012002200441306a36020020022001108a01200428024021002004280248220320011067200441d0006a210402402003450d00200341306c21030340200041106a20011091012002200036020020022001108a01200041306a2100200341506a22030d000b0b20052004470d000c030b0b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d06200341017422052004200520044b1b22054100480d060240024020030d002005102a21040c010b200128020020032005102e21040b2004450d0520012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41103a000002400240200141046a28020020052802002203460d00200128020021040c010b200341016a22042003490d06200341017422052004200520044b1b22054100480d060240024020030d002005102a21040c010b200128020020032005102e21040b2004450d0520012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41003a0000200041106a200110ec02200028020421062000410c6a28020022032001106702400240200141046a2802002204200528020022006b2003490d00200128020021040c010b200020036a22052000490d06200441017422002005200020054b1b22004100480d060240024020040d002000102a21040c010b200128020020042000102e21040b2004450d0520012004360200200141046a2000360200200141086a28020021000b200141086a200020036a360200200420006a2006200310db051a0c010b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d05200341017422052004200520044b1b22054100480d050240024020030d002005102a21040c010b200128020020032005102e21040b2004450d0420012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41113a000020002d0008220341044b0d000240024002400240024020030e050001020304000b200241003a000002400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d09200341017422052004200520044b1b22054100480d090240024020030d002005102a21040c010b200128020020032005102e21040b2004450d0820012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41003a0000200041096a20011091010c040b200241013a000002400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d08200341017422052004200520044b1b22054100480d080240024020030d002005102a21040c010b200128020020032005102e21040b2004450d0720012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41013a0000200041096a20011091010c030b200241023a000002400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d07200341017422052004200520044b1b22054100480d070240024020030d002005102a21040c010b200128020020032005102e21040b2004450d0620012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41023a0000200041096a20011091010c020b200241033a000002400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d06200341017422052004200520044b1b22054100480d060240024020030d002005102a21040c010b200128020020032005102e21040b2004450d0520012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41033a0000200041096a2001109101200041386a290300210a2000290330210b02400240200141046a2802002203200528020022006b4110490d00200128020021030c010b200041106a22042000490d06200341017422002004200020044b1b22004100480d060240024020030d002000102a21030c010b200128020020032000102e21030b2003450d0520012003360200200141046a2000360200200141086a28020021000b200141086a200041106a360200200320006a2201200a3700082001200b3700000c010b200141086a2802002103200241043a0000024002402003200141046a280200460d00200128020021040c010b200341016a22042003490d05200341017422052004200520044b1b22054100480d050240024020030d002005102a21040c010b200128020020032005102e21040b2004450d0420012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41043a0000200041096a2001109101200041386a290300210a2000290330210b02400240200141046a2802002203200528020022006b4110490d00200128020021030c010b200041106a22042000490d05200341017422002004200020044b1b22004100480d050240024020030d002000102a21030c010b200128020020032000102e21030b2003450d0420012003360200200141046a2000360200200141086a28020021000b200141086a200041106a360200200320006a2201200a3700082001200b3700000b200241106a24000f0b1033000b1035000b1033000b1035000b8d1201057f230041106b2202240002400240024020002d0000220341054b0d0002400240024002400240024020030e06000102030405000b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d08200341017422052004200520044b1b22054100480d080240024020030d002005102a21040c010b200128020020032005102e21040b2004450d0720012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41003a0000200041016a20011091012000280244210602400240200141046a2802002204200528020022036b4104490d00200128020021040c010b200341046a22052003490d08200441017422032005200320054b1b22034100480d080240024020040d002003102a21040c010b200128020020042003102e21040b2004450d0720012004360200200141046a2003360200200141086a28020021030b200141086a2205200341046a360200200420036a20063600002002200136020c200041216a2002410c6a1094022000280248210402400240200141046a2802002203200528020022006b4104490d00200128020021030c010b200041046a22052000490d08200341017422002005200020054b1b22004100480d080240024020030d002000102a21030c010b200128020020032000102e21030b2003450d0720012003360200200141046a2000360200200141086a28020021000b200141086a200041046a360200200320006a20043600000c050b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d07200341017422052004200520044b1b22054100480d070240024020030d002005102a21040c010b200128020020032005102e21040b2004450d0620012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41013a0000200041016a20011091012002200136020c200041216a2002410c6a10940220002d0041210602400240200141046a28020020052802002203460d00200128020021040c010b200341016a22042003490d07200341017422052004200520044b1b22054100480d070240024020030d002005102a21040c010b200128020020032005102e21040b2004450d0620012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a20063a00002000280244210602400240200141046a2802002204200528020022036b4104490d00200128020021040c010b200341046a22052003490d07200441017422032005200320054b1b22034100480d070240024020040d002003102a21040c010b200128020020042003102e21040b2004450d0620012004360200200141046a2003360200200141086a28020021030b200141086a2205200341046a360200200420036a20063600002000280248210402400240200141046a2802002203200528020022006b4104490d00200128020021030c010b200041046a22052000490d07200341017422002005200020054b1b22004100480d070240024020030d002000102a21030c010b200128020020032000102e21030b2003450d0620012003360200200141046a2000360200200141086a28020021000b200141086a200041046a360200200320006a20043600000c040b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d06200341017422052004200520044b1b22054100480d060240024020030d002005102a21040c010b200128020020032005102e21040b2004450d0520012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41023a00002002200136020c200041016a2002410c6a1094020c030b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d05200341017422052004200520044b1b22054100480d050240024020030d002005102a21040c010b200128020020032005102e21040b2004450d0420012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41033a00002002200136020c200041016a2002410c6a1094020c020b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d04200341017422052004200520044b1b22054100480d040240024020030d002005102a21040c010b200128020020032005102e21040b2004450d0320012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41043a00002002200136020c200041016a2002410c6a10940220002d0021210402400240200141046a28020020052802002200460d00200128020021030c010b200041016a22032000490d04200041017422052003200520034b1b22054100480d040240024020000d002005102a21030c010b200128020020002005102e21030b2003450d0320012003360200200141046a2005360200200141086a28020021000b200141086a200041016a360200200320006a20043a00000c010b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d03200341017422052004200520044b1b22054100480d030240024020030d002005102a21040c010b200128020020032005102e21040b2004450d0220012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41053a00002002200136020c200041016a2002410c6a10940220002d0021210402400240200141046a28020020052802002200460d00200128020021030c010b200041016a22032000490d03200041017422052003200520034b1b22054100480d030240024020000d002005102a21030c010b200128020020002005102e21030b2003450d0220012003360200200141046a2005360200200141086a28020021000b200141086a200041016a360200200320006a20043a00000b200241106a24000f0b1033000b1035000bb21401047f20002d000021020240024002400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d02200341017422052004200520044b1b22054100480d020240024020030d002005102a21040c010b200128020020032005102e21040b2004450d0120012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a20023a000020002d0001210202400240200141046a28020020052802002203460d00200128020021040c010b200341016a22042003490d02200341017422052004200520044b1b22054100480d020240024020030d002005102a21040c010b200128020020032005102e21040b2004450d0120012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a20023a000020002d0002210202400240200141046a28020020052802002203460d00200128020021040c010b200341016a22042003490d02200341017422052004200520044b1b22054100480d020240024020030d002005102a21040c010b200128020020032005102e21040b2004450d0120012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a20023a000020002d0003210202400240200141046a28020020052802002203460d00200128020021040c010b200341016a22042003490d02200341017422052004200520044b1b22054100480d020240024020030d002005102a21040c010b200128020020032005102e21040b2004450d0120012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a20023a000020002d0004210202400240200141046a28020020052802002203460d00200128020021040c010b200341016a22042003490d02200341017422052004200520044b1b22054100480d020240024020030d002005102a21040c010b200128020020032005102e21040b2004450d0120012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a20023a000020002d0005210202400240200141046a28020020052802002203460d00200128020021040c010b200341016a22042003490d02200341017422052004200520044b1b22054100480d020240024020030d002005102a21040c010b200128020020032005102e21040b2004450d0120012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a20023a000020002d0006210202400240200141046a28020020052802002203460d00200128020021040c010b200341016a22042003490d02200341017422052004200520044b1b22054100480d020240024020030d002005102a21040c010b200128020020032005102e21040b2004450d0120012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a20023a000020002d0007210202400240200141046a28020020052802002203460d00200128020021040c010b200341016a22042003490d02200341017422052004200520044b1b22054100480d020240024020030d002005102a21040c010b200128020020032005102e21040b2004450d0120012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a20023a000020002d0008210202400240200141046a28020020052802002203460d00200128020021040c010b200341016a22042003490d02200341017422052004200520044b1b22054100480d020240024020030d002005102a21040c010b200128020020032005102e21040b2004450d0120012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a20023a000020002d0009210202400240200141046a28020020052802002203460d00200128020021040c010b200341016a22042003490d02200341017422052004200520044b1b22054100480d020240024020030d002005102a21040c010b200128020020032005102e21040b2004450d0120012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a20023a000020002d000a210202400240200141046a28020020052802002203460d00200128020021040c010b200341016a22042003490d02200341017422052004200520044b1b22054100480d020240024020030d002005102a21040c010b200128020020032005102e21040b2004450d0120012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a20023a000020002d000b210202400240200141046a28020020052802002203460d00200128020021040c010b200341016a22042003490d02200341017422052004200520044b1b22054100480d020240024020030d002005102a21040c010b200128020020032005102e21040b2004450d0120012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a20023a000020002d000c210202400240200141046a28020020052802002203460d00200128020021040c010b200341016a22042003490d02200341017422052004200520044b1b22054100480d020240024020030d002005102a21040c010b200128020020032005102e21040b2004450d0120012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a20023a000020002d000d210202400240200141046a28020020052802002203460d00200128020021040c010b200341016a22042003490d02200341017422052004200520044b1b22054100480d020240024020030d002005102a21040c010b200128020020032005102e21040b2004450d0120012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a20023a000020002d000e210202400240200141046a28020020052802002203460d00200128020021040c010b200341016a22042003490d02200341017422052004200520044b1b22054100480d020240024020030d002005102a21040c010b200128020020032005102e21040b2004450d0120012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a20023a000020002d000f210402400240200141046a28020020052802002200460d00200128020021030c010b200041016a22032000490d02200041017422022003200220034b1b22024100480d020240024020000d002002102a21030c010b200128020020002002102e21030b2003450d0120012003360200200141046a2002360200200141086a28020021000b200141086a200041016a360200200320006a20043a00000f0b1033000b1035000bea0b01037f230041306b210202400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020012802000e18000102030405060708090a0b0c0d0e0f1011121314151617000b417f2102024002400240200141086a280200417f6a220341064b0d0041012101024020030e0703010200020202030b41c09a0c21020c020b410021010b4190ce0021020b200041013a0005200020013a0004200020023602000f0b200041013b0104200041003602000f0b20004180023b010420004190ce003602000f0b20004181023b010420004190ce003602000f0b20004181023b010420004190ce003602000f0b20004180023b010420004190ce003602000f0b4100210202400240200141086a280200417f6a220341034b0d0041c0843d2101024020030e0402000202020b4101210241d0860321010c010b4190ce0021010b200041013a0005200020023a0004200020013602000f0b410121024100210302400240200141086a2d0000417f6a2204410f4b0d0041a0c21e210102400240024020040e1004040000010104040102020202020202040b4180b51821010c030b41b0e32d21010c020b4100210141012103410021020c010b4190ce0021010b200020023a0005200020033a0004200020013602000f0b20004180023b0104200041f093093602000f0b410021020240024002400240200141086a2d0000417f6a220341144b0d0041c096b1022101024002400240024020030e15070700000107070702020303060606050504060604070b41c09a0c21010c060b4101210241a0c21e21010c050b41c09a0c21010c040b410121020b4190ce0021010c020b41a0c21e21010c010b41a08d0621010b200041013a0005200020023a0004200020013602000f0b0240024020012d0004417f6a220341034b0d004101210241a08d0621010240024020030e0403030001030b41c096b10221010c020b41c09a0c21010c010b410021024190ce0021010b200041013a0005200020023a0004200020013602000f0b0240024020012d0004417f6a220341034b0d004101210241a08d0621010240024020030e0403030001030b41c096b10221010c020b41c09a0c21010c010b410021024190ce0021010b200041013a0005200020023a0004200020013602000f0b4100210202400240200141086a280200417f6a220341054b0d0041a08d06210102400240024020030e06040300010202040b41c0843d21010c030b41a0c21e21010c020b41012102418089fa0021010c010b4190ce0021010b200041013a0005200020023a0004200020013602000f0b20004180023b0104200041d086034190ce0020012d0004417f6a4107714105491b3602000f0b20004180023b010420004190ce003602000f0b20004180023b010420004190ce003602000f0b4100210202400240200141086a280200417f6a220341024b0d0041a0c21e2101024020030e03020000020b4101210241a08d0621010c010b4190ce0021010b200041013a0005200020023a0004200020013602000f0b02400240200141086a2d0000417f6a220341044b0d0020022101024002400240024020030e050500010203050b200241086a21010c040b200241106a21010c030b200241186a21010c020b200241206a21010c010b200241286a21010b2001428080808080e20937020020004180023b010420004190ce003602000f0b024002402001280204417f6a220441024b0d00410021014101210241002103024020040e03020100020b4101210241002101410121030c010b41012103410021024190ce0021010b200020033a0005200020023a0004200020013602000f0b20004180023b010420004190ce003602000f0b20004180023b010420004190ce003602000f0b20004180023b010420004190ce003602000f0b20004180023b010420004190ce003602000f0b4101210241002103024002402001280204417f6a220441034b0d0041d086032101024020040e0402010000020b4100210141012103410021020c010b4190ce0021010b200020023a0005200020033a0004200020013602000b880401077f230041306b22022400200241003602082002420137030020022002360210200141106a200241106a1094022001200210890120022002360210200141306a200241106a10940220022002360210200141d0006a200241106a109402200128020421032001410c6a2802002201200210670240024002402001450d00200141246c21040340200241106a200310e702200228021021050240024020022802042206200228020822016b20022802182207490d00200228020021060c010b200120076a22082001490d04200641017422012008200120084b1b22014100480d040240024020060d002001102a21060c010b200228020020062001102e21060b2006450d032002200136020420022006360200200228020821010b2002200120076a360208200620016a2005200710db051a02402002280214450d002005102c0b200341246a21032004415c6a22040d000b0b20022802042107200241106a41186a2203200235020842208620022802002204ad841006220141186a290000370300200241106a41106a2206200141106a290000370300200241106a41086a2205200141086a290000370300200220012900003703102001102c200041186a2003290300370000200041106a2006290300370000200041086a20052903003700002000200229031037000002402007450d002004102c0b200241306a24000f0b1033000b1035000b9d0302057f017e230041e0006b220324002003200236020c20032001360208200341106a2002ad4220862001ad841003108d0102400240200328021022010d00200041003602000c010b200328021421022003200341186a28020036022420032001360220200341c8006a200341206a10770240024020032802482204450d00200328024c21050240200328022422064110490d002003200641706a36022420032003280220220641106a360220200341c8006a41086a280200210720062900002108200041186a200641086a290000370300200041106a2008370300200041086a200736020020002005360204200020043602000c020b2005450d002004102c0b20034100360230200342013703282003410b36023c2003200341086a3602382003200341286a360244200341dc006a41013602002003420137024c200341d0b0c2003602482003200341386a360258200341c4006a41c49ac500200341c8006a10391a2003350230422086200335022884100420004100360200200328022c450d002003280228102c0b2002450d002001102c0b200341e0006a24000be006010d7f23004190016b220224002002412036021420022001360210200241186a2001ad42808080808004841003108d0102400240200228021822030d00200041003602000c010b200228021c21042002200241206a28020036023c20022003360238200241086a200241386a1075024002400240024020022802080d0002400240200228023c22014160712205417f4c0d00200228020c210602400240200141057622070d00410121080c010b2005102a2208450d020b02402006450d004100210903402001210a200241003a0088012009220b41016a2109410021010240024002400340200a2001460d01200241e8006a20016a200228023822052d00003a00002002200541016a3602382002200141016a22053a0088012005210120054120470d000b200241c8006a41186a220c200241e8006a41186a290300370300200241c8006a41106a220d200241e8006a41106a290300370300200241c8006a41086a220e200241e8006a41086a290300370300200220022903683703482007200b470d020240200b41017422012009200120094b1b220741ffffff3f712007470d002007410574220141004e0d020b1035000b2002410036023c0240200141ff0171450d00200241003a0088010b200241003602282007450d072008102c0c070b02400240200b0d002001102a21080c010b2008200b4105742001102e21080b2008450d040b200a20056b21012008200b4105746a220b2002290348370000200b41186a200c290300370000200b41106a200d290300370000200b41086a200e29030037000020092006470d000b200241306a20063602002002200736022c200220083602282002200a20056b36023c0c050b200241306a20063602002002200736022c2002200836022820080d040c030b103a000b1033000b200241003602280b20024100360250200242013703482002410b36022c2002200241106a3602282002200241c8006a360244200241fc006a41013602002002420137026c200241d0b0c2003602682002200241286a360278200241c4006a41c49ac500200241e8006a10391a2002350250422086200235024884100420004100360200200228024c450d012002280248102c0c010b20002002290328370200200041086a200241286a41086a2802003602000b2004450d002003102c0b20024190016a24000b8f0201057f230041106b22032400024002400240200141046a2204417f4c0d000240024020040d00410121050c010b2004102a2205450d020b2003410036020820032004360204200320053602002001200310670240024020032802042206200328020822056b2001490d00200328020021040c010b200520016a22042005490d03200641017422072004200720044b1b22074100480d030240024020060d002007102a21040c010b200328020020062007102e21040b2004450d022003200736020420032004360200200721060b200420056a2000200110db051a2002290200200520016aad4220862004ad84100102402006450d002004102c0b200341106a24000f0b103a000b1033000b1035000bd46109027f017e047f027e047f017e0c7f0c7e117f230041900a6b2203240002400240024002400240024002400240024002400240024002400240024002400240024002400240024020012d00000e06000102030405000b200341c4026a4101360200200342013702b402200341fcc4c5003602b002200341043602b406200341f4c4c5003602b0062003200341b0066a3602c002200341b0026a4184c5c5001041000b200141e0006a2802002104200341b0066a200141086a41d80010db051a200341f8046a41186a200141fc006a28020036020020034188056a200141f4006a290200370300200341f8046a41086a200141ec006a2902003703002003200141e4006a2902003703f804024020022d000120022d000072450d0041b2b2c0002104411121020c110b41e4d2c500ad42808080808001842205100222022f0000210620022d000221072002280003210820022d000721092002290008210a2002102c41f4d2c500ad4280808080f00184220b100222022f0000210c20022d0002210d2002280003210e20022d0007210f200229000821102002102c20032010370390042003200f3a008f042003200e4118763a008e042003200e4108763b018c042003200e3a008b042003200d3a008a042003200c3b0188042003200a4238883c0087042003200a4230883c0086042003200a4220883d0184042003200a4218883c0083042003200a4210883c0082042003200a3d018004200320093a00ff03200320083600fb03200320073a00fa03200320063b01f803200341b0026a200341f8036a10e7030240410020032802880320032d00a0034102461b2004490d0041b1b3c4002104413521020c110b200341bc026a2004360200200341b0026a41086a41033a00002003410d3a00b00241014100200341b0026a109201200341b0026a200341b0066a41d80010db051a20034194036a200341f8046a41086a2903003702002003419c036a20034188056a290300370200200341a4036a200341f8046a41186a2802003602002003200436028803200320032903f80437028c032005100222022f0000210e20022d000221062002280003210720022d000721082002290008210a2002102c200b100222022f0000210920022d0002210c2002280003210420022d0007210d200229000821102002102c20032010370390042003200d3a008f04200320044118763a008e04200320044108763b018c04200320043a008b042003200c3a008a04200320093b0188042003200a4238883c0087042003200a4230883c0086042003200a4220883d0184042003200a4218883c0083042003200a4210883c0082042003200a3d018004200320083a00ff03200320073600fb03200320063a00fa032003200e3b01f803200341003602d008200342013703c808200341b0026a200341c8086a10e90220032802cc082102200341f8036aad428080808080048420033502d00842208620032802c8082204ad84100102402002450d002004102c0b410021040c0f0b2001410c6a2802002111200141086a2802002107200141046a2802002109200141106a290300210a2002411a6a2901002110200241196a2d00002112200241186a2d00002113200241166a2f01002114200241156a2d00002115200241146a2d00002116200241126a2f01002117200241116a2d00002118200241106a2d000021082002410e6a2f0100210c2002410d6a2d0000210d2002410c6a2d0000210f2002410a6a2f01002119200241096a2d0000211a200241046a2d0000211b41022104200241026a2f0100211c0240024020022d00000d0020022d00014101470d00200241056a2d00002104200241066a2f0100210e200241086a2d00002102410021060c010b41012106410021024100210e0b200e41ffff0371410874200241187472200441ff017172210e02402006450d0041d6b2c0002104410f21020240024002400240200e0e050001020312000b2019410874201a72200f411874722104200c410874200d7220084118747221020c110b41dd8cc6002104410e21020c100b41c3b2c0002104411321020c0f0b41b2b2c0002104411121020c0e0b200320103703e008200320123a00df08200320133a00de08200320143b01dc08200320153a00db08200320163a00da08200320173b01d808200320183a00d708200320083a00d6082003200c3b01d4082003200d3a00d3082003200f3a00d208200320193b01d0082003201a3a00cf082003200e3600cb082003201b3a00ca082003201c3b01c80841e4d2c500ad4280808080800184100222022f0000210420022d0002210e2002280003210620022d00072108200229000821102002102c41b7e4c300ad4280808080800184100222022f0000210c20022d0002210d2002280003210f20022d00072119200229000821052002102c200320053701c806200320193a00c7062003200f3600c3062003200d3a00c2062003200c3b01c006200320103701b806200320083a00b706200320063600b3062003200e3a00b206200320043b01b006200341c0006a200341b0066a4120109e01420021050240024020032903484201200328024022021b2210200341d0006a290300420020021b220b8450450d004200211d0c010b200341206a200b4200200a420010e005200341306a20104200200a420010e005200341106a420042002010420010e00502402003290328200329031884420052200341386a2903002205200329032020032903107c7c221d20055472450d0041a7c4c1002104412721020c0f0b200329033021050b200341b0026a200341c8086a2005201d410810ac01024020032802b0024101470d0020032802b802210220032802b40221040c0e0b4110210e200341b0026a41106a290300211e20032903b802211f41e4d2c500ad4280808080800184100222022f0000210620022d000221082002280003210c20022d0007210d200229000821052002102c41f4d2c500ad4280808080f00184100222022f0000210f20022d000221192002280003210420022d0007211a2002290008211d2002102c2003201d370390042003201a3a008f04200320044118763a008e04200320044108763b018c04200320043a008b04200320193a008a042003200f3b018804200320054238883c008704200320054230883c008604200320054220883d018404200320054218883c008304200320054210883c008204200320053d0180042003200d3a00ff032003200c3600fb03200320083a00fa03200320063b01f803200341b0026a200341f8036a10e70320032903b002210520032903b802212020032903c002212120032903c802212220032903d002212320032903d802212420032903e002212520032903e802212620032903f002212720032903f8022128200329038003211d200328028803210d200328028c0321042003280290032106200328029403210f2003280298032108200328029c03210c20032d00a00321022003200341b0026a41f4006a2800003600fb03200320032800a1033602f8030240024020024102470d0042012105200342013703f806200342af013703f00620034287013703e806200342013703e006200342013703d806200342013703d006200342013703c806200342013703c006200342013703b806200342013703b0064100210220034100360288074120210c418080012108418080042106410421044201211d0c010b200341b0066a41f4006a20032800fb033600002003200d36028807200320283703f806200320273703f006200320263703e806200320253703e006200320243703d806200320233703d006200320223703c806200320213703c006200320203703b806200320053703b006200320032802f8033600a107200f210e0b2003200542002011ad2220420010e005200320023a00a0072003200c36029c0720032008360298072003200e3602940720032006360290072003200436028c072003201d370380074200200a427f200329030020032903084200521b7d22052005200a5622021b210502402002450d0041bbe8c2002104412c21020c0c0b200341b0026a20092011200341b0066a10ff03024020032802b0024101470d00200341b8026a280200210220032802b40221040c0c0b200341e8076a41186a2204200341b0026a410472220241186a280200360200200341e8076a41106a2206200241106a290200370300200341e8076a41086a2208200241086a290200370300200320022902003703e807200341f8046a41186a220e20204220862009ad841006220241186a290000370300200341f8046a41106a220d200241106a290000370300200341f8046a41086a220f200241086a290000370300200320022900003703f8042002102c20034192026a221920032d00fa043a0000200341d8096a41086a221a200341f8046a41136a290000370300200341e5096a2212200e290000370000200320032f01f8043b01900220032003290083053703d80920032800fb04210c20032800ff042102200341f8036a41186a2004280200360200200341f8036a41106a2006290300370300200341f8036a41086a22062008290300370300200320032903e8073703f803200320023600b7022003200c3600b302200320192d00003a00b202200320032f0190023b01b002200341b0026a41136a201a290300370000200341b0026a41186a2012290000370000200320032903d8093700bb0241e4d2c500ad428080808080018410022204290008211d20042d000721082004280003211920042d0002211a20042f000021122004102c419ee4c300ad4280808080b0018410022204290008212020042d000721132004280003211420042d0002211520042f000021162004102c200341f8046a200341b0026a109f0141c000102a2204450d0320042020370018200420133a001720042014360013200420153a0012200420163b00102004201d370008200420083a0007200420193600032004201a3a0002200420123b0000200420032903f804370020200441286a200f290300370000200441306a200d290300370000200441386a200e290300370000200341003602b802200342013703b002200341f8036a200341b0026a108901200341f8036a410472200341b0026a1089012006200341b0026a10890120032d00900421080240024020032802b40220032802b802220e460d0020032802b00221060c010b200e41016a2206200e490d05200e410174220d2006200d20064b1b220d4100480d0502400240200e0d00200d102a21060c010b20032802b002200e200d102e21060b2006450d042003200d3602b402200320063602b0020b2003200e41016a3602b8022006200e6a20083a0000200328028404210f2003418c046a2802002206200341b0026a10670240024020032802b402220d20032802b80222086b2006490d0020032802b002210e0c010b200820066a220e2008490d05200d4101742219200e2019200e4b1b22194100480d0502400240200d0d002019102a210e0c010b20032802b002200d2019102e210e0b200e450d04200320193602b4022003200e3602b0022019210d0b200e20086a200f200610db051a2004ad4280808080800884200820066aad422086200ead8410010240200d450d00200e102c0b2004102c024020034188046a280200450d00200f102c0b200341c3026a200341d8096a41086a290300370000200341b0026a41186a200341e5096a290000370000200320032f0190023b01b002200320023600b7022003200c3600b302200320032903d8093700bb02200320034192026a2d00003a00b20241e4d2c500ad428080808080018410022204290008211d20042d0007210e2004280003210620042d0002210820042f0000210d2004102c4192e4c300ad4280808080c0018410022204290008212020042d0007210f2004280003211920042d0002211a20042f000021122004102c200341f8046a200341b0026a109f0141c000102a2204450d03200420203700182004200f3a0017200420193600132004201a3a0012200420123b00102004201d3700082004200e3a000720042006360003200420083a00022004200d3b0000200420032903f804370020200441286a200341f8046a41086a290300370000200441306a200341f8046a41106a290300370000200441386a200341f8046a41186a290300370000200341c0003602b402200320043602b00220092011200341b0026a10f1022004102c02402007450d002009102c0b200341f8036a41026a20034190026a41026a2d000022043a0000200341f8046a41086a220e200341d8096a41086a290300370300200341f8046a410d6a2206200341d8096a410d6a290000370000200320032f01900222073b01f803200320032903d8093703f804200341b0026a41086a41023a0000200341b9026a20073b0000200341bb026a20043a0000200341b0026a41106a2002360200200341bc026a200c3602002003410d3a00b002200341c4026a20032903f804370200200341cc026a200e290300370200200341d1026a20062900003700004100210441014100200341b0026a109201200341c8086a200a20052010200b201f201e10b9020c0c0b200141c0006a2903002110200141386a29030021052002411a6a290100210b200241196a2d00002129200241186a2d0000212a200241166a2f0100212b200241156a2d0000212c200241146a2d0000212d200241126a2f0100212e200241116a2d0000212f200241106a2d000021302002410e6a2f010021312002410d6a2d000021322002410c6a2d000021332002410a6a2f01002134200241096a2d00002135200241046a2d0000213641022104200241026a2f01002137200141306a28020021382001412c6a2802002108200141286a28020021092001411d6a290000210a2001411c6a2d0000210c2001411b6a2d0000210d200141196a2f0000210f200141186a2d00002119200141176a2d0000211a200141156a2f00002112200141146a2d00002113200141136a2d00002114200141116a2f00002115200141106a2d000021162001410f6a2d000021172001410d6a2f000021182001410c6a2d0000211b200141086a280200210e200141076a2d0000211c200141056a2f00002111200141046a2d00002139200141c8006a290300211d0240024020022d00000d0020022d00014101470d00200241056a2d00002104200241066a2f01002106200241086a2d00002102410021070c010b4101210741002102410021060b200641ffff0371410874200241187472200441ff01717221060240024002402007450d0041d6b2c0002104410f210202400240024020060e05000401020f000b20344108742035722033411874722104203141087420327220304118747221020c0e0b41c3b2c0002104411321020c0d0b41b2b2c0002104411121020c0c0b203941ff01714101470d01200341b0026a200e41067610910220032802b00221040240024020032802b802200e413f7122024b0d00410021020c010b200420024105746a2202290018210a20022d0017210c20022d0016210d20022f0014210f20022d0013211920022d0012211a20022f0010211220022d000f211320022d000e211420022f000c211520022d000b211620022d000a211720022f0008211820022d0007211b2002280003210e20022d0002211c20022f00002111410121020b024020032802b402450d002004102c0b20020d010b41dd8cc6002104410e21020c0a0b2003200a370390042003200c3a008f042003200d3a008e042003200f3b018c04200320193a008b042003201a3a008a04200320123b018804200320133a008704200320143a008604200320153b018404200320163a008304200320173a008204200320183b0180042003201b3a00ff032003200e3600fb032003201c3a00fa03200320113b01f8032003200b3703c806200320293a00c7062003202a3a00c6062003202b3b01c4062003202c3a00c3062003202d3a00c2062003202e3b01c0062003202f3a00bf06200320303a00be06200320313b01bc06200320323a00bb06200320333a00ba06200320343b01b806200320353a00b706200320063600b306200320363a00b206200320373b01b006200341c8026a200329039004370300200341b0026a41106a200329038804370300200341b0026a41086a200329038004370300200320032903f8033703b002200320383602d008200320083602cc08200320093602c808200341f8046a200341b0066a200341b0026a20052010201d200341c8086a10d503024020032802f8044101460d00200341f8046a41086a280200450d0820032802fc04102c0c080b20032802fc042204450d07200341f8046a41086a2802002102200341f8046a41106a280200450d0820034184056a280200102c0c080b200141386a2903002105200141306a290300210b200141c0006a290300210a200341d0016a41186a200141196a290000370300200341d0016a41106a200141116a290000370300200341d0016a41086a200141096a290000370300200320012900013703d0012002411a6a2901002110200241196a2d00002112200241186a2d00002113200241166a2f01002114200241156a2d00002115200241146a2d00002116200241126a2f01002117200241116a2d00002118200241106a2d000021092002410e6a2f0100210c2002410d6a2d0000210d2002410c6a2d0000210f2002410a6a2f01002119200241096a2d0000211a200241046a2d0000211b41022104200241026a2f0100211c2001412c6a2802002111200141286a280200210e200141246a28020021080240024020022d00000d0020022d00014101470d00200241056a2d00002104200241066a2f01002106200241086a2d00002102410021070c010b4101210741002106410021020b200641ffff0371410874200441ff017172200241187472210602402007450d0041d6b2c0002104410f21020240024002400240024020060e050001020304000b2019410874201a72200f411874722104200c410874200d7220094118747221020c030b41dd8cc6002104410e21020c020b41c3b2c0002104411321020c010b41b2b2c0002104411121020b200e450d062008102c0c060b2003201037038802200320123a008702200320133a008602200320143b018402200320153a008302200320163a008202200320173b018002200320183a00ff01200320093a00fe012003200c3b01fc012003200d3a00fb012003200f3a00fa01200320193b01f8012003201a3a00f701200320063600f3012003201b3a00f2012003201c3b01f00141e4d2c500ad4280808080800184100222022f0000210420022d000221062002280003210720022d00072109200229000821102002102c41b7e4c300ad4280808080800184100222022f0000210c20022d0002210d2002280003210f20022d000721192002290008211d2002102c2003201d3701c806200320193a00c7062003200f3600c3062003200d3a00c2062003200c3b01c006200320103701b806200320093a00b706200320073600b306200320063a00b206200320043b01b006200341a0016a200341b0066a4120109e014200211d024002400240024020032903a801420120032802a00122021b2210200341b0016a290300420020021b221f8450450d004200211e0c010b20034180016a201f4200200a420010e00520034190016a20104200200a420010e005200341f0006a420042002010420010e005024020032903880120032903788442005220034198016a290300221d20032903800120032903707c7c221e201d5472450d004127210241a7c4c10021040c020b200329039001211d0b200341b0026a200341f0016a201d201e410810ac0120032802b0024101470d0120032802b802210220032802b40221040b200e450d062008102c0c060b41102106200341b0026a41106a290300211e20032903b802211d20034190026a41186a201f370300200320103703a0022003200a370398022003200a3703900241e4d2c500ad4280808080800184100222022f0000210720022d000221092002280003210c20022d0007210d2002290008210a2002102c41f4d2c500ad4280808080f00184100222022f0000210f20022d000221192002280003210420022d0007211a200229000821102002102c20032010370390042003201a3a008f04200320044118763a008e04200320044108763b018c04200320043a008b04200320193a008a042003200f3b0188042003200a4238883c0087042003200a4230883c0086042003200a4220883d0184042003200a4218883c0083042003200a4210883c0082042003200a3d0180042003200d3a00ff032003200c3600fb03200320093a00fa03200320073b01f803200341b0066a200341f8036a10e70320032903b006211020032903b806211f20032903c006212020032903c806212120032903d006212220032903d806212320032903e006212420032903e806212520032903f006212620032903f8062127200329038007210a200328028807210d200328028c0721042003280290072107200328029407210f2003280298072109200328029c07210c20032d00a00721022003200341b0066a41f4006a2800003600fb03200320032800a1073602f8030240024020024102470d004201210a200342013703f802200342af013703f00220034287013703e802200342013703e002200342013703d802200342013703d002200342013703c802200342013703c002200342013703b802200342013703b0024100210220034100360288034120210c418080012109418080042107410421040c010b200341b0026a41f4006a20032800fb033600002003200d36028803200320273703f802200320263703f002200320253703e802200320243703e002200320233703d802200320223703d002200320213703c802200320203703c0022003201f3703b802200320103703b002200320032802f8033600a103200f21060b200341b0036a4200370300200341e0036a4200370300200341d0036a4200370300200341c0036a4200370300200320023a00a0032003200c36029c032003200936029803200320063602940320032007360290032003200436028c032003200a370380032003428080e983b1de163703a80320034280a094a58d1d3703d80320034280a094a58d1d3703c80320034280a094a58d1d3703b803200342a08080808080103703e8032003200341b0026a3602f0032003200341b0026a3602f403200341f8046a41186a2204200341f0016a41186a290300370300200341f8046a41106a2206200341f0016a41106a290300370300200341f8046a41086a2207200341f0016a41086a290300370300200320032903f0013703f80441f9e8c500ad4280808080900184100222022f0000210920022d0002210c2002280003210d20022d0007210f2002290008210a2002102c419db1c200ad42808080803084100222022f0000211920022d0002211a2002280003211220022d00072113200229000821102002102c200320103701c806200320133a00c706200320123600c3062003201a3a00c206200320193b01c0062003200a3701b8062003200f3a00b7062003200d3600b3062003200c3a00b206200320093b01b006200341e0006a200341b0066a1098012003290368210a200328026021094191b0c200ad4280808080e00084100222022f0000210c20022d0002210d2002280003210f20022d00072119200229000821102002102c41acb0c200ad4280808080e00084100222022f0000211a20022d000221122002280003211320022d000721142002290008211f2002102c2003201f3701c806200320143a00c706200320133600c306200320123a00c2062003201a3b01c006200320103701b806200320193a00b7062003200f3600b3062003200d3a00b2062003200c3b01b006200341d8006a200341b0066a4120109401200341b0046a4200370300200341f8036a412c6a41c0ecc1003602004101211b200341f8036a41286a410136020020034194046a41d0e1c100360200200341d0046a2007290300370300200341d8046a2006290300370300200341e0046a2004290300370300200341f8036a41206a42003703002003428080808080013703a8042003420037038004200320032903f8043703c80441002118200341003602900420032802582102200328025c21042003200341f4036a3602c0042003200341f0036a3602bc042003200341b0026a3602b80420032004410020021b3602c4042003200a420020091b3703f80320032011360280052003200e3602fc04200320083602f804200341b0066a200341f8036a200b200520034190026a200341d0016a200341f8046a10dd0220032802b0064101470d03200341b0066a41106a28020022114108762139200341bc066a2802002130200341b0066a41086a280200210220032802b406211c410121184101211b0c040b200141216a2d00002116200341e8076a41186a200141196a290000370300200341e8076a41106a200141116a290000370300200341e8076a41086a200141096a290000370300200320012900013703e807200341c8086a41186a2001413a6a290000370300200341c8086a41106a200141326a290000370300200341c8086a41086a2001412a6a2900003703002003200141226a2900003703c808200341b0026a41086a2002411e6a2801003602002003200241166a2901003703b00220022800012106200241156a2d00002107200241146a2d00002108200241126a2f01002109200241116a2d0000210c200241106a2d0000210d2002410e6a2f0100210f2002410d6a2d000021192002410c6a2d0000211a2002410a6a2f01002112200241096a2d00002113200241056a280000210e0240024020022d00002215450d00200e4118762117200e410876211841002114200341b0026a21022006211b0c010b20064118762115200341b0026a410472210241012114200e211b2013210e20122118201a211720192113200f2112200d211a200c21192009210f2008210d2007210c20032f01b002210920032d00b202210820032d00b30221070b2002290100210a200341f8036a41186a200341c8086a41186a290300370300200341f8036a41106a200341c8086a41106a290300370300200341f8036a41086a200341c8086a41086a290300370300200320032903c8083703f80341e6b3c400210441e90021022014450d0c02400240201641ff01714101460d00200641ff01714101470d0e20064108762102410221060c010b200641ff01714102470d0d41002106200329039004210a20032d008f04210720032d008e04210820032f018c04210920032d008b04210c20032d008a04210d20032f018804210f20032d008704211920032d008604211a20032f018404211220032d008304211320032d008204211720032f018004211820032d00ff03210e20032800fb03211b20032d00fa03211520032f01f80321020b2003200a37039005200320073a008f05200320083a008e05200320093b018c052003200c3a008b052003200d3a008a052003200f3b018805200320193a0087052003201a3a008605200320123b018405200320133a008305200320173a008205200320183b0180052003200e3a00ff042003201b3600fb04200320153a00fa04200320023b01f80441002104200341b0026a200341e8076a2006410010e30220032d00b0022102024020032d00b8020d00200341d4026a280200450d00200341d0026a280200102c0b200241ff01714101470d0b200341b0026a200341f8046a42808086bdbacdd21a420010b801024020032802b0024101470d0020032802b802210220032802b40221040c0d0b200341b0026a41106a290300211020032903b8022105418be9c500ad4280808080800184220a100222022f0000210e20022d000221062002280003210720022d000721082002290008210b2002102c41c9b5c000ad4280808080d00184221d100222022f0000210920022d0002210c2002280003210d20022d0007210f2002290008211f2002102c2003201f3701c8062003200f3a00c7062003200d3600c3062003200c3a00c206200320093b01c0062003200b3701b806200320083a00b706200320073600b306200320063a00b2062003200e3b01b006200341b8016a200341b0066a4120109e01200341b8016a41106a290300210b20032903c001211f20032802b801210e200a100222022f0000210620022d000221072002280003210820022d000721092002290008210a2002102c201d100222022f0000210c20022d0002210d2002280003210f20022d000721192002290008211d2002102c2003201d3701c806200320193a00c7062003200f3600c3062003200d3a00c2062003200c3b01c0062003200a3701b806200320093a00b706200320083600b306200320073a00b206200320063b01b0062003427f2010200b4200200e1b220a7c2005201f4200200e1b22107c22052010542202ad7c221020022010200a542010200a511b22021b370380042003427f200520021b3703f803200341b0066aad4280808080800484200341f8036aad428080808080028410010c0b0b1033000b1035000b200341e0066a28020022114108762139200341b0066a412c6a2802002130200341b0066a41286a2802002102200341d4066a280200211c201141ff01710d00200341b0066a41086a20034198046a290300370300200341f8046a41086a200341bc066a28020036020020032003290390043703b006200320032902b4063703f804200341880a6a200341f8046a10f10141002118410021114100211b0b200341f0016a20032903900220032903980220032903a00220034190026a41186a290300201d201e10b90220032802b404210e20032802b0042106200320032802ac0422043602f004200320063602ec04200320043602e80420032004200e41b8016c6a220f3602f4040240200e450d00200341c8086a4101722114200341ef076a2115200341e8076a4102722107200341b0066a41106a2116200341d8066a211320034194076a211a200341f1066a2108200341d1066a2109200341b0066a4101722119200341a8076a2117034020042d0000210e200341f8046a200441016a41b70110db051a02400240200e4103460d002003200e3a00b0062019200341f8046a41b70110db0521060240024002400240200e0e03000102000b20032802b806210d20032802bc06210620032802b406210e2015201641d80010db051a2003410d3a00c8082014200341e8076a41df0010db051a200e2006200341c8086a109201410121064100210c0240200d450d00200e102c0b4100210d0c020b20032f00b106210e20032d00b306210c20032802b406210d20032d00b806211220032900b906210a20032900c106211020032900c9062105200341c8086a201341900110db051a20072006290000370000200741086a200641086a290000370000200741106a200641106a290000370000200741186a200641186a29000037000020034180023b01e807200341d8096a200341c8086a200341e8076a10c102200320032d00e0094102463a00f108200320053700e908200320103700e1082003200a3700d908200320123a00d8082003200d3602d4082003200c3a00d3082003200e3b00d108200341043a00d0082003410d3a00c808410021064101210c41014100200341c8086a1092014100210d0c010b2017290300210a20032903a0072110200341d8096a41186a200641186a290000370300200341d8096a41106a200641106a290000370300200341d8096a41086a200641086a290000370300200320062900003703d809200341e8076a41186a200941186a290000370300200341e8076a41106a200941106a290000370300200341e8076a41086a200941086a290000370300200320092900003703e807200341c8086a41186a200841186a290000370300200341c8086a41106a200841106a290000370300200341c8086a41086a200841086a290000370300200320082900003703c808200341f8096a41086a201a41086a2802003602002003201a2902003703f809200341d8096a200341e8076a200341c8086a2010200a200341f8096a10c6044101210c410121064101210d0b024020032d00b006220e41014b0d0002400240200e0e020001000b200c450d03024020032802b806450d0020032802b406102c0b20032d00c0064105490d0320032802e806450d0320032802e406102c0c030b2006450d0220131092020c020b200d20032802980745720d01200328029407102c0c010b2003200441b8016a3602f0040c020b200441b8016a2204200f470d000b2003200f3602f0040b200341e8046a107202402003280284042204450d0020034188046a280200450d002004102c0b0240201b450d00200341f8036a411c6a2802002104200328029c0421080240024020032802980422060d002004210e0c010b200621072004210e0340200e2802880b210e2007417f6a22070d000b0340200420042f01064102746a41880b6a28020021042006417f6a22060d000b0b200341b0066a411c6a20042f0106360200200341c8066a4100360200200341c4066a2004360200200320083602d006200341003602c006200342003703b8062003200e3602b406200341003602b006200341b0066a10f9010b024020180d0041002104024020020d00410021020c020b201c102c0c010b0240201c0d00410021040c010b02402039410874201141ff017172450d002030102c0b201c21040b41002107410121060c080b410021040b41012107410021060c060b41012107410021062008450d052009102c0c050b02402007450d002009102c0b200341c8086a200a20052010200b201f201e10b9020b4100210841012106410121070c040b410021084101210602402007450d002009102c0b410121070c030b0b41012106410121070b410121080b024020012d0000417e6a220e41024b0d000240024002400240200e0e03000102000b2008450d03200141086a280200450d03200141046a280200102c0c030b20060d010c020b2007450d01200141286a280200450d01200141246a280200102c0c010b2001412c6a280200450d00200141286a280200102c0b2000200236020420002004360200200341900a6a24000b901008087f027e047f017e057f027e017f057e230022042105200441a0016b41607122042400024002400240200141ffffff3f712001470d0020014105742206417f4c0d000240024020060d00410121070c010b2006102a2207450d020b410021084100210602402001450d002001410574210820072106034020062000290000370000200641186a200041186a290000370000200641106a200041106a290000370000200641086a200041086a290000370000200641206a2106200041206a2100200841606a22080d000b200141057441606a41057641016a2106200121080b200420063602102004200836020c2004200736020820072006410041202006676b108903200441e0006a41186a22094200370300200441e0006a41106a220a4200370300200441e0006a41086a220b420037030020044200370360200441286a41086a220841cee5c200ad4280808080b00284220c1002220041086a290000370300200420002900003703282000102c200b200829030037030020042004290328370360200841e1e5c200ad42808080809001841002220041086a290000370300200420002900003703282000102c200a2004290328220d370300200441c0006a41086a220e200b290300370300200441c0006a41106a220f200d370300200441c0006a41186a221020082903003703002004200d3703900120042004290360370340200441e0006a200441c0006a412010d00120042802602200410120001b21112004290264420020001b2212422088a72200450d0220004105742113200441e0006a4114722114200441e0006a4108722115200441c0006a410c722116200441e0006a410c6a2117201121060340200641086a290000210d200641106a2900002118200629000021192009200641186a290000370300200a2018370300200b200d370300200420193703602008200c1002220041086a290000370300200420002900003703282000102c200441186a41086a2201200829030037030020042004290328370318200841f1e5c200ad4280808080e000841002220041086a290000370300200420002900003703282000102c20044190016a41086a220720082903003703002004200429032837039001200441c0006a200441e0006a109f0141c000102a2200450d0220002004290318370000200020042903900137001020002004290040370020200041086a2001290300370000200041186a2007290300370000200041286a200e290000370000200041306a200f290000370000200041386a2010290000370000200441e0006a200041c00010e5032008201741086a290200370300200441286a41106a221a201741106a28020036020020042017290200370328024020042802682201450d002004290360210d20162004290328370200201641086a2008290300370200201641106a201a2802003602002004200d3703400b20042001360248200441003602682004290358211920042004290378221b3703582004290350211c20042004290370221d3703502004290340211e2004200429036022183703402004290348210d20042004290368221f370348201fa7210102400240200da7221a0d00201f210d201d211c201b21190c010b2004201e3703602004200d3703682004201c370370200420193703782004201a201ca74105746a3602342004201a3602302004200d422088a736022c2004201a3602282004200441086a36023820044190016a200441286a108501201541086a200728020036020020152004290390013702002004201c422088a7221a2019422088a74105746a3602342004201a36023020042019a736022c2004201a3602282004200441086a36023820044190016a200441286a108501201441086a200728020036020020142004290390013702002004290368210d20042903602118200429037821192004290370211c02402001450d00201ba721070240201f422088a7450d002001102c0b2007450d00201d422088a7102c0b200420183703402004200d3703482004201c37035020042019370358200da721010b200420183703602004200d3703682004201c370370200da72107200420193703780240024020010d002000ad428080808080088410050c010b200441c00036022c20042000360228200441e0006a200441286a10fd030b02402007450d002019a721010240200d422088a7450d002007102c0b2001450d00201c422088a7102c0b200641206a21062000102c201341606a22130d000c030b0b103a000b1033000b02402012a7450d002011102c0b200441c0006a41186a4200370300200441c0006a41106a22014200370300200441c0006a41086a2206420037030020044200370340200441286a41086a220041cee5c200ad4280808080b002841002220841086a290000370300200420082900003703282008102c2006200029030037030020042004290328220d3703182004200d370340200041eae5c200ad4280808080f000841002220841086a290000370300200420082900003703282008102c20012004290328220d370300200441e0006a41086a2006290300370300200441e0006a41106a200d370300200441e0006a41186a20002903003703002004200d370390012004200429034037036020044100360248200442013703402003200441c0006a106702402003450d002003410574210003402002200441c0006a109101200241206a2102200041606a22000d000b0b20042802442100200441e0006aad4280808080800484200435024842208620042802402206ad84100102402000450d002006102c0b0240200428020c450d002004280208102c0b200524000bf71405177f017e017f027e047f230041206b220224000240024020014115490d00024002402001410176220341ffffff3f712003470d0020034105742204417f4c0d0041012105024002402004450d002004102a2205450d010b200041606a2106200041a07f6a210741002108410021094104210a4100210b2001210c034002400240200c220d417f6a220e0d004101210f4100210c0c010b0240024002400240024002402000200e4105746a200d410574221020006a41406a412010dd054100480d004102200d6b210e200720106a21044101210f03400240200e200f6a4101470d004100210c200d210f0c080b200f41016a210f200441206a2004412010dd052111200441606a21042011417f4a0d000b200d200f6b210e0c010b200720106a2104024003400240200e4101470d004100210e0c020b200e417f6a210e200441206a2004412010dd052111200441606a210420114100480d000b0b200d200e490d01200d20014b0d03200d200e6b220f4101762212450d00200620106a21042000200e4105746a21110340200241186a2210201141186a2213290000370300200241106a2214201141106a2215290000370300200241086a2216201141086a221729000037030020022011290000370300200441086a22182900002119200441106a221a290000211b200441186a220c290000211c201120042900003700002013201c3700002015201b37000020172019370000200c2010290300370000201a20142903003700002018201629030037000020042002290300370000200441606a2104201141206a21112012417f6a22120d000b0b0240200e0d00200e210c0c050b0240200f41094d0d00200e210c0c050b200d20014b0d01200d200e6b21122000200e4105746a21100340200d200e417f6a220c490d040240200d200c6b220f4102490d002000200e4105746a22042000200c4105746a220e412010dd05417f4a0d00200e2900002119200e2004290000370000200241186a2216200e41186a2211290000370300200241106a2217200e41106a2213290000370300200241086a2218200e41086a22142900003703002014200441086a2900003700002013200441106a2900003700002011200441186a29000037000020022019370300410121150240200f4103490d00200e41c0006a2002412010dd05417f4a0d00410221112010210402400340200441186a200441386a290000370000200441106a200441306a290000370000200441086a200441286a2900003700002004200441206a221329000037000020122011460d01200441c0006a21142011211520132104201141016a211120142002412010dd05417f4a0d020c000b0b201121150b200e20154105746a22042002290300370000200441186a2016290300370000200441106a2017290300370000200441086a20182903003700000b200c450d05201041606a2110201241016a2112200c210e200f410a4f0d050c000b0b200e200d1047000b200d200e417f6a220c490d010b200d2001103f000b200c200d1047000b0240200b2009470d0002400240200941016a22042009490d00200941017422112004201120044b1b220441ffffffff01712004470d002004410374221141004e0d010b1035000b0240024020090d002011102a210a0c010b200a20094103742011102e210a0b200a450d02200421092008210b0b200a200b4103746a2204200f3602042004200c360200200841016a220b21080240200b4102490d00024003400240024002400240200a200b417f6a22084103746a2204280200450d00200b410374200a6a220f41746a280200220e200428020422114d0d000240200b41024b0d00200b21084102210b200c450d0b0c080b200a200b417d6a22164103746a28020422042011200e6a4d0d010240200b41034b0d00200b21084103210b200c450d0b0c080b200f41646a2802002004200e6a4d0d01200b21080c060b200b4103490d0120042802042111200a200b417d6a22164103746a28020421040b20042011490d010b200b417e6a21160b024002400240024002400240200b201641016a221d4b221e450d00200b20164b221f450d01200a20164103746a2217280204222020172802006a2204200a201d4103746a2218280200221a490d02200420014b0d032000201a4105746a22142018280204221541057422116a210f2004410574210e2004201a6b220d20156b220420154f0d042005200f2004410574221110db05221320116a21120240024020154101480d00200441014e0d010b200f2104201321110c060b2006200e6a210e200f21040340200e200441606a220f201241606a220d200d200f412010dd0541004822101b2211290000370000200e41186a201141186a290000370000200e41106a201141106a290000370000200e41086a201141086a2900003700002012200d20101b211202402014200f200420101b2204490d00201321110c070b200e41606a210e2013211120132012490d000c060b0b41d087c600201d200b1038000b41d087c6002016200b1038000b201a20041047000b20042001103f000b20052014201110db05221320116a21120240024020154101480d00200d20154a0d010b20142104201321110c010b2000200e6a2110201321112014210403402004200f2011200f2011412010dd05410048220d1b220e290000370000200441186a200e41186a290000370000200441106a200e41106a290000370000200441086a200e41086a2900003700002011201141206a200d1b2111200441206a2104200f41206a200f200d1b220f20104f0d01201220114b0d000b0b20042011201220116b41607110db051a0240201f450d002017201a360200201741046a202020156a360200201e450d022018201841086a200b201d417f736a41037410dc051a2008210b200841014d0d030c010b0b41a888c6002016200b1038000b418ab4c000411d41acfec5001036000b200c450d030c000b0b1033000b103a000b02402009450d00200a102c0b2003450d012005102c0c010b20014102490d002001417f6a2111200141057420006a41206a2110410121120340024002400240024020112204417f6a221120014b0d00200120116b220e4102490d03200020044105746a2204200020114105746a220d412010dd05417f4a0d03200d2900002119200d2004290000370000200241186a2214200d41186a220f290000370300200241106a220b200d41106a2213290000370300200241086a2215200d41086a220a290000370300200a200441086a2900003700002013200441106a290000370000200f200441186a2900003700002002201937030041012104200e4103490d02200d41c0006a2002412010dd05417f4a0d0241002113201021040340200441406a220e200441606a220f290000370000200e41186a200f41186a290000370000200e41106a200f41106a290000370000200e41086a200f41086a29000037000020122013220e460d02200e417f6a211320042002412010dd05210f200441206a2104200f417f4a0d020c000b0b201120011047000b4102200e6b21040b200d20044105746a22042002290300370000200441186a2014290300370000200441106a200b290300370000200441086a20152903003700000b201041606a21102012417f6a211220110d000b0b200241206a24000ba00901177f230041206b220424002002410020031b21052000410020011b2106200241206a200220031b2107200041206a200020011b2108200020014105746a2109200220034105746a210a4100210b4100210c4101210d4100210e4100210f41012110024002400340200b4101742111200b41057421120240024002400340024020050d0020072113200d2114200c2115200b21160c020b2005210220072103200d2114200c2115200b2116201221172011211802400340024002402006450d0020022006460d0320022006412010dd052213450d032013417f4c0d01200321072014210d2015210c2016210b200221050c060b200441186a2203200541186a290000370300200441106a2216200541106a290000370300200441086a2206200541086a290000370300200420052900003703000240200b200c470d00200b41016a2202200b490d0a200b41017422172002201720024b1b220c41ffffff3f71200c470d0a200c41057422024100480d0a02400240200b0d002002102a210d0c010b200d200b4105742002102e210d0b200d450d090b200d200b4105746a22022004290300370000200241186a2003290300370000200241106a2016290300370000200241086a200629030037000041002106410020072007200a4622021b2105201141026a2111201241206a2112200b41016a210b2007200741206a20021b21070c030b200441186a2213200241186a290000370300200441106a2219200241106a290000370300200441086a221a200241086a29000037030020042002290000370300024020162015470d00201641016a22022016490d0920182002201820024b1b221541ffffff3f712015470d09201541057422024100480d090240024020160d002002102a21140c010b201420172002102e21140b2014450d080b201420176a22022004290300370000200241186a2013290300370000200241106a2019290300370000200241086a201a290300370000410020032003200a4622131b2102201841026a2118201741206a2117201641016a21162003200341206a20131b221321032002450d030c000b0b0b2014210d2015210c2016210b2003200341206a2003200a4622021b210741002008200820094622161b21064100200320021b21052008200841206a20161b21080c030b410021052006450d01201321072014210d2015210c2016210b0b200441186a2203200641186a290000370300200441106a2216200641106a290000370300200441086a2217200641086a290000370300200420062900003703000240200e200f470d00200e41016a2202200e490d04200e41017422062002200620024b1b220f41ffffff3f71200f470d04200f41057422024100480d0402400240200e0d002002102a21100c010b2010200e4105742002102e21100b2010450d030b2010200e4105746a22022004290300370000200241186a2003290300370000200241106a2016290300370000200241086a201729030037000041002008200820094622021b2106200e41016a210e2008200841206a20021b21080c010b0b201420162000200110f30202402015450d002014102c0b0240200f450d002010102c0b200441206a24000f0b1033000b1035000b896a07067f017e017f027e0f7f027e097f230041e0046b220324000240024002400240024002400240024002400240024002400240024002400240024020012d000022040e050001020304000b200341c4026a4101360200200342013702b402200341fcc4c5003602b002200341043602c403200341f4c4c5003602c0032003200341c0036a3602c002200341b0026a4184c5c5001041000b200141086a2802002104200141046a2802002105024020022d000120022d000072450d004111210241b2b2c00021062004450d0f2005102c0c0f0b20052001410c6a280200220210f402200341b0026a41186a22074200370300200341b0026a41106a22014200370300200341b0026a41086a22084200370300200342003703b002200341d0046a41086a220641cee5c200ad4280808080b0028422091002220a41086a2900003703002003200a2900003703d004200a102c20082006290300370300200320032903d0043703b002200641eae5c200ad4280808080f00084220b1002220a41086a2900003703002003200a2900003703d004200a102c200120032903d004220c370300200341c0036a41086a2008290300370300200341c0036a41106a200c370300200341c0036a41186a20062903003703002003200c370340200320032903b0023703c003200341b0026a200341c0036a412010d0012005200220032802b0022206410120061b220820032902b402420020061b220c422088a710f5020240200ca7450d002008102c0b2007420037030020014200370300200341b0026a41086a22084200370300200342003703b002200341d0046a41086a220620091002220a41086a2900003703002003200a2900003703d004200a102c20082006290300370300200320032903d004220c3703602003200c3703b0022006200b1002220a41086a2900003703002003200a2900003703d004200a102c200120032903d004220c370300200341c0006a41086a2008290300370300200341c0006a41106a200c370300200341c0006a41186a20062903003703002003200c370370200320032903b002370340200341003602b802200342013703b0022002200341b0026a106702402002450d00200241057421012005210203402002200341b0026a109101200241206a2102200141606a22010d000b0b20032802b4022102200341c0006aad428080808080048420033502b80242208620032802b0022201ad84100102402002450d002001102c0b4100210602402004450d002005102c0b0c0e0b200141046a28020021072002411a6a290100210c200241196a2d00002105200241186a2d00002108200241166a2f0100210a200241156a2d0000210d200241146a2d0000210e200241126a2f0100210f200241116a2d00002110200241106a2d000021112002410e6a2f010021122002410d6a2d000021132002410c6a2d000021142002410a6a2f01002115200241096a2d00002116200241046a2d0000211741022106200241026a2f010021180240024020022d00000d0020022d00014101470d00200241056a2d00002106200241066a2f01002119200241086a2d000021024100211a0c010b4101211a41002102410021190b2003200c3703c802200320053a00c702200320083a00c6022003200a3b01c4022003200d3a00c3022003200e3a00c2022003200f3b01c002200320103a00bf02200320113a00be02200320123b01bc02200320133a00bb02200320143a00ba02200320153b01b802200320163a00b702200320173a00b202200320183b01b0022003201941ffff0371410874200241187472200641ff01717222053600b3020240201a450d0041d6b2c0002106410f2102024002400240024020050e050001020310000b20032800b702210620032800bb0221020c0f0b41dd8cc6002106410e21020c0e0b41c3b2c0002106411321020c0d0b41b2b2c0002106411121020c0c0b20034180016a41186a200341b0026a41186a220629030037030020034180016a41106a200341b0026a41106a220529030037030020034180016a41086a200341b0026a41086a2202290300370300200320032903b00237038001200642003703002005420037030020024200370300200342003703b002200341d0046a41086a220641cee5c200ad4280808080b002841002220841086a290000370300200320082900003703d0042008102c20022006290300370300200320032903d0043703b002200641eae5c200ad4280808080f000841002220841086a290000370300200320082900003703d0042008102c200520032903d004220c370300200341c0036a41086a2002290300370300200341c0036a41106a200c370300200341c0036a41186a20062903003703002003200c370340200320032903b0023703c003200341b0026a200341c0036a412010d00120032902b402420020032802b00222021b220c422088a741057421062002410120021b220a210202400340024020060d00410021080c020b4101210820034180016a2002460d01200641606a2106200220034180016a412010dd052105200241206a210220050d000b0b0240200ca7450d00200a102c0b024020080d0041a0f7c2002106411521020c0c0b4100210a200341003602b802200342013703b0022007200341b0026a108b0120032802b4022106200341b0026a41186a220520033502b80242208620032802b002220fad841006220241186a290000370300200341b0026a41106a2208200241106a290000370300200341b0026a41086a220d200241086a290000370300200320022900003703b0022002102c200341a0016a41186a22022005290300370300200341a0016a41106a22052008290300370300200341a0016a41086a220e200d290300370300200320032903b0023703a00102402006450d00200f102c0b200341b0026a200741900110db051a200341c0036a410d6a20034180016a41086a290300370000200341c0036a41156a20034180016a41106a290300370000200341c0036a411d6a20034180016a41186a29030037000041012108200341013a00c40320032003290380013700c503200341023a00c003200341c0006a200341b0026a200341c0036a10c10220032d00482106200341b0026a410d6a200e290300370000200341b0026a41156a2005290300370000200341b0026a411d6a2002290300370000200341d5026a20064102463a0000200341053a00b402200341083a00b002200320032903a0013700b50241014100200341b0026a1092012007102c410021060c0c0b200141086a2802002107200141046a280200211b2002411a6a290100210c200241196a2d00002112200241186a2d00002113200241166a2f01002114200241156a2d00002115200241146a2d00002116200241126a2f01002117200241116a2d00002118200241106a2d0000210a2002410e6a2f0100210d2002410d6a2d0000210e2002410c6a2d0000210f2002410a6a2f01002110200241096a2d00002111200241046a2d0000211941022106200241026a2f0100211a0240024020022d00000d0020022d00014101470d00200241056a2d00002106200241066a2f01002105200241086a2d00002102410021080c010b4101210841002105410021020b200541ffff0371410874200641ff017172200241187472210502402008450d0041d6b2c0002106410f2102024002400240024020050e05000102030e000b2010410874201172200f411874722106200d410874200e72200a4118747221020c0d0b41dd8cc6002106410e21020c0c0b41c3b2c0002106411321020c0b0b41b2b2c0002106411121020c0a0b2003200c37039801200320123a009701200320133a009601200320143b019401200320153a009301200320163a009201200320173b019001200320183a008f012003200a3a008e012003200d3b018c012003200e3a008b012003200f3a008a01200320103b018801200320113a0087012003200536008301200320193a0082012003201a3b018001200341b0026a41186a4200370300200341b0026a41106a220a4200370300200341b0026a41086a22064200370300200342003703b002200341d0046a41086a220241cee5c200ad4280808080b002841002220541086a290000370300200320052900003703d0042005102c20062002290300370300200320032903d0043703b002200241eae5c200ad4280808080f000841002220541086a290000370300200320052900003703d0042005102c200a20032903d004220c370300200341c0036a41086a2006290300370300200341c0036a41106a200c370300200341c0036a41186a20022903003703002003200c370340200320032903b0023703c003200341b0026a200341c0036a412010d00120032902b402420020032802b00222021b220c422088a741057421062002410120021b220d210202400340024020060d00410021080c020b4101210820034180016a2002460d01200641606a2106200220034180016a412010dd052105200241206a210220050d000b0b0240200ca7450d00200d102c0b024020080d0041a0f7c2002106411521020c0a0b200341003602b802200342013703b0022007200341b0026a108b0120032802b402210d200341b0026a41186a220620033502b80242208620032802b0022210ad841006220241186a290000370300200341b0026a41106a2205200241106a290000370300200341b0026a41086a2208200241086a290000370300200320022900003703b0022002102c200341a0016a41186a22022006290300370300200341a0016a41106a220e2005290300370300200341a0016a41086a220f2008290300370300200320032903b0023703a0010240200d450d002010102c0b200620022903003703002005200e2903003703002008200f290300370300200320032903a0013703b002200341d0046a41086a220241cee5c200ad4280808080b002841002220641086a290000370300200320062900003703d0042006102c200341e0006a41086a2002290300370300200320032903d004370360200241fcf0c200ad4280808080a001841002220641086a290000370300200320062900003703d0042006102c200341f0006a41086a2002290300370300200320032903d004370370200341c0006a200341b0026a109f0141c000102a2202450d0120022003290360370000200241086a200341e0006a41086a29030037000020022003290370370010200241186a200341f0006a41086a29030037000020022003290340370020200241286a200341c0006a41086a290300370000200241306a200341d0006a290300370000200241386a200341c0006a41186a290300370000200341186a200241c000410141004100109701200328021821062002102c20064101460d0202400240201b4102490d0042002109200341c0006a41186a220e4200370300200341c0006a41106a220f4200370300200341c0006a41086a2206420037030020034200370340200341d0046a41086a220241cee5c200ad4280808080b00284220c1002220541086a290000370300200320052900003703d0042005102c20062002290300370300200320032903d004220b3703602003200b370340200241ace9c500ad4280808080d00184220b1002220541086a290000370300200320052900003703d0042005102c200f20032903d004221c370300200341b0026a41086a22052006290300370300200341b0026a41106a2208201c370300200341b0026a41186a220d20022903003703002003201c370370200320032903403703b002200341106a200341b0026a41201094012003280214211120032802102112200e4200370300200f420037030020064200370300200342003703402002200c1002221041086a290000370300200320102900003703d0042010102c20062002290300370300200320032903d004221c3703602003201c3703402002200b1002221041086a290000370300200320102900003703d0042010102c200e2002290300221c37030020052006290300370300200820032903d004221d370300200d201c3703002003201d370370200320032903403703b002200341086a200341b0026a412010940120032802082110200328020c2113200e4200370300200f420037030020064200370300200342003703402002200c1002220f41086a2900003703002003200f2900003703d004200f102c20062002290300370300200320032903d004221c3703602003201c3703402002200b1002220f41086a2900003703002003200f2900003703d004200f102c200e2002290300220b37030020052006290300370300200820032903d004221c370300200d200b3703002003201c370370200320032903403703b0024101210e2003201341016a410120101b3602c003200341b0026aad4280808080800484200341c0036aad4280808080c000841001200d42003703002008420037030020054200370300200342003703b0022002200c1002220f41086a2900003703002003200f2900003703d004200f102c20052002290300370300200320032903d0043703b002200241e1e5c200ad42808080809001841002220f41086a2900003703002003200f2900003703d004200f102c20062002290300220c370300200320032903d004220b370340200a200b370000200a41086a200c370000200341c0036a41086a2005290300370300200341c0036a41106a2008290300370300200341c0036a41186a200d290300370300200320032903b0023703c003200341b0026a200341c0036a412010d0010240024020032802b002220a0d0041002106410021020c010b20032902b4022209422088a721022009a72106200a210e0b200d200341a0016a41186a2903003703002008200341a0016a41106a2903003703002005200341a0016a41086a290300370300200320032903a0013703b0020240024020022006460d002006210d0c010b024020062009a7220d470d00200641016a22022006490d08200641017422052002200520024b1b220d41ffffff3f71200d470d08200d41057422024100480d080240024020060d002002102a210e0c010b200e20064105742002102e210e0b200e450d0520094280808080708321090b2009422088a721020b200e20024105746a220620032903b002370000200641186a200341b0026a41186a2205290300370000200641106a200341b0026a41106a2208290300370000200641086a200341b0026a41086a2206290300370000200542003703002008420037030020064200370300200342003703b002200341d0046a41086a220541cee5c200ad4280808080b002841002220a41086a2900003703002003200a2900003703d004200a102c20062005290300370300200320032903d004220c3703602003200c3703b002200541e1e5c200ad42808080809001841002220a41086a2900003703002003200a2900003703d004200a102c200820032903d004220c370300200341c0006a41086a2006290300370300200341c0006a41106a200c370300200341c0006a41186a20052903003703002003200c370370200320032903b00237034002400240200e0d00200341c0006aad428080808080048410050c010b200341003602b802200342013703b002200241016a2206200341b0026a106702402006450d00200241057441206a2106200e210203402003200341b0026a3602c0032002200341c0036a109402200241206a2102200641606a22060d000b0b20032802b4022102200341c0006aad428080808080048420033502b80242208620032802b0022206ad84100102402002450d002006102c0b200d450d00200e102c0b200341b0026a200741900110db051a200341c0036a41186a200341a0016a41186a290300370300200341c0036a41106a200341a0016a41106a290300370300200341c0036a41086a200341a0016a41086a290300370300200320032903a0013703c003200341d0046a41086a220241cee5c200ad4280808080b002841002220641086a290000370300200320062900003703d0042006102c200341e0006a41086a22052002290300370300200320032903d004370360200241fcf0c200ad4280808080a001841002220641086a290000370300200320062900003703d0042006102c200341f0006a41086a22062002290300370300200320032903d004370370200341c0006a200341c0036a109f0141c000102a2202450d0320022003290360370000200241086a200529030037000020022003290370370010200241186a200629030037000020022003290340370020200241286a200341c0006a41086a290300370000200241306a200341c0006a41106a290300370000200241386a200341c0006a41186a290300370000200341003602c803200342013703c003200341b0026a200341c0036a108b0120032802c40321062002ad428080808080088420033502c80342208620032802c0032205ad84100102402006450d002005102c0b2002102c200341b0026a1092024120102a2206450d032006200329038001370000200641186a20034180016a41186a2208290300370000200641106a20034180016a41106a220a290300370000200641086a20034180016a41086a220d290300370000200341dc036a4100360200200341cc036a428180808010370200200342013702d403200320063602c8032003201b3602c40320032011410020121b220e3602c003200341b0026a41186a200341a0016a41186a220f290300370300200341b0026a41106a200341a0016a41106a2210290300370300200341b0026a41086a200341a0016a41086a2211290300370300200320032903a0013703b002200341d0046a41086a220241cee5c200ad4280808080b002841002220541086a290000370300200320052900003703d0042005102c200341e0006a41086a22122002290300370300200320032903d004370360200241f1e5c200ad4280808080e000841002220541086a290000370300200320052900003703d0042005102c200341f0006a41086a22052002290300370300200320032903d004370370200341c0006a200341b0026a109f0141c000102a2202450d0320022003290360370000200241086a201229030037000020022003290370370010200241186a200529030037000020022003290340370020200241286a200341c0006a41086a290300370000200241306a200341c0006a41106a290300370000200241386a200341c0006a41186a290300370000200341c0003602b402200320023602b002200341c0036a200341b0026a10fd032002102c2006102c200341bd026a200d290300370000200341c5026a200a290300370000200341cd026a2008290300370000200341d5026a20032903a001370000200341dd026a2011290300370000200341e5026a2010290300370000200341ed026a200f290300370000200341fc026a201b360200200341f8026a200e360200200341003a00b402200341083a00b00220032003290380013700b502200341b0026a21020c010b200341b0026a41186a22084200370300200341b0026a41106a220d4200370300200341b0026a41086a22064200370300200342003703b002200341d0046a41086a220241cee5c200ad4280808080b002841002220541086a290000370300200320052900003703d0042005102c20062002290300370300200320032903d0043703b002200241eae5c200ad4280808080f000841002220541086a290000370300200320052900003703d0042005102c200341c0006a41086a2002290300220c370300200320032903d0042209370340200a2009370000200a41086a200c370000200341c0036a41086a2006290300370300200341c0036a41106a200d290300370300200341c0036a41186a2008290300370300200320032903b0023703c003200341206a200341c0036a412010d00102400240200328022022060d00410021020c010b2003290224220c422088a72102200ca7450d002006102c0b200341b0026a200741900110db051a200341cc036a2002360200200341c0036a41086a4101360200200341003a00c403200341023a00c003200341c0006a200341b0026a200341c0036a10c10220032d00482102200341bd026a200341a0016a41086a290300370000200341c5026a200341b0016a290300370000200341cd026a200341b8016a290300370000200341d5026a20024102463a0000200341043a00b402200341083a00b002200320032903a0013700b502200341b0026a21020b410021084101210a4101410020021092012007102c410021060c0b0b200141216a2d0000211b200141246a280200211a200341206a41186a200141196a290000370300200341206a41106a200141116a290000370300200341206a41086a200141096a290000370300200320012900013703202002411a6a290100210c200241196a2d00002111200241186a2d00002112200241166a2f01002113200241156a2d00002114200241146a2d00002115200241126a2f01002116200241116a2d00002117200241106a2d0000210a2002410e6a2f010021072002410d6a2d0000210d2002410c6a2d0000210e2002410a6a2f0100210f200241096a2d00002110200241046a2d0000211841022106200241026a2f010021190240024020022d00000d0020022d00014101470d00200241056a2d00002106200241066a2f01002105200241086a2d00002102410021080c010b4101210841002105410021020b200541ffff0371410874200641ff017172200241187472210502402008450d0041d6b2c0002106410f2102024002400240024020050e05000102030c000b200f410874201072200e4118747221062007410874200d72200a4118747221020c0b0b41dd8cc6002106410e21020c0a0b41c3b2c0002106411321020c090b41b2b2c0002106411121020c080b2003200c37039801200320113a009701200320123a009601200320133b019401200320143a009301200320153a009201200320163b019001200320173a008f012003200a3a008e01200320073b018c012003200d3a008b012003200e3a008a012003200f3b018801200320103a0087012003200536008301200320183a008201200320193b018001200341b0026a41186a4200370300200341b0026a41106a22074200370300200341b0026a41086a22064200370300200342003703b002200341d0046a41086a220241cee5c200ad4280808080b002841002220541086a290000370300200320052900003703d0042005102c20062002290300370300200320032903d0043703b002200241eae5c200ad4280808080f000841002220541086a290000370300200320052900003703d0042005102c200720032903d004220c370300200341c0036a41086a2006290300370300200341c0036a41106a200c370300200341c0036a41186a20022903003703002003200c370340200320032903b0023703c003200341b0026a200341c0036a412010d00120032902b402420020032802b00222021b220c422088a741057421062002410120021b220a210202400340024020060d00410021080c020b4101210820034180016a2002460d01200641606a2106200220034180016a412010dd052105200241206a210220050d000b0b0240200ca7450d00200a102c0b024020080d00418df8c2002106411221020c080b200341d0046a41086a220241cee5c200ad4280808080b002841002220641086a290000370300200320062900003703d0042006102c200341e0006a41086a22052002290300370300200320032903d004370360200241f1e5c200ad4280808080e000841002220641086a290000370300200320062900003703d0042006102c200341f0006a41086a22082002290300370300200320032903d004370370200341c0006a200341206a109f0141c000102a2206450d0020062003290360370000200641086a200529030037000020062003290370370010200641186a200829030037000020062003290040370020200641286a200341c0006a41086a29000037000041102102200641306a200341c0006a41106a290000370000200641386a200341c0006a41186a290000370000200341b0026a200641c00010e503200341cc026a2802002113200341b0026a41186a2802002111200341c4026a280200210a200341b0026a41106a280200211020032802bc02211220032802b802210f20032802b402211420032802b00221052006102c0240200f0d0041d4f7c2002106411321020c080b41e7f7c20021062005201a470d06201041057421064100211541002105200f21020240024003402006450d0220034180016a2002460d01200541016a2105200641606a2106200220034180016a412010dd052108200241206a210220080d000b20084541016a41017120056a417f6a21050b410121150b2013410574210d20034180016a200a6b210e410021164100210641002102024002400340200d2002460d02200e2002460d01200641016a2106200a20026a2108200241206a2102200820034180016a412010dd0522080d000b20084541016a41017120066a417f6a21060b410121160b024002400240201b41ff01710d002016450d010c080b20150d07200341b0026a41186a220820034180016a41186a290300370300200341b0026a41106a220d20034180016a41106a290300370300200341b0026a41086a220e20034180016a41086a29030037030020032003290380013703b0020240024020102012460d0020122105201021120c010b201241016a22022012490d06201241017422052002200520024b1b220541ffffff3f712005470d06200541057422024100480d060240024020120d002002102a210f0c010b200f20124105742002102e210f0b200f450d030b200f20124105746a220220032903b002370000200241186a2008290300370000200241106a200d290300370000200241086a200e290300370000201041016a21102016450d01201320064d0d04200a2013417f6a22134105746a2202290000210c200229000821092002290010210b200a20064105746a220641186a200241186a2900003700002006200b370010200620093700082006200c3700000c010b200329039801210c20032d009701210820032d009601210d20032f019401210e20032d009301211620032d009201211720032f019001211820032d008f01211920032d008e01211e20032f018c01211f20032d008b01212020032d008a01212120032f018801212220032d0087012123200328008301212420032d008201212520032f01800121260240024020132011460d0020112106201321110c010b201141016a22022011490d05201141017422062002200620024b1b220641ffffff3f712006470d05200641057422024100480d050240024020110d002002102a210a0c010b200a20114105742002102e210a0b200a450d020b200a20114105746a2202200c370018200220083a00172002200d3a00162002200e3b0014200220163a0013200220173a0012200220183b0010200220193a000f2002201e3a000e2002201f3b000c200220203a000b200220213a000a200220223b0008200220233a000720022024360003200220253a0002200220263b0000201341016a211302402015450d00201020054d0d06200f2010417f6a22104105746a2202290000210c200229000821092002290010210b200f20054105746a220541186a200241186a2900003700002005200b370010200520093700082005200c3700000b20062111201221050b200341d5026a2003290320370000200341c5026a20034180016a41106a290300370000200341cd026a20034180016a41186a290300370000200341e5026a200341206a41106a290300370000200341ed026a200341206a41186a290300370000200341083a00b002200341bd026a20034180016a41086a290300370000200341dd026a200341206a41086a290300370000200341013a00b40220032003290380013700b502200341fc026a2013360200200341f8026a2010360200200341f5026a201b3a00004100210641014100200341b0026a109201200341b0026a41186a220e4200370300200341b0026a41106a22124200370300200341b0026a41086a22084200370300200342003703b002200341d0046a41086a220241cee5c200ad4280808080b002841002220d41086a2900003703002003200d2900003703d004200d102c20082002290300370300200320032903d0043703b002200241eae5c200ad4280808080f000841002220d41086a2900003703002003200d2900003703d004200d102c200341c0006a41086a2002290300220c370300200320032903d004220937034020072009370000200741086a200c370000200341c0036a41086a2008290300370300200341c0036a41106a2012290300370300200341c0036a41186a200e290300370300200320032903b0023703c003200341a0016a200341c0036a412010d001024020032802a0012202450d0020032902a401220c422088a72106200ca7450d002002102c0b02400240201020144f22020d004100200620136b2208200820064b1b2014490d00200341cc026a2013360200200341b0026a41186a2011360200200341b0026a41106a2010360200200341bc026a20053602002003200a3602c4022003200f3602b802200320143602b4022003201a3602b002200341d0046a41086a220241cee5c200ad4280808080b002841002220641086a290000370300200320062900003703d0042006102c200341e0006a41086a22082002290300370300200320032903d004370360200241f1e5c200ad4280808080e000841002220641086a290000370300200320062900003703d0042006102c200341f0006a41086a22062002290300370300200320032903d004370370200341c0006a200341206a109f0141c000102a2202450d0220022003290360370000200241086a200829030037000020022003290370370010200241186a200629030037000020022003290040370020200241286a200341c0006a41086a290000370000200241306a200341c0006a41106a290000370000200241386a200341c0006a41186a290000370000200341c0003602c403200320023602c003200341b0026a200341c0036a10fd032002102c02402005450d00200f102c0b02402011450d00200a102c0b410021060c010b0240024020020d00200341d0046a41086a220241cee5c200ad4280808080b002841002220641086a290000370300200320062900003703d0042006102c200341e0006a41086a22082002290300370300200320032903d004370360200241fcf0c200ad4280808080a001841002220641086a290000370300200320062900003703d0042006102c200341f0006a41086a22062002290300370300200320032903d004370370200341c0006a200341206a109f0141c000102a2202450d0320022003290360370000200241086a200829030037000020022003290370370010200241186a200629030037000020022003290040370020200241286a200341c0006a41086a290000370000200241306a200341c0006a41106a290000370000200241386a200341c0006a41186a2900003700002002ad428080808080088410052002102c200341bd026a200341206a41086a290300370000200341c5026a200341206a41106a290300370000200341cd026a200341206a41186a290300370000200341033a00b402200341083a00b002200320032903203700b50241014100200341b0026a1092010c010b200341c5026a200341206a41106a290300370000200341cd026a200341206a41186a290300370000200341083a00b002200341bd026a200341206a41086a290300370000200341023a00b402200320032903203700b50241014100200341b0026a109201200341d0046a41086a220241cee5c200ad4280808080b002841002220841086a290000370300200320082900003703d0042008102c200341e0006a41086a220d2002290300370300200320032903d004370360200241fcf0c200ad4280808080a001841002220841086a290000370300200320082900003703d0042008102c200341f0006a41086a22082002290300370300200320032903d004370370200341c0006a200341206a109f0141c000102a2202450d0220022003290360370000200241086a200d29030037000020022003290370370010200241186a200829030037000020022003290040370020200241286a200341c0006a41086a290000370000200241306a200341c0006a41106a290000370000200241386a200341c0006a41186a290000370000200341b0026a200241c00010f40320032802b0022108200341c0036a200341b0026a410472220d418c0110db051a024020084118470d002002102c0c010b200341a0016a200341c0036a418c0110db051a2002102c200320083602b002200d200341a0016a418c0110db051a200341cc036a2006360200200341c0036a41086a2014360200200341003a00c403200341023a00c003200341c0006a200341b0026a200341c0036a10c10220032d00482102200341bd026a200341206a41086a290300370000200341c5026a200341306a290300370000200341cd026a200341386a290300370000200341d5026a20024102463a0000200341043a00b402200341083a00b002200320032903203700b50241014100200341b0026a1092010b200341d0046a41086a220641cee5c200ad4280808080b00284220c1002220241086a290000370300200320022900003703d0042002102c200341e0006a41086a22082006290300370300200320032903d004370360200641f1e5c200ad4280808080e000841002220241086a290000370300200320022900003703d0042002102c200341f0006a41086a220d2006290300370300200320032903d004370370200341c0006a200341206a109f0141c000102a2202450d0120022003290360370000200241086a200829030037000020022003290370370010200241186a200d29030037000020022003290040370020200241286a200341c0006a41086a220d290000370000200241306a200341c0006a41106a290000370000200241386a200341c0006a41186a2900003700002002ad428080808080088410052002102c200341b0026a41186a220e4200370300200341b0026a41106a22104200370300200341b0026a41086a22024200370300200342003703b0022006200c1002220841086a290000370300200320082900003703d0042008102c20022006290300370300200320032903d0043703b002200641e1e5c200ad42808080809001841002220841086a290000370300200320082900003703d0042008102c200d2006290300220c370300200320032903d004220937034020072009370000200741086a200c370000200341c0036a41086a2002290300370300200341c0036a41106a2010290300370300200341c0036a41186a200e290300370300200320032903b0023703c003200341b0026a200341c0036a412010d0010240024020032802b0022202450d00200320032902b4023702a401200320023602a0010c010b200341003602a801200342013703a0010b200341a0016a200341206a107a20032802a801210d20032802a401211020032802a0012107200341c0006a41186a4200370300200341c0006a41106a220e4200370300200341c0006a41086a2206420037030020034200370340200341d0046a41086a220241cee5c200ad4280808080b002841002220841086a290000370300200320082900003703d0042008102c20062002290300370300200320032903d004220c3703602003200c370340200241e1e5c200ad42808080809001841002220841086a290000370300200320082900003703d0042008102c200e20032903d004220c370300200341b0026a41086a2006290300370300200341b0026a41106a200c370300200341b0026a41186a20022903003703002003200c370370200320032903403703b0020240024020070d00200341b0026aad428080808080048410050c010b200341003602c803200342013703c003200d200341c0036a10670240200d450d00200d41057421062007210203402003200341c0036a3602402002200341c0006a109402200241206a2102200641606a22060d000b0b20032802c4032102200341b0026aad428080808080048420033502c80342208620032802c0032206ad84100102402002450d002006102c0b2010450d002007102c0b02402005450d00200f102c0b410021062011450d00200a102c0b0c070b1033000b41b5f7c2002106411f21020c060b41a888c600200620131038000b1035000b41a888c600200520101038000b41f7f7c2002106411621020b02402012450d00200f102c0b2011450d00200a102c0b4101210a410121080c020b20071092022007102c410021084101210a0c010b20071092022007102c410121084100210a0b2004417f6a220541024b0d0002400240024020050e03000102000b200141086a280200450d02200141046a280200102c0c020b200a450d01200141046a28020022011092022001102c0c010b2008450d00200141086a28020022011092022001102c0b2000200236020420002006360200200341e0046a24000bf46a05067f017e107f047e097f230041e0046b220324000240024002400240024002400240024002400240024002400240024002400240024020012d000022040e050001020304000b200341c4026a4101360200200342013702b402200341fcc4c5003602b002200341043602c403200341f4c4c5003602c0032003200341c0036a3602c002200341b0026a4184c5c5001041000b200141086a2802002104200141046a2802002105024020022d000120022d000072450d004111210241b2b2c00021062004450d0f2005102c0c0f0b20052001410c6a280200220210f402200341b0026a41186a4200370300200341b0026a41106a22064200370300200341b0026a41086a22074200370300200342003703b002200341d0046a41086a220141fde7c200ad4280808080b002841002220841086a290000370300200320082900003703d0042008102c20072001290300370300200320032903d0043703b002200141eae5c200ad4280808080f000841002220841086a290000370300200320082900003703d0042008102c200620032903d0042209370300200341c0036a41086a2007290300370300200341c0036a41106a2009370300200341c0036a41186a200129030037030020032009370340200320032903b0023703c003200341b0026a200341c0036a412010d001200341b0026a2005200220032802b0022201410120011b220720032902b402420020011b2209422088a710dc012006280200210120032802b402210620032802b002210820032802bc02220a200341c4026a2802002005200210dd0102402001450d00200a102c0b02402006450d002008102c0b02402009a7450d002007102c0b200341b0026a41186a4200370300200341b0026a41106a22084200370300200341b0026a41086a22064200370300200342003703b002200341d0046a41086a220141fde7c200ad4280808080b002841002220741086a290000370300200320072900003703d0042007102c20062001290300370300200320032903d0042209370360200320093703b002200141eae5c200ad4280808080f000841002220741086a290000370300200320072900003703d0042007102c200820032903d0042209370300200341c0006a41086a2006290300370300200341c0006a41106a2009370300200341c0006a41186a200129030037030020032009370370200320032903b002370340200341003602b802200342013703b0022002200341b0026a106702402002450d00200241057421012005210203402002200341b0026a109101200241206a2102200141606a22010d000b0b20032802b4022102200341c0006aad428080808080048420033502b80242208620032802b0022201ad84100102402002450d002001102c0b4100210602402004450d002005102c0b0c0e0b200141046a280200210a2002411a6a2901002109200241196a2d00002105200241186a2d00002107200241166a2f01002108200241156a2d0000210b200241146a2d0000210c200241126a2f0100210d200241116a2d0000210e200241106a2d0000210f2002410e6a2f010021102002410d6a2d000021112002410c6a2d000021122002410a6a2f01002113200241096a2d00002114200241046a2d0000211541022106200241026a2f010021160240024020022d00000d0020022d00014101470d00200241056a2d00002106200241066a2f01002117200241086a2d00002102410021180c010b4101211841002102410021170b200320093703c802200320053a00c702200320073a00c602200320083b01c4022003200b3a00c3022003200c3a00c2022003200d3b01c0022003200e3a00bf022003200f3a00be02200320103b01bc02200320113a00bb02200320123a00ba02200320133b01b802200320143a00b702200320153a00b202200320163b01b0022003201741ffff0371410874200241187472200641ff01717222053600b30202402018450d0041d6b2c0002106410f2102024002400240024020050e050001020310000b20032800b702210620032800bb0221020c0f0b41dd8cc6002106410e21020c0e0b41c3b2c0002106411321020c0d0b41b2b2c0002106411121020c0c0b20034180016a41186a200341b0026a41186a220629030037030020034180016a41106a200341b0026a41106a220529030037030020034180016a41086a200341b0026a41086a2202290300370300200320032903b00237038001200642003703002005420037030020024200370300200342003703b002200341d0046a41086a220641fde7c200ad4280808080b002841002220741086a290000370300200320072900003703d0042007102c20022006290300370300200320032903d0043703b002200641eae5c200ad4280808080f000841002220741086a290000370300200320072900003703d0042007102c200520032903d0042209370300200341c0036a41086a2002290300370300200341c0036a41106a2009370300200341c0036a41186a200629030037030020032009370340200320032903b0023703c003200341b0026a200341c0036a412010d00120032902b402420020032802b00222021b2209422088a741057421062002410120021b2208210202400340024020060d00410021070c020b4101210720034180016a2002460d01200641606a2106200220034180016a412010dd052105200241206a210220050d000b0b02402009a7450d002008102c0b024020070d0041a0f7c2002106411521020c0c0b41002108200341003602b802200342013703b002200a200341b0026a108b0120032802b4022106200341b0026a41186a220520033502b80242208620032802b002220dad841006220241186a290000370300200341b0026a41106a2207200241106a290000370300200341b0026a41086a220b200241086a290000370300200320022900003703b0022002102c200341a0016a41186a22022005290300370300200341a0016a41106a22052007290300370300200341a0016a41086a220c200b290300370300200320032903b0023703a00102402006450d00200d102c0b200341b0026a200a41900110db051a200341c0036a410d6a20034180016a41086a290300370000200341c0036a41156a20034180016a41106a290300370000200341c0036a411d6a20034180016a41186a29030037000041012107200341013a00c40320032003290380013700c503200341013a00c003200341c0006a200341b0026a200341c0036a10c10220032d00482106200341b0026a410d6a200c290300370000200341b0026a41156a2005290300370000200341b0026a411d6a2002290300370000200341d5026a20064102463a0000200341053a00b402200341073a00b002200320032903a0013700b50241014100200341b0026a109201200a102c410021060c0c0b200141086a280200210a200141046a28020021192002411a6a2901002109200241196a2d00002110200241186a2d00002111200241166a2f01002112200241156a2d00002113200241146a2d00002114200241126a2f01002115200241116a2d00002116200241106a2d000021082002410e6a2f0100210b2002410d6a2d0000210c2002410c6a2d0000210d2002410a6a2f0100210e200241096a2d0000210f200241046a2d0000211741022106200241026a2f010021180240024020022d00000d0020022d00014101470d00200241056a2d00002106200241066a2f01002105200241086a2d00002102410021070c010b4101210741002105410021020b200541ffff0371410874200641ff017172200241187472210502402007450d0041d6b2c0002106410f2102024002400240024020050e05000102030e000b200e410874200f72200d411874722106200b410874200c7220084118747221020c0d0b41dd8cc6002106410e21020c0c0b41c3b2c0002106411321020c0b0b41b2b2c0002106411121020c0a0b2003200937039801200320103a009701200320113a009601200320123b019401200320133a009301200320143a009201200320153b019001200320163a008f01200320083a008e012003200b3b018c012003200c3a008b012003200d3a008a012003200e3b0188012003200f3a0087012003200536008301200320173a008201200320183b018001200341b0026a41186a4200370300200341b0026a41106a22084200370300200341b0026a41086a22064200370300200342003703b002200341d0046a41086a220241fde7c200ad4280808080b002841002220541086a290000370300200320052900003703d0042005102c20062002290300370300200320032903d0043703b002200241eae5c200ad4280808080f000841002220541086a290000370300200320052900003703d0042005102c200820032903d0042209370300200341c0036a41086a2006290300370300200341c0036a41106a2009370300200341c0036a41186a200229030037030020032009370340200320032903b0023703c003200341b0026a200341c0036a412010d00120032902b402420020032802b00222021b2209422088a741057421062002410120021b220b210202400340024020060d00410021070c020b4101210720034180016a2002460d01200641606a2106200220034180016a412010dd052105200241206a210220050d000b0b02402009a7450d00200b102c0b024020070d0041a0f7c2002106411521020c0a0b200341003602b802200342013703b002200a200341b0026a108b0120032802b402210b200341b0026a41186a220620033502b80242208620032802b002220ead841006220241186a290000370300200341b0026a41106a2205200241106a290000370300200341b0026a41086a2207200241086a290000370300200320022900003703b0022002102c200341a0016a41186a22022006290300370300200341a0016a41106a220c2005290300370300200341a0016a41086a220d2007290300370300200320032903b0023703a0010240200b450d00200e102c0b200620022903003703002005200c2903003703002007200d290300370300200320032903a0013703b002200341d0046a41086a220241fde7c200ad4280808080b002841002220641086a290000370300200320062900003703d0042006102c200341e0006a41086a2002290300370300200320032903d004370360200241fcf0c200ad4280808080a001841002220641086a290000370300200320062900003703d0042006102c200341f0006a41086a2002290300370300200320032903d004370370200341c0006a200341b0026a109f0141c000102a2202450d0120022003290360370000200241086a200341e0006a41086a29030037000020022003290370370010200241186a200341f0006a41086a29030037000020022003290340370020200241286a200341c0006a41086a290300370000200241306a200341d0006a290300370000200241386a200341c0006a41186a290300370000200341186a200241c000410141004100109701200328021821062002102c20064101460d020240024020194102490d004200211a200341c0006a41186a220c4200370300200341c0006a41106a220d4200370300200341c0006a41086a2206420037030020034200370340200341d0046a41086a220241fde7c200ad4280808080b0028422091002220541086a290000370300200320052900003703d0042005102c20062002290300370300200320032903d004221b3703602003201b370340200241ace9c500ad4280808080d00184221b1002220541086a290000370300200320052900003703d0042005102c200d20032903d004221c370300200341b0026a41086a22052006290300370300200341b0026a41106a2207201c370300200341b0026a41186a220b20022903003703002003201c370370200320032903403703b002200341106a200341b0026a41201094012003280214210f20032802102110200c4200370300200d42003703002006420037030020034200370340200220091002220e41086a2900003703002003200e2900003703d004200e102c20062002290300370300200320032903d004221c3703602003201c3703402002201b1002220e41086a2900003703002003200e2900003703d004200e102c200c2002290300221c37030020052006290300370300200720032903d004221d370300200b201c3703002003201d370370200320032903403703b002200341086a200341b0026a41201094012003280208210e200328020c2111200c4200370300200d42003703002006420037030020034200370340200220091002220d41086a2900003703002003200d2900003703d004200d102c20062002290300370300200320032903d004221c3703602003201c3703402002201b1002220d41086a2900003703002003200d2900003703d004200d102c200c2002290300221b37030020052006290300370300200720032903d004221c370300200b201b3703002003201c370370200320032903403703b0024101210c2003201141016a4101200e1b3602c003200341b0026aad4280808080800484200341c0036aad4280808080c000841001200b42003703002007420037030020054200370300200342003703b002200220091002220d41086a2900003703002003200d2900003703d004200d102c20052002290300370300200320032903d0043703b002200241e1e5c200ad42808080809001841002220d41086a2900003703002003200d2900003703d004200d102c200620022903002209370300200320032903d004221b3703402008201b370000200841086a2009370000200341c0036a41086a2005290300370300200341c0036a41106a2007290300370300200341c0036a41186a200b290300370300200320032903b0023703c003200341b0026a200341c0036a412010d0010240024020032802b00222080d0041002106410021020c010b20032902b402221a422088a72102201aa721062008210c0b200b200341a0016a41186a2903003703002007200341a0016a41106a2903003703002005200341a0016a41086a290300370300200320032903a0013703b0020240024020022006460d002006210b0c010b02402006201aa7220b470d00200641016a22022006490d08200641017422052002200520024b1b220b41ffffff3f71200b470d08200b41057422024100480d080240024020060d002002102a210c0c010b200c20064105742002102e210c0b200c450d05201a42808080807083211a0b201a422088a721020b200c20024105746a220620032903b002370000200641186a200341b0026a41186a2205290300370000200641106a200341b0026a41106a2207290300370000200641086a200341b0026a41086a2206290300370000200542003703002007420037030020064200370300200342003703b002200341d0046a41086a220541fde7c200ad4280808080b002841002220841086a290000370300200320082900003703d0042008102c20062005290300370300200320032903d0042209370360200320093703b002200541e1e5c200ad42808080809001841002220841086a290000370300200320082900003703d0042008102c200720032903d0042209370300200341c0006a41086a2006290300370300200341c0006a41106a2009370300200341c0006a41186a200529030037030020032009370370200320032903b00237034002400240200c0d00200341c0006aad428080808080048410050c010b200341003602b802200342013703b002200241016a2206200341b0026a106702402006450d00200241057441206a2106200c210203402003200341b0026a3602c0032002200341c0036a109402200241206a2102200641606a22060d000b0b20032802b4022102200341c0006aad428080808080048420033502b80242208620032802b0022206ad84100102402002450d002006102c0b200b450d00200c102c0b200341b0026a200a41900110db051a200341c0036a41186a200341a0016a41186a290300370300200341c0036a41106a200341a0016a41106a290300370300200341c0036a41086a200341a0016a41086a290300370300200320032903a0013703c003200341d0046a41086a220241fde7c200ad4280808080b002841002220641086a290000370300200320062900003703d0042006102c200341e0006a41086a22052002290300370300200320032903d004370360200241fcf0c200ad4280808080a001841002220641086a290000370300200320062900003703d0042006102c200341f0006a41086a22062002290300370300200320032903d004370370200341c0006a200341c0036a109f0141c000102a2202450d0320022003290360370000200241086a200529030037000020022003290370370010200241186a200629030037000020022003290340370020200241286a200341c0006a41086a290300370000200241306a200341c0006a41106a290300370000200241386a200341c0006a41186a290300370000200341003602c803200342013703c003200341b0026a200341c0036a108b0120032802c40321062002ad428080808080088420033502c80342208620032802c0032205ad84100102402006450d002005102c0b2002102c200341b0026a1092024120102a2206450d032006200329038001370000200641186a20034180016a41186a2207290300370000200641106a20034180016a41106a2208290300370000200641086a20034180016a41086a220b290300370000200341dc036a4100360200200341cc036a428180808010370200200342013702d403200320063602c803200320193602c4032003200f410020101b220c3602c003200341b0026a41186a200341a0016a41186a220d290300370300200341b0026a41106a200341a0016a41106a220e290300370300200341b0026a41086a200341a0016a41086a220f290300370300200320032903a0013703b002200341d0046a41086a220241fde7c200ad4280808080b002841002220541086a290000370300200320052900003703d0042005102c200341e0006a41086a22102002290300370300200320032903d004370360200241f1e5c200ad4280808080e000841002220541086a290000370300200320052900003703d0042005102c200341f0006a41086a22052002290300370300200320032903d004370370200341c0006a200341b0026a109f0141c000102a2202450d0320022003290360370000200241086a201029030037000020022003290370370010200241186a200529030037000020022003290340370020200241286a200341c0006a41086a290300370000200241306a200341c0006a41106a290300370000200241386a200341c0006a41186a290300370000200341c0003602b402200320023602b002200341c0036a200341b0026a10fd032002102c2006102c200341bd026a200b290300370000200341c5026a2008290300370000200341cd026a2007290300370000200341d5026a20032903a001370000200341dd026a200f290300370000200341e5026a200e290300370000200341ed026a200d290300370000200341fc026a2019360200200341f8026a200c360200200341003a00b402200341073a00b00220032003290380013700b502200341b0026a21020c010b200341b0026a41186a22074200370300200341b0026a41106a220b4200370300200341b0026a41086a22064200370300200342003703b002200341d0046a41086a220241fde7c200ad4280808080b002841002220541086a290000370300200320052900003703d0042005102c20062002290300370300200320032903d0043703b002200241eae5c200ad4280808080f000841002220541086a290000370300200320052900003703d0042005102c200341c0006a41086a20022903002209370300200320032903d004221a3703402008201a370000200841086a2009370000200341c0036a41086a2006290300370300200341c0036a41106a200b290300370300200341c0036a41186a2007290300370300200320032903b0023703c003200341206a200341c0036a412010d00102400240200328022022060d00410021020c010b20032902242209422088a721022009a7450d002006102c0b200341b0026a200a41900110db051a200341cc036a2002360200200341c0036a41086a4101360200200341003a00c403200341013a00c003200341c0006a200341b0026a200341c0036a10c10220032d00482102200341bd026a200341a0016a41086a290300370000200341c5026a200341b0016a290300370000200341cd026a200341b8016a290300370000200341d5026a20024102463a0000200341043a00b402200341073a00b002200320032903a0013700b502200341b0026a21020b4100210741012108410141002002109201200a102c410021060c0b0b200141216a2d00002119200141246a2802002118200341206a41186a200141196a290000370300200341206a41106a200141116a290000370300200341206a41086a200141096a290000370300200320012900013703202002411a6a2901002109200241196a2d0000210f200241186a2d00002110200241166a2f01002111200241156a2d00002112200241146a2d00002113200241126a2f01002114200241116a2d00002115200241106a2d000021082002410e6a2f0100210a2002410d6a2d0000210b2002410c6a2d0000210c2002410a6a2f0100210d200241096a2d0000210e200241046a2d0000211641022106200241026a2f010021170240024020022d00000d0020022d00014101470d00200241056a2d00002106200241066a2f01002105200241086a2d00002102410021070c010b4101210741002105410021020b200541ffff0371410874200641ff017172200241187472210502402007450d0041d6b2c0002106410f2102024002400240024020050e05000102030c000b200d410874200e72200c411874722106200a410874200b7220084118747221020c0b0b41dd8cc6002106410e21020c0a0b41c3b2c0002106411321020c090b41b2b2c0002106411121020c080b20032009370398012003200f3a009701200320103a009601200320113b019401200320123a009301200320133a009201200320143b019001200320153a008f01200320083a008e012003200a3b018c012003200b3a008b012003200c3a008a012003200d3b0188012003200e3a0087012003200536008301200320163a008201200320173b018001200341b0026a41186a4200370300200341b0026a41106a220a4200370300200341b0026a41086a22064200370300200342003703b002200341d0046a41086a220241fde7c200ad4280808080b002841002220541086a290000370300200320052900003703d0042005102c20062002290300370300200320032903d0043703b002200241eae5c200ad4280808080f000841002220541086a290000370300200320052900003703d0042005102c200a20032903d0042209370300200341c0036a41086a2006290300370300200341c0036a41106a2009370300200341c0036a41186a200229030037030020032009370340200320032903b0023703c003200341b0026a200341c0036a412010d00120032902b402420020032802b00222021b2209422088a741057421062002410120021b2208210202400340024020060d00410021070c020b4101210720034180016a2002460d01200641606a2106200220034180016a412010dd052105200241206a210220050d000b0b02402009a7450d002008102c0b024020070d00418df8c2002106411221020c080b200341d0046a41086a220241fde7c200ad4280808080b002841002220641086a290000370300200320062900003703d0042006102c200341e0006a41086a22052002290300370300200320032903d004370360200241f1e5c200ad4280808080e000841002220641086a290000370300200320062900003703d0042006102c200341f0006a41086a22072002290300370300200320032903d004370370200341c0006a200341206a109f0141c000102a2206450d0020062003290360370000200641086a200529030037000020062003290370370010200641186a200729030037000020062003290040370020200641286a200341c0006a41086a29000037000041102102200641306a200341c0006a41106a290000370000200641386a200341c0006a41186a290000370000200341b0026a200641c00010e503200341cc026a2802002111200341b0026a41186a280200210f200341c4026a2802002108200341b0026a41106a280200210e20032802bc02211020032802b802210d20032802b402211220032802b00221052006102c0240200d0d0041d4f7c2002106411321020c080b41e7f7c200210620052018470d06200e41057421064100211341002105200d21020240024003402006450d0220034180016a2002460d01200541016a2105200641606a2106200220034180016a412010dd052107200241206a210220070d000b20074541016a41017120056a417f6a21050b410121130b2011410574210b20034180016a20086b210c410021144100210641002102024002400340200b2002460d02200c2002460d01200641016a2106200820026a2107200241206a2102200720034180016a412010dd0522070d000b20074541016a41017120066a417f6a21060b410121140b024002400240201941ff01710d002014450d010c080b20130d07200341b0026a41186a220720034180016a41186a290300370300200341b0026a41106a220b20034180016a41106a290300370300200341b0026a41086a220c20034180016a41086a29030037030020032003290380013703b00202400240200e2010460d0020102105200e21100c010b201041016a22022010490d06201041017422052002200520024b1b220541ffffff3f712005470d06200541057422024100480d060240024020100d002002102a210d0c010b200d20104105742002102e210d0b200d450d030b200d20104105746a220220032903b002370000200241186a2007290300370000200241106a200b290300370000200241086a200c290300370000200e41016a210e2014450d01201120064d0d0420082011417f6a22114105746a220229000021092002290008211a2002290010211b200820064105746a220641186a200241186a2900003700002006201b3700102006201a370008200620093700000c010b200329039801210920032d009701210720032d009601210b20032f019401210c20032d009301211420032d009201211520032f019001211620032d008f01211720032d008e01211e20032f018c01211f20032d008b01212020032d008a01212120032f018801212220032d0087012123200328008301212420032d008201212520032f0180012126024002402011200f460d00200f21062011210f0c010b200f41016a2202200f490d05200f41017422062002200620024b1b220641ffffff3f712006470d05200641057422024100480d0502400240200f0d002002102a21080c010b2008200f4105742002102e21080b2008450d020b2008200f4105746a22022009370018200220073a00172002200b3a00162002200c3b0014200220143a0013200220153a0012200220163b0010200220173a000f2002201e3a000e2002201f3b000c200220203a000b200220213a000a200220223b0008200220233a000720022024360003200220253a0002200220263b0000201141016a211102402013450d00200e20054d0d06200d200e417f6a220e4105746a220229000021092002290008211a2002290010211b200d20054105746a220541186a200241186a2900003700002005201b3700102005201a370008200520093700000b2006210f201021050b200341d5026a2003290320370000200341bd026a20034180016a41086a290300370000200341c5026a20034180016a41106a290300370000200341cd026a20034180016a41186a290300370000200341dd026a200341206a41086a290300370000200341e5026a200341206a41106a290300370000200341ed026a200341206a41186a290300370000200341013a00b402200341073a00b00220032003290380013700b502200341fc026a2011360200200341f8026a200e360200200341f5026a20193a00004100210641014100200341b0026a109201200341b0026a41186a220c4200370300200341b0026a41106a22104200370300200341b0026a41086a22074200370300200342003703b002200341d0046a41086a220241fde7c200ad4280808080b002841002220b41086a2900003703002003200b2900003703d004200b102c20072002290300370300200320032903d0043703b002200241eae5c200ad4280808080f000841002220b41086a2900003703002003200b2900003703d004200b102c200341c0006a41086a20022903002209370300200320032903d004221a370340200a201a370000200a41086a2009370000200341c0036a41086a2007290300370300200341c0036a41106a2010290300370300200341c0036a41186a200c290300370300200320032903b0023703c003200341a0016a200341c0036a412010d001024020032802a0012202450d0020032902a4012209422088a721062009a7450d002002102c0b02400240200e20124f22020d004100200620116b2207200720064b1b2012490d00200341cc026a2011360200200341b0026a41186a200f360200200341b0026a41106a200e360200200341bc026a2005360200200320083602c4022003200d3602b802200320123602b402200320183602b002200341d0046a41086a220241fde7c200ad4280808080b002841002220641086a290000370300200320062900003703d0042006102c200341e0006a41086a22072002290300370300200320032903d004370360200241f1e5c200ad4280808080e000841002220641086a290000370300200320062900003703d0042006102c200341f0006a41086a22062002290300370300200320032903d004370370200341c0006a200341206a109f0141c000102a2202450d0220022003290360370000200241086a200729030037000020022003290370370010200241186a200629030037000020022003290040370020200241286a200341c0006a41086a290000370000200241306a200341c0006a41106a290000370000200241386a200341c0006a41186a290000370000200341c0003602c403200320023602c003200341b0026a200341c0036a10fd032002102c02402005450d00200d102c0b0240200f450d002008102c0b410021060c010b0240024020020d00200341d0046a41086a220241fde7c200ad4280808080b002841002220641086a290000370300200320062900003703d0042006102c200341e0006a41086a22072002290300370300200320032903d004370360200241fcf0c200ad4280808080a001841002220641086a290000370300200320062900003703d0042006102c200341f0006a41086a22062002290300370300200320032903d004370370200341c0006a200341206a109f0141c000102a2202450d0320022003290360370000200241086a200729030037000020022003290370370010200241186a200629030037000020022003290040370020200241286a200341c0006a41086a290000370000200241306a200341c0006a41106a290000370000200241386a200341c0006a41186a2900003700002002ad428080808080088410052002102c200341bd026a200341206a41086a290300370000200341c5026a200341206a41106a290300370000200341cd026a200341206a41186a290300370000200341033a00b402200341073a00b002200320032903203700b50241014100200341b0026a1092010c010b200341bd026a200341206a41086a290300370000200341c5026a200341206a41106a290300370000200341cd026a200341206a41186a290300370000200341023a00b402200341073a00b002200320032903203700b50241014100200341b0026a109201200341d0046a41086a220241fde7c200ad4280808080b002841002220741086a290000370300200320072900003703d0042007102c200341e0006a41086a220b2002290300370300200320032903d004370360200241fcf0c200ad4280808080a001841002220741086a290000370300200320072900003703d0042007102c200341f0006a41086a22072002290300370300200320032903d004370370200341c0006a200341206a109f0141c000102a2202450d0220022003290360370000200241086a200b29030037000020022003290370370010200241186a200729030037000020022003290040370020200241286a200341c0006a41086a290000370000200241306a200341c0006a41106a290000370000200241386a200341c0006a41186a290000370000200341b0026a200241c00010f40320032802b0022107200341c0036a200341b0026a410472220b418c0110db051a024020074118470d002002102c0c010b200341a0016a200341c0036a418c0110db051a2002102c200320073602b002200b200341a0016a418c0110db051a200341cc036a2006360200200341c0036a41086a2012360200200341003a00c403200341013a00c003200341c0006a200341b0026a200341c0036a10c10220032d00482102200341bd026a200341206a41086a290300370000200341c5026a200341306a290300370000200341cd026a200341386a290300370000200341d5026a20024102463a0000200341043a00b402200341073a00b002200320032903203700b50241014100200341b0026a1092010b200341d0046a41086a220641fde7c200ad4280808080b0028422091002220241086a290000370300200320022900003703d0042002102c200341e0006a41086a22072006290300370300200320032903d004370360200641f1e5c200ad4280808080e000841002220241086a290000370300200320022900003703d0042002102c200341f0006a41086a220b2006290300370300200320032903d004370370200341c0006a200341206a109f0141c000102a2202450d0120022003290360370000200241086a200729030037000020022003290370370010200241186a200b29030037000020022003290040370020200241286a200341c0006a41086a220b290000370000200241306a200341c0006a41106a290000370000200241386a200341c0006a41186a2900003700002002ad428080808080088410052002102c200341b0026a41186a220c4200370300200341b0026a41106a220e4200370300200341b0026a41086a22024200370300200342003703b002200620091002220741086a290000370300200320072900003703d0042007102c20022006290300370300200320032903d0043703b002200641e1e5c200ad42808080809001841002220741086a290000370300200320072900003703d0042007102c200b20062903002209370300200320032903d004221a370340200a201a370000200a41086a2009370000200341c0036a41086a2002290300370300200341c0036a41106a200e290300370300200341c0036a41186a200c290300370300200320032903b0023703c003200341b0026a200341c0036a412010d0010240024020032802b0022202450d00200320032902b4023702a401200320023602a0010c010b200341003602a801200342013703a0010b200341a0016a200341206a107a20032802a801210b20032802a401210e20032802a001210a200341c0006a41186a4200370300200341c0006a41106a220c4200370300200341c0006a41086a2206420037030020034200370340200341d0046a41086a220241fde7c200ad4280808080b002841002220741086a290000370300200320072900003703d0042007102c20062002290300370300200320032903d004220937036020032009370340200241e1e5c200ad42808080809001841002220741086a290000370300200320072900003703d0042007102c200c20032903d0042209370300200341b0026a41086a2006290300370300200341b0026a41106a2009370300200341b0026a41186a200229030037030020032009370370200320032903403703b00202400240200a0d00200341b0026aad428080808080048410050c010b200341003602c803200342013703c003200b200341c0036a10670240200b450d00200b4105742106200a210203402003200341c0036a3602402002200341c0006a109402200241206a2102200641606a22060d000b0b20032802c4032102200341b0026aad428080808080048420033502c80342208620032802c0032206ad84100102402002450d002006102c0b200e450d00200a102c0b02402005450d00200d102c0b41002106200f450d002008102c0b0c070b1033000b41b5f7c2002106411f21020c060b41a888c600200620111038000b1035000b41a888c6002005200e1038000b41f7f7c2002106411621020b02402010450d00200d102c0b200f450d002008102c0b41012108410121070c020b200a109202200a102c41002107410121080c010b200a109202200a102c41012107410021080b2004417f6a220541024b0d0002400240024020050e03000102000b200141086a280200450d02200141046a280200102c0c020b2008450d01200141046a28020022011092022001102c0c010b2007450d00200141086a28020022011092022001102c0b2000200236020420002006360200200341e0046a24000bc4a80205017f037e137f027e037f230041e0066b22032400024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020012d00000e1600010205060708090a0b0c0d0e201d1c1b1a19181716000b200341e4036a4101360200200342013702d403200341fcc4c5003602d003200341043602e405200341f4c4c5003602e0052003200341e0056a3602e003200341d0036a4184c5c5001041000b200141306a2903002104200141286a2903002105200341c0026a41186a200141196a290000370300200341c0026a41106a200141116a290000370300200341c0026a41086a200141096a290000370300200320012900013703c0022002411a6a2901002106200241196a2d00002107200241186a2d00002108200241166a2f01002109200241156a2d0000210a200241146a2d0000210b200241126a2f0100210c200241116a2d0000210d200241106a2d0000210e2002410e6a2f0100210f2002410d6a2d000021102002410c6a2d000021112002410a6a2f01002112200241096a2d00002113200241046a2d00002114200241026a2f0100211502400240024020022d0000450d00200320063702d403200320073a00d303200320083a00d203200320093b01d0030c010b200241086a2d00002116200241066a2f01002117200241056a2d0000211820022d00012119200320063703d00341002102201941ff01714101460d010b410121024102211841002116410021170b200320063703a003200320073a009f03200320083a009e03200320093b019c032003200a3a009b032003200b3a009a032003200c3b0198032003200d3a0097032003200e3a0096032003200f3b019403200320103a009303200320113a009203200320123b019003200320133a008f03200320143a008a03200320153b0188032003201741ffff0371410874201641187472201841ff017172220936008b0302402002450d0041d6b2c0002108410f210720090e050220212233020b20034188056a41186a20034188036a41186a29030037030020034188056a41106a20034188036a41106a29030037030020034188056a41086a20034188036a41086a2903003703002003200329038803370388050240200542808084fea6dee1115441002004501b450d0041e695c5002108410d2107410121090c340b200341106a20034188056a2005200410c10102402003280210450d0041f395c5002108411a2107410121090c340b200341e0016a41186a22094200370300200341e0016a41106a22074200370300200341e0016a41086a22084200370300200342003703e001200341d0046a41086a220241bad6c500ad428080808090018422061002221641086a290000370300200320162900003703d0042016102c20082002290300370300200320032903d004221a370380022003201a3703e0012002419cd6c500ad4280808080f00184221b1002221641086a290000370300200320162900003703d0042016102c200720032903d004221a370300200341c0016a41086a22172008290300370300200341c0016a41106a2218201a370300200341c0016a41186a220a20022903003703002003201a37039002200320032903e0013703c001200341086a200341c0016a4120109401200328020c210b2003280208210c200942003703002007420037030020084200370300200342003703e001200220061002221641086a290000370300200320162900003703d0042016102c20082002290300370300200320032903d004221a370380022003201a3703e0012002201b1002221641086a290000370300200320162900003703d0042016102c20092002290300221a37030020172008290300370300201820032903d004221b370300200a201a3703002003201b37039002200320032903e0013703c0012003200b4100200c1b221641016a3602d003200341c0016aad4280808080800484221a200341d0036aad4280808080c000841001200320034188056a36028803200220061002221741086a290000370300200320172900003703d0042017102c20034180026a41086a22182002290300370300200320032903d00437038002200241e0c5c400ad42808080809001841002221741086a290000370300200320172900003703d0042017102c20034190026a41086a22172002290300370300200320032903d00437039002200320163602e005200341d0036a41186a220a200341e0056aad4280808080c000841006220241186a290000370300200341d0036a41106a220b200241106a290000370300200341d0036a41086a220c200241086a290000370300200320022900003703d0032002102c2009200a2903003703002007200b2903003703002008200c290300370300200320032903d0033703e00141c000102a2202450d352002200329038002370000200241086a20182903003700002002200329039002370010200241186a2017290300370000200220032903e001370020200241286a2008290300370000200241306a2007290300370000200241386a20092903003700004110102a2208450d3520082005370000200820043700082003429080808080023702d403200320083602d0034101200341d0036a1067200328028803200341d0036a10910120032802d40321082002ad428080808080088420033502d80342208620032802d0032209ad84100102402008450d002009102c0b2002102c200341ec056a200341c0026a41086a290300370200200341f4056a200341c0026a41106a290300370200200341fc056a200341c0026a41186a2903003702002003418c066a20034188056a41086a29030037020020034194066a20034188056a41106a2903003702002003419c066a20034188056a41186a290300370200200320163602e005200320032903c0023702e4052003200329038805370284062003200341e0056a3602d005200341e0016a41186a22174200370300200341e0016a41106a22184200370300200341e0016a41086a22084200370300200342003703e001200341d0046a41086a220241bad6c500ad42808080809001841002220941086a290000370300200320092900003703d0042009102c20082002290300370300200320032903d004220637038002200320063703e001200241d5c5c400ad4280808080b001841002220941086a290000370300200320092900003703d0042009102c20034190026a41086a20022903002206370300200320032903d004221b370390022007201b370000200741086a2006370000200341c0016a41086a2008290300370300200341c0016a41106a2018290300370300200341c0016a41186a2017290300370300200320032903e0013703c00120034188036a201a1003108d01024002402003280288032208450d0020034188036a41086a2802002102200328028c0321090c010b200341003602d803200342013703d0034100200341d0036a106720032802d803210220032802d403210920032802d00321080b200320023602a802200320093602a402200320083602a002024002402002450d00200341d0036a20082002410110db0320032802d0034101470d0120032802a402450d3120032802a002102c0c310b4101200341a0026a106720032802d005220828020021170240024020032802a402220920032802a80222026b4104490d0020032802a00221090c010b200241046a22182002490d38200941017422022018200220184b1b22024100480d380240024020090d002002102a21090c010b20032802a00220092002102e21090b2009450d37200320023602a402200320093602a00220032802a80221020b2003200241046a3602a802200920026a20173600002003200341a0026a3602d003200841046a200341d0036a109402200841246a200341a0026a1091010c2e0b20032802d40321170240200341dc036a2802002202200341d8036a2802002208460d0020032802a802200220086b6a220941046a2218417f4c0d130240024020180d004101210a0c010b2018102a220a450d370b200320183602ec042003200a3602e804200320093602f0042003200341e8046a3602d0032017200341d0036a200210c80220092002490d1220032802f00422172009490d1120032802a80222172008490d1020032802e804211820032802a002210a2003200920026b2209360280022003201720086b22173602900220092017470d0f201820026a200a20086a200910db051a20032802d005220828020021170240024020032802ec04220920032802f00422026b4104490d0020032802e80421090c010b200241046a22182002490d38200941017422022018200220184b1b22024100480d380240024020090d002002102a21090c010b20032802e80420092002102e21090b2009450d37200320023602ec04200320093602e80420032802f00421020b2003200241046a3602f004200920026a20173600002003200341e8046a3602d003200841046a200341d0036a109402200841246a200341e8046a10910120032802f004210820032802ec04210920032802e804210220032802a402450d2f20032802a002102c0c2f0b2003200341a0026a3602d0032017200341d0036a200810c80220032802d005220828020021170240024020032802a402220920032802a80222026b4104490d0020032802a00221090c010b200241046a22182002490d37200941017422022018200220184b1b22024100480d370240024020090d002002102a21090c010b20032802a00220092002102e21090b2009450d36200320023602a402200320093602a00220032802a80221020b2003200241046a3602a802200920026a20173600002003200341a0026a3602d003200841046a200341d0036a109402200841246a200341a0026a1091010c2d0b200141046a28020021192002411a6a2901002106200241196a2d00002107200241186a2d00002108200241166a2f01002109200241156a2d0000210a200241146a2d0000210b200241126a2f0100210c200241116a2d0000210d200241106a2d0000210e2002410e6a2f0100210f2002410d6a2d000021102002410c6a2d000021112002410a6a2f01002112200241096a2d00002113200241046a2d00002114200241026a2f0100211502400240024020022d0000450d00200320063702d403200320073a00d303200320083a00d203200320093b01d0030c010b200241086a2d00002116200241066a2f01002117200241056a2d0000211820022d0001211c200320063703d00341002102201c41ff01714101460d010b410121024102211841002116410021170b200320063703a003200320073a009f03200320083a009e03200320093b019c032003200a3a009b032003200b3a009a032003200c3b0198032003200d3a0097032003200e3a0096032003200f3b019403200320103a009303200320113a009203200320123b019003200320133a008f03200320143a008a03200320153b0188032003201741ffff0371410874201641187472201841ff017172220936008b032002450d0141d6b2c0002108410f210720090e05001e1f2031000b200328008f0321082003280093032107410121090c310b200341e0056a41186a20034188036a41186a290300370300200341e0056a41106a20034188036a41106a290300370300200341e0056a41086a20034188036a41086a29030037030020032003290388033703e005200341d0036a201910cc04024020032802e00322090d00418d96c500210841242107410121090c310b200341d0036a41186a280200210720032802e4032102200341186a200341e0056a20032902d403220642208620033502d003842204200341dc036a350200422086200642208884220610c10120032802180d29200341c0016a41186a200341e0056a41186a290300370300200341c0016a41106a2208200341e0056a41106a290300370300200341c0016a41086a2217200341e0056a41086a290300370300200320032903e0053703c0010240024020072002460d0020022116200721020c010b200241016a22162002490d34200241017422182016201820164b1b221641ffffff3f712016470d34201641057422184100480d340240024020020d002018102a21090c010b200920024105742018102e21090b2009450d330b200920024105746a220220032903c001370000200241186a200341c0016a41186a290300370000200241106a2008290300370000200241086a2017290300370000200341d0046a41086a220241bad6c500ad42808080809001841002220841086a290000370300200320082900003703d0042008102c20034180026a41086a2002290300370300200320032903d00437038002200241e0c5c400ad42808080809001841002220841086a290000370300200320082900003703d0042008102c20034190026a41086a2002290300370300200320032903d004370390022003201936028805200341d0036a41186a220820034188056aad4280808080c000841006220241186a290000370300200341d0036a41106a2217200241106a290000370300200341d0036a41086a2218200241086a290000370300200320022900003703d0032002102c200341e0016a41186a22022008290300370300200341e0016a41106a2017290300370300200341e0016a41086a2018290300370300200320032903d0033703e00141c000102a2208450d322008200329038002370000200841086a20034180026a41086a2903003700002008200329039002370010200841186a20034190026a41086a290300370000200820032903e001370020200841286a200341e0016a41086a290300370000200841306a200341e0016a41106a290300370000200841386a20022903003700004110102a2202450d3220022004370000200220063700082003429080808080023702d403200320023602d003200741016a2202200341d0036a106702402002450d00200741057441206a21072009210203402002200341d0036a109101200241206a2102200741606a22070d000b0b20032802d40321022008ad428080808080088420033502d80342208620032802d0032207ad84100102402002450d002007102c0b2008102c2016450d282009102c0c280b200141026a2d00002119200141046a280200211c20012d0001211d2002411a6a2901002106200241196a2d00002107200241186a2d00002108200241166a2f01002109200241156a2d0000210a200241146a2d0000210b200241126a2f0100210c200241116a2d0000210d200241106a2d0000210e2002410e6a2f0100210f2002410d6a2d000021102002410c6a2d000021112002410a6a2f01002112200241096a2d00002113200241046a2d00002114200241026a2f0100211502400240024020022d0000450d00200320063702d403200320073a00d303200320083a00d203200320093b01d0030c010b200241086a2d00002116200241066a2f01002117200241056a2d0000211820022d0001211e200320063703d00341002102201e41ff01714101460d010b410121024102211841002116410021170b200320063703f801200320073a00f701200320083a00f601200320093b01f4012003200a3a00f3012003200b3a00f2012003200c3b01f0012003200d3a00ef012003200e3a00ee012003200f3b01ec01200320103a00eb01200320113a00ea01200320123b01e801200320133a00e701200320143a00e201200320153b01e0012003201741ffff0371410874201641187472201841ff01717222093600e30102402002450d0041d6b2c0002108410f210720090e05191c1d1e2f190b200341c0016a41186a200341e0016a41186a2903002206370300200341c0016a41106a200341e0016a41106a2903002204370300200341c0016a41086a200341e0016a41086a2903002205370300200320032903e001221a3703c001200341d0036a41186a2006370300200341d0036a41106a2004370300200341d0036a41086a20053703002003201a3703d003200341d0036a201c201d41ff0171410047201910e10421080c260b200141026a2d00002119200141046a280200211c20012d0001211d2002411a6a2901002106200241196a2d00002107200241186a2d00002108200241166a2f01002109200241156a2d0000210a200241146a2d0000210b200241126a2f0100210c200241116a2d0000210d200241106a2d0000210e2002410e6a2f0100210f2002410d6a2d000021102002410c6a2d000021112002410a6a2f01002112200241096a2d00002113200241046a2d00002114200241026a2f0100211502400240024020022d0000450d00200320063702d403200320073a00d303200320083a00d203200320093b01d0030c010b200241086a2d00002116200241066a2f01002117200241056a2d0000211820022d0001211e200320063703d00341002102201e41ff01714101460d010b410121024102211841002116410021170b200320063703d801200320073a00d701200320083a00d601200320093b01d4012003200a3a00d3012003200b3a00d2012003200c3b01d0012003200d3a00cf012003200e3a00ce012003200f3b01cc01200320103a00cb01200320113a00ca01200320123b01c801200320133a00c701200320143a00c201200320153b01c0012003201741ffff0371410874201641187472201841ff01717222093600c30102402002450d0041d6b2c0002108410f210720090e051e1b1c1d2e1e0b200341d0036a41186a200341c0016a41186a290300370300200341d0036a41106a200341c0016a41106a290300370300200341d0036a41086a200341c0016a41086a290300370300200320032903c0013703d003200341d0046a41086a220241bad6c500ad42808080809001841002220741086a290000370300200320072900003703d0042007102c20034180026a41086a2002290300370300200320032903d0043703800220024188fbc400ad4280808080d000841002220741086a290000370300200320072900003703d0042007102c20034190026a41086a2002290300370300200320032903d00437039002200341e0016a200341d0036a109f0141c000102a2202450d302002200329038002370000200241086a20034180026a41086a2903003700002002200329039002370010200241186a20034190026a41086a290300370000200220032903e001370020200241286a200341e0016a41086a2208290300370000200241306a200341e0016a41106a2209290300370000200241386a200341e0016a41186a2207290300370000200341d0036a200241c00010d3012008200341d9036a2900003703002009200341e1036a2900003703002007200341e9036a290000370300200320032900d1033703e001410121080240024020032d00d0034101460d00410021160c010b200341a2016a20032d00e2013a0000200341a0026a41086a200341f3016a290000370300200341ad026a2007290000370000200320032f01e0013b01a001200320032900eb013703a0024101211620032800e701210720032800e30121090b2002102c0240024020160d00410b210741cb96c50021090c010b200341d0056a41026a200341a0016a41026a2d00003a0000200341c0026a41086a200341a0026a41086a290300370300200341c0026a410d6a200341a0026a410d6a290000370000200320032f01a0013b01d005200320032903a0023703c002410021080b200341d0066a41026a2202200341d0056a41026a2d00003a0000200341e8046a41086a2216200341c0026a41086a290300370300200341e8046a41106a200341c0026a41106a290300370300200320032f01d0053b01d006200320032903c0023703e80402402008450d0020092108410121090c2f0b20034188056a41026a20022d000022023a0000200341e0056a41086a22082016290300370300200341e0056a410d6a2216200341e8046a410d6a290000370000200320032f01d00622173b018805200320032903e8043703e005200341e3036a2008290300370000200341e8036a2016290000370000200320023a00d203200320173b01d003200320073600d703200320093600d303200320032903e0053700db03200341d0036a201c201d41ff0171410047201910e10421080c250b41cf8cc6002108410e210720022d0000417f6a221741024b0d2c200141046a280200211841012109410121160240024020170e03003001000b200241046a2d00000d2d4101210941012116200241086a28020041036c2002410c6a280200410174490d2f0b200341d0036a201810d704024020032d00f8034103470d0041fb96c5002108410d2107410121090c2e0b200341e0056a41206a200341d0036a41286a280200360200200341e0056a41186a200341d0036a41206a2903002206370300200341e0056a41106a200341d0036a41186a22022903002204370300200341e0056a41086a200341d0036a41106a22072903002205370300200320032903d803221a3703e005200341c0016a41186a2006370300200341c0016a41106a2004370300200341c0016a41086a20053703002003201a3703c0012002200637030020072004370300200341d0036a41086a20053703002003201a3703d003200341d0046a41086a220241bad6c500ad42808080809001841002220741086a290000370300200320072900003703d0042007102c20034180026a41086a22082002290300370300200320032903d0043703800220024188fdc400ad4280808080d001841002220741086a290000370300200320072900003703d0042007102c20034190026a41086a22072002290300370300200320032903d00437039002200341e0016a200341d0036a109f0141c000102a2202450d2f2002200329038002370000200241086a20082903003700002002200329039002370010200241186a2007290300370000200220032903e001370020200241286a200341e0016a41086a290300370000200241306a200341e0016a41106a290300370000200241386a200341e0016a41186a29030037000041012109200341206a200241c000410141004100109701200328022021072002102c20074101460d0d200341d0036a41186a200341c0016a41186a290300370300200341d0036a41106a200341c0016a41106a290300370300200341d0036a41086a200341c0016a41086a290300370300200320032903c0013703d003200341d0046a41086a220241bad6c500ad42808080809001841002220741086a290000370300200320072900003703d0042007102c20034180026a41086a22082002290300370300200320032903d0043703800220024188fdc400ad4280808080d001841002220741086a290000370300200320072900003703d0042007102c20034190026a41086a22072002290300370300200320032903d00437039002200341e0016a200341d0036a109f0141c000102a2202450d2f2002200329038002370000200241086a20082903003700002002200329039002370010200241186a2007290300370000200220032903e001370020200241286a200341e0016a41086a290300370000200241306a200341e0016a41106a290300370000200241386a200341e0016a41186a29030037000041012109200341013a00d0032002ad4280808080800884200341d0036aad4280808080108410012002102c201810d20441002108410121160c2e0b200341a0056a200141196a29000037030020034198056a200141116a29000037030020034190056a200141096a290000370300200320012900013703880541cf8cc6002108410e210720022d0000417f6a220941024b0d2b0240024020090e03002d01000b200241086a2802004101742002410c6a280200490d2c200241046a28020041ff01710d2c0b200341e0016a41186a4200370300200341e0016a41106a22094200370300200341e0016a41086a22074200370300200342003703e001200341d0046a41086a220241bad6c500ad428080808090018422041002220841086a290000370300200320082900003703d0042008102c20072002290300370300200320032903d004220637038002200320063703e00120024184c6c400ad4280808080c001841002220841086a290000370300200320082900003703d0042008102c200920032903d0042206370300200341c0016a41086a2007290300370300200341c0016a41106a2006370300200341c0016a41186a20022903003703002003200637039002200320032903e0013703c001200341306a200341c0016a4120410141004100109701024020032802304101470d00418897c500210841152107410121090c2d0b200341d0036a41186a20034188056a41186a290300370300200341d0036a41106a20034188056a41106a290300370300200341d0036a41086a20034188056a41086a29030037030020032003290388053703d003200220041002220741086a290000370300200320072900003703d0042007102c20034180026a41086a2002290300370300200320032903d00437038002200241bcfcc400ad42808080809001841002220741086a290000370300200320072900003703d0042007102c20034190026a41086a2002290300370300200320032903d00437039002200341e0016a200341d0036a109f0141c000102a2202450d2e2002200329038002370000200241086a20034180026a41086a2903003700002002200329039002370010200241186a20034190026a41086a220b290300370000200220032903e001370020200241286a200341e0016a41086a2207290300370000200241306a200341e0016a41106a2216290300370000200241386a200341e0016a41186a2217290300370000200341d0036a200241c00010ed0320032802d003210c20032903d803210420032802d40321082002102c02402008450d00200341d0036a41186a4200370300200341d0036a41106a220d4200370300200341d0036a41086a22184200370300200342003703d003200341d0046a41086a22024191b0c200ad4280808080e000841002220a41086a2900003703002003200a2900003703d004200a102c20182002290300370300200320032903d0043703d003200241acb0c200ad4280808080e000841002220a41086a2900003703002003200a2900003703d004200a102c200d20032903d0042206370300200341e0056a41086a2018290300370300200341e0056a41106a2006370300200341e0056a41186a2002290300370300200320063703e001200320032903d0033703e005200341286a200341e0056a4120109401200328022c410020032802281b210202402004a7450d002008102c0b2002200c4f0d00419d97c5002108411a2107410121090c2d0b200341d0036a41186a20034188056a41186a290300370300200341d0036a41106a20034188056a41106a290300370300200341d0036a41086a20034188056a41086a29030037030020032003290388053703d003200341003a00f003201742003703002016420037030020074200370300200342003703e001200341d0046a41086a220241bad6c500ad42808080809001841002220841086a290000370300200320082900003703d0042008102c20072002290300370300200320032903d004220637038002200320063703e00120024184c6c400ad4280808080c001841002220841086a290000370300200320082900003703d0042008102c200b20022903002206370300200320032903d00422043703900220092004370000200941086a2006370000200341c0016a41086a2007290300370300200341c0016a41106a2016290300370300200341c0016a41186a2017290300370300200320032903e0013703c001200341003602e805200342013703e0052003200341e0056a36028803200341d0036a20034188036a109402024020032d00f003220241024b0d00024002400240024020020e03000102000b410021070c020b410121070c010b410221070b200320073a00d0040240024020032802e40520032802e8052202460d0020032802e00521080c010b200241016a22072002490d31200241017422082007200820074b1b22074100480d310240024020020d002007102a21080c010b20032802e00520022007102e21080b2008450d30200320073602e405200320083602e00520032d00d004210720032802e80521020b2003200241016a3602e805200820026a20073a00000b20032802e4052102200341c0016aad428080808080048420033502e80542208620032802e0052207ad84100102402002450d002007102c0b410021080c2a0b200341f8056a200141196a290000370300200341f0056a200141116a290000370300200341e0056a41086a200141096a290000370300200320012900013703e00541cf8cc600210820022d0000417f6a220741024b0d210240024020070e03002301000b200241046a2d00000d22200241086a2802004102742002410c6a28020041036c490d220b200341d0036a41186a200341e0056a41186a290300370300200341d0036a41106a200341e0056a41106a290300370300200341d0036a41086a200341e0056a41086a290300370300200320032903e0053703d003200341023a00f003200341e0016a41186a4200370300200341e0016a41106a22094200370300200341e0016a41086a22074200370300200342003703e001200341d0046a41086a220241bad6c500ad42808080809001841002220841086a290000370300200320082900003703d0042008102c20072002290300370300200320032903d004220637038002200320063703e00120024184c6c400ad4280808080c001841002220841086a290000370300200320082900003703d0042008102c200920032903d0042206370300200341c0016a41086a2007290300370300200341c0016a41106a2006370300200341c0016a41186a20022903003703002003200637039002200320032903e0013703c00120034100360290052003420137038805200320034188056a36028803200341d0036a20034188036a109402024020032d00f003220241024b0d00024002400240024020020e03000102000b410021070c020b410121070c010b410221070b200320073a00d00402400240200328028c052003280290052202460d0020032802880521080c010b200241016a22072002490d30200241017422082007200820074b1b22074100480d300240024020020d002007102a21080c010b20032802880520022007102e21080b2008450d2f2003200736028c05200320083602880520032d00d004210720032802900521020b2003200241016a36029005200820026a20073a00000b200328028c052102200341c0016aad42808080808004842003350290054220862003280288052207ad8410012002450d202007102c0c200b200341f8056a200141196a290000370300200341f0056a200141116a290000370300200341e8056a200141096a290000370300200320012900013703e00541cf8cc600210820022d0000417f6a220741024b0d200240024020070e03002201000b200241086a2802002002410c6a280200490d21200241046a28020041ff01710d210b200341d0036a41186a200341e0056a41186a290300370300200341d0036a41106a200341e0056a41106a290300370300200341d0036a41086a200341e0056a41086a290300370300200320032903e0053703d003200341013a00f003200341e0016a41186a4200370300200341e0016a41106a22094200370300200341e0016a41086a22074200370300200342003703e001200341d0046a41086a220241bad6c500ad42808080809001841002220841086a290000370300200320082900003703d0042008102c20072002290300370300200320032903d004220637038002200320063703e00120024184c6c400ad4280808080c001841002220841086a290000370300200320082900003703d0042008102c200920032903d0042206370300200341c0016a41086a2007290300370300200341c0016a41106a2006370300200341c0016a41186a20022903003703002003200637039002200320032903e0013703c00120034100360290052003420137038805200320034188056a36028803200341d0036a20034188036a109402024020032d00f003220241024b0d00024002400240024020020e03000102000b410021070c020b410121070c010b410221070b200320073a00d00402400240200328028c052003280290052202460d0020032802880521080c010b200241016a22072002490d2f200241017422082007200820074b1b22074100480d2f0240024020020d002007102a21080c010b20032802880520022007102e21080b2008450d2e2003200736028c05200320083602880520032d00d004210720032802900521020b2003200241016a36029005200820026a20073a00000b200328028c052102200341c0016aad42808080808004842003350290054220862003280288052207ad8410012002450d1f2007102c0c1f0b200141286a280200210a200141246a2802002118200341a0036a200141196a29000037030020034198036a200141116a29000037030020034188036a41086a200141096a29000037030020032001290001370388034101210941cf8cc6002108410e210720022d0000417e6a221641014b0d290240024020160e020001000b200241046a2d00000d2a200241086a28020041036c2002410c6a280200410174490d2a0b200341e0016a41186a220b420037030041102107200341e0016a41106a22164200370300200341e0016a41086a22024200370300200342003703e001200341d0046a41086a220841bad6c500ad42808080809001841002221741086a290000370300200320172900003703d0042017102c20022008290300370300200320032903d004220637038002200320063703e00120084184c6c400ad4280808080c001841002221741086a290000370300200320172900003703d0042017102c201620032903d0042206370300200341c0016a41086a2002290300370300200341c0016a41106a2006370300200341c0016a41186a20082903003703002003200637039002200320032903e0013703c001200341d0036a200341c0016a10ea0320032d00f0032117200b200341d0036a41186a2903003703002016200341d0036a41106a2903003703002002200341d0036a41086a290300370300200320032903d0033703e0010240024020174103470d004101210241b797c50021080c010b200341a2016a20032d00e2013a0000200341a0026a41086a200341f3016a290000370300200341ad026a200b290000370000200320032f01e0013b01a001200320032900eb013703a0024100210220032800e701210720032800e30121080b200341d0056a41026a220b200341a0016a41026a2d00003a0000200341e0056a41086a200341a0026a41086a290300370300200341e0056a410d6a220c200341a0026a410d6a290000370000200320032f01a0013b01d005200320032903a0023703e00520020d292003419b056a200341e8056a290300370000200341a0056a200c290000370000200320032f01d0053b0188052003200736008f052003200836008b05200320032903e005370093052003200b2d00003a008a05024020170d0041c797c5002108412a21070c2a0b024020034188036a20034188056a412010dd05450d0041f197c5002108410c21070c2a0b200341e0016a41186a220b4200370300200341e0016a41106a220c4200370300200341e0016a41086a22074200370300200342003703e001200341d0046a41086a220241bad6c500ad42808080809001841002220841086a290000370300200320082900003703d0042008102c20072002290300370300200320032903d004220637038002200320063703e00120024184c6c400ad4280808080c001841002220841086a290000370300200320082900003703d0042008102c20034190026a41086a20022903002206370300200320032903d00422043703900220162004370000201641086a2006370000200341c0016a41086a2007290300370300200341c0016a41106a200c290300370300200341c0016a41186a200b290300370300200320032903e0013703c001200341c0016aad42808080808004841005200341d0036a41186a220b4200370300200341d0036a41106a22084200370300200341d0036a41086a22074200370300200342003703d00320024191b0c200ad4280808080e000841002221641086a290000370300200320162900003703d0042016102c20072002290300370300200320032903d0043703d003200241acb0c200ad4280808080e000841002221641086a290000370300200320162900003703d0042016102c200820032903d0042206370300200341e0056a41086a2007290300370300200341e0056a41106a2006370300200341e0056a41186a2002290300370300200320063703e001200320032903d0033703e005200341386a200341e0056a4120109401200328023c210220032802382116200b20034188036a41186a290300370300200820034188036a41106a290300370300200720034188036a41086a29030037030020032003290388033703d003410021082002410020161b20184180a30520184180a3054b1b6a200341d0036a2017200a10ca040c290b200341d8026a200141196a290000370300200341c0026a41106a200141116a290000370300200341c0026a41086a200141096a290000370300200320012900013703c00241cf8cc6002108410e210720022d00004102470d27200241236a2d00002116200241216a2f000021172002411f6a2d000021182002411d6a2f0000210a2002410f6a2d0000210b2002410d6a2f0000210c2002410b6a2d0000210d200241096a2f0000210e200241076a2d0000210f200241056a2f00002110200241246a2802002111200241206a2d00002112200241116a2900002106200241106a2d000021132002410c6a2d00002114200241086a2d00002115200241046a2d000021092003200241196a2800003602d803200320063703d00320094101470d272003201720164110747222023b01a40541102107200341a6056a20024110763a00002003200a20184110747222023b01a005200341a2056a20024110763a00002003200c200b4110747222023b01900520034192056a20024110763a000020032006a722023b01940520034196056a20024110763a0000200320113a00a705200320123a00a305200320032902d40337039805200320133a009305200320143a008f05200320153a008b05200320064218883c0097052003200e200d4110747222023b018c05200320024110763a008e0520032010200f4110747222023b018805200320024110763a008a05200341e0016a41186a22174200370300200341e0016a41106a22094200370300200341e0016a41086a22024200370300200342003703e001200341d0046a41086a220841bad6c500ad42808080809001841002221641086a290000370300200320162900003703d0042016102c20022008290300370300200320032903d004220637038002200320063703e00120084184c6c400ad4280808080c001841002221641086a290000370300200320162900003703d0042016102c200920032903d0042206370300200341c0016a41086a2002290300370300200341c0016a41106a2006370300200341c0016a41186a20082903003703002003200637039002200320032903e0013703c001200341d0036a200341c0016a10ea0320032d00f00321082017200341d0036a41186a22162903003703002009200341d0036a41106a22182903003703002002200341d0036a41086a220a290300370300200320032903d0033703e00120084103460d0220034188036a41186a2017290300220637030020034188036a41106a2009290300220437030020034188036a41086a20022903002205370300200320032903e001221a370388032016200637030020182004370300200a20053703002003201a3703d003419198c5002108200341c0026a200341d0036a412010dd050d27200341d0046a41086a220241bad6c500ad42808080809001841002220741086a290000370300200320072900003703d0042007102c20034180026a41086a22082002290300370300200320032903d00437038002200241bcfcc400ad42808080809001841002220741086a290000370300200320072900003703d0042007102c20034190026a41086a22072002290300370300200320032903d00437039002200341e0016a200341c0026a109f0141c000102a2202450d2a2002200329038002370000200241086a20082903003700002002200329039002370010200241186a2007290300370000200220032903e001370020200241286a200341e0016a41086a290300370000200241306a200341e0016a41106a290300370000200241386a200341e0016a41186a290300370000200341d0036a200241c00010ed0320032903d803210620032802d803211820032802d40321172002102c41002107024020170d0041012117410021184100210a0c1c0b2006a7210a41002102024002402006422088a7220b41014b0d00200b0e021d011d0b200b210703402007410176220820026a22162002201720164105746a20034188056a412010dd054101481b2102200720086b220741014b0d000b0b0240201720024105746a20034188056a412010dd0522070d0041a198c500210841262107200a450d282017102c410121090c290b200341d0036a41186a20034188056a41186a290300370300200341d0036a41106a20034188056a41106a290300370300200341d0036a41086a20034188056a41086a29030037030020032003290388053703d00302402007411f7620026a2216200b4b0d00200341d0036a2108200b21070c1d0b41ecb3c000411e41acfec5001036000b4101210920022d000120022d0000720d19200141046a28020010d20441002108410121160c280b4101210920022d000120022d0000720d18200141046a2802002117200341d0036a41186a4200370300200341d0036a41106a22164200370300200341d0036a41086a22074200370300200342003703d003200341d0046a41086a220241bad6c500ad42808080809001841002220841086a290000370300200320082900003703d0042008102c20072002290300370300200320032903d0043703d003200241b6c5c400ad4280808080d001841002220841086a290000370300200320082900003703d0042008102c201620032903d0042206370300200341e0056a41086a2007290300370300200341e0056a41106a2006370300200341e0056a41186a2002290300370300200320063703e001200320032903d0033703e005200341d0036a200341e0056a10f00320032802d0032202410420021b210c0240024020032902d403420020021b2206422088a722160d004100210b0c010b200c41246a210d410021184100210b410021080240034002400240200b450d00200c200841286c6a2102200c200820186a41286c6a21070340200820164f0d1d2017200241246a280200460d020240201820086a220a20164f0d0020072002290200370200200741206a200241206a290200370200200741186a200241186a290200370200200741106a200241106a290200370200200741086a200241086a290200370200200741286a2107200241286a2102200841016a22082016490d010c050b0b41fcb4c000200a20161038000b200d200841286c6a21020340200820164f0d1c20172002280200460d01200241286a2102200841016a22082016490d000b4100210b0c030b2018417f6a2118200b41016a210b200841016a22082016490d000b0b200b450d00200820164f0d00200c200841286c6a22024100200b6b41286c6a2002201620086b41286c10dc051a0b02402016200b6b220720164f0d00200341e0016a41186a4200370300200341e0016a41106a22174200370300200341e0016a41086a22084200370300200342003703e001200341d0046a41086a220241bad6c500ad42808080809001841002221641086a290000370300200320162900003703d0042016102c20082002290300370300200320032903d004220437038002200320043703e001200241b6c5c400ad4280808080d001841002221641086a290000370300200320162900003703d0042016102c201720032903d0042204370300200341c0016a41086a2008290300370300200341c0016a41106a2004370300200341c0016a41186a20022903003703002003200437039002200320032903e0013703c001200341203602d4032003200341c0016a3602d003200c2007200341d0036a10e204410021082006a7450d17200c102c410121160c280b41aa99c5002108411221072006a7450d26200c102c0c260b41fd97c500210841142107410121090c250b200341d0046a41146a4109360200200341dc046a410c36020020034188036a41146a41033602002003420337028c03200341ec9fc600360288032003410c3602d404200320034180026a3602a001200320034190026a3602e001200342043703e003200342013702d403200341c0a0c6003602d0032003200341d0046a360298032003200341d0036a3602e0042003200341e0016a3602d8042003200341a0016a3602d00420034188036a41fca0c6001041000b200820171047000b20092017103f000b200220091047000b103a000b41d696c5002108412521070c1f0b200341e8046a41186a200141196a290000370300200341e8046a41106a200141116a290000370300200341e8046a41086a200141096a290000370300200320012900013703e8042002411a6a2901002106200241196a2d00002107200241186a2d00002108200241166a2f01002109200241156a2d0000210a200241146a2d0000210b200241126a2f0100210c200241116a2d0000210d200241106a2d0000210e2002410e6a2f0100210f2002410d6a2d000021102002410c6a2d000021112002410a6a2f01002112200241096a2d00002113200241046a2d00002114200241026a2f0100211502400240024020022d0000450d00200320063702d403200320073a00d303200320083a00d203200320093b01d0030c010b200241086a2d00002116200241066a2f01002117200241056a2d0000211820022d00012119200320063703d00341002102201941ff01714101460d010b410121024100211741022118410021160b200320063701d801200320073a00d701200320083a00d601200320093b01d4012003200a3a00d3012003200b3a00d2012003200c3b01d0012003200d3a00cf012003200e3a00ce012003200f3b01cc01200320103a00cb01200320113a00ca01200320123b01c801200320133a00c701200320143a00c201200320153b01c0012003201741ffff0371410874201841ff01717220164118747222093600c30102402002450d0041d6b2c0002108410f210702400240024020090e051100010221110b410e210741dd8cc6002108410121090c210b4113210741c3b2c0002108410121090c200b4111210741b2b2c0002108410121090c1f0b200341c0026a41186a200341c0016a41186a290100370300200341c0026a41106a200341c0016a41106a290100370300200341c0026a41086a200341c0016a41086a290100370300200320032901c0013703c002200341d0046a41086a220241bad6c500ad42808080809001841002220741086a290000370300200320072900003703d0042007102c20034180026a41086a2002290300370300200320032903d00437038002200241c3c5c400ad42808080809001841002220741086a290000370300200320072900003703d0042007102c20034190026a41086a2002290300370300200320032903d00437039002200341e0016a200341e8046a109f0141c000102a2202450d202002200329038002370000200241086a20034180026a41086a2903003700002002200329039002370010200241186a20034190026a41086a290300370000200220032901e001370020200241286a200341e0016a41086a290100370000200241306a200341e0016a41106a290100370000200241386a200341e0016a41186a290100370000200341d0036a200241c00010ef03200341e0056a41086a2216200341d0036a41206a290300370300200341e0056a41106a200341d0036a41286a290300370300200341e0056a41186a2208200341d0036a41306a290300370300200341e0056a41206a2207200341d0036a41386a2802003602002003200341d0036a41186a2903003703e005024020032802e0032217450d00200341d0036a410c6a35020021052003418c046a280200211820032902d403210420032802e403210a20032802d003210d20034188056a41206a220b200728020036020020034188056a41186a2207200829030037030020034188056a41106a2208200341e0056a41106a220c29030037030020034188056a41086a22092016290300370300200320032903e005370388052002102c20034188036a41206a200b28020036020020034188036a41186a200729030037030020034188036a41106a200829030037030020034188036a41086a20092903003703002003200329038805370388032007200341a4036a29020037030020082003419c036a290200370300200920034188036a410c6a2902003703002003200329028c03370388050240200a450d002017102c0b200341d0036a41186a22164200370300200341d0036a41106a22084200370300200341d0036a41086a22074200370300200342003703d003200341d0046a41086a22024191b0c200ad4280808080e000841002220941086a290000370300200320092900003703d0042009102c20072002290300370300200320032903d0043703d003200241acb0c200ad4280808080e000841002220941086a290000370300200320092900003703d0042009102c200820032903d0042206370300200341e0056a41086a22092007290300370300200c2006370300200341e0056a41186a22172002290300370300200320063703e001200320032903d0033703e00520034198016a200341e0056a41201094010240200328029c0141002003280298011b20184180de344100200341c0026a20034188056a412010dd051b6a41809c316a4f0d0041092107419099c5002108410121090c200b200542208620044220888421052004422086200dad84211a20164200370300200341d0036a41106a220a420037030020074200370300200342003703d003200241bad6c500ad42808080809001841002221841086a290000370300200320182900003703d0042018102c20072002290300370300200320032903d0043703d003200241b6c5c400ad4280808080d001841002221841086a290000370300200320182900003703d0042018102c200341e0016a41086a20022903002206370300200320032903d00422043703e00120082004370000200841086a200637000020092007290300370300200341e0056a41106a200a29030037030020172016290300370300200320032903d0033703e005200341d0036a200341e0056a10f00320032802d0032202410420021b221620032902d403420020021b2206422088a741286c6a21082016210202400240034020022008460d010240200341e8046a200241046a2207460d00200741246a21022007200341e8046a412010dd050d010b0b410821072006a70d01419999c5002108410121090c210b200341d0036a20034188056a200341c0026a201a200510c001200341d0046a41086a220241bad6c500ad42808080809001841002220741086a290000370300200320072900003703d0042007102c20034180026a41086a22082002290300370300200320032903d00437038002200241c3c5c400ad42808080809001841002220741086a290000370300200320072900003703d0042007102c20034190026a41086a22072002290300370300200320032903d00437039002200341e0016a200341e8046a109f0141c000102a2202450d222002200329038002370000200241086a20082903003700002002200329039002370010200241186a2007290300370000200220032901e001370020200241286a200341e0016a41086a290100370000200241306a200341e0016a41106a290100370000200241386a200341e0016a41186a2901003700002002ad428080808080088410052002102c200341d0036a41086a410f3a0000200341d9036a20032903e804370000200341e1036a200341e8046a41086a290300370000200341e9036a200341e8046a41106a290300370000200341f1036a200341e8046a41186a290300370000200341f9036a20032903880537000020034181046a20034188056a41086a29030037000020034189046a20034188056a41106a29030037000020034191046a20034188056a41186a290300370000200341063a00d003200341c0046a201a370300200341c8046a2005370300200341b1046a200341c0026a41186a290300370000200341a9046a200341c0026a41106a290300370000200341a1046a200341c0026a41086a29030037000020034199046a20032903c002370000410021084101210941014100200341d0036a1092012006a7450d102016102c410121160c210b2016102c419999c5002108410121090c1f0b2002102c41092107410121094101211641a199c50021080c1f0b2001410c6a280200211d200141086a280200211c200141046a280200210a2002411a6a2901002106200241196a2d00002107200241186a2d00002108200241166a2f01002109200241156a2d0000210b200241146a2d0000210c200241126a2f0100210d200241116a2d0000210e200241106a2d0000210f2002410e6a2f010021102002410d6a2d000021112002410c6a2d000021122002410a6a2f01002113200241096a2d00002114200241046a2d00002115200241026a2f0100211902400240024020022d0000450d00200320063702d403200320073a00d303200320083a00d203200320093b01d0030c010b200241086a2d00002116200241066a2f01002117200241056a2d0000211820022d0001211e200320063703d00341002102201e41ff01714101460d010b410121024100211741022118410021160b200320063701d801200320073a00d701200320083a00d601200320093b01d4012003200b3a00d3012003200c3a00d2012003200d3b01d0012003200e3a00cf012003200f3a00ce01200320103b01cc01200320113a00cb01200320123a00ca01200320133b01c801200320143a00c701200320153a00c201200320193b01c0012003201741ffff0371410874201841ff01717220164118747222093600c301024002402002450d0041d6b2c0002108410f2107024002400240024020090e050001020305000b20032800c701210820032800cb0121070c040b41dd8cc6002108410e21070c030b41c3b2c0002108411321070c020b41b2b2c0002108411121070c010b20034188036a41186a200341c0016a41186a29010037030020034188036a41106a200341c0016a41106a29010037030020034188036a41086a200341c0016a41086a290100370300200320032901c00137038803200341d0036a41186a2207201dad422086200aad841006220241186a290000370300200341d0036a41106a2208200241106a290000370300200341d0036a41086a2209200241086a290000370300200320022900003703d0032002102c20034188056a41186a200729030037030020034188056a41106a200829030037030020034188056a41086a2009290300370300200320032903d00337038805200341d0046a41086a220241bad6c500ad42808080809001841002220741086a290000370300200320072900003703d0042007102c20034180026a41086a2002290300370300200320032903d00437038002200241c3c5c400ad42808080809001841002220741086a290000370300200320072900003703d0042007102c20034190026a41086a2002290300370300200320032903d00437039002200341e0016a20034188056a109f0141c000102a2202450d202002200329038002370000200241086a20034180026a41086a2903003700002002200329039002370010200241186a20034190026a41086a290300370000200220032901e001370020200241286a200341e0016a41086a290100370000200241306a200341e0016a41106a290100370000200241386a200341e0016a41186a29010037000020034190016a200241c00041014100410010970120032802900121072002102c024020074101470d0041ee98c5002108411621070c010b200341d0036a41186a4200370300200341d0036a41106a22094200370300200341d0036a41086a22074200370300200342003703d003200341d0046a41086a220241bad6c500ad42808080809001841002220841086a290000370300200320082900003703d0042008102c20072002290300370300200320032903d0043703d003200241b6c5c400ad4280808080d001841002220841086a290000370300200320082900003703d0042008102c200920032903d0042206370300200341e0056a41086a2007290300370300200341e0056a41106a2006370300200341e0056a41186a2002290300370300200320063703e001200320032903d0033703e005200341d0036a200341e0056a10f00320032802d0032202410420021b221720032902d403420020021b2206422088a741286c6a2108201721020240034020022008460d01024020034188056a200241046a2207460d00200741246a2102200720034188056a412010dd050d010b0b200341d0036a41186a22084200370300200341d0036a41106a22184200370300200341d0036a41086a22024200370300200342003703d003200341d0046a41086a22074191b0c200ad4280808080e000841002221641086a290000370300200320162900003703d0042016102c20022007290300370300200320032903d0043703d003200741acb0c200ad4280808080e000841002221641086a290000370300200320162900003703d0042016102c200341e0016a41086a20072903002204370300200320032903d00422053703e00120092005370000200941086a2004370000200341e0056a41086a22072002290300370300200341e0056a41106a22092018290300370300200341e0056a41186a22162008290300370300200320032903d0033703e00520034188016a200341e0056a4120109401200328028c012118200328028801210b201620034188056a41186a220c290300370300200920034188056a41106a220d290300370300200720034188056a41086a220929030037030020032003290388053703e0052008201d360200200341e4036a201c360200200341f4036a20034188036a41086a2207290300370200200341fc036a20034188036a41106a220829030037020020034184046a20034188036a41186a220e290300370200200342003703d803200342003703d0032003200a3602e00320032003290388033702ec0341002116200320184100200b1b36028c04200341e0056a200341d0036a10e304200341a8046a4200370300200341a0046a42003703002002410b3a0000200341d9036a200329038805370000200341e1036a2009290300370000200341e9036a200d290300370000200341f1036a200c290300370000200341f9036a20032903880337000020034181046a200729030037000020034189046a200829030037000020034191046a200e290300370000200341063a00d0034101210941014100200341d0036a10920102402006a7450d002017102c0b410021080c200b418499c5002108410c21072006a7450d002017102c0b4100211641012109201c450d1e200a102c0c1e0b2001410c6a280200211d200141086a280200210b200141046a280200210a2002411a6a2901002106200241196a2d00002107200241186a2d00002108200241166a2f01002109200241156a2d0000210c200241146a2d0000210d200241126a2f0100210e200241116a2d0000210f200241106a2d000021102002410e6a2f010021112002410d6a2d000021122002410c6a2d000021132002410a6a2f01002114200241096a2d00002115200241046a2d00002119200241026a2f0100211c02400240024020022d0000450d00200320063702d403200320073a00d303200320083a00d203200320093b01d0030c010b200241086a2d00002116200241066a2f01002117200241056a2d0000211820022d0001211e200320063703d00341002102201e41ff01714101460d010b410121024100211741022118410021160b200320063701d801200320073a00d701200320083a00d601200320093b01d4012003200c3a00d3012003200d3a00d2012003200e3b01d0012003200f3a00cf01200320103a00ce01200320113b01cc01200320123a00cb01200320133a00ca01200320143b01c801200320153a00c701200320193a00c2012003201c3b01c0012003201741ffff0371410874201841ff01717220164118747222093600c301024002402002450d0041d6b2c0002108410f2107024002400240024020090e050001020305000b20032800c701210820032800cb0121070c040b41dd8cc6002108410e21070c030b41c3b2c0002108411321070c020b41b2b2c0002108411121070c010b20034188036a41186a200341c0016a41186a29010037030020034188036a41106a200341c0016a41106a29010037030020034188036a41086a200341c0016a41086a290100370300200320032901c00137038803200341d0036a41186a2207201dad2206422086200aad841006220241186a290000370300200341d0036a41106a2208200241106a290000370300200341d0036a41086a2209200241086a290000370300200320022900003703d0032002102c20034188056a41186a200729030037030020034188056a41106a200829030037030020034188056a41086a2009290300370300200320032903d00337038805200341d0046a41086a220241bad6c500ad42808080809001841002220741086a290000370300200320072900003703d0042007102c20034180026a41086a2002290300370300200320032903d00437038002200241c3c5c400ad42808080809001841002220741086a290000370300200320072900003703d0042007102c20034190026a41086a2002290300370300200320032903d00437039002200341e0016a20034188056a109f0141c000102a2202450d1f2002200329038002370000200241086a20034180026a41086a2903003700002002200329039002370010200241186a20034190026a41086a290300370000200220032901e001370020200241286a200341e0016a41086a290100370000200241306a200341e0016a41106a290100370000200241386a200341e0016a41186a29010037000020034180016a200241c00041014100410010970120032802800121072002102c024020074101470d0041ee98c5002108411621070c010b200341e8006a200642004280a094a58d1d420010e005200341f8006a20034188036a20032903682206200341e8006a41086a290300220410c101024020032802782208450d00200328027c21070c010b200341d0036a41186a22094200370300200341d0036a41106a22164200370300200341d0036a41086a22024200370300200342003703d003200341d0046a41086a22074191b0c200ad4280808080e000841002220841086a290000370300200320082900003703d0042008102c20022007290300370300200320032903d0043703d003200741acb0c200ad4280808080e000841002220841086a290000370300200320082900003703d0042008102c201620032903d0042205370300200341e0056a41086a22082002290300370300200341e0056a41106a22162005370300200341e0056a41186a22172007290300370300200320053703e001200320032903d0033703e005200341e0006a200341e0056a41201094012003280264210720032802602118201720034188056a41186a220c290300370300201620034188056a41106a2217290300370300200820034188056a41086a221629030037030020032003290388053703e0052009201d360200200341e4036a200b360200200341f4036a20034188036a41086a2208290300370200200341fc036a20034188036a41106a220b29030037020020034184046a20034188036a41186a220d290300370200200320043703d803200320063703d0032003200a3602e00320032003290388033702ec034100210920032007410020181b36028c04200341e0056a200341d0036a10e304200341a8046a2004370300200341a0046a20063703002002410b3a0000200341d9036a200329038805370000200341e1036a2016290300370000200341e9036a2017290300370000200341f1036a200c290300370000200341f9036a20032903880337000020034181046a200829030037000020034189046a200b29030037000020034191046a200d290300370000200341063a00d0034101211641014100200341d0036a109201410021080c1e0b4101211641002109200b450d1d200a102c0c1d0b4101210920022d000120022d0000720d0d200341e0016a41186a4200370300200341e0016a41106a22164200370300200341e0016a41086a22074200370300200342003703e001200341d0046a41086a220241bad6c500ad42808080809001841002220841086a290000370300200320082900003703d0042008102c20072002290300370300200320032903d004220637038002200320063703e001200241d5c5c400ad4280808080b001841002220841086a290000370300200320082900003703d0042008102c201620032903d0042206370300200341c0016a41086a2007290300370300200341c0016a41106a2006370300200341c0016a41186a20022903003703002003200637039002200320032903e0013703c001200341c0016aad4280808080800484100541002108410121160c1c0b200241196a2d00002117200241186a2d00002118200241166a2f0100210a2002411a6a2901002106200241156a3100002104200241146a3100002105200241126a330100211a200241116a2d00002113200241106a2d0000210b2002410e6a2f0100210c2002410d6a2d000021112002410c6a2d0000210d2002410a6a2f0100210e200241096a2d00002112200241046a2d0000211441022116200241026a2f01002115024002400240024020022d0000450d00200320063702d403200320173a00d303200320183a00d2032003200a3b01d003410121070c010b200241086a2d00002108200241066a2f01002109200241056a2d0000211d20022d00012102200320063703d00341012107200241ff01714101460d010b41002109410021080c010b2006423888a7211c2006422088a721102006421888a721192006a7210f41002107201d21160b200b411074200c41ffff037172210b200d411074200e41ffff037172210c2008411074200941ffff037172210202402007450d0041d6b2c0002108410f210702402002410874201641ff0171720e050008090a1b000b200c4108742012722108200b4108742011722107410121090c1b0b200320103b01bc02200341be026a20104110763a00002003200f3b01b802200341ba026a200f4110763a00002003200b3b01ac02200341ae026a200b4110763a00002003200c3b01a802200341aa026a200c4110763a0000200320143a00a202200320153b01a0022003201c3a00bf02200320193a00bb02200320133a00af02200320113a00ab02200320123a00a702200320163a00a302200320023b01a402200320024110763a00a60220032005421086201a84200442188684200aad42ffff0383422086842018ad42ff0183423086842017ad42ff0183423886843703b002200341d0046a41086a220241bad6c500ad42808080809001841002220741086a290000370300200320072900003703d0042007102c20034180026a41086a22082002290300370300200320032903d00437038002200241e0b4c400ad4280808080b001841002220741086a290000370300200320072900003703d0042007102c20034190026a41086a22072002290300370300200320032903d0043703900220034188036a200341a0026a109f0141c000102a2202450d1c2002200329038002370000200241086a20082903003700002002200329039002370010200241186a20072903003700002002200329038803370020200241286a20034188036a41086a290300370000200241306a20034198036a290300370000200241386a20034188036a41186a290300370000200341d8006a200241c000410141004100109701200328025821072002102c024020074101460d0041e198c5002108410d2107410121090c1b0b200341d0046a41086a220241bad6c500ad42808080809001841002220741086a290000370300200320072900003703d0042007102c20034180026a41086a22082002290300370300200320032903d00437038002200241e0b4c400ad4280808080b001841002220741086a290000370300200320072900003703d0042007102c20034190026a41086a22072002290300370300200320032903d0043703900220034188036a200341a0026a109f0141c000102a2202450d1c2002200329038002370000200241086a20082903003700002002200329039002370010200241186a20072903003700002002200329038803370020200241286a20034188036a41086a290300370000200241306a20034188036a41106a290300370000200241386a20034188036a41186a290300370000200341d0036a200241c00010e803024020032d00f103220841024622160d002002ad428080808080088410050b200341e8046a41186a2209200341d0036a41186a290300370300200341e8046a41106a2217200341d0036a41106a290300370300200341e8046a41086a2218200341d0036a41086a2207290300370300200320032903d0033703e80420032d00f003210a200341c0026a200341d0036a41226a41c10010db051a200341e0016a41086a220b2018290300370300200341e0016a41106a2017290300370300200341e0016a41186a2009290300370300200320032903e8043703e00120034188036a200341c0026a41c10010db051a41072109024020160d00200341c0016a41186a200341e0016a41186a290300370300200341c0016a41106a200341e0016a41106a290300370300200341c0016a41086a200b290300370300200320032903e0013703c001200320083a00880520034188056a41017220034188036a41c10010db05211620034188056a41226a21090240024020032d00a9054101460d00200341003602d0050c010b200341d0056a200910d50420032d00880521080b02400240024002400240200841ff01714101460d0020034100360280020c010b20034180026a201610d5042003280280020d010b024020032d00a9054101460d00200341d0036a10d00420033502d80342208620032802d0032208ad84100520032802d403450d022008102c0c020b200341d0036a10d00420032802d0032108200320032802d8033602e405200320083602e0052009200341e0056a10a10220032802d403450d012008102c0c010b20034190026a41086a20034180026a41086a28020022093602002003200329038002220637039002200341e0056a2006a72217200910e8030240024020032d0081064102470d00200341003602d804200342013703d004200341a0016a41146a410d360200200341ac016a410b360200200341093602cc06200341bad6c5003602c8062003410b3602a4012003410b3602d406200341e0b4c4003602d006200320034190026a3602b0012003200341d0066a3602a8012003200341c8066a3602a0012003200341d0046a3602dc06200341d0036a41146a4103360200200342033702d403200341849dc5003602d0032003200341a0016a3602e003200341dc066a41c49ac500200341d0036a10391a20033502d80442208620033502d00484100420032802d404450d0120032802d004102c0c010b200341d0036a200341e0056a41c20010db051a200341b2046a200341a9056a220841206a2d00003a0000200341aa046a200841186a290000370100200341a2046a200841106a2900003701002003419a046a200841086a290000370100200341d0036a41c2006a2008290000370100200341003602a801200342013703a001200341d0036a200341a0016a109101024020032d00f003220841064b0d000240024002400240024002400240024020080e0700010203040506000b410021160c060b410121160c050b410221160c040b410321160c030b410421160c020b410521160c010b410621160b200320163a00d0040240024020032802a40120032802a8012208460d0020032802a00121180c010b200841016a22162008490d23200841017422182016201820164b1b22164100480d230240024020080d002016102a21180c010b20032802a00120082016102e21180b2018450d22200320163602a401200320183602a00120032d00d004211620032802a80121080b2003200841016a3602a801201820086a20163a00000b200341f1036a200341a0016a10a30220032802a40121082009ad4220862017ad8420033502a80142208620032802a0012209ad8410012008450d002009102c0b0240200328029402450d00200328029002102c0b410121090c010b410021090b0240024020032802d00522080d00410021160c010b20034190026a41086a200341d0056a41086a2802002217360200200320032903d005220637039002200341e0056a2006a7220b201710e8030240024020032d0081064102470d00200341003602a801200342013703a001200341d0046a41146a410d360200200341dc046a410b360200200341093602cc06200341bad6c5003602c8062003410b3602d4042003410b3602d406200341e0b4c4003602d006200320034190026a3602e0042003200341d0066a3602d8042003200341c8066a3602d0042003200341a0016a3602dc06200341d0036a41146a4103360200200342033702d403200341a89cc5003602d0032003200341d0046a3602e003200341dc066a41c49ac500200341d0036a10391a20033502a80142208620033502a00184100420032802a401450d0120032802a001102c0c010b200341d0036a200341e0056a41e30010db051a20034191046a200341a8056a2d00003a000020034189046a200341a0056a29030037000020034181046a20034198056a290300370000200341f9036a20034188056a41086a29030037000020032003290388053700f103200341003602a801200342013703a001200341d0036a200341a0016a109101024020032d00f003221641064b0d000240024002400240024002400240024020160e0700010203040506000b410021180c060b410121180c050b410221180c040b410321180c030b410421180c020b410521180c010b410621180b200320183a00d0040240024020032802a40120032802a8012216460d0020032802a001210c0c010b201641016a22182016490d222016410174220c2018200c20184b1b22184100480d220240024020160d002018102a210c0c010b20032802a00120162018102e210c0b200c450d21200320183602a4012003200c3602a00120032d00d004211820032802a80121160b2003201641016a3602a801200c20166a20183a00000b200341f1036a200341a0016a10a30220032802a40121162017ad422086200bad8420033502a80142208620032802a0012217ad8410012016450d002017102c0b0240200328029402450d00200328029002102c0b410121160b02402009200328028002221745720d00200328028402450d002017102c0b02402016200845720d0020032802d405450d002008102c0b200a21090b2002102c200341d0036a41186a4200370300200341d0036a41106a2216420037030020074200370300200342003703d003200341d0046a41086a22024191b0c200ad4280808080e000841002220841086a290000370300200320082900003703d0042008102c20072002290300370300200320032903d0043703d003200241acb0c200ad4280808080e000841002220841086a290000370300200320082900003703d0042008102c201620032903d0042206370300200341e0056a41086a2007290300370300200341e0056a41106a2006370300200341e0056a41186a2002290300370300200320063703e001200320032903d0033703e005200341d0006a200341e0056a4120109401200342e4cab5fbb6ccdcb0e300370388054100210820034188056a200341a0026a427f427f41002009200941ff01714107461b4118744118754102744180d6c5006a2802004180de346c2003280254410020032802501b6a410210be01200741093a0000200341d0036a41096a20032903a002370000200341e1036a200341a0026a41086a290300370000200341e9036a200341a0026a41106a290300370000200341f1036a200341a0026a41186a290300370000200341063a00d00341014100200341d0036a1092010c180b200141216a2d00002116200341a0016a41186a200141196a290000370300200341a0016a41106a200141116a290000370300200341a0016a41086a200141096a290000370300200320012900013703a0012002411a6a2901002106200241196a2d00002107200241186a2d00002108200241166a2f01002109200241156a2d0000210b200241146a2d0000210c200241126a2f0100210d200241116a2d0000210e200241106a2d0000210f2002410e6a2f010021102002410d6a2d000021112002410c6a2d000021122002410a6a2f01002113200241096a2d00002114200241046a2d00002115200241026a2f0100211902400240024020022d0000450d00200320063702d403200320073a00d303200320083a00d203200320093b01d0030c010b200241086a2d00002117200241066a2f01002118200241056a2d0000210a20022d0001211c200320063703d00341002102201c41ff01714101460d010b41012102410021184102210a410021170b200320063703d801200320073a00d701200320083a00d601200320093b01d4012003200b3a00d3012003200c3a00d2012003200d3b01d0012003200e3a00cf012003200f3a00ce01200320103b01cc01200320113a00cb01200320123a00ca01200320133b01c801200320143a00c701200320153a00c201200320193b01c0012003201841ffff0371410874200a41ff01717220174118747222093600c30102402002450d0041d6b2c0002108410f210720090e050906070819090b200341a0026a41186a200341c0016a41186a290300370300200341a0026a41106a200341c0016a41106a290300370300200341a0026a41086a200341c0016a41086a290300370300200320032903c0013703a002200341d0046a41086a220241bad6c500ad42808080809001841002220741086a290000370300200320072900003703d0042007102c20034180026a41086a2002290300370300200320032903d00437038002200241e0b4c400ad4280808080b001841002220741086a290000370300200320072900003703d0042007102c20034190026a41086a2002290300370300200320032903d00437039002200341e0016a200341a0026a109f0141c000102a2202450d1b2002200329038002370000200241086a20034180026a41086a2903003700002002200329039002370010200241186a20034190026a41086a290300370000200220032903e001370020200241286a200341e0016a41086a290300370000200241306a200341e0016a41106a290300370000200241386a200341e0016a41186a290300370000200341e0056a200241c00010e80302400240024020032d00810622074102470d002003200341a0026a3602d006200341d0036a10d004200341c0026a20032802d003220720032802d80310d301024020032802d403450d002007102c0b024020032d00c0020d00200341d0036a10d00420032802d0032107200320032802d80336028c052003200736028805200341a0026a20034188056a10a10220032802d403450d022007102c0c020b200341e8046a41186a200341d9026a290000370300200341e8046a41106a200341d1026a290000370300200341e8046a41086a200341c0026a41096a290000370300200320032900c1023703e804200341c0016a200341e8046a10d504200341d0036a20032802c001220920032802c801221710e803024020032d00f1034102470d0020034100360290032003420137038803200341d0046a41146a410d360200200341dc046a410b3602002003410936029402200341bad6c500360290022003410b3602d4042003410b3602e401200341e0b4c4003602e0012003200341c0016a3602e0042003200341e0016a3602d804200320034190026a3602d004200320034188036a3602800220034188056a41146a41033602002003420337028c05200341c09dc500360288052003200341d0046a3602980520034180026a41c49ac50020034188056a10391a20033502900342208620033502880384100420032802d006210820034188056a10d004200328028805210720032003280290053602e401200320073602e0012008200341e0016a10a1020240200328028c05450d002007102c0b0240200328028c03450d00200328028803102c0b20032802c401450d0220032802c001102c0c020b20034188056a200341f1036a41c20010db051a20032d00a905210720034188036a41206a2208200341d0036a41206a2d00003a000020034188036a41186a200341d0036a41186a29030037030020034188036a41106a200341d0036a41106a29030037030020034188036a41086a200341d0036a41086a290300370300200341b0036a200341aa056a410020074101461b360200200320032903d003370388032003200341d0066a3602ac03200341003602e801200342013703e00120034188036a200341e0016a109101024020082d0000220741064b0d000240024002400240024002400240024020070e0700010203040506000b410021080c060b410121080c050b410221080c040b410321080c030b410421080c020b410521080c010b410621080b200320083a00d0040240024020032802e40120032802e8012207460d0020032802e00121180c010b200741016a22082007490d21200741017422182008201820084b1b22084100480d210240024020070d002008102a21180c010b20032802e00120072008102e21180b2018450d20200320083602e401200320183602e00120032d00d004210820032802e80121070b2003200741016a3602e801201820076a20083a00000b200341ac036a200341e0016a10a20220032802e40121072017ad4220862009ad8420033502e80142208620032802e0012208ad84100102402007450d002008102c0b024020032802c401450d0020032802c001102c0b20032802d0062108200341d0036a10d00420032802d0032107200320032802d80336028c052003200736028805200820034188056a10a102024020032802d403450d002007102c0b20034188036a41086a200341e8046a41086a29030037030020034188036a41106a200341e8046a41106a29030037030020034188036a41186a200341e8046a41186a290300370300200320032903e8043703880341012108410021070c020b20034188056a41186a2003419a066a29010037030020034188056a41106a20034192066a29010037030020034188056a41086a2003418a066a29010037030020034188036a41086a200341ab066a29000037030020034188036a41106a200341b3066a29000037030020034188036a41186a200341bb066a2900003703002003200329018206370388052003200341a3066a29000037038803200341a2066a2d000021080c010b41002108410021070b200341d9036a200329038805370000200341f9036a20083a0000200341fa036a200329038803370100200341e1036a20034188056a41086a290300370000200341e9036a20034188056a41106a290300370000200341f1036a20034188056a41186a29030037000020034182046a20034188036a41086a2903003701002003418a046a20034188036a41106a29030037010020034192046a20034188036a41186a290300370100200320073a00d803200320163a00d4032003200341a0016a3602d003200341003602e805200342013703e005200341a0016a200341e0056a1091010240201641064b0d000240024002400240024002400240024020160e0700010203040506000b410021080c060b410121080c050b410221080c040b410321080c030b410421080c020b410521080c010b410621080b200320083a00d0040240024020032802e40520032802e8052207460d0020032802e00521090c010b200741016a22082007490d1e200741017422092008200920084b1b22084100480d1e0240024020070d002008102a21090c010b20032802e00520072008102e21090b2009450d1d200320083602e405200320093602e00520032d00d004210820032802e80521070b2003200741016a3602e805200920076a20083a00000b200341d0036a41086a200341e0056a10a30220032802e40521072002ad428080808080088420033502e80542208620032802e0052208ad84100102402007450d002008102c0b2002102c200342e4cab5fbb6ccdcb0e3003703d005200341d0056a200341a0026a417f10bd01200341d0036a41086a41083a0000200341d9036a20032903a002370000200341e1036a200341a0026a41086a290300370000200341e9036a200341a0026a41106a290300370000200341f1036a200341a0026a41186a290300370000200341f9036a20032903a00137000020034181046a200341a0016a41086a29030037000020034189046a200341a0016a41106a29030037000020034191046a200341a0016a41186a290300370000200341063a00d003410021084101210941014100200341d0036a109201410121160c1a0b20034188036a41186a200141196a29000037030020034188036a41106a200141116a29000037030020034188036a41086a200141096a29000037030020032001290001370388032002411a6a2901002106200241196a2d00002107200241186a2d00002108200241166a2f01002109200241156a2d0000210a200241146a2d0000210b200241126a2f0100210c200241116a2d0000210d200241106a2d0000210e2002410e6a2f0100210f2002410d6a2d000021102002410c6a2d000021112002410a6a2f01002112200241096a2d00002113200241046a2d00002114200241026a2f0100211502400240024020022d0000450d00200320063702d403200320073a00d303200320083a00d203200320093b01d0030c010b200241086a2d00002116200241066a2f01002117200241056a2d0000211820022d00012119200320063703d00341002102201941ff01714101460d010b410121024100211741022118410021160b200320063703d801200320073a00d701200320083a00d601200320093b01d4012003200a3a00d3012003200b3a00d2012003200c3b01d0012003200d3a00cf012003200e3a00ce012003200f3b01cc01200320103a00cb01200320113a00ca01200320123b01c801200320133a00c701200320143a00c201200320153b01c0012003201741ffff0371410874201841ff01717220164118747222093600c30102402002450d0041d6b2c0002108410f210720090e050805060718080b20034188056a41186a200341c0016a41186a29030037030020034188056a41106a200341c0016a41106a29030037030020034188056a41086a200341c0016a41086a290300370300200320032903c00137038805200341d0046a41086a220241bad6c500ad42808080809001841002220741086a290000370300200320072900003703d0042007102c20034180026a41086a2002290300370300200320032903d0043703800220024188fbc400ad4280808080d000841002220741086a290000370300200320072900003703d0042007102c20034190026a41086a2002290300370300200320032903d00437039002200341e0016a20034188036a109f0141c000102a2202450d1a2002200329038002370000200241086a20034180026a41086a2903003700002002200329039002370010200241186a20034190026a41086a290300370000200220032903e001370020200241286a200341e0016a41086a2208290300370000200241306a200341e0016a41106a2209290300370000200241386a200341e0016a41186a2207290300370000200341d0036a200241c00010d3012008200341d9036a2900003703002009200341e1036a2900003703002007200341e9036a290000370300200320032900d1033703e001410121090240024020032d00d0034101460d00410021160c010b200341a2016a20032d00e2013a0000200341a0026a41086a200341f3016a290000370300200341ad026a2007290000370000200320032f01e0013b01a001200320032900eb013703a0024101211620032800e701210720032800e30121080b2002102c0240024020160d00410b210741cb96c50021080c010b200341d0056a41026a200341a0016a41026a2d00003a0000200341c0026a41086a200341a0026a41086a290300370300200341c0026a410d6a200341a0026a410d6a290000370000200320032f01a0013b01d005200320032903a0023703c002410021090b200341d0066a41026a2202200341d0056a41026a2d00003a0000200341e8046a41086a2216200341c0026a41086a290300370300200341e8046a41106a200341c0026a41106a290300370300200320032f01d0053b01d006200320032903c0023703e80420090d17200341f3056a2016290300370000200341e0056a41186a200341f5046a290000370000200320032f01d0063b01e005200320073600e705200320083600e305200320032903e8043700eb05200320022d00003a00e2050240200341e0056a20034188056a412010dd05450d0041d698c5002108410b2107410121090c190b200341d0036a41186a20034188036a41186a290300370300200341d0036a41106a20034188036a41106a290300370300200341d0036a41086a20034188036a41086a29030037030020032003290388033703d003200341d0036a10e404410021080c160b2002411a6a2901002106200241196a2d00002107200241186a2d00002108200241166a2f01002109200241156a2d0000210a200241146a2d0000210b200241126a2f0100210c200241116a2d0000210d200241106a2d0000210e2002410e6a2f0100210f2002410d6a2d000021102002410c6a2d000021112002410a6a2f01002112200241096a2d00002113200241046a2d00002114200241026a2f0100211502400240024020022d0000450d00200320063702d403200320073a00d303200320083a00d203200320093b01d0030c010b200241086a2d00002116200241066a2f01002117200241056a2d0000211820022d00012119200320063703d00341002102201941ff01714101460d010b410121024100211741022118410021160b200320063703f801200320073a00f701200320083a00f601200320093b01f4012003200a3a00f3012003200b3a00f2012003200c3b01f0012003200d3a00ef012003200e3a00ee012003200f3b01ec01200320103a00eb01200320113a00ea01200320123b01e801200320133a00e701200320143a00e201200320153b01e0012003201741ffff0371410874201841ff01717220164118747222093600e3012002450d0141d6b2c0002108410f210720090e050003040516000b20032800e701210820032800eb012107410121090c160b200341c0016a41186a200341e0016a41186a2903002206370300200341c0016a41106a200341e0016a41106a2903002204370300200341c0016a41086a200341e0016a41086a2903002205370300200320032903e001221a3703c001200341d0036a41186a2006370300200341d0036a41106a2004370300200341d0036a41086a20053703002003201a3703d003200341d0036a10e4040c0d0b20034188056a41186a200141196a29000037030020034188056a41106a200141116a29000037030020034188056a41086a200141096a29000037030020032001290001370388052002411a6a2901002106200241196a2d00002107200241186a2d00002108200241166a2f01002109200241156a2d0000210a200241146a2d0000210b200241126a2f0100210c200241116a2d0000210d200241106a2d0000210e2002410e6a2f0100210f2002410d6a2d000021102002410c6a2d000021112002410a6a2f01002112200241096a2d00002113200241046a2d00002114200241026a2f0100211502400240024020022d0000450d00200320063702d403200320073a00d303200320083a00d203200320093b01d0030c010b200241086a2d00002116200241066a2f01002117200241056a2d0000211820022d00012119200320063703d00341002102201941ff01714101460d010b410121024100211741022118410021160b200320063703d801200320073a00d701200320083a00d601200320093b01d4012003200a3a00d3012003200b3a00d2012003200c3b01d0012003200d3a00cf012003200e3a00ce012003200f3b01cc01200320103a00cb01200320113a00ca01200320123b01c801200320133a00c701200320143a00c201200320153b01c0012003201741ffff0371410874201841ff01717220164118747222093600c30102402002450d0041d6b2c0002108410f210720090e050401020314040b20034188036a41186a200341c0016a41186a29030037030020034188036a41106a200341c0016a41106a29030037030020034188036a41086a200341c0016a41086a290300370300200320032903c00137038803200341d0046a41086a220241bad6c500ad42808080809001841002220741086a290000370300200320072900003703d0042007102c20034180026a41086a2002290300370300200320032903d0043703800220024188fbc400ad4280808080d000841002220741086a290000370300200320072900003703d0042007102c20034190026a41086a2002290300370300200320032903d00437039002200341e0016a20034188056a109f0141c000102a2202450d162002200329038002370000200241086a20034180026a41086a22082903003700002002200329039002370010200241186a20034190026a41086a2209290300370000200220032903e001370020200241286a200341e0016a41086a290300370000200241306a200341e0016a41106a290300370000200241386a200341e0016a41186a290300370000200341c8006a200241c000410141004100109701200328024821072002102c024020074101470d0041c798c5002108410f2107410121090c150b200341e0056a41186a20034188036a41186a290300370300200341e0056a41106a20034188036a41106a290300370300200341e0056a41086a20034188036a41086a29030037030020032003290388033703e005200341d0036a41186a20034188056a41186a290300370300200341d0036a41106a20034188056a41106a290300370300200341d0036a41086a20034188056a41086a29030037030020032003290388053703d003200341d0046a41086a220241bad6c500ad42808080809001841002220741086a290000370300200320072900003703d0042007102c20082002290300370300200320032903d0043703800220024188fbc400ad4280808080d000841002220741086a290000370300200320072900003703d0042007102c20092002290300370300200320032903d00437039002200341e0016a200341d0036a109f0141c000102a2202450d162002200329038002370000200241086a20034180026a41086a2903003700002002200329039002370010200241186a20034190026a41086a290300370000200220032903e001370020200241286a200341e0016a41086a290300370000200241306a200341e0016a41106a290300370000200241386a200341e0016a41186a290300370000200341c0003602d403200320023602d003200341e0056a200341d0036a10a1022002102c410021080c120b41dd8cc6002108410e2107410121090c130b41c3b2c000210841132107410121090c120b41b2b2c000210841112107410121090c110b20032800c701210820032800cb012107410121090c100b410121160c100b41a8b4c000200820161038000b41b2b2c0002108411121070c0d0b200341d0036a41186a20034188056a41186a290300370300200341d0036a41106a20034188056a41106a290300370300200341d0036a41086a20034188056a41086a29030037030020032003290388053703d003200341d0036a2108410021160b024002402007200a460d002018210a0c010b024020182007460d002018210a0c010b201841016a22022018490d0f2018410174220a2002200a20024b1b220a41ffffff3f71200a470d0f200a41057422024100480d0f0240024020180d002002102a21170c010b201720184105742002102e21170b2017450d0e0b201720164105746a220241206a2002200720166b41057410dc051a200241186a200841186a290000370000200241106a200841106a290000370000200241086a200841086a29000037000020022008290000370000200341d0036a41186a4200370300200341d0036a41106a22184200370300200341d0036a41086a22084200370300200342003703d003200341d0046a41086a22024191b0c200ad4280808080e000841002221641086a290000370300200320162900003703d0042016102c20082002290300370300200320032903d0043703d003200241acb0c200ad4280808080e000841002221641086a290000370300200320162900003703d0042016102c201820032903d0042206370300200341e0056a41086a2008290300370300200341e0056a41106a2006370300200341e0056a41186a2002290300370300200320063703e001200320032903d0033703e005200341c0006a200341e0056a41201094012003280240211620032802442118200241bad6c500ad42808080809001841002220841086a290000370300200320082900003703d0042008102c20034180026a41086a220b2002290300370300200320032903d00437038002200241bcfcc400ad42808080809001841002220841086a290000370300200320082900003703d0042008102c20034190026a41086a220c2002290300370300200320032903d00437039002200341e0016a200341c0026a109f0141c000102a2208450d0d2008200329038002370000200841086a200b2903003700002008200329039002370010200841186a200c290300370000200820032903e001370020200841286a200341e0016a41086a290300370000200841306a200341e0016a41106a290300370000200841386a200341e0016a41186a2903003700004104102a2202450d0d20034284808080c0003702d403200320023602d0032002201841809c316a41809c3120161b2216360000200741016a2202200341d0036a106702402002450d00200741057441206a21072017210203402002200341d0036a109101200241206a2102200741606a22070d000b0b20032802d40321022008ad428080808080088420033502d80342208620032802d0032207ad84100102402002450d002007102c0b2008102c0240200a450d002017102c0b200341d0036a41086a410a3a0000200341d9036a200329038805370000200341f9036a20032903c002370000200341e1036a20034188056a41086a290300370000200341e9036a20034188056a41106a290300370000200341f1036a20034188056a41186a29030037000020034181046a200341c0026a41086a29030037000020034189046a200341c0026a41106a29030037000020034191046a200341c0026a41186a290300370000200341063a00d0032003419c046a20163602004100210841014100200341d0036a109201200341e0016a41186a22174200370300200341e0016a41106a22184200370300200341e0016a41086a22074200370300200342003703e001200341d0046a41086a220241bad6c500ad42808080809001841002221641086a290000370300200320162900003703d0042016102c20072002290300370300200320032903d004220637038002200320063703e00120024184c6c400ad4280808080c001841002221641086a290000370300200320162900003703d0042016102c20034190026a41086a20022903002206370300200320032903d00422043703900220092004370000200941086a2006370000200341c0016a41086a2007290300370300200341c0016a41106a2018290300370300200341c0016a41186a2017290300370300200320032903e0013703c001200341c0016aad428080808080048410050c090b410021080b410e2107410121090c090b41222107410121090c080b4100210841012109410121160c080b41b196c5002108411a21072002450d052009102c410121090c060b20032802a802210820032802a402210920032802a00221020b2002450d00201a2008ad4220862002ad8410012009450d012002102c0c010b200341e0016a41186a22174200370300200341e0016a41106a22184200370300200341e0016a41086a22084200370300200342003703e001200341d0046a41086a220241bad6c500ad42808080809001841002220941086a290000370300200320092900003703d0042009102c20082002290300370300200320032903d004220637038002200320063703e001200241d5c5c400ad4280808080b001841002220941086a290000370300200320092900003703d0042009102c20034190026a41086a20022903002206370300200320032903d004221b370390022007201b370000200741086a2006370000200341c0016a41086a2008290300370300200341c0016a41106a2018290300370300200341c0016a41186a2017290300370300200320032903e0013703c001200341003602d803200342013703d0034101200341d0036a106720032802d005220828020021090240024020032802d403220720032802d80322026b4104490d0020032802d00321070c010b200241046a22172002490d07200741017422022017200220174b1b22024100480d070240024020070d002002102a21070c010b20032802d00320072002102e21070b2007450d06200320023602d403200320073602d00320032802d80321020b2003200241046a3602d803200720026a20093600002003200341d0036a36028803200841046a20034188036a109402200841246a200341d0036a10910120032802d4032102201a20033502d80342208620032802d0032207ad8410012002450d002007102c0b200341e8036a2004370300200341e0036a2005370300200341dc036a201636020041002108200341d8036a41003a0000200341063a00d00341014100200341d0036a1092010b0b410121090b410121160b20012d0000221741736a220241074b0d0220020e080502050502020403050b1033000b1035000b2017416d6a220241014b0d020240024020020e020001000b200141086a280200450d03200141046a280200102c0c030b200141086a280200450d02200141046a280200102c0c020b2016450d01200141086a280200450d01200141046a280200102c0c010b2009450d00200141086a280200450d00200141046a280200102c0b2000200736020420002008360200200341e0066a24000b860501087f230041a0016b22022400200241086a22034196e0c500ad4280808080f000841002220441086a290000370300200220042900003703002004102c20024180016a41086a220520032903003703002002200229030037038001200341d9f8c200ad4280808080e000841002220441086a290000370300200220042900003703002004102c200241d0006a41086a220620032903003703002002200229030037035020022001109f01024041c000102a2204450d0020042002290380013700002004200229035037001020042002290000370020200441086a2005290300370000200441186a2006290300370000200441286a2003290000370000200441306a200241106a2201290000370000200441386a200241186a22072900003700002002200441c00010e6032005200329030037030020024180016a41106a2205200129030037030020024180016a41186a2201200729030037030020062002412c6a290200370300200241d0006a41106a2206200241346a290200370300200241d0006a41186a22072002413c6a290200370300200241f0006a2208200241c4006a290200370300200241d0006a41286a2209200241cc006a280200360200200220022903003703800120022002290224370350024020022802202203450d00200020022903800137030020002002290350370224200041186a2001290300370300200041106a2005290300370300200041086a20024180016a41086a2903003703002000412c6a200241d0006a41086a290300370200200041346a20062903003702002000413c6a2007290300370200200041c4006a2008290300370200200041cc006a20092802003602000b200020033602202004102c200241a0016a24000f0b1033000b85c70105017f027e157f077e017f230041c0056b2203240002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020012d00000e1100010203060708090a0b0c0d0e0f101112000b200341b4046a4101360200200342013702a404200341fcc4c5003602a0042003410436028c02200341f4c4c50036028802200320034188026a3602b004200341a0046a4184c5c5001041000b200141306a2903002104200141286a290300210520012d00012106200341e0026a41026a200141076a2d00003a0000200341d8036a41086a200141146a290200370300200341d8036a41106a2001411c6a290200370300200341d8036a41186a200141246a2802003602002003200141056a2f00003b01e00220032001410c6a2902003703d8030240024020022d00000d0020022d00014101460d010b200041c3b2c00036020420004100360200200041086a41133602000c220b200141046a2d00002107200141086a2802002108200241196a2d00002109200241186a2d0000210a200241166a2f0100210b200241156a2d0000210c200241146a2d0000210d200241126a2f0100210e200241116a2d0000210f200241106a2d000021102002410e6a2f010021112002410d6a2d000021122002410c6a2d000021132002410a6a2f01002114200241096a2d00002115200241086a2d00002116200241066a2f01002117200241056a2d00002118200241046a2d00002119200241026a2f0100211a20032002411a6a2901003703d001200320093a00cf012003200a3a00ce012003200b3b01cc012003200c3a00cb012003200d3a00ca012003200e3b01c8012003200f3a00c701200320103a00c601200320113b01c401200320123a00c301200320193a00ba012003201a3b01b801200320152014410874722013411874723600bf01200320182017410874722016411874723600bb01200341c0036a41086a22024196e0c500ad4280808080f000841002220941086a290000370300200320092900003703c0032009102c20034188016a41086a220a2002290300370300200320032903c00337038801200241d3f8c200ad4280808080e000841002220941086a290000370300200320092900003703c0032009102c20034188026a41086a22092002290300370300200320032903c00337038802200341f8046a200341b8016a109f0141c000102a2202450d232002200329038801370000200241086a200a2903003700002002200329038802370010200241186a2009290300370000200220032903f804370020200241286a200341f8046a41086a290300370000200241306a200341f8046a41106a290300370000200241386a200341f8046a41186a29030037000041012109200341206a200241c0004101410041001097012003280220210a2002102c200a4101460d11200341c0036a41026a2202200341e0026a41026a2d00003a0000200341a0046a41086a2209200341d8036a41086a290300370300200341a0046a41106a200341d8036a41106a290300370300200341a0046a41186a220a200341d8036a41186a280200360200200320032f01e0023b01c003200320032903d8033703a0040240200741ff01714101460d00200341a8016a41026a20022d00003a0000200341f8046a41086a2009290300370300200341f8046a41106a200341a0046a41106a290300370300200341f8046a41186a200a2d00003a0000200320032f01c0033b01a801200320032903a0043703f8040c1e0b200341a0036a200841067610910220032802a00321090240024020032802a8032008413f7122024b0d00410021020c010b200341a8016a41026a200920024105746a220241026a2d00003a000020034180056a2002410f6a29000037030020034188056a200241176a29000037030020034190056a2002411f6a2d00003a0000200320022f00003b01a801200320022900073703f80420022800032108410121020b024020032802a403450d002009102c0b20020d1d410121020c1e0b0240024020022d00000d0020022d00014101460d010b200041c3b2c00036020420004100360200200041086a41133602000c210b200141106a2903002104200141086a2903002105200241196a2d00002109200241186a2d00002106200241166a2f01002108200241156a2d0000210a200241146a2d0000210b200241126a2f0100210c200241116a2d0000210d200241106a2d0000210e2002410e6a2f0100210f2002410d6a2d000021102002410c6a2d000021112002410a6a2f01002112200241096a2d00002113200241086a2d00002114200241066a2f01002115200241056a2d00002116200241046a2d00002117200241026a2f0100211820032002411a6a29010037039005200320093a008f05200320063a008e05200320083b018c052003200a3a008b052003200b3a008a052003200c3b0188052003200d3a0087052003200e3a0086052003200f3b018405200320103a008305200320173a00fa04200320183b01f804200320132012410874722011411874723600ff04200320162015410874722014411874723600fb04200341a0046a200341f8046a109804024020032d00a0044101460d00200041033602000c210b200341d8036a41086a200341a0046a41186a290300221b370300200341d8036a41106a2209200341c0046a2d000022023a00002003200341a0046a41106a290300221c3703d803200320032802a4043600bb01200320032d00a3043a00ba01200320032f00a1043b01b8012003200341a0046a41086a2903003700bf01200341d7016a20023a0000200341cf016a201b3700002003201c3700c701200341a0046a200341b8016a10f9020240024020032802c00422080d00410121060c010b20034188046a200341db046a29000037030020034180046a41106a200341e3046a29000037030020034180046a41186a200341eb046a2d00003a0000200320032900d304370380042003200341cc046a2f01003b01e0022003200341ce046a2d00003a00e202200341a0046a41186a290300211d200341c8046a280200210a200341cf046a280000210b20032903b004211c20032802c404210220032903a804211e20032903a004211b200341ec046a280200210c410021060b200341d8036a41086a220d20034180046a41086a290300370300200920034180046a41106a290300370300200341d8036a41186a220920034180046a41186a2d00003a0000200320032f01e0023b01a003200320032d00e2023a00a20320032003290380043703d80320060d0120034188026a41186a201d370300200341b0026a200a360200200341ac026a2002360200200341b6026a20032d00a2033a0000200341b7026a200b360000200341bb026a20032903d803370000200341c3026a200d290300370000200341cb026a200341e8036a290300370000200341d3026a20092d00003a00002003201c37039802200320083602a8022003201e370390022003201b37038802200320032f01a0033b01b4022003200c3602d402200341286a200341f8046a10b70102402003290328221b200329038802221f7d2220201b56200341286a41086a290300221e20032903900222217d201b201f54ad7d221b201e56201b201e511b0d002003200520202020200556201b200456201b2004511b22021b2205201c7c221c37039802200341a0026a2004201b20021b2204201d7c201c200554ad7c37030020032005201f7c221b370388022003200420217c201b200554ad7c37039002200341b8016a20034188026a10990420032802ac0221020b02402002450d0020032802a802102c0b2000410c3602000c200b0240024020022d00000d004101210920022d00014101460d010b200041c3b2c00036020420004100360200200041086a41133602000c200b200141106a290300211c200141086a290300211d200241196a2d00002106200241186a2d00002108200241166a2f0100210a200241156a2d0000210b200241146a2d0000210c200241126a2f0100210d200241116a2d0000210e200241106a2d0000210f2002410e6a2f010021102002410d6a2d000021112002410c6a2d000021122002410a6a2f01002113200241096a2d00002114200241086a2d00002115200241066a2f01002116200241056a2d00002117200241046a2d00002118200241026a2f0100211920032002411a6a2901003703d001200320063a00cf01200320083a00ce012003200a3b01cc012003200b3a00cb012003200c3a00ca012003200d3b01c8012003200e3a00c7012003200f3a00c601200320103b01c401200320113a00c301200320183a00ba01200320193b01b801200320142013410874722012411874723600bf01200320172016410874722015411874723600bb01200341a0046a200341b8016a10f9020240024020032802c00422080d000c010b20034180046a41086a200341db046a29000037030020034190046a200341e3046a29000037030020034180046a41186a200341eb046a2d00003a0000200320032900d304370380042003200341cc046a2f01003b01e0022003200341ce046a2d00003a00e202200341a0046a41186a2903002104200341c8046a2802002106200341cf046a280000210a20032903b004210520032802c404210220032903a804211e20032903a004211b200341ec046a280200210b410021090b200341f8046a41086a20034180046a41086a290300370300200341f8046a41106a220c20034180046a41106a290300370300200341f8046a41186a20034180046a41186a2d00003a0000200320032f01e0023b01d803200320032d00e2023a00da0320032003290380043703f8042009450d012000201b370204200041023602000c1f0b2000201b370204200041023602000c1e0b20034188026a41186a2004370300200341b0026a2006360200200341ac026a2002360200200341b6026a20032d00da033a0000200341b7026a200a360000200341bb026a20032903f804370000200341c3026a20034180056a290300370000200341cb026a200c290300370000200341d3026a200341f8046a41186a2d00003a00002003200537039802200320083602a8022003201e370390022003201b37038802200320032f01d8033b01b4022003200b3602d40202400240024002402006411f4b0d002005201d2005201d542004201c542004201c511b22091b221b2004201c20091b221c84500d0320034188026a41186a42002004201c7d2005201b54ad7d221d2005201b7d221e428080e983b1de16544100201d501b22091b37030020034200201e20091b37039802200341a0046a41186a4200370300200341a0046a41106a220d4200370300200341a0046a41086a220b4200370300200342003703a004200341c0036a41086a220a4196e0c500ad4280808080f000841002220c41086a2900003703002003200c2900003703c003200c102c200b200a290300370300200320032903c003221d3703a8012003201d3703a004200a419de0c500ad4280808080a001841002220c41086a2900003703002003200c2900003703c003200c102c200d20032903c003221d370300200341f8046a41086a200b290300370300200341f8046a41106a201d370300200341f8046a41186a200a2903003703002003201d37038004200320032903a0043703f804200341386a200341f8046a4120109401200328023c210a2003280238210b20062002470d02200241016a22062002490d1c2002410174220c2006200c20064b1b220cad42187e221d422088a70d1c201da7220641004e0d010c1c0b2000410b3602002002450d202008102c0c200b0240024020020d002006102a21080c010b2008200241186c2006102e21080b2008450d212003200c3602ac02200320083602a80220032802b00221060b2008200641186c6a22022004201c20091b37030820022005201b20091b3703002002200a41a0056a41a005200b1b360210200320032802b00241016a3602b002200341b8016a20034188026a10990420032802ac0221020b02402002450d0020032802a802102c0b2000410c3602000c1d0b0240024020022d00000d004101210920022d00014101460d010b200041c3b2c00036020420004100360200200041086a41133602000c1d0b200241196a2d00002106200241186a2d00002108200241166a2f0100210a200241156a2d0000210b200241146a2d0000210c200241126a2f0100210d200241116a2d0000210e200241106a2d0000210f2002410e6a2f010021102002410d6a2d000021112002410c6a2d000021122002410a6a2f01002113200241096a2d00002114200241086a2d00002115200241066a2f01002116200241056a2d00002117200241046a2d00002118200241026a2f0100211920032002411a6a2901003703f003200320063a00ef03200320083a00ee032003200a3b01ec032003200b3a00eb032003200c3a00ea032003200d3b01e8032003200e3a00e7032003200f3a00e603200320103b01e403200320113a00e303200320183a00da03200320193b01d803200320142013410874722012411874723600df03200320172016410874722015411874723600db03200341a0046a200341d8036a10f9020240024020032802c004220b0d004200211b420021040c010b20034180046a41086a200341db046a29000037030020034190046a200341e3046a29000037030020034180046a41186a200341eb046a2d00003a0000200320032900d304370380042003200341cc046a2f01003b01e0022003200341ce046a2d00003a00e202200341a0046a41186a290300211e200341cf046a280000210f200341c8046a280200210d20032903a80421044200211b20032903b004211d4100210920032802c404210e20032903a00421050b20034188026a41086a20034180046a41086a29030037030020034188026a41106a220220034180046a41106a29030037030020034188026a41186a20034180046a41186a2d00003a0000200320032f01e0023b01b801200320032d00e2023a00ba0120032003290380043703880202400240024020090d004108210c20034188016a41086a20034188026a41086a29030037030020034188016a41106a200229030037030020034188016a41186a20034188026a41186a2d00003a0000200320032d00ba013a00be05200320032f01b8013b01bc05200320032903880237038801200341a0046a41186a4200370300200341a0046a41106a22084200370300200341a0046a41086a22094200370300200342003703a004200341c0036a41086a22024196e0c500ad4280808080f000841002220641086a290000370300200320062900003703c0032006102c20092002290300370300200320032903c003221c3703a8012003201c3703a0042002419de0c500ad4280808080a001841002220641086a290000370300200320062900003703c0032006102c200820032903c003221c370300200341f8046a41086a2009290300370300200341f8046a41106a201c370300200341f8046a41186a20022903003703002003201c37038004200320032903a0043703f804200341c8006a200341f8046a4120109401201b2005842105024002400240200d41186c2202450d0041002109200328024c410020032802481b2108200b20026a210a0340200b20096a2202290300211b200241086a290300211c2008200241106a2802002206490d0242002004201c7d2005201b54ad7d221c2005201b7d221b200556201c200456201c2004511b22061b21044200201b20061b2105200941186a2109200241186a200a470d000b0b410021060240200e0d004100210d0c020b200b102c4100210d0c010b4118102a220c450d22200c201b370300200c2006360210200c201c37030802400240200d41186c41686a2009470d00410121064101210d0c010b200241186a2110200d41186c200b6a41686a2112410121064101210d03402010210202400340200241086a290300211c2002290300211b2008200241106a2802002209490d0142002004201c7d2005201b54ad7d221c2005201b7d221b200556201c200456201c2004511b22091b21044200201b20091b2105200241186a2202200a470d000c030b0b0240200d2006470d00200641016a220d2006490d1e20064101742210200d2010200d4b1b220dad42187e221f422088a70d1e201fa722104100480d1e0240024020060d002010102a210c0c010b200c200641186c2010102e210c0b200c450d250b200241186a2110200c200641186c6a2211201c3703082011201b37030020112009360210200641016a210620122002470d000b0b200e450d00200b102c0b200341ce046a20032d00be053a0000200341cf046a200f360000200341d3046a200329038801370000200341c8046a2006360200200341c4046a200d3602002003201d3703b004200341a0046a41186a201e370300200341db046a20034190016a290300370000200341e3046a20034198016a290300370000200341eb046a20034188016a41186a2d00003a0000200320053703a004200320032f01bc053b01cc042003200c3602c004200320043703a8040240201d201e844200520d002006450d020b200341d8036a200341a0046a1099040c020b20002005370204200041023602000c1e0b200341f8046a41186a200341cc046a220241186a290000370300200341f8046a41106a200241106a290000370300200341f8046a41086a200241086a290000370300200342f3e885db96cddbb3203703a003200320022900003703f80420034188026a41186a420037030020034188026a41106a2208420037030020034188026a41086a220242003703002003420037038802200341c0036a41086a22094191b0c200ad4280808080e000841002220641086a290000370300200320062900003703c0032006102c20022009290300370300200320032903c00337038802200941acb0c200ad4280808080e000841002220641086a290000370300200320062900003703c0032006102c200820032903c0032204370300200341b8016a41086a22062002290300370300200341b8016a41106a2004370300200341b8016a41186a2009290300370300200320043703800420032003290388023703b801200341c0006a200341b8016a412010940120032003280244410020032802401b3602800420034188026a200341f8046a10ae01200328028c0221082003280288022109200328029002210a2003419c026a200341a0036a36020020032009200a4105746a3602940220032009360290022003200836028c022003200936028802200320034180046a36029802200341b8016a20034188026a10860120022006280200360200200320032903b80137038802200341f8046a20034188026a10b001200341f8046a10a4010b024020032802c404450d0020032802c004102c0b2000410c3602000c1c0b200141046a280200210910a3010240024020022d00000d004101210620022d00014101460d010b200041c3b2c00036020420004100360200200041086a41133602000c1c0b200241196a2d00002108200241186a2d0000210a200241166a2f0100210b200241156a2d0000210c200241146a2d0000210d200241126a2f0100210e200241116a2d0000210f200241106a2d000021102002410e6a2f010021112002410d6a2d000021122002410c6a2d000021132002410a6a2f01002114200241096a2d00002115200241086a2d00002116200241066a2f01002117200241056a2d00002118200241046a2d00002119200241026a2f0100211a20032002411a6a29010037039803200320083a0097032003200a3a0096032003200b3b0194032003200c3a0093032003200d3a0092032003200e3b0190032003200f3a008f03200320103a008e03200320113b018c03200320123a008b03200320193a0082032003201a3b01800320032015201441087472201341187472360087032003201820174108747220164118747236008303200341a0046a20034180036a10f9020240024020032802c00422020d000c010b20034180046a41086a200341db046a29000037030020034190046a200341e3046a29000037030020034180046a41186a200341eb046a2d00003a0000200320032900d304370380042003200341cc046a2f01003b01e0022003200341ce046a2d00003a00e202200341a0046a41186a290300211c200341c8046a280200210a200341cf046a280000210b20032903b004211b20032802c404210820032903a804210520032903a0042104200341ec046a280200210c410021060b200341b8016a41086a20034180046a41086a290300370300200341b8016a41106a220d20034180046a41106a290300370300200341b8016a41186a20034180046a41186a2d00003a0000200320032f01e0023b01f804200320032d00e2023a00fa0420032003290380043703b801024020060d0020034188026a41186a201c37030020034188026a41286a200a360200200341ac026a2008360200200341b6026a20032d00fa043a0000200341b7026a200b360000200341bb026a20032903b801370000200341c3026a200341b8016a41086a290300370000200341cb026a200d290300370000200341d3026a200341b8016a41186a2d00003a00002003201b37039802200320023602a80220032005370390022003200437038802200320032f01f8043b01b4022003200c3602d402200341b4026a2208108704200341c0036a41086a22024196e0c500ad4280808080f000841002220641086a290000370300200320062900003703c0032006102c200341a8016a41086a220a2002290300370300200320032903c0033703a801200241c9f8c200ad4280808080a001841002220641086a290000370300200320062900003703c0032006102c20034180046a41086a22062002290300370300200320032903c00337038004200341a0046a2008109f0141c000102a2202450d1e200220032903a801370000200241086a200a2903003700002002200329038004370010200241186a2006290300370000200220032903a004370020200241286a200341a0046a41086a290300370000200241306a200341a0046a41106a290300370000200241386a200341a0046a41186a290300370000200341b8016a200241c00010f203024020032d00bc0122064102470d00200320083602bc05200341a0046a108a04200341d8036a20032802a004220620032802a80410d301024020032802a404450d002006102c0b024020032d00d8030d00200341a0046a108a0420032802a0042106200320032802a8043602fc04200320063602f8042008200341f8046a10a10220032802a404450d172006102c0c170b20034198046a200341f1036a29000037030020034190046a200341e9036a29000037030020034180046a41086a200341e1036a290000370300200320032900d90337038004200341e8006a20034180046a108904200341a0046a200328026822062003280270220810f203024020032d00a4044102470d00200341003602e802200342013703e002200341a0036a41146a410d360200200341ac036a410b360200200341073602c40320034196e0c5003602c0032003410b3602a4032003410a36028c01200341c9f8c200360288012003200341e8006a3602b003200320034188016a3602a8032003200341c0036a3602a0032003200341e0026a3602a801200341f8046a41146a4103360200200342033702fc04200341c09dc5003602f8042003200341a0036a36028805200341a8016a41c49ac500200341f8046a10391a20033502e80242208620033502e00284100420032802bc052108200341f8046a108a0420032802f804210620032003280280053602a403200320063602a0032008200341a0036a10a102024020032802fc04450d002006102c0b024020032802e402450d0020032802e002102c0b200328026c450d172003280268102c0c170b20032802a004210a200341f8046a200341a0046a41047241c20010db051a200341e0026a41086a2003419a056a410020032d0099054101461b3602002003200a3602e0022003200341bc056a3602e402200341003602a803200342013703a003200341e0026a200341a0036a108901200341e0026a410472200341a0036a10a20220032802a403210a2008ad4220862006ad8420033502a80342208620032802a0032206ad8410010240200a450d002006102c0b0240200328026c450d002003280268102c0b20032802bc052108200341a0046a108a0420032802a0042106200320032802a8043602fc04200320063602f8042008200341f8046a10a102024020032802a404450d002006102c0b200341a0036a41086a20034180046a41086a290300370300200341a0036a41106a20034180046a41106a290300370300200341a0036a41186a20034180046a41186a29030037030020032003290380043703a00341012108410021060c170b200341f8046a41186a200341d5016a290000370300200341f8046a41106a200341cd016a290000370300200341f8046a41086a200341c5016a290000370300200341a0036a41086a200341e6016a290100370300200341a0036a41106a200341ee016a290100370300200341a0036a41186a200341f6016a290100370300200320032900bd013703f8042003200341de016a2901003703a003200341dd016a2d000021080c160b20002004370204200041023602000c1b0b2001410c6a2802002109200141086a2802002108200141046a280200210a10a3010240024020022d00000d004101210620022d00014101460d010b200041c3b2c00036020420004100360200200041086a41133602000c120b200241196a2d0000210b200241186a2d0000210c200241166a2f0100210d200241156a2d0000210e200241146a2d0000210f200241126a2f01002110200241116a2d00002111200241106a2d000021122002410e6a2f010021132002410d6a2d000021142002410c6a2d000021152002410a6a2f01002116200241096a2d00002117200241086a2d00002118200241066a2f01002119200241056a2d0000211a200241046a2d00002107200241026a2f0100212220032002411a6a290100370398032003200b3a0097032003200c3a0096032003200d3b0194032003200e3a0093032003200f3a009203200320103b019003200320113a008f03200320123a008e03200320133b018c03200320143a008b03200320073a008203200320223b01800320032017201641087472201541187472360087032003201a20194108747220184118747236008303200341a0046a20034180036a10f9020240024020032802c004220b0d000c010b20034180046a41086a200341db046a29000037030020034190046a200341e3046a29000037030020034180046a41186a200341eb046a2d00003a0000200320032900d304370380042003200341cc046a2f01003b01e0022003200341ce046a2d00003a00e202200341a0046a41186a290300211c200341c8046a280200210c200341cf046a280000210d20032903b004211b20032802c404210220032903a804210520032903a0042104200341ec046a280200210e410021060b20034188026a41086a20034180046a41086a29030037030020034188026a41106a220f20034180046a41106a29030037030020034188026a41186a20034180046a41186a2d00003a0000200320032f01e0023b01f804200320032d00e2023a00fa0420032003290380043703880202400240024020060d00200341b8016a41186a201c370300200341e0016a200c360200200341b8016a41246a2002360200200341e6016a20032d00fa043a0000200341e7016a200d360000200341eb016a200329038802370000200341f3016a20034190026a290300370000200341fb016a200f29030037000020034183026a20034188026a41186a2d00003a00002003201b3703c8012003200b3602d801200320053703c001200320043703b801200320032f01f8043b01e4012003200e3602840202402009450d00200341003a008004200341103602e8032003200a200941246c6a3602e4032003200a3602e003200320083602dc032003200a3602d803200320034180046a3602ec03200341a0046a200341d8036a10a8020240024020032d00a0044101460d0020032802e403210620032802e003210202400340024020062002470d00200221080c020b20022d00002109200241246a2208210220094102470d000b0b200320083602e0034100210c4101210b024020032802dc030d00410021020c020b20032802d803102c410021020c010b4120102a220b450d21200b20032900a104370000200b41186a200341b9046a290000370000200b41106a200341b1046a290000370000200b41086a200341a9046a290000370000200341f8046a41106a200341d8036a41106a290300370300200341f8046a41086a200341d8036a41086a290300370300200320032903d8033703f804200341a0046a200341f8046a10a8020240024020032d00a0040d00410121024101210c0c010b200341a0046a41017221094102210a41202108410121024101210c034020034188026a41186a220d200941186a29000037030020034188026a41106a220e200941106a29000037030020034188026a41086a220f200941086a290000370300200320092900003703880202402002200c470d00200241016a22062002490d1d200a2006200a20064b1b220c41ffffff3f71200c470d1d200c41057422064100480d1d0240024020020d002006102a210b0c010b200b20082006102e210b0b200b450d240b200b20086a2206200329038802370000200641186a200d290300370000200641106a200e290300370000200641086a200f290300370000200a41026a210a200841206a2108200241016a2102200341a0046a200341f8046a10a80220032d00a0040d000b0b2003280284052108200328028005210902400340024020082009470d002009210a0c020b20092d00002106200941246a220a210920064102470d000b0b2003200a3602800520032802fc04450d0020032802f804102c0b20032d008004450d02200c450d03200b102c0c030b200041073602002002450d14200b102c0c140b20002004370204200041023602000c130b200b0d100b410121062000410136020020032802dc01450d1020032802d801102c0c100b0240024020022d00000d004101210920022d00014101460d010b200041c3b2c00036020420004100360200200041086a41133602000c1a0b200241196a2d00002106200241186a2d00002108200241166a2f0100210a200241156a2d0000210b200241146a2d0000210c200241126a2f0100210d200241116a2d0000210e200241106a2d0000210f2002410e6a2f010021102002410d6a2d000021112002410c6a2d000021122002410a6a2f01002113200241096a2d00002114200241086a2d00002115200241066a2f01002116200241056a2d00002117200241046a2d00002118200241026a2f0100211920032002411a6a2901003703d001200320063a00cf01200320083a00ce012003200a3b01cc012003200b3a00cb012003200c3a00ca012003200d3b01c8012003200e3a00c7012003200f3a00c601200320103b01c401200320113a00c301200320183a00ba01200320193b01b801200320142013410874722012411874723600bf01200320172016410874722015411874723600bb01200341a0046a200341b8016a10f9020240024020032802c00422020d000c010b20034180046a41086a200341db046a29000037030020034190046a200341e3046a29000037030020034180046a41186a200341eb046a2d00003a0000200320032900d304370380042003200341cc046a2f01003b01e0022003200341ce046a2d00003a00e202200341a0046a41186a290300211c200341c8046a2802002108200341cf046a280000210a20032903b004211b20032802c404210620032903a804210520032903a0042104200341ec046a280200210b410021090b200341f8046a41086a20034180046a41086a290300370300200341f8046a41106a220c20034180046a41106a290300370300200341f8046a41186a20034180046a41186a2d00003a0000200320032f01e0023b01d803200320032d00e2023a00da0320032003290380043703f804024020090d0020034188026a41186a201c370300200341b0026a2008360200200341ac026a22092006360200200341b6026a20032d00da033a0000200341b7026a200a360000200341bb026a20032903f804370000200341c3026a20034180056a290300370000200341cb026a200c290300370000200341d3026a200341f8046a41186a2d00003a00002003201b37039802200320023602a80220032005370390022003200437038802200320032f01d8033b01b4022003200b3602d402200341b4026a2202108604200210870402402009280200450d0020032802a802102c0b2000410c3602000c1a0b20002004370204200041023602000c190b0240024020022d00000d004101210920022d00014101460d010b200041c3b2c00036020420004100360200200041086a41133602000c190b20012d0001211a200241196a2d00002106200241186a2d00002108200241166a2f0100210a200241156a2d0000210b200241146a2d0000210c200241126a2f0100210d200241116a2d0000210e200241106a2d0000210f2002410e6a2f010021102002410d6a2d000021112002410c6a2d000021122002410a6a2f01002113200241096a2d00002114200241086a2d00002115200241066a2f01002116200241056a2d00002117200241046a2d00002118200241026a2f0100211920032002411a6a2901003703d001200320063a00cf01200320083a00ce012003200a3b01cc012003200b3a00cb012003200c3a00ca012003200d3b01c8012003200e3a00c7012003200f3a00c601200320103b01c401200320113a00c301200320183a00ba01200320193b01b801200320142013410874722012411874723600bf01200320172016410874722015411874723600bb01200341a0046a200341b8016a10f9020240024020032802c004220b0d000c010b20034180046a41086a200341db046a29000037030020034190046a200341e3046a29000037030020034180046a41186a200341eb046a2d00003a0000200320032900d304370380042003200341cc046a2f01003b01e0022003200341ce046a2d00003a00e202200341a0046a41186a290300211c200341c8046a2802002106200341cf046a280000210820032903b004211b20032802c404210220032903a804210520032903a0042104200341ec046a280200210a410021090b200341f8046a41086a20034180046a41086a290300370300200341f8046a41106a220c20034180046a41106a290300370300200341f8046a41186a20034180046a41186a2d00003a0000200320032f01e0023b01d803200320032d00e2023a00da0320032003290380043703f804024020090d0020034188026a41186a201c370300200341b0026a2006360200200341ac026a22092002360200200341b6026a20032d00da033a0000200341b7026a2008360000200341bb026a20032903f804370000200341c3026a20034180056a290300370000200341cb026a200c290300370000200341d3026a200341f8046a41186a2d00003a00002003201b370398022003200b3602a80220032005370390022003200437038802200320032f01d8033b01b4022003200a3602d402200341b4026a201a10a90402402009280200450d0020032802a802102c0b2000410c3602000c190b20002004370204200041023602000c180b200341d4036a41026a200141076a2d00003a0000200341e8006a41086a200141146a290200370300200341e8006a41106a2001411c6a290200370300200341e8006a41186a200141246a2802003602002003200141056a2f00003b01d40320032001410c6a2902003703680240024020022d00000d0020022d00014101460d010b200041c3b2c00036020420004100360200200041086a41133602000c180b200141046a2d0000211a200141086a2802002109200241196a2d00002106200241186a2d00002108200241166a2f0100210a200241156a2d0000210b200241146a2d0000210c200241126a2f0100210d200241116a2d0000210e200241106a2d0000210f2002410e6a2f010021102002410d6a2d000021112002410c6a2d000021122002410a6a2f01002113200241096a2d00002114200241086a2d00002115200241066a2f01002116200241056a2d00002117200241046a2d00002118200241026a2f0100211920032002411a6a2901003703f802200320063a00f702200320083a00f6022003200a3b01f4022003200b3a00f3022003200c3a00f2022003200d3b01f0022003200e3a00ef022003200f3a00ee02200320103b01ec02200320113a00eb02200320183a00e202200320193b01e002200320142013410874722012411874723600e702200320172016410874722015411874723600e302200341a0046a200341e0026a109804024020032d00a0044101460d00200041033602000c180b200341d8036a41086a200341a0046a41186a22062903002204370300200341d8036a41106a200341c0046a2d000022083a00002003200341a0046a41106a220229030022053703d803200320032802a40436008303200320032d00a3043a008203200320032f00a1043b0180032003200341a0046a41086a220a290300370087032003419f036a20083a000020034197036a20043700002003200537008f03200341c0036a41026a2208200341d4036a41026a2d00003a0000200320032f01d4033b01c003200a200341e8006a41086a2903003703002002200341e8006a41106a2903003703002006200341e8006a41186a280200360200200320032903683703a0040240201a41ff01714101460d00200341a8016a41026a20082d00003a0000200341f8046a41086a200341a0046a41086a290300370300200341f8046a41106a2002290300370300200341f8046a41186a200341a0046a41186a2d00003a0000200320032f01c0033b01a801200320032903a0043703f8040c0b0b20034188026a20094106761091022003280288022106024002402003280290022009413f7122024b0d00410021020c010b200341a8016a41026a200620024105746a220241026a2d00003a000020034180056a2002410f6a29000037030020034188056a200241176a29000037030020034190056a2002411f6a2d00003a0000200320022f00003b01a801200320022900073703f80420022800032109410121020b0240200328028c02450d002006102c0b20020d0a410121020c0b0b024020022d000120022d000072450d00200041b2b2c00036020420004100360200200041086a41113602000c170b200141046a2802002108200341a0046a41186a4200370300200341a0046a41106a220a4200370300200341a0046a41086a22094200370300200342003703a004200341c0036a41086a22024196e0c500ad4280808080f000841002220641086a290000370300200320062900003703c0032006102c20092002290300370300200320032903c00322043703a801200320043703a004200241f3dfc500ad4280808080e001841002220641086a290000370300200320062900003703c0032006102c200a20032903c0032204370300200341f8046a41086a2009290300370300200341f8046a41106a2004370300200341f8046a41186a20022903003703002003200437038004200320032903a0043703f804200320083602a004200341f8046aad4280808080800484200341a0046aad4280808080c0008410012000410c3602000c160b024020022d000120022d000072450d00200041b2b2c00036020420004100360200200041086a41113602000c160b200341a0046a41186a4200370300200341a0046a41106a22084200370300200341a0046a41086a22094200370300200342003703a004200341c0036a41086a22024196e0c500ad4280808080f000841002220641086a290000370300200320062900003703c0032006102c20092002290300370300200320032903c00322043703a801200320043703a004200241d8e0c500ad42808080808001841002220641086a290000370300200320062900003703c0032006102c200820032903c0032204370300200341f8046a41086a2009290300370300200341f8046a41106a2004370300200341f8046a41186a20022903003703002003200437038004200320032903a0043703f804410121094101102a2202450d17200241023a0000200341f8046aad42808080808004842002ad4280808080108410012002102c2000410c36020041012106410121080c160b024020022d000120022d000072450d00200041b2b2c00036020420004100360200200041086a41113602000c150b200341a0046a41186a4200370300200341a0046a41106a22084200370300200341a0046a41086a22094200370300200342003703a004200341c0036a41086a22024196e0c500ad4280808080f000841002220641086a290000370300200320062900003703c0032006102c20092002290300370300200320032903c00322043703a801200320043703a004200241d8e0c500ad42808080808001841002220641086a290000370300200320062900003703c0032006102c200820032903c0032204370300200341f8046a41086a2009290300370300200341f8046a41106a2004370300200341f8046a41186a20022903003703002003200437038004200320032903a0043703f804410121094101102a2202450d16200241013a0000200341f8046aad42808080808004842002ad4280808080108410012002102c2000410c36020041012106410121080c150b200141086a2802002108200141046a280200210a024020022d000120022d000072450d00200041b2b2c0003602044100210620004100360200200041086a4111360200410121092008450d0c200a102c410121080c150b2001410c6a2802002109200341a0046a41186a4200370300200341a0046a41106a220c4200370300200341a0046a41086a22064200370300200342003703a004200341c0036a41086a22024196e0c500ad4280808080f000841002220b41086a2900003703002003200b2900003703c003200b102c20062002290300370300200320032903c00322043703a801200320043703a004200241dcc1c300ad4280808080d001841002220b41086a2900003703002003200b2900003703c003200b102c200c20032903c0032204370300200341f8046a41086a2006290300370300200341f8046a41106a2004370300200341f8046a41186a20022903003703002003200437038004200320032903a0043703f804200341003602a804200342013703a0042009200341a0046a106702402009450d0020094105742109200a210203402002200341a0046a109101200241206a2102200941606a22090d000b0b20032802a4042102200341f8046aad428080808080048420033502a80442208620032802a0042209ad84100102402002450d002009102c0b02402008450d00200a102c0b2000410c3602004100210641012109410121080c140b200341a0046a41186a200141196a290000370300200341a0046a41106a200141116a290000370300200341a0046a41086a200141096a290000370300200320012900013703a004024020022d000120022d000072450d00200041b2b2c000360204200041086a4111360200200041003602000c130b200342f3e885db96cddbb3203703f80420034188026a41186a420037030020034188026a41106a2208420037030020034188026a41086a220242003703002003420037038802200341c0036a41086a22094191b0c200ad4280808080e000841002220641086a290000370300200320062900003703c0032006102c20022009290300370300200320032903c00337038802200941acb0c200ad4280808080e000841002220641086a290000370300200320062900003703c0032006102c200820032903c0032204370300200341b8016a41086a22062002290300370300200341b8016a41106a2004370300200341b8016a41186a2009290300370300200320043703800420032003290388023703b801200341e0006a200341b8016a412010940120032003280264410020032802601b3602d80320034188026a200341a0046a10ae01200328028c0221082003280288022109200328029002210a2003419c026a200341f8046a36020020032009200a4105746a3602940220032009360290022003200836028c0220032009360288022003200341d8036a36029802200341b8016a20034188026a10860120022006280200360200200320032903b80137038802200341a0046a20034188026a10b001200341a0046a10a4012000410c3602000c120b024020022d000120022d000072450d00200041b2b2c00036020420004100360200200041086a41113602000c120b200341a0046a41186a4200370300200341a0046a41106a22084200370300200341a0046a41086a22094200370300200342003703a004200341c0036a41086a22024196e0c500ad4280808080f000841002220641086a290000370300200320062900003703c0032006102c20092002290300370300200320032903c00322043703a801200320043703a004200241d8e0c500ad42808080808001841002220641086a290000370300200320062900003703c0032006102c200820032903c0032204370300200341f8046a41086a2009290300370300200341f8046a41106a2004370300200341f8046a41186a20022903003703002003200437038004200320032903a0043703f804410121094101102a2202450d13200241033a0000200341f8046aad42808080808004842002ad4280808080108410012002102c2000410c36020041012106410121080c120b200241036a2d0000210820022f0001210a200141106a28020021092001410c6a2802002114200141086a2802002111200141046a28020021150240024020022d0000220b417f6a220641024b0d00024020060e03000102000b200241046a2d00000d00200241086a2802004102742002410c6a28020041036c4f0d010b200b200a2008411074727241ff0171450d002000410636020041002108410121092014450d032011102c0c030b20112009410041202009676b108d03200341c0036a41086a22024196e0c500ad4280808080f000841002220641086a290000370300200320062900003703c0032006102c200341a8016a41086a22082002290300370300200320032903c0033703a801200241d1fdc200ad42808080808002841002220641086a290000370300200320062900003703c0032006102c20034180046a41086a22062002290300370300200320032903c00337038004200320153602b80120034188026a41186a220a200341b8016aad22054280808080c000841006220241186a29000037030020034188026a41106a220b200241106a29000037030020034188026a41086a220c200241086a29000037030020032002290000370388022002102c200341a0046a41186a220d200a290300370300200341a0046a41106a220a200b290300370300200341a0046a41086a220b200c29030037030020032003290388023703a00441c000102a2202450d12200220032903a801370000200241086a20082903003700002002200329038004370010200241186a2006290300370000200220032903a004370020200241286a200b290300370000200241306a200a290300370000200241386a200d290300370000200341a0046a200241c00010e90320032902a404210420032802a00421062002102c2004420020061b21042006410820061b211220094102742213450d0141002109417f210b41002108410021060340024002400240201120096a280200220a20064f0d00410821020c010b2008200a6a22022004422088a7220c490d01410921020b2000200236020002402014450d002011102c0b02402004422088a72200450d00201241306a2102200041d8006c210003400240200241746a280200450d00200241706a280200102c0b02402002280200450d002002417c6a280200102c0b200241d8006a2102200041a87f6a22000d000b0b41002108410121092004a7450d042012102c0c040b2012200241d8006c6a220228022c210f20022802202110200241306a280200210d200241246a280200210e2002200241d8006a200b200c6a200a6b41d8006c10dc051a0240200e450d002010102c0b0240200d450d00200f102c0b200641016a210620044280808080707c2104200b41016a210b2008417f6a21082013200941046a2209470d000c020b0b2000410436020041012106410121080c100b02402014450d002011102c0b200341c0036a41086a22024196e0c500ad4280808080f000841002220941086a290000370300200320092900003703c0032009102c200341a8016a41086a22062002290300370300200320032903c0033703a801200241d1fdc200ad42808080808002841002220941086a290000370300200320092900003703c0032009102c20034180046a41086a22092002290300370300200320032903c00337038004200320153602b80120034188026a41186a220820054280808080c000841006220241186a29000037030020034188026a41106a220a200241106a29000037030020034188026a41086a220b200241086a29000037030020032002290000370388022002102c200341a0046a41186a220c2008290300370300200341a0046a41106a2208200a290300370300200341a0046a41086a220a200b29030037030020032003290388023703a00441c000102a2202450d10200220032903a801370000200241086a20062903003700002002200329038004370010200241186a2009290300370000200220032903a004370020200241286a200a290300370000200241306a2008290300370000200241386a200c290300370000200341a0046a20122004422088a72209109e042002ad428080808080088420033502a80442208620032802a0042206ad841001024020032802a404450d002006102c0b2002102c02402009450d00200941d8006c2109201241306a210203400240200241746a280200450d00200241706a280200102c0b02402002280200450d002002417c6a280200102c0b200241d8006a2102200941a87f6a22090d000b0b02402004a7450d002012102c0b2000410c36020041002108410121090b410121060c0e0b20034188026a41026a200341a8016a41026a2d00003a0000200341a0046a41086a200341f8046a41086a290300370300200341a0046a41106a200341f8046a41106a290300370300200341a0046a41186a200341f8046a41186a2d00003a0000200320032f01a8013b018802200320032903f8043703a004410021020b20034188016a41086a2206200341a0046a41086a29030037030020034188016a41106a2208200341a0046a41106a29030037030020034188016a41186a220a200341a0046a41186a2d00003a0000200320032f0188023b01bc05200320032903a0043703880120032003418a026a2d00003a00be0520020d09200341af036a2006290300370000200341b7036a2008290300370000200341bf036a200a2d00003a0000200320032d00be053a00a203200320032f01bc053b01a003200320093600a30320032003290388013700a703200341c0036a41086a22024196e0c500ad4280808080f000841002220941086a290000370300200320092900003703c0032009102c200341a8016a41086a2002290300370300200320032903c0033703a801200241d9f8c200ad4280808080e000841002220941086a290000370300200320092900003703c0032009102c20034180046a41086a2002290300370300200320032903c00337038004200341a0046a200341a0036a109f0141c000102a2202450d0d200220032903a801370000200241086a200341a8016a41086a2903003700002002200329038004370010200241186a20034180046a41086a290300370000200220032903a004370020200241286a200341a0046a41086a290300370000200241306a200341b0046a290300370000200241386a200341a0046a41186a29030037000041012109200341d8006a200241c000410141004100109701200328025821062002102c0240024020064101460d00200341a0036a20034180036a412010dd05450d01200341e0026a200341a0036a10aa04200341c0036a41086a22024196e0c500ad4280808080f000841002220941086a290000370300200320092900003703c0032009102c20034188016a41086a22062002290300370300200320032903c00337038801200241d9f8c200ad4280808080e000841002220941086a290000370300200320092900003703c0032009102c20034188026a41086a22092002290300370300200320032903c00337038802200341f8046a20034180036a109f0141c000102a2202450d0f2002200329038801370000200241086a20062903003700002002200329038802370010200241186a2009290300370000200220032903f804370020200241286a200341f8046a41086a290300370000200241306a200341f8046a41106a220a290300370000200241386a200341f8046a41186a220b290300370000200341a0046a200241c00010e603024020032802c0042206450d002002ad428080808080088410050b200341d8036a41186a220c200341a0046a41186a220d290300370300200341d8036a41106a220e200341a0046a41106a220f290300370300200341d8036a41086a2210200341a0046a41086a220929030037030020034188026a41086a2208200341cc046a221529020037030020034188026a41106a2211200341d4046a221629020037030020034188026a41186a2212200341dc046a221729020037030020034188026a41206a2213200341e4046a221829020037030020034188026a41286a2214200341ec046a2219280200360200200320032903a0043703d803200320032902c40437038802200341f8046a41086a221a2010290300370300200a200e290300370300200b200c29030037030020092008290300370300200f2011290300370300200d2012290300370300200341a0046a41206a220b2013290300370300200341a0046a41286a2014280200360200200320032903d8033703f80420032003290388023703a00402402006450d0020034180046a41186a220c200341f8046a41186a220d29030037030020034180046a41106a220e200341f8046a41106a220f29030037030020034180046a41086a2210201a290300370300200341b8016a41086a22112009290300370300200341b8016a41106a2212200341a0046a41106a220a290300370300200341b8016a41186a2213200341a0046a41186a2214290300370300200341b8016a41206a221a200b290300370300200341b8016a41286a220b200341a0046a41286a2207280200360200200320032903f80437038004200320032903a0043703b8012002102c2014200c290300370300200a200e29030037030020092010290300370300200341c4046a20032903b8013702002015201129030037020020162012290300370200201720132903003702002018201a2903003702002019200b28020036020020032003290380043703a004200320063602c004200341c0036a41086a22024196e0c500ad4280808080f000841002220941086a290000370300200320092900003703c0032009102c20034188016a41086a2002290300370300200320032903c00337038801200241d9f8c200ad4280808080e000841002220941086a290000370300200320092900003703c0032009102c20082002290300370300200320032903c00337038802200341f8046a200341a0036a109f0141c000102a2206450d102006200329038801370000200641086a20034188016a41086a2903003700002006200329038802370010200641186a20034188026a41086a290300370000200620032903f804370020200641286a200341f8046a41086a290300370000200641306a200f290300370000200641386a200d29030037000020034100360290022003420137038802200341cc046a20034188026a1091012003200341a0046a3602f804200341f8046a20034188026a108a012003200a3602f804200341f8046a20034188026a108a0120032802c00421022007280200220920034188026a106702402009450d002002200941186c6a21090340200320023602f804200341f8046a20034188026a108a01200241106a20034188026a1089012009200241186a2202470d000b0b200328028c0221022006ad42808080808008842003350290024220862003280288022209ad84100102402002450d002009102c0b2006102c20032802c404450d0220032802c004102c0c020b2002102c0c010b2000410536020041012106410121080c0d0b2000410c3602000c0b0b200341a0046a41186a220d4200370300200341a0046a41106a220a4200370300200341a0046a41086a22084200370300200342003703a004200341c0036a41086a22094196e0c500ad4280808080f0008422051002220641086a290000370300200320062900003703c0032006102c20082009290300370300200320032903c00322043703a801200320043703a0042009419de0c500ad4280808080a001841002220641086a290000370300200320062900003703c0032006102c200a20032903c0032204370300200341f8046a41086a2008290300370300200341f8046a41106a2004370300200341f8046a41186a20092903003703002003200437038004200320032903a0043703f804200341d0006a200341f8046a4120109401200320023602e8022003200c3602e4022003200b3602e002200341003a00f00220032003280254410020032802501b3602ec02200341e4016a220b108604200920051002220241086a290000370300200320022900003703c0032002102c200341a8016a41086a220c2009290300370300200320032903c0033703a801200941aff8c200ad4280808080a001841002220241086a290000370300200320022900003703c0032002102c20034180046a41086a22022009290300370300200320032903c00337038004200341a0046a200b109f0141c000102a2206450d0c200620032903a801370000200641086a200c2903003700002006200329038004370010200641186a2002290300370000200620032903a004370020200641286a2008290300370000200641306a200a290300370000200641386a200d29030037000020034188026a200641c00010ee030240024020032d0098024102460d00200341f8046a41086a200341a5026a290000370300200341f8046a41106a200341ad026a290000370300200341f8046a41186a200341b5026a290000370300200341a0036a41086a200341c6026a290100370300200341a0036a41106a200341ce026a290100370300200341a0036a41186a200341d6026a29010037030020032003419d026a2900003703f8042003200341be026a2901003703a003200341bd026a2d0000210220032d009c022109200328028c02450d01200328028802102c0c010b2003200b3602d403200341a0046a108404200341d8036a20032802a004220220032802a80410d301024020032802a404450d002002102c0b0240024020032d00d8030d00200341a0046a10840420032802a0042102200320032802a8043602fc04200320023602f804200b200341f8046a10a102024020032802a404450d002002102c0b410021020c010b20034180046a41186a200341f1036a29000037030020034180046a41106a200341e9036a29000037030020034180046a41086a200341e1036a290000370300200320032900d9033703800420034188016a20034180046a108b04200341a0046a2003280288012208200328029001220a10ee03024020032d00b0044102470d002003410036027020034201370368200341a0036a41146a410d360200200341ac036a410b360200200341073602ac0120034196e0c5003602a8012003410b3602a4032003410a3602c403200341aff8c2003602c003200320034188016a3602b0032003200341c0036a3602a8032003200341a8016a3602a0032003200341e8006a3602bc05200341f8046a41146a4103360200200342033702fc04200341c09dc5003602f8042003200341a0036a36028805200341bc056a41c49ac500200341f8046a10391a2003350270422086200335026884100420032802d4032109200341f8046a10840420032802f804210220032003280280053602a403200320023602a0032009200341a0036a10a102024020032802fc04450d002002102c0b0240200328026c450d002003280268102c0b0240200328028c01450d00200328028801102c0b410021020c010b200341f8046a200341a0046a41146a41c20010db051a20032d0099052102200341a0036a41106a200341a0046a41106a280200360200200341a0036a41086a200341a0046a41086a2903002204370300200341a0036a41186a2003419a056a410020024101461b360200200320032903a00422053703a0032003200341d4036a3602b40320034100360270200342013703682004a72202200341e8006a10672005a7210b02402002450d0020024105742109200b210203402002200341e8006a109101200241206a2102200941606a22090d000b0b20032802ac03210c02400240200328026c2209200328027022026b4104490d00200328026821090c010b200241046a220d2002490d0820094101742202200d2002200d4b1b22024100480d080240024020090d002002102a21090c010b200328026820092002102e21090b2009450d0f2003200236026c20032009360268200328027021020b2003200241046a360270200920026a200c36000020032d00b003210c02400240200328026c20032802702202460d00200328026821090c010b200241016a22092002490d082002410174220d2009200d20094b1b220d4100480d080240024020020d00200d102a21090c010b20032802682002200d102e21090b2009450d0f2003200d36026c20032009360268200328027021020b2003200241016a360270200920026a200c3a0000200341a0036a41146a200341e8006a10a202200328026c2102200aad4220862008ad84200335027042208620032802682209ad84100102402002450d002009102c0b024020032802a403450d00200b102c0b0240200328028c01450d00200328028801102c0b20032802d4032109200341a0046a10840420032802a0042102200320032802a8043602fc04200320023602f8042009200341f8046a10a102024020032802a404450d002002102c0b200341a0036a41086a20034180046a41086a290300370300200341a0036a41106a20034180046a41106a290300370300200341a0036a41186a20034180046a41186a29030037030020032003290380043703a003410121020b410021090b200341c5046a20023a0000200341c6046a20032903a003370100200341ad046a200341f8046a41086a290300370000200341b5046a200341f8046a41106a290300370000200341bd046a200341f8046a41186a290300370000200341ce046a200341a0036a41086a290300370100200341d6046a200341a0036a41106a290300370100200341de046a200341a0036a41186a290300370100200320093a00a404200320032903f8043700a5042003200341e0026a3602a0042003410036029002200342013703880220032802e002210220032802e802220920034188026a106702402009450d00200941057421090340200220034188026a109101200241206a2102200941606a22090d000b0b20032802ec02210802400240200328028c02220920032802900222026b4104490d0020032802880221090c010b200241046a220a2002490d0620094101742202200a2002200a4b1b22024100480d060240024020090d002002102a21090c010b20032802880220092002102e21090b2009450d0d2003200236028c02200320093602880220032802900221020b2003200241046a36029002200920026a200836000020032d00f002210802400240200328028c022003280290022202460d0020032802880221090c010b200241016a22092002490d062002410174220a2009200a20094b1b220a4100480d060240024020020d00200a102a21090c010b2003280288022002200a102e21090b2009450d0d2003200a36028c02200320093602880220032802900221020b2003200241016a36029002200920026a20083a0000200341a0046a41047220034188026a10a302200328028c0221022006ad42808080808008842003350290024220862003280288022209ad84100102402002450d002009102c0b2006102c024020032802e402450d0020032802e002102c0b024020032802dc01450d0020032802d801102c0b2000410c360200410121060b41002109410121080c0a0b41012106410021092008450d00200a102c0b410121080c080b41002108410021060b200341c5046a20083a0000200341c6046a20032903a003370100200341ad046a200341f8046a41086a290300370000200341b5046a200341f8046a41106a290300370000200341bd046a200341f8046a41186a290300370000200341ce046a200341a0036a41086a290300370100200341d6046a200341a0036a41106a290300370100200341de046a200341a0036a41186a290300370100200320063a00a404200320093602a004200320032903f8043700a504200341003602c001200342013703b801200341a0046a200341b8016a108901200341a0046a410472200341b8016a10a30220032802bc0121092002ad428080808080088420033502c00142208620032802b8012206ad84100102402009450d002006102c0b2002102c024020032802ac02450d0020032802a802102c0b2000410c3602000c050b1035000b200341a0036a41026a200341a8016a41026a2d00003a0000200341a0046a41086a200341f8046a41086a290300370300200341a0046a41106a200341f8046a41106a290300370300200341a0046a41186a200341f8046a41186a2d00003a0000200320032f01a8013b01a003200320032903f8043703a004410021020b20034180036a41026a220a200341a0036a41026a2d00003a000020034180046a41086a2209200341a0046a41086a29030037030020034180046a41106a220b200341a0046a41106a29030037030020034180046a41186a220c200341a0046a41186a2d00003a0000200320032f01a0033b018003200320032903a004370380042002450d010b410121092000410136020041012106410121080c020b20034197026a20092903003700002003419f026a200b290300370000200341a7026a200c2d00003a0000200320032f0180033b0188022003200836008b02200320032903800437008f022003200a2d00003a008a02200341c0036a41086a22024196e0c500ad4280808080f000841002220841086a290000370300200320082900003703c0032008102c200341a8016a41086a2002290300370300200320032903c0033703a801200241d9f8c200ad4280808080e000841002220841086a290000370300200320082900003703c0032008102c20092002290300370300200320032903c00337038004200341a0046a20034188026a109f0141c000102a2202450d02200220032903a801370000200241086a200341a8016a41086a2903003700002002200329038004370010200241186a20034180046a41086a290300370000200220032903a004370020200241286a200341a0046a41086a290300370000200241306a200341b0046a290300370000200241386a200341a0046a41186a29030037000041012109200341186a200241c000410141004100109701200328021821082002102c410521020240024020084101460d00410a2102200542ffffe883b1de165620044200522004501b0d010b2000200236020041012106410121080c020b200341b8016a20034188026a10aa04200341b8016a200610a904200341086a200341b8016a10b701200341086a41086a290300211b2003290308211c200341ce046a20032d00ba013a0000200341cf046a20032800bb01360000200341c8046a4100360200200341a0046a41186a201b2004201c200554201b200454201b2004511b22091b2204370300200341d3046a200341b8016a4107722202290000370000200341db046a200241086a290000370000200341e3046a200241106a290000370000200341eb046a200241186a2d00003a0000200320032f01b8013b01cc04200342083703c0042003201c200520091b22053703b004200320043703a804200320053703a00420034188026a200341a0046a1099040240200341c4046a280200450d0020032802c004102c0b2000410c3602000b4101210941012106410121080b024020012d00002200417f6a2202410f4b0d0002400240024020020e1005030303050003030503030301050302050b2009450d04200141086a280200450d04200141046a280200102c0c040b2006450d03200141086a280200450d03200141046a280200102c0c030b2008450d022001410c6a280200450d02200141086a280200102c0c020b02402000410f4b0d00410120007441bebf03710d02024020004106460d002000410d470d01200141086a280200450d03200141046a280200102c0c030b200141086a280200450d02200141046a280200102c0c020b2001410c6a280200450d01200141086a280200102c0c010b1033000b200341c0056a24000bb20201027f024002402000280200220141064b0d00024002400240024020010e0705050005010203050b200041086a280200450d042000280204102c0f0b200041086a280200450d032000280204102c0f0b02402000410c6a2802002202450d0020002802042101200241186c210203400240200141046a280200450d002001280200102c0b0240200141106a280200450d002001410c6a280200102c0b200141186a2101200241686a22020d000b0b200041086a280200450d022000280204102c0f0b02402000410c6a2802002202450d00200028020421012002410c6c210203400240200141046a280200450d002001280200102c0b2001410c6a2101200241746a22020d000b0b200041086a280200450d012000280204102c0c010b200041086a280200450d002000280204102c0f0b0b800a01057f024002402000280200220141164b0d000240024002400240024002400240024002400240024002400240024020010e1700010f0f020f0f030405060708090f0a0f0b0c0d0f0f0f000b200041086a10fb020f0b02402000410c6a2802002202450d002000280204210120024190016c210203402001107320014190016a2101200241f07e6a22020d000b0b200041086a280200450d0d2000280204102c0f0b02402000410c6a2802002201450d0020002802042203200141f0006c6a2104034002402003410c6a2802002202450d0020032802042101200241246c210203400240024020012d0000220541034b0d0002400240024020050e0404000102040b2001410c6a280200450d03200141086a280200102c0c030b2001410c6a280200450d02200141086a280200102c0c020b2001410c6a280200450d01200141086a280200102c0c010b200141086a280200450d00200141046a280200102c0b200141246a21012002415c6a22020d000b0b200341f0006a21010240200341086a280200450d002003280204102c0b2001210320012004470d000b0b200041086a280200450d0c2000280204102c0f0b0240200041086a2d00002201410f4b0d00410120017441bfbf03710d0c024020014106470d00200041106a280200450d0d2000410c6a280200102c0f0b200041106a280200450d0c2000410c6a280200102c0f0b200041146a280200450d0b200041106a280200102c0f0b200041086a280200450d0a2000280204102c0f0b200041086a2d0000416d6a220141014b0d090240024020010e020001000b200041106a280200450d0a2000410c6a280200102c0f0b200041106a280200450d092000410c6a280200102c0f0b20002d0004417f6a220141024b0d0802400240024020010e03000102000b2000410c6a280200450d0a200041086a280200102c0f0b200041086a220128020010fc022001280200102c0f0b2000410c6a220128020010fc022001280200102c0f0b20002d0004417f6a220141024b0d0702400240024020010e03000102000b2000410c6a280200450d09200041086a280200102c0f0b200041086a220128020010fc022001280200102c0f0b2000410c6a220128020010fc022001280200102c0f0b200041086a2802004101470d06200041106a280200450d062000410c6a280200102c0f0b20002d00044104470d052000410c6a280200450d05200041086a280200102c0f0b200041086a280200450d042000280204102c0f0b200041086a2d0000417e6a220141024b0d0302400240024020010e03000102000b200041106a280200450d052000410c6a280200102c0f0b200041346a280200450d04200041306a280200102c0f0b200041306a280200450d032000412c6a280200102c0f0b02402000280204220141024b0d00024020010e03040004040b200041086a220128020010fc022001280200102c0f0b2000412c6a220128020010fc022001280200102c0f0b02402000410c6a280200450d00200041086a280200102c0b02402000411c6a2802002202450d00200041146a28020021012002410c6c210203400240200141046a280200450d002001280200102c0b2001410c6a2101200241746a22020d000b0b200041186a280200450d012000280214102c0c010b02402000280204220141034b0d00024020010e0402000202020b2000410c6a280200450d01200041086a280200102c0f0b200041306a280200450d002000412c6a280200102c0f0b0b8d0902067f047e230041e0026b220224000240024002400240024002400240024002400240024020012802042203450d00200128020022042d0000210520012003417f6a3602042001200441016a360200200541034b0d0620050e0401020304010b200041053a00000c090b200241206a200110820120022802200d03200041053a00000c080b200241c0006a2001108f020240024020022802404118460d00200241d0016a200241c0006a41900110db051a419001102a22050d010c080b200041053a00000c080b2005200241d0016a41900110db052105200041023a0000200020022f00103b0001200041036a200241106a41026a2d00003a0000200041046a2005360200200041086a2002290220370200200041106a200241206a41086a290200370200200041186a200241206a41106a290200370200200041206a200241206a41186a2902003702000c070b20022001107520022802000d0420022802042105200241c0006a2001108f0220022802404118460d04200241d0016a200241c0006a41900110db051a419001102a2201450d052001200241d0016a41900110db052101200041033a0000200020022f00103b0001200041036a200241126a2d00003a0000200041086a2001360200200041046a20053602002000410c6a2002290220370200200041146a200241206a41086a2902003702002000411c6a200241306a290200370200200041246a200241386a2802003602000c060b41002105200241003a00f0012003417f6a21062003417e6a21030340024020062005470d00200541ff0171450d04200241003a00f0010c040b200241d0016a20056a200420056a220741016a2d00003a0000200120033602042001200741026a3602002002200541016a22073a00f0012003417f6a21032007210520074120470d000b200241c0006a41186a200241d0016a41186a290300370300200241c0006a41106a200241d0016a41106a290300370300200241c0006a41086a200241d0016a41086a290300370300200220022903d001370340200241086a2001107520022802080d0220012802042203450d02200228020c2104200128020022072d0000210520012003417f6a3602042001200741016a360200200541014b0d02410021010240024020050e020100010b410121010b200241206a41186a200241c0006a41186a2903002208370300200241206a41106a200241c0006a41106a2903002209370300200241206a41086a200241c0006a41086a290300220a37030020022002290340220b370320200041043a00002000200b370001200041096a200a370000200041116a2009370000200041196a2008370000200041246a2004360200200041216a20013a00000c050b200241cb006a200241206a41086a28020036000020022002290320370043200041013a000020002002290040370001200041086a200241c7006a290000370000200041106a20022902d001370200200041186a200241d0016a41086a290200370200200041206a200241d0016a41106a2902003702000c040b200041053a00000c030b200041053a00000c020b200041053a00000c010b1033000b200241e0026a24000bf10603057f0b7e067f230041106b21020240200128020422034104490d0020012802002204280000210520012003417c6a22063602042001200441046a36020020064108490d00200429000421072001200341746a220636020420012004410c6a36020020064108490d00200429000c210820012003416c6a22063602042001200441146a36020020064108490d00200429001421092001200341646a220636020420012004411c6a36020020064108490d00200429001c210a20012003415c6a22063602042001200441246a36020020064108490d002004290024210b2001200341546a220636020420012004412c6a36020020064108490d00200429002c210c20012003414c6a22063602042001200441346a36020020064108490d002004290034210d2001200341446a220636020420012004413c6a36020020064108490d00200429003c210e2001200341bc7f6a22063602042001200441c4006a36020020064108490d002004290044210f2001200341b47f6a22063602042001200441cc006a36020020064108490d00200429004c21102001200341ac7f6a22063602042001200441d4006a36020020064108490d00200429005421112001200341a47f6a22063602042001200441dc006a36020020064104490d00200428005c21122001200341a07f6a22063602042001200441e0006a36020020064104490d002004280060211320012003419c7f6a22063602042001200441e4006a36020020064104490d00200428006421142001200341987f6a22063602042001200441e8006a36020020064104490d00200428006821152001200341947f6a22063602042001200441ec006a22043602002006450d0020042d000021062001200341937f6a22163602042001200441016a360200200641014b0d00410021170240024020060e020100010b410121170b20164104490d00200020173a00702000201536026820002014360264200020133602602000201236025c2000200536025820002011370350200020103703482000200f3703402000200e3703382000200d3703302000200c3703282000200b3703202000200a3703182000200937031020002008370308200020073703002004280001210620012003418f7f6a3602042001200441056a3602002000200636026c200041f4006a2002410c6a280000360000200020022800093600710f0b200041023a00700bcc07020e7f047e230041a0016b220224002002412036020c20022001360208200241106a2001ad42808080808004841003108d0102400240200228021022030d00200041003602000c010b200228021421042002200241186a280200360234200220033602302002200241306a1075024002400240024020022802000d00024002402002280234220541286e220641286c2201417f4c0d00200228020421070240024020010d00410821080c010b2001102a2208450d020b02402007450d00410021090340200241003a0098012009220a41016a2109410021010240024002400240034020052001460d01200241f8006a20016a2002280230220b2d00003a00002002200b41016a3602302002200141016a220c3a009801200c2101200c4120470d000b200241d8006a41086a220d200241f8006a41086a290300370300200241d8006a41106a220e200241f8006a41106a290300370300200241d8006a41186a220f200241f8006a41186a2903003703002002200229037837035820022005200c6b220136023420014108490d01200241386a41086a220c200d290300370300200241386a41106a220d200e290300370300200241386a41186a220e200f290300370300200220022903583703382002200b41096a3602302002200141786a2205360234200b29000121102006200a470d030240200a41017422012009200120094b1b2206ad42287e2211422088a70d002011a7220141004e0d030b1035000b20024100360234200141ff0171450d00200241003a0098010b200241003602202006450d072008102c0c070b02400240200a0d002001102a21080c010b2008200a41286c2001102e21080b2008450d040b2008200a41286c6a22012002290338370300200c2903002111200d2903002112200e290300211320012010370320200141186a2013370300200141106a2012370300200141086a201137030020092007470d000b200241286a200736020020022006360224200220083602200c050b200241286a2007360200200220063602242002200836022020080d040c030b103a000b1033000b200241003602200b20024100360260200242013703582002410b36023c2002200241086a3602382002200241d8006a3602202002418c016a41013602002002420137027c200241d0b0c2003602782002200241386a36028801200241206a41c49ac500200241f8006a10391a2002350260422086200235025884100420004100360200200228025c450d012002280258102c0c010b20002002290320370200200041086a200241206a41086a2802003602000b2004450d002003102c0b200241a0016a24000bd60302057f047e230041f0006b220224002002412036020c20022001360208200241106a2001ad42808080808004841003108d0102400240200228021022030d00200041003a00000c010b200241186a28020021042002280214210541002101200241003a006802400340024020042001470d000240200141ff0171450d00200241003a00680b4100210120024100360228200242013703202002410b3602442002200241086a3602402002200241206a36026c200241dc006a41013602002002420137024c200241d0b0c2003602482002200241c0006a360258200241ec006a41c49ac500200241c8006a10391a200235022842208620023502208410042002280224450d022002280220102c0c020b200241c8006a20016a200320016a2d00003a00002002200141016a22063a00682006210120064120470d000b200241206a41186a200241c8006a41186a2903002207370300200241206a41106a200241c8006a41106a2903002208370300200241206a41086a200241c8006a41086a290300220937030020022002290348220a370320200041196a2007370000200041116a2008370000200041096a20093700002000200a370001410121010b200020013a00002005450d002003102c0b200241f0006a24000b3400200041bac6c50036020420004100360200200041146a4109360200200041106a41dc91c200360200200041086a42043702000b130020004102360204200041c4a3c2003602000b2d01017f02404108102a22020d001033000b20004288808080800137020420002002360200200242b8173700000b2d01017f02404108102a22020d001033000b20004288808080800137020420002002360200200242c8013700000bb30c06017f027e057f017e037f017e230041f0016b22022400200241f8006a2000200110ce01200241f8006a41106a290300210020022903800121010240024020022903782203a7450d00200241c0006a200142004204420010e005200241306a420042002001420010e005200241d0006a2002290340200241c0006a41086a2903002203200042028620022903307c7c22044205420010e10542b3e6cc99b3e6cc99332002290350200042ffffffffffffffff3f8320005220022903384200527220042003547222051b220320012001200356200042b3e6cc99b3e6cc9933200241d0006a41086a29030020051b22035620002003511b22051b22042003200020051b220310b102200241e0006a200120047d200020037d2001200454ad7d10ce01200241e0006a41106a290300210120022903682100024020022903602203a7450d00200241b0016a10e801200241b0016a20002001109c010c020b2003500d01200241b0016a41186a22064200370300200241b0016a41106a22074200370300200241b0016a41086a22084200370300200242003703b001200241e0016a41086a2205418be9c500ad428080808080018422041002220941086a290000370300200220092900003703e0012009102c20082005290300370300200220022903e00122033703d001200220033703b001200541c9b5c000ad4280808080d00184220a1002220941086a290000370300200220092900003703e0012009102c200720022903e001220337030020024190016a41086a220b200829030037030020024190016a41106a220c200337030020024190016a41186a220d2005290300370300200220033703d001200220022903b00137039001200241186a20024190016a4120109e01200241186a41106a29030021032002290320210e20022802182109200642003703002007420037030020084200370300200242003703b001200520041002220741086a290000370300200220072900003703e0012007102c20082005290300370300200220022903e00122043703d001200220043703b0012005200a1002220741086a290000370300200220072900003703e0012007102c200620052903002204370300200b2008290300370300200c20022903e001220a370300200d20043703002002200a3703d001200220022903b00137039001200242002003420020091b220320017d200e420020091b2201200054ad7d2204200120007d2200200156200420035620042003511b22051b3703b80120024200200020051b3703b00120024190016aad4280808080800484200241b0016aad428080808080028410010c010b2003500d00200241b0016a41186a22064200370300200241b0016a41106a22074200370300200241b0016a41086a22084200370300200242003703b001200241e0016a41086a2205418be9c500ad428080808080018422041002220941086a290000370300200220092900003703e0012009102c20082005290300370300200220022903e00122033703d001200220033703b001200541c9b5c000ad4280808080d00184220a1002220941086a290000370300200220092900003703e0012009102c200720022903e001220337030020024190016a41086a220b200829030037030020024190016a41106a220c200337030020024190016a41186a220d2005290300370300200220033703d001200220022903b00137039001200220024190016a4120109e01200241106a29030021032002290308210e20022802002109200642003703002007420037030020084200370300200242003703b001200520041002220741086a290000370300200220072900003703e0012007102c20082005290300370300200220022903e00122043703d001200220043703b0012005200a1002220741086a290000370300200220072900003703e0012007102c200620052903002204370300200b2008290300370300200c20022903e001220a370300200d20043703002002200a3703d001200220022903b00137039001200242002003420020091b220320007d200e420020091b2200200154ad7d2204200020017d2201200056200420035620042003511b22051b3703b80120024200200120051b3703b00120024190016aad4280808080800484200241b0016aad428080808080028410010b200241f0016a24000ba40301057f230041106b22032400024002400240200141046a2204417f4c0d000240024020040d00410121050c010b2004102a2205450d020b2003410036020820032004360204200320053602002001200310670240024020032802042206200328020822056b2001490d00200328020021040c010b200520016a22042005490d03200641017422072004200720044b1b22074100480d030240024020060d002007102a21040c010b200328020020062007102e21040b2004450d022003200736020420032004360200200721060b200420056a2000200110db051a02400240200241046a2802002207200241086a28020022006b200520016a2201490d00200228020021050c010b200020016a22052000490d03200741017422002005200020054b1b22004100480d030240024020070d002000102a21050c010b200228020020072000102e21050b2005450d0220022005360200200241046a2000360200200241086a28020021000b200241086a200020016a360200200520006a2004200110db051a02402006450d002004102c0b200341106a24000f0b103a000b1033000b1035000beb0301057f230041c0006b22022400200241206a41086a220341e4d2c500ad42808080808001841002220441086a290000370300200220042900003703202004102c200241086a2205200329030037030020022002290320370300200341a9e4c300ad4280808080e001841002220441086a290000370300200220042900003703202004102c200241106a41086a2206200329030037030020022002290320370310200241206a2000109f01024041c000102a2204450d00200420022903003700002004200229031037001020042002290020370020200441086a2005290300370000200441186a2006290300370000200441286a2003290000370000200441306a200241306a290000370000200441386a200241206a41186a290000370000200241003602282002420137032020012d000021004101102a21030240024020004101460d002003450d02200242818080801037022420022003360220200341003a0000200141086a200241206a10b4040c010b2003450d01200242818080801037022420022003360220200341013a00002002200241206a360210200141016a200241106a1094020b200228022421032004ad4280808080800884200235022842208620022802202201ad84100102402003450d002001102c0b2004102c200241c0006a24000f0b1033000b02000be52003167f037e067f230041c0026b220424000240024020014115490d0041012105410121060240024002400340200121072000210820052006714101732109024002400240024002400240034002400240024002402003450d00024020054101710d0020002001108a032003417f6a21030b2001410276220a41036c210b200a410174210c4100210d024020014132490d00200a200a417f6a220d2000200a4105746a2000200d4105746a412010dd05220e410048220f1b2210200a41016a2211200d200a200f1b220a200020114105746a2000200a4105746a412010dd0541004822111b220a2000200a4105746a200020104105746a412010dd0522104100481b210a200c200c417f6a220d2000200c4105746a2000200d4105746a412010dd05221241004822131b2214200c4101722215200d200c20131b220c200020154105746a2000200c4105746a412010dd0522134100481b220c2000200c4105746a200020144105746a412010dd0522144100481b210c200b200b417f6a220d2000200b4105746a2000200d4105746a412010dd05221541004822161b2217200b41016a2218200d200b20161b220b200020184105746a2000200b4105746a412010dd05220d4100481b220b2000200b4105746a200020174105746a412010dd0522164100481b210b41024101200f1b200e411f7620111b2010411f766a2012411f766a2013411f766a2014411f766a2015411f766a200d411f766a2016411f766a210d0b2000200c4105746a2000200a4105746a412010dd05220f411f76200d6a2000200b4105746a2000200a200c200f410048220f1b220e4105746a412010dd052210411f766a210d2000200b200e20104100481b220b4105746a2000200c200a200f1b22194105746a412010dd05417f4c0d01200b21190c020b20002001108b030c0f0b200d41016a220d410c490d0002402001410176220b450d00200020014105746a41606a210a2000210c0340200441206a41186a220d200c41186a220f290000370300200441206a41106a220e200c41106a2210290000370300200441206a41086a2211200c41086a22122900003703002004200c290000370320200a41086a2213290000211a200a41106a2214290000211b200a41186a2215290000211c200c200a290000370000200f201c3700002010201b3700002012201a3700002015200d2903003700002014200e29030037000020132011290300370000200a2004290320370000200a41606a210a200c41206a210c200b417f6a220b0d000b0b20012019417f736a21194101210a0c010b200d45210a0b0240200a452009724101710d0020002001108c030d0d0b2002450d02201920014f0d0102402002200020194105746a220a412010dd0541004e0d0020002108200121070c040b200441206a41186a2212200041186a220e290000370300200441206a41106a2213200041106a2210290000370300200441206a41086a2214200041086a221129000037030020042000290000370320200a41086a220c290000211a200a41106a220b290000211b200a41186a220d290000211c2000200a290000370000200e201c3700002010201b3700002011201a370000200d2012290300370000200b2013290300370000200c2014290300370000200a2004290320370000200441c0016a41186a2217200e290000370300200441c0016a41106a22182010290000370300200441c0016a41086a22192011290000370300200420002900003703c001200041606a2115200041206a21164100210c2001210b03400240200c200b417f6a220d4f0d002016200c4105746a210a0340200441c0016a200a412010dd05417f4c0d01200a41206a210a200d200c41016a220c470d000b200d210c0b2015200b4105746a210a02400340200c200b417f6a220b4f0d01200441c0016a200a412010dd05210d200a41606a220f210a200d4100480d000b20122016200c4105746a220a41186a220d2900003703002013200a41106a221d2900003703002014200a41086a22062900003703002004200a290000370320200f41286a221e290000211a200f41306a221f290000211b200f41386a2220290000211c200a200f41206a220f290000370000200d201c370000201d201b3700002006201a37000020202012290300370000201f2013290300370000201e2014290300370000200f2004290320370000200c41016a210c0c010b0b200020042903c001370000200e2017290300370000201020182903003700002011201929030037000002402001200c41016a220a490d002000200a4105746a21002001200a6b220141154f0d010c0c0b0b200a20011047000b41c4ffc500201920011038000b2007450d010b201920074f0d01200441206a41186a2216200841186a221e290000370300200441206a41106a2217200841106a221f290000370300200441206a41086a2218200841086a222029000037030020042008290000370320200820194105746a220a41086a220c290000211a200a41106a220b290000211b200a41186a220d290000211c2008200a290000370000201e201c370000201f201b3700002020201a370000200d2016290300370000200b2017290300370000200c2018290300370000200a2004290320370000200441186a2205201e290000370300200441106a2209201f290000370300200441086a2221202029000037030020042008290000370300200841206a21014100211d2007417f6a220d450d022001210a0340200a2004412010dd0541004e0d03200a41206a210a200d201d41016a221d470d000b200d211d0c020b41f8fec500410041001038000b4188ffc500201920071038000b200820074105746a210c200d210b02400340200c2100200b220a201d4d22060d01200a417f6a210b200041606a220c2004412010dd05417f4a0d000b0b0240200a201d490d00200d200a490d0241800121144100210f410021124100210d4100211141800121152001201d4105746a2222210103400240200020016b220a419fc0004b22190d00200a410576220a41807f6a200a2012200f492011200d49220c72220b1b210a0240200b450d002015200a200c1b2115200a2014200c1b21140c010b200a200a41017622156b21140b02402011200d470d00024020150d00200441c0006a220d21110c010b4100210a200441c0006a2211210d2001210c0340200d200a3a0000200d200c2004412010dd05417f73411f766a210d200c41206a210c2015200a41016a220a470d000b0b02402012200f470d00024020140d00200441c0016a220f21120c010b200041606a210a4100210c200441c0016a2212210f0340200f200c3a0000200f200a2004412010dd05411f766a210f200a41606a210a2014200c41016a220c470d000b0b0240200f20126b220a200d20116b220c200c200a4b1b2213450d002016200120112d00004105746a220a41186a2900003703002017200a41106a2900003703002018200a41086a2900003703002004200a290000370320200120112d00004105746a220a200020122d0000417f734105746a220c290000370000200a41186a200c41186a290000370000200a41106a200c41106a290000370000200a41086a200c41086a290000370000024020134101460d004100210a034020002012200a6a220e2d0000417f734105746a220c20012011200a6a41016a22102d00004105746a220b290000370000200c41186a200b41186a290000370000200c41106a200b41106a290000370000200c41086a200b41086a290000370000200120102d00004105746a220c2000200e41016a2d0000417f734105746a220b290000370000200c41186a200b41186a290000370000200c41106a200b41106a290000370000200c41086a200b41086a290000370000200a41026a210c200a41016a220b210a200c2013490d000b2012200b6a21122011200b6a21110b200020122d0000417f734105746a220a2004290320370000200a41186a2016290300370000200a41106a2017290300370000200a41086a2018290300370000201241016a2112201141016a21110b200020144105746b20002012200f461b2100200120154105746a20012011200d461b210120190d000b024002402011200d4f0d002000210a034020162001200d417f6a220d2d00004105746a220c41186a220b2900003703002017200c41106a220f2900003703002018200c41086a22002900003703002004200c290000370320200a41606a220a41086a220e290000211a200a41106a2210290000211b200a41186a2212290000211c200c200a290000370000200b201c370000200f201b3700002000201a3700002012201629030037000020102017290300370000200e2018290300370000200a20042903203700002011200d490d000c020b0b2001210a2012200f4f0d000340200f417f6a220f2d0000210c2016200a41186a220b2900003703002017200a41106a220d2900003703002018200a41086a22012900003703002004200a2900003703202000200c417f734105746a220c41086a220e290000211a200c41106a2210290000211b200c41186a2211290000211c200a200c290000370000200b201c370000200d201b3700002001201a3700002011201629030037000020102017290300370000200e2018290300370000200c2004290320370000200a41206a210a2012200f490d000b0b20082004290300370000201e2005290300370000201f2009290300370000202020212903003700002007200a20226b410576201d6a22014d0d032016201e2900003703002017201f2900003703002018202029000037030020042008290000370320200820014105746a220a41086a220c290000211a200a41106a220b290000211b200a41186a220d290000211c2008200a290000370000201e201c370000201f201b3700002020201a370000200d2016290300370000200b2017290300370000200c2018290300370000200a2004290320370000200720016b220c450d04200c20012001200c4b1b210b2007410376210d200a41206a2100024002402001200c417f6a220c490d002000200c200a2003108903200821000c010b2008200120022003108903200a2102200c21010b200b200d4f2105200141154f0d010c050b0b201d200a1047000b200a200d103f000b4188ffc500200120071038000b4198ffc500411c41b4ffc5001036000b20014102490d00200041606a210f4101210b0340200b410574210a200b417f6a210c200b41016a210b02402000200a6a220a2000200c4105746a220d412010dd05417f4a0d00200441c0016a41186a220e200a41186a2210290000370300200441c0016a41106a2211200a41106a2212290000370300200441c0016a41086a2213200a41086a22142900003703002004200a2900003703c001200a200d2900003700002014200d41086a2900003700002012200d41106a2900003700002010200d41186a2900003700004100210d0240200c450d00200f210a03400240200441c0016a200a412010dd054100480d00200c210d0c020b200a41206a200a290000370000200a41386a200a41186a290000370000200a41306a200a41106a290000370000200a41286a200a41086a290000370000200a41606a210a200c417f6a220c0d000b0b2000200d4105746a220a20042903c001370000200a41186a200e290300370000200a41106a2011290300370000200a41086a20132903003700000b200f41206a210f200b2001470d000b0b200441c0026a24000beb050a067f017e017f017e017f017e017f017e017f017e230041206b2202240002400240024020014108490d00200141017641feffffff07712203417f6a220420014f0d022001410d74200173220541117620057322054105742005732206417f2001417f6a677622077122054100200120052001491b6b220520014f0d01200020044105746a22042900002108200020054105746a220541086a2209290000210a200541106a220b290000210c200541186a220d290000210e20042005290000370000200441186a220f2900002110200f200e370000200441106a220f290000210e200f200c370000200441086a2204290000210c2004200a370000200d2010370000200b200e3700002009200c37000020052008370000024020032001490d00200321040c030b2006410d7420067322054111762005732205410574200573220620077122054100200120052001491b6b220520014f0d01200020034105746a22042900002108200020054105746a220541086a2209290000210a200541106a220b290000210c200541186a220d290000210e20042005290000370000200441186a220f2900002110200f200e370000200441106a220f290000210e200f200c370000200441086a2204290000210c2004200a370000200d2010370000200b200e3700002009200c370000200520083700002003410172220420014f0d022006410d742006732205411176200573220541057420057320077122054100200120052001491b6b220520014f0d01200020044105746a22012900002108200020054105746a220041086a2205290000210a200041106a2204290000210c200041186a2203290000210e20012000290000370000200141186a220629000021102006200e370000200141106a2206290000210e2006200c370000200141086a2201290000210c2001200a370000200320103700002004200e3700002005200c370000200020083700000b200241206a24000f0b4188ffc500200520011038000b41f8fec500200420011038000be90609067f017e017f017e017f027e017f017e027f230041206b22022400024020014101762203450d0003402003417f6a2203210402400240024003402004410174220541017221060240200541026a220520014f0d00200620014f0d0220052006200020064105746a200020054105746a412010dd054100481b21060b200620014f0d03200420014f0d02200020044105746a2204200020064105746a2205412010dd0541004e0d03200541086a22072900002108200541106a2209290000210a200541186a220b290000210c2004290000210d20042005290000370000200441186a220e290000210f200e200c370000200441106a220e290000210c200e200a370000200441086a2204290000210a20042008370000200b200f3700002009200c3700002007200a3700002005200d370000200621040c000b0b41a080c600200620011038000b41b080c600200420011038000b20030d000b0b0240024020014102490d002001210703402007417f6a220720014f0d02200241186a2209200041186a2204290000370300200241106a220b200041106a2205290000370300200241086a220e200041086a2203290000370300200020074105746a220641086a2900002108200641106a290000210a200641186a290000210c2000290000210d200020062900003700002004200c3700002005200a370000200320083700002002200d37030041002105024002400240034020062002290300370000200641186a2009290300370000200641106a200b290300370000200641086a200e2903003700002005410174220641017221040240200641026a220620074f0d00200420074f0d0220062004200020044105746a200020064105746a412010dd054100481b21040b200420074f0d03200520074f0d02200020054105746a2205200020044105746a2206412010dd0541004e0d032009200541186a2203290000370300200b200541106a2210290000370300200e200541086a2211290000370300200641086a2900002108200641106a290000210a200641186a290000210c2005290000210d200520062900003700002003200c3700002010200a370000201120083700002002200d370300200421050c000b0b41a080c600200420071038000b41b080c600200520071038000b200741014b0d000b0b200241206a24000f0b4188ffc500200720011038000bdb08030a7f017e0a7f230041c0006b22022400200041a07f6a21032001417f6a2104200141324921054101210641002107024003400240024020062001490d00410021080c010b41012108200020064105746a2209200941606a412010dd054100480d0003404101210a20042006460d03200641016a2106200941206a220a2009412010dd052108200a21092008417f4a0d000b200620014921080b2006200146210a20050d0120062001460d0102400240024002402006417f6a220920014f0d002008450d0120002006410574220b6a220a290000210c200a200020094105746a22092900003700002009200c370000200a41086a220d290000210c200d200941086a220e290000370000200e200c370000200a41106a220f290000210c200f200941106a22102900003700002010200c370000200a41186a2211290000210c2011200941186a22122900003700002012200c37000020064102490d03200920002006417e6a22084105746a2213412010dd05417f4a0d032009290000210c20092013290000370000200241206a41186a22142012290000370300200241206a41106a22152010290000370300200241206a41086a2216200e290000370300200e201341086a2900003700002010201341106a2900003700002012201341186a2900003700002002200c3703204100210e2008450d022003200b6a210903400240200241206a2009412010dd054100480d002008210e0c040b200941206a2009290000370000200941386a200941186a290000370000200941306a200941106a290000370000200941286a200941086a290000370000200941606a21092008417f6a22080d000c030b0b41f8fec500200920011038000b4188ffc500200620011038000b2000200e4105746a22092002290320370000200941186a2014290300370000200941106a2015290300370000200941086a20162903003700000b200741016a21070240200120066b22104102490d00200a41206a2209200a412010dd05417f4a0d00200a290000210c200a2009290000370000200241206a41186a22122011290000370300200241206a41106a2213200f290000370300200241206a41086a220b200d290000370300200d200941086a290000370000200f200941106a2900003700002011200941186a2900003700002002200c3703204101210d024020104103490d00200a41c0006a200241206a412010dd05417f4a0d00410321084102210e0340200a200e4105746a220941606a220d2009290000370000200d41186a200941186a290000370000200d41106a200941106a290000370000200d41086a200941086a290000370000024020082010490d00200e210d0c020b20084105742109200e210d2008210e200841016a2108200a20096a200241206a412010dd054100480d000b0b200a200d4105746a22092002290320370000200941186a2012290300370000200941106a2013290300370000200941086a200b2903003700000b20074105470d000b4100210a0b200241c0006a2400200a0bc21301147f23004180026b220424000240024020014115490d0041012105410121060240024002400340200121072000210820052006714101732109024002400240024002400240034002400240024002402003450d00024020054101710d0020002001108e032003417f6a21030b2001410276220a41036c210b200a410174210c4100210d024020014132490d00200b200b417f6a220e2000200b4102746a280200220f2000200e4102746a280200221049220d1b2211200b41016a2212200e200b200d1b200020124102746a280200220b2010200f200d1b220e4922101b200b200e20101b200020114102746a2802004922131b210b200c200c417f6a220e2000200c4102746a28020022112000200e4102746a280200221249220f1b2214200c4101722215200e200c200f1b200020154102746a280200220c20122011200f1b220e4922111b200c200e20111b200020144102746a2802004922141b210c200a200a417f6a22122000200a4102746a2802002215200020124102746a280200220649220e1b2216200a41016a22172012200a200e1b200020174102746a280200220a20062015200e1b22154922121b200a201520121b200020164102746a2802004922151b210a41024101200e1b200e20121b20156a200f6a20116a20146a200d6a20106a20136a210d0b200d2000200c4102746a280200220f2000200a4102746a280200221049220e6a2000200b4102746a280200220d2010200f200e1b22114922106a210f200d201120101b2000200c200a200e1b220d4102746a280200490d01200b200a200c200e1b20101b210d0c020b20002001108f030c0f0b200f41016a220f410c490d0002402001410176220b450d00200020014102746a417c6a210a2000210c0340200c280200210e200c200a280200360200200a200e360200200c41046a210c200a417c6a210a200b417f6a220b0d000b0b2001200d417f736a210d4101210a0c010b200f45210a0b0240200a452009724101710d00200020011090030d0d0b2002450d02200d20014f0d01024020022802002000200d4102746a220a280200220c4f0d0020002108200121070c040b2000280200210b2000200c360200200a200b3602002000417c6a2110200041046a21112000280200210d4100210c2001210b03400240200c200b417f6a220e4f0d002011200c4102746a210a0340200d200a280200490d01200a41046a210a200e200c41016a220c470d000b200e210c0b2010200b4102746a210a02400340200c200b417f6a220b4f0d01200a280200210e200a417c6a220f210a200d200e490d000b2011200c4102746a220a2802002112200a200e360200200f41046a2012360200200c41016a210c0c010b0b2000200d36020002402001200c41016a220a490d002000200a4102746a21002001200a6b220141154f0d010c0c0b0b200a20011047000b41c4ffc500200d20011038000b2007450d010b200d20074f0d012008280200210a20082008200d4102746a220c280200360200200c200a360200200841046a210f20082802002111410021142007417f6a220d450d02200f210a0340200a28020020114f0d03200a41046a210a200d201441016a2214470d000b200d21140c020b41f8fec500410041001038000b4188ffc500200d20071038000b200820074102746a210c200d210b02400340200c210e200b220a20144d22060d01200a417f6a210b200e417c6a220c28020020114f0d000b0b0240200a2014490d00200d200a490d0241800121054100210b410021014100210c410021104180012109200f20144102746a2216210d03400240200e200d6b220a4183084b22130d00200a410276220a41807f6a200a2001200b492010200c49220f7222001b210a02402000450d002009200a200f1b2109200a2005200f1b21050c010b200a200a41017622096b21050b02402010200c470d00024020090d002004220c21100c010b4100210a20042210210c200d210f0340200c200a3a0000200c200f28020020114f6a210c200f41046a210f2009200a41016a220a470d000b0b02402001200b470d00024020050d0020044180016a220b21010c010b200e417c6a210a4100210f20044180016a2201210b0340200b200f3a0000200b200a2802002011496a210b200a417c6a210a2005200f41016a220f470d000b0b0240200b20016b220a200c20106b220f200f200a4b1b2212450d00200d20102d00004102746a220a2802002115200a200e20012d0000417f734102746a280200360200024020124101460d004100210a0340200e2001200a6a220f2d0000417f734102746a200d2010200a6a41016a22002d00004102746a280200360200200d20002d00004102746a200e200f41016a2d0000417f734102746a280200360200200a41026a210f200a41016a2200210a200f2012490d000b200120006a2101201020006a21100b200e20012d0000417f734102746a2015360200200141016a2101201041016a21100b200e20054102746b200e2001200b461b210e200d20094102746a200d2010200c461b210d20130d000b024002402010200c4f0d00200e210a0340200d200c417f6a220c2d00004102746a220b280200210e200b200a417c6a220a280200360200200a200e3602002010200c490d000c020b0b200d210a2001200b4f0d000340200a280200210c200a200e200b417f6a220b2d0000417f734102746a220d280200360200200d200c360200200a41046a210a2001200b490d000b0b200820113602002007200a20166b41027620146a22014d0d032008200820014102746a220a280200360200200a2011360200200720016b220c450d04200c20012001200c4b1b210b2007410376210e200a41046a2100024002402001200c417f6a220c490d002000200c200a2003108d03200821000c010b2008200120022003108d03200a2102200c21010b200b200e4f2105200141154f0d010c050b0b2014200a1047000b200a200d103f000b4188ffc500200120071038000b4198ffc500411c41b4ffc5001036000b20014102490d00200041746a210e4102210d4101210a0340200a41016a210c02402000200a4102746a2210280200220b2000200a417f6a22114102746a220f28020022124f0d002010201236020002402011450d00200b2000200a417e6a22104102746a221128020022124f0d00200f2012360200024020100d002011210f0c010b0240200b2000200a417d6a220a4102746a220f2802002210490d002011210f0c010b20112010360200200a450d00200d210f200e210a02400340200b200a28020022104f0d01200a41046a2010360200200a417c6a210a200f41016a2210200f4921112010210f2011450d000b0b200a41046a210f0b200f200b3602000b200d417f6a210d200e41046a210e200c210a200c2001470d000b0b20044180026a24000bf30201067f02400240024020014108490d00200141017641feffffff07712202417f6a220320014f0d022001410d74200173220441117620047322044105742004732205417f2001417f6a677622067122044100200120042001491b6b220420014f0d01200020034102746a220328020021072003200020044102746a220428020036020020042007360200024020022001490d00200221030c030b2005410d7420057322044111762004732204410574200473220520067122044100200120042001491b6b220420014f0d01200020024102746a220328020021072003200020044102746a2204280200360200200420073602002002410172220320014f0d022005410d742005732204411176200473220441057420047320067122044100200120042001491b6b220420014f0d01200020034102746a220128020021022001200020044102746a2200280200360200200020023602000b0f0b4188ffc500200420011038000b41f8fec500200320011038000bc70301067f024020014101762202450d0003402002417f6a2202210302400240024003402003410174220441017221050240200441026a220420014f0d00200520014f0d0220042005200020054102746a280200200020044102746a280200491b21050b200520014f0d03200320014f0d02200020034102746a22032802002204200020054102746a220628020022074f0d032003200736020020062004360200200521030c000b0b41a080c600200520011038000b41b080c600200320011038000b20020d000b0b0240024020014102490d002001210403402004417f6a220420014f0d02200028020021052000200020044102746a2203280200360200200320053602004100210302400240024003402003410174220641017221050240200641026a220620044f0d00200520044f0d0220062005200020054102746a280200200020064102746a280200491b21050b200520044f0d03200320044f0d02200020034102746a22032802002206200020054102746a220728020022024f0d032003200236020020072006360200200521030c000b0b41a080c600200520041038000b41b080c600200320041038000b200441014b0d000b0b0f0b4188ffc500200420011038000b8a05010f7f2001417d6a2102200041086a21032000416c6a21042001417f6a2105200041046a2106410021072001413249210841012109024003400240024020092001490d004100210a0c010b4101210a20002009410274220b6a220c280200220d200c417c6a280200490d002006200b6a210a03404101210c20052009460d03200941016a2109200a280200220c200d4f210b200a41046a210a200c210d200b0d000b2009200149210a0b2009200146210c20080d0120092001460d0102400240024002402009417f6a220d20014f0d00200a450d012000200d4102746a220c280200210b200c20002009410274220e6a220a280200220d360200200a200b360200024020094102490d00200d20002009417e6a220b4102746a220f28020022104f0d00200c201036020002400240200b0d00200f210c0c010b0240200d20002009417d6a220b4102746a220c2802002210490d00200f210c0c010b200f2010360200200b450d00200d200a41706a280200220f4f0d002004200e6a2110024003402010220c41086a200f360200200b417f6a220b450d01200c417c6a2110200d200c280200220f490d000b0b200c41046a210c0b200c200d3602000b200741016a2107200120096b220b4102490d03200a280204220f200a280200220c4f0d03200a41046a210d200a200f360200200b4103490d02200a280208220f200c4f0d02200d200f3602000240200b41044f0d00200a41086a210d0c030b200220096b210a2003200e6a210d0340200d41046a220b280200220e200c4f0d03200d200e360200200b210d200a417f6a220a0d000b200b210d0c020b41f8fec500200d20011038000b4188ffc500200920011038000b200d200c3602000b20074105470d000b4100210c0b200c0b120041bcaac20041fc0041acfec5001036000b5101027e024002402003450d002002280200450d010b41b5abc50041f4031054000b2001280218220342002003290308220420023502047d2205200520045622021b37030820004105410420021b3602000bd60201047f0240024002402002417f4c0d000240024020020d00410121060c010b2002102a2206450d020b20062001200210db0521062004417f4c0d000240024020040d0041012101410021070c010b200421072004102a2201450d020b20012003200410db052103024020002802082201200041046a280200470d00200141016a22082001490d03200141017422092008200920084b1b220841ffffff3f712008470d03200841057422094100480d030240024020010d002009102a21010c010b200028020020014105742009102e21010b2001450d0220002001360200200041046a2008360200200028020821010b200028020020014105746a220141003602182001200336020c2001200236020820012002360204200120063602002001411c6a2005360200200141146a2004360200200141106a20073602002000200028020841016a3602080f0b103a000b1033000b1035000bfa0e05047f027e027f017e027f230041c00c6b22042400024002400240024002400240024002402003450d0020022802000d0020034101460d0120022802100d0120034102460d0220022802200d0220034103460d0320022802300d0320022802042105200241246a2802002106200241346a28020021030240200241146a2802002207450d004105210220012802002802182802402802bc012003490d080b200441286a4200370300200441206a4200370300200441186a420037030020012802182202420020022903082208427f20012802102903482209420586200942ffffffffffffffff07832009521b7d22092009200856220a1b3703082004420037031041052102200a0d070240024020012802142802082005200441106a4120101e41026a220a41024b0d00200a0e03090001090b41ac91c600412841d491c6001036000b024002400240024020070d00410121034100210b0c010b2004200128021029034842002003ad220c420010e0052001280218220a4200200a2903082209427f200429030020042903084200521b7d22082008200956220a1b370308200a0d0a2003417f4c0d070240024020030d004101210b02402001280214280208200641014100101e41026a220341024b0d0020030e030d00020d0b41ac91c600412841d491c6001036000b20031030220b450d0a024020012802142802082006200b2003101e41026a220341024b0d0020030e03030001030b41ac91c600412841d491c6001036000b200c422086200c842109200b4521030b20012802002101200441306a41186a220a200441106a41186a290300370300200441306a41106a2205200441106a41106a290300370300200441306a41086a2206200441106a41086a290300370300200420042903103703302001280218210720030d0120072802402802bc012009422088a74f0d012009a7450d090b200b102c0c080b200441d0006a41186a200a290300370300200441d0006a41106a2005290300370300200441d0006a41086a20062903003703002004200429033037035020072802180d052007417f360218200441a8016a200741e8006a290000370300200441a0016a200741e0006a29000037030020044198016a200741d8006a2900003703002004200729005037039001024002402007411c6a220d280200220a41d0e1c100460d00200741206a28020021060c010b41002106200441e0096a410041e00210da051a200441c0016a410041a00810da051a41880b102a220a450d07200a41003b0106200a4100360200200a41086a200441e0096a41e00210db051a200a41e8026a200441c0016a41a00810db051a200741206a41003602002007200a36021c0b024002400340200a2f0106220e4105742105410021024100210302400240034020052002460d0120044190016a200a20026a41086a412010dd052201450d02200241206a2102200341016a21032001417f4a0d000b2003417f6a210e0b2006450d022006417f6a2106200a200e4102746a41880b6a280200210a0c010b0b200741246a2101410121020c010b200441f0006a41186a20044190016a41186a290300370300200441f0006a41106a20044190016a41106a290300370300200441f0006a41086a20044190016a41086a2903003703002004200429039001370370200741246a210141002106200e2103410021020b0240024020020d00200441fc096a200441f0006a41086a290300370200200441840a6a200441f0006a41106a2903003702002004418c0a6a200441f0006a41186a290300370200200420013602f009200420033602ec092004200d3602e8092004200a3602e409200420063602e009200420042903703702f409200441e0016a20042903b001370300200441e8016a200441b0016a41086a290300370300200441f4016a4200370200200442003703d801200442003703c001200441d0e1c1003602f001200441003a00fc01200441fd016a20042900900137000020044185026a20044190016a41086a2900003700002004418d026a20044190016a41106a29000037000020044195026a20044190016a41186a290000370000200441003a009d02200441e0096a200441c0016a10800221020c010b200441d8016a4200370300200441d4016a41d0e1c100360200200441003602e001200441003602d001200442003703c801200441d0e1c1003602c401200441003602c001200a200341e0006c6a41e8026a2102200441c0016a10f4010b200441c0016a41186a200441d0006a41186a290300370300200441c0016a41106a200441d0006a41106a290300370300200441c0016a41086a200441d0006a41086a290300370300200420042903503703c00120042009370294012004200b36029001200441e0096a200241306a200441c0016a20044190016a108102024020042802e009450d0020042802e4092202450d00200441e8096a280200450d002002102c0b2007200728021841016a360218410421020c070b41b5abc50041f4031054000b41b5abc50041f4031054000b41b5abc50041f4031054000b41b5abc50041f4031054000b103a000b41f089c6004110200441c0016a41f882c100103b000b1033000b20002002360200200441c00c6a24000b970302017f027e230041c0006b22042400024002402003450d0020022802000d0020022802042103200441186a4200370300200441106a4200370300200441086a420037030020012802182202420020022903082205427f20012802102903482206420586200642ffffffffffffffff07832006521b7d2206200620055622021b3703082004420037030002400240024020020d00024002402001280214280208200320044120101e41026a220241024b0d0020020e03020001020b41ac91c600412841d491c6001036000b200441206a2001280200280218220241186a200241d0006a2002410c6a4100200228020c1b200410fb012004280220450d01200441306a41086a2203200441206a41086a28020036020020042004290320370330200141046a21020240200141086a280200450d002002280200102c0b20022004290330370200200241086a2003280200360200410021010c020b200041053602000c030b2001410c6a4100360200410121010b20004100360200200020013602040c010b41b5abc50041f4031054000b200441c0006a24000ba20b05017f017e057f047e027f230041c0016b22042400024002400240024002400240024002400240024002402003450d0020022802000d0020034101460d0120022802100d0120034102460d0220022802204101470d0220034103460d0320022802300d0320034104460d0420022802400d0420034105460d0520022802500d0520034106460d0620022802600d06200241286a2903002105200241346a2802002103200241c4006a2802002106200241d4006a2802002107200241e4006a2802002108200441d0006a20012002280204200241146a28020010ec04200441f8006a41086a2202200441d9006a290000370300200441f8006a41106a2209200441e1006a290000370300200441f8006a41186a220a200441e9006a29000037030020042004290051370378024020042d00504101460d00200441306a41186a200a290300370300200441306a41106a2009290300370300200441306a41086a200229030037030020042004290378370330200441186a20012003200610ee042004290318a70d00200441186a41106a290300210b2004290320210c200441086a200128021029034842002008ad420010e0052001280218220242002002290308220d427f200429030820042903104200521b7d220e200e200d5622021b37030820020d00200141046a21060240024020082001410c6a220928020022034b0d00200821020c010b02400240200141086a280200220220036b200820036b220f490d002006280200210a200321020c010b2003200f6a220a2003490d0b20024101742210200a2010200a4b1b22104100480d0b0240024020020d002010102a210a0c010b200628020020022010102e210a0b200a450d0a2001200a360204200141086a20103602002001410c6a28020021020b200a20026a211002400240200f4102490d002010410020082003417f7322036a220f10da051a200a200820026a20036a6a2110200f20026a21020c010b200f450d010b201041003a0000200241016a21020b20092002360200024002402001280214280208200720012802042002101e41026a220241024b0d0020020e03020001020b41ac91c600412841d491c6001036000b2001410c6a2202280200210a20024100360200200141086a2802002103200128020421092001420137020420012802182202290308220e210d024002402005500d002005210d200e2005540d010b2002200e200d7d37030820022903102105200441f8006a41186a200241186a2903003703002004200d370380012004200d370378200420053703880120012802002802182108200441d0006a41186a200441306a41186a290300370300200441d0006a41106a200441306a41106a290300370300200441d0006a41086a200441306a41086a290300370300200420042903303703502004200a3602b801200420033602b401200420093602b00120044198016a2008200441d0006a200c200b200441f8006a200441b0016a10e20241012107024002402004280298014101460d0020044198016a410472210920044198016a41106a2d0000210a200441a4016a2802002108200441a0016a2802002103410021070c010b200441a4016a2109200441ac016a280200210820044198016a41106a28020021034100210a0b20092802002109200220042903800120022903087c370308200141086a2802002102024020070d0002402002450d002006280200102c0b200620093602000c0c0b2002450d002006280200102c0b20062009360200418002210a410021080c0a0b200041053602000c0a0b41b5abc50041f4031054000b41b5abc50041f4031054000b41b5abc50041f4031054000b41b5abc50041f4031054000b41b5abc50041f4031054000b41b5abc50041f4031054000b41b5abc50041f4031054000b1033000b1035000b2001410c6a2008360200200141086a2003360200200041003602002000200a3602040b200441c0016a24000bbd0c05017f017e057f047e037f230041d0016b220424000240024002400240024002400240024002402003450d0020022802000d0020034101460d0120022802100d0120034102460d0220022802204101470d0220034103460d0320022802300d0320034104460d0420022802400d0420034105460d0520022802500d0520034106460d0620022802600d06200241286a2903002105200241346a2802002103200241c4006a2802002106200241d4006a2802002107200241e4006a280200210820044198016a20012002280204200241146a28020010ed04200441e0006a41086a2202200441a1016a290000370300200441e0006a41106a2209200441a9016a290000370300200441e0006a41186a220a200441b1016a29000037030020042004290099013703600240024020042d0098014101460d00200441286a41186a200a290300370300200441286a41106a2009290300370300200441286a41086a200229030037030020042004290360370328200441106a20012003200610ee042004290310a70d00200441106a41106a290300210b2004290318210c2004200128021029034842002008ad420010e0052001280218220242002002290308220d427f200429030020042903084200521b7d220e200e200d5622021b37030820020d00200141046a210a0240024020082001410c6a220628020022034b0d00200821020c010b02400240200141086a280200220220036b200820036b220f490d00200a2802002109200321020c010b2003200f6a22092003490d0c200241017422102009201020094b1b22104100480d0c0240024020020d002010102a21090c010b200a28020020022010102e21090b2009450d0b20012009360204200141086a20103602002001410c6a28020021020b200920026a211002400240200f4102490d002010410020082003417f7322036a220f10da051a2009200820026a20036a6a2110200f20026a21020c010b200f450d010b201041003a0000200241016a21020b20062002360200024002402001280214280208200720012802042002101e41026a220241024b0d0020020e03020001020b41ac91c600412841d491c6001036000b2001410c6a2202280200210920024100360200200141086a2802002103200128020421062001420137020420012802182202290308220e210d0240024002402005500d002005210d200e2005540d010b2002200e200d7d37030820022903102105200441e0006a41186a200241186a2903003703002004200d3703682004200d370360200420053703702001280200280218210820042009360288012004200336028401200420063602800120044198016a2008200c200b200441e0006a200441286a20044180016a10dd0241012109024002402004280298014101460d0020044180016a41086a20044198016a41186a29030037030020044180016a41106a200441b8016a280200360200200420044198016a41106a29030037038001200441c8016a2d00002108200441c0016a2802002107200441bc016a280200210f200441a4016a280200211020044198016a41086a280200210341002109200428029c0121060c010b200441ac016a2802002110200441a8016a2802002103200441a4016a2802002106410021080b2002200429036820022903087c370308200441c8006a41086a220220044180016a41086a290300370300200441c8006a41106a221120044180016a41106a2802003602002004200429038001370348024020090d00200441ac016a2002290300370200200441b4016a2011280200360200200420103602a0012004200336029c012004200636029801200420042903483702a4010240200141086a280200450d00200a280200102c0b2001200f3602042001410c6a4100360200200141086a2007360200200841ff017122020d0220044198016a200a1091010c020b200141086a280200450d00200a280200102c0b200120063602042001410c6a4100360200200141086a200336020041800221020b20004100360200200020023602040c010b200041053602000b200441d0016a24000f0b41b5abc50041f4031054000b41b5abc50041f4031054000b41b5abc50041f4031054000b41b5abc50041f4031054000b41b5abc50041f4031054000b41b5abc50041f4031054000b41b5abc50041f4031054000b1033000b1035000ba00503027f037e057f230041206b2204240002400240024002402003450d0020022802000d0020034101460d0120022802100d0120022802042105200441106a20012802102903184200200241146a2802002203ad2206420010e00520012802182202420020022903082207427f200429031020042903184200521b7d2208200820075622021b370308024020020d002004200128021029034842002006420010e00520012802182202420020022903082207427f200429030020042903084200521b7d2208200820075622021b37030820020d000240024020032001410c6a2209280200220a4b0d00200321020c010b02400240200141086a2802002202200a6b2003200a6b220b490d002001280204210c200a21020c010b200a200b6a220c200a490d062002410174220d200c200d200c4b1b220d4100480d060240024020020d00200d102a210c0c010b20012802042002200d102e210c0b200c450d052001200c360204200141086a200d3602002001410c6a28020021020b200c20026a210d02400240200b4102490d00200d41002003200a417f73220a6a220b10da051a200c200320026a200a6a6a210d200b20026a21020c010b200b450d010b200d41003a0000200241016a21020b20092002360200024002402001280214280208200520012802042002101e41026a220241024b0d0020020e03020001020b41ac91c600412841d491c6001036000b2001410c6a2202280200210320024100360200200141086a280200210220012802042105200142013702040240200128021c220a450d00200141206a280200450d00200a102c0b2001200536021c200141246a2003360200200141206a20023602000b20004105360200200441206a24000f0b41b5abc50041f4031054000b41b5abc50041f4031054000b1033000b1035000b23002001410c6a4100360200200128020041206a200141046a109101200041043602000b27002001410c6a4100360200200128020028021841d0006a200141046a109101200041043602000bd10102027f027e410021042001410c6a41003602002001280218220541186a2903002106200529031021070240024002400240200141086a28020022054110490d00200128020421050c010b200541017422044110200441104b1b22044100480d020240024020050d002004102a21050c010b200128020420052004102e21050b2005450d0120012005360204200141086a20043602002001410c6a28020021040b2001410c6a200441106a360200200520046a2201200637000820012007370000200041043602000f0b1033000b1035000bbe0103017f017e017f410021042001410c6a4100360200200128021829030821050240024002400240200141086a28020022064108490d00200128020421060c010b200641017422044108200441084b1b22044100480d020240024020060d002004102a21060c010b200128020420062004102e21060b2006450d0120012006360204200141086a20043602002001410c6a28020021040b2001410c6a200441086a360200200620046a2005370000200041043602000f0b1033000b1035000bb404020b7f027e230041206b220424002001410c6a41003602000240024002402001280200280218220528021841016a220641004c0d00200541d0006a2107200520063602182005411c6a2108200541206a28020021090240024003402008280200220a41086a210b200a2f0106220c41057421084100210d0240024003402008450d012007200b412010dd05220e450d02200841606a2108200d41016a210d200b41206a210b200e417f4a0d000b200d417f6a210c0b2009450d022009417f6a2109200a200c4102746a41880b6a21080c010b0b200a200d41e0006c6a220841c5036a310000200841e8026a290300220f200f50220b1ba7450d004200200841f8026a290300200b1b210f4200200841f0026a290300200b1b21100c010b200441086a200541286a28020020072005412c6a28020028021c110400200441106a290300210f20052802182106200429030821100b20052006417f6a36021802400240200141086a280200220b2001410c6a28020022086b4110490d002001280204210b0c010b200841106a220d2008490d03200b4101742208200d2008200d4b1b22084100480d0302400240200b0d002008102a210b0c010b2001280204200b2008102e210b0b200b450d022001200b360204200141086a20083602002001410c6a28020021080b2001410c6a200841106a360200200b20086a2208200f3700082008201037000020004104360200200441206a24000f0b41c689c6004118200441186a418883c100103b000b1033000b1035000bd10102027f027e410021042001410c6a41003602002001280200220541086a2903002106200529030021070240024002400240200141086a28020022054110490d00200128020421050c010b200541017422044110200441104b1b22044100480d020240024020050d002004102a21050c010b200128020420052004102e21050b2005450d0120012005360204200141086a20043602002001410c6a28020021040b2001410c6a200441106a360200200520046a2201200637000820012007370000200041043602000f0b1033000b1035000b900302047f027e230041c0006b220424000240024002402003450d0020022802000d0020034101460d0120022802100d01410521050240200241146a28020022032001280210220628026c4b0d0020022802042107200441086a200629034842002003ad420010e00520012802182202420020022903082208427f200429030820042903104200521b7d2209200920085622021b37030820020d002003417f4c0d0302400240024020030d004101210202402001280214280208200741014100101e41026a220641024b0d0020060e03040002040b41ac91c600412841d491c6001036000b0240200310302202450d0002402001280214280208200720022003101e41026a220641024b0d0020060e03030002030b41ac91c600412841d491c6001036000b1033000b2001410c6a4100360200200441186a2002200310b002410421052004200141046a36023c200441186a2004413c6a1094022003450d010b2002102c0b20002005360200200441c0006a24000f0b41b5abc50041f4031054000b41b5abc50041f4031054000b103a000bbe0103017f017e017f410021042001410c6a4100360200200128020029031021050240024002400240200141086a28020022064108490d00200128020421060c010b200641017422044108200441084b1b22044100480d020240024020060d002004102a21060c010b200128020420062004102e21060b2006450d0120012006360204200141086a20043602002001410c6a28020021040b2001410c6a200441086a360200200620046a2005370000200041043602000f0b1033000b1035000bd80102027f027e410021042001410c6a4100360200200128020028021828024022054180016a2903002106200529037821070240024002400240200141086a28020022054110490d00200128020421050c010b200541017422044110200441104b1b22044100480d020240024020050d002004102a21050c010b200128020420052004102e21050b2005450d0120012005360204200141086a20043602002001410c6a28020021040b2001410c6a200441106a360200200520046a2201200637000820012007370000200041043602000f0b1033000b1035000bba0803027f047e027f23004180056b2204240002400240024002400240024002402003450d0020022802000d0020034101460d0120022802100d0120022802042105200441286a20012802102903484200200241146a2802002202ad420010e00520012802182203420020032903082206427f200429032820042903304200521b7d2207200720065622031b3703080240024020030d002002417f4c0d0402400240024020020d004101210302402001280214280208200541014100101e41026a220541024b0d0020050e03040002040b41ac91c600412841d491c6001036000b200210302203450d0802402001280214280208200520032002101e41026a220541024b0d0020050e03020001020b41ac91c600412841d491c6001036000b2004200236023c20042003360238200441e8036a200441386a108f02024020042802e80322054118460d00200441d8026a200441e8036a410472418c0110db051a02402002450d002003102c0b200441c8016a200441d8026a418c0110db051a20042005360238200441386a410472200441c8016a418c0110db051a200441003602f003200442013703e803200441386a200441e8036a108b0120042802f0032103024020042802ec03450d0020042802e803102c0b200128021822022903102206200241186a2903002207844200510d07200441186a2003ad42004280c8afa025420010e005200441086a200429031822084280a094a58d1d7c2209200441186a41086a2903002009200854ad7c2006200710e10520024200200229030822062004290308427f200441086a41086a290300501b7d220720072006561b37030820072006580d03200441386a1092020c020b2002450d010b2003102c0b410521020c070b20012802002102200441d8026a200441386a41900110db051a200441c8016a41086a2002280218220241d8006a290000370300200441d8016a2203200241e0006a290000370300200441e0016a2205200241e8006a290000370300200420022900503703c801200441ef036a200441d8026a41900110db051a02402002413c6a2802002201200241386a280200470d00200141016a220a2001490d062001410174220b200a200b200a4b1b220aad42b8017e2206422088a70d062006a7220b4100480d060240024020010d00200b102a21010c010b2002280234200141b8016c200b102e21010b2001450d0520022001360234200241386a200a360200200228023c21010b2002280234200141b8016c6a220141013a0000200120042903c801370001200141096a200441d0016a290300370000200141116a2003290300370000200141196a2005290300370000200141216a200441e8036a41970110db051a2002200228023c41016a36023c410421020c060b41b5abc50041f4031054000b41b5abc50041f4031054000b103a000b41b0c5c100411941d890c2001036000b1033000b1035000b2000200236020020044180056a24000bce0f030c7f047e027f23004180026b220424000240024002400240024002400240024002400240024002402003450d0020022802000d0020034101460d0120022802100d0120034102460d0220022802200d0220034103460d0320022802300d0320034104460d0420022802400d0420034105460d0520022802500d0520034106460d0620022802600d0620034107460d0720022802700d07200241246a2802002105200241346a2802002106200241c4006a2802002107200241d4006a2802002108200241e4006a2802002109200241f4006a280200210a200441e0006a20012002280204200241146a28020010ec04200441e0016a41086a2203200441e9006a220b290000370300200441e0016a41106a220c200441f1006a220d290000370300200441e0016a41186a220e200441f9006a220f290000370300200420042900613703e0014105210220042d00604101460d0b200441206a41186a200e290300370300200441206a41106a200c290300370300200441206a41086a2003290300370300200420042903e001370320200441e0006a20012005200610ed042003200b290000370300200c200d290000370300200e200f290000370300200420042900613703e00120042d00604101460d0b200441c0006a41186a200441e0016a41186a290300370300200441c0006a41106a200441e0016a41106a290300370300200441c0006a41086a200441e0016a41086a290300370300200420042903e001370340200441086a20012007200810ee0420042802080d0b200441086a41106a29030021102004290310211102400240200a0d00410121054100210c4100210e0c010b200441e0016a41186a2103200441e0016a41106a2106200441e0016a41086a210b4100210f410021024100210c4100210e4101210503402003420037030020064200370300200b42003703002001280218220d4200200d2903082212427f20012802102903482213420586201342ffffffffffffffff07832013521b7d22132013201256220d1b370308200442003703e001200d0d0c024002402001280214280208200920026a220d200441e0016a4120101e41026a220741024b0d0020070e030e00010e0b41ac91c600412841d491c6001036000b200441e0006a41186a22082003290300370300200441e0006a41106a22142006290300370300200441e0006a41086a2215200b290300370300200420042903e0013703600240200c200e470d00200f200c41016a220e200f200e4b1b220e41ffffff3f71200e470d0c200e41057422074100480d0c02400240200c0d002007102a21050c010b200520022007102e21050b2005450d0b0b200520026a22072004290360370000200741186a2008290300370000200741106a2014290300370000200741086a2015290300370000200d41206a200d490d0c200f41026a210f200241206a2102200a200c41016a220c470d000b0b20012802002802182103200441c0016a41086a2201200441206a41086a290300370300200441c0016a41106a2206200441206a41106a290300370300200441c0016a41186a220b200441206a41186a290300370300200441e0016a41086a220d200341d8006a290000370300200441e0016a41106a220f200341e0006a290000370300200441e0016a41186a2207200341e8006a290000370300200420042903203703c001200420032900503703e001200441a0016a41186a2208200441c0006a41186a290300370300200441a0016a41106a220a200441c0006a41106a290300370300200441a0016a41086a2209200441c0006a41086a290300370300200420042903403703a00102402003413c6a2802002202200341386a280200470d00200241016a22142002490d0a200241017422152014201520144b1b2214ad42b8017e2213422088a70d0a2013a722154100480d0a0240024020020d002015102a21020c010b2003280234200241b8016c2015102e21020b2002450d0920032002360234200341386a2014360200200328023c21020b2003280234200241b8016c6a220241023a0000200220042903e001370001200220042903c001370021200241096a200d290300370000200241116a200f290300370000200241196a2007290300370000200241296a2001290300370000200241316a2006290300370000200241396a200b290300370000200220053600642002200e3600682002200c36006c20022011370370200241f8006a2010370300200220042903a001370041200241c9006a2009290300370000200241d1006a200a290300370000200241d9006a2008290300370000200220042f009d013b0061200241e3006a2004419d016a41026a2d00003a0000200220042903603703800120024188016a200441e0006a41086a29030037030020024190016a200441e0006a41106a29030037030020024198016a200441e0006a41186a290300370300200241a0016a20044180016a290300370300200241a8016a20044188016a290300370300200241b0016a20044190016a2903003703002003200328023c41016a36023c410421020c0b0b41b5abc50041f4031054000b41b5abc50041f4031054000b41b5abc50041f4031054000b41b5abc50041f4031054000b41b5abc50041f4031054000b41b5abc50041f4031054000b41b5abc50041f4031054000b41b5abc50041f4031054000b1033000b1035000b41052102200e450d002005102c0b2000200236020020044180026a24000b16002000410036020020002001410c6a2802003602040bb20202057f027e230041106b220424000240024002402003450d0020022802000d0020034101460d0120022802100d0120034102460d0220022802200d024105210302402001410c6a2802002205200241146a2802002206490d00200520066b200241246a2802002205470d0020022802042107200128020421082004200128021029035042002005ad420010e00520012802182202420020022903082209427f200429030020042903084200521b7d220a200a20095622021b37030820020d000240024020012802142802082007200820066a2005101f41026a220241024b0d0020020e03020001020b41ac91c600412841a892c6001036000b410421030b20002003360200200441106a24000f0b41b5abc50041f4031054000b41b5abc50041f4031054000b41b5abc50041f4031054000bfc0303027f027e067f230041106b2204240002400240024002402003450d0020022802000d0020034101460d0120022802100d0120022802042105200420012802102903484200200241146a2802002203ad420010e00520012802182202420020022903082206427f200429030020042903084200521b7d2207200720065622021b37030841052108024020020d000240024020032001410c6a2209280200220a4b0d00200321020c010b02400240200141086a2802002202200a6b2003200a6b220b490d002001280204210c200a21020c010b200a200b6a220c200a490d062002410174220d200c200d200c4b1b220d4100480d060240024020020d00200d102a210c0c010b20012802042002200d102e210c0b200c450d052001200c360204200141086a200d3602002001410c6a28020021020b200c20026a210d02400240200b4102490d00200d41002003200a417f73220a6a220b10da051a200c200320026a200a6a6a210d200b20026a21020c010b200b450d010b200d41003a0000200241016a21020b20092002360200024002402001280214280208200520012802042002101e41026a220141024b0d0020010e03020001020b41ac91c600412841d491c6001036000b410421080b20002008360200200441106a24000f0b41b5abc50041f4031054000b41b5abc50041f4031054000b1033000b1035000bc60b05047f027e037f027e027f230041f0016b220424000240024002400240024002400240024002402003450d0020022802000d0020034101460d0120022802100d0120034102460d0220022802200d0220034103460d0320022802300d03200241246a2802002105200241346a280200210602400240024002400240200241146a2802002203450d0020022802042107200441386a200128021029034842002003ad420010e00520012802182202420020022903082208427f200429033820042903404200521b7d22092009200856220a1b37030841052102200a0d0d2003417f4c0d0920031030220a450d0a024020012802142802082007200a2003101e41026a220741024b0d0020070e03040002040b41ac91c600412841d491c6001036000b4101210b410021074100210c0c010b2004200336029c012004200a36029801200441c8006a20044198016a108201200441d0006a2802002107200429024c2108200428024c210c2004280248210b200a102c200b450d0b200128021028025c2008422088a7490d0a0b200b2007410041202007676b108903024020074102490d00200b21022007210303402002200241206a220a412010dd05450d0b200a21022003417f6a220341024f0d000b0b200441286a200128021029034842002006ad220d420010e00520012802182202420020022903082208427f200429032820042903304200521b7d2209200920085622021b37030820020d092006417f4c0d060240024020060d004101210a02402001280214280208200541014100101e41026a220241024b0d0020020e030c00020c0b41ac91c600412841d491c6001036000b20061030220a450d080240024020012802142802082005200a2006101e41026a220241024b0d0020020e03010002010b41ac91c600412841d491c6001036000b200a102c0c0a0b200441086a2001280210220329032842002007ad420010e005200441186a20032903204200200d420010e00520012802182102427f2109024020042903204200520d0020042903104200520d002004290318220820042903087c220e2008540d00427f200e20032903307c22082008200e541b21090b200242002002290308220820097d220920092008561b37030820092008580d012006450d09200a102c0c090b200a102c0c090b200441c8016a41086a22062001280200280218220341d8006a290000370300200441c8016a41106a2201200341e0006a290000370300200441c8016a41186a2205200341e8006a290000370300200420032900503703c80102402003413c6a2802002202200341386a280200470d00200241016a220f2002490d0720024101742210200f2010200f4b1b220fad42b8017e2208422088a70d072008a722104100480d070240024020020d002010102a21020c010b2003280234200241b8016c2010102e21020b2002450d0620032002360234200341386a200f360200200328023c21020b2003280234200241b8016c6a220241003a0000200220042f00ed013b0001200241053a00102002200736000c2002200c3600082002200b360004200220042903c801370011200241036a200441ed016a41026a2d00003a0000200241196a2006290300370000200241216a2001290300370000200241296a20052903003700002002200a3600342002200d422086200d84370038200220042f00c5013b0031200241336a200441c5016a41026a2d00003a00002002200429039801370340200241c8006a20044198016a41086a290300370300200241d0006a20044198016a41106a290300370300200241d8006a20044198016a41186a290300370300200241e0006a200441b8016a290300370300200241e8006a200441c8006a41d00010db051a2003200328023c41016a36023c410421020c080b41b5abc50041f4031054000b41b5abc50041f4031054000b41b5abc50041f4031054000b41b5abc50041f4031054000b103a000b1033000b1035000b41052102200c450d00200b102c0b20002002360200200441f0016a24000bbe0803027f027e057f230041f00b6b2204240002400240024002402003450d0020022802000d0020034101460d0120022802100d01200441086a20012002280204200241146a28020010ee044105210202402004290308a70d00200128020028021822052802180d03200441186a2903002106200429031021072005417f360218200441d8006a200541e8006a290000370300200441d0006a200541e0006a290000370300200441c8006a200541d8006a29000037030020042005290050370340024002402005411c6a2208280200220941d0e1c100460d00200541206a280200210a0c010b4100210a20044190096a410041e00210da051a200441f0006a410041a00810da051a41880b102a2209450d05200941003b010620094100360200200941086a20044190096a41e00210db051a200941e8026a200441f0006a41a00810db051a200541206a41003602002005200936021c0b02400240034020092f0106220b410574210c4100210241002103024002400340200c2002460d01200441c0006a200920026a41086a412010dd052201450d02200241206a2102200341016a21032001417f4a0d000b2003417f6a210b0b200a450d02200a417f6a210a2009200b4102746a41880b6a28020021090c010b0b200541246a2101410121020c010b200441206a41186a200441c0006a41186a290300370300200441206a41106a200441c0006a41106a290300370300200441206a41086a200441c0006a41086a29030037030020042004290340370320200541246a21014100210a200b2103410021020b0240024020020d00200441ac096a200441206a41086a290300370200200441b4096a200441206a41106a290300370200200441bc096a200441206a41186a290300370200200420013602a0092004200336029c09200420083602980920042009360294092004200a36029009200420042903203702a40920044190016a200429036037030020044198016a200441e0006a41086a290300370300200441a4016a4200370200200442003703880120044200370370200441d0e1c1003602a001200441003a00ac01200441ad016a2004290040370000200441b5016a200441c0006a41086a290000370000200441bd016a200441c0006a41106a290000370000200441c5016a200441c0006a41186a290000370000200441003a00cd0120044190096a200441f0006a10800221020c010b20044188016a420037030020044184016a41d0e1c1003602002004410036029001200441003602800120044200370378200441d0e1c100360274200441003602702009200341e0006c6a41e8026a2102200441f0006a10f4010b200241286a2006370300200241206a2007370300200242013703182005200528021841016a360218410421020b20002002360200200441f00b6a24000f0b41b5abc50041f4031054000b41b5abc50041f4031054000b41f089c6004110200441f0006a41f882c100103b000b1033000b9f0203037f027e027f230041206b220424002001410c6a22054100360200200441086a2001280200280218220641186a200641d0006a10fe01200441086a41106a290300210720042802082106200429031021080240024002400240200141086a2802002209200528020022056b4110490d00200128020421090c010b200541106a220a2005490d0220094101742205200a2005200a4b1b22054100480d020240024020090d002005102a21090c010b200128020420092005102e21090b2009450d0120012009360204200141086a20053602002001410c6a28020021050b2001410c6a200541106a360200200920056a22012007427f20061b37000820012008427f20061b37000020004104360200200441206a24000f0b1033000b1035000bf00203027f027e017f230041206b220424000240024002402003450d0020022802000d0020034101460d0120022802100d0120022802042105200420012802102903484200200241146a2802002202ad420010e00520012802182203420020032903082206427f200429030020042903084200521b7d2207200720065622081b37030841052103024020080d002002417f4c0d0302400240024020020d004101210802402001280214280208200541014100101e41026a220141024b0d0020010e03040002040b41ac91c600412841d491c6001036000b0240200210302208450d0002402001280214280208200520082002101e41026a220141024b0d0020010e03030002030b41ac91c600412841d491c6001036000b1033000b200441106a200820021058024020042802100d00200429021410040b410421032002450d010b2008102c0b20002003360200200441206a24000f0b41b5abc50041f4031054000b41b5abc50041f4031054000b103a000bba0101037f410021042001410c6a4100360200200128020028021c21050240024002400240200141086a28020022064104490d00200128020421060c010b200641017422044104200441044b1b22044100480d020240024020060d002004102a21060c010b200128020420062004102e21060b2006450d0120012006360204200141086a20043602002001410c6a28020021040b2001410c6a200441046a360200200620046a2005360000200041043602000f0b1033000b1035000bea0503027f027e067f230041306b2204240002400240024002402003450d0020022802000d0020034101460d0120022802100d0120022802042105200420012802102903484200200241146a2802002203ad420010e00520012802182202420020022903082206427f200429030020042903084200521b7d2207200720065622021b3703080240024020020d00200141046a21080240024020032001410c6a2209280200220a4b0d00200321020c010b02400240200141086a2802002202200a6b2003200a6b220b490d002008280200210c200a21020c010b200a200b6a220c200a490d072002410174220d200c200d200c4b1b220d4100480d070240024020020d00200d102a210c0c010b20082802002002200d102e210c0b200c450d062001200c360204200141086a200d3602002001410c6a28020021020b200c20026a210d02400240200b4102490d00200d41002003200a417f73220a6a220b10da051a200c200320026a200a6a6a210d200b20026a21020c010b200b450d010b200d41003a0000200241016a21020b20092002360200024002402001280214280208200520012802042002101e41026a220241024b0d0020020e03020001020b41ac91c600412841d491c6001036000b2001410c6a2202350200210620024100360200200141086a220328020021052001280204210220014201370204200441106a20064220862002ad841003108d010240024020042802100d0002402003280200450d002008280200102c0b200120023602042001410c6a4100360200200141086a2005360200410121010c010b200441206a41086a200441106a41086a2802003602002004200429031037032002402003280200450d002008280200102c0b20082004290320370200200841086a200441206a41086a280200360200410021012005450d002002102c0b20004100360200200020013602040c010b200041053602000b200441306a24000f0b41b5abc50041f4031054000b41b5abc50041f4031054000b1033000b1035000b9605020a7f017e230041c0006b220424002004200136020c20042000410120011b3602082004200441086a1075024020042802000d00024002400240200428020c22014170712200417f4c0d002004280204210502400240200141047622060d00410821070c010b2000102a2207450d020b02402005450d00200441206a4104722108410021094100210a410021000340200441206a200441086a10ae03200441306a41086a220b200841086a2802003602002004200829020037033002402004280220220c4104470d002006450d062007102c0c060b200041016a2101200441106a41086a220d200b28020036020020042004290330370310024020002006470d0020092001200920014b1b220641ffffffff00712006470d052006410474220b4100480d050240024020000d00200b102a21070c010b2007200a200b102e21070b2007450d040b2007200a6a2200200c360200200041046a20042903103702002000410c6a200d280200360200200941026a2109200a41106a210a2001210020052001470d000b0b2007450d03200441206a2002200720052003110600200428022021004101102a2201450d012004428180808010370234200420013602300240024020004105460d00200141003a0000200141014102102e2101024020004104470d002001450d04200141003a00012004428280808020370234200420013602304202210e0c020b2001450d03200141013a0001200442828080802037023420042001360230200441206a200441306a10ac042004350238210e200428023021010c010b200141013a00004201210e0b2001ad422086200e84210e02402006450d002007102c0b200441c0006a2400200e0f0b103a000b1033000b1035000b41c8ebc30041f000200441206a4194ebc300103b000bde0202047f017e02400240024002400240024020012802042202450d00200128020022032d0000210420012002417f6a22053602042001200341016a3602002004417f6a220441034b0d0520040e0401020304010b200041043602000f0b0240200541034b0d00200041043602000f0b200041003602002003280001210420012002417b6a3602042001200341056a360200200020043602040f0b024020054108490d0020004101360200200329000121062001200241776a3602042001200341096a360200200041086a20063703000f0b200041043602000f0b0240200541034b0d00200041043602000f0b200041023602002003280001210420012002417b6a3602042001200341056a360200200020043602040f0b024020054108490d0020004103360200200329000121062001200241776a3602042001200341096a360200200041086a20063703000f0b200041043602000f0b200041043602000bca1002077f027e230041106b220224002002410036020820024201370300410420021067024002400240024020022802042203200228020822046b4104490d00200441046a2105200228020021030c010b200441046a22052004490d02200341017422062005200620054b1b22064100480d020240024020030d002006102a21030c010b200228020020032006102e21030b2003450d0120022006360204200220033602000b20022005360208200320046a41eede91ab06360000410e200210670240024020022802042205200228020822066b410e490d002006410e6a2104200228020021030c010b2006410e6a22042006490d02200541017422032004200320044b1b22074100480d020240024020050d002007102a21030c010b200228020020052007102e21030b2003450d012002200736020420022003360200200721050b20022004360208200320066a220641002900f3ec41370000200641066a41002900f9ec413700000240200520046b41034b0d00200441046a22062004490d02200541017422072006200720064b1b22064100480d020240024020050d002006102a21030c010b200320052006102e21030b2003450d0120022006360204200220033602000b2002200441046a360208200320046a410a3600000240024020022802042203200228020822046b4104490d00200228020021030c010b200441046a22052004490d02200341017422062005200620054b1b22054100480d020240024020030d002005102a21030c010b200228020020032005102e21030b2003450d0120022005360204200220033602000b2002200441046a360208200320046a41c6013600000240024020022802042203200228020822046b4104490d00200228020021030c010b200441046a22052004490d02200341017422062005200620054b1b22054100480d020240024020030d002005102a21030c010b200228020020032005102e21030b2003450d0120022005360204200220033602000b2002200441046a360208200320046a41c601360000410c200210674184edc1002104034020042d0000210602400240200228020420022802082203460d00200228020021050c010b200341016a22052003490d03200341017422072005200720054b1b22074100480d030240024020030d002007102a21050c010b200228020020032007102e21050b2005450d0220022007360204200220053602000b2002200341016a360208200520036a20063a0000200441016a2d0000210602400240200228020420022802082203460d00200228020021050c010b200341016a22052003490d03200341017422072005200720054b1b22074100480d030240024020030d002007102a21050c010b200228020020032007102e21050b2005450d0220022007360204200220053602000b2002200341016a360208200520036a20063a0000200441026a2d0000210602400240200228020420022802082203460d00200228020021050c010b200341016a22052003490d03200341017422072005200720054b1b22074100480d030240024020030d002007102a21050c010b200228020020032007102e21050b2005450d0220022007360204200220053602000b2002200341016a360208200520036a20063a0000200441036a2d0000210602400240200228020420022802082203460d00200228020021050c010b200341016a22052003490d03200341017422072005200720054b1b22074100480d030240024020030d002007102a21050c010b200228020020032007102e21050b2005450d0220022007360204200220053602000b2002200341016a360208200520036a20063a0000200441046a2d0000210602400240200228020420022802082203460d00200228020021050c010b200341016a22052003490d03200341017422072005200720054b1b22074100480d030240024020030d002007102a21050c010b200228020020032007102e21050b2005450d0220022007360204200220053602000b2002200341016a360208200520036a20063a0000200441056a2d0000210602400240200228020420022802082203460d00200228020021050c010b200341016a22052003490d03200341017422072005200720054b1b22074100480d030240024020030d002007102a21050c010b200228020020032007102e21050b2005450d0220022007360204200220053602000b2002200341016a360208200520036a20063a0000200441066a2d0000210602400240200228020420022802082203460d00200228020021050c010b200341016a22052003490d03200341017422072005200720054b1b22074100480d030240024020030d002007102a21050c010b200228020020032007102e21050b2005450d0220022007360204200220053602000b2002200341016a360208200520036a20063a0000200441076a2d0000210602400240200228020420022802082203460d00200228020021050c010b200341016a22052003490d03200341017422072005200720054b1b22074100480d030240024020030d002007102a21050c010b200228020020032007102e21050b2005450d0220022007360204200220053602000b2002200341016a360208200520036a20063a0000200441086a28020021060240024020022802042205200228020822036b4104490d00200228020021050c010b200341046a22072003490d03200541017422082007200820074b1b22074100480d030240024020050d002007102a21050c010b200228020020052007102e21050b2005450d0220022007360204200220053602000b2002200341046a360208200520036a20063600002004410c6a22044194eec100470d000b200235020821092002350200210a200241106a2400200a2009422086840f0b1033000b1035000b9a1c05037f017e047f037e037f230041a00a6b22022400024002402001450d00200220003602100c010b200241013602100b20022001360214200241f8076a200241106a10b1030240024020022802fc07450d00200241186a200241f8076a41fc0010db051a20024198016a200241186a41fc0010db051a20024198016a10b20302402002280298012201450d00200241f8076a2001417f6a109302200241f8076a200241a8016a412010dd050d000240024020024190026a28020022030d004100210341042104410021010c010b024002402003ad420c7e2205422088a70d002005a722014100480d0020022802880221002001102a22040d011033000b1035000b200341a8026c210620034103742107200421010340200220003602c004200241f8076a200241c0046a108701200141086a200241f8076a41086a280200360200200120022903f8073702002001410c6a2101200041a8026a2100200641d87d6a22060d000b200741786a41037641016a21010b200220013602c804200220033602c404200220043602c004200241f8076a200241c0046a10b3030240200241e8016a2201200241f8076a412010dd05450d0041c18cc600ad4280808080e0018410042001ad42808080808004841015200241f8076aad428080808080048410150b02402001200241f8076a412010dd050d002002418c026a28020021082002280288022107200228029002210620024198026a20024198016a41f00010db051a2007200641a8026c6a2100200228029802210920072101024002402006450d00200241c0046a41f0006a210441eb8cc600ad4280808080d00184210a200721010240034020024190076a200141e80010db051a200141e8006a290300210520024188036a200141f0006a41b80110db051a20054203510d01200241c0046a20024190076a41e80010db051a200220053703a805200420024188036a41b80110db051a2002200241c0046a3602e806200241f8076a200241e8066a1087012002280280082106024020022802fc07450d0020022802f807102c0b200241f8076a200241c0046a41a80210db051a200241003602f806200241e8066a200241f8076a2006200241f8066a10b40320022d00e8064101460d03024020022d00f40622064102460d0020023100f606210520023100f506210b20023502f006210c20022802ec062103200a100402402006450d00200b100e0b2005100e2003450d00200c4220862003ad8410040b200141a8026a22012000470d000b200021010c010b200141a8026a21010b20012000460d0420024190096a2106200241f8076a41f0006a2103034020024188036a200141e80010db051a200141e8006a2903002105200241f8076a200141f0006a41b80110db051a20054203510d0520024190076a20024188036a41e80010db051a200241c0046a200241f8076a41b80110db051a200241f8076a20024190076a41e80010db051a200220053703e0082003200241c0046a41b80110db051a20061073200141a8026a22012000470d000c050b0b200241086a20022f00e90620022d00eb064110747210b5032002280208200228020c41acfec5001036000b41929ec500412441acfec5001036000b41f69dc500411c41acfec5001036000b20024194036a4104360200200241d4046a4102360200200242023702c40420024184adc2003602c0042002410436028c03200241fcacc200360288032002410036029c01200241dc9ec60036029801200220024188036a3602d004200220024198016a36029003200241c0046a4194adc2001041000b02402008450d002007102c0b20024181b0c2004110109401200228020421040240200228020022074101470d004181b0c200ad428080808080028410050b200241f8076a41186a22084200370300200241f8076a41106a22004200370300200241f8076a41086a22014200370300200242003703f807200241c0046a41086a22064191b0c200ad4280808080e000841002220341086a290000370300200220032900003703c0042003102c20012006290300370300200220022903c0043703f80720024188036a41086a220d41c8c2c200ad4280808080e001841002220341086a29000037030020022003290000370388032003102c2000200229038803220537030020062001290300370300200241c0046a41106a220e2005370300200241c0046a41186a220f200d2903003703002002200537039007200220022903f8073703c00420022004410020071b3602f807200241c0046aad4280808080800484220b200241f8076aad4280808080c000841001200842003703002000420037030020014200370300200242003703f80720024190076a41086a220341e4d2c500ad42808080808001841002220441086a29000037030020022004290000370390072004102c2001200329030037030020022002290390073703f807200341ecd2c500ad42808080808001841002220441086a29000037030020022004290000370390072004102c2000200229039007220537030020062001290300370300200e2005370300200f20032903003703002002200537038803200220022903f8073703c004200b1005200910ad02200241f8076a10b603200220024198026a410c6a280200220336028807200228029c0221072002200241f8076a410c6a280200220136028c07024020032001470d0002402003450d0020022802fc0721084100210641eadbc200ad4280808080c002842105034002400240024002400240024002400240200720066a22012d00002204200820066a22002d0000470d000240024002400240024020040e050001020304000b20012000460d09200141016a200041016a412010dd050d040c090b024020012000460d00200141016a280000200041016a280000470d040b200141106a2802002204200041106a280200470d03200141086a2802002209200041086a280200220d460d072009200d200410dd050d030c070b024020012000460d00200141016a280000200041016a280000470d030b200141106a2802002204200041106a280200470d02200141086a2802002209200041086a280200220d460d052009200d200410dd050d020c050b024020012000460d00200141016a280000200041016a280000470d020b200141106a2802002204200041106a280200470d01200141086a2802002209200041086a280200220d460d032009200d200410dd050d010c030b2001410c6a28020022042000410c6a280200470d00200141046a2802002209200041046a280200220d460d012009200d200410dd05450d010b20051004200241c0046a200110e70220023502c80442208620022802c0042204ad841015024020022802c404450d002004102c0b200241c0046a200010e70220023502c80442208620022802c0042204ad841015024020022802c404450d002004102c0b20012d000020002d00002204470d0520040e050403020100040b2001410c6a28020022042000410c6a280200470d04200141046a2802002201200041046a2802002200460d0520012000200410dd050d040c050b024020012000460d00200141016a280000200041016a280000470d040b200141106a2802002204200041106a280200470d03200141086a2802002201200041086a2802002200460d0420012000200410dd05450d040c030b024020012000460d00200141016a280000200041016a280000470d030b200141106a2802002204200041106a280200470d02200141086a2802002201200041086a2802002200460d0320012000200410dd050d020c030b024020012000460d00200141016a280000200041016a280000470d020b200141106a2802002204200041106a280200470d01200141086a2802002201200041086a2802002200460d0220012000200410dd050d010c020b20012000460d01200141016a200041016a412010dd05450d010b41c09ec500412741acfec5001036000b200641246a21062003417f6a22030d000b0b024020024198026a41306a2201200241f8076a41306a2200412010dd05450d0041c18cc600ad4280808080e0018410042001ad428080808080048410152000ad428080808080048410150b024020012000412010dd05450d0041e79ec500412841acfec5001036000b02402002280284082200450d0020022802fc072101200041246c210003400240024020012d0000220641034b0d0002400240024020060e0404000102040b2001410c6a280200450d03200141086a280200102c0c030b2001410c6a280200450d02200141086a280200102c0c020b2001410c6a280200450d01200141086a280200102c0c010b200141086a280200450d00200141046a280200102c0b200141246a21012000415c6a22000d000b0b024020024180086a280200450d0020022802fc07102c0b024020022802a4022200450d00200228029c022101200041246c210003400240024020012d0000220641034b0d0002400240024020060e0404000102040b2001410c6a280200450d03200141086a280200102c0c030b2001410c6a280200450d02200141086a280200102c0c020b2001410c6a280200450d01200141086a280200102c0c010b200141086a280200450d00200141046a280200102c0b200141246a21012000415c6a22000d000b0b0240200241a0026a280200450d00200228029c02102c0b200241a00a6a240042010f0b20024188036a41146a410936020020024188036a410c6a410c36020020024190076a41146a41033602002002420337029407200241ec9fc600360290072002410c36028c03200220024188076a3602f80620022002418c076a3602e806200242043703d004200242013702c404200241b89ec5003602c004200220024188036a3602a0072002200241c0046a360298032002200241e8066a360290032002200241f8066a3602880320024190076a4184c5c5001041000bdd05030c7f017e017f230041c0056b2202240020024198036a200110810102400240200228029c0322030d00200041003602040c010b200241a4036a280200210420022802a00321052002280298032106200241106a200241a8036a41e00010db051a200241086a20011075024020022802080d00024002400240200128020441a8026e220741a8026c2208417f4c0d00200228020c21090240024020080d004108210a0c010b2008102a220a450d020b024002402009450d004100210b410021084100210c034020024198036a2001108c022002290380044203510d02200c41016a210d200241f0006a20024198036a41a80210db051a0240200c2007470d00200b200d200b200d4b1b2207ad42a8027e220e422088a70d06200ea7220f4100480d0602400240200c0d00200f102a210a0c010b200a2008200f102e210a0b200a450d050b200a20086a200241f0006a41a80210db051a200b41026a210b200841a8026a2108200d210c2009200d470d000b0b200a450d0420024198036a200241106a41e00010db051a2000410c6a2004360200200020053602082000200336020420002006360200200041106a20024198036a41e00010db051a200041f8006a2009360200200041f4006a2007360200200041f0006a200a3602000c050b0240200c450d00200a4198016a210d0340200d1073200d41a8026a210d200841d87d6a22080d000b0b2007450d03200a102c0c030b103a000b1033000b1035000b2000410036020402402004450d00200441246c210d2003210803400240024020082d0000220c41034b0d00024002400240200c0e0404000102040b2008410c6a280200450d03200841086a280200102c0c030b2008410c6a280200450d02200841086a280200102c0c020b2008410c6a280200450d01200841086a280200102c0c010b200841086a280200450d00200841046a280200102c0b200841246a2108200d415c6a220d0d000b0b2005450d002003102c0b200241c0056a24000b9a740a0e7f027e017f037e1c7f017e027f0a7e017f027e230041d0066b2201240002400240024002400240024002402000410c6a28020041246c22020d004104210341002104410021050c010b200028020421064104210341002104410021050340024020062d00004101470d00200641106a2802002207417f4c0d03200641086a2802002108200641016a28000021090240024020070d004101210a4100210b0c010b2007210b2007102a220a450d060b200a2008200710db05210a20014180066a41026a220c200141d8056a41026a2d00003a0000200141b0046a41086a220d200141a8066a41086a290200370300200120012f00d8053b018006200120012902a8063703b004024020042005470d00200441016a22082004490d082004410174220e2008200e20084b1b2205ad42247e220f422088a70d08200fa722084100480d080240024020040d002008102a21030c010b2003200441246c2008102e21030b2003450d060b2003200441246c6a220841013a000020082009360001200820073600102008200b36000c2008200a360008200820012f0180063b0005200841076a200c2d00003a0000200820012903b0043702142008411c6a200d290300370200200441016a21040b200641246a21062002415c6a22020d000b0b200141003602b0044181b0c200ad4280808080800284200141b0046aad4280808080c0008422101001200141d8036a41186a22074200370300200141d8036a41106a22114200370300200141d8036a41086a22084200370300200142003703d803200141b0046a41086a22064191b0c200ad4280808080e00084220f1002220241086a290000370300200120022900003703b0042002102c20082006290300370300200120012903b00422123703f803200120123703d803200641acb0c200ad4280808080e000841002220241086a290000370300200120022900003703b0042002102c201120012903b0042212370300200141b8036a41086a22092008290300370300200141b8036a41106a220a2012370300200141b8036a41186a220b20062903003703002001201237038804200120012903d8033703b80320012000280200220d3602b004200141b8036aad4280808080800484221220101001200742003703002011420037030020084200370300200142003703d8032006200f1002220241086a290000370300200120022900003703b0042002102c20082006290300370300200120012903b00422133703f803200120133703d803200641cab0c200ad4280808080e000841002220241086a290000370300200120022900003703b0042002102c20072006290300221337030020092008290300370300200a20012903b0042214370300200b20133703002001201437038804200120012903d8033703b803200141203602b4042001200141b8036a3602b00420032004200141b0046a10da03200742003703002011420037030020084200370300200142003703d8032006200f1002220241086a290000370300200120022900003703b0042002102c20082006290300370300200120012903b00422133703f803200120133703d803200641b2b0c200ad4280808080a001841002220241086a290000370300200120022900003703b0042002102c20072006290300221337030020092008290300370300200a20012903b0042214370300200b20133703002001201437038804200120012903d8033703b803200141203602b4042001200141b8036a3602b004200041106a2215200141b0046a10be032006200f1002220241086a290000370300200120022900003703b0042002102c200141f8036a41086a22162006290300370300200120012903b0043703f803200641a3b0c200ad42808080809001841002220241086a290000370300200120022900003703b0042002102c20014188046a41086a220c2006290300370300200120012903b004370388042001200d417f6a3602b00420014180066a41186a220d20101006220241186a29000037030020014180066a41106a220e200241106a29000037030020014180066a41086a2217200241086a29000037030020012002290000370380062002102c2007200d2903003703002011200e2903003703002008201729030037030020012001290380063703d80341c000102a2202450d02200220012903f8033700002002200129038804370010200220012903d803370020200241086a2016290300370000200241186a200c290300370000200241286a2008290300370000200241306a2011290300370000200241386a2007290300370000200120023602b004200141c0003602b4042015200141b0046a10be032002102c200742003703002011420037030020084200370300200142003703d8032006200f1002220241086a290000370300200120022900003703b0042002102c20082006290300370300200120012903b00422103703f803200120103703d803200641bcb0c200ad4280808080e001841002220241086a290000370300200120022900003703b0042002102c200c20062903002210370300200120012903b00422133703880420112013370000201141086a2202201037000020092008290300370300200a2011290300370300200b2007290300370300200120012903d8033703b803200141203602b4042001200141b8036a3602b004200041d0006a200141b0046a10be03200742003703002011420037030020084200370300200142003703d8032006200f1002221541086a290000370300200120152900003703b0042015102c20082006290300370300200120012903b00422103703f803200120103703d803200641fdb1c200ad4280808080e000841002221541086a290000370300200120152900003703b0042015102c200c20062903002210370300200120012903b004221337038804201120133700002002201037000020092008290300370300200a2011290300370300200b2007290300370300200120012903d8033703b80320121005200742003703002011420037030020084200370300200142003703d8032006200f1002221541086a290000370300200120152900003703b0042015102c20082006290300370300200120012903b00422103703f803200120103703d803200641e4c4c200ad4280808080a001841002221541086a290000370300200120152900003703b0042015102c200c20062903002210370300200120012903b004221337038804201120133700002002201037000020092008290300370300200a2011290300370300200b2007290300370300200120012903d8033703b803201210052006200f1002220241086a290000370300200120022900003703b0042002102c20162006290300370300200120012903b0043703f80320064183b2c200ad4280808080b001841002220241086a290000370300200120022900003703b0042002102c200c2006290300370300200120012903b00437038804200d42011006220641186a290000370300200e200641106a2900003703002017200641086a29000037030020012006290000370380062006102c2007200d2903003703002011200e2903003703002008201729030037030020012001290380063703d80341c000102a2206450d02200620012903f8033700002006200129038804370010200620012903d803370020200641086a200141f8036a41086a290300370000200641186a20014188046a41086a290300370000200641286a200141d8036a41086a290300370000200641306a200141d8036a41106a290300370000200641386a200141d8036a41186a2903003700002006ad4280808080800884100d2006102c20002802002118200141a8066a41186a22094200370300200141a8066a41106a22064200370300200141a8066a41086a22084200370300200142003703a80620014198046a41086a22074191b0c200ad4280808080e000841002220241086a29000037030020012002290000370398042002102c2008200729030037030020012001290398043703a806200741b2b0c200ad4280808080a001841002220241086a29000037030020012002290000370398042002102c2006200129039804220f37030020014180066a41086a200829030037030020014180066a41106a200f37030020014180066a41186a20072903003703002001200f3703b004200120012903a80637038006200141b0046a20014180066a412010d30120012d00b00421072009200141c9046a2900003703002006200141c1046a2900003703002008200141b9046a290000370300200120012900b1043703a8060240024020074101460d00200141d8056a41186a4200370300200141d8056a41106a4200370300200141d8056a41086a4200370300200142003703d8050c010b200141d8056a41186a2009290300370300200141d8056a41106a2006290300370300200141d8056a41086a2008290300370300200120012903a8063703d8050b200141a8066a41186a22094200370300200141a8066a41106a220a4200370300200141a8066a41086a22024200370300200142003703a80620014198046a41086a220841c586c200ad42808080808003841002220741086a29000037030020012007290000370398042007102c2002200829030037030020012001290398043703a80620084193c6c100ad4280808080e001841002220741086a29000037030020012007290000370398042007102c200141b0046a41086a2008290300220f370300200120012903980422103703b00420062010370000200641086a200f37000020014180066a41086a200229030037030020014180066a41106a200a29030037030020014180066a41186a2009290300370300200120012903a80637038006200141b0056a20014180066a412010d0010240024002400240024020012802b00522070d002009200141d8056a41186a290300370300200a200141d8056a41106a2903003703002002200141d8056a41086a290300370300200120012903d8053703a8064101210741002102200141a8066a2106410021090c010b20012902b405220fa7210a0240200f422088a7220841d100490d00200141b0046a41186a2202200141d8056a41186a290300370300200141b0046a41106a2209200141d8056a41106a290300370300200141b0046a41086a220b200141d8056a41086a290300370300200120012903d8053703b0042018417f6a41d10070220620084f0d04200720064105746a220620012903b004370000200641186a2002290300370000200641106a2009290300370000200641086a200b290300370000200a21020c030b200141b0056a41086a280200210920012802b4052102200141a8066a41186a200141d8056a41186a290300370300200141a8066a41106a200141d8056a41106a290300370300200141a8066a41086a200141d8056a41086a290300370300200120012903d8053703a80602402008200a460d00200141a8066a2106200a2102200821090c020b200141a8066a210620022008470d010b200241016a22082002490d072002410174220a2008200a20084b1b220841ffffff3f712008470d072008410574220a4100480d070240024020020d00200a102a21070c010b20072002410574200a102e21070b2007450d05200821020b200720094105746a22082006290000370000200841186a200641186a290000370000200841106a200641106a290000370000200841086a200641086a290000370000200941016a21080b200141b0046a41186a4200370300200141b0046a41106a220b4200370300200141b0046a41086a22094200370300200142003703b00420014198046a41086a220641c586c200ad42808080808003841002220a41086a2900003703002001200a29000037039804200a102c2009200629030037030020012001290398043703b00420064193c6c100ad4280808080e001841002220a41086a2900003703002001200a29000037039804200a102c200b200129039804220f370300200141a8066a41086a2009290300370300200141a8066a41106a200f370300200141a8066a41186a20062903003703002001200f37038006200120012903b0043703a8060240024020070d00200141a8066aad428080808080048410050c010b200141003602b804200142013703b0042008200141b0046a106702402008450d00200841057421082007210603402001200141b0046a36028006200620014180066a109402200641206a2106200841606a22080d000b0b20012802b4042106200141a8066aad428080808080048420013502b80442208620012802b0042208ad84100102402006450d002008102c0b2002450d002007102c0b024020184180a70c700d0010cf010b02400240201841809c3170450d0020014180066a211920014188046a211a200141f8036a211b200141b0046a211c0c010b200141b0046a41186a4200370300200141b0046a41106a22024200370300200141b0046a41086a22084200370300200142003703b00420014198046a41086a220641bad6c500ad42808080809001841002220741086a29000037030020012007290000370398042007102c200820062903003703002001200129039804220f3703f8032001200f3703b004200641d0d6c500ad4280808080d002841002220741086a29000037030020012007290000370398042007102c2002200129039804220f37030020014180066a41086a200829030037030020014180066a41106a200f37030020014180066a41186a20062903003703002001200f37038804200120012903b004370380060240024020014180066a109501220641ff01714102460d0020014180066aad4280808080800484100520064101710d010b200141b0046a211c200141f8036a211b20014188046a211a20014180066a2119201810c904450d01201810cb041a0c010b200141b0046a211c200141f8036a211b20014188046a211a20014180066a2119201810cb04450d00201810c9041a0b200141b0046a41186a220c4200370300200141b0046a41106a221d4200370300200141b0046a41086a220a4200370300200142003703b00420014198046a41086a220641bad6c500ad4280808080900184220f1002220841086a29000037030020012008290000370398042008102c200141f8036a41086a2207200629030037030020012001290398043703f803201c41086a2202201b41086a2209290000370000201c201b290000370000200641c3d6c500ad4280808080d001841002220841086a29000037030020012008290000370398042008102c20014188046a41086a220b2006290300370300200120012903980437038804201d201a290000221037030020014180066a41086a2216200a29030037030020014180066a41106a2215201037030020014180066a41186a221e201a41086a220d290000370300200120012903b00437038006200141b0036a2019412010940120012802b403210e20012802b0032100200c4200370300201d4200370300200a4200370300200142003703b0042006200f1002220841086a29000037030020012008290000370398042008102c2007200629030037030020012001290398043703f80320022009290000370000201c201b290000370000200641abd6c500ad4280808080f001841002220841086a29000037030020012008290000370398042008102c200b2006290300370300200120012903980437038804200c200d290000220f3703002016200a2903003703002015201a290000370300201e200f370300200120012903b00437038006200141a8036a201941201094014100211f02400240200e410020001b220620012802ac03410020012802a8031b22074f0d00200141b0046a4104722108200141d9046a210b0340200141b0046a200610d704024020012d00d80422094103460d00200141a8066a41086a200841086a290200220f370300200141a8066a41106a200841106a2902002210370300200141a8066a41186a200841186a2902002212370300200141a8066a41206a200841206a2802002202360200200141b8036a41026a220d200b41026a2d00003a00002001200829020022133703a8062001200b2f00003b01b80320012802b004210e200a200f370300201d2010370300200c2012370300200141b0046a41206a22002002360200200120133703b004200141d8036a41026a2217200d2d00003a0000200120012f01b8033b01d803410321020240200e2018470d0020014180066a41206a2000280200360200201e200c2903003703002015201d2903003703002016200a29030037030020014198046a41026a20172d00003a0000200120012903b00437038006200120012f01d8033b01980420062120200921020b20024103470d030b2007200641016a2206470d000b0b41042121410021080c030b200141d8056a41206a20014180066a41206a2802002208360200200141d8056a41186a20014180066a41186a290300220f370300200141d8056a41106a20014180066a41106a2903002210370300200141d8056a41086a20014180066a41086a290300221237030020014188046a41026a220920014198046a41026a2d00003a0000200141b0056a41086a220a2012370300200141b0056a41106a220b2010370300200141b0056a41186a220c200f370300200141b0056a41206a220d20083602002001200129038006220f3703d805200120012f0198043b0188042001200f3703b005200141f8036a41026a220e20092d00003a0000200120012f0188043b01f8034130102a2221450d03410121082021201836020420212020360200202120012903b005370208202120023a002c202120012f01f8033b002d202141106a200a290300370200202141186a200b290300370200202141206a200c290300370200202141286a200d2802003602002021412f6a200e2d00003a00004101211f200641016a220620074f0d02200141b0046a4104722108200141d9046a210a02400340200141b0046a200610d704024020012d00d80422094103460d00200141a8066a41086a200841086a290200220f370300200141a8066a41106a200841106a2902002210370300200141a8066a41186a200841186a2902002212370300200141a8066a41206a200841206a2802002202360200200141b8036a41026a220b200a41026a2d00003a00002001200829020022133703a8062001200a2f00003b01b80320012802b004210c200141b0046a41086a220d200f370300200141b0046a41106a220e2010370300200141b0046a41186a22002012370300200141b0046a41206a22172002360200200120133703b004200141d8036a41026a2216200b2d00003a0000200120012f01b8033b01d803410321020240200c2018470d0020014180066a41206a201728020036020020014180066a41186a200029030037030020014180066a41106a200e29030037030020014180066a41086a200d29030037030020014198046a41026a20162d00003a0000200120012903b00437038006200120012f01d8033b01980420062115200921020b20024103470d020b2007200641016a2206470d000b410121084101211f0c030b200141d8056a41206a222220014180066a41206a22202802002208360200200141d8056a41186a222320014180066a41186a2224290300220f370300200141d8056a41106a222520014180066a41106a22262903002210370300200141d8056a41086a222720014180066a41086a2228290300221237030020014188046a41026a222920014198046a41026a222a2d00003a0000200141b0056a41086a222b2012370300200141b0056a41106a222c2010370300200141b0056a41186a222d200f370300200141b0056a41206a222e20083602002001200129038006220f3703d805200120012f0198043b0188042001200f3703b005200141f8036a41026a222f20292d00003a0000200120012f0188043b01f803200641016a2106200141b0046a4104722109200141d9046a210b410121084101211f0340200141b0046a41086a220e202b290300370300200141b0046a41106a2200202c290300370300200141b0046a41186a2217202d290300370300200141b0046a41206a2216202e280200360200200141a8066a41026a220c202f2d00003a0000200120012903b0053703b004200120012f01f8033b01a8060240201f2008470d00200841016a220a2008490d072008410174220d200a200d200a4b1b221fad42307e220f422088a70d07200fa7220a4100480d070240024020080d00200a102a21210c010b2021200841306c200a102e21210b2021450d050b2021200841306c6a220a2018360204200a20153602002016280200210d2017290300210f20002903002110200e290300211220012903b0042113200a412c6a20023a0000200a41086a2013370200200a41106a2012370200200a41186a2010370200200a41206a200f370200200a41286a200d360200200a412d6a20012f01a8063b0000200a412f6a200c2d00003a0000200841016a2108200620074f0d0302400340200141b0046a200610d704024020012d00d804220a4103460d00200141a8066a41086a200941086a290200220f370300200141a8066a41106a200941106a2902002210370300200141a8066a41186a200941186a2902002212370300200141a8066a41206a200941206a2802002202360200200141b8036a41026a220c200b41026a2d00003a00002001200929020022133703a8062001200b2f00003b01b80320012802b004210d200e200f370300200020103703002017201237030020162002360200200120133703b004200141d8036a41026a221e200c2d00003a0000200120012f01b8033b01d803410321020240200d2018470d002020201628020036020020242017290300370300202620002903003703002028200e290300370300202a201e2d00003a0000200120012903b00437038006200120012f01d8033b01980420062115200a21020b20024103470d020b2007200641016a2206470d000c050b0b20222020280200220a36020020232024290300220f3703002025202629030022103703002027202829030022123703002029202a2d00003a0000202b2012370300202c2010370300202d200f370300202e200a3602002001200129038006220f3703d805200120012f0198043b0188042001200f3703b005202f20292d00003a0000200120012f0188043b01f803200641016a21060c000b0b41a888c600200620081038000b103a000b2021200841306c6a21300240024020080d002021212e0c010b2019ad42808080808004842131200141b0046a4104722106200141b0046a41186a2117200141b0046a41106a21162021212e0340202e220841086a2802002125200828020021022017200841246a29020037030020162008411c6a290200370300200141b0046a41086a220e200841146a29020037030020012008410c6a2902003703b004200841306a212e2008412c6a2d000022244103460d01200141b0056a41186a2017290300220f370300200141b0056a41106a20162903002210370300200141b0056a41086a200e2903002212370300200120012903b00422133703b005200141d8056a41186a2227200f370300200141d8056a41106a22322010370300200141d8056a41086a22332012370300200120133703d805200141a8066a200210cd0420012802a806210b0240024020012802b00622080d004200213442002135420021364200213742002114420021380c010b2008410574210942002114200b21084200213842002136420021374200213442002135034020014198036a200810b10120014198036a41086a2903002110200129039803210f20062008290000370000200641086a200841086a290000370000200641106a200841106a290000370000200641186a200841186a290000370000200120023602b00420014190036a200141b0046a10ce0420012d00900341017121070240024020012d009103220a0d00200141d0026a200f2010420a420010e10520012903d0022212210f200141d0026a41086a290300221321100c010b200141f0026a20104200200aad2212420010e00520014180036a200f42002012420010e005200141e0026a42004200200f420010e005427f20014180036a41086a290300221220012903f00220012903e0027c7c221320012903f80220012903e80284420052201320125472220a1b2113427f200129038003200a1b21120b200841206a21084200201320071b20377c4200201220071b223920367c2236203954ad7c21372013420020071b20357c2012420020071b221220347c2234201254ad7c2135201020387c200f20147c2214200f54ad7c2138200941606a22090d000b0b024020012802ac06450d00200b102c0b200141a8066a200210cd0420012802a80621000240024020012802b00622080d00420021394200213a4200213b4200213c420021134200213d0c010b2008410574210942002113200021084200213d4200213b4200213c420021394200213a034020062008290000370000200641086a200841086a2207290000370000200641106a200841106a220a290000370000200641186a200841186a220b290000370000200120023602b004200141c8026a200141b0046a10ce0420012d00c802210c20012d00c902210d2017200b2900003703002016200a290000370300200e2007290000370300200120082900003703b004200141a8026a2002200141b0046a200d411010cf04200141a8026a41186a290300203d7c20012903b802220f20137c2213200f54ad7c213d4200200141a8026a41086a290300220f200c41017122071b203c7c420020012903a802221020071b2212203b7c223b201254ad7c213c200f420020071b203a7c2010420020071b220f20397c2239200f54ad7c213a200841206a2108200941606a22090d000b0b024020012802ac06450d002000102c0b200141d8036a41186a222b4200370300200141d8036a41106a222c4200370300200141d8036a41086a22294200370300200142003703d80320014198046a41086a222f418be9c500ad42808080808001841002220841086a29000037030020012008290000370398042008102c2029202f29030037030020012001290398043703d803202f41c9b5c000ad4280808080d001841002220841086a29000037030020012008290000370398042008102c200e202f290300220f370300200120012903980422103703b00420112010370000201141086a223e200f370000200141b8036a41086a22152029290300370300200141b8036a41106a221e202c290300370300200141b8036a41186a2220202b290300370300200120012903d8033703b80320014190026a200141b8036a4120109e0120014190026a41106a290300420020012802900222081b210f200129039802420020081b211002400240201320147c2212420288203d20387c2012201354ad7c2213423e868422142013420288223884500d002014201285203820138584500d00410021080240034020014180026a20122013200841046a41fe007110df05200841026a2108200129038002221420014180026a41086a290300223884500d01201420128520382013858450450d000b0b200141f0016a20122013200841fe007110df0520012903f001200141f0016a41086a29030084211442002138024020080d002014420052ad21140c020b2014420052ad21140340200141d0016a2012201341002008417e6a2207200720084b1b220841ff007110df05200141e0016a2014420186223f420184223d20384201862014423f88842238203d203810e005203f203d20012903e00120012903d00156200141e0016a41086a2903002214200141d0016a41086a29030022405620142040511b1b211420080d000c020b0b420021382012201384420052ad21140b024002402010420288200f423e86842212200f420288221384500d0020122010852013200f8584500d004100210802400340200141c0016a2010200f200841046a41fe007110df05200841026a210820012903c0012212200141c0016a41086a290300221384500d0120122010852013200f858450450d000b0b200141b0016a2010200f200841fe007110df0520012903b001200141b0016a41086a29030084211242002113024020080d002012420052ad21120c020b2012420052ad2112034020014190016a2010200f41002008417e6a2207200720084b1b220841ff007110df05200141a0016a2012420186223f420184223d20134201862012423f88842213203d201310e005203f203d20012903a00120012903900156200141a0016a41086a290300221220014190016a41086a29030022405620122040511b1b211220080d000c020b0b420021132010200f84420052ad21120b02400240024002400240201420388450450d00410021000c010b203c20377c203b20367c2210203b54ad7c213b203a20357c203920347c220f203954ad7c213902400240024020240e03010200010b200f2010562039203b562039203b511b21000c020b0340200141c0006a2010203b2014203810e1052012223420132235844200510d04200141c0006a41086a290300211220012903402113200141306a200f20392034203510e10541012100201320012903302236542012200141306a41086a290300223d542012203d5122081b0d0202402036201354203d20125420081b450d00410021000c030b200141206a201320122014203810e005200141106a2036203d2034203510e0050240200f200129031022127d22132039200141106a41086a2903007d200f201254ad7d223d84500d00203b200141206a41086a2903007d213620102001290320220f5421082010200f7d21122014210f2038213920132114203d2138203421102035213b201220362008ad7d221384500d030c010b0b410021000c010b03402038213d2014213420122013844200510d02200141f0006a200f20392034203d10e10520014180016a2010203b2012201310e105410121002001290380012235200129037022365420014180016a41086a2903002214200141f0006a41086a290300223854201420385122081b0d0102402036203554203820145420081b450d00410021000c020b200141e0006a203520142012201310e005200141d0006a203620382034203d10e0050240200f200129035022147d22382039200141d0006a41086a2903007d200f201454ad7d22358450450d00410021000c020b203b200141e0006a41086a2903007d213620102001290360220f5421082010200f7d21142012210f20132139203821122035211320342110203d213b201420362008ad7d2238844200520d000b0b200141b0046a200210cd0420012802b004212220012802b404212320012802b8042208450d022022200841057422246a212d202221080240034020014180066a41186a2207200841186a220b29000037030020014180066a41106a2209200841106a220c29000037030020014180066a41086a220a200841086a220d29000037030020012008290000370380062008290000210f200641186a2226200b2900003700002006200f370000200641086a2228200d290000370000200641106a222a200c290000370000200120023602b004200141086a200141b0046a10ce042015200a290300370300201e20092903003703002020200729030037030020012001290380063703b8030240200020012d000841017145734101470d0020012d0009210b200841206a21080c020b200841206a2108202441606a22240d000c040b0b0340200141a8066a41186a2020290300220f370300200141a8066a41106a201e2903002210370300200141a8066a41086a20152903002212370300200120012903b80322133703a8062017200f37030020162010370300200e2012370300200142e4cab5fbb6ccdcb0e3003703a804200120133703b004200141a8046a200141b0046a200b4118744118754102744180d6c5006a2802004180de346c20186a10bd012008202d460d03024003402007200841186a220b2900003703002009200841106a220c290000370300200a200841086a220d2900003703002001200829000037038006202b200b290000370300202c200c2900003703002029200d290000370300200120082900003703d803200120023602b004200d290000210f200c2900002110200829000021122026200b290000370000202a20103700002028200f370000200620123700002001200141b0046a10ce042015200a290300370300201e20092903003703002020200729030037030020012001290380063703b803200020012d000041017145730d01202d200841206a2208470d000c050b0b20012d0001210b200841206a21080c000b0b41b091c200411941d890c2001036000b41b091c200411941d890c2001036000b02402023450d002022102c0b200210d2040240024020000d00200120023602bc04200141053a00b804200141063a00b00441014100200141b0046a1092010c010b200120023602bc04200141043a00b804200141063a00b00441014100200141b0046a10920102400240024002402025450d00200141a8066a41186a22002027290300370300200141a8066a41106a22242032290300370300200141a8066a41086a22262033290300370300200120012903d8053703a806202b4200370300202c420037030020294200370300200142003703d803202f41bad6c500ad428080808090018422101002220841086a29000037030020012008290000370398042008102c2029202f29030037030020012001290398043703d803202f41b6c5c400ad4280808080d0018422121002220841086a29000037030020012008290000370398042008102c200e202f290300220f370300200120012903980422133703b00420112013370000203e200f37000020152029290300370300201e202c2903003703002020202b290300370300200120012903d8033703b803202520186a210c20014180066a200141b8036a10f0030240200128028006220b0d004104210b410021154200210f0c030b200129028406220fa72115410021080240200f422088a7220d41014b0d00200d0e020302030b200d2107034020082007410176220920086a220a200c200b200a41286c6a280200491b2108200720096b220741014b0d000c020b0b2017202729030037030020162032290300370300200e2033290300370300200120012903d8053703b004200141b0046a200210d4040c030b0240200c200b200841286c6a2802002207460d002008200c20074b6a21080b2017200029030037030020162024290300370300200e2026290300370300200120012903a8063703b0042008200d4d0d0141ecb3c000411e41acfec5001036000b2017200029030037030020162024290300370300200e2026290300370300200120012903a8063703b0044100210d410021080b0240200d2015470d00200d200fa7470d00200d41016a2207200d490d06200d41017422092007200920074b1bad220f42287e2213422088a70d062013a722074100480d0602400240200d0d002007102a210b0c010b200b200d41286c2007102e210b0b200b450d040b200b200841286c6a220741286a2007200d20086b41286c10dc051a2007200c360200200720012903b0043702042007410c6a200e290300370200200741146a20162903003702002007411c6a2017290300370200200720023602242017420037030020164200370300200e4200370300200142003703b004202f20101002220841086a29000037030020012008290000370398042008102c200141f8036a41086a202f29030037030020012001290398043703f803201c41086a201b41086a290000370000201c201b290000370000202f20121002220841086a29000037030020012008290000370398042008102c20014188046a41086a202f290300370300200120012903980437038804201d201a290000370000201d41086a201a41086a29000037000020014180066a41086a200e29030037030020014180066a41106a201629030037030020014180066a41186a2017290300370300200120012903b004370380060240200b0d00203110050c010b200141203602b404200120193602b004200b200d41016a200141b0046a10e204200fa7450d00200b102c0b202e2030470d000b2030212e0b2030202e6b2106024003402006450d01200641506a2106202e412c6a2108202e41306a212e20082d00004103470d000b0b0240201f450d002021102c0b200141d8036a41186a22094200370300200141d8036a41106a220a4200370300200141d8036a41086a22084200370300200142003703d80320014198046a41086a220641bad6c500ad42808080809001841002220741086a29000037030020012007290000370398042007102c2008200629030037030020012001290398043703d803200641b6c5c400ad4280808080d001841002220741086a29000037030020012007290000370398042007102c200141b0046a41086a22022006290300220f370300200120012903980422103703b00420112010370000201141086a200f370000200141b8036a41086a2008290300370300200141b8036a41106a200a290300370300200141b8036a41186a2009290300370300200120012903d8033703b803200141b0046a200141b8036a10f00320012802b0042206410420061b210c024020012902b404420020061b2213422088a7220d450d00200c200d41286c6a210941002108200141b0046a41186a210a200141b0046a41106a210b200c210602400340024020062802002018460d0020080d020c030b200641246a2802002107200641046a290000210f2006410c6a2900002110200641146a2900002112200a2006411c6a290000370300200b2012370300200220103703002001200f3703b004200141b0046a200710d404200841016a2108200641286a22062009470d000b0b2008200d4b0d02200141b0046a41186a22024200370300200141b0046a41106a22094200370300200141b0046a41086a220a4200370300200142003703b00420014198046a41086a220641bad6c500ad42808080809001841002220741086a29000037030020012007290000370398042007102c200141f8036a41086a200629030037030020012001290398043703f803201c41086a201b41086a290000370000201c201b290000370000200641b6c5c400ad4280808080d001841002220741086a29000037030020012007290000370398042007102c20014188046a41086a2006290300370300200120012903980437038804201d201a290000370000201d41086a201a41086a29000037000020014180066a41086a200a29030037030020014180066a41106a200929030037030020014180066a41186a2002290300370300200120012903b00437038006200141003602b804200142013703b004200d20086b2206200141b0046a106702402006450d00200c200d41286c6a210a200c200841286c6a21080340200828020021020240024020012802b404220720012802b80422066b4104490d0020012802b00421070c010b200641046a22092006490d06200741017422062009200620094b1b22064100480d060240024020070d002006102a21070c010b20012802b00420072006102e21070b2007450d04200120063602b404200120073602b00420012802b80421060b2001200641046a3602b804200720066a20023600002001200141b0046a3602a806200841046a2207200141a8066a109402200841246a28020021020240024020012802b404220820012802b80422066b4104490d0020012802b00421080c010b200641046a22092006490d06200841017422062009200620094b1b22064100480d060240024020080d002006102a21080c010b20012802b00420082006102e21080b2008450d04200120063602b404200120083602b00420012802b80421060b2001200641046a3602b804200820066a2002360000200741246a2208200a470d000b0b20012802b40421062019ad428080808080048420013502b80442208620012802b0042208ad8410012006450d002008102c0b02402013a7450d00200c102c0b201810df01410010e303410010e30302402004450d00200441246c21082003210603400240024020062d0000220741034b0d0002400240024020070e0404000102040b2006410c6a280200450d03200641086a280200102c0c030b2006410c6a280200450d02200641086a280200102c0c020b2006410c6a280200450d01200641086a280200102c0c010b200641086a280200450d00200641046a280200102c0b200641246a21062008415c6a22080d000b0b02402005450d002003102c0b200141d0066a24000f0b1033000b2008200d1047000b1035000b8404010b7f230041206b2202240020012802002103200128020821042002410036020820024201370300200420021067024002400240024020040d002002280208210520022802042106200228020021070c010b20032004410c6c6a21082003210903402009280200210a200941086a280200220b2002106702400240200228020422062002280208220c6b200b490d00200228020021070c010b200c200b6a2207200c490d04200641017422052007200520074b1b22054100480d040240024020060d002005102a21070c010b200228020020062005102e21070b2007450d032002200536020420022007360200200521060b2002200c200b6a22053602082007200c6a200a200b10db051a2009410c6a22092008470d000b0b200241186a22092005ad4220862007ad841029220b41186a290000370300200241106a220c200b41106a290000370300200241086a220a200b41086a2900003703002002200b290000370300200b102c200041186a2009290300370000200041106a200c290300370000200041086a200a2903003700002000200229030037000002402006450d002007102c0b02402004450d002004410c6c21092003210b03400240200b41046a280200450d00200b280200102c0b200b410c6a210b200941746a22090d000b0b0240200141046a280200450d002003102c0b200241206a24000f0b1033000b1035000bf81f08057f027e017f037e017f027e087f027e230041e0076b2204240020044188046a200141a80210db051a200441a0026a20044188046a109002410121050240024002400240024020042d00a0024101470d00200020042f00a1023b0001200041013a0000200041036a20042d00a3023a000020032802002106410021010c010b200441c0006a200441a0026a41086a41e00110db051a024020032802002206450d00200341086a280200210720032802042108200441386a4181b0c20041101094014100210520044188046a200428023c410020042802381b10bc03200428028804210120042004280290043602a402200420013602a00220062007200441a0026a10f1020240200428028c04450d002001102c0b2008450d002006102c0b200441b0066a200441c0006a41d0006a10ed0220044188046a200441c0006a41e00110db051a20042903b0062109024002400240024002400240024020042903a804220a4202520d004100210b20042802d8044113460d010c090b200441a0076a41186a20044188046a41186a290300370300200441a0076a41106a20044188046a41106a290300370300200441a0076a41086a20044188046a41086a29030037030020042004290388043703a00720044188046a41c0006a290300210c200441c0046a290300210d200441d0046a280200210720042903b004210e200441a0026a41186a4200370300200441a0026a41106a220f4200370300200441a0026a41086a22084200370300200442003703a002200441b8066a41086a22014191b0c200ad4280808080e0008422101002220b41086a2900003703002004200b2900003703b806200b102c20082001290300370300200420042903b80622113703c007200420113703a002200141acb0c200ad4280808080e000841002220b41086a2900003703002004200b2900003703b806200b102c200f20042903b8062211370300200441d8066a41086a2008290300370300200441d8066a41106a2011370300200441d8066a41186a2001290300370300200420113703d007200420042903a0023703d806200441306a200441d8066a41201094010240200a4201520d00200e4200510d020b200120101002220841086a290000370300200420082900003703b8062008102c200441c0076a41086a2001290300370300200420042903b8063703c00720014197b0c200ad4280808080c001841002220841086a290000370300200420082900003703b8062008102c200441d0076a41086a2001290300370300200420042903b8063703d007200441a0026a200441a0076a109f0141c000102a2201450d02200120042903c007370000200120042903d007370010200120042903a002370020200141086a200441c0076a41086a2212290300370000200141186a200441d0076a41086a2213290300370000200141286a200441a0026a41086a290300370000200141306a200441b0026a290300370000200141386a200441a0026a41186a290300370000200441286a200141c000109401200428022c210b200428022821142001102c41002108200b410020141b22012007470d03200441b8066a41086a22014191b0c200ad4280808080e00084220a1002220841086a290000370300200420082900003703b8062008102c20122001290300370300200420042903b8063703c00720014197b0c200ad4280808080c001841002220841086a290000370300200420082900003703b8062008102c20132001290300370300200420042903b8063703d007200441d8066a200441a0076a109f0141c000102a2201450d02200120042903c007370000200141086a200441c0076a41086a290300370000200120042903d007370010200141186a200441d0076a41086a2215290300370000200120042903d806370020200141286a200441d8066a41086a2212290300370000200141306a200441d8066a41106a2213290300370000200141386a200441d8066a41186a22162903003700002004200741016a3602a0022001ad4280808080800884200441a0026aad220e4280808080c00084221110012001102c200441a0026a41186a22174200370300200441a0026a41106a220b4200370300200441a0026a41086a22074200370300200442003703a002200441b8066a41086a2201200a1002220841086a290000370300200420082900003703b8062008102c20072001290300370300200420042903b8063703a00220014184c3c200ad428080808080028422101002220841086a290000370300200420082900003703b8062008102c200b20042903b806220a370300201220072903003703002013200a370300201620012903003703002004200a3703d007200420042903a0023703d806200441206a200441d8066a41201094014100210841062114417f2004280224410020042802201b221820026a221920192018491b221842808080c0f588fe064280808080f28ba80920094280808080f01f835022191b220a200a428094ebdc0380220a4280ec94a37c7e7c4280cab5ee0156200aa76a4b0d0420174200370300200b420037030020074200370300200442003703a00220014191b0c200ad4280808080e00084221a1002220841086a290000370300200420082900003703b8062008102c20072001290300370300200420042903b806220a3703c0072004200a3703a002200120101002220841086a290000370300200420082900003703b8062008102c200b20042903b806220a370300201220072903003703002013200a370300201620012903003703002004200a3703d007200420042903a0023703d806200420183602a002200441d8066aad428080808080048422102011100120174200370300200b420037030020074200370300200442003703a0022001201a1002220841086a290000370300200420082900003703b8062008102c20072001290300370300200420042903b806220a3703c0072004200a3703a002200141e0c2c200ad4280808080b00284221b1002220841086a290000370300200420082900003703b8062008102c20152001290300220a370300200420042903b80622113703d007200f2011370000200f41086a200a370000201220072903003703002013200b29030037030020162017290300370300200420042903a0023703d806200441186a200441d8066a412010940141002108417f200428021c410020042802181b220f4180afd0e502418094ebdc0320191b22012009a7220720012007491b6a22122012200f491b220f20014b0d04200441a0026a41186a22164200370300200441a0026a41106a22134200370300200441a0026a41086a22144200370300200442003703a002200441b8066a41086a2201201a1002221241086a290000370300200420122900003703b8062012102c20142001290300370300200420042903b806220a3703c0072004200a3703a0022001201b1002221241086a290000370300200420122900003703b8062012102c200441d0076a41086a2001290300220a370300200420042903b80622113703d007200b2011370000200b41086a200a370000200441d8066a41086a2014290300370300200441d8066a41106a2013290300370300200441d8066a41186a2016290300370300200420042903a0023703d8062004200f3602a0022010200e4280808080c000841001200441086a200220072009422888a7200d200c10ac0241012114200441a0026a200441a0076a2004290308200441086a41086a29030041014111200d200c84501b10ac0120042802a0024101460d0420042903a8022013290300108503200441a0026a20044188046a41d0006a10c703024020042d00a0024101460d00200441cc026a2802002107200441c8026a280200210f200441c4026a2802002108200441bc026a2802002114200441b8026a280200210b0240200441c0026a2802002201450d002001410c6c2102200b210103400240200141046a280200450d002001280200102c0b2001410c6a2101200241746a22020d000b0b02402014450d00200b102c0b02402007450d002007410c6c21022008210103400240200141046a280200450d002001280200102c0b2001410c6a2101200241746a22020d000b0b200f450d082008102c0c080b20042d00a10222084102460d0720042f01a20221140c040b200441a0026a200441dc046a10c603024020042d00a0024101460d00200441cc026a2802002107200441c8026a2802002114200441c4026a2802002108200441bc026a2802002112200441b8026a280200210f0240200441c0026a2802002201450d002001410c6c2102200f210103400240200141046a280200450d002001280200102c0b2001410c6a2101200241746a22020d000b0b02402012450d00200f102c0b02402007450d002007410c6c21022008210103400240200141046a280200450d002001280200102c0b2001410c6a2101200241746a22020d000b0b2014450d082008102c0c080b20042d00a10222014102460d0720042f01a20241087420017221010c040b41c090c600411941dc90c6001036000b1033000b41034102200120074b1b21140b201441087420087221010b200441d8046a109202200041036a20014110763a0000200020013b0001200041013a000020054521010b20010d022006450d02200341046a280200450d022006102c0c020b20044180076a41186a200441a0076a41186a29030037030020044180076a41106a200441a0076a41106a29030037030020044180076a41086a200441a0076a41086a290300370300200420042903a007370380074101210b0b200441b8066a41186a220820044180076a41186a2201290300370300200441b8066a41106a220f20044180076a41106a2202290300370300200441b8066a41086a221420044180076a41086a220729030037030020042004290380073703b806200441a0026a200441d8046a41900110db051a200441a0076a41186a22122008290300370300200441a0076a41106a2213200f290300370300200441a0076a41086a220f2014290300370300200420042903b8063703a007410221080240200b450d0020012012290300370300200220132903003703002007200f290300370300200420042903a00737038007410121080b200441e2066a2007290300370100200441ea066a2002290300370100200441f2066a2001290300370100200420083a00d90620042004290380073701da06200441003a00d806200441a0076a200441a0026a200441d8066a10c102200441ab076a2d0000210220042903a007210a20042d00a807210120042f00a90721072004419c046a200937020020044188046a41106a2001200720024110747241087472220236020020044188046a41086a2009200a20014102461b3703002004200141024736028c04200441003a0088044101410020044188046a10920120044181b0c20041101094012004200428020441016a410120042802001b360288044181b0c200ad428080808080028420044188046aad4280808080c0008410012000410c6a2002360200200041046a200a370200200041003a00002006450d002005450d00200341046a280200450d002006102c0b200441e0076a24000beb0101027f20014180feff077141087621020240024020014101710d00411f210341ff8ec60021010240024002400240024002400240200241ff01710e080006010203040508000b4120210341df8ec60021010c070b4127210341ff8dc60021010c060b4117210341e88dc60021010c050b41c98dc60021010c040b4126210341a38dc60021010c030b412b210341f88cc60021010c020b4139210341a68ec60021010c010b411f210341a090c600210102400240200241ff01710e03000102000b41c100210341df8fc60021010c010b41c1002103419e8fc60021010b20002003360204200020013602000bee1e09057f017e017f017e027f017e017f027e077f230041f0016b22012400200141a8016a41186a22024200370300200141a8016a41106a22034200370300200141a8016a41086a22044200370300200142003703a801200141c8016a41086a22054191b0c200ad4280808080e0008422061002220741086a290000370300200120072900003703c8012007102c20042005290300370300200120012903c801220837039801200120083703a801200541c8c2c200ad4280808080e001841002220741086a290000370300200120072900003703c8012007102c200320012903c8012208370300200141f8006a41086a22072004290300370300200141f8006a41106a22092008370300200141f8006a41186a220a200529030037030020012008370350200120012903a801370378200141f8006aad220b428080808080048422081005200242003703002003420037030020044200370300200142003703a801200520061002220c41086a2900003703002001200c2900003703c801200c102c20042005290300370300200120012903c801220d370398012001200d3703a801200541e0c2c200ad4280808080b002841002220c41086a2900003703002001200c2900003703c801200c102c20022005290300220d37030020072004290300370300200920012903c801220e370300200a200d3703002001200e370350200120012903a80137037820081005200242003703002003420037030020044200370300200142003703a801200520061002220c41086a2900003703002001200c2900003703c801200c102c20042005290300370300200120012903c801220d370398012001200d3703a80120054184c3c200ad42808080808002841002220c41086a2900003703002001200c2900003703c801200c102c20022005290300220d37030020072004290300370300200920012903c801220e370300200a200d3703002001200e370350200120012903a80137037820081005200242003703002003420037030020044200370300200142003703a801200520061002220c41086a2900003703002001200c2900003703c801200c102c20042005290300370300200120012903c801220d370398012001200d3703a801200541acb0c200ad4280808080e000841002220c41086a2900003703002001200c2900003703c801200c102c20022005290300220d37030020072004290300370300200920012903c801220e370300200a200d3703002001200e370350200120012903a801370378200141086a200141f8006a4120109401200128020c210f0240200128020822104101470d00200810050b200242003703002003420037030020044200370300200142003703a801200520061002220c41086a2900003703002001200c2900003703c801200c102c20042005290300370300200120012903c801220637039801200120063703a801200541b2b0c200ad4280808080a001841002220c41086a2900003703002001200c2900003703c801200c102c200141d0006a41086a20052903002206370300200120012903c801220d3703502003200d370000200341086a20063700002007200429030037030020092003290300370300200a2002290300370300200120012903a801370378200141c8016a200141f8006a412010d3010240024020012d00c8014101460d00200141106a41086a4200370300200141106a41106a4200370300200141106a41186a4200370300200141a8016a41186a200141e1016a290000370300200141a8016a41106a200141d9016a290000370300200141a8016a41086a200141d1016a290000370300200120012900c9013703a801200142003703100c010b20081005200141a8016a41186a200141e1016a2900002206370300200141a8016a41106a200141d9016a290000220d370300200141a8016a41086a200141d1016a290000220e370300200141106a41086a200e370300200141106a41106a200d370300200141106a41186a2006370300200120012900c90122063703a801200120063703100b200141a8016a41186a22024200370300200141a8016a41106a22074200370300200141a8016a41086a22044200370300200142003703a801200141c8016a41086a22054191b0c200ad4280808080e00084220d1002220941086a290000370300200120092900003703c8012009102c20042005290300370300200120012903c801220637039801200120063703a801200541cab0c200ad4280808080e000841002220941086a290000370300200120092900003703c8012009102c200141d0006a41086a221120052903002206370300200120012903c801220e3703502003200e370000200341086a22122006370000200141f8006a41086a22132004290300370300200141f8006a41106a22142007290300370300200141f8006a41186a22152002290300370300200120012903a801370378200141c8016a200141f8006a10e4020240024020012802c80122090d0041042109420021060c010b2008100520012902cc0121060b200f410020101b210a200242003703002007420037030020044200370300200142003703a8012005200d1002220c41086a2900003703002001200c2900003703c801200c102c20042005290300370300200120012903c801220d370398012001200d3703a801200541bcb0c200ad4280808080e001841002220c41086a2900003703002001200c2900003703c801200c102c20112005290300220d370300200120012903c801220e3703502003200e3700002012200d370000201320042903003703002014200729030037030020152002290300370300200120012903a801370378200141c8016a200141f8006a412010d3010240024020012d00c8014101460d00200141306a41086a4200370300200141306a41106a4200370300200141306a41186a4200370300200141a8016a41186a200141e1016a290000370300200141a8016a41106a200141d9016a290000370300200141a8016a41086a200141d1016a290000370300200120012900c9013703a801200142003703300c010b20081005200141a8016a41186a200141e1016a2900002208370300200141a8016a41106a200141d9016a290000220d370300200141a8016a41086a200141d1016a290000220e370300200141306a41086a200e370300200141306a41106a200d370300200141306a41186a2008370300200120012900c90122083703a801200120083703300b0240024002400240200a41fb01490d00200a41857e6a2203450d00200141c8016a41086a22054191b0c200ad4280808080e000841002220441086a290000370300200120042900003703c8012004102c20014198016a41086a22022005290300370300200120012903c80137039801200541a3b0c200ad42808080809001841002220441086a290000370300200120042900003703c8012004102c200141d0006a41086a22072005290300370300200120012903c80137035020012003360278200141c8016a41186a2203200b4280808080c000841006220441186a290000370300200141c8016a41106a220c200441106a2900003703002005200441086a290000370300200120042900003703c8012004102c200141a8016a41186a22042003290300370300200141a8016a41106a2203200c290300370300200141a8016a41086a220c2005290300370300200120012903c8013703a80141c000102a2205450d01200520012903980137000020052001290350370010200520012903a801370020200541086a2002290300370000200541186a2007290300370000200541286a200c290300370000200541306a2003290300370000200541386a20042903003700002005ad428080808080088410052005102c0b101b210841002105200141003a00e8012008422088a721022008a722072104034020022005460d03200141c8016a20056a20042d00003a00002001200541016a22033a00e801200441016a21042003210520034120470d000b200141d0006a41086a200141c8016a41086a290300370300200141d0006a41106a200141c8016a41106a290300370300200141d0006a41186a200141c8016a41186a290300370300200120012903c80137035002402002450d002007102c0b200141003602d001200142013703c8012001200141c8016a3602a801200141106a200141a8016a10940220012802cc01210520014198016a20013502d00142208620012802c8012204ad84101c108d0102402005450d002004102c0b02402001280298012203450d00200141a0016a2802002102200128029c01210c41002105200141003a00e8010340024020022005470d000240200541ff0171450d00200141003a00e8010b41dfd0c200412c200141c8016a418cd1c200103b000b200141c8016a20056a200320056a2d00003a00002001200541016a22043a00e8012004210520044120470d000b200141f8006a41086a200141c8016a41086a22042903002208370300200141f8006a41106a200141c8016a41106a2202290300220d370300200141f8006a41186a200141c8016a41186a2207290300220e370300200120012903c801220b370378200420083703002002200d3703002007200e3703002001200b3703c801200141a8016a41026a220f200141f5006a41026a2d00003a0000200120012f00753b01a8010240024020064220882208a722052006a7460d002006210d0c010b200541016a22102005490d032008a74101742211201020102011491bad220d42247e2208422088a70d032008a722104100480d030240024020050d002010102a21090c010b2009200541246c2010102e21090b2009450d0220064220882208a721050b2009200541246c6a220541003a0000200520012903c801370001200541096a2004290300370000200541116a2002290300370000200541196a2007290300370000200520012f01a8013b0021200541236a200f2d00003a00002008422086200d42ffffffff0f83844280808080107c2106200c450d002003102c0b200020012903103700102000200a36020020002001290350370030200041286a200141106a41186a290300370000200041206a200141106a41106a290300370000200041186a200141106a41086a290300370000200041386a200141d0006a41086a290300370000200041c0006a200141d0006a41106a290300370000200041c8006a200141d0006a41186a290300370000200041086a200637020020002009360204200041e8006a200141306a41186a290300370000200041e0006a200141306a41106a290300370000200041d8006a200141306a41086a29030037000020002001290330370050200141f0016a24000f0b1033000b1035000b0240200541ff0171450d00200141003a00e8010b41dfd0c200412c200141c8016a418cd1c200103b000ba20301027f23004180026b22022400024002402001450d00200220003602000c010b200241013602000b20022001360204200241f8006a20021081010240200228027c450d00200241086a200241f8006a41f00010db051a200241086a10b2030240200241086a410c6a2802002200450d00200228020c2101200041246c210003400240024020012d0000220341034b0d0002400240024020030e0404000102040b2001410c6a280200450d03200141086a280200102c0c030b2001410c6a280200450d02200141086a280200102c0c020b2001410c6a280200450d01200141086a280200102c0c010b200141086a280200450d00200141046a280200102c0b200141246a21012000415c6a22000d000b0b0240200241106a280200450d00200228020c102c0b20024180026a240042010f0b200241f4016a41043602002002411c6a41023602002002420237020c20024184adc200360208200241043602ec0120024184aec2003602e801200241003602fc01200241dc9ec6003602f8012002200241e8016a3602182002200241f8016a3602f001200241086a4194adc2001041000bd02a020b7f017e230041d0006b2202240020024100360228200242013703200240024002404104102a2203450d0020024284808080c00037022420022003360220200341edcad18b0636000002400240200228022420022802282203460d00200228022021040c010b200341016a22042003490d03200341017422052004200520044b1b22054100480d030240024020030d002005102a21040c010b200228022020032005102e21040b2004450d0120022005360224200220043602200b2002200341016a360228200420036a41093a00004119200241206a106741ccf0c100210603402006280204210720062802082203200241206a10670240024020022802242205200228022822046b2003490d00200228022021050c010b200420036a22082004490d04200541017422042008200420084b1b22044100480d040240024020050d002004102a21050c010b200228022020052004102e21050b2005450d022002200436022420022005360220200228022821040b2002200420036a360228200520046a2007200310db051a200228022421042002280228210302400240200628020c4102470d000240024020042003460d00200228022021040c010b200341016a22042003490d06200341017422052004200520044b1b22054100480d060240024020030d002005102a21040c010b200228022020032005102e21040b2004450d042002200536022420022004360220200228022821030b2002200341016a360228200420036a41003a00000c010b0240024020042003460d00200228022021040c010b200341016a22042003490d05200341017422052004200520044b1b22054100480d050240024020030d002005102a21040c010b200228022020032005102e21040b2004450d032002200536022420022004360220200228022821030b2002200341016a360228200420036a41013a00000240200628020c4101460d00200241306a20062802101103002002280234210720022802382203200241206a10670240024020022802242205200228022822046b2003490d00200228022021050c010b200420036a22082004490d06200541017422042008200420084b1b22044100480d060240024020050d002004102a21050c010b200228022020052004102e21050b2005450d042002200436022420022005360220200228022821040b2002200420036a360228200520046a2007200310db051a200228024021050240200228023c4101460d0020052002280244200241206a10680c020b200520022802482203200241206a106802402003450d00200341d8006c21074100210403400240200520046a220341346a280200450d002003413c6a280200450d00200341386a280200102c0b0240200341c4006a280200450d00200341cc006a280200450d00200341c8006a280200102c0b2007200441d8006a2204470d000b0b2002280244450d012005102c0c010b2006280214210720062802182203200241206a10670240024020022802242205200228022822046b2003490d00200228022021050c010b200420036a22082004490d05200541017422042008200420084b1b22044100480d050240024020050d002004102a21050c010b200228022020052004102e21050b2005450d032002200436022420022005360220200228022821040b2002200420036a360228200520046a2007200310db051a200628022021030240200628021c4101460d002003200641246a280200200241206a10680c010b20032006280228200241206a10680b200228022421042002280228210302400240200628022c4102470d000240024020042003460d00200228022021040c010b200341016a22042003490d06200341017422052004200520044b1b22054100480d060240024020030d002005102a21040c010b200228022020032005102e21040b2004450d042002200536022420022004360220200228022821030b2002200341016a360228200420036a41003a00000c010b0240024020042003460d00200228022021040c010b200341016a22042003490d05200341017422052004200520044b1b22054100480d050240024020030d002005102a21040c010b200228022020032005102e21040b2004450d032002200536022420022004360220200228022821030b2002200341016a360228200420036a41013a00000240200628022c4101460d00200241186a200628023011030020022802182104200228021c2203200241206a10672003450d012003412c6c21082004411c6a21030340200341686a28020021092003416c6a2802002204200241206a10670240024020022802242207200228022822056b2004490d00200228022021070c010b200520046a220a2005490d0720074101742205200a2005200a4b1b22054100480d070240024020070d002005102a21070c010b200228022020072005102e21070b2007450d052002200536022420022007360220200228022821050b2002200520046a360228200720056a2009200410db051a200341706a200241206a10692003200241206a10662003412c6a2103200841546a22080d000c020b0b2006280230210420062802382203200241206a10672003450d002003412c6c21082004411c6a21030340200341686a28020021092003416c6a2802002204200241206a10670240024020022802242207200228022822056b2004490d00200228022021070c010b200520046a220a2005490d0620074101742205200a2005200a4b1b22054100480d060240024020070d002005102a21070c010b200228022020072005102e21070b2007450d042002200536022420022007360220200228022821050b2002200520046a360228200720056a2009200410db051a200341706a200241206a10692003200241206a10662003412c6a2103200841546a22080d000b0b200228022421042002280228210302400240200628023c4102470d000240024020042003460d00200228022021040c010b200341016a22042003490d06200341017422052004200520044b1b22054100480d060240024020030d002005102a21040c010b200228022020032005102e21040b2004450d042002200536022420022004360220200228022821030b2002200341016a360228200420036a41003a00000c010b0240024020042003460d00200228022021040c010b200341016a22042003490d05200341017422052004200520044b1b22054100480d050240024020030d002005102a21040c010b200228022020032005102e21040b2004450d032002200536022420022004360220200228022821030b2002200341016a360228200420036a41013a00000240200628023c4101460d00200241106a20062802401103002002280210210420022802142203200241206a10672003450d012003412c6c21082004411c6a21030340200341686a28020021092003416c6a2802002204200241206a10670240024020022802242207200228022822056b2004490d00200228022021070c010b200520046a220a2005490d0720074101742205200a2005200a4b1b22054100480d070240024020070d002005102a21070c010b200228022020072005102e21070b2007450d052002200536022420022007360220200228022821050b2002200520046a360228200720056a2009200410db051a200341706a200241206a10662003200241206a10662003412c6a2103200841546a22080d000c020b0b2006280240210420062802482203200241206a10672003450d002003412c6c21082004411c6a21030340200341686a28020021092003416c6a2802002204200241206a10670240024020022802242207200228022822056b2004490d00200228022021070c010b200520046a220a2005490d0620074101742205200a2005200a4b1b22054100480d060240024020070d002005102a21070c010b200228022020072005102e21070b2007450d042002200536022420022007360220200228022821050b2002200520046a360228200720056a2009200410db051a200341706a200241206a10662003200241206a10662003412c6a2103200841546a22080d000b0b02400240200628024c4101460d00200241086a20062802501103002002280208210b200228020c2203200241206a10672003450d01200341386c210c410021070340200b20076a220341046a2802002109200341086a2802002204200241206a10670240024020022802242208200228022822056b2004490d00200228022021080c010b200520046a220a2005490d0720084101742205200a2005200a4b1b22054100480d070240024020080d002005102a21080c010b200228022020082005102e21080b2008450d052002200536022420022008360220200228022821050b2002200520046a360228200820056a2009200410db051a200341106a2802002109200341146a2802002204200241206a10670240024020022802242208200228022822056b2004490d00200228022021080c010b200520046a220a2005490d0720084101742205200a2005200a4b1b22054100480d070240024020080d002005102a21080c010b200228022020082005102e21080b2008450d052002200536022420022008360220200228022821050b2002200520046a360228200820056a2009200410db051a02400240200341186a2802004101460d00200241306a2003411c6a280200200341206a28020028020c1102002002280230210920022802382204200241206a10670240024020022802242208200228022822056b2004490d00200228022021080c010b200520046a220a2005490d0920084101742205200a2005200a4b1b22054100480d090240024020080d002005102a21080c010b200228022020082005102e21080b2008450d072002200536022420022008360220200228022821050b2002200520046a360228200820056a2009200410db051a2002280234450d012009102c0c010b2003411c6a2802002109200341246a2802002204200241206a10670240024020022802242208200228022822056b2004490d00200228022021080c010b200520046a220a2005490d0820084101742205200a2005200a4b1b22054100480d080240024020080d002005102a21080c010b200228022020082005102e21080b2008450d062002200536022420022008360220200228022821050b2002200520046a360228200820056a2009200410db051a0b200341286a200241206a1066200c200741386a2207470d000c020b0b2006280250210b20062802582203200241206a10672003450d00200341386c210c410021070340200b20076a220341046a2802002109200341086a2802002204200241206a10670240024020022802242208200228022822056b2004490d00200228022021080c010b200520046a220a2005490d0620084101742205200a2005200a4b1b22054100480d060240024020080d002005102a21080c010b200228022020082005102e21080b2008450d042002200536022420022008360220200228022821050b2002200520046a360228200820056a2009200410db051a200341106a2802002109200341146a2802002204200241206a10670240024020022802242208200228022822056b2004490d00200228022021080c010b200520046a220a2005490d0620084101742205200a2005200a4b1b22054100480d060240024020080d002005102a21080c010b200228022020082005102e21080b2008450d042002200536022420022008360220200228022821050b2002200520046a360228200820056a2009200410db051a02400240200341186a2802004101460d00200241306a2003411c6a280200200341206a28020028020c1102002002280230210920022802382204200241206a10670240024020022802242208200228022822056b2004490d00200228022021080c010b200520046a220a2005490d0820084101742205200a2005200a4b1b22054100480d080240024020080d002005102a21080c010b200228022020082005102e21080b2008450d062002200536022420022008360220200228022821050b2002200520046a360228200820056a2009200410db051a2002280234450d012009102c0c010b2003411c6a2802002109200341246a2802002204200241206a10670240024020022802242208200228022822056b2004490d00200228022021080c010b200520046a220a2005490d0720084101742205200a2005200a4b1b22054100480d070240024020080d002005102a21080c010b200228022020082005102e21080b2008450d052002200536022420022008360220200228022821050b2002200520046a360228200820056a2009200410db051a0b200341286a200241206a1066200c200741386a2207470d000b0b02400240200628025c4101460d00200220062802601103002002280200210420022802042203200241206a10672003450d012003411c6c21082004410c6a21030340200341786a28020021092003417c6a2802002204200241206a10670240024020022802242207200228022822056b2004490d00200228022021070c010b200520046a220a2005490d0720074101742205200a2005200a4b1b22054100480d070240024020070d002005102a21070c010b200228022020072005102e21070b2007450d052002200536022420022007360220200228022821050b2002200520046a360228200720056a2009200410db051a2003200241206a10662003411c6a2103200841646a22080d000c020b0b2006280260210420062802682203200241206a10672003450d002003411c6c21082004410c6a21030340200341786a28020021092003417c6a2802002204200241206a10670240024020022802242207200228022822056b2004490d00200228022021070c010b200520046a220a2005490d0620074101742205200a2005200a4b1b22054100480d060240024020070d002005102a21070c010b200228022020072005102e21070b2007450d042002200536022420022007360220200228022821050b2002200520046a360228200720056a2009200410db051a2003200241206a10662003411c6a2103200841646a22080d000b0b200641ec006a220641d885c200470d000b2002280228220341046a2204417f4c0d0120022802242108200228022021070240024020040d00410121050c010b2004102a2205450d010b2002410036023820022004360234200220053602302003200241306a10670240024020022802342205200228023822046b2003490d00200228023021050c010b200420036a22092004490d03200541017422062009200620094b1b22094100480d030240024020050d002009102a21050c010b200228023020052009102e21050b2005450d0120022009360234200220053602300b200520046a2007200310db051a200420036aad4220862005ad84210d02402008450d002007102c0b200241d0006a2400200d0f0b1033000b103a000b1035000ba80601047f230041b0076b22022400024002402001450d00200220003602000c010b200241013602000b20022001360204200241f8046a2002108c0202400240024020022903e0054203510d00200241186a200241f8046a41a80210db051a200241c0026a200241186a41a80210db051a2002200241c0026a3602f804200241e8046a200241f8046a10870120022802f0042101200241f8046a200241c0026a41a80210db051a200241a8076a20022802f004360200200220022903e8043703a007200241086a200241f8046a2001200241a0076a10b4034101410220022d000841014622031b2200102a2201450d012002410036028005200220003602fc04200220013602f8040240024020030d00200141003a00004102210320024102360280050240200241146a2d000022044102470d00200141003a00010c020b200141013a00010240024020044101470d00200141024104102e2201450d05200141013a000220024284808080303702fc04200220013602f8044103210320022d001521040c010b410221034100210420004102470d0041000d0520004101742204200041016a2205200420054b1b22044100480d05200120002004102e2201450d04200220043602fc04200220013602f804410021040b200120036a20043a00002002200341016a220036028005200241166a2d00002104024020022802fc042000470d0041000d0520004101742203200041016a2205200320054b1b22034100480d050240024020000d002003102a21010c010b200120002003102e21010b2001450d04200220033602fc04200220013602f8040b2002200041016a220336028005200120006a20043a00000c010b200141013a00002002410136028005200241086a410172200241f8046a10ba03200228028005210320022802f80421010b200241b0076a24002003ad4220862001ad840f0b200241246a4104360200200241d4026a4102360200200242023702c40220024184adc2003602c0022002410436021c2002419caec2003602182002410036020c200241dc9ec6003602082002200241186a3602d0022002200241086a360220200241c0026a4194adc2001041000b1033000b1035000ba00b01057f230041106b22022400200141046a2802002103200141086a2802002104024002400240024020002d00004101460d000240024020032004460d00200128020021050c010b200441016a22032004490d04200441017422052003200520034b1b22034100480d040240024020040d002003102a21050c010b200128020020042003102e21050b2005450d0320012005360200200141046a2003360200200141086a28020021040b200141086a2206200441016a36020041002103200520046a41003a000002400240024002400240024002400240024020002d00010e080700010203040506070b200241013a000f410121030c070b410221030c050b410321030c040b410421030c030b410521030c020b410621030c010b200241073a000f02400240200141046a28020020062802002204460d00200128020021030c010b200441016a22032004490d06200441017422052003200520034b1b22054100480d060240024020040d002005102a21030c010b200128020020042005102e21030b2003450d0520012003360200200141046a2005360200200141086a28020021040b200141086a200441016a360200200320046a41073a000020002d000221030b200220033a000f0b02400240200141046a280200200141086a2802002204460d00200128020021000c010b200441016a22002004490d04200441017422052000200520004b1b22054100480d040240024020040d002005102a21000c010b200128020020042005102e21000b2000450d0320012000360200200141046a2005360200200141086a28020021040b200141086a200441016a360200200020046a20033a00000c010b0240024020032004460d00200128020021030c010b200441016a22032004490d03200441017422052003200520034b1b22054100480d030240024020040d002005102a21030c010b200128020020042005102e21030b2003450d0220012003360200200141046a2005360200200141086a28020021040b200141086a200441016a360200200320046a41013a000020002d0001220441024b0d0002400240024020040e03000102000b02400240200141046a280200200141086a2802002204460d00200128020021000c010b200441016a22002004490d05200441017422032000200320004b1b22034100480d050240024020040d002003102a21000c010b200128020020042003102e21000b2000450d0420012000360200200141046a2003360200200141086a28020021040b200141086a200441016a360200200020046a41003a00000c020b02400240200141046a280200200141086a2802002204460d00200128020021000c010b200441016a22002004490d04200441017422032000200320004b1b22034100480d040240024020040d002003102a21000c010b200128020020042003102e21000b2000450d0320012000360200200141046a2003360200200141086a28020021040b200141086a200441016a360200200020046a41013a00000c010b02400240200141046a280200200141086a2802002204460d00200128020021030c010b200441016a22032004490d03200441017422052003200520034b1b22054100480d030240024020040d002005102a21030c010b200128020020042005102e21030b2003450d0220012003360200200141046a2005360200200141086a28020021040b200141086a2205200441016a360200200320046a41023a000020002d0002210302400240200141046a28020020052802002204460d00200128020021000c010b200441016a22002004490d03200441017422052000200520004b1b22054100480d030240024020040d002005102a21000c010b200128020020042005102e21000b2000450d0220012000360200200141046a2005360200200141086a28020021040b200141086a200441016a360200200020046a20033a00000b200241106a24000f0b1033000b1035000bdb1109077f017e017f027e027f017e057f017e037f23004190026b22022400200241186a4181b0c2004110109401200228021c21030240200228021822044101470d004181b0c200ad428080808080028410050b200241b0016a41186a22054200370300200241b0016a41106a22064200370300200241b0016a41086a22074200370300200242003703b001200241206a41086a22084191b0c200ad4280808080e0008422091002220a41086a2900003703002002200a290000370320200a102c20072008290300370300200220022903203703b001200841c8c2c200ad4280808080e00184220b1002220a41086a2900003703002002200a290000370320200a102c20062002290320220c37030020024190016a41086a220d200729030037030020024190016a41106a220a200c37030020024190016a41186a220e20082903003703002002200c3703d001200220022903b0013703900120022003410020041b36022020024190016aad4280808080800484220f200241206aad4280808080c000841001200241206a41186a22104200370300200241206a41106a220442003703002008420037030020024200370320200241d0016a41086a221120091002220341086a290000370300200220032900003703d0012003102c20082011290300370300200220022903d001370320201141acb0c200ad4280808080e000841002220341086a290000370300200220032900003703d0012003102c200420022903d001220c370300200241e0016a41086a22122008290300370300200241e0016a41106a200c370300200241e0016a41186a221320112903003703002002200c3703b001200220022903203703e001200241106a200241e0016a41201094012002280214210420022802102114200542003703002006420037030020074200370300200242003703b001201141e4d2c500ad42808080808001841002220341086a290000370300200220032900003703d0012003102c20072011290300370300200220022903d0013703b001201141ecd2c500ad42808080808001841002220341086a290000370300200220032900003703d0012003102c20052011290300220c370300200d2007290300370300200a20022903d0012215370300200e200c3703002002201537038002200220022903b00137039001200f10052004410020141b10ad02200542003703002006420037030020074200370300200242003703b001201120091002220341086a290000370300200220032900003703d0012003102c20072011290300370300200220022903d001220c370380022002200c3703b0012011200b1002220341086a290000370300200220032900003703d0012003102c20052011290300220c370300200d2007290300370300200a20022903d001220b370300200e200c3703002002200b37038002200220022903b00137039001200241086a20024190016a41201094010240024002400240200228020c410020022802081b22160d0041042117410021160c010b2016ad420c7e220c422088a70d01200ca7220a4100480d01200a102a2217450d024100210a201721030340200241e0016a200a10bc03200241206a20022802e001221420022802e801221810bd03024020022802202204450d002018ad4220862014ad8410050b200a41016a210a2002290224420020041b210c2004410120041b2104024020022802e401450d002014102c0b20032004360200200341046a200c3702002003410c6a21032016200a470d000b0b200220163602282002201636022420022017360220200241e0016a200241206a10b30320102013290300370300200241206a41106a2203200241e0016a41106a29030037030020082012290300370300200220022903e00137032020054200370300200241b0016a41106a2204420037030020074200370300200242003703b001201120091002220a41086a2900003703002002200a2900003703d001200a102c20072011290300370300200220022903d001220c370380022002200c3703b001201141bcb0c200ad4280808080e001841002220a41086a2900003703002002200a2900003703d001200a102c20024180026a41086a2011290300220c370300200220022903d00122093703800220062009370000200641086a200c370000200d200729030037030020024190016a41106a2004290300370300200e2005290300370300200220022903b00137039001200241203602b401200220024190016a3602b001200241206a200241b0016a10be03200241206a10b603200241003602b801200242013703b0012002200241b0016a3602e0012003200241e0016a109402200241206a200241b0016a1089012002200241b0016a3602e001200241d0006a200241e0016a1094022002200241b0016a3602e001200241f0006a200241e0016a109402200228022421042002412c6a280200220a200241b0016a10670240200a450d00200a41246c21160340200241e0016a200410e70220022802e00121180240024020022802b401221420022802b801220a6b20022802e8012203490d0020022802b00121140c010b200a20036a2211200a490d032014410174220a2011200a20114b1b220a4100480d030240024020140d00200a102a21140c010b20022802b0012014200a102e21140b2014450d042002200a3602b401200220143602b00120022802b801210a0b2002200a20036a3602b8012014200a6a2018200310db051a024020022802e401450d002018102c0b200441246a21042016415c6a22160d000b0b20023502b801422086210c20023502b00121090240200228022c2203450d002002280224210a200341246c2103034002400240200a2d0000220441034b0d0002400240024020040e0404000102040b200a410c6a280200450d03200a41086a280200102c0c030b200a410c6a280200450d02200a41086a280200102c0c020b200a410c6a280200450d01200a41086a280200102c0c010b200a41086a280200450d00200a41046a280200102c0b200a41246a210a2003415c6a22030d000b0b200c200984210c0240200241286a280200450d002002280224102c0b20024190026a2400200c0f0b1035000b1033000bcd0301067f230041f0006b22022400200241d0006a41086a22034191b0c200ad4280808080e000841002220441086a290000370300200220042900003703502004102c200241086a41086a2205200329030037030020022002290350370308200341b4c3c200ad4280808080d001841002220441086a290000370300200220042900003703502004102c200241186a41086a22062003290300370300200220022903503703182002200136024c200241d0006a41186a2201200241cc006aad4280808080c000841006220441186a290000370300200241d0006a41106a2207200441106a2900003703002003200441086a290000370300200220042900003703502004102c200241286a41186a22042001290300370300200241286a41106a22012007290300370300200241286a41086a2207200329030037030020022002290350370328024041c000102a22030d001033000b200320022903083700002003200229031837001020032002290328370020200042c0808080800837020420002003360200200341086a2005290300370000200341186a2006290300370000200341286a2007290300370000200341306a2001290300370000200341386a2004290300370000200241f0006a24000bbb0201017f230041e0006b220324002003200236020c20032001360208200341106a2002ad4220862001ad841003108d0102400240200328021022010d00200041003602000c010b200328021421022003200341106a41086a28020036022420032001360220200341c8006a200341206a1077024002402003280248450d0020002003290348370200200041086a200341c8006a41086a2802003602000c010b20034100360230200342013703282003410b36023c2003200341086a3602382003200341286a360244200341dc006a41013602002003420137024c200341d0b0c2003602482003200341386a360258200341c4006a41c49ac500200341c8006a10391a2003350230422086200335022884100420004100360200200328022c450d002003280228102c0b2002450d002001102c0b200341e0006a24000bc30301027f20002d0000210202404101102a2203450d00200320023a000020002d00012102200341014102102e2203450d00200320023a000120002d00022102200341024104102e2203450d00200320023a0002200320002d00033a000320002d00042102200341044108102e2203450d00200320023a0004200320002d00053a0005200320002d00063a0006200320002d00073a000720002d00082102200341084110102e2203450d00200320023a0008200320002d00093a0009200320002d000a3a000a200320002d000b3a000b200320002d000c3a000c200320002d000d3a000d200320002d000e3a000e200320002d000f3a000f20002d00102102200341104120102e2203450d00200320023a0010200320002d00113a0011200320002d00123a0012200320002d00133a0013200320002d00143a0014200320002d00153a0015200320002d00163a0016200320002d00173a0017200320002d00183a0018200320002d00193a0019200320002d001a3a001a200320002d001b3a001b200320002d001c3a001c200320002d001d3a001d200320002d001e3a001e200320002d001f3a001f20012902002003ad428080808080048410012003102c0f0b1033000b932907017f017e027f017e0e7f027e077f230041f0036b22022400024002402001450d00200220003602200c010b200241013602200b20022001360224200241186a200241206a1075024020022802180d00200228021c21012002200241206a3602f801200241003a00d003200242003702e402200241d0e1c1003602e0022002200136023c200241003602382002200241d0036a3602442002200241f8016a360240200241386a200241e0026a10a90220022802e002210120022902e4022103024020022d00d003450d0020012003a72003422088a710c0030c010b2001450d002002200337022c20022001360228200241386a200241286a10c10302400240024002400240024020022802384101460d00200241386a41086a2903002103200241b8016a41186a4200370300200241b8016a41106a22044200370300200241b8016a41086a22004200370300200242003703b801200241e8016a41086a220141f9e8c500ad42808080809001841002220541086a290000370300200220052900003703e8012005102c20002001290300370300200220022903e8013703b8012001419db1c200ad428080808030841002220541086a290000370300200220052900003703e8012005102c200420022903e8012206370300200241d0036a41086a2000290300370300200241d0036a41106a2006370300200241d0036a41186a2001290300370300200220063703d801200220022903b8013703d003200241086a200241d0036a109801200229031021062002280208210141a802102a2207450d0420074103360298012007420237036820072003200642dc0b7c42dc0b20011b220620032006561b3703a001200241286a2101200228022c210803402001280200220941086a210020092f0106220a4103742101410021050240024003402001450d0141c991c2002000410810dd05220b450d02200141786a2101200541016a2105200041086a2100200b417f4a0d000b2005417f6a210a0b024020080d004101210c0c060b2008417f6a21082009200a4102746a41e4016a21010c010b0b200220092005410c6c6a220141e8006a2802003602e4022002200141e0006a2802003602e002200241386a200241e0026a10800102402002280238220d0d004101210c0c040b200228023c210e200241386a41086a2201280200220a450d01200241386a41186a22094200370300200241386a41106a220f42003703002001420037030020024200370338200241e8016a41086a220041a4c6c500ad4280808080a001841002220541086a290000370300200220052900003703e8012005102c20012000290300370300200220022903e801370338200041f889c200ad4280808080e000841002220541086a290000370300200220052900003703e8012005102c200f20022903e8012203370300200241d0036a41086a2001290300370300200241d0036a41106a2003370300200241d0036a41186a2000290300370300200220033703d801200220022903383703d003200241386a200241d0036a10e601200229023c4200200228023822011b2203a7210c2001410420011b22082100200821010240024002402003422088a72210450d002008201041c4006c6a21004100210502400340200820056a22012d0000210b200241386a200141016a41c30010db051a200b4102460d01200241b8016a41186a2009290000370300200241b8016a41106a200f290000370300200241b8016a41086a200241386a41086a290000370300200220022900383703b801200b4101460d03200541c4006a2105200141c4006a2000470d000b200021010c010b200141c4006a21010b0240034020002001460d0120012d00002105200141c4006a210120054102470d000b0b41012109410021110240200c0d00410021120c020b2008102c410021120c010b200241d0036a41086a220b200241b8016a41086a290300370300200241d0036a41106a2213200241b8016a41106a290300370300200241d0036a41186a2214200241b8016a41186a290300370300200220022903b80122033703f801200220033703d0034120102a2209450d05200920022903d003370000200941186a2014290300370000200941106a2013290300370000200941086a200b29030037000041012111024002400240201041c4006c41bc7f6a2005470d00410121120c010b200141c4006a2d00002105200241386a200141c5006a41c30010db051a20014188016a210b024020054102470d0041012112200b21010c020b41012111410121120340200b210102400340200241b8016a41186a220b200241386a41186a290000370300200241b8016a41106a2210200241386a41106a290000370300200241b8016a41086a2213200241386a41086a290000370300200220022900383703b801200541ff01714101460d0120002001460d0320012d00002105200241386a200141016a41c30010db051a200141c4006a210120054102460d040c000b0b200241d0036a41086a20132903002203370300200241d0036a41106a20102903002206370300200241d0036a41186a200b2903002215370300200220022903b80122163703d003200241f8016a41186a220b2015370300200241f8016a41106a22102006370300200241f8016a41086a22132003370300200220163703f801024020122011470d00201141016a22052011490d0a201141017422142005201420054b1b221241ffffff3f712012470d0a201241057422054100480d0a0240024020110d002005102a21090c010b200920114105742005102e21090b2009450d090b200920114105746a220520022903f801370000200541186a200b290300370000200541106a2010290300370000200541086a2013290300370000201141016a211120002001460d0120012d00002105200241386a200141016a41c30010db051a200141c4006a210b20054102470d000b200141c4006a21010c010b200021010b0240034020002001460d0120012d00002105200141c4006a210120054102470d000b0b200c450d002008102c0b200d200a41f0006c6a2114200241e0026a41106a2117200241e0026a41086a21184200211541042119200d210b0340200b2802042101200b2802002100200241386a200b41086a41e80010db051a200b41f0006a210b2001450d03200241f8016a200241386a41e80010db051a200220013602e402200220003602e0022018200241f8016a41e80010db051a200241386a41186a22104200370300200241386a41106a22134200370300200241386a41086a2205420037030020024200370338200241e8016a41086a22014191b0c200ad4280808080e000841002220041086a290000370300200220002900003703e8012000102c20052001290300370300200220022903e801370338200141acb0c200ad4280808080e000841002220041086a290000370300200220002900003703e8012000102c200241d8016a41086a20012903002203370300200220022903e80122063703d801200f2006370000200f41086a2003370000200241d0036a41086a221a2005290300370300200241d0036a41106a221b2013290300370300200241d0036a41186a221c2010290300370300200220022903383703d0032002200241d0036a41201094012002280200210120022802042100200241d0036a200241e0026a10ee0202400240024020022802e002417f6a22082000410020011b22014f0d00200241386a2008109302200241386a2017412010dd050d0020022802e002221d41002001417b6a2200200020014b1b490d0020114105742108200241d0036a20096b210c4100210102400340024020082001470d004100210a0c020b4101210a200c2001460d01200920016a2100200141206a21012000200241d0036a412010dd050d000b0b200241386a201d109302200241386a200241d0036a412010dd052101200a0d0020010d010b024020022802ec022200450d0020022802e4022101200041246c210003400240024020012d0000220541034b0d0002400240024020050e0404000102040b2001410c6a280200450d03200141086a280200102c0c030b2001410c6a280200450d02200141086a280200102c0c020b2001410c6a280200450d01200141086a280200102c0c010b200141086a280200450d00200141046a280200102c0b200141246a21012000415c6a22000d000b0b20022802e802450d0120022802e402102c0c010b200241d0036a200241e0026a10ee02200241386a200241e0026a41f00010db051a0240024020154220882203a722012015a7460d00200121000c010b200141016a220a2001490d082003a72200410174220c200a200a200c491bad221542f0007e2203422088a70d082003a7220a4100480d080240024020010d00200a102a21190c010b2019200141f0006c200a102e21190b2019450d070b2019200041f0006c6a200241386a41f00010db051a2010201c2903003703002013201b2903003703002005201a290300370300200220022903d003370338024020112012470d00201141016a22012011490d082011410174220a2001200a20014b1b221241ffffff3f712012470d08201241057422014100480d080240024020110d002001102a21090c010b200920082001102e21090b2009450d070b201542ffffffff0f83200041016a2200ad422086842115200920086a22012002290338370000200141186a2010290300370000200141106a2013290300370000200141086a20052903003700002000410a460d04201141016a21110b200b2014470d000b2014210b0c020b2002200229023c3703e00241d5b1c2004128200241e0026a41a0b1c200103b000b4101210c200e450d01200d102c0c010b0240200b2014460d000340200b2802042208450d01200b41086a280200210a0240200b410c6a2802002201450d00200141246c21002008210103400240024020012d0000220541034b0d0002400240024020050e0404000102040b2001410c6a280200450d03200141086a280200102c0c030b2001410c6a280200450d02200141086a280200102c0c020b2001410c6a280200450d01200141086a280200102c0c010b200141086a280200450d00200141046a280200102c0b200141246a21012000415c6a22000d000b0b200b41f0006a210b0240200a450d002008102c0b200b2014470d000b0b0240200e450d00200d102c0b02402012450d002009102c0b0240201542ffffffff0f560d004101210c2015a7450d012019102c0c010b024020190d004101210c0c010b200741a80241d004102e2207450d01200741a8026a200241e0026a41e80010db051a2007420237039003200720153703c803200720193602c403200741043602c003200720022903f80137039803200741a0036a20024180026a290300370300200741a8036a20024188026a290300370300200741b0036a20024190026a290300370300200741b8036a20024198026a290300370300200741d0036a200241386a41800110db051a4102210c0b200241286a2101200228022c210802400240024003402001280200220941086a210020092f0106220a4103742101410021050240024003402001450d0141d191c2002000410810dd05220b450d02200141786a2101200541016a2105200041086a2100200b417f4a0d000b2005417f6a210a0b2008450d022008417f6a21082009200a4102746a41e4016a21010c010b0b200941e0006a2005410c6c6a22012802084104490d0020012802002800002108200241b8016a41186a220b4200370300200241b8016a41106a22094200370300200241b8016a41086a22004200370300200242003703b801200241e8016a41086a220141f9e8c500ad42808080809001841002220541086a290000370300200220052900003703e8012005102c20002001290300370300200220022903e8013703b801200141e499c500ad4280808080b001841002220541086a290000370300200220052900003703e8012005102c200241d8016a41086a20012903002203370300200220022903e80122063703d80120042006370000200441086a2003370000200241d0036a41086a2000290300370300200241d0036a41106a2009290300370300200241d0036a41186a200b290300370300200220022903b8013703d003200241386a200241d0036a10960120022802382201410420011b2105410021000240200229023c420020011b2203422088a72201417f6a220b20014b0d00200b20014f0d002005200b4102746a2201450d00200128020020084721000b02402003a7450d002005102c0b20000d010b200c21100c010b2007200c41a8026c2201200c4101742200200c41016a2210200020104b1b41a8026c102e2207450d01200720016a200241e0026a41e80010db0522014202370368200120022903f801370370200141f8006a20024180026a29030037030020014180016a20024188026a29030037030020014188016a20024190026a29030037030020014190016a20024198026a2903003703002001419c016a20083602002001410e36029801200141a8016a200241386a41800110db051a0b2002280228200228022c200228023010c003200241003602e802200242013703e0022010200241e0026a1067201041a8026c210c20022802e402210820022802e8022101200721050340200220053602f801200241386a200241f8016a1087012002280238210a02400240200820016b20022802402209490d00200120096a210020022802e002210b0c010b200120096a22002001490d032008410174220b2000200b20004b1b220f4100480d030240024020080d00200f102a210b0c010b20022802e0022008200f102e210b0b200b450d022002200f3602e4022002200b3602e002200f21080b200220003602e802200b20016a200a200910db051a0240200228023c450d00200a102c0b200541a8026a210520002101200c41d87d6a220c0d000b201041a8026c210520074198016a21012000ad422086200bad842103034020011073200141a8026a2101200541d87d6a22050d000b2007102c200241f0036a240020030f0b1033000b1035000b200241ec026a4104360200200241cc006a41023602002002420237023c20024184adc200360238200241043602e402200241b4aec2003602e002200241003602fc01200241dc9ec6003602f8012002200241e0026a3602482002200241f8016a3602e802200241386a4194adc2001041000bd90303027f017e027f02402001450d00034020002802e40121002001417f6a22010d000b0b02402002450d004100210341002101034002400240200120002f01064f0d0020002001410c6c6a220441e4006a2902002105200441e0006a2802002104200141016a21010c010b02400240200028020022010d002003ad210541002106410021010c010b20003301044220862003ad842105410121060b2000102c2005a72103024002402005422088a7220720012f01064f0d00200121040c010b034002400240200128020022040d002003ad2105410021040c010b200641016a210620013301044220862003ad8421050b2001102c2005a72103200421012005422088a7220720042f01064f0d000b0b200741027420046a41e8016a280200210020042007410c6c6a220141e4006a2902002105200141e0006a280200210402402006417f6a2201450d00034020002802e40121002001417f6a22010d000b0b410021010b2004450d012002417f6a210202402005a7450d002004102c0b20020d000b0b0240200041d0e1c100460d00200028020021012000102c2001450d00200128020021042001102c2004450d00024020042802002201450d0003402004102c2001210420012802002200210120000d000b0b2004102c0b0bf00101067f2001280204210202400240024003402001280200220341086a210420032f01062205410374210141002106024003402001450d0141a0e8c5002004410810dd052207450d03200141786a2101200641016a2106200441086a21042007417f4a0d000b2006417f6a21050b02402002450d002002417f6a2102200320054102746a41e4016a21010c010b0b200041a8e8c500360204200041086a41283602000c010b200341e0006a2006410c6c6a220128020841074b0d01200041d0e8c500360204200041086a41293602000b200041013602000f0b200041086a2001280200290000370300200041003602000bec3006077f017e0c7f027e017f037e230041c0026b22022400024002402001450d00200220003602200c010b200241013602200b20022001360224200241c8006a200241206a10b1030240024002400240200228024c2203450d00200241c0016a2802002104200241bc016a2802002105200241b8016a2802002106200241c8006a410c6a280200210720022802502108200241186a200241206a107520022802180d02200228021c21012002200241206a3602d001200241003a0038200242003702e401200241d0e1c1003602e0012002200136024c200241003602482002200241386a3602542002200241d0016a360250200241c8006a200241e0016a10a90220022802e001210120022902e401210920022d0038450d0120012009a72009422088a710c0030c020b200241dc016a4104360200200241f4016a4102360200200242023702e40120024184adc2003602e001200241043602d401200241d0aec2003602d0012002410036023c200241dc9ec6003602382002200241d0016a3602f0012002200241386a3602d801200241e0016a4194adc2001041000b20010d010b200241e0016a410c6a4104360200200241dc006a41023602002002420237024c20024184adc200360248200241043602e401200241d0aec2003602e001200241003602d401200241dc9ec6003602d0012002200241e0016a3602582002200241d0016a3602e801200241c8006a4194adc2001041000b2002200937022c20022001360228200241013b01442002420037023c200241d0e1c100360238200241386a41086a210a02400240024002402004450d002006200441a8026c6a210b200241e0016a410272210c200241c8006a41106a210d2006210e024002400240024002400340200e41e8006a2903004202520d0602400240200e28029801220f41034722100d00200e2903a0012109200241286a2101200228022c211102400240024002400240024002400240024003402001280200221241086a210020122f010622134103742101410021140240024003402001450d0141e98ac6002000410810dd052215450d02200141786a2101201441016a2114200041086a21002015417f4a0d000b2014417f6a21130b2011450d022011417f6a2111201220134102746a41e4016a21010c010b0b201241e0006a2014410c6c6a220128020841074b0d0141f18ac6002113201642808080807083422984a721110c020b419a8bc6002113201642808080807083421c84a721110c010b200942b8178020012802002900002216510d014131211141b8abc20021130b0240024020022d0045450d00413121014196acc20021000c010b2002280238200228023c200228024010c0032002420037023c200241d0e1c100360238200242e2c289abb68edbb7f4003703d00141002101200241e0016a410272410041da0010da051a200241c8006a410041840110da051a41e401102a2215450d1120154100360200201541046a200241e0016a41dc0010db051a201541e0006a200241c8006a41840110db051a2002410036023c2002201536023820152f0106220e4103742112417f2100024002400340024020122001470d00200e21000c020b200241d0016a201520016a41086a410810dd052214450d02200141086a2101200041016a21002014417f4a0d000b0b200242e2c289abb68edbb7f40037025c2002200a360258200220003602542002201536024c200241003602482002200241386a360250201141046a2200417f4c0d03024002402000450d002000102a2201450d14200241003602bc02200220013602e0012011413f4b0d01200120114102743a0000410121140c110b200241003602bc0241012100200241013602e0014101102a2201450d13200141033a0000200241013602bc02200220013602e001410521140c0c0b201141808001490d0e2011418080808004490d0d0c090b412d210141e9abc20021000b2002200136024c2002200036024841c7acc2004122200241c8006a41ecacc200103b000b20100d05200e2903a0012117200241c8006a200241286a10c1030240024020022802484101470d0020023502502109200228024c21184101210f0c010b20022903502109200241c8006a41186a22154200370300200d4200370300200241c8006a41086a2200420037030020024200370348200241e0016a41086a220141f9e8c500ad42808080809001841002221441086a290000370300200220142900003703e0012014102c20002001290300370300200220022903e0013703482001419db1c200ad428080808030841002221441086a290000370300200220142900003703e0012014102c200241d0016a41086a20012903002219370300200220022903e001221a3703d001200d201a370000200d41086a201937000020012000290300370300200241e0016a41106a200d290300370300200241e0016a41186a2015290300370300200220022903483703e001200241086a200241e0016a10980102402017200942b0ea017c560d004100210f2017200229031042dc0b7c42dc0b20022802081b2209540d010c060b201b4280808080708342258421094101210f41b0b1c20021180b024020022d0045450d00413121014196acc20021000c040b0240200f450d002002280238200228023c200228024010c0032002420037023c200241d0e1c100360238200242f4d2b59bc7ae98b8303703d0010c020b20022802382112200242f4d2b59bc7ae98b8303703d001201241d0e1c100460d01200228023c21110c020b103a000b200c410041da0010da051a200241c8006a410041840110da051a41e401102a2212450d0d4100211120124100360200201241046a200241e0016a41dc0010db051a201241e0006a200241c8006a41840110db051a2002410036023c200220123602380b02400340201241086a210020122f01062213410374210141002114024003402001450d01200241d0016a2000410810dd052215450d03200141786a2101201441016a2114200041086a21002015417f4a0d000b2014417f6a21130b02402011450d002011417f6a2111201220134102746a41e4016a28020021120c010b0b200242f4d2b59bc7ae98b83037025c2002200a360258200220133602542002201236024c200241003602482002200241386a360250200241003602e801200242013703e0014101102a210102400240200f0d002001450d0f200141003a000020024281808080103702e401200220013602e001200141014109102e2201450d0f200120093700012002428980808090013702e401200220013602e0010c010b2001450d0e200141013a000020024281808080103702e401200220013602e0012009a72201200241e0016a10670240024020022802e401221420022802e80122006b2001490d0020022802e00121140c010b200020016a22152000490d10201441017422122015201220154b1b22154100480d100240024020140d002015102a21140c010b20022802e00120142015102e21140b2014450d0f200220153602e401200220143602e0010b2002200020016a3602e801201420006a2018200110db051a0b200241d0016a41086a200241e0016a41086a280200360200200220022903e0013703d001200241c8006a200241d0016a10aa022002200f3a0045200241003a00442009211b200f450d02200241e0016a41086a200241386a41086a290300370300200220022903383703e0010c0c0b412d210141e9abc20021000b200220003602482002200136024c41c7acc2004122200241c8006a41ecacc200103b000b200e28029801210f0b0240200f4104470d00200e41a4016a280200410b490d000240024020022d0045450d00413121014196acc20021000c010b2002280238200228023c200228024010c0032002420037023c200241d0e1c100360238200242f5dc8de3d6ec9c98303703d00141002101200241e0016a410272410041da0010da051a200241c8006a410041840110da051a41e401102a2215450d0b20154100360200201541046a200241e0016a41dc0010db051a201541e0006a200241c8006a41840110db051a2002410036023c2002201536023820152f010622114103742112417f2100024002400340024020122001470d00201121000c020b200241d0016a201520016a41086a410810dd052214450d02200141086a2101200041016a21002014417f4a0d000b0b200242f5dc8de3d6ec9c983037025c2002200a360258200220003602542002201536024c200241003602482002200241386a360250200241003602e801200242013703e0014101102a2201450d0c200141003a000020024281808080103702e401200220013602e001410f200241e0016a10670240024020022802e401221420022802e80122016b410f490d002001410f6a210020022802e00121140c010b2001410f6a22002001490d0e201441017422152000201520004b1b22154100480d0e0240024020140d002015102a21140c010b20022802e00120142015102e21140b2014450d0d200220153602e401200220143602e0010b200220003602e801201420016a220141002900e4ec41370000200141076a41002900ebec41370000200241d0016a41086a20022802e801360200200220022903e0013703d001200241c8006a200241d0016a10aa0220024180023b0144200241e0016a41086a200241386a41086a290300370300200220022903383703e0010c0b0b412d210141e9abc20021000b200220003602482002200136024c41c7acc2004122200241c8006a41ecacc200103b000b200e41a8026a220e200b470d010c070b0b200141033a0000200241013602bc022000417f6a41034b0d01200041017422144105201441054b1b22144100480d080b200120002014102e2201450d06200220013602e001201421000b20012011360001410521140c020b0240200041034b0d00200041017422144104201441044b1b22144100480d06200120002014102e2201450d05200220013602e001201421000b20012011410274410272360000410421140c010b0240200041014b0d0020012000200041017422144102201441024b1b2214102e2201450d04200220013602e001201421000b41022114200120114102744101723b00000b200220143602bc0202400240200020146b2011490d00200021150c010b201420116a22152014490d04200041017422122015201220154b1b22154100480d04200120002015102e2201450d03200220013602e0010b2002201420116a3602bc02200120146a2013201110db051a200220153602d401200220022802e0013602d001200220022802bc023602d801200241c8006a200241d0016a10aa0220024180023b0144200241e0016a41086a200241386a41086a290300370300200220022903383703e0010c010b200241e0016a41086a200a290300370300200220022903383703e0010b2002280228200228022c200228023010c00302402007450d00200741246c21002003210103400240024020012d0000221441034b0d0002400240024020140e0404000102040b2001410c6a280200450d03200141086a280200102c0c030b2001410c6a280200450d02200141086a280200102c0c020b2001410c6a280200450d01200141086a280200102c0c010b200141086a280200450d00200141046a280200102c0b200141246a21012000415c6a22000d000b0b02402008450d002003102c0b02402004450d00200441a8026c210020064198016a2101034020011073200141a8026a2101200041d87d6a22000d000b0b02402005450d002006102c0b200241003602502002420137034820022d00ec0121004101102a2201450d002002410136024c20022002280250221441016a36025020022001360248200120146a20003a000020022d00ed01211402400240200228024c20022802502201460d00200228024821000c010b200141016a22002001490d02200141017422152000201520004b1b22154100480d020240024020010d002015102a21000c010b200228024820012015102e21000b2000450d012002201536024c20022000360248200228025021010b2002200141016a360250200020016a20143a000020022802e801200241c8006a106720022802e00122142100024020022802e4012215450d002015210120142100034020002802e40121002001417f6a22010d000b0b0240024020022802e80122130d00410021010c010b200241e0016a211041002115034002400240201520002f01064f0d0020002015410c6c6a41e0006a2112200020154103746a41086a2101201541016a21150c010b02400240200028020022010d00201b428080808070832010ad84211b41002114410021010c010b20003301044220862010ad84211b410121140b201b2116201b21090240201b422088a7220020012f0106490d0003402009221642ffffffff0f832109201441016a211420012f01042200200128020022012f01064f0d000b0b20012000410c6c6a2115200120004103746a2111200041027420016a41e8016a28020021002016a7211002402014417f6a2201450d00034020002802e40121002001417f6a22010d000b0b201541e0006a2112201141086a2101410021150b20012d0000210e02400240200228024c20022802502214460d00200228024821110c010b201441016a22112014490d042014410174220f2011200f20114b1b220f4100480d040240024020140d00200f102a21110c010b20022802482014200f102e21110b2011450d032002200f36024c20022011360248200228025021140b2002201441016a360250201120146a200e3a000020012d0001210e02400240200228024c20022802502214460d00200228024821110c010b201441016a22112014490d042014410174220f2011200f20114b1b220f4100480d040240024020140d00200f102a21110c010b20022802482014200f102e21110b2011450d032002200f36024c20022011360248200228025021140b2002201441016a360250201120146a200e3a000020012d0002210e02400240200228024c20022802502214460d00200228024821110c010b201441016a22112014490d042014410174220f2011200f20114b1b220f4100480d040240024020140d00200f102a21110c010b20022802482014200f102e21110b2011450d032002200f36024c20022011360248200228025021140b2002201441016a360250201120146a200e3a000020012d0003210e02400240200228024c20022802502214460d00200228024821110c010b201441016a22112014490d042014410174220f2011200f20114b1b220f4100480d040240024020140d00200f102a21110c010b20022802482014200f102e21110b2011450d032002200f36024c20022011360248200228025021140b2002201441016a360250201120146a200e3a000020012d0004210e02400240200228024c20022802502214460d00200228024821110c010b201441016a22112014490d042014410174220f2011200f20114b1b220f4100480d040240024020140d00200f102a21110c010b20022802482014200f102e21110b2011450d032002200f36024c20022011360248200228025021140b2002201441016a360250201120146a200e3a000020012d0005210e02400240200228024c20022802502214460d00200228024821110c010b201441016a22112014490d042014410174220f2011200f20114b1b220f4100480d040240024020140d00200f102a21110c010b20022802482014200f102e21110b2011450d032002200f36024c20022011360248200228025021140b2002201441016a360250201120146a200e3a000020012d0006210e02400240200228024c20022802502214460d00200228024821110c010b201441016a22112014490d042014410174220f2011200f20114b1b220f4100480d040240024020140d00200f102a21110c010b20022802482014200f102e21110b2011450d032002200f36024c20022011360248200228025021140b2002201441016a360250201120146a200e3a000020012d0007211102400240200228024c20022802502201460d00200228024821140c010b200141016a22142001490d042001410174220e2014200e20144b1b220e4100480d040240024020010d00200e102a21140c010b20022802482001200e102e21140b2014450d032002200e36024c20022014360248200228025021010b2002200141016a360250201420016a20113a00002012280200211120122802082201200241c8006a106702400240200228024c2212200228025022146b2001490d00200228024821120c010b201420016a220e2014490d0420124101742214200e2014200e4b1b22144100480d040240024020120d002014102a21120c010b200228024820122014102e21120b2012450d032002201436024c20022012360248200228025021140b2002201420016a360250201220146a2011200110db051a2013417f6a22130d000b20022802e801210120022802e401211520022802e00121140b200235024821092002350250211620142015200110c003200241c0026a240020092016422086840f0b1033000b1035000b5702017f027e230041306b2202240020024101410010b00220024100360228200242013703202002200241206a36022c20022002412c6a1094022002350228210320023502202104200241306a240020042003422086840b9a4205077f027e027f047e067f230041a00d6b22022400024002402001450d00200220003602380c010b200241013602380b2002200136023c200241b0076a200241386a108c02024002400240024002400240024002402002290398084203510d00200241f8006a200241b0076a41a80210db051a200241a0036a200241f8006a41a80210db051a2002200241a0036a3602c805200241b0076a200241c8056a10870120022802b8072103024020022802b407450d0020022802b007102c0b200241b0076a200241a0036a41a80210db051a200241c8056a200241b0076a10900241012100024020022d00c8054101470d00200220022d00cb053a0043200220022f00c9053b0041200241013a00400c060b200241b0076a200241c8056a41086a220141e00110db051a200241d8096a20024180086a220410ed020240024020022903d0074202520d00200241c0006a41206a22014200370300200241c0006a41186a22004280808080c000370300200241013a0068200242043703502002427f37034820024200370340200241c8056a41206a22034200370300200241c8056a41186a22054280808080c000370300200241013a00f005200242043703d8052002427f3703d005200242003703c805200241c00a6a200241c0006a200241c8056a10c503200241c0006a41286a2206200241c00a6a41286a2903003703002001200241c00a6a41206a2903003703002000200241c00a6a41186a290300370300200241c0006a41106a2207200241c00a6a41106a290300370300200241c0006a41086a2208200241c00a6a41086a290300370300200220022903c00a3703402003420037030020054280808080c000370300200241013a00f005200242043703d8052002427f3703d005200242003703c805200241f00a6a200241c0006a200241c8056a10c5032006200241f00a6a41286a2903003703002001200241f00a6a41206a2903003703002000200241f00a6a41186a2903003703002007200241f00a6a41106a2903003703002008200241f00a6a41086a290300370300200220022903f00a3703402003420037030020054280808080c000370300200241013a00f005200242043703d8052002427f3703d005200242003703c805200241a00b6a200241c0006a200241c8056a10c5032006200241a00b6a41286a2903003703002001200241a00b6a41206a2903003703002000200241a00b6a41186a2903003703002007200241a00b6a41106a2903003703002008200241a00b6a41086a290300370300200220022903a00b3703402003420037030020054280808080c000370300200241013a00f005200242043703d8052002427f3703d005200242003703c805200241e00b6a200241c0006a200241c8056a10c5032006200241e00b6a41286a2903003703002001200241e00b6a41206a2903003703002000200241e00b6a41186a2903003703002007200241e00b6a41106a2903003703002008200241e00b6a41086a290300370300200220022903e00b3703402003420037030020054280808080c000370300200241013a00f005200242043703d8052002427f3703d005200242003703c805200241900c6a200241c0006a200241c8056a10c5032006200241900c6a41286a2903003703002001200241900c6a41206a2903003703002000200241900c6a41186a2903003703002007200241900c6a41106a2903003703002008200241900c6a41086a290300370300200220022903900c3703402003420037030020054280808080c000370300200241013a00f005200242043703d8052002427f3703d005200242003703c805200241c00c6a200241c0006a200241c8056a10c5032006200241c00c6a41286a2903003703002001200241c00c6a41206a2903003703002000200241c00c6a41186a2903003703002007200241c00c6a41106a2903003703002008200241c00c6a41086a290300370300200220022903c00c3703402003420037030020054280808080c000370300200241013a00f005200242043703d8052002427f3703d005200242003703c805200241f00c6a200241c0006a200241c8056a10c5032002419c0a6a2200200241f00c6a41086a290300370200200220022903f00c3702940a200241840d6a2802002107200241f00c6a41186a2802002101200241f00c6a41206a2802002108200241940d6a280200210320022802800d2105200228028c0d210620022903980d2109200241e0096a41086a2000290200370300200220022902940a3703e0092002280280084113460d01200241003a00cb05418102210020024181023b00c905200241013a00c8050c050b20022903d809210a200241c0006a41206a22054200370300200241c0006a41186a22064280808080c000370300200241013a006820024204370350427f21092002427f37034820024200370340200241c8056a41206a22074200370300200241c8056a41186a22004280808080c000370300200241013a00f005200242043703d8052002427f3703d005200242003703c805200241e0096a200241c0006a200241c8056a10c503200241c0006a41286a2208200241e0096a41286a2903003703002005200241e0096a41206a2903003703002006200241e0096a41186a290300370300200241c0006a41106a220b200241e0096a41106a290300370300200241c0006a41086a220c200241e0096a41086a290300370300200220022903e0093703402007420037030020004280808080c000370300200241013a00f005200242043703d8052002427f3703d005200242003703c805200241900a6a200241c0006a200241c8056a10c5032008200241900a6a41286a2903003703002005200241900a6a41206a2903003703002006200241900a6a41186a290300370300200b200241900a6a41106a290300370300200c200241900a6a41086a290300370300200220022903900a37034020004200370300200241c8056a41106a2208420037030020014200370300200242003703c805200241900c6a41086a22054191b0c200ad4280808080e00084220d1002220641086a290000370300200220062900003703900c2006102c20012005290300370300200220022903900c3703c805200541acb0c200ad4280808080e000841002220641086a290000370300200220062900003703900c2006102c200820022903900c220e370300200241f00c6a41086a2001290300370300200241f00c6a41106a2201200e370300200241f00c6a41186a220620052903003703002002200e3703c00c200220022903c8053703f00c200241306a200241f00c6a41201094012002280234410020022802301bad210e024020022903d0074201520d0020022903d80722094200510d03200e200241e0076a290300220f200f200e541b221020097c2010200f7d2009827d21090b2007420037030020004280808080c000370300200241013a00f005200242043703d805200242003703c805200242002009200e7d220e200e2009561b3703d005200241c00a6a200241c0006a200241c8056a10c503200241f00c6a41286a200241c00a6a41286a290300370300200241f00c6a41206a200241c00a6a41206a2903003703002006200241c00a6a41186a2903003703002001200241c00a6a41106a290300370300200241f00c6a41086a200241c00a6a41086a290300370300200220022903c00a3703f00c20022802f8072100200241900c6a41086a2201200d1002220541086a290000370300200220052900003703900c2005102c200241c0006a41086a22062001290300370300200220022903900c37034020014197b0c200ad4280808080c001841002220541086a290000370300200220052900003703900c2005102c200241e00b6a41086a22052001290300370300200220022903900c3703e00b200241c00c6a200241b0076a109f0141c000102a2201450d0720012002290340370000200120022903e00b370010200120022900c00c370020200141086a2006290300370000200141186a2005290300370000200141286a200241c00c6a41086a290000370000200141306a200241d00c6a290000370000200141386a200241c00c6a41186a290000370000200241286a200141c000109401200228022c2105200228022821062001102c02402005410020061b220720004d0d00200220022800a00b3602d80b2002200241a30b6a2800003600db0b200241003a004320024180063b0041200241013a004020022802800d21030240200241f00c6a41186a2802002201450d002001410c6c21002003210103400240200141046a280200450d002001280200102c0b2001410c6a2101200041746a22000d000b0b0240200241840d6a280200450d002003102c0b200228028c0d21030240200241940d6a2802002201450d002001410c6c21002003210103400240200141046a280200450d002001280200102c0b2001410c6a2101200041746a22000d000b0b200241900d6a280200450d062003102c0c060b410c102a2205450d074104102a2201450d072002420437024420022001360240200241b0076a200241c0006a1091010240024020022802442206200228024822016b4104490d00200228024021080c010b200141046a22082001490d09200641017422012008200120084b1b22014100480d090240024020060d002001102a21080c010b200228024020062001102e21080b2008450d082002200136024420022008360240200228024821010b410421062002200141046a360248200820016a2000360000200241c00c6a41086a2208200228024822013602002002200229034022093703c00c200541086a20013602002005200937020041002101200720004f0d03410c102a2206450d074104102a2201450d072002420437024420022001360240200241b0076a200241c0006a1091010240024020022802442207200228024822016b4104490d00200228024021070c010b200141046a220b2001490d0920074101742201200b2001200b4b1b22014100480d090240024020070d002001102a21070c010b200228024020072001102e21070b2007450d082002200136024420022007360240200228024821010b2002200141046a360248200720016a2000417f6a360000200241c00c6a41086a200228024822013602002002200229034022093703c00c200641086a200136020020062009370200410121010c030b200241c8056a20024184086a10c603024020022d00c8054101470d0020022f00c90520022d00cb054110747221000c040b200241900c6a41286a2200200241c8056a41306a290300370300200241900c6a41206a220b200241c8056a41286a220c290300370300200241900c6a41186a2211200241c8056a41206a2212290300370300200241900c6a41106a2213200241c8056a41186a2214290300370300200241900c6a41086a2215200241c8056a41106a2216290300370300200220022903d0053703900c200241f00c6a41086a200241e0096a41086a290300370300200241940d6a2003360200200241f00c6a41206a2008360200200241f00c6a41186a2001360200200241840d6a2007360200200220022903e0093703f00c200220093703980d2002200636028c0d200220053602800d200c20002903003703002012200b2903003703002014201129030037030020162013290300370300200241c8056a41086a2015290300370300200220022903900c3703c805200241c00c6a200241f00c6a200241c8056a10c503200241c0006a41086a20022903c00c370300200241c0006a41106a200241c00c6a41086a290300370300200241c0006a41186a200241c00c6a41106a290300370300200241c0006a41206a200241c00c6a41186a290300370300200241c0006a41286a200241c00c6a41206a290300370300200241c0006a41306a200241c00c6a41286a290300370300200241003a00400c040b20024184016a4104360200200241b4036a4102360200200242023702a40320024184adc2003602a0032002410436027c200241e8aec200360278200241003602cc05200241dc9ec6003602c8052002200241f8006a3602b0032002200241c8056a36028001200241a0036a4194adc2001041000b41c090c600411941dc90c6001036000b200241c8056a41206a428180808010370300200241c8056a41186a2001360200200241dc056a2001360200200220022800a00b3602d80b2002200241a00b6a41036a2800003600db0b200241f4056a20022800db0b360000200241013a00f005200220053602e405200220063602d8052002427f3703d0052002200a42ffffffff0f833703c805200220022802d80b3600f105200241f00a6a200241f00c6a200241c8056a10c503200241f00c6a41286a200241f00a6a41286a290300370300200241f00c6a41206a200241f00a6a41206a290300370300200241f00c6a41186a2207200241f00a6a41186a290300370300200241f00c6a41106a200241f00a6a41106a290300370300200241f00c6a41086a200241f00a6a41086a290300370300200220022903f00a3703f00c200241c0006a41186a220b4200370300200241c0006a41106a22064200370300200241c0006a41086a2200420037030020024200370340200241900c6a41086a22014191b0c200ad4280808080e00084220e1002220541086a290000370300200220052900003703900c2005102c20002001290300370300200220022903900c37034020014184c3c200ad42808080808002841002220541086a290000370300200220052900003703900c2005102c200620022903900c220937030020082000290300370300200241c00c6a41106a22002009370300200241c00c6a41186a22082001290300370300200220093703e00b200220022903403703c00c200241206a200241c00c6a41201094010240417f2002280224410020022802201b220120036a220520052001491b4280808080f28ba80942808080c0f588fe06200a422088a7221141ff017122051b22092009428094ebdc038022094280ec94a37c7e7c4280cab5ee01562009a76a4b0d002008420037030020004200370300200241c00c6a41086a22084200370300200242003703c00c200241900c6a41086a2201200e1002220c41086a2900003703002002200c2900003703900c200c102c20082001290300370300200220022903900c2209370340200220093703c00c200141e0c2c200ad4280808080b002841002220c41086a2900003703002002200c2900003703900c200c102c200020022903900c2209370300200241c0006a41086a200829030037030020062009370300200b2001290300370300200220093703e00b200220022903c00c370340200241186a200241c0006a4120109401417f200228021c410020022802181b2206418094ebdc034180afd0e50220051b2201200aa7220020012000491b6a220520052006491b20014b0d00200241c8056a41206a22014200370300200241c8056a41186a22054280808080c000370300200220022800d80b3602d00b2002200241d80b6a41036a2800003600d30b200241f4056a220620022800d30b360000200242043703d805200241013a00f0052002427f3703d0052002427f200a42ffffffff0f83201141ff01714101461b3703c805200220022802d00b3600f105200241a00b6a200241f00c6a200241c8056a10c503200241f00c6a41286a200241a00b6a41286a290300370300200241f00c6a41206a200241a00b6a41206a290300370300200241f00c6a41186a2207200241a00b6a41186a290300370300200241f00c6a41106a200241a00b6a41106a290300370300200241f00c6a41086a200241a00b6a41086a290300370300200220022903a00b3703f00c200241086a20032000200a422888a720022903e8072209200241f0076a290300220e10ac02200241c00c6a200241b0076a2002290308220a200241086a41086a290300220d410141112009200e84501b10ac01024020022802c00c4101470d00200241003a004320024180023b0041200241013a004020022802800d2103024020072802002201450d002001410c6c21002003210103400240200141046a280200450d002001280200102c0b2001410c6a2101200041746a22000d000b0b0240200241840d6a280200450d002003102c0b200228028c0d21030240200241940d6a2802002201450d002001410c6c21002003210103400240200141046a280200450d002001280200102c0b2001410c6a2101200041746a22000d000b0b200241900d6a280200450d032003102c0c030b20022903c80c200241c00c6a41106a22002903001085032001420037030020054280808080c0003703002006200241900c6a41036a280000360000200242043703d805200220022800900c3600f1052002427f3703d0052002200a427f200d501b3703c805200241013a00f005200241e00b6a200241f00c6a200241c8056a10c503200241c00c6a41286a200241e00b6a41286a290300370300200241c00c6a41206a200241e00b6a41206a290300370300200241c00c6a41186a200241e00b6a41186a2903003703002000200241e00b6a41106a290300370300200241c00c6a41086a200241e00b6a41086a290300370300200220022903e00b3703c00c200241c8056a200410c703024020022d00c8054101470d00200220022d00cb053a0043200220022f00c9053b0041200241013a004020022802d00c21030240200241d80c6a2802002201450d002001410c6c21002003210103400240200141046a280200450d002001280200102c0b2001410c6a2101200041746a22000d000b0b0240200241d40c6a280200450d002003102c0b20022802dc0c21030240200241e40c6a2802002201450d002001410c6c21002003210103400240200141046a280200450d002001280200102c0b2001410c6a2101200041746a22000d000b0b200241e00c6a280200450d032003102c0c030b200241f00c6a41286a200241c8056a41306a290300370300200241f00c6a41206a200241c8056a41286a290300370300200241f00c6a41186a200241c8056a41206a290300370300200241f00c6a41106a200241c8056a41186a290300370300200241f00c6a41086a200241c8056a41106a290300370300200220022903d0053703f00c200241900c6a200241c00c6a200241f00c6a10c503200241c0006a41086a20022903900c370300200241c0006a41106a200241900c6a41086a290300370300200241c0006a41186a200241900c6a41106a290300370300200241c0006a41206a200241900c6a41186a290300370300200241c0006a41286a200241900c6a41206a290300370300200241c0006a41306a200241900c6a41286a290300370300200241003a00400c020b200220022800d80b3602d00b2002200241d80b6a41036a2800003600d30b200241003a0043200241800c3b0041200241013a004020022802800d2103024020072802002201450d002001410c6c21002003210103400240200141046a280200450d002001280200102c0b2001410c6a2101200041746a22000d000b0b0240200241840d6a280200450d002003102c0b200228028c0d21030240200241940d6a2802002201450d002001410c6c21002003210103400240200141046a280200450d002001280200102c0b2001410c6a2101200041746a22000d000b0b200241900d6a280200450d012003102c0c010b200241013a0040200220003b0041200220004110763a004302402001450d002001410c6c21002005210103400240200141046a280200450d002001280200102c0b2001410c6a2101200041746a22000d000b0b02402007450d002005102c0b02402003450d002003410c6c21002006210103400240200141046a280200450d002001280200102c0b2001410c6a2101200041746a22000d000b0b2008450d002006102c0b200410920220022d004021000b4101102a2201450d00200242013702b407200220013602b00702400240200041ff01714101460d00200241013602b807200141003a0000200241c8006a2903002109024020022802b4072200417f6a41074b0d00200041017422034109200341094b1b22034100480d04200120002003102e2201450d03200220033602b407200220013602b0070b200241093602b80720012009370001200241d8006a2802002100200241e0006a2802002201200241b0076a106702402001450d0020002001410c6c6a2108034020002802002106200041086a2802002201200241b0076a10670240024020022802b407220520022802b80722036b2001490d0020022802b00721050c010b200320016a22072003490d06200541017422042007200420074b1b22074100480d060240024020050d002007102a21050c010b20022802b00720052007102e21050b2005450d05200220073602b407200220053602b0070b2002200320016a3602b807200520036a2006200110db051a2000410c6a22002008470d000b0b200241e4006a2802002100200241ec006a2802002201200241b0076a10670240024020010d0020022802b407210620022802b80721080c010b20002001410c6c6a2104034020002802002107200041086a2802002201200241b0076a10670240024020022802b407220620022802b80722036b2001490d0020022802b00721050c010b200320016a22052003490d06200641017422082005200820054b1b22084100480d060240024020060d002008102a21050c010b20022802b00720062008102e21050b2005450d05200220083602b407200220053602b007200821060b2002200320016a22083602b807200520036a2007200110db051a2000410c6a22002004470d000b0b200241d0006a290300210902400240200620086b4108490d0020022802b00721010c010b200841086a22012008490d04200641017422002001200020014b1b22004100480d040240024020060d002000102a21010c010b20022802b00720062000102e21010b2001450d03200220003602b407200220013602b0070b2002200841086a3602b807200120086a2009370000200241f0006a2d00002105024020022802b40720022802b8072200470d00200041016a22032000490d04200041017422062003200620034b1b22034100480d040240024020000d002003102a21010c010b200120002003102e21010b2001450d03200220033602b407200220013602b0070b2002200041016a22033602b807200120006a20053a00000c010b200241013602b807200141013a0000200241c0006a410172200241b0076a10ba0320022802b807210320022802b00721010b2003ad4220862001ad842109024020022d00400d000240200241e0006a2802002200450d00200241d8006a28020021012000410c6c210003400240200141046a280200450d002001280200102c0b2001410c6a2101200041746a22000d000b0b0240200241dc006a280200450d002002280258102c0b0240200241ec006a2802002200450d00200241e4006a28020021012000410c6c210003400240200141046a280200450d002001280200102c0b2001410c6a2101200041746a22000d000b0b200241e8006a280200450d002002280264102c0b200241a00d6a240020090f0b1033000b1035000bc60505017f027e077f017e017f230041206b220324002002290300210420012903002105200141106a210620022802102107024002400240024002400240200141146a2802002208200141186a28020022096b200241186a280200220a490d00200628020021080c010b2009200a6a220b2009490d022008410174220c200b200c200b4b1b220bad420c7e220d422088a70d02200da7220c4100480d020240024020080d00200c102a21080c010b20062802002008410c6c200c102e21080b2008450d0120012008360210200141146a200b3602000b20082009410c6c6a2007200a410c6c10db051a200141186a2009200a6a36020020024100360218200341086a200641086a280200360200200320062902003703002001411c6a2106200228021c210b02400240200141206a2802002208200141246a28020022096b200241246a280200220a490d00200628020021080c010b2009200a6a220c2009490d022008410174220e200c200e200c4b1b220cad420c7e220d422088a70d02200da7220e4100480d020240024020080d00200e102a21080c010b20062802002008410c6c200e102e21080b2008450d012001200836021c200141206a200c3602000b427f200520047c220420042005541b210520082009410c6c6a200b200a410c6c10db051a200141246a2009200a6a36020020024100360224200341106a41086a200641086a28020036020020032006290200370310200229030822042001290308220d200d2004561b210420012d0028450d024101210120022d0028450d020c030b1033000b1035000b410021010b20002005370300200020032903003702102000200329031037021c200020013a002820002004370308200041186a200341086a280200360200200041246a200341106a41086a2802003602000240200241146a280200450d002007102c0b0240200241206a280200450d00200b102c0b200341206a24000bb91005067f017e017f017e067f230041f0006b2202240020012802202103200241306a41186a4200370300200241306a41106a22044200370300200241306a41086a2205420037030020024200370330200241e0006a41086a220641ecddc500ad4280808080f000841002220741086a290000370300200220072900003703602007102c2005200629030037030020022002290360370330200641c9f8c200ad4280808080a001841002220741086a290000370300200220072900003703602007102c200420022903602208370300200241106a41086a2005290300370300200241106a41106a2008370300200241106a41186a20062903003703002002200837035020022002290330370310200241306a200241106a412010d00120022802302206410120061b2105024002400240024002400240024002400240024020032002290234420020061b2208422088a7490d002008a7450d012005102c0c010b2003200520034105746a10cb03210602402008a7450d002005102c0b20060d010b200241306a41186a22054200370300200241306a41106a22074200370300200241306a41086a2203420037030020024200370330200241e0006a41086a220641ecddc500ad4280808080f000841002220941086a290000370300200220092900003703602009102c2003200629030037030020022002290360370330200641f3ddc500ad4280808080c001841002220941086a290000370300200220092900003703602009102c200241d0006a41086a22092006290300220837030020022002290360220a3703502004200a370000200441086a220b2008370000200241106a41086a220c2003290300370300200241106a41106a220d2007290300370300200241106a41186a220e200529030037030020022002290330370310200241086a200241106a4120109401200128021c200228020c410020022802081b220f470d0120054200370300200742003703002003420037030020024200370330200641a3dbc500ad42808080808001841002221041086a290000370300200220102900003703602010102c2003200629030037030020022002290360370330200641a0c6c500ad4280808080c000841002221041086a290000370300200220102900003703602010102c20092006290300220837030020022002290360220a3703502004200a370000200b2008370000200c2003290300370300200d2007290300370300200e200529030037030020022002290330370310200241306a200241106a10f00220022802302206410120061b210d200128022022032002290234420020061b2208422088a74f0d03200d20034105746a220e450d032002410036023820024201370330200128020021044104102a22060d020c070b20004180063b0001200041013a0000200041036a41003a00000c050b20004180063b0001200041013a0000200041036a41003a00000c040b20024284808080c0003702342002200636023020062004360000200128020421072001410c6a2802002206200241306a10670240024020022802342205200228023822046b2006490d00200228023021050c010b200420066a22092004490d032005410174220b2009200b20094b1b22094100480d030240024020050d002009102a21050c010b200228023020052009102e21050b2005450d0520022009360234200220053602300b2002200420066a360238200520046a2007200610db051a200141106a2802002104200141186a2802002206200241306a10670240024020060d002002280234210520022802382109200f21070c010b20042006410c6c6a210c03402004280200210b200441086a2802002206200241306a10670240024020022802342205200228023822036b2006490d00200228023021070c010b200320066a22072003490d05200541017422092007200920074b1b22094100480d050240024020050d002009102a21070c010b200228023020052009102e21070b2007450d072002200936023420022007360230200921050b2002200320066a2209360238200720036a200b200610db051a2004410c6a2204200c470d000b20012802202103200128021c21070b02400240200520096b4104490d00200941046a2104200228023021060c010b200941046a22042009490d03200541017422062004200620044b1b220b4100480d030240024020050d00200b102a21060c010b20022802302005200b102e21060b2006450d052002200b36023420022006360230200b21050b20022004360238200620096a200736000002400240200520046b41034d0d00200521070c010b200441046a22072004490d03200541017422092007200920074b1b22074100480d030240024020050d002007102a21060c010b200620052007102e21060b2006450d0520022007360234200220063602300b200620046a2003360000200141246a200441046aad4220862006ad84200e100c210402402007450d002006102c0b20044101460d010b20004180083b0001200041013a0000200041036a41003a00002008a7450d02200d102c0c020b410c102a2206450d024104102a2204450d0220024284808080c000370234200220043602302004200f360000200e200241306a109101200241106a41086a2002280238220436020020022002290330220a370310200641086a20043602002006200a370200200041306a41013a0000200041286a428180808010370200200041246a2006360200200041206a4100360200200041186a4204370300200041106a42e400370300200041086a427f370300200041316a2002280030360000200041346a200241336a280000360000200041003a00002008a7450d01200d102c0c010b1035000b200241f0006a24000f0b1033000bbd0502057f017e230041f0006b220224000240024020012802004111460d00200041003a0000200041306a41013a0000200041286a4200370300200041206a4280808080c000370300200041186a4204370300200041106a427f370300200041086a42003703000c010b024002400240024002400240200141086a2d00000e06050402010004050b200141c8006a21030c020b200141d0006a21030c010b200141186a21030b200241306a41186a4200370300200241306a41106a22044200370300200241306a41086a2205420037030020024200370330200241e0006a41086a220141e4d2c500ad42808080808001841002220641086a290000370300200220062900003703602006102c2005200129030037030020022002290360370330200141ecd2c500ad42808080808001841002220641086a290000370300200220062900003703602006102c200420022903602207370300200241106a41086a2005290300370300200241106a41106a2007370300200241106a41186a200129030037030020022007370350200220022903303703102002200241106a109801024020032903004280ade20420022903087d4280ade20420022802001b560d00200041003a0000200041306a41013a0000200041286a4200370300200041206a4280808080c000370300200041186a4204370300200041106a427f370300200041086a42003703000c030b200041800c3b0001200041013a0000200041036a41003a00000c020b200041003a0000200041306a41013a0000200041286a4200370300200041206a4280808080c000370300200041186a4204370300200041106a427f370300200041086a42003703000c010b200241c4006a410136020020024201370234200241fcc4c50036023020024104360214200241a4ebc3003602102002200241106a360240200241306a4184c5c5001041000b200241f0006a24000bd13b07047f017e047f017e037f027e1a7f230041e0036b2202240002400240024002400240024002400240024020014104490d0020002800002103410041002802dca1462200410120001b3602dca1460240200041014b0d000240024020000e020001000b4100419cb0c0003602e4a146410041dc9ec6003602e0a146410041023602dca1460c010b034041002802dca1464101460d000b0b10164101470d06200241a0016a41186a4200370300200241a0016a41106a22044200370300200241a0016a41086a22014200370300200242003703a001200241206a41086a220041a3dbc500ad42808080808001841002220541086a290000370300200220052900003703202005102c20012000290300370300200220022903203703a00120004187a6c500ad42808080808001841002220541086a290000370300200220052900003703202005102c200420022903202206370300200241e0006a41086a2001290300370300200241e0006a41106a2006370300200241e0006a41186a2000290300370300200220063703c803200220022903a001370360200241106a200241e0006a4120109401200228021421002002280210210141002105200241a0016a41004190aac500ad4280808080e003841017108d012000410020011b21010240024020022802a00122000d00410121040c010b20022902a4012206422088a72205450d0320002d0000220441014b0d032005417f6a2105410021070240024020040e020100010b410121070b20054104490d032000280001210502400240024020070d0020052003460d0141002104200520034f0d02410121040c020b4101210420052001490d010b410021040b200021050b200120034f0d012004450d014101102a2200450d07200041003a0000200041014105102e2200450d07200020033600012002200536026020022006370264200241a0016a200241e0006a10c90320022802a401210141004190aac500ad4280808080e0038420023502a80142208620022802a0012207ad842000ad4280808080d000841018210402402001450d002007102c0b02402005450d002006a7450d002005102c0b2000102c4101210820044101470d0620022003360218200241a0016a41186a4200370300200241a0016a41106a22094200370300200241a0016a41086a22014200370300200242003703a001200241206a41086a220041a3dbc500ad42808080808001841002220541086a290000370300200220052900003703202005102c20012000290300370300200220022903203703a001200041a0c6c500ad4280808080c000841002220541086a290000370300200220052900003703202005102c200920022903202206370300200241e0006a41086a2001290300370300200241e0006a41106a2006370300200241e0006a41186a2000290300370300200220063703c803200220022903a001370360200241a0016a200241e0006a10f00220022802a001210a20022902a401210b200241a0016a41e9dabdf30610ca0320022802a001210320022802a40121070240024020022802a80122000d004100210c4100210d0c010b20004105742201410575220c41ffffff3f71200c470d09200c41057422054100480d092005102a2208450d08200320016a210e20004105742104410021000340200320006a22012900002106200141086a290000210f200141106a2900002110200820006a220541186a200141186a290000370000200541106a2010370000200541086a200f370000200520063700002004200041206a2200470d000b200e20036b41606a41057641016a210d0b02402007450d002003102c0b200d4115490d0402404101450d00200d41017622114105742200417f4c0d002000102a2212450d08200841606a2113200841a07f6a211441042115410021164100211741002118200d2119034020192107410021194101210402402007417f6a2205450d00024002400240024002400240200820054105746a2007410574220e20086a41406a412010dd054100480d002007417e6a21032014200e6a210041002119410021010340024020032001470d00200721040c080b200141016a2101200041206a2000412010dd052105200041606a21002005417f4a0d000b200141016a21042001417f7320076a21050c010b2014200e6a210002400340024020054101470d00410021050c020b2005417f6a2105200041206a2000412010dd052101200041606a210020014100480d000b0b20072005490d012007200d4b0d03200720056b22044101762203450d002013200e6a2100200820054105746a21010340200241a0016a41186a220e200141186a221a290000370300200241a0016a41106a221b200141106a221c290000370300200241a0016a41086a221d200141086a221e290000370300200220012900003703a001200041086a221f2900002106200041106a2220290000210f200041186a2219290000211020012000290000370000201a2010370000201c200f370000201e20063700002019200e2903003700002020201b290300370000201f201d290300370000200020022903a001370000200041606a2100200141206a21012003417f6a22030d000b0b024020050d00200521190c050b0240200441094d0d00200521190c050b2007200d4b0d01200720056b2103200820054105746a210e034020072005417f6a2219490d040240200720196b22044102490d00200820054105746a2200200820194105746a2205412010dd05417f4a0d00200241a0016a41186a221d200541186a2201290000370300200241a0016a41106a221e200541106a221a290000370300200241a0016a41086a221f200541086a221b290000370300200220052900003703a00120052000290000370000201b200041086a290000370000201a200041106a2900003700002001200041186a2900003700004101211c024020044103490d00200541c0006a200241a0016a412010dd05417f4a0d0041022101200e210002400340200041186a200041386a290000370000200041106a200041306a290000370000200041086a200041286a2900003700002000200041206a221a29000037000020032001460d01200041c0006a211b2001211c201a2100200141016a2101201b200241a0016a412010dd05417f4a0d020c000b0b2001211c0b2005201c4105746a220020022903a001370000200041186a201d290300370000200041106a201e290300370000200041086a201f2903003700000b2019450d05200e41606a210e200341016a2103201921052004410a4f0d050c000b0b200520071047000b20072005417f6a2219490d010b2007200d103f000b201920071047000b024020182016470d00201641016a22002016490d0b201641017422012000200120004b1b220041ffffffff01712000470d0b200041037422014100480d0b0240024020160d002001102a21150c010b201520164103742001102e21150b2015450d0a20002116201721180b201520184103746a2200200436020420002019360200201741016a22182117024020184102490d0002400340024002400240024020152018417f6a22174103746a2200280200450d00201841037420156a220341746a2802002205200028020422014d0d000240201841024b0d0020182117410221182019450d0d0c080b20152018417d6a221d4103746a2802042200200120056a4d0d010240201841034b0d0020182117410321182019450d0d0c080b200341646a280200200020056a4d0d01201821170c060b20184103490d012000280204210120152018417d6a221d4103746a28020421000b20002001490d010b2018417e6a211d0b0240024002400240024002402018201d41016a22214b2222450d002018201d4b2223450d012015201d4103746a221e2802042224201e2802006a2200201520214103746a221f2802002220490d022000200d4b0d03200820204105746a221b201f280204221c41057422016a210320004105742105200020206b2207201c6b2200201c4f0d04201220032000410574220110db05221a20016a210402400240201c4101480d00200041014e0d010b20032100201a21010c060b201320056a21052003210003402005200041606a2203200441606a220720072003412010dd05410048220e1b2201290000370000200541186a200141186a290000370000200541106a200141106a290000370000200541086a200141086a29000037000020042007200e1b21040240201b20032000200e1b2200490d00201a21010c070b200541606a2105201a2101201a2004490d000c060b0b41d087c600202120181038000b41d087c600201d20181038000b202020001047000b2000200d103f000b2012201b200110db05221a20016a210402400240201c4101480d002007201c4a0d010b201b2100201a21010c010b200820056a210e201a2101201b2100034020002003200120032001412010dd0541004822071b2205290000370000200041186a200541186a290000370000200041106a200541106a290000370000200041086a200541086a2900003700002001200141206a20071b2101200041206a2100200341206a200320071b2203200e4f0d01200420014b0d000b0b20002001200420016b41607110db051a02402023450d00201e2020360200201e41046a2024201c6a3602002022450d02201f201f41086a20182021417f736a41037410dc051a20172118201741014d0d030c010b0b41a888c600201d20181038000b418ab4c000411d41acfec5001036000b2019450d050c000b0b103a000b200241ec006a4104360200200241b4016a4102360200200242023702a40120024184adc2003602a0012002410436026420024184afc20036026020024100360224200241dc9ec6003602202002200241e0006a3602b0012002200241206a360268200241a0016a4194adc2001041000b2000450d042006a7450d042005102c0c040b02402006a7450d002000102c0b41c8dac500ad4280808080d0058410040c030b02402016450d002015102c0b2011450d012012102c0c010b200d4102490d002008200d417f6a22014105746a21044101210503400240024002400240200d20012200417f6a2201490d00200d20016b22074102490d03200820004105746a2200200820014105746a2203412010dd05417f4a0d03200241a0016a41186a2218200341186a220e290000370300200241a0016a41106a221c200341106a221a290000370300200241a0016a41086a2215200341086a221b290000370300200220032900003703a00120032000290000370000201b200041086a290000370000201a200041106a290000370000200e200041186a2900003700004101210020074103490d02200341c0006a200241a0016a412010dd05417f4a0d0241002107200421000340200041186a200041386a290000370000200041106a200041306a290000370000200041086a200041286a2900003700002000200041206a221a29000037000020052007220e460d02200e417f6a2107200041c0006a211b201a2100201b200241a0016a412010dd05417f4a0d020c000b0b2001200d1047000b4102200e6b21000b200320004105746a220020022903a001370000200041186a2018290300370000200041106a201c290300370000200041086a20152903003700000b200441606a21042005417f6a210520010d000b0b41012100200a4101200a1b2119200b4200200a1b2206a721230240024002402006422088a722010d0041002101410021030c010b201920014105746a211b200241b8026a2125200241a0016a410272211f200241e1026a21204100211e4100212141012117410021072019210403400240024002400240200d41014b0d004100210141002103410121000240200d0e020600060b0340200241a0016a41186a200441186a290000370300200241a0016a41106a200441106a290000370300200241a0016a41086a200441086a290000370300200220042900003703a0012008200241a0016a412010dd05450d03200741016a2107201b200441206a2204470d000c020b0b0340200241a0016a41186a200441186a290000370300200241a0016a41106a200441106a290000370300200241a0016a41086a200441086a290000370300200220042900003703a001200441206a21040240200d450d0041002100200d210103402001410176220520006a22032000200820034105746a200241a0016a412010dd054101481b2100200120056b220141014b0d000b200820004105746a200241a0016a412010dd05450d040b200741016a21072004201b470d000b0b201e210120212103201721000c030b200441206a2104410021000b0240200d20004b0d0041d087c6002000200d1038000b2002200736021c200241a0016a41186a22054200370300200241a0016a41106a22034200370300200241a0016a41086a22014200370300200242003703a001200241206a41086a221d41ecddc500ad4280808080f0008422101002220e41086a2900003703002002200e290000370320200e102c2001201d290300370300200220022903203703a001201d41c9f8c200ad4280808080a001841002220e41086a2900003703002002200e290000370320200e102c200241c8036a41086a2218201d290300220637030020022002290320220f3703c8032009200f370000200941086a221c2006370000200241e0006a41086a22122001290300370300200241e0006a41106a22162003290300370300200241e0006a41186a22132005290300370300200220022903a001370360200241a0016a200241e0006a412010d00120022802a001220e4101200e1b211a024002400240200720022902a4014200200e1b2206422088a7490d002006a7450d01201a102c0c010b2007201a20074105746a10cb03210e02402006a7450d00201a102c0b200e0d010b200241a0016a10cc030240024002400240024020022802a001220a450d0020022802b401212420022802b001212620022802ac01211420022802a801212220022802a401212720022802182111200542003703002003420037030020014200370300200242003703a001201d20101002220e41086a2900003703002002200e290000370320200e102c2001201d290300370300200220022903203703a001201d41f3ddc500ad4280808080c001841002220e41086a2900003703002002200e290000370320200e102c2018201d290300220637030020022002290320220f3703c8032009200f370000201c2006370000201220012903003703002016200329030037030020132005290300370300200220022903a001370360200241086a200241e0006a4120109401200228020c212820022802082129200228021c212a200242013703a001200241003602a8014104102a2201450d0a20024284808080c0003702a401200220013602a001200120113600002022200241a0016a10670240024020022802a401220520022802a80122016b2022490d0020022802a00121050c010b200120226a22032001490d0c2005410174220e2003200e20034b1b22034100480d0c0240024020050d002003102a21050c010b20022802a00120052003102e21050b2005450d0b200220033602a401200220053602a0010b2002200120226a3602a801200520016a200a202210db051a2024200241a0016a10672024450d0120142024410c6c6a211520142105034020052802002118200541086a2802002201200241a0016a10670240024020022802a401220e20022802a80122036b2001490d0020022802a001211a0c010b200320016a221a2003490d0d200e410174221c201a201c201a4b1b221c4100480d0d02400240200e0d00201c102a211a0c010b20022802a001200e201c102e211a0b201a450d0c2002201c3602a4012002201a3602a001201c210e0b2002200320016a221c3602a801201a20036a2018200110db051a2005410c6a22052015470d000c030b0b410221050c020b20022802a401210e20022802a801211c0b02400240200e201c6b4104490d0020022802a00121010c010b201c41046a2201201c490d09200e41017422052001200520014b1b22054100480d0902400240200e0d002005102a21010c010b20022802a001200e2005102e21010b2001450d08200220053602a401200220013602a0012005210e0b2002201c41046a22053602a8012001201c6a2028410020291b221a36000002400240200e20056b41034d0d00200e21030c010b200541046a22032005490d09200e41017422182003201820034b1b22034100480d0902400240200e0d002003102a21010c010b2001200e2003102e21010b2001450d08200220033602a401200220013602a0010b200120056a202a360000200241a0016a41e9dabdf306200820004105746a2001201c41086a10cd0320022d00a0014101460d0102402003450d002001102c0b02402027450d00200a102c0b02402024450d002024410c6c21012014210003400240200041046a280200450d002000280200102c0b2000410c6a2100200141746a22010d000b0b410121052026450d002014102c0b4100210102402023450d002019102c0b20212103201721000c040b201d201f41086a290000370300200241206a41106a2200201f41106a290000370300200241206a41186a2205201f41186a290000370300200241206a41206a220e201f41206a290000370300200241206a41286a2218201f41286a290000370300200241206a41306a221c201f41306a290000370300200241206a41376a2215201f41376a2900003700002002201f29000037032020022d00a101212802402003450d002001102c0b200241e0006a41376a22012015290000370000200241e0006a41306a2203201c290300370300200241e0006a41286a221c2018290300370300200241e0006a41206a2218200e29030037030020132005290300370300201620002903003703002012201d29030037030020022002290320370360024041002802d8a1464103490d002002412a3602d4032002412a3602cc032002200241186a3602d00320022002411c6a3602c80341002802e4a146210041002802e0a146210541002802dca146210e200241a7033602e001200242b5808080103703d801200241d8aac5003602d401200242103702cc01200241c8aac5003602c801200242023703c001200242023703b001200241b0aac5003602ac01200241083602a801200241c0aac5003602a401200241033602a001200041d4b3c000200e410246220e1b28021021002002200241c8036a3602bc01200541ecb3c000200e1b200241a0016a20001102000b20202002290360370000202041086a2012290300370000202041106a2016290300370000202041186a2013290300370000202041206a2018290300370000202041286a201c290300370000202041306a2003290300370000202041376a2001290000370000200220283a00e0022002202a3602dc022002201a3602d802200220243602d402200220263602d002200220143602cc02200220223602c802200220273602c4022002200a3602c002200220113602bc02200241133602b80220024202370388022002200241a0016a3602dc03200241c8036a200241dc036a10870120022802c80320022802cc0320022802d00310cf03210020251092020240201e2021470d00201e41016a2201201e490d07201e41017422052001200520014b1b22214100480d0702400240201e0d002021102a21170c010b2017201e2021102e21170b2017450d060b2017201e6a4103410420001b3a0000201e41016a211e0b200741016a2107201e210120212103201721002004201b470d000b0b02402023450d002019102c0b4104210502400240024002402001450d00024020002d00002207417c6a220441014b0d0020040e020201020b200721050b20030d010c020b0240024020014101470d00410421050c010b20002d00012205417c6a220441014b0d0041042105024020040e020001000b4102210403402004450d07024020012004470d00410421050c020b200020046a2107200441016a21044104210520072d000022074104460d000b20074105460d00200721050b2003450d010b2000102c0b4101210120054104470d00200228021821014101102a2200450d02200041013a0000200041014105102e2200450d022000200136000141004190aac500ad4280808080e003842000ad4280808080d0008410192000102c200c450d012008102c0c010b0240200c450d002008102c0b02402001200345720d002000102c0b412e210341f5dac5002100200241c8036a2101024002400240024020050e0400010203000b412d210341c8dac5002100200241206a21010c020b411f210341a9dac5002100200241e0006a21010c010b41fbd9c5002100200241a0016a21010b20012003360204200120003602002003ad4220862000ad8410040b200241e0036a240042010f0b1033000b1035000bff0201067f230041106b220224000240024002400240024002400240200128020022030d00410121040c010b0240200141086a28020041056a2204417f4c0d0020040d0120024100360208200242013703000c020b103a000b2004102a2205450d04200241003602082002200436020420022005360200024020030d00200541003a0000200241013602080c030b20040d010b4101102a2205450d0320024101360204200220053602000b200541013a000020024101360208200141086a2802002204200210670240024020022802042201200228020822056b2004490d00200228020021010c010b200520046a22062005490d02200141017422072006200720064b1b22064100480d020240024020010d002006102a21010c010b200228020020012006102e21010b2001450d0320022006360204200220013602000b2002200520046a360208200120056a2003200410db051a0b20002002290300370200200041086a200241086a280200360200200241106a24000f0b1035000b1033000bfd0403017f017e0a7f230041e0006b220224002002200136020c20022002410c6a102322034220883e0214200220033e02102002200241106a1075024020022802000d0002400240200228021422044160712205417f4c0d002002280204210602400240200441057622010d00410121070c010b2005102a2207450d020b2001ad2103024002402006450d0041002108034020042109200241003a0058200841016a210841002101024002400240034020092001460d01200241386a20016a200228021022052d00003a00002002200541016a3602102002200141016a22053a00582005210120054120470d000b200241186a41186a220a200241386a41186a290300370300200241186a41106a220b200241386a41106a290300370300200241186a41086a220c200241386a41086a290300370300200220022903383703182003a72003422088a72201470d020240200141016a22042001490d002001410174220d20042004200d491b220441ffffff3f712004470d002004410574220d41004e0d020b1035000b200241003602140240200141ff0171450d00200241003a00580b2003a7450d072007102c0c070b0240024020010d00200d102a21070c010b20072001410574200d102e21070b2007450d052003428080808070832004ad8421030b200920056b2104200720014105746a22012002290318370000200141186a200a290300370000200141106a200b290300370000200141086a200c29030037000020034280808080107c210320082006470d000b2002200920056b3602140c010b2007450d030b2000200337020420002007360200200241e0006a24000f0b103a000b1033000b41d88bc600412e200241386a41c88bc600103b000bd90b04067f017e067f017e23004190016b22022400200241f0006a41186a22034200370300200241f0006a41106a22044200370300200241f0006a41086a2205420037030020024200370370200241e0006a41086a220641ecddc500ad4280808080f000841002220741086a290000370300200220072900003703602007102c2005200629030037030020022002290360370370200641f3ddc500ad4280808080c001841002220741086a290000370300200220072900003703602007102c200420022903602208370300200241306a41086a22092005290300370300200241306a41106a220a2008370300200241306a41186a220b20062903003703002002200837035020022002290370370330200241186a200241306a4120109401200228021c210c2002280218210d200641a3dbc500ad42808080808001841002220741086a290000370300200220072900003703602007102c200241206a41086a220e200629030037030020022002290360370320200641abdbc500ad4280808080a002841002220741086a290000370300200220072900003703602007102c200241d0006a41086a22072006290300370300200220022903603703502002200c4100200d1b220c3602602003200241e0006aad220f4280808080c0008422081006220641186a2900003703002004200641106a2900003703002005200641086a290000370300200220062900003703702006102c200b2003290300370300200a20042903003703002009200529030037030020022002290370370330024041c000102a2206450d00200620022903203700002006200229035037001020062002290330370020200641086a200e290300370000200641186a2007290300370000200641286a2009290300370000200641306a200a290300370000200641386a200b29030037000020022000360260200320081006220741186a2900003703002004200741106a2900003703002005200741086a290000370300200220072900003703702007102c200b2003290300370300200a20042903003703002009200529030037030020022002290370370330200641c000418001102e2206450d0020062002290330370040200641d8006a200241306a41186a2203290300370000200641d0006a200241306a41106a2207290300370000200641c8006a200241306a41086a220929030037000041012105200241106a200641e000410141004100109701200228021021042006102c024020044101460d00200241e0006a41086a220641a3dbc500ad42808080808001841002220541086a290000370300200220052900003703602005102c200241206a41086a20062903003703002002200229036037032020064182aac500ad4280808080e001841002220541086a290000370300200220052900003703602005102c200241d0006a41086a2006290300370300200220022903603703502002200c360260200241f0006a41186a2205200f4280808080c000841006220641186a290000370300200241f0006a41106a2204200641106a290000370300200241f0006a41086a220a200641086a290000370300200220062900003703702006102c20032005290300370300200720042903003703002009200a2903003703002002200229037037033041c000102a2206450d01200620022903203700002006200229035037001020062002290330370020200641086a200241206a41086a290300370000200641186a200241d0006a41086a290300370000200641286a200241306a41086a290300370000200641306a200241306a41106a290300370000200641386a200241306a41186a290300370000200241f0006a2001109f01200641c000418001102e2206450d0120062002290070370040200641d8006a200241f0006a41186a290000370000200641d0006a200241f0006a41106a290000370000200641c8006a200241f0006a41086a290000370000200241086a200641e000109401200228020c2105200228020821042006102c200541004720044100477121050b20024190016a240020050f0b1033000bcb0405017f017e0b7f017e017f230041206b22012400200110222202a7220336020820012002422088a7220436020c02402004450d0020032d0000210520012004417f6a36020c2001200341016a360208200541014b0d00024002400240024002400240024020050e020001000b200141106a200141086a107720012802102206450d06200141186a2802002107200128021421082001200141086a107520012802000d05200128020c410c6e2209410c6c2203417f4c0d022001280204210a0240024020030d004104210b0c010b2003102a220b450d040b02400240200a450d004100210c41002104410021050340200141106a200141086a10772001280210220d450d02200541016a210320012902142102024020052009470d00200c2003200c20034b1b2209ad420c7e220e422088a70d08200ea7220f4100480d080240024020050d00200f102a210b0c010b200b2004200f102e210b0b200b450d070b200b20046a2205200d360200200541046a2002370200200c41026a210c2004410c6a210420032105200a2003470d000b0b200b450d0620060d020c070b02402005450d00200b210303400240200341046a280200450d002003280200102c0b2003410c6a2103200441746a22040d000b0b2009450d05200b102c0c050b410021060b2000200836020420002006360200200041146a200a360200200041106a20093602002000410c6a200b360200200041086a2007360200200141206a24000f0b103a000b1033000b1035000b2008450d002006102c0b41d88bc600412e200141106a41888cc600103b000b8e0402017f017e23004190016b22052400200520013602040240200541046a20022004ad4220862003ad8410242206422088a72201450d002006a722042d0000220341014b0d00410021020240024020030e020100010b41002102200541003a008801200441016a21042001417f6a21010340024020012002470d00200241ff0171450d03200541003a0088010c030b200541c8006a20026a200420026a2d00003a00002005200241016a22033a00880120032102200341c000470d000b200541086a41386a200541c8006a41386a290300370300200541086a41306a200541c8006a41306a290300370300200541086a41286a200541c8006a41286a290300370300200541086a41206a200541c8006a41206a290300370300200541086a41186a200541c8006a41186a290300370300200541086a41106a200541c8006a41106a290300370300200541086a41086a200541c8006a41086a29030037030020052005290348370308410121020b200020023a000020002005290308370001200041096a200541106a290300370000200041116a200541186a290300370000200041196a200541206a290300370000200041216a200541286a290300370000200041296a200541306a290300370000200041316a200541386a290300370000200041396a200541c0006a29030037000020054190016a24000f0b41d88bc600412e200541c8006a41888cc600103b000baf0201037f23004180016b2202240002400240024002400240200128020022034110710d002000280200210420034120710d012004ad41012001104221000c020b20002802002104410021000340200220006a41ff006a2004410f712203413072200341d7006a2003410a491b3a00002000417f6a2100200441047622040d000b20004180016a22044181014f0d022001410141b087c0004102200220006a4180016a410020006b104521000c010b410021000340200220006a41ff006a2004410f712203413072200341376a2003410a491b3a00002000417f6a2100200441047622040d000b20004180016a22044181014f0d022001410141b087c0004102200220006a4180016a410020006b104521000b20024180016a240020000f0b20044180011047000b20044180011047000b7603017f017e017f230041106b220324000240024002402002ad4220862000ad8410212204428080808010540d00410121022004a72d0000220541014b0d0020050e020102010b41d88bc600412e200341086a41888cc600103b000b410021020b02402001450d002000102c0b200341106a240020020b950703067f067e017f230041e0006b220224002002411436020c200241b5b5c000360208200241106a41b5b5c000ad4280808080c002841003108d01024002400240024020022802102203450d00200228021421042002200241186a2802002205360224200220033602200240024002402005450d0020022005417f6a3602242002200341016a36022020032d00002105200241c8006a200241206a107420022802482206450d00200228024c2107200541ff01714101460d012007450d002006102c0b20024100360230200242013703282002410b36023c2002200241086a3602382002200241286a36024441012105200241dc006a41013602002002420137024c200241d0b0c2003602482002200241386a360258200241c4006a41c49ac500200241c8006a10391a200235023042208620023502288410040240200228022c450d002002280228102c0b410221070c010b200241d0006a3502004220862007ad84210841012107410021050b02402004450d002003102c0b20050d0020074101460d01024020062802082205ad220942287e220a422088a70d00200aa72204417f4c0d00200628020021030240024020040d00410821060c010b2004102a2206450d040b0240024020050d004200210a0c010b200541286c21044200210a200621050340200341086a2903002108200341106a290300210b200341186a290300210c2003290300210d200541206a200341206a290300370300200541186a200c370300200541106a200b370300200541086a20083703002005200d370300200541286a2105200a4280808080107c210a200341286a2103200441586a22040d000b0b200a20098421080c020b103a000b42002108410821060b20024100360250200242013703482008422088a72203200241c8006a106702402003450d002006200341286c6a210e2006210503402005200241c8006a109101200541206a290300210a02400240200228024c2204200228025022036b4108490d00200228024821040c010b200341086a22072003490d04200441017422032007200320074b1b22034100480d040240024020040d002003102a21040c010b200228024820042003102e21040b2004450d032002200336024c20022004360248200228025021030b2002200341086a360250200420036a200a370000200e200541286a2205470d000b0b2002350250422086200235024884210a02402008a7450d002006102c0b200241e0006a2400200a0f0b1033000b1035000b9e0e06057f017e017f017e037f017e230041c0016b22022400200241086a41186a22034200370300200241086a41106a22044200370300200241086a41086a2205420037030020024200370308200241f8006a41086a220641bac6c500ad4280808080c0008422071002220841086a290000370300200220082900003703782008102c2005200629030037030020022002290378370308200641c8c6c500ad4280808080b001841002220841086a290000370300200220082900003703782008102c200420022903782209370300200241a0016a41086a220a2005290300370300200241a0016a41106a220b2009370300200241a0016a41186a220c200629030037030020022009370358200220022903083703a001200241086a200241a0016a10ff0220022802082108200229020c210920034200370300200442003703002005420037030020024200370308200620071002220441086a290000370300200220042900003703782004102c2005200629030037030020022002290378370308200641e9c6c500ad4280808080a001841002220441086a290000370300200220042900003703782004102c200320062903002207370300200a2005290300370300200b2002290378220d370300200c20073703002002200d370358200220022903083703a001200241f8006a200241a0016a10800320022d00782106200c20024191016a290000370300200b20024189016a290000370300200a20024181016a290000370300200220022900793703a0012009420020081b21092008410820081b21050240024020064101460d00200241d8006a41186a4200370300200241d8006a41106a4200370300200241d8006a41086a4200370300200242003703580c010b200241d8006a41186a200c290300370300200241d8006a41106a200b290300370300200241d8006a41086a200a290300370300200220022903a0013703580b2002412c6a2009370200200241086a41186a42043703002002413c6a200241d8006a41086a290300370200200241c4006a200241e8006a290300370200200241cc006a200241d8006a41186a2903003702002002200536022820024201370318200242c801370310200242b81737030820022002290358370234200241013a0054200241003602800120024201370378024002404108102a2206450d002002410836027c2002200228028001220541086a3602800120022006360278200620056a42b8173700002002290310210902400240200228027c220520022802800122066b4108490d00200228027821050c010b200641086a22082006490d02200541017422062008200620084b1b22064100480d020240024020050d002006102a21050c010b200228027820052006102e21050b2005450d012002200636027c2002200536027820022802800121060b2002200641086a36028001200520066a20093700002002290318210902400240200228027c220520022802800122066b4108490d00200228027821050c010b200641086a22082006490d02200541017422062008200620084b1b22064100480d020240024020050d002006102a21050c010b200228027820052006102e21050b2005450d012002200636027c2002200536027820022802800121060b2002200641086a36028001200520066a20093700002002290320210902400240200228027c220520022802800122066b4108490d00200228027821050c010b200641086a22082006490d02200541017422062008200620084b1b22064100480d020240024020050d002006102a21050c010b200228027820052006102e21050b2005450d012002200636027c2002200536027820022802800121060b2002200641086a36028001200520066a200937000020022802282105200241086a41286a2802002206200241f8006a106702402006450d002005200641286c6a210b03402005200241f8006a109101200541206a290300210902400240200228027c220820022802800122066b4108490d00200228027821080c010b200641086a220a2006490d0420084101742206200a2006200a4b1b22064100480d040240024020080d002006102a21080c010b200228027820082006102e21080b2008450d032002200636027c2002200836027820022802800121060b2002200641086a36028001200820066a2009370000200b200541286a2205470d000b0b200241346a200241f8006a10ba0220022d0054210802400240200228027c2002280280012206460d00200228027821050c010b200641016a22052006490d022006410174220a2005200a20054b1b220a4100480d020240024020060d00200a102a21050c010b20022802782006200a102e21050b2005450d012002200a36027c2002200536027820022802800121060b2002200641016a36028001200520066a20083a000020023502800142208620023502788421090240200228022c450d002002280228102c0b200241c0016a240020090f0b1033000b1035000bd90904057f017e097f017e230041b0016b2202240020024188016a41186a420037030020024188016a41106a2203420037030020024188016a41086a220442003703002002420037038801200241e8006a41086a2205418ec6c500ad4280808080a002841002220641086a290000370300200220062900003703682006102c200420052903003703002002200229036837038801200541a0c6c500ad4280808080c000841002220641086a290000370300200220062900003703682006102c200320022903682207370300200241106a41086a2004290300370300200241106a41106a2007370300200241106a41186a2005290300370300200220073703302002200229038801370310200241203602442002200241106a360240200241c8006a200241106aad42808080808004841003108d010240024002400240200228024822080d00410021030c010b200228024c21092002200241c8006a41086a28020036025c20022008360258200241086a200241d8006a107502400240024020022802080d00200228025c22054160712204417f4c0d04200228020c210a024002402005410576220b0d00410121030c010b2004102a2203450d060b0240200a450d004100210c034020052106200241003a00a801200c220d41016a210c41002105024002400240034020062005460d0120024188016a20056a200228025822042d00003a00002002200441016a3602582002200541016a22043a00a8012004210520044120470d000b200241e8006a41186a220e20024188016a41186a290300370300200241e8006a41106a220f20024188016a41106a290300370300200241e8006a41086a221020024188016a41086a2903003703002002200229038801370368200b200d470d020240200d4101742205200c2005200c4b1b220b41ffffff3f71200b470d00200b410574220541004e0d020b1035000b2002410036025c0240200541ff0171450d00200241003a00a8010b20024100360230200b450d052003102c0c050b02400240200d0d002005102a21030c010b2003200d4105742005102e21030b2003450d080b200620046b21052003200d4105746a220d2002290368370000200d41186a200e290300370000200d41106a200f290300370000200d41086a2010290300370000200c200a470d000b200241386a200a3602002002200b360234200220033602302002200620046b36025c200229023421070c030b200241386a200a3602002002200b360234200220033602302003450d01200229023421070c020b200241003602300b4100210320024100360270200242013703682002410b3602342002200241c0006a3602302002200241e8006a3602642002419c016a41013602002002420137028c01200241d0b0c200360288012002200241306a36029801200241e4006a41c49ac50020024188016a10391a200235027042208620023502688410040240200228026c450d002002280268102c0b0b2009450d002008102c0b200241003602900120024201370388012007420020031b2207422088a7220520024188016a10672003410120031b210602402005450d0020054105742104200621050340200520024188016a109101200541206a2105200441606a22040d000b0b20023502900142208620023502880184211102402007a7450d002006102c0b200241b0016a240020110f0b103a000b1033000bbd0503037f047e027f23004190016b2202240041002103200241003a00482000410120011b2104024002400240034020012003460d01200241286a20036a200420036a2d00003a00002002200341016a22003a00482000210320004120470d000b200241086a41186a200241286a41186a22012903002205370300200241086a41106a200241286a41106a22042903002206370300200241086a41086a200241286a41086a22002903002207370300200220022903282208370308200241d0006a41186a2005370300200241d0006a41106a2006370300200241d0006a41086a20073703002002200837035020004191b0c200ad4280808080e000841002220341086a290000370300200220032900003703282003102c200241f0006a41086a220920002903003703002002200229032837037020004197b0c200ad4280808080c001841002220341086a290000370300200220032900003703282003102c20024180016a41086a220a20002903003703002002200229032837038001200241286a200241d0006a109f0141c000102a22030d010c020b0240200341ff0171450d00200241003a00480b2002413c6a4102360200200241dc006a41043602002002420237022c20024184adc200360228200241043602542002419cafc2003602502002410036020c200241dc9ec6003602082002200241d0006a3602382002200241086a360258200241286a4194adc2001041000b20032002290370370000200320022903800137001020032002290028370020200341086a2009290300370000200341186a200a290300370000200341286a2000290000370000200341306a2004290000370000200341386a20012900003700002002200341c00010940120022802042100200228020021012003102c4104102a2203450d0020032000410020011b36000020024190016a24002003ad4280808080c000840f0b1033000ba50e03057f037e017f230041d0016b22022400024020010d00410121000b200220003602082002200136020c41002103200241003a008001200121040340024020012003470d002002410036020c0240200341ff0171450d00200241003a0080010b200241f4006a4102360200200241ac016a41043602002002420237026420024184adc200360260200241043602a401200241b4afc2003602a00120024100360234200241dc9ec6003602302002200241a0016a3602702002200241306a3602a801200241e0006a4194adc2001041000b200241e0006a20036a200020036a22052d00003a00002002200541016a3602082002200341016a22053a0080012004417f6a21042005210320054120470d000b200241106a41086a200241e0006a41086a290300370300200241106a41106a200241e0006a41106a290300370300200241106a41186a200241e0006a41186a2903003703002002200120056b220636020c2002200229036037031041002103200241003a008001200020056a21010340024020062003470d002002410036020c0240200341ff0171450d00200241003a0080010b200241f4006a4102360200200241ac016a41043602002002420237026420024184adc200360260200241043602a401200241b4afc2003602a00120024100360234200241dc9ec6003602302002200241a0016a3602702002200241306a3602a801200241e0006a4194adc2001041000b200241e0006a20036a200120036a22052d00003a00002002200541016a3602082002200341016a22053a0080012005210320054120470d000b200241306a41086a200241e0006a41086a290300370300200241306a41106a200241e0006a41106a290300370300200241306a41186a200241e0006a41186a290300370300200220022903603703302002200420056b220436020c02400240024020044110490d002002200120056a220341106a3602082002200441706a220536020c20054108490d0120032900002107200341086a29000021082002200441686a36020c2002200341186a360208200341106a290000210920024188016a200241086a10772002280288010d02200241ac016a4104360200200241f4006a41023602002002420237026420024184adc200360260200241043602a401200241b4afc2003602a001200241003602c401200241dc9ec6003602c0012002200241a0016a3602702002200241c0016a3602a801200241e0006a4194adc2001041000b200241ac016a4104360200200241f4006a41023602002002420237026420024184adc200360260200241043602a401200241b4afc2003602a0012002410036028c01200241dc9ec600360288012002200241a0016a360270200220024188016a3602a801200241e0006a4194adc2001041000b200241ac016a4104360200200241f4006a41023602002002420237026420024184adc200360260200241043602a401200241b4afc2003602a0012002410036028c01200241dc9ec600360288012002200241a0016a360270200220024188016a3602a801200241e0006a4194adc2001041000b200241d0006a41086a220320024188016a41086a22052802003602002002200229038801370350200241a0016a41186a200241106a41186a290300370300200241a0016a41106a200241106a41106a290300370300200241a0016a41086a200241106a41086a290300370300200220022903103703a001200241e0006a41186a200241306a41186a290300370300200241e0006a41106a200241306a41106a290300370300200241e0006a41086a200241306a41086a29030037030020022002290330370360200241c0016a41086a2003280200360200200220022903503703c00120024188016a200241a0016a200241e0006a200720082009200241c0016a10d503024002402002280288014101460d0020024194016a280200210420052802002100200228028c01210520022d00980121010c010b0240200228029801450d0020024194016a280200102c0b410021050b20024100360268200242013703604101102a210302400240024002402005450d002003450d02200341003a0000200242818080801037026420022003360260200341014102102e2203450d02200320013a00012002428280808020370264200220033602602004200241e0006a10670240024020022802642203200228026822016b2004490d00200228026021030c010b200120046a22062001490d042003410174220a2006200a20064b1b22064100480d040240024020030d002006102a21030c010b200228026020032006102e21030b2003450d0320022006360264200220033602600b2002200120046a2206360268200320016a2005200410db051a2006ad42208621070c010b2003450d01200341013a000020024281808080103702642002200336026042808080801021070b20072003ad84210702402000450d002005450d002005102c0b200241d0016a240020070f0b1033000b1035000baf1f05047f017e017f037e0e7f230041c0096b22072400200741e8006a41186a200141186a290000370300200741e8006a41106a200141106a290000370300200741e8006a41086a200141086a2900003703002007200129000037036820074188016a41186a200241186a29000037030020074188016a41106a200241106a29000037030020074188016a41086a200241086a290000370300200720022900003703880120062802002108200628020421092006280208210a4200210b200741e0056a41186a4200370300200741e0056a41106a22014200370300200741e0056a41086a22064200370300200742003703e00520074190036a41086a220241e4d2c500ad42808080808001841002220c41086a2900003703002007200c29000037039003200c102c2006200229030037030020072007290390033703e005200241b7e4c300ad42808080808001841002220c41086a2900003703002007200c29000037039003200c102c2001200729039003220d370300200741a8046a41086a2006290300370300200741a8046a41106a200d370300200741a8046a41186a20022903003703002007200d37039807200720072903e0053703a804200741d0006a200741a8046a4120109e010240024002400240024020072903584201200728025022021b220d200741d0006a41106a290300420020021b220e8450450d004200210f0c010b200741306a200e42002005420010e005200741c0006a200d42002005420010e005200741206a42004200200d420010e00502402007290338200729032884420052200741c0006a41086a290300220b200729033020072903207c7c220f200b5472450d004127210241a7c4c10021010c020b2007290340210b0b200741c8016a200741e8006a200b200f410810ac0120072802c8014101470d0120072802d001210220072802cc0121010b2000200136020420004101360200200041146a41003602002000410c6a4201370200200041086a20023602002009450d012008102c0c010b200741c8016a41106a2206290300210f20072903d001210b200741a8016a41186a200e3703002007200d3703b801200720053703b001200720053703a801200741c8016a41186a420037030020064200370300200741c8016a41086a220c4200370300200742003703c80120074190036a41086a220241e4d2c500ad42808080808001841002221041086a29000037030020072010290000370390032010102c200c200229030037030020072007290390033703c801200241f4d2c500ad4280808080f001841002221041086a29000037030020072010290000370390032010102c2006200729039003220d370300200741a8046a41086a200c290300370300200741a8046a41106a200d370300200741a8046a41186a20022903003703002007200d3703e005200720072903c8013703a804200741e0056a200741a8046a10e70320072d00d0062102200741a8046a200741e0056a41f00010db051a2007200741e0056a41f4006a2800003600fb07200720072800d1063602f8070240024020024102470d002007428080818080043703b0022007428080848080023703a80220074201370398022007420137039002200742af0137038802200742870137038002200742013703f801200742013703f001200742013703e801200742013703e001200742013703d801200742013703d001200742013703c80120074280808080c0003703a002410021020c010b200741c8016a200741a8046a41f00010db051a200741c8016a41f4006a20072800fb07360000200720072802f8073600b9020b200741c8026a4200370300200741f8026a4200370300200741e8026a4200370300200741d8026a4200370300200720023a00b8022007428080e983b1de163703c00220074280a094a58d1d3703f00220074280a094a58d1d3703e00220074280a094a58d1d3703d002200742a0808080808010370380032007200741c8016a360288032007200741c8016a36028c03200741f8076a41186a2211200741e8006a41186a290300370300200741f8076a41106a2212200741e8006a41106a290300370300200741f8076a41086a2213200741e8006a41086a290300370300200720072903683703f807200741e0056a41186a220c4200370300200741e0056a41106a22104200370300200741e0056a41086a22064200370300200742003703e00520074190036a41086a220241f9e8c500ad42808080809001841002221441086a29000037030020072014290000370390032014102c2006200229030037030020072007290390033703e0052002419db1c200ad428080808030841002221441086a29000037030020072014290000370390032014102c20074198076a41086a22152002290300220d370300200720072903900322053703980720012005370000200141086a2216200d370000200741a8046a41086a22172006290300370300200741a8046a41106a22182010290300370300200741a8046a41186a2219200c290300370300200720072903e0053703a804200741106a200741a8046a1098012007290318210d2007280210211a200c42003703002010420037030020064200370300200742003703e00520024191b0c200ad4280808080e000841002221441086a29000037030020072014290000370390032014102c2006200229030037030020072007290390033703e005200241acb0c200ad4280808080e000841002221441086a29000037030020072014290000370390032014102c2015200229030022053703002007200729039003220e370398072001200e3700002016200537000020172006290300370300201820102903003703002019200c290300370300200720072903e0053703a804200741086a200741a8046a4120109401200741c8036a4200370300200741bc036a41c0ecc1003602004101211b200741b8036a4101360200200741ac036a41d0e1c100360200200741e8036a2013290300370300200741f0036a2012290300370300200741f8036a201129030037030020074190036a41206a42003703002007428080808080013703c0032007420037039803200720072903f8073703e003200741003602a80320072802082102200728020c210120072007418c036a3602d803200720074188036a3602d4032007200741c8016a3602d00320072001410020021b3602dc032007200d4200201a1b37039003200c20074188016a41186a290300370300201020074188016a41106a290300370300200620074188016a41086a29030037030020072007290388013703e0052007200a3602b004200720093602ac04200720083602a80420074180046a20074190036a200741e0056a20032004200741a8016a200741a8046a10e20202402007280280040d0020074180046a41106a2d00000d00200741e0056a41086a200741b0036a290300370300200741a8046a41086a200741ec056a280200360200200720072903a8033703e005200720072902e4053703a804200741b8096a200741a8046a10f1014100211b0b200741e8006a20072903a80120072903b00120072903b801200741a8016a41186a290300200b200f10b90220072802cc03210120072802c8032106200720072802c40322023602a0042007200636029c04200720023602980420072002200141b8016c6a22113602a40402402001450d00200741f8076a41017221192007419f076a211a20074181086a210c20074198076a4102722109200741e0056a41106a211c20074188066a2118200741c4066a2113200741a1066a210820074181066a2110200741e0056a4101722112200741d8066a211d034020022d00002101200741a8046a200241016a41b70110db051a0240024020014103460d00200720013a00e0052012200741a8046a41b70110db052106024002400240024020010e03000102000b20072802e805211420072802ec05210620072802e4052101201a201c41d80010db051a2007410d3a00f807201920074198076a41df0010db051a20012006200741f8076a109201410121064100210a02402014450d002001102c0b410021140c020b20074188096a41186a2201200641186a220a29000037030020074188096a41106a2214200641106a221529000037030020074188096a41086a2216200641086a22172900003703002007200629000037038809200741f8076a201841900110db051a20092006290000370000200941086a2017290000370000200941106a2015290000370000200941186a200a29000037000020074180023b019807200741a8096a200741f8076a20074198076a10c10220072d00b0092106200c200729038809370000200c41086a2016290300370000200c41106a2014290300370000200c41186a2001290300370000200741043a0080082007410d3a00f807200720064102463a00a108410021064101210a41014100200741f8076a109201410021140c010b201d290300210d20072903d006210520074188096a41186a200641186a29000037030020074188096a41106a200641106a29000037030020074188096a41086a200641086a290000370300200720062900003703880920074198076a41186a201041186a29000037030020074198076a41106a201041106a29000037030020074198076a41086a201041086a2900003703002007201029000037039807200741f8076a41186a200841186a290000370300200741f8076a41106a200841106a290000370300200741f8076a41086a200841086a290000370300200720082900003703f807200741a8096a41086a201341086a280200360200200720132902003703a80920074188096a20074198076a200741f8076a2005200d200741a8096a10c6044101210a41012106410121140b024020072d00e005220141014b0d000240024020010e020001000b200a450d03024020072802e805450d0020072802e405102c0b20072d00f0054105490d03200728029806450d03200728029406102c0c030b2006450d0220181092020c020b201420072802c80645720d0120072802c406102c0c010b2007200241b8016a3602a0040c020b200241b8016a22022011470d000b200720113602a0040b20074198046a1072200041106a20074180046a41106a290300370200200041086a20074180046a41086a29030037020020002007290380043702000240200728029c032202450d0020074190036a41106a280200450d002002102c0b201b450d0020074190036a411c6a280200210220072802b403210c0240024020072802b00322060d00200221010c010b2006210020022101034020012802880b21012000417f6a22000d000b0340200220022f01064102746a41880b6a28020021022006417f6a22060d000b0b200741e0056a411c6a20022f0106360200200741f8056a4100360200200741f4056a20023602002007200c36028006200741003602f005200742003703e805200720013602e405200741003602e005200741e0056a10f9010b200741c0096a24000bdd1002077f017e23004180026b2202240041002103200241003a00a8012000410120011b21040240034020012003460d0120024188016a20036a200420036a2d00003a00002002200341016a22003a00a8012000210320004120470d000b200241086a41086a20024188016a41086a290300370300200241086a41106a20024188016a41106a290300370300200241086a41186a20024188016a41186a290300370300200220022903880137030841002103200241003a00a801200420006a2104200120006b21010340024020012003470d000240200341ff0171450d00200241003a00a8010b2002419c016a4102360200200241ec016a41043602002002420237028c0120024184adc20036028801200241043602e401200241bcafc2003602e0012002410036026c200241dc9ec6003602682002200241e0016a360298012002200241e8006a3602e80120024188016a4194adc2001041000b20024188016a20036a200420036a2d00003a00002002200341016a22003a00a8012000210320004120470d000b200241286a41086a220320024188016a41086a290300370300200241286a41106a220020024188016a41106a290300370300200241286a41186a220120024188016a41186a22042903003703002002200229038801370328200241e8006a41186a200241086a41186a290300370300200241e8006a41106a200241086a41106a290300370300200241e8006a41086a200241086a41086a29030037030020022002290308370368200241c8006a41186a2001290300370300200241c8006a41106a2000290300370300200241c8006a41086a20032903003703002002200229032837034820024188016a200241e8006a10ee01024002400240024002400240024020022d00880122034102460d004101210520030d01200241b4016a2802004102460d01200241a8016a280200220041164d0d03200241a4016a28020021062004280200210120024188016a41186a2207200241c8006aad42808080808004841006220341186a29000037030020024188016a41106a2208200341106a29000037030020024188016a41086a2204200341086a29000037030020022003290000370388012003102c200241e0016a41186a2007290300370300200241e0016a41106a2008290300370300200241e0016a41086a200429030037030020022002290388013703e00120024188016a2000ad4220862001ad84200041696aad422086200141176aad844101200241e0016aad42808080808004841008108d01200428020021042002280288012100200228028c01210802402006450d002001102c0b410021010c020b410021050b410121010b41012103024002400240024002400240024020010d00200441066a410220001b2203417f4c0d082003450d010b2003102a2206450d084100210720024100360290012002200336028c0120022006360288012001450d012002410136029001200641013a0000200228028c0121042002280290012103200541ff01714101460d0420042003460d0220022802880121040c030b200241003602900120024201370388014101102a2206450d072002410136028c01200220063602880120022802900121070b2002200741016a36029001200620076a41003a0000200228028c0121062002280290012103024020000d000240024020062003460d0020022802880121040c010b200341016a22042003490d09200341017422062004200620044b1b22064100480d090240024020030d002006102a21040c010b20022802880120032006102e21040b2004450d082002200636028c01200220043602880120022802900121030b2002200341016a36029001200420036a41003a00000c040b0240024020062003460d0020022802880121060c010b200341016a22062003490d08200341017422072006200720064b1b22074100480d080240024020030d002007102a21060c010b20022802880120032007102e21060b2006450d072002200736028c01200220063602880120022802900121030b2002200341016a36029001200620036a41013a0000200420024188016a106702400240200228028c01220620022802900122036b2004490d0020022802880121060c010b200320046a22072003490d08200641017422032007200320074b1b22034100480d080240024020060d002003102a21060c010b20022802880120062003102e21060b2006450d072002200336028c01200220063602880120022802900121030b2002200320046a36029001200620036a2000200410db051a0c030b200341016a22042003490d06200341017422062004200620044b1b22064100480d060240024020030d002006102a21040c010b20022802880120032006102e21040b2004450d052002200636028c01200220043602880120022802900121030b2002200341016a36029001200420036a41003a00000c010b0240024020042003460d0020022802880121040c010b200341016a22042003490d05200341017422062004200620044b1b22064100480d050240024020030d002006102a21040c010b20022802880120032006102e21040b2004450d042002200636028c01200220043602880120022802900121030b2002200341016a36029001200420036a41013a00000b200235029001422086200235028801842109024020010d002000450d002008450d002000102c0b20024180026a240020090f0b411720001047000b103a000b1033000b1035000b0240200341ff0171450d00200241003a00a8010b2002419c016a4102360200200241ec016a41043602002002420237028c0120024184adc20036028801200241043602e401200241bcafc2003602e0012002410036026c200241dc9ec6003602682002200241e0016a360298012002200241e8006a3602e80120024188016a4194adc2001041000bad0402027f027e23004180056b22022400024002402001450d00200220003602100c010b200241013602100b20022001360214200241d8026a200241106a108c020240024020022903c0034203510d00200241186a200241d8026a41a80210db051a0240200228021422014104490d0020022802102200280000210320022001417c6a3602142002200041046a360210200241d8026a200241186a41a80210db051a200241c0026a200241f0036a220110ed022002200320022903c0022204a722002004422888a74200420010ac02200241086a29030021042002290300210520022d00c402210320011092024104102a2201450d0220012000360000200141044108102e2201450d02200120033a0004200141084115102e2201450d02200120053700052001410d6a200437000020024180056a24002001ad4280808080d002840f0b200241cc026a4104360200200241ec026a4102360200200242023702dc0220024184adc2003602d802200241043602c402200241d0afc2003602c002200241003602d402200241dc9ec6003602d0022002200241c0026a3602e8022002200241d0026a3602c802200241d8026a4194adc2001041000b200241cc026a41043602002002412c6a41023602002002420237021c20024184adc200360218200241043602c402200241d0afc2003602c002200241003602d402200241dc9ec6003602d0022002200241c0026a3602282002200241d0026a3602c802200241186a4194adc2001041000b1033000bcc0c06017f017e017f027e057f017e230041a0026b220224000240024020010d002002200136020c200241013602080c010b20022001417f6a36020c2002200041016a36020820002d0000220141014b0d00410021000240024020010e020100010b200241106a200241086a107720022802102200450d01200229021421030b0240024002400240024020000d004100210442002105420021060c010b20034220882205a72201417f4c0d010240024020010d0042002106410121040c010b200521062001102a2204450d030b20042000200110db051a0b200220043602f001200220054220862006843702f401200241e7e485f3063602d001200241106a200241f0016a10c90320022802142107200241106a41186a2208200241d0016a200235021842208620022802102209ad84101a220141186a290000370300200241106a41106a220a200141106a290000370300200241106a41086a220b200141086a290000370300200220012900003703102001102c20024190016a41186a200829030037030020024190016a41106a200a29030037030020024190016a41086a200b290300370300200220022903103703900102402007450d002009102c0b02402004450d002006a7450d002004102c0b4100210142002105420021064200210c4100210402402000450d0020034220882206a72207417f4c0d010240024020070d004200210c410121040c010b2006210c2007102a2204450d030b20042000200710db051a0b2002200436021020022006422086200c84370214200241b0016a41e2c289ab06200241106a10d9034200210602402000450d0020034220882206a72204417f4c0d010240024020040d0042002106410121010c010b2004102a2201450d030b20012000200410db051a20034280808080708321050b2002200136021020022005200684370214200241d0016a41e9dabdf306200241106a10d9030240024020000d004200210641002101420021050c010b20034220882206a72204417f4c0d010240024020040d0041012101420021060c010b2004102a2201450d030b20012000200410db051a20034280808080708321050b20022001360290022002200520068437029402200241f0016a41e1ea91cb0620024190026a10d903200241106a41086a20024190016a41086a290300370300200241106a41106a20024190016a41106a290300370300200241106a41186a20024190016a41186a290300370300200241386a200241b0016a41086a290300370300200241c0006a200241b0016a41106a290300370300200241c8006a200241b0016a41186a290300370300200241d8006a200241d0016a41086a290300370300200241e0006a200241d0016a41106a290300370300200241e8006a200241d0016a41186a2903003703002002200229039001370310200220022903b001370330200220022903d00137035020024188016a200241f0016a41186a29030037030020024180016a200241f0016a41106a290300370300200241f8006a200241f0016a41086a290300370300200220022903f001370370200241003602f801200242013703f001200241106a200241f0016a109101200241306a200241f0016a109101200241d0006a200241f0016a109101200241f0006a200241f0016a10910120022802f801210120022802f401210820022802f001210702402000450d002003a7450d002000102c0b200141046a2200417f4c0d000240024020000d00410121040c010b2000102a2204450d020b2002410036021820022000360214200220043602102001200241106a10670240024020022802142204200228021822006b2001490d00200228021021040c010b200020016a220a2000490d032004410174220b200a200b200a4b1b220a4100480d030240024020040d00200a102a21040c010b20022802102004200a102e21040b2004450d022002200a360214200220043602100b200420006a2007200110db051a200020016aad4220862004ad84210302402008450d002007102c0b200241a0026a240020030f0b103a000b1033000b1035000b200241fc016a4104360200200241246a41023602002002420237021420024184adc200360210200241043602f401200241e4afc2003602f001200241003602d401200241dc9ec6003602d0012002200241f0016a3602202002200241d0016a3602f801200241106a4194adc2001041000b810201057f230041306b22032400200341086a200241086a280200360200200320022902003703002003200136020c200341106a200310c90320032802142101200341106a41186a22042003410c6a200335021842208620032802102205ad841020220241186a290000370300200341106a41106a2206200241106a290000370300200341106a41086a2207200241086a290000370300200320022900003703102002102c200041186a2004290300370000200041106a2006290300370000200041086a20072903003700002000200329031037000002402001450d002005102c0b024020032802002200450d002003280204450d002000102c0b200341306a24000bd00201087f230041206b220324002003410036020820034201370300200120031067024002400240024020010d002003280208210420032802042105200328020021060c010b200141246c210720032802042105200328020821010340200341106a200010e7022003280210210802400240200520016b20032802182209490d00200120096a2104200328020021060c010b200120096a22042001490d04200541017422062004200620044b1b220a4100480d040240024020050d00200a102a21060c010b20032802002005200a102e21060b2006450d032003200a36020420032006360200200a21050b20032004360208200620016a2008200910db051a02402003280214450d002008102c0b200041246a2100200421012007415c6a22070d000b0b20022902002004ad4220862006ad84100102402005450d002006102c0b200341206a24000f0b1033000b1035000bd40201027f0240024002402002450d002002417f6a2104024020012d0000220241037122054103460d000240024020050e03040001040b2004450d0220012d0001410874200272220241ffff0371418002490d02200241fcff037141027621020c040b20044103490d0120012f0001200141036a2d000041107472410874200272220241808004490d01200241027621020c030b200241034b0d0020044104490d002001280001220241ffffffff034b0d020b200041013602000f0b200241027621020b0240200220036a220120024f0d00200041013602000f0b41012103410121050240200241c000490d0041022105200241808001490d00410441052002418080808004491b21050b0240200141c000490d0041022103200141808001490d00410441052001418080808004491b21030b20002001360204200041003602002000410c6a2003360200200041086a20053602000be50401057f230041106b2202240002400240024002402000280280014101460d0002400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d04200341017422052004200520044b1b22054100480d040240024020030d002005102a21040c010b200128020020032005102e21040b2004450d0320012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41003a0000200028028401210602400240200141046a2802002204200528020022036b4104490d00200128020021040c010b200341046a22052003490d04200441017422032005200320054b1b22034100480d040240024020040d002003102a21040c010b200128020020042003102e21040b2004450d0320012004360200200141046a2003360200200141086a28020021030b200141086a200341046a360200200420036a20063600000c010b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d03200341017422052004200520044b1b22054100480d030240024020030d002005102a21040c010b200128020020032005102e21040b2004450d0220012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41013a00000b2000200110ea02200028028801210320004190016a28020022002001106702402000450d002000410574210003402002200136020c20032002410c6a109402200341206a2103200041606a22000d000b0b200241106a24000f0b1033000b1035000bfe0201027f024020002d0000417f6a2201410f4b0d00024002400240024002400240024020010e1000070707070107070207030704070506000b200041086a280200450d06200041046a280200102c0c060b200041086a2d00004101470d05200041146a280200450d05200041106a280200102c0c050b200041046a2d00000d042000410c6a280200450d04200041086a280200102c0c040b200041046a2802000d032000410c6a280200450d03200041086a280200102c0c030b200041086a2d00004105490d02200041306a280200450d022000412c6a280200102c0c020b200041046a2d00004102490d010240200041106a2802002201450d00200141d0006c2102200041086a28020041c0006a210103400240200141046a280200450d002001280200102c0b200141d0006a2101200241b07f6a22020d000b0b2000410c6a280200450d012000280208102c0c010b200041086a280200450d00200041046a280200102c0b02402000418c016a280200450d00200028028801102c0b0b13002000410736020420004190b2c2003602000b340020004191b0c20036020420004100360200200041146a410d360200200041106a41c0b9c200360200200041086a42063702000b5401017f230041206b22022400200241003602082002420837030020024100360218200242013703104100200241106a1067200041086a2002280218360200200020022903103702002002107d200241206a24000b7201017f230041306b22022400200241186a4200370300200241106a4200370300200241086a42003703002002420037030020024100360228200242013703202002200241206a36022c20022002412c6a109402200041086a200228022836020020002002290320370200200241306a24000b2b01017f02404101102a22020d001033000b200042818080801037020420002002360200200241003a00000bbb0405057f017e017f027e047f230041f0006b22012400200141306a41186a22024200370300200141306a41106a22034200370300200141306a41086a2204420037030020014200370330200141e0006a41086a22054191b0c200ad4280808080e0008422061002220741086a290000370300200120072900003703602007102c2004200529030037030020012001290360220837035020012008370330200541e0c2c200ad4280808080b0028422091002220741086a290000370300200120072900003703602007102c200320012903602208370300200141106a41086a22072004290300370300200141106a41106a220a2008370300200141106a41186a220b20052903003703002001200837035020012001290330370310200141086a200141106a4120109401200128020c210c2001280208210d20024200370300200342003703002004420037030020014200370330200520061002220341086a290000370300200120032900003703602003102c2004200529030037030020012001290360220837035020012008370330200520091002220341086a290000370300200120032900003703602003102c20022005290300220837030020072004290300370300200a20012903602206370300200b200837030020012006370350200120012903303703102001417f200c4100200d1b220520006a220420042005491b2205418094ebdc032005418094ebdc03491b360230200141106aad4280808080800484200141306aad4280808080c000841001200141f0006a24000bd90201047f230041e0006b220224002002412036020c20022001360208200241106a2001ad42808080808004841003108d0102400240200228021022010d00200041003602040c010b200228021421032002200241186a2802002204360224200220013602200240024020044104490d0020022004417c6a3602242002200141046a36022020012800002104200241c8006a200241206a107e20022802482205450d002000200229024c37020820002005360204200020043602000c010b20024100360230200242013703282002410b36023c2002200241086a3602382002200241286a360244200241dc006a41013602002002420137024c200241d0b0c2003602482002200241386a360258200241c4006a41c49ac500200241c8006a10391a2002350230422086200235022884100420004100360204200228022c450d002002280228102c0b2003450d002001102c0b200241e0006a24000bfc0302077f017e230041e0006b220324002003200236020c20032001360208200341106a2002ad4220862001ad841003108d0102400240200328021022010d00200041003602080c010b200328021421042003200341186a28020022023602242003200136022002400240024020024104490d002003200141046a36022020032002417c6a220536022420054104490d00200128000021052003200241786a3602242003200141086a36022020012800042106200341c8006a200341206a10820120032802482202450d00200341c8006a41086a2802002107200328024c2108200341c8006a200341206a10820120032802480d012008450d002002102c0b20034100360230200342013703282003410b36023c2003200341086a3602382003200341286a360244200341dc006a41013602002003420137024c200341d0b0c2003602482003200341386a360258200341c4006a41c49ac500200341c8006a10391a2003350230422086200335022884100420004100360208200328022c450d012003280228102c0c010b200341286a41086a200341c8006a41086a280200220936020020032003290348220a370328200041106a20073602002000200836020c200020023602082000200636020420002005360200200041146a200a3702002000411c6a20093602000b2004450d002001102c0b200341e0006a24000bdd0808047f047e057f027e017f017e017f017e230041f0016b220324002003200236026420032001360260200341e8006a2002ad4220862001ad841003108d0102400240200328026822040d00200041003602200c010b200328026c21052003200341f0006a280200220636029c01200320043602980141002101200341003a00e801024002400340024020062001470d002003410036029c01200141ff0171450d02200341003a00e8010c020b200341c8016a20016a200420016a22022d00003a00002003200241016a360298012003200141016a22023a00e8012002210120024120470d000b200341a8016a41086a200341c8016a41086a290300370300200341a8016a41106a200341c8016a41106a290300370300200341a8016a41186a200341c8016a41186a290300370300200320032903c8013703a8012003200620026b36029c01200341c8006a20034198016a108e022003290348a70d00200341c8006a41106a290300210720032903502108200341306a20034198016a108e022003290330a70d00200341306a41106a29030021092003290338210a200341286a20034198016a107520032802280d00024002400240200328029c0141186e220b41186c2201417f4c0d00200328022c210c0240024020010d004108210d0c010b2001102a220d450d020b0240200c450d00200341106a41106a210e4100210f41002106410021020340200341106a20034198016a108e02024002402003290310a70d00200e290300211020032903182111200341086a20034198016a10752003280208450d010b200b450d06200d102c0c060b200241016a2101200328020c211202402002200b470d00200f2001200f20014b1b220bad42187e2213422088a70d052013a722144100480d050240024020020d002014102a210d0c010b200d20062014102e210d0b200d450d040b200d20066a2202201037030820022011370300200241106a2012360200200f41026a210f200641186a210620012102200c2001470d000b0b200d450d03200341f8006a41186a200341a8016a41186a2903002210370300200341f8006a41106a200341a8016a41106a2903002211370300200341f8006a41086a200341a8016a41086a2903002213370300200320032903a8012215370378200041186a20093703002000200a37031020002007370308200020083703002000200cad422086200bad843702242000200d3602202000412c6a2015370200200041346a20133702002000413c6a2011370200200041c4006a20103702000c040b103a000b1033000b1035000b200341003602b001200342013703a8012003410b36027c2003200341e0006a3602782003200341a8016a3602a401200341dc016a4101360200200342013702cc01200341d0b0c2003602c8012003200341f8006a3602d801200341a4016a41c49ac500200341c8016a10391a20033502b00142208620033502a8018410042000410036022020032802ac01450d0020032802a801102c0b2005450d002004102c0b200341f0016a24000bf30201047f230041c0016b220224002002412036020c20022001360208200241106a2001ad42808080808004841003108d0102400240200228021022010d00200041023a00700c010b200228021421032002200241186a28020036029c012002200136029801200241206a20024198016a10fe020240024020022d00900122044102460d002000200241206a41f00010db0521052002200241206a41f4006a2800003600a30120022002280091013602a001200541f4006a20022800a301360000200520022802a0013600710c010b200241003602a801200242013703a0012002410b3602b4012002200241086a3602b0012002200241a0016a3602bc01200241346a410136020020024201370224200241d0b0c2003602202002200241b0016a360230200241bc016a41c49ac500200241206a10391a20023502a80142208620023502a00184100420022802a401450d0020022802a001102c0b200020043a00702003450d002001102c0b200241c0016a24000bee0d03077f017e067f230041c0026b220324002003200236020420032001360200200341086a2002ad4220862001ad841003108d0102400240200328020822040d00200041023a00210c010b200341106a2802002105200328020c210641002101200341003a00b8022005417e6a21070240024002400340024020052001470d00200141ff0171450d02200341003a00b8020c020b20034198026a20016a200420016a2d00003a00002003200141016a22023a00b8022007417f6a21072002210120024120470d000b200341f8016a41186a20034198026a41186a290300370300200341f8016a41106a20034198026a41106a290300370300200341f8016a41086a20034198026a41086a29030037030020032003290398023703f80120052002460d00200420026a22082d0000220941074f0d00200341f8006a41186a200341f8016a41186a290300370300200341f8006a41106a200341f8016a41106a290300370300200341f8006a41086a200341f8016a41086a290300370300200320032903f8013703782005417f6a2002460d00200841016a2d0000220141014b0d00200520026b210202400240024020010e020100010b41002101200341003a00b8022002417e6a21050340024020052001470d00200141ff0171450d04200341003a00b8020c040b20034198026a20016a200820016a41026a2d00003a00002003200141016a22023a00b8022002210120024120470d000b200341d8016a41086a20034198026a41086a290300220a370300200341b8016a41186a20034198026a41186a290300370300200341b8016a41106a20034198026a41106a290300370300200341b8016a41086a200a3703002003200329039802220a3703d8012003200a3703b801200720026b2107200820026a41026a2105410121010c010b200841026a21052002417e6a2107410021010b20034198016a41186a200341b8016a41186a29030037030020034198016a41106a200341b8016a41106a29030037030020034198016a41086a200341b8016a41086a290300370300200320032903b801370398012007450d0020052d0000220241014b0d00410021080240024020020e020100010b41002102200341003a00b802200541016a21082007417f6a21050340024020052002470d00200241ff0171450d03200341003a00b8020c030b20034198026a20026a200820026a2d00003a00002003200241016a22073a00b8022007210220074120470d000b200341d8016a41086a20034198026a41086a290300220a370300200341b8016a41186a20034198026a41186a290300370300200341b8016a41106a20034198026a41106a290300370300200341b8016a41086a200a3703002003200329039802220a3703d8012003200a3703b801410121080b200341186a41186a2202200341b8016a41186a290300370300200341186a41106a2207200341b8016a41106a290300370300200341186a41086a2205200341b8016a41086a290300370300200341386a41086a220b20034198016a41086a290300370300200341386a41106a220c20034198016a41106a290300370300200341386a41186a220d20034198016a41186a290300370300200320032903b8013703182003200329039801370338200341d8006a41186a220e200341f8006a41186a290300370300200341d8006a41106a220f200341f8006a41106a290300370300200341d8006a41086a2210200341f8006a41086a2903003703002003200329037837035820014102460d0120002003290358370000200020093a0020200041186a200e290300370000200041106a200f290300370000200041086a201029030037000020034198026a41086a2209200b29030037030020034198026a41106a220b200c29030037030020034198026a41186a220c200d2903003703002003200329033837039802200341f8016a41186a220d2002290300370300200341f8016a41106a22022007290300370300200341f8016a41086a22072005290300370300200320032903183703f8012000413a6a200c290300370000200041326a200b2903003700002000412a6a20092903003700002000200329039802370022200041c2006a20083a0000200041c3006a20032903f801370000200041cb006a2007290300370000200041d3006a2002290300370000200041db006a200d2903003700000c020b410221010b2003410036028002200342013703f8012003410b3602dc01200320033602d8012003200341f8016a3602b801200341ac026a41013602002003420137029c02200341d0b0c200360298022003200341d8016a3602a802200341b8016a41c49ac50020034198026a10391a20033502800242208620033502f80184100420032802fc01450d0020032802f801102c0b200020013a00212006450d002004102c0b200341c0026a24000b800b040e7f027e037f037e230041c0016b220324002003200236020c20032001360208200341106a2002ad4220862001ad841003108d0102400240200328021022040d00200041003602000c010b200328021421052003200341186a280200360234200320043602302003200341306a107502400240024002400240024002400240024002400240024020032802000d002003280234220641d8006e220741d8006c2201417f4c0d02200328020421080240024020010d00410821090c010b2001102a2209450d040b2008450d014100210a4100210b0340200341003a00b801200b41016a210c4100210102400240034020062001460d0120034198016a20016a2003280230220d2d00003a00002003200d41016a3602302003200141016a22023a00b8012002210120024120470d000b200341f8006a41086a220e20034198016a41086a290300370300200341f8006a41106a220f20034198016a41106a290300370300200341f8006a41186a221020034198016a41186a29030037030020032003290398013703782003200620026b2201360234200141104f0d010c0c0b20034100360234200141ff0171450d0b200341003a00b8010c0b0b2003200d41116a3602302003200141706a360234200d41096a2900002111200d290001211220034198016a200341306a107f2003280298012202450d0a20032802a0012113200328029c01210d20034198016a200341306a1082012003280298012206450d09200328029c012114024020032802342201410f4b0d0020140d080c090b20032802a0012115200341d8006a41086a200e2903002216370300200341d8006a41106a200f2903002217370300200341d8006a41186a20102903002218370300200341386a41086a220e2016370300200341386a41106a220f2017370300200341386a41186a221020183703002003200329037822163703582003200141706a36023420032003280230220141106a36023020032016370338200141086a29000021162001290000211702402007200b470d00200b4101742201200c2001200c4b1b2207ad42d8007e2218422088a70d062018a722014100480d0602400240200b0d002001102a21090c010b2009200b41d8006c2001102e21090b2009450d050b2009200b41d8006c6a2201201737031020012011370308200120123703002001200636022c20012002360220200141186a2016370300200141346a2015360200200141306a2014360200200141286a2013360200200141246a200d36020020012003290338370338200141c0006a200e290300370300200141c8006a200f290300370300200141d0006a20102903003703000240200c2008470d00200341286a200836020020032007360224200320093602200c070b200a41d8006a210a20032802342106200c210b0c000b0b200341003602200c090b200341286a2008360200200320073602242003200936022020090d030c080b103a000b1033000b1035000b20002003290320370200200041086a200341206a41086a2802003602000c050b2006102c0b200d450d012002102c0c010b200d450d002002102c0b200341003602200240200b450d00200941306a210103400240200141746a280200450d00200141706a280200102c0b02402001280200450d002001417c6a280200102c0b200141d8006a2101200a41a87f6a220a0d000b0b2007450d002009102c0b2003410036028001200342013703782003410b36025c2003200341086a3602582003200341f8006a360238200341ac016a41013602002003420137029c01200341d0b0c200360298012003200341d8006a3602a801200341386a41c49ac50020034198016a10391a200335028001422086200335027884100420004100360200200328027c450d002003280278102c0b2005450d002004102c0b200341c0016a24000b800401057f230041f0006b220224002002412036020c20022001360208200241106a2001ad42808080808004841003108d0102400240200228021022030d00200041033a00200c010b200241186a28020021042002280214210541002101200241003a0068024002400340024020042001470d00200141ff0171450d02200241003a00680c020b200241c8006a20016a200320016a2d00003a00002002200141016a22063a00682006210120064120470d000b200241286a41186a200241c8006a41186a290300370300200241286a41106a200241c8006a41106a290300370300200241286a41086a200241c8006a41086a2903003703002002200229034837032820042006460d00200320066a2d0000220141034f0d0020002002290328370000200041186a200241286a41186a290300370000200041106a200241286a41106a290300370000200041086a200241286a41086a2903003700000c010b20024100360230200242013703282002410b3602242002200241086a3602202002200241286a36026c200241dc006a41013602002002420137024c200241d0b0c2003602482002200241206a360258200241ec006a41c49ac500200241c8006a10391a200235023042208620023502288410040240200228022c450d002002280228102c0b410321010b200020013a00202005450d002003102c0b200241f0006a24000bd205010d7f230041e0006b220224002002412036020c20022001360208200241106a2001ad42808080808004841003108d0102400240200228021022030d00200041003602000c010b200228021421042002200241186a280200360224200220033602202002200241206a1075024002400240024020022802000d0002400240200228022422054178712201417f4c0d002002280204210602400240200541037622070d00410421080c010b2001102a2208450d020b02402006450d00410021094100210a4100210b03402002410036022802400240024020054104490d0020022005417c6a220536022420022002280220220141046a3602202001280000210c2002410036022820054104490d00200b41016a210d20022005417c6a22053602242002200141086a36022020012800042101200b2007470d0202402009200d2009200d4b1b220741ffffffff01712007470d002007410374220e41004e0d020b1035000b200241003602482007450d072008102c0c070b02400240200b0d00200e102a21080c010b2008200a200e102e21080b2008450d040b2008200a6a220b200c360200200b41046a2001360200200941026a2109200a41086a210a200d210b2006200d470d000b200241d0006a20063602002002200736024c200220083602480c050b200241d0006a20063602002002200736024c2002200836024820080d040c030b103a000b1033000b200241003602480b20024100360230200242013703282002410b36023c2002200241086a3602382002200241286a360244200241dc006a41013602002002420137024c200241d0b0c2003602482002200241386a360258200241c4006a41c49ac500200241c8006a10391a2002350230422086200235022884100420004100360200200228022c450d012002280228102c0c010b20002002290348370200200041086a200241c8006a41086a2802003602000b2004450d002003102c0b200241e0006a24000b810201037f230041d0006b220124002001412036020420012000360200200141086a2000ad42808080808004841003108d0102400240200128020822020d00410421000c010b200128020c210302400240200141106a280200450d0020022d000022004104490d010b20014100360220200142013703182001410b36022c200120013602282001200141186a360234200141cc006a41013602002001420137023c200141d0b0c2003602382001200141286a360248200141346a41c49ac500200141386a10391a200135022042208620013502188410040240200128021c450d002001280218102c0b410421000b2003450d002002102c0b200141d0006a240020000bd90201037f230041e0006b220324002003200236020c20032001360208200341106a2002ad4220862001ad841003108d0102400240200328021022010d00200041003602040c010b200328021421042003200341186a2802002202360224200320013602200240024020024104490d0020032002417c6a3602242003200141046a36022020012800002102200341c8006a200341206a10820120032802482205450d002000200329024c37020820002005360204200020023602000c010b20034100360230200342013703282003410b36023c2003200341086a3602382003200341286a360244200341dc006a41013602002003420137024c200341d0b0c2003602482003200341386a360258200341c4006a41c49ac500200341c8006a10391a2003350230422086200335022884100420004100360204200328022c450d002003280228102c0b2004450d002001102c0b200341e0006a24000b940e030c7f017e037f230041a0026b220324002003200236020c20032001360208200341106a2002ad4220862001ad841003108d0102400240200328021022010d00200041023a00100c010b200328021421042003200341106a41086a28020036026c20032001360268200341f8016a200341e8006a10820102400240024020032802f8012205450d0020032802fc01210602400240200328026c22074104490d00200341f8016a41086a280200210820032007417c6a220236026c20032003280268220941046a220a3602680240024002402002450d002009280000210b20032007417b6a220c36026c2003200a41016a360268200a2d0000220d41014b0d0041002102200d0e020201020b2006450d040c030b410121020b200341f4006a41026a200341d8016a41026a2d00003a0000200320032f00d8013b01740240200c450d0020032007417a6a220c36026c2003200a41026a220d360268200a2d0001220a41014b0d004100210e02400240200a0e020100010b4100210a200341003a0098022007417a6a210e4179210c03400240200e200a470d00200a41ff0171450d03200341003a0098020c030b200341f8016a200a6a2009200a6a220d41066a2d00003a000020032007200c6a36026c2003200d41076a3602682003200a41016a220d3a009802200c417f6a210c200d210a200d4120470d000b200341b8016a41086a200341f8016a41086a290300220f37030020034198016a41186a200341f8016a41186a29030037030020034198016a41106a200341f8016a41106a29030037030020034198016a41086a200f370300200320032903f801220f3703b8012003200f370398012007200d6b417a6a210c2009200d6a41066a210d4101210e0b200341f8006a41186a20034198016a41186a290300370300200341f8006a41106a20034198016a41106a290300370300200341f8006a41086a20034198016a41086a2903003703002003200329039801370378200c450d002003200c417f6a36026c2003200d41016a360268200d2d0000220a41014b0d004100210702400240200a0e020100010b4100210a200341003a009802200c417f6a2109200c417e6a2107034002402009200a470d00200a41ff0171450d03200341003a00980220060d050c060b200341f8016a200a6a200d200a6a220c41016a2d00003a00002003200c41026a3602682003200a41016a220c3a0098022003200736026c2007417f6a2107200c210a200c4120470d000b200341b8016a41086a200341f8016a41086a290300220f37030020034198016a41186a200341f8016a41186a29030037030020034198016a41106a200341f8016a41106a29030037030020034198016a41086a200f370300200320032903f801220f3703b8012003200f37039801410121070b200341206a41186a220a20034198016a41186a290300370300200341206a41106a220c20034198016a41106a290300370300200341206a41086a220d20034198016a41086a290300370300200341c0006a41086a2209200341f8006a41086a290300370300200341c0006a41106a2210200341f8006a41106a290300370300200341c0006a41186a2211200341f8006a41186a290300370300200320032903980137032020032003290378370340200341e4006a41026a2212200341f4006a41026a2d00003a0000200320032f01743b016420024102460d042000200b36020c200020083602082000200636020420002005360200200341b8016a41026a220520122d00003a0000200341f8016a41086a22062009290300370300200341f8016a41106a22092010290300370300200341f8016a41186a22082011290300370300200341d8016a41086a220b200d290300370300200341d8016a41106a220d200c290300370300200341d8016a41186a220c200a290300370300200320032f01643b01b801200320032903403703f801200320032903203703d801200320032f011e3b019801200041136a20052d00003a0000200020032f01b8013b0011200041146a200e3a0000200041156a20032903f8013700002000411d6a2006290300370000200041256a20092903003700002000412d6a2008290300370000200041356a20073a0000200041366a20032903d8013700002000413e6a200b290300370000200041c6006a200d290300370000200041ce006a200c290300370000200041d6006a20032f0198013b00000c050b20060d010c020b2006450d010b2005102c0b410221020b200341003602e001200342013703d8012003410b3602bc012003200341086a3602b8012003200341d8016a360298012003418c026a4101360200200342013702fc01200341d0b0c2003602f8012003200341b8016a3602880220034198016a41c49ac500200341f8016a10391a20033502e00142208620033502d80184100420032802dc01450d0020032802d801102c0b200020023a00102004450d002001102c0b200341a0026a24000bbb0603087f027e017f230041a0016b220324002003200236020c20032001360208200341106a2002ad4220862001ad841003108d0102400240200328021022040d00200041003602100c010b200328021421052003200341106a41086a28020036024420032004360240200341c8006a200341c0006a10770240024020032802482206450d00200341c8006a41086a2802002107200328024c210841002101200341003a009801200328024421090240024002400240034020092001460d01200341f8006a20016a2003280240220a2d00003a00002003200a41016a3602402003200141016a22023a0098012002210120024120470d000b200341d8006a41086a200341f8006a41086a290300370300200341d8006a41106a200341f8006a41106a290300370300200341d8006a41186a200341f8006a41186a290300370300200320032903783703582003200920026b220136024420014110490d012003200a41116a3602402003200141706a2202360244200241044f0d032008450d040c020b200341003602440240200141ff0171450d00200341003a0098010b20080d010c030b2008450d020b2006102c0c010b200a41096a290000210b200a290001210c200341206a41086a2202200341d8006a41086a290300370300200341206a41106a2209200341d8006a41106a290300370300200341206a41186a220d200341d8006a41186a290300370300200320032903583703202003200a41156a36024020032001416c6a3602442006450d00200a28001121012000200c37030020002008360214200020063602102000200b370308200041186a20073602002000411c6a20032903203702002000413c6a2001360200200041246a20022903003702002000412c6a2009290300370200200041346a200d2903003702000c010b20034100360260200342013703582003410b3602242003200341086a3602202003200341d8006a3602482003418c016a41013602002003420137027c200341d0b0c2003602782003200341206a36028801200341c8006a41c49ac500200341f8006a10391a2003350260422086200335025884100420004100360210200328025c450d002003280258102c0b2005450d002004102c0b200341a0016a24000b810802107f017e230041a0016b220224002002412036020c20022001360208200241106a2001ad42808080808004841003108d0102400240200228021022030d00200041003602000c010b200228021421042002200241186a280200360234200220033602302002200241306a10750240024002400240024020022802000d000240024002402002280234220541286e220641286c2201417f4c0d00200228020421070240024020010d00410421080c010b2001102a2208450d020b02402007450d0041002109034020054104490d07200941016a210a20022005417c6a220b36023420022002280230220c41046a360230200c280000210d41002101200241003a00980103400240200b2001470d0020024100360234200141ff0171450d09200241003a0098010c090b200241f8006a20016a200c20016a220e41046a2d00003a00002002200e41056a3602302002200141016a220e3a009801200e2101200e4120470d000b200241d8006a41086a220b200241f8006a41086a290300370300200241d8006a41106a220f200241f8006a41106a290300370300200241d8006a41186a2210200241f8006a41186a2903003703002002200229037837035820022005200e6b2205417c6a220136023420014104490d07200241386a41086a2211200b290300370300200241386a41106a220b200f290300370300200241386a41186a220f2010290300370300200220022903583703382002200541786a22053602342002200c200e6a220141086a360230200141046a280000210e024020062009470d0020094101742201200a2001200a4b1b2206ad42287e2212422088a70d052012a722014100480d050240024020090d002001102a21080c010b2008200941286c2001102e21080b2008450d040b2008200941286c6a2201200d360200200120022903383702042001410c6a2011290300370200200141146a200b2903003702002001411c6a200f2903003702002001200e360224200a2109200a2007470d000b200241286a200736020020022006360224200220083602200c050b200241286a2007360200200220063602242002200836022020080d040c060b103a000b1033000b1035000b200241003602200c020b20002002290320370200200041086a200241206a41086a2802003602000c020b200241003602202006450d002008102c0b20024100360260200242013703582002410b36023c2002200241086a3602382002200241d8006a3602202002418c016a41013602002002420137027c200241d0b0c2003602782002200241386a36028801200241206a41c49ac500200241f8006a10391a2002350260422086200235025884100420004100360200200228025c450d002002280258102c0b2004450d002003102c0b200241a0016a24000b830301047f230041e0006b220324002003200236020c20032001360208200341106a2002ad4220862001ad841003108d0102400240200328021022010d00200041003602080c010b200328021421042003200341186a2802002202360224200320013602200240024020024104490d002003200141046a36022020032002417c6a220536022420054104490d00200128000021052003200241786a3602242003200141086a36022020012800042102200341c8006a200341206a107e20032802482206450d002000200329024c37020c2000200636020820002002360204200020053602000c010b20034100360230200342013703282003410b36023c2003200341086a3602382003200341286a360244200341dc006a41013602002003420137024c200341d0b0c2003602482003200341386a360258200341c4006a41c49ac500200341c8006a10391a2003350230422086200335022884100420004100360208200328022c450d002003280228102c0b2004450d002001102c0b200341e0006a24000bbc0b03097f017e027f23004190026b220324002003200236020c20032001360208200341106a2002ad4220862001ad841003108d0102400240200328021022040d00200041023a00040c010b200328021421052003200341186a280200360264200320043602602003200341e0006a10754102210602400240024020032802000d0020032802642201450d002003280204210720032001417f6a220836026420032003280260220941016a220a36026020092d0000220141014b0d004100210b0240024020010e020100010b41002101200341003a0088020340024020082001470d0020034100360264200141ff0171450d03200341003a0088020c030b200341e8016a20016a200920016a220241016a2d00003a00002003200241026a3602602003200141016a22023a0088022002210120024120470d000b200341a8016a41086a200341e8016a41086a290300220c37030020034188016a41186a200341e8016a41186a29030037030020034188016a41106a200341e8016a41106a29030037030020034188016a41086a200c3703002003200820026b2208360264200320032903e801220c3703a8012003200c370388014101210b200920026a41016a210a0b200341e8006a41186a20034188016a41186a290300370300200341e8006a41106a20034188016a41106a290300370300200341e8006a41086a20034188016a41086a29030037030020032003290388013703682008450d0020032008417f6a22083602642003200a41016a360260200a2d0000220141014b0d00410021020240024020010e020100010b41002101200341003a0088020340024020082001470d0020034100360264200141ff0171450d03200341003a0088020c030b200341e8016a20016a200a20016a220241016a2d00003a00002003200241026a3602602003200141016a22023a0088022002210120024120470d000b200341a8016a41086a200341e8016a41086a290300220c37030020034188016a41186a200341e8016a41186a29030037030020034188016a41106a200341e8016a41106a29030037030020034188016a41086a200c3703002003200820026b360264200320032903e801220c3703a8012003200c37038801410121020b200341206a41186a220120034188016a41186a290300370300200341206a41106a220620034188016a41106a290300370300200341206a41086a220820034188016a41086a290300370300200341c0006a41086a2209200341e8006a41086a290300370300200341c0006a41106a220a200341e8006a41106a290300370300200341c0006a41186a220d200341e8006a41186a290300370300200320032903880137032020032003290368370340200b4102470d01200b21060b200341003602d001200342013703c8012003410b3602ac012003200341086a3602a8012003200341c8016a36028801200341fc016a4101360200200342013702ec01200341d0b0c2003602e8012003200341a8016a3602f80120034188016a41c49ac500200341e8016a10391a20033502d00142208620033502c80184100420032802cc01450d0120032802c801102c0c010b200341e8016a41186a220e200d290300370300200341e8016a41106a220d200a290300370300200341e8016a41086a220a2009290300370300200341c8016a41086a22092008290300370300200341c8016a41106a22082006290300370300200341c8016a41186a22062001290300370300200320032903403703e801200320032903203703c801200320032f011e3b01a80120002007360200200020032903e8013700052000410d6a200a290300370000200041156a200d2903003700002000411d6a200e290300370000200041256a20023a0000200041266a20032903c8013700002000412e6a2009290300370000200041366a20082903003700002000413e6a2006290300370000200041c6006a20032f01a8013b0000200b21060b200020063a00042005450d002004102c0b20034190026a24000bf30202027f037e230041e0006b220324002003200236020c20032001360208200341106a2002ad4220862001ad841003108d0102400240200328021022010d00200041003602100c010b200328021421042003200341106a41086a2802002202360224200320013602200240024020024110490d002003200241706a3602242003200141106a360220200141086a290000210520012900002106200341c8006a200341206a10820120032802482202450d00200329024c2107200020053703082000200637030020002007370214200020023602100c010b20034100360230200342013703282003410b36023c2003200341086a3602382003200341286a360244200341dc006a41013602002003420137024c200341d0b0c2003602482003200341386a360258200341c4006a41c49ac500200341c8006a10391a2003350230422086200335022884100420004100360210200328022c450d002003280228102c0b2004450d002001102c0b200341e0006a24000be70203017f017e017f230041d0026b220324002003200236029401200320013602900120034198016a2002ad4220862001ad8422041003108d010240024020032802980122010d00411821010c010b200328029c0121052003200341a0016a2802003602bc02200320013602b802200341a8016a200341b8026a108f020240024020032802a80122024118460d002003200341a8016a410472418c0110db051a0c010b20034100360208200342013703002003410b3602c402200320034190016a3602c002200320033602cc02200341bc016a4101360200200342013702ac01200341d0b0c2003602a8012003200341c0026a3602b801200341cc026a41c49ac500200341a8016a10391a200335020842208620033502008410042003280204450d002003280200102c0b02402005450d002001102c0b4118210120024118460d0020041005200221010b20002001360200200041046a2003418c0110db051a200341d0026a24000b1300200041013602042000419cd1c2003602000b3400200041f9e8c50036020420004100360200200041146a4102360200200041106a41fcd4c200360200200041086a42093702000b130020004101360204200041bcd7c2003602000b2d01017f02404108102a22020d001033000b20004288808080800137020420002002360200200242dc0b3700000b850401037f230041106b2202240020012d0000210302404101102a2204450d00200420033a000020012d00012103200441014102102e2204450d00200420033a000120012d00022103200441024104102e2204450d00200420033a0002200420012d00033a000320012d00042103200441044108102e2204450d00200420033a0004200420012d00053a0005200420012d00063a0006200420012d00073a000720012d00082103200441084110102e2204450d00200420033a0008200420012d00093a0009200420012d000a3a000a200420012d000b3a000b200420012d000c3a000c200420012d000d3a000d200420012d000e3a000e200420012d000f3a000f20012d00102103200441104120102e2204450d00200420033a0010200420012d00113a0011200420012d00123a0012200420012d00133a0013200420012d00143a0014200420012d00153a0015200420012d00163a0016200420012d00173a0017200420012d00183a0018200420012d00193a0019200420012d001a3a001a200420012d001b3a001b200420012d001c3a001c200420012d001d3a001d200420012d001e3a001e200420012d001f3a001f200241086a22032004ad42808080808004841002220141086a290000370300200220012900003703002001102c200041086a2003290300370000200020022903003700002004102c200241106a24000f0b1033000b130020004103360204200041e8b2c0003602000bd308030d7f017e017f230041a0016b2202240002400240024020012802202203450d0020012003417f6a36022020012802082104200128020c2205200128020422062f01064f0d01200241186a2207200620054105746a220341206a290000370300200241106a2208200341186a290000370300200241086a2209200341106a2900003703002002200341086a290000370300200241206a41286a220a2006200541306c6a22034190036a290300370300200241206a41206a220b20034188036a290300370300200241206a41186a220c20034180036a290300370300200241206a41106a220d200341f8026a290300370300200241206a41086a220e200341f0026a290300370300200341e8026a290300210f2001200541016a36020c20012004360208200120063602042002200f370320200241d0006a41186a2007290300370300200241d0006a41106a2008290300370300200241d0006a41086a200929030037030020022002290300370350200241d0006a41286a200e290300370300200241d0006a41306a200d29030037030020024188016a200c29030037030020024190016a200b29030037030020024198016a200a290300370300200220022903203703702000200241d0006a41d00010db051a0c020b200041003602400c010b2001280200210702400240200628020022030d002004ad210f410021030c010b200741016a210720063301044220862004ad84210f0b2006102c200fa7210502400240200f422088a7220420032f01064f0d00200321060c010b034002400240200328020022060d002005ad210f410021060c010b200741016a210720033301044220862005ad84210f0b2003102c200fa7210520062103200f422088a7220420062f01064f0d000b0b200241186a2208200620044105746a220341206a290000370300200241106a2209200341186a290000370300200241086a220a200341106a2900003703002002200341086a290000370300200241206a41286a220b2006200441306c6a22034190036a290300370300200241206a41206a220c20034188036a290300370300200241206a41186a220d20034180036a290300370300200241206a41106a220e200341f8026a290300370300200241206a41086a2210200341f0026a2903003703002002200341e8026a290300370320200441027420066a41fc066a280200210302402007417f6a2206450d00034020032802f80621032006417f6a22060d000b0b2001410036020c200120053602082001200336020420014100360200200241d0006a41186a2008290300370300200241d0006a41106a2009290300370300200241d0006a41086a200a290300370300200241d0006a41286a2010290300370300200241d0006a41306a200e29030037030020024188016a200d29030037030020024190016a200c29030037030020024198016a200b29030037030020022002290300370350200220022903203703702000200241d0006a41d00010db051a0b200241a0016a24000bda0401077f230041f0006b22022400200241d0006a41086a220341b5e5c200ad4280808080f000841002220441086a290000370300200220042900003703502004102c200241086a41086a2205200329030037030020022002290350370308200341c7e5c200ad4280808080f000841002220441086a290000370300200220042900003703502004102c200241186a41086a22062003290300370300200220022903503703182002200036024c200241d0006a41186a2200200241cc006aad4280808080c000841006220441186a290000370300200241d0006a41106a2207200441106a2900003703002003200441086a290000370300200220042900003703502004102c200241286a41186a22042000290300370300200241286a41106a22082007290300370300200241286a41086a2207200329030037030020022002290350370328024041c000102a2200450d00200020022903083700002000200229031837001020002002290328370020200041086a2005290300370000200041186a2006290300370000200041286a2007290300370000200041306a2008290300370000200041386a2004290300370000200128020021052001280208210320024100360258200242013703502003200241d0006a106702402003450d00200341057421042005210303402003200241d0006a109101200341206a2103200441606a22040d000b0b200228025421032000ad4280808080800884200235025842208620022802502204ad84100102402003450d002004102c0b2000102c0240200141046a280200450d002005102c0b200241f0006a24000f0b1033000b960301067f230041106b22022400200241003602082002420137030020002802002103024002404104102a2204450d0020024284808080c0003702042002200436020020042003360000200028020421050240024020022802042206200228020822046b4104490d00200441046a2103200228020021060c010b200441046a22032004490d02200641017422072003200720034b1b22074100480d020240024020060d002007102a21060c010b200228020020062007102e21060b2006450d0120022007360204200220063602000b20022003360208200620046a200536000020002802082104200041106a28020022032002106702402003450d0020034105742103034020042002109101200441206a2104200341606a22030d000b0b200028021421042000411c6a28020022032002106702402003450d0020034105742103034020042002109101200441206a2104200341606a22030d000b0b200228020421042001290200200235020842208620022802002203ad84100102402004450d002003102c0b200241106a24000f0b1033000b1035000b3400200041b5e5c20036020420004100360200200041146a4102360200200041106a41f8e5c200360200200041086a42073702000b8ea20106167f017e047f017e027f027e230041e0046b2204240041002105200441003602b002200420023602ac02200420013602a802024002400240024002400240024002400240024002400240200241034b0d0041012106200441013a0068200441e4036a4101360200200442013702d403200441f0f7c5003602d0032004412b36029402200420044190026a3602e0032004200441e8006a3602900220044180016a200441d0036a10372004280280012107200428028401210820042802880121094105210a4100210b0c010b200441043602b002024020012800004180c2cdeb06460d004101210a410121060c010b024002402002417c714104460d00200241074b0d0141082002103f000b41012106200441013a0068200441e4036a4101360200200442013702d403200441f0f7c5003602d0032004412b36029402200420044190026a3602e0032004200441e8006a3602900220044180016a200441d0036a10372004280280012107200428028401210820042802880121094105210a410021054100210b0c010b200441083602b002410121060240200128000422074101460d004102210a0c010b200441d0036a200441a8026a10f30402400240024020042802d0034101470d00410421084100210c410021090c010b200441d0036a410572210741042108412c210a410021064100210c410021094100210b0240034020044190026a41026a2201200741026a2d00003a0000200420072f00003b019002200428028004210d20042802fc03210e20042802f803210f20042802f403211020042802f003211120042802ec03211220042802e803211320042802e403211420042802e003211520042802dc03211620042802d8032117024020042d00d4032205417e6a41ff0171410b4b0d0041002118024002400240024002400240024002400240024002400240024020050e100c0c000102030405060708090a0b0c0c0c0b410121180c0b0b410221180c0a0b410321180c090b410421180c080b410521180c070b410621180c060b410721180c050b410821180c040b410921180c030b410a21180c020b410b21180c010b410c21180b0240200b41ff0171221920184d0d004113210a0c030b41002118024002400240024002400240024002400240024002400240024020050e100c0c000102030405060708090a0b0c0c0c0b410121180c0b0b410221180c0a0b410321180c090b410421180c080b410521180c070b410621180c060b410721180c050b410821180c040b410921180c030b410a21180c020b410b21180c010b410c21180b024020192018470d004114210a0c030b4100210b02400240024002400240024002400240024002400240024020050e100c0c000102030405060708090a0b0c0c0c0b4101210b0c0b0b4102210b0c0a0b4103210b0c090b4104210b0c080b4105210b0c070b4106210b0c060b4107210b0c050b4108210b0c040b4109210b0c030b410a210b0c020b410b210b0c010b410c210b0b20044180016a41026a221820012d00003a0000200420042f0190023b0180010240200c2009470d00200c41016a2201200c490d0720062001200620014b1b2209ad42307e221a422088a70d07201aa722014100480d0702400240200c0d002001102a21080c010b2008200a41546a2001102e21080b2008450d060b2008200a6a220141546a20053a00002001200d3602002001417c6a200e360200200141786a200f360200200141746a2010360200200141706a20113602002001416c6a2012360200200141686a2013360200200141646a2014360200200141606a20153602002001415c6a2016360200200141586a2017360200200141556a220120042f0180013b0000200141026a20182d00003a0000200641026a2106200a41306a210a200c41016a210c200441d0036a200441a8026a10f30420042802d0034101460d020c000b0b024002402005410e4b0d00024002400240024002400240024002400240024002400240024020050e0f0001020304050607080e090e0a0b0c000b2016450d0d2017102c0c0d0b02402016450d002017102c0b2013450d0c2014102c0c0c0b02402015450d00201541047421052017210103400240200141046a280200450d002001280200102c0b200141106a2101200541706a22050d000b0b2016450d0b2017102c0c0b0b02402015450d00201541286c21052017210103400240200141046a280200450d002001280200102c0b0240200141106a280200450d002001410c6a280200102c0b200141286a2101200541586a22050d000b0b2016450d0a2017102c0c0a0b2016450d092017102c0c090b2016450d082017102c0c080b2016450d072017102c0c070b02402015450d00201720154104746a2113201721150340024020152802082205450d0020152802002101200541047421050340024020012d00004109470d000240200141046a2207280200220628020441ffffffff0371450d002006280200102c200728020021060b2006102c0b200141106a2101200541706a22050d000b0b201541106a21010240201541046a280200450d002015280200102c0b2001211520012013470d000b0b2016450d062017102c0c060b02402015450d00201541146c21052017210103400240200141046a280200450d002001280200102c0b200141146a21012005416c6a22050d000b0b2016450d052017102c0c050b02402015450d0020172015411c6c6a2113201721150340024020152802042201450d0002402015410c6a2802002205450d00200541047421050340024020012d00004109470d000240200141046a2207280200220628020441ffffffff0371450d002006280200102c200728020021060b2006102c0b200141106a2101200541706a22050d000b0b201541086a280200450d002015280204102c0b2015411c6a21010240201541146a280200450d002015280210102c0b2001211520012013470d000b0b2016450d042017102c0c040b02402015450d002017201541186c6a21132017211503400240201541046a280200450d002015280200102c0b0240201541146a2802002205450d00201528020c2101200541047421050340024020012d00004109470d000240200141046a2207280200220628020441ffffffff0371450d002006280200102c200728020021060b2006102c0b200141106a2101200541706a22050d000b0b201541186a21010240201541106a280200450d00201528020c102c0b2001211520012013470d000b0b2016450d032017102c0c030b02402015450d0020172015411c6c6a2113201721150340024020152802042201450d0002402015410c6a2802002205450d00200541047421050340024020012d00004109470d000240200141046a2207280200220628020441ffffffff0371450d002006280200102c200728020021060b2006102c0b200141106a2101200541706a22050d000b0b201541086a280200450d002015280204102c0b2015411c6a21010240201541146a280200450d002015280210102c0b2001211520012013470d000b0b2016450d022017102c0c020b02402017450d002016450d002017102c0b02402013450d0002402011450d002011410c6c2105201321010340024020012802002206450d00200141046a280200450d002006102c0b2001410c6a2101200541746a22050d000b0b2012450d002013102c0b200f450d010240200d450d00200f200d4104746a2116200f211703402017220741106a2117024020072802042201450d0002402007410c6a2802002205450d002005410c6c21050340024020012802002206450d00200141046a280200450d002006102c0b2001410c6a2101200541746a22050d000b0b200741086a280200450d002007280204102c0b20172016470d000b0b200e450d01200f102c0c010b02402016450d002017102c0b02402013450d002012450d002013102c0b200f450d002010102c0b0c010b024020042d00d4030d002008200c41306c6a21052008210102400340024020052001470d00410021070c020b20012d0000210b200141306a220a2101200b410c470d000b200a415c6a28020021070b2008200c41306c6a210520082101024003404100210a024020052001470d00410021010c020b20012d0000210b200141306a22062101200b4104470d000b200441e0006a200641546a10f404200428026421010b024020072001470d004101210741e100210b41f3da012105410021060c030b0240200c450d00200c41306c210c200821010340200110f504200141306a2101200c41506a220c0d000b0b41012106411a210a024020090d000c030b2008102c0c020b20042802d403220a4110762105200a410876210b200441d0036a41106a2802002117200441dc036a2802002116200441d0036a41086a28020021070b0240200c450d00200c41306c210c200821010340200110f504200141306a2101200c41506a220c0d000b0b4101210602402009450d002008102c0b20172109201621080b2005411074200b41ff017141087472200a41ff017172210502402006450d002008210b0c080b20042802b0022002470d06200441d0026a200c360200200441cc026a2009360200200420083602c802200420073602c402200420053602c002200441d0036a200441c0026a10f60420042802d00322010d052008200c41306c6a210b20082101024003400240200b2001470d00410021010c020b20012d00002102200141306a220a210120024102470d000b200441d8006a200a41546a10f40420042802582101200428025c21020b2002410020011b21132001410420011b210f2008200c41306c6a210b20082101024003400240200b2001470d00410021010c020b20012d00002102200141306a220a210120024108470d000b200441d0006a200a41546a10f40420042802502101200428025421020b2002410020011b21122001410420011b21172008200c41306c6a210b20082101024003400240200b2001470d00410021010c020b20012d00002102200141306a220a210120024104470d000b200441c8006a200a41546a10f40420042802482101200428024c21020b2002410020011b21162001410420011b21152008200c41306c6a210a2008210102400340410021020240200a2001470d00410021010c020b20012d0000210b200141306a22062101200b4103470d000b200441c0006a200641546a10f404200428024021012004280244210b0b0240200b410020011b220b450d00200b41286c210b2001410420011b41186a2101410021020340200220012d0000456a2102200141286a2101200b41586a220b0d000b0b024020120d00411e2101200041b9cbc5003602040c050b2017201241146c6a2112410021114100210d02400240034041d7cbc500210b41382101201741086a280200417c6a220641024b0d012017280200210a02400240024020060e03000401000b4101210d200a41afcbc500460d01200a28000041e3c2b1e306460d010c030b41012111200a41b3cbc500460d00200a41b3cbc500410610dd050d020b02402017410c6a280200450d0041132101200041d5ccc5003602040c080b0240201741106a280200220120026b220a20014d0d00412a2101200041e8ccc5003602040c080b41afccc500210b412621012016200a4d0d012015200a4102746a220a450d01418fccc500210b412021012013200a280200220a4d0d01200f200a4104746a220a450d014192cdc500210b411f2101200a2802080d01200a2d000d220a41077141044b0d010240200a0e050002020200000b201741146a22172012470d000b2011200d714101710d01411c411e201141017122021b2101200041b1cdc50041b9cbc50020021b3602040c060b2000200b3602040c050b2008200c41306c6a210b2008210102400340200b2001460d0120012d00002102200141306a220a210120024106470d000b200441386a200a41546a10f404200428023c450d00200041fdc8c500360204411f21010c050b2008200c41306c6a210b200328026821062008210102400340200b2001460d0120012d00002102200141306a220a210120024105470d000b200441306a200a41546a220110f4040240200428023441014d0d00411821012000419cc9c5003602040c060b200441286a200110f404200428022c450d0020042802282201450d00200128020020064d0d0041222101200041b4c9c5003602040c050b2008200c41306c6a210b2008210102400340200b2001460d0120012d00002102200141306a220a210120024107470d000b200441206a200a41546a10f4042004280220220120042802244104746a210b03402001200b460d012001450d012001410c6a2102200141106a210120022d0000410271450d000b41322101200041c0cac5003602040c050b2008200c41306c6a210b2008210102400340200b2001460d0120012d00002102200141306a220a21012002410c470d000b200a415c6a2802002201450d00200a41546a280200220a200141186c6a21060340200a220241186a210a2002280208410374210120022802002102024003402001450d01200141786a210120022d0004210b200241086a2102200b410271450d000b413121012000418fcac5003602040c070b200a2006470d000b0b2008200c41306c6a210b2008210102400340200b2001460d0120012d00002102200141306a220a210120024102470d000b200441186a200a41546a10f404200428021c2201450d002004280218220220014104746a211603402002450d01200241106a2117200420022d000d220b3a00d0032002280200220120022802086a2106410021024100200441d0036a200b4104461b210a024003400240024002400240200241ff01710e03000102000b20012006460d01410021022001210b200141016a21010c020b20012006460d03410121022001210b200141016a21010c010b200a450d0241022102200a210b4100210a0b200b2d0000410271450d000b41392101200041d6c9c5003602040c070b2017210220172016470d000b0b2008200c41306c6a210b20082101024003400240200b2001470d00410021010c020b20012d00002102200141306a220a210120024102470d000b200441106a200a41546a10f40420042802102101200428021421020b2002410020011b210f2001410420011b21122008200c41306c6a210b20082101024003400240200b2001470d00410021010c020b20012d00002102200141306a220a210120024103470d000b200441086a200a41546a10f40420042802082101200428020c210b0b2001410420011b2202200b410020011b41286c6a210a410021150340024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002402002200a460d00412d21014198bac500210b20022802084103470d03024020022802002206419886c600460d002006419886c600410310dd050d040b200241286a2116411521064191b9c5002117411421014184bac500210b02400240024020022d00180e0400060118000b4136210641dbb8c5002117200f200228021c22014d0d17201220014104746a2213450d1720022802142106200228020c210220032d00700d012006410b470d014138210141ccb9c500210b200241cbd5c500460d05200241cbd5c500410b10dd05450d050c160b412f210141c5bac500210b20022802144106470d040240200228020c220641d5b8c500460d00200641d5b8c500410610dd050d050b02402015450d00411f2101200041f4bac5003602040c1e0b2002411c6a2115201621020c180b4126210141a6b9c500210b2006417d6a220641144b0d0302400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020060e15002121210e042107320b0a120114111b10210c191d000b2002419b86c600460d202002419b86c600410310dd05450d20419b86c6002002410310dd050d204101102a2217450d35201741003a000020132d000c41e000460d010c300b20024191d3c500460d014191d3c5002002410f10dd05450d01200241a0d3c500460d0341a0d3c5002002410f10dd05450d030240200241b7d3c500460d0041b7d3c5002002410f10dd050d200b4107102a2217450d3420174100360003201741013a0002201741003b000020132d000c41e000460d060c2e0b20132802084101470d2e0240201328020022112017460d0041002102034020024101460d01201720026a210b201120026a2106200241016a210220062d0000200b2d0000470d300c000b0b20132d000d4104470d2e2017102c201621020c320b4104102a2217450d322017410036000020132d000c41e000470d2b20132802084104470d2b0240201328020022112017460d0041002102034020024104460d01201720026a210b201120026a2106200241016a210220062d0000200b2d0000470d2d0c000b0b20132d000d4104470d2b2017102c201621020c310b0240200241afd3c500460d00200229000042e5f0d1fbb5ac98b6ec00520d1d0b4107102a2217450d3120174100360003201741013a0002201741003b000020132d000c41e000460d010c290b4101102a2217450d30201741003a000020132d000c41e000470d2720132802084101470d27201328020022112017460d2641002102034020024101460d27201720026a210b201120026a2106200241016a210220062d0000200b2d0000470d280c000b0b20132802084107470d27201328020022112017460d2441002102034020024107460d25201720026a210b201120026a2106200241016a210220062d0000200b2d0000470d280c000b0b200241c6d3c500460d0141c6d3c5002002410a10dd05450d010240200241d0d3c500460d0041d0d3c5002002410a10dd050d060b4126210641a6b9c500211720132d000c41e000470d2b20132802080d2b2016210220132d000d4104460d2d0c2b0b20132802084107470d27201328020022112017460d2141002102034020024107460d22201720026a210b201120026a2106200241016a210220062d0000200b2d0000470d280c000b0b4102102a2217450d2c201741003b000020132d000c41e000470d1f20132802084102470d1f0240201328020022112017460d0041002102034020024102460d01201720026a210b201120026a2106200241016a210220062d0000200b2d0000470d210c000b0b20132d000d4104470d1f2017102c201621020c2b0b0240200241e5d3c500460d0041e5d3c5002002410d10dd050d170b4126210641a6b9c500211720132d000c41e000470d2820132802080d282016210220132d000d4104460d2a0c280b0240200241f2d3c500460d0041f2d3c5002002410c10dd050d160b4126210641a6b9c500211720132d000c41e000470d2720132802080d272016210220132d000d4104460d290c270b024020024189d4c500460d004189d4c5002002411510dd050d150b4126210641a6b9c500211720132d000c41e000470d2620132802080d262016210220132d000d4104460d280c260b02402002419ed4c500460d00419ed4c5002002410a10dd050d140b4102102a2217450d28201741003b000020132d000c41e000460d010c1a0b0240200241a8d4c500460d0041a8d4c5002002410710dd050d130b4126210641a6b9c500211720132d000c41e000470d2420132802080d242016210220132d000d4104460d260c240b20132802084102470d180240201328020022112017460d0041002102034020024102460d01201720026a210b201120026a2106200241016a210220062d0000200b2d0000470d1a0c000b0b20132d000d4104470d182017102c201621020c250b0240200241afd4c500460d0041afd4c5002002411310dd050d110b4126210641a6b9c500211720132d000c41e000470d2220132802080d222016210220132d000d4104460d240c220b200241c2d4c500460d0141c2d4c5002002411110dd05450d0120024181d5c500460d064181d5c5002002411110dd05450d06024020024192d5c500460d004192d5c5002002411110dd050d100b4104102a2217450d242017410036000020132d000c41e000460d080c150b0240200241d3d4c500460d0041d3d4c5002002410e10dd050d0f0b4108102a2217450d232017420037000020132d000c41e000460d020c130b4102102a2217450d22201741003b000020132d000c41e000470d1120132802084102470d110240201328020022112017460d0041002102034020024102460d01201720026a210b201120026a2106200241016a210220062d0000200b2d0000470d130c000b0b20132d000d4104470d112017102c201621020c210b200241e1d4c500460d0141e1d4c5002002411010dd05450d01200241f1d4c500460d0241f1d4c5002002411010dd05450d020240200241d6d5c500460d0041d6d5c5002002411010dd050d0d0b4126210641a6b9c500211720132d000c41e000470d1e20132802080d1e2016210220132d000d4104460d200c1e0b20132802084108470d100240201328020022112017460d0041002102034020024108460d01201720026a210b201120026a2106200241016a210220062d0000200b2d0000470d120c000b0b20132d000d4104470d102017102c201621020c1f0b4126210641a6b9c500211720132d000c41e000470d1c20132802080d1c20132d000d22014104460d1c20162102200141fb0171450d1e0c1c0b4103102a2217450d1e201741003a0002201741003b000020132d000c41e000470d0c20132802084103470d0c0240201328020022112017460d0041002102034020024103460d01201720026a210b201120026a2106200241016a210220062d0000200b2d0000470d0e0c000b0b20132d000d4104470d0c2017102c201621020c1d0b4102102a2217450d1d201741003b000020132d000c41e000470d0a20132802084102470d0a0240201328020022112017460d0041002102034020024102460d01201720026a210b201120026a2106200241016a210220062d0000200b2d0000470d0c0c000b0b20132d000d4104470d0a2017102c201621020c1c0b0240200241a3d5c500460d0041a3d5c5002002411610dd050d080b4102102a2217450d1c201741003b000020132d000c41e000460d020c080b20132802084104470d0c0240201328020022112017460d0041002102034020024104460d01201720026a210b201120026a2106200241016a210220062d0000200b2d0000470d0e0c000b0b20132d000d4104470d0c2017102c201621020c1a0b0240200241b9d5c500460d0041b9d5c5002002411210dd050d060b4126210641a6b9c500211720132d000c41e000470d1720132802080d172016210220132d000d4104460d190c170b20132802084102470d050240201328020022112017460d0041002102034020024102460d01201720026a210b201120026a2106200241016a210220062d0000200b2d0000470d070c000b0b20132d000d4104470d052017102c201621020c180b0240200241e6d5c500460d0041e6d5c5002002411710dd050d040b4102102a2211450d18201141003b000020132d000c41e000470d0220132802084102470d022013280200220d2011460d0141002102034020024102460d02201120026a2106200d20026a2117200241016a210220172d000020062d0000470d030c000b0b0240024020150d004100211b4100211c0c010b024020152802040d0020004193bbc500360204413221010c1d0b02402015280200221b201541086a280200221c4d0d00200041c5bbc50036020441c90021010c1d0b201c20032802644d0d002000418ebcc50036020441c10021010c1c0b200441d0036a41086a22024200370300200441d0e1c1003602d40320042003290308221aa7417f201a428080808010541b3602e00320042003290310221aa7417f201a428080808010541b3602d003200441d0036a4104722201410d10f7042001410c10f7042001410710f7042001410f10f704200441e8006a41106a20042802e003360200200441e8006a41086a2002290300370300200420042903d003370368200441d0036a41106a220b200c360200200441d0036a410c6a2009360200200420083602d803200420073602d403200420053602d00320044180016a200441d0036a10f8044101102a2201450d17200141003a0000200420042f01d003220c3b01c002200b41e0083b01002002428180808010370300200420013602d403200441013602d0032004200c3b01e20320044180016a200441d0036a10f90421054103102a2202450d17200241026a41002d009a86463a0000200241002f009886463b00004103102a220c450d17200c41026a41002d009d86463a0000200c41002f009b86463b0000200441c0026a41026a200441d0036a41026a220a2d000022083a0000200420042f00d00322093b01c00220044194016a280200210b20044180016a41106a2802002101200a20083a0000200420093b01d0030240200b2001470d00200141016a220b2001490d192001410174220a200b200a200b4b1b220bad42287e221a422088a70d19201aa7220a4100480d190240024020010d00200a102a21010c010b200428028c01200141286c200a102e21010b2001450d182004200b360290012004200136028c01200428029401210b0b200428028c01200b41286c6a220141003a00182001200c36020c200142838080803037020420012002360200200141106a428380808030370200200141196a20042f01d0033b00002001411b6a200441d2036a2d00003a00002001411c6a2005360200200420042802940141016a36029401200441d0036a20044180016a418c0110db051a20044190026a200441d0036a10fa0420044190026a41106a280200220941306c2101200428029802220841546a2102024003404100210c2001450d01200141506a21012002412c6a210b200241306a22052102200b2d00004103470d000b200541086a2802002201450d00200141286c2102200528020041186a21014100210c0340200c20012d0000456a210c200141286a2101200241586a22020d000b0b200941306c2101200841546a2102200c417f6a210b024003404100210c2001450d01200141506a21012002412c6a2105200241306a220a210220052d00004103470d000b200a41086a2802002201450d00200141286c2102200a28020041186a21014100210c0340200c20012d0000456a210c200141286a2101200241586a22020d000b0b200941306c21012008415c6a21020240034041002106024020010d00410021010c020b200141506a2101200241246a2105200241306a220a210220052d00004104470d000b200a28020021010b02400240024002402009450d002001200c6a21102008200941306c6a210f200441e8006a41047221194100211d4100210e0340024020082d000041786a220141044b0d00024002400240024020010e050301020400030b200828020c2201450d0320082802042205200141186c6a211e200e210103402001210e02402005220c2802144104742202450d00200c28020c21010340024020012d0000410b470d00200141046a2205280200220a200b490d002005200a41016a3602000b200141106a2101200241706a22020d000b0b200442003703e00320044280808080c0003703d803200442043703d0034110102a2201450d2120042802d8032102200420013602d003200441013602d403200120024104746a22014200370200200141056a4200370000200420042802d80341016a3602d8030240200c2802142214450d00410021162014210103400240024002400240024002400240201620014f0d00411021050240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240200c28020c221820164104746a2d000022110eac010001020202020202020202020202020303030404050506060707080809090a0a0b0b0c0d0d0e0e0f0f1010111213131414151516161717181819191a1a1b1b1c1c1d1d1e1e1f1f2020212122222323242425252627272828292a2a2b2b2c2d2d2e2e2f2f303031313232333434353536363737383839393a3a3b3b3c3c3d3d3e3e3f3f40404141424243434444454546464747484a4a4a4a49494a4a4a4a4a4a4a4a4a4a4a4a4a4a4b4b4b4b000b411121050c4a0b411221050c490b410a21050c480b410821050c470b410821050c460b410421050c450b410421050c440b410421050c430b410421050c420b410421050c410b410421050c400b410421050c3f0b410521050c3e0b410521050c3d0b410521050c3c0b410521050c3b0b410521050c3a0b411321050c390b411421050c380b410621050c370b410721050c360b410b21050c350b410b21050c340b410b21050c330b410b21050c320b410b21050c310b410b21050c300b410b21050c2f0b410b21050c2e0b410b21050c2d0b410b21050c2c0b410b21050c2b0b410c21050c2a0b410c21050c290b410c21050c280b410c21050c270b410c21050c260b410c21050c250b410021050c240b410021050c230b410121050c220b410221050c210b410321050c200b410321050c1f0b410021050c1e0b410021050c1d0b410021050c1c0b410021050c1b0b410021050c1a0b410021050c190b410121050c180b410221050c170b410321050c160b410321050c150b410021050c140b410021050c130b410021050c120b410021050c110b410d21050c100b410d21050c0f0b410d21050c0e0b410d21050c0d0b410d21050c0c0b410d21050c0b0b410d21050c0a0b410d21050c090b410d21050c080b410d21050c070b410d21050c060b410d21050c050b410d21050c040b410d21050c030b410e21050c020b410e21050c010b410f21050b201641016a21122004280270211520192101024003402001280200220641086a211720062f0106210a41002102024002400340200a20022201460d01200141016a210202404100417f4101201720016a2d0000220720054b1b20072005461b41016a0e03000301000b0b2002417f6a210a0b024020150d00200441e8006a21020c030b2015417f6a21152006200a4102746a41ec006a21010c010b0b200441e8006a21020240200620014103746a41146a22012802000e0401070001010b200141046a21020b20022802002102024002400240024002400240024002402011417e6a220141084b0d0020010e090103020c0405050607010b20042802d8032201417f6a220520014f0d0c200520014b0d0c20042802d00320054104746a2205280208220120026a22022001490d0c200541086a20023602000c0d0b20042802d8032201417f6a220520014f0d0b200520014b0d0b20042802d00320054104746a2205280208220120026a22022001490d0b200541086a200236020020042802d8032201417f6a220520014f0d0b200520014b0d0b20042802d003220220054104746a280204210502400240200120042802d403460d002001210a0c010b200141016a220a2001490d3220014101742206200a2006200a4b1b220a41ffffffff0071200a470d32200a41047422064100480d32200220014104742006102e2202450d312004200a3602d403200420023602d00320042802d803210a0b2002200a4104746a220220093b000d200241003a000c20022005360204200220013602002002410f6a20094110763a0000200241086a4100360200200420042802d80341016a3602d8030c0c0b20042802d8032201417f6a220520014f0d0a200520014b0d0a20042802d00320054104746a2205280208220120026a22022001490d0a200541086a200236020020042802d803220221010240200220042802d403470d00200241016a22012002490d31200241017422052001200520014b1b220141ffffffff00712001470d31200141047422054100480d310240024020020d002005102a21050c010b20042802d00320024104742005102e21050b2005450d30200420013602d403200420053602d00320042802d80321010b20042802d00320014104746a220120093b000d200141003a000c20012012360204200120023602002001410f6a20094110763a0000200141086a4100360200200420042802d80341016a3602d8030c0b0b20042802d8032201417f6a220520014f0d09200520014b0d0920042802d00320054104746a2205280208220120026a22022001490d09200541086a200236020020042802d803220221010240200220042802d403470d00200241016a22012002490d30200241017422052001200520014b1b220141ffffffff00712001470d30200141047422054100480d300240024020020d002005102a21050c010b20042802d00320024104742005102e21050b2005450d2f200420013602d403200420053602d00320042802d80321010b20042802d00320014104746a220120093b000d200141013a000c20012012360204200120023602002001410f6a20094110763a0000200141086a4100360200200420042802d80341016a3602d8030c0a0b200441d0036a201610fb040d0820042802d8032202450d0820042002417f6a22013602d80320042802d003220520014104746a220a2d000c4102460d082001450d092002417e6a220220014f0d08200520024104746a2205200a280200220220052802002205200520024b1b360200200220014f0d09200441d0036a201610fb040d080c090b20042802d8032201417f6a220520014f0d07200520014b0d0720042802d00320054104746a2205280208220120026a22022001490d07201820164104746a41046a280200210a200541086a200236020020042802d8032201417f6a220220014b0d072002200a6b220120024b0d07200441d0036a201610fb040d0720042802d803220220014d0d0720042802d003220520014104746a2d000c0d08200241047420056a41706a2202200120022802002202200220014b1b3602000c080b20042802d8032201417f6a220520014f0d06200520014b0d0620042802d00320054104746a2205280208220120026a22022001490d06200541086a200236020020042802d8032201417f6a220720014b0d06201820164104746a41046a280200220128020421022001280200211120012802082101200441003a00c0020240200720016b220120074d0d00200441013a00c0020c070b4104102a2206450d2b20062001360200024020020d00410121054101210a0c040b200720112802006b221720074b0d0241022105200241027421184101210a4104210141022102034002402005417f6a2215200a470d00201541016a220a2015490d2e2002200a2002200a4b1b220a41ffffffff0371200a470d2e200a41027422154100480d2e0240024020020d002015102a21060c010b200620012015102e21060b2006450d2d0b200620016a201736020020182001460d04201120016a2117200541016a2105200241026a2102200141046a2101200720172802006b221720074d0d000b200441013a00c0020c040b20042802d8032201417f6a220520014f0d05200520014b0d0520042802d00320054104746a2205280208220120026a22022001490d05200541086a2002360200200441d0036a201610fb040d0520042802d8032201450d0520042802d00322022d000c0d06200141047420026a41706a41003602000c060b41a086c600201620011038000b4101210a200441013a00c0020c010b20042d00c0020d002006450d022005ad422086200aad84211a410121170240200441d0036a201610fb040d000240201a422088a72201450d002001410274210520062101034020042802d803220a200128020022024d0d02024020042802d003220720024104746a2d000c0d00200a41047420076a41706a220a2002200a280200220a200a20024b1b3602000b200141046a21012005417c6a22050d000b0b410021170b0240201aa7450d002006102c0b20170d020c030b200a450d012006102c0c010b200441d0036a201610fb04450d010b024020042802d403450d0020042802d003102c0b024020042802e003450d0020042802dc03102c0b4101211d0c070b20122014460d01200c2802142101201221160c000b0b20042802dc0320042802e4032201410041202001676b10fc0420042903e003211f20042802dc032118024020042802d403450d0020042802d003102c0b024020180d004101211d0c050b024002400240200c2802142202201f422088a722064101746a220141ffffffff00712001470d0020014104742205417f4c0d000240024020050d00410821050c010b2005102a2205450d25200c28021421020b200c4100360214200c28020c2120200c200536020c200c41106a220a2802002121200a2001360200202020024104746a2115201820064103746a211441022106024020020d0020182112202021010c020b410021012018211241002105202021020340200241016a2f0000200241036a2d0000411074722109024020022d0000220741ac01470d00200241106a21010c030b200241086a290000211a200241046a28000021170240024020064102470d00024020122014470d0041002106201421120c020b20122902002222422088a7210d2022a7211341012106201241086a21120b20064101470d0020052013470d0002402001200a280200470d00200141016a22062001490d28200141017422162006201620064b1b220641ffffffff00712006470d28200641047422164100480d280240024020010d002016102a21010c010b200c28020c20014104742016102e21010b2001450d27200c200136020c200a2006360200200c28021421010b200c28020c20014104746a220120042f00d0033b00012001412d3a00002001200d360204200141036a200441d0036a41026a2d00003a0000200c200c28021441016a220136021402402001200a280200470d00200141016a22062001490d28200141017422162006201620064b1b220641ffffffff00712006470d28200641047422164100480d280240024020010d002016102a21010c010b200c28020c20014104742016102e21010b2001450d27200c200136020c200a2006360200200c28021421010b200c28020c20014104746a220120042f00d0033b00012001410b3a00002001200b36020441022106200141036a200441d0036a41026a2d00003a0000200c200c28021441016a2201360214200521130b02402001200a280200470d00200141016a22162001490d27200141017422112016201120164b1b221641ffffffff00712016470d27201641047422114100480d270240024020010d002011102a21010c010b200c28020c20014104742011102e21010b2001450d26200c200136020c200a2016360200200c28021421010b200541016a2105200c28020c20014104746a2201201a37030820012017360204200120093b0001200120073a0000200141036a20094110763a0000200c200c28021441016a2201360214200241106a22022015470d000c030b0b103a000b20012015460d0003400240024020012d000022024109460d00200241ac01470d010c030b0240200141046a280200220228020441ffffffff0371450d002002280200102c0b2002102c0b200141106a22012015470d000b0b201fa7210102402021450d002020102c0b2012201447200620064102461b210202402001450d002018102c0b024020024101470d004101211d0c050b200c41186a2105024002402004280278450d00200c2802142202450d00200c28020c2101200241047421024100210c0340024020012d0000412c470d002001410b3a0000200141046a2010360200200c41016a210c0b200141106a2101200241706a22020d000b41012101200c0d010b200e21010b2005201e470d000b2001210e0c030b20082802042201200b490d022008200141016a3602040c020b200828020c2201450d01200828020422052001411c6c6a210a034020052201411c6a2105024020012802182202450d002001280210210120024102742102034002402001280200220c200b490d002001200c41016a3602000b200141046a21012002417c6a22020d000b0b2005200a460d020c000b0b200828020c2201450d00200141146c2102200828020441106a2101034002402001417c6a2802000d002001280200220c200b490d002001200c41016a3602000b200141146a21012002416c6a22020d000b0b200841306a2208200f470d000b201d4101710d02200e4101710d0120042802a002210620042802980221080b2004419c026a280200211520042802940221072004280290022117410021160c020b200441d0036a41106a20044190026a41106a280200360200200441d0036a41086a20044190026a41086a29030037030020042004290390023703d003200441c0026a200441d0036a10f8044110102a2202450d19200241063a00004101102a2201450d19200141003a00004101102a2205450d19200520012d00003a00002001102c4110102a220c450d19200c41063a000041f000102a2201450d19200141063a00602001412c3b01502001200b3602442001410b3a0040200141d8003a0030200120042802783602242001412d3a0020200141003602142001410f3a0010200141003602042001410f3a00000240200c2d00004109470d000240200c280204220b28020441ffffffff0371450d00200b280200102c200c280204210b0b200b102c0b200c102c024020022d00004109470d0002402002280204220c28020441ffffffff0371450d00200c280200102c2002280204210c0b200c102c0b2002102c200441f4036a4287808080f000370200200441f0036a2001360200200441ec036a4100360200200441d0036a410c6a4281808080800c370200200441d8036a4101360200200441003602fc03200442043702e403200420053602d403200441013602d003200441c0026a200441d0036a10fd04200441d0036a200441c0026a418c0110db051a200441a8026a200441d0036a10fa04200441a8026a410c6a2802002115200441b8026a280200210620042802a802211720042802ac02210720042802b0022108410021160c010b2004419c026a28020021152004280298022108024020042802a0022206450d00200641306c2102200821010340200110f504200141306a2101200241506a22020d000b0b41012116411a210741f2cac50021172015450d002008102c0b200441f4006a2802002109200428026c210c0240200441f0006a2802002201450d000340200c28026c210c2001417f6a22010d000b0b4100210b41002101024003402009450d01024002402001200c2f01064f0d00200c20014103746a41146a290200211a200141016a21010c010b02400240200c28020022010d00200bad211a41002105410021010c010b200c330104422086200bad84211a410121050b200c102c201aa7210b02400240201a422088a7220a20012f01064f0d00200121020c010b034002400240200128020022020d00200bad211a410021020c010b200541016a21052001330104422086200bad84211a0b2001102c201aa7210b20022101201a422088a7220a20022f01064f0d000b0b200a41027420026a41f0006a280200210c2002200a4103746a41146a290200211a02402005417f6a2201450d000340200c28026c210c2001417f6a22010d000b0b410021010b2009417f6a2109201aa74103470d000b0b0240200c41d0e1c100460d00200c2802002101200c102c2001450d00200128020021022001102c2002450d00024020022802002201450d0003402002102c200121022001280200220c2101200c0d000b0b2002102c0b02402016450d002000201736020420004101360200200041086a20073602000c210b200441c0026a41106a2006360200200441c0026a410c6a2015360200200420083602c802200420073602c402200420173602c002200441d0036a200441c0026a200328026010fe04024020042802d0034101470d000240200441d0036a41086a280200450d0020042802d403102c0b2000418ccbc50036020420004101360200200041086a41233602000c210b200441e4036a280200210c200441d0036a41106a2802002113200441d0036a410c6a2802002115200441d8036a280200210b20042802d40321022003280258210f200441003602b002200442013703a8024104102a2201450d17200441043602ac02200420042802b002220541046a3602b002200420013602a802200120056a20023600000240024020042802ac02220220042802b00222016b4104490d0020042802a80221020c010b200141046a22052001490d19200241017422012005200120054b1b22014100480d190240024020020d002001102a21020c010b20042802a80220022001102e21020b2002450d18200420013602ac02200420023602a80220042802b00221010b2004200141046a3602b002200220016a200b3600002015200c41306c22016a210b024002400240200c0d00201521010c010b200141506a2106200441d0036a4101722102200441d0036a41276a2105200441d0036a41206a210a200441d0036a41186a2108200441d0036a41086a2109201521010240034020012d0000210c2005200141286a290000370000200a200141216a2900003703002008200141196a290000370300200441d0036a41106a2207200141116a2900003703002009200141096a2900003703002004200141016a2900003703d0030240200c4110470d00200141306a21010c030b200441c0026a41276a22172005290000370000200441c0026a41206a2216200a290300370300200441c0026a41186a2008290300221a370300200441c0026a41106a20072903002222370300200441c0026a41086a2009290300221f370300200420042903d00322233703c00220022023370000200241086a201f370000200241106a2022370000200241186a201a370000200241206a2016290300370000200241276a20172900003700002004200c3a00d00320044180016a200441d0036a200441a8026a10ff0420042d008001220c411f470d01200641506a2106200141306a2201200b470d000b200b21010c010b2004280284012112200428028801210f02402006450d00200141306a2101200441d0036a4101722102200441d0036a41276a210a200441d0036a41206a2108200441d0036a41186a2109200441d0036a41086a2106034020012d00002105200a200141286a2900003700002008200141216a2900003703002009200141196a290000370300200441d0036a41106a2207200141116a2900003703002006200141096a2900003703002004200141016a2900003703d00320054110460d01200441c0026a41276a2217200a290000370000200441c0026a41206a22162008290300370300200441c0026a41186a2009290300221a370300200441c0026a41106a20072903002222370300200441c0026a41086a2006290300221f370300200420042903d00322233703c00220022023370000200241086a201f370000200241106a2022370000200241186a201a370000200241206a2016290300370000200241276a2017290000370000200420053a00d003200441d0036a10f504200141306a2201200b470d000b0b02402013450d002015102c0b024020042802ac02450d0020042802a802102c0b200c4105470d01200f450d012012102c0c010b02402001200b460d00200441d0036a4101722102200441d0036a41276a2105200441d0036a41206a210a200441d0036a41186a2108200441d0036a41086a2109034020012d0000210c2005200141286a290000370000200a200141216a2900003703002008200141196a290000370300200441d0036a41106a2206200141116a2900003703002009200141096a2900003703002004200141016a2900003703d003200c4110460d01200441c0026a41276a22072005290000370000200441c0026a41206a2217200a290300370300200441c0026a41186a2008290300221a370300200441c0026a41106a20062903002222370300200441c0026a41086a2009290300221f370300200420042903d00322233703c00220022023370000200241086a201f370000200241106a2022370000200241186a201a370000200241206a2017290300370000200241276a20072900003700002004200c3a00d003200441d0036a10f504200141306a2201200b470d000b0b02402013450d002015102c0b20042802a802210120042902ac02211a2000411c6a41003a0000200041146a201a370200200041106a20013602002000410c6a201c360200200041086a201b3602002000200f3602042000411d6a20042f0090023b0000200041003602002000411f6a20044192026a2d00003a00000c210b200041cdcdc50036020420004101360200200041086a41253602000c200b20132d000d22024104460d00200241fb01710d002011102c201621020c150b2011102c0b2000200b3602040c180b2017102c200041a6b9c5003602040c170b2017102c200041a6b9c5003602040c160b2017102c200041a6b9c5003602040c150b2017102c200041a6b9c5003602040c140b2017102c200041a6b9c5003602040c130b2017102c200041a6b9c5003602040c120b2017102c200041a6b9c5003602040c110b2017102c200041a6b9c5003602040c100b20132d000d22024104460d05200241fb01710d052017102c201621020c0a0b20132d000d22024104460d02200241fb01710d022017102c201621020c090b20132d000d22024104460d00200241fb01710d002017102c201621020c080b2017102c200041a6b9c5003602040c0c0b2017102c200041a6b9c5003602040c0b0b2017102c200041a6b9c5003602040c0a0b2017102c200041a6b9c5003602040c090b2017102c200041a6b9c5003602040c080b02400240200241dad3c500460d0041dad3c5002002410b10dd050d010b4126210641a6b9c500211720132d000c41e000470d0120132802080d012016210220132d000d4104460d030c010b0240200241fed3c500460d0041fed3c5002002410b10dd050d020b4126210641a6b9c500211720132d000c41e000470d0020132802080d002016210220132d000d4104460d020b20062101200020173602040c060b0240200241cbd5c500460d0041cbd5c5002002410b10dd050d050b4102102a2206450d01200641003b000020132d000c41e000470d0320132802084102470d030240201328020022172006460d0041002101034020014102460d01200620016a2102201720016a210b200141016a2101200b2d000020022d0000470d050c000b0b20132d000d4104470d032006102c201621020c000b0b1033000b1035000b2006102c0b41262101200041a6b9c5003602040b20004101360200200041086a20013602000240200c450d002008200c41306c6a21072008210a0340200a220541306a210a0240024020052d00002201410e4b0d00024002400240024002400240024002400240024002400240024020010e0f0001020304050607080e090e0a0b0c000b200541086a280200450d0d200541046a280200102c0c0d0b0240200541086a280200450d00200541046a280200102c0b200541146a280200450d0c200541106a280200102c0c0c0b02402005410c6a2802002202450d00200541046a28020021012002410474210203400240200141046a280200450d002001280200102c0b200141106a2101200241706a22020d000b0b200541086a280200450d0b2005280204102c0c0b0b02402005410c6a2802002202450d00200541046a2802002101200241286c210203400240200141046a280200450d002001280200102c0b0240200141106a280200450d002001410c6a280200102c0b200141286a2101200241586a22020d000b0b200541086a280200450d0a2005280204102c0c0a0b200541086a280200450d09200541046a280200102c0c090b200541086a280200450d08200541046a280200102c0c080b200541086a280200450d07200541046a280200102c0c070b02402005410c6a2802002201450d00200541046a280200220b20014104746a210603400240200b2802082202450d00200b2802002101200241047421020340024020012d00004109470d000240200141046a2200280200220c28020441ffffffff0371450d00200c280200102c2000280200210c0b200c102c0b200141106a2101200241706a22020d000b0b200b41106a21010240200b41046a280200450d00200b280200102c0b2001210b20012006470d000b0b200541086a280200450d062005280204102c0c060b02402005410c6a2802002202450d00200541046a2802002101200241146c210203400240200141046a280200450d002001280200102c0b200141146a21012002416c6a22020d000b0b200541086a280200450d052005280204102c0c050b02402005410c6a2802002201450d00200541046a280200220b2001411c6c6a210603400240200b2802042201450d000240200b410c6a2802002202450d00200241047421020340024020012d00004109470d000240200141046a2200280200220c28020441ffffffff0371450d00200c280200102c2000280200210c0b200c102c0b200141106a2101200241706a22020d000b0b200b41086a280200450d00200b280204102c0b200b411c6a21010240200b41146a280200450d00200b280210102c0b2001210b20012006470d000b0b200541086a280200450d042005280204102c0c040b02402005410c6a2802002201450d00200541046a280200220b200141186c6a210603400240200b41046a280200450d00200b280200102c0b0240200b41146a2802002202450d00200b28020c2101200241047421020340024020012d00004109470d000240200141046a2200280200220c28020441ffffffff0371450d00200c280200102c2000280200210c0b200c102c0b200141106a2101200241706a22020d000b0b200b41186a21010240200b41106a280200450d00200b28020c102c0b2001210b20012006470d000b0b200541086a280200450d032005280204102c0c030b02402005410c6a2802002201450d00200541046a280200220b2001411c6c6a210603400240200b2802042201450d000240200b410c6a2802002202450d00200241047421020340024020012d00004109470d000240200141046a2200280200220c28020441ffffffff0371450d00200c280200102c2000280200210c0b200c102c0b200141106a2101200241706a22020d000b0b200b41086a280200450d00200b280204102c0b200b411c6a21010240200b41146a280200450d00200b280210102c0b2001210b20012006470d000b0b200541086a280200450d022005280204102c0c020b0240200541046a2802002201450d00200541086a280200450d002001102c0b0240200541146a2802002201450d0002402005411c6a2802002202450d002002410c6c2102034002402001280200220c450d00200141046a280200450d00200c102c0b2001410c6a2101200241746a22020d000b0b200541186a280200450d002005280214102c0b200541246a280200220b450d0102402005412c6a2802002201450d00200b20014104746a21060340200b220041106a210b024020002802042201450d0002402000410c6a2802002202450d002002410c6c2102034002402001280200220c450d00200141046a280200450d00200c102c0b2001410c6a2101200241746a22020d000b0b200041086a280200450d002000280204102c0b200b2006470d000b0b200541286a280200450d012005280224102c0c010b0240200541086a280200450d00200541046a280200102c0b0240200541146a2802002201450d00200541186a280200450d002001102c0b200541246a280200450d00200541206a280200102c0b200a2007470d000b0b2009450d042008102c0c040b024020042802d403450d002001102c0b0240200c450d00200c41306c2102200821010340200110f504200141306a2101200241506a22020d000b0b41eac8c5002101411321022009450d022008102c0c020b200441003a0068200441e4036a4101360200200442013702d403200441f0f7c5003602d0032004412b36029402200420044190026a3602e0032004200441e8006a3602900220044180016a200441d0036a10372004280280012107200428028401210b0240200c450d00200c41306c2102200821010340200110f504200141306a2101200241506a22020d000b0b410521052009450d002008102c0b41d4c8c500210141162102200b450d00200541ff01714105470d002007102c0b2000200136020420004101360200200041086a20023602000b200441e0046a24000b130020004104360204200041e8e8c2003602000b3400200041cee5c20036020420004100360200200041146a4105360200200041106a41b8f3c200360200200041086a42133702000b3400200041fde7c20036020420004100360200200041146a4105360200200041106a41b8f3c200360200200041086a42133702000b02000bb30303047f017e017f230041d0006b22012400200141c0006a41086a22024196e0c500ad4280808080f000841002220341086a290000370300200120032900003703402003102c200141206a41086a22042002290300370300200120012903403703202002419ff8c200ad42808080808002841002220341086a290000370300200120032900003703402003102c200141306a41086a20022903002205370300200141086a2004290300370300200141186a20053703002001200129034022053703302001200129032037030020012005370310024002404101450d004120210402400240024002404120450d004120102a22020d010c050b411021044110102a2202450d04200141106a210320022001290300370000200241086a200141086a2903003700000c010b20022001290300370000200241086a200141086a290300370000200141106a21034120210641204110470d010b20022004200441017422064120200641204b1b2206102e2202450d020b20022003290000370010200241186a200341086a290000370000200041203602082000200636020420002002360200200141d0006a24000f0b103a000b1033000bb80801067f230041106b220224002002410036020820024201370300200028020022032802002104200328020822052002106702402005450d0020054105742105034020042002109101200441206a2104200541606a22050d000b0b200328020c2106024002400240024020022802042205200228020822046b4104490d00200228020021050c010b200441046a22072004490d02200541017422042007200420074b1b22044100480d020240024020050d002004102a21050c010b200228020020052004102e21050b2005450d012002200436020420022005360200200228020821040b2002200441046a360208200520046a200636000020032d0010210302400240200228020420022802082204460d00200228020021050c010b200441016a22052004490d02200441017422062005200620054b1b22064100480d020240024020040d002006102a21050c010b200228020020042006102e21050b2005450d012002200636020420022005360200200228020821040b2002200441016a360208200520046a20033a000002400240200028020422042d00004101460d0002400240200228020420022802082205460d00200228020021030c010b200541016a22032005490d04200541017422002003200020034b1b22004100480d040240024020050d002000102a21030c010b200228020020052000102e21030b2003450d032002200036020420022003360200200228020821050b2002200541016a360208200320056a41003a00000c010b02400240200228020420022802082205460d00200228020021030c010b200541016a22032005490d03200541017422002003200020034b1b22004100480d030240024020050d002000102a21030c010b200228020020052000102e21030b2003450d022002200036020420022003360200200228020821050b2002200541016a360208200320056a41013a0000200441016a20021091010b0240024020042d00214101460d0002400240200228020420022802082204460d00200228020021050c010b200441016a22052004490d04200441017422032005200320054b1b22034100480d040240024020040d002003102a21050c010b200228020020042003102e21050b2005450d032002200336020420022005360200200228020821040b2002200441016a360208200520046a41003a00000c010b02400240200228020420022802082205460d00200228020021030c010b200541016a22032005490d03200541017422002003200020034b1b22004100480d030240024020050d002000102a21030c010b200228020020052000102e21030b2003450d022002200036020420022003360200200228020821050b2002200541016a360208200320056a41013a0000200441226a20021091010b200228020421042001290200200235020842208620022802002205ad84100102402004450d002005102c0b200241106a24000f0b1033000b1035000ba80e03057f017e017f230041e0036b22012400200141d8026a41086a22024196e0c500ad4280808080f000841002220341086a290000370300200120032900003703d8022003102c200141d0006a41086a22042002290300370300200120012903d802370350200241c9f8c200ad4280808080a001841002220341086a290000370300200120032900003703d8022003102c20014190026a41086a22052002290300370300200120012903d80237039002200141d8026a2000109f010240024002400240024041c000102a2203450d00200320012903503700002003200129039002370010200320012900d802370020200341086a2004290300370000200341186a2005290300370000200341286a2002290000370000200341306a200141e8026a290000370000200341386a200141d8026a41186a290000370000200141d8026a200341c00010f203024020012d00dc02220241024622000d002003ad428080808080088410050b2001410d6a200141d8026a41057241c30010db051a200141d0006a2001410d6a41c30010db051a20000d04200120023a00980120014198016a410172200141d0006a41c10010db052104200141ba016a21000240024020012d00b9014101460d00200141003602e0010c010b200141e0016a200010890420012d00980121020b024002400240200241ff01714101460d00200141003602f0010c010b200141f0016a200410890420012802f0010d010b024020012d00b9014101460d00200141d8026a108a0420013502e00242208620012802d8022202ad84100520012802dc02450d042002102c0c040b200141d8026a108a0420012802d8022102200120012802e002360294022001200236029002200020014190026a10a10220012802dc02450d032002102c0c030b20014180026a41086a200141f0016a41086a2802002202360200200120012903f00122063703800220014190026a2006a72204200210f203024020012d0094024102470d00200141003602a803200142013703a003200141b0036a41146a410d360200200141bc036a410b360200200141073602cc0320014196e0c5003602c8032001410b3602b4032001410a3602d403200141c9f8c2003602d003200120014180026a3602c0032001200141d0036a3602b8032001200141c8036a3602b0032001200141a0036a3602dc03200141d8026a41146a4103360200200142033702dc02200141849dc5003602d8022001200141b0036a3602e802200141dc036a41c49ac500200141d8026a10391a20013502a80342208620013502a00384100420012802a403450d0220012802a003102c0c020b200141d8026a20014190026a41c80010db051a2001419d036a200141b9016a220041206a2d00003a000020014195036a200041186a2900003700002001418d036a200041106a29000037000020014185036a200041086a290000370000200141fd026a2000290000370000200141003602b803200142013703b003200141d8026a200141b0036a108901200141d8026a410472200141b0036a10a30220012802b40321002002ad4220862004ad8420013502b80342208620012802b0032202ad8410012000450d012002102c0c010b1033000b0240200128028402450d00200128028002102c0b410121000c010b410021000b0240024020012802e00122020d00410021040c010b20014180026a41086a200141e0016a41086a2802002204360200200120012903e00122063703800220014190026a2006a72205200410f2030240024020012d0094024102470d00200141003602a803200142013703a003200141b0036a41146a410d360200200141bc036a410b360200200141073602cc0320014196e0c5003602c8032001410b3602b4032001410a3602d403200141c9f8c2003602d003200120014180026a3602c0032001200141d0036a3602b8032001200141c8036a3602b0032001200141a0036a3602dc03200141d8026a41146a4103360200200142033702dc02200141a89cc5003602d8022001200141b0036a3602e802200141dc036a41c49ac500200141d8026a10391a20013502a80342208620013502a00384100420012802a403450d0120012802a003102c0c010b200141d8026a20014190026a41c80010db051a200141fc026a200141b8016a2d00003a0000200141f4026a200141b0016a290300370200200141ec026a200141a8016a290300370200200141e4026a20014198016a41086a29030037020020012001290398013702dc02200141003602b803200142013703b003200141d8026a200141b0036a108901200141d8026a410472200141b0036a10a30220012802b40321072004ad4220862005ad8420013502b80342208620012802b0032204ad8410012007450d002004102c0b0240200128028402450d00200128028002102c0b410121040b0240200020012802f001220545720d0020012802f401450d002005102c0b2004200245720d0020012802e401450d002002102c0b2003102c200141e0036a24000b840d05027f017e027f017e047f230041f0036b220124004196e0c500ad4280808080f0008410022202290008210320022800042104200228000021052002102c41aff8c200ad4280808080a0018410022202290008210620022800042107200228000021082002102c200141d8026a2000109f01024002400240024041c000102a2202450d00200220063700182002200736001420022008360010200220033700082002200436000420022005360000200220012900d802370020200241286a200141e0026a290000370000200241306a200141e8026a290000370000200241386a200141f0026a290000370000200141d8026a200241c00010ee03024020012d00e802220041024622040d002002ad428080808080088410050b20012802dc02210520012802d80221072001200141ec026a41c40010db05220141c4006a200141c40010db051a20040d0320014188016a200141c4006a41c20010db051a200141aa016a21040240024020012d00a9014101460d00200141003602d0010c010b200141d0016a2004108b040b02400240024020012d0088014101460d00200141003602e0010c010b200141e0016a20014188016a410172108b0420012802e0010d010b0240024020012d00a9014101460d00200141d8026a10840420013502e00242208620012802d8022204ad84100520012802dc02450d012004102c0c010b200141d8026a10840420012802d8022108200120012802e002360284022001200836028002200420014180026a10a10220012802dc02450d002008102c0b410021080c030b200141f0016a41086a200141e0016a41086a2802002204360200200120012903e00122033703f00120014180026a2003a72209200410ee03024020012d0090024102470d00200141003602b803200142013703b003200141c0036a41146a410d360200200141cc036a410b360200200141073602dc0320014196e0c5003602d8032001410b3602c4032001410a3602e403200141aff8c2003602e0032001200141f0016a3602d0032001200141e0036a3602c8032001200141d8036a3602c0032001200141b0036a3602ec03200141d8026a41146a4103360200200142033702dc02200141849dc5003602d8022001200141c0036a3602e802200141ec036a41c49ac500200141d8026a10391a20013502b80342208620013502b00384100420012802b403450d0220012802b003102c0c020b200141d8026a20014180026a41d80010db051a200141ad036a200141a9016a220841206a2d00003a0000200141a5036a200841186a2900003700002001419d036a200841106a29000037000020014195036a200841086a2900003700002001418d036a2008290000370000200120043602c403200120093602c003200141d8026a200141c0036a108c0420012802dc02450d0120012802d802102c0c010b1033000b024020012802f401450d0020012802f001102c0b410121080b0240024020012802d00122040d00410021090c010b200141f0016a41086a200141d0016a41086a2802002209360200200120012903d00122033703f00120014180026a2003a7220a200910ee030240024020012d0090024102470d00200141003602b803200142013703b003200141c0036a41146a410d360200200141cc036a410b360200200141073602dc0320014196e0c5003602d8032001410b3602c4032001410a3602e403200141aff8c2003602e0032001200141f0016a3602d0032001200141e0036a3602c8032001200141d8036a3602c0032001200141b0036a3602ec03200141d8026a41146a4103360200200142033702dc02200141a89cc5003602d8022001200141c0036a3602e802200141ec036a41c49ac500200141d8026a10391a20013502b80342208620013502b00384100420012802b403450d0120012802b003102c0c010b200141d8026a20014180026a41d80010db051a2001418c036a200141a8016a2d00003a000020014184036a200141a0016a290300370200200141fc026a20014198016a290300370200200141f4026a20014188016a41086a29030037020020012001290388013702ec02200120093602c4032001200a3602c003200141d8026a200141c0036a108c0420012802dc02450d0020012802d802102c0b024020012802f401450d0020012802f001102c0b410121090b0240200820012802e001220a45720d0020012802e401450d00200a102c0b2009200445720d0020012802d401450d002004102c0b2002102c024020004102460d002005450d002007102c0b200141f0036a24000bb10501067f230041e0006b22012400200141c0006a41086a22024196e0c500ad4280808080f000841002220341086a290000370300200120032900003703402003102c200141086a200229030037030020012001290340370300200241a8f9c200ad42808080809001841002220341086a290000370300200120032900003703402003102c200141106a41086a2002290300370300200120012903403703100240024002404104102a2202450d0020014204370244200120023602402000200141c0006a109101200028022021030240024020012802442200200128024822026b4104490d00200128024021000c010b200241046a22042002490d02200041017422022004200220044b1b22024100480d020240024020000d002002102a21000c010b200128024020002002102e21000b2000450d012001200236024420012000360240200128024821020b2001200241046a360248200020026a200336000020012802442100200141c0006a41186a2203200135024842208620012802402205ad841006220241186a290000370300200141c0006a41106a2204200241106a290000370300200141c0006a41086a2206200241086a290000370300200120022900003703402002102c200141206a41186a2003290300370300200141206a41106a2004290300370300200141206a41086a20062903003703002001200129034037032002402000450d002005102c0b41c000102a22020d020b1033000b1035000b200220012903003700002002200129031037001020022001290320370020200241086a200141086a290300370000200241186a200141106a41086a290300370000200241286a200141206a41086a290300370000200241306a200141306a290300370000200241386a200141206a41186a2903003700002002ad428080808080088410052002102c200141e0006a24000bbd0201057f230041c0006b22022400200241206a41086a22034196e0c500ad4280808080f000841002220441086a290000370300200220042900003703202004102c200241086a2205200329030037030020022002290320370300200341c9f8c200ad4280808080a001841002220441086a290000370300200220042900003703202004102c200241106a41086a2206200329030037030020022002290320370310200241206a2001109f01024041c000102a22040d001033000b200420022903003700002004200229031037001020042002290020370020200042c0808080800837020420002004360200200441086a2005290300370000200441186a2006290300370000200441286a2003290000370000200441306a200241306a290000370000200441386a200241206a41186a290000370000200241c0006a24000bb30303047f017e017f230041d0006b22012400200141c0006a41086a22024196e0c500ad4280808080f000841002220341086a290000370300200120032900003703402003102c200141206a41086a2204200229030037030020012001290340370320200241b9f8c200ad42808080808002841002220341086a290000370300200120032900003703402003102c200141306a41086a20022903002205370300200141086a2004290300370300200141186a20053703002001200129034022053703302001200129032037030020012005370310024002404101450d004120210402400240024002404120450d004120102a22020d010c050b411021044110102a2202450d04200141106a210320022001290300370000200241086a200141086a2903003700000c010b20022001290300370000200241086a200141086a290300370000200141106a21034120210641204110470d010b20022004200441017422064120200641204b1b2206102e2202450d020b20022003290000370010200241186a200341086a290000370000200041203602082000200636020420002002360200200141d0006a24000f0b103a000b1033000bbd0201057f230041c0006b22022400200241206a41086a22034196e0c500ad4280808080f000841002220441086a290000370300200220042900003703202004102c200241086a2205200329030037030020022002290320370300200341aff8c200ad4280808080a001841002220441086a290000370300200220042900003703202004102c200241106a41086a2206200329030037030020022002290320370310200241206a2001109f01024041c000102a22040d001033000b200420022903003700002004200229031037001020042002290020370020200042c0808080800837020420002004360200200441086a2005290300370000200441186a2006290300370000200441286a2003290000370000200441306a200241306a290000370000200441386a200241206a41186a290000370000200241c0006a24000bcc0301057f230041106b22022400200241003602082002420137030020002802002103200028020822042002106702402004450d0020044105742104034020032002109101200341206a2103200441606a22040d000b0b200028020c2105024002400240024020022802042204200228020822036b4104490d00200228020021040c010b200341046a22062003490d02200441017422032006200320064b1b22034100480d020240024020040d002003102a21040c010b200228020020042003102e21040b2004450d012002200336020420022004360200200228020821030b2002200341046a360208200420036a200536000020002d0010210502400240200228020420022802082203460d00200228020021040c010b200341016a22042003490d02200341017422062004200620044b1b22064100480d020240024020030d002006102a21040c010b200228020020032006102e21040b2004450d012002200636020420022004360200200228020821030b2002200341016a360208200420036a20053a0000200041146a200210a302200228020421032001290200200235020842208620022802002204ad84100102402003450d002004102c0b200241106a24000f0b1033000b1035000b850401067f230041f0006b22032400200341d0006a41086a22044196e0c500ad4280808080f000841002220541086a290000370300200320052900003703502005102c200341086a41086a220620042903003703002003200329035037030820044188f9c200ad4280808080b002841002220541086a290000370300200320052900003703502005102c200341186a41086a22072004290300370300200320032903503703182003200136024c200341d0006a41186a2201200341cc006aad4280808080c000841006220541186a290000370300200341d0006a41106a2208200541106a2900003703002004200541086a290000370300200320052900003703502005102c200341286a41186a22052001290300370300200341286a41106a22012008290300370300200341286a41086a2208200429030037030020032003290350370328024041c000102a2204450d00200420032903083700002004200329031837001020042003290328370020200441086a2006290300370000200441186a2007290300370000200441286a2008290300370000200441306a2001290300370000200441386a2005290300370000200341d0006a200210f903200441c000418001102e2204450d0020042003290050370040200441c8006a200341d8006a29000037000020004280818080800a37020420002004360200200341f0006a24000f0b1033000b850401067f230041f0006b22032400200341d0006a41086a22044196e0c500ad4280808080f000841002220541086a290000370300200320052900003703502005102c200341086a41086a2206200429030037030020032003290350370308200441f5f8c200ad4280808080b002841002220541086a290000370300200320052900003703502005102c200341186a41086a22072004290300370300200320032903503703182003200136024c200341d0006a41186a2201200341cc006aad4280808080c000841006220541186a290000370300200341d0006a41106a2208200541106a2900003703002004200541086a290000370300200320052900003703502005102c200341286a41186a22052001290300370300200341286a41106a22012008290300370300200341286a41086a2208200429030037030020032003290350370328024041c000102a2204450d00200420032903083700002004200329031837001020042003290328370020200441086a2006290300370000200441186a2007290300370000200441286a2008290300370000200441306a2001290300370000200441386a2005290300370000200341d0006a200210f903200441c000418001102e2204450d0020042003290050370040200441c8006a200341d8006a29000037000020004280818080800a37020420002004360200200341f0006a24000f0b1033000be50201057f230041c0006b22022400200241206a41086a22034196e0c500ad4280808080f000841002220441086a290000370300200220042900003703202004102c200241086a22052003290300370300200220022903203703002003419bf9c200ad4280808080d001841002220441086a290000370300200220042900003703202004102c200241106a41086a2206200329030037030020022002290320370310200241206a2001109f01024041c000102a2204450d00200420022903003700002004200229031037001020042002290020370020200441086a2005290300370000200441186a2006290300370000200441286a2003290000370000200441306a200241306a290000370000200441386a200241206a41186a290000370000200241206a200441c00010f103024020022802282203450d002000200229022c37020c200020022903203702000b200020033602082004102c200241c0006a24000f0b1033000be80201057f230041c0006b22022400200241206a41086a22034196e0c500ad4280808080f000841002220441086a290000370300200220042900003703202004102c200241086a22052003290300370300200220022903203703002003419bf9c200ad4280808080d001841002220441086a290000370300200220042900003703202004102c200241106a41086a2206200329030037030020022002290320370310200241206a2001280200109f01024041c000102a2204450d00200420022903003700002004200229031037001020042002290020370020200441086a2005290300370000200441186a2006290300370000200441286a2003290000370000200441306a200241306a290000370000200441386a200241206a41186a290000370000200241206a200441c00010f103024020022802282203450d002000200229022c37020c200020022903203702000b200020033602082004102c200241c0006a24000f0b1033000bbe0501087f230041c0006b22022400200241206a41086a22034196e0c500ad4280808080f000841002220441086a290000370300200220042900003703202004102c200241086a22052003290300370300200220022903203703002003419bf9c200ad4280808080d001841002220441086a290000370300200220042900003703202004102c200241106a41086a2204200329030037030020022002290320370310200241206a2000109f010240024041c000102a2206450d00200620022903003700002006200229031037001020062002290020370020200641086a2005290300370000200641186a2004290300370000200641286a2003290000370000200641306a200241306a290000370000200641386a200241206a41186a2900003700002002410036022820024201370320200128020021044104102a2203450d0020024284808080c000370224200220033602202003200436000020012802042104200341044108102e2203450d00200242888080808001370224200320043600042002200336022020012802082104200141106a2802002201200241206a10670240024020010d002002280228210720022802242105200228022021030c010b200141027421084100200228022822016b21002002280224210503402004280200210902400240200520006a4104490d00200228022021030c010b200141046a22032001490d04200541017422072003200720034b1b22074100480d040240024020050d002007102a21030c010b200228022020052007102e21030b2003450d032002200736022420022003360220200721050b200441046a21042002200141046a2207360228200320016a20093600002000417c6a2100200721012008417c6a22080d000b0b2006ad42808080808008842007ad4220862003ad84100102402005450d002003102c0b2006102c200241c0006a24000f0b1033000b1035000bbe0701067f23004190016b22022400200241d0006a41086a22034196e0c500ad4280808080f000841002220441086a290000370300200220042900003703502004102c200241386a41086a2205200329030037030020022002290350370338200341dff8c200ad4280808080f000841002220441086a290000370300200220042900003703502004102c200241186a41086a2206200329030037030020022002290350370318200241d0006a2001109f01024041c000102a2204450d00200420022903383700002004200229031837001020042002290050370020200441086a2005290300370000200441186a2006290300370000200441286a2003290000370000200441306a200241d0006a41106a2205290000370000200441386a200241d0006a41186a2206290000370000200241c00036024c20022004360248200241386a2004ad42808080808008841003108d0102400240200228023822010d00410021030c010b200228023c21072002200241386a41086a280200360284012002200136028001200241d0006a20024180016a10cc010240024020022802702203450d00200241186a41186a200241d0006a41186a290300370300200241186a41106a200241d0006a41106a290300370300200241186a41086a200241d0006a41086a290300370300200241086a41086a200241fc006a28020036020020022002290350370318200220022902743703080c010b4100210320024100360220200242013703182002410b36020c2002200241c8006a3602082002200241186a36028c01200241e4006a410136020020024201370254200241d0b0c2003602502002200241086a3602602002418c016a41c49ac500200241d0006a10391a20023502204220862002350218841004200228021c450d002002280218102c0b2007450d002001102c0b200241d0006a41086a2201200241186a41086a2903003703002005200241186a41106a2903003703002006200241186a41186a290300370300200241386a41086a2205200241086a41086a2802003602002002200229031837035020022002290308370338024002402003450d002000200229035037030020002003360220200041246a2002290338370200200041186a200241d0006a41186a290300370300200041106a200241d0006a41106a290300370300200041086a20012903003703002000412c6a20052802003602000c010b2000420037030020004208370320200041186a4200370300200041106a4200370300200041086a4200370300200041286a41003602000b2004102c20024190016a24000f0b1033000bf10e04057f017e197f027e230041f0026b22042400200441a0026a41086a22054196e0c500ad4280808080f000841002220641086a290000370300200420062900003703a0022006102c200441386a41086a22072005290300370300200420042903a002370338200541b5fdc200ad4280808080d000841002220641086a290000370300200420062900003703a0022006102c200441e0016a41086a22062005290300370300200420042903a0023703e001200441a0016a2001109f010240024002400240024041c000102a2205450d0020052004290338370000200520042903e001370010200520042900a001370020200541086a2007290300370000200541186a2006290300370000200541286a200441a0016a41086a290000370000200541306a200441b0016a290000370000200541386a200441a0016a41186a290000370000200441c00036027c20042005360278200441386a2005ad42808080808008841003108d01024020042802382206450d00200428023c210802400240200441c0006a280200450d0020062d000022074103490d010b200441003602e801200442013703e0012004410b36020c2004200441f8006a3602082004200441e0016a3602c001200441b4026a4101360200200442013702a402200441d0b0c2003602a0022004200441086a3602b002200441c0016a41c49ac500200441a0026a10391a20043502e80142208620043502e001841004024020042802e401450d0020042802e001102c0b410321070b02402008450d002006102c0b20074103470d020b2005102c0c020b1033000b2005102c0240024020070e03020001020b200441a0026a20012002200310b80120043502a0024201852102200441b0026a2903002109200441a8026a29030021030c030b200441a0026a200110980420042d00a0024101470d01200441f8016a200441b9026a290000370300200441e0016a41106a200441b1026a290000370300200441e0016a41086a200441a9026a290000370300200420042900a1023703e001200441386a200441e0016a2002200310b80120043502384201852102200441386a41106a2903002109200441386a41086a29030021030c020b200441f8006a200110980420042d00784101470d00200441c0016a41186a220720044191016a290000370300200441c0016a41106a220520044189016a290000370300200441c0016a41086a220620044181016a290000370300200420042900793703c001200441a0026a200441c0016a10f902200441a0016a41186a22082007290300370300200441a0016a41106a22072005290300370300200441a0016a41086a220a2006290300370300200420042903c0013703a00120042802c002220b450d00200441e0016a41186a220c2008290300370300200441e0016a41106a220d2007290300370300200441e0016a41086a220e200a290300370300200441e0016a41286a2207200441a0026a41086a2208290300370300200441e0016a41306a220a200441a0026a41106a220f290300370300200441e0016a41386a2210200441a0026a41186a2211290300370300200441086a41286a2212200441ec026a2213280200360200200441086a41206a2214200441e4026a2215290200370300200441086a41186a2216200441dc026a2217290200370300200441086a41106a2218200441d4026a2219290200370300200441086a41086a221a200441cc026a221b290200370300200420042903a0013703e001200420042903a00237038002200420042902c402370308200441386a41386a221c2010290300370300200441386a41306a221d200a290300370300200441386a41286a221e2007290300370300200441386a41206a221f200429038002370300200441386a41186a2220200c290300370300200441386a41106a2221200d290300370300200441386a41086a2222200e290300370300200420042903e0013703382010201c290300370300200a201d2903003703002007201e290300370300200441e0016a41206a221c201f290300370300200c2020290300370300200d2021290300370300200e2022290300370300200420042903383703e001200441f8006a41186a2020290300370300200441f8006a41106a2021290300370300200441f8006a41086a20222903003703002004200429033837037820112010290300370300200f200a290300370300200820072903003703002004200b3602c0022004201c2903003703a002200441c4026a22072004290308370200201b201a2903003702002019201829030037020020172016290300370200201520142903003702002013201228020036020020112903002109200f200f290300222320027c22243703002011200920037c2024202354ad7c37030020082903002109200420042903a002222320027c22243703a0022008200920037c2024202354ad7c370300200441c0016a20012002200310b80120043502c00121022005290300210920062903002103200441f8006a200441a0026a10990402402007280200450d0020042802c002102c0b200242018521020c010b420021020b2000200337030820002002370300200041106a2009370300200441f0026a24000baf0603037f047e037f230022022103200241a0026b41607122022400200141186a220429000021052004200229039801370000200129001021062001200229039001370010200129000821072001200229038801370008200241003a00800120012900002108200120022903800137000020022005370338200220063703302002200737032820022008370320200141206a2d0000210420024180016a41176a2209200537000020024180016a41106a220a200229003137030020024180016a41086a220b20022900293703002002200229002137038001024002402008a741ff01714101460d00200041003602000c010b200241176a2009290000370000200241106a200a290300370300200241086a200b2903003703002002200229038001370300200220043a001f200241f0006a200210890420024180016a20022802702204200228027810f203024020022d0084014102470d00200241003602e801200242013703e001200241f0016a41146a410d360200200241fc016a410b3602002002410736028c0220024196e0c500360288022002410b3602f4012002410a36029402200241c9f8c200360290022002200241f0006a36028002200220024190026a3602f801200220024188026a3602f0012002200241e0016a36029c02200241206a41146a410336020020024203370224200241a89cc5003602202002200241f0016a3602302002419c026a41c49ac500200241206a10391a20023502e80142208620023502e00184100420004100360200024020022802e401450d0020022802e001102c0b2002280274450d012002280270102c200324000f0b20024180016a4104722109200228028001210a02402002280274450d002004102c0b200241206a200941c20010db051a200141206a200241e1006a2d00003a0000200141186a200241d9006a290000370000200141106a200241d1006a290000370000200141086a200241c9006a29000037000020012002290041370000200020022903003700042000410c6a200241086a290300370000200041146a200241106a2903003700002000411c6a200241186a29030037000020004101360200200041246a200a360200200324000f0b200324000be50703037f047e037f230022022103200241a0036b41607122022400200141186a220429000021052004200229039802370000200129001021062001200229039002370010200129000821072001200229038802370008200241003a0080022001290000210820012002290380023700002002200537039801200220063703900120022007370388012002200837038001200141206a2d0000210420024180026a41176a2209200537000020024180026a41106a220a20022900910137030020024180026a41086a220b200229008901370300200220022900810137038002024002402008a741ff01714101460d00200041023a00300c010b200241186a41176a2009290000370000200241186a41106a200a290300370300200241186a41086a200b2903003703002002200229038002370318200220043a0037200241f0016a200241186a108b0420024180026a20022802f001220420022802f80110ee03024020022d0090024102470d00200241003602e802200242013703e002200241f0026a41146a410d360200200241fc026a410b3602002002410736028c0320024196e0c500360288032002410b3602f4022002410a36029403200241aff8c200360290032002200241f0016a36028003200220024190036a3602f802200220024188036a3602f0022002200241e0026a36029c03200241386a41146a41033602002002420337023c200241a89cc5003602382002200241f0026a3602482002419c036a41c49ac500200241386a10391a20023502e80242208620023502e002841004200041023a0030024020022802e402450d0020022802e002102c0b20022802f401450d0120022802f001102c200324000f0b20024180016a20024180026a41d80010db051a024020022802f401450d002004102c0b200241f0026a41106a220420024180016a41106a280200360200200241f0026a41086a220920024180016a41086a29030037030020022002290380013703f002200241386a20024194016a41c20010db051a200141206a200241f9006a2d00003a0000200141186a200241f1006a290000370000200141106a200241e9006a290000370000200141086a200241e1006a2900003700002001200229005937000020024180026a41186a200241186a41186a290300220537030020024180026a41106a200241186a41106a290300220837030020024180026a41086a200241186a41086a2903002206370300200020022903182207370200200041086a2006370200200041106a2008370200200041186a20053702002002200737038002200041206a20022903f002370200200041286a2009290300370200200041306a2004280200360200200324000f0b200324000bf30302047f027e230041c0016b22022400200241086a20011098040240024020022d00084101470d0020024180016a41186a200241216a29000037030020024180016a41106a200241196a29000037030020024180016a41086a200241116a2900003703002002200229000937038001200241306a41086a22034196e0c500ad4280808080f000841002220141086a290000370300200220012900003703302001102c200241a0016a41086a22042003290300370300200220022903303703a001200341d9f8c200ad4280808080e000841002220141086a290000370300200220012900003703302001102c200241b0016a41086a22052003290300370300200220022903303703b001200241306a20024180016a109f01024041c000102a2201450d00200120022903a001370000200120022903b00137001020012002290030370020200141086a2004290300370000200141186a2005290300370000200141286a2003290000370000200141306a200241306a41106a290000370000200141386a200241306a41186a2203290000370000200241306a200141c00010e603200329030021062002290340210720022802542104200228025021032001102c2003450d012004450d022003102c0c020b1033000b42002107420021060b2000200737030020002006370308200241c0016a24000bba1105017f047e017f057e047f230041c0026b22052400200541a0016a20001098040240024020052d00a0014101470d00200541306a41186a200541b9016a290000370300200541c0006a200541b1016a290000370300200541306a41086a200541a9016a290000370300200520052900a101370330200541a0016a200541306a10f90220052802c001450d00200541d0006a200541a0016a41d00010db051a200541d0006a41086a290300210620052903502107024002402005290360220820012008200154200541d0006a41186a290300220920025420092002511b220a1b220b20092002200a1b220c8450450d002007210d2006210e0c010b200541e8006a220a2009200c7d2008200b54ad7d220f37030020052008200b7d220d37036002400240200d428080e983b1de1656200f420052200f501b450d00200b2108200c21090c010b200a420037030020054200370360200f20027c200d20017c2201200d54ad7c21020b20054200200620097d2007200854ad7d220b200720087d220f200756200b200656200b2006511b220a1b220e37035820054200200f200a1b220d370350200220097d2001200854ad7d2102200120087d21010b02400240024002400240200541f8006a28020022100d004100210a410021100c010b2005280270210a201041186c21114100211003400240200a2903002208200120012008562002200a41086a221229030022095620022009511b22131b220b2009200220131b220c84500d00200a2008200b7d220d370300200a2009200c7d2008200b54ad7d220f37030802400240200d428080e983b1de1656200f420052200f501b450d002001210f200b2108200c21090c010b200a4200370308200a42003703002002200f7c2001200d7c220f200154ad7c21020b200541d0006a41086a221342002013290300220120097d2005290350220b200854ad7d220c200b20087d220d200b56200c200156200c2001511b22131b220e37030020054200200d20131b220d370350200220097d200f200854ad7d2102200f20087d210120122903002109200a29030021080b024020082009844200520d00200a41186a210a201041016a2110201141686a22110d010b0b2005280278220a2010490d010b200541003602780240200a20106b220a450d0002402010450d00200528027022132013201041186c6a200a41186c10dc051a200541d8006a290300210e2005290350210d0b2005200a3602780b42002007200d7d220820082007562006200e7d2007200d54ad7d220920065620092006511b220a1b220842002009200a1b22098450450d010c020b41dafec500411c41acfec5001036000b200541a0016a41086a2210418be9c500ad42808080808001841002220a41086a2900003703002005200a2900003703a001200a102c200541a0026a41086a22132010290300370300200520052903a0013703a002201041d6b5c000ad4280808080b001841002220a41086a2900003703002005200a2900003703a001200a102c200541b0026a41086a22112010290300370300200520052903a0013703b002200541a0016a2000109f0141c000102a220a450d02200a20052903a002370000200a20052903b002370010200a20052900a001370020200a41086a2013290300370000200a41186a2011290300370000200a41286a2010290000370000200a41306a200541a0016a41106a290000370000200a41386a200541a0016a41186a290000370000200541186a200a41c000109e01200541186a41106a29030021022005290320210120052802182110200a102c20002001420020101b22012008200120012008562002420020101b220b200956200b2009511b220a1b22027d200b2009200b200a1b220c7d2001200254ad7d10a20102400240200820027d220b2009200c7d2008200254ad7d220f844200520d002004427f2004290300220220087c22012001200254220a200441086a2210290300220220097c200aad7c220120025420012002511b220a1b3703002010427f2001200a1b3703000c010b200541a0016a41086a2210418be9c500ad42808080808001841002220a41086a2900003703002005200a2900003703a001200a102c200541a0026a41086a22132010290300370300200520052903a0013703a002201041e1b5c000ad4280808080f001841002220a41086a2900003703002005200a2900003703a001200a102c200541b0026a41086a22112010290300370300200520052903a0013703b002200541a0016a2000109f0141c000102a220a450d03200a20052903a002370000200a20052903b002370010200a20052900a001370020200a41086a2013290300370000200a41186a2011290300370000200a41286a2010290000370000200a41306a200541a0016a41106a290000370000200a41386a200541a0016a41186a2900003700002005200a41c000109e01200541106a29030021012005290308210d20052802002110200a102c2000200d420020101b220d200b200d200d200b562001420020101b220e200f56200e200f511b220a1b22017d200e200f200e200a1b22067d200d200154ad7d10aa012004427f2004290300220d200120027c220e7c22022002200d54220a200441086a221029030022022006200c7c200e200154ad7c7c200aad7c220c200254200c2002511b220a1b3703002010427f200c200a1b370300200b20017d2202200f20067d200b200154ad7d220f84500d00200342002003290300220120027d220b200b200156200341086a220a290300220b200f7d2001200254ad7d2202200b562002200b511b22101b370300200a4200200220101b3703000b200541306a200541d0006a109904200541d8016a2009370300200541d0016a2008370300200541a0016a41086a41013a0000200541a9016a2000290000370000200541b1016a200041086a290000370000200541b9016a200041106a290000370000200541c1016a200041186a290000370000200541043a00a00141014100200541a0016a1092010b200541f4006a280200450d002005280270102c0b200541c0026a24000f0b1033000be00301047f230041f0006b22022400200241086a41086a22034196e0c500ad4280808080f000841002220441086a290000370300200220042900003703082004102c200241306a41086a2205200329030037030020022002290308370330200341d3f8c200ad4280808080e000841002220441086a290000370300200220042900003703082004102c200241c0006a41086a2204200329030037030020022002290308370340200241d0006a2001109f01024041c000102a2203450d00200320022903303700002003200229034037001020032002290350370020200341086a2005290300370000200341186a2004290300370000200341286a200241d0006a41086a2205290300370000200341306a200241e0006a2204290300370000200341386a200241d0006a41186a2201290300370000200241086a200341c00010d3012005200241086a41096a2900003703002004200241086a41116a2900003703002001200241086a41196a290000370300200220022900093703500240024020022d00084101460d00200041003a00000c010b200041013a000020002002290350370001200041096a200241d8006a290300370000200041116a2004290300370000200041196a20012903003700000b2003102c200241f0006a24000f0b1033000bb30401067f230041d0006b22022400200242f3e885db96cddbb320370308200241086a2001412c6a22032001290300200141086a290300417f411f10be01200241306a41086a22044196e0c500ad4280808080f000841002220541086a290000370300200220052900003703302005102c200241106a41086a2206200429030037030020022002290330370310200441d9f8c200ad4280808080e000841002220541086a290000370300200220052900003703302005102c200241206a41086a2207200429030037030020022002290330370320200241306a2000109f01024041c000102a2205450d00200520022903103700002005200229032037001020052002290030370020200541086a2006290300370000200541186a2007290300370000200541286a2004290000370000200541306a200241306a41106a290000370000200541386a200241306a41186a29000037000020024100360238200242013703302003200241306a10910120022001360220200241206a200241306a108a012002200141106a360220200241206a200241306a108a0120012802202104200141286a2802002201200241306a106702402001450d002004200141186c6a2101034020022004360220200241206a200241306a108a01200441106a200241306a1089012001200441186a2204470d000b0b200228023421042005ad4280808080800884200235023842208620022802302201ad84100102402004450d002001102c0b2005102c200241d0006a24000f0b1033000b130020004110360204200041e4fdc2003602000bc90405057f017e017f027e037f230041e0006b22002400200041206a41186a22014200370300200041206a41106a22024200370300200041206a41086a2203420037030020004200370320200041d0006a41086a22044196e0c500ad4280808080f0008422051002220641086a290000370300200020062900003703502006102c2003200429030037030020002000290350220737034020002007370320200441d8e0c500ad428080808080018422081002220641086a290000370300200020062900003703502006102c200220002903502207370300200041086a22092003290300370300200041106a220a2007370300200041186a220b200429030037030020002007370340200020002903203703000240024002404100200010ec032206200641ff01714104461b41ff0171417f6a220641024b0d0020060e03010001010b20014200370300200242003703002003420037030020004200370320200420051002220641086a290000370300200020062900003703502006102c2003200429030037030020002000290350220737034020002007370320200420081002220641086a290000370300200020062900003703502006102c200041c0006a41086a2004290300220737030020002000290350220537034020022005370000200241086a200737000020092003290300370300200a2002290300370300200b2001290300370300200020002903203703004101102a2204450d01200441013a00002000ad42808080808004842004ad4280808080108410012004102c0b200041e0006a24000f0b1033000b340020004196e0c50036020420004100360200200041146a411a360200200041106a41ccafc300360200200041086a42073702000b5301017f02404110102a2202450d002002420037000820024200370000200241104120102e2202450d0020024200370010200042a0808080800437020420002002360200200241186a42003700000f0b1033000bff0503027f027e047f230041106b2203240020034100360208200342013703002002200310670240024002402002450d002001200241d8006c6a21040340200141386a2003109101200141086a2903002105200129030021060240024020032802042207200328020822026b4110490d00200328020021070c010b200241106a22082002490d04200741017422022008200220084b1b22024100480d040240024020070d002002102a21070c010b200328020020072002102e21070b2007450d032003200236020420032007360200200328020821020b200720026a22072005370008200720063700002003200241106a36020820012802202102200128022822072003106702402007450d002002200741306c6a2109034020022003109101200241286a2903002105200241206a29030021060240024020032802042208200328020822076b4110490d00200328020021080c010b200741106a220a2007490d0620084101742207200a2007200a4b1b22074100480d060240024020080d002007102a21080c010b200328020020082007102e21080b2008450d052003200736020420032008360200200328020821070b200820076a22082005370008200820063700002003200741106a3602082009200241306a2202470d000b0b200128022c2102200141346a28020022072003106702402007450d0020074105742107034020022003109101200241206a2102200741606a22070d000b0b200141186a2903002105200129031021060240024020032802042207200328020822026b4110490d00200328020021070c010b200241106a22082002490d04200741017422022008200220084b1b22024100480d040240024020070d002002102a21070c010b200328020020072002102e21070b2007450d032003200236020420032007360200200328020821020b200720026a22072005370008200720063700002003200241106a360208200141d8006a22012004470d000b0b20002003290300370200200041086a200341086a280200360200200341106a24000f0b1033000b1035000b6701027f230041106b22022400200241003602082002420137030002404104102a22030d001033000b2003410036000020024284808080c00037020420022003360200410020021067200041086a200228020836020020002002290300370200200241106a24000b8d0201037f230041c0006b22022400200241186a4200370300200241106a22034200370300200241086a4200370300200241286a22044100360200200242003703002002420837032020024100360238200242013703302002200236023c2002413c6a200241306a108a012002200336023c2002413c6a200241306a108a012002280220210320042802002204200241306a106702402004450d00200441306c21040340200341106a200241306a1091012002200336023c200341306a21032002413c6a200241306a108a01200441506a22040d000b0b20002002290330370200200041086a200241306a41086a28020036020002402002280224450d002002280220102c0b200241c0006a24000be20101047f230041106b220224002002410036020c02404101102a2203450d0002400240200228020c2204413f4b0d00200320044102743a0000410121050c010b0240200441808001490d0002402004418080808004490d00200341033a0000200228020c210441052105200341014105102e2203450d03200320043600010c020b41042105200341014104102e2203450d02200320044102744102723600000c010b41022105200341014102102e2203450d01200320044102744101723b00000b200020053602082000200536020420002003360200200241106a24000f0b1033000b2c01017f02404104102a22020d001033000b20004284808080c00037020420002002360200200241043600000b130020004102360204200041a0dbc3003602000b2d01017f02404104102a22020d001033000b20004284808080c00037020420002002360200200241a0053600000b2c01017f02404104102a22020d001033000b20004284808080c00037020420002002360200200241063600000b9f4312057f017e017f017e027f027e047f017e067f017e077f027e027f017e067f027e017f027e230041f0036b2205240010a301200541c8036a41186a22064200370300200541c8036a41106a22074200370300200541c8036a41086a22084200370300200542003703c80320054188036a41086a22094196e0c500ad4280808080f00084220a1002220b41086a2900003703002005200b29000037038803200b102c200820092903003703002005200529038803220c3703c8022005200c3703c803200941e0e0c500ad4280808080b002841002220b41086a2900003703002005200b29000037038803200b102c2007200529038803220c37030020054198036a41086a220b200829030037030020054198036a41106a220d200c37030020054198036a41186a220e20092903003703002005200c3703d802200520052903c80337039803200541203602ec01200520054198036a3602e80120054188026a20054198036aad220f428080808080048422101003108d010240024020052802880222110d00410021120c010b200528028c0221130240024020054188026a41086a2802004104490d0020112800002114410121120c010b41002112200541003602b002200542013703a8022005410b36028c032005200541e8016a360288032005200541a8026a3602d802200541dc036a4101360200200542013702cc03200541d0b0c2003602c803200520054188036a3602d803200541d8026a41c49ac500200541c8036a10391a20053502b00242208620053502a802841004024020052802ac02450d0020052802a802102c0b0b2013450d002011102c0b200642003703002007420037030020084200370300200542003703c8032009200a1002221141086a29000037030020052011290000370388032011102c200820092903003703002005200529038803220c3703c8022005200c3703c8032009419de0c500ad4280808080a001841002221141086a29000037030020052011290000370388032011102c200541d8026a41086a22132009290300220c370300200520052903880322153703d80220072015370000200741086a2216200c370000200b2008290300370300200d2007290300370300200e2006290300370300200520052903c80337039803200541e0016a20054198036a412010940120052802e401211720052802e0012118200642003703002007420037030020084200370300200542003703c8032009200a1002221141086a29000037030020052011290000370388032011102c200820092903003703002005200529038803220a3703c8022005200a3703c803200941a7e0c500ad4280808080b003841002221141086a29000037030020052011290000370388032011102c20132009290300220a3703002005200529038803220c3703d8022007200c3700002016200a370000200b2008290300370300200d2007290300370300200e2006290300370300200520052903c80337039803200541d8016a20054198036a41201094012017410020181b2219211702400240024020052802dc01410020052802d8011b20044d0d00200541c8036a41186a220b4200370300200541c8036a41106a220d4200370300200541c8036a41086a22084200370300200542003703c80320054188036a41086a22094196e0c500ad4280808080f000841002220641086a29000037030020052006290000370388032006102c200820092903003703002005200529038803220a3703c8022005200a3703c803200941f3e0c500ad4280808080a001841002220641086a29000037030020052006290000370388032006102c200541d8026a41086a2009290300220a3703002005200529038803220c3703d8022007200c370000200741086a200a37000020054198036a41086a200829030037030020054198036a41106a200d29030037030020054198036a41186a200b290300370300200520052903c80337039803200541c8036a20054198036a10eb0320052802c8032209410420091b220b20052902cc03420020091b220a422088a741037422096a210803402009450d02200941786a21092008417c6a2106200841786a2108200628020020044b0d000b200b20096a2802002117200aa7450d00200b102c0b200541c8036a41186a22184200370300200541c8036a41106a221a4200370300200541c8036a41086a22164200370300200542003703c80320054188036a41086a221b4196e0c500ad4280808080f00084221c1002220941086a29000037030020052009290000370388032009102c2016201b2903003703002005200529038803220a3703c8022005200a3703c803201b41fde0c500ad4280808080e00284220a1002220941086a29000037030020052009290000370388032009102c200541d8026a41086a221d201b290300220c370300200520052903880322153703d80220072015370000200741086a221e200c37000020054198036a41086a2213201629030037030020054198036a41106a221f201a29030037030020054198036a41186a22202018290300370300200520052903c80337039803200541d0016a20054198036a412010940120052802d401210820052802d001210620184200370300201a420037030020164200370300200542003703c803201b201c1002220941086a29000037030020052009290000370388032009102c2016201b2903003703002005200529038803220c3703c8022005200c3703c803201b200a1002220941086a29000037030020052009290000370388032009102c201d201b290300220a3703002005200529038803220c3703d8022007200c370000201e200a37000020132016290300370300201f201a29030037030020202018290300370300200520052903c8033703980320052008201920064101461b3602c8032010200541c8036aad4280808080c00084100120032001200120034b1b2221450d014100201941e07a6a2209200920194b1b21222014410020121b212320054188036aad4280808080c000842124200f42808080808002842125201941016a2126200021114100212702400240034020184200370300201a420037030020164200370300200542003703c803201b201c1002220941086a29000037030020052009290000370388032009102c2016201b2903003703002005200529038803220a3703c8022005200a3703c803201b41dcc1c300ad4280808080d001841002220941086a29000037030020052009290000370388032009102c201d201b290300220a3703002005200529038803220c3703d8022007200c370000201e200a37000020132016290300370300201f201a29030037030020202018290300370300200520052903c80337039803200541c8036a20054198036a412010d00120052902cc03420020052802c80322091b220a422088a741057421082027220641016a2127200220064102746a210e2000200641e0006c6a210b2009410120091b220d210902400340024020080d00410021040c020b4101210420112009460d012009200b412010dd052106200841606a2108200941206a210920060d000b0b0240200aa7450d00200d102c0b0240024020040d00200e2802002109200542003703d002200542003703c802200541c0016a200b290320220a200b41286a290300428094ebdc03420010e105200541a0016a200b290330220c200b41386a290300428094ebdc03420010e105200541b0016a20052903c0012210200541c0016a41086a290300220f4280ec94a37c427f10e005200541f0006a2010200f2009ad2215420010e00520054190016a20052903a0012210200541a0016a41086a290300220f4280ec94a37c427f10e00520054180016a2010200f2015420010e005200542003703e002200542003703d802200c2005290390017c20157e2210428094ebdc0380210c02400240024020052903704200200a20052903b0017c20157e220a200a428094ebdc0380220a4280ec94a37c7e7c4280cab5ee0156200aa76a2208ad7d85200541f0006a41086a29030042002008410047ad7d8584500d00200529038001210a20054180016a41086a290300212820054188026a2017200b108e042005280288022108200520052802900222063602ec01200520083602e801200541a8026a2006ad4220862008ad841003108d010240024020052802a80222060d004200210f0c010b20052802ac0221040240024020052802b002220d4104490d00200d417c6a410f4d0d00200628000021294201210f0c010b200541003602d003200542013703c8032005410b36028c032005200541e8016a360288032005200541c8036a3602ec03200541013602ac032005420137029c03200541d0b0c20036029803200520054188036a3602a803200541ec036a41c49ac50020054198036a10391a20053502d00342208620053502c803841004024020052802cc03450d0020052802c803102c0b4200210f0b2004450d002006102c0b0240200528028c02450d002008102c0b200920294100200f4200521b22034d0d0320054198036a2017200b108e0420053502a003210f20052802980321064110102a2208450d0420082009360000200841104120102e2209450d042009200a2010200c4280ec94a37c7e7c4280cab5ee0156200ca76aad7c220c3700042009410c6a2028200c200a54ad7c220a370000200f4220862006ad842009ad4280808080c0028410012009102c0240200528029c03450d002006102c0b200541a8026a200b108f0420052802b002450d0120054188026a41106a200541a8026a41106a28020036020020054188026a41086a200541a8026a41086a290300370300200520052903a802370388020c020b20054200370390032005420037038803200542003703f001200542003703e801200541a8026a200b108f040240024020052802b002450d0020054188026a41106a200541a8026a41106a28020036020020054188026a41086a200541a8026a41086a290300370300200520052903a802370388020c010b200541003602d803200542043703d003200520223602cc03200541003602c803200b200541c8036a10910420054188026a41106a20052802d80336020020054188026a41086a20052903d003370300200520052903c803370388020b2013200529038802370200201341086a20054188026a41086a290300370200201341106a20054188026a41106a280200360200200541003a00c0032005200b36029c032005202236029803200520233602bc032005200541e8016a3602b803200520054188036a3602b403200541c8036a20054198036a201710a704024020052802d0034102460d0020052802c803220d20052802a003470d00410021090240202620052802a40322064d0d00024020052802b003220820052802ac03470d00200841016a22092008490d09200841017422042009200420094b1b220941ffffffff03712009470d09200941027422044100480d090240024020080d002004102a21040c010b20052802a80320084102742004102e21040b2004450d06200520093602ac03200520043602a8030b20052802a803220941046a2009200841027410dc051a2009202620066b360200200520263602a403410121092005200841016a3602b0032005200d41016a220d3602a0030b200520093a00c003200b108604200b1087040240200b108a0241ff017122084102460d002008410171450d00109b040b2009450d0020052802a403210e02400240024020052802b0032201450d0020052802a80321082001410274210441002106200e210902400340200920224d0d01200641016a2106200920082802006b2109200841046a21082004417c6a22040d000c020b0b200120064f0d010b2005200e2022200e20224b1b3602a4030c010b2005200e2022200e20224b1b3602a403200520063602b00341000d00200d20016b200d20066b4f0d00410020016b210903402016200b41086a290200370300201a200b41106a2902003703002018200b41186a2902003703002005200b2902003703c8032005200d20096a3602e803200541c8036a1088042006200941016a22096a0d000b0b200b20131091040b20052802ac03450d0220052802a803102c0c020b200541003602d803200542043703d003200520223602cc03200541003602c803200b200541c8036a10910420054188026a41106a20052802d80336020020054188026a41086a20052903d003370300200520052903c803370388020b2013200529038802370200201341086a222a20054188026a41086a222b290300370200201341106a222c20054188026a41106a222d280200360200200541003a00c0032005200b36029c032005202236029803200520233602bc032005200541d8026a3602b8032005200541c8026a3602b403200541e8006a20054198036a2017200c200a10a80420052802a003210e02400240024020052802684101470d00200528026c2208200e460d010b20052d00c00321090c010b02400240202620052802a40322094d0d00024020052802b003220620052802ac03470d00200641016a22042006490d082006410174220d2004200d20044b1b220441ffffffff03712004470d082004410274220d4100480d080240024020060d00200d102a210d0c010b20052802a8032006410274200d102e210d0b200d450d05200520043602ac032005200d3602a8030b20052802a803220441046a2004200641027410dc051a2004202620096b360200200520263602a403410121092005200641016a3602b0032005200841016a22083602a0030c010b20052d00c00321090b200520093a00c003200b108604200b1087040240200b108a0241ff017122064102460d002006410171450d00109b040b2008210e0b0240200941ff0171450d0020052802a4032101200528029803210d02400240024020052802b0032212450d0020052802a8032108201241027421044100210620012109024003402009200d4d0d01200641016a2106200920082802006b2109200841046a21082004417c6a22040d000c020b0b201220064f0d010b20052001200d2001200d4b1b3602a4030c010b20052001200d2001200d4b1b3602a403200520063602b00341000d00200e20126b200e20066b4f0d00410020126b2108200528029c0321090340200941086a290000210a200941106a290000210c200929000021102018200941186a290000370300201a200c3703002016200a370300200520103703c8032005200e20086a3602e803200541c8036a1088042006200841016a22086a0d000b0b200528029c0320131091040b024020052802ac03450d0020052802a803102c0b4200210a200542003703900320054200370388030240024002400240200b41c8006a220928020022080d00410821120c010b2008ad220a42307e220c422088a70d07200ca722084100480d072008102a2212450d04200928020022090d010b4200210f420021280c010b200b41c0006a2802002201200941306c6a212e2003ad212f0340200542003703f001200542003703e801200541c0006a2001290300220f200141086a290300428094ebdc03420010e105200541306a2005290340220c200541c0006a41086a29030022104280ec94a37c427f10e005200541206a200c2010202f420010e005200541106a200c20102015420010e00520054198036a2017200141106a220d108d04200541d0006a200528029803220820052802a003109e014200200541106a41086a29030020052903102210200f20052903307c220f20157e220c200c428094ebdc0380220c4280ec94a37c7e7c4280cab5ee0156200ca76aad7c220c201054ad7c2210200541206a41086a29030020052903202228200f202f7e220f200f428094ebdc0380220f4280ec94a37c7e7c4280cab5ee0156200fa76aad7c220f202854ad7c7d200c200f54ad7d2228200c200f7d220f200c56202820105620282010511b22091b21104200200f20091b210c200541d0006a41106a290300210f20052903582128200528025021090240200528029c03450d002008102c0b200541c8036a2017200d108d0420052802c803210820053502d003213020052028420020091b2228200c7c220c370398032005200f420020091b20107c200c202854ad7c22103703a00320304220862008ad8420251001024020052802cc03450d002008102c0b200541a8026a200d108f040240024020052802b002450d00202d200541a8026a41106a280200360200202b200541a8026a41086a290300370300200520052903a802370388020c010b200541003602d803200542043703d003200520223602cc03200541003602c803200d200541c8036a109104202d20052802d803360200202b20052903d003370300200520052903c803370388020b2013200529038802370200202a202b290300370200202c202d280200360200200541003a00c0032005200d36029c032005202236029803200520233602bc032005200541e8016a3602b803200520054188036a3602b403200541086a20054198036a2017200c201010a80420052802a003210302400240024020052802084101470d00200528020c22062003460d010b20052d00c00321090c010b02400240202620052802a40322094d0d00024020052802b003220820052802ac03470d00200841016a22042008490d0a2008410174220e2004200e20044b1b220441ffffffff03712004470d0a2004410274220e4100480d0a0240024020080d00200e102a210e0c010b20052802a8032008410274200e102e210e0b200e450d07200520043602ac032005200e3602a8030b20052802a803220441046a2004200841027410dc051a2004202620096b360200200520263602a403410121092005200841016a3602b0032005200641016a22033602a0030c010b20052d00c0032109200621030b200520093a00c003200d108604200d1087040b0240200941ff0171450d0020052802a4032114200528029803210e02400240024020052802b0032231450d0020052802a8032108203141027421044100210620142109024003402009200e4d0d01200641016a2106200920082802006b2109200841046a21082004417c6a22040d000c020b0b203120064f0d010b20052014200e2014200e4b1b3602a4030c010b20052014200e2014200e4b1b3602a403200520063602b00341000d00200320316b200320066b4f0d00410020316b2108200528029c0321090340200941086a290000210c200941106a29000021102009290000210f2018200941186a290000370300201a20103703002016200c3703002005200f3703c8032005200320086a3602e803200541c8036a1088042006200841016a22086a0d000b0b200528029c0320131091040b024020052802ac03450d0020052802a803102c0b200d41086a290000210c200d29000021102020200d41186a290000370300201f200d41106a2900003703002013200c3703002005201037039803200541e8016a41086a290300210c20052903e801211002400240200a422088220fa72209200aa7460d00200921080c010b200941016a22062009490d07200fa722084101742204200620062004491bad220a42307e220f422088a70d07200fa722064100480d070240024020090d002006102a21120c010b2012200941306c2006102e21120b2012450d040b2013290300210f201f29030021282020290300213020052903980321322012200841306c6a2209201037032020092032370300200941286a200c370300200941186a2030370300200941106a2028370300200941086a200f370300200a42ffffffff0f83200841016aad42208684210a200141306a2201202e470d000b201b2903002128200529038803210f0b200541c8026a41086a2204290300211020052903c8022115200541e8016a41086a2209200b41086a290300370300200541e8016a41106a2208200b41106a290300370300200541e8016a41186a2206200b41186a2903003703002005200b2903003703e8012012450d00201d290300212f20052903d802213020054188026a41186a220e2006290300370300202d2008290300370300202b2009290300370300200520052903e80137038802200b280258220d41ffffff3f71200d470d03200d4105742206417f4c0d03200b28025021090240024020060d004101210b0c010b2006102a220b450d020b02400240200d0d00410021010c010b200b2108034020082009290000370000200841186a200941186a290000370000200841106a200941106a290000370000200841086a200941086a290000370000200841206a2108200941206a2109200641606a22060d000b200d41057441606a41057641016a21010b200541a8026a41186a2203200e290300370300200541a8026a41106a220e202d290300370300200541a8026a41086a2214202b29030037030020052005290388023703a802201b201c1002220941086a29000037030020052009290000370388032009102c2004201b29030037030020052005290388033703c802201b41d1fdc200ad42808080808002841002220941086a29000037030020052009290000370388032009102c201d201b29030037030020052005290388033703d8022005201936028803202020241006220941186a290000370300201f200941106a2900003703002013200941086a29000037030020052009290000370398032009102c20182020290300370300201a201f2903003703002016201329030037030020052005290398033703c80341c000102a2206450d01200620052903c802370000200620052903d802370010200620052903c80337002041082104200641086a200541c8026a41086a290300370000200641186a200541d8026a41086a290300370000200641286a200541c8036a41086a290300370000200641306a201a290300370000200641386a201829030037000020054198036a200641c00010e90302400240200528029803222b0d00410021084200210c410021090c010b200529029c03220c422088a72108200ca72109202b21040b20202003290300370300201f200e29030037030020132014290300370300200520052903a80237039803024020082009470d0002402008200ca7470d00200841016a22092008490d062008410174220e2009200e20094b1bad223242d8007e2233422088a70d062033a722094100480d060240024020080d002009102a21040c010b2004200841d8006c2009102e21040b2004450d03200c42808080807083203284210c0b200c422088a721080b2004200841d8006c220e6a22092015200f7c220f3703102009202f370308200920303703002009200b36022c20092012360220200941186a201020287c200f201554ad7c370300200941346a2001360200200941306a200d360200200941246a200a3702002009200529039803370338200941c0006a2013290300370300200941c8006a201f290300370300200941d0006a20202903003703000240024020040d002006ad428080808080088410050c010b20054198036a2004200841016a2209109e042006ad428080808080088420053502a0034220862005280298032208ad8410010240200528029c03450d002008102c0b200ca7210b02402009450d00200441306a2109200e41d8006a210803400240200941746a280200450d00200941706a280200102c0b02402009280200450d002009417c6a280200102c0b200941d8006a2109200841a87f6a22080d000b0b200b450d002004102c0b2006102c0b201141e0006a211120272021490d010c050b0b1033000b103a000b1035000b200aa7450d00200b102c0b200541f0036a24000bbd0101057f2001280208210302402001410c6a280200220420024d0d0002400240200141186a2802002205450d00200141106a2802002101200541027421062003417f6a2103034002402004200128020022076b220520024b0d00200420024b0d030b200141046a21012003417f6a2103200521042006417c6a22060d000b0b200041023602080f0b2000200736020c2000410136020820002005ad4220862003ad843702000f0b2000410036020820002004ad4220862003ad843702000bc91604027f037e057f047e230041e0026b22052400200541c8016a2001200210a7040240024020052802d0014102470d00410021020c010b20052802c80121062001280204220241086a2900002107200241106a290000210820022900002109200541c8016a41186a200241186a290000370300200541c8016a41106a2008370300200541c8016a41086a2007370300200520093703c801200520063602e801200541b0026a41086a22024196e0c500ad4280808080f000841002220a41086a2900003703002005200a2900003703b002200a102c200541f0016a41086a2002290300370300200520052903b0023703f001200241a8f9c200ad42808080809001841002220a41086a2900003703002005200a2900003703b002200a102c20054180026a41086a2002290300370300200520052903b00237038002024002404104102a2202450d00200542043702b402200520023602b002200541c8016a200541b0026a10910120052802e801210b0240024020052802b402220a20052802b80222026b4104490d0020052802b002210a0c010b200241046a220c2002490d02200a4101742202200c2002200c4b1b22024100480d0202400240200a0d002002102a210a0c010b20052802b002200a2002102e210a0b200a450d01200520023602b4022005200a3602b00220052802b80221020b2005200241046a3602b802200a20026a200b36000020052802b402210a200541b0026a41186a220b20053502b80242208620052802b002220dad841006220241186a290000370300200541b0026a41106a220c200241106a290000370300200541b0026a41086a220e200241086a290000370300200520022900003703b0022002102c20054190026a41186a200b29030037030020054190026a41106a200c29030037030020054190026a41086a200e290300370300200520052903b002370390020240200a450d00200d102c0b41c000102a2202450d00200220052903f00137000020022005290380023700102002200529039002370020200241086a200541f0016a41086a290300370000200241186a20054180026a41086a220b290300370000200241286a20054190026a41086a290300370000200241306a20054190026a41106a290300370000200241386a20054190026a41186a290300370000200541c0003602d402200520023602d00220054180026a2002ad42808080808008841003108d0102400240200528028002220a0d004200210f0c010b200528028402210c02400240200b280200220b4110490d00200b4170714110460d00200a41186a2900002108200a41086a2900002110200a2900102107200a29000021094201210f0c010b200541003602980220054201370390022005410b3602f4012005200541d0026a3602f001200520054190026a3602dc02200541c4026a4101360200200542013702b402200541d0b0c2003602b0022005200541f0016a3602c002200541dc026a41c49ac500200541b0026a10391a2005350298024220862005350290028410040240200528029402450d00200528029002102c0b4200210f0b200c450d00200a102c0b2002102c20084200200f42005222021b21082007420020021b21070240024002402009420020021b220f2003542010420020021b220920045420092004511b0d00200f20038520092004858450450d02200541b8016a20032004428094ebdc03420010e105200541a8016a20052903b8012209200541b8016a41086a290300220f4280ec94a37c427f10e00520054198016a2009200f20013502242210420010e00520054188016a4200200529039801220f201020052903a80120037c7e22092009428094ebdc038022094280ec94a37c7e7c4280cab5ee01562009a76aad7c220920077d2210201020095620054198016a41086a2903002009200f54ad7c220f20087d2009200754ad7d2209200f562009200f511b22021b220f4200200920021b428094ebdc03420010e105200541f8006a200529038801220920054188016a41086a29030022104280ec94a37c427f10e005200541e8006a200920104280cab5ee01420010e005200541e8006a41086a29030020052903682210200f20052903787c22094280cab5ee017e428094ebdc03824280cab5ee01562009420188a76aad7c2209201054ad7c210f410021020c010b200541c8006a20032004428094ebdc03420010e105200541d8006a20032004428094ebdc03420010e205200541386a2005290348200541c8006a41086a29030020013502242210420010e005200541286a420020052903382211201020052903587e22102010428094ebdc038022104280ec94a37c7e7c4280cab5ee01562010a76aad7c221020077d22122012201056200541386a41086a2903002010201154ad7c221120087d2010200754ad7d221020115620102011511b22021b22114200201020021b428094ebdc03420010e105200541186a20052903282210200541286a41086a29030022124280ec94a37c427f10e005200541086a201020124280cab5ee01420010e005200141206a28020022022003200f7d221020022903007c2212370300200241086a2202200420097d2003200f54ad7d20022903007c2012201054ad7c370300200541086a41086a2903002005290308220f201120052903187c22094280cab5ee017e428094ebdc03824280cab5ee01562009420188a76aad7c2209200f54ad7c210f410121020b024002402009200f84500d00200128021c22022002290300221020097c2211370300200241086a22022002290300200f7c2011201054ad7c3703002008200f7c200720097c2209200754ad7c2108200921070c010b2002450d010b200141013a0028200541b0026a41086a22024196e0c500ad4280808080f000841002220141086a290000370300200520012900003703b0022001102c200541f0016a41086a2002290300370300200520052903b0023703f001200241a8f9c200ad42808080809001841002220141086a290000370300200520012900003703b0022001102c20054180026a41086a2002290300370300200520052903b002370380024104102a2202450d01200542043702b402200520023602b002200541c8016a200541b0026a10910120052802e801210a0240024020052802b402220120052802b80222026b4104490d0020052802b00221010c010b200241046a220b2002490d0320014101742202200b2002200b4b1b22024100480d030240024020010d002002102a21010c010b20052802b00220012002102e21010b2001450d02200520023602b402200520013602b00220052802b80221020b2005200241046a3602b802200120026a200a36000020052802b4022101200541b0026a41186a220a20053502b80242208620052802b002220ead841006220241186a290000370300200541b0026a41106a220b200241106a290000370300200541b0026a41086a220c200241086a290000370300200520022900003703b0022002102c20054190026a41186a200a29030037030020054190026a41106a200b29030037030020054190026a41086a200c290300370300200520052903b0023703900202402001450d00200e102c0b41c000102a2202450d01200220052903f00137000020022005290380023700102002200529039002370020200241086a200541f0016a41086a290300370000200241186a20054180026a41086a290300370000200241286a20054190026a41086a290300370000200241306a20054190026a41106a290300370000200241386a20054190026a41186a2903003700004110102a2201450d012001200337000020012004370008200141104120102e2201450d0120012007370010200141186a20083700002002ad42808080808008842001ad428080808080048410012001102c2002102c0b410121020c020b1033000b1035000b2000200636020420002002360200200541e0026a24000bb80302057f017e230041c0006b22022400200241206a41086a22034196e0c500ad4280808080f000841002220441086a290000370300200220042900003703202004102c200241086a2205200329030037030020022002290320370300200341b5fdc200ad4280808080d000841002220441086a290000370300200220042900003703202004102c200241106a41086a2206200329030037030020022002290320370310200241206a2000109f01024041c000102a2204450d00200420022903003700002004200229031037001020042002290020370020200441086a2005290300370000200441186a2006290300370000200441286a2003290000370000200441306a200241306a290000370000200441386a200241206a41186a29000037000002400240200141ff0171220341024d0d004101210342002107410121010c010b024002400240024020030e03000102000b410021010c020b410121010c010b410221010b200220013a00204101102a2203450d01200320013a00004100210142808080801021070b2004ad428080808080088420072003ad841001024020010d002003102c0b2004102c200241c0006a24000f0b1033000bc70201057f230041c0006b22022400200241206a41086a22034196e0c500ad4280808080f000841002220441086a290000370300200220042900003703202004102c200241086a2205200329030037030020022002290320370300200341d3f8c200ad4280808080e000841002220441086a290000370300200220042900003703202004102c200241106a41086a2206200329030037030020022002290320370310200241206a2000109f01024041c000102a22040d001033000b200420022903003700002004200229031037001020042002290020370020200441086a2005290300370000200441186a2006290300370000200441286a2003290000370000200441306a200241306a290000370000200441386a200241206a41186a290000370000200241c000360224200220043602202001200241206a10a1022004102c200241c0006a24000b13002000410a360204200041a4e2c5003602000bba0a02037f017e02400240024002400240024020002802000e0400010203000b02400240200141046a280200200141086a2802002202460d00200128020021030c010b200241016a22032002490d05200241017422042003200420034b1b22044100480d050240024020020d002004102a21030c010b200128020020022004102e21030b2003450d0420012003360200200141046a2004360200200141086a28020021020b200141086a2204200241016a360200200320026a41013a00002000280204210302400240200141046a2802002202200428020022006b4104490d00200128020021020c010b200041046a22042000490d05200241017422002004200020044b1b22004100480d050240024020020d002000102a21020c010b200128020020022000102e21020b2002450d0420012002360200200141046a2000360200200141086a28020021000b200141086a200041046a360200200220006a20033600000f0b02400240200141046a280200200141086a2802002202460d00200128020021030c010b200241016a22032002490d04200241017422042003200420034b1b22044100480d040240024020020d002004102a21030c010b200128020020022004102e21030b2003450d0320012003360200200141046a2004360200200141086a28020021020b200141086a2204200241016a360200200320026a41023a00002000290308210502400240200141046a2802002202200428020022006b4108490d00200128020021020c010b200041086a22032000490d04200241017422002003200020034b1b22004100480d040240024020020d002000102a21020c010b200128020020022000102e21020b2002450d0320012002360200200141046a2000360200200141086a28020021000b200141086a200041086a360200200220006a20053700000f0b02400240200141046a280200200141086a2802002202460d00200128020021030c010b200241016a22032002490d03200241017422042003200420034b1b22044100480d030240024020020d002004102a21030c010b200128020020022004102e21030b2003450d0220012003360200200141046a2004360200200141086a28020021020b200141086a2204200241016a360200200320026a41033a00002000280204210302400240200141046a2802002202200428020022006b4104490d00200128020021020c010b200041046a22042000490d03200241017422002004200020044b1b22004100480d030240024020020d002000102a21020c010b200128020020022000102e21020b2002450d0220012002360200200141046a2000360200200141086a28020021000b200141086a200041046a360200200220006a20033600000f0b02400240200141046a280200200141086a2802002202460d00200128020021030c010b200241016a22032002490d02200241017422042003200420034b1b22044100480d020240024020020d002004102a21030c010b200128020020022004102e21030b2003450d0120012003360200200141046a2004360200200141086a28020021020b200141086a2204200241016a360200200320026a41043a00002000290308210502400240200141046a2802002202200428020022006b4108490d00200128020021020c010b200041086a22032000490d02200241017422002003200020034b1b22004100480d020240024020020d002000102a21020c010b200128020020022000102e21020b2002450d0120012002360200200141046a2000360200200141086a28020021000b200141086a200041086a360200200220006a20053700000f0b1033000b1035000b130020004104360204200041b8ecc3003602000b3400200041afb7c50036020420004100360200200041146a4101360200200041106a41ecf8c300360200200041086a42043702000b4b01027f230041106b2202240002404101102a22030d001033000b200341003a0000200041086a4101360200200241013602042002200336020020002002290300370200200241106a24000b13002000410336020420004198fac3003602000b2c01017f02404104102a22020d001033000b20004284808080c00037020420002002360200200241103600000b2c01017f02404104102a22020d001033000b20004284808080c00037020420002002360200200241033600000b3901017f02404110102a22020d001033000b200242003700082002428080e983b1de16370000200042908080808002370204200020023602000be50902067f027e230041106b2202240020002802102103200041186a2802002204200110670240024002400240200141046a2802002205200141086a28020022066b2004490d00200128020021050c010b200620046a22072006490d02200541017422062007200620074b1b22064100480d020240024020050d002006102a21050c010b200128020020052006102e21050b2005450d0120012005360200200141046a2006360200200141086a28020021060b200141086a2207200620046a360200200520066a2003200410db051a200028021c210502400240200141046a2802002206200728020022046b4104490d00200128020021060c010b200441046a22032004490d02200641017422042003200420034b1b22044100480d020240024020060d002004102a21060c010b200128020020062004102e21060b2006450d0120012006360200200141046a2004360200200141086a28020021040b200141086a2203200441046a360200200620046a20053600002002200136020c2000412c6a2002410c6a109402200041086a29030021082000290300210902400240200141046a2802002206200328020022046b4110490d00200128020021060c010b200441106a22052004490d02200641017422042005200420054b1b22044100480d020240024020060d002004102a21060c010b200128020020062004102e21060b2006450d0120012006360200200141046a2004360200200141086a28020021040b200141086a2205200441106a360200200620046a22042008370008200420093700002000280220210302400240200141046a2802002206200528020022046b4104490d00200128020021060c010b200441046a22052004490d02200641017422042005200420054b1b22044100480d020240024020060d002004102a21060c010b200128020020062004102e21060b2006450d0120012006360200200141046a2004360200200141086a28020021040b200141086a2205200441046a360200200620046a20033600000240024020002802244101460d0002400240200141046a28020020052802002200460d00200128020021040c010b200041016a22042000490d04200041017422062004200620044b1b22064100480d040240024020000d002006102a21040c010b200128020020002006102e21040b2004450d0320012004360200200141046a2006360200200141086a28020021000b200141086a200041016a360200200420006a41003a00000c010b02400240200141046a28020020052802002204460d00200128020021060c010b200441016a22062004490d03200441017422052006200520064b1b22054100480d030240024020040d002005102a21060c010b200128020020042005102e21060b2006450d0220012006360200200141046a2005360200200141086a28020021040b200141086a2205200441016a360200200620046a41013a00002000280228210602400240200141046a2802002204200528020022006b4104490d00200128020021040c010b200041046a22052000490d03200441017422002005200020054b1b22004100480d030240024020040d002000102a21040c010b200128020020042000102e21040b2004450d0220012004360200200141046a2000360200200141086a28020021000b200141086a200041046a360200200420006a20063600000b200241106a24000f0b1033000b1035000b130020004101360204200041f8fcc3003602000b1300200041053602042000419cfec3003602000b3400200041e4d2c50036020420004100360200200041146a4107360200200041106a41f490c400360200200041086a42083702000b3301017f02404110102a22020d001033000b2002420037000820024201370000200042908080808002370204200020023602000b2201017f230041106b22022400200241003602002000200210c903200241106a24000bc70101017f23004190016b22022400200241003a00782002428080848080023703682002420137035820024201370350200242af0137034820024287013703402002420137033820024201370330200242013703282002420137032020024201370318200242013703102002420137030820024280808080c00037036020024280808180800437037020024100360288012002420137038001200241086a20024180016a10e902200041086a200228028801360200200020022903800137020020024190016a24000b130020004110360204200041f899c4003602000b2f01017f02404108102a22020d001033000b2000428880808080013702042000200236020020024280ade2043700000b2e01017f02404104102a22020d001033000b20004284808080c000370204200020023602002002418080013600000b2c01017f02404104102a22020d001033000b20004284808080c00037020420002002360200200241203600000b2d01017f02404108102a22020d001033000b20004288808080800137020420002002360200200242e8073700000b3801017f02404110102a22020d001033000b2002420037000820024280a094a58d1d370000200042908080808002370204200020023602000b3701017f02404110102a22020d001033000b2002420037000820024280c8afa025370000200042908080808002370204200020023602000b3a01017f02404110102a22020d001033000b20024200370008200242808086bdbacdd21a370000200042908080808002370204200020023602000b3b01017f02404110102a22020d001033000b200242003700082002428080a8ec85afd1b101370000200042908080808002370204200020023602000b2c01017f02404104102a22020d001033000b20004284808080c00037020420002002360200200241083600000b2c01017f02404104102a22020d001033000b20004284808080c00037020420002002360200200241023600000ba02a04127f017e017f067e230041f0036b22062400200641d0026a200010ee01410221070240024020062d00d00222084102470d0041012108413421094102210a0c010b200641d0036a41086a220b200641e4026a290200370300200641d0036a41106a220a200641ec026a290200370300200641d0036a41186a220c200641f4026a290200370300200641a8036a41086a220d20064188036a290300370300200641a8036a41106a220e20064190036a290300370300200641a8036a41186a220f20064198036a290300370300200641a8036a41206a2210200641a0036a2903003703002006200641dc026a2902003703d003200620064180036a2903003703a803200641d0026a41086a2802002109024020080d00200641fc026a2802002107200641a0026a41186a200c290300370300200641a0026a41106a200a290300370300200641a0026a41086a200b290300370300200641f8016a41086a200d290300370300200641f8016a41106a200e290300370300200641f8016a41186a200f290300370300200641f8016a41206a2010290300370300200620062903d0033703a002200620062903a8033703f8010b4102210a024020074102470d0041012108413421090c010b200641a8036a41186a200641a0026a41186a290300370300200641a8036a41106a200641a0026a41106a290300370300200641a8036a41086a200641a0026a41086a290300370300200641d0026a41086a200641f8016a41086a290300370300200641d0026a41106a200641f8016a41106a290300370300200641d0026a41186a200641f8016a41186a290300370300200641d0026a41206a200641f8016a41206a290300370300200620062903a0023703a803200620062903f8013703d002410021082007210a0b200641d8016a41086a220c200641a8036a41086a220d290300370300200641d8016a41106a220e200641a8036a41106a220f290300370300200641d8016a41186a2210200641a8036a41186a2211290300370300200641b0016a41086a2212200641d0026a41086a2207290300370300200641b0016a41106a2213200641d0026a41106a220b290300370300200641b0016a41186a2214200641d0026a41186a2215290300370300200641b0016a41206a2216200641d0026a41206a290300370300200620062903a8033703d801200620062903d0023703b0010240024020080d0020064188016a221720062903b001370300200641ec006a200c290300370200200641f4006a200e290300370200200641fc006a201029030037020020064190016a201229030037030020064198016a2013290300370300200641a0016a2014290300370300200641a8016a201629030037030020062009360260200620062903d8013702642006200a3602840120154200370300200b420037030020074200370300200642003703d002200641a0026a41086a22084191b0c200ad4280808080e000841002220941086a290000370300200620092900003703a0022009102c20072008290300370300200620062903a0023703d002200841acb0c200ad4280808080e000841002220941086a290000370300200620092900003703a0022009102c200b20062903a0022218370300200d2007290300370300200f201837030020112008290300370300200620183703d801200620062903d0023703a803200641d8006a200641a8036a4120109401200628025c410020062802581b210c41012107024002402006280284014101470d002017280200200c460d010b200641d0026a200110ee010240024020062d00d002220a4102470d00412e210d41d5b2c400210e0c010b200641a0026a41026a20062d00d3023a0000200641a8036a41086a2207200641e4026a280200360200200620062f00d1023b01a0022006200641dc026a2902003703a803200641ec026a2802002108200641e8026a28020021090240200a0d0041012107412e210d41d5b2c400210e024020080d000c020b2009102c0c010b200641d0026a41086a280200210d20062802d402210e200641d8016a41026a200641a0026a41026a2d00003a0000200641f8016a41086a2007280200360200200620062f01a0023b01d801200620062903a8033703f801200641f0026a2d0000210f410021070b200641c0026a41026a200641d8016a41026a2d00003a0000200641b0016a41086a220a200641f8016a41086a280200360200200620062f01d8013b01c002200620062903f8013703b00120070d00200641e3036a200a280200360000200620062f01c0023b01d0032006200d3600d7032006200e3600d303200620062903b0013700db032006200f3a00ef03200620083600eb03200620093600e7032006200641c2026a2d00003a00d2032006280284012116200628028801211720062005280200220e200541086a280200221241057422086a3602b4012006200e3602b0012006200641e0006a3602b801024002400240024002400240024002402012450d00200e210703402006200741206a22093602b001200641d0026a200a200710c70420062802d00222070d0220092107200841606a22080d000b0b41002110200641003602c802200642043703c0024104210f410021110c010b200641a8036a41086a2209200641d0026a410c6a280200360200200620062902d4023703a8034110102a220f450d01200f2007360200200f20062903a803370204200f410c6a20092802003602002009200641b0016a41086a280200360200200620062903b00122183703a803024002402018a7220820062802ac03220a470d0041012110410121110c010b200641d0026a4104722113200a41606a21154101211041012111034020082107024003402006200741206a22083602a803200641d0026a2009200710c70420062802d002220d0d0120082107200a2008470d000c030b0b200641f8016a41086a201341086a28020022083602002006201329020022183703f801200641d0026a41086a22192008360200200620183703d002024020112010470d00201041016a22082010490d05201041017422112008201120084b1b221141ffffffff00712011470d05201141047422084100480d050240024020100d002008102a210f0c010b200f20104104742008102e210f0b200f450d040b200741206a2108200f20104104746a2214200d360200201420062903d0023702042014410c6a2019280200360200201041016a211020152007470d000b0b200620103602c802200620113602c4022006200f3602c0020b200641f8006a350200422086200635027084100f2118200641003602b003200642013703a8032018a722152018422088a7220d200641a8036a1086030240024020062802ac03220a20062802b00322096b4120490d00200941206a210720062802a80321080c010b200941206a22072009490d02200a41017422082007200820074b1b22134100480d0202400240200a0d002013102a21080c010b20062802a803200a2013102e21080b2008450d01200620133602ac03200620083602a8032013210a0b200620073602b003200820096a22092002290000370000200941086a200241086a290000370000200941106a200241106a290000370000200941186a200241186a290000370000200641d0026a41186a22092007ad4220862008ad841006220741186a290000370300200641d0026a41106a2213200741106a290000370300200641d0026a41086a2214200741086a290000370300200620072900003703d0022007102c200641b0016a41186a2009290300370300200641b0016a41106a2013290300370300200641b0016a41086a2014290300370300200620062903d0023703b0010240200a450d002008102c0b0240200d450d002015102c0b0240200641b0016a200641d0036a412010dd050d00200c201720121b210a4101201620121b2112200641f0006a210d4100210802402010450d0020104104742109200f410c6a2107410021080340200728020020086a2108200741106a2107200941706a22090d000b0b2006200628027c20086b36027c200010f601200641d0026a41106a2209200437030020064180036a200a360200200641fc026a2012360200200641f8026a200c360200200641f4026a200628027c360200200641d0026a41186a220a200d290300370300200641d0026a41206a200d41086a28020036020020064184036a20022900003702002006418c036a200241086a29000037020020064194036a200241106a2900003702002006419c036a200241186a290000370200200620033703d802200641003a00d0022001200641d0026a10f801200641c8006a200010b701200641c8006a41086a290300211a2006290348211b200641f8016a20004200420010a00120062903f801211c200a420037030020094200370300200641d0026a41086a22084200370300200642003703d002200641a0026a41086a2207418be9c500ad4280808080800184221d1002220041086a290000370300200620002900003703a0022000102c20082007290300370300200620062903a00222183703d801200620183703d002200741c9b5c000ad4280808080d00184221e1002220041086a290000370300200620002900003703a0022000102c200641d8016a41086a220020072903002218370300200620062903a00222033703d801200b2003370000200b41086a22022018370000200641a8036a41086a220c2008290300370300200641a8036a41106a220d2009290300370300200641a8036a41186a2212200a290300370300200620062903d0023703a803200641306a200641a8036a4120109e01200641306a41106a2903004200200628023022131b21182006290338420020131b2103200641f8016a41106a290300211f200629038002210402400240201c4200520d00200a42003703002009420037030020084200370300200642003703d0022007201d1002221341086a290000370300200620132900003703a0022013102c20082007290300370300200620062903a002221c3703d8012006201c3703d0022007201e1002221341086a290000370300200620132900003703a0022013102c20002007290300221c370300200620062903a002221d3703d801200b201d3700002002201c370000200c2008290300370300200d20092903003703002012200a290300370300200620062903d0023703a8032006427f2018201f7c200320047c22042003542207ad7c22032007200320185420032018511b22071b3703d8022006427f200420071b3703d002200641d0026a21070c010b200a42003703002009420037030020084200370300200642003703d0022007201d1002221341086a290000370300200620132900003703a0022013102c20082007290300370300200620062903a002221c3703d8012006201c3703d0022007201e1002221341086a290000370300200620132900003703a0022013102c20002007290300221c370300200620062903a002221d3703d801200b201d3700002002201c370000200c2008290300370300200d20092903003703002012200a290300370300200620062903d0023703a803200642002018201f7d2003200454ad7d221c200320047d2204200356201c201856201c2018511b22071b3703d80220064200200420071b3703d002200641d0026a21070b200641a8036aad428080808080048422042007ad42808080808002841001200641206a2001201b201a109d01200641206a41086a29030021032006290320211a200641d0026a41186a22094200370300200641d0026a41106a22004200370300200641d0026a41086a22084200370300200642003703d002200641a0026a41086a2207418be9c500ad428080808080018422181002220a41086a2900003703002006200a2900003703a002200a102c20082007290300370300200620062903a002221b3703d8012006201b3703d002200741c9b5c000ad4280808080d00184221b1002220a41086a2900003703002006200a2900003703a002200a102c200641d8016a41086a220c2007290300221c370300200620062903a002221d3703d801200b201d370000200b41086a220d201c370000200641a8036a41086a22122008290300370300200641a8036a41106a22132000290300370300200641a8036a41186a22142009290300370300200620062903d0023703a803200641086a200641a8036a4120109e01200641086a41106a290300211c2006290310211d2006280208210a200942003703002000420037030020084200370300200642003703d002200720181002220241086a290000370300200620022900003703a0022002102c20082007290300370300200620062903a00222183703d801200620183703d0022007201b1002220241086a290000370300200620022900003703a0022002102c200c20072903002218370300200620062903a002221b3703d801200b201b370000200d2018370000201220082903003703002013200029030037030020142009290300370300200620062903d0023703a8032006427f2003201c4200200a1b22187c201a201d4200200a1b22037c221a2003542207ad7c22032007200320185420032018511b22071b3703d8022006427f201a20071b3703d0022004200641d0026aad4280808080800284100102402010450d0020104104742108200f41046a210703400240200741046a280200450d002007280200102c0b200741106a2107200841706a22080d000b0b02402011450d00200f102c0b200541046a280200450d08200e102c0c080b200f20104104746a210e200f21072010450d03200641a8036aad42808080808004842103200f210703400240200728020022080d00200741106a21070c050b2006280278220941164d0d03200741046a28020021002006280270210b200741086a280200210a2007410c6a3502002118200641d0026a41186a22022008ad42808080808004841006220841186a290000370300200641d0026a41106a220c200841106a290000370300200641d0026a41086a220d200841086a290000370300200620082900003703d0022008102c200641a8036a41186a2002290300370300200641a8036a41106a200c290300370300200641a8036a41086a200d290300370300200620062903d0023703a8032009ad422086200bad84200941696aad422086200b41176aad844101200320184220862000ad84100a0240200a450d002000102c0b200741106a2207200e470d000c050b0b1033000b1035000b411720091047000b2007200e460d0003402007280200450d010240200741086a280200450d00200741046a280200102c0b200741106a2207200e470d000b0b2011450d00200f102c0b200641f4006a280200450d002006280270102c0b200541046a280200450d002005280200102c0b200641f0036a24000b9d0403057f017e027f230041f0006b22032400024002402001280200220441186a280200220541164d0d0020042802102106200341d0006a41186a22072002ad428080808080048422081006220441186a290000370300200341d0006a41106a2209200441106a290000370300200341d0006a41086a220a200441086a290000370300200320042900003703502004102c200341106a41186a2007290300370300200341106a41106a2009290300370300200341106a41086a200a2903003703002003200329035037031020032005ad4220862006ad84200541696aad422086200641176aad844101200341106aad42808080808004841008108d010240024020032802000d00200041003602000c010b20012802002204280218220541164d0d0220042802102106200341d0006a41186a220120081006220441186a290000370300200341d0006a41106a2207200441106a290000370300200341d0006a41086a2209200441086a290000370300200320042900003703502004102c200341306a41186a2001290300370300200341306a41106a2007290300370300200341306a41086a2009290300370300200320032903503703302005ad4220862006ad84200541696aad422086200641176aad844101200341306aad4280808080800484100920002002360200200020032903003702042000410c6a200341086a2802003602000b200341f0006a24000f0b411720051047000b411720051047000bc00201037f23004180016b220224002000280200210002400240024002400240200128020022034110710d0020002d0000210420034120710d012004ad42ff018341012001104221000c020b20002d00002104410021000340200220006a41ff006a2004410f712203413072200341d7006a2003410a491b3a00002000417f6a21002004410476410f7122040d000b20004180016a22044181014f0d022001410141b087c0004102200220006a4180016a410020006b104521000c010b410021000340200220006a41ff006a2004410f712203413072200341376a2003410a491b3a00002000417f6a21002004410476410f7122040d000b20004180016a22044181014f0d022001410141b087c0004102200220006a4180016a410020006b104521000b20024180016a240020000f0b20044180011047000b20044180011047000bfd0506057f017e017f017e097f017e230041f0016b22012400200141c0006a41186a22024200370300200141c0006a41106a22034200370300200141c0006a41086a2204420037030020014200370340200141f0006a41086a220541bad6c500ad428080808090018422061002220741086a290000370300200120072900003703702007102c200420052903003703002001200129037022083703602001200837034020054184c6c400ad4280808080c001841002220741086a290000370300200120072900003703702007102c200320012903702208370300200141206a41086a22072004290300370300200141206a41106a22092008370300200141206a41186a220a20052903003703002001200837036020012001290340370320200141f0006a200141206a10ea030240024020012d009001220b4103470d004190c6c40021040c010b200141206aad428080808080048422081005200141086a220c2005290300370300200141106a220d200141f0006a41106a220e290300370300200141186a220f200141f0006a41186a22102903003703002001200129037037030020024200370300200342003703002004420037030020014200370340200520061002221141086a290000370300200120112900003703702011102c2004200529030037030020012001290370220637036020012006370340200541d0d6c500ad4280808080d002841002221141086a290000370300200120112900003703702011102c200141e0006a41086a2005290300220637030020012001290370221237036020032012370000200341086a20063700002007200429030037030020092003290300370300200a200229030037030020012001290340370320200141013a00702008200141f0006aad428080808010841001200541023a0000200141063a00704100210441014100200141f0006a1092012010200f290300370300200e200d2903003703002005200c29030037030020012001290300370370200041809c316a200141f0006a200b4180de3410ca040b200141f0016a240020040bbf0c05057f017e017f027e057f230041f0016b22042400200441086a41186a22054200370300200441086a41106a22064200370300200441086a41086a2207420037030020044200370308200441d0016a41086a220841bad6c500ad428080808090018422091002220a41086a2900003703002004200a2900003703d001200a102c20072008290300370300200420042903d001220b3703282004200b370308200841abd6c500ad4280808080f00184220c1002220a41086a2900003703002004200a2900003703d001200a102c200620042903d001220b370300200441c8006a41086a220d2007290300370300200441c8006a41106a220a200b370300200441c8006a41186a220e20082903003703002004200b370338200420042903083703482004200441c8006a41201094012004280204210f2004280200211020054200370300200642003703002007420037030020044200370308200820091002221141086a290000370300200420112900003703d0012011102c20072008290300370300200420042903d001220b3703282004200b3703082008200c1002221141086a290000370300200420112900003703d0012011102c20052008290300220b370300200d2007290300370300200a20042903d001220c370300200e200b3703002004200c370338200420042903083703482004200f410020101b221141016a3602d001200441c8006aad4280808080800484200441d0016aad4280808080c000841001200a200141086a290000370300200e200141106a290000370300200441c8006a41206a200141186a2900003703002004200336024c20042000360248200420023a007020042001290000370350200820091002220141086a290000370300200420012900003703d0012001102c200441286a41086a220a2008290300370300200420042903d001370328200841ebb4c400ad42808080808002841002220141086a290000370300200420012900003703d0012001102c200441386a41086a220e2008290300370300200420042903d001370338200420113602cc01200441d0016a41186a2200200441cc016aad4280808080c000841006220141186a290000370300200441d0016a41106a2203200141106a2900003703002008200141086a290000370300200420012900003703d0012001102c200520002903003703002006200329030037030020072008290300370300200420042903d0013703080240024041c000102a2208450d0020082004290328370000200841086a200a2903003700002008200429033837001020082004290308370020200841186a200e290300370000200841286a2007290300370000200841306a2006290300370000200841386a200529030037000020042802482101200441003602d801200442013703d0014104102a2207450d00200441043602d401200420042802d801220541046a3602d801200420073602d001200720056a20013600002004200441d0016a360208200441d0006a200441086a109402024020042d0070220741024b0d00024002400240024020070e03000102000b410021010c020b410121010c010b410221010b200420013a00080240024020042802d40120042802d8012207460d0020042802d00121050c010b200741016a22052007490d03200741017422062005200620054b1b22064100480d030240024020070d002006102a21050c010b20042802d00120072006102e21050b2005450d02200420063602d401200420053602d00120042802d80121070b2004200741016a3602d801200520076a20013a00000b200428024c21050240024020042802d401220120042802d80122076b4104490d0020042802d00121010c010b200741046a22062007490d02200141017422072006200720064b1b22074100480d020240024020010d002007102a21010c010b20042802d00120012007102e21010b2001450d01200420073602d401200420013602d00120042802d80121070b2004200741046a3602d801200120076a200536000020042802d40121072008ad428080808080088420043502d80142208620042802d0012201ad84100102402007450d002001102c0b2008102c200441d4006a2011360200200441d1006a20023a0000200441d0006a41033a0000200441063a004841014100200441c8006a109201200441f0016a24000f0b1033000b1035000b9f2004067f027e117f097e230022012102200141a0046b41607122012400200141e0006a41186a4200370300200141e0006a41106a22034200370300200141e0006a41086a220442003703002001420037036020014180046a41086a220541bad6c500ad42808080809001841002220641086a29000037030020012006290000370380042006102c20042005290300370300200120012903800422073703a00320012007370360200541d5c5c400ad4280808080b001841002220641086a29000037030020012006290000370380042006102c20032001290380042207370300200141c0006a41086a2004290300370300200141c0006a41106a2007370300200141c0006a41186a2005290300370300200120073703c00320012001290360370340200141203602f4012001200141c0006a3602f001200141f8016a200141c0006aad428080808080048422081003108d010240024002400240024020012802f80122090d004100210a0c010b20012802fc01210b2001200141f8016a41086a28020036029c022001200936029802200141386a20014198026a107502400240024020012802380d000240200128029c02220c41c4006e220d41c4006c2205417f4c0d00200128023c210e0240024020050d004104210a0c010b2005102a220a450d060b0240200e450d004100210f034002400240200c4104490d002001200c417c6a220636029c022001200128029802221041046a360298022010280000211141002105200141003a008001024002400340024020062005470d002001410036029c02200541ff01710d020c030b200141e0006a20056a201020056a220441046a2d00003a00002001200441056a360298022001200541016a22043a0080012004210520044120470d000b200141c0036a41086a2212200141e0006a41086a2213290300370300200141c0036a41106a2214200141e0006a41106a2215290300370300200141c0036a41186a2216200141e0006a41186a22172903003703002001200620046b36029c02200120012903603703c00341002105200141003a008001201020046a21182004200c6b41046a210c03400240200c20056a0d002001410036029c02200541ff0171450d030c020b200141e0006a20056a201820056a221041046a2d00003a00002001201041056a360298022001200541016a22103a0080012006417f6a21062010210520104120470d000b200141e0036a41086a22052013290300370300200141e0036a41106a22102015290300370300200141e0036a41186a22182017290300370300200141a0036a41086a22192012290300370300200141a0036a41106a22122014290300370300200141a0036a41186a221420162903003703002001200620046b220c36029c02200120012903603703e003200120012903c0033703a003201720142903003703002015201229030037030020132019290300370300200120012903a00337036020014180046a41186a201829030037030020014180046a41106a201029030037030020014180046a41086a2005290300370300200120012903e0033703800441002105201121190c030b200141003a0080010b4100210c0b410121050b20014180036a41086a2206200141e0006a41086a29030037030020014180036a41106a2210200141e0006a41106a29030037030020014180036a41186a2218200141e0006a41186a290300370300200141e0026a41086a221120014180046a41086a290300370300200141e0026a41106a221320014180046a41106a290300370300200141e0026a41186a221520014180046a41186a290300370300200120012903603703800320012001290380043703e00202402005450d002001410036028802200d450d05200a102c0c050b200f41016a2104200141c0026a41186a22172018290300370300200141c0026a41106a22182010290300370300200141c0026a41086a22102006290300370300200141a0026a41086a22062011290300370300200141a0026a41106a22112013290300370300200141a0026a41186a2213201529030037030020012001290380033703c002200120012903e0023703a0020240200d200f470d00200f41017422052004200520044b1b220dad42c4007e2207422088a70d0a2007a722054100480d0a02400240200f0d002005102a210a0c010b200a200f41c4006c2005102e210a0b200a450d080b200a200f41c4006c6a22052019360200200520012903c0023702042005410c6a2010290300370200200541146a20182903003702002005411c6a2017290300370200200520012903a0023702242005412c6a2006290300370200200541346a20112903003702002005413c6a20132903003702002004210f2004200e470d000b0b20014190026a200e3602002001200d36028c022001200a36028802200a450d02200129028c0221070c030b103a000b20014100360288020b4100210a200141003602880420014201370380042001410b3602e4032001200141f0016a3602e003200120014180046a3602c003200141f4006a410136020020014201370264200141d0b0c2003602602001200141e0036a360270200141c0036a41c49ac500200141e0006a10391a2001350288044220862001350280048410040240200128028404450d00200128028004102c0b0b200b450d002009102c0b200a4104200a1b211802400240024020074200200a1b221a422088a72211450d002018201141c4006c6a2105200141e0006a201828020010cc04201841c4006a210f02400240200128027022040d004200211b420021070c010b200141286a2001290360200141e0006a41086a290300200141f8006a350200420010e005200141286a41086a29030021072001290328211b2001280274450d002004102c0b0240200f2005470d002001201b3703604100211020014100360270200120073703680c020b201141c4006c41bc7f6a210a410021102018210c410121040340200141e0006a200f220628020010cc0402400240200128027022050d004200211c4200211d0c010b200141186a2001290360200141e0006a41086a2903002001350278420010e005200141186a41086a290300211d2001290318211c2001280274450d002005102c0b200641c4006a210f2007201d201b201c562007201d562007201d511b22051b2107201b201c20051b211b200c200620051b210c2010200420051b2110200441016a2104200a41bc7f6a220a0d000b2001201b3703602001201036027020012007370368200c0d010b41e9c5c4002101201aa7450d012018102c2002240041e9c5c4000f0b201020114f0d022018201041c4006c6a220541186a2206290200211d20182011417f6a220441c4006c6a220c41c0006a2802002110200c41206a290200211b200c41286a290200211c200c41306a290200211e200c41386a290200211f200c2902002120200c2902082107200c29021021212006200c41186a290200370200200529021021222005202137021020052902082121200520073702082005290200210720052020370200200541386a201f370200200541306a201e370200200541286a201c370200200541206a220628020021112006201b370200200541c0006a20103602002001202237037020012021370368200120073703602001201d370378200141e0036a41186a200128027c360200200141e0036a41106a2001290274370300200141e0036a41086a200129026c370300200120012902643703e003200141e0006a41186a220f4200370300200141e0006a41106a220a4200370300200141e0006a41086a220642003703002001420037036020014180046a41086a220541bad6c500ad42808080809001841002221041086a29000037030020012010290000370380042010102c200620052903003703002001200129038004221d3703a0032001201d370360200541d5c5c400ad4280808080b001841002221041086a29000037030020012010290000370380042010102c200141c0036a41086a2005290300221d3703002001200129038004221b3703c0032003201b370000200341086a201d370000200141c0006a41086a2006290300370300200141c0006a41106a200a290300370300200141c0006a41186a200f2903003703002001200129036037034020014100360268200142013703602004200141e0006a106702402004450d00201821050340200528020021100240024020012802642206200128026822046b4104490d00200128026021060c010b200441046a220f2004490d0620064101742204200f2004200f4b1b22044100480d060240024020060d002004102a21060c010b200128026020062004102e21060b2006450d042001200436026420012006360260200128026821040b2001200441046a360268200620046a20103600002001200141e0006a36028004200541046a20014180046a109402200541246a200141e0006a109101200541c4006a2205200c470d000b0b200128026421052008200135026842208620012802602204ad84100102402005450d002004102c0b2007a721100240201aa7450d002018102c0b20014180046a41086a220541bad6c500ad42808080809001841002220441086a29000037030020012004290000370380042004102c200141a0036a41086a2206200529030037030020012001290380043703a003200541e0c5c400ad42808080809001841002220441086a29000037030020012004290000370380042004102c200141c0036a41086a220f200529030037030020012001290380043703c003200120103602800320014180046a41186a220c20014180036aad4280808080c000841006220441186a29000037030020014180046a41106a220a200441106a2900003703002005200441086a29000037030020012004290000370380042004102c200141e0006a41186a2204200c290300370300200141e0006a41106a220c200a290300370300200141e0006a41086a220a2005290300370300200120012903800437036041c000102a2205450d01200520012903a003370000200520012903c00337001020052001290360370020200541086a2006290300370000200541186a200f290300370000200541286a200a290300370000200541306a200c290300370000200541386a2004290300370000200141e0006a200541c00010f303024020012802702206450d002005ad428080808080088410050b200141e8006a2903002107200141f8006a280200210f2001290360211d2001280274210c2005102c02402006450d000240200f4105742204450d002006210503402005201d200710c201200541206a2105200441606a22040d000b0b20014188016a200737030020014180016a201d370300200141e0006a41186a2205200f360200200141f4006a200c360200200141e0006a41106a22042006360200200141ec006a2010360200200141e0006a41086a220641013a0000200141063a006041014100200141e0006a1092012005200141e0036a41186a2802003602002004200141e0036a41106a2903003703002006200141e0036a41086a290300370300200120012903e0033703602001201136027c200041809c316a200141e0006a41004180de3410ca040b410021010b2002240020010f0b1033000b41a888c600201020111038000b1035000bcb0401087f230041f0006b22022400200241d0006a41086a220341bad6c500ad42808080809001841002220441086a290000370300200220042900003703502004102c200241086a41086a2205200329030037030020022002290350370308200341e0c5c400ad42808080809001841002220441086a290000370300200220042900003703502004102c200241186a41086a22062003290300370300200220022903503703182002200136024c200241d0006a41186a2201200241cc006aad4280808080c000841006220441186a290000370300200241d0006a41106a2207200441106a2900003703002003200441086a290000370300200220042900003703502004102c200241286a41186a22082001290300370300200241286a41106a22092007290300370300200241286a41086a2201200329030037030020022002290350370328024041c000102a2204450d00200420022903083700002004200229031837001020042002290328370020200441086a2005290300370000200441186a2006290300370000200441286a2001290300370000200441306a2009290300370000200441386a2008290300370000200241d0006a200441c00010f303200120032903003703002006200241d0006a411c6a2802003602002002200229035037032820022002290264370318024020022802602203450d002000200229032837030020002002290318370214200041086a200241286a41086a2903003703002000411c6a200241186a41086a2802003602000b200020033602102004102c200241f0006a24000f0b1033000bff0301067f230041f0006b22022400200241d0006a41086a220341bad6c500ad42808080809001841002220441086a290000370300200220042900003703502004102c200241086a41086a2205200329030037030020022002290350370308200341ccc5c400ad42808080809001841002220441086a290000370300200220042900003703502004102c200241186a41086a22062003290300370300200220022903503703182002200136024c200241d0006a41186a2201200241cc006aad4280808080c000841006220441186a290000370300200241d0006a41106a2207200441106a2900003703002003200441086a290000370300200220042900003703502004102c200241286a41186a22042001290300370300200241286a41106a22012007290300370300200241286a41086a2207200329030037030020022002290350370328024041c000102a2203450d00200320022903083700002003200229031837001020032002290328370020200341086a2005290300370000200341186a2006290300370000200341286a2007290300370000200341306a2001290300370000200341386a2004290300370000200241d0006a200341c00010d0010240024020022802502204450d0020002002290254370204200020043602000c010b20004100360208200042013702000b2003102c200241f0006a24000f0b1033000b860701067f23004190016b22022400200241206a200141206a280200360200200241186a200141186a290200370300200241106a200141106a290200370300200241086a200141086a29020037030020022001290200370300200241e8006a41086a220141bad6c500ad42808080809001841002220341086a290000370300200220032900003703682003102c200241286a41086a200129030037030020022002290368370328200141fbb4c400ad4280808080e000841002220341086a290000370300200220032900003703682003102c200241386a41086a20012903003703002002200229036837033802404104102a2203450d0020024284808080c00037026c20022003360268200320022802003600002002410472200241e8006a109101200228026c2104200241e8006a41186a2205200235027042208620022802682206ad841006220341186a290000370300200241e8006a41106a2207200341106a2900003703002001200341086a290000370300200220032900003703682003102c200241c8006a41186a2005290300370300200241c8006a41106a2007290300370300200241c8006a41086a20012903003703002002200229036837034802402004450d002006102c0b41c000102a2201450d00200120022903283700002001200229033837001020012002290348370020200141086a200241286a41086a290300370000200141186a200241386a41086a290300370000200141286a200241c8006a41086a2204290300370000200141306a200241d8006a290300370000200141386a200241c8006a41186a290300370000200241c00036022c20022001360228200241c8006a2001ad42808080808008841003108d0102400240200228024822030d0041002103410021040c010b200228024c2107024002402004280200450d0020032d0000220441ff0071220541064b0d00200441077621040c010b20024100360270200242013703682002410b36023c2002200241286a3602382002200241e8006a36028c01200241146a410136020020024201370204200241d0b0c2003602002002200241386a3602102002418c016a41c49ac500200210391a200235027042208620023502688410040240200228026c450d002002280268102c0b410221040b02402007450d002003102c0b4100200520044102461b2103200441017121040b2001102c200020033a0001200020043a000020024190016a24000f0b1033000bb70d04017f047e137f087e230041a0046b2205240002400240024020040d00420021064200210742002108420021090c010b200541e8016a10d004200541b0026a20052802e801220a20052802f00110d301024020052802ec01450d00200a102c0b20054198016a41086a200541b0026a41086a290300220637030020054198016a41106a200541b0026a41106a290300220737030020054198016a41186a200541b0026a41186a220b290300220837030020054198016a41206a200541b0026a41206a220c2d0000220a3a0000200520052903b002220937039801200541c0016a41206a200a3a0000200541c0016a41186a2008370300200541c0016a41106a2007370300200541c0016a41086a2006370300200520093703c001200541e8016a200541c0016a10d1044200210842002109420021064200210720052d00a8024107460d002004417f6a210d20054198036a410472210e200541b0026a41c0006a210f420021064200210742002108420021090340200b2007370300200520063703c002200520083703b002200520093703b802200c200541e8016a41c10010db05211002400240200f2002460d00200f2002412010dd050d010b200e2010290200370200200e41086a201041086a2211290200370200200e41106a201041106a2212290200370200200e41186a201041186a2213290200370200200520013602980320054180046a41086a220a41bad6c500ad42808080809001841002220441086a29000037030020052004290000370380042004102c200541c0036a41086a2214200a29030037030020052005290380043703c003200a41fbb4c400ad4280808080e000841002220441086a29000037030020052004290000370380042004102c200541d0036a41086a2215200a29030037030020052005290380043703d0034104102a2204450d0320054284808080c0003702840420052004360280042004200528029803360000200e20054180046a109101200528028404211620054180046a41186a22172005350288044220862005280280042218ad841006220441186a29000037030020054180046a41106a2219200441106a290000370300200a200441086a29000037030020052004290000370380042004102c200541e0036a41186a221a2017290300370300200541e0036a41106a221b2019290300370300200541e0036a41086a221c200a29030037030020052005290380043703e00302402016450d002018102c0b41c000102a2204450d03200420052903c003370000200420052903d003370010200420052903e003370020200441086a2014290300370000200441186a2015290300370000200441286a201c290300370000200441306a201b290300370000200441386a201a29030037000020054190016a200441c00041014100410010970120052802900121142004102c20144101460d0020052d00900321042017201329000037030020192012290000370300200a2011290000370300200520102900003703800420054180016a20054180046a10b10120054180016a41086a290300211d200529038001211e02400240200420032004200341ff0171491b220441ff01710d002005201e201d420a420010e10520054198036a41186a201729030037030020054198036a41106a201929030037030020054198036a41086a200a290300370300200520052903800437039803200541106a200120054198036a4100200d10cf04200541106a41186a290300211f200541106a41086a2903002120200529032021212005290310212220052903002223211e200541086a2903002224211d0c010b200541c0006a201d42002004ad42ff01832223420010e005200541d0006a201e42002023420010e00520054198036a41186a201729030037030020054198036a41106a201929030037030020054198036a41086a200a290300370300200520052903800437039803200541e0006a200120054198036a2004200d10cf04200541306a42004200201e420010e005427f200541d0006a41086a2903002223200529034020052903307c7c221f2005290348200529033884420052201f2023547222041b2124427f200529035020041b2123200541e0006a41186a290300211f200541e0006a41086a290300212020052903702121200529036021220b201d20077c201e20067c2207201e54ad7c201f7c200720217c2206200754ad7c2107202420097c202320087c2209202354ad7c20207c200920227c2208200954ad7c21090b200541e8016a200541c0016a10d10420052d00a8024107470d000b0b2000200637031020002008370300200041186a200737030020002009370308200541a0046a24000f0b1033000bb30303047f017e017f230041d0006b22012400200141c0006a41086a220241bad6c500ad42808080809001841002220341086a290000370300200120032900003703402003102c200141206a41086a2204200229030037030020012001290340370320200241cfb4c400ad42808080809002841002220341086a290000370300200120032900003703402003102c200141306a41086a20022903002205370300200141086a2004290300370300200141186a20053703002001200129034022053703302001200129032037030020012005370310024002404101450d004120210402400240024002404120450d004120102a22020d010c050b411021044110102a2202450d04200141106a210320022001290300370000200241086a200141086a2903003700000c010b20022001290300370000200241086a200141086a290300370000200141106a21034120210641204110470d010b20022004200441017422064120200641204b1b2206102e2202450d020b20022003290000370010200241186a200341086a290000370000200041203602082000200636020420002002360200200141d0006a24000f0b103a000b1033000b820803037f047e067f230022022103200241c0036b41607122022400200141186a22042900002105200420022903b80237000020012900102106200120022903b00237001020012900082107200120022903a802370008200241003a00a00220012900002108200120022903a002370000200220053703b801200220063703b001200220073703a801200220083703a001200141206a2d00002104200241a0026a41176a22092005370000200241a0026a41106a220a20022900b101370300200241a0026a41086a220b20022900a901370300200220022900a1013703a002024002402008a741ff01714101460d00200041073a00400c010b200241106a41176a2009290000370000200241106a41106a200a290300370300200241106a41086a200b290300370300200220022903a002370310200220043a002f20024190026a200241106a10d504200241a0026a200228029002220420022802980210e803024020022d00c1024102470d00200241003602a0032002420137039803200241306a41146a410d3602002002413c6a410b360200200241093602ac03200241bad6c5003602a8032002410b3602342002410b3602b403200241e0b4c4003602b003200220024190026a3602402002200241b0036a3602382002200241a8036a360230200220024198036a3602bc03200241d8006a41146a41033602002002420337025c200241a89cc5003602582002200241306a360268200241bc036a41c49ac500200241d8006a10391a20023502a003422086200235029803841004200041073a00400240200228029c03450d00200228029803102c0b200228029402450d01200228029002102c200324000f0b200241a0016a200241a0026a41e30010db051a0240200228029402450d002004102c0b200241306a41206a2204200241a0026a41206a2d00003a0000200241306a41186a2209200241a0026a41186a220a290300370300200241306a41106a220b200241a0026a41106a220c290300370300200241306a41086a220d200241a0026a41086a220e290300370300200220022903a002370330200241d8006a200241c1016a41c20010db051a200141206a200241d8006a41c1006a2d00003a0000200141186a20024191016a290000370000200141106a20024189016a290000370000200141086a20024181016a29000037000020012002290079370000200a200241106a41186a290300370300200c200241106a41106a290300370300200e200241106a41086a290300370300200220022903103703a002200241c8026a200d290300370300200241d0026a200b290300370300200241d8026a2009290300370300200241e0026a20042d00003a0000200220022903303703c0022000200241a0026a41c10010db051a200324000f0b200324000bd31309027f017e047f017e057f027e027f017e017f230041c0016b22012400200141a0016a41086a220241bad6c500ad428080808090018422031002220441086a290000370300200120042900003703a0012004102c200141386a41086a22052002290300370300200120012903a001370338200241ebb4c400ad42808080808002841002220441086a290000370300200120042900003703a0012004102c200141c8006a41086a22062002290300370300200120012903a001370348200120003602a001200141f8006a41186a2207200141a0016aad22084280808080c000841006220441186a290000370300200141f8006a41106a2209200441106a290000370300200141f8006a41086a220a200441086a290000370300200120042900003703782004102c200141d8006a41186a220b2007290300370300200141d8006a41106a220c2009290300370300200141d8006a41086a220d200a29030037030020012001290378370358024041c000102a2204450d00200420012903383700002004200129034837001020042001290358370020200441086a2005290300370000200441186a2006290300370000200441286a200d290300370000200441306a200c290300370000200441386a200b2903003700002004ad428080808080088410052004102c200b4200370300200c4200370300200d420037030020014200370358200220031002220441086a290000370300200120042900003703a0012004102c200d2002290300370300200120012903a001220337033820012003370358200241c3d6c500ad4280808080d00184220e1002220441086a290000370300200120042900003703a0012004102c200c20012903a0012203370300200a200d29030037030020092003370300200720022903003703002001200337034820012001290358370378200141106a200141f8006a412010940102402001280214410020012802101b22042000470d00200141d8006a41186a22074200370300200141d8006a41106a22094200370300200141d8006a41086a2202420037030020014200370358200141a0016a41086a220441bad6c500ad42808080809001841002220d41086a2900003703002001200d2900003703a001200d102c20022004290300370300200120012903a001220337033820012003370358200441abd6c500ad4280808080f001841002220d41086a2900003703002001200d2900003703a001200d102c200141c8006a41086a20042903002203370300200120012903a001220f370348200c200f370000200c41086a2003370000200141f8006a41086a2002290300370300200141f8006a41106a2009290300370300200141f8006a41186a200729030037030020012001290358370378200141086a200141f8006a412010940120012802082102200128020c210d200041016a220410d30421072004200d410020021b220d4f0d0020070d000340200441016a220410d30421022004200d4f0d012002450d000b0b200141d8006a41186a22074200370300200141d8006a41106a22094200370300200141d8006a41086a220d420037030020014200370358200141a0016a41086a220241bad6c500ad428080808090018422031002220a41086a2900003703002001200a2900003703a001200a102c200d2002290300370300200120012903a001220f3703382001200f3703582002200e1002220a41086a2900003703002001200a2900003703a001200a102c200141c8006a41086a220a2002290300220e370300200120012903a001220f370348200c200f370000200c41086a200e370000200141f8006a41086a220c200d290300370300200141f8006a41106a220b2009290300370300200141f8006a41186a2205200729030037030020012001290358370378200120043602a001200141f8006aad428080808080048420084280808080c0008422081001200220031002220441086a290000370300200120042900003703a0012004102c200141386a41086a22062002290300370300200120012903a001370338200241ccc5c400ad42808080809001841002220441086a290000370300200120042900003703a0012004102c200a2002290300370300200120012903a001370348200120003602a001200520081006220441186a290000370300200b200441106a290000370300200c200441086a290000370300200120042900003703782004102c200720052903003703002009200b290300370300200d200c2903003703002001200129037837035841c000102a2204450d00200420012903383700002004200129034837001020042001290358370020200441086a2006290300370000200441186a200a290300370000200441286a200d290300370000200441306a2009290300370000200441386a20072903003700002004ad428080808080088410052004102c200141f8006a200010cd04200128027c21102001280278211102402001280280012204450d0020044105742107200141f8006a410472210d41bad6c500ad42808080809001842112201121020340200141186a41186a200241186a2900002203370300200141186a41106a200241106a2900002208370300200141186a41086a200241086a290000220e37030020012002290000220f370318200d200f370200200d41086a200e370200200d41106a2008370200200d41186a200337020020012000360278200141a0016a41086a220420121002220c41086a2900003703002001200c2900003703a001200c102c200141386a41086a22092004290300370300200120012903a001370338200441fbb4c400ad4280808080e000841002220c41086a2900003703002001200c2900003703a001200c102c200141c8006a41086a220a2004290300370300200120012903a0013703484104102a220c450d0220014284808080c0003702a4012001200c3602a001200c2001280278360000200d200141a0016a10910120012802a401210b200141a0016a41186a220520013502a80142208620012802a0012213ad841006220c41186a290000370300200141a0016a41106a2206200c41106a2900003703002004200c41086a2900003703002001200c2900003703a001200c102c200141d8006a41186a220c2005290300370300200141d8006a41106a22052006290300370300200141d8006a41086a22062004290300370300200120012903a0013703580240200b450d002013102c0b41c000102a2204450d02200241206a2102200420012903383700002004200129034837001020042001290358370020200441086a2009290300370000200441186a200a290300370000200441286a2006290300370000200441306a2005290300370000200441386a200c2903003700002004ad428080808080088410052004102c200741606a22070d000b0b02402010450d002011102c0b200141c0016a24000f0b1033000bda0301067f230041f0006b22012400200141d0006a41086a220241bad6c500ad42808080809001841002220341086a290000370300200120032900003703502003102c200141086a41086a2204200229030037030020012001290350370308200241ebb4c400ad42808080808002841002220341086a290000370300200120032900003703502003102c200141186a41086a22052002290300370300200120012903503703182001200036024c200141d0006a41186a2200200141cc006aad4280808080c000841006220341186a290000370300200141d0006a41106a2206200341106a2900003703002002200341086a290000370300200120032900003703502003102c200141286a41186a22032000290300370300200141286a41106a22002006290300370300200141286a41086a2206200229030037030020012001290350370328024041c000102a22020d001033000b200220012903083700002002200129031837001020022001290328370020200241086a2004290300370000200241186a2005290300370000200241286a2006290300370000200241306a2000290300370000200241386a20032903003700002001200241c000410141004100109701200128020021032002102c200141f0006a240020034101460ba30a05067f057e017f017e017f230041b0036b22022400200241f8016a41086a220341bad6c500ad42808080809001841002220441086a290000370300200220042900003703f8012004102c20024188036a41086a22052003290300370300200220022903f80137038803200341c3c5c400ad42808080809001841002220441086a290000370300200220042900003703f8012004102c200241d0006a41086a22062003290300370300200220022903f801370350200241f8016a2000109f01024002400240024041c000102a2204450d00200420022903880337000020042002290350370010200420022900f801370020200441086a2005290300370000200441186a2006290300370000200441286a2003290000370000200441306a200241f8016a41106a2207290000370000200441386a200241f8016a41186a2205290000370000200241f8016a200441c00010ef0302402002280288022203450d002004ad428080808080088410050b200241d0006a41086a2002419c026a2902002208370300200241d0006a41106a200241a4026a2902002209370300200241d0006a41186a200241ac026a290200220a370300200220024194026a290200220b370350200241f8016a41086a2206290300210c2005280200210d20022903f801210e200228028c02210f2005200a37030020072009370300200620083703002002200b3703f80102402003450d00200241106a41186a200241f8016a41186a290300370300200241106a41106a200241f8016a41106a290300370300200241106a41086a2006290300370300200220022903f8013703100b2004102c024020030d00200241f8016a41086a410e3a000020024181026a2000290000370000200241a4026a200136020020024189026a200041086a29000037000020024191026a200041106a29000037000020024199026a200041186a290000370000200241063a00f80141014100200241f8016a1092010c040b200241306a41186a2204200241106a41186a290300370300200241306a41106a2205200241106a41106a290300370300200241306a41086a2206200241106a41086a290300370300200220022903103703302002200d3602e401200220033602e001200241d0006a200241e0016a108f0220022802504118460d01200241306a200e200c10c201200241d0026a200c370300200241c8026a200e370300200241f8016a41086a2207410c3a0000200241a1026a2002290330370000200241a9026a2006290300370000200241b1026a2005290300370000200241b9026a200429030037000020024181026a2204200029000037000020024189026a200041086a29000037000020024191026a200041106a29000037000020024199026a200041186a290000370000200241063a00f80141014100200241f8016a109201200241f8016a200241d0006a41900110db051a200241003b018803200241e8016a200241f8016a20024188036a10c10220022d00f0012100200241f8016a410c6a2001360200200420004102463a0000200741073a0000200241063a00f80141014100200241f8016a1092010c020b1033000b2002200241306a200e200c10bf012002290300200241086a29030010b102200241f8016a41086a410d3a0000200241a4026a200136020020024181026a200029000037000020024189026a200041086a29000037000020024191026a200041106a29000037000020024199026a200041186a290000370000200241063a00f80141014100200241f8016a1092010b200f450d002003102c0b200241b0036a24000bbd0201057f230041c0006b22022400200241206a41086a220341bad6c500ad42808080809001841002220441086a290000370300200220042900003703202004102c200241086a2205200329030037030020022002290320370300200341e0b4c400ad4280808080b001841002220441086a290000370300200220042900003703202004102c200241106a41086a2206200329030037030020022002290320370310200241206a2001109f01024041c000102a22040d001033000b200420022903003700002004200229031037001020042002290020370020200042c0808080800837020420002004360200200441086a2005290300370000200441186a2006290300370000200441286a2003290000370000200441306a200241306a290000370000200441386a200241206a41186a290000370000200241c0006a24000b130020004115360204200041acc6c4003602000bca0a02087f037e230041b0016b2202240020024188016a41086a220341bad6c500ad42808080809001841002220441086a29000037030020022004290000370388012004102c200241086a41086a220520032903003703002002200229038801370308200341ebb4c400ad42808080808002841002220441086a29000037030020022004290000370388012004102c200241e0006a41086a22062003290300370300200220022903880137036020022001360250200241286a41186a2201200241d0006aad4280808080c000841006220441186a290000370300200241286a41106a2207200441106a290000370300200241286a41086a2208200441086a290000370300200220042900003703282004102c20024188016a41186a2204200129030037030020024188016a41106a22092007290300370300200320082903003703002002200229032837038801024002400240024041c000102a2201450d0020012002290308370000200120022903603700102001200229038801370020200141086a2005290300370000200141186a2006290300370000200141286a2003290300370000200141306a2009290300370000200141386a2004290300370000200241c00036024c20022001360248200241d0006a2001ad42808080808008841003108d010240200228025022050d00410321030c040b20022802542108200241d8006a28020022094104490d012005280000210741002103200241003a00a8012009417c6a21060340024020062003470d00200341ff0171450d03200241003a00a8010c030b20024188016a20036a200520036a41046a2d00003a00002002200341016a22043a00a8012004210320044120470d000b200241286a41186a20024188016a41186a290300370300200241286a41106a20024188016a41106a290300370300200241286a41086a20024188016a41086a29030037030020022002290388013703282009417c6a2004460d01200520046a220641046a2d0000220341034f0d01200920046b417b6a41034d0d01200241e0006a41086a200241286a41086a290300220a370300200241e0006a41106a200241286a41106a290300220b370300200241e0006a41186a200241286a41186a290300220c370300200241dc006a41026a220920024185016a41026a2d00003a0000200241086a41086a200a370300200241086a41106a200b370300200241086a41186a200c37030020022002290328220a370360200220022f0085013b015c2002200a370308200641056a2800002104200241286a41026a20092d00003a0000200220022f015c3b01280c020b1033000b20024100360268200242013703602002410b36022c2002200241c8006a3602282002200241e0006a3602082002419c016a41013602002002420137028c01200241d0b0c200360288012002200241286a36029801200241086a41c49ac50020024188016a10391a2002350268422086200235026084100402402002280264450d002002280260102c0b410321030b2008450d002005102c0b20024188016a41086a2205200241086a41086a29030037030020024188016a41106a2206200241086a41106a29030037030020024188016a41186a2208200241086a41186a290300370300200241e0006a41026a2209200241286a41026a2d00003a00002002200229030837038801200220022f01283b0160024020034103460d0020002004360204200020073602002000200229038801370208200020022f01603b0029200041106a2005290300370200200041186a2006290300370200200041206a20082903003702002000412b6a20092d00003a00000b200020033a00282001102c200241b0016a24000b3400200041bad6c50036020420004100360200200041146a4110360200200041106a41b0ecc400360200200041086a42093702000bf90201057f230041c0006b22022400200241206a4200370300200241186a4200370300200241086a41086a4200370300200241003a0028200242003703082002410036023820024201370330200241086a200241306a10910102400240024020022d0028220341064b0d000240024002400240024002400240024020030e0700010203040506000b410021040c060b410121040c050b410221040c040b410321040c030b410421040c020b410521040c010b410621040b200220043a003f02400240200228023420022802382203460d00200228023021050c010b200341016a22052003490d03200341017422062005200620054b1b22064100480d030240024020030d002006102a21050c010b200228023020032006102e21050b2005450d022002200636023420022005360230200228023821030b2002200341016a360238200520036a20043a00000b20002002290330370200200041086a200241306a41086a280200360200200241c0006a24000f0b1033000b1035000b3f01017f230041106b220224002002410036020820024201370300410020021067200041086a200228020836020020002002290300370200200241106a24000b6f01027f230041d0006b220224002002410036021002404101102a2203450d00200341003a0000200041086a4101360200200241013602442002200336024020002002290340370200024020022802102200450d002002280214450d002000102c0b200241d0006a24000f0b1033000b130020004107360204200041fc8ac5003602000b2e01017f02404104102a22020d001033000b20004284808080c00037020420002002360200200241809c313600000b2e01017f02404104102a22020d001033000b20004284808080c0003702042000200236020020024180a3053600000b3a01017f02404110102a22020d001033000b20024200370008200242808084fea6dee111370000200042908080808002370204200020023602000b2e01017f02404104102a22020d001033000b20004284808080c0003702042000200236020020024180de343600000bd71604097f017e017f017e230041a0016b2204240041bc99c500210502400240200110d304450d0020044180016a41086a220641bad6c500ad42808080809001841002220541086a29000037030020042005290000370380012005102c200441186a41086a20062903003703002004200429038001370318200641fbb4c400ad4280808080e000841002220541086a29000037030020042005290000370380012005102c200441e0006a41086a200629030037030020042004290380013703604104102a2205450d0120044284808080c00037028401200420053602800120052001360000200020044180016a109101200428028401210720044180016a41186a22082004350288014220862004280280012209ad841006220541186a29000037030020044180016a41106a220a200541106a2900003703002006200541086a29000037030020042005290000370380012005102c200441286a41186a2008290300370300200441286a41106a200a290300370300200441286a41086a2006290300370300200420042903800137032802402007450d002009102c0b41c000102a2206450d01200620042903183700002006200429036037001020062004290328370020200641086a200441186a41086a2207290300370000200641186a200441e0006a41086a2208290300370000200641286a200441286a41086a220a290300370000200641306a200441286a41106a2209290300370000200641386a200441286a41186a220b290300370000200441086a200641c000410141004100109701200428020821052006102c024020054101460d002004200036021420044180016a41086a220641bad6c500ad42808080809001841002220541086a29000037030020042005290000370380012005102c200720062903003703002004200429038001370318200641ccc5c400ad42808080809001841002220541086a29000037030020042005290000370380012005102c2008200629030037030020042004290380013703602004200136024820044180016a41186a220c200441c8006aad220d4280808080c000841006220541186a29000037030020044180016a41106a220e200541106a2900003703002006200541086a29000037030020042005290000370380012005102c200b200c2903003703002009200e290300370300200a2006290300370300200420042903800137032841c000102a2206450d02200620042903183700002006200429036037001020062004290328370020200641086a200441186a41086a290300370000200641186a200441e0006a41086a290300370000200641286a200441286a41086a2205290300370000200641306a200441386a290300370000200641386a200441286a41186a290300370000200441286a2006ad4280808080800884220f1003108d01024002402004280228220a450d0020052802002105200428022c21090c010b20044100360288012004420137038001410020044180016a106720042802880121052004280284012109200428028001210a0b200420053602502004200936024c2004200a360248024002400240024002402005450d0020044180016a200a2005410110db032004280280014101470d01200428024c450d042004280248102c0c040b4101200441c8006a10672004280214200441c8006a1091010c010b200428028401210b0240024002400240024002402004418c016a280200220520044188016a280200220a460d0020042802502005200a6b6a220941046a220c417f4c0d0102400240200c0d004101210e0c010b200c102a220e450d0c0b2004200c36021c2004200e360218200420093602202004200441186a36028001200b20044180016a200510c80220092005490d022004280220220b2009490d032004280250220b200a490d042004280218210c2004280248210e2004200920056b22093602582004200b200a6b220b36025c2009200b470d05200c20056a200e200a6a200910db051a2004280214200441186a1091012004280220210a200428021c210920042802182105200428024c450d072004280248102c0c070b2004200441c8006a36028001200b20044180016a200a10c8022004280214200441c8006a1091010c050b103a000b200520091047000b2009200b103f000b200a200b1047000b200441286a41146a4109360200200441346a410c360200200441e0006a41146a410336020020044203370264200441ec9fc6003602602004410c36022c2004200441d8006a3602782004200441dc006a36027c20044204370390012004420137028401200441c0a0c600360280012004200441286a360270200420044180016a3602382004200441fc006a3602302004200441f8006a360228200441e0006a41fca0c6001041000b2004280250210a200428024c2109200428024821050b2005450d00200f200aad4220862005ad84100102402009450d002005102c0b2006102c0c010b2006102c20044180016a41086a220641bad6c500ad42808080809001841002220541086a29000037030020042005290000370380012005102c200441186a41086a220a20062903003703002004200429038001370318200641ccc5c400ad42808080809001841002220541086a29000037030020042005290000370380012005102c200441e0006a41086a2209200629030037030020042004290380013703602004200136024820044180016a41186a220b200d4280808080c000841006220541186a29000037030020044180016a41106a220c200541106a2900003703002006200541086a29000037030020042005290000370380012005102c200441286a41186a2205200b290300370300200441286a41106a220b200c290300370300200441286a41086a220c2006290300370300200420042903800137032841c000102a2206450d02200620042903183700002006200429036037001020062004290328370020200641086a200a290300370000200641186a2009290300370000200641286a200c290300370000200641306a200b290300370000200641386a200529030037000020044100360288012004420137038001410120044180016a1067200428021420044180016a10910120042802840121052006ad4280808080800884200435028801422086200428028001220aad84100102402005450d00200a102c0b2006102c0b20044180016a41086a220641bad6c500ad42808080809001841002220541086a29000037030020042005290000370380012005102c200720062903003703002004200429038001370318200641fbb4c400ad4280808080e000841002220541086a29000037030020042005290000370380012005102c2008200629030037030020042004290380013703604104102a2206450d0120044284808080c00037028401200420063602800120062001360000200020044180016a109101200428028401210120044180016a41186a22052004350288014220862004280280012208ad841006220641186a29000037030020044180016a41106a2200200641106a29000037030020044180016a41086a2207200641086a29000037030020042006290000370380012006102c200441286a41186a2005290300370300200441286a41106a2000290300370300200441286a41086a2007290300370300200420042903800137032802402001450d002008102c0b41c000102a2206450d01200620042903183700002006200429036037001020062004290328370020200641086a200441186a41086a290300370000200641186a200441e0006a41086a290300370000200641286a200441286a41086a290300370000200641306a200441386a290300370000200641386a200441286a41186a2903003700004101102a2201450d0141002105200141807f410020021b2003723a00002006ad42808080808008842001ad4280808080108410012001102c2006102c0b200441a0016a240020050f0b1033000bcc0301057f230041106b2203240020034100360208200342013703002001200310670240024002402001450d002000200141286c6a21040340200028020021050240024020032802042206200328020822016b4104490d00200328020021060c010b200141046a22072001490d04200641017422012007200120074b1b22014100480d040240024020060d002001102a21060c010b200328020020062001102e21060b2006450d032003200136020420032006360200200328020821010b2003200141046a360208200620016a20053600002003200336020c200041046a22062003410c6a109402200041246a28020021050240024020032802042200200328020822016b4104490d00200328020021000c010b200141046a22072001490d04200041017422012007200120074b1b22014100480d040240024020000d002001102a21000c010b200328020020002001102e21000b2000450d032003200136020420032000360200200328020821010b2003200141046a360208200020016a2005360000200641246a22002004470d000b0b200328020421012002290200200335020842208620032802002200ad84100102402001450d002000102c0b200341106a24000f0b1033000b1035000bf70702067f027e230041e0006b22022400200241186a200041186a290000370300200241106a200041106a290000370300200241086a200041086a29000037030020022000290000370300200241c0006a41086a220341bad6c500ad42808080809001841002220041086a290000370300200220002900003703402000102c200241206a41086a2204200329030037030020022002290340370320200341c3c5c400ad42808080809001841002220041086a290000370300200220002900003703402000102c200241306a41086a2205200329030037030020022002290340370330200241c0006a2002109f0102400240024041c000102a2200450d00200020022903203700002000200229033037001020002002290040370020200041086a2004290300370000200041186a2005290300370000200041286a2003290000370000200041306a200241c0006a41106a290000370000200041386a200241c0006a41186a290000370000200141186a280200220341186a2204417f4c0d010240024020040d00410121050c010b2004102a2205450d01200128021821030b200241003602482002200436024420022005360240200128021021062003200241c0006a10670240024020022802442205200228024822046b2003490d00200228024021050c010b200420036a22072004490d03200541017422042007200420074b1b22044100480d030240024020050d002004102a21050c010b200228024020052004102e21050b2005450d012002200436024420022005360240200228024821040b2002200420036a360248200520046a2006200310db051a2001411c6a200241c0006a109101200141086a2903002108200129030021090240024020022802442205200228024822046b4110490d00200228024021030c010b200441106a22032004490d03200541017422042003200420034b1b22064100480d030240024020050d002006102a21030c010b200228024020052006102e21030b2003450d01200220063602442002200336024020022802482104200621050b200320046a22062008370008200620093700002002200441106a2204360248200128023c21060240200520046b41034b0d00200441046a22072004490d03200541017422042007200420074b1b22044100480d030240024020050d002004102a21030c010b200320052004102e21030b2003450d012002200436024420022003360240200228024821040b2002200441046a360248200320046a2006360000200228024421032000ad4280808080800884200235024842208620022802402204ad84100102402003450d002004102c0b2000102c0240200141146a280200450d002001280210102c0b200241e0006a24000f0b1033000b103a000b1035000bff0201047f230041e0006b22012400200141186a200041186a290000370300200141106a200041106a290000370300200141086a200041086a29000037030020012000290000370300200141c0006a41086a220241bad6c500ad42808080809001841002220041086a290000370300200120002900003703402000102c200141206a41086a220320022903003703002001200129034037032020024188fbc400ad4280808080d000841002220041086a290000370300200120002900003703402000102c200141306a41086a2204200229030037030020012001290340370330200141c0006a2001109f01024041c000102a22000d001033000b200020012903203700002000200129033037001020002001290040370020200041086a2003290300370000200041186a2004290300370000200041286a2002290000370000200041306a200141c0006a41106a290000370000200041386a200141c0006a41186a2900003700002000ad428080808080088410052000102c200141e0006a24000bbc0101037f02400240024002402000280200220041046a2802002203200041086a28020022046b2002490d00200028020021030c010b200420026a22052004490d02200341017422042005200420054b1b22044100480d020240024020030d002004102a21030c010b200028020020032004102e21030b2003450d0120002003360200200041046a2004360200200041086a28020021040b200041086a200420026a360200200320046a2001200210db051a41000f0b1033000b1035000ba70301047f230041106b22022400200028020021002002410036020c0240024002402001418001490d002001418010490d0102402001418080044f0d0020022001413f71418001723a000e20022001410676413f71418001723a000d20022001410c76410f7141e001723a000c410321010c030b20022001413f71418001723a000f2002200141127641f001723a000c20022001410676413f71418001723a000e20022001410c76413f71418001723a000d410421010c020b200220013a000c410121010c010b20022001413f71418001723a000d20022001410676411f7141c001723a000c410221010b0240024002400240200041046a2802002203200041086a28020022046b2001490d00200028020021030c010b200420016a22052004490d02200341017422042005200420054b1b22044100480d020240024020030d002004102a21030c010b200028020020032004102e21030b2003450d0120002003360200200041046a2004360200200041086a28020021040b200041086a200420016a360200200320046a2002410c6a200110db051a200241106a240041000f0b1033000b1035000b6301017f230041206b2202240020022000280200360204200241086a41106a200141106a290200370300200241086a41086a200141086a29020037030020022001290200370308200241046a41c49ac500200241086a10392101200241206a240020010b130020004101360204200041c49fc5003602000b13002000410236020420004198a1c5003602000b2d01017f02404104102a22020d001033000b20004284808080c00037020420002002360200200241e8073600000b2d01017f02404104102a22020d001033000b20004284808080c00037020420002002360200200241e5003600000bfa0304027f027e017f027e230041e0006b22042400200441086a200128021029034842002003ad420010e00520012802182205420020052903082206427f200429030820042903104200521b7d2207200720065622051b37030802400240024020050d002003417f4c0d0102400240024020030d004101210802402001280214280208200241014100101e41026a220141024b0d0020010e03040002040b41ac91c600412841d491c6001036000b0240200310302208450d0002402001280214280208200220082003101e41026a220141024b0d0020010e03030002030b41ac91c600412841d491c6001036000b1033000b41002101200441003a005802400240034020032001460d01200441386a20016a200820016a2d00003a00002004200141016a22053a00582005210120054120470d000b200441186a41186a200441386a41186a2903002206370300200441186a41106a200441386a41106a2903002207370300200441186a41086a200441386a41086a290300220937030020042004290338220a370318200041196a2006370000200041116a2007370000200041096a20093700002000200a370001410021010c010b0240200141ff0171450d00200441003a00580b410121010b200020013a00002003450d032008102c0c030b2008102c0b200041013a00000c010b103a000b200441e0006a24000bfa0304027f027e017f027e230041e0006b22042400200441086a200128021029034842002003ad420010e00520012802182205420020052903082206427f200429030820042903104200521b7d2207200720065622051b37030802400240024020050d002003417f4c0d0102400240024020030d004101210802402001280214280208200241014100101e41026a220141024b0d0020010e03040002040b41ac91c600412841d491c6001036000b0240200310302208450d0002402001280214280208200220082003101e41026a220141024b0d0020010e03030002030b41ac91c600412841d491c6001036000b1033000b41002101200441003a005802400240034020032001460d01200441386a20016a200820016a2d00003a00002004200141016a22053a00582005210120054120470d000b200441186a41186a200441386a41186a2903002206370300200441186a41106a200441386a41106a2903002207370300200441186a41086a200441386a41086a290300220937030020042004290338220a370318200041196a2006370000200041116a2007370000200041096a20093700002000200a370001410021010c010b0240200141ff0171450d00200441003a00580b410121010b200020013a00002003450d032008102c0c030b2008102c0b200041013a00000c010b103a000b200441e0006a24000bd40202027f037e230041106b220424002004200128021029034842002003ad420010e00520012802182205420020052903082206427f200429030020042903084200521b7d2207200720065622051b37030842012106024002400240024020050d002003417f4c0d02024020030d0002402001280214280208200241014100101e41026a220341024b0d00420021074200210820030e03050005050b41ac91c600412841d491c6001036000b02400240200310302205450d0002402001280214280208200220052003101e41026a220141024b0d0020010e03020004020b41ac91c600412841d491c6001036000b1033000b2005102c0b0c020b0240200341104f0d004200210742012106420021082005102c0c020b200541086a290000210820052900002107420021062005102c0c010b103a000b2000200737030820002006370300200041106a2008370300200441106a24000b130020004103360204200041acafc5003602000b3400200041afb7c50036020420004100360200200041146a4101360200200041106a41b4b7c500360200200041086a42043702000b990101017f02404101102a2202450d00200241003a0000200241014102102e2202450d00200241003a0001200241024104102e2202450d00200241003b0002200241044108102e2202450d0020024100360004200241084110102e2202450d0020024200370008200241104120102e2202450d002002420037001820024200370010200042a08080808004370204200020023602000f0b1033000bd30101017f230041106b22022400024002400240024020002d00000e03010200010b200220012802184183f8c500410b2001411c6a28020028020c11000022003a000820022001360200200241003a0009200241003602040c020b20022001280218418ef8c500410c2001411c6a28020028020c11000022003a000820022001360200200241003a0009200241003602040c010b20022001280218419af8c500410d2001411c6a28020028020c11000022003a000820022001360200200241003a0009200241003602040b200241106a240020000be8cf0106067f017e057f017e117f027e2300419081046b22022400024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002402001280204220320012802082204460d00200441016a22052004490d02200320054f0d0120052003103f000b200241013a0030200241fc006a41013602002002420137026c200241f0f7c5003602682002412b36021c2002200241186a3602782002200241306a360218200241f880046a200241e8006a103720022802f88004210420022802fc8004210120004101360200200041003a00042001450d2a2004102c0c2a0b200128020020046a2d00002104200120053602082004410c4b0d0302400240024020040e0d0001151413121110050c0b0a04000b200241e8006a200110920541012106200228026c2107024020022802684101470d0020074108762101200241f8006a2802002104200241e8006a41086a29030021080c250b41002109200241e8006a41004180800110da051a410021034100210a2007450d1f410021054100210a410121064100210b0340024002402001280204220c200128020822036b2007200b6b220441808001200441808001491b2204490d00200320046a220d2003490d04200c200d4f0d01200d200c103f000b200241013a00e880042002418c81046a4101360200200242013702fc8004200241f0f7c5003602f880042002412b36021c2002200241186a36028881042002200241e880046a360218200241306a200241f880046a10372002290330210820022802382104410521070240200a450d002006102c0b0c260b200241e8006a200128020020036a200410db051a2001200d36020802400240200a20056b2004490d00200520046a21030c010b200520046a22032005490d22200a410174220d2003200d20034b1b220d4100480d2202400240200a0d00200d102a21060c010b2006200a200d102e21060b2006450d2a200d210a0b200620056a200241e8006a200410db051a2003210520072004200b6a220b4b0d000c200b0b200241e8006a2001109905024020022802684101470d00200228026c22044108762105200241e8006a41086a2903002208422088210e200241f8006a28020021030c1e0b200241fc006a280200210f200241f8006a2802002101200241f4006a2802002103200241f0006a2802002110200228026c210b4100210441002109024002400240034002402004411f4d0d00410f21040c020b0240024020032001460d002001417f460d052003200141016a22054f0d01200141016a2003103f000b200241013a0030200241fc006a41013602002002420137026c200241f0f7c5003602682002412b36021c2002200241186a3602782002200241306a360218200241c8006a200241e8006a1037410521040c020b200b20016a2d0000220641ff00712004411f71742009722109200441076a2104200521012006418001710d000b20044120490d01410d210420064110490d010b200241f880046a41086a200241c8006a41086a28020022033602002002200229034822083703f880042008422088a721092008a721060c1e0b20024100360260200242043703580240024020090d00410421010c010b410020036b2111200b41026a2112410120036b21134100210a410421014100211441002115410021160340201621170240024002400240024002400240024020032005460d00200541016a22042005490d0120032004490d060240200b20056a2d0000220441e000460d00411821050c260b201741016a211641022118200541026a210441002106410321192012211a4100211b024002400340201a21072019210c2018210d02402006411f4d0d00410f21050c020b02400240201320046a4102460d002004450d07200320044f0d0120042003103f000b200241013a00302002410136027c2002420137026c200241f0f7c5003602682002412b36021c2002200241186a3602782002200241306a360218200241f880046a200241e8006a1037200241206a41086a200241f880046a41086a280200360200200220022903f88004370320410521050c020b200b20046a417f6a2d0000221c41ff00712006411f7174201b72211b200d41016a2118200c41016a2119200741016a211a200441016a2104200641076a2106201c418001710d000b20064120490d01201c4110490d01410d21050b200241e880046a41086a200241206a41086a28020022033602002002200229032022083703e880042008a721064100210420022802ec800421090c250b41002119200241003602382002420137033002400240201b0d002004417f6a21064101211c4100211a4100211d0c010b201120056a211e410021184101211c4100211a034002400240201e200d6a450d002005200c6a2204450d07200320044f0d0120042003103f000b200220183602342002201a3602382002201c360230200241013a00e880042002410136027c2002420137026c200241f0f7c5003602682002412b36021c2002200241186a3602782002200241e880046a360218200241f880046a200241e8006a103720022802f88004210620022802fc80042109200228028081042103410521050c260b200720056a2c000022044100480d0602400240200441c00071450d00200441807f72220441ff017141fb014b0d010b200220183602342002201a3602382002201c360230410621050c250b02400240201a2018460d002018211d201a21180c010b201841016a22062018490d2d2018410174221d2006201d20064b1b221d4100480d2d0240024020180d00201d102a211c0c010b201c2018201d102e211c0b201c450d350b201c20186a2004417f733a0000200d41016a210d200c41016a210c200741016a2107201d2118201b201a41016a221a470d000b2002201d3602342002201a3602382002201c3602302005200d6a21060b201c411076411074221b201c41087641ff0171410874221872201c41ff0171221c72210c4100210d03404100210402402019411f4d0d00410f21050c230b0240024020032006460d002006417f460d082003200641016a22054f0d01200641016a2003103f000b200241013a00302002410136027c2002420137026c200241f0f7c5003602682002412b36021c2002200241186a3602782002200241306a360218200241f880046a200241e8006a103720022802f88004210620022802fc8004210920022d00808104210320022d00818104210720022f01828104210d410521050c230b200b20066a2d0000220741ff00712019411f7174200d72210d201941076a2119200521062007418001710d000b20194120490d072007410f4d0d07410d21050c210b200241013a00302002410136027c2002420137026c200241f0f7c5003602682002412b36021c2002200241186a3602782002200241306a360218200241f880046a200241e8006a103720022802f88004210620022802fc8004210920022d00808104210320022d00818104210720022f01828104210d410521050c240b417f20041047000b417f20041047000b417f20041047000b200220183602342002201a3602382002201c360230411921050c1d0b417f200641016a1047000b20042003103f000b0240200d41014d0d004104210541f2cdc5002106412421090c190b024002400240200d0e020001000b410421060c010b20032005460d18024002400240200541016a220d2005490d002003200d490d010240200b20056a2c0000220441004e0d00411921050c1e0b41062105200441c00071450d02200441807f72220441ff017141fb014d0d022004417f732106200d21050c030b417f200541016a1047000b200541016a2003103f000b0c1a0b024020172015470d00024020142015460d00201421150c010b201441016a22042014490d232014410174220d2004200d20044b1b221541ffffffff00712015470d23201541047422044100480d230240024020140d002004102a21010c010b200120144104742004102e21010b2001450d2b2002201536025c20022001360258201521140b200120174104746a2204201f4180807c71200641ff01714108747241e00072221f36020c2004201a3602082004201d36020420042018201c72201b72360200200a41106a210a2002201636026020162009470d000b0b2005200f462104200229025c2208422088210e02402010450d00200b102c0b200ea721052008a721092004450d1c2005ad4220862009ad842108410221030c270b417f200141016a1047000b2003200d1047000b417f20051047000b200241e8006a2001109905024020022802684101470d00200041013602002000200241e8006a41047222012902003702042000410c6a200141086a2902003702000c280b200241fc006a280200210d200241f8006a2802002104200241f4006a2802002105200241f0006a280200210a200228026c210b410021034100210102400240034002402003411f4d0d00410f21040c080b20052004460d062004417f460d012005200441016a2206490d02200b20046a2d0000220941ff00712003411f71742001722101200341076a2103200621042009418001710d000b20034120490d04410d21042009410f4b0d060c040b417f200441016a1047000b200441016a2005103f000b200241e8006a2001109905024020022802684101470d00200041013602002000200241e8006a41047222012902003702042000410c6a200141086a2902003702000c270b200241fc006a280200210d200241f8006a2802002104200241f4006a2802002105200241f0006a280200210a200228026c210b410021034100210102400240034002402003411f4d0d00410f21040c0d0b20052004460d0b2004417f460d012005200441016a2206490d02200b20046a2d0000220941ff00712003411f71742001722101200341076a2103200621042009418001710d000b20034120490d09410d21042009410f4b0d0b0c090b417f200441016a1047000b200441016a2005103f000b200041123a000420004101360200200041056a20043a00000c250b200d20064621040240200a450d00200b102c0b02402004450d00410b21030c210b20024103410220041b3a00e88004200241fc006a41013602002002420137026c200241f0f7c5003602682002412b36021c2002200241186a3602782002200241e880046a360218200241306a200241e8006a10372002418381046a200241386a280200360000200220022903303700fb8004200041053a0004200020022900f880043700052000410c6a200241ff80046a290000370000200041013602000c240b200241013a0030200241fc006a41013602002002420137026c200241f0f7c5003602682002412b36021c2002200241186a3602782002200241306a360218200241f880046a200241e8006a1037410521040b2000200436020420004101360200200041086a20022903f88004370200200041106a200241f880046a41086a280200360200200a450d22200b102c0c220b200241e8006a20011099050240024020022802684101470d00200228026c22014108762106200241e8006a41086a2903002208422088210e200241f8006a280200210b0c010b200241c0006a200241fc006a280200360200200241386a200241f4006a2902003703002002200229026c37033041002101410021050240024002400240024002400240034002402001411f4d0d00410f210d0c020b0240024020022802382209200228023c2204460d00200441016a22032004490d05200920034f0d0120032009103f000b200241013a00e88004200241fc006a41013602002002420137026c200241f0f7c5003602682002412b36021c2002200241186a3602782002200241e880046a360218200241c8006a200241e8006a10374105210d0c020b200228023020046a2d000021042002200336023c200441ff00712001411f71742005722105200141076a21012004418001710d000b20014120490d01410d210d20044110490d010b200241f880046a41086a200241c8006a41086a280200220b3602002002200229034822083703f880042008422088a721072008a7210c410021060c040b20024100360250200242043703480240024020050d00410421010c010b4100210d0340200d41016a210d41002101410021090240024002400240024002400240034002402001411f4d0d00410f210d0c030b20022802382206200228023c2204460d01200441016a22032004490d0420062003490d06200228023020046a2d000021042002200336023c200441ff00712001411f71742009722109200141076a21012004418001710d000b20014120490d022004410f4d0d02410d210d0c010b200241013a00582002410136027c2002420137026c200241f0f7c5003602682002412b36021c2002200241186a3602782002200241d8006a360218200241f880046a200241e8006a1037200241e880046a41086a200241f880046a41086a280200360200200220022903f8800422083703e880042008a7210c4105210d0b20022802f08004210b20022802ec80042107410021060c090b200241e8006a200241306a108a05024020022802684101470d00200228026c220d41087621062002280278210b200228027421072002280270210c0c090b200228027421192002280270211c200228026c211a410021044100210b02400240034002402004411f4d0d00410f210d0c020b0240024020022802382206200228023c2203460d00200341016a22012003490d06200620014f0d0120012006103f000b200241013a00e880042002410136027c2002420137026c200241f0f7c5003602682002412b36021c2002200241186a3602782002200241e880046a360218200241f880046a200241e8006a1037200241206a41086a200241f880046a41086a280200360200200220022903f8800422083703202008a7210c4105210d0c030b2002280230220a20036a2d000021032002200136023c200341ff00712004411f7174200b72210b200441076a21042003418001710d000b20044120490d0520034110490d05410d210d0b0b2002280228210b200228022421070c070b417f20031047000b417f20011047000b20032006103f000b4100211b200241e8006a41004180800410da051a02400240200b0d00410121184100210c0c010b4100211b4101211841002103410021070240034002400240200620016b200b20076b220441808004200441808004491b2204490d00200120046a220c2001490d032006200c4f0d01200c2006103f000b200241013a00202002410136028c8104200242013702fc8004200241f0f7c5003602f880042002412b36021c2002200241186a36028881042002200241206a360218200241e880046a200241f880046a103720022802e88004210c20022802ec8004210720022802f08004210b4105210d201b450d072018102c0c070b200241e8006a200a20016a200410db051a2002200c36023c02400240201b20036b2004490d00200320046a210c0c010b200320046a220c2003490d22201b4101742201200c2001200c4b1b22014100480d2202400240201b0d002001102a21180c010b2018201b2001102e21180b2018450d2a2001211b0b201820036a200241e8006a200410db051a200b200420076a22074d0d02200228023c2101200228023821062002280230210a200c21030c000b0b2001200c1047000b024020022802502203200228024c470d00200341016a22012003490d1f200341017422042001200420014b1b2204ad421c7e2208422088a70d1f2008a722014100480d1f0240024020030d002001102a21010c010b20022802482003411c6c2001102e21010b2001450d272002200436024c200220013602480b200228024822012003411c6c6a2204200941087622063b0001200420183602102004201a360204200420093a0000200441036a20064110763a0000200441186a200c360200200441146a201b3602002004410c6a2019360200200441086a201c3602002002200341016a360250200d2005470d000b0b200228023c2002280240462104200229024c2208422088210e02402002280234450d002002280230102c0b20014108762105200ea721032008a7210a2004450d042005410874200141ff01717221012003ad422086200aad842108410d21030c230b417f20031047000b02402019450d0020194104742104201a21010340024020012d00004109470d000240200141046a2205280200220328020441ffffffff0371450d002003280200102c200528020021030b2003102c0b200141106a2101200441706a22040d000b0b41002106201c450d00201a102c0b2002280248211b024020022802502201450d00201b2001411c6c6a210a201b21090340024020092802042201450d0002402009410c6a2802002204450d00200441047421040340024020012d00004109470d000240200141046a2205280200220328020441ffffffff0371450d002003280200102c200528020021030b2003102c0b200141106a2101200441706a22040d000b0b200941086a280200450d002009280204102c0b2009411c6a21010240200941146a280200450d002009280210102c0b200121092001200a470d000b0b200228024c450d00201b102c0b2006410874200d41ff01717221012007ad220e422086200cad8421082002280234450d012002280230102c0c010b2005410874200141ff017172210d20024103410220041b3a00e88004200241e8006a41146a41013602002002420137026c200241f0f7c5003602682002412b36021c2002200241186a3602782002200241e880046a360218200241f880046a200241e8006a103720022903f88004210820022802808104210b02402003450d00200d2003411c6c6a2106200d21090340024020092802042201450d0002402009410c6a2802002204450d00200441047421040340024020012d00004109470d000240200141046a2205280200220328020441ffffffff0371450d002003280200102c200528020021030b2003102c0b200141106a2101200441706a22040d000b0b200941086a280200450d002009280204102c0b2009411c6a21010240200941146a280200450d002009280210102c0b2001210920012006470d000b0b2008422088210e4105210141002106200a450d00200d102c0b20004101360200200041106a200b360200200041086a200e422086200842ffffffff0f838437020020002006410874200141ff0171723602040c210b200241e8006a20011099050240024020022802684101470d00200228026c220a4108762104200241e8006a41086a2903002208422088210e200241f8006a280200210d0c010b200241fc006a280200211b200241f8006a2802002101200241f4006a2802002105200241f0006a2802002107200228026c210b410021044100210902400240024002400240024002400240024002400240034002402004411f4d0d00410f210a0c020b0240024020052001460d002001417f460d052005200141016a22034f0d01200141016a2005103f000b200241013a00e88004200241fc006a41013602002002420137026c200241f0f7c5003602682002412b36021c2002200241186a3602782002200241e880046a360218200241f880046a200241e8006a10374105210a0c020b200b20016a2d0000220641ff00712004411f71742009722109200441076a2104200321012006418001710d000b20044120490d01410d210a20064110490d010b200241306a41086a200241f880046a41086a280200220d360200200220022903f8800422083703302008422088a7210c2008a7211b0c080b20024100360260200242043703580240024020090d00410421010c010b200241f1006a21104100211c0340201c41016a211c4100210141002106024002400240024002400240024002400240024002400240034002402001411f4d0d00410f210a0c020b0240024020052003460d002003417f460d062005200341016a22044f0d01200341016a2005103f000b200241013a00f880042002410136027c2002420137026c200241f0f7c5003602682002412b36021c2002200241186a3602782002200241f880046a360218200241c8006a200241e8006a10374105210a2002280248211b0c030b200b20036a2d0000220a41ff00712001411f71742006722106200141076a210120042103200a418001710d000b20014120490d02200a4110490d02410d210a0b0b2002280250210d200228024c210c0c120b4100210c200241e8006a41004180800110da051a410121180240024020060d00200421034100211a4100210a0c010b4100210d4100211a41002119034002400240200520046b200620196b220141808001200141808001491b2201490d00200420016a22032004490d05200520034f0d0120032005103f000b200241013a00482002410136028c8104200242013702fc8004200241f0f7c5003602f880042002412b36021c2002200241186a36028881042002200241c8006a360218200241e880046a200241f880046a103720022802e88004211b20022802ec8004210c20022802f08004210d4105210a201a450d142018102c0c140b200241e8006a200b20046a200110db051a02400240201a200d6b2001490d00200d20016a210a0c010b200d20016a220a200d490d2d201a4101742204200a2004200a4b1b22044100480d2d02400240201a0d002004102a21180c010b2018201a2004102e21180b2018450d352004211a0b2018200d6a200241e8006a200110db051a20032104200a210d2006200120196a22194b0d000b0b2002200a3602402002410036023c2002200a3602382002201aad4220862018ad84370330410021014100210d02400240034002402001411f4d0d00410f210a0c020b02400240200a200c460d00200c417f460d07200a200c41016a22064f0d01200c41016a200a103f000b200241013a00482002410136027c2002420137026c200241f0f7c5003602682002412b36021c2002200241186a3602782002200241c8006a360218200241f880046a200241e8006a1037200241206a41086a200241f880046a41086a280200360200200220022903f880043703204105210a0c020b2018200c6a2d000021042002200636023c200441ff00712001411f7174200d72210d200141076a21012006210c2004418001710d000b20014120490d0120044110490d01410d210a0b200241e880046a41086a200241206a41086a280200220d3602002002200229032022083703e880042008a7211b20022802ec8004210c0c110b4100210c200241003602f08004200242043703e8800402400240200d0d0041042116410021174100210f0c010b41002117410421164100210f03402017211d200f221441016a210f4100210141002118024002400240034002402001411f4d0d00410f21040c020b0240024020022802382219200228023c2204460d00200441016a22062004490d0b201920064f0d0120062019103f000b200241013a00f880042002410136027c2002420137026c200241f0f7c5003602682002412b36021c2002200241186a3602782002200241f880046a360218200241c8006a200241e8006a1037410521042002280248211b0c030b2002280230221a20046a2d0000210a2002200636023c200a41ff00712001411f71742018722118200141076a2101200a418001710d000b20014120490d02200a4110490d02410d21040b0b2002280250210d200228024c210c410021010c0a0b02400240024020192006460d00200441026a21042006417f460d0920192004490d0a201a20066a2c000021012002200436023c0240200141004e0d00411921040c0d0b41062104200141c00071450d0b200141807f72220141ff017141fb014d0d0b2014201d460d01201d21172014211d0c020b200241013a00482002410136027c2002420137026c200241f0f7c5003602682002412b36021c2002200241186a3602782002200241c8006a360218200241f880046a200241e8006a103720022802f88004211b20022802fc8004210c20022802808104210d410521040c0b0b201d41016a2204201d490d2d201d41017422062004200620044b1b221741ffffffff01712017470d2d201741037422044100480d2d02400240201d0d002004102a21160c010b2016201d4103742004102e21160b2016450d35200220163602e880040b2016201d4103746a2204201341807e712001417f7341ff01717222133a000420042018360200200f200d470d000b200220173602ec80042002200f3602f080040b2016200f4103746a210a201621010340200a2001460d09200c20012802006a2204200c492106200141086a21012004210c20060d0e0c000b0b417f200341016a1047000b200420031047000b417f200c41016a1047000b417f20061047000b417f20041047000b20042019103f000b0b2002201d3602ec8004200220143602f08004200141ff0171410874200472210a201d0d070c080b4101210a4100210441082119410021060340200241e8006a200241306a108b05024020022802684101470d002002280278210d2002280274210c2002280270211b200228026c210a0c050b200241f880046a41026a2201201041026a2d00003a0000200220102f00003b01f880042002280274211a200229037821080240024002400240024020022d0070220d4106470d00200a417f6a210a0c010b200d417e6a41034f0d00200a41016a220c200a4f2118200c210a20180d004115210c419ec7c500211b4104210a200d4109460d010c080b200241e8006a41026a220c20012d00003a0000200220022f01f880043b016820062004460d01200421180c020b0240201a28020441ffffffff0371450d00201a280200102c0b201a102c0c060b200441016a22012004490d23200441017422062001200620014b1b221841ffffffff00712018470d23201841047422014100480d230240024020040d002001102a21190c010b201920044104742001102e21190b2019450d2b20042106201821040b201920064104746a2201200d3a0000200120083703082001201a360204200120022f01683b0001200141036a200c2d00003a0000200641016a2106200a0d000b200228023c200228024046210102402002280234450d002002280230102c0b0240024002402001450d002002280260220a200228025c470d02200a41016a2201200a490d24200a41017422042001200420014b1b2204ad42187e2208422088a70d242008a7220141004e0d010c240b20024103410220011b3a00e880042002410136027c2002420137026c200241f0f7c5003602682002412b36021c2002200241186a3602782002200241e880046a360218200241f880046a200241e8006a103720022802f88004211b20022802fc8004210c20022802808104210d02402006450d0020064104742104201921010340024020012d00004109470d000240200141046a2205280200220328020441ffffffff0371450d002003280200102c200528020021030b2003102c0b200141106a2101200441706a22040d000b0b02402018450d002019102c0b4105210a2017450d0a2016102c0c0a0b02400240200a0d002001102a21010c010b2002280258200a41186c2001102e21010b2001450d2a2002200436025c200220013602580b20022802582201200a41186c6a2204201936020c2004200f3602082004201736020420042016360200200441146a2006360200200441106a20183602002002200a41016a360260201c2009470d000b0b2003201b462104200229025c2208422088210e02402007450d00200b102c0b200ea721032008a721072004450d082003ad4220862007ad842108410c21030c260b417f200141016a1047000b02402006450d0020064104742103201921010340024020012d00004109470d000240200141046a2209280200220528020441ffffffff0371450d002005280200102c200928020021050b2005102c0b200141106a2101200341706a22030d000b0b2004450d012019102c0c010b20022802808104210d20022802fc8004210c411c210a0b2017450d010b2016102c0b2002280234450d002002280230102c0b20022802582118024020022802602201450d002018200141186c6a21062018210903400240200941046a280200450d002009280200102c0b0240200941146a2802002204450d00200928020c2101200441047421040340024020012d00004109470d000240200141046a2205280200220328020441ffffffff0371450d002003280200102c200528020021030b2003102c0b200141106a2101200441706a22040d000b0b200941186a21010240200941106a280200450d00200928020c102c0b2001210920012006470d000b0b200228025c450d002018102c0b200a4108762104200cad220e422086201bad8421082007450d01200b102c0c010b20024103410220041b3a0030200241e8006a41146a41013602002002420137026c200241f0f7c5003602682002412b36021c2002200241186a3602782002200241306a360218200241f880046a200241e8006a103720022903f88004210820022802808104210d02402003450d002001200341186c6a210b2001210603400240200641046a280200450d002006280200102c0b0240200641146a2802002203450d00200628020c2104200341047421030340024020042d00004109470d000240200441046a2209280200220528020441ffffffff0371450d002005280200102c200928020021050b2005102c0b200441106a2104200341706a22030d000b0b200641186a21040240200641106a280200450d00200628020c102c0b200421062004200b470d000b0b2008422088210e4105210a410021042007450d002001102c0b20004101360200200041106a200d360200200041086a200e422086200842ffffffff0f838437020020002004410874200a41ff0171723602040c200b200241e8006a20011099050240024020022802684101470d00200228026c22044108762106200241e8006a41086a2903002208422088210e200241f8006a280200210b0c010b2002418881046a200241fc006a2802003602002002418081046a200241f4006a2902003703002002200229026c3703f8800441002101410021050240024002400240024002400240034002402001411f4d0d00410f210d0c020b02400240200228028081042209200228028481042204460d00200441016a22032004490d05200920034f0d0120032009103f000b200241013a0058200241fc006a41013602002002420137026c200241f0f7c5003602682002412b36021c2002200241186a3602782002200241d8006a360218200241306a200241e8006a1037200241e880046a41086a200241306a41086a280200360200200220022903303703e880044105210d0c020b20022802f8800420046a2d00002104200220033602848104200441ff00712001411f71742005722105200141076a21012004418001710d000b20014120490d01410d210d20044110490d010b200241c8006a41086a200241e880046a41086a280200220b360200200220022903e8800422083703482008422088a721072008a7210c410021060c040b200241003602f08004200242043703e880040240024020050d00410421010c010b4100210b0340200b41016a210b410021014100210902400240024002400240034002402001411f4d0d00410f210d0c030b200228028081042206200228028481042204460d01200441016a22032004490d0920062003490d0a20022802f8800420046a2d00002104200220033602848104200441ff00712001411f71742009722109200141076a21012004418001710d000b20014120490d022004410f4d0d02410d210d0c010b200241013a00582002410136027c2002420137026c200241f0f7c5003602682002412b36021c2002200241186a3602782002200241d8006a360218200241306a200241e8006a1037200241206a41086a200241306a41086a2802003602002002200229033022083703202008a7210c4105210d0b2002280228210b20022802242107410021060c010b200241e8006a200241f880046a108a05024020022802684101470d00200228026c220d41087621062002280278210b200228027421072002280270210c0c010b2002280274211b20022802702119200228026c2118200241e8006a200241f880046a108c0520022802684101470d01200228026c210d2002280278210b200228027421072002280270210c0240201b450d00201b4104742104201821010340024020012d00004109470d000240200141046a2205280200220328020441ffffffff0371450d002003280200102c200528020021030b2003102c0b200141106a2101200441706a22040d000b0b200d41087621062019450d002018102c0b20022802e88004211b024020022802f080042201450d00201b2001411c6c6a210a201b21090340024020092802042201450d0002402009410c6a2802002204450d00200441047421040340024020012d00004109470d000240200141046a2205280200220328020441ffffffff0371450d002003280200102c200528020021030b2003102c0b200141106a2101200441706a22040d000b0b200941086a280200450d002009280204102c0b2009411c6a21010240200941146a280200450d002009280210102c0b200121092001200a470d000b0b20022802ec8004450d06201b102c0c060b4100210a2002280270210c200228026c2107024002402002280274220141027422030d004104210d410021060c010b2003410275220641ffffffff03712006470d1d200641027422044100480d1d2004102a220d450d250b02402001450d002003417c6a210a200d210120072104034020012004280200360200200141046a2101200441046a21042003417c6a22030d000b200a41027641016a210a0b0240200c450d002007102c0b024020022802f08004220320022802ec8004470d00200341016a22012003490d1d200341017422042001200420014b1b2204ad421c7e2208422088a70d1d2008a722014100480d1d0240024020030d002001102a21010c010b20022802e880042003411c6c2001102e21010b2001450d25200220043602ec8004200220013602e880040b20022802e8800422012003411c6c6a2204200941087622073b00012004200d36021020042018360204200420093a0000200441036a20074110763a0000200441186a200a360200200441146a20063602002004410c6a201b360200200441086a20193602002002200341016a3602f08004200b2005470d000b0b200228028481042002280288810446210420022902ec80042208422088210e024020022802fc8004450d0020022802f88004102c0b200ea721032008a7210d2004450d042003ad422086200dad842108410a21030c210b417f20031047000b417f20031047000b20032006103f000b2006410874200d41ff01717221042007ad220e422086200cad84210820022802fc8004450d0120022802f88004102c0c010b20024103410220041b3a00e88004200241e8006a41146a41013602002002420137026c200241f0f7c5003602682002412b36021c2002200241186a3602782002200241e880046a360218200241306a200241e8006a1037200229033021082002280238210b02402003450d0020012003411c6c6a210a200121060340024020062802042204450d0002402006410c6a2802002203450d00200341047421030340024020042d00004109470d000240200441046a2209280200220528020441ffffffff0371450d002005280200102c200928020021050b2005102c0b200441106a2104200341706a22030d000b0b200641086a280200450d002006280204102c0b2006411c6a21040240200641146a280200450d002006280210102c0b200421062004200a470d000b0b2008422088210e4105210441002106200d450d002001102c0b20004101360200200041106a200b360200200041086a200e422086200842ffffffff0f838437020020002006410874200441ff0171723602040c1f0b200d20064621040240200a450d00200b102c0b02402004450d00410921030c1b0b20024103410220041b3a00e88004200241fc006a41013602002002420137026c200241f0f7c5003602682002412b36021c2002200241186a3602782002200241e880046a360218200241306a200241e8006a10372002418381046a200241386a280200360000200220022903303700fb8004200041053a0004200020022900f880043700052000410c6a200241ff80046a290000370000200041013602000c1e0b200241013a0030200241fc006a41013602002002420137026c200241f0f7c5003602682002412b36021c2002200241186a3602782002200241306a360218200241f880046a200241e8006a1037410521040b2000200436020420004101360200200041086a20022903f88004370200200041106a200241f880046a41086a280200360200200a450d1c200b102c0c1c0b200241e8006a20011099050240024020022802684101470d00200228026c22034108762104200241e8006a41086a2903002208422088210e200241f8006a28020021090c010b2002418881046a200241fc006a2802003602002002418081046a200241f4006a2902003703002002200229026c3703f88004410021014100210502400240024002400240024002400240024002400240024002400240024002400240034002402001411f4d0d00410f21030c020b02400240200228028081042209200228028481042204460d00200441016a22032004490d05200920034f0d0120032009103f000b200241013a0058200241fc006a41013602002002420137026c200241f0f7c5003602682002412b36021c2002200241186a3602782002200241d8006a360218200241306a200241e8006a1037200241206a41086a200241306a41086a28020036020020022002290330370320410521030c020b20022802f8800420046a2d00002104200220033602848104200441ff00712001411f71742005722105200141076a21012004418001710d000b20014120490d01410d210320044110490d010b200241e880046a41086a200241206a41086a28020022093602002002200229032022083703e880042008422088a721062008a7210b0c0f0b20024100360260200242043703584104210102402005450d004100211b4100210c4100211a0340200241e8006a200241f880046a108e05024020022802684101470d002002200229027422083703e880042002280270210b200228026c21032008a721060c0f0b20022802702118200228026c211902400240200228028081042203200228028481042209460d00200941016a22042009490d05200320044f0d0120042003103f000b200241013a00482002410136027c2002420137026c200241f0f7c5003602682002412b36021c2002200241186a3602782002200241c8006a360218200241306a200241e8006a10370c0c0b2002280274211c20022802f88004220620096a2d000021072002200436028481040240200741034d0d00410a21040c0e0b0240024002400240024020070e0400010203000b410021074100210b4100210903400240200b411f4d0d00410f21040c130b20032004460d112004417f460d092003200441016a220d490d0d200620046a2d0000210a2002200d3602848104200a41ff0071200b411f71742009722109200b41076a210b200d2104200a418001710d000b41002107200b4120490d03200a410f4d0d03410d21040c110b4100210b410021090340200b411f4b0d0e0240024020032004460d002004417f460d0b2003200441016a220d4f0d01200441016a2003103f000b200241013a00482002410136027c2002420137026c200241f0f7c5003602682002412b36021c2002200241186a3602782002200241c8006a360218200241306a200241e8006a10370c100b200620046a2d0000210a2002200d3602848104200a41ff0071200b411f71742009722109200b41076a210b200d2104200a418001710d000b41012107200b4120490d02200a410f4d0d020c0c0b4100210b410021090340200b411f4b0d0d0240024020032004460d002004417f460d0b2003200441016a220d4f0d01200441016a2003103f000b200241013a00482002410136027c2002420137026c200241f0f7c5003602682002412b36021c2002200241186a3602782002200241c8006a360218200241306a200241e8006a10370c0f0b200620046a2d0000210a2002200d3602848104200a41ff0071200b411f71742009722109200b41076a210b200d2104200a418001710d000b41022107200b4120490d01200a410f4b0d0b0c010b4100210b410021090340200b411f4b0d0c0240024020032004460d002004417f460d0b2003200441016a220d4f0d01200441016a2003103f000b200241013a00482002410136027c2002420137026c200241f0f7c5003602682002412b36021c2002200241186a3602782002200241c8006a360218200241306a200241e8006a10370c0e0b200620046a2d0000210a2002200d3602848104200a41ff0071200b411f71742009722109200b41076a210b200d2104200a418001710d000b41032107200b4120490d00200a410f4b0d0a0b200220093602f08004200220073602ec800420022902ec8004210802400240200c201b460d00201b21030c010b201b41016a2204201b490d23201b41017422032004200320044b1b2203ad42147e220e422088a70d23200ea722044100480d2302400240201b0d002004102a21010c010b2001201b41146c2004102e21010b2001450d2b20022001360258201b210c2003211b0b2001200c41146c6a2204200837020c2004201c3602082004201836020420042019360200200c41016a210c201a41016a221a2005470d000b2002200336025c2002200c3602600b2002280284810420022802888104462104200229025c2208422088210e024020022802fc8004450d0020022802f88004102c0b200ea721032008a721052004450d0d2003ad4220862005ad842108410821030c270b417f20031047000b417f20041047000b417f200441016a1047000b417f200441016a1047000b417f200441016a1047000b417f200441016a1047000b200441016a2003103f000b410d2104410021070c030b410f2104410021070c020b2002280230210b2002290234210841052104410021070c010b200241013a00482002410136027c2002420137026c200241f0f7c5003602682002412b36021c2002200241186a3602782002200241c8006a360218200241306a200241e8006a10372002280230210b20022902342108410521040b20074108742004722103200220083703e880042008a721062018450d002019102c0b2002200c3602602002201b36025c20022802ec800421090240200c450d00200c41146c21052001210403400240200441046a280200450d002004280200102c0b200441146a21042005416c6a22050d000b0b201b450d012001102c0c010b20024103410220041b3a00e88004200241e8006a41146a41013602002002420137026c200241f0f7c5003602682002412b36021c2002200241186a3602782002200241e880046a360218200241306a200241e8006a1037200229033021082002280238210902402003450d00200341146c21032001210403400240200441046a280200450d002004280200102c0b200441146a21042003416c6a22030d000b0b2008422088210e41052103410021042005450d012001102c0c010b200341087621042006ad220e422086200bad84210820022802fc8004450d0020022802f88004102c0b20004101360200200041106a2009360200200041086a200e422086200842ffffffff0f838437020020002004410874200341ff0171723602040c1b0b200241e8006a20011099050240024020022802684101470d00200228026c220b4108762104200241e8006a41086a2903002208422088210e200241f8006a28020021060c010b200241c0006a200241fc006a280200360200200241386a200241f4006a2902003703002002200229026c3703304100210141002109024002400240024002400240024002400240024002400240034002402001411f4d0d00410f210b0c020b0240024020022802382205200228023c2204460d00200441016a22032004490d05200520034f0d0120032005103f000b200241013a0058200241fc006a41013602002002420137026c200241f0f7c5003602682002412b36021c2002200241186a3602782002200241d8006a360218200241f880046a200241e8006a1037200241206a41086a200241f880046a41086a280200360200200220022903f880043703204105210b0c020b2002280230220620046a2d000021042002200336023c200441ff00712001411f71742009722109200141076a21012004418001710d000b20014120490d01410d210b20044110490d010b200241e880046a41086a200241206a41086a28020022063602002002200229032022083703e880042008422088a721072008a7210d0c0a0b20024100360260200242043703580240024020090d00410421010c010b2009417f6a211b4104210141042110410421094104211c4104211a4100210a4100210c03400240024020052003460d00200341016a220b2003490d052005200b4f0d01200b2005103f000b2002200a36025c2002200c360260200241013a0048200241fc006a41013602002002420137026c200241f0f7c5003602682002412b36021c2002200241186a3602782002200241c8006a360218200241e880046a200241e8006a103720022802e88004210d20022802ec8004210720022802f080042106410521010c080b200620036a2c000021042002200b36023c20044100480d0402400240200441c00071450d00200441807f72220441ff017141fb014b0d010b2002200a36025c2002200c360260410621010c070b024002400240024002402005200b460d00200341026a210d200b417f460d0a2005200d4f0d01200d2005103f000b2002200a36025c2002200c360260200241013a0048200241fc006a41013602002002420137026c200241f0f7c5003602682002412b36021c2002200241186a3602782002200241c8006a360218200241e880046a200241e8006a103720022802e88004210d20022802ec8004210720022802f080042106410521010c010b2006200b6a2d000021032002200d36023c0240200341014b0d004100210520030e020302030b2002200a36025c2002200c360260410c21010b2002418881046a20063602002002418481046a20073602002002418081046a200d360200200220033a00fd8004200220013a00fc80040c0a0b41800221050b200241e8006a200241306a108a05200228027421072002280270210d200228026c210b024020022802684101470d002002200a36025c2002200c360260200241f8006a28020021060c0a0b02400240200c200a460d00200a2118200c210a0c010b200a41016a2201200a490d1d200a41017422032001200320014b1b221841ffffffff00712018470d1d201841047422014100480d1d02400240200a0d002001102a21010c010b201c200a4104742001102e21010b2001450d252002200136025820012110200121092001211c2001211a0b201a200a4104746a220320194180807c712004417f7341ff017172200572221936020c200320073602082003200d3602042003200b360200200a41016a210c0240201b450d00201b417f6a211b200228023c210320022802382105200228023021062018210a0c010b0b2002201836025c2002200c3602600b200228023c2002280240462104200229025c2208422088210e02402002280234450d002002280230102c0b200ea721032008a7210d2004450d082003ad422086200dad842108410721030c210b417f20031047000b417f200b1047000b2002200a36025c2002200c360260411921010c010b417f200d1047000b0b2002418881046a20063602002002418481046a20073602002002418081046a200d360200200220043a00fd8004200220013a00fc80040b200241013a00f8800420022802fc8004210b0b0240200c450d002009200c4104746a210c0340024020092802082204450d0020092802002101200441047421040340024020012d00004109470d000240200141046a2205280200220328020441ffffffff0371450d002003280200102c200528020021030b2003102c0b200141106a2101200441706a22040d000b0b200941106a21010240200941046a280200450d002009280200102c0b200121092001200c470d000b0b200a450d012010102c0c010b20024103410220041b3a00e88004200241fc006a41013602002002420137026c200241f0f7c5003602682002412b36021c2002200241186a3602782002200241e880046a360218200241f880046a200241e8006a103720022903f88004210820022802808104210602402003450d00200120034104746a210a2001210b03400240200b2802082203450d00200b2802002104200341047421030340024020042d00004109470d000240200441046a2209280200220528020441ffffffff0371450d002005280200102c200928020021050b2005102c0b200441106a2104200341706a22030d000b0b200b41106a21040240200b41046a280200450d00200b280200102c0b2004210b2004200a470d000b0b2008422088210e4105210b41002104200d450d012001102c0c010b200b41087621042007ad220e422086200dad8421082002280234450d002002280230102c0b20004101360200200041106a2006360200200041086a200e422086200842ffffffff0f838437020020002004410874200b41ff0171723602040c1a0b200241e8006a20011099050240024020022802684101470d00200228026c22034108762105200241e8006a41086a2903002208422088210e200241f8006a28020021040c010b2002418881046a200241fc006a2802003602002002418081046a200241f4006a29020022083703002002200229026c220e3703f88004200ea7210b2008a721054100210420022802848104210141002103024002400240024002400240024003402004411f4b0d010240024020052001460d002001417f460d072005200141016a22094f0d01200141016a2005103f000b200220053602848104200241013a0058200241fc006a41013602002002420137026c200241f0f7c5003602682002412b36021c2002200241186a3602782002200241d8006a360218200241306a200241e8006a1037200241206a41086a200241306a41086a280200360200200220022903303703204105210b0c030b200b20016a2d0000220641ff00712004411f71742003722103200441076a2104200921012006418001710d000b200220093602848104024020044120490d00410d210b2006410f4b0d020b200241003602382002420437033020030d02410421010c030b200220013602848104410f210b0b200241e880046a41086a200241206a41086a28020022043602002002200229032022083703e880042008422088a7210a2008a7210d410021090c030b4104210141002105410021060340200241e8006a200241f880046a10910520022f006d20022d006f4110747221092002280274210a2002280270210d20022d006c210b024020022802684101470d002002200536023420022006360238200241f8006a28020021042005450d042001102c0c040b0240024020062005460d0020052107200621040c010b200541016a22042005490d15200541017422072004200720044b1b2207ad420c7e2208422088a70d152008a722044100480d150240024020050d002004102a21010c010b20012005410c6c2004102e21010b2001450d1d2002200136023020052104200721050b20012004410c6c6a220420093b00012004200d3602042004200b3a0000200441036a20094110763a0000200441086a200a3602002003200641016a2206470d000b20022007360234200220063602380b200228028481042002280288810446210420022902342108024020022802fc8004450d0020022802f88004102c0b2008a721092004450d022008422088a7ad4220862009ad842108410621030c190b417f200141016a1047000b200941ffffff07712205410874200b41ff0171722103200aad220e422086200dad84210820022802fc8004450d0120022802f88004102c0c010b20024103410220041b3a00e88004200241fc006a41013602002002420137026c200241f0f7c5003602682002412b36021c2002200241186a3602782002200241e880046a360218200241306a200241e8006a103720022903302208422088210e2002280238210441052103410021052009450d002001102c0b20004101360200200041106a2004360200200041086a200e422086200842ffffffff0f838437020020002005410874200341ff0171723602040c190b200241e8006a20011099050240024020022802684101470d00200228026c22034108762105200241e8006a41086a2903002208422088210e200241f8006a28020021040c010b2002418881046a200241fc006a2802003602002002418081046a200241f4006a29020022083703002002200229026c220e3703f88004200ea7210b2008a72103410021042002280284810421014100210902400240024002400240024002400240024003402004411f4b0d010240024020032001460d002001417f460d072003200141016a22054f0d01200141016a2003103f000b200220033602848104200241013a0058200241fc006a41013602002002420137026c200241f0f7c5003602682002412b36021c2002200241186a3602782002200241d8006a360218200241306a200241e8006a1037200241206a41086a200241306a41086a280200360200200220022903303703204105210a0c030b200b20016a2d0000220641ff00712004411f71742009722109200441076a2104200521012006418001710d000b200220053602848104024020044120490d00410d210a2006410f4b0d020b41002107200241003602f08004200242043703e8800420090d02410421014100210d0c030b200220013602848104410f210a0b200241e880046a41086a200241206a41086a28020022043602002002200229032022083703e880042008a7210b4100210320022802ec8004210d0c050b4104210141012107410021060340024002400240024020032005460d00200541016a22042005490d0720032004490d08200b20056a2c000021032002200436028481040240200341004e0d004119210a0c020b4107210a0240200341c000710d000c020b200341807f7222034170470d02200241e8006a200241f880046a10910520022f006d20022d006f41107472210320022d006c210a20022802684101470d0320034180feff07714108762105200228027821042002280274210d2002280270210b0c020b200241013a00582002410136027c2002420137026c200241f0f7c5003602682002412b36021c2002200241186a3602782002200241d8006a360218200241306a200241e8006a10372002280230210b2002280234210d200228023821044105210a0b0b200220063602ec800420022007417f6a3602f080042005410874200341ff01717221032006450d062001102c0c060b200228027421052002280270210b024002402007417f6a22042006460d002006210d200421060c010b200641016a22042006490d162006410174220d2004200d20044b1b220dad420c7e2208422088a70d162008a722044100480d160240024020060d002004102a21010c010b20012006410c6c2004102e21010b2001450d1e200220013602e880040b20012006410c6c6a220420033b0001200420053602082004200b3602042004200a3a0000200441036a20034110763a0000024020092007460d00200741016a210720022802848104210520022802808104210320022802f88004210b200d21060c010b0b2002200d3602ec8004200220073602f080040b2002280284810420022802888104462104024020022802fc8004450d0020022802f88004102c0b2004450d042007ad422086200dad842108410521030c1a0b417f200141016a1047000b417f20041047000b20042003103f000b200341ffffff07712205410874200a41ff0171722103200dad220e422086200bad84210820022802fc8004450d0120022802f88004102c0c010b20024103410220041b3a00e88004200241fc006a41013602002002420137026c200241f0f7c5003602682002412b36021c2002200241186a3602782002200241e880046a360218200241306a200241e8006a103720022903302208422088210e200228023821044105210341002105200d450d002001102c0b20004101360200200041106a2004360200200041086a200e422086200842ffffffff0f838437020020002005410874200341ff0171723602040c180b200241e8006a20011099050240024020022802684101470d00200228026c22044108762105200241e8006a41086a2903002208422088210e200241f8006a28020021030c010b200241fc006a280200210c200241f8006a2802002101200241f4006a2802002103200241f0006a2802002107200228026c210b4100210441002109024002400240024002400240024002400240034002402004411f4d0d00410f21040c020b0240024020032001460d002001417f460d052003200141016a22054f0d01200141016a2003103f000b200241013a0030200241fc006a41013602002002420137026c200241f0f7c5003602682002412b36021c2002200241186a3602782002200241306a360218200241f880046a200241e8006a1037200241206a41086a200241f880046a41086a280200360200200220022903f88004370320410521040c020b200b20016a2d0000220641ff00712004411f71742009722109200441076a2104200521012006418001710d000b20044120490d01410d210420064110490d010b200241e880046a41086a200241206a41086a28020022033602002002200229032022083703e880042008a7210520022802ec800421090c060b4100211b20024100360238200242043703300240024020090d0041042101410021060c010b41042101410021064100211b034020062118201b221941016a211b20052104410021064100210a03402006411f4b0d050240024020032004460d002004417f460d062003200441016a22054f0d01200441016a2003103f000b2002201836023420022019360238200241013a00e88004200241fc006a41013602002002420137026c200241f0f7c5003602682002412b36021c2002200241186a3602782002200241e880046a360218200241f880046a200241e8006a103720022802f88004210520022802fc80042109200228028081042103410521040c080b200b20046a2d0000220d41ff00712006411f7174200a72210a200641076a210620052104200d418001710d000b024020064120490d00200d410f4d0d002002201836023420022019360238410d21040c060b0240024020192018460d0020182106201921180c010b201841016a22042018490d17201841017422062004200620044b1b220641ffffffff03712006470d17200641027422044100480d170240024020180d002004102a21010c010b200120184102742004102e21010b2001450d1f200220013602300b200120184102746a200a360200201b2009470d000b200220063602342002201b3602380b2005200c46210402402007450d00200b102c0b2004450d06201bad4220862006ad842108410421030c1b0b417f200141016a1047000b417f200441016a1047000b2002201836023420022019360238410f21040b0b2018450d002001102c0b2009ad220e4220862005ad842108410021052007450d01200b102c0c010b20024103410220041b3a0030200241fc006a41013602002002420137026c200241f0f7c5003602682002412b36021c2002200241186a3602782002200241306a360218200241f880046a200241e8006a103720022903f880042208422088210e20022802808104210341052104410021052006450d002001102c0b20004101360200200041106a2003360200200041086a200e422086200842ffffffff0f838437020020002005410874200441ff0171723602040c170b200241e8006a20011099050240024020022802684101470d00200228026c22034108762105200241e8006a41086a2903002208422088210e200241f8006a28020021040c010b2002418881046a200241fc006a2802003602002002418081046a200241f4006a2902003703002002200229026c3703f8800441002101410021050240024002400240024002400240024002400240034002402001411f4d0d00410f21030c020b02400240200228028081042209200228028481042204460d00200441016a22032004490d05200920034f0d0120032009103f000b200241013a0058200241fc006a41013602002002420137026c200241f0f7c5003602682002412b36021c2002200241186a3602782002200241d8006a360218200241306a200241e8006a1037200241206a41086a200241306a41086a28020036020020022002290330370320410521030c020b20022802f8800420046a2d00002104200220033602848104200441ff00712001411f71742005722105200141076a21012004418001710d000b20014120490d01410d210320044110490d010b200241e880046a41086a200241206a41086a28020022043602002002200229032022083703e880042008422088a721092008a721060c080b200241003602f08004200242043703e880040240024020050d00410421010c010b20022802ec8004210720022802f08004210d410021100340200241e8006a200241f880046a108e052002280274210920022802702118200228026c211a024020022802684101470d002002280278210420182106201a21030c080b200241e8006a200241f880046a108e052002280274211320022802702119200228026c211c024020022802684101470d00200228027821042019210620132109201c21030c070b0240024002400240024002400240024002400240024002400240024002400240200228028081042203200228028481042206460d00200641016a22012006490d02200320014f0d0120012003103f000b200241013a00582002410136027c2002420137026c200241f0f7c5003602682002412b36021c2002200241186a3602782002200241d8006a360218200241306a200241e8006a1037200228023021062002290234210e4105210a4100211b410021030c140b20022802f88004220c20066a2d000021042002200136028481044100211b0240200441034d0d004109210a410021030c140b024002400240024020040e0400010203000b4100211b410021044100210a034002402004411f4d0d00410f210a0c160b0240024020032001460d002001417f460d072003200141016a220b4f0d01200141016a2003103f000b200241013a00582002410136027c2002420137026c200241f0f7c5003602682002412b36021c2002200241186a3602782002200241d8006a360218200241306a200241e8006a1037200228023021062002290234210e4105210a4100211b0c170b200c20016a2d000021062002200b3602848104200641ff00712004411f7174200a72210a200441076a2104200b21012006418001710d000b4100211b20044120490d0f2006410f4d0d0f410d210a0c140b0240024020032001460d00200641026a21042001417f460d0620032004490d07200c20016a2c0000210120022004360284810402402001417f4a0d00411921030c0e0b200141c000710d010c0c0b200241013a00582002410136027c2002420137026c200241f0f7c5003602682002412b36021c2002200241186a3602782002200241d8006a360218200241306a200241e8006a10372002290330210820022802382104410521030c0c0b200141807f7222014170470d0a200241e8006a200241f880046a10910520022903702108200228026c210a024020022802684101470d00200228027821040c0d0b4101211b0c0f0b200241e8006a200241f880046a10910520022903702108200228026c210a024020022802684101460d004102211b0c0f0b20022002280278360270200a418080807871211b200a4180807c712103200a41087621040c0c0b0240024020032001460d00200641026a210b2001417f460d062003200b490d08200c20016a2c000021042002200b36028481040240200441004e0d004119210a410021030c160b200441c000710d010c090b200241013a00582002410136027c2002420137026c200241f0f7c5003602682002412b36021c2002200241186a3602782002200241d8006a360218200241306a200241e8006a10374105210a2002290234210e20022802302106410021030c140b200441807f72220441ff017141fc01490d07024002402003200b460d00200641036a2101200b417f460d07200320014f0d0120012003103f000b200241013a00582002410136027c2002420137026c200241f0f7c5003602682002412b36021c2002200241186a3602782002200241d8006a360218200241306a200241e8006a1037200228023021062002290234210e4105210a410021030c140b200c200b6a2d0000210b200220013602848104410021030240200b41014d0d00410c210a4100211b200b21040c140b2004417f7321064103211b0240200b0e020e000e0b410121030c0d0b417f20011047000b417f200141016a1047000b417f20041047000b20042003103f000b417f200b1047000b417f20011047000b200b2003103f000b4106210a410021030c0b0b410721030b200141ff0171410874200372210a0b20022004360270200a418080807871211b200a4180807c712103200a41087621040b20022008370368200229026c210e2008a721060c070b0b02400240200d2007460d002007210b0c010b200741016a22012007490d17200741017422042001200420014b1b220bad42287e220e422088a70d17200ea722014100480d170240024020070d002001102a21010c010b20022802e88004200741286c2001102e21010b2001450d1f200220013602e880042007210d200b21070b20022802e880042201200d41286c6a2204201c36020c20042009360208200420183602042004201a360200200441206a20083702002004411c6a200a3602002004411a6a20033a0000200441196a20063a0000200441186a201b3a0000200441146a2013360200200441106a2019360200200d41016a210d201041016a22102005470d000b2002200b3602ec80042002200d3602f080040b200228028481042002280288810446210420022902ec80042208422088210e024020022802fc8004450d0020022802f88004102c0b200ea721032008a721092004450d062003ad4220862009ad842108410321030c1b0b417f20031047000b0b41002103410021040b200a41ff0171200441ff0171410874722003418080fc077172201b722103200e422088a72104200ea721092019450d00201c102c0b2018450d00201a102c0b200220073602ec80042002200d3602f0800420022802e88004210b0240200d450d00200d41286c2105200b210103400240200141046a280200450d002001280200102c0b0240200141106a280200450d002001410c6a280200102c0b200141286a2101200541586a22050d000b0b2007450d01200b102c0c010b20024103410220041b3a00e88004200241fc006a41013602002002420137026c200241f0f7c5003602682002412b36021c2002200241186a3602782002200241e880046a360218200241306a200241e8006a1037200229033021082002280238210402402003450d00200341286c21052001210303400240200341046a280200450d002003280200102c0b0240200341106a280200450d002003410c6a280200102c0b200341286a2103200541586a22050d000b0b2008422088210e41052103410021052009450d012001102c0c010b200341087621052009ad220e4220862006ad84210820022802fc8004450d0020022802f88004102c0b20004101360200200041106a2004360200200041086a200e422086200842ffffffff0f838437020020002005410874200341ff0171723602040c160b200241013a00302002410136027c2002420137026c200241f0f7c5003602682002412b36021c2002200241186a3602782002200241306a360218200241f880046a200241e8006a103720022802f88004210620022802fc8004210920022d00808104210320022d00818104210720022f01828104210d410521050b0b201d450d03200c102c0c030b0b2018450d00201c102c0b2003411076210d200341087621070b200741ff0171410874200341ff0171722103200d411074210d200441ff0171410874210702402017450d002001210403400240200441046a280200450d002004280200102c0b200441106a2104200a41706a220a0d000b0b2003200d722103200720057221042014450d012001102c0c010b20024103410220041b3a0030200241fc006a41013602002002420137026c200241f0f7c5003602682002412b36021c2002200241186a3602782002200241306a360218200241f880046a200241e8006a103720022903f88004210820022802808104210302402005450d00200541047421052001210403400240200441046a280200450d002004280200102c0b200441106a2104200541706a22050d000b0b2008422088210e41052104410021052009450d012001102c0c010b200441087621052009ad220e4220862006ad8421082010450d00200b102c0b20004101360200200041106a2003360200200041086a200e422086200842ffffffff0f838437020020002005410874200441ff0171723602040c0c0b41002101410021040240024002400340024020094105470d00410f21070c020b0240024020032009460d00200320094b0d01200941016a2003103f000b200241013a00f88004200241fc006a41013602002002420137026c200241f0f7c5003602682002412b36021c2002200241186a3602782002200241f880046a360218200241206a200241e8006a103741052107200229032021080c030b200620096a2d0000220541ff00712001411f71742004722104200141076a2101200941016a220b21092005418001710d000b20014120490d0220054110490d02410d21070b0b2008422088a72109200228022821042008a7210d0c040b024020040d00410021054101211b410021094100210d0c070b200241e8006a410041800810da051a410021054100210d4101211b410021070340024002402003200b6b200420076b22014180082001418008491b2201490d00200b20016a220c200b490d042003200c4f0d01200c2003103f000b200241013a00e880042002418c81046a4101360200200242013702fc8004200241f0f7c5003602f880042002412b36021c2002200241186a36028881042002200241e880046a360218200241306a200241f880046a103720022903302208422088a72109200228023821042008a72101410521070240200d450d00201b102c0b2001210d0c050b200241e8006a2006200b6a200110db051a02400240200d20056b2001490d00200520016a21090c010b200520016a22092005490d02200d410174220b2009200b20094b1b220b4100480d0202400240200d0d00200b102a211b0c010b201b200d200b102e211b0b201b450d0a200b210d0b201b20056a200241e8006a200110db051a20092105200c210b2004200120076a22074d0d030c000b0b1035000b200b200c1047000b200241e8006a201b2009105820022802684101470d02410821070240200d450d00201b102c0b0b2009ad422086200dad84210841002101200a450d002006102c0b20004101360200200041106a2004360200200041086a200837020020002001410874200741ff0171723602040c060b201b4108762105200c210b0b2003200b490d022003200b6b2201417f4c0d030240024020010d00410121040c010b2001102a2204450d020b2009ad4220862108200dad210e20042006200b6a200110db051a2001ad222042208621210240200a450d002006102c0b2008200e8421082021202084210e2005410874201b41ff0171722101410121030b200020033a000420004100360200200041056a20022f00153b0000200041186a200e370200200041146a20043602002000410c6a2008370200200041086a2001360200200041206a2002290200370200200041076a200241176a2d00003a0000200041286a200241086a290200370200200041306a200241106a2802003602000c030b1033000b200b20031047000b103a000b2002419081046a24000b160020002001280208360204200020012802003602000bb20c01067f0240024020002d00002201410e4b0d00024002400240024002400240024002400240024002400240024020010e0f0001020304050607080e090e0a0b0c000b200041086a280200450d0d200041046a280200102c0f0b0240200041086a280200450d00200041046a280200102c0b200041146a280200450d0c200041106a280200102c0f0b02402000410c6a2802002202450d00200041046a28020021012002410474210203400240200141046a280200450d002001280200102c0b200141106a2101200241706a22020d000b0b200041086a280200450d0b2000280204102c0f0b02402000410c6a2802002202450d00200041046a2802002101200241286c210203400240200141046a280200450d002001280200102c0b0240200141106a280200450d002001410c6a280200102c0b200141286a2101200241586a22020d000b0b200041086a280200450d0a2000280204102c0f0b200041086a280200450d09200041046a280200102c0f0b200041086a280200450d08200041046a280200102c0f0b200041086a280200450d07200041046a280200102c0f0b02402000410c6a2802002201450d00200041046a280200220320014104746a21040340024020032802082202450d0020032802002101200241047421020340024020012d00004109470d000240200141046a2205280200220628020441ffffffff0371450d002006280200102c200528020021060b2006102c0b200141106a2101200241706a22020d000b0b200341106a21010240200341046a280200450d002003280200102c0b2001210320012004470d000b0b200041086a280200450d062000280204102c0f0b02402000410c6a2802002202450d00200041046a2802002101200241146c210203400240200141046a280200450d002001280200102c0b200141146a21012002416c6a22020d000b0b200041086a280200450d052000280204102c0f0b02402000410c6a2802002201450d00200041046a28020022032001411c6c6a21040340024020032802042201450d0002402003410c6a2802002202450d00200241047421020340024020012d00004109470d000240200141046a2205280200220628020441ffffffff0371450d002006280200102c200528020021060b2006102c0b200141106a2101200241706a22020d000b0b200341086a280200450d002003280204102c0b2003411c6a21010240200341146a280200450d002003280210102c0b2001210320012004470d000b0b200041086a280200450d042000280204102c0f0b02402000410c6a2802002201450d00200041046a2802002203200141186c6a210403400240200341046a280200450d002003280200102c0b0240200341146a2802002202450d00200328020c2101200241047421020340024020012d00004109470d000240200141046a2205280200220628020441ffffffff0371450d002006280200102c200528020021060b2006102c0b200141106a2101200241706a22020d000b0b200341186a21010240200341106a280200450d00200328020c102c0b2001210320012004470d000b0b200041086a280200450d032000280204102c0f0b200041046a2201109805200041086a280200450d022001280200102c0f0b0240200041046a2802002201450d00200041086a280200450d002001102c0b0240200041146a2802002201450d0002402000411c6a2802002202450d002002410c6c21020340024020012802002206450d00200141046a280200450d002006102c0b2001410c6a2101200241746a22020d000b0b200041186a280200450d002000280214102c0b200041246a2802002203450d0102402000412c6a2802002201450d00200320014104746a210403402003220541106a2103024020052802042201450d0002402005410c6a2802002202450d002002410c6c21020340024020012802002206450d00200141046a280200450d002006102c0b2001410c6a2101200241746a22020d000b0b200541086a280200450d002005280204102c0b20032004470d000b0b200041286a280200450d012000280224102c0c010b0240200041086a280200450d00200041046a280200102c0b0240200041146a2802002201450d00200041186a280200450d002001102c0b200041246a280200450d00200041206a280200102c0f0b0be34c04177f017e047f017e230041e0026b22022400200128020841546a2103200141106a28020041306c2104024002400240024002400240024002400240024002400240024003402004450d01200441506a21042003412c6a2105200341306a2206210320052d00004102470d000b200241e8006a200610f40441042107200228026c2208450d01200841047422044100480d0c200228026821032004102a2207450d052008410474210641002109200721040340200341086a2802002205417f4c0d042003410c6a2d0000210a2003280200210b0240024020050d004101210c0c010b2005102a220c450d070b200c200b200510db05210b2004410d6a2003410d6a2d00003a00002004410c6a200a3a0000200441086a2005360200200441046a20053602002004200b360200200441106a2104200941016a2109200341106a2103200641706a22060d000b20070d020b410421070b41002109410021080b200128021041306c2104200128020841546a2103024003404100210c4104210a024020040d0041042103410021040c020b200441506a21042003412c6a2105200341306a2206210320052d00004103470d000b200241e0006a200610f404410421034100210420022802602205450d0020022802642104200521030b024020040d004101210d4100210e410021034100210f4100210b41002110410121114100210541002112410421134100210641002114410421150c020b200441286c21162003411c6a21044104210a4100210c4100210e4101210d410021034100210f4100210b41002110410121114100210541002112410421134100210641002114410421150340024002400240024002402004417c6a2d00000e0400010203000b2004280200211702402003200f470d00200341016a220f2003490d0f20034101742218200f2018200f4b1b220f41ffffffff0371200f470d0f200f41027422184100480d0f0240024020030d002018102a210a0c010b200a20034102742018102e210a0b200a450d080b200a20034102746a2017360200200341016a21030c030b200241b8016a41086a2217200441086a280200360200200220042902003703b801024020052012470d00200541016a22122005490d0e200541017422182012201820124b1b2212ad420c7e2219422088a70d0e2019a722184100480d0e0240024020050d002018102a21130c010b20132005410c6c2018102e21130b2013450d070b20132005410c6c6a221820022903b801370200201841086a2017280200360200200541016a21050c020b200241b8016a41086a2217200441086a280200360200200220042902003703b801024020062014470d00200641016a22182006490d0d2006410174221a2018201a20184b1b2214ad420c7e2219422088a70d0d2019a722184100480d0d0240024020060d002018102a21150c010b20152006410c6c2018102e21150b2015450d060b20152006410c6c6a221820022903b801370200201841086a2017280200360200200641016a21060c010b2004417e6a22172d000021182004417d6a221a2d0000211b0240200b2010470d00200b41016a2210200b490d0c200b410174221c2010201c20104b1b221020106a221d2010490d0c201d4100480d0c02400240200b0d00201d102a21110c010b2011201c201d102e21110b2011450d050b2011200b4101746a221d20184101713a0001201d201b3a000020172d00002117201a2d000021180240200c200e470d00200c41016a221a200c490d0c200c410174221b201a201b201a4b1b220e200e6a221a200e490d0c201a4100480d0c02400240200c0d00201a102a210d0c010b200d201b201a102e210d0b200d450d050b200b41016a210b200d200c4101746a221a20174101713a0001201a20183a0000200c41016a210c0b200441286a2104201641586a2216450d020c000b0b103a000b2001280210221b41306c211820012802082116410021040240034020182004460d01201620046a2117200441306a221a210420172d00004104470d000b200241d8006a2016201a6a41546a10f404200228025c2204450d002002280258211620044102742118200341017421172003410274210403402016280200211a02402003200f470d00200341016a220f2003490d0a2017200f2017200f4b1b220f41ffffffff0371200f470d0a200f410274221b4100480d0a0240024020030d00201b102a210a0c010b200a2004201b102e210a0b200a450d030b201641046a2116200a20046a201a360200201741026a2117200441046a2104200341016a21032018417c6a22180d000b200128020821162001280210211b0b2016201b41306c6a2118201621040240034020182004460d0120042d00002117200441306a221a210420174105470d000b200241d0006a201a41546a10f4042002280254410c6c221a450d0020022802502104200541017421172005410c6c21160340200441086a2118024002400240200441046a2802004101470d0020022018280200221b3602a0022004280200221d201b4b0d010b200241003602700c010b200241023602cc01200242023702bc012002418c98c6003602b801200241013602d402200241013602cc022002201d3602b0022002200241c8026a3602c8012002200241b0026a3602d0022002200241a0026a3602c802200241f0006a200241b8016a10372002280270450d00200241f0006a21040c080b20042902002119200241b8016a41086a221b2018280200360200200220193703b801024020052012470d00200541016a22122005490d0a20172012201720124b1b2212ad420c7e2219422088a70d0a2019a722184100480d0a0240024020050d002018102a21130c010b201320162018102e21130b2013450d030b2004410c6a2104201320166a221820022903b801370200201841086a201b280200360200201741026a21172016410c6a2116200541016a2105201a41746a221a0d000b200128020821162001280210211b0b2016201b41306c6a2118201621040240034020182004460d0120042d00002117200441306a221a210420174106470d000b200241c8006a201a41546a10f404200228024c2217450d00200228024821042017410c6c2118200641017421172006410c6c21160340200241b8016a2004109f05024020022802b801450d00200241b8016a21040c080b20042902002119200241b8016a41086a221a200441086a280200360200200220193703b801024020062014470d00200641016a22142006490d0a20172014201720144b1b2214ad420c7e2219422088a70d0a2019a7221b4100480d0a0240024020060d00201b102a21150c010b20152016201b102e21150b2015450d030b2004410c6a2104201520166a221b20022903b801370200201b41086a201a280200360200201741026a21172016410c6a2116200641016a2106201841746a22180d000b200128020821162001280210211b0b2016201b41306c6a2118201621040240034020182004460d0120042d00002117200441306a221a210420174107470d000b200241c0006a201a41546a10f40420022802442217450d002002280240220420174104746a211d200b4101742116200241b8016a410472211b0340200241b8016a2004200d200c10a00502400240024020022d00b8014101460d00200220022d00b90122173a00a002024020172004410c6a2d00002218470d00200241003602700c030b200241023602cc01200242023702bc01200241a099c6003602b8012002412c3602d4022002412c3602cc02200220183a00b0022002200241c8026a3602c8012002200241a0026a3602d0022002200241b0026a3602c802200241f0006a200241b8016a10370c010b200241f0006a41086a201b41086a2802003602002002201b2902003703700b02402002280270450d00200241f0006a21040c090b2004410c6a2d000021170b2004410d6a2d000021180240200b2010470d00200b41016a2210200b490d0a20162010201620104b1b221020106a221a2010490d0a201a4100480d0a02400240200b0d00201a102a21110c010b20112016201a102e21110b2011450d030b201120166a221a20173a0000201a41016a20184101713a0000201641026a2116200b41016a210b200441106a2204201d470d000b200128020821162001280210211b0b200241a8016a2003360200200241a4016a200f3602002002419c016a200936020020024198016a200836020020024190016a200b3602002002418c016a201036020020024184016a200536020020024180016a20123602002002200a3602a001200220073602940120022011360288012002201336027c2002200636027820022014360274200220153602702016201b41306c6a21052016210402400340024020052004470d004100210a0c020b20042d00002103200441306a2206210420034104470d000b200241386a200641546a10f404200228023c210a0b2002200a3602ac012016201b41306c6a21052016210402400340024020052004470d00410021040c020b20042d00002103200441306a220621042003410c470d000b2006415c6a28020021040b200220043602b001200a2004470d0202400240024002400240200a450d002016201b41306c6a210520162104034020052004460d0320042d00002103200441306a2206210420034104470d000b2016201b41306c6a210a201621040340200a2004460d0220042d00002103200441306a220521042003410c470d000b200241306a200641546a10f40420022802342204450d002002280230220c20044102746a21132005415c6a2116200541546a210f200241f1016a21184100210b03402002200b3602b40120162802002104200f2802002105200242013702bc0120024194cfc5003602b801200241013602b402200241013602cc012002200241b0026a3602c8012002200241b4016a3602b002200241c8026a200241b8016a103720022802c802210320022902cc0221190240024002400240024002402004200b4d0d0002402019a7450d002003102c0b2002200c28020022043602a0020240200228029c0120044b0d00200241013602cc01200242023702bc01200241ac9cc6003602b801200241013602b4022002200241b0026a3602c8012002200241a0026a3602b002200241c8026a200241b8016a103720022902cc022219422088a7210420022802c80221062019a721030c040b2005200b41186c6a22032802142209450d0120022802940120044104746a22052d000d211720052802002112200328020c210420032802002110200528020822152106024020032802082211450d002011410374210a201521032010210503400240200320052802006a220620034f0d004120102a2206450d0f200641186a410029008c9f46370000200641106a41002900849f46370000200641086a41002900fc9e46370000200641002900f49e463700000c050b200541086a210520062103200a41786a220a0d000b0b4108102a2203450d0c20032017ad42ff0183422886370200200241b0026a41026a2205200241c8026a41026a2d00003a0000200220022f00c8023b01b002200220173a00f0012002418080013602ec0120024281808080103702e401200220033602e001200242808080808080103703d801200242013703d001200220063602cc01200220113602c801200220103602c401200220153602c001200220123602bc012002200241f0006a3602b801201820022f01b0023b0000201841026a20052d00003a000020094104742105410021030340200220033602f801200220043602fc0120024180026a200241b8016a200410a2050240200228028002450d00200241a0026a41086a20024180026a41086a28020036020020022002290380023703a002200241033602c402200242033702b402200241f8c7c5003602b0022002412d3602dc02200241013602d4022002412e3602cc022002200241c8026a3602c0022002200241a0026a3602d8022002200241f8016a3602d0022002200241fc016a3602c80220024190026a200241b0026a1037024020022802a402450d0020022802a002102c0b2002280290022206450d002002290294022119024020022802d401450d0020022802d001102c0b2019422088211e024020022802e401450d0020022802e001102c0b201ea721042019a721030c060b200441106a2104200341016a2103200541706a22050d000b024020022802e8010d00024020022802d401450d0020022802d001102c0b20022802e401450d0620022802e001102c0c060b4190c8c500413041acfec5001036000b20002003360200200020193702040c0f0b4120102a2206450d0a200641186a41002900efc745370000200641106a41002900e7c745370000200641086a41002900dfc745370000200641002900d7c7453700000b41202103412021040b2006450d010b200220063602b00220022004ad4220862003ad843702b4022002200241b0026a36029002200241023602cc01200242023702bc012002419ccfc5003602b8012002412f3602d402200241013602cc022002200241c8026a3602c801200220024190026a3602d0022002200241b4016a3602c802200241a0026a200241b8016a1037024020022802b402450d0020022802b002102c0b20022802a0022204450d0020022902a402211920002004360200200020193702040c0b0b200b41016a210b200c41046a220c2013470d000b200128020821162001280210211b0b2016201b41306c6a2105201621040240034020052004460d0120042d00002103200441306a2206210420034109470d000b2002200641546a280200220436029002024020022802a80120044b0d00200241cc016a4101360200200242023702bc01200241889cc6003602b801200241013602b4022002200241b0026a3602c801200220024190026a3602b002200241c8026a200241b8016a10370c090b200220022802a00120044102746a28020022043602a0020240200228029c0120044b0d00200241cc016a4101360200200242023702bc01200241ac9cc6003602b801200241013602b4022002200241b0026a3602c8012002200241a0026a3602b002200241c8026a200241b8016a10370c090b20022802940120044104746a220431000d4220862004350208844280808080c000510d00412d102a2204450d05200441256a41002900d1cf45370000200441206a41002900cccf45370000200441186a41002900c4cf45370000200441106a41002900bccf45370000200441086a41002900b4cf45370000200441002900accf45370000200042ad808080d005370204200020043602000c090b2016201b41306c6a2103034020032016460d0420162d00002104201641306a2205211620044108470d000b200241286a200541546a220f10f404200228022821044100210502400240200228022c22030d004104210a410021160c010b200341ffffffff01712003470d0c200341037422064100480d0c2006102a220a450d05200321160b02402003450d002004200341146c6a21062003410274417c6a210b200a2103034020042802002105200341046a200441086a28020036020020032005360200200341086a2103200441146a22042006470d000b200b41027641016a21050b200a2005200241b8016a410041202005676b109a05200a20054103746a2206200a460d0241012105200a2104200a21030340024002402005450d00200620046b41037620054d0d05200420054103746a22040d010c050b20062004460d040b200220033602a00202400240200341046a2802002205200441046a280200470d002003280200220b2004280200220c460d01200b200c200510dd05450d010b200441086a210441002105200341086a22032006470d010c040b0b200241cc016a4101360200200242013702bc01200241dccfc5003602b801200241303602b4022002200241b0026a3602c8012002200241a0026a3602b002200241c8026a200241b8016a1037200041086a200241c8026a41086a280200360200200020022903c8023702000c050b41cacec50041c8001054000b41accec500411e1054000b200241206a200f10f404024020022802242204450d00200441146c2103200228022041106a2104024002400340024002400240024002402004417c6a2802000e0400030201000b2002200428020022053602900202400240024020022802a80120054b0d00200241cc016a4101360200200242023702bc01200241889cc6003602b801200241013602b4022002200241b0026a3602c801200220024190026a3602b002200241c8026a200241b8016a10370c010b200220022802a00120054102746a28020022053602a002200228029c0120054b0d01200241013602cc01200242023702bc01200241ac9cc6003602b801200241013602b4022002200241b0026a3602c8012002200241a0026a3602b002200241c8026a200241b8016a10370b20022802c8022104200020022902cc02370204200020043602000c0b0b2019428080808080608320022802940120054104746a220535020884200531000d4220868421190c030b2002200428020022053602a002024020022802900120054b0d00200241cc016a4101360200200242023702bc01200241cc9cc6003602b801200241013602b4022002200241b0026a3602c8012002200241a0026a3602b002200241c8026a200241b8016a10370c060b20022802880120054101746a2d0001450d02200241cc016a4101360200200242023702bc01200241ec9cc6003602b801200241013602b4022002200241b0026a3602c8012002200241a0026a3602b002200241c8026a200241b8016a10370c050b2002200428020022053602a002200228027820054b0d01200241013602cc01200242023702bc01200241b89bc6003602b801200241013602b4022002200241b0026a3602c8012002200241a0026a3602b002200241c8026a200241b8016a103720022802c8022205450d01200020022902cc02370204200020053602000c080b2002200428020022053602a00220022802840120054d0d020b200441146a21042003416c6a22030d000c030b0b200241cc016a4101360200200242023702bc01200241e89bc6003602b801200241013602b4022002200241b0026a3602c8012002200241a0026a3602b002200241c8026a200241b8016a103720022802c8022104200020022902cc02370204200020043602000c040b20022802c8022104200020022902cc02370204200020043602000c030b2016450d00200a102c0b2001280210220b41306c21042001280208220c41546a21030240024002400240024002400240024002400240024003402004450d01200441506a21042003412c6a2105200341306a2206210320052d00004103470d000b200241186a200610f404200228021c2204450d0020022802182105200441286c210641002104034002400240024002400240200520046a220341186a2d00000e0400030201000b20022003411c6a28020022033602a002200228029c0120034b0d03200241cc016a4101360200200242023702bc01200241ac9cc6003602b801200241013602b4022002200241b0026a3602c8012002200241a0026a3602b002200241c8026a200241b8016a103720022802c8022104200020022902cc02370204200020043602000c140b2003411a6a2d0000450d022003410c6a2802002104200341146a2802002103200241b8016a41146a4101360200200220033602b402200220043602b002200241043602a402200242013702bc01200241e4cfc5003602b8012002200241b0026a3602a0022002200241a0026a3602c801200241c8026a200241b8016a1037200041086a200241c8026a41086a280200360200200020022903c8023702000c130b200241b8016a2003411c6a109f0520022802b801450d01200020022903b801370200200041086a200241b8016a41086a2802003602000c120b200341206a2802004101470d002003411c6a280200210a2002200341246a280200220336029002200a20034d0d00200241023602cc01200242023702bc012002418c98c6003602b801200241013602d402200241013602cc022002200a3602a0022002200241c8026a3602c8012002200241a0026a3602d002200220024190026a3602c802200241b0026a200241b8016a103720022802b00222030d030b2006200441286a2204470d000b0b200228028401220441014b0d072002280278220441014b0d08200b41306c2104200c41546a2103024003402004450d01200441506a21042003412c6a2105200341306a2206210320052d0000410d470d000b200241106a200610f404200228021022042002280214411c6c6a2105034020042005460d012002200428020022033602a0020240200228027820034b0d00200241013602cc01200242023702bc01200241b89bc6003602b801200241013602b4022002200241b0026a3602c8012002200241a0026a3602b002200241c8026a200241b8016a103720022802c80222030d040b200441046a2204280200450d04200241b8016a200420022802880120022802900110a00520022d00b8014101460d05200441186a210420022d00b901450d000b4120102a2204450d0b200441186a4100290094d045370000200441106a410029008cd045370000200441086a4100290084d045370000200441002900fccf45370000200042a08080808004370204200020043602000c0f0b200b41306c2104200c41546a2103024003402004450d01200441506a21042003412c6a2105200341306a2206210320052d0000410a470d000b200241086a200610f404200228020c2204450d002002280208220a2004411c6c6a210b02400340200a450d022002200a28020022043602a00220022802840120044d0d07200a280204450d08200241b8016a200a41046a20022802880120022802900110a00520022d00b8014101460d0920022d00b9010d0c2002200a10a4050240024020022802042204450d00200228020021032004410274210520022802a80121060340200220032802002204360290020240200620044b0d00200241cc016a4101360200200242023702bc01200241889cc6003602b801200241013602b4022002200241b0026a3602c801200220024190026a3602b002200241c8026a200241b8016a10370c050b200220022802a00120044102746a28020022043602a002200228029c0120044d0d022019428080808080608320022802940120044104746a220435020884200431000d422086842119200341046a21032005417c6a22050d000b0b200a411c6a220a200b460d030c010b0b200241013602cc01200242023702bc01200241ac9cc6003602b801200241013602b4022002200241b0026a3602c8012002200241a0026a3602b002200241c8026a200241b8016a10370b20022802c8022104200020022902cc02370204200020043602000c0f0b2000410036020002402002280274450d002002280270102c0b0240200228028001450d00200228027c102c0b0240200228028c01450d00200228028801102c0b0240200228029c012203450d0020022802940121042003410474210303400240200441046a280200450d002004280200102c0b200441106a2104200341706a22030d000b0b0240200228029801450d00200228029401102c0b024020022802a401450d0020022802a001102c0b200e450d10200d102c0c100b200020022902b402370204200020033602000c0d0b200020022902cc02370204200020033602000c0c0b4129102a2204450d07200441286a41002d00c4d0453a0000200441206a41002900bcd045370000200441186a41002900b4d045370000200441106a41002900acd045370000200441086a41002900a4d0453700002004410029009cd045370000200042a98080809005370204200020043602000c0b0b200020022902bc01370200200041086a200241c4016a2802003602000c0a0b200241cc016a4101360200200242023702bc01200241e89bc6003602b801200241013602b4022002200241b0026a3602c8012002200241a0026a3602b002200241c8026a200241b8016a103720022802c8022104200020022902cc02370204200020043602000c090b412a102a2204450d04200441286a41002f00edd0453b0000200441206a41002900e5d045370000200441186a41002900ddd045370000200441106a41002900d5d045370000200441086a41002900cdd045370000200441002900c5d045370000200042aa808080a005370204200020043602000c080b200020022902bc01370200200041086a200241c4016a2802003602000c070b200241cc016a4101360200200242013702bc01200241eccfc5003602b801200241013602b402200220043602a0022002200241b0026a3602c8012002200241a0026a3602b002200241c8026a200241b8016a1037200041086a200241c8026a41086a280200360200200020022903c8023702000c060b200241cc016a4101360200200242013702bc01200241f4cfc5003602b801200241013602b402200220043602a0022002200241b0026a3602c8012002200241a0026a3602b002200241c8026a200241b8016a1037200041086a200241c8026a41086a280200360200200020022903c8023702000c050b4120102a2204450d00200441186a4100290094d045370000200441106a410029008cd045370000200441086a4100290084d045370000200441002900fccf45370000200042a08080808004370204200020043602000c040b1033000b2016450d02200a102c0c020b200241cc016a4102360200200241d4026a4101360200200242023702bc012002419ccec5003602b801200241013602cc022002200241c8026a3602c8012002200241b0016a3602d0022002200241ac016a3602c802200241b0026a200241b8016a1037200041086a200241b0026a41086a280200360200200020022903b0023702000c010b20022802c8022104200020022902cc02370204200020043602000b02402002280274450d002002280270102c0b0240200228028001450d00200228027c102c0b0240200228028c01450d00200228028801102c0b0240200228029c012203450d0020022802940121042003410474210303400240200441046a280200450d002004280200102c0b200441106a2104200341706a22030d000b0b0240200228029801450d00200228029401102c0b024020022802a401450d0020022802a001102c0b200e450d01200d102c0c010b20002004290200370200200041086a200441086a2802003602000240200e450d00200d102c0b02402014450d002015102c0b02402012450d002013102c0b02402010450d002011102c0b02402009450d00200941047421032007210403400240200441046a280200450d002004280200102c0b200441106a2104200341706a22030d000b0b02402008450d002007102c0b200f450d00200a102c0b200241e0026a24000f0b1035000bac1301177f23004190026b220224000240024002402000280200220341d0e1c100460d00200028020421040c010b41002104200241b8016a410041d80010da051a2002411f6a220542003700002002420037011a41ec00102a2203450d0120034100360200200320022902183702042003410b6a2005290000370000200341136a200241b7016a41d90010db051a20004100360204200020033602000b200141ff01712106024002400340200341066a210720032f01062108410c21094100210502400240034020082005460d01200320056a210a200941086a2109200541016a210502404100417f4101200a41086a2d0000220a20064b1b200a2006461b41016a0e03000301000b0b2005417f6a21080b2004450d022004417f6a2104200320084102746a41ec006a28020021030c010b0b200320096a42013702000c010b2000200028020841016a36020802400240024020072f01002205410b490d00200241276a41016a410041d80010da051a200241003a001941ec00102a220b450d04200b4100360200200b410036000f200b4200370007200b20022f01183b0005200b41136a200241276a41d90010db051a2003410e6a2d0000210c2003280248210d2003280244210e200b41086a2003410f6a20032f010641796a220510db052109200b41146a200341cc006a200541037410db052106200341063b0106200b20053b010620084107490d0120092008417a6a220a6a2009200841796a22086a2209200541ffff037120086b10dc051a200920013a00002006200a4103746a200620084103746a2205200b41066a22072f010020086b41037410dc051a2005410136020020072f010021050c020b200341086a2209200841016a22066a200920086a2209200520086b220a10dc051a200920013a0000200341146a220920064103746a200920084103746a2209200a41037410dc051a200941013602002003200541016a3b01060c020b200341086a2205200841016a22096a200520086a220620072f0100220520086b220a10dc051a200620013a0000200341146a220620094103746a200620084103746a2209200a41037410dc051a200941013602000b2007200541016a3b010002402003280200220a450d00200341046a2105200241276a41016a210f200241a8016a2101200241a0016a211020024198016a211120024190016a211220024180016a41086a2113034020052f01002106024002400240200a2f01062205410b490d00200f410041d80010da051a200241003a0019200220022f01183b0108200241b7016a200241276a41d90010db051a20014200370300201042003703002011420037030020124200370300201342003703002002420037038001419c01102a2209450d06200941003602002009410036000f20094200370007200920022f01083b0005200941136a200241b7016a41d90010db051a20094194016a20012903003702002009418c016a201029030037020020094184016a2011290300370200200941fc006a2012290300370200200941f4006a2013290300370200200920022903800137026c200a41c8006a2802002114200a41c4006a2802002115200a410e6a2d00002116200941086a200a410f6a200a2f0106220341796a220510db052117200941146a200a41cc006a200541037410db052118200941ec006a200a4188016a2003417a6a220441027410db052107200a41063b0106200920053b010602402004450d00410021052007210303402003280200220820053b010420082009360200200341046a21032004200541016a2205470d000b0b20064107490d0120172006417a6a22036a2017200641796a22056a220820092f010620056b10dc051a2008200c3a0000201820034103746a201820054103746a220820092f010620056b41037410dc051a2008200e3602002008200d360204200920092f010641016a22083b01062006410274220c20076a416c6a200720034102746a2204200841ffff0371220620036b41027410dc051a2004200b36020020062003490d022009200c6a41d4006a2103034020032802002208200541016a22053b010420082009360200200341046a210320052006490d000c030b0b200a41086a2209200641016a22036a200920066a2209200520066b220810dc051a2009200c3a0000200a41146a220920034103746a200920064103746a2209200841037410dc051a2009200e3602002009200d360204200a200541016a22053b01062006410274200a41ec006a22096a41086a200920034102746a2209200541ffff0371220820036b41027410dc051a2009200b360200200620084f0d04200a2003417f6a22054102746a41f0006a2103034020032802002209200541016a22053b01042009200a360200200341046a210320052008490d000c050b0b200a41086a2203200641016a22056a200320066a2203200a2f0106220820066b220410dc051a2003200c3a0000200a41146a220320054103746a200320064103746a2203200441037410dc051a2003200e3602002003200d360204200a200841016a22033b010620064102742207200a41ec006a22086a41086a200820054102746a2204200341ffff0371220820056b41027410dc051a2004200b360200200620084f0d00200a20076a41f0006a2105034020052802002203200641016a22063b01042003200a360200200541046a210520082006470d000b0b0240200a28020022030d002009210b2014210d2015210e2016210c0c020b200a41046a21052003210a2016210c2015210e2014210d2009210b0c000b0b200241b7016a41016a410041d80010da051a2002411f6a220542003700002002420037011a200220022902183703082002200529000037000f200241276a200241b7016a41d90010db051a200241a8016a22034200370300200241a0016a2209420037030020024180016a41186a2208420037030020024190016a2206420037030020024180016a41086a220a42003703002002420037038001419c01102a2205450d0120054100360200200520022903083702042005410b6a200229000f370000200541136a200241276a41d90010db051a20054194016a20032903003702002005418c016a200929030037020020054184016a2008290300370200200541fc006a2006290300370200200541f4006a200a290300370200200520022903800137026c20052000280200220336026c200020053602002000200028020441016a360204200341003b010420032005360200200520052f010622034103746a220941186a200d360200200941146a200e360200200520036a41086a200c3a0000200541ec006a200341016a22034102746a200b360200200520033b0106200b20033b0104200b20053602000b20024190026a24000f0b1033000b842701377f2001410c6a28020021022001280208210341002104024002400240200141106a28020022050d00410021064100210741002108410021094100210a4100210b4100210c4100210d4100210e410021050c010b410021044100210e4100210d4100210c4100210b4100210a4100210941002108410021074100210f4100211002400340200121112010210620032005417f6a220541306c6a220128002c2112200128002821132001280024211420012800202115200128001c2116200128001821172001280014211820012800102119200128000c211a2001280008211b2001280004211c41012110024002400240024002400240024020012d0000221d417e6a221e410e4d0d004101211f0c010b4101211f4101212041012121410121224101212341012124201c21010240024002400240024002400240024002400240024002400240024002400240024002400240201e0e0f00010203040506180717080917171a000b0240200f0d002006211020112101201c210f201b2125201a21260c180b02402026450d0020264104742110200f210103400240200141046a280200450d002001280200102c0b200141106a2101201041706a22100d000b0b41002124410121102025450d11200f102c0c110b024020070d002006211020112101201c2107201b2127201a21280c170b02402028450d00202841286c21102007210103400240200141046a280200450d002001280200102c0b0240200141106a280200450d002001410c6a280200102c0b200141286a2101201041586a22100d000b0b41002123410121102027450d0f2007102c0c0f0b2029450d0d2008450d0d2008102c0c0d0b202a450d0b2009450d0b2009102c0c0b0b202b450d09200a450d09200a102c0c090b0240200b0d002006211020112101201c210b201b212c201a212d0c130b0240202d450d00200b202d4104746a2122200b21210340024020212802082210450d0020212802002101201041047421100340024020012d00004109470d000240200141046a2220280200221f28020441ffffffff0371450d00201f280200102c2020280200211f0b201f102c0b200141106a2101201041706a22100d000b0b202141106a21010240202141046a280200450d002021280200102c0b2001212120012022470d000b0b4101211f41002110202c450d07200b102c0c070b0240200c0d002006211020112101201c210c201b212e201a212f0c120b0240202f450d00202f41146c2110200c210103400240200141046a280200450d002001280200102c0b200141146a21012010416c6a22100d000b0b4100211f41012110202e450d05200c102c0c050b0240200d0d002006211020112101201c210d201b2130201a21310c110b02402031450d00200d2031411c6c6a2122200d21210340024020212802042201450d0002402021410c6a2802002210450d00201041047421100340024020012d00004109470d000240200141046a2220280200221f28020441ffffffff0371450d00201f280200102c2020280200211f0b201f102c0b200141106a2101201041706a22100d000b0b202141086a280200450d002021280204102c0b2021411c6a21010240202141146a280200450d002021280210102c0b2001212120012022470d000b0b41002120410121102030450d03200d102c0c030b0240200e0d002006211020112101201c210e201b2132201a21330c100b02402033450d00200e203341186c6a2122200e212103400240202141046a280200450d002021280200102c0b0240202141146a2802002210450d00202128020c2101201041047421100340024020012d00004109470d000240200141046a2220280200221f28020441ffffffff0371450d00201f280200102c2020280200211f0b201f102c0b200141106a2101201041706a22100d000b0b202141186a21010240202141106a280200450d00202128020c102c0b2001212120012022470d000b0b41002121410121102032450d01200e102c0c010b024020040d002006211020112101201a2134201b2135201c21040c0f0b02402034450d0020042034411c6c6a2122200421210340024020212802042201450d0002402021410c6a2802002210450d00201041047421100340024020012d00004109470d000240200141046a2220280200221f28020441ffffffff0371450d00201f280200102c2020280200211f0b201f102c0b200141106a2101201041706a22100d000b0b202141086a280200450d002021280204102c0b2021411c6a21010240202141146a280200450d002021280210102c0b2001212120012022470d000b0b410021224101211002402035450d002004102c0b201c2104201b2135201a21344101211f41012120410121210c0c0b201a2133201b2132201c210e4101211f410121200c0a0b201a2131201b2130201c210d4101211f0c080b201a212f201b212e201c210c0c060b201a212d201b212c201c210b0c050b2006211020112101201c210a201b212b201a21360c090b2006211020112101201c2109201b212a201a21370c080b2006211020112101201c2108201b2129201a21380c070b201a2128201b2127201c21074101211f410121204101212141012122410121240c050b201a2126201b2125201c210f4101211f410121204101212141012122410121230c040b410121200b410121210b410121220b41012123410121240b024002400240201e410b4b0d000240024002400240024002400240024002400240201e0e0c000102030405060a070a0809000b2024450d0b0240201a450d00201a4104742110201c210103400240200141046a280200450d002001280200102c0b200141106a2101201041706a22100d000b0b201b450d0b0c0a0b2023450d0a0240201a450d00201a41286c2110201c210103400240200141046a280200450d002001280200102c0b0240200141106a280200450d002001410c6a280200102c0b200141286a2101201041586a22100d000b0b201b0d090c0a0b41000d09201b0d080c090b41000d08201b0d070c080b41000d07201b0d060c070b2010450d060240201a450d00201c201a4104746a211e201c21210340024020212802082210450d0020212802002101201041047421100340024020012d00004109470d000240200141046a2220280200221f28020441ffffffff0371450d00201f280200102c2020280200211f0b201f102c0b200141106a2101201041706a22100d000b0b202141106a21010240202141046a280200450d002021280200102c0b200121212001201e470d000b0b201b0d050c060b201f450d050240201a450d00201a41146c2110201c210103400240200141046a280200450d002001280200102c0b200141146a21012010416c6a22100d000b0b201b0d040c050b2020450d040240201a450d00201c201a411c6c6a211e201c21210340024020212802042201450d0002402021410c6a2802002210450d00201041047421100340024020012d00004109470d000240200141046a2220280200221f28020441ffffffff0371450d00201f280200102c2020280200211f0b201f102c0b200141106a2101201041706a22100d000b0b202141086a280200450d002021280204102c0b2021411c6a21010240202141146a280200450d002021280210102c0b200121212001201e470d000b0b201b0d030c040b2021450d030240201a450d00201c201a41186c6a211e201c212103400240202141046a280200450d002021280200102c0b0240202141146a2802002210450d00202128020c2101201041047421100340024020012d00004109470d000240200141046a2220280200221f28020441ffffffff0371450d00201f280200102c2020280200211f0b201f102c0b200141106a2101201041706a22100d000b0b202141186a21010240202141106a280200450d00202128020c102c0b200121212001201e470d000b0b201b0d020c030b2022450d020240201a450d00201c201a411c6c6a211e201c21210340024020212802042201450d0002402021410c6a2802002210450d00201041047421100340024020012d00004109470d000240200141046a2220280200221f28020441ffffffff0371450d00201f280200102c2020280200211f0b201f102c0b200141106a2101201041706a22100d000b0b202141086a280200450d002021280204102c0b2021411c6a21010240202141146a280200450d002021280210102c0b200121212001201e470d000b0b201b0d010c020b0240201d410e4b0d00200621102011210102400240024002400240024002400240024002400240201d0e0f0001020304040405060e070e08090a000b201b0d0b0c0c0b0240201b450d00201c102c0b2018450d0b2019102c0c0b0b0240201a450d00201a4104742110201c210103400240200141046a280200450d002001280200102c0b200141106a2101201041706a22100d000b0b201b0d090c0a0b201a450d00201a41286c2110201c210103400240200141046a280200450d002001280200102c0b0240200141106a280200450d002001410c6a280200102c0b200141286a2101201041586a22100d000b0b201b0d070c080b0240201a450d00201c201a4104746a211e201c21210340024020212802082210450d0020212802002101201041047421100340024020012d00004109470d000240200141046a2220280200221f28020441ffffffff0371450d00201f280200102c2020280200211f0b201f102c0b200141106a2101201041706a22100d000b0b202141106a21010240202141046a280200450d002021280200102c0b200121212001201e470d000b0b201b0d060c070b0240201a450d00201a41146c2110201c210103400240200141046a280200450d002001280200102c0b200141146a21012010416c6a22100d000b0b201b0d050c060b0240201a450d00201c201a411c6c6a211e201c21210340024020212802042201450d0002402021410c6a2802002210450d00201041047421100340024020012d00004109470d000240200141046a2220280200221f28020441ffffffff0371450d00201f280200102c2020280200211f0b201f102c0b200141106a2101201041706a22100d000b0b202141086a280200450d002021280204102c0b2021411c6a21010240202141146a280200450d002021280210102c0b200121212001201e470d000b0b201b0d040c050b0240201a450d00201c201a41186c6a211e201c212103400240202141046a280200450d002021280200102c0b0240202141146a2802002210450d00202128020c2101201041047421100340024020012d00004109470d000240200141046a2220280200221f28020441ffffffff0371450d00201f280200102c2020280200211f0b201f102c0b200141106a2101201041706a22100d000b0b202141186a21010240202141106a280200450d00202128020c102c0b200121212001201e470d000b0b201b0d030c040b0240201a450d00201c201a411c6c6a211e201c21210340024020212802042201450d0002402021410c6a2802002210450d00201041047421100340024020012d00004109470d000240200141046a2220280200221f28020441ffffffff0371450d00201f280200102c2020280200211f0b201f102c0b200141106a2101201041706a22100d000b0b202141086a280200450d002021280204102c0b2021411c6a21010240202141146a280200450d002021280210102c0b200121212001201e470d000b0b201b0d020c030b0240201c450d00201b450d00201c102c0b02402018450d0002402016450d002016410c6c211020182101034002402001280200221f450d00200141046a280200450d00201f102c0b2001410c6a2101201041746a22100d000b0b2017450d002018102c0b2014450d0202402012450d00201420124104746a211c2014212103402021222041106a2121024020202802042201450d0002402020410c6a2802002210450d002010410c6c2110034002402001280200221f450d00200141046a280200450d00201f102c0b2001410c6a2101201041746a22100d000b0b202041086a280200450d002020280204102c0b2021201c470d000b0b2013450d022014102c0c020b0240201b450d00201c102c0b02402018450d002017450d002018102c0b2014450d012015102c0c010b201c102c0b20062110201121010b20050d000b4100210520012111201021060b200f0d010b4104210f41002125410021260b20002003360280012000200636025420002026360208200020253602042000200f36020020004188016a200536020020004184016a2002360200200041fc006a2034410020041b360200200041f8006a2035410020041b36020020002004410420041b360274200041f0006a20334100200e1b360200200041ec006a20324100200e1b3602002000200e4104200e1b360268200041e4006a20314100200d1b360200200041e0006a20304100200d1b3602002000200d4104200d1b36025c200041d8006a2011360200200041d0006a202f4100200c1b360200200041cc006a202e4100200c1b3602002000200c4104200c1b360248200041c4006a202d4100200b1b360200200041c0006a202c4100200b1b3602002000200b4104200b1b36023c200041386a20364100200a1b360200200041346a202b4100200a1b3602002000200a4104200a1b3602302000412c6a2037410020091b360200200041286a202a410020091b36020020002009410420091b360224200041206a2038410020081b3602002000411c6a2029410020081b36020020002008410420081b360218200041146a2028410020071b360200200041106a2027410020071b36020020002007410420071b36020c0ba705010e7f230041106b2202240002400240024020012802004101470d00200141106a2d000021032001410c6a2802002104200141086a280200210520012f0112210620012d0011210720012802042108200241086a200010f40402400240200228020c2209450d002002280208220120094104746a210a0240200741ff0171220b4104460d004100210c200341ff0171210d0340024020012d000c200d470d0020012802082004470d000240200128020022092008460d002004450d002004210e2008210f034020092d0000200f2d0000470d02200941016a2109200f41016a210f200e417f6a220e0d000b0b20012d000d2209200b470d0020094104470d040b200c41016a210c200141106a2201200a470d000c020b0b4100210c200341ff0171210d0340024020012d000c200d470d0020012802082004470d000240200128020022092008460d002004450d002004210e2008210f034020092d0000200f2d0000470d02200941016a2109200f41016a210f200e417f6a220e0d000b0b20012d000d4104460d030b200c41016a210c200141106a2201200a470d000b0b0240024020002802082201200041046a280200470d00200141016a22092001490d012001410174220f2009200f20094b1b220941ffffffff00712009470d012009410474220f4100480d010240024020010d00200f102a21010c010b20002802002001410474200f102e21010b2001450d0420002001360200200041046a2009360200200028020821010b200028020020014104746a220120063b010e200120073a000d200120033a000c2001200436020820012005360204200120083602002000200028020841016a3602082002200010f4042002280204417f6a210c0c040b1035000b2005450d022008102c0c020b2001280204210c0c010b1033000b200241106a2400200c0b8322022d7f017e230041306b220224002002410436020020012802042103200128020021044101210502400240024002400240200128020822060d0041002107410121080c010b4130102a2207450d012007200636000c200720033600082007200436000420022007360200200741023a000041002108410121070b200141106a2802002109200128020c210a02400240200141146a280200220b0d002007210c0c010b2007410174220d200741016a220c200d200c4b1b220c41306c210d0240024020070d00200d102a210d0c010b2002280200200741306c200d102e210d0b200d450d012002200d360200200d200741306c6a220d41033a0000200d20022f002d3b0001200d200b36000c200d2009360008200d200a360004200d2002290204370210200d41036a2002412f6a2d00003a0000200d41186a2002410c6a290200370200200d41206a200241146a290200370200200d41286a200241046a41186a290200370200200741016a2107410021050b2001411c6a280200210e2001280218210f4100211002400240200141206a28020022110d00200c2112410021130c010b024002402007200c460d00200c21120c010b41000d0341000d03200c410174220d200c41016a2212200d20124b1b2212ad42307ea7220d4100480d0302400240200c0d00200d102a210d0c010b2002280200200c41306c200d102e210d0b200d450d022002200d3602000b2002280200200741306c6a220d41043a0000200d20022f002d3b0001200d201136000c200d200e360008200d200f360004200d2002290204370210200d41036a2002412f6a2d00003a0000200d41186a2002410c6a290200370200200d41206a200241146a290200370200200d41286a200241046a41186a29020037020041012113200741016a21070b200141286a280200211420012802242115024002402001412c6a28020022110d002012210c0c010b0240024020072012460d002012210c0c010b41000d0341000d032012410174220d201241016a220c200d200c4b1b220cad42307ea7220d4100480d030240024020120d00200d102a210d0c010b2002280200201241306c200d102e210d0b200d450d022002200d3602000b2002280200200741306c6a220d41053a0000200d20022f002d3b0001200d201136000c200d2014360008200d2015360004200d2002290204370210200d41036a2002412f6a2d00003a0000200d41186a2002410c6a290200370200200d41206a200241146a290200370200200d41286a200241046a41186a29020037020041012110200741016a21070b200141346a28020021162001280230211702400240200141386a28020022120d00410021180c010b02402007200c470d0041000d0341000d03200c410174220d200c41016a2211200d20114b1b2211ad42307ea7220d4100480d0302400240200c0d00200d102a210d0c010b2002280200200c41306c200d102e210d0b200d450d022002200d3602002011210c0b2002280200200741306c6a220d41063a0000200d20022f002d3b0001200d201236000c200d2016360008200d2017360004200d2002290204370210200d41036a2002412f6a2d00003a0000200d41186a2002410c6a290200370200200d41206a200241146a290200370200200d41286a200241046a41186a29020037020041012118200741016a21070b200141c0006a2802002119200128023c211a4101211b02400240200141c4006a280200221c0d00200c21124101211d0c010b024002402007200c460d00200c21120c010b41000d0341000d03200c410174220d200c41016a2212200d20124b1b2212ad42307ea7220d4100480d0302400240200c0d00200d102a210d0c010b2002280200200c41306c200d102e210d0b200d450d022002200d3602000b2002280200200741306c6a220d41073a0000200d20022f002d3b0001200d201c36000c200d2019360008200d201a360004200d2002290204370210200d41036a2002412f6a2d00003a0000200d41186a2002410c6a290200370200200d41206a200241146a290200370200200d41286a200241046a41186a290200370200200741016a21074100211d0b200141cc006a280200211e2001280248211f02400240200141d0006a28020022200d00201221110c010b0240024020072012460d00201221110c010b41000d0341000d032012410174220d201241016a220c200d200c4b1b2211ad42307ea7220d4100480d030240024020120d00200d102a210d0c010b2002280200201241306c200d102e210d0b200d450d022002200d3602000b2002280200200741306c6a220d41083a0000200d20022f002d3b0001200d202036000c200d201e360008200d201f360004200d2002290204370210200d41036a2002412f6a2d00003a0000200d41186a200241046a41086a290200370200200d41206a200241146a290200370200200d41286a200241046a41186a290200370200200741016a21074100211b0b410121210240024020012802544101460d002011210c0c010b200141d8006a28020021120240024020072011460d002011210c0c010b41000d0341000d032011410174220d201141016a220c200d200c4b1b220cad42307ea7220d4100480d030240024020110d00200d102a210d0c010b2002280200201141306c200d102e210d0b200d450d022002200d3602000b2002280200200741306c6a220d41093a0000200d20022f002d3b0001200d2012360204200d2002290204370208200d41036a2002412f6a2d00003a0000200d41106a2002410c6a290200370200200d41186a200241046a41106a290200370200200d41206a200241046a41186a290200370200200d41286a200241046a41206a290200370200200741016a21070b200141e0006a2802002122200128025c212302400240200141e4006a28020022240d00200c21120c010b024002402007200c460d00200c21120c010b41000d0341000d03200c410174220d200c41016a2212200d20124b1b2212ad42307ea7220d4100480d0302400240200c0d00200d102a210d0c010b2002280200200c41306c200d102e210d0b200d450d022002200d3602000b2002280200200741306c6a220d410a3a0000200d20022f002d3b0001200d202436000c200d2022360008200d2023360004200d2002290204370210200d41036a2002412f6a2d00003a0000200d41186a2002410c6a290200370200200d41206a200241146a290200370200200d41286a200241046a41186a290200370200200741016a2107410021210b200141ec006a2802002125200128026821264101212702400240200141f0006a28020022280d0020122111410121290c010b0240024020072012460d00201221110c010b41000d0341000d032012410174220d201241016a220c200d200c4b1b2211ad42307ea7220d4100480d030240024020120d00200d102a210d0c010b2002280200201241306c200d102e210d0b200d450d022002200d3602000b2002280200200741306c6a220d410c3a0000200d20022f002d3b0001200d202836000c200d2025360008200d2026360004200d2002290204370210200d41036a2002412f6a2d00003a0000200d41186a2002410c6a290200370200200d41206a200241146a290200370200200d41286a200241046a41186a290200370200200741016a2107410021290b200141f8006a280200212a2001280274212b02400240200141fc006a280200222c0d002011210c0c010b0240024020072011460d002011210c0c010b41000d0341000d032011410174220d201141016a220c200d200c4b1b220cad42307ea7220d4100480d030240024020110d00200d102a210d0c010b2002280200201141306c200d102e210d0b200d450d022002200d3602000b2002280200200741306c6a220d410d3a0000200d20022f002d3b0001200d202c36000c200d202a360008200d202b360004200d2002290204370210200d41036a2002412f6a2d00003a0000200d41186a2002410c6a290200370200200d41206a200241146a290200370200200d41286a200241046a41186a290200370200200741016a2107410021270b20014184016a2802002111200128028001210d02400240200c20076b20014188016a28020041306c222d41306d2212490d00200228020021010c010b200720126a22012007490d02200c410174222e2001202e20014b1b222ead42307e222f422088a70d02202fa722014100480d0202400240200c0d002001102a21010c010b2002280200200c41306c2001102e21010b2001450d0120022001360200202e210c0b2001200741306c6a200d202d10db051a200720126a210702402011450d00200d102c0b2000200136020820004280c2cdeb16370200200041106a20073602002000410c6a200c3602002027450d020240202c450d00202b202c411c6c6a2112202b21000340024020002802042201450d0002402000410c6a2802002207450d00200741047421070340024020012d00004109470d000240200141046a220c280200220d28020441ffffffff0371450d00200d280200102c200c280200210d0b200d102c0b200141106a2101200741706a22070d000b0b200041086a280200450d002000280204102c0b2000411c6a21010240200041146a280200450d002000280210102c0b2001210020012012470d000b0b202a450d02202b102c0c020b1033000b1035000b02402029450d0002402028450d002026202841186c6a21122026210003400240200041046a280200450d002000280200102c0b0240200041146a2802002207450d00200028020c2101200741047421070340024020012d00004109470d000240200141046a220c280200220d28020441ffffffff0371450d00200d280200102c200c280200210d0b200d102c0b200141106a2101200741706a22070d000b0b200041186a21010240200041106a280200450d00200028020c102c0b2001210020012012470d000b0b2025450d002026102c0b02402021450d0002402024450d0020232024411c6c6a2112202321000340024020002802042201450d0002402000410c6a2802002207450d00200741047421070340024020012d00004109470d000240200141046a220c280200220d28020441ffffffff0371450d00200d280200102c200c280200210d0b200d102c0b200141106a2101200741706a22070d000b0b200041086a280200450d002000280204102c0b2000411c6a21010240200041146a280200450d002000280210102c0b2001210020012012470d000b0b2022450d002023102c0b0240201b450d0002402020450d00202041146c2107201f210103400240200141046a280200450d002001280200102c0b200141146a21012007416c6a22070d000b0b201e450d00201f102c0b0240201d450d000240201c450d00201a201c4104746a2112201a21000340024020002802082207450d0020002802002101200741047421070340024020012d00004109470d000240200141046a220c280200220d28020441ffffffff0371450d00200d280200102c200c280200210d0b200d102c0b200141106a2101200741706a22070d000b0b200041106a21010240200041046a280200450d002000280200102c0b2001210020012012470d000b0b2019450d00201a102c0b02402016410047201841017371450d002017102c0b02402014410047201041017371450d002015102c0b0240200e410047201341017371450d00200f102c0b02402005450d000240200b450d00200b41286c2107200a210103400240200141046a280200450d002001280200102c0b0240200141106a280200450d002001410c6a280200102c0b200141286a2101200741586a22070d000b0b2009450d00200a102c0b02402008450d0002402006450d00200641047421072004210103400240200141046a280200450d002001280200102c0b200141106a2101200741706a22070d000b0b2003450d002004102c0b200241306a24000bea0203037f017e027f410121020240024002400240200041086a2802002203417f6a220420034f0d00200420034b0d00200028020020044104746a220329020421052003200141016aad3702042005a721012005422088a721030240200041086a28020022024101460d002002450d0220002802002002417e6a4104746a22022802042001470d002002200228020820036a36020841000f0b410021022003450d000240200041146a2802002204200041106a280200470d00200441016a22062004490d04200441017422072006200720064b1b220641ffffffff01712006470d04200641037422074100480d040240024020040d002007102a21040c010b200028020c20044103742007102e21040b2004450d032000200436020c200041106a2006360200200028021421040b200028020c20044103746a22042003360204200420013602002000200028021441016a3602140b20020f0b418e87c600413f1054000b1033000b1035000b911302147f027e23004180026b220424000240024020014115490d0041012105410121060240024002400340200121072000210820052006714101732109024002400240024002400240034002400240024002402003450d00024020054101710d0020002001109b052003417f6a21030b2001410276220a41036c210b200a410174210c4100210d024020014132490d00200b200b417f6a220d2000200b4103746a280200220e2000200d4103746a280200220f4922101b2211200b41016a2212200d200b20101b200020124103746a280200220b200f200e20101b220d49220f1b200b200d200f1b200020114103746a2802004922131b210b200c200c417f6a220d2000200c4103746a28020022112000200d4103746a280200221249220e1b2214200c4101722206200d200c200e1b200020064103746a280200220c20122011200e1b220d4922111b200c200d20111b200020144103746a2802004922141b210c200a200a417f6a22122000200a4103746a2802002206200020124103746a280200221549220d1b2216200a41016a22172012200a200d1b200020174103746a280200220a20152006200d1b22064922121b200a200620121b200020164103746a2802004922061b210a41024101200d1b200d20121b20066a200e6a20116a20146a20106a200f6a20136a210d0b200d2000200c4103746a280200220e2000200a4103746a280200220f4922106a2000200b4103746a280200220d200f200e20101b221149220f6a210e200d2011200f1b2000200c200a20101b220d4103746a280200490d01200b200a200c20101b200f1b210d0c020b2000200110b5050c0f0b200e41016a220e410c490d0002402001410176220b450d00200020014103746a41786a210a2000210c0340200c2902002118200c200a290200370200200a2018370200200c41086a210c200a41786a210a200b417f6a220b0d000b0b2001200d417f736a210d4101210a0c010b200e45210a0b0240200a452009724101710d002000200110b6050d0d0b2002450d02200d20014f0d01024020022802002000200d4103746a220a2802004f0d0020002108200121070c040b200029020021182000200a290200370200200a2018370200200041786a210f200041086a211120002902002218a721104100210c2001210b03400240200c200b417f6a220d4f0d002011200c4103746a210a0340200a28020020104b0d01200a41086a210a200d200c41016a220c470d000b200d210c0b200f200b4103746a210a02400340200c200b417f6a220b4f0d01200a280200210d200a41786a220e210a200d20104b0d000b2011200c4103746a220a2902002119200a200e41086a220d290200370200200d2019370200200c41016a210c0c010b0b2000201837020002402001200c41016a220a490d002000200a4103746a21002001200a6b220141154f0d010c0c0b0b200a20011047000b41c4ffc500200d20011038000b2007450d010b200d20074f0d012008290200211820082008200d4103746a220a290200370200200a2018370200200841086a210e20082902002219a72111410021142007417f6a2210450d02200e210a0340200a28020020114f0d03200a41086a210a2010201441016a2214470d000b201021140c020b41f8fec500410041001038000b4188ffc500200d20071038000b200820074103746a210c2010210b02400340200c210d200b220a20144d22060d01200a417f6a210b200d41786a220c28020020114f0d000b0b0240200a2014490d002010200a490d0241800121054100210b410021014100210c4100210f4180012109200e20144103746a2215211003400240200d20106b220a4187104b22130d00200a410376220a41807f6a200a2001200b49200f200c49220e7222001b210a02402000450d002009200a200e1b2109200a2005200e1b21050c010b200a200a41017622096b21050b0240200f200c470d00024020090d002004220c210f0c010b4100210a2004220f210c2010210e0340200c200a3a0000200c200e28020020114f6a210c200e41086a210e2009200a41016a220a470d000b0b02402001200b470d00024020050d0020044180016a220b21010c010b200d41786a210a4100210e20044180016a2201210b0340200b200e3a0000200b200a2802002011496a210b200a41786a210a2005200e41016a220e470d000b0b0240200b20016b220a200c200f6b220e200e200a4b1b2212450d002010200f2d00004103746a220a2902002118200a200d20012d0000417f734103746a290200370200024020124101460d004100210a0340200d2001200a6a220e2d0000417f734103746a2010200f200a6a41016a22002d00004103746a290200370200201020002d00004103746a200d200e41016a2d0000417f734103746a290200370200200a41026a210e200a41016a2200210a200e2012490d000b200120006a2101200f20006a210f0b200d20012d0000417f734103746a2018370200200141016a2101200f41016a210f0b200d20054103746b200d2001200b461b210d201020094103746a2010200f200c461b211020130d000b02400240200f200c4f0d00200d210a03402010200c417f6a220c2d00004103746a220b2902002118200b200a41786a220a290200370200200a2018370200200f200c490d000c020b0b2010210a2001200b4f0d000340200a2902002118200a200d200b417f6a220b2d0000417f734103746a220c290200370200200c2018370200200a41086a210a2001200b490d000b0b200820193702002007200a20156b41037620146a22014d0d032008200820014103746a220a290200370200200a2019370200200720016b220c450d04200c20012001200c4b1b210b2007410376210d200a41086a2100024002402001200c417f6a220c490d002000200c200a200310fc04200821000c010b200820012002200310fc04200a2102200c21010b200b200d4f2105200141154f0d010c050b0b2014200a1047000b200a2010103f000b4188ffc500200120071038000b4198ffc500411c41b4ffc5001036000b20014102490d00200041786a21104100210e4101210b0340200b410374210c200b417f6a210a200b41016a210b02402000200c6a220d2802002000200a4103746a220f2802004f0d00200d2902002118200d200f2902003702000240200a450d00200e210c2010210a200d41706a2802002018a7220d4d0d00024002400340200a41086a200a290200370200200c4101460d01200c417f6a210c200a41786a220a280200200d4b0d000c020b0b4100210c0b2000200c4103746a210f0b200f20183702000b200e41016a210e201041086a2110200b2001470d000b0b20044180026a24000bd20402097f017e230041306b22022400200241106a2203200141246a290200370300200241086a22042001411c6a29020037030020022001290214370300200241186a41106a2205200141106a280200360200200241186a41086a2206200141086a290200370300200220012902003703182000200241186a10f9042107024002400240200041206a28020022082000411c6a280200470d00200841016a22092008490d022008410174220a2009200a20094b1b220941ffffffff03712009470d022009410274220a4100480d020240024020080d00200a102a21080c010b20002802182008410274200a102e21080b2008450d01200020083602182000411c6a2009360200200028022021080b200028021820084102746a20073602002000200028022041016a3602202005200329030037030020062004290300370300200220022903003703180240200041f0006a22032802002208200041ec006a280200470d00200841016a22042008490d02200841017422052004200520044b1b2204ad42187e220b422088a70d02200ba722054100480d020240024020080d002005102a21080c010b2000280268200841186c2005102e21080b2008450d0120002008360268200041ec006a2004360200200041f0006a28020021080b2000280268200841186c6a22082002290318370200200841106a200241186a41106a290300370200200841086a200241186a41086a29030037020020032003280200220841016a360200024020012d002c450d0020004101360254200041d8006a20083602000b200241306a24000f0b1033000b1035000bb47805077f017e217f037e157f230022032104200341e0086b41607122032400024002400240024002404110102a2205450d00200541063a00004120102a2206450d00200641063a001020064100360204200620032f00d0053b00012006412d3a0000200641036a200341d2056a2d00003a0000024020052d00004109470d0002402005280204220728020441ffffffff0371450d002007280200102c200528020421070b2007102c0b2005102c200141106a28020041306c2105200128020841546a210702400340024020050d004110102a2207450d0320074180023b010c200742828080802037020420072006360200200720032f01b0033b010e0240200128021022052001410c6a280200470d00200541016a22082005490d08200541017422092008200920084b1b2208ad42307e220a422088a70d08200aa722094100480d080240024020050d002009102a21050c010b2001280208200541306c2009102e21050b2005450d04200120053602082001410c6a2008360200200128021021050b2001280208200541306c6a220520032f00c0043b0001200541073a0000200542818080801037000820052007360004200520032902d005370210200541036a200341c2046a2d00003a0000200541186a200341d8056a290200370200200541206a200341e0056a290200370200200541286a200341d0056a41186a2902003702002001200128021041016a220b3602104100210c0c020b200541506a21052007412c6a2108200741306a2209210720082d00004107470d000b200320032f01b0033b01d0050240200941086a22072802002205200941046a280200470d00200541016a22082005490d062005410174220d2008200d20084b1b220841ffffffff00712008470d062008410474220d4100480d060240024020050d00200d102a21050c010b20092802002005410474200d102e21050b2005450d0220092005360200200941046a2008360200200941086a28020021050b200928020020054104746a22054180023b010c200542828080802037020420052006360200200520032f01d0053b010e2007200728020041016a360200200341306a200910f4042003280234417f6a210c2001280210210b0b200b41306c21052001280208220e41546a210702400340410021082005450d01200541506a21052007412c6a2109200741306a2206210720092d00004103470d000b200641086a2802002205450d00200541286c2107200628020041186a2105410021080340200820052d0000456a2108200541286a2105200741586a22070d000b0b200b41306c2105200e41546a210702400340410021092005450d01200541506a21052007412c6a2106200741306a220d210720062d00004103470d000b200d41086a2802002205450d00200541286c2107200d28020041186a2105410021090340200920052d0000456a2109200541286a2105200741586a22070d000b0b200b41306c2105200e415c6a2107024003404100210f024020050d00410021050c020b200541506a2105200741246a2106200741306a220d210720062d00004104470d000b200d28020021050b200341003602c00402400240200520096a220b0d0041042110410021110c010b0240024002402008450d00200342003703d005410021050c010b200341d0056a4100200110ab0520032802d405210520032802d0054101470d00200341d8056a290300210a024020032802c0042207450d0020032802c404450d002007102c0b2003200a3702c404200320053602c00441002111410421104100210f0c010b4104102a2210450d022010200536020002400240200b4102490d000240024020084102490d00200342003703d0054100210d0c010b200341d0056a4101200110ab0520032802d405210d20032802d0054101470d00200341d8056a290300210a024020032802c004450d0020032802c404450d0020032802c004102c0b2003200a3702c4042003200d3602c0040c010b410221064104210741012109410121110340200941016a2105024020092011470d0020062005200620054b1b221141ffffffff03712011470d0a2011410274220e4100480d0a20102007200e102e2210450d060b201020076a200d360200024002402005200b4f0d000240200820054d0d00200342003703d0054100210d0c020b200341d0056a2005200110ab0520032802d405210d20032802d0054101470d0120032903d805210a024020032802c004450d0020032802c404450d0020032802c004102c0b200941016a210f2003200a3702c4042003200d3602c0040c040b200941016a210f0c030b200641026a2106200741046a2107200521090c000b0b4101210f410121110b20032802c00421050b2005450d0020032902c404210a02402011450d002010102c0b2000200536020420004101360200200041086a200a3702000c030b024020012802102205450d0020012802082212200541306c6a2113200341c0046a41146a2114200341c0076a2115200341f4056a211620034184066a211720034194066a2118200341a4066a2119200341b4066a211a200341c4066a211b200341d4066a211c200341e4066a211d200341f4066a211e20034184076a211f20034194076a2120200341a4076a2121200341b4076a2122024002400340024020122d0000410c470d00201228020c2205450d0020122802042206200541186c6a212303400240200641146a220e2802002205450d002006410c6a212441002109024002400340200920054f0d014101210502402024280200200941047422256a22072d0000410b470d002003200741046a22073602a00220072802002207200f4f0d03201020074102746a2802002208450d002003200c3602b407200341133a00b007200341d7003a00a00720032008360294072003412d3a0090072003200c36028407200341123a008007200320073602f4062003410b3a00f006200341063a00e006200341003a00d00620034184083b01c006200341373a00b006200320023602a4062003412d3a00a0062003200c36029406200341123a0090062003200c36028406200341133a008006200341d6003a00f005200320083602e4052003412d3a00e0052003200c3602d405200341123a00d005200e280200222620094d0d09200e2009360200200628020c2105200320153602d804200320243602d0042003200520256a220b41106a220d3602c8042003200941016a22273602c0042003202620276b22283602c40420032005202741047422296a222a3602cc042003200341d0056a3602d404200d21050240200b2d0000220841ac01460d004100210502400340200b20056a21070240200841ff01714109470d000240200741046a280200220828020441ffffffff0371450d002008280200102c0b2008102c0b2005450d012003200741206a3602c804200541106a2105200741106a2d0000220841ac01470d000b200b20056a41106a21050c010b200741106a21050b02402005202a460d0003402003200541106a22073602c80420052d0000220841ac01460d01024020084109470d000240200541046a280200220528020441ffffffff0371450d002005280200102c0b2005102c0b20072105200d2007470d000b0b02400240024002402028450d000240202720062802142205470d00200341d0056a21052015210b0c030b2025200541047422056b2108200628020c20056a2107200341d0056a21052015210d0340024002402005200d470d00410021050c010b2003200541106a3602d4040b200341b0036a200510ac0520032d00b00341ac01460d04200720032903b003370300200741086a200341b0036a41086a2903003703002006200628021441016a3602142008450d02200741106a2107200841706a210820032802d804210d20032802d40421050c000b0b2024201410ad050c020b20032802d804210b20032802d40421050b0240200b20056b2207450d000240024020032802d004220d41046a222a280200222520266b20074104762208490d00200d28020021070c010b202620086a22072026490d12202541017422262007202620074b1b222641ffffffff00712026470d12202641047422074100480d120240024020250d002007102a21070c010b200d28020020254104742007102e21070b2007450d0e200d2007360200202a20263602000b2007202720086a22254104746a200720296a202841047410dc051a200320253602c0042025200d2802082207460d00200920086a410474200741047422076b2108200d28020020076a21070340024002402005200b470d00410021050c010b2003200541106a3602d4040b200341b0036a200510ac0520032d00b00341ac01460d02200720032903b003370300200741086a200341b0036a41086a290300370300200d200d28020841016a3602082008450d01200741106a2107200841706a210820032802d804210b20032802d40421050c000b0b200341003602b803200342083703b003200341b0036a201410ad0520032802b003222820032802b8032207410474220b6a210d20032802b40321292028210502402007450d000240024020032802d004222541046a222a280200220520032802c404222720032802c00422076a22266b200b4104752208490d00202528020021050c010b202620086a222b2026490d1220054101742226202b2026202b4b1b222641ffffffff00712026470d122026410474222b4100480d120240024020050d00202b102a21050c010b20252802002005410474202b102e21050b2005450d0e20252005360200202a20263602000b2005200720086a220841047422266a200520074104746a202741047410dc051a200320083602c00420282105200820252802082207460d002025280200220520266a212a200520074104746a21082028210703400240200b0d00200d21050c020b200341b0036a41026a2205200741036a2d00003a0000200320072f00013b01b003024020072d0000222741ac01470d00200741106a21050c020b200741046a2802002126200741086a290300210a200820273a0000200841086a200a370300200841046a202636020020032f01b0032127200841036a20052d00003a0000200841016a20273b00002025202528020841016a360208200b41706a210b200741106a22052107200841106a2208202a470d000b0b02402005200d460d0003400240024020052d000022074109460d00200741ac01470d010c030b0240200541046a280200220728020441ffffffff0371450d002007280200102c0b2007102c0b200541106a2205200d470d000b0b2029450d002028102c0b024020032802c804220520032802cc04220d460d0003402003200541106a22073602c80420052d0000220841ac01460d01024020084109470d000240200541046a280200220528020441ffffffff0371450d002005280200102c0b2005102c0b20072105200d2007470d000b0b024020032802c4042205450d00024020032802c004220d20032802d004220b41086a22082802002207460d00200b280200220b20074104746a200b200d4104746a200541047410dc051a0b2008200520076a3602000b024020032d00d0054109470d00024020032802d405220528020441ffffffff0371450d002005280200102c20032802d40521050b2005102c0b024020032d00e0054109470d000240200341d0056a41146a280200220528020441ffffffff0371450d002005280200102c20032802e40521050b2005102c0b024020032d00f0054109470d0002402016280200220528020441ffffffff0371450d002005280200102c20032802f40521050b2005102c0b024020032d0080064109470d0002402017280200220528020441ffffffff0371450d002005280200102c20032802840621050b2005102c0b024020032d0090064109470d0002402018280200220528020441ffffffff0371450d002005280200102c20032802940621050b2005102c0b024020032d00a0064109470d0002402019280200220528020441ffffffff0371450d002005280200102c20032802a40621050b2005102c0b024020032d00b0064109470d000240201a280200220528020441ffffffff0371450d002005280200102c20032802b40621050b2005102c0b024020032d00c0064109470d000240201b280200220528020441ffffffff0371450d002005280200102c20032802c40621050b2005102c0b024020032d00d0064109470d000240201c280200220528020441ffffffff0371450d002005280200102c20032802d40621050b2005102c0b024020032d00e0064109470d000240201d280200220528020441ffffffff0371450d002005280200102c20032802e40621050b2005102c0b024020032d00f0064109470d000240201e280200220528020441ffffffff0371450d002005280200102c20032802f40621050b2005102c0b024020032d0080074109470d000240201f280200220528020441ffffffff0371450d002005280200102c20032802840721050b2005102c0b024020032d0090074109470d0002402020280200220528020441ffffffff0371450d002005280200102c20032802940721050b2005102c0b024020032d00a0074109470d0002402021280200220528020441ffffffff0371450d002005280200102c20032802a40721050b2005102c0b024020032d00b0074109470d0002402022280200220528020441ffffffff0371450d002005280200102c20032802b40721050b2005102c0b410f21050b200520096a2209200e2802002205490d000c030b0b41a8f8c500200920051038000b200341013602e405200342013702d405200341b8f8c5003602d005200341313602b4032003200341b0036a3602e0052003200341a0026a3602b003200341c0046a200341d0056a103720032802c00422050d040b200641186a22062023470d000b0b201241306a22122013470d000c030b0b20032902c404210a2000200536020420004101360200200041086a200a3702002011450d042010102c0c040b41dafec500411c41acfec5001036000b200341386a41106a200141106a280200221e360200200341386a41086a200141086a290200220a37030020032001290200370338201e41306c2105200aa7222041546a210702400340024020050d00410021050c020b200541506a21052007412c6a2108200741306a2209210720082d00004108470d000b200341286a200910f40420032802282105200328022c21070b2007410020051b210b201e41306c2107202041546a21082005410420051b210502400340024020070d00410021090c020b200741506a21072008412c6a2109200841306a2206210820092d0000410a470d000b200341206a200610f40420032802202109200328022421070b2007410020091b210e201e41306c2107202041546a21082009410420091b212a02400340024020070d004100210d0c020b200741506a21072008412c6a2109200841306a2206210820092d00004109470d000b200628020021084101210d0b20034200370254200341d0e1c1003602502005200b41146c6a2107202a200e411c6c6a211f200341c0046a410272221a41266a2121201a41206a2122201a41186a212b201a41106a2112201a41086a2101200341c0046a41286a21134104212341002115410021284100211d41002118410021170240024002400240410041ff01710e03000102000b410021090c020b410221090c010b410121090b02400240024003400240024002400240024002400240024002400240024002400240024002400240024020090e03000104040b0240201841ff01710e03020300020b201d4101470d06410021090c090b4100212941002114200d0d0b0c110b0240034020072005460d012005410c6a2109200541146a2206210520092802000d000b20062105200d2129200821142006417c6a28020021080c0b0b201d4101470d02410021090c090b0340024020072005470d00410221170c0c0b2005410c6a2109200541146a2206210520092802000d000b20062105200d2129200821142006417c6a28020021080c090b024002400240201841ff01710e03010200010b201d4101470d05410021090c060b0240034020072005460d012005410c6a2109200541146a2206210520092802000d000b20062105200d2129200821142006417c6a28020021080c0a0b201d4101470d02410021090c070b034020052007460d0f2005410c6a2109200541146a2206210520092802000d000b20062105200d2129200821142006417c6a28020021080c080b410121090c060b410121090c040b410121090c020b410121090b0340024002400240024020090e020001010b2027201c470d01410121090c030b202a201f460d0c200341186a202a10a40520032802182227450d0c202a411c6a212a2027200328021c4102746a211c0c010b2027450d0b202728020021094101211d202741046a2127200d212920082114200921080c050b410021090c000b0b0340024002400240024020090e020001010b2027201c470d014101211d410121090c030b0240202a201f470d00410221170c070b200341086a202a10a405202a411c6a212a0240200328020822090d00410221170c070b2009200328020c4102746a211c200921270c010b202741046a2109024020270d00410221174101211d200921270c060b202728020021064101211d20092127200d212920082114200621080c040b410021090c000b0b0340024002400240024020090e020001010b2027201c470d01410121090c030b202a201f460d0a200341106a202a10a40520032802102227450d0a202a411c6a212a202720032802144102746a211c0c010b2027450d0920272802002109410221184101211d202741046a2127200d212920082114200921080c030b410021090c000b0b0340024002400240024020090e020001010b2027201c470d014101211d410121090c030b410221180240202a201f470d00410221170c050b2003202a10a405202a411c6a212a0240200328020022090d00410221170c050b200920032802044102746a211c200921270c010b202741046a2109024020270d00410221184101211d20092127410221170c040b20272802002106410221184101211d20092127200d212920082114200621080c020b410021090c000b0b2003200836025c02402008200f490d00200341013602e405200342023702d405200341c8fcc5003602d005200341013602b4032003200341b0036a3602e0052003200341dc006a3602b003200341c0046a200341d0056a103720032902c404220a422088a7210820032802c0042124200aa7211b0c050b0240201020084102746a2802002209450d000240024020282015460d0020152116202821150c010b201541016a22062015490d0d2015410174220d2006200d20064b1b221641ffffffff03712016470d0d201641027422064100480d0d0240024020150d002006102a21230c010b202320154102742006102e21230b2023450d090b202320154102746a2008360200200341d0056a200328025c220b200341386a10af0520032802d805211b20032802d4052124024020032802d00522194101470d0020032802dc052108201621150c060b20242802082208417f4c0d072024280200210620242d000c210d0240024020080d004101210e0c010b2008102a220e450d090b200e2006200810db0521062003200836026820032008360264200320063602602003200d3a006c200320242d000d3a006d200341003602702003200328025c3602782003200936027c024002402003280250220941d0e1c100460d00200328025421260c010b2021420037010020224200370100202b42003701002012420037010020014200370100201a4200370100200341d0056a410041e00210da051a419403102a2209450d094100212620094100360200200920032903c0043702042009410c6a200341c0046a41086a290300370200200941146a200341c0046a41106a2903003702002009411c6a200341c0046a41186a290300370200200941246a200341c0046a41206a2903003702002009412c6a2013290300370200200941346a200341d0056a41e00210db051a20034100360254200320093602500b202841016a21280240034020092f010622154102742125410021084114210d417f210602400340024020252008470d00201521060c020b200920086a210e200641016a2106200d41206a210d200841046a21080240417f200e41086a280200220e200b47200e200b4b1b41016a0e03020001020b0b2009200d6a220828020421062008280200210d20082003290360370200200841186a200329037837020020082802102109200820032903703702102008200329036837020820094102460d022006450d02200d102c0c020b02402026450d002026417f6a2126200920064102746a4194036a28020021090c010b0b2003200328025841016a3602582003290378210a2003290370212c2003290368212d2003290360212e0240024020092f0106220d410b490d002021420037010020224200370100202b42003701002012420037010020014200370100201a4200370100200341d0056a410041e00210da051a419403102a2208450d0b20084100360200200820032903c0043702042008410c6a200341c0046a41086a222f290300370200200841146a200341c0046a41106a22302903003702002008411c6a200341c0046a41186a2231290300370200200841246a200341c0046a41206a22322903003702002008412c6a2013290300370200200841346a200341d0056a41e00210db05210e200341d0056a41086a2226200941fc016a290200370300200341d0056a41106a221520094184026a290200370300200341d0056a41186a22332009418c026a290200370300200320092902f4013703d00520092802202134200841086a200941246a20092f010641796a220d41027410db052125200e20094194026a200d41057410db05210e200941063b01062008200d3b01062031203329030037030020302015290300370300202f2026290300370300200320032903d0053703c0040240024020064107490d0020252006417a6a22354102746a2025200641796a22364102746a2206200d41ffff037120366b41027410dc051a2006200b360200200e20354105746a200e20364105746a2206200841066a220d2f010020366b41057410dc051a200641186a200a3702002006202c3702102006202d3702082006202e370200200d2f0100210e0c010b200941086a220d200641016a22254102746a200d20064102746a2236200941066a220d2f0100220e20066b223541027410dc051a2036200b360200200941346a220b20254105746a200b20064105746a2206203541057410dc051a200641186a200a3702002006202c3702102006202d3702082006202e3702000b200d200e41016a3b0100200341b0036a41186a22372031290300220a370300200341b0036a41106a22382030290300222c370300200341b0036a41086a2239202f290300222d37030020034190016a41186a223a200a37030020034190016a41106a223b202c37030020034190016a41086a223c202d370300200320032903c004220a3703b0032003200a3703900102402009280200220e0d00200821060c020b20092f010421362008213d0340200341a0026a41186a223e203a290300370300200341a0026a41106a223f203b290300370300200341a0026a41086a2240203c29030037030020032003290390013703a002203641ffff0371210b024002400240200e2f01062208410b490d002021420037010020224200370100202b42003701002012420037010020014200370100201a42003701002039202f2903003703002038203029030037030020372031290300370300200341b0036a41206a22082032290300370300200341b0036a41286a22092013290300370300200320032903c0043703b003200341d0056a410041900310da051a41c403102a2206450d0f20064100360200200620032903b0033702042006410c6a2039290300370200200641146a20382903003702002006411c6a2037290300370200200641246a20082903003702002006412c6a2009290300370200200641346a200341d0056a41900310db052109200e41206a28020021412033200e418c026a2902003703002015200e4184026a2902003703002026200e41fc016a2902003703002003200e41f4016a2902003703d005200641086a200e41246a200e2f0106220d41796a220841027410db0521422009200e4194026a200841057410db05214320064194036a200e41b0036a200d417a6a222541027410db052135200e41063b0106200620083b010602402025450d00410021082035210903402009280200220d20083b0104200d2006360200200941046a21092025200841016a2208470d000b0b20312033290300220a37030020302015290300222c370300202f2026290300222d370300200320032903d005222e3703c0042033200a3703002015202c3703002026202d3703002003202e3703d005203641ffff037122094107490d012042200b417a6a220d41027422256a2042200b41796a22084102746a220920062f010620086b41027410dc051a200920343602002043200d4105746a204320084105746a220920062f010620086b41057410dc051a200941186a203e290300370200200941106a203f290300370200200941086a2040290300370200200920032903a002370200200620062f010641016a22093b0106200b410274223620356a416c6a203520256a2225200941ffff0371220b200d6b41027410dc051a2025203d360200200b200d490d02200620366a41fc026a210903402009280200220d200841016a22083b0104200d2006360200200941046a21092008200b490d000c030b0b200e41086a2209200b41016a2206410274220d6a2009200b41027422256a22092008200b6b222641027410dc051a20092034360200200e41346a220920064105746a2009200b4105746a2209202641057410dc051a200941186a203e290300370200200941106a203f290300370200200941086a2040290300370200200920032903a002370200200e200841016a22083b01062025200e4194036a22096a41086a2009200d6a2209200841ffff0371220d20066b41027410dc051a2009203d360200200b200d4f0d05200e2006417f6a22084102746a4198036a2109034020092802002206200841016a22083b01042006200e360200200941046a21092008200d490d000c060b0b200e41086a2208200b41016a2225410274220d6a2008200b41027422366a2208200e2f01062235200b6b224241027410dc051a20082034360200200e41346a220820254105746a2008200b4105746a2208204241057410dc051a200841186a203e290300370200200841106a203f290300370200200841086a2040290300370200200820032903a002370200200e203541016a22083b01062036200e4194036a22356a41086a2035200d6a2235200841ffff0371220d20256b41027410dc051a2035203d3602002009200d4f0d00200e20366a4198036a2108034020082802002209200b41016a220b3b01042009200e360200200841046a2108200d200b470d000b0b203a2033290300370300203b2015290300370300203c2026290300370300200320032903d005370390010240200e28020022080d00204121340c030b200e2f010421362008210e204121342006213d0c000b0b200941086a2208200641016a220e4102746a200820064102746a2208200d20066b222541027410dc051a2008200b360200200941346a2208200e4105746a200820064105746a2208202541057410dc051a200841186a200a3702002008202c3702102008202d3702082008202e3702002009200d41016a3b01060c010b2021420037010020224200370100202b42003701002012420037010020014200370100201a42003701002039202f2903003703002038203029030037030020372031290300370300200341b0036a41206a22092032290300370300200341b0036a41286a220d2013290300370300200320032903c0043703b003200341d0056a410041900310da051a41c403102a2208450d0920084100360200200820032903b0033702042008410c6a2039290300370200200841146a20382903003702002008411c6a2037290300370200200841246a20092903003702002008412c6a200d290300370200200841346a200341d0056a41900310db05210b20082003280250220936029403200320083602502003200328025441016a36025420092008360200200941003b0104200b20082f0106220d4105746a2209200329039001370200200941186a203a290300370200200941106a203b290300370200200941086a203c2903003702002008200d4102746a41086a203436020020084194036a200d41016a22094102746a2006360200200820093b0106200620093b0104200620083602000b02402019450d00201b450d002024102c0b201621150b2029210d20142108201741ff01710e03010200010b410121090c020b410021090c010b410221090c000b0b20032802502003280254200328025810b00502402015450d002023102c0b0240201e450d00201e41306c2107202021050340200510b105200541306a2105200741506a22070d000b0b0240200341c4006a280200450d002020102c0b2000202436020420004101360200200041086a2008ad422086201bad843702002011450d052010102c200424000f0b2003280248220d41306c21052003280240220b41546a210720032802582134200328025421272003280250212602400340410021082005450d01200541506a21052007412c6a2109200741306a2206210720092d00004103470d000b200641086a2802002205450d00200541286c2107200628020041186a2105410021080340200820052d0000456a2108200541286a2105200741586a22070d000b0b200d41306c2105200b415c6a210702400340024020050d00410021050c020b200541506a2105200741246a2109200741306a2206210720092d00004104470d000b200628020021050b200341d0056a41106a2229200341386a41106a280200360200200341d0056a41086a200341386a41086a290300370300200320032903383703d00520034190016a200341d0056a10f8042028450d02202320284102746a2114200520086a2124200341d0056a41e0016a2116200341d0056a41d0016a2117200341d0056a41c0016a2118200341d0056a41b0016a2119200341d0056a41a0016a211a200341d0056a4190016a211b200341d0056a4180016a211c200341d0056a41f0006a211d200341d0056a41e0006a211e200341d0056a41d0006a211f200341d0056a41c0006a2120200341d0056a41306a2121200341d0056a41206a2122200341c7046a212b20034184066a211220034194066a2101200341a4066a2113200341b4066a2133200341c4066a2136200341d4066a2135200341e4066a212f200341f4066a213020034184076a213120034194076a2137200341a4076a2138200341b4076a21392023212803402028220541046a212820052802002106202621082027210e034020082f0106222a410274210b41002109417f210741002105024003400240200b2005470d00202a21070c020b200820056a210d200741016a2107200941206a2109200541046a21050240417f200d41086a280200220d200647200d20064b1b41016a0e03020001020b0b200820096a220e412c6a2802002107200e41306a28020021052003200c3602b407200341133a00b007200341d7003a00a00720032005360294072003412d3a0090072003200c36028407200341123a008007200320073602f4062003410b3a00f006200341063a00e006200341003a00d00620034184083b01c006200341373a00b006200320023602a4062003412d3a00a0062003200c36029406200341123a0090062003200c36028406200341133a008006200341d6003a00f005200320053602e4052003412d3a00e0052003200c3602d405200341123a00d005200e411c6a222a280200220d41106a220541ffffffff00712005470d0320054104742207417f4c0d030240024020070d00410821060c010b2007102a2206450d05202a280200210d0b02400240200d0d00410021080c010b41002109410021070340024020072005470d00200541016a22082005490d0b2005410174220b2008200b20084b1b220841ffffffff00712008470d0b2008410474220b4100480d0b0240024020050d00200b102a21060c010b20062005410474200b102e21060b2006450d07200821050b200620096a2208410f3a0000200841046a2007360200200841016a20032f01b0033b0000200841036a200341b0036a41026a2d00003a0000200941106a2109200741016a22082107200d2008470d000b0b02400240200520086b410e4d0d00200521090c010b2008410f6a22072008490d09200541017422092007200920074b1b220941ffffffff00712009470d09200941047422074100480d090240024020050d002007102a21060c010b200620054104742007102e21060b2006450d050b200341c0046a200341d0056a10b205200620084104746a220520032903c004370300200541086a200341c0046a41086a2207290300370300200341c0046a202910b205200541186a2007290300370300200520032903c004370310200341c0046a202210b205200541286a2007290300370300200541206a20032903c004370300200341c0046a202110b205200541386a2007290300370300200541306a20032903c004370300200341c0046a202010b205200541c8006a2007290300370300200541c0006a20032903c004370300200341c0046a201f10b205200541d8006a2007290300370300200541d0006a20032903c004370300200341c0046a201e10b205200541e8006a2007290300370300200541e0006a20032903c004370300200341c0046a201d10b205200541f8006a2007290300370300200541f0006a20032903c004370300200341c0046a201c10b20520054188016a200729030037030020054180016a20032903c004370300200341c0046a201b10b20520054198016a200729030037030020054190016a20032903c004370300200341c0046a201a10b205200541a8016a2007290300370300200541a0016a20032903c004370300200341c0046a201910b205200541b8016a2007290300370300200541b0016a20032903c004370300200341c0046a201810b205200541c8016a2007290300370300200541c0016a20032903c004370300200341c0046a201710b205200541d8016a2007290300370300200541d0016a20032903c004370300200341c0046a201610b205200541e8016a2007290300370300200541e0016a20032903c004370300024002402008410f6a22052009460d002009210d200521090c010b200941016a22052009490d09200941017422072005200720054b1b220d41ffffffff0071200d470d09200d41047422054100480d090240024020090d002005102a21060c010b200620094104742005102e21060b2006450d050b200620094104746a220541063a0000200520032900c004370001200541086a202b290000370000200341c0046a20034190016a418c0110db051a4110102a2207450d04200741063a0000200341b0036a200341c0046a418c0110db051a202a2802002205417f4c0d03200e41146a280200212a410121094101210b02402005450d002005102a220b450d050b200b202a200510db05210b0240024020050d004100212a0c010b2005102a2209450d052005212a0b2009200b200510db05210f02402005450d00200b102c0b200341c0046a200341b0036a418c0110db051a200e41216a310000212c200341b0036a200341c0046a418c0110db051a200341c0046a200341b0036a418c0110db051a200341a0026a200341c0046a418c0110db051a4110102a2209450d04200841106a2108202541807e712125200a428080808080804083220a2005ad84202c422886844280808080800c84212c200941063a00002009102c200341b0036a200341a0026a418c0110db051a200341c0046a200341b0036a418c0110db051a024020072d00004109470d0002402007280204220528020441ffffffff0371450d002005280200102c200728020421050b2005102c0b2007102c200341a0026a200341c0046a418c0110db051a200341c0046a200341a0026a418c0110db051a200320253602dc03200320083602d8032003200d3602d403200320063602d003200341003602cc03200342043702c4032003202c3702bc032003202a3602b8032003200f3602b403200341013602b003200341c0046a200341b0036a10fd0420034190016a200341c0046a418c0110db051a200e41286a2024360200200e41246a4101360200024020032d00d0054109470d00024020032802d405220528020441ffffffff0371450d002005280200102c20032802d40521050b2005102c0b024020032d00e0054109470d000240200341d0056a41146a280200220528020441ffffffff0371450d002005280200102c20032802e40521050b2005102c0b024020032d00f0054109470d000240200341d0056a41246a280200220528020441ffffffff0371450d002005280200102c20032802f40521050b2005102c0b024020032d0080064109470d0002402012280200220528020441ffffffff0371450d002005280200102c20032802840621050b2005102c0b024020032d0090064109470d0002402001280200220528020441ffffffff0371450d002005280200102c20032802940621050b2005102c0b024020032d00a0064109470d0002402013280200220528020441ffffffff0371450d002005280200102c20032802a40621050b2005102c0b024020032d00b0064109470d0002402033280200220528020441ffffffff0371450d002005280200102c20032802b40621050b2005102c0b024020032d00c0064109470d0002402036280200220528020441ffffffff0371450d002005280200102c20032802c40621050b2005102c0b024020032d00d0064109470d0002402035280200220528020441ffffffff0371450d002005280200102c20032802d40621050b2005102c0b024020032d00e0064109470d000240202f280200220528020441ffffffff0371450d002005280200102c20032802e40621050b2005102c0b024020032d00f0064109470d0002402030280200220528020441ffffffff0371450d002005280200102c20032802f40621050b2005102c0b024020032d0080074109470d0002402031280200220528020441ffffffff0371450d002005280200102c20032802840721050b2005102c0b024020032d0090074109470d0002402037280200220528020441ffffffff0371450d002005280200102c20032802940721050b2005102c0b024020032d00a0074109470d0002402038280200220528020441ffffffff0371450d002005280200102c20032802a40721050b2005102c0b024020032d00b0074109470d0002402039280200220528020441ffffffff0371450d002005280200102c20032802b40721050b2005102c0b200a4280808080808c0184210a202441016a212420282014470d020c050b0240200e450d00200e417f6a210e200820074102746a4194036a28020021080c010b0b0b41d8fcc5004180011054000b103a000b1033000b02402015450d002023102c0b200341d0056a20034190016a418c0110db051a200341c0046a200341d0056a10fa040240200341c0046a41106a2802002205450d0020032802c8042215200541306c6a21290340024020152d000041786a220541024b0d0002400240024020050e03000102000b201528020c2205450d0220152802042208200541146c6a212403400240200828020c0d002008280210210e202621062027210c0340200641286a2109200641086a210720062f010622254102742105417f210d02400340024020050d002025210d0c020b2007280200210b200d41016a210d200941206a21092005417c6a2105200741046a21070240417f200b200e47200b200e4b1b41016a0e03020001020b0b02402009417c6a280200450d00200820092802003602100c030b41d8fdc50041351054000b200c450d01200c417f6a210c2006200d4102746a4194036a28020021060c000b0b200841146a22082024470d000c030b0b2015280204210b202621092027210e0340200941286a2108200941086a210720092f0106220c4102742105417f210602400340024020050d00200c21060c020b2007280200210d200641016a2106200841206a21082005417c6a2105200741046a21070240417f200d200b47200d200b4b1b41016a0e03020001020b0b02402008417c6a280200450d00201520082802003602040c040b41d8fdc50041351054000b200e450d02200e417f6a210e200920064102746a4194036a28020021090c000b0b201528020c2205450d002015280204222a2005411c6c6a210f03400240202a2802182205450d00202a280210220c20054102746a21280340200c222441046a210c2024280200210b202621092027210e0340200941286a2108200941086a210720092f010622254102742105417f2106024002400340024020050d00202521060c020b2007280200210d200641016a2106200841206a21082005417c6a2105200741046a21070240417f200d200b47200d200b4b1b41016a0e03020001020b0b02402008417c6a280200450d00202420082802003602000c020b41d8fdc50041351054000b200e450d00200e417f6a210e200920064102746a4194036a28020021090c010b0b200c2028470d000b0b202a411c6a222a200f470d000b0b201541306a22152029470d000b0b200341cc046a290200210a20032802c004210520032902c404212c20262027203410b005200041106a200a370200200041086a202c37020020002005360204200041003602002011450d012010102c200424000f0b024020012802102205450d0020012802082103200541306c21050340200310b105200341306a2103200541506a22050d000b0b2001410c6a280200450d002001280208102c0b200424000f0b1035000bfa820204117f017e0b7f017e230041e0006b220324000240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020012d00000e100100021211100f0e0d0b090a06050403010b200141186a2802002104200141146a2802002105200141106a28020021062001410c6a2802002107200141086a2802002108200141046a28020021090240200241046a280200200241086a280200220a460d002002280200210b0c190b200a41016a220b200a490d15200a410174220c200b200c200b4b1b220c4100480d1502400240200a0d00200c102a210b0c010b2002280200200a200c102e210b0b200b450d142002200b360200200241046a200c360200200241086a280200210a0c180b2001410c6a280200210b200141086a2802002105200141046a280200210420012d0001210d02400240200241046a280200200241086a280200220a460d002002280200210c0c010b200a41016a220c200a490d15200a4101742206200c2006200c4b1b22064100480d1502400240200a0d002006102a210c0c010b2002280200200a2006102e210c0b200c450d142002200c360200200241046a2006360200200241086a280200210a0b200241086a2206200a41016a360200200c200a6a200d3a000002400240200241046a280200220c2006280200220a6b200b490d002002280200210c0c010b200a200b6a220d200a490d15200c410174220a200d200a200d4b1b220a4100480d1502400240200c0d00200a102a210c0c010b2002280200200c200a102e210c0b200c450d142002200c360200200241046a200a360200200241086a280200210a0b200241086a200a200b6a360200200c200a6a2004200b10db051a4100210b4101210d024020050d004101210c0c220b2004102c4101210c0c210b2001410c6a2802002106200141086a280200210e200141046a280200210f02400240200241046a280200200241086a280200220a460d002002280200210b0c010b200a41016a220b200a490d14200a410174220c200b200c200b4b1b220c4100480d1402400240200a0d00200c102a210b0c010b2002280200200a200c102e210b0b200b450d132002200b360200200241046a200c360200200241086a280200210a0b200241086a200a41016a360200200b200a6a41013a0000200f20064104746a21104100210c4100210b41002105410121042006210a03400240200b2005470d00200c200b41016a220d200c200d4b1b22054100480d1502400240200c0d002005102a21040c010b2004200b2005102e21040b2004450d140b2004200b6a200a41807f72200a41ff0071200a410776220d1b3a0000200c41026a210c200b41016a210b200d210a200d0d000b024020060d00200f21080c110b200f210a0340200a41106a2108200a2d000d22114105460d11200a2d000c210c200a2802082109200a2802042112200a280200211302402005200b470d00200b41016a220a200b490d15200b410174220d200a200d200a4b1b22054100480d1502400240200b0d002005102a21040c010b2004200b2005102e21040b2004450d140b2004200b6a200c3a0000200b41016a210a200b410174220b41046a2107200b41026a210c2009210b0340200721060240200a2005470d00200a41016a220d200a490d16200c200d200c200d4b1b22054100480d1602400240200a0d002005102a21040c010b2004200a2005102e21040b2004450d150b2004200a6a200b41807f72200b41ff0071200b410776220d1b3a0000200641026a2107200c41026a210c200a41016a210a200d210b200d0d000b0240024020090d00200a210b0c010b4100210c0340200a200c6a210b41fc00210d02400240024002402013200c6a2d00000e050200010305020b41fe00210d0c020b41fd00210d0c010b41ff00210d0b0240200b2005470d00200b41016a2205200b490d1720062005200620054b1b22054100480d1702400240200b0d002005102a21040c010b2004200b2005102e21040b2004450d160b2004200a6a200c6a200d3a0000200641026a21062009200c41016a220c470d000b200a200c6a210b0b02402012450d002013102c0b4100210a024020114104460d0002402005200b470d00200b41016a220a200b490d16200b410174220c200a200c200a4b1b22054100480d1602400240200b0d002005102a21040c010b2004200b2005102e21040b2004450d150b2004200b6a41013a0000200b41016a210b201141077141ff0073210a0b02402005200b470d00200b41016a220c200b490d15200b410174220d200c200d200c4b1b22054100480d1502400240200b0d002005102a21040c010b2004200b2005102e21040b2004450d140b2004200b6a200a3a0000200b41016a210b2008210a20082010470d000c120b0b200141286a2802002113200141246a280200210f200141206a28020021082001411c6a2802002107200141186a2802002110200141146a28020021092001410c6a2902002114200141086a2802002112200141046a280200211102400240200241046a280200200241086a280200220a460d002002280200210b0c010b200a41016a220b200a490d05200a410174220c200b200c200b4b1b220c4100480d0502400240200a0d00200c102a210b0c010b2002280200200a200c102e210b0b200b450d042002200b360200200241046a200c360200200241086a280200210a0b200241086a200a41016a360200200b200a6a41003a0000200341dc006a410036020020034201370254200320023602502014422088a7210d4100210a4100210b2014a72206210c034002400240200a200b460d002003280254210a0c010b200a41016a2204200a490d06200a41017422052004200520044b1b22044100480d0602400240200a0d002004102a210a0c010b2003280254200a2004102e210a0b200a450d05200320043602582003200a3602540b2003200b41016a36025c200a200b6a200c41807f72200c41ff0071200c41077622041b3a00002003280258210a200328025c210b2004210c20040d000b02400240200a200b6b2006490d00200328025421040c010b200b20066a220c200b490d05200a4101742204200c2004200c4b1b220c4100480d0502400240200a0d00200c102a21040c010b2003280254200a200c102e21040b2004450d042003200c36025820032004360254200c210a0b2003200b20066a220c36025c2004200b6a2011200610db051a02402012450d002011102c0b034002400240200a200c460d002003280254210a0c010b200a41016a220b200a490d06200a4101742204200b2004200b4b1b220b4100480d0602400240200a0d00200b102a210a0c010b2003280254200a200b102e210a0b200a450d052003200b3602582003200a3602540b2003200c41016a36025c200a200c6a200d41807f72200d41ff0071200d410776220b1b3a00000240200b450d002003280258210a200328025c210c200b210d0c010b0b4101211202402009450d002007210b0340024002402003280258200328025c220a460d002003280254210c0c010b200a41016a220c200a490d07200a410174220d200c200d200c4b1b220d4100480d0702400240200a0d00200d102a210c0c010b2003280254200a200d102e210c0b200c450d062003200d3602582003200c3602540b2003200a41016a36025c200c200a6a200b41807f72200b41ff0071200b410776220a1b3a0000200a210b200a0d000b024002402003280258220b200328025c220a6b2007490d002003280254210b0c010b200a20076a220c200a490d06200b410174220d200c200d200c4b1b220c4100480d0602400240200b0d00200c102a210b0c010b2003280254200b200c102e210b0b200b450d052003200c3602582003200b3602540b2003200a20076a36025c200b200a6a2009200710db051a410021122010450d002009102c0b200820134104746a21062013210b0340024002402003280258200328025c220a460d002003280254210c0c010b200a41016a220c200a490d06200a410174220d200c200d200c4b1b220d4100480d0602400240200a0d00200d102a210c0c010b2003280254200a200d102e210c0b200c450d052003200d3602582003200c3602540b2003200a41016a36025c200c200a6a200b41807f72200b41ff0071200b410776220a1b3a0000200a210b200a0d000b200821040240024002402013450d00411021072008210403402004220b41106a2104200b280200220c4108460d01200b410c6a2802002102200b41086a280200210a200b280204210b024002400240024002400240024002400240200c0e080001020304050607000b024002402003280258200328025c220c460d002003280254210d0c010b200c41016a220d200c490d11200c4101742205200d2005200d4b1b22054100480d1102400240200c0d002005102a210d0c010b2003280254200c2005102e210d0b200d450d10200320053602582003200d360254200328025c210c0b2003200c41016a36025c200d200c6a41003a00000340024002402003280258200328025c220c460d002003280254210d0c010b200c41016a220d200c490d12200c4101742205200d2005200d4b1b22054100480d1202400240200c0d002005102a210d0c010b2003280254200c2005102e210d0b200d450d11200320053602582003200d360254200328025c210c0b2003200c41016a36025c200d200c6a200b41807f72200b41ff0071200b410776220c1b3a0000200c210b200c0d000b0340024002402003280258200328025c220b460d002003280254210c0c010b200b41016a220c200b490d12200b410174220d200c200d200c4b1b220d4100480d1202400240200b0d00200d102a210c0c010b2003280254200b200d102e210c0b200c450d112003200d3602582003200c360254200328025c210b0b2003200b41016a36025c200c200b6a200a41807f72200a41ff0071200a410776220b1b3a0000200b210a200b0d000c080b0b024002402003280258200328025c220c460d002003280254210d0c010b200c41016a220d200c490d10200c4101742205200d2005200d4b1b22054100480d1002400240200c0d002005102a210d0c010b2003280254200c2005102e210d0b200d450d0f200320053602582003200d360254200328025c210c0b2003200c41016a36025c200d200c6a41013a00000340024002402003280258200328025c220c460d002003280254210d0c010b200c41016a220d200c490d11200c4101742205200d2005200d4b1b22054100480d1102400240200c0d002005102a210d0c010b2003280254200c2005102e210d0b200d450d10200320053602582003200d360254200328025c210c0b2003200c41016a36025c200d200c6a200b41807f72200b41ff0071200b410776220c1b3a0000200c210b200c0d000b0340024002402003280258200328025c220b460d002003280254210c0c010b200b41016a220c200b490d11200b410174220d200c200d200c4b1b220d4100480d1102400240200b0d00200d102a210c0c010b2003280254200b200d102e210c0b200c450d102003200d3602582003200c360254200328025c210b0b2003200b41016a36025c200c200b6a200a41807f72200a41ff0071200a410776220b1b3a0000200b210a200b0d000c070b0b024002402003280258200328025c220c460d002003280254210d0c010b200c41016a220d200c490d0f200c4101742205200d2005200d4b1b22054100480d0f02400240200c0d002005102a210d0c010b2003280254200c2005102e210d0b200d450d0e200320053602582003200d360254200328025c210c0b2003200c41016a36025c200d200c6a41023a00000340024002402003280258200328025c220c460d002003280254210d0c010b200c41016a220d200c490d10200c4101742205200d2005200d4b1b22054100480d1002400240200c0d002005102a210d0c010b2003280254200c2005102e210d0b200d450d0f200320053602582003200d360254200328025c210c0b2003200c41016a36025c200d200c6a200b41807f72200b41ff0071200b410776220c1b3a0000200c210b200c0d000b0340024002402003280258200328025c220b460d002003280254210c0c010b200b41016a220c200b490d10200b410174220d200c200d200c4b1b220d4100480d1002400240200b0d00200d102a210c0c010b2003280254200b200d102e210c0b200c450d0f2003200d3602582003200c360254200328025c210b0b2003200b41016a36025c200c200b6a200a41807f72200a41ff0071200a410776220b1b3a0000200b210a200b0d000c060b0b024002402003280258200328025c220c460d002003280254210d0c010b200c41016a220d200c490d0e200c4101742205200d2005200d4b1b22054100480d0e02400240200c0d002005102a210d0c010b2003280254200c2005102e210d0b200d450d0d200320053602582003200d360254200328025c210c0b2003200c41016a36025c200d200c6a41033a00000340024002402003280258200328025c220c460d002003280254210d0c010b200c41016a220d200c490d0f200c4101742205200d2005200d4b1b22054100480d0f02400240200c0d002005102a210d0c010b2003280254200c2005102e210d0b200d450d0e200320053602582003200d360254200328025c210c0b2003200c41016a36025c200d200c6a200b41807f72200b41ff0071200b410776220c1b3a0000200c210b200c0d000b0340024002402003280258200328025c220b460d002003280254210c0c010b200b41016a220c200b490d0f200b410174220d200c200d200c4b1b220d4100480d0f02400240200b0d00200d102a210c0c010b2003280254200b200d102e210c0b200c450d0e2003200d3602582003200c360254200328025c210b0b2003200b41016a36025c200c200b6a200a41807f72200a41ff0071200a410776220b1b3a0000200b210a200b0d000b20032002200341d0006a10880520032d0000220a411f460d0420032f000120032d000341107472210d0c070b024002402003280258200328025c220c460d002003280254210d0c010b200c41016a220d200c490d0d200c4101742205200d2005200d4b1b22054100480d0d02400240200c0d002005102a210d0c010b2003280254200c2005102e210d0b200d450d0c200320053602582003200d360254200328025c210c0b2003200c41016a36025c200d200c6a41043a00000340024002402003280258200328025c220c460d002003280254210d0c010b200c41016a220d200c490d0e200c4101742205200d2005200d4b1b22054100480d0e02400240200c0d002005102a210d0c010b2003280254200c2005102e210d0b200d450d0d200320053602582003200d360254200328025c210c0b2003200c41016a36025c200d200c6a200b41807f72200b41ff0071200b410776220c1b3a0000200c210b200c0d000b0340024002402003280258200328025c220b460d002003280254210c0c010b200b41016a220c200b490d0e200b410174220d200c200d200c4b1b220d4100480d0e02400240200b0d00200d102a210c0c010b2003280254200b200d102e210c0b200c450d0d2003200d3602582003200c360254200328025c210b0b2003200b41016a36025c200c200b6a200a41807f72200a41ff0071200a410776220b1b3a0000200b210a200b0d000b20032002200341d0006a10880520032d0000220a411f460d0320032f000120032d000341107472210d0c060b024002402003280258200328025c220c460d002003280254210d0c010b200c41016a220d200c490d0c200c4101742205200d2005200d4b1b22054100480d0c02400240200c0d002005102a210d0c010b2003280254200c2005102e210d0b200d450d0b200320053602582003200d360254200328025c210c0b2003200c41016a36025c200d200c6a41053a00000340024002402003280258200328025c220c460d002003280254210d0c010b200c41016a220d200c490d0d200c4101742205200d2005200d4b1b22054100480d0d02400240200c0d002005102a210d0c010b2003280254200c2005102e210d0b200d450d0c200320053602582003200d360254200328025c210c0b2003200c41016a36025c200d200c6a200b41807f72200b41ff0071200b410776220c1b3a0000200c210b200c0d000b0340024002402003280258200328025c220b460d002003280254210c0c010b200b41016a220c200b490d0d200b410174220d200c200d200c4b1b220d4100480d0d02400240200b0d00200d102a210c0c010b2003280254200b200d102e210c0b200c450d0c2003200d3602582003200c360254200328025c210b0b2003200b41016a36025c200c200b6a200a41807f72200a41ff0071200a410776220b1b3a0000200b210a200b0d000b20032002200341d0006a10880520032d0000220a411f460d0220032f000120032d000341107472210d0c050b024002402003280258200328025c220c460d002003280254210d0c010b200c41016a220d200c490d0b200c4101742205200d2005200d4b1b22054100480d0b02400240200c0d002005102a210d0c010b2003280254200c2005102e210d0b200d450d0a200320053602582003200d360254200328025c210c0b2003200c41016a36025c200d200c6a41063a00000340024002402003280258200328025c220c460d002003280254210d0c010b200c41016a220d200c490d0c200c4101742205200d2005200d4b1b22054100480d0c02400240200c0d002005102a210d0c010b2003280254200c2005102e210d0b200d450d0b200320053602582003200d360254200328025c210c0b2003200c41016a36025c200d200c6a200b41807f72200b41ff0071200b410776220c1b3a0000200c210b200c0d000b0340024002402003280258200328025c220b460d002003280254210c0c010b200b41016a220c200b490d0c200b410174220d200c200d200c4b1b220d4100480d0c02400240200b0d00200d102a210c0c010b2003280254200b200d102e210c0b200c450d0b2003200d3602582003200c360254200328025c210b0b2003200b41016a36025c200c200b6a200a41807f72200a41ff0071200a410776220b1b3a0000200b210a200b0d000c020b0b024002402003280258200328025c220c460d002003280254210d0c010b200c41016a220d200c490d0a200c4101742205200d2005200d4b1b22054100480d0a02400240200c0d002005102a210d0c010b2003280254200c2005102e210d0b200d450d09200320053602582003200d360254200328025c210c0b2003200c41016a36025c200d200c6a41073a00000340024002402003280258200328025c220c460d002003280254210d0c010b200c41016a220d200c490d0b200c4101742205200d2005200d4b1b22054100480d0b02400240200c0d002005102a210d0c010b2003280254200c2005102e210d0b200d450d0a200320053602582003200d360254200328025c210c0b2003200c41016a36025c200d200c6a200b41807f72200b41ff0071200b410776220c1b3a0000200c210b200c0d000b0340024002402003280258200328025c220b460d002003280254210c0c010b200b41016a220c200b490d0b200b410174220d200c200d200c4b1b220d4100480d0b02400240200b0d00200d102a210c0c010b2003280254200b200d102e210c0b200c450d0a2003200d3602582003200c360254200328025c210b0b2003200b41016a36025c200c200b6a200a41807f72200a41ff0071200a410776220b1b3a0000200b210a200b0d000b0b200741106a210720042006470d000b200621040b0240034020062004460d012004280200210a200441106a2104200a4108470d000b0b0240200f450d002008102c0b20032802582108200328025421022003280250220441086a210d200441046a2105200328025c2207210b0340024002402005280200200d280200220a460d002004280200210c0c010b200a41016a220c200a490d08200a4101742206200c2006200c4b1b22064100480d0802400240200a0d002006102a210c0c010b2004280200200a2006102e210c0b200c450d072004200c36020020052006360200200d280200210a0b200d200a41016a360200200c200a6a200b41807f72200b41ff0071200b410776220a1b3a0000200a210b200a0d000b02400240200441046a280200220b200441086a280200220a6b2007490d002004280200210b0c010b200a20076a220c200a490d07200b410174220a200c200a200c4b1b220a4100480d0702400240200b0d00200a102a210b0c010b2004280200200b200a102e210b0b200b450d062004200b360200200441046a200a360200200441086a280200210a0b200441086a200a20076a360200200b200a6a2002200710db051a02402008450d002002102c0b410021114101210d2009450d012012450d012010450d012009102c0c010b20032903082114200328020421042013410474210c02400340200c2007460d01200820076a210b200741106a2107200b2802004108470d000b0b0240200f450d002008102c0b02402003280258450d002003280254102c0b02402009450d002012450d002010450d002009102c0b200a411f470d15410021114101210d0b4101210b4101210c410121044101210641012112410121104101210541012107410121024101210841012109410121130c380b2001412c6a280200210e200141286a2802002115200141246a2802002111200141206a28020021162001411c6a2802002117200141186a2802002118200141146a28020021102001410c6a2902002114200141086a2802002119200141046a280200211202400240200241046a280200200241086a280200220a460d002002280200210b0c010b200a41016a220b200a490d04200a410174220c200b200c200b4b1b220c4100480d0402400240200a0d00200c102a210b0c010b2002280200200a200c102e210b0b200b450d032002200b360200200241046a200c360200200241086a280200210a0b4101210d200241086a200a41016a36020041002104200b200a6a41003a00004104102a220f450d02200f41eec2b5ab063600000240024020120d00410021134100211a0c010b410121064100210a410021042014a72205210b034002400240200a2004460d00200a210d2004210a0c010b200a41016a220c200a490d06200a410174220d200c200d200c4b1b220d4100480d0602400240200a0d00200d102a21060c010b2006200a200d102e21060b2006450d050b2006200a6a200b41807f72200b41ff0071200b410776220c1b3a0000200a41016a2104200d210a200c210b200c0d000b02400240200d20046b2005490d00200d21080c010b200420056a220a2004490d05200d410174220b200a200b200a4b1b22084100480d050240200d0d002008102a22060d010c050b2006200d2008102e2206450d040b200620046a2012200510db051a02402019450d002012102c0b4101102a220d450d03200d41003a00004101210a4101210b200420056a2207210c034002400240200a200b460d00200a21040c010b200a41016a220b200a490d06200a4101742204200b2004200b4b1b22044100480d0602400240200a0d002004102a210d0c010b200d200a2004102e210d0b200d450d05200a210b2004210a0b200d200b6a200c41807f72200c41ff0071200c41077622051b3a0000200b41016a210b2005210c20050d000b02402004200b6b20074f0d00200b20076a220a200b490d052004410174220c200a200c200a4b1b220a4100480d050240024020040d00200a102a210d0c010b200d2004200a102e210d0b200d450d04200a21040b200d200b6a2006200710db051a200b20076a21134101211a2008450d002006102c0b0240024002400240024002400240024020100d004101211b0c010b4100211b20034100360240200342013703382003410c6a2017360200200341086a201836020020032010360204200320144220883e0200200341d0006a2003200341386a109305024020032d00502209411f460d0020032f005120032d0053411074722108200341d0006a41086a290300211420032802542116200328023c0d020c030b0240024020042013460d002004210a0c010b200441016a220a2004490d0b2004410174220b200a200b200a4b1b220a4100480d0b0240024020040d00200a102a210d0c010b200d2004200a102e210d0b200d450d0a200421130b200d20136a41013a0000201341016a210b20032802402206210c034002400240200a200b460d00200a21040c010b200a41016a220b200a490d0c200a4101742204200b2004200b4b1b22044100480d0c02400240200a0d002004102a210d0c010b200d200a2004102e210d0b200d450d0b200a210b2004210a0b200d200b6a200c41807f72200c41ff0071200c41077622051b3a0000200b41016a210b2005210c20050d000b2003280238210a02402004200b6b20064f0d00200b20066a220c200b490d0b20044101742205200c2005200c4b1b220c4100480d0b0240024020040d00200c102a210d0c010b200d2004200c102e210d0b200d450d0a200c21040b200d200b6a200a200610db051a0240200328023c450d00200a102c0b200b20066a21134100211b0b0240024020110d00410021050c010b2003410036024020034201370338410121064100210c4100210a2016210b03400240200a200c470d00200c41016a2205200c490d0c200c41017422072005200720054b1b22054100480d0c02400240200c0d002005102a21060c010b2006200c2005102e21060b2006450d0b2003200536023c200320063602382005210c0b2003200a41016a22073602402006200a6a200b41807f72200b41ff0071200b41077622051b3a00002007210a2005210b20050d000b2011200e4104746a210802400240024020160d00201121050c010b20112105200e450d00200841706a211c4100210a2011211d02400340201d210502400340200541046a28020022090d01200a41016a210a2008200541106a2205470d000c050b0b200541106a211d200a41016a211e2016417f6a2116200541086a29020021142005280200211f200328023c210c2003280240210b034002400240200b200c460d00200328023821060c010b200c41016a2206200c490d10200c41017422072006200720064b1b22074100480d1002400240200c0d002007102a21060c010b2003280238200c2007102e21060b2006450d0f2003200736023c200320063602382007210c0b2003200b41016a22073602402006200b6a200a41807f72200a41ff0071200a41077622061b3a00002007210b2006210a20060d000b20032014370308200320093602042003201f360200200341d0006a2003200341386a109305024020032d00502209411f470d002016450d02201e210a201c2005470d010c020b0b20032d0053211d20032f0051211f20032802542116200329035821140240200841706a2005460d00200541106a210503402005220a41106a21050240200a2802042206450d00200a28020821070240200a410c6a280200220a450d00200a410c6c210b2006210a03400240200a280200220c450d00200a41046a280200450d00200c102c0b200a410c6a210a200b41746a220b0d000b0b2007450d002006102c0b20052008470d000b0b201d411074210a02402015450d002011102c0b201f200a72210841012105200328023c450d062003280238102c0c060b200541106a21050b20052008460d0003402005220a41106a21050240200a2802042206450d00200a28020821070240200a410c6a280200220a450d00200a410c6c210b2006210a03400240200a280200220c450d00200a41046a280200450d00200c102c0b200a410c6a210a200b41746a220b0d000b0b2007450d002006102c0b20052008470d000b0b02402015450d002011102c0b0240024020042013460d002004210a0c010b200441016a220a2004490d0b2004410174220b200a200b200a4b1b220a4100480d0b0240024020040d00200a102a210d0c010b200d2004200a102e210d0b200d450d0a200421130b200d20136a41023a0000201341016a210b20032802402206210c034002400240200a200b460d00200a21040c010b200a41016a220b200a490d0c200a4101742204200b2004200b4b1b22044100480d0c02400240200a0d002004102a210d0c010b200d200a2004102e210d0b200d450d0b200a210b2004210a0b200d200b6a200c41807f72200c41ff0071200c41077622051b3a0000200b41016a210b2005210c20050d000b2003280238210a02402004200b6b20064f0d00200b20066a220c200b490d0b20044101742205200c2005200c4b1b220c4100480d0b0240024020040d00200c102a210d0c010b200d2004200c102e210d0b200d450d0a200c21040b200d200b6a200a200610db051a0240200328023c450d00200a102c0b200b20066a2113410121050b0240201a201245720d002019450d002012102c0b02402010450d00201b4101730d0002402017450d002017410c6c210b2010210a03400240200a280200220c450d00200a41046a280200450d00200c102c0b200a410c6a210a200b41746a220b0d000b0b2018450d002010102c0b2005201145720d030240200e450d002011200e4104746a21072011210603402006220541106a210602402005280204220a450d0002402005410c6a280200220b450d00200b410c6c210b03400240200a280200220c450d00200a41046a280200450d00200c102c0b200a410c6a210a200b41746a220b0d000b0b200541086a280200450d002005280204102c0b20062007470d000b0b2015450d032011102c0c030b2003280238102c0b410021050b0240201a201245720d002019450d002012102c0b02402010450d00201b4101730d0002402017450d002017410c6c210b2010210a03400240200a280200220c450d00200a41046a280200450d00200c102c0b200a410c6a210a200b41746a220b0d000b0b2018450d002010102c0b02402005201145720d000240200e450d002011200e4104746a21072011210603402006220541106a210602402005280204220a450d0002402005410c6a280200220b450d00200b410c6c210b03400240200a280200220c450d00200a41046a280200450d00200c102c0b200a410c6a210a200b41746a220b0d000b0b200541086a280200450d002005280204102c0b20062007470d000b0b2015450d002011102c0b2009411f460d002008410874200972210a02402004450d00200d102c0b2000200a360200200041086a2014370200200041046a2016360200200f102c0c010b200341146a2013360200200341106a20043602002003200d36020c20034284808080c0003702042003200f360200200341d0006a20032002109405200320032900513703382003200341d0006a41086a29000037003f20032d0050220a411f460d012000200a3a000020002003290338370001200041086a200329003f3700000b410021084101210d4101210c410121044101210541012106410121074101210b41012102410121090c1d0b410021134101210d4101210b4101210c4101210441012106410121124101211041012105410121074101210241012108410121090c360b2001410c6a2802002105200141086a2802002107200141046a280200210602400240200241046a280200200241086a280200220a460d002002280200210b0c010b200a41016a220b200a490d03200a410174220c200b200c200b4b1b220c4100480d0302400240200a0d00200c102a210b0c010b2002280200200a200c102e210b0b200b450d022002200b360200200241046a200c360200200241086a280200210a0b200241086a200a41016a360200200b200a6a410b3a0000200341c4006a41003602002003420137023c2003200236023820062005411c6c6a21114100210a4100210b2005210c034002400240200a200b460d00200328023c210a0c010b200a41016a220d200a490d04200a4101742204200d2004200d4b1b220d4100480d0402400240200a0d00200d102a210a0c010b200328023c200a200d102e210a0b200a450d032003200d3602402003200a36023c0b2003200b41016a360244200a200b6a200c41807f72200c41ff0071200c410776220c1b3a00000240200c450d002003280240210a2003280244210b200c210c0c010b0b2003201136025c20032006360258200320073602542003200636025002402005450d00034020032006220a411c6a2206360258200a2802102207450d01200a410c6a2802002102200a41086a2802002108200a2802042105200a41146a2902002114200a280200210b03400240024020032802402003280244220a460d00200328023c210c0c010b200a41016a220c200a490d06200a410174220d200c200d200c4b1b220d4100480d0602400240200a0d00200d102a210c0c010b200328023c200a200d102e210c0b200c450d052003200d3602402003200c36023c2003280244210a0b2003200a41016a360244200c200a6a200b41807f72200b41ff0071200b410776220a1b3a0000200a210b200a0d000b0240024002400240024020050d00410121130c010b200320023602302003200836022c200320053602282003200341286a200341386a10850520032d0000220a411f470d01410021130b2014a721092014422088a72204210b03400240024020032802402003280244220a460d00200328023c210c0c010b200a41016a220c200a490d09200a410174220d200c200d200c4b1b220d4100480d0902400240200a0d00200d102a210c0c010b200328023c200a200d102e210c0b200c450d082003200d3602402003200c36023c2003280244210a0b2003200a41016a360244200c200a6a200b41807f72200b41ff0071200b410776220a1b3a0000200a210b200a0d000b024002402003280240220b2003280244220a6b2004490d00200328023c210b0c010b200a20046a220c200a490d08200b410174220a200c200a200c4b1b220a4100480d0802400240200b0d00200a102a210b0c010b200328023c200b200a102e210b0b200b450d072003200a3602402003200b36023c2003280244210a0b2003200a20046a360244200b200a6a2007200410db051a02402009450d002007102c0b2005450d0220130d010c020b20032d0003411074210b20032f0001210c200329030821202003280204210d02402014a7450d002007102c0b200c200b72210b200341d0006a10950502402003280240450d00200328023c102c0b2000200b3b00012000200a3a0000200041036a200b4110763a0000200041086a2020370000200041046a200d360000410021024101210d4101210c410121044101210541012106410121074101210b0c1e0b02402002450d002002410474210b2005210a03400240200a2d00004109470d000240200a41046a220d280200220c28020441ffffffff0371450d00200c280200102c200d280200210c0b200c102c0b200a41106a210a200b41706a220b0d000b0b2008450d002005102c0b20062011470d000b0b200341d0006a10950520032802402108200328023c21022003280238220441086a210d200441046a210520032802442207210b0340024002402005280200200d280200220a460d002004280200210c0c010b200a41016a220c200a490d04200a4101742206200c2006200c4b1b22064100480d0402400240200a0d002006102a210c0c010b2004280200200a2006102e210c0b200c450d032004200c36020020052006360200200d280200210a0b200d200a41016a360200200c200a6a200b41807f72200b41ff0071200b410776220a1b3a0000200a210b200a0d000b02400240200441046a280200220b200441086a280200220a6b2007490d002004280200210b0c010b200a20076a220c200a490d03200b410174220a200c200a200c4b1b220a4100480d0302400240200b0d00200a102a210b0c010b2004280200200b200a102e210b0b200b450d022004200b360200200441046a200a360200200441086a280200210a0b200441086a200a20076a360200200b200a6a2002200710db051a02402008450d002002102c0b410021094101210d4101210b4101210c4101210441012106410121124101211041012105410121074101210241012108410121130c350b2001410c6a2802002106200141086a2802002107200141046a280200210d02400240200241046a280200200241086a280200220a460d002002280200210b0c010b200a41016a220b200a490d10200a410174220c200b200c200b4b1b220c4100480d1002400240200a0d00200c102a210b0c010b2002280200200a200c102e210b0b200b450d0f2002200b360200200241046a200c360200200241086a280200210a0b200241086a200a41016a360200200b200a6a410a3a0000200341246a41003602002003420137021c20032002360218200d200641186c6a210f4100210a4100210b2006210c034002400240200a200b460d00200328021c210a0c010b200a41016a2204200a490d11200a41017422052004200520044b1b22044100480d1102400240200a0d002004102a210a0c010b200328021c200a2004102e210a0b200a450d10200320043602202003200a36021c0b2003200b41016a360224200a200b6a200c41807f72200c41ff0071200c410776220c1b3a00000240200c450d002003280220210a2003280224210b200c210c0c010b0b2003200f3602342003200d3602302003200736022c2003200d36022802402006450d0020034101722102200341026a210703402003200d41186a2213360230200d2802002208450d01200d41146a2802002111200d41106a2802002110200d28020c2109200d280208210c200d28020421124100210b200341003602442003420137023c2008200c4103746a21062003200341186a3602384100210a034002400240200b200a460d00200328023c210b0c010b200b41016a220a200b490d13200b410174220d200a200d200a4b1b220a4100480d1302400240200b0d00200a102a210b0c010b200328023c200b200a102e210b0b200b450d122003200a3602402003200b36023c2003280244210a0b2003200a41016a360244200b200a6a200c41807f72200c41ff0071200c410776220c1b3a00000240200c450d002003280240210b2003280244210a200c210c0c010b0b0240024020062008470d00200821040c010b2008210a0340200a41086a2104200a2902002214422088a7220a41ff01714104460d01200a41187441187521052014a7210b03400240024020032802402003280244220a460d00200328023c210c0c010b200a41016a220c200a490d07200a410174220d200c200d200c4b1b220d4100480d0702400240200a0d00200d102a210c0c010b200328023c200a200d102e210c0b200c450d142003200d3602402003200c36023c2003280244210a0b2003200a41016a360244200c200a6a200b41807f72200b41ff0071200b410776220a1b3a0000200a210b200a0d000b0240024020032802402003280244220a460d00200328023c210b0c010b200a41016a220b200a490d06200a410174220c200b200c200b4b1b220c4100480d0602400240200a0d00200c102a210b0c010b200328023c200a200c102e210b0b200b450d052003200c3602402003200b36023c2003280244210a0b2003200a41016a360244200b200a6a2005417f73220a413f7141c00072200a2005417f4a1b3a00002004210a20042006470d000b200621040b0240034020062004460d0120042d0004210a200441086a2104200a4104470d000b0b02402012450d002008102c0b20092011410474220a6a210c024002400240024020110d002009210a0c010b200a41706a210d2009210a0340200a2d0000210b2007200a41036a2d00003a00002003200a41016a2f00003b01000240200b41ac01470d00200a41106a210a0c020b200341cc006a41026a20072d000022043a0000200320032f010022053b014c200a41046a2802002106200a41086a2903002114200220053b0000200241026a20043a00002003200b3a00002003201437030820032006360204200341d0006a2003200341386a108d05024020032d00502204411f46220b450d00200d41706a210d200a41106a220a200c470d010c030b0b20032d0053210520032f0051210620032802542108200329035821140240200d450d00200a41106a210a034002400240200a2d0000220d4109460d00200d41ac01470d010c030b0240200a41046a280200220d28020441ffffffff0371450d00200d280200102c0b200d102c0b200a41106a220a200c470d000b0b02402010450d002009102c0b02402003280240450d00200328023c102c0b200b0d022006200541107472210a200341286a10960502402003280220450d00200328021c102c0b2000200a3b0001200020043a0000200041036a200a4110763a0000200041086a2014370000200041046a20083600004100210b4101210d4101210c410121044101210541012106410121070c1d0b200a200c460d00034002400240200a2d0000220b4109460d00200b41ac01470d010c030b0240200a41046a280200220b28020441ffffffff0371450d00200b280200102c0b200b102c0b200a41106a220a200c470d000b0b02402010450d002009102c0b20032802402111200328023c21092003280238210c20032802442208210b034002400240200c41086a2205280200200c410c6a2204280200220a460d00200c280204210d0c010b200a41016a220d200a490d06200a4101742206200d2006200d4b1b22064100480d0602400240200a0d002006102a210d0c010b200c280204200a2006102e210d0b200d450d05200c200d360204200520063602002004280200210a0b2004200a41016a360200200d200a6a200b41807f72200b41ff0071200b410776220a1b3a0000200a210b200a0d000b024002402005280200220b2004280200220a6b2008490d00200c280204210b0c010b200a20086a220d200a490d05200b410174220a200d200a200d4b1b220a4100480d0502400240200b0d00200a102a210b0c010b200c280204200b200a102e210b0b200b450d04200c200b3602042005200a3602002004280200210a0b2004200a20086a360200200b200a6a2009200810db051a2011450d002009102c0b2013210d2013200f470d000b0b200341286a10960520032802202108200328021c21022003280218220441086a210d200441046a210520032802242207210b0340024002402005280200200d280200220a460d002004280200210c0c010b200a41016a220c200a490d03200a4101742206200c2006200c4b1b22064100480d0302400240200a0d002006102a210c0c010b2004280200200a2006102e210c0b200c450d022004200c36020020052006360200200d280200210a0b200d200a41016a360200200c200a6a200b41807f72200b41ff0071200b410776220a1b3a0000200a210b200a0d000b02400240200441046a280200220b200441086a280200220a6b2007490d002004280200210b0c010b200a20076a220c200a490d02200b410174220a200c200a200c4b1b220a4100480d0202400240200b0d00200a102a210b0c010b2004280200200b200a102e210b0b200b450d012004200b360200200441046a200a360200200441086a280200210a0b200441086a200a20076a360200200b200a6a2002200710db051a02402008450d002002102c0b410021084101210d4101210b4101210c410121044101210641012112410121104101210541012107410121020c240b1033000b1035000b2001410c6a2802002105200141086a2802002106200141046a280200210802400240200241046a280200200241086a280200220a460d002002280200210b0c010b200a41016a220b200a490d0d200a410174220c200b200c200b4b1b220c4100480d0d02400240200a0d00200c102a210b0c010b2002280200200a200c102e210b0b200b450d0c2002200b360200200241046a200c360200200241086a280200210a0b200241086a200a41016a360200200b200a6a41093a0000200341c4006a41003602002003420137023c2003200236023820082005411c6c6a21124100210a4100210b2005210c034002400240200a200b460d00200328023c210a0c010b200a41016a220d200a490d0e200a4101742204200d2004200d4b1b220d4100480d0e02400240200a0d00200d102a210a0c010b200328023c200a200d102e210a0b200a450d0d2003200d3602402003200a36023c0b2003200b41016a360244200a200b6a200c41807f72200c41ff0071200c410776220c1b3a00000240200c450d002003280240210a2003280244210b200c210c0c010b0b2003201236025c20032008360258200320063602542003200836025002402005450d00034020032008220a411c6a2208360258200a2802102206450d01200a410c6a2802002102200a41086a2802002109200a2802042107200a41146a2902002114200a280200210b03400240024020032802402003280244220a460d00200328023c210c0c010b200a41016a220c200a490d10200a410174220d200c200d200c4b1b220d4100480d1002400240200a0d00200d102a210c0c010b200328023c200a200d102e210c0b200c450d0f2003200d3602402003200c36023c2003280244210a0b2003200a41016a360244200c200a6a200b41807f72200b41ff0071200b410776220a1b3a0000200a210b200a0d000b0240024002400240024020070d00410121110c010b200320023602302003200936022c200320073602282003200341286a200341386a10850520032d0000220a411f470d01410021110b20062014422088a7220b4102746a21052014a7211303400240024020032802402003280244220a460d00200328023c210c0c010b200a41016a220c200a490d13200a410174220d200c200d200c4b1b220d4100480d1302400240200a0d00200d102a210c0c010b200328023c200a200d102e210c0b200c450d122003200d3602402003200c36023c2003280244210a0b2003200a41016a360244200c200a6a200b41807f72200b41ff0071200b410776220a1b3a0000200a210b200a0d000b024020052006460d002006210403402004280200210b03400240024020032802402003280244220a460d00200328023c210c0c010b200a41016a220c200a490d15200a410174220d200c200d200c4b1b220d4100480d1502400240200a0d00200d102a210c0c010b200328023c200a200d102e210c0b200c450d142003200d3602402003200c36023c2003280244210a0b2003200a41016a360244200c200a6a200b41807f72200b41ff0071200b410776220a1b3a0000200a210b200a0d000b200441046a22042005470d000b0b02402013450d002006102c0b2007450d0220110d010c020b20032d0003411074210b20032f0001210c200329030821202003280204210d02402014a7450d002006102c0b200c200b72210b200341d0006a10970502402003280240450d00200328023c102c0b2000200b3b00012000200a3a0000200041036a200b4110763a0000200041086a2020370000200041046a200d360000410021074101210d4101210c4101210441012105410121060c180b02402002450d002002410474210b2007210a03400240200a2d00004109470d000240200a41046a220d280200220c28020441ffffffff0371450d00200c280200102c200d280200210c0b200c102c0b200a41106a210a200b41706a220b0d000b0b2009450d002007102c0b20082012470d000b0b200341d0006a10970520032802402108200328023c21022003280238220441086a210d200441046a210520032802442207210b0340024002402005280200200d280200220a460d002004280200210c0c010b200a41016a220c200a490d0e200a4101742206200c2006200c4b1b22064100480d0e02400240200a0d002006102a210c0c010b2004280200200a2006102e210c0b200c450d0d2004200c36020020052006360200200d280200210a0b200d200a41016a360200200c200a6a200b41807f72200b41ff0071200b410776220a1b3a0000200a210b200a0d000b02400240200441046a280200220b200441086a280200220a6b2007490d002004280200210b0c010b200a20076a220c200a490d0d200b410174220a200c200a200c4b1b220a4100480d0d02400240200b0d00200a102a210b0c010b2004280200200b200a102e210b0b200b450d0c2004200b360200200441046a200a360200200441086a280200210a0b200441086a200a20076a360200200b200a6a2002200710db051a02402008450d002002102c0b410021024101210d4101210b4101210c4101210441012106410121124101211041012105410121070c200b200141046a280200210a02400240200241046a280200200241086a280200220b460d002002280200210c0c010b200b41016a220c200b490d0c200b410174220d200c200d200c4b1b220d4100480d0c02400240200b0d00200d102a210c0c010b2002280200200b200d102e210c0b200c450d0b2002200c360200200241046a200d360200200241086a280200210b0b200241086a200b41016a360200200c200b6a410c3a00004100210c4100210b410021064101210503400240200b2006470d00200c200b41016a220d200c200d4b1b22064100480d0d02400240200c0d002006102a21050c010b2005200b2006102e21050b2005450d0c0b2005200b6a200a41807f72200a41ff0071200a410776220d1b3a0000200c41026a210c200b41016a210b200d210a200d0d000b200b417f6a2109200241086a2104200241046a2107200b210c03400240024020072802002004280200220a460d002002280200210d0c010b200a41016a220d200a490d0d200a4101742208200d2008200d4b1b22084100480d0d02400240200a0d002008102a210d0c010b2002280200200a2008102e210d0b200d450d0c2002200d360200200720083602002004280200210a0b2004200a41016a360200200d200a6a200c41807f72200c41ff0071200c410776220a1b3a0000200a210c200a0d000b02400240200241046a280200220c200241086a280200220a6b20094d0d002002280200210c0c010b200a200b6a220d200a490d0c200c410174220a200d200a200d4b1b220a4100480d0c02400240200c0d00200a102a210c0c010b2002280200200c200a102e210c0b200c450d0b2002200c360200200241046a200a360200200241086a280200210a0b200241086a200a200b6a360200200c200a6a2005200b10db051a4101210d2006450d012005102c0c010b200141046a280200210a02400240200241046a280200200241086a280200220b460d002002280200210c0c010b200b41016a220c200b490d0b200b410174220d200c200d200c4b1b220d4100480d0b02400240200b0d00200d102a210c0c010b2002280200200b200d102e210c0b200c450d0a2002200c360200200241046a200d360200200241086a280200210b0b200241086a200b41016a360200200c200b6a41083a00004100210c4100210b410021064101210503400240200b2006470d00200c200b41016a220d200c200d4b1b22064100480d0c02400240200c0d002006102a21050c010b2005200b2006102e21050b2005450d0b0b2005200b6a200a41807f72200a41ff0071200a410776220d1b3a0000200c41026a210c200b41016a210b200d210a200d0d000b200b417f6a2109200241086a2104200241046a2107200b210c03400240024020072802002004280200220a460d002002280200210d0c010b200a41016a220d200a490d0c200a4101742208200d2008200d4b1b22084100480d0c02400240200a0d002008102a210d0c010b2002280200200a2008102e210d0b200d450d0b2002200d360200200720083602002004280200210a0b2004200a41016a360200200d200a6a200c41807f72200c41ff0071200c410776220a1b3a0000200a210c200a0d000b02400240200241046a280200220c200241086a280200220a6b20094d0d002002280200210c0c010b200a200b6a220d200a490d0b200c410174220a200d200a200d4b1b220a4100480d0b02400240200c0d00200a102a210c0c010b2002280200200c200a102e210c0b200c450d0a2002200c360200200241046a200a360200200241086a280200210a0b200241086a200a200b6a360200200c200a6a2005200b10db051a4101210d2006450d002005102c0b4101210b4101210c0c160b2001410c6a2802002106200141086a280200210f200141046a280200211002400240200241046a280200200241086a280200220a460d002002280200210b0c010b200a41016a220b200a490d09200a410174220c200b200c200b4b1b220c4100480d0902400240200a0d00200c102a210b0c010b2002280200200a200c102e210b0b200b450d082002200b360200200241046a200c360200200241086a280200210a0b200241086a200a41016a360200200b200a6a41073a00002010200641146c6a2112410021044100210a4100210c4101210b2006210d03400240200a200c470d002004200a41016a220c2004200c4b1b220c4100480d0a0240024020040d00200c102a210b0c010b200b200a200c102e210b0b200b450d090b200b200a6a200d41807f72200d41ff0071200d41077622051b3a0000200441026a2104200a41016a210a2005210d20050d000b02400240024020060d00201021080c010b201021040340200441146a2108200428020c22134104460d012004280204211120042802002109200a4101742105200441106a280200210d20042802082207210403400240200a200c470d00200a41016a220c200a490d0d2005200c2005200c4b1b220c4100480d0d02400240200a0d00200c102a210b0c010b200b200a200c102e210b0b200b450d0c0b200b200a6a200441807f72200441ff0071200441077622061b3a0000200541026a2105200a41016a210a2006210420060d000b02400240200c200a6b2007490d00200c21040c010b200a20076a2204200a490d0c200c41017422052004200520044b1b22044100480d0c02400240200c0d002004102a210b0c010b200b200c2004102e210b0b200b450d0b0b200b200a6a2009200710db051a200720046b200a6a210c02402011450d002009102c0b02400240200c450d002004210c0c010b200441016a220c2004490d0c20044101742205200c2005200c4b1b220c4100480d0c0240024020040d00200c102a210b0c010b200b2004200c102e210b0b200b450d0b0b200b20076a200a6a20133a00002007200a6a41016a210a03400240200a200c470d00200a41016a220c200a490d0d200a4101742204200c2004200c4b1b220c4100480d0d02400240200a0d00200c102a210b0c010b200b200a200c102e210b0b200b450d0c0b200b200a6a200d41807f72200d41ff0071200d41077622041b3a0000200a41016a210a2004210d20040d000b2008210420082012470d000c020b0b20082012460d0003402008410c6a2802004104460d010240200841046a280200450d002008280200102c0b200841146a22082012470d000b0b0240200f450d002010102c0b200241086a2106200241046a2107200a210403400240024020072802002006280200220d460d00200228020021050c010b200d41016a2205200d490d0a200d41017422082005200820054b1b22084100480d0a02400240200d0d002008102a21050c010b2002280200200d2008102e21050b2005450d0920022005360200200720083602002006280200210d0b2006200d41016a3602002005200d6a200441807f72200441ff00712004410776220d1b3a0000200d2104200d0d000b02400240200241046a2802002204200241086a280200220d6b200a490d00200228020021040c010b200d200a6a2205200d490d092004410174220d2005200d20054b1b220d4100480d090240024020040d00200d102a21040c010b20022802002004200d102e21040b2004450d0820022004360200200241046a200d360200200241086a280200210d0b200241086a200d200a6a3602002004200d6a200b200a10db051a410021074101210d0240200c450d00200b102c0b4101210b4101210c41012104410121064101211241012110410121050c1b0b2001410c6a2802002105200141086a2802002112200141046a280200210802400240200241046a280200200241086a280200220a460d002002280200210b0c010b200a41016a220b200a490d08200a410174220c200b200c200b4b1b220c4100480d0802400240200a0d00200c102a210b0c010b2002280200200a200c102e210b0b200b450d072002200b360200200241046a200c360200200241086a280200210a0b200241086a200a41016a360200200b200a6a41063a0000200341dc006a41003602002003420137025420032002360250200820054104746a21134100210a4100210b2005210c034002400240200a200b460d002003280254210a0c010b200a41016a220d200a490d09200a4101742204200d2004200d4b1b220d4100480d0902400240200a0d00200d102a210a0c010b2003280254200a200d102e210a0b200a450d082003200d3602582003200a3602540b2003200b41016a36025c200a200b6a200c41807f72200c41ff0071200c410776220c1b3a00000240200c450d002003280258210a200328025c210b200c210c0c010b0b20082104024002402005450d00200541047421114100210c034002402008200c6a220b410d6a2d000022044102470d00200b41106a21040c020b200b2802002105200b41086a2802002106200b41046a2802002107200b410c6a2d00002102024002402003280258200328025c220a460d002003280254210d0c010b200a41016a220d200a490d0b200a4101742209200d2009200d4b1b22094100480d0b02400240200a0d002009102a210d0c010b2003280254200a2009102e210d0b200d450d0a200320093602582003200d360254200328025c210a0b2003200a41016a36025c200d200a6a200241ff00733a0000024002402003280258200328025c220a460d002003280254210d0c010b200a41016a220d200a490d0b200a4101742202200d2002200d4b1b22024100480d0b02400240200a0d002002102a210d0c010b2003280254200a2002102e210d0b200d450d0a200320023602582003200d360254200328025c210a0b2003200a41016a36025c200d200a6a20043a0000200320063602402003200736023c200320053602382003200341386a200341d0006a108505024020032d00002205411f470d002011200c41106a220c470d010c030b0b20032d0003210220032f0001210920032802042111200329030821140240200b41106a2013460d00200b41106a210403402004410d6a2d00004102460d01200428020421072004280200210602402004280208220a450d00200a410474210b2006210a03400240200a2d00004109470d000240200a41046a220d280200220c28020441ffffffff0371450d00200c280200102c200d280200210c0b200c102c0b200a41106a210a200b41706a220b0d000b0b200441106a210402402007450d002006102c0b20042013470d000b0b2002411074210a02402012450d002008102c0b2009200a72210a02402003280258450d002003280254102c0b2000200a3b0001200020053a0000200041036a200a4110763a0000200041086a2014370000200041046a2011360000410021064101210d4101210c41012104410121050c100b20042013460d0003402004410d6a2d00004102460d01200428020421062004280200210502402004280208220a450d00200a410474210b2005210a03400240200a2d00004109470d000240200a41046a220d280200220c28020441ffffffff0371450d00200c280200102c200d280200210c0b200c102c0b200a41106a210a200b41706a220b0d000b0b200441106a210402402006450d002005102c0b20042013470d000b0b02402012450d002008102c0b20032802582108200328025421022003280250220441086a210d200441046a2105200328025c2207210b0340024002402005280200200d280200220a460d002004280200210c0c010b200a41016a220c200a490d09200a4101742206200c2006200c4b1b22064100480d0902400240200a0d002006102a210c0c010b2004280200200a2006102e210c0b200c450d082004200c36020020052006360200200d280200210a0b200d200a41016a360200200c200a6a200b41807f72200b41ff0071200b410776220a1b3a0000200a210b200a0d000b02400240200441046a280200220b200441086a280200220a6b2007490d002004280200210b0c010b200a20076a220c200a490d08200b410174220a200c200a200c4b1b220a4100480d0802400240200b0d00200a102a210b0c010b2004280200200b200a102e210b0b200b450d072004200b360200200441046a200a360200200441086a280200210a0b200441086a200a20076a360200200b200a6a2002200710db051a02402008450d002002102c0b410021054101210d4101210b4101210c410121044101210641012112410121100c190b2001410c6a2802002107200141086a2802002108200141046a280200210602400240200241046a280200200241086a280200220a460d002002280200210b0c010b200a41016a220b200a490d07200a410174220c200b200c200b4b1b220c4100480d0702400240200a0d00200c102a210b0c010b2002280200200a200c102e210b0b200b450d062002200b360200200241046a200c360200200241086a280200210a0b200241086a200a41016a360200200b200a6a41053a0000200341d0006a410c6a4100360200200342013702542003200236025020062007410c6c6a2102410121054100210a4100210b2007210c034002400240200b200a460d00200a21040c010b200a41016a220d200a490d08200a4101742204200d2004200d4b1b22044100480d0802400240200a0d002004102a21050c010b2005200a2004102e21050b2005450d070b2005200b6a200c41807f72200c41ff0071200c410776220d1b3a0000200b41016a210b2004210a200d210c200d0d000b200320043602582003200b36025c200320053602542006210a02402007450d002007410c6c210d4100210b034002402006200b6a220a41046a280200220c4102470d00200a410c6a210a0c020b2003200a280200200c200a41086a280200200341d0006a109005024020032d00002204411f460d0020032f000120032d00034110747221052003290308211420032802042107200a410c6a210c200d200b6b41746a210a02400340200a450d01200a41746a210a200c280204210b200c410c6a210c200b4102470d000b0b02402008450d002006102c0b02402003280258450d002003280254102c0b200020053b0001200020043a0000200041036a20054110763a0000200041086a2014370000200041046a2007360000410021054101210d4101210c410121040c0f0b200d200b410c6a220b470d000b2002210a0b200a410020076b410c6c6a210b024003402006200b460d01200b410c6a210b200a280204210c200a410c6a210a200c4102470d000b0b02402008450d002006102c0b20032802582108200328025421022003280250220441086a210d200441046a2105200328025c2207210b0340024002402005280200200d280200220a460d002004280200210c0c010b200a41016a220c200a490d08200a4101742206200c2006200c4b1b22064100480d0802400240200a0d002006102a210c0c010b2004280200200a2006102e210c0b200c450d072004200c36020020052006360200200d280200210a0b200d200a41016a360200200c200a6a200b41807f72200b41ff0071200b410776220a1b3a0000200a210b200a0d000b02400240200441046a280200220b200441086a280200220a6b2007490d002004280200210b0c010b200a20076a220c200a490d07200b410174220a200c200a200c4b1b220a4100480d0702400240200b0d00200a102a210b0c010b2004280200200b200a102e210b0b200b450d062004200b360200200441046a200a360200200441086a280200210a0b200441086a200a20076a360200200b200a6a2002200710db051a02402008450d002002102c0b410021104101210d4101210b4101210c4101210441012106410121120c170b2001410c6a2802002109200141086a2802002113200141046a280200210602400240200241046a280200200241086a280200220a460d002002280200210b0c010b200a41016a220b200a490d06200a410174220c200b200c200b4b1b220c4100480d0602400240200a0d00200c102a210b0c010b2002280200200a200c102e210b0b200b450d052002200b360200200241046a200c360200200241086a280200210a0b200241086a200a41016a360200200b200a6a41043a0000200341d0006a410c6a4100360200200342013702542003200236025020062009410c6c6a2111410121054100210a4100210b2009210c034002400240200b200a460d00200a21040c010b200a41016a220d200a490d07200a4101742204200d2004200d4b1b22044100480d0702400240200a0d002004102a21050c010b2005200a2004102e21050b2005450d060b2005200b6a200c41807f72200c41ff0071200c410776220d1b3a0000200b41016a210b2004210a200d210c200d0d000b200320043602582003200b36025c200320053602542006210a02402009450d002009410c6c21084100210c034002402006200c6a220b41046a28020022044102470d00200b410c6a210a0c020b200b2802002105200b41086a2802002107024002402003280258200328025c220a460d002003280254210d0c010b200a41016a220d200a490d08200a4101742202200d2002200d4b1b22024100480d0802400240200a0d002002102a210d0c010b2003280254200a2002102e210d0b200d450d07200320023602582003200d3602540b2003200a41016a36025c200d200a6a41f0003a00002003200520042007200341d0006a109005024020032d0000220d411f460d0020032f000120032d00034110747221042003290308211420032802042105200b410c6a210b2008200c6b41746a210a02400340200a450d01200a41746a210a200b280204210c200b410c6a210b200c4102470d000b0b02402013450d002006102c0b02402003280258450d002003280254102c0b200020043b00012000200d3a0000200041036a20044110763a0000200041086a2014370000200041046a2005360000410021044101210d4101210c0c0d0b2008200c410c6a220c470d000b2011210a0b200a410020096b410c6c6a210b024003402006200b460d01200b410c6a210b200a280204210c200a410c6a210a200c4102470d000b0b02402013450d002006102c0b20032802582108200328025421022003280250220441086a210d200441046a2105200328025c2207210b0340024002402005280200200d280200220a460d002004280200210c0c010b200a41016a220c200a490d07200a4101742206200c2006200c4b1b22064100480d0702400240200a0d002006102a210c0c010b2004280200200a2006102e210c0b200c450d062004200c36020020052006360200200d280200210a0b200d200a41016a360200200c200a6a200b41807f72200b41ff0071200b410776220a1b3a0000200a210b200a0d000b02400240200441046a280200220b200441086a280200220a6b2007490d002004280200210b0c010b200a20076a220c200a490d06200b410174220a200c200a200c4b1b220a4100480d0602400240200b0d00200a102a210b0c010b2004280200200b200a102e210b0b200b450d052004200b360200200441046a200a360200200441086a280200210a0b200441086a200a20076a360200200b200a6a2002200710db051a02402008450d002002102c0b410021124101210d4101210b4101210c41012104410121060c150b2001410c6a2802002106200141086a2802002109200141046a280200210802400240200241046a280200200241086a280200220a460d002002280200210b0c010b200a41016a220b200a490d05200a410174220c200b200c200b4b1b220c4100480d0502400240200a0d00200c102a210b0c010b2002280200200a200c102e210b0b200b450d042002200b360200200241046a200c360200200241086a280200210a0b200241086a200a41016a360200200b200a6a41033a0000200820064102746a21074100210c4100210a41002105410121042006210b03400240200a2005470d00200c200a41016a220d200c200d4b1b22054100480d0602400240200c0d002005102a21040c010b2004200a2005102e21040b2004450d050b2004200a6a200b41807f72200b41ff0071200b410776220d1b3a0000200c41026a210c200a41016a210a200d210b200d0d000b02402006450d00200821060340200a410174210c2006280200210b03400240200a2005470d00200a41016a220d200a490d08200c200d200c200d4b1b22054100480d0802400240200a0d002005102a21040c010b2004200a2005102e21040b2004450d070b2004200a6a200b41807f72200b41ff0071200b410776220d1b3a0000200c41026a210c200a41016a210a200d210b200d0d000b200641046a22062007470d000b0b02402009450d002008102c0b200241086a2106200241046a2107200a210c03400240024020072802002006280200220b460d002002280200210d0c010b200b41016a220d200b490d06200b4101742208200d2008200d4b1b22084100480d0602400240200b0d002008102a210d0c010b2002280200200b2008102e210d0b200d450d052002200d360200200720083602002006280200210b0b2006200b41016a360200200d200b6a200c41807f72200c41ff0071200c410776220b1b3a0000200b210c200b0d000b02400240200241046a280200220c200241086a280200220b6b200a490d002002280200210c0c010b200b200a6a220d200b490d05200c410174220b200d200b200d4b1b220b4100480d0502400240200c0d00200b102a210c0c010b2002280200200c200b102e210c0b200c450d042002200c360200200241046a200b360200200241086a280200210b0b200241086a200b200a6a360200200c200b6a2004200a10db051a410021064101210d02402005450d002004102c0b4101210b4101210c410121040c130b2001410c6a2802002106200141086a280200210e200141046a280200210f02400240200241046a280200200241086a280200220a460d002002280200210b0c010b200a41016a220b200a490d04200a410174220c200b200c200b4b1b220c4100480d0402400240200a0d00200c102a210b0c010b2002280200200a200c102e210b0b200b450d032002200b360200200241046a200c360200200241086a280200210a0b200241086a200a41016a360200200b200a6a41023a0000200341dc006a41003602002003420137025420032002360250200f200641286c6a21094100210a4100210b2006210c034002400240200a200b460d002003280254210a0c010b200a41016a220d200a490d05200a4101742204200d2004200d4b1b220d4100480d0502400240200a0d00200d102a210a0c010b2003280254200a200d102e210a0b200a450d042003200d3602582003200a3602540b2003200b41016a36025c200a200b6a200c41807f72200c41ff0071200c410776220c1b3a00000240200c450d002003280258210a200328025c210b200c210c0c010b0b200f2105024002402006450d00200f210503402005220a41286a2105200a2d001822134104460d01200a41196a2f0000200a411b6a2d0000411074722110200a41206a2900002114200a411c6a2800002104200a41146a2802002106200a41106a2802002112200a28020c2108200a2802042111200a2802002102200a2802082207210b0340024002402003280258200328025c220a460d002003280254210c0c010b200a41016a220c200a490d08200a410174220d200c200d200c4b1b220d4100480d0802400240200a0d00200d102a210c0c010b2003280254200a200d102e210c0b200c450d072003200d3602582003200c360254200328025c210a0b2003200a41016a36025c200c200a6a200b41807f72200b41ff0071200b410776220a1b3a0000200a210b200a0d000b024002402003280258220b200328025c220a6b2007490d002003280254210b0c010b200a20076a220c200a490d07200b410174220a200c200a200c4b1b220a4100480d0702400240200b0d00200a102a210b0c010b2003280254200b200a102e210b0b200b450d062003200a3602582003200b360254200328025c210a0b2003200a20076a36025c200b200a6a2002200710db051a02402011450d002002102c0b2006210b0340024002402003280258200328025c220a460d002003280254210c0c010b200a41016a220c200a490d08200a410174220d200c200d200c4b1b220d4100480d0802400240200a0d00200d102a210c0c010b2003280254200a200d102e210c0b200c450d072003200d3602582003200c360254200328025c210a0b2003200a41016a36025c200c200a6a200b41807f72200b41ff0071200b410776220a1b3a0000200a210b200a0d000b024002402003280258220b200328025c220a6b2006490d002003280254210b0c010b200a20066a220c200a490d07200b410174220a200c200a200c4b1b220a4100480d0702400240200b0d00200a102a210b0c010b2003280254200b200a102e210b0b200b450d062003200a3602582003200b360254200328025c210a0b2003200a20066a36025c200b200a6a2008200610db051a02402012450d002008102c0b02400240024002400240024020130e0400010203000b024002402003280258200328025c220a460d002003280254210b0c010b200a41016a220b200a490d0c200a410174220c200b200c200b4b1b220c4100480d0c02400240200a0d00200c102a210b0c010b2003280254200a200c102e210b0b200b450d0b2003200c3602582003200b360254200328025c210a0b2003200a41016a36025c200b200a6a41003a00000340024002402003280258200328025c220a460d002003280254210b0c010b200a41016a220b200a490d0d200a410174220c200b200c200b4b1b220c4100480d0d02400240200a0d00200c102a210b0c010b2003280254200a200c102e210b0b200b450d0c2003200c3602582003200b360254200328025c210a0b2003200a41016a36025c200b200a6a200441807f72200441ff00712004410776220a1b3a0000200a2104200a0d000c040b0b024002402003280258200328025c220a460d002003280254210b0c010b200a41016a220b200a490d0b200a410174220c200b200c200b4b1b220c4100480d0b02400240200a0d00200c102a210b0c010b2003280254200a200c102e210b0b200b450d0a2003200c3602582003200b360254200328025c210a0b2003200a41016a36025c200b200a6a41013a0000024002402003280258200328025c220a460d002003280254210b0c010b200a41016a220b200a490d0b200a410174220c200b200c200b4b1b220c4100480d0b02400240200a0d00200c102a210b0c010b2003280254200a200c102e210b0b200b450d0a2003200c3602582003200b360254200328025c210a0b2003200a41016a36025c200b200a6a41f0003a0000200320042014a72014422088a7200341d0006a10900520032d0000220a411f460d0220032f000120032d000341107472210d0c030b024002402003280258200328025c220a460d002003280254210b0c010b200a41016a220b200a490d0a200a410174220c200b200c200b4b1b220c4100480d0a02400240200a0d00200c102a210b0c010b2003280254200a200c102e210b0b200b450d092003200c3602582003200b360254200328025c210a0b2003200a41016a36025c200b200a6a41023a0000200320042014a72014422088a7200341d0006a10900520032d0000220a411f460d0120032f000120032d000341107472210d0c020b024002402003280258200328025c220a460d002003280254210b0c010b200a41016a220b200a490d09200a410174220c200b200c200b4b1b220c4100480d0902400240200a0d00200c102a210b0c010b2003280254200a200c102e210b0b200b450d082003200c3602582003200b360254200328025c210a0b2003200a41016a36025c200b200a6a41033a0000024002402003280258200328025c220a460d002003280254210b0c010b200a41016a220b200a490d09200a410174220c200b200c200b4b1b220c4100480d0902400240200a0d00200c102a210b0c010b2003280254200a200c102e210b0b200b450d082003200c3602582003200b360254200328025c210a0b2003200a41016a36025c200b200a6a2010417f73220a413f7141c00072200a2010411874411875417f4a1b3a0000024002402003280258200328025c220a460d002003280254210b0c010b200a41016a220b200a490d09200a410174220c200b200c200b4b1b220c4100480d0902400240200a0d00200c102a210b0c010b2003280254200a200c102e210b0b200b450d082003200c3602582003200b360254200328025c210a0b2003200a41016a36025c200b200a6a20104180fe03714100473a00000b20052009470d010c030b0b2003290308211420032802042104024020052009460d000340200541186a2d00004104460d01200541106a280200210b2005410c6a280200210c0240200541046a280200450d002005280200102c0b0240200b450d00200c102c0b200541286a22052009470d000b0b0240200e450d00200f102c0b02402003280258450d002003280254102c0b2000200d3b00012000200a3a0000200041036a200d4110763a0000200041086a2014370000200041046a20043600004100210c4101210d0c090b20052009460d000340200541186a2d00004104460d01200541106a280200210a2005410c6a280200210b0240200541046a280200450d002005280200102c0b0240200a450d00200b102c0b200541286a22052009470d000b0b0240200e450d00200f102c0b20032802582108200328025421022003280250220441086a210d200441046a2105200328025c2207210b0340024002402005280200200d280200220a460d002004280200210c0c010b200a41016a220c200a490d05200a4101742206200c2006200c4b1b22064100480d0502400240200a0d002006102a210c0c010b2004280200200a2006102e210c0b200c450d042004200c36020020052006360200200d280200210a0b200d200a41016a360200200c200a6a200b41807f72200b41ff0071200b410776220a1b3a0000200a210b200a0d000b02400240200441046a280200220b200441086a280200220a6b2007490d002004280200210b0c010b200a20076a220c200a490d04200b410174220a200c200a200c4b1b220a4100480d0402400240200b0d00200a102a210b0c010b2004280200200b200a102e210b0b200b450d032004200b360200200441046a200a360200200441086a280200210a0b200441086a200a20076a360200200b200a6a2002200710db051a02402008450d002002102c0b410021044101210d4101210b4101210c0c110b20082010460d0003402008410d6a2d00004105460d010240200841046a280200450d002008280200102c0b200841106a22082010470d000b0b0240200e450d00200f102c0b200241086a2106200241046a2107200b210c03400240024020072802002006280200220a460d002002280200210d0c010b200a41016a220d200a490d03200a4101742208200d2008200d4b1b22084100480d0302400240200a0d002008102a210d0c010b2002280200200a2008102e210d0b200d450d022002200d360200200720083602002006280200210a0b2006200a41016a360200200d200a6a200c41807f72200c41ff0071200c410776220a1b3a0000200a210c200a0d000b02400240200241046a280200220c200241086a280200220a6b200b490d002002280200210c0c010b200a200b6a220d200a490d02200c410174220a200d200a200d4b1b220a4100480d0202400240200c0d00200a102a210c0c010b2002280200200c200a102e210c0b200c450d012002200c360200200241046a200a360200200241086a280200210a0b200241086a200a200b6a360200200c200a6a2004200b10db051a4100210c4101210d2005450d022004102c0c020b1033000b1035000b4101210b0c0b0b2000200d3b00012000200a3a0000200041036a200d4110763a0000200041086a2014370000200041046a2004360000410021094101210d4101210c410121044101210541012106410121074101210b41012102410121080c080b4101210c200241086a200a41016a3602004100210d200b200a6a41003a0000200341146a2004360200200341106a20053602002003200636020c200320073602082003200836020420032009360200200341d0006a20032002109405200320032900513703382003200341d0006a41086a29000037003f20032d0050220a411f460d082000200a3a000020002003290338370001200041086a200329003f3700000b410121040b410121050b410121060b410121070b4101210b0b410121020b41012108410121090b20012d0000220a410f4b0d18200a0e100a0b0c0d0e0f101112181318141516170a0b4101210b4100210d4101210c0b410121040b410121060b410121120b410121100b410121050b410121070b410121020b410121080b41012109410121130c0f0b200141086a280200450d10200141046a280200102c0c100b200d450d0f0240200141086a280200450d00200141046a280200102c0b200141146a280200450d0f200141106a280200102c0c0f0b02402001410c6a280200220b450d00200141046a280200210a200b410474210b03400240200a41046a280200450d00200a280200102c0b200a41106a210a200b41706a220b0d000b0b200141086a280200450d0e2001280204102c0c0e0b200c450d0d02402001410c6a280200220b450d00200141046a280200210a200b41286c210b03400240200a41046a280200450d00200a280200102c0b0240200a41106a280200450d00200a410c6a280200102c0b200a41286a210a200b41586a220b0d000b0b200141086a280200450d0d2001280204102c0c0d0b200141086a280200450d0c200141046a280200102c0c0c0b2004450d0b200141086a280200450d0b200141046a280200102c0c0b0b2005450d0a200141086a280200450d0a200141046a280200102c0c0a0b2006450d0902402001410c6a280200220a450d00200141046a2802002204200a4104746a2105034002402004280208220b450d002004280200210a200b410474210b03400240200a2d00004109470d000240200a41046a220d280200220c28020441ffffffff0371450d00200c280200102c200d280200210c0b200c102c0b200a41106a210a200b41706a220b0d000b0b200441106a210a0240200441046a280200450d002004280200102c0b200a2104200a2005470d000b0b200141086a280200450d092001280204102c0c090b02402001410c6a280200220b450d00200141046a280200210a200b41146c210b03400240200a41046a280200450d00200a280200102c0b200a41146a210a200b416c6a220b0d000b0b200141086a280200450d082001280204102c0c080b2007450d0702402001410c6a280200220a450d00200141046a2802002204200a411c6c6a2105034002402004280204220a450d0002402004410c6a280200220b450d00200b410474210b03400240200a2d00004109470d000240200a41046a220d280200220c28020441ffffffff0371450d00200c280200102c200d280200210c0b200c102c0b200a41106a210a200b41706a220b0d000b0b200441086a280200450d002004280204102c0b2004411c6a210a0240200441146a280200450d002004280210102c0b200a2104200a2005470d000b0b200141086a280200450d072001280204102c0c070b200b450d0602402001410c6a280200220a450d00200141046a2802002204200a41186c6a210503400240200441046a280200450d002004280200102c0b0240200441146a280200220b450d00200428020c210a200b410474210b03400240200a2d00004109470d000240200a41046a220d280200220c28020441ffffffff0371450d00200c280200102c200d280200210c0b200c102c0b200a41106a210a200b41706a220b0d000b0b200441186a210a0240200441106a280200450d00200428020c102c0b200a2104200a2005470d000b0b200141086a280200450d062001280204102c0c060b2002450d05200141046a220a109805200141086a280200450d05200a280200102c0c050b2008450d040240200141046a280200220a450d00200141086a280200450d00200a102c0b0240200141146a280200220a450d0002402001411c6a280200220b450d00200b410c6c210b03400240200a280200220c450d00200a41046a280200450d00200c102c0b200a410c6a210a200b41746a220b0d000b0b200141186a280200450d002001280214102c0b200141246a2802002204450d0402402001412c6a280200220a450d002004200a4104746a210503402004220d41106a21040240200d280204220a450d000240200d410c6a280200220b450d00200b410c6c210b03400240200a280200220c450d00200a41046a280200450d00200c102c0b200a410c6a210a200b41746a220b0d000b0b200d41086a280200450d00200d280204102c0b20042005470d000b0b200141286a280200450d042001280224102c0c040b2009450d030240200141086a280200450d00200141046a280200102c0b0240200141146a280200220a450d00200141186a280200450d00200a102c0b200141246a280200450d03200141206a280200102c0c030b200110f5040c020b410121110b2000411f3a0000024020012d0000220a410f4b0d0002400240024002400240024002400240024002400240024002400240200a0e100001020304050607080e090e0a0b0c0d000b200b450d0e200141086a280200450d0e200141046a280200102c0c0e0b200d450d0d0240200141086a280200450d00200141046a280200102c0b200141146a280200450d0d200141106a280200102c0c0d0b200c450d0c02402001410c6a280200220b450d00200141046a280200210a200b410474210b03400240200a41046a280200450d00200a280200102c0b200a41106a210a200b41706a220b0d000b0b200141086a280200450d0c2001280204102c0c0c0b2004450d0b02402001410c6a280200220b450d00200141046a280200210a200b41286c210b03400240200a41046a280200450d00200a280200102c0b0240200a41106a280200450d00200a410c6a280200102c0b200a41286a210a200b41586a220b0d000b0b200141086a280200450d0b2001280204102c0c0b0b2006450d0a200141086a280200450d0a200141046a280200102c0c0a0b2012450d09200141086a280200450d09200141046a280200102c0c090b2010450d08200141086a280200450d08200141046a280200102c0c080b2005450d0702402001410c6a280200220a450d00200141046a2802002204200a4104746a2105034002402004280208220b450d002004280200210a200b410474210b03400240200a2d00004109470d000240200a41046a220d280200220c28020441ffffffff0371450d00200c280200102c200d280200210c0b200c102c0b200a41106a210a200b41706a220b0d000b0b200441106a210a0240200441046a280200450d002004280200102c0b200a2104200a2005470d000b0b200141086a280200450d072001280204102c0c070b2007450d0602402001410c6a280200220b450d00200141046a280200210a200b41146c210b03400240200a41046a280200450d00200a280200102c0b200a41146a210a200b416c6a220b0d000b0b200141086a280200450d062001280204102c0c060b2002450d0502402001410c6a280200220a450d00200141046a2802002204200a411c6c6a2105034002402004280204220a450d0002402004410c6a280200220b450d00200b410474210b03400240200a2d00004109470d000240200a41046a220d280200220c28020441ffffffff0371450d00200c280200102c200d280200210c0b200c102c0b200a41106a210a200b41706a220b0d000b0b200441086a280200450d002004280204102c0b2004411c6a210a0240200441146a280200450d002004280210102c0b200a2104200a2005470d000b0b200141086a280200450d052001280204102c0c050b2008450d0402402001410c6a280200220a450d00200141046a2802002204200a41186c6a210503400240200441046a280200450d002004280200102c0b0240200441146a280200220b450d00200428020c210a200b410474210b03400240200a2d00004109470d000240200a41046a220d280200220c28020441ffffffff0371450d00200c280200102c200d280200210c0b200c102c0b200a41106a210a200b41706a220b0d000b0b200441186a210a0240200441106a280200450d00200428020c102c0b200a2104200a2005470d000b0b200141086a280200450d042001280204102c0c040b2009450d03200141046a220a109805200141086a280200450d03200a280200102c0c030b2013450d020240200141046a280200220a450d00200141086a280200450d00200a102c0b0240200141146a280200220a450d0002402001411c6a280200220b450d00200b410c6c210b03400240200a280200220c450d00200a41046a280200450d00200c102c0b200a410c6a210a200b41746a220b0d000b0b200141186a280200450d002001280214102c0b200141246a2802002204450d0202402001412c6a280200220a450d002004200a4104746a210503402004220d41106a21040240200d280204220a450d000240200d410c6a280200220b450d00200b410c6c210b03400240200a280200220c450d00200a41046a280200450d00200c102c0b200a410c6a210a200b41746a220b0d000b0b200d41086a280200450d00200d280204102c0b20042005470d000b0b200141286a280200450d022001280224102c0c020b2011450d010240200141086a280200450d00200141046a280200102c0b0240200141146a280200220a450d00200141186a280200450d00200a102c0b200141246a280200450d01200141206a280200102c0c010b200110f5040b200341e0006a24000b13002000410136020420004180bdc5003602000b3400200041a3dbc50036020420004100360200200041146a4104360200200041106a41bcbec500360200200041086a42083702000b130020004101360204200041dce7c5003602000b0c00200028020020011084050bc76501037f230041206b220224000240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020002d00000eac010102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f80018101820183018401850186018701880189018a018b018c018d018e018f0190019101920193019401950196019701980199019a019b019c019d019e019f01a001a101a201a301a401a501a601a701a801a901aa01ab0100010b200220012802184193ecc50041112001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000cab010b2002200128021841a4ecc500410b2001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000caa010b2002200128021841afecc50041032001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000ca9010b2002200128021841b2ecc50041052001411c6a28020028020c1100003a001820022001360210200241003a0019200241003602142002200041016a36020c200241106a2002410c6a41b8ecc500106121000ca8010b2002200128021841c8ecc50041042001411c6a28020028020c1100003a001820022001360210200241003a0019200241003602142002200041016a36020c200241106a2002410c6a41b8ecc500106121000ca7010b2002200128021841ccecc50041022001411c6a28020028020c1100003a001820022001360210200241003a0019200241003602142002200041016a36020c200241106a2002410c6a41b8ecc500106121000ca6010b2002200128021841ceecc50041042001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000ca5010b2002200128021841d2ecc50041032001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000ca4010b2002200128021841d5ecc50041022001411c6a28020028020c1100003a001820022001360210200241003a0019200241003602142002200041046a36020c200241106a2002410c6a41dcebc500106121000ca3010b2002200128021841d7ecc50041042001411c6a28020028020c1100003a001820022001360210200241003a0019200241003602142002200041046a36020c200241106a2002410c6a41dcebc500106121000ca2010b2002200128021841dbecc50041072001411c6a28020028020c1100003a001820022001360210200241003a0019200241003602142002200041046a36020c200241106a2002410c6a41e4ecc500106121000ca1010b2002200128021841f4ecc50041062001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000ca0010b2002200128021841faecc50041042001411c6a28020028020c1100003a001820022001360210200241003a0019200241003602142002200041046a36020c200241106a2002410c6a41dcebc500106121000c9f010b2002200128021841feecc500410c2001411c6a28020028020c1100003a001820022001360210200241003a0019200241003602142002200041046a36020c200241106a2002410c6a41dcebc500106121012002200041016a36020c20012002410c6a418cedc500106121000c9e010b20022001280218419cedc50041042001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c9d010b2002200128021841a0edc50041062001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c9c010b2002200128021841a6edc50041082001411c6a28020028020c1100003a001820022001360210200241003a0019200241003602142002200041046a36020c200241106a2002410c6a41dcebc500106121000c9b010b2002200128021841aeedc50041082001411c6a28020028020c1100003a001820022001360210200241003a0019200241003602142002200041046a36020c200241106a2002410c6a41dcebc500106121000c9a010b2002200128021841b6edc50041082001411c6a28020028020c1100003a001820022001360210200241003a0019200241003602142002200041046a36020c200241106a2002410c6a41dcebc500106121000c99010b2002200128021841beedc50041092001411c6a28020028020c1100003a001820022001360210200241003a0019200241003602142002200041046a36020c200241106a2002410c6a41dcebc500106121000c98010b2002200128021841c7edc50041092001411c6a28020028020c1100003a001820022001360210200241003a0019200241003602142002200041046a36020c200241106a2002410c6a41dcebc500106121000c97010b2002200128021841d0edc50041072001411c6a28020028020c1100003a001820022001360210200241003a0019200241003602142002200041046a36020c200241106a2002410c6a41dcebc500106121012002200041086a36020c20012002410c6a41dcebc500106121000c96010b2002200128021841d7edc50041072001411c6a28020028020c1100003a001820022001360210200241003a0019200241003602142002200041046a36020c200241106a2002410c6a41dcebc500106121012002200041086a36020c20012002410c6a41dcebc500106121000c95010b2002200128021841deedc50041072001411c6a28020028020c1100003a001820022001360210200241003a0019200241003602142002200041046a36020c200241106a2002410c6a41dcebc500106121012002200041086a36020c20012002410c6a41dcebc500106121000c94010b2002200128021841e5edc50041072001411c6a28020028020c1100003a001820022001360210200241003a0019200241003602142002200041046a36020c200241106a2002410c6a41dcebc500106121012002200041086a36020c20012002410c6a41dcebc500106121000c93010b2002200128021841ecedc50041092001411c6a28020028020c1100003a001820022001360210200241003a0019200241003602142002200041046a36020c200241106a2002410c6a41dcebc500106121012002200041086a36020c20012002410c6a41dcebc500106121000c92010b2002200128021841f5edc50041092001411c6a28020028020c1100003a001820022001360210200241003a0019200241003602142002200041046a36020c200241106a2002410c6a41dcebc500106121012002200041086a36020c20012002410c6a41dcebc500106121000c91010b2002200128021841feedc500410a2001411c6a28020028020c1100003a001820022001360210200241003a0019200241003602142002200041046a36020c200241106a2002410c6a41dcebc500106121012002200041086a36020c20012002410c6a41dcebc500106121000c90010b200220012802184188eec500410a2001411c6a28020028020c1100003a001820022001360210200241003a0019200241003602142002200041046a36020c200241106a2002410c6a41dcebc500106121012002200041086a36020c20012002410c6a41dcebc500106121000c8f010b200220012802184192eec50041092001411c6a28020028020c1100003a001820022001360210200241003a0019200241003602142002200041046a36020c200241106a2002410c6a41dcebc500106121012002200041086a36020c20012002410c6a41dcebc500106121000c8e010b20022001280218419beec50041092001411c6a28020028020c1100003a001820022001360210200241003a0019200241003602142002200041046a36020c200241106a2002410c6a41dcebc500106121012002200041086a36020c20012002410c6a41dcebc500106121000c8d010b2002200128021841a4eec500410a2001411c6a28020028020c1100003a001820022001360210200241003a0019200241003602142002200041046a36020c200241106a2002410c6a41dcebc500106121012002200041086a36020c20012002410c6a41dcebc500106121000c8c010b2002200128021841aeeec500410a2001411c6a28020028020c1100003a001820022001360210200241003a0019200241003602142002200041046a36020c200241106a2002410c6a41dcebc500106121012002200041086a36020c20012002410c6a41dcebc500106121000c8b010b2002200128021841b8eec500410a2001411c6a28020028020c1100003a001820022001360210200241003a0019200241003602142002200041046a36020c200241106a2002410c6a41dcebc500106121012002200041086a36020c20012002410c6a41dcebc500106121000c8a010b2002200128021841c2eec500410a2001411c6a28020028020c1100003a001820022001360210200241003a0019200241003602142002200041046a36020c200241106a2002410c6a41dcebc500106121012002200041086a36020c20012002410c6a41dcebc500106121000c89010b2002200128021841cceec50041082001411c6a28020028020c1100003a001820022001360210200241003a0019200241003602142002200041046a36020c200241106a2002410c6a41dcebc500106121012002200041086a36020c20012002410c6a41dcebc500106121000c88010b2002200128021841d4eec50041082001411c6a28020028020c1100003a001820022001360210200241003a0019200241003602142002200041046a36020c200241106a2002410c6a41dcebc500106121012002200041086a36020c20012002410c6a41dcebc500106121000c87010b2002200128021841dceec50041082001411c6a28020028020c1100003a001820022001360210200241003a0019200241003602142002200041046a36020c200241106a2002410c6a41dcebc500106121012002200041086a36020c20012002410c6a41dcebc500106121000c86010b2002200128021841e4eec50041082001411c6a28020028020c1100003a001820022001360210200241003a0019200241003602142002200041046a36020c200241106a2002410c6a41dcebc500106121012002200041086a36020c20012002410c6a41dcebc500106121000c85010b2002200128021841eceec50041092001411c6a28020028020c1100003a001820022001360210200241003a0019200241003602142002200041046a36020c200241106a2002410c6a41dcebc500106121012002200041086a36020c20012002410c6a41dcebc500106121000c84010b2002200128021841f5eec500410a2001411c6a28020028020c1100003a001820022001360210200241003a0019200241003602142002200041046a36020c200241106a2002410c6a41dcebc500106121012002200041086a36020c20012002410c6a41dcebc500106121000c83010b2002200128021841ffeec50041092001411c6a28020028020c1100003a001820022001360210200241003a0019200241003602142002200041046a36020c200241106a2002410c6a41dcebc500106121012002200041086a36020c20012002410c6a41dcebc500106121000c82010b200220012802184188efc500410a2001411c6a28020028020c1100003a001820022001360210200241003a0019200241003602142002200041046a36020c200241106a2002410c6a41dcebc500106121012002200041086a36020c20012002410c6a41dcebc500106121000c81010b200220012802184192efc500410a2001411c6a28020028020c1100003a001820022001360210200241003a0019200241003602142002200041046a36020c200241106a2002410c6a41dcebc500106121012002200041086a36020c20012002410c6a41dcebc500106121000c80010b20022001280218419cefc500410d2001411c6a28020028020c1100003a001820022001360210200241003a0019200241003602142002200041016a36020c200241106a2002410c6a418cedc500106121000c7f0b2002200128021841a9efc500410a2001411c6a28020028020c1100003a001820022001360210200241003a0019200241003602142002200041016a36020c200241106a2002410c6a418cedc500106121000c7e0b2002200128021841b3efc50041082001411c6a28020028020c1100003a001820022001360210200241003a0019200241003602142002200041046a36020c200241106a2002410c6a41bcefc500106121000c7d0b2002200128021841ccefc50041082001411c6a28020028020c1100003a001820022001360210200241003a0019200241003602142002200041086a36020c200241106a2002410c6a41d4efc500106121000c7c0b2002200128021841e4efc50041082001411c6a28020028020c1100003a001820022001360210200241003a0019200241003602142002200041046a36020c200241106a2002410c6a41dcebc500106121000c7b0b2002200128021841ecefc50041082001411c6a28020028020c1100003a001820022001360210200241003a0019200241003602142002200041086a36020c200241106a2002410c6a41f4efc500106121000c7a0b200220012802184184f0c50041062001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c790b20022001280218418af0c50041052001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c780b20022001280218418ff0c50041052001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c770b200220012802184194f0c50041062001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c760b20022001280218419af0c50041062001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c750b2002200128021841a0f0c50041062001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c740b2002200128021841a6f0c50041062001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c730b2002200128021841acf0c50041062001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c720b2002200128021841b2f0c50041062001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c710b2002200128021841b8f0c50041062001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c700b2002200128021841bef0c50041062001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c6f0b2002200128021841c4f0c50041062001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c6e0b2002200128021841caf0c50041052001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c6d0b2002200128021841cff0c50041052001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c6c0b2002200128021841d4f0c50041062001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c6b0b2002200128021841daf0c50041062001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c6a0b2002200128021841e0f0c50041062001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c690b2002200128021841e6f0c50041062001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c680b2002200128021841ecf0c50041062001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c670b2002200128021841f2f0c50041062001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c660b2002200128021841f8f0c50041062001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c650b2002200128021841fef0c50041062001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c640b200220012802184184f1c50041052001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c630b200220012802184189f1c50041052001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c620b20022001280218418ef1c50041052001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c610b200220012802184193f1c50041052001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c600b200220012802184198f1c50041052001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c5f0b20022001280218419df1c50041052001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c5e0b2002200128021841a2f1c50041052001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c5d0b2002200128021841a7f1c50041052001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c5c0b2002200128021841acf1c50041052001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c5b0b2002200128021841b1f1c50041052001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c5a0b2002200128021841b6f1c50041052001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c590b2002200128021841bbf1c50041052001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c580b2002200128021841c0f1c50041062001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c570b2002200128021841c6f1c50041062001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c560b2002200128021841ccf1c50041092001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c550b2002200128021841d5f1c50041062001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c540b2002200128021841dbf1c50041062001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c530b2002200128021841e1f1c50041062001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c520b2002200128021841e7f1c50041072001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c510b2002200128021841eef1c50041072001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c500b2002200128021841f5f1c50041072001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c4f0b2002200128021841fcf1c50041072001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c4e0b200220012802184183f2c50041062001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c4d0b200220012802184189f2c50041052001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c4c0b20022001280218418ef2c50041062001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c4b0b200220012802184194f2c50041062001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c4a0b20022001280218419af2c50041072001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c490b2002200128021841a1f2c50041072001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c480b2002200128021841a8f2c50041072001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c470b2002200128021841aff2c50041072001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c460b2002200128021841b6f2c50041062001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c450b2002200128021841bcf2c50041062001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c440b2002200128021841c2f2c50041092001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c430b2002200128021841cbf2c50041062001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c420b2002200128021841d1f2c50041062001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c410b2002200128021841d7f2c50041062001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c400b2002200128021841ddf2c50041072001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c3f0b2002200128021841e4f2c50041072001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c3e0b2002200128021841ebf2c50041072001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c3d0b2002200128021841f2f2c50041072001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c3c0b2002200128021841f9f2c50041062001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c3b0b2002200128021841fff2c50041052001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c3a0b200220012802184184f3c50041062001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c390b20022001280218418af3c50041062001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c380b200220012802184190f3c50041072001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c370b200220012802184197f3c50041072001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c360b20022001280218419ef3c50041072001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c350b2002200128021841a5f3c50041072001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c340b2002200128021841acf3c50041062001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c330b2002200128021841b2f3c50041062001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c320b2002200128021841b8f3c50041072001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c310b2002200128021841bff3c50041082001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c300b2002200128021841c7f3c50041082001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c2f0b2002200128021841cff3c500410a2001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c2e0b2002200128021841d9f3c50041072001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c2d0b2002200128021841e0f3c50041062001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c2c0b2002200128021841e6f3c50041062001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c2b0b2002200128021841ecf3c50041062001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c2a0b2002200128021841f2f3c50041062001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c290b2002200128021841f8f3c50041062001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c280b2002200128021841fef3c50041062001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c270b200220012802184184f4c500410b2001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c260b20022001280218418ff4c50041062001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c250b200220012802184195f4c50041062001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c240b20022001280218419bf4c50041072001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c230b2002200128021841a2f4c50041082001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c220b2002200128021841aaf4c50041082001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c210b2002200128021841b2f4c500410a2001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c200b2002200128021841bcf4c50041072001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c1f0b2002200128021841c3f4c50041062001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c1e0b2002200128021841c9f4c50041062001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c1d0b2002200128021841cff4c50041062001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c1c0b2002200128021841d5f4c50041062001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c1b0b2002200128021841dbf4c50041062001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c1a0b2002200128021841e1f4c50041062001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c190b2002200128021841e7f4c500410b2001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c180b2002200128021841f2f4c500410a2001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c170b2002200128021841fcf4c500410c2001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c160b200220012802184188f5c500410c2001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c150b200220012802184194f5c500410c2001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c140b2002200128021841a0f5c500410c2001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c130b2002200128021841acf5c500410d2001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c120b2002200128021841b9f5c500410d2001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c110b2002200128021841c6f5c500410c2001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c100b2002200128021841d2f5c500410c2001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c0f0b2002200128021841def5c500410c2001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c0e0b2002200128021841eaf5c500410c2001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c0d0b2002200128021841f6f5c500410e2001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c0c0b200220012802184184f6c500410e2001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c0b0b200220012802184192f6c500410e2001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c0a0b2002200128021841a0f6c500410e2001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c090b2002200128021841aef6c500410c2001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c080b2002200128021841baf6c500410e2001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c070b2002200128021841c8f6c500410e2001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c060b2002200128021841d6f6c500410e2001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c050b2002200128021841e4f6c500410e2001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c040b2002200128021841f2f6c500410d2001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c030b2002200128021841fff6c50041112001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c020b200220012802184190f7c50041112001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c010b2002200128021841a1f7c50041112001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000b20002d00082101024020002802042203450d00200141ff0171210441012101024020040d00024020034101470d0020002d0009450d00200028020022042d00004104710d004101210120042802184198b0c00041012004411c6a28020028020c1100000d010b2000280200220128021841ec94c60041012001411c6a28020028020c11000021010b200020013a00080b200241206a2400200141ff01714100470bbe04020d7f017e230041c0006b22032400200128020022042001280208220541047422066a210720012802042108200421010240024002402005450d00200641706a2109200341306a410172210a200341306a41026a2106200341206a410172220b41076a210c20042101034020012d000021052006200141036a2d00003a00002003200141016a2f00003b01300240200541ac01470d00200141106a21010c020b2003410c6a41026a20062d0000220d3a0000200320032f0130220e3b010c200141046a280200210f200141086a2903002110200a200e3b0000200a41026a200d3a0000200320053a0030200320103703382003200f360234200341206a200341306a20021086052003200b2900003703102003200c290000370017024020032d00202205411f470d00200941706a2109200141106a22012007470d010c030b0b200020053a000020002003290310370001200041086a200329001737000002402009450d00200141106a210103400240024020012d000022054109460d00200541ac01470d010c030b0240200141046a280200220528020441ffffffff0371450d002005280200102c0b2005102c0b200141106a22012007470d000b0b2008450d022004102c0c020b20012007460d0003400240024020012d000022054109460d00200541ac01470d010c030b0240200141046a280200220528020441ffffffff0371450d002005280200102c0b2005102c0b200141106a22012007470d000b0b02402008450d002004102c0b2000411f3a00000b200341c0006a24000bb4c10202097f017e230041106b2203240002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020012d00000eac01000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f80018101820183018401850186018701880189018a018b018c018d018e018f0190019101920193019401950196019701980199019a019b019c019d019e019f01a001a101a201a301a401a501a601a701a801a901aa01ab01000b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490dae01200441017422062005200620054b1b22064100480dae010240024020040d002006102a21050c010b200228020420042006102e21050b2005450dad0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41003a00000cab010b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490dad01200441017422062005200620054b1b22064100480dad010240024020040d002006102a21050c010b200228020420042006102e21050b2005450dac0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41013a00000caa010b200241046a210620012d0001210702400240200241086a2802002002410c6a2802002204460d00200628020021050c010b200441016a22052004490dac01200441017422082005200820054b1b22084100480dac010240024020040d002008102a21050c010b200628020020042008102e21050b2005450dab0120022005360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200520046a41023a000002400240200241086a28020020082802002204460d00200628020021050c010b200441016a22052004490dac01200441017422082005200820054b1b22084100480dac010240024020040d002008102a21050c010b200628020020042008102e21050b2005450dab0120022005360204200241086a20083602002002410c6a28020021040b2002410c6a200441016a360200200520046a42c0818386fcdffffe7c2007410473ad42078342038688a7413f7141c000723a00000ca9010b200241046a210620012d0001210702400240200241086a2802002002410c6a2802002204460d00200628020021050c010b200441016a22052004490dab01200441017422082005200820054b1b22084100480dab010240024020040d002008102a21050c010b200628020020042008102e21050b2005450daa0120022005360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200520046a41033a000002400240200241086a28020020082802002204460d00200628020021050c010b200441016a22052004490dab01200441017422082005200820054b1b22084100480dab010240024020040d002008102a21050c010b200628020020042008102e21050b2005450daa0120022005360204200241086a20083602002002410c6a28020021040b2002410c6a200441016a360200200520046a42c0818386fcdffffe7c2007410473ad42078342038688a7413f7141c000723a00000ca8010b200241046a210620012d0001210702400240200241086a2802002002410c6a2802002204460d00200628020021050c010b200441016a22052004490daa01200441017422082005200820054b1b22084100480daa010240024020040d002008102a21050c010b200628020020042008102e21050b2005450da90120022005360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200520046a41043a000002400240200241086a28020020082802002204460d00200628020021050c010b200441016a22052004490daa01200441017422082005200820054b1b22084100480daa010240024020040d002008102a21050c010b200628020020042008102e21050b2005450da90120022005360204200241086a20083602002002410c6a28020021040b2002410c6a200441016a360200200520046a42c0818386fcdffffe7c2007410473ad42078342038688a7413f7141c000723a00000ca7010b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490da901200441017422062005200620054b1b22064100480da9010240024020040d002006102a21050c010b200228020420042006102e21050b2005450da80120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41053a00000ca6010b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490da801200441017422062005200620054b1b22064100480da8010240024020040d002006102a21050c010b200228020420042006102e21050b2005450da70120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a410b3a00000ca5010b200241046a2109200141046a280200210502400240200241086a2802002002410c6a2802002204460d00200928020021060c010b200441016a22062004490da701200441017422072006200720064b1b22074100480da7010240024020040d002007102a21060c010b200928020020042007102e21060b2006450da60120022006360204200241086a20073602002002410c6a28020021040b2002410c6a2207200441016a360200200620046a410c3a0000200241086a2108034002400240200828020020072802002204460d00200928020021060c010b200441016a22062004490da8012004410174220a2006200a20064b1b220a4100480da8010240024020040d00200a102a21060c010b20092802002004200a102e21060b2006450da701200220063602042008200a360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000ca5010b0b200241046a2109200141046a280200210502400240200241086a2802002002410c6a2802002204460d00200928020021060c010b200441016a22062004490da601200441017422072006200720064b1b22074100480da6010240024020040d002007102a21060c010b200928020020042007102e21060b2006450da50120022006360204200241086a20073602002002410c6a28020021040b2002410c6a2207200441016a360200200620046a410d3a0000200241086a2108034002400240200828020020072802002204460d00200928020021060c010b200441016a22062004490da7012004410174220a2006200a20064b1b220a4100480da7010240024020040d00200a102a21060c010b20092802002004200a102e21060b2006450da601200220063602042008200a360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000ca4010b0b200241046a210902400240200241086a2802002002410c6a2802002204460d00200928020021050c010b200441016a22052004490da501200441017422062005200620054b1b22064100480da5010240024020040d002006102a21050c010b200928020020042006102e21050b2005450da40120022005360204200241086a20063602002002410c6a28020021040b2002410c6a2207200441016a360200200520046a410e3a0000200320012802042204280204220520042802002204200420054102746a20021087052003210420032d0000411f470dab0120012802042802082105200241086a2108034002400240200828020020072802002204460d00200928020021060c010b200441016a22062004490da6012004410174220a2006200a20064b1b220a4100480da6010240024020040d00200a102a21060c010b20092802002004200a102e21060b2006450da501200220063602042008200a360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000ca3010b0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490da401200441017422062005200620054b1b22064100480da4010240024020040d002006102a21050c010b200228020420042006102e21050b2005450da30120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a410f3a00000ca1010b200241046a2109200141046a280200210502400240200241086a2802002002410c6a2802002204460d00200928020021060c010b200441016a22062004490da301200441017422072006200720064b1b22074100480da3010240024020040d002007102a21060c010b200928020020042007102e21060b2006450da20120022006360204200241086a20073602002002410c6a28020021040b2002410c6a2207200441016a360200200620046a41103a0000200241086a2108034002400240200828020020072802002204460d00200928020021060c010b200441016a22062004490da4012004410174220a2006200a20064b1b220a4100480da4010240024020040d00200a102a21060c010b20092802002004200a102e21060b2006450da301200220063602042008200a360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000ca1010b0b200241046a2109200141046a280200210520012d0001210b02400240200241086a2802002002410c6a2802002204460d00200928020021060c010b200441016a22062004490da201200441017422072006200720064b1b22074100480da2010240024020040d002007102a21060c010b200928020020042007102e21060b2006450da10120022006360204200241086a20073602002002410c6a28020021040b2002410c6a2207200441016a360200200620046a41113a0000200241086a2108034002400240200828020020072802002204460d00200928020021060c010b200441016a22062004490da3012004410174220a2006200a20064b1b220a4100480da3010240024020040d00200a102a21060c010b20092802002004200a102e21060b2006450da201200220063602042008200a360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000b02400240200241086a2802002002410c6a2802002204460d00200928020021050c010b200441016a22052004490da201200441017422062005200620054b1b22064100480da2010240024020040d002006102a21050c010b200928020020042006102e21050b2005450da10120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a200b3a00000c9f010b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490da101200441017422062005200620054b1b22064100480da1010240024020040d002006102a21050c010b200228020420042006102e21050b2005450da00120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a411a3a00000c9e010b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490da001200441017422062005200620054b1b22064100480da0010240024020040d002006102a21050c010b200228020420042006102e21050b2005450d9f0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a411b3a00000c9d010b200241046a2109200141046a280200210502400240200241086a2802002002410c6a2802002204460d00200928020021060c010b200441016a22062004490d9f01200441017422072006200720064b1b22074100480d9f010240024020040d002007102a21060c010b200928020020042007102e21060b2006450d9e0120022006360204200241086a20073602002002410c6a28020021040b2002410c6a2207200441016a360200200620046a41203a0000200241086a2108034002400240200828020020072802002204460d00200928020021060c010b200441016a22062004490da0012004410174220a2006200a20064b1b220a4100480da0010240024020040d00200a102a21060c010b20092802002004200a102e21060b2006450d9f01200220063602042008200a360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000c9d010b0b200241046a2109200141046a280200210502400240200241086a2802002002410c6a2802002204460d00200928020021060c010b200441016a22062004490d9e01200441017422072006200720064b1b22074100480d9e010240024020040d002007102a21060c010b200928020020042007102e21060b2006450d9d0120022006360204200241086a20073602002002410c6a28020021040b2002410c6a2207200441016a360200200620046a41213a0000200241086a2108034002400240200828020020072802002204460d00200928020021060c010b200441016a22062004490d9f012004410174220a2006200a20064b1b220a4100480d9f010240024020040d00200a102a21060c010b20092802002004200a102e21060b2006450d9e01200220063602042008200a360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000c9c010b0b200241046a2109200141046a280200210502400240200241086a2802002002410c6a2802002204460d00200928020021060c010b200441016a22062004490d9d01200441017422072006200720064b1b22074100480d9d010240024020040d002007102a21060c010b200928020020042007102e21060b2006450d9c0120022006360204200241086a20073602002002410c6a28020021040b2002410c6a2207200441016a360200200620046a41223a0000200241086a2108034002400240200828020020072802002204460d00200928020021060c010b200441016a22062004490d9e012004410174220a2006200a20064b1b220a4100480d9e010240024020040d00200a102a21060c010b20092802002004200a102e21060b2006450d9d01200220063602042008200a360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000c9b010b0b200241046a2109200141046a280200210502400240200241086a2802002002410c6a2802002204460d00200928020021060c010b200441016a22062004490d9c01200441017422072006200720064b1b22074100480d9c010240024020040d002007102a21060c010b200928020020042007102e21060b2006450d9b0120022006360204200241086a20073602002002410c6a28020021040b2002410c6a2207200441016a360200200620046a41233a0000200241086a2108034002400240200828020020072802002204460d00200928020021060c010b200441016a22062004490d9d012004410174220a2006200a20064b1b220a4100480d9d010240024020040d00200a102a21060c010b20092802002004200a102e21060b2006450d9c01200220063602042008200a360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000c9a010b0b200241046a2109200141046a280200210502400240200241086a2802002002410c6a2802002204460d00200928020021060c010b200441016a22062004490d9b01200441017422072006200720064b1b22074100480d9b010240024020040d002007102a21060c010b200928020020042007102e21060b2006450d9a0120022006360204200241086a20073602002002410c6a28020021040b2002410c6a2207200441016a360200200620046a41243a0000200241086a2108034002400240200828020020072802002204460d00200928020021060c010b200441016a22062004490d9c012004410174220a2006200a20064b1b220a4100480d9c010240024020040d00200a102a21060c010b20092802002004200a102e21060b2006450d9b01200220063602042008200a360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000c99010b0b200241046a210a200141086a2802002105200141046a280200210602400240200241086a2802002002410c6a2802002204460d00200a28020021070c010b200441016a22072004490d9a01200441017422082007200820074b1b22084100480d9a010240024020040d002008102a21070c010b200a28020020042008102e21070b2007450d990120022007360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200720046a41283a0000200241086a2109034002400240200928020020082802002204460d00200a28020021070c010b200441016a22072004490d9b012004410174220b2007200b20074b1b220b4100480d9b010240024020040d00200b102a21070c010b200a2802002004200b102e21070b2007450d9a01200220073602042009200b360200200828020021040b2008200441016a360200200720046a200641807f72200641ff0071200641077622041b3a00002004210620040d000b2002410c6a2107200241086a2108034002400240200828020020072802002204460d00200a28020021060c010b200441016a22062004490d9b01200441017422092006200920064b1b22094100480d9b010240024020040d002009102a21060c010b200a28020020042009102e21060b2006450d9a012002200636020420082009360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000c98010b0b200241046a210a200141086a2802002105200141046a280200210602400240200241086a2802002002410c6a2802002204460d00200a28020021070c010b200441016a22072004490d9901200441017422082007200820074b1b22084100480d99010240024020040d002008102a21070c010b200a28020020042008102e21070b2007450d980120022007360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200720046a41293a0000200241086a2109034002400240200928020020082802002204460d00200a28020021070c010b200441016a22072004490d9a012004410174220b2007200b20074b1b220b4100480d9a010240024020040d00200b102a21070c010b200a2802002004200b102e21070b2007450d9901200220073602042009200b360200200828020021040b2008200441016a360200200720046a200641807f72200641ff0071200641077622041b3a00002004210620040d000b2002410c6a2107200241086a2108034002400240200828020020072802002204460d00200a28020021060c010b200441016a22062004490d9a01200441017422092006200920064b1b22094100480d9a010240024020040d002009102a21060c010b200a28020020042009102e21060b2006450d99012002200636020420082009360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000c97010b0b200241046a210a200141086a2802002105200141046a280200210602400240200241086a2802002002410c6a2802002204460d00200a28020021070c010b200441016a22072004490d9801200441017422082007200820074b1b22084100480d98010240024020040d002008102a21070c010b200a28020020042008102e21070b2007450d970120022007360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200720046a412a3a0000200241086a2109034002400240200928020020082802002204460d00200a28020021070c010b200441016a22072004490d99012004410174220b2007200b20074b1b220b4100480d99010240024020040d00200b102a21070c010b200a2802002004200b102e21070b2007450d9801200220073602042009200b360200200828020021040b2008200441016a360200200720046a200641807f72200641ff0071200641077622041b3a00002004210620040d000b2002410c6a2107200241086a2108034002400240200828020020072802002204460d00200a28020021060c010b200441016a22062004490d9901200441017422092006200920064b1b22094100480d99010240024020040d002009102a21060c010b200a28020020042009102e21060b2006450d98012002200636020420082009360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000c96010b0b200241046a210a200141086a2802002105200141046a280200210602400240200241086a2802002002410c6a2802002204460d00200a28020021070c010b200441016a22072004490d9701200441017422082007200820074b1b22084100480d97010240024020040d002008102a21070c010b200a28020020042008102e21070b2007450d960120022007360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200720046a412b3a0000200241086a2109034002400240200928020020082802002204460d00200a28020021070c010b200441016a22072004490d98012004410174220b2007200b20074b1b220b4100480d98010240024020040d00200b102a21070c010b200a2802002004200b102e21070b2007450d9701200220073602042009200b360200200828020021040b2008200441016a360200200720046a200641807f72200641ff0071200641077622041b3a00002004210620040d000b2002410c6a2107200241086a2108034002400240200828020020072802002204460d00200a28020021060c010b200441016a22062004490d9801200441017422092006200920064b1b22094100480d98010240024020040d002009102a21060c010b200a28020020042009102e21060b2006450d97012002200636020420082009360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000c95010b0b200241046a210a200141086a2802002105200141046a280200210602400240200241086a2802002002410c6a2802002204460d00200a28020021070c010b200441016a22072004490d9601200441017422082007200820074b1b22084100480d96010240024020040d002008102a21070c010b200a28020020042008102e21070b2007450d950120022007360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200720046a412c3a0000200241086a2109034002400240200928020020082802002204460d00200a28020021070c010b200441016a22072004490d97012004410174220b2007200b20074b1b220b4100480d97010240024020040d00200b102a21070c010b200a2802002004200b102e21070b2007450d9601200220073602042009200b360200200828020021040b2008200441016a360200200720046a200641807f72200641ff0071200641077622041b3a00002004210620040d000b2002410c6a2107200241086a2108034002400240200828020020072802002204460d00200a28020021060c010b200441016a22062004490d9701200441017422092006200920064b1b22094100480d97010240024020040d002009102a21060c010b200a28020020042009102e21060b2006450d96012002200636020420082009360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000c94010b0b200241046a210a200141086a2802002106200141046a280200210502400240200241086a2802002002410c6a2802002204460d00200a28020021070c010b200441016a22072004490d9501200441017422082007200820074b1b22084100480d95010240024020040d002008102a21070c010b200a28020020042008102e21070b2007450d940120022007360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200720046a412d3a0000200241086a2109034002400240200928020020082802002204460d00200a28020021070c010b200441016a22072004490d96012004410174220b2007200b20074b1b220b4100480d96010240024020040d00200b102a21070c010b200a2802002004200b102e21070b2007450d9501200220073602042009200b360200200828020021040b2008200441016a360200200720046a200541807f72200541ff0071200541077622041b3a00002004210520040d000b2002410c6a2107200241086a2108034002400240200828020020072802002204460d00200a28020021050c010b200441016a22052004490d9601200441017422092005200920054b1b22094100480d96010240024020040d002009102a21050c010b200a28020020042009102e21050b2005450d95012002200536020420082009360200200728020021040b2007200441016a360200200520046a200641807f72200641ff0071200641077622041b3a00002004210620040d000c93010b0b200241046a210a200141086a2802002106200141046a280200210502400240200241086a2802002002410c6a2802002204460d00200a28020021070c010b200441016a22072004490d9401200441017422082007200820074b1b22084100480d94010240024020040d002008102a21070c010b200a28020020042008102e21070b2007450d930120022007360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200720046a412e3a0000200241086a2109034002400240200928020020082802002204460d00200a28020021070c010b200441016a22072004490d95012004410174220b2007200b20074b1b220b4100480d95010240024020040d00200b102a21070c010b200a2802002004200b102e21070b2007450d9401200220073602042009200b360200200828020021040b2008200441016a360200200720046a200541807f72200541ff0071200541077622041b3a00002004210520040d000b2002410c6a2107200241086a2108034002400240200828020020072802002204460d00200a28020021050c010b200441016a22052004490d9501200441017422092005200920054b1b22094100480d95010240024020040d002009102a21050c010b200a28020020042009102e21050b2005450d94012002200536020420082009360200200728020021040b2007200441016a360200200520046a200641807f72200641ff0071200641077622041b3a00002004210620040d000c92010b0b200241046a210a200141086a2802002105200141046a280200210602400240200241086a2802002002410c6a2802002204460d00200a28020021070c010b200441016a22072004490d9301200441017422082007200820074b1b22084100480d93010240024020040d002008102a21070c010b200a28020020042008102e21070b2007450d920120022007360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200720046a412f3a0000200241086a2109034002400240200928020020082802002204460d00200a28020021070c010b200441016a22072004490d94012004410174220b2007200b20074b1b220b4100480d94010240024020040d00200b102a21070c010b200a2802002004200b102e21070b2007450d9301200220073602042009200b360200200828020021040b2008200441016a360200200720046a200641807f72200641ff0071200641077622041b3a00002004210620040d000b2002410c6a2107200241086a2108034002400240200828020020072802002204460d00200a28020021060c010b200441016a22062004490d9401200441017422092006200920064b1b22094100480d94010240024020040d002009102a21060c010b200a28020020042009102e21060b2006450d93012002200636020420082009360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000c91010b0b200241046a210a200141086a2802002105200141046a280200210602400240200241086a2802002002410c6a2802002204460d00200a28020021070c010b200441016a22072004490d9201200441017422082007200820074b1b22084100480d92010240024020040d002008102a21070c010b200a28020020042008102e21070b2007450d910120022007360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200720046a41303a0000200241086a2109034002400240200928020020082802002204460d00200a28020021070c010b200441016a22072004490d93012004410174220b2007200b20074b1b220b4100480d93010240024020040d00200b102a21070c010b200a2802002004200b102e21070b2007450d9201200220073602042009200b360200200828020021040b2008200441016a360200200720046a200641807f72200641ff0071200641077622041b3a00002004210620040d000b2002410c6a2107200241086a2108034002400240200828020020072802002204460d00200a28020021060c010b200441016a22062004490d9301200441017422092006200920064b1b22094100480d93010240024020040d002009102a21060c010b200a28020020042009102e21060b2006450d92012002200636020420082009360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000c90010b0b200241046a210a200141086a2802002106200141046a280200210502400240200241086a2802002002410c6a2802002204460d00200a28020021070c010b200441016a22072004490d9101200441017422082007200820074b1b22084100480d91010240024020040d002008102a21070c010b200a28020020042008102e21070b2007450d900120022007360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200720046a41313a0000200241086a2109034002400240200928020020082802002204460d00200a28020021070c010b200441016a22072004490d92012004410174220b2007200b20074b1b220b4100480d92010240024020040d00200b102a21070c010b200a2802002004200b102e21070b2007450d9101200220073602042009200b360200200828020021040b2008200441016a360200200720046a200541807f72200541ff0071200541077622041b3a00002004210520040d000b2002410c6a2107200241086a2108034002400240200828020020072802002204460d00200a28020021050c010b200441016a22052004490d9201200441017422092005200920054b1b22094100480d92010240024020040d002009102a21050c010b200a28020020042009102e21050b2005450d91012002200536020420082009360200200728020021040b2007200441016a360200200520046a200641807f72200641ff0071200641077622041b3a00002004210620040d000c8f010b0b200241046a210a200141086a2802002106200141046a280200210502400240200241086a2802002002410c6a2802002204460d00200a28020021070c010b200441016a22072004490d9001200441017422082007200820074b1b22084100480d90010240024020040d002008102a21070c010b200a28020020042008102e21070b2007450d8f0120022007360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200720046a41323a0000200241086a2109034002400240200928020020082802002204460d00200a28020021070c010b200441016a22072004490d91012004410174220b2007200b20074b1b220b4100480d91010240024020040d00200b102a21070c010b200a2802002004200b102e21070b2007450d9001200220073602042009200b360200200828020021040b2008200441016a360200200720046a200541807f72200541ff0071200541077622041b3a00002004210520040d000b2002410c6a2107200241086a2108034002400240200828020020072802002204460d00200a28020021050c010b200441016a22052004490d9101200441017422092005200920054b1b22094100480d91010240024020040d002009102a21050c010b200a28020020042009102e21050b2005450d90012002200536020420082009360200200728020021040b2007200441016a360200200520046a200641807f72200641ff0071200641077622041b3a00002004210620040d000c8e010b0b200241046a210a200141086a2802002105200141046a280200210602400240200241086a2802002002410c6a2802002204460d00200a28020021070c010b200441016a22072004490d8f01200441017422082007200820074b1b22084100480d8f010240024020040d002008102a21070c010b200a28020020042008102e21070b2007450d8e0120022007360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200720046a41333a0000200241086a2109034002400240200928020020082802002204460d00200a28020021070c010b200441016a22072004490d90012004410174220b2007200b20074b1b220b4100480d90010240024020040d00200b102a21070c010b200a2802002004200b102e21070b2007450d8f01200220073602042009200b360200200828020021040b2008200441016a360200200720046a200641807f72200641ff0071200641077622041b3a00002004210620040d000b2002410c6a2107200241086a2108034002400240200828020020072802002204460d00200a28020021060c010b200441016a22062004490d9001200441017422092006200920064b1b22094100480d90010240024020040d002009102a21060c010b200a28020020042009102e21060b2006450d8f012002200636020420082009360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000c8d010b0b200241046a210a200141086a2802002105200141046a280200210602400240200241086a2802002002410c6a2802002204460d00200a28020021070c010b200441016a22072004490d8e01200441017422082007200820074b1b22084100480d8e010240024020040d002008102a21070c010b200a28020020042008102e21070b2007450d8d0120022007360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200720046a41343a0000200241086a2109034002400240200928020020082802002204460d00200a28020021070c010b200441016a22072004490d8f012004410174220b2007200b20074b1b220b4100480d8f010240024020040d00200b102a21070c010b200a2802002004200b102e21070b2007450d8e01200220073602042009200b360200200828020021040b2008200441016a360200200720046a200641807f72200641ff0071200641077622041b3a00002004210620040d000b2002410c6a2107200241086a2108034002400240200828020020072802002204460d00200a28020021060c010b200441016a22062004490d8f01200441017422092006200920064b1b22094100480d8f010240024020040d002009102a21060c010b200a28020020042009102e21060b2006450d8e012002200636020420082009360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000c8c010b0b200241046a210a200141086a2802002105200141046a280200210602400240200241086a2802002002410c6a2802002204460d00200a28020021070c010b200441016a22072004490d8d01200441017422082007200820074b1b22084100480d8d010240024020040d002008102a21070c010b200a28020020042008102e21070b2007450d8c0120022007360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200720046a41353a0000200241086a2109034002400240200928020020082802002204460d00200a28020021070c010b200441016a22072004490d8f012004410174220b2007200b20074b1b220b4100480d8f010240024020040d00200b102a21070c010b200a2802002004200b102e21070b2007450d8d01200220073602042009200b360200200828020021040b2008200441016a360200200720046a200641807f72200641ff0071200641077622041b3a00002004210620040d000b2002410c6a2107200241086a2108034002400240200828020020072802002204460d00200a28020021060c010b200441016a22062004490d8f01200441017422092006200920064b1b22094100480d8f010240024020040d002009102a21060c010b200a28020020042009102e21060b2006450d90012002200636020420082009360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000c8b010b0b200241046a210a200141086a2802002105200141046a280200210602400240200241086a2802002002410c6a2802002204460d00200a28020021070c010b200441016a22072004490d8d01200441017422082007200820074b1b22084100480d8d010240024020040d002008102a21070c010b200a28020020042008102e21070b2007450d8e0120022007360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200720046a41363a0000200241086a2109034002400240200928020020082802002204460d00200a28020021070c010b200441016a22072004490d8e012004410174220b2007200b20074b1b220b4100480d8e010240024020040d00200b102a21070c010b200a2802002004200b102e21070b2007450d8f01200220073602042009200b360200200828020021040b2008200441016a360200200720046a200641807f72200641ff0071200641077622041b3a00002004210620040d000b2002410c6a2107200241086a2108034002400240200828020020072802002204460d00200a28020021060c010b200441016a22062004490d8e01200441017422092006200920064b1b22094100480d8e010240024020040d002009102a21060c010b200a28020020042009102e21060b2006450d8f012002200636020420082009360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000c8a010b0b200241046a210a200141086a2802002106200141046a280200210502400240200241086a2802002002410c6a2802002204460d00200a28020021070c010b200441016a22072004490d8c01200441017422082007200820074b1b22084100480d8c010240024020040d002008102a21070c010b200a28020020042008102e21070b2007450d8d0120022007360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200720046a41373a0000200241086a2109034002400240200928020020082802002204460d00200a28020021070c010b200441016a22072004490d8d012004410174220b2007200b20074b1b220b4100480d8d010240024020040d00200b102a21070c010b200a2802002004200b102e21070b2007450d8e01200220073602042009200b360200200828020021040b2008200441016a360200200720046a200541807f72200541ff0071200541077622041b3a00002004210520040d000b2002410c6a2107200241086a2108034002400240200828020020072802002204460d00200a28020021050c010b200441016a22052004490d8d01200441017422092005200920054b1b22094100480d8d010240024020040d002009102a21050c010b200a28020020042009102e21050b2005450d8e012002200536020420082009360200200728020021040b2007200441016a360200200520046a200641807f72200641ff0071200641077622041b3a00002004210620040d000c89010b0b200241046a210a200141086a2802002105200141046a280200210602400240200241086a2802002002410c6a2802002204460d00200a28020021070c010b200441016a22072004490d8b01200441017422082007200820074b1b22084100480d8b010240024020040d002008102a21070c010b200a28020020042008102e21070b2007450d8c0120022007360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200720046a41383a0000200241086a2109034002400240200928020020082802002204460d00200a28020021070c010b200441016a22072004490d8c012004410174220b2007200b20074b1b220b4100480d8c010240024020040d00200b102a21070c010b200a2802002004200b102e21070b2007450d8d01200220073602042009200b360200200828020021040b2008200441016a360200200720046a200641807f72200641ff0071200641077622041b3a00002004210620040d000b2002410c6a2107200241086a2108034002400240200828020020072802002204460d00200a28020021060c010b200441016a22062004490d8c01200441017422092006200920064b1b22094100480d8c010240024020040d002009102a21060c010b200a28020020042009102e21060b2006450d8d012002200636020420082009360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000c88010b0b200241046a210a200141086a2802002106200141046a280200210502400240200241086a2802002002410c6a2802002204460d00200a28020021070c010b200441016a22072004490d8a01200441017422082007200820074b1b22084100480d8a010240024020040d002008102a21070c010b200a28020020042008102e21070b2007450d8b0120022007360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200720046a41393a0000200241086a2109034002400240200928020020082802002204460d00200a28020021070c010b200441016a22072004490d8b012004410174220b2007200b20074b1b220b4100480d8b010240024020040d00200b102a21070c010b200a2802002004200b102e21070b2007450d8c01200220073602042009200b360200200828020021040b2008200441016a360200200720046a200541807f72200541ff0071200541077622041b3a00002004210520040d000b2002410c6a2107200241086a2108034002400240200828020020072802002204460d00200a28020021050c010b200441016a22052004490d8b01200441017422092005200920054b1b22094100480d8b010240024020040d002009102a21050c010b200a28020020042009102e21050b2005450d8c012002200536020420082009360200200728020021040b2007200441016a360200200520046a200641807f72200641ff0071200641077622041b3a00002004210620040d000c87010b0b200241046a210a200141086a2802002106200141046a280200210502400240200241086a2802002002410c6a2802002204460d00200a28020021070c010b200441016a22072004490d8901200441017422082007200820074b1b22084100480d89010240024020040d002008102a21070c010b200a28020020042008102e21070b2007450d8a0120022007360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200720046a413a3a0000200241086a2109034002400240200928020020082802002204460d00200a28020021070c010b200441016a22072004490d8a012004410174220b2007200b20074b1b220b4100480d8a010240024020040d00200b102a21070c010b200a2802002004200b102e21070b2007450d8b01200220073602042009200b360200200828020021040b2008200441016a360200200720046a200541807f72200541ff0071200541077622041b3a00002004210520040d000b2002410c6a2107200241086a2108034002400240200828020020072802002204460d00200a28020021050c010b200441016a22052004490d8a01200441017422092005200920054b1b22094100480d8a010240024020040d002009102a21050c010b200a28020020042009102e21050b2005450d8b012002200536020420082009360200200728020021040b2007200441016a360200200520046a200641807f72200641ff0071200641077622041b3a00002004210620040d000c86010b0b200241046a210a200141086a2802002105200141046a280200210602400240200241086a2802002002410c6a2802002204460d00200a28020021070c010b200441016a22072004490d8801200441017422082007200820074b1b22084100480d88010240024020040d002008102a21070c010b200a28020020042008102e21070b2007450d890120022007360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200720046a413b3a0000200241086a2109034002400240200928020020082802002204460d00200a28020021070c010b200441016a22072004490d89012004410174220b2007200b20074b1b220b4100480d89010240024020040d00200b102a21070c010b200a2802002004200b102e21070b2007450d8a01200220073602042009200b360200200828020021040b2008200441016a360200200720046a200641807f72200641ff0071200641077622041b3a00002004210620040d000b2002410c6a2107200241086a2108034002400240200828020020072802002204460d00200a28020021060c010b200441016a22062004490d8901200441017422092006200920064b1b22094100480d89010240024020040d002009102a21060c010b200a28020020042009102e21060b2006450d8a012002200636020420082009360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000c85010b0b200241046a210a200141086a2802002105200141046a280200210602400240200241086a2802002002410c6a2802002204460d00200a28020021070c010b200441016a22072004490d8701200441017422082007200820074b1b22084100480d87010240024020040d002008102a21070c010b200a28020020042008102e21070b2007450d880120022007360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200720046a413c3a0000200241086a2109034002400240200928020020082802002204460d00200a28020021070c010b200441016a22072004490d88012004410174220b2007200b20074b1b220b4100480d88010240024020040d00200b102a21070c010b200a2802002004200b102e21070b2007450d8901200220073602042009200b360200200828020021040b2008200441016a360200200720046a200641807f72200641ff0071200641077622041b3a00002004210620040d000b2002410c6a2107200241086a2108034002400240200828020020072802002204460d00200a28020021060c010b200441016a22062004490d8801200441017422092006200920064b1b22094100480d88010240024020040d002009102a21060c010b200a28020020042009102e21060b2006450d89012002200636020420082009360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000c84010b0b200241046a210a200141086a2802002105200141046a280200210602400240200241086a2802002002410c6a2802002204460d00200a28020021070c010b200441016a22072004490d8601200441017422082007200820074b1b22084100480d86010240024020040d002008102a21070c010b200a28020020042008102e21070b2007450d870120022007360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200720046a413d3a0000200241086a2109034002400240200928020020082802002204460d00200a28020021070c010b200441016a22072004490d87012004410174220b2007200b20074b1b220b4100480d87010240024020040d00200b102a21070c010b200a2802002004200b102e21070b2007450d8801200220073602042009200b360200200828020021040b2008200441016a360200200720046a200641807f72200641ff0071200641077622041b3a00002004210620040d000b2002410c6a2107200241086a2108034002400240200828020020072802002204460d00200a28020021060c010b200441016a22062004490d8701200441017422092006200920064b1b22094100480d87010240024020040d002009102a21060c010b200a28020020042009102e21060b2006450d88012002200636020420082009360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000c83010b0b200241046a210a200141086a2802002105200141046a280200210602400240200241086a2802002002410c6a2802002204460d00200a28020021070c010b200441016a22072004490d8501200441017422082007200820074b1b22084100480d85010240024020040d002008102a21070c010b200a28020020042008102e21070b2007450d860120022007360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200720046a413e3a0000200241086a2109034002400240200928020020082802002204460d00200a28020021070c010b200441016a22072004490d86012004410174220b2007200b20074b1b220b4100480d86010240024020040d00200b102a21070c010b200a2802002004200b102e21070b2007450d8701200220073602042009200b360200200828020021040b2008200441016a360200200720046a200641807f72200641ff0071200641077622041b3a00002004210620040d000b2002410c6a2107200241086a2108034002400240200828020020072802002204460d00200a28020021060c010b200441016a22062004490d8601200441017422092006200920064b1b22094100480d86010240024020040d002009102a21060c010b200a28020020042009102e21060b2006450d87012002200636020420082009360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000c82010b0b200241046a210620012d0001210702400240200241086a2802002002410c6a2802002204460d00200628020021050c010b200441016a22052004490d8401200441017422082005200820054b1b22084100480d84010240024020040d002008102a21050c010b200628020020042008102e21050b2005450d850120022005360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200520046a413f3a000002400240200241086a28020020082802002204460d00200628020021050c010b200441016a22052004490d8401200441017422082005200820054b1b22084100480d84010240024020040d002008102a21050c010b200628020020042008102e21050b2005450d850120022005360204200241086a20083602002002410c6a28020021040b2002410c6a200441016a360200200520046a20073a00000c80010b200241046a210620012d0001210702400240200241086a2802002002410c6a2802002204460d00200628020021050c010b200441016a22052004490d8301200441017422082005200820054b1b22084100480d83010240024020040d002008102a21050c010b200628020020042008102e21050b2005450d840120022005360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200520046a41c0003a000002400240200241086a28020020082802002204460d00200628020021050c010b200441016a22052004490d8301200441017422082005200820054b1b22084100480d83010240024020040d002008102a21050c010b200628020020042008102e21050b2005450d840120022005360204200241086a20083602002002410c6a28020021040b2002410c6a200441016a360200200520046a20073a00000c7f0b200141046a280200210602400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d8201200441017422072005200720054b1b22074100480d82010240024020040d002007102a21050c010b200228020420042007102e21050b2005450d830120022005360204200241086a20073602002002410c6a28020021040b2002410c6a200441016a360200200520046a41c1003a00002003200620021088052003210420032d0000411f470d87010c7e0b200141086a290300210c02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d8101200441017422062005200620054b1b22064100480d81010240024020040d002006102a21050c010b200228020420042006102e21050b2005450d820120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41c2003a00002003200c20021089052003210420032d0000411f470d86010c7d0b200241046a2106200141046a280200210702400240200241086a2802002002410c6a2802002204460d00200628020021050c010b200441016a22052004490d8001200441017422082005200820054b1b22084100480d80010240024020040d002008102a21050c010b200628020020042008102e21050b2005450d810120022005360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200520046a41c3003a000002400240200241086a2802002205200828020022046b4104490d00200628020021050c010b200441046a22082004490d8001200541017422042008200420084b1b22044100480d80010240024020050d002004102a21050c010b200628020020052004102e21050b2005450d810120022005360204200241086a20043602002002410c6a28020021040b2002410c6a200441046a360200200520046a20073600000c7c0b200241046a2106200141086a290300210c02400240200241086a2802002002410c6a2802002204460d00200628020021050c010b200441016a22052004490d7f200441017422072005200720054b1b22074100480d7f0240024020040d002007102a21050c010b200628020020042007102e21050b2005450d800120022005360204200241086a20073602002002410c6a28020021040b2002410c6a2207200441016a360200200520046a41c4003a000002400240200241086a2802002205200728020022046b4108490d00200628020021050c010b200441086a22072004490d7f200541017422042007200420074b1b22044100480d7f0240024020050d002004102a21050c010b200628020020052004102e21050b2005450d800120022005360204200241086a20043602002002410c6a28020021040b2002410c6a200441086a360200200520046a200c3700000c7b0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d7e200441017422062005200620054b1b22064100480d7e0240024020040d002006102a21050c010b200228020420042006102e21050b2005450d7f20022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41c5003a00000c7a0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d7d200441017422062005200620054b1b22064100480d7d0240024020040d002006102a21050c010b200228020420042006102e21050b2005450d7e20022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41c6003a00000c790b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d7c200441017422062005200620054b1b22064100480d7c0240024020040d002006102a21050c010b200228020420042006102e21050b2005450d7d20022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41c7003a00000c780b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d7b200441017422062005200620054b1b22064100480d7b0240024020040d002006102a21050c010b200228020420042006102e21050b2005450d7c20022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41c8003a00000c770b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d7a200441017422062005200620054b1b22064100480d7a0240024020040d002006102a21050c010b200228020420042006102e21050b2005450d7b20022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41c9003a00000c760b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d79200441017422062005200620054b1b22064100480d790240024020040d002006102a21050c010b200228020420042006102e21050b2005450d7a20022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41ca003a00000c750b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d78200441017422062005200620054b1b22064100480d780240024020040d002006102a21050c010b200228020420042006102e21050b2005450d7920022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41cb003a00000c740b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d77200441017422062005200620054b1b22064100480d770240024020040d002006102a21050c010b200228020420042006102e21050b2005450d7820022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41cc003a00000c730b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d76200441017422062005200620054b1b22064100480d760240024020040d002006102a21050c010b200228020420042006102e21050b2005450d7720022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41cd003a00000c720b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d75200441017422062005200620054b1b22064100480d750240024020040d002006102a21050c010b200228020420042006102e21050b2005450d7620022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41ce003a00000c710b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d74200441017422062005200620054b1b22064100480d740240024020040d002006102a21050c010b200228020420042006102e21050b2005450d7520022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41cf003a00000c700b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d73200441017422062005200620054b1b22064100480d730240024020040d002006102a21050c010b200228020420042006102e21050b2005450d7420022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41d0003a00000c6f0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d72200441017422062005200620054b1b22064100480d720240024020040d002006102a21050c010b200228020420042006102e21050b2005450d7320022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41d1003a00000c6e0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d71200441017422062005200620054b1b22064100480d710240024020040d002006102a21050c010b200228020420042006102e21050b2005450d7220022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41d2003a00000c6d0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d70200441017422062005200620054b1b22064100480d700240024020040d002006102a21050c010b200228020420042006102e21050b2005450d7120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41d3003a00000c6c0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d6f200441017422062005200620054b1b22064100480d6f0240024020040d002006102a21050c010b200228020420042006102e21050b2005450d7020022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41d4003a00000c6b0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d6e200441017422062005200620054b1b22064100480d6e0240024020040d002006102a21050c010b200228020420042006102e21050b2005450d6f20022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41d5003a00000c6a0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d6d200441017422062005200620054b1b22064100480d6d0240024020040d002006102a21050c010b200228020420042006102e21050b2005450d6e20022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41d6003a00000c690b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d6c200441017422062005200620054b1b22064100480d6c0240024020040d002006102a21050c010b200228020420042006102e21050b2005450d6d20022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41d7003a00000c680b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d6b200441017422062005200620054b1b22064100480d6b0240024020040d002006102a21050c010b200228020420042006102e21050b2005450d6c20022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41d8003a00000c670b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d6a200441017422062005200620054b1b22064100480d6a0240024020040d002006102a21050c010b200228020420042006102e21050b2005450d6b20022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41d9003a00000c660b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d69200441017422062005200620054b1b22064100480d690240024020040d002006102a21050c010b200228020420042006102e21050b2005450d6a20022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41da003a00000c650b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d68200441017422062005200620054b1b22064100480d680240024020040d002006102a21050c010b200228020420042006102e21050b2005450d6920022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41db003a00000c640b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d67200441017422062005200620054b1b22064100480d670240024020040d002006102a21050c010b200228020420042006102e21050b2005450d6820022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41dc003a00000c630b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d66200441017422062005200620054b1b22064100480d660240024020040d002006102a21050c010b200228020420042006102e21050b2005450d6720022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41dd003a00000c620b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d65200441017422062005200620054b1b22064100480d650240024020040d002006102a21050c010b200228020420042006102e21050b2005450d6620022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41de003a00000c610b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d64200441017422062005200620054b1b22064100480d640240024020040d002006102a21050c010b200228020420042006102e21050b2005450d6520022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41df003a00000c600b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d63200441017422062005200620054b1b22064100480d630240024020040d002006102a21050c010b200228020420042006102e21050b2005450d6420022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41e0003a00000c5f0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d62200441017422062005200620054b1b22064100480d620240024020040d002006102a21050c010b200228020420042006102e21050b2005450d6320022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41e1003a00000c5e0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d61200441017422062005200620054b1b22064100480d610240024020040d002006102a21050c010b200228020420042006102e21050b2005450d6220022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41e2003a00000c5d0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d60200441017422062005200620054b1b22064100480d600240024020040d002006102a21050c010b200228020420042006102e21050b2005450d6120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41e3003a00000c5c0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d5f200441017422062005200620054b1b22064100480d5f0240024020040d002006102a21050c010b200228020420042006102e21050b2005450d6020022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41e4003a00000c5b0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d5e200441017422062005200620054b1b22064100480d5e0240024020040d002006102a21050c010b200228020420042006102e21050b2005450d5f20022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41e5003a00000c5a0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d5d200441017422062005200620054b1b22064100480d5d0240024020040d002006102a21050c010b200228020420042006102e21050b2005450d5e20022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41e6003a00000c590b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d5c200441017422062005200620054b1b22064100480d5c0240024020040d002006102a21050c010b200228020420042006102e21050b2005450d5d20022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41e7003a00000c580b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d5b200441017422062005200620054b1b22064100480d5b0240024020040d002006102a21050c010b200228020420042006102e21050b2005450d5c20022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41e8003a00000c570b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d5c200441017422062005200620054b1b22064100480d5c0240024020040d002006102a21050c010b200228020420042006102e21050b2005450d5b20022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41e9003a00000c560b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d5b200441017422062005200620054b1b22064100480d5b0240024020040d002006102a21050c010b200228020420042006102e21050b2005450d5c20022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41ea003a00000c550b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d5a200441017422062005200620054b1b22064100480d5a0240024020040d002006102a21050c010b200228020420042006102e21050b2005450d5b20022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41eb003a00000c540b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d59200441017422062005200620054b1b22064100480d590240024020040d002006102a21050c010b200228020420042006102e21050b2005450d5a20022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41ec003a00000c530b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d58200441017422062005200620054b1b22064100480d580240024020040d002006102a21050c010b200228020420042006102e21050b2005450d5920022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41ed003a00000c520b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d57200441017422062005200620054b1b22064100480d570240024020040d002006102a21050c010b200228020420042006102e21050b2005450d5820022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41ee003a00000c510b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d56200441017422062005200620054b1b22064100480d560240024020040d002006102a21050c010b200228020420042006102e21050b2005450d5720022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41ef003a00000c500b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d55200441017422062005200620054b1b22064100480d550240024020040d002006102a21050c010b200228020420042006102e21050b2005450d5620022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41f0003a00000c4f0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d54200441017422062005200620054b1b22064100480d540240024020040d002006102a21050c010b200228020420042006102e21050b2005450d5520022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41f1003a00000c4e0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d53200441017422062005200620054b1b22064100480d530240024020040d002006102a21050c010b200228020420042006102e21050b2005450d5420022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41f2003a00000c4d0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d52200441017422062005200620054b1b22064100480d520240024020040d002006102a21050c010b200228020420042006102e21050b2005450d5320022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41f3003a00000c4c0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d51200441017422062005200620054b1b22064100480d510240024020040d002006102a21050c010b200228020420042006102e21050b2005450d5220022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41f4003a00000c4b0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d50200441017422062005200620054b1b22064100480d500240024020040d002006102a21050c010b200228020420042006102e21050b2005450d5120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41f5003a00000c4a0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d4f200441017422062005200620054b1b22064100480d4f0240024020040d002006102a21050c010b200228020420042006102e21050b2005450d5020022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41f6003a00000c490b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d4e200441017422062005200620054b1b22064100480d4e0240024020040d002006102a21050c010b200228020420042006102e21050b2005450d4f20022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41f7003a00000c480b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d4d200441017422062005200620054b1b22064100480d4d0240024020040d002006102a21050c010b200228020420042006102e21050b2005450d4e20022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41f8003a00000c470b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d4c200441017422062005200620054b1b22064100480d4c0240024020040d002006102a21050c010b200228020420042006102e21050b2005450d4d20022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41f9003a00000c460b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d4b200441017422062005200620054b1b22064100480d4b0240024020040d002006102a21050c010b200228020420042006102e21050b2005450d4c20022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41fa003a00000c450b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d4a200441017422062005200620054b1b22064100480d4a0240024020040d002006102a21050c010b200228020420042006102e21050b2005450d4b20022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41fb003a00000c440b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d49200441017422062005200620054b1b22064100480d490240024020040d002006102a21050c010b200228020420042006102e21050b2005450d4a20022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41fc003a00000c430b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d48200441017422062005200620054b1b22064100480d480240024020040d002006102a21050c010b200228020420042006102e21050b2005450d4920022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41fd003a00000c420b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d47200441017422062005200620054b1b22064100480d470240024020040d002006102a21050c010b200228020420042006102e21050b2005450d4820022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41fe003a00000c410b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d46200441017422062005200620054b1b22064100480d460240024020040d002006102a21050c010b200228020420042006102e21050b2005450d4720022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41ff003a00000c400b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d45200441017422062005200620054b1b22064100480d450240024020040d002006102a21050c010b200228020420042006102e21050b2005450d4620022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a4180013a00000c3f0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d44200441017422062005200620054b1b22064100480d440240024020040d002006102a21050c010b200228020420042006102e21050b2005450d4520022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a4181013a00000c3e0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d43200441017422062005200620054b1b22064100480d430240024020040d002006102a21050c010b200228020420042006102e21050b2005450d4420022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a4182013a00000c3d0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d42200441017422062005200620054b1b22064100480d420240024020040d002006102a21050c010b200228020420042006102e21050b2005450d4320022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a4183013a00000c3c0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d41200441017422062005200620054b1b22064100480d410240024020040d002006102a21050c010b200228020420042006102e21050b2005450d4220022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a4184013a00000c3b0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d40200441017422062005200620054b1b22064100480d400240024020040d002006102a21050c010b200228020420042006102e21050b2005450d4120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a4185013a00000c3a0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d3f200441017422062005200620054b1b22064100480d3f0240024020040d002006102a21050c010b200228020420042006102e21050b2005450d4020022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a4186013a00000c390b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d3e200441017422062005200620054b1b22064100480d3e0240024020040d002006102a21050c010b200228020420042006102e21050b2005450d3f20022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a4187013a00000c380b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d3d200441017422062005200620054b1b22064100480d3d0240024020040d002006102a21050c010b200228020420042006102e21050b2005450d3e20022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a4188013a00000c370b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d3c200441017422062005200620054b1b22064100480d3c0240024020040d002006102a21050c010b200228020420042006102e21050b2005450d3d20022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a4189013a00000c360b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d3b200441017422062005200620054b1b22064100480d3b0240024020040d002006102a21050c010b200228020420042006102e21050b2005450d3c20022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a418a013a00000c350b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d3a200441017422062005200620054b1b22064100480d3a0240024020040d002006102a21050c010b200228020420042006102e21050b2005450d3b20022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a418b013a00000c340b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d39200441017422062005200620054b1b22064100480d390240024020040d002006102a21050c010b200228020420042006102e21050b2005450d3a20022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a418c013a00000c330b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d38200441017422062005200620054b1b22064100480d380240024020040d002006102a21050c010b200228020420042006102e21050b2005450d3920022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a418d013a00000c320b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d37200441017422062005200620054b1b22064100480d370240024020040d002006102a21050c010b200228020420042006102e21050b2005450d3820022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a418e013a00000c310b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d36200441017422062005200620054b1b22064100480d360240024020040d002006102a21050c010b200228020420042006102e21050b2005450d3720022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a418f013a00000c300b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d35200441017422062005200620054b1b22064100480d350240024020040d002006102a21050c010b200228020420042006102e21050b2005450d3620022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a4190013a00000c2f0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d34200441017422062005200620054b1b22064100480d340240024020040d002006102a21050c010b200228020420042006102e21050b2005450d3520022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a4191013a00000c2e0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d33200441017422062005200620054b1b22064100480d330240024020040d002006102a21050c010b200228020420042006102e21050b2005450d3420022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a4192013a00000c2d0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d32200441017422062005200620054b1b22064100480d320240024020040d002006102a21050c010b200228020420042006102e21050b2005450d3320022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a4193013a00000c2c0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d31200441017422062005200620054b1b22064100480d310240024020040d002006102a21050c010b200228020420042006102e21050b2005450d3220022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a4194013a00000c2b0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d30200441017422062005200620054b1b22064100480d300240024020040d002006102a21050c010b200228020420042006102e21050b2005450d3120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a4195013a00000c2a0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d2f200441017422062005200620054b1b22064100480d2f0240024020040d002006102a21050c010b200228020420042006102e21050b2005450d3020022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a4196013a00000c290b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d2e200441017422062005200620054b1b22064100480d2e0240024020040d002006102a21050c010b200228020420042006102e21050b2005450d2f20022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a4197013a00000c280b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d2d200441017422062005200620054b1b22064100480d2d0240024020040d002006102a21050c010b200228020420042006102e21050b2005450d2e20022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a4198013a00000c270b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d2c200441017422062005200620054b1b22064100480d2c0240024020040d002006102a21050c010b200228020420042006102e21050b2005450d2d20022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a4199013a00000c260b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d2b200441017422062005200620054b1b22064100480d2b0240024020040d002006102a21050c010b200228020420042006102e21050b2005450d2c20022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a419a013a00000c250b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d2a200441017422062005200620054b1b22064100480d2a0240024020040d002006102a21050c010b200228020420042006102e21050b2005450d2b20022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a419b013a00000c240b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d29200441017422062005200620054b1b22064100480d290240024020040d002006102a21050c010b200228020420042006102e21050b2005450d2a20022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a419c013a00000c230b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d28200441017422062005200620054b1b22064100480d280240024020040d002006102a21050c010b200228020420042006102e21050b2005450d2920022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a419d013a00000c220b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d27200441017422062005200620054b1b22064100480d270240024020040d002006102a21050c010b200228020420042006102e21050b2005450d2820022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a419e013a00000c210b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d26200441017422062005200620054b1b22064100480d260240024020040d002006102a21050c010b200228020420042006102e21050b2005450d2720022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a419f013a00000c200b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d25200441017422062005200620054b1b22064100480d250240024020040d002006102a21050c010b200228020420042006102e21050b2005450d2620022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41a0013a00000c1f0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d24200441017422062005200620054b1b22064100480d240240024020040d002006102a21050c010b200228020420042006102e21050b2005450d2520022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41a1013a00000c1e0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d23200441017422062005200620054b1b22064100480d230240024020040d002006102a21050c010b200228020420042006102e21050b2005450d2420022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41a2013a00000c1d0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d22200441017422062005200620054b1b22064100480d220240024020040d002006102a21050c010b200228020420042006102e21050b2005450d2320022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41a3013a00000c1c0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d21200441017422062005200620054b1b22064100480d210240024020040d002006102a21050c010b200228020420042006102e21050b2005450d2220022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41a4013a00000c1b0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d20200441017422062005200620054b1b22064100480d200240024020040d002006102a21050c010b200228020420042006102e21050b2005450d2120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41a5013a00000c1a0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d1f200441017422062005200620054b1b22064100480d1f0240024020040d002006102a21050c010b200228020420042006102e21050b2005450d2020022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41a6013a00000c190b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d1e200441017422062005200620054b1b22064100480d1e0240024020040d002006102a21050c010b200228020420042006102e21050b2005450d1f20022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41a7013a00000c180b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d1d200441017422062005200620054b1b22064100480d1d0240024020040d002006102a21050c010b200228020420042006102e21050b2005450d1e20022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41a8013a00000c170b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d1c200441017422062005200620054b1b22064100480d1c0240024020040d002006102a21050c010b200228020420042006102e21050b2005450d1d20022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41a9013a00000c160b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d1b200441017422062005200620054b1b22064100480d1b0240024020040d002006102a21050c010b200228020420042006102e21050b2005450d1c20022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41aa013a00000c150b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d1a200441017422062005200620054b1b22064100480d1a0240024020040d002006102a21050c010b200228020420042006102e21050b2005450d1b20022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41ab013a00000c140b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d19200441017422062005200620054b1b22064100480d190240024020040d002006102a21050c010b200228020420042006102e21050b2005450d1a20022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41ac013a00000c130b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d18200441017422062005200620054b1b22064100480d180240024020040d002006102a21050c010b200228020420042006102e21050b2005450d1920022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41ad013a00000c120b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d17200441017422062005200620054b1b22064100480d170240024020040d002006102a21050c010b200228020420042006102e21050b2005450d1820022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41ae013a00000c110b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d16200441017422062005200620054b1b22064100480d160240024020040d002006102a21050c010b200228020420042006102e21050b2005450d1720022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41af013a00000c100b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d15200441017422062005200620054b1b22064100480d150240024020040d002006102a21050c010b200228020420042006102e21050b2005450d1620022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41b0013a00000c0f0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d14200441017422062005200620054b1b22064100480d140240024020040d002006102a21050c010b200228020420042006102e21050b2005450d1520022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41b1013a00000c0e0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d13200441017422062005200620054b1b22064100480d130240024020040d002006102a21050c010b200228020420042006102e21050b2005450d1420022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41b2013a00000c0d0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d12200441017422062005200620054b1b22064100480d120240024020040d002006102a21050c010b200228020420042006102e21050b2005450d1320022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41b3013a00000c0c0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d14200441017422062005200620054b1b22064100480d140240024020040d002006102a21050c010b200228020420042006102e21050b2005450d1220022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41b4013a00000c0b0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d13200441017422062005200620054b1b22064100480d130240024020040d002006102a21050c010b200228020420042006102e21050b2005450d1220022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41b5013a00000c0a0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d12200441017422062005200620054b1b22064100480d120240024020040d002006102a21050c010b200228020420042006102e21050b2005450d1120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41b6013a00000c090b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d11200441017422062005200620054b1b22064100480d110240024020040d002006102a21050c010b200228020420042006102e21050b2005450d1020022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41b7013a00000c080b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d10200441017422062005200620054b1b22064100480d100240024020040d002006102a21050c010b200228020420042006102e21050b2005450d0f20022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41b8013a00000c070b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d0f200441017422062005200620054b1b22064100480d0f0240024020040d002006102a21050c010b200228020420042006102e21050b2005450d0e20022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41b9013a00000c060b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d0e200441017422062005200620054b1b22064100480d0e0240024020040d002006102a21050c010b200228020420042006102e21050b2005450d0d20022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41ba013a00000c050b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d0d200441017422062005200620054b1b22064100480d0d0240024020040d002006102a21050c010b200228020420042006102e21050b2005450d0c20022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41bb013a00000c040b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d0c200441017422062005200620054b1b22064100480d0c0240024020040d002006102a21050c010b200228020420042006102e21050b2005450d0b20022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41bc013a00000c030b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d0b200441017422062005200620054b1b22064100480d0b0240024020040d002006102a21050c010b200228020420042006102e21050b2005450d0a20022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41bd013a00000c020b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d0a200441017422062005200620054b1b22064100480d0a0240024020040d002006102a21050c010b200228020420042006102e21050b2005450d0920022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41be013a00000c010b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d09200441017422062005200620054b1b22064100480d090240024020040d002006102a21050c010b200228020420042006102e21050b2005450d0820022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41bf013a00000b2000411f3a000020012d00004109470d090240200141046a280200220228020441ffffffff0371450d002002280200102c200128020421020b2002102c0c090b1033000b1035000b1035000b1033000b1035000b1033000b1033000b1035000b20002004290200370200200041086a200441086a29020037020020012d00004109470d000240200141046a280200220228020441ffffffff0371450d002002280200102c200128020421020b2002102c0b200341106a24000ba80301057f2004410c6a2105200441086a210602400240034002400240200628020020052802002207460d00200428020421080c010b200741016a22082007490d03200741017422092008200920084b1b22094100480d030240024020070d002009102a21080c010b200428020420072009102e21080b2008450d022004200836020420062009360200200528020021070b2005200741016a360200200820076a200141807f72200141ff0071200141077622071b3a00002007210120070d000b024020022003460d002004410c6a2105200441086a2106034020022802002101034002400240200628020020052802002207460d00200428020421080c010b200741016a22082007490d05200741017422092008200920084b1b22094100480d050240024020070d002009102a21080c010b200428020420072009102e21080b2008450d042004200836020420062009360200200528020021070b2005200741016a360200200820076a200141807f72200141ff0071200141077622071b3a00002007210120070d000b200241046a22022003470d000b0b2000411f3a00000f0b1033000b1035000ba10301067f02400240024020014107752203200141c00071220472452003417f4720044572460d002002410c6a2105200241086a2106034002400240200628020020052802002204460d00200228020421070c010b200441016a22072004490d04200441017422082007200820074b1b22084100480d040240024020040d002008102a21070c010b200228020420042008102e21070b2007450d032002200736020420062008360200200528020021040b2005200441016a360200200720046a200141807f723a0000200341c000712104200321012003410775220721032007200472452007417f4720044572470d000b0b02400240200241086a2802002002410c6a2802002204460d00200228020421030c010b200441016a22032004490d02200441017422072003200720034b1b22074100480d020240024020040d002007102a21030c010b200228020420042007102e21030b2003450d0120022003360204200241086a20073602002002410c6a28020021040b2002410c6a200441016a360200200320046a200141ff00713a00002000411f3a00000f0b1033000b1035000ba50302017e067f02400240024020014207872203502001a7220441c00071452205712003427f52200572460d002002410c6a2106200241086a2107034002400240200728020020062802002205460d00200228020421080c010b200541016a22082005490d04200541017422092008200920084b1b22094100480d040240024020050d002009102a21080c010b200228020420052009102e21080b2008450d032002200836020420072009360200200628020021050b2006200541016a360200200820056a200441807f723a00002003a72104200342078722012103200150200441c00071452205712001427f52200572470d000b0b02400240200241086a2802002002410c6a2802002205460d00200228020421080c010b200541016a22082005490d02200541017422062008200620084b1b22064100480d020240024020050d002006102a21080c010b200228020420052006102e21080b2008450d0120022008360204200241086a20063602002002410c6a28020021050b2002410c6a200541016a360200200820056a200441ff00713a00002000411f3a00000f0b1033000b1035000bdd03010a7f230041306b22022400200241216a220341076a210441002105410021064100210741002108410821090240024002400340200241186a2001108b05024020022802184101470d002000200229021c370204200041013602002000410c6a200241186a410c6a29020037020002402007450d00200921070340024020072d00004109470d000240200741046a220a280200220528020441ffffffff0371450d002005280200102c200a28020021050b2005102c0b200741106a2107200641706a22060d000b0b2008450d042009102c0c040b200220032900003703082002200429000037000f20022d0020210a2002200229000f37001f200220022903083703180240024020072008470d00200741016a220b2007490d032005200b2005200b4b1b220841ffffffff00712008470d032008410474220b4100480d030240024020070d00200b102a21090c010b20092006200b102e21090b2009450d010b200920066a220b200a3a0000200b41016a2002290318370000200b41086a200229001f370000200541026a2105200641106a2106200741016a2107200a41ff01714106460d030c010b0b1033000b1035000b20002009360204200041003602002000410c6a2007360200200041086a20083602000b200241306a24000bedb501020b7f017e230041f0006b220224000240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020012802082203200128020c2204460d00200441016a22052004490d02200320054f0d0120052003103f000b200241013a0048200241ec006a41013602002002420137025c200241f0f7c5003602582002412b36023c2002200241386a3602682002200241c8006a360238200241086a200241d8006a1037200241336a200241106a2802003600002002200229030837002b2002200229002837031820022002412f6a29000037001f200041053a0004200020022903183700052000410c6a200229001f370000200041013602000c630b2001280200220620046a2d000021072001410c6a2208200536020002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240200741bf014b0d0020070ec001b802b802010203b80200000000000405060708090a00000000000000000b0c000000000d0e0f101100000012131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f80018101820183018401850186018701880189018a018b018c018d018e018f0190019101920193019401950196019701980199019a019b019c019d019e019f01a001a101a201a301a401a501a601a701a801a901b8020b2000410b3a000420004101360200200041056a20073a00000cbb020b024002400240024002400240024020032005460d00200441026a21092005417f460de00120032009490da202200620056a2c00002101200820093602004100210a0240200141004e0d00411921090c020b0240200141017441807f71200172220141ff0171220541847e6a220941034d0d0041062109200541c001470d034104210a410221070cbe020b20090e0404030506040b200241013a0047200241ec006a41013602002002420137025c200241f0f7c5003602582002412b36023c2002200241386a3602682002200241c7006a360238200241c8006a200241d8006a1037200241326a200241d0006a2802003601002002200229034837012a2002200229012837031820022002412e6a29010037011e410521090b2002200229011e37010e200220022903183703080b200020013a0005200020093a000420002002290308370106200041013602002000410c6a200229010e3701000cbe020b4102210a410221070cb9020b4103210a410221070cb8020b4101210a0b410221070cb6020b024002400240024002400240024020032005460d00200441026a21092005417f460de00120032009490da202200620056a2c00002101200820093602004100210a0240200141004e0d00411921090c020b0240200141017441807f71200172220141ff0171220541847e6a220941034d0d0041062109200541c001470d034104210a410321070cbd020b20090e0404030506040b200241013a0047200241ec006a41013602002002420137025c200241f0f7c5003602582002412b36023c2002200241386a3602682002200241c7006a360238200241c8006a200241d8006a1037200241326a200241d0006a2802003601002002200229034837012a2002200229012837031820022002412e6a29010037011e410521090b2002200229011e37010e200220022903183703080b200020013a0005200020093a000420002002290308370106200041013602002000410c6a200229010e3701000cbd020b4102210a410321070cb8020b4103210a410321070cb7020b4101210a0b410321070cb5020b024002400240024002400240024020032005460d00200441026a21092005417f460de00120032009490da202200620056a2c00002101200820093602004100210a0240200141004e0d00411921090c020b0240200141017441807f71200172220141ff0171220541847e6a220941034d0d0041062109200541c001470d034104210a410421070cbc020b20090e0404030506040b200241013a0047200241ec006a41013602002002420137025c200241f0f7c5003602582002412b36023c2002200241386a3602682002200241c7006a360238200241c8006a200241d8006a1037200241326a200241d0006a2802003601002002200229034837012a2002200229012837031820022002412e6a29010037011e410521090b2002200229011e37010e200220022903183703080b200020013a0005200020093a000420002002290308370106200041013602002000410c6a200229010e3701000cbc020b4102210a410421070cb7020b4103210a410421070cb6020b4101210a0b410421070cb4020b410621070cb3020b410021014100210902400240034002402001411f4d0d00410f21010c020b0240024020032005460d002005417f460ddd012003200541016a22074f0d01200541016a2003103f000b200241013a0018200241ec006a41013602002002420137025c200241f0f7c5003602582002412b36023c2002200241386a3602682002200241186a360238200241286a200241d8006a1037410521010c020b200620056a2d0000210420082007360200200441ff00712001411f71742009722109200141076a2101200721052004418001710d000b20014120490d01410d210120044110490d010b2000200136020420004101360200200041086a2002290328370200200041106a200241286a41086a2802003602000cb7020b410721070cb2020b410021014100210902400240034002402001411f4d0d00410f21010c020b0240024020032005460d002005417f460ddd012003200541016a22074f0d01200541016a2003103f000b200241013a0018200241ec006a41013602002002420137025c200241f0f7c5003602582002412b36023c2002200241386a3602682002200241186a360238200241286a200241d8006a1037410521010c020b200620056a2d0000210420082007360200200441ff00712001411f71742009722109200141076a2101200721052004418001710d000b20014120490d01410d210120044110490d010b2000200136020420004101360200200041086a2002290328370200200041106a200241286a41086a2802003602000cb6020b410821070cb1020b200241d8006a2001108c054104210a200228025822074101460da201200241e0006a280200210b41002106200228025c210c02400240200241e4006a280200220941027422050d00410021040c010b2005410275220441ffffffff03712004470dd901200441027422034100480dd9012003102a220a450db2020b02402009450d00200941027421032005417c6a2106200a2109200c2105034020092005280200360200200941046a2109200541046a21052003417c6a22030d000b200641027641016a21060b0240200b450d00200c102c0b20022d005c4105470daf022007450daf0220022802640da3010caf020b410a21070caf020b410021014100210902400240034002402001411f4d0d00410f21010c020b0240024020032005460d002005417f460ddc012003200541016a22074f0d01200541016a2003103f000b200241013a0018200241ec006a41013602002002420137025c200241f0f7c5003602582002412b36023c2002200241386a3602682002200241186a360238200241286a200241d8006a1037410521010c020b200620056a2d0000210420082007360200200441ff00712001411f71742009722109200141076a2101200721052004418001710d000b20014120490d01410d210120044110490d010b2000200136020420004101360200200041086a2002290328370200200041106a200241286a41086a2802003602000cb3020b410b21070cae020b410021014100210902400240034002402001411f4d0d00410f21010c020b0240024020032005460d002005417f460ddc012003200541016a22044f0d01200541016a2003103f000b200241013a0018200241ec006a41013602002002420137025c200241f0f7c5003602582002412b36023c2002200241386a3602682002200241186a360238200241286a200241d8006a1037410521010c020b200620056a2d0000210720082004360200200741ff00712001411f71742009722109200141076a2101200421052007418001710d000b20014120490d01410d210120074110490d010b2000200136020420004101360200200041086a2002290328370200200041106a200241286a41086a2802003602000cb2020b0240024020032004460d00200441016a22012004490dda01200320014f0d0120012003103f000b200241013a0048200241ec006a41013602002002420137025c200241f0f7c5003602582002412b36023c2002200241386a3602682002200241c8006a360238200241086a200241d8006a1037200241336a200241106a2802003600002002200229030837002b2002200229002837031820022002412f6a29000037001f200041053a0004200020022903183700052000410c6a200229001f370000200041013602000cb2020b200620046a2d0000210520082001360200024020050d00410c21074100210a0cae020b200041163a000420004101360200200041056a20053a00000cb1020b410d21070cac020b410e21070cab020b410021014100210902400240034002402001411f4d0d00410f21010c020b0240024020032005460d002005417f460ddb012003200541016a22074f0d01200541016a2003103f000b200241013a0018200241ec006a41013602002002420137025c200241f0f7c5003602582002412b36023c2002200241386a3602682002200241186a360238200241286a200241d8006a1037410521010c020b200620056a2d0000210420082007360200200441ff00712001411f71742009722109200141076a2101200721052004418001710d000b20014120490d01410d210120044110490d010b2000200136020420004101360200200041086a2002290328370200200041106a200241286a41086a2802003602000caf020b410f21070caa020b410021014100210902400240034002402001411f4d0d00410f21010c020b0240024020032005460d002005417f460ddb012003200541016a22074f0d01200541016a2003103f000b200241013a0018200241ec006a41013602002002420137025c200241f0f7c5003602582002412b36023c2002200241386a3602682002200241186a360238200241286a200241d8006a1037410521010c020b200620056a2d0000210420082007360200200441ff00712001411f71742009722109200141076a2101200721052004418001710d000b20014120490d01410d210120044110490d010b2000200136020420004101360200200041086a2002290328370200200041106a200241286a41086a2802003602000cae020b411021070ca9020b410021014100210902400240034002402001411f4d0d00410f21010c020b0240024020032005460d002005417f460ddb012003200541016a22074f0d01200541016a2003103f000b200241013a0018200241ec006a41013602002002420137025c200241f0f7c5003602582002412b36023c2002200241386a3602682002200241186a360238200241286a200241d8006a1037410521010c020b200620056a2d0000210420082007360200200441ff00712001411f71742009722109200141076a2101200721052004418001710d000b20014120490d01410d210120044110490d010b2000200136020420004101360200200041086a2002290328370200200041106a200241286a41086a2802003602000cad020b411121070ca8020b410021014100210902400240034002402001411f4d0d00410f21010c020b0240024020032005460d002005417f460ddb012003200541016a22074f0d01200541016a2003103f000b200241013a0018200241ec006a41013602002002420137025c200241f0f7c5003602582002412b36023c2002200241386a3602682002200241186a360238200241286a200241d8006a1037410521010c020b200620056a2d0000210420082007360200200441ff00712001411f71742009722109200141076a2101200721052004418001710d000b20014120490d01410d210120044110490d010b2000200136020420004101360200200041086a2002290328370200200041106a200241286a41086a2802003602000cac020b411221070ca7020b410021014100210902400240034002402001411f4d0d00410f21010c020b0240024020032005460d002005417f460ddb012003200541016a22074f0d01200541016a2003103f000b200241013a0018200241ec006a41013602002002420137025c200241f0f7c5003602582002412b36023c2002200241386a3602682002200241186a360238200241286a200241d8006a1037410521010c020b200620056a2d0000210420082007360200200441ff00712001411f71742009722109200141076a2101200721052004418001710d000b20014120490d01410d210120044110490d010b2000200136020420004101360200200041086a2002290328370200200041106a200241286a41086a2802003602000cab020b411321070ca6020b410120036b2107200441026a21014100210541002109024002400240034002402005411f4d0d00410f21010c020b02400240200720016a4102460d002001450ddc01200320014f0d0120012003103f000b200241013a0018200241ec006a41013602002002420137025c200241f0f7c5003602582002412b36023c2002200241386a3602682002200241186a360238200241286a200241d8006a103720022802282109200228022c210520022802302103410521010c030b200620016a417f6a2d0000210420082001360200200441ff00712005411f71742009722109200141016a2101200541076a21052004418001710d000b20054120490d0220044110490d02410d21010b0b2000200136020420004101360200200041106a20033602002000410c6a2005360200200041086a20093602000caa020b2001417f6a2101410021054100210a034002402005411f4d0d00410f21010c9c010b20032001460d9a012001417f460dd8012003200141016a2207490d8e02200620016a2d0000210420082007360200200441ff00712005411f7174200a72210a200541076a2105200721012004418001710d000b024020054120490d00410d21012004410f4b0d9b010b200aad210d411421070ca5020b410120036b2107200441026a21014100210541002109024002400240034002402005411f4d0d00410f21010c020b02400240200720016a4102460d002001450ddd01200320014f0d0120012003103f000b200241013a0018200241ec006a41013602002002420137025c200241f0f7c5003602582002412b36023c2002200241386a3602682002200241186a360238200241286a200241d8006a103720022802282109200228022c210520022802302103410521010c030b200620016a417f6a2d0000210420082001360200200441ff00712005411f71742009722109200141016a2101200541076a21052004418001710d000b20054120490d0220044110490d02410d21010b0b2000200136020420004101360200200041106a20033602002000410c6a2005360200200041086a20093602000ca9020b2001417f6a2101410021054100210a034002402005411f4d0d00410f21010c9d010b20032001460d9b012001417f460dd9012003200141016a2207490d8e02200620016a2d0000210420082007360200200441ff00712005411f7174200a72210a200541076a2105200721012004418001710d000b024020054120490d00410d21012004410f4b0d9c010b200aad210d411521070ca4020b410120036b2107200441026a21014100210541002109024002400240034002402005411f4d0d00410f21010c020b02400240200720016a4102460d002001450dde01200320014f0d0120012003103f000b200241013a0018200241ec006a41013602002002420137025c200241f0f7c5003602582002412b36023c2002200241386a3602682002200241186a360238200241286a200241d8006a103720022802282109200228022c210520022802302103410521010c030b200620016a417f6a2d0000210420082001360200200441ff00712005411f71742009722109200141016a2101200541076a21052004418001710d000b20054120490d0220044110490d02410d21010b0b2000200136020420004101360200200041106a20033602002000410c6a2005360200200041086a20093602000ca8020b2001417f6a2101410021054100210a034002402005411f4d0d00410f21010c9e010b20032001460d9c012001417f460dda012003200141016a2207490d8e02200620016a2d0000210420082007360200200441ff00712005411f7174200a72210a200541076a2105200721012004418001710d000b024020054120490d00410d21012004410f4b0d9d010b200aad210d411621070ca3020b410120036b2107200441026a21014100210541002109024002400240034002402005411f4d0d00410f21010c020b02400240200720016a4102460d002001450ddf01200320014f0d0120012003103f000b200241013a0018200241ec006a41013602002002420137025c200241f0f7c5003602582002412b36023c2002200241386a3602682002200241186a360238200241286a200241d8006a103720022802282109200228022c210520022802302103410521010c030b200620016a417f6a2d0000210420082001360200200441ff00712005411f71742009722109200141016a2101200541076a21052004418001710d000b20054120490d0220044110490d02410d21010b0b2000200136020420004101360200200041106a20033602002000410c6a2005360200200041086a20093602000ca7020b2001417f6a2101410021054100210a034002402005411f4d0d00410f21010c9f010b20032001460d9d012001417f460ddb012003200141016a2207490d8e02200620016a2d0000210420082007360200200441ff00712005411f7174200a72210a200541076a2105200721012004418001710d000b024020054120490d00410d21012004410f4b0d9e010b200aad210d411721070ca2020b410120036b2107200441026a21014100210541002109024002400240034002402005411f4d0d00410f21010c020b02400240200720016a4102460d002001450de001200320014f0d0120012003103f000b200241013a0018200241ec006a41013602002002420137025c200241f0f7c5003602582002412b36023c2002200241386a3602682002200241186a360238200241286a200241d8006a103720022802282109200228022c210520022802302103410521010c030b200620016a417f6a2d0000210420082001360200200441ff00712005411f71742009722109200141016a2101200541076a21052004418001710d000b20054120490d0220044110490d02410d21010b0b2000200136020420004101360200200041106a20033602002000410c6a2005360200200041086a20093602000ca6020b2001417f6a2101410021054100210a034002402005411f4d0d00410f21010ca0010b20032001460d9e012001417f460ddc012003200141016a2207490d8e02200620016a2d0000210420082007360200200441ff00712005411f7174200a72210a200541076a2105200721012004418001710d000b024020054120490d00410d21012004410f4b0d9f010b200aad210d411821070ca1020b410120036b2107200441026a21014100210541002109024002400240034002402005411f4d0d00410f21010c020b02400240200720016a4102460d002001450de101200320014f0d0120012003103f000b200241013a0018200241ec006a41013602002002420137025c200241f0f7c5003602582002412b36023c2002200241386a3602682002200241186a360238200241286a200241d8006a103720022802282109200228022c210520022802302103410521010c030b200620016a417f6a2d0000210420082001360200200441ff00712005411f71742009722109200141016a2101200541076a21052004418001710d000b20054120490d0220044110490d02410d21010b0b2000200136020420004101360200200041106a20033602002000410c6a2005360200200041086a20093602000ca5020b2001417f6a2101410021054100210a034002402005411f4d0d00410f21010ca1010b20032001460d9f012001417f460ddd012003200141016a2207490d8e02200620016a2d0000210420082007360200200441ff00712005411f7174200a72210a200541076a2105200721012004418001710d000b024020054120490d00410d21012004410f4b0da0010b200aad210d411921070ca0020b410120036b2107200441026a21014100210541002109024002400240034002402005411f4d0d00410f21010c020b02400240200720016a4102460d002001450de201200320014f0d0120012003103f000b200241013a0018200241ec006a41013602002002420137025c200241f0f7c5003602582002412b36023c2002200241386a3602682002200241186a360238200241286a200241d8006a103720022802282109200228022c210520022802302103410521010c030b200620016a417f6a2d0000210420082001360200200441ff00712005411f71742009722109200141016a2101200541076a21052004418001710d000b20054120490d0220044110490d02410d21010b0b2000200136020420004101360200200041106a20033602002000410c6a2005360200200041086a20093602000ca4020b2001417f6a2101410021054100210a034002402005411f4d0d00410f21010ca2010b20032001460da0012001417f460dde012003200141016a2207490d8e02200620016a2d0000210420082007360200200441ff00712005411f7174200a72210a200541076a2105200721012004418001710d000b024020054120490d00410d21012004410f4b0da1010b200aad210d411a21070c9f020b410120036b2107200441026a21014100210541002109024002400240034002402005411f4d0d00410f21010c020b02400240200720016a4102460d002001450de301200320014f0d0120012003103f000b200241013a0018200241ec006a41013602002002420137025c200241f0f7c5003602582002412b36023c2002200241386a3602682002200241186a360238200241286a200241d8006a103720022802282109200228022c210520022802302103410521010c030b200620016a417f6a2d0000210420082001360200200441ff00712005411f71742009722109200141016a2101200541076a21052004418001710d000b20054120490d0220044110490d02410d21010b0b2000200136020420004101360200200041106a20033602002000410c6a2005360200200041086a20093602000ca3020b2001417f6a2101410021054100210a034002402005411f4d0d00410f21010ca3010b20032001460da1012001417f460ddf012003200141016a2207490d8e02200620016a2d0000210420082007360200200441ff00712005411f7174200a72210a200541076a2105200721012004418001710d000b024020054120490d00410d21012004410f4b0da2010b200aad210d411b21070c9e020b410120036b2107200441026a21014100210541002109024002400240034002402005411f4d0d00410f21010c020b02400240200720016a4102460d002001450de401200320014f0d0120012003103f000b200241013a0018200241ec006a41013602002002420137025c200241f0f7c5003602582002412b36023c2002200241386a3602682002200241186a360238200241286a200241d8006a103720022802282109200228022c210520022802302103410521010c030b200620016a417f6a2d0000210420082001360200200441ff00712005411f71742009722109200141016a2101200541076a21052004418001710d000b20054120490d0220044110490d02410d21010b0b2000200136020420004101360200200041106a20033602002000410c6a2005360200200041086a20093602000ca2020b2001417f6a2101410021054100210a034002402005411f4d0d00410f21010ca4010b20032001460da2012001417f460de0012003200141016a2207490d8e02200620016a2d0000210420082007360200200441ff00712005411f7174200a72210a200541076a2105200721012004418001710d000b024020054120490d00410d21012004410f4b0da3010b200aad210d411c21070c9d020b410120036b2107200441026a21014100210541002109024002400240034002402005411f4d0d00410f21010c020b02400240200720016a4102460d002001450de501200320014f0d0120012003103f000b200241013a0018200241ec006a41013602002002420137025c200241f0f7c5003602582002412b36023c2002200241386a3602682002200241186a360238200241286a200241d8006a103720022802282109200228022c210520022802302103410521010c030b200620016a417f6a2d0000210420082001360200200441ff00712005411f71742009722109200141016a2101200541076a21052004418001710d000b20054120490d0220044110490d02410d21010b0b2000200136020420004101360200200041106a20033602002000410c6a2005360200200041086a20093602000ca1020b2001417f6a2101410021054100210a034002402005411f4d0d00410f21010ca5010b20032001460da3012001417f460de1012003200141016a2207490d8e02200620016a2d0000210420082007360200200441ff00712005411f7174200a72210a200541076a2105200721012004418001710d000b024020054120490d00410d21012004410f4b0da4010b200aad210d411d21070c9c020b410120036b2107200441026a21014100210541002109024002400240034002402005411f4d0d00410f21010c020b02400240200720016a4102460d002001450de601200320014f0d0120012003103f000b200241013a0018200241ec006a41013602002002420137025c200241f0f7c5003602582002412b36023c2002200241386a3602682002200241186a360238200241286a200241d8006a103720022802282109200228022c210520022802302103410521010c030b200620016a417f6a2d0000210420082001360200200441ff00712005411f71742009722109200141016a2101200541076a21052004418001710d000b20054120490d0220044110490d02410d21010b0b2000200136020420004101360200200041106a20033602002000410c6a2005360200200041086a20093602000ca0020b2001417f6a2101410021054100210a034002402005411f4d0d00410f21010ca6010b20032001460da4012001417f460de2012003200141016a2207490d8e02200620016a2d0000210420082007360200200441ff00712005411f7174200a72210a200541076a2105200721012004418001710d000b024020054120490d00410d21012004410f4b0da5010b200aad210d411e21070c9b020b410120036b2107200441026a21014100210541002109024002400240034002402005411f4d0d00410f21010c020b02400240200720016a4102460d002001450de701200320014f0d0120012003103f000b200241013a0018200241ec006a41013602002002420137025c200241f0f7c5003602582002412b36023c2002200241386a3602682002200241186a360238200241286a200241d8006a103720022802282109200228022c210520022802302103410521010c030b200620016a417f6a2d0000210420082001360200200441ff00712005411f71742009722109200141016a2101200541076a21052004418001710d000b20054120490d0220044110490d02410d21010b0b2000200136020420004101360200200041106a20033602002000410c6a2005360200200041086a20093602000c9f020b2001417f6a2101410021054100210a034002402005411f4d0d00410f21010ca7010b20032001460da5012001417f460de3012003200141016a2207490d8e02200620016a2d0000210420082007360200200441ff00712005411f7174200a72210a200541076a2105200721012004418001710d000b024020054120490d00410d21012004410f4b0da6010b200aad210d411f21070c9a020b410120036b2107200441026a21014100210541002109024002400240034002402005411f4d0d00410f21010c020b02400240200720016a4102460d002001450de801200320014f0d0120012003103f000b200241013a0018200241ec006a41013602002002420137025c200241f0f7c5003602582002412b36023c2002200241386a3602682002200241186a360238200241286a200241d8006a103720022802282109200228022c210520022802302103410521010c030b200620016a417f6a2d0000210420082001360200200441ff00712005411f71742009722109200141016a2101200541076a21052004418001710d000b20054120490d0220044110490d02410d21010b0b2000200136020420004101360200200041106a20033602002000410c6a2005360200200041086a20093602000c9e020b2001417f6a2101410021054100210a034002402005411f4d0d00410f21010ca8010b20032001460da6012001417f460de4012003200141016a2207490d8e02200620016a2d0000210420082007360200200441ff00712005411f7174200a72210a200541076a2105200721012004418001710d000b41202107024020054120490d00410d21012004410f4b0da7010b200aad210d0c99020b410120036b2107200441026a21014100210541002109024002400240034002402005411f4d0d00410f21010c020b02400240200720016a4102460d002001450de901200320014f0d0120012003103f000b200241013a0018200241ec006a41013602002002420137025c200241f0f7c5003602582002412b36023c2002200241386a3602682002200241186a360238200241286a200241d8006a103720022802282109200228022c210520022802302103410521010c030b200620016a417f6a2d0000210420082001360200200441ff00712005411f71742009722109200141016a2101200541076a21052004418001710d000b20054120490d0220044110490d02410d21010b0b2000200136020420004101360200200041106a20033602002000410c6a2005360200200041086a20093602000c9d020b2001417f6a2101410021054100210a034002402005411f4d0d00410f21010ca9010b20032001460da7012001417f460de5012003200141016a2207490d8e02200620016a2d0000210420082007360200200441ff00712005411f7174200a72210a200541076a2105200721012004418001710d000b024020054120490d00410d21012004410f4b0da8010b200aad210d412121070c98020b410120036b2107200441026a21014100210541002109024002400240034002402005411f4d0d00410f21010c020b02400240200720016a4102460d002001450dea01200320014f0d0120012003103f000b200241013a0018200241ec006a41013602002002420137025c200241f0f7c5003602582002412b36023c2002200241386a3602682002200241186a360238200241286a200241d8006a103720022802282109200228022c210520022802302103410521010c030b200620016a417f6a2d0000210420082001360200200441ff00712005411f71742009722109200141016a2101200541076a21052004418001710d000b20054120490d0220044110490d02410d21010b0b2000200136020420004101360200200041106a20033602002000410c6a2005360200200041086a20093602000c9c020b2001417f6a2101410021054100210a034002402005411f4d0d00410f21010caa010b20032001460da8012001417f460de6012003200141016a2207490d8e02200620016a2d0000210420082007360200200441ff00712005411f7174200a72210a200541076a2105200721012004418001710d000b024020054120490d00410d21012004410f4b0da9010b200aad210d412221070c97020b410120036b2107200441026a21014100210541002109024002400240034002402005411f4d0d00410f21010c020b02400240200720016a4102460d002001450deb01200320014f0d0120012003103f000b200241013a0018200241ec006a41013602002002420137025c200241f0f7c5003602582002412b36023c2002200241386a3602682002200241186a360238200241286a200241d8006a103720022802282109200228022c210520022802302103410521010c030b200620016a417f6a2d0000210420082001360200200441ff00712005411f71742009722109200141016a2101200541076a21052004418001710d000b20054120490d0220044110490d02410d21010b0b2000200136020420004101360200200041106a20033602002000410c6a2005360200200041086a20093602000c9b020b2001417f6a2101410021054100210a034002402005411f4d0d00410f21010cab010b20032001460da9012001417f460de7012003200141016a2207490d8e02200620016a2d0000210420082007360200200441ff00712005411f7174200a72210a200541076a2105200721012004418001710d000b024020054120490d00410d21012004410f4b0daa010b200aad210d412321070c96020b410120036b2107200441026a21014100210541002109024002400240034002402005411f4d0d00410f21010c020b02400240200720016a4102460d002001450dec01200320014f0d0120012003103f000b200241013a0018200241ec006a41013602002002420137025c200241f0f7c5003602582002412b36023c2002200241386a3602682002200241186a360238200241286a200241d8006a103720022802282109200228022c210520022802302103410521010c030b200620016a417f6a2d0000210420082001360200200441ff00712005411f71742009722109200141016a2101200541076a21052004418001710d000b20054120490d0220044110490d02410d21010b0b2000200136020420004101360200200041106a20033602002000410c6a2005360200200041086a20093602000c9a020b2001417f6a2101410021054100210a034002402005411f4d0d00410f21010cac010b20032001460daa012001417f460de8012003200141016a2207490d8e02200620016a2d0000210420082007360200200441ff00712005411f7174200a72210a200541076a2105200721012004418001710d000b024020054120490d00410d21012004410f4b0dab010b200aad210d412421070c95020b410120036b2107200441026a21014100210541002109024002400240034002402005411f4d0d00410f21010c020b02400240200720016a4102460d002001450ded01200320014f0d0120012003103f000b200241013a0018200241ec006a41013602002002420137025c200241f0f7c5003602582002412b36023c2002200241386a3602682002200241186a360238200241286a200241d8006a103720022802282109200228022c210520022802302103410521010c030b200620016a417f6a2d0000210420082001360200200441ff00712005411f71742009722109200141016a2101200541076a21052004418001710d000b20054120490d0220044110490d02410d21010b0b2000200136020420004101360200200041106a20033602002000410c6a2005360200200041086a20093602000c99020b2001417f6a2101410021054100210a034002402005411f4d0d00410f21010cad010b20032001460dab012001417f460de9012003200141016a2207490d8e02200620016a2d0000210420082007360200200441ff00712005411f7174200a72210a200541076a2105200721012004418001710d000b024020054120490d00410d21012004410f4b0dac010b200aad210d412521070c94020b410120036b2107200441026a21014100210541002109024002400240034002402005411f4d0d00410f21010c020b02400240200720016a4102460d002001450dee01200320014f0d0120012003103f000b200241013a0018200241ec006a41013602002002420137025c200241f0f7c5003602582002412b36023c2002200241386a3602682002200241186a360238200241286a200241d8006a103720022802282109200228022c210520022802302103410521010c030b200620016a417f6a2d0000210420082001360200200441ff00712005411f71742009722109200141016a2101200541076a21052004418001710d000b20054120490d0220044110490d02410d21010b0b2000200136020420004101360200200041106a20033602002000410c6a2005360200200041086a20093602000c98020b2001417f6a2101410021054100210a034002402005411f4d0d00410f21010cae010b20032001460dac012001417f460dea012003200141016a2207490d8e02200620016a2d0000210420082007360200200441ff00712005411f7174200a72210a200541076a2105200721012004418001710d000b024020054120490d00410d21012004410f4b0dad010b200aad210d412621070c93020b410120036b2107200441026a21014100210541002109024002400240034002402005411f4d0d00410f21010c020b02400240200720016a4102460d002001450def01200320014f0d0120012003103f000b200241013a0018200241ec006a41013602002002420137025c200241f0f7c5003602582002412b36023c2002200241386a3602682002200241186a360238200241286a200241d8006a103720022802282109200228022c210520022802302103410521010c030b200620016a417f6a2d0000210420082001360200200441ff00712005411f71742009722109200141016a2101200541076a21052004418001710d000b20054120490d0220044110490d02410d21010b0b2000200136020420004101360200200041106a20033602002000410c6a2005360200200041086a20093602000c97020b2001417f6a2101410021054100210a034002402005411f4d0d00410f21010caf010b20032001460dad012001417f460deb012003200141016a2207490d8e02200620016a2d0000210420082007360200200441ff00712005411f7174200a72210a200541076a2105200721012004418001710d000b024020054120490d00410d21012004410f4b0dae010b200aad210d412721070c92020b410120036b2107200441026a21014100210541002109024002400240034002402005411f4d0d00410f21010c020b02400240200720016a4102460d002001450df001200320014f0d0120012003103f000b200241013a0018200241ec006a41013602002002420137025c200241f0f7c5003602582002412b36023c2002200241386a3602682002200241186a360238200241286a200241d8006a103720022802282109200228022c210520022802302103410521010c030b200620016a417f6a2d0000210420082001360200200441ff00712005411f71742009722109200141016a2101200541076a21052004418001710d000b20054120490d0220044110490d02410d21010b0b2000200136020420004101360200200041106a20033602002000410c6a2005360200200041086a20093602000c96020b2001417f6a2101410021054100210a034002402005411f4d0d00410f21010cb0010b20032001460dae012001417f460dec012003200141016a2207490d8e02200620016a2d0000210420082007360200200441ff00712005411f7174200a72210a200541076a2105200721012004418001710d000b024020054120490d00410d21012004410f4b0daf010b200aad210d412821070c91020b410120036b2107200441026a21014100210541002109024002400240034002402005411f4d0d00410f21010c020b02400240200720016a4102460d002001450df101200320014f0d0120012003103f000b200241013a0018200241ec006a41013602002002420137025c200241f0f7c5003602582002412b36023c2002200241386a3602682002200241186a360238200241286a200241d8006a103720022802282109200228022c210520022802302103410521010c030b200620016a417f6a2d0000210420082001360200200441ff00712005411f71742009722109200141016a2101200541076a21052004418001710d000b20054120490d0220044110490d02410d21010b0b2000200136020420004101360200200041106a20033602002000410c6a2005360200200041086a20093602000c95020b2001417f6a2101410021054100210a034002402005411f4d0d00410f21010cb1010b20032001460daf012001417f460ded012003200141016a2207490d8e02200620016a2d0000210420082007360200200441ff00712005411f7174200a72210a200541076a2105200721012004418001710d000b024020054120490d00410d21012004410f4b0db0010b200aad210d412921070c90020b410120036b2107200441026a21014100210541002109024002400240034002402005411f4d0d00410f21010c020b02400240200720016a4102460d002001450df201200320014f0d0120012003103f000b200241013a0018200241ec006a41013602002002420137025c200241f0f7c5003602582002412b36023c2002200241386a3602682002200241186a360238200241286a200241d8006a103720022802282109200228022c210520022802302103410521010c030b200620016a417f6a2d0000210420082001360200200441ff00712005411f71742009722109200141016a2101200541076a21052004418001710d000b20054120490d0220044110490d02410d21010b0b2000200136020420004101360200200041106a20033602002000410c6a2005360200200041086a20093602000c94020b2001417f6a2101410021054100210a034002402005411f4d0d00410f21010cb2010b20032001460db0012001417f460dee012003200141016a2207490d8e02200620016a2d0000210420082007360200200441ff00712005411f7174200a72210a200541076a2105200721012004418001710d000b024020054120490d00410d21012004410f4b0db1010b200aad210d412a21070c8f020b0240024020032005460d00200441026a21012005417f460def01200320014f0d0120012003103f000b200241013a0048200241ec006a41013602002002420137025c200241f0f7c5003602582002412b36023c2002200241386a3602682002200241c8006a360238200241086a200241d8006a1037200241336a200241106a2802003600002002200229030837002b2002200229002837031820022002412f6a29000037001f200041053a0004200020022903183700052000410c6a200229001f370000200041013602000c93020b200620056a2d0000210920082001360200024020090d00412b21074100210a0c8f020b200041153a000420004101360200200041056a20093a00000c92020b0240024020032005460d00200441026a21012005417f460def01200320014f0d0120012003103f000b200241013a0048200241ec006a41013602002002420137025c200241f0f7c5003602582002412b36023c2002200241386a3602682002200241c8006a360238200241086a200241d8006a1037200241336a200241106a2802003600002002200229030837002b2002200229002837031820022002412f6a29000037001f200041053a0004200020022903183700052000410c6a200229001f370000200041013602000c92020b200620056a2d0000210920082001360200024020090d00412c21074100210a0c8e020b200041153a000420004101360200200041056a20093a00000c91020b41002101410021090240024002400340410d210a2001411f4b0d010240024020032005460d002005417f460df3012003200541016a22074f0d01200541016a2003103f000b200241013a0018200241ec006a41013602002002420137025c200241f0f7c5003602582002412b36023c2002200241386a3602682002200241186a360238200241286a200241d8006a10374105210a0c020b200620056a2c0000210420082007360200200441ff00712001411f71742009722109200141076a21012007210520044100480d000b200441c00071210502402001411f4b0d0020050d020b0240024020014120490d0020050d010b200441ff01714108490d0320014120490d032005450d010c030b20044180017241ff017141f7014b0d020b2000200a36020420004101360200200041086a2002290328370200200041106a200241286a41086a2802003602000c92020b2009417f2001411f71747221090b412d21070c8c020b4200210d4100210102400240024002400340410e21072001413f4b0d010240024020032005460d002005417f460df4012003200541016a22094f0d01200541016a2003103f000b200241013a0008200241ec006a41013602002002420137025c200241f0f7c5003602582002412b36023c2002200241386a3602682002200241086a360238200241286a200241d8006a10372002290328210d20022802302101410521070c030b200620056a2d0000210420082009360200200441ff0071220aad2001413f71ad86200d84210d200141076a210120092105200441187441187522094100480d000b200941c00071210502402001413f4b0d0020050d030b02400240200141c000490d0020050d010b200141c000490d0420090d010c040b200a41ff00460d030b0b200020073a0004200020022f00183b000520004101360200200041106a2001360200200041086a200d370200200041076a2002411a6a2d00003a00000c91020b200d427f2001413f71ad8684210d0b412e21070c8b020b02400240200320056b4104490d00200441056a21012005417b4b0def01200320014f0d0120012003103f000b200241013a0018200241ec006a41013602002002420137025c200241f0f7c5003602582002412b36023c2002200241386a3602682002200241186a360238200241286a200241d8006a103720004281808080d000370300200041086a2002290328370200200041106a200241286a41086a2802003602000c8f020b200620056a280000210920082001360200412f21070c8a020b02400240200320056b4108490d00200441096a2101200541774b0def01200320014f0d0120012003103f000b200241013a0018200241ec006a41013602002002420137025c200241f0f7c5003602582002412b36023c2002200241386a3602682002200241186a360238200241286a200241d8006a10372002290328210d200041106a2002280230360200200041086a200d37020020004281808080d0003703000c8e020b200620056a290000210d20082001360200413021070c89020b413121070c88020b413221070c87020b413321070c86020b413421070c85020b413521070c84020b413621070c83020b413721070c82020b413821070c81020b413921070c80020b413a21070cff010b413b21070cfe010b413c21070cfd010b413d21070cfc010b413e21070cfb010b413f21070cfa010b41c00021070cf9010b41c10021070cf8010b41c20021070cf7010b41c30021070cf6010b41c40021070cf5010b41c50021070cf4010b41c60021070cf3010b41c70021070cf2010b41c80021070cf1010b41c90021070cf0010b41ca0021070cef010b41cb0021070cee010b41cc0021070ced010b41cd0021070cec010b41ce0021070ceb010b41cf0021070cea010b41d00021070ce9010b41d10021070ce8010b41d20021070ce7010b41d30021070ce6010b41d40021070ce5010b41d50021070ce4010b41d60021070ce3010b41d70021070ce2010b41d80021070ce1010b41d90021070ce0010b41da0021070cdf010b41db0021070cde010b41dc0021070cdd010b41dd0021070cdc010b41de0021070cdb010b41df0021070cda010b41e00021070cd9010b41e10021070cd8010b41e20021070cd7010b41e30021070cd6010b41e40021070cd5010b41e50021070cd4010b41e60021070cd3010b41e70021070cd2010b41e80021070cd1010b41e90021070cd0010b41ea0021070ccf010b41eb0021070cce010b41ec0021070ccd010b41ed0021070ccc010b41ee0021070ccb010b41ef0021070cca010b41f00021070cc9010b41f10021070cc8010b41f20021070cc7010b41f30021070cc6010b41f40021070cc5010b41f50021070cc4010b41f60021070cc3010b41f70021070cc2010b41f80021070cc1010b41f90021070cc0010b41fa0021070cbf010b41fb0021070cbe010b41fc0021070cbd010b41fd0021070cbc010b41fe0021070cbb010b41ff0021070cba010b41800121070cb9010b41810121070cb8010b41820121070cb7010b41830121070cb6010b41840121070cb5010b41850121070cb4010b41860121070cb3010b41870121070cb2010b41880121070cb1010b41890121070cb0010b418a0121070caf010b418b0121070cae010b418c0121070cad010b418d0121070cac010b418e0121070cab010b418f0121070caa010b41900121070ca9010b41910121070ca8010b41920121070ca7010b41930121070ca6010b41940121070ca5010b41950121070ca4010b41960121070ca3010b41970121070ca2010b41980121070ca1010b41990121070ca0010b419a0121070c9f010b419b0121070c9e010b419c0121070c9d010b419d0121070c9c010b419e0121070c9b010b419f0121070c9a010b41a00121070c99010b41a10121070c98010b41a20121070c97010b41a30121070c96010b41a40121070c95010b41a50121070c94010b41a60121070c93010b41a70121070c92010b41a80121070c91010b41a90121070c90010b41aa0121070c8f010b41ab0121070c8e010b200041013602002000200241d8006a41047222012902003702042000410c6a200141086a2902003702000c91010b2002280260102c0c8b010b200241013a0018200241ec006a41013602002002420137025c200241f0f7c5003602582002412b36023c2002200241386a3602682002200241186a360238200241286a200241d8006a1037410521010b2000200136020420004101360200200041086a2002290328370200200041106a200241286a41086a2802003602000c8e010b200241013a0018200241ec006a41013602002002420137025c200241f0f7c5003602582002412b36023c2002200241386a3602682002200241186a360238200241286a200241d8006a1037410521010b2000200136020420004101360200200041086a2002290328370200200041106a200241286a41086a2802003602000c8c010b200241013a0018200241ec006a41013602002002420137025c200241f0f7c5003602582002412b36023c2002200241386a3602682002200241186a360238200241286a200241d8006a1037410521010b2000200136020420004101360200200041086a2002290328370200200041106a200241286a41086a2802003602000c8a010b200241013a0018200241ec006a41013602002002420137025c200241f0f7c5003602582002412b36023c2002200241386a3602682002200241186a360238200241286a200241d8006a1037410521010b2000200136020420004101360200200041086a2002290328370200200041106a200241286a41086a2802003602000c88010b200241013a0018200241ec006a41013602002002420137025c200241f0f7c5003602582002412b36023c2002200241386a3602682002200241186a360238200241286a200241d8006a1037410521010b2000200136020420004101360200200041086a2002290328370200200041106a200241286a41086a2802003602000c86010b200241013a0018200241ec006a41013602002002420137025c200241f0f7c5003602582002412b36023c2002200241386a3602682002200241186a360238200241286a200241d8006a1037410521010b2000200136020420004101360200200041086a2002290328370200200041106a200241286a41086a2802003602000c84010b200241013a0018200241ec006a41013602002002420137025c200241f0f7c5003602582002412b36023c2002200241386a3602682002200241186a360238200241286a200241d8006a1037410521010b2000200136020420004101360200200041086a2002290328370200200041106a200241286a41086a2802003602000c82010b200241013a0018200241ec006a41013602002002420137025c200241f0f7c5003602582002412b36023c2002200241386a3602682002200241186a360238200241286a200241d8006a1037410521010b2000200136020420004101360200200041086a2002290328370200200041106a200241286a41086a2802003602000c80010b200241013a0018200241ec006a41013602002002420137025c200241f0f7c5003602582002412b36023c2002200241386a3602682002200241186a360238200241286a200241d8006a1037410521010b2000200136020420004101360200200041086a2002290328370200200041106a200241286a41086a2802003602000c7e0b200241013a0018200241ec006a41013602002002420137025c200241f0f7c5003602582002412b36023c2002200241386a3602682002200241186a360238200241286a200241d8006a1037410521010b2000200136020420004101360200200041086a2002290328370200200041106a200241286a41086a2802003602000c7c0b200241013a0018200241ec006a41013602002002420137025c200241f0f7c5003602582002412b36023c2002200241386a3602682002200241186a360238200241286a200241d8006a1037410521010b2000200136020420004101360200200041086a2002290328370200200041106a200241286a41086a2802003602000c7a0b200241013a0018200241ec006a41013602002002420137025c200241f0f7c5003602582002412b36023c2002200241386a3602682002200241186a360238200241286a200241d8006a1037410521010b2000200136020420004101360200200041086a2002290328370200200041106a200241286a41086a2802003602000c780b200241013a0018200241ec006a41013602002002420137025c200241f0f7c5003602582002412b36023c2002200241386a3602682002200241186a360238200241286a200241d8006a1037410521010b2000200136020420004101360200200041086a2002290328370200200041106a200241286a41086a2802003602000c760b200241013a0018200241ec006a41013602002002420137025c200241f0f7c5003602582002412b36023c2002200241386a3602682002200241186a360238200241286a200241d8006a1037410521010b2000200136020420004101360200200041086a2002290328370200200041106a200241286a41086a2802003602000c740b200241013a0018200241ec006a41013602002002420137025c200241f0f7c5003602582002412b36023c2002200241386a3602682002200241186a360238200241286a200241d8006a1037410521010b2000200136020420004101360200200041086a2002290328370200200041106a200241286a41086a2802003602000c720b200241013a0018200241ec006a41013602002002420137025c200241f0f7c5003602582002412b36023c2002200241386a3602682002200241186a360238200241286a200241d8006a1037410521010b2000200136020420004101360200200041086a2002290328370200200041106a200241286a41086a2802003602000c700b200241013a0018200241ec006a41013602002002420137025c200241f0f7c5003602582002412b36023c2002200241386a3602682002200241186a360238200241286a200241d8006a1037410521010b2000200136020420004101360200200041086a2002290328370200200041106a200241286a41086a2802003602000c6e0b200241013a0018200241ec006a41013602002002420137025c200241f0f7c5003602582002412b36023c2002200241386a3602682002200241186a360238200241286a200241d8006a1037410521010b2000200136020420004101360200200041086a2002290328370200200041106a200241286a41086a2802003602000c6c0b200241013a0018200241ec006a41013602002002420137025c200241f0f7c5003602582002412b36023c2002200241386a3602682002200241186a360238200241286a200241d8006a1037410521010b2000200136020420004101360200200041086a2002290328370200200041106a200241286a41086a2802003602000c6a0b200241013a0018200241ec006a41013602002002420137025c200241f0f7c5003602582002412b36023c2002200241386a3602682002200241186a360238200241286a200241d8006a1037410521010b2000200136020420004101360200200041086a2002290328370200200041106a200241286a41086a2802003602000c680b200241013a0018200241ec006a41013602002002420137025c200241f0f7c5003602582002412b36023c2002200241386a3602682002200241186a360238200241286a200241d8006a1037410521010b2000200136020420004101360200200041086a2002290328370200200041106a200241286a41086a2802003602000c660b200241013a0018200241ec006a41013602002002420137025c200241f0f7c5003602582002412b36023c2002200241386a3602682002200241186a360238200241286a200241d8006a1037410521010b2000200136020420004101360200200041086a2002290328370200200041106a200241286a41086a2802003602000c640b200241013a0018200241ec006a41013602002002420137025c200241f0f7c5003602582002412b36023c2002200241386a3602682002200241186a360238200241286a200241d8006a1037410521010b2000200136020420004101360200200041086a2002290328370200200041106a200241286a41086a2802003602000c620b417f20051047000b417f20091047000b417f20091047000b417f20091047000b417f200541016a1047000b417f200541016a1047000b1035000b417f200541016a1047000b417f200541016a1047000b417f20011047000b417f200541016a1047000b417f200541016a1047000b417f200541016a1047000b417f200541016a1047000b417f200541016a1047000b417f20011047000b417f200141016a1047000b417f20011047000b417f200141016a1047000b417f20011047000b417f200141016a1047000b417f20011047000b417f200141016a1047000b417f20011047000b417f200141016a1047000b417f20011047000b417f200141016a1047000b417f20011047000b417f200141016a1047000b417f20011047000b417f200141016a1047000b417f20011047000b417f200141016a1047000b417f20011047000b417f200141016a1047000b417f20011047000b417f200141016a1047000b417f20011047000b417f200141016a1047000b417f20011047000b417f200141016a1047000b417f20011047000b417f200141016a1047000b417f20011047000b417f200141016a1047000b417f20011047000b417f200141016a1047000b417f20011047000b417f200141016a1047000b417f20011047000b417f200141016a1047000b417f20011047000b417f200141016a1047000b417f20011047000b417f200141016a1047000b417f20011047000b417f200141016a1047000b417f20011047000b417f200141016a1047000b417f20011047000b417f200141016a1047000b417f20011047000b417f20011047000b417f200541016a1047000b417f200541016a1047000b200520011047000b200520011047000b20092003103f000b20092003103f000b20092003103f000b200141016a2003103f000b200141016a2003103f000b200141016a2003103f000b200141016a2003103f000b200141016a2003103f000b200141016a2003103f000b200141016a2003103f000b200141016a2003103f000b200141016a2003103f000b200141016a2003103f000b200141016a2003103f000b200141016a2003103f000b200141016a2003103f000b200141016a2003103f000b200141016a2003103f000b200141016a2003103f000b200141016a2003103f000b200141016a2003103f000b200141016a2003103f000b200141016a2003103f000b200141016a2003103f000b200141016a2003103f000b200141016a2003103f000b0240024002400240024020042006460d0020042006490d01024020060d00024020040d004104210a0c020b200a102c4104210a0c010b200a20044102742006410274102e220a450d060b4100210941002104034002402009411f4d0d00410f21010c090b20012802082207200128020c2205460d07200541016a22032005490d0220072003490d03200128020020056a2d0000210520082003360200200541ff00712009411f71742004722104200941076a21092005418001710d000b20094120490d03410d21012005410f4b0d070c030b41b3c7c500412441acfec5001036000b417f20031047000b20032007103f000b410c102a2209450d0120092004360208200920063602042009200a360200410921070b20004100360200200041106a200d3703002000410c6a2009360200200041096a200a3a0000200041086a20073a00000c030b1033000b200241013a0018200241ec006a41013602002002420137025c200241f0f7c5003602582002412b36023c2002200241386a3602682002200241186a360238200241286a200241d8006a1037410521010b2000200136020420004101360200200041086a2002290328370200200041106a200241286a41086a280200360200200641ffffffff0371450d00200a102c0b200241f0006a24000bd20703067f017e067f230041d0006b220224004100210341002104024002400240024002400240024002400240024002400240034002402003411f4d0d00410f21030c020b0240024020012802082205200128020c2206460d00200641016a22072006490d05200520074f0d0120072005103f000b200241013a0027200241cc006a41013602002002420137023c200241f0f7c5003602382002412b36021c2002200241186a3602482002200241276a360218200241286a200241386a1037410521030c020b200128020020066a2d000021062001200736020c200641ff00712003411f71742004722104200341076a21032006418001710d000b20034120490d01410d210320064110490d010b200241086a41086a200241286a41086a280200220136020020022002290328220837030820002003360204200041086a2008370200200041106a2001360200200041013602000c0a0b20024100360210200242043703082004450d0841042109410021034100210a03402003210b200a220c41016a210a410021034100210503402003411f4b0d04024002402001280208220d200128020c2206460d00200641016a22072006490d05200d20074f0d012007200d103f000b2002200b36020c2002200c360210200241013a0027200241cc006a41013602002002420137023c200241f0f7c5003602382002412b36021c2002200241186a3602482002200241276a360218200241286a200241386a103720022802282103200228022c2106200228023021074100210e410521010c090b200128020020066a2d000021062001200736020c200641ff00712003411f71742005722105200341076a21032006418001710d000b024020034120490d002006410f4d0d002002200b36020c2002200c360210410d21010c070b02400240200c200b460d00200b2103200c210b0c010b200b41016a2203200b490d06200b41017422062003200620034b1b220341ffffffff03712003470d06200341027422064100480d0602400240200b0d002006102a21090c010b2009200b4102742006102e21090b2009450d05200220093602080b2005410876210e2009200b4102746a2005360200200a2004460d080c000b0b417f20071047000b417f20071047000b2002200b36020c2002200c360210410f21010c020b1033000b1035000b0b20004101360200200041106a20073602002000410c6a2006360200200041086a20033602002000200e410874200172360204200b450d022009102c0c020b2002200336020c2002200a3602100b20002002290308370204200041003602002000410c6a200241106a2802003602000b200241d0006a24000bb4c10202097f017e230041106b2203240002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020012d00000eac01000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f80018101820183018401850186018701880189018a018b018c018d018e018f0190019101920193019401950196019701980199019a019b019c019d019e019f01a001a101a201a301a401a501a601a701a801a901aa01ab01000b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490dae01200441017422062005200620054b1b22064100480dae010240024020040d002006102a21050c010b200228020420042006102e21050b2005450dad0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41003a00000cab010b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490dad01200441017422062005200620054b1b22064100480dad010240024020040d002006102a21050c010b200228020420042006102e21050b2005450dac0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41013a00000caa010b200241046a210620012d0001210702400240200241086a2802002002410c6a2802002204460d00200628020021050c010b200441016a22052004490dac01200441017422082005200820054b1b22084100480dac010240024020040d002008102a21050c010b200628020020042008102e21050b2005450dab0120022005360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200520046a41023a000002400240200241086a28020020082802002204460d00200628020021050c010b200441016a22052004490dac01200441017422082005200820054b1b22084100480dac010240024020040d002008102a21050c010b200628020020042008102e21050b2005450dab0120022005360204200241086a20083602002002410c6a28020021040b2002410c6a200441016a360200200520046a42c0818386fcdffffe7c2007410473ad42078342038688a7413f7141c000723a00000ca9010b200241046a210620012d0001210702400240200241086a2802002002410c6a2802002204460d00200628020021050c010b200441016a22052004490dab01200441017422082005200820054b1b22084100480dab010240024020040d002008102a21050c010b200628020020042008102e21050b2005450daa0120022005360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200520046a41033a000002400240200241086a28020020082802002204460d00200628020021050c010b200441016a22052004490dab01200441017422082005200820054b1b22084100480dab010240024020040d002008102a21050c010b200628020020042008102e21050b2005450daa0120022005360204200241086a20083602002002410c6a28020021040b2002410c6a200441016a360200200520046a42c0818386fcdffffe7c2007410473ad42078342038688a7413f7141c000723a00000ca8010b200241046a210620012d0001210702400240200241086a2802002002410c6a2802002204460d00200628020021050c010b200441016a22052004490daa01200441017422082005200820054b1b22084100480daa010240024020040d002008102a21050c010b200628020020042008102e21050b2005450da90120022005360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200520046a41043a000002400240200241086a28020020082802002204460d00200628020021050c010b200441016a22052004490daa01200441017422082005200820054b1b22084100480daa010240024020040d002008102a21050c010b200628020020042008102e21050b2005450da90120022005360204200241086a20083602002002410c6a28020021040b2002410c6a200441016a360200200520046a42c0818386fcdffffe7c2007410473ad42078342038688a7413f7141c000723a00000ca7010b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490da901200441017422062005200620054b1b22064100480da9010240024020040d002006102a21050c010b200228020420042006102e21050b2005450da80120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41053a00000ca6010b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490da801200441017422062005200620054b1b22064100480da8010240024020040d002006102a21050c010b200228020420042006102e21050b2005450da70120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a410b3a00000ca5010b200241046a2109200141046a280200210502400240200241086a2802002002410c6a2802002204460d00200928020021060c010b200441016a22062004490da701200441017422072006200720064b1b22074100480da7010240024020040d002007102a21060c010b200928020020042007102e21060b2006450da60120022006360204200241086a20073602002002410c6a28020021040b2002410c6a2207200441016a360200200620046a410c3a0000200241086a2108034002400240200828020020072802002204460d00200928020021060c010b200441016a22062004490da8012004410174220a2006200a20064b1b220a4100480da8010240024020040d00200a102a21060c010b20092802002004200a102e21060b2006450da701200220063602042008200a360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000ca5010b0b200241046a2109200141046a280200210502400240200241086a2802002002410c6a2802002204460d00200928020021060c010b200441016a22062004490da601200441017422072006200720064b1b22074100480da6010240024020040d002007102a21060c010b200928020020042007102e21060b2006450da50120022006360204200241086a20073602002002410c6a28020021040b2002410c6a2207200441016a360200200620046a410d3a0000200241086a2108034002400240200828020020072802002204460d00200928020021060c010b200441016a22062004490da7012004410174220a2006200a20064b1b220a4100480da7010240024020040d00200a102a21060c010b20092802002004200a102e21060b2006450da601200220063602042008200a360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000ca4010b0b200241046a210902400240200241086a2802002002410c6a2802002204460d00200928020021050c010b200441016a22052004490da501200441017422062005200620054b1b22064100480da5010240024020040d002006102a21050c010b200928020020042006102e21050b2005450da40120022005360204200241086a20063602002002410c6a28020021040b2002410c6a2207200441016a360200200520046a410e3a0000200320012802042204280204220520042802002204200420054102746a20021087052003210420032d0000411f470dab0120012802042802082105200241086a2108034002400240200828020020072802002204460d00200928020021060c010b200441016a22062004490da6012004410174220a2006200a20064b1b220a4100480da6010240024020040d00200a102a21060c010b20092802002004200a102e21060b2006450da501200220063602042008200a360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000ca3010b0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490da401200441017422062005200620054b1b22064100480da4010240024020040d002006102a21050c010b200228020420042006102e21050b2005450da30120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a410f3a00000ca1010b200241046a2109200141046a280200210502400240200241086a2802002002410c6a2802002204460d00200928020021060c010b200441016a22062004490da301200441017422072006200720064b1b22074100480da3010240024020040d002007102a21060c010b200928020020042007102e21060b2006450da20120022006360204200241086a20073602002002410c6a28020021040b2002410c6a2207200441016a360200200620046a41103a0000200241086a2108034002400240200828020020072802002204460d00200928020021060c010b200441016a22062004490da4012004410174220a2006200a20064b1b220a4100480da4010240024020040d00200a102a21060c010b20092802002004200a102e21060b2006450da301200220063602042008200a360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000ca1010b0b200241046a2109200141046a280200210520012d0001210b02400240200241086a2802002002410c6a2802002204460d00200928020021060c010b200441016a22062004490da201200441017422072006200720064b1b22074100480da2010240024020040d002007102a21060c010b200928020020042007102e21060b2006450da10120022006360204200241086a20073602002002410c6a28020021040b2002410c6a2207200441016a360200200620046a41113a0000200241086a2108034002400240200828020020072802002204460d00200928020021060c010b200441016a22062004490da3012004410174220a2006200a20064b1b220a4100480da3010240024020040d00200a102a21060c010b20092802002004200a102e21060b2006450da201200220063602042008200a360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000b02400240200241086a2802002002410c6a2802002204460d00200928020021050c010b200441016a22052004490da201200441017422062005200620054b1b22064100480da2010240024020040d002006102a21050c010b200928020020042006102e21050b2005450da10120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a200b3a00000c9f010b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490da101200441017422062005200620054b1b22064100480da1010240024020040d002006102a21050c010b200228020420042006102e21050b2005450da00120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a411a3a00000c9e010b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490da001200441017422062005200620054b1b22064100480da0010240024020040d002006102a21050c010b200228020420042006102e21050b2005450d9f0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a411b3a00000c9d010b200241046a2109200141046a280200210502400240200241086a2802002002410c6a2802002204460d00200928020021060c010b200441016a22062004490d9f01200441017422072006200720064b1b22074100480d9f010240024020040d002007102a21060c010b200928020020042007102e21060b2006450d9e0120022006360204200241086a20073602002002410c6a28020021040b2002410c6a2207200441016a360200200620046a41203a0000200241086a2108034002400240200828020020072802002204460d00200928020021060c010b200441016a22062004490da0012004410174220a2006200a20064b1b220a4100480da0010240024020040d00200a102a21060c010b20092802002004200a102e21060b2006450d9f01200220063602042008200a360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000c9d010b0b200241046a2109200141046a280200210502400240200241086a2802002002410c6a2802002204460d00200928020021060c010b200441016a22062004490d9e01200441017422072006200720064b1b22074100480d9e010240024020040d002007102a21060c010b200928020020042007102e21060b2006450d9d0120022006360204200241086a20073602002002410c6a28020021040b2002410c6a2207200441016a360200200620046a41213a0000200241086a2108034002400240200828020020072802002204460d00200928020021060c010b200441016a22062004490d9f012004410174220a2006200a20064b1b220a4100480d9f010240024020040d00200a102a21060c010b20092802002004200a102e21060b2006450d9e01200220063602042008200a360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000c9c010b0b200241046a2109200141046a280200210502400240200241086a2802002002410c6a2802002204460d00200928020021060c010b200441016a22062004490d9d01200441017422072006200720064b1b22074100480d9d010240024020040d002007102a21060c010b200928020020042007102e21060b2006450d9c0120022006360204200241086a20073602002002410c6a28020021040b2002410c6a2207200441016a360200200620046a41223a0000200241086a2108034002400240200828020020072802002204460d00200928020021060c010b200441016a22062004490d9e012004410174220a2006200a20064b1b220a4100480d9e010240024020040d00200a102a21060c010b20092802002004200a102e21060b2006450d9d01200220063602042008200a360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000c9b010b0b200241046a2109200141046a280200210502400240200241086a2802002002410c6a2802002204460d00200928020021060c010b200441016a22062004490d9c01200441017422072006200720064b1b22074100480d9c010240024020040d002007102a21060c010b200928020020042007102e21060b2006450d9b0120022006360204200241086a20073602002002410c6a28020021040b2002410c6a2207200441016a360200200620046a41233a0000200241086a2108034002400240200828020020072802002204460d00200928020021060c010b200441016a22062004490d9d012004410174220a2006200a20064b1b220a4100480d9d010240024020040d00200a102a21060c010b20092802002004200a102e21060b2006450d9c01200220063602042008200a360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000c9a010b0b200241046a2109200141046a280200210502400240200241086a2802002002410c6a2802002204460d00200928020021060c010b200441016a22062004490d9b01200441017422072006200720064b1b22074100480d9b010240024020040d002007102a21060c010b200928020020042007102e21060b2006450d9a0120022006360204200241086a20073602002002410c6a28020021040b2002410c6a2207200441016a360200200620046a41243a0000200241086a2108034002400240200828020020072802002204460d00200928020021060c010b200441016a22062004490d9c012004410174220a2006200a20064b1b220a4100480d9c010240024020040d00200a102a21060c010b20092802002004200a102e21060b2006450d9b01200220063602042008200a360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000c99010b0b200241046a210a200141086a2802002105200141046a280200210602400240200241086a2802002002410c6a2802002204460d00200a28020021070c010b200441016a22072004490d9a01200441017422082007200820074b1b22084100480d9a010240024020040d002008102a21070c010b200a28020020042008102e21070b2007450d990120022007360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200720046a41283a0000200241086a2109034002400240200928020020082802002204460d00200a28020021070c010b200441016a22072004490d9b012004410174220b2007200b20074b1b220b4100480d9b010240024020040d00200b102a21070c010b200a2802002004200b102e21070b2007450d9a01200220073602042009200b360200200828020021040b2008200441016a360200200720046a200641807f72200641ff0071200641077622041b3a00002004210620040d000b2002410c6a2107200241086a2108034002400240200828020020072802002204460d00200a28020021060c010b200441016a22062004490d9b01200441017422092006200920064b1b22094100480d9b010240024020040d002009102a21060c010b200a28020020042009102e21060b2006450d9a012002200636020420082009360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000c98010b0b200241046a210a200141086a2802002105200141046a280200210602400240200241086a2802002002410c6a2802002204460d00200a28020021070c010b200441016a22072004490d9901200441017422082007200820074b1b22084100480d99010240024020040d002008102a21070c010b200a28020020042008102e21070b2007450d980120022007360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200720046a41293a0000200241086a2109034002400240200928020020082802002204460d00200a28020021070c010b200441016a22072004490d9a012004410174220b2007200b20074b1b220b4100480d9a010240024020040d00200b102a21070c010b200a2802002004200b102e21070b2007450d9901200220073602042009200b360200200828020021040b2008200441016a360200200720046a200641807f72200641ff0071200641077622041b3a00002004210620040d000b2002410c6a2107200241086a2108034002400240200828020020072802002204460d00200a28020021060c010b200441016a22062004490d9a01200441017422092006200920064b1b22094100480d9a010240024020040d002009102a21060c010b200a28020020042009102e21060b2006450d99012002200636020420082009360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000c97010b0b200241046a210a200141086a2802002105200141046a280200210602400240200241086a2802002002410c6a2802002204460d00200a28020021070c010b200441016a22072004490d9801200441017422082007200820074b1b22084100480d98010240024020040d002008102a21070c010b200a28020020042008102e21070b2007450d970120022007360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200720046a412a3a0000200241086a2109034002400240200928020020082802002204460d00200a28020021070c010b200441016a22072004490d99012004410174220b2007200b20074b1b220b4100480d99010240024020040d00200b102a21070c010b200a2802002004200b102e21070b2007450d9801200220073602042009200b360200200828020021040b2008200441016a360200200720046a200641807f72200641ff0071200641077622041b3a00002004210620040d000b2002410c6a2107200241086a2108034002400240200828020020072802002204460d00200a28020021060c010b200441016a22062004490d9901200441017422092006200920064b1b22094100480d99010240024020040d002009102a21060c010b200a28020020042009102e21060b2006450d98012002200636020420082009360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000c96010b0b200241046a210a200141086a2802002105200141046a280200210602400240200241086a2802002002410c6a2802002204460d00200a28020021070c010b200441016a22072004490d9701200441017422082007200820074b1b22084100480d97010240024020040d002008102a21070c010b200a28020020042008102e21070b2007450d960120022007360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200720046a412b3a0000200241086a2109034002400240200928020020082802002204460d00200a28020021070c010b200441016a22072004490d98012004410174220b2007200b20074b1b220b4100480d98010240024020040d00200b102a21070c010b200a2802002004200b102e21070b2007450d9701200220073602042009200b360200200828020021040b2008200441016a360200200720046a200641807f72200641ff0071200641077622041b3a00002004210620040d000b2002410c6a2107200241086a2108034002400240200828020020072802002204460d00200a28020021060c010b200441016a22062004490d9801200441017422092006200920064b1b22094100480d98010240024020040d002009102a21060c010b200a28020020042009102e21060b2006450d97012002200636020420082009360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000c95010b0b200241046a210a200141086a2802002105200141046a280200210602400240200241086a2802002002410c6a2802002204460d00200a28020021070c010b200441016a22072004490d9601200441017422082007200820074b1b22084100480d96010240024020040d002008102a21070c010b200a28020020042008102e21070b2007450d950120022007360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200720046a412c3a0000200241086a2109034002400240200928020020082802002204460d00200a28020021070c010b200441016a22072004490d97012004410174220b2007200b20074b1b220b4100480d97010240024020040d00200b102a21070c010b200a2802002004200b102e21070b2007450d9601200220073602042009200b360200200828020021040b2008200441016a360200200720046a200641807f72200641ff0071200641077622041b3a00002004210620040d000b2002410c6a2107200241086a2108034002400240200828020020072802002204460d00200a28020021060c010b200441016a22062004490d9701200441017422092006200920064b1b22094100480d97010240024020040d002009102a21060c010b200a28020020042009102e21060b2006450d96012002200636020420082009360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000c94010b0b200241046a210a200141086a2802002106200141046a280200210502400240200241086a2802002002410c6a2802002204460d00200a28020021070c010b200441016a22072004490d9501200441017422082007200820074b1b22084100480d95010240024020040d002008102a21070c010b200a28020020042008102e21070b2007450d940120022007360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200720046a412d3a0000200241086a2109034002400240200928020020082802002204460d00200a28020021070c010b200441016a22072004490d96012004410174220b2007200b20074b1b220b4100480d96010240024020040d00200b102a21070c010b200a2802002004200b102e21070b2007450d9501200220073602042009200b360200200828020021040b2008200441016a360200200720046a200541807f72200541ff0071200541077622041b3a00002004210520040d000b2002410c6a2107200241086a2108034002400240200828020020072802002204460d00200a28020021050c010b200441016a22052004490d9601200441017422092005200920054b1b22094100480d96010240024020040d002009102a21050c010b200a28020020042009102e21050b2005450d95012002200536020420082009360200200728020021040b2007200441016a360200200520046a200641807f72200641ff0071200641077622041b3a00002004210620040d000c93010b0b200241046a210a200141086a2802002106200141046a280200210502400240200241086a2802002002410c6a2802002204460d00200a28020021070c010b200441016a22072004490d9401200441017422082007200820074b1b22084100480d94010240024020040d002008102a21070c010b200a28020020042008102e21070b2007450d930120022007360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200720046a412e3a0000200241086a2109034002400240200928020020082802002204460d00200a28020021070c010b200441016a22072004490d95012004410174220b2007200b20074b1b220b4100480d95010240024020040d00200b102a21070c010b200a2802002004200b102e21070b2007450d9401200220073602042009200b360200200828020021040b2008200441016a360200200720046a200541807f72200541ff0071200541077622041b3a00002004210520040d000b2002410c6a2107200241086a2108034002400240200828020020072802002204460d00200a28020021050c010b200441016a22052004490d9501200441017422092005200920054b1b22094100480d95010240024020040d002009102a21050c010b200a28020020042009102e21050b2005450d94012002200536020420082009360200200728020021040b2007200441016a360200200520046a200641807f72200641ff0071200641077622041b3a00002004210620040d000c92010b0b200241046a210a200141086a2802002105200141046a280200210602400240200241086a2802002002410c6a2802002204460d00200a28020021070c010b200441016a22072004490d9301200441017422082007200820074b1b22084100480d93010240024020040d002008102a21070c010b200a28020020042008102e21070b2007450d920120022007360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200720046a412f3a0000200241086a2109034002400240200928020020082802002204460d00200a28020021070c010b200441016a22072004490d94012004410174220b2007200b20074b1b220b4100480d94010240024020040d00200b102a21070c010b200a2802002004200b102e21070b2007450d9301200220073602042009200b360200200828020021040b2008200441016a360200200720046a200641807f72200641ff0071200641077622041b3a00002004210620040d000b2002410c6a2107200241086a2108034002400240200828020020072802002204460d00200a28020021060c010b200441016a22062004490d9401200441017422092006200920064b1b22094100480d94010240024020040d002009102a21060c010b200a28020020042009102e21060b2006450d93012002200636020420082009360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000c91010b0b200241046a210a200141086a2802002105200141046a280200210602400240200241086a2802002002410c6a2802002204460d00200a28020021070c010b200441016a22072004490d9201200441017422082007200820074b1b22084100480d92010240024020040d002008102a21070c010b200a28020020042008102e21070b2007450d910120022007360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200720046a41303a0000200241086a2109034002400240200928020020082802002204460d00200a28020021070c010b200441016a22072004490d93012004410174220b2007200b20074b1b220b4100480d93010240024020040d00200b102a21070c010b200a2802002004200b102e21070b2007450d9201200220073602042009200b360200200828020021040b2008200441016a360200200720046a200641807f72200641ff0071200641077622041b3a00002004210620040d000b2002410c6a2107200241086a2108034002400240200828020020072802002204460d00200a28020021060c010b200441016a22062004490d9301200441017422092006200920064b1b22094100480d93010240024020040d002009102a21060c010b200a28020020042009102e21060b2006450d92012002200636020420082009360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000c90010b0b200241046a210a200141086a2802002106200141046a280200210502400240200241086a2802002002410c6a2802002204460d00200a28020021070c010b200441016a22072004490d9101200441017422082007200820074b1b22084100480d91010240024020040d002008102a21070c010b200a28020020042008102e21070b2007450d900120022007360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200720046a41313a0000200241086a2109034002400240200928020020082802002204460d00200a28020021070c010b200441016a22072004490d92012004410174220b2007200b20074b1b220b4100480d92010240024020040d00200b102a21070c010b200a2802002004200b102e21070b2007450d9101200220073602042009200b360200200828020021040b2008200441016a360200200720046a200541807f72200541ff0071200541077622041b3a00002004210520040d000b2002410c6a2107200241086a2108034002400240200828020020072802002204460d00200a28020021050c010b200441016a22052004490d9201200441017422092005200920054b1b22094100480d92010240024020040d002009102a21050c010b200a28020020042009102e21050b2005450d91012002200536020420082009360200200728020021040b2007200441016a360200200520046a200641807f72200641ff0071200641077622041b3a00002004210620040d000c8f010b0b200241046a210a200141086a2802002106200141046a280200210502400240200241086a2802002002410c6a2802002204460d00200a28020021070c010b200441016a22072004490d9001200441017422082007200820074b1b22084100480d90010240024020040d002008102a21070c010b200a28020020042008102e21070b2007450d8f0120022007360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200720046a41323a0000200241086a2109034002400240200928020020082802002204460d00200a28020021070c010b200441016a22072004490d91012004410174220b2007200b20074b1b220b4100480d91010240024020040d00200b102a21070c010b200a2802002004200b102e21070b2007450d9001200220073602042009200b360200200828020021040b2008200441016a360200200720046a200541807f72200541ff0071200541077622041b3a00002004210520040d000b2002410c6a2107200241086a2108034002400240200828020020072802002204460d00200a28020021050c010b200441016a22052004490d9101200441017422092005200920054b1b22094100480d91010240024020040d002009102a21050c010b200a28020020042009102e21050b2005450d90012002200536020420082009360200200728020021040b2007200441016a360200200520046a200641807f72200641ff0071200641077622041b3a00002004210620040d000c8e010b0b200241046a210a200141086a2802002105200141046a280200210602400240200241086a2802002002410c6a2802002204460d00200a28020021070c010b200441016a22072004490d8f01200441017422082007200820074b1b22084100480d8f010240024020040d002008102a21070c010b200a28020020042008102e21070b2007450d8e0120022007360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200720046a41333a0000200241086a2109034002400240200928020020082802002204460d00200a28020021070c010b200441016a22072004490d90012004410174220b2007200b20074b1b220b4100480d90010240024020040d00200b102a21070c010b200a2802002004200b102e21070b2007450d8f01200220073602042009200b360200200828020021040b2008200441016a360200200720046a200641807f72200641ff0071200641077622041b3a00002004210620040d000b2002410c6a2107200241086a2108034002400240200828020020072802002204460d00200a28020021060c010b200441016a22062004490d9001200441017422092006200920064b1b22094100480d90010240024020040d002009102a21060c010b200a28020020042009102e21060b2006450d8f012002200636020420082009360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000c8d010b0b200241046a210a200141086a2802002105200141046a280200210602400240200241086a2802002002410c6a2802002204460d00200a28020021070c010b200441016a22072004490d8e01200441017422082007200820074b1b22084100480d8e010240024020040d002008102a21070c010b200a28020020042008102e21070b2007450d8d0120022007360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200720046a41343a0000200241086a2109034002400240200928020020082802002204460d00200a28020021070c010b200441016a22072004490d8f012004410174220b2007200b20074b1b220b4100480d8f010240024020040d00200b102a21070c010b200a2802002004200b102e21070b2007450d8e01200220073602042009200b360200200828020021040b2008200441016a360200200720046a200641807f72200641ff0071200641077622041b3a00002004210620040d000b2002410c6a2107200241086a2108034002400240200828020020072802002204460d00200a28020021060c010b200441016a22062004490d8f01200441017422092006200920064b1b22094100480d8f010240024020040d002009102a21060c010b200a28020020042009102e21060b2006450d8e012002200636020420082009360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000c8c010b0b200241046a210a200141086a2802002105200141046a280200210602400240200241086a2802002002410c6a2802002204460d00200a28020021070c010b200441016a22072004490d8d01200441017422082007200820074b1b22084100480d8d010240024020040d002008102a21070c010b200a28020020042008102e21070b2007450d8c0120022007360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200720046a41353a0000200241086a2109034002400240200928020020082802002204460d00200a28020021070c010b200441016a22072004490d8f012004410174220b2007200b20074b1b220b4100480d8f010240024020040d00200b102a21070c010b200a2802002004200b102e21070b2007450d8d01200220073602042009200b360200200828020021040b2008200441016a360200200720046a200641807f72200641ff0071200641077622041b3a00002004210620040d000b2002410c6a2107200241086a2108034002400240200828020020072802002204460d00200a28020021060c010b200441016a22062004490d8f01200441017422092006200920064b1b22094100480d8f010240024020040d002009102a21060c010b200a28020020042009102e21060b2006450d90012002200636020420082009360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000c8b010b0b200241046a210a200141086a2802002105200141046a280200210602400240200241086a2802002002410c6a2802002204460d00200a28020021070c010b200441016a22072004490d8d01200441017422082007200820074b1b22084100480d8d010240024020040d002008102a21070c010b200a28020020042008102e21070b2007450d8e0120022007360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200720046a41363a0000200241086a2109034002400240200928020020082802002204460d00200a28020021070c010b200441016a22072004490d8e012004410174220b2007200b20074b1b220b4100480d8e010240024020040d00200b102a21070c010b200a2802002004200b102e21070b2007450d8f01200220073602042009200b360200200828020021040b2008200441016a360200200720046a200641807f72200641ff0071200641077622041b3a00002004210620040d000b2002410c6a2107200241086a2108034002400240200828020020072802002204460d00200a28020021060c010b200441016a22062004490d8e01200441017422092006200920064b1b22094100480d8e010240024020040d002009102a21060c010b200a28020020042009102e21060b2006450d8f012002200636020420082009360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000c8a010b0b200241046a210a200141086a2802002106200141046a280200210502400240200241086a2802002002410c6a2802002204460d00200a28020021070c010b200441016a22072004490d8c01200441017422082007200820074b1b22084100480d8c010240024020040d002008102a21070c010b200a28020020042008102e21070b2007450d8d0120022007360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200720046a41373a0000200241086a2109034002400240200928020020082802002204460d00200a28020021070c010b200441016a22072004490d8d012004410174220b2007200b20074b1b220b4100480d8d010240024020040d00200b102a21070c010b200a2802002004200b102e21070b2007450d8e01200220073602042009200b360200200828020021040b2008200441016a360200200720046a200541807f72200541ff0071200541077622041b3a00002004210520040d000b2002410c6a2107200241086a2108034002400240200828020020072802002204460d00200a28020021050c010b200441016a22052004490d8d01200441017422092005200920054b1b22094100480d8d010240024020040d002009102a21050c010b200a28020020042009102e21050b2005450d8e012002200536020420082009360200200728020021040b2007200441016a360200200520046a200641807f72200641ff0071200641077622041b3a00002004210620040d000c89010b0b200241046a210a200141086a2802002105200141046a280200210602400240200241086a2802002002410c6a2802002204460d00200a28020021070c010b200441016a22072004490d8b01200441017422082007200820074b1b22084100480d8b010240024020040d002008102a21070c010b200a28020020042008102e21070b2007450d8c0120022007360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200720046a41383a0000200241086a2109034002400240200928020020082802002204460d00200a28020021070c010b200441016a22072004490d8c012004410174220b2007200b20074b1b220b4100480d8c010240024020040d00200b102a21070c010b200a2802002004200b102e21070b2007450d8d01200220073602042009200b360200200828020021040b2008200441016a360200200720046a200641807f72200641ff0071200641077622041b3a00002004210620040d000b2002410c6a2107200241086a2108034002400240200828020020072802002204460d00200a28020021060c010b200441016a22062004490d8c01200441017422092006200920064b1b22094100480d8c010240024020040d002009102a21060c010b200a28020020042009102e21060b2006450d8d012002200636020420082009360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000c88010b0b200241046a210a200141086a2802002106200141046a280200210502400240200241086a2802002002410c6a2802002204460d00200a28020021070c010b200441016a22072004490d8a01200441017422082007200820074b1b22084100480d8a010240024020040d002008102a21070c010b200a28020020042008102e21070b2007450d8b0120022007360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200720046a41393a0000200241086a2109034002400240200928020020082802002204460d00200a28020021070c010b200441016a22072004490d8b012004410174220b2007200b20074b1b220b4100480d8b010240024020040d00200b102a21070c010b200a2802002004200b102e21070b2007450d8c01200220073602042009200b360200200828020021040b2008200441016a360200200720046a200541807f72200541ff0071200541077622041b3a00002004210520040d000b2002410c6a2107200241086a2108034002400240200828020020072802002204460d00200a28020021050c010b200441016a22052004490d8b01200441017422092005200920054b1b22094100480d8b010240024020040d002009102a21050c010b200a28020020042009102e21050b2005450d8c012002200536020420082009360200200728020021040b2007200441016a360200200520046a200641807f72200641ff0071200641077622041b3a00002004210620040d000c87010b0b200241046a210a200141086a2802002106200141046a280200210502400240200241086a2802002002410c6a2802002204460d00200a28020021070c010b200441016a22072004490d8901200441017422082007200820074b1b22084100480d89010240024020040d002008102a21070c010b200a28020020042008102e21070b2007450d8a0120022007360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200720046a413a3a0000200241086a2109034002400240200928020020082802002204460d00200a28020021070c010b200441016a22072004490d8a012004410174220b2007200b20074b1b220b4100480d8a010240024020040d00200b102a21070c010b200a2802002004200b102e21070b2007450d8b01200220073602042009200b360200200828020021040b2008200441016a360200200720046a200541807f72200541ff0071200541077622041b3a00002004210520040d000b2002410c6a2107200241086a2108034002400240200828020020072802002204460d00200a28020021050c010b200441016a22052004490d8a01200441017422092005200920054b1b22094100480d8a010240024020040d002009102a21050c010b200a28020020042009102e21050b2005450d8b012002200536020420082009360200200728020021040b2007200441016a360200200520046a200641807f72200641ff0071200641077622041b3a00002004210620040d000c86010b0b200241046a210a200141086a2802002105200141046a280200210602400240200241086a2802002002410c6a2802002204460d00200a28020021070c010b200441016a22072004490d8801200441017422082007200820074b1b22084100480d88010240024020040d002008102a21070c010b200a28020020042008102e21070b2007450d890120022007360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200720046a413b3a0000200241086a2109034002400240200928020020082802002204460d00200a28020021070c010b200441016a22072004490d89012004410174220b2007200b20074b1b220b4100480d89010240024020040d00200b102a21070c010b200a2802002004200b102e21070b2007450d8a01200220073602042009200b360200200828020021040b2008200441016a360200200720046a200641807f72200641ff0071200641077622041b3a00002004210620040d000b2002410c6a2107200241086a2108034002400240200828020020072802002204460d00200a28020021060c010b200441016a22062004490d8901200441017422092006200920064b1b22094100480d89010240024020040d002009102a21060c010b200a28020020042009102e21060b2006450d8a012002200636020420082009360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000c85010b0b200241046a210a200141086a2802002105200141046a280200210602400240200241086a2802002002410c6a2802002204460d00200a28020021070c010b200441016a22072004490d8701200441017422082007200820074b1b22084100480d87010240024020040d002008102a21070c010b200a28020020042008102e21070b2007450d880120022007360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200720046a413c3a0000200241086a2109034002400240200928020020082802002204460d00200a28020021070c010b200441016a22072004490d88012004410174220b2007200b20074b1b220b4100480d88010240024020040d00200b102a21070c010b200a2802002004200b102e21070b2007450d8901200220073602042009200b360200200828020021040b2008200441016a360200200720046a200641807f72200641ff0071200641077622041b3a00002004210620040d000b2002410c6a2107200241086a2108034002400240200828020020072802002204460d00200a28020021060c010b200441016a22062004490d8801200441017422092006200920064b1b22094100480d88010240024020040d002009102a21060c010b200a28020020042009102e21060b2006450d89012002200636020420082009360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000c84010b0b200241046a210a200141086a2802002105200141046a280200210602400240200241086a2802002002410c6a2802002204460d00200a28020021070c010b200441016a22072004490d8601200441017422082007200820074b1b22084100480d86010240024020040d002008102a21070c010b200a28020020042008102e21070b2007450d870120022007360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200720046a413d3a0000200241086a2109034002400240200928020020082802002204460d00200a28020021070c010b200441016a22072004490d87012004410174220b2007200b20074b1b220b4100480d87010240024020040d00200b102a21070c010b200a2802002004200b102e21070b2007450d8801200220073602042009200b360200200828020021040b2008200441016a360200200720046a200641807f72200641ff0071200641077622041b3a00002004210620040d000b2002410c6a2107200241086a2108034002400240200828020020072802002204460d00200a28020021060c010b200441016a22062004490d8701200441017422092006200920064b1b22094100480d87010240024020040d002009102a21060c010b200a28020020042009102e21060b2006450d88012002200636020420082009360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000c83010b0b200241046a210a200141086a2802002105200141046a280200210602400240200241086a2802002002410c6a2802002204460d00200a28020021070c010b200441016a22072004490d8501200441017422082007200820074b1b22084100480d85010240024020040d002008102a21070c010b200a28020020042008102e21070b2007450d860120022007360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200720046a413e3a0000200241086a2109034002400240200928020020082802002204460d00200a28020021070c010b200441016a22072004490d86012004410174220b2007200b20074b1b220b4100480d86010240024020040d00200b102a21070c010b200a2802002004200b102e21070b2007450d8701200220073602042009200b360200200828020021040b2008200441016a360200200720046a200641807f72200641ff0071200641077622041b3a00002004210620040d000b2002410c6a2107200241086a2108034002400240200828020020072802002204460d00200a28020021060c010b200441016a22062004490d8601200441017422092006200920064b1b22094100480d86010240024020040d002009102a21060c010b200a28020020042009102e21060b2006450d87012002200636020420082009360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000c82010b0b200241046a210620012d0001210702400240200241086a2802002002410c6a2802002204460d00200628020021050c010b200441016a22052004490d8401200441017422082005200820054b1b22084100480d84010240024020040d002008102a21050c010b200628020020042008102e21050b2005450d850120022005360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200520046a413f3a000002400240200241086a28020020082802002204460d00200628020021050c010b200441016a22052004490d8401200441017422082005200820054b1b22084100480d84010240024020040d002008102a21050c010b200628020020042008102e21050b2005450d850120022005360204200241086a20083602002002410c6a28020021040b2002410c6a200441016a360200200520046a20073a00000c80010b200241046a210620012d0001210702400240200241086a2802002002410c6a2802002204460d00200628020021050c010b200441016a22052004490d8301200441017422082005200820054b1b22084100480d83010240024020040d002008102a21050c010b200628020020042008102e21050b2005450d840120022005360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200520046a41c0003a000002400240200241086a28020020082802002204460d00200628020021050c010b200441016a22052004490d8301200441017422082005200820054b1b22084100480d83010240024020040d002008102a21050c010b200628020020042008102e21050b2005450d840120022005360204200241086a20083602002002410c6a28020021040b2002410c6a200441016a360200200520046a20073a00000c7f0b200141046a280200210602400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d8201200441017422072005200720054b1b22074100480d82010240024020040d002007102a21050c010b200228020420042007102e21050b2005450d830120022005360204200241086a20073602002002410c6a28020021040b2002410c6a200441016a360200200520046a41c1003a00002003200620021088052003210420032d0000411f470d87010c7e0b200141086a290300210c02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d8101200441017422062005200620054b1b22064100480d81010240024020040d002006102a21050c010b200228020420042006102e21050b2005450d820120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41c2003a00002003200c20021089052003210420032d0000411f470d86010c7d0b200241046a2106200141046a280200210702400240200241086a2802002002410c6a2802002204460d00200628020021050c010b200441016a22052004490d8001200441017422082005200820054b1b22084100480d80010240024020040d002008102a21050c010b200628020020042008102e21050b2005450d810120022005360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200520046a41c3003a000002400240200241086a2802002205200828020022046b4104490d00200628020021050c010b200441046a22082004490d8001200541017422042008200420084b1b22044100480d80010240024020050d002004102a21050c010b200628020020052004102e21050b2005450d810120022005360204200241086a20043602002002410c6a28020021040b2002410c6a200441046a360200200520046a20073600000c7c0b200241046a2106200141086a290300210c02400240200241086a2802002002410c6a2802002204460d00200628020021050c010b200441016a22052004490d7f200441017422072005200720054b1b22074100480d7f0240024020040d002007102a21050c010b200628020020042007102e21050b2005450d800120022005360204200241086a20073602002002410c6a28020021040b2002410c6a2207200441016a360200200520046a41c4003a000002400240200241086a2802002205200728020022046b4108490d00200628020021050c010b200441086a22072004490d7f200541017422042007200420074b1b22044100480d7f0240024020050d002004102a21050c010b200628020020052004102e21050b2005450d800120022005360204200241086a20043602002002410c6a28020021040b2002410c6a200441086a360200200520046a200c3700000c7b0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d7e200441017422062005200620054b1b22064100480d7e0240024020040d002006102a21050c010b200228020420042006102e21050b2005450d7f20022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41c5003a00000c7a0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d7d200441017422062005200620054b1b22064100480d7d0240024020040d002006102a21050c010b200228020420042006102e21050b2005450d7e20022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41c6003a00000c790b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d7c200441017422062005200620054b1b22064100480d7c0240024020040d002006102a21050c010b200228020420042006102e21050b2005450d7d20022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41c7003a00000c780b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d7b200441017422062005200620054b1b22064100480d7b0240024020040d002006102a21050c010b200228020420042006102e21050b2005450d7c20022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41c8003a00000c770b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d7a200441017422062005200620054b1b22064100480d7a0240024020040d002006102a21050c010b200228020420042006102e21050b2005450d7b20022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41c9003a00000c760b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d79200441017422062005200620054b1b22064100480d790240024020040d002006102a21050c010b200228020420042006102e21050b2005450d7a20022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41ca003a00000c750b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d78200441017422062005200620054b1b22064100480d780240024020040d002006102a21050c010b200228020420042006102e21050b2005450d7920022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41cb003a00000c740b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d77200441017422062005200620054b1b22064100480d770240024020040d002006102a21050c010b200228020420042006102e21050b2005450d7820022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41cc003a00000c730b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d76200441017422062005200620054b1b22064100480d760240024020040d002006102a21050c010b200228020420042006102e21050b2005450d7720022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41cd003a00000c720b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d75200441017422062005200620054b1b22064100480d750240024020040d002006102a21050c010b200228020420042006102e21050b2005450d7620022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41ce003a00000c710b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d74200441017422062005200620054b1b22064100480d740240024020040d002006102a21050c010b200228020420042006102e21050b2005450d7520022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41cf003a00000c700b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d73200441017422062005200620054b1b22064100480d730240024020040d002006102a21050c010b200228020420042006102e21050b2005450d7420022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41d0003a00000c6f0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d72200441017422062005200620054b1b22064100480d720240024020040d002006102a21050c010b200228020420042006102e21050b2005450d7320022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41d1003a00000c6e0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d71200441017422062005200620054b1b22064100480d710240024020040d002006102a21050c010b200228020420042006102e21050b2005450d7220022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41d2003a00000c6d0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d70200441017422062005200620054b1b22064100480d700240024020040d002006102a21050c010b200228020420042006102e21050b2005450d7120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41d3003a00000c6c0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d6f200441017422062005200620054b1b22064100480d6f0240024020040d002006102a21050c010b200228020420042006102e21050b2005450d7020022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41d4003a00000c6b0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d6e200441017422062005200620054b1b22064100480d6e0240024020040d002006102a21050c010b200228020420042006102e21050b2005450d6f20022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41d5003a00000c6a0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d6d200441017422062005200620054b1b22064100480d6d0240024020040d002006102a21050c010b200228020420042006102e21050b2005450d6e20022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41d6003a00000c690b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d6c200441017422062005200620054b1b22064100480d6c0240024020040d002006102a21050c010b200228020420042006102e21050b2005450d6d20022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41d7003a00000c680b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d6b200441017422062005200620054b1b22064100480d6b0240024020040d002006102a21050c010b200228020420042006102e21050b2005450d6c20022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41d8003a00000c670b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d6a200441017422062005200620054b1b22064100480d6a0240024020040d002006102a21050c010b200228020420042006102e21050b2005450d6b20022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41d9003a00000c660b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d69200441017422062005200620054b1b22064100480d690240024020040d002006102a21050c010b200228020420042006102e21050b2005450d6a20022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41da003a00000c650b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d68200441017422062005200620054b1b22064100480d680240024020040d002006102a21050c010b200228020420042006102e21050b2005450d6920022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41db003a00000c640b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d67200441017422062005200620054b1b22064100480d670240024020040d002006102a21050c010b200228020420042006102e21050b2005450d6820022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41dc003a00000c630b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d66200441017422062005200620054b1b22064100480d660240024020040d002006102a21050c010b200228020420042006102e21050b2005450d6720022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41dd003a00000c620b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d65200441017422062005200620054b1b22064100480d650240024020040d002006102a21050c010b200228020420042006102e21050b2005450d6620022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41de003a00000c610b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d64200441017422062005200620054b1b22064100480d640240024020040d002006102a21050c010b200228020420042006102e21050b2005450d6520022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41df003a00000c600b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d63200441017422062005200620054b1b22064100480d630240024020040d002006102a21050c010b200228020420042006102e21050b2005450d6420022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41e0003a00000c5f0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d62200441017422062005200620054b1b22064100480d620240024020040d002006102a21050c010b200228020420042006102e21050b2005450d6320022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41e1003a00000c5e0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d61200441017422062005200620054b1b22064100480d610240024020040d002006102a21050c010b200228020420042006102e21050b2005450d6220022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41e2003a00000c5d0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d60200441017422062005200620054b1b22064100480d600240024020040d002006102a21050c010b200228020420042006102e21050b2005450d6120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41e3003a00000c5c0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d5f200441017422062005200620054b1b22064100480d5f0240024020040d002006102a21050c010b200228020420042006102e21050b2005450d6020022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41e4003a00000c5b0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d5e200441017422062005200620054b1b22064100480d5e0240024020040d002006102a21050c010b200228020420042006102e21050b2005450d5f20022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41e5003a00000c5a0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d5d200441017422062005200620054b1b22064100480d5d0240024020040d002006102a21050c010b200228020420042006102e21050b2005450d5e20022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41e6003a00000c590b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d5c200441017422062005200620054b1b22064100480d5c0240024020040d002006102a21050c010b200228020420042006102e21050b2005450d5d20022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41e7003a00000c580b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d5b200441017422062005200620054b1b22064100480d5b0240024020040d002006102a21050c010b200228020420042006102e21050b2005450d5c20022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41e8003a00000c570b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d5c200441017422062005200620054b1b22064100480d5c0240024020040d002006102a21050c010b200228020420042006102e21050b2005450d5b20022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41e9003a00000c560b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d5b200441017422062005200620054b1b22064100480d5b0240024020040d002006102a21050c010b200228020420042006102e21050b2005450d5c20022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41ea003a00000c550b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d5a200441017422062005200620054b1b22064100480d5a0240024020040d002006102a21050c010b200228020420042006102e21050b2005450d5b20022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41eb003a00000c540b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d59200441017422062005200620054b1b22064100480d590240024020040d002006102a21050c010b200228020420042006102e21050b2005450d5a20022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41ec003a00000c530b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d58200441017422062005200620054b1b22064100480d580240024020040d002006102a21050c010b200228020420042006102e21050b2005450d5920022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41ed003a00000c520b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d57200441017422062005200620054b1b22064100480d570240024020040d002006102a21050c010b200228020420042006102e21050b2005450d5820022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41ee003a00000c510b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d56200441017422062005200620054b1b22064100480d560240024020040d002006102a21050c010b200228020420042006102e21050b2005450d5720022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41ef003a00000c500b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d55200441017422062005200620054b1b22064100480d550240024020040d002006102a21050c010b200228020420042006102e21050b2005450d5620022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41f0003a00000c4f0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d54200441017422062005200620054b1b22064100480d540240024020040d002006102a21050c010b200228020420042006102e21050b2005450d5520022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41f1003a00000c4e0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d53200441017422062005200620054b1b22064100480d530240024020040d002006102a21050c010b200228020420042006102e21050b2005450d5420022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41f2003a00000c4d0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d52200441017422062005200620054b1b22064100480d520240024020040d002006102a21050c010b200228020420042006102e21050b2005450d5320022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41f3003a00000c4c0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d51200441017422062005200620054b1b22064100480d510240024020040d002006102a21050c010b200228020420042006102e21050b2005450d5220022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41f4003a00000c4b0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d50200441017422062005200620054b1b22064100480d500240024020040d002006102a21050c010b200228020420042006102e21050b2005450d5120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41f5003a00000c4a0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d4f200441017422062005200620054b1b22064100480d4f0240024020040d002006102a21050c010b200228020420042006102e21050b2005450d5020022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41f6003a00000c490b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d4e200441017422062005200620054b1b22064100480d4e0240024020040d002006102a21050c010b200228020420042006102e21050b2005450d4f20022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41f7003a00000c480b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d4d200441017422062005200620054b1b22064100480d4d0240024020040d002006102a21050c010b200228020420042006102e21050b2005450d4e20022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41f8003a00000c470b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d4c200441017422062005200620054b1b22064100480d4c0240024020040d002006102a21050c010b200228020420042006102e21050b2005450d4d20022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41f9003a00000c460b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d4b200441017422062005200620054b1b22064100480d4b0240024020040d002006102a21050c010b200228020420042006102e21050b2005450d4c20022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41fa003a00000c450b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d4a200441017422062005200620054b1b22064100480d4a0240024020040d002006102a21050c010b200228020420042006102e21050b2005450d4b20022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41fb003a00000c440b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d49200441017422062005200620054b1b22064100480d490240024020040d002006102a21050c010b200228020420042006102e21050b2005450d4a20022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41fc003a00000c430b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d48200441017422062005200620054b1b22064100480d480240024020040d002006102a21050c010b200228020420042006102e21050b2005450d4920022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41fd003a00000c420b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d47200441017422062005200620054b1b22064100480d470240024020040d002006102a21050c010b200228020420042006102e21050b2005450d4820022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41fe003a00000c410b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d46200441017422062005200620054b1b22064100480d460240024020040d002006102a21050c010b200228020420042006102e21050b2005450d4720022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41ff003a00000c400b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d45200441017422062005200620054b1b22064100480d450240024020040d002006102a21050c010b200228020420042006102e21050b2005450d4620022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a4180013a00000c3f0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d44200441017422062005200620054b1b22064100480d440240024020040d002006102a21050c010b200228020420042006102e21050b2005450d4520022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a4181013a00000c3e0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d43200441017422062005200620054b1b22064100480d430240024020040d002006102a21050c010b200228020420042006102e21050b2005450d4420022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a4182013a00000c3d0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d42200441017422062005200620054b1b22064100480d420240024020040d002006102a21050c010b200228020420042006102e21050b2005450d4320022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a4183013a00000c3c0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d41200441017422062005200620054b1b22064100480d410240024020040d002006102a21050c010b200228020420042006102e21050b2005450d4220022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a4184013a00000c3b0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d40200441017422062005200620054b1b22064100480d400240024020040d002006102a21050c010b200228020420042006102e21050b2005450d4120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a4185013a00000c3a0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d3f200441017422062005200620054b1b22064100480d3f0240024020040d002006102a21050c010b200228020420042006102e21050b2005450d4020022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a4186013a00000c390b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d3e200441017422062005200620054b1b22064100480d3e0240024020040d002006102a21050c010b200228020420042006102e21050b2005450d3f20022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a4187013a00000c380b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d3d200441017422062005200620054b1b22064100480d3d0240024020040d002006102a21050c010b200228020420042006102e21050b2005450d3e20022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a4188013a00000c370b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d3c200441017422062005200620054b1b22064100480d3c0240024020040d002006102a21050c010b200228020420042006102e21050b2005450d3d20022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a4189013a00000c360b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d3b200441017422062005200620054b1b22064100480d3b0240024020040d002006102a21050c010b200228020420042006102e21050b2005450d3c20022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a418a013a00000c350b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d3a200441017422062005200620054b1b22064100480d3a0240024020040d002006102a21050c010b200228020420042006102e21050b2005450d3b20022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a418b013a00000c340b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d39200441017422062005200620054b1b22064100480d390240024020040d002006102a21050c010b200228020420042006102e21050b2005450d3a20022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a418c013a00000c330b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d38200441017422062005200620054b1b22064100480d380240024020040d002006102a21050c010b200228020420042006102e21050b2005450d3920022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a418d013a00000c320b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d37200441017422062005200620054b1b22064100480d370240024020040d002006102a21050c010b200228020420042006102e21050b2005450d3820022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a418e013a00000c310b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d36200441017422062005200620054b1b22064100480d360240024020040d002006102a21050c010b200228020420042006102e21050b2005450d3720022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a418f013a00000c300b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d35200441017422062005200620054b1b22064100480d350240024020040d002006102a21050c010b200228020420042006102e21050b2005450d3620022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a4190013a00000c2f0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d34200441017422062005200620054b1b22064100480d340240024020040d002006102a21050c010b200228020420042006102e21050b2005450d3520022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a4191013a00000c2e0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d33200441017422062005200620054b1b22064100480d330240024020040d002006102a21050c010b200228020420042006102e21050b2005450d3420022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a4192013a00000c2d0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d32200441017422062005200620054b1b22064100480d320240024020040d002006102a21050c010b200228020420042006102e21050b2005450d3320022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a4193013a00000c2c0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d31200441017422062005200620054b1b22064100480d310240024020040d002006102a21050c010b200228020420042006102e21050b2005450d3220022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a4194013a00000c2b0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d30200441017422062005200620054b1b22064100480d300240024020040d002006102a21050c010b200228020420042006102e21050b2005450d3120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a4195013a00000c2a0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d2f200441017422062005200620054b1b22064100480d2f0240024020040d002006102a21050c010b200228020420042006102e21050b2005450d3020022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a4196013a00000c290b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d2e200441017422062005200620054b1b22064100480d2e0240024020040d002006102a21050c010b200228020420042006102e21050b2005450d2f20022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a4197013a00000c280b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d2d200441017422062005200620054b1b22064100480d2d0240024020040d002006102a21050c010b200228020420042006102e21050b2005450d2e20022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a4198013a00000c270b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d2c200441017422062005200620054b1b22064100480d2c0240024020040d002006102a21050c010b200228020420042006102e21050b2005450d2d20022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a4199013a00000c260b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d2b200441017422062005200620054b1b22064100480d2b0240024020040d002006102a21050c010b200228020420042006102e21050b2005450d2c20022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a419a013a00000c250b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d2a200441017422062005200620054b1b22064100480d2a0240024020040d002006102a21050c010b200228020420042006102e21050b2005450d2b20022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a419b013a00000c240b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d29200441017422062005200620054b1b22064100480d290240024020040d002006102a21050c010b200228020420042006102e21050b2005450d2a20022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a419c013a00000c230b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d28200441017422062005200620054b1b22064100480d280240024020040d002006102a21050c010b200228020420042006102e21050b2005450d2920022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a419d013a00000c220b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d27200441017422062005200620054b1b22064100480d270240024020040d002006102a21050c010b200228020420042006102e21050b2005450d2820022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a419e013a00000c210b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d26200441017422062005200620054b1b22064100480d260240024020040d002006102a21050c010b200228020420042006102e21050b2005450d2720022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a419f013a00000c200b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d25200441017422062005200620054b1b22064100480d250240024020040d002006102a21050c010b200228020420042006102e21050b2005450d2620022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41a0013a00000c1f0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d24200441017422062005200620054b1b22064100480d240240024020040d002006102a21050c010b200228020420042006102e21050b2005450d2520022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41a1013a00000c1e0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d23200441017422062005200620054b1b22064100480d230240024020040d002006102a21050c010b200228020420042006102e21050b2005450d2420022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41a2013a00000c1d0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d22200441017422062005200620054b1b22064100480d220240024020040d002006102a21050c010b200228020420042006102e21050b2005450d2320022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41a3013a00000c1c0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d21200441017422062005200620054b1b22064100480d210240024020040d002006102a21050c010b200228020420042006102e21050b2005450d2220022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41a4013a00000c1b0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d20200441017422062005200620054b1b22064100480d200240024020040d002006102a21050c010b200228020420042006102e21050b2005450d2120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41a5013a00000c1a0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d1f200441017422062005200620054b1b22064100480d1f0240024020040d002006102a21050c010b200228020420042006102e21050b2005450d2020022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41a6013a00000c190b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d1e200441017422062005200620054b1b22064100480d1e0240024020040d002006102a21050c010b200228020420042006102e21050b2005450d1f20022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41a7013a00000c180b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d1d200441017422062005200620054b1b22064100480d1d0240024020040d002006102a21050c010b200228020420042006102e21050b2005450d1e20022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41a8013a00000c170b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d1c200441017422062005200620054b1b22064100480d1c0240024020040d002006102a21050c010b200228020420042006102e21050b2005450d1d20022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41a9013a00000c160b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d1b200441017422062005200620054b1b22064100480d1b0240024020040d002006102a21050c010b200228020420042006102e21050b2005450d1c20022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41aa013a00000c150b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d1a200441017422062005200620054b1b22064100480d1a0240024020040d002006102a21050c010b200228020420042006102e21050b2005450d1b20022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41ab013a00000c140b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d19200441017422062005200620054b1b22064100480d190240024020040d002006102a21050c010b200228020420042006102e21050b2005450d1a20022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41ac013a00000c130b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d18200441017422062005200620054b1b22064100480d180240024020040d002006102a21050c010b200228020420042006102e21050b2005450d1920022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41ad013a00000c120b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d17200441017422062005200620054b1b22064100480d170240024020040d002006102a21050c010b200228020420042006102e21050b2005450d1820022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41ae013a00000c110b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d16200441017422062005200620054b1b22064100480d160240024020040d002006102a21050c010b200228020420042006102e21050b2005450d1720022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41af013a00000c100b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d15200441017422062005200620054b1b22064100480d150240024020040d002006102a21050c010b200228020420042006102e21050b2005450d1620022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41b0013a00000c0f0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d14200441017422062005200620054b1b22064100480d140240024020040d002006102a21050c010b200228020420042006102e21050b2005450d1520022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41b1013a00000c0e0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d13200441017422062005200620054b1b22064100480d130240024020040d002006102a21050c010b200228020420042006102e21050b2005450d1420022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41b2013a00000c0d0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d12200441017422062005200620054b1b22064100480d120240024020040d002006102a21050c010b200228020420042006102e21050b2005450d1320022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41b3013a00000c0c0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d14200441017422062005200620054b1b22064100480d140240024020040d002006102a21050c010b200228020420042006102e21050b2005450d1220022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41b4013a00000c0b0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d13200441017422062005200620054b1b22064100480d130240024020040d002006102a21050c010b200228020420042006102e21050b2005450d1220022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41b5013a00000c0a0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d12200441017422062005200620054b1b22064100480d120240024020040d002006102a21050c010b200228020420042006102e21050b2005450d1120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41b6013a00000c090b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d11200441017422062005200620054b1b22064100480d110240024020040d002006102a21050c010b200228020420042006102e21050b2005450d1020022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41b7013a00000c080b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d10200441017422062005200620054b1b22064100480d100240024020040d002006102a21050c010b200228020420042006102e21050b2005450d0f20022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41b8013a00000c070b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d0f200441017422062005200620054b1b22064100480d0f0240024020040d002006102a21050c010b200228020420042006102e21050b2005450d0e20022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41b9013a00000c060b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d0e200441017422062005200620054b1b22064100480d0e0240024020040d002006102a21050c010b200228020420042006102e21050b2005450d0d20022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41ba013a00000c050b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d0d200441017422062005200620054b1b22064100480d0d0240024020040d002006102a21050c010b200228020420042006102e21050b2005450d0c20022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41bb013a00000c040b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d0c200441017422062005200620054b1b22064100480d0c0240024020040d002006102a21050c010b200228020420042006102e21050b2005450d0b20022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41bc013a00000c030b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d0b200441017422062005200620054b1b22064100480d0b0240024020040d002006102a21050c010b200228020420042006102e21050b2005450d0a20022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41bd013a00000c020b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d0a200441017422062005200620054b1b22064100480d0a0240024020040d002006102a21050c010b200228020420042006102e21050b2005450d0920022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41be013a00000c010b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d09200441017422062005200620054b1b22064100480d090240024020040d002006102a21050c010b200228020420042006102e21050b2005450d0820022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41bf013a00000b2000411f3a000020012d00004109470d090240200141046a280200220228020441ffffffff0371450d002002280200102c200128020421020b2002102c0c090b1033000b1035000b1035000b1033000b1035000b1033000b1033000b1035000b20002004290200370200200041086a200441086a29020037020020012d00004109470d000240200141046a280200220228020441ffffffff0371450d002002280200102c200128020421020b2002102c0b200341106a24000b8207010b7f230041d0086b22022400410021034100210402400240024002400240024002400240034002402003411f4d0d00410f21030c020b0240024020012802082205200128020c2206460d00200641016a22072006490d05200520074f0d0120072005103f000b200241013a0089082002411c6a41013602002002420137020c200241f0f7c5003602082002412b36029c08200220024198086a360218200220024189086a36029808200241b8086a200241086a1037410521030c020b2001280200220820066a2d000021062001200736020c200641ff00712003411f71742004722104200341076a21032006418001710d000b20034120490d01410d210320064110490d010b2000200336020420004101360200200041086a20022903b808370200200041106a200241b8086a41086a2802003602000c060b024020040d002000428080808010370200200041086a42003702000c060b200241086a410041800810da051a41002106410021094101210a4100210b034002400240200520076b2004200b6b22034180082003418008491b2203490d00200720036a220c2007490d042005200c4f0d01200c2005103f000b200241013a00a708200241cc086a4101360200200242013702bc08200241f0f7c5003602b8082002412b36029c08200220024198086a3602c8082002200241a7086a36029808200241a8086a200241b8086a103720024194086a200241b0086a280200360000200220022903a80837008c08200041053a000420002002290089083700052000410c6a20024190086a290000370000200041013602002009450d07200a102c0c070b200241086a200820076a200310db051a2001200c36020c02400240200920066b2003490d00200620036a210c0c010b200620036a220c2006490d0520094101742207200c2007200c4b1b22074100480d050240024020090d002007102a210a0c010b200a20092007102e210a0b200a450d04200721090b200a20066a200241086a200310db051a20042003200b6a220b4d0d05200128020c21072001280208210520012802002108200c21060c000b0b417f20071047000b2007200c1047000b1033000b1035000b200241086a200a200c1058024020022802084101470d0002402009450d00200a102c0b200041083a0004200041013602000c010b2000200a3602042000410c6a200c360200200041086a2009360200200041003602000b200241d0086a24000b1500200120002802002200280200200028020810480bb30401067f200441046a21050240024002400240200441086a2802002004410c6a2802002206460d00200528020021070c010b200641016a22072006490d02200641017422082007200820074b1b22084100480d020240024020060d002008102a21070c010b200528020020062008102e21070b2007450d0120042007360204200441086a20083602002004410c6a28020021060b2004410c6a2208200641016a360200200720066a20024101463a0000200441086a2109034002400240200928020020082802002206460d00200528020021070c010b200641016a22072006490d032006410174220a2007200a20074b1b220a4100480d030240024020060d00200a102a21070c010b20052802002006200a102e21070b2007450d02200420073602042009200a360200200828020021060b2008200641016a360200200720066a200141807f72200141ff0071200141077622061b3a00002006210120060d000b024020024101470d002004410c6a2107200441086a2108034002400240200828020020072802002206460d00200528020021010c010b200641016a22012006490d04200641017422092001200920014b1b22094100480d040240024020060d002009102a21010c010b200528020020062009102e21010b2001450d032004200136020420082009360200200728020021060b2007200641016a360200200120066a200341807f72200341ff0071200341077622061b3a00002006210320060d000b0b2000411f3a00000f0b1033000b1035000bb007010a7f230041d0006b2202240002400240024002400240024020012802082203200128020c2204460d00200441016a22052004490d02200320054f0d0120052003103f000b200241013a001f200241cc006a41013602002002420137023c200241f0f7c5003602382002412b3602342002200241306a36024820022002411f6a360230200241206a200241386a10372002411b6a200241286a28020036000020022002290320370013200220022900103703002002200241176a290000370007200041053a0004200020022903003700052000410c6a2002290007370000200041013602000c040b2001280200220620046a2d000021072001200536020c024020074102490d00200041173a000420004101360200200041056a20073a00000c040b410120036b2108200441026a2104410021054100210902400240034002402005411f4d0d00410f21050c020b02400240200820046a4102460d002004450d06200320044f0d0120042003103f000b200241013a0000200241cc006a41013602002002420137023c200241f0f7c5003602382002412b3602342002200241306a36024820022002360230200241106a200241386a1037410521050c020b200620046a417f6a2d0000210a2001200436020c200a41ff00712005411f71742009722109200441016a2104200541076a2105200a418001710d000b20054120490d01410d2105200a4110490d010b2000200536020420004101360200200041086a2002290310370200200041106a200241106a41086a2802003602000c040b4100210502402007410171450d002004417f6a2104410021054100210b02400240034002402005411f4d0d00410f21040c020b0240024020032004460d002004417f460d082003200441016a22084f0d01200441016a2003103f000b200241013a0000200241cc006a41013602002002420137023c200241f0f7c5003602382002412b3602342002200241306a36024820022002360230200241106a200241386a1037410521040c020b200620046a2d0000210a2001200836020c200a41ff00712005411f7174200b72210b200541076a210520082104200a418001710d000b20054120490d01410d2104200a4110490d010b2000200436020420004101360200200041086a2002290310370200200041106a200241106a41086a2802003602000c050b410121050b20002009360204200041003602002000410c6a200b360200200041086a20053602000c030b417f20051047000b417f20041047000b417f200441016a1047000b200241d0006a24000bee0201067f230041c0006b2202240041002103410021040240024003400240024002402003411f4b0d002001280204220520012802082206460d01200641016a22072006490d04200520074f0d0220072005103f000b200041013602002000410f3a00040c040b200241013a000f200241346a410136020020024201370224200241f0f7c5003602202002412b36023c2002200241386a36023020022002410f6a360238200241106a200241206a10372002410b6a200241186a28020036000020022002290310370003200041053a0004200020022900003700052000410c6a200241076a290000370000200041013602000c030b200128020020066a2d0000210620012007360208200641ff00712003411f71742004722104200341076a21032006418001710d000b0240024020034120490d002006410f4b0d010b20004100360200200020043602040c020b200041013602002000410d3a00040c010b417f20071047000b200241c0006a24000bd307030e7f017e017f200241086a2103200241046a210420012802002205210602400240024002400240034002400240200428020020032802002207460d00200228020021080c010b200741016a22082007490d03200741017422092008200920084b1b22094100480d030240024020070d002009102a21080c010b200228020020072009102e21080b2008450d022002200836020020042009360200200328020021070b2003200741016a360200200820076a200641807f72200641ff0071200641077622071b3a00002007210620070d000b2001280204220a2001410c6a2802002206410c6c6a210b200141086a280200210c200a21072006450d03200a21072005450d03200b41746a210d200241086a210841002107200a210e0340200e2103024003402003280200220f0d01200741016a2107200b2003410c6a2203470d000c070b0b2003410c6a210e200741016a21102005417f6a2105200341046a2902002111034002400240200241046a220428020020082802002206460d00200228020021090c010b200641016a22092006490d04200641017422012009200120094b1b22014100480d040240024020060d002001102a21090c010b200228020020062001102e21090b2009450d032002200936020020042001360200200828020021060b2008200641016a360200200920066a200741807f72200741ff0071200741077622061b3a00002006210720060d000b2011422088a722122106034002400240200428020020082802002207460d00200228020021090c010b200741016a22092007490d04200741017422012009200120094b1b22014100480d040240024020070d002001102a21090c010b200228020020072001102e21090b2009450d032002200936020020042001360200200828020021070b2008200741016a360200200920076a200641807f72200641ff0071200641077622071b3a00002007210620070d000b0240024020042802002206200828020022076b2012490d00200228020021060c010b200720126a22092007490d03200641017422072009200720094b1b22074100480d030240024020060d002007102a21060c010b200228020020062007102e21060b2006450d022002200636020020042007360200200828020021070b2008200720126a360200200620076a200f201210db051a02402011a7450d00200f102c0b200d2003460d032010210720050d000c030b0b1033000b1035000b2003410c6a21070b2007200b460d000340024020072802002206450d00200741046a280200450d002006102c0b2007410c6a2207200b470d000b0b0240200c450d00200a102c0b2000411f3a00000baf06010a7f20012802042103200128020021044100210541002106410021074101210820012802082209210a024002400340024020062007470d002005200641016a220b2005200b4b1b22074100480d030240024020060d002007102a21080c010b200820062007102e21080b2008450d020b200820066a200a41807f72200a41ff0071200a410776220b1b3a0000200541026a2105200641016a2106200b210a200b0d000b02400240200720066b2009490d002007210a0c010b200620096a220a2006490d0220074101742205200a2005200a4b1b220a4100480d020240024020070d00200a102a21080c010b20082007200a102e21080b2008450d010b200820066a2004200910db051a02402003450d002004102c0b200128020c210302400240200a20096b20066b200141146a2802002205490d00200920056a20066a2104200a210c0c010b200920066a220b20056a2204200b490d02200a410174220b2004200b20044b1b220c4100480d0202400240200a0d00200c102a21080c010b2008200a200c102e21080b2008450d010b200820096a20066a2003200510db051a200241086a210b200241046a21072004210a0340024002402007280200200b2802002206460d00200228020021050c010b200641016a22052006490d03200641017422092005200920054b1b22094100480d030240024020060d002009102a21050c010b200228020020062009102e21050b2005450d022002200536020020072009360200200b28020021060b200b200641016a360200200520066a200a41807f72200a41ff0071200a41077622061b3a00002006210a20060d000b02400240200241046a280200220a200241086a28020022066b2004490d002002280200210a0c010b200620046a22052006490d02200a41017422062005200620054b1b22064100480d0202400240200a0d002006102a210a0c010b2002280200200a2006102e210a0b200a450d012002200a360200200241046a2006360200200241086a28020021060b200241086a200620046a360200200a20066a2008200410db051a0240200c450d002008102c0b2000411f3a00000240200141106a280200450d002003102c0b0f0b1033000b1035000bf20103027f017e057f024020002802082201200028020c460d00034020002001411c6a36020820012802102202450d01200141146a2902002103024020012802042204450d00200141086a280200210502402001410c6a2802002201450d0020014104742106200421010340024020012d00004109470d000240200141046a2207280200220828020441ffffffff0371450d002008280200102c200728020021080b2008102c0b200141106a2101200641706a22060d000b0b2005450d002004102c0b02402003a7450d002002102c0b20002802082201200028020c470d000b0b02402000280204450d002000280200102c0b0be50101067f024020002802082201200028020c460d0003402000200141186a36020820012802002202450d01200141146a2802002103200141106a2802002104200128020c210502402001280204450d002002102c0b02402003450d0020034104742103200521010340024020012d00004109470d000240200141046a2206280200220228020441ffffffff0371450d002002280200102c200628020021020b2002102c0b200141106a2101200341706a22030d000b0b02402004450d002005102c0b20002802082201200028020c470d000b0b02402000280204450d002000280200102c0b0bf20103027f017e057f024020002802082201200028020c460d00034020002001411c6a36020820012802102202450d01200141146a2902002103024020012802042204450d00200141086a280200210502402001410c6a2802002201450d0020014104742106200421010340024020012d00004109470d000240200141046a2207280200220828020441ffffffff0371450d002008280200102c200728020021080b2008102c0b200141106a2101200641706a22060d000b0b2005450d002004102c0b02402003a7450d002002102c0b20002802082201200028020c470d000b0b02402000280204450d002000280200102c0b0bce0101057f024020002802082201450d00200028020022022001411c6c6a21030340024020022802042200450d0002402002410c6a2802002201450d00200141047421010340024020002d00004109470d000240200041046a2204280200220528020441ffffffff0371450d002005280200102c200428020021050b2005102c0b200041106a2100200141706a22010d000b0b200241086a280200450d002002280204102c0b2002411c6a21000240200241146a280200450d002002280210102c0b2000210220002003470d000b0b0bef04010b7f230041c080016b2202240020022001109205410121030240024020022802004101470d0020002002290204370204200041013602002000410c6a2002410c6a2902003702000c010b20022802042104200241004180800110da052105410021064100210702400240024002402004450d00410021084100210641012103410021090340024002402001280204220a200128020822076b200420096b220b41808001200b41808001491b220b490d002007200b6a220c2007490d04200a200c4f0d01200c200a103f000b200541013a008f8001200541b480016a4101360200200542013702a48001200541f0f7c5003602a080012005412b3602bc80012005200541b880016a3602b0800120052005418f80016a3602b880012005419080016a200541a080016a10372005418b80016a2005419880016a2802003600002005200529039080013700838001200041053a00042000200529008080013700052000410c6a2005418780016a290000370000200041013602002006450d062003102c0c060b2005200128020020076a200b10db05210a2001200c36020802400240200620086b200b490d002008200b6a21070c010b2008200b6a22072008490d052006410174220c2007200c20074b1b220c4100480d050240024020060d00200c102a21030c010b20032006200c102e21030b2003450d04200c21060b200320086a200a200b10db051a200721082004200b20096a22094b0d000b0b2000200336020420004100360200200041146a2007360200200041106a41003602002000410c6a2007360200200041086a20063602000c030b2007200c1047000b1033000b1035000b200241c080016a24000b8f1f03127f017e037f23004180026b220524000240024020014115490d00410121064101210702400240034020012108200021092006200771410173210a024002400240034002400240024002402004450d00024020064101710d0020002001109b052004417f6a21040b2001410276220741036c210b2007410174210c4100210d20014132490d03200741016a210e200020074103746a220f28020020002007417f6a220d4103746a2210280200201041046a2802002210200f41046a280200220f200f20104b1b10dd052211450d01417f410120114100481b21100c020b20002001109c050c0b0b417f200f201047200f2010491b21100b2007200d2010417f4622101b210f024002402000200e4103746a22112802002000200d200720101b22124103746a2207280200200741046a2802002207201141046a280200220d200d20074b1b10dd052211450d00417f410120114100481b21070c010b417f200d200747200d2007491b21070b4102410120101b20102007417f4622071b210d024002402000200e201220071b22114103746a22102802002000200f4103746a2207280200200741046a2802002207201041046a2802002210201020074b1b10dd05220e450d00417f4101200e4100481b21100c010b417f201020074720102007491b21100b200c4101722107200d2010417f4622126a2113024002402000200c4103746a220d2802002000200c417f6a22104103746a220e280200200e41046a280200220e200d41046a280200220d200d200e4b1b10dd052214450d00417f410120144100481b210e0c010b417f200d200e47200d200e491b210e0b200c2010200e417f46220e1b210d2013200e6a211302400240200020074103746a221428020020002010200c200e1b220e4103746a220c280200200c41046a280200220c201441046a28020022102010200c4b1b10dd052214450d00417f410120144100481b210c0c010b417f2010200c472010200c491b210c0b2013200c417f46220c6a21100240024020002007200e200c1b22134103746a220c2802002000200d4103746a2207280200200741046a2802002207200c41046a280200220c200c20074b1b10dd05220e450d00417f4101200e4100481b210c0c010b417f200c200747200c2007491b210c0b200b41016a21072010200c417f4622146a2115024002402000200b4103746a220e2802002000200b417f6a220c4103746a2210280200201041046a2802002210200e41046a280200220e200e20104b1b10dd052216450d00417f410120164100481b21100c010b417f200e201047200e2010491b21100b200b200c2010417f4622101b210e201520106a211502400240200020074103746a22162802002000200c200b20101b22104103746a220c280200200c41046a280200220c201641046a280200220b200b200c4b1b10dd052216450d00417f410120164100481b210c0c010b417f200b200c47200b200c491b210c0b2015200c417f46220c6a211502400240200020072010200c1b220b4103746a220c2802002000200e4103746a2207280200200741046a2802002207200c41046a280200220c200c20074b1b10dd052210450d00417f410120104100481b21100c010b417f200c200747200c2007491b21100b200f201120121b2107200d201320141b210c200e200b2010417f4622101b210b201520106a210d0b024002402000200c4103746a220e280200200020074103746a2210280200201041046a2802002210200e41046a280200220e200e20104b1b10dd05220f450d00417f4101200f4100481b21100c010b417f200e201047200e2010491b21100b200c20072010417f46220e1b2110200d200e6a210d024002402000200b4103746a220f28020020002007200c200e1b220e4103746a2207280200200741046a2802002207200f41046a280200220c200c20074b1b10dd05220f450d00417f4101200f4100481b21070c010b417f200c200747200c2007491b21070b200d2007417f46220c6a2107024002400240024002402000200b200e200c1b220d4103746a220b280200200020104103746a220c280200200c41046a280200220c200b41046a280200220b200b200c4b1b10dd05220e450d00200e4100480d010c020b200b200c4f0d010b200741016a2207410c490d0102402001410176220b450d00200020014103746a41786a21072000210c0340200c2902002117200c200729020037020020072017370200200c41086a210c200741786a2107200b417f6a220b0d000b0b20012010417f736a2110410121070c020b200d21100b20074521070b0240200745200a724101710d0020002001109d050d090b2003450d010240201020014f0d00024002402003280200200020104103746a2207280200200741046a280200220c200341046a280200220b200b200c4b1b10dd05220e450d00200e41004e0d010c050b200b200c490d040b200029020021172000200729020037020020072017370200200041786a21122000410c6a2113200041086a2114200028020421072000280200210d4100210b2001210e0340024002400240200b200e417f6a22114f0d002013200b4103746a210c034002400240200d200c417c6a280200200c28020022102007200720104b1b10dd05220f450d00200f4100480d030c010b20072010490d020b200c41086a210c2011200b41016a220b470d000c020b0b0240200b20114f0d002012200e4103746a210c2011210e034002400240200d200c280200200c41046a28020022102007200720104b1b10dd05220f450d00200f4100480d010c050b200720104f0d040b200c41786a210c200b200e417f6a220e490d000b0b200b21110b200020073602042000200d36020002402001201141016a2207490d00200020074103746a2100200120076b220141154f0d040c0b0b200720011047000b2014200b4103746a221029020021172010200c290200370200200c2017370200200b41016a210b0c000b0b0b41c4ffc500201020011038000b20080d0141f8fec500410041001038000b20002109200121080b201020084f0d02200929020021172009200920104103746a2207290200370200200720173702002009280204210c2009280200211241002100410021184100211902402008417f6a220e450d002009410c6a21074100211803400240024002402007417c6a2802002012200c2007280200220b200b200c4b1b10dd052210450d00201041004e0d010c020b200b200c490d010b200e21190240200e20184d0d00200920084103746a41786a2107200e211903400240024020072802002012200c200741046a280200220b200b200c4b1b10dd052210450d00201041004e0d010c030b200b200c490d020b200741786a21072019417f6a221920184b0d000b0b0240024020192018490d00200e2019490d010c040b201820191047000b2019200e103f000b200741086a2107200e201841016a2218470d000b200e2118200e21190b200941086a220720194103746a210e41800121144100211141002110410021014180012106200720184103746a221a210d03400240200e200d6b22074187104b220a0d002007410376220741807f6a200720112000492001201049220b72220f1b21070240200f450d0020062007200b1b210620072014200b1b21140c010b2007200741017622066b21140b024020012010470d00024020060d002005221021010c010b4100210720052110200d210b0340201020073a0000200741016a210702400240200b2802002012200c200b41046a280200220f200f200c4b1b10dd052201450d00417f410120014100481b210f0c010b417f200f200c47200f200c491b210f0b200b41086a210b2010200f417f476a211020062007470d000b200521010b024020112000470d00024020140d0020054180016a220021110c010b200e41786a21074100210b20054180016a210003402000200b3a0000200b41016a210b0240024020072802002012200c200741046a280200220f200f200c4b1b10dd052211450d00417f410120114100481b210f0c010b417f200f200c47200f200c491b210f0b200741786a21072000200f417f466a21002014200b470d000b20054180016a21110b0240200020116b2207201020016b220b200b20074b1b2213450d00200d20012d00004103746a22072802042115200728020021162007200e20112d0000417f734103746a290200370200024020134101460d00410021070340200e201120076a220b2d0000417f734103746a200d200120076a41016a220f2d00004103746a290200370200200d200f2d00004103746a200e200b41016a2d0000417f734103746a290200370200200741026a210b200741016a220f2107200b2013490d000b2011200f6a21112001200f6a21010b200e20112d0000417f734103746a2207201536020420072016360200201141016a2111200141016a21010b200e20144103746b200e20112000461b210e200d20064103746a200d20012010461b210d200a0d000b02400240200120104f0d00200e21070340200d2010417f6a22102d00004103746a220b2902002117200b200741786a22072902003702002007201737020020012010490d000c020b0b200d2107201120004f0d000340200729020021172007200e2000417f6a22002d0000417f734103746a220b290200370200200b2017370200200741086a210720112000490d000b0b2009200c36020420092012360200024020082007201a6b41037620186a22014d0d00200929020021172009200920014103746a220729020037020020072017370200200820016b220c450d02200c20012001200c4b1b210b20084103762110200741086a2100024002402001200c417f6a220c490d002000200c200220072004109a05200921000c010b20092001200220032004109a0520072103200c21010b200b20104f2106201920184d2107200141154f0d010c040b0b4188ffc500200120081038000b4198ffc500411c41b4ffc5001036000b4188ffc500201020081038000b20014102490d00200041786a211341002114410121120340201241037421072012417f6a2110201241016a2112024002400240200020076a22072802002211200020104103746a220f280200200f41046a280200220c200741046a280200220b200b200c4b1b10dd05220e450d00200e4100480d010c020b200b200c4f0d010b2007200f29020037020002402010450d002014210c20132107024003400240024020112007280200200741046a280200220e200b200b200e4b1b10dd05220d450d00200d4100480d010c030b200b200e4f0d030b20002010417f6a22104103746a210f200741086a2007290200370200200741786a2107200c41016a220e200c49210d200e210c200d450d000b0b200741086a210f0b200f200b360204200f20113602000b2014417f6a2114201341086a211320122001470d000b0b20054180026a24000bf50202057f017e02400240024020014108490d00200141017641feffffff07712202417f6a220320014f0d022001410d74200173220441117620047322044105742004732205417f2001417f6a677622067122044100200120042001491b6b220420014f0d01200020034103746a220329020021072003200020044103746a220429020037020020042007370200024020022001490d00200221030c030b2005410d7420057322044111762004732204410574200473220520067122044100200120042001491b6b220420014f0d01200020024103746a220329020021072003200020044103746a2204290200370200200420073702002002410172220320014f0d022005410d742005732204411176200473220441057420047320067122044100200120042001491b6b220420014f0d01200020034103746a220129020021072001200020044103746a2200290200370200200020073702000b0f0b4188ffc500200420011038000b41f8fec500200320011038000bb20102037f017e024020014101762202450d00200020012002417f6a109e052002417e6a210203402002417f460d01200020012002109e052002417f6a21020c000b0b0240024020014102490d00200141037420006a41786a21022001210303402003417f6a220420014f0d02200029020021052000200229020037020020022005370200200020044100109e05200241786a210220042103200441014b0d000b0b0f0b4188ffc5002003417f6a20011038000b9a06050a7f017e017f017e037f200041686a2102200041786a2103200141324921044101210541002106024003400240024020052001490d00410021070c010b200320054103746a210841012107034002400240200841086a22092802002008280200200841046a280200220a2008410c6a28020022082008200a4b1b10dd05220b450d00200b4100480d030c010b2008200a490d020b4101210a200541016a220520014921072009210820012005470d000c030b0b2005200146210a20040d0120052001460d01024002400240024002402005417f6a220820014f0d002007410171450d01200020084103746a2208290200210c200820002005410374220d6a220b290200220e370200200b200c37020020054102490d0402400240200ea7220f20002005417e6a220a4103746a2210280200201041046a2802002207200841046a2802002209200920074b1b10dd052211450d0020114100480d010c060b200920074f0d050b20082010290200370200200a450d032002200d6a2108034002400240200f2008280200200841046a28020022072009200920074b1b10dd05220d450d00200d4100480d010c050b200920074f0d050b2000200a417f6a220a4103746a2110200841086a2008290200370200200841786a2108200a0d000c030b0b41f8fec500200820011038000b4188ffc500200520011038000b200841086a21100b201020093602042010200f3602000b200641016a21060240200120056b220d4102490d0002400240200b280208200b280200220f200b41046a2802002209200b410c6a2802002208200820094b1b10dd05220a450d00200a4100480d010c020b200820094f0d010b200b41086a2111200b200b2902083702000240200d4103490d004103210a41022107034002400240200b20074103746a2208280200200f2009200841046a2802002207200720094b1b10dd052210450d00201041004e0d030c010b200720094f0d020b200841786a20082902003702000240200a200d4f0d00200a2107200a41016a210a200821110c010b0b200821110b2011200f360200201120093602040b20064105470d000b4100210a0b200a0bb60202057f017e03402002410174220341017221040240024002400240200341026a220320014f0d00200420014f0d0102400240200020044103746a2205280200200020034103746a2206280200200641046a2802002206200541046a2802002205200520064b1b10dd052207450d00417f410120074100481b21060c010b417f200520064720052006491b21060b200320042006417f461b21040b0240200420014f0d00200220014f0d020240200020024103746a2202280200200020044103746a2203280200200341046a2802002206200241046a2802002205200520064b1b10dd052207450d00200741004e0d010c040b20052006490d030b0f0b41a080c600200420011038000b41b080c600200220011038000b200229020021082002200329020037020020032008370200200421020c000b0b8d0302037f017e230041c0006b22022400200141086a28020021032001280204210420022001280200220136020002400240024002402001418080044b0d002004450d022002200336020402400240200120034b0d002003418080044d0d042002413c6a41013602002002420237022c2002419c98c6003602282002410136020c200241f897c6003602082002200241086a360238200241186a200241286a1037200241186a21010c010b2002413c6a4102360200200241246a41013602002002420237022c2002418c98c6003602282002410136021c2002200241186a360238200220023602202002200241046a360218200241086a200241286a1037200241086a21010b20012902042105200128020021010c010b2002413c6a41013602002002420237022c200241fc97c6003602282002410136020c200241f897c6003602082002200241086a360238200241186a200241286a103720022802182101200229021c21050b2001450d0020002005370204200020013602000c010b200041003602000b200241c0006a24000be00501037f230041f0006b2204240002400240024020012802084102460d00412e102a2201450d01200041013a0000200141266a41002900909a46370000200141206a410029008a9a46370000200141186a41002900829a46370000200141106a41002900fa9946370000200141086a41002900f29946370000200141002900ea9946370000200041086a42ae808080e005370200200041046a20013602000c020b0240024002400240024002400240200128020022052d0000416e6a2201411e4b0d004100210620010e1f03000000000000000000000000000000000000000000000000000006040102030b4120102a2201450d06200041013a0000200141186a41002900b09a46370000200141106a41002900a89a46370000200141086a41002900a09a46370000200141002900989a46370000200041086a42a08080808004370200200041046a20013602000c070b410221060c040b410321060c030b20042005280204220136020c0240024020012003490d0041b89ac6002105200441e8006a2103200441d0006a2101200441c0006a21020c010b200220014101746a22012d0001450d0241c89ac6002105200441386a2103200441206a2101200441106a21020b20034101360204200141146a410136020020012003360210200142023702042001200536020020032004410c6a360200200220011037200041013a00002000410c6a200241086a280200360200200041046a20022902003702000c040b410121060c010b20012d000021060b0240200541106a2d00004106470d00200041003a0000200020063a00010c020b4129102a2201450d00200041013a0000200141286a41002d00809b463a0000200141206a41002900f89a46370000200141186a41002900f09a46370000200141106a41002900e89a46370000200141086a41002900e09a46370000200141002900d89a46370000200041086a42a98080809005370200200041046a20013602000c010b1033000b200441f0006a24000b8f0201017f230041106b220224000240024002400240024020002d00000e0401020300010b2002200128021841e4f7c50041032001411c6a28020028020c11000022003a000820022001360200200241003a0009200241003602040c030b2002200128021841e7f7c50041032001411c6a28020028020c11000022003a000820022001360200200241003a0009200241003602040c020b2002200128021841eaf7c50041032001411c6a28020028020c11000022003a000820022001360200200241003a0009200241003602040c010b2002200128021841edf7c50041032001411c6a28020028020c11000022003a000820022001360200200241003a0009200241003602040b200241106a240020000bfac00103087f027e017f230041f0006b2203240002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020022d00000eac0100c1010102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f80018101820183018401850186018701880189018a018b018c018d018e018f0190019101920193019401950196019701980199019a019b019c019d019e019f01a001a101a201a301a401a501a601a701a801a901aa01000b02400240200141306a2802002202417f6a220420024f0d00200420024d0d010b4118102a2200450dbe012003421837025c20032000360258200341d8006a4100411810c80520032003280260220041186a3602602000200328025822016a411841ba9dc600411810c9052003200329025c37025c2003200136025841b892c600413b200341d8006a41f492c600103b000b02400240200128022820044103746a22052802002204200141206a220628020022024b0d00200421010c010b024002402001411c6a280200220720026b200420026b2208490d0020012802182107200221010c010b200220086a22092002490dc0012007410174220a2009200a20094b1b22094100480dc0010240024020070d002009102a21070c010b200128021820072009102e21070b2007450dbf01200120073602182001411c6a2009360200200141206a28020021010b200720016a21090240024020084102490d002009410420042002417f736a220210da051a2007200220016a22016a21090c010b2008450d010b200941043a0000200141016a21010b20062001360200200541013a00060cc0010b0240200141306a2802002204200141346a22052802004f0d002002310001210b200141206a350200210c024020042001412c6a280200470d00200441016a22022004490dbf01200441017422052002200520024b1b220241ffffffff01712002470dbf01200241037422054100480dbf010240024020040d002005102a21040c010b200128022820044103742005102e21040b2004450dbe01200120043602282001412c6a2002360200200141306a28020021040b200128022820044103746a200b422886200c84370200200141306a2201200128020041016a3602000cc0010b200341ec006a220141013602002003420137025c200341b49ec600360258200341013602042003200536020020032003360268200341106a200341d8006a103720032802102202450dbf012003200329021437023c20032002360238200141013602002003420137025c200341e897c6003602582003412d360204200320033602682003200341386a360200200341106a200341d8006a1037200328021021012003290214210b0240200328023c450d002003280238102c0b2001450dbf012000200b370204200020013602000cc0010b0240200141306a2802002204200141346a22052802004f0d002002310001210b200141206a350200210c024020042001412c6a280200470d00200441016a22022004490dbe01200441017422052002200520024b1b220241ffffffff01712002470dbe01200241037422054100480dbe010240024020040d002005102a21040c010b200128022820044103742005102e21040b2004450dbd01200120043602282001412c6a2002360200200141306a28020021040b200128022820044103746a200b422886200c8442808080803084370200200141306a2201200128020041016a3602000cbf010b200341ec006a220141013602002003420137025c200341b49ec600360258200341013602042003200536020020032003360268200341106a200341d8006a103720032802102202450dbe012003200329021437023c20032002360238200141013602002003420137025c200341e897c6003602582003412d360204200320033602682003200341386a360200200341106a200341d8006a1037200328021021012003290214210b0240200328023c450d002003280238102c0b2001450dbe012000200b370204200020013602000cbf010b2002310001210b200341d8006a200141186a200141286a2204410010ca05024020032d00584101470d002000200329025c370200200041086a200341e4006a2802003602000cbf010b0240200141306a2802002202200141346a22052802004f0d00200141206a350200210c024020022001412c6a280200470d00200241016a22052002490dbd01200241017422062005200620054b1b220541ffffffff01712005470dbd01200541037422064100480dbd010240024020020d002006102a21020c010b200428020020024103742006102e21020b2002450dbc01200120023602282001412c6a2005360200200141306a28020021020b200128022820024103746a200b422886200c8442808080801084370200200141306a2201200128020041016a3602000cbe010b200341ec006a220141013602002003420137025c200341b49ec600360258200341013602042003200536020020032003360268200341106a200341d8006a103720032802102202450dbd012003200329021437023c20032002360238200141013602002003420137025c200341e897c6003602582003412d360204200320033602682003200341386a360200200341106a200341d8006a1037200328021021012003290214210b0240200328023c450d002003280238102c0b2001450dbd012000200b370204200020013602000cbe010b02400240200141306a2802002202417f6a220420024f0d00200420024d0d010b4118102a2200450dba012003421837025c20032000360258200341d8006a4100411810c80520032003280260220041186a3602602000200328025822016a411841ba9dc600411810c9052003200329025c37025c20032001360258418493c6004134200341d8006a41f492c600103b000b02400240200141286a220228020020044103746a22042d00044101470d002004310005210b200341d8006a200141186a200210cb052003280258450d0120002003290358370200200041086a200341d8006a41086a2802003602000cbf010b411a102a2201450dba01200141186a41002f00d093463b0000200141106a41002900c89346370000200141086a41002900c09346370000200141002900b893463700002000429a808080a003370204200020013602000cbe010b0240200141306a2802002204200141346a22052802004f0d00200141206a350200210c024020042001412c6a280200470d00200441016a22052004490dbc01200441017422062005200620054b1b220541ffffffff01712005470dbc01200541037422064100480dbc010240024020040d002006102a21020c010b200228020020044103742006102e21020b2002450dbb01200120023602282001412c6a2005360200200141306a28020021040b200128022820044103746a200b422886200c8442808080802084370200200141306a2201200128020041016a3602000cbd010b200341ec006a220141013602002003420137025c200341b49ec600360258200341013602042003200536020020032003360268200341106a200341d8006a103720032802102202450dbc012003200329021437023c20032002360238200141013602002003420137025c200341e897c6003602582003412d360204200320033602682003200341386a360200200341106a200341d8006a1037200328021021012003290214210b0240200328023c450d002003280238102c0b2001450dbc012000200b370204200020013602000cbd010b02400240200141306a2802002202417f6a220420024f0d00200420024d0d010b4118102a2200450db9012003421837025c20032000360258200341d8006a4100411810c80520032003280260220041186a3602602000200328025822016a411841ba9dc600411810c9052003200329025c37025c20032001360258418493c6004134200341d8006a41f492c600103b000b200141286a220628020020044103746a22042d00052105024020042d00044101470d00200541ff01714104470da6010b0240024020024101460d00200341d8006a200141186a2202200610cb052003280258450d0120002003290358370200200041086a200341d8006a41086a2802003602000cbe010b20012d003822024104460dbb01200341d8006a200141186a22052006200210ca050240024020032d00584101460d000240200141206a2802002204200141246a22072802004f0d00024020042001411c6a280200470d00200441016a22072004490dbe01200441017422082007200820074b1b22074100480dbe010240024020040d002007102a21040c010b200528020020042007102e21040b2004450dbd01200120043602182001411c6a2007360200200141206a28020021040b200128021820046a20023a0000200141206a2202200228020041016a3602000cbe010b200341ec006a220241013602002003420137025c200341b49ec6003602582003410136023c200320073602382003200341386a360268200341106a200341d8006a103720032802102204450dbd012003200329021437023c20032004360238200241013602002003420137025c200341e897c6003602582003412d360204200320033602682003200341386a360200200341106a200341d8006a1037200328021021022003290214210b0240200328023c450d002003280238102c0b20020d010cbd010b200328025c2202450dbc01200341e0006a290300210b0b2000200b370204200020023602000cbd010b200541ff01714104460dbb010240200141206a2802002204200141246a22062802004f0d00024020042001411c6a280200470d00200441016a22062004490dbb01200441017422072006200720064b1b22064100480dbb010240024020040d002006102a21020c010b200228020020042006102e21020b2002450dba01200120023602182001411c6a2006360200200141206a28020021040b200128021820046a20053a0000200141206a2201200128020041016a3602000cbc010b200341ec006a220141013602002003420137025c200341b49ec600360258200341013602042003200636020020032003360268200341106a200341d8006a103720032802102202450dbb012003200329021437023c20032002360238200141013602002003420137025c200341e897c6003602582003412d360204200320033602682003200341386a360200200341106a200341d8006a1037200328021021012003290214210b0240200328023c450d002003280238102c0b2001450dbb012000200b370204200020013602000cbc010b2003200241046a2802002202360248024002400240200141306a280200220420024d0d0020042002417f736a22022004490d0141969ec600411d1054000b200341ec006a220241023602002003411c6a41013602002003420237025c200341d49dc60036025820034101360214200320043602002003200341106a360268200320033602182003200341c8006a360210200341386a200341d8006a1037200328023821042003200329023c37023c20032004360238200241013602002003420137025c200341e897c6003602582003412d360204200320033602682003200341386a360200200341106a200341d8006a1037200328021021022003290214210b0240200328023c450d002003280238102c0b20020d010cb8010b200141286a220428020020024103746a22022d00044103460db70120022d0005220241ff01714104460db701200341d8006a200141186a22052004200210ca05024020032d00584101460d000240200141206a2802002204200141246a22062802004f0d00024020042001411c6a280200470d00200441016a22062004490dbc01200441017422072006200720064b1b22064100480dbc010240024020040d002006102a21040c010b200528020020042006102e21040b2004450dbb01200120043602182001411c6a2006360200200141206a28020021040b200128021820046a20023a0000200141206a2202200228020041016a3602000cb9010b200341ec006a220241013602002003420137025c200341b49ec6003602582003410136023c200320063602382003200341386a360268200341106a200341d8006a103720032802102204450db8012003200329021437023c20032004360238200241013602002003420137025c200341e897c6003602582003412d360204200320033602682003200341386a360200200341106a200341d8006a1037200328021021022003290214210b0240200328023c450d002003280238102c0b2002450db8010c010b200328025c2202450db701200341e0006a290300210b0b2000200b370204200020023602000cbb010b200241046a2802002102200341d8006a200141186a2206200141286a2205410010ca05024020032d00584101470d00200341e0006a290300210b200328025c21010cb4010b200141306a28020021042003200236024802400240200420024d0d0020042002417f736a22022004490d0141969ec600411d1054000b200341ec006a220141023602002003411c6a41013602002003420237025c200341d49dc60036025820034101360214200320043602002003200341106a360268200320033602182003200341c8006a360210200341386a200341d8006a1037200328023821022003200329023c37023c20032002360238200141013602002003420137025c200341e897c6003602582003412d360204200320033602682003200341386a360200200341106a200341d8006a1037200328021021012003290214210b200328023c450db4012003280238102c20010db5010cba010b200528020020024103746a22022d00044103460db90120022d0005220241ff01714104460db901200341d8006a20062005200210ca05024020032d00584101460d000240200141206a2802002204200141246a22052802004f0d00024020042001411c6a280200470d00200441016a22052004490dba01200441017422072005200720054b1b22054100480dba010240024020040d002005102a21040c010b200628020020042005102e21040b2004450db901200120043602182001411c6a2005360200200141206a28020021040b200128021820046a20023a0000200141206a2201200128020041016a3602000cbb010b200341ec006a220141013602002003420137025c200341b49ec6003602582003410136023c200320053602382003200341386a360268200341106a200341d8006a103720032802102202450dba012003200329021437023c20032002360238200141013602002003420137025c200341e897c6003602582003412d360204200320033602682003200341386a360200200341106a200341d8006a1037200328021021012003290214210b0240200328023c450d002003280238102c0b20010db5010cba010b200328025c2201450db901200341e0006a290300210b0cb4010b200241046a280200220228020421062002280200210420032002280208220536024802400240200141306a280200220220054d0d0020022005417f736a22052002490d0141969ec600411d1054000b200341ec006a220441023602002003411c6a41013602002003420237025c200341d49dc60036025820034101360214200320023602002003200341106a360268200320033602182003200341c8006a360210200341386a200341d8006a1037200328023821022003200329023c37023c20032002360238200441013602002003420137025c200341e897c6003602582003412d360204200320033602682003200341386a360200200341106a200341d8006a1037200328021021022003290214210b0240200328023c450d002003280238102c0b2003200b370204200320023602000cb1010b410421090240200141286a220d280200220720054103746a22052d00044103460d0020052d000521090b200320093a00302006450dac01200941ff0171220a4104460dab01200641027421060340200320042802002205360248200220054d0dae0120022005417f736a220520024f0db201200720054103746a22052d00044103460daf0120052d000522084104460daf01200a2008470daf01200441046a21042006417c6a22060d000cad010b0b20012d003822024104460da901200341d8006a200141186a2205200141286a200210ca050240024020032d00584101460d000240200141206a2802002204200141246a22062802004f0d00024020042001411c6a280200470d00200441016a22062004490db901200441017422072006200720064b1b22064100480db9010240024020040d002006102a21040c010b200528020020042006102e21040b2004450db801200120043602182001411c6a2006360200200141206a28020021040b200128021820046a20023a0000200141206a2202200228020041016a3602000cac010b200341ec006a220241013602002003420137025c200341b49ec6003602582003410136023c200320063602382003200341386a360268200341106a200341d8006a103720032802102204450dab012003200329021437023c20032004360238200241013602002003420137025c200341e897c6003602582003412d360204200320033602682003200341386a360200200341106a200341d8006a1037200328021021022003290214210b0240200328023c450d002003280238102c0b20020d010cab010b200328025c2202450daa01200341e0006a290300210b0b2000200b370204200020023602000cb8010b200128020021042003200241046a2802002202360254024002400240200441386a28020020024b0d00200341ec006a41013602002003420237025c200341889cc600360258200341013602342003200341306a3602682003200341d4006a360230200341386a200341d8006a1037200341186a200329023c370300200341013602102003200328023822043602140c010b2003200428023020024102746a2802002202360200024002402004412c6a28020020024b0d0041012105200341ec006a41013602002003420237025c200341ac9cc6003602582003410136024c2003200341c8006a36026820032003360248200341386a200341d8006a1037200341186a200329023c220b370300200b422088a7210720032802382104200ba721020c010b2003411c6a200428022420024104746a22042d000d22073a0000200341186a2004280208220236020020042802002104410021050b20032005360210200320043602142005450d010b200341186a21010ca7010b02402002450d002004417f6a2104200141286a2105200141186a21060340200341d8006a20062005200420026a2d000010ca05024020032d00584101470d00200341e0006a2101200328025c21040ca9010b2002417f6a22020d000b0b200741ff01714104460db6010240200141206a2802002202200141246a22042802004f0d00024020022001411c6a280200470d00200241016a22042002490db601200241017422052004200520044b1b22044100480db6010240024020020d002004102a21020c010b200128021820022004102e21020b2002450db501200120023602182001411c6a2004360200200141206a28020021020b200128021820026a20073a0000200141206a2201200128020041016a3602000cb7010b200341ec006a220141013602002003420137025c200341b49ec600360258200341013602042003200436020020032003360268200341106a200341d8006a103720032802102202450db6012003200329021437023c20032002360238200141013602002003420137025c200341e897c6003602582003412d360204200320033602682003200341386a360200200341106a200341d8006a1037200328021021042003290214210b0240200328023c450d002003280238102c0b2004450db6010ca7010b200241046a280200210620012802002102200341003602380240024002400240200241146a2802000d00200341d8006a41146a41013602002003420237025c200341e89bc60036025820034101360204200320033602682003200341386a360200200341106a200341d8006a10370c010b200341d8006a200141186a2204200141286a2205410010ca05024020032d00584101470d00200341e0006a290300210b200328025c21010c030b20012802002207412c6a280200210220032006360238200220064b0d01200341ec006a41013602002003420237025c200341ac9cc60036025820034101360204200320033602682003200341386a360200200341106a200341d8006a10370b200328021021012003290214210b0c010b200728022420064104746a22062d000d2107024020062802082202450d002006280200417f6a21060340200341d8006a20042005200620026a2d000010ca05024020032d00584101470d00200341e0006a290300210b200328025c21010c030b2002417f6a22020d000b0b200741ff01714104460db6010240200141206a2802002202200141246a22052802004f0d00024020022001411c6a280200470d00200241016a22052002490db601200241017422062005200620054b1b22054100480db6010240024020020d002005102a21020c010b200428020020022005102e21020b2002450db501200120023602182001411c6a2005360200200141206a28020021020b200128021820026a20073a0000200141206a2201200128020041016a3602000cb7010b200341ec006a220141013602002003420137025c200341b49ec600360258200341013602042003200536020020032003360268200341106a200341d8006a103720032802102202450db6012003200329021437023c20032002360238200141013602002003420137025c200341e897c6003602582003412d360204200320033602682003200341386a360200200341106a200341d8006a1037200328021021012003290214210b200328023c450d002003280238102c0b2001450db5012000200b370204200020013602000cb6010b200341d8006a200141186a200141286a410410ca0520032d00584101470db401200328025c2201450db4012000200341e0006a290300370204200020013602000cb5010b200341d8006a200141186a2204200141286a2205410010ca05200341d8006a21020240024020032d00584101460d00200341d8006a20042005410410ca05200341d8006a210220032d00584101460d00200341d8006a2004200520032d0059220610ca05200341d8006a210220032d00584101460d000240200141206a2802002202200141246a22052802004f0d00024020022001411c6a280200470d00200241016a22052002490db501200241017422072005200720054b1b22054100480db5010240024020020d002005102a21020c010b200428020020022005102e21020b2002450db401200120023602182001411c6a2005360200200141206a28020021020b200128021820026a20063a0000200141206a2201200128020041016a3602000cb6010b200341ec006a220141013602002003420137025c200341b49ec600360258200341013602042003200536020020032003360268200341106a200341d8006a103720032802102202450db5012003200329021437023c20032002360238200141013602002003420137025c200341e897c6003602582003412d360204200320033602682003200341386a360200200341106a200341d8006a1037200328021021012003290214210b0240200328023c450d002003280238102c0b20010d010cb5010b200241046a2802002201450db401200241086a290200210b0b2000200b370204200020013602000cb4010b200341d8006a200141046a200241046a28020010cc050240024020032d00584101460d000240200141206a2802002202200141246a22042802004f0d0020032d00592104024020022001411c6a280200470d00200241016a22052002490db401200241017422062005200620054b1b22054100480db4010240024020020d002005102a21020c010b200128021820022005102e21020b2002450db301200120023602182001411c6a2005360200200141206a28020021020b200128021820026a20043a0000200141206a2201200128020041016a3602000cb5010b200341ec006a220141013602002003420137025c200341b49ec600360258200341013602042003200436020020032003360268200341106a200341d8006a103720032802102202450db4012003200329021437023c20032002360238200141013602002003420137025c200341e897c6003602582003412d360204200320033602682003200341386a360200200341106a200341d8006a1037200328021021012003290214210b0240200328023c450d002003280238102c0b20010d010cb4010b200328025c2201450db301200341e0006a290300210b0b2000200b370204200020013602000cb3010b2003200241046a2802002202360200200341d8006a200141046a200210cc05024020032d00584101470d002003200328025c22013602382003200341e0006a290300220b37023c0ca1010b200320032d005922023a0030200341d8006a200141186a200141286a410410ca05024020032d00584101470d00200341c0006a200341e4006a2802003602002003200329025c3703380ca0010b200320032d005922013a004820014104460db101200241ff01712001460db101200341106a41146a41323602002003411c6a412c360200200341d8006a41146a41033602002003420337025c200341f493c600360258200341013602142003200341106a3602682003200341c8006a3602202003200341306a36021820032003360210200341386a200341d8006a10370c9f010b200341d8006a200141046a200241046a28020010cc050240024020032d00584101460d00200341d8006a200141186a2205200141286a20032d0059220410ca05024020032d00584101460d000240200141206a2802002202200141246a22062802004f0d00024020022001411c6a280200470d00200241016a22062002490db301200241017422072006200720064b1b22064100480db3010240024020020d002006102a21020c010b200528020020022006102e21020b2002450db201200120023602182001411c6a2006360200200141206a28020021020b200128021820026a20043a0000200141206a2201200128020041016a3602000cb4010b200341ec006a220141013602002003420137025c200341b49ec6003602582003410136023c200320063602382003200341386a360268200341106a200341d8006a103720032802102202450db3012003200329021437023c20032002360238200141013602002003420137025c200341e897c6003602582003412d360204200320033602682003200341386a360200200341106a200341d8006a1037200328021021012003290214210b0240200328023c450d002003280238102c0b20010d020cb3010b200328025c2201450db201200341e0006a290300210b0c010b200328025c2201450db101200341e0006a290300210b0b2000200b370204200020013602000cb1010b200128020021042003200241046a280200220236023802400240200441206a28020020024d0d000240200141206a2802002205200141246a22062802004f0d00200428021820024101746a2d00002102024020052001411c6a280200470d00200541016a22042005490db101200541017422062004200620044b1b22044100480db1010240024020050d002004102a21050c010b200128021820052004102e21050b2005450db001200120053602182001411c6a2004360200200141206a28020021050b200128021820056a20023a0000200141206a2201200128020041016a3602000cb2010b200341ec006a220141013602002003420137025c200341b49ec600360258200341013602042003200636020020032003360268200341106a200341d8006a103720032802102202450db1012003200329021437023c20032002360238200141013602002003420137025c200341e897c6003602582003412d360204200320033602682003200341386a360200200341106a200341d8006a1037200328021021012003290214210b0240200328023c450d002003280238102c0b20010d010cb1010b200341ec006a41013602002003420237025c200341cc9cc6003602582003410136024c2003200341c8006a3602682003200341386a360248200341106a200341d8006a103720032802102201450db0012003290214210b0b2000200b370204200020013602000cb0010b2003200241046a28020022023602282001280200210420032002360254024002400240200441206a28020020024b0d00200341ec006a41013602002003420237025c200341cc9cc6003602582003410136024c2003200341c8006a3602682003200341d4006a360248200341106a200341d8006a10370c010b200428021820024101746a22022d00010d01200341ec006a41013602002003420237025c200341dc9cc60036025820034101360204200320033602682003200341d4006a360200200341106a200341d8006a10370b2003280210210120032003290214220b37023c200320013602380c9c010b200320022d000022023a002f200341d8006a200141186a200141286a410410ca05024020032d00584101470d00200341c0006a200341e4006a2802003602002003200329025c3703380c9b010b200320032d005922013a00002001200241ff0171460dae0120014104460dae01200341106a41146a41323602002003411c6a4132360200200341d8006a41146a41033602002003420337025c2003418c94c600360258200341013602142003200341106a3602682003200336022020032003412f6a3602182003200341286a360210200341386a200341d8006a10370c9a010b200341d8006a2001200241046a2802004104410010ce052003280258450dad0120002003290358370200200041086a200341d8006a41086a2802003602000cae010b200341d8006a2001200241046a2802004108410110ce052003280258450dac0120002003290358370200200041086a200341d8006a41086a2802003602000cad010b200341d8006a2001200241046a2802004104410210ce052003280258450dab0120002003290358370200200041086a200341d8006a41086a2802003602000cac010b200341d8006a2001200241046a2802004108410310ce052003280258450daa0120002003290358370200200041086a200341d8006a41086a2802003602000cab010b200341d8006a2001200241046a2802004101410010ce052003280258450da90120002003290358370200200041086a200341d8006a41086a2802003602000caa010b200341d8006a2001200241046a2802004101410010ce052003280258450da80120002003290358370200200041086a200341d8006a41086a2802003602000ca9010b200341d8006a2001200241046a2802004102410010ce052003280258450da70120002003290358370200200041086a200341d8006a41086a2802003602000ca8010b200341d8006a2001200241046a2802004102410010ce052003280258450da60120002003290358370200200041086a200341d8006a41086a2802003602000ca7010b200341d8006a2001200241046a2802004101410110ce052003280258450da50120002003290358370200200041086a200341d8006a41086a2802003602000ca6010b200341d8006a2001200241046a2802004101410110ce052003280258450da40120002003290358370200200041086a200341d8006a41086a2802003602000ca5010b200341d8006a2001200241046a2802004102410110ce052003280258450da30120002003290358370200200041086a200341d8006a41086a2802003602000ca4010b200341d8006a2001200241046a2802004102410110ce052003280258450da20120002003290358370200200041086a200341d8006a41086a2802003602000ca3010b200341d8006a2001200241046a2802004104410110ce052003280258450da10120002003290358370200200041086a200341d8006a41086a2802003602000ca2010b200341d8006a2001200241046a2802004104410110ce052003280258450da00120002003290358370200200041086a200341d8006a41086a2802003602000ca1010b200341d8006a2001200241046a2802004104410010cf052003280258450d9f0120002003290358370200200041086a200341d8006a41086a2802003602000ca0010b200341d8006a2001200241046a2802004108410110cf052003280258450d9e0120002003290358370200200041086a200341d8006a41086a2802003602000c9f010b200341d8006a2001200241046a2802004104410210cf052003280258450d9d0120002003290358370200200041086a200341d8006a41086a2802003602000c9e010b200341d8006a2001200241046a2802004108410310cf052003280258450d9c0120002003290358370200200041086a200341d8006a41086a2802003602000c9d010b200341d8006a2001200241046a2802004101410010cf052003280258450d9b0120002003290358370200200041086a200341d8006a41086a2802003602000c9c010b200341d8006a2001200241046a2802004102410010cf052003280258450d9a0120002003290358370200200041086a200341d8006a41086a2802003602000c9b010b200341d8006a2001200241046a2802004101410110cf052003280258450d990120002003290358370200200041086a200341d8006a41086a2802003602000c9a010b200341d8006a2001200241046a2802004102410110cf052003280258450d980120002003290358370200200041086a200341d8006a41086a2802003602000c99010b200341d8006a2001200241046a2802004104410110cf052003280258450d970120002003290358370200200041086a200341d8006a41086a2802003602000c98010b20012802002102200341003602380240024020022802080d00200341ec006a41013602002003420237025c200341b89bc60036025820034101360204200320033602682003200341386a360200200341106a200341d8006a103720032802102202450d002003290214210b0c010b0240200141206a2802002202200141246a22042802004f0d00024020022001411c6a280200470d00200241016a22042002490d9701200241017422052004200520044b1b22044100480d97010240024020020d002004102a21020c010b200128021820022004102e21020b2002450d9601200120023602182001411c6a2004360200200141206a28020021020b200128021820026a41003a0000200141206a2201200128020041016a3602000c98010b200341ec006a220141013602002003420137025c200341b49ec600360258200341013602042003200436020020032003360268200341106a200341d8006a103720032802102202450d97012003200329021437023c20032002360238200141013602002003420137025c200341e897c6003602582003412d360204200320033602682003200341386a360200200341106a200341d8006a1037200328021021022003290214210b0240200328023c450d002003280238102c0b2002450d97010b2000200b370204200020023602000c97010b20012802002102200341003602380240024020022802080d00200341ec006a41013602002003420237025c200341b89bc60036025820034101360204200320033602682003200341386a360200200341106a200341d8006a103720032802102202450d002003290214210b0c010b200341d8006a200141186a2204200141286a410010ca05024020032d00584101460d000240200141206a2802002202200141246a22052802004f0d00024020022001411c6a280200470d00200241016a22052002490d9701200241017422062005200620054b1b22054100480d97010240024020020d002005102a21020c010b200428020020022005102e21020b2002450d9601200120023602182001411c6a2005360200200141206a28020021020b200128021820026a41003a0000200141206a2201200128020041016a3602000c98010b200341ec006a220141013602002003420137025c200341b49ec600360258200341013602042003200536020020032003360268200341106a200341d8006a103720032802102202450d97012003200329021437023c20032002360238200141013602002003420137025c200341e897c6003602582003412d360204200320033602682003200341386a360200200341106a200341d8006a1037200328021021022003290214210b0240200328023c450d002003280238102c0b20020d010c97010b200328025c2202450d9601200341e0006a290300210b0b2000200b370204200020023602000c96010b0240200141206a2802002202200141246a22042802004f0d00024020022001411c6a280200470d00200241016a22042002490d9401200241017422052004200520044b1b22044100480d94010240024020020d002004102a21020c010b200128021820022004102e21020b2002450d9301200120023602182001411c6a2004360200200141206a28020021020b200128021820026a41003a0000200141206a2201200128020041016a3602000c95010b200341ec006a220141013602002003420137025c200341b49ec600360258200341013602042003200436020020032003360268200341106a200341d8006a103720032802102202450d94012003200329021437023c20032002360238200141013602002003420137025c200341e897c6003602582003412d360204200320033602682003200341386a360200200341106a200341d8006a1037200328021021012003290214210b0240200328023c450d002003280238102c0b2001450d94012000200b370204200020013602000c95010b0240200141206a2802002202200141246a22042802004f0d00024020022001411c6a280200470d00200241016a22042002490d9301200241017422052004200520044b1b22044100480d93010240024020020d002004102a21020c010b200128021820022004102e21020b2002450d9201200120023602182001411c6a2004360200200141206a28020021020b200128021820026a41013a0000200141206a2201200128020041016a3602000c94010b200341ec006a220141013602002003420137025c200341b49ec600360258200341013602042003200436020020032003360268200341106a200341d8006a103720032802102202450d93012003200329021437023c20032002360238200141013602002003420137025c200341e897c6003602582003412d360204200320033602682003200341386a360200200341106a200341d8006a1037200328021021012003290214210b0240200328023c450d002003280238102c0b2001450d93012000200b370204200020013602000c94010b0240200141206a2802002202200141246a22042802004f0d00024020022001411c6a280200470d00200241016a22042002490d9201200241017422052004200520044b1b22044100480d92010240024020020d002004102a21020c010b200128021820022004102e21020b2002450d9101200120023602182001411c6a2004360200200141206a28020021020b200128021820026a41023a0000200141206a2201200128020041016a3602000c93010b200341ec006a220141013602002003420137025c200341b49ec600360258200341013602042003200436020020032003360268200341106a200341d8006a103720032802102202450d92012003200329021437023c20032002360238200141013602002003420137025c200341e897c6003602582003412d360204200320033602682003200341386a360200200341106a200341d8006a1037200328021021012003290214210b0240200328023c450d002003280238102c0b2001450d92012000200b370204200020013602000c93010b0240200141206a2802002202200141246a22042802004f0d00024020022001411c6a280200470d00200241016a22042002490d9101200241017422052004200520044b1b22044100480d91010240024020020d002004102a21020c010b200128021820022004102e21020b2002450d9001200120023602182001411c6a2004360200200141206a28020021020b200128021820026a41033a0000200141206a2201200128020041016a3602000c92010b200341ec006a220141013602002003420137025c200341b49ec600360258200341013602042003200436020020032003360268200341106a200341d8006a103720032802102202450d91012003200329021437023c20032002360238200141013602002003420137025c200341e897c6003602582003412d360204200320033602682003200341386a360200200341106a200341d8006a1037200328021021012003290214210b0240200328023c450d002003280238102c0b2001450d91012000200b370204200020013602000c92010b200341d8006a2001410010d0052003280258450d900120002003290358370200200041086a200341d8006a41086a2802003602000c91010b200341d8006a2001410010d1052003280258450d8f0120002003290358370200200041086a200341d8006a41086a2802003602000c90010b200341d8006a2001410010d1052003280258450d8e0120002003290358370200200041086a200341d8006a41086a2802003602000c8f010b200341d8006a2001410010d1052003280258450d8d0120002003290358370200200041086a200341d8006a41086a2802003602000c8e010b200341d8006a2001410010d1052003280258450d8c0120002003290358370200200041086a200341d8006a41086a2802003602000c8d010b200341d8006a2001410010d1052003280258450d8b0120002003290358370200200041086a200341d8006a41086a2802003602000c8c010b200341d8006a2001410010d1052003280258450d8a0120002003290358370200200041086a200341d8006a41086a2802003602000c8b010b200341d8006a2001410010d1052003280258450d890120002003290358370200200041086a200341d8006a41086a2802003602000c8a010b200341d8006a2001410010d1052003280258450d880120002003290358370200200041086a200341d8006a41086a2802003602000c89010b200341d8006a2001410010d1052003280258450d870120002003290358370200200041086a200341d8006a41086a2802003602000c88010b200341d8006a2001410010d1052003280258450d860120002003290358370200200041086a200341d8006a41086a2802003602000c87010b200341d8006a2001410110d0052003280258450d850120002003290358370200200041086a200341d8006a41086a2802003602000c86010b200341d8006a2001410110d1052003280258450d840120002003290358370200200041086a200341d8006a41086a2802003602000c85010b200341d8006a2001410110d1052003280258450d830120002003290358370200200041086a200341d8006a41086a2802003602000c84010b200341d8006a2001410110d1052003280258450d820120002003290358370200200041086a200341d8006a41086a2802003602000c83010b200341d8006a2001410110d1052003280258450d810120002003290358370200200041086a200341d8006a41086a2802003602000c82010b200341d8006a2001410110d1052003280258450d800120002003290358370200200041086a200341d8006a41086a2802003602000c81010b200341d8006a2001410110d1052003280258450d7f20002003290358370200200041086a200341d8006a41086a2802003602000c80010b200341d8006a2001410110d1052003280258450d7e20002003290358370200200041086a200341d8006a41086a2802003602000c7f0b200341d8006a2001410110d1052003280258450d7d20002003290358370200200041086a200341d8006a41086a2802003602000c7e0b200341d8006a2001410110d1052003280258450d7c20002003290358370200200041086a200341d8006a41086a2802003602000c7d0b200341d8006a2001410110d1052003280258450d7b20002003290358370200200041086a200341d8006a41086a2802003602000c7c0b200341d8006a2001410210d1052003280258450d7a20002003290358370200200041086a200341d8006a41086a2802003602000c7b0b200341d8006a2001410210d1052003280258450d7920002003290358370200200041086a200341d8006a41086a2802003602000c7a0b200341d8006a2001410210d1052003280258450d7820002003290358370200200041086a200341d8006a41086a2802003602000c790b200341d8006a2001410210d1052003280258450d7720002003290358370200200041086a200341d8006a41086a2802003602000c780b200341d8006a2001410210d1052003280258450d7620002003290358370200200041086a200341d8006a41086a2802003602000c770b200341d8006a2001410210d1052003280258450d7520002003290358370200200041086a200341d8006a41086a2802003602000c760b200341d8006a2001410310d1052003280258450d7420002003290358370200200041086a200341d8006a41086a2802003602000c750b200341d8006a2001410310d1052003280258450d7320002003290358370200200041086a200341d8006a41086a2802003602000c740b200341d8006a2001410310d1052003280258450d7220002003290358370200200041086a200341d8006a41086a2802003602000c730b200341d8006a2001410310d1052003280258450d7120002003290358370200200041086a200341d8006a41086a2802003602000c720b200341d8006a2001410310d1052003280258450d7020002003290358370200200041086a200341d8006a41086a2802003602000c710b200341d8006a2001410310d1052003280258450d6f20002003290358370200200041086a200341d8006a41086a2802003602000c700b200341d8006a2001410010d2052003280258450d6e20002003290358370200200041086a200341d8006a41086a2802003602000c6f0b200341d8006a2001410010d2052003280258450d6d20002003290358370200200041086a200341d8006a41086a2802003602000c6e0b200341d8006a2001410010d2052003280258450d6c20002003290358370200200041086a200341d8006a41086a2802003602000c6d0b200341d8006a2001410010d3052003280258450d6b20002003290358370200200041086a200341d8006a41086a2802003602000c6c0b200341d8006a2001410010d3052003280258450d6a20002003290358370200200041086a200341d8006a41086a2802003602000c6b0b200341d8006a2001410010d3052003280258450d6920002003290358370200200041086a200341d8006a41086a2802003602000c6a0b200341d8006a2001410010d3052003280258450d6820002003290358370200200041086a200341d8006a41086a2802003602000c690b200341d8006a2001410010d3052003280258450d6720002003290358370200200041086a200341d8006a41086a2802003602000c680b200341d8006a2001410010d3052003280258450d6620002003290358370200200041086a200341d8006a41086a2802003602000c670b200341d8006a2001410010d3052003280258450d6520002003290358370200200041086a200341d8006a41086a2802003602000c660b200341d8006a2001410010d3052003280258450d6420002003290358370200200041086a200341d8006a41086a2802003602000c650b200341d8006a2001410010d3052003280258450d6320002003290358370200200041086a200341d8006a41086a2802003602000c640b200341d8006a2001410010d3052003280258450d6220002003290358370200200041086a200341d8006a41086a2802003602000c630b200341d8006a2001410010d3052003280258450d6120002003290358370200200041086a200341d8006a41086a2802003602000c620b200341d8006a2001410010d3052003280258450d6020002003290358370200200041086a200341d8006a41086a2802003602000c610b200341d8006a2001410010d3052003280258450d5f20002003290358370200200041086a200341d8006a41086a2802003602000c600b200341d8006a2001410010d3052003280258450d5e20002003290358370200200041086a200341d8006a41086a2802003602000c5f0b200341d8006a2001410010d3052003280258450d5d20002003290358370200200041086a200341d8006a41086a2802003602000c5e0b200341d8006a2001410110d2052003280258450d5c20002003290358370200200041086a200341d8006a41086a2802003602000c5d0b200341d8006a2001410110d2052003280258450d5b20002003290358370200200041086a200341d8006a41086a2802003602000c5c0b200341d8006a2001410110d2052003280258450d5a20002003290358370200200041086a200341d8006a41086a2802003602000c5b0b200341d8006a2001410110d3052003280258450d5920002003290358370200200041086a200341d8006a41086a2802003602000c5a0b200341d8006a2001410110d3052003280258450d5820002003290358370200200041086a200341d8006a41086a2802003602000c590b200341d8006a2001410110d3052003280258450d5720002003290358370200200041086a200341d8006a41086a2802003602000c580b200341d8006a2001410110d3052003280258450d5620002003290358370200200041086a200341d8006a41086a2802003602000c570b200341d8006a2001410110d3052003280258450d5520002003290358370200200041086a200341d8006a41086a2802003602000c560b200341d8006a2001410110d3052003280258450d5420002003290358370200200041086a200341d8006a41086a2802003602000c550b200341d8006a2001410110d3052003280258450d5320002003290358370200200041086a200341d8006a41086a2802003602000c540b200341d8006a2001410110d3052003280258450d5220002003290358370200200041086a200341d8006a41086a2802003602000c530b200341d8006a2001410110d3052003280258450d5120002003290358370200200041086a200341d8006a41086a2802003602000c520b200341d8006a2001410110d3052003280258450d5020002003290358370200200041086a200341d8006a41086a2802003602000c510b200341d8006a2001410110d3052003280258450d4f20002003290358370200200041086a200341d8006a41086a2802003602000c500b200341d8006a2001410110d3052003280258450d4e20002003290358370200200041086a200341d8006a41086a2802003602000c4f0b200341d8006a2001410110d3052003280258450d4d20002003290358370200200041086a200341d8006a41086a2802003602000c4e0b200341d8006a2001410110d3052003280258450d4c20002003290358370200200041086a200341d8006a41086a2802003602000c4d0b200341d8006a2001410110d3052003280258450d4b20002003290358370200200041086a200341d8006a41086a2802003602000c4c0b200341d8006a2001410210d2052003280258450d4a20002003290358370200200041086a200341d8006a41086a2802003602000c4b0b200341d8006a2001410210d2052003280258450d4920002003290358370200200041086a200341d8006a41086a2802003602000c4a0b200341d8006a2001410210d2052003280258450d4820002003290358370200200041086a200341d8006a41086a2802003602000c490b200341d8006a2001410210d2052003280258450d4720002003290358370200200041086a200341d8006a41086a2802003602000c480b200341d8006a2001410210d2052003280258450d4620002003290358370200200041086a200341d8006a41086a2802003602000c470b200341d8006a2001410210d2052003280258450d4520002003290358370200200041086a200341d8006a41086a2802003602000c460b200341d8006a2001410210d2052003280258450d4420002003290358370200200041086a200341d8006a41086a2802003602000c450b200341d8006a2001410210d3052003280258450d4320002003290358370200200041086a200341d8006a41086a2802003602000c440b200341d8006a2001410210d3052003280258450d4220002003290358370200200041086a200341d8006a41086a2802003602000c430b200341d8006a2001410210d3052003280258450d4120002003290358370200200041086a200341d8006a41086a2802003602000c420b200341d8006a2001410210d3052003280258450d4020002003290358370200200041086a200341d8006a41086a2802003602000c410b200341d8006a2001410210d3052003280258450d3f20002003290358370200200041086a200341d8006a41086a2802003602000c400b200341d8006a2001410210d3052003280258450d3e20002003290358370200200041086a200341d8006a41086a2802003602000c3f0b200341d8006a2001410210d3052003280258450d3d20002003290358370200200041086a200341d8006a41086a2802003602000c3e0b200341d8006a2001410310d2052003280258450d3c20002003290358370200200041086a200341d8006a41086a2802003602000c3d0b200341d8006a2001410310d2052003280258450d3b20002003290358370200200041086a200341d8006a41086a2802003602000c3c0b200341d8006a2001410310d2052003280258450d3a20002003290358370200200041086a200341d8006a41086a2802003602000c3b0b200341d8006a2001410310d2052003280258450d3920002003290358370200200041086a200341d8006a41086a2802003602000c3a0b200341d8006a2001410310d2052003280258450d3820002003290358370200200041086a200341d8006a41086a2802003602000c390b200341d8006a2001410310d2052003280258450d3720002003290358370200200041086a200341d8006a41086a2802003602000c380b200341d8006a2001410310d2052003280258450d3620002003290358370200200041086a200341d8006a41086a2802003602000c370b200341d8006a2001410310d3052003280258450d3520002003290358370200200041086a200341d8006a41086a2802003602000c360b200341d8006a2001410310d3052003280258450d3420002003290358370200200041086a200341d8006a41086a2802003602000c350b200341d8006a2001410310d3052003280258450d3320002003290358370200200041086a200341d8006a41086a2802003602000c340b200341d8006a2001410310d3052003280258450d3220002003290358370200200041086a200341d8006a41086a2802003602000c330b200341d8006a2001410310d3052003280258450d3120002003290358370200200041086a200341d8006a41086a2802003602000c320b200341d8006a2001410310d3052003280258450d3020002003290358370200200041086a200341d8006a41086a2802003602000c310b200341d8006a2001410310d3052003280258450d2f20002003290358370200200041086a200341d8006a41086a2802003602000c300b200341d8006a20014101410010d4052003280258450d2e20002003290358370200200041086a200341d8006a41086a2802003602000c2f0b200341d8006a20014102410010d4052003280258450d2d20002003290358370200200041086a200341d8006a41086a2802003602000c2e0b200341d8006a20014102410010d4052003280258450d2c20002003290358370200200041086a200341d8006a41086a2802003602000c2d0b200341d8006a20014103410010d4052003280258450d2b20002003290358370200200041086a200341d8006a41086a2802003602000c2c0b200341d8006a20014103410010d4052003280258450d2a20002003290358370200200041086a200341d8006a41086a2802003602000c2b0b200341d8006a20014100410110d4052003280258450d2920002003290358370200200041086a200341d8006a41086a2802003602000c2a0b200341d8006a20014100410110d4052003280258450d2820002003290358370200200041086a200341d8006a41086a2802003602000c290b200341d8006a20014102410110d4052003280258450d2720002003290358370200200041086a200341d8006a41086a2802003602000c280b200341d8006a20014102410110d4052003280258450d2620002003290358370200200041086a200341d8006a41086a2802003602000c270b200341d8006a20014103410110d4052003280258450d2520002003290358370200200041086a200341d8006a41086a2802003602000c260b200341d8006a20014103410110d4052003280258450d2420002003290358370200200041086a200341d8006a41086a2802003602000c250b200341d8006a20014100410210d4052003280258450d2320002003290358370200200041086a200341d8006a41086a2802003602000c240b200341d8006a20014100410210d4052003280258450d2220002003290358370200200041086a200341d8006a41086a2802003602000c230b200341d8006a20014101410210d4052003280258450d2120002003290358370200200041086a200341d8006a41086a2802003602000c220b200341d8006a20014101410210d4052003280258450d2020002003290358370200200041086a200341d8006a41086a2802003602000c210b200341d8006a20014103410210d4052003280258450d1f20002003290358370200200041086a200341d8006a41086a2802003602000c200b200341d8006a20014100410310d4052003280258450d1e20002003290358370200200041086a200341d8006a41086a2802003602000c1f0b200341d8006a20014100410310d4052003280258450d1d20002003290358370200200041086a200341d8006a41086a2802003602000c1e0b200341d8006a20014101410310d4052003280258450d1c20002003290358370200200041086a200341d8006a41086a2802003602000c1d0b200341d8006a20014101410310d4052003280258450d1b20002003290358370200200041086a200341d8006a41086a2802003602000c1c0b200341d8006a20014102410310d4052003280258450d1a20002003290358370200200041086a200341d8006a41086a2802003602000c1b0b200341d8006a20014102410010d4052003280258450d1920002003290358370200200041086a200341d8006a41086a2802003602000c1a0b200341d8006a20014103410110d4052003280258450d1820002003290358370200200041086a200341d8006a41086a2802003602000c190b200341d8006a20014100410210d4052003280258450d1720002003290358370200200041086a200341d8006a41086a2802003602000c180b200341d8006a20014101410310d40520032802580d010c160b200341ec006a41013602002003420237025c200341d493c6003602582003413336023c2003200441056a3602382003200341386a360268200341106a200341d8006a1037200041086a200341106a41086a280200360200200020032903103702000c160b20002003290358370200200041086a200341d8006a41086a2802003602000c150b200329023c210b200328023821010b2001450d122000200b370204200020013602000c130b200329023c210b200328023821010b2001450d102000200b370204200020013602000c110b2004450d0f2001290200210b0b2000200b370204200020043602000c0f0b024002400240200141306a2802002202417f6a220420024f0d00200420024b0d00200128022820044103746a22052802002204200141206a220628020022024b0d01200421010c020b4118102a2200450d0c2003421837025c20032000360258200341d8006a4100411810c80520032003280260220041186a3602602000200328025822016a411841ba9dc600411810c9052003200329025c37025c2003200136025841b892c600413b200341d8006a41f492c600103b000b024002402001411c6a280200220720026b200420026b2208490d0020012802182107200221010c010b200220086a22092002490d0d2007410174220a2009200a20094b1b22094100480d0d0240024020070d002009102a21070c010b200128021820072009102e21070b2007450d0c200120073602182001411c6a2009360200200141206a28020021010b200720016a21090240024020084102490d002009410420042002417f736a220210da051a2007200220016a22016a21090c010b2008450d010b200941043a0000200141016a21010b20062001360200200541013a00060c0d0b200641027421060340200320042802002205360248200220054d0d0220022005417f736a220520024f0d060240200720054103746a22052d00044103460d0020052d00054104470d040b200441046a21042006417c6a22060d000b410421090b200341d8006a200141186a2202200d410010ca0520032d00584101470d02200341086a200341e4006a2802003602002003200329025c3703000c030b200341ec006a220441023602002003411c6a41013602002003420237025c200341d49dc60036025820034101360214200320023602002003200341106a360268200320033602182003200341c8006a360210200341386a200341d8006a1037200328023821022003200329023c37023c20032002360238200441013602002003420137025c200341e897c6003602582003412d360204200320033602682003200341386a360200200341106a200341d8006a1037200328021021022003290214210b0240200328023c450d002003280238102c0b2003200b370204200320023602000c020b2003411c6a4133360200200341ec006a41023602002003420237025c200341e493c6003602582003200541056a360218200341333602142003200341106a3602682003200341306a3602102003200341d8006a10370c010b0240200941ff01714104460d00200341d8006a2002200d200910ca050240024020032d00584101460d000240200141206a2802002204200141246a22052802004f0d00024020042001411c6a280200470d00200441016a22052004490d0b200441017422062005200620054b1b22054100480d0b0240024020040d002005102a21020c010b200228020020042005102e21020b2002450d0a200120023602182001411c6a2005360200200141206a28020021040b200128021820046a20093a0000200141206a2202200228020041016a3602000c030b200341ec006a220241013602002003420137025c200341b49ec6003602582003410136023c200320053602382003200341386a360268200341106a200341d8006a103720032802102204450d022003200329021437023c20032004360238200241013602002003420137025c200341e897c6003602582003412d360204200320033602682003200341386a360200200341106a200341d8006a1037200328021021022003290214210b0240200328023c450d002003280238102c0b20020d010c020b200328025c2202450d01200341e0006a290300210b0b2003200b370204200320023602000c010b200341003602000b024020032802002202450d0020002003290204370204200020023602000c090b02400240200141306a2802002202417f6a220420024f0d00200420024d0d010b4118102a2200450d052003421837025c20032000360258200341d8006a4100411810c80520032003280260220041186a3602602000200328025822016a411841ba9dc600411810c9052003200329025c37025c2003200136025841b892c600413b200341d8006a41f492c600103b000b02400240200128022820044103746a22052802002204200141206a220628020022024b0d00200421010c010b024002402001411c6a280200220720026b200420026b2208490d0020012802182107200221010c010b200220086a22092002490d072007410174220a2009200a20094b1b22094100480d070240024020070d002009102a21070c010b200128021820072009102e21070b2007450d06200120073602182001411c6a2009360200200141206a28020021010b200720016a21090240024020084102490d002009410420042002417f736a220210da051a2007200220016a22016a21090c010b2008450d010b200941043a0000200141016a21010b20062001360200200541013a00060c070b41969ec600411d1054000b2001450d050b2000200b370204200020013602000c050b024002400240200141306a2802002202417f6a220420024f0d00200420024b0d00200128022820044103746a22052802002204200141206a220628020022024b0d01200421010c020b4118102a2200450d022003421837025c20032000360258200341d8006a4100411810c80520032003280260220041186a3602602000200328025822016a411841ba9dc600411810c9052003200329025c37025c2003200136025841b892c600413b200341d8006a41f492c600103b000b024002402001411c6a280200220720026b200420026b2208490d0020012802182107200221010c010b200220086a22092002490d032007410174220a2009200a20094b1b22094100480d030240024020070d002009102a21070c010b200128021820072009102e21070b2007450d02200120073602182001411c6a2009360200200141206a28020021010b200720016a21090240024020084102490d002009410420042002417f736a220210da051a2007200220016a22016a21090c010b2008450d010b200941043a0000200141016a21010b20062001360200200541013a00060c030b1033000b1035000b200341d8006a200141186a200610cb052003280258450d0020002003290358370200200041086a200341d8006a41086a2802003602000c010b200041003602000b200341f0006a24000b6401017f230041206b2202240020024134360204200220003602002001411c6a2802002100200128021821012002411c6a41013602002002420137020c200241d49ec6003602082002200236021820012000200241086a10392101200241206a240020010b19002000200141186a280200360204200020012802103602000bc50201037f230041206b2202240002400240200028020022002d00004104470d002002200128021841c4f7c50041082001411c6a28020028020c11000022003a001820022001360210200241003a0019200241003602140c010b2002200128021841ccf7c50041052001411c6a28020028020c1100003a001820022001360210200241003a0019200241003602142002200036020c200241106a2002410c6a41d4f7c5001061210120022d0018210020022802142203450d00200041ff0171210441012100024020040d00024020034101470d0020012d0009450d00200128020022042d00004104710d004101210020042802184198b0c00041012004411c6a28020028020c1100000d010b2001280200220028021841ec94c60041012000411c6a28020028020c11000021000b200120003a00080b200241206a2400200041ff01714100470bc00201037f230041206b220224000240024020002d00004104470d002002200128021841c4f7c50041082001411c6a28020028020c11000022003a001820022001360210200241003a0019200241003602140c010b2002200128021841ccf7c50041052001411c6a28020028020c1100003a001820022001360210200241003a0019200241003602142002200036020c200241106a2002410c6a41d4f7c5001061210120022d0018210020022802142203450d00200041ff0171210441012100024020040d00024020034101470d0020012d0009450d00200128020022042d00004104710d004101210020042802184198b0c00041012004411c6a28020028020c1100000d010b2001280200220028021841ec94c60041012000411c6a28020028020c11000021000b200120003a00080b200241206a2400200041ff01714100470bcd0202027f027e23004180016b220224002000280200210002400240024002400240200128020022034110710d002000290300210420034120710d0120042004423f8722057c2005852004427f552001104221000c020b20002903002104410021000340200220006a41ff006a2004a7410f712203413072200341d7006a2003410a491b3a00002000417f6a2100200442048822044200520d000b20004180016a22034181014f0d022001410141b087c0004102200220006a4180016a410020006b104521000c010b410021000340200220006a41ff006a2004a7410f712203413072200341376a2003410a491b3a00002000417f6a2100200442048822044200520d000b20004180016a22034181014f0d022001410141b087c0004102200220006a4180016a410020006b104521000b20024180016a240020000f0b20034180011047000b20034180011047000bcd0203027f017e017f23004180016b220224002000280200210002400240024002400240200128020022034110710d002000280200210020034120710d012000ac22042004423f8722047c2004852000417f73411f762001104221000c020b20002802002103410021000340200220006a41ff006a2003410f712205413072200541d7006a2005410a491b3a00002000417f6a2100200341047622030d000b20004180016a22034181014f0d022001410141b087c0004102200220006a4180016a410020006b104521000c010b410021030340200220036a41ff006a2000410f712205413072200541376a2005410a491b3a00002003417f6a2103200041047622000d000b20034180016a22004181014f0d022001410141b087c0004102200220036a4180016a410020036b104521000b20024180016a240020000f0b20034180011047000b20004180011047000b8a0201027f230041106b2202240020002802002802002100200128021841ecebc500410b2001411c6a28020028020c1100002103200241003a0005200220033a0004200220013602002002200036020c200241f7ebc50041052002410c6a41fcebc500106021012002200041086a36020c2001418cecc50041072002410c6a41dcebc50010601a20022d00042101024020022d0005450d00200141ff0171210041012101024020000d0020022802002201411c6a28020028020c210020012802182103024020012d00004104710d0020034192b0c0004102200011000021010c010b20034194b0c0004101200011000021010b200220013a00040b200241106a2400200141ff01714100470bcc0101047f230041106b220224002000280200220041046a28020021032000280200210041012104200128021841d1afc00041012001411c6a28020028020c1100002105200241003a0005200220053a00042002200136020002402003450d002003410274210103402002200036020c20022002410c6a41b4f7c50010621a200041046a21002001417c6a22010d000b20022d000421050b0240200541ff01710d002002280200220028021841d2afc00041012000411c6a28020028020c11000021040b200241106a240020040bc60501087f230041106b220324002002280208220441546a2105200241106a280200220641306c210702400340410021082007450d01200741506a21072005412c6a2109200541306a220a210520092d00004103470d000b200a41086a2802002207450d00200741286c2105200a28020041186a2107410021080340200820072d0000456a2108200741286a2107200541586a22050d000b0b0240024002400240024002400240200120086b220a20014b0d00200641306c2107200441546a210503402007450d02200741506a21072005412c6a2108200541306a2209210520082d0000410c470d000b200941086a280200200a4b0d02411e102a2207450d062000200736020420004101360200200741166a41002900bafa45370000200741106a41002900b4fa45370000200741086a41002900acfa45370000200741002900a4fa45370000200041086a429e808080e0033702000c050b412c102a22070d020c050b412c102a2207450d042000200736020420004101360200200741286a41002800a0fa45360000200741206a4100290098fa45370000200741186a4100290090fa45370000200741106a4100290088fa45370000200741086a4100290080fa45370000200741002900f8f945370000200041086a42ac808080c0053702000c030b2009280200200a41186c6a28020821072003200a200210b30520032802004101460d0120032802042105200041003602002000200520076a3602040c020b2000200736020420004101360200200741286a41002800f4f945360000200741206a41002900ecf945370000200741186a41002900e4f945370000200741106a41002900dcf945370000200741086a41002900d4f945370000200741002900ccf945370000200041086a42ac808080c0053702000c010b20002003290204370204200041013602002000410c6a2003410c6a2802003602000b200341106a24000f0b1033000bdf0902067f017e024020010d00200041ac013a00000f0b02400240024002400240024020012d00002202414f6a41fb004f0d000c010b02400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020020e312c2c0001022c2c0304052c06072c2c08090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292c0b20012d00012103410221020c2b0b20012d00012103410321020c2a0b20012d00012103410421020c290b200141046a2802002104410721020c270b200141046a2802002104410821020c260b200141046a2802002105410c102a2204450d272005280204220641ffffffff03712006470d2820064102742201417f4c0d280240024020010d00410421070c010b2001102a2207450d280b02402006450d00200528020021012006410274210320072102034020022001280200360200200241046a2102200141046a21012003417c6a22030d000b0b200420063602042004200736020020042005280208360208410921020c250b200141046a2802002104410b21020c240b200141046a280200210420012d00012103410c21020c240b200141046a2802002104410f21020c220b200141046a2802002104411021020c210b200141046a2802002104411121020c200b200141046a2802002104411221020c1f0b200141046a2802002104411321020c1e0b200141046a280200210420013502082108411421020c1d0b200141046a280200210420013502082108411521020c1c0b200141046a280200210420013502082108411621020c1b0b200141046a280200210420013502082108411721020c1a0b200141046a280200210420013502082108411821020c190b200141046a280200210420013502082108411921020c180b200141046a280200210420013502082108411a21020c170b200141046a280200210420013502082108411b21020c160b200141046a280200210420013502082108411c21020c150b200141046a280200210420013502082108411d21020c140b200141046a280200210420013502082108411e21020c130b200141046a280200210420013502082108411f21020c120b200141046a280200210420013502082108412021020c110b200141046a280200210420013502082108412121020c100b200141046a280200210420013502082108412221020c0f0b200141046a280200210420013502082108412321020c0e0b200141046a280200210420013502082108412421020c0d0b200141046a280200210420013502082108412521020c0c0b200141046a280200210420013502082108412621020c0b0b200141046a280200210420013502082108412721020c0a0b200141046a280200210420013502082108412821020c090b200141046a280200210420013502082108412921020c080b200141046a280200210420013502082108412a21020c070b20012d00012103412b21020c070b20012d00012103412c21020c060b200141046a2802002104412d21020c040b20012903082108412e21020c020b200141046a2802002104412f21020c020b20012903082108413021020b0b0b200020033a0001200020023a0000200041086a2008370300200041046a20043602000f0b1033000b103a000b890301067f230041106b220224000240024002400240200041046a2802002203200041086a28020022046b20012802042205200128020022066b4104762207490d00200028020021030c010b200420076a22062004490d02200341017422052006200520064b1b220641ffffffff00712006470d02200641047422054100480d020240024020030d002005102a21030c010b200028020020034104742005102e21030b2003450d0120002003360200200041046a2006360200200041086a280200210420012802042105200128020021060b0240024020062005470d00410021060c010b2001200641106a3602000b2002200610ac05024020022d000041ac01460d00200320044104746a2106034020062002290300370300200641086a200241086a29030037030002400240200128020022052001280204470d00410021050c010b2001200541106a3602000b200441016a2104200641106a21062002200510ac0520022d000041ac01470d000b0b200041086a2004360200200241106a24000f0b1033000b1035000b100020002802003502004101200110420ba607010b7f230041e0006b22032400200320013602202002280208220441546a2105200241106a280200220641306c210202400340024020020d00410021070c020b200241506a21022005412c6a2107200541306a2208210520072d00004102470d000b200341186a200810f40420032802182107200328021c21020b2002410020071b2109200641306c2102200441546a21052007410420071b210a02400340024020020d004100210b0c020b200241506a21022005412c6a2107200541306a2208210520072d00004104470d000b200341106a200810f4042003280210210b2003280214210c0b200641306c2102200441546a2105200b4104200b1b210d02400240024002400240024002400240024003402002450d01200241506a21022005412c6a2107200541306a2208210520072d00004103470d000b200841086a2802002202450d00200241286c2107200828020041186a2102410021050340200520022d0000456a2105200241286a2102200741586a22070d000b200520014d0d01200641306c2102200441546a210503402002450d07200241506a21022005412c6a2107200541306a2208210520072d00004103470d000b200341086a200810f404200328020c220b41286c210520032802082204210703402005450d08200541586a2105200741186a2108200741286a2202210720082d00000d000b20010d02200241586a21020c030b410021050b0240200c4100200b1b200120056b22024d0d00200d20024102746a22020d030b200341cc006a41013602002003420237023c200341e4fbc5003602382003410136022c2003200341286a3602482003200341206a360228200341d0006a200341386a1037200341d0006a21020c030b2004200b41286c6a210803402001417f6a2101034020082002460d06200241186a2105200241286a2207210220052d00000d000b2007210220010d000b200741586a21020b2002411c6a21020b2003200228020022023602240240200920024d0d00200a20024104746a2202450d0020002002360204410021020c040b200341cc006a4102360200200341dc006a41013602002003420337023c200341f4fbc500360238200341013602542003200341d0006a3602482003200341206a3602582003200341246a360250200341286a200341386a1037200341286a21020b20022802002105200041086a200229020437020020002005360204410121020c020b41c2fac50041c2001054000b4184fbc50041dd001054000b20002002360200200341e0006a24000bea0302057f017e02402001450d00034020002802940321002001417f6a22010d000b0b02402002450d004100210341002101034002400240200120002f01064f0d00200020014105746a220441c4006a2802002105200441386a2802002106200441346a2802002107200141016a21010c010b02400240200028020022010d002003ad210841002104410021010c010b20003301044220862003ad842108410121040b2000102c2008a72103024002402008422088a7220620012f01064f0d00200121050c010b034002400240200128020022050d002003ad2108410021050c010b200441016a210420013301044220862003ad8421080b2001102c2008a72103200521012008422088a7220620052f01064f0d000b0b200641027420056a4198036a2802002100200520064105746a220141c4006a2802002105200141386a2802002106200141346a280200210702402004417f6a2201450d00034020002802940321002001417f6a22010d000b0b410021010b20054102460d012002417f6a210202402006450d002007102c0b20020d000b0b0240200041d0e1c100460d00200028020021012000102c2001450d00200128020021052001102c2005450d00024020052802002201450d0003402005102c2001210520012802002200210120000d000b0b2005102c0b0bf80d01067f0240024020002d00002201410e4b0d00024002400240024002400240024002400240024002400240024020010e0f0001020304050607080e090e0a0b0c000b200041086a280200450d0d200041046a280200102c0f0b0240200041086a280200450d00200041046a280200102c0b200041146a280200450d0c200041106a280200102c0f0b02402000410c6a2802002202450d00200041046a28020021012002410474210203400240200141046a280200450d002001280200102c0b200141106a2101200241706a22020d000b0b200041086a280200450d0b2000280204102c0f0b02402000410c6a2802002202450d00200041046a2802002101200241286c210203400240200141046a280200450d002001280200102c0b0240200141106a280200450d002001410c6a280200102c0b200141286a2101200241586a22020d000b0b200041086a280200450d0a2000280204102c0f0b200041086a280200450d09200041046a280200102c0f0b200041086a280200450d08200041046a280200102c0f0b200041086a280200450d07200041046a280200102c0f0b02402000410c6a2802002201450d00200041046a280200220320014104746a21040340024020032802082202450d0020032802002101200241047421020340024020012d00004109470d000240200141046a2205280200220628020441ffffffff0371450d002006280200102c200528020021060b2006102c0b200141106a2101200241706a22020d000b0b200341106a21010240200341046a280200450d002003280200102c0b2001210320012004470d000b0b200041086a280200450d062000280204102c0f0b02402000410c6a2802002202450d00200041046a2802002101200241146c210203400240200141046a280200450d002001280200102c0b200141146a21012002416c6a22020d000b0b200041086a280200450d052000280204102c0f0b02402000410c6a2802002201450d00200041046a28020022032001411c6c6a21040340024020032802042201450d0002402003410c6a2802002202450d00200241047421020340024020012d00004109470d000240200141046a2205280200220628020441ffffffff0371450d002006280200102c200528020021060b2006102c0b200141106a2101200241706a22020d000b0b200341086a280200450d002003280204102c0b2003411c6a21010240200341146a280200450d002003280210102c0b2001210320012004470d000b0b200041086a280200450d042000280204102c0f0b02402000410c6a2802002201450d00200041046a2802002203200141186c6a210403400240200341046a280200450d002003280200102c0b0240200341146a2802002202450d00200328020c2101200241047421020340024020012d00004109470d000240200141046a2205280200220628020441ffffffff0371450d002006280200102c200528020021060b2006102c0b200141106a2101200241706a22020d000b0b200341186a21010240200341106a280200450d00200328020c102c0b2001210320012004470d000b0b200041086a280200450d032000280204102c0f0b02402000410c6a2802002201450d00200041046a28020022032001411c6c6a21040340024020032802042201450d0002402003410c6a2802002202450d00200241047421020340024020012d00004109470d000240200141046a2205280200220628020441ffffffff0371450d002006280200102c200528020021060b2006102c0b200141106a2101200241706a22020d000b0b200341086a280200450d002003280204102c0b2003411c6a21010240200341146a280200450d002003280210102c0b2001210320012004470d000b0b200041086a280200450d022000280204102c0f0b0240200041046a2802002201450d00200041086a280200450d002001102c0b0240200041146a2802002201450d0002402000411c6a2802002202450d002002410c6c21020340024020012802002206450d00200141046a280200450d002006102c0b2001410c6a2101200241746a22020d000b0b200041186a280200450d002000280214102c0b200041246a2802002203450d0102402000412c6a2802002201450d00200320014104746a210403402003220541106a2103024020052802042201450d0002402005410c6a2802002202450d002002410c6c21020340024020012802002206450d00200141046a280200450d002006102c0b2001410c6a2101200241746a22020d000b0b200541086a280200450d002005280204102c0b20032004470d000b0b200041286a280200450d012000280224102c0c010b0240200041086a280200450d00200041046a280200102c0b0240200041146a2802002201450d00200041186a280200450d002001102c0b200041246a280200450d00200041206a280200102c0f0b0bd20a01067f02400240024020012d00002202414f6a41fb00490d0002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020020e312a2a0001022a2a0304052a06072a2a08090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a0b200020012d00013a0001200041023a00000f0b200020012d00013a0001200041033a00000f0b200020012d00013a0001200041043a00000f0b200041046a200141046a280200360200200041073a00000f0b200041046a200141046a280200360200200041083a00000f0b200141046a2802002103410c102a2204450d252003280204220541ffffffff03712005470d2620054102742201417f4c0d260240024020010d00410421060c010b2001102a2206450d260b02402005450d00200328020021012005410274210720062102034020022001280200360200200241046a2102200141046a21012007417c6a22070d000b0b200420053602042004200636020020042003280208360208200041046a2004360200200041093a00000f0b200041046a200141046a2802003602002000410b3a00000f0b200020012d00013a0001200041046a200141046a2802003602002000410c3a00000f0b200041046a200141046a2802003602002000410f3a00000f0b200041046a200141046a280200360200200041103a00000f0b200041046a200141046a280200360200200041113a00000f0b200041046a200141046a280200360200200041123a00000f0b200041046a200141046a280200360200200041133a00000f0b200041046a200141046a290200370200200041143a00000f0b200041046a200141046a290200370200200041153a00000f0b200041046a200141046a290200370200200041163a00000f0b200041046a200141046a290200370200200041173a00000f0b200041046a200141046a290200370200200041183a00000f0b200041046a200141046a290200370200200041193a00000f0b200041046a200141046a2902003702002000411a3a00000f0b200041046a200141046a2902003702002000411b3a00000f0b200041046a200141046a2902003702002000411c3a00000f0b200041046a200141046a2902003702002000411d3a00000f0b200041046a200141046a2902003702002000411e3a00000f0b200041046a200141046a2902003702002000411f3a00000f0b200041046a200141046a290200370200200041203a00000f0b200041046a200141046a290200370200200041213a00000f0b200041046a200141046a290200370200200041223a00000f0b200041046a200141046a290200370200200041233a00000f0b200041046a200141046a290200370200200041243a00000f0b200041046a200141046a290200370200200041253a00000f0b200041046a200141046a290200370200200041263a00000f0b200041046a200141046a290200370200200041273a00000f0b200041046a200141046a290200370200200041283a00000f0b200041046a200141046a290200370200200041293a00000f0b200041046a200141046a2902003702002000412a3a00000f0b200020012d00013a00012000412b3a00000f0b200020012d00013a00012000412c3a00000f0b200041046a200141046a2802003602002000412d3a00000f0b200041086a200141086a2903003703002000412e3a00000f0b200041046a200141046a2802003602002000412f3a00000f0b200041086a200141086a290300370300413021020b200020023a00000f0b1033000b103a000bda60010c7f230041a0016b22032400200320013602242002280208220441546a2105200241106a280200220641306c210102400240024002400240024002400240024003402001450d01200141506a21012005412c6a2107200541306a2208210520072d00004104470d000b200641306c2101200441546a210503402001450d02200141506a21012005412c6a2107200541306a2209210520072d0000410c470d000b200641306c2101200441546a210503402001450d03200141506a21012005412c6a2107200541306a2204210520072d00004102470d000b024041002802d8a1464105490d00200341013602442003200341246a36024041002802e4a146210141002802e0a146210541002802dca146210720034198016a41980136020020034190016a42ee808080103703002003418c016a41b483c60036020020034184016a422537020020034180016a41ac84c600360200200341f8006a4201370300200341e8006a4201370300200341e0006a410a360200200341f4006a200341c0006a360200200341cc81c600360264200341a284c60036025c20034105360258200541ecb3c000200741024622071b200341d8006a200141d4b3c00020071b2802101102000b200341186a200810f404200328021c200328022422014d0d03200328021820014102746a2201450d03200341106a200410f40402402003280214200128020022014d0d00200328021020014104746a22010d050b4125102a2201450d052001411d6a41002900f18146370000200141186a41002900ec8146370000200141106a41002900e48146370000200141086a41002900dc8146370000200141002900d48146370000200041086a42a5808080d00437020020002001360204200041013602000c080b4113102a2201450d042001410f6a41002800a78146360000200141086a41002900a08146370000200141002900988146370000200041086a4293808080b00237020020002001360204200041013602000c070b410f102a2201450d03200141076a41002900b28146370000200141002900ab8146370000200041086a428f808080f00137020020002001360204200041013602000c060b410f102a2201450d02200141076a41002900c18146370000200141002900ba8146370000200041086a428f808080f00137020020002001360204200041013602000c050b4125102a2201450d012001411d6a41002900f18146370000200141186a41002900ec8146370000200141106a41002900e48146370000200141086a41002900dc8146370000200141002900d48146370000200041086a42a5808080d00437020020002001360204200041013602000c040b0240200941086a280200200328022422054b0d004127102a2201450d012001411f6a41002900988246370000200141186a41002900918246370000200141106a41002900898246370000200141086a41002900818246370000200141002900f98146370000200041086a42a7808080f00437020020002001360204200041013602000c040b20092802002109200341286a41086a420037030020034280808080c00037032820012d000d2107410021012003410036024820032007410447220a3602442003200a360240200341003a004c024002400240024041002802d8a14641044b0d00200341d8006a41086a200341c0006a41086a29030037030020032003290340370358200341286a410472210b200341d8006a21070c010b200341353602542003200341c0006a36025041002802e4a146210141002802e0a146210741002802dca146210820034198016a41cb0036020020034190016a42ee808080103703002003418c016a41b483c60036020020034184016a422537020020034180016a41ac84c600360200200341f8006a4201370300200341e8006a4201370300200341d8006a41086a2206410a360200200341f4006a200341d0006a360200200341a082c600360264200341a284c60036025c20034105360258200741ecb3c000200841024622081b200341d8006a200141d4b3c00020081b28021011020020032802342108200328023021012006200341c0006a41086a29030037030020032003290340370358200341286a410472210b200341d8006a210720082001470d010b200141016a22082001490d01200141017422062008200620084b1b220841ffffffff00712008470d01200841047422064100480d010240024020010d002006102a21010c010b200b28020020014104742006102e21010b2001450d02200b200136020020032008360230200328023421080b200b28020020084104746a22012007290200370200200141086a200741086a2902003702002003200328023441016a360234410021072009200541186c6a2201280214450d022009200541186c6a410c6a2109200141146a2108200341d8006a410472210c410021074100210103400240200328022820074d0d00200341d8006a200341286a410010ba05024020032802584101470d00200041013602002000200c2902003702042000410c6a200c41086a2802003602000c060b20072003280228200328025c2d000c1b21070b02400240024002400240024002400240024002400240024002400240024002400240024002400240024002402001200828020022054f0d002003200928020020014104746a220536023c024041002802d8a1464105490d002003412e36024420032003413c6a36024041002802e4a146210541002802e0a146210641002802dca146210d200341c90136029801200342ee8080801037039001200341b483c60036028c012003422537028401200341ac84c600360280012003420137037820034201370368200341d49ec6003602642003410a360260200341a284c60036025c20034105360258200541d4b3c000200d410246220d1b28021021052003200341c0006a360274200641ecb3c000200d1b200341d8006a2005110200200328023c21050b024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020052d000022060eac0102310000003101030405060708090a0b0c0d0e0f1010101010101010101010101010111111111111111111121314141414151616161616161616161615161616161616161616161616161616161616161616161717171818181818181818181818181818181717171818181818181818181818181818181717171717171718181818181818171717171717171818181818181819191919191919191919191919191919191919191919191919020b20052d000121052003200328022836024820032005410447220536024020032006410347200571360244200341003a004c024041002802d8a1464105490d00200341353602542003200341c0006a36025041002802e4a146210541002802e0a146210641002802dca146210d200341cb0036029801200342ee8080801037039001200341b483c60036028c012003422537028401200341ac84c600360280012003420137037820034201370368200341a082c6003602642003410a360260200341a284c60036025c20034105360258200541d4b3c000200d410246220d1b28021021052003200341d0006a360274200641ecb3c000200d1b200341d8006a20051102000b200341d8006a41086a2206200341c0006a41086a290300370300200320032903403703580240200328023422052003280230470d00200541016a220d2005490d332005410174220e200d200e200d4b1b220d41ffffffff0071200d470d33200d410474220e4100480d330240024020050d00200e102a21050c010b200b2802002005410474200e102e21050b2005450d34200b20053602002003200d360230200328023421050b200b28020020054104746a22052003290358370200200541086a20062903003702002003200328023441016a3602340c300b41002105024041002802d8a1464105490d00024020032802342206417f6a220d20064b0d00200b280200200d4104746a4100200d2006491b21050b20034136360254200320053602402003200341c0006a36025041002802e4a146210541002802e0a146210641002802dca146210d200341d30036029801200342ee8080801037039001200341b483c60036028c012003422537028401200341ac84c600360280012003420137037820034201370368200341a882c6003602642003410a360260200341a284c60036025c20034105360258200541d4b3c000200d410246220d1b28021021052003200341d0006a360274200641ecb3c000200d1b200341d8006a20051102000b024020032802342205450d0020032005417f6a2205360234200b28020020054104746a22052d000c4102470d1a0b4117102a2201450d322001410f6a41002900bf8246370000200141086a41002900b88246370000200141002900b08246370000200041086a4297808080f00237020020002001360204200041013602000c340b024041002802d8a1464105490d0041002802e4a146210541002802e0a146210641002802dca146210d200341c10036029801200342ee8080801037039001200341b483c60036028c012003422537028401200341ac84c600360280012003410036027c2003420437027420034201370368200341c882c6003602642003410a360260200341a284c60036025c20034105360258200641ecb3c000200d410246220d1b200341d8006a200541d4b3c000200d1b2802101102000b024020032802342205417f6a220620054f0d00200620054d0d180b4117102a2201450d312001410f6a41002900bf8246370000200141086a41002900b88246370000200141002900b08246370000200041086a4297808080f00237020020002001360204200041013602000c330b200341d8006a200341286a200541046a28020010ba05024020032802584101470d00200041013602002000200c2902003702042000410c6a200c41086a2802003602000c330b200341d8006a200341286a200328025c28020410bc0502402003280258450d0020002003290358370204200041013602002000410c6a200341e0006a2802003602000c330b024041002802d8a1464105490d0041002802e4a146210541002802e0a146210641002802dca146210d200341c10036029801200342ee8080801037039001200341b483c60036028c012003422537028401200341ac84c600360280012003410036027c2003420437027420034201370368200341c882c6003602642003410a360260200341a284c60036025c20034105360258200641ecb3c000200d410246220d1b200341d8006a200541d4b3c000200d1b2802101102000b024020032802342205417f6a220620054f0d00200620054d0d1a0b4117102a2201450d302001410f6a41002900bf8246370000200141086a41002900b88246370000200141002900b08246370000200041086a4297808080f00237020020002001360204200041013602000c320b200341d8006a200341286a200541046a28020010ba05024020032802584101470d00200041013602002000200c2902003702042000410c6a200c41086a2802003602000c320b200341d8006a200341286a200328025c280204220510bc0502402003280258450d0020002003290358370204200041013602002000410c6a200341e0006a2802003602000c320b200341d8006a200341286a410110bc0502402003280258450d0020002003290358370204200041013602002000410c6a200341e0006a2802003602000c320b20032005360250024041002802d8a1464105490d00200341013602442003200341d0006a36024041002802e4a146210541002802e0a146210641002802dca146210d200341e30036029801200342ee8080801037039001200341b483c60036028c012003422537028401200341ac84c600360280012003420137037820034201370368200341d082c6003602642003410a360260200341a284c60036025c20034105360258200541d4b3c000200d410246220d1b28021021052003200341c0006a360274200641ecb3c000200d1b200341d8006a2005110200200328025021050b2003280228220620056a220520064f0d19410e102a2201450d2f200141066a41002900de8246370000200141002900d88246370000200041086a428e808080e00137020020002001360204200041013602000c310b200341d8006a200341286a200541046a28020028020810ba05024020032802584101470d00200041013602002000200c2902003702042000410c6a200c41086a2802003602000c310b200328025c280204210d2005280204220628020441027421052006280200210602400340024020050d00200341d8006a200341286a200d10bc052003280258450d0220002003290358370204200041013602002000410c6a200341e0006a2802003602000c330b200341d8006a200341286a200628020010ba05024020032802584101470d00200041013602002000200c2902003702042000410c6a200c41086a2802003602000c330b2005417c6a2105200641046a2106200328025c280204200d460d000b4127102a2201450d2f2001411f6a41002900858346370000200141186a41002900fe8246370000200141106a41002900f68246370000200141086a41002900ee8246370000200141002900e68246370000200041086a42a7808080f00437020020002001360204200041013602000c310b024041002802d8a1464105490d0041002802e4a146210541002802e0a146210641002802dca146210d200341c10036029801200342ee8080801037039001200341b483c60036028c012003422537028401200341ac84c600360280012003410036027c2003420437027420034201370368200341c882c6003602642003410a360260200341a284c60036025c20034105360258200641ecb3c000200d410246220d1b200341d8006a200541d4b3c000200d1b2802101102000b024020032802342205417f6a220620054f0d00200620054d0d1a0b4117102a2201450d2e2001410f6a41002900bf8246370000200141086a41002900b88246370000200141002900b08246370000200041086a4297808080f00237020020002001360204200041013602000c300b200341d8006a200341286a200a10bc0502402003280258450d0020002003290358370204200041013602002000410c6a200341e0006a2802003602000c300b024041002802d8a1464105490d0041002802e4a146210541002802e0a146210641002802dca146210d200341c10036029801200342ee8080801037039001200341b483c60036028c012003422537028401200341ac84c600360280012003410036027c2003420437027420034201370368200341c882c6003602642003410a360260200341a284c60036025c20034105360258200641ecb3c000200d410246220d1b200341d8006a200541d4b3c000200d1b2802101102000b024020032802342205417f6a220620054f0d00200620054d0d1a0b4117102a2201450d2d2001410f6a41002900bf8246370000200141086a41002900b88246370000200141002900b08246370000200041086a4297808080f00237020020002001360204200041013602000c2f0b200341d8006a200541046a280200200210af05024020032802584101470d00200041013602002000200c2902003702042000410c6a200c41086a2802003602000c2f0b200341d8006a200341286a200328025c220528020810bc0502402003280258450d0020002003290358370204200041013602002000410c6a200341e0006a2802003602000c2f0b200320052d000d4104472205360250024041002802d8a1464105490d00200341013602442003200341d0006a36024041002802e4a146210541002802e0a146210641002802dca146210d200341e30036029801200342ee8080801037039001200341b483c60036028c012003422537028401200341ac84c600360280012003420137037820034201370368200341d082c6003602642003410a360260200341a284c60036025c20034105360258200541d4b3c000200d410246220d1b28021021052003200341c0006a360274200641ecb3c000200d1b200341d8006a2005110200200328025021050b2003280228220620056a220520064f0d19410e102a2201450d2c200141066a41002900de8246370000200141002900d88246370000200041086a428e808080e00137020020002001360204200041013602000c2e0b200341086a200410f40402400240200328020c200541046a28020022054d0d002003280208220620054104746a220d0d010b410e102a2201450d2c200141066a410029009383463700002001410029008d8346370000200041086a428e808080e00137020020002001360204200041013602000c2e0b200341d8006a200341286a200620054104746a28020810bc0502402003280258450d0020002003290358370204200041013602002000410c6a200341e0006a2802003602000c2e0b2003200d2d000d4104472205360250024041002802d8a1464105490d00200341013602442003200341d0006a36024041002802e4a146210541002802e0a146210641002802dca146210d200341e30036029801200342ee8080801037039001200341b483c60036028c012003422537028401200341ac84c600360280012003420137037820034201370368200341d082c6003602642003410a360260200341a284c60036025c20034105360258200541d4b3c000200d410246220d1b28021021052003200341c0006a360274200641ecb3c000200d1b200341d8006a2005110200200328025021050b2003280228220620056a220520064f0d19410e102a2201450d2b200141066a41002900de8246370000200141002900d88246370000200041086a428e808080e00137020020002001360204200041013602000c2d0b200341d8006a200341286a410110bc052003280258450d2720002003290358370204200041013602002000410c6a200341e0006a2802003602000c2c0b200341d8006a200341286a410210bc0502402003280258450d0020002003290358370204200041013602002000410c6a200341e0006a2802003602000c2c0b41012105200341d8006a200341286a410110bc0502402003280258450d0020002003290358370204200041013602002000410c6a200341e0006a2802003602000c2c0b20034101360250024041002802d8a1464105490d00200341013602442003200341d0006a36024041002802e4a146210541002802e0a146210641002802dca146210d200341e30036029801200342ee8080801037039001200341b483c60036028c012003422537028401200341ac84c600360280012003420137037820034201370368200341d082c6003602642003410a360260200341a284c60036025c20034105360258200541d4b3c000200d410246220d1b28021021052003200341c0006a360274200641ecb3c000200d1b200341d8006a2005110200200328025021050b2003280228220620056a220520064f0d18410e102a2201450d29200141066a41002900de8246370000200141002900d88246370000200041086a428e808080e00137020020002001360204200041013602000c2b0b4101210520034101360250024041002802d8a1464105490d00200341013602442003200341d0006a36024041002802e4a146210541002802e0a146210641002802dca146210d200341e30036029801200342ee8080801037039001200341b483c60036028c012003422537028401200341ac84c600360280012003420137037820034201370368200341d082c6003602642003410a360260200341a284c60036025c20034105360258200541d4b3c000200d410246220d1b28021021052003200341c0006a360274200641ecb3c000200d1b200341d8006a2005110200200328025021050b2003280228220620056a220520064f0d18410e102a2201450d28200141066a41002900de8246370000200141002900d88246370000200041086a428e808080e00137020020002001360204200041013602000c2a0b200341d8006a200341286a410110bc052003280258450d2420002003290358370204200041013602002000410c6a200341e0006a2802003602000c290b41012105200341d8006a200341286a410110bc0502402003280258450d0020002003290358370204200041013602002000410c6a200341e0006a2802003602000c290b20034101360250024041002802d8a1464105490d00200341013602442003200341d0006a36024041002802e4a146210541002802e0a146210641002802dca146210d200341e30036029801200342ee8080801037039001200341b483c60036028c012003422537028401200341ac84c600360280012003420137037820034201370368200341d082c6003602642003410a360260200341a284c60036025c20034105360258200541d4b3c000200d410246220d1b28021021052003200341c0006a360274200641ecb3c000200d1b200341d8006a2005110200200328025021050b2003280228220620056a220520064f0d17410e102a2201450d26200141066a41002900de8246370000200141002900d88246370000200041086a428e808080e00137020020002001360204200041013602000c280b4101210520034101360250024041002802d8a1464105490d00200341013602442003200341d0006a36024041002802e4a146210541002802e0a146210641002802dca146210d200341e30036029801200342ee8080801037039001200341b483c60036028c012003422537028401200341ac84c600360280012003420137037820034201370368200341d082c6003602642003410a360260200341a284c60036025c20034105360258200541d4b3c000200d410246220d1b28021021052003200341c0006a360274200641ecb3c000200d1b200341d8006a2005110200200328025021050b2003280228220620056a220520064f0d17410e102a2201450d25200141066a41002900de8246370000200141002900d88246370000200041086a428e808080e00137020020002001360204200041013602000c270b200341d8006a200341286a410110bc052003280258450d2120002003290358370204200041013602002000410c6a200341e0006a2802003602000c260b41012105200341d8006a200341286a410110bc0502402003280258450d0020002003290358370204200041013602002000410c6a200341e0006a2802003602000c260b20034101360250024041002802d8a1464105490d00200341013602442003200341d0006a36024041002802e4a146210541002802e0a146210641002802dca146210d200341e30036029801200342ee8080801037039001200341b483c60036028c012003422537028401200341ac84c600360280012003420137037820034201370368200341d082c6003602642003410a360260200341a284c60036025c20034105360258200541d4b3c000200d410246220d1b28021021052003200341c0006a360274200641ecb3c000200d1b200341d8006a2005110200200328025021050b2003280228220620056a220520064f0d16410e102a2201450d23200141066a41002900de8246370000200141002900d88246370000200041086a428e808080e00137020020002001360204200041013602000c250b200341d8006a200341286a410210bc052003280258450d1f20002003290358370204200041013602002000410c6a200341e0006a2802003602000c240b4101210520034101360250024041002802d8a1464105490d00200341013602442003200341d0006a36024041002802e4a146210541002802e0a146210641002802dca146210d200341e30036029801200342ee8080801037039001200341b483c60036028c012003422537028401200341ac84c600360280012003420137037820034201370368200341d082c6003602642003410a360260200341a284c60036025c20034105360258200541d4b3c000200d410246220d1b28021021052003200341c0006a360274200641ecb3c000200d1b200341d8006a2005110200200328025021050b2003280228220620056a220520064f0d15410e102a2201450d21200141066a41002900de8246370000200141002900d88246370000200041086a428e808080e00137020020002001360204200041013602000c230b41012105200341d8006a200341286a410110bc0502402003280258450d0020002003290358370204200041013602002000410c6a200341e0006a2802003602000c230b20034101360250024041002802d8a1464105490d00200341013602442003200341d0006a36024041002802e4a146210541002802e0a146210641002802dca146210d200341e30036029801200342ee8080801037039001200341b483c60036028c012003422537028401200341ac84c600360280012003420137037820034201370368200341d082c6003602642003410a360260200341a284c60036025c20034105360258200541d4b3c000200d410246220d1b28021021052003200341c0006a360274200641ecb3c000200d1b200341d8006a2005110200200328025021050b2003280228220620056a220520064f0d15410e102a2201450d20200141066a41002900de8246370000200141002900d88246370000200041086a428e808080e00137020020002001360204200041013602000c220b4101210520034101360250024041002802d8a1464105490d00200341013602442003200341d0006a36024041002802e4a146210541002802e0a146210641002802dca146210d200341e30036029801200342ee8080801037039001200341b483c60036028c012003422537028401200341ac84c600360280012003420137037820034201370368200341d082c6003602642003410a360260200341a284c60036025c20034105360258200541d4b3c000200d410246220d1b28021021052003200341c0006a360274200641ecb3c000200d1b200341d8006a2005110200200328025021050b2003280228220620056a220520064f0d15410e102a2201450d1f200141066a41002900de8246370000200141002900d88246370000200041086a428e808080e00137020020002001360204200041013602000c210b41012105200341d8006a200341286a410110bc0502402003280258450d0020002003290358370204200041013602002000410c6a200341e0006a2802003602000c210b20034101360250024041002802d8a1464105490d00200341013602442003200341d0006a36024041002802e4a146210541002802e0a146210641002802dca146210d200341e30036029801200342ee8080801037039001200341b483c60036028c012003422537028401200341ac84c600360280012003420137037820034201370368200341d082c6003602642003410a360260200341a284c60036025c20034105360258200541d4b3c000200d410246220d1b28021021052003200341c0006a360274200641ecb3c000200d1b200341d8006a2005110200200328025021050b2003280228220620056a220520064f0d15410e102a2201450d1e200141066a41002900de8246370000200141002900d88246370000200041086a428e808080e00137020020002001360204200041013602000c200b200341d8006a200341286a410210bc0502402003280258450d0020002003290358370204200041013602002000410c6a200341e0006a2802003602000c200b4101210520034101360250024041002802d8a1464105490d00200341013602442003200341d0006a36024041002802e4a146210541002802e0a146210641002802dca146210d200341e30036029801200342ee8080801037039001200341b483c60036028c012003422537028401200341ac84c600360280012003420137037820034201370368200341d082c6003602642003410a360260200341a284c60036025c20034105360258200541d4b3c000200d410246220d1b28021021052003200341c0006a360274200641ecb3c000200d1b200341d8006a2005110200200328025021050b2003280228220620056a220520064f0d15410e102a2201450d1d200141066a41002900de8246370000200141002900d88246370000200041086a428e808080e00137020020002001360204200041013602000c1f0b41012105200341d8006a200341286a410110bc0502402003280258450d0020002003290358370204200041013602002000410c6a200341e0006a2802003602000c1f0b20034101360250024041002802d8a1464105490d00200341013602442003200341d0006a36024041002802e4a146210541002802e0a146210641002802dca146210d200341e30036029801200342ee8080801037039001200341b483c60036028c012003422537028401200341ac84c600360280012003420137037820034201370368200341d082c6003602642003410a360260200341a284c60036025c20034105360258200541d4b3c000200d410246220d1b28021021052003200341c0006a360274200641ecb3c000200d1b200341d8006a2005110200200328025021050b2003280228220620056a220520064f0d15410e102a2201450d1c200141066a41002900de8246370000200141002900d88246370000200041086a428e808080e00137020020002001360204200041013602000c1e0b200341d8006a200341286a410210bc0502402003280258450d0020002003290358370204200041013602002000410c6a200341e0006a2802003602000c1e0b4101210520034101360250024041002802d8a1464105490d00200341013602442003200341d0006a36024041002802e4a146210541002802e0a146210641002802dca146210d200341e30036029801200342ee8080801037039001200341b483c60036028c012003422537028401200341ac84c600360280012003420137037820034201370368200341d082c6003602642003410a360260200341a284c60036025c20034105360258200541d4b3c000200d410246220d1b28021021052003200341c0006a360274200641ecb3c000200d1b200341d8006a2005110200200328025021050b2003280228220620056a220520064f0d15410e102a2201450d1b200141066a41002900de8246370000200141002900d88246370000200041086a428e808080e00137020020002001360204200041013602000c1d0b41012105200341d8006a200341286a410110bc0502402003280258450d0020002003290358370204200041013602002000410c6a200341e0006a2802003602000c1d0b20034101360250024041002802d8a1464105490d00200341013602442003200341d0006a36024041002802e4a146210541002802e0a146210641002802dca146210d200341e30036029801200342ee8080801037039001200341b483c60036028c012003422537028401200341ac84c600360280012003420137037820034201370368200341d082c6003602642003410a360260200341a284c60036025c20034105360258200541d4b3c000200d410246220d1b28021021052003200341c0006a360274200641ecb3c000200d1b200341d8006a2005110200200328025021050b2003280228220620056a220520064f0d15410e102a2201450d1a200141066a41002900de8246370000200141002900d88246370000200041086a428e808080e00137020020002001360204200041013602000c1c0b200b28020020064104746a41013a000c0c160b20052802002106200320052802082205360240024041002802d8a1464105490d00200341013602542003200341c0006a36025041002802e4a146210541002802e0a146210d41002802dca146210e200341db0036029801200342ee8080801037039001200341b483c60036028c012003422537028401200341ac84c6003602800120034201370378200342013703682003419c83c6003602642003410a360260200341a284c60036025c20034105360258200541d4b3c000200e410246220e1b28021021052003200341d0006a360274200d41ecb3c000200e1b200341d8006a2005110200200328024021050b2003200536022820032006360250024041002802d8a1464105490d00200341013602442003200341d0006a36024041002802e4a146210541002802e0a146210641002802dca146210d200341e30036029801200342ee8080801037039001200341b483c60036028c012003422537028401200341ac84c600360280012003420137037820034201370368200341d082c6003602642003410a360260200341a284c60036025c20034105360258200541d4b3c000200d410246220d1b28021021052003200341c0006a360274200641ecb3c000200d1b200341d8006a200511020020032802282105200328025021060b200520066a220620054f0d14410e102a2201450d18200141066a41002900de8246370000200141002900d88246370000200041086a428e808080e00137020020002001360204200041013602000c1a0b41a483c600200120051038000b200b28020020064104746a41013a000c0c130b200320053602280c120b200b28020020064104746a41013a000c0c110b200b28020020064104746a41013a000c0c100b200320053602280c0f0b200320053602280c0e0b200320053602280c0d0b200320053602280c0c0b200320053602280c0b0b200320053602280c0a0b200320053602280c090b200320053602280c080b200320053602280c070b200320053602280c060b200320053602280c050b200320053602280c040b200320053602280c030b200320053602280c020b200320053602280c010b200320063602280b200141016a22012008280200490d000c030b0b1035000b1033000b20004100360200200020073602042003280230450d01200b280200102c0c010b2003280230450d00200b280200102c0b200341a0016a24000b2200200141b2aec00041adaec00020002802002d000022001b4104410520001b10480bd50302047f017e024020014101762202450d0003402002417f6a2202210302400240024003402003410174220441017221050240200441026a220420014f0d00200520014f0d0220042005200020054103746a280200200020044103746a280200491b21050b200520014f0d03200320014f0d02200020034103746a2203280200200020054103746a22042802004f0d03200329020021062003200429020037020020042006370200200521030c000b0b41a080c600200520011038000b41b080c600200320011038000b20020d000b0b0240024020014102490d002001210403402004417f6a220420014f0d02200029020021062000200020044103746a2205290200370200200520063702004100210302400240024003402003410174220241017221050240200241026a220220044f0d00200520044f0d0220022005200020054103746a280200200020024103746a280200491b21050b200520044f0d03200320044f0d02200020034103746a2203280200200020054103746a22022802004f0d03200329020021062003200229020037020020022006370200200521030c000b0b41a080c600200520041038000b41b080c600200320041038000b200441014b0d000b0b0f0b4188ffc500200420011038000bea04050a7f017e017f017e027f200041686a21022001417f6a2103200041086a2104410021052001413249210641012107024003400240024020072001490d00410021080c010b410121082000200741037422096a220a280200220b200a41786a280200490d00200420096a210803404101210a20032007460d03200741016a21072008280200220a200b4f2109200841086a2108200a210b20090d000b200720014921080b2007200146210a20060d0120072001460d010240024002400240024002402007417f6a220b20014f0d002008450d012000200b4103746a220b290200210c200b20002007410374220d6a2208290200220e3702002008200c37020020074102490d0520002007417e6a220a4103746a220f280200200ea722094d0d05200b200f290200370200200a450d0420002007417d6a220a4103746a28020020094d0d042002200d6a210b0340200b41086a200b290200370200200a450d03200a417f6a210a200b41786a220b28020020094b0d000b200a41016a210b0c030b41f8fec500200b20011038000b4188ffc500200720011038000b4100210b0b2000200b4103746a210f0b200f200e3702000b200541016a21050240200120076b220a4102490d00200828020820082802004f0d002008290200210c20082008290208370200200841086a210f0240200a4103490d002008280210200ca722104f0d00200841106a21094103210b4102210d0340200d41037420086a220f41786a2009290200370200200b200a4f0d01200b4103742109200b210d200b41016a210b200820096a22092802002010490d000b0b200f200c3702000b20054105470d000b4100210a0b200a0b02000bcc0201027f230041106b2202240020002802002802002100200128021841c080c60041052001411c6a28020028020c1100002103200241003a0005200220033a00042002200136020020022000410c6a36020c200241c580c600410e2002410c6a41d480c600106021012002200036020c200141e480c60041092002410c6a41f080c600106021012002200041046a36020c2001418081c600410c2002410c6a41f080c600106021012002200041086a36020c2001418c81c600410c2002410c6a41f080c60010601a20022d00042100024020022d0005450d00200041ff0171210141012100024020010d0020022802002200411c6a28020028020c210120002802182103024020002d00004104710d0020034192b0c0004102200111000021000c010b20034194b0c0004101200111000021000b200220003a00040b200241106a2400200041ff01714100470bc20201027f230041106b22022400200128021841c080c60041052001411c6a28020028020c1100002103200241003a0005200220033a00042002200136020020022000410c6a36020c200241c580c600410e2002410c6a41d480c600106021012002200036020c200141e480c60041092002410c6a41f080c600106021012002200041046a36020c2001418081c600410c2002410c6a41f080c600106021012002200041086a36020c2001418c81c600410c2002410c6a41f080c60010601a20022d00042100024020022d0005450d00200041ff0171210141012100024020010d0020022802002200411c6a28020028020c210120002802182103024020002d00004104710d0020034192b0c0004102200111000021000c010b20034194b0c0004101200111000021000b200220003a00040b200241106a2400200041ff01714100470b8d0201027f02400240024002402001410c6a2802002203417f6a220420034d0d004116102a2201450d01200020013602042001410e6a41002900c58546370000200141086a41002900bf8546370000200141002900b78546370000200041086a4296808080e0023702000c030b0240200420026b220220044d0d00411b102a2201450d0120002001360204200141176a41002800e48546360000200141106a41002900dd8546370000200141086a41002900d58546370000200141002900cd8546370000200041086a429b808080b0033702000c030b200320024d0d012000200128020420024104746a360204200041003602000f0b1033000b41d087c600200220031038000b200041013602000bba0201037f230041106b220224000240024020002802000d002002200128021841fe85c60041042001411c6a28020028020c11000022003a000820022001360200200241003a0009200241003602040c010b20022001280218418286c60041042001411c6a28020028020c1100003a000820022001360200200241003a0009200241003602042002200036020c20022002410c6a418886c6001061210120022d0008210020022802042203450d00200041ff0171210441012100024020040d00024020034101470d0020012d0009450d00200128020022042d00004104710d004101210020042802184198b0c00041012004411c6a28020028020c1100000d010b2001280200220028021841ec94c60041012000411c6a28020028020c11000021000b200120003a00080b200241106a2400200041ff01714100470bd10401037f230041e0006b220324002003200236020c024041002802d8a1464105490d002003410136021420032003410c6a36021041002802e4a146210241002802e0a146210441002802dca1462105200341d8006a41ef00360200200341d0006a42ee80808010370300200341cc006a41b483c600360200200341c4006a4225370200200341c0006a41ac84c600360200200341386a4201370300200341286a4201370300200341206a410a360200200341346a200341106a360200200341e084c600360224200341a284c60036021c20034105360218200441ecb3c000200541024622051b200341186a200241d4b3c00020051b280210110200200328020c21020b0240024002402002450d00200341186a2001410010ba0520032802184101470d012000200341186a4104722202290200370200200041086a200241086a2802003602000c020b200041003602000c010b024002400240024020012802002202200328021c2204280208460d002002200328020c6b220420024d0d02410f102a22020d010c030b024020042d000c0d004125102a2202450d03200042a5808080d004370204200020023602002002411d6a41002900858546370000200241186a41002900808546370000200241106a41002900f88446370000200241086a41002900f08446370000200241002900e884463700000c040b200041003602000c030b2000428f808080f00137020420002002360200200241076a410029009485463700002002410029008d85463700000c020b20004100360200200120043602000c010b1033000b200341e0006a24000ba30201077f0240024002400240200041086a2802002201450d00410020014102746b2102417f210320002802002204210503402002450d01200341016a2103200241046a210220052802002106200541046a21052006450d000b4100200641004741016a41017122056b2003460d002001200520036a2207490d012001200641004741016a4101716b20036b220541ffffffff03712005470d0220054102742203417f4c0d020240024020030d00410421030c010b2003102a2203450d040b2003200420074102746a4104200641004741016a41017141027420026a6b10db0521020240200041046a280200450d002000280200102c0b20002002360200200041086a2005360200200041046a20053602000b0f0b200720011047000b103a000b1033000bbb0403067f017e097f02400240024002400240200141086a2802002203200241086a2802002204200320044b1b220541016a22064101200641014b1b220741ffffffff03712007470d0020074102742206417f4c0d000240024020060d00410421080c010b200610302208450d020b024020050d00420021090c040b2004417f6a220a20044b210b2002280200210c2003417f6a220d20034b0d022001280200210e20082007417f6a22024102746a210f410021064200210903404100211002402003200d20066b22114d0d00410021102011200d4b0d00200e20114102746a28020021100b410021110240200b0d002004200a20066b22124d0d002012200a4b0d00200c20124102746a28020021110b200720024d0d05200f20092010ad7c2011ad7c22093e0200200f417c6a210f2002417f6a210220094220882109200641016a22062005490d000c040b0b103a000b1033000b20082007417f6a22024102746a21104100210f420021090340410021060240200b0d00410021062004200a200f6b22114d0d00410021062011200a4b0d00200c20114102746a28020021060b200720024d0d02201020092006ad7c22093e02002010417c6a21102002417f6a210220094220882109200f41016a220f2005490d000b0b024020072005417f736a220220074f0d00200020073602082000200736020420002008360200200820024102746a20093e02000240200141046a280200450d002001280200102c0b0f0b41a888c600200220071038000b41a888c600200220071038000bbb04030d7f017e017f02400240200241086a2802002203200141086a28020022046a22054101200541014b1b220641ffffffff03712006470d0020064102742205417f4c0d0002400240024020050d00410421070c010b200510302207450d010b2004450d022001280200210802400240024020030d0020082004417f6a22054102746a210320072006417f6a22024102746a21090340200420054d0d0302402003280200450d00200620024d0d03200941003602000b2003417c6a21032009417c6a21092002417f6a21022005417f6a2205417f470d000c060b0b200641027420076a417c6a210a200341027420022802006a417c6a210b4100210c2006210d03402004200c417f736a220520044f0d020240200820054102746a220e280200220f450d0042002110417f2105200a2102200b2109024003402006200d20056a22114d0d0120022009350200200fad7e20107c20023502007c22103e0200201042208821100240200320056a0d002006200c20036a417f736a220220064f0d05200720024102746a20103e02000c030b2002417c6a21022009417c6a2109200e280200210f20032005417f6a22056a22112003490d000b41d087c600201120031038000b41d087c600201120061038000b200a417c6a210a200d417f6a210d200c41016a220c2004460d050c000b0b41a888c600200220061038000b41d087c600200520041038000b1033000b103a000b2000200636020820002006360204200020073602000240200141046a280200450d002001280200102c0b0bb60302097f017e230041106b2201240002400240024002400240024002402000280200220228020041016a41004c0d002000280204220328020041016a41004c0d012000280208220441086a28020022054101200028020c22062802006b22076a220820054f0d02200720002802142802006b22052000280210220741086a28020022006a220920054f0d03024002402002290308220a42ffffffff0f560d0041002100200a200428020020084102746a3502007e2003290308422086200728020020094102746a35020084580d010b20022802000d052002410036020020022002290308427f7c370308200441086a2802002200200020062802006b22024d0d0620032802000d07200428020020024102746a350200210a200341003602002003200a20032903087c370308410121000b200141106a240020000f0b41c689c6004118200141086a41e089c600103b000b41c689c6004118200141086a41e089c600103b000b41d087c600200820051038000b41d087c600200920001038000b41f089c6004110200141086a41808ac600103b000b41d087c600200220001038000b41f089c6004110200141086a41808ac600103b000b9e0301087f200028020822024102742103410021042000280200220521000240024003402003450d012004417f6a21042003417c6a210320002802002106200041046a21002006450d000b410121072004417f73200641004741016a4101716a21080c010b41002107410020046b21080b200128020822094102742103410021042001280200220121000240024003402003450d012004417f6a21042003417c6a210320002802002106200041046a21002006450d000b410021032004417f73200641004741016a4101716a21000c010b410020046b2100410121030b024020070d00410020034101736b0f0b4101210402400240024020030d0020022008490d0120092000490d02417f200220086b2203200920006b22064720032006491b22040d0020062003200320064b1b2107200120004102746a2103200520084102746a2100417f210103400240200141016a22012007490d0041000f0b2003280200210420002802002106200341046a2103200041046a2100417f200620044720062004491b2204450d000b0b20040f0b200820021047000b200020091047000b100020002802002000280204200110640bfb05010d7f200128000c21022001280204210320012802002104024002400240024002400240024020012d000822054102470d00200320044f0d010c020b20054101710d010b4100210602400240024002404100200320046b2201200120034b1b220741016a220120074f0d000240200420034b200520054102461b22014102460d002001410171450d004104210841002101410021060c070b2003417f732109200241086a210a41002107200321054104210841002106410021010340200920016a220b200a280200220c6a220d200b4f0d022004200549210b2002280200200d4102746a280200210d024020012006470d002006417f417f41002005200b6b220c20046b220e200e200c4b1b220c41016a220e200e200c491b4100200b1b220c41016a220e200e200c491b6a220c2006490d052006410174220e200c200e200c4b1b220c41ffffffff0371200c470d05200c410274220e4100480d050240024020060d00200e102a21080c010b20082006410274200e102e21080b2008450d04200c21060b200820076a200d360200200741046a21072005417f6a2105200141016a2101200b0d000c070b0b024020010d00410421080c050b200141ffffffff03712001470d02200141027422064100480d022006102a2208450d01200121060c040b41d087c600200120036b200c6a417f6a200c1038000b1033000b1035000b41042108410021060b410021012003200449200520054102461b4101710d0002400240200320044d0d002003417f732101200241086a210d200821052003210703402001200d280200220c6a220b20014f0d0420052002280200200b4102746a280200360200200141016a2101200541046a210520042007417f6a2207490d000b200320046b41016a21010c010b20032004470d0141012101200821050b200241086a28020022072004417f736a220420074f0d022005200228020020044102746a2802003602000b2000200136020820002006360204200020083602000f0b41d087c600200b200c1038000b41d087c600200420071038000b7301027f230041106b2203240002404110102a22040d001033000b200420013e020c200420014220883e0208200420023e0204200420024220883e020020034284808080c00037020420032004360200200310bd05200041086a200328020836020020002003290300370200200341106a24000b1c00200128021841b68bc600410f2001411c6a28020028020c1100000bb00301047f230041c0006b2202240020002802002103410121000240200128021841cfaec000410c2001411c6a28020028020c1100000d0002400240200328020822000d0020032802002200200328020428020c11070042e4aec285979ba58811520d012002200036020c2002413036021420022002410c6a36021020012802182104200128021c2105410121002002413c6a41013602002002420237022c200241dcaec0003602282002200241106a36023820042005200241286a10390d020c010b2002200036020c2002410836021420022002410c6a36021020012802182104200128021c2105410121002002413c6a41013602002002420237022c200241dcaec0003602282002200241106a36023820042005200241286a10390d010b200328020c2100200241106a41146a4101360200200241106a410c6a410136020020022000410c6a3602202002200041086a360218200241043602142002200036021020012802182100200128021c2101200241286a41146a41033602002002420337022c200241ecaec0003602282002200241106a36023820002001200241286a103921000b200241c0006a240020000b21002000417f6a41ff01712002ad4220862001ad842004ad4220862003ad8410000b7d01017f024002400240200041046a280200220320016b20024f0d00200120026a22022001490d02200341017422012002200120024b1b22014100480d020240024020030d002001102a21020c010b200028020020032001102e21020b2002450d0120002002360200200041046a20013602000b0f0b1033000b1035000bd90101017f230041e0006b22042400200420013602082004200336020c024020012003470d0020002002200110db051a200441e0006a24000f0b200441286a41146a4109360200200441346a410c360200200441106a41146a410336020020044203370214200441ec9fc6003602102004410c36022c2004200441086a36024020042004410c6a360244200442043703582004420137024c200441c0a0c6003602482004200441286a3602202004200441c8006a3602382004200441c4006a3602302004200441c0006a360228200441106a41fca0c6001041000ba20601037f230041d0006b22042400200420033a000f024002400240024020022802082205417f6a220620054f0d00200620054d0d010b4118102a2202450d012004421837023420042002360230200441306a4100411810c80520042004280238220241186a3602382002200428023022056a411841ba9dc600411810c9052004200429023437023420042005360230418493c6004134200441306a41f492c600103b000b200141086a2802002105200228020020064103746a2206280200210202400240024020062d0006450d0020052002460d010b02400240200520024d0d00200141086a2005417f6a2202360200200128020020026a2d00002205417c6a220241014b0d01024020020e020300030b4118102a2202450d04200241106a41002900ca9d46370000200241086a41002900c29d46370000200241002900ba9d4637000020044298808080800337022420042002360220200441c4006a410136020020044201370234200441e897c6003602302004412d36024c2004200441c8006a3602402004200441206a360248200441106a200441306a103702402004280224450d002004280220102c0b200041013a0000200041046a20042903103702002000410c6a200441106a41086a2802003602000c050b412b102a2202450d03200041013a0000200241276a41002800a29746360000200241206a410029009b9746370000200241186a41002900939746370000200241106a410029008b9746370000200241086a41002900839746370000200241002900fb9646370000200041086a42ab808080b005370200200041046a20023602000c040b0240200341ff017122024104460d0020052002470d020b200041003a0000200020053a00010c030b20004180083b01000c020b200420053a0048200441c4006a4102360200200441206a410c6a413236020020044202370234200441a897c600360230200441323602242004200441206a3602402004200441c8006a36022820042004410f6a360220200441106a200441306a10372000410c6a200441186a280200360200200041046a2004290310370200200041013a00000c010b1033000b200441d0006a24000bef0502047f017e230041d0006b2203240002400240024002400240200241086a2802002204417f6a220520044f0d00200520044d0d010b4118102a2202450d01200241106a41002900ca9d46370000200241086a41002900c29d46370000200241002900ba9d4637000020034298808080800337021420032002360210200341cc006a41013602002003420137023c200341e897c6003602382003412d3602342003200341306a3602482003200341106a360230200341206a200341386a1037200041086a200341206a41086a280200360200200020032903203702002003280214450d032003280210102c0c030b0240024002402002280200220620054103746a2d000522054104460d00200341386a20012002200510ca05024020032d00384101470d002000200329023c370200200041086a200341c4006a2802003602000c060b200241086a2802002204450d01200228020021060b200241086a2004417f6a2202360200200620024103746a290200220742808080808080c0ff0083428080808080808001520d010b4118102a2202450d01200241106a41002900ca9d46370000200241086a41002900c29d46370000200241002900ba9d4637000020034298808080800337021420032002360210200341cc006a41013602002003420137023c200341e897c6003602382003412d3602342003200341306a3602482003200341106a360230200341206a200341386a1037200041086a200341206a41086a280200360200200020032903203702002003280214450d032003280210102c0c030b200141086a28020021022003200737030820022007a7470d01200041003602000c020b1033000b200341cc006a41023602002003412c6a41013602002003420237023c200341c896c60036023820034101360224200320023602302003200341206a3602482003200341086a3602282003200341306a360220200341106a200341386a1037200041086a200341106a41086a280200360200200020032903103702000b200341d0006a24000ba80301057f230041c0006b2203240020032002360200024002402001280204220420024b0d002001280208417c6a21052001410c6a280200410374210102400340024020010d00200320043602042003412c6a4102360200200341306a410c6a41013602002003420337021c200341949fc600360218200341013602342003200341306a3602282003200341046a36023820032003360230200341086a200341186a10372000410c6a200341106a280200360200200041046a2003290308370200200041013a00000c040b02402004200541046a2802006a220620044f0d004120102a2204450d02200041013a0000200441186a410029008c9f46370000200441106a41002900849f46370000200441086a41002900fc9e46370000200441002900f49e46370000200041086a42a08080808004370200200041046a20043602000c040b200141786a2101200541086a2105200420024b21072006210420070d0020062104200620024d0d000b20052d00002104200041003a0000200020043a00010c020b1033000b200041003a00002000200128020020026a2d00003a00010b200341c0006a24000bbd0201037f230041106b220224000240024020002d00004104470d002002200128021841a595c60041032001411c6a28020028020c11000022003a000820022001360200200241003a0009200241003602040c010b2002200128021841a895c60041082001411c6a28020028020c1100003a000820022001360200200241003a0009200241003602042002200036020c20022002410c6a41b095c6001061210120022d0008210020022802042203450d00200041ff0171210441012100024020040d00024020034101470d0020012d0009450d00200128020022042d00004104710d004101210020042802184198b0c00041012004411c6a28020028020c1100000d010b2001280200220028021841ec94c60041012000411c6a28020028020c11000021000b200120003a00080b200241106a2400200041ff01714100470b820602037f017e230041d0006b22052400200520023602082005200336020c024002400240417f41012002411f71742002411f4b1b20034b0d00200541386a200141186a2203200141286a410010ca0520052d00384101470d012000200529023c370200200041086a200541c4006a2802003602000c020b200541cc006a41023602002005411c6a41013602002005420337023c200541a494c600360238200541013602142005200541106a36024820052005410c6a3602182005200541086a360210200541206a200541386a1037200041086a200541206a41086a280200360200200020052903203702000c010b2001280200210220054100360220024020022802080d00200541cc006a41013602002005420237023c200541b89bc600360238200541013602342005200541306a3602482005200541206a360230200541106a200541386a103720052802102202450d0020002005290214370204200020023602000c010b0240024002400240200141206a2802002202200141246a22062802004f0d00024020022001411c6a280200470d00200241016a22062002490d03200241017422072006200720064b1b22064100480d030240024020020d002006102a21020c010b200328020020022006102e21020b2002450d02200120023602182001411c6a2006360200200141206a28020021020b200128021820026a20043a0000200141206a2202200228020041016a3602000c030b200541cc006a220241013602002005420137023c200541b49ec60036023820054101360234200520063602302005200541306a360248200541106a200541386a103720052802102201450d022005200529021437022420052001360220200241013602002005420137023c200541e897c6003602382005412d3602342005200541306a3602482005200541206a360230200541106a200541386a1037200528021021022005290214210802402005280224450d002005280220102c0b2002450d0220002008370204200020023602000c030b1033000b1035000b200041003602000b200541d0006a24000bae0301017f230041d0006b22052400200520023602082005200336020c024002400240417f41012002411f71742002411f4b1b20034b0d00200128020021022005410036023420022802080d01200541cc006a41013602002005420237023c200541b89bc600360238200541013602142005200541106a3602482005200541346a360210200541206a200541386a103720052802202202450d0120002005290224370204200020023602000c020b200541cc006a41023602002005412c6a41013602002005420337023c200541a494c600360238200541013602242005200541206a36024820052005410c6a3602282005200541086a360220200541106a200541386a1037200041086a200541106a41086a280200360200200020052903103702000c010b200541386a200141186a2202200141286a2203200410ca05024020052d00384101470d002000200529023c370200200041086a200541c4006a2802003602000c010b200541386a20022003410010ca05024020052d00384101470d002000200529023c370200200041086a200541c4006a2802003602000c010b200041003602000b200541d0006a24000be90302047f017e230041c0006b22032400200341286a200141186a2204200141286a200210ca050240024020032d00284101470d002000200329022c370200200041086a200341346a2802003602000c010b0240024002400240200141206a2802002202200141246a22052802004f0d00024020022001411c6a280200470d00200241016a22052002490d03200241017422062005200620054b1b22054100480d030240024020020d002005102a21020c010b200428020020022005102e21020b2002450d02200120023602182001411c6a2005360200200141206a28020021020b200128021820026a41003a0000200141206a2201200128020041016a3602000c030b2003413c6a220141013602002003420137022c200341b49ec60036022820034101360214200320053602102003200341106a360238200341186a200341286a103720032802182202450d022003200329021c37020420032002360200200141013602002003420137022c200341e897c6003602282003412d3602142003200341106a36023820032003360210200341186a200341286a103720032802182101200329021c210702402003280204450d002003280200102c0b2001450d0220002007370204200020013602000c030b1033000b1035000b200041003602000b200341c0006a24000ba20402047f017e230041c0006b22032400200341286a200141186a2204200141286a2205200210ca050240024020032d00284101470d002000200329022c370200200041086a200341346a2802003602000c010b200341286a20042005200210ca05024020032d00284101470d002000200329022c370200200041086a200341346a2802003602000c010b0240024002400240200141206a2802002202200141246a22052802004f0d00024020022001411c6a280200470d00200241016a22052002490d03200241017422062005200620054b1b22054100480d030240024020020d002005102a21020c010b200428020020022005102e21020b2002450d02200120023602182001411c6a2005360200200141206a28020021020b200128021820026a41003a0000200141206a2201200128020041016a3602000c030b2003413c6a220141013602002003420137022c200341b49ec60036022820034101360214200320053602102003200341106a360238200341186a200341286a103720032802182202450d022003200329021c37020420032002360200200141013602002003420137022c200341e897c6003602282003412d3602142003200341106a36023820032003360210200341186a200341286a103720032802182101200329021c210702402003280204450d002003280200102c0b2001450d0220002007370204200020013602000c030b1033000b1035000b200041003602000b200341c0006a24000be90302057f017e230041c0006b22032400200341286a200141186a2204200141286a200210ca050240024020032d00284101470d002000200329022c370200200041086a200341346a2802003602000c010b0240024002400240200141206a2802002205200141246a22062802004f0d00024020052001411c6a280200470d00200541016a22062005490d03200541017422072006200720064b1b22064100480d030240024020050d002006102a21050c010b200428020020052006102e21050b2005450d02200120053602182001411c6a2006360200200141206a28020021050b200128021820056a20023a0000200141206a2201200128020041016a3602000c030b2003413c6a220141013602002003420137022c200341b49ec60036022820034101360214200320063602102003200341106a360238200341186a200341286a103720032802182202450d022003200329021c37020420032002360200200141013602002003420137022c200341e897c6003602282003412d3602142003200341106a36023820032003360210200341186a200341286a103720032802182101200329021c210802402003280204450d002003280200102c0b2001450d0220002008370204200020013602000c030b1033000b1035000b200041003602000b200341c0006a24000ba20402057f017e230041c0006b22032400200341286a200141186a2204200141286a2205200210ca050240024020032d00284101470d002000200329022c370200200041086a200341346a2802003602000c010b200341286a20042005200210ca05024020032d00284101470d002000200329022c370200200041086a200341346a2802003602000c010b0240024002400240200141206a2802002205200141246a22062802004f0d00024020052001411c6a280200470d00200541016a22062005490d03200541017422072006200720064b1b22064100480d030240024020050d002006102a21040c010b200428020020052006102e21040b2004450d02200120043602182001411c6a2006360200200141206a28020021050b200128021820056a20023a0000200141206a2201200128020041016a3602000c030b2003413c6a220141013602002003420137022c200341b49ec60036022820034101360214200320063602102003200341106a360238200341186a200341286a103720032802182202450d022003200329021c37020420032002360200200141013602002003420137022c200341e897c6003602282003412d3602142003200341106a36023820032003360210200341186a200341286a103720032802182101200329021c210802402003280204450d002003280200102c0b2001450d0220002008370204200020013602000c030b1033000b1035000b200041003602000b200341c0006a24000be90302047f017e230041c0006b22042400200441286a200141186a2205200141286a200210ca050240024020042d00284101470d002000200429022c370200200041086a200441346a2802003602000c010b0240024002400240200141206a2802002202200141246a22062802004f0d00024020022001411c6a280200470d00200241016a22062002490d03200241017422072006200720064b1b22064100480d030240024020020d002006102a21020c010b200528020020022006102e21020b2002450d02200120023602182001411c6a2006360200200141206a28020021020b200128021820026a20033a0000200141206a2201200128020041016a3602000c030b2004413c6a220141013602002004420137022c200441b49ec60036022820044101360214200420063602102004200441106a360238200441186a200441286a103720042802182202450d022004200429021c37020420042002360200200141013602002004420137022c200441e897c6003602282004412d3602142004200441106a36023820042004360210200441186a200441286a103720042802182101200429021c210802402004280204450d002004280200102c0b2001450d0220002008370204200020013602000c030b1033000b1035000b200041003602000b200441c0006a24000b17000240200041046a280200450d002000280200102c0b0b0c002000280200200110a1050b1500200028020022002802002000280208200110640b100020012000280200200028020810480bfb0101027f230041106b220224002002200128021841dc9ec60041052001411c6a28020028020c1100003a000820022001360200200241003a0009200241003602042002200036020c20022002410c6a41e49ec60010611a20022d00082101024020022802042203450d00200141ff0171210041012101024020000d00024020034101470d0020022d000941ff0171450d00200228020022002d00004104710d004101210120002802184198b0c00041012000411c6a28020028020c1100000d010b2002280200220128021841ec94c60041012001411c6a28020028020c11000021010b200220013a00080b200241106a2400200141ff01714100470b2c01017f02402002450d00200021030340200320013a0000200341016a21032002417f6a22020d000b0b20000b3601017f02402002450d00200021030340200320012d00003a0000200341016a2103200141016a21012002417f6a22020d000b0b20000b7101017f0240024020012000490d002002450d01200021030340200320012d00003a0000200141016a2101200341016a21032002417f6a22020d000c020b0b2002450d002001417f6a21012000417f6a21030340200320026a200120026a2d00003a00002002417f6a22020d000b0b20000b4a01037f4100210302402002450d000240034020002d0000220420012d00002205470d01200041016a2100200141016a21012002417f6a2202450d020c000b0b200420056b21030b20030b5701017e02400240200341c000710d002003450d012001410020036b413f71ad8820022003413f71ad220486842102200120048621010c010b20012003413f71ad862102420021010b20002001370300200020023703080b5701017e02400240200341c000710d002003450d0120012003413f71ad2204882002410020036b413f71ad86842101200220048821020c010b20022003413f71ad882101420021020b20002001370300200020023703080b7501027e200020034220882205200142208822067e200320027e7c200420017e7c200342ffffffff0f832203200142ffffffff0f8322017e2204422088200320067e7c22034220887c200342ffffffff0f83200520017e7c22034220887c37030820002003422086200442ffffffff0f83843703000b3e01017f230041106b2205240020052001200220032004410010e305200529030021012000200541086a29030037030820002001370300200541106a24000b4c01017f230041206b22052400200542003703182005420037031020052001200220032004200541106a10e305200529031021012000200529031837030820002001370300200541206a24000be20502037f067e230041306b2206240002400240024002400240024002400240024002402002500d002003500d012004500d02200479a7200279a76b2207413f4b0d0341ff0020076b2108200741016a21070c080b02402004500d0020050d040c060b024002402005450d0020034200510d0620054200370308200520012003823703000c010b20034200510d050b200120038021010c060b2004500d030240024002402001500d0020047b4201510d01200479a7200279a76b2207413e4b0d0241ff0020076b2108200741016a21070c090b02402005450d0020054200370300200520022004823703080b200220048021010c070b02402005450d002005200137030020052004427f7c2002833703080b200220047a423f838821010c060b2005450d040c020b024020037b4201510d0041bf7f200379a7200279a76b22076b2108200741c1006a21070c060b02402005450d002005420037030820052003427f7c2001833703000b20034201510d06200641206a2001200220037aa710df05200641286a2903002102200629032021010c060b2005450d020b2005200137030020052002370308420021010c020b00000b420021010b420021020c010b200620012002200841ff007110de05200641106a20012002200741ff007110df05200641086a2903002102200641106a41086a2903002109200629030021012006290310210a0240024020070d004200210b4200210c0c010b4200210c4200210d03402009420186200a423f8884220b200b427f8520047c200a4201862002423f8884220a427f85220b20037c200b54ad7c423f87220b2004837d200a200b200383220e54ad7d2109200a200e7d210a420020024201862001423f8884842102200d2001420186842101200b420183220b210d2007417f6a22070d000b0b02402005450d002005200a370300200520093703080b200c20024201862001423f8884842102200b20014201868421010b2000200137030020002002370308200641306a24000b0b80a2060300418080c0000bd5a1066361706163697479206f766572666c6f77000000240010001700000009030000050000007372632f6c6962616c6c6f632f7261775f7665632e727300a8001000460000005a0100001300000037000000040000000400000038000000390000003a0000006120666f726d617474696e6720747261697420696d706c656d656e746174696f6e2072657475726e656420616e206572726f72003b00000000000000010000003c0000002f72757374632f373661323532656139653762653933613631666664663333623335333365323461396366343539642f7372632f6c6962636f72652f666d742f6d6f642e7273010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002020202020202020202020202020202020202020202020202020202020203030303030303030303030303030303040404040400000000000000000000000000100210002000000030021000120000003b00000000000000010000003d000000696e646578206f7574206f6620626f756e64733a20746865206c656e20697320206275742074686520696e646578206973203030303130323033303430353036303730383039313031313132313331343135313631373138313932303231323232333234323532363237323832393330333133323333333433353336333733383339343034313432343334343435343634373438343935303531353235333534353535363537353835393630363136323633363436353636363736383639373037313732373337343735373637373738373938303831383238333834383538363837383838393930393139323933393439353936393739383939000044031000060000004a031000220000002c03100018000000690a0000050000007372632f6c6962636f72652f736c6963652f6d6f642e7273696e64657820206f7574206f662072616e676520666f7220736c696365206f66206c656e677468208c03100016000000a20310000d0000002c031000180000006f0a000005000000736c69636520696e64657820737461727473206174202062757420656e6473206174206030785b2e2e2e5d009a0410000b0000001717100016000000af0310000100000084041000160000000408000009000000f51610000e00000003171000040000000717100010000000af031000010000008404100016000000080800000500000063616c6c656420604f7074696f6e3a3a756e77726170282960206f6e206120604e6f6e65602076616c756500e0161000150000007d010000150000009a0410000b000000a504100026000000cb04100008000000d304100006000000af03100001000000840410001600000015080000050000007372632f6c6962636f72652f7374722f6d6f642e72736279746520696e64657820206973206e6f742061206368617220626f756e646172793b20697420697320696e7369646520202862797465732029206f6620600000001a0510000200000004051000160000005e04000028000000040510001600000053040000280000007372632f6c6962636f72652f666d742f6d6f642e72732e2e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffff00000000000000000000000000000000000000000000000000000000000000000000f8030000000000000000000000000000000000000000000000000000000000000000feffffffffbfb6000000000000000000ff070000000000f8ffff0000010000000000000000000000c09f9f3d0000000002000000ffffff0700000000000000000000c0ff01000000000000f80f20c01010004a0000001013100000020000101510003a00000000010203040506070809080a0b0c0d0e0f10111213140215161718191a1b1c1d1e1f2002020202020202020202210202020202020202020202020202222324252602270228020202292a2b022c2d2e2f300202310202023202020202020202023302023402020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202023502360237020202020202020238023902020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202023a3b3c020202023d02023e3f4041424344454602020247020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202024802020202020202020202024902020202023b020001020202020302020202040205060202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020207020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020200010305050606030706080809110a1c0b190c140d120e0d0f0410031212130916011705180219031a071c021d011f1620032b042c022d0b2e01300331023201a702a902aa04ab08fa02fb05fd04fe03ff09ad78798b8da23057588b8c901c1ddd0e0f4b4cfbfc2e2f3f5c5d5fb5e2848d8e9192a9b1babbc5c6c9cadee4e5ff00041112293134373a3b3d494a5d848e92a9b1b4babbc6cacecfe4e500040d0e11122931343a3b4546494a5e646584919b9dc9cecf0d112945495764658d91a9b4babbc5c9dfe4e5f0040d1145496465808184b2bcbebfd5d7f0f183858ba4a6bebfc5c7cecfdadb4898bdcdc6cecf494e4f57595e5f898e8fb1b6b7bfc1c6c7d71116175b5cf6f7feff800d6d71dedf0e0f1f6e6f1c1d5f7d7eaeafbbbcfa16171e1f46474e4f585a5c5e7e7fb5c5d4d5dcf0f1f572738f747596972f5f262e2fa7afb7bfc7cfd7df9a409798308f1fc0c1ceff4e4f5a5b07080f10272feeef6e6f373d3f42459091feff536775c8c9d0d1d8d9e7feff00205f2282df048244081b04061181ac0e80ab351e1580e003190801042f043404070301070607110a500f1207550802041c0a090308030703020303030c0405030b06010e15053a0311070605100757070207150d500443032d03010411060f0c3a041d255f206d046a2580c80582b0031a0682fd035907150b1709140c140c6a060a061a0659072b05460a2c040c040103310b2c041a060b0380ac060a061f414c042d0374083c030f033c0738082b0582ff1118082f112d032010210f808c048297190b158894052f053b07020e180980b030740c80d61a0c0580ff0580b605240c9bc60ad23010848d033709815c1480b80880c73035040a06380846080c06740b1e035a0459098083181c0a16094808808a06aba40c170431a10481da26070c050580a511816d1078282a064c04808d0480be031b030f0d0006010103010402080809020a050b02100111041205131114021502170219041c051d0824016a036b02bc02d102d40cd509d602d702da01e005e102e802ee20f004f906fa020c273b3e4e4f8f9e9e9f060709363d3e56f3d0d104141836375657bd35cecfe01287898e9e040d0e11122931343a4546494a4e4f64655a5cb6b71b1ca8a9d8d909379091a8070a3b3e66698f926f5feeef5a629a9b2728559da0a1a3a4a7a8adbabcc4060b0c151d3a3f4551a6a7cccda007191a22253e3fc5c604202325262833383a484a4c50535556585a5c5e606365666b73787d7f8aa4aaafb0c0d00c72a3a4cbcc6e6f5e227b0503042d036504012f2e80821d03310f1c0424091e052b0544040e2a80aa06240424042808340b018090813709160a088098390363080930160521031b05014038044b052f040a070907402027040c0936033a051a07040c07504937330d33072e080a81261f808128082a808617094e041e0f430e19070a0647092709750b3f412a063b050a0651060105100305808b602048080a80a65e22450b0a060d1339070a362c041080c03c64530c0180a0451b4808531d398107460a1d03474937030e080a0639070a81361980c7320d839b66750b80c48abc842f8fd18247a1b98239072a040260260a460a28051382b05b654b0439071140041c97f80882f3a50d811f3103110408818c89046b050d03090710936080f60a73086e1746809a140c570919808781470385420f1585502b80d52d031a040281703a0501850080d7294c040a04028311444c3d80c23c06010455051b3402810e2c04640c560a0d035d033d391d0d2c040907020e06809a83d60a0d030b05740c59070c140c0438080a0628081e527703310380a60c14040305030d06856a000000a0101000200000002700000019000000a0101000200000002800000020000000a0101000200000002a00000019000000a0101000200000002b00000018000000a0101000200000002c000000200000007372632f6c6962636f72652f756e69636f64652f626f6f6c5f747269652e72730000c0fbef3e00000000000e0000000000000000000000000000f8fffbffffff0700000000000014fe21fe000c00000002000000000000501e2080000c00004006000000000000108639020000002300be2100000c0000fc02000000000000d01e20c0000c0000000400000000000040012080000000000011000000000000c0c13d60000c0000000200000000000090443060000c00000003000000000000581e2080000c00000000845c8000000000000000000000f207807f000000000000000000000000f21f003f000000000000000000030000a002000000000000fe7fdfe0fffeffffff1f40000000000000000000000000e0fd66000000c301001e006420002000000000000000e00000000000001c0000001c0000000c0000000c00000000000000b03f40fe0f200000000000380000000000006000000000020000000000008701040e00008009000000000000407fe51ff89f000000000000ff7f0f0000000000f0170400000000f80f00030000003c3b00000000000040a303000000000000f0cf000000f7fffd211003fffffffffffffffb00100000000000000000ffffffff01000000000000800300000000000000008000000000ffffffff0000000000fc00000000000600000000000000000080f73f000000c0000000000000000000000300440800006000000030000000ffff038000000000c03f000080ff030000000000070000000000c833000000002000000000000000007e660008100000000000100000000000009dc1020000000030400000000000202100000000004000000000ffff0000ffff00000000000000000001000000020003000000000000000000000000000000000000000000000000000004000005000000000000000006000000000000000007000008090a000b0c0d0e0f000010111200001314151600001718191a1b001c0000001d0000000000001e1f202100000000002200230024252600000000270000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002829000000000000000000000000000000002a2b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002c0000000000000000000000000000000000002d2e00002f0000000000000000000000000000000000000000000000000000000000003031320000000000000000000000000000000000000000003300000029000000000000340000000000000000000000000000000000000000000000350036000000000000000000000000000000000000000000000000000037380000383838390000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000001000000000000000000c0076ef0000000000087000000006000000000000000f0000000c0ff01000000000002000000000000ff7f0000000000008003000000000078060700000080ef1f000000000000000800030000000000c07f001e000000000000000000000080d34000000080f8070000030000000000005801008000c01f1f0000000000000000ff5c00004000000000000000000000f9a50d000000000000000000000000803cb00100003000000000000000000000f8a70100000000000000000000000028bf00000000e0bc0f0000000000000080ff060000f00c01000000fe0700000000f87980007e0e0000000000fc7f03000000000000000000007fbf0000fcfffffc6d000000000000007eb4bf000000000000000000a3000000000000000000000018000000000000001f000000000000007f0000800000000000000080070000000000000000600000000000000000a0c307f8e70f0000003c00001c00000000000000ffffffffffff7ff8ffffffffff1f2000100000f8feff00007ffffff9db0700000000000000f0000000007f0000000000f00700000000000000000000ffffffffffffffffffffffffffffffffffff00007372632f6c6962636f72652f6f7074696f6e2e7273626567696e203c3d20656e642028203c3d2029207768656e20736c6963696e672060206973206f7574206f6620626f756e6473206f66206066616c736574727565426f72726f774572726f72426f72726f774d75744572726f7270616e69636b65642061742000851710000100000086171000030000005c8f110000000000841710000100000084171000010000003a27272c20000000e016100015000000a4040000050000005c8f110000000000f596100002000000bc17100015000000a5040000050000007372632f6c6962636f72652f726573756c742e72735b5d0a3e0000000c000000040000003f00000040000000410000002c0a2c2037000000040000000400000042000000430000004400000020202020207b20207b0a207d7d28280a2c0000003b000000000000000100000045000000460000004700000037000000040000000400000048000000490000004a00000000000000a41810001000000000000000b4181000010000000000000000000000bc181000010000000000000000000000c41810000f00000000000000d4181000020000000000000000000000e4181000010000000000000045787472696e73696353756363657373011910000c0000000d1910002500000045787472696e7369634661696c6564006b8611000d000000011910000c000000ec1810001500000020416e2065787472696e736963206661696c65642e4469737061746368496e666f20416e2065787472696e73696320636f6d706c65746564207375636365737366756c6c792e52657175697265526f6f744f726967696e526571756972655369676e65644f726967696e526571756972654e6f4f726967696e000000000000004319100013000000000000005c8f11000000000000000000000000003219100011000000000000005c8f1100000000000000000000000000561910000f000000000000005c8f110000000000000000003b00000000000000010000004b0000004c000000470000003b00000000000000010000004b0000004c00000047000000617373657274696f6e206661696c65643a20696e646578203c3d206c656e617373657274696f6e206661696c65643a20696e646578203c206c656e00381a100043000000310b0000300000002f72757374632f373661323532656139653762653933613631666664663333623335333365323461396366343539642f7372632f6c6962616c6c6f632f7665632e727300381a1000430000003d0b00002c00000062656e6566696369617279206163636f756e74206d757374207072652d65786973745374616c6c65643a6772616e6470615f617574686f726974696573546f74616c49737375616e63654672656542616c616e6365526573657276656442616c616e63654c6f636b7300000000000000a81b10000a00000000000000d8ef1000020000000000000000000000b41b1000010000000000000000000000bc1b10000d00000000000000d8ef1000020000000000000000000000cc1b100001000000000000000000000048f310000800000000000000d41b1000040000000000000000000000f41b1000010000000000000000000000fc1b10000a00000000000000081c1000030000000000000000000000201c100001000000000000004e65774163636f756e7400009c1c10001b0000005265617065644163636f756e74000000851c100017000000e252110009000000e2521100090000009b1f1100070000009b1f110007000000591c10002c00000042616c616e63655365740000e2521100090000009b1f1100070000009b1f110007000000281c10003100000020412062616c616e6365207761732073657420627920726f6f74202877686f2c20667265652c207265736572766564292e205472616e7366657220737563636565646564202866726f6d2c20746f2c2076616c75652c2066656573292e20416e206163636f756e7420776173207265617065642e2041206e6577206163636f756e742077617320637265617465642e5265706f72747350656e64696e674368616e67655374617465746f6f2066657720667265652066756e647320696e206163636f756e747061796d656e7420776f756c64206b696c6c206163636f756e7456657374696e676163636f756e74206c6971756964697479207265737472696374696f6e732070726576656e74207769746864726177616c76657374696e672062616c616e636520746f6f206869676820746f2073656e642076616c75650000004d00000008000000040000004e0000004f00000000000000000000005000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004d00000008000000040000004e0000004f00000000000000000000005000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004e657874466f72636564000000000000b81f10001200000000000000cc1f1000010000000000000000000000e41f100001000000000000007265706f72745f6d69736265686176696f72000000000000052010000700000000000000e960110007000000ec1f100019000000205265706f727420736f6d65206d69736265686176696f722e5f7265706f727400000000486311000b0000000000000000000000c76c11000d000000000000000000000000000000000000000000000000000000000000005c8f11003c3b100000000000000000007422100004000000000000000100000000000000cb1c1000050000000000000000000000942210001b000000000000000000000000000000000000000000000000000000000000005c8f1100b02210000000000000000000c022100001000000000000000100000000000000be1c10000d0000000000000000000000c822100023000000000000000000000000000000000000000000000000000000000000005c8f1100fc3a10000000000000000000ec22100001000000000000000000000000000000801f10000a00000000000000000000009c6011000e000000000000000000000000000000000000000000000000000000000000005c8f11005c2310000000000000000000f422100001000000000000000000000000000000ae1a1000070000000000000000000000fc22100020000000000000000000000000000000000000000000000000000000000000005c8f11001c23100000000000000000002c23100001000000000000000000000000000000d46c11000c00000000000000000000003423100005000000000000000000000000000000000000000000000000000000000000005c8f11003c23100000000000000000004c23100002000000000000000100000000000000ef6c11000c0000000101000000000000342310000500000000000000e76f11000c000000000000000000000000000000000000005c8f11005c23100000000000000000006c231000010000000000000000000000142510000b0000005c8f1100000000001f25100058000000772510002500000053746f72656453746174653c543a3a426c6f636b4e756d6265723e003b000000000000000100000051000000f02410002400000053746f72656450656e64696e674368616e67653c543a3a426c6f636b4e756d6265723e00bf24100031000000902410002f00000028543a3a426c6f636b4e756d6265722c20543a3a426c6f636b4e756d626572293b0000000000000001000000520000006c2410002400000053657449640000003b000000000000000100000053000000e4231000570000003b241000310000003b00000000000000010000005200000074231000700000002041206d617070696e672066726f6d206772616e6470612073657420494420746f2074686520696e646578206f6620746865202a6d6f737420726563656e742a2073657373696f6e20666f7220776869636820697473206d656d62657273207765726520726573706f6e7369626c652e20546865206e756d626572206f66206368616e6765732028626f746820696e207465726d73206f66206b65797320616e6420756e6465726c79696e672065636f6e6f6d696320726573706f6e736962696c69746965732920696e20746865202273657422206f66204772616e6470612076616c696461746f72732066726f6d2067656e657369732e20607472756560206966207765206172652063757272656e746c79207374616c6c65642e206e65787420626c6f636b206e756d6265722077686572652077652063616e20666f7263652061206368616e67652e2050656e64696e67206368616e67653a20287369676e616c65642061742c207363686564756c6564206368616e6765292e205374617465206f66207468652063757272656e7420617574686f72697479207365742e20444550524543415445442054686973207573656420746f2073746f7265207468652063757272656e7420617574686f72697479207365742c20776869636820686173206265656e206d6967726174656420746f207468652077656c6c2d6b6e6f776e204752414e4450415f415554484f52495445535f4b455920756e686173686564206b65792e6e6f7420656e6f75676820667265652066756e6473000000000000006426100008000000000000006c2610000200000000000000000000009c261000190000000000000000000000642710000b0000000000000070271000030000000000000000000000b82710000d0000000000000000000000202810000e0000000000000030281000030000000000000000000000782810000200000000000000000000008828100013000000000000006c2610000200000000000000000000009c28100006000000000000007472616e7366657200000000560311000400000000000000b55a11002300000000000000143611000500000000000000f529100013000000cf2b1000360000005c8f110000000000052c100042000000472c1000480000008f2c100045000000d42c10002d0000005c8f110000000000012d1000460000005c8f1100000000002d5a11000b000000472d10004c000000932d100033000000c62d10005a0000005c8f110000000000202e1000130000005c8f110000000000332e100054000000872e10004b000000d22e100035000000072f1000370000003e2f100056000000942f100052000000e62f10003e0000005c8f110000000000a65a11000c0000007365745f62616c616e63650000000000b25a11000300000000000000b55a11002300000000000000bb2b10000800000000000000f52910001300000000000000c32b10000c00000000000000f529100013000000082a1000250000005c8f1100000000002d2a100048000000752a100042000000b72a100046000000fd2a1000400000005c8f1100000000003d2b10002d0000005c8f1100000000002d5a11000b0000006a2b1000200000008a2b100031000000a65a11000c000000666f7263655f7472616e73666572000000000000ef2910000600000000000000b55a11002300000000000000560311000400000000000000b55a11002300000000000000143611000500000000000000f5291000130000009029100054000000e42910000b0000007472616e736665725f6b6565705f616c69766500cc2810005400000020291000100000005c8f110000000000302910002f0000005c8f1100000000005f291000310000002053616d6520617320746865205b607472616e73666572605d2063616c6c2c206275742077697468206120636865636b207468617420746865207472616e736665722077696c6c206e6f74206b696c6c20746865206f726967696e206163636f756e742e20393925206f66207468652074696d6520796f752077616e74205b607472616e73666572605d20696e73746561642e205b607472616e73666572605d3a207374727563742e4d6f64756c652e68746d6c236d6574686f642e7472616e736665722045786163746c7920617320607472616e73666572602c2065786365707420746865206f726967696e206d75737420626520726f6f7420616e642074686520736f75726365206163636f756e74206d6179206265207370656369666965642e736f75726365436f6d706163743c543a3a42616c616e63653e20536574207468652062616c616e636573206f66206120676976656e206163636f756e742e20546869732077696c6c20616c74657220604672656542616c616e63656020616e642060526573657276656442616c616e63656020696e2073746f726167652e2069742077696c6c20616c736f2064656372656173652074686520746f74616c2069737375616e6365206f66207468652073797374656d202860546f74616c49737375616e636560292e20496620746865206e65772066726565206f722072657365727665642062616c616e63652069732062656c6f7720746865206578697374656e7469616c206465706f7369742c2069742077696c6c20726573657420746865206163636f756e74206e6f6e63652028606672616d655f73797374656d3a3a4163636f756e744e6f6e636560292e20546865206469737061746368206f726967696e20666f7220746869732063616c6c2069732060726f6f74602e202d20496e646570656e64656e74206f662074686520617267756d656e74732e202d20436f6e7461696e732061206c696d69746564206e756d626572206f6620726561647320616e64207772697465732e6e65775f667265656e65775f7265736572766564205472616e7366657220736f6d65206c697175696420667265652062616c616e636520746f20616e6f74686572206163636f756e742e20607472616e73666572602077696c6c207365742074686520604672656542616c616e636560206f66207468652073656e64657220616e642072656365697665722e2049742077696c6c2064656372656173652074686520746f74616c2069737375616e6365206f66207468652073797374656d2062792074686520605472616e73666572466565602e204966207468652073656e6465722773206163636f756e742069732062656c6f7720746865206578697374656e7469616c206465706f736974206173206120726573756c74206f6620746865207472616e736665722c20746865206163636f756e742077696c6c206265207265617065642e20546865206469737061746368206f726967696e20666f7220746869732063616c6c206d75737420626520605369676e65646020627920746865207472616e736163746f722e202d20446570656e64656e74206f6e20617267756d656e747320627574206e6f7420637269746963616c2c20676976656e2070726f70657220696d706c656d656e746174696f6e7320666f72202020696e70757420636f6e6669672074797065732e205365652072656c617465642066756e6374696f6e732062656c6f772e202d20497420636f6e7461696e732061206c696d69746564206e756d626572206f6620726561647320616e642077726974657320696e7465726e616c6c7920616e64206e6f20636f6d706c657820636f6d7075746174696f6e2e2052656c617465642066756e6374696f6e733a2020202d2060656e737572655f63616e5f77697468647261776020697320616c776179732063616c6c656420696e7465726e616c6c792062757420686173206120626f756e64656420636f6d706c65786974792e2020202d205472616e7366657272696e672062616c616e63657320746f206163636f756e7473207468617420646964206e6f74206578697374206265666f72652077696c6c20636175736520202020202060543a3a4f6e4e65774163636f756e743a3a6f6e5f6e65775f6163636f756e746020746f2062652063616c6c65642e2020202d2052656d6f76696e6720656e6f7567682066756e64732066726f6d20616e206163636f756e742077696c6c2074726967676572202020202060543a3a4475737452656d6f76616c3a3a6f6e5f756e62616c616e6365646020616e642060543a3a4f6e4672656542616c616e63655a65726f3a3a6f6e5f667265655f62616c616e63655f7a65726f602e2020202d20607472616e736665725f6b6565705f616c6976656020776f726b73207468652073616d652077617920617320607472616e73666572602c206275742068617320616e206164646974696f6e616c2020202020636865636b207468617420746865207472616e736665722077696c6c206e6f74206b696c6c20746865206f726967696e206163636f756e742e00000000c91a10000d0000000000000000000000dc3110000a000000000000000000000000000000000000000000000000000000000000005c8f11008c3210000000000000000000e831100001000000000000000100000000000000071d10000700000001010000000000000f5c11000c00000000000000f03110002b000000000000000000000000000000000000005c8f11001c32100000000000000000002c32100001000000000000000000000000000000d61a10000b00000001010000000000000f5c11000c00000000000000dc3110000a000000000000000000000000000000000000005c8f11008c3210000000000000000000343210000b000000000000000100000000000000e11a10000f00000001010000000000000f5c11000c00000000000000dc3110000a000000000000000000000000000000000000005c8f11008c32100000000000000000009c3210000b000000000000000100000000000000f01a10000500000001010000000000000f5c11000c00000000000000f43210002c000000000000000000000000000000000000005c8f110020331000000000000000000030331000010000000000000001000000543a3a42616c616e636500006d3810002600000056657374696e675363686564756c653c543a3a42616c616e63652c20543a3a426c6f636b4e756d6265723e003b0000000000000001000000520000003738100036000000b7351000270000005c8f110000000000de351000500000002e3610005d0000008b36100055000000e03610004f0000002f3710005100000080371000150000005c8f110000000000953710005d000000f2371000450000003b000000000000000100000054000000663310005d000000c3331000270000005c8f110000000000ea3310005b00000045341000490000005c8f1100000000008e3410005d000000eb3410002d0000005c8f110000000000183510005900000071351000460000005665633c42616c616e63654c6f636b3c543a3a42616c616e63652c20543a3a426c6f636b4e756d6265723e3e3b000000000000000100000055000000383310002e00000020416e79206c6971756964697479206c6f636b73206f6e20736f6d65206163636f756e742062616c616e6365732e2054686520616d6f756e74206f66207468652062616c616e6365206f66206120676976656e206163636f756e7420746861742069732065787465726e616c6c792072657365727665643b20746869732063616e207374696c6c2067657420736c61736865642c20627574206765747320736c6173686564206c617374206f6620616c6c2e20546869732062616c616e63652069732061202772657365727665272062616c616e63652074686174206f746865722073756273797374656d732075736520696e206f7264657220746f2073657420617369646520746f6b656e73207468617420617265207374696c6c20276f776e65642720627920746865206163636f756e7420686f6c6465722c20627574207768696368206172652073757370656e6461626c652e205768656e20746869732062616c616e63652066616c6c732062656c6f77207468652076616c7565206f6620604578697374656e7469616c4465706f736974602c207468656e2074686973202772657365727665206163636f756e74272069732064656c657465643a207370656369666963616c6c792c2060526573657276656442616c616e6365602e20606672616d655f73797374656d3a3a4163636f756e744e6f6e63656020697320616c736f2064656c6574656420696620604672656542616c616e63656020697320616c736f207a65726f2028697420616c736f206765747320636f6c6c617073656420746f207a65726f2069662069742065766572206265636f6d6573206c657373207468616e20604578697374656e7469616c4465706f736974602e2920546865202766726565272062616c616e6365206f66206120676976656e206163636f756e742e205468697320697320746865206f6e6c792062616c616e63652074686174206d61747465727320696e207465726d73206f66206d6f7374206f7065726174696f6e73206f6e20746f6b656e732e20497420616c6f6e65206973207573656420746f2064657465726d696e65207468652062616c616e6365207768656e20696e2074686520636f6e747261637420657865637574696f6e20656e7669726f6e6d656e742e205768656e20746869732062616c616e63652066616c6c732062656c6f77207468652076616c7565206f6620604578697374656e7469616c4465706f736974602c207468656e20746865202763757272656e74206163636f756e74272069732064656c657465643a207370656369666963616c6c7920604672656542616c616e6365602e20467572746865722c2074686520604f6e4672656542616c616e63655a65726f602063616c6c6261636b20697320696e766f6b65642c20676976696e672061206368616e636520746f2065787465726e616c206d6f64756c657320746f20636c65616e2075702064617461206173736f6369617465642077697468207468652064656c65746564206163636f756e742e20606672616d655f73797374656d3a3a4163636f756e744e6f6e63656020697320616c736f2064656c657465642069662060526573657276656442616c616e63656020697320616c736f207a65726f2028697420616c736f206765747320636f6c6c617073656420746f207a65726f2069662069742065766572206265636f6d6573206c657373207468616e20604578697374656e7469616c4465706f736974602e20496e666f726d6174696f6e20726567617264696e67207468652076657374696e67206f66206120676976656e206163636f756e742e2054686520746f74616c20756e6974732069737375656420696e207468652073797374656d2e00000000003c3910001200000000000000dc3110000a000000000000005c8f110050391000000000000000000060391000010000000000000000000000b81111000b00000000000000dc3110000a000000000000005c8f1100683910000000000000000000c4111100010000000000000000000000cc1111000b00000000000000dc3110000a000000000000005c8f1100683910000000000000000000d811110001000000000000004578697374656e7469616c4465706f73697400003b00000000000000010000005600000078391000350000003b00000000000000010000005700000020546865206d696e696d756d20616d6f756e7420726571756972656420746f206b65657020616e206163636f756e74206f70656e2e00000000000000b71c1000070000000101000000000000b83a10000d00000000000000c53a100034000000000000000000000000000000000000005c8f1100fc3a100000000000000000000c3b100001000000000000000000000000000000143b1000160000000201010000000000cf6e11000400000000000000d36e11000e000000000000002a3b100012000000000000005c8f11003c3b100000000000000000004c3b100001000000000000000100000000000000c56d1100120000000101000000000000cf6e11000400000000000000e960110007000000000000000000000000000000000000005c8f1100543b10000000000000000000643b10000600000000000000010000005265706f727449644f663c543e4f6666656e636544657461696c733c543a3a4163636f756e7449642c20543a3a4964656e74696669636174696f6e5475706c653e0000003b000000000000000100000052000000fd3c100052000000436f6e63757272656e745265706f727473496e6465785665633c5265706f727449644f663c543e3e3b000000000000000100000055000000b33c10004a0000003b000000000000000100000058000000943b1000440000005c8f110000000000d83b10002f0000005c8f110000000000073c100052000000593c10005a00000020456e756d65726174657320616c6c207265706f727473206f662061206b696e6420616c6f6e672077697468207468652074696d6520746865792068617070656e65642e20416c6c207265706f7274732061726520736f72746564206279207468652074696d65206f66206f6666656e63652e204e6f74652074686174207468652061637475616c2074797065206f662074686973206d617070696e6720697320605665633c75383e602c207468697320697320626563617573652076616c756573206f6620646966666572656e7420747970657320617265206e6f7420737570706f7274656420617420746865206d6f6d656e7420736f2077652061726520646f696e6720746865206d616e75616c2073657269616c697a6174696f6e2e204120766563746f72206f66207265706f727473206f66207468652073616d65206b696e6420746861742068617070656e6564206174207468652073616d652074696d6520736c6f742e20546865207072696d61727920737472756374757265207468617420686f6c647320616c6c206f6666656e6365207265636f726473206b65796564206279207265706f7274206964656e746966696572732e696d2d6f6e6c696e653a6f66666c696e676f74206f766572666c6f7720616674657220616464696e6720612066656520746f2076616c75657472616e7366657220776f756c64206b696c6c206163636f756e74486561644f66566f7465734f66566f7465734f663a73657373696f6e3a6b6579734e6578744b6579734b65794f776e6572416c69766520636f6e7472616374206f7220746f6d6273746f6e6520616c7265616479206578697374735374616b654f6600000000e03e10000700000000000000e83e1000010000000000000000000000f03e1000020000000000000000000000003f100009000000000000005c8f11000000000000000000000000000c3f1000010000000000000000000000143f10000c000000000000008c521100010000000000000000000000203f1000020000000000000000000000303f10000f000000000000008c521100010000000000000000000000403f1000010000000000000000000000483f10000d00000000000000583f1000030000000000000000000000703f100002000000000000004e65775465726d005d41100019000000b7401000550000000c41100051000000456d7074795465726d00000081401000360000004d656d6265724b69636b65642340100051000000744010000d0000004d656d62657252656e6f756e63656400fb3f100028000000566f7465725265706f72746564000000e252110009000000e2521100090000000353110004000000803f100058000000d83f100023000000204120766f7465722028666972737420656c656d656e742920776173207265706f72746564202862797420746865207365636f6e6420656c656d656e742920776974682074686520746865207265706f7274206265696e67207375636365737366756c206f72206e6f742028746869726420656c656d656e74292e2041206d656d626572206861732072656e6f756e6365642074686569722063616e6469646163792e2041206d656d62657220686173206265656e2072656d6f7665642e20546869732073686f756c6420616c7761797320626520666f6c6c6f7765642062792065697468657220604e65775465726d60206f742060456d7074795465726d602e204e6f20286f72206e6f7420656e6f756768292063616e64696461746573206578697374656420666f72207468697320726f756e642e2041206e6577207465726d2077697468206e6577206d656d626572732e205468697320696e64696361746573207468617420656e6f7567682063616e6469646174657320657869737465642c206e6f74207468617420656e6f756768206861766520686173206265656e20656c65637465642e2054686520696e6e65722076616c7565206d757374206265206578616d696e656420666f72207468697320707572706f73652e5665633c284163636f756e7449642c2042616c616e6365293e00003b0000000000000001000000590000003b00000000000000010000005a00000043616e6469646174657352756e6e65727355705175657565644b657973636f6e74726163742073756273797374656d20726573756c74696e6720696e20706f73697469766520696d62616c616e636521000000001442100008000000000000001c4210000200000000000000000000004c4210000a000000000000007365745f6b65797300000000c59b10000400000000000000a54310000700000000000000ac4310000500000000000000e9601100070000009c42100039000000d5421000480000001d431000310000005c8f1100000000004e431000350000005c8f1100000000002d5a11000b0000008343100022000000df2e110016000000a65a11000c0000002053657473207468652073657373696f6e206b6579287329206f66207468652066756e6374696f6e2063616c6c657220746f20606b6579602e20416c6c6f777320616e206163636f756e7420746f20736574206974732073657373696f6e206b6579207072696f7220746f206265636f6d696e6720612076616c696461746f722e205468697320646f65736e27742074616b652065666665637420756e74696c20746865206e6578742073657373696f6e2e20546865206469737061746368206f726967696e206f6620746869732066756e6374696f6e206d757374206265207369676e65642e202d204f286c6f67206e2920696e206e756d626572206f66206163636f756e74732e543a3a4b65797370726f6f660000000000000049bc10000a00000000000000000000001c46100013000000000000000000000000000000000000000000000000000000000000005c8f1100f859100000000000000000003046100001000000000000000100000000000000f36e11000c0000000000000000000000e76f11000c000000000000000000000000000000000000000000000000000000000000005c8f1100c059100000000000000000003846100001000000000000000100000000000000ff6e11000d00000000000000000000000353110004000000000000000000000000000000000000000000000000000000000000005c8f11004046100000000000000000005046100002000000000000000100000000000000ab4110000a0000000000000000000000604610001e000000000000000000000000000000000000000000000000000000000000005c8f110080461000000000000000000090461000020000000000000001000000000000000c6f11001200000000000000000000005bc9100008000000000000000000000000000000000000000000000000000000000000005c8f1100f85910000000000000000000a046100003000000000000000100000000000000c33d1000080000000204010000000000e96011000700000000000000106111000e00000000000000a543100007000000000000005c8f1100b84610000000000000000000c846100004000000000000000000000000000000cb3d1000080000000204010000000000e96011000700000000000000e84610001400000000000000106111000e000000000000005c8f1100fc46100000000000000000000c4710000400000000000000000000005665633c543a3a56616c696461746f7249643e00d34910001f000000b54910001e0000003b0000000000000001000000520000003e4910004e0000008c491000290000005665633c28543a3a56616c696461746f7249642c20543a3a4b657973293e00003b000000000000000100000055000000b74810004f00000006491000380000004a481000200000005c8f1100000000006a4810004d0000003b00000000000000010000005200000023481000270000005c8f1100000000007547100056000000cb47100058000000284b65795479706549642c205665633c75383e293b0000000000000001000000520000002c471000490000005c8f1100000000007547100056000000cb4710005800000020546865206f776e6572206f662061206b65792e20546865207365636f6e64206b65792069732074686520604b657954797065496460202b2074686520656e636f646564206b65792e20546865206669727374206b657920697320616c77617973206044454455505f4b45595f5052454649586020746f206861766520616c6c20746865206461746120696e207468652073616d65206272616e6368206f662074686520747269652e20486176696e6720616c6c206461746120696e207468652073616d65206272616e63682073686f756c642070726576656e7420736c6f77696e6720646f776e206f7468657220717565726965732e20546865206e6578742073657373696f6e206b65797320666f7220612076616c696461746f722e20496e6469636573206f662064697361626c65642076616c696461746f72732e205468652073657420697320636c6561726564207768656e20606f6e5f73657373696f6e5f656e64696e67602072657475726e732061206e657720736574206f66206964656e7469746965732e2054686520717565756564206b65797320666f7220746865206e6578742073657373696f6e2e205768656e20746865206e6578742073657373696f6e20626567696e732c207468657365206b6579732077696c6c206265207573656420746f2064657465726d696e65207468652076616c696461746f7227732073657373696f6e206b6579732e20547275652069662074686520756e6465726c79696e672065636f6e6f6d6963206964656e746974696573206f7220776569676874696e6720626568696e64207468652076616c696461746f727320686173206368616e67656420696e20746865207175657565642076616c696461746f72207365742e2043757272656e7420696e646578206f66207468652073657373696f6e2e205468652063757272656e7420736574206f662076616c696461746f72732e0000000000002c4a100010000000000000003c4a100005000000000000005c8f1100444a10000000000000000000544a1000020000000000000044454455505f4b45595f505245464958265b75385d0000003b00000000000000010000005b000000644a100059000000bd4a10000d0000002055736564206173206669727374206b657920666f7220604e6578744b6579736020616e6420604b65794f776e65726020746f2070757420616c6c20746865206461746120696e746f207468652073616d65206272616e6368206f662074686520747269652e000000000000802711000400000000000000d44b1000020000000000000000000000044c10000f00000000000000000000007c4c10000c000000000000005c8f1100000000000000000000000000884c1000070000000000000000000000c04c10001400000000000000f0f71000010000000000000000000000d44c10000d00000000000000000000003c4d100010000000000000005c8f11000000000000000000000000004c4d10000d0000000000000000000000b44d100012000000000000005c8f1100000000000000000000000000c84d1000090000000000000000000000487210000d00000000000000104e1000010000000000000000000000284e10000d00000000000000000000007657100005000000000000000c3d110011000000000000001436110005000000000000001936110015000000dc551000410000005c8f1100000000001d561000140000003156100012000000435610002b0000005c8f1100000000006e56100057000000c5561000570000001c571000280000005c8f1100000000002d5a11000b000000eb4f10000b000000d05510000c0000004457100032000000a65a11000c00000072656d6f76655f766f74657288551000480000005c8f1100000000002d5a11000b000000eb4f10000b000000d05510000c000000cf5310000d000000a65a11000c0000007265706f72745f646566756e63745f766f746572dc5310005700000033541000570000008a541000170000005c8f110000000000a154100022000000c354100053000000165510002d0000005c8f1100000000002d5a11000b000000eb4f10000b0000004355100045000000cf5310000d000000a65a11000c0000007375626d69745f63616e6469646163798d5210001e0000005c8f110000000000ab52100019000000c45210003b000000ff5210004b0000004a531000550000009f5310000d0000005c8f1100000000002d5a11000b000000eb4f10000b000000ac53100023000000cf5310000d000000a65a11000c00000072656e6f756e63655f63616e6469646163790000235010005400000077501000100000008750100050000000d75010003d00000014511000560000006a511000210000008b51100053000000de51100056000000345210005900000000000000b25a11000300000000000000b55a110023000000904e100057000000e74e1000200000005c8f110000000000074f1000560000005d4f10003d0000005c8f1100000000009a4f1000510000005c8f1100000000002d5a11000b000000eb4f10000b000000f64f1000160000000c50100017000000a65a11000c0000002052656d6f7665206120706172746963756c6172206d656d6265722066726f6d20746865207365742e20546869732069732065666665637469766520696d6d6564696174656c7920616e642074686520626f6e64206f6620746865206f7574676f696e67206d656d62657220697320736c61736865642e20496620612072756e6e65722d757020697320617661696c61626c652c207468656e2074686520626573742072756e6e65722d75702077696c6c2062652072656d6f76656420616e64207265706c6163657320746865206f7574676f696e67206d656d6265722e204f74686572776973652c2061206e65772070687261676d656e20726f756e6420697320737461727465642e204e6f74652074686174207468697320646f6573206e6f7420616666656374207468652064657369676e6174656420626c6f636b206e756d626572206f6620746865206e65787420656c656374696f6e2e20232323232053746174652052656164733a204f28646f5f70687261676d656e29205772697465733a204f28646f5f70687261676d656e292052656e6f756e6365206f6e65277320696e74656e74696f6e20746f20626520612063616e64696461746520666f7220746865206e65787420656c656374696f6e20726f756e642e203320706f74656e7469616c206f7574636f6d65732065786973743a202d20606f726967696e6020697320612063616e64696461746520616e64206e6f7420656c656374656420696e20616e79207365742e20496e207468697320636173652c2074686520626f6e64206973202020756e72657365727665642c2072657475726e656420616e64206f726967696e2069732072656d6f76656420617320612063616e6469646174652e202d20606f726967696e6020697320612063757272656e742072756e6e65722075702e20496e207468697320636173652c2074686520626f6e6420697320756e72657365727665642c2072657475726e656420616e642020206f726967696e2069732072656d6f76656420617320612072756e6e65722e202d20606f726967696e6020697320612063757272656e74206d656d6265722e20496e207468697320636173652c2074686520626f6e6420697320756e726573657276656420616e64206f726967696e20697320202072656d6f7665642061732061206d656d6265722c20636f6e73657175656e746c79206e6f74206265696e6720612063616e64696461746520666f7220746865206e65787420726f756e6420616e796d6f72652e20202053696d696c617220746f205b6072656d6f76655f766f746572605d2c206966207265706c6163656d656e742072756e6e657273206578697374732c20746865792061726520696d6d6564696174656c7920757365642e205375626d6974206f6e6573656c6620666f722063616e6469646163792e20412063616e6469646174652077696c6c206569746865723a2020202d204c6f73652061742074686520656e64206f6620746865207465726d20616e6420666f7266656974207468656972206465706f7369742e2020202d2057696e20616e64206265636f6d652061206d656d6265722e204d656d626572732077696c6c206576656e7475616c6c7920676574207468656972207374617368206261636b2e2020202d204265636f6d6520612072756e6e65722d75702e2052756e6e6572732d75707320617265207265736572766564206d656d6265727320696e2063617365206f6e65206765747320666f72636566756c6c79202020202072656d6f7665642e2052656164733a204f284c6f674e2920476976656e204e2063616e646964617465732e205772697465733a204f283129205265706f727420607461726765746020666f72206265696e6720616e20646566756e637420766f7465722e20496e2063617365206f6620612076616c6964207265706f72742c20746865207265706f727465722069732072657761726465642062792074686520626f6e6420616d6f756e74206f662060746172676574602e204f74686572776973652c20746865207265706f7274657220697473656c662069732072656d6f76656420616e6420746865697220626f6e6420697320736c61736865642e204120646566756e637420766f74657220697320646566696e656420746f2062653a2020202d206120766f7465722077686f73652063757272656e74207375626d697474656420766f7465732061726520616c6c20696e76616c69642e20692e652e20616c6c206f66207468656d20617265206e6f20202020206c6f6e67657220612063616e646964617465206e6f7220616e20616374697665206d656d6265722e2052656164733a204f284e4c6f674d2920676976656e204d2063757272656e742063616e6469646174657320616e64204e20766f74657320666f722060746172676574602e2052656d6f766520606f726967696e60206173206120766f7465722e20546869732072656d6f76657320746865206c6f636b20616e642072657475726e732074686520626f6e642e2052656164733a204f28312920566f746520666f72206120736574206f662063616e6469646174657320666f7220746865207570636f6d696e6720726f756e64206f6620656c656374696f6e2e205468652060766f746573602073686f756c643a2020202d206e6f7420626520656d7074792e2020202d206265206c657373207468616e20746865206e756d626572206f662063616e646964617465732e2055706f6e20766f74696e672c206076616c75656020756e697473206f66206077686f6027732062616c616e6365206973206c6f636b656420616e64206120626f6e6420616d6f756e742069732072657365727665642e2049742069732074686520726573706f6e736962696c697479206f66207468652063616c6c657220746f206e6f7420706c61636520616c6c206f662074686569722062616c616e636520696e746f20746865206c6f636b20616e64206b65657020736f6d6520666f722066757274686572207472616e73616374696f6e732e205772697465733a204f28562920676976656e2060566020766f7465732e205620697320626f756e6465642062792031362e766f7465730000000000eab210000700000000000000000000008c59100021000000000000000000000000000000000000000000000000000000000000005c8f1100f85910000000000000000000b059100001000000000000000100000000000000a24110000900000000000000000000008c59100021000000000000000000000000000000000000000000000000000000000000005c8f1100f85910000000000000000000b859100001000000000000000100000000000000756b11000e00000000000000000000001e61110003000000000000000000000000000000000000000000000000000000000000005c8f1100c05910000000000000000000d059100001000000000000000100000000000000af3d10000700000001010100000000000f5c11000c000000000000000c3d110011000000000000000000000000000000000000005c8f1100f85910000000000000000000d859100001000000000000000100000000000000fd3d10000700000001010000000000000f5c11000c00000000000000824711000c000000000000000000000000000000000000005c8f1100e05910000000000000000000f059100001000000000000000100000000000000984110000a00000000000000000000000c3d110011000000000000000000000000000000000000000000000000000000000000005c8f1100f85910000000000000000000085a10000200000000000000010000005665633c28543a3a4163636f756e7449642c2042616c616e63654f663c543e293e000000ac5b10003c0000005a5b1000520000003b00000000000000010000005c0000000a5b100050000000ca5a1000400000003b000000000000000100000054000000b15a1000190000003b000000000000000100000055000000185a100059000000715a100040000000205468652070726573656e742063616e646964617465206c6973742e20536f72746564206261736564206f6e206163636f756e742069642e20412063757272656e74206d656d6265722063616e206e6576657220656e746572207468697320766563746f7220616e6420697320616c7761797320696d706c696369746c7920617373756d656420746f20626520612063616e6469646174652e204c6f636b6564207374616b65206f66206120766f7465722e20566f746573206f66206120706172746963756c617220766f7465722c20776974682074686520726f756e6420696e646578206f662074686520766f7465732e2054686520746f74616c206e756d626572206f6620766f746520726f756e6473207468617420686176652068617070656e65642c206578636c7564696e6720746865207570636f6d696e67206f6e652e205468652063757272656e742072756e6e6572735f75702e20536f72746564206261736564206f6e206c6f7720746f2068696768206d657269742028776f72736520746f20626573742072756e6e6572292e205468652063757272656e7420656c6563746564206d656d626572736869702e20536f72746564206261736564206f6e206163636f756e742069642e00000000005d10000d00000000000000824711000c000000000000005c8f1100105d100000000000000000005c8f1100000000000000000000000000205d10000a00000000000000824711000c000000000000005c8f11002c5d100000000000000000005c8f11000000000000000000000000003c5d10000e000000000000001e61110003000000000000005c8f11004c5d100000000000000000005c8f11000000000000000000000000005c5d100010000000000000001e61110003000000000000005c8f11006c5d100000000000000000005c8f11000000000000000000000000007c5d10000c000000000000009c6011000e000000000000005c8f1100885d100000000000000000005c8f1100000000000000000043616e646964616379426f6e640000003b00000000000000010000005d000000566f74696e67426f6e6400003b000000000000000100000056000000446573697265644d656d6265727300003b00000000000000010000005e0000004465736972656452756e6e65727355703b00000000000000010000005f0000005465726d4475726174696f6e3b0000000000000001000000600000006e6f206173736f6369617465642076616c696461746f7220494420666f72206163636f756e742e72656769737465726564206475706c6963617465206b657963616e6e6f7420766f7465207768656e206e6f2063616e64696461746573206f72206d656d6265727320657869737463616e6e6f7420766f7465206d6f7265207468616e2063616e6469646174657363616e6e6f7420766f7465206d6f7265207468616e206d6178696d756d20616c6c6f7765646d75737420766f746520666f72206174206c65617374206f6e652063616e6469646174652e63616e6e6f7420766f74652077697468207374616b65206c657373207468616e206d696e696d756d2062616c616e6365766f7465722063616e206e6f742070617920766f74696e6720626f6e6463616e6e6f74207265706f72742073656c667265706f72746572206d757374206265206120766f7465726475706c69636174652063616e646964617465207375626d697373696f6e6d656d6265722063616e6e6f742072652d7375626d69742063616e64696461637972756e6e65722063616e6e6f742072652d7375626d69742063616e64696461637963616e64696461746520646f6573206e6f74206861766520656e6f7567682066756e64736f726967696e206973206e6f7420612063616e6469646174652c206d656d626572206f7220612072756e6e65722e6d757374206265206120766f74657200000000441d11000800000000000000b0601000010000000000000000000000b8601000010000000000000000000000c06010000800000000000000c8601000010000000000000000000000d0601000010000000000000000000000d86010000700000000000000e0601000030000000000000000000000f8601000010000000000000000000000006110000500000000000000c860100001000000000000000000000008611000010000000000000000000000106110000800000000000000c860100001000000000000000000000018611000010000000000000000000000206110000700000000000000c8601000010000000000000000000000286110000100000000000000a8b210000d000000196210000e0000005370656e64696e679b1f110007000000df6110003a0000004177617264656400a8b210000d0000009b1f110007000000e252110009000000bf611000200000004275726e740000009c61100023000000526f6c6c6f766572506110004c0000004465706f73697400306110002000000020536f6d652066756e64732068617665206265656e206465706f73697465642e205370656e64696e67206861732066696e69736865643b20746869732069732074686520616d6f756e74207468617420726f6c6c73206f76657220756e74696c206e657874207370656e642e20536f6d65206f66206f75722066756e64732068617665206265656e206275726e742e20536f6d652066756e64732068617665206265656e20616c6c6f63617465642e205765206861766520656e6465642061207370656e6420706572696f6420616e642077696c6c206e6f7720616c6c6f636174652066756e64732e204e65772070726f706f73616c2e6f766572666c6f77206d756c7469706c79696e6720676173206c696d6974206279207072696365656e74697265206e65775f7365742077617320676976656e20746f206275696c645f737570706f72745f6d61703b20656e20656e747279206d757374206265206372656174656420666f722065616368206974656d3b207165640000000000000000617474656d707420746f20646976696465206279207a65726f496e636f6e73697374656e74207374617465202d20636f756c646e277420736574746c6520696d62616c616e636520666f722066756e6473207370656e7420627920747265617375727952616e646f6d4d6174657269616c486973746f726963616c53657373696f6e730000000000b86310000d00000000000000c8631000020000000000000000000000f8631000090000000000000000000000406410000f000000000000005064100001000000000000000000000068641000070000000000000000000000a0641000100000000000000050641000010000000000000000000000b0641000080000000000000070726f706f73655f7370656e64000000000000001436110005000000000000001936110015000000000000008e6610000b00000000000000b55a110023000000bc6510004b000000076610004d00000054661000150000005c8f1100000000002d5a11000b000000385a110008000000405a1100190000006966100025000000a65a11000c00000072656a6563745f70726f706f73616c0000000000b16510000b00000000000000c9b6100016000000726510003f0000005c8f1100000000002d5a11000b000000385a110008000000405a110019000000312f110010000000a65a11000c000000617070726f76655f70726f706f73616cf064100057000000476510002b0000005c8f1100000000002d5a11000b000000385a110008000000405a1100190000004d5b110011000000a65a11000c00000020417070726f766520612070726f706f73616c2e2041742061206c617465722074696d652c207468652070726f706f73616c2077696c6c20626520616c6c6f636174656420746f207468652062656e656669636961727920616e6420746865206f726967696e616c206465706f7369742077696c6c2062652072657475726e65642e2052656a65637420612070726f706f736564207370656e642e20546865206f726967696e616c206465706f7369742077696c6c20626520736c61736865642e70726f706f73616c5f69642050757420666f727761726420612073756767657374696f6e20666f72207370656e64696e672e2041206465706f7369742070726f706f7274696f6e616c20746f207468652076616c756520697320726573657276656420616e6420736c6173686564206966207468652070726f706f73616c2069732072656a65637465642e2049742069732072657475726e6564206f6e6365207468652070726f706f73616c20697320617761726465642e202d204f6e65204442206368616e67652c206f6e6520657874726120444220656e7472792e62656e656669636961727900000000000000ac7411000d0000000000000000000000a8b210000d000000000000000000000000000000000000000000000000000000000000005c8f1100a46710000000000000000000b467100001000000000000000100000000000000e1b21000090000000101000000000000a8b210000d00000000000000bc67100024000000000000000000000000000000000000005c8f1100e06710000000000000000000f067100001000000000000000000000000000000b9741100090000000000000000000000f867100012000000000000000000000000000000000000000000000000000000000000005c8f1100cc6c100000000000000000000c6810000100000000000000010000003b00000000000000010000005c000000716810002900000050726f706f73616c3c543a3a4163636f756e7449642c2042616c616e63654f663c543e3e3b000000000000000100000052000000526810001f0000005665633c50726f706f73616c496e6465783e0000146810003e0000002050726f706f73616c20696e646963657320746861742068617665206265656e20617070726f76656420627574206e6f742079657420617761726465642e2050726f706f73616c7320746861742068617665206265656e206d6164652e204e756d626572206f662070726f706f73616c7320746861742068617665206265656e206d6164652e0000000000007c6910000c000000000000008869100007000000000000005c8f1100906910000000000000000000a0691000020000000000000000000000b06910001300000000000000824711000c000000000000005c8f1100c46910000000000000000000d4691000010000000000000000000000dc6910000b000000000000009c6011000e000000000000005c8f1100e86910000000000000000000f8691000010000000000000000000000006a100004000000000000008869100007000000000000005c8f1100046a10000000000000000000146a1000010000000000000050726f706f73616c426f6e645065726d696c6c003b000000000000000100000061000000d46a100055000000296b10004400000050726f706f73616c426f6e644d696e696d756d003b000000000000000100000056000000826a1000520000005370656e64506572696f64003b000000000000000100000062000000606a1000220000004275726e3b0000000000000001000000630000001c6a1000440000002050657263656e74616765206f662073706172652066756e64732028696620616e7929207468617420617265206275726e7420706572207370656e6420706572696f642e20506572696f64206265747765656e2073756363657373697665207370656e64732e204d696e696d756d20616d6f756e74206f662066756e647320746861742073686f756c6420626520706c6163656420696e2061206465706f73697420666f72206d616b696e6720612070726f706f73616c2e204672616374696f6e206f6620612070726f706f73616c27732076616c756520746861742073686f756c6420626520626f6e64656420696e206f7264657220746f20706c616365207468652070726f706f73616c2e20416e2061636365707465642070726f706f73616c2067657473207468657365206261636b2e20412072656a65637465642070726f706f73616c20646f6573206e6f742e0000000000000093741100110000000000000000000000c86b10000a000000000000000000000000000000000000000000000000000000000000005c8f1100d46b100000000000000000005c8f11000000000000000000010000004d756c7469706c69657200003b00000000000000010000005300000000000000e01111001200000000000000824711000c000000000000005c8f1100546c10000000000000000000f4111100010000000000000000000000fc1111001200000000000000824711000c000000000000005c8f1100646c100000000000000000002012110001000000000000003b0000000000000001000000570000003b00000000000000010000006400000000000000136310000e000000000000000000000067b810000c000000000000000000000000000000000000000000000000000000000000005c8f1100cc6c10000000000000000000dc6c10000300000000000000010000003b000000000000000100000055000000f46c1000580000004c6d100058000000a46d10001100000020536572696573206f6620626c6f636b20686561646572732066726f6d20746865206c61737420383120626c6f636b73207468617420616374732061732072616e646f6d2073656564206d6174657269616c2e205468697320697320617272616e67656420617320612072696e672062756666657220776974682060626c6f636b5f6e756d626572202520383160206265696e672074686520696e64657820696e746f20746865206056656360206f6620746865206f6c6465737420686173682e00000000000000c06e10000b000000000000005c8f1100000000000000000000000000cc6e1000010000000000000000000000d46e10000d000000000000005c8f1100000000000000000000000000e46e1000010000000000000000000000ec6e10000e000000000000005c8f1100000000000000000000000000fc6e1000010000000000000000000000046f10000c000000000000005c8f1100000000000000000000000000106f1000010000000000000000000000805211000a000000000000005c8f1100000000000000000000000000186f1000010000000000000000000000206f10000500000000000000286f1000010000000000000000000000306f100001000000000000004d656d6265724164646564005d701000390000004d656d62657252656d6f766564000000227010003b0000004d656d62657273537761707065640000eb6f1000370000004d656d626572735265736574a56f100046000000836f10002200000044756d6d79000000546f10002f000000386f10001c000000205068616e746f6d206d656d6265722c206e6576657220757365642e73705f7374643a3a6d61726b65723a3a5068616e746f6d446174613c284163636f756e7449642c204576656e74293e204f6e65206f6620746865206d656d6265727327206b657973206368616e6765642e20546865206d656d62657273686970207761732072657365743b2073656520746865207472616e73616374696f6e20666f722077686f20746865206e6577207365742069732e2054776f206d656d62657273207765726520737761707065643b2073656520746865207472616e73616374696f6e20666f722077686f2e2054686520676976656e206d656d626572207761732072656d6f7665643b2073656520746865207472616e73616374696f6e20666f722077686f2e2054686520676976656e206d656d626572207761732061646465643b2073656520746865207472616e73616374696f6e20666f722077686f2e50726576696f7573206d617463682061726d206d61746368657320616e7974696e67206c657373207468616e20325e33303b20716564000000000000000000000000e07010003d000000736869667465642073756666696369656e74206269747320726967687420746f206c656164206f6e6c79206c656164696e67207a65726f733b2071656400000000000000000000000000000000000000000000000c7210000a000000000000001872100001000000000000000000000030721000030000000000000000000000487210000d000000000000001872100001000000000000000000000058721000030000000000000000000000707210000b000000000000007c721000020000000000000000000000ac721000030000000000000000000000c47210000d00000000000000d4721000010000000000000000000000ec7210000400000000000000000000000c7310000a00000000000000187310000100000000000000000000003073100003000000000000006164645f6d656d626572000000000000b25a110003000000000000000f5c11000c0000001d7510001f0000005c8f1100000000003c7510002d00000072656d6f76655f6d656d626572000000c9741000240000005c8f110000000000ed74100030000000737761705f6d656d6265720000000000c074100006000000000000000f5c11000c00000000000000c674100003000000000000000f5c11000c00000062741000300000005c8f110000000000927410002e00000072657365745f6d656d62657273000000000000005b74100007000000000000000c3d110011000000bb73100056000000117410001b0000005c8f1100000000002c7410002f0000006368616e67655f6b65790000000000005e5b110003000000000000000f5c11000c00000048731000360000005c8f1100000000007e7310003d0000002053776170206f7574207468652073656e64696e67206d656d62657220666f7220736f6d65206f74686572206b657920606e6577602e204d6179206f6e6c792062652063616c6c65642066726f6d20605369676e656460206f726967696e206f6620612063757272656e74206d656d6265722e204368616e676520746865206d656d6265727368697020746f2061206e6577207365742c20646973726567617264696e6720746865206578697374696e67206d656d626572736869702e204265206e69636520616e64207061737320606d656d6265727360207072652d736f727465642e204d6179206f6e6c792062652063616c6c65642066726f6d206052657365744f726967696e60206f7220726f6f742e6d656d626572732053776170206f7574206f6e65206d656d626572206072656d6f76656020666f7220616e6f746865722060616464602e204d6179206f6e6c792062652063616c6c65642066726f6d2060537761704f726967696e60206f7220726f6f742e72656d6f76656164642052656d6f76652061206d656d626572206077686f602066726f6d20746865207365742e204d6179206f6e6c792062652063616c6c65642066726f6d206052656d6f76654f726967696e60206f7220726f6f742e204164642061206d656d626572206077686f6020746f20746865207365742e204d6179206f6e6c792062652063616c6c65642066726f6d20604164644f726967696e60206f7220726f6f742e496e7374616e6365314d656d6265727368697000000000eab210000700000000000000000000000c3d110011000000000000000000000000000000000000000000000000000000000000005c8f1100d47510000000000000000000e47510000100000000000000010000003b000000000000000100000055000000ec75100032000000205468652063757272656e74206d656d626572736869702c2073746f72656420617320616e206f726465726564205665632e616c72656164792061206d656d6265726e6f742061206d656d626572417574686f723b000000000000000100000065000000660000006700000068000000690000006a000000546f6f206d616e7920756e636c65737375627374726174652d6e6f6465000000df6acb689907609b0200000037e397fc7c91f5e40100000040fe3ad401f8959a04000000d2bc9897eed08f1501000000f78b278be53f454c01000000ed99c5acb25eedf502000000cbca25e39f14238701000000687ad44ad37f03c201000000bc9d89904f5b923f0100000068b66ba122c93fa70100000037c8bb1350a9a2a801000000ab3c0572291feb8b010000006772616e62616265696d6f6e617564690000000040787d010065cd1d00e1f505d85aae1ec0542205b0508f1f38e4750488467020d853e903603c5121d0bf760338323222a8591903402013236039cd02480ef423a82a8f0268f8d42470955c02b8dab525c05a3302d8c4962648bd1102e0b27727a855f601e8a05828e8fedf0180773929c0cacd01586d1a2af8f1be019053fb2a50d8b201d00edc2be0fca80138edbc2c48f2a001e06d9d2d80669a01c80d7e2e500f9501c0575e2f08b6900140323f30e0278d0148202031b0418a0108a3ff3120e8870120bedf32f0fb85013856c03398698401f0fda03478218301b8d87f35d8178201d8c26036183d8101b8223e37508d800188d21c38c8fc7f0168b5f93898877f01a829d139d8297f0120d6ab3ab8db7e0168ae803b389d7e0100ca9a3b68957e01000000001198100006000000000000006b000000000000000000000000000000000000000000000000000000000000006c0000000000000000000000000000006d0000000000000000000000000000006e0000000000000000000000000000006f000000000000000000000000000000d88210000700000002000000000000000000000000000000000000000000000000000000000000000000000070000000000000000000000000000000710000000000000000000000000000006e0000000000000000000000000000006e0000000000000000000000000000003a631100040000000000000072000000000000000000000000000000000000000000000000000000000000006e00000000000000000000000200000000000000000000000000000000000000730000000000000000000000000000006e00000000000000000000000000000079741100090000000000000074000000000000000000000000000000000000000000000000000000000000007500000000000000000000000200000000000000000000000000000000000000760000000000000000000000000000006e000000000000000000000000000000246311000a00000000000000770000000000000000000000000000000000000000000000000000000000000078000000000000000000000002000000000000000000000000000000000000006e0000000000000000000000000000006e000000000000000000000000000000b5b21000070000000000000079000000000000000000000000000000000000000000000000000000000000006e0000000000000000000000000000007a0000000000000000000000000000006e0000000000000000000000000000006e0000000000000000000000000000008b74110008000000000000007b000000000000000000000000000000000000000000000000000000000000007c0000000000000000000000000000007d0000000000000000000000000000007e0000000000000000000000000000006e000000000000000000000000000000df82100012000000000000007f000000000000000000000000000000000000000000000000000000020000000000000000000000000000000200000000000000000000000000000000000000800000000000000000000000000000006e000000000000000000000000000000167011000700000000000000810000000000000000000000000000000000000000000000000000000000000082000000000000000000000000000000830000000000000000000000000000008400000000000000000000000000000085000000000000000000000000000000ec6e1100070000000000000086000000000000000000000000000000000000000000000000000000000000008700000000000000000000000000000088000000000000000000000000000000890000000000000000000000000000006e0000000000000000000000000000003a6b110009000000000000008a000000000000000000000000000000000000000000000000000000000000008b0000000000000000000000000000008c0000000000000000000000000000008d0000000000000000000000000000006e000000000000000000000000000000f182100007000000000000008e000000000000000000000000000000000000000000000000000000000000008f000000000000000000000000000000900000000000000000000000000000006e0000000000000000000000000000006e000000000000000000000000000000f8821000120000000000000091000000000000000000000000000000000000000000000000000000000000008f000000000000000000000000000000900000000000000000000000000000006e0000000000000000000000000000006e0000000000000000000000000000000a831000090000000000000092000000000000000000000000000000000000000000000000000000000000009300000000000000000000000000000094000000000000000000000000000000950000000000000000000000000000006e000000000000000000000000000000138310001300000000000000960000000000000000000000000000000000000000000000000000000000000097000000000000000000000000000000980000000000000000000000000000006e0000000000000000000000000000006e000000000000000000000000000000268310000f00000002000000000000000000000000000000000000000000000000000000000000000000000099000000000000000000000002000000000000000000000000000000000000009a0000000000000000000000000000006e0000000000000000000000000000003583100007000000000000009b000000000000000000000000000000000000000000000000000000000000009c0000000000000000000000000000009d0000000000000000000000000000006e0000000000000000000000000000006e000000000000000000000000000000a474110008000000000000009e000000000000000000000000000000000000000000000000000000000000009f000000000000000000000000000000a0000000000000000000000000000000a1000000000000000000000000000000a20000000000000000000000000000003c8310000900000000000000a300000000000000000000000000000000000000000000000000000000000000a4000000000000000000000000000000a5000000000000000000000000000000a60000000000000000000000000000006e000000000000000000000000000000af5b11000400000000000000a700000000000000000000000000000000000000000000000000000000000000a8000000000000000000000000000000a90000000000000000000000000000006e000000000000000000000000000000aa000000000000000000000000000000a36d11000800000000000000ab00000000000000000000000000000000000000000000000000000000000000ac000000000000000000000000000000ad0000000000000000000000000000006e0000000000000000000000000000006e0000000000000000000000000000000e631100120000000200000000000000000000000000000000000000000000000000000000000000000000006e000000000000000000000002000000000000000000000000000000000000006e0000000000000000000000000000006e000000000000000000000000000000bd6d11000800000000000000ae000000000000000000000000000000000000000000000000000000000000006e000000000000000000000000000000af0000000000000000000000000000006e0000000000000000000000000000006e000000000000000000000000000000458310001800000000000000b0000000000000000000000000000000000000000000000000000000000000006e000000000000000000000002000000000000000000000000000000000000006e0000000000000000000000000000006e0000000000000000000000000000005d8310000500000000000000b100000000000000000000000000000000000000000000000000000000000000b2000000000000000000000000000000b3000000000000000000000000000000b40000000000000000000000000000006e00000000000000000000005574696c6974795472616e73616374696f6e5061796d656e74436f756e63696c546563686e6963616c436f6d6d6974746565456c656374696f6e73546563686e6963616c4d656d6265727368697046696e616c697479547261636b65724772616e647061436f6e74726163747352616e646f6d6e657373436f6c6c656374697665466c69704e69636b73000000000000908310000a000000000000009c831000010000000000000000000000b483100001000000000000007365745f756e636c6573000000000000d58310000a00000000000000df8310000e000000bc831000190000002050726f76696465206120736574206f6620756e636c65732e6e65775f756e636c65735665633c543a3a4865616465723e00000000000000f8841000060000000000000000000000fe8410003a000000000000000000000000000000000000000000000000000000000000005c8f110038851000000000000000000048851000010000000000000001000000000000003a7610000600000000000000000000000f5c11000c000000000000000000000000000000000000000000000000000000000000005c8f110050851000000000000000000060851000010000000000000000000000000000002e6311000c00000000000000000000000353110004000000000000000000000000000000000000000000000000000000000000005c8f110068851000000000000000000078851000010000000000000001000000556e636c65735665633c556e636c65456e7472794974656d3c543a3a426c6f636b4e756d6265722c20543a3a486173682c20543a3a4163636f756e7449643e3e3b000000000000000100000055000000c8851000070000003b000000000000000100000052000000af851000190000003b000000000000000100000052000000808510002f000000205768657468657220756e636c6573207765726520616c72656164792073657420696e207468697320626c6f636b2e20417574686f72206f662063757272656e7420626c6f636b2e20556e636c657372656163686564206d6178696d756d2064657074682c2063616e6e6f7420696e7374616e7469617465b50000001800000004000000b6000000b7000000b8000000b9000000ba000000bb000000696e73756666696369656e742072656d61696e696e672062616c616e63656e6f7420656e6f7567682067617320746f20706179206261736520696e7374616e7469617465206665656e6f7420656e6f7567682067617320746f20706179207472616e736665722066656562616c616e636520746f6f206c6f7720746f2073656e642076616c756576616c756520746f6f206c6f7720746f20637265617465206163636f756e7464657374696e6174696f6e2062616c616e636520746f6f206869676820746f20726563656976652076616c756572656163686564206d6178696d756d2064657074682c2063616e6e6f74206d616b6520612063616c6c6e6f7420656e6f7567682067617320746f2070617920626173652063616c6c20666565636f6e747261637420686173206265656e2065766963746564636f6e74726163742063616e6e6f742062652064657374726f79656420647572696e672072656375727369766520657865637574696f6e61206e657374656420657865637574696f6e20636f6e74657874206d7573742068617665206120706172656e743b20716564556e636c657320616c72656164792073657420696e20626c6f636b2e756e636c6520616c726561647920696e636c75646564756e636c652069732067656e65736973756e636c6520697320746f6f206869676820696e20636861696e756e636c6520706172656e74206e6f7420696e20636861696e756e636c65206e6f7420726563656e7420656e6f75676820746f20626520696e636c756465646888100048000000bb0100002d0000002f72757374632f373661323532656139653762653933613631666664663333623335333365323461396366343539642f7372632f6c6962636f72652f6f70732f61726974682e7273617474656d707420746f20646976696465206279207a65726f756e636c6573303066696e616c6e756d000000000000003e6311000a0000000000000000000000480b110003000000000000000000000000000000000000000000000000000000000000005c8f11004c8c10000000000000000000f48b100001000000000000000100000000000000486311000b0000000000000000000000fc8b100027000000000000000000000000000000000000000000000000000000000000005c8f1100248c10000000000000000000348c100001000000000000000100000000000000536311000b0000000000000000000000480b110003000000000000000000000000000000000000000000000000000000000000005c8f11004c8c100000000000000000003c8c1000020000000000000001000000000000005e6311000b0000000000000000000000480b110003000000000000000000000000000000000000000000000000000000000000005c8f11004c8c100000000000000000005c8c100001000000000000000100000000000000696311000a0000000000000000000000648c100008000000000000000000000000000000000000000000000000000000000000005c8f1100bc8c100000000000000000006c8c10000a000000000000000100000000000000736311000e0000000000000000000000648c100008000000000000000000000000000000000000000000000000000000000000005c8f1100bc8c10000000000000000000cc8c100001000000000000000100000000000000816311000c00000000000000000000001e61110003000000000000000000000000000000000000000000000000000000000000005c8f1100d48c10000000000000000000e48c1000090000000000000001000000000000008d6311001100000001010000000000001e61110003000000000000002c8d10000d000000000000000000000000000000000000005c8f11003c8d100000000000000000005c8f110000000000000000000100000000000000836b11000b00000000000000000000004c8d100008000000000000000000000000000000000000000000000000000000000000005c8f1100548d10000000000000000000648d1000020000000000000000000000af911000150000005665633c28417574686f7269747949642c2042616265417574686f72697479576569676874293e003b000000000000000100000055000000949110001b000000329110003e00000070911000240000003b0000000000000001000000530000001d911000150000005b75383b2033325d578f10002e0000005c8f110000000000858f10000b0000005c8f110000000000908f100041000000d18f10003e0000000f9010004500000054901000450000009990100041000000da901000430000003b0000000000000001000000bc000000408f1000170000003b00000000000000010000005c000000fb8d10001f0000005c8f1100000000001a8e10003d000000578e100040000000978e1000250000005c8f110000000000bc8e10003b000000f78e100042000000398f1000070000005665633c5b75383b2033325d3e0000003b0000000000000001000000550000004d617962655672663b000000000000000100000052000000748d100040000000b48d1000470000002054656d706f726172792076616c75652028636c656172656420617420626c6f636b2066696e616c697a6174696f6e292077686963682069732060536f6d6560206966207065722d626c6f636b20696e697469616c697a6174696f6e2068617320616c7265616479206265656e2063616c6c656420666f722063757272656e7420626c6f636b2e2052616e646f6d6e65737320756e64657220636f6e737472756374696f6e2e205765206d616b6520612074726164656f6666206265747765656e2073746f7261676520616363657373657320616e64206c697374206c656e6774682e2057652073746f72652074686520756e6465722d636f6e737472756374696f6e2072616e646f6d6e65737320696e207365676d656e7473206f6620757020746f2060554e4445525f434f4e535452554354494f4e5f5345474d454e545f4c454e475448602e204f6e63652061207365676d656e7420726561636865732074686973206c656e6774682c20776520626567696e20746865206e657874206f6e652e20576520726573657420616c6c207365676d656e747320616e642072657475726e20746f206030602061742074686520626567696e6e696e67206f662065766572792065706f63682e204e6578742065706f63682072616e646f6d6e6573732e205468652065706f63682072616e646f6d6e65737320666f7220746865202a63757272656e742a2065706f63682e20232053656375726974792054686973204d555354204e4f54206265207573656420666f722067616d626c696e672c2061732069742063616e20626520696e666c75656e6365642062792061206d616c6963696f75732076616c696461746f7220696e207468652073686f7274207465726d2e204974204d4159206265207573656420696e206d616e792063727970746f677261706869632070726f746f636f6c732c20686f77657665722c20736f206c6f6e67206173206f6e652072656d656d626572732074686174207468697320286c696b652065766572797468696e6720656c7365206f6e2d636861696e29206974206973207075626c69632e20466f72206578616d706c652c2069742063616e20626520757365642077686572652061206e756d626572206973206e656564656420746861742063616e6e6f742068617665206265656e2063686f73656e20627920616e206164766572736172792c20666f7220707572706f7365732073756368206173207075626c69632d636f696e207a65726f2d6b6e6f776c656467652070726f6f66732e2043757272656e7420736c6f74206e756d6265722e2054686520736c6f74206174207768696368207468652066697273742065706f63682061637475616c6c7920737461727465642e2054686973206973203020756e74696c2074686520666972737420626c6f636b206f662074686520636861696e2e2043757272656e742065706f636820617574686f7269746965732e2043757272656e742065706f636820696e6465782e00000000349210000d00000000000000480b110003000000000000005c8f1100449210000000000000000000549210000200000000000000000000006492100011000000000000002cab100009000000000000005c8f110078921000000000000000000088921000050000000000000045706f63684475726174696f6e0000003b0000000000000001000000bd000000e093100043000000239410003f0000004578706563746564426c6f636b54696d650000003b0000000000000001000000be000000b092100041000000f19210004400000035931000410000007693100042000000b89310002800000020546865206578706563746564206176657261676520626c6f636b2074696d6520617420776869636820424142452073686f756c64206265206372656174696e6720626c6f636b732e2053696e636520424142452069732070726f626162696c6973746963206974206973206e6f74207472697669616c20746f20666967757265206f7574207768617420746865206578706563746564206176657261676520626c6f636b2074696d652073686f756c64206265206261736564206f6e2074686520736c6f74206475726174696f6e20616e642074686520736563757269747920706172616d657465722060636020287768657265206031202d20636020726570726573656e7473207468652070726f626162696c697479206f66206120736c6f74206265696e6720656d707479292e20546865206e756d626572206f66202a2a736c6f74732a2a207468617420616e2065706f63682074616b65732e20576520636f75706c652073657373696f6e7320746f2065706f6368732c20692e652e2077652073746172742061206e65772073657373696f6e206f6e636520746865206e65772065706f636820626567696e732e65706f636820696e64696365732077696c6c206e6576657220726561636820325e3634206265666f726520746865206465617468206f662074686520756e6976657273653b20716564576974686472617720686173206265656e20636865636b65642061626f76653b0a090909647565735f6c696d69746564203c2072656e745f627564676574203c2062616c616e6365202d2073756273697374656e6365203c2062616c616e6365202d206578697374656e7469616c5f6465706f7369743b0a0909097165640000004d0000000800000004000000bf000000657865632e7072656661625f6d6f64756c652e696e697469616c2063616e27742062652067726561746572207468616e20657865632e7072656661625f6d6f64756c652e6d6178696d756d3b0a09090909090974687573204d656d6f72793a3a6e6577206d757374206e6f74206661696c3b0a09090909090971656474696d657374616d702073657420696e20626c6f636b20646f65736e2774206d6174636820736c6f7420696e207365616c496e686572656e7420776974682073616d65206964656e74696669657220616c726561647920657869737473214e6f206f74686572206572726f72732061726520616363657074656420616674657220616e2068617264206572726f72215468657265206973206f6e6c79206f6e6520666174616c206572726f723b207165640000004d0000000800000004000000c0000000f79610000d000000da9610001b000000f596100002000000a4961000360000003d020000010000002f686f6d652f6461766964642f6465762f7375627374726174652f62696e2f6e6f64652f72756e74696d652f7372632f6c69622e727342616420696e70757420646174612070726f766964656420746f203a20657865637574655f626c6f636b0c97100010000000696e697469616c697a655f626c6f636b249710000f0000006170706c795f65787472696e736963003c97100013000000696e686572656e745f65787472696e7369637300589710000f000000636865636b5f696e686572656e747300709710001400000076616c69646174655f7472616e73616374696f6e8c9710000f0000006f6666636861696e5f776f726b657200a49710000d0000006163636f756e745f6e6f6e6365000000af65110004000000c49710000b0000006765745f73746f7261676500d89710000a00000071756572795f696e666f0000ec9710001500000067656e65726174655f73657373696f6e5f6b6579733a65787472696e7369635f696e64657853797374656d4163636f756e744e6f6e6365426c6f636b486173684e756d626572506172656e744861736845787472696e73696373526f6f74446967657374589810001a0000004552524f523a20436f727275707465642073746174652061742054696d657374616d70206d7573742062652075706461746564206f6e636520696e2074686520626c6f636b4e6f774d0000000800000004000000bf00000054696d657374616d7020746f6f2066617220696e2066757475726520746f206163636570744765747320616e64206465636f6465732074696d657374616d7020696e686572656e7420646174614576656e74734576656e74546f70696373000000000000449a10000a000000000000005c8f1100000000000000000000000000509a1000010000000000000000000000589a10000600000000000000609a1000010000000000000000000000789a1000010000000000000000000000809a10000e00000000000000909a1000010000000000000000000000a89a1000010000000000000000000000b09a10000800000000000000b89a1000010000000000000000000000d09a1000010000000000000000000000d89a10000b00000000000000e49a1000010000000000000000000000fc9a1000010000000000000000000000049b10000c00000000000000109b1000010000000000000000000000289b1000010000000000000000000000309b10000b000000000000003c9b1000010000000000000000000000549b1000010000000000000066696c6c5f626c6f636b0000769c10004800000072656d61726b0000000000006f9c10000700000000000000e960110007000000549c10001b0000007365745f686561705f70616765730000000000004f9c10000500000000000000480b110003000000109c10003f0000007365745f636f6465000000005e5b11000300000000000000e960110007000000fe9b1000120000007365745f73746f726167650000000000ec9b10000500000000000000f19b10000d000000d19b10001b0000006b696c6c5f73746f7261676500000000c59b10000400000000000000c99b100008000000a79b10001e0000006b696c6c5f7072656669780000000000a19b100006000000000000000c5c1100030000005c9b100045000000204b696c6c20616c6c2073746f72616765206974656d7320776974682061206b657920746861742073746172747320776974682074686520676976656e207072656669782e707265666978204b696c6c20736f6d65206974656d732066726f6d2073746f726167652e6b6579735665633c4b65793e2053657420736f6d65206974656d73206f662073746f726167652e6974656d735665633c4b657956616c75653e2053657420746865206e657720636f64652e2053657420746865206e756d626572206f6620706167657320696e2074686520576562417373656d626c7920656e7669726f6e6d656e74277320686561702e7061676573204d616b6520736f6d65206f6e2d636861696e2072656d61726b2e5f72656d61726b20412062696720646973706174636820746861742077696c6c20646973616c6c6f7720616e79206f74686572207472616e73616374696f6e20746f20626520696e636c756465642e000000000000179810000c00000001010000000000000f5c11000c0000000000000038a1100008000000000000000000000000000000000000005c8f110078a21000000000000000000040a110000100000000000000010000000000000048a110000e00000000000000000000001e61110003000000000000000000000000000000000000000000000000000000000000005c8f110094a11000000000000000000058a110000100000000000000000000000000000060a1100013000000000000000000000073a1100006000000000000000000000000000000000000000000000000000000000000005c8f110094a1100000000000000000007ca110000100000000000000000000000000000084a110001000000000000000000000001e61110003000000000000000000000000000000000000000000000000000000000000005c8f110094a110000000000000000000a4a1100001000000000000000000000000000000239810000900000001010000000000009c6011000e000000000000005932110007000000000000000000000000000000000000005c8f1100eca110000000000000000000aca1100001000000000000000100000000000000b4a110000d00000001010000000000001e6111000300000000000000e960110007000000000000000000000000000000000000005c8f1100c4a110000000000000000000d4a11000010000000000000001000000000000002c9810000600000000000000000000009c6011000e000000000000000000000000000000000000000000000000000000000000005c8f110078a210000000000000000000dca1100001000000000000000100000000000000329810000a00000000000000000000005932110007000000000000000000000000000000000000000000000000000000000000005c8f1100eca110000000000000000000e4a11000010000000000000001000000000000003c9810000e00000000000000000000005932110007000000000000000000000000000000000000000000000000000000000000005c8f1100eca110000000000000000000fca11000010000000000000001000000000000004a98100006000000000000000000000004a210000b000000000000000000000000000000000000000000000000000000000000005c8f110010a21000000000000000000020a2100001000000000000000100000000000000fd98100006000000000000000000000028a2100023000000000000000000000000000000000000000000000000000000000000005c8f11004ca2100000000000000000005ca210000100000000000000010000000000000064a210000a00000000000000000000006ea210000a000000000000000000000000000000000000000000000000000000000000005c8f110078a21000000000000000000088a2100001000000000000000100000000000000039910000b000000020101000000000090a21000020000000000000059321100070000000000000092a2100021000000000000005c8f1100b4a210000000000000000000c4a210000d0000000000000001000000543a3a496e64657840a810001f00000045787472696e736963436f756e74000012a810002e000000416c6c45787472696e73696373576569676874576569676874000000cda7100045000000416c6c45787472696e736963734c656e3b0000000000000001000000520000007da710005000000057a710002600000045787472696e736963446174610000003b00000000000000010000005800000008a710004f000000c6a6100042000000aaa610001c0000003b0000000000000001000000c100000065a61000450000004469676573744f663c543e003b00000000000000010000005500000029a610003c0000005665633c4576656e745265636f72643c543a3a4576656e742c20543a3a486173683e3e003b0000000000000001000000c200000001a61000280000004576656e74436f756e744576656e74496e6465783b00000000000000010000005c000000d3a510002e00000028295665633c28543a3a426c6f636b4e756d6265722c204576656e74496e646578293e003b0000000000000001000000550000002ca310004900000075a31000250000005c8f1100000000009aa310004b000000e5a310002a0000005c8f1100000000000fa410005400000063a4100051000000b4a41000390000005c8f110000000000eda410005300000040a510005300000093a5100040000000204d617070696e67206265747765656e206120746f7069632028726570726573656e74656420627920543a3a486173682920616e64206120766563746f72206f6620696e6465786573206f66206576656e747320696e2074686520603c4576656e74733c543e3e60206c6973742e20546865206669727374206b657920736572766573206e6f20707572706f73652e2054686973206669656c64206973206465636c6172656420617320646f75626c655f6d6170206a75737420666f7220636f6e76656e69656e6365206f66207573696e67206072656d6f76655f707265666978602e20416c6c20746f70696320766563746f727320686176652064657465726d696e69737469632073746f72616765206c6f636174696f6e7320646570656e64696e67206f6e2074686520746f7069632e205468697320616c6c6f7773206c696768742d636c69656e747320746f206c6576657261676520746865206368616e67657320747269652073746f7261676520747261636b696e67206d656368616e69736d20616e6420696e2063617365206f66206368616e67657320666574636820746865206c697374206f66206576656e7473206f6620696e7465726573742e205468652076616c756520686173207468652074797065206028543a3a426c6f636b4e756d6265722c204576656e74496e646578296020626563617573652069662077652075736564206f6e6c79206a7573742074686520604576656e74496e64657860207468656e20696e20636173652069662074686520746f70696320686173207468652073616d6520636f6e74656e7473206f6e20746865206e65787420626c6f636b206e6f206e6f74696669636174696f6e2077696c6c20626520747269676765726564207468757320746865206576656e74206d69676874206265206c6f73742e20546865206e756d626572206f66206576656e747320696e2074686520604576656e74733c543e60206c6973742e204576656e7473206465706f736974656420666f72207468652063757272656e7420626c6f636b2e20446967657374206f66207468652063757272656e7420626c6f636b2c20616c736f2070617274206f662074686520626c6f636b206865616465722e2045787472696e7369637320726f6f74206f66207468652063757272656e7420626c6f636b2c20616c736f2070617274206f662074686520626c6f636b206865616465722e2048617368206f66207468652070726576696f757320626c6f636b2e205468652063757272656e7420626c6f636b206e756d626572206265696e672070726f6365737365642e205365742062792060657865637574655f626c6f636b602e2045787472696e73696373206461746120666f72207468652063757272656e7420626c6f636b20286d61707320616e2065787472696e736963277320696e64657820746f206974732064617461292e204d6170206f6620626c6f636b206e756d6265727320746f20626c6f636b206861736865732e20546f74616c206c656e6774682028696e2062797465732920666f7220616c6c2065787472696e736963732070757420746f6765746865722c20666f72207468652063757272656e7420626c6f636b2e20546f74616c2077656967687420666f7220616c6c2065787472696e736963732070757420746f6765746865722c20666f72207468652063757272656e7420626c6f636b2e20546f74616c2065787472696e7369637320636f756e7420666f72207468652063757272656e7420626c6f636b2e2045787472696e73696373206e6f6e636520666f72206163636f756e74732e4e6f646520697320636f6e6669677572656420746f20757365207468652073616d6520686173683b20716564003b00000000000000010000003c00000000000000c8a810000300000000000000cca81000010000000000000000000000e4a810000900000000000000736574000000000066aa1000030000000000000069aa1000120000002ca91000160000005c8f11000000000042a910005600000098a91000360000005c8f110000000000cea91000510000001faa1000110000005c8f11000000000030aa10003600000020536574207468652063757272656e742074696d652e20546869732063616c6c2073686f756c6420626520696e766f6b65642065786163746c79206f6e63652070657220626c6f636b2e2049742077696c6c2070616e6963206174207468652066696e616c697a6174696f6e2070686173652c20696620746869732063616c6c206861736e2774206265656e20696e766f6b656420627920746861742074696d652e205468652074696d657374616d702073686f756c642062652067726561746572207468616e207468652070726576696f7573206f6e652062792074686520616d6f756e742073706563696669656420627920604d696e696d756d506572696f64602e20546865206469737061746368206f726967696e20666f7220746869732063616c6c206d7573742062652060496e686572656e74602e6e6f77436f6d706163743c543a3a4d6f6d656e743e00000000009d9810000300000000000000000000002cab100009000000000000000000000000000000000000000000000000000000000000005c8f110038ab1000000000000000000048ab100001000000000000000100000000000000827411000900000000000000000000000353110004000000000000000000000000000000000000000000000000000000000000005c8f110050ab1000000000000000000060ab1000010000000000000001000000543a3a4d6f6d656e740000003b00000000000000010000005300000095ab1000240000003b00000000000000010000005200000068ab10002d00000020446964207468652074696d657374616d7020676574207570646174656420696e207468697320626c6f636b3f2043757272656e742074696d6520666f72207468652063757272656e7420626c6f636b2e00000000000000f4ab10000d000000000000002cab100009000000000000005c8f110004ac1000000000000000000014ac100004000000000000004d696e696d756d506572696f640000003b0000000000000001000000c300000034ac10005a0000008eac10005a000000e8ac10005900000041ad10001c00000020546865206d696e696d756d20706572696f64206265747765656e20626c6f636b732e204265776172652074686174207468697320697320646966666572656e7420746f20746865202a65787065637465642a20706572696f6420746861742074686520626c6f636b2070726f64756374696f6e206170706172617475732070726f76696465732e20596f75722063686f73656e20636f6e73656e7375732073797374656d2077696c6c2067656e6572616c6c7920776f726b2077697468207468697320746f2064657465726d696e6520612073656e7369626c6520626c6f636b2074696d652e20652e672e20466f7220417572612c2069742077696c6c20626520646f75626c65207468697320706572696f64206f6e2064656661756c742073657474696e67732e3a6865617070616765733a636f646554696d657374616d70206d7573742062652075706461746564206f6e6c79206f6e636520696e2074686520626c6f636b54696d657374616d70206d75737420696e6372656d656e74206279206174206c65617374203c4d696e696d756d506572696f643e206265747765656e2073657175656e7469616c20626c6f636b734469676573744974656d206e6f7420657175616c0000000000002cae10000f000000000000003cae10000200000000000000000000004cae100004000000000000004e65774163636f756e74496e64657800e252110009000000e7ae10000c0000006cae1000220000005c8f1100000000008eae100041000000cfae1000180000002041206e6577206163636f756e7420696e646578207761732061737369676e65642e2054686973206576656e74206973206e6f7420747269676765726564207768656e20616e206578697374696e6720696e64657820697320726561737369676e656420746f20616e6f7468657220604163636f756e744964602e4163636f756e74496e6465780000000000441d11000800000000000000fcaf10000400000000000000000000001cb010000200000000000000000000002cb01000050000000000000034b010000500000000000000000000005cb010000200000000000000000000006cb01000080000000000000090f3100001000000000000000000000074b010000100000000000000000000007cb010000b0000000000000090f3100001000000000000000000000088b01000010000000000000000000000041e1100080000000000000090b01000020000000000000000000000a0b01000010000000000000000000000a8b010000e0000000000000090b01000020000000000000000000000b8b010000100000000000000e252110009000000a8b210000d000000971f1100040000003ab210000b00000045b210005300000098b2100010000000566f746564000000e252110009000000971f11000400000003531100040000003ab210000b0000003ab210000b000000b2b1100042000000f4b1100046000000417070726f76656481b1100031000000446973617070726f766564004cb1100035000000971f11000400000003531100040000000bb11000410000004d656d62657245786563757465640000c0b010004b00000020412073696e676c65206d656d6265722064696420736f6d6520616374696f6e3b2060626f6f6c6020697320747275652069662072657475726e656420776974686f7574206572726f722e2041206d6f74696f6e207761732065786563757465643b2060626f6f6c6020697320747275652069662072657475726e656420776974686f7574206572726f722e2041206d6f74696f6e20776173206e6f7420617070726f76656420627920746865207265717569726564207468726573686f6c642e2041206d6f74696f6e2077617320617070726f76656420627920746865207265717569726564207468726573686f6c642e2041206d6f74696f6e2028676976656e20686173682920686173206265656e20766f746564206f6e20627920676976656e206163636f756e742c206c656176696e6720612074616c6c79202879657320766f74657320616e64206e6f20766f74657320676976656e20726573706563746976656c7920617320604d656d626572436f756e7460292e4d656d626572436f756e742041206d6f74696f6e2028676976656e20686173682920686173206265656e2070726f706f7365642028627920676976656e206163636f756e742920776974682061207468726573686f6c642028676976656e20604d656d626572436f756e7460292e50726f706f73616c496e646578496e64696365734e657874456e756d536574456e756d536574496e7374616e636532436f6c6c65637469766550726f706f73616c734d656d62657273566f74696e670000000000bcb210000b0000000000000000000000a8b310000f000000000000000000000000000000000000000000000000000000000000005c8f110080bb10000000000000000000b8b3100001000000000000000100000000000000c7b21000070000000101000000000000a8b310000f000000000000000c3d110011000000000000000000000000000000000000005c8f110090bb10000000000000000000c0b31000010000000000000001000000543a3a4163636f756e74496e64657800deb310001f000000c8b31000160000002054686520656e756d65726174696f6e20736574732e20546865206e657874206672656520656e756d65726174696f6e207365742e496e7374616e636531436f6c6c656374697665636f6465206973206e6f7420666f756e647072697374696e6520636f6465206973206e6f7420666f756e647468657265206973206e6f7420656e6f7567682067617320666f722073746f72696e672074686520636f6465000000000018b510000b0000000000000024b510000100000000000000000000003cb510000400000000000000000000005cb51000070000000000000064b510000100000000000000000000007cb51000030000000000000000000000c8261100070000000000000094b51000020000000000000000000000c4b51000040000000000000000000000802711000400000000000000e4b510000300000000000000000000002cb6100004000000000000007365745f6d656d6265727300000000005cb810000b000000000000000c3d110011000000dbb71000540000002fb81000170000005c8f11000000000046b8100016000000657865637574650000000000d85a1100080000000000000055b710001e00000073b710003d0000005c8f110000000000b0b710002b0000000000000038b71000090000000000000041b710001400000000000000d85a1100080000000000000055b710001e0000002d5a11000b000000e6b61000240000000ab710002e000000a65a11000c00000000000000d85a11000800000000000000593211000700000000000000c4b610000500000000000000c9b610001600000000000000dfb61000070000000000000003531100040000002d5a11000b0000004cb61000230000006fb6100055000000a65a11000c000000202d20426f756e6465642073746f72616765207265616420616e64207772697465732e202d2057696c6c20626520736c696768746c792068656176696572206966207468652070726f706f73616c20697320617070726f766564202f20646973617070726f7665642061667465722074686520766f74652e696e646578436f6d706163743c50726f706f73616c496e6465783e617070726f7665202d20426f756e6465642073746f7261676520726561647320616e64207772697465732e202d20417267756d656e7420607468726573686f6c6460206861732062656172696e67206f6e207765696768742e7468726573686f6c64436f6d706163743c4d656d626572436f756e743e426f783c3c542061732054726169743c493e3e3a3a50726f706f73616c3e20446973706174636820612070726f706f73616c2066726f6d2061206d656d626572207573696e672074686520604d656d62657260206f726967696e2e204f726967696e206d7573742062652061206d656d626572206f662074686520636f6c6c6563746976652e205365742074686520636f6c6c6563746976652773206d656d62657273686970206d616e75616c6c7920746f20606e65775f6d656d62657273602e204265206e69636520746f2074686520636861696e20616e642070726f76696465206974207072652d736f727465642e20526571756972657320726f6f74206f726967696e2e6e65775f6d656d626572735665633c543a3a486173683e0094b910002400000050726f706f73616c4f663c542061732054726169743c493e3e3a3a50726f706f73616c0061b9100033000000566f7465733c543a3a4163636f756e7449643e0034b910002d00000022b9100012000000d4b810004e000000205468652063757272656e74206d656d62657273206f662074686520636f6c6c6563746976652e20546869732069732073746f72656420736f7274656420286a7573742062792076616c7565292e2050726f706f73616c7320736f206661722e20566f746573206f6e206120676976656e2070726f706f73616c2c206966206974206973206f6e676f696e672e2041637475616c2070726f706f73616c20666f72206120676976656e20686173682c20696620697427732063757272656e742e2054686520686173686573206f6620746865206163746976652070726f706f73616c732e00000000e1b2100009000000000000000000000067b810000c000000000000000000000000000000000000000000000000000000000000005c8f110090bb1000000000000000000074b81000010000000000000001000000000000007cb810000a000000010100000000000059321100070000000000000086b8100019000000000000000000000000000000000000005c8f110070bb10000000000000000000a0b8100001000000000000000000000000000000f1b21000060000000101000000000000593211000700000000000000a8b8100013000000000000000000000000000000000000005c8f110070bb10000000000000000000bcb8100001000000000000000000000000000000ac7411000d00000000000000000000001e61110003000000000000000000000000000000000000000000000000000000000000005c8f110080bb10000000000000000000c4b8100001000000000000000100000000000000eab210000700000000000000000000000c3d110011000000000000000000000000000000000000000000000000000000000000005c8f110090bb10000000000000000000ccb810000100000000000000010000003b0000000000000001000000520000003b00000000000000010000005c0000003b00000000000000010000005500000070726f706f736572206e6f742061206d656d6265726475706c69636174652070726f706f73616c73206e6f7420616c6c6f77656470726f706f73616c206d7573742065786973746d69736d61746368656420696e6465786475706c696361746520766f74652069676e6f726564766f746572206e6f742061206d656d626572486561644f664e6f6d696e61746f72734e6f6d696e61746f7273486561644f6656616c696461746f727356616c696461746f7273426f6e6465644c65646765725374616b65727343757272656e74457261537461727456616c696461746f72536c617368496e4572614e6f6d696e61746f72536c617368496e457261536c617368696e675370616e735370616e536c6173680000000000000038bd1000060000000000000040bd100002000000000000000000000050bd100002000000000000000000000060bd10000500000000000000d8ef100002000000000000000000000068bd100001000000000000000000000070bd10001a00000000000000586f11000100000000000000000000008cbd1000020000000000000052657761726400009b1f1100070000009b1f1100070000003ebe10005400000092be100023000000536c617368000000f5bd1000490000004f6c64536c617368696e675265706f727444697363617264656400009cbd100047000000e3bd10001200000020416e206f6c6420736c617368696e67207265706f72742066726f6d2061207072696f72206572612077617320646973636172646564206265636175736520697420636f756c64206e6f742062652070726f6365737365642e204f6e652076616c696461746f722028616e6420697473206e6f6d696e61746f72732920686173206265656e20736c61736865642062792074686520676976656e20616d6f756e742e20416c6c2076616c696461746f72732068617665206265656e207265776172646564206279207468652066697273742062616c616e63653b20746865207365636f6e64206973207468652072656d61696e6465722066726f6d20746865206d6178696d756d20616d6f756e74206f66207265776172642e506179656543757272656e74456c6563746564536c6f745374616b65556e6170706c696564536c617368657300000000000000a4c110000400000000000000a8c11000030000000000000000000000f0c110000f000000000000000000000068c210000a0000000000000074c210000100000000000000000000008cc210000e0000000000000000000000fcc21000060000000000000004c310000100000000000000000000001cc31000170000000000000000000000d4c3100011000000000000005c8f1100000000000000000000000000e8c3100010000000000000000000000068c41000080000000000000070c4100001000000000000000000000088c410000b0000000000000000000000e0c410000800000000000000e8c4100001000000000000000000000000c510000b000000000000000000000058c5100005000000000000005c8f110000000000000000000000000060c510000b0000000000000000000000b8c510000900000000000000c4c51000010000000000000000000000dcc510000b000000000000000000000034c610000e0000000000000044c610000100000000000000000000005cc610000b0000000000000000000000b4c610001300000000000000c8c61000010000000000000000000000e0c61000010000000000000000000000e8c610000d000000000000005c8f1100000000000000000000000000f8c6100005000000000000000000000020c710000d000000000000005c8f110000000000000000000000000030c7100006000000000000000000000060c71000110000000000000074c710000100000000000000000000008cc7100001000000000000000000000094c710000d00000000000000a4c71000010000000000000000000000bcc71000010000000000000000000000c4c7100014000000000000005c8f1100000000000000000000000000d8c7100005000000000000000000000000c81000150000000000000018c8100002000000000000000000000048c810000700000000000000626f6e640000000062cc10000a00000000000000b55a11002300000000000000143611000500000000000000193611001500000000000000efcc10000500000000000000f4cc100011000000c7d510005900000020d61000210000005c8f11000000000041d610004c0000005c8f1100000000008dd61000490000005c8f1100000000002d5a11000b000000d6d6100035000000385a1100080000000bd710001a0000005c8f11000000000025d710005b00000080d7100049000000a65a11000c000000626f6e645f6578747261000000000000b9d510000e00000000000000193611001500000093d4100059000000ecd410000d0000005c8f110000000000f9d41000540000004dd5100059000000a6d51000130000005c8f1100000000007bcb1000550000005c8f1100000000002d5a11000b000000d0cb10003a000000385a110008000000d235110010000000a65a11000c000000756e626f6e640000000000001436110005000000000000001936110015000000b8d01000550000000dd11000400000004dd11000490000005c8f11000000000096d1100052000000e8d11000300000005c8f11000000000018d210004f00000067d210004f000000b6d210003f0000005c8f1100000000009acc1000550000005c8f110000000000f5d21000260000005c8f1100000000002d5a11000b0000001bd31000500000000acc1000260000006bd3100059000000c4d310005c00000020d4100069000000d23511001000000089d410000a00000077697468647261775f756e626f6e646564000000b1ce10004b0000005c8f110000000000fcce10004d00000049cf1000130000005c8f1100000000009acc1000550000005c8f1100000000005ccf10001b0000005c8f1100000000002d5a11000b00000077cf100055000000cccf1000510000001dd010003d0000005ad010005e00000030cc100032000000a65a11000c00000076616c6964617465000000009ece10000500000000000000a3ce10000e00000064ce10003a0000005c8f11000000000044cb1000370000005c8f1100000000009acc1000550000005c8f1100000000002d5a11000b000000d0cb10003a0000000acc10002600000030cc100032000000a65a11000c0000006e6f6d696e6174650000000035ce100007000000000000003cce1000280000004ccd1000440000005c8f11000000000044cb1000370000005c8f1100000000009acc1000550000005c8f1100000000002d5a11000b00000090cd100049000000d9cd100026000000ffcd100036000000a65a11000c0000006368696c6c00000005cd1000320000005c8f11000000000044cb1000370000005c8f1100000000009acc1000550000005c8f1100000000002d5a11000b000000d0cb10003a00000037cd10001500000030cc100032000000a65a11000c0000007365745f706179656500000000000000efcc10000500000000000000f4cc1000110000006ccc10002e0000005c8f11000000000044cb1000370000005c8f1100000000009acc1000550000005c8f1100000000002d5a11000b000000d0cb10003a0000000acc10002600000030cc100032000000a65a11000c0000007365745f636f6e74726f6c6c657200000000000062cc10000a00000000000000b55a11002300000020cb1000240000005c8f11000000000044cb1000370000005c8f1100000000007bcb1000550000005c8f1100000000002d5a11000b000000d0cb10003a0000000acc10002600000030cc100032000000a65a11000c0000007365745f76616c696461746f725f636f756e7400000000005e5b1100030000000000000014cb10000c000000f4ca100020000000666f7263655f6e6f5f65726173000000c8ca10002c0000005c8f1100000000002d5a11000b000000b8ca100010000000a65a11000c000000666f7263655f6e65775f6572610000003dca10005300000090ca1000280000005c8f1100000000002d5a11000b000000b8ca100010000000a65a11000c0000007365745f696e76756c6e657261626c65730000000000000033ca10000a000000000000000c3d11001100000000ca100033000000666f7263655f756e7374616b6500000000000000fbc9100005000000000000000f5c11000c000000b8c9100043000000666f7263655f6e65775f6572615f616c7761797363c91000410000005c8f1100000000002d5a11000b000000a4c9100014000000a65a11000c00000063616e63656c5f64656665727265645f736c6173680000000000000043c91000030000000000000046c9100008000000000000004ec910000d000000000000005bc910000800000080c8100051000000d1c810001c000000edc81000410000005c8f1100000000002d5a11000b0000002ec9100015000000a65a11000c0000002043616e63656c20656e6163746d656e74206f66206120646566657272656420736c6173682e2043616e2062652063616c6c6564206279206569746865722074686520726f6f74206f726967696e206f72207468652060543a3a536c61736843616e63656c4f726967696e602e2070617373696e67207468652065726120616e6420696e6469636573206f662074686520736c617368657320666f7220746861742065726120746f206b696c6c2e202d204f6e652073746f726167652077726974652e657261457261496e646578736c6173685f696e64696365735665633c7533323e20466f72636520746865726520746f2062652061206e6577206572612061742074686520656e64206f662073657373696f6e7320696e646566696e6974656c792e202d204f6e652073746f7261676520777269746520466f72636520612063757272656e74207374616b657220746f206265636f6d6520636f6d706c6574656c7920756e7374616b65642c20696d6d6564696174656c792e737461736820536574207468652076616c696461746f72732077686f2063616e6e6f7420626520736c61736865642028696620616e79292e76616c696461746f727320466f72636520746865726520746f2062652061206e6577206572612061742074686520656e64206f6620746865206e6578742073657373696f6e2e20416674657220746869732c2069742077696c6c20626520726573657420746f206e6f726d616c20286e6f6e2d666f7263656429206265686176696f75722e202d204e6f20617267756d656e74732e20466f72636520746865726520746f206265206e6f206e6577206572617320696e646566696e6974656c792e2054686520696465616c206e756d626572206f662076616c696461746f72732e436f6d706163743c7533323e202852652d297365742074686520636f6e74726f6c6c6572206f6620612073746173682e20456666656374732077696c6c2062652066656c742061742074686520626567696e6e696e67206f6620746865206e657874206572612e20546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f206279207468652073746173682c206e6f742074686520636f6e74726f6c6c65722e202d20496e646570656e64656e74206f662074686520617267756d656e74732e20496e7369676e69666963616e7420636f6d706c65786974792e202d20436f6e7461696e732061206c696d69746564206e756d626572206f662072656164732e202d2057726974657320617265206c696d6974656420746f2074686520606f726967696e60206163636f756e74206b65792e636f6e74726f6c6c6572202852652d2973657420746865207061796d656e742074617267657420666f72206120636f6e74726f6c6c65722e20546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2062792074686520636f6e74726f6c6c65722c206e6f74207468652073746173682e706179656552657761726444657374696e6174696f6e204465636c617265206e6f2064657369726520746f206569746865722076616c6964617465206f72206e6f6d696e6174652e202d20436f6e7461696e73206f6e6520726561642e204465636c617265207468652064657369726520746f206e6f6d696e6174652060746172676574736020666f7220746865206f726967696e20636f6e74726f6c6c65722e202d20546865207472616e73616374696f6e277320636f6d706c65786974792069732070726f706f7274696f6e616c20746f207468652073697a65206f66206074617267657473602c2077686963682069732063617070656420617420604d41585f4e4f4d494e4154494f4e53602e202d20426f74682074686520726561647320616e642077726974657320666f6c6c6f7720612073696d696c6172207061747465726e2e746172676574735665633c3c543a3a4c6f6f6b7570206173205374617469634c6f6f6b75703e3a3a536f757263653e204465636c617265207468652064657369726520746f2076616c696461746520666f7220746865206f726967696e20636f6e74726f6c6c65722e707265667356616c696461746f7250726566732052656d6f766520616e7920756e6c6f636b6564206368756e6b732066726f6d207468652060756e6c6f636b696e67602071756575652066726f6d206f7572206d616e6167656d656e742e205468697320657373656e7469616c6c7920667265657320757020746861742062616c616e636520746f206265207573656420627920746865207374617368206163636f756e7420746f20646f2077686174657665722069742077616e74732e2053656520616c736f205b6043616c6c3a3a756e626f6e64605d2e202d20436f756c6420626520646570656e64656e74206f6e2074686520606f726967696e6020617267756d656e7420616e6420686f77206d7563682060756e6c6f636b696e6760206368756e6b732065786973742e2020497420696d706c6965732060636f6e736f6c69646174655f756e6c6f636b656460207768696368206c6f6f7073206f76657220604c65646765722e756e6c6f636b696e67602c2077686963682069732020696e6469726563746c7920757365722d636f6e74726f6c6c65642e20536565205b60756e626f6e64605d20666f72206d6f72652064657461696c2e202d20436f6e7461696e732061206c696d69746564206e756d626572206f662072656164732c20796574207468652073697a65206f6620776869636820636f756c64206265206c61726765206261736564206f6e20606c6564676572602e205363686564756c65206120706f7274696f6e206f662074686520737461736820746f20626520756e6c6f636b656420726561647920666f72207472616e73666572206f75742061667465722074686520626f6e6420706572696f6420656e64732e2049662074686973206c656176657320616e20616d6f756e74206163746976656c7920626f6e646564206c657373207468616e20543a3a43757272656e63793a3a6d696e696d756d5f62616c616e636528292c207468656e20697420697320696e6372656173656420746f207468652066756c6c20616d6f756e742e204f6e63652074686520756e6c6f636b20706572696f6420697320646f6e652c20796f752063616e2063616c6c206077697468647261775f756e626f6e6465646020746f2061637475616c6c79206d6f7665207468652066756e6473206f7574206f66206d616e6167656d656e7420726561647920666f72207472616e736665722e204e6f206d6f7265207468616e2061206c696d69746564206e756d626572206f6620756e6c6f636b696e67206368756e6b73202873656520604d41585f554e4c4f434b494e475f4348554e4b5360292063616e20636f2d657869737473206174207468652073616d652074696d652e20496e207468617420636173652c205b6043616c6c3a3a77697468647261775f756e626f6e646564605d206e65656420746f2062652063616c6c656420666972737420746f2072656d6f766520736f6d65206f6620746865206368756e6b732028696620706f737369626c65292e2053656520616c736f205b6043616c6c3a3a77697468647261775f756e626f6e646564605d2e202d20496e646570656e64656e74206f662074686520617267756d656e74732e204c696d697465642062757420706f74656e7469616c6c79206578706c6f697461626c6520636f6d706c65786974792e202d20456163682063616c6c20287265717569726573207468652072656d61696e646572206f662074686520626f6e6465642062616c616e636520746f2062652061626f766520606d696e696d756d5f62616c616e6365602920202077696c6c2063617573652061206e657720656e74727920746f20626520696e73657274656420696e746f206120766563746f722028604c65646765722e756e6c6f636b696e676029206b65707420696e2073746f726167652e202020546865206f6e6c792077617920746f20636c65616e207468652061666f72656d656e74696f6e65642073746f72616765206974656d20697320616c736f20757365722d636f6e74726f6c6c656420766961206077697468647261775f756e626f6e646564602e203c2f7765696768743e2041646420736f6d6520657874726120616d6f756e742074686174206861766520617070656172656420696e207468652073746173682060667265655f62616c616e63656020696e746f207468652062616c616e636520757020666f72207374616b696e672e20557365207468697320696620746865726520617265206164646974696f6e616c2066756e647320696e20796f7572207374617368206163636f756e74207468617420796f75207769736820746f20626f6e642e20556e6c696b65205b60626f6e64605d206f72205b60756e626f6e64605d20746869732066756e6374696f6e20646f6573206e6f7420696d706f736520616e79206c696d69746174696f6e206f6e2074686520616d6f756e7420746861742063616e2062652061646465642e6d61785f6164646974696f6e616c2054616b6520746865206f726967696e206163636f756e74206173206120737461736820616e64206c6f636b207570206076616c756560206f66206974732062616c616e63652e2060636f6e74726f6c6c6572602077696c6c20626520746865206163636f756e74207468617420636f6e74726f6c732069742e206076616c756560206d757374206265206d6f7265207468616e2074686520606d696e696d756d5f62616c616e636560207370656369666965642062792060543a3a43757272656e6379602e20546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f20627920746865207374617368206163636f756e742e202d20496e646570656e64656e74206f662074686520617267756d656e74732e204d6f64657261746520636f6d706c65786974792e202d20546872656520657874726120444220656e74726965732e204e4f54453a2054776f206f66207468652073746f726167652077726974657320286053656c663a3a626f6e646564602c206053656c663a3a7061796565602920617265205f6e657665725f20636c65616e656420756e6c6573732074686520606f726967696e602066616c6c732062656c6f77205f6578697374656e7469616c206465706f7369745f20616e6420676574732072656d6f76656420617320647573742e00000000000000f36f11000e00000000000000000000001e61110003000000000000000000000000000000000000000000000000000000000000005c8f11009ce410000000000000000000bce0100001000000000000000100000000000000017011001500000000000000000000001e61110003000000000000000000000000000000000000000000000000000000000000005c8f1100c4e010000000000000000000d4e0100001000000000000000100000000000000dce010000d00000000000000000000000c3d110011000000000000000000000000000000000000000000000000000000000000005c8f110084e310000000000000000000ece010000300000000000000010000000000000053bc10000600000001010000000000000f5c11000c000000000000000f5c11000c000000000000000000000000000000000000005c8f110038e11000000000000000000004e110000100000000000000000000000000000059bc10000600000001010000000000000f5c11000c000000000000000ce1100029000000000000000000000000000000000000005c8f110038e11000000000000000000048e1100001000000000000000000000000000000b5be10000500000001010000000000000f5c11000c00000000000000f4cc100011000000000000000000000000000000000000005c8f110050e11000000000000000000060e110000100000000000000010000000000000049bc10000a00000001010100000000000f5c11000c00000000000000a3ce10000e000000000000000000000000000000000000005c8f110068e11000000000000000000078e11000010000000000000001000000000000002fbc10000a00000001010100000000000f5c11000c0000000000000080e1100019000000000000000000000000000000000000005c8f11009ce110000000000000000000ace11000040000000000000000000000000000005fbc10000700000001010000000000000f5c11000c00000000000000cce1100024000000000000000000000000000000000000005c8f1100f0e11000000000000000000000e2100004000000000000000100000000000000babe10000e00000000000000000000000c3d110011000000000000000000000000000000000000000000000000000000000000005c8f110084e31000000000000000000020e21000010000000000000001000000000000001d7011000a000000000000000000000046c9100008000000000000000000000000000000000000000000000000000000000000005c8f11009ce41000000000000000000028e210000100000000000000010000000000000066bc10000f000000000000000000000030e210000b000000000000000000000000000000000000000000000000000000000000005c8f11003ce2100000000000000000004ce2100001000000000000000100000000000000277011001b0000000000000000000000e76f11000c000000000000000000000000000000000000000000000000000000000000005c8f11009ce41000000000000000000054e2100001000000000000000100000000000000427011001600000000000000000000005ce2100009000000000000000000000000000000000000000000000000000000000000005c8f110068e21000000000000000000078e2100001000000000000000100000000000000c8be1000090000000000000000000000824711000c000000000000000000000000000000000000000000000000000000000000005c8f1100fce21000000000000000000080e21000030000000000000001000000000000005870110008000000000000000000000098e2100007000000000000000000000000000000000000000000000000000000000000005c8f1100a0e210000000000000000000b0e210000100000000000000010000000000000060701100130000000000000000000000b8e2100007000000000000000000000000000000000000000000000000000000000000005c8f1100c0e210000000000000000000d0e2100003000000000000000100000000000000e8e21000130000000000000000000000824711000c000000000000000000000000000000000000000000000000000000000000005c8f1100fce2100000000000000000000ce3100002000000000000000100000000000000d1be100010000000010100000000000046c9100008000000000000001ce310002f000000000000000000000000000000000000005c8f11004ce3100000000000000000005ce3100001000000000000000100000000000000737011000a000000000000000000000064e310001d000000000000000000000000000000000000000000000000000000000000005c8f110084e31000000000000000000094e310000100000000000000010000000000000075bc100013000000020102000000000046c9100008000000000000000f5c11000c000000000000009ce3100017000000000000005c8f1100b4e310000000000000000000c4e310000200000000000000000000000000000088bc100013000000020102000000000046c9100008000000000000000f5c11000c00000000000000824711000c000000000000005c8f1100d4e310000000000000000000e4e31000010000000000000000000000000000009bbc10000d00000001010000000000000f5c11000c00000000000000ece3100017000000000000000000000000000000000000005c8f110004e41000000000000000000014e4100001000000000000000000000000000000a8bc10000900000001010000000000001ce4100023000000000000003fe4100022000000000000000000000000000000000000005c8f110064e41000000000000000000074e41000020000000000000001000000000000007d70110016000000000000000000000046c9100008000000000000000000000000000000000000000000000000000000000000005c8f110084e41000000000000000000094e4100001000000000000000000000000000000937011000e00000000000000000000001e61110003000000000000000000000000000000000000000000000000000000000000005c8f11009ce410000000000000000000ace4100001000000000000000100000073ed10002a0000003b0000000000000001000000c400000023ed100050000000496e76756c6e657261626c65730000004fec100056000000a5ec100053000000f8ec10002b0000000fec1000400000005374616b696e674c65646765723c543a3a4163636f756e7449642c2042616c616e63654f663c543e3e0000003b000000000000000100000052000000beeb1000510000003b00000000000000010000005200000085eb1000390000003b0000000000000001000000c500000034eb1000510000004e6f6d696e6174696f6e733c543a3a4163636f756e7449643e0000003b00000000000000010000005200000058ea1000590000005c8f110000000000b1ea10004d000000feea1000360000004578706f737572653c543a3a4163636f756e7449642c2042616c616e63654f663c543e3e3b0000000000000001000000c60000009be9100053000000eee91000460000005c8f11000000000034ea1000240000005ce910003f00000045e91000170000004d6f6d656e744f663c543e003b00000000000000010000005300000027e910001e000000f3e8100034000000457261506f696e74730000003b0000000000000001000000c7000000b0e810004300000034e810004c0000005c8f11000000000080e8100030000000466f7263696e67003b000000000000000100000052000000ede710004700000050657262696c6c003b00000000000000010000005c00000076e710003e0000005c8f110000000000b4e710003900000043616e63656c6564536c6173685061796f7574003b000000000000000100000054000000f6e61000450000003be710003b0000005665633c556e6170706c696564536c6173683c543a3a4163636f756e7449642c2042616c616e63654f663c543e3e3e003b000000000000000100000055000000c5e61000310000005665633c28457261496e6465782c2053657373696f6e496e646578293e0000003b0000000000000001000000550000007ce61000490000002850657262696c6c2c2042616c616e63654f663c543e29003b0000000000000001000000520000000fe610005100000060e610001c0000003b000000000000000100000052000000b7e5100058000000736c617368696e673a3a536c617368696e675370616e73003b00000000000000010000005200000094e510002300000028543a3a4163636f756e7449642c20736c617368696e673a3a5370616e496e64657829736c617368696e673a3a5370616e5265636f72643c42616c616e63654f663c543e3e0000003b0000000000000001000000c800000017e510004f00000066e510002e0000003b000000000000000100000052000000d8e410003f0000003b00000000000000010000005c000000b4e4100024000000205468652076657273696f6e206f662073746f7261676520666f7220757067726164652e20546865206561726c696573742065726120666f72207768696368207765206861766520612070656e64696e672c20756e6170706c69656420736c6173682e205265636f72647320696e666f726d6174696f6e2061626f757420746865206d6178696d756d20736c617368206f6620612073746173682077697468696e206120736c617368696e67207370616e2c2061732077656c6c20617320686f77206d7563682072657761726420686173206265656e2070616964206f75742e20536c617368696e67207370616e7320666f72207374617368206163636f756e74732e20416c6c20736c617368696e67206576656e7473206f6e206e6f6d696e61746f72732c206d61707065642062792065726120746f20746865206869676865737420736c6173682076616c7565206f6620746865206572612e20416c6c20736c617368696e67206576656e7473206f6e2076616c696461746f72732c206d61707065642062792065726120746f20746865206869676865737420736c6173682070726f706f7274696f6e20616e6420736c6173682076616c7565206f6620746865206572612e2041206d617070696e672066726f6d207374696c6c2d626f6e646564206572617320746f207468652066697273742073657373696f6e20696e646578206f662074686174206572612e20416c6c20756e6170706c69656420736c61736865732074686174206172652071756575656420666f72206c617465722e2054686520616d6f756e74206f662063757272656e637920676976656e20746f207265706f7274657273206f66206120736c617368206576656e74207768696368207761732063616e63656c65642062792065787472616f7264696e6172792063697263756d7374616e6365732028652e672e20676f7665726e616e6365292e205468652070657263656e74616765206f662074686520736c617368207468617420697320646973747269627574656420746f207265706f72746572732e205468652072657374206f662074686520736c61736865642076616c75652069732068616e646c6564206279207468652060536c617368602e205472756520696620746865206e6578742073657373696f6e206368616e67652077696c6c2062652061206e657720657261207265676172646c657373206f6620696e6465782e2054686520616d6f756e74206f662062616c616e6365206163746976656c79206174207374616b6520666f7220656163682076616c696461746f7220736c6f742c2063757272656e746c792e2054686973206973207573656420746f20646572697665207265776172647320616e642070756e6973686d656e74732e205265776172647320666f72207468652063757272656e74206572612e205573696e6720696e6469636573206f662063757272656e7420656c6563746564207365742e205468652073657373696f6e20696e646578206174207768696368207468652063757272656e742065726120737461727465642e20546865207374617274206f66207468652063757272656e74206572612e205468652063757272656e742065726120696e6465782e205468652063757272656e746c7920656c65637465642076616c696461746f7220736574206b65796564206279207374617368206163636f756e742049442e204e6f6d696e61746f727320666f72206120706172746963756c6172206163636f756e74207468617420697320696e20616374696f6e207269676874206e6f772e20596f752063616e27742069746572617465207468726f7567682076616c696461746f727320686572652c2062757420796f752063616e2066696e64207468656d20696e207468652053657373696f6e206d6f64756c652e2054686973206973206b6579656420627920746865207374617368206163636f756e742e20546865206d61702066726f6d206e6f6d696e61746f72207374617368206b657920746f2074686520736574206f66207374617368206b657973206f6620616c6c2076616c696461746f727320746f206e6f6d696e6174652e204e4f54453a206973207072697661746520736f20746861742077652063616e20656e73757265207570677261646564206265666f726520616c6c207479706963616c2061636365737365732e204469726563742073746f7261676520415049732063616e207374696c6c2062797061737320746869732070726f74656374696f6e2e20546865206d61702066726f6d202877616e6e616265292076616c696461746f72207374617368206b657920746f2074686520707265666572656e636573206f6620746861742076616c696461746f722e2057686572652074686520726577617264207061796d656e742073686f756c64206265206d6164652e204b657965642062792073746173682e204d61702066726f6d20616c6c2028756e6c6f636b6564292022636f6e74726f6c6c657222206163636f756e747320746f2074686520696e666f20726567617264696e6720746865207374616b696e672e204d61702066726f6d20616c6c206c6f636b65642022737461736822206163636f756e747320746f2074686520636f6e74726f6c6c6572206163636f756e742e20416e792076616c696461746f72732074686174206d6179206e6576657220626520736c6173686564206f7220666f726369626c79206b69636b65642e20497427732061205665632073696e63652074686579277265206561737920746f20696e697469616c697a6520616e642074686520706572666f726d616e636520686974206973206d696e696d616c2028776520657870656374206e6f206d6f7265207468616e20666f757220696e76756c6e657261626c65732920616e64207265737472696374656420746f20746573746e6574732e204d696e696d756d206e756d626572206f66207374616b696e67207061727469636970616e7473206265666f726520656d657267656e637920636f6e646974696f6e732061726520696d706f7365642e2054686520696465616c206e756d626572206f66207374616b696e67207061727469636970616e74732e0000000000000010ee10000e00000000000000e76f11000c000000000000005c8f110020ee1000000000000000000030ee100001000000000000000000000038ee10000f0000000000000046c9100008000000000000005c8f110048ee1000000000000000000058ee1000010000000000000053657373696f6e7350657245726100003b0000000000000001000000c900000099ee10001c000000426f6e64696e674475726174696f6e003b0000000000000001000000ca00000060ee100039000000204e756d626572206f6620657261732074686174207374616b65642066756e6473206d7573742072656d61696e20626f6e64656420666f722e204e756d626572206f662073657373696f6e7320706572206572612e0000000000000094ef100007000000000000008c5211000100000000000000000000009cef1000010000000000000000000000a4ef10000a000000000000008c521100010000000000000000000000b0ef1000010000000000000000000000b8ef10000b000000000000008c521100010000000000000000000000c4ef1000010000000000000000000000ccef10000b00000000000000d8ef1000020000000000000000000000e8ef1000010000000000000000000000f0ef10000a00000000000000d8ef1000020000000000000000000000fcef100001000000000000004e616d655365740097f01000100000004e616d65466f7263656400007ef01000190000004e616d654368616e676564006af01000140000004e616d65436c656172656400e2521100090000009b1f11000700000036f01000340000004e616d654b696c6c6564000004f01000320000002041206e616d65207761732072656d6f76656420616e642074686520676976656e2062616c616e636520736c61736865642e2041206e616d652077617320636c65617265642c20616e642074686520676976656e2062616c616e63652072657475726e65642e2041206e616d6520776173206368616e6765642e2041206e616d652077617320666f726369626c79207365742e2041206e616d6520776173207365742e71202f2028712f246d617829203c202832202a20246d6178292e204d6163726f2070726576656e747320616e792074797065206265696e672063726561746564207468617420646f6573206e6f74207361746973667920746869733b207165640018f11000420000006f000000210000002f686f6d652f6461766964642f6465762f7375627374726174652f7072696d6974697665732f61726974686d657469632f7372632f7065725f7468696e67732e7273000000000000617474656d707420746f20646976696465206279207a65726f4661696c656420746f20636f6e76657274456e636f756e7465726564206572726f7220696e206d6967726174696f6e206f66205374616b696e673a3a4e6f6d696e61746f7273206d61702e5374616b696e673a3a4e6f6d696e61746f7273206d6170207265696e697469616c697a656446696e6973686564206d6967726174696e67205374616b696e672073746f7261676520746f2076312e5072697374696e65436f6465436f646553746f72616765436f6e7472616374496e666f4f664761735072696365000000000048f31000080000000000000050f3100003000000000000000000000068f3100001000000000000000000000070f310000c00000000000000301e11000200000000000000000000007cf3100001000000000000000000000084f310000a0000000000000090f3100001000000000000000000000098f31000010000000000000000000000a0f310000f00000000000000b0f31000010000000000000000000000b8f31000010000000000000000000000c0f310000a00000000000000ccf31000020000000000000000000000dcf31000020000000000000000000000646911000800000000000000ecf31000020000000000000000000000fcf3100001000000000000005472616e73666572e252110009000000e2521100090000009b1f11000700000027f510005a000000496e7374616e746961746564f0f4100037000000436f646553746f7265640000971f110004000000c2f410002e0000005363686564756c6555706461746564001e6111000300000092f4100030000000446973706174636865640000e252110009000000035311000400000027f410004e00000075f410001d000000e252110009000000e96011000700000004f410002300000020416e206576656e742066726f6d20636f6e7472616374206f66206163636f756e742e20412063616c6c2077617320646973706174636865642066726f6d2074686520676976656e206163636f756e742e2054686520626f6f6c207369676e616c73207768657468657220697420776173207375636365737366756c20657865637574696f6e206f72206e6f742e20547269676765726564207768656e207468652063757272656e74207363686564756c6520697320757064617465642e20436f646520776974682074686520737065636966696564206861736820686173206265656e2073746f7265642e20436f6e7472616374206465706c6f7965642062792061646472657373206174207468652073706563696669656420616464726573732e205472616e736665722068617070656e6564206066726f6d6020746f2060746f60207769746820676976656e206076616c7565602061732070617274206f662061206063616c6c60206f722060696e7374616e7469617465602e0000004d0000000800000004000000bf0000003b00000000000000010000003c000000acf510001c00000056617269616e74206973206e6576657220636f6e737472756374656473657269616c697a656420617267732073686f756c642062652070726f7669646564206279207468652072756e74696d653b0a090909636f72726563746c792073657269616c697a656420646174612073686f756c6420626520646573657269616c697a61626c653b0a09090971656400000000e8f610000800000000000000f0f6100001000000000000000000000008f7100010000000000000000000000088f710000a000000000000005c8f110000000000000000000000000094f710000a0000000000000000000000e4f710000900000000000000f0f7100001000000000000000000000008f810000d000000000000000000000070f810000a000000000000007cf81000020000000000000000000000acf810000c000000000000007365745f6e616d6500000000166711000400000000000000e96011000700000042fb10005700000099fb1000130000005c8f110000000000acfb1000580000005c8f11000000000004fc1000570000005bfc1000100000005c8f110000000000f9591100340000005c8f1100000000002d5a11000b000000385a110008000000b2f9100021000000d3f910001a000000edf910000d000000a65a11000c000000636c6561725f6e616d650000d5fa1000540000005c8f110000000000f9591100340000005c8f1100000000002d5a11000b000000385a11000800000029fb100019000000d3f910001a000000edf910000d000000a65a11000c0000006b696c6c5f6e616d6500000000000000faf910000600000000000000b55a11002300000000fa1000390000005c8f11000000000039fa1000520000008bfa1000130000005c8f11000000000066f910004c0000005c8f1100000000002d5a11000b000000385a1100080000009efa100037000000d3f910001a000000edf910000d000000a65a11000c000000666f7263655f6e616d65000000000000faf910000600000000000000b55a11002300000000000000166711000400000000000000e9601100070000000cf91000320000005c8f1100000000003ef91000280000005c8f11000000000066f910004c0000005c8f1100000000002d5a11000b000000385a110008000000b2f9100021000000d3f910001a000000edf910000d000000a65a11000c0000002053657420612074686972642d7061727479206163636f756e742773206e616d652077697468206e6f206465706f7369742e204e6f206c656e67746820636865636b696e6720697320646f6e65206f6e20746865206e616d652e20546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f526f6f745f206f72206d617463682060543a3a466f7263654f726967696e602e202d204174206d6f7374206f6e652062616c616e6365206f7065726174696f6e2e202d204f6e652073746f7261676520726561642f77726974652e202d204f6e65206576656e742e7461726765742052656d6f766520616e206163636f756e742773206e616d6520616e642074616b6520636861726765206f6620746865206465706f7369742e204661696c73206966206077686f6020686173206e6f74206265656e206e616d65642e20546865206465706f736974206973206465616c742077697468207468726f7567682060543a3a536c61736865646020696d62616c616e63652068616e646c65722e202d204f6e6520756e62616c616e6365642068616e646c6572202870726f6261626c7920612062616c616e6365207472616e736665722920436c65617220616e206163636f756e742773206e616d6520616e642072657475726e20746865206465706f7369742e204661696c7320696620746865206163636f756e7420776173206e6f74206e616d65642e202d204f6e652062616c616e6365206f7065726174696f6e2e2053657420616e206163636f756e742773206e616d652e20546865206e616d652073686f756c642062652061205554462d382d656e636f64656420737472696e6720627920636f6e76656e74696f6e2c2074686f75676820776520646f6e277420636865636b2069742e20546865206e616d65206d6179206e6f74206265206d6f7265207468616e2060543a3a4d61784c656e677468602062797465732c206e6f72206c657373207468616e2060543a3a4d696e4c656e677468602062797465732e20496620746865206163636f756e7420646f65736e277420616c726561647920686176652061206e616d652c207468656e206120666565206f6620605265736572766174696f6e4665656020697320726573657276656420696e20746865206163636f756e742e0000000000c4fc10000600000001010000000000000f5c11000c00000000000000cafc100017000000000000000000000000000000000000005c8f1100e4fc10000000000000000000f4fc10000100000000000000000000004e616d654f66285665633c75383e2c2042616c616e63654f663c543e290000003b0000000000000001000000cb000000fcfc10001c00000020546865206c6f6f6b7570207461626c6520666f72206e616d65732e00000000c0fd10000e00000000000000824711000c000000000000005c8f1100141111000000000000000000d0fd1000010000000000000000000000d8fd100009000000000000001e61110003000000000000005c8f1100e4fd10000000000000000000f4fd1000010000000000000000000000fcfd100009000000000000001e61110003000000000000005c8f110008fe1000000000000000000018fe100001000000000000005265736572766174696f6e466565000064fe1000110000004d696e4c656e6774680000003b0000000000000001000000cc00000042fe1000220000004d61784c656e6774680000003b0000000000000001000000cd00000020fe10002200000020546865206d6178696d756d206c656e6774682061206e616d65206d61792062652e20546865206d696e696d756d206c656e6774682061206e616d65206d61792062652e205265736572766174696f6e206665652e00000000000000a4fe10000500000000000000acfe1000010000000000000000000000c4fe10000100000000000000626174636800000000000000f8fe10000500000000000000fdfe100017000000ccfe10002c0000002053656e642061206261746368206f662064697370617463682063616c6c7320286f6e6c7920726f6f74292e63616c6c735665633c3c542061732054726169743e3a3a43616c6c3e64656661756c743a00000000f8ff10000f0000000000000008001100010000000000000000000000200011000300000000000000000000003800110008000000000000004000110002000000000000000000000070001100020000000000000000000000af651100040000000000000080001100040000000000000000000000e0001100070000000000000000000000180111000b0000000000000024011100040000000000000000000000840111000a0000000000000000000000d40111000f00000000000000e40111000200000000000000000000001402110005000000000000007570646174655f7363686564756c6500000000006408110008000000000000006c08110008000000f40711002d0000005c8f11000000000021081100430000007075745f636f646500000000a20511000900000000000000ab0511000c00000000000000f00711000400000000000000e9601100070000006407110057000000bb0711003500000000000000560311000400000000000000b55a11002300000000000000143611000500000000000000193611001500000000000000a20511000900000000000000ab0511000c00000000000000cb0511000400000000000000e960110007000000cf051100420000005c8f110000000000110611004a0000005b0611002c0000008706110046000000cd061100520000001f07110045000000696e7374616e74696174650000000000990511000900000000000000193611001500000000000000a20511000900000000000000ab0511000c00000000000000b70511000900000000000000c00511000b00000000000000cb0511000400000000000000e960110007000000780311006f0000005c8f110000000000e7031100260000005c8f1100000000000d041100500000005d041100410000009e0411005b000000f904110057000000500511002a0000007a0511001f000000636c61696d5f73757263686172676500000000005603110004000000000000000f5c11000c000000000000005a0311000a0000000000000064031100140000003c0211005c00000098021100450000005c8f110000000000dd0211004e0000002b0311002b00000020416c6c6f777320626c6f636b2070726f64756365727320746f20636c61696d206120736d616c6c2072657761726420666f72206576696374696e67206120636f6e74726163742e204966206120626c6f636b2070726f6475636572206661696c7320746f20646f20736f2c206120726567756c61722075736572732077696c6c20626520616c6c6f77656420746f20636c61696d20746865207265776172642e20496620636f6e7472616374206973206e6f742065766963746564206173206120726573756c74206f6620746869732063616c6c2c206e6f20616374696f6e73206172652074616b656e20616e64207468652073656e646572206973206e6f7420656c696769626c6520666f7220746865207265776172642e646573746175785f73656e6465724f7074696f6e3c543a3a4163636f756e7449643e20496e7374616e7469617465732061206e657720636f6e74726163742066726f6d207468652060636f646568617368602067656e65726174656420627920607075745f636f6465602c206f7074696f6e616c6c79207472616e7366657272696e6720736f6d652062616c616e63652e20496e7374616e74696174696f6e20697320657865637574656420617320666f6c6c6f77733a202d205468652064657374696e6174696f6e206164647265737320697320636f6d7075746564206261736564206f6e207468652073656e64657220616e642068617368206f662074686520636f64652e202d2054686520736d6172742d636f6e7472616374206163636f756e7420697320637265617465642061742074686520636f6d707574656420616464726573732e202d20546865206063746f725f636f64656020697320657865637574656420696e2074686520636f6e74657874206f6620746865206e65776c792d63726561746564206163636f756e742e204275666665722072657475726e656420202061667465722074686520657865637574696f6e206973207361766564206173207468652060636f646560206f6620746865206163636f756e742e205468617420636f64652077696c6c20626520696e766f6b656420202075706f6e20616e792063616c6c2072656365697665642062792074686973206163636f756e742e202d2054686520636f6e747261637420697320696e697469616c697a65642e656e646f776d656e746761735f6c696d6974436f6d706163743c4761733e636f64655f68617368436f6465486173683c543e64617461204d616b657320612063616c6c20746f20616e206163636f756e742c206f7074696f6e616c6c79207472616e7366657272696e6720736f6d652062616c616e63652e202a20496620746865206163636f756e74206973206120736d6172742d636f6e7472616374206163636f756e742c20746865206173736f63696174656420636f64652077696c6c20626520657865637574656420616e6420616e792076616c75652077696c6c206265207472616e736665727265642e202a20496620746865206163636f756e74206973206120726567756c6172206163636f756e742c20616e792076616c75652077696c6c206265207472616e736665727265642e202a204966206e6f206163636f756e742065786973747320616e64207468652063616c6c2076616c7565206973206e6f74206c657373207468616e20606578697374656e7469616c5f6465706f736974602c206120726567756c6172206163636f756e742077696c6c206265206372656174656420616e6420616e792076616c75652077696c6c206265207472616e736665727265642e2053746f7265732074686520676976656e2062696e617279205761736d20636f646520696e746f2074686520636861696e27732073746f7261676520616e642072657475726e73206974732060636f646568617368602e20596f752063616e20696e7374616e746961746520636f6e747261637473206f6e6c7920776974682073746f72656420636f64652e636f6465205570646174657320746865207363686564756c6520666f72206d65746572696e6720636f6e7472616374732e20546865207363686564756c65206d7573742068617665206120677265617465722076657273696f6e207468616e207468652073746f726564207363686564756c652e7363686564756c655363686564756c65000000006c691100080000000000000000000000dc0a110003000000000000000000000000000000000000000000000000000000000000005c8f11004c0b11000000000000000000e00a110001000000000000000100000000000000746911000f00000000000000000000006c08110008000000000000000000000000000000000000000000000000000000000000005c8f1100e80a11000000000000000000f80a11000100000000000000010000000000000012f210000c0000000101000000000000c00511000b00000000000000e960110007000000000000000000000000000000000000005c8f1100000b11000000000000000000100b1100010000000000000000000000000000001ef210000b0000000101000000000000c00511000b00000000000000180b110016000000000000000000000000000000000000005c8f1100300b11000000000000000000400b110001000000000000000000000000000000836911000e0000000000000000000000480b110003000000000000000000000000000000000000000000000000000000000000005c8f11004c0b110000000000000000005c0b11000100000000000000010000000000000029f210000e00000001010000000000000f5c11000c00000000000000640b11000f000000000000000000000000000000000000005c8f1100740b11000000000000000000840b11000100000000000000000000000000000037f21000080000000000000000000000824711000c000000000000000000000000000000000000000000000000000000000000005c8f11008c0b110000000000000000009c0b110001000000000000000100000047617300d80c1100200000003b0000000000000001000000ce000000b30c1100250000003b0000000000000001000000cf0000005a0c1100590000007761736d3a3a5072656661625761736d4d6f64756c6500003b000000000000000100000052000000010c110059000000753634003b000000000000000100000053000000ec0b110015000000436f6e7472616374496e666f3c543e003b000000000000000100000052000000c20b11002a0000003b0000000000000001000000d0000000a40b11001e00000020546865207072696365206f66206f6e6520756e6974206f66206761732e2054686520636f6465206173736f6369617465642077697468206120676976656e206163636f756e742e20546865207375627472696520636f756e7465722e2041206d617070696e67206265747765656e20616e206f726967696e616c20636f6465206861736820616e6420696e737472756d656e746564207761736d20636f64652c20726561647920666f7220657865637574696f6e2e2041206d617070696e672066726f6d20616e206f726967696e616c20636f6465206861736820746f20746865206f726967696e616c20636f64652c20756e746f756368656420627920696e737472756d656e746174696f6e2e2043757272656e7420636f7374207363686564756c6520666f7220636f6e7472616374732e20476173207370656e7420736f2066617220696e207468697320626c6f636b2e000000007810110013000000000000009c6011000e000000000000005c8f11008c10110000000000000000009c101100040000000000000000000000bc1011001000000000000000824711000c000000000000005c8f1100141111000000000000000000cc101100010000000000000000000000d410110011000000000000001e61110003000000000000005c8f1100e81011000000000000000000f8101100020000000000000000000000081111000b00000000000000824711000c000000000000005c8f1100141111000000000000000000241111000100000000000000000000002c1111001100000000000000824711000c000000000000005c8f110040111100000000000000000050111100070000000000000000000000881111000f00000000000000824711000c000000000000005c8f1100981111000000000000000000a8111100020000000000000000000000b81111000b00000000000000824711000c000000000000005c8f1100341211000000000000000000c4111100010000000000000000000000cc1111000b00000000000000824711000c000000000000005c8f1100341211000000000000000000d8111100010000000000000000000000e01111001200000000000000824711000c000000000000005c8f1100341211000000000000000000f4111100010000000000000000000000fc1111001200000000000000824711000c000000000000005c8f110010121100000000000000000020121100010000000000000000000000281211000b00000000000000824711000c000000000000005c8f110034121100000000000000000044121100020000000000000000000000541211000b00000000000000dc0a110003000000000000005c8f110084121100000000000000000060121100020000000000000000000000701211001200000000000000dc0a110003000000000000005c8f110084121100000000000000000094121100020000000000000000000000a412110008000000000000001e61110003000000000000005c8f1100ac1211000000000000000000bc121100020000000000000000000000cc1211000c000000000000001e61110003000000000000005c8f1100d81211000000000000000000e8121100010000000000000000000000f01211000d00000000000000dc0a110003000000000000005c8f11000013110000000000000000001013110002000000000000005369676e6564436c61696d48616e6469636170003b0000000000000001000000d1000000c0181100380000005c8f110000000000f8181100430000003b1911001a000000546f6d6273746f6e654465706f7369748b1811003500000053746f7261676553697a654f66667365740000003b0000000000000001000000d20000000e18110054000000621811002900000052656e7442797465466565003b000000000000000100000056000000c11711004d00000052656e744465706f7369744f66667365740000003b0000000000000001000000d300000049161100410000008a161100160000005c8f110000000000a01611005a000000fa161100560000005017110053000000a31711001e000000537572636861726765526577617264003b0000000000000001000000d4000000f6151100390000002f1611001a0000005472616e7366657246656500d1151100250000004372656174696f6e46656500aa151100270000005472616e73616374696f6e42617365466565000073151100370000005472616e73616374696f6e4279746546656500003b0000000000000001000000640000003015110043000000436f6e7472616374466565003b000000000000000100000057000000d914110050000000291511000700000043616c6c42617365466565008414110047000000cb1411000e000000496e7374616e74696174654261736546656500003b0000000000000001000000d50000002e1411004e0000007c141100080000004d617844657074683b0000000000000001000000d6000000d41311004c000000201411000e0000004d617856616c756553697a653b0000000000000001000000d7000000861311004e000000426c6f636b4761734c696d69740000003b0000000000000001000000d80000002013110049000000691311001d00000020546865206d6178696d756d20616d6f756e74206f6620676173207468617420636f756c6420626520657870656e6465642070657220626c6f636b2e204120726561736f6e61626c652064656661756c742076616c75652069732031305f3030305f3030302e20546865206d6178696d756d2073697a65206f6620612073746f726167652076616c756520696e2062797465732e204120726561736f6e61626c652064656661756c74206973203136204b69422e20546865206d6178696d756d206e657374696e67206c6576656c206f6620612063616c6c2f696e7374616e746961746520737461636b2e204120726561736f6e61626c652064656661756c742076616c7565206973203130302e20546865206261736520666565206368617267656420666f7220696e7374616e74696174696e67206120636f6e74726163742e204120726561736f6e61626c652064656661756c742076616c7565206973203137352e20546865206261736520666565206368617267656420666f722063616c6c696e6720696e746f206120636f6e74726163742e204120726561736f6e61626c652064656661756c742076616c7565206973203133352e205468652066656520726571756972656420746f20696e7374616e7469617465206120636f6e747261637420696e7374616e63652e204120726561736f6e61626c652064656661756c742076616c75652069732032312e205468652066656520746f206265207061696420666f72206d616b696e672061207472616e73616374696f6e3b20746865207065722d6279746520706f7274696f6e2e205468652066656520746f206265207061696420666f72206d616b696e672061207472616e73616374696f6e3b2074686520626173652e205468652066656520726571756972656420746f2063726561746520616e206163636f756e742e205468652066656520726571756972656420746f206d616b652061207472616e736665722e205265776172642074686174206973207265636569766564206279207468652070617274792077686f736520746f75636820686173206c656420746f2072656d6f76616c206f66206120636f6e74726163742e2054686520616d6f756e74206f662066756e6473206120636f6e74726163742073686f756c64206465706f73697420696e206f7264657220746f206f66667365742074686520636f7374206f66206f6e6520627974652e204c6574277320737570706f736520746865206465706f73697420697320312c303030204255202862616c616e636520756e697473292f6279746520616e64207468652072656e7420697320312042552f627974652f6461792c207468656e206120636f6e7472616374207769746820312c3030302c3030302042552074686174207573657320312c303030206279746573206f662073746f7261676520776f756c6420706179206e6f2072656e742e20427574206966207468652062616c616e6365207265647563656420746f203530302c30303020425520616e64207468652073746f7261676520737461796564207468652073616d6520617420312c3030302c207468656e20697420776f756c6420706179203530302042552f6461792e205072696365206f6620612062797465206f662073746f7261676520706572206f6e6520626c6f636b20696e74657276616c2e2053686f756c642062652067726561746572207468616e20302e2053697a65206f66206120636f6e7472616374206174207468652074696d65206f6620696e7374616e746961696f6e2e205468697320697320612073696d706c652077617920746f20656e73757265207468617420656d70747920636f6e747261637473206576656e7475616c6c7920676574732064656c657465642e20546865206d696e696d756d20616d6f756e7420726571756972656420746f2067656e6572617465206120746f6d6273746f6e652e204e756d626572206f6620626c6f636b2064656c617920616e2065787472696e73696320636c61696d20737572636861726765206861732e205768656e20636c61696d207375726368617267652069732063616c6c656420627920616e2065787472696e736963207468652072656e7420697320636865636b656420666f722063757272656e745f626c6f636b202d2064656c617943616e6e6f7420726573746f726520746f20696e6578697374696e67206f7220616c69766520636f6e74726163744e616d6520746f6f2073686f72744e616d6520746f6f206c6f6e67626164206f726967696e4e6f74206e616d65646e6577207363686564756c65206d7573742068617665206120677265617465722076657273696f6e207468616e2063757272656e74496e76616c69642073757263686172676520636c61696d3a206f726967696e206d757374206265207369676e6564206f7220696e686572656e7420616e6420617578696c696172792073656e646572206f6e6c792070726f7669646564206f6e20696e686572656e74486561644f6644656c65676174696f6e7344656c65676174696f6e735265666572656e64756d496e666f4f66566f74654f6600000000000000441d110008000000000000004c1d11000200000000000000000000005c1d1100010000000000000000000000641d110006000000000000006c1d1100030000000000000000000000841d11000100000000000000000000008c1d11000e000000000000005c8f11000000000000000000000000009c1d1100010000000000000000000000a41d11000700000000000000ac1d1100020000000000000000000000bc1d1100010000000000000000000000c41d11000600000000000000cc1d1100010000000000000000000000d41d1100010000000000000000000000dc1d11000900000000000000cc1d1100010000000000000000000000e81d1100010000000000000000000000f01d11000900000000000000cc1d1100010000000000000000000000fc1d1100010000000000000000000000041e110008000000000000000c1e11000200000000000000000000001c1e1100010000000000000000000000241e11000900000000000000301e1100020000000000000000000000401e1100010000000000000000000000481e11000b000000000000008c521100010000000000000000000000541e11000100000000000000000000005c1e11000600000000000000641e11000300000000000000000000007c1e1100010000000000000000000000841e11000d00000000000000941e1100030000000000000000000000ac1e1100010000000000000000000000b41e11000c00000000000000941e1100030000000000000000000000c01e1100010000000000000000000000c81e11000f00000000000000d81e1100020000000000000000000000e81e1100010000000000000000000000f01e11000f00000000000000d81e1100020000000000000000000000001f1100010000000000000000000000081f11000e00000000000000181f1100040000000000000000000000381f1100010000000000000050726f706f7365646f221100090000009b1f11000700000086221100300000005461626c656400006f221100090000009b1f110007000000782211000e000000382211003700000045787465726e616c5461626c6564000012221100260000005374617274656400282011000f000000052211000d000000ed211100180000005061737365640000282011000f000000c12111002c0000004e6f74506173736564000000952111002c00000043616e63656c6c656400000074211100210000004578656375746564282011000f0000000353110004000000572111001d00000044656c656761746564000000e252110009000000e2521100090000001f21110038000000556e64656c65676174656400e52011003a0000005665746f65640000e252110009000000971f110004000000da2011000b000000b420110026000000507265696d6167654e6f746564000000971f110004000000e2521100090000009b1f1100070000007c20110038000000507265696d616765557365643720110045000000507265696d616765496e76616c696400971f110004000000282011000f000000e51f110043000000507265696d6167654d697373696e6700a21f110043000000507265696d6167655265617065640000971f110004000000e2521100090000009b1f110007000000e252110009000000401f1100570000002041207265676973746572656420707265696d616765207761732072656d6f76656420616e6420746865206465706f73697420636f6c6c6563746564206279207468652072656170657220286c617374206974656d292e4861736842616c616e636520412070726f706f73616c20636f756c64206e6f7420626520657865637574656420626563617573652069747320707265696d61676520776173206d697373696e672e20412070726f706f73616c20636f756c64206e6f7420626520657865637574656420626563617573652069747320707265696d6167652077617320696e76616c69642e5265666572656e64756d496e64657820412070726f706f73616c20707265696d616765207761732072656d6f76656420616e6420757365642028746865206465706f736974207761732072657475726e6564292e20412070726f706f73616c277320707265696d61676520776173206e6f7465642c20616e6420746865206465706f7369742074616b656e2e20416e2065787465726e616c2070726f706f73616c20686173206265656e207665746f65642e426c6f636b4e756d62657220416e206163636f756e74206861732063616e63656c6c656420612070726576696f75732064656c65676174696f6e206f7065726174696f6e2e20416e206163636f756e74206861732064656c65676174656420746865697220766f746520746f20616e6f74686572206163636f756e742e20412070726f706f73616c20686173206265656e20656e61637465642e2041207265666572656e64756d20686173206265656e2063616e63656c6c65642e20412070726f706f73616c20686173206265656e2072656a6563746564206279207265666572656e64756d2e20412070726f706f73616c20686173206265656e20617070726f766564206279207265666572656e64756d2e2041207265666572656e64756d2068617320626567756e2e566f74655468726573686f6c6420416e2065787465726e616c2070726f706f73616c20686173206265656e207461626c65642e2041207075626c69632070726f706f73616c20686173206265656e207461626c656420666f72207265666572656e64756d20766f74652e50726f70496e6465785665633c4163636f756e7449643e2041206d6f74696f6e20686173206265656e2070726f706f7365642062792061207075626c6963206163636f756e742e44697370617463685175657565507265696d61676573566f74657273466f725075626c696350726f70734465706f7369744f664e6f207075626c69632070726f706f73616c732077616974696e674e65787445787465726e616c4e6f2065787465726e616c2070726f706f73616c2077616974696e6700000000c82611000700000000000000d026110002000000000000000000000000271100060000000000000000000000302711000600000000000000382711000100000000000000000000005027110006000000000000000000000080271100040000000000000084271100020000000000000000000000b4271100070000000000000000000000ec2711000a0000000000000084271100020000000000000000000000f827110007000000000000000000000030281100100000000000000040281100010000000000000000000000582811000200000000000000000000006828110010000000000000007828110001000000000000000000000090281100020000000000000000000000a0281100190000000000000078281100010000000000000000000000bc281100050000000000000000000000e4281100180000000000000078281100010000000000000000000000fc281100050000000000000000000000242911000a000000000000003029110003000000000000000000000078291100090000000000000000000000c02911000d0000000000000078281100010000000000000000000000d0291100010000000000000000000000d82911001100000000000000ec291100010000000000000000000000042a11000100000000000000000000000c2a11000d000000000000001c2a1100010000000000000000000000342a11000100000000000000000000003c2a11000900000000000000482a1100010000000000000000000000602a1100050000000000000000000000882a11000c000000000000005c8f1100000000000000000000000000942a1100050000000000000000000000bc2a11000c00000000000000482a1100010000000000000000000000c82a1100050000000000000000000000f02a11000800000000000000f82a1100020000000000000000000000282b1100050000000000000000000000502b11000a000000000000005c8f11000000000000000000000000005c2b1100050000000000000000000000842b110016000000000000005c8f11000000000000000000000000009c2b1100010000000000000000000000a42b11000d00000000000000b42b1100010000000000000000000000cc2b1100020000000000000000000000dc2b11001600000000000000b42b1100010000000000000000000000f42b1100020000000000000000000000042c11000d0000000000000078281100010000000000000000000000142c1100050000000000000070726f706f736500000000004c3211000d000000000000005932110007000000000000001436110005000000000000001936110015000000aa351100280000005c8f1100000000002d5a11000b000000385a110008000000f435110020000000a65a11000c0000007365636f6e64000000000000d85a11000800000000000000e235110012000000aa351100280000005c8f1100000000002d5a11000b000000385a110008000000d235110010000000a65a11000c000000766f746500000000d42f11000900000000000000dd2f11001800000000000000802711000400000000000000a6351100040000002a3511004d000000773511002f0000005c8f1100000000002d5a11000b000000385a1100080000000b3511001f000000a65a11000c00000070726f78795f766f746500007934110054000000cd3411003e0000005c8f1100000000002d5a11000b000000385a1100080000000b3511001f000000a65a11000c000000656d657267656e63795f63616e63656c00000000d42f11000900000000000000282011000f0000002534110054000000193411000c00000065787465726e616c5f70726f706f7365000000004c3211000d000000000000005932110007000000cd3311004c000000193411000c00000065787465726e616c5f70726f706f73655f6d616a6f726974790000005f33110056000000b5331100180000005c8f110000000000e532110053000000383311002700000065787465726e616c5f70726f706f73655f64656661756c747232110052000000c4321100210000005c8f110000000000e5321100530000003833110027000000666173745f747261636b0000000000004c3211000d00000000000000593211000700000000000000603211000d000000000000009c6011000e000000000000006d32110005000000000000009c6011000e00000024301100540000007830110059000000d13011003b0000005c8f1100000000000c3111003e0000004a31110058000000a231110026000000c8311100550000001d3211002f0000007665746f5f65787465726e616c000000f52f11002f00000063616e63656c5f7265666572656e64756d00000000000000d42f11000900000000000000dd2f110018000000bf2f11001500000063616e63656c5f71756575656400000000000000ba2f11000500000000000000282011000f000000922f1100280000007365745f70726f7879000000000000008d2f110005000000000000000f5c11000c000000672f1100260000005c8f1100000000002d5a11000b000000df2e110016000000a65a11000c00000072657369676e5f70726f7879412f1100260000005c8f1100000000002d5a11000b000000312f110010000000a65a11000c00000072656d6f76655f70726f78790b2f1100260000005c8f1100000000002d5a11000b000000312f110010000000a65a11000c00000064656c656761746500000000f52e110002000000000000000f5c11000c00000000000000f72e11000a00000000000000012f11000a000000d02e11000f0000005c8f1100000000002d5a11000b000000df2e110016000000a65a11000c000000756e64656c65676174650000bf2e1100110000005c8f1100000000002d5a11000b000000385a110008000000a65a11000c000000636c6561725f7075626c69635f70726f706f73616c7300007f2e1100400000006e6f74655f707265696d616765000000000000006f2e11001000000000000000e960110007000000ce2d110058000000262e1100490000006e6f74655f696d6d696e656e745f707265696d6167650000502d110051000000a12d11002d000000726561705f707265696d6167650000003c2c11003d0000005c8f110000000000792c110054000000cd2c110057000000242d11002c0000002052656d6f766520616e20657870697265642070726f706f73616c20707265696d61676520616e6420636f6c6c65637420746865206465706f7369742e20546869732077696c6c206f6e6c7920776f726b2061667465722060566f74696e67506572696f646020626c6f636b732066726f6d207468652074696d6520746861742074686520707265696d61676520776173206e6f7465642c2069662069742773207468652073616d65206163636f756e7420646f696e672069742e2049662069742773206120646966666572656e74206163636f756e742c207468656e206974276c6c206f6e6c7920776f726b20616e206164646974696f6e616c2060456e6163746d656e74506572696f6460206c617465722e2052656769737465722074686520707265696d61676520666f7220616e207570636f6d696e672070726f706f73616c2e2054686973207265717569726573207468652070726f706f73616c20746f20626520696e207468652064697370617463682071756575652e204e6f206465706f736974206973206e65656465642e2052656769737465722074686520707265696d61676520666f7220616e207570636f6d696e672070726f706f73616c2e205468697320646f65736e27742072657175697265207468652070726f706f73616c20746f20626520696e207468652064697370617463682071756575652062757420646f657320726571756972652061206465706f7369742c2072657475726e6564206f6e636520656e61637465642e656e636f6465645f70726f706f73616c205665746f20616e6420626c61636b6c697374207468652070726f706f73616c20686173682e204d7573742062652066726f6d20526f6f74206f726967696e2e20556e64656c656761746520766f74652e2044656c656761746520766f74652e202d204f6e6520657874726120444220656e7472792e746f636f6e76696374696f6e436f6e76696374696f6e20436c656172207468652070726f78792e2043616c6c6564206279207468652073746173682e202d204f6e6520444220636c6561722e20436c656172207468652070726f78792e2043616c6c6564206279207468652070726f78792e205370656369667920612070726f78792e2043616c6c6564206279207468652073746173682e70726f78792043616e63656c20612070726f706f73616c2071756575656420666f7220656e6163746d656e742e77686963682052656d6f76652061207265666572656e64756d2e7265665f696e646578436f6d706163743c5265666572656e64756d496e6465783e205665746f20616e6420626c61636b6c697374207468652065787465726e616c2070726f706f73616c20686173682e205363686564756c65207468652063757272656e746c792065787465726e616c6c792d70726f706f736564206d616a6f726974792d63617272696573207265666572656e64756d20746f206265207461626c656420696d6d6564696174656c792e204966207468657265206973206e6f2065787465726e616c6c792d70726f706f736564207265666572656e64756d2063757272656e746c792c206f72206966207468657265206973206f6e6520627574206974206973206e6f742061206d616a6f726974792d63617272696573207265666572656e64756d207468656e206974206661696c732e202d206070726f706f73616c5f68617368603a205468652068617368206f66207468652063757272656e742065787465726e616c2070726f706f73616c2e202d2060766f74696e675f706572696f64603a2054686520706572696f64207468617420697320616c6c6f77656420666f7220766f74696e67206f6e20746869732070726f706f73616c2e20496e6372656173656420746f20202060456d657267656e6379566f74696e67506572696f646020696620746f6f206c6f772e202d206064656c6179603a20546865206e756d626572206f6620626c6f636b20616674657220766f74696e672068617320656e64656420696e20617070726f76616c20616e6420746869732073686f756c64206265202020656e61637465642e205468697320646f65736e277420686176652061206d696e696d756d20616d6f756e742e70726f706f73616c5f68617368543a3a48617368766f74696e675f706572696f6464656c6179205363686564756c652061206e656761746976652d7475726e6f75742d62696173207265666572656e64756d20746f206265207461626c6564206e657874206f6e6365206974206973206c6567616c20746f207363686564756c6520616e2065787465726e616c207265666572656e64756d2e20556e6c696b65206065787465726e616c5f70726f706f7365602c20626c61636b6c697374696e6720686173206e6f20656666656374206f6e207468697320616e64206974206d6179207265706c6163652061207072652d7363686564756c6564206065787465726e616c5f70726f706f7365602063616c6c2e205363686564756c652061206d616a6f726974792d63617272696573207265666572656e64756d20746f206265207461626c6564206e657874206f6e6365206974206973206c6567616c20746f207363686564756c6520616e2065787465726e616c207265666572656e64756d2e205363686564756c652061207265666572656e64756d20746f206265207461626c6564206f6e6365206974206973206c6567616c20746f207363686564756c6520616e2065787465726e616c207265666572656e64756d2e205363686564756c6520616e20656d657267656e63792063616e63656c6c6174696f6e206f662061207265666572656e64756d2e2043616e6e6f742068617070656e20747769636520746f207468652073616d6520566f746520696e2061207265666572656e64756d206f6e20626568616c66206f6620612073746173682e2049662060766f74652e69735f6179652829602c2074686520766f746520697320746f20656e616374207468652070726f706f73616c3b20206f7468657277697365206974206973206120766f746520746f206b65657020746865207374617475732071756f2e202d204f6e65204442206368616e67652c206f6e6520444220656e7472792e20566f746520696e2061207265666572656e64756d2e2049662060766f74652e69735f6179652829602c2074686520766f746520697320746f20656e616374207468652070726f706f73616c3b206f7468657277697365206974206973206120766f746520746f206b65657020746865207374617475732071756f2e566f74652050726f706f736520612073656e73697469766520616374696f6e20746f2062652074616b656e2e202d204f6e6520444220656e7472792e436f6d706163743c50726f70496e6465783e202d2054776f204442206368616e6765732c206f6e6520444220656e7472792e76616c7565436f6d706163743c42616c616e63654f663c543e3e0000000000001c6b11000f00000000000000000000006f22110009000000000000000000000000000000000000000000000000000000000000005c8f1100843c11000000000000000000b03b110001000000000000000100000000000000d52211000b0000000000000000000000b83b110027000000000000000000000000000000000000000000000000000000000000005c8f1100203d11000000000000000000e03b110001000000000000000100000000000000c3221100090000000101000000000000593211000700000000000000e83b110035000000000000000000000000000000000000005c8f1100203c11000000000000000000303c110002000000000000000000000000000000e02211000900000001010000000000006f2211000900000000000000403c110021000000000000000000000000000000000000005c8f1100643c11000000000000000000743c1100010000000000000000000000000000002b6b11000f0000000000000000000000282011000f000000000000000000000000000000000000000000000000000000000000005c8f1100843c110000000000000000007c3c110001000000000000000100000000000000436b11000d0000000000000000000000282011000f000000000000000000000000000000000000000000000000000000000000005c8f1100843c11000000000000000000943c1100020000000000000001000000000000006b1a1100100000000101000000000000282011000f00000000000000a43c110027000000000000000000000000000000000000005c8f1100903d11000000000000000000cc3c110001000000000000000000000000000000b62211000d0000000000000000000000d43c11002f000000000000000000000000000000000000000000000000000000000000005c8f1100203d11000000000000000000043d110001000000000000000100000000000000cc221100090000000101000000000000282011000f000000000000000c3d110011000000000000000000000000000000000000005c8f1100203d11000000000000000000303d1100010000000000000001000000000000007b1a1100060000000101000000000000383d11001f00000000000000a635110004000000000000000000000000000000000000005c8f1100583d11000000000000000000683d110004000000000000000100000000000000883d11000500000001010000000000000f5c11000c000000000000000f5c11000c000000000000000000000000000000000000005c8f1100903d11000000000000000000a03d110002000000000000000000000000000000601a11000b00000001010100000000000f5c11000c00000000000000b03d11001a000000000000000000000000000000000000005c8f1100cc3d11000000000000000000dc3d110001000000000000000100000000000000506b11001500000000000000000000000353110004000000000000000000000000000000000000000000000000000000000000005c8f1100983e11000000000000000000e43d110002000000000000000100000000000000042311000c0000000000000000000000f43d110018000000000000000000000000000000000000000000000000000000000000005c8f11000c3e110000000000000000001c3e1100040000000000000000000000000000003c3e1100090000000101000000000000593211000700000000000000453e110023000000000000000000000000000000000000005c8f1100683e11000000000000000000783e110002000000000000000000000000000000883e11000d00000001010000000000005932110007000000000000000353110004000000000000000000000000000000000000005c8f1100983e11000000000000000000a83e11000100000000000000010000003f4511003d0000005665633c2850726f70496e6465782c20543a3a486173682c20543a3a4163636f756e744964293e00f744110048000000285665633c75383e2c20543a3a4163636f756e7449642c2042616c616e63654f663c543e2c20543a3a426c6f636b4e756d626572290000003b0000000000000001000000d90000006644110058000000be441100390000002842616c616e63654f663c543e2c205665633c543a3a4163636f756e7449643e290000003b0000000000000001000000cb0000004544110021000000f94311004c0000003b00000000000000010000005c0000007943110049000000c2431100370000005265666572656e64756d496e666f3c543a3a426c6f636b4e756d6265722c20543a3a486173683e004c4311002d0000005665633c28543a3a426c6f636b4e756d6265722c20543a3a486173682c205265666572656e64756d496e646578293e00fc421100500000005665633c543a3a4163636f756e7449643e0000003b000000000000000100000055000000d342110029000000285265666572656e64756d496e6465782c20543a3a4163636f756e74496429003b0000000000000001000000520000009441110058000000ec411100530000003f42110057000000964211003d00000050726f78790000003b000000000000000100000052000000264111004c000000724111002200000028543a3a4163636f756e7449642c20436f6e76696374696f6e2900003b0000000000000001000000da000000d6401100500000007640110056000000cc4011000a00000028543a3a486173682c20566f74655468726573686f6c64293b000000000000000100000052000000883f110056000000de3f11005500000033401100290000005c4011001a000000426c61636b6c69737428543a3a426c6f636b4e756d6265722c205665633c543a3a4163636f756e7449643e293b0000000000000001000000cb000000fa3e1100540000004e3f11003a00000043616e63656c6c6174696f6e730000003b000000000000000100000052000000b03e11004a000000205265636f7264206f6620616c6c2070726f706f73616c7320746861742068617665206265656e207375626a65637420746f20656d657267656e63792063616e63656c6c6174696f6e2e2041207265636f7264206f662077686f207665746f656420776861742e204d6170732070726f706f73616c206861736820746f206120706f737369626c65206578697374656e7420626c6f636b206e756d6265722028756e74696c207768656e206974206d6179206e6f742062652072657375626d69747465642920616e642077686f207665746f65642069742e20546865207265666572656e64756d20746f206265207461626c6564207768656e6576657220697420776f756c642062652076616c696420746f207461626c6520616e2065787465726e616c2070726f706f73616c2e20546869732068617070656e73207768656e2061207265666572656e64756d206e6565647320746f206265207461626c656420616e64206f6e65206f662074776f20636f6e646974696f6e7320617265206d65743a202d20604c6173745461626c656457617345787465726e616c60206973206066616c7365603b206f72202d20605075626c696350726f70736020697320656d7074792e205472756520696620746865206c617374207265666572656e64756d207461626c656420776173207375626d69747465642065787465726e616c6c792e2046616c7365206966206974207761732061207075626c69632070726f706f73616c2e2047657420746865206163636f756e742028616e64206c6f636b20706572696f64732920746f20776869636820616e6f74686572206163636f756e742069732064656c65676174696e6720766f74652e2057686f2069732061626c6520746f20766f746520666f722077686f6d2e2056616c7565206973207468652066756e642d686f6c64696e67206163636f756e742c206b65792069732074686520766f74652d7472616e73616374696f6e2d73656e64696e67206163636f756e742e204765742074686520766f746520696e206120676976656e207265666572656e64756d206f66206120706172746963756c617220766f7465722e2054686520726573756c74206973206d65616e696e6766756c206f6e6c792069662060766f746572735f666f726020696e636c756465732074686520766f746572207768656e2063616c6c6564207769746820746865207265666572656e64756d2028796f75276c6c20676574207468652064656661756c742060566f7465602076616c7565206f7468657277697365292e20496620796f7520646f6e27742077616e7420746f20636865636b2060766f746572735f666f72602c207468656e20796f752063616e20616c736f20636865636b20666f722073696d706c65206578697374656e636520776974682060566f74654f663a3a657869737473602066697273742e204765742074686520766f7465727320666f72207468652063757272656e742070726f706f73616c2e205175657565206f66207375636365737366756c207265666572656e646120746f20626520646973706174636865642e2053746f726564206f72646572656420627920626c6f636b206e756d6265722e20496e666f726d6174696f6e20636f6e6365726e696e6720616e7920676976656e207265666572656e64756d2e20546865206c6f77657374207265666572656e64756d20696e64657820726570726573656e74696e6720616e20756e62616b6564207265666572656e64756d2e20457175616c20746f20605265666572656e64756d436f756e74602069662074686572652069736e2774206120756e62616b6564207265666572656e64756d2e20546865206e6578742066726565207265666572656e64756d20696e6465782c20616b6120746865206e756d626572206f66207265666572656e6461207374617274656420736f206661722e2054686f73652077686f2068617665206c6f636b65642061206465706f7369742e204d6170206f662068617368657320746f207468652070726f706f73616c20707265696d6167652c20616c6f6e6720776974682077686f207265676973746572656420697420616e64207468656972206465706f7369742e2054686520626c6f636b206e756d6265722069732074686520626c6f636b20617420776869636820697420776173206465706f73697465642e20546865207075626c69632070726f706f73616c732e20556e736f727465642e20546865207365636f6e64206974656d206973207468652070726f706f73616c277320686173682e20546865206e756d626572206f6620287075626c6963292070726f706f73616c7320746861742068617665206265656e206d61646520736f206661722e00000000044711000f000000000000009c6011000e000000000000005c8f1100144711000000000000000000244711000500000000000000000000004c4711000c000000000000009c6011000e000000000000005c8f1100e8471100000000000000000058471100010000000000000000000000604711000c000000000000009c6011000e000000000000005c8f1100e847110000000000000000006c471100010000000000000000000000744711000e00000000000000824711000c000000000000005c8f1100904711000000000000000000a0471100010000000000000000000000a847110015000000000000009c6011000e000000000000005c8f1100c04711000000000000000000d0471100010000000000000000000000d84711000d000000000000009c6011000e000000000000005c8f1100e84711000000000000000000f8471100010000000000000000000000004811001300000000000000824711000c000000000000005c8f1100144811000000000000000000244811000100000000000000456e6163746d656e74506572696f64003b0000000000000001000000db000000bd4911005c0000005c8f110000000000194a11004c000000654a11005a000000bf4a1100270000004c61756e6368506572696f648449110039000000566f74696e67506572696f64564911002e0000004d696e696d756d4465706f73697442616c616e63654f663c543e00003b0000000000000001000000dc000000094911004d000000456d657267656e6379566f74696e67506572696f640000003b0000000000000001000000dd000000ce4811003b000000436f6f6c6f6666506572696f640000003b0000000000000001000000de0000007648110058000000507265696d616765427974654465706f736974003b0000000000000001000000570000002c4811004a0000002054686520616d6f756e74206f662062616c616e63652074686174206d757374206265206465706f7369746564207065722062797465206f6620707265696d6167652073746f7265642e20506572696f6420696e20626c6f636b7320776865726520616e2065787465726e616c2070726f706f73616c206d6179206e6f742062652072652d7375626d6974746564206166746572206265696e67207665746f65642e204d696e696d756d20766f74696e6720706572696f6420616c6c6f77656420666f7220616e20656d657267656e6379207265666572656e64756d2e20546865206d696e696d756d20616d6f756e7420746f20626520757365642061732061206465706f73697420666f722061207075626c6963207265666572656e64756d2070726f706f73616c2e20486f77206f6674656e2028696e20626c6f636b732920746f20636865636b20666f72206e657720766f7465732e20486f77206f6674656e2028696e20626c6f636b7329206e6577207075626c6963207265666572656e646120617265206c61756e636865642e20546865206d696e696d756d20706572696f64206f66206c6f636b696e6720616e642074686520706572696f64206265747765656e20612070726f706f73616c206265696e6720617070726f76656420616e6420656e61637465642e2049742073686f756c642067656e6572616c6c792062652061206c6974746c65206d6f7265207468616e2074686520756e7374616b6520706572696f6420746f20656e73757265207468617420766f74696e67207374616b657273206861766520616e206f70706f7274756e69747920746f2072656d6f7665207468656d73656c7665732066726f6d207468652073797374656d20696e207468652063617365207768657265207468657920617265206f6e20746865206c6f73696e672073696465206f66206120766f74652e76616c756520746f6f206c6f7770726f706f73657227732062616c616e636520746f6f206c6f7763616e206f6e6c79207365636f6e6420616e206578697374696e672070726f706f73616c7365636f6e64657227732062616c616e636520746f6f206c6f776e6f7420612070726f787963616e6e6f742063616e63656c207468652073616d652070726f706f73616c207477696365756e6b6e6f776e20696e64657870726f706f73616c20616c7265616479206d61646570726f706f73616c207374696c6c20626c61636b6c69737465646e6f2070726f706f73616c206d6164656e6578742065787465726e616c2070726f706f73616c206e6f742073696d706c65206d616a6f72697479696e76616c696420686173686e6f2065787465726e616c2070726f706f73616c756e6b6e6f776e2070726f706f73616c6964656e74697479206d6179206e6f74207665746f20612070726f706f73616c207477696365616c726561647920612070726f787977726f6e672070726f78796e6f742064656c656761746564707265696d61676520616c7265616479206e6f7465646e6f7420696d6d696e656e74746f6f206561726c79696d6d696e656e746e6f7420666f756e6470726f706f73616c206e6f7420666f756e64766f746520676976656e20666f7220696e76616c6964207265666572656e64756d2e557064617465526563656e7448696e747346696e616c2068696e74206d7573742062652075706461746564206f6e6c79206f6e636520696e2074686520626c6f636b46696e616c697a6564206865696768742061626f766520626c6f636b206e756d62657200370000000400000004000000df000000e0000000e1000000370000000400000004000000e20000004f72646572656448696e74734d656469616e616c77617973206174206c65617374206f6e6520726563656e742073616d706c653b20716564726563656e7420616e64206f72646572656420636f6e7461696e207468652073616d65206974656d733b2071656400003700000004000000040000002a0000007072756e696e672064696374617465642062792077696e646f775f73697a6520776869636820697320616c776179732073617475726174656420617420313b2071656400404e1100230000005c8f110000000000634e11001e0000004552524f523a20436f727275707465642073746174653a206c696e6b6564206d6170203a206e6578742076616c756520646f65736e277420657869737420617420000000404e1100230000005c8f1100000000009c4e1100220000003a2070726576696f75732076616c756520646f65736e2774206578697374206174200000404e1100230000005c8f110000000000d84e11001e0000003a20686561642076616c756520646f65736e277420657869737420617420506172656e7420686173682073686f756c642062652076616c69642e5472616e73616374696f6e207472696520726f6f74206d7573742062652076616c69642e00008f4f110032000000446967657374206974656d206d757374206d6174636820746861742063616c63756c617465642e53746f7261676520726f6f74206d757374206d6174636820746861742063616c63756c617465642e4e756d626572206f6620646967657374206974656d73206d757374206d6174636820746861742063616c63756c617465642e00000000000000f04f11000a00000000000000fc4f110001000000000000000000000014501100020000000000000066696e616c5f68696e740000000000007c50110004000000000000008050110017000000245011003d000000615011001b0000002048696e7420746861742074686520617574686f72206f66207468697320626c6f636b207468696e6b732074686520626573742066696e616c697a656420626c6f636b2069732074686520676976656e206e756d6265722e68696e74436f6d706163743c543a3a426c6f636b4e756d6265723e0000000000085111000a000000000000009c6011000e000000000000005c8f1100145111000000000000000000245111000100000000000000000000002c5111000d000000000000009c6011000e000000000000005c8f11003c51110000000000000000004c511100010000000000000057696e646f7753697a6500003b0000000000000001000000e30000009b511100460000005265706f72744c6174656e63790000003b0000000000000001000000e40000005451110047000000205468652064656c617920616674657220776869636820706f696e74207468696e6773206265636f6d6520737573706963696f75732e2044656661756c7420697320313030302e20546865206e756d626572206f6620726563656e742073616d706c657320746f206b6565702066726f6d207468697320636861696e2e2044656661756c74206973203130312e000000000000006852110005000000000000007052110001000000000000000000000078521100010000000000000000000000805211000a000000000000008c521100010000000000000000000000945211000100000000000000000000009c5211000a000000000000007052110001000000000000000000000078521100010000000000000053756469640000000353110004000000eb521100180000004b65794368616e6765640000e252110009000000a65211003c0000005375646f4173446f6e6520546865207375646f6572206a757374207377697463686564206964656e746974793b20746865206f6c64206b657920697320737570706c6965642e4163636f756e7449642041207375646f206a75737420746f6f6b20706c6163652e626f6f6c476f7373697041740000000000945311001100000000000000a8531100010000000000000000000000b0531100010000000000000000000000b853110007000000000000005c8f1100000000000000000000000000c0531100010000000000000000000000c85311000b00000000000000d4531100010000000000000000000000dc53110001000000000000004865617274626561745265636569766564000000ad5411000b0000007d54110030000000416c6c476f6f64004854110035000000536f6d654f66666c696e65003054110018000000e45311004c0000002041742074686520656e64206f66207468652073657373696f6e2c206174206c65617374206f6e63652076616c696461746f722077617320666f756e6420746f206265206f66666c696e652e5665633c4964656e74696669636174696f6e5475706c653e2041742074686520656e64206f66207468652073657373696f6e2c206e6f206f6666656e63652077617320636f6d6d69747465642e2041206e657720686561727462656174207761732072656365697665642066726f6d2060417574686f72697479496460417574686f726974794964c85411003a00000033000000120000002f686f6d652f6461766964642f6465762f7375627374726174652f7072696d6974697665732f72756e74696d652f7372632f63757276652e7273417574686f726564426c6f636b737061726974792f696d2d6f6e6c696e652d776f726b65722d73746174757300008d551100080000009555110020000000696d6f6e6c696e6570616c6c65745f696d5f6f6e6c696e652f686f6d652f6461766964642f6465762f7375627374726174652f6672616d652f696d2d6f6e6c696e652f7372632f6c69622e72735b696e6465783a205d205265706f7274696e6720696d2d6f6e6c696e6520617420626c6f636b3a20707265636f6e646974696f6e3a20616c6c20696d706f7274732073686f756c6420626520636865636b656420616761696e737420746865207369676e617475726573206f6620636f72726573706f6e64696e670a09090909090966756e6374696f6e7320646566696e65642062792060646566696e655f656e762160206d6163726f206279207468652075736572206f6620746865206d6163726f3b0a0909090909097369676e617475726573206f662074686573652066756e6374696f6e7320646566696e6564206279206024706172616d73603b0a09090909090963616c6c7320616c77617973206d616465207769746820617267756d656e7473207479706573206f662077686963682061726520646566696e65642062792074686520636f72726573706f6e64696e6720696d706f7274733b0a09090909090974687573207479706573206f6620617267756d656e74732073686f756c6420626520657175616c20746f2074797065206c69737420696e206024706172616d736020616e640a0909090909096c656e677468206f6620617267756d656e74206c69737420616e642024706172616d732073686f756c6420626520657175616c3b0a0909090909097468757320746869732063616e206e6576657220626520604e6f6e65603b0a0909090909097165643b0a09090909090900000000000000305811000400000000000000345811000100000000000000000000004c5811000a00000000000000000000009c5811000700000000000000a4581100010000000000000000000000bc5811000900000000000000000000000459110007000000000000000c5911000200000000000000000000003c5911000b000000000000007375646f00000000d85a11000800000000000000e05a110010000000615b11004e0000005c8f110000000000f9591100340000005c8f1100000000002d5a11000b000000385a110008000000405a110019000000595a110018000000715a110035000000a65a11000c0000007365745f6b657900000000005e5b11000300000000000000b55a110023000000f05a11005d0000005c8f110000000000f9591100340000005c8f1100000000002d5a11000b000000385a110008000000405a1100190000004d5b110011000000a65a11000c0000007375646f5f61730000000000b25a11000300000000000000b55a11002300000000000000d85a11000800000000000000e05a1100100000009459110054000000e8591100110000005c8f110000000000f9591100340000005c8f1100000000002d5a11000b000000385a110008000000405a110019000000595a110018000000715a110035000000a65a11000c0000002041757468656e7469636174657320746865207375646f206b657920616e64206469737061746368657320612066756e6374696f6e2063616c6c207769746820605369676e656460206f726967696e2066726f6d206120676976656e206163636f756e742e20546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2e2023203c7765696768743e202d204f2831292e202d204c696d697465642073746f726167652072656164732e202d204f6e6520444220777269746520286576656e74292e202d20556e6b6e6f776e20776569676874206f662064657269766174697665206070726f706f73616c6020657865637574696f6e2e2023203c2f7765696768743e77686f3c543a3a4c6f6f6b7570206173205374617469634c6f6f6b75703e3a3a536f7572636570726f706f73616c426f783c543a3a50726f706f73616c3e2041757468656e74696361746573207468652063757272656e74207375646f206b657920616e6420736574732074686520676976656e204163636f756e7449642028606e6577602920617320746865206e6577207375646f206b65792e202d204f6e65204442206368616e67652e6e65772041757468656e7469636174657320746865207375646f206b657920616e64206469737061746368657320612066756e6374696f6e2063616c6c20776974682060526f6f7460206f726967696e2e5375646f00000000000c5c11000300000000000000000000000f5c11000c000000000000000000000000000000000000000000000000000000000000005c8f11001c5c110000000000000000002c5c11000100000000000000010000004b6579543a3a4163636f756e744964003b0000000000000001000000bc000000345c1100210000002054686520604163636f756e74496460206f6620746865207375646f206b65792e6d656d6f727976616c69646174696f6e3a20696d706f727420656e74727920706f696e747320746f2061206e6f6e2d6578697374656e74207479706543616e6e6f7420696d706f727420676c6f62616c736d6f64756c6520696d706f7274732061206e6f6e2d6578697374656e742066756e6374696f6e6d6f64756c6520696d706f72747320606578745f7072696e746c6e60206275742064656275672066656174757265732064697361626c656443616e6e6f7420696d706f7274207461626c65736d6f64756c652068617320696d706f7274732066726f6d2061206e6f6e2d27656e7627206e616d6573706163654d656d6f727920696d706f7274206d757374206861766520746865206669656c64206e616d6520276d656d6f7279274d756c7469706c65206d656d6f727920696d706f72747320646566696e65644d6178696d756d206e756d626572206f662070616765732073686f756c6420626520616c77617973206465636c617265642e52657175657374656420696e697469616c206e756d626572206f662070616765732073686f756c64206e6f74206578636565642074686520726571756573746564206d6178696d756d4d6178696d756d206e756d626572206f662070616765732073686f756c64206e6f74206578636565642074686520636f6e66696775726564206d6178696d756d2e72657475726e2074797065206572726f7276616c69646174696f6e206572726f72647572696e6720657865637574696f6e00000000ac5e11000900000000000000b85e11000200000000000000000000005c8f1100000000000000000068656172746265617400000000000000ac5e11000900000000000000e85e11001900000000000000015f11000a000000000000000b5f11002f0000004865617274626561743c543a3a426c6f636b4e756d6265723e5f7369676e61747572653c543a3a417574686f7269747949642061732052756e74696d654170705075626c69633e3a3a5369676e6174757265000000000000075311000800000000000000000000009c6011000e000000000000000000000000000000000000000000000000000000000000005c8f1100246111000000000000000000ac6011000100000000000000010000000000000020631100040000000000000000000000b460110013000000000000000000000000000000000000000000000000000000000000005c8f1100c86011000000000000000000d860110001000000000000000100000000000000ab6d1100120000000201010000000000e76f11000c00000000000000e06011000900000000000000e960110007000000000000005c8f1100f060110000000000000000000061110002000000000000000000000000000000025511000e0000000201010000000000e76f11000c00000000000000106111000e000000000000001e61110003000000000000005c8f110024611100000000000000000034611100020000000000000001000000543a3a426c6f636b4e756d62657200004b621100280000005665633c543a3a417574686f7269747949643e003b000000000000000100000055000000176211003400000041757468496e6465785665633c75383e3b0000000000000001000000cf000000bb61110039000000f461110023000000543a3a56616c696461746f7249647533320000003b00000000000000010000005c0000004461110045000000896111003200000020466f7220656163682073657373696f6e20696e6465782c207765206b6565702061206d617070696e67206f662060543a3a56616c696461746f7249646020746f20746865206e756d626572206f6620626c6f636b7320617574686f7265642062792074686520676976656e20617574686f726974792e20466f7220656163682073657373696f6e20696e6465782c207765206b6565702061206d617070696e67206f66206041757468496e6465786020746f20606f6666636861696e3a3a4f70617175654e6574776f726b5374617465602e205468652063757272656e7420736574206f66206b6579732074686174206d61792069737375652061206865617274626561742e2054686520626c6f636b206e756d626572207768656e2077652073686f756c6420676f737369702e00be62110023000000946211002a0000003c7f11001e0000000600000032000000696e7465726e616c206572726f723a20656e746572656420756e726561636861626c6520636f64653a205f5f5068616e746f6d4974656d2073686f756c64206e6576657220626520757365642e4475706c696361746564206865617274626561742e4e6f6e206578697374656e74207075626c6963206b65792e417574686f72697479446973636f766572794b657973417574686f7273686970446964536574556e636c65734261626545706f6368496e646578417574686f72697469657347656e65736973536c6f7443757272656e74536c6f7452616e646f6d6e6573734e65787452616e646f6d6e6573735365676d656e74496e646578556e646572436f6e737472756374696f6e746f6f206d616e7920696e737472756374696f6e73547269656420746f20736872696e6b20746f2061206c61726765722063617061636974794e6f6e2d656d7074792066756e6374696f6e20626f647920657870656374656400406411000f0000004f641100020000005164110003000000617373657274696f6e206661696c65643a20636f6e746578742e6672616d655f737461636b2e69735f656d7074792829417420696e737472756374696f6e202840293a2043616e2774206465636f6465207761736d20636f64654d6f64756c65206973206e6f742076616c69646d6f64756c65206465636c6172657320696e7465726e616c206d656d6f72796d756c7469706c65207461626c6573206465636c617265647461626c652065786365656473206d6178696d756d2073697a6520616c6c6f776564757365206f6620666c6f6174696e6720706f696e74207479706520696e2066756e6374696f6e20747970657320697320666f7262696464656e757365206f6620666c6f6174696e6720706f696e74207479706520696e206c6f63616c7320697320666f7262696464656e757365206f6620666c6f6174696e6720706f696e74207479706520696e20676c6f62616c7320697320666f7262696464656e67617320696e737472756d656e746174696f6e206661696c6564737461636b2068656967687420696e737472756d656e746174696f6e206661696c656463616c6c6465706c6f796465706c6f792066756e6374696f6e2069736e2774206578706f72746564756e6b6e6f776e206578706f72743a20657870656374696e67206f6e6c79206465706c6f7920616e642063616c6c2066756e6374696f6e7366756e6374696f6e206861732061206e6f6e2d6578697374656e7420747970656578706f72742072656665727320746f206e6f6e2d6578697374656e742066756e6374696f6e657870656374656420612066756e6374696f6e656e74727920706f696e7420706f696e747320746f20616e20696d706f727465642066756e6374696f6e656e74727920706f696e74206861732077726f6e67207369676e617475726563616c6c2066756e6374696f6e2069736e2774206578706f727465646572726f722073657269616c697a696e6720696e737472756d656e746564206d6f64756c6552657475726e207479706573206c656e6774682073686f756c642062652030206f7220316e616d650000276911001e000000456911001f00000066756e6374696f6e5f73656374696f6e5f6c656e20213d20303b2071656466756e6374696f6e5f73656374696f6e5f6c656e20213d20303b2066756e6374696f6e5f73656374696f6e5f6c656e203d3d20636f64655f73656374696f6e5f6c656e3b2071656400000d6911001a000000e86811000a000000f26811001b00000073746172742066756e6374696f6e20657870656374656420746f20686176652074797065205b5d202d3e205b5d000000d768110011000000b76811002000000097681100200000006f681100280000007365676d656e74206f66667365742073686f756c642072657475726e2049333270617373697665206d656d6f7279207365676d656e747320617265206e6f7420737570706f727465647061737369766520656c656d656e74207365676d656e747320617265206e6f7420737570706f72746564746f6f206d616e79206d656d6f727920726567696f6e7320696e20696e6465782073706163653a20746f6f206d616e79207461626c657320696e20696e6465782073706163653a20747279696e6720746f20696d706f7274206d757461626c6520676c6f62616c206475706c6963617465206578706f72742046756e6374696f6e20232072656164696e672f76616c69646174696f6e206572726f723a204d697373696e6720626f647920666f722066756e6374696f6e206c656e677468206f662066756e6374696f6e2073656374696f6e206973202c207768696c65206c656e206f6620636f64652073656374696f6e20697320436f6e74726163744761735370656e7443757272656e745363686564756c654163636f756e74436f756e7465726578745f7365745f73746f726167656578745f6765745f73746f726167656578745f63616c6c6578745f696e7374616e74696174656578745f72657475726e6578745f63616c6c65726578745f616464726573736578745f6761735f70726963656578745f6761735f6c6566746578745f62616c616e63656578745f76616c75655f7472616e736665727265646578745f72616e646f6d6578745f6e6f776578745f6d696e696d756d5f62616c616e63656578745f64697370617463685f63616c6c6578745f726573746f72655f746f6578745f736372617463685f73697a656578745f736372617463685f726561646578745f736372617463685f77726974656578745f6465706f7369745f6576656e746578745f7365745f72656e745f616c6c6f77616e63656578745f72656e745f616c6c6f77616e63656578745f7072696e746c6e6578745f626c6f636b5f6e756d6265726578745f6765745f72756e74696d655f73746f72616765000000000000000100000002000000040000000800000010000000200000005075626c696350726f70436f756e745265666572656e64756d436f756e7444656d6f63726163794c6f77657374556e62616b65644c6173745461626c656457617345787465726e616c50687261676d656e456c656374696f6e456c656374696f6e526f756e6473496e697469616c697a6564000000000000146c11000e00000000000000246c11000100000000000000000000002c6c1100010000000000000000000000346c110006000000000000005c8f11000000000000000000000000003c6c1100010000000000000000000000446c110007000000000000005c8f11000000000000000000000000004c6c110001000000000000004e6577417574686f7269746965730000c76c11000d000000a36c11002400000050617573656400007c6c110027000000526573756d656400546c1100280000002043757272656e7420617574686f726974792073657420686173206265656e20726573756d65642e2043757272656e7420617574686f726974792073657420686173206265656e207061757365642e204e657720617574686f726974792073657420686173206265656e206170706c6965642e417574686f726974794c69737443757272656e7453657449644772616e64706146696e616c697479536574496453657373696f6e4f6666636861696e206572726f723a206665746368696e67206e6574776f726b207374617465206661696c6564214f6666636861696e206572726f723a207369676e696e67206661696c6564214f6666636861696e206572726f723a206465636f64696e6720576f726b6572537461747573206661696c6564214f6666636861696e206572726f723a207375626d697474696e67207472616e73616374696f6e206661696c656421496d4f6e6c696e655265636569766564486561727462656174734f6666656e6365735265706f72747342794b696e64496e6465780000000000046e110007000000000000000c6e11000200000000000000000000001c6e110002000000000000004f6666656e636500cf6e110004000000d36e11000e0000002c6e110055000000816e11004e00000020546865726520697320616e206f6666656e6365207265706f72746564206f662074686520676976656e20606b696e64602068617070656e656420617420746865206073657373696f6e5f696e6465786020616e6420286b696e642d7370656369666963292074696d6520736c6f742e2054686973206576656e74206973206e6f74206465706f736974656420666f72206475706c696361746520736c61736865732e4b696e644f706171756554696d65536c6f7453746f72656452616e676553657373696f6e43757272656e74496e6465785175657565644368616e67656444697361626c656456616c696461746f72730000000000004c6f11000a00000000000000586f1100010000000000000000000000606f110002000000000000004e657753657373696f6e0000e76f11000c000000706f110055000000c56f110022000000204e65772073657373696f6e206861732068617070656e65642e204e6f746520746861742074686520617267756d656e74206973207468652073657373696f6e20696e6465782c206e6f742074686520626c6f636b206e756d626572206173207468652074797065206d6967687420737567676573742e53657373696f6e496e64657856616c696461746f72436f756e744d696e696d756d56616c696461746f72436f756e745374616b696e6743757272656e7445726143757272656e74457261537461727453657373696f6e496e64657843757272656e74457261506f696e74734561726e6564466f726365457261536c6173685265776172644672616374696f6e426f6e646564457261734561726c69657374556e6170706c696564536c61736853746f7261676556657273696f6e496e73756666696369656e7456616c7565496e76616c6964536c617368496e6465784475706c6963617465496e646578456d707479546172676574734261644f726967696e416c7265616479506169726564416c7265616479426f6e6465644e6f7453746173684e6f74436f6e74726f6c6c65724e6f4d6f72654368756e6b7300000000000000087111000d000000000000003c72110001000000000000000000000000711100080000000000000044721100010000000000000000000000f37011000d000000000000004c721100010000000000000000000000e67011000d0000000000000054721100010000000000000000000000dd70110009000000000000005c721100010000000000000000000000d17011000c0000000000000064721100010000000000000000000000c37011000e000000000000006c721100010000000000000000000000b2701100110000000000000074721100010000000000000000000000a170110011000000000000007c721100010000000000000000000000157111000c00000000000000847211000100000000000000b57311001a000000a0731100150000008773110019000000697311001e000000307311003900000017731100190000000673110011000000e472110022000000b1721100330000008c721100250000002043616e206e6f74207363686564756c65206d6f726520756e6c6f636b206368756e6b732e2043616e206e6f7420626f6e6420776974682076616c7565206c657373207468616e206d696e696d756d2062616c616e63652e20536c617368207265636f726420696e646578206f7574206f6620626f756e64732e204475706c696361746520696e6465782e20546172676574732063616e6e6f7420626520656d7074792e2053686f756c642062652074686520726f6f74206f726967696e206f72207468652060543a3a536c61736843616e63656c4f726967696e602e20436f6e74726f6c6c657220697320616c7265616479207061697265642e20537461736820697320616c726561647920626f6e6465642e204e6f742061207374617368206163636f756e742e204e6f74206120636f6e74726f6c6c6572206163636f756e742e526571756972655375646f000000000000cf7311000b00000000000000f8731100010000000000000000741100200000002053656e646572206d75737420626520746865205375646f206163636f756e7474696d737461703054696d657374616d7020696e686572656e742064617461206973206e6f742070726f76696465642e496e76616c69642074696d657374616d7020696e686572656e74206461746120656e636f64696e672e54696d657374616d7044696455706461746542616c616e6365734e6578744665654d756c7469706c696572547265617375727950726f706f73616c436f756e74417070726f76616c73496e73756666696369656e7450726f706f7365727342616c616e6365496e76616c696450726f706f73616c496e646578000000000000c27411001c000000000000002c751100010000000000000000000000de7411001400000000000000347511000100000000000000577511001f0000003c7511001b000000204e6f2070726f706f73616c206174207468617420696e6465782e2050726f706f73657227732062616c616e636520697320746f6f206c6f772e000000000000a47511000d00000000000000b47511000100000000000000000000005c8f1100000000000000000042617463684578656375746564000000bc7511001e0000005665633c526573756c743c28292c2044697370617463684572726f723e3e00003700000004000000040000000c00000042725461626c65446174617461626c65370000000400000004000000e500000064656661756c744636345265696e74657270726574493634556e726561636861626c654e6f70426c6f636b00370000000400000004000000e60000004c6f6f704966456c7365456e6442724272496642725461626c650000370000000400000004000000e700000052657475726e43616c6c43616c6c496e6469726563740000370000000400000004000000e200000044726f7053656c6563744765744c6f63616c5365744c6f63616c5465654c6f63616c476574476c6f62616c536574476c6f62616c4933324c6f61644936344c6f61644633324c6f61644636344c6f61644933324c6f616438534933324c6f616438554933324c6f61643136534933324c6f61643136554936344c6f616438534936344c6f616438554936344c6f61643136534936344c6f61643136554936344c6f61643332534936344c6f616433325549333253746f726549363453746f726546333253746f726546363453746f726549333253746f72653849333253746f7265313649363453746f72653849363453746f7265313649363453746f7265333243757272656e744d656d6f727947726f774d656d6f7279493332436f6e737400370000000400000004000000e8000000493634436f6e7374370000000400000004000000e9000000463332436f6e7374463634436f6e73743700000004000000040000000e00000049333245717a49333245714933324e654933324c74534933324c74554933324774534933324774554933324c65534933324c655549333247655349333247655549363445717a49363445714936344e654936344c74534936344c74554936344774534936344774554936344c65534936344c655549363447655349363447655546333245714633324e654633324c7446333247744633324c65463332476546363445714636344e654636344c7446363447744636344c654636344765493332436c7a49333243747a493332506f70636e744933324164644933325375624933324d756c493332446976534933324469765549333252656d5349333252656d55493332416e644933324f72493332586f7249333253686c4933325368725349333253687255493332526f746c493332526f7472493634436c7a49363443747a493634506f70636e744936344164644936345375624936344d756c493634446976534936344469765549363452656d5349363452656d55493634416e644936344f72493634586f7249363453686c4936345368725349363453687255493634526f746c493634526f74724633324162734633324e65674633324365696c463332466c6f6f724633325472756e634633324e656172657374463332537172744633324164644633325375624633324d756c4633324469764633324d696e4633324d6178463332436f70797369676e4636344162734636344e65674636344365696c463634466c6f6f724636345472756e634636344e656172657374463634537172744636344164644636345375624636344d756c4636344469764636344d696e4636344d6178463634436f70797369676e493332577261704936344933325472756e63534633324933325472756e63554633324933325472756e63534636344933325472756e6355463634493634457874656e6453493332493634457874656e64554933324936345472756e63534633324936345472756e63554633324936345472756e63534636344936345472756e6355463634463332436f6e7665727453493332463332436f6e7665727455493332463332436f6e7665727453493634463332436f6e766572745549363446333244656d6f7465463634463634436f6e7665727453493332463634436f6e7665727455493332463634436f6e7665727453493634463634436f6e766572745549363446363450726f6d6f74654633324933325265696e746572707265744633324936345265696e746572707265744636344633325265696e7465727072657449333200003700000004000000040000000c0000004e6f526573756c7456616c7565000000370000000400000004000000ea000000463634493332493634463332f87b11000b000000492f4f204572726f723a20496e76616c696444617461547261696c696e6744617461556e6578706563746564456f6600657c1100670000001001000020000000407c11002500000043616c6c20746f2066756e6374696f6e2074686174206f75742d6f662d626f756e64733a202f686f6d652f6461766964642f2e636172676f2f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f707761736d2d7574696c732d302e31322e302f7372632f737461636b5f6865696768742f6d6f642e7273546869732073686f756c64206265206120696e646578206f66206120646566696e65642066756e6374696f6e44756520746f2076616c69646174696f6e20636f64652073656374696f6e2073686f756c642065786973747346756e6374696f6e20626f6479206973206f7574206f6620626f756e647366756e6374696f6e20696d706f727420636f756e74206973206e6f74207a65726f3b20696d706f72742073656374696f6e206d757374206578697374733b2071656466756e635f696478206973206c657373207468616e2066756e6374696f6e20696d706f72747320636f756e743b0a090909096e74682066756e6374696f6e20696d706f7274206d7573742062652060536f6d65603b0a09090909716564000000188e110012000000397e11000f0000000c7e11000a000000167e1100140000002a7e11000f0000005369676e61747572652020287370656369666965642062792066756e6320292069736e277420646566696e6564206973206e6f7420646566696e65640d7f1100120000001f7f11000c0000006066756e635f696478602073686f756c6420636f6d652066726f6d20606e6565645f7468756e6b73603b0a09090909606e6565645f7468756e6b736020697320706f70756c617465642077697468207468652073616d65206974656d73207468617420696e20607265706c6163656d656e745f6d6170603b0a090909097165644174207468697320706f696e7420616e20696e646578206d7573742062652061737369676e656420746f2065616368207468756e6b66756e6374696f6e207769746820696478202069736e277420666f756e64003c7f11001e000000030000000a0000003c3a3a636f72653a3a6d6163726f733a3a70616e6963206d6163726f733e617373657274696f6e206661696c65643a20656e64203c3d206c656e0000e0831100480000000302000023000000e0831100480000000402000023000000617373657274696f6e206661696c65643a206d6964203c3d206c656e8c901100490000000f00000028000000d47f1100490000008e0200001d0000002f72757374632f373661323532656139653762653933613631666664663333623335333365323461396366343539642f7372632f6c6962636f72652f736c6963652f736f72742e7273000000d47f110049000000a100000030000000d47f110049000000a4000000300000004672616d6569735f706f6c796d6f727068696300370000000400000004000000eb000000656e645f61726974790000003700000004000000040000000c0000006272616e63685f617269747973746172745f6865696768744e6f2066756e6374696f6e2073656374696f6e4e6f20636f64652073656374696f6e4e6f20747970652073656374696f6e000000f48211000a00000046756e6374696f6e206973206e6f7420666f756e6420696e2066756e632073656374696f6e46756e6374696f6e20626f647920666f722074686520696e6465782069736e277420666f756e64e88211000c000000ac8211000b000000737461636b206d757374206265206e6f6e2d656d70747900a18211000b0000005882110006000000737461636b206f766572666c6f774172697479206f6620616c6c206a756d702d74617267657473206d75737420626520657175616c54797065206e6f7420666f756e64005182110007000000b48111006e000000c8000000170000002f686f6d652f6461766964642f2e636172676f2f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f707761736d2d7574696c732d302e31322e302f7372632f737461636b5f6865696768742f6d61785f6865696768742e72736d61785f686569676874707761736d5f7574696c733a3a737461636b5f6865696768743a3a6d61785f6865696768747472756e633a20707573683a2000009c82110005000000747279696e6720746f20706f70206d6f72652076616c756573207468616e20707573686564737461636b20756e646572666c6f77706f703a20756e726561636861626c65706f705f6672616d653a20636f6e74726f6c20737461636b20697320656d707479636f6e74726f6c20737461636b206f75742d6f662d626f756e6473707573685f6672616d653a2066756e635f6964783a204e6f6e65536f6d650000370000000400000004000000ec000000656e766761730000308311005e000000120100001c0000002f686f6d652f6461766964642f2e636172676f2f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f707761736d2d7574696c732d302e31322e302f7372632f6761732f6d6f642e72736c6173745f696e6465782069732067726561746572207468616e20303b206c6173745f696e64657820697320737461636b2073697a65202d20313b20716564000000e083110048000000ed0a00000a0000002f72757374632f373661323532656139653762653933613631666664663333623335333365323461396366343539642f7372632f6c6962636f72652f736c6963652f6d6f642e7273e083110048000000f30a00000e000000488411003f000000440000000d0000002f686f6d652f6461766964642f6465762f7375627374726174652f7072696d6974697665732f61726974686d657469632f7372632f62696775696e742e7273000000000000000000617474656d707420746f20646976696465206279207a65726f63616e6e6f74206669742061206e756d62657220696e746f2075313238616c7265616479206d757461626c7920626f72726f77656400003b00000000000000010000005a000000616c726561647920626f72726f7765643b00000000000000010000005900000072656d696e646572206f6620646976206279206320697320616c77617973206c657373207468616e20633b20716564004d0000000800000004000000bf000000726573756c742063616e6e6f742066697420696e207531323862616265736c6f74436f756c64206e6f74206465636f64652072657175657374656420696e686572656e742074797065214241424520696e686572656e742064617461206e6f7420666f756e643c7761736d3a73747269707065643e0000003b00000000000000010000003c000000486f737420746f207761736d2076616c7565732061726520656e636f64656420636f72726563746c793b2071656400003b00000000000000010000003c00000072756e74696d6552756e74696d65206d656d6f7279206578686175737465642e2041626f7274696e6748617368206e6f7420657175616c496e76616c6964206f726967696e43616e206e6f74206c6f6f6b757044697370617463684572726f725472616e73616374696f6e20776f756c642065786861757374732074686520626c6f636b206c696d6974735472616e73616374696f6e2068617320616e20616e6369656e7420626972746820626c6f636b5472616e73616374696f6e20686173206120626164207369676e61747572655472616e73616374696f6e206973206f757464617465645472616e73616374696f6e2077696c6c2062652076616c696420696e2074686520667574757265496e6162696c69747920746f2070617920736f6d6520666565732028652e672e206163636f756e742062616c616e636520746f6f206c6f77295472616e73616374696f6e2063616c6c206973206e6f74206578706563746564496e76616c69645472616e73616374696f6e20637573746f6d206572726f72436f756c64206e6f742066696e6420616e20756e7369676e65642076616c696461746f7220666f722074686520756e7369676e6564207472616e73616374696f6e436f756c64206e6f74206c6f6f6b757020696e666f726d6174696f6e20726571756972656420746f2076616c696461746520746865207472616e73616374696f6e556e6b6e6f776e5472616e73616374696f6e20637573746f6d206572726f7200617474656d707420746f20646976696465206279207a65726f0000006c88110040000000580000002b0000002f686f6d652f6461766964642f6465762f7375627374726174652f7072696d6974697665732f72756e74696d652f7372632f67656e657269632f6572612e7273696e7465726e616c206572726f723a20656e746572656420756e726561636861626c6520636f6465e4881100430000005a000000120000002f686f6d652f6461766964642f6465762f7375627374726174652f7072696d6974697665732f73616e64626f782f7372632f2e2e2f776974686f75745f7374642e727300e48811004300000068000000120000006d616b655f746f705f6672616d655f706f6c796d6f72706869632069732063616c6c6564207769746820656d707479206672616d6520737461636b00ed0000000c00000004000000ee000000746869732066756e6374696f6e2063616e27742062652063616c6c6564207769746820656d707479206672616d6520737461636b4d6973706c6163656420656c736520696e737472756374696f6e0000fc8a110047000000438b110005000000c08a110037000000f78a1100050000008e8a110017000000858a110009000000d68c1100140000006d8a110018000000858a110009000000d68c1100140000003c8a11001d000000598a1100130000006c8a110001000000546f6f206c61726765206d656d6f727920616c69676e6d656e7420325e20286578706563746564206174206d6f73742029547279696e6720746f2075706461746520676c6f62616c20206f66207479706520547279696e6720746f20757064617465206c6f63616c20416e795370656369666963370000000400000004000000ea0000004c6162656c7320696e2062725f7461626c6520706f696e747320746f20626c6f636b206f6620646966666572656e742074797065733a2020616e6420496620626c6f636b20776974686f757420656c736520726571756972656420746f2068617665204e6f526573756c7420626c6f636b20747970652e2042757420697420686173202074797065588b110018000000708b11000b000000556e657870656374656420737461636b20686569676874202c20657870656374656420547279696e6720746f2061636365737320706172656e74206672616d6520737461636b2076616c7565732e0000b88b110017000000cf8b11001600000045787065637465642076616c7565206f66207479706520206f6e20746f70206f6620737461636b2e20476f7420000000f08b110007000000537461636b3a2000000001007a8c110024000000508c110006000000568c11000e000000648c1100160000002c8c110024000000508c1100060000006d6178696d756d206d656d6f72792073697a65206d757374206265206174206d6f7374202070616765736d6178696d756d206c696d697420206973206c657373207468616e206d696e696d756d20696e697469616c206d656d6f72792073697a65206d757374206265206174206d6f7374200000b08c110026000000d68c110014000000547279696e6720746f20696e697469616c697a65207661726961626c65206f6620747970652020776974682076616c7565206f66207479706520496e69742065787072657373696f6e2073686f756c6420616c776179732062652077697468206c656e67746820324e6f6e20636f6e7374616e74206f70636f646520696e20696e69742065787072818d110007000000938d110022000000818d110007000000888d11000b00000045787072657373696f6e20646f65736e277420656e647320776974682060656e6460206f70636f6465476c6f62616c20206973206d757461626c6520646f65736e277420657869737473206f72206e6f742079657420646566696e6564000000c88d110010000000d88d11000f0000004d656d6f727920617420696e6465782020646f65736e27742065786973747300f88d11000f000000d88d11000f0000005461626c6520617420696e6465782000188e110012000000d88d11000f00000046756e6374696f6e20617420696e6465782000003c8e11000e000000d88d11000f0000005479706520617420696e646578200000aa8e110010000000d88d11000f0000007c8e1100100000009c8e11000e0000007c8e1100100000008c8e110010000000457870656374656420676c6f62616c2020746f20626520696d6d757461626c6520746f206265206d757461626c65476c6f62616c20617420696e646578206e6f6e2d656d70747920737461636b2065787065637465640000e48e110020000000048f110012000000747279696e6720746f206765742076616c756520617420706f736974696f6e20206f6e20737461636b206f662073697a6520636865636b656420636f75706c65206f66206c696e65732061626f7665003c8f110015000000657863656564656420737461636b206c696d6974200000005c8f1100000000004572726f72000000370000000400000004000000ef0000004c6f63616c732072616e6765206e6f7420696e2033322d6269742072616e6765ac8f110022000000ce8f110015000000e38f110007000000547279696e6720746f20616363657373206c6f63616c207769746820696e64657820207768656e20746865726520617265206f6e6c7920206c6f63616c730000049011002d000000319011000c0000003d90110003000000617373657274696f6e206661696c65643a2060286c656674203d3d20726967687429600a20206c6566743a2060602c0a2072696768743a2060603a20489011003400000064657374696e6174696f6e20616e6420736f7572636520736c69636573206861766520646966666572656e74206c656e677468738c90110049000000170000000d0000002f72757374632f373661323532656139653762653933613631666664663333623335333365323461396366343539642f7372632f6c6962636f72652f6d6163726f732f6d6f642e72730041d8a1c6000b0800000000000000000041e0a1c6000b08e0901100bc19100000b2e003046e616d6501a9e003e40500196578745f6c6f6767696e675f6c6f675f76657273696f6e5f3101196578745f73746f726167655f7365745f76657273696f6e5f31021e6578745f68617368696e675f74776f785f3132385f76657273696f6e5f3103196578745f73746f726167655f6765745f76657273696f6e5f31041d6578745f6d6973635f7072696e745f757466385f76657273696f6e5f31051b6578745f73746f726167655f636c6561725f76657273696f6e5f3106206578745f68617368696e675f626c616b65325f3235365f76657273696f6e5f3107286578745f73746f726167655f6368696c645f73746f726167655f6b696c6c5f76657273696f6e5f31081f6578745f73746f726167655f6368696c645f6765745f76657273696f6e5f3109216578745f73746f726167655f6368696c645f636c6561725f76657273696f6e5f310a1f6578745f73746f726167655f6368696c645f7365745f76657273696f6e5f310b236578745f63727970746f5f656432353531395f7665726966795f76657273696f6e5f310c236578745f63727970746f5f737232353531395f7665726966795f76657273696f6e5f310d226578745f73746f726167655f636c6561725f7072656669785f76657273696f6e5f310e1c6578745f6d6973635f7072696e745f6e756d5f76657273696f6e5f310f206578745f73746f726167655f6368696c645f726f6f745f76657273696f6e5f3110206578745f73616e64626f785f6d656d6f72795f6e65775f76657273696f6e5f3111256578745f73616e64626f785f6d656d6f72795f74656172646f776e5f76657273696f6e5f3112216578745f73616e64626f785f696e7374616e74696174655f76657273696f6e5f31131c6578745f73616e64626f785f696e766f6b655f76657273696f6e5f3114276578745f73616e64626f785f696e7374616e63655f74656172646f776e5f76657273696f6e5f31151c6578745f6d6973635f7072696e745f6865785f76657273696f6e5f3116236578745f6f6666636861696e5f69735f76616c696461746f725f76657273696f6e5f3117286578745f6f6666636861696e5f6c6f63616c5f73746f726167655f6765745f76657273696f6e5f3118346578745f6f6666636861696e5f6c6f63616c5f73746f726167655f636f6d706172655f616e645f7365745f76657273696f6e5f3119286578745f6f6666636861696e5f6c6f63616c5f73746f726167655f7365745f76657273696f6e5f311a256578745f63727970746f5f656432353531395f67656e65726174655f76657273696f6e5f311b1a6578745f73746f726167655f726f6f745f76657273696f6e5f311c226578745f73746f726167655f6368616e6765735f726f6f745f76657273696f6e5f311d1d6578745f68617368696e675f74776f785f36345f76657273696f6e5f311e206578745f73616e64626f785f6d656d6f72795f6765745f76657273696f6e5f311f206578745f73616e64626f785f6d656d6f72795f7365745f76657273696f6e5f3120256578745f63727970746f5f737232353531395f67656e65726174655f76657273696f6e5f3121296578745f6f6666636861696e5f7375626d69745f7472616e73616374696f6e5f76657273696f6e5f3122246578745f6f6666636861696e5f6e6574776f726b5f73746174655f76657273696f6e5f3123286578745f63727970746f5f737232353531395f7075626c69635f6b6579735f76657273696f6e5f3124216578745f63727970746f5f737232353531395f7369676e5f76657273696f6e5f3125376578745f63727970746f5f736563703235366b315f65636473615f7265636f7665725f636f6d707265737365645f76657273696f6e5f31261e6578745f616c6c6f6361746f725f6d616c6c6f635f76657273696f6e5f31271c6578745f616c6c6f6361746f725f667265655f76657273696f6e5f31281a6578745f73746f726167655f726561645f76657273696f6e5f31292a6578745f747269655f626c616b65325f3235365f6f7264657265645f726f6f745f76657273696f6e5f312a0c5f5f727573745f616c6c6f632b0a5f5f72675f616c6c6f632c0e5f5f727573745f6465616c6c6f632d0c5f5f72675f6465616c6c6f632e0e5f5f727573745f7265616c6c6f632f0c5f5f72675f7265616c6c6f6330135f5f727573745f616c6c6f635f7a65726f656431115f5f72675f616c6c6f635f7a65726f65643209686173685f746573743333616c6c6f633a3a616c6c6f633a3a68616e646c655f616c6c6f635f6572726f723a3a68386531316436663965343234316133633408727573745f6f6f6d3534616c6c6f633a3a7261775f7665633a3a63617061636974795f6f766572666c6f773a3a68646433393266313964303139366331643629636f72653a3a70616e69636b696e673a3a70616e69633a3a68646239663362643439353762376130343725616c6c6f633a3a666d743a3a666f726d61743a3a68323034353933636463626239393462643836636f72653a3a70616e69636b696e673a3a70616e69635f626f756e64735f636865636b3a3a68383631343133363633386239663665333923636f72653a3a666d743a3a77726974653a3a68323037613236633066373832626466643a48616c6c6f633a3a7261775f7665633a3a5261775665633c542c413e3a3a616c6c6f636174655f696e3a3a7b7b636c6f737572657d7d3a3a68303061333839343366393039313364663b2e636f72653a3a726573756c743a3a756e777261705f6661696c65643a3a68356539626632666462336331346131313c3a3c266d7574205720617320636f72653a3a666d743a3a57726974653e3a3a77726974655f7374723a3a68653462323430393966333136316432613d3b3c266d7574205720617320636f72653a3a666d743a3a57726974653e3a3a77726974655f636861723a3a68646135323030363563363762376437333e3a3c266d7574205720617320636f72653a3a666d743a3a57726974653e3a3a77726974655f666d743a3a68386133653436393862303536393134353f34636f72653a3a736c6963653a3a736c6963655f696e6465785f6c656e5f6661696c3a3a6864616535356635386637356233376335404e636f72653a3a666d743a3a6e756d3a3a696d703a3a3c696d706c20636f72653a3a666d743a3a446973706c617920666f72207533323e3a3a666d743a3a6861356364353334633165353832626330412d636f72653a3a70616e69636b696e673a3a70616e69635f666d743a3a6833343531616266633263663866643735422f636f72653a3a666d743a3a6e756d3a3a696d703a3a666d745f7536343a3a68396430343437333539653330323562384311727573745f626567696e5f756e77696e6444313c5420617320636f72653a3a616e793a3a416e793e3a3a747970655f69643a3a68306465666264653633353865346532624535636f72653a3a666d743a3a466f726d61747465723a3a7061645f696e74656772616c3a3a68346231353362333663363261326539304643636f72653a3a666d743a3a466f726d61747465723a3a7061645f696e74656772616c3a3a77726974655f7072656669783a3a68636435663263333739613934326338624736636f72653a3a736c6963653a3a736c6963655f696e6465785f6f726465725f6661696c3a3a6865633531326337336339393435393139482c636f72653a3a666d743a3a466f726d61747465723a3a7061643a3a6830653165663266646261323032306339492e636f72653a3a7374723a3a736c6963655f6572726f725f6661696c3a3a68373830313030333831333434633333394a323c265420617320636f72653a3a666d743a3a446973706c61793e3a3a666d743a3a68346132653465636539373166306565394b4a3c636f72653a3a6f70733a3a72616e67653a3a52616e67653c4964783e20617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a68373230346333363939396432316363634c323c6368617220617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a68626461316437313164366434313734314d3d636f72653a3a756e69636f64653a3a626f6f6c5f747269653a3a426f6f6c547269653a3a6c6f6f6b75703a3a68666531353763343132326361303534664e49636f72653a3a666d743a3a6e756d3a3a3c696d706c20636f72653a3a666d743a3a446562756720666f72207573697a653e3a3a666d743a3a68386432353364353564646635356463334f34636f72653a3a666d743a3a417267756d656e7456313a3a73686f775f7573697a653a3a686664636138363230366231666565383350453c636f72653a3a63656c6c3a3a426f72726f774572726f7220617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a686437356263616161353161356536653451483c636f72653a3a63656c6c3a3a426f72726f774d75744572726f7220617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a686637323137353036303339613963333352323c265420617320636f72653a3a666d743a3a446973706c61793e3a3a666d743a3a683236663030343139663436303834303753323c265420617320636f72653a3a666d743a3a446973706c61793e3a3a666d743a3a6830323766613761636633313939313735542e636f72653a3a6f7074696f6e3a3a6578706563745f6661696c65643a3a683439346633653534346562303365373455303c265420617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6832356262626661663335303532346239562e636f72653a3a736c6963653a3a6d656d6368723a3a6d656d6368723a3a6831356139303835666665633534316165578001636f72653a3a7374723a3a7472616974733a3a3c696d706c20636f72653a3a736c6963653a3a536c696365496e6465783c7374723e20666f7220636f72653a3a6f70733a3a72616e67653a3a52616e67653c7573697a653e3e3a3a696e6465783a3a7b7b636c6f737572657d7d3a3a68333162396631303565353862363261395827636f72653a3a7374723a3a66726f6d5f757466383a3a68656463376239663161653061646539615930636f72653a3a7074723a3a7265616c5f64726f705f696e5f706c6163653a3a68303962326434393262333033623434345a533c636f72653a3a666d743a3a6275696c646572733a3a5061644164617074657220617320636f72653a3a666d743a3a57726974653e3a3a77726974655f7374723a3a68386534373166643833366665303436665b2f636f72653a3a666d743a3a57726974653a3a77726974655f636861723a3a68653166356333646239303739356662375c2e636f72653a3a666d743a3a57726974653a3a77726974655f666d743a3a68363861383934353839633935346236615d3a3c266d7574205720617320636f72653a3a666d743a3a57726974653e3a3a77726974655f7374723a3a68393133616132333339376339373630325e3b3c266d7574205720617320636f72653a3a666d743a3a57726974653e3a3a77726974655f636861723a3a68393861383665653265633764393334315f3a3c266d7574205720617320636f72653a3a666d743a3a57726974653e3a3a77726974655f666d743a3a6837396235343665393130333134623937603a636f72653a3a666d743a3a6275696c646572733a3a44656275675374727563743a3a6669656c643a3a68323563343366303238653764323136666139636f72653a3a666d743a3a6275696c646572733a3a44656275675475706c653a3a6669656c643a3a68383635363362393137383131326630396237636f72653a3a666d743a3a6275696c646572733a3a44656275675365743a3a656e7472793a3a683461306636396564643136396633346563443c636f72653a3a666d743a3a417267756d656e747320617320636f72653a3a666d743a3a446973706c61793e3a3a666d743a3a683565343066323335616130366263633564313c73747220617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6863343364336165393861333631646132653e3c636f72653a3a666d743a3a4572726f7220617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a683762303032383162323938653331643366693c6672616d655f6d657461646174613a3a4465636f6465446966666572656e743c422c4f3e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a656e636f64655f746f3a3a6864343430383733363131356130633333676c3c7061726974795f7363616c655f636f6465633a3a636f6d706163743a3a436f6d706163743c543e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a656e636f64655f746f3a3a683563363237343830623738666134613768483c5b545d206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a656e636f64655f746f3a3a683534613837376637396264383661373669693c6672616d655f6d657461646174613a3a4465636f6465446966666572656e743c422c4f3e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a656e636f64655f746f3a3a68353838343739663861376132386538656a4d3c6672616d655f737570706f72743a3a64656275673a3a52756e74696d654c6f67676572206173206c6f673a3a4c6f673e3a3a656e61626c65643a3a68306165386636316336346635393039636b493c6672616d655f737570706f72743a3a64656275673a3a52756e74696d654c6f67676572206173206c6f673a3a4c6f673e3a3a6c6f673a3a68636135366365623135366332353863386c3a3c266d7574205720617320636f72653a3a666d743a3a57726974653e3a3a77726974655f7374723a3a68343163306264623062363166373063656d3b3c266d7574205720617320636f72653a3a666d743a3a57726974653e3a3a77726974655f636861723a3a68343862663330313635306635396266346e3a3c266d7574205720617320636f72653a3a666d743a3a57726974653e3a3a77726974655f666d743a3a68363930353432666233643862626361326f383c6c6f673a3a4e6f704c6f67676572206173206c6f673a3a4c6f673e3a3a656e61626c65643a3a683238313862343662313536303564313170343c6c6f673a3a4e6f704c6f67676572206173206c6f673a3a4c6f673e3a3a6c6f673a3a683530616236323939313234333733653571363c6c6f673a3a4e6f704c6f67676572206173206c6f673a3a4c6f673e3a3a666c7573683a3a6862333164356661343665313662356464724b3c616c6c6f633a3a7665633a3a496e746f497465723c543e20617320636f72653a3a6f70733a3a64726f703a3a44726f703e3a3a64726f703a3a68356638396639326435623838623831617330636f72653a3a7074723a3a7265616c5f64726f705f696e5f706c6163653a3a686430336463636430323333346132666674543c616c6c6f633a3a7665633a3a5665633c543e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a6832376266333161303562363034313761756b3c7061726974795f7363616c655f636f6465633a3a636f6d706163743a3a436f6d706163743c7533323e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a6834663964643130383738383938396561767d7061726974795f7363616c655f636f6465633a3a636f6465633a3a696e6e65725f7475706c655f696d706c3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f72202851302c205230293e3a3a6465636f64653a3a683963323330666231336239363963616377543c616c6c6f633a3a7665633a3a5665633c543e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a686132333061656531323733353565396178393c54206173206672616d655f737570706f72743a3a7472616974733a3a4c656e3e3a3a6c656e3a3a6837303736356164313330663732323566794a3c58206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a7573696e675f656e636f6465643a3a68613563343263613066653263313232617a2d616c6c6f633a3a7665633a3a5665633c543e3a3a72657461696e3a3a68613736356662626464666338336134657b403c616c6c6f633a3a7665633a3a5665633c543e20617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a68656361313432613134626131383236367c443c616c6c6f633a3a7665633a3a5665633c543e20617320636f72653a3a636c6f6e653a3a436c6f6e653e3a3a636c6f6e653a3a68376361336166633531303464366639337d463c616c6c6f633a3a7665633a3a5665633c543e20617320636f72653a3a6f70733a3a64726f703a3a44726f703e3a3a64726f703a3a68633033353738633737313032626635637e543c616c6c6f633a3a7665633a3a5665633c543e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a68316131303639313834623832666537357f543c616c6c6f633a3a7665633a3a5665633c543e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a68363736666236393566383833643263658001543c616c6c6f633a3a7665633a3a5665633c543e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a68373666366465396330333062333733648101723c73705f72756e74696d653a3a67656e657269633a3a6865616465723a3a4865616465723c4e756d6265722c486173683e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a68393336333530306432633264646338618201543c616c6c6f633a3a7665633a3a5665633c543e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a68623331376664363636316662316262648301543c616c6c6f633a3a7665633a3a5665633c543e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a68663965323763373066663536396232328401513c616c6c6f633a3a7665633a3a5665633c543e20617320616c6c6f633a3a7665633a3a53706563457874656e643c542c493e3e3a3a66726f6d5f697465723a3a68313138666430336633636335386634328501513c616c6c6f633a3a7665633a3a5665633c543e20617320616c6c6f633a3a7665633a3a53706563457874656e643c542c493e3e3a3a66726f6d5f697465723a3a68346665353961383762616439643537628601513c616c6c6f633a3a7665633a3a5665633c543e20617320616c6c6f633a3a7665633a3a53706563457874656e643c542c493e3e3a3a66726f6d5f697465723a3a686230306437376562393535646164373687013e73705f72756e74696d653a3a67656e657269633a3a656e636f64655f776974685f7665635f7072656669783a3a686661393233643238653238363565326188017d3c70616c6c65745f696e64696365733a3a616464726573733a3a416464726573733c4163636f756e7449642c4163636f756e74496e6465783e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a656e636f64655f746f3a3a686566353136646634663031643561663089016f3c7061726974795f7363616c655f636f6465633a3a636f6d706163743a3a436f6d706163745265663c543e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a656e636f64655f746f3a3a68386132626663373539386166616136318a01723c7061726974795f7363616c655f636f6465633a3a636f6d706163743a3a436f6d706163745265663c753132383e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a656e636f64655f746f3a3a68653765663236356634633638323963338b016e6e6f64655f72756e74696d653a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f646520666f72206e6f64655f72756e74696d653a3a43616c6c3e3a3a656e636f64655f746f3a3a68333165333064613830356366643963638c016f3c285475706c65456c656d656e74302c205475706c65456c656d656e7431292061732073705f72756e74696d653a3a7472616974733a3a4f6e46696e616c697a653c426c6f636b4e756d6265723e3e3a3a6f6e5f66696e616c697a653a3a68356437666435663339663164366533348d017c3c73705f72756e74696d655f696e746572666163653a3a706173735f62793a3a436f6465633c543e2061732073705f72756e74696d655f696e746572666163653a3a706173735f62793a3a506173734279496d706c3c543e3e3a3a66726f6d5f6666695f76616c75653a3a68343565663838613839626633363333348e01303c265420617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a68333133343437643730316638633436328f013c7061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653a3a656e636f64653a3a68643463343531313334656566616433619001376672616d655f73797374656d3a3a4d6f64756c653c543e3a3a6465706f7369745f6c6f673a3a68333663316437343066623935393036309101463c58206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a656e636f64655f746f3a3a68646638643435363731306139376631629201416672616d655f73797374656d3a3a4d6f64756c653c543e3a3a6465706f7369745f6576656e745f696e64657865643a3a683063306530376265623663663736393493013c7061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653a3a656e636f64653a3a68316333333739613964356239633365359401386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a68343039646236663363313730333932619501386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a68383837333831363130646230393937649601386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a686664373162643435326636626166633397014373705f696f3a3a73746f726167653a3a65787465726e5f686f73745f66756e6374696f6e5f696d706c733a3a726561643a3a68316565333932626133303539613138379801386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a68343239313931373365623761383630309901386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a68346465323032383337353963386430319a01386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a68316430333866653335663138343932329b013c7061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653a3a656e636f64653a3a68323531633533623431656561633261319c01446672616d655f737570706f72743a3a7472616974733a3a43757272656e63793a3a7265736f6c76655f6372656174696e673a3a68386131333538353331323161373439389d018d013c70616c6c65745f62616c616e6365733a3a4d6f64756c653c542c493e206173206672616d655f737570706f72743a3a7472616974733a3a43757272656e63793c3c54206173206672616d655f73797374656d3a3a54726169743e3a3a4163636f756e7449643e3e3a3a6465706f7369745f6372656174696e673a3a68376438313366343566316431623337669e01386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a68303566356530623734396639383534649f01437061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653a3a7573696e675f656e636f6465643a3a6839393662316237393066316664663535a00191013c70616c6c65745f62616c616e6365733a3a4d6f64756c653c542c493e206173206672616d655f737570706f72743a3a7472616974733a3a43757272656e63793c3c54206173206672616d655f73797374656d3a3a54726169743e3a3a4163636f756e7449643e3e3a3a6d616b655f667265655f62616c616e63655f62653a3a6839313638653738306565656265666462a10183013c70616c6c65745f696e64696365733a3a4d6f64756c653c543e206173206672616d655f73797374656d3a3a4f6e4e65774163636f756e743c3c54206173206672616d655f73797374656d3a3a54726169743e3a3a4163636f756e7449643e3e3a3a6f6e5f6e65775f6163636f756e743a3a6864383836383962386530353632353663a2014170616c6c65745f62616c616e6365733a3a4d6f64756c653c542c493e3a3a7365745f667265655f62616c616e63653a3a6835313338666439643032343535653336a301796672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a76616c75653a3a3c696d706c206672616d655f737570706f72743a3a73746f726167653a3a53746f7261676556616c75653c543e20666f7220473e3a3a6d75746174653a3a6832393134633039333462623539366235a4013870616c6c65745f7374616b696e673a3a4d6f64756c653c543e3a3a6b696c6c5f73746173683a3a6861393137663161336164346338636530a501386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6834666137636264363863373563303066a601706672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a646f75626c655f6d61703a3a53746f72616765446f75626c654d61703a3a73746f726167655f646f75626c655f6d61705f66696e616c5f6b65793a3a6864326666393133363139633065626565a701386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6863616530373036613163663531666330a801706672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a646f75626c655f6d61703a3a53746f72616765446f75626c654d61703a3a73746f726167655f646f75626c655f6d61705f66696e616c5f6b65793a3a6832356264383036636436653834313164a901456672616d655f737570706f72743a3a7472616974733a3a4f6e556e62616c616e6365643a3a6f6e5f756e62616c616e6365643a3a6835353866363337383464643333383330aa014570616c6c65745f62616c616e6365733a3a4d6f64756c653c542c493e3a3a7365745f72657365727665645f62616c616e63653a3a6865613039313337393166386465653463ab01776672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a3c696d706c206672616d655f737570706f72743a3a73746f726167653a3a53746f726167654d61703c4b2c563e20666f7220473e3a3a72656d6f76653a3a6835646435383164333166636465353034ac0185013c70616c6c65745f62616c616e6365733a3a4d6f64756c653c542c493e206173206672616d655f737570706f72743a3a7472616974733a3a43757272656e63793c3c54206173206672616d655f73797374656d3a3a54726169743e3a3a4163636f756e7449643e3e3a3a77697468647261773a3a6837616632363936303335623533333161ad0190013c70616c6c65745f62616c616e6365733a3a4d6f64756c653c542c493e206173206672616d655f737570706f72743a3a7472616974733a3a43757272656e63793c3c54206173206672616d655f73797374656d3a3a54726169743e3a3a4163636f756e7449643e3e3a3a656e737572655f63616e5f77697468647261773a3a6839303834316230313031376132323431ae013670616c6c65745f62616c616e6365733a3a4d6f64756c653c542c493e3a3a6c6f636b733a3a6838343861326564663865306137313235af01483c5b543b205f5d206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a6830633634376237643965376530353838b001776672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a3c696d706c206672616d655f737570706f72743a3a73746f726167653a3a53746f726167654d61703c4b2c563e20666f7220473e3a3a696e736572743a3a6838613531316630623236636436626466b1018a013c70616c6c65745f62616c616e6365733a3a4d6f64756c653c542c493e206173206672616d655f737570706f72743a3a7472616974733a3a43757272656e63793c3c54206173206672616d655f73797374656d3a3a54726169743e3a3a4163636f756e7449643e3e3a3a746f74616c5f62616c616e63653a3a6837653632643137636262613031363264b201776672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a3c696d706c206672616d655f737570706f72743a3a73746f726167653a3a53746f726167654d61703c4b2c563e20666f7220473e3a3a696e736572743a3a6833663666656339323366646235353365b3013d70616c6c65745f6772616e6470613a3a4d6f64756c653c543e3a3a7363686564756c655f6368616e67653a3a6831396134393664386334366635333363b401683c636f72653a3a697465723a3a61646170746572733a3a4d61703c492c463e20617320636f72653a3a697465723a3a7472616974733a3a6974657261746f723a3a4974657261746f723e3a3a73697a655f68696e743a3a6831666337613661653736333430396562b501633c636f72653a3a697465723a3a61646170746572733a3a4d61703c492c463e20617320636f72653a3a697465723a3a7472616974733a3a6974657261746f723a3a4974657261746f723e3a3a6e6578743a3a6835323864633166373339646430613361b6013e636f72653a3a697465723a3a7472616974733a3a6974657261746f723a3a4974657261746f723a3a6e74683a3a6835333665613433393335653135326561b70189013c70616c6c65745f62616c616e6365733a3a4d6f64756c653c542c493e206173206672616d655f737570706f72743a3a7472616974733a3a43757272656e63793c3c54206173206672616d655f73797374656d3a3a54726169743e3a3a4163636f756e7449643e3e3a3a667265655f62616c616e63653a3a6836633938613336373464663634663534b80192013c70616c6c65745f62616c616e6365733a3a4d6f64756c653c542c493e206173206672616d655f737570706f72743a3a7472616974733a3a43757272656e63793c3c54206173206672616d655f73797374656d3a3a54726169743e3a3a4163636f756e7449643e3e3a3a6465706f7369745f696e746f5f6578697374696e673a3a6833373963363530306566633534626163b9013c70616c6c65745f6772616e6470613a3a4d6f64756c653c543e3a3a63616c6c5f66756e6374696f6e733a3a6862613731393030316333636235353931ba013e70616c6c65745f6772616e6470613a3a4d6f64756c653c543e3a3a73746f726167655f6d657461646174613a3a6839313861363639386532326433656638bb01703c70616c6c65745f6772616e6470613a3a5f5f4765744279746553747275637443757272656e7453657449643c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6861633863303363336665323039623830bc01693c70616c6c65745f6772616e6470613a3a5f5f4765744279746553747275637453746174653c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6832323033643161306237326538383833bd0190013c70616c6c65745f62616c616e6365733a3a4d6f64756c653c542c493e206173206672616d655f737570706f72743a3a7472616974733a3a4c6f636b61626c6543757272656e63793c3c54206173206672616d655f73797374656d3a3a54726169743e3a3a4163636f756e7449643e3e3a3a657874656e645f6c6f636b3a3a6834666336626662336636623965383362be018d013c70616c6c65745f62616c616e6365733a3a4d6f64756c653c542c493e206173206672616d655f737570706f72743a3a7472616974733a3a4c6f636b61626c6543757272656e63793c3c54206173206672616d655f73797374656d3a3a54726169743e3a3a4163636f756e7449643e3e3a3a7365745f6c6f636b3a3a6836323838666362353063333662653965bf0195013c70616c6c65745f62616c616e6365733a3a4d6f64756c653c542c493e206173206672616d655f737570706f72743a3a7472616974733a3a52657365727661626c6543757272656e63793c3c54206173206672616d655f73797374656d3a3a54726169743e3a3a4163636f756e7449643e3e3a3a736c6173685f72657365727665643a3a6836616164653437646433383931663430c0019a013c70616c6c65745f62616c616e6365733a3a4d6f64756c653c542c493e206173206672616d655f737570706f72743a3a7472616974733a3a52657365727661626c6543757272656e63793c3c54206173206672616d655f73797374656d3a3a54726169743e3a3a4163636f756e7449643e3e3a3a726570617472696174655f72657365727665643a3a6866663332393036376463656235623036c1018e013c70616c6c65745f62616c616e6365733a3a4d6f64756c653c542c493e206173206672616d655f737570706f72743a3a7472616974733a3a52657365727661626c6543757272656e63793c3c54206173206672616d655f73797374656d3a3a54726169743e3a3a4163636f756e7449643e3e3a3a726573657276653a3a6865383861633262363230396161626338c20190013c70616c6c65745f62616c616e6365733a3a4d6f64756c653c542c493e206173206672616d655f737570706f72743a3a7472616974733a3a52657365727661626c6543757272656e63793c3c54206173206672616d655f73797374656d3a3a54726169743e3a3a4163636f756e7449643e3e3a3a756e726573657276653a3a6861626632363534646137316161336362c3013f70616c6c65745f62616c616e6365733a3a4d6f64756c653c542c493e3a3a63616c6c5f66756e6374696f6e733a3a6838353262383938643261313131386230c4014170616c6c65745f62616c616e6365733a3a4d6f64756c653c542c493e3a3a73746f726167655f6d657461646174613a3a6861653137373131353038303663663230c501723c70616c6c65745f62616c616e6365733a3a5f5f476574427974655374727563744672656542616c616e63653c542c493e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6836636338326639363038623535666235c6014a70616c6c65745f62616c616e6365733a3a4d6f64756c653c542c493e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a6837653634303939613038666261616462c7013f70616c6c65745f6f6666656e6365733a3a4d6f64756c653c543e3a3a73746f726167655f6d657461646174613a3a6839633661663564663930343838303761c801773c70616c6c65745f6f6666656e6365733a3a5f5f476574427974655374727563745265706f72747342794b696e64496e6465783c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6839373966343965326137613666333836c901706672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a646f75626c655f6d61703a3a53746f72616765446f75626c654d61703a3a73746f726167655f646f75626c655f6d61705f66696e616c5f6b65793a3a6864656233636538633232653064336636ca014a3c58206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a7573696e675f656e636f6465643a3a6836393761353266313665356235363837cb0168636f72653a3a6f70733a3a66756e6374696f6e3a3a696d706c733a3a3c696d706c20636f72653a3a6f70733a3a66756e6374696f6e3a3a466e4d75743c413e20666f7220266d757420463e3a3a63616c6c5f6d75743a3a6834336138663865626633343830376161cc01860170616c6c65745f7374616b696e673a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f722070616c6c65745f7374616b696e673a3a4578706f737572653c4163636f756e7449642c42616c616e63653e3e3a3a6465636f64653a3a6862636165323734326330623233636332cd0185013c70616c6c65745f62616c616e6365733a3a4d6f64756c653c542c493e206173206672616d655f737570706f72743a3a7472616974733a3a43757272656e63793c3c54206173206672616d655f73797374656d3a3a54726169743e3a3a4163636f756e7449643e3e3a3a7472616e736665723a3a6861333563393834306164333133353438ce01743c70616c6c65745f62616c616e6365733a3a696d62616c616e6365733a3a4e65676174697665496d62616c616e63653c542c493e206173206672616d655f737570706f72743a3a7472616974733a3a54727944726f703e3a3a7472795f64726f703a3a6866653235313532623831613833616438cf014470616c6c65745f656c656374696f6e735f70687261676d656e3a3a4d6f64756c653c543e3a3a646f5f70687261676d656e3a3a6838393933303861396138313564666163d001386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6832663162306263633063333765366435d101386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6834656131616437666564626435636635d2016e6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6c696e6b65645f6d61703a3a4b6579466f726d61743a3a73746f726167655f6c696e6b65645f6d61705f66696e616c5f686561645f6b65793a3a6865366636363230616261353632656662d301386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6837346339313132626362363661323931d40185013c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6c696e6b65645f6d61703a3a456e756d657261746f723c4b2c562c463e20617320636f72653a3a697465723a3a7472616974733a3a6974657261746f723a3a4974657261746f723e3a3a6e6578743a3a6838366339616330333039633436386531d50148616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6d61703a3a42547265654d61703c4b2c563e3a3a696e736572743a3a6864353233663731656436383432353734d6014870616c6c65745f656c656374696f6e735f70687261676d656e3a3a4d6f64756c653c543e3a3a6c6f636b65645f7374616b655f6f663a3a6832343030366632663731346530666135d7014673705f61726974686d657469633a3a68656c706572735f3132386269743a3a6d756c7469706c795f62795f726174696f6e616c3a3a6835353134353535393430316334656634d801533c73705f61726974686d657469633a3a726174696f6e616c3132383a3a526174696f6e616c31323820617320636f72653a3a636d703a3a4f72643e3a3a636d703a3a6831633661663234643933396130393434d901583c73705f61726974686d657469633a3a726174696f6e616c3132383a3a526174696f6e616c31323820617320636f72653a3a636d703a3a5061727469616c45713e3a3a65713a3a6832363364383365343337653038643535da01613c616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6d61703a3a42547265654d61703c4b2c563e20617320636f72653a3a6f70733a3a64726f703a3a44726f703e3a3a64726f703a3a6833323065356263636333643861343734db0148616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6d61703a3a42547265654d61703c4b2c563e3a3a696e736572743a3a6861666263663262616239656236626335dc014d6672616d655f737570706f72743a3a7472616974733a3a4368616e67654d656d626572733a3a636f6d707574655f6d656d626572735f646966663a3a6831633864336535646266353436643366dd0199013c70616c6c65745f636f6c6c6563746976653a3a4d6f64756c653c542c493e206173206672616d655f737570706f72743a3a7472616974733a3a4368616e67654d656d626572733c3c54206173206672616d655f73797374656d3a3a54726169743e3a3a4163636f756e7449643e3e3a3a6368616e67655f6d656d626572735f736f727465643a3a6862336630313761623035303839376230de01613c616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6d61703a3a496e746f497465723c4b2c563e20617320636f72653a3a6f70733a3a64726f703a3a44726f703e3a3a64726f703a3a6833306536346338363934613533343132df01733c285475706c65456c656d656e74302c205475706c65456c656d656e7431292061732073705f72756e74696d653a3a7472616974733a3a4f6e496e697469616c697a653c426c6f636b4e756d6265723e3e3a3a6f6e5f696e697469616c697a653a3a6865333733346237316534633632636134e0013870616c6c65745f626162653a3a4d6f64756c653c543e3a3a646f5f696e697469616c697a653a3a6836356330663230316131316330623838e10196013c70616c6c65745f696d5f6f6e6c696e653a3a4d6f64756c653c543e2061732070616c6c65745f73657373696f6e3a3a4f6e6553657373696f6e48616e646c65723c3c54206173206672616d655f73797374656d3a3a54726169743e3a3a4163636f756e7449643e3e3a3a6f6e5f6265666f72655f73657373696f6e5f656e64696e673a3a6834623665653766326266386666646534e201726e6f64655f72756e74696d653a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f72206e6f64655f72756e74696d653a3a53657373696f6e4b6579733e3a3a6465636f64653a3a6832623337306433613839663666613738e3013970616c6c65745f7374616b696e673a3a4d6f64756c653c543e3a3a6e65775f73657373696f6e3a3a6865353938663265303631393834333735e401386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6862343339336363643832313933366332e50187013c70616c6c65745f626162653a3a4d6f64756c653c543e2061732070616c6c65745f73657373696f6e3a3a4f6e6553657373696f6e48616e646c65723c3c54206173206672616d655f73797374656d3a3a54726169743e3a3a4163636f756e7449643e3e3a3a6f6e5f6e65775f73657373696f6e3a3a6831623032666539306562663966383164e601386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6833643538343436636663663433313933e7013c7061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653a3a656e636f64653a3a6861613966336337326535356131323332e8013770616c6c65745f617574686f72736869703a3a4d6f64756c653c543e3a3a617574686f723a3a6830383231323761346165303661383062e9013b70616c6c65745f7374616b696e673a3a4d6f64756c653c543e3a3a7265776172645f62795f6964733a3a6833333663663933643630623863613637ea013f70616c6c65745f696d5f6f6e6c696e653a3a4d6f64756c653c543e3a3a6e6f74655f617574686f72736869703a3a6838363339633762643938353137653461eb017d3c70616c6c65745f636f6e7472616374733a3a6163636f756e745f64623a3a4469726563744163636f756e7444622061732070616c6c65745f636f6e7472616374733a3a6163636f756e745f64623a3a4163636f756e7444623c543e3e3a3a6765745f62616c616e63653a3a6866623263616263396637653238303166ec017d3c70616c6c65745f636f6e7472616374733a3a6163636f756e745f64623a3a4469726563744163636f756e7444622061732070616c6c65745f636f6e7472616374733a3a6163636f756e745f64623a3a4163636f756e7444623c543e3e3a3a6765745f73746f726167653a3a6837616365356537623535356139303035ed017f3c70616c6c65745f636f6e7472616374733a3a6163636f756e745f64623a3a4469726563744163636f756e7444622061732070616c6c65745f636f6e7472616374733a3a6163636f756e745f64623a3a4163636f756e7444623c543e3e3a3a6765745f636f64655f686173683a3a6863303566386538333236373334306236ee01746672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a3c696d706c206672616d655f737570706f72743a3a73746f726167653a3a53746f726167654d61703c4b2c563e20666f7220473e3a3a6765743a3a6831646434646235393136353739663061ef0181013c70616c6c65745f636f6e7472616374733a3a6163636f756e745f64623a3a4469726563744163636f756e7444622061732070616c6c65745f636f6e7472616374733a3a6163636f756e745f64623a3a4163636f756e7444623c543e3e3a3a636f6e74726163745f6578697374733a3a6866326235313861376333653837303932f00184013c70616c6c65745f636f6e7472616374733a3a6163636f756e745f64623a3a4469726563744163636f756e7444622061732070616c6c65745f636f6e7472616374733a3a6163636f756e745f64623a3a4163636f756e7444623c543e3e3a3a6765745f72656e745f616c6c6f77616e63653a3a6832643964383865383738303837363964f101783c70616c6c65745f636f6e7472616374733a3a6163636f756e745f64623a3a4469726563744163636f756e7444622061732070616c6c65745f636f6e7472616374733a3a6163636f756e745f64623a3a4163636f756e7444623c543e3e3a3a636f6d6d69743a3a6866363831343764636563336139643037f201723c616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6d61703a3a496e746f497465723c4b2c563e20617320636f72653a3a697465723a3a7472616974733a3a6974657261746f723a3a4974657261746f723e3a3a6e6578743a3a6839623062393265626536373434313032f301456672616d655f737570706f72743a3a7472616974733a3a5369676e6564496d62616c616e63653c422c503e3a3a6d657267653a3a6831366664393266316161316438353633f401613c616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6d61703a3a496e746f497465723c4b2c563e20617320636f72653a3a6f70733a3a64726f703a3a44726f703e3a3a64726f703a3a6830633566643861636234323761356139f50196013c70616c6c65745f636f6e7472616374733a3a54726965496446726f6d506172656e74436f756e7465723c543e2061732070616c6c65745f636f6e7472616374733a3a54726965496447656e657261746f723c3c54206173206672616d655f73797374656d3a3a54726169743e3a3a4163636f756e7449643e3e3a3a747269655f69643a3a6830656262386435363030646633653331f601776672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a3c696d706c206672616d655f737570706f72743a3a73746f726167653a3a53746f726167654d61703c4b2c563e20666f7220473e3a3a72656d6f76653a3a6831623066646536306331353062356163f701723c616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6d61703a3a496e746f497465723c4b2c563e20617320636f72653a3a697465723a3a7472616974733a3a6974657261746f723a3a4974657261746f723e3a3a6e6578743a3a6836663861356565363432666334616339f801776672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a3c696d706c206672616d655f737570706f72743a3a73746f726167653a3a53746f726167654d61703c4b2c563e20666f7220473e3a3a696e736572743a3a6834326638633139646663613434336364f901613c616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6d61703a3a496e746f497465723c4b2c563e20617320636f72653a3a6f70733a3a64726f703a3a44726f703e3a3a64726f703a3a6830633532663431626531363739316133fa0181013c70616c6c65745f636f6e7472616374733a3a6163636f756e745f64623a3a4f7665726c61794163636f756e7444623c543e2061732070616c6c65745f636f6e7472616374733a3a6163636f756e745f64623a3a4163636f756e7444623c543e3e3a3a6765745f62616c616e63653a3a6838346232396366343662383265613533fb0181013c70616c6c65745f636f6e7472616374733a3a6163636f756e745f64623a3a4f7665726c61794163636f756e7444623c543e2061732070616c6c65745f636f6e7472616374733a3a6163636f756e745f64623a3a4163636f756e7444623c543e3e3a3a6765745f73746f726167653a3a6835663963333639386637653338633532fc0183013c70616c6c65745f636f6e7472616374733a3a6163636f756e745f64623a3a4f7665726c61794163636f756e7444623c543e2061732070616c6c65745f636f6e7472616374733a3a6163636f756e745f64623a3a4163636f756e7444623c543e3e3a3a6765745f636f64655f686173683a3a6835646363363638383833663163383931fd0185013c70616c6c65745f636f6e7472616374733a3a6163636f756e745f64623a3a4f7665726c61794163636f756e7444623c543e2061732070616c6c65745f636f6e7472616374733a3a6163636f756e745f64623a3a4163636f756e7444623c543e3e3a3a636f6e74726163745f6578697374733a3a6835333465366564356464636463366332fe0188013c70616c6c65745f636f6e7472616374733a3a6163636f756e745f64623a3a4f7665726c61794163636f756e7444623c543e2061732070616c6c65745f636f6e7472616374733a3a6163636f756e745f64623a3a4163636f756e7444623c543e3e3a3a6765745f72656e745f616c6c6f77616e63653a3a6830376435323430336631613735326331ff017c3c70616c6c65745f636f6e7472616374733a3a6163636f756e745f64623a3a4f7665726c61794163636f756e7444623c543e2061732070616c6c65745f636f6e7472616374733a3a6163636f756e745f64623a3a4163636f756e7444623c543e3e3a3a636f6d6d69743a3a686636663262333930623631386261663880024b616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6d61703a3a566163616e74456e7472793c4b2c563e3a3a696e736572743a3a6839366133636637323237386133306636810248616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6d61703a3a42547265654d61703c4b2c563e3a3a696e736572743a3a68336433636531333435613337633766308202426672616d655f737570706f72743a3a7472616974733a3a496d62616c616e63653a3a6d617962655f73756273756d653a3a686365316264316139636432376131366383024a3c58206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a7573696e675f656e636f6465643a3a68363034336263316162313030386135378402696672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6c696e6b65645f6d61703a3a4b6579466f726d61743a3a73746f726167655f6c696e6b65645f6d61705f66696e616c5f6b65793a3a683935626565376362613661393064616185023c70616c6c65745f73657373696f6e3a3a4d6f64756c653c543e3a3a63616c6c5f66756e6374696f6e733a3a686638626533366239636336633339336586023e70616c6c65745f73657373696f6e3a3a4d6f64756c653c543e3a3a73746f726167655f6d657461646174613a3a68316635333935303932383531343538318702703c70616c6c65745f73657373696f6e3a3a5f5f4765744279746553747275637443757272656e74496e6465783c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a683535356365333037303664633938306288024770616c6c65745f73657373696f6e3a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a683537323865366234303564636364636289029c013c70616c6c65745f73657373696f6e3a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a44454455505f4b45595f50524546495844656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a68666365643239303736623636336130368a023570616c6c65745f73657373696f6e3a3a4d6f64756c653c543e3a3a64697361626c653a3a68376164303935376433636637643430668b023c7061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653a3a656e636f64653a3a68623939646631636533663966336630318c029c013c73705f72756e74696d653a3a67656e657269633a3a756e636865636b65645f65787472696e7369633a3a556e636865636b656445787472696e7369633c416464726573732c43616c6c2c5369676e61747572652c45787472613e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a68663162613064613234393664636137628d027a3c70616c6c65745f696e64696365733a3a616464726573733a3a416464726573733c4163636f756e7449642c4163636f756e74496e6465783e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a68306339313234356565393162613239368e026c3c7061726974795f7363616c655f636f6465633a3a636f6d706163743a3a436f6d706163743c753132383e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a68613132346132366335316664353964658f026b6e6f64655f72756e74696d653a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f72206e6f64655f72756e74696d653a3a43616c6c3e3a3a6465636f64653a3a686134653362626437616133643133643690029f013c73705f72756e74696d653a3a67656e657269633a3a756e636865636b65645f65787472696e7369633a3a556e636865636b656445787472696e7369633c416464726573732c43616c6c2c5369676e61747572652c45787472613e2061732073705f72756e74696d653a3a7472616974733a3a436865636b61626c653c4c6f6f6b75703e3e3a3a636865636b3a3a683962313166663134646265373937643691023670616c6c65745f696e64696365733a3a4d6f64756c653c543e3a3a656e756d5f7365743a3a6865373731353265303436643333623936920230636f72653a3a7074723a3a7265616c5f64726f705f696e5f706c6163653a3a68643033646363643032333334613266669302366672616d655f73797374656d3a3a4d6f64756c653c543e3a3a626c6f636b5f686173683a3a68376162623261356538376234333866639402437061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653a3a7573696e675f656e636f6465643a3a68333264616665366438373961376165659502553c73705f72756e74696d653a3a4d756c74695369676e61747572652061732073705f72756e74696d653a3a7472616974733a3a5665726966793e3a3a7665726966793a3a686330663565643636316364343664643196025170616c6c65745f636f6e7472616374733a3a6163636f756e745f64623a3a4f7665726c61794163636f756e7444623c543e3a3a7365745f62616c616e63653a3a686231356533386139626134646536343697024770616c6c65745f656c656374696f6e735f70687261676d656e3a3a4d6f64756c653c543e3a3a63616c6c5f66756e6374696f6e733a3a683237383538393530633536326533343998024970616c6c65745f656c656374696f6e735f70687261676d656e3a3a4d6f64756c653c543e3a3a73746f726167655f6d657461646174613a3a686166373832353964653639336236333799025270616c6c65745f656c656374696f6e735f70687261676d656e3a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a68663939343634393139373635656637389a02a3013c70616c6c65745f656c656374696f6e735f70687261676d656e3a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a5465726d4475726174696f6e44656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a68326266396533313137333434363862319b02a7013c70616c6c65745f656c656374696f6e735f70687261676d656e3a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a4465736972656452756e6e657273557044656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a68616535376537303165613565633631639c02a5013c70616c6c65745f656c656374696f6e735f70687261676d656e3a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a446573697265644d656d6265727344656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a68616566333731353238383435343965319d02a4013c70616c6c65745f656c656374696f6e735f70687261676d656e3a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a43616e646964616379426f6e6444656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a68323632633136616330303534666337309e02653c70616c6c65745f656c656374696f6e735f70687261676d656e3a3a43616c6c3c543e2061732073705f72756e74696d653a3a7472616974733a3a446973706174636861626c653e3a3a64697370617463683a3a68326166326165363135363135646263659f024170616c6c65745f656c656374696f6e735f70687261676d656e3a3a4d6f64756c653c543e3a3a69735f766f7465723a3a6839653766623264353832613137613039a002386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6839666261323937346333363839353562a1024a3c58206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a7573696e675f656e636f6465643a3a6832383066636230396133363439623830a202cc016672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6c696e6b65645f6d61703a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f646520666f72206672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6c696e6b65645f6d61703a3a456e636f64654c696b654c696e6b6167653c504b65792c4e4b65792c4b65793e3e3a3a656e636f64655f746f3a3a6837616239353965363534613436613562a302b8016672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6c696e6b65645f6d61703a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f646520666f72206672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6c696e6b65645f6d61703a3a4c696e6b6167653c4b65793e3e3a3a656e636f64655f746f3a3a6835343933663330366666313836376332a4024870616c6c65745f656c656374696f6e735f70687261676d656e3a3a4d6f64756c653c543e3a3a646f5f72656d6f76655f766f7465723a3a6834323836356565613761663365323365a5025270616c6c65745f656c656374696f6e735f70687261676d656e3a3a4d6f64756c653c543e3a3a72656d6f76655f616e645f7265706c6163655f6d656d6265723a3a6830653732313137623839386433666261a6024270616c6c65745f656c656374696f6e735f70687261676d656e3a3a4d6f64756c653c543e3a3a69735f6d656d6265723a3a6834653237666566623235646165613763a7024270616c6c65745f656c656374696f6e735f70687261676d656e3a3a4d6f64756c653c543e3a3a69735f72756e6e65723a3a6866396530623538656364363336363066a8026b3c636f72653a3a697465723a3a61646170746572733a3a526573756c745368756e743c492c453e20617320636f72653a3a697465723a3a7472616974733a3a6974657261746f723a3a4974657261746f723e3a3a6e6578743a3a6865396537393336343463356635336534a9026f3c636f72653a3a697465723a3a61646170746572733a3a526573756c745368756e743c492c453e20617320636f72653a3a697465723a3a7472616974733a3a6974657261746f723a3a4974657261746f723e3a3a7472795f666f6c643a3a6831336330666431616562646432623034aa024b616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6d61703a3a566163616e74456e7472793c4b2c563e3a3a696e736572743a3a6834663465346364346331653531663065ab02723c70616c6c65745f72616e646f6d6e6573735f636f6c6c6563746976655f666c69703a3a4d6f64756c653c543e206173206672616d655f6d657461646174613a3a4d6f64756c654572726f724d657461646174613e3a3a6d657461646174613a3a6838616562633439663335306236353433ac025770616c6c65745f7472616e73616374696f6e5f7061796d656e743a3a4368617267655472616e73616374696f6e5061796d656e743c543e3a3a636f6d707574655f6665653a3a6865303130633637393339303039333763ad026f3c285475706c65456c656d656e74302c205475706c65456c656d656e7431292061732073705f72756e74696d653a3a7472616974733a3a4f6e46696e616c697a653c426c6f636b4e756d6265723e3e3a3a6f6e5f66696e616c697a653a3a6836633638626630333532336330343961ae023970616c6c65745f74726561737572793a3a4d6f64756c653c543e3a3a6163636f756e745f69643a3a6839386530376138626365323066613534af023870616c6c65745f74726561737572793a3a4d6f64756c653c543e3a3a70726f706f73616c733a3a6864323337643334373831656534646261b00290013c70616c6c65745f72616e646f6d6e6573735f636f6c6c6563746976655f666c69703a3a4d6f64756c653c543e206173206672616d655f737570706f72743a3a7472616974733a3a52616e646f6d6e6573733c3c54206173206672616d655f73797374656d3a3a54726169743e3a3a486173683e3e3a3a72616e646f6d3a3a6833336433376433663530353965666461b102456672616d655f737570706f72743a3a7472616974733a3a4f6e556e62616c616e6365643a3a6f6e5f756e62616c616e6365643a3a6832333666613966323330316633313666b2023d70616c6c65745f74726561737572793a3a4d6f64756c653c543e3a3a63616c6c5f66756e6374696f6e733a3a6861393935656264303538663035333430b3023f70616c6c65745f74726561737572793a3a4d6f64756c653c543e3a3a73746f726167655f6d657461646174613a3a6833326362346434613366326261333066b4024870616c6c65745f74726561737572793a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a6837373862666536366461323532396538b50291013c70616c6c65745f74726561737572793a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a4275726e44656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6836653732326264303864666666393963b60298013c70616c6c65745f74726561737572793a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a5370656e64506572696f6444656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6833353562653966313964306563666265b70299013c70616c6c65745f74726561737572793a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a50726f706f73616c426f6e6444656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6865663432333231366431353432373162b802386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6832353765396366343065666263363530b9023b70616c6c65745f636f6e7472616374733a3a6761733a3a726566756e645f756e757365645f6761733a3a6863643435613230393965383736653137ba024b3c5b543b205f5d206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a656e636f64655f746f3a3a6865393737336338636431623037646231bb024a70616c6c65745f7472616e73616374696f6e5f7061796d656e743a3a4d6f64756c653c543e3a3a73746f726167655f6d657461646174613a3a6863386239313130306632663938643236bc025370616c6c65745f7472616e73616374696f6e5f7061796d656e743a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a6833363963616137666635383631393135bd025170616c6c65745f72616e646f6d6e6573735f636f6c6c6563746976655f666c69703a3a4d6f64756c653c543e3a3a73746f726167655f6d657461646174613a3a6863323731396665323735326164646135be026073705f696f3a3a63727970746f3a3a65787465726e5f686f73745f66756e6374696f6e5f696d706c733a3a736563703235366b315f65636473615f7265636f7665725f636f6d707265737365643a3a6866313630303365646533616235313934bf02603c70616c6c65745f74726561737572793a3a4d6f64756c653c543e206173206672616d655f6d657461646174613a3a4d6f64756c654572726f724d657461646174613e3a3a6d657461646174613a3a6862363864373562646461373130353038c002633c636f72653a3a697465723a3a61646170746572733a3a4d61703c492c463e20617320636f72653a3a697465723a3a7472616974733a3a6974657261746f723a3a4974657261746f723e3a3a666f6c643a3a6834353636383533386430663333633839c102553c6e6f64655f72756e74696d653a3a43616c6c2061732073705f72756e74696d653a3a7472616974733a3a446973706174636861626c653e3a3a64697370617463683a3a6837353535376334616233343963343864c2026b3c7061726974795f7363616c655f636f6465633a3a636f6d706163743a3a436f6d706163743c7536343e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a6839343866616433343436333763333337c302713c7061726974795f7363616c655f636f6465633a3a636f6d706163743a3a436f6d706163745265663c7536343e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a656e636f64655f746f3a3a6864326561656139613733633032376562c402303c265420617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6834373363636133666137363238323564c502303c265420617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6865376430626436666265346263613032c6024170616c6c65745f6d656d626572736869703a3a4d6f64756c653c542c493e3a3a63616c6c5f66756e6374696f6e733a3a6839353731313363643838396633313431c7024370616c6c65745f6d656d626572736869703a3a4d6f64756c653c542c493e3a3a73746f726167655f6d657461646174613a3a6866363737333036626461616265393838c802703c7061726974795f7363616c655f636f6465633a3a636f6d706163743a3a436f6d706163743c543e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a7573696e675f656e636f6465643a3a6830313763613562653063653830613935c902303c265420617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6832313435353564666632323365643464ca02466e6f64655f72756e74696d653a3a52756e74696d653a3a5f5f6d6f64756c655f6576656e74735f6672616d655f73797374656d3a3a6830633334326234616237303465636130cb02486e6f64655f72756e74696d653a3a52756e74696d653a3a5f5f6d6f64756c655f6576656e74735f70616c6c65745f7574696c6974793a3a6865373134633731386536633331383937cc024170616c6c65745f617574686f72736869703a3a4d6f64756c653c543e3a3a73746f726167655f6d657461646174613a3a6835656566616537343233313161383933cd023f70616c6c65745f617574686f72736869703a3a4d6f64756c653c543e3a3a63616c6c5f66756e6374696f6e733a3a6836393161346461326239343762303465ce02486e6f64655f72756e74696d653a3a52756e74696d653a3a5f5f6d6f64756c655f6576656e74735f70616c6c65745f696e64696365733a3a6833303730386534323631333464373165cf02496e6f64655f72756e74696d653a3a52756e74696d653a3a5f5f6d6f64756c655f6576656e74735f70616c6c65745f62616c616e6365733a3a6831303733353438323565633533643134d002486e6f64655f72756e74696d653a3a52756e74696d653a3a5f5f6d6f64756c655f6576656e74735f70616c6c65745f7374616b696e673a3a6865643064653264313332323239646531d102486e6f64655f72756e74696d653a3a52756e74696d653a3a5f5f6d6f64756c655f6576656e74735f70616c6c65745f73657373696f6e3a3a6833356533353435376435343530353037d2024a6e6f64655f72756e74696d653a3a52756e74696d653a3a5f5f6d6f64756c655f6576656e74735f70616c6c65745f64656d6f63726163793a3a6832313562303339653333316436656537d302556e6f64655f72756e74696d653a3a52756e74696d653a3a5f5f6d6f64756c655f6576656e74735f70616c6c65745f636f6c6c6563746976655f496e7374616e6365313a3a6836393034363861373333643238613238d402536e6f64655f72756e74696d653a3a52756e74696d653a3a5f5f6d6f64756c655f6576656e74735f70616c6c65745f656c656374696f6e735f70687261676d656e3a3a6831313032646137343336663764623938d502556e6f64655f72756e74696d653a3a52756e74696d653a3a5f5f6d6f64756c655f6576656e74735f70616c6c65745f6d656d626572736869705f496e7374616e6365313a3a6862613534353538353861323662386135d602486e6f64655f72756e74696d653a3a52756e74696d653a3a5f5f6d6f64756c655f6576656e74735f70616c6c65745f6772616e6470613a3a6861326334613865323935353039616635d702496e6f64655f72756e74696d653a3a52756e74696d653a3a5f5f6d6f64756c655f6576656e74735f70616c6c65745f74726561737572793a3a6839326631656130363733383261316562d8024a6e6f64655f72756e74696d653a3a52756e74696d653a3a5f5f6d6f64756c655f6576656e74735f70616c6c65745f636f6e7472616374733a3a6831393337636661376532613237323361d902456e6f64655f72756e74696d653a3a52756e74696d653a3a5f5f6d6f64756c655f6576656e74735f70616c6c65745f7375646f3a3a6836353032636337663735616564626437da024a6e6f64655f72756e74696d653a3a52756e74696d653a3a5f5f6d6f64756c655f6576656e74735f70616c6c65745f696d5f6f6e6c696e653a3a6834653435613762353063343464316438db02496e6f64655f72756e74696d653a3a52756e74696d653a3a5f5f6d6f64756c655f6576656e74735f70616c6c65745f6f6666656e6365733a3a6834636332373330353961626437303761dc02466e6f64655f72756e74696d653a3a52756e74696d653a3a5f5f6d6f64756c655f6576656e74735f70616c6c65745f6e69636b733a3a6835366535306539333064373565306561dd024f70616c6c65745f636f6e7472616374733a3a657865633a3a457865637574696f6e436f6e746578743c542c562c4c3e3a3a696e7374616e74696174653a3a6832326261373632396366303536666431de023370616c6c65745f636f6e7472616374733a3a657865633a3a7472616e736665723a3a6835623733373830633633313532376363df023b70616c6c65745f636f6e7472616374733a3a7761736d3a3a636f64655f63616368653a3a6c6f61643a3a6861346530616266646562646265343466e0025d3c70616c6c65745f636f6e7472616374733a3a7761736d3a3a5761736d566d2061732070616c6c65745f636f6e7472616374733a3a657865633a3a566d3c543e3e3a3a657865637574653a3a6833373936663431656533643961633530e10230636f72653a3a7074723a3a7265616c5f64726f705f696e5f706c6163653a3a6839323739363932333931323433613236e2024870616c6c65745f636f6e7472616374733a3a657865633a3a457865637574696f6e436f6e746578743c542c562c4c3e3a3a63616c6c3a3a6864633033316339313961306537383037e3024470616c6c65745f636f6e7472616374733a3a72656e743a3a7472795f65766963745f6f725f616e645f7061795f72656e743a3a6861343032333062343565633764656264e402386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6836666363343934373036333932653965e502910173705f636f6e73656e7375735f626162653a3a6469676573743a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f722073705f636f6e73656e7375735f626162653a3a6469676573743a3a526177426162655072654469676573743e3a3a6465636f64653a3a6839333935336436386439373737303663e6023f7061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653a3a656e636f64655f746f3a3a6830636466336164383938616363636664e7026f3c73705f72756e74696d653a3a67656e657269633a3a6469676573743a3a4469676573744974656d3c486173683e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a656e636f64653a3a6838303337333562623237333834313037e8027d70616c6c65745f636f6c6c6563746976653a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f646520666f722070616c6c65745f636f6c6c6563746976653a3a43616c6c3c542c493e3e3a3a656e636f64655f746f3a3a6835323530623238376538306164306265e9027a70616c6c65745f636f6e7472616374733a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f646520666f722070616c6c65745f636f6e7472616374733a3a5363686564756c653e3a3a656e636f64655f746f3a3a6863663938333065643336333531353234ea026f6e6f64655f72756e74696d653a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f646520666f72206e6f64655f72756e74696d653a3a4576656e743e3a3a656e636f64655f746f3a3a6836376137386661376662656332326335eb028e0170616c6c65745f636f6c6c6563746976653a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f646520666f722070616c6c65745f636f6c6c6563746976653a3a5261774576656e743c486173682c4163636f756e7449642c493e3e3a3a656e636f64655f746f3a3a6861373230613961613666326630393362ec024b3c5b543b205f5d206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a656e636f64655f746f3a3a6833626266343637623864633662303832ed02653c6e6f64655f72756e74696d653a3a43616c6c206173206672616d655f737570706f72743a3a776569676874733a3a4765744469737061746368496e666f3e3a3a6765745f64697370617463685f696e666f3a3a6832336466666435336636333730616331ee02437061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653a3a7573696e675f656e636f6465643a3a6863346363376138366466373739383636ef02386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6862303236633536616239323834363663f002386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6835656561343837333266623931653131f102437061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653a3a7573696e675f656e636f6465643a3a6837303930386466633335336336656432f2025c3c70616c6c65745f636f6e7472616374733a3a43616c6c3c543e2061732073705f72756e74696d653a3a7472616974733a3a446973706174636861626c653e3a3a64697370617463683a3a6865656235363639326634346438386137f30299013c70616c6c65745f636f6c6c6563746976653a3a4d6f64756c653c542c493e206173206672616d655f737570706f72743a3a7472616974733a3a4368616e67654d656d626572733c3c54206173206672616d655f73797374656d3a3a54726169743e3a3a4163636f756e7449643e3e3a3a6368616e67655f6d656d626572735f736f727465643a3a6834346165646331333637666330393339f4022b616c6c6f633a3a736c6963653a3a6d657267655f736f72743a3a6835333462383435623435303537353761f5024b6672616d655f737570706f72743a3a7472616974733a3a4368616e67654d656d626572733a3a7365745f6d656d626572735f736f727465643a3a6864316561613432636663376433366638f6025f3c70616c6c65745f636f6c6c6563746976653a3a43616c6c3c542c493e2061732073705f72756e74696d653a3a7472616974733a3a446973706174636861626c653e3a3a64697370617463683a3a6833326136393365633364343535313964f7025f3c70616c6c65745f636f6c6c6563746976653a3a43616c6c3c542c493e2061732073705f72756e74696d653a3a7472616974733a3a446973706174636861626c653e3a3a64697370617463683a3a6839303833346133343935386263613330f8025c3c70616c6c65745f64656d6f63726163793a3a43616c6c3c543e2061732073705f72756e74696d653a3a7472616974733a3a446973706174636861626c653e3a3a64697370617463683a3a6833393336356538306530666639646331f9023470616c6c65745f7374616b696e673a3a4d6f64756c653c543e3a3a6c65646765723a3a6832303532323437303062333262343964fa025a3c70616c6c65745f7374616b696e673a3a43616c6c3c543e2061732073705f72756e74696d653a3a7472616974733a3a446973706174636861626c653e3a3a64697370617463683a3a6836636334343831613130323332643866fb0230636f72653a3a7074723a3a7265616c5f64726f705f696e5f706c6163653a3a6837656437626162356632326133613931fc0234636f72653a3a7074723a3a7265616c5f64726f705f696e5f706c6163653a3a68643033646363643032333334613266662e333032fd027a70616c6c65745f636f6c6c6563746976653a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f722070616c6c65745f636f6c6c6563746976653a3a43616c6c3c542c493e3e3a3a6465636f64653a3a6832306261393063323066613839316239fe027770616c6c65745f636f6e7472616374733a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f722070616c6c65745f636f6e7472616374733a3a5363686564756c653e3a3a6465636f64653a3a6831366564303661643435383133356237ff02386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a68383165663961363833346332666166308003386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a686532663531626239326664363532653881033b70616c6c65745f626162653a3a4d6f64756c653c543e3a3a73746f726167655f6d657461646174613a3a683238326332373939613238356632656482034470616c6c65745f626162653a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a686261376330356538333437363534353083039a013c70616c6c65745f626162653a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a4578706563746564426c6f636b54696d6544656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6838666661626565313437643830336339840396013c70616c6c65745f626162653a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a45706f63684475726174696f6e44656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a68633430313361616334626436636236378503456672616d655f737570706f72743a3a7472616974733a3a4f6e556e62616c616e6365643a3a6f6e5f756e62616c616e6365643a3a68346332306664653937643966323939308603437061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653a3a7573696e675f656e636f6465643a3a68323965316233633266346264313065378703776672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a3c696d706c206672616d655f737570706f72743a3a73746f726167653a3a53746f726167654d61703c4b2c563e20666f7220473e3a3a696e736572743a3a6861643534363365383561386433373535880330636f72653a3a7074723a3a7265616c5f64726f705f696e5f706c6163653a3a683061373435383062333938666135663989032d636f72653a3a736c6963653a3a736f72743a3a726563757273653a3a68316537316164363532346138636331338a0334636f72653a3a736c6963653a3a736f72743a3a627265616b5f7061747465726e733a3a68356562633662353438653161663466308b032e636f72653a3a736c6963653a3a736f72743a3a68656170736f72743a3a68373863666134393263663635343736398c033c636f72653a3a736c6963653a3a736f72743a3a7061727469616c5f696e73657274696f6e5f736f72743a3a68613030356137656437373332353862398d032d636f72653a3a736c6963653a3a736f72743a3a726563757273653a3a68396662356535353162363438653036668e0334636f72653a3a736c6963653a3a736f72743a3a627265616b5f7061747465726e733a3a68306466626330333061643634633136308f032e636f72653a3a736c6963653a3a736f72743a3a68656170736f72743a3a686532616435636463613333656165366590033c636f72653a3a736c6963653a3a736f72743a3a7061727469616c5f696e73657274696f6e5f736f72743a3a683737643433363532356235353363353191036a3c70616c6c65745f636f6e7472616374733a3a7761736d3a3a5761736d566d2061732070616c6c65745f636f6e7472616374733a3a657865633a3a566d3c543e3e3a3a657865637574653a3a7b7b636c6f737572657d7d3a3a6834363165613835636565373439396237920381013c70616c6c65745f636f6e7472616374733a3a7761736d3a3a72756e74696d653a3a456e762061732070616c6c65745f636f6e7472616374733a3a7761736d3a3a656e765f6465663a3a46756e6374696f6e496d706c50726f76696465723c453e3e3a3a696d706c733a3a6761733a3a683832393736663563613931663533353493035273705f73616e64626f783a3a696d703a3a456e7669726f6e6d656e74446566696e6974696f6e4275696c6465723c543e3a3a6164645f686f73745f66756e633a3a683164653662653434383832323761346494038d013c70616c6c65745f636f6e7472616374733a3a7761736d3a3a72756e74696d653a3a456e762061732070616c6c65745f636f6e7472616374733a3a7761736d3a3a656e765f6465663a3a46756e6374696f6e496d706c50726f76696465723c453e3e3a3a696d706c733a3a6578745f7365745f73746f726167653a3a683365663032343431623732303636343795038d013c70616c6c65745f636f6e7472616374733a3a7761736d3a3a72756e74696d653a3a456e762061732070616c6c65745f636f6e7472616374733a3a7761736d3a3a656e765f6465663a3a46756e6374696f6e496d706c50726f76696465723c453e3e3a3a696d706c733a3a6578745f6765745f73746f726167653a3a6835323430353163376662313831646436960386013c70616c6c65745f636f6e7472616374733a3a7761736d3a3a72756e74696d653a3a456e762061732070616c6c65745f636f6e7472616374733a3a7761736d3a3a656e765f6465663a3a46756e6374696f6e496d706c50726f76696465723c453e3e3a3a696d706c733a3a6578745f63616c6c3a3a683766626664346462313633636138656597038d013c70616c6c65745f636f6e7472616374733a3a7761736d3a3a72756e74696d653a3a456e762061732070616c6c65745f636f6e7472616374733a3a7761736d3a3a656e765f6465663a3a46756e6374696f6e496d706c50726f76696465723c453e3e3a3a696d706c733a3a6578745f696e7374616e74696174653a3a6833363832333539313136343336653838980388013c70616c6c65745f636f6e7472616374733a3a7761736d3a3a72756e74696d653a3a456e762061732070616c6c65745f636f6e7472616374733a3a7761736d3a3a656e765f6465663a3a46756e6374696f6e496d706c50726f76696465723c453e3e3a3a696d706c733a3a6578745f72657475726e3a3a6862636335363630623237373137353964990388013c70616c6c65745f636f6e7472616374733a3a7761736d3a3a72756e74696d653a3a456e762061732070616c6c65745f636f6e7472616374733a3a7761736d3a3a656e765f6465663a3a46756e6374696f6e496d706c50726f76696465723c453e3e3a3a696d706c733a3a6578745f63616c6c65723a3a68633566633035393861633235646461669a0389013c70616c6c65745f636f6e7472616374733a3a7761736d3a3a72756e74696d653a3a456e762061732070616c6c65745f636f6e7472616374733a3a7761736d3a3a656e765f6465663a3a46756e6374696f6e496d706c50726f76696465723c453e3e3a3a696d706c733a3a6578745f616464726573733a3a68333563373261613262323631363563369b038b013c70616c6c65745f636f6e7472616374733a3a7761736d3a3a72756e74696d653a3a456e762061732070616c6c65745f636f6e7472616374733a3a7761736d3a3a656e765f6465663a3a46756e6374696f6e496d706c50726f76696465723c453e3e3a3a696d706c733a3a6578745f6761735f70726963653a3a68616436363866353038396565626366339c038a013c70616c6c65745f636f6e7472616374733a3a7761736d3a3a72756e74696d653a3a456e762061732070616c6c65745f636f6e7472616374733a3a7761736d3a3a656e765f6465663a3a46756e6374696f6e496d706c50726f76696465723c453e3e3a3a696d706c733a3a6578745f6761735f6c6566743a3a68623266616534376136306534363761399d0389013c70616c6c65745f636f6e7472616374733a3a7761736d3a3a72756e74696d653a3a456e762061732070616c6c65745f636f6e7472616374733a3a7761736d3a3a656e765f6465663a3a46756e6374696f6e496d706c50726f76696465723c453e3e3a3a696d706c733a3a6578745f62616c616e63653a3a68393638633730313562363535383131369e0393013c70616c6c65745f636f6e7472616374733a3a7761736d3a3a72756e74696d653a3a456e762061732070616c6c65745f636f6e7472616374733a3a7761736d3a3a656e765f6465663a3a46756e6374696f6e496d706c50726f76696465723c453e3e3a3a696d706c733a3a6578745f76616c75655f7472616e736665727265643a3a68326138323661303064616435326361339f0388013c70616c6c65745f636f6e7472616374733a3a7761736d3a3a72756e74696d653a3a456e762061732070616c6c65745f636f6e7472616374733a3a7761736d3a3a656e765f6465663a3a46756e6374696f6e496d706c50726f76696465723c453e3e3a3a696d706c733a3a6578745f72616e646f6d3a3a6835393831313365656364343137373933a00385013c70616c6c65745f636f6e7472616374733a3a7761736d3a3a72756e74696d653a3a456e762061732070616c6c65745f636f6e7472616374733a3a7761736d3a3a656e765f6465663a3a46756e6374696f6e496d706c50726f76696465723c453e3e3a3a696d706c733a3a6578745f6e6f773a3a6836333537613832623763353033646637a10391013c70616c6c65745f636f6e7472616374733a3a7761736d3a3a72756e74696d653a3a456e762061732070616c6c65745f636f6e7472616374733a3a7761736d3a3a656e765f6465663a3a46756e6374696f6e496d706c50726f76696465723c453e3e3a3a696d706c733a3a6578745f6d696e696d756d5f62616c616e63653a3a6836383937636139333363346435333239a2038f013c70616c6c65745f636f6e7472616374733a3a7761736d3a3a72756e74696d653a3a456e762061732070616c6c65745f636f6e7472616374733a3a7761736d3a3a656e765f6465663a3a46756e6374696f6e496d706c50726f76696465723c453e3e3a3a696d706c733a3a6578745f64697370617463685f63616c6c3a3a6838376337626633363366346235646130a3038c013c70616c6c65745f636f6e7472616374733a3a7761736d3a3a72756e74696d653a3a456e762061732070616c6c65745f636f6e7472616374733a3a7761736d3a3a656e765f6465663a3a46756e6374696f6e496d706c50726f76696465723c453e3e3a3a696d706c733a3a6578745f726573746f72655f746f3a3a6830323930633465396639323162386332a4038e013c70616c6c65745f636f6e7472616374733a3a7761736d3a3a72756e74696d653a3a456e762061732070616c6c65745f636f6e7472616374733a3a7761736d3a3a656e765f6465663a3a46756e6374696f6e496d706c50726f76696465723c453e3e3a3a696d706c733a3a6578745f736372617463685f73697a653a3a6862393135363631396136383463643830a5038e013c70616c6c65745f636f6e7472616374733a3a7761736d3a3a72756e74696d653a3a456e762061732070616c6c65745f636f6e7472616374733a3a7761736d3a3a656e765f6465663a3a46756e6374696f6e496d706c50726f76696465723c453e3e3a3a696d706c733a3a6578745f736372617463685f726561643a3a6836333231346432376530313835306265a6038f013c70616c6c65745f636f6e7472616374733a3a7761736d3a3a72756e74696d653a3a456e762061732070616c6c65745f636f6e7472616374733a3a7761736d3a3a656e765f6465663a3a46756e6374696f6e496d706c50726f76696465723c453e3e3a3a696d706c733a3a6578745f736372617463685f77726974653a3a6861313535393136363233303965343461a7038f013c70616c6c65745f636f6e7472616374733a3a7761736d3a3a72756e74696d653a3a456e762061732070616c6c65745f636f6e7472616374733a3a7761736d3a3a656e765f6465663a3a46756e6374696f6e496d706c50726f76696465723c453e3e3a3a696d706c733a3a6578745f6465706f7369745f6576656e743a3a6839353962356334663832636563306165a80394013c70616c6c65745f636f6e7472616374733a3a7761736d3a3a72756e74696d653a3a456e762061732070616c6c65745f636f6e7472616374733a3a7761736d3a3a656e765f6465663a3a46756e6374696f6e496d706c50726f76696465723c453e3e3a3a696d706c733a3a6578745f7365745f72656e745f616c6c6f77616e63653a3a6832623434366361313532383235666436a90390013c70616c6c65745f636f6e7472616374733a3a7761736d3a3a72756e74696d653a3a456e762061732070616c6c65745f636f6e7472616374733a3a7761736d3a3a656e765f6465663a3a46756e6374696f6e496d706c50726f76696465723c453e3e3a3a696d706c733a3a6578745f72656e745f616c6c6f77616e63653a3a6866643134383939303937653061666534aa0389013c70616c6c65745f636f6e7472616374733a3a7761736d3a3a72756e74696d653a3a456e762061732070616c6c65745f636f6e7472616374733a3a7761736d3a3a656e765f6465663a3a46756e6374696f6e496d706c50726f76696465723c453e3e3a3a696d706c733a3a6578745f7072696e746c6e3a3a6830633039663066346632343861356434ab038e013c70616c6c65745f636f6e7472616374733a3a7761736d3a3a72756e74696d653a3a456e762061732070616c6c65745f636f6e7472616374733a3a7761736d3a3a656e765f6465663a3a46756e6374696f6e496d706c50726f76696465723c453e3e3a3a696d706c733a3a6578745f626c6f636b5f6e756d6265723a3a6866616661353534323463333564356231ac0395013c70616c6c65745f636f6e7472616374733a3a7761736d3a3a72756e74696d653a3a456e762061732070616c6c65745f636f6e7472616374733a3a7761736d3a3a656e765f6465663a3a46756e6374696f6e496d706c50726f76696465723c453e3e3a3a696d706c733a3a6578745f6765745f72756e74696d655f73746f726167653a3a6831346233643664396239353666613662ad033273705f73616e64626f783a3a696d703a3a64697370617463685f7468756e6b3a3a6839666663363561336466386264343632ae037973705f636f72653a3a73616e64626f783a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f722073705f636f72653a3a73616e64626f783a3a547970656456616c75653e3a3a6465636f64653a3a6837393965313263323335366439656639af030c436f72655f76657273696f6eb00312436f72655f657865637574655f626c6f636bb1039a0173705f72756e74696d653a3a67656e657269633a3a626c6f636b3a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f722073705f72756e74696d653a3a67656e657269633a3a626c6f636b3a3a426c6f636b3c4865616465722c45787472696e7369633e3e3a3a6465636f64653a3a6834656533356236393861636630643063b203726672616d655f6578656375746976653a3a4578656375746976653c53797374656d2c426c6f636b2c436f6e746578742c556e7369676e656456616c696461746f722c416c6c4d6f64756c65733e3a3a696e697469616c697a655f626c6f636b3a3a6865356133393765316565633933613035b3035373705f696f3a3a747269653a3a65787465726e5f686f73745f66756e6374696f6e5f696d706c733a3a626c616b65325f3235365f6f7264657265645f726f6f743a3a6865366435356138333535383030323261b4037a6672616d655f6578656375746976653a3a4578656375746976653c53797374656d2c426c6f636b2c436f6e746578742c556e7369676e656456616c696461746f722c416c6c4d6f64756c65733e3a3a6170706c795f65787472696e7369635f776974685f6c656e3a3a6863373833666135386161613735636262b503363c5420617320636f72653a3a636f6e766572743a3a496e746f3c553e3e3a3a696e746f3a3a6863633038376137646234363939363637b603346672616d655f73797374656d3a3a4d6f64756c653c543e3a3a66696e616c697a653a3a6832316139643461343938383062326630b70315436f72655f696e697469616c697a655f626c6f636bb803114d657461646174615f6d65746164617461b9031c426c6f636b4275696c6465725f6170706c795f65787472696e736963ba03aa0173705f72756e74696d653a3a7472616e73616374696f6e5f76616c69646974793a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f646520666f722073705f72756e74696d653a3a7472616e73616374696f6e5f76616c69646974793a3a5472616e73616374696f6e56616c69646974794572726f723e3a3a656e636f64655f746f3a3a6862646264323936626664623835636135bb031b426c6f636b4275696c6465725f66696e616c697a655f626c6f636bbc035c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6832653263383839613739633763303037bd03386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6836373237343262313464303862323462be03437061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653a3a7573696e675f656e636f6465643a3a6835643265366138386162343861346338bf0320426c6f636b4275696c6465725f696e686572656e745f65787472696e73696373c003613c616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6d61703a3a42547265654d61703c4b2c563e20617320636f72653a3a6f70733a3a64726f703a3a44726f703e3a3a64726f703a3a6862353832313833323536613864313866c1033a70616c6c65745f74696d657374616d703a3a657874726163745f696e686572656e745f646174613a3a6838366334646165306539353435363935c2031c426c6f636b4275696c6465725f636865636b5f696e686572656e7473c30318426c6f636b4275696c6465725f72616e646f6d5f73656564c4032b5461676765645472616e73616374696f6e51756575655f76616c69646174655f7472616e73616374696f6ec5035373705f72756e74696d653a3a7472616e73616374696f6e5f76616c69646974793a3a56616c69645472616e73616374696f6e3a3a636f6d62696e655f776974683a3a6863306664353332653331666262396139c6036b3c70616c6c65745f696d5f6f6e6c696e653a3a4d6f64756c653c543e2061732073705f72756e74696d653a3a7472616974733a3a56616c6964617465556e7369676e65643e3a3a76616c69646174655f756e7369676e65643a3a6865656463666265653935343636383731c7036d3c70616c6c65745f636f6e7472616374733a3a436865636b426c6f636b4761734c696d69743c543e2061732073705f72756e74696d653a3a7472616974733a3a5369676e6564457874656e73696f6e3e3a3a76616c69646174653a3a6862373862356461653538383232653237c803214f6666636861696e576f726b65724170695f6f6666636861696e5f776f726b6572c9033c7061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653a3a656e636f64653a3a6834306363316462656531303931313862ca035173705f696f3a3a63727970746f3a3a65787465726e5f686f73745f66756e6374696f6e5f696d706c733a3a737232353531395f7075626c69635f6b6579733a3a6865376563383264373331366537633634cb033d70616c6c65745f696d5f6f6e6c696e653a3a4d6f64756c653c543e3a3a69735f6f6e6c696e655f6175783a3a6862356231353765633561616434363865cc034d73705f696f3a3a6f6666636861696e3a3a65787465726e5f686f73745f66756e6374696f6e5f696d706c733a3a6e6574776f726b5f73746174653a3a6830396534323362366564323963366166cd034a73705f696f3a3a63727970746f3a3a65787465726e5f686f73745f66756e6374696f6e5f696d706c733a3a737232353531395f7369676e3a3a6836663434363937383765343964373930ce0347636f72653a3a666d743a3a6e756d3a3a3c696d706c20636f72653a3a666d743a3a446562756720666f72207533323e3a3a666d743a3a6838363464316333323636306339633731cf035273705f696f3a3a6f6666636861696e3a3a65787465726e5f686f73745f66756e6374696f6e5f696d706c733a3a7375626d69745f7472616e73616374696f6e3a3a6838623566663034306534376665376361d0031e4772616e6470614170695f6772616e6470615f617574686f726974696573d10315426162654170695f636f6e66696775726174696f6ed20321417574686f72697479446973636f766572794170695f617574686f726974696573d3031d4163636f756e744e6f6e63654170695f6163636f756e745f6e6f6e6365d40311436f6e7472616374734170695f63616c6cd5033970616c6c65745f636f6e7472616374733a3a4d6f64756c653c543e3a3a626172655f63616c6c3a3a6837303661643265393163653731303739d60318436f6e7472616374734170695f6765745f73746f72616765d703205472616e73616374696f6e5061796d656e744170695f71756572795f696e666fd8032153657373696f6e4b6579735f67656e65726174655f73657373696f6e5f6b657973d903920173705f6170706c69636174696f6e5f63727970746f3a3a737232353531393a3a3c696d706c2073705f6170706c69636174696f6e5f63727970746f3a3a7472616974733a3a52756e74696d655075626c696320666f722073705f636f72653a3a737232353531393a3a5075626c69633e3a3a67656e65726174655f706169723a3a6834303163333038393536343766666465da03437061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653a3a7573696e675f656e636f6465643a3a6837633730653935383335323639393465db03497061726974795f7363616c655f636f6465633a3a656e636f64655f617070656e643a3a657874726163745f6c656e6774685f646174613a3a6865353662303462383663623635643834dc03463c58206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a656e636f64655f746f3a3a6831343538373833363663336562346432dd0330636f72653a3a7074723a3a7265616c5f64726f705f696e5f706c6163653a3a6864353433303538313032363234343937de033a6672616d655f73797374656d3a3a4d6f64756c653c543e3a3a63616c6c5f66756e6374696f6e733a3a6864386131663131646266646566643135df033c6672616d655f73797374656d3a3a4d6f64756c653c543e3a3a73746f726167655f6d657461646174613a3a6865313863353962636230613764663333e003683c6672616d655f73797374656d3a3a5f5f476574427974655374727563744576656e74733c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6830376635316334636261383861316336e103703c6672616d655f73797374656d3a3a5f5f4765744279746553747275637445787472696e73696373526f6f743c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6864353537633762386430363766396665e203703c6672616d655f73797374656d3a3a5f5f4765744279746553747275637445787472696e736963436f756e743c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6831333131323135376233363736306466e3034b6672616d655f73797374656d3a3a4d6f64756c653c543e3a3a72656769737465725f65787472615f7765696768745f756e636865636b65643a3a6864623034623866663233326632656236e403386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6831336139376131376261393035653865e503386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6834333832353964653862613233333933e603386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6834616230366132303635383439323666e703386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6838306363633039626364303834363063e803386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6838316464346630313863333664393166e903386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6838343164666663366435386465313038ea03386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6861313831336636616462323432333937eb03386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6862303162393434313733366532333434ec03386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6862656434366233353038643332323461ed03386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6863343437613134666339636461616164ee03386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6863393339373530323237373636313161ef03386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6863643837313837313063313765643835f003386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6864373336326161363435613535306166f103386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6864623862613366623331313731343035f203386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6864663661393936393464326133626263f303386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6866643363336564353837393337626265f403396672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a74616b653a3a6830376334313532326432363264313631f5033e70616c6c65745f74696d657374616d703a3a4d6f64756c653c543e3a3a63616c6c5f66756e6374696f6e733a3a6862346565376563393533383465616432f6034070616c6c65745f74696d657374616d703a3a4d6f64756c653c543e3a3a73746f726167655f6d657461646174613a3a6838313838306265303166623134316334f7034970616c6c65745f74696d657374616d703a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a6864383162383264323863313066363434f8039b013c70616c6c65745f74696d657374616d703a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a4d696e696d756d506572696f6444656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6839353334396631633866373439626262f9034a3c58206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a7573696e675f656e636f6465643a3a6834303334303333333138636638653365fa035d3c6672616d655f73797374656d3a3a4d6f64756c653c543e206173206672616d655f6d657461646174613a3a4d6f64756c654572726f724d657461646174613e3a3a6d657461646174613a3a6862316332303035363335656234623235fb03723c616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6d61703a3a496e746f497465723c4b2c563e20617320636f72653a3a697465723a3a7472616974733a3a6974657261746f723a3a4974657261746f723e3a3a6e6578743a3a6832313031333834656538356435323836fc03776672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a3c696d706c206672616d655f737570706f72743a3a73746f726167653a3a53746f726167654d61703c4b2c563e20666f7220473e3a3a696e736572743a3a6836623432633266666538326130393866fd034a3c58206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a7573696e675f656e636f6465643a3a6833393338393133666462613939666539fe033e70616c6c65745f696e64696365733a3a4d6f64756c653c543e3a3a73746f726167655f6d657461646174613a3a6831613130346635343136366432353737ff034470616c6c65745f636f6e7472616374733a3a7761736d3a3a707265706172653a3a707265706172655f636f6e74726163743a3a683062356338306265333761343262613180044170616c6c65745f636f6c6c6563746976653a3a4d6f64756c653c542c493e3a3a63616c6c5f66756e6374696f6e733a3a683531363032653633613730653236616681044370616c6c65745f636f6c6c6563746976653a3a4d6f64756c653c542c493e3a3a73746f726167655f6d657461646174613a3a683035656363373730386634623631336182044370616c6c65745f636f6c6c6563746976653a3a4d6f64756c653c542c493e3a3a73746f726167655f6d657461646174613a3a6862313966353235666338366535656539830430636f72653a3a7074723a3a7265616c5f64726f705f696e5f706c6163653a3a683031303437313639323337323264663284046e6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6c696e6b65645f6d61703a3a4b6579466f726d61743a3a73746f726167655f6c696e6b65645f6d61705f66696e616c5f686561645f6b65793a3a68316234363762666335363161616266308504437061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653a3a7573696e675f656e636f6465643a3a6831613234626632616361366335656232860484016672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6c696e6b65645f6d61703a3a3c696d706c206672616d655f737570706f72743a3a73746f726167653a3a53746f726167654c696e6b65644d61703c4b2c563e20666f7220473e3a3a72656d6f76653a3a6862373866643537386630656261663333870484016672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6c696e6b65645f6d61703a3a3c696d706c206672616d655f737570706f72743a3a73746f726167653a3a53746f726167654c696e6b65644d61703c4b2c563e20666f7220473e3a3a72656d6f76653a3a68396430333035346632326238363964358804776672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a3c696d706c206672616d655f737570706f72743a3a73746f726167653a3a53746f726167654d61703c4b2c563e20666f7220473e3a3a72656d6f76653a3a68613265636165656463316132646130648904696672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6c696e6b65645f6d61703a3a4b6579466f726d61743a3a73746f726167655f6c696e6b65645f6d61705f66696e616c5f6b65793a3a68393765326535326461646531313536388a046e6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6c696e6b65645f6d61703a3a4b6579466f726d61743a3a73746f726167655f6c696e6b65645f6d61705f66696e616c5f686561645f6b65793a3a68343563643637353933386238346335358b04696672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6c696e6b65645f6d61703a3a4b6579466f726d61743a3a73746f726167655f6c696e6b65645f6d61705f66696e616c5f6b65793a3a68306261336131353364303737316631318c04437061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653a3a7573696e675f656e636f6465643a3a68393466646431643731623663303066358d04706672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a646f75626c655f6d61703a3a53746f72616765446f75626c654d61703a3a73746f726167655f646f75626c655f6d61705f66696e616c5f6b65793a3a68613862643263393662326637613766308e04706672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a646f75626c655f6d61703a3a53746f72616765446f75626c654d61703a3a73746f726167655f646f75626c655f6d61705f66696e616c5f6b65793a3a68653134613631346330636165323331648f04746672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a3c696d706c206672616d655f737570706f72743a3a73746f726167653a3a53746f726167654d61703c4b2c563e20666f7220473e3a3a6765743a3a68636564386664313431313161366366379004746672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a3c696d706c206672616d655f737570706f72743a3a73746f726167653a3a53746f726167654d61703c4b2c563e20666f7220473e3a3a6765743a3a68643164663436356636613637383938659104776672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a3c696d706c206672616d655f737570706f72743a3a73746f726167653a3a53746f726167654d61703c4b2c563e20666f7220473e3a3a696e736572743a3a683464666138653137313464393066313792043570616c6c65745f7374616b696e673a3a4d6f64756c653c543e3a3a7374616b6572733a3a686139383637323666383336303063383093043970616c6c65745f7374616b696e673a3a4d6f64756c653c543e3a3a6d616b655f7061796f75743a3a6864313637336162613732663965646539940485013c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6c696e6b65645f6d61703a3a456e756d657261746f723c4b2c562c463e20617320636f72653a3a697465723a3a7472616974733a3a6974657261746f723a3a4974657261746f723e3a3a6e6578743a3a6836346435353062393966643230353330950485013c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6c696e6b65645f6d61703a3a456e756d657261746f723c4b2c562c463e20617320636f72653a3a697465723a3a7472616974733a3a6974657261746f723a3a4974657261746f723e3a3a6e6578743a3a683937613039363566656465613331623796044270616c6c65745f7374616b696e673a3a4d6f64756c653c543e3a3a736c61736861626c655f62616c616e63655f6f663a3a683535343366383963303735303564346197043570616c6c65745f7374616b696e673a3a736c617368696e673a3a646f5f736c6173683a3a686332363038393237623837383538336498043470616c6c65745f7374616b696e673a3a4d6f64756c653c543e3a3a626f6e6465643a3a683839663636636233353533643030313499043b70616c6c65745f7374616b696e673a3a4d6f64756c653c543e3a3a7570646174655f6c65646765723a3a68646265616666346136653666363566309a043c70616c6c65745f7374616b696e673a3a4d6f64756c653c543e3a3a63616c6c5f66756e6374696f6e733a3a68656530343266313432613835356430369b043c70616c6c65745f7374616b696e673a3a4d6f64756c653c543e3a3a656e737572655f6e65775f6572613a3a68373430373663333833663033646235379c043e70616c6c65745f7374616b696e673a3a4d6f64756c653c543e3a3a73746f726167655f6d657461646174613a3a68346266656333613839663137323063379d046d3c70616c6c65745f7374616b696e673a3a5f5f476574427974655374727563745370616e536c6173683c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a68613037346162393261303431376566319e043c7061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653a3a656e636f64653a3a68336365633735643661396262626639669f047a3c70616c6c65745f7374616b696e673a3a5f5f4765744279746553747275637443757272656e74457261506f696e74734561726e65643c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6863376631626132613433653963313162a0046b3c70616c6c65745f7374616b696e673a3a5f5f476574427974655374727563745374616b6572733c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6865613366653531333364636535633362a1046e3c70616c6c65745f7374616b696e673a3a5f5f4765744279746553747275637456616c696461746f72733c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6838373665646230666362636430336631a204793c70616c6c65745f7374616b696e673a3a5f5f476574427974655374727563744d696e696d756d56616c696461746f72436f756e743c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6862336465636164303365366134386538a3044770616c6c65745f7374616b696e673a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a6863666165643262356336623965333535a4049b013c70616c6c65745f7374616b696e673a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a426f6e64696e674475726174696f6e44656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6830313235303663353735643265623565a5049a013c70616c6c65745f7374616b696e673a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a53657373696f6e7350657245726144656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6865373262353738313634366363633364a604f4013c70616c6c65745f7374616b696e673a3a4d6f64756c653c543e2061732073705f7374616b696e673a3a6f6666656e63653a3a4f6e4f6666656e636548616e646c65723c3c54206173206672616d655f73797374656d3a3a54726169743e3a3a4163636f756e7449642c283c542061732070616c6c65745f73657373696f6e3a3a54726169743e3a3a56616c696461746f7249642c203c542061732070616c6c65745f73657373696f6e3a3a686973746f726963616c3a3a54726169743e3a3a46756c6c4964656e74696669636174696f6e293e3e3a3a6f6e5f6f6666656e63653a3a6866613737366239346465303632306339a7044970616c6c65745f7374616b696e673a3a736c617368696e673a3a496e7370656374696e675370616e733c543e3a3a6572615f7370616e3a3a6838366262383863623937303464393733a8045e70616c6c65745f7374616b696e673a3a736c617368696e673a3a496e7370656374696e675370616e733c543e3a3a636f6d706172655f616e645f7570646174655f7370616e5f736c6173683a3a6863383939623233616464333339653162a904776672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a3c696d706c206672616d655f737570706f72743a3a73746f726167653a3a53746f726167654d61703c4b2c563e20666f7220473e3a3a696e736572743a3a6863376632353462353864303266356330aa04776672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a3c696d706c206672616d655f737570706f72743a3a73746f726167653a3a53746f726167654d61703c4b2c563e20666f7220473e3a3a696e736572743a3a6832653435393235636238343838363964ab045f3c70616c6c65745f7374616b696e673a3a4d6f64756c653c543e206173206672616d655f6d657461646174613a3a4d6f64756c654572726f724d657461646174613e3a3a6d657461646174613a3a6864663361383665313165326330613131ac047c73705f636f72653a3a73616e64626f783a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f646520666f722073705f636f72653a3a73616e64626f783a3a547970656456616c75653e3a3a656e636f64655f746f3a3a6835303033393930366337346337653133ad043a70616c6c65745f6e69636b733a3a4d6f64756c653c543e3a3a63616c6c5f66756e6374696f6e733a3a6830626331323832373834343462343430ae043c70616c6c65745f6e69636b733a3a4d6f64756c653c543e3a3a73746f726167655f6d657461646174613a3a6833653564386563643561636636636336af04683c70616c6c65745f6e69636b733a3a5f5f476574427974655374727563744e616d654f663c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6862373963653062303932373566306235b0044570616c6c65745f6e69636b733a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a6836633639623331633931363235663061b10493013c70616c6c65745f6e69636b733a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a4d61784c656e67746844656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6866613266376537333166366463353638b20493013c70616c6c65745f6e69636b733a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a4d696e4c656e67746844656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6862346636666664633532313932643738b30498013c70616c6c65745f6e69636b733a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a5265736572766174696f6e46656544656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6865326236636531313333333639636137b404a40170616c6c65745f636f6e7472616374733a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f646520666f722070616c6c65745f636f6e7472616374733a3a526177416c697665436f6e7472616374496e666f3c436f6465486173682c42616c616e63652c426c6f636b4e756d6265723e3e3a3a656e636f64655f746f3a3a6863383832643532316638353366336564b5043c70616c6c65745f7574696c6974793a3a4d6f64756c653c543e3a3a63616c6c5f66756e6374696f6e733a3a6837373430346561386338353634373830b6043e70616c6c65745f636f6e7472616374733a3a4d6f64756c653c543e3a3a63616c6c5f66756e6374696f6e733a3a6863613130306165323039653137616436b7044070616c6c65745f636f6e7472616374733a3a4d6f64756c653c543e3a3a73746f726167655f6d657461646174613a3a6863643030636266656532613462616236b8046e3c70616c6c65745f636f6e7472616374733a3a5f5f4765744279746553747275637447617350726963653c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6836396639353733343466633536306164b904723c70616c6c65745f636f6e7472616374733a3a5f5f476574427974655374727563745072697374696e65436f64653c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6833656262313563313335653839326638ba04753c70616c6c65745f636f6e7472616374733a3a5f5f4765744279746553747275637443757272656e745363686564756c653c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6832626137366163666262306131396463bb044970616c6c65745f636f6e7472616374733a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a6833303766643630326438633661326466bc049b013c70616c6c65745f636f6e7472616374733a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a426c6f636b4761734c696d697444656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6835313236386638363365303435313833bd049a013c70616c6c65745f636f6e7472616374733a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a4d617856616c756553697a6544656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6834613938616562663836336338363061be0496013c70616c6c65745f636f6e7472616374733a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a4d6178446570746844656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6861336134353736323263333766643566bf0499013c70616c6c65745f636f6e7472616374733a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a43616c6c4261736546656544656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6836316236636438383737666230316232c00499013c70616c6c65745f636f6e7472616374733a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a436f6e747261637446656544656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6861656638353163396466666538323832c104a0013c70616c6c65745f636f6e7472616374733a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a5472616e73616374696f6e4279746546656544656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6865376265633864323265386236313134c2049d013c70616c6c65745f636f6e7472616374733a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a53757263686172676552657761726444656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6832616164666265346461626362623061c3049f013c70616c6c65745f636f6e7472616374733a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a52656e744465706f7369744f666673657444656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6865613235623931646333386633323436c4049f013c70616c6c65745f636f6e7472616374733a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a53746f7261676553697a654f666673657444656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6833656334373565343933356334366131c504a1013c70616c6c65745f636f6e7472616374733a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a5369676e6564436c61696d48616e646963617044656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6837666165316435346538656638616566c6043a70616c6c65745f636f6e7472616374733a3a4d6f64756c653c543e3a3a726573746f72655f746f3a3a6838383834303261633336356464333330c70468636f72653a3a6f70733a3a66756e6374696f6e3a3a696d706c733a3a3c696d706c20636f72653a3a6f70733a3a66756e6374696f6e3a3a466e4d75743c413e20666f7220266d757420463e3a3a63616c6c5f6d75743a3a6832373033646335626530613563333033c804303c265420617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6861373566643361323861303633323135c9043f70616c6c65745f64656d6f63726163793a3a4d6f64756c653c543e3a3a6c61756e63685f65787465726e616c3a3a6830663338303335366563386530383330ca044170616c6c65745f64656d6f63726163793a3a4d6f64756c653c543e3a3a696e6a6563745f7265666572656e64756d3a3a6863663632336438373165656632373862cb043d70616c6c65745f64656d6f63726163793a3a4d6f64756c653c543e3a3a6c61756e63685f7075626c69633a3a6866666638326166383835356230343433cc043a70616c6c65745f64656d6f63726163793a3a4d6f64756c653c543e3a3a6465706f7369745f6f663a3a6830636466323965663165326236616236cd043a70616c6c65745f64656d6f63726163793a3a4d6f64756c653c543e3a3a766f746572735f666f723a3a6863393337643463373266393363303938ce043770616c6c65745f64656d6f63726163793a3a4d6f64756c653c543e3a3a766f74655f6f663a3a6837616261373761373133353661316435cf043f70616c6c65745f64656d6f63726163793a3a4d6f64756c653c543e3a3a64656c6567617465645f766f7465733a3a6837653665313337336138376332386463d0046e6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6c696e6b65645f6d61703a3a4b6579466f726d61743a3a73746f726167655f6c696e6b65645f6d61705f66696e616c5f686561645f6b65793a3a6866623666376164373336386265346461d10485013c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6c696e6b65645f6d61703a3a456e756d657261746f723c4b2c562c463e20617320636f72653a3a697465723a3a7472616974733a3a6974657261746f723a3a4974657261746f723e3a3a6e6578743a3a6832623939396139363062356566346663d2044070616c6c65745f64656d6f63726163793a3a4d6f64756c653c543e3a3a636c6561725f7265666572656e64756d3a3a6838626462356637316233626435393362d3044470616c6c65745f64656d6f63726163793a3a4d6f64756c653c543e3a3a69735f6163746976655f7265666572656e64756d3a3a6864656636333939636537613131353738d4043e70616c6c65745f64656d6f63726163793a3a4d6f64756c653c543e3a3a656e6163745f70726f706f73616c3a3a6835303134363437616661373438303239d504696672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6c696e6b65645f6d61703a3a4b6579466f726d61743a3a73746f726167655f6c696e6b65645f6d61705f66696e616c5f6b65793a3a6861656338393461373934303038363231d6043e70616c6c65745f64656d6f63726163793a3a4d6f64756c653c543e3a3a63616c6c5f66756e6374696f6e733a3a6830353630323331353563613139343066d7043f70616c6c65745f64656d6f63726163793a3a4d6f64756c653c543e3a3a7265666572656e64756d5f696e666f3a3a6831303532303362366331396534373361d8044070616c6c65745f64656d6f63726163793a3a4d6f64756c653c543e3a3a73746f726167655f6d657461646174613a3a6830366365626437653266396564343636d904713c70616c6c65745f64656d6f63726163793a3a5f5f4765744279746553747275637444656c65676174696f6e733c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6864366330356464303430663562363266da04713c70616c6c65745f64656d6f63726163793a3a5f5f476574427974655374727563745075626c696350726f70733c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6833313064376238666434646530376638db046f3c70616c6c65745f64656d6f63726163793a3a5f5f47657442797465537472756374507265696d616765733c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6834313733393265306238336530343933dc044970616c6c65745f64656d6f63726163793a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a6833306361623563323430306330623664dd049a013c70616c6c65745f64656d6f63726163793a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a4c61756e6368506572696f6444656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6830383238616561626231663365663036de04a3013c70616c6c65745f64656d6f63726163793a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a456d657267656e6379566f74696e67506572696f6444656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6830626362633230313966633365356432df049c013c70616c6c65745f64656d6f63726163793a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a4d696e696d756d4465706f73697444656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6834613932643534346539323537613938e0049d013c70616c6c65745f64656d6f63726163793a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a456e6163746d656e74506572696f6444656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6834663232623435376330356432373666e1043770616c6c65745f64656d6f63726163793a3a4d6f64756c653c543e3a3a646f5f766f74653a3a6864626337643035373335343236353864e204437061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653a3a7573696e675f656e636f6465643a3a6831656534623862623665633334346631e304776672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a3c696d706c206672616d655f737570706f72743a3a73746f726167653a3a53746f726167654d61703c4b2c563e20666f7220473e3a3a696e736572743a3a6839363738326133363232653334376463e404776672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a3c696d706c206672616d655f737570706f72743a3a73746f726167653a3a53746f726167654d61703c4b2c563e20666f7220473e3a3a72656d6f76653a3a6831373361303363333334633331623939e5043a3c266d7574205720617320636f72653a3a666d743a3a57726974653e3a3a77726974655f7374723a3a6831363961323463373930356537373064e6043b3c266d7574205720617320636f72653a3a666d743a3a57726974653e3a3a77726974655f636861723a3a6832323266643037313766353134613637e7043a3c266d7574205720617320636f72653a3a666d743a3a57726974653e3a3a77726974655f666d743a3a6866636663633838663537623765663538e8044570616c6c65745f66696e616c6974795f747261636b65723a3a4d6f64756c653c543e3a3a63616c6c5f66756e6374696f6e733a3a6863646134666362383933396130613263e9045070616c6c65745f66696e616c6974795f747261636b65723a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a6861326334356566666537623665313533ea04a2013c70616c6c65745f66696e616c6974795f747261636b65723a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a5265706f72744c6174656e637944656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6831313036343934373861303836643466eb049f013c70616c6c65745f66696e616c6974795f747261636b65723a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a57696e646f7753697a6544656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6836326333306430656431383863383162ec044a70616c6c65745f636f6e7472616374733a3a7761736d3a3a72756e74696d653a3a726561645f73616e64626f785f6d656d6f72795f61733a3a6834366661323064396162383430356133ed044a70616c6c65745f636f6e7472616374733a3a7761736d3a3a72756e74696d653a3a726561645f73616e64626f785f6d656d6f72795f61733a3a6831386161383632633430323835326432ee044a70616c6c65745f636f6e7472616374733a3a7761736d3a3a72756e74696d653a3a726561645f73616e64626f785f6d656d6f72795f61733a3a6866333037336461633765393935323731ef043970616c6c65745f7375646f3a3a4d6f64756c653c543e3a3a63616c6c5f66756e6374696f6e733a3a6863306334643364653439363339646466f0043b70616c6c65745f7375646f3a3a4d6f64756c653c543e3a3a73746f726167655f6d657461646174613a3a6863326633323438653436373337626635f104643c70616c6c65745f7375646f3a3a5f5f476574427974655374727563744b65793c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6832346365323165376132336166616565f204443c7061726974795f7761736d3a3a696f3a3a4572726f7220617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6862626330636137626662343333633462f3046f3c7061726974795f7761736d3a3a656c656d656e74733a3a73656374696f6e3a3a53656374696f6e206173207061726974795f7761736d3a3a656c656d656e74733a3a446573657269616c697a653e3a3a646573657269616c697a653a3a6831376163326630616264656532346361f404467061726974795f7761736d3a3a656c656d656e74733a3a73656374696f6e3a3a436f646553656374696f6e3a3a626f646965733a3a6838663764663834333537393666356633f50430636f72653a3a7074723a3a7265616c5f64726f705f696e5f706c6163653a3a6835633232633265326565653635323932f604347761736d695f76616c69646174696f6e3a3a76616c69646174655f6d6f64756c653a3a6833396334343731636535336563363663f70448616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6d61703a3a42547265654d61703c4b2c563e3a3a696e736572743a3a6837616265383962626632303261346162f8043c7061726974795f7761736d3a3a6275696c6465723a3a6d6f64756c653a3a66726f6d5f6d6f64756c653a3a6834306534616135306130366163616237f904537061726974795f7761736d3a3a6275696c6465723a3a6d6f64756c653a3a4d6f64756c654275696c6465723c463e3a3a7265736f6c76655f747970655f7265663a3a6837643333376361303561343432653738fa04a9017061726974795f7761736d3a3a6275696c6465723a3a6d6f64756c653a3a3c696d706c20636f72653a3a636f6e766572743a3a46726f6d3c7061726974795f7761736d3a3a6275696c6465723a3a6d6f64756c653a3a4d6f64756c6553636166666f6c643e20666f72207061726974795f7761736d3a3a656c656d656e74733a3a6d6f64756c653a3a4d6f64756c653e3a3a66726f6d3a3a6866353238366462353563323464653737fb0444707761736d5f7574696c733a3a6761733a3a436f756e7465723a3a66696e616c697a655f6d6574657265645f626c6f636b3a3a6833616433383030346633386133663463fc042d636f72653a3a736c6963653a3a736f72743a3a726563757273653a3a6838333631616236366561303832663361fd04507061726974795f7761736d3a3a6275696c6465723a3a6d6f64756c653a3a4d6f64756c654275696c6465723c463e3a3a707573685f66756e6374696f6e3a3a6865333838353439346263393466356437fe043c707761736d5f7574696c733a3a737461636b5f6865696768743a3a696e6a6563745f6c696d697465723a3a6838396563663863636434633736616265ff046b3c7061726974795f7761736d3a3a656c656d656e74733a3a73656374696f6e3a3a53656374696f6e206173207061726974795f7761736d3a3a656c656d656e74733a3a53657269616c697a653e3a3a73657269616c697a653a3a683431306363396531343663366661356580053e70616c6c65745f696d5f6f6e6c696e653a3a4d6f64756c653c543e3a3a63616c6c5f66756e6374696f6e733a3a683862623464633534353962353932323281054070616c6c65745f696d5f6f6e6c696e653a3a4d6f64756c653c543e3a3a73746f726167655f6d657461646174613a3a686239366639303363363762306263393482055c3c70616c6c65745f7375646f3a3a4d6f64756c653c543e206173206672616d655f6d657461646174613a3a4d6f64756c654572726f724d657461646174613e3a3a6d657461646174613a3a68333839643666653565376237396532318305303c265420617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a68636638346162623137383237333932658405553c7061726974795f7761736d3a3a656c656d656e74733a3a6f70733a3a496e737472756374696f6e20617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a68353835616362326562383932396166368505683c7061726974795f7761736d3a3a656c656d656e74733a3a6f70733a3a496e697445787072206173207061726974795f7761736d3a3a656c656d656e74733a3a53657269616c697a653e3a3a73657269616c697a653a3a683434333430343439303938323330653286056b3c7061726974795f7761736d3a3a656c656d656e74733a3a6f70733a3a496e737472756374696f6e206173207061726974795f7761736d3a3a656c656d656e74733a3a53657269616c697a653e3a3a73657269616c697a653a3a683739376236316561353161393636306487057d3c7061726974795f7761736d3a3a656c656d656e74733a3a7072696d6974697665733a3a436f756e7465644c6973745772697465723c492c543e206173207061726974795f7761736d3a3a656c656d656e74733a3a53657269616c697a653e3a3a73657269616c697a653a3a683132623563316331616266643862333888056f3c7061726974795f7761736d3a3a656c656d656e74733a3a7072696d6974697665733a3a566172496e743332206173207061726974795f7761736d3a3a656c656d656e74733a3a53657269616c697a653e3a3a73657269616c697a653a3a683366663537313539366537653830643189056f3c7061726974795f7761736d3a3a656c656d656e74733a3a7072696d6974697665733a3a566172496e743634206173207061726974795f7761736d3a3a656c656d656e74733a3a53657269616c697a653e3a3a73657269616c697a653a3a68343431346439393861623137653161628a056c3c7061726974795f7761736d3a3a656c656d656e74733a3a6f70733a3a496e697445787072206173207061726974795f7761736d3a3a656c656d656e74733a3a446573657269616c697a653e3a3a646573657269616c697a653a3a68386164666635666263623432383264668b056f3c7061726974795f7761736d3a3a656c656d656e74733a3a6f70733a3a496e737472756374696f6e206173207061726974795f7761736d3a3a656c656d656e74733a3a446573657269616c697a653e3a3a646573657269616c697a653a3a68666337353863623432333063353062628c05793c7061726974795f7761736d3a3a656c656d656e74733a3a7072696d6974697665733a3a436f756e7465644c6973743c543e206173207061726974795f7761736d3a3a656c656d656e74733a3a446573657269616c697a653e3a3a646573657269616c697a653a3a68313137336462633139616635663038318d056b3c7061726974795f7761736d3a3a656c656d656e74733a3a6f70733a3a496e737472756374696f6e206173207061726974795f7761736d3a3a656c656d656e74733a3a53657269616c697a653e3a3a73657269616c697a653a3a68623664626331363265343535626432658e0586017061726974795f7761736d3a3a656c656d656e74733a3a7072696d6974697665733a3a3c696d706c207061726974795f7761736d3a3a656c656d656e74733a3a446573657269616c697a6520666f7220616c6c6f633a3a737472696e673a3a537472696e673e3a3a646573657269616c697a653a3a68323631383336326636313263303634628f05323c265420617320636f72653a3a666d743a3a446973706c61793e3a3a666d743a3a68303764636439303837313166363931669005783c7061726974795f7761736d3a3a656c656d656e74733a3a696d706f72745f656e7472793a3a526573697a61626c654c696d697473206173207061726974795f7761736d3a3a656c656d656e74733a3a53657269616c697a653e3a3a73657269616c697a653a3a686164626337643961663935386636383491057c3c7061726974795f7761736d3a3a656c656d656e74733a3a696d706f72745f656e7472793a3a526573697a61626c654c696d697473206173207061726974795f7761736d3a3a656c656d656e74733a3a446573657269616c697a653e3a3a646573657269616c697a653a3a68663132633033646138343339623933639205743c7061726974795f7761736d3a3a656c656d656e74733a3a7072696d6974697665733a3a56617255696e743332206173207061726974795f7761736d3a3a656c656d656e74733a3a446573657269616c697a653e3a3a646573657269616c697a653a3a68303638333134363932333033646137319305713c7061726974795f7761736d3a3a656c656d656e74733a3a696e6465785f6d61703a3a496e6465784d61703c543e206173207061726974795f7761736d3a3a656c656d656e74733a3a53657269616c697a653e3a3a73657269616c697a653a3a68393831386362616434633834303464369405713c7061726974795f7761736d3a3a656c656d656e74733a3a73656374696f6e3a3a437573746f6d53656374696f6e206173207061726974795f7761736d3a3a656c656d656e74733a3a53657269616c697a653e3a3a73657269616c697a653a3a683436313830336638343234393335633995054b3c616c6c6f633a3a7665633a3a496e746f497465723c543e20617320636f72653a3a6f70733a3a64726f703a3a44726f703e3a3a64726f703a3a686235616630386664353539396565333896054b3c616c6c6f633a3a7665633a3a496e746f497465723c543e20617320636f72653a3a6f70733a3a64726f703a3a44726f703e3a3a64726f703a3a683739653534613964373562336230393497054b3c616c6c6f633a3a7665633a3a496e746f497465723c543e20617320636f72653a3a6f70733a3a64726f703a3a44726f703e3a3a64726f703a3a68376361323533356363396132313638629805463c616c6c6f633a3a7665633a3a5665633c543e20617320636f72653a3a6f70733a3a64726f703a3a44726f703e3a3a64726f703a3a68366231383362343032303964383865319905457061726974795f7761736d3a3a656c656d656e74733a3a73656374696f6e3a3a53656374696f6e5265616465723a3a6e65773a3a68346661663864393066613365313638389a052d636f72653a3a736c6963653a3a736f72743a3a726563757273653a3a68626139663135616136343161653235309b0534636f72653a3a736c6963653a3a736f72743a3a627265616b5f7061747465726e733a3a68353336393865613838643861663834399c052e636f72653a3a736c6963653a3a736f72743a3a68656170736f72743a3a68323633326161326239646165356337649d053c636f72653a3a736c6963653a3a736f72743a3a7061727469616c5f696e73657274696f6e5f736f72743a3a68623365383161303365383166636338339e053b636f72653a3a736c6963653a3a736f72743a3a68656170736f72743a3a7b7b636c6f737572657d7d3a3a68323763393165626334386634386465659f05397761736d695f76616c69646174696f6e3a3a76616c69646174655f6d656d6f72795f747970653a3a6864663634333332633766626438633432a005347761736d695f76616c69646174696f6e3a3a657870725f636f6e73745f747970653a3a6832326664316639356333636231313630a105553c7061726974795f7761736d3a3a656c656d656e74733a3a74797065733a3a56616c75655479706520617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6839666437616538373835366430316461a2054a7761736d695f76616c69646174696f6e3a3a66756e633a3a46756e6374696f6e56616c69646174696f6e436f6e746578743a3a737465703a3a6862323839316131316434336364343133a305473c7761736d695f76616c69646174696f6e3a3a4572726f7220617320636f72653a3a666d743a3a446973706c61793e3a3a666d743a3a6864643662363530323039323935373533a405457061726974795f7761736d3a3a656c656d656e74733a3a7365676d656e743a3a446174615365676d656e743a3a76616c75653a3a6862303131346363663262366537353533a505303c265420617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6831303336616631333137333866666463a605553c7061726974795f7761736d3a3a656c656d656e74733a3a74797065733a3a426c6f636b5479706520617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6830653437616536336563303965633565a705303c265420617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6831383035343164353436333434636436a805303c265420617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6832366364303465616461616238646562a905303c265420617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6830303337623063666334356336633536aa05303c265420617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6866633234323466343564323330653732ab0540707761736d5f7574696c733a3a737461636b5f6865696768743a3a636f6d707574655f737461636b5f636f73743a3a6861383435386566663533663265363332ac0533636f72653a3a6f7074696f6e3a3a4f7074696f6e3c26543e3a3a636c6f6e65643a3a6836626434623761383039383537363662ad05533c616c6c6f633a3a7665633a3a5665633c543e20617320616c6c6f633a3a7665633a3a53706563457874656e643c542c493e3e3a3a737065635f657874656e643a3a6863343831386165383834306263313032ae05323c265420617320636f72653a3a666d743a3a446973706c61793e3a3a666d743a3a6833616433306430653031313762633766af053f707761736d5f7574696c733a3a737461636b5f6865696768743a3a7265736f6c76655f66756e635f747970653a3a6834366532623066383536386231623661b00530636f72653a3a7074723a3a7265616c5f64726f705f696e5f706c6163653a3a6831623135336435366235333338356637b10530636f72653a3a7074723a3a7265616c5f64726f705f696e5f706c6163653a3a6862363832646630613931653164303464b205593c7061726974795f7761736d3a3a656c656d656e74733a3a6f70733a3a496e737472756374696f6e20617320636f72653a3a636c6f6e653a3a436c6f6e653e3a3a636c6f6e653a3a6863653837306165633766323261613863b30541707761736d5f7574696c733a3a737461636b5f6865696768743a3a6d61785f6865696768743a3a636f6d707574653a3a6863333935303935633464373936653564b405303c265420617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6836393136343230633165356432373138b5052e636f72653a3a736c6963653a3a736f72743a3a68656170736f72743a3a6835623233343736336633653430343262b6053c636f72653a3a736c6963653a3a736f72743a3a7061727469616c5f696e73657274696f6e5f736f72743a3a6830613931333337636638393664353239b70530636f72653a3a7074723a3a7265616c5f64726f705f696e5f706c6163653a3a6830343934303264626232626362326331b805303c265420617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6830346632616164323362303163316266b9055a3c707761736d5f7574696c733a3a737461636b5f6865696768743a3a6d61785f6865696768743a3a4672616d6520617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6839316133646631363939373530393563ba0546707761736d5f7574696c733a3a737461636b5f6865696768743a3a6d61785f6865696768743a3a537461636b3a3a6672616d653a3a6830633432373339383166336635333338bb05453c636f72653a3a6f7074696f6e3a3a4f7074696f6e3c543e20617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6834393962336539376330626639376535bc054b707761736d5f7574696c733a3a737461636b5f6865696768743a3a6d61785f6865696768743a3a537461636b3a3a706f705f76616c7565733a3a6862333162626434643036653964336633bd053a73705f61726974686d657469633a3a62696775696e743a3a42696755696e743a3a6c73747269703a3a6834376664393665323232663766656339be053773705f61726974686d657469633a3a62696775696e743a3a42696755696e743a3a6164643a3a6863323963646631616334313266336164bf053773705f61726974686d657469633a3a62696775696e743a3a42696755696e743a3a6d756c3a3a6865353262376135316538336335656365c0054473705f61726974686d657469633a3a62696775696e743a3a42696755696e743a3a6469763a3a7b7b636c6f737572657d7d3a3a6861346666653066363462623436643663c1054b3c73705f61726974686d657469633a3a62696775696e743a3a42696755696e7420617320636f72653a3a636d703a3a4f72643e3a3a636d703a3a6865623666666435386536323939363233c205303c265420617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6862323133643330653933653133656533c305513c616c6c6f633a3a7665633a3a5665633c543e20617320616c6c6f633a3a7665633a3a53706563457874656e643c542c493e3e3a3a66726f6d5f697465723a3a6835626265366330386465393138313139c4053d73705f61726974686d657469633a3a68656c706572735f3132386269743a3a746f5f6269675f75696e743a3a6862373932666633323261643264313838c505413c73705f696e686572656e74733a3a4572726f7220617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6835353763303239663963616564323235c605323c265420617320636f72653a3a666d743a3a446973706c61793e3a3a666d743a3a6837393630363235643632323430633336c7054273705f696f3a3a6c6f6767696e673a3a65787465726e5f686f73745f66756e6374696f6e5f696d706c733a3a6c6f673a3a6837386534633336393930333566653861c80537616c6c6f633a3a7261775f7665633a3a5261775665633c542c413e3a3a726573657276653a3a6830636362626338393566386263633566c9053b636f72653a3a736c6963653a3a3c696d706c205b545d3e3a3a636f70795f66726f6d5f736c6963653a3a6864663963663731393765306431373335ca05347761736d695f76616c69646174696f6e3a3a66756e633a3a706f705f76616c75653a3a6834353137643035633663613263643834cb05347761736d695f76616c69646174696f6e3a3a66756e633a3a706f705f6c6162656c3a3a6838613333333461353062306330353431cc05407761736d695f76616c69646174696f6e3a3a7574696c3a3a4c6f63616c733a3a747970655f6f665f6c6f63616c3a3a6833313733656330356634666330323965cd05543c7761736d695f76616c69646174696f6e3a3a66756e633a3a537461636b56616c75655479706520617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6839363837303466613037393139383633ce05537761736d695f76616c69646174696f6e3a3a66756e633a3a46756e6374696f6e56616c69646174696f6e436f6e746578743a3a76616c69646174655f6c6f61643a3a6861373464623266646363333161353135cf05547761736d695f76616c69646174696f6e3a3a66756e633a3a46756e6374696f6e56616c69646174696f6e436f6e746578743a3a76616c69646174655f73746f72653a3a6866373436643436323235303932383130d005557761736d695f76616c69646174696f6e3a3a66756e633a3a46756e6374696f6e56616c69646174696f6e436f6e746578743a3a76616c69646174655f746573746f703a3a6838653431343333313362383138613731d105547761736d695f76616c69646174696f6e3a3a66756e633a3a46756e6374696f6e56616c69646174696f6e436f6e746578743a3a76616c69646174655f72656c6f703a3a6837393565626431333832336662373036d205537761736d695f76616c69646174696f6e3a3a66756e633a3a46756e6374696f6e56616c69646174696f6e436f6e746578743a3a76616c69646174655f756e6f703a3a6830313438353937363834636364613539d305547761736d695f76616c69646174696f6e3a3a66756e633a3a46756e6374696f6e56616c69646174696f6e436f6e746578743a3a76616c69646174655f62696e6f703a3a6837643766643064373634313036636463d405547761736d695f76616c69646174696f6e3a3a66756e633a3a46756e6374696f6e56616c69646174696f6e436f6e746578743a3a76616c69646174655f6376746f703a3a6839633331373666373462333563383835d50530636f72653a3a7074723a3a7265616c5f64726f705f696e5f706c6163653a3a6834373766646265336435653437383130d605303c265420617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6833356532653635376130666438323431d705303c265420617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6837303936346436613136313366643164d805453c616c6c6f633a3a737472696e673a3a537472696e6720617320636f72653a3a666d743a3a446973706c61793e3a3a666d743a3a6832373633323236316338353530643631d9054c3c7761736d695f76616c69646174696f6e3a3a737461636b3a3a4572726f7220617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6866306332323565353935633565313530da05066d656d736574db05066d656d637079dc05076d656d6d6f7665dd050462636d70de05095f5f6173686c746933df05095f5f6c736872746933e005085f5f6d756c746933e105095f5f75646976746933e205095f5f756d6f64746933e3050c5f5f756469766d6f6474693400550970726f64756365727302086c616e6775616765010452757374000c70726f6365737365642d62790105727573746325312e34312e302d6e696768746c79202837366132353265613920323031392d31322d303929", - "0x2099d7f109d6e535fb000bba623fd4409f99a2ce711f3a31b2fc05604c93f179": "0x10c2ecc9feda5c727ce1f77e6a662efd98f39212fea555b286b702eb8842303479e225a23a02d254dee5384fe46fc083306e597a85b31c75f4e8674349d8f7a41ee410a5800082ee863e06344590e83ef0b60fb6ea2126086ea9bc5c579ff4b86cfe451858d3bff3683df83e029f44d62cc4f285f7a1004542679ffa35ed68310a", - "0x5c0d1176a568c1f92944340dbfed9e9c530ebca703c85910e7164cb7d1c9e47b": "0xcc2a4f3c61e593c5c704149f3ee3c3028b3b382ba9f42ee767b1953c5fcb8f1f", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b46b1ab1274bcbe3a4176e17eb2917654904f19b3261911ec3f7a30a473a04dcc8": "0x00407a10f35a00000000000000000000", - "0x26aa394eea5630e07c48ae0c9558cef780d41e5e16056765bc8461851072c9d7": "0x08000000000002006d6f646c70792f747273727900000000000000000000000000000000000000000500000000000000000003006d6f646c70792f7472737279000000000000000000000000000000000000000000407a10f35a0000000000000000000000", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19509fe6329cc0b39e09343a73657373696f6e3a6b657973952c9ffc8f4d8900648af298fd29c4312871633ff0e759d98574f05e67ec56bc": "0xcafad6120836227e4660c07c046c2b56e8fba10cbf3fcfdcc566d774e14fd367", - "0xf2794c22e353e9a839f12faab03a911b7f17cdfbfa73331856cca0acddd7842e": "0x00000000", - "0xcec5070d609dd3497f72bde07fc96ba04c014e6bf8b8c2c011e7290b85696bb39fe6329cc0b39e09343a73657373696f6e3a6b657973e4fe34f5c8499d222649809260ad8db63c739e091b73cda907a2df171176070a": "0x7e8a1b8e637a062656eff12dc94bbbc3e254d9bb93bd44972f0a96c7fdde5b4de225a23a02d254dee5384fe46fc083306e597a85b31c75f4e8674349d8f7a41ee225a23a02d254dee5384fe46fc083306e597a85b31c75f4e8674349d8f7a41ee225a23a02d254dee5384fe46fc083306e597a85b31c75f4e8674349d8f7a41e", - "0xf2794c22e353e9a839f12faab03a911be2f6cb0456905c189bcb0458f9440f13": "0x00000000", - "0x5f3e4907f716ac89b6347d15ececedcac29a0310e1bb45d20cace77ccb62c97d": "0x00e1f505", - "0xc2261276cc9d1f8598ea4b6a74b15c2f218f26c73add634897550b4003b26bc685268962a32b3f1cffce32ce1e5f6d6d3d633f7e21fd4e659402a2c62cab64ca": "0x047374616b696e67200000c16ff28623000000000000000000ffffffff1f", - "0x5f3e4907f716ac89b6347d15ececedca3ed14b45ed20d054f05e37e2542cfe7066e551402e9db966f769da2a411eff2face196c91278147bbfcf405002e875ac": "0xc2ecc9feda5c727ce1f77e6a662efd98f39212fea555b286b702eb8842303479", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19509fe6329cc0b39e09343a73657373696f6e3a6b657973ddaecd8f3d7c1d983083cdb5cbd354701308d13ec10c81d42da58c5eb1d15264": "0xcafad6120836227e4660c07c046c2b56e8fba10cbf3fcfdcc566d774e14fd367", - "0xc2261276cc9d1f8598ea4b6a74b15c2f218f26c73add634897550b4003b26bc604615f785492f37abe2b14d3f286778c2c9752548ca2d011e952c455b2733bfe": "0x047374616b696e67200000c16ff28623000000000000000000ffffffff1f", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19509fe6329cc0b39e09343a73657373696f6e3a6b6579737e0c1544454d51abcabc70ab73b47a3b401c92709958ddab7740094a7135ae16": "0xcafad6120836227e4660c07c046c2b56e8fba10cbf3fcfdcc566d774e14fd367", - "0x8985776095addd4789fccbce8ca77b23ba7fb8745735dc3be2a2c61a72c39e78": "0x046e51d621d637695a1c4214ff5b85fb0063fe3908f8b39c380c582011c3807078", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19509fe6329cc0b39e09343a73657373696f6e3a6b657973dfa2eac750730cfcb981664732807d8dff47c246f7d78f6f8bbaaca9f15fd3b0": "0xf417395797ff444345d7c25355bbab14de5ca8857104a028d969147a4fbd6e29", - "0x5f3e4907f716ac89b6347d15ececedcab49a2738eeb30896aacb8b3fb46471bd": "0x04000000", + "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da97f325c981c2b001f5fe8c51cc7b89e50ebb1f60feb7ab3fa3bc79d6ab71d45cb": "0x00000000030000c16ff28623000000000000000000000000000000000000000000000000000000c16ff286230000000000000000000000c16ff28623000000000000000000", + "0x5f3e4907f716ac89b6347d15ececedca422adb579f1dbf4f3886c5cfa3bb8cc47132bdc08fa57aeff963126d33d186054c4211cc8e3b7a46ed61365bcde8c5f5": "0x68655684472b743e456907b398d3a44c113f189e56d1bbfd55e889e295dfde780f0000c16ff286230f0000c16ff286230000", + "0x3a6772616e6470615f617574686f726974696573": "0x01103919132b851ef0fd2dae42a7e734fe547af5a6b809006100f48944d7fae8e8ef01000000000000005633b70b80a6c8bb16270f82cca6d56b27ed7b76c8fd5af2986a25a4788ce44001000000000000007932cff431e748892fa48e10c63c17d30f80ca42e4de3921e641249cd7fa3c2f01000000000000009becad03e6dcac03cee07edebca5475314861492cdfc96a2144a67bbe96993320100000000000000", + "0x426e15054d267946093858132eb537f1ba7fb8745735dc3be2a2c61a72c39e78": "0x049ee5e5bdc0ec239eb164f865ecc345ce4c88e76ee002e0f7e318097347471809", + "0x5f3e4907f716ac89b6347d15ececedca422adb579f1dbf4f3886c5cfa3bb8cc413c312ec9dee1781c5bd27a5a5ba5b9718f39358b381bcd6783393fd2bee2090": "0xf26cdb14b5aec7b2789fd5ca80f979cef3761897ae1f37ffb3e154cbcc1c26630f0000c16ff286230f0000c16ff286230000", + "0x5f3e4907f716ac89b6347d15ececedca42982b9d6c7acc99faa9094c912372c2b4def25cfda6ef3a000000007441588f5c9a91b3f26cdb14b5aec7b2789fd5ca80f979cef3761897ae1f37ffb3e154cbcc1c2663": "0x0ff6ffc06ff286230ff6ffc06ff2862300", + "0x426e15054d267946093858132eb537f105fe52c2045750c3c492ccdcf62e2b9c": "0x9ee5e5bdc0ec239eb164f865ecc345ce4c88e76ee002e0f7e318097347471809", + "0x5f3e4907f716ac89b6347d15ececedca682db92dde20a10d96d00ff0e9e221c0b4def25cfda6ef3a00000000c90f9b6dd26886b468655684472b743e456907b398d3a44c113f189e56d1bbfd55e889e295dfde78": "0x00", + "0x5f3e4907f716ac89b6347d15ececedca9220e172bed316605f73f1ff7b4ade987f325c981c2b001f5fe8c51cc7b89e50ebb1f60feb7ab3fa3bc79d6ab71d45cb": "0x00", "0x26aa394eea5630e07c48ae0c9558cef702a5c1b19ab7a04f536c519aca4983ac": "0x01000000", - "0x5f3e4907f716ac89b6347d15ececedca28dccb559b95c40168a1b2696581b5a7": "0x00000000000000000000000000000000", - "0x5f3e4907f716ac89b6347d15ececedca138e71612491192d68deab7e6f563fe1": "0x04000000", - "0x5f3e4907f716ac89b6347d15ececedca0ea0ecac76457d0f9b39b981dd107012": "0x10cafad6120836227e4660c07c046c2b56e8fba10cbf3fcfdcc566d774e14fd367f417395797ff444345d7c25355bbab14de5ca8857104a028d969147a4fbd6e292a009220d327910e8ffd89167b7d96eb8871a37c374ec0adfdf1b6c384b22761dc94ff7f625d9ef7824766f90a5eb8aa03f99b7b28664585950221d0d2358e3a", - "0x34b9dcaacddd89d5a94929dccb7131534a9d2f70e9ee596bc867d128cd9ec759": "0x00ca9a3b000000000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f57c875e4cff74148e4628f264b974c80": "0x00401eae822458363600000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b4e0f0f8a6ceacf3a6c5f142248962532609453d6bbff30954e62c7267960c4624": "0x0000a0dec5adc9353600000000000000", - "0xcec5070d609dd3497f72bde07fc96ba088dcde934c658227ee1dfafcd6e16903": "0x10cafad6120836227e4660c07c046c2b56e8fba10cbf3fcfdcc566d774e14fd367f417395797ff444345d7c25355bbab14de5ca8857104a028d969147a4fbd6e292a009220d327910e8ffd89167b7d96eb8871a37c374ec0adfdf1b6c384b22761dc94ff7f625d9ef7824766f90a5eb8aa03f99b7b28664585950221d0d2358e3a", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19509fe6329cc0b39e09343a73657373696f6e3a6b6579730a299be621974fd19374a88f1dddd8442b21db25d2c923907dda6af815b657fe": "0xf26cdb14b5aec7b2789fd5ca80f979cef3761897ae1f37ffb3e154cbcc1c2663", + "0x426e15054d267946093858132eb537f1a47a9ff5cd5bf4d848a80a0b1a947dc3": "0x00000000000000000000000000000000", + "0xc2261276cc9d1f8598ea4b6a74b15c2f308ce9615de0775a82f8a94dc3d285a1": "0x01", + "0x5f3e4907f716ac89b6347d15ececedca88dcde934c658227ee1dfafcd6e16903e54094c2d5af8ae10b91e1288f4f59f2946d7738f2c509b7effd909e5e9ba0ad": "0x0001f26cdb14b5aec7b2789fd5ca80f979cef3761897ae1f37ffb3e154cbcc1c26630168655684472b743e456907b398d3a44c113f189e56d1bbfd55e889e295dfde78", + "0x5f3e4907f716ac89b6347d15ececedca9220e172bed316605f73f1ff7b4ade98711590f60a214f6f06502eb29dd14f55aa04e72e2fa12c098ba4fa5a00c57fa9": "0x00", + "0x5f3e4907f716ac89b6347d15ececedca682db92dde20a10d96d00ff0e9e221c0b4def25cfda6ef3a0000000054352b71083d945a9c7a2ee14e565db0c69f78c7b4cd839fbf52b607d867e9e9c5a79042898a0d12": "0x00", + "0x5f3e4907f716ac89b6347d15ececedca88dcde934c658227ee1dfafcd6e16903711590f60a214f6f06502eb29dd14f55aa04e72e2fa12c098ba4fa5a00c57fa9": "0x0001547ff0ab649283a7ae01dbc2eb73932eba2fb09075e9485ff369082a2ff38d65019c7a2ee14e565db0c69f78c7b4cd839fbf52b607d867e9e9c5a79042898a0d12", "0x26aa394eea5630e07c48ae0c9558cef78a42f33323cb5ced3b44dd825fda9fcc": "0x4545454545454545454545454545454545454545454545454545454545454545", - "0x5f3e4907f716ac89b6347d15ececedca88dcde934c658227ee1dfafcd6e1690304615f785492f37abe2b14d3f286778c2c9752548ca2d011e952c455b2733bfe": "0x0001f417395797ff444345d7c25355bbab14de5ca8857104a028d969147a4fbd6e2901dc94ff7f625d9ef7824766f90a5eb8aa03f99b7b28664585950221d0d2358e3a", - "0x1cb6f36e027abb2091cfb5110ab5087f66e8f035c8adbe7f1547b43c51e6f8a4": "0x00000000", - "0xcec5070d609dd3497f72bde07fc96ba04c014e6bf8b8c2c011e7290b85696bb39fe6329cc0b39e09343a73657373696f6e3a6b65797385268962a32b3f1cffce32ce1e5f6d6d3d633f7e21fd4e659402a2c62cab64ca": "0xf6e62e9231c0424c1b747ffb5ccaedcb9fd6fddc2bfcb2db963c02db74c0c84dfe451858d3bff3683df83e029f44d62cc4f285f7a1004542679ffa35ed68310afe451858d3bff3683df83e029f44d62cc4f285f7a1004542679ffa35ed68310afe451858d3bff3683df83e029f44d62cc4f285f7a1004542679ffa35ed68310a", - "0x5f3e4907f716ac89b6347d15ececedca308ce9615de0775a82f8a94dc3d285a1": "0x01000000", - "0x5f3e4907f716ac89b6347d15ececedca3ed14b45ed20d054f05e37e2542cfe70e4fe34f5c8499d222649809260ad8db63c739e091b73cda907a2df171176070a": "0xe225a23a02d254dee5384fe46fc083306e597a85b31c75f4e8674349d8f7a41e", - "0x2b06af9719ac64d755623cda8ddd9b949f99a2ce711f3a31b2fc05604c93f179": "0x10c2ecc9feda5c727ce1f77e6a662efd98f39212fea555b286b702eb8842303479e225a23a02d254dee5384fe46fc083306e597a85b31c75f4e8674349d8f7a41ee410a5800082ee863e06344590e83ef0b60fb6ea2126086ea9bc5c579ff4b86cfe451858d3bff3683df83e029f44d62cc4f285f7a1004542679ffa35ed68310a", - "0x5f3e4907f716ac89b6347d15ececedca422adb579f1dbf4f3886c5cfa3bb8cc4f6ba35a8ebc8b98cc00cf8bebd411ecde353b5cc097d55297f372120235907d6": "0x2a009220d327910e8ffd89167b7d96eb8871a37c374ec0adfdf1b6c384b227610f0000c16ff286230f0000c16ff2862300", - "0x5f3e4907f716ac89b6347d15ececedca83e585bbc5fdcec57219c0dc81ef5ff4e4fe34f5c8499d222649809260ad8db63c739e091b73cda907a2df171176070a": "0x0ff6ffc06ff286230ff6ffc06ff2862300", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b4e4fe34f5c8499d222649809260ad8db63c739e091b73cda907a2df171176070a": "0x0000c16ff28623000000000000000000", - "0xcec5070d609dd3497f72bde07fc96ba04c014e6bf8b8c2c011e7290b85696bb39fe6329cc0b39e09343a73657373696f6e3a6b65797304615f785492f37abe2b14d3f286778c2c9752548ca2d011e952c455b2733bfe": "0x5202d3e9c3bf075b44615f9ac4c28b8627079a219ff66e01655487c3bde52eb8e410a5800082ee863e06344590e83ef0b60fb6ea2126086ea9bc5c579ff4b86ce410a5800082ee863e06344590e83ef0b60fb6ea2126086ea9bc5c579ff4b86ce410a5800082ee863e06344590e83ef0b60fb6ea2126086ea9bc5c579ff4b86c", - "0xcec5070d609dd3497f72bde07fc96ba04c014e6bf8b8c2c011e7290b85696bb39fe6329cc0b39e09343a73657373696f6e3a6b65797366e551402e9db966f769da2a411eff2face196c91278147bbfcf405002e875ac": "0xe23578cbc267982cfc0bf7be54cd952fa3c07631850880ca88e395e25f4812c7c2ecc9feda5c727ce1f77e6a662efd98f39212fea555b286b702eb8842303479c2ecc9feda5c727ce1f77e6a662efd98f39212fea555b286b702eb8842303479c2ecc9feda5c727ce1f77e6a662efd98f39212fea555b286b702eb8842303479", - "0x1cb6f36e027abb2091cfb5110ab5087f5e0621c4869aa60c02be9adcc98a0d1d": "0x10c2ecc9feda5c727ce1f77e6a662efd98f39212fea555b286b702eb88423034790100000000000000e225a23a02d254dee5384fe46fc083306e597a85b31c75f4e8674349d8f7a41e0100000000000000e410a5800082ee863e06344590e83ef0b60fb6ea2126086ea9bc5c579ff4b86c0100000000000000fe451858d3bff3683df83e029f44d62cc4f285f7a1004542679ffa35ed68310a0100000000000000", + "0x34b9dcaacddd89d5a94929dccb713153d2d505c0e6f76fd7ce0796ebe187401c": "0x0000000001000000000000000100000000000000010000000000000001000000000000000100000000000000010000000000000001000000000000008700000000000000af00000000000000010000000000000001000000000000006400000000000000040000000000010010000000004000000020000000", + "0x2b06af9719ac64d755623cda8ddd9b949f99a2ce711f3a31b2fc05604c93f179": "0x1000299981a2b92f878baaf5dbeba5c18d4e70f2a1fcd9c61b32ea18daf38f4378482a3389a6cf42d8ed83888cfd920fec738ea30f97e44699ada7323f08c3380a482dbd7297a39fa145c570552249c2ca9dd47e281f0c500c971b59c9dcdcd82e6e7e4eb42cbd2e0ab4cae8708ce5509580b8c04d11f6758dbf686d50fe9f9106", + "0x26aa394eea5630e07c48ae0c9558cef780d41e5e16056765bc8461851072c9d7": "0x1c000000000000039ee5e5bdc0ec239eb164f865ecc345ce4c88e76ee002e0f7e31809734747180900000000000000039c7a2ee14e565db0c69f78c7b4cd839fbf52b607d867e9e9c5a79042898a0d12000000000000000368655684472b743e456907b398d3a44c113f189e56d1bbfd55e889e295dfde780000000000000003547ff0ab649283a7ae01dbc2eb73932eba2fb09075e9485ff369082a2ff38d650000000000000003f26cdb14b5aec7b2789fd5ca80f979cef3761897ae1f37ffb3e154cbcc1c266300000000000000036d6f646c70792f7472737279000000000000000000000000000000000000000000000000000003006d6f646c70792f7472737279000000000000000000000000000000000000000000407a10f35a0000000000000000000000", "0x3a65787472696e7369635f696e646578": "0x00000000", - "0x5f3e4907f716ac89b6347d15ececedca422adb579f1dbf4f3886c5cfa3bb8cc44bb3d65784ee237cb19a67a937611263a136c75414ebcc385bda1a5c4ceb1edf": "0xf417395797ff444345d7c25355bbab14de5ca8857104a028d969147a4fbd6e290f0000c16ff286230f0000c16ff2862300", - "0x5f3e4907f716ac89b6347d15ececedca83e585bbc5fdcec57219c0dc81ef5ff466e551402e9db966f769da2a411eff2face196c91278147bbfcf405002e875ac": "0x0ff6ffc06ff286230ff6ffc06ff2862300", - "0x5f3e4907f716ac89b6347d15ececedca83e585bbc5fdcec57219c0dc81ef5ff485268962a32b3f1cffce32ce1e5f6d6d3d633f7e21fd4e659402a2c62cab64ca": "0x0ff6ffc06ff286230ff6ffc06ff2862300", - "0x5f3e4907f716ac89b6347d15ececedca6a93112633bb3354e67952fcdd740cd5": "0xcafad6120836227e4660c07c046c2b56e8fba10cbf3fcfdcc566d774e14fd367", - "0xc2261276cc9d1f8598ea4b6a74b15c2f218f26c73add634897550b4003b26bc666e551402e9db966f769da2a411eff2face196c91278147bbfcf405002e875ac": "0x047374616b696e67200000c16ff28623000000000000000000ffffffff1f", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b485268962a32b3f1cffce32ce1e5f6d6d3d633f7e21fd4e659402a2c62cab64ca": "0x0000c16ff28623000000000000000000", - "0x5f3e4907f716ac89b6347d15ececedca5579297f4dfb9609e7e4c2ebab9ce40a": "0x10dc94ff7f625d9ef7824766f90a5eb8aa03f99b7b28664585950221d0d2358e3a2a009220d327910e8ffd89167b7d96eb8871a37c374ec0adfdf1b6c384b22761f417395797ff444345d7c25355bbab14de5ca8857104a028d969147a4fbd6e29cafad6120836227e4660c07c046c2b56e8fba10cbf3fcfdcc566d774e14fd367", - "0x5f3e4907f716ac89b6347d15ececedca88dcde934c658227ee1dfafcd6e16903e4fe34f5c8499d222649809260ad8db63c739e091b73cda907a2df171176070a": "0x0001cafad6120836227e4660c07c046c2b56e8fba10cbf3fcfdcc566d774e14fd367012a009220d327910e8ffd89167b7d96eb8871a37c374ec0adfdf1b6c384b22761", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19509fe6329cc0b39e09343a73657373696f6e3a6b657973a9e863aa4e88bfe99fb4f5250d395dfc9ad8361f732d3f33f982630685e1b467": "0xf417395797ff444345d7c25355bbab14de5ca8857104a028d969147a4fbd6e29", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19509fe6329cc0b39e09343a73657373696f6e3a6b65797333a25791b4e76010f327045d60a8a9b6cbaa4175acec26fc9c64923cb2ed0b33": "0xcafad6120836227e4660c07c046c2b56e8fba10cbf3fcfdcc566d774e14fd367", - "0x34b9dcaacddd89d5a94929dccb713153d2d505c0e6f76fd7ce0796ebe187401c": "0x0000000001000000000000000100000000000000010000000000000001000000000000000100000000000000010000000000000001000000000000008700000000000000af0000000000000001000000000000000100000000000000040000000000010010000000004000000120000000", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19509fe6329cc0b39e09343a73657373696f6e3a6b65797358c81ce9d318af53a0c8e04a468dbe3d064a96be56550cde6a930f94d820eef4": "0x2a009220d327910e8ffd89167b7d96eb8871a37c374ec0adfdf1b6c384b22761", - "0x5f3e4907f716ac89b6347d15ececedca83e585bbc5fdcec57219c0dc81ef5ff404615f785492f37abe2b14d3f286778c2c9752548ca2d011e952c455b2733bfe": "0x0ff6ffc06ff286230ff6ffc06ff2862300", - "0x5f3e4907f716ac89b6347d15ececedca9220e172bed316605f73f1ff7b4ade98e4fe34f5c8499d222649809260ad8db63c739e091b73cda907a2df171176070a": "0x00", - "0x5f3e4907f716ac89b6347d15ececedca422adb579f1dbf4f3886c5cfa3bb8cc4370973789ee011f45a1b1a15e8ca4cb78a4c6002b9dc5c7454f0ddc806bf0415": "0xdc94ff7f625d9ef7824766f90a5eb8aa03f99b7b28664585950221d0d2358e3a0f0000c16ff286230f0000c16ff2862300", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19509fe6329cc0b39e09343a73657373696f6e3a6b657973bb0478b410b24d65023203a9b253562f2dac70ebbbce3493919331ba6d09510e": "0xf417395797ff444345d7c25355bbab14de5ca8857104a028d969147a4fbd6e29", - "0x26aa394eea5630e07c48ae0c9558cef70a98fdbe9ce6c55837576c60c7af3850": "0x02000000", - "0x5f3e4907f716ac89b6347d15ececedca422adb579f1dbf4f3886c5cfa3bb8cc473d92918a8bc8bb6704158faa13f857c8503f88a105844949122c4ae959b09ba": "0xcafad6120836227e4660c07c046c2b56e8fba10cbf3fcfdcc566d774e14fd3670f0000c16ff286230f0000c16ff2862300", - "0x5f3e4907f716ac89b6347d15ececedca9cbd2f0b29a008a36009ac44cca0c969": "0xf6ffc06ff28623000000000000000000", - "0x5f3e4907f716ac89b6347d15ececedca88dcde934c658227ee1dfafcd6e1690385268962a32b3f1cffce32ce1e5f6d6d3d633f7e21fd4e659402a2c62cab64ca": "0x00012a009220d327910e8ffd89167b7d96eb8871a37c374ec0adfdf1b6c384b2276100", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19509fe6329cc0b39e09343a73657373696f6e3a6b65797395a5c6fffae0bd453a2681fc02f692a2ce7e7b27a8b53de6741bccabd205d271": "0x2a009220d327910e8ffd89167b7d96eb8871a37c374ec0adfdf1b6c384b22761", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19509fe6329cc0b39e09343a73657373696f6e3a6b657973573bf64cfb7e8c308bcf0394ae44b7cbf6c3d1f3574a78f3c565015d96ea9c15": "0x2a009220d327910e8ffd89167b7d96eb8871a37c374ec0adfdf1b6c384b22761", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b466e551402e9db966f769da2a411eff2face196c91278147bbfcf405002e875ac": "0x0000c16ff28623000000000000000000", - "0xf2794c22e353e9a839f12faab03a911bbdcb0c5143a8617ed38ae3810dd45bc6": "0x00000000", + "0x5f3e4907f716ac89b6347d15ececedca3ed14b45ed20d054f05e37e2542cfe70e54094c2d5af8ae10b91e1288f4f59f2946d7738f2c509b7effd909e5e9ba0ad": "0x9e42241d7cd91d001773b0b616d523dd80e13c6c2cab860b1234ef1b9ffc1526", + "0x426e15054d267946093858132eb537f1d0b4a3f7631f0c0e761898fe198211de": "0xe7030000", + "0x5f3e4907f716ac89b6347d15ececedca6a93112633bb3354e67952fcdd740cd5": "0xf26cdb14b5aec7b2789fd5ca80f979cef3761897ae1f37ffb3e154cbcc1c2663", + "0x5f3e4907f716ac89b6347d15ececedca42982b9d6c7acc99faa9094c912372c2b4def25cfda6ef3a0000000079091c57296b2634547ff0ab649283a7ae01dbc2eb73932eba2fb09075e9485ff369082a2ff38d65": "0x0ff6ffc06ff286230ff6ffc06ff2862300", + "0x5f3e4907f716ac89b6347d15ececedca8bde0a0ea8864605e3b68ed9cb2da01bb4def25cfda6ef3a00000000c90f9b6dd26886b468655684472b743e456907b398d3a44c113f189e56d1bbfd55e889e295dfde78": "0x0ff6ffc06ff286230ff6ffc06ff2862300", + "0xcec5070d609dd3497f72bde07fc96ba04c014e6bf8b8c2c011e7290b85696bb39fe6329cc0b39e09343a73657373696f6e3a6b65797394f72a73893fbd00b11fcce65a014cc5b9ff5066ec15aa6be068b4cabfe67fdb": "0x3919132b851ef0fd2dae42a7e734fe547af5a6b809006100f48944d7fae8e8ef00299981a2b92f878baaf5dbeba5c18d4e70f2a1fcd9c61b32ea18daf38f437800299981a2b92f878baaf5dbeba5c18d4e70f2a1fcd9c61b32ea18daf38f437800299981a2b92f878baaf5dbeba5c18d4e70f2a1fcd9c61b32ea18daf38f4378", + "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da994f72a73893fbd00b11fcce65a014cc5b9ff5066ec15aa6be068b4cabfe67fdb": "0x00000000030000c16ff28623000000000000000000000000000000000000000000000000000000c16ff286230000000000000000000000c16ff28623000000000000000000", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19509fe6329cc0b39e09343a73657373696f6e3a6b6579730cd914acf7b89329ae59e8f7e3b8f1ee7a4f5f68d4749cca82814f2f5b1d6bbb": "0x9c7a2ee14e565db0c69f78c7b4cd839fbf52b607d867e9e9c5a79042898a0d12", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19509fe6329cc0b39e09343a73657373696f6e3a6b65797346c8960f8387b17441ee2be48a0896e48d3580e922c6e1cd8f53a621370c1e49": "0x68655684472b743e456907b398d3a44c113f189e56d1bbfd55e889e295dfde78", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19509fe6329cc0b39e09343a73657373696f6e3a6b65797365ab35e7816bae0042175c49c0d6da885e26780d56ff9c7f04727e757dddc666": "0x547ff0ab649283a7ae01dbc2eb73932eba2fb09075e9485ff369082a2ff38d65", + "0xcec5070d609dd3497f72bde07fc96ba0e0cdd062e6eaf24295ad4ccfc41d4609": "0x10f26cdb14b5aec7b2789fd5ca80f979cef3761897ae1f37ffb3e154cbcc1c26633919132b851ef0fd2dae42a7e734fe547af5a6b809006100f48944d7fae8e8ef00299981a2b92f878baaf5dbeba5c18d4e70f2a1fcd9c61b32ea18daf38f437800299981a2b92f878baaf5dbeba5c18d4e70f2a1fcd9c61b32ea18daf38f437800299981a2b92f878baaf5dbeba5c18d4e70f2a1fcd9c61b32ea18daf38f4378547ff0ab649283a7ae01dbc2eb73932eba2fb09075e9485ff369082a2ff38d655633b70b80a6c8bb16270f82cca6d56b27ed7b76c8fd5af2986a25a4788ce440482a3389a6cf42d8ed83888cfd920fec738ea30f97e44699ada7323f08c3380a482a3389a6cf42d8ed83888cfd920fec738ea30f97e44699ada7323f08c3380a482a3389a6cf42d8ed83888cfd920fec738ea30f97e44699ada7323f08c3380a68655684472b743e456907b398d3a44c113f189e56d1bbfd55e889e295dfde787932cff431e748892fa48e10c63c17d30f80ca42e4de3921e641249cd7fa3c2f482dbd7297a39fa145c570552249c2ca9dd47e281f0c500c971b59c9dcdcd82e482dbd7297a39fa145c570552249c2ca9dd47e281f0c500c971b59c9dcdcd82e482dbd7297a39fa145c570552249c2ca9dd47e281f0c500c971b59c9dcdcd82e9c7a2ee14e565db0c69f78c7b4cd839fbf52b607d867e9e9c5a79042898a0d129becad03e6dcac03cee07edebca5475314861492cdfc96a2144a67bbe96993326e7e4eb42cbd2e0ab4cae8708ce5509580b8c04d11f6758dbf686d50fe9f91066e7e4eb42cbd2e0ab4cae8708ce5509580b8c04d11f6758dbf686d50fe9f91066e7e4eb42cbd2e0ab4cae8708ce5509580b8c04d11f6758dbf686d50fe9f9106", + "0x5f3e4907f716ac89b6347d15ececedca3ed14b45ed20d054f05e37e2542cfe707f325c981c2b001f5fe8c51cc7b89e50ebb1f60feb7ab3fa3bc79d6ab71d45cb": "0x781ead1e2fa9ccb74b44c19d29cb2a7a4b5be3972927ae98cd3877523976a276", + "0x3a636f6465": "0x0061736d0100000001a6033a60037f7f7f017f60027f7f017f60027f7f0060037f7f7f0060047f7f7f7f0060017f0060057f7f7f7f7f0060017f017e60037f7e7e0060017e017f60017e017e60027e7e0060017e0060047f7e7e7f017f60067f7e7e7f7f7f017f60057e7e7f7e7e0060047e7e7f7e017e60047e7e7f7e0060037f7e7f017f60027f7e017e60047f7e7e7e017f6000017e60037e7e7f0060047f7f7f7f017f6000017f60027f7e017f60017f017f60037e7e7f017e60037f7f7e017e60027f7f017e60000060037e7f7f017f60067f7f7f7f7f7f017f60057f7f7f7f7f017f60027f7e0060067f7f7f7f7f7f0060077f7e7e7e7e7e7e0060057f7f7e7e7f0060067f7f7f7e7e7f0060047f7f7f7f017e60077f7f7f7e7e7e7f0060037f7f7e0060077f7f7f7e7e7f7f0060077f7f7f7f7e7e7f0060047f7f7e7e0060077f7f7e7e7f7f7f0060057f7e7e7f7f0060057f7f7f7e7e0060077f7f7f7f7f7f7f0060067f7e7e7f7f7f0060027e7f0060067f7f7f7f7e7e0060087e7e7e7e7e7e7e7e017f60087f7f7f7f7f7e7e7f0060037f7e7f0060047f7e7e7f0060057f7e7e7e7e0060067f7e7e7e7e7f0002b00e2e03656e76066d656d6f727902001303656e76196578745f6c6f6767696e675f6c6f675f76657273696f6e5f31000803656e761e6578745f68617368696e675f74776f785f3132385f76657273696f6e5f31000903656e76196578745f73746f726167655f6765745f76657273696f6e5f31000a03656e76206578745f68617368696e675f626c616b65325f3235365f76657273696f6e5f31000903656e76196578745f73746f726167655f7365745f76657273696f6e5f31000b03656e761b6578745f73746f726167655f636c6561725f76657273696f6e5f31000c03656e761d6578745f68617368696e675f74776f785f36345f76657273696f6e5f31000903656e76206578745f68617368696e675f626c616b65325f3132385f76657273696f6e5f31000903656e761d6578745f6d6973635f7072696e745f757466385f76657273696f6e5f31000c03656e76206578745f73616e64626f785f6d656d6f72795f6e65775f76657273696f6e5f31000103656e76256578745f73616e64626f785f6d656d6f72795f74656172646f776e5f76657273696f6e5f31000503656e76216578745f73616e64626f785f696e7374616e74696174655f76657273696f6e5f31000d03656e761c6578745f73616e64626f785f696e766f6b655f76657273696f6e5f31000e03656e76276578745f73616e64626f785f696e7374616e63655f74656172646f776e5f76657273696f6e5f31000503656e76206578745f73746f726167655f6368696c645f726f6f745f76657273696f6e5f31000a03656e761f6578745f73746f726167655f6368696c645f7365745f76657273696f6e5f31000f03656e761f6578745f73746f726167655f6368696c645f6765745f76657273696f6e5f31001003656e76216578745f73746f726167655f6368696c645f636c6561725f76657273696f6e5f31001103656e76226578745f6d6973635f72756e74696d655f76657273696f6e5f76657273696f6e5f31000a03656e76226578745f73746f726167655f636c6561725f7072656669785f76657273696f6e5f31000c03656e76236578745f63727970746f5f737232353531395f7665726966795f76657273696f6e5f31001203656e76286578745f6f6666636861696e5f6c6f63616c5f73746f726167655f6765745f76657273696f6e5f31001303656e76346578745f6f6666636861696e5f6c6f63616c5f73746f726167655f636f6d706172655f616e645f7365745f76657273696f6e5f31001403656e76286578745f6f6666636861696e5f6c6f63616c5f73746f726167655f7365745f76657273696f6e5f31000803656e761e6578745f73746f726167655f6e6578745f6b65795f76657273696f6e5f31000a03656e761c6578745f6d6973635f7072696e745f6e756d5f76657273696f6e5f31000c03656e76236578745f63727970746f5f656432353531395f7665726966795f76657273696f6e5f31001203656e761a6578745f73746f726167655f726f6f745f76657273696f6e5f31001503656e76226578745f73746f726167655f6368616e6765735f726f6f745f76657273696f6e5f31000a03656e76286578745f73746f726167655f6368696c645f73746f726167655f6b696c6c5f76657273696f6e5f31001603656e76206578745f73616e64626f785f6d656d6f72795f6765745f76657273696f6e5f31001703656e76206578745f73616e64626f785f6d656d6f72795f7365745f76657273696f6e5f31001703656e761c6578745f6d6973635f7072696e745f6865785f76657273696f6e5f31000c03656e76236578745f6f6666636861696e5f69735f76616c696461746f725f76657273696f6e5f31001803656e76256578745f63727970746f5f656432353531395f67656e65726174655f76657273696f6e5f31001903656e76256578745f63727970746f5f737232353531395f67656e65726174655f76657273696f6e5f31001903656e762a6578745f747269655f626c616b65325f3235365f6f7264657265645f726f6f745f76657273696f6e5f31000903656e76296578745f6f6666636861696e5f7375626d69745f7472616e73616374696f6e5f76657273696f6e5f31000a03656e76246578745f6f6666636861696e5f6e6574776f726b5f73746174655f76657273696f6e5f31001503656e761e6578745f616c6c6f6361746f725f6d616c6c6f635f76657273696f6e5f31001a03656e761c6578745f616c6c6f6361746f725f667265655f76657273696f6e5f31000503656e761a6578745f73746f726167655f726561645f76657273696f6e5f31001b03656e76286578745f63727970746f5f737232353531395f7075626c69635f6b6579735f76657273696f6e5f31000703656e76216578745f63727970746f5f737232353531395f7369676e5f76657273696f6e5f31001c03656e76376578745f63727970746f5f736563703235366b315f65636473615f7265636f7665725f636f6d707265737365645f76657273696f6e5f31001d03c606c4061a1a050500001a1a1d1e1e1e030203001e060001010102011f0507201702020004010101020101010301010100042101010001010000010005030102020203020001010102202201020504230505050505020202030303020302020203030303050503020203030303040505050b08032405050505050205020202020203030203020125020302022302050202030226040b231e04040404040404040404040404040404040404040404040404040427020505011e0202030402020202020205030102050502020202020502020202020202020202022829022a02242b050303022c0405020303040202010404030203032d06040505030202040202020302060302051a030202020802050205020205020202020202030403060202020503010202020501020505050505050505050505050505050505050505050502020202020202020226020203021a0502020505050203030202030203030304050403050203030203050505050502020202020202020205020201020506010102000101011e02020202062e0202032f05020203020204020302020202030303020302301e06050402020131020205050505020202020104020201040202010517030505020202011a0202050202020203051e15020205021a32020602030505030505050202020202050202030202030202030303050505021a030203030505050205030203012c03030201051e02030505020505050202020202050505020202020102020202020102010402030305050203001a0202031a0205020525020205050205010201330202020317060302020305050202020305050205020505050502050506030301030202243401060402020202020302020202350205030103050505050502020202051a0202050205050505050202020202030502040204051d021d021d1d1d1d1d021d031d1d031d021d1d1d1d1d1d1d1d1d1d1d050303050502020205050203030302051e050202030202020202020502020202022c050502050202050501030306033602020203020106020203030505050206020201030204010301010202010101010101010102030103020201030103030302010103010503031a01020208010106010104030403040301060603030501010101000000003737383838390407017001950295020619037f01418080c0000b7f0041b4e2ca000b7f0041b4e2ca000b07e8051a195f5f696e6469726563745f66756e6374696f6e5f7461626c65010009686173685f7465737400350c436f72655f76657273696f6e00c90512436f72655f657865637574655f626c6f636b00cb0515436f72655f696e697469616c697a655f626c6f636b00cd05114d657461646174615f6d6574616461746100ce051c426c6f636b4275696c6465725f6170706c795f65787472696e73696300cf051b426c6f636b4275696c6465725f66696e616c697a655f626c6f636b00d00520426c6f636b4275696c6465725f696e686572656e745f65787472696e7369637300d1051c426c6f636b4275696c6465725f636865636b5f696e686572656e747300d30518426c6f636b4275696c6465725f72616e646f6d5f7365656400d5052b5461676765645472616e73616374696f6e51756575655f76616c69646174655f7472616e73616374696f6e00d605214f6666636861696e576f726b65724170695f6f6666636861696e5f776f726b657200d8051e4772616e6470614170695f6772616e6470615f617574686f72697469657300da0515426162654170695f636f6e66696775726174696f6e00db051b426162654170695f63757272656e745f65706f63685f737461727400dc0521417574686f72697479446973636f766572794170695f617574686f72697469657300dd051d4163636f756e744e6f6e63654170695f6163636f756e745f6e6f6e636500de0511436f6e7472616374734170695f63616c6c00df0518436f6e7472616374734170695f6765745f73746f7261676500e0051c436f6e7472616374734170695f72656e745f70726f6a656374696f6e00e105205472616e73616374696f6e5061796d656e744170695f71756572795f696e666f00e2052153657373696f6e4b6579735f67656e65726174655f73657373696f6e5f6b65797300e3051f53657373696f6e4b6579735f6465636f64655f73657373696f6e5f6b65797300e4050a5f5f646174615f656e6403010b5f5f686561705f626173650302098b04010041010b94024442564ed3064f505763d102af01c101c201c301c401c501c601c701c801c901ca01cb01cc01cd01ce01cf01d001d101d201d301d401d501d601d701d801d901da01db01dc01cb04cc02ef04ed04f003a703a803ac03ab06ad06ae069a0658c906ab03dd06b306e506c106bb06e5053f40416747595c5d5e5f606d6e6f70717674758f069004fd047e9901d506d206bf02a301bb02d606e001f501f301f201820281028002ff01fe01fd01fc01fb01fa01f901f801f8058d04ba02c002be02bd028c048b04d402ec04a7047a79d502980188068a067c7b7daa05a905b2058e068d06d60282058105d70284058c0587058805f605f405d802800687069f049e04d902a004a804b902b702da02bc02d302bc05ba05db02c805bb05ac05ab05dc02ad05b605d904d804dd02d903da03ec03fc04fb04de028b05c504c404df02c604e904f101f001e002f701a102ba04b904e102e504d803d703e202eb038605e3028905a201a101e402df01bd04bc04e502be04ea04b905b805e602c3059f019e01e702a001de01ad03dc03db03b40691048f048e04a104bb04fa05b105c204c104c004bf04ae05ca04c904c804c704f904f804fa04fe0483058d058e058f059005910587025354a505f604a605f704a705a805a405b005af05ff05fe05fd05fc05fb05f7058206810689068c068b06b806b206b706b506b606e306bf06c706e206e606e4060a83f75ec40606002000102e0b0600200010270b0600200010300b0600200010280b0a0020002001200210320b2801017f0240200210272203450d002003200020022001200120024b1b10e8061a200010280b20030b0600200010340b1c01017f0240200010272201450d0020014100200010e7061a0b20010bff0202017f037e230041206b220224002001ad42adfed5e4d485fda8d8007e42b9e0007c210302400240024002400240200141084b0d00200141014b0d0120010d02420021040c030b0240200141104b0d00200241106a2000290000200385420042adfed5e4d485fda8d800420010ed06200241186a29030020022903107c200120006a41786a2900008521040c040b200120006a41786a2900002105200321040340200029000020048542adfed5e4d485fda8d8007e42178942adfed5e4d485fda8d8007e2003852103200041086a2100200442cf829ebbefefde82147c2104200141786a220141084b0d000b200320058521040c030b0240200141034b0d00200120006a417e6a33000042108620003300008420038521040c030b200120006a417c6a35000042208620003500008420038521040c020b200031000021040b200420038521040b20022004420042adfed5e4d485fda8d800420010ed06200241086a290300210420022903002103200241206a2400200420037c42c300850b05001037000b24004100419ccaca00ad4280808080f0008441a3caca00ad4280808080a00484100000000b1100418080c0004111419480c0001039000b4701017f230041206b22032400200341146a4100360200200341c8e1ca00360210200342013702042003200136021c200320003602182003200341186a360200200320021043000b8b0301067f230041306b2202240020012802002103024002402001280204220441037422050d00410021060c010b200341046a2107410021060340200728020020066a2106200741086a2107200541786a22050d000b0b024002400240024002400240200141146a2802000d00200621070c010b024020040d0041bc80c00041004100103b000b024002402006410f4b0d00200341046a280200450d010b200620066a220720064f0d010b4101210541002107200241086a21060c010b2007417f4c0d01200241086a2106024020070d0041012105410021070c010b2007102d2205450d020b200241003602102002200736020c200220053602082002200241086a360214200241186a41106a200141106a290200370300200241186a41086a200141086a29020037030020022001290200370318200241146a41cc80c000200241186a103c0d0220002006290200370200200041086a200641086a280200360200200241306a24000f0b103d000b1036000b41e480c0004133200241186a419881c00041a881c000103e000b6c01017f230041306b2203240020032002360204200320013602002003411c6a41023602002003412c6a41013602002003420237020c2003419484c000360208200341013602242003200341206a360218200320033602282003200341046a360220200341086a20001043000bba06010a7f230041306b22032400200341246a2001360200200341033a002820034280808080800437030820032000360220410021042003410036021820034100360210024002400240024020022802082205450d0020022802002106200228020422072002410c6a2802002208200820074b1b2209450d01200241146a280200210a2002280210210b41012108200020062802002006280204200128020c1100000d03200541106a2102200641086a2100410121040240024003402003200241746a28020036020c20032002410c6a2d00003a00282003200241786a280200360208200241086a28020021084100210541002101024002400240200241046a2802000e03010002010b2008200a4f0d032008410374210c41002101200b200c6a220c2802044102470d01200c28020028020021080b410121010b2003200836021420032001360210200228020021080240024002402002417c6a2802000e03010002010b2008200a4f0d0420084103742101200b20016a22012802044102470d01200128020028020021080b410121050b2003200836021c200320053602180240200241706a2802002208200a4f0d00200b20084103746a2208280200200341086a20082802041101000d06200420094f0d05200041046a210120002802002105200241206a2102200041086a210041012108200441016a2104200328022020052001280200200328022428020c110000450d010c070b0b41948ac0002008200a103b000b41848ac0002008200a103b000b41848ac0002008200a103b000b2002280200210620022802042207200241146a2802002208200820074b1b220a450d002002280210210241012108200020062802002006280204200128020c1100000d02200641086a21004101210403402002280200200341086a200241046a2802001101000d022004200a4f0d01200041046a210120002802002105200241086a2102200041086a210041012108200441016a2104200328022020052001280200200328022428020c110000450d000c030b0b0240200720044d0d00410121082003280220200620044103746a22022802002002280204200328022428020c1100000d020b410021080c010b410121080b200341306a240020080b05001038000b7e01017f230041c0006b220524002005200136020c2005200036020820052003360214200520023602102005412c6a41023602002005413c6a41033602002005420237021c200541fca3c000360218200541043602342005200541306a3602282005200541106a3602382005200541086a360230200541186a20041043000bbc0101037f02400240024002402000280200220041046a2802002203200041086a28020022046b2002490d00200028020021030c010b200420026a22052004490d02200341017422042005200420054b1b22044100480d020240024020030d002004102d21030c010b200028020020032004103121030b2003450d0120002003360200200041046a2004360200200041086a28020021040b200041086a200420026a360200200320046a2001200210e8061a41000f0b1036000b1038000bc00401057f230041106b22022400200028020021000240024002400240024002402001418001490d002002410036020c2001418010490d012002410c6a210302402001418080044f0d0020022001413f71418001723a000e20022001410676413f71418001723a000d20022001410c76410f7141e001723a000c410321010c030b20022001413f71418001723a000f2002200141127641f001723a000c20022001410676413f71418001723a000e20022001410c76413f71418001723a000d410421010c020b0240024020002802082204200041046a280200460d00200028020021050c010b200441016a22052004490d05200441017422032005200320054b1b22034100480d050240024020040d002003102d21050c010b200028020020042003103121050b2005450d0420002005360200200041046a2003360200200028020821040b200520046a20013a00002000200028020841016a3602080c020b20022001413f71418001723a000d20022001410676411f7141c001723a000c2002410c6a2103410221010b02400240200041046a2802002205200041086a28020022046b2001490d00200028020021050c010b200420016a22062004490d03200541017422042006200420064b1b22044100480d030240024020050d002004102d21050c010b200028020020052004103121050b2005450d0220002005360200200041046a2004360200200041086a28020021040b200041086a200420016a360200200520046a2003200110e8061a0b200241106a240041000f0b1036000b1038000b6301017f230041206b2202240020022000280200360204200241086a41106a200141106a290200370300200241086a41086a200141086a29020037030020022001290200370308200241046a41cc80c000200241086a103c2101200241206a240020010b0300000b3401017f230041106b220224002002200136020c20022000360208200241a484c000360204200241c8e1ca0036020020021046000b0d0020003502004101200110450bd40203027f017e037f230041306b22032400412721040240024020004290ce005a0d00200021050c010b412721040340200341096a20046a2206417c6a200020004290ce0080220542f0b17f7e7ca7220741ffff037141e4006e220841017441e684c0006a2f00003b00002006417e6a2008419c7f6c20076a41ffff037141017441e684c0006a2f00003b00002004417c6a2104200042ffc1d72f5621062005210020060d000b0b02402005a7220641e3004c0d00200341096a2004417e6a22046a2005a7220741ffff037141e4006e2206419c7f6c20076a41ffff037141017441e684c0006a2f00003b00000b024002402006410a480d00200341096a2004417e6a22046a200641017441e684c0006a2f00003b00000c010b200341096a2004417f6a22046a200641306a3a00000b2002200141c8e1ca004100200341096a20046a412720046b10482104200341306a240020040b6f01017f230041c0006b220124002001200036020c200141346a4101360200200142013702242001419cdfca003602202001410536023c2001200141386a36023020012001410c6a360238200141106a200141206a103a4101419ccaca0041072001280210200128021810d40600000b0c004285f6f0e7a1e8c2a06a0b830601067f024002402001450d00412b418080c4002000280200220641017122011b2107200120056a21080c010b200541016a210820002802002106412d21070b0240024020064104710d00410021020c010b4100210902402003450d002003210a200221010340200920012d000041c00171418001466a2109200141016a2101200a417f6a220a0d000b0b200820036a20096b21080b410121010240024020002802084101460d00200020072002200310490d012000280218200420052000411c6a28020028020c11000021010c010b02402000410c6a280200220920084b0d00200020072002200310490d012000280218200420052000411c6a28020028020c1100000f0b0240024020064108710d0041002101200920086b22092108024002400240410120002d0020220a200a4103461b0e0402010001020b20094101762101200941016a41017621080c010b41002108200921010b200141016a210103402001417f6a2201450d0220002802182000280204200028021c280210110100450d000b41010f0b200028020421062000413036020420002d0020210b41012101200041013a0020200020072002200310490d0141002101200920086b220a2103024002400240410120002d0020220920094103461b0e0402010001020b200a4101762101200a41016a41017621030c010b41002103200a21010b200141016a2101024003402001417f6a2201450d0120002802182000280204200028021c280210110100450d000b41010f0b2000280204210a41012101200028021820042005200028021c28020c1100000d01200341016a2109200028021c210320002802182102024003402009417f6a2209450d01410121012002200a20032802101101000d030c000b0b2000200b3a00202000200636020441000f0b2000280204210a41012101200020072002200310490d00200028021820042005200028021c28020c1100000d00200841016a2109200028021c210320002802182100034002402009417f6a22090d0041000f0b410121012000200a2003280210110100450d000b0b20010b5401017f024002402001418080c400460d0041012104200028021820012000411c6a2802002802101101000d010b024020020d0041000f0b2000280218200220032000411c6a28020028020c11000021040b20040b6f01017f230041306b2202240020022001360204200220003602002002411c6a41023602002002412c6a41013602002002420237020c200241b086c000360208200241013602242002200241206a3602182002200241046a36022820022002360220200241086a41c086c0001043000b6f01017f230041306b2202240020022001360204200220003602002002411c6a41023602002002412c6a41013602002002420237020c2002419087c000360208200241013602242002200241206a3602182002200241046a36022820022002360220200241086a41a087c0001043000b9307010c7f200041106a28020021030240024002400240200041086a28020022044101460d0020034101460d012000280218200120022000411c6a28020028020c11000021030c030b20034101470d010b0240024020020d00410021020c010b200120026a2105200041146a28020041016a21064100210720012103200121080340200341016a210902400240024020032c0000220a417f4a0d000240024020092005470d004100210b200521030c010b20032d0001413f71210b200341026a220921030b200a411f71210c0240200a41ff0171220a41df014b0d00200b200c41067472210a0c020b0240024020032005470d004100210d2005210e0c010b20032d0000413f71210d200341016a2209210e0b200d200b41067472210b0240200a41f0014f0d00200b200c410c7472210a0c020b02400240200e2005470d004100210a200921030c010b200e41016a2103200e2d0000413f71210a0b200b410674200c411274418080f0007172200a72220a418080c400470d020c040b200a41ff0171210a0b200921030b02402006417f6a2206450d00200720086b20036a21072003210820052003470d010c020b0b200a418080c400460d00024002402007450d0020072002460d0041002103200720024f0d01200120076a2c00004140480d010b200121030b2007200220031b21022003200120031b21010b20044101460d002000280218200120022000411c6a28020028020c1100000f0b4100210902402002450d002002210a200121030340200920032d000041c00171418001466a2109200341016a2103200a417f6a220a0d000b0b0240200220096b200028020c2206490d002000280218200120022000411c6a28020028020c1100000f0b410021074100210902402002450d00410021092002210a200121030340200920032d000041c00171418001466a2109200341016a2103200a417f6a220a0d000b0b200920026b20066a2209210a024002400240410020002d0020220320034103461b0e0402010001020b20094101762107200941016a410176210a0c010b4100210a200921070b200741016a2103024003402003417f6a2203450d0120002802182000280204200028021c280210110100450d000b41010f0b2000280204210941012103200028021820012002200028021c28020c1100000d00200a41016a2103200028021c210a20002802182100034002402003417f6a22030d0041000f0b20002009200a280210110100450d000b41010f0b20030bd40801067f230041f0006b220424002004200336020c20042002360208410121052001210602402001418102490d00410020016b2107418002210803400240200820014f0d00200020086a2c000041bf7f4c0d0041002105200821060c020b2008417f6a21064100210520084101460d01200720086a21092006210820094101470d000b0b200420063602142004200036021020044100410520051b36021c200441c8e1ca0041d387c00020051b3602180240024002400240200220014b22080d00200320014b0d00200220034b0d01024002402002450d0020012002460d00200120024d0d01200020026a2c00004140480d010b200321020b200420023602202002450d0220022001460d02200141016a210903400240200220014f0d00200020026a2c000041404e0d040b2002417f6a210820024101460d0420092002462106200821022006450d000c040b0b20042002200320081b360228200441306a41146a4103360200200441c8006a41146a4104360200200441d4006a410436020020044203370234200441d887c0003602302004410136024c2004200441c8006a3602402004200441186a3602582004200441106a3602502004200441286a360248200441306a41f087c0001043000b200441e4006a4104360200200441c8006a41146a4104360200200441d4006a4101360200200441306a41146a4104360200200442043702342004418088c0003602302004410136024c2004200441c8006a3602402004200441186a3602602004200441106a36025820042004410c6a3602502004200441086a360248200441306a41a088c0001043000b200221080b024020082001460d00410121060240024002400240200020086a22092c00002202417f4a0d0041002105200020016a220621010240200941016a2006460d00200941026a210120092d0001413f7121050b2002411f712109200241ff017141df014b0d01200520094106747221010c020b2004200241ff0171360224200441286a21020c020b4100210020062107024020012006460d00200141016a210720012d0000413f7121000b200020054106747221010240200241ff017141f0014f0d0020012009410c747221010c010b41002102024020072006460d0020072d0000413f7121020b20014106742009411274418080f00071722002722201418080c400460d020b2004200136022441012106200441286a21022001418001490d00410221062001418010490d0041034104200141808004491b21060b200420083602282004200620086a36022c200441306a41146a4105360200200441ec006a4104360200200441e4006a4104360200200441c8006a41146a4106360200200441d4006a410736020020044205370234200441ec88c000360230200420023602582004410136024c2004200441c8006a3602402004200441186a3602682004200441106a3602602004200441246a3602502004200441206a360248200441306a419489c0001043000b41b088c000412b41dc88c0001039000b1000200120002802002000280204104c0b800101037f230041206b22022400024002402000280200200110520d002001411c6a2802002103200128021821042002411c6a4100360200200241c8e1ca003602182002420137020c200241fc89c00036020820042003200241086a103c450d010b200241206a240041010f0b2000280204200110522101200241206a240020010bff0301067f230041106b22022400410121030240200128021841272001411c6a2802002802101101000d002002200028020010512002410c6a2d00002104200241086a28020021052002280200210002400240024020022802042206418080c400460d000c010b03402000210341dc002107410121000240024020030e0404040100040b200441ff017121034104210441032100024002400240024020030e06070302010004070b4103210041f5002107410321040c030b4102210441fb0021070c020b4102410120051b2104418080c4002005410274411c7176410f7141307221072005417f6a410020051b21050c010b4100210441fd0021070b4101210320012802182007200128021c280210110100450d000c030b0b03402000210341dc00210741012100024002400240024020030e0405010300050b200441ff01712103410421044103210002400240024020030e06070201000405070b4102210441fb0021070c040b20062005410274411c7176410f712203413072200341d7006a2003410a491b21074102410120051b21042005417f6a410020051b21050c030b4100210441fd0021070c020b41002100200621070c010b4103210041f5002107410321040b4101210320012802182007200128021c2802101101000d020c000b0b20012802184127200128021c28021011010021030b200241106a240020030bab0903047f017e037f4102210202400240024002400240200141776a2203411e4d0d00200141dc00470d010c020b41f40021040240024020030e1f05010202000202020202020202020202020202020202020202030202020203050b41f20021040c040b41ee0021040c030b2001410a7621040240024002400240024002400240024002400240024002400240024002400240024020014180d807490d00411e21022004418007460d0120014180fe037141087621050c050b200441be8ac0006a2d00002202411e4b0d010b20024104742001410676410f717241b98bc0006a2d00002204418b014f0d0141032102200441037441d08fc0006a29030042012001413f71ad8683500d02200141017267410276410773ad4280808080d0008421060c100b41ac8fc0002002411f103b000b41bc8fc0002004418b01103b000b20014180fe03712104200141808004490d01200441087621050b200141808008490d0120014190fc476a4190fc0b490d0a200141e28b746a41e28d2c490d0a2001419fa8746a419f18490d0a200141dee2746a410e490d0a200141feffff0071419ef00a460d0a200141a9b2756a4129490d0a200141cb91756a410a4d0d0a410121020c0c0b2004410876210541c298c000210241002103200141ff017121070340200241026a2108200320022d000122046a2109024020022d000022022005460d00200220054b0d0820092103200821022008419499c000470d010c080b20092003490d02200941a5024b0d032003419499c0006a2102024003402004450d012004417f6a210420022d00002103200241016a210220032007470d000c0c0b0b20092103200821022008419499c000470d000c070b0b41849ec000210241002103200141ff017121070340200241026a2108200320022d000122046a2109024020022d000022022005460d00200220054b0d062009210320082102200841ca9ec000470d010c060b20092003490d03200941a6014b0d04200341ca9ec0006a2102024003402004450d012004417f6a210420022d00002103200241016a210220032007470d000c0b0b0b2009210320082102200841ca9ec000470d000c050b0b20032009104b000b200941a502104a000b20032009104b000b200941a601104a000b200141ffff0371210741f09fc00021044101210302400340200441016a21090240024020042d0000220241187441187522084100480d00200921040c010b20094188a3c000460d02200841ff007141087420042d0001722102200441026a21040b200720026b22074100480d032003410173210320044188a3c000470d000c030b0b41b088c000412b41f49dc0001039000b200141ffff0371210741b99bc0002104410121030340200441016a21090240024020042d0000220241187441187522084100480d00200921040c010b200941f39dc000460d03200841ff007141087420042d0001722102200441026a21040b200720026b22074100480d0120034101732103200441f39dc000470d000b0b4101210220034101710d020c010b41b088c000412b41f49dc0001039000b200141017267410276410773ad4280808080d000842106410321020c010b0b200121040b2000200436020420002002360200200041086a20063702000ba10201037f23004180016b2202240002400240024002400240200128020022034110710d0020034120710d012000ad41012001104521000c020b410021030340200220036a41ff006a2000410f712204413072200441d7006a2004410a491b3a00002003417f6a2103200041047622000d000b20034180016a22004181014f0d022001410141bc8ac0004102200220036a4180016a410020036b104821000c010b410021030340200220036a41ff006a2000410f712204413072200441376a2004410a491b3a00002003417f6a2103200041047622000d000b20034180016a22004181014f0d022001410141bc8ac0004102200220036a4180016a410020036b104821000b20024180016a240020000f0b2000418001104b000b2000418001104b000b1c00200128021841e0a3c000410b2001411c6a28020028020c1100000b1c00200128021841eba3c000410e2001411c6a28020028020c1100000b5b01017f230041306b220324002003200136020c20032000360208200341246a4101360200200342013702142003419cdfca003602102003410436022c2003200341286a3602202003200341086a360228200341106a20021043000b140020002802002001200028020428020c1101000b6901037f230041206b220224002001411c6a280200210320012802182104200241086a41106a2000280200220141106a290200370300200241086a41086a200141086a2902003703002002200129020037030820042003200241086a103c2101200241206a240020010b15002001200028020022002802002000280204104c0ba20401077f230041306b220324000240024020020d00410021040c010b200341286a210502400240024002400340024020002802082d0000450d00200028020041cea4c0004104200028020428020c1100000d050b2003410a3602282003428a808080103703202003200236021c200341003602182003200236021420032001360210200341086a410a20012002105a024002400240024020032802084101470d00200328020c210403402003200420032802186a41016a2204360218024002402004200328022422064f0d00200328021421070c010b200328021422072004490d00200641054f0d072003280210200420066b22086a22092005460d0420092005200610ea06450d040b200328021c22092004490d0220072009490d0220032006200341106a6a41176a2d0000200328021020046a200920046b105a2003280204210420032802004101460d000b0b2003200328021c3602180b200028020841003a0000200221040c010b200028020841013a0000200841016a21040b2000280204210920002802002106024020044520022004467222070d00200220044d0d03200120046a2c000041bf7f4c0d030b200620012004200928020c1100000d04024020070d00200220044d0d04200120046a2c000041bf7f4c0d040b200120046a2101200220046b22020d000b410021040c040b20064104104a000b2001200241002004104d000b2001200220042002104d000b410121040b200341306a240020040bf30201067f410021040240024020024103712205450d00410420056b2205450d0020032005200520034b1b210441002105200141ff01712106034020042005460d01200220056a2107200541016a210520072d000022072006470d000b410121032007200141ff01714641016a41017120056a417f6a21050c010b200141ff017121060240024020034108490d002004200341786a22084b0d00200641818284086c210502400340200220046a220741046a2802002005732209417f73200941fffdfb776a7120072802002005732207417f73200741fffdfb776a7172418081828478710d01200441086a220420084d0d000b0b200420034b0d010b200220046a2109200320046b210241002103410021050240034020022005460d01200920056a2107200541016a210520072d000022072006470d000b410121032007200141ff01714641016a41017120056a417f6a21050b200520046a21050c010b20042003104b000b20002005360204200020033602000bbb0302047f027e230041c0006b2205240041012106024020002d00040d0020002d000521070240200028020022082d00004104710d0041012106200828021841d5a4c00041d2a4c000200741ff017122071b4102410320071b2008411c6a28020028020c1100000d014101210620002802002208280218200120022008411c6a28020028020c1100000d01410121062000280200220828021841b9c3c80041022008411c6a28020028020c1100000d0120032000280200200428020c11010021060c010b0240200741ff01710d0041012106200828021841d7a4c00041032008411c6a28020028020c1100000d01200028020021080b41012106200541013a0017200541346a41dca4c000360200200520082902183703082005200541176a360210200829020821092008290210210a200520082d00203a00382005200a37032820052009370320200520082902003703182005200541086a360230200541086a2001200210590d00200541086a41b9c3c800410210590d002003200541186a200428020c1101000d00200528023041f4a4c0004102200528023428020c11000021060b200041013a0005200020063a0004200541c0006a240020000b8b0201027f230041106b220224002002410036020c02400240024002402001418001490d002001418010490d012002410c6a21032001418080044f0d0220022001413f71418001723a000e20022001410676413f71418001723a000d20022001410c76410f7141e001723a000c410321010c030b200220013a000c2002410c6a2103410121010c020b20022001413f71418001723a000d20022001410676411f7141c001723a000c2002410c6a2103410221010c010b20022001413f71418001723a000f2002200141127641f001723a000c20022001410676413f71418001723a000e20022001410c76413f71418001723a000d410421010b20002003200110592101200241106a240020010b6001017f230041206b2202240020022000360204200241086a41106a200141106a290200370300200241086a41086a200141086a29020037030020022001290200370308200241046a41f8a4c000200241086a103c2101200241206a240020010b0d0020002802002001200210590b0b0020002802002001105c0b6301017f230041206b2202240020022000280200360204200241086a41106a200141106a290200370300200241086a41086a200141086a29020037030020022001290200370308200241046a41f8a4c000200241086a103c2101200241206a240020010bd30202047f027e230041c0006b2203240041012104024020002d00080d00200028020421050240200028020022062d00004104710d0041012104200628021841d5a4c0004193a5c00020051b4102410120051b2006411c6a28020028020c1100000d0120012000280200200228020c11010021040c010b024020050d004101210420062802184194a5c00041022006411c6a28020028020c1100000d01200028020021060b41012104200341013a0017200341346a41dca4c000360200200320062902183703082003200341176a3602102006290208210720062902102108200320062d00203a00382003200837032820032007370320200320062902003703182003200341086a3602302001200341186a200228020c1101000d00200328023041f4a4c0004102200328023428020c11000021040b200020043a00082000200028020441016a360204200341c0006a240020000bd40202037f027e230041c0006b2203240041012104024020002d00040d0020002d000521040240200028020022052d00004104710d000240200441ff0171450d0041012104200528021841d5a4c00041022005411c6a28020028020c1100000d02200028020021050b20012005200228020c11010021040c010b0240200441ff01710d004101210420052802184197a5c00041012005411c6a28020028020c1100000d01200028020021050b41012104200341013a0017200341346a41dca4c000360200200320052902183703082003200341176a3602102005290208210620052902102107200320052d00203a00382003200737032820032006370320200320052902003703182003200341086a3602302001200341186a200228020c1101000d00200328023041f4a4c0004102200328023428020c11000021040b200041013a0005200020043a0004200341c0006a240020000b6401027f230041206b220224002001411c6a280200210320012802182101200241086a41106a200041106a290200370300200241086a41086a200041086a2902003703002002200029020037030820012003200241086a103c2100200241206a240020000b8709010d7f230041306b220324004101210402400240200228021841222002411c6a2802002802101101000d000240024020010d00410021050c010b200020016a210620002107410021054100210802400240034020072109200741016a210a02400240024020072c0000220b417f4a0d0002400240200a2006470d004100210c200621070c010b20072d0001413f71210c200741026a220a21070b200b411f71210d0240200b41ff0171220b41df014b0d00200c200d41067472210b0c020b0240024020072006470d004100210e2006210f0c010b20072d0000413f71210e200741016a220a210f0b200e200c41067472210c0240200b41f0014f0d00200c200d410c7472210b0c020b02400240200f2006470d004100210b200a21070c010b200f41016a2107200f2d0000413f71210b0b200c410674200d411274418080f0007172200b72220b418080c400470d020c050b200b41ff0171210b0b200a21070b2003200b105102400240024002402003280200220a0e0401020100010b200328020820032d000c6a4101460d010b2003200136021420032000360210200320053602182003200836021c20082005490d0302402005450d0020052001460d00200520014f0d04200020056a2c000041bf7f4c0d040b02402008450d0020082001460d00200820014f0d04200020086a2c000041bf7f4c0d040b2002280218200020056a200820056b200228021c28020c1100000d0120032d000c210d2003280208210f024002402003280204220e418080c400470d000340200a21054101210a41dc00210c0240024020050e0404040100040b200d41ff017121054103210a4104210d024002400240024020050e06070302010004070b4103210d41f500210c4103210a0c030b4102210d41fb00210c0c020b41024101200f1b210d418080c400200f410274411c7176410f71413072210c200f417f6a4100200f1b210f0c010b4100210d41fd00210c0b2002280218200c200228021c280210110100450d000c040b0b0340200a210c4101210a41dc0021050240024002400240200c0e0405010300050b200d41ff0171210c4103210a4104210d024002400240200c0e06070201000405070b4102210d41fb0021050c040b200e200f410274411c7176410f712205413072200541d7006a2005410a491b210541024101200f1b210d200f417f6a4100200f1b210f0c030b4100210d41fd0021050c020b4100210a200e21050c010b4103210d41f50021054103210a0b20022802182005200228021c2802101101000d030c000b0b410121050240200b418001490d0041022105200b418010490d0041034104200b41808004491b21050b200520086a21050b200820096b20076a210820062007470d010c030b0b410121040c030b20032003411c6a3602282003200341186a3602242003200341106a360220200341206a1065000b2005450d0020052001460d00200520014f0d02200020056a2c000041bf7f4c0d020b2002280218200020056a200120056b200228021c28020c1100000d0020022802184122200228021c28021011010021040b200341306a240020040f0b2000200120052001104d000b2601017f20002802002201280200200128020420002802042802002000280208280200104d000bee0704057f017e017f017e02400240024002402002450d00410020016b410020014103711b2103200241796a4100200241074b1b210441002105034002400240200120056a2d000022064118744118752207417f4a0d0042808080808020210802402006419182c0006a2d0000417e6a220941024d0d00428080808010210a0c070b0240024002400240024020090e03000102000b200541016a22062002490d024200210a0c090b4200210a200541016a220920024f0d08200120096a2d0000210902400240200641a07e6a2206410d4b0d000240024020060e0e0002020202020202020202020201000b200941e0017141a001460d02428080808010210a0c0c0b02402009411874411875417f4c0d00428080808010210a0c0c0b200941ff017141a001490d01428080808010210a0c0b0b02402007411f6a41ff0171410b4b0d0002402009411874411875417f4c0d00428080808010210a0c0c0b200941ff017141c001490d01428080808010210a0c0b0b0240200941ff017141bf014d0d00428080808010210a0c0b0b0240200741fe017141ee01460d00428080808010210a0c0b0b2009411874411875417f4c0d00428080808010210a0c0a0b42002108200541026a220620024f0d09200120066a2d000041c00171418001460d020c070b4200210a200541016a220920024f0d07200120096a2d0000210902400240200641907e6a220641044b0d000240024020060e050002020201000b200941f0006a41ff01714130490d02428080808010210a0c0b0b02402009411874411875417f4c0d00428080808010210a0c0b0b200941ff0171419001490d01428080808010210a0c0a0b0240200941ff017141bf014d0d00428080808010210a0c0a0b02402007410f6a41ff017141024d0d00428080808010210a0c0a0b2009411874411875417f4c0d00428080808010210a0c090b200541026a220620024f0d07200120066a2d000041c00171418001470d0642002108200541036a220620024f0d08200120066a2d000041c00171418001460d01428080808080e0002108428080808010210a0c080b428080808010210a200120066a2d000041c00171418001470d070b200641016a21050c010b0240200320056b4103710d000240200520044f0d000340200120056a220641046a280200200628020072418081828478710d01200541086a22052004490d000b0b200520024f0d010340200120056a2c00004100480d022002200541016a2205470d000c040b0b200541016a21050b20052002490d000b0b20002001360204200041086a2002360200200041003602000f0b428080808080c0002108428080808010210a0c010b420021080b2000200a2005ad84200884370204200041013602000b1c00200128021841a4dfca0041052001411c6a28020028020c1100000bf20301087f20002802042102024002400240024020002802004101470d002000410c6a28020022002001106920004103742200450d01200220006a2103200141086a2104034020022802002105200241046a28020022002001106902400240200141046a22062802002207200428020022086b2000490d00200128020021070c010b200820006a22092008490d05200741017422082009200820094b1b22084100480d050240024020070d002008102d21070c010b200128020020072008103121070b2007450d042001200736020020062008360200200428020021080b2004200820006a360200200720086a2005200010e8061a200241086a22022003470d000c020b0b200041086a28020022002001106920004103742200450d00200220006a2103200141086a2104034020022802002105200241046a28020022002001106902400240200141046a22062802002207200428020022086b2000490d00200128020021070c010b200820006a22092008490d04200741017422082009200820094b1b22084100480d040240024020070d002008102d21070c010b200128020020072008103121070b2007450d032001200736020020062008360200200428020021080b2004200820006a360200200720086a2005200010e8061a200241086a22022003470d000b0b0f0b1036000b1038000be20601037f02400240024002400240200041c000490d00200041808001490d012000418080808004490d0202400240200141046a280200200141086a2802002202460d00200128020021030c010b200241016a22032002490d05200241017422042003200420034b1b22044100480d050240024020020d002004102d21030c010b200128020020022004103121030b2003450d0420012003360200200141046a2004360200200141086a28020021020b200141086a2204200241016a360200200320026a41033a000002400240200141046a2802002203200428020022026b4104490d00200128020021030c010b200241046a22042002490d05200341017422022004200220044b1b22024100480d050240024020030d002002102d21030c010b200128020020032002103121030b2003450d0420012003360200200141046a2002360200200141086a28020021020b200141086a200241046a360200200320026a20003600000f0b02400240200141046a280200200141086a2802002202460d00200128020021030c010b200241016a22032002490d04200241017422042003200420034b1b22044100480d040240024020020d002004102d21030c010b200128020020022004103121030b2003450d0320012003360200200141046a2004360200200141086a28020021020b200141086a200241016a360200200320026a20004102743a00000f0b02400240200141046a2802002203200141086a28020022026b4102490d00200128020021030c010b200241026a22042002490d03200341017422022004200220044b1b22024100480d030240024020030d002002102d21030c010b200128020020032002103121030b2003450d0220012003360200200141046a2002360200200141086a28020021020b200141086a200241026a360200200320026a20004102744101723b00000f0b02400240200141046a2802002203200141086a28020022026b4104490d00200128020021030c010b200241046a22042002490d02200341017422022004200220044b1b22024100480d020240024020030d002002102d21030c010b200128020020032002103121030b2003450d0120012003360200200141046a2002360200200141086a28020021020b200141086a200241046a360200200320026a20004102744102723600000f0b1036000b1038000bdc0601087f20002802042102024002400240024020002802004101470d002000410c6a2802002200200110692000450d01200041186c2103200241146a2100200141086a2102200141046a21040340200041706a2802002105200041746a2802002206200110690240024020042802002207200228020022086b2006490d00200128020021070c010b200820066a22092008490d05200741017422082009200820094b1b22084100480d050240024020070d002008102d21070c010b200128020020072008103121070b2007450d042001200736020020042008360200200228020021080b2002200820066a360200200720086a2005200610e8061a2000417c6a280200210520002802002206200110690240024020042802002207200228020022086b2006490d00200128020021070c010b200820066a22092008490d05200741017422082009200820094b1b22084100480d050240024020070d002008102d21070c010b200128020020072008103121070b2007450d042001200736020020042008360200200228020021080b2002200820066a360200200720086a2005200610e8061a200041186a2100200341686a22030d000c020b0b200041086a2802002200200110692000450d00200041186c2103200241146a2100200141086a2102200141046a21040340200041706a2802002105200041746a2802002206200110690240024020042802002207200228020022086b2006490d00200128020021070c010b200820066a22092008490d04200741017422082009200820094b1b22084100480d040240024020070d002008102d21070c010b200128020020072008103121070b2007450d032001200736020020042008360200200228020021080b2002200820066a360200200720086a2005200610e8061a2000417c6a280200210520002802002206200110690240024020042802002207200228020022086b2006490d00200128020021070c010b200820066a22092008490d04200741017422082009200820094b1b22084100480d040240024020070d002008102d21070c010b200128020020072008103121070b2007450d032001200736020020042008360200200228020021080b2002200820066a360200200720086a2005200610e8061a200041186a2100200341686a22030d000b0b0f0b1036000b1038000bbb18010a7f230041106b220324002001200210690240024002402001450d00200141d8006c2104410021050340200020056a220641046a2802002107200641086a28020022082002106902400240200241046a2209280200220a200241086a2201280200220b6b2008490d002002280200210a0c010b200b20086a220c200b490d04200a410174220b200c200b200c4b1b220b4100480d0402400240200a0d00200b102d210a0c010b2002280200200a200b1031210a0b200a450d032002200a3602002009200b3602002001280200210b0b2001200b20086a360200200a200b6a2007200810e8061a200641d4006a2d0000210a02400240200928020020012802002208460d002002280200210b0c010b200841016a220b2008490d0420084101742207200b2007200b4b1b22074100480d040240024020080d002007102d210b0c010b2002280200200820071031210b0b200b450d032002200b36020020092007360200200128020021080b2001200841016a360200200b20086a200a3a000002402006410c6a2d0000220841024b0d0002400240024020080e03000102000b02400240200928020020012802002208460d002002280200210b0c010b200841016a220b2008490d072008410174220a200b200a200b4b1b220a4100480d070240024020080d00200a102d210b0c010b20022802002008200a1031210b0b200b450d062002200b3602002009200a360200200128020021080b2001200841016a360200200b20086a41003a0000200641146a2802002107200641186a280200220820021069024002402009280200220a2001280200220b6b2008490d002002280200210a0c010b200b20086a220c200b490d07200a410174220b200c200b200c4b1b220b4100480d0702400240200a0d00200b102d210a0c010b2002280200200a200b1031210a0b200a450d062002200a3602002009200b3602002001280200210b0b2001200b20086a360200200a200b6a2007200810e8061a0c020b02400240200928020020012802002208460d002002280200210b0c010b200841016a220b2008490d062008410174220a200b200a200b4b1b220a4100480d060240024020080d00200a102d210b0c010b20022802002008200a1031210b0b200b450d052002200b3602002009200a360200200128020021080b2001200841016a360200200b20086a41013a000002402006410d6a2d0000220841054b0d004100210a02400240024002400240024020080e06050001020304050b4101210a0c040b4102210a0c030b4103210a0c020b4104210a0c010b4105210a0b02400240200928020020012802002208460d002002280200210b0c010b200841016a220b2008490d0720084101742207200b2007200b4b1b22074100480d070240024020080d002007102d210b0c010b2002280200200820071031210b0b200b450d062002200b36020020092007360200200128020021080b2001200841016a360200200b20086a200a3a00000b200641146a2802002107200641186a280200220820021069024002402009280200220a2001280200220b6b2008490d002002280200210a0c010b200b20086a220c200b490d06200a410174220b200c200b200c4b1b220b4100480d0602400240200a0d00200b102d210a0c010b2002280200200a200b1031210a0b200a450d052002200a3602002009200b3602002001280200210b0b2001200b20086a360200200a200b6a2007200810e8061a200641206a2802002107200641246a280200220820021069024002402009280200220a2001280200220b6b2008490d002002280200210a0c010b200b20086a220c200b490d06200a410174220b200c200b200c4b1b220b4100480d0602400240200a0d00200b102d210a0c010b2002280200200a200b1031210a0b200a450d052002200a3602002009200b3602002001280200210b0b2001200b20086a360200200a200b6a2007200810e8061a2006410e6a2d0000210a02400240200928020020012802002208460d002002280200210b0c010b200841016a220b2008490d0620084101742207200b2007200b4b1b22074100480d060240024020080d002007102d210b0c010b2002280200200820071031210b0b200b450d052002200b36020020092007360200200128020021080b2001200841016a360200200b20086a200a3a00000c010b02400240200928020020012802002208460d002002280200210b0c010b200841016a220b2008490d052008410174220a200b200a200b4b1b220a4100480d050240024020080d00200a102d210b0c010b20022802002008200a1031210b0b200b450d042002200b3602002009200a360200200128020021080b2001200841016a360200200b20086a41023a000002402006410d6a2d0000220841054b0d004100210a02400240024002400240024020080e06050001020304050b4101210a0c040b4102210a0c030b4103210a0c020b4104210a0c010b4105210a0b02400240200928020020012802002208460d002002280200210b0c010b200841016a220b2008490d0620084101742207200b2007200b4b1b22074100480d060240024020080d002007102d210b0c010b2002280200200820071031210b0b200b450d052002200b36020020092007360200200128020021080b2001200841016a360200200b20086a200a3a00000b200641146a2802002107200641186a280200220820021069024002402009280200220a2001280200220b6b2008490d002002280200210a0c010b200b20086a220c200b490d05200a410174220b200c200b200c4b1b220b4100480d0502400240200a0d00200b102d210a0c010b2002280200200a200b1031210a0b200a450d042002200a3602002009200b3602002001280200210b0b2001200b20086a360200200a200b6a2007200810e8061a200641206a2802002107200641246a280200220820021069024002402009280200220a2001280200220b6b2008490d002002280200210a0c010b200b20086a220c200b490d05200a410174220b200c200b200c4b1b220b4100480d0502400240200a0d00200b102d210a0c010b2002280200200a200b1031210a0b200a450d042002200a3602002009200b3602002001280200210b0b2001200b20086a360200200a200b6a2007200810e8061a2006412c6a2802002107200641306a280200220820021069024002402009280200220a2001280200220b6b2008490d002002280200210a0c010b200b20086a220c200b490d05200a410174220b200c200b200c4b1b220b4100480d0502400240200a0d00200b102d210a0c010b2002280200200a200b1031210a0b200a450d042002200a3602002009200b3602002001280200210b0b2001200b20086a360200200a200b6a2007200810e8061a2006410e6a2d0000220841054b0d004100210a02400240024002400240024020080e06050001020304050b4101210a0c040b4102210a0c030b4103210a0c020b4104210a0c010b4105210a0b02400240200928020020012802002208460d002002280200210b0c010b200841016a220b2008490d0520084101742207200b2007200b4b1b22074100480d050240024020080d002007102d210b0c010b2002280200200820071031210b0b200b450d042002200b36020020092007360200200128020021080b2001200841016a360200200b20086a200a3a00000b02400240200641346a2802004101470d00200641386a2802002107200641c0006a280200220820021069024002402009280200220a2001280200220b6b2008490d002002280200210a0c010b200b20086a220c200b490d06200a410174220b200c200b200c4b1b220b4100480d0602400240200a0d00200b102d210a0c010b2002280200200a200b1031210a0b200a450d052002200a3602002009200b3602002001280200210b0b2001200b20086a360200200a200b6a2007200810e8061a0c010b2003200641386a2802002006413c6a28020028020c110200200328020021072003280208220820021069024002402009280200220a2001280200220b6b2008490d002002280200210a0c010b200b20086a220c200b490d05200a410174220b200c200b200c4b1b220b4100480d0502400240200a0d00200b102d210a0c010b2002280200200a200b1031210a0b200a450d042002200a3602002009200b3602002001280200210b0b2001200b20086a360200200a200b6a2007200810e8061a2003280204450d002007102f0b200641c4006a200210682004200541d8006a2205470d000b0b200341106a24000f0b1036000b1038000bd205010b7f2001410c6a28020021022001280208210320012802042104200128020021050240024002400240024002400240024020012d001022060e03010002010b200420056b21070c020b200420056b2201200220036b6a220720014f0d010240024020052004460d00200541016a2108410021060c010b024020032002470d004101210941002104410021070c070b410221062003210120052108200341016a2103200121050b41002101410021074101210903402001410174210a200420086b210b034020052d00002105024020012007470d00200b2107024002400240200641ff01710e03010200010b200220036b21070c010b417f200b200220036b6a22072007200b491b21070b2001417f200741016a220c200c2007491b6a22072001490d06200a2007200a20074b1b22074100480d060240024020010d002007102d21090c010b200920012007103121090b2009450d050b200920016a20053a0000024002400240024002400240200641ff01710e03010300010b20022003460d010c040b024020082004460d00410021060c030b20022003470d030b200141016a21040c0a0b4101210620082004470d00200141016a21040c090b200141016a210120082105200841016a21080c020b200141016a210141022106200a41026a210a2003220541016a21030c000b0b0b200220036b21070b4101210902402007450d0020074100480d022007102d2209450d010b0240200641014d0d0041002104200921010c030b0240024020052004470d0041002104200921010c010b200921012005210a03402001200a2d00003a0000200141016a21012004200a41016a220a470d000b200420056b21040b200641024b0d0320060e03020302020b1036000b1038000b20032002460d002003210a03402001200a2d00003a0000200141016a21012002200a41016a220a470d000b2002200420036b6a21040b2000200436020820002007360204200020093602000bbc0101037f02400240024002402000280200220041046a2802002203200041086a28020022046b2002490d00200028020021030c010b200420026a22052004490d02200341017422042005200420054b1b22044100480d020240024020030d002004102d21030c010b200028020020032004103121030b2003450d0120002003360200200041046a2004360200200041086a28020021040b200041086a200420026a360200200320046a2001200210e8061a41000f0b1036000b1038000ba70301047f230041106b22022400200028020021002002410036020c02400240024002402001418001490d002001418010490d012001418080044f0d0220022001413f71418001723a000e20022001410676413f71418001723a000d20022001410c76410f7141e001723a000c410321010c030b200220013a000c410121010c020b20022001413f71418001723a000d20022001410676411f7141c001723a000c410221010c010b20022001413f71418001723a000f2002200141127641f001723a000c20022001410676413f71418001723a000e20022001410c76413f71418001723a000d410421010b0240024002400240200041046a2802002203200041086a28020022046b2001490d00200028020021030c010b200420016a22052004490d02200341017422042005200420054b1b22044100480d020240024020030d002004102d21030c010b200028020020032004103121030b2003450d0120002003360200200041046a2004360200200041086a28020021040b200041086a200420016a360200200320046a2002410c6a200110e8061a200241106a240041000f0b1036000b1038000b6301017f230041206b2202240020022000280200360204200241086a41106a200141106a290200370300200241086a41086a200141086a29020037030020022001290200370308200241046a419ca5c000200241086a103c2101200241206a240020010b040041010bb60101017f230041c0006b2202240020024100360210200242013703082002410836021c20022001410c6a3602202002200241206a3602182002200241086a3602242002413c6a41013602002002420137022c2002419cdfca003602282002200241186a360238200241246a419ca5c000200241286a103c1a20012d0000417f6a41ff0171200141046a290200200235021042208620023502088410000240200228020c450d002002280208102f0b200241c0006a24000bba0202037f017e230041106b2206240002400240024002400240200541206a2207417f4c0d002007450d01200710332208450d022007410f4d0d032001ad4220862000ad84100122012900002109200641086a2200200141086a290000370300200620093703002001102f200841086a2000290300370000200820062903003700002007411f4d0d042003ad4220862002ad841001220129000021092000200141086a290000370300200620093703002001102f200841186a200029030037000020082006290300370010200841206a2004200510e8061a20062007ad4220862008ad841002107302400240200628020022000d00410021070c010b410121072006280204450d002000102f0b2008102f200641106a240020070f0b103d000b41104100104a000b1036000b41102007104a000b41202007104a000baa0201067f230041206b22022400024002402001422088a722030d00410121040c010b2001a721040b200220033602142002200436021002402003450d0020042d0000210520022003417f6a3602142002200441016a360210200541014b0d0041002103024002400240024020050e020100010b200241086a200241106a10e60120022802080d0320022802142206200228020c2205490d032005417f4c0d010240024020050d00410121030c010b200510332203450d03200320022802102207200510e8061a2002200620056b3602142002200720056a3602100b2003450d032005ad220142208620018421010b20002001370204200020033602002004102f200241206a24000f0b103d000b1036000b41f4c8ca00412e200241186a418ccaca0041a4c9ca00103e000b040041000b02000b02000ba209010f7f23004190036b22042400024002400240200141046a28020022052f01062206410b490d00024020054190bdc600460d002001280208210720012802002108200441306a410041e00210e7061a200441286a22064100360200200441206a22094200370300200441186a220a4200370300200441106a220b4200370300200441086a220c420037030020044200370300419403102d220d0d021036000b4195b4ca00412d41f8b4ca001039000b200541086a220a200128020c220d41016a220b4105746a200a200d4105746a220a2006200d6b41057410e9061a200a41186a200241186a290000370000200a41106a200241106a290000370000200a41086a200241086a290000370000200a2002290000370000200541e8026a2202200b4102746a2002200d4102746a220220052f0106200d6b41027410e9061a20022003360200200520052f010641016a3b0106200441306a410b6a200141086a280000360000200041003a00002000200236023c200041106a200d3600002004200129000037003320002004290030370001200041086a200441376a2900003700000c010b200d41003b0106200d4100360200200d41086a200441306a41e00210e806210e200d4190036a2006280200360200200d4188036a2009290300370200200d4180036a200a290300370200200d41f8026a200b290300370200200d41f0026a200c290300370200200d20042903003702e802200441306a41086a220f200541d0016a290000370300200441306a41106a2210200541d8016a290000370300200441306a41186a2211200541e0016a290000370300200420052900c8013703302005280280032112200e200541e8016a20052f010641796a220641057410e8062109200d41e8026a20054184036a200641027410e806210e200541063b0106200d20063b0106200a2011290300370300200b2010290300370300200c200f2903003703002004200429033037030002400240200128020c220141074f0d00200541086a220a200141016a220b4105746a200a20014105746a2206200541066a220a2f010020016b41057410e9061a200641186a200241186a290000370000200641106a200241106a290000370000200641086a200241086a29000037000020062002290000370000200541e8026a220620014102746a21022006200b4102746a2106200121010c010b200d41066a210a20092001417a6a220c4105746a2009200141796a22014105746a220b200641ffff037120016b41057410e9061a200b41186a200241186a290000370000200b41106a200241106a290000370000200b41086a200241086a290000370000200b2002290000370000200e200c4102746a2106200e20014102746a21020b20062002200a2f010020016b41027410e9061a20022003360200200041013a00002000200236023c200041386a4100360200200041346a200d360200200041306a20123602002000412c6a2007360000200041286a2005360000200041246a200836000020002004290300370001200041096a200441086a290300370000200041116a200441106a290300370000200041196a200441186a290300370000200a200a2f010041016a3b01000b20044190036a24000be60b020f7f047e23004180046b220624000240024020012802002207417f6a2005470d000240024002400240200141046a28020022082f01062209410b490d002001280208210a200641c0006a410272410041be0310e7061a41c403102d220b450d05200b4100360200200b41046a200641c0006a41c00310e8061a200641c0006a41186a220c200841e0016a290000370300200641c0006a41106a220d200841d8016a290000370300200641c0006a41086a220e200841d0016a290000370300200620082900c801370340200828028003210f200b41086a200841e8016a20082f0106221041796a220541057410e8062111200b41e8026a20084184036a200541027410e8062112200b4194036a200841b0036a2010417a6a221341027410e8062114200841063b0106200b20053b010602402013450d00410021052014211003402010280200220920053b01042009200b360200201041046a21102013200541016a2205470d000b0b200641206a41186a200c2903002215370300200641206a41106a200d2903002216370300200641206a41086a200e2903002217370300200620062903402218370320200641186a2015370300200641106a2016370300200641086a201737030020062018370300200128020c22054107490d0120112005417a6a22014105746a2011200541796a22104105746a2209200b2f010620106b41057410e9061a200941186a200241186a290000370000200941106a200241106a290000370000200941086a200241086a290000370000200920022900003700002012200141027422096a201220104102746a2213200b2f010620106b41027410e9061a20132003360200200b200b2f010641016a22133b01062005410274220220146a416c6a201420096a2205201341ffff037120016b41027410e9061a200520043602002001200b2f010622134b0d022002200b6a41fc026a2105034020052802002209201041016a22103b01042009200b360200200541046a210520102013490d000c030b0b200841086a2205200128020c221341016a22104105746a200520134105746a2205200920136b41057410e9061a200541186a200241186a290000370000200541106a200241106a290000370000200541086a200241086a29000037000020052002290000370000200841e8026a22092010410274220b6a2009201341027422056a220920082f010620136b41027410e9061a20092003360200200820082f010641016a22093b0106200520084194036a22026a41086a2002200b6a220b200941ffff037120106b41027410e9061a200b20043602000240201020082f0106220b4b0d00200820056a4198036a210520132110034020052802002209201041016a22103b010420092008360200200541046a21052010200b490d000b0b200041003a0000200041046a2001290200370200200041106a20133602002000410c6a200141086a2802003602000c020b200841086a2210200541016a22094105746a201020054105746a221020082f010620056b41057410e9061a201041186a200241186a290000370000201041106a200241106a290000370000201041086a200241086a29000037000020102002290000370000200841e8026a2213200941027422016a2013200541027422106a221320082f010620056b41027410e9061a20132003360200200820082f010641016a22133b0106201020084194036a22026a41086a200220016a2201201341ffff037120096b41027410e9061a20012004360200200520082f010622134f0d00200820106a4198036a2110034020102802002209200541016a22053b010420092008360200201041046a211020132005470d000b0b20002006290300370001200041013a00002000412c6a200a360200200041286a2008360200200041246a2007360200200041386a2007360200200041346a200b360200200041306a200f360200200041096a200641086a290300370000200041116a200641106a290300370000200041196a200641186a2903003700000b20064180046a24000f0b41c2b4ca00413541f8b4ca001039000b1036000b130020004105360204200041b4b4c0003602000b3400200041b8c4c30036020420004100360200200041146a4101360200200041106a41dcd8c000360200200041086a42073702000b130020004101360204200041f4dac0003602000b3400200041d5a2ca0036020420004100360200200041146a4102360200200041106a41d0dec000360200200041086a42093702000b13002000410136020420004184e1c0003602000b2d01017f02404108102d22020d001036000b20004288808080800137020420002002360200200242dc0b3700000baa0501047f200028020021020240024002400240200141046a2802002203200141086a28020022046b4104490d00200128020021030c010b200441046a22052004490d02200341017422042005200420054b1b22044100480d020240024020030d002004102d21030c010b200128020020032004103121030b2003450d0120012003360200200141046a2004360200200141086a28020021040b200141086a2205200441046a360200200320046a20023600004120102d2204450d0020042000290004370000200441186a2000411c6a290000370000200441106a200041146a290000370000200441086a2000410c6a29000037000002400240200141046a2802002202200528020022036b4120490d00200128020021020c010b200341206a22052003490d02200241017422032005200320054b1b22034100480d020240024020020d002003102d21020c010b200128020020022003103121020b2002450d0120012002360200200141046a2003360200200141086a28020021030b200141086a2205200341206a360200200220036a220341186a200441186a290000370000200341106a200441106a290000370000200341086a200441086a290000370000200320042900003700002004102f02400240200141046a2802002203200528020022046b4120490d00200128020021030c010b200441206a22022004490d02200341017422042002200420024b1b22044100480d020240024020030d002004102d21030c010b200128020020032004103121030b2003450d0120012003360200200141046a2004360200200141086a28020021040b200141086a200441206a360200200320046a220141186a2000413c6a290000370000200141106a200041346a290000370000200141086a2000412c6a290000370000200120002900243700000f0b1036000b1038000bc50202057f037e2001280200210202404120102d2203450d0020032002290000370000200341186a2204200241186a290000370000200341106a2205200241106a290000370000200341086a2206200241086a2900003700004120102d2202450d0020022003290000370000200241186a2004290000370000200241106a2005290000370000200241086a20062900003700002003102f200128020421012002412041c00010312203450d0020032001290000370020200341386a200141186a290000370000200341306a200141106a290000370000200341286a200141086a2900003700002003ad4280808080800884100322022900002107200241086a2900002108200241106a2900002109200041186a200241186a290000370000200041106a2009370000200041086a2008370000200020073700002002102f2003102f0f0b1036000b8a0201037f230041206b2203240002400240200241286c4104722204417f4c0d002004102d2205450d0120034100360208200320043602042003200536020020022003106902402002450d002001200241286c6a21050340200320012802003602102003200341106a41041082014120102d2202450d032003422037021420032002360210200341106a200141046a2201412010820120032802142102200320032802102204200328021810820102402002450d002004102f0b2003200141206a2802003602102003200341106a4104108201200141246a22012005470d000b0b20002003290300370200200041086a200341086a280200360200200341206a24000f0b103d000b1036000bb50101037f0240024002400240200041046a2802002203200041086a28020022046b2002490d00200028020021030c010b200420026a22052004490d02200341017422042005200420054b1b22044100480d020240024020030d002004102d21030c010b200028020020032004103121030b2003450d0120002003360200200041046a2004360200200041086a28020021040b200041086a200420026a360200200320046a2001200210e8061a0f0b1036000b1038000bc703010a7f230041106b2203240002400240024020014105744104722204417f4c0d002004102d2205450d012003410036020820032004360204200320053602002001200310690240024020010d002003280208210620032802042107200328020021080c010b2001410574210920032802002108200328020421052003280208210403404120102d2201450d0320012000290000370000200141186a220a200041186a290000370000200141106a220b200041106a290000370000200141086a220c200041086a29000037000002400240200520046b4120490d00200441206a2106200521070c010b200441206a22062004490d05200541017422072006200720064b1b22074100480d050240024020050d002007102d21080c010b200820052007103121080b2008450d040b200041206a2100200820046a22042001290000370000200441186a200a290000370000200441106a200b290000370000200441086a200c2900003700002001102f2007210520062104200941606a22090d000b2003200736020420032006360208200320083602000b20022902002006ad4220862008ad84100402402007450d002008102f0b200341106a24000f0b103d000b1036000b1038000b9b0202067f017e230041106b2202240002404120102d2203450d0020032000290000370000200341186a2204200041186a290000370000200341106a2205200041106a290000370000200341086a2206200041086a2900003700004120102d2207450d0020072003290000370000200741186a2004290000370000200741106a2005290000370000200741086a20062900003700002003102f0240024020002d0020220341024d0d004280808080800421080c010b024002400240024020030e03000102000b410021030c020b410121030c010b410221030b200220033a000f2007412041c00010312207450d01200720033a00204280808080900421080b200129020020082007ad8410042007102f200241106a24000f0b1036000bef05010a7f230041106b22032400024002400240200241c4006c41046a2204417f4c0d000240024020040d00410121050c010b2004102d2205450d020b20034100360208200320043602042003200536020020022003106902402002450d002001200241c4006c6a2106200328020421042003280208210703402001280200210502400240200420076b4104490d00200328020021020c010b200741046a22022007490d05200441017422082002200820024b1b22084100480d050240024020040d002008102d21020c010b200328020020042008103121020b2002450d042003200836020420032002360200200821040b2003200741046a2208360208200220076a20053600004120102d2205450d03200541186a22092001411c6a290000370000200541106a220a200141146a290000370000200541086a220b2001410c6a2900003700002005200141046a29000037000002400240200420086b4120490d00200741246a21070c010b200841206a22072008490d052004410174220c2007200c20074b1b220c4100480d050240024020040d00200c102d21020c010b20022004200c103121020b2002450d042003200c36020420032002360200200c21040b20032007360208200220086a22082005290000370000200841086a200b290000370000200841106a200a290000370000200841186a20092900003700002005102f0240200420076b411f4b0d00200741206a22052007490d05200441017422082005200820054b1b22054100480d050240024020040d002005102d21020c010b200220042005103121020b2002450d042003200536020420032002360200200521040b200220076a220241086a2001412c6a290000370000200241106a200141346a290000370000200241186a2001413c6a2900003700002003200741206a22073602082002200141246a290000370000200141c4006a22012006470d000b0b20002003290300370200200041086a200341086a280200360200200341106a24000f0b103d000b1036000b1038000bf20503037f027e047f230041106b22022400200241003602082002420137030020002802102103024002404104102d2204450d0020024284808080c0003702042002200436020020042003360000200041146a280200210320044104410810312204450d002002428880808080013702042004200336000420022004360200200041086a290300210520002903002106024002404108200228020822076b4110490d00200741106a2103410821080c010b200741106a22032007490d024110200320034110491b22084100480d0220044108200810312204450d0120022008360204200220043602000b200420076a22072005370008200720063700002002200336020802400240200820036b4120490d00200341206a21070c010b200341206a22072003490d02200841017422092007200920074b1b22094100480d0220042008200910312204450d0120022009360204200220043602000b20022007360208200420036a22042000290024370000200441086a2000412c6a290000370000200441106a200041346a290000370000200441186a2000413c6a29000037000020002802182104200041206a2802002200200210690240024020000d002002280208210020022802042109200228020021080c010b2000410574210a4100200228020822006b210720022802042109034002400240200920076a4120490d00200228020021080c010b200041206a22032000490d04200941017422082003200820034b1b22034100480d040240024020090d002003102d21080c010b200228020020092003103121080b2008450d032002200336020420022008360200200321090b200820006a220341086a200441086a290000370000200341106a200441106a290000370000200341186a200441186a2900003700002002200041206a220036020820032004290000370000200741606a2107200441206a2104200a41606a220a0d000b0b20012902002000ad4220862008ad84100402402009450d002008102f0b200241106a24000f0b1036000b1038000b811505177f017e017f027e047f230041206b220224000240024020014115490d00024002402001410176220341ffffff3f712003470d0020034105742204417f4c0d0041012105024002402004450d002004102d2205450d01200441057621030b200041606a2106200041a07f6a210741002108410021094104210a4100210b2001210c034002400240200c220d417f6a220e0d004101210f4100210c0c010b0240024002400240024002402000200e4105746a200d410574221020006a41406a412010ea064100480d004102200d6b210e200720106a21044101210f03400240200e200f6a4101470d004100210c200d210f0c080b200f41016a210f200441206a2004412010ea062111200441606a21042011417f4a0d000b200d200f6b210e0c010b200720106a2104024003400240200e4101470d004100210e0c020b200e417f6a210e200441206a2004412010ea062111200441606a210420114100480d000b0b200d200e490d01200d20014b0d03200d200e6b220f4101762212450d00200620106a21042000200e4105746a21110340200241186a2210201141186a2213290000370300200241106a2214201141106a2215290000370300200241086a2216201141086a221729000037030020022011290000370300200441086a22182900002119200441106a221a290000211b200441186a220c290000211c201120042900003700002013201c3700002015201b37000020172019370000200c2010290300370000201a20142903003700002018201629030037000020042002290300370000200441606a2104201141206a21112012417f6a22120d000b0b0240200e0d00200e210c0c050b0240200f41094d0d00200e210c0c050b200d20014b0d01200d200e6b21122000200e4105746a21100340200d200e417f6a220c490d040240200d200c6b220f4102490d002000200e4105746a22042000200c4105746a220e412010ea06417f4a0d00200e2900002119200e2004290000370000200241186a2216200e41186a2211290000370300200241106a2217200e41106a2213290000370300200241086a2218200e41086a22142900003703002014200441086a2900003700002013200441106a2900003700002011200441186a29000037000020022019370300410121150240200f4103490d00200e41c0006a2002412010ea06417f4a0d00410221112010210402400340200441186a200441386a290000370000200441106a200441306a290000370000200441086a200441286a2900003700002004200441206a221329000037000020122011460d01200441c0006a21142011211520132104201141016a211120142002412010ea06417f4a0d020c000b0b201121150b200e20154105746a22042002290300370000200441186a2016290300370000200441106a2017290300370000200441086a20182903003700000b200c450d05201041606a2110201241016a2112200c210e200f410a4f0d050c000b0b200e200d104b000b200d200e417f6a220c490d010b200d2001104a000b200c200d104b000b0240200b2009470d0002400240200941016a22042009490d00200941017422112004201120044b1b220441ffffffff01712004470d002004410374220441004e0d010b1038000b0240024020090d002004102d210a0c010b200a200941037420041031210a0b200a450d02200441037621092008210b0b200a200b4103746a2204200f3602042004200c360200200841016a220b21080240200b4102490d00024003400240024002400240200a200b417f6a22084103746a2204280200450d00200b410374200a6a220f41746a280200220e200428020422114d0d000240200b41024b0d00200b21084102210b200c450d0b0c080b200a200b417d6a22164103746a28020422042011200e6a4d0d010240200b41034b0d00200b21084103210b200c450d0b0c080b200f41646a2802002004200e6a4d0d01200b21080c060b200b4103490d0120042802042111200a200b417d6a22164103746a28020421040b20042011490d010b200b417e6a21160b024002400240024002400240200b201641016a221d4b221e450d00200b20164b221f450d01200a20164103746a2217280204222020172802006a2204200a201d4103746a2218280200221a490d02200420014b0d032000201a4105746a22142018280204221541057422116a210f2004410574210e2004201a6b220d20156b220420154f0d042005200f2004410574221110e806221320116a21120240024020154101480d00200441014e0d010b200f2104201321110c060b2006200e6a210e200f21040340200e200441606a220f201241606a220d200d200f412010ea0641004822101b2211290000370000200e41186a201141186a290000370000200e41106a201141106a290000370000200e41086a201141086a2900003700002012200d20101b211202402014200f200420101b2204490d00201321110c070b200e41606a210e2013211120132012490d000c060b0b41c4c2ca00201d200b103b000b41c4c2ca002016200b103b000b201a2004104b000b20042001104a000b20052014201110e806221320116a21120240024020154101480d00200d20154a0d010b20142104201321110c010b2000200e6a2110201321112014210403402004200f2011200f2011412010ea06410048220d1b220e290000370000200441186a200e41186a290000370000200441106a200e41106a290000370000200441086a200e41086a2900003700002011201141206a200d1b2111200441206a2104200f41206a200f200d1b220f20104f0d01201220114b0d000b0b20042011201220116b41607110e8061a0240201f450d002017201a360200201741046a202020156a360200201e450d022018201841086a200b201d417f736a41037410e9061a2008210b200841014d0d030c010b0b419cc3ca002016200b103b000b41b8e3c300411d41f8b4ca001039000b200c450d030c000b0b1036000b103d000b02402009450d00200a102f0b2003450d012005102f0c010b20014102490d002001417f6a2111200141057420006a41206a2110410121120340024002400240024020112204417f6a221120014b0d00200120116b220e4102490d03200020044105746a2204200020114105746a220d412010ea06417f4a0d03200d2900002119200d2004290000370000200241186a2214200d41186a220f290000370300200241106a220b200d41106a2213290000370300200241086a2215200d41086a220a290000370300200a200441086a2900003700002013200441106a290000370000200f200441186a2900003700002002201937030041012104200e4103490d02200d41c0006a2002412010ea06417f4a0d0241002113201021040340200441406a220e200441606a220f290000370000200e41186a200f41186a290000370000200e41106a200f41106a290000370000200e41086a200f41086a29000037000020122013220e460d02200e417f6a211320042002412010ea06210f200441206a2104200f417f4a0d020c000b0b20112001104b000b4102200e6b21040b200d20044105746a22042002290300370000200441186a2014290300370000200441106a200b290300370000200441086a20152903003700000b201041606a21102012417f6a211220110d000b0b200241206a24000bf10101037f0240024002404101450d0041202102024002404120450d004120102d2203450d03200141106a21040c010b41204101742203411020031b2202102d2203450d02200141106a21040b20032001290000370000200341086a200141086a29000037000002400240200241f000714110460d00200221010c010b200241017422014120200141204b1b22014100480d03024002402002450d00200320022001103121030c010b2001102d21030b2003450d020b20032004290000370010200341186a200441086a2900003700002000412036020820002001360204200020033602000f0b103d000b1036000b1038000bd00201097f2001200210690240024002402001450d0020014105742103200241046a210403404120102d2201450d0220012000290000370000200141186a2205200041186a290000370000200141106a2206200041106a290000370000200141086a2207200041086a2900003700000240024020042802002208200241086a2209280200220a6b4120490d00200228020021080c010b200a41206a220b200a490d042008410174220a200b200a200b4b1b220a4100480d040240024020080d00200a102d21080c010b20022802002008200a103121080b2008450d03200220083602002004200a3602002009280200210a0b200041206a21002009200a41206a3602002008200a6a220a41186a2005290000370000200a41106a2006290000370000200a41086a2007290000370000200a20012900003700002001102f200341606a22030d000b0b0f0b1036000b1038000bce8b0106177f037e0b7f017e0a7f027e230041b0096b22032400024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020012d00000e06000102030405000b200341f4056a4101360200200342013702e405200341b4d8c9003602e0052003410436029403200341fcdbc90036029003200320034190036a3602f005200341e0056a41e8d8c9001043000b200341c0006a41026a2204200241076a2d00003a000020034190086a41086a2205200241186a29020037030020034190086a410d6a22062002411d6a2900003700002003200241056a2f00003b01402003200241106a29020037039008200141046a28020022072001410c6a280200220841b0026c22096a210a200141086a280200210b2007210c024002402008450d00200241046a2d0000210d200241026a2f0100210e200241086a280200210f2002410c6a280200211020022d0001211120022d0000211220034190036a410272211320034190036a41106a211420034190036a4105722115200941d07d6a2102200341ce056a2116200341c0056a4103722117200341e0056a4104722118410021192007210c0340200c280200210820034190036a200c41046a220941ac0210e8061a200341e0056a200941ac0210e8061a02402008411b470d00200c41b0026a210c0c1e0b200341e0006a200341e0056a41ac0210e8061a200320083602e0052018200341e0006a41ac0210e8061a024002400240024020120e03000102000b4102210802400240024020110e03000102000b410021080c010b201720032f01403b00002016200329039008370100201741026a20042d00003a0000201641086a2005290300370100201641106a20034190086a41106a2f01003b01002003200d3a00c2052003200e3b01c005200320103601ca052003200f3601c605410121080b201320032903c005370000201341086a200341c0056a41086a290300370000201341106a200341c0056a41106a290300370000201341186a200341c0056a41186a290300370000200320083a009103200341003a0090030c020b41022108024002400240200d0e03000102000b410021080c010b200341b8086a41026a20042d00003a0000200341f8086a41086a2005290300370300200341f8086a410d6a2006290000370000200320032f01403b01b80820032003290390083703f808410121080b201520032f01b8083b0000201420032903f808370200201541026a200341b8086a41026a2d00003a0000201441086a200341f8086a41086a290300370200201441106a200341f8086a41106a290300370200200320083a0094032003201036029c032003200f36029803200341013a0090030c010b41022108024002400240200d0e03000102000b410021080c010b200341b8086a41026a20042d00003a0000200341f8086a41086a2005290300370300200341f8086a410d6a2006290000370000200320032f01403b01b80820032003290390083703f808410121080b201520032f01b8083b0000201420032903f808370200201441086a200341f8086a41086a290300370200201441106a200341f8086a41106a290300370200200341023a009003201541026a200341b8086a41026a2d00003a0000200320083a0094032003201036029c032003200f360298030b200341d8086a200341e0056a20034190036a108b0120032d00d8084104470d02201941016a2119200241d07d6a2102200c41b0026a220c200a470d000b200a210c0b200341e0056a20034190036a41ac0210e8061a0c1b0b200341e0056a41086a2019360200200341ec056a20032903d808370200200341f4056a200341d8086a41086a280200360200200341003a00e405200341013a00e00541c8e1ca004100200341e0056a108c01200041043a000002402002450d00200c41b0026a210c0340200c108d01200c41b0026a210c200241d07d6a22020d000b0b200b450d1b2007102f0c1b0b200141046a280200210a0240024020022d00000d0020022d00014101470d002002411a6a290100211a200241196a2d00002108200241186a2d00002114200241166a2f01002109200241156a2d00002119200241146a2d00002113200241126a2f01002115200241116a2d00002112200241106a2d000021182002410e6a2f0100210d2002410d6a2d0000210f2002410c6a2d000021102002410a6a2f01002107200241096a2d00002104200241086a2d00002105200241066a2f01002116200241056a2d00002111200241046a2d00002106200241026a2f01002102200141026a2f010021174112102d220c450d11200c41086a41002900ade440370000200c41002900a5e440370000200c411241301031220c450d11200c201a370028200c20083a0027200c20143a0026200c20093b0024200c20193a0023200c20133a0022200c20153b0020200c20123a001f200c20183a001e200c200d3b001c200c200f3a001b200c20103a001a200c20073b0018200c20043a0017200c20053a0016200c20163b0014200c20113a0013200c20063a0012200c20023b0010200c413041e00010312202450d11200220173b00302002ad4280808080a006841003220c290000211a200c41086a290000211b200c41106a290000211c200341c0056a41186a2208200c41186a290000370300200341c0056a41106a2214201c370300200341c0056a41086a2209201b3703002003201a3703c005200c102f2002102f200341093a0080062003410a3a0080062003410b3a008006200320032f01c0053b01e005200320032801c2053601e205200320032f01c6053b01e605200320092f01003b01e805200320032d00ca053a00ea052003410c3a008006200320032d00cb053a00eb052003410d3a008006200320032d00cc053a00ec052003410e3a008006200320032d00cd053a00ed052003410f3a008006200320032d00ce053a00ee05200341103a008006200320032d00cf053a00ef05200341113a008006200320142d00003a00f005200320032d00d1053a00f105200341123a008006200341133a008006200320032d00d2053a00f205200341143a008006200320032d00d3053a00f305200341153a008006200320032d00d4053a00f405200341163a008006200320032d00d5053a00f505200341173a008006200320032d00d6053a00f605200341183a008006200320032d00d7053a00f705200341193a008006200320082d00003a00f805200320032d00d9053a00f9052003411a3a0080062003411b3a008006200320032d00da053a00fa052003411c3a008006200320032d00db053a00fb052003411d3a008006200320032d00dc053a00fc052003411e3a008006200320032d00dd053a00fd052003411f3a008006200320032d00de053a00fe05200341203a008006200320032d00df053a00ff0520034190086a41186a220c20032903f80537030020034190086a41106a220220032903f00537030020034190086a41086a220820032903e805370300200320032903e00537039008200341e0006a41186a2214200c290300370300200341e0006a41106a220c2002290300370300200341e0006a41086a220220082903003703002003200329039008370360200341e0056a200a41b00210e8061a20034190036a410a6a200229030037010020034190036a41126a200c29030037010020034190036a411a6a201429030037010020034180023b01900320032003290360370192032000200341e0056a20034190036a108b010c010b200041023a0000200a108e010b200a102f410121084100210241012114410121090c180b200141086a280200210a200141046a28020021142001411c6a280200210c024020022d00000d0020022d00014101470d002001410c6a2802002108200141186a280200211d200141146a280200211e200141106a280200211f200141026a2f01002109200241196a2d00002119200241186a2d00002113200241166a2f01002115200241156a2d00002112200241146a2d00002118200241126a2f0100210d200241116a2d0000210f200241106a2d000021102002410e6a2f010021072002410d6a2d000021042002410c6a2d000021052002410a6a2f01002116200241096a2d00002111200241086a2d00002106200241066a2f01002117200241056a2d0000210b200241046a2d0000210e200241026a2f0100212020032002411a6a2901003703d008200320193a00cf08200320133a00ce08200320153b01cc08200320123a00cb08200320183a00ca082003200d3b01c8082003200f3a00c708200320103a00c608200320073b01c408200320043a00c308200320053a00c208200320163b01c008200320113a00bf08200320063a00be08200320173b01bc082003200b3a00bb082003200e3a00ba08200320203b01b8080240200941ffff03710d00410d210241aacdc7002108410021090c170b024020080d0041112102418da7c0002108410321090c170b0240200841e3004d0d004112210241fba6c0002108410421090c170b200320083602682003200a36026420032014360260200341e0056a41186a200341b8086a41186a290300370300200341e0056a41106a200341b8086a41106a290300370300200341e0056a41086a220a200341b8086a41086a290300370300200320032903b8083703e00520034190036a200341e0006a200341e0056a108f01410121022003280290034101460d0320034190036a41086a28020021212003280294032113200a20034190036a410c6a280200360200200320093b01ec05200320133602e405200341a5e4c0003602e005200341c0056a200341e0056a109001200341083a0080062003410b3a0080062003410c3a008006200320032f01c0053b01e005200320032801c2053601e205200320032d00c6053a00e605200320032800c7053600e705200320032d00cb053a00eb052003410d3a008006200320032d00cc053a00ec052003410e3a008006200320032d00cd053a00ed052003410f3a008006200320032d00ce053a00ee05200320032d00cf053a00ef05200341103a008006200341113a008006200320032d00d0053a00f005200341123a008006200320032d00d1053a00f105200341133a008006200320032d00d2053a00f205200341143a008006200320032d00d3053a00f305200341153a008006200320032d00d4053a00f405200341163a008006200320032d00d5053a00f505200341173a008006200320032d00d6053a00f605200320032d00d7053a00f705200341183a008006200341193a008006200320032d00d8053a00f8052003411a3a008006200320032d00d9053a00f9052003411b3a008006200320032d00da053a00fa052003411c3a008006200320032d00db053a00fb052003411d3a008006200320032d00dc053a00fc052003411e3a008006200320032d00dd053a00fd052003411f3a008006200320032d00de053a00fe05200341203a008006200320032d00df053a00ff0520034190086a41186a220220032903f80537030020034190086a41106a220a20032903f00537030020034190086a41086a220820032903e805370300200320032903e00537039008200341d8086a41186a2002290300370300200341d8086a41106a200a290300370300200341d8086a41086a200829030037030020032003290390083703d808200341003602e805200342013703e005200c200341e0056a10910120032802e405210a20033502e80542208620032802e0052208ad8410032202290018211a20022d0017211820022d0016210d20022f0014210f20022d0013211020022d0012210720022f0010210420022d000f210520022d000e211620022f000c211120022d000b210620022d000a211720022f0008210b20022d0007210e20022d0006212020022f0004212220022d0003212320022d0002212420022f000021252002102f0240200a450d002008102f0b2003201a3703d805200320183a00d7052003200d3a00d6052003200f3b01d405200320103a00d305200320073a00d205200320043b01d005200320053a00cf05200320163a00ce05200320113b01cc05200320063a00cb05200320173a00ca052003200b3b01c8052003200e3a00c705200320203a00c605200320223b01c405200320233a00c305200320243a00c205200320253b01c00520034190036a200341d8086a200341c0056a109201200341e0056a200328029003221420032802980310930120034190086a41086a22192003418c066a29020037030020034190086a41106a222620034194066a29020037030020034190086a41186a22272003419c066a29020037030020034190086a41206a200341a4066a280200360200200320034184066a29020037039008200341e0056a41086a290300211b200341e0056a41206a280200211520032903e005211c20032802fc05211220032802f405210a20032802f0052102024020032802f8052208450d00200341f8086a41206a20034190086a41206a280200360200200341f8086a41186a2027290300370300200341f8086a41106a2026290300370300200341f8086a41086a201929030037030020032003290390083703f8080b0240200328029403450d002014102f0b024002400240024020080d0041012102201f4101460d02200941ffff037141014b0d01200341e0056a200c41b00210e8061a2003419a036a200341e0086a290300370100200341a2036a200341e8086a290300370100200341aa036a200341f0086a29030037010020034180023b019003200320032903d808370192032000200341e0056a20034190036a108b01410021020c030b20034190036a41206a2015360200200341ac036a2012360200200341a4036a200a360200200341bc036a200341f8086a41086a290300370200200341c4036a20034188096a290300370200200341cc036a20034190096a290300370200200341d4036a200341f8086a41206a2802003602002003201c37039003200320083602a803200320023602a003200320032903f8083702b4032003201b370398030240201f4101460d00410b211441c8a6c00021194109211f0c160b410e211441baa6c0002119410a211f2002201e470d15200a201d470d150240024002400240201541014b0d004100210220150e020201020b2015210a4100210203402002200a410176221420026a2219200820194105746a200341b8086a412010ea0641004a1b2102200a20146b220a41014b0d000b0b200820024105746a200341b8086a412010ea06220a450d01200a411f7620026a21020b2009417f6a41ffff0371201541ffff03714b0d120c100b200941ffff0371201541ffff03714d0d0f410f211441afa7c00021194101211f0c150b200341106a2009ad42ffff038342004280a0e5b9c29101420010ed0620032003290310221c4280c0dfda8ee9067c221b3703602003200341106a41086a290300201b201c54ad7c221c3703682003200341b8086a3602402003200341b8086a36029008200320034190086a3602e8052003200341c0006a3602e4052003200341e0006a3602e00520034190036a200341b8086a200341e0056a109401024002402003280290034101470d0020032003290095033703e00520032003419c036a2800003600e70520032d00940321020c010b4104210220034190036a41086a2903004201520d0020034190036a41106a2903002128200328029008210a20034198066a20034190036a41186a29030037030020034190066a2028370300200341e0056a41086a41003a0000200341e9056a200a290000370000200341f1056a200a41086a290000370000200341f9056a200a41106a29000037000020034181066a200a41186a290000370000200341033a00e00541c8e1ca004100200341e0056a108c010b200320032903e0053703c005200320032800e7053600c7050240200241ff01714104470d0020034190036a41186a420037030020034190036a41106a2208420037030020034190036a41086a220242003703002003420037039003418de6c300ad4280808080e000841001220a29000021282002200a41086a2900003703002003202837039003200a102f419ce6c300ad4280808080e000841001220a2900002128200341e0056a41086a2214200a41086a290000370300200320283703e005200a102f200820032903e005222837030020034190086a41086a200229030037030020034190086a41106a202837030020034190086a41186a2014290300370300200320032903900337039008200341086a20034190086a4120109501200328020c210a2003280208210820034180e5c3004110109501200328020421142003280200210920032f01b808211920032d00ba08211520032d00bb08211220032f01bc08211f20032d00be08211e20032d00bf08211d20032f01c008212620032d00c208212720032d00c308212920032f01c408212a20032d00c608212b20032d00c708212c20032f01c808212d20032d00ca08212e20032d00cb08212f20032f01cc08213020032d00ce08213120032d00cf08213220032903d00821284120102d2202450d12200220032903b808370000200241186a200341b8086a41186a290300370000200241106a200341b8086a41106a290300370000200241086a200341b8086a41086a290300370000200341f4056a2014410020091b3602002003419c066a20283702002003419b066a20323a00002003419a066a20313a000020034198066a20303b010020034197066a202f3a000020034196066a202e3a000020034194066a202d3b010020034193066a202c3a000020034192066a202b3a000020034190066a202a3b01002003418f066a20293a00002003418e066a20273a00002003418c066a20263b01002003418b066a201d3a00002003418a066a201e3a000020034188066a201f3b010020034187066a20123a000020034186066a20153a00002003201c3703e8052003201b3703e0052003200a410020081b3602f005200320193b018406200341fc056a428180808010370200200320023602f8052003201a3703d805200320183a00d7052003200d3a00d6052003200f3b01d405200320103a00d305200320073a00d205200320043b01d005200320053a00cf05200320163a00ce05200320113b01cc05200320063a00cb05200320173a00ca052003200b3b01c8052003200e3a00c705200320203a00c605200320223b01c405200320233a00c305200320243a00c205200320253b01c00520034190036a200341d8086a200341c0056a1092012003280290032102200320032802980336026420032002360260200341e0056a200341e0006a1086010240200328029403450d002002102f0b024020032802fc05450d0020032802f805102f0b20034185066a20032903d808370000200341ed056a200341b8086a41086a290300370000200341f5056a200341b8086a41106a290300370000200341fd056a200341b8086a41186a2903003700002003418d066a200341d8086a41086a29030037000020034195066a200341d8086a41106a2903003700002003419d066a200341d8086a41186a290300370000200341023a00e40541012102200341013a00e005200320032903b8083700e50541c8e1ca004100200341e0056a108c010c100b200020023a0000200020032903c005370001200041086a20032800c705360000410121020c010b20004183023b0100200041086a4113360200200041046a41a7a6c000360200200041026a410b3a00000b02402021450d002013102f0b20020d140c150b200041023a00000c160b200141286a280200210c200141246a280200210a02400240024020022d00000d0020022d00014101470d00200141196a290000211a200141186a2d00002120200141176a2d0000211f200141156a2f0000211e200141146a2d0000211d200141136a2d00002122200141116a2f00002123200141106a2d000021242001410f6a2d000021252001410d6a2f000021212001410c6a2d000021262001410b6a2d00002127200141096a2f00002129200141086a2d0000212a200141076a2d0000212b200141056a2f0000212c200141046a2d0000212d200141036a2d0000212e2001412c6a2802002108200141386a2802002132200141346a2802002131200141306a2802002130200141226a2f0100211420012f0001212f200241196a2d00002109200241186a2d00002119200241166a2f01002113200241156a2d00002115200241146a2d00002112200241126a2f01002118200241116a2d0000210d200241106a2d0000210f2002410e6a2f010021102002410d6a2d000021072002410c6a2d000021042002410a6a2f01002105200241096a2d00002116200241086a2d00002111200241066a2f01002106200241056a2d00002117200241046a2d0000210b200241026a2f0100210e20032002411a6a2901003703f008200320093a00ef08200320193a00ee08200320133b01ec08200320153a00eb08200320123a00ea08200320183b01e8082003200d3a00e7082003200f3a00e608200320103b01e408200320073a00e308200320043a00e208200320053b01e008200320163a00df08200320113a00de08200320063b01dc08200320173a00db082003200b3a00da082003200e3b01d8080240024002400240024002402014450d002008450d01200841e4004f0d02200320083602682003200c3602642003200a360260200341e0056a41186a200341d8086a41186a290300370300200341e0056a41106a200341d8086a41106a290300370300200341e0056a41086a220c200341d8086a41086a290300370300200320032903d8083703e00520034190036a200341e0006a200341e0056a108f012003280290034101460d0320034190036a41086a28020021192003280294032109200c20034190036a410c6a280200360200200320143b01ec05200320093602e405200341a5e4c0003602e005200341c0056a200341e0056a109001200341083a0080062003410b3a0080062003410c3a008006200320032f01c0053b01e005200320032801c2053601e205200320032d00c6053a00e605200320032800c7053600e705200320032d00cb053a00eb052003410d3a008006200320032d00cc053a00ec052003410e3a008006200320032d00cd053a00ed052003410f3a008006200320032d00ce053a00ee05200320032d00cf053a00ef05200341103a008006200341113a008006200320032d00d0053a00f005200341123a008006200320032d00d1053a00f105200341133a008006200320032d00d2053a00f205200341143a008006200320032d00d3053a00f305200341153a008006200320032d00d4053a00f405200341163a008006200320032d00d5053a00f505200341173a008006200320032d00d6053a00f605200320032d00d7053a00f705200341183a008006200341193a008006200320032d00d8053a00f8052003411a3a008006200320032d00d9053a00f9052003411b3a008006200320032d00da053a00fa052003411c3a008006200320032d00db053a00fb052003411d3a008006200320032d00dc053a00fc052003411e3a008006200320032d00dd053a00fd052003411f3a008006200320032d00de053a00fe05200320032d00df053a00ff05200341203a00800620034190086a41186a220220032903f80537030020034190086a41106a220a20032903f00537030020034190086a41086a220820032903e805370300200320032903e00537039008200341f8086a41186a2002290300370300200341f8086a41106a200a290300370300200341f8086a41086a200829030037030020032003290390083703f8082003201a3703d805200320203a00d7052003201f3a00d6052003201e3b01d4052003201d3a00d305200320223a00d205200320233b01d005200320243a00cf05200320253a00ce05200320213b01cc05200320263a00cb05200320273a00ca05200320293b01c8052003202a3a00c7052003202b3a00c6052003202c3b01c4052003202d3a00c3052003202e3a00c2052003202f3b01c00520034190036a200341f8086a200341c0056a109201200341e0056a200328029003221320032802980310930120082003418c066a290200370300200a20034194066a29020037030020022003419c066a29020037030020034190086a41206a2202200341a4066a280200360200200320034184066a29020037039008200c290300211b200341e0056a41206a280200211520032903e005211c20032802fc05210820032802f405211220032802f005210a024020032802f805220c450d00200341e0006a41206a2002280200360200200341e0006a41186a20034190086a41186a290300370300200341e0006a41106a20034190086a41106a290300370300200341e0006a41086a20034190086a41086a29030037030020032003290390083703600b0240200328029403450d002013102f0b200c0d04201441014b0d0520004183023b0100200041086a4111360200200041046a419ea7c000360200200041026a41023a00000c0f0b20004183023b0100200041086a410d360200200041046a41aacdc700360200200041026a41003a00000c060b20004183023b0100200041086a4111360200200041046a418da7c000360200200041026a41033a00000c050b20004183023b0100200041086a4112360200200041046a41fba6c000360200200041026a41043a00000c040b200020034190036a410472220c290200370200200041086a200c41086a2802003602000c0d0b20034190036a41206a200341e0006a41206a28020036020020034190036a41186a200341e0006a41186a29030037030020034190036a41106a200341e0006a41106a29030037030020034190036a41086a200341e0006a41086a290300370300200320032903603703900302400240024002400240024020304101470d00200a2031470d0120122032470d01201520144f0d0c201541014b0d034100210220150e020204020b20004183023b0100200041086a410b360200200041046a41c8a6c000360200200041026a41093a00000c0e0b20004183023b0100200041086a410e360200200041046a41baa6c000360200200041026a410a3a00000c0d0b200341e0056a41186a200341d8086a41186a290300370300200341e0056a41106a200341d8086a41106a290300370300200341e0056a41086a200341d8086a41086a290300370300200320032903d8083703e00541002114200341e0056a210a0c020b2015210a4100210203402002200a410176221420026a2213200c20134105746a200341d8086a412010ea0641004a1b2102200a20146b220a41014b0d000b0b0240200c20024105746a200341d8086a412010ea0622140d0020004183023b0100200041086a410f360200200041046a41afa7c000360200200041026a41013a00000c0b0b200341e0056a41186a200341d8086a41186a290300370300200341e0056a41106a200341d8086a41106a290300370300200341e0056a41086a200341d8086a41086a290300370300200320032903d8083703e005200341e0056a210a20152014411f7620026a2214490d080b024020152008470d00200841016a22022008490d14200841017422132002201320024b1b220241ffffff3f712002470d14200241057422024100480d140240024020080d002002102d210c0c010b200c200841057420021031210c0b200c450d12200241057621080b200c20144105746a220241206a2002201520146b41057410e9061a200241186a200a41186a290000370000200241106a200a41106a290000370000200241086a200a41086a2900003700002002200a290000370000200341e0056a41206a201541016a360200200341fc056a2008360200200341f4056a20323602002003418c066a20034190036a41086a29030037020020034194066a20034190036a41106a2903003702002003419c066a20034190036a41186a290300370200200341a4066a20034190036a41206a2802003602002003201b3703e8052003201c3703e0052003200c3602f805200320313602f0052003200329039003370284062003201a3703d805200320203a00d7052003201f3a00d6052003201e3b01d4052003201d3a00d305200320223a00d205200320233b01d005200320243a00cf05200320253a00ce05200320213b01cc05200320263a00cb05200320273a00ca05200320293b01c8052003202a3a00c7052003202b3a00c6052003202c3b01c4052003202d3a00c3052003202e3a00c2052003202f3b01c00520034190086a200341f8086a200341c0056a109201200328029008210220032003280298083602bc08200320023602b808200341e0056a200341b8086a1086010240200328029408450d002002102f0b02402008450d00200c102f0b20034185066a20032903f808370000200341ed056a200341d8086a41086a290300370000200341f5056a200341d8086a41106a290300370000200341fd056a200341d8086a41186a2903003700002003418d066a200341f8086a41086a29030037000020034195066a200341f8086a41106a2903003700002003419d066a200341f8086a41186a290300370000200341033a00e405200341013a00e005200320032903d8083700e505200341ac066a2032360200200341a8066a203136020041c8e1ca004100200341e0056a108c010c080b20304101460d02200341306a2014ad42004280a0e5b9c29101420010ed0620032003290330221c4280c0dfda8ee9067c221b370390082003200341306a41086a290300201b201c54ad7c221c370398082003200341d8086a3602402003200341d8086a3602b8082003200341b8086a3602e8052003200341c0006a3602e405200320034190086a3602e00520034190036a200341d8086a200341e0056a109401024002402003280290034101470d0020032003290095033703e00520032003419c036a2800003600e70520032d009403210c0c010b4104210c20034190036a41086a2903004201520d0020034190036a41106a290300212820032802b808210220034198066a20034190036a41186a29030037030020034190066a2028370300200341e0056a41086a41003a0000200341e9056a2002290000370000200341f1056a200241086a290000370000200341f9056a200241106a29000037000020034181066a200241186a290000370000200341033a00e00541c8e1ca004100200341e0056a108c010b200320032903e0053703c005200320032800e7053600c7050240200c41ff01714104470d0020034190036a41186a420037030020034190036a41106a220a420037030020034190036a41086a220c42003703002003420037039003418de6c300ad4280808080e00084100122022900002128200c200241086a29000037030020032028370390032002102f419ce6c300ad4280808080e00084100122022900002128200341e0056a41086a2208200241086a290000370300200320283703e0052002102f200a20032903e005222837030020034190086a41086a200c29030037030020034190086a41106a202837030020034190086a41186a2008290300370300200320032903900337039008200341286a20034190086a4120109501200328022c21022003280228210a200341206a4180e5c3004110109501200328022421082003280220211420032f01d808211320032d00da08211520032d00db08211220032f01dc08211820032d00de08210d20032d00df08210f20032f01e008211020032d00e208210720032d00e308210420032f01e408210520032d00e608211620032d00e708211120032f01e808210620032d00ea08211720032d00eb08210b20032f01ec08210e20032d00ee08213020032d00ef08213120032903f00821284120102d220c450d11200c20032903d808370000200c41186a200341d8086a41186a290300370000200c41106a200341d8086a41106a290300370000200c41086a200341d8086a41086a290300370000200341f4056a2008410020141b3602002003419c066a20283702002003419b066a20313a00002003419a066a20303a000020034198066a200e3b010020034197066a200b3a000020034196066a20173a000020034194066a20063b010020034193066a20113a000020034192066a20163a000020034190066a20053b01002003418f066a20043a00002003418e066a20073a00002003418c066a20103b01002003418b066a200f3a00002003418a066a200d3a000020034188066a20183b010020034187066a20123a000020034186066a20153a00002003201c3703e8052003201b3703e005200320024100200a1b3602f005200320133b018406200341fc056a4281808080103702002003200c3602f8052003201a3703d805200320203a00d7052003201f3a00d6052003201e3b01d4052003201d3a00d305200320223a00d205200320233b01d005200320243a00cf05200320253a00ce05200320213b01cc05200320263a00cb05200320273a00ca05200320293b01c8052003202a3a00c7052003202b3a00c6052003202c3b01c4052003202d3a00c3052003202e3a00c2052003202f3b01c00520034190036a200341f8086a200341c0056a109201200328029003210c2003200328029803360294082003200c36029008200341e0056a20034190086a1086010240200328029403450d00200c102f0b024020032802fc05450d0020032802f805102f0b20034185066a20032903f808370000200341ed056a200341d8086a41086a290300370000200341f5056a200341d8086a41106a290300370000200341fd056a200341d8086a41186a2903003700002003418d066a200341f8086a41086a29030037000020034195066a200341f8086a41106a2903003700002003419d066a200341f8086a41186a290300370000200341023a00e405200341013a00e005200320032903d8083700e50541c8e1ca004100200341e0056a108c010c080b2000200c3a0000200020032903c005370001200041086a20032800c7053600000c090b200041023a00000b4100211441012102200c450d0a200a102f0c0a0b20004183023b0100200041086a4113360200200041046a41a7a6c000360200200041026a410b3a00000c060b2001412c6a2802002108200141286a280200210c200141246a280200210a200141346a2802002119200141306a2802002109200141226a2f01002114200341c0006a41186a200141196a290000370300200341c0006a41106a200141116a290000370300200341c0006a41086a200141096a2900003703002003200129000137034002400240024020022d00000d0020022d00014101470d00200241196a2d00002113200241186a2d00002115200241166a2f01002112200241156a2d00002118200241146a2d0000210d200241126a2f0100210f200241116a2d00002110200241106a2d000021072002410e6a2f010021042002410d6a2d000021052002410c6a2d000021162002410a6a2f01002111200241096a2d00002106200241086a2d00002117200241066a2f0100210b200241056a2d0000210e200241046a2d00002120200241026a2f0100211f20032002411a6a2901003703d008200320133a00cf08200320153a00ce08200320123b01cc08200320183a00cb082003200d3a00ca082003200f3b01c808200320103a00c708200320073a00c608200320043b01c408200320053a00c308200320163a00c208200320113b01c008200320063a00bf08200320173a00be082003200b3b01bc082003200e3a00bb08200320203a00ba082003201f3b01b8080240024002400240201441ffff0371450d002008450d01200841e4004f0d02200320083602682003200c3602642003200a360260200341e0056a41186a200341b8086a41186a290300370300200341e0056a41106a200341b8086a41106a290300370300200341e0056a41086a220c200341b8086a41086a290300370300200320032903b8083703e00520034190036a200341e0006a200341e0056a108f012003280290034101470d03200020034190036a410472220c290200370200200041086a200c41086a2802003602000c060b20004183023b0100200041086a410d360200200041046a41aacdc700360200200041026a41003a00000c040b20004183023b0100200041086a4111360200200041046a418da7c000360200200041026a41033a00000c030b20004183023b0100200041086a4112360200200041046a41fba6c000360200200041026a41043a00000c020b20034190036a41086a28020021152003280294032113200c20034190036a410c6a280200360200200320143b01ec05200320133602e405200341a5e4c0003602e005200341c0056a200341e0056a109001200341083a0080062003410b3a0080062003410c3a008006200320032f01c0053b01e005200320032801c2053601e205200320032d00c6053a00e605200320032800c7053600e705200320032d00cb053a00eb052003410d3a008006200320032d00cc053a00ec052003410e3a008006200320032d00cd053a00ed052003410f3a008006200320032d00ce053a00ee05200320032d00cf053a00ef05200341103a008006200341113a008006200320032d00d0053a00f005200341123a008006200320032d00d1053a00f105200341133a008006200320032d00d2053a00f205200341143a008006200320032d00d3053a00f305200341153a008006200320032d00d4053a00f405200341163a008006200320032d00d5053a00f505200341173a008006200320032d00d6053a00f605200320032d00d7053a00f705200341183a008006200341193a008006200320032d00d8053a00f8052003411a3a008006200320032d00d9053a00f9052003411b3a008006200320032d00da053a00fa052003411c3a008006200320032d00db053a00fb052003411d3a008006200320032d00dc053a00fc052003411e3a008006200320032d00dd053a00fd052003411f3a008006200320032d00de053a00fe05200320032d00df053a00ff05200341203a00800620034190086a41186a220220032903f80537030020034190086a41106a220a20032903f00537030020034190086a41086a220820032903e805370300200320032903e00537039008200341d8086a41186a2002290300370300200341d8086a41106a200a290300370300200341d8086a41086a200829030037030020032003290390083703d8082003200341c0006a41186a2903003703d8052003200341c0006a41106a2903003703d0052003200341c0006a41086a2903003703c805200320032903403703c005200341a0096a200341d8086a200341c0056a109201200341e0056a20032802a009221420032802a80910930120082003418c066a290200370300200a20034194066a29020037030020022003419c066a29020037030020034190086a41206a2212200341a4066a280200360200200320034184066a2902003703900802400240024020032802f8052202450d00200c290300211a200341e0056a41206a280200211820032903e005211b20032802fc05210a20032802f405210820032802f005210c200341e0006a41206a2012280200360200200341e0006a41186a221220034190086a41186a290300370300200341e0006a41106a220d20034190086a41106a290300370300200341e0006a41086a220f20034190086a41086a2903003703002003200329039008370360024020032802a409450d002014102f0b200341f8086a41086a200f290300221c370300200341f8086a41106a200d2903002228370300200341f8086a41186a20122903002233370300200341f8086a41206a2214200341e0006a41206a28020036020020034190036a41206a2018360200200341ac036a200a360200200341a4036a20083602002003200329036022343703f8082003201b37039003200320023602a8032003201a370398032003200c3602a003200341cc036a2033370200200341c4036a2028370200200341bc036a201c370200200341d4036a2014280200360200200320343702b403410e211441baa6c0002112410a21180240200c2009470d0020082019470d00200341b4036a220c200341b8086a412010ea06450d03410821184188d9c9002112410821140b20004183023b0100200041086a2014360200200041046a2012360200200041026a20183a0000200a450d012002102f0c010b024020032802a409450d002014102f0b200041086a4108360200200041046a4184f5c000360200200041026a41073a000020004183023b01000b2015450d032013102f0c030b2003201b3703f8082003201a370380090240201b201a84500d002003200c36029008200341e0006a200c200341f8086a20034190086a10960120032903604201520d002003290368211a20034198066a200341e0006a41106a29030037030020034190066a201a370300200341e0056a41086a41003a0000200341e9056a200c290000370000200341f1056a200c41086a290000370000200341f9056a200c41106a29000037000020034181066a200c41186a290000370000200341033a00e00541c8e1ca004100200341e0056a108c010b200341c0056a41186a200341c0006a41186a290300370300200341c0056a41106a200341c0006a41106a290300370300200341c0056a41086a200341c0006a41086a290300370300200320032903403703c005200341e0056a200341d8086a200341c0056a10920120033502e80542208620032802e005220cad841005024020032802e405450d00200c102f0b20034185066a20032903d808370000200341ed056a200341b8086a41086a290300370000200341f5056a200341b8086a41106a290300370000200341fd056a200341b8086a41186a2903003700002003418d066a200341d8086a41086a29030037000020034195066a200341d8086a41106a2903003700002003419d066a200341d8086a41186a290300370000200341053a00e405200341013a00e005200320032903b8083700e505200341ac066a2019360200200341a8066a200936020041c8e1ca004100200341e0056a108c01200041043a0000024020032802ac03450d0020032802a803102f0b2015450d022013102f0c020b200041023a00000b200c450d00200a102f0b410021094101210241012108410121140c150b200020034190036a410472220a290200370200200041086a200a41086a280200360200200c108e01200c102f4100210841012114410121090c140b20004183023b0100200041086a4111360200200041046a419ea7c000360200200041026a41023a00000c020b419ae3c300411e41f8b4ca001039000b200041043a000020190d020c030b2008450d00200c102f0b2019450d010b2009102f0b41002114410121020b41012108410121090c0c0b200341e0056a200c41b00210e8061a200341ea006a200341d8086a41086a290300370100200341f2006a200341e8086a290300370100200341fa006a200341f0086a29030037010020034180023b0160200320032903d808370162200341c0006a200341e0056a200341e0006a108b01200329039003211b200320034190036a41086a290300221c370398082003201b370390080240201b201c84500d002003200341b4036a22023602c005200341e0006a200220034190086a200341c0056a10960120032903604201520d002003290368211b20034198066a200341e0006a41106a29030037030020034190066a201b370300200341e0056a41086a41003a0000200341e9056a2002290000370000200341f1056a200241086a290000370000200341f9056a200241106a29000037000020034181066a200241186a290000370000200341033a00e00541c8e1ca004100200341e0056a108c010b2003201a3703d805200320183a00d7052003200d3a00d6052003200f3b01d405200320103a00d305200320073a00d205200320043b01d005200320053a00cf05200320163a00ce05200320113b01cc05200320063a00cb05200320173a00ca052003200b3b01c8052003200e3a00c705200320203a00c605200320223b01c405200320233a00c305200320243a00c205200320253b01c005200341e0056a200341d8086a200341c0056a10920120033502e80542208620032802e0052202ad841005024020032802e405450d002002102f0b20034185066a20032903d808370000200341ed056a200341b8086a41086a290300370000200341f5056a200341b8086a41106a290300370000200341fd056a200341b8086a41186a2903003700002003418d066a200341d8086a41086a29030037000020034195066a200341d8086a41106a2903003700002003419d066a200341d8086a41186a290300370000200341043a00e405200341013a00e005200320032903b8083700e505200341ac066a201d360200200341a8066a201e360200200341b0066a2003290340370300200341b8066a200341c0006a41086a2802003602004100210241c8e1ca004100200341e0056a108c0120032802ac03450d0020032802a803102f0b200041043a000002402021450d002013102f0b2002450d07200c108e010c070b200341e0056a41186a200341b8086a41186a290300370300200341e0056a41106a200341b8086a41106a290300370300200341e0056a41086a200341b8086a41086a290300370300200320032903b8083703e00520152002490d01024020152012470d00201241016a220a2012490d0320124101742214200a2014200a4b1b220a41ffffff3f71200a470d03200a410574220a4100480d030240024020120d00200a102d21080c010b20082012410574200a103121080b2008450d01200320083602a8032003200a4105763602ac030b200820024105746a220a41206a200a201520026b41057410e9061a200a41186a200341e0056a41186a290300370000200a41106a200341e0056a41106a290300370000200a41086a200341e0056a41086a290300370000200a20032903e0053700002003201541016a3602b003200341e0056a20034190036a41c80010e8061a2003201a3703d805200320183a00d7052003200d3a00d6052003200f3b01d405200320103a00d305200320073a00d205200320043b01d005200320053a00cf05200320163a00ce05200320113b01cc05200320063a00cb05200320173a00ca052003200b3b01c8052003200e3a00c705200320203a00c605200320223b01c405200320233a00c305200320243a00c205200320253b01c005200341e0006a200341d8086a200341c0056a1092012003280260210220032003280268360294082003200236029008200341e0056a20034190086a10860102402003280264450d002002102f0b0240200341fc056a280200450d0020032802f805102f0b20034185066a20032903d808370000200341ed056a200341b8086a41086a290300370000200341f5056a200341b8086a41106a290300370000200341fd056a200341b8086a41186a2903003700002003418d066a200341d8086a41086a29030037000020034195066a200341d8086a41106a2903003700002003419d066a200341d8086a41186a290300370000200341033a00e405200341013a00e005200320032903b8083700e505200341ac066a201d360200200341a8066a201e36020041c8e1ca004100200341e0056a108c01200041043a00000c040b1036000b419ae3c300411e41f8b4ca001039000b1038000b20004183023b0100200041086a2014360200200041046a2019360200200041026a201f3a00002012450d002008102f0b2021450d002013102f0b200c108e010b200c102f410021084101210241012114410121090c020b20004183023b0100200041086a2002360200200041046a2008360200200041026a20093a00000b200c108e01200c102f41002108410121020240200a0d0041012114410121090c010b2014102f41012114410121090b4101210a0c020b0240200a200c460d000340200c108d01200a200c41b0026a220c470d000b0b0240200b450d002007102f0b200341013a00e405200341013a00e00541c8e1ca004100200341e0056a108c01200041043a00000b4100210a410121024101210841012114410121090b024020012d0000417f6a220c41044b0d0002400240024002400240200c0e050001020304000b200a450d0402402001410c6a2802002202450d00200141046a280200210c200241b0026c21020340200c108d01200c41b0026a210c200241d07d6a22020d000b0b200141086a280200450d042001280204102f0c040b2002450d03200141046a220c280200108e01200c280200102f0c030b2008450d020240200141086a280200450d00200141046a280200102f0b2001411c6a220c280200108e01200c280200102f0c020b2014450d01200141286a280200450d01200141246a280200102f0c010b2009450d00200141286a280200450d00200141246a280200102f0b200341b0096a24000bb3b10309057f017e137f047e017f047e057f077e087f230041b00b6b2203240002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020012802000e1b020301040506070b0c0d0e0f1011121314151617010101181a1900020b200341f0056a41086a2204200141146a290200370300200341f0056a41106a22052001411c6a290200370300200341f0056a41186a2206200141246a290200370300200341f0056a41206a22072001412c6a28020036020020032001410c6a2902003703f0052002411a6a2901002108200241196a2d00002109200241186a2d0000210a200241166a2f0100210b200241156a2d0000210c200241146a2d0000210d200241126a2f0100210e200241116a2d0000210f200241106a2d000021102002410e6a2f010021112002410d6a2d000021122002410c6a2d000021132002410a6a2f01002114200241096a2d00002115200241086a2d00002116200241066a2f01002117200241056a2d00002118200241046a2d00002119200241026a2f0100211a20022d0001211b20022d000021020240024002400240200141086a2802000e0400010203000b20034180096a41146a41013602002003420137028409200341b4d8c90036028009200341043602fc06200341fcdbc9003602f8062003200341f8066a3602900920034180096a41e8d8c9001043000b2003200837038804200320093a0087042003200a3a0086042003200b3b0184042003200c3a0083042003200d3a0082042003200e3b0180042003200f3a00ff03200320103a00fe03200320113b01fc03200320123a00fb03200320133a00fa03200320143b01f803200320153a00f703200320163a00f603200320173b01f403200320183a00f303200320193a00f2032003201a3b01f003410121040240201b41ff01714101470d00200241ff01710d0020034188026a41186a200341f0036a41186a290300220837030020034188026a41106a200341f0036a41106a290300221c37030020034188026a41086a200341f0036a41086a290300221d370300200320032903f003221e3703880220034180096a41186a200837030020034180096a41106a201c37030020034180096a41086a201d3703002003201e37038009200020034180096a10ae014101211b0c5a0b200041023a00004101211b410121050c700b200341f8076a41206a2007280200360200200341f8076a41186a2006290300370300200341f8076a41106a2005290300370300200341f8076a41086a2004290300370300200320032903f0053703f807200241ff01710d1b201b41ff01714101470d1b20034180096a41206a200341f8076a41206a28020036020020034180096a41186a200341f8076a41186a29030037030020034180096a41106a200341f8076a41106a29030037030020034180096a41086a200341f8076a41086a290300370300200320032903f80737038009200341f8066a20034180096a10bb01200341f0036a41086a220220034181076a290000370300200341f0036a41106a221b20034189076a290000370300200341f0036a41186a220420034191076a290000370300200320032900f9063703f00320032d00f8064101460d08200341f0046a41186a2004290300370300200341f0046a41106a201b290300370300200341f0046a41086a2002290300370300200320032903f0033703f0042000200341f0046a10ae014101211b0c580b200141c8006a290300211e200141c0006a290300211f200141386a290300211c200141306a290300211d200141d0006a2802002120200341f8076a41206a2007280200360200200341f8076a41186a2006290300370300200341f8076a41106a2005290300370300200341f8076a41086a2004290300370300200320032903f0053703f807200241ff01710d1b201b41ff01714101470d1b200320083703e802200320093a00e7022003200a3a00e6022003200b3b01e4022003200c3a00e3022003200d3a00e2022003200e3b01e0022003200f3a00df02200320103a00de02200320113b01dc02200320123a00db02200320133a00da02200320143b01d802200320153a00d702200320163a00d602200320173b01d402200320183a00d302200320193a00d2022003201a3b01d002201d42808084fea6dee111544100201c501b0d1c20034180096a41206a200341f8076a41206a28020036020020034180096a41186a200341f8076a41186a29030037030020034180096a41106a200341f8076a41106a29030037030020034180096a41086a200341f8076a41086a290300370300200320032903f80737038009200341f8066a20034180096a10bb0120034188026a41086a220220034181076a29000037030020034188026a41106a220420034189076a29000037030020034188026a41186a220520034191076a290000370300200320032900f906370388024101211b20032d00f8064101460d08200341f0046a41186a2005290300370300200341f0046a41106a2004290300370300200341f0046a41086a200229030037030020032003290388023703f00441adc5c300ad4280808080f00084220810012202290008212120022d0007210420022d0006210520022f0004210620022d0003210720022d0002210920022f0000210a2002102f2008100122022900002108200341a8026a41086a200241086a290000370300200320083703a8022002102f4120102d2202450d63200220032903f004370000200241186a200341f0046a41186a290300370000200241106a200341f0046a41106a290300370000200241086a200341f0046a41086a2903003700002002ad42808080808004841003221b2900002108201b41086a2900002122201b41106a2900002123200341f0036a41186a220b201b41186a290000370300200341f0036a41106a220c2023370300200341f0036a41086a220d2022370300200320083703f003201b102f2002102f41c000102d2202450d63200220043a0007200220053a0006200220063b0004200220073a0003200220093a00022002200a3b000020022021370008200220032903a802370010200241186a200341a8026a41086a290300370000200220032903f003370020200241286a200d290300370000200241306a200c290300370000200241386a200b290300370000200341d8016a200241c00041c8e1ca004100410010b50120032802d80121042002102f4101211b20044101460d1d20034180096a200341d0026a200341f0046a201d201c410110f20220032003290081093703f003200320034180096a41086a2800003600f703024020032d00800922024104470d0041adc5c300ad4280808080f000842208100122022900002121200341a8026a41086a200241086a290000370300200320213703a8022002102f2008100122022d000f210420022d000e210520022f000c210620022d000b210720022d000a210920022f0008210a20022d0007210b20022d0006210c20022f0004210d20022d0003210e20022d0002210f20022f000021102002102f4120102d2202450d64200220032903f004370000200241186a200341f0046a41186a290300370000200241106a200341f0046a41106a290300370000200241086a200341f0046a41086a2903003700002002ad42808080808004841003221b2900002108201b41086a2900002121201b41106a290000212220034188026a41186a2211201b41186a29000037030020034188026a41106a2212202237030020034188026a41086a221320213703002003200837038802201b102f2002102f41c000102d2202450d64200220032903a802370000200241086a200341a8026a41086a2903003700002002200b3a00172002200c3a00162002200d3b00142002200e3a00132002200f3a0012200220103b0010200220043a001f200220053a001e200220063b001c200220073a001b200220093a001a2002200a3b00182002200329038802370020200241286a2013290300370000200241306a2012290300370000200241386a2011290300370000200341d0016a200241c00041c8e1ca004100410010b50120032802d001211b2002102f0240201b4101460d0041adc5c300ad4280808080f00084220810012202290000212120034188026a41086a200241086a29000037030020032021370388022002102f2008100122022900002108200341b8026a41086a200241086a290000370300200320083703b8022002102f4120102d2202450d65200220032903f004370000200241186a200341f0046a41186a290300370000200241106a200341f0046a41106a290300370000200241086a200341f0046a41086a2903003700002002ad42808080808004841003221b2900002108201b41086a2900002121201b41106a2900002122200341f0036a41186a2204201b41186a290000370300200341f0036a41106a22052022370300200341f0036a41086a2021370300200320083703f003201b102f2002102f41c000102d2202450d652002200329038802370000200241086a20034188026a41086a290300370000200220032903b802370010200241186a200341b8026a41086a290300370000200220032903f003370020200241286a200341f0036a41086a290300370000200241306a2005290300370000200241386a20042903003700004110102d221b450d65201b201d370000201b201c370008201b411041201031221b450d65201b201f370010201b41186a201e370000201b412041c0001031221b450d65201b20203600202002ad4280808080800884201bad4280808080c004841004201b102f2002102f20034180096a41186a200341f0046a41186a29030037030020034180096a41106a200341f0046a41106a29030037030020034180096a41086a200341f0046a41086a290300370300200320032903f00437038009200341f8066a20034180096a10ae01200041043a00004101211b0c590b20034188096a4117360200200341e6b4c60036028409200341013a00820920034183363b01800941a8c3c100413720034180096a41e0c3c10041f0c3c100103e000b200020023a0000200020032903f003370001200041086a20032800f7033600004101211b0c570b000b200141106a29030021082001410c6a280200211520022d0001210420022d0000211b0240024002400240024002400240024002400240200141086a2802002205417f6a0e0a00010203040506070809000b02402004201b41ff01714100477241ff01710d00200041043a00004101211b0c750b200041023a00004101211b0c740b2008a721020240201b41ff01710d004101211b200441ff01714101470d00200041043a00002002450d740c730b200041023a00004101211b20020d720c730b02402004201b41ff01714100477241ff01710d004108102d2202450d692002200837000041bfa9c400ad4280808080a001842002ad428080808080018410042002102f200041043a00004101211b0c730b200041023a00004101211b0c720b2008a72102024002402004201b41ff01714100477241ff01710d0020034180096a2008428080808070832015ad84221c10121073200328028009221b450d6f2003280284092104200320034188096a2802003602f4052003201b3602f005200341106a200341f0056a10e60120032802100d6e20032802f405220920032802142206490d6e2006417f4c0d240240024020060d00410121070c010b200610332207450d6a200720032802f005220a200610e8061a2003200920066b3602f4052003200a20066a3602f0050b2007450d6e200341086a200341f0056a10e6012006ad221d422086201d84221da7210620032802080d6c20032802f405220a200328020c2209490d6c2009417f4c0d240240024020090d004101210b0c010b20091033220b450d6a200b20032802f005220c200910e8061a2003200a20096b220a3602f4052003200c20096a3602f0050b200b450d6c2009ad221e422086201e84a721090240024002400240200a4104490d00200320032802f005220c41046a3602f0052003200a417c6a220d3602f405200d4104490d012003200c41086a3602f005200c28000421162003200a41786a220d3602f405200d4104490d032003200a41746a3602f4052003200c410c6a3602f005200c28000821172003200341f0056a10e6012003280200450d020c6f0b02402009450d00200b102f0b20060d700c710b02402009450d00200b102f0b20060d6f0c700b2003280204221420032802f405410c6e220a200a20144b1b2213ad420c7e221e422088a70d25201ea7220a417f4c0d2502400240200a0d004104210f0c010b200a102d220f450d6b200a410c6e21130b024002402014450d004100210e4100210d4100210c0340200341f8076a200341f0056a10f30220032d00f8074101460d0220032802f40522104104490d02200c41016a210a20032900f907211e20032802f0052211280000211220032010417c6a3602f4052003201141046a3602f0050240200c2013470d00200e200a200e200a4b1bad420c7e221f422088a70d58201fa722104100480d5802400240200c0d002010102d210f0c010b200f200d20101031210f0b200f450d6e2010410c6e21130b200f200d6a220c201e370200200c41086a2012360200200e41026a210e200d410c6a210d200a210c2014200a470d000b0b200f450d6d201d422088a7210c02402004450d00201b102f0b410f211b41f1e4c30021044100210a200c4104470d6c2007418ca9c300460d03200728000041eede91ab06460d030c6c0b2013450d6c200f102f0c6c0b02402009450d00200b102f0b2006450d6e0c6d0b200041023a00000c6f0b411f211b0240201641e7014f0d0041d2e4c30021044101210a0c690b0240201641e701470d0020170d004194e4c30021044103210a0c690b41c9a9c400ad4280808080d00084201c1004200341f0036a41186a4200370300200341f0036a41106a220a4200370300200341f0036a41086a221b4200370300200342003703f003418de6c300ad4280808080e0008410012204290000211c200341b8026a41086a220c200441086a2900003703002003201c3703b8022004102f201b200c290300370300200320032903b8023703f00341f883c400ad4280808080f0018410012204290000211c200341a8026a41086a220c200441086a2900003703002003201c3703a8022004102f200a20032903a802221c37030020034188026a41086a201b29030037030020034188026a41106a201c37030020034188026a41186a200c290300370300200320032903f00337038802200341013a00800920034188026aad428080808080048420034180096aad428080808010841004200341003a008009200341023a00840941c8e1ca00410020034180096a108c0102402006450d002007102f0b02402009450d00200b102f0b02402013450d00200f102f0b200041043a00000c6e0b2008a7210202402004201b41ff01714100477241ff01710d0041c9a9c400ad4280808080d000842008428080808070832015ad841004200341f0036a41186a4200370300200341f0036a41106a22054200370300200341f0036a41086a221b4200370300200342003703f003418de6c300ad4280808080e00084100122042900002108200341b8026a41086a2206200441086a290000370300200320083703b8022004102f201b2006290300370300200320032903b8023703f00341f883c400ad4280808080f00184100122042900002108200341a8026a41086a2206200441086a290000370300200320083703a8022004102f200520032903a802220837030020034188026a41086a201b29030037030020034188026a41106a200837030020034188026a41186a2006290300370300200320032903f003370388024101211b200341013a00800920034188026aad428080808080048420034180096aad428080808010841004200341003a008009200341023a00840941c8e1ca00410020034180096a108c01200041043a000020020d700c710b200041023a00004101211b20020d6f0c700b2004201b41ff01714100477241ff01710d212008422088a721042008a721070240024020154101460d0041cea9c400ad4280808080d0018410050c010b4104102d2202450d662002200736000020024104410810312202450d662002200436000441cea9c400ad4280808080d001842002ad428080808080018410042002102f0b4200211c200341f0036a41186a4200370300200341f0036a41106a22064200370300200341f0036a41086a22024200370300200342003703f003418de6c300ad4280808080e000841001221b290000211d2002201b41086a2900003703002003201d3703f003201b102f41bae6c300ad4280808080e000841001221b290000211d200341a8026a41086a2209201b41086a2900003703002003201d3703a802201b102f200620032903a802221d37030020034188026a41086a200229030037030020034188026a41106a201d37030020034188026a41186a2009290300370300200320032903f0033703880220034180096a20034188026a10f4020240024020032802800922060d0041002102410421064100211b0c010b200329028409221c422088a7211b201ca721020b200341f8076a41026a200341f0056a41026a2d00003a0000200341f0046a41086a20034180096a41086a290200370300200341f0046a41106a20034180096a41106a280200360200200320032f00f0053b01f80720032003290280093703f00402400240201b2002460d00201c422088211d0c010b02402002201ca7470d00200241016a221b2002490d5120024101742209201b2009201b4b1bad42247e221d422088a70d51201da7221b4100480d510240024020020d00201b102d21060c010b2006200241246c201b103121060b2006450d67201c42808080807083201b41246ead84211c0b201c422088221da7211b0b2006201b41246c6a220241043a00002002200436020c2002200736020820022015360204200220032f01f8073b0001200241036a200341fa076a2d00003a0000200220032903f004370210200241186a200341f0046a41086a290300370200200241206a200341f0046a41106a280200360200200341f0036a41186a4200370300200341f0036a41106a22044200370300200341f0036a41086a22024200370300200342003703f003418de6c300ad4280808080e000841001221b290000211e200341b8026a41086a2207201b41086a2900003703002003201e3703b802201b102f20022007290300370300200320032903b8023703f00341bae6c300ad4280808080e000841001221b290000211e200341a8026a41086a2207201b41086a2900003703002003201e3703a802201b102f200420032903a802221e37030020034188026a41086a200229030037030020034188026a41106a201e37030020034188026a41186a2007290300370300200320032903f00337038802200341203602fc07200320034188026a3602f8072006201da7220241016a221b200341f8076a10f5020240201b2002490d00200241246c41246a211b2006210203400240024020022d0000220441044b0d0002400240024020040e050400010204040b2002410c6a280200450d03200241086a280200102f0c030b2002410c6a280200450d02200241086a280200102f0c020b2002410c6a280200450d01200241086a280200102f0c010b200241086a280200450d00200241046a280200102f0b200241246a2102201b415c6a221b0d000b0b0240201ca7450d002006102f0b200041043a00004101211741002116410121180c6d0b2008422088a7210b2008a7210c024002402004201b41ff01714100477241ff01710d000240200b41186c2202450d00201520026a210620034180096aad42808080801084211d20034188026aad4280808080800484211e200341f0036a41106a2104201521020340200241086a221b350200422086200235020084200241146a3502004220862002410c6a3502008410040240201b2802004105470d0002402002280200221b41c9a9c400460d00201b41c9a9c400410510ea060d010b200341f0036a41186a2209420037030020044200370300200341f0036a41086a221b4200370300200342003703f003418de6c300ad4280808080e0008410012207290000211c200341b8026a41086a220a200741086a2900003703002003201c3703b8022007102f201b200a290300370300200320032903b8023703f00341f883c400ad4280808080f0018410012207290000211c200341a8026a41086a220a200741086a2900003703002003201c3703a8022007102f200420032903a802370000200441086a200a29030037000020034188026a41086a201b29030037030020034188026a41106a200429030037030020034188026a41186a2009290300370300200320032903f00337038802200341013a008009201e201d10040b200241186a22022006470d000b0b200041043a0000200b450d01200b41186c21002015210203400240200241046a280200450d002002280200102f0b0240200241106a280200450d002002410c6a280200102f0b200241186a2102200041686a22000d000c020b0b200041023a0000200b450d00200b41186c21002015210203400240200241046a280200450d002002280200102f0b0240200241106a280200450d002002410c6a280200102f0b200241186a2102200041686a22000d000b0b41012118410021160240200c450d002015102f0b410021170c6c0b2008422088a721062008a72107024002402004201b41ff01714100477241ff01710d0002402006410c6c2202450d00201520026a211b201521020340200241086a35020042208620023502008410052002410c6a2202201b470d000b0b200041043a00002006450d012006410c6c21002015210203400240200241046a280200450d002002280200102f0b2002410c6a2102200041746a22000d000c020b0b200041023a00002006450d002006410c6c21002015210203400240200241046a280200450d002002280200102f0b2002410c6a2102200041746a22000d000b0b410121174100211602402007450d002015102f0b410021180c6b0b2008a72102024002402004201b41ff01714100477241ff01710d002008428080808070832015ad841013200041043a00000c010b200041023a00000b4101211b20020d6b0c6c0b02400240201b41ff01710d00200441ff01714101470d002002411a6a2901002108200241196a2d00002104200241186a2d00002105200241166a2f01002106200241156a2d00002107200241146a2d00002109200241126a2f0100210a200241116a2d0000210b200241106a2d0000210c2002410e6a2f0100210d2002410d6a2d0000210e2002410c6a2d0000210f2002410a6a2f01002110200241096a2d00002111200241086a2d00002112200241066a2f01002113200241056a2d00002114200241046a2d00002115200241026a2f01002116418de6c300ad4280808080e0008410012202290000211c200341b8026a41086a200241086a2900003703002003201c3703b8022002102f41f0e8c600ad4280808080f0008410012202290000211c200341a8026a41086a200241086a2900003703002003201c3703a8022002102f4120102d2202450d6320022008370018200220043a0017200220053a0016200220063b0014200220073a0013200220093a00122002200a3b00102002200b3a000f2002200c3a000e2002200d3b000c2002200e3a000b2002200f3a000a200220103b0008200220113a0007200220123a0006200220133b0004200220143a0003200220153a0002200220163b00002002ad42808080808004841003221b290000211c201b41086a290000211d201b41106a290000211e200341f0036a41186a2217201b41186a290000370300200341f0036a41106a2218201e370300200341f0036a41086a201d3703002003201c3703f003201b102f2002102f41c000102d2202450d63200220032903b802370000200241086a200341b8026a41086a290300370000200220032903a802370010200241186a200341a8026a41086a290300370000200220032903f003370020200241286a200341f0036a41086a290300370000200241306a2018290300370000200241386a201729030037000020034180096a200210f6022003290380094201510d012002102f4200211c4200211d4200211e4200211f420021214200212242002123420021240c600b200041023a00004101211b0c6c0b20034190096a290300211d200341a0096a290300212420034198096a290300212320034180096a41306a290300212220034180096a41286a2903002121200341c0096a290300211f20034180096a41386a290300211e200329038809211c20032d00cc09211b2002102f201b450d5e410f210241d5e3c300211b410621040c5f0b200341b8096a2001413c6a280200360200200341b0096a200141346a290200370300200341a8096a2001412c6a29020037030020034180096a41206a200141246a29020037030020034180096a41186a2001411c6a29020037030020034180096a41106a200141146a29020037030020034180096a41086a2001410c6a2902003703002003200129020437038009200341f8076a41206a200241206a290200370300200341f8076a41186a200241186a290200370300200341f8076a41106a200241106a290200370300200341f8076a41086a200241086a290200370300200320022902003703f807200020034180096a200341f8076a108a014100211b410121050c5c0b20022d00000d1c20022d000141ff01714102470d1c200141086a2903002108200341f0036a41186a22054200370300200341f0036a41106a22024200370300200341f0036a41086a221b4200370300200342003703f00341d5a2ca00ad4280808080900184221c10012204290000211d2004290008211e2004102f201b201e3703002003201d3703f00341dea2ca00ad428080808090018410012206290000211d200341a8026a41086a2204200641086a2900003703002003201d3703a8022006102f200220032903a802221d37030020034188026a41086a2207201b29030037030020034188026a41106a2209201d37030020034188026a41186a220a2004290300370300200320032903f00337038802200341386a20034188026a412041c8e1ca004100410010b50120032802384101460d1d2005420037030020024200370300201b4200370300200342003703f003201c10012206290000211c2006290008211d2006102f201b201d3703002003201c3703f00341ecb0c000ad42808080803084221c10012206290000211d2004200641086a2900003703002003201d3703a8022006102f200220032903a802370000200241086a20042903003700002007201b29030037030020092002290300370300200a2005290300370300200320032903f00337038802200341286a20034188026a10e301024002402003290330500d002003280228450d00200341f0036a41186a22054200370300200341f0036a41106a22064200370300200341f0036a41086a221b4200370300200342003703f00341d5a2ca00ad428080808090018410012204290000211d2004290008211e2004102f201b201e3703002003201d3703f00341ecb0c000ad4280808080308410012204290000211d200341a8026a41086a2207200441086a2900003703002003201d3703a8022004102f200220032903a802370000200241086a200729030037000020034188026a41086a201b29030037030020034188026a41106a200629030037030020034188026a41186a2005290300370300200320032903f00337038802200341186a20034188026a10e301200329032042dc0b7c42dc0b20032802181b2008560d010b200341f0036a41186a22044200370300200341f0036a41106a22054200370300200341f0036a41086a221b4200370300200342003703f00341d5a2ca00ad4280808080900184221d10012206290000211e2006290008211f2006102f201b201f3703002003201e3703f003201c10012207290000211c200341a8026a41086a2206200741086a2900003703002003201c3703a8022007102f200220032903a802370000200241086a2209200629030037000020034188026a41086a220a201b29030037030020034188026a41106a220b200529030037030020034188026a41186a220c2004290300370300200320032903f00337038802200320083703800920034188026aad4280808080800484220820034180096aad221c428080808080018410042004420037030020054200370300201b4200370300200342003703f003201d10012207290000211d2007290008211e2007102f201b201e3703002003201d3703f00341dea2ca00ad428080808090018410012207290000211d2006200741086a2900003703002003201d3703a8022007102f200220032903a80237000020092006290300370000200a201b290300370300200b2005290300370300200c2004290300370300200320032903f0033703880241012104200341013a0080092008201c428080808010841004200041043a00004101211b410121050c6b0b41e5e4c00041ce0041f8b4ca001039000b2001410c6a2802002107200141086a280200210c2001280204210a024002400240024020022d00000d0020022d000141ff01714102470d002007410a4b0d02200341f0036a41186a22044200370300200341f0036a41106a22124200370300200341f0036a41086a22024200370300200342003703f003419487ca00ad4280808080a00184221d1001221b2900002108201b290008211c201b102f2002201c370300200320083703f003419e87ca00ad4280808080c00184221e1001221b2900082108201b290000211c201b102f20034188026a41106a221b201c37030020034188026a41186a2205200837030020034188026a41086a22062002290300370300200320032903f0033703880220034188026a10f702220941ff01714102460d032009410171450d0320004183083b0100200041086a4110360200200041046a41a087c700360200200041026a41013a00000c010b200041023a00000b2007450d5b0c5a0b20004183083b0100200041086a410d360200200041046a419387c700360200200041026a41023a00000c590b200442003703002012420037030020024200370300200342003703f003201d1001220929000021082009290008211c2009102f2002201c370300200320083703f003201e1001220929000821082009290000211c2009102f201b201c3703002005200837030020062002290300370300200320032903f00337038802200341013a00800920034188026aad4280808080800484221e20034180096aad428080808010841004200442003703002012420037030020024200370300200342003703f003418de6c300ad4280808080e000841001220429000021082002200441086a290000370300200320083703f0032004102f419ce6c300ad4280808080e00084100122042900002108200341a8026a41086a2209200441086a290000370300200320083703a8022004102f201220032903a802220837030020062002290300370300201b200837030020052009290300370300200320032903f00337038802200341c8006a20034188026a412010950120032802482104200328024c2105200341b8026a10f802024020032802c002221b20032802bc022211470d00201b41016a2202201b490d49201b41017422062002200620024b1bad42c4007e2208422088a70d492008a722024100480d4902400240201b0d002002102d21060c010b20032802b802201b41c4006c2002103121060b2006450d5f200320063602b8022003200241c4006e22113602bc020b20032802b802220d201b41c4006c22096a220241003a0000200220032f00f8073b000120022005410020041b3602042002200329028009370208200241036a200341f8076a41026a2d00003a0000200241106a20034180096a41086a2225290200370200200241186a20034180096a41106a2226290200370200200241206a20034180096a41186a290200370200200241286a20034180096a41206a290200370200200241306a20034180096a41286a290200370200200241386a20034180096a41306a290200370200200241c0006a20034180096a41386a2802003602002003201b41016a220f3602c002200a200741f0006c22026a2127024020070d00200a21050c550b200a41f4006a2106200941c4006a2118200241907f6a2109418de6c300ad4280808080e00084211d200a210503402005280204210e2005280200210420034180096a200541086a41e80010e8061a200541f0006a2105200e450d55200341f8076a20034180096a41e80010e8061a2003200e3602840920032004360280092025200341f8076a41e80010e8061a200341f0036a41186a22134200370300200341f0036a41106a22144200370300200341f0036a41086a22104200370300200342003703f003201d1001220229000021082010200241086a290000370300200320083703f0032002102f419ce6c300ad4280808080e00084100122022900002108200341a8026a41086a221b200241086a290000370300200320083703a8022002102f201220032903a802370000201241086a201b29030037000020034188026a41086a2215201029030037030020034188026a41106a2216201429030037030020034188026a41186a22172013290300370300200320032903f00337038802200341c0006a20034188026a4120109501200328024021022003280244210b200341f8066a20034180096a10f902410c211b024020040d00418787c70021044103211a0c550b02402004200b410020021b22024d0d0041fb86c70021044104211a0c550b200341f0056a2004417f6a10fa020240200341f0056a2026412010ea06450d004112211b41b087c70021044100211a0c550b0240200441002002417b6a221b201b20024b1b4f0d004108211b41df86c70021044106211a0c550b02400240200d200d200f41c4006c22196a460d00200d41016a21022018211b034002402002417f6a2d00004101470d004101210b200341f8066a2002460d032002200341f8066a412010ea06450d030b200241c4006a2102201b41bc7f6a221b0d000b0b4100210b0b200341f0056a200410fa02200341f0056a200341f8066a412010ea0621024114211b41e786c70021044105211a200b0d542002450d54200341e0016a41086a221a200341f0046a41086a221b290200370300200341e0016a41106a2220200341f0046a41106a22042f01003b0100200320032902f0043703e001200341f8066a20034180096a10f902200341d0036a41186a220b4200370300200341d0036a41106a22284200370300200341d0036a41086a22294200370300200342003703d003201742003703002016420037030020154200370300200342003703880241c800102d2202450d5f200341f0036a10fb02200241186a2013290300370200200241106a2014290300370200200241086a2010290300370200200220032903f003370200200241023602202002410136024420022003290388023700242002412c6a2015290300370000200241346a20162903003700002002413c6a2017290300370000200320023602f00520034282808080203702f405200341f0056a10fc02200341f0056a41186a200b290300370300200341f0056a41106a220b2028290300370300200341f0056a41086a22102029290300370300200320032903d0033703f005200341f0056a10fd02201b200341f8066a41086a2903003703002004200341f8066a41106a290300370300200341f0046a41186a2213200341f8066a41186a2903003703002010201a290300370300200b20202f01003b0100200320032903f8063703f004200320032903e0013703f0050240200f2011470d0020112011470d00201141016a22022011490d4a201141017422142002201420024b1bad42c4007e2208422088a70d4a2008a722024100480d4a0240024020110d002002102d210d0c010b200d201141c4006c20021031210d0b200d450d602003200d3602b8022003200241c4006e22113602bc020b200d20196a220241013a0000200241096a201b290300370000200220032903f004370001201329030021082004290300211c200241003a0021200241116a201c370000200241196a2008370000200220032903f005370030200241c0006a200b2f01003b0000200241386a20102903003700002003200f41016a220f3602c0020240200328028c092202450d00200241246c211b200e210203400240024020022d0000220441044b0d0002400240024020040e050400010204040b2002410c6a280200450d03200241086a280200102f0c030b2002410c6a280200450d02200241086a280200102f0c020b2002410c6a280200450d01200241086a280200102f0c010b200241086a280200450d00200241046a280200102f0b200241246a2102201b415c6a221b0d000b0b0240200328028809450d00200e102f0b201841c4006a2118200941907f6a2109200641f0006a210620052027470d000c560b0b200141156a29000021082001410d6a290000211c2002411a6a290100211f200241196a2d00002104200241186a2d00002105200241166a2f01002106200241156a2d00002107200241146a2d00002109200241126a2f0100210a200241116a2d0000210b200241106a2d0000210c2002410e6a2f0100210d2002410d6a2d0000210e2002410c6a2d0000210f2002410a6a2f01002110200241096a2d00002111200241086a2d00002112200241066a2f01002113200241056a2d00002114200241046a2d00002115200241026a2f01002116200141286a28020021182001411d6a290000211d200141056a290000221e421888a7211720022d0001211b20022d000021020240024002400240024020012d00040e050001020304000b20034180096a41146a41013602002003420137028409200341b4d8c90036028009200341043602fc06200341fcdbc9003602f8062003200341f8066a3602900920034180096a41e8d8c9001043000b200241ff01710d1f201b41ff01714101470d1f2003201f37039007200320043a008f07200320053a008e07200320063b018c07200320073a008b07200320093a008a072003200a3b0188072003200b3a0087072003200c3a0086072003200d3b0184072003200e3a0083072003200f3a008207200320103b018007200320113a00ff06200320123a00fe06200320133b01fc06200320143a00fb06200320153a00fa06200320163b01f806200341f0036a201710fe0220034180096a20032802f003220420032802f803220b10ff02200341f8076a41086a220220034180096a41106a290300370300200341f8076a41106a221b20034180096a41186a290300370300200341f8076a41186a2205200341a0096a29030037030020032003290388093703f80702402003290380094201510d00200341f0056a41086a200341f8066a41086a290300370300200341f0056a41106a200341f8066a41106a290300370300200341f0056a41186a200341f8066a41186a290300370300200320032903f8063703f005200342003703f8042003428080e983b1de163703f0042003200341f8066a3602e0012003200341f8066a3602d0022003200341d0026a360288092003200341e0016a360284092003200341f0046a36028009200341f8076a200341f8066a20034180096a109401024020032802f8074101470d0020034184086a280200210520034180086a280200210620032d00ff07210720032d00fe07210920032d00fd07210a20032d00fc0721020c540b410421020240200341f8076a41086a2903004201510d000c540b200341f8076a41106a290300210820032802d002211b200341b8096a200341f8076a41186a290300370300200341b0096a200837030020034180096a41086a41003a000020034189096a201b29000037000020034191096a201b41086a29000037000020034199096a201b41106a290000370000200341a1096a201b41186a290000370000200341033a00800941c8e1ca00410020034180096a108c010c530b200341f0056a41186a2005290300370300200341f0056a41106a201b290300370300200341f0056a41086a2002290300370300200320032903f8073703f0054105210a4183d9c900210641022109410321024100211b410521050c530b200341f0056a41106a20083703002003201e3703f0052003201d370388062003201c3703f805200241ff01710d1f201b41ff01714101470d1f2003201f37039008200320043a008f08200320053a008e08200320063b018c08200320073a008b08200320093a008a082003200a3b0188082003200b3a0087082003200c3a0086082003200d3b0184082003200e3a0083082003200f3a008208200320103b018008200320113a00ff07200320123a00fe07200320133b01fc07200320143a00fb07200320153a00fa07200320163b01f807200341f8076a200341f0056a412010ea06450d21200341f0046a201810fe0220034180096a20032802f004221b20032802f804220a10ff02410321024105210402402003290380094201510d00410021054190d9c9002106410b21070c510b200341b0096a2903002108200341a8096a290300211c20034190096a2205290300211e20034180096a41206a290300211d200329038809211f200520034198096a2903003703002003201d370398092003201f370380092003201e3703880920034180096a200341f8076a412010ea060d20200341f8066a200341f8076a200341f0056a201c2008410110bc01200341f8066a41086a290300211e0240024020032802f8064101460d0042002008200341f8066a41106a2903007d201c201e54ad7d221d201c201e7d221e201c56201d200856201d2008511b22021b21084200201e20021b211c200341f0056a41106a290300211f20032903f805212120032903f0052122200329038806211d4201211e0c010b20032802fc06220241187621092002411076210520024108762104201e422088a72107201ea72106200241ff01714104470d514200211e0b200341b0096a2008370300200341a8096a201c370300200341a0096a201d3703002003201e3703800920034198096a201f3703002003202237038809200320213703900902400240201e4201510d00200aad422086201bad8410050c010b4110102d2202450d6020024110412010312202450d60200220034188096a220b290000370000200241186a200b41186a290000370000200241106a200b41106a290000370000200241086a200b41086a2900003700002002412041c00010312202450d602002201c370020200241286a2008370000200aad422086201bad842002ad428080808080068410042002102f0b410421020c500b200241ff01710d22201b41ff01714101470d222003201f37039007200320043a008f07200320053a008e07200320063b018c07200320073a008b07200320093a008a072003200a3b0188072003200b3a0087072003200c3a0086072003200d3b0184072003200e3a0083072003200f3a008207200320103b018007200320113a00ff06200320123a00fe06200320133b01fc06200320143a00fb06200320153a00fa06200320163b01f806200341f0036a201710fe0220034180096a20032802f003221b20032802f803220410ff024103210202402003290380094201510d00410021044190d9c9002105410b21060c4f0b200341b0096a290300211e200341a8096a290300211f20034180096a41106a290300210820034180096a41206a290300211c200329038809211d200341f0056a41106a20034198096a2903003703002003201c370388062003201d3703f005200320083703f805200341f0056a200341f8066a412010ea060d212003201f3703f0042003201e3703f8040240201f201e84500d002003200341f8066a3602d002200341f8076a200341f8066a200341f0046a200341d0026a10960120032903f8074201520d002003290380082108200341b8096a200341f8076a41106a290300370300200341b0096a200837030020034180096a41086a41003a000020034189096a20032903f80637000020034191096a200341f8066a41086a29030037000020034199096a200341f8066a41106a290300370000200341a1096a20034190076a290300370000200341033a00800941c8e1ca00410020034180096a108c010b2004ad422086201bad841005410421020c4e0b0240201b200241ff01714100477241ff01710d00200341f0046a201810fe0220034180096a20032802f004220420032802f804220710ff02200341b0096a2102200341a8096a211b20034198096a2105200341a0096a210602402003290380094201520d002002290300211f201b290300212120034180096a41106a2903002122200629030021232003290388092124200341f0056a41106a20052903003703002003202337038806200320243703f005200320223703f805200320213703f8062003201f370380072021201f84500d002003200341f0056a3602f003200341f8076a200341f0056a200341f8066a200341f0036a10960120032903f8074201520d00200329038008211f200341b8096a200341f8076a41106a290300370300200341b0096a201f37030020034180096a41086a41003a000020034189096a20032903f00537000020034191096a200341f0056a41086a29030037000020034199096a200341f0056a41106a290300370000200341a1096a20034188066a290300370000200341033a00800941c8e1ca00410020034180096a108c010b20024200370300201b42003703002006201d370300200520083703002003201e3703880920034201370380092003201c370390094110102d2202450d5e20024110412010312202450d5e200220034188096a221b290000370000200241186a201b41186a290000370000200241106a201b41106a290000370000200241086a201b41086a2900003700002002412041c00010312202450d5e20024200370020200241286a42003700002007ad4220862004ad842002ad428080808080068410042002102f024020032802f404450d002004102f0b2003418d096a201c37000020034180096a41286a20183602002003419d096a201d37000020034195096a20083700002003201e37008509200341003a008409200341023a00800941c8e1ca00410020034180096a108c01200041043a00004101211b0c520b200041023a00004101211b0c510b200341e0016a41086a221b200141146a290200370300200341e0016a41106a22042001411c6a290200370300200341e0016a41186a2205200141246a290200370300200341e0016a41206a22062001412c6a28020036020020032001410c6a2902003703e001200141c8006a290300211f200141c0006a290300211e200141386a2903002108200141306a290300211c2002411a6a290100211d200241196a2d00002109200241186a2d0000210a200241166a2f0100210b200241156a2d0000210c200241146a2d0000210d200241126a2f0100210e200241116a2d0000210f200241106a2d000021102002410e6a2f010021112002410d6a2d000021122002410c6a2d000021132002410a6a2f01002114200241096a2d00002115200241086a2d00002116200241066a2f01002117200241056a2d00002118200241046a2d00002119200241026a2f0100211a20022d0001210720022d0000210202400240024002400240200141086a2802000e050001020304000b20034180096a41146a41013602002003420137028409200341b4d8c90036028009200341043602fc06200341fcdbc9003602f8062003200341f8066a3602900920034180096a41e8d8c9001043000b200341f8076a41206a2006280200360200200341f8076a41186a2005290300370300200341f8076a41106a2004290300370300200341f8076a41086a201b290300370300200320032903e0013703f807200241ff01710d24200741ff01714101470d242003201d37038805200320093a0087052003200a3a0086052003200b3b0184052003200c3a0083052003200d3a0082052003200e3b0180052003200f3a00ff04200320103a00fe04200320113b01fc04200320123a00fb04200320133a00fa04200320143b01f804200320153a00f704200320163a00f604200320173b01f404200320183a00f304200320193a00f2042003201a3b01f00420034180096a41206a200341f8076a41206a28020036020020034180096a41186a200341f8076a41186a29030037030020034180096a41106a200341f8076a41106a29030037030020034180096a41086a2202200341f8076a41086a290300370300200320032903f80737038009200341f0056a20034180096a10bb0120034188026a41086a221b200341f9056a29000037030020034188026a41106a220420034181066a29000037030020034188026a41186a220520034189066a290000370300200320032900f1053703880220032d00f0054101460d03200341f8066a41186a2005290300370300200341f8066a41106a2004290300370300200341f8066a41086a201b29030037030020032003290388023703f8064101211b20034180096a200341f0046a200341f8066a201c2008410110f20220032003290081093703f003200320022800003600f703024020032d00800922024104470d00200041043a00000c540b200020023a0000200020032903f003370001200041086a20032800f7033600000c530b200341d0026a41206a2006280200360200200341d0026a41186a2005290300370300200341d0026a41106a2004290300370300200341d0026a41086a201b290300370300200320032903e0013703d0022007200241ff01714100477241ff01710d2420034180096a41206a200341d0026a41206a28020036020020034180096a41186a200341d0026a41186a29030037030020034180096a41106a200341d0026a41106a29030037030020034180096a41086a200341d0026a41086a290300370300200320032903d00237038009200341f8076a20034180096a10bb0120034188026a41086a220220034181086a29000037030020034188026a41106a220420034189086a29000037030020034188026a41186a220520034191086a290000370300200320032900f907370388024101211b20032d00f8074101460d03200341d0036a41186a2005290300370300200341d0036a41106a2004290300370300200341d0036a41086a200229030037030020032003290388023703d00320034200201f201e201c7c221d428080e983b1de16544100201f20087c201d201e54ad7c501b22041b221f3703c00220034200201e20041b221e3703b8022003200341d0036a3602cc02418de6c300ad4280808080e0008410012202290000211d200341a8026a41086a200241086a2900003703002003201d3703a8022002102f41f0e8c600ad4280808080f00084100122022d000f210520022d000e210620022f000c210720022d000b210920022d000a210a20022f0008210b20022d0007210c20022d0006210d20022f0004210e20022d0003210f20022d0002211020022f000021112002102f4120102d2202450d5e200220032903d003370000200241186a200341d0036a41186a290300370000200241106a200341d0036a41106a290300370000200241086a200341d0036a41086a2903003700002002ad42808080808004841003221b290000211d201b41086a2900002121201b41106a2900002122200341f0036a41186a2212201b41186a290000370300200341f0036a41106a22132022370300200341f0036a41086a221420213703002003201d3703f003201b102f2002102f41c000102d2202450d5e4200200820041b21084200201c20041b211c200220032903a802370000200241086a200341a8026a41086a2903003700002002200c3a00172002200d3a00162002200e3b00142002200f3a0013200220103a0012200220113b0010200220053a001f200220063a001e200220073b001c200220093a001b2002200a3a001a2002200b3b0018200220032903f003370020200241286a2014290300370000200241306a2013290300370000200241386a2012290300370000200341f8066a200210f60220032903f806212442002122200342003703f806200341c0076a280200210520032d00c40721060240024020244201510d00200341f0046a41306a4200370300200341f0046a41286a4200370300200341f0046a41206a420037030020034188056a420037030020034180056a4200370300200341f8046a4200370300200342003703f00442002123420021214200211d4200212a0c010b200341f8066a41386a290300212b200341f8066a41306a290300212c200341f8066a41206a2903002123200341f8066a41186a2903002122200341f8066a41c0006a290300212a200329038807211d2003290380072121200341f0046a41206a200341f8066a41286a290300370300200341f0046a41286a202c370300200341f0046a41306a202b37030020034180056a20223703002003202337038805200320213703f0042003201d3703f8040b201d20237c212b202120227c222c2021542207ad212d201c2021562008201d562008201d51221b1b0d25201c2021542008201d54201b1b450d4d200341f0036a41186a220b4200370300200341f0036a41106a22044200370300200341f0036a41086a221b4200370300200342003703f00341e7a2ca00ad4280808080800184221e10012209290000211f2009290008212e2009102f201b202e3703002003201f3703f00341ecb5c600ad4280808080d00184221f1001220a290000212e200341a8026a41086a2209200a41086a2900003703002003202e3703a802200a102f200420032903a802222e37030020034188026a41086a220c201b29030037030020034188026a41106a220d202e37030020034188026a41186a220e2009290300370300200320032903f0033703880220034198016a20034188026a4120109c0120034198016a41106a290300212e20032903a001212f200328029801210a200b420037030020044200370300201b4200370300200342003703f003201e1001220b290000211e200b2900082130200b102f201b20303703002003201e3703f003201f1001220b290000211e2009200b41086a2900003703002003201e3703a802200b102f200420032903a802221e370300200c201b290300370300200d201e370300200e2009290300370300200320032903f0033703880220034200202e4200200a1b221e2021201c54ad2008201d7d7c7c202f4200200a1b221f2021201c7d222e54ad7d2221201f202e7d222e201f562021201e562021201e511b221b1b3703880920034200202e201b1b3703800920034180096a211b20034188026a21040c4c0b200141e0006a290300211d200141d8006a2903002121200141d0006a2802002109200341f8076a41206a2006280200360200200341f8076a41186a2005290300370300200341f8076a41106a2004290300370300200341f8076a41086a201b290300370300200320032903e0013703f8072007200241ff01714100477241ff01710d2520034180096a41206a2202200341f8076a41206a28020036020020034180096a41186a2204200341f8076a41186a29030037030020034180096a41106a2205200341f8076a41106a29030037030020034180096a41086a200341f8076a41086a290300370300200320032903f80737038009200341f0056a20034180096a10bb014101211b20032d00f0054101460d02200341f0056a41086a2d0000211b200341f9056a22062f00002107200341fb056a2d0000210a200341fc056a2d0000210b200341fd056a2f0000210c200341ff056a2d0000210d200341f0056a41106a2d0000210e20034181066a220f2f0000211020034183066a2d0000211120034184066a2d0000211220034185066a2f0000211320034187066a2d00002114200341f0056a41186a2d0000211520032f00f105211620032d00f305211720032d00f405211820032f00f505211920032d00f705211a200320034189066a222029000037038805200320153a008705200320143a008605200320133b018405200320123a008305200320113a008205200320103b0180052003200e3a00ff042003200d3a00fe042003200c3b01fc042003200b3a00fb042003200a3a00fa04200320073b01f8042003201b3a00f7042003201a3a00f604200320193b01f404200320183a00f304200320173a00f204200320163b01f0042004201f3703002005201e3703002002200936020020032008370388092003201c37038009200341f0056a20034180096a10bb0120034188026a41086a200629000037030020034188026a41106a200f29000037030020034188026a41186a2020290000370300200320032900f1053703880220032d00f0054101460d01200341f8066a41186a20034188026a41186a290300370300200341f8066a41106a20034188026a41106a290300370300200341f8066a41086a20034188026a41086a29030037030020032003290388023703f8064101211b20034180096a200341f0046a200341f8066a2021201d410110f20220032003290081093703f003200320034180096a41086a2800003600f703024020032d00800922024104470d00200041043a00000c520b200020023a0000200020032903f003370001200041086a20032800f7033600000c510b200341f8076a41206a2006280200360200200341f8076a41186a2005290300370300200341f8076a41106a2004290300370300200341f8076a41086a201b290300370300200320032903e0013703f807200241ff01710d25200741ff01714101470d252003201d37038805200320093a0087052003200a3a0086052003200b3b0184052003200c3a0083052003200d3a0082052003200e3b0180052003200f3a00ff04200320103a00fe04200320113b01fc04200320123a00fb04200320133a00fa04200320143b01f804200320153a00f704200320163a00f604200320173b01f404200320183a00f304200320193a00f2042003201a3b01f00420034180096a41206a200341f8076a41206a28020036020020034180096a41186a200341f8076a41186a29030037030020034180096a41106a200341f8076a41106a29030037030020034180096a41086a2202200341f8076a41086a290300370300200320032903f80737038009200341f0056a20034180096a10bb0120034188026a41086a221b200341f9056a29000037030020034188026a41106a220420034181066a29000037030020034188026a41186a220520034189066a290000370300200320032900f1053703880220032d00f0054101460d00200341f8066a41186a2005290300370300200341f8066a41106a2004290300370300200341f8066a41086a201b29030037030020032003290388023703f80620034180096a200341f0046a200341f8066a201c2008410010f20220032003290081093703f003200320022800003600f70320032d00800922024104470d02200041043a00004101211b0c500b4101211b0b2000201b3a00000c4e0b200020023a0000200020032903f003370001200041086a20032800f7033600004101211b0c4d0b20034180096a41306a200141386a29030037030020034180096a41286a200141306a29030037030020034180096a41206a200141286a29030037030020034180096a41186a200141206a29030037030020034180096a41106a200141186a29030037030020034180096a41086a200141106a2903003703002003200141086a29030037038009200341f8076a41206a200241206a290200370300200341f8076a41186a200241186a290200370300200341f8076a41106a200241106a290200370300200341f8076a41086a200241086a290200370300200320022902003703f807200020034180096a200341f8076a108003410021064101211b41012104410121050c640b200141086a28020021292001280204212820034180096a2001410c6a41840110e8061a2002411a6a2901002108200241196a2d00002104200241186a2d00002105200241166a2f01002106200241156a2d00002107200241146a2d00002109200241126a2f0100210a200241116a2d0000210b200241106a2d0000210c2002410e6a2f0100210d2002410d6a2d0000210e2002410c6a2d0000210f2002410a6a2f01002110200241096a2d00002111200241086a2d00002112200241066a2f01002113200241056a2d00002114200241046a2d00002115200241026a2f0100211620022d0001211b20022d0000210202402028450d00200341d0026a20034180096a41046a41800110e8061a024002400240200241ff01710d00201b41ff01714101460d010b200041023a000020290d010c470b200320083703e803200320043a00e703200320053a00e603200320063b01e403200320073a00e303200320093a00e2032003200a3b01e0032003200b3a00df032003200c3a00de032003200d3b01dc032003200e3a00db032003200f3a00da03200320103b01d803200320113a00d703200320123a00d603200320133b01d403200320143a00d303200320153a00d203200320163b01d003200341f0036a200341d0026a41800110e8061a20034188066a20032903e803370300200341f0056a41106a20032903e003370300200341f0056a41086a20032903d803370300200320032903d0033703f005200341f8076a200341f0056a1081030240024020032802a4084102460d00200341f8066a41086a200341b5086a290000370300200341f8066a41106a200341bd086a290000370300200341f8066a41176a2202200341c4086a290000370000200320032900ad083703f806200341ac086a2d0000211b0240200328029c08450d00200328029808102f0b200341f0046a41176a22042002290000370000200341f0046a41106a2202200341f8066a41106a290300370300200341e9016a20034180076a290300370000200341f1016a2002290300370000200341f8016a20042900003700002003201b3a00e001200320032903f8063700e101200341f0046a200341f0036a41800110e8061a20034188026a200341e0016a108203200341f8076a200328028802221b20032802900210830320032d00f8072102200341f8066a200341f8076a41017241800110e8061a0240024020024101460d00200341003a00f0050c010b200341013a00f005200341f0056a410172200341f8066a41800110e8061a0b0240200328028c02450d00201b102f0b200341f0046a41206a2127200341b0056a2125200341d0056a212620034191066a2131200341b1066a2132200341d1066a2133200341f0056a41017221344170210503404100211b41c8e1ca0021040240024002400240200541c0aac3006a280000220241e6e485f3064a22090d00200241e2c289ab06460d01200241e1ea91cb06470d034120211b202621040c030b200241e9dabdf306460d01200241e7e485f306470d024120211b200341f0046a21040c020b4120211b202721040c010b4120211b202521040b2003201b36028008200320043602fc07200320023602f807200341f8066a200341f8076a108403200341f8076a20032802f806220720032802800710ad0220032802fc0621060240024020032d00f8074101470d00200329009108210820032d009008210a20032d008f08210b20032f008d08210c20032d008c08210d20032d008b08210e20032f008908210f20032d008808211020032d008708211120032f008508211220032d008408211320032d008308211420032f008108211520032d008008211620032d00ff07211720032f00fd07211820032d00fc07211920032d00fb07211a20032f00f907212002402006450d002007102f0b20032008370390082003200a3a008f082003200b3a008e082003200c3b018c082003200d3a008b082003200e3a008a082003200f3b018808200320103a008708200320113a008608200320123b018408200320133a008308200320143a008208200320153b018008200320163a00ff07200320173a00fe07200320183b01fc07200320193a00fb072003201a3a00fa07200320203b01f807200341f8076a200341e0016a412010ea06450d014102210241b7eac300211b410d21040c040b2006450d002007102f0b0240024020032d00f0054101470d004100210641c8e1ca002107024002400240024020090d00200241e2c289ab06460d01200241e1ea91cb06470d0341202106203321070c030b200241e9dabdf306460d01200241e7e485f306470d0241202106203421070c020b41202106203121070c010b41202106203221070b0240201b2006470d0020042007460d0220042007201b10ea06450d020b2003200636028008200320073602fc07200320023602f807200341f8066a200341f8076a10840320033502800742208620032802f8062206ad84100520032802fc06450d002006102f0b2003201b36028008200320043602fc07200320023602f807200341f8066a200341f8076a10840320032802f806211b20033502800721084120102d2202450d5d200220032903e001370000200241186a200341e0016a41186a290300370000200241106a200341e0016a41106a290300370000200241086a200341e0016a41086a2903003700002008422086201bad842002ad428080808080048410042002102f20032802fc06450d00201b102f0b200541046a22050d000b200341f8076a200341e0016a108203200335028008210820032802f807211b4120102d2202450d5b200220032903f004370000200241186a200341f0046a41186a290300370000200241106a200341f0046a41106a290300370000200241086a200341f0046a41086a2903003700002002412041c00010312202450d5b2002200329039005370020200241386a200341f0046a41386a290300370000200241306a200341f0046a41306a290300370000200241286a200341f0046a41286a290300370000200241c00041800110312202450d5b200220032903b005370040200241d8006a200341f0046a41d8006a290300370000200241d0006a200341f0046a41d0006a290300370000200241c8006a200341f0046a41c8006a290300370000200220032903d005370060200241e8006a200341f0046a41e8006a290300370000200241f0006a200341f0046a41f0006a290300370000200241f8006a200341f0046a41f8006a2903003700002008422086201bad842002ad428080808080108410042002102f024020032802fc07450d00201b102f0b024020032d00f0050d00200341d0036a10d0020b200041043a000020290d020c480b4101210241c4eac300211b411721040b200041086a2004360200200041046a201b360200200041026a20023a000020004183123b01002029450d460b2028102f0c450b200241ff01710d21201b41ff01714101470d21200320113a00d702200320123a00d602200320133b01d402200320143a00d302200320153a00d202200320163b01d0022003200b3a00df022003200c3a00de022003200d3b01dc022003200e3a00db022003200f3a00da02200320103b01d802200320043a00e702200320053a00e602200320063b01e402200320073a00e302200320093a00e2022003200a3b01e002200320083703e80220034188066a2008370300200341f0056a41106a20032903e002370300200341f0056a41086a20032903d802370300200320032903d0023703f005200341f8076a200341f0056a1081030240024020032802a4084102460d00200341f8066a41086a200341b5086a290000370300200341f8066a41106a200341bd086a290000370300200341f8066a41176a2202200341c4086a290000370000200320032900ad083703f806200341ac086a2d0000211b0240200328029c08450d00200328029808102f0b200341f0046a41176a22042002290000370000200341f0046a41106a2202200341f8066a41106a290300370300200341f9036a20034180076a29030037000020034181046a200229030037000020034188046a20042900003700002003201b3a00f003200320032903f8063700f103200341e0016a200341f0036a108203200341f8076a20032802e001220220032802e8012204108303024020032d00f807221b450d002004ad4220862002ad8410050b20032d00f9072104200341f8066a200341f8076a41027241ff0010e8061a200341f8076a200341f8066a41ff0010e8061a0240201b4101470d00200341f0046a200341f8076a41ff0010e8061a024020032802e401450d002002102f0b200320043a00f005200341f0056a410172200341f0046a41ff0010e8061a20034180086a4120360200200341e7e485f3063602f8072003200341f0056a3602fc07200341f8066a200341f8076a10840320033502800742208620032802f8062202ad841005024020032802fc06450d002002102f0b200341e2c289ab063602f80720034120360280082003200341f0056a41206a3602fc07200341f8066a200341f8076a10840320033502800742208620032802f8062202ad841005024020032802fc06450d002002102f0b20034120360280082003200341b0066a3602fc07200341e9dabdf3063602f807200341f8066a200341f8076a10840320033502800742208620032802f8062202ad841005024020032802fc06450d002002102f0b20034120360280082003200341d0066a3602fc07200341e1ea91cb063602f807200341f8066a200341f8076a10840320033502800742208620032802f8062202ad841005024020032802fc06450d002002102f0b200341d0026a10ca02200041043a00000c470b024020032802e401450d002002102f0b4106210241b1eac300211b410321040c010b4117210241c4eac300211b410121040b20004183123b0100200041086a2002360200200041046a201b360200200041026a20043a00000c440b20034180096a41306a200141386a29030037030020034180096a41286a200141306a29030037030020034180096a41206a200141286a29030037030020034180096a41186a200141206a29030037030020034180096a41106a200141186a29030037030020034180096a41086a200141106a2903003703002003200141086a29030037038009200341f8076a41206a200241206a290200370300200341f8076a41186a200241186a290200370300200341f8076a41106a200241106a290200370300200341f8076a41086a200241086a290200370300200320022902003703f807200020034180096a200341f8076a10c302410021094101211b410121044101210541012106410121070c640b200341a8096a2001412c6a29020037030020034180096a41206a200141246a29020037030020034180096a41186a2001411c6a29020037030020034180096a41106a200141146a29020037030020034180096a41086a2001410c6a2902003703002003200129020437038009200341f8076a41206a200241206a290200370300200341f8076a41186a200241186a290200370300200341f8076a41106a200241106a290200370300200341f8076a41086a200241086a290200370300200320022902003703f807200020034180096a200341f8076a1085034100210a4101211b41012104410121054101210641012107410121090c640b200341a8096a2001412c6a29020037030020034180096a41206a200141246a29020037030020034180096a41186a2001411c6a29020037030020034180096a41106a200141146a29020037030020034180096a41086a2001410c6a2902003703002003200129020437038009200341f8076a41206a200241206a290200370300200341f8076a41186a200241186a290200370300200341f8076a41106a200241106a290200370300200341f8076a41086a200241086a290200370300200320022902003703f807200020034180096a200341f8076a1086034100210b4101211b41012104410121054101210641012107410121094101210a0c640b200341f8076a41206a200141286a290300370300200341f8076a41186a200141206a290300370300200341f8076a41106a200141186a290300370300200341f8076a41086a200141106a2903003703002003200141086a2903003703f80720034180096a41206a200241206a29020037030020034180096a41186a200241186a29020037030020034180096a41106a200241106a29020037030020034180096a41086a200241086a29020037030020032002290200370380092000200341f8076a20034180096a1087034100210c4101211b41012104410121054101210641012107410121094101210a4101210b0c640b200341cc026a41026a2207200141076a2d00003a0000200341f8076a41086a22092001411c6a290200370300200341f8076a41106a220a200141246a290200370300200341f8076a41186a2001412c6a29020037030020034198086a200141346a290200370300200341a0086a2001413c6a290200370300200341a8086a200141c4006a2d00003a0000200320012f00053b01cc022003200141146a2902003703f807200141086a28020021042001410c6a2802002105200141106a280200210620022f0001200241036a2d000041107472210c2002410c6a280200210d200241086a280200210e200241046a280200210f20022d0000211b02400240024002400240024002400240024020012d0004220b0e080001020304050607000b20034180096a41146a41013602002003420137028409200341b4d8c90036028009200341043602fc06200341fcdbc9003602f8062003200341f8066a3602900920034180096a41e8d8c9001043000b20034187066a20092903003700002003418f066a200a2d00003a0000200320032f01cc023b01f005200320063600fb05200320053600f705200320043600f305200320032903f8073700ff05200320072d00003a00f20502400240201b417f6a220241024b0d00024020020e03000102000b200e410174200d4d0d00200f41ff0171450d010b200c201b4100477241ff01710d070b200341f0036a41186a4200370300200341f0036a41106a22064200370300200341f0036a41086a22024200370300200342003703f00341eba1c600ad4280808080b002841001221b29000021082002201b41086a290000370300200320083703f003201b102f41ebdec700ad4280808080f000841001221b2900002108200341a8026a41086a2207201b41086a290000370300200320083703a802201b102f200620032903a802220837030020034188026a41086a200229030037030020034188026a41106a200837030020034188026a41186a2007290300370300200320032903f0033703880220034180096a20034188026a412010aa02024020032802800922090d0041012109200341013602f8064100210c4100210d0c410b200320093602f806200328028409210c2003290284092208a7210d024002402008422088a7220a41014b0d0041002102200a0e024201420b200a211b4100210203402002201b410176220620026a2207200920074105746a200341f0056a412010ea0641004a1b2102201b20066b221b41014b0d000b0b0240200920024105746a200341f0056a412010ea06221b450d0020034180096a41186a200341f0056a41186a29030037030020034180096a41106a200341f0056a41106a29030037030020034180096a41086a200341f0056a41086a290300370300200320032903f00537038009201b411f7620026a2206200a4b0d2520034180096a211b0c420b200041831c3b0100200041086a410d360200200041046a41f2b6c400360200200041026a41003a0000200c450d422009102f0c420b200341e7026a2009290300370000200341ef026a200a2d00003a0000200320032f01cc023b01d002200320063600db02200320053600d702200320043600d302200320032903f8073700df02200320072d00003a00d20202400240201b417f6a220241024b0d00024020020e03000102000b200e410174200d4d0d00200f41ff0171450d010b200c201b4100477241ff01710d250b200341f0036a41186a4200370300200341f0036a41106a22064200370300200341f0036a41086a22024200370300200342003703f00341eba1c600ad4280808080b002841001221b29000021082002201b41086a290000370300200320083703f003201b102f41ebdec700ad4280808080f000841001221b2900002108200341a8026a41086a2207201b41086a290000370300200320083703a802201b102f200620032903a802220837030020034188026a41086a200229030037030020034188026a41106a200837030020034188026a41186a2007290300370300200320032903f0033703880220034180096a20034188026a412010aa022003280280092202410120021b2109024002400240200329028409420020021b2208422088a7220a41014b0d0041002102200a0e020201020b200a211b4100210203402002201b410176220620026a2207200920074105746a200341d0026a412010ea0641004a1b2102201b20066b221b41014b0d000b0b200920024105746a200341d0026a412010ea060d002002200a4f0d26200920024105746a221b201b41206a2002417f73200a6a41057410e9061a20034180096a41186a2207420037030020034180096a41106a2206420037030020034180096a41086a221b4200370300200342003703800941eba1c600ad4280808080b00284221c10012202290000211d200341b8026a41086a220c200241086a2900003703002003201d3703b8022002102f201b200c290300370300200320032903b8023703800941ebdec700ad4280808080f0008410012202290000211d200341a8026a41086a220c200241086a2900003703002003201d3703a8022002102f200620032903a802221d370300200341f8066a41086a201b290300370300200341f8066a41106a201d370300200341f8066a41186a200c29030037030020032003290380093703f80620034120360284092003200341f8066a360280092009200a417f6a220220034180096a10aa012007200341d0026a41186a2903003703002006200341d0026a41106a290300370300201b200341d0026a41086a290300370300200320032903d0023703800920034180096a41012009200210880320034188026a41186a2207420037030020034188026a41106a220c420037030020034188026a41086a221b42003703002003420037038802201c10012206290000211c2006290008211d2006102f201b201d3703002003201c3703880241fbd4c700ad4280808080d0008410012206290008211c2006290000211d2006102f200341f0046a41106a201d370300200341f0046a41186a201c370300200341f0046a41086a201b29030037030020032003290388023703f00420034180096a200341f0046a412010ad0220032d0080092106200720034199096a290000370300200c20034191096a290000370300201b20034189096a290000370300200320032900810937038802024020064101470d00200341d0036a41186a2007290300221c370300200341d0036a41106a200c290300221d370300200341d0036a41086a201b290300221e3703002003200329038802221f3703d003200341f0056a41186a201c370300200341f0056a41106a201d370300200341f0056a41086a201e3703002003201f3703f0050240024002400240200a417f6a220641014b0d004100211b20060e020201020b4100211b0340201b20024101762206201b6a2207200920074105746a200341f0056a412010ea0641004a1b211b200220066b220241014b0d000b0b2009201b4105746a200341f0056a412010ea06450d010b200341f0046a41186a4200370300200341f0046a41106a22074200370300200341f0046a41086a221b4200370300200342003703f00441eba1c600ad4280808080b0028410012206290000211c20034188026a41086a2202200641086a2900003703002003201c370388022006102f201b200229030037030020032003290388023703f00441fbd4c700ad4280808080d0008410012206290000211c2002200641086a2900003703002003201c370388022006102f2007200329038802221c370300200341f0036a41086a201b290300370300200341f0036a41106a201c370300200341f0036a41186a2002290300370300200320032903f0043703f003200341f0036aad428080808080048410050c010b20034199096a20034188066a29030037000020034191096a20034180066a29030037000020034189096a200341f8056a290300370000200320032903f00537008109200341013a00800920034180096a1089030b2003418a023b01800941c8e1ca00410020034180096a108c0102402008a7450d002009102f0b200041043a00000c420b200041831c3b0100200041086a4109360200200041046a41d1d5c700360200200041026a41013a00002008a7450d412009102f0c410b200341f7016a2009290300370000200341ff016a200a2d00003a0000200320032f01cc023b01e001200320063600eb01200320053600e701200320043600e301200320032903f8073700ef01200320072d00003a00e201200341d0026a41186a200341a1086a290000370300200341d0026a41106a20034199086a290000370300200341d0026a41086a20034191086a29000037030020032003290089083703d00202400240201b417f6a220241024b0d00024020020e03000102000b200e410174200d4d0d00200f41ff0171450d010b200c201b4100477241ff01710d260b200341e0016a200341d0026a412010ea06450d26200341f0036a41186a4200370300200341f0036a41106a22064200370300200341f0036a41086a22024200370300200342003703f00341eba1c600ad4280808080b002841001221b29000021082002201b41086a290000370300200320083703f003201b102f41ebdec700ad4280808080f000841001221b2900002108200341a8026a41086a2207201b41086a290000370300200320083703a802201b102f200620032903a802220837030020034188026a41086a200229030037030020034188026a41106a200837030020034188026a41186a2007290300370300200320032903f0033703880220034180096a20034188026a412010aa024101210c2003280280092202410120021b21094109210d41d1d5c700210e02400240200329028409420020021b2208422088a7220a41014b0d0041002102200a0e023e013e0b200a211b4100210203402002201b410176220620026a2207200920074105746a200341e0016a412010ea0641004a1b2102201b20066b221b41014b0d000b0b200920024105746a220f200341e0016a412010ea060d3c0240200a41014b0d004100211b200a0e023e3c3e0b200a21064100211b0340201b20064101762207201b6a220c2009200c4105746a200341d0026a412010ea0641004a1b211b200620076b220641014b0d000c3c0b0b024002400240201b417f6a220241024b0d00024020020e03000102000b200e410174200d4d0d00200f41ff0171450d010b200c201b4100477241ff01710d010b20042006108701200341f0036a41186a4200370300200341f0036a41106a22074200370300200341f0036a41086a221b4200370300200342003703f00341eba1c600ad4280808080b00284220810012202290000211c201b200241086a2900003703002003201c3703f0032002102f41ebdec700ad4280808080f0008410012202290000211c200341a8026a41086a2209200241086a2900003703002003201c3703a8022002102f200720032903a802221c37030020034188026a41086a2202201b29030037030020034188026a41106a221b201c37030020034188026a41186a22072009290300370300200320032903f0033703880220034180096a20034188026a412010aa02200420062003280280092209410120091b220a200329028409420020091b221c422088a7108a0320074200370300201b420037030020024200370300200342003703880220081001220929000021082009290008211d2009102f2002201d370300200320083703880241fbd4c700ad4280808080d000841001220929000821082009290000211d2009102f200341f0046a41106a201d370300200341f0046a41186a2008370300200341f0046a41086a200229030037030020032003290388023703f00420034180096a200341f0046a412010ad0220032d0080092109200720034199096a290000370300201b20034191096a290000370300200220034189096a290000370300200320032900810937038802024020094101470d00200341d0036a41186a20072903002208370300200341d0036a41106a201b290300221d370300200341d0036a41086a2002290300221e3703002003200329038802221f3703d003200341f0056a41186a2008370300200341f0056a41106a201d370300200341f0056a41086a201e3703002003201f3703f0050240024002400240200641014b0d004100210220060e020201020b2006211b4100210203402002201b410176220720026a2209200420094105746a200341f0056a412010ea0641004a1b2102201b20076b221b41014b0d000b0b200420024105746a200341f0056a412010ea06450d010b200341f0046a41186a4200370300200341f0046a41106a22094200370300200341f0046a41086a221b4200370300200342003703f00441eba1c600ad4280808080b0028410012207290000210820034188026a41086a2202200741086a29000037030020032008370388022007102f201b200229030037030020032003290388023703f00441fbd4c700ad4280808080d000841001220729000021082002200741086a29000037030020032008370388022007102f20092003290388022208370300200341f0036a41086a201b290300370300200341f0036a41106a2008370300200341f0036a41186a2002290300370300200320032903f0043703f003200341f0036aad428080808080048410050c010b20034199096a20034188066a29030037000020034191096a20034180066a29030037000020034189096a200341f8056a290300370000200320032903f00537008109200341013a00800920034180096a1089030b0240201ca7450d00200a102f0b200341f0046a41186a4200370300200341f0046a41106a22094200370300200341f0046a41086a221b4200370300200342003703f00441eba1c600ad4280808080b0028410012207290000210820034188026a41086a2202200741086a29000037030020032008370388022007102f201b200229030037030020032003290388023703f00441ebdec700ad4280808080f000841001220729000021082002200741086a29000037030020032008370388022007102f20092003290388022208370300200341f0036a41086a201b290300370300200341f0036a41106a2008370300200341f0036a41186a2002290300370300200320032903f0043703f00320034120360284092003200341f0036a360280092004200620034180096a10aa0102402005450d002004102f0b2003418a063b01800941c8e1ca00410020034180096a108c01200041043a00000c430b200041023a00002005450d422004102f0c420b200241106a2902002108200241186a2f010021102002411a6a290100211c200341e7026a2009290300370000200341ef026a200a2d00003a0000200320072d00003a00d202200320032f01cc023b01d002200320063600db02200320053600d702200320043600d302200320032903f8073700df022003201c37038805200320103b018605200320083701fe042003200c4108763b01f0042003200d3a00fa042003200d4110763b01fc042003200d4108763a00fb042003200e3a00f6042003200e4110763b01f8042003200e4108763a00f7042003200f3a00f2042003200f4110763b01f4042003200f4108763a00f304200c41ff01714101470d25201b0d25200341f8066a41186a200341f0046a41186a290300370300200341f8066a41106a200341f0046a41106a290300370300200341f8066a41086a200341f0046a41086a290300370300200320032903f0043703f806200341f8066a200341d0026a412010ea06450d37200341f0036a41186a4200370300200341f0036a41106a22064200370300200341f0036a41086a22024200370300200342003703f00341eba1c600ad4280808080b002841001221b29000021082002201b41086a290000370300200320083703f003201b102f41ebdec700ad4280808080f000841001221b2900002108200341a8026a41086a2207201b41086a290000370300200320083703a802201b102f200620032903a802220837030020034188026a41086a200229030037030020034188026a41106a200837030020034188026a41186a2007290300370300200320032903f0033703880220034180096a20034188026a412010aa024101210a2003280280092202410120021b21094109210d41d1d5c700210e02400240200329028409420020021b2208422088a7220c41014b0d0041002102200c0e023701370b200c211b4100210203402002201b410176220620026a2207200920074105746a200341f8066a412010ea0641004a1b2102201b20066b221b41014b0d000b0b200920024105746a220f200341f8066a412010ea060d350240200c41014b0d004100211b200c0e023735370b200c21064100211b0340201b20064101762207201b6a220a2009200a4105746a200341d0026a412010ea0641004a1b211b200620076b220641014b0d000c350b0b20034187066a20092903003700002003418f066a200a2d00003a0000200320032f01cc023b01f005200320063600fb05200320053600f705200320043600f305200320032903f8073700ff05200320072d00003a00f20502400240201b417f6a220241024b0d00024020020e03000102000b200e410174200d4d0d00200f41ff0171450d010b200c201b4100477241ff01710d260b200341f0036a41186a4200370300200341f0036a41106a22064200370300200341f0036a41086a22024200370300200342003703f00341eba1c600ad4280808080b002841001221b29000021082002201b41086a290000370300200320083703f003201b102f41ebdec700ad4280808080f000841001221b2900002108200341a8026a41086a2207201b41086a290000370300200320083703a802201b102f200620032903a802220837030020034188026a41086a200229030037030020034188026a41106a200837030020034188026a41186a2007290300370300200320032903f0033703880220034180096a20034188026a412010aa022003280280092202410120021b2109024002400240200329028409420020021b2208422088a7220241014b0d004100211b20020e020201020b4100211b0340201b20024101762206201b6a2207200920074105746a200341f0056a412010ea0641004a1b211b200220066b220241014b0d000b0b2009201b4105746a200341f0056a412010ea060d0002402008a7450d002009102f0b200341f0046a41186a4200370300200341f0046a41106a22074200370300200341f0046a41086a221b4200370300200342003703f00441eba1c600ad4280808080b0028410012206290000210820034188026a41086a2202200641086a29000037030020032008370388022006102f201b200229030037030020032003290388023703f00441fbd4c700ad4280808080d000841001220629000021082002200641086a29000037030020032008370388022006102f20072003290388022208370300200341f0036a41086a201b290300370300200341f0036a41106a2008370300200341f0036a41186a2002290300370300200320032903f0043703f0034120102d2202450d55200220032903f005370000200241186a200341f0056a41186a221b290300370000200241106a200341f0056a41106a2206290300370000200241086a200341f0056a41086a2207290300370000200341f0036aad42808080808004842002ad428080808080048410042002102f20034199096a201b29030037000020034191096a200629030037000020034189096a2007290300370000200320032903f00537008109200341013a00800920034180096a108903200041043a00000c3e0b200041831c3b0100200041086a4109360200200041046a41d1d5c700360200200041026a41013a00002008a7450d3d2009102f0c3d0b024002400240201b417f6a220241024b0d00024020020e03000102000b200e410174200d4d0d00200f41ff0171450d010b200c201b4100477241ff01710d010b200341f0046a41186a4200370300200341f0046a41106a22054200370300200341f0046a41086a221b4200370300200342003703f00441eba1c600ad4280808080b0028410012204290000210820034188026a41086a2202200441086a29000037030020032008370388022004102f201b200229030037030020032003290388023703f00441fbd4c700ad4280808080d000841001220429000021082002200441086a29000037030020032008370388022004102f20052003290388022208370300200341f0036a41086a201b290300370300200341f0036a41106a2008370300200341f0036a41186a2002290300370300200320032903f0043703f003200341f0036aad42808080808004841005200341003a00800920034180096a108903200041043a00000c400b200041023a00000c3f0b200041023a00000c3b0b20022d00000d2320022d000141ff01714102470d2320012802042105200341f0036a41186a22064200370300200341f0036a41106a22044200370300200341f0036a41086a22024200370300200342003703f00341d5a2ca00ad42808080809001841001221b2900002108201b290008211c201b102f2002201c370300200320083703f00341a2c9c300ad4280808080e000841001221b2900082108201b290000211c201b102f20034188026a41106a2207201c37030020034188026a41186a2209200837030020034188026a41086a220a2002290300370300200320032903f00337038802200341b8016a20034188026a412041c8e1ca004100410010b5014101211b20032802b8014101460d24200642003703002004420037030020024200370300200342003703f003418de6c300ad4280808080e000841001221b29000021082002201b41086a290000370300200320083703f003201b102f419ce6c300ad4280808080e000841001221b2900002108200341a8026a41086a2206201b41086a290000370300200320083703a802201b102f200420032903a8022208370300200a20022903003703002007200837030020092006290300370300200320032903f00337038802200341b0016a20034188026a4120109501024020032802b401410020032802b0011b2005490d00200341f0036a41186a4200370300200341f0036a41106a4200370300200341f0036a41086a22024200370300200342003703f00341d5a2ca00ad42808080809001841001221b2900002108201b290008211c201b102f2002201c370300200320083703f00341a2c9c300ad4280808080e000841001221b2900082108201b290000211c201b102f20034188026a41106a201c37030020034188026a41186a200837030020034188026a41086a2002290300370300200320032903f00337038802200320053602800920034188026aad428080808080048420034180096aad4280808080c000841004200041043a00004101211b0c460b200041831e3b0100200041086a4107360200200041046a41f5e1c3003602004101211b200041026a41013a00000c450b200141086a280200210420012802042105024020022d00000d004101211b20022d000141ff01714101470d00200041043a00004100210e2004450d2f0c2e0b200041023a00004100210e4101211b20040d2d0c2e0b20034180096a41386a200141c0006a29030037030020034180096a41306a200141386a29030037030020034180096a41286a200141306a29030037030020034180096a41206a200141286a29030037030020034180096a41186a200141206a29030037030020034180096a41106a200141186a29030037030020034180096a41086a200141106a2903003703002003200141086a29030037038009200341f8076a41206a200241206a290200370300200341f8076a41186a200241186a290200370300200341f8076a41106a200241106a290200370300200341f8076a41086a200241086a290200370300200320022902003703f807200020034180096a200341f8076a108b034100210f4101211b41012104410121054101210641012107410121094101210a4101210b4101210c4101210d4101210e0c630b20034180096a200141086a41880110e8061a200341f8076a41206a200241206a290200370300200341f8076a41186a200241186a290200370300200341f8076a41106a200241106a290200370300200341f8076a41086a200241086a290200370300200320022902003703f807200020034180096a200341f8076a109c02410021104101211b41012104410121054101210641012107410121094101210a4101210b4101210c4101210d4101210e4101210f0c630b200341d0026a41086a2205200141146a290200370300200341d0026a41106a22062001411c6a290200370300200341d0026a41186a2207200141246a29020037030020032001410c6a2902003703d0022002411a6a2901002108200241196a2d00002109200241186a2d0000210a200241166a2f0100210b200241156a2d0000210c200241146a2d0000210d200241126a2f0100210e200241116a2d0000210f200241106a2d000021102002410e6a2f010021112002410d6a2d000021122002410c6a2d000021132002410a6a2f01002114200241096a2d00002115200241086a2d00002116200241066a2f01002117200241056a2d00002118200241046a2d00002119200241026a2f0100211a200141086a280200211b20022d0001210420022d00002102024002400240024020012802040e0400010203000b20034180096a41146a41013602002003420137028409200341b4d8c90036028009200341043602fc06200341fcdbc9003602f8062003200341f8066a3602900920034180096a41e8d8c9001043000b02400240200241ff01710d00200441ff01714101470d002003200837038806200320093a0087062003200a3a0086062003200b3b0184062003200c3a0083062003200d3a0082062003200e3b0180062003200f3a00ff05200320103a00fe05200320113b01fc05200320123a00fb05200320133a00fa05200320143b01f805200320153a00f705200320163a00f605200320173b01f405200320183a00f305200320193a00f2052003201a3b01f005200341f0036a41186a22064200370300200341f0036a41106a22044200370300200341f0036a41086a22024200370300200342003703f00341a4e3c400ad4280808080c000841001220529000021082002200541086a290000370300200320083703f0032005102f4180e4c400ad42808080803084100122052900002108200341a8026a41086a2207200541086a290000370300200320083703a8022005102f200420032903a802220837030020034188026a41086a200229030037030020034188026a41106a200837030020034188026a41186a2007290300370300200320032903f0033703880220034180096a20034188026a412010ad0220032d0080092105200620034199096a290000370300200420034191096a290000370300200220034189096a29000037030020032003290081093703f0030240024020054101460d00200341f8076a41186a4200370300200341f8076a41106a4200370300200341f8076a41086a4200370300200342003703f8070c010b200341f8076a41186a2006290300370300200341f8076a41106a2004290300370300200341f8076a41086a2002290300370300200320032903f0033703f8070b200341f0056a200341f8076a412010ea060d0120034180096a201b41b00210e8061a200341003b01f807200341f8066a20034180096a200341f8076a108b0141012102024020032d00f8064104460d0020034180096a41086a200341f8066a41086a280200360200200320032903f8063703800920034180096a108c03410021020b200320023a0082092003410e3b01800941c8e1ca00410020034180096a108c01200041043a00000c2c0b200041023a00000c2a0b20004183263b0100200041086a410b360200200041046a4199b3c400360200200041026a41003a00000c290b200341f8066a41186a2007290300370300200341f8066a41106a2006290300370300200341f8066a41086a2005290300370300200320032903d0023703f806200241ff01710d22200441ff01714101470d222003200837038806200320093a0087062003200a3a0086062003200b3b0184062003200c3a0083062003200d3a0082062003200e3b0180062003200f3a00ff05200320103a00fe05200320113b01fc05200320123a00fb05200320133a00fa05200320143b01f805200320153a00f705200320163a00f605200320173b01f405200320183a00f305200320193a00f2052003201a3b01f005200341f0036a41186a22064200370300200341f0036a41106a22044200370300200341f0036a41086a22024200370300200342003703f00341a4e3c400ad4280808080c000841001220529000021082002200541086a290000370300200320083703f0032005102f4180e4c400ad42808080803084100122052900002108200341a8026a41086a2207200541086a290000370300200320083703a8022005102f200420032903a802220837030020034188026a41086a200229030037030020034188026a41106a200837030020034188026a41186a2007290300370300200320032903f0033703880220034180096a20034188026a412010ad0220032d0080092105200620034199096a290000370300200420034191096a290000370300200220034189096a29000037030020032003290081093703f0030240024020054101460d00200341f8076a41186a4200370300200341f8076a41106a4200370300200341f8076a41086a4200370300200342003703f8070c010b200341f8076a41186a2006290300370300200341f8076a41106a2004290300370300200341f8076a41086a2002290300370300200320032903f0033703f8070b200341f0056a200341f8076a412010ea060d232003418c096a200341f8066a41086a29030037020020034194096a200341f8066a41106a2903003702002003419c096a200341f8066a41186a2903003702002003201b36028009200320032903f80637028409200341f8076a20034180096a10bb0120034188026a41086a2202200341f8076a41096a29000037030020034188026a41106a221b200341f8076a41116a29000037030020034188026a41186a2205200341f8076a41196a290000370300200320032900f90737038802024020032d00f8074101460d00200341f0046a41186a2005290300370300200341f0046a41106a201b290300370300200341f0046a41086a200229030037030020032003290388023703f00442002108200341f0036a41186a22074200370300200341f0036a41106a22094200370300200341f0036a41086a22064200370300200342003703f00341a4e3c400ad4280808080c00084221c1001220a290000211d2006200a41086a2900003703002003201d3703f003200a102f4180e4c400ad42808080803084221d1001220a290000211e200341a8026a41086a220b200a41086a2900003703002003201e3703a802200a102f200420032903a802370000200441086a200b29030037000020022006290300370300201b200929030037030020052007290300370300200320032903f0033703880220034180096a20034188026a412010ad0220032d008009211b200720034180096a41196a290000370300200920034180096a41116a290000370300200620034180096a41096a29000037030020032003290081093703f0034100210241002104410021054100210641002107410021094100210a4100210b4100210c4100210d4100210e4100210f4100211041002111410021124100211341002114410021150240201b4101470d00200329038804210820032d008704210220032d008604210420032f018404210520032d008304210620032d008204210720032f018004210920032d00ff03210a20032d00fe03210b20032f01fc03210c20032d00fb03210d20032d00fa03210e20032f01f803210f20032d00f703211020032d00f603211120032f01f403211220032d00f303211320032d00f203211420032f01f00321150b2003419a096a200837010020034199096a20023a000020034180096a41186a221b20043a000020034196096a20053b010020034195096a20063a000020034194096a20073a000020034192096a20093b010020034191096a200a3a000020034180096a41106a2204200b3a00002003418e096a200c3b01002003418d096a200d3a00002003418c096a200e3a00002003418a096a200f3b010020034189096a20103a000020034180096a41086a220520113a0000200320123b018609200320133a008509200320143a008409200320153b0182092003418e023b01800941c8e1ca00410020034180096a108c01201b200341f0046a41186a2903003703002004200341f0046a41106a2903003703002005200341f0046a41086a290300370300200320032903f00437038009201c1001220229000021082002290008211c2002102f201d10012202290000211d2002290008211e2002102f2003201e370388042003201d370380042003201c3703f803200320083703f0034120102d2202450d4f2002200329038009370000200241186a201b290300370000200241106a2004290300370000200241086a2005290300370000200341f0036aad42808080808004842002ad428080808080048410042002102f200041043a00000c2b0b200041013a00000c2a0b2001412c6a2802002120200341f8066a41186a2007290300370300200341f8066a41106a2006290300370300200341f8066a41086a2005290300370300200320032903d0023703f806024002400240200241ff01710d00200441ff01714101470d002003200837038806200320093a0087062003200a3a0086062003200b3b0184062003200c3a0083062003200d3a0082062003200e3b0180062003200f3a00ff05200320103a00fe05200320113b01fc05200320123a00fb05200320133a00fa05200320143b01f805200320153a00f705200320163a00f605200320173b01f405200320183a00f305200320193a00f2052003201a3b01f005200341f0036a41186a22064200370300200341f0036a41106a22044200370300200341f0036a41086a22024200370300200342003703f00341a4e3c400ad4280808080c000841001220529000021082002200541086a290000370300200320083703f0032005102f4180e4c400ad42808080803084100122052900002108200341a8026a41086a2207200541086a290000370300200320083703a8022005102f200420032903a802220837030020034188026a41086a200229030037030020034188026a41106a200837030020034188026a41186a2007290300370300200320032903f0033703880220034180096a20034188026a412010ad0220032d0080092105200620034199096a290000370300200420034191096a290000370300200220034189096a29000037030020032003290081093703f0030240024020054101460d00200341f8076a41186a4200370300200341f8076a41106a4200370300200341f8076a41086a4200370300200342003703f8070c010b200341f8076a41186a2006290300370300200341f8076a41106a2004290300370300200341f8076a41086a2002290300370300200320032903f0033703f8070b200341f0056a200341f8076a412010ea060d0120034180096a410c6a200341f8066a41086a29030037020020034180096a41146a200341f8066a41106a2903003702002003419c096a200341f8066a41186a2903003702002003201b36028009200320032903f80637028409200341f8076a20034180096a10bb014101210220032d00f8074101460d02200341f8076a41086a2d0000211b20034181086a2f0000210420034183086a2d00002105200341f8076a410c6a2d0000210620034185086a2f0000210720034187086a2d00002109200341f8076a41106a2d0000210a20034189086a2f0000210b2003418b086a2d0000210c200341f8076a41146a2d0000210d2003418d086a2f0000210e2003418f086a2d0000210f200341f8076a41186a2d0000211020032f00f907211120032d00fb07211220032d00fc07211320032f00fd07211420032d00ff072115200320034191086a29000037038804200320103a0087042003200f3a0086042003200e3b0184042003200d3a0083042003200c3a0082042003200b3b0180042003200a3a00ff03200320093a00fe03200320073b01fc03200320063a00fb03200320053a00fa03200320043b01f8032003201b3a00f703200320153a00f603200320143b01f403200320133a00f303200320123a00f203200320113b01f00320034180096a202041b00210e8061a20034182086a20032903f8033701002003418a086a20032903800437010020034192086a20032903880437010020034180023b01f807200320032903f0033701fa07200341f0046a20034180096a200341f8076a108b01024020032d00f0044104460d0020034180096a41086a200341f0046a41086a280200360200200320032903f0043703800920034180096a108c03410021020b200320023a0082092003418e043b01800941c8e1ca00410020034180096a108c01200041043a00002020102f0c2c0b200041023a00000c280b20004183263b0100200041086a410b360200200041046a4199b3c400360200200041026a41003a00000c270b200041013a00000c260b2001411c6a280200210b200141186a280200210d200141146a280200210c2001410c6a280200210e200141086a280200211002400240024020022d00000d0020022d000141ff01714102470d00200141246a280200210f200141106a2802002107200341f0036a41186a22054200370300200341f0036a41106a22064200370300200341f0036a41086a221b4200370300200342003703f003419c9eca00ad4280808080f00084100122022900002108201b200241086a290000370300200320083703f0032002102f41a39eca00ad4280808080c001841001220229000821082002290000211c2002102f20034188026a41106a201c37030020034188026a41186a200837030020034188026a41086a201b290300370300200320032903f00337038802200341c8016a20034188026a412010950120032802cc01210420032802c801210941d39bca00ad4280808080800184100122022900002108200341a8026a41086a220a200241086a290000370300200320083703a8022002102f41db9bca00ad4280808080a0028410012202290008210820022d0007211120022d0006211220022f0004211320022d0003211420022d0002211520022f000021162002102f20032004410020091b22173602800920034180096aad22214280808080c00084221c10032202290000211d200241086a290000211e200241106a290000211f2005200241186a2900003703002006201f370300201b201e3703002003201d3703f0032002102f41c000102d2202450d4f200220032903a802370000200241086a200a290300370000200220113a0017200220123a0016200220133b0014200220143a0013200220153a0012200220163b001020022008370018200220032903f003370020200241286a201b290300370000200241306a2006290300370000200241386a20052903003700002003200f36028009201c100322042900002108200441086a290000211c200441106a290000211d2005200441186a2900003703002006201d370300201b201c370300200320083703f0032004102f200241c00041800110312202450d4f200220032903f003370040200241d8006a200341f0036a41186a2204290300370000200241d0006a200341f0036a41106a2205290300370000200241c8006a200341f0036a41086a221b290300370000200341c0016a200241e00041c8e1ca004100410010b50120032802c00121062002102f2004420037030020054200370300201b4200370300200342003703f00341d39bca00ad4280808080800184100122022900002108201b200241086a290000370300200320083703f0032002102f419087ca00ad4280808080c000841001220229000821082002290000211c2002102f20034188026a41106a201c37030020034188026a41186a200837030020034188026a41086a201b290300370300200320032903f0033703880220034180096a20034188026a108d032003280280092202410120021b2111200329028409420020021b210802402006410146221b0d002011200f4105746a4100200f2008422088a7491b22020d030b20004183283b0100200041026a201b3a0000200041086a4113410a201b1b360200200041046a41d0e0c30041e3e0c300201b1b3602002008a7450d012011102f0c010b200041023a00000b0240200e450d002010102f0b200b450d25200b410c6c2100200c210203400240200241046a280200450d002002280200102f0b2002410c6a2102200041746a22000d000c260b0b200241086a290000211c200241106a290000211d2002290000211e20034188026a41186a200241186a290000221f37030020034188026a41106a201d37030020034188026a41086a201c3703002003201e370388022003418d096a201c37000020034195096a201d3700002003419d096a201f370000200341003a0084092003410f3a0080092003201e3700850941c8e1ca00410020034180096a108c0120034100360288092003420137038009200720034180096a106902400240200328028409221b20032802880922026b2007490d00200328028009211b0c010b200220076a22042002490d37201b41017422052004200520044b1b22044100480d3702400240201b0d002004102d211b0c010b200328028009201b20041031211b0b201b450d4d20032004360284092003201b360280090b2003200220076a36028809201b20026a2010200710e8061a200b20034180096a1069200b450d22200c200b410c6c6a210a200c211b0340201b2802002107201b41086a280200220220034180096a106902400240200328028409220620032802880922046b2002490d0020032802800921050c010b200420026a22052004490d38200641017422092005200920054b1b22094100480d380240024020060d002009102d21050c010b20032802800920062009103121050b2005450d4e20032009360284092003200536028009200921060b2003200420026a220936028809200520046a2007200210e8061a201b410c6a221b200a470d000c240b0b20034180096a200141086a41a80210e8061a200341f8076a41206a200241206a290200370300200341f8076a41186a200241186a290200370300200341f8076a41106a200241106a290200370300200341f8076a41086a200241086a290200370300200320022902003703f807200020034180096a200341f8076a10b201410021134101211b41012104410121054101210641012107410121094101210a4101210b4101210c4101210d4101210e4101210f410121104101211141012112410121000c630b20034180096a200141046a41c40010e8061a200341f8076a41206a200241206a290200370300200341f8076a41186a200241186a290200370300200341f8076a41106a200241106a290200370300200341f8076a41086a200241086a290200370300200320022902003703f807200020034180096a200341f8076a108e03410021144101211b41012104410121054101210641012107410121094101210a4101210b4101210c4101210d4101210e4101210f41012110410121114101211241012113410121000c630b20034180096a200141086a41c80010e8061a200341f8076a41206a200241206a290200370300200341f8076a41186a200241186a290200370300200341f8076a41106a200241106a290200370300200341f8076a41086a200241086a290200370300200320022902003703f807200020034180096a200341f8076a108f03410021004101211b41012104410121054101210641012107410121094101210a4101210b4101210c4101210d4101210e4101210f410121104101211141012112410121130c610b200041023a0000410121044101211b410121050c530b200041023a00004101211b0c3b0b20004183363b0100200041086a4109360200200041046a41e1f0c000360200200041026a41023a00004101211b0c3a0b20004183363b0100200041086a4117360200200041046a41e6b4c600360200200041026a41013a00000c390b103d000b200041023a00004101211b0c4d0b200041023a00004101211b0c360b41b5e4c000413041f8b4ca001039000b200041023a00004101211b0c340b200041023a00004101211b0c330b410121054188d9c9002106410821070c2f0b200041830a3b0100200041086a410b360200200041046a41f8d8c900360200200041026a41033a00004101211b0c310b410121044188d9c9002105410821060c2c0b200041023a00004101211b0c2f0b200041023a00004101211b0c2e0b200041023a00004101211b0c2d0b200341f0036a41186a220b4200370300200341f0036a41106a22044200370300200341f0036a41086a221b4200370300200342003703f00341e7a2ca00ad4280808080800184221e10012209290000211f2009290008212e2009102f201b202e3703002003201f3703f00341ecb5c600ad4280808080d00184221f1001220a290000212e200341a8026a41086a2209200a41086a2900003703002003202e3703a802200a102f200420032903a802222e37030020034188026a41086a220c201b29030037030020034188026a41106a220d202e37030020034188026a41186a220e2009290300370300200320032903f0033703880220034180016a20034188026a4120109c0120034180016a41106a290300212e200329038801212f200328028001210a200b420037030020044200370300201b4200370300200342003703f003201e1001220b290000211e200b2900082130200b102f201b20303703002003201e3703f003201f1001220b290000211e2009200b41086a2900003703002003201e3703a802200b102f200420032903a802221e370300200c201b290300370300200d201e370300200e2009290300370300200320032903f003370388022003427f202e4200200a1b221e2008201d7d201c202154ad7d7c202f4200200a1b221f201c20217d7c2221201f54221bad7c221f201b201f201e54201f201e511b221b1b370388092003427f2021201b1b3703800920034180096a211b20034188026a21040c260b200041023a00004101211b0c2b0b200041023a00004101211b0c2a0b200041023a00000c220b419ae3c300411e41f8b4ca001039000b200041023a00000c1c0b41b8e3c300411d41f8b4ca001039000b200041023a00000c1a0b200041043a00000c190b200041023a00000c180b200041023a00000c170b200041023a00004101211b0c210b200041831e3b0100200041086a410e360200200041046a41e7e1c300360200200041026a41003a00000c200b200041023a00000c070b20004183263b0100200041086a410b360200200041046a4199b3c400360200200041026a41003a00000c060b2003280288092109200328028409210620032802800921050b41d39bca00ad428080808080018410012202290000211c200341a8026a41086a221b200241086a2900003703002003201c3703a8022002102f41db9bca00ad4280808080a0028410012202290008211c20022d0007211220022d0006211320022f0004211420022d0003211520022d0002211620022f000021182002102f200320173602800920214280808080c00084221d10032202290000211e200241086a290000211f200241106a2900002121200341f0036a41186a2204200241186a290000370300200341f0036a41106a22072021370300200341f0036a41086a220a201f3703002003201e3703f0032002102f41c000102d2202450d28200220032903a802370000200241086a201b290300370000200220123a0017200220133a0016200220143b0014200220153a0013200220163a0012200220183b00102002201c370018200220032903f003370020200241286a200a290300370000200241306a2007290300370000200241386a20042903003700002003200f36028009201d1003221b290000211c201b41086a290000211d201b41106a290000211e2004201b41186a2900003703002007201e370300200a201d3703002003201c3703f003201b102f200241c00041800110312202450d28200220032903f003370040200241d8006a20034188046a290300370000200241d0006a20034180046a290300370000200241c8006a200341f8036a290300370000200341e0003602840920032002360280092005200920034180096a109d022002102f02402006450d002005102f0b02402008a7450d002011102f0b200041043a00000240200e450d002010102f0b200b450d00200b410c6c2100200c210203400240200241046a280200450d002002280200102f0b2002410c6a2102200041746a22000d000b0b410021124101211b0240200d450d00200c102f0b41012104410121054101210641012107410121094101210a4101210b4101210c4101210d4101210e4101210f41012110410121110c3e0b2020108e012020102f0c020b201b108e010b201b102f0b41002111410121044101211b410121054101210641012107410121094101210a4101210b4101210c4101210d4101210e4101210f410121100c390b2005102f0b41012104410121054101210641012107410121094101210a4101210b4101210c4101210d0c340b2009201b4105746a200341d0026a412010ea060d01410d210d41f2b6c400210e4100210a0b200041831c3b0100200041086a200d360200200041046a200e360200200041026a200a3a00002008a7450d082009102f0c080b20034188026a41186a2206200341d0026a41186a29030037030020034188026a41106a2207200341d0026a41106a29030037030020034188026a41086a221b200341d0026a41086a290300370300200320032903d002370388022002200c4f0d01200f200329038802370000200f41186a2006290300370000200f41106a2007290300370000200f41086a201b2903003700002009200c108701200341f0046a41186a22074200370300200341f0046a41106a22064200370300200341f0046a41086a22024200370300200342003703f00441eba1c600ad4280808080b00284221c1001220a290000211d201b200a41086a2900003703002003201d37038802200a102f2002201b29030037030020032003290388023703f00441ebdec700ad4280808080f000841001220a290000211d201b200a41086a2900003703002003201d37038802200a102f2006200329038802221d370300200341f0036a41086a220e2002290300370300200341f0036a41106a220f201d370300200341f0036a41186a2210201b290300370300200320032903f0043703f00320034120360284092003200341f0036a360280092009200c20034180096a10aa0120034180096a41186a200341f8066a41186a29030037030020034180096a41106a200341f8066a41106a29030037030020034180096a41086a200341f8066a41086a290300370300200320032903f806370380094101210d20034180096a41012009200c108803200742003703002006420037030020024200370300200342003703f004201c1001220a290000211c201b200a41086a2900003703002003201c37038802200a102f2002201b29030037030020032003290388023703f00441fbd4c700ad4280808080d000841001220a290000211c201b200a41086a2900003703002003201c37038802200a102f2006200329038802221c370300200e2002290300370300200f201c3703002010201b290300370300200320032903f0043703f00320034180096a200341f0036a412010ad0220032d008009211b200720034180096a41196a290000370300200620034180096a41116a290000370300200220034180096a41096a29000037030020032003290081093703f00402400240201b4101460d004100210d200341003a00f0050c010b200341f0056a41096a200341f8046a290300370000200341f0056a41116a20034180056a290300370000200341f0056a41196a20034188056a290300370000200341013a00f005200320032903f0043700f1050b20034199096a20034190076a29030037000020034191096a20034188076a29030037000020034189096a20034180076a290300370000200320032903f80637008109200341013a0080090240200d450d00200341f0056a41017220034180096a410172412010ea060d00200341f0046a41186a220a4200370300200341f0046a41106a220c4200370300200341f0046a41086a221b4200370300200342003703f00441eba1c600ad4280808080b0028410012207290000211c20034188026a41086a2202200741086a2900003703002003201c370388022007102f201b200229030037030020032003290388023703f00441fbd4c700ad4280808080d0008410012207290000211c2002200741086a2900003703002003201c370388022007102f2006200329038802370000200641086a2002290300370000200341f0036a41086a201b290300370300200341f0036a41106a200c290300370300200341f0036a41186a200a290300370300200320032903f0043703f0034120102d2202450d1f200220032903d002370000200241186a200341d0026a41186a221b290300370000200241106a200341d0026a41106a2206290300370000200241086a200341d0026a41086a2207290300370000200341f0036aad42808080808004842002ad428080808080048410042002102f20034199096a201b29030037000020034191096a200629030037000020034189096a2007290300370000200320032903d00237008109200341013a00800920034180096a1089030b2008a7450d002009102f0b2003418a083b01800941c8e1ca00410020034180096a108c01200041043a00000c060b419cc3ca002002200c103b000b2009201b4105746a200341d0026a412010ea060d01410d210d41f2b6c400210e4100210c0b200041831c3b0100200041086a200d360200200041046a200e360200200041026a200c3a00002008a7450d032009102f0c030b200341f0036a41186a2207200341d0026a41186a290300370300200341f0036a41106a220c200341d0026a41106a290300370300200341f0036a41086a220d200341d0026a41086a290300370300200320032903d0023703f00302402002200a4f0d00200f20032903f003370000200f41186a2007290300370000200f41106a200c290300370000200f41086a200d2903003700002009200a10870120034188026a41186a420037030020034188026a41106a420037030020034188026a41086a22024200370300200342003703880241eba1c600ad4280808080b00284221c1001221b290000211d201b290008211e201b102f2002201e3703002003201d3703880241ebdec700ad4280808080f000841001221b290008211d201b290000211e201b102f200341f0046a41106a2206201e370300200341f0046a41186a220e201d370300200341f0046a41086a221b200229030037030020032003290388023703f00420034120360284092003200341f0046a360280092009200a20034180096a10aa0120034180096a41186a200341e0016a41186a29030037030020034180096a41106a200341e0016a41106a29030037030020034180096a41086a200341e0016a41086a290300370300200320032903e0013703800920034180096a41012009200a108803200e420037030020064200370300201b4200370300200342003703f004201c1001220f290000211c2002200f41086a2900003703002003201c37038802200f102f201b200229030037030020032003290388023703f00441fbd4c700ad4280808080d000841001220f290000211c2002200f41086a2900003703002003201c37038802200f102f2006200329038802221c370300200d201b290300370300200c201c37030020072002290300370300200320032903f0043703f00320034180096a200341f0036a412010ad0220032d0080092102200e20034199096a290000370300200620034191096a290000370300201b20034189096a29000037030020032003290081093703f004024020024101470d00200341f8066a41186a200341f0046a41186a290300221c370300200341f8066a41106a200341f0046a41106a290300221d370300200341f8066a41086a200341f0046a41086a290300221e370300200320032903f004221f3703f806200341f0056a41186a201c370300200341f0056a41106a201d370300200341f0056a41086a201e3703002003201f3703f005410021020240200a4101460d004100210203402002200a410176221b20026a2206200920064105746a200341f0056a412010ea0641004a1b2102200a201b6b220a41014b0d000b0b0240200920024105746a200341f0056a412010ea06450d00200341d0036a41186a4200370300200341d0036a41106a22064200370300200341d0036a41086a22024200370300200342003703d00341eba1c600ad4280808080b002841001221b290000211c200341b8026a41086a2207201b41086a2900003703002003201c3703b802201b102f20022007290300370300200320032903b8023703d00341fbd4c700ad4280808080d000841001221b290000211c200341a8026a41086a2207201b41086a2900003703002003201c3703a802201b102f200620032903a802221c37030020034180096a41086a200229030037030020034180096a41106a201c37030020034180096a41186a2007290300370300200320032903d0033703800920034180096aad428080808080048410050c010b20034199096a20034188066a29030037000020034191096a20034180066a29030037000020034189096a200341f8056a290300370000200320032903f00537008109200341013a00800920034180096a1089030b2003418a043b01800941c8e1ca00410020034180096a108c0102402008a7450d002009102f0b200041043a00000c030b419cc3ca002002200a103b000b20034180096a41186a200341f0056a41186a29030037030020034180096a41106a200341f0056a41106a29030037030020034180096a41086a200341f0056a41086a290300370300200320032903f005370380094100210a20034180096a211b410021060b0240200a200d470d00200c200a470d00200c41016a2202200c490d02200c41017422072002200720024b1b220241ffffff3f712002470d02200241057422024100480d0202400240200c0d002002102d21090c010b2009200c4105742002103121090b2009450d18200320093602f8062002410576210c0b200920064105746a220241206a2002200a20066b41057410e9061a200241186a201b41186a290000370000200241106a201b41106a290000370000200241086a201b41086a2900003700002002201b290000370000200341f0046a41186a4200370300200341f0046a41106a22074200370300200341f0046a41086a221b4200370300200342003703f00441eba1c600ad4280808080b0028410012206290000210820034188026a41086a2202200641086a29000037030020032008370388022006102f201b200229030037030020032003290388023703f00441ebdec700ad4280808080f000841001220629000021082002200641086a29000037030020032008370388022006102f20072003290388022208370300200341f0036a41086a201b290300370300200341f0036a41106a2008370300200341f0036a41186a2002290300370300200320032903f0043703f00320034120360284092003200341f0036a3602800920032802f806200a41016a220220034180096a10aa0120034180096a41186a200341f0056a41186a29030037030020034180096a41106a200341f0056a41106a29030037030020034180096a41086a200341f0056a41086a290300370300200320032903f0053703800941c8e1ca00410020032802f806221b20021088032003410a3b01800941c8e1ca00410020034180096a108c010240200c450d00201b102f0b200041043a00000b200b4104470d0220050d010c020b1038000b2004102f0b4100210d410121044101211b410121054101210641012107410121094101210a4101210b4101210c0c250b41002107410121044101211b41012105410121060c1f0b2004ad4280808080800484201bad4280808080800284100420032903c002211f20032903b802211e0b202b202d7c2121200341f0046a41106a211b024002400240201e202256201f202356201f20235122041b0d00201e202254201f20235420041b450d02200341f0036a41186a220c4200370300200341f0036a41106a22094200370300200341f0036a41086a22044200370300200342003703f00341e7a2ca00ad4280808080800184222b1001220a290000212d200a290008212e200a102f2004202e3703002003202d3703f00341ecb5c600ad4280808080d00184222d1001220b290000212e200341a8026a41086a220a200b41086a2900003703002003202e3703a802200b102f200920032903a802222e37030020034188026a41086a220d200429030037030020034188026a41106a220e202e37030020034188026a41186a220f200a290300370300200320032903f00337038802200341e8006a20034188026a4120109c01200341e8006a41106a290300212e2003290370212f2003280268210b200c42003703002009420037030020044200370300200342003703f003202b1001220c290000212b200c2900082130200c102f200420303703002003202b3703f003202d1001220c290000212b200a200c41086a2900003703002003202b3703a802200c102f200920032903a802222b370300200d2004290300370300200e202b370300200f200a290300370300200320032903f0033703880220034200202e4200200b1b222b2022201e54ad201f20237d7c7c202f4200200b1b22232022201e7d222d54ad7d22222023202d7d222d2023562022202b562022202b511b22041b3703880920034200202d20041b3703800920034180096a210420034188026a21090c010b200341f0036a41186a220c4200370300200341f0036a41106a22094200370300200341f0036a41086a22044200370300200342003703f00341e7a2ca00ad4280808080800184222b1001220a290000212d200a290008212e200a102f2004202e3703002003202d3703f00341ecb5c600ad4280808080d00184222d1001220b290000212e200341a8026a41086a220a200b41086a2900003703002003202e3703a802200b102f200920032903a802222e37030020034188026a41086a220d200429030037030020034188026a41106a220e202e37030020034188026a41186a220f200a290300370300200320032903f00337038802200341d0006a20034188026a4120109c01200341d0006a41106a290300212e2003290358212f2003280250210b200c42003703002009420037030020044200370300200342003703f003202b1001220c290000212b200c2900082130200c102f200420303703002003202b3703f003202d1001220c290000212b200a200c41086a2900003703002003202b3703a802200c102f200920032903a802222b370300200d2004290300370300200e202b370300200f200a290300370300200320032903f003370388022003427f202e4200200b1b222b201f20237d201e202254ad7d7c202f4200200b1b2223201e20227d7c222d2023542204ad7c222220042022202b542022202b511b22041b370388092003427f202d20041b3703800920034180096a210420034188026a21090b2009ad42808080808004842004ad428080808080028410040b2021201d5121092021201d54210a2003201c3703f0042003201f370388052003201e37038005200320083703f80420032802cc022104200341f0036a41186a201b41086a290300221d370300200341f0036a41206a220b201b41106a29030037030020034198046a220c201b41186a290300370300200341a0046a220d201b41206a290300370300200320083703f8032003201c3703f0032003201b29030022223703800402400240427f201c20227c22222022201c54221b2008201d7c201bad7c221d200854201d2008511b221b1b2222428080e983b1de16544100427f201d201b1b2223501b0d00200341f0036a41106a2903002122200d2903002123200c290300212b200b290300212d20032903f803212e20032903f003212f4201211d20032903880421300c010b4200211d02402022202384500d0020222023109a01200341b8096a2023370300200341b0096a202237030020034180096a41086a41013a000020034189096a200429000037000020034191096a200441086a29000037000020034199096a200441106a290000370000200341a1096a200441186a290000370000200341033a00800941c8e1ca00410020034180096a108c010b0b2007200a20091b211b200341a0076a202d370300200341a8076a202b37030020034188076a202e370300200341b0076a202337030020034190076a202237030020032030370398072003202a3703b8072003202f37038007200320064100202442015122071b3a00c40720032005410020071b3602c0072003201d4201512205ad3703f8060240024020050d002002ad428080808080088410050c010b200341c00036028409200320023602800920034180076a20034180096a1090030b427f2021201b1b2121427f202c201b1b21222002102f201d420152210202400240024020244201510d0020020d004103211b200341f8076a21020c010b20244201522002410173720d014104211b200341f0056a21020b200241046a201b3a0000200241056a20032903d003370000200241003a00002002410d6a200341d8036a290300370000200241156a200341e0036a2903003700002002411d6a200341e8036a29030037000041c8e1ca0041002002108c010b0240202220218450450d00200341b8096a2008370300200341b0096a201c37030020034180096a41086a41003a000020034189096a200429000037000020034191096a200441086a29000037000020034199096a200441106a290000370000200341a1096a200441186a290000370000200341033a00800941c8e1ca00410020034180096a108c010b200341c8096a201f370300200341c0096a201e370300200341b8096a2008370300200341b0096a201c37030020034180096a41086a41033a000020034189096a20032903d00337000020034191096a200341d0036a41086a29030037000020034199096a200341e0036a290300370000200341a1096a200341e8036a290300370000200341033a00800941c8e1ca00410020034180096a108c01200041043a00004101211b0c040b024020032802f403450d00201b102f0b024020024104470d0020034188096a20173602004101211b200341013a008409200341023a00800941c8e1ca00410020034180096a108c01200041043a00000c040b200041053a0001200020023a0000200041086a2006360200200041046a2005360200200041026a20043a00004101211b0c030b024020032802f404450d00201b102f0b0240200241ff01714104470d00200341a8096a20183602002003418d096a200341f8056a29030037000020034195096a20034180066a2903003700002003419d096a20034188066a290300370000200341003a008409200341023a008009200320032903f0053700850941c8e1ca00410020034180096a108c01200041043a00004101211b0c030b200020043a0001200020023a0000200041086a2007360200200041046a2006360200200041036a20093a0000200041026a20053a00004101211b0c020b4100211b200241ff01714104470d00200341b0096a4200370300200341a8096a428080e983b1de1637030020034180096a41106a200341f0056a41086a29030037030020034180096a41186a200341f0056a41106a29030037030020034180096a41206a200341f0056a41186a2903003703002003420137038009200320032903f005370388094110102d2202450d0d20024110412010312202450d0d200220034180096a41086a221b290000370000200241186a201b41186a290000370000200241106a201b41106a290000370000200241086a201b41086a2900003700002002412041c00010312202450d0d2002428080e983b1de16370020200241286a4200370000200bad4220862004ad842002ad428080808080068410042002102f410421024101211b0b024020032802f403450d002004102f0b0240201b450d00200341a8096a20173602002003418d096a20034180076a29030037000020034195096a20034188076a2903003700002003419d096a20034190076a290300370000200341003a008409200341023a008009200320032903f8063700850941c8e1ca00410020034180096a108c01200041043a00004101211b0c010b2000200a3a0001200020023a0000200041086a2005360000200041046a2006360000200041036a20073a0000200041026a20093a00004101211b0b41012104410121050c160b200041086a201b360200200041046a2004360200200041026a201a3a000020004183083b01000240200328028c092202450d00200241246c2100200e210203400240024020022d0000221b41044b0d00024002400240201b0e050400010204040b2002410c6a280200450d03200241086a280200102f0c030b2002410c6a280200450d02200241086a280200102f0c020b2002410c6a280200450d01200241086a280200102f0c010b200241086a280200450d00200241046a280200102f0b200241246a21022000415c6a22000d000b0b0240200328028809450d00200e102f0b024020272005460d00034020061097010240200641046a280200450d002006280200102f0b200641f0006a2106200941907f6a22090d000b0b0240200c450d00200a102f0b20110d020c030b20272005460d00200a200741f0006c6a21040340200541046a221b109701200541f0006a21020240200541086a280200450d00201b280200102f0b2002210520042002470d000b0b0240200c450d00200a102f0b200341f0036a41186a4200370300200341f0036a41106a4200370300200341f0036a41086a22024200370300200342003703f003419487ca00ad4280808080a001841001221b2900002108201b290008211c201b102f2002201c370300200320083703f003418691c700ad4280808080e000841001221b2900082108201b290000211c201b102f20034188026a41106a201c37030020034188026a41186a200837030020034188026a41086a2002290300370300200320032903f0033703880220034180096a200d200f109103201e2003350288094220862003280280092202ad8410040240200328028409450d002002102f0b200041043a00002011450d010b200d102f0b410021054101211b0c020b200741f0006c2100200a41046a2102034020021097010240200241046a280200450d002002280200102f0b200241f0006a2102200041907f6a22000d000b0b410021054101211b200c450d00200a102f0b410121040c0e0b201e201c84202184202384201f201d8420228420248484500d014113210241e4e3c300211b410521040b200041033b0100200041086a2002360200200041046a201b360200200041026a20043a00004101211b0c0b0b418de6c300ad4280808080e00084100122022d000f211720022d000e211820022f000c211920022d000b211a20022d000a212020022f0008212820022d0007212920022d0006212720022f0004212520022d0003212620022d0002213120022f000021322002102f41f0e8c600ad4280808080f0008410012202290008211c20022d0007213320022d0006213420022f0004213520022d0003213620022d0002213720022f000021382002102f4120102d2202450d0020022008370018200220043a0017200220053a0016200220063b0014200220073a0013200220093a00122002200a3b00102002200b3a000f2002200c3a000e2002200d3b000c2002200e3a000b2002200f3a000a200220103b0008200220113a0007200220123a0006200220133b0004200220143a0003200220153a0002200220163b00002002ad42808080808004841003221b2900002108201b41086a290000211d201b41106a290000211e20034188026a41186a2204201b41186a29000037030020034188026a41106a2205201e37030020034188026a41086a2206201d3703002003200837038802201b102f2002102f41c000102d2202450d00200220173a000f200220183a000e200220193b000c2002201a3a000b200220203a000a200220283b0008200220293a0007200220273a0006200220253b0004200220263a0003200220313a0002200220323b0000200220333a0017200220343a0016200220353b0014200220363a0013200220373a0012200220383b00102002201c370018200241386a2004290300370000200241306a2005290300370000200241286a200629030037000020022003290388023700202002ad428080808080088410052002102f200041043a00004101211b0c0a0b1036000b200041033b0100200041086a201b360200200041046a2004360200200041026a200a3a000002402006450d002007102f0b02402009450d00200b102f0b2013450d05200f102f0c050b2009450d00200b102f0b2006450d010b2007102f0b2004450d00201b102f0b200041033b0100200041086a411d360200200041046a41f7e3c300360200200041026a41043a00000b4101211602402002450d002015102f0b41012117410121180b4101211b4100210402402005417e6a220241074b0d00410121054101210641012107410121094101210a4101210b4101210c4101210d4101210e4101210f410121104101211141012112410121134101210041012114024002400240024002400240024020020e080618040318020100060b41000d082008a70d070c080b2018450d0502402008422088a72202450d002002410c6c21002015210203400240200241046a280200450d002002280200102f0b2002410c6a2102200041746a22000d000b0b2008a7450d050c030b2017450d0402402008422088a72202450d00200241186c21002015210203400240200241046a280200450d002002280200102f0b0240200241106a280200450d002002410c6a280200102f0b200241186a2102200041686a22000d000b0b2008a7450d040c020b41000d052008a70d040c050b20162008a745720d020b2015102f410121050c040b41000d022008a70d010c020b410121050c020b2015102f0b41002104410121050b410121060b410121070b410121090b4101210a0b4101210b0b4101210c0b4101210d0b4101210e0b4101210f0b410121100b410121110b410121120b41012113410121000b410121140b02402001280200220241194b0d0002400240024002400240024002400240024002400240024002400240024002400240024020020e1a111012120f12120e0d0c0b0a0908120706050403121212020100110b2014450d1120012d0004417f6a220241024b0d110240024020020e03001301000b200141286a22012802001092032001280200102f0c120b2001410c6a280200450d11200141086a280200102f0c110b2000450d10200141086a2d00004108470d10200141346a280200450d10200141306a280200102f0c100b2013450d0f200141086a1093030c0f0b2012450d0e02402001410c6a280200450d00200141086a280200102f0b02402001411c6a2802002200450d00200141146a28020021022000410c6c210003400240200241046a280200450d002002280200102f0b2002410c6a2102200041746a22000d000b0b200141186a280200450d0e2001280214102f0c0e0b2011450d0d02402001280204220241024b0d00024020020e030f000f0f0b200141086a22012802001092032001280200102f0c0e0b2001412c6a22012802001092032001280200102f0c0d0b2010450d0c200141086a2d0000417e6a220241024b0d0c02400240024020020e03000102000b200141106a280200450d0e2001410c6a280200102f0c0e0b200141346a280200450d0d200141306a280200102f0c0d0b200141306a280200450d0c2001412c6a280200102f0c0c0b200f450d0b200141086a2d0000417c6a220241024b0d0b0240024020020e03000d01000b200141306a280200450d0c2001412c6a280200102f0c0c0b200141306a280200450d0b2001412c6a280200102f0c0b0b200e450d0a200141086a280200450d0a2001280204102f0c0a0b200d450d0920012d00044104470d092001410c6a280200450d09200141086a280200102f0c090b200c450d08200141086a2802004101470d08200141106a280200450d082001410c6a280200102f0c080b200b450d0720012d0004417f6a220241024b0d0702400240024020020e03000102000b2001412c6a280200450d09200141286a280200102f0c090b200141086a22012802001092032001280200102f0c080b2001410c6a22012802001092032001280200102f0c070b200a450d0620012d0004417f6a220241024b0d0602400240024020020e03000102000b2001412c6a280200450d08200141286a280200102f0c080b200141086a22012802001092032001280200102f0c070b2001410c6a22012802001092032001280200102f0c060b2009450d05200141086a2d0000416d6a220241014b0d050240024020020e020001000b200141106a280200450d062001410c6a280200102f0c060b200141106a280200450d052001410c6a280200102f0c050b2007450d0420012802042202450d04200141086a280200450d042002102f0c040b2006450d03200141086a1094030c030b2005450d0202402001410c6a2802002202450d00200241f0006c2100200128020441046a2102034020021097010240200241046a280200450d002002280200102f0b200241f0006a2102200041907f6a22000d000b0b200141086a280200450d022001280204102f0c020b201b450d01200141046a1095030c010b2004450d00200141086a1096030b200341b00b6a24000bd12e05087f037e047f017e037f23004180046b22032400200341186a4180e5c3004110109501200328021c2104200328021821054101210641002107410021080240024002400240024002402001450d00200141057422074100480d022007102d2206450d012001410574220941606a410576210a2006210720002108034020072008290000370000200741086a200841086a290000370000200741106a200841106a290000370000200741186a200841186a290000370000200741206a2107200841206a2108200941606a22090d000b200a41016a2108200121070b200341a4016a200436020020032005453602a001200341206a200241800110e8061a200341b0016a2008360200200341ac016a2007360200200320063602a801200341d0026a41186a22064200370300200341d0026a41106a22024200370300200341d0026a41086a22074200370300200342003703d002418de6c300ad4280808080e00084220b10012209290000210c200341c8036a41086a2208200941086a2900003703002003200c3703c8032009102f20072008290300370300200320032903c8033703d00241d882c400ad4280808080a00184220d10012204290000210c200341e0036a41086a2209200441086a2900003703002003200c3703e0032004102f200220032903e003220c370300200341f0026a41086a22042007290300370300200341f0026a41106a200c370300200341f0026a41186a22052009290300370300200320032903d0023703f002200341106a200341f0026a412010950102400240024002400240024002402003280214410020032802101b220e41016a220f200e490d0020064200370300200341d0026a41106a220a420037030020074200370300200342003703d002200b10012210290000210c2008201041086a2900003703002003200c3703c8032010102f20072008290300370300200320032903c8033703d002200d10012210290000210c2009201041086a2900003703002003200c3703e0032010102f200220032903e003370000200241086a2210200929030037000020042007290300370300200341f0026a41106a2211200a29030037030020052006290300370300200320032903d0023703f0022003200f3602b801200341f0026aad4280808080800484220c200341b8016aad4280808080c000841004200341b8016a200341206a41980110e8061a20064200370300200a420037030020074200370300200342003703d002200b1001220f290000210b2008200f41086a2900003703002003200b3703c803200f102f20072008290300370300200320032903c8033703d00241baebc300ad4280808080e0008410012208290000210b2009200841086a2900003703002003200b3703e0032008102f200220032903e00337000020102009290300370000200420072903003703002011200a29030037030020052006290300370300200320032903d0023703f002200341c8036a200c100210730240024020032802c803450d0020034190036a41086a200341c8036a41086a280200360200200320032903c803370390030c010b200341003602e803200342083703e0034104102d2207450d08200342043702d402200320073602d0024100200341d0026a106920034198036a20032802d802360200200320032903d00237039003200341e0036a10f4030b200341a0036a41086a20034190036a41086a280200220736020020032003290390033703a003024002402007450d00200341d0026a20032802a0032007410110c40220032802d0024101470d0120032802a403450d0c20032802a003102f0c0c0b4101200341a0036a10690240024020032802b8024101460d000240024020032802a40320032802a8032207460d0020032802a00321080c010b200741016a22082007490d0c200741017422092008200920084b1b22094100480d0c0240024020070d002009102d21080c010b20032802a00320072009103121080b2008450d0b200320093602a403200320083602a00320032802a80321070b2003200741016a3602a803200820076a41003a000020032802bc0221090240024020032802a403220820032802a80322076b4104490d0020032802a00321080c010b200741046a22062007490d0c200841017422072006200720064b1b22074100480d0c0240024020080d002007102d21080c010b20032802a00320082007103121080b2008450d0b200320073602a403200320083602a00320032802a80321070b2003200741046a3602a803200820076a20093600000c010b0240024020032802a40320032802a8032207460d0020032802a00321080c010b200741016a22082007490d0b200741017422092008200920084b1b22094100480d0b0240024020070d002009102d21080c010b20032802a00320072009103121080b2008450d0a200320093602a403200320083602a00320032802a80321070b2003200741016a3602a803200820076a41013a00000b200341b8016a200341a0036a10ef0220032802c00220032802c802200341a0036a1089010c060b20032802d40221060240200341dc026a2802002207200341d0026a41086a2802002208460d0020032802a803200720086b6a220941046a2204417f4c0d0a0240024020040d00410121050c010b2004102d2205450d090b200320043602b403200320053602b003200320093602b8032003200341b0036a3602d0022006200341d0026a200710c50220092007490d0220032802b80322062009490d0320032802a80322062008490d0420032802b003210420032802a00321052003200920076b22093602c0032003200620086b22063602c40320092006470d05200420076a200520086a200910e8061a0240024020032802b8024101460d000240024020032802b40320032802b8032207460d0020032802b00321080c010b200741016a22082007490d0c200741017422092008200920084b1b22094100480d0c0240024020070d002009102d21080c010b20032802b00320072009103121080b2008450d0b200320093602b403200320083602b00320032802b80321070b2003200741016a3602b803200820076a41003a000020032802bc0221090240024020032802b403220820032802b80322076b4104490d0020032802b00321080c010b200741046a22062007490d0c200841017422072006200720064b1b22074100480d0c0240024020080d002007102d21080c010b20032802b00320082007103121080b2008450d0b200320073602b403200320083602b00320032802b80321070b2003200741046a3602b803200820076a20093600000c010b0240024020032802b40320032802b8032207460d0020032802b00321080c010b200741016a22082007490d0b200741017422092008200920084b1b22094100480d0b0240024020070d002009102d21080c010b20032802b00320072009103121080b2008450d0a200320093602b403200320083602b00320032802b80321070b2003200741016a3602b803200820076a41013a00000b200341b8016a200341b0036a10ef0220032802c00220032802c802200341b0036a10890120032802b803210820032802b403210920032802b003210720032802a403450d0720032802a003102f0c070b2003200341a0036a3602d0022006200341d0026a200810c5020240024020032802b8024101460d000240024020032802a40320032802a8032207460d0020032802a00321080c010b200741016a22082007490d0b200741017422092008200920084b1b22094100480d0b0240024020070d002009102d21080c010b20032802a00320072009103121080b2008450d0a200320093602a403200320083602a00320032802a80321070b2003200741016a3602a803200820076a41003a000020032802bc0221090240024020032802a403220820032802a80322076b4104490d0020032802a00321080c010b200741046a22062007490d0b200841017422072006200720064b1b22074100480d0b0240024020080d002007102d21080c010b20032802a00320082007103121080b2008450d0a200320073602a403200320083602a00320032802a80321070b2003200741046a3602a803200820076a20093600000c010b0240024020032802a40320032802a8032207460d0020032802a00321080c010b200741016a22082007490d0a200741017422092008200920084b1b22094100480d0a0240024020070d002009102d21080c010b20032802a00320072009103121080b2008450d09200320093602a403200320083602a00320032802a80321070b2003200741016a3602a803200820076a41013a00000b200341b8016a200341a0036a10ef0220032802c00220032802c802200341a0036a1089010c050b200341206a1088040c0a0b20072009104b000b20092006104a000b20082006104b000b200341e0036a41146a4109360200200341ec036a410a360200200341c8036a41146a41033602002003200341c0036a3602f8032003200341c4036a3602fc03200341d0026a41146a4100360200200342033702cc03200341b4e0ca003602c8032003410a3602e403200341c8e1ca003602e002200342013702d40220034188e1ca003602d0022003200341e0036a3602d8032003200341d0026a3602f0032003200341fc036a3602e8032003200341f8036a3602e003200341c8036a41c8e1ca001043000b20032802a803210820032802a403210920032802a00321070b2007450d03200c2008ad4220862007ad84100402402009450d002007102f0b200341b8016a108804200341d0026a41186a22044200370300200341d0026a41106a22054200370300200341d0026a41086a22064200370300200342003703d002418de6c300ad4280808080e00084221210012207290000210b200341c8036a41086a2209200741086a2900003703002003200b3703c8032007102f20062009290300370300200320032903c8033703d002419ce6c300ad4280808080e0008410012207290000210b200341e0036a41086a220a200741086a2900003703002003200b3703e0032007102f200220032903e003370000200241086a200a290300370000200341f0026a41086a22132006290300370300200341f0026a41106a2005290300370300200341f0026a41186a2004290300370300200320032903d0023703f002200341086a200341f0026a41201095012001450d04200328020c410020032802081b2114200141057421020340201210012207290000210b2009200741086a2900003703002003200b3703c8032007102f41c0ebc300ad4280808080b0018410012207290000210b200a200741086a2900003703002003200b3703e0032007102f4120102d2207450d0120072000290000370000200741186a200041186a290000370000200741106a200041106a290000370000200741086a200041086a2900003700002007ad428080808080048410032208290000210b200841086a290000210c200841106a290000210d2004200841186a2900003703002005200d3703002006200c3703002003200b3703d0022008102f2007102f41c000102d2207450d01200720032903c803370000200720032903e003370010200720032903d002370020200741086a2009290300370000200741186a200a290300370000200741286a2006290300370000200741306a2005290300370000200741386a2004290300370000200341f0026a2007ad4280808080800884220b100210730240024020032802f002450d00200341b0036a41086a2013280200360200200320032903f0023703b0030c010b4104102d2208450d02200342043702bc01200320083602b8014100200341b8016a1069200341b0036a41086a20032802c001360200200320032903b8013703b0030b2009200341b0036a41086a2802002208360200200320032903b0033703c8030240024002400240024002400240024002400240024002402008450d00200341b8016a20032802c8032008410110c40220032802b8014101460d0420032802bc01211020032802c401220820032802c0012201460d0320032802d003200820016b6a220f41046a2211417f4c0d0f20110d01410121150c020b4101200341c8036a10690240024020032802cc03220120032802d00322086b4104490d0020032802c80321010c010b200841046a220f2008490d0e20014101742208200f2008200f4b1b22084100480d0e0240024020010d002008102d21010c010b20032802c80320012008103121010b2001450d0d200320083602cc03200320013602c80320032802d00321080b2003200841046a3602d003200120086a20143600000240024020032802cc03220120032802d00322086b4104490d0020032802c80321010c010b200841046a220f2008490d0e20014101742208200f2008200f4b1b22084100480d0e0240024020010d002008102d21010c010b20032802c80320012008103121010b2001450d0d200320083602cc03200320013602c80320032802d00321080b2003200841046a3602d003200120086a200e3600000c080b2011102d2215450d0b0b200320113602d402200320153602d0022003200f3602d8022003200341d0026a3602b8012010200341b8016a200810c502200f2008490d0220032802d8022210200f490d0320032802d00322102001490d0420032802d002211120032802c80321152003200f20086b220f3602f8032003201020016b22103602fc03200f2010470d05201120086a201520016a200f10e8061a0240024020032802d402220120032802d80222086b4104490d0020032802d00221010c010b200841046a220f2008490d0c20014101742208200f2008200f4b1b22084100480d0c0240024020010d002008102d21010c010b20032802d00220012008103121010b2001450d0b200320083602d402200320013602d00220032802d80221080b2003200841046a3602d802200120086a20143600000240024020032802d402220120032802d80222086b4104490d0020032802d00221010c010b200841046a220f2008490d0c20014101742208200f2008200f4b1b22084100480d0c0240024020010d002008102d21010c010b20032802d00220012008103121010b2001450d0b200320083602d402200320013602d00220032802d80221080b2003200841046a3602d802200120086a200e36000020032802d802210120032802d402210f20032802d002210820032802cc03450d0720032802c803102f0c070b2003200341c8036a3602b8012010200341b8016a200110c5020240024020032802cc03220120032802d00322086b4104490d0020032802c80321010c010b200841046a220f2008490d0b20014101742208200f2008200f4b1b22084100480d0b0240024020010d002008102d21010c010b20032802c80320012008103121010b2001450d0a200320083602cc03200320013602c80320032802d00321080b2003200841046a3602d003200120086a20143600000240024020032802cc03220120032802d00322086b4104490d0020032802c80321010c010b200841046a220f2008490d0b20014101742208200f2008200f4b1b22084100480d0b0240024020010d002008102d21010c010b20032802c80320012008103121010b2001450d0a200320083602cc03200320013602c80320032802d00321080b2003200841046a3602d003200120086a200e3600000c050b20032802cc03450d0620032802c803102f0c060b2008200f104b000b200f2010104a000b20012010104b000b200341e0036a41146a4109360200200341ec036a410a360200200341f0026a41146a41033602002003200341f8036a360290032003200341fc036a3602a003200341b8016a41146a4100360200200342033702f402200341b4e0ca003602f0022003410a3602e403200341c8e1ca003602c801200342013702bc0120034188e1ca003602b8012003200341e0036a360280032003200341b8016a3602f0032003200341a0036a3602e803200320034190036a3602e003200341f0026a41c8e1ca001043000b20032802d003210120032802cc03210f20032802c80321080b2008450d00200b2001ad4220862008ad8410040240200f450d002008102f0b200041206a21002007102f200241606a22020d010c060b0b2007102f0c040b1036000b1038000b103d000b200341b8016a1088040b20034180046a24000b8d1201027f02402000280200220141194b0d0002400240024002400240024002400240024002400240024002400240024002400240024020010e1a0001121202121203040506070809120a0b0c0d0e1212120f1011000b200041086a280200417e6a220141074b0d1102400240024002400240024020010e080017010217030405000b200041106a280200450d162000410c6a280200102f0f0b200041106a280200450d152000410c6a280200102f0f0b200041106a280200450d142000410c6a280200102f0f0b0240200041146a2802002202450d002000410c6a2802002101200241186c210203400240200141046a280200450d002001280200102f0b0240200141106a280200450d002001410c6a280200102f0b200141186a2101200241686a22020d000b0b200041106a280200450d13200028020c102f0f0b0240200041146a2802002202450d002000410c6a28020021012002410c6c210203400240200141046a280200450d002001280200102f0b2001410c6a2101200241746a22020d000b0b200041106a280200450d12200028020c102f0f0b200041106a280200450d112000410c6a280200102f0f0b024020002d0004220141044b0d00024002400240024020010e051500010203150b0240200041106a2802002202450d00200041086a2802002101200241b0026c210203402001108d01200141b0026a2101200241d07d6a22020d000b0b2000410c6a280200450d142000280208102f0f0b200041086a2201280200108d012001280200102f0f0b02402000410c6a280200450d00200041086a280200102f0b200041206a2201280200108d012001280200102f0f0b2000412c6a280200450d11200041286a280200102f0f0b2000412c6a280200450d10200041286a280200102f0f0b02402000410c6a2802002201450d00200141f0006c2102200028020441046a2101034020011097010240200141046a280200450d002001280200102f0b200141f0006a2101200241907f6a22020d000b0b200041086a280200450d0f2000280204102f0f0b200041086a2d0000417a6a2201410b4b0d0e024002400240024020010e0c001212121212120112120203000b200041106a280200450d112000410c6a280200102f0f0b200041106a280200450d102000410c6a280200102f0f0b200041146a280200450d0f200041106a280200102f0f0b200041146a280200450d0e200041106a280200102f0f0b20002802042201450d0d200041086a280200450d0d2001102f0f0b200041086a2d0000416d6a220141014b0d0c0240024020010e020001000b200041106a280200450d0d2000410c6a280200102f0f0b200041106a280200450d0c2000410c6a280200102f0f0b20002d0004417f6a220141024b0d0b02400240024020010e03000102000b2000412c6a280200450d0d200041286a280200102f0f0b200041086a2201280200108d012001280200102f0f0b2000410c6a2201280200108d012001280200102f0f0b20002d0004417f6a220141024b0d0a02400240024020010e03000102000b2000412c6a280200450d0c200041286a280200102f0f0b200041086a2201280200108d012001280200102f0f0b2000410c6a2201280200108d012001280200102f0f0b200041086a2802004101470d09200041106a280200450d092000410c6a280200102f0f0b20002d00044104470d082000410c6a280200450d08200041086a280200102f0f0b200041086a280200450d072000280204102f0f0b200041086a2d0000417c6a220141024b0d060240024020010e03000801000b200041306a280200450d072000412c6a280200102f0f0b200041306a280200450d062000412c6a280200102f0f0b200041086a2d0000417e6a220141024b0d0502400240024020010e03000102000b200041106a280200450d072000410c6a280200102f0c070b200041346a280200450d06200041306a280200102f0f0b200041306a280200450d052000412c6a280200102f0f0b02402000280204220141024b0d00024020010e03060006060b200041086a2201280200108d012001280200102f0f0b2000412c6a2201280200108d012001280200102f0f0b02402000410c6a280200450d00200041086a280200102f0b02402000411c6a2802002202450d00200041146a28020021012002410c6c210203400240200141046a280200450d002001280200102f0b2001410c6a2101200241746a22020d000b0b200041186a280200450d032000280214102f0f0b200041086a2d0000417e6a220141014b0d020240024020010e020001000b0240200041146a2802002202450d002000410c6a2802002201200241c8006c6a21020340024020012d00004101470d00200141086a280200450d00200141046a280200102f0b0240200141246a2d00004101470d002001412c6a280200450d00200141286a280200102f0b200141c8006a22012002470d000b0b0240200041106a280200450d00200028020c102f0b0240200041186a2d00004101470d00200041206a280200450d002000411c6a280200102f0b02402000413c6a2d00004101470d00200041c4006a280200450d00200041c0006a280200102f0b0240200041e0006a2d00004101470d00200041e8006a280200450d00200041e4006a280200102f0b024020004184016a2d00004101470d002000418c016a280200450d0020004188016a280200102f0b0240200041a8016a2d00004101470d00200041b0016a280200450d00200041ac016a280200102f0b0240200041cc016a2d00004101470d00200041d4016a280200450d00200041d0016a280200102f0b200041f0016a2d00004101470d03200041f8016a280200450d03200041f4016a280200102f0f0b0240200041146a2802002201450d00200141c4006c21022000410c6a28020041286a210103400240200141786a2d00004101470d002001280200450d002001417c6a280200102f0b200141c4006a2101200241bc7f6a22020d000b0b200041106a280200450d02200028020c102f0f0b200041086a2d00004108470d01200041346a280200450d01200041306a280200102f0f0b20002d0004417f6a220141024b0d000240024020010e03000201000b200041286a2201280200108d012001280200102f0f0b2000410c6a280200450d00200041086a280200102f0f0b0b8d1201027f02402000280200220141194b0d0002400240024002400240024002400240024002400240024002400240024002400240024020010e1a0001121202121203040506070809120a0b0c0d0e1212120f1011000b200041086a280200417e6a220141074b0d1102400240024002400240024020010e080017010217030405000b200041106a280200450d162000410c6a280200102f0f0b200041106a280200450d152000410c6a280200102f0f0b200041106a280200450d142000410c6a280200102f0f0b0240200041146a2802002202450d002000410c6a2802002101200241186c210203400240200141046a280200450d002001280200102f0b0240200141106a280200450d002001410c6a280200102f0b200141186a2101200241686a22020d000b0b200041106a280200450d13200028020c102f0f0b0240200041146a2802002202450d002000410c6a28020021012002410c6c210203400240200141046a280200450d002001280200102f0b2001410c6a2101200241746a22020d000b0b200041106a280200450d12200028020c102f0f0b200041106a280200450d112000410c6a280200102f0f0b024020002d0004220141044b0d00024002400240024020010e051500010203150b0240200041106a2802002202450d00200041086a2802002101200241b0026c210203402001108d01200141b0026a2101200241d07d6a22020d000b0b2000410c6a280200450d142000280208102f0f0b200041086a2201280200108e012001280200102f0f0b02402000410c6a280200450d00200041086a280200102f0b200041206a2201280200108e012001280200102f0f0b2000412c6a280200450d11200041286a280200102f0f0b2000412c6a280200450d10200041286a280200102f0f0b02402000410c6a2802002201450d00200141f0006c2102200028020441046a2101034020011097010240200141046a280200450d002001280200102f0b200141f0006a2101200241907f6a22020d000b0b200041086a280200450d0f2000280204102f0f0b200041086a2d0000417a6a2201410b4b0d0e024002400240024020010e0c001212121212120112120203000b200041106a280200450d112000410c6a280200102f0f0b200041106a280200450d102000410c6a280200102f0f0b200041146a280200450d0f200041106a280200102f0f0b200041146a280200450d0e200041106a280200102f0f0b20002802042201450d0d200041086a280200450d0d2001102f0f0b200041086a2d0000416d6a220141014b0d0c0240024020010e020001000b200041106a280200450d0d2000410c6a280200102f0f0b200041106a280200450d0c2000410c6a280200102f0f0b20002d0004417f6a220141024b0d0b02400240024020010e03000102000b2000412c6a280200450d0d200041286a280200102f0f0b200041086a2201280200108e012001280200102f0f0b2000410c6a2201280200108e012001280200102f0f0b20002d0004417f6a220141024b0d0a02400240024020010e03000102000b2000412c6a280200450d0c200041286a280200102f0f0b200041086a2201280200108e012001280200102f0f0b2000410c6a2201280200108e012001280200102f0f0b200041086a2802004101470d09200041106a280200450d092000410c6a280200102f0f0b20002d00044104470d082000410c6a280200450d08200041086a280200102f0f0b200041086a280200450d072000280204102f0f0b200041086a2d0000417c6a220141024b0d060240024020010e03000801000b200041306a280200450d072000412c6a280200102f0f0b200041306a280200450d062000412c6a280200102f0f0b200041086a2d0000417e6a220141024b0d0502400240024020010e03000102000b200041106a280200450d072000410c6a280200102f0c070b200041346a280200450d06200041306a280200102f0f0b200041306a280200450d052000412c6a280200102f0f0b02402000280204220141024b0d00024020010e03060006060b200041086a2201280200108e012001280200102f0f0b2000412c6a2201280200108e012001280200102f0f0b02402000410c6a280200450d00200041086a280200102f0b02402000411c6a2802002202450d00200041146a28020021012002410c6c210203400240200141046a280200450d002001280200102f0b2001410c6a2101200241746a22020d000b0b200041186a280200450d032000280214102f0f0b200041086a2d0000417e6a220141014b0d020240024020010e020001000b0240200041146a2802002202450d002000410c6a2802002201200241c8006c6a21020340024020012d00004101470d00200141086a280200450d00200141046a280200102f0b0240200141246a2d00004101470d002001412c6a280200450d00200141286a280200102f0b200141c8006a22012002470d000b0b0240200041106a280200450d00200028020c102f0b0240200041186a2d00004101470d00200041206a280200450d002000411c6a280200102f0b02402000413c6a2d00004101470d00200041c4006a280200450d00200041c0006a280200102f0b0240200041e0006a2d00004101470d00200041e8006a280200450d00200041e4006a280200102f0b024020004184016a2d00004101470d002000418c016a280200450d0020004188016a280200102f0b0240200041a8016a2d00004101470d00200041b0016a280200450d00200041ac016a280200102f0b0240200041cc016a2d00004101470d00200041d4016a280200450d00200041d0016a280200102f0b200041f0016a2d00004101470d03200041f8016a280200450d03200041f4016a280200102f0f0b0240200041146a2802002201450d00200141c4006c21022000410c6a28020041286a210103400240200141786a2d00004101470d002001280200450d002001417c6a280200102f0b200141c4006a2101200241bc7f6a22020d000b0b200041106a280200450d02200028020c102f0f0b200041086a2d00004108470d01200041346a280200450d01200041306a280200102f0f0b20002d0004417f6a220141024b0d000240024020010e03000201000b200041286a2201280200108e012001280200102f0f0b2000410c6a280200450d00200041086a280200102f0f0b0bd204010c7f230041206b220324002001280204210420012802002105024002400240024002400240200128020822060d00410021070c010b20064105742108200220056b2109410021014100210a410021072005210b02400340200520016a210c0240200a450d00200a200c412010ea064100480d004115210c41e6a6c000210d4105210e0c020b0240200c2002412010ea06220a41004a0d004113210c41d3a6c000210d4106210e20092001460d02200a450d02200741016a21070b200b210a200b41206a210b2008200141206a2201460d020c000b0b2000200e3a000620004183023b0104200041013602002000410c6a200c360200200041086a200d3602002004450d012005102f0c010b200341186a200241186a290000370300200341106a200241106a290000370300200341086a200241086a2900003703002003200229000037030020062007490d01024020062004470d00200441016a22012004490d042004410174220b2001200b20014b1b220141ffffff3f712001470d04200141057422014100480d040240024020040d002001102d21050c010b200520044105742001103121050b2005450d03200141057621040b200520074105746a220141206a2001200620076b41057410e9061a200141186a200341186a290300370000200141106a200341106a290300370000200141086a200341086a290300370000200120032903003700002000410c6a200641016a360200200041086a200436020020002005360204200041003602000b200341206a24000f0b419ae3c300411e41f8b4ca001039000b1036000b1038000bfd0402087f037e230041106b22022400024002400240200141086a28020022034105744116722204417f4c0d002004102d2205450d01200520012802002206290000370000200541086a200641086a290000370000200241103602082002200436020420022005360200200141046a28020021052003200210690240024020030d0020022802042107200228020821060c010b20034105742108200228020021092002280204210420022802082103034002400240200420036b4120490d00200341206a2106200421070c010b200341206a22062003490d05200441017422072006200720064b1b22074100480d050240024020040d002007102d21090c010b200920042007103121090b2009450d040b200920036a22032005290000370000200341186a200541186a290000370000200341106a200541106a290000370000200341086a200541086a2900003700002007210420062103200541206a2105200841606a22080d000b2002200736020420022006360208200220093602000b20012f010c210402400240200720066b4102490d00200641026a2105200228020021030c010b200641026a22052006490d03200741017422032005200320054b1b22094100480d030240024020070d002009102d21030c010b200228020020072009103121030b2003450d022002200936020420022003360200200921070b200320066a20043b00002005ad4220862003ad8410032205290000210a200541086a290000210b200541106a290000210c200041186a200541186a290000370000200041106a200c370000200041086a200b3700002000200a3700002005102f02402007450d002003102f0b200241106a24000f0b103d000b1036000b1038000bdf800304057f017e067f017e230041206b2202240002400240024002400240024002400240024020002802002203411a4b0d0002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020030e1b000102030405060708090a0b0c0d0e0f101112131415161718191a000b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d1d200341017422052004200520044b1b22054100480d1d0240024020030d002005102d21040c010b200128020020032005103121040b2004450d1c20012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41003a00002000280208417f6a220341094b0d1a024002400240024002400240024002400240024020030e0a00010203040506070809000b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d26200341017422052004200520044b1b22054100480d260240024020030d002005102d21040c010b200128020020032005103121040b2004450d2520012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41003a0000200028020c210402400240200141046a2802002203200528020022006b4104490d00200128020021030c010b200041046a22052000490d26200341017422002005200020054b1b22004100480d260240024020030d002000102d21030c010b200128020020032000103121030b2003450d2520012003360200200141046a2000360200200141086a28020021000b200141086a200041046a360200200320006a20043600000c230b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d25200341017422052004200520044b1b22054100480d250240024020030d002005102d21040c010b200128020020032005103121040b2004450d2420012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41013a0000200028020c2106200041146a28020022002001106902400240200141046a2802002204200528020022036b2000490d00200128020021040c010b200320006a22052003490d25200441017422032005200320054b1b22034100480d250240024020040d002003102d21040c010b200128020020042003103121040b2004450d2420012004360200200141046a2003360200200141086a28020021030b200141086a200320006a360200200420036a2006200010e8061a0c220b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d24200341017422052004200520044b1b22054100480d240240024020030d002005102d21040c010b200128020020032005103121040b2004450d2320012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41023a00002000290310210702400240200141046a2802002203200528020022006b4108490d00200128020021030c010b200041086a22042000490d24200341017422002004200020044b1b22004100480d240240024020030d002000102d21030c010b200128020020032000103121030b2003450d2320012003360200200141046a2000360200200141086a28020021000b200141086a200041086a360200200320006a20073700000c210b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d23200341017422052004200520044b1b22054100480d230240024020030d002005102d21040c010b200128020020032005103121040b2004450d2220012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41033a0000200028020c2106200041146a28020022002001106902400240200141046a2802002204200528020022036b2000490d00200128020021040c010b200320006a22052003490d23200441017422032005200320054b1b22034100480d230240024020040d002003102d21040c010b200128020020042003103121040b2004450d2220012004360200200141046a2003360200200141086a28020021030b200141086a200320006a360200200420036a2006200010e8061a0c200b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d22200341017422052004200520044b1b22054100480d220240024020030d002005102d21040c010b200128020020032005103121040b2004450d2120012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41043a0000200028020c2106200041146a28020022002001106902400240200141046a2802002204200528020022036b2000490d00200128020021040c010b200320006a22052003490d22200441017422032005200320054b1b22034100480d220240024020040d002003102d21040c010b200128020020042003103121040b2004450d2120012004360200200141046a2003360200200141086a28020021030b200141086a200320006a360200200420036a2006200010e8061a0c1f0b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d21200341017422052004200520044b1b22054100480d210240024020030d002005102d21040c010b200128020020032005103121040b2004450d2020012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41053a0000200141046a28020021042005280200210302402000410c6a2802004101460d000240024020042003460d00200128020021000c010b200341016a22002003490d22200341017422042000200420004b1b22044100480d220240024020030d002004102d21000c010b200128020020032004103121000b2000450d2120012000360200200141046a2004360200200141086a28020021030b200141086a200341016a360200200020036a41003a00000c1f0b0240024020042003460d00200128020021040c010b200341016a22042003490d21200341017422052004200520044b1b22054100480d210240024020030d002005102d21040c010b200128020020032005103121040b2004450d2020012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41013a0000200041106a280200210602400240200141046a2802002204200528020022036b4104490d00200128020021040c010b200341046a22052003490d21200441017422032005200320054b1b22034100480d210240024020040d002003102d21040c010b200128020020042003103121040b2004450d2020012004360200200141046a2003360200200141086a28020021030b200141086a2205200341046a360200200420036a2006360000200041146a280200210402400240200141046a2802002203200528020022006b4104490d00200128020021030c010b200041046a22052000490d21200341017422002005200020054b1b22004100480d210240024020030d002000102d21030c010b200128020020032000103121030b2003450d2020012003360200200141046a2000360200200141086a28020021000b200141086a200041046a360200200320006a20043600000c1e0b02400240200141046a280200200141086a2802002203460d00200128020021050c010b200341016a22042003490d20200341017422052004200520044b1b22044100480d200240024020030d002004102d21050c010b200128020020032004103121050b2005450d1f20012005360200200141046a2004360200200141086a28020021030b200141086a2204200341016a360200200520036a41063a0000200028020c2103200041146a2802002200200110692000450d1d2003200041186c6a2108200141046a2106034020032802002109200341086a280200220020011069024002402006280200220a200428020022056b2000490d002001280200210a0c010b200520006a220b2005490d21200a4101742205200b2005200b4b1b22054100480d2102400240200a0d002005102d210a0c010b2001280200200a20051031210a0b200a450d202001200a36020020062005360200200428020021050b2004200520006a360200200a20056a2009200010e8061a2003410c6a2802002109200341146a280200220020011069024002402006280200220a200428020022056b2000490d002001280200210a0c010b200520006a220b2005490d21200a4101742205200b2005200b4b1b22054100480d2102400240200a0d002005102d210a0c010b2001280200200a20051031210a0b200a450d202001200a36020020062005360200200428020021050b2004200520006a360200200a20056a2009200010e8061a200341186a22032008470d000c1e0b0b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d1f200341017422052004200520044b1b22054100480d1f0240024020030d002005102d21040c010b200128020020032005103121040b2004450d1e20012004360200200141046a2005360200200141086a28020021030b200141086a2206200341016a360200200420036a41073a0000200028020c2104200041146a2802002200200110692000450d1c20042000410c6c6a2108200141046a210903402004280200210a200441086a2802002200200110690240024020092802002205200628020022036b2000490d00200128020021050c010b200320006a220b2003490d2020054101742203200b2003200b4b1b22034100480d200240024020050d002003102d21050c010b200128020020052003103121050b2005450d1f2001200536020020092003360200200628020021030b2006200320006a360200200520036a200a200010e8061a2004410c6a22042008470d000c1d0b0b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d1e200341017422052004200520044b1b22054100480d1e0240024020030d002005102d21040c010b200128020020032005103121040b2004450d1d20012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41083a0000200028020c2106200041146a28020022002001106902400240200141046a2802002204200528020022036b2000490d00200128020021040c010b200320006a22052003490d1e200441017422032005200320054b1b22034100480d1e0240024020040d002003102d21040c010b200128020020042003103121040b2004450d1d20012004360200200141046a2003360200200141086a28020021030b200141086a200320006a360200200420036a2006200010e8061a0c1b0b02400240200141046a280200200141086a2802002200460d00200128020021030c010b200041016a22032000490d1d200041017422042003200420034b1b22044100480d1d0240024020000d002004102d21030c010b200128020020002004103121030b2003450d1c20012003360200200141046a2004360200200141086a28020021000b200141086a200041016a360200200320006a41093a00000c1a0b02400240200141046a2206280200200141086a22032802002204460d00200128020021050c010b200441016a22052004490d1c2004410174220a2005200a20054b1b220a4100480d1c0240024020040d00200a102d21050c010b20012802002004200a103121050b2005450d1b20012005360200200141046a200a360200200141086a28020021040b2003200441016a360200200520046a41013a0000200041046a22082d0000417f6a220441044b0d190240024002400240024020040e050001020304000b02400240200628020020032802002203460d00200128020021040c010b200341016a22042003490d20200341017422052004200520044b1b22054100480d200240024020030d002005102d21040c010b200128020020032005103121040b2004450d1f20012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41003a000020002802082103200041106a2802002200200110692000450d1d200041b0026c2100034020032001109101200341b0026a2103200041d07d6a22000d000c1e0b0b02400240200628020020032802002204460d00200128020021050c010b200441016a22052004490d1f2004410174220a2005200a20054b1b220a4100480d1f0240024020040d00200a102d21050c010b20012802002004200a103121050b2005450d1e20012005360200200141046a200a360200200141086a28020021040b2003200441016a360200200520046a41013a000020082f010221050240024020062802002204200328020022036b4102490d00200128020021040c010b200341026a22062003490d1f200441017422032006200320064b1b22034100480d1f0240024020040d002003102d21040c010b200128020020042003103121040b2004450d1e20012004360200200141046a2003360200200141086a28020021030b200141086a200341026a360200200420036a20053b0000200028020820011091010c1c0b02400240200628020020032802002204460d00200128020021050c010b200441016a22052004490d1e2004410174220a2005200a20054b1b220a4100480d1e0240024020040d00200a102d21050c010b20012802002004200a103121050b2005450d1d20012005360200200141046a200a360200200141086a28020021040b2003200441016a360200200520046a41023a000020082f0102210a0240024020062802002205200328020022046b4102490d00200128020021050c010b200441026a22092004490d1e200541017422042009200420094b1b22044100480d1e0240024020050d002004102d21050c010b200128020020052004103121050b2005450d1d20012005360200200141046a2004360200200141086a28020021040b200141086a2208200441026a360200200520046a200a3b000020002802082104200041106a28020022052001106902402005450d0020054105742109200141046a210c0340024002402006280200220a200328020022056b4120490d002001280200210a0c010b200541206a220b2005490d20200a4101742205200b2005200b4b1b22054100480d2002400240200a0d002005102d210a0c010b2001280200200a20051031210a0b200a450d1f2001200a360200200c2005360200200828020021050b2003200541206a360200200a20056a220541186a200441186a290000370000200541106a200441106a290000370000200541086a200441086a29000037000020052004290000370000200441206a2104200941606a22090d000b0b20062802002105200328020021040240024020002802144101460d000240024020052004460d00200128020021050c010b200441016a22052004490d20200441017422062005200620054b1b22064100480d200240024020040d002006102d21050c010b200128020020042006103121050b2005450d1f20012005360200200141046a2006360200200141086a28020021040b2003200441016a360200200520046a41003a00000c010b0240024020052004460d00200128020021050c010b200441016a22052004490d1f2004410174220a2005200a20054b1b220a4100480d1f0240024020040d00200a102d21050c010b20012802002004200a103121050b2005450d1e20012005360200200141046a200a360200200141086a28020021040b2003200441016a360200200520046a41013a0000200041186a280200210a0240024020062802002205200328020022046b4104490d00200128020021050c010b200441046a22092004490d1f200541017422042009200420094b1b22044100480d1f0240024020050d002004102d21050c010b200128020020052004103121050b2005450d1e20012005360200200141046a2004360200200141086a28020021040b2003200441046a360200200520046a200a3600002000411c6a280200210a0240024020062802002205200328020022046b4104490d00200128020021050c010b200441046a22062004490d1f200541017422042006200420064b1b22044100480d1f0240024020050d002004102d21050c010b200128020020052004103121050b2005450d1e20012005360200200141046a2004360200200141086a28020021040b2003200441046a360200200520046a200a3600000b200028022020011091010c1b0b02400240200628020020032802002204460d00200128020021050c010b200441016a22052004490d1d2004410174220a2005200a20054b1b220a4100480d1d0240024020040d00200a102d21050c010b20012802002004200a103121050b2005450d1c20012005360200200141046a200a360200200141086a28020021040b2003200441016a360200200520046a41033a000020082f0122210a0240024020062802002205200328020022046b4102490d00200128020021050c010b200441026a22092004490d1d200541017422042009200420094b1b22044100480d1d0240024020050d002004102d21050c010b200128020020052004103121050b2005450d1c20012005360200200141046a2004360200200141086a28020021040b200141086a220c200441026a360200200520046a200a3b000020002802282104200041306a28020022052001106902402005450d0020054105742109200141046a210d0340024002402006280200220a200328020022056b4120490d002001280200210a0c010b200541206a220b2005490d1f200a4101742205200b2005200b4b1b22054100480d1f02400240200a0d002005102d210a0c010b2001280200200a20051031210a0b200a450d1e2001200a360200200d2005360200200c28020021050b2003200541206a360200200a20056a220541186a200441186a290000370000200541106a200441106a290000370000200541086a200441086a29000037000020052004290000370000200441206a2104200941606a22090d000b0b20062802002105200328020021040240024020002802344101460d000240024020052004460d00200128020021000c010b200441016a22002004490d1f200441017422052000200520004b1b22054100480d1f0240024020040d002005102d21000c010b200128020020042005103121000b2000450d1e20012000360200200141046a2005360200200141086a28020021040b2003200441016a360200200020046a41003a00000c010b0240024020052004460d00200128020021050c010b200441016a22052004490d1e2004410174220a2005200a20054b1b220a4100480d1e0240024020040d00200a102d21050c010b20012802002004200a103121050b2005450d1d20012005360200200141046a200a360200200141086a28020021040b2003200441016a360200200520046a41013a0000200041386a280200210a0240024020062802002205200328020022046b4104490d00200128020021050c010b200441046a22092004490d1e200541017422042009200420094b1b22044100480d1e0240024020050d002004102d21050c010b200128020020052004103121050b2005450d1d20012005360200200141046a2004360200200141086a28020021040b2003200441046a360200200520046a200a3600002000413c6a28020021050240024020062802002204200328020022006b4104490d00200128020021040c010b200041046a220a2000490d1e20044101742200200a2000200a4b1b22004100480d1e0240024020040d002000102d21040c010b200128020020042000103121040b2004450d1d20012004360200200141046a2000360200200141086a28020021000b2003200041046a360200200420006a20053600000b0240024020062802002204200328020022006b4120490d00200128020021040c010b200041206a22052000490d1d200441017422002005200020054b1b22004100480d1d0240024020040d002000102d21040c010b200128020020042000103121040b2004450d1c20012004360200200141046a2000360200200141086a28020021000b2003200041206a360200200420006a220041186a200841196a290000370000200041106a200841116a290000370000200041086a200841096a290000370000200020082900013700000c1a0b02400240200628020020032802002204460d00200128020021050c010b200441016a22052004490d1c2004410174220a2005200a20054b1b220a4100480d1c0240024020040d00200a102d21050c010b20012802002004200a103121050b2005450d1b20012005360200200141046a200a360200200141086a28020021040b2003200441016a360200200520046a41043a000020082f0122210a0240024020062802002205200328020022046b4102490d00200128020021050c010b200441026a22092004490d1c200541017422042009200420094b1b22044100480d1c0240024020050d002004102d21050c010b200128020020052004103121050b2005450d1b20012005360200200141046a2004360200200141086a28020021040b200141086a220c200441026a360200200520046a200a3b000020002802282104200041306a28020022052001106902402005450d0020054105742109200141046a210d0340024002402006280200220a200328020022056b4120490d002001280200210a0c010b200541206a220b2005490d1e200a4101742205200b2005200b4b1b22054100480d1e02400240200a0d002005102d210a0c010b2001280200200a20051031210a0b200a450d1d2001200a360200200d2005360200200c28020021050b2003200541206a360200200a20056a220541186a200441186a290000370000200541106a200441106a290000370000200541086a200441086a29000037000020052004290000370000200441206a2104200941606a22090d000b0b2000280234210a0240024020062802002205200328020022046b4104490d00200128020021050c010b200441046a22092004490d1c200541017422042009200420094b1b22044100480d1c0240024020050d002004102d21050c010b200128020020052004103121050b2005450d1b20012005360200200141046a2004360200200141086a28020021040b2003200441046a360200200520046a200a360000200041386a28020021050240024020062802002204200328020022006b4104490d00200128020021040c010b200041046a220a2000490d1c20044101742200200a2000200a4b1b22004100480d1c0240024020040d002000102d21040c010b200128020020042000103121040b2004450d1b20012004360200200141046a2000360200200141086a28020021000b2003200041046a360200200420006a20053600000240024020062802002204200328020022006b4120490d00200128020021040c010b200041206a22052000490d1c200441017422002005200020054b1b22004100480d1c0240024020040d002000102d21040c010b200128020020042000103121040b2004450d1b20012004360200200141046a2000360200200141086a28020021000b2003200041206a360200200420006a220041186a200841196a290000370000200041106a200841116a290000370000200041086a200841096a290000370000200020082900013700000c190b02400240200141046a280200200141086a2802002200460d00200128020021030c010b200041016a22032000490d1b200041017422042003200420034b1b22044100480d1b0240024020000d002004102d21030c010b200128020020002004103121030b2003450d1a20012003360200200141046a2004360200200141086a28020021000b200141086a200041016a360200200320006a41023a0000200110e8020c180b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d1a200341017422052004200520044b1b22054100480d1a0240024020030d002005102d21040c010b200128020020032005103121040b2004450d1920012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41033a000002400240200141046a28020020052802002203460d00200128020021040c010b200341016a22042003490d1a200341017422052004200520044b1b22054100480d1a0240024020030d002005102d21040c010b200128020020032005103121040b2004450d1920012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41003a0000200041086a200110e9020c170b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d19200341017422052004200520044b1b22054100480d190240024020030d002005102d21040c010b200128020020032005103121040b2004450d1820012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41043a000002400240200141046a28020020052802002203460d00200128020021040c010b200341016a22042003490d19200341017422052004200520044b1b22054100480d190240024020030d002005102d21040c010b200128020020032005103121040b2004450d1820012004360200200141046a2005360200200141086a28020021030b200141086a2206200341016a360200200420036a41003a00002000280204210c2000410c6a2802002200200110692000450d16200c200041f0006c6a210d200141046a210b03404120102d2200450d182000200c290010370000200041186a2205200c41286a290000370000200041106a220a200c41206a290000370000200041086a2209200c41186a29000037000002400240200b2802002204200628020022036b4120490d00200128020021040c010b200341206a22082003490d1a200441017422032008200320084b1b22034100480d1a0240024020040d002003102d21040c010b200128020020042003103121040b2004450d1920012004360200200b2003360200200628020021030b2006200341206a360200200420036a220341186a2005290000370000200341106a200a290000370000200341086a2009290000370000200320002900003700002000102f200c20011095024120102d2200450d182000200c290030370000200041186a2205200c41c8006a290000370000200041106a220a200c41c0006a290000370000200041086a2209200c41386a29000037000002400240200b2802002204200628020022036b4120490d00200128020021040c010b200341206a22082003490d1a200441017422032008200320084b1b22034100480d1a0240024020040d002003102d21040c010b200128020020042003103121040b2004450d1920012004360200200b2003360200200628020021030b2006200341206a360200200420036a220341186a2005290000370000200341106a200a290000370000200341086a2009290000370000200320002900003700002000102f4120102d2200450d182000200c290050370000200041186a2205200c41e8006a290000370000200041106a220a200c41e0006a290000370000200041086a2209200c41d8006a29000037000002400240200b2802002204200628020022036b4120490d00200128020021040c010b200341206a22082003490d1a200441017422032008200320084b1b22034100480d1a0240024020040d002003102d21040c010b200128020020042003103121040b2004450d1920012004360200200b2003360200200628020021030b2006200341206a360200200420036a220341186a2005290000370000200341106a200a290000370000200341086a2009290000370000200320002900003700002000102f200c2802042104200c28020c22002001106902402000450d00200041246c210903402002200410ea022002280200210a02400240200b2802002205200628020022006b20022802082203490d00200128020021050c010b200020036a22082000490d1c200541017422002008200020084b1b22004100480d1c0240024020050d002000102d21050c010b200128020020052000103121050b2005450d1b20012005360200200b2000360200200628020021000b2006200020036a360200200520006a200a200310e8061a02402002280204450d00200a102f0b200441246a21042009415c6a22090d000b0b200c41f0006a220c200d470d000c170b0b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d18200341017422052004200520044b1b22054100480d180240024020030d002005102d21040c010b200128020020032005103121040b2004450d1720012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41053a0000200041046a22032d0000417f6a220441034b0d1502400240024002400240024020040e0400010203000b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d1d200341017422052004200520044b1b22054100480d1d0240024020030d002005102d21040c010b200128020020032005103121040b2004450d1c20012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41003a0000200028020821030c040b02400240200141046a280200200141086a2802002204460d00200128020021050c010b200441016a22052004490d1c200441017422062005200620054b1b22064100480d1c0240024020040d002006102d21050c010b200128020020042006103121050b2005450d1b20012005360200200141046a2006360200200141086a28020021040b200141086a2206200441016a360200200520046a41013a000002400240200141046a2802002205200628020022046b4120490d00200128020021050c010b200441206a22062004490d1c200541017422042006200420064b1b22044100480d1c0240024020050d002004102d21050c010b200128020020052004103121050b2005450d1b20012005360200200141046a2004360200200141086a28020021040b200141086a200441206a360200200520046a220441186a200341196a290000370000200441106a200341116a290000370000200441086a200341096a290000370000200420032900013700000c020b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d1b200341017422052004200520044b1b22054100480d1b0240024020030d002005102d21040c010b200128020020032005103121040b2004450d1a20012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41023a0000200028020821030c020b02400240200141046a280200200141086a2802002204460d00200128020021050c010b200441016a22052004490d1a200441017422062005200620054b1b22064100480d1a0240024020040d002006102d21050c010b200128020020042006103121050b2005450d1920012005360200200141046a2006360200200141086a28020021040b200141086a2206200441016a360200200520046a41033a000002400240200141046a2802002205200628020022046b4120490d00200128020021050c010b200441206a22062004490d1a200541017422042006200420064b1b22044100480d1a0240024020050d002004102d21050c010b200128020020052004103121050b2005450d1920012005360200200141046a2004360200200141086a28020021040b200141086a200441206a360200200520046a220441186a200341196a290000370000200441106a200341116a290000370000200441086a200341096a290000370000200420032900013700000b200028022821030b200220033602002002210502400240200141046a2802002204200141086a28020022006b4104490d00200128020021040c010b200041046a22032000490d18200441017422002003200020034b1b22004100480d180240024020040d002000102d21040c010b200128020020042000103121040b2004450d1720012004360200200141046a2000360200200141086a2802002100200528020021030b200141086a200041046a360200200420006a20033600000c150b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d17200341017422052004200520044b1b22054100480d170240024020030d002005102d21040c010b200128020020032005103121040b2004450d1620012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41063a00002000280208417f6a220341034b0d140240024002400240024020030e0400010203000b02400240200141046a280200200141086a2802002204460d00200128020021050c010b200441016a22032004490d1b200441017422052003200520034b1b22034100480d1b0240024020040d002003102d21050c010b200128020020042003103121050b2005450d1a20012005360200200141046a2003360200200141086a28020021040b200041306a2103200141086a200441016a360200200520046a41003a00002000410c6a200110eb02200241106a21000c030b02400240200141046a280200200141086a2802002204460d00200128020021050c010b200441016a22032004490d1a200441017422052003200520034b1b22034100480d1a0240024020040d002003102d21050c010b200128020020042003103121050b2005450d1920012005360200200141046a2003360200200141086a28020021040b200041c0006a2103200141086a200441016a360200200520046a41013a00002000410c6a200110eb022002200041306a360214200241146a200110c202200241186a21000c020b02400240200141046a280200200141086a2802002204460d00200128020021050c010b200441016a22032004490d19200441017422052003200520034b1b22034100480d190240024020040d002003102d21050c010b200128020020042003103121050b2005450d1820012005360200200141046a2003360200200141086a28020021040b200041d8006a2103200141086a200441016a360200200520046a41023a00002000410c6a200110eb02200041306a200110eb022002411c6a21000c010b02400240200141046a280200200141086a2802002204460d00200128020021050c010b200441016a22032004490d18200441017422052003200520034b1b22034100480d180240024020040d002003102d21050c010b200128020020042003103121050b2005450d1720012005360200200141046a2003360200200141086a28020021040b200041306a2103200141086a200441016a360200200520046a41033a00002000410c6a200110eb02200221000b200020033602002000200110c2020c140b02400240200141046a2205280200200141086a22032802002204460d00200128020021060c010b200441016a22062004490d162004410174220a2006200a20064b1b220a4100480d160240024020040d00200a102d21060c010b20012802002004200a103121060b2006450d1520012006360200200141046a200a360200200141086a28020021040b2003200441016a360200200620046a41073a0000200041086a22062d0000417f6a220441144b0d1302400240024002400240024002400240024002400240024002400240024002400240024002400240024020040e15000102030405060708090a0b0c0d0e0f1011121314000b02400240200528020020032802002204460d002001280200210a0c010b200441016a220a2004490d2a20044101742209200a2009200a4b1b22094100480d2a0240024020040d002009102d210a0c010b2001280200200420091031210a0b200a450d292001200a360200200141046a2009360200200141086a28020021040b200141086a200441016a360200200a20046a41003a00002000410c6a200110eb022002200041306a3602002002200110c20220062d0001220041024b0d2702400240024020000e03000102000b02400240200528020020032802002200460d00200128020021040c010b200041016a22042000490d2e200041017422052004200520044b1b22054100480d2e0240024020000d002005102d21040c010b200128020020002005103121040b2004450d2b20012004360200200141046a2005360200200141086a28020021000b2003200041016a360200200420006a41003a00000c290b02400240200528020020032802002200460d00200128020021040c010b200041016a22042000490d2d200041017422052004200520044b1b22054100480d2d0240024020000d002005102d21040c010b200128020020002005103121040b2004450d2c20012004360200200141046a2005360200200141086a28020021000b2003200041016a360200200420006a41013a00000c280b02400240200528020020032802002200460d00200128020021040c010b200041016a22042000490d2c200041017422052004200520044b1b22054100480d2c0240024020000d002005102d21040c010b200128020020002005103121040b2004450d2b20012004360200200141046a2005360200200141086a28020021000b2003200041016a360200200420006a41023a00000c270b02400240200528020020032802002203460d00200128020021040c010b200341016a22042003490d2b200341017422052004200520044b1b22054100480d2b0240024020030d002005102d21040c010b200128020020032005103121040b2004450d2a20012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41013a00002002200041106a3602002002200110c2020c260b02400240200528020020032802002203460d00200128020021040c010b200341016a22042003490d2a200341017422052004200520044b1b22054100480d2a0240024020030d002005102d21040c010b200128020020032005103121040b2004450d2920012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41023a00002002200041106a3602002002200110c2020c250b02400240200528020020032802002200460d00200128020021040c010b200041016a22042000490d29200041017422052004200520044b1b22054100480d290240024020000d002005102d21040c010b200128020020002005103121040b2004450d2820012004360200200141046a2005360200200141086a28020021000b2003200041016a360200200420006a41033a00000c240b02400240200528020020032802002203460d00200128020021040c010b200341016a22042003490d28200341017422052004200520044b1b22054100480d280240024020030d002005102d21040c010b200128020020032005103121040b2004450d2720012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41043a00002000410c6a20011095020c230b02400240200528020020032802002203460d00200128020021040c010b200341016a22042003490d27200341017422052004200520044b1b22054100480d270240024020030d002005102d21040c010b200128020020032005103121040b2004450d2620012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41053a0000200028020c2103200041146a2802002200200110692000450d22200041246c210003402003200110eb02200341246a21032000415c6a22000d000c230b0b02400240200528020020032802002200460d00200128020021040c010b200041016a22042000490d26200041017422052004200520044b1b22054100480d260240024020000d002005102d21040c010b200128020020002005103121040b2004450d2520012004360200200141046a2005360200200141086a28020021000b2003200041016a360200200420006a41063a00000c210b02400240200528020020032802002200460d00200128020021040c010b200041016a22042000490d252000410174220a2004200a20044b1b220a4100480d250240024020000d00200a102d21040c010b20012802002000200a103121040b2004450d2420012004360200200141046a200a360200200141086a28020021000b2003200041016a360200200420006a41073a000020062d0001220041024b0d2002400240024020000e03000102000b02400240200528020020032802002200460d00200128020021040c010b200041016a22042000490d27200041017422052004200520044b1b22054100480d270240024020000d002005102d21040c010b200128020020002005103121040b2004450d2620012004360200200141046a2005360200200141086a28020021000b2003200041016a360200200420006a41003a00000c220b02400240200528020020032802002200460d00200128020021040c010b200041016a22042000490d26200041017422052004200520044b1b22054100480d260240024020000d002005102d21040c010b200128020020002005103121040b2004450d2520012004360200200141046a2005360200200141086a28020021000b2003200041016a360200200420006a41013a00000c210b02400240200528020020032802002200460d00200128020021040c010b200041016a22042000490d25200041017422052004200520044b1b22054100480d250240024020000d002005102d21040c010b200128020020002005103121040b2004450d2420012004360200200141046a2005360200200141086a28020021000b2003200041016a360200200420006a41023a00000c200b02400240200528020020032802002203460d00200128020021040c010b200341016a22042003490d24200341017422052004200520044b1b22054100480d240240024020030d002005102d21040c010b200128020020032005103121040b2004450d2320012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41083a00002000410c6a200110eb020c1f0b02400240200528020020032802002203460d00200128020021040c010b200341016a22042003490d23200341017422052004200520044b1b22054100480d230240024020030d002005102d21040c010b200128020020032005103121040b2004450d2220012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41093a00002000410c6a20011095020c1e0b02400240200528020020032802002200460d00200128020021040c010b200041016a22042000490d22200041017422052004200520044b1b22054100480d220240024020000d002005102d21040c010b200128020020002005103121040b2004450d2120012004360200200141046a2005360200200141086a28020021000b2003200041016a360200200420006a410a3a00000c1d0b02400240200528020020032802002200460d00200128020021040c010b200041016a22042000490d21200041017422052004200520044b1b22054100480d210240024020000d002005102d21040c010b200128020020002005103121040b2004450d2020012004360200200141046a2005360200200141086a28020021000b2003200041016a360200200420006a410b3a00000c1c0b02400240200528020020032802002204460d00200128020021060c010b200441016a22062004490d202004410174220a2006200a20064b1b220a4100480d200240024020040d00200a102d21060c010b20012802002004200a103121060b2006450d1f20012006360200200141046a200a360200200141086a28020021040b200141086a220b200441016a360200200620046a410c3a0000200028020c2104200041146a2802002200200110692000450d1b2000410574210a200141046a210803400240024020052802002206200328020022006b4120490d00200128020021060c010b200041206a22092000490d21200641017422002009200020094b1b22004100480d210240024020060d002000102d21060c010b200128020020062000103121060b2006450d202001200636020020082000360200200b28020021000b2003200041206a360200200620006a220041186a200441186a290000370000200041106a200441106a290000370000200041086a200441086a29000037000020002004290000370000200441206a2104200a41606a220a0d000c1c0b0b02400240200528020020032802002200460d00200128020021040c010b200041016a22042000490d1f2000410174220a2004200a20044b1b220a4100480d1f0240024020000d00200a102d21040c010b20012802002000200a103121040b2004450d1e20012004360200200141046a200a360200200141086a28020021000b2003200041016a360200200420006a410d3a00000240024020052802002204200328020022006b4120490d00200128020021040c010b200041206a22052000490d1f200441017422002005200020054b1b22004100480d1f0240024020040d002000102d21040c010b200128020020042000103121040b2004450d1e20012004360200200141046a2000360200200141086a28020021000b2003200041206a360200200420006a220041186a200641196a290000370000200041106a200641116a290000370000200041086a200641096a290000370000200020062900013700000c1a0b02400240200528020020032802002200460d00200128020021040c010b200041016a22042000490d1e200041017422052004200520044b1b22054100480d1e0240024020000d002005102d21040c010b200128020020002005103121040b2004450d1d20012004360200200141046a2005360200200141086a28020021000b2003200041016a360200200420006a410e3a00000c190b02400240200528020020032802002204460d00200128020021060c010b200441016a22062004490d1d2004410174220a2006200a20064b1b220a4100480d1d0240024020040d00200a102d21060c010b20012802002004200a103121060b2006450d1c20012006360200200141046a200a360200200141086a28020021040b2003200441016a360200200620046a410f3a0000200028020c21060240024020052802002205200328020022046b4104490d00200128020021050c010b200441046a220a2004490d1d20054101742204200a2004200a4b1b22044100480d1d0240024020050d002004102d21050c010b200128020020052004103121050b2005450d1c20012005360200200141046a2004360200200141086a28020021040b200141086a220a200441046a360200200520046a200636000020002802102106200041186a28020022042001106902400240200141046a2802002205200a28020022006b20044102742204490d00200128020021050c010b200020046a220a2000490d1d20054101742200200a2000200a4b1b22004100480d1d0240024020050d002000102d21050c010b200128020020052000103121050b2005450d1c20012005360200200141046a2000360200200141086a28020021000b2003200020046a360200200520006a2006200410e8061a0c180b02400240200528020020032802002204460d00200128020021060c010b200441016a22062004490d1c2004410174220a2006200a20064b1b220a4100480d1c0240024020040d00200a102d21060c010b20012802002004200a103121060b2006450d1b20012006360200200141046a200a360200200141086a28020021040b2003200441016a360200200620046a41103a0000200028020c210a0240024020052802002206200328020022046b4104490d00200128020021060c010b200441046a22092004490d1c200641017422042009200420094b1b22044100480d1c0240024020060d002004102d21060c010b200128020020062004103121060b2006450d1b20012006360200200141046a2004360200200141086a28020021040b200141086a220b200441046a360200200620046a200a36000020002802102104200041186a2802002200200110692000450d172004200041246c6a2108200141046a210c03400240024020052802002206200328020022006b4120490d00200128020021060c010b200041206a220a2000490d1d20064101742200200a2000200a4b1b22004100480d1d0240024020060d002000102d21060c010b200128020020062000103121060b2006450d1c20012006360200200c2000360200200b28020021000b2003200041206a360200200620006a220041186a200441186a290000370000200041106a200441106a290000370000200041086a200441086a29000037000020002004290000370000200441206a280200210a0240024020052802002206200328020022006b4104490d00200128020021060c010b200041046a22092000490d1d200641017422002009200020094b1b22004100480d1d0240024020060d002000102d21060c010b200128020020062000103121060b2006450d1c20012006360200200c2000360200200b28020021000b2003200041046a360200200620006a200a3600002008200441246a2204470d000c180b0b02400240200528020020032802002204460d00200128020021060c010b200441016a22062004490d1b2004410174220a2006200a20064b1b220a4100480d1b0240024020040d00200a102d21060c010b20012802002004200a103121060b2006450d1a20012006360200200141046a200a360200200141086a28020021040b2003200441016a360200200620046a41113a0000200028020c21060240024020052802002204200328020022006b4104490d00200128020021040c010b200041046a22052000490d1b200441017422002005200020054b1b22004100480d1b0240024020040d002000102d21040c010b200128020020042000103121040b2004450d1a20012004360200200141046a2000360200200141086a28020021000b2003200041046a360200200420006a20063600000c160b02400240200528020020032802002203460d00200128020021040c010b200341016a22042003490d1a200341017422052004200520044b1b22054100480d1a0240024020030d002005102d21040c010b200128020020032005103121040b2004450d1920012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41123a00002002200041106a3602002002200110c2020c150b02400240200528020020032802002203460d00200128020021040c010b200341016a22042003490d19200341017422052004200520044b1b22054100480d190240024020030d002005102d21040c010b200128020020032005103121040b2004450d1820012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41133a00002000410c6a20011095020c140b02400240200528020020032802002200460d00200128020021040c010b200041016a22042000490d182000410174220a2004200a20044b1b220a4100480d180240024020000d00200a102d21040c010b20012802002000200a103121040b2004450d1720012004360200200141046a200a360200200141086a28020021000b2003200041016a360200200420006a41143a00000240024020052802002204200328020022006b4120490d00200128020021040c010b200041206a22052000490d18200441017422002005200020054b1b22004100480d180240024020040d002000102d21040c010b200128020020042000103121040b2004450d1720012004360200200141046a2000360200200141086a28020021000b2003200041206a360200200420006a220041186a200641196a290000370000200041106a200641116a290000370000200041086a200641096a290000370000200020062900013700000c130b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d17200341017422052004200520044b1b22054100480d170240024020030d002005102d21040c010b200128020020032005103121040b2004450d1620012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41083a000002402000280204450d0002400240200141046a28020020052802002203460d00200128020021040c010b200341016a22042003490d18200341017422052004200520044b1b22054100480d180240024020030d002005102d21040c010b200128020020032005103121040b2004450d1720012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41003a000002400240200141046a2802002204200528020022036b4120490d00200128020021040c010b200341206a22052003490d18200441017422032005200320054b1b22034100480d180240024020040d002003102d21040c010b200128020020042003103121040b2004450d1720012004360200200141046a2003360200200141086a28020021030b200141086a2205200341206a360200200420036a220341186a200041106a220441186a290000370000200341106a200441106a290000370000200341086a200441086a2900003700002003200429000037000002400240200141046a2802002204200528020022036b4120490d00200128020021040c010b200341206a22052003490d18200441017422032005200320054b1b22034100480d180240024020040d002003102d21040c010b200128020020042003103121040b2004450d1720012004360200200141046a2003360200200141086a28020021030b200141086a2205200341206a360200200420036a220341186a200041306a220441186a290000370000200341106a200441106a290000370000200341086a200441086a2900003700002003200429000037000002400240200141046a2802002204200528020022036b4120490d00200128020021040c010b200341206a22052003490d18200441017422032005200320054b1b22034100480d180240024020040d002003102d21040c010b200128020020042003103121040b2004450d1720012004360200200141046a2003360200200141086a28020021030b200141086a2205200341206a360200200420036a220341186a200041d0006a220441186a290000370000200341106a200441106a290000370000200341086a200441086a2900003700002003200429000037000002400240200141046a2802002204200528020022036b4120490d00200128020021040c010b200341206a22052003490d18200441017422032005200320054b1b22034100480d180240024020040d002003102d21040c010b200128020020042003103121040b2004450d1720012004360200200141046a2003360200200141086a28020021030b200141086a2205200341206a360200200420036a220341186a200041f0006a220441186a290000370000200341106a200441106a290000370000200341086a200441086a29000037000020032004290000370000200028020421062000410c6a28020022002001106902400240200141046a2802002204200528020022036b2000490d00200128020021040c010b200320006a22052003490d18200441017422032005200320054b1b22034100480d180240024020040d002003102d21040c010b200128020020042003103121040b2004450d1720012004360200200141046a2003360200200141086a28020021030b200141086a200320006a360200200420036a2006200010e8061a0c130b02400240200141046a28020020052802002200460d00200128020021030c010b200041016a22032000490d17200041017422042003200420034b1b22044100480d170240024020000d002004102d21030c010b200128020020002004103121030b2003450d1620012003360200200141046a2004360200200141086a28020021000b200141086a200041016a360200200320006a41013a00000c120b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d16200341017422052004200520044b1b22054100480d160240024020030d002005102d21040c010b200128020020032005103121040b2004450d1520012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41093a0000200041086a200110c1020c110b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d15200341017422052004200520044b1b22054100480d150240024020030d002005102d21040c010b200128020020032005103121040b2004450d1420012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a410a3a0000200041046a200110ec020c100b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d14200341017422052004200520044b1b22054100480d140240024020030d002005102d21040c010b200128020020032005103121040b2004450d1320012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a410b3a0000200041046a200110ec020c0f0b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d13200341017422052004200520044b1b22054100480d130240024020030d002005102d21040c010b200128020020032005103121040b2004450d1220012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a410c3a00002000280208417f6a220341054b0d0e02400240024002400240024020030e06000102030405000b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d18200341017422052004200520044b1b22054100480d180240024020030d002005102d21040c010b200128020020032005103121040b2004450d1720012004360200200141046a2005360200200141086a28020021030b200141086a2206200341016a360200200420036a41003a0000200028020c2103200041146a28020022042001106902402004450d002004410574210a200141046a210903400240024020092802002205200628020022046b4120490d00200128020021050c010b200441206a220b2004490d1a20054101742204200b2004200b4b1b22044100480d1a0240024020050d002004102d21050c010b200128020020052004103121050b2005450d192001200536020020092004360200200628020021040b2006200441206a360200200520046a220441186a200341186a290000370000200441106a200341106a290000370000200441086a200341086a29000037000020042003290000370000200341206a2103200a41606a220a0d000b0b2002200041186a3602002002200110c2020c130b02400240200141046a280200200141086a2802002200460d00200128020021030c010b200041016a22032000490d17200041017422042003200420034b1b22044100480d170240024020000d002004102d21030c010b200128020020002004103121030b2003450d1620012003360200200141046a2004360200200141086a28020021000b200141086a200041016a360200200320006a41013a00000c120b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d16200341017422052004200520044b1b22054100480d160240024020030d002005102d21040c010b200128020020032005103121040b2004450d1520012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41023a00002000410c6a200110eb020c110b02400240200141046a280200200141086a2802002200460d00200128020021030c010b200041016a22032000490d15200041017422042003200420034b1b22044100480d150240024020000d002004102d21030c010b200128020020002004103121030b2003450d1420012003360200200141046a2004360200200141086a28020021000b200141086a200041016a360200200320006a41033a00000c100b02400240200141046a280200200141086a2802002200460d00200128020021030c010b200041016a22032000490d14200041017422042003200420034b1b22044100480d140240024020000d002004102d21030c010b200128020020002004103121030b2003450d1320012003360200200141046a2004360200200141086a28020021000b200141086a200041016a360200200320006a41043a00000c0f0b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d13200341017422052004200520044b1b22054100480d130240024020030d002005102d21040c010b200128020020032005103121040b2004450d1220012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41053a00002000410c6a200110eb020c0e0b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d12200341017422052004200520044b1b22054100480d120240024020030d002005102d21040c010b200128020020032005103121040b2004450d1120012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a410d3a0000200041046a22032d0000417f6a220441064b0d0d024002400240024002400240024020040e0700010203040506000b02400240200141046a280200200141086a2802002200460d00200128020021040c010b200041016a22042000490d18200041017422052004200520044b1b22054100480d180240024020000d002005102d21040c010b200128020020002005103121040b2004450d1720012004360200200141046a2005360200200141086a28020021000b200141086a2205200041016a360200200420006a41003a000002400240200141046a2802002204200528020022006b4120490d00200128020021040c010b200041206a22052000490d18200441017422002005200020054b1b22004100480d180240024020040d002000102d21040c010b200128020020042000103121040b2004450d1720012004360200200141046a2000360200200141086a28020021000b200141086a200041206a360200200420006a220041186a200341196a290000370000200041106a200341116a290000370000200041086a200341096a290000370000200020032900013700000c130b02400240200141046a280200200141086a2802002200460d00200128020021040c010b200041016a22042000490d17200041017422052004200520044b1b22054100480d170240024020000d002005102d21040c010b200128020020002005103121040b2004450d1620012004360200200141046a2005360200200141086a28020021000b200141086a2205200041016a360200200420006a41013a000002400240200141046a2802002204200528020022006b4120490d00200128020021040c010b200041206a22052000490d17200441017422002005200020054b1b22004100480d170240024020040d002000102d21040c010b200128020020042000103121040b2004450d1620012004360200200141046a2000360200200141086a28020021000b200141086a200041206a360200200420006a220041186a200341196a290000370000200041106a200341116a290000370000200041086a200341096a290000370000200020032900013700000c120b02400240200141046a280200200141086a2802002200460d00200128020021040c010b200041016a22042000490d16200041017422052004200520044b1b22054100480d160240024020000d002005102d21040c010b200128020020002005103121040b2004450d1520012004360200200141046a2005360200200141086a28020021000b200141086a2205200041016a360200200420006a41023a000002400240200141046a2802002204200528020022006b4120490d00200128020021040c010b200041206a22052000490d16200441017422002005200020054b1b22004100480d160240024020040d002000102d21040c010b200128020020042000103121040b2004450d1520012004360200200141046a2000360200200141086a28020021000b200141086a2205200041206a360200200420006a220041186a200341196a290000370000200041106a200341116a290000370000200041086a200341096a2900003700002000200329000137000002400240200141046a2802002204200528020022006b4120490d00200128020021040c010b200041206a22052000490d16200441017422002005200020054b1b22004100480d160240024020040d002000102d21040c010b200128020020042000103121040b2004450d1520012004360200200141046a2000360200200141086a28020021000b200141086a200041206a360200200420006a220041186a200341216a220341186a290000370000200041106a200341106a290000370000200041086a200341086a290000370000200020032900003700000c110b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d15200341017422052004200520044b1b22054100480d150240024020030d002005102d21040c010b200128020020032005103121040b2004450d1420012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41033a000020002802082103200041106a2802002200200110692000450d1020004105742106200141046a210a034002400240200a2802002204200528020022006b4120490d00200128020021040c010b200041206a22092000490d16200441017422002009200020094b1b22004100480d160240024020040d002000102d21040c010b200128020020042000103121040b2004450d1520012004360200200a2000360200200528020021000b2005200041206a360200200420006a220041186a200341186a290000370000200041106a200341106a290000370000200041086a200341086a29000037000020002003290000370000200341206a2103200641606a22060d000c110b0b02400240200141046a280200200141086a2802002200460d00200128020021040c010b200041016a22042000490d14200041017422052004200520044b1b22054100480d140240024020000d002005102d21040c010b200128020020002005103121040b2004450d1320012004360200200141046a2005360200200141086a28020021000b200141086a2205200041016a360200200420006a41043a000002400240200141046a2802002204200528020022006b4120490d00200128020021040c010b200041206a22052000490d14200441017422002005200020054b1b22004100480d140240024020040d002000102d21040c010b200128020020042000103121040b2004450d1320012004360200200141046a2000360200200141086a28020021000b200141086a200041206a360200200420006a220041186a200341196a290000370000200041106a200341116a290000370000200041086a200341096a290000370000200020032900013700000c0f0b02400240200141046a280200200141086a2802002200460d00200128020021040c010b200041016a22042000490d13200041017422052004200520044b1b22054100480d130240024020000d002005102d21040c010b200128020020002005103121040b2004450d1220012004360200200141046a2005360200200141086a28020021000b200141086a2205200041016a360200200420006a41053a000002400240200141046a2802002204200528020022006b4120490d00200128020021040c010b200041206a22052000490d13200441017422002005200020054b1b22004100480d130240024020040d002000102d21040c010b200128020020042000103121040b2004450d1220012004360200200141046a2000360200200141086a28020021000b200141086a200041206a360200200420006a220041186a200341196a290000370000200041106a200341116a290000370000200041086a200341096a290000370000200020032900013700000c0e0b02400240200141046a280200200141086a2802002200460d00200128020021030c010b200041016a22032000490d12200041017422042003200420034b1b22044100480d120240024020000d002004102d21030c010b200128020020002004103121030b2003450d1120012003360200200141046a2004360200200141086a28020021000b200141086a200041016a360200200320006a41063a00000c0d0b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d11200341017422052004200520044b1b22054100480d110240024020030d002005102d21040c010b200128020020032005103121040b2004450d1020012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a410e3a000002400240200141046a28020020052802002203460d00200128020021040c010b200341016a22042003490d11200341017422052004200520044b1b22054100480d110240024020030d002005102d21040c010b200128020020032005103121040b2004450d1020012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41003a0000200041046a20011095020c0c0b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d10200341017422052004200520044b1b22054100480d100240024020030d002005102d21040c010b200128020020032005103121040b2004450d0f20012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a410f3a000002400240200141046a28020020052802002203460d00200128020021040c010b200341016a22042003490d10200341017422052004200520044b1b22054100480d100240024020030d002005102d21040c010b200128020020032005103121040b2004450d0f20012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41003a0000200028020421062000410c6a28020022002001106902400240200141046a2802002204200528020022036b2000490d00200128020021040c010b200320006a22052003490d10200441017422032005200320054b1b22034100480d100240024020040d002003102d21040c010b200128020020042003103121040b2004450d0f20012004360200200141046a2003360200200141086a28020021030b200141086a200320006a360200200420036a2006200010e8061a0c0b0b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d0f200341017422052004200520044b1b22054100480d0f0240024020030d002005102d21040c010b200128020020032005103121040b2004450d0e20012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41103a0000200041086a22032d0000417f6a220441074b0d0a0240024002400240024002400240024020040e080001020304050607000b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d18200341017422052004200520044b1b22054100480d180240024020030d002005102d21040c010b200128020020032005103121040b2004450d1720012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41003a00002002200041306a3602002002200110c2022000410c6a200110eb020c110b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d17200341017422052004200520044b1b22054100480d170240024020030d002005102d21040c010b200128020020032005103121040b2004450d1620012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41013a00002000410c6a20011095020c100b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d16200341017422052004200520044b1b22054100480d160240024020030d002005102d21040c010b200128020020032005103121040b2004450d1520012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41023a00002000410c6a20011095020c0f0b02400240200141046a280200200141086a2802002204460d00200128020021050c010b200441016a22052004490d15200441017422062005200620054b1b22064100480d150240024020040d002006102d21050c010b200128020020042006103121050b2005450d1420012005360200200141046a2006360200200141086a28020021040b200141086a2206200441016a360200200520046a41033a0000200028022c210a200041346a28020022002001106902400240200141046a2802002205200628020022046b2000490d00200128020021050c010b200420006a22062004490d15200541017422042006200420064b1b22044100480d150240024020050d002004102d21050c010b200128020020052004103121050b2005450d1420012005360200200141046a2004360200200141086a28020021040b200141086a2206200420006a360200200520046a200a200010e8061a02400240200141046a2802002204200628020022006b4120490d00200128020021040c010b200041206a22052000490d15200441017422002005200020054b1b22004100480d150240024020040d002000102d21040c010b200128020020042000103121040b2004450d1420012004360200200141046a2000360200200141086a28020021000b200141086a200041206a360200200420006a220041186a200341196a290000370000200041106a200341116a290000370000200041086a200341096a290000370000200020032900013700000c0e0b02400240200141046a280200200141086a2802002200460d00200128020021040c010b200041016a22042000490d14200041017422052004200520044b1b22054100480d140240024020000d002005102d21040c010b200128020020002005103121040b2004450d1320012004360200200141046a2005360200200141086a28020021000b200141086a2205200041016a360200200420006a41043a00004120102d2200450d1220002003290001370000200041186a200341196a290000370000200041106a200341116a290000370000200041086a200341096a29000037000002400240200141046a2802002204200528020022036b4120490d00200128020021040c010b200341206a22052003490d14200441017422032005200320054b1b22034100480d140240024020040d002003102d21040c010b200128020020042003103121040b2004450d1320012004360200200141046a2003360200200141086a28020021030b200141086a200341206a360200200420036a220341186a200041186a290000370000200341106a200041106a290000370000200341086a200041086a290000370000200320002900003700002000102f0c0d0b02400240200141046a280200200141086a2802002204460d00200128020021050c010b200441016a22052004490d13200441017422062005200620054b1b22064100480d130240024020040d002006102d21050c010b200128020020042006103121050b2005450d1220012005360200200141046a2006360200200141086a28020021040b200141086a220a200441016a360200200520046a41053a0000200028022c2109200041346a28020022042001106902400240200141046a2802002206200a28020022056b2004490d00200128020021060c010b200520046a220a2005490d1320064101742205200a2005200a4b1b22054100480d130240024020060d002005102d21060c010b200128020020062005103121060b2006450d1220012006360200200141046a2005360200200141086a28020021050b200141086a220a200520046a360200200620056a2009200410e8061a02400240200141046a2802002205200a28020022046b4120490d00200128020021050c010b200441206a22062004490d13200541017422042006200420064b1b22044100480d130240024020050d002004102d21050c010b200128020020052004103121050b2005450d1220012005360200200141046a2004360200200141086a28020021040b200141086a2206200441206a360200200520046a220441186a200341196a290000370000200441106a200341116a290000370000200441086a200341096a29000037000020042003290001370000200041c0006a29030021072000290338210e02400240200141046a2802002203200628020022006b4110490d00200128020021030c010b200041106a22042000490d13200341017422002004200020044b1b22004100480d130240024020030d002000102d21030c010b200128020020032000103121030b2003450d1220012003360200200141046a2000360200200141086a28020021000b200141086a200041106a360200200320006a220020073700082000200e3700000c0c0b02400240200141046a280200200141086a2802002204460d00200128020021050c010b200441016a22052004490d12200441017422062005200620054b1b22064100480d120240024020040d002006102d21050c010b200128020020042006103121050b2005450d1120012005360200200141046a2006360200200141086a28020021040b200141086a2206200441016a360200200520046a41063a00004120102d2204450d1020042003290001370000200441186a200341196a290000370000200441106a200341116a290000370000200441086a200341096a29000037000002400240200141046a2802002205200628020022036b4120490d00200128020021050c010b200341206a22062003490d12200541017422032006200320064b1b22034100480d120240024020050d002003102d21050c010b200128020020052003103121050b2005450d1120012005360200200141046a2003360200200141086a28020021030b200141086a2206200341206a360200200520036a220341186a200441186a290000370000200341106a200441106a290000370000200341086a200441086a290000370000200320042900003700002004102f200041386a29030021072000290330210e02400240200141046a2802002203200628020022006b4110490d00200128020021030c010b200041106a22042000490d12200341017422002004200020044b1b22004100480d120240024020030d002000102d21030c010b200128020020032000103121030b2003450d1120012003360200200141046a2000360200200141086a28020021000b200141086a200041106a360200200320006a220020073700082000200e3700000c0b0b02400240200141046a280200200141086a2802002200460d00200128020021040c010b200041016a22042000490d11200041017422052004200520044b1b22054100480d110240024020000d002005102d21040c010b200128020020002005103121040b2004450d1020012004360200200141046a2005360200200141086a28020021000b200141086a2205200041016a360200200420006a41073a00004120102d2200450d0f20002003290001370000200041186a200341196a290000370000200041106a200341116a290000370000200041086a200341096a29000037000002400240200141046a2802002204200528020022036b4120490d00200128020021040c010b200341206a22052003490d11200441017422032005200320054b1b22034100480d110240024020040d002003102d21040c010b200128020020042003103121040b2004450d1020012004360200200141046a2003360200200141086a28020021030b200141086a200341206a360200200420036a220341186a200041186a290000370000200341106a200041106a290000370000200341086a200041086a290000370000200320002900003700002000102f0c0a0b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d10200341017422052004200520044b1b22054100480d100240024020030d002005102d21040c010b200128020020032005103121040b2004450d0f20012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41113a0000200041086a22032d0000417f6a220441044b0d090240024002400240024020040e050001020304000b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d14200341017422052004200520044b1b22054100480d140240024020030d002005102d21040c010b200128020020032005103121040b2004450d1320012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41003a0000200041106a200110f6010c0d0b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d13200341017422052004200520044b1b22054100480d130240024020030d002005102d21040c010b200128020020032005103121040b2004450d1220012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41013a0000200041186a200110e902200028020c2106200041146a28020022002001106902400240200141046a2802002204200528020022036b2000490d00200128020021040c010b200320006a22052003490d13200441017422032005200320054b1b22034100480d130240024020040d002003102d21040c010b200128020020042003103121040b2004450d1220012004360200200141046a2003360200200141086a28020021030b200141086a200320006a360200200420036a2006200010e8061a0c0c0b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d12200341017422052004200520044b1b22054100480d120240024020030d002005102d21040c010b200128020020032005103121040b2004450d1120012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41023a00002000410c6a200110eb022002200041c0006a3602002002200110c202200041d0006a200110e90220002802302106200041386a28020022002001106902400240200141046a2802002204200528020022036b2000490d00200128020021040c010b200320006a22052003490d12200441017422032005200320054b1b22034100480d120240024020040d002003102d21040c010b200128020020042003103121040b2004450d1120012004360200200141046a2003360200200141086a28020021030b200141086a200320006a360200200420036a2006200010e8061a0c0b0b02400240200141046a280200200141086a2802002204460d00200128020021050c010b200441016a22052004490d11200441017422062005200620054b1b22064100480d110240024020040d002006102d21050c010b200128020020042006103121050b2005450d1020012005360200200141046a2006360200200141086a28020021040b200141086a2206200441016a360200200520046a41033a00002002200041386a3602002002200110c202200041c8006a200110e9024120102d2204450d0f20042003290001370000200441186a200341196a290000370000200441106a200341116a290000370000200441086a200341096a29000037000002400240200141046a2802002205200628020022036b4120490d00200128020021050c010b200341206a22062003490d11200541017422032006200320064b1b22034100480d110240024020050d002003102d21050c010b200128020020052003103121050b2005450d1020012005360200200141046a2003360200200141086a28020021030b200141086a2206200341206a360200200520036a220341186a200441186a290000370000200341106a200441106a290000370000200341086a200441086a290000370000200320042900003700002004102f200028022c2105200041346a28020022002001106902400240200141046a2802002204200628020022036b2000490d00200128020021040c010b200320006a22062003490d11200441017422032006200320064b1b22034100480d110240024020040d002003102d21040c010b200128020020042003103121040b2004450d1020012004360200200141046a2003360200200141086a28020021030b200141086a200320006a360200200420036a2005200010e8061a0c0a0b02400240200141046a280200200141086a2802002200460d00200128020021040c010b200041016a22042000490d10200041017422052004200520044b1b22054100480d100240024020000d002005102d21040c010b200128020020002005103121040b2004450d0f20012004360200200141046a2005360200200141086a28020021000b200141086a2205200041016a360200200420006a41043a000002400240200141046a2802002204200528020022006b4120490d00200128020021040c010b200041206a22052000490d10200441017422002005200020054b1b22004100480d100240024020040d002000102d21040c010b200128020020042000103121040b2004450d0f20012004360200200141046a2000360200200141086a28020021000b200141086a2205200041206a360200200420006a220041186a200341196a290000370000200041106a200341116a290000370000200041086a200341096a29000037000020002003290001370000024020032d00214101460d0002400240200141046a28020020052802002200460d00200128020021030c010b200041016a22032000490d11200041017422042003200420034b1b22044100480d110240024020000d002004102d21030c010b200128020020002004103121030b2003450d1020012003360200200141046a2004360200200141086a28020021000b200141086a200041016a360200200320006a41003a00000c0a0b02400240200141046a28020020052802002200460d00200128020021040c010b200041016a22042000490d10200041017422052004200520044b1b22054100480d100240024020000d002005102d21040c010b200128020020002005103121040b2004450d0f20012004360200200141046a2005360200200141086a28020021000b200141086a2205200041016a360200200420006a41013a000002400240200141046a2802002204200528020022006b4120490d00200128020021040c010b200041206a22052000490d10200441017422002005200020054b1b22004100480d100240024020040d002000102d21040c010b200128020020042000103121040b2004450d0f20012004360200200141046a2000360200200141086a28020021000b200141086a200041206a360200200420006a220041186a200341226a220341186a290000370000200041106a200341106a290000370000200041086a200341086a290000370000200020032900003700000c090b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d0f200341017422052004200520044b1b22054100480d0f0240024020030d002005102d21040c010b200128020020032005103121040b2004450d0e20012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41123a00002000280204417f6a220341024b0d0802400240024020030e03000102000b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d11200341017422052004200520044b1b22054100480d110240024020030d002005102d21040c010b200128020020032005103121040b2004450d1020012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41003a0000200028020820011091010c0a0b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d10200341017422052004200520044b1b22054100480d100240024020030d002005102d21040c010b200128020020032005103121040b2004450d0f20012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41013a0000200041086a200110eb020c090b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d0f200341017422052004200520044b1b22054100480d0f0240024020030d002005102d21040c010b200128020020032005103121040b2004450d0e20012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41023a0000200041086a200110eb02200028022c20011091010c080b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d0e200341017422052004200520044b1b22054100480d0e0240024020030d002005102d21040c010b200128020020032005103121040b2004450d0d20012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41133a000002400240200141046a28020020052802002203460d00200128020021040c010b200341016a22042003490d0e200341017422052004200520044b1b22054100480d0e0240024020030d002005102d21040c010b200128020020032005103121040b2004450d0d20012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41003a00002000280204210602400240200141046a2802002204200528020022036b4104490d00200128020021040c010b200341046a22052003490d0e200441017422032005200320054b1b22034100480d0e0240024020040d002003102d21040c010b200128020020042003103121040b2004450d0d20012004360200200141046a2003360200200141086a28020021030b200141086a220a200341046a360200200420036a2006360000200041086a2802002106200041106a28020022032001106902400240200141046a2802002205200a28020022046b2003490d00200128020021050c010b200420036a220a2004490d0e20054101742204200a2004200a4b1b22044100480d0e0240024020050d002004102d21050c010b200128020020052004103121050b2005450d0d20012005360200200141046a2004360200200141086a28020021040b200141086a220a200420036a360200200520046a2006200310e8061a200041146a28020021052000411c6a28020022032001106902402003450d0020052003410c6c6a210c200141046a210b034020052802002109200541086a28020022032001106902400240200b2802002206200a28020022046b2003490d00200128020021060c010b200420036a22082004490d10200641017422042008200420084b1b22044100480d100240024020060d002004102d21060c010b200128020020062004103121060b2006450d0f20012006360200200b2004360200200a28020021040b200a200420036a360200200620046a2009200310e8061a2005410c6a2205200c470d000b0b200041206a280200210502400240200141046a2802002204200a28020022036b4104490d00200128020021040c010b200341046a22062003490d0e200441017422032006200320064b1b22034100480d0e0240024020040d002003102d21040c010b200128020020042003103121040b2004450d0d20012004360200200141046a2003360200200141086a28020021030b200141086a2206200341046a360200200420036a2005360000200041246a280200210502400240200141046a2802002204200628020022036b4104490d00200128020021040c010b200341046a22062003490d0e200441017422032006200320064b1b22034100480d0e0240024020040d002003102d21040c010b200128020020042003103121040b2004450d0d20012004360200200141046a2003360200200141086a28020021030b200141086a2206200341046a360200200420036a200536000002400240200141046a2802002204200628020022036b41c000490d00200128020021040c010b200341c0006a22052003490d0e200441017422032005200320054b1b22034100480d0e0240024020040d002003102d21040c010b200128020020042003103121040b2004450d0d20012004360200200141046a2003360200200141086a28020021030b200141086a200341c0006a360200200420036a220341386a200041286a220041386a290000370000200341306a200041306a290000370000200341286a200041286a290000370000200341206a200041206a290000370000200341186a200041186a290000370000200341106a200041106a290000370000200341086a200041086a290000370000200320002900003700000c070b02400240200141046a280200200141086a2802002200460d00200128020021030c010b200041016a22032000490d0d200041017422042003200420034b1b22044100480d0d0240024020000d002004102d21030c010b200128020020002004103121030b2003450d0c20012003360200200141046a2004360200200141086a28020021000b200141086a200041016a360200200320006a41143a0000200110e8020c060b02400240200141046a280200200141086a2802002200460d00200128020021030c010b200041016a22032000490d0c200041017422042003200420034b1b22044100480d0c0240024020000d002004102d21030c010b200128020020002004103121030b2003450d0b20012003360200200141046a2004360200200141086a28020021000b200141086a200041016a360200200320006a41153a0000200110e8020c050b02400240200141046a280200200141086a2802002200460d00200128020021030c010b200041016a22032000490d0b200041017422042003200420034b1b22044100480d0b0240024020000d002004102d21030c010b200128020020002004103121030b2003450d0a20012003360200200141046a2004360200200141086a28020021000b200141086a200041016a360200200320006a41163a0000200110e8020c040b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d0a200341017422052004200520044b1b22054100480d0a0240024020030d002005102d21040c010b200128020020032005103121040b2004450d0920012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41173a0000200041086a22042d0000417f6a2203410a4b0d030240024002400240024002400240024002400240024020030e0b000102030405060708090a000b02400240200141046a280200200141086a2802002200460d00200128020021030c010b200041016a22032000490d14200041017422052003200520034b1b22054100480d140240024020000d002005102d21030c010b200128020020002005103121030b2003450d1320012003360200200141046a2005360200200141086a28020021000b200141086a2205200041016a360200200320006a41003a000002400240200141046a2802002203200528020022006b4120490d00200128020021030c010b200041206a22052000490d14200341017422002005200020054b1b22004100480d140240024020030d002000102d21030c010b200128020020032000103121030b2003450d1320012003360200200141046a2000360200200141086a28020021000b200141086a200041206a360200200320006a220041186a200441196a290000370000200041106a200441116a290000370000200041086a200441096a290000370000200020042900013700000c0d0b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d13200341017422052004200520044b1b22054100480d130240024020030d002005102d21040c010b200128020020032005103121040b2004450d1220012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41013a00002000410c6a200110a6010c0c0b02400240200141046a280200200141086a2802002203460d00200128020021050c010b200341016a22042003490d12200341017422052004200520044b1b22044100480d120240024020030d002004102d21050c010b200128020020032004103121050b2005450d1120012005360200200141046a2004360200200141086a28020021030b200141086a2204200341016a360200200520036a41023a0000200028020c2103200041146a2802002200200110692000450d0b2003200041c4006c6a2108200141046a210503400240024020052802002206200428020022006b4120490d00200128020021060c010b200041206a220a2000490d1320064101742200200a2000200a4b1b22004100480d130240024020060d002000102d21060c010b200128020020062000103121060b2006450d122001200636020020052000360200200428020021000b2004200041206a360200200620006a220041186a200341186a290000370000200041106a200341106a290000370000200041086a200341086a290000370000200020032900003700002002200341206a220910a7012002280200210a0240024020052802002206200428020022006b20022802082203490d00200128020021060c010b200020036a220b2000490d1320064101742200200b2000200b4b1b22004100480d130240024020060d002000102d21060c010b200128020020062000103121060b2006450d122001200636020020052000360200200428020021000b2004200020036a360200200620006a200a200310e8061a02402002280204450d00200a102f0b2008200941246a2203470d000c0c0b0b02400240200141046a280200200141086a2802002200460d00200128020021030c010b200041016a22032000490d11200041017422042003200420034b1b22044100480d110240024020000d002004102d21030c010b200128020020002004103121030b2003450d1020012003360200200141046a2004360200200141086a28020021000b200141086a200041016a360200200320006a41033a00000c0a0b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d10200341017422052004200520044b1b22054100480d100240024020030d002005102d21040c010b200128020020032005103121040b2004450d0f20012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41043a00002000410c6a20011095022002200041106a3602002002200110c2020c090b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d0f200341017422052004200520044b1b22054100480d0f0240024020030d002005102d21040c010b200128020020032005103121040b2004450d0e20012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41053a0000200028020c210402400240200141046a2802002203200528020022006b4104490d00200128020021030c010b200041046a22052000490d0f200341017422002005200020054b1b22004100480d0f0240024020030d002000102d21030c010b200128020020032000103121030b2003450d0e20012003360200200141046a2000360200200141086a28020021000b200141086a200041046a360200200320006a20043600000c080b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d0e200341017422052004200520044b1b22054100480d0e0240024020030d002005102d21040c010b200128020020032005103121040b2004450d0d20012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41063a00002000410c6a20011095022002200041106a3602002002200110c2020c070b02400240200141046a280200200141086a2802002203460d00200128020021050c010b200341016a22052003490d0d200341017422062005200620054b1b22064100480d0d0240024020030d002006102d21050c010b200128020020032006103121050b2005450d0c20012005360200200141046a2006360200200141086a28020021030b200141086a2206200341016a360200200520036a41073a00002000412c6a200110950202400240200141046a2802002203200628020022006b4120490d00200128020021030c010b200041206a22052000490d0d200341017422002005200020054b1b22004100480d0d0240024020030d002000102d21030c010b200128020020032000103121030b2003450d0c20012003360200200141046a2000360200200141086a28020021000b200141086a200041206a360200200320006a220041186a200441196a290000370000200041106a200441116a290000370000200041086a200441096a290000370000200020042900013700000c060b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d0c200341017422052004200520044b1b22054100480d0c0240024020030d002005102d21040c010b200128020020032005103121040b2004450d0b20012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41083a00002000410c6a20011095022000290310210702400240200141046a2802002203200528020022006b4108490d00200128020021030c010b200041086a22042000490d0c200341017422002004200020044b1b22004100480d0c0240024020030d002000102d21030c010b200128020020032000103121030b2003450d0b20012003360200200141046a2000360200200141086a28020021000b200141086a200041086a360200200320006a20073700000c050b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d0b200341017422052004200520044b1b22054100480d0b0240024020030d002005102d21040c010b200128020020032005103121040b2004450d0a20012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41093a00002000410c6a2001109502200041106a200110eb02200041386a200110a5010c040b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d0a200341017422052004200520044b1b22054100480d0a0240024020030d002005102d21040c010b200128020020032005103121040b2004450d0920012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a410a3a00002000410c6a200110eb020c030b02400240200141046a2206280200200141086a22032802002204460d00200128020021050c010b200441016a22052004490d092004410174220a2005200a20054b1b220a4100480d090240024020040d00200a102d21050c010b20012802002004200a103121050b2005450d0820012005360200200141046a200a360200200141086a28020021040b2003200441016a360200200520046a41183a0000200041086a22042d0000417f6a2205410b4b0d0202400240024002400240024002400240024002400240024020050e0c000102030405060708090a0b000b02400240200628020020032802002204460d00200128020021050c010b200441016a22052004490d142004410174220a2005200a20054b1b220a4100480d140240024020040d00200a102d21050c010b20012802002004200a103121050b2005450d1320012005360200200141046a200a360200200141086a28020021040b2003200441016a360200200520046a41003a0000200041186a29030021072000290310210e0240024020062802002204200328020022006b4110490d00200128020021040c010b200041106a22052000490d14200441017422002005200020054b1b22004100480d140240024020040d002000102d21040c010b200128020020042000103121040b2004450d1320012004360200200141046a2000360200200141086a28020021000b2003200041106a360200200420006a220020073700082000200e3700000c0d0b02400240200628020020032802002204460d00200128020021050c010b200441016a22052004490d132004410174220a2005200a20054b1b220a4100480d130240024020040d00200a102d21050c010b20012802002004200a103121050b2005450d1220012005360200200141046a200a360200200141086a28020021040b2003200441016a360200200520046a41013a0000200028020c21050240024020062802002204200328020022006b4104490d00200128020021040c010b200041046a22062000490d13200441017422002006200020064b1b22004100480d130240024020040d002000102d21040c010b200128020020042000103121040b2004450d1220012004360200200141046a2000360200200141086a28020021000b2003200041046a360200200420006a20053600000c0c0b02400240200628020020032802002205460d002001280200210a0c010b200541016a220a2005490d1220054101742209200a2009200a4b1b22094100480d120240024020050d002009102d210a0c010b2001280200200520091031210a0b200a450d112001200a360200200141046a2009360200200141086a28020021050b2003200541016a360200200a20056a41023a0000024002402006280200220a200328020022056b4120490d002001280200210a0c010b200541206a22092005490d12200a41017422052009200520094b1b22054100480d1202400240200a0d002005102d210a0c010b2001280200200a20051031210a0b200a450d112001200a360200200141046a2005360200200141086a28020021050b2003200541206a360200200a20056a220541186a200441196a290000370000200541106a200441116a290000370000200541086a200441096a29000037000020052004290001370000200041386a29030021072000290330210e0240024020062802002205200328020022046b4110490d00200128020021050c010b200441106a220a2004490d1220054101742204200a2004200a4b1b22044100480d120240024020050d002004102d21050c010b200128020020052004103121050b2005450d1120012005360200200141046a2004360200200141086a28020021040b2003200441106a360200200520046a220420073700082004200e370000200041c8006a29030021072000290340210e0240024020062802002204200328020022006b4110490d00200128020021040c010b200041106a22052000490d12200441017422002005200020054b1b22004100480d120240024020040d002000102d21040c010b200128020020042000103121040b2004450d1120012004360200200141046a2000360200200141086a28020021000b2003200041106a360200200420006a220020073700082000200e3700000c0b0b02400240200628020020032802002204460d00200128020021050c010b200441016a22052004490d132004410174220a2005200a20054b1b220a4100480d130240024020040d00200a102d21050c010b20012802002004200a103121050b2005450d1220012005360200200141046a200a360200200141086a28020021040b2003200441016a360200200520046a41033a0000200028020c21050240024020062802002204200328020022006b4104490d00200128020021040c010b200041046a22062000490d13200441017422002006200020064b1b22004100480d130240024020040d002000102d21040c010b200128020020042000103121040b2004450d1220012004360200200141046a2000360200200141086a28020021000b2003200041046a360200200420006a20053600000c0a0b02400240200628020020032802002205460d00200128020021060c010b200541016a22062005490d122005410174220a2006200a20064b1b220a4100480d120240024020050d00200a102d21060c010b20012802002005200a103121060b2006450d1120012006360200200141046a200a360200200141086a28020021050b200141086a220a200541016a360200200620056a41043a00002000410c6a200110eb0220042d0001210502400240200141046a280200200a2802002200460d00200128020021040c010b200041016a22042000490d12200041017422062004200620044b1b22064100480d120240024020000d002006102d21040c010b200128020020002006103121040b2004450d1120012004360200200141046a2006360200200141086a28020021000b2003200041016a360200200420006a20053a00000c090b02400240200628020020032802002200460d00200128020021050c010b200041016a22052000490d112000410174220a2005200a20054b1b220a4100480d110240024020000d00200a102d21050c010b20012802002000200a103121050b2005450d1020012005360200200141046a200a360200200141086a28020021000b2003200041016a360200200520006a41053a000020042d0001210502400240200628020020032802002200460d00200128020021040c010b200041016a22042000490d11200041017422062004200620044b1b22064100480d110240024020000d002006102d21040c010b200128020020002006103121040b2004450d1020012004360200200141046a2006360200200141086a28020021000b2003200041016a360200200420006a20053a00000c080b02400240200628020020032802002200460d00200128020021040c010b200041016a22042000490d10200041017422052004200520044b1b22054100480d100240024020000d002005102d21040c010b200128020020002005103121040b2004450d0f20012004360200200141046a2005360200200141086a28020021000b2003200041016a360200200420006a41063a00000c070b02400240200628020020032802002205460d002001280200210a0c010b200541016a220a2005490d0f20054101742209200a2009200a4b1b22094100480d0f0240024020050d002009102d210a0c010b2001280200200520091031210a0b200a450d0e2001200a360200200141046a2009360200200141086a28020021050b2003200541016a360200200a20056a41073a0000024002402006280200220a200328020022056b4120490d002001280200210a0c010b200541206a22092005490d0f200a41017422052009200520094b1b22054100480d0f02400240200a0d002005102d210a0c010b2001280200200a20051031210a0b200a450d0e2001200a360200200141046a2005360200200141086a28020021050b2003200541206a360200200a20056a220541186a200441196a290000370000200541106a200441116a290000370000200541086a200441096a29000037000020052004290001370000200028022c210a0240024020062802002205200328020022046b4104490d00200128020021050c010b200441046a22062004490d0f200541017422042006200420064b1b22044100480d0f0240024020050d002004102d21050c010b200128020020052004103121050b2005450d0e20012005360200200141046a2004360200200141086a28020021040b200141086a2206200441046a360200200520046a200a3600002000280230210a200041386a28020022002001106902400240200141046a2802002205200628020022046b2000490d00200128020021050c010b200420006a22062004490d0f200541017422042006200420064b1b22044100480d0f0240024020050d002004102d21050c010b200128020020052004103121050b2005450d0e20012005360200200141046a2004360200200141086a28020021040b2003200420006a360200200520046a200a200010e8061a0c060b02400240200628020020032802002200460d00200128020021040c010b200041016a22042000490d0e200041017422052004200520044b1b22054100480d0e0240024020000d002005102d21040c010b200128020020002005103121040b2004450d0d20012004360200200141046a2005360200200141086a28020021000b2003200041016a360200200420006a41083a00000c050b02400240200628020020032802002200460d00200128020021050c010b200041016a22052000490d0d2000410174220a2005200a20054b1b220a4100480d0d0240024020000d00200a102d21050c010b20012802002000200a103121050b2005450d0c20012005360200200141046a200a360200200141086a28020021000b2003200041016a360200200520006a41093a00000240024020062802002205200328020022006b4120490d00200128020021050c010b200041206a220a2000490d0d20054101742200200a2000200a4b1b22004100480d0d0240024020050d002000102d21050c010b200128020020052000103121050b2005450d0c20012005360200200141046a2000360200200141086a28020021000b2003200041206a360200200520006a220041186a200441196a290000370000200041106a200441116a290000370000200041086a200441096a2900003700002000200429000137000020042d0021210502400240200628020020032802002200460d00200128020021040c010b200041016a22042000490d0d200041017422062004200620044b1b22064100480d0d0240024020000d002006102d21040c010b200128020020002006103121040b2004450d0c20012004360200200141046a2006360200200141086a28020021000b2003200041016a360200200420006a20053a00000c040b02400240200628020020032802002200460d00200128020021050c010b200041016a22052000490d0c2000410174220a2005200a20054b1b220a4100480d0c0240024020000d00200a102d21050c010b20012802002000200a103121050b2005450d0b20012005360200200141046a200a360200200141086a28020021000b2003200041016a360200200520006a410a3a00000240024020062802002205200328020022006b4120490d00200128020021050c010b200041206a220a2000490d0c20054101742200200a2000200a4b1b22004100480d0c0240024020050d002000102d21050c010b200128020020052000103121050b2005450d0b20012005360200200141046a2000360200200141086a28020021000b2003200041206a360200200520006a220041186a200441196a290000370000200041106a200441116a290000370000200041086a200441096a2900003700002000200429000137000020042d0021220041024b0d0302400240024020000e03000102000b02400240200628020020032802002200460d00200128020021040c010b200041016a22042000490d0e200041017422052004200520044b1b22054100480d0e0240024020000d002005102d21040c010b200128020020002005103121040b2004450d0d20012004360200200141046a2005360200200141086a28020021000b2003200041016a360200200420006a41003a00000c050b02400240200628020020032802002200460d00200128020021040c010b200041016a22042000490d0d200041017422052004200520044b1b22054100480d0d0240024020000d002005102d21040c010b200128020020002005103121040b2004450d0c20012004360200200141046a2005360200200141086a28020021000b2003200041016a360200200420006a41013a00000c040b02400240200628020020032802002200460d00200128020021040c010b200041016a22042000490d0c200041017422052004200520044b1b22054100480d0c0240024020000d002005102d21040c010b200128020020002005103121040b2004450d0b20012004360200200141046a2005360200200141086a28020021000b2003200041016a360200200420006a41023a00000c030b02400240200628020020032802002204460d00200128020021050c010b200441016a22052004490d0b2004410174220a2005200a20054b1b220a4100480d0b0240024020040d00200a102d21050c010b20012802002004200a103121050b2005450d0a20012005360200200141046a200a360200200141086a28020021040b2003200441016a360200200520046a410b3a0000200028020c21050240024020062802002204200328020022006b4104490d00200128020021040c010b200041046a22062000490d0b200441017422002006200020064b1b22004100480d0b0240024020040d002000102d21040c010b200128020020042000103121040b2004450d0a20012004360200200141046a2000360200200141086a28020021000b2003200041046a360200200420006a20053600000c020b02400240200141046a220a280200200141086a22042802002203460d00200128020021050c010b200341016a22052003490d0a200341017422062005200620054b1b22064100480d0a0240024020030d002006102d21050c010b200128020020032006103121050b2005450d0920012005360200200141046a2006360200200141086a28020021030b2004200341016a360200200520036a41193a0000200041046a22092d0000417f6a220341084b0d0102400240024002400240024002400240024020030e09000102030405060708000b02400240200a28020020042802002203460d00200128020021050c010b200341016a22052003490d12200341017422062005200620054b1b22064100480d120240024020030d002006102d21050c010b200128020020032006103121050b2005450d1120012005360200200141046a2006360200200141086a28020021030b2004200341016a360200200520036a41003a000002400240200a2802002205200428020022036b4120490d00200128020021040c010b200341206a22042003490d12200541017422032004200320044b1b22034100480d120240024020050d002003102d21040c010b200128020020052003103121040b2004450d1120012004360200200141046a2003360200200141086a28020021030b200141086a200341206a360200200420036a220341186a200941196a290000370000200341106a200941116a290000370000200341086a200941096a29000037000020032009290001370000200028022820011091010c090b02400240200a28020020042802002200460d00200128020021030c010b200041016a22032000490d11200041017422052003200520034b1b22054100480d110240024020000d002005102d21030c010b200128020020002005103121030b2003450d1020012003360200200141046a2005360200200141086a28020021000b2004200041016a360200200320006a41013a000002400240200a2802002203200428020022006b4120490d00200128020021030c010b200041206a22052000490d11200341017422002005200020054b1b22004100480d110240024020030d002000102d21030c010b200128020020032000103121030b2003450d1020012003360200200141046a2000360200200141086a28020021000b2004200041206a360200200320006a220041186a200941196a290000370000200041106a200941116a290000370000200041086a200941096a2900003700002000200929000137000002400240200a2802002203200428020022006b4120490d00200128020021030c010b200041206a22052000490d11200341017422002005200020054b1b22004100480d110240024020030d002000102d21030c010b200128020020032000103121030b2003450d1020012003360200200141046a2000360200200141086a28020021000b2004200041206a360200200320006a220041186a200941216a220341186a290000370000200041106a200341106a290000370000200041086a200341086a290000370000200020032900003700000c080b02400240200a28020020042802002203460d00200128020021050c010b200341016a22052003490d10200341017422062005200620054b1b22064100480d100240024020030d002006102d21050c010b200128020020032006103121050b2005450d0f20012005360200200141046a2006360200200141086a28020021030b200141086a220c200341016a360200200520036a41023a000020002802082103200041106a28020022052001106902402005450d002005410574210b200141046a210d034002400240200a2802002206200428020022056b4120490d00200128020021060c010b200541206a22082005490d12200641017422052008200520084b1b22054100480d120240024020060d002005102d21060c010b200128020020062005103121060b2006450d1120012006360200200d2005360200200c28020021050b2004200541206a360200200620056a220541186a200341186a290000370000200541106a200341106a290000370000200541086a200341086a29000037000020052003290000370000200341206a2103200b41606a220b0d000b0b20092f0102210602400240200a2802002205200428020022036b4102490d00200128020021050c010b200341026a22092003490d10200541017422032009200320094b1b22034100480d100240024020050d002003102d21050c010b200128020020052003103121050b2005450d0f20012005360200200141046a2003360200200141086a28020021030b2004200341026a360200200520036a20063b00002000280214210502400240200a2802002203200428020022006b4104490d00200128020021030c010b200041046a22062000490d10200341017422002006200020064b1b22004100480d100240024020030d002000102d21030c010b200128020020032000103121030b2003450d0f20012003360200200141046a2000360200200141086a28020021000b2004200041046a360200200320006a20053600000c070b02400240200a28020020042802002200460d00200128020021030c010b200041016a22032000490d0f200041017422052003200520034b1b22054100480d0f0240024020000d002005102d21030c010b200128020020002005103121030b2003450d0e20012003360200200141046a2005360200200141086a28020021000b2004200041016a360200200320006a41033a000002400240200a2802002203200428020022006b4120490d00200128020021030c010b200041206a22052000490d0f200341017422002005200020054b1b22004100480d0f0240024020030d002000102d21030c010b200128020020032000103121030b2003450d0e20012003360200200141046a2000360200200141086a28020021000b2004200041206a360200200320006a220041186a200941196a290000370000200041106a200941116a290000370000200041086a200941096a290000370000200020092900013700000c060b02400240200a28020020042802002200460d00200128020021030c010b200041016a22032000490d0e200041017422052003200520034b1b22054100480d0e0240024020000d002005102d21030c010b200128020020002005103121030b2003450d0d20012003360200200141046a2005360200200141086a28020021000b2004200041016a360200200320006a41043a000002400240200a2802002203200428020022006b4120490d00200128020021030c010b200041206a22052000490d0e200341017422002005200020054b1b22004100480d0e0240024020030d002000102d21030c010b200128020020032000103121030b2003450d0d20012003360200200141046a2000360200200141086a28020021000b2004200041206a360200200320006a220041186a200941196a290000370000200041106a200941116a290000370000200041086a200941096a2900003700002000200929000137000002400240200a2802002203200428020022006b4120490d00200128020021030c010b200041206a22052000490d0e200341017422002005200020054b1b22004100480d0e0240024020030d002000102d21030c010b200128020020032000103121030b2003450d0d20012003360200200141046a2000360200200141086a28020021000b2004200041206a360200200320006a220041186a200941216a220341186a290000370000200041106a200341106a290000370000200041086a200341086a290000370000200020032900003700000c050b02400240200a28020020042802002200460d00200128020021030c010b200041016a22032000490d0d200041017422052003200520034b1b22054100480d0d0240024020000d002005102d21030c010b200128020020002005103121030b2003450d0c20012003360200200141046a2005360200200141086a28020021000b2004200041016a360200200320006a41053a000002400240200a2802002203200428020022006b4120490d00200128020021030c010b200041206a22052000490d0d200341017422002005200020054b1b22004100480d0d0240024020030d002000102d21030c010b200128020020032000103121030b2003450d0c20012003360200200141046a2000360200200141086a28020021000b2004200041206a360200200320006a220041186a200941196a290000370000200041106a200941116a290000370000200041086a200941096a290000370000200020092900013700000c040b02400240200a28020020042802002200460d00200128020021030c010b200041016a22032000490d0c200041017422052003200520034b1b22054100480d0c0240024020000d002005102d21030c010b200128020020002005103121030b2003450d0b20012003360200200141046a2005360200200141086a28020021000b2004200041016a360200200320006a41063a000002400240200a2802002203200428020022006b4120490d00200128020021030c010b200041206a22052000490d0c200341017422002005200020054b1b22004100480d0c0240024020030d002000102d21030c010b200128020020032000103121030b2003450d0b20012003360200200141046a2000360200200141086a28020021000b2004200041206a360200200320006a220041186a200941196a290000370000200041106a200941116a290000370000200041086a200941096a290000370000200020092900013700000c030b02400240200a28020020042802002200460d00200128020021030c010b200041016a22032000490d0b200041017422052003200520034b1b22054100480d0b0240024020000d002005102d21030c010b200128020020002005103121030b2003450d0a20012003360200200141046a2005360200200141086a28020021000b2004200041016a360200200320006a41073a00000c020b02400240200a28020020042802002200460d00200128020021030c010b200041016a22032000490d0a200041017422052003200520034b1b22054100480d0a0240024020000d002005102d21030c010b200128020020002005103121030b2003450d0920012003360200200141046a2005360200200141086a28020021000b2004200041016a360200200320006a41083a000002400240200a2802002203200428020022006b4120490d00200128020021030c010b200041206a22052000490d0a200341017422002005200020054b1b22004100480d0a0240024020030d002000102d21030c010b200128020020032000103121030b2003450d0920012003360200200141046a2000360200200141086a28020021000b2004200041206a360200200320006a220041186a200941196a290000370000200041106a200941116a290000370000200041086a200941096a290000370000200020092900013700000c010b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d09200341017422052004200520044b1b22054100480d090240024020030d002005102d21040c010b200128020020032005103121040b2004450d0820012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a411a3a00002000280208417f6a220341024b0d0002400240024020030e03000102000b02400240200141046a280200200141086a2802002200460d00200128020021030c010b200041016a22032000490d0b200041017422042003200420034b1b22044100480d0b0240024020000d002004102d21030c010b200128020020002004103121030b2003450d0a20012003360200200141046a2004360200200141086a28020021000b200141086a200041016a360200200320006a41003a00000c020b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d0a200341017422052004200520044b1b22054100480d0a0240024020030d002005102d21040c010b200128020020032005103121040b2004450d0920012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41013a00002000410c6a200110eb020c010b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d09200341017422052004200520044b1b22054100480d090240024020030d002005102d21040c010b200128020020032005103121040b2004450d0820012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41023a00002000410c6a200110eb02200041386a29030021072000290330210e02400240200141046a2802002204200528020022036b4110490d00200128020021040c010b200341106a22052003490d09200441017422032005200320054b1b22034100480d090240024020040d002003102d21040c010b200128020020042003103121040b2004450d0820012004360200200141046a2003360200200141086a28020021030b200141086a2205200341106a360200200420036a220320073700082003200e370000200041c8006a2903002107200041c0006a290300210e02400240200141046a2802002204200528020022036b4110490d00200128020021040c010b200341106a22052003490d09200441017422032005200320054b1b22034100480d090240024020040d002003102d21040c010b200128020020042003103121040b2004450d0820012004360200200141046a2003360200200141086a28020021030b200141086a2205200341106a360200200420036a220320073700082003200e370000200041d0006a280200210402400240200141046a2802002203200528020022006b4104490d00200128020021030c010b200041046a22052000490d09200341017422002005200020054b1b22004100480d090240024020030d002000102d21030c010b200128020020032000103121030b2003450d0820012003360200200141046a2000360200200141086a28020021000b200141086a200041046a360200200320006a20043600000b200241206a24000f0b1036000b1038000b1036000b1038000b1036000b1038000b1036000b1038000bb40703027f017e047f230041d0006b2203240041b8c4c300ad4280808080f00084100122042900002105200341086a200441086a290000370300200320053703002004102f41b4d9c000ad4280808080900184100122042900002105200341286a41086a200441086a290000370300200320053703282004102f024002404120102d2204450d0020042001290000370000200441186a200141186a290000370000200441106a200141106a290000370000200441086a200141086a29000037000020032004ad4280808080800484100622012900003703202001102f200341c4006a200441206a360200200341003a0048200320043602402003200341206a41086a36023c2003200341206a360238200341106a200341386a106c2004102f02400240024002402003280218220641206a2207417f4c0d0020032802102108024002402007450d002007102d2204450d062007410f4d0d01200721090c050b411021094110102d21040c030b200741017422014110200141104b1b220941004e0d010c050b103d000b200420072009103121040b2004450d010b20042003290300370000200441086a200341086a2903003700000240024020094170714110460d00200921010c010b200941017422014120200141204b1b22014100480d0220042009200110312204450d010b20042003290328370010200441186a200341286a41086a29030037000002400240200141606a2006490d00200121090c010b2006415f4b0d02200141017422092007200920074b1b22094100480d0220042001200910312204450d010b200441206a2008200610e8061a02402003280214450d002008102f0b4120102d2201450d0020012002290000370000200141186a200241186a290000370000200141106a200241106a290000370000200141086a200241086a2900003700002001ad4280808080800484100722022900002105200341286a41086a200241086a290000370300200320053703282002102f200341c4006a200141206a360200200341003a0048200320013602402003200341286a41106a36023c2003200341286a3602382003200341386a106c2001102f2003280200210602400240200920076b20032802082201490d00200120076a2102200921080c010b200720016a22022007490d02200941017422082002200820024b1b22084100480d0220042009200810312204450d010b200420076a2006200110e8061a02402003280204450d002006102f0b200020023602082000200836020420002004360200200341d0006a24000f0b1036000b1038000b850604067f027e027f057e23004190016b220324002003200236020420032001360200200341086a2002ad4220862001ad84100210730240024020032802082202450d00200328020c21042003200341106a280200220136023c200320023602380240024020014104490d002003200241046a36023820032001417c6a220536023c20054104490d00200228000021062003200241086a3602382003200141786a220536023c20054110490d00200228000421072003200141686a220836023c2003200241186a360238200241106a29000021092002290008210a41002101200341003a0088010240034020082001460d01200341e8006a20016a200220016a220541186a2d00003a00002003200541196a3602382003200141016a22053a0088012005210120054120470d000b200341c8006a41086a2201200341e8006a41086a290300370300200341c8006a41106a220b200341e8006a41106a290300370300200341c8006a41186a220c200341e8006a41186a290300370300200320032903683703482003200820056b36023c200341e8006a200341386a10980320032802682205450d01200341186a41086a2001290300220d370300200341186a41106a200b290300220e370300200341186a41186a200c290300220f370300200320032903482210370318200329026c2111200020093703082000200a3703002000201137021c200020053602182000200736021420002006360210200041246a20103702002000412c6a200d370200200041346a200e3702002000413c6a200f3702000c020b2003410036023c200141ff0171450d00200341003a0088010b20034100360250200342013703482003410b36021c200320033602182003200341c8006a360244200341fc006a41013602002003420137026c200341b885c7003602682003200341186a360278200341c4006a41d8dbc100200341e8006a103c1a200335025042208620033502488410080240200328024c450d002003280248102f0b200041003602180b2004450d012002102f0c010b200041003602180b20034190016a24000b830f08047f017e017f027e027f097e017f017e230041f0026b22032400200228020821042002280204210520022802002106418de6c300ad4280808080e00084100122022900002107200341386a41086a200241086a290000370300200320073703382002102f41f0e8c600ad4280808080f00084100122022900002107200341f0006a41086a200241086a290000370300200320073703702002102f0240024002404120102d2202450d0020022001290000370000200241186a200141186a290000370000200241106a200141106a290000370000200241086a200141086a2900003700002002ad4280808080800484100322082900002107200841086a2900002109200841106a290000210a200341f0016a41186a220b200841186a290000370300200341f0016a41106a220c200a370300200341f0016a41086a2009370300200320073703f0012008102f2002102f41c000102d2202450d002002200329033837000020022003290370370010200220032903f001370020200241086a200341386a41086a290300370000200241186a200341f0006a41086a290300370000200241286a200341f0016a41086a290300370000200241306a200c290300370000200241386a200b290300370000200341f0006a200210f6022003290370210d4200210e20034200370370200341b8016a280200210820032d00bc01210b02400240200d4201510d00200341306a4200370300200341286a4200370300200341206a4200370300200341186a4200370300200341106a4200370300200341086a4200370300200342003703004200210f4200210942002107420021100c010b200341f0006a41386a290300210a200341f0006a41306a2903002111200341f0006a41206a290300210f200341f0006a41186a290300210e200341f0006a41c0006a2903002110200329038001210720032903782109200341206a200341f0006a41286a290300370300200341286a2011370300200341306a200a370300200341106a200e3703002003200f37031820032009370300200320073703080b02402009200629030022117d22122009562007200641086a29030022137d2009201154ad7d220a200756200a2007511b450d0041838c0c21084198b5c60021014280808080b00221070c020b200320123703002003200a3703080240200e20117c2214200e542206200f20137c2006ad7c2215200f542015200f511b450d0041838c0821084191ccc70021014280808080800121070c020b200341186a20153703002003201437031002402011201384500d00200341f0016a2005280200108d0220032903900220125620034198026a2903002211200a562011200a511b450d0041838c04210841abb5c60021014280808080d00221070c020b2004280200210c200341386a41186a200341106a220641086a2903002211370300200341386a41206a2204200641106a290300370300200341e0006a2205200641186a290300370300200341e8006a2216200641206a290300370300200320062903002213370348200320123703382003200a370340427f2009200e7c220e200e20095422062007200f7c2006ad7c220920075420092007511b22061b427f200920061b84210e02400240427f201220137c220720072012542206200a20117c2006ad7c2207200a542007200a511b22061b2209428080e983b1de16544100427f200720061b2207501b0d00200341386a41106a2903002107201629030021092005290300210f20042903002111200329034021132003290338211542012114200329035021170c010b4200211402402009200784500d0020092007109a01200341a8026a2007370300200341a0026a2009370300200341f0016a41086a41013a0000200341f9016a200c29000037000020034181026a200c41086a29000037000020034189026a200c41106a29000037000020034191026a200c41186a290000370000200341033a00f00141c8e1ca004100200341f0016a108c010b0b200e50210c20034198016a2011370300200341a0016a200f37030020034180016a2013370300200341a8016a200937030020034188016a20073703002003201737039001200320103703b00120032015370378410021062003200b4100200d42015122041b3a00bc0120032008410020041b3602b801200320144201512208ad3703700240024020080d002002ad42808080808008841005410121060c010b200341c0003602f401200320023602f001200341f8006a200341f0016a1090030b200cad21072002102f024002400240200d4201510d0020060d0041032108200341f0016a21020c010b200d4201522006410173720d0141042108200341f0006a21020b200241046a20083a0000200241003a0000200241056a20012900003700002002410d6a200141086a290000370000200241156a200141106a2900003700002002411d6a200141186a29000037000041c8e1ca0041002002108c010b200041186a200a370300200041106a2012370300200041086a2007370300410021020c020b1036000b2002102f20002008360204200041086a2007200141ff0171ad842001ad22074280fe0383842007428080fcff0f8384370200410121020b20002002360200200341f0026a24000b8e0201037f230041d0006b220324002003200236020420032001360200200341086a2002ad4220862001ad841002107302400240200328020822040d00410021010c010b200328020c210502400240200341106a2802004104490d0020042800002102410121010c010b4100210120034100360220200342013703182003410b36022c200320033602282003200341186a360234200341cc006a41013602002003420137023c200341b885c7003602382003200341286a360248200341346a41d8dbc100200341386a103c1a200335022042208620033502188410080240200328021c450d002003280218102f0b0b2005450d002004102f0b2000200236020420002001360200200341d0006a24000bd00d08027f017e017f027e027f0b7e037f037e230041f0026b2204240020032802002105418de6c300ad4280808080e00084100122032900002106200441386a41086a200341086a290000370300200420063703382003102f41f0e8c600ad4280808080f00084100122032900002106200441f0006a41086a200341086a290000370300200420063703702003102f02404120102d2203450d0020032001290000370000200341186a200141186a290000370000200341106a200141106a290000370000200341086a200141086a2900003700002003ad4280808080800484100322072900002106200741086a2900002108200741106a2900002109200441f0016a41186a220a200741186a290000370300200441f0016a41106a220b2009370300200441f0016a41086a2008370300200420063703f0012007102f2003102f41c000102d2203450d002003200429033837000020032004290370370010200320042903f001370020200341086a200441386a41086a290300370000200341186a200441f0006a41086a290300370000200341286a200441f0016a41086a290300370000200341306a200b290300370000200341386a200a290300370000200441f0006a200310f6022004290370210c4200210820044200370370200441b8016a280200210720042d00bc01210a02400240200c4201510d00200441306a4200370300200441286a4200370300200441206a4200370300200441186a4200370300200441106a4200370300200441086a420037030020044200370300420021094200210d420021064200210e0c010b200441f0006a41386a290300210f200441f0006a41306a2903002110200441f0006a41206a2903002109200441f0006a41186a2903002108200441f0006a41c0006a290300210e20042903800121062004290378210d200441206a200441f0006a41286a290300370300200441286a2010370300200441306a200f370300200441106a2008370300200420093703182004200d370300200420063703080b200441186a2009200241086a2903002211200920082002290300221256200920115620092011511b22021b22137d20082012200820021b221054ad7d22143703002004200820107d22153703102004427f200620137c200d20107c2216200d542202ad7c220f2002200f200654200f2006511b22021b220f3703082004427f201620021b2216370300200441386a41186a2014370300200441386a41206a2217200441206a290300370300200441386a41286a2218200441286a290300370300200441386a41306a2219200441306a2903003703002004200f370340200420163703382004201537034820122010542102427f200d20087c22082008200d54220b200620097c200bad7c220820065420082006511b220b1b427f2008200b1b84210d02400240427f201620157c22062006201654220b200f20147c200bad7c2206200f542006200f511b220b1b2208428080e983b1de16544100427f2006200b1b2209501b0d00200441c8006a29030021082019290300210920182903002114201729030021152004290340211a2004290338211b420121062004290350211c0c010b4200210602402008200984500d0020082009109a01200441a8026a2009370300200441a0026a2008370300200441f0016a41086a41013a0000200441f9016a200529000037000020044181026a200541086a29000037000020044189026a200541106a29000037000020044191026a200541186a290000370000200441033a00f00141c8e1ca004100200441f0016a108c010b0b201120137d21112002ad2113200d50210220044198016a2015370300200441a0016a201437030020044180016a201a370300200441a8016a200937030020044188016a20083703002004201c370390012004200e3703b0012004201b3703782004200a4100200c42015122051b3a00bc0120042007410020051b3602b801200420064201512207ad3703700240024020070d002003ad428080808080088410050c010b200441c0003602f401200420033602f001200441f8006a200441f0016a1090030b201120137d21082002ad2109201220107d210d2003102f20064201522103024002400240200c4201510d0020030d0041032107200441f0016a21030c010b200c4201522003410173720d0141042107200441f0006a21030b200341046a20073a0000200341003a0000200341056a20012900003700002003410d6a200141086a290000370000200341156a200141106a2900003700002003411d6a200141186a29000037000041c8e1ca0041002003108c010b2000200d3703182000201637030820002009370300200041206a2008370300200041106a200f370300200441f0026a24000f0b1036000bb10101027f024020002802082201450d0020002802002100200141246c210103400240024020002d0000220241044b0d0002400240024020020e050400010204040b2000410c6a280200450d03200041086a280200102f0c030b2000410c6a280200450d02200041086a280200102f0c020b2000410c6a280200450d01200041086a280200102f0c010b200041086a280200450d00200041046a280200102f0b200041246a21002001415c6a22010d000b0b0b13002000410c360204200041b4e5c0003602000b1f0002402000280200450d00200041086a280200450d002000280204102f0b0bdd0908017f017e047f017e017f017e037f017e230041a0016b22022400200241386a20002001109b01200241386a41106a29030021012002290340210002400240024020022903382203a7450d00200241f0006a41186a22044200370300200241f0006a41106a22054200370300200241f0006a41086a220642003703002002420037037041e7a2ca00ad4280808080800184220310012207290000210820024190016a41086a2209200741086a29000037030020022008370390012007102f20062009290300370300200220022903900137037041ecb5c600ad4280808080d00184220810012207290000210a2009200741086a2900003703002002200a370390012007102f2005200229039001220a370300200241d0006a41086a220b2006290300370300200241d0006a41106a220c200a370300200241d0006a41186a220d200929030037030020022002290370370350200241206a200241d0006a4120109c01200241206a41106a290300210a2002290328210e200228022021072004420037030020054200370300200642003703002002420037037020031001220429000021032009200441086a29000037030020022003370390012004102f20062009290300370300200220022903900137037020081001220429000021032009200441086a29000037030020022003370390012004102f20052002290390012203370300200b2006290300370300200c2003370300200d20092903003703002002200229037037035020024200200a420020071b220320017d200e420020071b2201200054ad7d2208200120007d2200200156200820035620082003511b22091b37037820024200200020091b370370200241f0006a2109200241d0006a21060c010b2003500d01200241f0006a41186a22044200370300200241f0006a41106a22054200370300200241f0006a41086a220642003703002002420037037041e7a2ca00ad4280808080800184220310012207290000210820024190016a41086a2209200741086a29000037030020022008370390012007102f20062009290300370300200220022903900137037041ecb5c600ad4280808080d00184220810012207290000210a2009200741086a2900003703002002200a370390012007102f2005200229039001220a370300200241d0006a41086a220b2006290300370300200241d0006a41106a220c200a370300200241d0006a41186a220d200929030037030020022002290370370350200241086a200241d0006a4120109c01200241086a41106a290300210a2002290310210e200228020821072004420037030020054200370300200642003703002002420037037020031001220429000021032009200441086a29000037030020022003370390012004102f20062009290300370300200220022903900137037020081001220429000021032009200441086a29000037030020022003370390012004102f20052002290390012203370300200b2006290300370300200c2003370300200d20092903003703002002200229037037035020024200200a420020071b220320017d200e420020071b2201200054ad7d2208200120007d2200200156200820035620082003511b22091b37037820024200200020091b370370200241f0006a2109200241d0006a21060b2006ad42808080808004842009ad428080808080028410040b200241a0016a24000bd70408027f017e037f017e017f027e037f017e230041f0006b2203240020012002844200522204ad2105024020040d00200341c0006a41186a22064200370300200341c0006a41106a22074200370300200341c0006a41086a220842003703002003420037034041e7a2ca00ad428080808080018422091001220a290000210b200341e0006a41086a2204200a41086a2900003703002003200b370360200a102f200820042903003703002003200329036037034041ecb5c600ad4280808080d00184220b1001220a290000210c2004200a41086a2900003703002003200c370360200a102f20072003290360220c370300200341206a41086a220d2008290300370300200341206a41106a220e200c370300200341206a41186a220f200429030037030020032003290340370320200341086a200341206a4120109c01200341086a41106a290300210c200329031021102003280208210a2006420037030020074200370300200842003703002003420037034020091001220629000021092004200641086a290000370300200320093703602006102f2008200429030037030020032003290360370340200b1001220629000021092004200641086a290000370300200320093703602006102f200720032903602209370300200d2008290300370300200e2009370300200f2004290300370300200320032903403703202003200c4200200a1b370348200320104200200a1b370340200341206aad4280808080800484200341c0006aad428080808080028410040b2000200137030820002005370300200041106a2002370300200341f0006a24000ba70202017f037e230041d0006b220324002003200236020420032001360200200341086a2002ad4220862001ad841002107302400240200328020822010d00420021040c010b200328020c210202400240200341086a41086a2802004110490d00200141086a290000210520012900002106420121040c010b20034100360220200342013703182003410b36022c200320033602282003200341186a360234200341cc006a41013602002003420137023c200341b885c7003602382003200341286a360248200341346a41d8dbc100200341386a103c1a200335022042208620033502188410080240200328021c450d002003280218102f0b420021040b2002450d002001102f0b2000200637030820002004370300200041106a2005370300200341d0006a24000bde1006037f037e057f027e037f017e230041b0016b220724002004a721080240024002400240024020014201510d0041012109024020084101460d00427f200320067c200220057c220a2002542208ad7c220b2008200b200354200b2003511b22081b210b427f200a20081b210a4200210c4100210d0c030b02402002200556200320065620032006511b0d00200620037d2005200254ad7d210b200520027d210a4201210c0c020b200320067d2002200554ad7d210b200220057d210a4200210c0c010b4101210d024020084101470d00427f200320067c200220057c22012002542208ad7c22022008200220035420022003511b22081b210b427f200120081b210a410021094201210c0c030b200741306a200420052006420120022003109d01200741c0006a290300210b2007290338210a2007290330210c0c030b410021094101210d0b2001500d0020074180016a41186a220e420037030020074180016a41106a220f420037030020074180016a41086a22104200370300200742003703800141e7a2ca00ad42808080808001842201100122112900002112200741a0016a41086a2208201141086a290000370300200720123703a0012011102f20102008290300370300200720072903a0013703800141ecb5c600ad4280808080d0018422121001221129000021132008201141086a290000370300200720133703a0012011102f200f20072903a0012213370300200741e0006a41086a22142010290300370300200741e0006a41106a22152013370300200741e0006a41186a221620082903003703002007200729038001370360200741c8006a200741e0006a4120109c01200741c8006a41106a29030021132007290350211720072802482111200e4200370300200f420037030020104200370300200742003703800120011001220e29000021012008200e41086a290000370300200720013703a001200e102f20102008290300370300200720072903a0013703800120121001220e29000021012008200e41086a290000370300200720013703a001200e102f200f20072903a00122013703002014201029030037030020152001370300201620082903003703002007200729038001370360200742002013420020111b220120037d2017420020111b2203200254ad7d2212200320027d2202200356201220015620122001511b22081b3703880120074200200220081b37038001200741e0006aad428080808080048420074180016aad428080808080028410040b02402004500d002009450d0120074180016a41186a220f420037030020074180016a41106a2209420037030020074180016a41086a22104200370300200742003703800141e7a2ca00ad428080808080018422031001220d2900002102200741a0016a41086a2208200d41086a290000370300200720023703a001200d102f20102008290300370300200720072903a0013703800141ecb5c600ad4280808080d0018422021001220d29000021042008200d41086a290000370300200720043703a001200d102f200920072903a0012204370300200741e0006a41086a22112010290300370300200741e0006a41106a220e2004370300200741e0006a41186a221420082903003703002007200729038001370360200741186a200741e0006a4120109c01200741186a41106a2903002104200729032021012007280218210d200f42003703002009420037030020104200370300200742003703800120031001220f29000021032008200f41086a290000370300200720033703a001200f102f20102008290300370300200720072903a0013703800120021001220f29000021032008200f41086a290000370300200720033703a001200f102f200920072903a001220337030020112010290300370300200e20033703002014200829030037030020072007290380013703602007420020044200200d1b220320067d20014200200d1b2202200554ad7d2204200220057d2205200256200420035620042003511b22081b3703880120074200200520081b37038001200741e0006aad428080808080048420074180016aad428080808080028410040c010b200d450d0020074180016a41186a220f420037030020074180016a41106a2209420037030020074180016a41086a22104200370300200742003703800141e7a2ca00ad428080808080018422031001220d2900002102200741a0016a41086a2208200d41086a290000370300200720023703a001200d102f20102008290300370300200720072903a0013703800141ecb5c600ad4280808080d0018422021001220d29000021042008200d41086a290000370300200720043703a001200d102f200920072903a0012204370300200741e0006a41086a22112010290300370300200741e0006a41106a220e2004370300200741e0006a41186a2214200829030037030020072007290380013703602007200741e0006a4120109c01200741106a2903002104200729030821012007280200210d200f42003703002009420037030020104200370300200742003703800120031001220f29000021032008200f41086a290000370300200720033703a001200f102f20102008290300370300200720072903a0013703800120021001220f29000021032008200f41086a290000370300200720033703a001200f102f200920072903a001220337030020112010290300370300200e20033703002014200829030037030020072007290380013703602007427f20044200200d1b220320067c20014200200d1b220220057c22052002542208ad7c22022008200220035420022003511b22081b370388012007427f200520081b37038001200741e0006aad428080808080048420074180016aad428080808080028410040b2000200a3703082000200c370300200041106a200b370300200741b0016a24000b130020004103360204200041acfdc0003602000b3400200041adc5c30036020420004100360200200041146a4101360200200041106a418888c100360200200041086a42073702000b130020004101360204200041b089c1003602000b13002000410b360204200041dc8ac1003602000b3400200041a4e3c40036020420004100360200200041146a4104360200200041106a4188bac100360200200041086a42043702000b6001027f230041106b2202240002404114102d22030d001036000b200342003700082003420037000020024294808080800237020420022003360200410020021069200041086a200228020836020020002002290300370200200241106a24000b880301027f024020002802082201450d0020002802002202200141c8006c6a21010340024020022d00004101470d00200241086a280200450d00200241046a280200102f0b0240200241246a2d00004101470d002002412c6a280200450d00200241286a280200102f0b200241c8006a22022001470d000b0b0240200041046a280200450d002000280200102f0b024020002d000c4101470d00200041146a280200450d00200041106a280200102f0b024020002d00304101470d00200041386a280200450d00200041346a280200102f0b024020002d00544101470d00200041dc006a280200450d00200041d8006a280200102f0b024020002d00784101470d0020004180016a280200450d00200041fc006a280200102f0b024020002d009c014101470d00200041a4016a280200450d00200041a0016a280200102f0b024020002d00c0014101470d00200041c8016a280200450d00200041c4016a280200102f0b024020002d00e4014101470d00200041ec016a280200450d00200041e8016a280200102f0b0bc70a02037f027e0240024002402000280200220241064b0d00024002400240024002400240024020020e0700010203040506000b02400240200141046a280200200141086a2802002200460d00200128020021020c010b200041016a22022000490d09200041017422032002200320024b1b22034100480d090240024020000d002003102d21020c010b200128020020002003103121020b2002450d0820012002360200200141046a2003360200200141086a28020021000b200141086a200041016a360200200220006a41003a00000f0b02400240200141046a280200200141086a2802002202460d00200128020021030c010b200241016a22032002490d08200241017422042003200420034b1b22044100480d080240024020020d002004102d21030c010b200128020020022004103121030b2003450d0720012003360200200141046a2004360200200141086a28020021020b200141086a2204200241016a360200200320026a41013a0000200041106a29030021052000290308210602400240200141046a2802002202200428020022006b4110490d00200128020021020c010b200041106a22032000490d08200241017422002003200020034b1b22004100480d080240024020020d002000102d21020c010b200128020020022000103121020b2002450d0720012002360200200141046a2000360200200141086a28020021000b200141086a200041106a360200200220006a22012005370008200120063700000f0b02400240200141046a280200200141086a2802002200460d00200128020021020c010b200041016a22022000490d07200041017422032002200320024b1b22034100480d070240024020000d002003102d21020c010b200128020020002003103121020b2002450d0620012002360200200141046a2003360200200141086a28020021000b200141086a200041016a360200200220006a41023a00000f0b02400240200141046a280200200141086a2802002200460d00200128020021020c010b200041016a22022000490d06200041017422032002200320024b1b22034100480d060240024020000d002003102d21020c010b200128020020002003103121020b2002450d0520012002360200200141046a2003360200200141086a28020021000b200141086a200041016a360200200220006a41033a00000f0b02400240200141046a280200200141086a2802002200460d00200128020021020c010b200041016a22022000490d05200041017422032002200320024b1b22034100480d050240024020000d002003102d21020c010b200128020020002003103121020b2002450d0420012002360200200141046a2003360200200141086a28020021000b200141086a200041016a360200200220006a41043a00000f0b02400240200141046a280200200141086a2802002200460d00200128020021020c010b200041016a22022000490d04200041017422032002200320024b1b22034100480d040240024020000d002003102d21020c010b200128020020002003103121020b2002450d0320012002360200200141046a2003360200200141086a28020021000b200141086a200041016a360200200220006a41053a00000f0b02400240200141046a280200200141086a2802002200460d00200128020021020c010b200041016a22022000490d03200041017422032002200320024b1b22034100480d030240024020000d002003102d21020c010b200128020020002003103121020b2002450d0220012002360200200141046a2003360200200141086a28020021000b200141086a200041016a360200200220006a41063a00000b0f0b1036000b1038000be212010a7f230041106b220224002000280200210320002802082204200110690240024002402004450d002003200441c8006c6a2105200141086a2104200141046a210603402002200310a701200228020021070240024020062802002208200428020022096b2002280208220a490d00200128020021080c010b2009200a6a220b2009490d0420084101742209200b2009200b4b1b22094100480d040240024020080d002009102d21080c010b200128020020082009103121080b2008450d032001200836020020062009360200200428020021090b20042009200a6a360200200820096a2007200a10e8061a02402002280204450d002007102f0b2002200341246a220710a701200228020021080240024020062802002203200428020022096b2002280208220a490d00200128020021030c010b2009200a6a220b2009490d0420034101742209200b2009200b4b1b22094100480d040240024020030d002009102d21030c010b200128020020032009103121030b2003450d032001200336020020062009360200200428020021090b20042009200a6a360200200320096a2008200a10e8061a02402002280204450d002008102f0b200741246a22032005470d000b0b20022000410c6a10a7012002280200210302400240200141046a280200220a200141086a28020022046b20022802082209490d002001280200210a0c010b200420096a22062004490d02200a41017422042006200420064b1b22044100480d0202400240200a0d002004102d210a0c010b2001280200200a20041031210a0b200a450d012001200a360200200141046a2004360200200141086a28020021040b200141086a2206200420096a360200200a20046a2003200910e8061a02402002280204450d002003102f0b2002200041306a10a7012002280200210302400240200141046a280200220a200628020022046b20022802082209490d002001280200210a0c010b200420096a22062004490d02200a41017422042006200420064b1b22044100480d0202400240200a0d002004102d210a0c010b2001280200200a20041031210a0b200a450d012001200a360200200141046a2004360200200141086a28020021040b200141086a2206200420096a360200200a20046a2003200910e8061a02402002280204450d002003102f0b2002200041d4006a10a7012002280200210302400240200141046a280200220a200628020022046b20022802082209490d002001280200210a0c010b200420096a22062004490d02200a41017422042006200420064b1b22044100480d0202400240200a0d002004102d210a0c010b2001280200200a20041031210a0b200a450d012001200a360200200141046a2004360200200141086a28020021040b200141086a2206200420096a360200200a20046a2003200910e8061a02402002280204450d002003102f0b2002200041f8006a10a7012002280200210302400240200141046a280200220a200628020022046b20022802082209490d002001280200210a0c010b200420096a22062004490d02200a41017422042006200420064b1b22044100480d0202400240200a0d002004102d210a0c010b2001280200200a20041031210a0b200a450d012001200a360200200141046a2004360200200141086a28020021040b200141086a2206200420096a360200200a20046a2003200910e8061a02402002280204450d002003102f0b20022000419c016a10a7012002280200210302400240200141046a280200220a200628020022046b20022802082209490d002001280200210a0c010b200420096a22062004490d02200a41017422042006200420064b1b22044100480d0202400240200a0d002004102d210a0c010b2001280200200a20041031210a0b200a450d012001200a360200200141046a2004360200200141086a28020021040b200141086a2206200420096a360200200a20046a2003200910e8061a02402002280204450d002003102f0b200141046a2802002109200628020021040240024020002d0088024101460d000240024020092004460d00200128020021090c010b200441016a22092004490d042004410174220a2009200a20094b1b220a4100480d040240024020040d00200a102d21090c010b20012802002004200a103121090b2009450d0320012009360200200141046a200a360200200141086a28020021040b200141086a200441016a360200200920046a41003a00000c010b0240024020092004460d00200128020021090c010b200441016a22092004490d032004410174220a2009200a20094b1b220a4100480d030240024020040d00200a102d21090c010b20012802002004200a103121090b2009450d0220012009360200200141046a200a360200200141086a28020021040b200141086a220a200441016a360200200920046a41013a000002400240200141046a2802002209200a28020022046b4114490d00200128020021090c010b200441146a220a2004490d0320094101742204200a2004200a4b1b22044100480d030240024020090d002004102d21090c010b200128020020092004103121090b2009450d0220012009360200200141046a2004360200200141086a28020021040b200141086a200441146a360200200920046a220441106a20004199026a280000360000200441086a20004191026a290000370000200420004189026a2900003700000b2002200041c0016a10a7012002280200210302400240200141046a280200220a200141086a28020022046b20022802082209490d002001280200210a0c010b200420096a22062004490d02200a41017422042006200420064b1b22044100480d0202400240200a0d002004102d210a0c010b2001280200200a20041031210a0b200a450d012001200a360200200141046a2004360200200141086a28020021040b200141086a2206200420096a360200200a20046a2003200910e8061a02402002280204450d002003102f0b2002200041e4016a10a7012002280200210302400240200141046a280200220a200628020022046b20022802082209490d002001280200210a0c010b200420096a22062004490d02200a41017422042006200420064b1b22044100480d0202400240200a0d002004102d210a0c010b2001280200200a20041031210a0b200a450d012001200a360200200141046a2004360200200141086a28020021040b200141086a200420096a360200200a20046a2003200910e8061a02402002280204450d002003102f0b200241106a24000f0b1036000b1038000bce0201047f230041106b2202240002400240024002400240024002400240024020012d00000e06010203040500010b200241003a000a20024181ca003b01082002200141216a3602042002200141016a3602000c050b410110332201450d062000428180808010370204200020013602000c050b2001410c6a2802002203412020034120491b220441016a2203102d2205450d0520052003200310e706220541016a200141046a280200200410e8061a2000200336020820002003360204200020053602000c040b200241003a000a20024181c4003b01082002200141216a3602042002200141016a3602000c020b200241003a000a20024181c6003b01082002200141216a3602042002200141016a3602000c010b200241003a000a20024181c8003b01082002200141216a3602042002200141016a3602000b2000200210b0060b200241106a24000f0b1036000bec12010b7f23004180016b22022400200241003a004002400240024002400240024002400240024002400240024002400240024002400240024002400240024020012802002203280204220420044100472205490d00200241c0006a20032802002206200510e8061a2003200420056b3602042003200620056a360200024020040d00410021062002410d6a2107200241106a2108200241246a21090c140b2002410d6a2107200241106a2108200241246a210920022d0040220a41254b0d0141002106200a0e261301010101010101010101010101010101010101010101010101010101010101010102030405130b200041063a00000c130b0240200a417f6a220441ff01714121490d00200041063a00000c130b024020040d00410121034100210441002105410121060c120b0240200410332203450d002003200128020022012802002001280204220a2004200a2004491b220510e806210b200128020422062005490d052001200620056b3602042001200128020020056a360200410121060240200a20044f0d00200b20056a22014100200b20046a20016b10e7061a0b200421050c120b1036000b200241003a00784100210402400340200241003a004020012802002205280204220320034100472206490d01200241c0006a2005280200220a200610e8061a2005200320066b3602042005200a20066a360200024002402003450d0020022d004021030c010b41002103200241003a00400b200241d8006a20046a20033a00002002200441016a22043a007820044120470d000b200241d6006a20022d005a3a0000200241c8006a200241ef006a290000370300200241d0006a200241f7006a2d00003a0000200220022f01583b0154200220022900673703404100210120022800632104200228005f2105200228005b21030c100b41012101200441ff01710d040c0e0b200241003a00784100210402400340200241003a004020012802002205280204220320034100472206490d01200241c0006a2005280200220a200610e8061a2005200320066b3602042005200a20066a360200024002402003450d0020022d004021030c010b41002103200241003a00400b200241d8006a20046a20033a00002002200441016a22043a007820044120470d000b200241d6006a20022d005a3a0000200241c8006a200241ef006a290000370300200241d0006a200241f7006a2d00003a0000200220022f01583b0154200220022900673703404100210120022800632104200228005f2105200228005b21030c0d0b41012101200441ff01710d040c0b0b200241003a00784100210402400340200241003a004020012802002205280204220320034100472206490d01200241c0006a2005280200220a200610e8061a2005200320066b3602042005200a20066a360200024002402003450d0020022d004021030c010b41002103200241003a00400b200241d8006a20046a20033a00002002200441016a22043a007820044120470d000b200241d6006a20022d005a3a0000200241c8006a200241ef006a290000370300200241d0006a200241f7006a2d00003a0000200220022f01583b0154200220022900673703404100210120022800632104200228005f2105200228005b21030c0a0b41012101200441ff01710d040c080b200241003a00784100210402400340200241003a004020012802002205280204220320034100472206490d01200241c0006a2005280200220a200610e8061a2005200320066b3602042005200a20066a360200024002402003450d0020022d004021030c010b41002103200241003a00400b200241d8006a20046a20033a00002002200441016a22043a007820044120470d000b200241d6006a20022d005a3a0000200241c8006a200241ef006a290000370300200241d0006a200241f7006a2d00003a0000200220022f01583b0154200220022900673703404100210120022800632104200228005f2105200228005b21030c070b41012101200441ff01710d040c050b20052006104b000b200241003a00780c090b200241003a00780c060b200241003a00780c030b200241003a00780b0b2002413c6a41026a2206200241d4006a41026a2d00003a0000200241286a41086a220a200241c0006a41086a290300370300200241286a41106a220b200241c0006a41106a2d00003a0000200220022f01543b013c20022002290340370328024020010d00200241246a41026a20062d00003a0000200241106a41086a200a290300370300200241106a41106a200b2d00003a0000200220022f013c3b012420022002290328370310410521060c070b200041063a00000c070b0b2002413c6a41026a2206200241d4006a41026a2d00003a0000200241286a41086a220a200241c0006a41086a290300370300200241286a41106a220b200241c0006a41106a2d00003a0000200220022f01543b013c20022002290340370328024020010d00200241246a41026a20062d00003a0000200241106a41086a200a290300370300200241106a41106a200b2d00003a0000200220022f013c3b012420022002290328370310410421060c050b200041063a00000c050b0b2002413c6a41026a2206200241d4006a41026a2d00003a0000200241286a41086a220a200241c0006a41086a290300370300200241286a41106a220b200241c0006a41106a2d00003a0000200220022f01543b013c20022002290340370328024020010d00200241246a41026a20062d00003a0000200241106a41086a200a290300370300200241106a41106a200b2d00003a0000200220022f013c3b012420022002290328370310410321060c030b200041063a00000c030b0b410221062002413c6a41026a220a200241d4006a41026a2d00003a0000200241286a41086a220b200241c0006a41086a290300370300200241286a41106a220c200241c0006a41106a2d00003a0000200220022f01543b013c20022002290340370328024020010d00200241246a41026a200a2d00003a0000200241106a41086a200b290300370300200241106a41106a200c2d00003a0000200220022f013c3b0124200220022903283703100c010b200041063a00000c010b200020063a0000200020092f00003b00012000410c6a2004360000200041086a2005360000200041046a2003360000200041106a2008290000370000200041216a20072f00003b0000200041036a200941026a2d00003a0000200041186a200841086a290000370000200041206a200841106a2d00003a0000200041236a200741026a2d00003a00000b20024180016a24000b8111010a7f23004180016b2202240002400240024002400240024002400240024002400240024002400240024002400240024002400240024020012802042203450d00200128020022042d0000210520012003417f6a22063602042001200441016a2207360200200541254b0d014100210820050e261301010101010101010101010101010101010101010101010101010101010101010102030405130b200041063a00000c130b02402005417f6a41ff01714121490d00200041063a00000c130b02402005417f6a22090d0020012006360204200120073602004101210a410021094100210b410121080c120b0240024020091033220a450d0020012802042009490d01200a2001280200200910e8061a200128020422052009490d062001200520096b3602042001200128020020096a360200410121082009210b0c130b1036000b200041063a0000200a102f0c120b41002105200241003a00782003417f6a210a2003417e6a210302400340200a2005460d01200241d8006a20056a200420056a220941016a2d00003a0000200120033602042001200941026a3602002002200541016a22093a00782003417f6a21032009210520094120470d000b200241d6006a20022d005a3a0000200241c8006a200241ef006a290000370300200241d0006a200241f7006a2d00003a0000200220022f01583b0154200220022900673703404100210120022800632109200228005f210b200228005b210a0c100b41012101200541ff01710d040c0e0b41002105200241003a00782003417f6a210a2003417e6a210302400340200a2005460d01200241d8006a20056a200420056a220941016a2d00003a0000200120033602042001200941026a3602002002200541016a22093a00782003417f6a21032009210520094120470d000b200241d6006a20022d005a3a0000200241c8006a200241ef006a290000370300200241d0006a200241f7006a2d00003a0000200220022f01583b0154200220022900673703404100210120022800632109200228005f210b200228005b210a0c0d0b41012101200541ff01710d040c0b0b41002105200241003a00782003417f6a210a2003417e6a210302400340200a2005460d01200241d8006a20056a200420056a220941016a2d00003a0000200120033602042001200941026a3602002002200541016a22093a00782003417f6a21032009210520094120470d000b200241d6006a20022d005a3a0000200241c8006a200241ef006a290000370300200241d0006a200241f7006a2d00003a0000200220022f01583b0154200220022900673703404100210120022800632109200228005f210b200228005b210a0c0a0b41012101200541ff01710d040c080b41002105200241003a00782003417f6a210a2003417e6a210302400340200a2005460d01200241d8006a20056a200420056a220941016a2d00003a0000200120033602042001200941026a3602002002200541016a22093a00782003417f6a21032009210520094120470d000b200241d6006a20022d005a3a0000200241c8006a200241ef006a290000370300200241d0006a200241f7006a2d00003a0000200220022f01583b0154200220022900673703404100210120022800632109200228005f210b200228005b210a0c070b41012101200541ff01710d040c050b20092005104b000b200241003a00780c090b200241003a00780c060b200241003a00780c030b200241003a00780b0b2002413c6a41026a2205200241d4006a41026a2d00003a0000200241286a41086a2204200241c0006a41086a290300370300200241286a41106a2203200241c0006a41106a2d00003a0000200220022f01543b013c20022002290340370328024020010d00200241246a41026a20052d00003a0000200241106a41086a2004290300370300200241106a41106a20032d00003a0000200220022f013c3b012420022002290328370310410521080c070b200041063a00000c070b0b2002413c6a41026a2205200241d4006a41026a2d00003a0000200241286a41086a2204200241c0006a41086a290300370300200241286a41106a2203200241c0006a41106a2d00003a0000200220022f01543b013c20022002290340370328024020010d00200241246a41026a20052d00003a0000200241106a41086a2004290300370300200241106a41106a20032d00003a0000200220022f013c3b012420022002290328370310410421080c050b200041063a00000c050b0b2002413c6a41026a2205200241d4006a41026a2d00003a0000200241286a41086a2204200241c0006a41086a290300370300200241286a41106a2203200241c0006a41106a2d00003a0000200220022f01543b013c20022002290340370328024020010d00200241246a41026a20052d00003a0000200241106a41086a2004290300370300200241106a41106a20032d00003a0000200220022f013c3b012420022002290328370310410321080c030b200041063a00000c030b0b410221082002413c6a41026a2205200241d4006a41026a2d00003a0000200241286a41086a2204200241c0006a41086a290300370300200241286a41106a2203200241c0006a41106a2d00003a0000200220022f01543b013c20022002290340370328024020010d00200241246a41026a20052d00003a0000200241106a41086a2004290300370300200241106a41106a20032d00003a0000200220022f013c3b0124200220022903283703100c010b200041063a00000c010b200020083a0000200020022f01243b00012000410c6a2009360000200041086a200b360000200041046a200a360000200041106a2002290310370000200041216a20022f000d3b0000200041036a200241246a41026a2d00003a0000200041186a200241106a41086a290300370000200041206a200241106a41106a2d00003a0000200041236a2002410d6a41026a2d00003a00000b20024180016a24000b830301067f230041106b2203240002400240024020014105744104722204417f4c0d002004102d2205450d012003410036020820032004360204200320053602002001200310690240024020010d002003280208210520032802042106200328020021070c010b20014105742108200328020021072003280204210420032802082101034002400240200420016b4120490d00200141206a2105200421060c010b200141206a22052001490d05200441017422062005200620054b1b22064100480d050240024020040d002006102d21070c010b200720042006103121070b2007450d040b200720016a22012000290000370000200141186a200041186a290000370000200141106a200041106a290000370000200141086a200041086a2900003700002006210420052101200041206a2100200841606a22080d000b2003200636020420032005360208200320073602000b20022902002005ad4220862007ad84100402402006450d002007102f0b200341106a24000f0b103d000b1036000b1038000b830402067f027e230041106b22032400024002400240200141306c4104722204417f4c0d002004102d2205450d012003410036020820032004360204200320053602002001200310690240024020010d002003280208210120032802042106200328020021050c010b2000200141306c6a2107200328020021052003280204210620032802082101034002400240200620016b4120490d00200141206a2104200621080c010b200141206a22042001490d05200641017422082004200820044b1b22084100480d050240024020060d002008102d21050c010b200520062008103121050b2005450d040b200520016a22012000290000370000200141186a200041186a290000370000200141106a200041106a290000370000200141086a200041086a290000370000200041286a2903002109200041206a290300210a02400240200820046b4110490d00200441106a2101200821060c010b200441106a22012004490d05200841017422062001200620014b1b22064100480d050240024020080d002006102d21050c010b200520082006103121050b2005450d040b200520046a220420093700082004200a3700002007200041306a2200470d000b2003200636020420032001360208200320053602000b20022902002001ad4220862005ad84100402402006450d002005102f0b200341106a24000f0b103d000b1036000b1038000be10302087f027e230041106b22022400200241003602082002420137030020002802102103200041186a2802002204200210690240024002402004450d00200320044105746a21050340200328020021060240024020022802042207200228020822046b4104490d00200228020021070c010b200441046a22082004490d04200741017422092008200920084b1b22084100480d040240024020070d002008102d21070c010b200228020020072008103121070b2007450d0320022008360204200220073602000b2002200441046a360208200720046a2006360000200341086a200210a5012005200341206a2203470d000b0b200041086a290300210a2000290300210b0240024020022802042207200228020822036b4110490d00200341106a2104200228020021070c010b200341106a22042003490d02200741017422062004200620044b1b22064100480d020240024020070d002006102d21070c010b200228020020072006103121070b2007450d0120022006360204200220073602000b200720036a2203200a3700082003200b370000200220043602082000411c6a200210a601200228020421032001290200200235020842208620022802002204ad84100402402003450d002004102f0b200241106a24000f0b1036000b1038000b830301067f230041106b2203240002400240024020014105744104722204417f4c0d002004102d2205450d012003410036020820032004360204200320053602002001200310690240024020010d002003280208210520032802042106200328020021070c010b20014105742108200328020021072003280204210420032802082101034002400240200420016b4120490d00200141206a2105200421060c010b200141206a22052001490d05200441017422062005200620054b1b22064100480d050240024020040d002006102d21070c010b200720042006103121070b2007450d040b200720016a22012000290000370000200141186a200041186a290000370000200141106a200041106a290000370000200141086a200041086a2900003700002006210420052101200041206a2100200841606a22080d000b2003200636020420032005360208200320073602000b20022902002005ad4220862007ad84100402402006450d002007102f0b200341106a24000f0b103d000b1036000b1038000bf90e09017f017e017f017e017f017e037f027e037f23004190026b2202240041adc5c300ad4280808080f000842203100122042900002105200241e8006a41086a200441086a290000370300200220053703682004102f2003100122042900002103200241c8006a41086a200441086a290000370300200220033703482004102f024002404120102d2204450d0020042001290000370000200441186a200141186a290000370000200441106a200141106a290000370000200441086a200141086a2900003700002004ad4280808080800484100322062900002103200641086a2900002105200641106a2900002107200241f8006a41186a2208200641186a290000370300200241f8006a41106a22092007370300200241f8006a41086a2005370300200220033703782006102f2004102f41c000102d2204450d00200420022903683700002004200229034837001020042002290378370020200441086a200241e8006a41086a220a290300370000200441186a200241c8006a41086a290300370000200441286a200241f8006a41086a290300370000200441306a2009290300370000200441386a2008290300370000200241c0003602fc01200220043602f801200241e8006a2004ad42808080808008841002107302400240200228026822060d00420021030c010b200228026c2109024002400240200a28020022084110490d0020084170714110460d002008417c714120470d010b20024100360250200242013703482002410b360284022002200241f8016a360280022002200241c8006a36028c022002418c016a41013602002002420137027c200241b885c700360278200220024180026a360288012002418c026a41d8dbc100200241f8006a103c1a200235025042208620023502488410080240200228024c450d002002280248102f0b420021030c010b200641086a290000210b20062900002107200641186a290000210c2006290010210520062800202108420121030b2009450d002006102f0b2004102f0240024002402003500d00200241f8006a41186a4200370300200241f8006a41106a220a4200370300200241f8006a41086a2204420037030020024200370378418de6c300ad4280808080e000841001220629000021032004200641086a290000370300200220033703782006102f419ce6c300ad4280808080e00084100122062900002103200241e8006a41086a2209200641086a290000370300200220033703682006102f200a20022903682203370300200241c8006a41086a220a2004290300370300200241c8006a41106a2003370300200241c8006a41186a200929030037030020022002290378370348200241306a200241c8006a4120109501200241106a200c420041002002280234410020022802301b220420086b2206200620044b1bad2203420010ed06200241206a200342002005420010ed062002420042002005420010ed062002290308200229031884420052200241206a41086a2903002203200229030020022903107c7c2205200354720d0142002007200229032022037d220c200c200756200b20057d2007200354ad7d2203200b562003200b511b22041b22054200200320041b220384500d01200242f6cacda397cddbb320370340200241c0006a200120052003410610b001200241b0016a2003370300200241a8016a2005370300200241f8006a41086a41003a000020024181016a200129000037000020024189016a200141086a29000037000020024191016a200141106a29000037000020024199016a200141186a290000370000200241143a0078200241f8006a21040c020b2000411b3b0001200041086a410a360200200041046a41eaf0c000360200410321040c030b200242f6cacda397cddbb320370338200241386a200110b10141adc5c300ad4280808080f0008422031001220429000021052009200441086a290000370300200220053703682004102f2003100122042900002103200a200441086a290000370300200220033703482004102f4120102d2204450d0120042001290000370000200441186a200141186a2209290000370000200441106a200141106a220a290000370000200441086a200141086a220d2900003700002004ad4280808080800484100322062900002103200641086a2900002105200641106a2900002107200241f8006a41186a220e200641186a290000370300200241f8006a41106a220f2007370300200241f8006a41086a22082005370300200220033703782006102f2004102f41c000102d2204450d01200420022903683700002004200229034837001020042002290378370020200441086a200241e8006a41086a290300370000200441186a200241c8006a41086a290300370000200441286a2008290300370000200441306a200f290300370000200441386a200e2903003700002004ad428080808080088410052004102f200841013a000020024181016a200129000037000020024189016a200d29000037000020024191016a200a29000037000020024199016a2009290000370000200241143a0078200241f8006a21040b41c8e1ca0041002004108c01410421040c010b1036000b200020043a000020024190026a24000bbd0101047f230041106b2202240020002802042103200028020021004101210420012802184199a5c00041012001411c6a28020028020c1100002105200241003a0005200220053a00042002200136020002402003450d0003402002200036020c20022002410c6a4190ebc30010621a200041016a21002003417f6a22030d000b20022d000421050b0240200541ff01710d00200228020022002802184198a5c00041012000411c6a28020028020c11000021040b200241106a240020040bfe0e03037f017e0e7f230022052106200541e0016b416071220524000240024002402002200384500d00200441ff01712207450d002000290000210841002109024020074101460d004102410120044101711b21090b20052002370300200520093a00182005200837031020052003370308200541c0016a200110ff0420052802c001210a20052802c401210b02400240024020052802c801220c450d00200a200c41057422046a210d200441606a210e200541a0016a411072210f200541a0016a4119722110200a21040340200541e8006a41106a2211200441106a290300370300200541e8006a41086a2212200441086a29030037030020052004290300370368200441186a2d000021072005200441196a28000036023820052004411c6a28000036003b20074103460d0120102005280238360000201041036a200528003b360000200520112903003703b001200520122903003703a801200520052903683703a001200520073a00b80102400240200f2000460d00200f2900002000290000510d00200520052903b801220237039801200520052903b00137039001200520052903a80137038801200520052903a001370380010c010b200541033a00d80120052005290318220237039801200520052903103703900120052005290308370388012005200529030037038001200520052903d001370310200520052903c801370308200520052903c001370300200520052903d80122033703182003a721090b2002a7220741ff01714103470d02200e41606a210e200441206a2204200d470d000b0b41082111410021100240200b450d00200a102f0b410021130c010b200541d0006a41106a2210200529039001370300200541d0006a41086a22122005290388013703002005200528009c0136004320052005280099013602402005200529038001370350200520052802403602482005200528004336004b4120102d2211450d0220112005290350370300201120073a0018201120052802483600192011411c6a200528004b360000201141106a2010290300370300201141086a201229030037030002400240200e0d0041012110410121130c010b200441206a2112200c410574200a6a41606a211420054180016a4119722115200541a0016a411072210c200541a0016a411972210e41012110410121130340201221040340200541e8006a41106a2212200441106a290300370300200541e8006a41086a220f200441086a29030037030020052004290300370368200441186a2d000021072005200441196a28000036023820052004411c6a28000036003b20074103460d02200e2005280238360000200e41036a200528003b360000200520122903003703b0012005200f2903003703a801200520052903683703a001200520073a00b80102400240200c2000460d00200c2900002000290000510d00200520052903b801220237039801200520052903b00137039001200520052903a80137038801200520052903a001370380010c010b200541033a00d80120052005290318220237039801200520052903103703900120052005290308370388012005200529030037038001200520052903d001370310200520052903c801370308200520052903c001370300200520052903d80122033703182003a721090b02402002a7220741ff01714103470d00200441206a2204200d470d010c030b0b200541d0006a41106a2212200529039001370300200541d0006a41086a220f200529038801370300200520152800003602402005201541036a2800003600432005200529038001370350200520052802403602482005200528004336004b200541c0016a41086a2216200f290300370300200541c0016a41106a220f2012290300370300200520052903503703c001200520052802483602a0012005200528004b3600a301024020132010470d00201041016a22122010490d06201041017422132012201320124b1b221241ffffff3f712012470d06201241057422124100480d060240024020100d002012102d21110c010b201120104105742012103121110b2011450d05201241057621130b200441206a211220162903002102200f290300210320052903c0012108201120104105746a220f20073a0018200f2008370300200f41106a2003370300200f41086a2002370300200f20052802a001360019200f411c6a20052800a301360000201041016a211020142004470d000b0b200b450d00200a102f0b0240200941ff01714103460d00200541c0016a41186a22072005290318370300200541c0016a41106a22002005290310370300200541c0016a41086a220e2005290308370300200520052903003703c001024020102013470d00201041016a22042010490d04201041017422122004201220044b1b220441ffffff3f712004470d04200441057422044100480d040240024020100d002004102d21110c010b201120104105742004103121110b2011450d03200441057621130b201120104105746a220420052903c001370300200441186a2007290300370300200441106a2000290300370300200441086a200e290300370300201041016a21100b2001201120101080052013450d002011102f0b200624000f0b1036000b1038000ba60304107f027e017f017e230041306b220224002002200110ff042002280200210302400240200228020822040d00410021040c010b200041706a210541002106200321074100210802400240034002400240024020052007460d00200741106a22092900002000290000510d0020060d01410021060c020b200641016a21060c010b200820066b220a20044f0d02200241106a41186a220b200720064105746b220a41186a220c290300370300200241106a41106a220d200a41106a220e290300370300200241106a41086a220f200a41086a22102903003703002002200a290300370310200741086a2211290300211220092903002113200741186a22142903002115200a2007290300370300200c2015370300200e2013370300201020123703002014200b2903003703002009200d2903003703002011200f290300370300200720022903103703000b200741206a21072004200841016a2208460d020c000b0b4188bbca00200a2004103b000b2006417f6a20044f0d002002200420066b22043602080b20012003200410800502402002280204450d002003102f0b200241306a24000be7d70106037f017e147f057e067f037e230041b0116b22032400024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020012d00000e0c000102030405060708090a0b000b200341840f6a4101360200200342013702f40e200341b4d8c9003602f00e200341043602ec09200341fcdbc9003602e8092003200341e8096a3602800f200341f00e6a41e8d8c9001043000b200241036a2d0000210420022f00012105200141196a2900002106200141186a2d00002107200141176a2d00002108200141156a2f00002109200141146a2d0000210a200141136a2d0000210b200141116a2f0000210c200141106a2d0000210d2001410f6a2d0000210e2001410d6a2f0000210f2001410c6a2d000021102001410b6a2d00002111200141096a2f00002112200141086a2d00002113200141076a2d00002114200141056a2f00002115200141046a2d00002116200141036a2d0000211720012f0001211802400240024020022d00002219417f6a221a41024b0d000240201a0e03000102000b200241086a2802004101742002410c6a2802004d0d00200241046a28020041ff0171450d010b200520044110747220194100477241ff01710d010b41a4e3c400ad4280808080c0008410012202290000211b2002290008211c2002102f4188bec100ad4280808080a0018410012202290000211d2002290008211e2002102f2003201e3703a8032003201d3703a0032003201c370398032003201b37039003200341f00e6a20034190036a10b301024020032802f00e221a0d004200211b4108211a410021020c1d0b20032902f40e221b422088221ca72202201ba7460d1c201ca721040c200b200041023a00004101211a0c200b200341286a200141046a41a00210e8061a024002400240024020022d00000d0020022d00014101470d00200241196a2d0000211a200241186a2d00002104200241166a2f01002107200241156a2d00002108200241146a2d00002109200241126a2f0100210a200241116a2d0000210b200241106a2d0000210c2002410e6a2f0100210d2002410d6a2d0000210e2002410c6a2d0000210f2002410a6a2f01002110200241096a2d00002111200241086a2d00002112200241066a2f01002113200241056a2d00002114200241046a2d00002115200241026a2f0100211620032002411a6a2901003703d0052003201a3a00cf05200320043a00ce05200320073b01cc05200320083a00cb05200320093a00ca052003200a3b01c8052003200b3a00c7052003200c3a00c6052003200d3b01c4052003200e3a00c3052003200f3a00c205200320103b01c005200320113a00bf05200320123a00be05200320133b01bc05200320143a00bb05200320153a00ba05200320163b01b80502402003280230220241e4004b0d0020032002ad42004280c0c6c9faeb38420010ed0641a4e3c400ad4280808080c0008410012202290000211b200341a80c6a41086a200241086a2900003703002003201b3703a80c2002102f41e8bcc100ad4280808080a0018410012202290000211b200341d00e6a41086a200241086a2900003703002003201b3703d00e2002102f200341086a290300211f4120102d2202450d262003290300211e200220032903b805370000200241186a200341b8056a41186a290300370000200241106a200341b8056a41106a290300370000200241086a200341b8056a41086a2903003700002002ad42808080808004841003221a290000211b201a41086a2900002106201a41106a290000211c20034190036a41186a2204201a41186a29000037030020034190036a41106a2207201c37030020034190036a41086a20063703002003201b37039003201a102f2002102f41c000102d221a450d26201a20032903a80c370000201a41086a200341a80c6a41086a290300370000201a20032903d00e370010201a41186a200341d00e6a41086a290300370000201a200329039003370020201a41286a20034190036a41086a290300370000201a41306a2007290300370000201a41386a2004290300370000200341f00e6a201a10b401200341f00e6a41086a290300211b20032903f00e210620032802800f210220032802840f210420032802880f210920034190036a200341f00e6a411c6a220741880210e8061a200341f0026a41086a22082003419d116a220a290000370300200341f0026a41106a200341a5116a220b290000370300200341f0026a41176a220c200341ac116a220d28000036000020032003290095113703f00220032d009411220e4102460d03200341c80c6a20034190036a41880210e8061a200341c8026a41176a220f200c280000360000200341c8026a41106a220c200341f0026a41106a290300370300200341c8026a41086a22102008290300370300200320032903f0023703c802201a102f200341f00e6a41186a2009360200200341840f6a20043602002003201b3703f80e200320063703f00e200320023602800f2007200341c80c6a41880210e806211220034194116a200e3a000020034195116a20032903c802370000200a2010290300370000200b200c290300370000200d200f28000036000002402009450d004100211a410021040340024002400240200241086a2208280200417f6a220741054b0d00024020070e06000101010100000b201a0d014100211a0c020b201a41016a211a0c010b2004201a6b220720094f0d12200341c0076a41186a220a2002201a4105746b220741186a220b290300370300200341c0076a41106a220c200741106a220d290300370300200341c0076a41086a220e200741086a220f290300370300200320072903003703c0072008290300211b200241106a22102903002106200241186a2211290300211c20072002290300370300200b201c370300200d2006370300200f201b3703002011200a2903003703002010200c2903003703002008200e290300370300200220032903c0073703000b200241206a21022009200441016a2204470d000b201a417f6a20094f0d0020032009201a6b3602880f0b201210a4012012200341286a41a00210e8061a200341e8096a200341f00e6a41c00210e8061a200341f0096a290300210620032903e809211d0c040b20004183303b0100200041086a410d360200200041046a418bf4c000360200200041026a410b3a00000c010b200041023a00000b200341286a10a4010c1b0b201a102f200341800a6a41003602004200211d200342003703f009200342003703e809200342083703f809200341e8096a411c6a200341286a41a00210e8061a420021060b2003201e4280809aa6eaafe3017c221b3703e8092003201f201b201e54ad7c221c3703f009201b201d56201c200656201c20065122021b0d170c180b2001410c6a2802002104200141086a2802002114200141046a28020021092002411a6a290100211b200241196a2d00002107200241186a2d00002108200241166a2f0100210a200241156a2d0000210b200241146a2d0000210c200241126a2f0100210d200241116a2d0000210e200241106a2d0000210f2002410e6a2f010021102002410d6a2d000021112002410c6a2d000021122002410a6a2f01002113200241096a2d00002115200241086a2d00002116200241066a2f01002117200241056a2d00002118200241046a2d00002105200241026a2f010021194101211a024020022d00000d0020022d0001410147211a0b2003201b3703a803200320073a00a703200320083a00a6032003200a3b01a4032003200b3a00a3032003200c3a00a2032003200d3b01a0032003200e3a009f032003200f3a009e03200320103b019c03200320113a009b03200320123a009a03200320133b019803200320153a009703200320163a009603200320173b019403200320183a009303200320053a009203200320193b019003024002400240201a0d00200341b8056a41186a220720034190036a41186a290300370300200341b8056a41106a220820034190036a41106a290300370300200341b8056a41086a220a20034190036a41086a221a29030037030020032003290390033703b80541a4e3c400ad4280808080c0008410012202290000211b201a200241086a2900003703002003201b370390032002102f41e8bcc100ad4280808080a0018410012202290008211b20022d0007210b20022d0006210c20022f0004210d20022d0003210e20022d0002210f20022f000021102002102f4120102d221a450d23201a20032903b805370000201a41186a2007290300370000201a41106a2008290300370000201a41086a200a290300370000201aad428080808080048410032202290018210620022d0017210720022d0016210820022f0014210a20022d0013211120022d0012211220022f0010211320022d000f211520022d000e211620022f000c211720022d000b211820022d000a210520022f0008211920022d0007212020022d0006212120022f0004212220022d0003212320022d0002212420022f000021252002102f201a102f41c000102d2202450d23200220032903900337000020022006370038200220073a0037200220083a00362002200a3b0034200220113a0033200220123a0032200220133b0030200220153a002f200220163a002e200220173b002c200220183a002b200220053a002a200220193b0028200220203a0027200220213a0026200220223b0024200220233a0023200220243a0022200220253b00202002201b3700182002200b3a00172002200c3a00162002200d3b00142002200e3a00132002200f3a0012200220103b0010200241086a20034190036a41086a290300370000200341206a200241c00041c8e1ca004100410010b5012003280220211a2002102f201a4101470d01200441e4004d0d0220004183303b0100200041086a4112360200200041046a418cf5c000360200200041026a41003a00000c180b200041023a00000c170b20004183303b0100200041086a4108360200200041046a4184f5c000360200200041026a41013a00000c160b41a4e3c400ad4280808080c0008410012202290000211b20034190036a41086a200241086a2900003703002003201b370390032002102f41d8bdc100ad4280808080e0008410012202290008211b20022d0007210720022d0006210820022f0004210a20022d0003210b20022d0002210c20022f0000210d2002102f4120102d221a450d20201a20032903b805370000201a41186a200341b8056a41186a290300370000201a41106a200341b8056a41106a290300370000201a41086a200341b8056a41086a290300370000201aad428080808080048410032202290018210620022d0017210e20022d0016210f20022f0014211020022d0013211120022d0012211220022f0010211320022d000f211520022d000e211620022f000c211720022d000b211820022d000a210520022f0008211920022d0007212020022d0006212120022f0004212220022d0003212320022d0002212420022f000021252002102f201a102f41c000102d2202450d20200341106a2004ad4200428080d287e2bc2d420010ed062002200329039003370000200220063700382002200e3a00372002200f3a0036200220103b0034200220113a0033200220123a0032200220133b0030200220153a002f200220163a002e200220173b002c200220183a002b200220053a002a200220193b0028200220203a0027200220213a0026200220223b0024200220233a0023200220243a0022200220253b00202002201b370018200220073a0017200220083a00162002200a3b00142002200b3a00132002200c3a00122002200d3b0010200241086a20034190036a41086a290300370000200341f00e6a200210b601200341f00e6a41086a290300211b20032902840f210620032903f00e211c20032802800f211a2002102f20064200201a1b2126201a4101201a1b21200240201c4200201a1b220620032903102227542207201b4200201a1b221b200341106a41086a290300222854201b20285122021b450d0020032028201b7d2027200654ad7d221c3703302003202720067d221d3703282003200341b8056a3602c0074104211a0240201d201c84500d002003200341b8056a3602c80c2003200341c80c6a3602f80e2003200341c0076a3602f40e2003200341286a3602f00e200341e8096a200341b8056a200341f00e6a109401024020032802e8094101470d00200320032900ed093703f00e2003200341f4096a2800003600f70e20032d00ec09211a0c010b4104211a200341e8096a41086a2903004201520d00200341e8096a41106a290300211c20032802c80c2108200341a80f6a200341e8096a41186a290300370300200341a00f6a201c370300200341f00e6a41086a41003a0000200341f90e6a2008290000370000200341810f6a200841086a290000370000200341890f6a200841106a290000370000200341910f6a200841186a290000370000200341033a00f00e41c8e1ca004100200341f00e6a108c010b200320032903f00e37039003200320032800f70e36009703201a41ff01714104460d002000201a3a00002000200329039003370001200041086a2003280097033600002026a7450d162020102f0c160b02402006202758201b20285820021b0d002003201b20287d2007ad7d221b3703302003200620277d22063703282006201b84500d002003200341b8056a3602c80c200341e8096a200341b8056a200341286a200341c80c6a10960120032903e8094201520d0020032903f009211b200341a80f6a200341e8096a41106a290300370300200341a00f6a201b370300200341f00e6a41086a41003a0000200341f90e6a20032903b805370000200341810f6a200341b8056a41086a290300370000200341890f6a200341b8056a41106a290300370000200341910f6a200341d0056a290300370000200341033a00f00e41c8e1ca004100200341f00e6a108c010b02402026422088a72202450d002002410574211a202021020340200210b701200241206a2102201a41606a221a0d000b0b4100211302400240200441c4006c22020d0041012119410021210c010b200241c4006d221a41ffffff3f71201a470d1b201a410574221a4100480d1b201a102d2219450d21201a41057621210b0240200920026a22222009460d00200441c4006c2118200341f00e6a41206a2105200341f00e6a41216a2107200341e8096a411f6a211541a4e3c400ad4280808080c00084211e41a9f6c000ad4280808080f00084211f4100210b201921044100211302400340200341c0076a41186a221a2009200b6a220241186a290200370300200341c0076a41106a2208200241106a290200370300200341c0076a41086a220a200241086a290200370300200341e8096a41086a220f200241296a290000370300200341e8096a41106a2210200241316a290000370300200341e8096a41186a2211200241396a2900003703002015200241c0006a280000360000200320022902003703c0072003200241216a2900003703e809200241206a2d000022124106460d01200341c80c6a41186a220c201a290300370300200341c80c6a41106a220d2008290300370300200341c80c6a41086a220e200a290300370300200320032903c0073703c80c200341f00e6a41186a2208200341b8056a41186a290300370300200341f00e6a41106a220a200341b8056a41106a290300370300200341f00e6a41086a2216200341b8056a41086a290300370300200320032903b8053703f00e200320123a00900f200720032903e809370000200741086a200f290300370000200741106a2010290300370000200741186a20112903003700002007411f6a2015280000360000201e10012202290000211b200341c8026a41086a2212200241086a2900003703002003201b3703c8022002102f201f10012202290000211b20034190036a41086a2217200241086a2900003703002003201b370390032002102f4120102d2202450d23200220032903c80c370000200241186a200c290300370000200241106a200d290300370000200241086a200e2903003700002002ad42808080808004841003221a290000211b201a41086a2900002106201a41106a290000211c200341286a41186a220f201a41186a290000370300200341286a41106a2210201c370300200341286a41086a221120063703002003201b370328201a102f2002102f41c000102d2202450d23200220032903c802370000200220032903900337001020022003290328370020200241086a2012290300370000200241186a2017290300370000200241286a2011290300370000200241306a2010290300370000200241386a200f2903003700004120102d221a450d23201a20032903f00e370000201a41186a2008290300370000201a41106a200a290300370000201a41086a2016290300370000200341286a200510a7012003280228211202400240200328023022080d00200841206a210a0c010b200841206a220a2008490d1e200a41c000200a41c0004b1b22164100480d1e201a412020161031221a450d240b201a41206a2012200810e8061a0240200328022c450d002012102f0b2002ad4280808080800884200aad422086201aad841004201a102f2002102f024020032d00900f4101470d0020032802980f450d0020032802940f102f0b2011200e290300221b3703002010200d2903002206370300200f200c290300221c370300200320032903c80c221d370328200441186a201c370000200441106a2006370000200441086a201b3700002004201d370000201341016a2113200441206a21042018200b41c4006a220b470d000c020b0b200241c4006a2022460d00200241e4006a21022018200b6b41bc7f6a211a0340024020022d00004101470d00200241086a280200450d00200241046a280200102f0b200241c4006a2102201a41bc7f6a221a0d000b0b02402014450d002009102f0b0240024002402013450d00200341f00e6a41186a2013360200200341840f6a2021360200200320273703f00e200320193602800f200320283703f80e41a4e3c400ad4280808080c0008410012202290000211b20034190036a41086a200241086a2900003703002003201b370390032002102f41d8bdc100ad4280808080e0008410012202290008211b20022d0007210420022d0006210720022f0004210820022d0003210920022d0002210a20022f0000210b2002102f4120102d221a450d23201a20032903b805370000201a41186a200341b8056a41186a290300370000201a41106a200341b8056a41106a290300370000201a41086a200341b8056a41086a290300370000201aad428080808080048410032202290018210620022d0017210c20022d0016210d20022f0014210e20022d0013210f20022d0012211020022f0010211120022d000f211220022d000e211320022f000c211420022d000b211520022d000a211620022f0008211720022d0007211820022d0006210520022f0004212220022d0003212320022d0002212420022f000021252002102f201a102f41c000102d2202450d232002200329039003370000200220063700382002200c3a00372002200d3a00362002200e3b00342002200f3a0033200220103a0032200220113b0030200220123a002f200220133a002e200220143b002c200220153a002b200220163a002a200220173b0028200220183a0027200220053a0026200220223b0024200220233a0023200220243a0022200220253b00202002201b370018200220043a0017200220073a0016200220083b0014200220093a00132002200a3a00122002200b3b0010200241086a20034190036a41086a290300370000200341c0003602ec09200320023602e809200341f00e6a200341e8096a10b8012002102f20210d010c020b41a4e3c400ad4280808080c0008410012202290000211b20034190036a41086a200241086a2900003703002003201b370390032002102f41d8bdc100ad4280808080e0008410012202290008211b20022d0007210420022d0006210720022f0004210820022d0003210920022d0002210a20022f0000210b2002102f4120102d221a450d22201a20032903b805370000201a41186a200341b8056a41186a290300370000201a41106a200341b8056a41106a290300370000201a41086a200341b8056a41086a290300370000201aad428080808080048410032202290018210620022d0017210c20022d0016210d20022f0014210e20022d0013210f20022d0012211020022f0010211120022d000f211220022d000e211320022f000c211420022d000b211520022d000a211620022f0008211720022d0007211820022d0006210520022f0004212220022d0003212320022d0002212420022f000021252002102f201a102f41c000102d2202450d222002200329039003370000200220063700382002200c3a00372002200d3a00362002200e3b00342002200f3a0033200220103a0032200220113b0030200220123a002f200220133a002e200220143b002c200220153a002b200220163a002a200220173b0028200220183a0027200220053a0026200220223b0024200220233a0023200220243a0022200220253b00202002201b370018200220043a0017200220073a0016200220083b0014200220093a00132002200a3a00122002200b3b0010200241086a20034190036a41086a2903003700002002ad428080808080088410052002102f2021450d010b2019102f0b02402026a7450d002020102f0b200041043a0000410021004101211a0c1f0b2002411a6a290100211b200241196a2d00002104200241186a2d00002107200241166a2f01002108200241156a2d00002109200241146a2d0000210a200241126a2f0100210b200241116a2d0000210c200241106a2d0000210d2002410e6a2f0100210e2002410d6a2d0000210f2002410c6a2d000021102002410a6a2f01002111200241096a2d00002112200241086a2d00002113200241066a2f01002114200241056a2d00002115200241046a2d00002116200241026a2f010021174101211a024020022d00000d0020022d0001410147211a0b2003201b3703a803200320043a00a703200320073a00a603200320083b01a403200320093a00a3032003200a3a00a2032003200b3b01a0032003200c3a009f032003200d3a009e032003200e3b019c032003200f3a009b03200320103a009a03200320113b019803200320123a009703200320133a009603200320143b019403200320153a009303200320163a009203200320173b0190030240201a0d00200341c8026a41186a220420034190036a41186a290300370300200341c8026a41106a220720034190036a41106a290300370300200341c8026a41086a220820034190036a41086a221a29030037030020032003290390033703c802200341f00e6a200341c8026a10b901200341f00e6a41086a290300211e200341f00e6a41186a2802002125200341840f6a280200210920032903f00e211f20032802800f212441a4e3c400ad4280808080c0008410012202290000211b201a200241086a2900003703002003201b370390032002102f41e8bcc100ad4280808080a0018410012202290008211b20022d0007210a20022d0006210b20022f0004210c20022d0003210d20022d0002210e20022f0000210f2002102f4120102d221a450d20201a20032903c802370000201a41186a2004290300370000201a41106a2007290300370000201a41086a2008290300370000201aad428080808080048410032202290018210620022d0017210420022d0016210720022f0014210820022d0013211020022d0012211120022f0010211220022d000f211320022d000e211420022f000c211520022d000b211620022d000a211720022f0008211820022d0007210520022d0006211920022f0004212020022d0003212120022d0002212220022f000021232002102f201a102f41c000102d2202450d20200220032903900337000020022006370038200220043a0037200220073a0036200220083b0034200220103a0033200220113a0032200220123b0030200220133a002f200220143a002e200220153b002c200220163a002b200220173a002a200220183b0028200220053a0027200220193a0026200220203b0024200220213a0023200220223a0022200220233b00202002201b3700182002200a3a00172002200b3a00162002200c3b00142002200d3a00132002200e3a00122002200f3b0010200241086a20034190036a41086a290300370000200341f00e6a200210b401024020032d009411220d410246221a0d002002ad428080808080088410050b200341f00e6a41086a290300211d20032903f00e211c20032802880f210420032802840f210820032802800f2107200341286a200341f00e6a411c6a41880210e8061a200341c8096a41176a220a200341f00e6a41bc026a280000360000200341c8096a41106a220b200341f00e6a41b5026a290000370300200341c8096a41086a220c200341f00e6a41ad026a29000037030020032003290095113703c80920034190036a200341286a41880210e8061a200341f0026a41176a220e200a280000360000200341f0026a41106a220a200b290300370300200341f0026a41086a200c290300370300200320032903c8093703f0020240201a0d00200341c0076a20034190036a41880210e8061a20034198056a41176a221a200e28000036000020034198056a41106a220b200a29030037030020034198056a41086a220a200341f0026a41086a290300370300200320032903f002370398052002102f200341b8056a200341c0076a41880210e8061a200341c80c6a200341b8056a41880210e8061a200341d00e6a41176a2202201a280000360000200341d00e6a41106a221a200b290300370300200341d00e6a41086a220b200a290300370300200341800a6a2004360200200341fc096a200836020020032003290398053703d00e2003201d3703f0092003201c3703e809200320073602f809200341e8096a411c6a200341c80c6a41880210e806210a2003418c0c6a200d3a00002003418d0c6a20032903d00e370000200341e8096a41ad026a200b290300370000200341e8096a41b5026a201a290300370000200341e8096a41bc026a2002280000360000024002402004410574221a0d004200211b420021060c010b200741106a21024200211b420021060340200241086a2903004200200241786a29030042015122041b20067c2002290300420020041b2206201b7c221b200654ad7c2106200241206a2102201a41606a221a0d000b0b201d201e7c201c201f7c221d201c54ad7c20067c2106201d201b7c221b201d54ad211c02402008450d002007102f0b2006201c7c2106200a10a40102402025450d002025410574211a202421020340200210b701200241206a2102201a41606a221a0d000b0b2003201b370328200320063703300240201b200684500d002003200341c8026a3602c80c200341e8096a200341c8026a200341286a200341c80c6a10960120032903e8094201520d0020032903f009211c200341a80f6a200341e8096a41106a290300370300200341a00f6a201c370300200341f00e6a41086a41003a0000200341f90e6a20032903c802370000200341810f6a200341c8026a41086a290300370000200341890f6a200341c8026a41106a290300370000200341910f6a200341e0026a290300370000200341033a00f00e41c8e1ca004100200341f00e6a108c010b200341a80f6a2006370300200341a00f6a201b3703004101211a200341f00e6a41086a41013a0000200341f90e6a20032903c802370000200341890f6a200341d8026a290300370000200341910f6a200341e0026a290300370000200341c8026a41086a290300211b200341113a00f00e200341f00e6a41116a201b37000041c8e1ca004100200341f00e6a108c0102402009450d002024102f0b200041043a00000c1f0b2002102f200041086a4108360200200041046a41fcf4c000360200200041026a41023a000020004183303b01002009450d142024102f0c140b200041023a00004101211a0c1d0b20022d00000d0820022d00014101470d08200141106a290300211e200141086a290300211f200141046a280200211a200241196a2d00002104200241186a2d00002107200241166a2f01002108200241156a2d00002109200241146a2d0000210a200241126a2f0100210b200241116a2d0000210c200241106a2d0000210d2002410e6a2f0100210e2002410d6a2d0000210f2002410c6a2d000021102002410a6a2f01002111200241096a2d00002112200241086a2d00002113200241066a2f01002114200241056a2d00002115200241046a2d00002116200241026a2f0100211720032002411a6a2901003703e00c200320043a00df0c200320073a00de0c200320083b01dc0c200320093a00db0c2003200a3a00da0c2003200b3b01d80c2003200c3a00d70c2003200d3a00d60c2003200e3b01d40c2003200f3a00d30c200320103a00d20c200320113b01d00c200320123a00cf0c200320133a00ce0c200320143b01cc0c200320153a00cb0c200320163a00ca0c200320173b01c80c41a4e3c400ad4280808080c0008410012202290000211b200229000821062002102f4188bec100ad4280808080a0018410012202290000211c2002290008211d2002102f2003201d3703800a2003201c3703f809200320063703f0092003201b3703e809200341f00e6a200341e8096a10b30120032802f00e2202410820021b210402400240201a20032902f40e420020021b221b422088a74f0d002004201a4106746a2202450d0020022903004201520d002004201a4106746a2208290308201f56200841106a2903002206201e562006201e511b450d0120004183303b0100200041086a410a360200200041046a41e8f4c000360200200041026a41043a00000c130b20004183303b0100200041086a410a360200200041046a41f2f4c000360200200041026a41033a00000c120b41a4e3c400ad4280808080c00084100122022900002106200341a80c6a41086a200241086a290000370300200320063703a80c2002102f41e8bcc100ad4280808080a00184100122022900002106200341d00e6a41086a200241086a290000370300200320063703d00e2002102f4120102d2202450d1e200220032903c80c370000200241186a200341c80c6a41186a290300370000200241106a200341c80c6a41106a290300370000200241086a200341c80c6a41086a2903003700002002ad4280808080800484100322072900002106200741086a290000211c200741106a290000211d20034190036a41186a2209200741186a29000037030020034190036a41106a220a201d37030020034190036a41086a220b201c37030020032006370390032007102f2002102f41c000102d2202450d1e200220032903a80c370000200241086a200341a80c6a41086a290300370000200220032903d00e370010200241186a200341d00e6a41086a2903003700002002200329039003370020200241286a200b290300370000200241306a200a290300370000200241386a2009290300370000200341f00e6a200210b401200341f00e6a41086a290300210620032903f00e211c20032802800f210a20032802840f210c20032802880f210b20034190036a200341f00e6a411c6a41880210e8061a200341f0026a41086a200341f00e6a41ad026a290000370300200341f0026a41106a200341f00e6a41b5026a290000370300200341f0026a41176a2207200341f00e6a41bc026a28000036000020032003290095113703f00202400240024002400240024020032d00941122094102460d00200341c0076a20034190036a41880210e8061a20034198056a41176a220d200728000036000020034198056a41106a2207200341f0026a41106a29030037030020034198056a41086a220e200341f0026a41086a290300370300200320032903f002370398052002102f200341b8056a200341c0076a41880210e8061a200341286a200341b8056a41880210e8061a200341c8026a41176a2202200d280000360000200341c8026a41106a220d2007290300370300200341c8026a41086a2207200e290300370300200341800a6a200b360200200341fc096a200c36020020032003290398053703c802200320063703f0092003201c3703e8092003200a3602f809200341e8096a411c6a200341286a41880210e806210e2003418c0c6a20093a00002003418d0c6a20032903c802370000200341e8096a41ad026a2007290300370000200341e8096a41b5026a200d290300370000200341e8096a41bc026a2002280000360000200841086a220d41086a2903002106200d290300211c41002102200b41014b0d01200b0e020302030b2002102f200041086a410a360200200041046a41def4c000360200200041026a41053a000020004183303b01000c160b200b2107034020022007410176220820026a2209200a20094105746a280200201a4b1b2102200720086b220741014b0d000b0b200a20024105746a22082802002207201a460d01200b20022007201a496a2202490d0c0b0240200b200c470d00200c41016a2207200c490d1b200c41017422082007200820074b1b220741ffffff3f712007470d1b200741057422074100480d1b02400240200c0d002007102d210a0c010b200a200c41057420071031210a0b200a450d212003200a3602f80920032007410576220c3602fc090b200a20024105746a220741206a2007200b20026b41057410e9061a200741186a2006370300200741106a201c370300200742013703082007201a3602002003200b41016a3602800a0c010b200b20024d0d0b0240200a20024105746a2202280208417f6a220741054b0d00024020070e06000101010100000b20004183303b0100200041086a410f360200200041046a41cff4c000360200200041026a41063a00000c120b200241086a42013703002008201a360200200241186a2006370300200241106a201c3703000b200d29030021062003200d41086a290300221c3703c807200320063703c0072003200341c80c6a3602c8024104210202402006201c84500d002003200341c80c6a3602b8052003200341b8056a3602f80e2003200341c8026a3602f40e2003200341c0076a3602f00e200341286a200341c80c6a200341f00e6a109401024020032802284101470d002003200329002d3703f00e2003200341346a2800003600f70e20032d002c21020c010b41042102200341286a41086a2903004201520d00200341286a41106a290300210620032802b8052107200341a80f6a200341286a41186a290300370300200341a00f6a2006370300200341f00e6a41086a41003a0000200341f90e6a2007290000370000200341810f6a200741086a290000370000200341890f6a200741106a290000370000200341910f6a200741186a290000370000200341033a00f00e41c8e1ca004100200341f00e6a108c010b200320032903f00e37039003200320032800f70e360097030240200241ff01714104470d00200341f00e6a200341e8096a41c00210e8061a41a4e3c400ad4280808080c0008410012202290000210620034190036a41086a200241086a29000037030020032006370390032002102f41e8bcc100ad4280808080a0018410012202290008210620022d0007210820022d0006210920022f0004210a20022d0003210b20022d0002210c20022f0000210d2002102f4120102d2207450d1f200720032903c80c370000200741186a200341c80c6a41186a290300370000200741106a200341c80c6a41106a290300370000200741086a200341c80c6a41086a2903003700002007ad428080808080048410032202290018211c20022d0017210e20022d0016210f20022f0014211020022d0013211120022d0012211220022f0010211320022d000f211420022d000e211520022f000c211620022d000b211720022d000a211820022f0008210520022d0007211920022d0006212020022f0004212120022d0003212220022d0002212320022f000021242002102f2007102f41c000102d2202450d1f20022003290390033700002002201c3700382002200e3a00372002200f3a0036200220103b0034200220113a0033200220123a0032200220133b0030200220143a002f200220153a002e200220163b002c200220173a002b200220183a002a200220053b0028200220193a0027200220203a0026200220213b0024200220223a0023200220233a0022200220243b002020022006370018200220083a0017200220093a00162002200a3b00142002200b3a00132002200c3a00122002200d3b0010200241086a20034190036a41086a290300370000200341c00036022c20032002360228200341f00e6a200341286a10ac012002102f0240200341840f6a280200450d0020032802800f102f0b2003418c0f6a10a401200341f00e6a41086a41033a0000200341f90e6a20032903c80c370000200341890f6a200341d80c6a290300370000200341910f6a200341e00c6a2903003700002003419c0f6a201a360200200341c80c6a41086a2903002106200341113a00f00e200341f00e6a41116a200637000041c8e1ca004100200341f00e6a108c010240201ba7450d002004102f0b200041043a00004101211a0c1d0b200020023a00002000200329039003370001200041086a2003280097033600000c100b0240024002400240024020022d00000d0020022d00014101470d00200141046a2802002109200241196a2d0000211a200241186a2d00002104200241166a2f01002107200241156a2d00002108200241146a2d0000210a200241126a2f0100210b200241116a2d0000210c200241106a2d0000210d2002410e6a2f0100210e2002410d6a2d0000210f2002410c6a2d000021102002410a6a2f01002111200241096a2d00002112200241086a2d00002113200241066a2f01002114200241056a2d00002115200241046a2d00002116200241026a2f0100211720032002411a6a2901003703e00c2003201a3a00df0c200320043a00de0c200320073b01dc0c200320083a00db0c2003200a3a00da0c2003200b3b01d80c2003200c3a00d70c2003200d3a00d60c2003200e3b01d40c2003200f3a00d30c200320103a00d20c200320113b01d00c200320123a00cf0c200320133a00ce0c200320143b01cc0c200320153a00cb0c200320163a00ca0c200320173b01c80c41a4e3c400ad4280808080c0008410012202290000211b200341a80c6a41086a200241086a2900003703002003201b3703a80c2002102f41e8bcc100ad4280808080a0018410012202290000211b200341d00e6a41086a200241086a2900003703002003201b3703d00e2002102f4120102d2202450d22200220032903c80c370000200241186a200341c80c6a41186a290300370000200241106a200341c80c6a41106a290300370000200241086a200341c80c6a41086a2903003700002002ad42808080808004841003221a290000211b201a41086a2900002106201a41106a290000211c20034190036a41186a2204201a41186a29000037030020034190036a41106a2207201c37030020034190036a41086a20063703002003201b37039003201a102f2002102f41c000102d2202450d22200220032903a80c3700004108210c200241086a200341a80c6a41086a290300370000200220032903d00e370010200241186a200341d00e6a41086a2903003700002002200329039003370020200241286a20034190036a41086a290300370000200241306a2007290300370000200241386a2004290300370000200341f00e6a200210b401200341f00e6a41086a290300211b20032903f00e210620032802800f210820032802840f210b20032802880f210a20034190036a200341f00e6a411c6a41880210e8061a200341f0026a41086a221a200341f00e6a41ad026a290000370300200341f0026a41106a200341f00e6a41b5026a290000370300200341f0026a41176a2204200341f00e6a41bc026a28000036000020032003290095113703f002024020032d00941122074102460d00200341c0076a20034190036a41880210e8061a20034198056a41176a220d200428000036000020034198056a41106a2204200341f0026a41106a29030037030020034198056a41086a220e201a290300370300200320032903f002370398052002102f200341b8056a200341c0076a41880210e8061a200341286a200341b8056a41880210e8061a200341c8026a41176a2202200d280000360000200341c8026a41106a221a2004290300370300200341c8026a41086a2204200e290300370300200341800a6a200a360200200341fc096a200b36020020032003290398053703c8022003201b3703f009200320063703e809200320083602f809200341e8096a411c6a200341286a41880210e806210f2003418c0c6a20073a00002003418d0c6a20032903c802370000200341e8096a41ad026a2004290300370000200341e8096a41b5026a201a290300370000200341e8096a41bc026a20022800003600004101210d4184f5c000210e41002102200a41014b0d02200a0e020403040b2002102f200041086a410a360200200041046a41def4c000360200200041026a41053a000020004183303b01004101211a0c200b200041023a00004101211a0c1f0b200a211a03402002201a410176220420026a2207200820074105746a28020020094b1b2102201a20046b221a41014b0d000b0b200820024105746a2802002009470d00200a20024d0d0c200820024105746a221a41186a290300211b201a41106a2903002106201a290308211c201a201a41206a2002417f73200a6a41057410e9061a2003200a417f6a3602800a201c4201510d01410e210c41c1f4c000210e4107210d0b20004183303b0100200041086a200c360200200041046a200e360200200041026a200d3a00000240200b450d002008102f0b200f10a4014101211a0c1c0b200320063703c0072003201b3703c80702402006201b84500d002003200341c80c6a3602b805200341286a200341c80c6a200341c0076a200341b8056a10960120032903284201520d002003290330211b200341a80f6a200341286a41106a290300370300200341a00f6a201b370300200341f00e6a41086a41003a0000200341f90e6a20032903c80c370000200341810f6a200341c80c6a41086a290300370000200341890f6a200341c80c6a41106a290300370000200341910f6a200341e00c6a290300370000200341033a00f00e41c8e1ca004100200341f00e6a108c010b200341f00e6a200341e8096a41c00210e8061a41a4e3c400ad4280808080c0008410012202290000211b20034190036a41086a200241086a2900003703002003201b370390032002102f41e8bcc100ad4280808080a0018410012202290008211b20022d0007210420022d0006210720022f0004210820022d0003210a20022d0002210b20022f0000210c2002102f4120102d221a450d1d201a20032903c80c370000201a41186a200341c80c6a41186a290300370000201a41106a200341c80c6a41106a290300370000201a41086a200341c80c6a41086a290300370000201aad428080808080048410032202290018210620022d0017210d20022d0016210e20022f0014210f20022d0013211020022d0012211120022f0010211220022d000f211320022d000e211420022f000c211520022d000b211620022d000a211720022f0008211820022d0007210520022d0006211920022f0004212020022d0003212120022d0002212220022f000021232002102f201a102f41c000102d2202450d1d2002200329039003370000200220063700382002200d3a00372002200e3a00362002200f3b0034200220103a0033200220113a0032200220123b0030200220133a002f200220143a002e200220153b002c200220163a002b200220173a002a200220183b0028200220053a0027200220193a0026200220203b0024200220213a0023200220223a0022200220233b00202002201b370018200220043a0017200220073a0016200220083b00142002200a3a00132002200b3a00122002200c3b0010200241086a20034190036a41086a290300370000200341c00036022c20032002360228200341f00e6a200341286a10ac012002102f0240200341840f6a280200450d0020032802800f102f0b2003418c0f6a10a401200341f00e6a41086a41043a0000200341f90e6a20032903c80c370000200341890f6a200341d80c6a290300370000200341910f6a200341e00c6a2903003700002003419c0f6a2009360200200341c80c6a41086a290300211b200341113a00f00e200341f00e6a41116a201b37000041c8e1ca004100200341f00e6a108c01200041043a00004101211a0c1b0b4101211a20022d00014101470d0420022d000041ff01710d04200141106a2903002128200141086a2903002127200141046a280200211a20032002411a6a2901003703880f2003200241026a2901003703f00e20032002410a6a2901003703f80e2003200241126a2901003703800f41a4e3c400ad4280808080c00084221b1001220229000021062002290008211c2002102f4188bec100ad4280808080a00184221d10012202290000211e2002290008211f2002102f2003201f3703a8032003201e3703a0032003201c370398032003200637039003200341e8096a20034190036a10b30120032802e8092204410820041b2102410321070240201a20032902ec09420020041b221e422088a722044f0d002002201a4106746a2208450d0020082903004201520d0002402002201a4106746a220841206a221a200341f00e6a460d00201a200341f00e6a412010ea060d010b200841086a221a2027370300201a2028370308410421070b201b1001221a290000211b201a2900082106201a102f201d1001221a290000211c201a290008211d201a102f2003201d3703a8032003201c3703a00320032006370398032003201b370390030240024020020d0020034190036aad428080808080048410050c010b200341e8096a2002200410ba0120034190036aad428080808080048420033502f00942208620032802e809221aad841004024020032802ec09450d00201a102f0b201ea7450d002002102f0b20004198123b0001200020073a0000200041086a410c360200200041046a41a5f4c0003602004101211a0c1a0b200141246a280200211a200341286a41186a200141196a290000370300200341286a41106a200141116a290000370300200341286a41086a200141096a29000037030020032001290001370328024020022d00000d0020022d00014101470d00200241196a2d00002104200241186a2d00002107200241166a2f01002108200241156a2d00002109200241146a2d0000210a200241126a2f0100210b200241116a2d0000210c200241106a2d0000210d2002410e6a2f0100210e2002410d6a2d0000210f2002410c6a2d000021102002410a6a2f01002111200241096a2d00002112200241086a2d00002113200241066a2f01002114200241056a2d00002115200241046a2d00002116200241026a2f0100211720032002411a6a2901003703880f200320043a00870f200320073a00860f200320083b01840f200320093a00830f2003200a3a00820f2003200b3b01800f2003200c3a00ff0e2003200d3a00fe0e2003200e3b01fc0e2003200f3a00fb0e200320103a00fa0e200320113b01f80e200320123a00f70e200320133a00f60e200320143b01f40e200320153a00f30e200320163a00f20e200320173b01f00e200341e8096a41186a2208200341286a41186a290300370300200341e8096a41106a2209200341286a41106a290300370300200341e8096a41086a220a200341286a41086a290300370300200320032903283703e80941a4e3c400ad4280808080c00084221b1001220229000021062002290008211c2002102f4188bec100ad4280808080a00184221d10012202290000211e2002290008211f2002102f2003201f3703a8032003201e3703a0032003201c370398032003200637039003200341c80c6a20034190036a10b30120032802c80c2204410820041b2102410321070240201a20032902cc0c420020041b221e422088a722044f0d002002201a4106746a220b450d00200b2903004201520d0020092f01002109200a2f0100210a20032d00ff09210b20032d00fe09210c20032f01fc09210d20032d00fb09210e20032d00fa09210f20032d00f709211020032d00f609211120032f01f409211220032d00f309211320032d00f209211420032d00ef09211520032d00ee09211620032f01ec09211720032d00eb09211820032d00ea09210520032f01e80921192003200829030022063703a8032003200b3a00a7032003200c3a00a6032003200d3b01a4032003200e3a00a3032003200f3a00a203200320093b01a003200320103a009f03200320113a009e03200320123b019c03200320133a009b03200320143a009a032003200a3b019803200320153a009703200320163a009603200320173b019403200320183a009303200320053a009203200320193b0190030240200341f00e6a2002201a4106746a220841206a221a460d00201a200341f00e6a412010ea060d010b201a20153a0007201a20163a0006201a20173b0104201a20183a0003201a20053a0002201a20193b01002008200a3b0128201a20103a000f201a20113a000e201a20123b010c201a20133a000b201a20143a000a200820093b0130201a200b3a0017201a200c3a0016201a200d3b0114201a200e3a0013201a200f3a001220082006370338410421070b201b1001221a290000211b201a2900082106201a102f201d1001221a290000211c201a290008211d201a102f2003201d3703a8032003201c3703a00320032006370398032003201b370390030240024020020d0020034190036aad428080808080048410050c010b200341c80c6a2002200410ba0120034190036aad428080808080048420033502d00c42208620032802c80c221aad841004024020032802cc0c450d00201a102f0b201ea7450d002002102f0b20004198123b0001200020073a0000200041086a410c360200200041046a41a5f4c0003602004101211a0c1a0b200041023a00004101211a0c190b4101211a024020022d00014101470d0020022d000041ff01710d00200141086a2903002128200141046a280200211a20032002411a6a2901003703880f2003200241026a2901003703f00e20032002410a6a2901003703f80e2003200241126a2901003703800f41a4e3c400ad4280808080c00084221b1001220229000021062002290008211c2002102f4188bec100ad4280808080a00184221d10012202290000211e2002290008211f2002102f2003201f3703a8032003201e3703a0032003201c370398032003200637039003200341e8096a20034190036a10b30120032802e8092204410820041b2102410321070240201a20032902ec09420020041b221e422088a722044f0d002002201a4106746a2208450d0020082903004201520d0002402002201a4106746a220841206a221a200341f00e6a460d00201a200341f00e6a412010ea060d010b20082028370318410421070b201b1001221a290000211b201a2900082106201a102f201d1001221a290000211c201a290008211d201a102f2003201d3703a8032003201c3703a00320032006370398032003201b370390030240024020020d0020034190036aad428080808080048410050c010b200341e8096a2002200410ba0120034190036aad428080808080048420033502f00942208620032802e809221aad841004024020032802ec09450d00201a102f0b201ea7450d002002102f0b20004198123b0001200020073a0000200041086a410c360200200041046a41a5f4c0003602004101211a0c190b200041023a00000c180b200141c0006a2903002106200141386a290300211c200141306a290300211b200141046a280200211a200341286a41206a200141286a280200360200200341286a41186a200141206a290200370300200341286a41106a200141186a290200370300200341286a41086a200141106a2902003703002003200141086a29020037032820022d00000d0720022d00014101470d07200241196a2d00002104200241186a2d00002107200241166a2f01002108200241156a2d00002109200241146a2d0000210a200241126a2f0100210b200241116a2d0000210c200241106a2d0000210d2002410e6a2f0100210e2002410d6a2d0000210f2002410c6a2d000021102002410a6a2f01002111200241096a2d00002112200241086a2d00002113200241066a2f01002114200241056a2d00002115200241046a2d00002116200241026a2f0100211720032002411a6a2901003703e002200320043a00df02200320073a00de02200320083b01dc02200320093a00db022003200a3a00da022003200b3b01d8022003200c3a00d7022003200d3a00d6022003200e3b01d4022003200f3a00d302200320103a00d202200320113b01d002200320123a00cf02200320133a00ce02200320143b01cc02200320153a00cb02200320163a00ca02200320173b01c802200341f00e6a41206a200341286a41206a280200360200200341f00e6a41186a200341286a41186a290300370300200341f00e6a41106a200341286a41106a290300370300200341f00e6a41086a200341286a41086a290300370300200320032903283703f00e200341e8096a200341f00e6a10bb0102400240024002400240024002400240024020032d00e8094101460d00200341e8096a41086a2d00002102200341f1096a2f00002104200341f3096a2d00002107200341f4096a2d00002108200341f5096a2f00002109200341f7096a2d0000210a200341e8096a41106a2d0000210b200341f9096a2f0000210c200341fb096a2d0000210d200341fc096a2d0000210e200341fd096a2f0000210f200341ff096a2d00002110200341e8096a41186a2d0000211120032f00e909211220032d00eb09211320032d00ec09211420032f00ed09211520032d00ef0921162003200341810a6a2900003703e00c200320113a00df0c200320103a00de0c2003200f3b01dc0c2003200e3a00db0c2003200d3a00da0c2003200c3b01d80c2003200b3a00d70c2003200a3a00d60c200320093b01d40c200320083a00d30c200320073a00d20c200320043b01d00c200320023a00cf0c200320163a00ce0c200320153b01cc0c200320143a00cb0c200320133a00ca0c200320123b01c80c201b4201510d0141a4e3c400ad4280808080c0008410012202290000211d2002290008211e2002102f4188bec100ad4280808080a0018410012202290000211f200229000821282002102f200320283702800a2003201f3702f8092003201e3702f0092003201d3702e809200341f00e6a200341e8096a10b30120032802f00e2202410820021b2104201a20032902f40e420020021b221d422088a74f0d032004201a4106746a2202450d0320022903004201520d0302402004201a4106746a41206a2202200341c8026a460d002002200341c8026a412010ea060d040b0240201da7450d002004102f0b41a4e3c400ad4280808080c0008410012202290000211d200341a80c6a41086a200241086a2900003703002003201d3703a80c2002102f41e8bcc100ad4280808080a0018410012202290000211d200341d00e6a41086a200241086a2900003703002003201d3703d00e2002102f4120102d2202450d22200220032903c80c370000200241186a200341c80c6a41186a290300370000200241106a200341c80c6a41106a290300370000200241086a200341c80c6a41086a2903003700002002ad428080808080048410032204290000211d200441086a290000211e200441106a290000211f20034190036a41186a2207200441186a29000037030020034190036a41106a2208201f37030020034190036a41086a201e3703002003201d370390032004102f2002102f41c000102d2202450d22200220032903a80c370000200241086a200341a80c6a41086a290300370000200220032903d00e370010200241186a200341d00e6a41086a2903003700002002200329039003370020200241286a20034190036a41086a290300370000200241306a2008290300370000200241386a2007290300370000200341f00e6a200210b401200341f00e6a41086a290300211d20032903f00e211e20032802800f210920032802840f210b20032802880f210a20034190036a2003418c0f6a41880210e8061a200341f0026a41086a22042003419d116a290000370300200341f0026a41106a200341a5116a290000370300200341f0026a41176a2207200341ac116a28000036000020032003290095113703f00220032d009411220c4102460d02200341c0076a20034190036a41880210e8061a20034198056a41176a2208200728000036000020034198056a41106a2207200341f0026a41106a29030037030020034198056a41086a220d2004290300370300200320032903f002370398052002102f200341b8056a200341c0076a41880210e8061a200341e8096a200341b8056a41880210e8061a200341c8096a41176a2008280000360000200341c8096a41106a2007290300370300200341c8096a41086a200d29030037030020032003290398053703c80941002102200a41014b0d04200a0e020605060b200041013a00004101211a0c1f0b20004183303b0100200041086a4110360200200041046a41b1f4c000360200200041026a41083a00004101211a0c1e0b2002102f200041086a410d360200200041046a4198f4c000360200200041026a410a3a000020004183303b01004101211a0c1d0b20004183303b0100200041086a410c360200200041046a41a5f4c000360200200041026a41093a0000201da7450d122004102f4101211a0c1c0b200a2104034020022004410176220720026a2208200920084105746a280200201a4b1b2102200420076b220441014b0d000b0b200920024105746a22042802002207201a460d01200a20022007201a496a2202490d0b0b0240200a200b470d00200b41016a2204200b490d16200b41017422072004200720044b1b220441ffffff3f712004470d16200441057422044100480d1602400240200b0d002004102d21090c010b2009200b4105742004103121090b2009450d1c2004410576210b0b200920024105746a220441206a2004200a20026b41057410e9061a200441186a2006370300200441106a201c3703002004201b3703082004201a360200200a41016a210a0c010b200a20024d0d0a200920024105746a220241086a2107024020022903084201520d00200341f00e6a200341c80c6a200341c8026a200241106a290300200241186a290300410010bc010b2007201b3703002004201a360200200241186a2006370300200241106a201c3703000b200341f00e6a41186a200a360200200341840f6a200b3602002003201e3703f00e200320093602800f2003201d3703f80e2003418c0f6a200341e8096a41880210e806210720034194116a200c3a000020034195116a20032903c8093700002003419d116a200341c8096a41086a290300370000200341a5116a200341c8096a41106a290300370000200341ac116a200341df096a28000036000041a4e3c400ad4280808080c0008410012202290000211b20034190036a41086a200241086a2900003703002003201b370390032002102f41e8bcc100ad4280808080a0018410012202290008211b20022d0007210820022d0006210920022f0004210a20022d0003210b20022d0002210c20022f0000210d2002102f4120102d2204450d19200420032903c80c370000200441186a200341c80c6a41186a290300370000200441106a200341c80c6a41106a290300370000200441086a200341c80c6a41086a2903003700002004ad428080808080048410032202290018210620022d0017210e20022d0016210f20022f0014211020022d0013211120022d0012211220022f0010211320022d000f211420022d000e211520022f000c211620022d000b211720022d000a211820022f0008210520022d0007211920022d0006212020022f0004212120022d0003212220022d0002212320022f000021242002102f2004102f41c000102d2202450d192002200329039003370000200220063700382002200e3a00372002200f3a0036200220103b0034200220113a0033200220123a0032200220133b0030200220143a002f200220153a002e200220163b002c200220173a002b200220183a002a200220053b0028200220193a0027200220203a0026200220213b0024200220223a0023200220233a0022200220243b00202002201b370018200220083a0017200220093a00162002200a3b00142002200b3a00132002200c3a00122002200d3b0010200241086a20034190036a41086a290300370000200341c0003602c407200320023602c007200341f00e6a200341c0076a10ac012002102f024020032802840f450d0020032802800f102f0b200710a401200341f00e6a41086a41053a0000200341f90e6a20032903c80c370000200341890f6a200341d80c6a290300370000200341910f6a200341e00c6a2903003700002003419c0f6a201a360200200341c80c6a41086a290300211b200341113a00f00e200341f00e6a41116a201b37000041c8e1ca004100200341f00e6a108c01200041043a00004101211a0c170b200341e8026a200141246a280200360200200341e0026a2001411c6a290200370300200341c8026a41106a200141146a290200370300200341d0026a2001410c6a2902003703002003200141046a2902003703c802200241036a2d0000210420022f000121070240024020022d00002208417f6a221a41024b0d000240201a0e03000102000b200241086a2802004101742002410c6a2802004d0d00200241046a28020041ff0171450d010b200720044110747220084100477241ff01710d0a0b200341f00e6a41206a200341c8026a41206a280200360200200341f00e6a41186a2204200341c8026a41186a290300370300200341f00e6a41106a200341c8026a41106a290300370300200341f00e6a41086a2207200341c8026a41086a290300370300200320032903c8023703f00e200341e8096a200341f00e6a10bb0120034190036a41086a2202200341f1096a29000037030020034190036a41106a2208200341f9096a29000037030020034190036a41186a2209200341810a6a290000370300200320032900e909370390034101211a02400240024020032d00e8094101460d00200341c8096a41186a2009290300370300200341c8096a41106a2008290300370300200341c8096a41086a200229030037030020032003290390033703c809200341f00e6a200341c8096a10b9012007290300211e20042802002125200341840f6a280200210820032903f00e211f20032802800f212441a4e3c400ad4280808080c000841001221a290000211b2002201a41086a2900003703002003201b37039003201a102f41e8bcc100ad4280808080a0018410012202290008211b20022d0007210420022d0006210720022f0004210920022d0003210a20022d0002210b20022f0000210c2002102f4120102d221a450d1b201a20032903c809370000201a41186a200341c8096a41186a290300370000201a41106a200341c8096a41106a290300370000201a41086a200341c8096a41086a290300370000201aad428080808080048410032202290018210620022d0017210d20022d0016210e20022f0014210f20022d0013211020022d0012211120022f0010211220022d000f211320022d000e211420022f000c211520022d000b211620022d000a211720022f0008211820022d0007210520022d0006211920022f0004212020022d0003212120022d0002212220022f000021232002102f201a102f41c000102d2202450d1b2002200329039003370000200220063700382002200d3a00372002200e3a00362002200f3b0034200220103a0033200220113a0032200220123b0030200220133a002f200220143a002e200220153b002c200220163a002b200220173a002a200220183b0028200220053a0027200220193a0026200220203b0024200220213a0023200220223a0022200220233b00202002201b370018200220043a0017200220073a0016200220093b00142002200a3a00132002200b3a00122002200c3b0010200241086a20034190036a41086a290300370000200341f00e6a200210b401024020032d009411220d410246221a0d002002ad428080808080088410050b200341f00e6a41086a290300211d20032903f00e211c20032802880f210420032802840f210920032802800f2107200341286a200341f00e6a411c6a41880210e8061a200341d00e6a41176a220a200341f00e6a41bc026a280000360000200341d00e6a41106a220b200341f00e6a41b5026a290000370300200341d00e6a41086a220c200341f00e6a41ad026a29000037030020032003290095113703d00e20034190036a200341286a41880210e8061a200341f0026a41176a220e200a280000360000200341f0026a41106a220a200b290300370300200341f0026a41086a220b200c290300370300200320032903d00e3703f0020240201a0d00200341c0076a20034190036a41880210e8061a20034198056a41176a221a200e28000036000020034198056a41106a220c200a29030037030020034198056a41086a220a200b290300370300200320032903f002370398052002102f200341b8056a200341c0076a41880210e8061a200341c80c6a200341b8056a41880210e8061a200341a80c6a41176a2202201a280000360000200341a80c6a41106a221a200c290300370300200341a80c6a41086a220b200a290300370300200341800a6a2004360200200341fc096a200936020020032003290398053703a80c2003201d3703f0092003201c3703e809200320073602f809200341e8096a411c6a200341c80c6a41880210e806210a2003418c0c6a200d3a00002003418d0c6a20032903a80c370000200341e8096a41ad026a200b290300370000200341e8096a41b5026a201a290300370000200341e8096a41bc026a2002280000360000024002402004410574221a0d004200211b420021060c010b200741106a21024200211b420021060340200241086a2903004200200241786a29030042015122041b20067c2002290300420020041b2206201b7c221b200654ad7c2106200241206a2102201a41606a221a0d000b0b201d201e7c201c201f7c221d201c54ad7c20067c2106201d201b7c221b201d54ad211c02402009450d002007102f0b2006201c7c2106200a10a40102402025450d002025410574211a202421020340200210b701200241206a2102201a41606a221a0d000b0b2003201b37032820032006370330201b20068450450d024200211c4200211d0c030b2002102f200041086a4108360200200041046a41fcf4c000360200200041026a41023a000020004183303b01002008450d0f2024102f4101211a0c190b200041013a00000c180b2003200341c8096a3602c80c200341e8096a200341c8096a200341286a200341c80c6a10bd01200341880a6a290300211d20032903800a211c20032903e8094201520d0020032903f009211e200341a80f6a200341e8096a41106a290300370300200341a00f6a201e370300200341f00e6a41086a41003a0000200341f90e6a20032903c809370000200341810f6a200341c8096a41086a290300370000200341890f6a200341c8096a41106a290300370000200341910f6a200341e0096a290300370000200341033a00f00e41c8e1ca004100200341f00e6a108c010b201c201d10be01200341a80f6a2006370300200341a00f6a201b370300200341f00e6a41086a41023a0000200341f90e6a20032903c809370000200341890f6a200341d8096a290300370000200341910f6a200341e0096a290300370000200341c8096a41086a290300211b200341113a00f00e200341f00e6a41116a201b37000041c8e1ca004100200341f00e6a108c0102402008450d002024102f0b200041043a00004101211a0c160b200041023a00000c150b4188bbca0020072009103b000b200041023a00004101211a0c130b419ae3c300411e41f8b4ca001039000b41c4c2ca002002200b103b000b41b8e3c300411d41f8b4ca001039000b200041023a00004101211a0c0f0b419ae3c300411e41f8b4ca001039000b41c4c2ca002002200a103b000b200041023a00004101211a0c0c0b0240200c450d00200a102f0b200e10a4010b201ba7450d002004102f4101211a0c0a0b4101211a0c090b02402004450d00200441c4006c2100200941286a210203400240200241786a2d00004101470d002002280200450d002002417c6a280200102f0b200241c4006a2102200041bc7f6a22000d000b0b410021004101211a2014450d092009102f0c090b2003201c20067d201b201d54ad7d221e3703c8072003201b201d7d221f3703c0072003200341b8056a3602c8094104211a0240201f201e84500d002003200341b8056a3602c8022003200341c8026a3602f80e2003200341c8096a3602f40e2003200341c0076a3602f00e200341c80c6a200341b8056a200341f00e6a109401024020032802c80c4101470d00200320032900cd0c3703f00e2003200341d40c6a2800003600f70e20032d00cc0c211a0c010b4104211a200341c80c6a41086a2903004201520d00200341c80c6a41106a290300211e20032802c8022104200341a80f6a200341c80c6a41186a290300370300200341a00f6a201e370300200341f00e6a41086a41003a0000200341f90e6a2004290000370000200341810f6a200441086a290000370000200341890f6a200441106a290000370000200341910f6a200441186a290000370000200341033a00f00e41c8e1ca004100200341f00e6a108c010b200320032903f00e37039003200320032800f70e36009703201a41ff01714104460d002000201a3a00002000200329039003370001200041086a2003280097033600000240200341fc096a280200450d0020032802f809102f0b200341840a6a10a4010c010b0240201d201b582006201c5820021b0d0020032006201c7d201d201b54ad7d22063703c8072003201d201b7d221b3703c007201b200684500d002003200341b8056a36029003200341c80c6a200341b8056a200341c0076a20034190036a10960120032903c80c4201520d0020032903d00c211b200341a80f6a200341c80c6a41106a290300370300200341a00f6a201b370300200341f00e6a41086a41003a0000200341f90e6a20032903b805370000200341810f6a200341b8056a41086a290300370000200341890f6a200341b8056a41106a290300370000200341910f6a200341d0056a290300370000200341033a00f00e41c8e1ca004100200341f00e6a108c010b200341f00e6a200341e8096a41c00210e8061a41a4e3c400ad4280808080c0008410012202290000211b20034190036a41086a200241086a2900003703002003201b370390032002102f41e8bcc100ad4280808080a0018410012202290008211b20022d0007210420022d0006210720022f0004210820022d0003210920022d0002210a20022f0000210b2002102f4120102d221a450d08201a20032903b805370000201a41186a200341b8056a41186a290300370000201a41106a200341b8056a41106a290300370000201a41086a200341b8056a41086a290300370000201aad428080808080048410032202290018210620022d0017210c20022d0016210d20022f0014210e20022d0013210f20022d0012211020022f0010211120022d000f211220022d000e211320022f000c211420022d000b211520022d000a211620022f0008211720022d0007211820022d0006210520022f0004211920022d0003212020022d0002212120022f000021222002102f201a102f41c000102d2202450d082002200329039003370000200220063700382002200c3a00372002200d3a00362002200e3b00342002200f3a0033200220103a0032200220113b0030200220123a002f200220133a002e200220143b002c200220153a002b200220163a002a200220173b0028200220183a0027200220053a0026200220193b0024200220203a0023200220213a0022200220223b00202002201b370018200220043a0017200220073a0016200220083b0014200220093a00132002200a3a00122002200b3b0010200241086a20034190036a41086a290300370000200341c0003602cc0c200320023602c80c200341f00e6a200341c80c6a10ac012002102f0240200341840f6a280200450d0020032802800f102f0b2003418c0f6a10a401200341f00e6a41086a41003a0000200341f90e6a20032903b805370000200341890f6a200341c8056a290300370000200341910f6a200341d0056a290300370000200341b8056a41086a290300211b200341113a00f00e200341f00e6a41116a201b37000041c8e1ca004100200341f00e6a108c01200041043a00000b410121004100211a0c060b2002201ba7470d02200241016a22042002490d00200241017422052004200520044b1b220441ffffff1f712004470d002004410674220441004e0d010b1038000b0240024020020d002004102d211a0c010b201a200241067420041031211a0b201a450d04201b428080808070832004410676ad84211b0b201b422088a7220421020b201a20024106746a2202420037030820024201370300200241106a4200370300200241186a4200370300200241386a2006370300200241376a20073a0000200241366a20083a0000200241346a20093b0100200241336a200a3a0000200241326a200b3a0000200241306a200c3b01002002412f6a200d3a00002002412e6a200e3a00002002412c6a200f3b01002002412b6a20103a00002002412a6a20113a0000200241286a20123b0100200241276a20133a0000200241266a20143a0000200241246a20153b0100200241236a20163a0000200241226a20173a0000200241206a20183b010041a4e3c400ad4280808080c000841001220229000021062002290008211c2002102f4188bec100ad4280808080a0018410012202290000211d2002290008211e2002102f2003201e3703a8032003201d3703a0032003201c37039803200320063703900302400240201a0d0020034190036aad428080808080048410050c010b201ba72102200341f00e6a201a200441016a10ba0120034190036aad428080808080048420033502f80e42208620032802f00e2207ad841004024020032802f40e450d002007102f0b2002450d00201a102f0b200341fc0e6a2004360200200341f80e6a41063a0000200341113a00f00e41c8e1ca004100200341f00e6a108c01200041043a00004101211a0b410121000b20012d0000417e6a220241014b0d0320020e020201020b1036000b2000450d0102402001410c6a2802002202450d00200241c4006c2100200141046a28020041286a210203400240200241786a2d00004101470d002002280200450d002002417c6a280200102f0b200241c4006a2102200041bc7f6a22000d000b0b200141086a280200450d012001280204102f0c010b201a450d00200141046a10a4010b200341b0116a24000bee09040a7f017e047f037e230041f0016b220224002002412036020c20022001360208200241106a2001ad42808080808004841002107302400240024002400240024020022802102203450d00200228021421042002200241186a280200360224200220033602202002200241206a10e60120022802000d0320022802042205200228022422064106762201200120054b1b22074106742201417f4c0d010240024020070d00410821080c010b2001102d2208450d030b02402005450d004100210903400240024002402006450d0020022006417f6a220a36022420022002280220220b41016a360220200b2d0000220141014b0d004200210c024002400240024020010e020100010b41002101200241003a00e8012006417f6a210a0340200a2001460d02200241c8016a20016a200b20016a220d41016a2d00003a00002002200d41026a3602202002200141016a220d3a00e801200d2101200d4120470d000b200241a8016a41086a220e200241c8016a41086a290300370300200241a8016a41106a220f200241c8016a41106a290300370300200241a8016a41186a2210200241c8016a41186a290300370300200220022903c8013703a8012002200d417f7320066a220136022420014110490d022002200b200d6a220141116a220b36022020022006200d6b220a416f6a220d360224200d4108490d02200141096a2900002111200141016a29000021122002200a41676a220a3602242002200141196a360220200b29000022134280025a0d02200241e8006a41086a200e290300220c370300200241c8006a41186a2010290300370300200241c8006a41106a200f290300370300200241c8006a41086a200c370300200220022903a801220c3703682002200c3703484201210c0b200941016a210d200241286a41186a220b200241c8006a41186a290300370300200241286a41106a2206200241c8006a41106a290300370300200241286a41086a220e200241c8006a41086a2903003703002002200229034837032820072009470d04024020094101742201200d2001200d4b1b220141ffffff1f712001470d002001410674220141004e0d040b1038000b20024100360224200141ff0171450d00200241003a00e8010b200241e8006a41086a20024188016a41086a290300370300200241e8006a41106a20024188016a41106a2903003703000b2007450d072008102f0c070b0240024020090d002001102d21080c010b200820094106742001103121080b2008450d05200141067621070b200820094106746a220120123703082001200c370300200141106a2011370300200141186a2013370300200141206a2002290328370300200141286a200e290300370300200141306a2006290300370300200141386a200b290300370300200a2106200d2109200d2005470d000b0b2008450d032000200736020420002008360200200041086a20053602000c040b200041003602000c040b103d000b1036000b200241003602b001200242013703a8012002410b36028c012002200241086a360288012002200241a8016a360268200241dc016a4101360200200242013702cc01200241b885c7003602c801200220024188016a3602d801200241e8006a41d8dbc100200241c8016a103c1a20023502b00142208620023502a801841008024020022802ac01450d0020022802a801102f0b200041003602000b2004450d002003102f0b200241f0016a24000bfe46070b7f017e017f017e017f027e3a7f230041f0076b22022400200241c00036021420022001360210200241186a2001ad42808080808008841002107302400240024002400240024020022802182203450d0041082104200228021c21052002200241186a41086a280200360294022002200336029002200220024190026a36028804200241086a20024188046a10eb04024020022802080d000240200228020c22064180012006418001491b2207450d002007410574102d2204450d030b0240024002402006450d00200241d0076a2108411021094100210a0340200241003602c807200241c8076a200228029002220b2002280294022201410420014104491b220c10e8061a20022001200c6b360294022002200b200c6a360290020240200141034b0d00200241c8076a200c6a41004104200c6b10e7061a0b20023502c807210d200241003a00c807024020022802940222012001410047220c490d00200241c8076a200228029002220b200c10e8061a20022001200c6b220e360294022002200b200c6a220c3602900202400240024020010d004200210f0c010b20022d00c807220141064b0d024200210f02400240024002400240024020010e0707000102030405070b200241c8076a200e4110200e4110491b22016a41004100411020016b220b2001410f4b1b10e7062110200241c8076a200c200110e8061a2002200e20016b360294022002200c20016a360290020240200e410f4b0d0020104100200b10e7061a0b2008290300211120022903c80721124201210f0c060b4202210f0c040b4203210f0c030b4204210f0c020b4205210f0c010b4206210f0b0b0240200a2007470d0020074101742201200741016a220c2001200c4b1b220141ffffff3f712001470d09200141057422014100480d090240024020070d002001102d21040c010b200420074105742001103121040b2004450d08200141057621070b200420096a2201201137030820012012370300200141786a200f370300200141706a200d370300200941206a21092006200a41016a220a470d010c030b0b20070d020c030b2004450d020b200241d0076a22094200370300200242003703c807200241c8076a200228029002220a2002280294022201411020014110491b220c10e8061a20022001200c6b360294022002200a200c6a3602900202402001410f4b0d00200241c8076a200c6a41004110200c6b10e7061a0b2009290300211220022903c8072111200220024188046a10eb04024020022802000d000240024020022802042213413820134138491b22140d004104210e0c010b201441c8006c102d220e450d050b024002402013450d00200241a0076a410c6a210a200241a0076a41017221084100210b41002109410021010340200241a0076a20024188046a10a8010240024020022d00a00722104106460d0020024198066a41026a2215200841026a2d00003a000020024188076a41086a2216200a41086a29020037030020024188076a41106a2217200a41106a290200370300200220082f00003b0198062002200a2902003703880720022802a407211820022802a8072119200241c8076a20024188046a10a80120022d00c8074106470d0120104101470d002019450d002018102f0b02402001450d00200e20096a210c200e21010340024020012d00004101470d00200141086a280200450d00200141046a280200102f0b0240200141246a2d00004101470d002001412c6a280200450d00200141286a280200102f0b200c200141c8006a2201470d000b0b20140d030c040b200141016a210c200241f8056a41026a221a20152d00003a0000200241f0066a41086a22152016290300370300200241f0066a41106a22162017290300370300200241c8066a41086a2217200241c8076a41086a290300370300200241c8066a41106a221b200241c8076a41106a290300370300200241c8066a41186a221c200241c8076a41186a290300370300200241c8066a41206a221d200241c8076a41206a280200360200200220022f0198063b01f80520022002290388073703f006200220022903c8073703c806024020012014470d00200b200c200b200c4b1bad42c8007e220f422088a70d09200fa722144100480d090240024020010d002014102d210e0c010b200e200920141031210e0b200e450d08201441c8006e21140b200e20096a220120103a0000200141086a2019360200200141046a2018360200200141036a201a2d00003a0000200141016a20022f01f8053b00002001410c6a20022903f006370200200141146a20152903003702002001411c6a2016290300370200200141346a201b2903003702002001412c6a20172903003702002001413c6a201c290300370200200141246a20022903c806370200200141c4006a201d280200360200200b41026a210b200941c8006a2109200c21012013200c470d000b0b200e450d01200241c8076a20024188046a10a8010240024002400240024020022d00c807220c4106460d0020024194066a41026a20022d00cb073a0000200241f8056a41086a200241dc076a2201290200370300200241f8056a41106a200241e4076a220b290200370300200220022f00c9073b0194062002200241d4076a22082902003703f805200241c8076a41086a2210280200210920022802cc07210a200241c8076a20024188046a10a80120022d00c80722194106460d01200241b4066a41026a20022d00cb073a000020024198066a41086a200129020037030020024198066a41106a200b290200370300200220022f00c9073b01b40620022008290200370398062010280200210b20022802cc072108200241c8076a20024188046a10a80120022d00c80722104106460d02200241b8066a41026a20022d00cb073a0000200241f0066a41086a200241dc076a2201290200370300200241f0066a41106a200241e4076a2216290200370300200220022f00c9073b01b8062002200241d4076a22172902003703f006200241c8076a41086a221a280200211820022802cc072115200241c8076a20024188046a10a80120022d00c807221b4106460d03200241bc066a41026a20022d00cb073a000020024188076a41086a200129020037030020024188076a41106a2016290200370300200220022f00c9073b01bc062002201729020037038807201a280200211620022802cc072117200241c8076a20024188046a10a80120022d00c807221a4106470d040240201b4101470d002016450d002017102f0b024020104101470d002018450d002015102f0b024020194101470d00200b450d002008102f0b0240200c4101470d002009450d00200a102f0b02402013450d00200e201341c8006c6a210c200e21010340024020012d00004101470d00200141086a280200450d00200141046a280200102f0b0240200141246a2d00004101470d002001412c6a280200450d00200141286a280200102f0b200141c8006a2201200c470d000b0b20140d050c060b02402013450d00200e201341c8006c6a210c200e21010340024020012d00004101470d00200141086a280200450d00200141046a280200102f0b0240200141246a2d00004101470d002001412c6a280200450d00200141286a280200102f0b200141c8006a2201200c470d000b0b20140d040c050b0240200c4101470d002009450d00200a102f0b02402013450d00200e201341c8006c6a210c200e21010340024020012d00004101470d00200141086a280200450d00200141046a280200102f0b0240200141246a2d00004101470d002001412c6a280200450d00200141286a280200102f0b200141c8006a2201200c470d000b0b20140d030c040b024020194101470d00200b450d002008102f0b0240200c4101470d002009450d00200a102f0b02402013450d00200e201341c8006c6a210c200e21010340024020012d00004101470d00200141086a280200450d00200141046a280200102f0b0240200141246a2d00004101470d002001412c6a280200450d00200141286a280200102f0b200141c8006a2201200c470d000b0b20140d020c030b024020104101470d002018450d002015102f0b024020194101470d00200b450d002008102f0b0240200c4101470d002009450d00200a102f0b02402013450d00200e201341c8006c6a210c200e21010340024020012d00004101470d00200141086a280200450d00200141046a280200102f0b0240200141246a2d00004101470d002001412c6a280200450d00200141286a280200102f0b200141c8006a2201200c470d000b0b20140d010c020b200241c2066a20022d00cb073a0000200241c8066a41086a200241dc076a290200370300200241d8066a200241e4076a290200370300200220022f00c9073b01c0062002200241d4076a2902003703c806200241c8076a41086a280200211d20022802cc07211e200241003a00c8070240024020022802940222012001410047221c490d00200241c8076a200228029002221f201c10e8061a20022001201c6b2220360294022002201f201c6a221c360290020240024020010d00410021010c010b20022d00c807222141014b0d0141002101024020210e020100010b200241003a00c807202020204100472201490d01200241c8076a201c200110e8061a2002202020016b2221360294022002201c20016a221c36029002024002402020450d0020022d00c807211f0c010b4100211f200241003a00c8070b200241003a00c807202120214100472201490d01200241c8076a201c200110e8061a2002202120016b2220360294022002201c20016a221c36029002024002402021450d0020022d00c80721220c010b41002122200241003a00c8070b200241003a00c807202020204100472201490d01200241c8076a201c200110e8061a2002202020016b2221360294022002201c20016a221c36029002024002402020450d0020022d00c80721230c010b41002123200241003a00c8070b200241003a00c807202120214100472201490d01200241c8076a201c200110e8061a2002202120016b2220360294022002201c20016a221c36029002024002402021450d0020022d00c80721240c010b41002124200241003a00c8070b200241003a00c807202020204100472201490d01200241c8076a201c200110e8061a2002202020016b2221360294022002201c20016a221c36029002024002402020450d0020022d00c80721250c010b41002125200241003a00c8070b200241003a00c807202120214100472201490d01200241c8076a201c200110e8061a2002202120016b2220360294022002201c20016a221c36029002024002402021450d0020022d00c80721260c010b41002126200241003a00c8070b200241003a00c807202020204100472201490d01200241c8076a201c200110e8061a2002202020016b2221360294022002201c20016a221c36029002024002402020450d0020022d00c80721270c010b41002127200241003a00c8070b200241003a00c807202120214100472201490d01200241c8076a201c200110e8061a2002202120016b2220360294022002201c20016a221c36029002024002402021450d0020022d00c80721280c010b41002128200241003a00c8070b200241003a00c807202020204100472201490d01200241c8076a201c200110e8061a2002202020016b2221360294022002201c20016a221c36029002024002402020450d0020022d00c80721290c010b41002129200241003a00c8070b200241003a00c807202120214100472201490d01200241c8076a201c200110e8061a2002202120016b2220360294022002201c20016a221c36029002024002402021450d0020022d00c807212a0c010b4100212a200241003a00c8070b200241003a00c807202020204100472201490d01200241c8076a201c200110e8061a2002202020016b2221360294022002201c20016a221c36029002024002402020450d0020022d00c807212b0c010b4100212b200241003a00c8070b200241003a00c807202120214100472201490d01200241c8076a201c200110e8061a2002202120016b2220360294022002201c20016a221c36029002024002402021450d0020022d00c807212c0c010b4100212c200241003a00c8070b200241003a00c807202020204100472201490d01200241c8076a201c200110e8061a2002202020016b2221360294022002201c20016a221c36029002024002402020450d0020022d00c807212d0c010b4100212d200241003a00c8070b200241003a00c807202120214100472201490d01200241c8076a201c200110e8061a2002202120016b2220360294022002201c20016a221c36029002024002402021450d0020022d00c807212e0c010b4100212e200241003a00c8070b200241003a00c807202020204100472201490d01200241c8076a201c200110e8061a2002202020016b2221360294022002201c20016a221c36029002024002402020450d0020022d00c807212f0c010b4100212f200241003a00c8070b200241003a00c807202120214100472201490d01200241c8076a201c200110e8061a2002202120016b2220360294022002201c20016a221c36029002024002402021450d0020022d00c80721300c010b41002130200241003a00c8070b200241003a00c807202020204100472201490d01200241c8076a201c200110e8061a2002202020016b2221360294022002201c20016a221c36029002024002402020450d0020022d00c80721310c010b41002131200241003a00c8070b200241003a00c807202120214100472201490d01200241c8076a201c200110e8061a2002202120016b2220360294022002201c20016a221c36029002024002402021450d0020022d00c80721320c010b41002132200241003a00c8070b200241003a00c807202020204100472201490d01200241c8076a201c200110e8061a2002202020016b2221360294022002201c20016a221c36029002024002402020450d0020022d00c80721330c010b41002133200241003a00c8070b200241003a00c807202120214100472201490d01200241c8076a201c200110e8061a2002202120016b360294022002201c20016a36029002024002402021450d0020022d00c80721340c010b41002134200241003a00c8070b410121010b200241c8076a20024188046a10a80120022d00c807221c4106460d01200241c4066a41026a223520022d00cb073a0000200241a0076a41086a2236200241dc076a290200370300200241a0076a41106a2237200241e4076a290200370300200220022f00c9073b01c4062002200241d4076a2902003703a007200241c8076a41086a2238280200212020022802cc072121200241c8076a20024188046a10a80120022d00c8074106470d090240201c4101470d002020450d002021102f0b0240201a4101470d00201d450d00201e102f0b0240201b4101470d002016450d002017102f0b024020104101470d002018450d002015102f0b024020194101470d00200b450d002008102f0b0240200c4101470d002009450d00200a102f0b02402013450d00200e201341c8006c6a210c200e21010340024020012d00004101470d00200141086a280200450d00200141046a280200102f0b0240200141246a2d00004101470d002001412c6a280200450d00200141286a280200102f0b200141c8006a2201200c470d000b0b20140d020c030b0240201a4101470d00201d450d00201e102f0b0240201b4101470d002016450d002017102f0b024020104101470d002018450d002015102f0b024020194101470d00200b450d002008102f0b0240200c4101470d002009450d00200a102f0b02402013450d00200e201341c8006c6a210c200e21010340024020012d00004101470d00200141086a280200450d00200141046a280200102f0b0240200141246a2d00004101470d002001412c6a280200450d00200141286a280200102f0b200141c8006a2201200c470d000b0b20140d010c020b0240201a4101470d00201d450d00201e102f0b0240201b4101470d002016450d002017102f0b024020104101470d002018450d002015102f0b024020194101470d00200b450d002008102f0b0240200c4101470d002009450d00200a102f0b02402013450d00200e201341c8006c6a210c200e21010340024020012d00004101470d00200141086a280200450d00200141046a280200102f0b0240200141246a2d00004101470d002001412c6a280200450d00200141286a280200102f0b200141c8006a2201200c470d000b0b2014450d010b200e102f0b2007450d010b2004102f0b200241003602a807200242013703a0072002410b3602cc062002200241106a3602c8062002200241a0076a36029004200241dc076a4101360200200242013702cc07200241b885c7003602c8072002200241c8066a3602d80720024190046a41d8dbc100200241c8076a103c1a20023502a80742208620023502a007841008024020022802a407450d0020022802a007102f0b410221010c040b200041023a00a4020c040b1036000b1038000b20024190046a41206a2239200241c8076a41206a28020036020020024190046a41186a223a200241c8076a41186a29030037030020024190046a41106a223b200241c8076a41106a29030037030020024190046a41086a223c2038290300370300200241f2056a41026a223820024194066a41026a2d00003a0000200241d8056a41086a223d200241f8056a41086a290300370300200241d8056a41106a223e200241f8056a41106a290300370300200220022903c80737039004200220022f0194063b01f205200220022903f8053703d805200241d4056a41026a223f200241b4066a41026a2d00003a0000200220022f01b4063b01d405200241b8056a41106a224020024198066a41106a290300370300200241b8056a41086a224120024198066a41086a29030037030020022002290398063703b805200241b4056a41026a2242200241b8066a41026a2d00003a0000200220022f01b8063b01b40520024198056a41106a2243200241f0066a41106a29030037030020024198056a41086a2244200241f0066a41086a290300370300200220022903f0063703980520024194056a41026a2245200241bc066a41026a2d00003a0000200220022f01bc063b019405200241f8046a41106a224620024188076a41106a290300370300200241f8046a41086a224720024188076a41086a29030037030020022002290388073703f804200241f4046a41026a2248200241c0066a41026a2d00003a0000200220022f01c0063b01f404200241d8046a41106a2249200241c8066a41106a290300370300200241d8046a41086a224a200241c8066a41086a290300370300200220022903c8063703d804200241d4046a41026a224b20352d00003a0000200220022f01c4063b01d404200241b8046a41106a22352037290300370300200241b8046a41086a22372036290300370300200220022903a0073703b8042002418c046a41026a2236200241f5056a41026a2d00003a0000200220022f00f5053b018c0420024184046a41026a224c20382d00003a0000200220022f01f2053b018404200241e8036a41106a2238203e290300370300200241e8036a41086a223e203d290300370300200220022903d8053703e803200241e4036a41026a223d203f2d00003a0000200220022f01d4053b01e403200241c8036a41106a223f2040290300370300200241c8036a41086a22402041290300370300200220022903b8053703c803200241c4036a41026a224120422d00003a0000200220022f01b4053b01c403200241a8036a41106a22422043290300370300200241a8036a41086a2243204429030037030020022002290398053703a803200241a4036a41026a224420452d00003a0000200220022f0194053b01a40320024188036a41106a2245204629030037030020024188036a41086a22462047290300370300200220022903f8043703880320024184036a41026a224720482d00003a0000200220022f01f4043b018403200241e8026a41106a22482049290300370300200241e8026a41086a2249204a290300370300200220022903d8043703e802200241e4026a41026a224a204b2d00003a0000200220022f01d4043b01e402200241c8026a41106a224b2035290300370300200241c8026a41086a22352037290300370300200220022903b8043703c802200241a0026a41206a22372039280200360200200241a0026a41186a2239203a290300370300200241a0026a41106a223a203b290300370300200241a0026a41086a223b203c29030037030020022002290390043703a0022002419c026a41026a223c20362d00003a0000200220022f018c043b019c022002418c026a41026a2236204c2d00003a0000200220022f0184043b018c02200241f0016a41106a224c2038290300370300200241f0016a41086a2238203e290300370300200220022903e8033703f001200241ec016a41026a223e203d2d00003a0000200220022f01e4033b01ec01200241d0016a41106a223d203f290300370300200241d0016a41086a223f2040290300370300200220022903c8033703d001200241cc016a41026a224020412d00003a0000200220022f01c4033b01cc01200241b0016a41106a22412042290300370300200241b0016a41086a22422043290300370300200220022903a8033703b001200241ac016a41026a224320442d00003a0000200220022f01a4033b01ac0120024190016a41106a2244204529030037030020024190016a41086a224520462903003703002002200229038803370390012002418c016a41026a224620472d00003a0000200220022f0184033b018c01200241f0006a41106a22472048290300370300200241f0006a41086a22482049290300370300200220022903e802370370200241ec006a41026a2249204a2d00003a0000200220022f01e4023b016c200241d0006a41106a224a204b290300370300200241d0006a41086a224b2035290300370300200220022903c802370350200241286a41206a22352037280200360200200241286a41186a22372039290300370300200241286a41106a2239203a290300370300200241286a41086a223a203b290300370300200220022903a002370328200241c8076a41026a223b203c2d00003a0000200220022f019c023b01c80720002012370308200020113703002000200c3a002820002013360224200020143602202000200e36021c200020063602182000200736021420002004360210200020093602302000200a36022c200020022f018c023b00292000412b6a20362d00003a0000200020022903f0013702342000413c6a2038290300370200200041c4006a204c290300370200200020193a004c200041cf006a203e2d00003a0000200020022f01ec013b004d2000200b36025420002008360250200041e8006a203d290300370200200041e0006a203f290300370200200020022903d001370258200020103a0070200041f3006a20402d00003a0000200020022f01cc013b007120002018360278200020153602742000418c016a204129030037020020004184016a2042290300370200200020022903b00137027c2000201b3a00940120004197016a20432d00003a0000200020022f01ac013b0095012000201636029c012000201736029801200041b0016a2044290300370200200041a8016a204529030037020020002002290390013702a0012000201a3a00b801200041bb016a20462d00003a0000200020022f018c013b00b9012000201d3602c0012000201e3602bc01200041d4016a2047290300370200200041cc016a2048290300370200200020022903703702c4012000201c3a00dc01200041df016a20492d00003a0000200020022f016c3b00dd01200020203602e401200020213602e001200041f8016a204a290300370200200041f0016a204b290300370200200020022903503702e801200041a0026a203528020036020020004198026a203729030037020020004190026a203929030037020020004188026a203a2903003702002000200229032837028002200041b8026a20343a0000200041b7026a20333a0000200041b6026a20323a0000200041b5026a20313a0000200041b4026a20303a0000200041b3026a202f3a0000200041b2026a202e3a0000200041b1026a202d3a0000200041b0026a202c3a0000200041af026a202b3a0000200041ae026a202a3a0000200041ad026a20293a0000200041ac026a20283a0000200041ab026a20273a0000200041aa026a20263a0000200041a9026a20253a0000200041a8026a20243a0000200041a7026a20233a0000200041a6026a20223a00002000201f3a00a502200041bb026a203b2d00003a0000200041b9026a20022f01c8073b00000b200020013a00a4022005450d002003102f0b200241f0076a24000b9d0102017f017e230041106b2206240002402002ad4220862001ad842004ad4220862003ad84200510292207422088a72204450d002007a722052d0000220341014b0d00410021010240024020030e020100010b2004417f6a4104490d0120052800012102410121010b2005102f2000200236020420002001360200200641106a24000f0b41f4c8ca00412e200641086a418ccaca0041a4c9ca00103e000bf80202037f037e230041e0006b22022400200241c00036020c20022001360208200241106a2001ad4280808080800884100210730240024020022802102201450d00200228021421032002200241106a41086a2802002204360224200220013602200240024020044110490d002002200441706a3602242002200141106a360220200141086a290000210520012900002106200241c8006a200241206a10980320022802482204450d00200229024c2107200020053703082000200637030020002007370214200020043602100c010b20024100360230200242013703282002410b36023c2002200241086a3602382002200241286a360244200241dc006a41013602002002420137024c200241b885c7003602482002200241386a360258200241c4006a41d8dbc100200241c8006a103c1a200235023042208620023502288410080240200228022c450d002002280228102f0b200041003602100b2003450d012001102f0c010b200041003602100b200241e0006a24000bbc0303027f037e027f230041c0006b2201240041a4e3c400ad4280808080c00084100122022900002103200141086a200241086a290000370300200120033703002002102f41a9f6c000ad4280808080f00084100122022900002103200141106a41086a200241086a290000370300200120033703102002102f02404120102d2202450d0020022000290000370000200241186a200041186a290000370000200241106a200041106a290000370000200241086a200041086a2900003700002002ad4280808080800484100322002900002103200041086a2900002104200041106a2900002105200141206a41186a2206200041186a290000370300200141206a41106a22072005370300200141206a41086a2004370300200120033703202000102f2002102f41c000102d2202450d00200220012903003700002002200129031037001020022001290320370020200241086a200141086a290300370000200241186a200141106a41086a290300370000200241286a200141206a41086a290300370000200241306a2007290300370000200241386a20062903003700002002ad428080808080088410052002102f200141c0006a24000f0b1036000ba90301077f230041106b22022400024002400240200041186a28020022034105744114722204417f4c0d002004102d2205450d01200520002903003700002005200041086a290300370008200241103602082002200436020420022005360200200028021021002003200210690240024020030d002002280208210420022802042106200228020021070c010b20034105742108200228020021072002280204210320022802082105034002400240200320056b4120490d00200541206a2104200321060c010b200541206a22042005490d05200341017422062004200620044b1b22064100480d050240024020030d002006102d21070c010b200720032006103121070b2007450d040b200720056a22052000290000370000200541186a200041186a290000370000200541106a200041106a290000370000200541086a200041086a2900003700002006210320042105200041206a2100200841606a22080d000b2002200636020420022004360208200220073602000b20012902002004ad4220862007ad84100402402006450d002007102f0b200241106a24000f0b103d000b1036000b1038000ba40503027f037e047f230041d0006b2202240041a4e3c400ad4280808080c00084100122032900002104200241106a41086a200341086a290000370300200220043703102003102f41d8bdc100ad4280808080e00084100122032900002104200241206a41086a200341086a290000370300200220043703202003102f02404120102d2203450d0020032001290000370000200341186a200141186a290000370000200341106a200141106a290000370000200341086a200141086a2900003700002003ad4280808080800484100322012900002104200141086a2900002105200141106a2900002106200241306a41186a2207200141186a290000370300200241306a41106a22082006370300200241306a41086a2005370300200220043703302001102f2003102f41c000102d2203450d00200320022903103700002003200229032037001020032002290330370020200341086a200241106a41086a2209290300370000200341186a200241206a41086a220a290300370000200341286a200241306a41086a2201290300370000200341306a2008290300370000200341386a2007290300370000200241306a200310b601024020022802402207450d002003ad428080808080088410050b200a20012903002204370300200241086a200241306a411c6a280200220836020020022002290330220537032020022002290244220637030020012004370300200920083602002002200537033020022006370310024002402007450d002000200229033037030020002007360210200041146a2002290310370200200041086a200241306a41086a2903003703002000411c6a200241106a41086a2802003602000c010b200042003703082000420037030020004201370310200041186a41003602000b2003102f200241d0006a24000f0b1036000b9a0202037f017e230041206b220324000240024020024106744104722204417f4c0d002004102d2205450d0120034100360208200320043602042003200536020020022003106902402002450d002002410674210203400240024020012903004201510d00200341003a00102003200341106a41011082010c010b200341013a00102003200341106a41011082012003200141206a4120108201200141086a29030021062003200141106a290300370318200320063703102003200341106a41101082012003200141186a2903003703102003200341106a41081082010b200141c0006a2101200241406a22020d000b0b20002003290300370200200041086a200341086a280200360200200341206a24000f0b103d000b1036000b850501067f230041c0016b22022400200241ce006a2203200141036a2d00003a0000200241306a41086a2204200141106a290200370300200241306a41106a2205200141186a290200370300200241306a41186a2206200141206a280200360200200220012f00013b014c2002200141086a290200370330200141046a280200210702400240024020012d00004101470d0020024188016a200710fe02200241d0006a200228028801220120022802900110ff0220024198016a41086a200241e7006a29000037030020024198016a41106a200241ef006a29000037030020024198016a41186a200241f7006a2d00003a0000200220022f01583b01b8012002200241da006a2d00003a00ba012002200229005f37039801024020022903504201520d00200241db006a2800002107200241086a41086a20024198016a41086a290300370300200241086a41106a20024198016a41106a290300370300200241086a41186a20024198016a41186a2d00003a0000200220022d00ba013a002a200220022f01b8013b01282002200229039801370308200228028c01450d022001102f0c020b0240200228028c01450d002001102f0b410121010c020b200241086a41086a2004290300370300200241086a41106a2005290300370300200241086a41186a20062d00003a0000200220022f014c3b012820022002290330370308200220032d00003a002a0b200041036a20022d002a3a0000200020022f01283b0001200041046a2007360000200041086a2002290308370000200041106a200241086a41086a290300370000200041186a200241086a41106a290300370000200041206a200241086a41186a2d00003a0000410021010b200020013a0000200241c0016a24000b96220c027f017e027f017e027f047e027f057e017f017e027f047e230041f0086b220624002006200437031020062003370308200620053a001f024002400240024002400240024002402003200484500d0020012002460d0220012002412010ea06450d02418de6c300ad4280808080e00084100122052900002103200641f0056a41086a200541086a290000370300200620033703f0052005102f41f0e8c600ad4280808080f00084100122052900002103200641f0066a41086a200541086a290000370300200620033703f0062005102f4120102d22050d010c070b20004100360200200041106a4200370300200041086a42003703000c050b20052002290000370000200541186a200241186a290000370000200541106a200241106a290000370000200541086a200241086a2900003700002005ad4280808080800484100322072900002103200741086a2900002104200741106a2900002108200641f0076a41186a2209200741186a290000370300200641f0076a41106a220a2008370300200641f0076a41086a2004370300200620033703f0072007102f2005102f41c000102d2205450d05200520062903f005370000200520062903f006370010200520062903f007370020200541086a200641f0056a41086a290300370000200541186a200641f0066a41086a290300370000200541286a200641f0076a41086a290300370000200541306a200a290300370000200541386a2009290300370000200641a0016a200510f60220062903a001210b42002104200642003703a001200641e8016a280200210c20062d00ec01210d02400240200b4201510d00200641f0016a41386a4200370300200641f0016a41306a4200370300200641f0016a41286a4200370300200641f0016a41206a420037030020064188026a420037030020064180026a4200370300200641f0016a41086a4200370300200642003703f00142002103420021084200210e0c010b200641a0016a41386a290300210f200641a0016a41306a2903002110200641a0016a41206a290300210e200641a0016a41186a2903002108200641a0016a41c0006a290300211120062903b001210320062903a8012104200641f0016a41206a200641a0016a41286a290300370300200641f0016a41286a2010370300200641f0016a41306a200f37030020064180026a20083703002006200e37038802200620113703a802200620043703f001200620033703f8010b200641f0016a41106a21090240427f200420087c2208200820045422072003200e7c2007ad7c220420035420042003511b22071b427f200420071b844200520d00200641f0056a41206a200941206a290300370300200641f0056a41186a200941186a290300370300200641f0056a41106a200941106a290300370300200641f0056a41086a200941086a290300370300200620092903003703f00541dbb4c600ad4280808080b00184210341838c1c21010c040b418de6c300ad4280808080e00084100122072900002103200641b8056a41086a200741086a290000370300200620033703b8052007102f41f0e8c600ad4280808080f00084100122072900002103200641b0046a41086a200741086a290000370300200620033703b0042007102f4120102d2207450d0520072001290000370000200741186a200141186a290000370000200741106a200141106a290000370000200741086a200141086a2900003700002007ad42808080808004841003220a2900002103200a41086a2900002104200a41106a2900002108200641f0076a41186a2212200a41186a290000370300200641f0076a41106a22132008370300200641f0076a41086a2004370300200620033703f007200a102f2007102f41c000102d2207450d05200720062903b805370000200720062903b004370010200720062903f007370020200741086a200641b8056a41086a290300370000200741186a200641b0046a41086a290300370000200741286a200641f0076a41086a290300370000200741306a2013290300370000200741386a2012290300370000200641b0046a200710f60220062903b004211142002103200642003703b004200641f8046a280200211220062d00fc0421130240024020114201510d0020064180056a41306a420037030020064180056a41286a420037030020064180056a41206a420037030020064198056a420037030020064190056a420037030020064180056a41086a42003703002006420037038005420021044200210e42002108420021140c010b200641b0046a41386a290300210f200641b0046a41306a2903002110200641b0046a41206a2903002104200641b0046a41186a2903002103200641b0046a41c0006a290300211420062903c004210820062903b804210e20064180056a41206a200641b0046a41286a29030037030020064180056a41286a201037030020064180056a41306a200f37030020064190056a200337030020062004370398052006200e3703800520062008370388050b200641086a41086a2903002210200420032006290308221556200420105620042010511b220a1b211620152003200a1b210f0240024020062d001f4101470d002009210a2006290380022217200f7c2218201754221920064188026a290300221a20167c2019ad7c2217201a542017201a511b450d010c030b200641f0016a210a20062903f0012217200f7c22182017542219200641f0016a41086a290300221a20167c2019ad7c2217201a542017201a511b0d020b200a2018370300200a201737030820064180056a41186a200420167d2003200f54ad7d37030020062003200f7d37039005200641b8056a41186a20064190056a220a41086a2903002217370300200641b8056a41206a2219200a41106a290300370300200641e0056a221b200a41186a290300370300200641e8056a221c200a41206a2903003703002006200a29030022183703c8052006200e3703b805200620083703c005427f200e20037c22032003200e54220a200820047c200aad7c220320085420032008511b220a1b427f2003200a1b84211a02400240427f200e20187c22032003200e54220a200820177c200aad7c220320085420032008511b220a1b2204428080e983b1de16544100427f2003200a1b2203501b0d00200641b8056a41106a2903002103201c2903002104201b29030021172019290300211820062903c005211d20062903b805211e4201211f20062903d00521200c010b4200211f02402004200384500d0020042003109a01200641a8086a2003370300200641a0086a2004370300200641f0076a41086a41013a0000200641f9076a200129000037000020064181086a200141086a29000037000020064189086a200141106a29000037000020064191086a200141186a290000370000200641033a00f00741c8e1ca004100200641f0076a108c010b0b2015200f542119201a50211b200641d8046a2018370300200641e0046a2017370300200641c0046a201d370300200641e8046a2004370300200641c8046a2003370300200620203703d004200620143703f0042006201e3703b8044100210a2006201341002011420151221c1b3a00fc04200620124100201c1b3602f8042006201f4201512212ad3703b0040240024020120d002007ad428080808080088410054101210a0c010b200641c0003602f407200620073602f007200641b8046a200641f0076a1090030b201020167d21032019ad2104201bad21162007102f02400240024020114201510d00200a0d004103210a200641f0066a21070c010b2011420152200a410173720d014104210a200641f0056a21070b200741046a200a3a0000200741003a0000200741056a20012900003700002007410d6a200141086a290000370000200741156a200141106a2900003700002007411d6a200141186a29000037000041c8e1ca0041002007108c010b200320047d21102015200f7d2103410021072016500d02200641a8086a2008370300200641a0086a200e37030041002107200641f0076a41086a41003a0000200641f9076a200129000037000020064181086a200141086a29000037000020064189086a200141106a29000037000020064191086a200141186a290000370000200641033a00f00741c8e1ca004100200641f0076a108c010c020b02402005450d00200641f0076a2001108d0220064188086a290300210b200629038008210820004100360200200041106a42002004200b7d2003200854ad7d220b200320087d2208200356200b200456200b2004511b22011b370300200041086a4200200820011b3703000c040b200620033703f005200620043703f805200620013602b003200641f0066a2001200641f0056a200641b0036a10960120064190076a29030021032006290388072104024020062903f0064201520d0020062903f8062108200641a8086a200641f0066a41106a290300370300200641a0086a2008370300200641f0076a41086a41003a0000200641f9076a200129000037000020064181086a200141086a29000037000020064189086a200141106a29000037000020064191086a200141186a290000370000200641033a00f00741c8e1ca004100200641f0076a108c010b200041106a2003370300200041086a2004370300200041003602000c030b2007102f4191ccc700ad4280808080800184210342002110410121070b200641f0016a41086a290300210420062903f001210820062903a802210e200641f0056a41206a220a200941206a290300370300200641f0056a41186a2212200941186a290300370300200641f0056a41106a2213200941106a290300370300200641f0056a41086a2219200941086a290300370300200620092903003703f00541838c08210120070d00200641f0066a41186a2019290300220f370300200641f0066a41206a201329030037030020064198076a22072012290300370300200641a0076a2209200a290300370300200620062903f005221137038007200620083703f006200620043703f80602400240427f200820117c2211201120085422012004200f7c2001ad7c220820045420082004511b22011b2204428080e983b1de16544100427f200820011b2208501b0d0020064180076a2903002104200929030021082007290300210f20064190076a290300211120062903f806211520062903f00621164201211720062903880721140c010b4200211702402004200884500d0020042008109a01200641a8086a2008370300200641a0086a2004370300200641f0076a41086a41013a0000200641f9076a200229000037000020064181086a200241086a29000037000020064189086a200241106a29000037000020064191086a200241186a290000370000200641033a00f00741c8e1ca004100200641f0076a108c010b0b200641c8016a2011370300200641d0016a200f370300200641b0016a2015370300200641d8016a2008370300200641b8016a2004370300200620143703c0012006200e3703e001200620163703a801410021012006200d4100200b42015122071b3a00ec012006200c410020071b3602e801200620174201512207ad3703a0010240024020070d002005ad42808080808008841005410121010c010b200641c0003602f407200620053602f007200641a8016a200641f0076a1090030b2005102f024002400240200b4201510d0020010d0041032105200641b0036a21010c010b200b4201522001410173720d0141042105200641b0026a21010b200141046a20053a0000200141003a0000200141056a20022900003700002001410d6a200241086a290000370000200141156a200241106a2900003700002001411d6a200241186a29000037000041c8e1ca0041002001108c010b200041106a2010370300200041086a2003370300200041003602000c010b2005102f200041086a200337020020002001360204200041013602000b200641f0086a24000f0b1036000ba80d08027f017e017f027e027f097e037f067e230041f0026b2204240020032802002105418de6c300ad4280808080e00084100122032900002106200441386a41086a200341086a290000370300200420063703382003102f41f0e8c600ad4280808080f00084100122032900002106200441f0006a41086a200341086a290000370300200420063703702003102f02404120102d2203450d0020032001290000370000200341186a200141186a290000370000200341106a200141106a290000370000200341086a200141086a2900003700002003ad4280808080800484100322072900002106200741086a2900002108200741106a2900002109200441f0016a41186a220a200741186a290000370300200441f0016a41106a220b2009370300200441f0016a41086a2008370300200420063703f0012007102f2003102f41c000102d2203450d002003200429033837000020032004290370370010200320042903f001370020200341086a200441386a41086a290300370000200341186a200441f0006a41086a290300370000200341286a200441f0016a41086a290300370000200341306a200b290300370000200341386a200a290300370000200441f0006a200310f6022004290370210c4200210920044200370370200441b8016a280200210720042d00bc01210a02400240200c4201510d00200441306a4200370300200441286a4200370300200441206a4200370300200441186a4200370300200441106a4200370300200441086a4200370300200442003703004200210d42002108420021064200210e0c010b200441f0006a41386a290300210f200441f0006a41306a2903002110200441f0006a41206a290300210d200441f0006a41186a2903002109200441f0006a41c0006a290300210e200429038001210620042903782108200441206a200441f0006a41286a290300370300200441286a2010370300200441306a200f370300200441106a20093703002004200d37031820042008370300200420063703080b200441186a200d200241086a2903002210200d20092002290300221156200d201056200d2010511b22021b22127d20092011200920021b220f54ad7d221337030020042009200f7d2214370310200441386a41186a2013370300200441386a41206a2215200441206a290300370300200441386a41286a2216200441286a290300370300200441386a41306a2217200441306a2903003703002004201437034820042008370338200420063703402011200f542102427f200820097c22092009200854220b2006200d7c200bad7c220920065420092006511b220b1b427f2009200b1b84211802400240427f200820147c22092009200854220b200620137c200bad7c220920065420092006511b220b1b220d428080e983b1de16544100427f2009200b1b2213501b0d00200441c8006a290300210d2017290300211320162903002114201529030021192004290340211a2004290338211b420121092004290350211c0c010b420021090240200d201384500d00200d2013109a01200441a8026a2013370300200441a0026a200d370300200441f0016a41086a41013a0000200441f9016a200529000037000020044181026a200541086a29000037000020044189026a200541106a29000037000020044191026a200541186a290000370000200441033a00f00141c8e1ca004100200441f0016a108c010b0b201020127d21102002ad211d201850210220044198016a2019370300200441a0016a201437030020044180016a201a370300200441a8016a201337030020044188016a200d3703002004201c370390012004200e3703b0012004201b3703782004200a4100200c42015122051b3a00bc0120042007410020051b3602b801200420094201512207ad3703700240024020070d002003ad428080808080088410050c010b200441c0003602f401200420033602f001200441f8006a200441f0016a1090030b2010201d7d210d2002ad21102011200f7d21112003102f20094201522103024002400240200c4201510d0020030d0041032107200441f0016a21030c010b200c4201522003410173720d0141042107200441f0006a21030b200341046a20073a0000200341003a0000200341056a20012900003700002003410d6a200141086a290000370000200341156a200141106a2900003700002003411d6a200141186a29000037000041c8e1ca0041002003108c010b2000200f3703182000200837030820002010370300200041306a200d370300200041286a2011370300200041206a2012370300200041106a2006370300200441f0026a24000f0b1036000be20508017f017e047f017e017f017e037f017e230041e0016b22022400200241186a20002001109b01200241186a41106a2903002101200229032021000240024020022903182203a7450d00200241e0006a41f4c7c40010b402200241e0006a2000200110b502200241f8006a2001370300200241e0006a41106a2000370300200241e8006a41063a00002002410c3a006041c8e1ca004100200241e0006a108c010c010b2003500d00200241e0006a41186a22044200370300200241e0006a41106a22054200370300200241e0006a41086a220642003703002002420037036041e7a2ca00ad42808080808001842203100122072900002108200241d0006a41086a2209200741086a290000370300200220083703502007102f200620092903003703002002200229035037036041ecb5c600ad4280808080d00184220810012207290000210a2009200741086a2900003703002002200a3703502007102f20052002290350220a370300200241306a41086a220b2006290300370300200241306a41106a220c200a370300200241306a41186a220d2009290300370300200220022903603703302002200241306a4120109c01200241106a290300210a2002290308210e200228020021072004420037030020054200370300200642003703002002420037036020031001220429000021032009200441086a290000370300200220033703502004102f200620092903003703002002200229035037036020081001220429000021032009200441086a290000370300200220033703502004102f200520022903502203370300200b2006290300370300200c2003370300200d20092903003703002002200229036037033020024200200a420020071b220320017d200e420020071b2201200054ad7d2208200120007d2200200156200820035620082003511b22091b37036820024200200020091b370360200241306aad4280808080800484200241e0006aad428080808080028410040b200241e0016a24000bb33103077f037e017f230041d0006b220624000240024002402002410c6a280200200241106a28020010092207417f460d00410c102d22080d010c020b10c001000b20082007360208200842818080801037020002400240024002404101450d002008410141016a3602004101417e460d00200841014102723602004104102d2209450d04200920083602002008280208210a4103102d220b450d04200b41026a41002d00d2bc4a3a0000200b41002f00d0bc4a3b00004106102d220c450d04200c41046a41002f009593463b0000200c410028009193463600004120102d2207450d042007200a36021c2007410136021820074286808080e0003702102007200c36020c20074283808080303702042007200b36020020082008280200417f6a220b3602000240200b0d002008280208100a20082008280204417f6a220b360204200b0d002008102f0b4103102d220b450d04200b41026a41002d00d2bc4a3a0000200b41002f00d0bc4a3b00004103102d220c450d04200c41026a41002d00d5bc4a3a0000200c41002f00d3bc4a3b00002007412041c00010312207450d042007410c36023c2007410036023820074283808080303702302007200c36022c20074283808080303702242007200b3602204103102d220b450d04200b41026a41002d00d2bc4a3a0000200b41002f00d0bc4a3b0000410f102d220c450d04200c41076a41002900b0944a370000200c41002900a9944a370000200741c00041800110312207450d042007410d36025c200741003602582007428f808080f0013702502007200c36024c20074283808080303702442007200b3602404103102d220b450d04200b41026a41002d00d2bc4a3a0000200b41002f00d0bc4a3b0000410f102d220c450d04200c41076a41002900bf944a370000200c41002900b8944a3700002007410e36027c200741003602782007428f808080f0013702702007200c36026c20074283808080303702642007200b3602604103102d220b450d04200b41026a41002d00d2bc4a3a0000200b41002f00d0bc4a3b00004108102d220c450d04200c42e5f0d1fbb5ac98b6ec00370000200741800141800210312207450d042007410f36029c012007410036029801200742888080808001370290012007200c36028c012007428380808030370284012007200b360280014103102d220b450d04200b41026a41002d00d2bc4a3a0000200b41002f00d0bc4a3b0000410f102d220c450d04200c41076a41002900d6944a370000200c41002900cf944a370000200741103602bc01200741003602b8012007428f808080f0013702b0012007200c3602ac0120074283808080303702a4012007200b3602a0014103102d220b450d04200b41026a41002d00d2bc4a3a0000200b41002f00d0bc4a3b0000410a102d220c450d04200c41086a41002f00e6944a3b0000200c41002900de944a370000200741113602dc01200741003602d8012007428a808080a0013702d0012007200c3602cc0120074283808080303702c4012007200b3602c0014103102d220b450d04200b41026a41002d00d2bc4a3a0000200b41002f00d0bc4a3b0000410a102d220c450d04200c41086a41002f00f0944a3b0000200c41002900e8944a370000200741123602fc01200741003602f8012007428a808080a0013702f0012007200c3602ec0120074283808080303702e4012007200b3602e0014103102d220b450d04200b41026a41002d00d2bc4a3a0000200b41002f00d0bc4a3b0000410b102d220c450d04200c41076a41002800f9944a360000200c41002900f2944a370000200741800241800410312207450d042007411336029c0220074100360298022007428b808080b001370290022007200c36028c022007428380808030370284022007200b360280024103102d220b450d04200b41026a41002d00d2bc4a3a0000200b41002f00d0bc4a3b0000410d102d220c450d04200c41056a4100290082954a370000200c41002900fd944a370000200741143602bc02200741003602b8022007428d808080d0013702b0022007200c3602ac0220074283808080303702a4022007200b3602a0024103102d220b450d04200b41026a41002d00d2bc4a3a0000200b41002f00d0bc4a3b0000410c102d220c450d04200c41086a4100280092954a360000200c410029008a954a370000200741153602dc02200741003602d8022007428c808080c0013702d0022007200c3602cc0220074283808080303702c4022007200b3602c0024103102d220b450d04200b41026a41002d00d2bc4a3a0000200b41002f00d0bc4a3b0000410b102d220c450d04200c41076a410028009d954a360000200c4100290096954a370000200741163602fc02200741003602f8022007428b808080b0013702f0022007200c3602ec0220074283808080303702e4022007200b3602e0024103102d220c450d04200c41026a41002d00d2bc4a3a0000200c41002f00d0bc4a3b00004115102d220b450d04200b410d6a41002900ae954a370000200b41086a41002900a9954a370000200b41002900a1954a3700002007411736029c03200741003602980320074295808080d002370290032007200b36028c032007428380808030370284032007200c360280034103102d220b450d04200b41026a41002d00d2bc4a3a0000200b41002f00d0bc4a3b0000410a102d220c450d04200c41086a41002f00be954a3b0000200c41002900b6954a370000200741183602bc03200741003602b8032007428a808080a0013702b0032007200c3602ac0320074283808080303702a4032007200b3602a0034103102d220b450d04200b41026a41002d00d2bc4a3a0000200b41002f00d0bc4a3b00004107102d220c450d04200c41036a41002800c3954a360000200c41002800c0954a360000200741193602dc03200741003602d80320074287808080f0003702d0032007200c3602cc0320074283808080303702c4032007200b3602c0034103102d220c450d04200c41026a41002d00d2bc4a3a0000200c41002f00d0bc4a3b00004113102d220b450d04200b410f6a41002800d6954a360000200b41086a41002900cf954a370000200b41002900c7954a3700002007411a3602fc03200741003602f80320074293808080b0023702f0032007200b3602ec0320074283808080303702e4032007200c3602e0034103102d220c450d04200c41026a41002d00d2bc4a3a0000200c41002f00d0bc4a3b00004115102d220b450d04200b410d6a41002900e7954a370000200b41086a41002900e2954a370000200b41002900da954a37000020074180044180081031220a450d04200a411b36029c04200a410036029804200a4295808080d00237029004200a200b36028c04200a42838080803037028404200a200c360280044103102d220b450d04200b41026a41002d00d2bc4a3a0000200b41002f00d0bc4a3b00004111102d2207450d04200741106a41002d00ff954a3a0000200741086a41002900f7954a370000200741002900ef954a370000200a411c3602bc04200a41003602b804200a429180808090023702b004200a20073602ac04200a4283808080303702a404200a200b3602a0044103102d2207450d04200741026a41002d00d2bc4a3a0000200741002f00d0bc4a3b0000410e102d220b450d04200b41066a4100290086964a370000200b4100290080964a370000200a411d3602dc04200a41003602d804200a428e808080e0013702d004200a200b3602cc04200a4283808080303702c404200a20073602c0044103102d2207450d04200741026a41002d00d2bc4a3a0000200741002f00d0bc4a3b00004110102d220b450d04200b41086a4100290096964a370000200b410029008e964a370000200a411e3602fc04200a41003602f804200a429080808080023702f004200a200b3602ec04200a4283808080303702e404200a20073602e0044103102d2207450d04200741026a41002d00d2bc4a3a0000200741002f00d0bc4a3b00004110102d220b450d04200b41086a41002900a6964a370000200b410029009e964a370000200a411f36029c05200a410036029805200a4290808080800237029005200a200b36028c05200a42838080803037028405200a2007360280054103102d220b450d04200b41026a41002d00d2bc4a3a0000200b41002f00d0bc4a3b00004111102d2207450d04200741106a41002d00be964a3a0000200741086a41002900b6964a370000200741002900ae964a370000200a41203602bc05200a41003602b805200a429180808090023702b005200a20073602ac05200a4283808080303702a405200a200b3602a0054103102d220b450d04200b41026a41002d00d2bc4a3a0000200b41002f00d0bc4a3b00004111102d2207450d04200741106a41002d00cf964a3a0000200741086a41002900c7964a370000200741002900bf964a370000200a41213602dc05200a41003602d805200a429180808090023702d005200a20073602cc05200a4283808080303702c405200a200b3602c0054103102d220b450d04200b41026a41002d00d2bc4a3a0000200b41002f00d0bc4a3b00004116102d2207450d042007410e6a41002900de964a370000200741086a41002900d8964a370000200741002900d0964a370000200a41223602fc05200a41003602f805200a4296808080e0023702f005200a20073602ec05200a4283808080303702e405200a200b3602e0054103102d220b450d04200b41026a41002d00d2bc4a3a0000200b41002f00d0bc4a3b00004112102d2207450d04200741106a41002f00f6964a3b0000200741086a41002900ee964a370000200741002900e6964a370000200a412336029c06200a410036029806200a4292808080a00237029006200a200736028c06200a42838080803037028406200a200b360280064103102d2207450d04200741026a41002d00d2bc4a3a0000200741002f00d0bc4a3b0000410b102d220b450d04200b41076a41002800ff964a360000200b41002900f8964a370000200a41243602bc06200a41003602b806200a428b808080b0013702b006200a200b3602ac06200a4283808080303702a406200a20073602a0064103102d2207450d04200741026a41002d00d2bc4a3a0000200741002f00d0bc4a3b00004110102d220b450d04200b41086a410029008b974a370000200b4100290083974a370000200a41253602dc06200a41003602d806200a429080808080023702d006200a200b3602cc06200a4283808080303702c406200a20073602c0064103102d220b450d04200b41026a41002d00d2bc4a3a0000200b41002f00d0bc4a3b00004117102d2207450d042007410f6a41002900a2974a370000200741086a410029009b974a37000020074100290093974a370000200a41263602fc06200a41003602f806200a4297808080f0023702f006200a20073602ec06200a4283808080303702e406200a200b3602e006200641086a410c6a200441086a2802003602002006200336020820064100360224200620053602202006200836021c2006200429020037020c20062001280200360218200241146a350200210d2002411c6a350200210e418407102d2207450d04200642840737024420062007360240411c200641c0006a1069200a4180076a2105200a2108034020082802002104200841086a2802002207200641c0006a1069024002402006280244220c2006280248220b6b2007490d002006280240210c0c010b200b20076a2201200b490d03200c41017422032001200320014b1b22014100480d0302400240200c0d002001102d210c0c010b2006280240200c20011031210c0b200c450d06200620013602442006200c3602400b2006200b20076a360248200c200b6a2004200710e8061a2008410c6a2802002103200841146a280200220c200641c0006a1069024002402006280244220b200628024822016b200c490d00200628024021070c010b2001200c6a22072001490d03200b41017422042007200420074b1b22044100480d0302400240200b0d002004102d21070c010b2006280240200b2004103121070b2007450d0620062004360244200620073602402004210b0b20062001200c6a2204360248200720016a2003200c10e8061a02400240200841186a2802004101460d0002400240200b2004460d00200b210c0c010b200b41016a220c200b490d05200b4101742201200c2001200c4b1b220c4100480d0502400240200b0d00200c102d21070c010b2007200b200c103121070b2007450d082006200c360244200620073602400b2006200441016a220b360248200720046a41013a000020062008411c6a2802002204360238200641386a21010c010b02400240200b2004460d00200b210c0c010b200b41016a220c200b490d04200b4101742201200c2001200c4b1b220c4100480d0402400240200b0d00200c102d21070c010b2007200b200c103121070b2007450d072006200c360244200620073602400b2006200441016a220b360248200720046a41023a000020062008411c6a2802002204360238200641386a21010b0240200c200b6b41034b0d00200b41046a2204200b490d03200c41017422032004200320044b1b22044100480d0302400240200c0d002004102d21070c010b2007200c2004103121070b2007450d062006200436024420062007360240200128020021040b2006200b41046a3602482007200b6a2004360000200841206a22082005470d000b2006280244210402400240024002400240024002404127200e422086200d84200635024842208620062802402205ad84200641086a100b220341036a220741024b0d004100210c20070e03010002010b4104102d220c450d0a410021070340200920076a280200220828020041016a220b41014d0d072008200b360200200c20076a2008360200200741046a22074104470d000b02402004450d002005102f0b2002350204210d2002350200210e4104102d2208450d0a20064204370244200620083602404100200641c0006a10692006350248210f200628024421022006280240210b410a10332208450d0a2003200d422086200e84200f422086200bad842008410a200641086a100c41036a221041034b0d024101210120100e0404020203040b4102210c0b41012101024020040d000c080b2005102f0c070b41d5cfca00412841f8b4ca001039000b2006410936023c410121012006200841016a36023820082d0000221041014b0d01410421040240024020100e020100010b200641c0006a200641386a10dd01200628024022044104460d02200628024421050b410021010b2008102f2002450d03200b102f0c030b2008102f024020020d000c030b200b102f0c020b00000b1038000b2003100d200c210803402008280200220b200b280200417f6a36020002402008280200220b2802000d00200b280208100a2008280200220b200b280204417f6a3602042008280200220b2802040d00200b102f0b200841046a21082007417c6a22070d000b200c102f4102210c0b200641146a290200210d200641106a2802002108200628021c2107200628020c210b02400240024002400240024002400240024020062802244101460d0020010d04200441044b0d0320040e050203030301020b2006412c6a2802002104200641286a280200220c0d0541002101200041003a0004200041186a200d3e0200200041146a2008360200200041106a200b3602002000410c6a4128360200200041086a41c3f5c600360200410121030c060b2000200b36020420004100360200200041106a41003a00002000410c6a4100360200200041086a20083602000c030b2000200b36020420004100360200200041106a20053a00002000410c6a200d3e0200200041086a20083602000c020b200041003a000420004101360200200041186a200d3e0200200041146a2008360200200041106a200b3602002000410c6a4111360200200041086a41ebf5c6003602000c010b200041003a0004200da721040240200c0d00200041fcf5c60036020820004101360200200041186a2004360200200041146a2008360200200041106a200b3602002000410c6a41103602000c010b2000418cf6c60036020820004101360200200041186a2004360200200041146a2008360200200041106a200b3602002000410c6a41213602000b20072007280200417f6a220836020020080d022007280208100a20072007280204417f6a220836020420080d022007102f0c020b200641306a28020021012000200c36020441002103200041106a41003a00002000410c6a2001360200200041086a2004360200410121012008450d00200b102f0b2000200336020020072007280200417f6a2208360200024020080d002007280208100a20072007280204417f6a220836020420080d002007102f0b200c452001720d002004450d00200c102f0b4100210803400240200a20086a220741046a280200450d002007280200102f0b0240200741106a280200450d002007410c6a280200102f0b200841206a2208418007470d000b200a102f200928020022072007280200417f6a3602000240200928020022072802000d002007280208100a200928020022072007280204417f6a360204200928020022072802040d002007102f0b2009102f200641d0006a24000f0b1036000b120041c3c4c10041fc0041f8b4ca001039000b7201027f230041106b22042400024002402003450d002002280200450d010b4182bfc60041f40341f8c2c6001055000b2001280210210320012802182105200228020421022004410036020020042002360204200041054104200520032001411c6a200410f5041b360200200441106a24000bf80e03077f017e017f230041b00c6b2204240002400240024002400240024002402003450d0020022802000d0020034101460d0120022802100d0120034102460d0220022802200d0220034103460d0320022802300d0320022802042105200241246a2802002106200241346a280200210302400240200241146a2802002207450d004105210220012802002802182802402802b4012003490d010b200441186a4200370300200441106a4200370300200441086a42003703002004420037030020012802182108200128021021092004428180808080043703b00141052102200820092001411c6a220a200441b0016a10f5040d00024002402001280214280208200520044120101e41026a220841024b0d0020080e03020001020b41d5cfca0041284180d0ca001039000b0240024020070d004100210a0c010b2001280210210820012802182109200441013602b001200420033602b40120092008200a200441b0016a10f5040d012003417f4c0d060240024020030d004101210a02402001280214280208200641014100101e41026a220341024b0d004200210b20030e03040002040b41d5cfca0041284180d0ca001039000b20031033220a450d090240024020012802142802082006200a2003101e41026a220841024b0d002003ad210b20080e03010002010b41d5cfca0041284180d0ca001039000b200a102f0c020b200b422086200b84210b0b20012802002102200441206a41186a2203200441186a290300370300200441206a41106a2201200441106a290300370300200441206a41086a2208200441086a290300370300200420042903003703202002280218210502400240200a450d0020052802402802b401200b422088a74f0d0041ec90c7002102200ba7450d01200a102f0c010b200441c0006a41186a2003290300370300200441c0006a41106a2001290300370300200441c0006a41086a20082903003703002004200429032037034020052802180d072005417f36021820044198016a200541e8006a29000037030020044190016a200541e0006a29000037030020044188016a200541d8006a2900003703002004200529005037038001024002402005411c6a220c28020022094190bdc600460d00200541206a28020021060c010b41002106200441d0096a410041e00210e7061a200441b0016a410041a00810e7061a41880b102d2209450d09200941003b010620094100360200200941086a200441d0096a41e00210e8061a200941e8026a200441b0016a41a00810e8061a200541206a41003602002005200936021c0b024003400240024020092f010622070d00410021070c010b20074105742102200941086a21034100210103402002450d01024020044180016a2003412010ea0622080d00410121020c040b200241606a2102200141016a2101200341206a21032008417f4a0d000b2001417f6a21070b02402006450d002006417f6a2106200920074102746a41880b6a28020021090c010b0b200441e0006a41186a20044180016a41186a290300370300200441e0006a41106a20044180016a41106a290300370300200441e0006a41086a20044180016a41086a29030037030020042004290380013703604100210620072101410021020b0240024020020d00200441ec096a200441e0006a41086a290300370200200441d0096a41246a200441e0006a41106a290300370200200441fc096a200441e0006a41186a290300370200200420013602dc092004200c3602d809200420093602d409200420063602d009200420042903603702e4092004200541246a3602e009200441d0016a20042903a001370300200441d8016a200441a0016a41086a290300370300200441e4016a4200370200200442003703c801200442003703b00120044190bdc6003602e001200441003a00ec01200441ed016a200429008001370000200441f5016a20044180016a41086a290000370000200441fd016a20044180016a41106a29000037000020044185026a20044180016a41186a290000370000200441003a008d02200441d0096a200441b0016a10970221020c010b200441c8016a4200370300200441c4016a4190bdc600360200200441003602d001200441003602c001200442003703b80120044190bdc6003602b401200441003602b0012009200141e0006c6a41e8026a2102200441b0016a1090020b200441b0016a41186a200441c0006a41186a290300370300200441b0016a41106a200441c0006a41106a290300370300200441b0016a41086a200441c0006a41086a290300370300200420042903403703b0012004200b370284012004200a36028001200441d0096a200241306a200441b0016a20044180016a109802024020042802d009450d0020042802d4092202450d00200441d8096a280200450d002002102f0b2005200528021841016a360218410021020b4105410420021b21020b20002002360200200441b00c6a24000f0b4182bfc60041f40341f8c2c6001055000b4182bfc60041f40341f8c2c6001055000b4182bfc60041f40341f8c2c6001055000b4182bfc60041f40341f8c2c6001055000b103d000b41c3c5ca004110200441b0016a41dc90c70041e4c5ca00103e000b1036000be60201027f230041306b2204240002402003450d0020022802000d0020022802042105200441186a4200370300200441106a4200370300200441086a420037030020044200370300200128021821022001280210210320044281808080800437032002400240200220032001411c6a200441206a10f5040d00024002402001280214280208200520044120101e41026a220241024b0d0020020e03020001020b41d5cfca0041284180d0ca001039000b200441206a2001280200280218220241186a200241d0006a2002410c6a4100200228020c1b200410f604024002402004280220450d00200141046a21020240200141086a280200450d002002280200102f0b20022004290320370200200241086a200441206a41086a280200360200410021010c010b2001410c6a4100360200410121010b20004100360200200020013602040c010b200041053602000b200441306a24000f0b4182bfc60041f40341f8c2c6001055000b800d04037f017e077f047e230041a0016b22042400024002400240024002400240024002400240024002402003450d0020022802000d0020034101460d0120022802100d0120034102460d0220022802204101470d0220034103460d0320022802300d0320034104460d0420022802400d0420034105460d0520022802500d0520034106460d0620022802600d0620022802042105200241146a2802002106200241286a2903002107200241346a2802002108200241c4006a2802002109200241d4006a280200210a200241e4006a280200210b2001280210210220012802182103200441013602482004200636024c200320022001411c6a220c200441c8006a10f5040d092006417f4c0d070240024002400240024020060d004101210d02402001280214280208200541014100101e41026a220241024b0d00200141146a210520020e030f00020f0b41d5cfca0041284180d0ca001039000b20061033220d450d01024020012802142802082005200d2006101e41026a220241024b0d00200141146a210520020e030d00010d0b41d5cfca0041284180d0ca001039000b41002102200441003a0068024002400240034020062002460d01200441c8006a20026a200d20026a2d00003a00002004200241016a22033a00682003210220034120470d000b200441f0006a41186a2202200441c8006a41186a290300370300200441f0006a41106a2203200441c8006a41106a290300370300200441f0006a41086a220e200441c8006a41086a2903003703002004200429034837037002402006450d00200d102f0b200441086a41086a200e290300370300200441086a41106a2003290300370300200441086a41186a2002290300370300200420042903703703082001280210210220012802182103200441013602482004200936024c20032002200c200441c8006a10f5040d0f2009417f4c0d0d20090d022005280200280208200841014100101e41026a220241024b0d0120020e030f010f0f0b0240200241ff0171450d00200441003a00680b2006450d0e200d102f0c0e0b41d5cfca0041284180d0ca001039000b200910332202450d0002402005280200280208200820022009101e41026a220341024b0d0020030e03030002030b41d5cfca0041284180d0ca001039000b1036000b2009410f4d0d00200241086a290000210f200229000021102002102f2001280210210220012802182103200441013602482004200b36024c20032002200c200441c8006a10f5040d0a200141046a2203200b10f203024002402001280214280208200a20012802042001410c6a280200101e41026a220241024b0d0020020e030c00010c0b41d5cfca0041284180d0ca001039000b200128020c21052001410036020c200141086a28020021062001280204210d20014201370204200128021822022903082211211202400240024002402007500d002007211220112007540d010b2002201120127d37030820022903102107200441f0006a41186a200241186a29030037030020042012370378200420123703702004200737038001200128020041186a2802002109200441c8006a41186a200441086a41186a290300370300200441c8006a41106a200441086a41106a290300370300200441c8006a41086a200441086a41086a29030037030020042004290308370348200420053602980120042006360294012004200d36029001200441286a2009200441c8006a2010200f200441f0006a20044190016a1086024101210c0240024020042802284101460d00200441286a410472210d200441286a41106a2d00002105200441346a2802002109200441306a28020021064100210c0c010b200441286a41106a210d200441286a41186a28020021092004413c6a2802002106410021050b200d280200210d2002200429037820022903087c370308200141086a2802002102200c450d012002450d002003280200102f0b2003200d3602004180022105410021090c010b02402002450d002003280200102f0b2003200d3602000b2001200936020c200141086a200636020020004100360200200020053602040c0b0b2002102f0c090b4182bfc60041f40341f8c2c6001055000b4182bfc60041f40341f8c2c6001055000b4182bfc60041f40341f8c2c6001055000b4182bfc60041f40341f8c2c6001055000b4182bfc60041f40341f8c2c6001055000b4182bfc60041f40341f8c2c6001055000b4182bfc60041f40341f8c2c6001055000b103d000b200d102f0b200041053602000b200441a0016a24000bb60f04037f017e077f047e230041b0016b2204240002400240024002400240024002400240024002400240024002402003450d0020022802000d0020034101460d0120022802100d0120034102460d0220022802204101470d0220034103460d0320022802300d0320034104460d0420022802400d0420034105460d0520022802500d0520034106460d0620022802600d0620022802042105200241146a2802002106200241286a2903002107200241346a2802002108200241c4006a2802002109200241d4006a280200210a200241e4006a280200210b2001280210210220012802182103200441013602782004200636027c200320022001411c6a220c200441f8006a10f5040d0b2006417f4c0d070240024020060d004101210d02402001280214280208200541014100101e41026a220241024b0d00200141146a210520020e030e00020e0b41d5cfca0041284180d0ca001039000b20061033220d450d09024020012802142802082005200d2006101e41026a220241024b0d00200141146a210520020e030c00010c0b41d5cfca0041284180d0ca001039000b41002102200441003a009801024002400240034020062002460d01200441f8006a20026a200d20026a2d00003a00002004200241016a22033a0098012003210220034120470d000b200441d8006a41186a2202200441f8006a41186a290300370300200441d8006a41106a2203200441f8006a41106a290300370300200441d8006a41086a220e200441f8006a41086a2903003703002004200429037837035802402006450d00200d102f0b200441086a200e290300370300200441106a2003290300370300200441186a2002290300370300200420042903583703002001280210210220012802182103200441013602782004200936027c20032002200c200441f8006a10f5040d0e2009417f4c0d0a20090d022005280200280208200841014100101e41026a220241024b0d0120020e030e010e0e0b0240200241ff0171450d00200441003a0098010b2006450d0d200d102f0c0d0b41d5cfca0041284180d0ca001039000b200910332202450d080240024002402005280200280208200820022009101e41026a220341024b0d0020030e03020001020b41d5cfca0041284180d0ca001039000b2009410f4d0d00200241086a290000210f200229000021102002102f2001280210210220012802182103200441013602782004200b36027c20032002200c200441f8006a10f5040d0c200141046a220d200b10f203024002402001280214280208200a20012802042001410c6a280200101e41026a220241024b0d0020020e030e00010e0b41d5cfca0041284180d0ca001039000b2001410c6a2202280200210520024100360200200141086a28020021032001280204210620014201370204200128021822022903082211211202400240024002402007500d002007211220112007540d010b2002201120127d37030820022903102107200441d8006a41186a200241186a290300370300200420123703602004201237035820042007370368200128020041186a2802002109200420053602282004200336022420042006360220200441f8006a20092010200f200441d8006a2004200441206a109e02410121050240024020042802784101460d00200441206a41086a200441f8006a41186a290300370300200441206a41106a20044198016a2802003602002004200441f8006a41106a290300370320200441a8016a2d00002108200441a0016a280200210c2004419c016a280200210920044184016a280200210a200441f8006a41086a280200210341002105200428027c21060c010b200441f8006a41186a280200210a2004418c016a280200210320044188016a2802002106410021080b2002200429036020022903087c370308200441c0006a41086a2202200441206a41086a290300370300200441c0006a41106a220b200441206a41106a280200360200200420042903203703402005450d01200141086a280200450d00200d280200102f0b200120063602042001410c6a4100360200200141086a200336020041800221020c010b200441f8006a41106a200b280200360200200441f8006a41086a2002290300370300200420042903403703780240200141086a280200450d00200d280200102f0b200120093602044100210d2001410c6a4100360200200141086a200c360200200841ff017122020d000240200c411f4b0d00200c410174220d4120200d41204b1b220d4100480d0c02400240200c0d00200d102d21090c010b2009200c200d103121090b2009450d0b20012009360204200141086a200d3602002001410c6a280200210d0b2001410c6a200d41206a3602002009200d6a2201200a36000820012003360004200120063600002001200429037837000c200141146a20044180016a2903003700002001411c6a20044188016a2802003600000b20004100360200200020023602040c0d0b2002102f0c0b0b4182bfc60041f40341f8c2c6001055000b4182bfc60041f40341f8c2c6001055000b4182bfc60041f40341f8c2c6001055000b4182bfc60041f40341f8c2c6001055000b4182bfc60041f40341f8c2c6001055000b4182bfc60041f40341f8c2c6001055000b4182bfc60041f40341f8c2c6001055000b103d000b1036000b1038000b200d102f0b200041053602000b200441b0016a24000b830301047f230041106b22042400024002402003450d0020022802000d0020034101460d0120022802100d0120022802042105200241146a2802002102200128021021032001280218210620044103360200200420023602040240200620032001411c6a2207200410f5040d0020012802102103200128021821062004410136020020042002360204200620032007200410f5040d00200141046a200210f203024002402001280214280208200520012802042001410c6a280200101e41026a220241024b0d0020020e03020001020b41d5cfca0041284180d0ca001039000b200128020c21022001410036020c200141086a280200210320012802042106200142013702040240200128021c450d00200141206a2802002207450d00200141246a280200450d002007102f0b2001410136021c200141286a2002360200200141246a2003360200200141206a20063602000b20004105360200200441106a24000f0b4182bfc60041f40341f8c2c6001055000b4182bfc60041f40341f8c2c6001055000bec0101037f410021042001410c6a4100360200200128020021050240024002400240200141086a28020022064120490d00200128020421060c010b200641017422044120200441204b1b22044100480d020240024020060d002004102d21060c010b200128020420062004103121060b2006450d0120012006360204200141086a20043602002001410c6a28020021040b2001410c6a200441206a360200200620046a220141186a200541386a290000370000200141106a200541306a290000370000200141086a200541286a29000037000020012005290020370000200041043602000f0b1036000b1038000bf20101037f410021042001410c6a4100360200200128020028021821050240024002400240200141086a28020022064120490d00200128020421060c010b200641017422044120200441204b1b22044100480d020240024020060d002004102d21060c010b200128020420062004103121060b2006450d0120012006360204200141086a20043602002001410c6a28020021040b2001410c6a200441206a360200200620046a220141186a200541e8006a290000370000200141106a200541e0006a290000370000200141086a200541d8006a29000037000020012005290050370000200041043602000f0b1036000b1038000bd10102027f027e410021042001410c6a41003602002001280218220541186a2903002106200529031021070240024002400240200141086a28020022054110490d00200128020421050c010b200541017422044110200441104b1b22044100480d020240024020050d002004102d21050c010b200128020420052004103121050b2005450d0120012005360204200141086a20043602002001410c6a28020021040b2001410c6a200441106a360200200520046a2201200637000820012007370000200041043602000f0b1036000b1038000bbe0103017f017e017f410021042001410c6a4100360200200128021829030821050240024002400240200141086a28020022064108490d00200128020421060c010b200641017422044108200441084b1b22044100480d020240024020060d002004102d21060c010b200128020420062004103121060b2006450d0120012006360204200141086a20043602002001410c6a28020021040b2001410c6a200441086a360200200620046a2005370000200041043602000f0b1036000b1038000bc704020b7f027e230041206b220424002001410c6a41003602000240024002402001280200280218220528021841016a220641004c0d00200541d0006a2107200520063602182005411c6a2108200541206a28020021090240024002400340024002402008280200220a2f0106220b0d004100210c0c010b200b4105742108200a41086a210d417f210c0340024020080d00200b210c0c020b200c41016a210c2007200d412010ea06220e450d03200841606a2108200d41206a210d200e417f4a0d000b0b2009450d022009417f6a2109200a200c4102746a41880b6a21080c000b0b200a200c41e0006c6a220841c5036a310000200841e8026a290300220f200f50220d1ba7450d004200200841f8026a290300200d1b210f4200200841f0026a290300200d1b21100c010b200441086a200541286a28020020072005412c6a28020028021c110300200441106a290300210f20052802182106200429030821100b20052006417f6a36021802400240200141086a280200220d2001410c6a28020022086b4110490d002001280204210d0c010b200841106a220c2008490d03200d4101742208200c2008200c4b1b22084100480d0302400240200d0d002008102d210d0c010b2001280204200d20081031210d0b200d450d022001200d360204200141086a20083602002001410c6a28020021080b2001410c6a200841106a360200200d20086a2208200f3700082008201037000020004104360200200441206a24000f0b41c6c4ca004118200441186a41cc90c70041f0c4ca00103e000b1036000b1038000bd10102027f027e410021042001410c6a41003602002001280200220541086a2903002106200529030021070240024002400240200141086a28020022054110490d00200128020421050c010b200541017422044110200441104b1b22044100480d020240024020050d002004102d21050c010b200128020420052004103121050b2005450d0120012005360204200141086a20043602002001410c6a28020021040b2001410c6a200441106a360200200520046a2201200637000820012007370000200041043602000f0b1036000b1038000bfd0401057f230041206b22042400024002400240024002402003450d0020022802000d0020034101460d0120022802100d01410521050240200241146a2802002203200128021022062802744b0d0020022802042107200128021821022004410136020020042003360204200220062001411c6a200410f5040d002003417f4c0d0302400240024020030d004101210602402001280214280208200741014100101e41026a220241024b0d0020020e03040002040b41d5cfca0041284180d0ca001039000b200310332206450d0602402001280214280208200720062003101e41026a220241024b0d0020020e03020001020b41d5cfca0041284180d0ca001039000b2001410c6a2205410036020020042006200310ac044120102d2202450d0520022004290300370000200241186a200441186a290300370000200241106a200441106a290300370000200241086a200441086a29030037000002400240200141086a2802002207200528020022056b4120490d00200128020421070c010b200541206a22082005490d07200741017422052008200520084b1b22054100480d070240024020070d002005102d21070c010b200128020420072005103121070b2007450d0620012007360204200141086a20053602002001410c6a28020021050b2001410c6a200541206a360200200720056a220141186a200241186a290000370000200141106a200241106a290000370000200141086a200241086a290000370000200120022900003700002002102f410421052003450d010b2006102f0b20002005360200200441206a24000f0b4182bfc60041f40341f8c2c6001055000b4182bfc60041f40341f8c2c6001055000b103d000b1036000b1038000bbe0103017f017e017f410021042001410c6a4100360200200128020029031021050240024002400240200141086a28020022064108490d00200128020421060c010b200641017422044108200441084b1b22044100480d020240024020060d002004102d21060c010b200128020420062004103121060b2006450d0120012006360204200141086a20043602002001410c6a28020021040b2001410c6a200441086a360200200620046a2005370000200041043602000f0b1036000b1038000bd90102027f027e410021042001410c6a4100360200200128020028021828024022054188016a290300210620052903800121070240024002400240200141086a28020022054110490d00200128020421050c010b200541017422044110200441104b1b22044100480d020240024020050d002004102d21050c010b200128020420052004103121050b2005450d0120012005360204200141086a20043602002001410c6a28020021040b2001410c6a200441106a360200200520046a2201200637000820012007370000200041043602000f0b1036000b1038000bd90102027f027e410021042001410c6a4100360200200128020028021828024022054198016a290300210620052903900121070240024002400240200141086a28020022054110490d00200128020421050c010b200541017422044110200441104b1b22044100480d020240024020050d002004102d21050c010b200128020420052004103121050b2005450d0120012005360204200141086a20043602002001410c6a28020021040b2001410c6a200441106a360200200520046a2201200637000820012007370000200041043602000f0b1036000b1038000bb70803047f047e017f230041f0096b22042400024002400240024002402003450d0020022802000d0020034101460d0120022802100d0120022802042105200241146a28020021022001280210210320012802182106200441013602b807200420023602bc07024002400240200620032001411c6a2207200441b8076a10f5040d002002417f4c0d0502400240024020020d004101210302402001280214280208200541014100101e41026a220641024b0d0020060e03040002040b41d5cfca0041284180d0ca001039000b200210332203450d0802402001280214280208200520032002101e41026a220641024b0d0020060e03020001020b41d5cfca0041284180d0ca001039000b2004200236022c20042003360228200441b8076a200441286a10b302024020042802b8072206411b460d0020044188056a200441b8076a41047241ac0210e8061a02402002450d002003102f0b200441d8026a20044188056a41ac0210e8061a20042006360228200441286a410472200441d8026a41ac0210e8061a200441003602c007200442013703b807200441286a200441b8076a10910120042802c0072103024020042802bc07450d0020042802b807102f0b02400240200128021822022903102208200241186a29030022098450450d00420021080c010b200441186a2003ad42004280c8afa025420010ed06200441086a2004290318220a4280a094a58d1d7c220b200441186a41086a290300200b200a54ad7c2008200910ee062004290308427f200441086a41086a290300501b21080b20012802102103200441043602b807200420083703c007200220032007200441b8076a10f504450d03200441286a108e01410521020c040b2002450d010b2003102f0b410521020c010b2001280200210220044188056a200441286a41b00210e8061a200441e0026a22032002280218220241d8006a290000370300200441e8026a2206200241e0006a290000370300200441f0026a2205200241e8006a290000370300200420022900503703d802200441bf076a20044188056a41b00210e8061a02402002413c6a2802002201200241386a280200470d00200141016a22072001490d062001410174220c2007200c20074b1bad42d8027e2208422088a70d062008a722074100480d060240024020010d002007102d21010c010b2002280234200141d8026c2007103121010b2001450d0520022001360234200241386a200741d8026e360200200228023c21010b2002280234200141d8026c6a220141013a0000200120042903d802370001200141096a2003290300370000200141116a2006290300370000200141196a2005290300370000200141216a200441b8076a41b70210e8061a2002200228023c41016a36023c410421020b20002002360200200441f0096a24000f0b4182bfc60041f40341f8c2c6001055000b4182bfc60041f40341f8c2c6001055000b103d000b1036000b1038000b8016040c7f027e047f017e230041a0036b22042400024002400240024002400240024002400240024002402003450d0020022802000d0020034101460d0120022802100d0120034102460d0220022802200d0220034103460d0320022802300d0320034104460d0420022802400d0420034105460d0520022802500d0520034106460d0620022802600d0620034107460d0720022802700d0720022802042105200241146a2802002106200241246a2802002107200241346a2802002108200241c4006a2802002109200241d4006a280200210a200241e4006a280200210b200241f4006a280200210c2001280210210220012802182103200441013602a801200420063602ac01024002400240024002400240024002400240200320022001411c6a220d200441a8016a10f5040d002006417f4c0d1102400240024020060d004101210e02402001280214280208200541014100101e41026a220241024b0d00200141146a210520020e03040002040b41d5cfca0041284180d0ca001039000b20061033220e450d14024020012802142802082005200e2006101e41026a220241024b0d00200141146a210520020e03020001020b41d5cfca0041284180d0ca001039000b41002102200441003a00c8010240034020062002460d01200441a8016a20026a200e20026a2d00003a00002004200241016a22033a00c8012003210220034120470d000b20044180036a41086a2202200441a8016a41086a29030037030020044180036a41106a2203200441a8016a41106a29030037030020044180036a41186a220f200441a8016a41186a290300370300200420042903a8013703800302402006450d00200e102f0b200441086a41086a2002290300370300200441086a41106a2003290300370300200441086a41186a200f29030037030020042004290380033703082001280210210220012802182103200441013602a801200420083602ac0120032002200d200441a8016a10f5040d072008417f4c0d1320080d04410121062005280200280208200741014100101e41026a220241024b0d0320020e03070305070b0240200241ff0171450d00200441003a00c8010b2006450d010b200e102f0b200441c8006a41186a20044180036a41186a290300370300200441c8006a41106a20044180036a41106a290300370300200441c8006a41086a20044180036a41086a2903003703002004200429038003370348410521020c070b41d5cfca0041284180d0ca001039000b200810332206450d0f02402005280200280208200720062008101e41026a220241024b0d0020020e03020001020b41d5cfca0041284180d0ca001039000b41002102200441003a00c8010240034020082002460d01200441a8016a20026a200620026a2d00003a00002004200241016a22033a00c8012003210220034120470d000b20044180036a41086a2202200441a8016a41086a29030037030020044180036a41106a2203200441a8016a41106a29030037030020044180036a41186a220e200441a8016a41186a290300370300200420042903a8013703800302402008450d002006102f0b200441286a41086a2002290300370300200441286a41106a2003290300370300200441286a41186a200e29030037030020042004290380033703282001280210210320012802182106200441013602a8012004200a3602ac014105210220062003200d200441a8016a10f5040d05200a417f4c0d0e200a0d042005280200280208200941014100101e41026a220341024b0d0320030e03050305050b0240200241ff0171450d00200441003a00c8010b2008450d010b2006102f0b410521020c020b41d5cfca0041284180d0ca001039000b200a10332203450d0a024002400240200528020028020820092003200a101e41026a220641024b0d0020060e03010002010b41d5cfca0041284180d0ca001039000b2003102f0c010b0240200a410f4b0d002003102f0c010b200341086a2900002110200329000021112003102f02400240200c0d004101210e41002106410021080c010b20044180036a41186a210320044180036a41106a210720044180036a41086a210a410021124100210241002106410021084101210e03402003420037030020074200370300200a42003703002004420037038003200128021821092001280210210f2004428180808080043703a801024002402009200f200d200441a8016a10f5040d00024002402005280200280208200b20026a220920044180036a4120101e41026a220f41024b0d00200f0e03020001020b41d5cfca0041284180d0ca001039000b200441a8016a41186a22132003290300370300200441a8016a41106a22142007290300370300200441a8016a41086a2215200a29030037030020042004290380033703a801024020062008470d002012200641016a2208201220084b1b220841ffffff3f712008470d10200841057422084100480d100240024020060d002008102d210e0c010b200e200220081031210e0b200e450d0f200841057621080b200e20026a220f20042903a801370000200f41186a2013290300370000200f41106a2014290300370000200f41086a2015290300370000200941206a20094f0d010b410521022008450d03200e102f0c030b201241026a2112200241206a2102200c200641016a2206470d000b0b20012802002802182103200441e8006a41086a200441086a41086a290300370300200441e8006a41106a2201200441086a41106a290300370300200441e8006a41186a2205200441086a41186a29030037030020044188016a41086a200341d8006a29000037030020044188016a41106a220d200341e0006a29000037030020044188016a41186a2207200341e8006a29000037030020042004290308370368200420032900503703880120044180036a41186a220a200441286a41186a29030037030020044180036a41106a2209200441286a41106a29030037030020044180036a41086a200441286a41086a290300370300200420042903283703800302402003413c6a2802002202200341386a280200470d00200241016a220c2002490d0c2002410174220b200c200b200c4b1bad42d8027e2216422088a70d0c2016a7220c4100480d0c0240024020020d00200c102d21020c010b2003280234200241d8026c200c103121020b2002450d0b20032002360234200341386a200c41d8026e360200200328023c21020b2003280234200241d8026c6a220241023a0000200220042903880137000120022004290368370021200241096a20044188016a41086a290300370000200241116a200d290300370000200241196a2007290300370000200241296a200441e8006a41086a290300370000200241316a2001290300370000200241396a20052903003700002002200e360064200220083600682002200636006c20022011370370200241f8006a20103703002002200429038003370041200241c9006a20044180036a41086a290300370000200241d1006a2009290300370000200241d9006a200a290300370000200220042f00483b0061200241e3006a200441c8006a41026a2d00003a000020024180016a200441a8016a41d80110e8061a2003200328023c41016a36023c410421020b20002002360200200441a0036a24000f0b4182bfc60041f40341f8c2c6001055000b4182bfc60041f40341f8c2c6001055000b4182bfc60041f40341f8c2c6001055000b4182bfc60041f40341f8c2c6001055000b4182bfc60041f40341f8c2c6001055000b4182bfc60041f40341f8c2c6001055000b4182bfc60041f40341f8c2c6001055000b4182bfc60041f40341f8c2c6001055000b103d000b1036000b1038000b16002000410036020020002001410c6a2802003602040ba50201067f230041106b220424000240024002402003450d0020022802000d0020034101460d0120022802100d0120034102460d0220022802200d024105210302402001410c6a2802002205200241146a2802002206490d00200520066b200241246a2802002205470d00200228020421072001280204210820012802182102200128021021092004410236020020042005360204200220092001411c6a200410f5040d000240024020012802142802082007200820066a2005101f41026a220241024b0d0020020e03020001020b41d5cfca00412841e4d0ca001039000b410421030b20002003360200200441106a24000f0b4182bfc60041f40341f8c2c6001055000b4182bfc60041f40341f8c2c6001055000b4182bfc60041f40341f8c2c6001055000bee0101047f230041106b22042400024002402003450d0020022802000d0020034101460d0120022802100d0120022802042105200241146a280200210220012802102106200128021821072004410136020020042002360204410521030240200720062001411c6a200410f5040d00200141046a200210f203024002402001280214280208200520012802042001410c6a280200101e41026a220141024b0d0020010e03020001020b41d5cfca0041284180d0ca001039000b410421030b20002003360200200441106a24000f0b4182bfc60041f40341f8c2c6001055000b4182bfc60041f40341f8c2c6001055000bef0903077f017e027f230041d0026b220424000240024002400240024002400240024002402003450d0020022802000d0020034101460d0120022802100d0120034102460d0220022802200d0220034103460d0320022802300d03200241246a2802002105200241346a2802002106024002400240200241146a2802002203450d00200228020421072001280210210820012802182109200441013602082004200336020c41052102200920082001411c6a200441086a10f5040d0b2003417f4c0d07200310332208450d08024002402001280214280208200720082003101e41026a220941024b0d0020090e03010003010b41d5cfca0041284180d0ca001039000b2008102f0c0b0b41012107410021094100210a0c010b200420033602dc01200420083602d801200441086a200441d8016a109803200429020c210b200428020821072008102f2007450d09200ba7210a2001280210280264200b422088a72209490d080b20072009410041202009676b10e003024020094102490d00200721022009210303402002200241206a2208412010ea06450d09200821022003417f6a220341024f0d000b0b2001280210210220012802182103200441013602082004200636020c200320022001411c6a2208200441086a10f5040d072006417f4c0d040240024020060d004101210c02402001280214280208200541014100101e41026a220241024b0d0020020e030a00020a0b41d5cfca0041284180d0ca001039000b20061033220c450d060240024020012802142802082005200c2006101e41026a220241024b0d0020020e03010002010b41d5cfca0041284180d0ca001039000b200c102f0c080b2001280210210220012802182103200441086a41086a20063602002004200936020c200441053602080240200320022008200441086a10f504450d002006450d08200c102f0c080b200441a8026a41086a2001280200280218220341d8006a290000370300200441b8026a2208200341e0006a290000370300200441c0026a2201200341e8006a290000370300200420032900503703a80202402003413c6a2802002202200341386a280200470d00200241016a22052002490d072002410174220d2005200d20054b1bad42d8027e220b422088a70d07200ba722054100480d070240024020020d002005102d21020c010b2003280234200241d8026c2005103121020b2002450d0620032002360234200341386a200541d8026e360200200328023c21020b2003280234200241d8026c6a220241003a0000200220042f00cd023b0001200241073a00102002200936000c2002200a36000820022007360004200220042903a802370011200241036a200441cd026a41026a2d00003a0000200241196a200441b0026a290300370000200241216a2008290300370000200241296a20012903003700002002200c360034200220063600382002200636003c200220042f00a5023b0031200241336a200441a5026a41026a2d00003a0000200241c0006a200441d8016a41c80010e8061a20024188016a200441086a41d00110e8061a2003200328023c41016a36023c410421020c080b4182bfc60041f40341f8c2c6001055000b4182bfc60041f40341f8c2c6001055000b4182bfc60041f40341f8c2c6001055000b4182bfc60041f40341f8c2c6001055000b103d000b1036000b1038000b41052102200a450d002007102f0b20002002360200200441d0026a24000bfe0903047f027e037f230041d00b6b22042400024002400240024002402003450d0020022802000d0020034101460d0120022802100d0120022802042105200241146a280200210220012802102106200128021821072004410136025020042002360254410521030240200720062001411c6a200441d0006a10f5040d002002417f4c0d03024020020d0002402001280214280208200541014100101e41026a220241024b0d0020020e03020002020b41d5cfca0041284180d0ca001039000b200210332206450d050240024002402001280214280208200520062002101e41026a220741024b0d0020070e03010002010b41d5cfca0041284180d0ca001039000b2006102f0c010b02402002410f4b0d002006102f0c010b200641086a2900002108200629000021092006102f2001280200280218220a2802180d04200a417f360218200441386a200a41e8006a290000370300200441306a200a41e0006a290000370300200441206a41086a200a41d8006a2900003703002004200a29005037032002400240200a411c6a220b28020022074190bdc600460d00200a41206a280200210c0c010b4100210c200441f0086a410041e00210e7061a200441d0006a410041a00810e7061a41880b102d2207450d06200741003b010620074100360200200741086a200441f0086a41e00210e8061a200741e8026a200441d0006a41a00810e8061a200a41206a4100360200200a200736021c0b024003400240024020072f010622050d00410021050c010b20054105742102200741086a21014100210303402002450d010240200441206a2001412010ea0622060d00410121020c040b200241606a2102200341016a2103200141206a21012006417f4a0d000b2003417f6a21050b0240200c450d00200c417f6a210c200720054102746a41880b6a28020021070c010b0b200441186a200441206a41186a290300370300200441106a200441206a41106a290300370300200441086a200441206a41086a290300370300200420042903203703004100210c20052103410021020b0240024020020d002004418c096a200441086a290300370200200441f0086a41246a200441106a2903003702002004419c096a200441186a290300370200200420033602fc082004200b3602f808200420073602f4082004200c3602f00820042004290300370284092004200a41246a36028009200441f0006a2004290340370300200441f8006a200441c0006a41086a29030037030020044184016a4200370200200442003703682004420037035020044190bdc60036028001200441003a008c012004418d016a200429002037000020044195016a200441206a41086a2900003700002004419d016a200441206a41106a290000370000200441a5016a200441206a41186a290000370000200441003a00ad01200441f0086a200441d0006a10970221020c010b200441e8006a4200370300200441e4006a4190bdc60036020020044100360270200441003602602004420037035820044190bdc600360254200441003602502007200341e0006c6a41e8026a2102200441d0006a1090020b200241286a2008370300200241206a200937030020024201370318200a200a28021841016a360218410421030b20002003360200200441d00b6a24000f0b4182bfc60041f40341f8c2c6001055000b4182bfc60041f40341f8c2c6001055000b103d000b41c3c5ca004110200441d0006a41dc90c70041e4c5ca00103e000b1036000b9f0203037f027e027f230041206b220424002001410c6a22054100360200200441086a2001280200280218220641186a200641d0006a10f704200441086a41106a290300210720042802082106200429031021080240024002400240200141086a2802002209200528020022056b4110490d00200128020421090c010b200541106a220a2005490d0220094101742205200a2005200a4b1b22054100480d020240024020090d002005102d21090c010b200128020420092005103121090b2009450d0120012009360204200141086a20053602002001410c6a28020021050b2001410c6a200541106a360200200920056a22012007427f20061b37000820012008427f20061b37000020004104360200200441206a24000f0b1036000b1038000bdb0201047f230041106b220424000240024002402003450d0020022802000d0020034101460d0120022802100d0120022802042105200241146a280200210220012802102106200128021821072004410136020020042002360204410521030240200720062001411c6a200410f5040d002002417f4c0d0302400240024020020d004101210602402001280214280208200541014100101e41026a220141024b0d0020010e03040002040b41d5cfca0041284180d0ca001039000b0240200210332206450d0002402001280214280208200520062002101e41026a220141024b0d0020010e03030002030b41d5cfca0041284180d0ca001039000b1036000b2004200620021066024020042802000d00200429020410080b410421032002450d010b2006102f0b20002003360200200441106a24000f0b4182bfc60041f40341f8c2c6001055000b4182bfc60041f40341f8c2c6001055000b103d000bba0101037f410021042001410c6a4100360200200128020028021c21050240024002400240200141086a28020022064104490d00200128020421060c010b200641017422044104200441044b1b22044100480d020240024020060d002004102d21060c010b200128020420062004103121060b2006450d0120012006360204200141086a20043602002001410c6a28020021040b2001410c6a200441046a360200200620046a2005360000200041043602000f0b1036000b1038000bab0302037f017e230041106b22042400024002402003450d0020022802000d0020034101460d0120022802100d0120022802042105200241146a28020021022001280210210320012802182106200441013602002004200236020402400240200620032001411c6a200410f5040d00200141046a2203200210f203024002402001280214280208200520012802042001410c6a280200101e41026a220241024b0d0020020e03020001020b41d5cfca0041284180d0ca001039000b200135020c21072001410036020c200141086a220628020021052001280204210220014201370204200420074220862002ad8410021073200628020021060240024020042802000d0002402006450d002003280200102f0b2001410036020c20012002360204200141086a2005360200410121010c010b02402006450d002003280200102f0b20032004290300370200200341086a200441086a280200360200410021012005450d002002102f0b20004100360200200020013602040c010b200041053602000b200441106a24000f0b4182bfc60041f40341f8c2c6001055000b4182bfc60041f40341f8c2c6001055000baa05020a7f017e230041c0006b220424002004200136020c2004200041c8e1ca0020011b3602082004200441086a10e60102400240024002400240024020042802000d0020042802042205200428020c4104762201200120054b1b22064104742201417f4c0d030240024020060d00410821070c010b2001102d2207450d050b024002402005450d00200441206a4104722108410021094100210a410021000340200441206a200441086a10dd01200441306a41086a220b200841086a280200360200200420082902003703302004280220220c4104460d02200041016a2101200441106a41086a220d200b28020036020020042004290330370310024020002006470d0020092001200920014b1b220b41ffffffff0071200b470d09200b410474220b4100480d090240024020000d00200b102d21070c010b2007200a200b103121070b2007450d08200b41047621060b2007200a6a2200200c360200200041046a20042903103702002000410c6a200d280200360200200941026a2109200a41106a210a2001210020052001470d000b0b2007450d01200441206a2002200720052003110400200428022021004101102d2201450d0520044281808080103702342004200136023020004105470d02200141013a00004201210e0c030b2006450d002007102f0b41a4dcc10041f000200441206a41f0dbc1004194ddc100103e000b200141003a000020014101410210312101024020004104470d002001450d03200141003a00012004428280808020370234200420013602304202210e0c010b2001450d02200141013a0001200442828080802037023420042001360230200441206a200441306a10e7012004350238210e200428023021010b2001ad422086200e84210e02402006450d002007102f0b200441c0006a2400200e0f0b103d000b1036000b1038000bd90202047f017e02400240024002400240024020012802042202450d00200128020022032d0000210420012002417f6a22053602042001200341016a360200200441034b0d0520040e0401020304010b200041043602000f0b024020054104490d00200041003602002003280001210420012002417b6a3602042001200341056a360200200020043602040f0b200041043602000f0b024020054108490d0020004101360200200329000121062001200241776a3602042001200341096a360200200041086a20063703000f0b200041043602000f0b024020054104490d00200041023602002003280001210420012002417b6a3602042001200341056a360200200020043602040f0b200041043602000f0b024020054108490d0020004103360200200329000121062001200241776a3602042001200341096a360200200041086a20063703000f0b200041043602000f0b200041043602000b130020004103360204200041c0c5c1003602000b13002000410c360204200041e8c7c1003602000b6301017f230041206b2202240020022000280200360204200241086a41106a200141106a290200370300200241086a41086a200141086a29020037030020022001290200370308200241046a41d8dbc100200241086a103c2101200241206a240020010b4d01017f230041206b22002400200041146a410136020020004201370204200041b4d8c9003602002000410436021c200041fcdbc9003602182000200041186a360210200041e8d8c9001043000bac0503047f017e017f230041e0006b220224000240024020012802004111460d00200041003a0000200041306a41013a0000200041286a4200370300200041206a4280808080c000370300200041186a4204370300200041106a427f370300200041086a42003703000c010b024002400240024002400240200141086a2d00000e06050402010004050b200141c8006a21030c020b200141d0006a21030c010b200141186a21030b200241306a41186a4200370300200241306a41106a22044200370300200241306a41086a220142003703002002420037033041aa97ca00ad42808080808001841001220529000021062001200541086a290000370300200220063703302005102f41b297ca00ad4280808080800184100122052900002106200241d0006a41086a2207200541086a290000370300200220063703502005102f200420022903502206370300200241106a41086a2001290300370300200241106a41106a2006370300200241106a41186a2007290300370300200220022903303703102002200241106a10e301024020032903004280ade20420022903087d4280ade20420022802001b560d00200041003a0000200041306a41013a0000200041286a4200370300200041206a4280808080c000370300200041186a4204370300200041106a427f370300200041086a42003703000c030b200041800c3b0001200041013a0000200041036a41003a00000c020b200041003a0000200041306a41013a0000200041286a4200370300200041206a4280808080c000370300200041186a4204370300200041106a427f370300200041086a42003703000c010b200241c4006a410136020020024201370234200241b4d8c9003602302002410436021420024180dcc1003602102002200241106a360240200241306a41e8d8c9001043000b200241e0006a24000b980204017f017e017f017e230041d0006b220224002002412036020420022001360200200241086a2001ad42808080808004841002107302400240200228020822010d00420021030c010b200228020c210402400240200241086a41086a2802004108490d0020012900002105420121030c010b20024100360220200242013703182002410b36022c200220023602282002200241186a360234200241cc006a41013602002002420137023c200241b885c7003602382002200241286a360248200241346a41d8dbc100200241386a103c1a200235022042208620023502188410080240200228021c450d002002280218102f0b420021030b2004450d002001102f0b2000200537030820002003370300200241d0006a24000b820303037f017e017f02402001450d00034020002802e40121002001417f6a22010d000b0b02402002450d0041002103034002400240200320002f01064f0d0041002104200021010c010b41002104034002400240024020004190bdc600460d00200028020022010d0141002103410021010c020b41edb3ca00412841f8b4ca001039000b200441016a210420002f010421030b2000102f20012100200320012f01064f0d000b0b200341016a210520012003410c6c6a220041e4006a2902002106200041e0006a28020021070240024020040d0020012100200521030c010b200120054102746a41e4016a2802002100410021032004417f6a2201450d00034020002802e40121002001417f6a22010d000b0b2007450d012002417f6a210202402006a7450d002007102f0b20020d000b0b0240024020004190bdc600460d00200028020021012000102f2001450d00034020014190bdc600460d02200128020021002001102f2000210120000d000b0b0f0b41edb3ca00412841f8b4ca001039000bf00401077f20022003106902402001450d00034020002802940321002001417f6a22010d000b0b0240024002402002450d00200341046a210441002105034002400240200520002f0106490d0041002106024003400240200028020022010d0041002107410021010c020b200641016a210620002f0104210720012100200720012f01064f0d000b0b200741016a2105024020060d00200121000c020b200120054102746a4194036a2802002100410021052006417f6a2206450d01034020002802940321002006417f6a22060d000c020b0b2000210120052107200541016a21050b0240024020042802002208200341086a220628020022096b4120490d00200328020021080c010b200941206a220a2009490d0420084101742209200a2009200a4b1b22094100480d040240024020080d002009102d21080c010b200328020020082009103121080b2008450d032003200836020020042009360200200628020021090b2006200941206a360200200820096a220941186a200120074105746a41086a220841186a290000370000200941106a200841106a290000370000200941086a200841086a29000037000020092008290000370000200120074102746a41e8026a28020021090240024020042802002207200628020022016b4104490d00200328020021070c010b200141046a22082001490d04200741017422012008200120084b1b22014100480d040240024020070d002001102d21070c010b200328020020072001103121070b2007450d032003200736020020042001360200200628020021010b2006200141046a360200200720016a20093600002002417f6a22020d000b0b0f0b1036000b1038000bcf0201067f0240024020012802042202450d00200128020022032d0000210420012002417f6a2205360204410121062001200341016a3602000240200441037122074103460d0002400240024020070e03000102000b20044102762107410021060c040b41012106024020050d000c040b20032d0001210520012002417e6a3602042001200341026a3602002005410874200472220141ffff0371418002490d03200141fcff03714102762107410021060c030b20054103490d01200341036a2d0000210620032f0001210720012002417c6a3602042001200341046a3602002007200641107472410874200472220141808004492106200141027621070c020b0240200441034d0d000c020b20054104490d012003280001210720012002417b6a3602042001200341056a36020020074180808080044921060c010b410121060b20002007360204200020063602000bba0a02037f017e02400240024002400240024020002802000e0400010203000b02400240200141046a280200200141086a2802002202460d00200128020021030c010b200241016a22032002490d05200241017422042003200420034b1b22044100480d050240024020020d002004102d21030c010b200128020020022004103121030b2003450d0420012003360200200141046a2004360200200141086a28020021020b200141086a2204200241016a360200200320026a41003a00002000280204210302400240200141046a2802002202200428020022006b4104490d00200128020021020c010b200041046a22042000490d05200241017422002004200020044b1b22004100480d050240024020020d002000102d21020c010b200128020020022000103121020b2002450d0420012002360200200141046a2000360200200141086a28020021000b200141086a200041046a360200200220006a20033600000f0b02400240200141046a280200200141086a2802002202460d00200128020021030c010b200241016a22032002490d04200241017422042003200420034b1b22044100480d040240024020020d002004102d21030c010b200128020020022004103121030b2003450d0320012003360200200141046a2004360200200141086a28020021020b200141086a2204200241016a360200200320026a41013a00002000290308210502400240200141046a2802002202200428020022006b4108490d00200128020021020c010b200041086a22032000490d04200241017422002003200020034b1b22004100480d040240024020020d002000102d21020c010b200128020020022000103121020b2002450d0320012002360200200141046a2000360200200141086a28020021000b200141086a200041086a360200200220006a20053700000f0b02400240200141046a280200200141086a2802002202460d00200128020021030c010b200241016a22032002490d03200241017422042003200420034b1b22044100480d030240024020020d002004102d21030c010b200128020020022004103121030b2003450d0220012003360200200141046a2004360200200141086a28020021020b200141086a2204200241016a360200200320026a41023a00002000280204210302400240200141046a2802002202200428020022006b4104490d00200128020021020c010b200041046a22042000490d03200241017422002004200020044b1b22004100480d030240024020020d002000102d21020c010b200128020020022000103121020b2002450d0220012002360200200141046a2000360200200141086a28020021000b200141086a200041046a360200200220006a20033600000f0b02400240200141046a280200200141086a2802002202460d00200128020021030c010b200241016a22032002490d02200241017422042003200420034b1b22044100480d020240024020020d002004102d21030c010b200128020020022004103121030b2003450d0120012003360200200141046a2004360200200141086a28020021020b200141086a2204200241016a360200200320026a41033a00002000290308210502400240200141046a2802002202200428020022006b4108490d00200128020021020c010b200041086a22032000490d02200241017422002003200020034b1b22004100480d020240024020020d002000102d21020c010b200128020020022000103121020b2002450d0120012002360200200141046a2000360200200141086a28020021000b200141086a200041086a360200200220006a20053700000f0b1036000b1038000bec0f05027f037e0d7f017e017f23004190016b2202240041aa97ca00ad4280808080800184100122032900002104200241106a41086a200341086a290000370300200220043703102003102f41cbcec100ad4280808080e00184100122032900002104200241206a41086a200341086a290000370300200220043703202003102f0240024002400240024002404120102d2203450d0020032001290000370000200341186a200141186a290000370000200341106a200141106a290000370000200341086a200141086a2900003700002003ad4280808080800484100322012900002104200141086a2900002105200141106a2900002106200241e8006a41186a2207200141186a290000370300200241e8006a41106a22082006370300200241e8006a41086a2005370300200220043703682001102f2003102f41c000102d2203450d00200320022903103700002003200229032037001020032002290368370020200341086a200241106a41086a2201290300370000200341186a200241206a41086a290300370000200341286a200241e8006a41086a290300370000200341306a2008290300370000200341386a2007290300370000200241c00036023420022003360230200241106a2003ad4280808080800884100210730240200228021022090d00410221010c060b2002280214210a20022001280200220736024c200220093602482007450d0320092d0000210120022007417f6a36024c2002200941016a360248200141014b0d03024002400240024020010e020001000b200241086a200241c8006a10e60120022802080d06200228024c220b200228020c2207490d062007417f4c0d040240024020070d00410121080c010b200710332208450d04200820022802482201200710e8061a2002200b20076b220b36024c2002200120076a3602480b2008450d06024002400240024002400240200b4104490d002002280248220c280000210d2002200b417c6a220e36024c2002200c41046a36024841002101200241003a008801417b210f02400340200e2001460d01200241e8006a20016a200c20016a221041046a2d00003a00002002200b200f6a36024c2002201041056a3602482002200141016a22113a008801200f417f6a210f2011210120114120470d000b2002200228006b360023200220022802683602202002200228022036025020022002280023360053200b20116b2201417c6a4110490d06200241f7006a2900002105200229006f2104200228007f210f200228008301211020022d008701210e2002200c20116a221241146a221336024820022001416c6a220c36024c200c4104490d042012410c6a2900002114201241046a29000021062013280000210c2002200141686a36024c2002201241186a2213360248200b41686a2011460d0520132d000021132002200141676a221536024c2002201241196a360248201341014b0d054100210b20130e020302030b0240200141ff0171450d00200241003a0088010b2007450d0c0c0b0b2007450d0b2008102f0c0b0b20154104490d02201241196a28000021112002200141636a36024c20022012411d6a3602484101210b0b2002200228005336006320022002280250360260200220022802603602382002200228006336003b200220022800593602402002200241dc006a28000036004341002101200721120c040b2007450d082008102f0c080b2007450d072008102f0c070b20070d050c060b41002101200241003a0088012007417f6a210d2007417e6a21070340200d2001460d02200241e8006a20016a200920016a220841016a2d00003a00002002200841026a3602482002200141016a22083a0088012002200736024c2007417f6a21072008210120084120470d000b2002200228006b3600232002200228026836022020022002280023360053200220022802203602502002200228025036026020022002280053360063200241f7006a2900002114200229006f2106200228007f2108200228008301211220022d008701210720022002280063360043200220022802603602402002200241dc006a28000036003b20022002280059360238410121010b2002200228004336005320022002280240360250200220022802383602602002200228003b3600630c050b200141ff0171450d03200241003a0088010c030b1036000b103d000b2008102f0b20024100360228200242013703202002410b3602542002200241306a3602502002200241206a360260200241fc006a41013602002002420137026c200241b885c7003602682002200241d0006a360278200241e0006a41d8dbc100200241e8006a103c1a2002350228422086200235022084100802402002280224450d002002280220102f0b410221010b200a450d002009102f0b200220022802503602682002200228005336006b20022002280260360220200220022800633600230240024020014102470d00200041023a00000c010b200020013a000020002002280268360001200041106a2014370000200041086a2006370000200041c3006a20053700002000413b6a2004370000200041046a200228006b360000200041306a20113600002000412c6a200b360000200041286a200c360000200041246a200d360000200041206a20073600002000411c6a2012360000200041186a2008360000200041346a2002280220360000200041376a2002280023360000200041cb006a200f360000200041cf006a2010360000200041d3006a200e3a00000b2003102f20024190016a24000b840603027f037e047f230041c0006b2202240041aa97ca00ad4280808080800184100122032900002104200241086a200341086a290000370300200220043703002003102f41cbcec100ad4280808080e00184100122032900002104200241106a41086a200341086a290000370300200220043703102003102f02404120102d2203450d0020032000290000370000200341186a200041186a290000370000200341106a200041106a290000370000200341086a200041086a2900003700002003ad4280808080800484100322002900002104200041086a2900002105200041106a2900002106200241206a41186a2207200041186a290000370300200241206a41106a22082006370300200241206a41086a2005370300200220043703202000102f2003102f41c000102d2203450d00200320022903003700002003200229031037001020032002290320370020200341086a200241086a290300370000200341186a200241106a41086a290300370000200341286a200241206a41086a290300370000200341306a2008290300370000200341386a2007290300370000200241003602282002420137032020012d000021074101102d21000240024020074101460d002000450d02200041003a0000200242818080801037022420022000360220200141086a200241206a10ea01200235022842208621042002280224452101200228022021000c010b2000450d01200041013a00002002428180808010370224200220003602204120102d2207450d0120072001290001370000200741186a2208200141196a290000370000200741106a2209200141116a290000370000200741086a220a200141096a29000037000020004101412110312200450d0120002007290000370001200041096a200a290000370000200041116a2009290000370000200041196a2008290000370000200242a18080809004370224200220003602202007102f410021014280808080900421040b2003ad428080808080088420042000ad841004024020010d002000102f0b2003102f200241c0006a24000f0b1036000bda0b02057f027e20002802102102200041186a2802002203200110690240024002400240200141046a2802002204200141086a28020022056b2003490d00200128020021040c010b200520036a22062005490d02200441017422052006200520064b1b22054100480d020240024020040d002005102d21040c010b200128020020042005103121040b2004450d0120012004360200200141046a2005360200200141086a28020021050b200141086a2206200520036a360200200420056a2002200310e8061a200028021c210402400240200141046a2802002205200628020022036b4104490d00200128020021050c010b200341046a22022003490d02200541017422032002200320024b1b22034100480d020240024020050d002003102d21050c010b200128020020052003103121050b2005450d0120012005360200200141046a2003360200200141086a28020021030b200141086a2202200341046a360200200520036a20043600004120102d2203450d002003200029002c370000200341186a200041c4006a290000370000200341106a2000413c6a290000370000200341086a200041346a29000037000002400240200141046a2802002204200228020022056b4120490d00200128020021040c010b200541206a22022005490d02200441017422052002200520024b1b22054100480d020240024020040d002005102d21040c010b200128020020042005103121040b2004450d0120012004360200200141046a2005360200200141086a28020021050b200141086a2202200541206a360200200420056a220541186a200341186a290000370000200541106a200341106a290000370000200541086a200341086a290000370000200520032900003700002003102f200041086a29030021072000290300210802400240200141046a2802002205200228020022036b4110490d00200128020021050c010b200341106a22042003490d02200541017422032004200320044b1b22034100480d020240024020050d002003102d21050c010b200128020020052003103121050b2005450d0120012005360200200141046a2003360200200141086a28020021030b200141086a2204200341106a360200200520036a22032007370008200320083700002000280220210202400240200141046a2802002205200428020022036b4104490d00200128020021050c010b200341046a22042003490d02200541017422032004200320044b1b22034100480d020240024020050d002003102d21050c010b200128020020052003103121050b2005450d0120012005360200200141046a2003360200200141086a28020021030b200141086a2204200341046a360200200520036a2002360000024020002802244101460d0002400240200141046a28020020042802002200460d00200128020021030c010b200041016a22032000490d03200041017422052003200520034b1b22054100480d030240024020000d002005102d21030c010b200128020020002005103121030b2003450d0220012003360200200141046a2005360200200141086a28020021000b200141086a200041016a360200200320006a41003a00000f0b02400240200141046a28020020042802002203460d00200128020021050c010b200341016a22052003490d02200341017422042005200420054b1b22044100480d020240024020030d002004102d21050c010b200128020020032004103121050b2005450d0120012005360200200141046a2004360200200141086a28020021030b200141086a2204200341016a360200200520036a41013a00002000280228210502400240200141046a2802002203200428020022006b4104490d00200128020021030c010b200041046a22042000490d02200341017422002004200020044b1b22004100480d020240024020030d002000102d21030c010b200128020020032000103121030b2003450d0120012003360200200141046a2000360200200141086a28020021000b200141086a200041046a360200200320006a20053600000f0b1036000b1038000ba00603027f037e057f230041c0006b2202240041aa97ca00ad4280808080800184100122032900002104200241086a200341086a290000370300200220043703002003102f41cbcec100ad4280808080e00184100122032900002104200241106a41086a200341086a290000370300200220043703102003102f02404120102d2203450d0020032000290000370000200341186a200041186a290000370000200341106a200041106a290000370000200341086a200041086a2900003700002003ad4280808080800484100322002900002104200041086a2900002105200041106a2900002106200241206a41186a2207200041186a290000370300200241206a41106a22082006370300200241206a41086a2005370300200220043703202000102f2003102f41c000102d2203450d00200320022903003700002003200229031037001020032002290320370020200341086a200241086a290300370000200341186a200241106a41086a290300370000200341286a200241206a41086a290300370000200341306a2008290300370000200341386a2007290300370000200241003602282002420137032020012d000021084101102d21000240024020084101460d002000450d02200041003a0000200242818080801037022420022000360220200141086a200241206a10ea01200235022842208621042002280224452107200228022021000c010b2000450d01200041013a00002002428180808010370224200220003602204120102d2207450d0120072001290001370000200741186a2209200141196a290000370000200741106a220a200141116a290000370000200741086a220b200141096a29000037000020004101412110312200450d0120002007290000370001200041096a200b290000370000200041116a200a290000370000200041196a2009290000370000200242a18080809004370224200220003602202007102f410021074280808080900421040b2003ad428080808080088420042000ad841004024020070d002000102f0b2003102f024020080d002001411c6a280200450d00200141186a280200102f0b200241c0006a24000f0b1036000bbc0303027f037e027f230041c0006b2201240041aa97ca00ad4280808080800184100122022900002103200141086a200241086a290000370300200120033703002002102f41cbcec100ad4280808080e00184100122022900002103200141106a41086a200241086a290000370300200120033703102002102f02404120102d2202450d0020022000290000370000200241186a200041186a290000370000200241106a200041106a290000370000200241086a200041086a2900003700002002ad4280808080800484100322002900002103200041086a2900002104200041106a2900002105200141206a41186a2206200041186a290000370300200141206a41106a22072005370300200141206a41086a2004370300200120033703202000102f2002102f41c000102d2202450d00200220012903003700002002200129031037001020022001290320370020200241086a200141086a290300370000200241186a200141106a41086a290300370000200241286a200141206a41086a290300370000200241306a2007290300370000200241386a20062903003700002002ad428080808080088410052002102f200141c0006a24000f0b1036000bab0502077f047e230041b0036b22032400200341186a200141186a290000370300200341106a200141106a290000370300200341086a200141086a29000037030020032001290000370300024002400240200028020022044190bdc600460d00200028020421050c010b41002105200341d0006a410041e00210e7061a200341c8006a22014100360200200341c0006a22064200370300200341206a41186a4200370300200341206a41106a4200370300200341206a41086a420037030020034200370320419403102d2204450d01200441003b010620044100360200200441086a200341d0006a41e00210e8061a20044190036a200128020036020020044188036a200629030037020020044180036a200341386a290300370200200441f8026a200341306a290300370200200441f0026a200341206a41086a290300370200200420032903203702e80220004100360204200020043602000b0240024003400240024020042f010622070d00410021080c010b20074105742101200441086a2106417f21080340024020010d00200721080c020b200841016a210820032006412010ea062209450d03200141606a2101200641206a21062009417f4a0d000b0b02402005450d002005417f6a2105200420084102746a4194036a28020021040c010b0b200341206a41186a200341186a290300220a370300200341206a41106a200341106a290300220b370300200341206a41086a200341086a290300220c37030020032003290300220d370320200341ec006a200c370200200341f4006a200b370200200341fc006a200a3702002003200836025c20032004360254200341003602502003200d370264200320003602582003200041086a360260200341d0006a200210ee011a0c010b200420084102746a41e8026a20023602000b200341b0036a24000f0b1036000beb0701087f23004190046b2202240020002802102203200328020041016a360200200241086a2203200041086a29020037030020022000290200370300200241306a41186a2000412c6a290000370300200241306a41106a200041246a290000370300200241306a41086a2000411c6a29000037030020022000290014370330200241d0006a2002200241306a2001107702400240024020022d00504101470d002003200241d9006a290000370300200241106a200241e1006a290000370300200241186a200241e9006a29000037030020022002290051370300200241d0006a412c6a280200210120024188016a280200210420024184016a280200210320024180016a2802002105200228028c012106200241f8006a28020022002802002207450d0120002f01042108200241f4006a2802002109200241d0006a410172210003402002200841ffff037136022c20022001360228200220073602242002200941016a360220200241306a41186a200241186a2201290300370300200241306a41106a200241106a2207290300370300200241306a41086a200241086a220829030037030020022002290300370330200241d0006a200241206a200241306a200520032004107820022d00504101470d032008200041086a2900003703002007200041106a2900003703002001200041186a29000037030020022000290000370300200228027c2101200228028801210420022802840121032002280280012105200228027822082802002207450d0220082f01042108200228027421090c000b0b200241d0006a41086a280200200241d0006a41106a2802004102746a41e8026a21060c010b200241d0006a410272410041be0310e7061a02400240024041c403102d2200450d0020004100360200200041046a200241d0006a41c00310e8061a200020012802002207360294032001200036020020012001280204220841016a360204200741003b010420072000360200200241d0006a41186a200241186a290300370300200241d0006a41106a200241106a290300370300200241d0006a41086a200241086a2903003703002002200229030037035020082004470d0120002f01062201410a4b0d02200020014105746a220441206a200241d0006a41186a290300370000200441186a200241d0006a41106a290300370000200441106a200241d0006a41086a290300370000200441086a2002290350370000200020014102746a41e8026a20053602002000200141016a22014102746a4194036a2003360200200020013b0106200320013b0104200320003602000c030b1036000b4196b3ca00413041f8b4ca001039000b41c6b3ca00412741f8b4ca001039000b20024190046a240020060bfc0707047f017e017f017e017f017e047f230041e0006b22022400200241306a41186a22034200370300200241306a41106a22044200370300200241306a41086a220542003703002002420037033041aa97ca00ad42808080808001842206100122072900002108200241d0006a41086a2209200741086a290000370300200220083703502007102f200520092903003703002002200229035037033041c997ca00ad4280808080e00184220810012207290000210a2009200741086a2900003703002002200a3703502007102f20042002290350220a370300200241106a41086a220b2005290300370300200241106a41106a220c200a370300200241106a41186a220d2009290300370300200220022903303703102002200241106a10e3012002280200210e2002290308210a2003420037030020044200370300200542003703002002420037033020061001220729000021062009200741086a290000370300200220063703502007102f200520092903003703002002200229035037033020081001220729000021062009200741086a290000370300200220063703502007102f200420022903502206370300200b2005290300370300200c2006370300200d2009290300370300200220022903303703102002200a42017c4201200e1b2206370330200241106aad4280808080800484200241306aad4280808080800184100402404120102d2209450d0020092001290000370000200941186a200141186a290000370000200941106a200141106a290000370000200941086a200141086a2900003700002009412041c00010312205450d00200520063700202005ad4280808080800584100322092900002106200941086a2900002108200941106a290000210a200241306a41186a200941186a290000370300200241306a41106a200a370300200241306a41086a2008370300200220063703302009102f4137102d2209450d00200942bac6a1cbc68dd9aff300370000200942f4dec98bf6ac999de400370008200941e5cc85ab073600102009413a3a0016200941ece8013b001420092002290330370017200920022f01383b001f2009200228013a360021200920022f013e3b0025200920022d00403a0027200920022d00413a0028200920022d00423a0029200920022d00433a002a200920022d00443a002b200920022d00453a002c200920022d00463a002d200920022d00473a002e200920022d00483a002f200920022d00493a0030200920022d004a3a0031200920022d004b3a0032200920022d004c3a0033200920022d004d3a0034200920022d004e3a0035200920022d004f3a0036200041ccddc10041a4ddc1006b410f6a36020820004137360204200020093602002005102f200241e0006a24000f0b1036000b130020004105360204200041acddc1003602000b3400200041aa97ca0036020420004100360200200041146a4107360200200041106a41b4efc100360200200041086a42083702000b3301017f02404110102d22020d001036000b2002420037000820024201370000200042908080808002370204200020023602000b2201017f230041106b22022400200241003602002000200210f401200241106a24000bff0201067f230041106b220224000240024002400240024002400240200128020022030d00410121040c010b0240200141086a28020041056a2204417f4c0d0020040d0120024100360208200242013703000c020b103d000b2004102d2205450d04200241003602082002200436020420022005360200024020030d00200541003a0000200241013602080c030b20040d010b4101102d2205450d0320024101360204200220053602000b200541013a000020024101360208200141086a2802002204200210690240024020022802042201200228020822056b2004490d00200228020021010c010b200520046a22062005490d02200141017422072006200720064b1b22064100480d020240024020010d002006102d21010c010b200228020020012006103121010b2001450d0320022006360204200220013602000b2002200520046a360208200120056a2003200410e8061a0b20002002290300370200200041086a200241086a280200360200200241106a24000f0b1038000b1036000bcc0101017f23004190016b22022400200241003a0078200242808084808002370368200242e4003703582002420137035020024201370348200242af0137034020024287013703382002420137033020024201370328200242013703202002420137031820024201370310200242013703082002420137030020024280808080c00037036020024280808180800437037020024100360288012002420137038001200220024180016a10f601200041086a200228028801360200200020022903800137020020024190016a24000bf41802047f017e200028026021020240024002400240200141046a2802002203200141086a28020022046b4104490d00200128020021030c010b200441046a22052004490d02200341017422042005200420054b1b22044100480d020240024020030d002004102d21030c010b200128020020032004103121030b2003450d0120012003360200200141046a2004360200200141086a28020021040b200141086a2205200441046a360200200320046a20023600002000290300210602400240200141046a2802002203200528020022046b4108490d00200128020021030c010b200441086a22022004490d02200341017422042002200420024b1b22044100480d020240024020030d002004102d21030c010b200128020020032004103121030b2003450d0120012003360200200141046a2004360200200141086a28020021040b200141086a2202200441086a360200200320046a20063700002000290308210602400240200141046a2802002203200228020022046b4108490d00200128020021030c010b200441086a22022004490d02200341017422042002200420024b1b22044100480d020240024020030d002004102d21030c010b200128020020032004103121030b2003450d0120012003360200200141046a2004360200200141086a28020021040b200141086a2202200441086a360200200320046a20063700002000290310210602400240200141046a2802002203200228020022046b4108490d00200128020021030c010b200441086a22022004490d02200341017422042002200420024b1b22044100480d020240024020030d002004102d21030c010b200128020020032004103121030b2003450d0120012003360200200141046a2004360200200141086a28020021040b200141086a2202200441086a360200200320046a20063700002000290318210602400240200141046a2802002203200228020022046b4108490d00200128020021030c010b200441086a22022004490d02200341017422042002200420024b1b22044100480d020240024020030d002004102d21030c010b200128020020032004103121030b2003450d0120012003360200200141046a2004360200200141086a28020021040b200141086a2202200441086a360200200320046a20063700002000290320210602400240200141046a2802002203200228020022046b4108490d00200128020021030c010b200441086a22022004490d02200341017422042002200420024b1b22044100480d020240024020030d002004102d21030c010b200128020020032004103121030b2003450d0120012003360200200141046a2004360200200141086a28020021040b200141086a2202200441086a360200200320046a20063700002000290328210602400240200141046a2802002203200228020022046b4108490d00200128020021030c010b200441086a22022004490d02200341017422042002200420024b1b22044100480d020240024020030d002004102d21030c010b200128020020032004103121030b2003450d0120012003360200200141046a2004360200200141086a28020021040b200141086a2202200441086a360200200320046a20063700002000290330210602400240200141046a2802002203200228020022046b4108490d00200128020021030c010b200441086a22022004490d02200341017422042002200420024b1b22044100480d020240024020030d002004102d21030c010b200128020020032004103121030b2003450d0120012003360200200141046a2004360200200141086a28020021040b200141086a2202200441086a360200200320046a20063700002000290338210602400240200141046a2802002203200228020022046b4108490d00200128020021030c010b200441086a22022004490d02200341017422042002200420024b1b22044100480d020240024020030d002004102d21030c010b200128020020032004103121030b2003450d0120012003360200200141046a2004360200200141086a28020021040b200141086a2202200441086a360200200320046a20063700002000290340210602400240200141046a2802002203200228020022046b4108490d00200128020021030c010b200441086a22022004490d02200341017422042002200420024b1b22044100480d020240024020030d002004102d21030c010b200128020020032004103121030b2003450d0120012003360200200141046a2004360200200141086a28020021040b200141086a2202200441086a360200200320046a20063700002000290348210602400240200141046a2802002203200228020022046b4108490d00200128020021030c010b200441086a22022004490d02200341017422042002200420024b1b22044100480d020240024020030d002004102d21030c010b200128020020032004103121030b2003450d0120012003360200200141046a2004360200200141086a28020021040b200141086a2202200441086a360200200320046a20063700002000290350210602400240200141046a2802002203200228020022046b4108490d00200128020021030c010b200441086a22022004490d02200341017422042002200420024b1b22044100480d020240024020030d002004102d21030c010b200128020020032004103121030b2003450d0120012003360200200141046a2004360200200141086a28020021040b200141086a2202200441086a360200200320046a20063700002000290358210602400240200141046a2802002203200228020022046b4108490d00200128020021030c010b200441086a22022004490d02200341017422042002200420024b1b22044100480d020240024020030d002004102d21030c010b200128020020032004103121030b2003450d0120012003360200200141046a2004360200200141086a28020021040b200141086a2202200441086a360200200320046a20063700002000280264210502400240200141046a2802002203200228020022046b4104490d00200128020021030c010b200441046a22022004490d02200341017422042002200420024b1b22044100480d020240024020030d002004102d21030c010b200128020020032004103121030b2003450d0120012003360200200141046a2004360200200141086a28020021040b200141086a2202200441046a360200200320046a20053600002000280268210502400240200141046a2802002203200228020022046b4104490d00200128020021030c010b200441046a22022004490d02200341017422042002200420024b1b22044100480d020240024020030d002004102d21030c010b200128020020032004103121030b2003450d0120012003360200200141046a2004360200200141086a28020021040b200141086a2202200441046a360200200320046a2005360000200028026c210502400240200141046a2802002203200228020022046b4104490d00200128020021030c010b200441046a22022004490d02200341017422042002200420024b1b22044100480d020240024020030d002004102d21030c010b200128020020032004103121030b2003450d0120012003360200200141046a2004360200200141086a28020021040b200141086a2202200441046a360200200320046a20053600002000280270210502400240200141046a2802002203200228020022046b4104490d00200128020021030c010b200441046a22022004490d02200341017422042002200420024b1b22044100480d020240024020030d002004102d21030c010b200128020020032004103121030b2003450d0120012003360200200141046a2004360200200141086a28020021040b200141086a2202200441046a360200200320046a200536000020002d0078210502400240200141046a28020020022802002204460d00200128020021030c010b200441016a22032004490d02200441017422022003200220034b1b22024100480d020240024020040d002002102d21030c010b200128020020042002103121030b2003450d0120012003360200200141046a2002360200200141086a28020021040b200141086a2202200441016a360200200320046a20053a00002000280274210302400240200141046a2802002204200228020022006b4104490d00200128020021040c010b200041046a22022000490d02200441017422002002200020024b1b22004100480d020240024020040d002000102d21040c010b200128020020042000103121040b2004450d0120012004360200200141046a2000360200200141086a28020021000b200141086a200041046a360200200420006a20033600000f0b1036000b1038000b13002000410e360204200041bcf8c1003602000b2f01017f02404108102d22020d001036000b2000428880808080013702042000200236020020024280ade2043700000b2e01017f02404104102d22020d001036000b20004284808080c000370204200020023602002002418080013600000b2c01017f02404104102d22020d001036000b20004284808080c00037020420002002360200200241203600000b2d01017f02404108102d22020d001036000b20004288808080800137020420002002360200200242e8073700000b3801017f02404110102d22020d001036000b2002420037000820024280a094a58d1d370000200042908080808002370204200020023602000b3701017f02404110102d22020d001036000b2002420037000820024280c8afa025370000200042908080808002370204200020023602000b3a01017f02404110102d22020d001036000b20024200370008200242808086bdbacdd21a370000200042908080808002370204200020023602000b3b01017f02404110102d22020d001036000b200242003700082002428080a8ec85afd1b101370000200042908080808002370204200020023602000b3901017f02404110102d22020d001036000b200242003700082002428080e983b1de16370000200042908080808002370204200020023602000b2c01017f02404104102d22020d001036000b20004284808080c00037020420002002360200200241083600000b2c01017f02404104102d22020d001036000b20004284808080c00037020420002002360200200241023600000bd91f05047f027e097f017e157f230041d00d6b22072400200741186a41186a200141186a290000370300200741186a41106a200141106a290000370300200741186a41086a200141086a29000037030020072001290000370318200741386a41186a200241186a290000370300200741386a41106a200241106a290000370300200741386a41086a200241086a2900003703002007200229000037033820062802002108200628020421092006280208210a200741a0066a200741186a20051084020240024020072802a0064101470d00200020072902a40637020420004101360200200041186a4100360200200041106a42013702002000410c6a200741a0066a410c6a2802003602002009450d012008102f0c010b200741d0066a2903002105200741c8066a290300210b200741d8006a41186a200741c0066a290300370300200741d8006a41106a200741a0066a41186a2201290300370300200741d8006a41086a200741a0066a41106a2202290300370300200720072903a8063703582001420037030020024200370300200741a0066a41086a22014200370300200742003703a00641aa97ca00ad428080808080018410012206290000210c2001200641086a2900003703002007200c3703a0062006102f41ba97ca00ad4280808080f0018410012206290000210c200741f8096a41086a220d200641086a2900003703002007200c3703f8092006102f200220072903f809220c370300200741c8036a41086a2001290300370300200741c8036a41106a200c370300200741c8036a41186a200d290300370300200720072903a0063703c803200741a0066a200741c8036a10850220072d0098072102200741c8036a200741a0066a41f80010e8061a2007200741a0066a41fc006a2800003600fb0920072007280099073602f8090240024020024102470d002007428080818080043703e8012007428080848080023703e001200742e4003703d001200742013703c801200742013703c001200742af013703b80120074287013703b001200742013703a801200742013703a00120074201370398012007420137039001200742013703880120074201370380012007420137037820074280808080c0003703d801410021020c010b200741f8006a200741c8036a41f80010e8061a200741f8006a41fc006a20072800fb09360000200720072802f8093600f1010b20074190026a420037030020074180026a4200370300200741a0026a4200370300200720023a00f0012007428080e983b1de16370388022007428080e983b1de163703f80120074280a094a58d1d37039802200742a08080808080103703a8022007200741f8006a3602b0022007200741f8006a3602b402200741f8096a41186a220e200741186a41186a290300370300200741f8096a41106a220f200741186a41106a290300370300200741f8096a41086a2210200741186a41086a290300370300200720072903183703f809200741a0066a41186a220d4200370300200741a0066a41106a22014200370300200741a0066a41086a22024200370300200742003703a00641d5a2ca00ad428080808090018410012206290000210c2002200641086a2900003703002007200c3703a0062006102f41ecb0c000ad4280808080308410012211290000210c200741f8086a41086a2206201141086a2900003703002007200c3703f8082011102f200120072903f808220c370300200741c8036a41086a22122002290300370300200741c8036a41106a2213200c370300200741c8036a41186a22142006290300370300200720072903a0063703c803200741086a200741c8036a10e3012007290310210c20072802082115200d42003703002001420037030020024200370300200742003703a006418de6c300ad4280808080e000841001221129000021162002201141086a290000370300200720163703a0062011102f419ce6c300ad4280808080e000841001221129000021162006201141086a290000370300200720163703f8082011102f200120072903f8082216370300201220022903003703002013201637030020142006290300370300200720072903a0063703c8032007200741c8036a4120109501200741f0026a4200370300200741e4026a418886c700360200200741e0026a41c8e1ca00360200200741d4026a4190bdc60036020020074190036a201029030037030020074198036a200f290300370300200741a0036a200e290300370300200741b8026a41206a42003703002007428080808080013703e802200742003703c002200720072903f80937038803200741003602d00220072802002106200728020421112007200741b4026a360280032007200741b0026a3602fc022007200741f8006a3602f80220072011410020061b360284032007200c420020151b3703b802200d200741386a41186a2903003703002001200741386a41106a2903003703002002200741386a41086a290300370300200720072903383703a0062007200a3602d003200720093602cc03200720083602c803200741a8036a200741b8026a200741a0066a20032004200741d8006a200741c8036a10860241012117024020072802a8030d00200741a8036a41106a2d00000d00200741a0066a41086a200741d8026a290300370300200741c8036a41086a200741ac066a280200360200200720072903d0023703a006200720072902a4063703c803200741c80d6a200741c8036a108702410021170b200741186a200729035820072903602007290368200741d8006a41186a290300200b200510880220072802ec02221820072802f402220241d8026c6a210820072802f002211920182101024002402002450d00200741c10a6a2111200741e1066a210a200741f8096a410172211a200741f8086a41076a211b200741810a6a2109200741f8086a410272210e200741a10a6a210f200741a0066a41106a211c200741c8066a211d20074184076a2114200741c1066a210d200741a0066a410172211320182101034020012d00002106200741c8036a200141016a41d70210e8061a0240024002400240024020064103460d00200720063a00a0062013200741c8036a41d70210e8062102024002400240024020060e03000102000b20072802a806211220072802ac06210620072802a4062102201b201c41f80010e8061a2007410d3a00f809201a200741f8086a41ff0010e8061a20022006200741f8096a108c014101210641002110024020120d00410021120c030b2002102f410021120c020b200741980d6a41186a2206200241186a2210290000370300200741980d6a41106a2212200241106a2215290000370300200741980d6a41086a221e200241086a221f290000370300200720022900003703980d200741f8096a201d41b00210e8061a200e2002290000370000200e41086a201f290000370000200e41106a2015290000370000200e41186a201029000037000020074180023b01f808200741e80c6a200741f8096a200741f8086a108b0120072d00e80c2102200920072903980d370000200941086a201e290300370000200941106a2012290300370000200941186a2006290300370000200741063a00800a2007410d3a00f809200720024104463a00a10a4100211041c8e1ca004100200741f8096a108c0141012112410021060c010b200741a80c6a41186a2206200241186a2210290000370300200741a80c6a41106a2212200241106a2215290000370300200741a80c6a41086a221e200241086a221f290000370300200720022900003703a80c200741c80c6a41186a2220200d41186a2221290000370300200741c80c6a41106a2222200d41106a2223290000370300200741c80c6a41086a2224200d41086a22252900003703002007200d2900003703c80c200741e80c6a41186a2226200a41186a2227290000370300200741e80c6a41106a2228200a41106a2229290000370300200741e80c6a41086a222a200a41086a222b2900003703002007200a2900003703e80c200741a0066a41f8006a29030021052007290390072103200741980d6a41186a2010290000370300200741980d6a41106a2015290000370300200741980d6a41086a201f290000370300200720022900003703980d200741f8086a41186a2021290000370300200741f8086a41106a2023290000370300200741f8086a41086a20252900003703002007200d2900003703f808200741f8096a41186a2027290000370300200741f8096a41106a2029290000370300200741f8096a41086a202b2900003703002007200a2900003703f809200741b80d6a41086a201441086a280200360200200720142902003703b80d200741880d6a200741980d6a200741f8086a200741f8096a20032005200741b80d6a10890220072d00880d2102200920072903a80c370000200941086a201e290300370000200941106a2012290300370000200941186a2006290300370000200f20072903c80c370000200f41086a2024290300370000200f41106a2022290300370000200f41186a2020290300370000200741033a00800a2007410d3a00f809200741f8096a41f8006a2005370300201141186a2026290300370000201141106a2028290300370000201141086a202a290300370000201120072903e80c370000200720033703e80a200720024104463a00e10a41c8e1ca004100200741f8096a108c014101211041012112410121060b20072d00a006220241014b0d0120020e020302030b200141d8026a21010c050b201020072802880745720d02200728028407102f0c020b2006450d01201d108e010c010b2012450d00024020072802a806450d0020072802a406102f0b20072d00b0064107470d0020072802d806450d0020072802d406102f0b200141d8026a22012008470d000c020b0b20082001460d0003402001220241d8026a21010240024020022d0000220641014b0d000240024020060e020001000b0240200241086a280200450d00200241046a280200102f0b200241106a2d00004107470d02200241386a280200450d02200241346a280200102f0c020b200241286a108d010c010b200241e8006a280200450d00200241e4006a280200102f0b20082001470d000b0b02402019450d002018102f0b200020072903a803370200200041186a200741a8036a41186a280200360200200041106a200741a8036a41106a290300370200200041086a200741a8036a41086a290300370200024020072802c4022202450d00200741b8026a41106a280200450d002002102f0b2017450d00200741b8026a411c6a280200210220072802dc0221080240024020072802d80222060d00200221010c010b2006210920022101034020012802880b21012009417f6a22090d000b0340200220022f01064102746a41880b6a28020021022006417f6a22060d000b0b200741a0066a411c6a20022f0106360200200741b8066a4100360200200741b4066a2002360200200720083602c006200741003602b006200742003703a806200720013602a406200741003602a006200741a0066a108a020b200741d00d6a24000bd90706017f017e037f017e017f037e230041a0026b2203240042002104200341a0016a41186a4200370300200341a0016a41106a22054200370300200341a0016a41086a22064200370300200342003703a00141aa97ca00ad42808080808001841001220729000021082006200741086a290000370300200320083703a0012007102f41d9cec100ad4280808080800184100122072900002108200341d8006a41086a2209200741086a290000370300200320083703582007102f200520032903582208370300200341f0006a41086a2006290300370300200341f0006a41106a2008370300200341f0006a41186a2009290300370300200320032903a001370370200341386a200341f0006a4120109c0102400240024020032903404201200328023822061b2208200341386a41106a290300420020061b220a8450450d004200210b4200210c0c010b200341186a200a42002002420010ed06200341286a200842002002420010ed06200341086a420042002008420010ed0602402003290320200329031084420052200341286a41086a290300220b200329031820032903087c7c220c200b54724101460d002003290328210b0c010b200041003a0004200041013602002000410c6a4127360200200041086a41e085c7003602000c010b41002106200341003a006b200341083a006a200320013602542003200b3703582003200c370360024002400240200b200c8450450d004200210c0c010b2003200136026c2003200341ec006a3602b0012003200341ea006a3602ac012003200341d4006a3602a8012003200341eb006a3602a4012003200341d8006a3602a001200341f0006a2001200341a0016a10a50441012106024020032802704101470d00200341f8006a29030021044200210c200328027421070c020b20034198016a290300210c20034190016a29030021040240200341f0006a41086a2903004201510d00410021060c010b200341f0006a41106a290300210b200328026c2107200341d8016a200341f0006a41186a290300370300200341d0016a200b37030041002106200341a0016a41086a41003a0000200341a9016a2007290000370000200341b1016a200741086a290000370000200341b9016a200741106a290000370000200341c1016a200741186a290000370000200341033a00a00141c8e1ca004100200341a0016a108c010b0b024020060d0020004100360200200041306a200c370300200041286a2004370300200041206a200a370300200041186a2008370300200041106a2002370300200041086a20023703000c010b2000200736020420004101360200200041086a20043702000b200341a0026a24000bf00201047f230041c0016b220224002002412036020420022001360200200241086a2001ad4280808080800484100210730240024020022802082201450d00200228020c21032002200241106a28020036029c012002200136029801200241186a20024198016a1091020240024020022d00900122044102470d00200241003602a801200242013703a0012002410b3602b401200220023602b0012002200241a0016a3602bc012002412c6a41013602002002420137021c200241b885c7003602182002200241b0016a360228200241bc016a41d8dbc100200241186a103c1a20023502a80142208620023502a00184100820022802a401450d0120022802a001102f0c010b2000200241186a41f80010e80621052002200241186a41fc006a2800003600a30120022002280091013602a001200541fc006a20022800a301360000200520022802a0013600790b200020043a00782003450d012001102f0c010b200041023a00780b200241c0016a24000bed3207037f017e017f017e057f047e057f23002207210820074180106b4160712207240020072004370360200720033703582007200536026c0240024002402001280230200128024022092802b001460d002005420020052903082203200941386a2903007d2204200420035622091b3703082009450d01200041003a0004200041013602002000410c6a4123360200200041086a41c891c700360200200041106a2006290200370200200041186a200641086a280200360200200824000f0b200041003a0004200041013602002000410c6a4129360200200041086a419f91c700360200200041106a2006290200370200200041186a200641086a2802003602000c010b20074180056a200210e801024002400240024020072d008005417f6a41ff01714102490d0020074180056a41106a290300210a20074180056a41086a220b290300210c200741a4056a280200210d200741a8056a280200210e42002103200741a00d6a41186a4200370300200741a00d6a41106a220f4200370300200741a00d6a41086a22054200370300200742003703a00d418de6c300ad4280808080e000841001220929000021042005200941086a290000370300200720043703a00d2009102f419ce6c300ad4280808080e00084100122092900002104200741d8026a41086a2210200941086a290000370300200720043703d8022009102f200f20072903d8022204370300200741e8016a41086a2005290300370300200741e8016a41106a220f2004370300200741e8016a41186a22112010290300370300200720072903a00d3703e801200741d0006a200741e8016a412010950141002007280254410020072802501b2209200e6b220e200e20094b1b220e450d02200741a00d6a2002108d0242002103200741c0006a20072903a00d221220052903002213428080a8ec85afd1b101420010ee064200200dad2204200729034022147d221520152004564200200741c0006a41086a2903002004201454ad7c7d22044200522004501b22051b22144200200420051b220484500d02420121032012428080d287e2bc2d5441002013501b0d02200741306a200ead42002014200410ed06200741206a2007290330200741306a41086a290300428080e983b1de16420010ed06024002402012428080aef89dc3527c2203200c200c200356200a20132003201254ad7c427f7c220356200a2003511b22051b22042007290320220c2004200c542003200a20051b2204200741206a41086a290300220a542004200a511b22051b22032004200a20051b220484500d00200741a00d6a2002108d0220072903c00d220c4200201220037d220a200a201256201320047d2012200354ad7d221220135620122013511b220e1b221458200741c80d6a290300220a42002012200e1b221258200a201251220e1bad2113200c201456200a201256200e1b0d032005450d010c030b4201211320050d020b200720033703d802200720043703e002420321030c020b200741f0006a20074180056a41d80010e8061a0c020b200741e8026a2004370300200720033703e002200720133703d802420221030b200741a00d6a200b41d00010e8061a200f20102903003703002011200741d8026a41106a290300370300200720033703e801200720072903d8023703f001200741f0006a2002200741a00d6a2009200741e8016a109f020b024002400240024002400240024002400240024002400240024020072d007022094103714103460d00024020090e03000100000b200741c8016a41186a220b200141e8006a290000370300200741c8016a41106a220e200141e0006a290000370300200741c8016a41086a220f200141d8006a290000370300200720012900503703c801200741f0006a41206a28020021054100211141002110024020090d002005417f4c0d02200741f0006a411c6a280200210d200741f0006a41186a28020021090240024020050d00410121100c010b2005102d2210450d090b20102009200510e8061a200d450d002009102f0b200741a4026a410036020020074194026a41ec91c700360200200741e8016a41206a4200370300200741e8016a411c6a4190bdc600360200200741e8016a41146a2005360200200741e8016a41106a2005360200200741e8016a41d8006a200241086a290000370300200741e8016a41e0006a200241106a290000370300200741e8016a41e8006a200241186a290000370300200720013602f001200741e8016a41286a200141186a22163602002007420837029c022007410036028002200720103602f401200720022900003703b802200720012802483602b002200720012903403703a8022007200128023041016a36029802200129030021032007200128024c3602b402200720033703e801200741d8026a41206a200f290300370300200741d8026a41286a200e29030037030020074188036a200b290300370300200741d8026a41146a200641086a280200360200200720023602e002200720072903c8013703f002200720062902003702e4022007200741ec006a3602dc022007200741d8006a3602d802024020072903582203200741d8006a41086a290300220484500d0020074180056a200728026c4100200741f0026a200220032004200741e8016a10a305024020072d0080054104460d0020072f00e502200741e7026a2d000041107472210e200741d8026a41106a290300210320072d00e402210f200729028405210420072802800521060c0e0b200728028002211120072802e00221020b201141016a220d41004c0d02200741d8026a41186a2117200741e4026a21182007200d36028002200741e8016a41206a280200210f20074184026a2219210602400240024002400340024002402006280200220e2f010622110d00410021090c010b20114105742106200e41c5036a2110200e41086a2105417f21090340024020060d00201121090c020b20022005412010ea06220b450d03200641606a2106201041e0006a2110200941016a2109200541206a2105200b417f4a0d000b0b200f450d02200f417f6a210f200e20094102746a41880b6a21060c000b0b0240024020102d00000d002010415f6a2d0000210520074180056a41186a2209201041606a220641186a29000037030020074180056a41106a2210200641106a29000037030020074180056a41086a220b200641086a29000037030020072006290000370380054102210620054101470d01200741a00d6a41186a2009290300370300200741a00d6a41106a2010290300370300200741a00d6a41086a200b29030037030020072007290380053703a00d410121060c010b2010415f6a2d00002106200741a00d6a41186a201041606a220541186a290000370300200741a00d6a41106a200541106a290000370300200741a00d6a41086a200541086a290000370300200720052900003703a00d0b200641ff01714102470d010b20074190036a200728029002200220072802940228021011030020072d0090032106200728028002210d0c010b20074199036a200741a80d6a290300370000200741a1036a200741b00d6a290300370000200741a9036a200741b80d6a290300370000200720063a009003200720072903a00d370091030b2007200d417f6a36028002410121110240200641ff01714101470d00200741b8036a41186a200741a9036a290000370300200741b8036a41106a200741a1036a290000370300200741b8036a41086a20074199036a29000037030020072007290091033703b80320074180056a200741b8036a20072802b00228020010920202402007280280054101470d0020072f00e502200741e7026a2d000041107472210e2007290284052104200741d8026a41106a290300210320072d00e402210f410021060c0e0b200741a00d6a41186a220520074180056a410472220641186a2802002209360200200741d8036a41106a200641086a290200370300200741d8036a41186a200641106a290200370300200741f8036a2009360200200741043602dc03200741fb8bca003602d803200720062902003703e00320072802ac0221062005201741186a2900002203370300200741a00d6a41106a201741106a2900002204370300200741a00d6a41086a2205201741086a2900002212370300200741a8056a2012370300200741b0056a2004370300200741b8056a20033703002007201729000022033703a00d200720033703a00520072802d802220941086a29030021032007200741e8016a360298052009290300210420072903e801211220072802b4022109200720033703880520072004370380052007200936029c0520072012370390052005201841086a280200360200200720182902003703a00d200741e0046a2006200741d8036a20074180056a200741a00d6a20072802dc0228020010bf0120072f00f104200741f3046a2d000041107472210e200741e0046a41106a2d0000210f200741e0046a41086a290300211220072802e4042111024020072802e0044101470d00200741f4046a290200210320122104201121060c0d0b20072802800241016a221a41004c0d0420072802e00221022007201a360280022007280288022117201921060240024002400340024002402006280200220d2f010622180d00410021090c010b20184105742106200d41c5036a2110200d41086a2105417f21090340024020060d00201821090c020b20022005412010ea06220b450d03200641606a2106201041e0006a2110200941016a2109200541206a2105200b417f4a0d000b0b2017450d022017417f6a2117200d20094102746a41880b6a21060c000b0b2010310000201041a37f6a290300220320035022061ba7450d004200201041ab7f6a220541086a29030020061b21034200200529030020061b21040c010b200741106a200728029002200220072802940228021c110300200741186a290300210320072903102104200728028002211a0b2007201a417f6a221036028002200420072802a80222062903800154200320064188016a29030022045420032004511b0d050c060b420021124100210f0240200741e8026a280200450d0020072802e402102f0b0c060b200041003a0004200041013602002000410c6a4119360200200041086a418b93c700360200200041106a2006290200370200200041186a200641086a28020036020020090d0c2007418c016a280200450d0c20074188016a280200102f200824000f0b103d000b41c6c4ca00411820074180056a41cc90c70041f0c4ca00103e000b41c6c4ca00411820074180056a41cc90c70041f0c4ca00103e000b20072802f0012206450d030240024020072802e0022205200641d0006a2209460d0020092005412010ea06450d00034020062802082206450d022005200641d0006a2209460d0120092005412010ea060d000b0b2011410876210e41d492c700ad4280808080f00684210441002106201221032011210f0c070b20100d042007417f36028002200741003a00bc04200742003702b404200741013a009d0420074190bdc6003602b004200741e0046a41186a200541186a290000370300200741e0046a41106a200541106a290000370300200741e0046a41086a200541086a290000370300200720052900003703e00402400240200728028402220b4190bdc600460d0020072802880221020c010b200741a00d6a410041e00210e7061a20074180056a410041a00810e7061a41880b102d220b450d0341002102200b41003b0106200b4100360200200b41086a200741a00d6a41e00210e8061a200b41e8026a20074180056a41a00810e8061a20074100360288022007200b360284020b02400240034002400240200b2f0106220d0d00410021090c010b200d4105742106200b41086a2105417f21090340024020060d00200d21090c020b200941016a2109200741e0046a2005412010ea062210450d03200641606a2106200541206a21052010417f4a0d000b0b02402002450d002002417f6a2102200b20094102746a41880b6a280200210b0c010b0b200741c0046a41186a200741e0046a41186a2903002203370300200741c0046a41106a200741e0046a41106a2903002204370300200741c0046a41086a200741e0046a41086a290300220a370300200720072903e00422133703c004200741bc0d6a200a370200200741a00d6a41246a2004370200200741cc0d6a20033702002007200741e8016a41246a3602b00d200720093602ac0d200720193602a80d2007200b3602a40d200741003602a00d200720133702b40d20074180056a41186a42003703002007420037038005200741b8056a20072903b804370300200741b0056a20072903b004370300200741a8056a20072903a804370300200741a0056a20072903a004370300200741d8056a200729039804370300200741d0056a200729039004370300200741c8056a200729038804370300200741c0056a200729038004370300200741a00d6a20074180056a1097021a420221040c010b200b200941e0006c6a22064190036a20072903a80437030020064188036a20072903a004370300200641c0036a200729039804370000200641b8036a200729039004370000200641b0036a200729038804370000200641a8036a20072903800437000020064180036a4200370300200641e8026a2205290300210420054200370300200641a0036a2205280200210b200520072903b80437030020064198036a22062903002103200620072903b0043703002003a721062003422088a721050b024020044202510d000240024020050d00200621090c010b2005211020062109034020092802ec0321092010417f6a22100d000b0340200620062f01064102746a41ec036a28020021062005417f6a22050d000b0b2007419c056a20062f010636020020074198056a410036020020074194056a20063602002007200b3602a005200741003602900520074200370388052007200936028405200741003602800520074180056a1090020b200720072802800241016a360280020b200741f0036a280200450d00200741ec036a280200102f0b20072802a402210520072802a002210d200728029c022102200728028c02211720072802880221102007280284022106024020072802f4012209450d0020072802f801450d002009102f0b02400240200f41ff01710d00200720173602880520072010360284052007200636028005201620074180056a10a40502400240200141386a28020022062001413c6a28020022076b200541d8026c220941d8026d2205490d00200128023421060c010b200720056a22102007490d06200641017422072010200720104b1bad42d8027e2203422088a70d062003a722074100480d060240024020060d002007102d21060c010b2001280234200641d8026c2007103121060b2006450d0320012006360234200141386a200741d8026e3602002001413c6a28020021070b2006200741d8026c6a2002200910e8061a2001413c6a2207200728020020056a3602000240200d450d002002102f0b2000200e3b001120002011360204200041136a200e4110763a0000200041106a41003a0000200041086a20123702000c010b2000200e3b001120002011360204200041136a200e4110763a0000200041106a200f3a0000200041086a201237020002402005450d00200541d8026c210141002105034002400240200220056a22092d0000220b41014b0d0002400240200b0e020001000b0240200941086a280200450d00200941046a280200102f0b200941106a2d00004107470d02200941386a280200450d02200941346a280200102f0c020b200941286a108d010c010b200941e8006a280200450d00200941e4006a280200102f0b2001200541d8026a2205470d000b0b0240200d450d002002102f0b0240024020100d00200621050c010b2010210920062105034020052802880b21052009417f6a22090d000b0340200620062f01064102746a41880b6a28020021062010417f6a22100d000b0b2007419c056a20062f010636020020074198056a410036020020074194056a2006360200200720173602a005200741003602900520074200370388052007200536028405200741003602800520074180056a108a020b20004100360200200824000f0b1036000b419092c700413241c492c7001055000b41c3c5ca00411020074180056a41dc90c70041e4c5ca00103e000b1038000b200741f0036a280200450d00200741ec036a280200102f0b2000200e3b00112000200636020420004101360200200041136a200e4110763a0000200041146a2003370000200041106a200f3a0000200041086a2004370200024020072802f4012206450d0020072802f801450d002006102f0b200741e8016a411c6a2802002106200728028c0221100240024020072802880222050d00200621090c010b2005210020062109034020092802880b21092000417f6a22000d000b0340200620062f01064102746a41880b6a28020021062005417f6a22050d000b0b20074180056a411c6a20062f01063602004100210520074198056a410036020020074194056a2006360200200720103602a005200741003602900520074200370388052007200936028405200741003602800520074180056a108a02024020072802a4022206450d00200728029c022100200641d8026c2110034002400240200020056a22062d0000220941014b0d000240024020090e020001000b0240200641086a280200450d00200641046a280200102f0b200641106a2d00004107470d02200641386a280200450d02200641346a280200102f0c020b200641286a108d010c010b200641e8006a280200450d00200641e4006a280200102f0b2010200541d8026a2205470d000b0b20072802a002450d00200728029c02102f200824000f0b200824000bce3d0f067f027e047f067e047f027e067f027e027f087e017f027e0b7f027e0b7f230041f0046b22022400200128020821032001280200210402400240200128020422050d00200421010c010b2005210620042101034020012802880b21012006417f6a22060d000b0340200420042f01064102746a41880b6a28020021042005417f6a22050d000b0b2002419c016a20042f01063602004100210720024198016a410036020020024194016a2004360200200220033602a001200241003602900142002108200242003703880120022001360284012002410036028001024002402003450d0020022003417f6a3602a0010240024020012f0106450d004100210620012104410021050c010b4100210641002105034002400240024020014190bdc600460d00200128020022040d012005ad2109410021040c020b41edb3ca00412841f8b4ca001039000b200641016a210620013301044220862005ad8421090b2001102f2009a72105200421012009422088a7220720042f01064f0d000b0b200241d0046a41186a220a200420074105746a220141206a290000370300200241d0046a41106a220b200141186a290000370300200241d0046a41086a220c200141106a2900003703002002200141086a2900003703d0042004200741e0006c6a220141a4036a2d0000210d200141a0036a280200210320014198036a290300210e20014190036a290300210f20014188036a290300211020014180036a2903002111200141f8026a2903002112200141f0026a2903002113200141e8026a2903002109200241e8036a41186a2214200141bd036a290000370300200241e8036a41106a2215200141b5036a290000370300200241e8036a41086a2216200141ad036a2900003703002002200141a5036a2900003703e803200741016a2107200141c5036a2d0000211702402006450d00200420074102746a41880b6a2802002104410021072006417f6a2201450d00034020042802880b21042001417f6a22010d000b0b200241c8026a41186a200a290300370300200241c8026a41106a200b290300370300200241c8026a41086a200c290300370300200241c8036a41086a2016290300370300200241c8036a41106a2015290300370300200241c8036a41186a2014290300370300200220022903d0043703c802200220022903e8033703c8032002200736028c01200220053602880120022004360284012002410036028001024020094202520d00420021080c010b200241d0046aad42808080808004842118200241c8036aad428080808080048421192002419c046a211a200241e8036a412c6a211b200241e8036a41106a211c200241e8036a41086a211d200241c8026a412c6a211e200241c8026a41106a211f4200210842002120420021210340200241c8016a41186a2201200241c8026a41186a2222290300370300200241c8016a41106a2204201f290300370300200241c8016a41086a2205200241c8026a41086a2223290300370300200241a8016a41086a2206200241c8036a41086a220b290300370300200241a8016a41106a2207200241c8036a41106a220c290300370300200241a8016a41186a220a200241c8036a41186a2214290300370300200220022903c8023703c801200220022903c8033703a801200241e8016a41186a2001290300370300200241e8016a41106a2004290300370300200241e8016a41086a2005290300370300200220022903c8013703e80120024188026a41186a2204200a29030037030020024188026a41106a2205200729030037030020024188026a41086a22072006290300370300200220022903a801370388020240024002402017ad42ff0183200920095022011b4201520d00200241e8036a200241e8016a108d02200241e8036a41186a22062903002124201d290300210920022903f803212520022903e8032126200241e8006a200241e8016a4200201320011b4200201220011b108e02200241e8006a41106a29030021132002290370212720022903682128200241e8036a200241e8016a108d0220062903002129201d290300211220022903f803212a20022903e803212b200241d0006a202120082020202820272013109d01200241d0006a41106a29030021202002290358210820022903502121427f202620257c221320132026542201200920247c2001ad7c221320095420132009511b22011b427f201320011b84500d00427f202b202a7c22092009202b542201201220297c2001ad7c220920125420092012511b22011b427f200920011b84500d010b0240024002400240024002400240024002400240200d41ff0171220a41014622010d00201741ff01710d0020032011a772450d010b200241e8036a200241e8016a10e8010240024020022d00e8032215417f6a220641014b0d004102212c024020060e020002000b20150d0b200228028404450d0b200228028004102f0c0b0b200241a8026a41086a201a41086a290200370300200241a8026a41106a201a41106a290200370300200241a8026a41186a201a41186a2902003703002002201a2902003703a802201c290300212d20022903f003212e20022802bc04212f2002280298042130200228029404212c2002280290042131200228028c0421322002280288042133200228028404213420022802800421350b410221360240202c4102460d002033417f4c0d020240024020330d00410121370c010b2033102d2237450d040b20372035203310e8061a200241e8036a41186a200241a8026a41186a290300370300201c200241a8026a41106a290300370300201d200241a8026a41086a290300370300200220022903a8023703e803202c41014621362033213820332139202e213a202d213b2032213c2031213d2030213e0b2014200241e8036a41186a2206290300370300200c201c290300370300200b201d290300370300200241a8036a41086a223f2007290300370300200241a8036a41106a22402005290300370300200241a8036a41186a22412004290300370300200220022903e8033703c80320022002290388023703a803201741ff0171450d040c030b200ea7210102400240200e422088a722050d00200121040c010b2005210620012104034020042802ec0321042006417f6a22060d000b0340200120012f01064102746a41ec036a28020021012005417f6a22050d000b0b20022003360288042002410036028004200241003602f803200242003703f003200220043602ec03200241003602e803200220013602fc03200220012f010636028404200241e8036a1090020c090b103d000b1036000b20364102460d010240203941164d0d002039ad4220862037ad84203941696aad422086203741176aad844101101d024020010d00200241e8016a10ec012038450d042037102f0c040b20024198036a200241e8016a10ef0120064200370300201c420037030041082142200241e8036a41086a22014200370300200242003703e803418de6c300ad4280808080e000841001221729000021092001201741086a290000370300200220093703e8032017102f419ce6c300ad4280808080e00084100122172900002109200241c0046a41086a2215201741086a290000370300200220093703c0042017102f201c20022903c004370000201c41086a2015290300370000200241d0046a41086a2001290300370300200241d0046a41106a201c290300370300200241d0046a41186a2006290300370300200220022903e8033703d004200241c8006a200241d0046a4120109501200228024c210120022802482117201f41086a20024198036a41086a280200360200201f200229039803370200201e20022903a803370100201e41086a200241a8036a41086a290300370100201e41106a2040290300370100201e41186a2041290300370100427f212b2002427f3703d0022002427f3703c802200241083602e40241002136200241003602ec0220022001410020171b22433602e802024020380d00427f21240c060b2037102f427f212b427f21240c050b41172039104b000b20364102470d020b2001450d0020024198036a200241e8016a10ef0120064200370300201c420037030041082142200241e8036a41086a22014200370300200242003703e803418de6c300ad4280808080e000841001221729000021092001201741086a290000370300200220093703e8032017102f419ce6c300ad4280808080e00084100122172900002109200241c0046a41086a2215201741086a290000370300200220093703c0042017102f201c20022903c004370000201c41086a2015290300370000200241d0046a41086a2001290300370300200241d0046a41106a201c290300370300200241d0046a41186a2006290300370300200220022903e8033703d004200241c0006a200241d0046a41201095012002280244210120022802402117201f41086a20024198036a41086a280200360200201f200229039803370200201e20022903a803370100201e41086a200241a8036a41086a290300370100201e41106a2040290300370100201e41186a2041290300370100427f212b2002427f3703d0022002427f3703c802200241083602e40241002136200241003602ec0220022001410020171b22433602e802427f21240c020b202c4102460d02024020340d00410021340c030b2035102f0c020b201e20022903c803370200201e41086a200b290300370200201e41106a200c290300370200201e41186a20142903003702002002203a3703c8022002203e3602f002200220363602ec022002203d3602e8022002203c3602e402200220393602e002200220383602dc02200220373602d8022002203b3703d002203d2143203a212b203b2124203c21420b024020114201520d00200220103703c8022002200f3703d0022010212b200f21240b0240200a450d00201e200229038802370000201e41186a2004290300370000201e41106a2005290300370000201e41086a20072903003700000b02402003450d0020064200370300201c4200370300201d4200370300200242003703e803418de6c300ad4280808080e00084100122012900002109201d200141086a290000370300200220093703e8032001102f419ce6c300ad4280808080e00084100122012900002109200241c0046a41086a2204200141086a290000370300200220093703c0042001102f201c20022903c004370000201c41086a2004290300370000200241d0046a41086a201d290300370300200241d0046a41106a201c290300370300200241d0046a41186a2006290300370300200220022903e8033703d004200241386a200241d0046a412010950141012136200241013602ec022002200228023c410020022802381b3602f0020b200ea7210102400240200e422088a722050d00200121040c010b2005210620012104034020042802ec0321042006417f6a22060d000b0340200120012f01064102746a41ec036a28020021012005417f6a22050d000b0b20012f01062105200220033602880420022005360284042002410036028004200220013602fc03200241003602f803200242003703f003200220043602ec03200241003602e80302402003450d0020022003417f6a221636028804410021150240024020042f0106450d004100210620042101410021050c010b4100210641002105034002400240024020044190bdc600460d00200428020022010d012005ad2109410021010c020b41edb3ca00412841f8b4ca001039000b200641016a210620043301044220862005ad8421090b2004102f2009a72105200121042009422088a7221520012f01064f0d000b0b200241d0046a41186a2203200120154105746a220441206a290000370300200241d0046a41106a2217200441186a290000370300200241d0046a41086a220a200441106a2900003703002002200441086a2900003703d004201541016a210720012015410c6c6a220441f0026a280200210d200441ec026a2802002144200441e8026a280200211502402006450d00200120074102746a41ec036a2802002101410021072006417f6a2204450d00034020012802ec0321012004417f6a22040d000b0b20142003290300370300200c2017290300370300200b200a290300370300200220022903d0043703c803200220073602f403200220053602f003200220013602ec03200241003602e80320022802e002224541696aad42208620022802d802220441176aad84210e2045ad4220862004ad8421110240024003402041201429030022093703002040200c2903002212370300203f200b2903002213370300200220022903c80322263703a80320142009370300200c2012370300200b2013370300200220263703c803204541164d0d0120191003220441086a2900002109200441106a2900002112200429000021132003200441186a29000037030020172012370300200a2009370300200220133703d0042004102f200241c0046a2011200e4101201810101073024020022802c0042204450d00204220022802c8046b214220022802c404450d002004102f0b024002402015450d0020191003220441086a2900002109200441106a2900002112200429000021132003200441186a29000037030020172012370300200a2009370300200220133703d0042004102f2011200e41012018200dad4220862015ad84100f2042200d6a21422044450d012015102f0c010b20191003220441086a2900002109200441106a2900002112200429000021132003200441186a29000037030020172012370300200a2009370300200220133703d0042004102f2011200e4101201810110b2016450d0220022016417f6a2216360288044100210602400240200720012f01064f0d00200121040c010b41002106034002400240024020014190bdc600460d00200128020022040d012005ad2109410021040c020b41edb3ca00412841f8b4ca001039000b200641016a210620013301044220862005ad8421090b2001102f2009a72105200421012009422088a7220720042f01064f0d000b0b2003200420074105746a220141206a2900003703002017200141186a290000370300200a200141106a2900003703002002200141086a2900003703d004200741016a214620042007410c6c6a220141f0026a280200210d200141ec026a2802002144200141e8026a28020021150240024020060d0020042101204621070c010b200420464102746a41ec036a2802002101410021072006417f6a2204450d00034020012802ec0321012004417f6a22040d000b0b20142003290300370300200c2017290300370300200b200a290300370300200220022903d0043703c803200220073602f403200220053602f003200220013602ec03200241003602e8030c000b0b41172045104b000b200220423602e4020b200241e8036a109002200241d0046a41186a2201200241a8026a41186a290300370300200241d0046a41106a2204200241a8026a41106a290300370300200241d0046a41086a2205200241a8026a41086a290300370300200220022903a8023703d00402400240202c4102460d00201b20022903d004370200201b41086a2005290300370200201b41106a2004290300370200201b41186a20012903003702002002202e3703e80320022030360290042002202c36028c0420022031360288042002203236028404200220343602fc03200220353602f8032002202f3602b4042002202d3703f0032002203336028004410121010240203320022802e002470d000240024020022802d80222042035460d0020352004203310ea060d0220322042470d020c010b20322042470d010b201b201e412010ea060d00202e202b85202d202485844200520d0020312043470d000240202c2036470d0041002101202c4101470d01203020022802f002460d010b410121010b02402034450d002035102f0b20014102460d002001450d010b201d200241c8026a41d00010e8061a200241003a00e803200241e8016a200241e8036a10eb010c020b20022802dc02450d0120022802d802102f0c010b200ea7210102400240200e422088a722050d00200121040c010b2005210620012104034020042802ec0321042006417f6a22060d000b0340200120012f01064102746a41ec036a28020021012005417f6a22050d000b0b20022003360288042002410036028004200241003602f803200242003703f003200220043602ec03200241003602e803200220013602fc03200220012f010636028404200241e8036a1090020b20022802a0012201450d0220022001417f6a3602a0012002280288012105200228028001210602400240200228028c01220720022802840122042f01064f0d00200421010c010b034002400240024020044190bdc600460d00200428020022010d012005ad2109410021010c020b41edb3ca00412841f8b4ca001039000b200641016a210620043301044220862005ad8421090b2004102f2009a72105200121042009422088a7220720012f01064f0d000b0b200241d0046a41186a220a200120074105746a220441206a290000370300200241d0046a41106a2215200441186a290000370300200241d0046a41086a2216200441106a2900003703002002200441086a2900003703d0042001200741e0006c6a220441a4036a2d0000210d200441a0036a280200210320044198036a290300210e20044190036a290300210f20044188036a290300211020044180036a2903002111200441f8026a2903002112200441f0026a2903002113200441e8026a2903002109200241e8036a41186a2242200441bd036a290000370300201c200441b5036a290000370300201d200441ad036a2900003703002002200441a5036a2900003703e803200741016a2107200441c5036a2d0000211702402006450d00200120074102746a41880b6a2802002101410021072006417f6a2204450d00034020012802880b21012004417f6a22040d000b0b2022200a290300370300201f201529030037030020232016290300370300200b201d290300370300200c201c29030037030020142042290300370300200220022903d0043703c802200220022903e8033703c8032002200736028c0120022005360288012002200136028401200241003602800120094202520d000c020b0b42002120420021210b20024180016a108a02024002402021500d00200241e8036a41186a22034200370300200241e8036a41106a22044200370300200241e8036a41086a22014200370300200242003703e80341e7a2ca00ad4280808080800184220910012206290000210e200241c8026a41086a2205200641086a2900003703002002200e3703c8022006102f20012005290300370300200220022903c8023703e80341ecb5c600ad4280808080d00184220e100122072900002111200241c0046a41086a2206200741086a290000370300200220113703c0042007102f200420022903c0042211370300200241d0046a41086a22172001290300370300200241d0046a41106a220a2011370300200241d0046a41186a220b2006290300370300200220022903e8033703d004200241206a200241d0046a4120109c01200241206a41106a29030021112002290328211920022802202107200342003703002004420037030020014200370300200242003703e80320091001220329000021092005200341086a290000370300200220093703c8022003102f20012005290300370300200220022903c8023703e803200e1001220529000021092006200541086a290000370300200220093703c0042005102f200420022903c004220937030020172001290300370300200a2009370300200b2006290300370300200220022903e8033703d004200242002011420020071b220920207d2019420020071b220e200854ad7d2211200e20087d2219200e56201120095620112009511b22011b3703f00320024200201920011b3703e803200241e8036a2101200241d0046a21040c010b02402008202084500d0041ac86c700413341f8b4ca001039000b200241e8036a41186a22034200370300200241e8036a41106a22044200370300200241e8036a41086a22014200370300200242003703e80341e7a2ca00ad4280808080800184220910012206290000210e200241c8026a41086a2205200641086a2900003703002002200e3703c8022006102f20012005290300370300200220022903c8023703e80341ecb5c600ad4280808080d00184220e100122072900002111200241c0046a41086a2206200741086a290000370300200220113703c0042007102f200420022903c0042211370300200241d0046a41086a22172001290300370300200241d0046a41106a220a2011370300200241d0046a41186a220b2006290300370300200220022903e8033703d004200241086a200241d0046a4120109c01200241086a41106a29030021112002290310211920022802082107200342003703002004420037030020014200370300200242003703e80320091001220329000021092005200341086a290000370300200220093703c8022003102f20012005290300370300200220022903c8023703e803200e1001220529000021092006200541086a290000370300200220093703c0042005102f200420022903c004220937030020172001290300370300200a2009370300200b2006290300370300200220022903e8033703d00420022011420020071b3703f00320022019420020071b3703e803200241e8036a2101200241d0046a21040b2004ad42808080808004842001ad42808080808002841004200241f0046a24000bc50b04067f017e047f037e23004180026b22072400200741186a200242002003200410ed06200741f0006a41186a22084200370300200741f0006a41106a22094200370300200741f0006a41086a220a42003703002007420037037041aa97ca00ad428080808080018422031001220b2900002104200741f0016a41086a220c200b41086a290000370300200720043703f001200b102f200a200c290300370300200720072903f00137037041b297ca00ad428080808080018422041001220b290000210d200c200b41086a2900003703002007200d3703f001200b102f200920072903f001220d370300200741c0006a41086a220e200a290300370300200741c0006a41106a220f200d370300200741c0006a41186a2210200c29030037030020072007290370370340200741286a200741c0006a10e3012007290330210d200728022821112008420037030020094200370300200a42003703002007420037037020031001220b2900002103200c200b41086a290000370300200720033703f001200b102f200a200c290300370300200720072903f00137037020041001220b2900002103200c200b41086a290000370300200720033703f001200b102f200920072903f0012203370300200e200a290300370300200f20033703002010200c290300370300200720072903703703402007200120027d200d420020111b7c370370200741c0006aad22034280808080800484200741f0006aad2204428080808080018410042007200729031822023703f0012007200741186a41086a29030022013703f80102400240024020022001844200510d002007200036023c200741c0006a2000200741f0016a2007413c6a108f020240024020072903404201510d00200741e8006a2903002102200741e0006a290300210120072903484201520d01200741c0006a41106a290300210d200741a8016a200741c0006a41186a290300370300200741a0016a200d370300200741f0006a41086a41003a0000200741f9006a200029000037000020074181016a200041086a29000037000020074189016a200041106a29000037000020074191016a200041186a290000370000200741033a007041c8e1ca004100200741f0006a108c010c010b200741d0006a2903002102200729034821010b2005200154220c200620025420062002511b0d01200620027d200cad7d2106200520017d21050b20052006109a010c010b200741f0006a41186a22004200370300200741f0006a41106a22094200370300200741f0006a41086a220a42003703002007420037037041e7a2ca00ad4280808080800184220d1001220b2900002112200741f0016a41086a220c200b41086a290000370300200720123703f001200b102f200a200c290300370300200720072903f00137037041ecb5c600ad4280808080d0018422121001220b2900002113200c200b41086a290000370300200720133703f001200b102f200920072903f0012213370300200741c0006a41086a2208200a290300370300200741c0006a41106a220e2013370300200741c0006a41186a220f200c290300370300200720072903703703402007200741c0006a4120109c01200741106a2903002113200729030821142007280200210b2000420037030020094200370300200a420037030020074200370370200d10012200290000210d200c200041086a2900003703002007200d3703f0012000102f200a200c290300370300200720072903f001370370201210012200290000210d200c200041086a2900003703002007200d3703f0012000102f200920072903f001220d3703002008200a290300370300200e200d370300200f200c290300370300200720072903703703402007427f20134200200b1b220d200220067d2001200554ad7d7c20144200200b1b2206200120057d7c2205200654220cad7c2206200c2006200d542006200d511b220c1b3703782007427f2005200c1b370370200342808080808004842004428080808080028410040b20074180026a24000bc72b040e7f017e057f067e230041a0046b22072400200741a0036a200110e801410221080240024020072d00a00322094102470d00410121094102210a0c010b200741f0026a41086a200741a9036a290000370300200741f0026a41106a200741b1036a290000370300200741f0026a41186a200741b9036a290000370300200741f0026a41206a200741c1036a29000037030020074197036a220b200741c8036a280000360000200741c8026a41086a220a200741d8036a290300370300200741c8026a41106a220c200741e0036a290300370300200741c8026a41186a220d200741e8036a290300370300200741c8026a41206a220e200741f0036a290300370300200720072900a1033703f0022007200741d0036a2903003703c802024020090d00200741cc036a2802002108200741a0026a41206a200b280000360200200741a0026a41186a2007418f036a290000370300200741a0026a41106a20074187036a290000370300200741a0026a41086a200741ff026a290000370300200741f8016a41086a200a290300370300200741f8016a41106a200c290300370300200741f8016a41186a200d290300370300200741f8016a41206a200e290300370300200720072900f7023703a002200720072903c8023703f8010b4102210a4101210920084102460d00200741c6036a200741a0026a41206a280200360100200741be036a200741a0026a41186a290300370100200741b6036a200741a0026a41106a290300370100200741ae036a200741a0026a41086a290300370100200741f0026a41086a200741f8016a41086a290300370300200741f0026a41106a200741f8016a41106a290300370300200741f0026a41186a200741f8016a41186a290300370300200741f0026a41206a200741f8016a41206a290300370300200720072903a0023701a603200720072903f8013703f002410021092008210a0b200741c8016a41086a200741a0036a41086a2208290100370300200741c8016a41106a200741a0036a41106a220b290100370300200741c8016a41186a200741a0036a41186a220c290100370300200741c8016a41206a200741a0036a41206a290100370300200741c8016a41286a200741a0036a41286a2f01003b0100200741a0016a41086a220d200741f0026a41086a220e290300370300200741a0016a41106a220f200741f0026a41106a2210290300370300200741a0016a41186a2211200741f0026a41186a2212290300370300200741a0016a41206a2213200741f0026a41206a290300370300200720072901a0033703c801200720072903f0023703a00102400240024002400240024002400240024020090d00200741d0006a41286a221420072903a001370300200741d0006a41206a200741ee016a280100360200200741d0006a41186a200741e6016a290100370300200741d0006a41106a200741de016a290100370300200741d0006a41086a200741d6016a29010037030020074180016a200d29030037030020074188016a200f29030037030020074190016a201129030037030020074198016a2013290300370300200720072901ce013703502007200a360274200c4200370300200b420037030020084200370300200742003703a003418de6c300ad4280808080e000841001220929000021152008200941086a290000370300200720153703a0032009102f419ce6c300ad4280808080e00084100122092900002115200741f8016a41086a220a200941086a290000370300200720153703f8012009102f200b20072903f8012215370300200e2008290300370300201020153703002012200a290300370300200720072903a0033703f002200741c8006a200741f0026a4120109501200728024c410020072802481b210c024020072802744101470d002014280200200c470d0020004183243b0100200041086a4115360200200041046a419bcdc100360200200041026a41053a00000c070b200741a0036a200210e8010240024020072d00a00322084102460d00200741f0026a41086a220d200741aa036a290100370300200741f0026a410e6a220e200741b0036a290100370100200720072901a2033703f002200741bc036a2802002109200741b8036a280200210a20080d012009450d00200a102f0b20004183243b0100200041086a411a360200200041046a41c0cdc100360200200041026a41033a00000c070b20072d00a1032108200741c8016a410e6a220f200e290100370100200741c8016a41086a220e200d290300370300200741d1026a200e290300370000200741d7026a200f290100370000200720083a00c802200720072903f0023700c902200720093600e3022007200a3600df022007200741a0036a41206a2d00003a00e702200641086a280200211120072802742116200728027821172007200628020022123602f80120072012201141057422096a3602fc012007200741d0006a360280020240024002402011450d00200741f8016a41086a210d2012210803402007200841206a220a3602f801200741a0036a200d2008108b0220072802a00322080d02200a2108200941606a22090d000b0b4104210f41002110410021140c010b200741f0026a41086a220a200741a0036a410c6a280200360200200720072902a4033703f0024110102d220f450d02200f2008360200200f20072903f002370204200f410c6a200a280200360200200a200741f8016a41086a280200360200200720072903f80122153703f00202402015a7220920072802f402220d470d0041012110410121140c010b200741a0036a4104722113200d41606a21184101211041012114034020092108024003402007200841206a22093602f002200741a0036a200a2008108b0220072802a003220e0d0120092108200d2009470d000c030b0b200741c8016a41086a201341086a28020022193602002007201329020022153703c801200741a0036a41086a221a2019360200200720153703a003024020142010470d00201041016a22142010490d05201041017422192014201920144b1b221441ffffffff00712014470d05201441047422144100480d050240024020100d002014102d210f0c010b200f201041047420141031210f0b200f450d04201441047621140b200f20104104746a2219200e360200201920072903a0033702042019410c6a201a280200360200201041016a211020182008470d000b0b02400240200741d0006a41186a350200422086200735026084100e2215422088a7220e0d00410121130c010b2015a721130b200741a0036a41186a200341186a290000370300200741a0036a41106a200341106a290000370300200741a0036a41086a200341086a290000370300200720032900003703a003200741003602f802200742013703f0022013200e200741f0026a108c020240024020072802f402220d20072802f802220a6b4120490d00200a41206a210820072802f00221090c010b200a41206a2208200a490d03200d41017422092008200920084b1b22194100480d0302400240200d0d002019102d21090c010b20072802f002200d2019103121090b2009450d02200720193602f402200720093602f0022019210d0b200720083602f8022009200a6a220a20072903a003370000200a41086a200741a0036a41086a290300370000200a41106a200741a0036a41106a290300370000200a41186a200741a0036a41186a2903003700002008ad4220862009ad84100322082900002115200841086a290000211b200841106a290000211c200741c8016a41186a200841186a290000370300200741c8016a41106a201c370300200741c8016a41086a201b370300200720153703c8012008102f0240200d450d002009102f0b0240200e450d002013102f0b0240200741c8016a200741c8026a412010ea060d00200c201720111b210e4101201620111b2111200741d0006a41106a210d4100210902402010450d002010410474210a200f410c6a2108410021090340200828020020096a2109200841106a2108200a41706a220a0d000b0b2007200728026c20096b36026c200110ec01200741a0036a41106a220a2005370300200741d0036a200e360200200741cc036a2011360200200741c8036a200c360200200741c4036a200728026c360200200741a0036a41186a220c200d290300370300200741a0036a41206a200d41086a280200360200200741d4036a2003290000370200200741dc036a200341086a290000370200200741e4036a200341106a290000370200200741ec036a200341186a290000370200200720043703a803200741003a00a0032002200741a0036a10eb01200741a0036a2001108d02200741a0036a41086a2209290300211520072903a003211b200741306a200142004200108e02200741306a41106a290300211d2007290338211c2007290330211e200c4200370300200a420037030020094200370300200742003703a00341e7a2ca00ad4280808080800184221f100122012900002104200741f8016a41086a2208200141086a290000370300200720043703f8012001102f20092008290300370300200720072903f8013703a00341ecb5c600ad4280808080d0018422201001220129000021042008200141086a290000370300200720043703f8012001102f200b20072903f801370000200b41086a22012008290300370000200741f0026a41086a220d2009290300370300200741f0026a41106a220e200a290300370300200741f0026a41186a2211200c290300370300200720072903a0033703f002200741186a200741f0026a4120109c01200741186a41106a2903004200200728021822131b21042007290320420020131b210502400240201e4200520d00200c4200370300200a420037030020094200370300200742003703a003201f10012213290000211f2008201341086a2900003703002007201f3703f8012013102f20092008290300370300200720072903f8013703a003202010012213290000211f2008201341086a2900003703002007201f3703f8012013102f200b20072903f80137000020012008290300370000200d2009290300370300200e200a2903003703002011200c290300370300200720072903a0033703f0022007427f2004201d7c2005201c7c221c2005542208ad7c22052008200520045420052004511b22081b3703a8032007427f201c20081b3703a003200741a0036a21080c010b200c4200370300200a420037030020094200370300200742003703a003201f10012213290000211f2008201341086a2900003703002007201f3703f8012013102f20092008290300370300200720072903f8013703a003202010012213290000211f2008201341086a2900003703002007201f3703f8012013102f200b20072903f80137000020012008290300370000200d2009290300370300200e200a2903003703002011200c290300370300200720072903a0033703f002200742002004201d7d2005201c54ad7d221d2005201c7d221c200556201d200456201d2004511b22081b3703a80320074200201c20081b3703a003200741a0036a21080b200741f0026aad4280808080800484221c2008ad428080808080028410042007201b3703f801200720153703800202400240201b20158450450d0042002105420021150c010b200720023602a001200741f0026a2002200741f8016a200741a0016a108f02024020072903f0024201510d0020074198036a290300211520074190036a290300210520072903f8024201520d01200741f0026a41106a2903002104200741d8036a200741f0026a41186a290300370300200741d0036a2004370300200741a0036a41086a41003a0000200741a9036a2002290000370000200741b1036a200241086a290000370000200741b9036a200241106a290000370000200741c1036a200241186a290000370000200741033a00a00341c8e1ca004100200741a0036a108c010c010b20074180036a290300211520072903f80221050b200741a0036a41186a22014200370300200741a0036a41106a220a4200370300200741a0036a41086a22094200370300200742003703a00341e7a2ca00ad428080808080018422041001220c290000211b200741f8016a41086a2208200c41086a2900003703002007201b3703f801200c102f20092008290300370300200720072903f8013703a00341ecb5c600ad4280808080d00184221b1001220c290000211d2008200c41086a2900003703002007201d3703f801200c102f200b20072903f801370000200b41086a220e2008290300370000200741f0026a41086a22112009290300370300200741f0026a41106a2213200a290300370300200741f0026a41186a22032001290300370300200720072903a0033703f0022007200741f0026a4120109c01200741106a290300211d2007290308211f2007280200210c20014200370300200a420037030020094200370300200742003703a00320041001220d29000021042008200d41086a290000370300200720043703f801200d102f20092008290300370300200720072903f8013703a003201b1001220d29000021042008200d41086a290000370300200720043703f801200d102f200b20072903f801370000200e2008290300370000201120092903003703002013200a29030037030020032001290300370300200720072903a0033703f0022007427f201d4200200c1b220420157c201f4200200c1b221520057c221b2015542208ad7c22052008200520045420052004511b22081b3703a8032007427f201b20081b3703a003201c200741a0036aad42808080808002841004200041043a000002402010450d0020104104742108200f41046a210003400240200041046a280200450d002000280200102f0b200041106a2100200841706a22080d000b0b02402014450d00200f102f0b200641046a280200450d092012102f0c090b200f20104104746a210c024020100d00200f21080c050b200741a0036aad4280808080800484211c200f210803400240200828020022090d00200841106a21080c060b2007280268220b41164d0d04200841046a280200210a20072802602101200841086a280200210d2008410c6a35020021042009ad4280808080800484100322092900002105200941086a2900002115200941106a290000211b200741a0036a41186a200941186a290000370300200741a0036a41106a201b370300200741a0036a41086a2015370300200720053703a0032009102f200bad4220862001ad84200b41696aad422086200141176aad844101201c2004422086200aad84100f0240200d450d00200a102f0b200841106a2208200c470d000c060b0b20004183243b0100200041086a4115360200200041046a41dacdc100360200200041026a41023a00000c060b1036000b1038000b4117200b104b000b200c2008460d000340200841106a21090240200841086a280200450d00200841046a280200102f0b20092108200c2009470d000b0b02402014450d00200f102f0b20004183243b0100200041086a4110360200200041046a41b0cdc100360200200041026a41043a00000b200741e4006a280200450d002007280260102f0b200641046a280200450d002006280200102f0b200741a0046a24000bd20403067f017e037f230041306b22012400024020002802202202450d00034020002002417f6a360220200028020821032000280200210402400240200028020c2205200028020422062f01064f0d00200621020c010b034002400240024020064190bdc600460d00200628020022020d012003ad2107410021020c020b41edb3ca00412841f8b4ca001039000b200441016a210420063301044220862003ad8421070b2006102f2007a72103200221062007422088a7220520022f01064f0d000b0b200541016a21082002200541e0006c6a220941a0036a280200210a2009419c036a280200210520094198036a2802002106200941e8026a290300210702402004450d00200220084102746a41880b6a2802002102410021082004417f6a2204450d00034020022802880b21022004417f6a22040d000b0b2000200836020c20002003360208200020023602042000410036020020074202510d010240024020050d00200621020c010b2005210320062102034020022802ec0321022003417f6a22030d000b0340200620062f01064102746a41ec036a28020021062005417f6a22050d000b0b2001200a3602282001410036022020014100360218200142003703102001200236020c200141003602082001200636021c200120062f0106360224200141086a109002200028022022020d000b0b02400240200028020422064190bdc600460d00200628020021022006102f2002450d00034020024190bdc600460d02200228020021062002102f2006210220060d000b0b200141306a24000f0b41edb3ca00412841f8b4ca001039000bad0302047f047e230041d0006b22032400024002402001280200220441186a280200220541164d0d00200428021021062002ad42808080808004842207100322042900002108200441086a2900002109200441106a290000210a200341106a41186a200441186a290000370300200341106a41106a200a370300200341106a41086a2009370300200320083703102004102f20032005ad4220862006ad84200541696aad422086200641176aad844101200341106aad428080808080048410101073024002402003280200450d0020012802002204280218220541164d0d032004280210210620071003220441086a2900002108200441106a29000021092004290000210a200341306a41186a200441186a290000370300200341306a41106a2009370300200341306a41086a20083703002003200a3703302004102f2005ad4220862006ad84200541696aad422086200641176aad844101200341306aad4280808080800484101120002002360200200020032903003702042000410c6a200341086a2802003602000c010b200041003602000b200341d0006a24000f0b41172005104b000b41172005104b000ba40301057f230041106b22032400024002400240200141046a2204417f4c0d000240024020040d00410121050c010b2004102d2205450d020b2003410036020820032004360204200320053602002001200310690240024020032802042206200328020822056b2001490d00200328020021040c010b200520016a22042005490d03200641017422072004200720044b1b22074100480d030240024020060d002007102d21040c010b200328020020062007103121040b2004450d022003200736020420032004360200200721060b200420056a2000200110e8061a02400240200241046a2802002207200241086a28020022006b200520016a2201490d00200228020021050c010b200020016a22052000490d03200741017422002005200020054b1b22004100480d030240024020070d002000102d21050c010b200228020020072000103121050b2005450d0220022005360200200241046a2000360200200241086a28020021000b200241086a200020016a360200200520006a2004200110e8061a02402006450d002004102f0b200341106a24000f0b103d000b1036000b1038000bfd0403027f037e027f230041e0016b22022400418de6c300ad4280808080e00084100122032900002104200241086a200341086a290000370300200220043703002003102f41f0e8c600ad4280808080f0008410012203290000210420024198016a41086a200341086a29000037030020022004370398012003102f02404120102d2203450d0020032001290000370000200341186a200141186a290000370000200341106a200141106a290000370000200341086a200141086a2900003700002003ad4280808080800484100322012900002104200141086a2900002105200141106a2900002106200241c8006a41186a2207200141186a290000370300200241c8006a41106a22082006370300200241c8006a41086a2005370300200220043703482001102f2003102f41c000102d2203450d0020032002290300370000200320022903980137001020032002290348370020200341086a200241086a290300370000200341186a20024198016a41086a290300370000200341286a200241c8006a41086a2201290300370000200341306a2008290300370000200341386a2007290300370000200241c8006a200310f6022002290348210420024198016a200141c80010e8061a0240024020044201510d002002410041c50010e7061a0c010b200220024198016a41c80010e8061a0b2003102f200041386a200241386a290300370300200041306a200241306a290300370300200041286a200241286a290300370300200041206a200241206a290300370300200041186a200241186a290300370300200041106a200241106a290300370300200041086a200241086a29030037030020002002290300370300200241e0016a24000f0b1036000bdb130a027f017e017f027e027f067e037f037e027f067e230041e0046b22042400418de6c300ad4280808080e00084100122052900002106200441a8016a41086a200541086a290000370300200420063703a8012005102f41f0e8c600ad4280808080f00084100122052900002106200441206a41086a200541086a290000370300200420063703202005102f0240024002404120102d2205450d0020052001290000370000200541186a200141186a290000370000200541106a200141106a290000370000200541086a200141086a2900003700002005ad4280808080800484100322072900002106200741086a2900002108200741106a2900002109200441e0036a41186a220a200741186a290000370300200441e0036a41106a220b2009370300200441e0036a41086a2008370300200420063703e0032007102f2005102f41c000102d2205450d00200520042903a80137000020052004290320370010200520042903e003370020200541086a200441a8016a41086a290300370000200541186a200441206a41086a290300370000200541286a200441e0036a41086a290300370000200541306a200b290300370000200541386a200a290300370000200441206a200510f6022004290320210c4200210920044200370320200441e8006a280200210a20042d006c210b02400240200c4201510d00200441f0006a41306a4200370300200441f0006a41286a4200370300200441f0006a41206a420037030020044188016a420037030020044180016a4200370300200441f0006a41086a4200370300200442003703704200210d42002108420021064200210e0c010b200441206a41386a290300210f200441206a41306a2903002110200441206a41206a290300210d200441206a41186a2903002109200441206a41c0006a290300210e2004290330210620042903282108200441f0006a41206a200441206a41286a290300370300200441f0006a41286a2010370300200441f0006a41306a200f37030020044180016a20093703002004200d3703880120042008370370200420063703780b427f2006200d7c200820097c22102008542207ad7c220f2007200f200654200f2006511b22071b210f427f201020071b21100240200920027c221142ffffe883b1de1656200d20037c2011200954ad7c22094200522009501b0d002010200f84500d020b2004200237037020042003370378200441a8016a41186a200441f0006a41186a2903002209370300200441a8016a41206a2212200441f0006a41206a290300370300200441a8016a41286a2213200441f0006a41286a290300370300200441a8016a41306a2214200441f0006a41306a290300370300200420033703b001200420023703a8012004200429038001220d3703b8012008200256200620035620062003511b2107200320067d2002200854ad7d2111200620037d2008200254ad7d2115200220087d2116200820027d21172010200f8450211802400240427f2002200d7c220620062002542219200320097c2019ad7c220620035420062003511b22191b2208428080e983b1de16544100427f200620191b2206501b0d00200441b8016a2903002108201429030021092013290300211a2012290300211b20042903b001211c20042903a801211d4201211e20042903c001211f0c010b4200211e02402008200684500d0020082006109a0120044198046a200637030020044190046a2008370300200441e0036a41086a41013a0000200441e9036a2001290000370000200441f1036a200141086a290000370000200441f9036a200141106a29000037000020044181046a200141186a290000370000200441033a00e00341c8e1ca004100200441e0036a108c010b0b2015201120071b210d2017201620071b210f2007ad21102018ad2106200441c8006a201b370300200441d0006a201a370300200441306a201c370300200441d8006a2009370300200441386a20083703002004201f3703402004200e3703602004201d370328410021072004200b4100200c42015122181b3a006c2004200a410020181b3602682004201e420151220aad3703200240200a0d002005ad428080808080088410050c030b200441c0003602e403200420053602e003200441286a200441e0036a109003410121070c020b1036000b420221060b2005102f0240024020064202520d004200210642002108420021090c010b024002400240200c4201510d00200741ff0171450d0041032107200441e0026a21050c010b200c4201520d01200741ff01710d0141042107200441e0016a21050b200541046a20073a0000200541003a0000200541056a20012900003700002005410d6a200141086a290000370000200541156a200141106a2900003700002005411d6a200141186a29000037000041c8e1ca0041002005108c010b02402006427f7c220c4201560d004200210642002108420021090240200ca70e020002000b20044198046a200337030020044190046a2002370300200441e0036a41086a41003a0000200441e9036a2001290000370000200441f1036a200141086a290000370000200441f9036a200141106a29000037000020044181046a200141186a290000370000200441033a00e00341c8e1ca004100200441e0036a108c010b200441e0036a41186a220b4200370300200441e0036a41106a22074200370300200441e0036a41086a22014200370300200442003703e00341e7a2ca00ad428080808080018422021001220a2900002103200441e0016a41086a2205200a41086a290000370300200420033703e001200a102f20012005290300370300200420042903e0013703e00341ecb5c600ad4280808080d0018422031001220a29000021062005200a41086a290000370300200420063703e001200a102f200720042903e0012206370300200441e0026a41086a22182001290300370300200441e0026a41106a22192006370300200441e0026a41186a22122005290300370300200420042903e0033703e002200441086a200441e0026a4120109c01200441086a41106a2903002106200429031021082004280208210a200b42003703002007420037030020014200370300200442003703e00320021001220b29000021022005200b41086a290000370300200420023703e001200b102f20012005290300370300200420042903e0013703e00320031001220b29000021022005200b41086a290000370300200420023703e001200b102f200720042903e0012202370300201820012903003703002019200237030020122005290300370300200420042903e0033703e002200420064200200a1b3703e803200420084200200a1b3703e003200441e0026aad4280808080800484200441e0036aad4280808080800284100420102106200f2108200d21090b2000200837030820002006370300200041106a2009370300200441e0046a24000bd61208027f017e017f027e027f0b7e067f027e230041a0036b2204240020032802002105418de6c300ad4280808080e00084100122032900002106200441d8006a41086a200341086a290000370300200420063703582003102f41f0e8c600ad4280808080f0008410012203290000210620044190016a41086a200341086a29000037030020042006370390012003102f02404120102d2203450d0020032001290000370000200341186a200141186a290000370000200341106a200141106a290000370000200341086a200141086a2900003700002003ad4280808080800484100322072900002106200741086a2900002108200741106a2900002109200441a0026a41186a220a200741186a290000370300200441a0026a41106a220b2009370300200441a0026a41086a2008370300200420063703a0022007102f2003102f41c000102d2203450d00200320042903583700002003200429039001370010200320042903a002370020200341086a200441d8006a41086a290300370000200341186a20044190016a41086a290300370000200341286a200441a0026a41086a290300370000200341306a200b290300370000200341386a200a29030037000020044190016a200310f602200429039001210c420021092004420037039001200441d8016a280200210a20042d00dc01210b02400240200c4201510d00200441206a41306a4200370300200441206a41286a4200370300200441206a41206a4200370300200441386a4200370300200441306a4200370300200441206a41086a4200370300200442003703204200210d42002108420021064200210e0c010b20044190016a41386a290300210f20044190016a41306a290300211020044190016a41206a290300210d20044190016a41186a290300210920044190016a41c0006a290300210e20042903a00121062004290398012108200441206a41206a20044190016a41286a290300370300200441206a41286a2010370300200441206a41306a200f370300200441306a20093703002004200d37033820042008370320200420063703280b427f2006200d7c200820097c220d2008542207ad7c22092007200920065420092006511b22071b210f427f200d20071b21104200211102400240024002402002290300221242ffffe883b1de1656200241086a290300220d420052200d501b0d0042002113420021144200211542002116420021092010200f84500d010b4200211342002006200d7c200820127c22112008542207ad7c22082007200820065420082006511b22071b21094200201120071b210620074101470d0120064280807c832116200642ff0183211120064280fe03832114420021150b2003102f20002014201184201684370308200041106a2015201384200984370300420121060c010b200441a0026a41186a22174200370300200441a0026a41106a22184200370300200441a0026a41086a22024200370300200442003703a00241e7a2ca00ad4280808080800184221310012219290000211420044190026a41086a2207201941086a29000037030020042014370390022019102f2002200729030037030020042004290390023703a00241ecb5c600ad4280808080d0018422141001221929000021152007201941086a29000037030020042015370390022019102f20182004290390022215370300200441d8006a41086a221a2002290300370300200441d8006a41106a221b2015370300200441d8006a41186a22192007290300370300200420042903a002370358200441086a200441d8006a4120109c01200441086a41106a2903002115200429031021162004280208211c201742003703002018420037030020024200370300200442003703a00220131001221729000021132007201741086a29000037030020042013370390022017102f2002200729030037030020042004290390023703a00220141001221729000021132007201741086a29000037030020042013370390022017102f20182004290390022213370300201a2002290300370300201b201337030020192007290300370300200420042903a002370358200420154200201c1b3703a802200420164200201c1b3703a002200441d8006aad4280808080800484200441a0026aad4280808080800284100420042009370328200420063703202019200441306a220741086a2903002213370300200441d8006a41206a2202200741106a29030037030020044180016a2218200741186a29030037030020044188016a2219200741206a290300370300200420093703602004200637035820042007290300221437036802400240427f200620147c221420142006542207200920137c2007ad7c220620095420062009511b22071b2209428080e983b1de16544100427f200620071b2206501b0d00201b290300210620192903002109201829030021132002290300211420042903602115200429035821164201211d2004290370211e0c010b4200211d02402009200684500d0020092006109a01200441d8026a2006370300200441d0026a2009370300200441a0026a41086a41013a0000200441a9026a2005290000370000200441b1026a200541086a290000370000200441b9026a200541106a290000370000200441c1026a200541186a290000370000200441033a00a00241c8e1ca004100200441a0026a108c010b0b200441b8016a2014370300200441c0016a2013370300200441a0016a2015370300200441c8016a2009370300200441a8016a20063703002004201e3703b0012004200e3703d0012004201637039801410021072004200b4100200c42015122021b3a00dc012004200a410020021b3602d8012004201d4201512202ad370390010240024020020d002003ad42808080808008841005410121070c010b200441c0003602a402200420033602a00220044198016a200441a0026a1090030b2003102f2010200f8450ad2106024002400240200c4201510d0020070d0041032107200441a0026a21030c010b200c4201522007410173720d014104210720044190016a21030b200341046a20073a0000200341003a0000200341056a20012900003700002003410d6a200141086a290000370000200341156a200141106a2900003700002003411d6a200141186a29000037000041c8e1ca0041002003108c010b20002006370308200041286a200d370300200041206a2012370300200041186a2008370300200041106a2011370300420021060b20002006370300200441a0036a24000f0b1036000ba60303057f017e027f024020002802202201450d00034020002001417f6a360220200028020821022000280200210302400240200028020c2204200028020422052f01064f0d00200521010c010b034002400240024020054190bdc600460d00200528020022010d012002ad2106410021010c020b41edb3ca00412841f8b4ca001039000b200341016a210320053301044220862002ad8421060b2005102f2006a72102200121052006422088a7220420012f01064f0d000b0b200441016a210720012004410c6c6a220541ec026a2802002108200541e8026a280200210402402003450d00200120074102746a41ec036a2802002101410021072003417f6a2205450d00034020012802ec0321012005417f6a22050d000b0b2000200736020c20002002360208200020013602042000410036020002402004450d002008450d002004102f0b200028022022010d000b0b02400240200028020422054190bdc600460d00200528020021012005102f2001450d00034020014190bdc600460d02200128020021052001102f2005210120050d000b0b0f0b41edb3ca00412841f8b4ca001039000b9e0703057f0c7e067f230041106b21020240200128020422034104490d0020012802002204280000210520012003417c6a22063602042001200441046a36020020064108490d00200429000421072001200341746a220636020420012004410c6a36020020064108490d00200429000c210820012003416c6a22063602042001200441146a36020020064108490d00200429001421092001200341646a220636020420012004411c6a36020020064108490d00200429001c210a20012003415c6a22063602042001200441246a36020020064108490d002004290024210b2001200341546a220636020420012004412c6a36020020064108490d00200429002c210c20012003414c6a22063602042001200441346a36020020064108490d002004290034210d2001200341446a220636020420012004413c6a36020020064108490d00200429003c210e2001200341bc7f6a22063602042001200441c4006a36020020064108490d002004290044210f2001200341b47f6a22063602042001200441cc006a36020020064108490d00200429004c21102001200341ac7f6a22063602042001200441d4006a36020020064108490d00200429005421112001200341a47f6a22063602042001200441dc006a36020020064108490d00200429005c211220012003419c7f6a22063602042001200441e4006a36020020064104490d00200428006421132001200341987f6a22063602042001200441e8006a36020020064104490d00200428006821142001200341947f6a22063602042001200441ec006a36020020064104490d00200428006c21152001200341907f6a22063602042001200441f0006a36020020064104490d002004280070211620012003418c7f6a22063602042001200441f4006a22043602002006450d0020042d0000210620012003418b7f6a22173602042001200441016a360200200641014b0d00410021180240024020060e020100010b410121180b20174104490d00200428000121062001200341877f6a3602042001200441056a360200200020183a007820002006360274200020163602702000201536026c2000201436026820002013360264200020053602602000201237035820002011370350200020103703482000200f3703402000200e3703382000200d3703302000200c3703282000200b3703202000200a370318200020093703102000200837030820002007370300200041fc006a2002410c6a280000360000200020022800093600790f0b200041023a00780bc31606027f017e017f027e097f017e230041b0016b2203240041aa97ca00ad4280808080800184100122042900002105200341e8006a41086a200441086a290000370300200320053703682004102f41e4f4c100ad4280808080b00184100122042900002105200341c8006a41086a200441086a290000370300200320053703482004102f0240024002400240024002404120102d2204450d0020042001290000370000200441186a200141186a290000370000200441106a200141106a290000370000200441086a200141086a2900003700002004ad4280808080800484100322062900002105200641086a2900002107200641106a2900002108200341f8006a41186a2209200641186a290000370300200341f8006a41106a220a2008370300200341f8006a41086a2007370300200320053703782006102f2004102f41c000102d2204450d00200420032903683700002004200329034837001020042003290378370020200441086a200341e8006a41086a290300370000200441186a200341c8006a41086a290300370000200441286a200341f8006a41086a290300370000200441306a200a290300370000200441386a2009290300370000200341c00036029c012003200436029801200341286a2004ad428080808080088410021073024002402003280228220b0d004102210a0c010b200328022c210c2003200341286a41086a2802003602a4012003200b3602a001200341206a200341a0016a10e6010240024020032802200d0020032802242106200341186a200341a0016a10e60120032802180d00200328021c2109200341106a200341a0016a10e60120032802100d0020032802a401220a450d002003280214210d2003200a417f6a3602a401200320032802a001220a41016a3602a001200a2d0000220e41014b0d004100210a02400240200e0e020100010b4101210a0b200341086a200341a0016a10e60120032802080d0020032802a401220f200328020c2210490d002010417f4c0d040240024020100d004101210e0c010b20101033220e450d04200e20032802a0012211201010e8061a2003200f20106b3602a4012003201120106a3602a0010b200e450d002010ad22054220862005842105200341e8006a41026a200341f8006a41026a2d00003a0000200320032f00783b01680c010b20034100360250200342013703482003410b36026c200320034198016a3602682003200341c8006a3602ac012003418c016a41013602002003420137027c200341b885c7003602782003200341e8006a36028801200341ac016a41d8dbc100200341f8006a103c1a200335025042208620033502488410080240200328024c450d002003280248102f0b4102210a0b200c450d00200b102f0b200341f8006a41026a200341e8006a41026a2d00003a0000200320032f01683b017802400240200a4102470d004101210b41848ec2002106411121090c010b200341c8006a41026a200341f8006a41026a2d00003a0000200320032f01783b01484100210b0b2004102f200341c4006a41026a2204200341c8006a41026a2d00003a0000200320032f01483b014402400240200b0d00200341386a220b2005370300200341c3006a20042d00003a00002003200a3a00402003200e3602342003200d3602302003200936022c200320032f01443b004120032006360228200341286a41086a2109200228026020064b0d010c060b2000200636020420004101360200200041086a20093602000c060b41aa97ca00ad4280808080800184100122042900002107200341e8006a41086a200441086a290000370300200320073703682004102f41c0f4c100ad4280808080c00184100122042900002107200341c8006a41086a200441086a290000370300200320073703482004102f4120102d2204450d0020042001290000370000200441186a200141186a290000370000200441106a200141106a290000370000200441086a200141086a2900003700002004ad4280808080800484100322062900002107200641086a2900002108200641106a2900002112200341f8006a41186a220a200641186a290000370300200341f8006a41106a220d2012370300200341f8006a41086a220c2008370300200320073703782006102f2004102f41c000102d2204450d002005a72110200420032903683700002004200329034837001020042003290378370020200441086a200341e8006a41086a290300370000200441186a200341c8006a41086a290300370000200441286a200c290300370000200441306a200d290300370000200441386a200a290300370000200341f8006a200441c000109302200329027c2105200328027821062004102f02400240024002402006450d00200341f8006a20062005422088a720021094022005a7210220032802784101460d03200341c8006a41186a220d200341f8006a410472220441186a280200360200200341c8006a41106a220c200441106a290200370300200341c8006a41086a220a200441086a2902003703002003200429020037034802402010450d00200e102f0b200341286a41186a200d280200360200200341286a41106a200c290300370300200341286a41086a200a2903003703002003200329034837032841aa97ca00ad4280808080800184100122042900002105200341e8006a41086a200441086a290000370300200320053703682004102f41e4f4c100ad4280808080b00184100122042900002105200a200441086a290000370300200320053703482004102f4120102d2204450d0420042001290000370000200441186a200141186a290000370000200441106a200141106a290000370000200441086a200141086a2900003700002004ad4280808080800484100322012900002105200141086a2900002107200141106a2900002108200341f8006a41186a220a200141186a290000370300200341f8006a41106a220e2008370300200341f8006a41086a220d2007370300200320053703782001102f2004102f41c000102d2204450d04200420032903683700002004200329034837001020042003290378370020200441086a200341e8006a41086a290300370000200441186a200341c8006a41086a290300370000200441286a200d290300370000200441306a200e290300370000200441386a200a290300370000200341003602800120034201370378200341286a200341f8006a109502200341286a410472200341f8006a1095022009200341f8006a10950220032d0040210e200328027c2003280280012201460d012003280278210a0c020b200041958ec20036020420004101360200200041086a411a3602000c060b200141016a220a2001490d042001410174220d200a200d200a4b1b220d4100480d040240024020010d00200d102d210a0c010b20032802782001200d1031210a0b200a450d022003200d36027c2003200a3602780b2003200141016a36028001200a20016a200e3a00002003280234210c2003413c6a280200220a200341f8006a106902400240200328027c220d200328028001220e6b200a490d00200328027821010c010b200e200a6a2201200e490d04200d41017422102001201020014b1b22104100480d0402400240200d0d002010102d21010c010b2003280278200d2010103121010b2001450d022003201036027c200320013602782010210d0b2001200e6a200c200a10e8061a2004ad4280808080800884200e200a6aad4220862001ad8410040240200d450d002001102f0b2004102f2002450d052006102f0c050b2000200329027c370204200041013602002002450d032006102f0c030b1036000b103d000b1038000b2010450d01200e102f0c010b20002003290328370204200041003602002000411c6a200341c0006a280200360200200041146a200b2903003702002000410c6a20092903003702000b200341b0016a24000b980302057f017e230041e0006b220324002003200236020c20032001360208200341106a2002ad4220862001ad8410021073024002400240024020032802102201450d00200328021421022003200341186a280200360224200320013602202003200341206a10e6010240024020032802000d002003280224220420032802042205490d002005417f4c0d040240024020050d00410121060c010b200510332206450d06200620032802202207200510e8061a2003200420056b3602242003200720056a3602200b2006450d0020002005ad2208422086200884370204200020063602000c010b20034100360230200342013703282003410b36023c2003200341086a3602382003200341286a360244200341dc006a41013602002003420137024c200341b885c7003602482003200341386a360258200341c4006a41d8dbc100200341c8006a103c1a200335023042208620033502288410080240200328022c450d002003280228102f0b200041003602000b2002450d012001102f0c010b200041003602000b200341e0006a24000f0b103d000b1036000bf79c0106167f017e047f017e037f027e230041e0046b22042400200441003602b002200420023602ac02200420013602a80202400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020024104490d00200441043602b00220012800004180c2cdeb06460d01410121010c030b200441013a0068200441e4036a4101360200200442013702d403200441b4afca003602d0032004412836029402200420044190026a3602e0032004200441e8006a3602900220044180016a200441d0036a103a0c010b0240024002400240024002402002417c714104460d00200241074d0d02200441083602b0020240200128000422054101460d00410221010c080b200441d0036a200441a8026a10cc0420042802d0034101470d014104210641002107410021080c040b200441013a0068200441e4036a4101360200200442013702d403200441b4afca003602d0032004412836029402200420044190026a3602e0032004200441e8006a3602900220044180016a200441d0036a103a0c050b200441d0036a410572210941042106412c210a4100210541002107410021084100210b034020044190026a41026a2201200941026a2d00003a0000200420092f00003b019002200428028004210c20042802fc03210d20042802f803210e20042802f403210f20042802f003211020042802ec03211120042802e803211220042802e403211320042802e003211420042802dc03211520042802d8032116024020042d00d4032217417e6a41ff0171410c4f0d0041002118024002400240024002400240024002400240024002400240024020170e100c0c000102030405060708090a0b0c0c0c0b410121180c0b0b410221180c0a0b410321180c090b410421180c080b410521180c070b410621180c060b410721180c050b410821180c040b410921180c030b410a21180c020b410b21180c010b410c21180b0240200b41ff0171221920184d0d00411321010c040b41002118024002400240024002400240024002400240024002400240024020170e100c0c000102030405060708090a0b0c0c0c0b410121180c0b0b410221180c0a0b410321180c090b410421180c080b410521180c070b410621180c060b410721180c050b410821180c040b410921180c030b410a21180c020b410b21180c010b410c21180b024020192018470d00411421010c040b4100210b02400240024002400240024002400240024002400240024020170e100c0c000102030405060708090a0b0c0c0c0b4101210b0c0b0b4102210b0c0a0b4103210b0c090b4104210b0c080b4105210b0c070b4106210b0c060b4107210b0c050b4108210b0c040b4109210b0c030b410a210b0c020b410b210b0c010b410c210b0b20044180016a41026a221820012d00003a0000200420042f0190023b018001024020072008470d00200741016a22012007490d0920052001200520014b1bad42307e221a422088a70d09201aa722014100480d090240024020070d002001102d21060c010b2006200a41546a2001103121060b2006450d0a200141306e21080b2006200a6a220141546a20173a00002001200c3602002001417c6a200d360200200141786a200e360200200141746a200f360200200141706a20103602002001416c6a2011360200200141686a2012360200200141646a2013360200200141606a20143602002001415c6a2015360200200141586a2016360200200141556a220120042f0180013b0000200141026a20182d00003a0000200541026a2105200a41306a210a200741016a2107200441d0036a200441a8026a10cc0420042802d0034101460d030c000b0b41082002104a000b024002402017410e4b0d00024002400240024002400240024002400240024002400240024020170e0f0001020304050607080e090e0a0b0c000b2015450d0d2016102f0c0d0b02402015450d002016102f0b2012450d0c2013102f0c0c0b02402014450d002014410474210a2016211703400240201741046a280200450d002017280200102f0b201741106a2117200a41706a220a0d000b0b2015450d0b2016102f0c0b0b02402014450d00201441286c210a2016211703400240201741046a280200450d002017280200102f0b0240201741106a280200450d002017410c6a280200102f0b201741286a2117200a41586a220a0d000b0b2015450d0a2016102f0c0a0b2015450d092016102f0c090b2015450d082016102f0c080b2015450d072016102f0c070b02402014450d00201620144104746a211220162114034002402014280208220a450d0020142802002117200a410474210a0340024020172d00004109470d000240201741046a2209280200220528020441ffffffff0371450d002005280200102f200928020021050b2005102f0b201741106a2117200a41706a220a0d000b0b201441106a21170240201441046a280200450d002014280200102f0b2017211420172012470d000b0b2015450d062016102f0c060b02402014450d00201441146c210a2016211703400240201741046a280200450d002017280200102f0b201741146a2117200a416c6a220a0d000b0b2015450d052016102f0c050b02402014450d0020162014411c6c6a2112201621140340024020142802042217450d0002402014410c6a280200220a450d00200a410474210a0340024020172d00004109470d000240201741046a2209280200220528020441ffffffff0371450d002005280200102f200928020021050b2005102f0b201741106a2117200a41706a220a0d000b0b201441086a280200450d002014280204102f0b2014411c6a21170240201441146a280200450d002014280210102f0b2017211420172012470d000b0b2015450d042016102f0c040b02402014450d002016201441186c6a21122016211403400240201441046a280200450d002014280200102f0b0240201441146a280200220a450d00201428020c2117200a410474210a0340024020172d00004109470d000240201741046a2209280200220528020441ffffffff0371450d002005280200102f200928020021050b2005102f0b201741106a2117200a41706a220a0d000b0b201441186a21170240201441106a280200450d00201428020c102f0b2017211420172012470d000b0b2015450d032016102f0c030b02402014450d0020162014411c6c6a2112201621140340024020142802042217450d0002402014410c6a280200220a450d00200a410474210a0340024020172d00004109470d000240201741046a2209280200220528020441ffffffff0371450d002005280200102f200928020021050b2005102f0b201741106a2117200a41706a220a0d000b0b201441086a280200450d002014280204102f0b2014411c6a21170240201441146a280200450d002014280210102f0b2017211420172012470d000b0b2015450d022016102f0c020b02402016450d002015450d002016102f0b02402012450d0002402010450d002010410c6c210a201221170340024020172802002205450d00201741046a280200450d002005102f0b2017410c6a2117200a41746a220a0d000b0b2011450d002012102f0b200e450d010240200c450d00200e200c4104746a2115200e211603402016220941106a2116024020092802042217450d0002402009410c6a280200220a450d00200a410c6c210a0340024020172802002205450d00201741046a280200450d002005102f0b2017410c6a2117200a41746a220a0d000b0b200941086a280200450d002009280204102f0b20162015470d000b0b200d450d01200e102f0c010b02402015450d002016102f0b02402012450d002011450d002012102f0b200e450d00200f102f0b0c010b024020042d00d4030d002006200741306c6a21172006210102400340024020172001470d00410021090c020b20012d0000210b200141306a220a2101200b410c470d000b200a415c6a28020021090b2006200741306c6a210a2006210b02400340410021010240200a200b470d004100210b0c020b200b2d00002117200b41306a2205210b20174104470d000b200441e0006a200541546a10d6032004280264210b0b02402009200b470d004101210541e100210b41f3da0121174100210a0c050b2006200710cd044101210a411a2101024020080d000c050b2006102f0c040b20042802d403220141107621172001410876210b200441d0036a41106a2802002109200441dc036a2802002116200441d0036a41086a28020021050b2006200710cd044101210a02402008450d002006102f0b20092108201621060c020b200428028001210520042802840121062004280288012108410521010b410021174104410010cd044101210a4100210b0b2017411074200b41ff017141087472200141ff01717221170240200a450d002006210b0c110b20042802b0022002470d0f200441d0026a2007360200200441cc026a2008360200200420063602c802200420053602c402200420173602c002200441d0036a200441c0026a10ce04024020042802d0032201450d00024020042802d403450d002001102f0b2006200710cd0441b689ca002101411321022008450d122006102f0c120b2006200741306c6a210b20062101024003400240200b2001470d00410021010c020b20012d00002102200141306a220a210120024102470d000b200441d8006a200a41546a10d60320042802582101200428025c21020b2002410020011b2112200141c8e1ca0020011b210e2006200741306c6a210b20062101024003400240200b2001470d00410021010c020b20012d00002102200141306a220a210120024108470d000b200441d0006a200a41546a10d60320042802502101200428025421020b2002410020011b2111200141c8e1ca0020011b21162006200741306c6a210b20062101024003400240200b2001470d00410021010c020b20012d00002102200141306a220a210120024104470d000b200441c8006a200a41546a10d60320042802482101200428024c21020b2002410020011b2115200141c8e1ca0020011b21142006200741306c6a210a2006210102400340410021020240200a2001470d00410021010c020b20012d0000210b200141306a22092101200b4103470d000b200441c0006a200941546a10d603200428024021012004280244210b0b0240200b410020011b220b450d00200b41286c210b200141c8e1ca0020011b41186a2101410021020340200220012d0000456a2102200141286a2101200b41586a220b0d000b0b024020110d00411e2101200041858cca003602040c0f0b2016201141146c6a21114100210c4100211002400240034041a38cca00210b41382101201641086a280200417c6a220941024b0d012016280200210a02400240024020090e03000401000b41012110200a41fb8bca00460d01200a28000041e3c2b1e306460d010c030b4101210c200a41ff8bca00460d00200a41ff8bca00410610ea060d020b02402016410c6a280200450d0041132101200041a18dca003602040c120b0240201641106a280200220120026b220a20014d0d00412a2101200041b48dca003602040c120b41fb8cca00210b412621012015200a4d0d012014200a4102746a220a450d0141db8cca00210b412021012012200a280200220a4d0d01200e200a4104746a220a450d0141de8dca00210b411f2101200a2802080d01200a2d000d220a41077141044b0d010240200a0e050002020200000b201641146a22162011470d000b200c2010714101710d01411c411e200c41017122021b2101200041fd8dca0041858cca0020021b3602040c100b2000200b3602040c0f0b2006200741306c6a210b2006210102400340200b2001460d0120012d00002102200141306a220a210120024106470d000b200441386a200a41546a10d603200428023c0d030b2006200741306c6a210b200328027021092006210102400340200b2001460d0120012d00002102200141306a220a210120024105470d000b200441306a200a41546a220110d6030240200428023441014d0d0041182101200041e889ca003602040c100b200441286a200110d603200428022c450d0020042802282201450d00200128020020094d0d0041222101200041808aca003602040c0f0b2006200741306c6a210b2006210102400340200b2001460d0120012d00002102200141306a220a210120024107470d000b200441206a200a41546a10d6032004280220220120042802244104746a210b03402001200b460d012001450d012001410c6a2102200141106a210120022d0000410271450d000b413221012000418c8bca003602040c0f0b2006200741306c6a210b2006210102400340200b2001460d0120012d00002102200141306a220a21012002410c470d000b200a415c6a2802002201450d00200a41546a280200220a200141186c6a21090340200a220241186a210a2002280208410374210120022802002102024003402001450d01200141786a210120022d0004210b200241086a2102200b410271450d000b41312101200041db8aca003602040c110b200a2009470d000b0b2006200741306c6a210b2006210102400340200b2001460d0120012d00002102200141306a220a210120024102470d000b200441186a200a41546a10d603200428021c2201450d002004280218220220014104746a211503402002450d01200241106a2116200420022d000d220b3a00d0032002280200220120022802086a2109410021024100200441d0036a200b4104461b210a024003400240024002400240200241ff01710e03000102000b20012009460d01410021022001210b200141016a21010c020b20012009460d03410121022001210b200141016a21010c010b200a450d0241022102200a210b4100210a0b200b2d0000410271450d000b41392101200041a28aca003602040c110b2016210220162015470d000b0b2006200741306c6a210b20062101024003400240200b2001470d00410021010c020b20012d00002102200141306a220a210120024102470d000b200441106a200a41546a10d60320042802102101200428021421020b2002410020011b210e200141c8e1ca0020011b21112006200741306c6a210b20062101024003400240200b2001470d00410021010c020b20012d00002102200141306a220a210120024103470d000b200441086a200a41546a10d60320042802082101200428020c210b0b200141c8e1ca0020011b2202200b410020011b41286c6a210a41002114034002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002402002200a460d00412d210141d494c600210b20022802084103470d2702402002280200220941d0bcca00460d00200941d0bcca00410310ea060d280b200241286a21154115210941cd93c60021164114210141c094c600210b0240024020022d00180e0401290028010b412f2101418195c600210b20022802144106470d280240200228020c2209419193c600460d002009419193c600410610ea060d290b2014450d02411f2101200041b095c6003602040c290b41362109419793c6002116200e200228021c22014d0d26201120014104746a2212450d2620022802142109200228020c2102024020032d00780d002009410b470d0041382101418894c600210b200241f896ca00460d28410b2109200241f896ca00410b10ea06450d280c0e0b4100211602402009417d6a220141124d0d004100210b0c100b4100210b0240024002400240024002400240024002400240024002400240024020010e13001d1d1d1d041d071b0b0a1d011d1d1d1d1d0c000b4126210141e293c600210b200241d3bcca00460d34200241d3bcca00410310ea06450d3441d3bcca002002410310ea060d1b4101102d220c450d28200c41003a000020122d000c41e000460d010c190b200241a994ca00460d0141a994ca002002410f10ea06450d01200241b894ca00460d0341b894ca002002410f10ea06450d030240200241cf94ca00460d0041cf94ca002002410f10ea060d1b0b4107102d2209450d2720094100360003200941013a0002200941003b000020122d000c41e000460d060c170b20122802084101470d17024020122802002210200c460d0041002102034020024101460d01200c20026a2109201020026a2116200241016a210220162d000020092d0000470d190c000b0b20122d000d4104470d17200c102f201521020c240b4104102d2209450d252009410036000020122d000c41e000470d1420122802084104470d140240201228020022162009460d0041002101034020014104460d01200920016a2102201620016a210b200141016a2101200b2d000020022d0000470d160c000b0b20122d000d4104470d142009102f201521020c230b200241c794ca00460d01200229000042e5f0d1fbb5ac98b6ec00510d010c170b4101102d2209450d23200941003a000020122d000c41e000470d1120122802084101470d11201228020022162009460d1041002101034020014101460d11200920016a2102201620016a210b200141016a2101200b2d000020022d0000470d120c000b0b4107102d2209450d2220094100360003200941013a0002200941003b000020122d000c41e000470d0e20122802084107470d0e201228020022162009460d0d41002101034020014107460d0e200920016a2102201620016a210b200141016a2101200b2d000020022d0000470d0f0c000b0b200241de94ca00460d0141de94ca002002410a10ea06450d010240200241e894ca00460d0041e894ca002002410a10ea060d060b4126210941e293c600211620122d000c41e000470d2c20122802080d2c2015210220122d000d4104460d1f0c2c0b20122802084107470d10201228020022162009460d0a41002101034020014107460d0b200920016a2102201620016a210b200141016a2101200b2d000020022d0000470d110c000b0b4102102d2209450d1f200941003b000020122d000c41e000470d0820122802084102470d080240201228020022162009460d0041002101034020014102460d01200920016a2102201620016a210b200141016a2101200b2d000020022d0000470d0a0c000b0b20122d000d4104470d082009102f201521020c1d0b0240200241fd94ca00460d004100211641fd94ca002002410d10ea060d120b4126210941e293c600211620122d000c41e000470d2920122802080d292015210220122d000d4104460d1c0c290b02402002418a95ca00460d0041002116418a95ca002002410c10ea060d110b4126210941e293c600211620122d000c41e000470d2820122802080d282015210220122d000d4104460d1b0c280b0240200241a195ca00460d004100211641a195ca002002411510ea060d120b4126210941e293c600211620122d000c41e000470d2720122802080d272015210220122d000d4104460d1a0c270b0240200241b695ca00460d0041b695ca002002410a10ea060d260b4102102d2209450d1b200941003b000020122d000c41e000470d0320122802084102470d030240201228020022162009460d0041002101034020014102460d01200920016a2102201620016a210b200141016a2101200b2d000020022d0000470d050c000b0b20122d000d4104470d032009102f201521020c190b024020140d004100211b4100211c0c020b024020142802040d00200041cf95c600360204413221010c280b02402014280200221b201441086a280200221c4d0d002000418196c60036020441c90021010c280b201c200328026c4d0d01200041ca96c60036020441c10021010c270b2002411c6a2114201521020c170b200441d0036a41086a2202420037030020044190bdc6003602d40320042003290308221aa7417f201a428080808010541b3602e00320042003290310221aa7417f201a428080808010541b3602d003200441d0036a4104722201410d10cf042001410c10cf042001410710cf042001410f10cf04200441e8006a41106a20042802e003360200200441e8006a41086a2002290300370300200420042903d003370368200441d0036a41106a220b2007360200200441d0036a410c6a2008360200200420063602d803200420053602d403200420173602d00320044180016a200441d0036a10d0044101102d2201450d18200141003a0000200420042f01d00322073b01c002200b41e0083b01002002428180808010370300200420013602d403200441013602d003200420073b01e20320044180016a200441d0036a10d10421174103102d2202450d18200241026a41002d00d2bc4a3a0000200241002f00d0bc4a3b00004103102d2207450d18200741026a41002d00d5bc4a3a0000200741002f00d3bc4a3b0000200441c0026a41026a200441d0036a41026a220a2d000022063a0000200420042f00d00322083b01c00220044194016a280200210b20044180016a41106a2802002101200a20063a0000200420083b01d0030240200b2001470d00200141016a220b2001490d182001410174220a200b200a200b4b1bad42287e221a422088a70d18201aa7220b4100480d180240024020010d00200b102d21010c010b200428028c01200141286c200b103121010b2001450d192004200136028c012004200b41286e36029001200428029401210b0b200428028c01200b41286c6a220141003a00182001200736020c200142838080803037020420012002360200200141106a428380808030370200200141196a20042f01d0033b00002001411b6a200441d2036a2d00003a00002001411c6a2017360200200420042802940141016a36029401200441d0036a20044180016a418c0110e8061a20044190026a200441d0036a10d20420044190026a41106a280200220841306c2101200428029802220a41546a210202400340410021072001450d01200141506a21012002412c6a210b200241306a22172102200b2d00004103470d000b201741086a2802002201450d00200141286c2102201728020041186a2101410021070340200720012d0000456a2107200141286a2101200241586a22020d000b0b200841306c2101200a41546a21022007417f6a210b02400340410021072001450d01200141506a21012002412c6a2117200241306a2206210220172d00004103470d000b200641086a2802002201450d00200141286c2102200628020041186a2101410021070340200720012d0000456a2107200141286a2101200241586a22020d000b0b200841306c2101200a415c6a21020240034041002105024020010d00410021010c020b200141506a2101200241246a2117200241306a2206210220172d00004104470d000b200628020021010b02400240024002402008450d00200120076a2113200a200841306c6a210c200441e8006a41047221194100211d4100211803400240200a2d000041786a220141044b0d0002400240024002400240024020010e050301020600030b200a28020c2201450d05200a2802042217200141186c6a211e201821010340200121180240201722072802144104742202450d00200728020c21010340024020012d0000410b470d00200141046a22172802002206200b490d002017200641016a3602000b200141106a2101200241706a22020d000b0b200442003703e00320044280808080c0003703d803200442043703d0034110102d2201450d2420042802d8032102200420013602d003200441013602d403200120024104746a22014200370200200141056a4200370000200420042802d80341016a3602d80302402007280214220e450d0041002115200e210103400240024002400240201520014f0d00411021080240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240200728020c221020154104746a2d000022120eac010001020202020202020202020202020303030404050506060707080809090a0a0b0b0c0d0d0e0e0f0f1010111213131414151516161717181819191a1a1b1b1c1c1d1d1e1e1f1f2020212122222323242425252627272828292a2a2b2b2c2d2d2e2e2f2f303031313232333434353536363737383839393a3a3b3b3c3c3d3d3e3e3f3f40404141424243434444454546464747484a4a4a4a49494a4a4a4a4a4a4a4a4a4a4a4a4a4a4b4b4b4b000b411121080c4a0b411221080c490b410a21080c480b410821080c470b410821080c460b410421080c450b410421080c440b410421080c430b410421080c420b410421080c410b410421080c400b410421080c3f0b410521080c3e0b410521080c3d0b410521080c3c0b410521080c3b0b410521080c3a0b411321080c390b411421080c380b410621080c370b410721080c360b410b21080c350b410b21080c340b410b21080c330b410b21080c320b410b21080c310b410b21080c300b410b21080c2f0b410b21080c2e0b410b21080c2d0b410b21080c2c0b410b21080c2b0b410c21080c2a0b410c21080c290b410c21080c280b410c21080c270b410c21080c260b410c21080c250b410021080c240b410021080c230b410121080c220b410221080c210b410321080c200b410321080c1f0b410021080c1e0b410021080c1d0b410021080c1c0b410021080c1b0b410021080c1a0b410021080c190b410121080c180b410221080c170b410321080c160b410321080c150b410021080c140b410021080c130b410021080c120b410021080c110b410d21080c100b410d21080c0f0b410d21080c0e0b410d21080c0d0b410d21080c0c0b410d21080c0b0b410d21080c0a0b410d21080c090b410d21080c080b410d21080c070b410d21080c060b410d21080c050b410d21080c040b410d21080c030b410e21080c020b410e21080c010b410f21080b201541016a21142004280270210520192101024002400240034002400240200128020022062f010622010d00410021010c010b200641086a2116410021170340200120172202460d01200241016a211702404100417f4101201620026a2d0000220920084b1b20092008461b41016a0e03000401000b0b2017417f6a21010b2005450d022005417f6a2105200620014102746a41ec006a21010c000b0b200620024103746a220241186a2101200241146a2802000e04000d0100000b200441e8006a21010b20012802002102024002400240024002400240024002402012417e6a220141084b0d00024020010e09020403000506060708020b200441d0036a201510d304450d0b0c130b20042802d8032201417f6a221720014f0d12201720014b0d1220042802d00320174104746a2217280208220120026a22022001490d12201741086a20023602000c0a0b20042802d8032201417f6a221720014f0d11201720014b0d1120042802d00320174104746a2217280208220120026a22022001490d11201741086a200236020020042802d8032201417f6a221720014f0d11201720014b0d1120042802d003220220174104746a280204211702400240200120042802d403460d00200121060c010b200141016a22062001490d30200141017422082006200820064b1b220641ffffffff00712006470d30200641047422064100480d3020022001410474200610312202450d31200420023602d003200420064104763602d40320042802d80321060b200220064104746a220241003a000c2002201736020420022001360200200220042f00c0023b000d200241086a41003602002002410f6a200441c2026a2d00003a0000200420042802d80341016a3602d8030c090b20042802d8032201417f6a221720014f0d10201720014b0d1020042802d00320174104746a2217280208220120026a22022001490d10201741086a200236020020042802d803220221010240200220042802d403470d00200241016a22012002490d2f200241017422172001201720014b1b220141ffffffff00712001470d2f200141047422014100480d2f0240024020020d002001102d21170c010b20042802d00320024104742001103121170b2017450d30200420173602d003200420014104763602d40320042802d80321010b20042802d00320014104746a220141003a000c2001201436020420012002360200200120042f00c0023b000d200141086a41003602002001410f6a200441c2026a2d00003a0000200420042802d80341016a3602d8030c080b20042802d8032201417f6a221720014f0d0f201720014b0d0f20042802d00320174104746a2217280208220120026a22022001490d0f201741086a200236020020042802d803220221010240200220042802d403470d00200241016a22012002490d2e200241017422172001201720014b1b220141ffffffff00712001470d2e200141047422014100480d2e0240024020020d002001102d21170c010b20042802d00320024104742001103121170b2017450d2f200420173602d003200420014104763602d40320042802d80321010b20042802d00320014104746a220141013a000c2001201436020420012002360200200120042f00c0023b000d200141086a41003602002001410f6a200441c2026a2d00003a0000200420042802d80341016a3602d8030c070b200441d0036a201510d3040d0e20042802d8032202450d0e20042002417f6a22013602d80320042802d003221720014104746a22062d000c4102460d0e2001450d062002417e6a220220014f0d0e201720024104746a22172006280200220220172802002217201720024b1b360200200220014f0d06200441d0036a201510d3040d0e0c060b20042802d8032201417f6a221720014f0d0d201720014b0d0d20042802d00320174104746a2217280208220120026a22022001490d0d201020154104746a41046a2802002106201741086a200236020020042802d8032201417f6a220220014b0d0d200220066b220120024b0d0d200441d0036a201510d3040d0d20042802d803220220014d0d0d20042802d003221720014104746a2d000c0d05200241047420176a41706a2202200120022802002202200220014b1b3602000c050b20042802d8032201417f6a221720014f0d0c201720014b0d0c20042802d00320174104746a2217280208220120026a22022001490d0c201741086a200236020020042802d8032201417f6a220820014b0d0c201020154104746a41046a280200220128020421022001280200211220012802082101200441003a00c0020240200820016b220120084d0d00200441013a00c0020c0d0b4104102d2206450d2b20062001360200024020020d0041012117410121160c040b200820122802006b220520084b0d024102211720024102742110410121164104210141022102034002402017417f6a22092016470d00200941016a22162009490d2c20022016200220164b1b220941ffffffff03712009470d2c200941027422094100480d2c0240024020020d002009102d21060c010b200620012009103121060b2006450d2d200941027621160b200620016a200536020020102001460d04201220016a2105201741016a2117200241026a2102200141046a2101200820052802006b220520084d0d000b200441013a00c0020c0b0b20042802d8032201417f6a221720014f0d0b201720014b0d0b20042802d00320174104746a2217280208220120026a22022001490d0b201741086a2002360200200441d0036a201510d3040d0b20042802d8032201450d0b20042802d00322022d000c0d03200141047420026a41706a41003602000c030b41d8bcca0020152001103b000b41012116200441013a00c0020c080b20042d00c0020d072006450d082017ad4220862016ad84211a410121090240200441d0036a201510d3040d0041002109201a422088a72201450d0020014102742117200621010340024020042802d8032208200128020022024b0d00410121090c020b024020042802d003220520024104746a2d000c0d00200841047420056a41706a2208200220082802002208200820024b1b3602000b200141046a21012017417c6a22170d000b0b0240201aa7450d002006102f0b20090d080b2014200e460d0120072802142101201421150c000b0b20042802dc0320042802e4032201410041202001676b10d40420042903e003211f20042802dc032120024020042802d403450d0020042802d003102f0b024020200d004101211d0c070b02400240024020072802142202201f422088a722084101746a220141ffffffff00712001470d0020014104742217417f4c0d000240024020170d00410821060c010b2017102d2206450d2820174104762101200728021421020b20074100360214200728020c21212007200636020c200741106a2209280200212220092001360200202120024104746a2106202020084103746a210f41022116024020020d0020202110202121010c020b41002101202021104100210820212102034020022d00002105200441d0036a41026a220e200241036a22152d00003a00002004200241016a22142f00003b01d003200241046a2800002112200241086a290000211a200441c0026a41026a221720152d00003a0000200420142f00003b01c0020240200541ac01470d00200241106a21010c040b200441a8026a41026a20172d000022153a0000200420042f01c00222143b01a802201720153a0000200420143b01c0020240024020164102470d0002402010200f470d0041002116200f21100c020b20102902002223422088a7210d2023a7211141012116201041086a21100b20164101470d0020082011470d00024020012009280200470d00200141016a22162001490d29200141017422152016201520164b1b221641ffffffff00712016470d29201641047422164100480d290240024020010d002016102d21010c010b200728020c20014104742016103121010b2001450d2a2007200136020c20092016410476360200200728021421010b200728020c20014104746a220120042f00d0033b00012001412d3a00002001200d360204200141036a200e2d00003a00002007200728021441016a2201360214024020012009280200470d00200141016a22162001490d29200141017422152016201520164b1b221641ffffffff00712016470d29201641047422164100480d290240024020010d002016102d21010c010b200728020c20014104742016103121010b2001450d2a2007200136020c20092016410476360200200728021421010b200728020c20014104746a2201200b3602042001410b3a00002007200728021441016a220136021441022116200821110b200441fc006a41026a221520172d00003a0000200420042f01c0023b017c024020012009280200470d00200141016a22172001490d28200141017422142017201420174b1b221741ffffffff00712017470d28201741047422174100480d280240024020010d002017102d21010c010b200728020c20014104742017103121010b2001450d292007200136020c20092017410476360200200728021421010b200841016a2108200728020c20014104746a220120042f017c3b0001200120053a00002001201a37030820012012360204200141036a20152d00003a00002007200728021441016a2201360214200241106a22022006470d000b200621010c010b103d000b200441c0026a41026a200441d0036a41026a2d00003a0000200420042f01d0033b01c0020b024020062001460d000340200141106a2102024020012d00004109470d000240200141046a2217280200220128020441ffffffff0371450d002001280200102f201728020021010b2001102f0b2002210120062002470d000b0b201fa7210102402022450d002021102f0b2010200f47201620164102461b210202402001450d002020102f0b024020024101470d004101211d0c070b200741186a2117024002402004280278450d0020072802142202450d00200728020c210120024104742102410021070340024020012d0000412c470d002001410b3a0000200141046a2013360200200741016a21070b200141106a2101200241706a22020d000b4101210120070d010b201821010b2017201e470d000b200121180c050b200a2802042201200b490d04200a200141016a3602040c040b200a28020c2201450d03200a28020422172001411c6c6a2106034020172201411c6a2117024020012802182202450d0020012802102101200241027421020340024020012802002207200b490d002001200741016a3602000b200141046a21012002417c6a22020d000b0b20172006460d040c000b0b200a28020c2201450d02200141146c2102200a28020441106a2101034002402001417c6a2802000d0020012802002207200b490d002001200741016a3602000b200141146a21012002416c6a22020d000c030b0b2016450d002006102f0b024020042802d403450d0020042802d003102f0b024020042802e003450d0020042802dc03102f0b4101211d0b200a41306a220a200c470d000b41012109201d4101710d0220184101710d0120042802a0022105200428029802210a0b2004419c026a280200211420042802940221162004280290022115410021090c020b200441d0036a41106a20044190026a41106a280200360200200441d0036a41086a20044190026a41086a29030037030020042004290390023703d003200441c0026a200441d0036a10d0044110102d2202450d1a200241063a00004101102d2201450d1a200141003a00004101102d2217450d1a201720012d00003a00002001102f4110102d2207450d1a200741063a000041f000102d2201450d1a200141063a00602001412c3b01502001200b3602442001410b3a0040200141d8003a0030200120042802783602242001412d3a0020200141003602142001410f3a0010200141003602042001410f3a0000024020072d00004109470d0002402007280204220b28020441ffffffff0371450d00200b280200102f2007280204210b0b200b102f0b2007102f024020022d00004109470d0002402002280204220728020441ffffffff0371450d002007280200102f200228020421070b2007102f0b2002102f200441f4036a4287808080f000370200200441f0036a2001360200200441ec036a4100360200200441d0036a410c6a4281808080800c370200200441d8036a4101360200200441003602fc03200442043702e403200420173602d403200441013602d003200441c0026a200441d0036a10d504200441d0036a200441c0026a418c0110e8061a200441a8026a200441d0036a10d204200441a8026a410c6a2802002114200441b8026a280200210520042802a802211520042802ac02211620042802b002210a410021090c010b2004419c026a2802002114200428029802220a20042802a002220510cd04411a211641be8bca0021152014450d00200a102f0b200441f4006a2802002117200428026c21010240200441f0006a2802002202450d00200221070340200128026c21012007417f6a22070d000b03402002417f6a22020d000b0b02402017450d0041002107034002400240200720012f01064f0d004100210b200121020c010b4100210b034002400240024020014190bdc600460d00200128020022020d0141002107410021020c020b41edb3ca00412841f8b4ca001039000b200b41016a210b20012f010421070b2001102f20022101200720022f01064f0d000b0b200741016a2106200220074103746a41146a280200210802400240200b0d0020022101200621070c010b200220064102746a41ec006a280200210141002107200b417f6a2202450d000340200128026c21012002417f6a22020d000b0b20084103460d012017417f6a22170d000b0b02400240024020014190bdc600460d00200128020021022001102f2002450d00034020024190bdc600460d02200228020021012002102f2001210220010d000b0b0240024020090d00200441c0026a41106a2005360200200441c0026a410c6a20143602002004200a3602c802200420163602c402200420153602c002200441d0036a200441c0026a200328026810d60420042802d0034101470d010240200441d0036a41086a280200450d0020042802d403102f0b200041d88bca0036020420004101360200200041086a41233602000c2d0b2000201536020420004101360200200041086a20163602000c2c0b200441e4036a2802002102200441d0036a41106a2802002114200441d0036a410c6a2802002115200441d8036a280200210b20042802d403210720032802602112200441003602b002200442013703a8024104102d2201450d1a200441043602ac02200420042802b002221741046a3602b002200420013602a802200120176a20073600000240024020042802ac02220720042802b00222016b4104490d0020042802a80221070c010b200141046a22172001490d1a200741017422012017200120174b1b22014100480d1a0240024020070d002001102d21070c010b20042802a80220072001103121070b2007450d1b200420013602ac02200420073602a80220042802b00221010b2004200141046a3602b002200720016a200b3600002015200241306c6a2116024020020d00201521010c020b200441d0036a4101722102200441d0036a41276a210b200441d0036a41206a2117200441d0036a41186a210a200441d0036a41086a2106201521010240034020012d00002107200b200141286a2900003700002017200141216a290000370300200a200141196a290000370300200441d0036a41106a2208200141116a2900003703002006200141096a2900003703002004200141016a2900003703d003024020074110470d00200141306a21010c040b200441c0026a41276a2205200b290000370000200441c0026a41206a22092017290300370300200441c0026a41186a200a290300221a370300200441c0026a41106a20082903002223370300200441c0026a41086a2006290300221f370300200420042903d00322243703c00220022024370000200241086a201f370000200241106a2023370000200241186a201a370000200241206a2009290300370000200241276a2005290000370000200420073a00d00320044180016a200441d0036a200441a8026a10d70420042d0080012207411f470d01200141306a22012016470d000b201621010c020b200428028401210b2004280288012102200141306a2201201620016b41306d10cd0402402014450d002015102f0b024020042802ac02450d0020042802a802102f0b024020074105470d002002450d00200b102f0b200041998eca0036020420004101360200200041086a41253602000c2b0b41edb3ca00412841f8b4ca001039000b2001201620016b41306d10cd0402402014450d002015102f0b20042802a802210120042902ac02211a2000411c6a41003a0000200041146a201a370200200041106a20013602002000410c6a201c360200200041086a201b360200200020123602042000411d6a20042f0090023b0000200041003602002000411f6a20044192026a2d00003a00000c290b2009102f0c210b2009102f0c200b20122d000d22014104460d05200141fb01710d052009102f201521020c130b20122d000d22014104460d00200141fb01710d002009102f201521020c120b2009102f0c1d0b20122d000d22014104460d00200141fb01710d002009102f201521020c100b2009102f0c1b0b2009102f0c1a0b2009102f0c190b200c102f0c1a0b02400240200241f294ca00460d0041f294ca002002410b10ea060d010b4126210941e293c600211620122d000c41e000470d1920122802080d192015210220122d000d4104460d0c0c190b02402002419695ca00460d0041012116419695ca002002410b10ea060d010b4126210941e293c600211620122d000c41e000470d1820122802080d182015210220122d000d4104460d0b0c180b2009411546210b0b0240200941796a2201410c4b0d000240024020010e0d00020202020202020202020201000b0240200241c095ca00460d0041c095ca002002410710ea060d020b4126210941e293c600211620122d000c41e000470d1820122802080d182015210220122d000d4104460d0b0c180b200241c795ca00460d0241c795ca002002411310ea06450d020b200b450d020b0240200241da95ca00460d004100210141da95ca002002411510ea060d030b4126210941e293c600211620122d000c41e000470d1520122802080d152015210220122d000d4104460d080c150b4126210941e293c600211620122d000c41e000470d1420122802080d142015210220122d000d4104460d070c140b41002101200941726a220b41084b0d0002400240024002400240024002400240024002400240200b0e09010b03000a0b0b0b08010b200241ef95ca00460d0141ef95ca002002411110ea06450d01200241ae96ca00460d0641ae96ca002002411110ea06450d060240200241bf96ca00460d0041bf96ca002002411110ea060d0b0b4104102d2209450d122009410036000020122d000c41e000460d080c1b0b02402002418096ca00460d00418096ca002002410e10ea060d0a0b4108102d2209450d112009420037000020122d000c41e000460d020c190b4102102d2209450d10200941003b000020122d000c41e000470d1720122802084102470d170240201228020022162009460d0041002101034020014102460d01200920016a2102201620016a210b200141016a2101200b2d000020022d0000470d190c000b0b20122d000d4104470d172009102f201521020c0e0b2002418e96ca00460d01418e96ca002002411010ea06450d0102402002419e96ca00460d0041012101419e96ca002002411010ea060d080b4103102d2209450d0f200941003a0002200941003b000020122d000c41e000460d020c150b20122802084108470d160240201228020022162009460d0041002101034020014108460d01200920016a2102201620016a210b200141016a2101200b2d000020022d0000470d180c000b0b20122d000d4104470d162009102f201521020c0c0b4126210941e293c600211620122d000c41e000470d1820122802080d1820122d000d22014104460d1820152102200141fb0171450d0b0c180b20122802084103470d120240201228020022162009460d0041002101034020014103460d01200920016a2102201620016a210b200141016a2101200b2d000020022d0000470d140c000b0b20122d000d4104470d122009102f201521020c0a0b4102102d2209450d0b200941003b000020122d000c41e000470d1020122802084102470d100240201228020022162009460d0041002101034020014102460d01200920016a2102201620016a210b200141016a2101200b2d000020022d0000470d120c000b0b20122d000d4104470d102009102f201521020c090b0240200241d096ca00460d0041d096ca002002411610ea060d030b4102102d2209450d0a200941003b000020122d000c41e000460d030c0e0b20122802084104470d120240201228020022162009460d0041002101034020014104460d01200920016a2102201620016a210b200141016a2101200b2d000020022d0000470d140c000b0b20122d000d4104470d122009102f201521020c070b200241e696ca00460d0241e696ca002002411210ea06450d020b02402016450d00200241f896ca00460d0341f896ca002002410b10ea06450d030b02402001450d002002418397ca00460d04418397ca002002411010ea06450d040b4126210141e293c600210b20094117470d1302402002419397ca00460d00419397ca002002411710ea060d140b4102102d2216450d07201641003b000020122d000c41e000460d040c0a0b20122802084102470d0a0240201228020022162009460d0041002101034020014102460d01200920016a2102201620016a210b200141016a2101200b2d000020022d0000470d0c0c000b0b20122d000d4104470d0a2009102f201521020c040b4126210941e293c600211620122d000c41e000470d1020122802080d102015210220122d000d4104460d030c100b4102102d2209450d04200941003b000020122d000c41e000470d0620122802084102470d060240201228020022162009460d0041002101034020014102460d01200920016a2102201620016a210b200141016a2101200b2d000020022d0000470d080c000b0b20122d000d4104470d062009102f201521020c020b4126210941e293c600211620122d000c41e000470d0e20122802080d0e2015210220122d000d4104460d010c0e0b20122802084102470d0502402012280200220c2016460d0041002102034020024102460d01201620026a210b200c20026a2109200241016a210220092d0000200b2d0000470d070c000b0b20122d000d22024104460d05200241fb01710d052016102f201521020c000b0b1038000b1036000b200041c989ca00360204411f21010c0b0b2009102f0c070b2016102f200041e293c6003602040c090b2009102f0c050b2009102f0c040b2009102f0c030b2009102f0c020b2009102f0c010b2009102f0b41262101200041e293c6003602040c020b20092101200020163602040c010b2000200b3602040b20004101360200200041086a200136020002402007450d002006200741306c6a21092006210a0340200a221741306a210a0240024020172d00002201410e4b0d00024002400240024002400240024002400240024002400240024020010e0f0001020304050607080e090e0a0b0c000b201741086a280200450d0d201741046a280200102f0c0d0b0240201741086a280200450d00201741046a280200102f0b201741146a280200450d0c201741106a280200102f0c0c0b02402017410c6a2802002202450d00201741046a28020021012002410474210203400240200141046a280200450d002001280200102f0b200141106a2101200241706a22020d000b0b201741086a280200450d0b2017280204102f0c0b0b02402017410c6a2802002202450d00201741046a2802002101200241286c210203400240200141046a280200450d002001280200102f0b0240200141106a280200450d002001410c6a280200102f0b200141286a2101200241586a22020d000b0b201741086a280200450d0a2017280204102f0c0a0b201741086a280200450d09201741046a280200102f0c090b201741086a280200450d08201741046a280200102f0c080b201741086a280200450d07201741046a280200102f0c070b02402017410c6a2802002201450d00201741046a280200220b20014104746a210503400240200b2802082202450d00200b2802002101200241047421020340024020012d00004109470d000240200141046a2200280200220728020441ffffffff0371450d002007280200102f200028020021070b2007102f0b200141106a2101200241706a22020d000b0b200b41106a21010240200b41046a280200450d00200b280200102f0b2001210b20012005470d000b0b201741086a280200450d062017280204102f0c060b02402017410c6a2802002202450d00201741046a2802002101200241146c210203400240200141046a280200450d002001280200102f0b200141146a21012002416c6a22020d000b0b201741086a280200450d052017280204102f0c050b02402017410c6a2802002201450d00201741046a280200220b2001411c6c6a210503400240200b2802042201450d000240200b410c6a2802002202450d00200241047421020340024020012d00004109470d000240200141046a2200280200220728020441ffffffff0371450d002007280200102f200028020021070b2007102f0b200141106a2101200241706a22020d000b0b200b41086a280200450d00200b280204102f0b200b411c6a21010240200b41146a280200450d00200b280210102f0b2001210b20012005470d000b0b201741086a280200450d042017280204102f0c040b02402017410c6a2802002201450d00201741046a280200220b200141186c6a210503400240200b41046a280200450d00200b280200102f0b0240200b41146a2802002202450d00200b28020c2101200241047421020340024020012d00004109470d000240200141046a2200280200220728020441ffffffff0371450d002007280200102f200028020021070b2007102f0b200141106a2101200241706a22020d000b0b200b41186a21010240200b41106a280200450d00200b28020c102f0b2001210b20012005470d000b0b201741086a280200450d032017280204102f0c030b02402017410c6a2802002201450d00201741046a280200220b2001411c6c6a210503400240200b2802042201450d000240200b410c6a2802002202450d00200241047421020340024020012d00004109470d000240200141046a2200280200220728020441ffffffff0371450d002007280200102f200028020021070b2007102f0b200141106a2101200241706a22020d000b0b200b41086a280200450d00200b280204102f0b200b411c6a21010240200b41146a280200450d00200b280210102f0b2001210b20012005470d000b0b201741086a280200450d022017280204102f0c020b0240201741046a2802002201450d00201741086a280200450d002001102f0b0240201741146a2802002201450d0002402017411c6a2802002202450d002002410c6c21020340024020012802002207450d00200141046a280200450d002007102f0b2001410c6a2101200241746a22020d000b0b201741186a280200450d002017280214102f0b201741246a280200220b450d0102402017412c6a2802002201450d00200b20014104746a21050340200b220041106a210b024020002802042201450d0002402000410c6a2802002202450d002002410c6c21020340024020012802002207450d00200141046a280200450d002007102f0b2001410c6a2101200241746a22020d000b0b200041086a280200450d002000280204102f0b200b2005470d000b0b201741286a280200450d012017280224102f0c010b0240201741086a280200450d00201741046a280200102f0b0240201741146a2802002201450d00201741186a280200450d002001102f0b201741246a280200450d00201741206a280200102f0b200a2009470d000b0b2008450d032006102f0c030b200441003a0068200441e4036a4101360200200442013702d403200441b4afca003602d0032004412836029402200420044190026a3602e0032004200441e8006a3602900220044180016a200441d0036a103a2004280280012105200428028401210b2006200710cd04410521172008450d002006102f0b41a089ca00210141162102200b450d00201741ff01714105470d002005102f0b2000200136020420004101360200200041086a20023602000b200441e0046a24000bee0601037f024002400240024002402000280200220241c000490d00200241808001490d012002418080808004490d0202400240200141046a280200200141086a2802002202460d00200128020021030c010b200241016a22032002490d05200241017422042003200420034b1b22044100480d050240024020020d002004102d21030c010b200128020020022004103121030b2003450d0420012003360200200141046a2004360200200141086a28020021020b200141086a2204200241016a360200200320026a41033a00002000280200210302400240200141046a2802002202200428020022006b4104490d00200128020021020c010b200041046a22042000490d05200241017422002004200020044b1b22004100480d050240024020020d002000102d21020c010b200128020020022000103121020b2002450d0420012002360200200141046a2000360200200141086a28020021000b200141086a200041046a360200200220006a20033600000f0b02400240200141046a280200200141086a2802002200460d00200128020021030c010b200041016a22032000490d04200041017422042003200420034b1b22044100480d040240024020000d002004102d21030c010b200128020020002004103121030b2003450d0320012003360200200141046a2004360200200141086a28020021000b200141086a200041016a360200200320006a20024102743a00000f0b02400240200141046a2802002203200141086a28020022006b4102490d00200128020021030c010b200041026a22042000490d03200341017422002004200020044b1b22004100480d030240024020030d002000102d21030c010b200128020020032000103121030b2003450d0220012003360200200141046a2000360200200141086a28020021000b200141086a200041026a360200200320006a20024102744101723b00000f0b02400240200141046a2802002203200141086a28020022006b4104490d00200128020021030c010b200041046a22042000490d02200341017422002004200020044b1b22004100480d020240024020030d002000102d21030c010b200128020020032000103121030b2003450d0120012003360200200141046a2000360200200141086a28020021000b200141086a200041046a360200200320006a20024102744102723600000f0b1036000b1038000b960f03087f017e017f230041106b2202240020024100360208200242013703000240024002402001280200220341044b0d000240024002400240024020030e050001020304000b4101102d2203450d05200242818080801037020420022003360200200341013a0000200128020421032001410c6a28020022042002106902402004450d002003200441286c6a210503400240024020022802042206200228020822076b4120490d00200228020021040c010b200741206a22042007490d09200641017422082004200820044b1b22084100480d090240024020060d002008102d21040c010b200228020020062008103121040b2004450d082002200836020420022004360200200821060b200420076a220841186a200341186a290000370000200841106a200341106a290000370000200841086a200341086a2900003700002002200741206a220936020820082003290000370000200341206a290300210a0240200620096b41074b0d00200941086a22082009490d092006410174220b2008200b20084b1b22084100480d090240024020060d002008102d21040c010b200420062008103121040b2004450d0820022008360204200220043602000b2002200741286a360208200420096a200a3700002005200341286a2203470d000b0b200141106a28020021060240024020022802042204200228020822036b4104490d00200228020021040c010b200341046a22072003490d07200441017422082007200820074b1b22074100480d070240024020040d002007102d21040c010b200228020020042007103121040b2004450d0620022007360204200220043602000b2002200341046a360208200420036a20063600000c040b4101102d2203450d04200242818080801037020420022003360200200341023a0000200128020421060240024020022802042204200228020822036b4104490d00200228020021040c010b200341046a22072003490d06200441017422082007200820074b1b22074100480d060240024020040d002007102d21040c010b200228020020042007103121040b2004450d0520022007360204200220043602000b2002200341046a360208200420036a200636000020012802082103200141106a28020022042002106902402004450d002003200441286c6a210503400240024020022802042207200228020822086b4120490d00200841206a2104200228020021060c010b200841206a22042008490d08200741017422062004200620044b1b22094100480d080240024020070d002009102d21060c010b200228020020072009103121060b2006450d072002200936020420022006360200200921070b200620086a220841186a200341186a290000370000200841106a200341106a290000370000200841086a200341086a2900003700002002200436020820082003290000370000200341206a290300210a0240200720046b41074b0d00200441086a22082004490d08200741017422092008200920084b1b22084100480d080240024020070d002008102d21060c010b200620072008103121060b2006450d0720022008360204200220063602000b2002200441086a360208200620046a200a3700002005200341286a2203470d000b0b200141146a28020021060240024020022802042204200228020822036b4104490d00200228020021040c010b200341046a22072003490d06200441017422082007200820074b1b22074100480d060240024020040d002007102d21040c010b200228020020042007103121040b2004450d0520022007360204200220043602000b2002200341046a360208200420036a20063600000c030b4101102d2203450d03200242818080801037020420022003360200200341033a0000200141086a290300210a0240024020022802042206200228020822036b4108490d00200341086a2104200228020021060c010b200341086a22042003490d05200641017422072004200720044b1b22074100480d050240024020060d002007102d21060c010b200228020020062007103121060b2006450d0420022007360204200220063602000b20022004360208200620036a200a3700000c020b4101102d2203450d02200242818080801037020420022003360200200341043a0000200128020421060240024020022802042204200228020822036b4104490d00200228020021040c010b200341046a22072003490d04200441017422082007200820074b1b22074100480d040240024020040d002007102d21040c010b200228020020042007103121040b2004450d0320022007360204200220043602000b2002200341046a360208200420036a20063600000c010b4101102d2203450d01200242818080801037020420022003360200200341053a0000200128020421070240024020022802042206200228020822036b4104490d00200341046a2104200228020021060c010b200341046a22042003490d03200641017422082004200820044b1b22084100480d030240024020060d002008102d21060c010b200228020020062008103121060b2006450d0220022008360204200220063602000b20022004360208200620036a20073600000b20002002290300370200200041086a200241086a280200360200200241106a24000f0b1036000b1038000bd01a01197f230041d0116b2202240020002802102203200328020041016a360200200028020c2104200028020821052000280200210620002802042103200241206a41186a22072000412c6a290000370300200241206a41106a2208200041246a290000370300200241206a41086a22092000411c6a29000037030020022000290014370320200241a0026a200141e00010e8061a024002400240024002400240024020032f01062201410b490d000240024020034190bdc600460d00200241b0036a410041e00210e7061a20024198066a410041a00810e7061a41880b102d220a0d010c080b4195b4ca00412d41f8b4ca001039000b200a41003b0106200a4100360200200a41086a200241b0036a41e00210e8062101200a41e8026a20024198066a41a00810e8062107200220032f00c8013b01ac032002200341ca016a2d00003a00ae03200220032900db01370398032002200341e0016a29000037009d03200341cb016a280000210b200341cf016a280000210c200341d3016a280000210d200341d7016a280000210e20024198066a200341a8076a41e00010e8061a2001200341e8016a20032f010641796a220041057410e8062101200720034188086a200041e0006c10e8062107200341063b0106200a20003b0106200220022f01ac033b019403200220022d00ae033a0096032002200229039803370380032002200229009d0337008503200241b0036a20024198066a41e00010e8061a0240024020044107490d00200441057420016a41c07e6a2001200441796a22084105746a2201200041ffff037120086b41057410e9061a200141186a200241206a41186a290300370000200141106a200241206a41106a290300370000200141086a200241206a41086a29030037000020012002290320370000200441e0006c20076a220041c07b6a200041e07a6a220f200a41066a22002f010020086b41e0006c10e9061a200f200241a0026a41e00010e8061a0c010b200341066a2100200341086a20044105746a220141206a200120032f010620046b41057410e9061a200141186a200241206a41186a290300370000200141106a200241206a41106a290300370000200141086a200241206a41086a29030037000020012002290320370000200341e8026a200441e0006c6a220f41e0006a200f20032f010620046b41e0006c10e9061a200f200241a0026a41e00010e8061a0b20024188026a41026a220420022d0096033a0000200020002f010041016a3b0100200220022f0194033b01880220022002290380033703800120022002290085033700850120024190016a200241b0036a41e00010e8061a2002411c6a41026a221020042d00003a0000200220022f0188023b011c2002200229038001370308200220022900850137000d200241206a20024190016a41e00010e8061a0240200328020022070d00410021030c030b20032f0104211120024198066a41027221124100210303402002419c026a41026a221320102d00003a0000200220022f011c3b019c0220022002290308370388022002200229000d37008d02200241a0026a200241206a41e00010e8061a20062003470d02201141ffff0371210802400240024020072f01062203410b490d002012410041b20b10e7061a41b80b102d2201450d0a20014100360200200141046a20024198066a41b40b10e8061a200220072f00c8013b01ac032002200741ca016a2d00003a00ae03200220072900db01370398032002200741e0016a29000037009d03200741cb016a2800002114200741cf016a2800002115200741d3016a2800002116200741d7016a280000211720024198066a200741a8076a41e00010e8061a200141086a200741e8016a20072f0106220041796a220341057410e8062118200141e8026a20074188086a200341e0006c10e8062119200141880b6a200741a40b6a2000417a6a220941027410e806211a200741063b0106200120033b010602402009450d0041002103201a210003402000280200220420033b010420042001360200200041046a21002009200341016a2203470d000b0b200241b0036a20024198066a41e00010e8061a200220022d00ae0322033a009603200220022f01ac0322003b0194032002200229009d033700850320022002290398033703800320024194066a41026a220920033a0000200220003b01940620022002290380033703800120022002290085033700850120024198066a200241b0036a41e00010e8061a201141ffff037122004107490d0120182008417a6a22044105746a2018200841796a22034105746a220020012f010620036b41057410e9061a200041186a200229008d023700002000200e36000f2000200d36000b2000200c3600072000200b360003200041026a20132d00003a0000200020022f019c023b00002000200229038802370013200841e0006c20196a220041c07b6a200041e07a6a220020012f010620036b41e0006c10e9061a2000200241a0026a41e00010e8061a200120012f010641016a22003b01062008410274220b201a6a416c6a201a20044102746a2211200041ffff0371220820046b41027410e9061a2011200a36020020082004490d022001200b6a41f00a6a2100034020002802002204200341016a22033b010420042001360200200041046a210020032008490d000c030b0b200741086a2200200841016a22044105746a200020084105746a2200200320086b220141057410e9061a2000200e36000f2000200d36000b2000200c3600072000200b360003200041026a2002419c026a41026a2d00003a0000200020022f019c023b00002000200229038802370013200041186a200229008d023700002007200841e0006c6a220041c8036a200041e8026a2200200141e0006c10e9061a2000200241a0026a41e00010e8061a2007200341016a22033b01062008410274200741880b6a22006a41086a200020044102746a2200200341ffff037120046b41027410e9061a2000200a360200201141ffff037120072f010622034f0d06200a20043b0104200a2007360200200420034f0d062003417f6a210120072004417f6a22034102746a41900b6a2100034020002802002204200341026a3b010420042007360200200041046a21002001200341016a2203470d000c070b0b200741086a2203200841016a22044105746a200320084105746a220320072f0106221120086b221a41057410e9061a2003200e36000f2003200d36000b2003200c3600072003200b360003200341026a20132d00003a0000200320022f019c023b00002003200229038802370013200341186a200229008d02370000200741e8026a200841e0006c6a220341e0006a2003201a41e0006c10e9061a2003200241a0026a41e00010e8061a2007201141016a22033b01062008410274221a200741880b6a22116a41086a201120044102746a2211200341ffff037120046b41027410e9061a2011200a360200200020072f010622044f0d002007201a6a418c0b6a2103034020032802002200200841016a22083b010420002007360200200341046a210320042008470d000b0b200641016a210320024184026a41026a220020092d00003a0000200220022f0194063b01840220022002290380013703f00120022002290085013700f50120024190016a20024198066a41e00010e8061a201020002d00003a0000200220022f0184023b011c200220022903f001370308200220022900f50137000d200241206a20024190016a41e00010e8061a0240200728020022000d002014210b2017210e2016210d2015210c2001210a0c040b20072f010421112014210b2017210e2016210d2015210c200021072001210a200321060c000b0b200320044105746a220041286a200041086a2206200120046b41057410e9061a200041206a2007290300370000200041186a2008290300370000200041106a2009290300370000200620022903203700002003200441e0006c6a220041c8036a200041e8026a220f20032f010620046b41e0006c10e9061a200f200241a0026a41e00010e8061a200320032f010641016a3b01060c020b41c2b4ca00413541f8b4ca001039000b20024198066a410272410041b20b10e7061a41b80b102d2200450d0320004100360200200041046a20024198066a41b40b10e8061a2000200528020022043602880b2005200036020020052005280204220141016a360204200441003b010420042000360200200241a0026a41026a2002411c6a41026a2d00003a0000200220022f011c3b01a002200220022903083703b0032002200229000d3700b50320024198066a200241206a41e00010e8061a20012003470d0120002f01062204410a4b0d02200020044105746a2203410a6a200241a0026a41026a2d00003a0000200341086a20022f01a0023b0000200341176a200e360000200341136a200d3600002003410f6a200c3600002003410b6a200b3600002003411b6a20022903b003370000200341206a20022900b5033700002000200441e0006c6a41e8026a20024198066a41e00010e8061a2000200441016a22034102746a41880b6a200a360200200020033b0106200a20033b0104200a20003602000b200241d0116a2400200f0f0b4196b3ca00413041f8b4ca001039000b41c6b3ca00412741f8b4ca001039000b1036000b802003077f037e147f23004180076b22042400200441e0006a41186a200241186a290000370300200441e0006a41106a200241106a290000370300200441e0006a41086a200241086a2900003703002004200229000037036002400240024002400240200128020022054190bdc600460d00200128020421060c010b41002106200441e8026a410041e00210e7061a200441c0016a410041840110e7061a41ec03102d2205450d01200541003b010620054100360200200541086a200441e8026a41e00210e8061a200541e8026a200441c0016a41840110e8061a20014100360204200120053602000b02400240024002400240024003400240024020052f010622070d00410021080c010b20074105742102200541086a2109417f21080340024020020d00200721080c020b200841016a2108200441e0006a2009412010ea06220a450d03200241606a2102200941206a2109200a417f4a0d000b0b02402006450d002006417f6a2106200520084102746a41ec036a28020021050c010b0b200441086a41186a2206200441e0006a41186a2202290300370300200441086a41106a200441e0006a41106a2209290300220b370300200441086a41086a200441e0006a41086a220a290300220c37030020042004290360220d3703082001200128020841016a3602082009200b370300200a200c370300200220062903003703002004200d370360200441d8026a41086a2207200341086a280200360200200420032902003703d802024020052f01062203410b490d0020054190bdc600460d02200441e8026a410041e00210e7061a200441c0016a410041840110e7061a41ec03102d220e450d07200e41003b0106200e4100360200200e41086a200441e8026a41e00210e8062109200e41e8026a200441c0016a41840110e806210a200441e8026a41086a2206200541b8036a280200360200200420052900db013703a8012004200541e0016a2900003700ad01200420052902b0033703e802200420052f00c8013b01bc012004200541ca016a2d00003a00be01200541cb016a280000210f200541cf016a2800002110200541d3016a2800002111200541d7016a28000021122009200541e8016a20052f010641796a220241057410e8062109200a200541bc036a2002410c6c10e806210a200541063b0106200e20023b0106200420042f01bc013b01a401200420042d00be013a00a601200420042903a8013703c001200420042900ad013700c501200441286a41086a2006280200360200200420042903e8023703280240024020084107490d00200841057420096a41c07e6a2009200841796a22064105746a2209200241ffff037120066b41057410e9061a200941186a200441e0006a41186a290300370000200941106a200441e0006a41106a290300370000200941086a200441e0006a41086a290300370000200920042903603700002008410c6c200a6a220241b87f6a200241ac7f6a2209200e41066a22022f010020066b410c6c10e9061a200941086a200441d8026a41086a280200360200200920042903d8023702000c010b200541086a20084105746a220941206a2009200541066a22022f010020086b41057410e9061a200941186a200441e0006a41186a290300370000200941106a200441e0006a41106a290300370000200941086a200441e0006a41086a29030037000020092004290360370000200541e8026a2008410c6c6a2209410c6a200920022f010020086b410c6c10e9061a200941086a200441d8026a41086a280200360200200920042903d8023702000b200220022f010041016a3b010020044198016a41026a220220042d00a6013a0000200441c8026a41086a2213200441286a41086a280200360200200420042f01a4013b019801200420042903c001370350200420042900c501370055200420042903283703c8022004413c6a41026a221420022d00003a0000200420042f0198013b013c2004200429005537002d20042004290350370328200441c0006a41086a22152013280200360200200420042903c8023703400240200528020022060d00410021160c050b20052f01042103200441e8026a410272211741002116034020044194016a41026a221820142d00003a0000200420042f013c3b019401200420042903283703602004200429002d37006520044198016a41086a22192015280200360200200420042903403703980141000d04200341ffff0371210502400240024020062f01062202410b490d002017410041960410e7061a419c04102d220a450d0b200a4100360200200a41046a200441e8026a41980410e8061a200420062f00c8013b01bc012004200641ca016a2d00003a00be012004200641db016a2900003703a8012004200641e0016a2900003700ad01200641cb016a280000211a200641cf016a280000211b200641d3016a280000211c200641d7016a280000211d200441e8026a41086a221e200641b8036a2802003602002004200641b0036a2902003703e802200a41086a200641e8016a20062f0106220941796a220241057410e806211f200a41e8026a200641bc036a2002410c6c10e8062120200a41ec036a20064188046a2009417a6a220741027410e8062121200641063b0106200a20023b010602402007450d00410021022021210903402009280200220820023b01042008200a360200200941046a21092007200241016a2202470d000b0b200441d8026a41086a2202201e280200360200200420042d00be0122093a00a601200420042f01bc0122083b01a401200420042903a8013703c001200420042900ad013700c501200420042903e8023703d802200441c4026a41026a220720093a0000200420083b01c402200420042903c0013703e802200420042900c5013700ed0220132002280200360200200420042903d8023703c802200341ffff037122094107490d01201f2005417a6a22084105746a201f200541796a22024105746a2209200a2f010620026b41057410e9061a200941186a20042900653700002009201236000f2009201136000b200920103600072009200f360003200941026a20182d00003a0000200920042f0194013b0000200920042903603700132005410c6c20206a220941b87f6a200941ac7f6a2209200a2f0106220320026b410c6c10e9061a200941086a20192802003602002009200429039801370200200a200341016a22093b01062005410274220f20216a416c6a202120084102746a2203200941ffff0371220520086b41027410e9061a2003200e36020020052008490d02200a200f6a41d4036a2109034020092802002208200241016a22023b01042008200a360200200941046a210920022005490d000c030b0b200641086a2209200541016a22084105746a200920054105746a2209200220056b41057410e9061a200941186a20042900653700002009201236000f2009201136000b200920103600072009200f360003200941026a20044194016a41026a2d00003a0000200920042f0194013b00002009200429036037001320062005410c6c6a220241f4026a200241e8026a220920062f0106220a20056b410c6c10e9061a200241f0026a20044198016a41086a28020036020020092004290398013702002006200a41016a22023b01062005410274200641ec036a22096a41086a200920084102746a2209200241ffff0371220a20086b41027410e9061a2009200e360200200341ffff0371200a4f0d0820062008417f6a22024102746a41f0036a2109034020092802002208200241016a22023b010420082006360200200941046a21092002200a490d000c090b0b200641086a2202200541016a22034105746a200220054105746a220220062f010620056b41057410e9061a200241186a20042900653700002002201236000f2002201136000b200220103600072002200f360003200241026a20182d00003a0000200220042f0194013b000020022004290360370013200641e8026a2005410c6c6a2202410c6a200220062f0106220820056b410c6c10e9061a200241086a201928020036020020022004290398013702002006200841016a22023b01062005410274220f200641ec036a22086a41086a200820034102746a2221200241ffff0371220820036b41027410e9061a2021200e360200200920084f0d002006200f6a41f0036a2102034020022802002209200541016a22053b010420092006360200200241046a210220082005470d000b0b201641016a211620044190016a41026a220220072d00003a000020044180016a41086a22092013280200360200200420042f01c40222083b019001200420042903e802370350200420042900ed02370055200420042903c80237038001201420022d00003a0000200420083b013c2004200429005537002d200420042903503703282015200928020036020020042004290380013703400240200628020022020d00201a210f201d2112201c2111201b2110200a210e0c060b20062f01042103201a210f201d2112201c2111201b211020022106200a210e0c000b0b200520084105746a220641286a200641086a2201200320086b41057410e9061a200641206a2002290300370000200641186a2009290300370000200641106a200a2903003700002001200429036037000020052008410c6c6a220241f4026a200241e8026a220920052f010620086b410c6c10e9061a200241f0026a2007280200360200200920042903d802370200200520052f010641016a3b01060c040b200441e8026a41086a220220052008410c6c6a220941f0026a22082802003602002004200941e8026a22092902003703e802200920032902003702002008200341086a280200360200200441c0016a41086a20022802002202360200200420042903e802220b3703c0012000410c6a20023602002000200b370204200041013602000c040b4195b4ca00412d41f8b4ca001039000b41c2b4ca00413541f8b4ca001039000b200441e8026a410272410041960410e7061a419c04102d2202450d0220024100360200200241046a200441e8026a41980410e8061a2002200128020022093602ec032001200236020020012001280204220841016a360204200941003b010420092002360200200441e0006a41026a2004413c6a41026a2d00003a0000200420042f013c3b0160200420042903283703e8022004200429002d3700ed02200441c0016a41086a200441c0006a41086a280200360200200420042903403703c00120082016470d0320022f01062208410a4b0d04200220084105746a2209410a6a200441e0006a41026a2d00003a0000200941086a20042f01603b0000200941176a2012360000200941136a20113600002009410f6a20103600002009410b6a200f3600002009411b6a20042903e802370000200941206a20042900ed0237000020022008410c6c6a220941f0026a200441c0016a41086a280200360200200941e8026a20042903c0013702002002200841016a22094102746a41ec036a200e360200200220093b0106200e20093b0104200e20023602000b200041003602000b20044180076a24000f0b1036000b4196b3ca00413041f8b4ca001039000b41c6b3ca00412741f8b4ca001039000bbd2504077f037e1d7f027e230041f00a6b22042400200441c0016a41186a200241186a290000370300200441c0016a41106a200241106a290000370300200441c0016a41086a200241086a290000370300200420022900003703c00102400240024002400240200128020022054190bdc600460d00200128020421060c010b41002106200441f8046a410041e00210e7061a20044190026a410041e00210e7061a41c805102d2205450d01200541003b010620054100360200200541086a200441f8046a41e00210e8061a200541e8026a20044190026a41e00210e8061a20014100360204200120053602000b02400240024002400240024003400240024020052f010622070d00410021080c010b20074105742102200541086a2109417f21080340024020020d00200721080c020b200841016a2108200441c0016a2009412010ea06220a450d03200241606a2102200941206a2109200a417f4a0d000b0b02402006450d002006417f6a2106200520084102746a41c8056a28020021050c010b0b200441186a2206200441c0016a41186a2202290300370300200441106a200441c0016a41106a2209290300220b370300200441086a200441c0016a41086a220a290300220c370300200420042903c001220d3703002001200128020841016a36020820044188016a41106a2207200b37030020044188016a41086a220e200c37030020044188016a41186a220f20062903003703002004200d370388012002200341186a2903003703002009200341106a290300370300200a200341086a290300370300200420032903003703c001024020052f01062203410b490d0020054190bdc600460d02200441f8046a410041e00210e7061a20044190026a410041e00210e7061a41c805102d2210450d07201041003b010620104100360200201041086a200441f8046a41e00210e8062109201041e8026a20044190026a41e00210e806210a200441f8046a41086a2206200541b0046a290300370300200441f8046a41106a2207200541b8046a290300370300200441f8046a41186a2203200541c0046a290300370300200420052900db013703f8012004200541e0016a2900003700fd01200420052903a8043703f804200420052f00c8013b018c022004200541ca016a2d00003a008e02200541cb016a2800002111200541cf016a2800002112200541d3016a2800002113200541d7016a28000021142009200541e8016a20052f010641796a2202410574220e10e8062109200a200541c8046a200e10e806210a200541063b0106201020023b0106200420042f018c023b01f401200420042d008e023a00f601200420042903f8013703e001200420042900fd013700e50120044190026a41186a200329030037030020044190026a41106a200729030037030020044190026a41086a2006290300370300200420042903f804370390020240024020084107490d002009200841057441c07e6a22066a2009200841796a220841057422076a2209200241ffff037120086b41057410e9061a200941186a20044188016a41186a290300370000200941106a20044188016a41106a290300370000200941086a20044188016a41086a2903003700002009200429038801370000200a20066a200a20076a2209201041066a22022f010020086b41057410e9061a200941186a200441c0016a41186a290300370300200941106a200441c0016a41106a290300370300200941086a200441c0016a41086a290300370300200920042903c0013703000c010b200541066a2102200541086a22092008410574220a41206a22066a2009200a6a220920052f010620086b41057410e9061a200941186a20044188016a41186a290300370000200941106a20044188016a41106a290300370000200941086a20044188016a41086a2903003700002009200429038801370000200541e8026a220920066a2009200a6a220920052f010620086b41057410e9061a200941186a200441c0016a41186a290300370300200941106a200441c0016a41106a290300370300200941086a200441c0016a41086a290300370300200920042903c0013703000b200220022f010041016a3b0100200441a8016a41026a220220042d00f6013a0000200441d8006a41086a220920044190026a41086a2215290300370300200441d8006a41106a220820044190026a41106a2216290300370300200441d8006a41186a220a20044190026a41186a2217290300370300200420042f01f4013b01a801200420042903e001370378200420042900e50137007d2004200429039002370358200441346a41026a221820022d00003a0000200420042f01a8013b01342004200429007d37002520042004290378370320200441386a41186a2219200a290300370300200441386a41106a221a2008290300370300200441386a41086a221b2009290300370300200420042903583703380240200528020022060d004100211c0c050b20052f0104211d200441f8046a410272211e4100211c0340200441bc016a41026a221f20182d00003a0000200420042f01343b01bc01200420042903203703782004200429002537007d200441c0016a41186a22202019290300370300200441c0016a41106a2221201a290300370300200441c0016a41086a2222201b290300370300200420042903383703c00141000d04201d41ffff0371210502400240024020062f01062202410b490d00201e410041f20510e7061a41f805102d220a450d0b200a4100360200200a41046a200441f8046a41f40510e8061a200420062f00c8013b018c022004200641ca016a2d00003a008e02200420062900db013703f8012004200641e0016a2900003700fd01200641cb016a2800002123200641cf016a2800002124200641d3016a2800002125200641d7016a2800002126200441f8046a41186a2203200641c0046a290300370300200441f8046a41106a220e200641b8046a290300370300200441f8046a41086a220f200641b0046a290300370300200420062903a8043703f804200a41086a200641e8016a20062f0106220241796a2209410574220810e8062127200a41e8026a200641c8046a200810e8062128200a41c8056a200641e4056a2002417a6a220741027410e8062129200641063b0106200a20093b010602402007450d00410021022029210903402009280200220820023b01042008200a360200200941046a21092007200241016a2202470d000b0b201720032903003703002016200e2903003703002015200f290300370300200420042903f80437039002200420042f018c023b01f401200420042d008e023a00f601200420042903f8013703e001200420042900fd013700e501200441f4046a41026a220720042d00f6013a0000200420042f01f4013b01f404200420042903e001370358200420042900e50137005d20032017290300370300200e2016290300370300200f201529030037030020042004290390023703f804201d41ffff037122094107490d0120272005417a6a2208410574221d6a2027200541796a2202410574222a6a2209200a2f010620026b41057410e9061a200941186a200429007d3700002009201436000f2009201336000b2009201236000720092011360003200941026a201f2d00003a0000200920042f01bc013b0000200920042903783700132028201d6a2028202a6a2209200a2f0106221d20026b41057410e9061a200941186a2020290300370300200941106a2021290300370300200941086a2022290300370300200920042903c001370300200a201d41016a22093b01062005410274221120296a416c6a202920084102746a221d200941ffff0371220520086b41027410e9061a201d201036020020052008490d02200a20116a41b0056a2109034020092802002208200241016a22023b01042008200a360200200941046a210920022005490d000c030b0b200641086a2209200541016a2208410574220a6a2009200541057422076a2209200220056b410574220310e9061a2009201436000f2009201336000b2009201236000720092011360003200941026a200441bc016a41026a2d00003a0000200920042f01bc013b000020092004290378370013200941186a200429007d370000200641e8026a2209200a6a200920076a2209200310e9061a200941186a200441c0016a41186a290300370300200941106a200441c0016a41106a290300370300200941086a200441c0016a41086a290300370300200920042903c0013703002006200241016a22023b01062005410274200641c8056a22096a41086a200920084102746a2209200241ffff037120086b41027410e9061a20092010360200201d41ffff037120062f010622024f0d08201020083b010420102006360200200820024f0d082002417f6a210a20062008417f6a22024102746a41d0056a2109034020092802002208200241026a3b010420082006360200200941046a2109200a200241016a2202470d000c090b0b200641086a2202200541016a2208410574221d6a2002200541057422296a220220062f0106222720056b410574222810e9061a2002201436000f2002201336000b2002201236000720022011360003200241026a201f2d00003a0000200220042f01bc013b000020022004290378370013200241186a200429007d370000200641e8026a2202201d6a200220296a2202202810e9061a200241186a2020290300370300200241106a2021290300370300200241086a2022290300370300200220042903c0013703002006202741016a22023b010620054102742229200641c8056a221d6a41086a201d20084102746a221d200241ffff037120086b41027410e9061a201d2010360200200920062f010622084f0d00200620296a41cc056a2102034020022802002209200541016a22053b010420092006360200200241046a210220082005470d000b0b201c41016a211c200441b8016a41026a220220072d00003a000020044188016a41086a2209200f29030037030020044188016a41106a2208200e29030037030020044188016a41186a22052003290300370300200420042f01f4043b01b801200420042903583703a8012004200429005d3700ad01200420042903f80437038801201820022d00003a0000200420042f01b8013b0134200420042900ad01370025200420042903a80137032020192005290300370300201a2008290300370300201b200929030037030020042004290388013703380240200628020022020d0020232111202621142025211320242112200a21100c060b20062f0104211d2023211120262114202521132024211220022106200a21100c000b0b200541086a22062008410574220141206a221d6a200620016a2206200320086b41057410e9061a200641186a200f290300370000200641106a2007290300370000200641086a200e2903003700002006200429038801370000200541e8026a2206201d6a200620016a220620052f010620086b41057410e9061a200641186a2002290300370300200641106a2009290300370300200641086a200a290300370300200620042903c001370300200520052f010641016a3b01060c040b200520084105746a22024180036a2209290300210b2003290300210c2003290308210d2003290310212b2009200341186a290300370300200241f8026a2209290300212c2009202b370300200241f0026a2209290300212b2009200d370300200241e8026a2202290300210d2002200c370300200041186a200b3703002000202c3703102000202b3703082000200d3703000c040b4195b4ca00412d41f8b4ca001039000b41c2b4ca00413541f8b4ca001039000b200441f8046a410272410041f20510e7061a41f805102d2209450d0220094100360200200941046a200441f8046a41f40510e8061a2009200128020022023602c8052001200936020020012001280204220841016a360204200241003b010420022009360200200441c0016a41026a200441346a41026a2d00003a0000200420042f01343b01c00120042004290320370390022004200429002537009502200441f8046a41186a200441386a41186a290300370300200441f8046a41106a200441386a41106a290300370300200441f8046a41086a200441386a41086a290300370300200420042903383703f8042008201c470d0320092f01062208410a4b0d04200920084105746a2202410a6a200441c0016a41026a2d00003a0000200241086a20042f01c0013b0000200241176a2014360000200241136a20133600002002410f6a20123600002002410b6a20113600002002411b6a200429039002370000200241206a200429009502370000200241e8026a20042903f804370300200241f0026a200441f8046a41086a290300370300200241f8026a20044188056a29030037030020024180036a20044190056a2903003703002009200841016a22024102746a41c8056a2010360200200920023b0106201020023b0104201020093602000b200041003602100b200441f00a6a24000f0b1036000b4196b3ca00413041f8b4ca001039000b41c6b3ca00412741f8b4ca001039000b8e0c01087f230041c0046b22032400200341206a41186a200141186a290000370300200341206a41106a200141106a290000370300200341206a41086a200141086a2900003703002003200129000037032002400240024002400240200028020022044190bdc600460d00200028020421050c010b4100210520034180016a410041e00210e7061a200341f8006a22014100360200200341f0006a22064200370300200341d0006a41186a4200370300200341d0006a41106a4200370300200341d0006a41086a420037030020034200370350419403102d2204450d01200441003b010620044100360200200441086a20034180016a41e00210e8061a20044190036a200128020036020020044188036a200629030037020020044180036a200341e8006a290300370200200441f8026a200341e0006a290300370200200441f0026a200341d0006a41086a290300370200200420032903503702e80220004100360204200020043602000b02400240024003400240024020042f010622070d00410021080c010b20074105742101200441086a2106417f21080340024020010d00200721080c020b200841016a2108200341206a2006412010ea062209450d03200141606a2101200641206a21062009417f4a0d000b0b02402005450d002005417f6a2105200420084102746a4194036a28020021040c010b0b200341186a2201200341206a41186a2205290300370300200341106a2206200341206a41106a2207290300370300200341086a2209200341206a41086a220a290300370300200320032903203703002000200028020841016a3602082003200836024c200320003602482003200436024420034100360240200341d0006a41186a2001290300370300200341d0006a41106a2006290300370300200341d0006a41086a20092903003703002003200329030037035020034180016a200341c0006a200341d0006a2002107720032d0080014101470d02200a20034189016a290000370300200720034191016a290000370300200520034199016a2900003703002003200329008101370320200341ac016a2802002106200341b8016a2802002109200341b4016a2802002108200341b0016a2802002104200341a8016a28020022012802002205450d0120012f01042107200341a4016a280200210020034180016a410172210103402003200741ffff037136024c20032006360248200320053602442003200041016a360240200341d0006a41186a200341206a41186a2206290300370300200341d0006a41106a200341206a41106a2205290300370300200341d0006a41086a200341206a41086a22072903003703002003200329032037035020034180016a200341c0006a200341d0006a200420082009107820032d0080014101470d032007200141086a2900003703002005200141106a2900003703002006200141186a2900003703002003200129000037032020032802ac01210620032802b801210920032802b401210820032802b001210420032802a80122072802002205450d0220072f0104210720032802a40121000c000b0b200420084102746a41e8026a20023602000c010b20034180016a410272410041be0310e7061a41c403102d2201450d0120014100360200200141046a20034180016a41c00310e8061a200120062802002205360294032006200136020020062006280204220741016a360204200541003b01042005200136020020034180016a41186a200341206a41186a29030037030020034180016a41106a200341206a41106a29030037030020034180016a41086a200341206a41086a290300370300200320032903203703800120072009470d0220012f01062206410a4b0d03200120064105746a220941206a20034180016a41186a290300370000200941186a20034180016a41106a290300370000200941106a20034180016a41086a290300370000200941086a200329038001370000200120064102746a41e8026a20043602002001200641016a22064102746a4194036a2008360200200120063b0106200820063b0104200820013602000b200341c0046a24000f0b1036000b4196b3ca00413041f8b4ca001039000b41c6b3ca00412741f8b4ca001039000bed1307027f017e057f027e017f017e0a7f230041b0036b2202240020002802102203200328020041016a36020020002902142104200028020c2105200028020821062000280200210320002802042100200241f0016a41086a2207200141086a280200360200200220012902003703f001024002400240024002400240024020002f01062201410b490d000240024020004190bdc600460d00200241d0026a410272410041da0010e7061a200241386a410041840110e7061a41e401102d22080d010c080b4195b4ca00412d41f8b4ca001039000b20084100360200200841046a200241d0026a41dc0010e8061a200841e0006a200241386a41840110e8062107200241386a41086a2209200041b0016a280200360200200220002902a8013703382000413c6a330000210a2000413e6a310000210b20002d003f210c2000350038210d200841086a200041c0006a20002f010641796a220141037410e806210e2007200041b4016a2001410c6c10e8062107200041063b0106200820013b0106200241d0026a41086a2009280200360200200220022903383703d002200d200a200b4210868442208684210a0240024020054107490d002005410374200e6a41506a200e200541796a22094103746a220e200141ffff037120096b41037410e9061a200e20043700002005410c6c20076a220541b87f6a200541ac7f6a2205200841066a22012f010020096b410c6c10e9061a200541086a200241f0016a41086a280200360200200520022903f0013702000c010b200041086a20054103746a220741086a2007200041066a22012f010020056b41037410e9061a20072004370000200041e0006a2005410c6c6a2207410c6a200720012f010020056b410c6c10e9061a200741086a200241f0016a41086a280200360200200720022903f0013702000b200120012f010041016a3b0100200241286a41086a220f200241d0026a41086a22102802002205360200200241086a221120053602002002200c3a0017200220022903d00222043703282002200a3e02102002200a4230883c00162002200a4220883d011420022004370300200229031021040240200028020022090d00410021120c030b20002f01042113200241d0026a4102722114410021000340200220093602242002200341016a2212360220200f20112802003602002002200229030037032820032000470d02201341ffff0371210702400240024020092f01062203410b490d002014410041da0010e7061a200241f0016a200241d0026a41dc0010e8061a200241386a410041b40110e7061a419402102d2201450d0a20014100360200200141046a200241f0016a41dc0010e8061a200141e0006a200241386a41b40110e8062100200941386a290000210a200241386a41086a220e200941b0016a2802003602002002200941a8016a290200370338200141086a200941c0006a20092f0106220541796a220341037410e80621152000200941b4016a2003410c6c10e8062116200141e4016a20094180026a2005417a6a220c41027410e8062117200941063b0106200120033b01060240200c450d00410021032017210003402000280200220520033b010420052001360200200041046a2100200c200341016a2203470d000b0b2010200e280200220336020020022002290338220b3703d002200e20033602002002200b370338201341ffff037122004107490d0120152007417a6a22004103746a2015200741796a22034103746a220520012f010620036b41037410e9061a200520043700002007410c6c20166a220541b87f6a200541ac7f6a220520012f0106220c20036b410c6c10e9061a200541086a200f280200360200200520022903283702002001200c41016a22053b01062007410274221320176a416c6a201720004102746a220c200541ffff0371220720006b41027410e9061a200c200836020020072000490d02200120136a41cc016a2100034020002802002205200341016a22033b010420052001360200200041046a210020032007490d000c030b0b200941086a2205200741016a22004103746a200520074103746a2205200320076b220141037410e9061a2005200437000020092007410c6c6a220541ec006a200541e0006a220c2001410c6c10e9061a200541e8006a200241286a41086a280200360200200c20022903283702002009200341016a22033b01062007410274200941e4016a22056a41086a200520004102746a2205200341ffff0371220120006b41027410e9061a20052008360200201341ffff037120014f0d0620092000417f6a22034102746a41e8016a2100034020002802002205200341016a22033b010420052009360200200041046a210020032001490d000c070b0b200941086a2203200741016a220c4103746a200320074103746a220320092f0106220520076b221341037410e9061a20032004370000200941e0006a2007410c6c6a2203410c6a20032013410c6c10e9061a200341086a200f280200360200200320022903283702002009200541016a22033b010620074102742217200941e4016a22056a41086a2005200c4102746a2213200341ffff03712205200c6b41027410e9061a20132008360200200020054f0d00200920176a41e8016a2103034020032802002200200741016a22073b010420002009360200200341046a210320052007470d000b0b200241106a41086a200e280200220336020020112003360200200220022903382204370310200220043703000240200928020022030d0020012108200a21040c040b20092f0104211320032109200a21042001210820122100201221030c000b0b200020054103746a220341106a200341086a2203200120056b41037410e9061a2003200437000020002005410c6c6a220341ec006a200341e0006a220120002f010620056b410c6c10e9061a200341e8006a2007280200360200200120022903f001370200200020002f010641016a3b01060c020b41c2b4ca00413541f8b4ca001039000b200241d0026a410272410041da0010e7061a200241f0016a200241d0026a41dc0010e8061a200241386a410041b40110e7061a419402102d2203450d0320034100360200200341046a200241f0016a41dc0010e8061a200341e0006a200241386a41b40110e80621052003200628020022003602e4012006200336020020062006280204220141016a360204200041003b010420002003360200200241386a41086a200241086a2802003602002002200229030037033820012012470d0120032f01062200410a4b0d0220052000410c6c6a22052002290338370200200320004103746a41086a2004370000200541086a200241386a41086a2802003602002003200041016a22004102746a41e4016a2008360200200320003b0106200820003b0104200820033602000b200241b0036a24000f0b4196b3ca00413041f8b4ca001039000b41c6b3ca00412741f8b4ca001039000b1036000be66d05027f067e147f0c7e157f230041d00d6b22032400024002400240024002400240024002400240024002400240024002400240024002400240024020012d00000e06000102030407000b200341f4066a4101360200200342013702e406200341b4d8c9003602e0062003410436028c04200341fcdbc90036028804200320034188046a3602f006200341e0066a41e8d8c9001043000b200141e8006a280200210420034188046a200141086a41e00010e8061a200341d00a6a20014184016a280200360200200341c80a6a200141fc006a290200370300200341b80a6a41086a200141f4006a2902003703002003200141ec006a2902003703b80a0240024020022d000120022d0000410047720d0041aa97ca00ad42808080808001842205100122022900002106200229000821072002102f41ba97ca00ad4280808080f0018422081001220229000021092002290008210a2002102f2003200a3703f001200320093703e801200320073703e001200320063703d801200341e0066a200341d8016a108502410020032802c00720032d00d8074102461b2004490d0120004183243b0100200041086a4116360200200041046a4184cec100360200200041026a41003a00000c100b200041023a00000c0f0b200341ec066a2004360200200341e0066a41086a41053a00002003410d3a00e00641c8e1ca004100200341e0066a108c01200341e0066a20034188046a41e00010e8061a200341cc076a200341b80a6a41086a290300370200200341d4076a200341c80a6a290300370200200341dc076a200341d00a6a280200360200200320043602c007200320032903b80a3702c4072005100122022900002106200229000821072002102f20081001220229000021092002290008210a2002102f2003200a3703f001200320093703e801200320073703e001200320063703d801200341003602c009200342013703b809200341e0066a200341b8096a10f60120032802bc092102200341d8016aad428080808080048420033502c00942208620032802b8092204ad84100402402002450d002004102f0b200041043a00000c0e0b200141086a280200210b200141046a280200210c02400240024020022d00000d0020022d00014101470d002001410c6a280200210d200141106a2903002106200241196a2d00002104200241186a2d0000210e200241166a2f0100210f200241156a2d00002110200241146a2d00002111200241126a2f01002112200241116a2d00002113200241106a2d000021142002410e6a2f010021152002410d6a2d000021162002410c6a2d000021172002410a6a2f01002118200241096a2d00002119200241086a2d0000211a200241066a2f0100211b200241056a2d0000211c200241046a2d0000211d200241026a2f0100211e20032002411a6a2901003703d00a200320043a00cf0a2003200e3a00ce0a2003200f3b01cc0a200320103a00cb0a200320113a00ca0a200320123b01c80a200320133a00c70a200320143a00c60a200320153b01c40a200320163a00c30a200320173a00c20a200320183b01c00a200320193a00bf0a2003201a3a00be0a2003201b3b01bc0a2003201c3a00bb0a2003201d3a00ba0a2003201e3b01b80a200341e0066a200341b80a6a200610840220032802e0064101470d02200020032902e406370200200041086a200341ec066a2802003602000c010b200041023a00000b4100210e410121040240200b450d00200c102f0b410121000c100b20034190076a290300210a20034188076a290300210541202104200341e0066a41206a2903002108200341f8066a290300211f4110210e200341e0066a41106a290300210620032903e806212041aa97ca00ad4280808080800184100122022900002107200229000821092002102f41ba97ca00ad4280808080f00184100122022900002121200229000821222002102f200320223703f001200320213703e801200320093703e001200320073703d801200341e0066a200341d8016a10850220032903e006210720032903e806212120032903f006212220032903f8062123200329038007212420032903880721252003290390072126200329039807212720032903a007212820032903a807212920032903b007212a20032903b807210920032802c007211220032802c407210f20032802c807211020032802cc07211320032802d007211120032802d407211420032d00d80721022003200341e0066a41fc006a2800003600bb09200320032800d9073602b8090240024020024102470d0042012107200342013703d804200342013703d004200342af013703c80420034287013703c004200342013703b804200342013703b004200342013703a804200342013703a00420034201370398042003420137039004200342013703880441002102200341003602e8044180800121114180800421104104210f42e40021090c010b20034188046a41fc006a20032800bb09360000200320123602e8042003202a3703d804200320293703d004200320283703c804200320273703c004200320263703b804200320253703b004200320243703a804200320233703a004200320223703980420032021370390042003200737038804200320032802b809360081052013210e201421040b200320074200200dad2221420010ed06200320023a008005200320043602fc04200320113602f8042003200e3602f404200320103602f0042003200f3602ec04200320093703e00442002006427f200329030020032903084200521b7d2207200720065622021b210602400240024002402002450d00412c210241af8ec20021040c010b200341e0066a200c200d20034188046a10940220032802e0064101470d01200341e8066a280200210220032802e40621040b0240200b450d00200c102f0b200341b80a6a20202006201f20082005200a108802200041086a2002360200200041046a2004360200200041003a00000c010b200341d8016a41186a2204200341e0066a410472220241186a280200360200200341d8016a41106a220e200241106a290200370300200341d8016a41086a2211200241086a290200370300200320022902003703d801200341e80c6a41026a22122021422086200cad841003220241026a2d00003a00002002280003210f2002280007211020022f0000211320034198036a410d6a2214200241186a29000037000020034198036a41086a2215200241136a290000370300200320133b01e80c2003200229000b370398032002102f200341e0066a41186a2004280200360200200341e0066a41106a200e290300370300200341e0066a41086a2011290300370300200320032903d8013703e006200341980d6a41026a220e20122d00003a0000200341b8096a41086a22112015290300370300200341b8096a410d6a22122014290000370000200320032f01e80c3b01980d20032003290398033703b80941aa97ca00ad4280808080800184100122022d000f211320022d000e211420022f000c211520022d000b211620022d000a211720022f0008211820022d0007211920022d0006211a20022f0004211b20022d0003211c20022d0002211d20022f0000211e2002102f41e4f4c100ad4280808080b0018410012202290008210720022d0007212b20022d0006212c20022f0004212d20022d0003212e20022d0002212f20022f000021302002102f4120102d2204450d04200420032f01980d3b0000200420103600072004200f360003200420032903b80937000b200441026a200e2d00003a0000200441136a2011290300370000200441186a20122900003700002004ad428080808080048410032202290018210920022d0017210e20022d0016211120022f0014211220022d0013213120022d0012213220022f0010213320022d000f213420022d000e213520022f000c213620022d000b213720022d000a213820022f0008213920022d0007213a20022d0006213b20022f0004213c20022d0003213d20022d0002213e20022f0000213f2002102f2004102f41c000102d2202450d04200220093700382002200e3a0037200220113a0036200220123b0034200220313a0033200220323a0032200220333b0030200220343a002f200220353a002e200220363b002c200220373a002b200220383a002a200220393b00282002203a3a00272002203b3a00262002203c3b00242002203d3a00232002203e3a00222002203f3b0020200220073700182002202b3a00172002202c3a00162002202d3b00142002202e3a00132002202f3a0012200220303b0010200220133a000f200220143a000e200220153b000c200220163a000b200220173a000a200220183b0008200220193a00072002201a3a00062002201b3b00042002201c3a00032002201d3a00022002201e3b0000200341003602c009200342013703b809200341e0066a200341b8096a109502200341e0066a410472200341b8096a109502200341e8066a200341b8096a10950220032d00f80621110240024020032802bc0920032802c0092204460d0020032802b809210e0c010b200441016a220e2004490d0420044101742212200e2012200e4b1b22124100480d040240024020040d002012102d210e0c010b20032802b809200420121031210e0b200e450d05200320123602bc092003200e3602b8090b2003200441016a3602c009200e20046a20113a000020032802ec062113200341f4066a280200220e200341b8096a10690240024020032802bc09221220032802c00922116b200e490d0020032802b80921040c010b2011200e6a22042011490d04201241017422142004201420044b1b22144100480d040240024020120d002014102d21040c010b20032802b80920122014103121040b2004450d05200320143602bc09200320043602b809201421120b200420116a2013200e10e8061a2002ad42808080808008842011200e6aad4220862004ad84100402402012450d002004102f0b2002102f0240200341f0066a280200450d002013102f0b200341b8096a41026a220e200341e80c6a41026a2d00003a0000200341e0066a41086a221120034198036a41086a290300370300200341e0066a410d6a221220034198036a410d6a290000370000200320032f01e80c3b01b80920032003290398033703e00641aa97ca00ad4280808080800184100122022d000f211320022d000e211420022f000c211520022d000b211620022d000a211720022f0008211820022d0007211920022d0006211a20022f0004211b20022d0003211c20022d0002211d20022f0000211e2002102f41c0f4c100ad4280808080c0018410012202290008210720022d0007212b20022d0006212c20022f0004212d20022d0003212e20022d0002212f20022f000021302002102f4120102d2204450d04200420032f01b8093b0000200420103600072004200f360003200420032903e00637000b200441026a200e2d00003a0000200441136a2011290300370000200441186a20122900003700002004ad428080808080048410032202290018210920022d0017210e20022d0016211120022f0014211220022d0013213120022d0012213220022f0010213320022d000f213420022d000e213520022f000c213620022d000b213720022d000a213820022f0008213920022d0007213a20022d0006213b20022f0004213c20022d0003213d20022d0002213e20022f0000213f2002102f2004102f41c000102d2202450d04200220093700382002200e3a0037200220113a0036200220123b0034200220313a0033200220323a0032200220333b0030200220343a002f200220353a002e200220363b002c200220373a002b200220383a002a200220393b00282002203a3a00272002203b3a00262002203c3b00242002203d3a00232002203e3a00222002203f3b0020200220073700182002202b3a00172002202c3a00162002202d3b00142002202e3a00132002202f3a0012200220303b0010200220133a000f200220143a000e200220153b000c200220163a000b200220173a000a200220183b0008200220193a00072002201a3a00062002201b3b00042002201c3a00032002201d3a00022002201e3b0000200341c0003602e406200320023602e006200c200d200341e0066a109d022002102f0240200b450d00200c102f0b200341980d6a41026a200341e80c6a41026a2d000022023a0000200341b8096a41086a220420034198036a41086a290300370300200341b8096a410d6a220e20034198036a410d6a290000370000200320032f01e80c220b3b01980d20032003290398033703b809200341e0066a41086a41043a0000200341e9066a200b3b0000200341eb066a20023a0000200341f0066a2010360200200341ec066a200f3602002003410d3a00e006200341f4066a20032903b809370200200341fc066a200429030037020020034181076a200e29000037000041c8e1ca004100200341e0066a108c01200341b80a6a20202006201f20082005200a108802200041043a00000b4100210e41012104410121000c0f0b200141c0006a2903002106200141386a2903002107200141c8006a2903002109200341a8046a200141246a28020036020020034188046a41186a2001411c6a29020037030020034188046a41106a200141146a29020037030020034188046a41086a2001410c6a2902003703002003200141046a290200370388042001412c6a2802002104200141286a280200210e0240024020022d00000d0020022d00014101470d002002411a6a290100210a200241196a2d0000210b200241186a2d0000210c200241166a2f0100210f200241156a2d00002110200241146a2d00002111200241126a2f01002112200241116a2d00002113200241106a2d000021142002410e6a2f010021152002410d6a2d000021162002410c6a2d000021172002410a6a2f01002118200241096a2d00002119200241086a2d0000211a200241066a2f0100211b200241056a2d0000211c200241046a2d0000211d200241026a2f01002102200141306a280200211e200341e0066a41206a20034188046a41206a280200360200200341e0066a41186a220d20034188046a41186a290300370300200341e0066a41106a222b20034188046a41106a290300370300200341e0066a41086a222c20034188046a41086a29030037030020032003290388043703e006200341b80a6a200341e0066a10bb0120032d00b80a4101470d01200041013a00002004450d0d0c0c0b200041023a000020040d0b0c0c0b200341b80a6a41086a2d0000212d200341c10a6a2f0000212e200341c30a6a2d0000212f200341c40a6a2d00002130200341c50a6a2f00002131200341c70a6a2d00002132200341b80a6a41106a2d00002133200341c90a6a2f00002134200341cb0a6a2d00002135200341cc0a6a2d00002136200341cd0a6a2f00002137200341cf0a6a2d00002138200341b80a6a41186a2d0000213920032f00b90a213a20032d00bb0a213b20032d00bc0a213c20032f00bd0a213d20032d00bf0a213e2003200341d10a6a2900003703f001200320393a00ef01200320383a00ee01200320373b01ec01200320363a00eb01200320353a00ea01200320343b01e801200320333a00e701200320323a00e601200320313b01e401200320303a00e3012003202f3a00e2012003202e3b01e0012003202d3a00df012003203e3a00de012003203d3b01dc012003203c3a00db012003203b3a00da012003203a3b01d8012003200a3703d00a2003200b3a00cf0a2003200c3a00ce0a2003200f3b01cc0a200320103a00cb0a200320113a00ca0a200320123b01c80a200320133a00c70a200320143a00c60a200320153b01c40a200320163a00c30a200320173a00c20a200320183b01c00a200320193a00bf0a2003201a3a00be0a2003201b3b01bc0a2003201c3a00bb0a2003201d3a00ba0a200320023b01b80a200d20032903f001370300202b20032903e801370300202c20032903e001370300200320032903d8013703e0062003201e3602a0032003200436029c032003200e36029803200341b8096a200341b80a6a200341e0066a20072006200920034198036a10830202400240024020032802b8094101460d00200341c0096a280200450d0120032802bc09102f0c010b20032d00bc0922024104470d010b200041043a00000c0c0b200341cc096a2802002104200341b8096a41106a280200210f200341c4096a280200210e200341b8096a41086a280200210b200020032f00bd0920032d00bf0941107472220c3b0001200020023a0000200041036a200c4110763a0000200041086a200e360000200041046a200b3600002004450d0b200f102f0c0b0b200141386a2903002107200141306a2903002109200141c0006a2903002106200341f8006a41186a200141196a290000370300200341f8006a41106a200141116a290000370300200341f8006a41086a200141096a29000037030020032001290001370378200141286a2802002104200141246a280200210e20022d00000d0320022d00014101470d03200241196a2d0000210b200241186a2d0000210c200241166a2f0100210f200241156a2d00002110200241146a2d00002111200241126a2f01002112200241116a2d00002113200241106a2d000021142002410e6a2f010021152002410d6a2d000021162002410c6a2d000021172002410a6a2f01002118200241096a2d00002119200241086a2d0000211a200241066a2f0100211b200241056a2d0000211c200241046a2d0000211d200241026a2f0100211e2001412c6a280200210d20032002411a6a2901003703b0012003200b3a00af012003200c3a00ae012003200f3b01ac01200320103a00ab01200320113a00aa01200320123b01a801200320133a00a701200320143a00a601200320153b01a401200320163a00a301200320173a00a201200320183b01a001200320193a009f012003201a3a009e012003201b3b019c012003201c3a009b012003201d3a009a012003201e3b019801200341e0066a20034198016a2006108402024020032802e0064101470d0020032d00e706411074210220032f00e506210b20032802ec06212d20032802e806212b20032d00e406211b02402004450d00200e102f0b200b200272210d4100212e410121020c070b20034190076a290300210a20034188076a29030021054120210b200341b8016a41186a200341e0066a41206a2903003703004110210c200341b8016a41106a200341e0066a41186a290300370300200341c0016a200341e0066a41106a290300370300200320032903e8063703b80141aa97ca00ad4280808080800184100122022900002106200229000821082002102f41ba97ca00ad4280808080f0018410012202290000211f200229000821202002102f200320203703f0012003201f3703e801200320083703e001200320063703d801200341e0066a200341d8016a10850220032903e006210820032903e806211f20032903f006212020032903f8062121200329038007212220032903880721232003290390072124200329039807212520032903a007212620032903a807212720032903b007212820032903b807210620032802c007211220032802c407210f20032802c807211020032802cc07211320032802d007211120032802d407211420032d00d80721022003200341e0066a41fc006a2800003600bb09200320032800d9073602b8090240024020024102470d00200342013703a802200342013703a002200342af013703980220034287013703900220034201370388022003420137038002200342013703f801200342013703f001200342013703e801200342013703e001200342013703d80141002102200341003602b8024180800121114180800421104104210f42e40021060c010b200341d8016a41fc006a20032800bb09360000200320123602b802200320283703a802200320273703a0022003202637039802200320253703900220032024370388022003202337038002200320223703f801200320213703f001200320203703e8012003201f3703e001200320083703d801200320032802b8093600d1022013210c2014210b0b200341f0026a4200370300200341e0026a420037030020034180036a4200370300200320023a00d0022003200b3602cc02200320113602c8022003200c3602c402200320103602c0022003200f3602bc02200320063703b0022003428080e983b1de163703e8022003428080e983b1de163703d80220034280a094a58d1d3703f802200342a0808080808010370388032003200341d8016a360290032003200341d8016a36029403200341b80a6a41186a221020034198016a41186a290300370300200341b80a6a41106a221120034198016a41106a290300370300200341b80a6a41086a221220034198016a41086a29030037030020032003290398013703b80a200341e0066a41186a22134200370300200341e0066a41106a220b4200370300200341e0066a41086a22024200370300200342003703e00641d5a2ca00ad42808080809001841001220c29000021062002200c41086a290000370300200320063703e006200c102f41ecb0c000ad428080808030841001220f2900002106200341b8096a41086a220c200f41086a290000370300200320063703b809200f102f200b20032903b809220637030020034188046a41086a2214200229030037030020034188046a41106a2215200637030020034188046a41186a2216200c290300370300200320032903e00637038804200341186a20034188046a10e301200329032021062003280218211720134200370300200b420037030020024200370300200342003703e006418de6c300ad4280808080e000841001220f29000021082002200f41086a290000370300200320083703e006200f102f419ce6c300ad4280808080e000841001220f2900002108200c200f41086a290000370300200320083703b809200f102f200b20032903b809220837030020142002290300370300201520083703002016200c290300370300200320032903e00637038804200341106a20034188046a4120109501200341d0036a420037030020034198036a412c6a418886c70036020020034198036a41286a41c8e1ca00360200200341b4036a4190bdc600360200200341f0036a2012290300370300200341f8036a201129030037030020034180046a201029030037030020034198036a41206a42003703002003428080808080013703c803200342003703a003200320032903b80a3703e8034100212f200341003602b0032003280210210c2003280214210f200320034194036a3602e003200320034190036a3602dc032003200341d8016a3602d8032003200f4100200c1b3602e40320032006420020171b370398032003200d360290042003200436028c042003200e36028804200341e0066a20034198036a20092007200341b8016a200341f8006a20034188046a109e02410121300240024020032802e0064101470d0020032f00e50620032d00e70641107472210d200b28020022314108762133200341f4066a280200212e200341ec066a280200212d2002280200212b20032d00e406211b4101212f410121300c010b20034190076a2802002231410876213320032f00850720034187076a2d000041107472210d200341e0066a412c6a280200212d200341e0066a41286a280200212b20034184076a2d0000211b0240203141ff0171450d000c010b200341e0066a41086a200341b8036a29030037030020034188046a41086a200341ec066a280200360200200320032903b0033703e006200320032902e40637038804200341c80d6a20034188046a1087024100212f41002131410021300b20034198016a20032903b80120032903c00120032903c801200341b8016a41186a2903002005200a10880220032802cc03222c20032802d403220241d8026c6a210b20032802d0032132202c21042002450d04200341810b6a210f200341a1076a210c200341b80a6a410172211c200341b8096a41076a211d200341c10a6a2110200341b8096a4102722111200341e0066a41106a211e20034188076a211a200341c4076a211620034181076a2112200341e0066a4101722115202c2102034020022d0000210420034188046a200241016a41d70210e8061a0240024002400240024020044103460d00200320043a00e006201520034188046a41d70210e806210e024002400240024020040e03000102000b20032802e806211420032802ec06210e20032802e4062104201d201e41f80010e8061a2003410d3a00b80a201c200341b8096a41ff0010e8061a2004200e200341b80a6a108c014101210e41002113024020140d00410021140c030b2004102f410021140c020b200341980d6a41186a2204200e41186a2213290000370300200341980d6a41106a2214200e41106a2217290000370300200341980d6a41086a2218200e41086a22192900003703002003200e2900003703980d200341b80a6a201a41b00210e8061a2011200e290000370000201141086a2019290000370000201141106a2017290000370000201141186a201329000037000020034180023b01b809200341e80c6a200341b80a6a200341b8096a108b0120032d00e80c210e201020032903980d370000201041086a2018290300370000201041106a2014290300370000201041186a2004290300370000200341063a00c00a2003410d3a00b80a2003200e4104463a00e10a4100211341c8e1ca004100200341b80a6a108c01410121144100210e0c010b20032900e106210920032900e906210a20032900f106210520032900f9062108200329008107211f200329008907212020032900910721212003290099072122200341e80c6a41186a2204200c41186a2213290000370300200341e80c6a41106a2214200c41106a2217290000370300200341e80c6a41086a2218200c41086a22192900003703002003200c2900003703e80c200341e0066a41f8006a290300210620032903d0072107200341980d6a41186a200e41186a290000370300200341980d6a41106a200e41106a290000370300200341980d6a41086a200e41086a2900003703002003200e2900003703980d200341b8096a41186a201241186a290000370300200341b8096a41106a201241106a290000370300200341b8096a41086a201241086a290000370300200320122900003703b809200341b80a6a41186a2013290000370300200341b80a6a41106a2017290000370300200341b80a6a41086a20192900003703002003200c2900003703b80a200341b80d6a41086a201641086a280200360200200320162902003703b80d200341880d6a200341980d6a200341b8096a200341b80a6a20072006200341b80d6a10890220032d00880d210e200f41186a2004290300370000200f41106a2014290300370000200f41086a2018290300370000200f20032903e80c370000200320223700f90a200320213700f10a200320203700e90a2003201f3700e10a200320083700d90a200320053700d10a2003200a3700c90a200320093700c10a200341033a00c00a2003410d3a00b80a200341b80a6a41f8006a2006370300200320073703a80b2003200e4104463a00a10b41c8e1ca004100200341b80a6a108c0141012113410121144101210e0b20032d00e006220441014b0d0120040e020302030b200241d8026a21040c090b201320032802c80745720d0220032802c407102f0c020b200e450d01201a108e010c010b2014450d00024020032802e806450d0020032802e406102f0b20032d00f0064107470d00200328029807450d00200328029407102f0b200241d8026a2202200b470d000c060b0b1038000b1036000b200141216a2d00002111200341e80c6a41186a200141196a290000370300200341e80c6a41106a200141116a290000370300200341e80c6a41086a200141096a290000370300200320012900013703e80c200341980d6a41186a22042001413a6a290000370300200341980d6a41106a220e200141326a290000370300200341980d6a41086a220b2001412a6a2900003703002003200141226a2900003703980d2002411a6a2901002106200241196a2d0000210c200241186a2d0000210f200241166a2f010021100240024020022d0000450d002003200637029c012003200c3a009b012003200f3a009a01200320103b019801200341d8016a41186a2004290300370300200341d8016a41106a200e290300370300200341d8016a41086a200b290300370300200320032903980d3703d8010c010b200241156a2d00002112200241146a2d00002113200241126a2f01002114200241116a2d00002115200241106a2d000021162002410e6a2f010021172002410d6a2d000021182002410c6a2d000021192002410a6a2f0100211a200241096a2d0000211b200241086a2d0000211c200241066a2f0100211d200241056a2d0000211e200241046a2d0000210d200241026a2f0100212b20022d000121022003200637039801200341d8016a41186a2004290300370300200341d8016a41106a200e290300370300200341d8016a41086a200b290300370300200320032903980d3703d8010240024020114101710d0041022104200241ff01714101470d020c010b200241ff01714102470d014100210420032903f001210620032f01ec01211020032f01e801211420032f01e401211720032f01e001211a20032f01dc01211d20032f01d801212b20032d00ef01210c20032d00ee01210f20032d00eb01211220032d00ea01211320032d00e701211520032d00e601211620032d00e301211820032d00e201211920032d00df01211b20032d00de01211c20032d00db01211e20032d00da01210d0b200320063703b0032003200c3a00af032003200f3a00ae03200320103b01ac03200320123a00ab03200320133a00aa03200320143b01a803200320153a00a703200320163a00a603200320173b01a403200320183a00a303200320193a00a2032003201a3b01a0032003201b3a009f032003201c3a009e032003201d3b019c032003201e3a009b032003200d3a009a032003202b3b01980320034188046a200341e80c6a10e8010240024020032d008804417f6a41ff01714102490d00200341d8016a41086a200341bc046a290200370300200341d8016a41106a200341c4046a290200370300200341d8016a41186a200341cc046a290200370300200341d8016a41206a200341d4046a290200370300200341d8016a41286a200341dc046a2802003602002003200341b4046a2902003703d80120034188046a41106a290300210720034188046a41086a290300210a200341ac046a280200211120034188046a41206a2802002113200341a4046a280200210c20034188046a41186a280200211220034188046a41286a280200210b200341e0066a41186a4200370300200341e0066a41106a220f4200370300200341e0066a41086a22024200370300200342003703e006418de6c300ad4280808080e000841001220e29000021062002200e41086a290000370300200320063703e006200e102f419ce6c300ad4280808080e000841001220e2900002106200341b8096a41086a2210200e41086a290000370300200320063703b809200e102f200f20032903b8092206370300200341b80a6a41086a2002290300370300200341b80a6a41106a2006370300200341b80a6a41186a2010290300370300200320032903e0063703b80a200341f0006a200341b80a6a4120109501024002400240410041002003280274410020032802701b220e20046b22042004200e4b1b2204200b6b220f200f20044b1b2204450d00200341e0066a200341e80c6a108d02200341e0006a20032903e006220920022903002205428080a8ec85afd1b101420010ee0642002011ad2206200329036022087d221f201f2006564200200341e0006a41086a2903002006200854ad7c7d22064200522006501b22021b22084200200620021b220684500d004201211f2009428080d287e2bc2d5441002005501b0d02200341d0006a2004ad42002008200610ed06200341c0006a2003290350200341d0006a41086a290300428080e983b1de16420010ed06024002402009428080aef89dc3527c2206200a200a200656200720052006200954ad7c427f7c22065620072006511b22021b22082003290340221f2008201f542006200720021b2208200341c0006a41086a290300221f542008201f511b22021b22062008201f20021b220884500d00200341e0066a200341e80c6a108d0220032903800722204200200920067d221f201f200956200520087d2009200654ad7d220920055620092005511b22041b22215820034188076a29030022054200200920041b220958200520095122041bad211f2020202156200520095620041b0d032002450d010c030b4201211f20020d020b200320063703b801200320083703c0010b200c450d022012102f0c020b200341c8016a2008370300200320063703c0012003201f3703b8014202211f0b200341b80a6a41186a2013360200200341cc0a6a200c360200200341e40a6a200341d8016a41086a290300370200200341ec0a6a200341d8016a41106a290300370200200341f40a6a200341d8016a41186a290300370200200341fc0a6a200341f8016a290300370200200341840b6a20034180026a280200360200200320073703c00a2003200a3703b80a2003200b3602d80a200320113602d40a200320123602c80a200320032903d8013702dc0a200341b8096a41106a200341b8016a41086a290300370300200341b8096a41186a200341b8016a41106a2903003703002003201f3703b809200320032903b8013703c009200341e0066a200341e80c6a200341b80a6a200e200341b8096a109f02024020032d00e0060d00200341fc066a280200450d00200341f8066a280200102f0b200342003703c00a200342808086bdbacdd21a3703b80a200320034198036a3602d80120034188046a20034198036a200341b80a6a200341d8016a10a002410121042003280288044101460d01200341b0046a290300210720034188046a41206a2903002109024020034188046a41086a220c2903004201520d0020034188046a41106a290300210620034198076a20034188046a41186a29030037030020034190076a2006370300200341e0066a41086a41003a0000200341e9066a200329039803370000200341f1066a20034198036a41086a290300370000200341f9066a20034198036a41106a29030037000020034181076a20034198036a41186a290300370000200341033a00e00641c8e1ca004100200341e0066a108c010b200341e0066a41186a22104200370300200341e0066a41106a22044200370300200341e0066a41086a22024200370300200342003703e00641e7a2ca00ad428080808080018422061001220b290000210a200341b80a6a41086a220e200b41086a2900003703002003200a3703b80a200b102f2002200e290300370300200320032903b80a3703e00641ecb5c600ad4280808080d00184220a1001220f2900002105200341b8096a41086a220b200f41086a290000370300200320053703b809200f102f200420032903b8092205370300200c200229030037030020034188046a41106a2211200537030020034188046a41186a2212200b290300370300200320032903e00637038804200341286a20034188046a4120109c01200341286a41106a2903002105200329033021082003280228210f201042003703002004420037030020024200370300200342003703e0062006100122102900002106200e201041086a290000370300200320063703b80a2010102f2002200e290300370300200320032903b80a3703e006200a1001220e2900002106200b200e41086a290000370300200320063703b809200e102f200420032903b8092206370300200c2002290300370300201120063703002012200b290300370300200320032903e006370388042003427f20054200200f1b220620077c20084200200f1b220720097c22092007542202ad7c22072002200720065420072006511b22021b3703e8062003427f200920021b3703e00620034188046aad4280808080800484200341e0066aad428080808080028410040b200041043a00000c0a0b200328028c042102200041046a20034190046a29030037020020002002360200410121000c0a0b20004183243b0100200041086a4115360200200041046a41efcdc10036020041012104200041026a41013a0000410121000c090b200041023a00002004450d04200e102f0c040b200b2004460d0003402004220241d8026a21040240024020022d0000220e41014b0d0002400240200e0e020001000b0240200241086a280200450d00200241046a280200102f0b200241106a2d00004107470d02200241386a280200450d02200241346a280200102f0c020b200241286a108d010c010b200241e8006a280200450d00200241e4006a280200102f0b200b2004470d000b0b02402032450d00202c102f0b024020032802a4032202450d00200341a8036a280200450d002002102f0b02402030450d0020034198036a411c6a280200210220032802bc03210c0240024020032802b803220e0d00200221040c010b200e210b20022104034020042802880b2104200b417f6a220b0d000b0340200220022f01064102746a41880b6a2802002102200e417f6a220e0d000b0b200341e0066a411c6a20022f0106360200200341f8066a4100360200200341f4066a20023602002003200c36028007200341003602f006200342003703e806200320043602e406200341003602e006200341e0066a108a020b0240202f450d002033410874203141ff01717221020c010b202b450d01200d410874201b41ff017172102f0c010b201b41ff01714104460d002000200d3b00012000201b3a0000200041036a200d4110763a0000200041086a202d360200200041046a202b360200202e450d012002102f0c010b200041043a00000b41002100410121040c030b200e102f0b41012100410021040c010b41012104410121000b4101210e0b024020012d0000417e6a220241024b0d00024002400240024020020e03000102000b200e450d03200141086a280200450d03200141046a280200102f0c030b20040d010c020b2000450d01200141286a280200450d01200141246a280200102f0c010b2001412c6a280200450d00200141286a280200102f0b200341d00d6a24000b8f0201057f230041106b22032400024002400240200141046a2204417f4c0d000240024020040d00410121050c010b2004102d2205450d020b2003410036020820032004360204200320053602002001200310690240024020032802042206200328020822056b2001490d00200328020021040c010b200520016a22042005490d03200641017422072004200720044b1b22074100480d030240024020060d002007102d21040c010b200328020020062007103121040b2004450d022003200736020420032004360200200721060b200420056a2000200110e8061a2002290200200520016aad4220862004ad84100402402006450d002004102f0b200341106a24000f0b103d000b1036000b1038000bde2e05027f027e097f037e027f230041f00d6b2207240002400240024002400240024002400240024002402001280230200128024022082802b001460d002004420020042903082209200841c0006a2903007d220a200a20095622081b37030820080d02200741106a41186a200141e8006a290000370300200741106a41106a200141e0006a290000370300200741106a41086a200141d8006a29000037030020072001290050370310200741900b6a41186a20063502084220862006350200841003220841186a290000370300200741900b6a41106a200841106a290000370300200741900b6a41086a200841086a290000370300200720082900003703900b2008102f4120102d22080d010c090b200041003a0004200041013602002000410c6a4129360200200041086a41f594c700360200200041106a2006290200370200200041186a200641086a2802003602000c070b20082005290000370000200841186a200541186a290000370000200841106a200541106a290000370000200841086a200541086a2900003700002008412041c00010312208450d07200820072903900b370020200841386a200741900b6a41186a290300370000200841306a200741900b6a41106a290300370000200841286a200741900b6a41086a290300370000200841c00041800110312208450d0720082007290310370040200841d8006a200741106a41186a290300370000200841d0006a200741106a41106a290300370000200841c8006a200741106a41086a290300370000200741f0026a41186a220b2008ad4280808080800c841003220c41186a290000370300200741f0026a41106a220d200c41106a290000370300200741f0026a41086a220e200c41086a2900003703002007200c2900003703f002200c102f200741306a41186a220c200b290300370300200741306a41106a220b200d290300370300200741306a41086a220d200e290300370300200720072903f0023703302008102f200741f0006a41d8006a200d290300370300200741d0016a200b290300370300200741d8016a200c2903003703004100210e200741ac016a41003602002007419c016a41ec91c70036020020074190016a42003703002007418c016a220f4190bdc60036020020072001360278200741f0006a41286a200141186a2210360200200720072903303703c001200742083702a40120074100360288012007410036027c200720012802483602b801200720012903403703b0012007200128023041016a3602a001200129030021092007200128024c3602bc0120072009370370200741f4016a41026a2208200641036a2d00003a0000200720062f00013b01f40120062d0000211120062902042109200741a8026a41186a200541186a290000370300200741a8026a41106a200541106a290000370300200741a8026a41086a200541086a290000370300200720052900003703a80220074101360288012010200741306a10a70521062007200728028801417f6a220c36028801024020060d00200c0d032007417f36028801200741f8016a41186a200741306a41186a290300370300200741f8016a41106a200741306a41106a290300370300200741f8016a41086a200741306a41086a290300370300200720072903303703f80102400240200728028c01220e4190bdc600460d0020072802900121120c010b41002112200741900b6a410041e00210e7061a200741f0026a410041a00810e7061a41880b102d220e450d09200e41003b0106200e4100360200200e41086a200741900b6a41e00210e8061a200e41e8026a200741f0026a41a00810e8061a20074100360290012007200e36028c010b0240034002400240200e2f010622130d004100210b0c010b20134105742106200e41e8026a210c200e41086a2108417f210b0340024020060d002013210b0c020b200741f8016a2008412010ea06220d450d03200641606a2106200c41e0006a210c200b41016a210b200841206a2108200d417f4a0d000b0b02402012450d002012417f6a2112200e200b4102746a41880b6a280200210e0c010b0b200741d0026a41186a200741f8016a41186a290300220a370300200741d0026a41106a200741f8016a41106a2903002214370300200741d0026a41086a200741f8016a41086a2903002215370300200720072903f80122163703d002200741ac0b6a2015370200200741900b6a41246a2014370200200741bc0b6a200a3702002007200741f0006a41246a3602a00b2007200b36029c0b2007200f3602980b2007200e3602940b200741003602900b200720163702a40b200741a4036a4200370200200741003a00ac03200742003703f002200741003a00cd0320074190bdc6003602a0032007420037038803200741900b6a200741f0026a109702210c0b200741c0026a290300210a200c4201370318200c41013a003c200c41286a427f370300200c41206a427f370300200c413d6a20072903a802370000200c41c5006a200741a8026a41086a290300370000200c41cd006a200741b8026a290300370000200c41d5006a200a370000200720072802880141016a36028801200741f0026a20044101200741106a200741306a20022003200741f0006a10a305024020072d00f002220e4104460d00200741f0016a41026a20072d00f3023a0000200741ec016a41026a200741f4016a41026a2d00003a0000200720072f00f1023b01f001200720072f01f4013b01ec012009422088a72105200741f0026a41086a280200210120072802f40221122009a721040c070b200741f0026a200520072802b801280200109202024020072802f0024101470d00200741ec016a41026a200741f4016a41026a2d00003a0000200720072f01f4013b01ec012009422088a72105200741f8026a280200210120072802f40221122009a721044100210e0c070b200741900b6a41186a200741f0026a410472220641186a2802002208360200200741f8016a41106a200641086a290200370300200741f8016a41186a200641106a29020037030020074198026a2008360200200741063602fc01200741ff8bca003602f801200720062902003703800220072802b40121062007200741f0006a360288032007290370210a20072802bc01210820074198036a200741106a41086a290300370300200741a0036a200741106a41106a290300370300200741a8036a200741106a41186a290300370300200720033703f802200720023703f0022007200836028c032007200a370380032007200729031037039003200720113a00d002200720093702d402200720072f01f4013b00d1022007200741f4016a41026a2d00003a00d302200741900b6a2006200741f8016a200741f0026a200741d0026a200410bf01200741900b6a410572210620072d00940b2111024020072802900b4101470d00200741f0016a41026a200641026a2d00003a0000200741ec016a41026a200741a30b6a2d00003a0000200720072f00a10b3b01ec01200720062f00003b01f001200741a40b6a2902002202422088a72105200741900b6a41086a28020021122007419c0b6a28020021012002a721042011210e200741900b6a41106a2d000021110c060b200741a4026a41026a200641026a2d00003a0000200741a0026a41026a200741a30b6a2d00003a0000200720072f00a10b3b01a002200720062f00003b01a40220072802880141016a221741004c0d02200741900b6a41086a28020021042007419c0b6a2802002105200741900b6a41106a2d0000211820072017360288012007280290012112024002400240034002400240200f280200220e2f010622130d004100210c0c010b20134105742106200e41c5036a210b200e41086a2108417f210c0340024020060d002013210c0c020b200741306a2008412010ea06220d450d03200641606a2106200b41e0006a210b200c41016a210c200841206a2108200d417f4a0d000b0b2012450d022012417f6a2112200e200c4102746a41880b6a210f0c000b0b200b310000200b41a37f6a290300220220025022061ba7450d004200200b41ab7f6a220841086a29030020061b21024200200829030020061b21030c010b2007200728029801200741306a200728029c0128021c110300200741086a29030021022007290300210320072802880121170b20072017417f6a36028801200320072802b00122062903800154200220064188016a29030022035420022003511b450d04200741ec016a41026a200741a4026a41026a2d00003a0000200720072f01a4023b01ec01411e210141c895c70021124100210e0c050b200741ec016a41026a20082d00003a0000200720072f01f4013b01ec012009422088a721052009a72104412a2101419e95c70021120c050b200041003a0004200041013602002000410c6a412a360200200041086a41e695c700360200200041106a2006290200370200200041186a200641086a2802003602000c050b41c6c4ca004118200741f0026a41cc90c70041f0c4ca00103e000b41c3c5ca004110200741f0026a41dc90c70041e4c5ca00103e000b200741d0026a41086a2208200741106a41086a290300370300200741d0026a41106a220c200741106a41106a290300370300200741d0026a41186a220b200741106a41186a290300370300200741a8026a41086a220d200741306a41086a290300370300200741a8026a41106a220e200741306a41106a290300370300200741a8026a41186a2212200741306a41186a290300370300200720072903103703d002200720072903303703a8020240024020072802ac01220620072802a801470d00200641016a22132006490d012006410174220f2013200f20134b1bad42d8027e2202422088a70d012002a722134100480d010240024020060d002013102d21060c010b20072802a401200641d8026c2013103121060b2006450d05200720063602a4012007201341d8026e3602a80120072802ac0121060b20072802a401200641d8026c6a220641003a0000200620072f00cd023b0001200641013a00102006410036000c20064201370004200620072903d002370011200620072903a802370031200641036a200741cd026a41026a2d00003a0000200641196a2008290300370000200641216a200c290300370000200641296a200b290300370000200641396a200d290300370000200641c1006a200e290300370000200641c9006a201229030037000020064180016a200741bf0b6a290000370000200641f9006a200741b80b6a290000370000200641f1006a200741b00b6a290000370000200641e9006a200741900b6a41186a290000370000200641e1006a200741900b6a41106a290000370000200641d9006a200741900b6a41086a290000370000200620072900900b37005120064188016a200741f0026a41d00110e8061a200741f0016a41026a2206200741a4026a41026a2d00003a0000200741ec016a41026a220c200741a0026a41026a2d00003a0000200720072802ac0141016a22083602ac01200720072f01a4023b01f001200720072f01a0023b01ec010240200741f8016a41186a280200450d002007418c026a280200102f20072802ac0121080b200741ec006a41026a20062d00003a0000200741e8006a41026a200c2d00003a0000200720072f01f0013b016c200720072f01ec013b016820072802a801211220072802a401210e2007280294012113200728029001210b200728028c0121060240200728027c220c450d0020074180016a280200450d00200c102f0b200741900b6a41026a220c200741ec006a41026a2d00003a0000200741f0006a41026a220d200741e8006a41026a2d00003a0000200720072f016c3b01900b200720072f01683b017002400240201841ff01710d00200720133602f8022007200b3602f402200720063602f0022010200741f0026a10a40502400240200141386a280200220b2001413c6a28020022066b200841d8026c220d41d8026d220c490d00200128023421080c010b2006200c6a22082006490d03200b41017422062008200620084b1bad42d8027e2202422088a70d032002a722064100480d0302400240200b0d002006102d21080c010b2001280234200b41d8026c2006103121080b2008450d0720012008360234200141386a200641d8026e3602002001413c6a28020021060b2008200641d8026c6a200e200d10e8061a2001413c6a22062006280200200c6a36020002402012450d00200e102f0b200741e4006a41026a200741900b6a41026a2d00003a0000200741e0006a41026a200741f0006a41026a2d00003a0000200720072f01900b3b0164200720072f01703b01600c010b200741e4006a41026a200c2d00003a0000200741e0006a41026a200d2d00003a0000200720072f01900b3b0164200720072f01703b016002402008450d00200841d8026c210141002108034002400240200e20086a220c2d0000220d41014b0d0002400240200d0e020001000b0240200c41086a280200450d00200c41046a280200102f0b200c41106a2d00004107470d02200c41386a280200450d02200c41346a280200102f0c020b200c41286a108d010c010b200c41e8006a280200450d00200c41e4006a280200102f0b2001200841d8026a2208470d000b0b02402012450d00200e102f0b02400240200b0d00200621080c010b200b210c20062108034020082802880b2108200c417f6a220c0d000b0340200620062f01064102746a41880b6a2802002106200b417f6a220b0d000b0b2007418c036a20062f010636020020074188036a410036020020074184036a200636020020072013360290032007410036028003200742003703f802200720083602f402200741003602f002200741f0026a108a020b200741d4006a41026a2206200741e4006a41026a2d00003a0000200741d0006a41026a2208200741e0006a41026a2d00003a0000200720072f0164220c3b015c200720072f0160220b3b01582007200c3b01542007200b3b0150200041246a20113a00002000411c6a200741c8006a290300370000200041146a200741c0006a2903003700002000410c6a200741386a29030037000020002007290330370004200041306a20183a00002000412c6a2005360200200041286a2004360200200020072f01543b0025200041276a20062d00003a0000200020072f01503b0031200041336a20082d00003a0000200041003602000c030b1038000b20074190026a280200450d002007418c026a280200102f0b200741e4006a41026a200741f0016a41026a2d00003a0000200741e0006a41026a200741ec016a41026a2d00003a0000200720072f01f0013b0164200720072f01ec013b01600240200728027c2206450d0020074180016a280200450d002006102f0b2005ad2102200728029401210d200728028c0121060240024020072802900122080d002006210c0c010b2008210b2006210c0340200c2802880b210c200b417f6a220b0d000b0340200620062f01064102746a41880b6a28020021062008417f6a22080d000b0b200242208621022004ad21032007418c036a20062f01063602004100210820074188036a410036020020074184036a20063602002007200d360290032007410036028003200742003703f8022007200c3602f402200741003602f002200741f0026a108a02024020072802ac012206450d0020072802a401210b200641d8026c210d034002400240200b20086a22062d0000220c41014b0d0002400240200c0e020001000b0240200641086a280200450d00200641046a280200102f0b200641106a2d00004107470d02200641386a280200450d02200641346a280200102f0c020b200641286a108d010c010b200641e8006a280200450d00200641e4006a280200102f0b200d200841d8026a2208470d000b0b20022003842102024020072802a801450d0020072802a401102f0b200741dc006a41026a200741e4006a41026a2d000022063a0000200741d8006a41026a2208200741e0006a41026a2d00003a0000200720072f0164220c3b015c200720072f01603b01582000200e3a00042000200c3b0005200041076a20063a0000200041106a20113a00002000410c6a2001360200200041086a2012360200200041146a200237020020004101360200200020072f01583b0011200041136a20082d00003a00000b200741f00d6a24000f0b1036000be50f03017f037e087f230041b0026b22052400024002400240024002400240024002400240024020042802000e0401020300010b200441106a290300210620042903082107200541286a2003360200200541186a20022903103703002005412c6a2002290224370200200541206a200241186a290300370300200541346a200229022c3702002005413c6a200241346a290200370200200541c4006a2002413c6a290200370200200541cc006a200241c4006a290200370200200541106a200241086a29030020067d20022903002208200754ad7d37030041002102200541003a00002005200820077d3703082001200510e901200541003a00af01200541083a007720052006370368200520073703602005200136025c02400240200720068450450d0042002107420021060c010b200520013602a8012005200541a8016a3602c0012005200541f7006a3602bc012005200541dc006a3602b8012005200541af016a3602b4012005200541e0006a3602b001200541f8006a2001200541b0016a10a50441012102024020052802784101470d004200210620052903800121070c010b200541a0016a290300210620054198016a2903002107410021022005290380014201520d00200541f8006a41106a290300210820052802a8012101200541e8016a200541f8006a41186a290300370300200541e0016a200837030041002102200541b0016a41086a41003a0000200541b9016a2001290000370000200541c1016a200141086a290000370000200541c9016a200141106a290000370000200541d1016a200141186a290000370000200541033a00b00141c8e1ca004100200541b0016a108c010b024020020d0020072006109a010b2000200541d80010e8061a0c080b200541b7016a200241d00010e8061a200041003a0000200041016a200541b0016a41d70010e8061a0c070b200110ec01200241186a280200220341164d0d022003ad42208620022802102204ad84200341696aad422086200441176aad844101101d200541b0016a41086a41023a0000200541d9016a41003a0000200541b9016a2001290000370000200541c1016a200141086a290000370000200541c9016a200141106a290000370000200541d1016a200141186a2900003700002005410d3a00b00141c8e1ca004100200541b0016a108c01200041023a00000c010b024020042903084201520d00200441106a2903002107200441186a290300210641002104200541003a005c200541083a00af01200520063703800120052007370378200520013602a80102400240200720068450450d0042002107420021060c010b200520013602602005200541e0006a3602c0012005200541af016a3602bc012005200541a8016a3602b8012005200541dc006a3602b4012005200541f8006a3602b00120052001200541b0016a10a50441012104024020052802004101470d0042002106200529030821070c010b200541286a2903002106200541206a29030021074100210420052903084201520d00200541106a290300210820052802602103200541e8016a200541186a290300370300200541e0016a200837030041002104200541b0016a41086a41003a0000200541b9016a2003290000370000200541c1016a200341086a290000370000200541c9016a200341106a290000370000200541d1016a200341186a290000370000200541033a00b00141c8e1ca004100200541b0016a108c010b20040d0020072006109a010b02400240200241186a2802002209ad42208620022802102204ad842207100e2206422088a7220a0d004101210b0c010b2006a7210b0b200541b0016a41186a200241c4006a290000370300200541c0016a2002413c6a290000370300200541b8016a200241346a2900003703002005200229002c3703b0012005410036020820054201370300200b200a2005108c02024002402005280204220c2005280208220d6b4120490d00200d41206a21032005280200210e0c010b200d41206a2203200d490d04200c410174220e2003200e20034b1b220f4100480d0402400240200c0d00200f102d210e0c010b2005280200200c200f1031210e0b200e450d032005200f3602042005200e360200200f210c0b20052003360208200e200d6a220d20052903b001370000200d41086a200541b0016a41086a290300370000200d41106a200541b0016a41106a290300370000200d41186a200541b0016a41186a290300370000200541f8006a41186a220d2003ad422086200ead841003220341186a290000370300200541f8006a41106a220f200341106a290000370300200541f8006a41086a2210200341086a290000370300200520032900003703782003102f0240200c450d00200e102f0b200541196a200d290300370000200541116a200f290300370000200541096a201029030037000020052005290378370001200541013a00002001200510e901200941164d0d042007200941696aad422086200441176aad844101101d200541b0016a41086a41023a0000200541d9016a41013a0000200541b0016a41096a2001290000370000200541b0016a41116a200141086a290000370000200541b0016a41196a200141106a290000370000200541d1016a200141186a2900003700002005410d3a00b00141c8e1ca004100200541b0016a108c012000200541d80010e8061a200a450d00200b102f0b200241146a280200450d042004102f0c040b41172003104b000b1036000b1038000b41172009104b000b200541b0026a24000bd70d08027f017e017f027e027f057e027f067e230041f0026b2204240020032802002105418de6c300ad4280808080e00084100122032900002106200441386a41086a200341086a290000370300200420063703382003102f41f0e8c600ad4280808080f00084100122032900002106200441f0006a41086a200341086a290000370300200420063703702003102f0240024002404120102d2203450d0020032001290000370000200341186a200141186a290000370000200341106a200141106a290000370000200341086a200141086a2900003700002003ad4280808080800484100322072900002106200741086a2900002108200741106a2900002109200441f0016a41186a220a200741186a290000370300200441f0016a41106a220b2009370300200441f0016a41086a2008370300200420063703f0012007102f2003102f41c000102d2203450d002003200429033837000020032004290370370010200320042903f001370020200341086a200441386a41086a290300370000200341186a200441f0006a41086a290300370000200341286a200441f0016a41086a290300370000200341306a200b290300370000200341386a200a290300370000200441f0006a200310f6022004290370210c4200210920044200370370200441b8016a280200210a20042d00bc01210b02400240200c4201510d00200441306a4200370300200441286a4200370300200441206a4200370300200441186a4200370300200441106a4200370300200441086a4200370300200442003703004200210d42002108420021064200210e0c010b200441f0006a41386a290300210f200441f0006a41306a2903002110200441f0006a41206a290300210d200441f0006a41186a2903002109200441f0006a41c0006a290300210e200429038001210620042903782108200441206a200441f0006a41286a290300370300200441286a2010370300200441306a200f370300200441106a20093703002004200d37031820042008370300200420063703080b0240427f200820097c2209200920085422072006200d7c2007ad7c220920065420092006511b22071b427f200920071b8450450d0041dbb4c600ad4280808080b00184210641838c1c21010c020b024020082002290300220d7c220920085422072006200241086a290300220f7c2007ad7c220820065420082006511b450d004191ccc700ad4280808080800184210641838c0821010c020b2004200937030020042008370308200441386a41186a200441106a220741086a2903002206370300200441386a41206a2202200741106a290300370300200441e0006a2211200741186a290300370300200441e8006a2212200741206a290300370300200420083703402004200937033820042007290300221037034802400240427f200920107c221020102009542207200820067c2007ad7c220620085420062008511b22071b2210428080e983b1de16544100427f200620071b2206501b0d00200441386a41106a2903002106201229030021102011290300211320022903002114200429034021152004290338211642012117200429035021180c010b4200211702402010200684500d0020102006109a01200441a8026a2006370300200441a0026a2010370300200441f0016a41086a41013a0000200441f9016a200529000037000020044181026a200541086a29000037000020044189026a200541106a29000037000020044191026a200541186a290000370000200441033a00f00141c8e1ca004100200441f0016a108c010b0b20044198016a2014370300200441a0016a201337030020044180016a2015370300200441a8016a201037030020044188016a200637030020042018370390012004200e3703b00120042016370378410021072004200b4100200c42015122021b3a00bc012004200a410020021b3602b801200420174201512202ad3703700240024020020d002003ad42808080808008841005410121070c010b200441c0003602f401200420033602f001200441f8006a200441f0016a1090030b2003102f024002400240200c4201510d0020070d0041032107200441f0016a21030c010b200c4201522007410173720d0141042107200441f0006a21030b200341046a20073a0000200341003a0000200341056a20012900003700002003410d6a200141086a290000370000200341156a200141106a2900003700002003411d6a200141186a29000037000041c8e1ca0041002003108c010b200041286a200f370300200041206a200d370300200041186a2008370300200041106a2009370300200041086a4200370300410021030c020b1036000b2003102f200041086a200637020020002001360204410121030b20002003360200200441f0026a24000b130020004106360204200041dc8ec2003602000ba60303057f017e027f024020002802202201450d00034020002001417f6a360220200028020821022000280200210302400240200028020c2204200028020422052f01064f0d00200521010c010b034002400240024020054190bdc600460d00200528020022010d012002ad2106410021010c020b41edb3ca00412841f8b4ca001039000b200341016a210320053301044220862002ad8421060b2005102f2006a72102200121052006422088a7220420012f01064f0d000b0b200441016a2107200120044105746a220541fc026a2802002108200541f8026a280200210402402003450d00200120074102746a41c8056a2802002101410021072003417f6a2205450d00034020012802c80521012005417f6a22050d000b0b2000200736020c2000200236020820002001360204200041003602002004450d0102402008450d002004102f0b200028022022010d000b0b02400240200028020422054190bdc600460d00200528020021012005102f2001450d00034020014190bdc600460d02200128020021052001102f2005210120050d000b0b0f0b41edb3ca00412841f8b4ca001039000bc40201027f02402001450d00034020002802940321002001417f6a22010d000b0b02402002450d0041002103034002400240200320002f0106490d0041002104034002400240024020004190bdc600460d00200028020022010d0141002103410021010c020b41edb3ca00412841f8b4ca001039000b200441016a210420002f010421030b2000102f20012100200320012f01064f0d000b200341016a2103024020040d00200121000c020b200120034102746a4194036a2802002100410021032004417f6a2201450d01034020002802940321002001417f6a22010d000c020b0b200341016a21030b2002417f6a22020d000b0b0240024020004190bdc600460d00200028020021012000102f2001450d00034020014190bdc600460d02200128020021002001102f2000210120000d000b0b0f0b41edb3ca00412841f8b4ca001039000bfd0505047f017e017f017e0a7f230041e0016b22022400200241c0006a41186a22034200370300200241c0006a41106a22044200370300200241c0006a41086a2205420037030020024200370340419298ca00ad42808080809001842206100122072900002108200241e0006a41086a2209200741086a290000370300200220083703602007102f200520092903003703002002200229036037034041bfa8c200ad4280808080c001841001220729000021082009200741086a290000370300200220083703602007102f200420022903602208370300200241206a41086a220a2005290300370300200241206a41106a220b2008370300200241206a41186a220c200929030037030020022002290340370320200241e0006a200241206a10a502410321070240024020022d008001220d4103470d00200041086a410b360200200041046a41c193c2003602002000418a2a3b00010c010b200241206aad428080808080048422081005200241086a220e2009290300370300200241106a220f200241e0006a41106a2210290300370300200241186a2211200241e0006a41186a2212290300370300200220022903603703002003420037030020044200370300200542003703002002420037034020061001220729000021062009200741086a290000370300200220063703602007102f200520092903003703002002200229036037034041a898ca00ad4280808080d002841001220729000021062009200741086a290000370300200220063703602007102f20042002290360370000200441086a2009290300370000200a2005290300370300200b2004290300370300200c200329030037030020022002290340370320200241013a00602008200241e0006aad428080808010841004200941023a0000200241063a006041c8e1ca004100200241e0006a108c01201220112903003703002010200f2903003703002009200e29030037030020022002290300370360200141809c316a200241e0006a200d4180de3410a602410421070b200020073a0000200241e0016a24000bfe0301057f230041f0006b220224002002412036020c20022001360208200241106a2001ad4280808080800484100210730240024020022802102203450d00200241186a28020021042002280214210541002101200241003a0068024002400240034020042001460d01200241c8006a20016a200320016a2d00003a00002002200141016a22063a00682006210120064120470d000b200241286a41186a200241c8006a41186a290300370300200241286a41106a200241c8006a41106a290300370300200241286a41086a200241c8006a41086a2903003703002002200229034837032820042006460d01200320066a2d0000220141034f0d0120002002290328370000200041186a200241286a41186a290300370000200041106a200241286a41106a290300370000200041086a200241286a41086a2903003700000c020b200141ff0171450d00200241003a00680b20024100360230200242013703282002410b3602242002200241086a3602202002200241286a36026c200241dc006a41013602002002420137024c200241b885c7003602482002200241206a360258200241ec006a41d8dbc100200241c8006a103c1a200235023042208620023502288410080240200228022c450d002002280228102f0b410321010b200020013a00202005450d012003102f0c010b200041033a00200b200241f0006a24000b800a07047f017e017f017e027f017e057f230041d0016b22042400200441c8006a41186a22054200370300200441c8006a41106a22064200370300200441c8006a41086a2207420037030020044200370348419298ca00ad4280808080900184220810012209290000210a200441286a41086a220b200941086a2900003703002004200a3703282009102f2007200b29030037030020042004290328370348418398ca00ad4280808080f00184220a1001220c290000210d200441386a41086a2209200c41086a2900003703002004200d370338200c102f20062004290338220d370300200441086a41086a220c2007290300370300200441086a41106a220e200d370300200441086a41186a220f2009290300370300200420042903483703082004200441086a4120109501200428020421102004280200211120054200370300200642003703002007420037030020044200370348200810012212290000210d200b201241086a2900003703002004200d3703282012102f2007200b29030037030020042004290328370348200a10012212290000210a2009201241086a2900003703002004200a3703382012102f20062004290338220a370300200c2007290300370300200e200a370300200f20092903003703002004200429034837030820042010410020111b221241016a360248200441086aad4280808080800484200441c8006aad4280808080c000841004200f200141186a290000370300200e200141106a290000370300200c200141086a290000370300200420012900003703082008100122012900002108200b200141086a290000370300200420083703282001102f41ce97c200ad42808080808002841001220129000021082009200141086a290000370300200420083703382001102f200420123602cc01200441cc016aad4280808080c00084100322012900002108200141086a290000210a200141106a290000210d2005200141186a2900003703002006200d3703002007200a370300200420083703482001102f024041c000102d2201450d00200120042903283700002001200429033837001020012004290348370020200141086a200b290300370000200141186a2009290300370000200141286a2007290300370000200141306a2006290300370000200141386a20052903003700004104102d2207450d00200720003600004120102d2206450d0020062004290308370000200641186a2209200441086a41186a290300370000200641106a2205200441086a41106a290300370000200641086a220c200441086a41086a2903003700004124210b20074104412410312207450d00200720062900003700042007411c6a2009290000370000200741146a20052900003700002007410c6a200c2900003700002006102f02400240200241ff0171220641024d0d00412421060c010b024002400240024020060e03000102000b410021060c020b410121060c010b410221060b200420063a004841c800210b2007412441c80010312207450d01200720063a0024412521060b0240200b20066b41034b0d002007200b200b4101742209200641046a2205200920054b1b10312207450d010b200720066a20033600002001ad4280808080800884200641046aad4220862007ad8410042007102f2001102f200441d4006a2012360200200441d1006a20023a0000200441d0006a41033a0000200441063a004841c8e1ca004100200441c8006a108c01200441d0016a24000f0b1036000bb01f06057f017e017f017e137f097e230022022103200241e0036b4160712202240020024180016a41186a420037030020024180016a41106a2204420037030020024180016a41086a220542003703002002420037038001419298ca00ad4280808080900184100122062900002107200241a0036a41086a2208200641086a290000370300200220073703a0032006102f20052008290300370300200220022903a0033703800141aba8c200ad4280808080b00184100122062900002107200241d8006a41086a2208200641086a290000370300200220073703582006102f200420022903582207370300200241386a41086a2005290300370300200241386a41106a2007370300200241386a41186a2008290300370300200220022903800137033820024120360284022002200241386a3602800220024188026a200241386aad42808080808004842209100210730240024002400240024002400240200228028802220a0d004100210b0c010b200228028c02210c200220024188026a41086a28020036029c022002200a36029802200241306a20024198026a10e6010240024020022802300d002002280234220d200228029c02220e41c4006e22052005200d4b1b220fad42c4007e2207422088a70d042007a72205417f4c0d040240024020050d004104210b0c010b2005102d220b450d07200541c4006e210f0b02400240200d450d0041002110034002400240200e41044f0d00410121050c010b2002200e417c6a220836029c022002200228029802221141046a360298022011280000211241002105200241003a00a0010240024002400240034020082005460d0120024180016a20056a201120056a220641046a2d00003a00002002200641056a360298022002200541016a22063a00a0012006210520064120470d000b200241c0036a41086a221320024180016a41086a2214290300370300200241c0036a41106a221520024180016a41106a2216290300370300200241c0036a41186a221720024180016a41186a221829030037030020022002290380013703c0032002200820066b36029c0241002105200241003a00a001201120066a21192006200e6b41046a210e0340200e20056a450d0220024180016a20056a201920056a221141046a2d00003a00002002201141056a360298022002200541016a22113a00a0012008417f6a21082011210520114120470d000b200241d8006a41086a22052014290300370300200241d8006a41106a22112016290300370300200241d8006a41186a22192018290300370300200241a0036a41086a221a2013290300370300200241a0036a41106a221b2015290300370300200241a0036a41186a221c201729030037030020022002290380013703582002200820066b220e36029c02200220022903c0033703a0032018201c2903003703002016201b2903003703002014201a290300370300200220022903a00337038001201720192903003703002015201129030037030020132005290300370300200220022903583703c003410021052012211a0c040b2002410036029c02200541ff0171450d020c010b2002410036029c02200541ff0171450d010b200241003a00a0010b4100210e410121050b20024180036a41086a220820024180016a41086a29030037030020024180036a41106a221120024180016a41106a29030037030020024180036a41186a221920024180016a41186a290300370300200241e0026a41086a2212200241c0036a41086a290300370300200241e0026a41106a2213200241c0036a41106a290300370300200241e0026a41186a2214200241c0036a41186a290300370300200220022903800137038003200220022903c0033703e00220050d02201041016a2106200241c0026a41186a22152019290300370300200241c0026a41106a22192011290300370300200241c0026a41086a22112008290300370300200241a0026a41086a22082012290300370300200241a0026a41106a22122013290300370300200241a0026a41186a2213201429030037030020022002290380033703c002200220022903e0023703a0020240200f2010470d00201041017422052006200520064b1bad42c4007e2207422088a70d072007a722054100480d070240024020100d002005102d210b0c010b200b201041c4006c20051031210b0b200b450d0a200541c4006e210f0b200b201041c4006c6a2205201a360200200520022903c0023702042005410c6a2011290300370200200541146a20192903003702002005411c6a2015290300370200200520022903a0023702242005412c6a2008290300370200200541346a20122903003702002005413c6a2013290300370200200621102006200d470d000b0b200dad422086200fad842107200b450d010c020b0240200f450d00200b102f0b0b4100210b20024100360260200242013703582002410b3602c403200220024180026a3602c0032002200241d8006a3602a00320024194016a41013602002002420137028401200241b885c700360280012002200241c0036a36029001200241a0036a41d8dbc10020024180016a103c1a20023502604220862002350258841008200228025c450d002002280258102f0b200c450d00200a102f0b200b4104200b1b2112024020074200200b1b221d422088a7220b450d0020024180016a201228020010a8020240024020022802900122050d004200211e420021070c010b200241206a20022903800120024180016a41086a29030020024198016a350200420010ed06200241206a41086a29030021072002290320211e200228029401450d002005102f0b0240200b4101470d002002201e3703800141002111200241003602900120022007370388010c040b201241c4006a210e200b41c4006c41bc7f6a2119410021112012211041012106034020024180016a200e220828020010a8020240024020022802900122050d004200211f420021200c010b200241106a20022903800120024180016a41086a290300200235029801420010ed06200241106a41086a29030021202002290310211f200228029401450d002005102f0b200841c4006a210e20072020201e201f56200720205620072020511b22051b2107201e201f20051b211e2010200820051b21102011200620051b2111200641016a2106201941bc7f6a22190d000b2002201e370380012002201136029001200220073703880120100d030b20004183143b0100200041086a410b360200200041046a41c193c200360200200041026a41153a00000240201da7450d002012102f0b200324000f0b1038000b103d000b2011200b4f0d012012201141c4006c6a220541186a220829020021202012200b417f6a221141c4006c6a220641c0006a2802002110200641206a290200211e200641286a290200211f200641306a2902002121200641386a29020021222006290200212320062902082107200629021021242008200641186a290200370200200529021021252005202437021020052902082124200520073702082005290200210720052023370200200541386a2022370200200541306a2021370200200541286a201f370200200541206a2206280200210b2006201e370200200541c0006a20103602002002202537039001200220243703880120022007370380012002202037039801200241c0036a41186a200228029c01360200200241c0036a41106a200229029401370300200241c0036a41086a200229028c0137030020022002290284013703c00320024180016a41186a2208420037030020024180016a41106a2210420037030020024180016a41086a220542003703002002420037038001419298ca00ad4280808080900184100122062900002120200241a0036a41086a220e200641086a290000370300200220203703a0032006102f2005200e290300370300200220022903a0033703800141aba8c200ad4280808080b00184100122062900002120200241d8006a41086a220e200641086a290000370300200220203703582006102f20042002290358370000200441086a200e290300370000200241386a41086a2005290300370300200241386a41106a2010290300370300200241386a41186a2008290300370300200220022903800137033820024180016a2012201110850120092002350288014220862002280280012205ad8410040240200228028401450d002005102f0b2007a7210e0240201da7450d002012102f0b419298ca00ad4280808080900184100122052900002107200241a0036a41086a2206200541086a290000370300200220073703a0032005102f41b6a8c200ad4280808080900184100122052900002107200241d8006a41086a2208200541086a290000370300200220073703582005102f2002200e3602800320024180036aad4280808080c00084100322052900002107200541086a2900002120200541106a290000211e20024180016a41186a2211200541186a29000037030020024180016a41106a2210201e37030020024180016a41086a2219202037030020022007370380012005102f41c000102d2205450d00200520022903a003370000200520022903583700102005200229038001370020200541086a2006290300370000200541186a2008290300370000200541286a2019290300370000200541306a2010290300370000200541386a201129030037000020024180016a200510b60102402002280290012210450d002005ad428080808080088410050b20024188016a290300210720024198016a2802002119200229038001212020022802940121122005102f02402010450d0002402019410574450d002020200784500d0020024189016a210620194105742108200241b8016a2111201021050340200220203703a003200220073703a8032002200536028003200241d8006a2005200241a0036a20024180036a109601024020022903584201520d002002290360211e200541186a290000211f200541106a290000211d200541086a2900002109200529000021212011200241d8006a41106a29030037030020062021370000200641086a2009370000200641106a201d370000200641186a201f370000200241003a008801200241033a0080012002201e3703b00141c8e1ca00410020024180016a108c010b200541206a2105200841606a22080d000b0b200241a8016a2007370300200241a0016a202037030020024180016a41186a2205201936020020024194016a201236020020024180016a41106a220620103602002002418c016a200e36020020024180016a41086a220841013a0000200241063a00800141c8e1ca00410020024180016a108c012005200241c0036a41186a2802003602002006200241c0036a41106a2903003703002008200241c0036a41086a290300370300200220022903c003370380012002200b36029c01200141809c316a20024180016a41004180de3410a6020b200041043a0000200324000f0b1036000b419cc3ca002011200b103b000bf70305027f017e027f027e027f230041d0006b22022400419298ca00ad4280808080900184100122032900002104200241086a41086a2205200341086a290000370300200220043703082003102f41b6a8c200ad4280808080900184100122032900002104200241386a41086a2206200341086a290000370300200220043703382003102f2002200136024c200241cc006aad4280808080c00084100322032900002104200341086a2900002107200341106a2900002108200241186a41186a2209200341186a290000370300200241186a41106a220a2008370300200241186a41086a22012007370300200220043703182003102f024041c000102d2203450d00200320022903083700002003200229033837001020032002290318370020200341086a2005290300370000200341186a2006290300370000200341286a2001290300370000200341306a200a290300370000200341386a2009290300370000200241186a200310b601200620012903003703002005200241186a411c6a280200360200200220022903183703382002200229022c370308024020022802282205450d002000200229033837030020002002290308370214200041086a200241386a41086a2903003703002000411c6a200241086a41086a2802003602000b200020053602102003102f200241d0006a24000f0b1036000baf0305027f017e027f027e027f230041d0006b22022400419298ca00ad4280808080900184100122032900002104200241086a41086a2205200341086a290000370300200220043703082003102f41a2a8c200ad4280808080900184100122032900002104200241186a41086a2206200341086a290000370300200220043703182003102f2002200136024c200241cc006aad4280808080c00084100322032900002104200341086a2900002107200341106a2900002108200241286a41186a2201200341186a290000370300200241286a41106a22092008370300200241286a41086a220a2007370300200220043703282003102f024041c000102d2203450d00200320022903083700002003200229031837001020032002290328370020200341086a2005290300370000200341186a2006290300370000200341286a200a290300370000200341306a2009290300370000200341386a2001290300370000200241286a200341c00010aa020240024020022802282201450d002000200229022c370204200020013602000c010b20004100360208200042013702000b2003102f200241d0006a24000f0b1036000bbf0201017f230041e0006b220324002003200236020c20032001360208200341106a2002ad4220862001ad84100210730240024020032802102201450d00200328021421022003200341106a41086a28020036022420032001360220200341c8006a200341206a109803024002402003280248450d0020002003290348370200200041086a200341c8006a41086a2802003602000c010b20034100360230200342013703282003410b36023c2003200341086a3602382003200341286a360244200341dc006a41013602002003420137024c200341b885c7003602482003200341386a360258200341c4006a41d8dbc100200341c8006a103c1a200335023042208620033502288410080240200328022c450d002003280228102f0b200041003602000b2002450d012001102f0c010b200041003602000b200341e0006a24000bac0603027f037e037f230041f0006b22022400200241086a2001410c6a290200370300200241106a200141146a290200370300200241186a2001411c6a2902003703002002200129020437030020012802002103419298ca00ad4280808080900184100122012900002104200241206a41086a200141086a290000370300200220043703202001102f41de97c200ad4280808080e00084100122012900002104200241306a41086a200141086a290000370300200220043703302001102f02404104102d2201450d002001200336000020014104412410312201450d00200120022903003700042001411c6a200241186a290300370000200141146a200241106a2903003700002001410c6a200241086a2903003700002001ad4280808080c00484100322032900002104200341086a2900002105200341106a2900002106200241c0006a41186a2207200341186a290000370300200241c0006a41106a22082006370300200241c0006a41086a22092005370300200220043703402003102f2001102f41c000102d2201450d00200120022903203700002001200229033037001020012002290340370020200141086a200241206a41086a290300370000200141186a200241306a41086a290300370000200141286a2009290300370000200141306a2008290300370000200141386a2007290300370000200241c00036026420022001360260200241306a2001ad42808080808008841002107302400240200228023022030d0041002103410021070c010b2002280234210902400240200241386a280200450d0020032d0000220741ff0071220841064b0d00200741077621070c010b20024100360208200242013703002002410b3602242002200241e0006a3602202002200236026c200241d4006a410136020020024201370244200241b885c7003602402002200241206a360250200241ec006a41d8dbc100200241c0006a103c1a2002350208422086200235020084100802402002280204450d002002280200102f0b410221070b02402009450d002003102f0b4100200820074102461b2103200741017121070b2001102f200020033a0001200020073a0000200241f0006a24000f0b1036000ba40e08017f047e0c7f017e027f027e037f057e23004190046b2205240002400240024020040d00420021064200210742002108420021090c010b419298ca00ad42808080809001841001220a290000210620054190036a41086a220b200a41086a2900003703002005200637039003200a102f41f992c200ad42808080809002841001220a2900002106200541a0036a41086a220c200a41086a290000370300200520063703a003200a102f200541a8026a41086a220a200b290300370300200541a8026a41186a220b200c29030037030020052005290390033703a802200520052903a0033703b802200541e0016a200541a8026a108801200541a8026a20052802e001220c20052802e80110ad02024020052802e401450d00200c102f0b20054190016a41086a200a290300220637030020054190016a41106a200541a8026a41106a290300220737030020054190016a41186a200b290300220837030020054190016a41206a200541a8026a41206a220d2d0000220a3a0000200520052903a802220937039001200541b8016a41206a200a3a0000200541b8016a41186a2008370300200541b8016a41106a2007370300200541b8016a41086a2006370300200520093703b801200541e0016a200541b8016a10ae024200210842002109420021064200210720052d00a0024107460d002004417f6a210e200541a8026a41c0006a210f200541a8026a41186a211042002106420021074200210842002109034020102007370300200520063703b802200520083703a802200520093703b002200d200541e0016a41c10010e806210a02400240200f2002460d00200f2002412010ea060d010b200541b0036a41186a220c200a41186a2211290200370300200541b0036a41106a2212200a41106a2213290200370300200541b0036a41086a2214200a41086a22152902003703002005200a2902003703b003419298ca00ad428080808090018410012204290000211620054190036a41086a2217200441086a29000037030020052016370390032004102f41de97c200ad4280808080e00084100122042900002116200541a0036a41086a2218200441086a290000370300200520163703a0032004102f4104102d2204450d032004200136000020044104412410312204450d03200420052903b0033700042004411c6a200c290300370000200441146a20122903003700002004410c6a20142903003700002004ad4280808080c004841003220b2900002116200b41086a2900002119200b41106a290000211a200541d0036a41186a221b200b41186a290000370300200541d0036a41106a221c201a370300200541d0036a41086a221d2019370300200520163703d003200b102f2004102f41c000102d2204450d032004200529039003370000200420052903a003370010200420052903d003370020200441086a2017290300370000200441186a2018290300370000200441286a201d290300370000200441306a201c290300370000200441386a201b29030037000020054188016a200441c00041c8e1ca004100410010b501200528028801210b2004102f200b4101460d0020052d0088032104200c201129000037030020122013290000370300201420152900003703002005200a2900003703b003200541d0036a200541b0036a108d02427f201d2903002216201b2903007c20052903d003221920052903e0037c221a201954220aad7c2219200a201920165420192016511b220a1b2119427f201a200a1b211602400240200420032004200341ff0171491b220441ff0171450d00200541c8006a201942002004ad42ff0183221a420010ed06200541d8006a20164200201a420010ed06201b200c290300370300201c2012290300370300201d2014290300370300200520052903b0033703d003200541e8006a2001200541d0036a2004200e10ac02200541386a420042002016420010ed06427f200541d8006a41086a290300221a200529034820052903387c7c221e2005290350200529034084420052201e201a547222041b211e427f200529035820041b211a200541e8006a41186a290300211f200541e8006a41086a290300212020052903782121200529036821220c010b200541086a20162019420a420010ee06201b200c290300370300201c2012290300370300201d2014290300370300200520052903b0033703d003200541186a2001200541d0036a4100200e10ac02200541186a41186a290300211f200541186a41086a290300212020052903282121200529031821222005290308221a2116200541086a41086a290300221e21190b201920077c201620067c2207201654ad7c201f7c200720217c2206200754ad7c2107201e20097c201a20087c2209201a54ad7c20207c200920227c2208200954ad7c21090b200541e0016a200541b8016a10ae0220052d00a0024107470d000b0b2000200637031020002008370300200041186a20073703002000200937030820054190046a24000f0b1036000bd50302047f047e230041f0006b220324002003200236020c20032001360208200341106a2002ad4220862001ad84100210730240024020032802102204450d00200341186a28020021052003280214210641002101200341003a006802400240034020052001460d01200341c8006a20016a200420016a2d00003a00002003200141016a22023a00682002210120024120470d000b200341206a41186a200341c8006a41186a2903002207370300200341206a41106a200341c8006a41106a2903002208370300200341206a41086a200341c8006a41086a290300220937030020032003290348220a370320200041196a2007370000200041116a2008370000200041096a20093700002000200a370001410121010c010b0240200141ff0171450d00200341003a00680b4100210120034100360228200342013703202003410b3602442003200341086a3602402003200341206a36026c200341dc006a41013602002003420137024c200341b885c7003602482003200341c0006a360258200341ec006a41d8dbc100200341c8006a103c1a200335022842208620033502208410082003280224450d002003280220102f0b200020013a00002006450d012004102f0c010b200041003a00000b200341f0006a24000b800803037f047e067f230022022103200241c0036b41607122022400200141186a22042900002105200420022903b80237000020012900102106200120022903b00237001020012900082107200120022903a802370008200241003a00a00220012900002108200120022903a002370000200220053703b801200220063703b001200220073703a801200220083703a001200141206a2d00002104200241a0026a41176a22092005370000200241a0026a41106a220a20022900b101370300200241a0026a41086a220b20022900a901370300200220022900a1013703a0020240024002402008a741ff01714101470d00200241106a41176a2009290000370000200241106a41106a200a290300370300200241106a41086a200b290300370300200220022903a002370310200220043a002f20024190026a200241106a10b602200241a0026a200228029002220420022802980210cb0220022d00c1024102470d02200241003602a0032002420137039803200241306a41146a41293602002002413c6a410b360200200241093602ac032002419298ca003602a8032002410b3602342002410b3602b4032002418a93c2003602b003200220024190026a3602402002200241b0036a3602382002200241a8036a360230200220024198036a3602bc03200241d8006a41146a41033602002002420337025c200241b48fc4003602582002200241306a360268200241bc036a41d8dbc100200241d8006a103c1a20023502a0034220862002350298038410080240200228029c03450d00200228029803102f0b200041073a0040200228029402450d01200228029002102f200324000f0b200041073a00400b200324000f0b200241a0016a200241a0026a41e30010e8061a0240200228029402450d002004102f0b200241306a41206a2204200241a0026a41206a2d00003a0000200241306a41186a2209200241a0026a41186a220a290300370300200241306a41106a220b200241a0026a41106a220c290300370300200241306a41086a220d200241a0026a41086a220e290300370300200220022903a002370330200241d8006a200241c1016a41c20010e8061a200141206a200241d8006a41c1006a2d00003a0000200141186a20024191016a290000370000200141106a20024189016a290000370000200141086a20024181016a29000037000020012002290079370000200a200241106a41186a290300370300200c200241106a41106a290300370300200e200241106a41086a290300370300200220022903103703a002200241c8026a200d290300370300200241d0026a200b290300370300200241d8026a2009290300370300200241e0026a20042d00003a0000200220022903303703c0022000200241a0026a41c10010e8061a200324000bd61007017f017e017f017e027f037e087f230041f0006b22012400419298ca00ad42808080809001842202100122032900002104200141106a41086a2205200341086a290000370300200120043703102003102f41ce97c200ad4280808080800284100122032900002104200141206a41086a2206200341086a290000370300200120043703202003102f20012000360250200141d0006aad22044280808080c00084100322032900002107200341086a2900002108200341106a2900002109200141306a41186a220a200341186a290000370300200141306a41106a220b2009370300200141306a41086a220c2008370300200120073703302003102f024041c000102d2203450d00200320012903103700002003200129032037001020032001290330370020200341086a2005290300370000200341186a2006290300370000200341286a200c290300370000200341306a200b290300370000200341386a200a2903003700002003ad428080808080088410052003102f200a4200370300200b4200370300200c42003703002001420037033020021001220329000021022005200341086a290000370300200120023703102003102f200c200529030037030020012001290310370330419b98ca00ad4280808080d0018422021001220329000021072006200341086a290000370300200120073703202003102f200b20012903202207370300200141d0006a41086a200c290300370300200141d0006a41106a2007370300200141d0006a41186a200629030037030020012001290330370350200141086a200141d0006a41201095010240200128020c410020012802081b22032000470d00200141306a41186a22054200370300200141306a41106a22064200370300200141306a41086a2203420037030020014200370330419298ca00ad42808080809001841001220c2900002107200141106a41086a220a200c41086a29000037030020012007370310200c102f2003200a29030037030020012001290310370330418398ca00ad4280808080f001841001220c2900002107200141206a41086a220a200c41086a29000037030020012007370320200c102f200b2001290320370000200b41086a200a290300370000200141d0006a41086a2003290300370300200141d0006a41106a2006290300370300200141d0006a41186a2005290300370300200120012903303703502001200141d0006a41201095012001280200210c20012802042105200041016a220310b0022106200320054100200c1b22054f0d0020060d000340200341016a220310b002210c200320054f0d01200c450d000b0b200141306a41186a22054200370300200141306a41106a22064200370300200141306a41086a220c420037030020014200370330419298ca00ad428080808090018422071001220d2900002108200141106a41086a220a200d41086a29000037030020012008370310200d102f200c200a2903003703002001200129031037033020021001220e2900002102200141206a41086a220d200e41086a29000037030020012002370320200e102f200b2001290320370000200b41086a200d290300370000200141d0006a41086a200c290300370300200141d0006a41106a2006290300370300200141d0006a41186a2005290300370300200120012903303703502001200336023020044280808080800484200141306aad4280808080c0008410042007100122032900002102200a200341086a290000370300200120023703102003102f41a2a8c200ad4280808080900184100122032900002102200d200341086a290000370300200120023703202003102f2001200036025020044280808080c00084100322032900002104200341086a2900002102200341106a29000021072005200341186a29000037030020062007370300200c2002370300200120043703302003102f41c000102d2203450d00200320012903103700002003200129032037001020032001290330370020200341086a200a290300370000200341186a200d290300370000200341286a200c290300370000200341306a2006290300370000200341386a20052903003700002003ad428080808080088410052003102f200141d0006a200010a9022001280254210f20012802502110024020012802582203450d002003410574210b419298ca00ad428080808090018421082010210c0340200141d0006a41186a2205200c41186a290000370300200141d0006a41106a2206200c41106a290000370300200141d0006a41086a220a200c41086a2900003703002001200c2900003703502008100122032900002104200141106a41086a220d200341086a290000370300200120043703102003102f41de97c200ad4280808080e00084100122032900002104200141206a41086a220e200341086a290000370300200120043703202003102f4104102d2203450d022003200036000020034104412410312203450d02200320012903503700042003411c6a2005290300370000200341146a20062903003700002003410c6a200a2903003700002003ad4280808080c00484100322052900002104200541086a2900002102200541106a2900002107200141306a41186a2206200541186a290000370300200141306a41106a220a2007370300200141306a41086a22112002370300200120043703302005102f2003102f41c000102d2203450d02200c41206a210c200320012903103700002003200129032037001020032001290330370020200341086a200d290300370000200341186a200e290300370000200341286a2011290300370000200341306a200a290300370000200341386a20062903003700002003ad428080808080088410052003102f200b41606a220b0d000b0b0240200f450d002010102f0b200141f0006a24000f0b1036000b8e0305027f017e027f027e027f230041d0006b22012400419298ca00ad4280808080900184100122022900002103200141086a41086a2204200241086a290000370300200120033703082002102f41ce97c200ad4280808080800284100122022900002103200141186a41086a2205200241086a290000370300200120033703182002102f2001200036024c200141cc006aad4280808080c00084100322022900002103200241086a2900002106200241106a2900002107200141286a41186a2200200241186a290000370300200141286a41106a22082007370300200141286a41086a22092006370300200120033703282002102f024041c000102d22020d001036000b200220012903083700002002200129031837001020022001290328370020200241086a2004290300370000200241186a2005290300370000200241286a2009290300370000200241306a2008290300370000200241386a20002903003700002001200241c00041c8e1ca004100410010b501200128020021002002102f200141d0006a240020004101460be21407027f017e017f027e057f037e037f230041b0086b22032400419298ca00ad4280808080900184100122042900002105200341d8006a41086a200441086a290000370300200320053703582004102f4199a8c200ad428080808090018410012204290000210520034190036a41086a200441086a29000037030020032005370390032004102f0240024002404120102d2204450d0020042001290000370000200441186a200141186a290000370000200441106a200141106a290000370000200441086a200141086a2900003700002004ad4280808080800484100322062900002105200641086a2900002107200641106a2900002108200341c0056a41186a2209200641186a290000370300200341c0056a41106a220a2008370300200341c0056a41086a2007370300200320053703c0052006102f2004102f41c000102d2204450d00200420032903583700002004200329039003370010200420032903c005370020200441086a200341d8006a41086a290300370000200441186a20034190036a41086a220b290300370000200441286a200341c0056a41086a220c290300370000200441306a200a290300370000200441386a2009290300370000200341c0056a200410b202024020032802d0052206450d002004ad428080808080088410050b200b200341e4056a290200220837030020034190036a41106a200341ec056a220d290200220e37030020034190036a41186a200341f4056a290200220f3703002003200341dc056a290200221037039003200c2903002105200341c0056a41186a2209280200210a20032903c005210720032802d405210b2009200f370300200341c0056a41106a2211200e370300200c2008370300200320103703c00502402006450d00200341186a41186a220c2009290300370300200341186a41106a22092011290300370300200341186a41086a2211200341c0056a41086a290300370300200320032903c0053703182004102f200341386a41186a200c290300370300200341386a41106a2009290300370300200341386a41086a2011290300370300200320032903183703382003200a36028c032003200636028803200341d8006a20034188036a10b30202402003280258411b460d0020034190036a200341d8006a41b00210e8061a200320073703a008200320053703a80802402007200584500d002003200341386a3602f407200341f8076a200341386a200341a0086a200341f4076a10960120032903f8074201520d002003290380082108200341f8056a200341f8076a41106a290300370300200341f0056a2008370300200341c0056a41086a41003a0000200341c9056a2003290338370000200341d1056a200341386a41086a290300370000200341d9056a200341386a41106a290300370000200341e1056a200341d0006a290300370000200341033a00c00541c8e1ca004100200341c0056a108c010b200341c0056a41086a2204410c3a0000200341e9056a2003290338370000200341c9056a220c2001290000370000200341d1056a200141086a290000370000200341d9056a200141106a290000370000200341e1056a200141186a290000370000200341f1056a200341386a41086a290300370000200341f9056a200341386a41106a29030037000020034181066a200341386a41186a290300370000200341063a00c00520034198066a200537030020034190066a200737030041c8e1ca004100200341c0056a108c01200341c0056a20034190036a41b00210e8061a200341003b01f807200341a0086a200341c0056a200341f8076a108b0120032d00a0082101200341c0056a410c6a2002360200200c20014104463a0000200441073a0000200341063a00c00541c8e1ca004100200341c0056a108c01200041043a00000c030b200320073703f8072003200537038008024002400240024020072005844200520d00200342003703a808200342003703a0080c010b2003200341386a3602a00820034190036a200341386a200341f8076a200341a0086a10bd01200341b0036a290300210520032903a803210702402003290390034201520d002003290398032108200341f8056a20034190036a41106a290300370300200341f0056a2008370300200341c0056a41086a41003a0000200341c9056a2003290338370000200341d1056a200341386a41086a290300370000200341d9056a200341386a41106a290300370000200341e1056a200341d0006a290300370000200341033a00c00541c8e1ca004100200341c0056a108c010b200320073703a008200320053703a80820072005844200520d010b200341c0056a41186a22114200370300200341c0056a41106a22094200370300200341c0056a41086a220c4200370300200342003703c00541e7a2ca00ad428080808080018422051001220a2900002107200341f8076a41086a2204200a41086a290000370300200320073703f807200a102f200c2004290300370300200320032903f8073703c00541ecb5c600ad4280808080d0018422071001220a29000021082004200a41086a290000370300200320083703f807200a102f200920032903f807220837030020034190036a41086a220d200c29030037030020034190036a41106a2212200837030020034190036a41186a22132004290300370300200320032903c00537039003200320034190036a4120109c01200341106a29030021082003290308210e2003280200210a2011420037030020094200370300200c4200370300200342003703c00520051001221129000021052004201141086a290000370300200320053703f8072011102f200c2004290300370300200320032903f8073703c00520071001221129000021052004201141086a290000370300200320053703f8072011102f200920032903f8072205370300200d200c2903003703002012200537030020132004290300370300200320032903c00537039003200320084200200a1b3703c8052003200e4200200a1b3703c00520034190036aad4280808080800484200341c0056aad428080808080028410040c010b200341c0056a41f4c7c40010b402200341c0056a2007200510b502200341d8056a2005370300200341d0056a2007370300200341c8056a41063a00002003410c3a00c00541c8e1ca004100200341c0056a108c010b200341c0056a41086a410d3a0000200341c9056a2001290000370000200341ec056a2002360200200341d1056a200141086a290000370000200341d9056a200141106a290000370000200341e1056a200141186a290000370000200341063a00c00541c8e1ca004100200341c0056a108c01200041086a410f360200200041046a41cc93c200360200200041026a41143a000020004183143b01000c020b2004102f200341c0056a41086a410e3a0000200d2002360200200341c9056a2001290000370000200341d1056a200141086a290000370000200341d9056a200141106a290000370000200341e1056a200141186a290000370000200341063a00c00541c8e1ca004100200341c0056a108c01200041086a410f360200200041046a41ec93c200360200200041026a41123a000020004183143b01000c020b1036000b200b450d002006102f0b200341b0086a24000b890702097f027e230041a0016b22022400200241c00036021420022001360210200241186a2001ad428080808080088410021073024002400240024002400240024020022802182203450d00200228021c21042002200241206a28020036024c20022003360248200241086a200241c8006a10e60120022802080d04200228024c2205200228020c2206490d042006417f4c0d010240024020060d00410121070c010b200610332207450d03200720022802482201200610e8061a2002200520066b220536024c2002200120066a3602480b2007450d0441002101200241003a009801417f2108024002400240034020052001460d01200241f8006a20016a200228024822092d00003a00002002200520086a36024c2002200941016a3602482002200141016a220a3a0098012008417f6a2108200a2101200a4120470d000b200241d8006a41186a200241f8006a41186a290300370300200241d8006a41106a200241f8006a41106a290300370300200241d8006a41086a200241f8006a41086a290300370300200220022903783703582005200a6b22014110490d012002200941116a3602482002200141706a220836024c200841044f0d0220060d060c070b0240200141ff0171450d00200241003a0098010b2006450d060c050b20060d040c050b200941096a290000210b2009290001210c200241286a41086a2208200241d8006a41086a290300370300200241286a41106a220a200241d8006a41106a290300370300200241286a41186a2205200241d8006a41186a290300370300200220022903583703282002200941156a36024820022001416c6a36024c2007450d04200928001121012000200c37030020002006360214200020073602102000200b370308200041186a20063602002000411c6a20022903283702002000413c6a2001360200200041246a20082903003702002000412c6a200a290300370200200041346a20052903003702000c050b200041003602100c050b103d000b1036000b2007102f0b20024100360260200242013703582002410b36022c2002200241106a3602282002200241d8006a3602542002418c016a41013602002002420137027c200241b885c7003602782002200241286a36028801200241d4006a41d8dbc100200241f8006a103c1a200235026042208620023502588410080240200228025c450d002002280258102f0b200041003602100b2004450d002003102f0b200241a0016a24000bb2c40209087f027e067f027e027f067e0a7f017e1c7f230041c0116b220224000240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020012802042203450d00200128020022042d0000210520012003417f6a22063602042001200441016a3602002005411a4b0d3d200141046a210720050e1b0102030405060708090a0b0c0d0e0f101112131415161718192324010b2000411b3602000c540b2006450d5120042d0001210520012003417e6a22083602042001200441026a360200200541094b0d51410a2109024002400240024002400240024002400240024020050e0a00010203040506070809000b20084104490d5a2004280002210620012003417a6a3602042001200441066a360200410121090c080b2002200110e60120022802000d59200728020020022802042204490d592004417f4c0d2b0240024020040d00410121060c010b200410332206450d2120072802002004490d5920062001280200200410e8061a200128020422032004490d2d2001200320046b3602042001200128020020046a3602000b2006450d592004ad220a422086200a84210a410221090c070b20084108490d582004290002210a2001200341766a36020420012004410a6a360200410321090c060b200241086a200110e60120022802080d572007280200200228020c2204490d572004417f4c0d290240024020040d00410121060c010b200410332206450d1f20072802002004490d5720062001280200200410e8061a200128020422032004490d2c2001200320046b3602042001200128020020046a3602000b2006450d572004ad220a422086200a84210a410421090c050b200241106a200110e60120022802100d56200728020020022802142204490d562004417f4c0d280240024020040d00410121060c010b200410332206450d1e20072802002004490d5620062001280200200410e8061a200128020422032004490d2c2001200320046b3602042001200128020020046a3602000b2006450d562004ad220a422086200a84210a410521090c040b2008450d5520042d0002210520012003417d6a22073602042001200441036a360200200541014b0d554106210941002106024020050e020400040b20074104490d552004350003210a2001200341796a22053602042001200441076a36020020054104490d552004350007210b2001200341756a36020420012004410b6a360200200b422086200a84210a410121060c030b200241286a200110e60120022802280d54200228022c220c200728020041186e22042004200c4b1b220dad42187e220a422088a70d26200aa72204417f4c0d260240024020040d00410421060c010b2004102d2206450d1c200441186e210d0b0240200c450d004100210e41002104410021080340200241206a200110e60102400240024020022802200d00200728020020022802242203490d002003417f4c0d2b02400240024020030d004101210f0c010b20031033220f450d2220072802002003490d01200f2001280200200310e8061a200128020422052003490d312001200520036b3602042001200128020020036a3602000b200241186a200110e601024020022802180d002007280200200228021c2205490d002005417f4c0d2d02400240024020050d00410121100c010b200510332210450d2420072802002005490d0120102001280200200510e8061a200128020422092005490d342001200920056b3602042001200128020020056a3602000b200841016a21092008200d470d05200e2009200e20094b1bad42187e220a422088a70d5d200aa7220d41004e0d040c5d0b2010102f0b2003450d010b200f102f0b02402008450d002006210103400240200141046a280200450d002001280200102f0b0240200141106a280200450d002001410c6a280200102f0b200141186a2101200441686a22040d000b0b200d450d580c570b0240024020080d00200d102d21060c010b20062004200d103121060b2006450d1e200d41186e210d0b200620046a2208200f360200200841106a2005ad220a422086200a843702002008410c6a2010360200200841046a2003ad220a422086200a84370200200e41026a210e200441186a210420092108200c2009470d000b0b2006450d54200cad422086200dad84210a410721090c020b200241386a200110e60120022802380d53200228023c22102007280200410c6e2204200420104b1b220fad420c7e220a422088a70d25200aa72204417f4c0d250240024020040d00410421060c010b2004102d2206450d1b2004410c6e210f0b0240024002402010450d004100210841002103410021090340200241306a200110e60120022802300d03200728020020022802342204490d032004417f4c0d290240024020040d004101210e0c010b20041033220e450d1f20072802002004490d03200e2001280200200410e8061a200128020422052004490d302001200520046b3602042001200128020020046a3602000b200941016a210502402009200f470d0020082005200820054b1bad420c7e220a422088a70d59200aa7220f4100480d590240024020090d00200f102d21060c010b20062003200f103121060b2006450d1f200f410c6e210f0b200620036a2209200e360200200941046a2004ad220a422086200a84370200200841026a21082003410c6a21032005210920102005470d000b0b2006450d552010ad422086200fad84210a410821090c030b200e102f0b02402009450d002006210103400240200141046a280200450d002001280200102f0b2001410c6a2101200341746a22030d000b0b200f0d520c530b200241c0006a200110e60120022802400d52200728020020022802442204490d522004417f4c0d240240024020040d00410121060c010b200410332206450d1a20072802002004490d5220062001280200200410e8061a200128020422032004490d2c2001200320046b3602042001200128020020046a3602000b2006450d522004ad220a422086200a84210a410921090b20004100360200200041106a200a3702002000410c6a2006360200200041086a2009360200200041186a200241900f6a41980210e8061a0c530b2006450d4e20042d0001210520012003417e6a22063602042001200441026a360200200541044b0d4e02400240024002400240024002400240024020050e050001020304000b200241900f6a200110970320022802900f2204450d5620022902940f220a422088a72110200aa7210341012111410021050c040b20064102490d5520042f0002210520012003417c6a3602042001200441046a360200200241e00c6a200110b30220022802e00c411b460d55200241900f6a200241e00c6a41b00210e8061a41b002102d2204450d1e2004200241900f6a41b00210e8061a20024191096a33000020024193096a31000042108684210a200229008909210b200228028409211020022d008809210d410221110c030b20064102490d5420042f0002210520012003417c6a3602042001200441046a360200200241900f6a200110980320022802900f2204450d5420022802940f21030240024020072802002206450d00200241980f6a2802002110200128020022092d0000210720012006417f6a22083602042001200941016a3602000240024002400240200741014b0d0020070e020201020b200241023602900f0c040b024020084104490d002009280001210820012006417b6a22073602042001200941056a36020020074104490d00200928000521072001200641776a3602042001200941096a360200200241980f6a2007360200200220083602940f4101210d0c020b200241023602900f0c030b4100210d0b2002200d3602900f200241990f6a330000210a2002419b0f6a310000211220022900910f210b200241e00c6a200110b30220022802e00c411b460d07200241900f6a200241e00c6a41b00210e8061a41b002102d2201450d1f200a201242108684210a2001200241900f6a41b00210e8061a410321110c040b200241023602900f0b2003450d540c530b20064102490d5320042f0002210820012003417c6a3602042001200441046a360200200241900f6a200110980320022802900f2206450d5320022802940f2109024020072802002204450d00200241980f6a2802002107200128020022052d0000210320012004417f6a22103602042001200541016a360200200341014b0d004100210e0240024020030e020100010b20104104490d012005280001210f20012004417b6a22033602042001200541056a36020020034104490d012005280005210c2001200441776a22103602042001200541096a3602004101210e0b41002103200241003a00b00f2010417f6a2104024003402004417f460d01200241900f6a20036a200128020022052d00003a0000200120043602042001200541016a3602002002200341016a22053a00b00f2004417f6a21042005210320054120470d000b200241c00c6a41106a200241a70f6a290000370300200241c00c6a41086a2002419f0f6a2900002212370300200220022900970f22133703c00c20022f01900f20022d00920f4110747222144108762105200241d10c6a330000200241d30c6a31000042108684210a200241af0f6a2d0000211520022800930f210420022802c40c211020022802d40c210120022900c90c210b2013a721032012a7210d410421110c030b0240200341ff0171450d00200241003a00b00f0b2009450d542006102f0c540b2009450d532006102f0c530b20064102490d5220042f0002210820012003417c6a3602042001200441046a360200200241900f6a200110980320022802900f2206450d5220022802940f2109200728020022034104490d02200241980f6a280200210720012802002210280000210e20012003417c6a22043602042001201041046a36020020044104490d022010280004210f2001200341786a220d3602042001201041086a36020041002104200241003a00b00f200341776a21030340200d2004460d02200241900f6a20046a201020046a220541086a2d00003a0000200120033602042001200541096a3602002002200441016a22053a00b00f2003417f6a21032005210420054120470d000b20024180096a41106a200241a70f6a29000037030020024198096a200241af0f6a2d00003a000020024180096a41086a2002419f0f6a290000221237030020022f01900f20022d00920f411074722214410876210520022900970f2213422088a7211020024191096a290000220a423888a72115200a421888a7210120022800930f2104200229008909210b2013a721032012a7210d410521110b200020143a0005200020113a0004200041013602002000411d6a200a3d0000200041156a200b3700002000413c6a200c360200200041386a200f360200200041346a200e360200200041306a20073602002000412c6a2009360200200041286a2006360200200041266a20083b0100200041246a20153a0000200041206a2001360200200041146a200d3a0000200041106a20103602002000410c6a2003360200200041086a2004360200200041066a20053b01002000411f6a200a4210883c0000200041c0006a20024190066a41f00110e8061a0c550b0240200441ff0171450d00200241003a00b00f0b2009450d502006102f0c500b2009450d4f2006102f0c4f0b20030d4d0c4e0b02402006450d0020012003417e6a3602042001200441026a3602000b2000411b3602000c510b02402006450d0020042d0001210520012003417e6a3602042001200441026a36020020050d00200241c8006a20011099032002290348a70d002002290350210a20004103360200200041086a200a370300200041106a200241900f6a41a00210e8061a0c510b2000411b3602000c500b02402006450d0020042d0001210520012003417e6a3602042001200441026a36020020050d00200241e00c6a2001109a0320022802e00c2201450d00200041086a20022902e40c3702002000200136020420004104360200200041106a200241900f6a41a00210e8061a0c500b2000411b3602000c4f0b02402006450d0020042d0001210520012003417e6a22063602042001200441026a360200200541034b0d0002400240024002400240024020050e0400010203000b20064104490d052004280002210520012003417a6a3602042001200441066a36020020024180086a41086a20024190066a41086a29030037030020024180086a41106a20024190066a41106a2f01003b0100200220022903900637038008410121064100210141002109410021080c030b41002105200241003a00800d2003417e6a2109417d21060240034020092005460d01200241e00c6a20056a200420056a220741026a2d00003a00002001200320066a3602042001200741036a3602002002200541016a22073a00800d2006417f6a21062007210520074120470d000b20024190066a410f6a200241e00c6a410f6a29000037000020024190066a41176a200241e00c6a41176a29000037000020024190066a411f6a200241e00c6a411f6a2d00003a0000200220022d00e20c22093a009206200220022f01e00c22083b019006200220022800e30c220536009306200220022900e70c37009706200320076b2203417e6a4104490d0541022106200420076a220741026a280000210e200241800c6a41106a20024190066a410772220441106a290000370300200241800c6a41086a200441086a290000370300200241800c6a41186a200441186a2d00003a000020012003417a6a3602042001200741066a36020020024180086a41086a200241800c6a410f6a29000037030020024180086a41106a200241800c6a41176a2f00003b010020022004290000220a3703800c200220022900870c370380082008200941107472220741ffffff0771220141107621042001410876210320022f01840c20022d00860c41107472210820022d00830c2109200aa721010c030b200541ff0171450d04200241003a00800d0c040b20064104490d032004280002210520012003417a6a3602042001200441066a36020020024180086a41086a200241a00c6a41086a29030037030020024180086a41106a200241a00c6a41106a2f01003b0100200220022903a00c37038008410321064100210141002104410021080c010b41002105200241003a00800d2003417e6a2109417d2106034020092005460d02200241e00c6a20056a200420056a220741026a2d00003a00002001200320066a3602042001200741036a3602002002200541016a22073a00800d2006417f6a21062007210520074120470d000b20024198096a200241ff0c6a2d00003a000020024180096a41106a200241e00c6a41176a29000037030020024180096a41086a200241e00c6a410f6a290000220b37030041042106200320076b2203417e6a4104490d0220022d00e20c210920022f01e00c210820022800e30c210520022900e70c210a2002290089092112200420076a220441026a280000210e200241c00c6a41116a20024180096a41116a29000037000020012003417a6a3602042001200441066a360200200220123700c90c20024180086a41086a200241c00c6a410f6a29000037030020024180086a41106a200241c00c6a41176a2f00003b01002002200ba73a00c80c2002200a3703c00c200220022900c70c370380082008200941107472220741ffffff07712201411076210420014108762103200a422088a72108200a421888a72109200aa721010b200241800a6a41106a20024180086a41106a2f0100220f3b0100200241800a6a41086a20024180086a41086a290300220a3703002002200229038008220b3703800a2000410e6a20014110763a00002000410c6a20013b01002000410f6a2008410874200941ff017172360000200041086a2005360200200020043a0007200020033a0006200020073a0005200020063a0004200041053602002000200b3700132000411b6a200a370000200041236a200f3b0000200041286a200e360200200041003a00272000412c6a200241900f6a41840210e8061a0c500b200541ff0171450d00200241003a00800d0b2000411b3602000c4e0b02402006450d0020042d0001210520012003417e6a3602042001200441026a360200200541034b0d00024002400240024020050e0400010203000b200241e00c6a2001109b0320022d00e00c4102460d03200241f40c6a290200210a200241ec0c6a290200210b200241fc0c6a2902002112200241e80c6a280200210420022802e40c210320022802e00c2105200241d8006a2001109c0320022802580d03200241e8006a290300211341012101200229036021160c4b0b200241e00c6a2001109b0320022d00e00c4102460d02200241f40c6a290200210a200241ec0c6a290200210b200241fc0c6a2902002112200241e80c6a280200210420022802e40c210320022802e00c210520024188016a2001109c03200229038801a70d0220024188016a41106a29030021132002290390012116200241f0006a2001109c032002290370a70d02200241f0006a41106a290300211720022903782118410221010c4a0b200241e00c6a2001109b0320022d00e00c4102460d01200241f40c6a290200210a200241ec0c6a290200210b200241fc0c6a2902002112200241e00c6a41086a2206280200210420022802e40c210320022802e00c2105200241e00c6a2001109b0320022d00e00c4102460d0120024190066a41206a2207200241e00c6a41206a28020036020020024190066a41186a2209200241e00c6a41186a29030037030020024190066a41106a2208200241e00c6a41106a29030037030020024190066a41086a2006290300370300200220022903e00c37039006200241a0016a2001109c0320022903a001a70d01200241a0016a41106a290300211920022903a801211a200929030021172008290300211820024198066a29030021132007350200211b2002290390062116410321010c490b200241e00c6a2001109b0320022d00e00c4102460d00200241f40c6a290200210a200241ec0c6a290200210b200241fc0c6a2902002112200241e80c6a280200210420022802e40c210320022802e00c2105200241b8016a2001109c0320022802b8010d00200241c8016a29030021134104210120022903c00121160c480b2000411b3602000c4d0b2006450d4020042d0001210520012003417e6a221c3602042001200441026a360200200541144b0d4041042110420021134100211d4100210d0240024002400240024002400240024002400240024002400240024002400240024002400240024020050e1500010259030405060708090a0b0c0d0e0f10111213000b200241e00c6a2001109b0320022d00e00c4102460d53200241fc0c6a2902002116200241f40c6a290200211b200241ec0c6a290200211a20022902e40c211920022802e00c2106200241d0016a2001109c0320022903d001a70d5320072802002204450d53200241e0016a290300210b20022903d801210a200128020022032d0000210e20012004417f6a360204410121102001200341016a360200200e41024b0d53201b4238882016420886842112201b4220882016422086842113201ba7220d418080807871211d2019422088a721082016422088a72115201a422088a721142019a72109201aa7210f0c580b200241e8016a2001109c0320022903e801a70d5220022903f001220a422088a72108200241f8016a290300220b422088a72114200aa72109200ba7210f410221100c560b20024180026a2001109c03200229038002a70d51200229038802220a422088a7210820024190026a290300220b422088a72114200aa72109200ba7210f410321104100210d0c560b20024198026a200110e6012002280298020d50200228029c02210641052110420021124100211d4100210d420021130c520b200241a0026a200110e60120022802a0020d4f20022802a4022208200728020041246e2204200420084b1b2209ad42247e220a422088a70d2b200aa72204417f4c0d2b0240024020040d00410421060c010b2004102d2206450d21200441246e21090b024002402008450d004122210541002107410021040340200241e00c6a2001109b0320022d00e00c220e4102460d02200441016a210320022d00e30c210f20022f00e10c211020022f01820d210d20022d00810d210c20022d00800d211120022802fc0c211520022802f80c211420022802f40c211d20022802f00c211c20022802ec0c211e20022f01ea0c211f20022d00e90c212020022d00e80c212120022802e40c2122024020042009470d0020072003200720034b1bad42247e220a422088a70d5e200aa722094100480d5e0240024020040d002009102d21060c010b20062005415e6a2009103121060b2006450d24200941246e21090b200620056a2204200d3b00002004415f6a220d2010200f41107472220f3b00002004417f6a200c3a00002004417e6a20113a00002004417a6a2015360000200441766a2014360000200441726a201d3600002004416e6a201c3600002004416a6a201e360000200441686a201f3b0000200441676a20203a0000200441666a20213a0000200441626a20223600002004415e6a200e3a0000200d41026a200f4110763a0000200741026a2107200541246a21052003210420082003470d000b0b2006450d50410621100c530b2009450d4f2006102f0c4f0b410721104100210d0c530b201c450d4d20042d0002210e20012003417d6a3602042001200441036a360200200e41034f0d4d41082110420021124100211d4100210d42002113410021144100210f410021080c520b200241e00c6a2001109b0320022d00e00c4102460d4c20024198096a200241fc0c6a28020036020020024190096a200241f40c6a290200220a370300200aa7220d418080807871211d2002290294092213421888211220022902e40c220a422088a72108200241ec0c6a290200220b422088a72114200241800d6a280200211520022802e00c2106200aa72109200ba7210f410921100c510b200241a8026a200110e60120022802a8020d4b20022802ac022106410a21100c4c0b410b21104100210d0c4f0b410c21104100210d0c4e0b200241e00c6a200110980320022802e00c2206450d4820022902e40c220a422088a72108200aa72109410d21100c4b0b41002105200241003a00800d2003417e6a21072003417d6a21030240034020072005460d01200241e00c6a20056a200420056a220641026a2d00003a0000200120033602042001200641036a3602002002200541016a22063a00800d2003417f6a21032006210520064120470d000b200241980c6a2201200241ff0c6a2d00003a0000200241800c6a41106a200241f70c6a290000220a37030020022f01e00c20022d00e20c41107472220e411076210c200e4108762111200aa7220d418080807871211d20023502940c2001310000422086842213421888211220022900e70c220a422088a72108200241ef0c6a290000220b422088a7211420022800e30c2106200aa72109200ba7210f410e21100c4d0b200541ff0171450d47200241003a00800d0c470b410f21104100210d0c4b0b201c4104490d452004280002210620012003417a6a3602042001200441066a360200200241b0026a200110e60120022802b0020d45200728020020022802b40222034102742204490d452004417f4c0d210240024020040d00410121090c010b200410332209450d1720072802002004490d4520092001280200200410e8061a200128020422052004490d2a2001200520046b3602042001200128020020046a3602000b2009450d454100211d024002402004450d0020094103710d46200341ffffffff0371220f0d012009102f0b410421094100210f0b41000d452009450d4541102110420021124100210d42002113200f21080c4a0b201c4104490d442004280002210620012003417a6a3602042001200441066a360200200241b8026a200110e60120022802b8020d4420022802bc02220f200728020041246e22042004200f4b1b2208ad42247e220a422088a70d20200aa72204417f4c0d200240024020040d00410421090c010b2004102d2209450d16200441246e21080b0240200f450d00200241e00c6a410772211120024191096a21154100210d0340200241003a00800d200d220c41016a210d2007280200210e417f210341002104024002400240024002400340200e2004460d01200241e00c6a20046a200128020022102d00003a00002001200e20036a3602042001201041016a3602002002200441016a22053a00800d2003417f6a21032005210420054120470d000b20024180096a41086a201141086a29000037030020024180096a41106a201141106a29000037030020024180096a41186a201141186a2d00003a00002002201129000037038009200e20056b22044104490d0120022d00e20c210320022f01e00c210520022800e30c210e201028000121142001201041056a36020020012004417c6a3602042015290000210a200229008909210b200229038009211220022d00880921102008200c470d04200c4101742204200d2004200d4b1bad42247e2213422088a70d562013a722044100480d56200c0d022004102d21090c030b200441ff0171450d00200241003a00800d0b2008450d490c480b2009200c41246c2004103121090b2009450d18200441246e21080b2009200c41246c6a2204200520034110747222034180feff0771410876410874200341ff0171723b01002004200b37021020042014360220200420103a000f200420123700072004200e360003200441026a20034110763a0000200441186a200a370200200d200f470d000b0b2009450d4420022903c80c2213421888211220022802c40c220d418080807871211d411121100c490b201c4104490d432004280002210620012003417a6a3602042001200441066a360200411221100c440b200241c0026a2001109c0320022903c002a70d4220022903c802220a422088a72108200241d0026a290300220b422088a72114200aa72109200ba7210f411321100c460b200241d8026a200110e60120022802d8020d4120022802dc022106411421100c420b41002105200241003a00800d2003417e6a21072003417d6a21030240034020072005460d01200241e00c6a20056a200420056a220641026a2d00003a0000200120033602042001200641036a3602002002200541016a22063a00800d2003417f6a21032006210520064120470d000b200241b80c6a2201200241ff0c6a2d00003a0000200241a00c6a41106a200241f70c6a290000220a37030020022f01e00c20022d00e20c41107472220e411076210c200e4108762111200aa7220d418080807871211d20023502b40c2001310000422086842213421888211220022900e70c220a422088a72108200241ef0c6a290000220b422088a7211420022800e30c2106200aa72109200ba7210f411521100c460b200541ff0171450d40200241003a00800d0c400b2006450d2620042d0001210520012003417e6a3602042001200441026a360200200541014b0d26410021040240024020050e020001000b200241e00c6a200110ee0220022d00e00c4101460d2720024190066a200241e00c6a41017241800110e8061a200241e0026a200110e60120022802e0020d27200728020020022802e4022203490d272003417f4c0d1c0240024020030d00410121040c010b200310332204450d1220072802002003490d2720042001280200200310e8061a200128020422052003490d262001200520036b3602042001200128020020036a3602000b2004450d272003ad220a422086200a84210a20024180096a20024190066a41800110e8061a0b20024180086a20024180096a41800110e8061a200041086a200a3702002000200436020420004108360200200041106a20024180086a41800110e8061a20004190016a200241900f6a41a00110e8061a0c4b0b02402006450d0020042d0001210520012003417e6a221f3602042001200441026a360200200541164b0d00410e21110240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020050e17000102030405060708090a0b0c540d0e0f101112131415000b41002105200241003a00800d2003417e6a21072003417d6a21030240034020072005460d01200241e00c6a20056a200420056a220641026a2d00003a0000200120033602042001200641036a3602002002200541016a22063a00800d2003417f6a21032006210520064120470d000b20024180096a41086a200241ef0c6a290000220b37030020024198096a2204200241ff0c6a2d00003a000020024180096a41106a200241f70c6a290000221237030020022800e30c210920022900e70c211320022f01e00c210320022d00e20c21052004310000210a200228028c09210e20022f018a09210f20022d00890921102002350294092116200241e8026a2001109c0320022903e802a70d172016200a42208684210a2012a72115200ba72114200241e8026a41106a290300211220022903f002210b2003200541107472220641ffffff07712201410876210d2001411076211d2013422088a7211e2013a7211c410121110c540b200541ff0171450d16200241003a00800d0c160b20024180036a200110e6012002280280030d1520022802840321094100211e410221110c520b20024188036a200110e6012002280288030d1420072802002204450d14200228028c032109200128020022052d0000210320012004417f6a3602042001200541016a360200200341ff0071220d41064b0d14200341077621064100211e410321110c510b20024190036a200110e6012002280290030d1320072802002204450d132002280294032109200128020022052d0000210320012004417f6a3602042001200541016a360200200341ff0071220d41064b0d13200341077621064100211e410421110c500b201f4104490d122004280002210920012003417a6a3602042001200441066a3602004100211e410521110c4f0b41002105200241003a00800d2003417e6a21072003417d6a21030240034020072005460d01200241e00c6a20056a200420056a220641026a2d00003a0000200120033602042001200641036a3602002002200541016a22063a00800d2003417f6a21032006210520064120470d000b20024198096a2201200241ff0c6a2d00003a000020024180096a41106a200241f70c6a290000220b37030020024180096a41086a200241ef0c6a290000221237030020022f01e00c20022d00e20c411074722206411076211d2006410876210d200235029409200131000042208684210a20022900e70c2213422088a7211e20022800e30c2109200228028c09210e20022f018a09210f20022d00890921102013a7211c200ba721152012a72114410621110c4f0b200541ff0171450d11200241003a00800d0c110b41002105200241003a00800d2003417e6a21072003417d6a21030240034020072005460d01200241e00c6a20056a200420056a220641026a2d00003a0000200120033602042001200641036a3602002002200541016a22063a00800d2003417f6a21032006210520064120470d000b20024198096a2201200241ff0c6a2d00003a000020024180096a41106a200241f70c6a290000220b37030020024180096a41086a200241ef0c6a290000221237030020022f01e00c20022d00e20c411074722206411076211d2006410876210d200235029409200131000042208684210a20022900e70c2213422088a7211e20022800e30c2109200228028c09210e20022f018a09210f20022d00890921102013a7211c200ba721152012a72114410721110c4e0b200541ff0171450d10200241003a00800d0c100b41002105200241003a00800d2003417e6a21072003417d6a21030240034020072005460d01200241e00c6a20056a200420056a220641026a2d00003a0000200120033602042001200641036a3602002002200541016a22063a00800d2003417f6a21032006210520064120470d000b20024198096a2201200241ff0c6a2d00003a000020024180096a41106a200241f70c6a290000220b3703004108211120024180096a41086a200241ef0c6a290000221237030020022f01e00c20022d00e20c411074722206411076211d2006410876210d200235029409200131000042208684210a20022900e70c2213422088a7211e20022800e30c2109200228028c09210e20022f018a09210f20022d00890921102013a7211c200ba721152012a721140c4d0b200541ff0171450d0f200241003a00800d0c0f0b41002105200241003a00800d2003417e6a2109417d21060240034020092005460d01200241e00c6a20056a200420056a220741026a2d00003a00002001200320066a3602042001200741036a3602002002200541016a22073a00800d2006417f6a21062007210520074120470d000b20024180096a41086a200241ef0c6a2900002212370300200320076b2203417e6a4104490d0f20022d00e20c210620022f01e00c2108200241f70c6a2900002113200241ff0c6a2d0000210e20022800e30c210920022900e70c2116200420076a220441026a280000210c20012003417a6a22053602042001200441066a220736020020054104490d0f20082006411074722206411076211d2006410876210d2007350000210b2001200341766a36020420012004410a6a3602002002200e3a009806200231009806210a2002201337039006200235029406200a42208684210a2016422088a7211e2012422088a7210e2012421088a7210f2012420888a721102016a7211c2013a721152012a7211442002112410921110c4c0b200541ff0171450d0e200241003a00800d0c0e0b41002105200241003a00800d2003417e6a21072003417d6a21030240034020072005460d01200241e00c6a20056a200420056a220641026a2d00003a0000200120033602042001200641036a3602002002200541016a22063a00800d2003417f6a21032006210520064120470d000b20024190066a41086a2201200241ff0c6a2d00003a000020024180096a41086a200241ef0c6a290000220b3703002002200241f70c6a29000022123703900620022f01e00c20022d00e20c411074722206411076211d2006410876210d200235029406200131000042208684210a20022900e70c2213422088a7211e200b422088a7210e200b421088a7210f200b420888a7211020022800e30c21092013a7211c2012a72115200ba72114410a21110c4b0b200541ff0171450d0d200241003a00800d0c0d0b20024198036a200110e6012002280298030d0c200228029c0321094100211e410b21110c490b201f4104490d0b2004280002210920012003417a6a3602042001200441066a3602004100211e410c21110c480b41002105200241003a00800d2003417e6a21072003417d6a21030240034020072005460d01200241e00c6a20056a200420056a220641026a2d00003a0000200120033602042001200641036a3602002002200541016a22063a00800d2003417f6a21032006210520064120470d000b20024198096a200241ff0c6a2d00003a000020024180096a41106a200241f70c6a29000037030020024180096a41086a200241ef0c6a290000220a370300200220022f01e00c22013b019006200220022800e30c220936009306200220022900e70c370097062002200a3c009f062002200120022d00e20c411074722206411076221d3a009206200229008909220b42388820024191096a290000220a42088684a721152006410876210d200a421888210a200b421888a7210e200b420888a7210f2002290097062212422088a7211e20022d009f062114200ba721102012a7211c410d21110c480b200541ff0171450d0a200241003a00800d0c0a0b41002105200241003a00800d2003417e6a21072003417d6a21030240034020072005460d01200241e00c6a20056a200420056a220641026a2d00003a0000200120033602042001200641036a3602002002200541016a22063a00800d2003417f6a21032006210520064120470d000b200241a8066a2201200241ff0c6a2d00003a000020024190066a41106a200241f70c6a290000220b370300410f211120024190066a41086a2204200241e00c6a410f6a29000037030020022f01e00c20022d00e20c411074722206411076211d2006410876210d20023502a406200131000042208684210a20022900e70c2212422088a7211e20022800e30c210920042d00002114200228029c06210e20022f019a06210f20022d00990621102012a7211c200ba721150c470b200541ff0171450d09200241003a00800d0c090b41002105200241003a00800d2003417e6a21092003417d6a21060240034020092005460d01200241e00c6a20056a200420056a220741026a2d00003a0000200120063602042001200741036a3602002002200541016a22073a00800d2006417f6a21062007210520074120470d000b20024190066a410f6a200241e00c6a410f6a29000037000020024190066a41176a200241e00c6a41176a29000037000020024190066a411f6a200241e00c6a411f6a2d00003a0000200220022d00e20c22053a009206200220022f01e00c220e3b019006200220022800e30c220936009306200220022900e70c370097062003417e6a2007460d09200420076a220441026a2d00002108200120063602042001200441036a360200200841074f0d09200241800c6a41186a220420024190066a410772220141186a2d00003a000041102111200241800c6a41106a200141106a290000220b370300200241800c6a41086a200141086a29000022123703002002200129000022133703800c200e200541107472220641ffffff07712201411076211d2001410876210d20023502940c200431000042208684210a200ba721152012a7211420022802840c211e20022d00890c211020022f018a0c210f200228028c0c210e2013a7211c0c460b200541ff0171450d08200241003a00800d0c080b411121110c440b411221110c430b200241a0036a200110e60120022802a0030d05200728020020022802a4032204490d052004417f4c0d200240024020040d00410121090c010b200410332209450d1620072802002004490d0520092001280200200410e8061a200128020422032004490d2d2001200320046b3602042001200128020020046a3602000b2009450d052004ad220a422086200a84220a422088a7211e200aa7211c411321114100211d0c420b200241a8036a200110e60120022802a8030d04200728020020022802ac032204490d042004417f4c0d1f0240024020040d00410121090c010b200410332209450d1520072802002004490d0420092001280200200410e8061a200128020422032004490d2d2001200320046b3602042001200128020020046a3602000b2009450d042004ad220a422086200a84220a422088a7211e200aa7211c411421114100211d0c410b41002105200241003a00800d2003417e6a21072003417d6a21030240034020072005460d01200241e00c6a20056a200420056a220641026a2d00003a0000200120033602042001200641036a3602002002200541016a22063a00800d2003417f6a21032006210520064120470d000b200241b80c6a2201200241ff0c6a2d00003a0000200241a00c6a41106a200241f70c6a290000220b370300200241a00c6a41086a2204200241ef0c6a29000037030020022f01e00c20022d00e20c411074722206411076211d2006410876210d20023502b40c200131000042208684210a20022900e70c2212422088a7211e20022800e30c210920042d0000211420022802ac0c210e20022f01aa0c210f20022d00a90c21102012a7211c200ba72115411521110c410b200541ff0171450d03200241003a00800d0c030b41002105200241003a00800d2003417e6a21072003417d6a21030240034020072005460d01200241e00c6a20056a200420056a220641026a2d00003a0000200120033602042001200641036a3602002002200541016a22063a00800d2003417f6a21032006210520064120470d000b200241d80c6a2201200241ff0c6a2d00003a0000200241c00c6a41106a200241f70c6a290000220b370300200241c00c6a41086a2204200241ef0c6a29000037030020022f01e00c20022d00e20c411074722206411076211d2006410876210d20023502d40c200131000042208684210a20022900e70c2212422088a7211e20022800e30c210920042d0000211420022802cc0c210e20022f01ca0c210f20022d00c90c21102012a7211c200ba72115411621110c400b200541ff0171450d02200241003a00800d0c020b41002105200241003a00800d2003417e6a21072003417d6a21030240034020072005460d01200241e00c6a20056a200420056a220641026a2d00003a0000200120033602042001200641036a3602002002200541016a22063a00800d2003417f6a21032006210520064120470d000b20024198096a200241ff0c6a2d00003a00004117211120024180096a41106a200241e00c6a41176a29000037030020024180096a41086a200241ef0c6a2900002212370300200229008909220b42388820024191096a290000220a42088684a7211520022f01e00c20022d00e20c411074722206411076211d2006410876210d200a421888210a20022900e70c2213422088a7211e200b421888a7210e200b420888a7210f20022800e30c21092013a7211c2012a72114200ba721100c3f0b200541ff0171450d01200241003a00800d0c010b2009102f0b2000411b3602000c4a0b200241e00c6a2001109d03024020022d00e00c4106460d0020024190066a41286a200241e00c6a41286a290300220a37030020024190066a41206a200241e00c6a41206a290300220b37030020024190066a41186a200241e00c6a41186a290300221237030020024190066a41106a200241e00c6a41106a290300221337030020024190066a41086a200241e00c6a41086a2903002216370300200220022903e00c221b370390062000410a3602002000201b3702042000410c6a2016370200200041146a20133702002000411c6a2012370200200041246a200b3702002000412c6a200a370200200041346a200241900f6a41fc0110e8061a0c4a0b2000411b3602000c490b200241e00c6a2001109d03024020022d00e00c4106460d0020024190066a41286a200241e00c6a41286a290300220a37030020024190066a41206a200241e00c6a41206a290300220b37030020024190066a41186a200241e00c6a41186a290300221237030020024190066a41106a200241e00c6a41106a290300221337030020024190066a41086a200241e00c6a41086a2903002216370300200220022903e00c221b370390062000410b3602002000201b3702042000410c6a2016370200200041146a20133702002000411c6a2012370200200041246a200b3702002000412c6a200a370200200041346a200241900f6a41fc0110e8061a0c490b2000411b3602000c480b2006450d3820042d0001210520012003417e6a360204410221032001200441026a360200200541054b0d3802400240024002400240024020050e06000501020304000b200241e00c6a200110980320022802e00c2204450d3d200241e80c6a280200210720022802e40c2106200241b0036a2001109c03024020022903b003a70d00200241c0036a290300211220022903b803210b410121030c050b2006450d3d2004102f0c3d0b200241e00c6a2001109b0320022d00e00c4102460d3c200241f40c6a2902002112200241ec0c6a290200210b200241fc0c6a290200210a200241e80c6a280200210720022802e40c210620022802e00c2104410321030c030b410421030c020b410521030c010b200241e00c6a2001109b0320022d00e00c4102460d39200241f40c6a2902002112200241ec0c6a290200210b200241fc0c6a290200210a200241e80c6a280200210720022802e40c210620022802e00c2104410621030b2000410c360200200041206a2012370200200041186a200b370200200041286a200a370200200041146a2007360200200041106a20063602002000410c6a2004360200200041086a2003360200200041306a200241900f6a41800210e8061a0c470b02402006450d0020042d0001210520012003417e6a3602042001200441026a360200200541064b0d004107210802400240024002400240024020050e070001020304053d000b41002105200241003a00800d2003417e6a21072003417d6a21030240034020072005460d01200241e00c6a20056a200420056a220641026a2d00003a0000200120033602042001200641036a3602002002200541016a22063a00800d2003417f6a21032006210520064120470d000b20024198096a200241ff0c6a2d00003a000020024180096a41106a200241f70c6a29000037030020024188096a200241ef0c6a290000220a370300200220022d00e20c22013a009206200220022f01e00c22043b019006200220022800e30c220936009306200220022900e70c370097062002200a3c009f062004200141107472210720024191096a2900002112200229008909210b20022d009f06210f200229009706210a410121080c3d0b200541ff0171450d05200241003a00800d0c050b41002105200241003a00800d2003417e6a21072003417d6a21030240034020072005460d01200241e00c6a20056a200420056a220641026a2d00003a0000200120033602042001200641036a3602002002200541016a22063a00800d2003417f6a21032006210520064120470d000b20024198066a2201200241ef0c6a29000037030020024190066a41106a200241f70c6a290000370300200241a8066a200241ff0c6a2d00003a000020022f01e00c20022d00e20c41107472210720022800e30c210920022900e70c210a200241a1066a290000211220012d0000210f200229009906210b410221080c3c0b200541ff0171450d04200241003a00800d0c040b41002105200241003a00800d410220036b21092003417d6a2106024002400340200920056a450d01200241e00c6a20056a200420056a220741026a2d00003a0000200120063602042001200741036a3602002002200541016a22073a00800d2006417f6a21062007210520074120470d000b200241a80c6a200241ef0c6a290000370300200241a00c6a41106a200241f70c6a290000370300200241b80c6a200241ff0c6a2d00003a0000200220022900e70c3703a00c20022800e30c210920022f01e00c210e20022d00e20c210f41002105200241003a00800d200420076a2108200720036b41026a2103200e200f4110747221070340200320056a450d02200241e00c6a20056a200820056a220441026a2d00003a0000200120063602042001200441036a3602002002200541016a22043a00800d2006417f6a21062004210520044120470d000b200241800c6a41086a2201200241ef0c6a290000370300200241800c6a41106a2204200241e00c6a41176a290000370300200241800c6a41186a2203200241e00c6a411f6a2d00003a0000200220022900e70c3703800c2002200936009306200220073b019006200220074110763a00920620022800e30c210e20022f01e00c210520022d00e20c210620024190066a411f6a200241a00c6a41186a2d00003a000020024190066a41176a200241a00c6a41106a2903003700002002200241a00c6a41086a29030037009f06200220022903a00c370097062005200641107472210620024190066a41186a290300211220032d0000211e2004280200211d2001280200211520022903a006210b20022802940c211c200228028c0c211420022802840c211120022f01820c210c20022d00810c210d20022d00800c211020022d009f06210f200229009706210a410321080c3c0b200541ff0171450d04200241003a00800d0c040b200541ff0171450d03200241003a00800d0c030b200241e00c6a200110980320022802e00c2209450d0220022f00910920024193096a2d000041107472210620022902e40c210a20024189096a2900002112200229008109210b41042108410021070c390b41002105200241003a00800d2003417e6a21072003417d6a21030240034020072005460d01200241e00c6a20056a200420056a220641026a2d00003a0000200120033602042001200641036a3602002002200541016a22063a00800d2003417f6a21032006210520064120470d000b200241c80c6a2201200241ef0c6a290000370300200241c00c6a41106a200241f70c6a290000370300200241d80c6a200241ff0c6a2d00003a000020022f01e00c20022d00e20c41107472210720022800e30c210920022900e70c210a200241d10c6a290000211220012d0000210f20022900c90c210b410521080c390b200541ff0171450d01200241003a00800d0c010b41002105200241003a00800d2003417e6a21072003417d6a21030240034020072005460d01200241e00c6a20056a200420056a220641026a2d00003a0000200120033602042001200641036a3602002002200541016a22063a00800d2003417f6a21032006210520064120470d000b20024198096a200241ff0c6a2d00003a000020024180096a41106a200241f70c6a29000037030020024188096a200241ef0c6a290000221337030020022f01e00c20022d00e20c41107472210720022800e30c210920022900e70c210a20024191096a2900002112200229008909210b2013a7210f410621080c380b200541ff0171450d00200241003a00800d0b2000411b3602000c460b02402006450d0020042d0001210520012003417e6a3602042001200441026a36020020050d00200241c8036a200110e60120022802c8030d0020022802cc0321012000410e36020020002001360204200041086a200241900f6a41a80210e8061a0c460b2000411b3602000c450b02402006450d0020042d0001210520012003417e6a3602042001200441026a36020020050d00200241d0036a200110e60120022802d0030d00200728020020022802d4032204490d002004417f4c0d1502400240024020040d00410121030c010b200410332203450d0c20072802002004490d0120032001280200200410e8061a200128020422052004490d252001200520046b3602042001200128020020046a3602000b2003450d01200020033602042000410f360200200041086a2004ad220a422086200a84370200200041106a200241900f6a41a00210e8061a0c460b2003102f0b2000411b3602000c440b2006450d3120042d0001210520012003417e6a3602042001200441026a360200200541074b0d3102400240024002400240024002400240024020050e080001020304050607000b200241d8036a2001109c0320022903d803a70d39200241e8036a290300210a20022903e003210b200241e00c6a2001109b0320022d00e00c4102460d3920024198096a200241fc0c6a28020036020020024190096a200241f40c6a29020037030020024188096a200241ec0c6a29020022123703002002200b3703800a2002200a3703880a20022902e40c2213422088a72105200241800d6a280200210420022802e00c210320024191096a290000210a20022f019a09210620022d0099092107200229008909210b2013a721092012a721084101210e0c3a0b200241f0036a200110e60120022802f0030d3820022802f4032103200241800a6a41106a200241e00c6a41106a290300370300200241800a6a41086a200241e00c6a41086a290300370300200220022903e00c3703800a410021054102210e0c390b200241f8036a200110e60120022802f8030d3720022802fc032103200241c90c6a290000210a20022900c10c210b20022f01d20c210620022d00d10c2107410021054103210e0c380b20024180046a200110e6012002280280040d3620072802002002280284042209490d362009417f4c0d1802400240024020090d00410121040c010b200910332204450d0f20072802002009490d0120042001280200200910e8061a200128020422032009490d292001200320096b3602042001200128020020096a3602000b2004450d3741002105200241003a00800d2007280200417f6a2103024003402003417f460d01200241e00c6a20056a200128020022062d00003a0000200120033602042001200641016a3602002002200541016a22063a00800d2003417f6a21032006210520064120470d000b20024198096a200241ff0c6a2d00003a000020024180096a41106a200241f70c6a29000037030020024180096a41086a200241ef0c6a290000220a370300200220022f01e00c22013b019006200220022800e30c220336009306200220022900e70c370097062002200a3c009f062002200120022d00e20c411074722201411076220f3a00920620024191096a290000210a200229008909210b20022d009f0621082002290097062112200220093602840a200220093602800a200141087621102012422088a721052012a721094104210e0c390b0240200541ff0171450d00200241003a00800d0b2009450d370b2004102f0c360b41002105200241003a00800d2003417e6a21072003417d6a21030240034020072005460d01200241e00c6a20056a200420056a220641026a2d00003a0000200120033602042001200641036a3602002002200541016a22063a00800d2003417f6a21032006210520064120470d000b20024190066a41086a2201200241ef0c6a29000037030020024190066a41106a200241f70c6a290000370300200241a8066a200241ff0c6a2d00003a0000200220022900e70c22123703900620022800e30c210320022f01e00c210420022d00e20c2105200241a1066a290000210a20012d00002108200229009906210b200241800a6a41106a20024180086a41106a290000370300200241800a6a41086a20024180086a41086a29000037030020022002290080083703800a20042005411074722201411076210f200141087621102012422088a721052012a721094105210e0c370b200541ff0171450d35200241003a00800d0c350b20024188046a200110e6012002280288040d342007280200200228028c042208490d342008417f4c0d160240024020080d00410121040c010b200810332204450d0c20072802002008490d3420042001280200200810e8061a200128020422032008490d272001200320086b3602042001200128020020086a3602000b2004450d3441002103200241003a00800d20072802002107417f21050240034020072003460d01200241e00c6a20036a200128020022092d00003a00002001200720056a3602042001200941016a3602002002200341016a22063a00800d2005417f6a21052006210320064120470d000b20024190066a410f6a200241e00c6a410f6a29000037000020024190066a41176a200241e00c6a41176a29000037000020024190066a411f6a200241e00c6a411f6a2d00003a0000200220022d00e20c22053a009206200220022f01e00c220e3b019006200220022800e30c220336009306200220022900e70c37009706200720066b22064110490d03200941096a290000210a2009290001210b2001200641706a3602042001200941116a360200200241800c6a41186a20024190066a410772220141186a2d00003a0000200241800c6a41106a200141106a290000370300200241800c6a41086a200141086a2900002212370300200241800a6a41106a200a3703002002200129000022133703800c200220083602840a200220083602800a2002200b3703880a200e200541107472220141ffffff07712205411076210f200541087621102012a72108200241800c6a41116a290000210a20022802840c210520022900890c210b2013a721094106210e0c360b0240200341ff0171450d00200241003a00800d0b2008450d340c330b41002105200241003a00800d2003417e6a2109417d21060240034020092005460d01200241e00c6a20056a200420056a220741026a2d00003a00002001200320066a3602042001200741036a3602002002200541016a22073a00800d2006417f6a21062007210520074120470d000b200241c00c6a41086a2205200241ef0c6a290000370300200241c00c6a41106a2206200241f70c6a290000370300200241c00c6a41186a2209200241ff0c6a2d00003a0000200220022900e70c3703c00c200320076b2208417e6a4110490d3420022d00e20c210e20022f01e00c210f20022800e30c2103200420076a220441026a290000210a2004410a6a290000210b20012008416e6a3602042001200441126a360200200241a00c6a41186a20092d00003a0000200241a00c6a41106a2006290300370300200241a00c6a41086a200529030022123703002002200b3703880a2002200a3703800a200f200e41107472220141ffffff07712204411076210f2004410876211020022903c00c2213422088a72105200241b10c6a290000210a20022900a90c210b2013a721092012a721084107210e410021060c350b200541ff0171450d33200241003a00800d0c330b41002105200241003a00800d2003417e6a21072003417d6a21030240034020072005460d01200241e00c6a20056a200420056a220641026a2d00003a0000200120033602042001200641036a3602002002200541016a22063a00800d2003417f6a21032006210520064120470d000b20024198096a200241ff0c6a2d00003a000020024180096a41106a200241f70c6a2900003703004108210e20024180096a41086a200241ef0c6a2900002212370300200241800a6a41086a20024190066a41086a290000370300200241800a6a41106a20024190066a41106a29000037030020022002290090063703800a20022f01e00c20022d00e20c411074722201411076210f2001410876211020022900e70c2213422088a7210520022800e30c210320024191096a290000210a200229008909210b2013a721092012a721080c340b200541ff0171450d32200241003a00800d0c320b20080d300c310b2006450d2d20042d0001210520012003417e6a3602042001200441026a360200200541044b0d2d02400240024002400240024020050e050001020304000b200241e00c6a200110910220022d00d80d4102460d32200241d80b6a41086a200241e00c6a41186a2d00003a000020024180086a41086a2002418c0d6a29020037030020024190086a200241940d6a29020037030020024180086a41186a2002419c0d6a280200360200200220022903f00c3703d80b200220022902840d3703800820022903e80c210a20022903e00c211220022d00f90c210620022f01fa0c210e20022802fc0c210420022802800d210520022902c40d220b42ffffffff0f832113200b428080808070832116200241d80d6a290300211b20022903d00d211a20022802cc0d210320022802c00d210720022802bc0d210820022f01ba0d210f20022d00b90d211020022d00b80d210d20022903b00d211920022903a80d211820022903a00d210b4101210c0c330b20024198046a2001109903200229039804a70d3120022903a004210a20024190046a200110e6012002280290040d3120072802002002280294042204490d312004417f4c0d160240024020040d00410121090c010b200410332209450d0c20072802002004490d2920092001280200200410e8061a200128020422032004490d282001200320046b3602042001200128020020046a3602000b2009450d312004ad220b422086200b842112200241d80b6a41086a20024190066a41086a2d00003a000020024180086a41086a200241e00c6a41086a29020037030020024180086a41106a200241e00c6a41106a29020037030020024180086a41186a200241e00c6a41186a28020036020020022002290390063703d80b200220022902e00c370380084102210c42002113420021160c320b200241e00c6a2001109b0320022d00e00c4102460d3020024198066a200241ec0c6a29020037030020024190066a41106a200241f40c6a290200370300200241a8066a200241fc0c6a280200360200200220022902e40c37039006200241800d6a280200210420022802e00c2109200241c0046a2001109c0320022903c004a70d30200241c0046a41106a290300210a20022903c8042112200241b0046a200110990320022903b004a70d3020022903b804210b200241a8046a200110e60120022802a8040d30200728020020022802ac042203490d302003417f4c0d150240024020030d00410121050c010b200310332205450d0b20072802002003490d0320052001280200200310e8061a200128020422062003490d292001200620036b3602042001200128020020036a3602000b2005450d3020024180096a41186a20024190066a41186a280200220136020020024194086a200a370200200241d80b6a41086a20013a00002002201237028c0820022003ad220a422086200a84370380082002200241a0066a2903003703d80b20024190066a41086a290300210a200229039006211220022d00c80c210d20022d00c90c211020022f01ca0c210f20022802d00c210720022802cc0c210820022d009909210620022f019a09210e4103210c4200211341002111420021160c310b200241f0046a2001109c0320022903f004a70d2f20024180056a290300210a20022903f804210b200241e0046a200110990320022903e004a70d2f20022903e804211241002103200241003a00800d2007280200417f6a2104024002400240024003402004417f460d01200241e00c6a20036a200128020022052d00003a0000200120043602042001200541016a3602002002200341016a22053a00800d2004417f6a21042005210320054120470d000b200241880c6a200241ef0c6a290000370300200241800c6a41106a200241f70c6a290000370300200241980c6a200241ff0c6a2d00003a0000200220022900e70c3703800c20022800e30c210920022f01e00c210320022d00e20c2106200241d8046a200110e60120022802d8040d33200728020020022802dc042205490d332005417f4c0d1820050d014101210441010d020c330b200341ff0171450d32200241003a00800d0c320b200510332204450d0b20072802002005490d0120042001280200200510e8062107200128020422082005490d2a2001200820056b3602042001200128020020056a3602002007450d310b2002418c086a200a370200200241d80b6a41086a200241980c6a2d00003a00002002200b37028408200220123702940820022005360280082002200241900c6a2903003703d80b200320064110747222014180feff07714108762111200241800c6a41086a290300210a20022903800c21124104210c42002113420021160c310b2004102f0c2f0b41002105200241003a00800d2003417e6a21092003417d6a21060240024002400240034020092005460d01200241e00c6a20056a200420056a220741026a2d00003a0000200120063602042001200741036a3602002002200541016a22073a00800d2006417f6a21062007210520074120470d000b200241a80c6a200241ef0c6a290000370300200241a00c6a41106a200241f70c6a290000370300200241b80c6a200241ff0c6a2d00003a0000200220022900e70c3703a00c2003417e6a2007460d3220022d00e20c210f20022f01e00c211020022800e30c2109200420076a220841026a2d00002104200120063602042001200841036a360200200441014b0d324100210620040e020201020b200541ff0171450d31200241003a00800d0c310b41002104200241003a00800d200720036b41036a2106200320076b417c6a21030340200620046a450d02200241e00c6a20046a200820046a220541036a2d00003a0000200120033602042001200541046a3602002002200441016a22053a00800d2003417f6a21032005210420054120470d000b20024180096a41186a200241ff0c6a2d00003a000020024180096a41106a200241f70c6a29000037030020024188096a200241ef0c6a290000220a370300200241850c6a20022800e30c22014110763a0000200220013b00830c200220022d00e20c22043a00820c200220022f01e00c22033b01800c20024191096a2900002113200229008909210b200220022900e70c3700c10c200220014118763a00c00c2003200441107472210e200aa7210d4101210620022802c00c21050b200241af066a2203200241b80c6a2d00003a0000200220022802c40c360280082002200241c00c6a41086a2d00003a00840820022010200f4110747222013b0190062002200936009306200220022903a00c37009706200220014110763a0092062002200241a00c6a41086a29030037009f062002200241a00c6a41106a2903003700a70620022801820c2104200229009f06210a2002290097062112200241d80b6a41086a20032d00003a0000200220022900a7063703d80b2002418e086a20133701002002200b370186082002200d3a00850820014180feff077141087621114105210c42002113420021160c300b200441ff0171450d2e200241003a00800d0c2e0b2005102f0c2d0b200241e00c6a2001109e03024020022802e00c4104460d0020024190066a41286a200241e00c6a41286a280200220136020020024190066a41206a200241e00c6a41206a290300220a37030020024190066a41186a200241e00c6a41186a290300220b37030020024190066a41106a200241e00c6a41106a290300221237030020024190066a41086a200241e00c6a41086a2903002213370300200220022903e00c22163703900620004112360200200020163702042000410c6a2013370200200041146a20123702002000411c6a200b370200200041246a200a3702002000412c6a2001360200200041306a200241900f6a41800210e8061a0c420b2000411b3602000c410b02402006450d0020042d0001210520012003417e6a22063602042001200441026a36020020050d0020064104490d002004280002210520012003417a6a3602042001200441066a36020020024198056a200110e6012002280298050d002007280200200228029c052204490d002004417f4c0d11024002400240024002400240024020040d004101210e0c010b20041033220e450d0c20072802002004490d01200e2001280200200410e8061a200128020422032004490d2c2001200320046b3602042001200128020020046a3602000b200e450d052004ad220a422086200a84210b20024190056a200110e601024002402002280290050d00200228029405220c2007280200410c6e22042004200c4b1b220dad420c7e220a422088a70d18200aa72204417f4c0d180240024020040d004104210f0c010b2004102d220f450d0e2004410c6e210d0b024002400240200c450d00410021084100210341002109034020024188056a200110e6012002280288050d032007280200200228028c052204490d032004417f4c0d1c0240024020040d00410121100c010b200410332210450d1220072802002004490d0320102001280200200410e8061a200128020422062004490d332001200620046b3602042001200128020020046a3602000b200941016a210602402009200d470d0020082006200820064b1bad420c7e220a422088a70d4c200aa7220d4100480d4c0240024020090d00200d102d210f0c010b200f2003200d1031210f0b200f450d12200d410c6e210d0b200f20036a22092010360200200941046a2004ad220a422086200a84370200200841026a21082003410c6a210320062109200c2006470d000b0b200ba72103200f450d03200728020022064104490d0520012802002209280000211020012006417c6a22043602042001200941046a36020020044104490d06200b422088a72111200928000421152001200641786a22083602042001200941086a36020041002104200241003a00a00d200641776a2106034020082004460d08200241e00c6a20046a200920046a220741086a2d00003a0000200120063602042001200741096a3602002002200441016a22073a00a00d2006417f6a210620072104200741c000470d000b200e450d09200241e00c6a41386a290300210a200241e00c6a41086a290300210b20022903900d211220022903e00c2113200228028c0d210120022902840d211620022802800d210420022802fc0c210620022f01fa0c210720022d00f80c210920022903f00c211b200020022d00f90c3a00412000200536020420004113360200200041e0006a200a370200200041d8006a2012370200200041306a200b370200200041286a2013370200200041d4006a2001360200200041cc006a2016370200200041c8006a2004360200200041c4006a2006360200200041c2006a20073b0100200041c0006a20093a0000200041386a201b370200200041246a2015360200200041206a20103602002000411c6a200c360200200041186a200d360200200041146a200f360200200041106a20113602002000410c6a2003360200200041086a200e360200200041e8006a200241900f6a41c80110e8061a0c4a0b2010102f0b02402009450d00200f210103400240200141046a280200450d002001280200102f0b2001410c6a2101200341746a22030d000b0b200d450d00200f102f0b200ba721030b2003450d050b200e102f0c040b02402003450d00200e102f0b0240200c450d00200c410c6c2104200f210103400240200141046a280200450d002001280200102f0b2001410c6a2101200441746a22040d000b0b200d0d020c030b02402003450d00200e102f0b0240200c450d00200c410c6c2104200f210103400240200141046a280200450d002001280200102f0b2001410c6a2101200441746a22040d000b0b200d0d010c020b0240200441ff0171450d00200241003a00a00d0b02402003450d00200e102f0b0240200c450d00200c410c6c2104200f210103400240200141046a280200450d002001280200102f0b2001410c6a2101200441746a22040d000b0b200d450d010b200f102f0b2000411b3602000c400b02402006450d0020012003417e6a3602042001200441026a3602000b2000411b3602000c3f0b02402006450d0020012003417e6a3602042001200441026a3602000b2000411b3602000c3e0b02402006450d0020012003417e6a3602042001200441026a3602000b2000411b3602000c3d0b2006450d2620042d0001210520012003417e6a22233602042001200441026a3602002005410a4b0d26410421244200211802400240024002400240024002400240024002400240024020050e0b0001020b03040506070809000b41002105200241003a00b00f2003417e6a21072003417d6a21030240034020072005460d01200241900f6a20056a200420056a220641026a2d00003a0000200120033602042001200641036a3602002002200541016a22063a00b00f2003417f6a21032006210520064120470d000b200241800c6a41086a2002419f0f6a290000220b370300200241800c6a41106a200241a70f6a2900002213370300200241980c6a2201200241af0f6a2d00003a0000200220022900970f22123703800c20022800930f210620022f01900f210420022d00920f21032001310000210a200228028c0c211420023502940c2116200241f00b6a41086a200241800a6a41086a290000370300200220022900800a3703f00b200241d80b6a41106a200241e00c6a41106a290000370300200241d80b6a41086a200241e00c6a41086a290000370300200220022900e00c3703d80b200241c00b6a41106a20024190066a41106a290000370300200241c00b6a41086a20024190066a41086a29000037030020022002290090063703c00b200241a80b6a41106a20024180096a41106a290000370300200241a80b6a41086a20024180096a41086a29000037030020022002290080093703a80b200241900b6a41106a20024180086a41106a290000370300200241900b6a41086a20024180086a41086a29000037030020022002290080083703900b2004200341107472210e2016200a42208684210a2012422088a72108200b4280feffff0f83420888a721252012a721092013a72111200ba7210d410121244100211d0c0b0b200541ff0171450d31200241003a00b00f0c310b200241a0056a200110e60120022802a0050d3020022802a4052208200728020041c8006e2204200420084b1b2209ad42c8007e220a422088a70d16200aa72204417f4c0d160240024020040d00410421060c010b2004102d2206450d0c200441c8006e21090b02402008450d00200241e00c6a410c6a210e4100210f41002105410021040340200241e00c6a200110a9010240024020022d00e00c22104106460d0020024180096a41086a2211200e41086a29020037030020024180096a41106a2215200e41106a2902003703002002200e2902003703800920022802e80c210d20022802e40c210c20022f01e20c211420022d00e10c211d200241900f6a200110a90120022d00900f4106470d0120104101470d00200d450d00200c102f0b02402004450d00200620056a2104200621010340024020012d00004101470d00200141086a280200450d00200141046a280200102f0b0240200141246a2d00004101470d002001412c6a280200450d00200141286a280200102f0b2004200141c8006a2201470d000b0b2009450d330c320b200441016a210320024180086a41106a221c201529030037030020024180086a41086a2215201129030037030020024190066a41086a2211200241900f6a41086a29030037030020024190066a41106a221e200241900f6a41106a29030037030020024190066a41186a221f200241900f6a41186a29030037030020024190066a41206a2220200241900f6a41206a280200360200200220022903800937038008200220022903900f37039006024020042009470d00200f2003200f20034b1bad42c8007e220a422088a70d48200aa722094100480d480240024020040d002009102d21060c010b200620052009103121060b2006450d0e200941c8006e21090b200620056a220420103a0000200441086a200d360200200441046a200c360200200441026a20143b0000200441016a201d3a00002004410c6a200229038008370200200441146a20152903003702002004411c6a201c290300370200200441246a2002290390063702002004412c6a2011290300370200200441346a201e2903003702002004413c6a201f290300370200200441c4006a2020280200360200200f41026a210f200541c8006a21052003210420082003470d000b0b2006450d30200241900f6a200110a90102400240024002400240024002400240024020022d00900f220d4106460d00200241b00f6a280200210c200241a80f6a290300210b200241a40f6a220428020021102002419c0f6a2203290200210a200241900f6a41086a2205280200211120022802940f211420022f00910f210e20022d00930f210f200241900f6a200110a90120022d00900f221d4106460d01200241800a6a41086a200241ac0f6a221f290200370300200220042902003703800a200329020021122005280200211c20022802940f211520023100930f211820023100920f211720023100910f2126200241900f6a200110a90120022d00900f221e4106460d0220024180086a41086a200241a40f6a220429020037030020024180086a41106a201f29020037030020022002419c0f6a220329020037038008200241900f6a41086a2205280200211f20022802940f212020022d00930f212720022d00920f212820022d00910f2122200241900f6a200110a90120022d00900f22214106460d0320024180096a41086a200429020037030020024180096a41106a200241ac0f6a220429020037030020022003290200370380092005280200212920022802940f212a20022f01920f212b20022d00910f212c200241900f6a200110a90120022d00900f222d4106460d0620024190066a41086a200241a40f6a290200370300200241a0066a200429020037030020022002419c0f6a29020037039006200241900f6a41086a280200212e20022802940f212f20072802002204450d0720022d00930f213020022d00920f213120022d00910f2132200128020022032d0000210520012004417f6a22073602042001200341016a360200200541014b0d07420021134100212441002123420021164100213320050e020504050b02402008450d002006200841c8006c6a2104200621010340024020012d00004101470d00200141086a280200450d00200141046a280200102f0b0240200141246a2d00004101470d002001412c6a280200450d00200141286a280200102f0b200141c8006a22012004470d000b0b20090d370c380b0240200d4101470d002011450d002014102f0b02402008450d002006200841c8006c6a2104200621010340024020012d00004101470d00200141086a280200450d00200141046a280200102f0b0240200141246a2d00004101470d002001412c6a280200450d00200141286a280200102f0b200141c8006a22012004470d000b0b20090d360c370b0240201d4101470d00201c450d002015102f0b0240200d4101470d002011450d002014102f0b02402008450d002006200841c8006c6a2104200621010340024020012d00004101470d00200141086a280200450d00200141046a280200102f0b0240200141246a2d00004101470d002001412c6a280200450d00200141286a280200102f0b200141c8006a22012004470d000b0b20090d350c360b0240201e4101470d00201f450d002020102f0b0240201d4101470d00201c450d002015102f0b0240200d4101470d002011450d002014102f0b02402008450d002006200841c8006c6a2104200621010340024020012d00004101470d00200141086a280200450d00200141046a280200102f0b0240200141246a2d00004101470d002001412c6a280200450d00200141286a280200102f0b200141c8006a22012004470d000b0b20090d340c350b2007450d0220032d0001212420012004417e6a22053602042001200341026a3602002005450d0220032d0002210720012004417d6a22053602042001200341036a3602002005450d0220032d0003213420012004417c6a22053602042001200341046a3602002005450d0220032d0004213320012004417b6a22053602042001200341056a3602002005450d0220032d0005213520012004417a6a22053602042001200341066a3602002005450d0220032d000621362001200441796a22053602042001200341076a3602002005450d0220032d000721372001200441786a22053602042001200341086a3602002005450d0220032d000821382001200441776a22053602042001200341096a3602002005450d0220032d000921392001200441766a220536020420012003410a6a3602002005450d0220032d000a213a2001200441756a220536020420012003410b6a3602002005450d0220032d000b213b2001200441746a220536020420012003410c6a3602002005450d0220032d000c213c2001200441736a220536020420012003410d6a3602002005450d0220032d000d213d2001200441726a220536020420012003410e6a3602002005450d0220032d000e21252001200441716a220536020420012003410f6a3602002005450d0220032d000f213e2001200441706a22053602042001200341106a3602002005450d0220032d0010213f20012004416f6a22053602042001200341116a3602002005450d0220032d0011214020012004416e6a22053602042001200341126a3602002005450d0220032d0012214120012004416d6a22053602042001200341136a3602002005450d0220032d0013214220012004416c6a22053602042001200341146a3602002005450d022003310014211320012004416b6a3602042001200341156a3602002002203341187420344110747220074108747222232024723602900f2002203cad423886203bad42ff018342308684203aad42ff0183422886842039ad42ff0183422086842038ad42ff01834218868422162037ad42ff0183421086842036ad42ff0183420886842035ad42ff0183843702940f201642188820134238862042ad42ff0183423086842041ad42ff0183422886842040ad42ff018342208684203fad42ff018342188684203ead42ff0183421086842025ad42ff018342088684203dad42ff01838422164228868421132016421888211620022800930f2134410121330b200241900f6a200110a90120022d00900f22354106460d02200241e00c6a41086a2204200241a40f6a2203290200370300200241e00c6a41106a2205200241ac0f6a220729020037030020022002419c0f6a2902003703e00c200241900f6a41086a223b280200213620022802940f213720022d00930f213a20022d00920f213920022d00910f2138200241900f6a200110a90120022d00900f4106470d0b024020354101470d002036450d002037102f0b0240202d4101470d00202e450d00202f102f0b024020214101470d002029450d00202a102f0b0240201e4101470d00201f450d002020102f0b0240201d4101470d00201c450d002015102f0b0240200d4101470d002011450d002014102f0b02402008450d002006200841c8006c6a2104200621010340024020012d00004101470d00200141086a280200450d00200141046a280200102f0b0240200141246a2d00004101470d002001412c6a280200450d00200141286a280200102f0b200141c8006a22012004470d000b0b20090d320c330b024020214101470d002029450d00202a102f0b0240201e4101470d00201f450d002020102f0b0240201d4101470d00201c450d002015102f0b0240200d4101470d002011450d002014102f0b02402008450d002006200841c8006c6a2104200621010340024020012d00004101470d00200141086a280200450d00200141046a280200102f0b0240200141246a2d00004101470d002001412c6a280200450d00200141286a280200102f0b200141c8006a22012004470d000b0b20090d310c320b0240202d4101470d00202e450d00202f102f0b024020214101470d002029450d00202a102f0b0240201e4101470d00201f450d002020102f0b0240201d4101470d00201c450d002015102f0b0240200d4101470d002011450d002014102f0b02402008450d002006200841c8006c6a2104200621010340024020012d00004101470d00200141086a280200450d00200141046a280200102f0b0240200141246a2d00004101470d002001412c6a280200450d00200141286a280200102f0b200141c8006a22012004470d000b0b20090d300c310b0240202d4101470d00202e450d00202f102f0b024020214101470d002029450d00202a102f0b0240201e4101470d00201f450d002020102f0b0240201d4101470d00201c450d002015102f0b0240200d4101470d002011450d002014102f0b02402008450d002006200841c8006c6a2104200621010340024020012d00004101470d00200141086a280200450d00200141046a280200102f0b0240200141246a2d00004101470d002001412c6a280200450d00200141286a280200102f0b200141c8006a22012004470d000b0b20090d2f0c300b200241a8056a200110e60120022802a8050d2f20022802ac05220e200728020041c4006e22042004200e4b1b2210ad42c4007e220a422088a70d15200aa72204417f4c0d150240024020040d00410421060c010b2004102d2206450d0b200441c4006e21100b0240200e450d00200241900f6a410772210d20024191096a210c41002109410021080340200241003a00b00f2008220f41016a21082007280200417f6a2104410021030240024002400240024003402004417f460d01200241900f6a20036a200128020022052d00003a0000200120043602042001200541016a3602002002200341016a22053a00b00f2004417f6a21042005210320054120470d000b20024180096a41086a200d41086a29000037030020024180096a41106a200d41106a29000037030020024180096a41186a200d41186a2d00003a00002002200d2900003703800920022800930f210520022f01900f210320022d00920f2111200241900f6a200110a90120022d00900f22154106460d0120022d00930f211420022f00910f211d200c290000210a200229008909210b20022f01b20f211c20022d00b10f211e20022d00b00f211f20022802ac0f212020022802a80f212120022802a40f212220022802a00f2128200228029c0f212720022f019a0f212920022d00990f212a20022d00980f212d20022802940f212c20022d008809212b20022903800921122010200f470d04200f41017422042008200420084b1bad42c4007e2213422088a70d4b2013a722044100480d4b200f0d022004102d21060c030b200341ff0171450d00200241003a00b00f0b0240200f450d00200641286a210103400240200141786a2d00004101470d002001280200450d002001417c6a280200102f0b200141c4006a2101200941bc7f6a22090d000b0b20100d330c340b2006200f41c4006c2004103121060b2006450d0d200441c4006e21100b2006200f41c4006c6a2204201d201441107472220f3b00212004200320114110747222034180feff0771410876410874200341ff0171723b01002004200b3702102004201c3b00422004201e3a00412004201f3a00402004202036003c2004202136003820042022360034200420283600302004202736002c200420293b002a2004202a3a00292004202d3a00282004202c360024200420153a00202004202b3a000f2004201237000720042005360003200441236a200f4110763a0000200441026a20034110763a0000200441186a200a370200200941c4006a21092008200e470d000b0b2006450d2f200241f00b6a41086a200241c00c6a41086a290300370300200241d80b6a41086a200241e00c6a41086a290200370300200241d80b6a41106a200241e00c6a41106a290200370300200241c00b6a41086a20024190066a41086a290300370300200241c00b6a41106a20024190066a41106a290300370300200241a80b6a41106a20024180086a41106a290200370300200241a80b6a41086a20024180086a41086a290200370300200220022903c00c3703f00b200220022902e00c3703d80b20022002290390063703c00b20022002290280083703a80b200241900b6a41106a200241800a6a41106a290300370300200241900b6a41086a200241800a6a41086a290300370300200220022903800a3703900b200ead4220862010ad84220a422088a72108200aa72109410321244100210e4100211d0c080b200241c8056a200110e60120022802c8050d2e20022802cc052106200241b0056a2001109c0320022903b005a70d2e200241b0056a41106a290300210a20022903b805210b200241f00b6a41086a20024180086a41086a290300370300200241d80b6a41086a200241900f6a41086a290200370300200241d80b6a41106a200241900f6a41106a290200370300200241c00b6a41086a200241e00c6a41086a290300370300200241c00b6a41106a200241e00c6a41106a290300370300200241a80b6a41106a20024190066a41106a290200370300200241a80b6a41086a20024190066a41086a29020037030020022002290380083703f00b200220022902900f3703d80b200220022903e00c3703c00b20022002290290063703a80b200241900b6a41106a20024180096a41106a290300370300200241900b6a41086a20024180096a41086a29030037030020022002290380093703900b200b422088a72108200a422088a72114200a4280feffff0f83420888a72125200ba72109200aa7210d410521244100211d0c070b20234104490d2d2004280002210620012003417a6a360204410621242001200441066a360200200241f00b6a41086a20024180086a41086a290300370300200241d80b6a41086a200241900f6a41086a290200370300200241d80b6a41106a200241900f6a41106a290200370300200241c00b6a41086a200241e00c6a41086a290300370300200241c00b6a41106a200241e00c6a41106a29030037030020022002290380083703f00b200220022902900f3703d80b200220022903e00c3703c00b200241a80b6a41106a20024190066a41106a290200370300200241a80b6a41086a20024190066a41086a290200370300200241900b6a41086a20024180096a41086a290300370300200241900b6a41106a20024180096a41106a29030037030020022002290290063703a80b20022002290380093703900b41002108410021254100210d4100211d0c060b200241e8056a200110e60120022802e8050d2c20022802ec052106200241d0056a2001109c0320022903d005a70d2c200241d0056a41106a290300210a20022903d805210b200241f00b6a41086a20024180086a41086a290300370300200241d80b6a41086a200241900f6a41086a290200370300200241d80b6a41106a200241900f6a41106a290200370300200241c00b6a41086a200241e00c6a41086a290300370300200241c00b6a41106a200241e00c6a41106a290300370300200241a80b6a41106a20024190066a41106a290200370300200241a80b6a41086a20024190066a41086a29020037030020022002290380083703f00b200220022902900f3703d80b200220022903e00c3703c00b20022002290290063703a80b200241900b6a41106a20024180096a41106a290300370300200241900b6a41086a20024180096a41086a29030037030020022002290380093703900b200b422088a72108200a422088a72114200a4280feffff0f83420888a72125200ba72109200aa7210d410721244100211d0c050b200241f0056a200110e60120022802f0050d2b20022802f405211041002103200241003a00b00f2007280200417f6a2104024003402004417f460d01200241900f6a20036a200128020022052d00003a0000200120043602042001200541016a3602002002200341016a22053a00b00f2004417f6a21042005210320054120470d000b20024190066a410f6a2201200241900f6a410f6a29000037000020024190066a411f6a2204200241900f6a411f6a2d00003a0000200220022d00920f22033a009206200220022f01900f22053b019006200220022800930f220636009306200220022900970f370097062002200241a70f6a2900003700a7062001350000210b2004310000210a4108212420022800a706211120022800a3062114200229009706211220023500ab062113200241f00b6a41086a200241800c6a41086a290300370300200220022903800c3703f00b200241d80b6a41106a200241e00c6a41106a290200370300200241d80b6a41086a200241e00c6a41086a290200370300200220022902e00c3703d80b200241c00b6a41106a20024180096a41106a290300370300200241c00b6a41086a20024180096a41086a29030037030020022002290380093703c00b200241a80b6a41106a20024180086a41106a290200370300200241a80b6a41086a20024180086a41086a29020037030020022002290280083703a80b200241900b6a41106a200241800a6a41106a290300370300200241900b6a41086a200241800a6a41086a290300370300200220022903800a3703900b2005200341107472210e2013200a42208684210a200b420888a721252012422088a72108200ba7210d2012a721094100211d0c050b200341ff0171450d2b200241003a00b00f0c2b0b200241f8056a200110e60120022802f8050d2a200728020022044108490d2a20022802fc05210620012802002203290000210a2001200441786a3602042001200341086a360200200a4280025a0d2a200241f00b6a41086a20024180086a41086a290300370300200241d80b6a41086a200241900f6a41086a290200370300200241d80b6a41106a200241900f6a41106a290200370300200241c00b6a41086a200241e00c6a41086a290300370300200241c00b6a41106a200241e00c6a41106a290300370300200241a80b6a41106a20024190066a41106a290200370300200241a80b6a41086a20024190066a41086a29020037030020022002290380083703f00b200220022902900f3703d80b200220022903e00c3703c00b20022002290290063703a80b200241900b6a41106a20024180096a41106a290300370300200241900b6a41086a20024180096a41086a29030037030020022002290380093703900b200a422088a72108200aa72109410921244100211d0c030b20024180066a200110e6012002280280060d292002280284062106200241900f6a2001109b0320022d00900f4102460d29200241800a6a41086a200241900f6a41086a290300370300200220022903900f3703800a20072802002203450d29200241ac0f6a2902002113200241a40f6a290200210a200241a00f6a2802002111200128020022052d0000210420012003417f6a22073602042001200541016a360200200441064b0d29420021124100211c4100210c0240024002400240024002400240024020040e0707000501020304070b20074110490d30200541096a29000021122005290001210b20012003416f6a3602042001200541116a360200200b422088a7211c200ba721154101210c0c060b4103210c0c040b4104210c0c030b4105210c0c020b4106210c0c010b4102210c0b0b200241c00c6a41086a200241800a6a41086a2903002216370300200241f00b6a41086a200241a00c6a41086a290300370300200241d80b6a41086a200241e00c6a41086a290200370300200241d80b6a41106a200241e00c6a41106a290200370300200241c00b6a41086a20024190066a41086a290300370300200241c00b6a41106a20024190066a41106a290300370300200220022903800a221b3703c00c200220022903a00c3703f00b200220022902e00c3703d80b20022002290390063703c00b20022802cc0c2114200241a80b6a41106a20024180096a41106a290200370300200241a80b6a41086a20024180096a41086a290200370300200241900b6a41106a20024180086a41106a290300370300200241900b6a41086a20024180086a41086a29030037030020022002290280093703a80b20022002290380083703900b2013422088210b201b422088a7210820164280feffff0f83420888a72125201ba721092013a721102016a7210d410a21244100211d420021180c020b200241900f6a2001109b0320022d00900f4102460d2820024198096a200241ac0f6a28020036020020024180096a41106a200241a40f6a290200221337030020024180096a41086a2002419c0f6a290200220b370300200241f00b6a41086a200241c00c6a41086a290300370300200220022902940f221237038009200220022903c00c3703f00b200241b00f6a280200211020022802900f2106200229029409210a200228028c092114200241d80b6a41106a200241e00c6a41106a290200370300200241d80b6a41086a200241e00c6a41086a290200370300200220022902e00c3703d80b200241c00b6a41106a20024190066a41106a290300370300200241c00b6a41086a20024190066a41086a29030037030020022002290390063703c00b200241a80b6a41106a20024180086a41106a290200370300200241a80b6a41086a20024180086a41086a29020037030020022002290280083703a80b200241900b6a41106a200241800a6a41106a290300370300200241900b6a41086a200241800a6a41086a290300370300200220022903800a3703900b2012422088a72108200b4280feffff0f83420888a721252012a721092013a72111200ba7210d410b21244100210e4100211d0c010b200e200f411074722125200241f00b6a41086a200241800a6a41086a290300370300200241d80b6a41086a20024180086a41086a290300370300200241d80b6a41106a20024180086a41106a290300370300200241c00b6a41106a20024180096a41106a290300370300200241c00b6a41086a20024180096a41086a290300370300200220022903800a3703f00b20022002290380083703d80b20022002290380093703c00b200729020021192003290200211a200241900f6a41106a280200213d203b290300211b20022802940f213c20022802900f213b200241a80b6a41106a20024190066a41106a290300370300200241a80b6a41086a20024190066a41086a290300370300200241900b6a41086a2004290300370300200241900b6a41106a200529030037030020022002290390063703a80b200220022903e00c3703900b201842108620174208868420268421182023202472210f410221240b200241800b6a41086a2201200241f00b6a41086a290300370300200241e80a6a41086a2204200241d80b6a41086a290300370300200241e80a6a41106a2203200241d80b6a41106a290300370300200241d00a6a41086a2205200241c00b6a41086a290300370300200241d00a6a41106a2207200241c00b6a41106a290300370300200241b80a6a41106a2223200241a80b6a41106a290300370300200241b80a6a41086a223e200241a80b6a41086a290300370300200220022903f00b3703800b200220022903d80b3703e80a200220022903c00b3703d00a200220022903a80b3703b80a200241a00a6a41106a223f200241900b6a41106a290300370300200241a00a6a41086a2240200241900b6a41086a290300370300200220022903900b3703a00a2000410b6a200e4110763a00002000200e3b0009200041186a2025410874ad200dad42ff0183843e0200200041106a2008ad4220862009ad84370200200041c8006a2012370200200041c4006a201c360200200041c0006a2015360200200041386a2018422886201dad42ff018342208684200cad84370200200041306a200b3702002000412c6a2010360200200041246a200a370200200041206a20113602002000411c6a20143602002000410c6a2006360200200041086a20243a000020004117360200200041e8006a201f360200200041e4006a2020360200200020273a0063200020283a0062200020223a0061200041e0006a201e3a0000200041d0006a20022903800b370200200041d8006a2001290300370200200041fc006a2003290300370200200041f4006a2004290300370200200041ec006a20022903e80a3702002000418c016a202936020020004188016a202a3602002000202b3b0086012000202c3a00850120004184016a20213a0000200041a0016a200729030037020020004198016a200529030037020020004190016a20022903d00a370200200041b0016a202e360200200041ac016a202f360200200020303a00ab01200020313a00aa01200020323a00a901200041a8016a202d3a0000200041c4016a2023290300370200200041bc016a203e290300370200200041b4016a20022903b80a370200200041d4016a2036360200200041d0016a20373602002000203a3a00cf01200020393a00ce01200020383a00cd01200041cc016a20353a0000200041e8016a203f290300370200200041e0016a2040290300370200200041d8016a20022903a00a37020020004197026a200f4110763a00002000200f3b009502200041a4026a20163700002000419c026a20133700002000418c026a201937020020004184026a201a37020020004198026a203436000020004194026a20333a000020004180026a203d360200200041f8016a201b370200200041f4016a203c360200200041f0016a203b3602000c3c0b2006450d0820042d0001210520012003417e6a221d3602042001200441026a3602002005410b4b0d084107210f024002400240024002400240024020050e0c0001020304050d0608090a0b000b201d4110490d0e2004410a6a290000210a2004290002210b20012003416e6a3602042001200441126a3602004101210f420021120c0c0b201d4104490d0d2004280002210820012003417a6a3602042001200441066a3602004102210f0c0b0b41002105200241003a00800d2003417e6a2109417d21060240034020092005460d01200241e00c6a20056a200420056a220741026a2d00003a00002001200320066a3602042001200741036a3602002002200541016a22073a00800d2006417f6a21062007210520074120470d000b20024180096a41086a200241ef0c6a290000220a37030020024190066a41086a200241ff0c6a2d00003a00002002200241f70c6a29000037039006200320076b2203417e6a4110490d0d20022d00e20c210620022f01e00c210920022800e30c210820022900e70c210b200420076a2204410e6a280000210d200441066a2900002112200441026a280000211020012003416e6a22053602042001200441126a220736020020054110490d0d200920064110747222064110762114200641087621152004411a6a290000211b2007290000211620012003415e6a3602042001200441226a360200200229039006211320022d009806210c4103210f410021110c0b0b200541ff0171450d0c200241003a00800d0c0c0b4104210f201d4104490d0b2004280002210820012003417a6a3602042001200441066a3602000c090b200241e00c6a2001109b0320022d00e00c4102460d0a20072802002203450d0a200241ec0c6a290200210a200241800d6a280200210e200241fe0c6a2f01002111200241fd0c6a2d00002109200241fc0c6a2d0000210c200241f40c6a290200211320022902e40c210b20022802e00c2108200128020022052d0000210420012003417f6a3602042001200541016a360200200441014b0d0a410021060240024020040e020100010b410121060b200228029c06210d200229029406211220022802900621104105210f0c080b201d450d0920042d0002210520012003417d6a3602042001200441036a360200200541014b0d094200210b4106210f410021064200210a20050e020706070b41002105200241003a00800d2003417e6a2108417d2106024002400240034020082005460d01200241e00c6a20056a200420056a220941026a2d00003a00002001200320066a3602042001200941036a3602002002200541016a22093a00800d2006417f6a21062009210520094120470d000b200241880c6a200241ef0c6a290000370300200241800c6a41106a200241f70c6a290000370300200241980c6a200241ff0c6a2d00003a0000200220022900e70c3703800c200320096b2203417e6a4104490d0b20022d00e20c210520022f01e00c210620022800e30c2108200420096a220441026a280000210e20012003417a6a3602042001200441066a36020020024188066a200110e6012002280288060d0b2007280200200228028c062204490d0b2004417f4c0d0e20040d01410121100c020b200541ff0171450d0a200241003a00800d0c0a0b200410332210450d0120072802002004490d0820102001280200200410e8061a200128020422032004490d232001200320046b3602042001200128020020046a3602000b2010450d082004ad220a422086200a84211220024190066a41186a200241800c6a41186a2d0000220c3a00002006200541107472220641ffffff0771220141107621144108210f20014108762115200241800c6a41106a2903002113200241800c6a41086a290300210a20022903800c210b0c060b1036000b4109210f0c040b41002105200241003a00800d2003417e6a21092003417d6a2106024002400240034020092005460d01200241e00c6a20056a200420056a220741026a2d00003a0000200120063602042001200741036a3602002002200541016a22073a00800d2006417f6a21062007210520074120470d000b200241a80c6a200241ef0c6a290000370300200241a00c6a41106a200241f70c6a290000370300200241b80c6a200241ff0c6a2d00003a0000200220022900e70c3703a00c2003417e6a2007460d0820022d00e20c210520022f01e00c210920022800e30c2108200420076a220341026a2d00002104200120063602042001200341036a360200200441014b0d08200920054110747221064100210920040e020201020b200541ff0171450d07200241003a00800d0c070b410121090b200220063b0190062002200836009306200220064110763a009206200641ffffff07712201411076211420014108762115200241a00c6a41086a290300210a200241a00c6a41106a2903002113200241b80c6a2d0000210c20022903a00c210b410a210f0c030b41002105200241003a00800d2003417e6a21092003417d6a21060240034020092005460d01200241e00c6a20056a200420056a220741026a2d00003a0000200120063602042001200741036a3602002002200541016a22073a00800d2006417f6a21062007210520074120470d000b20024198096a200241ff0c6a2d00003a000020024180096a41106a200241f70c6a29000037030020024180096a41086a200241ef0c6a290000220a3703002003417e6a2007460d0520022d00e20c210320022f01e00c210520022800e30c210820022900e70c210b20024191096a29000021122002290089092113200420076a220441026a2d00002109200120063602042001200441036a360200200941034f0d052005200341107472220641087621152002200aa73a00c80c200220133700c90c20134238882012420886842113200641107621142012423888a7210c20022903c80c210a410b210f410021110c030b200541ff0171450d04200241003a00800d0c040b201d4104490d032004280002210820012003417a6a3602042001200441066a3602004200210b410c210f410021144200210a0c010b4200210b410121064200210a0b200020113b012a200020093a0029200020143a000b200020153a000a200020063a000920004118360200200041c8006a201b370200200041c0006a2016370200200041186a200a370200200041106a200b3702002000413c6a200d360200200041346a2012370200200041306a20103602002000412c6a200e360200200041286a200c3a0000200041206a20133702002000410c6a2008360200200041086a200f3a0000200041d0006a200241900f6a41e00110e8061a0c340b2010102f0b2000411b3602000c320b200241e00c6a2001109f03024020022d00e00c410a460d0020024190066a200241e00c6a41c40010e8061a20004119360200200041046a20024190066a41c40010e8061a200041c8006a200241900f6a41e80110e8061a0c320b2000411b3602000c310b02402006450d0020042d0001210520012003417e6a3602042001200441026a360200200541024b0d004101210402400240024020050e03020001020b200241e00c6a2001109b034102210420022d00e00c4102460d02200241f40c6a2902002112200241ec0c6a290200210b200241fc0c6a290200210a200241e80c6a280200210320022802e40c210620022802e00c21090c010b200241e00c6a2001109b0320022d00e00c4102460d01200728020022054110490d01200241f40c6a2902002112200241ec0c6a290200210b200241fc0c6a290200210a200241e00c6a41086a280200210320022802e40c210620022802e00c21092001280200220441086a2900002116200429000021132001200441106a3602002001200541706a220736020420074110490d01200441186a290000211a2004290010211b2001200541606a22073602042001200441206a36020020074104490d012004280020210820012005415c6a3602042001200441246a360200410321040b2000411a360200200041c8006a201a370200200041c0006a201b370200200041386a2016370200200041306a2013370200200041206a2012370200200041186a200b370200200041d0006a2008360200200041286a200a370200200041146a2003360200200041106a20063602002000410c6a2009360200200041086a2004360200200041d8006a200241900f6a41d80110e8061a0c310b2000411b3602000c300b103d000b20042003104b000b20042003104b000b20042003104b000b20032005104b000b20052009104b000b20042005104b000b20042003104b000b20042005104b000b20032005104b000b2004102f0b2000411b3602000c240b20042003104b000b20042003104b000b20042005104b000b20092003104b000b20082003104b000b20042003104b000b2009102f0c080b20032006104b000b20052008104b000b20042003104b000b20042006104b000b20042003104b000b2000411b3602000c170b2006102f0b2000411b3602000c150b2000411b3602000c140b200241c00b6a41086a2215200241d80b6a41086a2d00003a0000200241800a6a41086a221420024180086a41086a290300370300200241800a6a41106a221d20024180086a41106a290300370300200241800a6a41186a221c20024180086a41186a280200360200200220022903d80b3703c00b20022002290380083703800a200041186a200a370200200041106a20123702002000410c6a2009360200200020113b000a200020013a0009200041086a200c3a000020004111360200200041306a20053602002000412c6a20043602002000412a6a200e3b0100200020063a0029200041206a20022903c00b370200200041286a20152d00003a0000200041346a20022903800a3702002000413c6a2014290300370200200041c4006a201d290300370200200041cc006a201c28020036020020004188016a201b37020020004180016a201a370200200041fc006a2003360200200041f4006a2016201384370200200041f0006a2007360200200041ec006a2008360200200041ea006a200f3b0100200020103a0069200041e8006a200d3a0000200041e0006a2019370200200041d8006a2018370200200041d0006a200b37020020004190016a200241900f6a41a00110e8061a0c130b2004102f0b2000411b3602000c110b200241d80b6a41106a220d200241800a6a41106a290300370300200241d80b6a41086a220c200241800a6a41086a290300370300200220022903800a3703d80b200041216a200a370000200041196a200b3700002000412c6a20043602002000412a6a20063b0100200020073a0029200041186a20083a0000200041106a2005ad4220862009ad843702002000410c6a20033602002000200f3a000b200020103a000a200020013a0009200041086a200e3a000020004110360200200041306a20022903d80b370200200041386a200c290300370200200041c0006a200d290300370200200041c8006a200241900f6a41e80110e8061a0c100b200020063b0025200020073b00052000200b370015200041003b0046200041003a00452000200d3a002d200020083a00042000410d360200200041276a20064110763a0000200041076a20074110763a00002000411d6a2012370000200041c4006a201e3a0000200041c0006a201c3600002000413c6a201d360000200041386a2014360000200041346a2015360000200041306a20113600002000412e6a200c3b00002000412c6a20103a0000200041286a200e360000200041146a200f3a00002000410c6a200a370000200041086a2009360000200041c8006a200241900f6a41e80110e8061a0c0f0b2000411b3602000c0e0b200041003b012a200020083a0029200020103a00192000201d3a000b2000200d3a000a200020063a000920004109360200200041286a200a4220883c0000200041246a200a3e0200200041386a2012370200200041306a200b3702002000412c6a200c360200200041206a20153602002000411c6a200e3602002000411a6a200f3b0100200041186a20143a00002000410c6a2009360200200041086a20113a0000200041106a201ead422086201cad84370200200041c0006a200241900f6a41f00110e8061a0c0d0b2009102f0b2000411b3602000c0b0b4100211d420021124100210d420021134100210c0b410021144100210f41002108410021090c020b420021124100211d4100210d420021134100210f0c010b420021124100210d420021130b2000200c3a000b200020113a000a2000200e3a000920004107360200200041386a200b370200200041306a200a3702002000412c6a20153602002000410c6a2006360200200041086a20103a0000200041246a2012421886201342ffffff078384370200200041206a201d200d41ffffff077172360200200041186a2014ad422086200fad84370200200041106a2008ad4220862009ad84370200200041c0006a200241900f6a41f00110e8061a0c060b20004106360200200041e0006a2019370200200041d8006a201a370200200041c8006a2017370200200041c0006a2018370200200041386a2013370200200041306a2016370200200041206a200a370200200041186a200b370200200041d0006a201b370200200041286a2012370200200041146a2004360200200041106a20033602002000410c6a2005360200200041086a2001360200200041e8006a200241900f6a41c80110e8061a0c050b2004102f0b2000411b3602000c030b2006102f0b2000411b3602000c010b1038000b200241c0116a24000bce0201057f230041d0006b22022400024002404104102d2203450d00200341edde91e306360000410c210420034104410c10312205450d0020052001290000370004200241003a004820052106410021030340200241003a0008200241086a20062004410047220110e8061a024020040d00200241003a00080b20042001490d02200241286a20036a20022d00083a00002002200341016a22033a0048200420016b2104200620016a210620034120470d000b200241086a41186a2204200241286a41186a290300370300200241086a41106a2203200241286a41106a290300370300200241086a41086a2201200241286a41086a290300370300200220022903283703082005102f200041186a2004290300370000200041106a2003290300370000200041086a200129030037000020002002290308370000200241d0006a24000f0b1036000b20012004104b000bbf0908017f037e037f017e017f017e047f037e230041e0016b22032400200320023703582003200137035002400240200120028450450d0042002104420021050c010b2003200036021c200341206a2000200341d0006a2003411c6a108f02024020032903204201510d00200341c8006a2903002105200341c0006a290300210420032903284201520d01200341206a41106a290300210620034198016a200341206a41186a29030037030020034190016a2006370300200341e0006a41086a41003a0000200341e9006a2000290000370000200341f1006a200041086a290000370000200341f9006a200041106a29000037000020034181016a200041186a290000370000200341033a006041c8e1ca004100200341e0006a108c010c010b200341306a2903002105200329032821040b200341e0006a41186a22074200370300200341e0006a41106a22084200370300200341e0006a41086a220942003703002003420037036041e7a2ca00ad4280808080800184220a1001220b2900002106200341d0006a41086a2200200b41086a29000037030020032006370350200b102f200920002903003703002003200329035037036041ecb5c600ad4280808080d00184220c1001220b29000021062000200b41086a29000037030020032006370350200b102f200820032903502206370300200341206a41086a220d2009290300370300200341206a41106a220e2006370300200341206a41186a220f2000290300370300200320032903603703202003200341206a4120109c01200220057d2001200454ad7d200520027d2004200154ad7d200420015820052002582005200251220b1b22101b2111200120047d200420017d20101b2112200341106a2903004200200328020022101b21062003290308420020101b21130240024020042001562005200256200b1b0d0020074200370300200842003703002009420037030020034200370360200a1001220b29000021012000200b41086a29000037030020032001370350200b102f2009200029030037030020032003290350370360200c1001220b29000021012000200b41086a29000037030020032001370350200b102f20082003290350370000200841086a2000290300370000200d2009290300370300200e2008290300370300200f20072903003703002003200329036037032020034200200620117d2013201254ad7d2201201320127d2202201356200120065620012006511b22001b37036820034200200220001b370360200341e0006a21000c010b20074200370300200842003703002009420037030020034200370360200a1001220b29000021012000200b41086a29000037030020032001370350200b102f2009200029030037030020032003290350370360200c1001220b29000021012000200b41086a29000037030020032001370350200b102f20082003290350370000200841086a2000290300370000200d2009290300370300200e2008290300370300200f2007290300370300200320032903603703202003427f200620117c201320127c22022013542200ad7c22012000200120065420012006511b22001b3703682003427f200220001b370360200341e0006a21000b200341206aad42808080808004842000ad42808080808002841004200341e0016a24000bbe0303027f037e027f230041c0006b22022400419298ca00ad4280808080900184100122032900002104200241086a200341086a290000370300200220043703002003102f418a93c200ad4280808080b00184100122032900002104200241106a41086a200341086a290000370300200220043703102003102f02404120102d2203450d0020032001290000370000200341186a200141186a290000370000200341106a200141106a290000370000200341086a200141086a2900003700002003ad4280808080800484100322012900002104200141086a2900002105200141106a2900002106200241206a41186a2207200141186a290000370300200241206a41106a22082006370300200241206a41086a2005370300200220043703202001102f2003102f41c000102d2203450d00200320022903003700002003200229031037001020032002290320370020200042c0808080800837020420002003360200200341086a200241086a290300370000200341186a200241106a41086a290300370000200341286a200241206a41086a290300370000200341306a2008290300370000200341386a2007290300370000200241c0006a24000f0b1036000b130020004117360204200041cca8c2003602000bf50905027f017e027f027e057f230041b0016b22022400419298ca00ad4280808080900184100122032900002104200241c0006a41086a2205200341086a290000370300200220043703402003102f41ce97c200ad4280808080800284100122032900002104200241e8006a41086a2206200341086a290000370300200220043703682003102f20022001360208200241086aad4280808080c00084100322032900002104200341086a2900002107200341106a290000210820024188016a41186a2201200341186a29000037030020024188016a41106a2209200837030020024188016a41086a220a200737030020022004370388012003102f024041c000102d220b450d00200b2002290340370000200b2002290368370010200b200229038801370020200b41086a2005290300370000200b41186a2006290300370000200b41286a200a290300370000200b41306a2009290300370000200b41386a2001290300370000200241c00036022c2002200b360228200241306a200bad42808080808008841002107302400240200228023022050d00410321030c010b2002280234210a02400240200241386a280200220c4104490d002005280000210941002103200241003a00a801200c417c6a21060240034020062003460d0120024188016a20036a200520036a41046a2d00003a00002002200341016a22013a00a8012001210320014120470d000b200241e8006a41186a20024188016a41186a290300370300200241e8006a41106a20024188016a41106a290300370300200241e8006a41086a20024188016a41086a2903003703002002200229038801370368200c417c6a2001460d01200520016a220641046a2d0000220341034f0d01200c20016b417b6a4104490d01200241c0006a41086a200241e8006a41086a2903002204370300200241c0006a41106a200241e8006a41106a2903002207370300200241c0006a41186a200241e8006a41186a29030022083703002002413c6a41026a220c200241e4006a41026a220d2d00003a0000200241086a41086a2004370300200241086a41106a2007370300200241086a41186a2008370300200220022903682204370340200220022f00643b013c20022004370308200641056a2800002101200d200c2d00003a0000200220022f013c3b01640c020b200341ff0171450d00200241003a00a8010b20024100360270200242013703682002410b3602442002200241286a3602402002200241e8006a3602082002419c016a41013602002002420137028c01200241b885c700360288012002200241c0006a36029801200241086a41d8dbc10020024188016a103c1a200235027042208620023502688410080240200228026c450d002002280268102f0b410321030b200a450d002005102f0b20024188016a41086a2205200241086a41086a29030037030020024188016a41106a2206200241086a41106a29030037030020024188016a41186a220a200241086a41186a290300370300200241e8006a41026a220c200241e4006a41026a2d00003a00002002200229030837038801200220022f01643b0168024020034103460d0020002001360204200020093602002000200229038801370208200020022f01683b0029200041106a2005290300370200200041186a2006290300370200200041206a200a2903003702002000412b6a200c2d00003a00000b200020033a0028200b102f200241b0016a24000f0b1036000b34002000419298ca0036020420004100360200200041146a4111360200200041106a4190efc200360200200041086a42093702000ba80101057f230041206b22022400200241186a22034200370300200241106a22044200370300200241086a220542003703002002420037030002404120102d2206450d0020062002290300370000200641186a2003290300370000200641106a2004290300370000200641086a20052903003700002006412041c00010312206450d00200042c0808080900437020420002006360200200641003a0020200241206a24000f0b1036000b4d01027f230041106b2202240002404104102d22030d001036000b2002420437020420022003360200410020021069200041086a200228020836020020002002290300370200200241106a24000b130020004107360204200041a490c3003602000b2e01017f02404104102d22020d001036000b20004284808080c00037020420002002360200200241809c313600000b2e01017f02404104102d22020d001036000b20004284808080c0003702042000200236020020024180a3053600000b3a01017f02404110102d22020d001036000b20024200370008200242808084fea6dee111370000200042908080808002370204200020023602000b2e01017f02404104102d22020d001036000b20004284808080c0003702042000200236020020024180de343600000bde4201057f230041106b2202240002400240024020002d0000417f6a220341164b0d000240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020030e17000102030405060708090a0b0c0d0e0f10111213141516000b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d19200341017422052004200520044b1b22054100480d190240024020030d002005102d21040c010b200128020020032005103121040b2004450d1820012004360200200141046a2005360200200141086a28020021030b200141086a2206200341016a360200200420036a41003a00004120102d2203450d1720032000290001370000200341186a200041196a290000370000200341106a200041116a290000370000200341086a200041096a29000037000002400240200141046a2802002205200628020022046b4120490d00200128020021050c010b200441206a22062004490d19200541017422042006200420064b1b22044100480d190240024020050d002004102d21050c010b200128020020052004103121050b2005450d1820012005360200200141046a2004360200200141086a28020021040b200141086a200441206a360200200520046a220441186a200341186a290000370000200441106a200341106a290000370000200441086a200341086a290000370000200420032900003700002003102f2002200041286a360208200241086a200110c2020c160b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d18200341017422052004200520044b1b22054100480d180240024020030d002005102d21040c010b200128020020032005103121040b2004450d1720012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41013a0000200041046a20011095020c150b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d17200341017422052004200520044b1b22054100480d170240024020030d002005102d21040c010b200128020020032005103121040b2004450d1620012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41023a0000200041046a200110950220002d00012104200041026a2d0000210602400240200141046a28020020052802002200460d00200128020021030c010b200041016a22032000490d17200041017422052003200520034b1b22054100480d170240024020000d002005102d21030c010b200128020020002005103121030b2003450d1620012003360200200141046a2005360200200141086a28020021000b200141086a200041016a360200200320006a20044100474107742006723a00000c140b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d16200341017422052004200520044b1b22054100480d160240024020030d002005102d21040c010b200128020020032005103121040b2004450d1520012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41033a0000200041046a200110950220002d00012104200041026a2d0000210602400240200141046a28020020052802002200460d00200128020021030c010b200041016a22032000490d16200041017422052003200520034b1b22054100480d160240024020000d002005102d21030c010b200128020020002005103121030b2003450d1520012003360200200141046a2005360200200141086a28020021000b200141086a200041016a360200200320006a20044100474107742006723a00000c130b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d15200341017422052004200520044b1b22054100480d150240024020030d002005102d21040c010b200128020020032005103121040b2004450d1420012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41043a00002000280204210402400240200141046a2802002203200528020022006b4104490d00200128020021030c010b200041046a22052000490d15200341017422002005200020054b1b22004100480d150240024020030d002000102d21030c010b200128020020032000103121030b2003450d1420012003360200200141046a2000360200200141086a28020021000b200141086a200041046a360200200320006a20043600000c120b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d14200341017422052004200520044b1b22054100480d140240024020030d002005102d21040c010b200128020020032005103121040b2004450d1320012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41053a00004120102d2203450d1220032000290001370000200341186a200041196a290000370000200341106a200041116a290000370000200341086a200041096a29000037000002400240200141046a2802002204200528020022006b4120490d00200128020021040c010b200041206a22052000490d14200441017422002005200020054b1b22004100480d140240024020040d002000102d21040c010b200128020020042000103121040b2004450d1320012004360200200141046a2000360200200141086a28020021000b200141086a200041206a360200200420006a220141186a200341186a290000370000200141106a200341106a290000370000200141086a200341086a290000370000200120032900003700002003102f0c110b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d13200341017422052004200520044b1b22054100480d130240024020030d002005102d21040c010b200128020020032005103121040b2004450d1220012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41063a00004120102d2203450d1120032000290001370000200341186a200041196a290000370000200341106a200041116a290000370000200341086a200041096a29000037000002400240200141046a2802002204200528020022006b4120490d00200128020021040c010b200041206a22052000490d13200441017422002005200020054b1b22004100480d130240024020040d002000102d21040c010b200128020020042000103121040b2004450d1220012004360200200141046a2000360200200141086a28020021000b200141086a200041206a360200200420006a220141186a200341186a290000370000200141106a200341106a290000370000200141086a200341086a290000370000200120032900003700002003102f0c100b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d12200341017422052004200520044b1b22054100480d120240024020030d002005102d21040c010b200128020020032005103121040b2004450d1120012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41073a00004120102d2203450d1020032000290001370000200341186a200041196a290000370000200341106a200041116a290000370000200341086a200041096a29000037000002400240200141046a2802002204200528020022006b4120490d00200128020021040c010b200041206a22052000490d12200441017422002005200020054b1b22004100480d120240024020040d002000102d21040c010b200128020020042000103121040b2004450d1120012004360200200141046a2000360200200141086a28020021000b200141086a200041206a360200200420006a220141186a200341186a290000370000200141106a200341106a290000370000200141086a200341086a290000370000200120032900003700002003102f0c0f0b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d11200341017422052004200520044b1b22054100480d110240024020030d002005102d21040c010b200128020020032005103121040b2004450d1020012004360200200141046a2005360200200141086a28020021030b200141086a2206200341016a360200200420036a41083a00004120102d2203450d0f20032000290001370000200341186a200041196a290000370000200341106a200041116a290000370000200341086a200041096a29000037000002400240200141046a2802002205200628020022046b4120490d00200128020021050c010b200441206a22062004490d11200541017422042006200420064b1b22044100480d110240024020050d002004102d21050c010b200128020020052004103121050b2005450d1020012005360200200141046a2004360200200141086a28020021040b200141086a2206200441206a360200200520046a220441186a200341186a290000370000200441106a200341106a290000370000200441086a200341086a290000370000200420032900003700002003102f2000280224210502400240200141046a2802002204200628020022036b4104490d00200128020021040c010b200341046a22062003490d11200441017422032006200320064b1b22034100480d110240024020040d002003102d21040c010b200128020020042003103121040b2004450d1020012004360200200141046a2003360200200141086a28020021030b200141086a2206200341046a360200200420036a20053600002000280228210402400240200141046a2802002203200628020022006b4104490d00200128020021030c010b200041046a22052000490d11200341017422002005200020054b1b22004100480d110240024020030d002000102d21030c010b200128020020032000103121030b2003450d1020012003360200200141046a2000360200200141086a28020021000b200141086a200041046a360200200320006a20043600000c0e0b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d10200341017422052004200520044b1b22054100480d100240024020030d002005102d21040c010b200128020020032005103121040b2004450d0f20012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41093a00004120102d2203450d0e20032000290001370000200341186a200041196a290000370000200341106a200041116a290000370000200341086a200041096a29000037000002400240200141046a2802002204200528020022006b4120490d00200128020021040c010b200041206a22052000490d10200441017422002005200020054b1b22004100480d100240024020040d002000102d21040c010b200128020020042000103121040b2004450d0f20012004360200200141046a2000360200200141086a28020021000b200141086a200041206a360200200420006a220141186a200341186a290000370000200141106a200341106a290000370000200141086a200341086a290000370000200120032900003700002003102f0c0d0b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d0f200341017422052004200520044b1b22054100480d0f0240024020030d002005102d21040c010b200128020020032005103121040b2004450d0e20012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a410a3a0000200041046a20011095020c0c0b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d0e200341017422052004200520044b1b22054100480d0e0240024020030d002005102d21040c010b200128020020032005103121040b2004450d0d20012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a410b3a00002000280204210402400240200141046a2802002203200528020022006b4104490d00200128020021030c010b200041046a22052000490d0e200341017422002005200020054b1b22004100480d0e0240024020030d002000102d21030c010b200128020020032000103121030b2003450d0d20012003360200200141046a2000360200200141086a28020021000b200141086a200041046a360200200320006a20043600000c0b0b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d0d200341017422052004200520044b1b22054100480d0d0240024020030d002005102d21040c010b200128020020032005103121040b2004450d0c20012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a410c3a000002400240200141046a2802002204200528020022036b4120490d00200128020021040c010b200341206a22052003490d0d200441017422032005200320054b1b22034100480d0d0240024020040d002003102d21040c010b200128020020042003103121040b2004450d0c20012004360200200141046a2003360200200141086a28020021030b200141086a200341206a360200200420036a220141186a200041196a290000370000200141106a200041116a290000370000200141086a200041096a290000370000200120002900013700000c0a0b02400240200141046a280200200141086a2802002200460d00200128020021030c010b200041016a22032000490d0c200041017422042003200420034b1b22044100480d0c0240024020000d002004102d21030c010b200128020020002004103121030b2003450d0b20012003360200200141046a2004360200200141086a28020021000b200141086a200041016a360200200320006a410d3a00000c090b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d0b200341017422052004200520044b1b22054100480d0b0240024020030d002005102d21040c010b200128020020032005103121040b2004450d0a20012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a410e3a000002400240200141046a2802002204200528020022036b4120490d00200128020021040c010b200341206a22052003490d0b200441017422032005200320054b1b22034100480d0b0240024020040d002003102d21040c010b200128020020042003103121040b2004450d0a20012004360200200141046a2003360200200141086a28020021030b200141086a200341206a360200200420036a220141186a200041196a290000370000200141106a200041116a290000370000200141086a200041096a290000370000200120002900013700000c080b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d0a200341017422052004200520044b1b22054100480d0a0240024020030d002005102d21040c010b200128020020032005103121040b2004450d0920012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a410f3a000002400240200141046a2802002204200528020022036b4120490d00200128020021040c010b200341206a22052003490d0a200441017422032005200320054b1b22034100480d0a0240024020040d002003102d21040c010b200128020020042003103121040b2004450d0920012004360200200141046a2003360200200141086a28020021030b200141086a200341206a360200200420036a220341186a200041196a290000370000200341106a200041116a290000370000200341086a200041096a2900003700002003200029000137000020002d0021220041064b0d070240024002400240024002400240024020000e0700010203040506000b410021040c060b410121040c050b410221040c040b410321040c030b410421040c020b410521040c010b410621040b200220043a000f02400240200141046a280200200141086a2802002200460d00200128020021030c010b200041016a22032000490d0a200041017422052003200520034b1b22054100480d0a0240024020000d002005102d21030c010b200128020020002005103121030b2003450d0920012003360200200141046a2005360200200141086a28020021000b200141086a200041016a360200200320006a20043a00000c070b02400240200141046a280200200141086a2802002200460d00200128020021030c010b200041016a22032000490d09200041017422042003200420034b1b22044100480d090240024020000d002004102d21030c010b200128020020002004103121030b2003450d0820012003360200200141046a2004360200200141086a28020021000b200141086a200041016a360200200320006a41103a00000c060b02400240200141046a280200200141086a2802002200460d00200128020021030c010b200041016a22032000490d08200041017422042003200420034b1b22044100480d080240024020000d002004102d21030c010b200128020020002004103121030b2003450d0720012003360200200141046a2004360200200141086a28020021000b200141086a200041016a360200200320006a41113a00000c050b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d07200341017422052004200520044b1b22054100480d070240024020030d002005102d21040c010b200128020020032005103121040b2004450d0620012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41123a0000200028020421062000410c6a28020022002001106902400240200141046a2802002204200528020022036b2000490d00200128020021040c010b200320006a22052003490d07200441017422032005200320054b1b22034100480d070240024020040d002003102d21040c010b200128020020042003103121040b2004450d0620012004360200200141046a2003360200200141086a28020021030b200141086a200320006a360200200420036a2006200010e8061a0c040b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d06200341017422052004200520044b1b22054100480d060240024020030d002005102d21040c010b200128020020032005103121040b2004450d0520012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41133a0000200028020421062000410c6a28020022002001106902400240200141046a2802002204200528020022036b2000490d00200128020021040c010b200320006a22052003490d06200441017422032005200320054b1b22034100480d060240024020040d002003102d21040c010b200128020020042003103121040b2004450d0520012004360200200141046a2003360200200141086a28020021030b200141086a200320006a360200200420036a2006200010e8061a0c030b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d05200341017422052004200520044b1b22054100480d050240024020030d002005102d21040c010b200128020020032005103121040b2004450d0420012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41143a00004120102d2203450d0320032000290001370000200341186a200041196a290000370000200341106a200041116a290000370000200341086a200041096a29000037000002400240200141046a2802002204200528020022006b4120490d00200128020021040c010b200041206a22052000490d05200441017422002005200020054b1b22004100480d050240024020040d002000102d21040c010b200128020020042000103121040b2004450d0420012004360200200141046a2000360200200141086a28020021000b200141086a200041206a360200200420006a220141186a200341186a290000370000200141106a200341106a290000370000200141086a200341086a290000370000200120032900003700002003102f0c020b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d04200341017422052004200520044b1b22054100480d040240024020030d002005102d21040c010b200128020020032005103121040b2004450d0320012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41153a000002400240200141046a2802002204200528020022036b4120490d00200128020021040c010b200341206a22052003490d04200441017422032005200320054b1b22034100480d040240024020040d002003102d21040c010b200128020020042003103121040b2004450d0320012004360200200141046a2003360200200141086a28020021030b200141086a200341206a360200200420036a220141186a200041196a290000370000200141106a200041116a290000370000200141086a200041096a290000370000200120002900013700000c010b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d03200341017422052004200520044b1b22054100480d030240024020030d002005102d21040c010b200128020020032005103121040b2004450d0220012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41163a000002400240200141046a2802002204200528020022036b4120490d00200128020021040c010b200341206a22052003490d03200441017422032005200320054b1b22034100480d030240024020040d002003102d21040c010b200128020020042003103121040b2004450d0220012004360200200141046a2003360200200141086a28020021030b200141086a200341206a360200200420036a220141186a200041196a290000370000200141106a200041116a290000370000200141086a200041096a290000370000200120002900013700000b200241106a24000f0b1036000b1038000bea0903017f027e057f230041e0006b220224000240024002400240024002400240024020002802002200290300220342c000544100200041086a29030022045022051b0d0020034280800154410020051b0d01200342808080800454410020051b0d02411020047920037942c0007c20044200521ba741037622066b41044f0d0341d6bcc600413641f8b4ca001039000b02400240200141046a280200200141086a2802002200460d00200128020021050c010b200041016a22052000490d06200041017422062005200620054b1b22064100480d060240024020000d002006102d21050c010b200128020020002006103121050b2005450d0520012005360200200141046a2006360200200141086a28020021000b200141086a200041016a360200200520006a2003a74102743a00000c030b02400240200141046a2802002205200141086a28020022006b4102490d00200128020021050c010b200041026a22062000490d05200541017422002006200020064b1b22004100480d050240024020050d002000102d21050c010b200128020020052000103121050b2005450d0420012005360200200141046a2000360200200141086a28020021000b200141086a200041026a360200200520006a2003a74102744101723b00000c020b02400240200141046a2802002205200141086a28020022006b4104490d00200128020021050c010b200041046a22062000490d04200541017422002006200020064b1b22004100480d040240024020050d002000102d21050c010b200128020020052000103121050b2005450d0320012005360200200141046a2000360200200141086a28020021000b200141086a200041046a360200200520006a2003a74102744102723600000c010b02400240200141046a280200200141086a2802002205460d00200128020021070c010b200541016a22082005490d03200541017422072008200720084b1b22084100480d030240024020050d002008102d21070c010b200128020020052008103121070b2007450d0220012007360200200141046a2008360200200141086a28020021050b200141086a2208200541016a360200200720056a413320064102746b3a0000200029030021032002200041086a290300220437030820022003370300200641706a2105200141046a2107034002400240200728020020082802002200460d00200128020021060c010b200041016a22062000490d04200041017422092006200920064b1b22094100480d040240024020000d002009102d21060c010b200128020020002009103121060b2006450d032001200636020020072009360200200828020021000b2008200041016a360200200620006a2003a73a00002003420888200442388684210320044208882104200541016a22002005492106200021052006450d000b2002200337030020022004370308200320048450450d030b200241e0006a24000f0b1036000b1038000b200241286a41146a4109360200200241346a412a360200200241106a41146a410336020020022002360240200241e0bdc600360244200241c8006a41146a410036020020024203370214200241b4e0ca003602102002412a36022c200241c8e1ca003602582002420137024c20024198bdc6003602482002200241286a3602202002200241c8006a3602382002200241c4006a3602302002200241c0006a360228200241106a41e8d8c9001043000ba7ed0205027f037e127f057e287f230022032104200341a0076b41607122032400024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020012d00000e18000102030405060708090a0b0c0d0e0f1011121314151617000b200341b4036a4101360200200342013702a403200341b4d8c9003602a003200341043602a406200341fcdbc9003602a0062003200341a0066a3602b003200341a0036a41e8d8c9001043000b200141306a2903002105200141286a2903002106200341c0026a41186a200141196a290000370300200341c0026a41106a200141116a290000370300200341c0026a41086a200141096a290000370300200320012900013703c0022002411a6a2901002107200241196a2d00002108200241186a2d00002109200241166a2f0100210a024020022d0000450d00200320073702a403200320083a00a303200320093a00a2032003200a3b01a0030c420b200241156a2d0000210b200241146a2d0000210c200241126a2f0100210d200241116a2d0000210e200241106a2d0000210f2002410e6a2f010021102002410d6a2d000021112002410c6a2d000021122002410a6a2f01002113200241096a2d00002114200241086a2d00002115200241066a2f01002116200241056a2d00002117200241046a2d00002118200241026a2f0100211920022d00012102200320073703a003200241ff01714101470d412003200737039005200320083a008f05200320093a008e052003200a3b018c052003200b3a008b052003200c3a008a052003200d3b0188052003200e3a0087052003200f3a008605200320103b018405200320113a008305200320123a008205200320133b018005200320143a00ff04200320153a00fe04200320163b01fc04200320173a00fb04200320183a00fa04200320193b01f804200642808084fea6dee1115441002005501b0d172003200537038002200320063703f8012003200341f8046a3602d0012003200341f8046a3602d8042003200341d8046a3602a8032003200341d0016a3602a4032003200341f8016a3602a003200341a0066a200341f8046a200341a0036a1094010240024020032802a0064101470d00200320032900a5063703a0032003200341ac066a2800003600a70320032d00a40621020c010b41042102200341a0066a41086a2903004201520d00200341a0066a41106a290300210720032802d8042108200341d8036a200341a0066a41186a290300370300200341d0036a2007370300200341a0036a41086a41003a0000200341a9036a2008290000370000200341b1036a200841086a290000370000200341b9036a200841106a290000370000200341c1036a200841186a290000370000200341033a00a00341c8e1ca004100200341a0036a108c010b200320032903a0033703c005200320032800a7033600c7050240200241ff01714104470d00419298ca00ad4280808080900184220710012202290000211a2002290008211b2002102f41f497ca00ad4280808080f00184221c10012202290000211d2002290008211e2002102f2003201e3703c8012003201d3703c0012003201b3703b8012003201a3703b001200341086a200341b0016a4120109501200328020c210820032802082109200710012202290000211a2002290008211b2002102f201c10012202290000211c2002290008211d2002102f2003201d3703c8012003201c3703c0012003201b3703b8012003201a3703b00120032008410020091b220a41016a3602a003200341b0016aad4280808080800484221a200341a0036aad4280808080c00084221b10042003200341f8046a3602a0062007100122022d000f210820022d000e210920022f000c210b20022d000b210c20022d000a210d20022f0008210e20022d0007210f20022d0006211020022f0004211120022d0003211220022d0002211320022f000021142002102f41b6a8c200ad428080808090018410012202290008210720022d0007211520022d0006211620022f0004211720022d0003211820022d0002211920022f0000211f2002102f2003200a3602a003201b10032202290018211b20022d0017212020022d0016212120022f0014212220022d0013212320022d0012212420022f0010212520022d000f212620022d000e212720022f000c212820022d000b212920022d000a212a20022f0008212b20022d0007212c20022d0006212d20022f0004212e20022d0003212f20022d0002213020022f000021312002102f41c000102d2202450d412002201b370038200220203a0037200220213a0036200220223b0034200220233a0033200220243a0032200220253b0030200220263a002f200220273a002e200220283b002c200220293a002b2002202a3a002a2002202b3b00282002202c3a00272002202d3a00262002202e3b00242002202f3a0023200220303a0022200220313b002020022007370018200220153a0017200220163a0016200220173b0014200220183a0013200220193a00122002201f3b0010200220083a000f200220093a000e2002200b3b000c2002200c3a000b2002200d3a000a2002200e3b00082002200f3a0007200220103a0006200220113b0004200220123a0003200220133a0002200220143b00004118102d2208450d4120082006370000200820053700082003429880808080023702a403200320083602a0034101200341a0036a106920032802a006210820032802a00321090240024020032802a403220c20032802a803220b6b411f4d0d00200c210d0c010b200b41206a220d200b490d3a200c410174220e200d200e200d4b1b220d4100480d3a02400240200c0d00200d102d21090c010b2009200c200d103121090b2009450d420b2009200b6a220c41086a200841086a290000370000200c41106a200841106a290000370000200c41186a200841186a2900003700002003200b41206a220b3602a803200c20082900003700002002ad4280808080800884200bad4220862009ad8410040240200d450d002009102f0b2002102f200341ac066a200341c0026a41086a290300370200200341b4066a200341c0026a41106a290300370200200341bc066a200341c0026a41186a290300370200200341cc066a200341f8046a41086a290300370200200341d4066a200341f8046a41106a290300370200200341dc066a200341f8046a41186a2903003702002003200a3602a006200320032903c0023702a406200320032903f8043702c4062003200341a0066a36029007419298ca00ad42808080809001841001220229000021072002290008211b2002102f41aba8c200ad4280808080b0018410012202290000211c2002290008211d2002102f2003201d3703c8012003201c3703c0012003201b3703b801200320073703b001200341f8016a201a100210730240024020032802f801450d0020034190016a41086a200341f8016a41086a280200360200200320032903f801370390010c010b4104102d2202450d42200342043702a403200320023602a0034100200341a0036a106920034198016a20032802a803360200200320032903a003370390010b200341d0016a41086a20034190016a41086a280200220236020020032003290390013703d001024002402002450d00200341a0036a20032802d00122082002410110c40220032802a0034101470d0120032802d401450d412008102f0c410b4101200341d0016a1069200328029007200341d0016a107f0c3e0b20032802a403210b0240200341ac036a2802002208200341a0036a41086a2802002209460d002002200820096b6a220241046a220c417f4c0d3902400240200c0d004101210d0c010b200c102d220d450d430b2003200c3602dc042003200d3602d804200320023602e0042003200341d8046a3602a003200b200341a0036a200810c50220022008490d1a20032802e004220b2002490d1b20032802d801220b2009490d1c20032802d804210c20032802d001210d2003200220086b2202360280062003200b20096b220b360290062002200b470d1d200c20086a200d20096a200210e8061a200328029007200341d8046a107f20032802e004210820032802dc04210920032802d804210220032802d401450d3f20032802d001102f0c3f0b2003200341d0016a3602a003200b200341a0036a200910c502200328029007200341d0016a107f0c3d0b200020023a0000200020032903c005370001200041086a20032800c705360000410121080c420b2002411a6a2901002107200241196a2d00002108200241186a2d00002109200241166a2f0100210a024020022d0000450d00200320073702a403200320083a00a303200320093a00a2032003200a3b01a0030c3b0b200141046a280200210b200241156a2d0000210c200241146a2d0000210d200241126a2f0100210e200241116a2d0000210f200241106a2d000021102002410e6a2f010021112002410d6a2d000021122002410c6a2d000021132002410a6a2f01002114200241096a2d00002115200241086a2d00002116200241066a2f01002117200241056a2d00002118200241046a2d00002119200241026a2f0100211f20022d00012102200320073703a003200241ff01714101470d3a2003200737039005200320083a008f05200320093a008e052003200a3b018c052003200c3a008b052003200d3a008a052003200e3b0188052003200f3a008705200320103a008605200320113b018405200320123a008305200320133a008205200320143b018005200320153a00ff04200320163a00fe04200320173b01fc04200320183a00fb04200320193a00fa042003201f3b01f804200341a0036a200b10a802024002400240024020032802b0032208450d00200341bc036a280200210c200341b8036a280200210a20032802b403210220032903a00321072003200341a8036a29030022053703c802200320073703c0022003200341f8046a3602d8044104210902402007200584500d002003200341f8046a3602f8012003200341f8016a3602a8032003200341d8046a3602a4032003200341c0026a3602a003200341a0066a200341f8046a200341a0036a109401024020032802a0064101470d00200320032900a5063703a0032003200341ac066a2800003600a70320032d00a40621090c010b41042109200341a0066a41086a2903004201520d00200341a0066a41106a290300210620032802f801210d200341d8036a200341a0066a41186a290300370300200341d0036a2006370300200341a0036a41086a41003a0000200341a9036a200d290000370000200341b1036a200d41086a290000370000200341b9036a200d41106a290000370000200341c1036a200d41186a290000370000200341033a00a00341c8e1ca004100200341a0036a108c010b200320032903a0033703c005200320032800a7033600c705200941ff01714104470d03200341b0016a41186a2209200341f8046a41186a290300370300200341b0016a41106a220d200341f8046a41106a290300370300200341b0016a41086a220e200341f8046a41086a290300370300200320032903f8043703b001200a2002460d012002210f200a21020c020b20004183143b0100200041086a410f360200200041046a41b1d5c700360200200041026a41013a00000c3c0b200241016a220f2002490d3920024101742210200f2010200f4b1b220f41ffffff3f71200f470d39200f410574220f4100480d390240024020020d00200f102d21080c010b20082002410574200f103121080b2008450d41200f410576210f0b200820024105746a220220032903b001370000200241186a2009290300370000200241106a200d290300370000200241086a200e290300370000200341a0036a41186a200a41016a360200200341b4036a200f360200200320053703a803200320073703a0032003200c3602bc03200320083602b003419298ca00ad4280808080900184100122022d000f210820022d000e210920022f000c210a20022d000b210c20022d000a210d20022f0008210e20022d0007210f20022d0006211020022f0004211120022d0003211220022d0002211320022f000021142002102f41b6a8c200ad428080808090018410012202290008210720022d0007211520022d0006211620022f0004211720022d0003211820022d0002211920022f0000211f2002102f2003200b3602a006200341a0066aad4280808080c0008410032202290018210520022d0017210b20022d0016212020022f0014212120022d0013212220022d0012212320022f0010212420022d000f212520022d000e212620022f000c212720022d000b212820022d000a212920022f0008212a20022d0007212b20022d0006212c20022f0004212d20022d0003212e20022d0002212f20022f000021302002102f41c000102d2202450d40200220053700382002200b3a0037200220203a0036200220213b0034200220223a0033200220233a0032200220243b0030200220253a002f200220263a002e200220273b002c200220283a002b200220293a002a2002202a3b00282002202b3a00272002202c3a00262002202d3b00242002202e3a00232002202f3a0022200220303b002020022007370018200220153a0017200220163a0016200220173b0014200220183a0013200220193a00122002201f3b0010200220083a000f200220093a000e2002200a3b000c2002200c3a000b2002200d3a000a2002200e3b00082002200f3a0007200220103a0006200220113b0004200220123a0003200220133a0002200220143b0000200341c0003602a406200320023602a006200341a0036a200341a0066a10b8012002102f024020032802b403450d0020032802b003102f0b200041043a0000410121080c420b200020093a0000200020032903c005370001200041086a20032800c7053600002002450d392008102f410121080c410b024020022d00000d004101210820022d000141ff01714101470d00200141026a2d00002109200141046a280200210a20012d0001210b2002411a6a2901002107200241196a2d0000210c200241186a2d0000210d200241166a2f0100210e200241156a2d0000210f200241146a2d00002110200241126a2f01002111200241116a2d00002112200241106a2d000021132002410e6a2f010021142002410d6a2d000021152002410c6a2d000021162002410a6a2f01002117200241086a2d00002118200241066a2f01002119200241056a2d0000211f200241046a2d00002120200241026a2f010021212003200241096a2d00003a00b701200320183a00b601200320193b01b4012003201f3a00b301200320203a00b201200320213b01b001200320123a00bf01200320133a00be01200320143b01bc01200320153a00bb01200320163a00ba01200320173b01b8012003200c3a00c7012003200d3a00c6012003200e3b01c4012003200f3a00c301200320103a00c201200320113b01c001200320073703c801200341b8036a2007370300200341b0036a20032903c001370300200341a8036a20032903b801370300200320032903b0013703a0032000200341a0036a200a200b41ff0171410047200910c6020c410b200041023a0000410121080c400b200241196a2d00002109200241186a2d0000210a200241166a2f0100210b2002411a6a2901002107024020022d0000450d00200320073702a403200320093a00a3032003200a3a00a2032003200b3b01a0030c370b200241156a3100002105200241146a3100002106200241126a330100211a200241116a2d0000210c200241106a2d0000210d2002410e6a2f0100210e2002410d6a2d0000210f2002410c6a2d000021102002410a6a2f01002111200241096a2d00002112200241086a2d00002113200241066a2f01002114200241056a2d00002115200241046a2d00002116200241026a2f01002117200141026a2d00002118200141046a280200211920022d0001210220012d0001211f200320073703a003200241ff01714101470d36419298ca00ad4280808080900184100122022d000f212020022d000e212120022f000c212220022d000b212320022d000a212420022f0008212520022d0007212620022d0006212720022f0004212820022d0003212920022d0002212a20022f0000212b2002102f41d49ac800ad4280808080d0008410012202290008211b20022d0007212c20022d0006212d20022f0004212e20022d0003212f20022d0002213020022f000021312002102f4120102d2208450d3d2008200e3b000c200820113b0008200820143b0004200820173b0000200820073700182008200c3a000f2008200f3a000b200820123a0007200820153a00032008410e6a200d3a00002008410a6a20103a0000200841066a20133a0000200841026a20163a000020082009ad42ff0183423886200aad42ff018342308684200bad42ffff038342208684200542188684200642108684201a843700102008ad428080808080048410032202290018210720022d0017210920022d0016210a20022f0014210b20022d0013210c20022d0012210d20022f0010210e20022d000f210f20022d000e211020022f000c211120022d000b211220022d000a211320022f0008211420022d0007211520022d0006211620022f0004211720022d0003213220022d0002213320022f000021342002102f2008102f41c000102d2202450d3d20022007370038200220093a00372002200a3a00362002200b3b00342002200c3a00332002200d3a00322002200e3b00302002200f3a002f200220103a002e200220113b002c200220123a002b200220133a002a200220143b0028200220153a0027200220163a0026200220173b0024200220323a0023200220333a0022200220343b00202002201b3700182002202c3a00172002202d3a00162002202e3b00142002202f3a0013200220303a0012200220313b0010200220203a000f200220213a000e200220223b000c200220233a000b200220243a000a200220253b0008200220263a0007200220273a0006200220283b0004200220293a00032002202a3a00022002202b3b0000200341a0036a200210c7020240024020032d00a00322094102460d00200341b8036a2d0000210a200341b7036a2d0000210b200341b5036a2f0000210c200341b4036a2d0000210d200341b3036a2d0000210e200341b1036a2f0000210f200341b0036a2d00002110200341af036a2d00002111200341ad036a2f00002112200341ac036a2d00002113200341ab036a2d00002114200341a9036a2f00002115200341a8036a2d0000211620032d00a703211720032f00a503212020032d00a403212120032d00a30321222003200341b9036a29000022073703c8012003200a3a00c7012003200b3a00c6012003200c3b01c4012003200d3a00c3012003200e3a00c2012003200f3b01c001200320103a00bf01200320113a00be01200320123b01bc01200320133a00bb01200320143a00ba01200320153b01b801200320163a00b701200320173a00b601200320203b01b401200320213a00b301200320223a00b201200320032f00a10322233b01b0012002102f4101210820094101470d01200320073703b8032003200a3a00b7032003200b3a00b6032003200c3b01b4032003200d3a00b3032003200e3a00b2032003200f3b01b003200320103a00af03200320113a00ae03200320123b01ac03200320133a00ab03200320143a00aa03200320153b01a803200320163a00a703200320173a00a603200320203b01a403200320213a00a303200320223a00a203200320233a00a003200320234108763a00a1032000200341a0036a2019201f41ff0171410047201810c6020c410b2002102f0b20004183143b0100200041086a4108360200200041046a419795c200360200200041026a41023a0000410121080c3f0b0240024020022d0000417f6a220841024b0d00200141046a2802002109024020080e03000102000b200241046a2d00000d00200241086a28020041036c2002410c6a2802004101744f0d010b200041023a0000410121080c3f0b200341f8046a200910b80220032d00a0054103460d18200341a0036a410a6a200341f8046a41086a290300370100200341a0036a41126a200341f8046a41106a290300370100200341a0036a411a6a200341f8046a41186a290300370100200341a0036a41226a200341f8046a41206a290300370100200341a0036a412a6a200341f8046a41286a280200360100200320032903f8043701a203200341a0066a41086a200341a0036a41086a220a290100370300200341a0066a41106a200341a0036a41106a220b290100370300200341a0066a41186a200341a0036a41186a220c290100370300200341a0066a41206a200341a0036a41206a290100370300200341a0066a41266a200341a0036a41266a290100370100200320032901a0033703a006200341c0026a41286a200341a0066a412a6a280100360200200341c0026a41206a2202200341a0066a41226a290100370300200341c0026a41186a2208200341a0066a411a6a290100370300200341c0026a41106a220d200341a0066a41126a290100370300200341c0026a41086a220e200341a0066a410a6a290100370300200320032901a2063703c002200341b0016a41186a2002290300370300200341b0016a41106a2008290300370300200341b0016a41086a200d2903003703002003200e2903003703b001200c2002290300370300200b2008290300370300200a200d2903003703002003200e2903003703a003419298ca00ad4280808080900184100122022d000f210d20022d000e210e20022f000c210f20022d000b211020022d000a211120022f0008211220022d0007211320022d0006211420022f0004211520022d0003211620022d0002211720022f000021182002102f41fc80c300ad4280808080d0018410012202290008210720022d0007211920022d0006211f20022f0004212020022d0003212120022d0002212220022f000021232002102f4120102d2208450d3c200820032903a003370000200841186a200c290300370000200841106a200b290300370000200841086a200a2903003700002008ad428080808080048410032202290018210520022d0017210a20022d0016210b20022f0014210c20022d0013212420022d0012212520022f0010212620022d000f212720022d000e212820022f000c212920022d000b212a20022d000a212b20022f0008212c20022d0007212d20022d0006212e20022f0004212f20022d0003213020022d0002213120022f000021322002102f2008102f41c000102d2202450d3c200220053700382002200a3a00372002200b3a00362002200c3b0034200220243a0033200220253a0032200220263b0030200220273a002f200220283a002e200220293b002c2002202a3a002b2002202b3a002a2002202c3b00282002202d3a00272002202e3a00262002202f3b0024200220303a0023200220313a0022200220323b002020022007370018200220193a00172002201f3a0016200220203b0014200220213a0013200220223a0012200220233b00102002200d3a000f2002200e3a000e2002200f3b000c200220103a000b200220113a000a200220123b0008200220133a0007200220143a0006200220153b0004200220163a0003200220173a0002200220183b0000200341106a200241c00041c8e1ca004100410010b5012003280210210a2002102f41012108200a4101460d12200341a0036a41186a220a200341b0016a41186a290300370300200341a0036a41106a220b200341b0016a41106a290300370300200341a0036a41086a220c200341b0016a41086a290300370300200320032903b0013703a003419298ca00ad4280808080900184100122022d000f210d20022d000e210e20022f000c210f20022d000b211020022d000a211120022f0008211220022d0007211320022d0006211420022f0004211520022d0003211620022d0002211720022f000021182002102f41fc80c300ad4280808080d0018410012202290008210720022d0007211920022d0006211f20022f0004212020022d0003212120022d0002212220022f000021232002102f4120102d2208450d3c200820032903a003370000200841186a200a290300370000200841106a200b290300370000200841086a200c2903003700002008ad428080808080048410032202290018210520022d0017210a20022d0016210b20022f0014210c20022d0013212420022d0012212520022f0010212620022d000f212720022d000e212820022f000c212920022d000b212a20022d000a212b20022f0008212c20022d0007212d20022d0006212e20022f0004212f20022d0003213020022d0002213120022f000021322002102f2008102f41c000102d2202450d3c200220053700382002200a3a00372002200b3a00362002200c3b0034200220243a0033200220253a0032200220263b0030200220273a002f200220283a002e200220293b002c2002202a3a002b2002202b3a002a2002202c3b00282002202d3a00272002202e3a00262002202f3b0024200220303a0023200220313a0022200220323b002020022007370018200220193a00172002201f3a0016200220203b0014200220213a0013200220223a0012200220233b00102002200d3a000f2002200e3a000e2002200f3b000c200220103a000b200220113a000a200220123b0008200220133a0007200220143a0006200220153b0004200220163a0003200220173a0002200220183b000041012108200341013a00a0032002ad4280808080800884200341a0036aad4280808080108410042002102f200910af02200041043a00000c3e0b20034190056a200141196a29000037030020034188056a200141116a29000037030020034180056a200141096a290000370300200320012900013703f8040240024020022d0000417f6a220841024b0d00024020080e03000102000b200241086a2802004101742002410c6a280200490d00200241046a28020041ff0171450d010b200041023a0000410121080c3e0b419298ca00ad4280808080900184221b100122022900002107200229000821052002102f41bfa8c200ad4280808080c001841001220229000021062002290008211a2002102f2003201a3703c801200320063703c001200320053703b801200320073703b001200341206a200341b0016a412041c8e1ca004100410010b50102400240024020032802204101460d00200341a0036a41186a2209200341f8046a41186a290300370300200341a0036a41106a220a200341f8046a41106a290300370300200341a0036a41086a220b200341f8046a41086a290300370300200320032903f8043703a003201b100122022d000f210c20022d000e210d20022f000c210e20022d000b210f20022d000a211020022f0008211120022d0007211220022d0006211320022f0004211420022d0003211520022d0002211620022f000021172002102f41b080c300ad428080808090018410012202290008210720022d0007211820022d0006211920022f0004211f20022d0003212020022d0002212120022f000021222002102f4120102d2208450d3e200820032903a003370000200841186a2009290300370000200841106a200a290300370000200841086a200b2903003700002008ad428080808080048410032202290018210520022d0017210920022d0016210a20022f0014210b20022d0013212320022d0012212420022f0010212520022d000f212620022d000e212720022f000c212820022d000b212920022d000a212a20022f0008212b20022d0007212c20022d0006212d20022f0004212e20022d0003212f20022d0002213020022f000021312002102f2008102f41c000102d2202450d3e20022005370038200220093a00372002200a3a00362002200b3b0034200220233a0033200220243a0032200220253b0030200220263a002f200220273a002e200220283b002c200220293a002b2002202a3a002a2002202b3b00282002202c3a00272002202d3a00262002202e3b00242002202f3a0023200220303a0022200220313b002020022007370018200220183a0017200220193a00162002201f3b0014200220203a0013200220213a0012200220223b00102002200c3a000f2002200d3a000e2002200e3b000c2002200f3a000b200220103a000a200220113b0008200220123a0007200220133a0006200220143b0004200220153a0003200220163a0002200220173b0000200341a0066a200210c80220032802a40622090d012002102f0c020b20004183143b0100200041086a4111360200200041046a41c0d5c700360200200041026a41053a0000410121080c3f0b20032903a806210720032802a006210a2002102f200341a0036a41186a4200370300200341a0036a41106a220b4200370300200341a0036a41086a22024200370300200342003703a003418de6c300ad4280808080e000841001220829000021052002200841086a290000370300200320053703a0032008102f419ce6c300ad4280808080e00084100122082900002105200341d8046a41086a220c200841086a290000370300200320053703d8042008102f200b20032903d8042205370300200341a0066a41086a2002290300370300200341a0066a41106a2005370300200341a0066a41186a200c290300370300200320032903a0033703a006200341186a200341a0066a41201095010240200328021c410020032802181b200a4f0d0020004183143b0100200041086a4113360200200041046a41ed94c200360200200041026a41063a00002007a7450d372009102f410121080c3f0b2007a7450d002009102f0b200341a0036a41186a200341f8046a41186a290300370300200341a0036a41106a200341f8046a41106a290300370300200341a0036a41086a200341f8046a41086a290300370300200320032903f8043703a003200341003a00c003419298ca00ad4280808080900184100122022900002107200229000821052002102f41bfa8c200ad4280808080c001841001220229000021062002290008211a2002102f2003201a3703c801200320063703c001200320053703b801200320073703b001200341203602a4062003200341b0016a3602a006200341a0036a200341a0066a108401200041043a0000410121080c3d0b200341b8066a200141196a290000370300200341b0066a200141116a290000370300200341a0066a41086a200141096a290000370300200320012900013703a0060240024020022d0000417f6a220841024b0d00024020080e03000102000b200241046a2d00000d00200241086a2802004102742002410c6a28020041036c4f0d010b200041023a0000410121080c3d0b200341a0036a41186a200341a0066a41186a290300370300200341a0036a41106a200341a0066a41106a290300370300200341a0036a41086a200341a0066a41086a290300370300200320032903a0063703a003200341023a00c003419298ca00ad4280808080900184100122022900002107200229000821052002102f41bfa8c200ad4280808080c001841001220229000021062002290008211a2002102f2003201a3703c801200320063703c001200320053703b801200320073703b001200341203602fc042003200341b0016a3602f804200341a0036a200341f8046a108401200041043a0000410121080c3c0b200341b8066a200141196a290000370300200341b0066a200141116a290000370300200341a8066a200141096a290000370300200320012900013703a0060240024020022d0000417f6a220841024b0d00024020080e03000102000b200241086a2802002002410c6a280200490d00200241046a28020041ff0171450d010b200041023a0000410121080c3c0b200341a0036a41186a200341a0066a41186a290300370300200341a0036a41106a200341a0066a41106a290300370300200341a0036a41086a200341a0066a41086a290300370300200320032903a0063703a00341012108200341013a00c003419298ca00ad4280808080900184100122022900002107200229000821052002102f41bfa8c200ad4280808080c001841001220229000021062002290008211a2002102f2003201a3703c801200320063703c001200320053703b801200320073703b001200341203602fc042003200341b0016a3602f804200341a0036a200341f8046a108401200041043a00000c3b0b200141286a280200210b200141246a280200210a200341d8026a200141196a290000370300200341d0026a200141116a290000370300200341c0026a41086a200141096a290000370300200320012900013703c002410121080240024020022d0000417e6a220941014b0d00024020090e020002000b200241046a2d00000d00200241086a28020041036c2002410c6a2802004101744f0d010b200041023a00000c3b0b419298ca00ad4280808080900184100122022900002107200229000821052002102f41bfa8c200ad4280808080c001841001220229000021062002290008211a2002102f2003201a3703c801200320063703c001200320053703b801200320073703b001200341a0036a200341b0016a10a502024002400240024020032d00c00322024103460d0020032f01a003210820032901a203210720032901aa03210520032801b203210920032f01b603210c200320032903b803370390052003200c3b018e052003200936018a052003200537018205200320073701fa04200320083a00f804200320084108763a00f90420020d014111210341dc94c2002102410721080c020b20004183143b0100200041086a410f360200200041046a41b1d5c70036020041012108200041026a41013a00000c3d0b200341c0026a200341f8046a412010ea06450d01410b210341d194c2002102410821080b20004183143b0100200041086a2003360200200041046a2002360200200041026a20083a0000410121080c3b0b419298ca00ad4280808080900184100122082900002107200829000821052008102f41bfa8c200ad4280808080c001841001220829000021062008290008211a2008102f2003201a3703c801200320063703c001200320053703b801200320073703b001200341b0016aad42808080808004841005200341a0036a41186a220d4200370300200341a0036a41106a22094200370300200341a0036a41086a22084200370300200342003703a003418de6c300ad4280808080e000841001220c29000021072008200c41086a290000370300200320073703a003200c102f419ce6c300ad4280808080e000841001220c2900002107200341d8046a41086a220e200c41086a290000370300200320073703d804200c102f200920032903d8042207370300200341a0066a41086a2008290300370300200341a0066a41106a2007370300200341a0066a41186a200e290300370300200320032903a0033703a006200341286a200341a0066a4120109501200328022c210c2003280228210e200d200341c0026a41186a2903003703002009200341c0026a41106a2903003703002008200341c0026a41086a290300370300200320032903c0023703a003200c4100200e1b200a4180a305200a4180a3054b1b6a200341a0036a2002200b10a602200041043a0000410121080c3a0b200341d8026a200141196a290000370300200341c0026a41106a200141116a290000370300200341c0026a41086a200141096a290000370300200320012900013703c00220022d00004102470d14200241236a2d00002109200241216a2f0000210a2002411f6a2d0000210b2002411d6a2f0000210c2002410f6a2d0000210d2002410d6a2f0000210e2002410b6a2d0000210f200241096a2f00002110200241076a2d00002111200241056a2f00002112200241246a3502002105200241206a3100002106200241116a2900002107200241106a2d000021132002410c6a2d00002114200241086a2d00002115200241046a2d000021082003200241196a2800003602a803200320073703a00320084101470d142003200e200d4110747222023b018005200341f8046a410a6a20024110763a000020032007a722023b01840520034186056a20024110763a0000200320032902a40337038805200320133a008305200320143a00ff04200320153a00fb04200320074218883c00870520032010200f4110747222023b01fc04200320024110763a00fe042003201220114110747222023b01f804200320024110763a00fa0420032006421886200c200b41107472ad42ffffff078384200a200941107472ad42ffffff07834220868420054238868437039005419298ca00ad4280808080900184100122022900002107200229000821052002102f41bfa8c200ad4280808080c001841001220229000021062002290008211a2002102f2003201a3703c801200320063703c001200320053703b801200320073703b001200341a0036a200341b0016a10a5020240024020032d00c0034103460d0020032903a003210720032903a803210520032903b0032106200320032903b8033703b803200320063703b003200320053703a803200320073703a003200341c0026a200341a0036a412010ea06450d0120004183143b0100200041086a410f360200200041046a41b1d5c700360200200041026a41013a0000410121080c3b0b20004183143b0100200041086a410a360200200041046a41c794c200360200200041026a41093a0000410121080c3a0b419298ca00ad4280808080900184100122022d000f210920022d000e210a20022f000c210b20022d000b210c20022d000a210d20022f0008210e20022d0007210f20022d0006211020022f0004211120022d0003211220022d0002211320022f000021142002102f41b080c300ad428080808090018410012202290008210720022d0007211520022d0006211620022f0004211720022d0003211820022d0002211920022f0000211f2002102f4120102d2208450d37200820032903c002370000200841186a200341c0026a41186a290300370000200841106a200341c0026a41106a290300370000200841086a200341c0026a41086a2903003700002008ad428080808080048410032202290018210520022d0017212020022d0016212120022f0014212220022d0013212320022d0012212420022f0010212520022d000f212620022d000e212720022f000c212820022d000b212920022d000a212a20022f0008212b20022d0007212c20022d0006212d20022f0004212e20022d0003212f20022d0002213020022f000021312002102f2008102f41c000102d2202450d3720022005370038200220203a0037200220213a0036200220223b0034200220233a0033200220243a0032200220253b0030200220263a002f200220273a002e200220283b002c200220293a002b2002202a3a002a2002202b3b00282002202c3a00272002202d3a00262002202e3b00242002202f3a0023200220303a0022200220313b002020022007370018200220153a0017200220163a0016200220173b0014200220183a0013200220193a00122002201f3b0010200220093a000f2002200a3a000e2002200b3b000c2002200c3a000b2002200d3a000a2002200e3b00082002200f3a0007200220103a0006200220113b0004200220123a0003200220133a0002200220143b0000200341a0036a200210c80220032903a803210720032802a803211120032802a40321102002102f41002109024020100d0041012110410021114100210b0c2d0b2007a7210b024002402007422088a7220c41014b0d0041002102200c0e022e012e0b200c210841002102034020022008410176220920026a220a2010200a4105746a200341f8046a412010ea0641004a1b2102200820096b220841014b0d000b0b0240201020024105746a200341f8046a412010ea062208450d00200341a0036a41186a200341f8046a41186a290300370300200341a0036a41106a200341f8046a41106a290300370300200341a0036a41086a200341f8046a41086a290300370300200320032903f8043703a0032008411f7620026a220a200c4b0d16200341a0036a2108200c21090c2e0b20004183143b0100200041086a410d360200200041046a41ba94c200360200200041026a410a3a00002011450d312010102f410121080c390b024020022d000120022d0000410047720d00200141046a28020010af02200041043a0000410121080c390b200041023a0000410121080c380b024020022d000120022d0000410047720d00200141046a280200210c200341a0036a41186a220f4200370300200341a0036a41106a220e4200370300200341a0036a41086a220d4200370300200342003703a003419298ca00ad4280808080900184100122022900002107200d200241086a290000370300200320073703a0032002102f418ca8c200ad4280808080d00184100122022900002107200341d8046a41086a2208200241086a290000370300200320073703d8042002102f200e20032903d8042207370300200341a0066a41086a200d290300370300200341a0066a41106a2007370300200341a0066a41186a2008290300370300200320032903a0033703a006200341a0036a200341a0066a10c90220032802a0032202410420021b211920032902a403420020021b221b422088a7220b450d294100210820192102410021090340024002400240200241246a280200200c460d0020080d01410021080c020b200841016a21080c010b200920086b220a200b4f0d17200341a0036a41206a22102002200841586c6a220a41206a2211290200370300200f200a41186a2212290200370300200e200a41106a2213290200370300200d200a41086a22142902003703002003200a2902003703a003200241206a22152902002107200241186a22162902002105200241106a22172902002106200241086a2218290200211a200a20022902003702002014201a370200201320063702002012200537020020112007370200201520102903003702002016200f2903003702002017200e2903003702002018200d290300370200200220032903a0033702000b200241286a2102200b200941016a2209460d290c000b0b200041023a0000410121080c370b200341f8016a41186a200141196a290000370300200341f8016a41106a200141116a290000370300200341f8016a41086a200141096a290000370300200320012900013703f801200241196a2d00002108200241186a2d00002109200241166a2f0100210a2002411a6a2901002107024020022d0000450d00200320073702a403200320083a00a303200320093a00a2032003200a3b01a0030c260b200241026a2f0100210b200241046a2d0000210c200241056a2d0000210d200241066a2f0100210e200241086a2d0000210f200241096a2d000021102002410a6a2f010021112002410c6a2d000021122002410d6a2d000021132002410e6a2f01002114200241106a2d00002115200241116a2d00002116200241126a3301002105200241146a3100002106200241156a310000211a20022d00012102200320073703a003200241ff01714101470d25200341be016a20153a0000200341ba016a20123a0000200320143b01bc01200320113b01b8012003200f3a00b6012003200e3b01b4012003200c3a00b2012003200b3b01b001200320073703c801200320163a00bf01200320133a00bb01200320103a00b7012003200d3a00b30120032008ad42ff01834238862009ad42ff018342308684200aad42ffff038342208684201a421886842006421086842005843703c001419298ca00ad4280808080900184100122022d000f210920022d000e210a20022f000c210b20022d000b210c20022d000a210d20022f0008210e20022d0007210f20022d0006211020022f0004211120022d0003211220022d0002211320022f000021142002102f41d49ac800ad4280808080d0008410012202290008210720022d0007211520022d0006211620022f0004211720022d0003211820022d0002211920022f0000211f2002102f4120102d2208450d34200820032903f801370000200841186a200341f8016a41186a290300370000200841106a200341f8016a41106a290300370000200841086a200341f8016a41086a2903003700002008ad428080808080048410032202290018210520022d0017212020022d0016212120022f0014212220022d0013212320022d0012212420022f0010212520022d000f212620022d000e212720022f000c212820022d000b212920022d000a212a20022f0008212b20022d0007212c20022d0006212d20022f0004212e20022d0003212f20022d0002213020022f000021312002102f2008102f41c000102d2202450d3420022005370038200220203a0037200220213a0036200220223b0034200220233a0033200220243a0032200220253b0030200220263a002f200220273a002e200220283b002c200220293a002b2002202a3a002a2002202b3b00282002202c3a00272002202d3a00262002202e3b00242002202f3a0023200220303a0022200220313b002020022007370018200220153a0017200220163a0016200220173b0014200220183a0013200220193a00122002201f3b0010200220093a000f2002200a3a000e2002200b3b000c2002200c3a000b2002200d3a000a2002200e3b00082002200f3a0007200220103a0006200220113b0004200220123a0003200220133a0002200220143b0000200341a0036a200210c7020240024020032d00a00322084102470d00200341023a00c0020c010b200341b9036a2900002107200320032900a1033700c102200320083a00c002200320073e00d902200320074230883c00df02200320074220883d00dd022003200341a9036a2900003700c9022003200341b1036a2900003700d1022007423888a721080b200341f8046a41186a200341b0016a41186a290300370300200341f8046a41106a200341b0016a41106a290300370300200341f8046a41086a200341b0016a41086a290300370300200320032903b0013703f804200341a0036a41186a20032903d802370300200341a0036a41206a20083a0000200341023a00a006200320032903d0023703b003200320032903c8023703a803200320032903c00222073703a003200320032903b8063703d802200320032903b0063703d002200320032903a8063703c802200320032903a0063703c002024002400240024002402007a7410371417f6a220841014b0d0020080e020102010b200341a0036a410172200341f8046a412010ea060d02200320032903f8043700c102200341013a00c00220032003418f056a2900003700d802200320034188056a2903003700d102200320034180056a2903003700c90220032d0097052109200320032903d8023703b803200320032903d0023703b003200320032903c8023703a803200320032903c00222073703a003024002402007a7220841ff01714102470d002002ad428080808080088410050c010b200320083a00e0054101102d220a450d39200a20083a0000200a4101412110312208450d39200820032900a103370001200820093a0020200841186a20032900b803370000200841116a20032900b103370000200841096a20032900a9033700002002ad42808080808008842008ad428080808090048410042008102f0b2002102f200041043a0000410121080c3a0b2002102f4185ccc7002103410c2102410b21080c020b2002102f41a793c200210341072102411821080c010b2002102f419e93c200210341092102411921080b20004183143b0100200041086a2002360200200041046a2003360200200041026a20083a0000410121080c360b2002411a6a2901002107200241196a2d00002108200241186a2d00002109200241166a2f0100210a200241156a2d0000210b200241146a2d0000210c200241126a2f0100210d200241116a2d0000210e200241106a2d0000210f2002410e6a2f010021102002410d6a2d000021112002410c6a2d000021122002410a6a2f01002113200241096a2d00002114200241086a2d00002115200241066a2f01002116200241056a2d00002117200241046a2d00002118200241026a2f010021190240024020022d0000450d00200320073702a403200320083a00a303200320093a00a2032003200a3b01a003410121020c010b20022d00012102200320073703a003200241ff017141014721020b200320073703c801200320083a00c701200320093a00c6012003200a3b01c4012003200b3a00c3012003200c3a00c2012003200d3b01c0012003200e3a00bf012003200f3a00be01200320103b01bc01200320113a00bb01200320123a00ba01200320133b01b801200320143a00b701200320153a00b601200320163b01b401200320173a00b301200320183a00b201200320193b01b001024020020d00200341a0066a41186a2209200341b0016a41186a290300370300200341a0066a41106a220a200341b0016a41106a290300370300200341a0066a41086a220b200341b0016a41086a290300370300200320032903b0013703a006419298ca00ad4280808080900184100122022d000f210c20022d000e210d20022f000c210e20022d000b210f20022d000a211020022f0008211120022d0007211220022d0006211320022f0004211420022d0003211520022d0002211620022f000021172002102f41d49ac800ad4280808080d0008410012202290008210720022d0007211820022d0006211920022f0004211f20022d0003212020022d0002212120022f000021222002102f4120102d2208450d34200820032903a006370000200841186a2009290300370000200841106a200a290300370000200841086a200b2903003700002008ad428080808080048410032202290018210520022d0017210920022d0016210a20022f0014210b20022d0013212320022d0012212420022f0010212520022d000f212620022d000e212720022f000c212820022d000b212920022d000a212a20022f0008212b20022d0007212c20022d0006212d20022f0004212e20022d0003212f20022d0002213020022f000021312002102f2008102f41c000102d2202450d3420022005370038200220093a00372002200a3a00362002200b3b0034200220233a0033200220243a0032200220253b0030200220263a002f200220273a002e200220283b002c200220293a002b2002202a3a002a2002202b3b00282002202c3a00272002202d3a00262002202e3b00242002202f3a0023200220303a0022200220313b002020022007370018200220183a0017200220193a00162002201f3b0014200220203a0013200220213a0012200220223b00102002200c3a000f2002200d3a000e2002200e3b000c2002200f3a000b200220103a000a200220113b0008200220123a0007200220133a0006200220143b0004200220153a0003200220163a0002200220173b0000200341a0036a200210c702024020032d00a0034102460d00200341a0066a10ca020b2002ad428080808080088410052002102f200041043a0000410121080c360b200041023a0000410121080c350b200341f8016a41186a200141196a290000370300200341f8016a41106a200141116a290000370300200341f8016a41086a200141096a290000370300200320012900013703f801200241196a2d00002108200241186a2d00002109200241166a2f0100210a2002411a6a2901002107024020022d0000450d00200320073702a403200320083a00a303200320093a00a2032003200a3b01a0030c230b200241026a2f0100210b200241046a2d0000210c200241056a2d0000210d200241066a2f0100210e200241086a2d0000210f200241096a2d000021102002410a6a2f010021112002410c6a2d000021122002410d6a2d000021132002410e6a2f01002114200241106a2d00002115200241116a2d00002116200241126a3301002105200241146a3100002106200241156a310000211a20022d00012102200320073703a003200241ff01714101470d22200341be016a20153a0000200341ba016a20123a0000200320143b01bc01200320113b01b8012003200f3a00b6012003200e3b01b4012003200c3a00b2012003200b3b01b001200320073703c801200320163a00bf01200320133a00bb01200320103a00b7012003200d3a00b30120032008ad42ff01834238862009ad42ff018342308684200aad42ffff038342208684201a421886842006421086842005843703c001419298ca00ad4280808080900184100122022d000f210920022d000e210a20022f000c210b20022d000b210c20022d000a210d20022f0008210e20022d0007210f20022d0006211020022f0004211120022d0003211220022d0002211320022f000021142002102f41d49ac800ad4280808080d0008410012202290008210720022d0007211520022d0006211620022f0004211720022d0003211820022d0002211920022f0000211f2002102f4120102d2208450d32200820032903f801370000200841186a200341f8016a41186a290300370000200841106a200341f8016a41106a290300370000200841086a200341f8016a41086a2903003700002008ad428080808080048410032202290018210520022d0017212020022d0016212120022f0014212220022d0013212320022d0012212420022f0010212520022d000f212620022d000e212720022f000c212820022d000b212920022d000a212a20022f0008212b20022d0007212c20022d0006212d20022f0004212e20022d0003212f20022d0002213020022f000021312002102f2008102f41c000102d2202450d3220022005370038200220203a0037200220213a0036200220223b0034200220233a0033200220243a0032200220253b0030200220263a002f200220273a002e200220283b002c200220293a002b2002202a3a002a2002202b3b00282002202c3a00272002202d3a00262002202e3b00242002202f3a0023200220303a0022200220313b002020022007370018200220153a0017200220163a0016200220173b0014200220183a0013200220193a00122002201f3b0010200220093a000f2002200a3a000e2002200b3b000c2002200c3a000b2002200d3a000a2002200e3b00082002200f3a0007200220103a0006200220113b0004200220123a0003200220133a0002200220143b0000200341a0036a200210c7020240024020032d00a00322084102470d00200341023a00c0020c010b200341b9036a2900002107200320032900a1033700c102200320083a00c002200320073e00d902200320074230883c00df02200320074220883d00dd022003200341a9036a2900003700c9022003200341b1036a2900003700d1022007423888a721080b200341f8046a41186a200341b0016a41186a290300370300200341f8046a41106a200341b0016a41106a290300370300200341f8046a41086a200341b0016a41086a290300370300200320032903b0013703f804200341a0036a41186a20032903d802370300200341a0036a41206a20083a0000200341023a00a006200320032903d0023703b003200320032903c8023703a803200320032903c00222073703a003200320032903b8063703d802200320032903b0063703d002200320032903a8063703c802200320032903a0063703c0020240024002402007a741ff01714101470d00200341a0036a410172200341f8046a412010ea060d01200320032903f8043700c102200341003a00c00220032003418f056a2900003700d802200320034188056a2903003700d102200320034180056a2903003700c90220032d0097052109200320032903d8023703b803200320032903d0023703b003200320032903c8023703a803200320032903c00222073703a003024002402007a7220841ff01714102470d002002ad428080808080088410050c010b200320083a00e0054101102d220a450d36200a20083a0000200a4101412110312208450d36200820032900a103370001200820093a0020200841186a20032900b803370000200841116a20032900b103370000200841096a20032900a9033700002002ad42808080808008842008ad428080808090048410042008102f0b2002102f200041043a0000410121080c370b2002102f419593c200210341092102411a21080c010b2002102f41b094c2002103410a2102410c21080b20004183143b0100200041086a2002360200200041046a2003360200200041026a20083a0000410121080c340b200141216a2d0000210b20034190016a41186a200141196a29000037030020034190016a41106a200141116a29000037030020034190016a41086a200141096a29000037030020032001290001370390012002411a6a2901002107200241196a2d00002108200241186a2d00002109200241166a2f0100210a024020022d0000450d00200320073702a403200320083a00a303200320093a00a2032003200a3b01a0030c210b200241156a2d0000210c200241146a2d0000210d200241126a2f0100210e200241116a2d0000210f200241106a2d000021102002410e6a2f010021112002410d6a2d000021122002410c6a2d000021132002410a6a2f01002114200241096a2d00002115200241086a2d00002116200241066a2f01002117200241056a2d00002118200241046a2d00002119200241026a2f0100211f20022d00012102200320073703a003200241ff01714101470d20200320073703e801200320083a00e701200320093a00e6012003200a3b01e4012003200c3a00e3012003200d3a00e2012003200e3b01e0012003200f3a00df01200320103a00de01200320113b01dc01200320123a00db01200320133a00da01200320143b01d801200320153a00d701200320163a00d601200320173b01d401200320183a00d301200320193a00d2012003201f3b01d001419298ca00ad4280808080900184100122022900002107200341a0066a41086a200241086a290000370300200320073703a0062002102f418a93c200ad4280808080b00184100122022900002107200341a0036a41086a200241086a290000370300200320073703a0032002102f4120102d2202450d31200220032903d001370000200241186a200341d0016a41186a290300370000200241106a200341d0016a41106a290300370000200241086a200341d0016a41086a2903003700002002ad4280808080800484100322082900002107200841086a2900002105200841106a2900002106200341b0016a41186a2209200841186a290000370300200341b0016a41106a220a2006370300200341b0016a41086a2005370300200320073703b0012008102f2002102f41c000102d2202450d31200220032903a006370000200241086a200341a0066a41086a290300370000200220032903a003370010200241186a200341a0036a41086a290300370000200220032903b001370020200241286a200341b0016a41086a290300370000200241306a200a290300370000200241386a2009290300370000200341a0066a200241c00010cb02024020032d00c10622084102470d002003200341d0016a36029007419298ca00ad4280808080900184100122082900002107200341e0056a41086a2209200841086a290000370300200320073703e0052008102f41f992c200ad4280808080900284100122082900002107200341f0056a41086a220a200841086a290000370300200320073703f0052008102f200341c0056a41086a2009290300370300200341d8056a200a290300370300200320032903e0053703c005200320032903f0053703d005200341a0036a200341c0056a108801200341f8016a20032802a003220820032802a80310ad02024020032802a403450d002008102f0b200341d0056a2108024020032d00f8010d00419298ca00ad4280808080900184100122092900002107200341e0056a41086a220a200941086a290000370300200320073703e0052009102f41f992c200ad4280808080900284100122092900002107200341f0056a41086a220c200941086a290000370300200320073703f0052009102f200341c0056a41086a200a290300370300200820032903f005370000200841086a200c290300370000200320032903e0053703c005200341a0036a200341c0056a10880120032802a003210920033502a80321074120102d2208450d33200820032903d001370000200841186a200341d0016a41186a290300370000200841106a200341d0016a41106a290300370000200841086a200341d0016a41086a29030037000020074220862009ad842008ad428080808080048410042008102f20032802a403450d202009102f0c200b200341d8046a41186a20034191026a290000370300200341d8046a41106a20034189026a290000370300200341d8046a41086a200341f8016a41096a290000370300200320032900f9013703d804200341b0016a200341d8046a10b602200341a0036a20032802b001220a20032802b801220c10cb02024020032d00c1034102470d00200341003602c802200342013703c002200341c0056a41146a4129360200200341cc056a410b360200200341093602e4052003419298ca003602e0052003410b3602c4052003410b3602f4052003418a93c2003602f0052003200341b0016a3602d0052003200341f0056a3602c8052003200341e0056a3602c0052003200341c0026a36028006200341f8046a41146a4103360200200342033702fc04200341cc90c4003602f8042003200341c0056a3602880520034180066a41d8dbc100200341f8046a103c1a20033502c80242208620033502c002841008024020032802c402450d0020032802c002102f0b2003280290072109419298ca00ad42808080809001841001220a2900002107200341e0056a41086a220c200a41086a290000370300200320073703e005200a102f41f992c200ad42808080809002841001220a2900002107200341f0056a41086a220d200a41086a290000370300200320073703f005200a102f200341c0056a41086a200c290300370300200820032903f005370000200841086a200d290300370000200320032903e0053703c005200341f8046a200341c0056a10880120032802f804210a20033502800521074120102d2208450d3320082009290000370000200841186a200941186a290000370000200841106a200941106a290000370000200841086a200941086a2900003700002007422086200aad842008ad428080808080048410042008102f024020032802fc04450d00200a102f0b20032802b401450d2020032802b001102f0c200b200341f8046a200341c1036a41c20010e8061a20032d0099052109200341c0026a41206a200341a0036a41206a2d00003a0000200341c0026a41186a200341a0036a41186a290300370300200341c0026a41106a200341a0036a41106a290300370300200341c0026a41086a200341a0036a41086a290300370300200341e8026a2003419a056a410020094101461b360200200320032903a0033703c002200320034190076a3602e402200341003602c805200342013703c0054120102d2209450d32200920032903c002370000200941086a200341c0026a41086a290300370000200941106a200341c0026a41106a290300370000200941186a200341c0026a41186a290300370000200342a080808080043702c405200320093602c005024020032d00e002220d41064b0d0002400240024002400240024002400240200d0e0700010203040506000b200341003a00e0050c060b200341013a00e0050c050b200341023a00e0050c040b200341033a00e0050c030b200341043a00e0050c020b200341053a00e0050c010b200341063a00e0050b2009412041c00010312209450d33200920032d00e0053a0020200320093602c005200342c080808090043702c4050b200341e4026a200341c0056a10cd0220032802c4052109200cad422086200aad8420033502c80542208620032802c005220aad84100402402009450d00200a102f0b024020032802b401450d0020032802b001102f0b2003280290072109419298ca00ad42808080809001841001220a2900002107200341e0056a41086a220c200a41086a290000370300200320073703e005200a102f41f992c200ad42808080809002841001220a2900002107200341f0056a41086a220d200a41086a290000370300200320073703f005200a102f200341c0056a41086a200c290300370300200820032903f005370000200841086a200d290300370000200320032903e0053703c005200341a0036a200341c0056a10880120032802a003210a20033502a80321074120102d2208450d3220082009290000370000200841186a200941186a290000370000200841106a200941106a290000370000200841086a200941086a2900003700002007422086200aad842008ad428080808080048410042008102f024020032802a403450d00200a102f0b200341c0026a41086a200341d8046a41086a290300370300200341c0026a41106a200341d8046a41106a290300370300200341c0026a41186a200341d8046a41186a290300370300200320032903d8043703c00241012109410021080c200b200341f8046a41186a200341da066a290100370300200341f8046a41106a200341d2066a290100370300200341f8046a41086a200341ca066a290100370300200341c0026a41086a200341eb066a290000370300200341c0026a41106a200341f3066a290000370300200341c0026a41186a200341fb066a290000370300200320032901c2063703f8042003200341e3066a2900003703c002200341e2066a2d000021090c1f0b2002411a6a2901002107200241196a2d00002108200241186a2d00002109200241166a2f0100210a024020022d0000450d00200320073702a403200320083a00a303200320093a00a2032003200a3b01a0030c1d0b200241156a2d0000210b200241146a2d0000210c200241126a2f0100210d200241116a2d0000210e200241106a2d0000210f2002410e6a2f010021102002410d6a2d000021112002410c6a2d000021122002410a6a2f01002113200241096a2d00002114200241086a2d00002115200241066a2f01002116200241056a2d00002117200241046a2d00002118200241026a2f0100211920022d00012102200320073703a003200241ff01714101470d1c200320073703e801200320083a00e701200320093a00e6012003200a3b01e4012003200b3a00e3012003200c3a00e2012003200d3b01e0012003200e3a00df012003200f3a00de01200320103b01dc01200320113a00db01200320123a00da01200320133b01d801200320143a00d701200320153a00d601200320163b01d401200320173a00d301200320183a00d201200320193b01d001419298ca00ad4280808080900184100122022900002107200341a0066a41086a200241086a290000370300200320073703a0062002102f418a93c200ad4280808080b00184100122022900002107200341a0036a41086a200241086a290000370300200320073703a0032002102f4120102d2208450d30200820032903d001370000200841186a200341d0016a41186a290300370000200841106a200341d0016a41106a290300370000200841086a200341d0016a41086a2903003700002008ad42808080808004841003220229001821072002290010210520022d000f210920022d000b210a20022d0007210b20022d0003210c20022f0000210d200241026a2d0000210e20022f0004210f200241066a2d0000211020022f000821112002410a6a2d0000211220022f000c21132002410e6a2d000021142002102f2008102f41c000102d2202450d302002201320144110747222083b002c2002201120124110747222113b00282002200f201041107472220f3b00242002200d200e41107472220d3b0020200220032903a006370000200220032903a0033700102002200737003820022005370030200220093a002f2002200a3a002b2002200b3a00272002200c3a00232002412e6a20084110763a00002002412a6a20114110763a0000200241266a200f4110763a0000200241226a200d4110763a0000200241086a200341a0066a41086a220a290300370000200241186a200341a0036a41086a220b290300370000200341c0006a200241c00041c8e1ca004100410010b501200328024021092002102f41012108024020094101470d00419298ca00ad4280808080900184100122022900002107200a200241086a290000370300200320073703a0062002102f418a93c200ad4280808080b00184100122022900002107200b200241086a290000370300200320073703a0032002102f4120102d2209450d31200920032903d001370000200941186a200341d0016a41186a290300370000200941106a200341d0016a41106a290300370000200941086a200341d0016a41086a2903003700002009ad42808080808004841003220229001821072002290010210520022d000f210a20022d000b210b20022d0007210c20022d0003210d20022f0000210e200241026a2d0000210f20022f00042110200241066a2d0000211120022f000821122002410a6a2d0000211320022f000c21142002410e6a2d000021152002102f2009102f41c000102d2202450d312002201420154110747222093b002c2002201220134110747222123b00282002201020114110747222103b00242002200e200f41107472220e3b0020200220032903a006370000200220032903a00337001020022007370038200220053700302002200a3a002f2002200b3a002b2002200c3a00272002200d3a00232002412e6a20094110763a00002002412a6a20124110763a0000200241266a20104110763a0000200241226a200e4110763a0000200241086a200341a0066a41086a290300370000200241186a200341a0036a41086a290300370000200341a0036a200241c00010cb02024020032d00c10322094102460d002002ad428080808080088410050b200341d8046a41186a220b200341a0036a41186a290300370300200341d8046a41106a220c200341a0036a41106a290300370300200341d8046a41086a220d200341a0036a41086a290300370300200320032903a0033703d80420032d00c003210a200341f8016a200341a0036a41226a41c10010e8061a200341b0016a41086a200d290300370300200341b0016a41106a200c290300370300200341b0016a41186a200b290300370300200320032903d8043703b001200341c0026a200341f8016a41c10010e8061a20094102460d1b200320093a00f804200341f8046a410172200341c0026a41c10010e806210d2003419a056a210b0240024020032d009905220c4101460d0020034100360280060c010b20034180066a200b10b6020b02400240024020094101460d0020034100360290060c010b20034190066a200d10b6022003280290060d010b0240200c4101460d00419298ca00ad4280808080900184100122092900002107200341e0056a41086a220b200941086a290000370300200320073703e0052009102f41f992c200ad4280808080900284100122092900002107200341f0056a41086a220c200941086a290000370300200320073703f0052009102f200341c0056a41086a200b290300370300200341d8056a200c290300370300200320032903e0053703c005200320032903f0053703d005200341a0036a200341c0056a10880120033502a80342208620032802a0032209ad84100520032802a403450d1b2009102f0c1b0b419298ca00ad4280808080900184100122092900002107200341e0056a41086a220c200941086a290000370300200320073703e0052009102f41f992c200ad4280808080900284100122092900002107200341f0056a41086a220d200941086a290000370300200320073703f0052009102f200341c0056a41086a200c290300370300200341c0056a41186a200d290300370300200320032903e0053703c005200320032903f0053703d005200341a0036a200341c0056a10880120032802a003210c20033502a80321074120102d2209450d322009200b290000370000200941186a200b41186a290000370000200941106a200b41106a290000370000200941086a200b41086a2900003700002007422086200cad842009ad428080808080048410042009102f20032802a403450d1a200c102f0c1a0b200341f0056a41086a20034190066a41086a280200220b360200200320032903900622073703f005200341a0066a2007a7220c200b10cb02024020032d00c1064102470d0020034100360298012003420137039001200341c0056a41146a4129360200200341cc056a410b36020020034109360294072003419298ca00360290072003410b3602c4052003410b3602e4052003418a93c2003602e0052003200341f0056a3602d0052003200341e0056a3602c805200320034190076a3602c005200320034190016a36029c07200341a0036a41146a4103360200200342033702a4032003419090c4003602a0032003200341c0056a3602b0032003419c076a41d8dbc100200341a0036a103c1a200335029801422086200335029001841008200328029401450d19200328029001102f0c190b200341a0036a200341a0066a41c20010e8061a20034182046a20034199056a220941206a2d00003a0000200341fa036a200941186a290000370100200341f2036a200941106a290000370100200341ea036a200941086a290000370100200341a0036a41c2006a2009290000370100200341003602c805200342013703c0054120102d2209450d31200920032903a003370000200941086a200341a0036a41086a290300370000200941106a200341a0036a41106a290300370000200941186a200341a0036a41186a290300370000200342a080808080043702c405200320093602c005024020032d00c003220d41064b0d0002400240024002400240024002400240200d0e0700010203040506000b4100210d0c060b4101210d0c050b4102210d0c040b4103210d0c030b4104210d0c020b4105210d0c010b4106210d0b2003200d3a00e0052009412041c00010312209450d322009200d3a0020200342c080808090043702c405200320093602c0050b200341c1036a200341c0056a10ce0220032802c4052109200bad422086200cad8420033502c80542208620032802c005220bad8410042009450d18200b102f0c180b20004183143b0100200041086a410c360200200041046a41a494c200360200200041026a410d3a00000c320b024020022d000120022d0000410047720d00419298ca00ad4280808080900184100122022900002107200229000821052002102f41aba8c200ad4280808080b001841001220229000021062002290008211a2002102f2003201a3703c801200320063703c001200320053703b801200320073703b001200341b0016aad42808080808004841005200041043a0000410121080c320b200041023a0000410121080c310b2001410c6a2802002121200141086a280200210c200141046a280200210b2002411a6a2901002107200241196a2d00002108200241186a2d00002109200241166a2f0100210a200241156a2d0000210d200241146a2d0000210e200241126a2f0100210f200241116a2d00002110200241106a2d000021112002410e6a2f010021122002410d6a2d000021132002410c6a2d000021142002410a6a2f01002115200241096a2d00002116200241086a2d00002117200241066a2f01002118200241056a2d00002119200241046a2d0000211f200241026a2f010021200240024020022d0000450d00200320073702a403200320083a00a303200320093a00a2032003200a3b01a003410121020c010b20022d00012102200320073703a003200241ff017141014721020b200320073703c801200320083a00c701200320093a00c6012003200a3b01c4012003200d3a00c3012003200e3a00c2012003200f3b01c001200320103a00bf01200320113a00be01200320123b01bc01200320133a00bb01200320143a00ba01200320153b01b801200320163a00b701200320173a00b601200320183b01b401200320193a00b3012003201f3a00b201200320203b01b00102400240024020020d00200341c0026a41186a200341b0016a41186a290300370300200341c0026a41106a200341b0016a41106a290300370300200341c0026a41086a200341b0016a41086a290300370300200320032903b0013703c0022021ad221a422086200bad84100322022900002107200241086a2900002105200241106a2900002106200341f8046a41186a2209200241186a290000370300200341f8046a41106a220a2006370300200341f8046a41086a220d2005370300200320073703f8042002102f419298ca00ad4280808080900184100122022d000f210e20022d000e210f20022f000c211020022d000b211120022d000a211220022f0008211320022d0007211420022d0006211520022f0004211620022d0003211720022d0002211820022f000021192002102f4199a8c200ad428080808090018410012202290008210720022d0007211f20022d0006212020022f0004212220022d0003212320022d0002212420022f000021252002102f4120102d2208450d31200820032903f804370000200841186a2009290300370000200841106a200a290300370000200841086a200d2903003700002008ad428080808080048410032202290018210520022d0017210920022d0016210a20022f0014210d20022d0013212620022d0012212720022f0010212820022d000f212920022d000e212a20022f000c212b20022d000b212c20022d000a212d20022f0008212e20022d0007212f20022d0006213020022f0004213120022d0003213220022d0002213320022f000021342002102f2008102f41c000102d2202450d3120022005370038200220093a00372002200a3a00362002200d3b0034200220263a0033200220273a0032200220283b0030200220293a002f2002202a3a002e2002202b3b002c2002202c3a002b2002202d3a002a2002202e3b00282002202f3a0027200220303a0026200220313b0024200220323a0023200220333a0022200220343b0020200220073700182002201f3a0017200220203a0016200220223b0014200220233a0013200220243a0012200220253b00102002200e3a000f2002200f3a000e200220103b000c200220113a000b200220123a000a200220133b0008200220143a0007200220153a0006200220163b0004200220173a0003200220183a0002200220193b0000200341e0006a200241c00041c8e1ca004100410010b501200328026021082002102f20084101460d11200341d0006a201a42004280a094a58d1d420010ed062003200341d8006a2903002207370380022003200329035022053703f8012003200341c0026a3602d001410421022021450d022003200341c0026a3602d8042003200341d8046a3602a8032003200341d0016a3602a4032003200341f8016a3602a003200341a0066a200341c0026a200341a0036a10940120032802a0064101470d01200320032900a5063703a0032003200341ac066a2800003600a70320032d00a40621020c020b200041023a00000c160b41042102200341a0066a41086a2903004201520d00200341a0066a41106a290300210620032802d8042108200341d8036a200341a0066a41186a290300370300200341d0036a2006370300200341a0036a41086a41003a0000200341a9036a2008290000370000200341b1036a200841086a290000370000200341b9036a200841106a290000370000200341c1036a200841186a290000370000200341033a00a00341c8e1ca004100200341a0036a108c010b200320032903a0033703c005200320032800a7033600c7050240200241ff01714104470d00200341a0036a41186a22094200370300200341a0036a41106a220a4200370300200341a0036a41086a22024200370300200342003703a003418de6c300ad4280808080e000841001220829000021062002200841086a290000370300200320063703a0032008102f419ce6c300ad4280808080e00084100122082900002106200341d8046a41086a220d200841086a290000370300200320063703d8042008102f200a20032903d8042206370300200341a0066a41086a22082002290300370300200341a0066a41106a220a2006370300200341a0066a41186a220e200d290300370300200320032903a0033703a006200341c8006a200341a0066a4120109501200328024c210d2003280248210f200e200341f8046a41186a2210290300370300200a200341f8046a41106a220e2903003703002008200341f8046a41086a220a290300370300200320032903f8043703a00620092021360200200341b4036a200c360200200341c4036a200341c0026a41086a2209290300370200200341cc036a200341c0026a41106a220c290300370200200341d4036a200341c0026a41186a2211290300370200200320073703a803200320053703a0032003200b3602b003200320032903c0023702bc03410021082003200d4100200f1b3602dc03200341a0066a200341a0036a10cf02200341f8036a2007370300200341f0036a20053703002002410b3a0000200341a9036a20032903f804370000200341b1036a200a290300370000200341b9036a200e290300370000200341c1036a2010290300370000200341c9036a20032903c002370000200341d1036a2009290300370000200341d9036a200c290300370000200341e1036a2011290300370000200341063a00a00341c8e1ca004100200341a0036a108c01200041043a00000c310b200020023a0000200020032903c005370001200041086a20032800c7053600000c140b2001410c6a2802002123200141086a2802002122200141046a28020021212002411a6a2901002107200241196a2d0000210a200241186a2d0000210b200241166a2f0100210c200241156a2d0000210d200241146a2d0000210e200241126a2f0100210f200241116a2d00002110200241106a2d000021112002410e6a2f010021122002410d6a2d000021132002410c6a2d000021142002410a6a2f01002115200241096a2d00002116200241086a2d00002117200241066a2f01002118200241056a2d00002119200241046a2d0000211f200241026a2f010021200240024020022d0000450d00200320073702a4032003200a3a00a3032003200b3a00a2032003200c3b01a003410121020c010b20022d00012102200320073703a003200241ff017141014721020b200320073703c8012003200a3a00c7012003200b3a00c6012003200c3b01c4012003200d3a00c3012003200e3a00c2012003200f3b01c001200320103a00bf01200320113a00be01200320123b01bc01200320133a00bb01200320143a00ba01200320153b01b801200320163a00b701200320173a00b601200320183b01b401200320193a00b3012003201f3a00b201200320203b01b0010240024020020d002023ad4220862021ad84100322022900002105200241086a2900002106200241106a290000211a200341f8046a41186a2209200241186a290000370300200341f8046a41106a2224201a370300200341f8046a41086a22252006370300200320053703f8042002102f419298ca00ad4280808080900184100122022d000f212620022d000e212720022f000c212820022d000b212920022d000a212a20022f0008212b20022d0007212c20022d0006212d20022f0004212e20022d0003212f20022d0002213020022f000021312002102f4199a8c200ad428080808090018410012202290008210520022d0007213220022d0006213320022f0004213420022d0003213520022d0002213620022f000021372002102f4120102d2208450d2f200820032903f804370000200841186a2009290300370000200841106a2024290300370000200841086a20252903003700002008ad428080808080048410032202290018210620022d0017210920022d0016212420022f0014212520022d0013213820022d0012213920022f0010213a20022d000f213b20022d000e213c20022f000c213d20022d000b213e20022d000a213f20022f0008214020022d0007214120022d0006214220022f0004214320022d0003214420022d0002214520022f000021462002102f2008102f41c000102d2202450d2f20022006370038200220093a0037200220243a0036200220253b0034200220383a0033200220393a00322002203a3b00302002203b3a002f2002203c3a002e2002203d3b002c2002203e3a002b2002203f3a002a200220403b0028200220413a0027200220423a0026200220433b0024200220443a0023200220453a0022200220463b002020022005370018200220323a0017200220333a0016200220343b0014200220353a0013200220363a0012200220373b0010200220263a000f200220273a000e200220283b000c200220293a000b2002202a3a000a2002202b3b00082002202c3a00072002202d3a00062002202e3b00042002202f3a0003200220303a0002200220313b0000200341f0006a200241c00041c8e1ca004100410010b501200328027021082002102f20084101460d10200341a0036a41186a4200370300200341a0036a41106a22244200370300200341a0036a41086a22024200370300200342003703a003419298ca00ad42808080809001841001220829000021052002200841086a290000370300200320053703a0032008102f418ca8c200ad4280808080d00184100122082900002105200341d8046a41086a2209200841086a290000370300200320053703d8042008102f202420032903d8042205370300200341a0066a41086a2002290300370300200341a0066a41106a2005370300200341a0066a41186a2009290300370300200320032903a0033703a006200341a0036a200341a0066a10c90220032802a0032202410420021b222520032902a403420020021b2205422088a741286c6a210920252102034020022009460d020240200341f8046a200241046a2208460d00200841246a21022008200341f8046a412010ea060d010b0b200341a0036a41186a22024200370300200341a0036a41106a22264200370300200341a0036a41086a22084200370300200342003703a003418de6c300ad4280808080e000841001220929000021062008200941086a290000370300200320063703a0032009102f419ce6c300ad4280808080e00084100122092900002106200341d8046a41086a2227200941086a290000370300200320063703d8042009102f202420032903d804370000202441086a2027290300370000200341a0066a41086a22092008290300370300200341a0066a41106a22242026290300370300200341a0066a41186a22262002290300370300200320032903a0033703a006200341e8006a200341a0066a4120109501200328026c2127200328026821282026200341f8046a41186a22292903003703002024200341f8046a41106a22262903003703002009200341f8046a41086a2224290300370300200320032903f8043703a006200341d4036a22092007370200200341d3036a222a200a3a0000200341d2036a200b3a0000200341d0036a222b200c3b0100200341cf036a222c200d3a0000200341ce036a200e3a0000200341cc036a222d200f3b0100200341cb036a222e20103a0000200341ca036a20113a0000200341c8036a20123b0100200341c7036a20133a0000200341c6036a20143a0000200341c4036a20153b0100200341c3036a20163a0000200341c2036a20173a0000200341a0036a41206a20183b0100200341bf036a20193a0000200341be036a201f3a000020022023360200200341b4036a2022360200200320203b01bc03200320213602b003200342003703a803200342003703a0034100210220032027410020281b3602dc03200341a0066a200341a0036a10cf02200341f8036a4200370300200341f0036a42003703002008410b3a0000200341a9036a20032903f804370000200341b1036a2024290300370000200341b9036a2026290300370000200341c1036a2029290300370000200341e1036a2007370000200341e0036a200a3a0000200341df036a200b3a0000200341dd036a200c3b0000200341dc036a200d3a0000200341db036a200e3a0000200341d9036a200f3b0000200341d8036a20103a0000200341d7036a20113a0000200341d5036a20123b0000200920133a0000202a20143a0000200341d1036a20153b0000202b20163a0000202c20173a0000200341cd036a20183b0000202d20193a0000202e201f3a0000200341c9036a20203b0000200341063a00a00341c8e1ca004100200341a0036a108c0102402005a7450d002025102f0b200041043a0000410121080c320b200041023a00000c130b20004183143b0100200041086a410b360200200041046a418894c200360200200041026a410f3a00002005a7450d122025102f0c120b200341c0056a41186a200141196a290000370300200341c0056a41106a200141116a290000370300200341c0056a41086a200141096a290000370300200320012900013703c0052002411a6a2901002107200241196a2d00002108200241186a2d00002109200241166a2f0100210a200241156a2d0000210b200241146a2d0000210c200241126a2f0100210d200241116a2d0000210e200241106a2d0000210f2002410e6a2f010021102002410d6a2d000021112002410c6a2d000021122002410a6a2f01002113200241096a2d00002114200241086a2d00002115200241066a2f01002116200241056a2d00002117200241046a2d00002118200241026a2f010021190240024020022d0000450d00200320073702a403200320083a00a303200320093a00a2032003200a3b01a003410121020c010b20022d00012102200320073703a003200241ff017141014721020b200320073703c801200320083a00c701200320093a00c6012003200a3b01c4012003200b3a00c3012003200c3a00c2012003200d3b01c0012003200e3a00bf012003200f3a00be01200320103b01bc01200320113a00bb01200320123a00ba01200320133b01b801200320143a00b701200320153a00b601200320163b01b401200320173a00b301200320183a00b201200320193b01b00102400240024020020d00200341f8016a41186a200341b0016a41186a290300370300200341f8016a41106a200341b0016a41106a290300370300200341f8016a41086a200341b0016a41086a290300370300200320032903b0013703f801419298ca00ad4280808080900184100122022d000f210920022d000e210a20022f000c210b20022d000b210c20022d000a210d20022f0008210e20022d0007210f20022d0006211020022f0004211120022d0003211220022d0002211320022f000021142002102f4199a8c200ad428080808090018410012202290008210720022d0007211520022d0006211620022f0004211720022d0003211820022d0002211920022f0000211f2002102f4120102d2208450d2f200820032903c005370000200841186a200341c0056a41186a290300370000200841106a200341c0056a41106a290300370000200841086a200341c0056a41086a2903003700002008ad428080808080048410032202290018210520022d0017212020022d0016212120022f0014212220022d0013212320022d0012212420022f0010212520022d000f212620022d000e212720022f000c212820022d000b212920022d000a212a20022f0008212b20022d0007212c20022d0006212d20022f0004212e20022d0003212f20022d0002213020022f000021312002102f2008102f41c000102d2202450d2f20022005370038200220203a0037200220213a0036200220223b0034200220233a0033200220243a0032200220253b0030200220263a002f200220273a002e200220283b002c200220293a002b2002202a3a002a2002202b3b00282002202c3a00272002202d3a00262002202e3b00242002202f3a0023200220303a0022200220313b002020022007370018200220153a0017200220163a0016200220173b0014200220183a0013200220193a00122002201f3b0010200220093a000f2002200a3a000e2002200b3b000c2002200c3a000b2002200d3a000a2002200e3b00082002200f3a0007200220103a0006200220113b0004200220123a0003200220133a0002200220143b0000200341a0036a200210b202200341a0066a41086a2208200341a0036a41206a290300370300200341a0066a41106a2209200341c8036a290300370300200341a0066a41186a220a200341d0036a290300370300200341a0066a41206a220b200341d8036a2802003602002003200341a0036a41186a2903003703a006024020032802b003220c450d00200341a0036a41086a2903002105200341dc036a280200210d20032903a003210620032802b403210e200341f8046a41206a200b280200360200200341f8046a41186a200a290300370300200341f8046a41106a2009290300370300200341f8046a41086a2008290300370300200320032903a0063703f8042002102f200341c0026a41186a20034194056a290200370300200341c0026a41106a2003418c056a290200370300200341c0026a41086a20034184056a290200370300200320032902fc043703c0020240200e450d00200c102f0b200341a0036a41186a220b4200370300200341a0036a41106a22084200370300200341a0036a41086a22024200370300200342003703a003418de6c300ad4280808080e000841001220929000021072002200941086a290000370300200320073703a0032009102f419ce6c300ad4280808080e00084100122092900002107200341d8046a41086a220a200941086a290000370300200320073703d8042009102f200820032903d8042207370300200341a0066a41086a22092002290300370300200341a0066a41106a220c2007370300200341a0066a41186a220e200a290300370300200320032903a0033703a006200341f8006a200341a0066a4120109501200328027c410020032802781b200d4180de344100200341f8016a200341c0026a412010ea061b6a41809c316a490d02200b42003703002008420037030020024200370300200342003703a003419298ca00ad42808080809001841001220d29000021072002200d41086a290000370300200320073703a003200d102f418ca8c200ad4280808080d001841001220d2900002107200a200d41086a290000370300200320073703d804200d102f200820032903d804370000200841086a200a29030037000020092002290300370300200c2008290300370300200e200b290300370300200320032903a0033703a006200341a0036a200341a0066a10c90220032802a0032202410420021b220a20032902a403420020021b2207422088a741286c6a2109200a2102034020022009460d040240200341c0056a200241046a2208460d00200841246a21022008200341c0056a412010ea060d010b0b20004183143b0100200041086a4108360200200041046a41fb93c200360200200041026a41113a00002007a7450d2a200a102f410121080c320b2002102f200041086a410f360200200041046a41ec93c200360200200041026a41123a000020004183143b0100410121080c310b200041023a0000410121080c300b20004183143b0100200041086a4105360200200041046a418394c200360200200041026a41103a0000410121080c2f0b200341a0036a200341c0026a200341f8016a20062005410010bc01419298ca00ad4280808080900184100122022d000f210920022d000e210b20022f000c210c20022d000b210d20022d000a210e20022f0008210f20022d0007211020022d0006211120022f0004211220022d0003211320022d0002211420022f000021152002102f4199a8c200ad428080808090018410012202290008211a20022d0007211620022d0006211720022f0004211820022d0003211920022d0002211f20022f000021202002102f4120102d2208450d2c200820032903c005370000200841186a200341c0056a41186a2221290300370000200841106a200341c0056a41106a2222290300370000200841086a200341c0056a41086a22232903003700002008ad428080808080048410032202290018211b20022d0017212420022d0016212520022f0014212620022d0013212720022d0012212820022f0010212920022d000f212a20022d000e212b20022f000c212c20022d000b212d20022d000a212e20022f0008212f20022d0007213020022d0006213120022f0004213220022d0003213320022d0002213420022f000021352002102f2008102f41c000102d2202450d2c2002201b370038200220243a0037200220253a0036200220263b0034200220273a0033200220283a0032200220293b00302002202a3a002f2002202b3a002e2002202c3b002c2002202d3a002b2002202e3a002a2002202f3b0028200220303a0027200220313a0026200220323b0024200220333a0023200220343a0022200220353b00202002201a370018200220163a0017200220173a0016200220183b0014200220193a00132002201f3a0012200220203b0010200220093a000f2002200b3a000e2002200c3b000c2002200d3a000b2002200e3a000a2002200f3b0008200220103a0007200220113a0006200220123b0004200220133a0003200220143a0002200220153b00002002ad428080808080088410052002102f200341a0036a41086a410f3a0000200341a9036a20032903c005370000200341b1036a2023290300370000200341b9036a2022290300370000200341c1036a2021290300370000200341c9036a20032903c002370000200341d1036a200341c0026a41086a290300370000200341d9036a200341c0026a41106a290300370000200341e1036a200341c0026a41186a290300370000200341063a00a00320034190046a200637030020034198046a200537030020034181046a200341f8016a41186a290300370000200341f9036a200341f8016a41106a290300370000200341f1036a200341f8016a41086a290300370000200341e9036a20032903f80137000041c8e1ca004100200341a0036a108c0102402007a7450d00200a102f0b200041043a0000410121080c2e0b200341f8046a41186a200141196a29000037030020034188056a200141116a29000037030020034180056a200141096a290000370300200320012900013703f8042002411a6a2901002107024020022d0000450d00200241196a2d00002108200241186a2d00002109200241166a2f01002102200320073702a403200320083a00a303200320093a00a203200320023b01a0030c100b20022d00012102200320073703a003200241ff01714101470d0f419298ca00ad4280808080900184100122022900002107200341a0066a41086a200241086a290000370300200320073703a0062002102f41f9b5c600ad4280808080d00084100122022900002107200341a0036a41086a200241086a290000370300200320073703a0032002102f4120102d2202450d2b200220032903f804370000200241186a200341f8046a41186a290300370000200241106a200341f8046a41106a290300370000200241086a200341f8046a41086a2903003700002002ad4280808080800484100322082900002107200841086a2900002105200841106a2900002106200341b0016a41186a2209200841186a290000370300200341b0016a41106a220a2006370300200341b0016a41086a2005370300200320073703b0012008102f2002102f41c000102d2202450d2b200220032903a006370000200241086a200341a0066a41086a220b290300370000200220032903a003370010200241186a200341a0036a41086a2208290300370000200220032903b001370020200241286a200341b0016a41086a290300370000200241306a200a290300370000200241386a200929030037000020034188016a200241c000109501200328028c01210a20032802880121092002102f2009450d0d200341a0036a41186a4200370300200341a0036a41106a2209420037030020084200370300200342003703a003418de6c300ad4280808080e000841001220229000021072008200241086a290000370300200320073703a0032002102f419ce6c300ad4280808080e00084100122022900002107200341d8046a41086a220c200241086a290000370300200320073703d8042002102f200920032903d8042207370300200b2008290300370300200341a0066a41106a2007370300200341a0066a41186a200c290300370300200320032903a0033703a00620034180016a200341a0066a41201095010240200a20032802840141002003280280011b4b0d00200342e4cab5fbb6ccdcb0e3003703c002200341c0026a200341f8046a10b101419298ca00ad4280808080900184100122022d000f210920022d000e210a20022f000c210b20022d000b210c20022d000a210d20022f0008210e20022d0007210f20022d0006211020022f0004211120022d0003211220022d0002211320022f000021142002102f41f9b5c600ad4280808080d0008410012202290008210720022d0007211520022d0006211620022f0004211720022d0003211820022d0002211920022f0000211f2002102f4120102d2208450d2c200820032903f804370000200841186a200341f8046a41186a2220290300370000200841106a200341f8046a41106a2221290300370000200841086a200341f8046a41086a22222903003700002008ad428080808080048410032202290018210520022d0017212320022d0016212420022f0014212520022d0013212620022d0012212720022f0010212820022d000f212920022d000e212a20022f000c212b20022d000b212c20022d000a212d20022f0008212e20022d0007212f20022d0006213020022f0004213120022d0003213220022d0002213320022f000021342002102f2008102f41c000102d2202450d2c20022005370038200220233a0037200220243a0036200220253b0034200220263a0033200220273a0032200220283b0030200220293a002f2002202a3a002e2002202b3b002c2002202c3a002b2002202d3a002a2002202e3b00282002202f3a0027200220303a0026200220313b0024200220323a0023200220333a0022200220343b002020022007370018200220153a0017200220163a0016200220173b0014200220183a0013200220193a00122002201f3b0010200220093a000f2002200a3a000e2002200b3b000c2002200c3a000b2002200d3a000a2002200e3b00082002200f3a0007200220103a0006200220113b0004200220123a0003200220133a0002200220143b00002002ad428080808080088410052002102f200341a0036a41086a41103a0000200341a9036a20032903f804370000200341b1036a2022290300370000200341b9036a2021290300370000200341c1036a2020290300370000200341063a00a00341c8e1ca004100200341a0036a108c01200041043a0000410121080c2e0b20004183143b0100200041086a410a360200200041046a41ae93c200360200200041026a41173a0000410121080c2d0b2002411a6a2901002107200241196a2d00002108200241186a2d00002109200241166a2f0100210a024020022d0000450d00200320073702a403200320083a00a303200320093a00a2032003200a3b01a0030c0e0b2001410f6a2d0000210f2001410d6a2f000021102001410b6a2d00002111200141096a2f00002112200141076a2d00002113200141056a2f00002114200141036a2d0000211520012f00012116200141196a2900002106200141116a2900002105200141106a2d0000210b2001410c6a2d0000210c200141086a2d0000210d200141046a2d0000210e200241156a2d00002117200241146a2d00002118200241126a2f01002119200241116a2d0000211f200241106a2d000021202002410e6a2f010021212002410d6a2d000021222002410c6a2d000021232002410a6a2f01002124200241096a2d00002125200241086a2d00002126200241066a2f01002127200241056a2d00002128200241046a2d00002129200241026a2f0100212a20022d00012102200320073703a003200241ff01714101470d0d200320073703b806200320083a00b706200320093a00b6062003200a3b01b406200320173a00b306200320183a00b206200320193b01b0062003201f3a00af06200320203a00ae06200320213b01ac06200320223a00ab06200320233a00aa06200320243b01a806200320253a00a706200320263a00a606200320273b01a406200320283a00a306200320293a00a2062003202a3b01a006419298ca00ad4280808080900184100122022d000f210920022d000e210a20022f000c211720022d000b211820022d000a211920022f0008211f20022d0007212020022d0006212120022f0004212220022d0003212320022d0002212420022f000021252002102f41d49ac800ad4280808080d0008410012202290008210720022d0007212620022d0006212720022f0004212820022d0003212920022d0002212a20022f0000212b2002102f4120102d2208450d2a200820032903a006370000200841186a200341a0066a41186a290300370000200841106a200341a0066a41106a290300370000200841086a200341a0066a41086a2903003700002008ad428080808080048410032202290018211a20022d0017212c20022d0016212d20022f0014212e20022d0013212f20022d0012213020022f0010213120022d000f213220022d000e213320022f000c213420022d000b213520022d000a213620022f0008213720022d0007213820022d0006213920022f0004213a20022d0003213b20022d0002213c20022f0000213d2002102f2008102f41c000102d2202450d2a2002201a3700382002202c3a00372002202d3a00362002202e3b00342002202f3a0033200220303a0032200220313b0030200220323a002f200220333a002e200220343b002c200220353a002b200220363a002a200220373b0028200220383a0027200220393a00262002203a3b00242002203b3a00232002203c3a00222002203d3b002020022007370018200220263a0017200220273a0016200220283b0014200220293a00132002202a3a00122002202b3b0010200220093a000f2002200a3a000e200220173b000c200220183a000b200220193a000a2002201f3b0008200220203a0007200220213a0006200220223b0004200220233a0003200220243a0002200220253b0000200341a0036a200210c70220032d00a003211720032010200f4110747222083b01bc01200341be016a20084110763a00002003201220114110747222093b01b801200341ba016a20094110763a000020032014201341107472220a3b01b401200341b6016a200a4110763a0000200320063702c801200320053702c0012003200b3a00bf012003200c3a00bb012003200d3a00b7012003200e3a00b30120032016201541107472220f3b01b0012003200f4110763a00b2010240024020174102460d00200f418080fc07714110762110200a418080fc077141107621112009418080fc077141107621122008418080fc077141107621132005421088a721142005421888a721152005422088a721162005423088a721172005423888a721182005a721190c010b200341a0066a10d00220032902c801210620032d00c701211820032d00c601211720032f01c401211620032d00c301211520032d00c201211420032f01c001211920032d00bf01210b20032d00be01211320032f01bc01210820032d00bb01210c20032d00ba01211220032f01b801210920032d00b701210d20032d00b601211120032f01b401210a20032d00b301210e20032d00b201211020032f01b001210f0b200341003a00e0054101102d2203450d2a200341003a000020034101412110312203450d2a20032006370019200320183a0018200320173a0017200320163b0015200320153a0014200320143a0013200320193b00112003200b3a0010200320133a000f200320083b000d2003200c3a000c200320123a000b200320093b00092003200d3a0008200320113a00072003200a3b00052003200e3a0004200320103a00032003200f3b00012002ad42808080808008842003ad428080808090048410042003102f2002102f200041043a0000410121080c2c0b20004183143b0100200041086a410f360200200041046a418095c200360200200041026a41043a00000c2b0b20004183143b0100200041086a4108360200200041046a419f95c200360200200041026a41003a0000410121080c2a0b20082002104b000b2002200b104a000b2009200b104b000b200341c0056a41146a4109360200200341cc056a410a360200200341f8016a41146a4103360200200320034180066a3602e005200320034190066a3602f005200341a0036a41146a4100360200200342033702fc01200341b4e0ca003602f8012003410a3602c405200341c8e1ca003602b003200342013702a40320034188e1ca003602a0032003200341c0056a360288022003200341a0036a3602d0052003200341f0056a3602c8052003200341e0056a3602c005200341f8016a41c8e1ca001043000b200041086a4108360200200041046a418f95c200360200200041026a41033a000020004183143b0100410121080c250b200041023a0000410121080c240b419ae3c300411e41f8b4ca001039000b4188bbca00200a200b103b000b20004183143b0100200041086a4111360200200041046a419394c200360200200041026a410e3a00000c050b20004183143b0100200041086a4111360200200041046a419394c200360200200041026a410e3a00000c030b20004183143b0100200041086a4109360200200041046a41b893c200360200200041026a41163a0000410121080c1f0b200041023a0000410121080c1e0b200041023a0000410121080c1d0b41002102410121082022450d1d2021102f0c1d0b4101210241002108200c450d1c200b102f0c1c0b024020032802f405450d0020032802f005102f0b4101210c0c010b4100210c0b0240024020032802800622090d004100210b0c010b200341f0056a41086a20034180066a41086a280200220d360200200320032903800622073703f005200341a0066a2007a7220e200d10cb020240024020032d00c1064102470d0020034100360298012003420137039001200341c0056a41146a4129360200200341cc056a410b36020020034109360294072003419298ca00360290072003410b3602c4052003410b3602e4052003418a93c2003602e0052003200341f0056a3602d0052003200341e0056a3602c805200320034190076a3602c005200320034190016a36029c07200341a0036a41146a4103360200200342033702a403200341b48fc4003602a0032003200341c0056a3602b0032003419c076a41d8dbc100200341a0036a103c1a200335029801422086200335029001841008200328029401450d01200328029001102f0c010b200341a0036a200341a0066a41e30010e8061a200341e1036a200341f8046a41206a2d00003a0000200341d9036a200341f8046a41186a290300370000200341d1036a200341f8046a41106a290300370000200341c9036a200341f8046a41086a290300370000200320032903f8043700c103200341003602c805200342013703c0054120102d220b450d18200b20032903a003370000200b41086a200341a0036a41086a290300370000200b41106a200341a0036a41106a290300370000200b41186a200341a0036a41186a290300370000200342a080808080043702c4052003200b3602c005024020032d00c003220f41064b0d0002400240024002400240024002400240200f0e0700010203040506000b200341003a00e0050c060b200341013a00e0050c050b200341023a00e0050c040b200341033a00e0050c030b200341043a00e0050c020b200341053a00e0050c010b200341063a00e0050b200b412041c0001031220b450d19200b20032d00e0053a00202003200b3602c005200342c080808090043702c4050b200341c1036a200341c0056a10ce0220032802c405210b200dad422086200ead8420033502c80542208620032802c005220dad841004200b450d00200d102f0b024020032802f405450d0020032802f005102f0b4101210b0b0240200c200328029006220d45720d00200328029406450d00200d102f0b0240200b200945720d00200328028406450d002009102f0b200a41ff01714107470d010b4100210a0b2002102f200341a0036a41186a4200370300200341a0036a41106a220b4200370300200341a0036a41086a22024200370300200342003703a003418de6c300ad4280808080e000841001220929000021072002200941086a290000370300200320073703a0032009102f419ce6c300ad4280808080e00084100122092900002107200341d8046a41086a220c200941086a290000370300200320073703d8042009102f200b20032903d8042207370300200341a0066a41086a2002290300370300200341a0066a41106a2007370300200341a0066a41186a200c290300370300200320032903a0033703a006200341386a200341a0066a4120109501200328023c210b2003280238210c419298ca00ad4280808080900184100122022d000f210d20022d000e210e20022f000c210f20022d000b211020022d000a211120022f0008211220022d0007211320022d0006211420022f0004211520022d0003211620022d0002211720022f000021182002102f41f9b5c600ad4280808080d0008410012202290008210720022d0007211920022d0006211f20022f0004212020022d0003212120022d0002212220022f000021232002102f4120102d2209450d14200920032903d001370000200941186a200341d0016a41186a290300370000200941106a200341d0016a41106a290300370000200941086a200341d0016a41086a2903003700002009ad428080808080048410032202290018210520022d0017212420022d0016212520022f0014212620022d0013212720022d0012212820022f0010212920022d000f212a20022d000e212b20022f000c212c20022d000b212d20022d000a212e20022f0008212f20022d0007213020022d0006213120022f0004213220022d0003213320022d0002213420022f000021352002102f2009102f41c000102d2202450d1420022005370038200220243a0037200220253a0036200220263b0034200220273a0033200220283a0032200220293b00302002202a3a002f2002202b3a002e2002202c3b002c2002202d3a002b2002202e3a002a2002202f3b0028200220303a0027200220313a0026200220323b0024200220333a0023200220343a0022200220353b002020022007370018200220193a00172002201f3a0016200220203b0014200220213a0013200220223a0012200220233b00102002200d3a000f2002200e3a000e2002200f3b000c200220103a000b200220113a000a200220123b0008200220133a0007200220143a0006200220153b0004200220163a0003200220173a0002200220183b00002003200a41187441187541027441d897ca006a2802004180de346c200b4100200c1b6a3602a0032002ad4280808080800884200341a0036aad4280808080c0008410042002102f200342e4cab5fbb6ccdcb0e3003703f001200341f0016a200341d0016a427f427f410210b001200341a0036a41086a41093a0000200341a0036a41096a20032903d001370000200341b1036a200341d0016a41086a290300370000200341b9036a200341e0016a290300370000200341c1036a200341e8016a290300370000200341063a00a00341c8e1ca004100200341a0036a108c01200041043a00000c160b200041023a0000410121080c150b41002109410021080b200341a9036a20032903f804370000200341c9036a20093a0000200341ca036a20032903c002370100200341b1036a200341f8046a41086a290300370000200341b9036a200341f8046a41106a290300370000200341c1036a200341f8046a41186a290300370000200341d2036a200341c0026a41086a290300370100200341da036a200341c0026a41106a290300370100200341e2036a200341c0026a41186a290300370100200320083a00a8032003200b3a00a403200320034190016a3602a003200341003602a806200342013703a0064120102d2208450d112008200329039001370000200841086a20034190016a41086a290300370000200841106a20034190016a41106a290300370000200841186a20034190016a41186a290300370000200342a080808080043702a406200320083602a0060240200b41064b0d0002400240024002400240024002400240200b0e0700010203040506000b200341003a00e0050c060b200341013a00e0050c050b200341023a00e0050c040b200341033a00e0050c030b200341043a00e0050c020b200341053a00e0050c010b200341063a00e0050b2008412041c00010312208450d12200820032d00e0053a0020200320083602a006200342c080808090043702a4060b200341a0036a41086a200341a0066a10ce0220032802a40621082002ad428080808080088420033502a80642208620032802a0062209ad84100402402008450d002009102f0b2002102f200342e4cab5fbb6ccdcb0e3003703900620034190066a200341d0016a10d202419298ca00ad4280808080900184100122022d000f210920022d000e210a20022f000c210b20022d000b210c20022d000a210d20022f0008210e20022d0007210f20022d0006211020022f0004211120022d0003211220022d0002211320022f000021142002102f41f9b5c600ad4280808080d0008410012202290008210720022d0007211520022d0006211620022f0004211720022d0003211820022d0002211920022f0000211f2002102f4120102d2208450d11200820032903d001370000200841186a200341d0016a41186a2220290300370000200841106a200341d0016a41106a2221290300370000200841086a200341d0016a41086a22222903003700002008ad428080808080048410032202290018210520022d0017212320022d0016212420022f0014212520022d0013212620022d0012212720022f0010212820022d000f212920022d000e212a20022f000c212b20022d000b212c20022d000a212d20022f0008212e20022d0007212f20022d0006213020022f0004213120022d0003213220022d0002213320022f000021342002102f2008102f41c000102d2202450d1120022005370038200220233a0037200220243a0036200220253b0034200220263a0033200220273a0032200220283b0030200220293a002f2002202a3a002e2002202b3b002c2002202c3a002b2002202d3a002a2002202e3b00282002202f3a0027200220303a0026200220313b0024200220323a0023200220333a0022200220343b002020022007370018200220153a0017200220163a0016200220173b0014200220183a0013200220193a00122002201f3b0010200220093a000f2002200a3a000e2002200b3b000c2002200c3a000b2002200d3a000a2002200e3b00082002200f3a0007200220103a0006200220113b0004200220123a0003200220133a0002200220143b00002002ad428080808080088410052002102f200341a0036a41086a41083a0000200341a9036a20032903d001370000200341b1036a2022290300370000200341b9036a2021290300370000200341c1036a2020290300370000200341c9036a200329039001370000200341d1036a20034190016a41086a290300370000200341d9036a20034190016a41106a290300370000200341e1036a20034190016a41186a290300370000200341063a00a00341c8e1ca004100200341a0036a108c01200041043a0000410121080c130b200041023a0000410121080c120b200041023a0000410121080c110b200041023a0000410121080c100b2008417f6a200b4f0d00200b20086b2202200b490d01201b42ffffffff0f83211b0b20004183143b0100200041086a410f360200200041046a41b1d5c70036020041012108200041026a41013a0000201ba7450d0e2019102f0c0e0b419298ca00ad4280808080900184100122082900002107200829000821052008102f418ca8c200ad4280808080d001841001220829000021062008290008211a2008102f2003201a3703c801200320063703c001200320053703b801200320073703b001200341a0036a20192002108101200341b0016aad428080808080048420033502a80342208620032802a0032202ad841004024020032802a403450d002002102f0b0240201ba7450d002019102f0b200041043a0000410121080c0d0b200341a0036a41186a200341f8046a41186a290300370300200341a0036a41106a200341f8046a41106a290300370300200341a0036a41086a200341f8046a41086a290300370300200320032903f8043703a003200341a0036a21084100210a0b02402009200b470d0020112009470d00201141016a22022011490d022011410174220b2002200b20024b1b220241ffffff3f712002470d02200241057422024100480d020240024020110d002002102d21100c010b201020114105742002103121100b2010450d0a200241057621110b2010200a4105746a220241206a20022009200a6b41057410e9061a200241186a200841186a290000370000200241106a200841106a290000370000200241086a200841086a29000037000020022008290000370000200341a0036a41186a4200370300200341a0036a41106a220a4200370300200341a0036a41086a22024200370300200342003703a003418de6c300ad4280808080e000841001220829000021072002200841086a290000370300200320073703a0032008102f419ce6c300ad4280808080e00084100122082900002107200341d8046a41086a220b200841086a290000370300200320073703d8042008102f200a20032903d8042207370300200341a0066a41086a2002290300370300200341a0066a41106a2007370300200341a0066a41186a200b290300370300200320032903a0033703a006200341306a200341a0066a41201095012003280230210a2003280234210b419298ca00ad4280808080900184100122022d000f210c20022d000e210d20022f000c210f20022d000b211220022d000a211320022f0008211420022d0007211520022d0006211620022f0004211720022d0003211820022d0002211920022f0000211f2002102f41b080c300ad428080808090018410012202290008210720022d0007212020022d0006212120022f0004212220022d0003212320022d0002212420022f000021252002102f4120102d2208450d09200820032903c002370000200841186a200341c0026a41186a290300370000200841106a200341c0026a41106a290300370000200841086a200341c0026a41086a2903003700002008ad428080808080048410032202290018210520022d0017212620022d0016212720022f0014212820022d0013212920022d0012212a20022f0010212b20022d000f212c20022d000e212d20022f000c212e20022d000b212f20022d000a213020022f0008213120022d0007213220022d0006213320022f0004213420022d0003213520022d0002213620022f000021372002102f2008102f41c000102d220e450d09200e2005370038200e20263a0037200e20273a0036200e20283b0034200e20293a0033200e202a3a0032200e202b3b0030200e202c3a002f200e202d3a002e200e202e3b002c200e202f3a002b200e20303a002a200e20313b0028200e20323a0027200e20333a0026200e20343b0024200e20353a0023200e20363a0022200e20373b0020200e2007370018200e20203a0017200e20213a0016200e20223b0014200e20233a0013200e20243a0012200e20253b0010200e200c3a000f200e200d3a000e200e200f3b000c200e20123a000b200e20133a000a200e20143b0008200e20153a0007200e20163a0006200e20173b0004200e20183a0003200e20193a0002200e201f3b0000200941016a2202410574220d41047241046a2208417f4c0d002008102d2209450d092009200b41809c316a41809c31200a1b2212360000200341043602a803200320083602a403200320093602a0032002200341a0036a10690240024020020d0020032802a803210820032802a403210b20032802a003210c0c010b410020032802a80322086b210a20032802a003210c20032802a4032109201021020340024002402009200a6a411f4d0d002009210b0c010b200841206a220b2008490d042009410174220f200b200f200b4b1b220b4100480d040240024020090d00200b102d210c0c010b200c2009200b1031210c0b200c450d0c0b200c20086a22092002290000370000200941186a200241186a290000370000200941106a200241106a290000370000200941086a200241086a290000370000200a41606a210a200841206a2108200b2109200241206a2102200d41606a220d0d000b2003200b3602a403200320083602a8032003200c3602a0030b200ead42808080808008842008ad422086200cad8410040240200b450d00200c102f0b200e102f02402011450d002010102f0b200341a0036a41086a410a3a0000200341a9036a20032903f804370000200341c9036a20032903c002370000200341b1036a200341f8046a41086a290300370000200341b9036a200341f8046a41106a290300370000200341c1036a200341f8046a41186a290300370000200341d1036a200341c0026a41086a290300370000200341d9036a200341c0026a41106a290300370000200341e1036a200341c0026a41186a290300370000200341063a00a003200341ec036a201236020041c8e1ca004100200341a0036a108c01419298ca00ad4280808080900184100122022900002107200229000821052002102f41bfa8c200ad4280808080c001841001220229000021062002290008211a2002102f2003201a3703c801200320063703c001200320053703b801200320073703b001200341b0016aad42808080808004841005200041043a0000410121080c0b0b103d000b1038000b200041023a0000410121080c080b410121080c070b200041023a0000410121080c060b20032802d801210820032802d401210920032802d00121020b2002450d00201a2008ad4220862002ad8410042009450d012002102f0c010b419298ca00ad42808080809001841001220229000021072002290008211b2002102f41aba8c200ad4280808080b0018410012202290000211c2002290008211d2002102f2003201d3703c8012003201c3703c0012003201b3703b801200320073703b0014108102d2202450d01200342083702a403200320023602a0034101200341a0036a1069200328029007200341a0036a107f20032802a4032102201a20033502a80342208620032802a0032208ad8410042002450d002008102f0b200341b8036a2005370300200341b0036a2006370300200341ac036a200a360200200341a8036a41003a0000200341063a00a00341c8e1ca004100200341a0036a108c01200041043a0000410121080c020b1036000b200041023a0000410121080b410121020b024020012d0000416d6a220341014b0d000240024020030e020100010b2002450d01200141086a280200450d01200141046a280200102f0c010b2008450d00200141086a280200450d00200141046a280200102f200424000f0b200424000bd60201027f024002402002450d002002417f6a21040240024020012d0000220241037122054103460d0002400240024020050e03000102000b200241027621020c030b2004450d0320012d0001410874200272220241ffff0371418002490d03200241fcff037141027621020c020b20044103490d0220012f0001200141036a2d000041107472410874200272220241808004490d02200241027621020c010b200241034b0d0120044104490d0120012800012202418080808004490d010b200220036a22012002490d0141012103410121050240200241c000490d0041022105200241808001490d00410441052002418080808004491b21050b0240200141c000490d0041022103200141808001490d00410441052001418080808004491b21030b20002001360204200041003602002000410c6a2003360200200041086a20053602000f0b200041013602000f0b200041013602000b9f0301027f230041e0006b22032400200341003a00050240024002400240200041c000490d00200041808001490d012000418080808004490d0241052104200341053a0005200341033a0000200320003600010c030b41012104200341013a0005200320004102743a00000c020b41022104200341023a0005200320004102744101723b01000c010b41042104200341043a0005200320004102744102723602000b024002402001280200220028020822012002490d0020002802002100200320023602082003200436020c20042002470d0120002003200210e8061a200341e0006a24000f0b20022001104a000b200341286a41146a4109360200200341346a410a360200200341106a41146a41033602002003200341086a36024020032003410c6a360244200341c8006a41146a410036020020034203370214200341b4e0ca003602102003410a36022c200341c8e1ca003602582003420137024c20034188e1ca003602482003200341286a3602202003200341c8006a3602382003200341c4006a3602302003200341c0006a360228200341106a41c8e1ca001043000b881a07027f017e017f027e037f017e027f23004190016b220524000240024002400240024002400240200210b002450d00419298ca00ad4280808080900184100122062900002107200541d8006a41086a200641086a290000370300200520073703582006102f41de97c200ad4280808080e00084100122062900002107200541f0006a41086a200641086a290000370300200520073703702006102f4104102d2206450d042006200236000020064104412410312206450d04200620012900003700042006411c6a200141186a290000370000200641146a200141106a2900003700002006410c6a200141086a2900003700002006ad4280808080c00484100322082900002107200841086a2900002109200841106a290000210a200541106a41186a220b200841186a290000370300200541106a41106a220c200a370300200541106a41086a220d2009370300200520073703102008102f2006102f41c000102d2206450d04200620052903583700002006200529037037001020062005290310370020200641086a200541d8006a41086a290300370000200641186a200541f0006a41086a290300370000200641286a200d290300370000200641306a200c290300370000200641386a200b2903003700002005200641c00041c8e1ca004100410010b501200528020021082006102f20084101460d032005200136020c419298ca00ad4280808080900184100122062900002107200541d8006a41086a2208200641086a290000370300200520073703582006102f41a2a8c200ad4280808080900184100122062900002107200541f0006a41086a220b200641086a290000370300200520073703702006102f20052002360240200541c0006aad220e4280808080c00084100322062900002107200641086a2900002109200641106a290000210a200541106a41186a220c200641186a290000370300200541106a41106a220d200a370300200541106a41086a220f2009370300200520073703102006102f41c000102d2206450d04200620052903583700002006200529037037001020062005290310370020200641086a2008290300370000200641186a200b290300370000200641286a200f290300370000200641306a200d290300370000200641386a200c290300370000200541f0006a2006ad42808080808008842207100210732005280270220b450d01200541f8006a28020021082005280274210c0c020b2000418a263b0001200041086a4111360200200041046a41db93c200360200410321060c050b4104102d2208450d0220054204370214200520083602104100200541106a1069200528021821082005280214210c2005280210210b0b200520083602382005200c3602342005200b3602300240024002400240024002400240024002402008450d00200541106a200b2008410110c40220052802104101470d01200c450d08200b102f0c080b4101200541306a1069200528020c210c024002402005280234220b2005280238220d6b4120490d00200528023021080c010b200d41206a2208200d490d0b200b410174220d2008200d20084b1b220f4100480d0b02400240200b0d00200f102d21080c010b2005280230200b200f103121080b2008450d0a2005200f360234200520083602302005280238210d200f210b0b2008200d6a220f41086a200c41086a290000370000200f41106a200c41106a290000370000200f41186a200c41186a2900003700002005200d41206a220d360238200f200c2900003700000c010b2005280214210d02402005411c6a280200220b200541186a280200220c460d002008200b200c6b6a220841046a220f417f4c0d0202400240200f0d00410121100c010b200f102d2210450d0a0b2005200f36024420052010360240200520083602482005200541c0006a360210200d200541106a200b10c5022008200b490d032005280248220d2008490d042005280238220d200c490d052005280240210f2005280230211020052008200b6b22083602502005200d200c6b220d3602542008200d470d06200f200b6a2010200c6a200810e8061a200528020c210c024002402005280244220b2005280248220d6b4120490d00200528024021080c010b200d41206a2208200d490d0b200b410174220d2008200d20084b1b220f4100480d0b02400240200b0d00200f102d21080c010b2005280240200b200f103121080b2008450d0a2005200f360244200520083602402005280248210d200f210b0b2008200d6a220f41086a200c41086a290000370000200f41106a200c41106a290000370000200f41186a200c41186a2900003700002005200d41206a220d360248200f200c2900003700002005280234450d012005280230102f0c010b2005200541306a360210200d200541106a200c10c502200528020c210c024002402005280234220b2005280238220d6b4120490d00200528023021080c010b200d41206a2208200d490d0a200b410174220d2008200d20084b1b220f4100480d0a02400240200b0d00200f102d21080c010b2005280230200b200f103121080b2008450d092005200f360234200520083602302005280238210d200f210b0b2008200d6a220f41086a200c41086a290000370000200f41106a200c41106a290000370000200f41186a200c41186a2900003700002005200d41206a220d360238200f200c2900003700000b2008450d052007200dad4220862008ad8410040240200b450d002008102f0b2006102f0c060b103d000b200b2008104b000b2008200d104a000b200c200d104b000b200541f0006a41146a4109360200200541fc006a410a360200200541d8006a41146a41033602002005200541d0006a360288012005200541d4006a36028c01200541106a41146a41003602002005420337025c200541b4e0ca003602582005410a360274200541c8e1ca003602202005420137021420054188e1ca003602102005200541f0006a3602682005200541106a3602800120052005418c016a360278200520054188016a360270200541d8006a41c8e1ca001043000b2006102f419298ca00ad4280808080900184100122062900002107200541d8006a41086a2208200641086a290000370300200520073703582006102f41a2a8c200ad4280808080900184100122062900002107200541f0006a41086a220b200641086a290000370300200520073703702006102f20052002360240200e4280808080c00084100322062900002107200641086a2900002109200641106a290000210a200541106a41186a220c200641186a290000370300200541106a41106a220d200a370300200541106a41086a220f2009370300200520073703102006102f41c000102d2206450d01200620052903583700002006200529037037001020062005290310370020200641086a2008290300370000200641186a200b290300370000200641286a200f290300370000200641306a200d290300370000200641386a200c2903003700004108102d2208450d0120054208370214200520083602104101200541106a1069200528020c2108024002402005280214220f2005280218220c6b4120490d002005280210210b0c010b200c41206a220b200c490d03200f410174220d200b200d200b4b1b220d4100480d0302400240200f0d00200d102d210b0c010b2005280210200f200d1031210b0b200b450d022005200d3602142005200b360210200d210f0b200b200c6a220d41086a200841086a290000370000200d41106a200841106a290000370000200d41186a200841186a2900003700002005200c41206a220c360218200d20082900003700002006ad4280808080800884200cad422086200bad8410040240200f450d00200b102f0b2006102f0b419298ca00ad4280808080900184100122062900002107200541d8006a41086a200641086a290000370300200520073703582006102f41de97c200ad4280808080e00084100122062900002107200541f0006a41086a200641086a290000370300200520073703702006102f4104102d2206450d002006200236000020064104412410312206450d00200620012900003700042006411c6a200141186a290000370000200641146a200141106a2900003700002006410c6a200141086a2900003700002006ad4280808080c00484100322012900002107200141086a2900002109200141106a290000210a200541106a41186a2202200141186a290000370300200541106a41106a2208200a370300200541106a41086a220b2009370300200520073703102001102f2006102f41c000102d2206450d00200620052903583700002006200529037037001020062005290310370020200641086a200541d8006a41086a290300370000200641186a200541f0006a41086a290300370000200641286a200b290300370000200641306a2008290300370000200641386a20022903003700004101102d2201450d00200141807f410020031b2004723a00002006ad42808080808008842001ad4280808080108410042001102f2006102f410421060c020b1036000b1038000b200020063a000020054190016a24000bad0602067f047e23004190016b22022400200241c00036020c20022001360208200241106a2001ad4280808080800884100210730240024020022802102203450d002002280214210402400240200241186a2802002201450d0020032d0000220541014b0d002001417f6a2106024002400240024020050e020001000b41002101200241003a008801200341016a21070240034020062001460d01200241e8006a20016a200720016a2d00003a00002002200141016a22053a0088012005210120054120470d000b200241c8006a41186a200241e8006a41186a2903002208370300200241206a41086a200241e8006a41086a290300370300200241206a41106a200241e8006a41106a290300370300200241206a41186a200837030020022002290368370320410021010c020b200141ff0171450d03200241003a0088010c030b41002101200241003a008801200341016a2107034020062001460d02200241e8006a20016a200720016a2d00003a00002002200141016a22053a0088012005210120054120470d000b200241c8006a41186a200241e8006a41186a2903002208370300200241206a41086a200241e8006a41086a290300370300200241206a41106a200241e8006a41106a290300370300200241206a41186a200837030020022002290368370320410121010b200241e8006a41186a200241206a41186a2903002208370300200241e8006a41106a200241206a41106a2903002209370300200241e8006a41086a200241206a41086a290300220a37030020022002290320220b370368200041196a2008370000200041116a2009370000200041096a200a3700002000200b3700010c020b200141ff0171450d00200241003a0088010b20024100360250200242013703482002410b3602242002200241086a3602202002200241c8006a360244200241fc006a41013602002002420137026c200241b885c7003602682002200241206a360278200241c4006a41d8dbc100200241e8006a103c1a200235025042208620023502488410080240200228024c450d002002280248102f0b410221010b200020013a00002004450d012003102f0c010b200041023a00000b20024190016a24000bde0201047f230041e0006b22022400200241c00036020c20022001360208200241106a2001ad4280808080800884100210730240024020022802102201450d00200228021421032002200241186a2802002204360224200220013602200240024020044104490d0020022004417c6a3602242002200141046a36022020012800002104200241c8006a200241206a10980320022802482205450d002000200229024c37020820002005360204200020043602000c010b20024100360230200242013703282002410b36023c2002200241086a3602382002200241286a360244200241dc006a41013602002002420137024c200241b885c7003602482002200241386a360258200241c4006a41d8dbc100200241c8006a103c1a200235023042208620023502288410080240200228022c450d002002280228102f0b200041003602040b2003450d012001102f0c010b200041003602040b200241e0006a24000bdc0703067f017e0a7f230041a0016b220224002002412036021420022001360210200241186a2001ad428080808080048410021073024002400240024002400240024020022802182203450d00200228021c21042002200241206a28020036022c20022003360228200241086a200241286a10e60120022802080d04200228020c2205200228022c220641286e2201200120054b1b2207ad42287e2208422088a70d012008a72201417f4c0d010240024020010d00410421090c010b2001102d2209450d03200141286e21070b02402005450d004100210a0340024002400240024020064104490d00200a41016a210b20022006417c6a220c36022c20022002280228220d41046a360228200d280000210e41002101200241003a00980102400340200c2001460d01200241f8006a20016a200d20016a220f41046a2d00003a00002002200f41056a3602282002200141016a220f3a009801200f2101200f4120470d000b200241d8006a41086a220c200241f8006a41086a290300370300200241d8006a41106a2210200241f8006a41106a290300370300200241d8006a41186a2211200241f8006a41186a2903003703002002200229037837035820022006200f6b2206417c6a220136022c20014104490d01200241386a41086a2212200c290300370300200241386a41106a220c2010290300370300200241386a41186a22102011290300370300200220022903583703382002200641786a220636022c2002200d200f6a220141086a360228200141046a280000210f2007200a470d04200a4101742201200b2001200b4b1bad42287e2208422088a70d0a2008a722014100480d0a200a0d022001102d21090c030b2002410036022c200141ff0171450d00200241003a0098010b2007450d092009102f0c090b2009200a41286c2001103121090b2009450d05200141286e21070b2009200a41286c6a2201200e360200200120022903383702042001410c6a2012290300370200200141146a200c2903003702002001411c6a20102903003702002001200f360224200b210a200b2005470d000b0b2009450d042000200736020420002009360200200041086a20053602000c050b200041003602000c050b103d000b1036000b1038000b20024100360260200242013703582002410b36023c2002200241106a3602382002200241d8006a3602342002418c016a41013602002002420137027c200241b885c7003602782002200241386a36028801200241346a41d8dbc100200241f8006a103c1a200235026042208620023502588410080240200228025c450d002002280258102f0b200041003602000b2004450d002003102f0b200241a0016a24000bcb0503027f037e027f230041f0016b22012400418de6c300ad4280808080e00084100122022900002103200141086a41086a200241086a290000370300200120033703082002102f41f0e8c600ad4280808080f00084100122022900002103200141a8016a41086a200241086a290000370300200120033703a8012002102f02404120102d2202450d0020022000290000370000200241186a200041186a290000370000200241106a200041106a290000370000200241086a200041086a2900003700002002ad4280808080800484100322002900002103200041086a2900002104200041106a2900002105200141d0006a41186a2206200041186a290000370300200141d0006a41106a22072005370300200141d0006a41086a2004370300200120033703502000102f2002102f41c000102d2202450d0020022001290308370000200220012903a80137001020022001290350370020200241086a200141086a41086a290300370000200241186a200141a8016a41086a290300370000200241286a200141d0006a41086a2200290300370000200241306a2007290300370000200241386a2006290300370000200141d0006a200210f60220012903502103200141a8016a200041c40010e8061a200141a4016a41026a22062001419f016a2d00003a0000200120012f009d013b01a4010240024020034201510d0041002100200141086a410041c40010e7061a0c010b20012d009c012100200141086a200141a8016a41c40010e8061a200141046a41026a20062d00003a0000200120012f01a4013b01040b200141d8006a200141086a41c40010e80621062001419f016a200141066a2d00003a000020014201370350200141002000411874220041808080786a2207200720004b1b4118763a009c01200120012f01043b009d01200141c0003602ac01200120023602a8012006200141a8016a1090032002102f200141f0016a24000f0b1036000bec0d03077f017e067f230041c0026b220324002003200236020420032001360200200341086a2002ad4220862001ad84100210730240024020032802082204450d00200341106a2802002105200328020c210641002101200341003a00b8022005417e6a21070240024002400240024002400240034020052001460d0120034198026a20016a200420016a2d00003a00002003200141016a22023a00b8022007417f6a21072002210120024120470d000b200341f8016a41186a20034198026a41186a290300370300200341f8016a41106a20034198026a41106a290300370300200341f8016a41086a20034198026a41086a29030037030020032003290398023703f80120052002460d04200420026a22082d0000220941074f0d04200341f8006a41186a200341f8016a41186a290300370300200341f8006a41106a200341f8016a41106a290300370300200341f8006a41086a200341f8016a41086a290300370300200320032903f8013703782005417f6a2002460d04200841016a2d0000220141014b0d04200520026b210220010e020201020b200141ff0171450d03200341003a00b8020c030b41002101200341003a00b8022002417e6a21050240034020052001460d0120034198026a20016a200820016a41026a2d00003a00002003200141016a22023a00b8022002210120024120470d000b200341d8016a41086a20034198026a41086a290300220a370300200341b8016a41186a20034198026a41186a290300370300200341b8016a41106a20034198026a41106a290300370300200341b8016a41086a200a3703002003200329039802220a3703d8012003200a3703b801200720026b2107200820026a41026a2105410121010c020b200141ff0171450d02200341003a00b8020c020b200841026a21052002417e6a2107410021010b20034198016a41186a200341b8016a41186a29030037030020034198016a41106a200341b8016a41106a29030037030020034198016a41086a200341b8016a41086a290300370300200320032903b801370398012007450d0020052d0000220241014b0d004100210802400240024020020e020100010b41002102200341003a00b802200541016a21082007417f6a2105034020052002460d0220034198026a20026a200820026a2d00003a00002003200241016a22073a00b8022007210220074120470d000b200341d8016a41086a20034198026a41086a290300220a370300200341b8016a41186a20034198026a41186a290300370300200341b8016a41106a20034198026a41106a290300370300200341b8016a41086a200a3703002003200329039802220a3703d8012003200a3703b801410121080b200341186a41186a2202200341b8016a41186a290300370300200341186a41106a2207200341b8016a41106a290300370300200341186a41086a2205200341b8016a41086a290300370300200341386a41086a220b20034198016a41086a290300370300200341386a41106a220c20034198016a41106a290300370300200341386a41186a220d20034198016a41186a290300370300200320032903b8013703182003200329039801370338200341d8006a41186a220e200341f8006a41186a290300370300200341d8006a41106a220f200341f8006a41106a290300370300200341d8006a41086a2210200341f8006a41086a2903003703002003200329037837035820014102460d0220002003290358370000200020093a0020200041186a200e290300370000200041106a200f290300370000200041086a201029030037000020034198026a41086a2209200b29030037030020034198026a41106a220b200c29030037030020034198026a41186a220c200d2903003703002003200329033837039802200341f8016a41186a220d2002290300370300200341f8016a41106a22022007290300370300200341f8016a41086a22072005290300370300200320032903183703f8012000413a6a200c290300370000200041326a200b2903003700002000412a6a20092903003700002000200329039802370022200041c2006a20083a0000200041c3006a20032903f801370000200041cb006a2007290300370000200041d3006a2002290300370000200041db006a200d2903003700000c030b200241ff0171450d00200341003a00b8020b410221010b2003410036028002200342013703f8012003410b3602dc01200320033602d8012003200341f8016a3602b801200341ac026a41013602002003420137029c02200341b885c700360298022003200341d8016a3602a802200341b8016a41d8dbc10020034198026a103c1a20033502800242208620033502f80184100820032802fc01450d0020032802f801102f0b200020013a00212006450d012004102f0c010b200041023a00210b200341c0026a24000bbd0101047f230041106b2202240020002802082103200028020021004101210420012802184199a5c00041012001411c6a28020028020c1100002105200241003a0005200220053a00042002200136020002402003450d0003402002200036020c20022002410c6a4190ebc30010621a200041016a21002003417f6a22030d000b20022d000421050b0240200541ff01710d00200228020022002802184198a5c00041012000411c6a28020028020c11000021040b200241106a240020040bc80801047f0240024002400240200028020022020d0002400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d04200341017422022004200220044b1b22024100480d040240024020030d002002102d21040c010b200128020020032002103121040b2004450d0320012004360200200141046a2002360200200141086a28020021030b200141086a200341016a360200200420036a41003a00000c010b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d03200341017422052004200520044b1b22054100480d030240024020030d002005102d21040c010b200128020020032005103121040b2004450d0220012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41013a00002002280200210302400240200141046a2802002202200528020022046b4120490d00200128020021020c010b200441206a22052004490d03200241017422042005200420054b1b22044100480d030240024020020d002004102d21020c010b200128020020022004103121020b2002450d0220012002360200200141046a2004360200200141086a28020021040b200141086a200441206a360200200220046a220441186a200341186a290000370000200441106a200341106a290000370000200441086a200341086a290000370000200420032900003700000b200141046a2802002104200141086a28020021030240200028020422000d000240024020042003460d00200128020021000c010b200341016a22002003490d03200341017422042000200420004b1b22044100480d030240024020030d002004102d21000c010b200128020020032004103121000b2000450d0220012000360200200141046a2004360200200141086a28020021030b200141086a200341016a360200200020036a41003a00000f0b0240024020042003460d00200128020021040c010b200341016a22042003490d02200341017422022004200220044b1b22024100480d020240024020030d002002102d21040c010b200128020020032002103121040b2004450d0120012004360200200141046a2002360200200141086a28020021030b200141086a2202200341016a360200200420036a41013a000002400240200141046a2802002204200228020022036b4120490d00200128020021040c010b200341206a22022003490d02200441017422032002200320024b1b22034100480d020240024020040d002003102d21040c010b200128020020042003103121040b2004450d0120012004360200200141046a2003360200200141086a28020021030b200141086a200341206a360200200420036a220141186a200041186a290000370000200141106a200041106a290000370000200141086a200041086a290000370000200120002900003700000f0b1036000b1038000bbe0801037f200141046a2802002102200141086a2802002103024002400240024020002d00004101460d000240024020022003460d00200128020021020c010b200341016a22022003490d04200341017422042002200420024b1b22044100480d040240024020030d002004102d21020c010b200128020020032004103121020b2002450d0320012002360200200141046a2004360200200141086a28020021030b200141086a200341016a360200200220036a41003a00000c010b0240024020022003460d00200128020021020c010b200341016a22022003490d03200341017422042002200420024b1b22044100480d030240024020030d002004102d21020c010b200128020020032004103121020b2002450d0220012002360200200141046a2004360200200141086a28020021030b200141086a2204200341016a360200200220036a41013a000002400240200141046a2802002202200428020022036b4120490d00200128020021020c010b200341206a22042003490d03200241017422032004200320044b1b22034100480d030240024020020d002003102d21020c010b200128020020022003103121020b2002450d0220012002360200200141046a2003360200200141086a28020021030b200141086a200341206a360200200220036a220341186a200041196a290000370000200341106a200041116a290000370000200341086a200041096a290000370000200320002900013700000b200141046a2802002102200141086a2802002103024020002d00214101460d000240024020022003460d00200128020021000c010b200341016a22002003490d03200341017422022000200220004b1b22024100480d030240024020030d002002102d21000c010b200128020020032002103121000b2000450d0220012000360200200141046a2002360200200141086a28020021030b200141086a200341016a360200200020036a41003a00000f0b0240024020022003460d00200128020021020c010b200341016a22022003490d02200341017422042002200420024b1b22044100480d020240024020030d002004102d21020c010b200128020020032004103121020b2002450d0120012002360200200141046a2004360200200141086a28020021030b200141086a2204200341016a360200200220036a41013a000002400240200141046a2802002202200428020022036b4120490d00200128020021020c010b200341206a22042003490d02200241017422032004200320044b1b22034100480d020240024020020d002003102d21020c010b200128020020022003103121020b2002450d0120012002360200200141046a2003360200200141086a28020021030b200141086a200341206a360200200220036a220141186a2000413a6a290000370000200141106a200041326a290000370000200141086a2000412a6a2900003700002001200041226a2900003700000f0b1036000b1038000bfb0903047f037e037f230041e0006b22022400200241186a2203200041186a290000370300200241106a2204200041106a290000370300200241086a2205200041086a29000037030020022000290000370300419298ca00ad4280808080900184100122002900002106200241206a41086a200041086a290000370300200220063703202000102f4199a8c200ad4280808080900184100122002900002106200241306a41086a200041086a290000370300200220063703302000102f0240024002404120102d2200450d0020002002290300370000200041186a2003290300370000200041106a2004290300370000200041086a20052903003700002000ad4280808080800484100322032900002106200341086a2900002107200341106a2900002108200241c0006a41186a200341186a290000370300200241c0006a41106a2008370300200241c0006a41086a2007370300200220063703402003102f2000102f41c000102d2203450d00200320022903203700002003200229033037001020032002290340370020200341086a200241206a41086a290300370000200341186a200241306a41086a290300370000200341286a200241c0006a41086a290300370000200341306a200241d0006a290300370000200341386a200241c0006a41186a290300370000200141186a280200220941186a2200417f4c0d010240024020000d00410121040c010b2000102d2204450d010b2002410036024820022000360244200220043602402001280210210a2009200241c0006a106902400240200228024422052002280248220b6b2009490d00200228024021000c010b200b20096a2200200b490d03200541017422042000200420004b1b22044100480d030240024020050d002004102d21000c010b200228024020052004103121000b2000450d012002200436024420022000360240200421050b2002200b20096a22043602482000200b6a200a200910e8061a02400240200520046b411f4d0d00200521090c010b200441206a22092004490d032005410174220b2009200b20094b1b22094100480d030240024020050d002009102d21000c010b200020052009103121000b2000450d0120022009360244200220003602400b200020046a220541186a200141346a290000370000200541106a2001412c6a290000370000200541086a200141246a2900003700002002200441206a220b3602482005200129001c370000200141086a290300210620012903002107024002402009200b6b410f4d0d00200921050c010b200b41106a2205200b490d032009410174220a2005200a20054b1b22054100480d030240024020090d002005102d21000c010b200020092005103121000b2000450d0120022005360244200220003602400b2000200b6a22092006370008200920073700002002200441306a2209360248200128023c210b02400240200520096b4104490d00200441346a21040c010b200941046a22042009490d032005410174220a2004200a20044b1b220a4100480d030240024020050d00200a102d21000c010b20002005200a103121000b2000450d012002200a360244200220003602400b20022004360248200020096a200b360000200228024421002003ad4280808080800884200235024842208620022802402204ad84100402402000450d002004102f0b2003102f0240200141146a280200450d002001280210102f0b200241e0006a24000f0b1036000b103d000b1038000bcb0503027f037e027f230041f0016b22012400418de6c300ad4280808080e00084100122022900002103200141086a41086a200241086a290000370300200120033703082002102f41f0e8c600ad4280808080f00084100122022900002103200141a8016a41086a200241086a290000370300200120033703a8012002102f02404120102d2202450d0020022000290000370000200241186a200041186a290000370000200241106a200041106a290000370000200241086a200041086a2900003700002002ad4280808080800484100322002900002103200041086a2900002104200041106a2900002105200141d0006a41186a2206200041186a290000370300200141d0006a41106a22072005370300200141d0006a41086a2004370300200120033703502000102f2002102f41c000102d2202450d0020022001290308370000200220012903a80137001020022001290350370020200241086a200141086a41086a290300370000200241186a200141a8016a41086a290300370000200241286a200141d0006a41086a2200290300370000200241306a2007290300370000200241386a2006290300370000200141d0006a200210f60220012903502103200141a8016a200041c40010e8061a200141a4016a41026a22062001419f016a2d00003a0000200120012f009d013b01a4010240024020034201510d0041002100200141086a410041c40010e7061a0c010b20012d009c012100200141086a200141a8016a41c40010e8061a200141046a41026a20062d00003a0000200120012f01a4013b01040b200141d8006a200141086a41c40010e80621062001419f016a200141066a2d00003a0000200142013703502001417f2000411874220041808080086a220720072000491b4118763a009c01200120012f01043b009d01200141c0003602ac01200120023602a8012006200141a8016a1090032002102f200141f0016a24000f0b1036000bb60201037f23004180016b220224002000280200210002400240024002400240200128020022034110710d002000280200210420034120710d012004ad41012001104521000c020b20002802002104410021000340200220006a41ff006a2004410f712203413072200341d7006a2003410a491b3a00002000417f6a2100200441047622040d000b20004180016a22044181014f0d022001410141bc8ac0004102200220006a4180016a410020006b104821000c010b410021000340200220006a41ff006a2004410f712203413072200341376a2003410a491b3a00002000417f6a2100200441047622040d000b20004180016a22044181014f0d022001410141bc8ac0004102200220006a4180016a410020006b104821000b20024180016a240020000f0b2004418001104b000b2004418001104b000bca0d030e7f047e037f230022022103200241a0016b416071220224002002427f3703082002427f37030041012104200241013a00182002200029000037031020024180016a200110ff042002280280012105200228028401210602400240024002402002280288012207450d002005200741057422086a2109200841606a210a200241e0006a41106a210b200241e0006a41196a210c41012104200521080340200241c0006a41106a220d200841106a290300370300200241c0006a41086a220e200841086a29030037030020022008290300370340200841186a2d0000210f2002200841196a28000036022820022008411c6a28000036002b200f4103460d01200b200d290300370300200241e0006a41086a200e290300370300200c2002280228360000200c41036a200228002b360000200220022903403703602002200f3a0078024002400240200b2000460d00200b2900002000290000510d002002200c2800003602582002200c41036a28000036005b200241e8006a2903002110200229036021110c010b2002200229039001370310200229030821122002200229038801370308200229030021132002200229038001370300200241033a00980120022903182110200220022903980122113703182011a721042010a7220d41ff01714103460d01200241e8006a2903002210201220022903602211201356201020125620102012511b220b1b211020112013200b1b2111200f4102200f200d41ff0171461b210f0b200229037021122002200228005b36003320022002280258360230200220022802303602382002200228003336003b4120102d220d450d04200d2011370300200d200f3a0018200d2012370310200d2002280238360019200d2010370308200d411c6a200228003b36000002400240200a0d004101210c410121140c010b200841206a2115200741057420056a41606a2116200241e0006a41106a210b200241e0006a41196a210a4101210c410121140340201521080340200241c0006a41106a220e200841106a290300370300200241c0006a41086a2207200841086a29030037030020022008290300370340200841186a2d0000210f2002200841196a28000036022820022008411c6a28000036002b200f4103460d02200b200e290300370300200241e0006a41086a220e2007290300370300200a2002280228360000200a41036a2207200228002b360000200220022903403703602002200f3a007802400240200b2000460d00200b2900002000290000510d002002200a2800003602582002200728000036005b200e2903002110200229036021110c010b2002200229039001370310200229030821122002200229038801370308200229030021132002200229038001370300200241033a00980120022903182110200220022903980122113703182011a7210402402010a741ff017122074103460d00200e2903002210201220022903602211201356201020125620102012511b220e1b211020112013200e1b2111200f4102200f2007461b210f0c010b200841206a22082009470d010c030b0b200229037021122002200228005b36003320022002280258360230200220022802303602382002200228003336003b2002200228003b36008301200220022802383602800102402014200c470d00200c41016a220e200c490d08200c4101742207200e2007200e4b1b220e41ffffff3f71200e470d08200e410574220e4100480d0802400240200c0d00200e102d210d0c010b200d200c410574200e1031210d0b200d450d07200e41057621140b200841206a2115200d200c4105746a220e200f3a0018200e2010370308200e2011370300200e2012370310200e200228028001360019200e411c6a200228008301360000200c41016a210c20162008470d000b0b2006450d032005102f0c030b200a41606a210a200841206a22082009470d000b0b4108210d4100210c02402006450d002005102f0b410021140b0240200441ff01714103460d0020024180016a41186a220f200229031837030020024180016a41106a2200200229031037030020024180016a41086a220b200229030837030020022002290300370380010240200c2014470d00200c41016a2208200c490d03200c410174220a2008200a20084b1b220841ffffff3f712008470d03200841057422084100480d0302400240200c0d002008102d210d0c010b200d200c41057420081031210d0b200d450d02200841057621140b200d200c4105746a2208200229038001370300200841186a200f290300370300200841106a2000290300370300200841086a200b290300370300200c41016a210c0b2001200d200c10800502402014450d00200d102f0b200324000f0b1036000b1038000b13002000411b360204200041849bc3003602000b130020004105360204200041c0e6c3003602000b130020004106360204200041f0a7c0003602000b130020004102360204200041ccd9c9003602000b13002000410536020420004180b6c6003602000b130020004103360204200041c0cbc8003602000b130020004101360204200041d09eca003602000b130020004111360204200041e497c2003602000b130020004107360204200041fcd5c7003602000b130020004105360204200041d889c7003602000b130020004106360204200041bcd2c4003602000b130020004103360204200041e898ca003602000b13002000410b360204200041d4c8c4003602000b130020004108360204200041e4cec1003602000b130020004103360204200041b8b3c4003602000b130020004103360204200041ccc5c3003602000b130020004101360204200041889cca003602000b130020004107360204200041b0f6c0003602000b13002000410f36020420004180b8c4003602000b130020004106360204200041c4cec7003602000b13002000410236020420004194f1c0003602000bf70101077f230041106b220124002001410036020820014201370300200110e80220012802042102200128020021030240024002400240200041046a2802002204200041086a28020022056b20012802082206490d00200028020021040c010b200520066a22072005490d02200441017422052007200520074b1b22054100480d020240024020040d002005102d21040c010b200028020020042005103121040b2004450d0120002004360200200041046a2005360200200041086a28020021050b200041086a200520066a360200200420056a2003200610e8061a02402002450d002003102f0b200141106a24000f0b1036000b1038000b990903017f017e057f230041e0006b22022400024002400240024002400240024002402000290300220342c000540d00200342808001540d012003428080808004540d024108200379a741037622046b41044f0d0341d6bcc600413641f8b4ca001039000b02400240200141046a280200200141086a2802002200460d00200128020021050c010b200041016a22052000490d06200041017422042005200420054b1b22044100480d060240024020000d002004102d21050c010b200128020020002004103121050b2005450d0520012005360200200141046a2004360200200141086a28020021000b200141086a200041016a360200200520006a2003a74102743a00000c030b02400240200141046a2802002205200141086a28020022006b4102490d00200128020021050c010b200041026a22042000490d05200541017422002004200020044b1b22004100480d050240024020050d002000102d21050c010b200128020020052000103121050b2005450d0420012005360200200141046a2000360200200141086a28020021000b200141086a200041026a360200200520006a2003a74102744101723b00000c020b02400240200141046a2802002205200141086a28020022006b4104490d00200128020021050c010b200041046a22042000490d04200541017422002004200020044b1b22004100480d040240024020050d002000102d21050c010b200128020020052000103121050b2005450d0320012005360200200141046a2000360200200141086a28020021000b200141086a200041046a360200200520006a2003a74102744102723600000c010b02400240200141046a280200200141086a2802002205460d00200128020021060c010b200541016a22072005490d03200541017422062007200620074b1b22074100480d030240024020050d002007102d21060c010b200128020020052007103121060b2006450d0220012006360200200141046a2007360200200141086a28020021050b200141086a2207200541016a360200200620056a411320044102746b3a0000200220002903002203370308200441786a2105200141046a2106034002400240200628020020072802002200460d00200128020021040c010b200041016a22042000490d04200041017422082004200820044b1b22084100480d040240024020000d002008102d21040c010b200128020020002008103121040b2004450d032001200436020020062008360200200728020021000b2007200041016a360200200420006a2003a73a000020034208882103200541016a22002005492104200021052004450d000b20022003370308200350450d030b200241e0006a24000f0b1036000b1038000b200241286a41146a4109360200200241346a412b360200200241106a41146a41033602002002200241086a36024020024190bdc600360244200241c8006a41146a410036020020024203370214200241b4e0ca003602102002412b36022c200241c8e1ca003602582002420137024c20024198bdc6003602482002200241286a3602202002200241c8006a3602382002200241c4006a3602302002200241c0006a360228200241106a41e8d8c9001043000b9b1301067f230041106b2202240002400240024002400240024002400240024020012d00000e06010402030500010b20024100360208200242013703004101102d2203450d06200242818080801037020420022003360200200341003a0000200141046a28020021042001410c6a2802002201200210690240024020022802042205200228020822036b2001490d00200228020021050c010b200320016a22062003490d08200541017422072006200720064b1b22064100480d080240024020050d002006102d21050c010b200228020020052006103121050b2005450d0720022006360204200220053602000b2002200320016a360208200520036a2004200110e8061a0c050b20024100360208200242013703004101102d2203450d05200242818080801037020420022003360200200341023a00004120102d2203450d0520032001290001370000200341186a200141196a290000370000200341106a200141116a290000370000200341086a200141096a2900003700000240024020022802042204200228020822016b4120490d00200141206a2105200228020021040c010b200141206a22052001490d07200441017422062005200620054b1b22064100480d070240024020040d002006102d21040c010b200228020020042006103121040b2004450d0620022006360204200220043602000b200420016a220141086a200341086a290000370000200141106a200341106a290000370000200141186a200341186a29000037000020022005360208200120032900003700002003102f0c040b20024100360208200242013703004101102d2203450d04200242818080801037020420022003360200200341043a00000240024020022802042205200228020822036b4104490d00200228020021050c010b200341046a22042003490d06200541017422062004200620044b1b22044100480d060240024020050d002004102d21050c010b200228020020052004103121050b2005450d0520022004360204200220053602000b2002200341046a360208200520036a200128000136000020012802082104200141106a2802002201200210690240024020022802042205200228020822036b2001490d00200228020021050c010b200320016a22062003490d06200541017422072006200720064b1b22064100480d060240024020050d002006102d21050c010b200228020020052006103121050b2005450d0520022006360204200220053602000b2002200320016a360208200520036a2004200110e8061a0c030b20024100360208200242013703004101102d2203450d03200242818080801037020420022003360200200341053a00000240024020022802042205200228020822036b4104490d00200228020021050c010b200341046a22042003490d05200541017422062004200620044b1b22044100480d050240024020050d002004102d21050c010b200228020020052004103121050b2005450d0420022004360204200220053602000b2002200341046a360208200520036a200128000136000020012802082104200141106a2802002201200210690240024020022802042205200228020822036b2001490d00200228020021050c010b200320016a22062003490d05200541017422072006200720064b1b22064100480d050240024020050d002006102d21050c010b200228020020052006103121050b2005450d0420022006360204200220053602000b2002200320016a360208200520036a2004200110e8061a0c020b20024100360208200242013703004101102d2203450d02200242818080801037020420022003360200200341063a00000240024020022802042205200228020822036b4104490d00200228020021050c010b200341046a22042003490d04200541017422062004200620044b1b22044100480d040240024020050d002004102d21050c010b200228020020052004103121050b2005450d0320022004360204200220053602000b2002200341046a360208200520036a200128000136000020012802082104200141106a2802002201200210690240024020022802042205200228020822036b2001490d00200228020021050c010b200320016a22062003490d04200541017422072006200720064b1b22064100480d040240024020050d002006102d21050c010b200228020020052006103121050b2005450d0320022006360204200220053602000b2002200320016a360208200520036a2004200110e8061a0c010b20024100360208200242013703004101102d2203450d01200242818080801037020420022003360200200341073a000002400240200228020420022802082203460d00200228020021050c010b200341016a22052003490d03200341017422042005200420054b1b22044100480d030240024020030d002004102d21050c010b200228020020032004103121050b2005450d0220022004360204200220053602000b2002200341016a360208200520036a41003a00002002280204210520022802082103024020012802044101460d000240024020052003460d00200228020021010c010b200341016a22012003490d04200341017422052001200520014b1b22054100480d040240024020030d002005102d21010c010b200228020020032005103121010b2001450d0320022005360204200220013602000b2002200341016a360208200120036a41003a00000c010b0240024020052003460d00200228020021050c010b200341016a22052003490d03200341017422042005200420054b1b22044100480d030240024020030d002004102d21050c010b200228020020032004103121050b2005450d0220022004360204200220053602000b2002200341016a360208200520036a41013a0000200141086a28020021060240024020022802042204200228020822036b4104490d00200341046a2105200228020021040c010b200341046a22052003490d03200441017422072005200720054b1b22074100480d030240024020040d002007102d21040c010b200228020020042007103121040b2004450d0220022007360204200220043602000b20022005360208200420036a20063600002001410c6a28020021050240024020022802042203200228020822016b4104490d00200228020021030c010b200141046a22042001490d03200341017422062004200620044b1b22044100480d030240024020030d002004102d21030c010b200228020020032004103121030b2003450d0220022004360204200220033602000b2002200141046a360208200320016a20053600000b200020022201290200370200200041086a200141086a280200360200200241106a24000f0b1036000b1038000bc80901037f024002400240024002400240024020002d00004101470d00200041046a280200220241ffff034b0d01200241ef014b0d04200141046a280200200141086a2802002200460d02200128020021030c030b02400240200141046a280200200141086a2802002202460d00200128020021030c010b200241016a22032002490d06200241017422042003200420034b1b22044100480d060240024020020d002004102d21030c010b200128020020022004103121030b2003450d0520012003360200200141046a2004360200200141086a28020021020b200141086a2204200241016a360200200320026a41ff013a000002400240200141046a2802002203200428020022026b4120490d00200128020021030c010b200241206a22042002490d06200341017422022004200220044b1b22024100480d060240024020030d002002102d21030c010b200128020020032002103121030b2003450d0520012003360200200141046a2002360200200141086a28020021020b200141086a200241206a360200200320026a220141186a200041196a290000370000200141106a200041116a290000370000200141086a200041096a290000370000200120002900013700000f0b02400240200141046a280200200141086a2802002200460d00200128020021030c010b200041016a22032000490d05200041017422042003200420034b1b22044100480d050240024020000d002004102d21030c010b200128020020002004103121030b2003450d0420012003360200200141046a2004360200200141086a28020021000b200141086a2204200041016a360200200320006a41fd013a000002400240200141046a2802002203200428020022006b4104490d00200128020021030c010b200041046a22042000490d05200341017422002004200020044b1b22004100480d050240024020030d002000102d21030c010b200128020020032000103121030b2003450d0420012003360200200141046a2000360200200141086a28020021000b200141086a200041046a360200200320006a20023600000f0b200041016a22032000490d03200041017422042003200420034b1b22044100480d030240024020000d002004102d21030c010b200128020020002004103121030b2003450d0220012003360200200141046a2004360200200141086a28020021000b200141086a200041016a360200200320006a20023a00000f0b02400240200141046a280200200141086a2802002200460d00200128020021030c010b200041016a22032000490d02200041017422042003200420034b1b22044100480d020240024020000d002004102d21030c010b200128020020002004103121030b2003450d0120012003360200200141046a2004360200200141086a28020021000b200141086a2204200041016a360200200320006a41fc013a000002400240200141046a2802002203200428020022006b4102490d00200128020021030c010b200041026a22042000490d02200341017422002004200020044b1b22004100480d020240024020030d002000102d21030c010b200128020020032000103121030b2003450d0120012003360200200141046a2000360200200141086a28020021000b200141086a200041026a360200200320006a20023b00000f0b1036000b1038000bff1201077f02400240024020002d0000417f6a220241044b0d000240024002400240024020020e050001020304000b02400240200141046a280200200141086a2802002202460d00200128020021030c010b200241016a22032002490d07200241017422042003200420034b1b22044100480d070240024020020d002004102d21030c010b200128020020022004103121030b2003450d0620012003360200200141046a2004360200200141086a28020021020b200141086a2205200241016a360200200320026a41003a0000200028022421022000412c6a28020022032001106902402003450d0020034105742106200141046a210703400240024020072802002204200528020022036b4120490d00200128020021040c010b200341206a22082003490d09200441017422032008200320084b1b22034100480d090240024020040d002003102d21040c010b200128020020042003103121040b2004450d082001200436020020072003360200200528020021030b2005200341206a360200200420036a220341186a200241186a290000370000200341106a200241106a290000370000200341086a200241086a29000037000020032002290000370000200241206a2102200641606a22060d000b0b024020002d00014101460d0002400240200141046a280200200141086a2802002202460d00200128020021030c010b200241016a22032002490d08200241017422042003200420034b1b22044100480d080240024020020d002004102d21030c010b200128020020022004103121030b2003450d0720012003360200200141046a2004360200200141086a28020021020b200141086a200241016a360200200320026a41003a00000f0b02400240200141046a280200200141086a2802002202460d00200128020021030c010b200241016a22032002490d07200241017422042003200420034b1b22044100480d070240024020020d002004102d21030c010b200128020020022004103121030b2003450d0620012003360200200141046a2004360200200141086a28020021020b200141086a2204200241016a360200200320026a41013a000002400240200141046a2802002203200428020022026b4120490d00200128020021030c010b200241206a22042002490d07200341017422022004200220044b1b22024100480d070240024020030d002002102d21030c010b200128020020032002103121030b2003450d0620012003360200200141046a2002360200200141086a28020021020b200141086a200241206a360200200320026a220241186a200041026a220341186a290000370000200241106a200341106a290000370000200241086a200341086a290000370000200220032900003700000f0b02400240200141046a280200200141086a2802002202460d00200128020021030c010b200241016a22032002490d06200241017422042003200420034b1b22044100480d060240024020020d002004102d21030c010b200128020020022004103121030b2003450d0520012003360200200141046a2004360200200141086a28020021020b200141086a200241016a360200200320026a41013a0000200028020420011091010f0b02400240200141046a280200200141086a2802002202460d00200128020021030c010b200241016a22032002490d05200241017422042003200420034b1b22044100480d050240024020020d002004102d21030c010b200128020020022004103121030b2003450d0420012003360200200141046a2004360200200141086a28020021020b200141086a200241016a360200200320026a41023a0000200041046a2001109502200028020820011091010f0b02400240200141046a280200200141086a2802002202460d00200128020021030c010b200241016a22032002490d04200241017422042003200420034b1b22044100480d040240024020020d002004102d21030c010b200128020020022004103121030b2003450d0320012003360200200141046a2004360200200141086a28020021020b200141086a2205200241016a360200200320026a41033a00004120102d2202450d0220022000290001370000200241186a200041196a290000370000200241106a200041116a290000370000200241086a200041096a29000037000002400240200141046a2802002204200528020022036b4120490d00200128020021040c010b200341206a22052003490d04200441017422032005200320054b1b22034100480d040240024020040d002003102d21040c010b200128020020042003103121040b2004450d0320012004360200200141046a2003360200200141086a28020021030b200141086a2205200341206a360200200420036a220341186a200241186a290000370000200341106a200241106a290000370000200341086a200241086a290000370000200320022900003700002002102f200041246a200110950220002d0021210402400240200141046a28020020052802002202460d00200128020021030c010b200241016a22032002490d04200241017422052003200520034b1b22054100480d040240024020020d002005102d21030c010b200128020020022005103121030b2003450d0320012003360200200141046a2005360200200141086a28020021020b200141086a200241016a360200200320026a20043a00000f0b02400240200141046a280200200141086a2802002202460d00200128020021030c010b200241016a22032002490d03200241017422042003200420034b1b22044100480d030240024020020d002004102d21030c010b200128020020022004103121030b2003450d0220012003360200200141046a2004360200200141086a28020021020b200141086a2205200241016a360200200320026a41043a00004120102d2202450d0120022000290001370000200241186a200041196a290000370000200241106a200041116a290000370000200241086a200041096a29000037000002400240200141046a2802002204200528020022036b4120490d00200128020021040c010b200341206a22052003490d03200441017422032005200320054b1b22034100480d030240024020040d002003102d21040c010b200128020020042003103121040b2004450d0220012004360200200141046a2003360200200141086a28020021030b200141086a200341206a360200200420036a220341186a200241186a290000370000200341106a200241106a290000370000200341086a200241086a290000370000200320022900003700002002102f200041246a20011095020b0f0b1036000b1038000bcc0301037f02404120102d2202450d0020022001290000370000200241186a200141186a290000370000200241106a200141106a290000370000200241086a200141086a2900003700004110102d2203450d00200341e7e485f30636020c200342a08080808004370204200320023602004120102d2202450d0020022001290020370000200241186a200141386a290000370000200241106a200141306a290000370000200241086a200141286a29000037000020034110412010312204450d00200441e2c289ab0636021c200442a08080808004370214200420023602104120102d2203450d0020032001290040370000200341186a200141d8006a290000370000200341106a200141d0006a290000370000200341086a200141c8006a2900003700002004412041c00010312202450d00200241e9dabdf30636022c200242a08080808004370224200220033602204120102d2203450d0020032001290060370000200341186a200141f8006a290000370000200341106a200141f0006a290000370000200341086a200141e8006a29000037000020004284808080c00037020420002002360200200241e1ea91cb0636023c200242a08080808004370234200220033602300f0b1036000ba60901077f230041d0026b2202240041002103200241003a002820012802042104417f210502400240024002400240034020042003460d01200241086a20036a200128020022062d00003a00002001200420056a3602042001200641016a3602002002200341016a22073a00282005417f6a21052007210320074120470d000b20024188016a41086a200241086a41086a29030037030020024188016a41106a200241086a41106a29030037030020024188016a41186a200241086a41186a290300370300200220022903083703880141002108200241003a0028200420076b2107200420056a2103034020072008460d02200241086a20086a200620086a220541016a2d00003a0000200120033602042001200541026a3602002002200841016a22053a00282003417f6a21032005210820054120470d000b200241a8016a41086a200241086a41086a290300370300200241a8016a41106a200241086a41106a290300370300200241a8016a41186a200241086a41186a290300370300200220022903083703a80141002107200241003a0028200620056a210803402003417f460d03200241086a20076a200820076a220541016a2d00003a0000200120033602042001200541026a3602002002200741016a22053a00282003417f6a21032005210720054120470d000b200241c8016a41086a200241086a41086a290300370300200241c8016a41106a200241086a41106a290300370300200241c8016a41186a200241086a41186a290300370300200220022903083703c80141002107200241003a00c802200820056a41016a210503402003417f460d04200241a8026a20076a20052d00003a0000200120033602042001200541016a22053602002002200741016a22083a00c8022003417f6a21032008210720084120470d000b200241e8016a41086a2201200241a8026a41086a290300370300200241e8016a41106a2203200241a8026a41106a290300370300200241e8016a41186a2205200241a8026a41186a290300370300200241086a41086a20024188016a41086a290300370300200241086a41106a20024188016a41106a290300370300200241086a41186a20024188016a41186a290300370300200220022903a8023703e8012002200229038801370308200241c0006a200241a8016a41186a290300370300200241386a200241a8016a41106a290300370300200241306a200241a8016a41086a290300370300200220022903a801370328200241e0006a200241c8016a41186a290300370300200241d8006a200241c8016a41106a290300370300200241d0006a200241c8016a41086a290300370300200220022903c80137034820024180016a2005290300370300200241f8006a2003290300370300200241f0006a2001290300370300200220022903e801370368200041016a200241086a41800110e8061a200041003a00000c040b0240200341ff0171450d00200241003a00280b200041013a00000c030b0240200841ff0171450d00200241003a00280b200041013a00000c020b0240200741ff0171450d00200241003a00280b200041013a00000c010b0240200741ff0171450d00200241003a00c8020b200041013a00000b200241d0026a24000bb1bb0303077f027e027f230041106b220224000240024002400240024002400240024002400240024020002d0000220341144b0d0002400240024002400240024002400240024002400240024002400240024002400240024002400240024020030e15000102030405060708090a0b0c0d0e0f1011121314000b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d17200341017422052004200520044b1b22054100480d170240024020030d002005102d21040c010b200128020020032005103121040b2004450d1620012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41003a000020002d0004220341044b0d140240024002400240024020030e050001020304000b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d1b200341017422052004200520044b1b22054100480d1b0240024020030d002005102d21040c010b200128020020032005103121040b2004450d1a20012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41003a00002000280208210602400240200141046a2802002204200528020022036b4104490d00200128020021040c010b200341046a22052003490d1b200441017422032005200320054b1b22034100480d1b0240024020040d002003102d21040c010b200128020020042003103121040b2004450d1a20012004360200200141046a2003360200200141086a28020021030b200141086a2205200341046a360200200420036a20063600002000410c6a2d0000210602400240200141046a28020020052802002203460d00200128020021040c010b200341016a22042003490d1b200341017422052004200520044b1b22054100480d1b0240024020030d002005102d21040c010b200128020020032005103121040b2004450d1a20012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a20063a00002000410d6a2d0000210402400240200141046a28020020052802002200460d00200128020021030c010b200041016a22032000490d1b200041017422052003200520034b1b22054100480d1b0240024020000d002005102d21030c010b200128020020002005103121030b2003450d1a20012003360200200141046a2005360200200141086a28020021000b200141086a200041016a360200200320006a20043a00000c180b02400240200141046a280200200141086a2802002203460d00200128020021050c010b200341016a22042003490d1a200341017422052004200520044b1b22044100480d1a0240024020030d002004102d21050c010b200128020020032004103121050b2005450d1920012005360200200141046a2004360200200141086a28020021030b41012104200141086a2206200341016a360200200520036a41013a0000024002400240024020002d00080e0400030102000b410021040c020b410221040c010b200241033a000002400240200141046a28020020062802002203460d00200128020021040c010b200341016a22042003490d1b200341017422052004200520044b1b22054100480d1b0240024020030d002005102d21040c010b200128020020032005103121040b2004450d1a20012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41033a0000200220002d000922063a000002400240200141046a28020020052802002203460d00200128020021040c010b200341016a22042003490d1b200341017422052004200520044b1b22054100480d1b0240024020030d002005102d21040c010b200128020020032005103121040b2004450d1a20012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a20063a000020002d000a21040b200220043a000002400240200141046a280200200141086a2802002203460d00200128020021050c010b200341016a22052003490d1a200341017422062005200620054b1b22064100480d1a0240024020030d002006102d21050c010b200128020020032006103121050b2005450d1920012005360200200141046a2006360200200141086a28020021030b200141086a2206200341016a360200200520036a20043a00002000280214210502400240200141046a2802002204200628020022036b4104490d00200128020021040c010b200341046a22062003490d1a200441017422032006200320064b1b22034100480d1a0240024020040d002003102d21040c010b200128020020042003103121040b2004450d1920012004360200200141046a2003360200200141086a28020021030b200141086a2206200341046a360200200420036a2005360000200041186a2d0000210502400240200141046a28020020062802002203460d00200128020021040c010b200341016a22042003490d1a200341017422062004200620044b1b22064100480d1a0240024020030d002006102d21040c010b200128020020032006103121040b2004450d1920012004360200200141046a2006360200200141086a28020021030b200141086a2206200341016a360200200420036a20053a0000200041196a2d0000210402400240200141046a28020020062802002200460d00200128020021030c010b200041016a22032000490d1a200041017422052003200520034b1b22054100480d1a0240024020000d002005102d21030c010b200128020020002005103121030b2003450d1920012003360200200141046a2005360200200141086a28020021000b200141086a200041016a360200200320006a20043a00000c170b02400240200141046a280200200141086a2802002200460d00200128020021030c010b200041016a22032000490d19200041017422042003200420034b1b22044100480d190240024020000d002004102d21030c010b200128020020002004103121030b2003450d1820012003360200200141046a2004360200200141086a28020021000b200141086a200041016a360200200320006a41023a00000c160b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d18200341017422052004200520044b1b22054100480d180240024020030d002005102d21040c010b200128020020032005103121040b2004450d1720012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41033a000002400240200141046a2802002204200528020022036b4120490d00200128020021040c010b200341206a22052003490d18200441017422032005200320054b1b22034100480d180240024020040d002003102d21040c010b200128020020042003103121040b2004450d1720012004360200200141046a2003360200200141086a28020021030b200141086a200341206a360200200420036a220141186a200041056a220041186a290000370000200141106a200041106a290000370000200141086a200041086a290000370000200120002900003700000c150b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d17200341017422052004200520044b1b22054100480d170240024020030d002005102d21040c010b200128020020032005103121040b2004450d1620012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41043a000002400240200141046a2802002204200528020022036b4120490d00200128020021040c010b200341206a22052003490d17200441017422032005200320054b1b22034100480d170240024020040d002003102d21040c010b200128020020042003103121040b2004450d1620012004360200200141046a2003360200200141086a28020021030b200141086a200341206a360200200420036a220141186a200041056a220041186a290000370000200141106a200041106a290000370000200141086a200041086a290000370000200120002900003700000c140b02400240200141046a2205280200200141086a22032802002204460d00200128020021060c010b200441016a22062004490d16200441017422072006200720064b1b22074100480d160240024020040d002007102d21060c010b200128020020042007103121060b2006450d1520012006360200200141046a2007360200200141086a28020021040b2003200441016a360200200620046a41013a000020002d0004220441054b0d1302400240024002400240024020040e06000102030405000b02400240200528020020032802002204460d00200128020021060c010b200441016a22062004490d1b200441017422072006200720064b1b22074100480d1b0240024020040d002007102d21060c010b200128020020042007103121060b2006450d1a20012006360200200141046a2007360200200141086a28020021040b2003200441016a360200200620046a41003a0000200028020821070240024020052802002206200328020022046b4104490d00200128020021060c010b200441046a22082004490d1b200641017422042008200420084b1b22044100480d1b0240024020060d002004102d21060c010b200128020020062004103121060b2006450d1a20012006360200200141046a2004360200200141086a28020021040b2003200441046a360200200620046a20073600000240024002400240024020002d000c0e0400010203000b410021040c030b410121040c020b410221040c010b200241033a000002400240200528020020032802002204460d00200128020021060c010b200441016a22062004490d1c200441017422072006200720064b1b22074100480d1c0240024020040d002007102d21060c010b200128020020042007103121060b2006450d1b20012006360200200141046a2007360200200141086a28020021040b2003200441016a360200200620046a41033a0000200220002d000d22073a000002400240200528020020032802002204460d00200128020021060c010b200441016a22062004490d1c200441017422082006200820064b1b22084100480d1c0240024020040d002008102d21060c010b200128020020042008103121060b2006450d1b20012006360200200141046a2008360200200141086a28020021040b2003200441016a360200200620046a20073a000020002d000e21040b200220043a000002400240200528020020032802002200460d00200128020021050c010b200041016a22052000490d1b200041017422062005200620054b1b22064100480d1b0240024020000d002006102d21050c010b200128020020002006103121050b2005450d1a20012005360200200141046a2006360200200141086a28020021000b2003200041016a360200200520006a20043a00000c180b02400240200528020020032802002200460d00200128020021040c010b200041016a22042000490d1a200041017422052004200520044b1b22054100480d1a0240024020000d002005102d21040c010b200128020020002005103121040b2004450d1920012004360200200141046a2005360200200141086a28020021000b2003200041016a360200200420006a41013a00000c170b02400240200528020020032802002204460d00200128020021060c010b200441016a22062004490d19200441017422072006200720064b1b22074100480d190240024020040d002007102d21060c010b200128020020042007103121060b2006450d1820012006360200200141046a2007360200200141086a28020021040b2003200441016a360200200620046a41023a00000240024020052802002206200328020022046b4120490d00200128020021060c010b200441206a22072004490d19200641017422042007200420074b1b22044100480d190240024020060d002004102d21060c010b200128020020062004103121060b2006450d1820012006360200200141046a2004360200200141086a28020021040b2003200441206a360200200620046a220441186a200041056a220641186a290000370000200441106a200641106a290000370000200441086a200641086a290000370000200420062900003700000240024020052802002205200328020022046b4120490d00200128020021050c010b200441206a22062004490d19200541017422042006200420064b1b22044100480d190240024020050d002004102d21050c010b200128020020052004103121050b2005450d1820012005360200200141046a2004360200200141086a28020021040b2003200441206a360200200520046a220141186a200041256a220041186a290000370000200141106a200041106a290000370000200141086a200041086a290000370000200120002900003700000c160b02400240200528020020032802002204460d00200128020021060c010b200441016a22062004490d18200441017422072006200720064b1b22074100480d180240024020040d002007102d21060c010b200128020020042007103121060b2006450d1720012006360200200141046a2007360200200141086a28020021040b2003200441016a360200200620046a41033a00000240024020052802002206200328020022046b4120490d00200128020021060c010b200441206a22072004490d18200641017422042007200420074b1b22044100480d180240024020060d002004102d21060c010b200128020020062004103121060b2006450d1720012006360200200141046a2004360200200141086a28020021040b2003200441206a360200200620046a220441186a200041056a220641186a290000370000200441106a200641106a290000370000200441086a200641086a29000037000020042006290000370000200028024821070240024020052802002206200328020022046b4104490d00200128020021060c010b200441046a22082004490d18200641017422042008200420084b1b22044100480d180240024020060d002004102d21060c010b200128020020062004103121060b2006450d1720012006360200200141046a2004360200200141086a28020021040b2003200441046a360200200620046a2007360000200041cc006a28020021070240024020052802002206200328020022046b4104490d00200128020021060c010b200441046a22082004490d18200641017422042008200420084b1b22044100480d180240024020060d002004102d21060c010b200128020020062004103121060b2006450d1720012006360200200141046a2004360200200141086a28020021040b2003200441046a360200200620046a20073600000240024020052802002205200328020022046b4120490d00200128020021050c010b200441206a22062004490d18200541017422042006200420064b1b22044100480d180240024020050d002004102d21050c010b200128020020052004103121050b2005450d1720012005360200200141046a2004360200200141086a28020021040b2003200441206a360200200520046a220141186a200041256a220041186a290000370000200141106a200041106a290000370000200141086a200041086a290000370000200120002900003700000c150b02400240200528020020032802002204460d00200128020021060c010b200441016a22062004490d17200441017422072006200720064b1b22074100480d170240024020040d002007102d21060c010b200128020020042007103121060b2006450d1620012006360200200141046a2007360200200141086a28020021040b2003200441016a360200200620046a41043a00000240024020052802002206200328020022046b4120490d00200128020021060c010b200441206a22072004490d17200641017422042007200420074b1b22044100480d170240024020060d002004102d21060c010b200128020020062004103121060b2006450d1620012006360200200141046a2004360200200141086a28020021040b2003200441206a360200200620046a220441186a200041056a220641186a290000370000200441106a200641106a290000370000200441086a200641086a29000037000020042006290000370000200028024821070240024020052802002206200328020022046b4104490d00200128020021060c010b200441046a22082004490d17200641017422042008200420084b1b22044100480d170240024020060d002004102d21060c010b200128020020062004103121060b2006450d1620012006360200200141046a2004360200200141086a28020021040b2003200441046a360200200620046a2007360000200041cc006a28020021070240024020052802002206200328020022046b4104490d00200128020021060c010b200441046a22082004490d17200641017422042008200420084b1b22044100480d170240024020060d002004102d21060c010b200128020020062004103121060b2006450d1620012006360200200141046a2004360200200141086a28020021040b2003200441046a360200200620046a20073600000240024020052802002206200328020022046b4120490d00200128020021060c010b200441206a22072004490d17200641017422042007200420074b1b22044100480d170240024020060d002004102d21060c010b200128020020062004103121060b2006450d1620012006360200200141046a2004360200200141086a28020021040b2003200441206a360200200620046a220441186a200041256a220641186a290000370000200441106a200641106a290000370000200441086a200641086a290000370000200420062900003700002005280200210620032802002104024020002d00504104460d000240024020062004460d00200128020021070c010b200441016a22062004490d18200441017422072006200720064b1b22064100480d180240024020040d002006102d21070c010b200128020020042006103121070b2007450d1720012007360200200141046a2006360200200141086a28020021040b410121062003200441016a360200200720046a41013a0000024002400240024020002d00500e0400030102000b410021060c020b410221060c010b200241033a000002400240200528020020032802002204460d00200128020021060c010b200441016a22062004490d19200441017422072006200720064b1b22074100480d190240024020040d002007102d21060c010b200128020020042007103121060b2006450d1820012006360200200141046a2007360200200141086a28020021040b2003200441016a360200200620046a41033a0000200220002d005122073a000002400240200528020020032802002204460d00200128020021060c010b200441016a22062004490d19200441017422082006200820064b1b22084100480d190240024020040d002008102d21060c010b200128020020042008103121060b2006450d1820012006360200200141046a2008360200200141086a28020021040b2003200441016a360200200620046a20073a000020002d005221060b200220063a000002400240200528020020032802002200460d00200128020021040c010b200041016a22042000490d18200041017422052004200520044b1b22054100480d180240024020000d002005102d21040c010b200128020020002005103121040b2004450d1720012004360200200141046a2005360200200141086a28020021000b2003200041016a360200200420006a20063a00000c150b0240024020062004460d00200128020021000c010b200441016a22002004490d17200441017422052000200520004b1b22054100480d170240024020040d002005102d21000c010b200128020020042005103121000b2000450d1620012000360200200141046a2005360200200141086a28020021040b2003200441016a360200200020046a41003a00000c140b02400240200528020020032802002204460d00200128020021060c010b200441016a22062004490d16200441017422072006200720064b1b22074100480d160240024020040d002007102d21060c010b200128020020042007103121060b2006450d1520012006360200200141046a2007360200200141086a28020021040b2003200441016a360200200620046a41053a00000240024020052802002206200328020022046b4120490d00200128020021060c010b200441206a22072004490d16200641017422042007200420074b1b22044100480d160240024020060d002004102d21060c010b200128020020062004103121060b2006450d1520012006360200200141046a2004360200200141086a28020021040b2003200441206a360200200620046a220441186a200041056a220641186a290000370000200441106a200641106a290000370000200441086a200641086a29000037000020042006290000370000200028024821070240024020052802002206200328020022046b4104490d00200128020021060c010b200441046a22082004490d16200641017422042008200420084b1b22044100480d160240024020060d002004102d21060c010b200128020020062004103121060b2006450d1520012006360200200141046a2004360200200141086a28020021040b2003200441046a360200200620046a2007360000200041cc006a28020021070240024020052802002206200328020022046b4104490d00200128020021060c010b200441046a22082004490d16200641017422042008200420084b1b22044100480d160240024020060d002004102d21060c010b200128020020062004103121060b2006450d1520012006360200200141046a2004360200200141086a28020021040b2003200441046a360200200620046a20073600000240024020052802002205200328020022046b4120490d00200128020021050c010b200441206a22062004490d16200541017422042006200420064b1b22044100480d160240024020050d002004102d21050c010b200128020020052004103121050b2005450d1520012005360200200141046a2004360200200141086a28020021040b2003200441206a360200200520046a220141186a200041256a220041186a290000370000200141106a200041106a290000370000200141086a200041086a290000370000200120002900003700000c130b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d15200341017422052004200520044b1b22054100480d150240024020030d002005102d21040c010b200128020020032005103121040b2004450d1420012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41023a0000024020002d00044101460d0002400240200141046a28020020052802002203460d00200128020021040c010b200341016a22042003490d16200341017422052004200520044b1b22054100480d160240024020030d002005102d21040c010b200128020020032005103121040b2004450d1520012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41003a000002400240200141046a2802002204200528020022036b4120490d00200128020021040c010b200341206a22052003490d16200441017422032005200320054b1b22034100480d160240024020040d002003102d21040c010b200128020020042003103121040b2004450d1520012004360200200141046a2003360200200141086a28020021030b200141086a2205200341206a360200200420036a220341186a200041056a220441186a290000370000200341106a200441106a290000370000200341086a200441086a290000370000200320042900003700002000280228210402400240200141046a2802002203200528020022006b4104490d00200128020021030c010b200041046a22052000490d16200341017422002005200020054b1b22004100480d160240024020030d002000102d21030c010b200128020020032000103121030b2003450d1520012003360200200141046a2000360200200141086a28020021000b200141086a200041046a360200200320006a20043600000c130b02400240200141046a28020020052802002203460d00200128020021040c010b200341016a22042003490d15200341017422052004200520044b1b22054100480d150240024020030d002005102d21040c010b200128020020032005103121040b2004450d1420012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41013a00002000280208210402400240200141046a2802002203200528020022006b4104490d00200128020021030c010b200041046a22052000490d15200341017422002005200020054b1b22004100480d150240024020030d002000102d21030c010b200128020020032000103121030b2003450d1420012003360200200141046a2000360200200141086a28020021000b200141086a200041046a360200200320006a20043600000c120b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d14200341017422052004200520044b1b22054100480d140240024020030d002005102d21040c010b200128020020032005103121040b2004450d1320012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41033a000020002d0008220341044b0d1102400240024002400240024020030e050001020304000b200241003a000002400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d19200341017422052004200520044b1b22054100480d190240024020030d002005102d21040c010b200128020020032005103121040b2004450d1820012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41003a000002400240200141046a2802002204200528020022036b4120490d00200128020021040c010b200341206a22052003490d19200441017422032005200320054b1b22034100480d190240024020040d002003102d21040c010b200128020020042003103121040b2004450d1820012004360200200141046a2003360200200141086a28020021030b200141086a200341206a360200200420036a220341186a200041096a220441186a290000370000200341106a200441106a290000370000200341086a200441086a29000037000020032004290000370000200029033021092002200041386a290300370308200220093703000c040b200241013a000002400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d18200341017422052004200520044b1b22054100480d180240024020030d002005102d21040c010b200128020020032005103121040b2004450d1720012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41013a000002400240200141046a2802002204200528020022036b4120490d00200128020021040c010b200341206a22052003490d18200441017422032005200320054b1b22034100480d180240024020040d002003102d21040c010b200128020020042003103121040b2004450d1720012004360200200141046a2003360200200141086a28020021030b200141086a200341206a360200200420036a220341186a200041096a220441186a290000370000200341106a200441106a290000370000200341086a200441086a29000037000020032004290000370000200029033021092002200041386a290300370308200220093703000c030b200241023a000002400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d17200341017422052004200520044b1b22054100480d170240024020030d002005102d21040c010b200128020020032005103121040b2004450d1620012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41023a000002400240200141046a2802002204200528020022036b4120490d00200128020021040c010b200341206a22052003490d17200441017422032005200320054b1b22034100480d170240024020040d002003102d21040c010b200128020020042003103121040b2004450d1620012004360200200141046a2003360200200141086a28020021030b200141086a2205200341206a360200200420036a220341186a200041096a220441186a290000370000200341106a200441106a290000370000200341086a200441086a2900003700002003200429000037000002400240200141046a2802002204200528020022036b4120490d00200128020021040c010b200341206a22052003490d17200441017422032005200320054b1b22034100480d170240024020040d002003102d21040c010b200128020020042003103121040b2004450d1620012004360200200141046a2003360200200141086a28020021030b200141086a200341206a360200200420036a220341186a200041296a220441186a290000370000200341106a200441106a290000370000200341086a200441086a29000037000020032004290000370000200029035021092002200041d8006a290300370308200220093703000c020b200241033a000002400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d16200341017422052004200520044b1b22054100480d160240024020030d002005102d21040c010b200128020020032005103121040b2004450d1520012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41033a000002400240200141046a2802002204200528020022036b4120490d00200128020021040c010b200341206a22052003490d16200441017422032005200320054b1b22034100480d160240024020040d002003102d21040c010b200128020020042003103121040b2004450d1520012004360200200141046a2003360200200141086a28020021030b200141086a2205200341206a360200200420036a220341186a200041096a220441186a290000370000200341106a200441106a290000370000200341086a200441086a29000037000020032004290000370000200041386a29030021092000290330210a02400240200141046a2802002204200528020022036b4110490d00200128020021040c010b200341106a22052003490d16200441017422032005200320054b1b22034100480d160240024020040d002003102d21040c010b200128020020042003103121040b2004450d1520012004360200200141046a2003360200200141086a28020021030b200141086a200341106a360200200420036a220320093700082003200a370000200029034021092002200041c8006a290300370308200220093703000c010b200141086a2802002103200241043a0000024002402003200141046a280200460d00200128020021040c010b200341016a22042003490d15200341017422052004200520044b1b22054100480d150240024020030d002005102d21040c010b200128020020032005103121040b2004450d1420012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41043a000002400240200141046a2802002204200528020022036b4120490d00200128020021040c010b200341206a22052003490d15200441017422032005200320054b1b22034100480d150240024020040d002003102d21040c010b200128020020042003103121040b2004450d1420012004360200200141046a2003360200200141086a28020021030b200141086a200341206a360200200420036a220341186a200041096a220441186a290000370000200341106a200441106a290000370000200341086a200441086a29000037000020032004290000370000200029033021092002200041386a290300370308200220093703000b2002210302400240200141046a2802002204200141086a28020022006b4110490d00200128020021040c010b200041106a22052000490d14200441017422002005200020054b1b22004100480d140240024020040d002000102d21040c010b200128020020042000103121040b2004450d1320012004360200200141046a2000360200200141086a28020021000b200141086a200041106a360200200420006a220041086a200341086a290000370000200020032900003700000c110b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d13200341017422052004200520044b1b22054100480d130240024020030d002005102d21040c010b200128020020032005103121040b2004450d1220012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41043a000020002d0008220341024b0d1002400240024020030e03000102000b200241003a000002400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d15200341017422052004200520044b1b22054100480d150240024020030d002005102d21040c010b200128020020032005103121040b2004450d1420012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41003a000002400240200141046a2802002204200528020022036b4120490d00200128020021040c010b200341206a22052003490d15200441017422032005200320054b1b22034100480d150240024020040d002003102d21040c010b200128020020042003103121040b2004450d1420012004360200200141046a2003360200200141086a28020021030b200141086a2205200341206a360200200420036a220341186a200041096a220441186a290000370000200341106a200441106a290000370000200341086a200441086a29000037000020032004290000370000200041386a29030021092000290330210a02400240200141046a2802002203200528020022006b4110490d00200128020021030c010b200041106a22042000490d15200341017422002004200020044b1b22004100480d150240024020030d002000102d21030c010b200128020020032000103121030b2003450d1420012003360200200141046a2000360200200141086a28020021000b200141086a200041106a360200200320006a220020093700082000200a3700000c120b200241013a000002400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d14200341017422052004200520044b1b22054100480d140240024020030d002005102d21040c010b200128020020032005103121040b2004450d1320012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41013a000002400240200141046a2802002204200528020022036b4120490d00200128020021040c010b200341206a22052003490d14200441017422032005200320054b1b22034100480d140240024020040d002003102d21040c010b200128020020042003103121040b2004450d1320012004360200200141046a2003360200200141086a28020021030b200141086a2205200341206a360200200420036a220341186a200041096a220441186a290000370000200341106a200441106a290000370000200341086a200441086a29000037000020032004290000370000200041386a29030021092000290330210a02400240200141046a2802002203200528020022006b4110490d00200128020021030c010b200041106a22042000490d14200341017422002004200020044b1b22004100480d140240024020030d002000102d21030c010b200128020020032000103121030b2003450d1320012003360200200141046a2000360200200141086a28020021000b200141086a200041106a360200200320006a220020093700082000200a3700000c110b200241023a000002400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d13200341017422052004200520044b1b22054100480d130240024020030d002005102d21040c010b200128020020032005103121040b2004450d1220012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41023a0000200028020c210402400240200141046a2802002203200528020022006b4104490d00200128020021030c010b200041046a22052000490d14200341017422002005200020054b1b22004100480d140240024020030d002000102d21030c010b200128020020032000103121030b2003450d1520012003360200200141046a2000360200200141086a28020021000b200141086a200041046a360200200320006a20043600000c100b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d13200341017422052004200520044b1b22054100480d130240024020030d002005102d21040c010b200128020020032005103121040b2004450d1420012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41053a000002400240200141046a28020020052802002203460d00200128020021040c010b200341016a22042003490d13200341017422052004200520044b1b22054100480d130240024020030d002005102d21040c010b200128020020032005103121040b2004450d1420012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41003a00002000280204210402400240200141046a2802002203200528020022006b4104490d00200128020021030c010b200041046a22052000490d13200341017422002005200020054b1b22004100480d130240024020030d002000102d21030c010b200128020020032000103121030b2003450d1420012003360200200141046a2000360200200141086a28020021000b200141086a200041046a360200200320006a20043600000c0f0b02400240200141046a2205280200200141086a22032802002204460d00200128020021060c010b200441016a22062004490d12200441017422072006200720064b1b22074100480d120240024020040d002007102d21060c010b200128020020042007103121060b2006450d1320012006360200200141046a2007360200200141086a28020021040b2003200441016a360200200620046a41063a000020002d0008220441104b0d0e0240024002400240024002400240024002400240024002400240024002400240024020040e11000102030405060708090a0b0c0d0e0f10000b200241003a000002400240200528020020032802002204460d00200128020021060c010b200441016a22062004490d22200441017422072006200720064b1b22074100480d220240024020040d002007102d21060c010b200128020020042007103121060b2006450d2320012006360200200141046a2007360200200141086a28020021040b2003200441016a360200200620046a41003a0000200028020c21070240024020052802002206200328020022046b4104490d00200128020021060c010b200441046a22082004490d22200641017422042008200420084b1b22044100480d220240024020060d002004102d21060c010b200128020020062004103121060b2006450d2320012006360200200141046a2004360200200141086a28020021040b2003200441046a360200200620046a2007360000200041186a29030021092000290310210a0240024020052802002204200328020022006b4110490d00200128020021040c010b200041106a22052000490d22200441017422002005200020054b1b22004100480d220240024020040d002000102d21040c010b200128020020042000103121040b2004450d2320012004360200200141046a2000360200200141086a28020021000b2003200041106a360200200420006a220020093700082000200a3700000c1e0b200241013a000002400240200528020020032802002204460d00200128020021060c010b200441016a22062004490d21200441017422072006200720064b1b22074100480d210240024020040d002007102d21060c010b200128020020042007103121060b2006450d2220012006360200200141046a2007360200200141086a28020021040b2003200441016a360200200620046a41013a0000200028020c21070240024020052802002206200328020022046b4104490d00200128020021060c010b200441046a22082004490d21200641017422042008200420084b1b22044100480d210240024020060d002004102d21060c010b200128020020062004103121060b2006450d2220012006360200200141046a2004360200200141086a28020021040b2003200441046a360200200620046a2007360000200041286a29030021092000290320210a0240024020052802002206200328020022046b4110490d00200128020021060c010b200441106a22072004490d21200641017422042007200420074b1b22044100480d210240024020060d002004102d21060c010b200128020020062004103121060b2006450d2220012006360200200141046a2004360200200141086a28020021040b200141086a220b200441106a360200200620046a220420093700082004200a37000020002802102104200041186a2802002200200110692000450d1d20004105742107200141046a210c03400240024020052802002206200328020022006b4120490d00200128020021060c010b200041206a22082000490d22200641017422002008200020084b1b22004100480d220240024020060d002000102d21060c010b200128020020062000103121060b2006450d2320012006360200200c2000360200200b28020021000b2003200041206a360200200620006a220041186a200441186a290000370000200041106a200441106a290000370000200041086a200441086a29000037000020002004290000370000200441206a2104200741606a22070d000c1e0b0b200241023a000002400240200528020020032802002200460d00200128020021040c010b200041016a22042000490d20200041017422052004200520044b1b22054100480d200240024020000d002005102d21040c010b200128020020002005103121040b2004450d2120012004360200200141046a2005360200200141086a28020021000b2003200041016a360200200420006a41023a00000c1c0b200241033a000002400240200528020020032802002204460d00200128020021060c010b200441016a22062004490d1f200441017422072006200720064b1b22074100480d1f0240024020040d002007102d21060c010b200128020020042007103121060b2006450d2020012006360200200141046a2007360200200141086a28020021040b2003200441016a360200200620046a41033a0000200028020c21070240024020052802002206200328020022046b4104490d00200128020021060c010b200441046a22082004490d1f200641017422042008200420084b1b22044100480d1f0240024020060d002004102d21060c010b200128020020062004103121060b2006450d2020012006360200200141046a2004360200200141086a28020021040b2003200441046a360200200620046a200736000020002d0009220041024b0d1b02400240024020000e03000102000b200241003a000002400240200528020020032802002200460d00200128020021040c010b200041016a22042000490d21200041017422052004200520044b1b22054100480d210240024020000d002005102d21040c010b200128020020002005103121040b2004450d2220012004360200200141046a2005360200200141086a28020021000b2003200041016a360200200420006a41003a00000c1d0b200241013a000002400240200528020020032802002200460d00200128020021040c010b200041016a22042000490d20200041017422052004200520044b1b22054100480d200240024020000d002005102d21040c010b200128020020002005103121040b2004450d2120012004360200200141046a2005360200200141086a28020021000b2003200041016a360200200420006a41013a00000c1c0b200241023a000002400240200528020020032802002200460d00200128020021040c010b200041016a22042000490d1f200041017422052004200520044b1b22054100480d1f0240024020000d002005102d21040c010b200128020020002005103121040b2004450d2020012004360200200141046a2005360200200141086a28020021000b2003200041016a360200200420006a41023a00000c1b0b200241043a000002400240200528020020032802002204460d00200128020021060c010b200441016a22062004490d1e200441017422072006200720064b1b22074100480d1e0240024020040d002007102d21060c010b200128020020042007103121060b2006450d1f20012006360200200141046a2007360200200141086a28020021040b2003200441016a360200200620046a41043a0000200028020c21060240024020052802002204200328020022006b4104490d00200128020021040c010b200041046a22052000490d1e200441017422002005200020054b1b22004100480d1e0240024020040d002000102d21040c010b200128020020042000103121040b2004450d1f20012004360200200141046a2000360200200141086a28020021000b2003200041046a360200200420006a20063600000c1a0b200241053a000002400240200528020020032802002204460d00200128020021060c010b200441016a22062004490d1d200441017422072006200720064b1b22074100480d1d0240024020040d002007102d21060c010b200128020020042007103121060b2006450d1e20012006360200200141046a2007360200200141086a28020021040b2003200441016a360200200620046a41053a0000200028020c21060240024020052802002204200328020022006b4104490d00200128020021040c010b200041046a22052000490d1d200441017422002005200020054b1b22004100480d1d0240024020040d002000102d21040c010b200128020020042000103121040b2004450d1e20012004360200200141046a2000360200200141086a28020021000b2003200041046a360200200420006a20063600000c190b200241063a000002400240200528020020032802002204460d00200128020021060c010b200441016a22062004490d1c200441017422072006200720064b1b22074100480d1c0240024020040d002007102d21060c010b200128020020042007103121060b2006450d1d20012006360200200141046a2007360200200141086a28020021040b2003200441016a360200200620046a41063a0000200028020c21060240024020052802002204200328020022006b4104490d00200128020021040c010b200041046a22052000490d1c200441017422002005200020054b1b22004100480d1c0240024020040d002000102d21040c010b200128020020042000103121040b2004450d1d20012004360200200141046a2000360200200141086a28020021000b2003200041046a360200200420006a20063600000c180b200241073a000002400240200528020020032802002204460d00200128020021060c010b200441016a22062004490d1b200441017422072006200720064b1b22074100480d1b0240024020040d002007102d21060c010b200128020020042007103121060b2006450d1c20012006360200200141046a2007360200200141086a28020021040b2003200441016a360200200620046a41073a0000200028020c21070240024020052802002206200328020022046b4104490d00200128020021060c010b200441046a22082004490d1b200641017422042008200420084b1b22044100480d1b0240024020060d002004102d21060c010b200128020020062004103121060b2006450d1c20012006360200200141046a2004360200200141086a28020021040b2003200441046a360200200620046a2007360000200220002d000922063a000002400240200528020020032802002200460d00200128020021040c010b200041016a22042000490d1b200041017422052004200520044b1b22054100480d1b0240024020000d002005102d21040c010b200128020020002005103121040b2004450d1c20012004360200200141046a2005360200200141086a28020021000b2003200041016a360200200420006a20063a00000c170b200241083a000002400240200528020020032802002204460d00200128020021060c010b200441016a22062004490d1a200441017422072006200720064b1b22074100480d1a0240024020040d002007102d21060c010b200128020020042007103121060b2006450d1b20012006360200200141046a2007360200200141086a28020021040b2003200441016a360200200620046a41083a00000240024020052802002206200328020022046b4120490d00200128020021060c010b200441206a22072004490d1a200641017422042007200420074b1b22044100480d1a0240024020060d002004102d21060c010b200128020020062004103121060b2006450d1b20012006360200200141046a2004360200200141086a28020021040b2003200441206a360200200620046a220441186a200041096a220641186a290000370000200441106a200641106a290000370000200441086a200641086a290000370000200420062900003700000240024020052802002205200328020022046b4120490d00200128020021050c010b200441206a22062004490d1a200541017422042006200420064b1b22044100480d1a0240024020050d002004102d21050c010b200128020020052004103121050b2005450d1b20012005360200200141046a2004360200200141086a28020021040b2003200441206a360200200520046a220141186a200041296a220041186a290000370000200141106a200041106a290000370000200141086a200041086a290000370000200120002900003700000c160b200241093a000002400240200528020020032802002204460d00200128020021060c010b200441016a22062004490d19200441017422072006200720064b1b22074100480d190240024020040d002007102d21060c010b200128020020042007103121060b2006450d1a20012006360200200141046a2007360200200141086a28020021040b2003200441016a360200200620046a41093a00000240024020052802002205200328020022046b4120490d00200128020021050c010b200441206a22062004490d19200541017422042006200420064b1b22044100480d190240024020050d002004102d21050c010b200128020020052004103121050b2005450d1a20012005360200200141046a2004360200200141086a28020021040b2003200441206a360200200520046a220141186a200041096a220041186a290000370000200141106a200041106a290000370000200141086a200041086a290000370000200120002900003700000c150b2002410a3a000002400240200528020020032802002204460d00200128020021060c010b200441016a22062004490d18200441017422072006200720064b1b22074100480d180240024020040d002007102d21060c010b200128020020042007103121060b2006450d1920012006360200200141046a2007360200200141086a28020021040b2003200441016a360200200620046a410a3a00000240024020052802002206200328020022046b4120490d00200128020021060c010b200441206a22072004490d18200641017422042007200420074b1b22044100480d180240024020060d002004102d21060c010b200128020020062004103121060b2006450d1920012006360200200141046a2004360200200141086a28020021040b2003200441206a360200200620046a220441186a200041096a220641186a290000370000200441106a200641106a290000370000200441086a200641086a290000370000200420062900003700004120102d2204450d18200441186a200041c1006a290000370000200441106a200041396a290000370000200441086a200041316a2900003700002004200041296a2900003700000240024020052802002207200328020022066b4120490d00200128020021070c010b200641206a22082006490d18200741017422062008200620084b1b22064100480d180240024020070d002006102d21070c010b200128020020072006103121070b2007450d1920012007360200200141046a2006360200200141086a28020021060b2003200641206a360200200720066a220641186a200441186a290000370000200641106a200441106a290000370000200641086a200441086a290000370000200620042900003700002004102f200028024c21060240024020052802002204200328020022006b4104490d00200128020021040c010b200041046a22052000490d18200441017422002005200020054b1b22004100480d180240024020040d002000102d21040c010b200128020020042000103121040b2004450d1920012004360200200141046a2000360200200141086a28020021000b2003200041046a360200200420006a20063600000c140b2002410b3a000002400240200528020020032802002204460d00200128020021060c010b200441016a22062004490d17200441017422072006200720064b1b22074100480d170240024020040d002007102d21060c010b200128020020042007103121060b2006450d1820012006360200200141046a2007360200200141086a28020021040b2003200441016a360200200620046a410b3a00004120102d2204450d17200441186a200041216a290000370000200441106a200041196a290000370000200441086a200041116a2900003700002004200041096a2900003700000240024020052802002207200328020022066b4120490d00200128020021070c010b200641206a22082006490d17200741017422062008200620084b1b22064100480d170240024020070d002006102d21070c010b200128020020072006103121070b2007450d1820012007360200200141046a2006360200200141086a28020021060b2003200641206a360200200720066a220641186a200441186a290000370000200641106a200441106a290000370000200641086a200441086a290000370000200620042900003700002004102f0240024020052802002206200328020022046b4120490d00200128020021060c010b200441206a22072004490d17200641017422042007200420074b1b22044100480d170240024020060d002004102d21060c010b200128020020062004103121060b2006450d1820012006360200200141046a2004360200200141086a28020021040b2003200441206a360200200620046a220441186a200041296a220641186a290000370000200441106a200641106a290000370000200441086a200641086a29000037000020042006290000370000200041d8006a29030021092000290350210a0240024020052802002204200328020022006b4110490d00200128020021040c010b200041106a22052000490d17200441017422002005200020054b1b22004100480d170240024020040d002000102d21040c010b200128020020042000103121040b2004450d1820012004360200200141046a2000360200200141086a28020021000b2003200041106a360200200420006a220020093700082000200a3700000c130b2002410c3a000002400240200528020020032802002204460d00200128020021060c010b200441016a22062004490d16200441017422072006200720064b1b22074100480d160240024020040d002007102d21060c010b200128020020042007103121060b2006450d1720012006360200200141046a2007360200200141086a28020021040b2003200441016a360200200620046a410c3a00004120102d2204450d16200441186a200041216a290000370000200441106a200041196a290000370000200441086a200041116a2900003700002004200041096a2900003700000240024020052802002207200328020022066b4120490d00200128020021070c010b200641206a22082006490d16200741017422062008200620084b1b22064100480d160240024020070d002006102d21070c010b200128020020072006103121070b2007450d1720012007360200200141046a2006360200200141086a28020021060b2003200641206a360200200720066a220641186a200441186a290000370000200641106a200441106a290000370000200641086a200441086a290000370000200620042900003700002004102f0240024020052802002206200328020022046b4120490d00200128020021060c010b200441206a22072004490d16200641017422042007200420074b1b22044100480d160240024020060d002004102d21060c010b200128020020062004103121060b2006450d1720012006360200200141046a2004360200200141086a28020021040b2003200441206a360200200620046a220441186a200041296a220641186a290000370000200441106a200641106a290000370000200441086a200641086a29000037000020042006290000370000200041d8006a29030021092000290350210a0240024020052802002204200328020022006b4110490d00200128020021040c010b200041106a22052000490d16200441017422002005200020054b1b22004100480d160240024020040d002000102d21040c010b200128020020042000103121040b2004450d1720012004360200200141046a2000360200200141086a28020021000b2003200041106a360200200420006a220020093700082000200a3700000c120b2002410d3a000002400240200528020020032802002204460d00200128020021060c010b200441016a22062004490d15200441017422072006200720064b1b22074100480d150240024020040d002007102d21060c010b200128020020042007103121060b2006450d1620012006360200200141046a2007360200200141086a28020021040b2003200441016a360200200620046a410d3a00004120102d2204450d15200441186a200041216a290000370000200441106a200041196a290000370000200441086a200041116a2900003700002004200041096a2900003700000240024020052802002207200328020022066b4120490d00200128020021070c010b200641206a22082006490d15200741017422062008200620084b1b22064100480d150240024020070d002006102d21070c010b200128020020072006103121070b2007450d1620012007360200200141046a2006360200200141086a28020021060b2003200641206a360200200720066a220641186a200441186a290000370000200641106a200441106a290000370000200641086a200441086a290000370000200620042900003700002004102f200028022c21060240024020052802002204200328020022006b4104490d00200128020021040c010b200041046a22052000490d15200441017422002005200020054b1b22004100480d150240024020040d002000102d21040c010b200128020020042000103121040b2004450d1620012004360200200141046a2000360200200141086a28020021000b2003200041046a360200200420006a20063600000c110b2002410e3a000002400240200528020020032802002204460d00200128020021060c010b200441016a22062004490d14200441017422072006200720064b1b22074100480d140240024020040d002007102d21060c010b200128020020042007103121060b2006450d1520012006360200200141046a2007360200200141086a28020021040b2003200441016a360200200620046a410e3a00004120102d2204450d14200441186a200041216a290000370000200441106a200041196a290000370000200441086a200041116a2900003700002004200041096a2900003700000240024020052802002207200328020022066b4120490d00200128020021070c010b200641206a22082006490d14200741017422062008200620084b1b22064100480d140240024020070d002006102d21070c010b200128020020072006103121070b2007450d1520012007360200200141046a2006360200200141086a28020021060b2003200641206a360200200720066a220641186a200441186a290000370000200641106a200441106a290000370000200641086a200441086a290000370000200620042900003700002004102f200028022c21060240024020052802002204200328020022006b4104490d00200128020021040c010b200041046a22052000490d14200441017422002005200020054b1b22004100480d140240024020040d002000102d21040c010b200128020020042000103121040b2004450d1520012004360200200141046a2000360200200141086a28020021000b2003200041046a360200200420006a20063600000c100b2002410f3a000002400240200528020020032802002204460d00200128020021060c010b200441016a22062004490d13200441017422072006200720064b1b22074100480d130240024020040d002007102d21060c010b200128020020042007103121060b2006450d1420012006360200200141046a2007360200200141086a28020021040b2003200441016a360200200620046a410f3a00004120102d2204450d13200441186a200041216a290000370000200441106a200041196a290000370000200441086a200041116a2900003700002004200041096a2900003700000240024020052802002207200328020022066b4120490d00200128020021070c010b200641206a22082006490d13200741017422062008200620084b1b22064100480d130240024020070d002006102d21070c010b200128020020072006103121070b2007450d1420012007360200200141046a2006360200200141086a28020021060b2003200641206a360200200720066a220641186a200441186a290000370000200641106a200441106a290000370000200641086a200441086a290000370000200620042900003700002004102f0240024020052802002206200328020022046b4120490d00200128020021060c010b200441206a22072004490d13200641017422042007200420074b1b22044100480d130240024020060d002004102d21060c010b200128020020062004103121060b2006450d1420012006360200200141046a2004360200200141086a28020021040b2003200441206a360200200620046a220441186a200041296a220641186a290000370000200441106a200641106a290000370000200441086a200641086a29000037000020042006290000370000200041f8006a29030021092000290370210a0240024020052802002206200328020022046b4110490d00200128020021060c010b200441106a22072004490d13200641017422042007200420074b1b22044100480d130240024020060d002004102d21060c010b200128020020062004103121060b2006450d1420012006360200200141046a2004360200200141086a28020021040b2003200441106a360200200620046a220420093700082004200a3700000240024020052802002205200328020022046b4120490d00200128020021050c010b200441206a22062004490d13200541017422042006200420064b1b22044100480d130240024020050d002004102d21050c010b200128020020052004103121050b2005450d1420012005360200200141046a2004360200200141086a28020021040b2003200441206a360200200520046a220141186a200041c9006a220041186a290000370000200141106a200041106a290000370000200141086a200041086a290000370000200120002900003700000c0f0b200241103a000002400240200528020020032802002204460d00200128020021060c010b200441016a22062004490d12200441017422072006200720064b1b22074100480d120240024020040d002007102d21060c010b200128020020042007103121060b2006450d1320012006360200200141046a2007360200200141086a28020021040b2003200441016a360200200620046a41103a00000240024020052802002205200328020022046b4120490d00200128020021050c010b200441206a22062004490d12200541017422042006200420064b1b22044100480d120240024020050d002004102d21050c010b200128020020052004103121050b2005450d1320012005360200200141046a2004360200200141086a28020021040b2003200441206a360200200520046a220141186a200041096a220041186a290000370000200141106a200041106a290000370000200141086a200041086a290000370000200120002900003700000c0e0b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d11200341017422052004200520044b1b22054100480d110240024020030d002005102d21040c010b200128020020032005103121040b2004450d1220012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41073a0000200041046a200110f0020c0d0b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d10200341017422052004200520044b1b22054100480d100240024020030d002005102d21040c010b200128020020032005103121040b2004450d1120012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41083a0000200041046a200110f0020c0c0b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d0f200341017422052004200520044b1b22054100480d0f0240024020030d002005102d21040c010b200128020020032005103121040b2004450d1020012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41093a000020002d0004220341044b0d0b0240024002400240024020030e050001020304000b200241003a000002400240200141046a280200200141086a2802002203460d00200128020021050c010b200341016a22042003490d13200341017422052004200520044b1b22044100480d130240024020030d002004102d21050c010b200128020020032004103121050b2005450d1420012005360200200141046a2004360200200141086a28020021030b200141086a2204200341016a360200200520036a41003a000020002802082103200041106a2802002200200110692000450d0f2003200041306c6a2108200141046a210503400240024020052802002206200428020022006b4120490d00200128020021060c010b200041206a22072000490d14200641017422002007200020074b1b22004100480d140240024020060d002000102d21060c010b200128020020062000103121060b2006450d152001200636020020052000360200200428020021000b2004200041206a360200200620006a220041186a200341186a290000370000200041106a200341106a290000370000200041086a200341086a29000037000020002003290000370000200341286a2903002109200341206a290300210a0240024020052802002206200428020022006b4110490d00200128020021060c010b200041106a22072000490d14200641017422002007200020074b1b22004100480d140240024020060d002000102d21060c010b200128020020062000103121060b2006450d152001200636020020052000360200200428020021000b2004200041106a360200200620006a220020093700082000200a3700002008200341306a2203470d000c100b0b200241013a000002400240200141046a280200200141086a2802002200460d00200128020021030c010b200041016a22032000490d12200041017422042003200420034b1b22044100480d120240024020000d002004102d21030c010b200128020020002004103121030b2003450d1320012003360200200141046a2004360200200141086a28020021000b200141086a200041016a360200200320006a41013a00000c0e0b200241023a000002400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d11200341017422052004200520044b1b22054100480d110240024020030d002005102d21040c010b200128020020032005103121040b2004450d1220012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41023a000002400240200141046a2802002204200528020022036b4120490d00200128020021040c010b200341206a22052003490d11200441017422032005200320054b1b22034100480d110240024020040d002003102d21040c010b200128020020042003103121040b2004450d1220012004360200200141046a2003360200200141086a28020021030b200141086a200341206a360200200420036a220141186a200041056a220041186a290000370000200141106a200041106a290000370000200141086a200041086a290000370000200120002900003700000c0d0b200241033a000002400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d10200341017422052004200520044b1b22054100480d100240024020030d002005102d21040c010b200128020020032005103121040b2004450d1120012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41033a000002400240200141046a2802002204200528020022036b4120490d00200128020021040c010b200341206a22052003490d10200441017422032005200320054b1b22034100480d100240024020040d002003102d21040c010b200128020020042003103121040b2004450d1120012004360200200141046a2003360200200141086a28020021030b200141086a200341206a360200200420036a220141186a200041056a220041186a290000370000200141106a200041106a290000370000200141086a200041086a290000370000200120002900003700000c0c0b200141086a2802002103200241043a0000024002402003200141046a280200460d00200128020021040c010b200341016a22042003490d0f200341017422052004200520044b1b22054100480d0f0240024020030d002005102d21040c010b200128020020032005103121040b2004450d1020012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41043a000002400240200141046a2802002204200528020022036b4120490d00200128020021040c010b200341206a22052003490d0f200441017422032005200320054b1b22034100480d0f0240024020040d002003102d21040c010b200128020020042003103121040b2004450d1020012004360200200141046a2003360200200141086a28020021030b200141086a2205200341206a360200200420036a220341186a200041056a220441186a290000370000200341106a200441106a290000370000200341086a200441086a2900003700002003200429000037000002400240200141046a2802002204200528020022036b4120490d00200128020021040c010b200341206a22052003490d0f200441017422032005200320054b1b22034100480d0f0240024020040d002003102d21040c010b200128020020042003103121040b2004450d1020012004360200200141046a2003360200200141086a28020021030b200141086a2205200341206a360200200420036a220341186a200041256a220441186a290000370000200341106a200441106a290000370000200341086a200441086a29000037000020032004290000370000200220002d004522043a000002400240200141046a28020020052802002200460d00200128020021030c010b200041016a22032000490d11200041017422052003200520034b1b22054100480d110240024020000d002005102d21030c010b200128020020002005103121030b2003450d1020012003360200200141046a2005360200200141086a28020021000b200141086a200041016a360200200320006a20043a00000c0b0b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d10200341017422052004200520044b1b22054100480d100240024020030d002005102d21040c010b200128020020032005103121040b2004450d1120012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a410a3a000020002d0001220041054b0d0a024002400240024002400240024020000e06000102030405000b410021030c050b410121030c040b410221030c030b410321030c020b410421030c010b410521030b200220033a000002400240200141046a280200200141086a2802002200460d00200128020021040c010b200041016a22042000490d10200041017422052004200520044b1b22054100480d100240024020000d002005102d21040c010b200128020020002005103121040b2004450d1120012004360200200141046a2005360200200141086a28020021000b200141086a200041016a360200200420006a20033a00000c0a0b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d0f200341017422052004200520044b1b22054100480d0f0240024020030d002005102d21040c010b200128020020032005103121040b2004450d1020012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a410b3a00002000280204220341024b0d0902400240024020030e03000102000b200241003a000002400240200141046a280200200141086a2802002203460d00200128020021050c010b200341016a22042003490d11200341017422052004200520044b1b22044100480d110240024020030d002004102d21050c010b200128020020032004103121050b2005450d1220012005360200200141046a2004360200200141086a28020021030b200141086a2204200341016a360200200520036a41003a000020002802082103200041106a2802002200200110692000450d0b2003200041286c6a2108200141046a210503400240024020052802002206200428020022006b4120490d00200128020021060c010b200041206a22072000490d12200641017422002007200020074b1b22004100480d120240024020060d002000102d21060c010b200128020020062000103121060b2006450d132001200636020020052000360200200428020021000b2004200041206a360200200620006a220041186a200341186a290000370000200041106a200341106a290000370000200041086a200341086a29000037000020002003290000370000200341206a29030021090240024020052802002206200428020022006b4108490d00200128020021060c010b200041086a22072000490d12200641017422002007200020074b1b22004100480d120240024020060d002000102d21060c010b200128020020062000103121060b2006450d132001200636020020052000360200200428020021000b2004200041086a360200200620006a20093700002008200341286a2203470d000c0c0b0b200241013a000002400240200141046a280200200141086a2802002200460d00200128020021030c010b200041016a22032000490d10200041017422042003200420034b1b22044100480d100240024020000d002004102d21030c010b200128020020002004103121030b2003450d1120012003360200200141046a2004360200200141086a28020021000b200141086a200041016a360200200320006a41013a00000c0a0b200241023a000002400240200141046a280200200141086a2802002200460d00200128020021030c010b200041016a22032000490d0f200041017422042003200420034b1b22044100480d0f0240024020000d002004102d21030c010b200128020020002004103121030b2003450d1020012003360200200141046a2004360200200141086a28020021000b200141086a200041016a360200200320006a41023a00000c090b02400240200141046a2205280200200141086a22032802002204460d00200128020021060c010b200441016a22062004490d0e200441017422072006200720064b1b22074100480d0e0240024020040d002007102d21060c010b200128020020042007103121060b2006450d0f20012006360200200141046a2007360200200141086a28020021040b2003200441016a360200200620046a410c3a000020002d00082204410a4b0d080240024002400240024002400240024002400240024020040e0b000102030405060708090a000b200241003a000002400240200528020020032802002204460d00200128020021060c010b200441016a22062004490d18200441017422072006200720064b1b22074100480d180240024020040d002007102d21060c010b200128020020042007103121060b2006450d1920012006360200200141046a2007360200200141086a28020021040b2003200441016a360200200620046a41003a0000200028020c21060240024020052802002204200328020022006b4104490d00200128020021040c010b200041046a22052000490d18200441017422002005200020054b1b22004100480d180240024020040d002000102d21040c010b200128020020042000103121040b2004450d1920012004360200200141046a2000360200200141086a28020021000b2003200041046a360200200420006a20063600000c120b200241013a000002400240200528020020032802002204460d00200128020021060c010b200441016a22062004490d17200441017422072006200720064b1b22074100480d170240024020040d002007102d21060c010b200128020020042007103121060b2006450d1820012006360200200141046a2007360200200141086a28020021040b2003200441016a360200200620046a41013a0000200041186a29030021092000290310210a0240024020052802002204200328020022006b4110490d00200128020021040c010b200041106a22052000490d17200441017422002005200020054b1b22004100480d170240024020040d002000102d21040c010b200128020020042000103121040b2004450d1820012004360200200141046a2000360200200141086a28020021000b2003200041106a360200200420006a220020093700082000200a3700000c110b200241023a000002400240200528020020032802002204460d00200128020021060c010b200441016a22062004490d16200441017422072006200720064b1b22074100480d160240024020040d002007102d21060c010b200128020020042007103121060b2006450d1720012006360200200141046a2007360200200141086a28020021040b2003200441016a360200200620046a41023a0000200028022c21070240024020052802002206200328020022046b4104490d00200128020021060c010b200441046a22082004490d16200641017422042008200420084b1b22044100480d160240024020060d002004102d21060c010b200128020020062004103121060b2006450d1720012006360200200141046a2004360200200141086a28020021040b2003200441046a360200200620046a2007360000200041386a29030021092000290330210a0240024020052802002206200328020022046b4110490d00200128020021060c010b200441106a22072004490d16200641017422042007200420074b1b22044100480d160240024020060d002004102d21060c010b200128020020062004103121060b2006450d1720012006360200200141046a2004360200200141086a28020021040b2003200441106a360200200620046a220420093700082004200a3700000240024020052802002205200328020022046b4120490d00200128020021050c010b200441206a22062004490d16200541017422042006200420064b1b22044100480d160240024020050d002004102d21050c010b200128020020052004103121050b2005450d1720012005360200200141046a2004360200200141086a28020021040b2003200441206a360200200520046a220141186a200041096a220041186a290000370000200141106a200041106a290000370000200141086a200041086a290000370000200120002900003700000c100b200241033a000002400240200528020020032802002204460d00200128020021060c010b200441016a22062004490d15200441017422072006200720064b1b22074100480d150240024020040d002007102d21060c010b200128020020042007103121060b2006450d1620012006360200200141046a2007360200200141086a28020021040b2003200441016a360200200620046a41033a0000200028020c21070240024020052802002206200328020022046b4104490d00200128020021060c010b200441046a22082004490d15200641017422042008200420084b1b22044100480d150240024020060d002004102d21060c010b200128020020062004103121060b2006450d1620012006360200200141046a2004360200200141086a28020021040b2003200441046a360200200620046a2007360000200041186a29030021092000290310210a0240024020052802002204200328020022006b4110490d00200128020021040c010b200041106a22052000490d15200441017422002005200020054b1b22004100480d150240024020040d002000102d21040c010b200128020020042000103121040b2004450d1620012004360200200141046a2000360200200141086a28020021000b2003200041106a360200200420006a220020093700082000200a3700000c0f0b200241043a000002400240200528020020032802002204460d00200128020021060c010b200441016a22062004490d14200441017422072006200720064b1b22074100480d140240024020040d002007102d21060c010b200128020020042007103121060b2006450d1520012006360200200141046a2007360200200141086a28020021040b2003200441016a360200200620046a41043a0000200041186a29030021092000290310210a0240024020052802002204200328020022006b4110490d00200128020021040c010b200041106a22052000490d14200441017422002005200020054b1b22004100480d140240024020040d002000102d21040c010b200128020020042000103121040b2004450d1520012004360200200141046a2000360200200141086a28020021000b2003200041106a360200200420006a220020093700082000200a3700000c0e0b200241053a000002400240200528020020032802002204460d00200128020021060c010b200441016a22062004490d13200441017422072006200720064b1b22074100480d130240024020040d002007102d21060c010b200128020020042007103121060b2006450d1420012006360200200141046a2007360200200141086a28020021040b2003200441016a360200200620046a41053a0000200041186a29030021092000290310210a0240024020052802002204200328020022006b4110490d00200128020021040c010b200041106a22052000490d13200441017422002005200020054b1b22004100480d130240024020040d002000102d21040c010b200128020020042000103121040b2004450d1420012004360200200141046a2000360200200141086a28020021000b2003200041106a360200200420006a220020093700082000200a3700000c0d0b200241063a000002400240200528020020032802002204460d00200128020021060c010b200441016a22062004490d12200441017422072006200720064b1b22074100480d120240024020040d002007102d21060c010b200128020020042007103121060b2006450d1320012006360200200141046a2007360200200141086a28020021040b2003200441016a360200200620046a41063a0000200041186a29030021092000290310210a0240024020052802002204200328020022006b4110490d00200128020021040c010b200041106a22052000490d12200441017422002005200020054b1b22004100480d120240024020040d002000102d21040c010b200128020020042000103121040b2004450d1320012004360200200141046a2000360200200141086a28020021000b2003200041106a360200200420006a220020093700082000200a3700000c0c0b200241073a000002400240200528020020032802002204460d00200128020021060c010b200441016a22062004490d11200441017422072006200720064b1b22074100480d110240024020040d002007102d21060c010b200128020020042007103121060b2006450d1220012006360200200141046a2007360200200141086a28020021040b2003200441016a360200200620046a41073a00004120102d2204450d11200441186a200041216a290000370000200441106a200041196a290000370000200441086a200041116a2900003700002004200041096a2900003700000240024020052802002205200328020022006b4120490d00200128020021050c010b200041206a22062000490d11200541017422002006200020064b1b22004100480d110240024020050d002000102d21050c010b200128020020052000103121050b2005450d1220012005360200200141046a2000360200200141086a28020021000b2003200041206a360200200520006a220041186a200441186a290000370000200041106a200441106a290000370000200041086a200441086a290000370000200020042900003700002004102f0c0b0b200241083a000002400240200528020020032802002204460d00200128020021060c010b200441016a22062004490d10200441017422072006200720064b1b22074100480d100240024020040d002007102d21060c010b200128020020042007103121060b2006450d1120012006360200200141046a2007360200200141086a28020021040b2003200441016a360200200620046a41083a00004120102d2204450d10200441186a200041216a290000370000200441106a200041196a290000370000200441086a200041116a2900003700002004200041096a2900003700000240024020052802002205200328020022006b4120490d00200128020021050c010b200041206a22062000490d10200541017422002006200020064b1b22004100480d100240024020050d002000102d21050c010b200128020020052000103121050b2005450d1120012005360200200141046a2000360200200141086a28020021000b2003200041206a360200200520006a220041186a200441186a290000370000200041106a200441106a290000370000200041086a200441086a290000370000200020042900003700002004102f0c0a0b200241093a000002400240200528020020032802002204460d00200128020021060c010b200441016a22062004490d0f200441017422072006200720064b1b22074100480d0f0240024020040d002007102d21060c010b200128020020042007103121060b2006450d1020012006360200200141046a2007360200200141086a28020021040b2003200441016a360200200620046a41093a00004120102d2204450d0f200441186a200041216a290000370000200441106a200041196a290000370000200441086a200041116a2900003700002004200041096a2900003700000240024020052802002207200328020022066b4120490d00200128020021070c010b200641206a22082006490d0f200741017422062008200620084b1b22064100480d0f0240024020070d002006102d21070c010b200128020020072006103121070b2007450d1020012007360200200141046a2006360200200141086a28020021060b2003200641206a360200200720066a220641186a200441186a290000370000200641106a200441106a290000370000200641086a200441086a290000370000200620042900003700002004102f0240024020052802002206200328020022046b4120490d00200128020021060c010b200441206a22072004490d0f200641017422042007200420074b1b22044100480d0f0240024020060d002004102d21060c010b200128020020062004103121060b2006450d1020012006360200200141046a2004360200200141086a28020021040b2003200441206a360200200620046a220441186a200041296a220641186a290000370000200441106a200641106a290000370000200441086a200641086a29000037000020042006290000370000200041d8006a29030021092000290350210a0240024020052802002204200328020022006b4110490d00200128020021040c010b200041106a22052000490d0f200441017422002005200020054b1b22004100480d0f0240024020040d002000102d21040c010b200128020020042000103121040b2004450d1020012004360200200141046a2000360200200141086a28020021000b2003200041106a360200200420006a220020093700082000200a3700000c090b2002410a3a000002400240200528020020032802002204460d00200128020021060c010b200441016a22062004490d0e200441017422072006200720064b1b22074100480d0e0240024020040d002007102d21060c010b200128020020042007103121060b2006450d0f20012006360200200141046a2007360200200141086a28020021040b2003200441016a360200200620046a410a3a00004120102d2204450d0e200441186a200041216a290000370000200441106a200041196a290000370000200441086a200041116a2900003700002004200041096a2900003700000240024020052802002205200328020022006b4120490d00200128020021050c010b200041206a22062000490d0e200541017422002006200020064b1b22004100480d0e0240024020050d002000102d21050c010b200128020020052000103121050b2005450d0f20012005360200200141046a2000360200200141086a28020021000b2003200041206a360200200520006a220041186a200441186a290000370000200041106a200441106a290000370000200041086a200441086a290000370000200020042900003700002004102f0c080b02400240200141046a2205280200200141086a22032802002204460d00200128020021060c010b200441016a22062004490d0d200441017422072006200720064b1b22074100480d0d0240024020040d002007102d21060c010b200128020020042007103121060b2006450d0e20012006360200200141046a2007360200200141086a28020021040b2003200441016a360200200620046a410d3a00000240024002400240024002400240024020002d00080e080001020304050607000b200241003a000002400240200528020020032802002204460d00200128020021060c010b200441016a22062004490d14200441017422072006200720064b1b22074100480d140240024020040d002007102d21060c010b200128020020042007103121060b2006450d1520012006360200200141046a2007360200200141086a28020021040b2003200441016a360200200620046a41003a00000240024020052802002206200328020022046b4120490d00200128020021060c010b200441206a22072004490d14200641017422042007200420074b1b22044100480d140240024020060d002004102d21060c010b200128020020062004103121060b2006450d1520012006360200200141046a2004360200200141086a28020021040b2003200441206a360200200620046a220441186a200041096a220641186a290000370000200441106a200641106a290000370000200441086a200641086a290000370000200420062900003700000240024020052802002206200328020022046b4120490d00200128020021060c010b200441206a22072004490d14200641017422042007200420074b1b22044100480d140240024020060d002004102d21060c010b200128020020062004103121060b2006450d1520012006360200200141046a2004360200200141086a28020021040b2003200441206a360200200620046a220441186a200041296a220641186a290000370000200441106a200641106a290000370000200441086a200641086a29000037000020042006290000370000200041d8006a29030021092000290350210a0240024020052802002204200328020022006b4110490d00200128020021040c010b200041106a22052000490d14200441017422002005200020054b1b22004100480d140240024020040d002000102d21040c010b200128020020042000103121040b2004450d1520012004360200200141046a2000360200200141086a28020021000b2003200041106a360200200420006a220020093700082000200a3700000c0e0b200241013a000002400240200528020020032802002204460d00200128020021060c010b200441016a22062004490d13200441017422072006200720064b1b22074100480d130240024020040d002007102d21060c010b200128020020042007103121060b2006450d1420012006360200200141046a2007360200200141086a28020021040b2003200441016a360200200620046a41013a00000240024020052802002206200328020022046b4120490d00200128020021060c010b200441206a22072004490d13200641017422042007200420074b1b22044100480d130240024020060d002004102d21060c010b200128020020062004103121060b2006450d1420012006360200200141046a2004360200200141086a28020021040b2003200441206a360200200620046a220441186a200041096a220641186a290000370000200441106a200641106a290000370000200441086a200641086a290000370000200420062900003700000240024020052802002205200328020022046b4120490d00200128020021050c010b200441206a22062004490d13200541017422042006200420064b1b22044100480d130240024020050d002004102d21050c010b200128020020052004103121050b2005450d1420012005360200200141046a2004360200200141086a28020021040b2003200441206a360200200520046a220141186a200041296a220041186a290000370000200141106a200041106a290000370000200141086a200041086a290000370000200120002900003700000c0d0b200241023a000002400240200528020020032802002204460d00200128020021060c010b200441016a22062004490d12200441017422072006200720064b1b22074100480d120240024020040d002007102d21060c010b200128020020042007103121060b2006450d1320012006360200200141046a2007360200200141086a28020021040b2003200441016a360200200620046a41023a00000240024020052802002206200328020022046b4120490d00200128020021060c010b200441206a22072004490d12200641017422042007200420074b1b22044100480d120240024020060d002004102d21060c010b200128020020062004103121060b2006450d1320012006360200200141046a2004360200200141086a28020021040b2003200441206a360200200620046a220441186a200041096a220641186a290000370000200441106a200641106a290000370000200441086a200641086a29000037000020042006290000370000200220002d002922063a000002400240200528020020032802002200460d00200128020021040c010b200041016a22042000490d12200041017422052004200520044b1b22054100480d120240024020000d002005102d21040c010b200128020020002005103121040b2004450d1320012004360200200141046a2005360200200141086a28020021000b2003200041016a360200200420006a20063a00000c0c0b200241033a000002400240200528020020032802002204460d00200128020021060c010b200441016a22062004490d11200441017422072006200720064b1b22074100480d110240024020040d002007102d21060c010b200128020020042007103121060b2006450d1220012006360200200141046a2007360200200141086a28020021040b2003200441016a360200200620046a41033a00000240024020052802002206200328020022046b4120490d00200128020021060c010b200441206a22072004490d11200641017422042007200420074b1b22044100480d110240024020060d002004102d21060c010b200128020020062004103121060b2006450d1220012006360200200141046a2004360200200141086a28020021040b2003200441206a360200200620046a220441186a200041096a220641186a290000370000200441106a200641106a290000370000200441086a200641086a290000370000200420062900003700000240024020052802002206200328020022046b4120490d00200128020021060c010b200441206a22072004490d11200641017422042007200420074b1b22044100480d110240024020060d002004102d21060c010b200128020020062004103121060b2006450d1220012006360200200141046a2004360200200141086a28020021040b2003200441206a360200200620046a220441186a200041296a220641186a290000370000200441106a200641106a290000370000200441086a200641086a290000370000200420062900003700004120102d2204450d11200441186a200041e1006a290000370000200441106a200041d9006a290000370000200441086a200041d1006a2900003700002004200041c9006a2900003700000240024020052802002207200328020022066b4120490d00200128020021070c010b200641206a22082006490d11200741017422062008200620084b1b22064100480d110240024020070d002006102d21070c010b200128020020072006103121070b2007450d1220012007360200200141046a2006360200200141086a28020021060b2003200641206a360200200720066a220641186a200441186a290000370000200641106a200441106a290000370000200641086a200441086a290000370000200620042900003700002004102f200041f8006a29030021092000290370210a0240024020052802002206200328020022046b4110490d00200128020021060c010b200441106a22072004490d11200641017422042007200420074b1b22044100480d110240024020060d002004102d21060c010b200128020020062004103121060b2006450d1220012006360200200141046a2004360200200141086a28020021040b2003200441106a360200200620046a220420093700082004200a370000200220002d006922063a000002400240200528020020032802002200460d00200128020021040c010b200041016a22042000490d11200041017422052004200520044b1b22054100480d110240024020000d002005102d21040c010b200128020020002005103121040b2004450d1220012004360200200141046a2005360200200141086a28020021000b2003200041016a360200200420006a20063a00000c0b0b200241043a000002400240200528020020032802002204460d00200128020021060c010b200441016a22062004490d10200441017422072006200720064b1b22074100480d100240024020040d002007102d21060c010b200128020020042007103121060b2006450d1120012006360200200141046a2007360200200141086a28020021040b2003200441016a360200200620046a41043a00004120102d2204450d10200441186a200041216a290000370000200441106a200041196a290000370000200441086a200041116a2900003700002004200041096a2900003700000240024020052802002205200328020022006b4120490d00200128020021050c010b200041206a22062000490d10200541017422002006200020064b1b22004100480d100240024020050d002000102d21050c010b200128020020052000103121050b2005450d1120012005360200200141046a2000360200200141086a28020021000b2003200041206a360200200520006a220041186a200441186a290000370000200041106a200441106a290000370000200041086a200441086a290000370000200020042900003700002004102f0c0a0b200241053a000002400240200528020020032802002204460d00200128020021060c010b200441016a22062004490d0f200441017422072006200720064b1b22074100480d0f0240024020040d002007102d21060c010b200128020020042007103121060b2006450d1020012006360200200141046a2007360200200141086a28020021040b2003200441016a360200200620046a41053a0000200028020c21060240024020052802002204200328020022006b4104490d00200128020021040c010b200041046a22052000490d0f200441017422002005200020054b1b22004100480d0f0240024020040d002000102d21040c010b200128020020042000103121040b2004450d1020012004360200200141046a2000360200200141086a28020021000b2003200041046a360200200420006a20063600000c090b200241063a000002400240200528020020032802002204460d00200128020021060c010b200441016a22062004490d0e200441017422072006200720064b1b22074100480d0e0240024020040d002007102d21060c010b200128020020042007103121060b2006450d0f20012006360200200141046a2007360200200141086a28020021040b2003200441016a360200200620046a41063a00000240024020052802002206200328020022046b4120490d00200128020021060c010b200441206a22072004490d0e200641017422042007200420074b1b22044100480d0e0240024020060d002004102d21060c010b200128020020062004103121060b2006450d0f20012006360200200141046a2004360200200141086a28020021040b2003200441206a360200200620046a220441186a200041096a220641186a290000370000200441106a200641106a290000370000200441086a200641086a29000037000020042006290000370000200220002d002922063a000002400240200528020020032802002200460d00200128020021040c010b200041016a22042000490d0e200041017422052004200520044b1b22054100480d0e0240024020000d002005102d21040c010b200128020020002005103121040b2004450d0f20012004360200200141046a2005360200200141086a28020021000b2003200041016a360200200420006a20063a00000c080b200241073a000002400240200528020020032802002204460d00200128020021060c010b200441016a22062004490d0d200441017422072006200720064b1b22074100480d0d0240024020040d002007102d21060c010b200128020020042007103121060b2006450d0e20012006360200200141046a2007360200200141086a28020021040b2003200441016a360200200620046a41073a00000240024020052802002205200328020022046b4120490d00200128020021050c010b200441206a22062004490d0d200541017422042006200420064b1b22044100480d0d0240024020050d002004102d21050c010b200128020020052004103121050b2005450d0e20012005360200200141046a2004360200200141086a28020021040b200141086a2206200441206a360200200520046a220441186a200041096a220541186a290000370000200441106a200541106a290000370000200441086a200541086a29000037000020042005290000370000200028022c2107200041346a28020022002001106902400240200141046a2802002205200628020022046b2000490d00200128020021050c010b200420006a22062004490d0d200541017422042006200420064b1b22044100480d0d0240024020050d002004102d21050c010b200128020020052004103121050b2005450d0e20012005360200200141046a2004360200200141086a28020021040b2003200420006a360200200520046a2007200010e8061a0c070b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d0c200341017422052004200520044b1b22054100480d0c0240024020030d002005102d21040c010b200128020020032005103121040b2004450d0d20012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a410e3a000020002d0001220341024b0d0602400240024020030e03000102000b200241003a000002400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d0e200341017422052004200520044b1b22054100480d0e0240024020030d002005102d21040c010b200128020020032005103121040b2004450d0f20012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41003a0000200220002d000222043a000002400240200141046a28020020052802002200460d00200128020021030c010b200041016a22032000490d0e200041017422052003200520034b1b22054100480d0e0240024020000d002005102d21030c010b200128020020002005103121030b2003450d0f20012003360200200141046a2005360200200141086a28020021000b200141086a200041016a360200200320006a20043a00000c080b200241013a000002400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d0d200341017422052004200520044b1b22054100480d0d0240024020030d002005102d21040c010b200128020020032005103121040b2004450d0e20012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41013a000002400240200141046a2802002204200528020022036b4120490d00200128020021040c010b200341206a22052003490d0d200441017422032005200320054b1b22034100480d0d0240024020040d002003102d21040c010b200128020020042003103121040b2004450d0e20012004360200200141046a2003360200200141086a28020021030b200141086a200341206a360200200420036a220141186a200041026a220041186a290000370000200141106a200041106a290000370000200141086a200041086a290000370000200120002900003700000c070b200241023a000002400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d0c200341017422052004200520044b1b22054100480d0c0240024020030d002005102d21040c010b200128020020032005103121040b2004450d0d20012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41023a0000200220002d000222043a000002400240200141046a28020020052802002200460d00200128020021030c010b200041016a22032000490d0c200041017422052003200520034b1b22054100480d0c0240024020000d002005102d21030c010b200128020020002005103121030b2003450d0d20012003360200200141046a2005360200200141086a28020021000b200141086a200041016a360200200320006a20043a00000c060b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d0b200341017422052004200520044b1b22054100480d0b0240024020030d002005102d21040c010b200128020020032005103121040b2004450d0c20012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a410f3a000020002d0004220341024b0d0502400240024020030e03000102000b200241003a000002400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d0f200341017422052004200520044b1b22054100480d0f0240024020030d002005102d21040c010b200128020020032005103121040b2004450d0e20012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41003a000002400240200141046a2802002204200528020022036b4120490d00200128020021040c010b200341206a22052003490d0f200441017422032005200320054b1b22034100480d0f0240024020040d002003102d21040c010b200128020020042003103121040b2004450d1020012004360200200141046a2003360200200141086a28020021030b200141086a200341206a360200200420036a220141186a200041056a220041186a290000370000200141106a200041106a290000370000200141086a200041086a290000370000200120002900003700000c070b200241013a000002400240200141046a280200200141086a2802002200460d00200128020021030c010b200041016a22032000490d0e200041017422042003200420034b1b22044100480d0e0240024020000d002004102d21030c010b200128020020002004103121030b2003450d0f20012003360200200141046a2004360200200141086a28020021000b200141086a200041016a360200200320006a41013a00000c060b200241023a000002400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d0d200341017422052004200520044b1b22054100480d0d0240024020030d002005102d21040c010b200128020020032005103121040b2004450d0e20012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41023a00002000280208210b200041106a2802002200200110692000450d05200b200041d0006c6a210c200141046a210703400240024020072802002203200528020022006b4120490d00200128020021030c010b200041206a22042000490d0e200341017422002004200020044b1b22004100480d0e0240024020030d002000102d21030c010b200128020020032000103121030b2003450d0f2001200336020020072000360200200528020021000b2005200041206a360200200320006a220041186a200b41186a290000370000200041106a200b41106a290000370000200041086a200b41086a2900003700002000200b2900003700002002200b41206a3602002002200110c2022002200b41306a3602002002200110c202200b2802402100200b28024822032001106902402003450d00200341306c210603400240024020072802002204200528020022036b4120490d00200128020021040c010b200341206a22082003490d10200441017422032008200320084b1b22034100480d100240024020040d002003102d21040c010b200128020020042003103121040b2004450d112001200436020020072003360200200528020021030b2005200341206a360200200420036a220341186a200041286a290000370000200341106a200041206a290000370000200341086a200041186a2900003700002003200041106a290000370000200220003602002002200110c202200041306a2100200641506a22060d000b0b200c200b41d0006a220b470d000c060b0b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d0c200341017422052004200520044b1b22054100480d0c0240024020030d002005102d21040c010b200128020020032005103121040b2004450d0d20012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41103a000002400240200141046a28020020052802002203460d00200128020021040c010b200341016a22042003490d0c200341017422052004200520044b1b22054100480d0c0240024020030d002005102d21040c010b200128020020032005103121040b2004450d0d20012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41003a000002400240200141046a2802002204200528020022036b4110490d00200128020021040c010b200341106a22052003490d0c200441017422032005200320054b1b22034100480d0c0240024020040d002003102d21040c010b200128020020042003103121040b2004450d0d20012004360200200141046a2003360200200141086a28020021030b200141086a2205200341106a360200200420036a220341086a200041106a220441086a29000037000020032004290000370000200028020421062000410c6a28020022002001106902400240200141046a2802002204200528020022036b2000490d00200128020021040c010b200320006a22052003490d0c200441017422032005200320054b1b22034100480d0c0240024020040d002003102d21040c010b200128020020042003103121040b2004450d0d20012004360200200141046a2003360200200141086a28020021030b200141086a200320006a360200200420036a2006200010e8061a0c040b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d0b200341017422052004200520044b1b22054100480d0b0240024020030d002005102d21040c010b200128020020032005103121040b2004450d0c20012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41113a000020002d0008220341064b0d03024002400240024002400240024020030e0700010203040506000b200241003a000002400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d11200341017422052004200520044b1b22054100480d110240024020030d002005102d21040c010b200128020020032005103121040b2004450d1220012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41003a000002400240200141046a2802002204200528020022036b4120490d00200128020021040c010b200341206a22052003490d11200441017422032005200320054b1b22034100480d110240024020040d002003102d21040c010b200128020020042003103121040b2004450d1220012004360200200141046a2003360200200141086a28020021030b200141086a200341206a360200200420036a220141186a200041096a220041186a290000370000200141106a200041106a290000370000200141086a200041086a290000370000200120002900003700000c090b200241013a000002400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d10200341017422052004200520044b1b22054100480d100240024020030d002005102d21040c010b200128020020032005103121040b2004450d1120012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41013a000002400240200141046a2802002204200528020022036b4120490d00200128020021040c010b200341206a22052003490d10200441017422032005200320054b1b22034100480d100240024020040d002003102d21040c010b200128020020042003103121040b2004450d1120012004360200200141046a2003360200200141086a28020021030b200141086a2205200341206a360200200420036a220341186a200041096a220441186a290000370000200341106a200441106a290000370000200341086a200441086a29000037000020032004290000370000200041386a29030021092000290330210a02400240200141046a2802002203200528020022006b4110490d00200128020021030c010b200041106a22042000490d10200341017422002004200020044b1b22004100480d100240024020030d002000102d21030c010b200128020020032000103121030b2003450d1120012003360200200141046a2000360200200141086a28020021000b200141086a200041106a360200200320006a220020093700082000200a3700000c080b200241023a000002400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d0f200341017422052004200520044b1b22054100480d0f0240024020030d002005102d21040c010b200128020020032005103121040b2004450d1020012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41023a000002400240200141046a2802002204200528020022036b4120490d00200128020021040c010b200341206a22052003490d0f200441017422032005200320054b1b22034100480d0f0240024020040d002003102d21040c010b200128020020042003103121040b2004450d1020012004360200200141046a2003360200200141086a28020021030b200141086a2205200341206a360200200420036a220341186a200041096a220441186a290000370000200341106a200441106a290000370000200341086a200441086a29000037000020032004290000370000200041386a29030021092000290330210a02400240200141046a2802002203200528020022006b4110490d00200128020021030c010b200041106a22042000490d0f200341017422002004200020044b1b22004100480d0f0240024020030d002000102d21030c010b200128020020032000103121030b2003450d1020012003360200200141046a2000360200200141086a28020021000b200141086a200041106a360200200320006a220020093700082000200a3700000c070b200241033a000002400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d0e200341017422052004200520044b1b22054100480d0e0240024020030d002005102d21040c010b200128020020032005103121040b2004450d0f20012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41033a000002400240200141046a2802002204200528020022036b4120490d00200128020021040c010b200341206a22052003490d0e200441017422032005200320054b1b22034100480d0e0240024020040d002003102d21040c010b200128020020042003103121040b2004450d0f20012004360200200141046a2003360200200141086a28020021030b200141086a2205200341206a360200200420036a220341186a200041096a220441186a290000370000200341106a200441106a290000370000200341086a200441086a29000037000020032004290000370000200028022c210402400240200141046a2802002203200528020022006b4104490d00200128020021030c010b200041046a22052000490d0e200341017422002005200020054b1b22004100480d0e0240024020030d002000102d21030c010b200128020020032000103121030b2003450d0f20012003360200200141046a2000360200200141086a28020021000b200141086a200041046a360200200320006a20043600000c060b200141086a2802002103200241043a0000024002402003200141046a280200460d00200128020021040c010b200341016a22042003490d0d200341017422052004200520044b1b22054100480d0d0240024020030d002005102d21040c010b200128020020032005103121040b2004450d0e20012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41043a000002400240200141046a2802002204200528020022036b4120490d00200128020021040c010b200341206a22052003490d0d200441017422032005200320054b1b22034100480d0d0240024020040d002003102d21040c010b200128020020042003103121040b2004450d0e20012004360200200141046a2003360200200141086a28020021030b200141086a2205200341206a360200200420036a220341186a200041096a220441186a290000370000200341106a200441106a290000370000200341086a200441086a29000037000020032004290000370000200028022c210402400240200141046a2802002203200528020022006b4104490d00200128020021030c010b200041046a22052000490d0d200341017422002005200020054b1b22004100480d0d0240024020030d002000102d21030c010b200128020020032000103121030b2003450d0e20012003360200200141046a2000360200200141086a28020021000b200141086a200041046a360200200320006a20043600000c050b200241053a000002400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d0c200341017422052004200520044b1b22054100480d0c0240024020030d002005102d21040c010b200128020020032005103121040b2004450d0d20012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41053a000002400240200141046a2802002204200528020022036b4120490d00200128020021040c010b200341206a22052003490d0c200441017422032005200320054b1b22034100480d0c0240024020040d002003102d21040c010b200128020020042003103121040b2004450d0d20012004360200200141046a2003360200200141086a28020021030b200141086a2205200341206a360200200420036a220341186a200041096a220441186a290000370000200341106a200441106a290000370000200341086a200441086a29000037000020032004290000370000200028022c210402400240200141046a2802002203200528020022006b4104490d00200128020021030c010b200041046a22052000490d0c200341017422002005200020054b1b22004100480d0c0240024020030d002000102d21030c010b200128020020032000103121030b2003450d0d20012003360200200141046a2000360200200141086a28020021000b200141086a200041046a360200200320006a20043600000c040b200241063a000002400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d0b200341017422052004200520044b1b22054100480d0b0240024020030d002005102d21040c010b200128020020032005103121040b2004450d0c20012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41063a0000200028020c210402400240200141046a2802002203200528020022006b4104490d00200128020021030c010b200041046a22052000490d0b200341017422002005200020054b1b22004100480d0b0240024020030d002000102d21030c010b200128020020032000103121030b2003450d0c20012003360200200141046a2000360200200141086a28020021000b200141086a200041046a360200200320006a20043600000c030b02400240200141046a2205280200200141086a22032802002204460d00200128020021060c010b200441016a22062004490d0a200441017422072006200720064b1b22074100480d0a0240024020040d002007102d21060c010b200128020020042007103121060b2006450d0b20012006360200200141046a2007360200200141086a28020021040b2003200441016a360200200620046a41123a000020002d00082204410e4b0d0202400240024002400240024002400240024002400240024002400240024020040e0f000102030405060708090a0b0c0d0e000b200241003a000002400240200528020020032802002204460d00200128020021060c010b200441016a22062004490d18200441017422072006200720064b1b22074100480d180240024020040d002007102d21060c010b200128020020042007103121060b2006450d1920012006360200200141046a2007360200200141086a28020021040b2003200441016a360200200620046a41003a00000240024020052802002205200328020022046b4120490d00200128020021050c010b200441206a22062004490d18200541017422042006200420064b1b22044100480d180240024020050d002004102d21050c010b200128020020052004103121050b2005450d1920012005360200200141046a2004360200200141086a28020021040b2003200441206a360200200520046a220141186a200041096a220041186a290000370000200141106a200041106a290000370000200141086a200041086a290000370000200120002900003700000c100b200241013a000002400240200528020020032802002204460d00200128020021060c010b200441016a22062004490d17200441017422072006200720064b1b22074100480d170240024020040d002007102d21060c010b200128020020042007103121060b2006450d1820012006360200200141046a2007360200200141086a28020021040b2003200441016a360200200620046a41013a00000240024020052802002206200328020022046b4120490d00200128020021060c010b200441206a22072004490d17200641017422042007200420074b1b22044100480d170240024020060d002004102d21060c010b200128020020062004103121060b2006450d1820012006360200200141046a2004360200200141086a28020021040b2003200441206a360200200620046a220441186a200041096a220641186a290000370000200441106a200641106a290000370000200441086a200641086a29000037000020042006290000370000200041386a29030021092000290330210a0240024020052802002204200328020022006b4110490d00200128020021040c010b200041106a22052000490d17200441017422002005200020054b1b22004100480d170240024020040d002000102d21040c010b200128020020042000103121040b2004450d1820012004360200200141046a2000360200200141086a28020021000b2003200041106a360200200420006a220020093700082000200a3700000c0f0b200241023a000002400240200528020020032802002204460d00200128020021060c010b200441016a22062004490d16200441017422072006200720064b1b22074100480d160240024020040d002007102d21060c010b200128020020042007103121060b2006450d1720012006360200200141046a2007360200200141086a28020021040b2003200441016a360200200620046a41023a00000240024020052802002206200328020022046b4120490d00200128020021060c010b200441206a22072004490d16200641017422042007200420074b1b22044100480d160240024020060d002004102d21060c010b200128020020062004103121060b2006450d1720012006360200200141046a2004360200200141086a28020021040b2003200441206a360200200620046a220441186a200041096a220641186a290000370000200441106a200641106a290000370000200441086a200641086a29000037000020042006290000370000200041d8006a29030021092000290350210a0240024020052802002206200328020022046b4110490d00200128020021060c010b200441106a22072004490d16200641017422042007200420074b1b22044100480d160240024020060d002004102d21060c010b200128020020062004103121060b2006450d1720012006360200200141046a2004360200200141086a28020021040b2003200441106a360200200620046a220420093700082004200a3700000240024020052802002205200328020022046b4120490d00200128020021050c010b200441206a22062004490d16200541017422042006200420064b1b22044100480d160240024020050d002004102d21050c010b200128020020052004103121050b2005450d1720012005360200200141046a2004360200200141086a28020021040b2003200441206a360200200520046a220141186a200041296a220041186a290000370000200141106a200041106a290000370000200141086a200041086a290000370000200120002900003700000c0e0b200241033a000002400240200528020020032802002204460d00200128020021060c010b200441016a22062004490d15200441017422072006200720064b1b22074100480d150240024020040d002007102d21060c010b200128020020042007103121060b2006450d1620012006360200200141046a2007360200200141086a28020021040b2003200441016a360200200620046a41033a00000240024020052802002205200328020022046b4120490d00200128020021050c010b200441206a22062004490d15200541017422042006200420064b1b22044100480d150240024020050d002004102d21050c010b200128020020052004103121050b2005450d1620012005360200200141046a2004360200200141086a28020021040b2003200441206a360200200520046a220141186a200041096a220041186a290000370000200141106a200041106a290000370000200141086a200041086a290000370000200120002900003700000c0d0b200241043a000002400240200528020020032802002204460d00200128020021060c010b200441016a22062004490d14200441017422072006200720064b1b22074100480d140240024020040d002007102d21060c010b200128020020042007103121060b2006450d1520012006360200200141046a2007360200200141086a28020021040b2003200441016a360200200620046a41043a00000240024020052802002205200328020022046b4120490d00200128020021050c010b200441206a22062004490d14200541017422042006200420064b1b22044100480d140240024020050d002004102d21050c010b200128020020052004103121050b2005450d1520012005360200200141046a2004360200200141086a28020021040b2003200441206a360200200520046a220141186a200041096a220041186a290000370000200141106a200041106a290000370000200141086a200041086a290000370000200120002900003700000c0c0b200241053a000002400240200528020020032802002204460d00200128020021060c010b200441016a22062004490d13200441017422072006200720064b1b22074100480d130240024020040d002007102d21060c010b200128020020042007103121060b2006450d1420012006360200200141046a2007360200200141086a28020021040b2003200441016a360200200620046a41053a00000240024020052802002205200328020022046b4120490d00200128020021050c010b200441206a22062004490d13200541017422042006200420064b1b22044100480d130240024020050d002004102d21050c010b200128020020052004103121050b2005450d1420012005360200200141046a2004360200200141086a28020021040b2003200441206a360200200520046a220141186a200041096a220041186a290000370000200141106a200041106a290000370000200141086a200041086a290000370000200120002900003700000c0b0b200241063a000002400240200528020020032802002204460d00200128020021060c010b200441016a22062004490d12200441017422072006200720064b1b22074100480d120240024020040d002007102d21060c010b200128020020042007103121060b2006450d1320012006360200200141046a2007360200200141086a28020021040b2003200441016a360200200620046a41063a00000240024020052802002206200328020022046b4120490d00200128020021060c010b200441206a22072004490d12200641017422042007200420074b1b22044100480d120240024020060d002004102d21060c010b200128020020062004103121060b2006450d1320012006360200200141046a2004360200200141086a28020021040b200141086a220b200441206a360200200620046a220441186a200041096a220641186a290000370000200441106a200641106a290000370000200441086a200641086a29000037000020042006290000370000200028022c2104200041346a2802002200200110692000450d0a20004105742107200141046a210c03400240024020052802002206200328020022006b4120490d00200128020021060c010b200041206a22082000490d13200641017422002008200020084b1b22004100480d130240024020060d002000102d21060c010b200128020020062000103121060b2006450d1420012006360200200c2000360200200b28020021000b2003200041206a360200200620006a220041186a200441186a290000370000200041106a200441106a290000370000200041086a200441086a29000037000020002004290000370000200441206a2104200741606a22070d000c0b0b0b200241073a000002400240200528020020032802002204460d00200128020021060c010b200441016a22062004490d11200441017422072006200720064b1b22074100480d110240024020040d002007102d21060c010b200128020020042007103121060b2006450d1220012006360200200141046a2007360200200141086a28020021040b2003200441016a360200200620046a41073a00000240024020052802002206200328020022046b4120490d00200128020021060c010b200441206a22072004490d11200641017422042007200420074b1b22044100480d110240024020060d002004102d21060c010b200128020020062004103121060b2006450d1220012006360200200141046a2004360200200141086a28020021040b2003200441206a360200200620046a220441186a200041096a220641186a290000370000200441106a200641106a290000370000200441086a200641086a29000037000020042006290000370000200220002d002922063a000002400240200528020020032802002200460d00200128020021040c010b200041016a22042000490d11200041017422052004200520044b1b22054100480d110240024020000d002005102d21040c010b200128020020002005103121040b2004450d1220012004360200200141046a2005360200200141086a28020021000b2003200041016a360200200420006a20063a00000c090b200241083a000002400240200528020020032802002204460d00200128020021060c010b200441016a22062004490d10200441017422072006200720064b1b22074100480d100240024020040d002007102d21060c010b200128020020042007103121060b2006450d1120012006360200200141046a2007360200200141086a28020021040b2003200441016a360200200620046a41083a00000240024020052802002205200328020022046b4120490d00200128020021050c010b200441206a22062004490d10200541017422042006200420064b1b22044100480d100240024020050d002004102d21050c010b200128020020052004103121050b2005450d1120012005360200200141046a2004360200200141086a28020021040b2003200441206a360200200520046a220141186a200041096a220041186a290000370000200141106a200041106a290000370000200141086a200041086a290000370000200120002900003700000c080b200241093a000002400240200528020020032802002204460d00200128020021060c010b200441016a22062004490d0f200441017422072006200720064b1b22074100480d0f0240024020040d002007102d21060c010b200128020020042007103121060b2006450d1020012006360200200141046a2007360200200141086a28020021040b2003200441016a360200200620046a41093a00000240024020052802002205200328020022046b4120490d00200128020021050c010b200441206a22062004490d0f200541017422042006200420064b1b22044100480d0f0240024020050d002004102d21050c010b200128020020052004103121050b2005450d1020012005360200200141046a2004360200200141086a28020021040b2003200441206a360200200520046a220141186a200041096a220041186a290000370000200141106a200041106a290000370000200141086a200041086a290000370000200120002900003700000c070b2002410a3a000002400240200528020020032802002204460d00200128020021060c010b200441016a22062004490d0e200441017422072006200720064b1b22074100480d0e0240024020040d002007102d21060c010b200128020020042007103121060b2006450d0f20012006360200200141046a2007360200200141086a28020021040b2003200441016a360200200620046a410a3a00000240024020052802002205200328020022046b4120490d00200128020021050c010b200441206a22062004490d0e200541017422042006200420064b1b22044100480d0e0240024020050d002004102d21050c010b200128020020052004103121050b2005450d0f20012005360200200141046a2004360200200141086a28020021040b2003200441206a360200200520046a220141186a200041096a220041186a290000370000200141106a200041106a290000370000200141086a200041086a290000370000200120002900003700000c060b2002410b3a000002400240200528020020032802002204460d00200128020021060c010b200441016a22062004490d0d200441017422072006200720064b1b22074100480d0d0240024020040d002007102d21060c010b200128020020042007103121060b2006450d0e20012006360200200141046a2007360200200141086a28020021040b2003200441016a360200200620046a410b3a00000240024020052802002206200328020022046b4120490d00200128020021060c010b200441206a22072004490d0d200641017422042007200420074b1b22044100480d0d0240024020060d002004102d21060c010b200128020020062004103121060b2006450d0e20012006360200200141046a2004360200200141086a28020021040b2003200441206a360200200620046a220441186a200041096a220641186a290000370000200441106a200641106a290000370000200441086a200641086a290000370000200420062900003700000240024020052802002206200328020022046b4120490d00200128020021060c010b200441206a22072004490d0d200641017422042007200420074b1b22044100480d0d0240024020060d002004102d21060c010b200128020020062004103121060b2006450d0e20012006360200200141046a2004360200200141086a28020021040b2003200441206a360200200620046a220441186a200041296a220641186a290000370000200441106a200641106a290000370000200441086a200641086a29000037000020042006290000370000200220002d004922063a000002400240200528020020032802002200460d00200128020021040c010b200041016a22042000490d0d200041017422052004200520044b1b22054100480d0d0240024020000d002005102d21040c010b200128020020002005103121040b2004450d0e20012004360200200141046a2005360200200141086a28020021000b2003200041016a360200200420006a20063a00000c050b2002410c3a000002400240200528020020032802002204460d00200128020021060c010b200441016a22062004490d0c200441017422072006200720064b1b22074100480d0c0240024020040d002007102d21060c010b200128020020042007103121060b2006450d0d20012006360200200141046a2007360200200141086a28020021040b2003200441016a360200200620046a410c3a00000240024020052802002206200328020022046b4120490d00200128020021060c010b200441206a22072004490d0c200641017422042007200420074b1b22044100480d0c0240024020060d002004102d21060c010b200128020020062004103121060b2006450d0d20012006360200200141046a2004360200200141086a28020021040b2003200441206a360200200620046a220441186a200041096a220641186a290000370000200441106a200641106a290000370000200441086a200641086a29000037000020042006290000370000200220002d002922063a000002400240200528020020032802002200460d00200128020021040c010b200041016a22042000490d0c200041017422052004200520044b1b22054100480d0c0240024020000d002005102d21040c010b200128020020002005103121040b2004450d0d20012004360200200141046a2005360200200141086a28020021000b2003200041016a360200200420006a20063a00000c040b2002410d3a000002400240200528020020032802002204460d00200128020021060c010b200441016a22062004490d0b200441017422072006200720064b1b22074100480d0b0240024020040d002007102d21060c010b200128020020042007103121060b2006450d0c20012006360200200141046a2007360200200141086a28020021040b2003200441016a360200200620046a410d3a0000200028020c21060240024020052802002204200328020022006b4104490d00200128020021040c010b200041046a22052000490d0b200441017422002005200020054b1b22004100480d0b0240024020040d002000102d21040c010b200128020020042000103121040b2004450d0c20012004360200200141046a2000360200200141086a28020021000b2003200041046a360200200420006a20063600000c030b2002410e3a000002400240200528020020032802002204460d00200128020021060c010b200441016a22062004490d0a200441017422072006200720064b1b22074100480d0a0240024020040d002007102d21060c010b200128020020042007103121060b2006450d0b20012006360200200141046a2007360200200141086a28020021040b2003200441016a360200200620046a410e3a00000240024020052802002205200328020022046b4120490d00200128020021050c010b200441206a22062004490d0a200541017422042006200420064b1b22044100480d0a0240024020050d002004102d21050c010b200128020020052004103121050b2005450d0b20012005360200200141046a2004360200200141086a28020021040b2003200441206a360200200520046a220141186a200041096a220041186a290000370000200141106a200041106a290000370000200141086a200041086a290000370000200120002900003700000c020b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d09200341017422052004200520044b1b22054100480d090240024020030d002005102d21040c010b200128020020032005103121040b2004450d0a20012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41133a000020002d0001220341054b0d01024002400240024002400240024020030e06000102030405000b200241003a000002400240200141046a280200200141086a2802002204460d00200128020021050c010b200441016a22032004490d0f200441017422052003200520034b1b22034100480d0f0240024020040d002003102d21050c010b200128020020042003103121050b2005450d1020012005360200200141046a2003360200200141086a28020021040b200041026a2103200141086a200441016a360200200520046a41003a00000c050b200241013a000002400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d0e200341017422052004200520044b1b22054100480d0e0240024020030d002005102d21040c010b200128020020032005103121040b2004450d0f20012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41013a000002400240200141046a2802002203200528020022046b4120490d00200128020021050c010b200441206a22052004490d0e200341017422042005200420054b1b22044100480d0e0240024020030d002004102d21050c010b200128020020032004103121050b2005450d0f20012005360200200141046a2004360200200141086a28020021040b200041226a2103200141086a200441206a360200200520046a220441186a200041026a220041186a290000370000200441106a200041106a290000370000200441086a200041086a290000370000200420002900003700000c040b200141086a2802002103200141046a2802002104200241023a00000240024020042003460d00200128020021040c010b200341016a22042003490d0d200341017422052004200520044b1b22054100480d0d0240024020030d002005102d21040c010b200128020020032005103121040b2004450d0e20012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41023a000002400240200141046a2802002204200528020022036b4120490d00200128020021040c010b200341206a22052003490d0d200441017422032005200320054b1b22034100480d0d0240024020040d002003102d21040c010b200128020020042003103121040b2004450d0e20012004360200200141046a2003360200200141086a28020021030b200141086a2205200341206a360200200420036a220341186a200041026a220441186a290000370000200341106a200441106a290000370000200341086a200441086a2900003700002003200429000037000002400240200141046a2802002203200528020022046b4120490d00200128020021050c010b200441206a22052004490d10200341017422042005200420054b1b22044100480d100240024020030d002004102d21050c010b200128020020032004103121050b2005450d0e20012005360200200141046a2004360200200141086a28020021040b200041c2006a2103200141086a200441206a360200200520046a220441186a200041226a220041186a290000370000200441106a200041106a290000370000200441086a200041086a290000370000200420002900003700000c030b200241033a000002400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d0f200341017422052004200520044b1b22054100480d0f0240024020030d002005102d21040c010b200128020020032005103121040b2004450d0e20012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41033a000002400240200141046a2802002203200528020022046b4120490d00200128020021050c010b200441206a22052004490d0f200341017422042005200420054b1b22044100480d0f0240024020030d002004102d21050c010b200128020020032004103121050b2005450d0e20012005360200200141046a2004360200200141086a28020021040b200041226a2103200141086a200441206a360200200520046a220441186a200041026a220041186a290000370000200441106a200041106a290000370000200441086a200041086a290000370000200420002900003700000c020b200141086a2802002103200241043a0000024002402003200141046a280200460d00200128020021040c010b200341016a22042003490d0e200341017422052004200520044b1b22054100480d0e0240024020030d002005102d21040c010b200128020020032005103121040b2004450d0d20012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41043a000002400240200141046a2802002203200528020022046b4120490d00200128020021050c010b200441206a22052004490d0e200341017422042005200420054b1b22044100480d0e0240024020030d002004102d21050c010b200128020020032004103121050b2005450d0d20012005360200200141046a2004360200200141086a28020021040b200041226a2103200141086a200441206a360200200520046a220441186a200041026a220041186a290000370000200441106a200041106a290000370000200441086a200041086a290000370000200420002900003700000c010b200241053a000002400240200141046a280200200141086a2802002204460d00200128020021050c010b200441016a22032004490d0d200441017422052003200520034b1b22034100480d0d0240024020040d002003102d21050c010b200128020020042003103121050b2005450d0c20012005360200200141046a2003360200200141086a28020021040b200041026a2103200141086a200441016a360200200520046a41053a00000b02400240200141046a2802002204200141086a28020022006b4120490d00200128020021040c010b200041206a22052000490d0c200441017422002005200020054b1b22004100480d0c0240024020040d002000102d21040c010b200128020020042000103121040b2004450d0b20012004360200200141046a2000360200200141086a28020021000b200141086a200041206a360200200420006a220041186a200341186a290000370000200041106a200341106a290000370000200041086a200341086a290000370000200020032900003700000c010b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d0b200341017422052004200520044b1b22054100480d0b0240024020030d002005102d21040c010b200128020020032005103121040b2004450d0a20012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41143a0000200041096a2103024020002d00084101460d0002400240200141046a28020020052802002204460d00200128020021050c010b200441016a22052004490d0c200441017422062005200620054b1b22064100480d0c0240024020040d002006102d21050c010b200128020020042006103121050b2005450d0b20012005360200200141046a2006360200200141086a28020021040b200141086a2206200441016a360200200520046a41003a000002400240200141046a2802002205200628020022046b4120490d00200128020021050c010b200441206a22062004490d0c200541017422042006200420064b1b22044100480d0c0240024020050d002004102d21050c010b200128020020052004103121050b2005450d0b20012005360200200141046a2004360200200141086a28020021040b200141086a2206200441206a360200200520046a220441186a200341186a290000370000200441106a200341106a290000370000200441086a200341086a29000037000020042003290000370000200041386a29030021092000290330210a02400240200141046a2802002203200628020022006b4110490d00200128020021030c010b200041106a22042000490d0c200341017422002004200020044b1b22004100480d0c0240024020030d002000102d21030c010b200128020020032000103121030b2003450d0b20012003360200200141046a2000360200200141086a28020021000b200141086a200041106a360200200320006a220020093700082000200a3700000c010b02400240200141046a28020020052802002200460d00200128020021040c010b200041016a22042000490d0b200041017422052004200520044b1b22054100480d0b0240024020000d002005102d21040c010b200128020020002005103121040b2004450d0a20012004360200200141046a2005360200200141086a28020021000b200141086a2205200041016a360200200420006a41013a000002400240200141046a2802002204200528020022006b4120490d00200128020021040c010b200041206a22052000490d0b200441017422002005200020054b1b22004100480d0b0240024020040d002000102d21040c010b200128020020042000103121040b2004450d0a20012004360200200141046a2000360200200141086a28020021000b200141086a200041206a360200200420006a220041186a200341186a290000370000200041106a200341106a290000370000200041086a200341086a290000370000200020032900003700000b200241106a24000f0b1036000b1038000b1038000b1036000b1038000b1036000b1038000b1036000b1036000b1038000bcf2701057f02400240024020002d0000220241064b0d00024002400240024002400240024020020e0700010203040506000b02400240200141046a280200200141086a2802002202460d00200128020021030c010b200241016a22032002490d09200241017422042003200420034b1b22044100480d090240024020020d002004102d21030c010b200128020020022004103121030b2003450d0820012003360200200141046a2004360200200141086a28020021020b200141086a2204200241016a360200200320026a41003a000002400240200141046a2802002203200428020022026b4120490d00200128020021030c010b200241206a22042002490d09200341017422022004200220044b1b22024100480d090240024020030d002002102d21030c010b200128020020032002103121030b2003450d0820012003360200200141046a2002360200200141086a28020021020b200141086a2204200241206a360200200320026a220241186a200041196a290000370000200241106a200041116a290000370000200241086a200041096a290000370000200220002900013700002000280244210502400240200141046a2802002203200428020022026b4104490d00200128020021030c010b200241046a22042002490d09200341017422022004200220044b1b22024100480d090240024020030d002002102d21030c010b200128020020032002103121030b2003450d0820012003360200200141046a2002360200200141086a28020021020b200141086a2206200241046a360200200320026a20053600004120102d2202450d07200241186a200041396a290000370000200241106a200041316a290000370000200241086a200041296a2900003700002002200041216a29000037000002400240200141046a2802002204200628020022036b4120490d00200128020021040c010b200341206a22052003490d09200441017422032005200320054b1b22034100480d090240024020040d002003102d21040c010b200128020020042003103121040b2004450d0820012004360200200141046a2003360200200141086a28020021030b200141086a2205200341206a360200200420036a220341186a200241186a290000370000200341106a200241106a290000370000200341086a200241086a290000370000200320022900003700002002102f2000280248210302400240200141046a2802002202200528020022006b4104490d00200128020021020c010b200041046a22042000490d09200241017422002004200020044b1b22004100480d090240024020020d002000102d21020c010b200128020020022000103121020b2002450d0820012002360200200141046a2000360200200141086a28020021000b200141086a200041046a360200200220006a20033600000f0b02400240200141046a280200200141086a2802002202460d00200128020021030c010b200241016a22032002490d08200241017422042003200420034b1b22044100480d080240024020020d002004102d21030c010b200128020020022004103121030b2003450d0720012003360200200141046a2004360200200141086a28020021020b200141086a2204200241016a360200200320026a41013a000002400240200141046a2802002203200428020022026b4120490d00200128020021030c010b200241206a22042002490d08200341017422022004200220044b1b22024100480d080240024020030d002002102d21030c010b200128020020032002103121030b2003450d0720012003360200200141046a2002360200200141086a28020021020b200141086a2205200241206a360200200320026a220241186a200041196a290000370000200241106a200041116a290000370000200241086a200041096a290000370000200220002900013700004120102d2202450d06200241186a200041396a290000370000200241106a200041316a290000370000200241086a200041296a2900003700002002200041216a29000037000002400240200141046a2802002204200528020022036b4120490d00200128020021040c010b200341206a22052003490d08200441017422032005200320054b1b22034100480d080240024020040d002003102d21040c010b200128020020042003103121040b2004450d0720012004360200200141046a2003360200200141086a28020021030b200141086a2205200341206a360200200420036a220341186a200241186a290000370000200341106a200241106a290000370000200341086a200241086a290000370000200320022900003700002002102f20002d0041210402400240200141046a28020020052802002202460d00200128020021030c010b200241016a22032002490d08200241017422052003200520034b1b22054100480d080240024020020d002005102d21030c010b200128020020022005103121030b2003450d0720012003360200200141046a2005360200200141086a28020021020b200141086a2205200241016a360200200320026a20043a00002000280244210402400240200141046a2802002203200528020022026b4104490d00200128020021030c010b200241046a22052002490d08200341017422022005200220054b1b22024100480d080240024020030d002002102d21030c010b200128020020032002103121030b2003450d0720012003360200200141046a2002360200200141086a28020021020b200141086a2205200241046a360200200320026a20043600002000280248210302400240200141046a2802002202200528020022006b4104490d00200128020021020c010b200041046a22042000490d08200241017422002004200020044b1b22004100480d080240024020020d002000102d21020c010b200128020020022000103121020b2002450d0720012002360200200141046a2000360200200141086a28020021000b200141086a200041046a360200200220006a20033600000f0b02400240200141046a280200200141086a2802002202460d00200128020021030c010b200241016a22032002490d07200241017422042003200420034b1b22044100480d070240024020020d002004102d21030c010b200128020020022004103121030b2003450d0620012003360200200141046a2004360200200141086a28020021020b200141086a2204200241016a360200200320026a41023a00004120102d2202450d0520022000290001370000200241186a200041196a290000370000200241106a200041116a290000370000200241086a200041096a29000037000002400240200141046a2802002203200428020022006b4120490d00200128020021030c010b200041206a22042000490d07200341017422002004200020044b1b22004100480d070240024020030d002000102d21030c010b200128020020032000103121030b2003450d0620012003360200200141046a2000360200200141086a28020021000b200141086a200041206a360200200320006a220141186a200241186a290000370000200141106a200241106a290000370000200141086a200241086a290000370000200120022900003700002002102f0f0b02400240200141046a280200200141086a2802002202460d00200128020021030c010b200241016a22032002490d06200241017422042003200420034b1b22044100480d060240024020020d002004102d21030c010b200128020020022004103121030b2003450d0520012003360200200141046a2004360200200141086a28020021020b200141086a2204200241016a360200200320026a41033a00004120102d2202450d0420022000290001370000200241186a200041196a290000370000200241106a200041116a290000370000200241086a200041096a29000037000002400240200141046a2802002203200428020022006b4120490d00200128020021030c010b200041206a22042000490d06200341017422002004200020044b1b22004100480d060240024020030d002000102d21030c010b200128020020032000103121030b2003450d0520012003360200200141046a2000360200200141086a28020021000b200141086a200041206a360200200320006a220141186a200241186a290000370000200141106a200241106a290000370000200141086a200241086a290000370000200120022900003700002002102f0f0b02400240200141046a280200200141086a2802002202460d00200128020021030c010b200241016a22032002490d05200241017422042003200420034b1b22044100480d050240024020020d002004102d21030c010b200128020020022004103121030b2003450d0420012003360200200141046a2004360200200141086a28020021020b200141086a2205200241016a360200200320026a41043a00004120102d2202450d0320022000290001370000200241186a200041196a290000370000200241106a200041116a290000370000200241086a200041096a29000037000002400240200141046a2802002204200528020022036b4120490d00200128020021040c010b200341206a22052003490d05200441017422032005200320054b1b22034100480d050240024020040d002003102d21040c010b200128020020042003103121040b2004450d0420012004360200200141046a2003360200200141086a28020021030b200141086a2205200341206a360200200420036a220341186a200241186a290000370000200341106a200241106a290000370000200341086a200241086a290000370000200320022900003700002002102f20002d0021210302400240200141046a28020020052802002200460d00200128020021020c010b200041016a22022000490d05200041017422042002200420024b1b22044100480d050240024020000d002004102d21020c010b200128020020002004103121020b2002450d0420012002360200200141046a2004360200200141086a28020021000b200141086a200041016a360200200220006a20033a00000f0b02400240200141046a280200200141086a2802002202460d00200128020021030c010b200241016a22032002490d04200241017422042003200420034b1b22044100480d040240024020020d002004102d21030c010b200128020020022004103121030b2003450d0320012003360200200141046a2004360200200141086a28020021020b200141086a2205200241016a360200200320026a41053a00004120102d2202450d0220022000290001370000200241186a200041196a290000370000200241106a200041116a290000370000200241086a200041096a29000037000002400240200141046a2802002204200528020022036b4120490d00200128020021040c010b200341206a22052003490d04200441017422032005200320054b1b22034100480d040240024020040d002003102d21040c010b200128020020042003103121040b2004450d0320012004360200200141046a2003360200200141086a28020021030b200141086a2205200341206a360200200420036a220341186a200241186a290000370000200341106a200241106a290000370000200341086a200241086a290000370000200320022900003700002002102f20002d0021210302400240200141046a28020020052802002200460d00200128020021020c010b200041016a22022000490d04200041017422042002200420024b1b22044100480d040240024020000d002004102d21020c010b200128020020002004103121020b2002450d0320012002360200200141046a2004360200200141086a28020021000b200141086a200041016a360200200220006a20033a00000f0b02400240200141046a280200200141086a2802002202460d00200128020021030c010b200241016a22032002490d03200241017422042003200420034b1b22044100480d030240024020020d002004102d21030c010b200128020020022004103121030b2003450d0220012003360200200141046a2004360200200141086a28020021020b200141086a2205200241016a360200200320026a41063a00004120102d2202450d0120022000290001370000200241186a200041196a290000370000200241106a200041116a290000370000200241086a200041096a29000037000002400240200141046a2802002204200528020022036b4120490d00200128020021040c010b200341206a22052003490d03200441017422032005200320054b1b22034100480d030240024020040d002003102d21040c010b200128020020042003103121040b2004450d0220012004360200200141046a2003360200200141086a28020021030b200141086a2205200341206a360200200420036a220341186a200241186a290000370000200341106a200241106a290000370000200341086a200241086a290000370000200320022900003700002002102f2000280224210402400240200141046a2802002203200528020022026b4104490d00200128020021030c010b200241046a22052002490d03200341017422022005200220054b1b22024100480d030240024020030d002002102d21030c010b200128020020032002103121030b2003450d0220012003360200200141046a2002360200200141086a28020021020b200141086a2205200241046a360200200320026a20043600002000280228210302400240200141046a2802002202200528020022006b4104490d00200128020021020c010b200041046a22042000490d03200241017422002004200020044b1b22004100480d030240024020020d002000102d21020c010b200128020020022000103121020b2002450d0220012002360200200141046a2000360200200141086a28020021000b200141086a200041046a360200200220006a20033600000b0f0b1036000b1038000b881901057f230041206b22022400024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020012802000e1b010214030405060708090a0b0c0d0e0f1011121314141415161700010b4190ce0021030240200141086a2802002201417f6a4102490d0002400240024020010e0400010102000b2002411c6a41013602002002420137020c200241b4d8c90036020820024104360204200241fcdbc90036020020022002360218200241086a41e8d8c90010430b000b41c0843d21030b20004180023b0104200020033602000c170b024002400240024002400240024002400240024002400240200141086a2802000e0b000102030405060708090a000b2002411c6a41013602002002420137020c200241b4d8c90036020820024104360204200241fcdbc90036020020022002360218200241086a41e8d8c9001043000b200041013a000420002001410c6a2802003602000c090b200041003a000420004190ce003602000c080b200041013a000420004190ce003602000c070b200041013a0004200041c09a0c3602000c060b200041013a0004200041c09a0c3602000c050b200041013a0004200041a09c013602000c040b200041013a000420004190ce003602000c030b200041013a000420004190ce003602000c020b200041013a000420004190ce003602000c010b200041013a0004200041a8c3013602000b200041013a00050c160b0240024002400240024002400240024020012d00040e06000102030405000b2002411c6a41013602002002420137020c200241b4d8c90036020820024104360204200241fcdbc90036020020022002360218200241086a41e8d8c9001043000b200141086a28020021044190ce0021030240200141106a280200220541b0026c2206450d00200421010340200241086a200110f102200141b0026a2101200228020820036a2103200641d07d6a22060d000b0b200541b0026c21010340024020010d00410121010c070b200141d07d6a2101200241086a200410f102200441b0026a210420022d000c0d000c050b0b200241086a200141086a280200220110f10220022802082103200241086a200110f10220034190ce006a210320022d000c21010c040b200241086a200141206a280200220310f102200141106a280200210120022802082104200241086a200310f102200420014190ce006c6a4190ce006a210320022d000c21010c030b200141306a2802004190ce006c4190ce006a21030c010b200141306a2802004190ce006c4190ce006a21030b410021010b200041013a0005200020013a0004200020033602000c150b20004181023b010420004190ce003602000c140b20004181023b010420004190ce003602000c130b20004180023b010420004190ce003602000c120b4100210341c0843d2104024002400240200141086a2802000e050002010202000b2002411c6a41013602002002420137020c200241b4d8c90036020820024104360204200241fcdbc90036020020022002360218200241086a41e8d8c9001043000b4101210341d0860321040b200041013a0005200020033a0004200020043602000c110b4100210441a0c21e210302400240024002400240024002400240200141086a2d00000e1600070701010202070702030303030603040707070506000b2002411c6a41013602002002420137020c200241b4d8c90036020820024104360204200241fcdbc90036020020022002360218200241086a41e8d8c9001043000b4180b51821030c050b41b0e32d21030c040b41882721030c030b41c0843d21030c020b410121040c010b4190ce0021030b200041013a0005200020043a0004200020033602000c100b20004180023b0104200041f093093602000c0f0b4100210441c096b1022103024002400240024002400240024002400240200141086a2d00000e18000808010102080808030304040707070505060707060607000b2002411c6a41013602002002420137020c200241b4d8c90036020820024104360204200241fcdbc90036020020022002360218200241086a41e8d8c9001043000b41c09a0c21030c060b4101210441a0c21e21030c050b41c09a0c21030c040b410121044190ce0021030c030b41a0c21e21030c020b4190ce0021030c010b41a08d0621030b200041013a0005200020043a0004200020033602000c0e0b41a08d062103024002400240024020012d00040e06000303010202000b2002411c6a41013602002002420137020c200241b4d8c90036020820024104360204200241fcdbc90036020020022002360218200241086a41e8d8c9001043000b41c096b10221030c010b41c09a0c21030b20004181023b0104200020033602000c0d0b41a08d062103024002400240024020012d00040e06000303010202000b2002411c6a41013602002002420137020c200241b4d8c90036020820024104360204200241fcdbc90036020020022002360218200241086a41e8d8c9001043000b41c096b10221030c010b41c09a0c21030b20004181023b0104200020033602000c0c0b4100210441a08d062103024002400240024002400240200141086a2802000e0700050102030404000b2002411c6a41013602002002420137020c200241b4d8c90036020820024104360204200241fcdbc90036020020022002360218200241086a41e8d8c9001043000b4190ce0021030c030b41c0843d21030c020b41a0c21e21030c010b41012104418089fa0021030b200041013a0005200020043a0004200020033602000c0b0b20004180023b0104200041d086033602000c0a0b20004180023b010420004190ce003602000c090b20004180023b010420004190ce003602000c080b4100210441a0c21e2103024002400240024002400240200141086a2d00000e09000501010204030404000b2002411c6a41013602002002420137020c200241b4d8c90036020820024104360204200241fcdbc90036020020022002360218200241086a41e8d8c9001043000b410121040b41a08d0621030c020b41f0930921030c010b41d0860321030b200041013a0005200020043a0004200020033602000c070b20004180023b010420004190ce003602000c060b0240024002400240024020012802040e0400010203000b2002411c6a41013602002002420137020c200241b4d8c90036020820024104360204200241fcdbc90036020020022002360218200241086a41e8d8c9001043000b200241086a200141086a280200220110f10220022802082103200241086a200110f102200020022d000c3a0004200020034190ce006a3602000c020b200041003a000420004190ce003602000c010b200241086a2001412c6a280200220110f10220022802082103200241086a200110f102200020022d000c3a0004200020034190ce006a3602000b200041013a00050c050b20004180023b010420004190ce003602000c040b10e101000b4190ce0021030240024002400240200141086a2d00000e0c000301010101010101010102000b2002411c6a41013602002002420137020c200241b4d8c90036020820024104360204200241fcdbc90036020020022002360218200241086a41e8d8c9001043000b41d0860321030c010b41a08d0621030b20004180023b0104200020033602000c020b41d086032103024002400240024002400240024002400240200141086a2d00000e0d00080108010203040705060807000b2002411c6a41013602002002420137020c200241b4d8c90036020820024104360204200241fcdbc90036020020022002360218200241086a41e8d8c9001043000b41a09c0121030c060b41b0ea0121030c050b41a09c0121030c040b41b0ea0121030c030b41a09c0121030c020b41b0ea0121030c010b4190ce0021030b20004180023b0104200020033602000c010b0240024002400240024002400240024002400240024020012d00040e0a00010203040506070809000b2002411c6a41013602002002420137020c200241b4d8c90036020820024104360204200241fcdbc90036020020022002360218200241086a41e8d8c9001043000b200241086a200141286a280200220110f10220022802082103200241086a200110f102200020022d000c3a0004200020034190ce006a3602000c080b200041003a000420004190ce003602000c070b200041003a0004200041a08d063602000c060b200041003a0004200041a08d063602000c050b200041003a0004200041a08d063602000c040b200041003a0004200041a08d063602000c030b200041003a0004200041b0ea013602000c020b200041003a0004200041b0ea013602000c010b200041003a000420004190ce003602000b200041013a00050b200241206a24000b87260b017f017e027f017e027f047e017f097e017f027e037f23004180086b22062400200620043703102006200337030820062001360204200620053a001f02400240024002400240024020012002460d002003200484500d0020012002412010ea06450d00418de6c300ad4280808080e0008410012201290000210320064180056a41086a200141086a29000037030020062003370380052001102f41f0e8c600ad4280808080f0008410012201290000210320064180066a41086a200141086a29000037030020062003370380062001102f4120102d2201450d0120012002290000370000200141186a200241186a290000370000200141106a200241106a290000370000200141086a200241086a2900003700002001ad4280808080800484100322052900002103200541086a2900002104200541106a290000210720064180076a41186a2208200541186a29000037030020064180076a41106a2209200737030020064180076a41086a200437030020062003370380072005102f2001102f41c000102d2201450d01200120062903800537000020012006290380063700102001200629038007370020200141086a20064180056a41086a290300370000200141186a20064180066a41086a290300370000200141286a20064180076a41086a290300370000200141306a2009290300370000200141386a2008290300370000200641206a200110f602200629032021074200210a20064200370320200641e8006a280200210b20062d006c210c0240024020074201510d00200641f0006a41386a4200370300200641f0006a41306a4200370300200641f0006a41286a4200370300200641f0006a41206a420037030020064188016a420037030020064180016a4200370300200641f0006a41086a4200370300200642003703704200210d4200210e4200210f0c010b200641206a41386a2903002103200641206a41306a2903002104200641206a41206a290300210d200641206a41186a290300210a200641206a41c0006a29030021102006290330210f2006290328210e200641f0006a41206a200641206a41286a290300370300200641f0006a41286a2004370300200641f0006a41306a200337030020064180016a200a3703002006200d37038801200620103703a8012006200e3703702006200f3703780b20062802042108418de6c300ad4280808080e0008410012205290000210320064180046a41086a200541086a29000037030020062003370380042005102f41f0e8c600ad4280808080f00084100122052900002103200641c8046a41086a200541086a290000370300200620033703c8042005102f4120102d2205450d0120052008290000370000200541186a200841186a290000370000200541106a200841106a290000370000200541086a200841086a2900003700002005ad4280808080800484100322092900002103200941086a2900002104200941106a290000211020064180076a41186a2211200941186a29000037030020064180076a41106a201037030020064180076a41086a200437030020062003370380072009102f2005102f41c000102d2205450d012005200629038004370000200520062903c8043700102005200629038007370020200541086a20064180046a41086a290300370000200541186a200641c8046a41086a290300370000200541286a20064180076a41086a290300370000200541306a20064180076a41106a290300370000200541386a2011290300370000200641b0036a200510f60220062903b003211242002113200642003703b003200641f8036a280200210920062d00fc0321110240024020124201510d0020064190046a41306a420037030020064190046a41286a420037030020064190046a41206a4200370300200641a8046a420037030020064190046a41106a420037030020064190046a41086a42003703002006420037039004420021144200210442002103420021150c010b200641b0036a41386a2903002110200641b0036a41306a2903002116200641b0036a41206a2903002114200641b0036a41186a2903002113200641b0036a41c0006a290300211520062903c003210320062903b803210420064190046a41206a200641b0036a41286a29030037030020064190046a41286a201637030020064190046a41306a201037030020064190046a41106a2013370300200620143703a804200620043703900420062003370398040b02402004200629030822167d22172004562003200641086a41086a29030022187d2004201654ad7d221020035620102003511b450d004198b5c600ad21034280808080b002210441838c0c21090c040b2006201737039004200620103703980402402006290370221920167c221a201954221b200641f0006a41086a290300221c20187c201bad7c2219201c542019201c511b450d004191ccc700ad210342808080808001210441838c0821090c040b2006201a37037020064188016a290300211c200620193703780240427f201a2006290380017c221d201d201a54221b2019201c7c201bad7c221c201954201c2019511b221b1b428080e983b1de16544100427f201c201b1b501b450d004186b5c600ad21034280808080a002210441838c1021090c040b02402016201884500d0020064180076a2006280204108d0220062903a007201756200641a8076a290300221620105620162010511b450d0041abb5c600ad21034280808080d002210441838c0421090c040b0240024020062d001f4101460d002017428080e983b1de165441002010501b450d0141fdb4c600ad21030c040b2006280204211e418de6c300ad4280808080e000841001221b290000211620064180046a41086a201b41086a2900003703002006201637038004201b102f41f0e8c600ad4280808080f000841001221b2900002116200641c8046a41086a201b41086a290000370300200620163703c804201b102f4120102d221b450d02201b201e290000370000201b41186a201e41186a290000370000201b41106a201e41106a290000370000201b41086a201e41086a290000370000201bad42808080808004841003221e2900002116201e41086a2900002119201e41106a290000211820064180076a41186a221f201e41186a29000037030020064180076a41106a2220201837030020064180076a41086a20193703002006201637038007201e102f201b102f41c000102d221b450d02201b200629038004370000201b20062903c804370010201b200629038007370020201b41086a20064180046a41086a290300370000201b41186a200641c8046a41086a290300370000201b41286a20064180076a41086a290300370000201b41306a2020290300370000201b41386a201f29030037000020064180076a201b10f60220062d00cc07211e2006290380072116201b102f201e450d0020164201520d002017428080e983b1de165441002010501b450d0041fdb4c600ad21030c030b200641c8046a41186a200641a0046a221b41086a2903002216370300200641c8046a41206a221e201b41106a290300370300200641f0046a221f201b41186a290300370300200641f8046a2220201b41206a2903003703002006201b29030022193703d804200620173703c804200620103703d004427f200420137c22132013200454221b200320147c201bad7c220420035420042003511b221b1b427f2004201b1b84211302400240427f201720197c22032003201754221b201020167c201bad7c220320105420032010511b221b1b2204428080e983b1de16544100427f2003201b1b2203501b0d00200641c8046a41106a290300210320202903002104201f2903002116201e290300211920062903d004211820062903c80421144201211c20062903e004211a0c010b4200211c02402004200384500d0020042003109a01200641b8076a2003370300200641b0076a200437030020064180076a41086a41013a000020064189076a200829000037000020064191076a200841086a29000037000020064199076a200841106a290000370000200641a1076a200841186a290000370000200641033a00800741c8e1ca00410020064180076a108c010b0b201350211e200641d8036a2019370300200641e0036a2016370300200641c0036a2018370300200641e8036a2004370300200641c8036a20033703002006201a3703d003200620153703f003200620143703b8034100211b2006201141002012420151221f1b3a00fc03200620094100201f1b3602f8032006201c4201512209ad3703b0030240024020090d002005ad428080808080088410054101211b0c010b200641c000360284072006200536028007200641b8036a20064180076a1090030b201ead21032005102f02400240024020124201510d00201b0d004103210920064180066a21050c010b2012420152201b410173720d014104210920064180056a21050b200541046a20093a0000200541003a0000200541056a20082900003700002005410d6a200841086a290000370000200541156a200841106a2900003700002005411d6a200841186a29000037000041c8e1ca0041002005108c010b41002111410421092003500d04200641b8076a2010370300200641b0076a20173703004100211120064180076a41086a41003a000020064189076a200829000037000020064191076a200841086a29000037000020064199076a200841106a290000370000200641a1076a200841186a290000370000200641033a00800741c8e1ca00410020064180076a108c010c040b200041043a00000c040b1036000b42808080809001210441838c1421090b2005102f20094108762111200320048421030b20064180056a41086a2208200641f0006a41106a220541086a29030037030020064180056a41106a221b200541106a29030037030020064180056a41186a221e200541186a29030037030020064180056a41206a221f200541206a29030037030020062005290300370380050240200941ff01714104470d00200641f0006a41086a29030021032006290370210420062903a801211620064180066a41186a2008290300221237030020064180066a41206a201b290300370300200641a8066a2208201e290300370300200641b0066a2209201f290300370300200620062903800522133703900620062004370380062006200337038806427f200e200a7c22102010200e542205200f200d7c2005ad7c2210200f542010200f511b22051b427f201020051b84210a02400240427f200420137c220f200f2004542205200320127c2005ad7c220f200354200f2003511b22051b2210428080e983b1de16544100427f200f20051b220f501b0d0020064190066a290300210f200929030021102008290300210e200641a0066a29030021122006290388062113200629038006210d4201211920062903980621170c010b4200211902402010200f84500d002010200f109a01200641b8076a200f370300200641b0076a201037030020064180076a41086a41013a000020064189076a200229000037000020064191076a200241086a29000037000020064199076a200241106a290000370000200641a1076a200241186a290000370000200641033a00800741c8e1ca00410020064180076a108c010b0b200a502108200641c8006a2012370300200641d0006a200e370300200641306a2013370300200641d8006a2010370300200641386a200f37030020062017370340200620163703602006200d370328410021052006200c4100200742015122091b3a006c2006200b410020091b360268200620194201512209ad3703200240024020090d002001ad42808080808008841005410121050c010b200641c000360284072006200136028007200641286a20064180076a1090030b2008ad210f2001102f02400240024020074201510d0020050d0041032105200641b0026a21010c010b20074201522005410173720d0141042105200641b0016a21010b200141046a20053a0000200141003a0000200141056a20022900003700002001410d6a200241086a290000370000200141156a200241106a2900003700002001411d6a200241186a29000037000041c8e1ca0041002001108c010b0240200f500d00200641b8076a2003370300200641b0076a200437030020064180076a41086a41003a000020064189076a200229000037000020064191076a200241086a29000037000020064199076a200241106a290000370000200641a1076a200241186a290000370000200641033a00800741c8e1ca00410020064180076a108c010b2006280204210120062903082103200641d8076a200641086a41086a290300370300200641d0076a200337030020064180076a41086a41023a000020064189076a200129000037000020064191076a200141086a29000037000020064199076a200141106a290000370000200641a1076a200141186a290000370000200641a9076a2002290000370000200641b1076a200241086a290000370000200641b9076a200241106a290000370000200641c1076a200241186a290000370000200641033a00800741c8e1ca00410020064180076a108c01200041043a00000c010b2001102f200041036a41003a0000200020113b0001200041046a2003370000200020093a00000b20064180086a24000bf00204027f017e017f077e0240024020012802042202450d0020012802002203310000210420012002417f6a22053602042001200341016a3602002005450d012003310001210620012002417e6a22053602042001200341026a3602002005450d012003310002210720012002417d6a22053602042001200341036a3602002005450d012003310003210820012002417c6a22053602042001200341046a3602002005450d012003310004210920012002417b6a22053602042001200341056a3602002005450d012003310005210a20012002417a6a22053602042001200341066a3602002005450d012003310006210b2001200241796a22053602042001200341076a3602002005450d01200041003a00002003310007210c2001200241786a3602042001200341086a3602002000200c423886200b42308684200a422886842009422086842008421886842007421086842006420886842004843700010f0b200041013a00000f0b200041013a00000bb20201037f230041e0006b220224002002412036020c20022001360208200241106a2001ad4280808080800484100210730240024020022802102201450d00200228021421032002200241186a28020036022420022001360220200241c8006a200241206a10f5030240024020022802482204450d002000200229024c370204200020043602000c010b20024100360230200242013703282002410b36023c2002200241086a3602382002200241286a360244200241dc006a41013602002002420137024c200241b885c7003602482002200241386a360258200241c4006a41d8dbc100200241c8006a103c1a200235023042208620023502288410080240200228022c450d002002280228102f0b200041003602000b2003450d012001102f0c010b200041003602000b200241e0006a24000b850301087f230041206b22032400024002400240200141246c41046a2204417f4c0d000240024020040d00410121050c010b2004102d2205450d020b2003410036020820032004360204200320053602002001200310690240024020010d002003280208210420032802042106200328020021050c010b200141246c210720032802042106200328020821010340200341106a200010ea022003280210210802400240200620016b20032802182209490d00200120096a2104200328020021050c010b200120096a22042001490d05200641017422052004200520044b1b220a4100480d050240024020060d00200a102d21050c010b20032802002006200a103121050b2005450d042003200a36020420032005360200200a21060b20032004360208200520016a2008200910e8061a02402003280214450d002008102f0b200041246a2100200421012007415c6a22070d000b0b20022902002004ad4220862005ad84100402402006450d002005102f0b200341206a24000f0b103d000b1036000b1038000be40603047f017e0f7f230041c0016b22022400200241c00036020c20022001360208200241106a2001ad4280808080800884100210730240024020022802102201450d00200228021421032002200241186a28020022043602642002200136026002400240024020044104490d0020022004417c6a22053602642002200141046a3602602005450d002001280000210520022004417b6a3602642002200141056a36026020012d00042104200241f8006a200241e0006a1085054201210620022903784201520d010b20024100360228200242013703202002410b36026c2002200241086a3602682002200241206a3602742002418c016a41013602002002420137027c200241b885c7003602782002200241e8006a36028801200241f4006a41d8dbc100200241f8006a103c1a2002350228422086200235022084100802402002280224450d002002280220102f0b420021060c010b200241206a41386a2207200241f8006a41c0006a290300370300200241206a41306a2208200241f8006a41386a2209290300370300200241206a41286a220a200241f8006a41306a220b290300370300200241206a41206a220c200241f8006a41286a220d290300370300200241206a41186a220e200241f8006a41206a220f290300370300200241206a41106a2210200241f8006a41186a2211290300370300200241206a41086a2212200241f8006a41106a2213290300370300200241f4006a41026a2214200241e8006a41026a22152d00003a00002002200229038001370320200220022f00683b017420092007290300370300200b2008290300370300200d200a290300370300200f200c2903003703002011200e29030037030020132010290300370300200241f8006a41086a2207201229030037030020022002290320370378201520142d00003a0000200220022f01743b0168200020043a004c200041c8006a2005360200200041c0006a2009290300370300200041386a200b290300370300200041306a200d290300370300200041286a200f290300370300200041206a2011290300370300200041186a2013290300370300200041106a200729030037030020002002290378370308200020022f01683b004d200041cf006a20152d00003a00000b200020063703002003450d012001102f0c010b200042003703000b200241c0016a24000b940201047f230041d0006b220124002001412036020420012000360200200141086a2000ad42808080808004841002107302400240200128020822020d00410221000c010b200128020c210302400240200141106a280200450d0020022d0000220441014b0d0041002100024020040e020200020b410121000c010b20014100360220200142013703182001410b36022c200120013602282001200141186a360234200141cc006a41013602002001420137023c200141b885c7003602382001200141286a360248200141346a41d8dbc100200141386a103c1a200135022042208620013502188410080240200128021c450d002001280218102f0b410221000b2003450d002002102f0b200141d0006a240020000bea1504047f017e127f027e23004190036b22012400200141e8026a41186a4200370300200141e8026a41106a22024200370300200141e8026a41086a22034200370300200142003703e802419487ca00ad4280808080a001841001220429000021052003200441086a290000370300200120053703e8022004102f418691c700ad4280808080e00084100122042900002105200141c8026a41086a2206200441086a290000370300200120053703c8022004102f200220012903c8022205370300200141106a41086a2003290300370300200141106a41106a2005370300200141106a41186a2006290300370300200120012903e802370310200141203602342001200141106a360230200141386a200141106aad42808080808004841002107302400240200128023822070d00410021080c010b200128023c21092001200141386a41086a28020036025c20012007360258200141086a200141d8006a10e60102400240024002400240024002402001280208450d0041002103200141003602480c010b200128020c220a200128025c220b41c4006e22032003200a4b1b220cad42c4007e2205422088a70d012005a72203417f4c0d010240024020030d00410421080c010b2003102d2208450d03200341c4006e210c0b024002400240200a450d00200141e8026a410772210d4100210e0340200b450d022001200b417f6a220f36025c20012001280258220641016a36025820062d0000220341014b0d0202400240024020030e020001000b200f4104490d04200141a4026a41026a200141a8026a41026a2d00003a000020014188026a41086a200141c8026a41086a29020037030020014188026a41106a200141c8026a41106a29020037030020014188026a41186a200141c8026a41186a2d00003a0000200141e8016a41086a200141e8026a41086a290100370300200141e8016a41106a200141e8026a41106a290100370300200141e8016a41186a200141e8026a41186a290100370300200120012f00a8023b01a402200120012902c80237038802200120012901e8023703e8012001200b417b6a221036025c2001200641056a36025820062800012111200120012f01c4023b01e601410021020c010b41002102200141003a008803200b417e6a2104024002400240024002400340200f20022203460d01200141e8026a20036a200620036a220241016a2d00003a00002001200241026a3602582001200341016a22023a0088032001200436025c2004417f6a210420024120470d000b200141c4026a41026a221220012d00ea023a0000200141a8026a41086a2213200d41086a290000370300200141a8026a41106a2214200d41106a290000370300200141a8026a41186a2215200d41186a2d00003a0000200120012f01e8023b01c4022001200d2900003703a80241002110200f2002460d0220012800eb0221162001200436025c2001200620026a220f41026a360258200f41016a2d0000220241014d0d0120042110410221020c050b0240200341ff0171450d00200141003a0088030b41002110410221020c040b024020020e020200020b41002102200141003a008803200b20036b417c6a21030240034020042002460d01200141e8026a20026a200f20026a220641026a2d00003a00002001200641036a3602582001200241016a22063a0088032001200336025c2003417f6a21032006210220064120470d000b200141c8026a41186a200141e8026a41186a290300370300200141c8026a41106a200141e8026a41106a290300370300200141c8026a41086a200141e8026a41086a290300370300200120012903e8023703c802200420066b2110410121170c030b0240200241ff0171450d00200141003a0088030b410021100b410221020c020b41002117200421100b200141e8016a41186a200141c8026a41186a290300370300200141e8016a41106a200141c8026a41106a290300370300200141e8016a41086a200141c8026a41086a290300370300200141a4026a41026a20122d00003a000020014188026a41086a201329030037030020014188026a41106a201429030037030020014188026a41186a20152d00003a0000200120012903c8023703e801200120012f01c4023b01a402200120012903a8023703880241012102201621110b200141e2016a41026a2203200141a4026a41026a2d00003a0000200141c8016a41086a220620014188026a41086a290300370300200141c8016a41106a220f20014188026a41106a290300370300200141c8016a41186a220b20014188026a41186a2d00003a0000200141a8016a41086a2212200141e8016a41086a290300370300200141a8016a41106a2213200141e8016a41106a290300370300200141a8016a41186a2214200141e8016a41186a290300370300200120012f01a4023b01e20120012001290388023703c801200120012903e8013703a801200120012f01e6013b01a60120024102460d03200e41016a2104200141a2016a41026a221520032d00003a000020014188016a41086a2216200629030037030020014188016a41106a2206200f29030037030020014188016a41186a220f200b2d00003a0000200141e8006a41086a220b2012290300370300200141e8006a41106a22122013290300370300200141e8006a41186a22132014290300370300200120012f01e2013b01a201200120012903c80137038801200120012903a801370368200120012f01a6013b01660240200c200e470d00200e41017422032004200320044b1bad42c4007e2205422088a70d082005a722034100480d0802400240200e0d002003102d21080c010b2008200e41c4006c2003103121080b2008450d07200341c4006e210c0b2008200e41c4006c6a220320023a000020032011360004200341036a20152d00003a0000200320012f01a2013b0001200f2d0000210220062903002105201629030021182001290388012119200320173a002120032019370008200341106a2018370000200341186a2005370000200341206a20023a00002003413a6a2013290300370000200341326a20122903003700002003412a6a200b29030037000020032001290368370022200320012f01663b00422010210b2004210e2004200a470d000b0b200141d0006a200a3602002001200c36024c2001200836024820080d06200821030c020b200141e2016a41026a200141a4026a41026a2d00003a0000200141c8016a41086a20014188026a41086a290300370300200141c8016a41106a20014188026a41106a290300370300200141c8016a41186a20014188026a41186a2d00003a0000200141a8016a41086a200141e8016a41086a290300370300200141a8016a41106a200141e8016a41106a290300370300200141a8016a41186a200141e8016a41186a290300370300200120012f01a4023b01e20120012001290388023703c801200120012903e8013703a801200120012f01e6013b01a6010b4100210320014100360248200c450d002008102f0b200141003602d002200142013703c8022001410b3602ec012001200141306a3602e8012001200141c8026a3602a801200141fc026a4101360200200142013702ec02200141b885c7003602e8022001200141e8016a3602f802200141a8016a41d8dbc100200141e8026a103c1a20013502d00242208620013502c802841008024020012802cc02450d0020012802c802102f0b200321080c040b103d000b1036000b1038000b200129024c21050b2009450d002007102f0b024002402008450d0020002005370204200020083602000c010b20004100360208200042043702000b20014190036a24000bc90802097f037e230041206b220224002002410036020820024201370300024002404120102d2203450d0020032001290010370000200341186a2204200141286a290000370000200341106a2205200141206a290000370000200341086a2206200141186a2900003700004120102d2207450d00200242a080808080043702042002200736020020072003290000370000200741086a2006290000370000200741106a2005290000370000200741186a20042900003700002003102f200120021095024120102d2203450d0020032001290030370000200341186a200141c8006a290000370000200341106a200141c0006a290000370000200341086a200141386a2900003700000240024020022802042205200228020822066b4120490d00200641206a2107200228020021040c010b200641206a22072006490d02200541017422042007200420074b1b22084100480d020240024020050d002008102d21040c010b200228020020052008103121040b2004450d012002200836020420022004360200200821050b200420066a220641086a200341086a290000370000200641106a200341106a290000370000200641186a200341186a29000037000020022007360208200620032900003700002003102f4120102d2203450d0020032001290050370000200341186a200141e8006a290000370000200341106a200141e0006a290000370000200341086a200141d8006a2900003700000240200520076b411f4b0d00200741206a22062007490d02200541017422082006200820064b1b22064100480d020240024020050d002006102d21040c010b200420052006103121040b2004450d0120022006360204200220043602000b200420076a220441086a200341086a290000370000200441106a200341106a290000370000200441186a200341186a2900003700002002200741206a360208200420032900003700002003102f200128020421042001410c6a2802002201200210690240024020010d002002280208210320022802042106200228020021070c010b200141246c210920022802042106200228020821010340200241106a200410ea022002280210210802400240200620016b20022802182205490d00200120056a2103200228020021070c010b200120056a22032001490d04200641017422072003200720034b1b220a4100480d040240024020060d00200a102d21070c010b20022802002006200a103121070b2007450d032002200a36020420022007360200200a21060b20022003360208200720016a2008200510e8061a02402002280214450d002008102f0b200441246a2104200321012009415c6a22090d000b0b2003ad4220862007ad8410032201290000210b200141086a290000210c200141106a290000210d200041186a200141186a290000370000200041106a200d370000200041086a200c3700002000200b3700002001102f02402006450d002007102f0b200241206a24000f0b1036000b1038000ba30405027f017e027f027e027f230041e0006b22022400418de6c300ad4280808080e00084100122032900002104200241286a41086a2205200341086a290000370300200220043703282003102f4193e6c300ad4280808080900184100122032900002104200241086a2206200341086a290000370300200220043703002003102f2002200136025c200241dc006aad4280808080c00084100322032900002104200341086a2900002107200341106a2900002108200241386a41186a2201200341186a290000370300200241386a41106a22092008370300200241386a41086a220a2007370300200220043703382003102f024041c000102d2203450d00200320022903283700002003200229030037001020032002290338370020200341086a2005290300370000200341186a2006290300370000200341286a200a290300370000200341306a2009290300370000200341386a20012903003700002002200341c00010ad02200a200241096a2900003703002009200241116a2900003703002001200241196a290000370300200220022900013703380240024020022d00004101460d0020004200370000200041186a4200370000200041106a4200370000200041086a42003700000c010b20002002290338370000200041186a200241386a41186a290300370000200041106a200241386a41106a290300370000200041086a200241386a41086a2903003700000b2003102f200241e0006a24000f0b1036000b890f05017f017e047f017e067f230041e0016b2201240042002102200141d0006a41186a22034200370300200141d0006a41106a22044200370300200141d0006a41086a2205420037030020014200370350419487ca00ad4280808080a00184100122062900002107200141c0006a41086a2208200641086a290000370300200120073703402006102f200520082903003703002001200129034037035041da85c700ad4280808080e000841001220629000021072008200641086a290000370300200120073703402006102f200420012903402207370300200141206a41086a22062005290300370300200141206a41106a2007370300200141206a41186a200829030037030020012001290350370320200141f0006a200141206a412010ad0220012d00702108200320014189016a290000370300200420014181016a2900003703002005200141f9006a290000370300200120012900713703500240024020084101470d0020002001290350370000200041186a2003290300370000200041106a2004290300370000200041086a20052903003700000c010b200141f0006a41186a4200370300200141f0006a41106a22094200370300200141f0006a41086a2208420037030020014200370370418de6c300ad4280808080e000841001220a29000021072008200a41086a29000037030020012007370370200a102f41bae6c300ad4280808080e000841001220a29000021072006200a41086a29000037030020012007370320200a102f20092001290320220737030020052008290300370300200420073703002003200629030037030020012001290370370350200141f0006a200141d0006a10f402024002402001280270220a0d004104210a410021050c010b20012902742202422088a721050b02400240200541246c2205450d002005415c6a2108200a210503400240024020052d00004101460d002008450d030c010b200541016a2800002103200541086a28020021062001200541106a280200360254200120063602500240200341c28289aa04460d0020080d010c030b200141f0006a200141d0006a10920520012d007022054102460d02200141d4016a28020021092001280274210b200141f0006a41186a4200370300200141f0006a41106a22064200370300200141f0006a41086a2208420037030020014200370370419c9eca00ad4280808080f000841001220329000021072008200341086a290000370300200120073703702003102f41a5c6c800ad4280808080a00184100122032900002107200141206a41086a220c200341086a290000370300200120073703202003102f200620012903202207370300200141d0006a41086a2008290300370300200141d0006a41106a2007370300200141d0006a41186a200c29030037030020012001290370370350200141f0006a200141d0006a412010aa0220012802702208410120081b2106410021030240200b200920054101711b22052001290274420020081b2207422088a74f0d00200620054105746a2205450d00200141186a200541186a290000370300200141106a200541106a290000370300200141086a200541086a29000037030020012005290000370300410121030b02402007a7450d002006102f0b2003450d02200141f0006a41186a2208200141186a290300370300200141f0006a41106a2203200141106a290300370300200141f0006a41086a2206200141086a29030037030020012001290300370370200141d0006a41186a220c4200370300200141d0006a41106a220d4200370300200141d0006a41086a2209420037030020014200370350419487ca00ad4280808080a001841001220b2900002107200141c0006a41086a2205200b41086a29000037030020012007370340200b102f200920052903003703002001200129034037035041da85c700ad4280808080e000841001220b29000021072005200b41086a29000037030020012007370340200b102f20042001290340370000200441086a2005290300370000200141206a41086a2009290300370300200141206a41106a200d290300370300200141206a41186a200c2903003703002001200129035037032002404120102d2205450d0020052001290370370000200541186a2008290300370000200541106a2003290300370000200541086a2006290300370000200141206aad42808080808004842005ad428080808080048410042005102f200041186a2008290300370000200041106a2003290300370000200041086a2006290300370000200020012903703700000c040b1036000b200541246a21052008415c6a21080c000b0b20004200370000200041186a4200370000200041106a4200370000200041086a42003700000b02402002422088a72205450d00200541246c2108200a210503400240024020052d0000220341044b0d0002400240024020030e050400010204040b2005410c6a280200450d03200541086a280200102f0c030b2005410c6a280200450d02200541086a280200102f0c020b2005410c6a280200450d01200541086a280200102f0c010b200541086a280200450d00200541046a280200102f0b200541246a21052008415c6a22080d000b0b2002a7450d00200a102f0b200141e0016a24000b9e0d08047f017e017f017e057f017e0b7f017e230041c0036b22012400200141e0006a41186a22024200370300200141e0006a41106a22034200370300200141e0006a41086a220442003703002001420037036041eba1ca00ad4280808080f0008422051001220629000021072004200641086a290000370300200120073703602006102f41adcac800ad4280808080900184100122062900002107200141106a41086a2208200641086a290000370300200120073703102006102f200320012903102207370300200141306a41086a22062004290300370300200141306a41106a2007370300200141306a41186a200829030037030020012001290360370330200141e0006a200141306a10fd03024002400240024020012903604202510d00200328020021092000280208210a2000280204210b2000280200210c20051001220029000021072008200041086a290000370300200120073703102000102f41e5cac800ad42808080808002841001220029000021072006200041086a290000370300200120073703302000102f200120093602002001ad4280808080c00084100322002900002107200041086a2900002105200041106a290000210d2002200041186a2900003703002003200d37030020042005370300200120073703602000102f41c000102d220e450d01200e2001290310370000200e2001290330370010200e2001290360370020200e41086a200141106a41086a290300370000200e41186a200141306a41086a290300370000200e41286a200141e0006a41086a290300370000200e41306a200141f0006a290300370000200e41386a200141e0006a41186a290300370000200141e0006a200e109f050240024020012802642208450d00200141086a200129036837030020012008360204200128026021040c010b200141086a42003703004190bdc600210820014190bdc600360204410021040b200120043602000240200a450d00200c200a41246c6a210f200141f4006a21102001410c6a211120014104722112200141d8006a2113200141306a41206a2114200c210a0340200a2802202115200141106a41186a2216200a41186a290000370300200141106a41106a2217200a41106a290000370300200141106a41086a2218200a41086a2900003703002001200a2900003703100240024020084190bdc600460d00200128020821020c010b200141e0006a410041e00210e7061a2013410036020020144200370300200141306a41186a22044200370300200141306a41106a22004200370300200141306a41086a2203420037030020014200370330419403102d2208450d0441002102200841003b010620084100360200200841086a200141e0006a41e00210e8061a20084190036a201328020036020020084188036a201429030037020020084180036a2004290300370200200841f8026a2000290300370200200841f0026a2003290300370200200820012903303702e80220014100360208200120083602040b200a41246a210a0240024003400240024020082f010622090d00410021030c010b20094105742104200841086a2100417f21030340024020040d00200921030c020b200341016a2103200141106a2000412010ea062206450d03200441606a2104200041206a21002006417f4a0d000b0b02402002450d002002417f6a2102200820034102746a4194036a28020021080c010b0b200141306a41186a20162903002207370300200141306a41106a20172903002205370300200141306a41086a2018290300220d37030020012001290310221937033020102019370200201041086a200d370200201041106a2005370200201041186a2007370200200120113602702001200336026c200120123602682001200836026420014100360260200141e0006a410010ee0121040c010b200820034102746a41e8026a21040b2004200428020020156a3602002001200128020020156a2204360200200a200f460d01200128020421080c000b0b0240200b450d00200c102f200128020021040b20012802042200450d022001410c6a2802002103200141086a280200210620014100360268200142013703604104102d2208450d012008200436000020014284808080c00037026420012008360260200020062003200141e0006a10e50120012802642104200ead4280808080800884200135026842208620012802602208ad84100402402004450d002008102f0b20002006200310a302200e102f0c030b200041046a280200450d022000280200102f0c020b1036000b200ead42808080808008841005200e102f0b200141c0036a24000bc30704057f017e057f027e23004180016b22012400200141c8006a41186a22024200370300200141c8006a41106a22034200370300200141c8006a41086a2204420037030020014200370348419c9eca00ad4280808080f000841001220529000021062004200541086a290000370300200120063703482005102f41a39eca00ad4280808080c00184100122072900002106200141e8006a41086a2205200741086a290000370300200120063703682007102f200320012903682206370300200141286a41086a22072004290300370300200141286a41106a22082006370300200141286a41186a2209200529030037030020012001290348370328200141106a200141286a41201095012001280214210a2001280210210b2009200041186a2900003703002008200041106a2900003703002007200041086a2900003703002001200029000037032841d39bca00ad4280808080800184100122002900002106200141186a41086a2207200041086a290000370300200120063703182000102f4194c9c300ad4280808080e001841001220029000021062005200041086a290000370300200120063703682000102f2001200a4100200b1b36027c200141fc006aad4280808080c00084100322002900002106200041086a290000210c200041106a290000210d2002200041186a2900003703002003200d3703002004200c370300200120063703482000102f024041c000102d2200450d00200020012903183700002000200129036837001020002001290348370020200041086a2007290300370000200041186a2005290300370000200041286a2004290300370000200041306a2003290300370000200041386a20022903003700004120102d2204450d0020042001290328370000200441186a200141286a41186a290300370000200441106a200141286a41106a290300370000200441086a200141286a41086a2903003700002004ad4280808080800484100322032900002106200341086a290000210c200341106a290000210d200141c8006a41186a2205200341186a290000370300200141c8006a41106a2202200d370300200141c8006a41086a2207200c370300200120063703482003102f2004102f200041c00041800110312200450d0020002001290348370040200041d8006a2005290300370000200041d0006a2002290300370000200041c8006a2007290300370000200141086a200041e0001095012001200128020c41016a410120012802081b3602482000ad4280808080800c84200141c8006aad4280808080c0008410042000102f20014180016a24000f0b1036000bed0403027f017e047f230041e0006b22022400419bd9c900ad4280808080f00084100122032900002104200241086a41086a200341086a290000370300200220043703082003102f41c1d9c900ad4280808080800184100122032900002104200241186a41086a200341086a290000370300200220043703182003102f20022001360234200241346aad4280808080c00084100722032900002104200241386a41086a200341086a290000370300200220043703382003102f200241d4006a200241386a360200200241003a00582002200241c8006a36024c2002200241346a3602502002200241386a360248200241286a200241c8006a106c0240024002400240024002402002280230220541206a2201417f4c0d0020022802282106024002402001450d002001102d2203450d062001410f4d0d01200121070c050b411021074110102d21030c030b200141017422084110200841104b1b220741004e0d010c050b103d000b200320012007103121030b2003450d010b20032002290308370000200341086a200241086a41086a2903003700000240024020074170714110460d00200721080c010b200741017422084120200841204b1b22084100480d0220032007200810312203450d010b20032002290318370010200341186a200241186a41086a29030037000002400240200841606a2005490d00200821070c010b2005415f4b0d02200841017422072001200720014b1b22074100480d0220032008200710312203450d010b200341206a2006200510e8061a2000200136020820002007360204200020033602000240200228022c450d002006102f0b200241e0006a24000f0b1036000b1038000bbb0402097f057e230041f0006b220324002003200236020c20032001360208200341106a2002ad4220862001ad84100210730240024020032802102204450d00200341186a28020021052003280214210641002101200341003a0068024002400240034020052001460d01200341c8006a20016a200420016a2d00003a00002003200141016a22023a00682002210120024120470d000b200341286a41186a2201200341c8006a41186a2207290300370300200341286a41106a2208200341c8006a41106a2209290300370300200341286a41086a220a200341c8006a41086a220b29030037030020032003290348370328200520026b410f4d0d01200b200a290300220c37030020092008290300220d37030020072001290300220e37030020032003290328220f370348200420026a22012900002110200041306a200141086a290000370300200041286a2010370300200041206a200e370300200041186a200d370300200041106a200c3703002000200f3703084201210c0c020b200141ff0171450d00200341003a00680b20034100360230200342013703282003410b3602242003200341086a3602202003200341286a36026c200341dc006a41013602002003420137024c200341b885c7003602482003200341206a360258200341ec006a41d8dbc100200341c8006a103c1a200335023042208620033502288410080240200328022c450d002003280228102f0b4200210c0b2000200c3703002006450d012004102f0c010b200042003703000b200341f0006a24000bd6d8020b017f027e137f017e017f017e127f057e017f037e147f23004190096b22032400024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020012d00000e16000102030405061d1c1614131211100f0e0d0c0b0a09000b200341c4076a4101360200200342013702b407200341b4d8c9003602b007200341043602dc06200341fcdbc9003602d8062003200341d8066a3602c007200341b0076a41e8d8c9001043000b200141306a2903002104200141286a290300210520012d00012106200341f8066a200141246a280200360200200341d8066a41186a2001411c6a290200370300200341d8066a41106a200141146a290200370300200341d8066a41086a2001410c6a2902003703002003200141046a2902003703d80620022d00000d0620022d00014101470d06200241196a2d00002107200241186a2d00002108200241166a2f01002109200241156a2d0000210a200241146a2d0000210b200241126a2f0100210c200241116a2d0000210d200241106a2d0000210e2002410e6a2f0100210f2002410d6a2d000021102002410c6a2d000021112002410a6a2f01002112200241096a2d00002113200241086a2d00002114200241066a2f01002115200241056a2d00002116200241046a2d00002117200241026a2f0100211820032002411a6a29010037039806200320073a009706200320083a009606200320093b0194062003200a3a0093062003200b3a0092062003200c3b0190062003200d3a008f062003200e3a008e062003200f3b018c06200320103a008b06200320113a008a06200320123b018806200320133a008706200320143a008606200320153b018406200320163a008306200320173a008206200320183b01800641eba1ca00ad4280808080f00084100122022d000f210820022d000e210920022f000c210a20022d000b210b20022d000a210c20022f0008210d20022d0007210e20022d0006210f20022f0004211020022d0003211120022d0002211220022f000021132002102f41a1cac800ad4280808080e0008410012202290008211920022d0007211420022d0006211520022f0004211620022d0003211720022d0002211820022f0000211a2002102f4120102d2207450d232007200329038006370000200741186a20034180066a41186a290300370000200741106a20034180066a41106a290300370000200741086a20034180066a41086a2903003700002007ad428080808080048410032202290018211b20022d0017211c20022d0016211d20022f0014211e20022d0013211f20022d0012212020022f0010212120022d000f212220022d000e212320022f000c212420022d000b212520022d000a212620022f0008212720022d0007212820022d0006212920022f0004212a20022d0003212b20022d0002212c20022f0000212d2002102f2007102f41c000102d2202450d232002201b3700382002201c3a00372002201d3a00362002201e3b00342002201f3a0033200220203a0032200220213b0030200220223a002f200220233a002e200220243b002c200220253a002b200220263a002a200220273b0028200220283a0027200220293a00262002202a3b00242002202b3a00232002202c3a00222002202d3b002020022019370018200220143a0017200220153a0016200220163b0014200220173a0013200220183a00122002201a3b0010200220083a000f200220093a000e2002200a3b000c2002200b3a000b2002200c3a000a2002200d3b00082002200e3a00072002200f3a0006200220103b0004200220113a0003200220123a0002200220133b0000200341106a200241c00041c8e1ca004100410010b501200328021021082002102f41012107024020084101470d0020004183103b0100200041086a410d360200200041046a41c9c7c800360200200041026a41023a0000410121080c2b0b200341b0076a41206a200341d8066a41206a280200360200200341b0076a41186a200341d8066a41186a290300370300200341b0076a41106a200341d8066a41106a290300370300200341b0076a41086a200341d8066a41086a290300370300200320032903d8063703b007200341e8036a200341b0076a10bb01200341b8086a41086a2202200341f1036a290000370300200341b8086a41106a2207200341f9036a290000370300200341b8086a41186a220820034181046a290000370300200320032900e9033703b80820032d00e8034101460d13200341a8066a41186a2008290300370300200341a8066a41106a2007290300370300200341a8066a41086a2002290300370300200320032903b8083703a80641eba1ca00ad4280808080f0008410012202290000211920034180056a41086a200241086a29000037030020032019370380052002102f41a7cac800ad4280808080e00084100122022900002119200341a8056a41086a200241086a290000370300200320193703a8052002102f4120102d2207450d23200720032903a806370000200741186a200341a8066a41186a290300370000200741106a200341a8066a41106a290300370000200741086a200341a8066a41086a2903003700002007ad428080808080048410032202290018211920022d0017210820022d0016210920022f0014210a20022d0013210b20022d0012210c20022f0010210d20022d000f210e20022d000e210f20022f000c211020022d000b211120022d000a211220022f0008211320022d0007211420022d0006211520022f0004211620022d0003211720022d0002211820022f0000211a2002102f2007102f41c000102d2202450d232002200329038005370000200220032903a80537001020022019370038200220083a0037200220093a00362002200a3b00342002200b3a00332002200c3a00322002200d3b00302002200e3a002f2002200f3a002e200220103b002c200220113a002b200220123a002a200220133b0028200220143a0027200220153a0026200220163b0024200220173a0023200220183a00222002201a3b0020200241086a20034180056a41086a290300370000200241186a200341a8056a41086a290300370000200341086a200241c00041c8e1ca004100410010b501200328020821082002102f41012107024020084101470d00410d210241bcc7c8002106410321080c2a0b02402005428080e983b1de165441002004501b450d00411121024180c7c8002106410721080c2a0b41eba1ca00ad4280808080f00084100122022900002119200341d8036a41086a200241086a290000370300200320193703d8032002102f41a1cac800ad4280808080e0008410012202290000211920034180056a41086a200241086a29000037030020032019370380052002102f4120102d2202450d232002200329038006370000200241186a20034180066a41186a290300370000200241106a20034180066a41106a290300370000200241086a20034180066a41086a2903003700002002ad4280808080800484100322072900002119200741086a290000211b200741106a290000212e200341a8056a41186a2208200741186a290000370300200341a8056a41106a2209202e370300200341a8056a41086a201b370300200320193703a8052007102f2002102f41c000102d2202450d23200220032903d803370000200241086a200341d8036a41086a2903003700002002200329038005370010200241186a20034180056a41086a290300370000200220032903a805370020200241286a200341a8056a41086a290300370000200241306a2009290300370000200241386a20082903003700004120102d2207450d23200720032903a806370000200741186a200341a8066a41186a290300370000200741106a200341a8066a41106a290300370000200741086a200341a8066a41086a2903003700002002ad42808080808008842007ad428080808080048410042007102f2002102f41eba1ca00ad4280808080f00084100122022d000f210820022d000e210920022f000c210a20022d000b210b20022d000a210c20022f0008210d20022d0007210e20022d0006210f20022f0004211020022d0003211120022d0002211220022f000021132002102f41c8abc900ad4280808080d0008410012202290008211920022d0007211420022d0006211520022f0004211620022d0003211720022d0002211820022f0000211a2002102f4120102d2207450d232007200329038006370000200741186a20034180066a41186a290300370000200741106a20034180066a41106a290300370000200741086a20034180066a41086a2903003700002007ad428080808080048410032202290018211b20022d0017211c20022d0016211d20022f0014211e20022d0013211f20022d0012212020022f0010212120022d000f212220022d000e212320022f000c212420022d000b212520022d000a212620022f0008212720022d0007212820022d0006212920022f0004212a20022d0003212b20022d0002212c20022f0000212d2002102f2007102f41c000102d2202450d232002201b3700382002201c3a00372002201d3a00362002201e3b00342002201f3a0033200220203a0032200220213b0030200220223a002f200220233a002e200220243b002c200220253a002b200220263a002a200220273b0028200220283a0027200220293a00262002202a3b00242002202b3a00232002202c3a00222002202d3b002020022019370018200220143a0017200220153a0016200220163b0014200220173a0013200220183a00122002201a3b0010200220083a000f200220093a000e2002200a3b000c2002200b3a000b2002200c3a000a2002200d3b00082002200e3a00072002200f3a0006200220103b0004200220113a0003200220123a0002200220133b000002400240200641037122074103470d004101210742002119410121060c010b024002400240024020070e03000102000b410021060c020b410121060c010b410221060b200320063a00d8034101102d2207450d24200720063a00004100210642808080801021190b2002ad428080808080088420192007ad841004024020060d002007102f0b2002102f20034180066a10d002200341b0076a20034180066a108d02200341b0076a41086a290300211920032903b007211b200341e8036a41186a220720034180066a41186a290300370300200341e8036a41106a220620034180066a41106a290300370300200341e8036a41086a220820034180066a41086a29030037030020032003290380063703e80341eba1ca00ad4280808080f0008410012202290000212e2002290008212f2002102f41d2a0ca00ad4280808080a00184100122022900002130200229000821312002102f200320313703d008200320303703c8082003202f3703c0082003202e3703b8082003200341b8086a4120109501200341b0076a41186a20192004201b200554201920045420192004511b22021b2204370300200341d8076a4100360200200341ec076a2008290300370200200341f4076a2006290300370200200341fc076a20072903003702002003201b200520021b22053703c007200320043703b807200320053703b007200342083703d007200320032903e8033702e407200320032903003702dc07200341a8066a200341b0076a10b6030240200341d4076a280200450d0020032802d007102f0b200041043a00000c280b4101210720022d00014101470d0420022d000041ff01710d04200141106a2903002104200141086a290300210520032002411a6a2901003703c0052003200241026a2901003703a80520032002410a6a2901003703b0052003200241126a2901003703b805200341b0076a200341a8056a10b50341012107024020032d00b0074101470d00200341d8066a41176a2208200341c9076a290000370000200341d8066a41106a2209200341b0076a41126a290100370300200341e8036a41086a2202200341b0076a410a6a290100370300200341e8036a41106a22062009290300370300200341e8036a41176a22092008290000370000200320032901b2073703e803200320032d00b1073a00a806200341a8066a41186a2009290000370000200341b9066a2006290300370000200341b1066a2002290300370000200320032903e8033700a906200341b0076a200341a8066a108103024020032802dc074102460d00200341b8086a41086a2209200341dc076a220841086a290100370300200341b8086a41106a220a200841106a290100370300200341b8086a41186a220b200841186a290100370300200341b8086a41206a220c200841206a290100370300200341b8086a41286a220d200841286a280100360200200320082901003703b808200341b0076a41086a220e290300211b200341b0076a41186a290300213120032903b007211920032903c007213020032802d007210f20032802d807211020032802d4072108200220092903003703002006200a290300370300200341e8036a41186a2209200b290300370300200341e8036a41206a220a200c290300370300200341e8036a41286a220b200d280200360200200341fc066a2008360200200341d8066a41286a2010360200200341d8066a41186a2031370300200320032903b8083703e8032003200f3602f806200320303703e806200320193703d8062003201b3703e006200341ac076a200b280200360200200341a4076a200a2903003702002003419c076a200929030037020020034194076a20062903003702002003418c076a2002290300370200200320032903e80337028407200341b0076a200341a8056a108d02024020032903b007222e20197d2232202e56200e290300222f201b7d202e201954ad7d222e202f56202e202f511b0d0020032030200520322032200556202e200456202e2004511b22021b22057c222f3703e806200341f0066a20312004202e20021b22047c202f203054ad7c3703002003200520197c22193703d80620032004201b7c2019200554ad7c3703e006200341a8066a200341d8066a10b60320032802fc0621080b02402008450d0020032802f806102f0b200041043a0000410121080c2b0b200041086a410d360200200041046a41dec7c800360200200041026a41003a000020004183103b0100410121080c2a0b200041086a4108360200200041046a41d6c7c800360200200041026a41013a000020004183103b0100410121080c290b200141106a2903002105200141086a29030021192002411a6a2901002104200241196a2d00002106200241186a2d00002108200241166a2f01002109200241156a2d0000210a200241146a2d0000210b200241126a2f0100210c200241116a2d0000210d200241106a2d0000210e2002410e6a2f0100210f2002410d6a2d000021102002410c6a2d000021112002410a6a2f01002112200241096a2d00002113200241086a2d00002114200241066a2f01002115200241056a2d00002116200241046a2d00002117200241026a2f0100211841012107024020022d00000d0020022d000141014721070b200320043703d008200320063a00cf08200320083a00ce08200320093b01cc082003200a3a00cb082003200b3a00ca082003200c3b01c8082003200d3a00c7082003200e3a00c6082003200f3b01c408200320103a00c308200320113a00c208200320123b01c008200320133a00bf08200320143a00be08200320153b01bc08200320163a00bb08200320173a00ba08200320183b01b80802400240024002400240024020070d00200341a8066a41186a200341b8086a41186a2207290300370300200341a8066a41106a200341b8086a41106a2206290300370300200341a8066a41086a200341b8086a41086a2208290300370300200320032903b8083703a806200341b0076a200341a8066a108103024020032802dc074102460d002008200341dc076a220241086a2901003703002006200241106a2901003703002007200241186a290100370300200341b8086a41206a220b200241206a290100370300200341b8086a41286a220c200241286a280100360200200320022901003703b808200341b0076a41086a290300212e200341b0076a41186a290300210420032903b007212f20032903c007211b20032802d007210a20032802d807210920032802d4072102200341e8036a41086a220d2008290300370300200341e8036a41106a22082006290300370300200341e8036a41186a22062007290300370300200341e8036a41206a2207200b290300370300200341e8036a41286a220b200c280200360200200341fc066a2002360200200341d8066a41286a2009360200200341d8066a41186a2004370300200320032903b8083703e8032003200a3602f8062003201b3703e8062003202f3703d8062003202e3703e006200341ac076a200b280200360200200341a4076a20072903003702002003419c076a200629030037020020034194076a20082903003702002003418c076a200d290300370200200320032903e803370284072009411f4b0d02201b2019201b201954200420055420042005511b22071b22192004200520071b220584500d06200341d8066a41186a4200200420057d201b201954ad7d222e201b20197d222f428080e983b1de16544100202e501b22071b37030020034200202f20071b3703e80641eba1ca00ad4280808080f0008410012206290000212e2006290008212f2006102f41d2a0ca00ad4280808080a00184100122062900002130200629000821312006102f200320313703c005200320303703b8052003202f3703b0052003202e3703a805200341186a200341a8056a4120109501200328021c21062003280218210820092002470d0520032802fc062002460d0320032802f806210a0c040b200041086a410d360200200041046a41dec7c800360200200041026a41003a000020004183103b01000c2c0b200041023a00000c2b0b20004183103b0100200041086a410c360200200041046a41f4c6c800360200200041026a41083a00002002450d2a200a102f0c2a0b200241016a22092002490d252002410174220a2009200a20094b1bad42187e222e422088a70d25202ea722094100480d250240024020020d002009102d210a0c010b20032802f806200241186c20091031210a0b200a450d242003200a3602f8062003200941186e3602fc060b20032802800721090b200a200941186c6a22022004200520071b3703082002201b201920071b3703002002200641a0056a41a00520081b360210200320032802800741016a36028007200341a8066a200341d8066a10b60320032802fc0621020b02402002450d0020032802f806102f0b200041043a00000c260b024002400240024020022d00000d0020022d00014101470d00200241196a2d00002107200241186a2d00002106200241166a2f01002108200241156a2d00002109200241146a2d0000210a200241126a2f0100210b200241116a2d0000210c200241106a2d0000210d2002410e6a2f0100210e2002410d6a2d0000210f2002410c6a2d000021102002410a6a2f01002111200241096a2d00002112200241086a2d00002113200241066a2f01002114200241056a2d00002115200241046a2d00002116200241026a2f0100211720032002411a6a2901003703c006200320073a00bf06200320063a00be06200320083b01bc06200320093a00bb062003200a3a00ba062003200b3b01b8062003200c3a00b7062003200d3a00b6062003200e3b01b4062003200f3a00b306200320103a00b206200320113b01b006200320123a00af06200320133a00ae06200320143b01ac06200320153a00ab06200320163a00aa06200320173b01a806200341b0076a200341a8066a108103024020032802dc074102460d00200341b8086a41086a2207200341dc076a220241086a290100370300200341b8086a41106a2206200241106a290100370300200341b8086a41186a2209200241186a290100370300200341b8086a41206a2208200241206a290100370300200341b8086a41286a220c200241286a280100360200200320022901003703b808200341b0076a41086a2903002104200341b0076a41186a290300212e20032903b007210520032903c007212f20032802d007210b20032802d807210a20032802d407210d200341e8036a41086a22022007290300370300200341e8036a41106a220e2006290300370300200341e8036a41186a220f2009290300370300200341e8036a41206a22102008290300370300200341e8036a41286a2208200c280200360200200341fc066a200d360200200341d8066a41286a200a360200200341d8066a41186a202e370300200320032903b8083703e8032003200b3602f8062003202f3703e806200320053703d806200320043703e006200341ac076a2008280200360200200341a4076a221120102903003702002003419c076a2210200f29030037020020034194076a220f200e2903003702002003418c076a220c2002290300370200200320032903e8033702840741eba1ca00ad4280808080f000841001220229000021192002290008211b2002102f41d2a0ca00ad4280808080a00184100122022900002130200229000821312002102f200320313703c005200320303703b8052003201b3703b005200320193703a805200341206a200341a8056a412010950120032802204101470d04200328022421082007200f29020037030020062010290200370300200920112902003703002003200329028c073703b80820034188076a280200210f20032802840721100240200a450d00200b200a41186c6a2109200a41186c41686a2107200b21020340200241086a290300211b200229030021192008200241106a2802002206490d0442002004201b7d2005201954ad7d221b200520197d2219200556201b200456201b2004511b22061b21044200201920061b2105200741686a2107200241186a22022009470d000b0b4108210e4100210a0240200d450d00200b102f0b410021060c030b200041086a410d360200200041046a41dec7c800360200200041026a41003a000020004183103b01000c290b200041023a00000c280b4118102d220e450d22200e2019370300200e2006360210200e201b3703080240024020070d004101210a410121060c010b200241186a2111200a41186c200b6a41686a21134101210a4101210603402011210202400340200241086a290300211b200229030021192008200241106a2802002207490d0142002004201b7d2005201954ad7d221b200520197d2219200556201b200456201b2004511b22071b21044200201920071b2105200241186a22022009470d000c030b0b02402006200a470d00200a41016a2206200a490d26200a41017422112006201120064b1bad42187e2230422088a70d262030a722064100480d2602400240200a0d002006102d210e0c010b200e200a41186c20061031210e0b200e450d25200641186e21060b200241186a2111200e200a41186c6a2212201b3703082012201937030020122007360210200a41016a210a20132002470d000b0b200d450d00200b102f0b200c20032903b808370200200341d8066a41186a202e370300200c41086a200341b8086a41086a290300370200200c41106a200341b8086a41106a290300370200200c41186a200341b8086a41186a2903003702002003202f3703e806200320053703d8062003200f3602880720032010360284072003200a36028007200320063602fc062003200e3602f806200320043703e0060b02400240200a0d00202f202e84500d010b200341a8066a200341d8066a10b6030c250b200341c8076a200341a4076a290200370300200341c0076a2003419c076a290200370300200341b0076a41086a20034194076a2902003703002003200329028c073703b007200341e8036a200341b0076a108306200320032900e9033703b8082003200341e8036a41086a2800003600bf08024020032d00e80322024104470d00200342f3e885db96cddbb3203703800620034180066a200341b0076a10b1010c250b200020023a0000200020032903b808370001200041086a20032800bf0836000020032802fc06450d2520032802f806102f0c250b200141046a280200211a2002411a6a2901002104200241196a2d00002106200241186a2d00002108200241166a2f01002109200241156a2d0000210a200241146a2d0000210b200241126a2f0100210c200241116a2d0000210d200241106a2d0000210e2002410e6a2f0100210f2002410d6a2d000021102002410c6a2d000021112002410a6a2f01002112200241096a2d00002113200241086a2d00002114200241066a2f01002115200241056a2d00002116200241046a2d00002117200241026a2f0100211841012107024020022d00000d0020022d000141014721070b200320043703c005200320063a00bf05200320083a00be05200320093b01bc052003200a3a00bb052003200b3a00ba052003200c3b01b8052003200d3a00b7052003200e3a00b6052003200f3b01b405200320103a00b305200320113a00b205200320123b01b005200320133a00af05200320143a00ae05200320153b01ac05200320163a00ab05200320173a00aa05200320183b01a80502400240024020070d00200341d8056a41186a200341a8056a41186a290300370300200341d8056a41106a200341a8056a41106a290300370300200341d8056a41086a200341a8056a41086a290300370300200320032903a8053703d805200341b0076a200341d8056a108103024020032802dc074102460d00200341b8086a41086a200341dc076a220241086a2901002204370300200341b8086a41106a200241106a2901002205370300200341b8086a41186a200241186a2901002219370300200341b8086a41206a200241206a290100221b370300200341e8036a41106a22072005370300200341e8036a41186a22062019370300200341e8036a41206a2208201b370300200341e8036a41286a2209200241286a280100360200200341e8036a41086a220a20043703002003200229010022043703b808200341b0076a41086a2903002105200341b0076a41186a290300211920032903b007211b20032903c007212e20032903d007212f200341d8066a41286a20032802d807360200200341d8066a41186a201937030020034194076a20072903003702002003419c076a2006290300370200200341a4076a2008290300370200200341ac076a2009280200360200200320043703e8032003202f3703f8062003202e3703e806200320053703e0062003201b3703d806200320032903e803370284072003200a29030037028c072003418c076a220610e90541eba1ca00ad4280808080f00084100122022d000f210820022d000e210920022f000c210a20022d000b210b20022d000a210c20022f0008210d20022d0007210e20022d0006210f20022f0004211020022d0003211120022d0002211220022f000021132002102f41a5c6c800ad4280808080a0018410012202290008210420022d0007211420022d0006211520022f0004211620022d0003211720022d0002211820022f0000211c2002102f4120102d2207450d2320072006290000370000200741186a200641186a290000370000200741106a200641106a290000370000200741086a200641086a2900003700002007ad428080808080048410032202290018210520022d0017211d20022d0016211e20022f0014211f20022d0013212020022d0012212120022f0010212220022d000f212320022d000e212420022f000c212520022d000b212620022d000a212720022f0008212820022d0007212920022d0006212a20022f0004212b20022d0003212c20022d0002212d20022f000021332002102f2007102f41c000102d2202450d23200220053700382002201d3a00372002201e3a00362002201f3b0034200220203a0033200220213a0032200220223b0030200220233a002f200220243a002e200220253b002c200220263a002b200220273a002a200220283b0028200220293a00272002202a3a00262002202b3b00242002202c3a00232002202d3a0022200220333b002020022004370018200220143a0017200220153a0016200220163b0014200220173a0013200220183a00122002201c3b0010200220083a000f200220093a000e2002200a3b000c2002200b3a000b2002200c3a000a2002200d3b00082002200e3a00072002200f3a0006200220103b0004200220113a0003200220123a0002200220133b0000200341e8036a200241c000109b0420032d00ec0322074102470d032003200636028c0941eba1ca00ad4280808080f00084100122072900002104200341e0046a41086a2208200741086a290000370300200320043703e0042007102f4195c6c800ad428080808080028410012207290000210420034180066a41086a2209200741086a29000037030020032004370380062007102f200341b8086a41086a2008290300370300200341d0086a2009290300370300200320032903e0043703b80820032003290380063703c808200341b0076a200341b8086a108801200341a8066a20032802b007220720032802b80710ad02024020032802b407450d002007102f0b200341c8086a210720032d00a8060d0241eba1ca00ad4280808080f00084100122082900002104200341e0046a41086a2209200841086a290000370300200320043703e0042008102f4195c6c800ad428080808080028410012208290000210420034180066a41086a220a200841086a29000037030020032004370380062008102f200341b8086a41086a20092903003703002007200329038006370000200741086a200a290300370000200320032903e0043703b808200341b0076a200341b8086a10880120032802b007210820033502b80721044120102d2207450d2320072006290000370000200741186a200641186a290000370000200741106a200641106a290000370000200741086a200641086a29000037000020044220862008ad842007ad428080808080048410042007102f20032802b407450d252008102f0c250b200041086a410d360200200041046a41dec7c800360200200041026a41003a000020004183103b01000c270b200041023a00000c260b200341c0056a200341c1066a290000370300200341b8056a200341b9066a290000370300200341a8056a41086a200341b1066a290000370300200320032900a9063703a805200341c0046a200341a8056a109a04200341b0076a20032802c004220620032802c8042208109b04024020032d00b4074102470d002003410036028805200342013703800520034180066a41146a41293602002003418c066a410b360200200341073602dc03200341eba1ca003602d8032003410b360284062003410a3602e404200341a5c6c8003602e0042003200341c0046a360290062003200341e0046a360288062003200341d8036a36028006200320034180056a36028009200341b8086a41146a4103360200200342033702bc08200341cc90c4003602b808200320034180066a3602c80820034180096a41d8dbc100200341b8086a103c1a2003350288054220862003350280058410080240200328028405450d00200328028005102f0b200328028c09210641eba1ca00ad4280808080f00084100122082900002104200341e0046a41086a2209200841086a290000370300200320043703e0042008102f4195c6c800ad428080808080028410012208290000210420034180066a41086a220a200841086a29000037030020032004370380062008102f200341b8086a41086a20092903003703002007200329038006370000200741086a200a290300370000200320032903e0043703b80820034180066a200341b8086a108801200328028006210820033502880621044120102d2207450d2120072006290000370000200741186a200641186a290000370000200741106a200641106a290000370000200741086a200641086a29000037000020044220862008ad842007ad428080808080048410042007102f0240200328028406450d002008102f0b20032802c404450d2320032802c004102f0c230b20032802b0072109200341b8086a200341b0076a41047241c20010e8061a20034180056a41086a200341da086a410020032d00d9084101461b360200200320093602800520032003418c096a360284052003410036028806200342013703800620034180056a20034180066a10950220034180056a41047220034180066a10cd0220032802840621092008ad4220862006ad842003350288064220862003280280062206ad84100402402009450d002006102f0b024020032802c404450d0020032802c004102f0b200328028c09210641eba1ca00ad4280808080f00084100122082900002104200341e0046a41086a2209200841086a290000370300200320043703e0042008102f4195c6c800ad428080808080028410012208290000210420034180066a41086a220a200841086a29000037030020032004370380062008102f200341b8086a41086a20092903003703002007200329038006370000200741086a200a290300370000200320032903e0043703b808200341b0076a200341b8086a10880120032802b007210820033502b80721044120102d2207450d2020072006290000370000200741186a200641186a290000370000200741106a200641106a290000370000200741086a200641086a29000037000020044220862008ad842007ad428080808080048410042007102f024020032802b407450d002008102f0b20034180066a41086a200341a8056a41086a29030037030020034180066a41106a200341a8056a41106a29030037030020034180066a41186a200341a8056a41186a290300370300200320032903a8053703800641012106410021070c230b200341b8086a41186a20034185046a290000370300200341b8086a41106a200341fd036a290000370300200341b8086a41086a200341f5036a29000037030020034180066a41086a20034196046a29010037030020034180066a41106a2003419e046a29010037030020034180066a41186a200341a6046a290100370300200320032900ed033703b80820032003418e046a290100370380062003418d046a2d000021060c220b2001410c6a280200211d200141086a2802002109200141046a28020021062002411a6a2901002104200241196a2d00002108200241186a2d0000210a200241166a2f0100210b200241156a2d0000210c200241146a2d0000210d200241126a2f0100210e200241116a2d0000210f200241106a2d000021102002410e6a2f010021112002410d6a2d000021122002410c6a2d000021132002410a6a2f01002114200241096a2d00002115200241086a2d00002116200241066a2f01002117200241056a2d00002118200241046a2d0000211a200241026a2f0100211c41012107024020022d00000d0020022d000141014721070b200320043703d008200320083a00cf082003200a3a00ce082003200b3b01cc082003200c3a00cb082003200d3a00ca082003200e3b01c8082003200f3a00c708200320103a00c608200320113b01c408200320123a00c308200320133a00c208200320143b01c008200320153a00bf08200320163a00be08200320173b01bc08200320183a00bb082003201a3a00ba082003201c3b01b808024020070d0020034180056a41186a200341b8086a41186a220729030037030020034180056a41106a200341b8086a41106a220829030037030020034180056a41086a200341b8086a41086a220a290300370300200320032903b80837038005200341b0076a20034180056a10810320032802dc074102460d18200a200341dc076a220241086a2901003703002008200241106a2901003703002007200241186a290100370300200341b8086a41206a220c200241206a290100370300200341b8086a41286a220d200241286a280100360200200320022901003703b808200341b0076a41086a2903002104200341b0076a41186a290300210520032903b007211920032903c007211b20032802d007210b20032802d807210e20032802d4072102200341d8066a41086a220f200a290300370300200341d8066a41106a220a2008290300370300200341d8066a41186a22082007290300370300200341d8066a41206a2207200c290300370300200341d8066a41286a220c200d280200360200200341e8036a41246a2002360200200341e8036a41286a200e360200200341e8036a41186a2005370300200320032903b8083703d8062003200b360288042003201b3703f803200320193703e803200320043703f003200341bc046a200c280200360200200341b4046a2007290300370200200341ac046a2008290300370200200341a4046a200a2903003702002003200f29030037029c04200320032903d80637029404201d450d19201d41246c2208450d1b200341d8066a41086a2202200641096a290000370300200341d8066a41106a2207200641116a290000370300200341d8066a41186a220a200641196a290000370300200341f7066a220b200641206a280000360000200320062900013703d80620062d0000220c4102460d1b200341b0076a41096a2002290300370000200341b0076a41116a2007290300370000200341b0076a41196a200a290300370000200341b0076a41206a200b2800003600002003200c3a00b007200320032903d8063700b107200341b8086a200341b0076a10bb01200341a8066a41086a200341b8086a41096a290000370300200341a8066a41106a200341b8086a41116a290000370300200341a8066a41186a200341b8086a41196a290000370300200320032900b9083703a80641012107024020032d00b8084101470d0020034180066a41086a200341a8056a41086a29030037030020034180066a41106a200341a8056a41106a29030037030020034180066a41186a200341a8056a41186a290300370300200320032903a805370380060c1d0b200341d8056a41086a2207200341a8066a41086a290300370300200341d8056a41106a220a200341a8066a41106a290300370300200341d8056a41186a220b200341a8066a41186a290300370300200320032903a806220437038006200320043703d8054120102d2202450d1f200220032903d805370000200241186a200b290300370000200241106a200a290300370000200241086a2007290300370000024002400240200620086a200641246a460d00200341d8066a41086a22072006412d6a290000370300200341d8066a41106a2208200641356a290000370300200341d8066a41186a220a2006413d6a290000370300200341f7066a220b200641c4006a280000360000200320062900253703d80620062d0024220c4102460d00200341b0076a41096a2007290300370000200341b0076a41116a2008290300370000200341b0076a41196a200a290300370000200341b0076a41206a200b2800003600002003200c3a00b007200320032903d8063700b107200341b8086a200341b0076a10bb01200341a8066a41086a200341b8086a41096a290000370300200341a8066a41106a200341b8086a41116a290000370300200341a8066a41186a200341b8086a41196a290000370300200320032900b9083703a80620032d00b8084101470d0220034180066a41086a200341a8056a41086a29030037030020034180066a41106a200341a8056a41106a29030037030020034180066a41186a200341a8056a41186a290300370300200320032903a80537038006410121070c010b410021070b410121084101210a0c1e0b200641c8006a210b20034180066a41086a221e200341a8066a41086a22182903002204370300200341d8056a41186a2211200341a8066a41186a221a290300370300200341d8056a41106a2212200341a8066a41106a221c290300370300200341d8056a41086a22132004370300200320032903a806220437038006200320043703d805201d41246c41b87f6a2110200341b8086a410172210d200341b0076a410172210c200341d8066a411f6a21174102210f4120210e410221084101210a0340200341b0076a41186a22142011290300370300200341b0076a41106a22152012290300370300200341b0076a41086a22162013290300370300200320032903d8053703b00702402008417f6a200a470d00200f2008200f20084b1b220741ffffff3f712007470d22200741057422074100480d222002200e200710312202450d212007410576210a0b2002200e6a220720032903b007370000200741186a2014290300370000200741106a2015290300370000200741086a20162903003700004100210720084110460d1e2010450d1e200341d8066a41086a2214200b41096a290000370300200341d8066a41106a2215200b41116a290000370300200341d8066a41186a2216200b41196a2900003703002017200b41206a2800003600002003200b2900013703d806200b2d0000221d4102460d1e200c20032903d806370000200c41086a2014290300370000200c41106a2015290300370000200c41186a2016290300370000200c411f6a20172800003600002003201d3a00b007200341b8086a200341b0076a10bb012018200d41086a290000370300201c200d41106a290000370300201a200d41186a2900003703002003200d2900003703a806024020032d00b8084101470d0020034180066a41086a200341a8056a41086a29030037030020034180066a41106a200341a8056a41106a29030037030020034180066a41186a200341a8056a41186a290300370300200320032903a80537038006410121070c1f0b200b41246a210b201e201829030022043703002011201a2903003703002012201c29030037030020132004370300200320032903a806220437038006200320043703d805200f41026a210f200e41206a210e200841016a21082010415c6a21100c000b0b200041023a00000c190b200041023a0000410121080c240b200041023a00000c210b200341d8066a41186a200141196a290000370300200341e8066a200141116a290000370300200341d8066a41086a200141096a290000370300200320012900013703d806200341b0076a200341d8066a108d020240427f20032903b007220420032903c0077c220520052004542202200341b0076a41086a22072903002204200341b0076a41186a2903007c2002ad7c220520045420052004511b22021b427f200520021b844200520d00200341b0076a200341d8066a108306200320032900b1073703b808200320072800003600bf08024020032d00b00722024104470d00200342f3e885db96cddbb3203703e803200341e8036a200341d8066a10b101200041043a00000c220b200020023a0000200020032903b808370001200041086a20032800bf083600000c210b20004183103b0100200041086a410c360200200041046a41dbc6c800360200200041026a410a3a00000c200b024020022d000120022d0000410047720d00200141046a280200210841eba1ca00ad4280808080f00084222e100122022900002104200229000821052002102f41d2a0ca00ad4280808080a001841001220229000021192002290008211b2002102f2003201b3701c005200320193701b805200320053701b005200320043701a805200341d0036a200341a8056a412010950141012107024020032802d0034101470d0020032802d4032106202e100122022900002104200229000821052002102f41a3a0ca00ad4280808080c00184221910012202290000211b2002290008212e2002102f2003202e3701c0052003201b3701b805200320053701b005200320043701a805200341c8036a200341a8056a412010950102404100200620032802cc0341d40020032802c8031b6b2202200220064b1b22024100200620086b2209200920064b1b22064f0d000340200210ee052006200241016a2202470d000b0b41eba1ca00ad4280808080f00084100122022900002104200229000821052002102f20191001220229000021192002290008211b2002102f2003201b3701c005200320193701b805200320053701b005200320043701a805200320083602b007200341a8056aad4280808080800484200341b0076aad4280808080c0008410040b200041043a0000410121080c220b200041023a00000c1f0b41012107024020022d00014101470d0020022d000041ff01710d00200141106a290300211b200141086a290300212e20032002411a6a2901003703c0062003200241026a2901003703a80620032002410a6a2901003703b0062003200241126a2901003703b806200341b0076a200341a8066a108103024020032802dc074102460d00200341b8086a41086a2207200341dc076a220241086a290100370300200341b8086a41106a2206200241106a290100370300200341b8086a41186a2208200241186a290100370300200341b8086a41206a220a200241206a290100370300200341b8086a41286a220b200241286a280100360200200320022901003703b808200341b0076a41186a290300212f200341b0076a41086a290300213420032903c007213020032903b007213520032802d807210220032802d407210c20032802d0072109200341e8036a41086a220d2007290300370300200341e8036a41106a22072006290300370300200341e8036a41186a22062008290300370300200341e8036a41206a2208200a290300370300200341e8036a41286a220a200b280200360200200320032903b8083703e80302402002450d00200341d8066a41286a200a280200360200200341d8066a41206a2008290300370300200341d8066a41186a2006290300370300200341d8066a41106a2007290300370300200341d8066a41086a200d290300370300200320032903e8033703d80642002131420021320240034002402002417f6a220720024d0d00410021070c020b024020072002490d00200221070c020b02402009200741186c6a22060d00200221070c020b02402006290300220420317c2205202e58200641086a290300223620327c2005200454ad7c2219201b582019201b5122081b0d0020062004202e20317d22057d37030020062036201b20327d202e203154ad7d22197d2004200554ad7d3703082019202f7c200520307c2230200554ad7c212f200221070c020b2036202f7c200420307c2230200454ad7c212f2007210220052131201921322005202e542019201b5420081b0d000b0b200341b0076a41186a202f370300200341b0076a41286a2007360200200341d4076a2202200c360200200341e4076a200341e0066a290300370200200341ec076a200341e8066a290300370200200341f4076a200341d8066a41186a290300370200200341fc076a200341f8066a29030037020020034184086a200341d8066a41286a280200360200200320303703c007200320353703b007200320093602d007200320032903d8063702dc07200320343703b807200341a8066a200341b0076a10b60302402002280200450d0020032802d007102f0b200041043a00000c210b20004183103b0100200041086a410d360200200041046a41e7c6c800360200200041026a41093a0000200c450d202009102f0c200b200041086a410d360200200041046a41dec7c800360200200041026a41003a000020004183103b01000c1f0b200041023a0000410121080c200b02400240024002400240024020022d00000d0020022d00014101470d002002411a6a2901002104200241196a2d0000210a200241186a2d0000210b200241166a2f0100210c200241156a2d0000210d200241146a2d0000210e200241126a2f0100210f200241116a2d00002110200241106a2d000021112002410e6a2f010021122002410d6a2d000021132002410c6a2d000021142002410a6a2f01002115200241096a2d00002116200241086a2d00002117200241066a2f01002118200241056a2d0000211a200241046a2d0000211c200241026a2f0100211d200341b0036a200141046a28020022061084060240024020032802b003450d00200341c0036a290300212f20032903b803212e41eba1ca00ad4280808080f00084100122022900002105200341d8036a41086a200241086a290000370300200320053703d8032002102f41a7cac800ad4280808080e0008410012202290000210520034180056a41086a200241086a29000037030020032005370380052002102f4120102d2202450d20200220043700182002200a3a00172002200b3a00162002200c3b00142002200d3a00132002200e3a00122002200f3b0010200220103a000f200220113a000e200220123b000c200220133a000b200220143a000a200220153b0008200220163a0007200220173a0006200220183b00042002201a3a00032002201c3a00022002201d3b00002002ad4280808080800484100322072900002105200741086a2900002119200741106a290000211b200341a8056a41186a2208200741186a290000370300200341a8056a41106a2209201b370300200341a8056a41086a2019370300200320053703a8052007102f2002102f41c000102d2202450d20200220032903d803370000200241086a200341d8036a41086a2903003700002002200329038005370010200241186a20034180056a41086a2207290300370000200220032903a805370020200241286a200341a8056a41086a221e290300370000200241306a2009290300370000200241386a2008290300370000200341b0076a200210a005201e200341b0076a41086a2903003703002009200341b0076a41106a2903003703002008200341b0076a41186a290300370300200341a8056a41206a2209200341b0076a41206a290300370300200341a8056a41286a221f200341b0076a41286a2802003602002007200341b0076a41386a29030037030020034180056a41106a200341b0076a41c0006a29030037030020034180056a41186a200341b0076a41c8006a29030037030020034180056a41206a2220200341b0076a41d0006a290300370300200320032903b0073703a805200320032903e00737038005024020032802dc0722084102460d00200341a8066a41286a2221201f280200360200200341a8066a41206a221f2009290300370300200341a8066a41186a2209200341a8056a41186a290300370300200341a8066a41106a2222200341a8056a41106a290300370300200341a8066a41086a2223201e29030037030020034180066a41086a221e200729030037030020034180066a41106a220720034180056a41106a29030037030020034180066a41186a222420034180056a41186a29030037030020034180066a41206a22252020290300370300200320032903a8053703a8062003200329038005370380062002102f200341e8036a410e6a2023290300370100200341e8036a41166a2022290300370100200341e8036a411e6a2009290300370100200341e8036a41266a201f290300370100200341e8036a412e6a2021280200360100200320032903a8063701ee03200341b8086a41086a200341e8036a41086a290100370300200341b8086a41106a200341e8036a41106a290100370300200341b8086a41186a200341e8036a41186a290100370300200341b8086a41206a200341e8036a41206a290100370300200341b8086a41286a200341e8036a41286a290100370300200341b8086a41306a200341e8036a41306a2f01003b0100200320032901e8033703b808200341d8056a41206a22022025290300370300200341d8056a41186a22092024290300370300200341d8056a41106a221f2007290300370300200341d8056a41086a2207201e29030037030020032003290380063703d805200341d8066a41286a200341b8086a412e6a280100360200200341d8066a41206a200341b8086a41266a290100370300200341d8066a41186a200341b8086a411e6a290100370300200341d8066a41106a200341b8086a41166a290100370300200341d8066a41086a200341b8086a410e6a290100370300200320032901be083703d8062003200836028407200341d8066a41d0006a2002290300370300200341d8066a41c8006a200929030037030020034198076a201f290300370300200341d8066a41386a2007290300370300200341d8066a41306a220220032903d805370300200620022802004d410220081b22024102460d022002410171450d0220004183103b0100200041086a4112360200200041046a41c9c6c800360200200041026a410b3a0000200341fc066a280200450d2620032802f806102f0c260b2002102f200041086a410d360200200041046a41dec7c800360200200041026a41003a000020004183103b01000c250b20004183103b0100200041086a4112360200200041046a41c9c6c800360200200041026a410b3a00000c240b2003200636028807200341013602840741eba1ca00ad4280808080f00084100122022d000f210820022d000e210920022f000c211e20022d000b211f20022d000a212020022f0008212120022d0007212220022d0006212320022f0004212420022d0003212520022d0002212620022f000021272002102f41a7cac800ad4280808080e0008410012202290008210520022d0007212820022d0006212920022f0004212a20022d0003212b20022d0002212c20022f0000212d2002102f4120102d2202450d1e200220043700182002200a3a00172002200b3a00162002200c3b00142002200d3a00132002200e3a00122002200f3b0010200220103a000f200220113a000e200220123b000c200220133a000b200220143a000a200220153b0008200220163a0007200220173a0006200220183b00042002201a3a00032002201c3a00022002201d3b00002002ad428080808080048410032207290018211920072d0017213320072d0016213720072f0014213820072d0013213920072d0012213a20072f0010213b20072d000f213c20072d000e213d20072f000c213e20072d000b213f20072d000a214020072f0008214120072d0007214220072d0006214320072f0004214420072d0003214520072d0002214620072f000021472007102f2002102f41c000102d2202450d1e20022019370038200220333a0037200220373a0036200220383b0034200220393a00332002203a3a00322002203b3b00302002203c3a002f2002203d3a002e2002203e3b002c2002203f3a002b200220403a002a200220413b0028200220423a0027200220433a0026200220443b0024200220453a0023200220463a0022200220473b002020022005370018200220283a0017200220293a00162002202a3b00142002202b3a00132002202c3a00122002202d3b0010200220083a000f200220093a000e2002201e3b000c2002201f3a000b200220203a000a200220213b0008200220223a0007200220233a0006200220243b0004200220253a0003200220263a0002200220273b0000200341c0003602b407200320023602b007200341d8066a200341b0076a10f3052002102f200341a8066a2006108506200341b0076a20062003418c076a220910f205200341a8036a20032802b007220820032802b80710c10320032802a803210220032802ac032107024020032802b407450d002008102f0b200341e8036a2006200910f005200341b0076a20032802e803220620032802f00310bc030240024020032802d00722230d004200211b41082123410021244200210542002130420021190c010b200341b8076a2903002105200341c8076a290300211920032903b007211b20032903c007213020032802d40721240b024020032802ec03450d002006102f0b20034198036a201b4201201b42015620054200522005501b22061b221b2005420020061b2205428094ebdc03420010ee0620034188036a201b200520032903980322314201203142015620034198036a41086a29030022314200522031501b22061b22322031420020061b223610ee06200329038803223142808080801054410020034188036a41086a290300501b450d01200341f8026a201b2030201b203054200520195420052019511b22061b2005201920061b2032203610ee0620032903f8022205428080808010544100200341f8026a41086a290300501b450d022031a7450d032007410020021b2122200542ffffffff0f83428094ebdc037e203142ffffffff0f83802105200341a8066a4104722102200341a8066a41086a280200211f024002400340410021214100210602402002280200221e2f01062220450d0020204105742102201e41086a2107417f21060340024020020d00202021060c020b200641016a210620092007412010ea062208450d03200241606a2102200741206a21072008417f4a0d000b0b201f450d02201f417f6a211f201e20064102746a4194036a21020c000b0b201e20064102746a41e8026a28020021210b200341d0026a202e202f428094ebdc03420010ee06200341c0026a20032903d0022219200341d0026a41086a290300221b4280ec94a37c427f10ed0620032802a80621022003418094ebdc033602b4072003200542ffffffff0f834100418094ebdc0320226b22072007418094ebdc034b1bad7e428094ebdc0380a722073602b007200341b0076a2007418094ebdc034b4102746a28020021072003418094ebdc033602b4072003417f202220076a220720072022491b22073602b007200341b0076a2007418094ebdc034b4102746a35020021052003418094ebdc033602b4072003200520024101200241014b1b2202202120022021491b2002418094ebdc036e22074101200741014b1b22076ead428094ebdc037e200220076ead8042ffffffff0f837e428094ebdc0380a722023602b007200341b0026a2019201b200341b0076a2002418094ebdc034b4102746a3502002205420010ed06200341e0026a200920032903b00222192005202e20032903c0027c7e22052005428094ebdc038022054280ec94a37c7e7c4280cab5ee01562005a76aad7c2205200341b0026a41086a2903002005201954ad7c108606200341e0026a41106a290300210520032903e8022119024020032903e002221ba74101470d00200320043702d0082003200a3a00cf082003200b3a00ce082003200c3b01cc082003200d3a00cb082003200e3a00ca082003200f3b01c808200320103a00c708200320113a00c608200320123b01c408200320133a00c308200320143a00c208200320153b01c008200320163a00bf08200320173a00be08200320183b01bc082003201a3a00bb082003201c3a00ba082003201d3b01b808200341e8076a2005370300200341e0076a2019370300200341d1076a2004370000200341b0076a41206a200a3a0000200341cf076a200b3a0000200341cd076a200c3b0000200341cc076a200d3a0000200341cb076a200e3a0000200341c9076a200f3b0000200341b0076a41186a220820103a0000200341c7076a20113a0000200341c5076a20123b0000200341c4076a20133a0000200341c3076a20143a0000200341c1076a20153b0000200341b0076a41106a220620163a0000200341bf076a20173a0000200341bd076a20183b0000200341bc076a201a3a0000200341bb076a201c3a0000200341b9076a201d3b0000200341b0076a41086a220741003a0000200341043a00b00741c8e1ca004100200341b0076a108c01200842003703002006420037030020074200370300200342003703b00741e7a2ca00ad4280808080800184220410012209290000211b200341b8086a41086a2202200941086a2900003703002003201b3703b8082009102f20072002290300370300200320032903b8083703b00741ecb5c600ad4280808080d00184221b10012209290000212e2002200941086a2900003703002003202e3703b8082009102f200620032903b808222e370300200341e8036a41086a220a2007290300370300200341e8036a41106a220b202e370300200341e8036a41186a220c2002290300370300200320032903b0073703e80320034180026a200341e8036a4120109c0120034180026a41106a290300212e200329038802212f2003280280022109200842003703002006420037030020074200370300200342003703b00720041001220829000021042002200841086a290000370300200320043703b8082008102f20072002290300370300200320032903b8083703b007201b1001220829000021042002200841086a290000370300200320043703b8082008102f200620032903b8082204370300200a2007290300370300200b2004370300200c2002290300370300200320032903b0073703e8032003427f202e420020091b220420057c202f420020091b220520197c22192005542202ad7c22052002200520045420052004511b22021b3703b8072003427f201920021b3703b007200341b0076a2102200341e8036a21070c050b201b4201520d05200341b0076a41186a22094200370300200341b0076a41106a22064200370300200341b0076a41086a22074200370300200342003703b00741e7a2ca00ad4280808080800184220410012208290000211b200341b8086a41086a2202200841086a2900003703002003201b3703b8082008102f20072002290300370300200320032903b8083703b00741ecb5c600ad4280808080d00184221b10012208290000212e2002200841086a2900003703002003202e3703b8082008102f200620032903b808222e370300200341e8036a41086a220a2007290300370300200341e8036a41106a220b202e370300200341e8036a41186a220c2002290300370300200320032903b0073703e80320034198026a200341e8036a4120109c0120034198026a41106a290300212e20032903a002212f2003280298022108200942003703002006420037030020074200370300200342003703b00720041001220929000021042002200941086a290000370300200320043703b8082009102f20072002290300370300200320032903b8083703b007201b1001220929000021042002200941086a290000370300200320043703b8082009102f200620032903b8082204370300200a2007290300370300200b2004370300200c2002290300370300200320032903b0073703e8032003427f202e420020081b220420057c202f420020081b220520197c22192005542202ad7c22052002200520045420052004511b22021b3703b8072003427f201920021b3703b007200341b0076a2102200341e8036a21070c040b200041023a00000c220b200341113602b40720034198b4c0003602b0074186b3c00041e000200341b0076a419cb2c00041e8b3c000103e000b200341113602b40720034198b4c0003602b0074186b3c00041e000200341b0076a419cb2c00041f8b3c000103e000b4180b2c00041194188b4c0001039000b2007ad42808080808004842002ad428080808080028410040b200041043a000002402024450d002023102f0b20032802ac0620032802b006200341b4066a28020010a302200341fc066a280200450d1d20032802f806102f0c1d0b2001410c6a2802002106200141086a2802002108024002400240024002400240024020022d00000d0020022d00014101470d0002400240200141106a280200220941104b0d002002411a6a2901002119200241196a2d00002113200241186a2d00002114200241166a2f01002115200241156a2d00002116200241146a2d00002117200241126a2f01002118200241116a2d0000211a200241106a2d0000211c2002410e6a2f0100211d2002410d6a2d0000211e2002410c6a2d0000211f2002410a6a2f01002120200241096a2d00002121200241086a2d00002122200241066a2f01002123200241056a2d00002124200241046a2d00002125200241026a2f01002126200341e8016a200141046a280200220d10840620032802e8010d0120004183103b0100200041086a4112360200200041046a41c9c6c800360200200041026a410b3a00000c070b20004183103b0100200041086a411a360200200041046a41afc6c800360200200041026a410c3a00000c060b200341e8016a41106a290300212f20032903f001212e41eba1ca00ad4280808080f00084100122022900002104200341d8036a41086a200241086a290000370300200320043703d8032002102f41a7cac800ad4280808080e0008410012202290000210420034180056a41086a200241086a29000037030020032004370380052002102f4120102d2202450d1e20022019370018200220133a0017200220143a0016200220153b0014200220163a0013200220173a0012200220183b00102002201a3a000f2002201c3a000e2002201d3b000c2002201e3a000b2002201f3a000a200220203b0008200220213a0007200220223a0006200220233b0004200220243a0003200220253a0002200220263b00002002ad4280808080800484100322072900002104200741086a2900002105200741106a290000211b200341a8056a41186a220a200741186a290000370300200341a8056a41106a220b201b370300200341a8056a41086a2005370300200320043703a8052007102f2002102f41c000102d2202450d1e200220032903d803370000200241086a200341d8036a41086a2903003700002002200329038005370010200241186a20034180056a41086a2207290300370000200220032903a805370020200241286a200341a8056a41086a220c290300370000200241306a200b290300370000200241386a200a290300370000200341b0076a200210a005200c200341b0076a41086a290300370300200b200341b0076a41106a290300370300200a200341b0076a41186a290300370300200341a8056a41206a220b200341b0076a41206a290300370300200341a8056a41286a220e200341b0076a41286a2802003602002007200341b0076a41386a29030037030020034180056a41106a200341b0076a41c0006a29030037030020034180056a41186a200341b0076a41c8006a29030037030020034180056a41206a220f200341b0076a41d0006a290300370300200320032903b0073703a805200320032903e007370380050240024020032802dc07220a4102460d00200341a8066a41286a2210200e280200360200200341a8066a41206a220e200b290300370300200341a8066a41186a220b200341a8056a41186a290300370300200341a8066a41106a2211200341a8056a41106a290300370300200341a8066a41086a2212200c29030037030020034180066a41086a220c200729030037030020034180066a41106a220720034180056a41106a29030037030020034180066a41186a222720034180056a41186a29030037030020034180066a41206a2228200f290300370300200320032903a8053703a8062003200329038005370380062002102f200341e8036a410e6a2012290300370100200341e8036a41166a2011290300370100200341e8036a411e6a200b290300370100200341e8036a41266a200e290300370100200341e8036a412e6a2010280200360100200320032903a8063701ee03200341b8086a41086a200341e8036a41086a290100370300200341b8086a41106a200341e8036a41106a290100370300200341b8086a41186a200341e8036a41186a290100370300200341b8086a41206a200341e8036a41206a290100370300200341b8086a41286a200341e8036a41286a290100370300200341b8086a41306a200341e8036a41306a2f01003b0100200320032901e8033703b808200341d8056a41206a22022028290300370300200341d8056a41186a220b2027290300370300200341d8056a41106a220e2007290300370300200341d8056a41086a2207200c29030037030020032003290380063703d805200341d8066a41286a200341b8086a412e6a280100360200200341d8066a41206a200341b8086a41266a290100370300200341d8066a41186a200341b8086a411e6a290100370300200341d8066a41106a200341b8086a41166a290100370300200341d8066a41086a200341b8086a410e6a290100370300200320032901be083703d8062003200a36028407200341d8066a41d0006a2002290300370300200341d8066a41c8006a200b29030037030020034198076a200e290300370300200341d8066a41386a2007290300370300200341d8066a41306a220220032903d805370300200d20022802004d4102200a1b22024102460d012002410171450d0120004183103b0100200041086a4112360200200041046a41c9c6c800360200200041026a410b3a0000200341fc066a280200450d0720032802f806102f0c070b2002102f200041086a410d360200200041046a41dec7c800360200200041026a41003a000020004183103b01000c060b2003200d36028807200341013602840741eba1ca00ad4280808080f00084100122022d000f210a20022d000e210b20022f000c210c20022d000b210e20022d000a210f20022f0008211020022d0007211120022d0006211220022f0004212720022d0003212820022d0002212920022f0000212a2002102f41a7cac800ad4280808080e0008410012202290008210420022d0007212b20022d0006212c20022f0004212d20022d0003213320022d0002213720022f000021382002102f4120102d2202450d1e20022019370018200220133a0017200220143a0016200220153b0014200220163a0013200220173a0012200220183b00102002201a3a000f2002201c3a000e2002201d3b000c2002201e3a000b2002201f3a000a200220203b0008200220213a0007200220223a0006200220233b0004200220243a0003200220253a0002200220263b00002002ad428080808080048410032207290018210520072d0017213920072d0016213a20072f0014213b20072d0013213c20072d0012213d20072f0010213e20072d000f213f20072d000e214020072f000c214120072d000b214220072d000a214320072f0008214420072d0007214520072d0006214620072f0004214720072d0003214820072d0002214920072f0000214a2007102f2002102f41c000102d2202450d1e20022005370038200220393a00372002203a3a00362002203b3b00342002203c3a00332002203d3a00322002203e3b00302002203f3a002f200220403a002e200220413b002c200220423a002b200220433a002a200220443b0028200220453a0027200220463a0026200220473b0024200220483a0023200220493a00222002204a3b0020200220043700182002202b3a00172002202c3a00162002202d3b0014200220333a0013200220373a0012200220383b00102002200a3a000f2002200b3a000e2002200c3b000c2002200e3a000b2002200f3a000a200220103b0008200220113a0007200220123a0006200220273b0004200220283a0003200220293a00022002202a3b0000200341c0003602b407200320023602b007200341d8066a200341b0076a10f3052002102f200341a8066a200d1085060240200941246c22020d00410021290c050b200820026a2211415c6a212a200341a8066a410472212c2003418c076a210f20082107410021290340200721020340200241206a2802002107200341e8036a41186a200241186a290000370300200341e8036a41106a200241106a290000370300200341e8036a41086a200241086a290000370300200320022900003703e803200341b0076a200d200341e8036a10f205200341e0016a20032802b007220920032802b80710c10320032802e001210b20032802e4012110024020032802b407450d002009102f0b200341b8086a200d200341e8036a10f105200341b0076a20032802b808220a20032802c00810bc030240024020032802d007220c0d00420021054100210e4108210c41002109420021040c010b200341b0076a41086a290300210420032903b007210520032802d407210e20032802d80721090b024020032802bc08450d00200a102f0b02400240200920074d0d00200c200741306c6a2207450d000240200f200741106a2209460d002009200f412010ea060d020b200341d0016a20054201200542015620044200522004501b22091b22052004420020091b2204428094ebdc03420010ee06200341c0016a2005200420032903d001221b4201201b420156200341d0016a41086a290300221b420052201b501b22091b2231201b420020091b223210ee0620032903c001221b428080808010544100200341c0016a41086a290300501b450d05200341b0016a20052007290300223020052030542004200741086a29030022305420042030511b22071b2004203020071b2031203210ee0620032903b0012204428080808010544100200341b0016a41086a290300501b450d06201ba7450d0720104100200b1b212b200442ffffffff0f83428094ebdc037e201b42ffffffff0f8380210420032802b0062112202c2107024002400340410021284100210a0240200728020022102f01062227450d0020274105742107201041086a2109417f210a0340024020070d002027210a0c020b200a41016a210a200341e8036a2009412010ea06220b450d03200741606a2107200941206a2109200b417f4a0d000b0b2012450d022012417f6a21122010200a4102746a4194036a21070c000b0b2010200a4102746a41e8026a28020021280b20032802a80621072003418094ebdc033602b407200320074101200741014b1b2207202820072028491b2007418094ebdc036e22094101200941014b1b22096ead428094ebdc037e200720096ead8042ffffffff0f834100418094ebdc03202b6b22072007418094ebdc034b1bad7e428094ebdc0380a722073602b007200341b0076a2007418094ebdc034b4102746a35020021052003418094ebdc033602b40720032005200442ffffffff0f837e428094ebdc0380a722073602b007200341b0076a2007418094ebdc034b4102746a28020021072003418094ebdc033602b4072003417f202920076a220720072029491b22073602b007200341b0076a2007418094ebdc034b4102746a28020021290b0240200e450d00200c102f0b200241246a2107202a2002460d070c020b200241246a21020240200e450d00200c102f0b20112002460d060c000b0b0b200041023a00000c040b200341113602b40720034198b4c0003602b0074186b3c00041e000200341b0076a419cb2c00041e8b3c000103e000b200341113602b40720034198b4c0003602b0074186b3c00041e000200341b0076a419cb2c00041f8b3c000103e000b4180b2c00041194188b4c0001039000b02402006450d002008102f0b20034188016a202e202f428094ebdc03420010ee06200341f8006a200329038801220420034188016a41086a29030022054280ec94a37c427f10ed06200341e8006a200420052029ad221b420010ed0620034198016a2003418c076a20032903682204201b202e20032903787c7e22052005428094ebdc038022054280ec94a37c7e7c4280cab5ee01562005a76aad7c2205200341e8006a41086a2903002005200454ad7c10860620034198016a41106a290300210420032903a0012105024002400240200329039801221ba74101470d00200320193702d008200320133a00cf08200320143a00ce08200320153b01cc08200320163a00cb08200320173a00ca08200320183b01c8082003201a3a00c7082003201c3a00c6082003201d3b01c4082003201e3a00c3082003201f3a00c208200320203b01c008200320213a00bf08200320223a00be08200320233b01bc08200320243a00bb08200320253a00ba08200320263b01b808200341e8076a2004370300200341e0076a2005370300200341d1076a2019370000200341b0076a41206a20133a0000200341cf076a20143a0000200341cd076a20153b0000200341cc076a20163a0000200341cb076a20173a0000200341c9076a20183b0000200341b0076a41186a2208201a3a0000200341c7076a201c3a0000200341c5076a201d3b0000200341c4076a201e3a0000200341c3076a201f3a0000200341c1076a20203b0000200341b0076a41106a220620213a0000200341bf076a20223a0000200341bd076a20233b0000200341bc076a20243a0000200341bb076a20253a0000200341b9076a20263b0000200341b0076a41086a220741003a0000200341043a00b00741c8e1ca004100200341b0076a108c01200842003703002006420037030020074200370300200342003703b00741e7a2ca00ad4280808080800184221910012209290000211b200341b8086a41086a2202200941086a2900003703002003201b3703b8082009102f20072002290300370300200320032903b8083703b00741ecb5c600ad4280808080d00184221b10012209290000212e2002200941086a2900003703002003202e3703b8082009102f200620032903b808222e370300200341e8036a41086a220a2007290300370300200341e8036a41106a220b202e370300200341e8036a41186a220c2002290300370300200320032903b0073703e803200341386a200341e8036a4120109c01200341386a41106a290300212e2003290340212f20032802382109200842003703002006420037030020074200370300200342003703b00720191001220829000021192002200841086a290000370300200320193703b8082008102f20072002290300370300200320032903b8083703b007201b1001220829000021192002200841086a290000370300200320193703b8082008102f200620032903b8082219370300200a2007290300370300200b2019370300200c2002290300370300200320032903b0073703e8032003427f202e420020091b221920047c202f420020091b220420057c22052004542202ad7c22042002200420195420042019511b22021b3703b8072003427f200520021b3703b007200341b0076a2102200341e8036a21070c010b201b4201520d01200341b0076a41186a22094200370300200341b0076a41106a22064200370300200341b0076a41086a22074200370300200342003703b00741e7a2ca00ad4280808080800184221910012208290000211b200341b8086a41086a2202200841086a2900003703002003201b3703b8082008102f20072002290300370300200320032903b8083703b00741ecb5c600ad4280808080d00184221b10012208290000212e2002200841086a2900003703002003202e3703b8082008102f200620032903b808222e370300200341e8036a41086a220a2007290300370300200341e8036a41106a220b202e370300200341e8036a41186a220c2002290300370300200320032903b0073703e803200341d0006a200341e8036a4120109c01200341d0006a41106a290300212e2003290358212f20032802502108200942003703002006420037030020074200370300200342003703b00720191001220929000021192002200941086a290000370300200320193703b8082009102f20072002290300370300200320032903b8083703b007201b1001220929000021192002200941086a290000370300200320193703b8082009102f200620032903b8082219370300200a2007290300370300200b2019370300200c2002290300370300200320032903b0073703e8032003427f202e420020081b221920047c202f420020081b220420057c22052004542202ad7c22042002200420195420042019511b22021b3703b8072003427f200520021b3703b007200341b0076a2102200341e8036a21070b2007ad42808080808004842002ad428080808080028410040b200041043a000020032802ac06200341b0066a280200200341b4066a28020010a3020240200341fc066a280200450d0020032802f806102f0b41002100410121070c010b41002100410121072006450d002008102f0b41012108410121060c1f0b200241036a2d0000210820022f00012109200141106a28020021072001410c6a2802002113200141086a2802002110200141046a2802002114024002400240024020022d0000220a417f6a220641024b0d00024020060e03000102000b200241046a2d00000d00200241086a2802004102742002410c6a28020041036c4f0d010b410021062009200841107472200a4100477241ff01710d010b20102007410041202007676b10e40341eba1ca00ad4280808080f00084100122022d000f210620022d000e210820022f000c210920022d000b210a20022d000a210b20022f0008210c20022d0007210d20022d0006210e20022f0004210f20022d0003211120022d0002211220022f000021152002102f41e0cfc800ad428080808080028410012202290008210420022d0007211620022d0006211720022f0004211820022d0003211a20022d0002211c20022f0000211d2002102f200320143602b007200341b0076aad22194280808080c0008410032202290018210520022d0017211e20022d0016211f20022f0014212020022d0013212120022d0012212220022f0010212320022d000f212420022d000e212520022f000c212620022d000b212720022d000a212820022f0008212920022d0007212a20022d0006212b20022f0004212c20022d0003212d20022d0002213320022f000021372002102f41c000102d2202450d18200220053700382002201e3a00372002201f3a0036200220203b0034200220213a0033200220223a0032200220233b0030200220243a002f200220253a002e200220263b002c200220273a002b200220283a002a200220293b00282002202a3a00272002202b3a00262002202c3b00242002202d3a0023200220333a0022200220373b002020022004370018200220163a0017200220173a0016200220183b00142002201a3a00132002201c3a00122002201d3b0010200220063a000f200220083a000e200220093b000c2002200a3a000b2002200b3a000a2002200c3b00082002200d3a00072002200e3a00062002200f3b0004200220113a0003200220123a0002200220153b0000200341b0076a2002109a0520032902b407210420032802b00721062002102f2004420020061b21042006410820061b2111024020074102742212450d0041002107417f210a41002108410021060340024002400240201020076a280200220920064f0d00410e210241a2c7c8002107410521060c010b200820096a22022004422088a7220b490d01411121024191c7c8002107410621060b20004183103b0100200041086a2002360200200041046a2007360200200041026a20063a000002402013450d002010102f0b02402004422088a72200450d00201141306a2102200041d8006c210003400240200241746a280200450d00200241706a280200102f0b02402002280200450d002002417c6a280200102f0b200241d8006a2102200041a87f6a22000d000b0b41002106410121072004a7450d042011102f0c040b2011200241d8006c6a220228022c210e2002280220210f200241306a280200210c200241246a280200210d2002200241d8006a200a200b6a20096b41d8006c10e9061a0240200d450d00200f102f0b0240200c450d00200e102f0b200641016a210620044280808080707c2104200a41016a210a2008417f6a21082012200741046a2207470d000b0b02402013450d002010102f0b41eba1ca00ad4280808080f00084100122022d000f210720022d000e210620022f000c210820022d000b210920022d000a210a20022f0008210b20022d0007210c20022d0006210d20022f0004210e20022d0003210f20022d0002211020022f000021122002102f41e0cfc800ad428080808080028410012202290008210520022d0007211320022d0006211520022f0004211620022d0003211720022d0002211820022f0000211a2002102f200320143602b00720194280808080c0008410032202290018211920022d0017211420022d0016211c20022f0014211d20022d0013211e20022d0012211f20022f0010212020022d000f212120022d000e212220022f000c212320022d000b212420022d000a212520022f0008212620022d0007212720022d0006212820022f0004212920022d0003212a20022d0002212b20022f0000212c2002102f41c000102d2202450d1820022019370038200220143a00372002201c3a00362002201d3b00342002201e3a00332002201f3a0032200220203b0030200220213a002f200220223a002e200220233b002c200220243a002b200220253a002a200220263b0028200220273a0027200220283a0026200220293b00242002202a3a00232002202b3a00222002202c3b002020022005370018200220133a0017200220153a0016200220163b0014200220173a0013200220183a00122002201a3b0010200220073a000f200220063a000e200220083b000c200220093a000b2002200a3a000a2002200b3b00082002200c3a00072002200d3a00062002200e3b00042002200f3a0003200220103a0002200220123b0000200341b0076a20112004422088a7220710f9052002ad428080808080088420033502b80742208620032802b0072206ad841004024020032802b407450d002006102f0b2002102f02402007450d00200741d8006c2107201141306a210203400240200241746a280200450d00200241706a280200102f0b02402002280200450d002002417c6a280200102f0b200241d8006a2102200741a87f6a22070d000b0b02402004a7450d002011102f0b200041043a000041002106410121070c010b200041023a0000410121072013450d002010102f0b41012108410121000c1e0b024020022d000120022d0000410047720d0041eba1ca00ad4280808080f00084100122022900002104200229000821052002102f41f1a0ca00ad42808080808001841001220229000021192002290008211b2002102f2003201b3703c005200320193703b805200320053703b005200320043703a805200341033a00d803410121074101102d2202450d16200220032d00d8033a0000200341a8056aad42808080808004842002ad4280808080108410042002102f200041043a0000410121080c1d0b200041023a00000c1a0b200341c8076a200141196a290000370300200341c0076a200141116a290000370300200341b0076a41086a200141096a290000370300200320012900013703b007024020022d000120022d0000410047720d00200341d8066a200341b0076a108306200320032900d9063703b8082003200341d8066a41086a2800003600bf08024020032d00d80622024104470d00200342f3e885db96cddbb3203703e803200341e8036a200341b0076a10b101200041043a00000c1b0b200020023a0000200020032903b808370001200041086a20032800bf083600000c1a0b200041023a00000c190b41002108200141086a2802002106200141046a2802002109024020022d000120022d0000410047720d002001410c6a280200210741eba1ca00ad4280808080f00084100122022900002104200229000821052002102f41c4aac900ad4280808080d001841001220229000021192002290008211b2002102f2003201b3703c005200320193703b805200320053703b005200320043703a805200341203602b4072003200341a8056a3602b00720092007200341b0076a10aa0102402006450d002009102f0b200041043a0000410121070c1b0b200041023a0000410121072006450d1a2009102f0c1a0b024020022d000120022d0000410047720d0041eba1ca00ad4280808080f00084100122022900002104200229000821052002102f41f1a0ca00ad42808080808001841001220229000021192002290008211b2002102f2003201b3703c005200320193703b805200320053703b005200320043703a80541012107200341013a00d8034101102d2202450d13200220032d00d8033a0000200341a8056aad42808080808004842002ad4280808080108410042002102f200041043a0000410121080c1a0b200041023a00000c170b024020022d000120022d0000410047720d0041eba1ca00ad4280808080f00084100122022900002104200229000821052002102f41f1a0ca00ad42808080808001841001220229000021192002290008211b2002102f2003201b3703c005200320193703b805200320053703b005200320043703a805200341023a00d803410121074101102d2202450d12200220032d00d8033a0000200341a8056aad42808080808004842002ad4280808080108410042002102f200041043a0000410121080c190b200041023a00000c160b024020022d000120022d0000410047720d00200141046a280200210741eba1ca00ad4280808080f00084100122022900002104200229000821052002102f41afa0ca00ad4280808080e001841001220229000021192002290008211b2002102f2003201b3703c005200320193703b805200320053703b005200320043703a805200320073602b007200341a8056aad4280808080800484200341b0076aad4280808080c000841004200041043a00000c160b200041023a00000c150b410121070c010b200341a0066a200141246a28020036020020034180066a41186a2001411c6a29020037030020034180066a41106a200141146a29020037030020034180066a41086a2001410c6a2902003703002003200141046a2902003703800620022d00000d0220022d00014101470d02200241196a2d00002107200241186a2d00002106200241166a2f01002108200241156a2d00002109200241146a2d0000210a200241126a2f0100210b200241116a2d0000210c200241106a2d0000210d2002410e6a2f0100210e2002410d6a2d0000210f2002410c6a2d000021102002410a6a2f01002111200241096a2d00002112200241086a2d00002113200241066a2f01002114200241056a2d00002115200241046a2d00002116200241026a2f0100211720032002411a6a2901003703d804200320073a00d704200320063a00d604200320083b01d404200320093a00d3042003200a3a00d2042003200b3b01d0042003200c3a00cf042003200d3a00ce042003200e3b01cc042003200f3a00cb04200320103a00ca04200320113b01c804200320123a00c704200320133a00c604200320143b01c404200320153a00c304200320163a00c204200320173b01c004200341b0076a200341c0046a10b50320032d00b0074101470d03200341d8066a41176a2202200341b0076a41196a290000370000200341d8066a41106a2206200341c2076a290100370300200341e8036a41086a2207200341ba076a290100370300200341e8036a41106a22082006290300370300200341e8036a41176a22092002290000370000200320032901b2073703e803200320032d00b1073a00e004200341e0046a41186a2009290000370000200341e0046a41116a2008290300370000200341e0046a41096a2007290300370000200320032903e8033700e104200341b0076a41206a20034180066a41206a280200360200200341b0076a41186a20034180066a41186a290300370300200341b0076a41106a20034180066a41106a290300370300200341b0076a41086a20034180066a41086a29030037030020032003290380063703b007200341d8066a200341b0076a10bb014101210720032d00d8064101460d00200341d8066a41086a2d00002107200341d8066a41096a2f00002108200341e3066a2d00002109200341e4066a2d0000210a200341e5066a2f0000210b200341e7066a2d0000210c20062d00002106200341d8066a41116a2f0000210d200341eb066a2d0000210e200341ec066a2d0000210f200341ed066a2f0000211020022d00002102200341d8066a41186a2d0000211120032f00d906211220032d00db06211320032d00dc06211420032f00dd06211520032d00df0621162003200341d8066a41196a2900003703f005200320113a00ef05200320023a00ee05200320103b01ec052003200f3a00eb052003200e3a00ea052003200d3b01e805200320063a00e7052003200c3a00e6052003200b3b01e4052003200a3a00e305200320093a00e205200320083b01e005200320073a00df05200320163a00de05200320153b01dc05200320143a00db05200320133a00da05200320123b01d80541eba1ca00ad4280808080f00084100122022900002104200341d8036a41086a200241086a290000370300200320043703d8032002102f41a7cac800ad4280808080e0008410012202290000210420034180056a41086a200241086a29000037030020032004370380052002102f4120102d2202450d0e200220032903d805370000200241186a200341d8056a41186a290300370000200241106a200341d8056a41106a290300370000200241086a200341d8056a41086a2903003700002002ad4280808080800484100322072900002104200741086a2900002105200741106a2900002119200341a8056a41186a2206200741186a290000370300200341a8056a41106a22082019370300200341a8056a41086a22092005370300200320043703a8052007102f2002102f41c000102d2202450d0e200220032903d803370000200241086a200341d8036a41086a2903003700002002200329038005370010200241186a20034180056a41086a290300370000200220032903a805370020200241286a2009290300370000200241306a2008290300370000200241386a2006290300370000200341306a200241c00041c8e1ca004100410010b501200328023021062002102f4101210720064101470d0120004183103b0100200041086a410d360200200041046a41bcc7c800360200200041026a41033a0000410121080c150b200020073a0000410121080c140b200341d8056a200341e0046a412010ea06450d0241eba1ca00ad4280808080f00084100122022d000f210620022d000e210820022f000c210920022d000b210a20022d000a210b20022f0008210c20022d0007210d20022d0006210e20022f0004210f20022d0003211020022d0002211120022f000021122002102f41a1cac800ad4280808080e0008410012202290008210420022d0007211320022d0006211420022f0004211520022d0003211620022d0002211720022f000021182002102f4120102d2207450d0c200720032903c004370000200741186a200341c0046a41186a290300370000200741106a200341c0046a41106a290300370000200741086a200341c0046a41086a2903003700002007ad428080808080048410032202290018210520022d0017211a20022d0016211c20022f0014211d20022d0013211e20022d0012211f20022f0010212020022d000f212120022d000e212220022f000c212320022d000b212420022d000a212520022f0008212620022d0007212720022d0006212820022f0004212920022d0003212a20022d0002212b20022f0000212c2002102f2007102f41c000102d2202450d0c200220053700382002201a3a00372002201c3a00362002201d3b00342002201e3a00332002201f3a0032200220203b0030200220213a002f200220223a002e200220233b002c200220243a002b200220253a002a200220263b0028200220273a0027200220283a0026200220293b00242002202a3a00232002202b3a00222002202c3b002020022004370018200220133a0017200220143a0016200220153b0014200220163a0013200220173a0012200220183b0010200220063a000f200220083a000e200220093b000c2002200a3a000b2002200b3a000a2002200c3b00082002200d3a00072002200e3a00062002200f3b0004200220103a0003200220113a0002200220123b00004120102d2207450d0c200720032903d805370000200741186a200341d8056a41186a290300370000200741106a200341d8056a41106a290300370000200741086a200341d8056a41086a2903003700002002ad42808080808008842007ad428080808080048410042007102f2002102f41eba1ca00ad4280808080f0008410012202290000210420034180056a41086a200241086a29000037030020032004370380052002102f41a7cac800ad4280808080e00084100122022900002104200341a8056a41086a200241086a290000370300200320043703a8052002102f4120102d2202450d0c200220032903e004370000200241186a200341e0046a41186a290300370000200241106a200341e0046a41106a290300370000200241086a200341e0046a41086a2903003700002002ad4280808080800484100322072900002104200741086a2900002105200741106a2900002119200341b8086a41186a200741186a290000370300200341b8086a41106a2019370300200341b8086a41086a2005370300200320043703b8082007102f2002102f41c000102d2202450d0c2002200329038005370000200241086a20034180056a41086a2209290300370000200220032903a805370010200241186a200341a8056a41086a220a290300370000200220032903b808370020200241286a200341b8086a41086a2207290300370000200241306a200341b8086a41106a2206290300370000200241386a200341b8086a41186a2208290300370000200341b0076a200210a005024020032802dc072212410246220b0d002002ad428080808080088410050b200341d8066a41286a220c200341b0076a41286a280200360200200341d8066a41206a220d200341b0076a41206a2213290300370300200341d8066a41186a220e200341b0076a41186a290300370300200341d8066a41106a220f200341b0076a41106a290300370300200341d8066a41086a2210200341b0076a41086a2903003703002007200341b0076a41386a2903003703002006200341f0076a22142903003703002008200341f8076a2215290300370300200341b8086a41206a221120034180086a2216290300370300200320032903b0073703d806200320032903e0073703b808200a2010290300370300200341a8056a41106a200f290300370300200341a8056a41186a200e290300370300200341a8056a41206a220a200d290300370300200341a8056a41286a200c2802003602002009200729030037030020034180056a41106a200629030037030020034180056a41186a200829030037030020034180056a41206a22072011290300370300200320032903d8063703a805200320032903b808370380050240200b0d00200341e8036a41286a2206200341a8056a41286a280200360200200341e8036a41206a2208200a290300370300200341e8036a41186a2209200341a8056a41186a290300370300200341e8036a41106a220a200341a8056a41106a290300370300200341e8036a41086a220b200341a8056a41086a220c290300370300200341a8066a41086a220d20034180056a41086a220e290300370300200341a8066a41106a220f20034180056a41106a290300370300200341a8066a41186a221020034180056a41186a290300370300200341a8066a41206a22112007290300370300200320032903a8053703e80320032003290380053703a8062002102f200341b0076a41286a200628020036020020132008290300370300200341b0076a41186a2009290300370300200341b0076a41106a200a290300370300200341b0076a41086a200b290300370300200341e0076a20032903a806370300200341e8076a200d2903003703002014200f2903003703002015201029030037030020162011290300370300200320032903e8033703b007200320123602dc0741eba1ca00ad4280808080f00084100122022900002104200e200241086a29000037030020032004370380052002102f41a7cac800ad4280808080e00084100122022900002104200c200241086a290000370300200320043703a8052002102f4120102d2202450d0d200220032903d805370000200241186a200341d8056a41186a290300370000200241106a200341d8056a41106a290300370000200241086a200341d8056a41086a2903003700002002ad4280808080800484100322072900002104200741086a2900002105200741106a2900002119200341b8086a41186a200741186a290000370300200341b8086a41106a2019370300200341b8086a41086a2005370300200320043703b8082007102f2002102f41c000102d2202450d0d2002200329038005370000200241086a20034180056a41086a290300370000200220032903a805370010200241186a200341a8056a41086a290300370000200220032903b808370020200241286a200341b8086a41086a290300370000200241306a200341c8086a290300370000200241386a200341b8086a41186a290300370000200341c0003602dc06200320023602d806200341b0076a200341d8066a10c4032002102f200341d4076a280200450d0320032802d007102f0c030b2002102f0c020b200041023a00000c100b200041086a4108360200200041046a41d6c7c80036020041012107200041026a41013a000020004183103b0100410121080c110b200041043a00000c0e0b20012d0001210620032002411a6a2901003703c0052003200241026a2901003703a80520032002410a6a2901003703b0052003200241126a2901003703b80541012107024020022d00014101470d0020022d000041ff01710d00200341e8036a41186a200341a8056a41186a290300370300200341e8036a41106a200341a8056a41106a290300370300200341e8036a41086a200341a8056a41086a290300370300200320032903a8053703e803200341b0076a200341e8036a108103024020032802dc074102460d00200341b8086a41106a200341dc076a220241106a2901002204370300200341b8086a41186a200241186a2901002205370300200341d8066a41086a200241086a290100370300200341d8066a41106a2004370300200341d8066a41186a2005370300200341d8066a41206a2208200241206a290100370300200341d8066a41286a200241286a280100360200200320022901003703d80620032802d407210920032802d007213741eba1ca00ad4280808080f00084100122022d000f210a20022d000e210b20022f000c210c20022d000b210d20022d000a210e20022f0008210f20022d0007211020022d0006211120022f0004211220022d0003211320022d0002211420022f000021152002102f41c8abc900ad4280808080d0008410012202290008210420022d0007211620022d0006211720022f0004211820022d0003211a20022d0002211c20022f0000211d2002102f4120102d2207450d0a200720032903e006370000200741186a2008290300370000200741106a200341d8066a41186a290300370000200741086a200341d8066a41106a2903003700002007ad428080808080048410032202290018210520022d0017210820022d0016211e20022f0014211f20022d0013212020022d0012212120022f0010212220022d000f212320022d000e212420022f000c212520022d000b212620022d000a212720022f0008212820022d0007212920022d0006212a20022f0004212b20022d0003212c20022d0002212d20022f000021332002102f2007102f41c000102d2202450d0a20022005370038200220083a00372002201e3a00362002201f3b0034200220203a0033200220213a0032200220223b0030200220233a002f200220243a002e200220253b002c200220263a002b200220273a002a200220283b0028200220293a00272002202a3a00262002202b3b00242002202c3a00232002202d3a0022200220333b002020022004370018200220163a0017200220173a0016200220183b00142002201a3a00132002201c3a00122002201d3b00102002200a3a000f2002200b3a000e2002200c3b000c2002200d3a000b2002200e3a000a2002200f3b0008200220103a0007200220113a0006200220123b0004200220133a0003200220143a0002200220153b000002400240200641037122074103470d004101210742002104410121060c010b024002400240024020070e03000102000b410021060c020b410121060c010b410221060b200320063a00d8034101102d2207450d0b200720063a00004100210642808080801021040b2002ad428080808080088420042007ad841004024020060d002007102f0b2002102f02402009450d002037102f0b200041043a00000c0f0b200041086a410d360200200041046a41dec7c800360200200041026a41003a000020004183103b01000c0e0b200041023a0000410121080c0f0b41012107024020022d00014101470d0020022d000041ff01710d0020032002411a6a2901003703c0062003200241026a2901003703a80620032002410a6a2901003703b0062003200241126a2901003703b806200341b0076a200341a8066a108103024020032802dc074102460d00200341b8086a41086a2206200341dc076a220241086a290100370300200341b8086a41106a2208200241106a290100370300200341b8086a41186a2209200241186a290100370300200341b8086a41206a220a200241206a290100370300200341b8086a41286a220b200241286a280100360200200320022901003703b808200341b0076a41086a2903002104200341b0076a41186a290300210520032903b007211920032903c007211b20032802d007210720032802d807210c20032802d4072102200341e8036a41086a220d2006290300370300200341e8036a41106a22062008290300370300200341e8036a41186a22082009290300370300200341e8036a41206a2209200a290300370300200341e8036a41286a220a200b280200360200200341fc066a2002360200200341d8066a41286a200c360200200341d8066a41186a2005370300200320032903b8083703e803200320073602f8062003201b3703e806200320193703d806200320043703e006200341ac076a200a280200360200200341a4076a20092903003702002003419c076a200829030037020020034194076a20062903003702002003200d29030037028c07200320032903e803370284072003418c076a220610e805200610e90502402002450d002007102f0b200041043a00000c0e0b200041086a410d360200200041046a41dec7c800360200200041026a41003a000020004183103b01000c0d0b200041023a0000410121080c0e0b200041086a410d360200200041046a41dec7c800360200200041026a41003a000020004183103b01000c010b20004183103b0100200041086a410c360200200041046a41b0c7c800360200200041026a41043a00002002450d00200b102f0b41012108410021072009450d0b2006102f0c0b0b410021070b4100210a4101210202402009450d002006102f0b410021080c010b2009450d002006102f0b0240024002402007450d00200a450d012002102f0c010b20020d010b41012108200041013a00000240200328028c04450d00200328028804102f0b410021070c080b41eba1ca00ad4280808080f000842204100122072900002105200729000821192007102f41d2a0ca00ad4280808080a0018410012207290000211b2007290008212e2007102f2003202e3703c0052003201b3703b805200320193703b005200320053703a805200341286a200341a8056a4120109501200320083602e0052003200a3602dc05200320023602d805200341003a00e8052003200328022c410020032802281b3602e4052003419c046a220610e8052004100122022d000f210820022d000e210920022f000c210b20022d000b210c20022d000a210d20022f0008210e20022d0007210f20022d0006211020022f0004211120022d0003211220022d0002211320022f000021142002102f418bc6c800ad4280808080a0018410012202290008210420022d0007211520022d0006211620022f0004211720022d0003211820022d0002211a20022f0000211c2002102f4120102d2207450d0020072006290000370000200741186a200641186a290000370000200741106a200641106a290000370000200741086a200641086a2900003700002007ad428080808080048410032202290018210520022d0017211d20022d0016211e20022f0014211f20022d0013212020022d0012212120022f0010212220022d000f212320022d000e212420022f000c212520022d000b212620022d000a212720022f0008212820022d0007212920022d0006212a20022f0004212b20022d0003212c20022d0002212d20022f000021332002102f2007102f41c000102d220a450d00200a2005370038200a201d3a0037200a201e3a0036200a201f3b0034200a20203a0033200a20213a0032200a20223b0030200a20233a002f200a20243a002e200a20253b002c200a20263a002b200a20273a002a200a20283b0028200a20293a0027200a202a3a0026200a202b3b0024200a202c3a0023200a202d3a0022200a20333b0020200a2004370018200a20153a0017200a20163a0016200a20173b0014200a20183a0013200a201a3a0012200a201c3b0010200a20083a000f200a20093a000e200a200b3b000c200a200c3a000b200a200d3a000a200a200e3b0008200a200f3a0007200a20103a0006200a20113b0004200a20123a0003200a20133a0002200a20143b0000200341d8066a200a41c0001098040240024020032d00e8064102460d00200341b8086a41086a200341f5066a290000370300200341b8086a41106a200341fd066a290000370300200341b8086a41186a20034185076a29000037030020034180066a41086a20034196076a29010037030020034180066a41106a2003419e076a29010037030020034180066a41186a200341a6076a2901003703002003200341ed066a2900003703b80820032003418e076a290100370380062003418d076a2d0000210220032d00ec06210720032802dc06450d0120032802d806102f0c010b200320063602b40841eba1ca00ad4280808080f00084100122022900002104200341e0046a41086a2207200241086a290000370300200320043703e0042002102f41fbc5c800ad428080808080028410012202290000210420034180066a41086a2208200241086a29000037030020032004370380062002102f200341b8086a41086a2007290300370300200341d0086a2008290300370300200320032903e0043703b80820032003290380063703c808200341b0076a200341b8086a108801200341a8066a20032802b007220220032802b80710ad02024020032802b407450d002002102f0b200341c8086a210d0240024020032d00a8060d0041eba1ca00ad4280808080f00084100122022900002104200341e0046a41086a2207200241086a290000370300200320043703e0042002102f41fbc5c800ad428080808080028410012202290000210420034180066a41086a2208200241086a29000037030020032004370380062002102f200341b8086a41086a2007290300370300200d200329038006370000200d41086a2008290300370000200320032903e0043703b808200341b0076a200341b8086a10880120032802b007210720033502b80721044120102d2202450d0320022006290000370000200241186a200641186a290000370000200241106a200641106a290000370000200241086a200641086a29000037000020044220862007ad842002ad428080808080048410042002102f024020032802b407450d002007102f0b410021020c010b200341a8056a41186a200341c1066a290000370300200341a8056a41106a200341b9066a290000370300200341a8056a41086a200341b1066a290000370300200320032900a9063703a805200341c0046a200341a8056a109704200341b0076a20032802c004220e20032802c804220f109804024020032d00c0074102470d00200341003602e804200342013703e00420034180066a41146a41293602002003418c066a410b3602002003410736028409200341eba1ca00360280092003410b360284062003410a3602dc032003418bc6c8003602d8032003200341c0046a360290062003200341d8036a36028806200320034180096a360280062003200341e0046a36028c09200341b8086a41146a4103360200200342033702bc08200341cc90c4003602b808200320034180066a3602c8082003418c096a41d8dbc100200341b8086a103c1a20033502e80442208620033502e004841008024020032802e404450d0020032802e004102f0b20032802b408210741eba1ca00ad4280808080f00084100122022900002104200341e0046a41086a2206200241086a290000370300200320043703e0042002102f41fbc5c800ad428080808080028410012202290000210420034180066a41086a2208200241086a29000037030020032004370380062002102f200341b8086a41086a2006290300370300200d200329038006370000200d41086a2008290300370000200320032903e0043703b80820034180066a200341b8086a108801200328028006210620033502880621044120102d2202450d0320022007290000370000200241186a200741186a290000370000200241106a200741106a290000370000200241086a200741086a29000037000020044220862006ad842002ad428080808080048410042002102f0240200328028406450d002006102f0b024020032802c404450d0020032802c004102f0b410021020c010b200341b8086a200341b0076a41146a41c20010e8061a20032d00d908210220034180066a41106a200341b0076a41106a28020036020020034180066a41086a200341b0076a41086a290300220437030020034180066a41186a200341da086a410020024101461b360200200320032903b0072205370380062003200341b4086a36029406200341003602e804200342013703e0042004a72202200341e0046a10692005a721100240024020020d0020032802e404210820032802e80421070c010b2002410574210b410020032802e80422076b210920032802e404210820102102034002400240200820096a4120490d0020032802e00421060c010b200741206a22062007490d062008410174220c2006200c20064b1b220c4100480d060240024020080d00200c102d21060c010b20032802e0042008200c103121060b2006450d052003200c3602e404200320063602e004200c21080b200620076a220641086a200241086a290000370000200641106a200241106a290000370000200641186a200241186a2900003700002003200741206a22073602e80420062002290000370000200941606a2109200241206a2102200b41606a220b0d000b0b200328028c06210902400240200820076b4104490d0020032802e00421020c010b200741046a22022007490d04200841017422062002200620024b1b22064100480d040240024020080d002006102d21020c010b20032802e00420082006103121020b2002450d03200320063602e404200320023602e004200621080b2003200741046a22063602e804200220076a2009360000200320032d00900622093a00d803024020082006470d00200841016a22092008490d042008410174220b2009200b20094b1b22094100480d040240024020080d002009102d21020c010b200220082009103121020b2002450d03200320093602e404200320023602e00420032d00d80321090b2003200741056a3602e804200220066a20093a000020034180066a41146a200341e0046a10cd0220032802e4042102200fad422086200ead8420033502e80442208620032802e0042207ad84100402402002450d002007102f0b0240200328028406450d002010102f0b024020032802c404450d0020032802c004102f0b20032802b408210741eba1ca00ad4280808080f00084100122022900002104200341e0046a41086a2206200241086a290000370300200320043703e0042002102f41fbc5c800ad428080808080028410012202290000210420034180066a41086a2208200241086a29000037030020032004370380062002102f200341b8086a41086a2006290300370300200d200329038006370000200d41086a2008290300370000200320032903e0043703b808200341b0076a200341b8086a10880120032802b007210620033502b80721044120102d2202450d0220022007290000370000200241186a200741186a290000370000200241106a200741106a290000370000200241086a200741086a29000037000020044220862006ad842002ad428080808080048410042002102f024020032802b407450d002006102f0b20034180066a41086a200341a8056a41086a29030037030020034180066a41106a200341a8056a41106a29030037030020034180066a41186a200341a8056a41186a290300370300200320032903a80537038006410121020b410021070b200341d5076a20023a0000200341d6076a200329038006370100200341bd076a200341b8086a41086a290300370000200341c5076a200341b8086a41106a290300370000200341cd076a200341b8086a41186a290300370000200341de076a20034180066a41086a290300370100200341e6076a20034180066a41106a290300370100200341ee076a20034180066a41186a290300370100200320073a00b407200320032903b8083700b5072003200341d8056a3602b007200341003602e006200342013703d80620032802d805210220032802e0052207200341d8066a10690240024020070d0020032802dc06210820032802e00621070c010b2007410574210b410020032802e00622076b210920032802dc062108034002400240200820096a4120490d0020032802d80621060c010b200741206a22062007490d042008410174220c2006200c20064b1b220c4100480d040240024020080d00200c102d21060c010b20032802d8062008200c103121060b2006450d032003200c3602dc06200320063602d806200c21080b200620076a220641086a200241086a290000370000200641106a200241106a290000370000200641186a200241186a2900003700002003200741206a22073602e00620062002290000370000200941606a2109200241206a2102200b41606a220b0d000b0b20032802e405210902400240200820076b4104490d0020032802d80621020c010b200741046a22022007490d02200841017422062002200620024b1b22064100480d020240024020080d002006102d21020c010b20032802d80620082006103121020b2002450d01200320063602dc06200320023602d806200621080b2003200741046a22063602e006200220076a2009360000200320032d00e80522093a00d803024020082006470d00200841016a22092008490d022008410174220b2009200b20094b1b22094100480d020240024020080d002009102d21020c010b200220082009103121020b2002450d01200320093602dc06200320023602d80620032d00d80321090b2003200741056a3602e006200220066a20093a0000200341b0076a410472200341d8066a10ce0220032802dc062102200aad428080808080088420033502e00642208620032802d8062207ad84100402402002450d002007102f0b200a102f024020032802dc05450d0020032802d805102f0b0240200328028c04450d00200328028804102f0b200041043a000041012108410021070c070b1036000b1038000b41002106410021070b200341d5076a20063a0000200341d6076a200329038006370100200341bd076a200341b8086a41086a290300370000200341c5076a200341b8086a41106a290300370000200341cd076a200341b8086a41186a290300370000200341de076a20034180066a41086a290300370100200341e6076a20034180066a41106a290300370100200341ee076a20034180066a41186a290300370100200320073a00b4072003201a3602b007200320032903b8083700b507200341003602f003200342013703e803200341b0076a200341e8036a109502200341b0076a410472200341e8036a10ce0220032802ec0321072002ad428080808080088420033502f00342208620032802e8032206ad84100402402007450d002006102f0b2002102f024020032802fc06450d0020032802f806102f0b200041043a00000c010b024020032802fc06450d0020032802f806102f0b200041043a00000b41012107410121080c010b20004183103b0100200041086a2002360200200041046a2006360200200041026a20083a0000410121080b41012106410121000b024020012d0000417a6a2202410b4b0d00024002400240024020020e0c000404040404040104040203000b2007450d03200141086a280200450d03200141046a280200102f0c030b2008450d02200141086a280200450d02200141046a280200102f0c020b2006450d012001410c6a280200450d01200141086a280200102f0c010b2000450d002001410c6a280200450d00200141086a280200102f0b20034190096a24000bb60603027f037e057f230041b0016b2202240041eba1ca00ad4280808080f00084100122032900002104200241d8006a41086a200341086a290000370300200220043703582003102f41a7cac800ad4280808080e0008410012203290000210420024180016a41086a200341086a29000037030020022004370380012003102f02404120102d2203450d0020032001290000370000200341186a200141186a290000370000200341106a200141106a290000370000200341086a200141086a2900003700002003ad4280808080800484100322012900002104200141086a2900002105200141106a2900002106200241186a2207200141186a290000370300200241106a22082006370300200241086a2005370300200220043703002001102f2003102f41c000102d2203450d0020032002290358370000200320022903800137001020032002290300370020200341086a200241d8006a41086a2201290300370000200341186a20024180016a41086a2209290300370000200341286a200241086a220a290300370000200341306a2008290300370000200341386a20072903003700002002200310a0052009200a29030037030020024180016a41106a200829030037030020024180016a41186a200729030037030020024180016a41206a2208200241206a29030037030020024180016a41286a220a200241286a2802003602002001200241386a290300370300200241d8006a41106a200241c0006a290300370300200241d8006a41186a200241c8006a290300370300200241d8006a41206a220b200241d0006a2903003703002002200229030037038001200220022903303703580240200228022c22074102460d00200020022903800137030020002002290358370330200041286a200a280200360200200041206a2008290300370300200041186a20024180016a41186a290300370300200041106a20024180016a41106a290300370300200041086a2009290300370300200041386a2001290300370300200041c0006a200241d8006a41106a290300370300200041c8006a200241d8006a41186a290300370300200041d0006a200b2903003703000b2000200736022c2003102f200241b0016a24000f0b1036000b980605027f017e057f027e027f230041c0006b22022400419c9eca00ad4280808080f00084100122032900002104200241206a41086a200341086a290000370300200220043703202003102f4186ebc300ad4280808080800184100122032900002104200241086a200341086a290000370300200220043703002003102f200241306a41e7eac300410d109c040240024002400240024002402002280238220541206a2206417f4c0d0020022802302107024002402006450d002006102d2203450d062006410f4d0d01200621080c050b411021084110102d21030c030b200641017422094110200941104b1b220841004e0d010c050b103d000b200320062008103121030b2003450d010b20032002290320370000200341086a200241206a41086a2903003700000240024020084170714110460d00200821090c010b200841017422094120200941204b1b22094100480d0220032008200910312203450d010b20032002290300370010200341186a200241086a29030037000002400240200941606a2005490d00200921080c010b2005415f4b0d02200941017422082006200820064b1b22084100480d0220032009200810312203450d010b200341206a2007200510e8061a02402002280234450d002007102f0b4120102d2209450d0020092001290000370000200941186a200141186a290000370000200941106a200141106a290000370000200941086a200141086a2900003700002009ad4280808080800484100322012900002104200141086a290000210a200141106a290000210b200241186a2207200141186a290000370300200241106a220c200b370300200241086a220d200a370300200220043703002001102f2009102f200541c0006a210902400240200820066b411f4d0d00200821010c010b200841017422012009200120094b1b22014100480d0220032008200110312203450d010b200320066a22062002290300370000200641186a2007290300370000200641106a200c290300370000200641086a200d290300370000200020093602082000200136020420002003360200200241c0006a24000f0b1036000b1038000bd60201027f230041c0026b220324002003200236020c20032001360208200341106a2002ad4220862001ad84100210730240024020032802102201450d00200328021421042003200341186a2802003602ac02200320013602a802200341a0016a200341a8026a10ee02410121020240024020032d00a0014101470d004100210220034100360228200342013703202003410b3602b4022003200341086a3602b0022003200341206a3602bc02200341b4016a4101360200200342013702a401200341b885c7003602a0012003200341b0026a3602b001200341bc026a41d8dbc100200341a0016a103c1a200335022842208620033502208410082003280224450d012003280220102f0c010b200341206a200341a0016a41017241800110e8061a200041016a200341206a41800110e8061a0b200020023a00002004450d012001102f0c010b200041003a00000b200341c0026a24000ba70804027f017e087f027e230041c0006b22022400419c9eca00ad4280808080f00084100122032900002104200241206a41086a200341086a290000370300200220043703202003102f41ac9fc400ad4280808080800184100122032900002104200241086a200341086a290000370300200220043703002003102f200241306a41e7eac300410d109c040240024002400240024002402002280238220541206a2206417f4c0d002002280230210702400240024002402006450d002006102d2203450d082006410f4d0d01200621080c030b411021084110102d21030c010b200641017422094110200941104b1b22084100480d07200320062008103121030b2003450d050b20032002290320370000200341086a200241206a41086a2903003700000240024020084170714110460d00200821090c010b200841017422094120200941204b1b22094100480d0620032008200910312203450d050b20032002290300370010200341186a200241086a29030037000002400240200941606a2005490d002009210a0c010b2005415f4b0d06200941017422082006200820064b1b220a4100480d0620032009200a10312203450d050b200341206a2007200510e8061a02402002280234450d002007102f0b200141086a280200220941046a2208417f4c0d002008450d012008102d2207450d04200241003602082002200736020020022008360204200841034b0d032008410174220b4104200b41044b1b220b4100480d0520072008200b103121070c020b103d000b200241003602082002410136020020022008360204200841017422084104200841044b1b220b102d21070b2007450d012002200b360204200220073602000b20024104360208200720012800003600002001280204210b2009200210690240024020022802042201200228020822076b2009490d00200228020021080c010b200720096a22082007490d022001410174220c2008200c20084b1b220c4100480d020240024020010d00200c102d21080c010b20022802002001200c103121080b2008450d012002200c36020420022008360200200c21010b200820076a200b200910e8061a200720096aad4220862008ad84100322092900002104200941086a290000210d200941106a290000210e200241186a200941186a290000370300200241106a200e370300200241086a200d370300200220043703002009102f02402001450d002008102f0b200541c0006a210902400240200a20066b411f4d0d00200a21080c010b200a41017422082009200820094b1b22084100480d022003200a200810312203450d010b200320066a22062002290300370000200641186a200241186a290300370000200641106a200241106a290300370000200641086a200241086a290300370000200020093602082000200836020420002003360200200241c0006a24000f0b1036000b1038000b806a06077f017e027f017e0d7f027e230041a0046b2203240002400240024002400240024002400240024002400240024002400240024002400240024002400240024020012d00000e06000102030405000b200341e4016a4101360200200342013702d401200341b4d8c9003602d001200341043602ac01200341fcdbc9003602a8012003200341a8016a3602e001200341d0016a41e8d8c9001043000b2001412c6a2802002104200141286a2802002105200141246a280200210620012d0001210720034188016a41186a2001411a6a29000037030020034188016a41106a200141126a29000037030020034188016a41086a2001410a6a2900003703002003200141026a290000370388010240024020022d000120022d0000410047720d0020062004108701200341d0016a41186a4200370300200341d0016a41106a22024200370300200341d0016a41086a22084200370300200342003703d00141f2cbc700ad4280808080b0028410012209290000210a2008200941086a2900003703002003200a3703d0012009102f41ebdec700ad4280808080f0008410012209290000210a200341c8006a41086a220b200941086a2900003703002003200a3703482009102f20022003290348220a370300200341a8016a41086a2008290300370300200341a8016a41106a200a370300200341a8016a41186a200b290300370300200320032903d0013703a801200341d0016a200341a8016a412010aa02200341d0016a2006200420032802d0012208410120081b220920032902d401420020081b220a422088a71097052002280200210220032802d401210820032802d001210b20032802dc01220c200341e4016a2802002006200410980502402002450d00200c102f0b02402008450d00200b102f0b20034180046a41186a220220034188016a41186a29030037030020034180046a41106a220420034188016a41106a29030037030020034180046a41086a220820034188016a41086a29030037030020032003290388013703800402400240200741ff01710d00200341a8016a41186a4200370300200341a8016a41106a22074200370300200341a8016a41086a22024200370300200342003703a80141f2cbc700ad4280808080b0028410012204290000210d200341e8006a41086a2208200441086a2900003703002003200d3703682004102f20022008290300370300200320032903683703a80141fbd4c700ad4280808080d0008410012204290000210d200341f8006a41086a2208200441086a2900003703002003200d3703782004102f20072003290378220d370300200341286a41086a2002290300370300200341286a41106a200d370300200341286a41186a2008290300370300200320032903a801370328200341286aad428080808080048410050c010b200341a8016a41186a2002290300370300200341a8016a41106a2004290300370300200341a8016a41086a200829030037030020032003290380043703a801200341c8006a41186a4200370300200341c8006a41106a22084200370300200341c8006a41086a220442003703002003420037034841f2cbc700ad4280808080b0028410012207290000210d200341286a41086a2202200741086a2900003703002003200d3703282007102f200420022903003703002003200329032837034841fbd4c700ad4280808080d0008410012207290000210d2002200741086a2900003703002003200d3703282007102f20082003290328220d370300200341d0016a41086a2004290300370300200341d0016a41106a200d370300200341d0016a41186a2002290300370300200320032903483703d0014120102d2202450d07200220032903a801370000200241186a200341a8016a41186a290300370000200241106a200341a8016a41106a290300370000200241086a200341a8016a41086a290300370000200341d0016aad42808080808004842002ad428080808080048410042002102f0b0240200aa7450d002009102f0b02402005450d002006102f0b200041043a00000c010b200041023a00002005450d002006102f0b41012104410021050c110b200141046a280200210720032002411a6a2901003703c0012003200241026a2901003703a80120032002410a6a2901003703b0012003200241126a2901003703b8010240024020022d00014101470d0020022d000041ff01710d0020034188016a41186a200341a8016a41186a220429030037030020034188016a41106a200341a8016a41106a220529030037030020034188016a41086a200341a8016a41086a2208290300370300200320032903a80137038801200341d0016a41186a4200370300200341d0016a41106a22094200370300200341d0016a41086a22024200370300200342003703d00141f2cbc700ad4280808080b0028410012206290000210a2002200641086a2900003703002003200a3703d0012006102f41ebdec700ad4280808080f0008410012206290000210a200341c8006a41086a220b200641086a2900003703002003200a3703482006102f20092003290348220a370300200820022903003703002005200a3703002004200b290300370300200320032903d0013703a801200341d0016a200341a8016a412010aa0220032902d401420020032802d00122021b220a422088a741057421062002410120021b2208210202400340024020060d00410021050c020b4101210520034188016a2002460d01200641606a2106200220034188016a412010ea062104200241206a210220040d000b0b0240200aa7450d002008102f0b2005450d0141002104200341003602d801200342013703d0012007200341d0016a10910120032802d401210620034180046a41186a220820033502d80142208620032802d0012205ad841003220241186a29000037030020034180046a41106a2209200241106a29000037030020034180046a41086a220b200241086a29000037030020032002290000370380042002102f02402006450d002005102f0b200341d0016a200741b00210e8061a200341a8016a410d6a20034188016a41086a290300370000200341a8016a41156a20034188016a41106a290300370000200341a8016a411d6a20034188016a41186a29030037000041012105200341013a00ac0120032003290388013700ad01200341013a00a801200341c8006a200341d0016a200341a8016a108b0120032d00482102200341d0016a410d6a200b290300370000200341d0016a41156a2009290300370000200341d0016a411d6a2008290300370000200341f5016a20024104463a0000200341053a00d401200341073a00d00120032003290380043700d50141c8e1ca004100200341d0016a108c01200041043a00002007102f0c120b200041023a00000c100b20004183163b0100200041086a4109360200200041046a41d1d5c700360200200041026a41003a00000c0f0b200141086a2802002107200141046a280200210e2002411a6a290100210a200241196a2d00002104200241186a2d00002105200241166a2f01002108200241156a2d00002109200241146a2d0000210b200241126a2f0100210c200241116a2d0000210f200241106a2d000021102002410e6a2f010021112002410d6a2d000021122002410c6a2d000021132002410a6a2f01002114200241096a2d00002115200241086a2d00002116200241066a2f01002117200241056a2d00002118200241046a2d00002119200241026a2f0100211a41012106024020022d00000d0020022d000141014721060b2003200a370340200320043a003f200320053a003e200320083b013c200320093a003b2003200b3a003a2003200c3b01382003200f3a0037200320103a0036200320113b0134200320123a0033200320133a0032200320143b0130200320153a002f200320163a002e200320173b012c200320183a002b200320193a002a2003201a3b01280240024002400240024020060d0020034188016a41186a200341286a41186a29030037030020034188016a41106a200341286a41106a29030037030020034188016a41086a200341286a41086a2903003703002003200329032837038801200341d0016a41186a4200370300200341d0016a41106a22084200370300200341d0016a41086a22024200370300200342003703d00141f2cbc700ad4280808080b0028410012206290000210a2002200641086a2900003703002003200a3703d0012006102f41ebdec700ad4280808080f0008410012206290000210a200341c8006a41086a2204200641086a2900003703002003200a3703482006102f20082003290348220a370300200341a8016a41086a2002290300370300200341a8016a41106a200a370300200341a8016a41186a2004290300370300200320032903d0013703a801200341d0016a200341a8016a412010aa0220032902d401420020032802d00122021b220a422088a741057421062002410120021b2209210202400340024020060d00410021050c020b4101210520034188016a2002460d01200641606a2106200220034188016a412010ea062104200241206a210220040d000b0b0240200aa7450d002009102f0b2005450d08200341003602d801200342013703d0012007200341d0016a10910120032802d401210620034180046a41186a220420033502d80142208620032802d001220bad841003220241186a29000037030020034180046a41106a2205200241106a29000037030020034180046a41086a2209200241086a29000037030020032002290000370380042002102f02402006450d00200b102f0b200341d0016a41186a2004290300370300200341d0016a41106a2005290300370300200341d0016a41086a200929030037030020032003290380043703d00141f2cbc700ad4280808080b0028410012202290000210a200341e8006a41086a200241086a2900003703002003200a3703682002102f41f0abc800ad4280808080a0018410012202290000210a200341f8006a41086a200241086a2900003703002003200a3703782002102f4120102d2202450d07200220032903d001370000200241186a200341d0016a41186a290300370000200241106a200341d0016a41106a290300370000200241086a200341d0016a41086a2903003700002002ad428080808080048410032206290000210a200641086a290000210d200641106a290000211b200341c8006a41186a2204200641186a290000370300200341c8006a41106a2205201b370300200341c8006a41086a2209200d3703002003200a3703482006102f2002102f41c000102d2202450d0720022003290368370000200241086a200341e8006a41086a29030037000020022003290378370010200241186a200341f8006a41086a29030037000020022003290348370020200241286a2009290300370000200241306a2005290300370000200241386a2004290300370000200341186a200241c00041c8e1ca004100410010b501200328021821062002102f20064101460d09200e4102490d034200210d200341c8006a41186a220f4200370300200341c8006a41106a22064200370300200341c8006a41086a220242003703002003420037034841f2cbc700ad4280808080b00284220a10012205290000211b200341e8006a41086a2204200541086a2900003703002003201b3703682005102f20022004290300370300200320032903683703484188a3ca00ad4280808080d00184221b10012209290000211c200341f8006a41086a2205200941086a2900003703002003201c3703782009102f20062003290378221c370300200341a8016a41086a22092002290300370300200341a8016a41106a220b201c370300200341a8016a41186a220c2005290300370300200320032903483703a801200341106a200341a8016a41201095012003280214211120032802102112200f4200370300200642003703002002420037030020034200370348200a10012210290000211c2004201041086a2900003703002003201c3703682010102f2002200429030037030020032003290368370348201b10012210290000211c2005201041086a2900003703002003201c3703782010102f20062003290378221c37030020092002290300370300200b201c370300200c2005290300370300200320032903483703a801200341086a200341a8016a412010950120032802082110200328020c2113200f4200370300200642003703002002420037030020034200370348200a1001220f290000211c2004200f41086a2900003703002003201c370368200f102f2002200429030037030020032003290368370348201b10012204290000211b2005200441086a2900003703002003201b3703782004102f20062003290378221b37030020092002290300370300200b201b370300200c2005290300370300200320032903483703a801410121062003201341016a410120101b3602d001200341a8016aad4280808080800484200341d0016aad4280808080c000841004200341d0016a41186a220f4200370300200341d0016a41106a22104200370300200341d0016a41086a22044200370300200342003703d001200a10012205290000210a2004200541086a2900003703002003200a3703d0012005102f41e2dec700ad428080808090018410012205290000210a2002200541086a2900003703002003200a3703482005102f20082003290348370000200841086a200229030037000020092004290300370300200b2010290300370300200c200f290300370300200320032903d0013703a801200341d0016a200341a8016a412010aa0220032802d00122050d0141002102410021040c020b200041023a00000c100b20032902d401220d422088a72104200da72102200521060b200c20034180046a41186a290300370300200b20034180046a41106a290300370300200920034180046a41086a29030037030020032003290380043703a8010240024020042002460d002002210c0c010b02402002200da7220c470d00200241016a22042002490d0b200241017422052004200520044b1b220441ffffff3f712004470d0b200441057422044100480d0b0240024020020d002004102d21060c010b200620024105742004103121060b2006450d06200d42808080807083210d2004410576210c0b200d422088a721040b200620044105746a220220032903a801370000200241186a200341a8016a41186a2209290300370000200241106a200341a8016a41106a2205290300370000200241086a200341a8016a41086a2202290300370000200942003703002005420037030020024200370300200342003703a80141f2cbc700ad4280808080b0028410012209290000210a200341e8006a41086a220b200941086a2900003703002003200a3703682009102f2002200b290300370300200320032903683703a80141e2dec700ad428080808090018410012209290000210a200341f8006a41086a220b200941086a2900003703002003200a3703782009102f20052003290378220a370300200341c8006a41086a2002290300370300200341c8006a41106a200a370300200341c8006a41186a200b290300370300200320032903a8013703480240024020060d00200341c8006aad428080808080048410050c010b200341203602d4012003200341c8006a3602d0012006200441016a200341d0016a108301200c450d002006102f0b200341d0016a200741b00210e8061a200341a8016a41186a220620034180046a41186a290300370300200341a8016a41106a220420034180046a41106a290300370300200341a8016a41086a220520034180046a41086a29030037030020032003290380043703a80141f2cbc700ad4280808080b0028410012202290000210a200341e8006a41086a200241086a2900003703002003200a3703682002102f41f0abc800ad4280808080a0018410012202290000210a200341f8006a41086a200241086a2900003703002003200a3703782002102f4120102d2202450d04200220032903a801370000200241186a2006290300370000200241106a2004290300370000200241086a20052903003700002002ad428080808080048410032206290000210a200641086a290000210d200641106a290000211b200341c8006a41186a200641186a290000370300200341c8006a41106a201b370300200341c8006a41086a200d3703002003200a3703482006102f2002102f41c000102d2202450d0420022003290368370000200241086a200341e8006a41086a29030037000020022003290378370010200241186a200341f8006a41086a29030037000020022003290348370020200241286a200341c8006a41086a2206290300370000200241306a200341c8006a41106a290300370000200241386a200341c8006a41186a290300370000200341003602b001200342013703a801200341d0016a200341a8016a10910120032802ac0121042002ad428080808080088420033502b00142208620032802a8012205ad84100402402004450d002005102f0b2002102f200341d0016a108e01200341d0016a41186a22054200370300200341d0016a41106a22094200370300200341d0016a41086a22024200370300200342003703d001418de6c300ad4280808080e0008410012204290000210a2002200441086a2900003703002003200a3703d0012004102f419ce6c300ad4280808080e0008410012204290000210a2006200441086a2900003703002003200a3703482004102f20082003290348370000200841086a2006290300370000200341a8016a41086a2002290300370300200341a8016a41106a2009290300370300200341a8016a41186a2005290300370300200320032903d0013703a8012003200341a8016a412010950120032802042102200328020021044120102d2206450d042006200329038801370000200641186a20034188016a41186a290300370000200641106a20034188016a41106a290300370000200641086a20034188016a41086a290300370000200341ec016a4100360200200341dc016a428180808010370200200320024180e5086a4180e50820041b3602f001200342013702e401200320063602d8012003200e3602d40120032011410020121b22053602d001200341a8016a41186a220420034180046a41186a290300370300200341a8016a41106a220820034180046a41106a290300370300200341a8016a41086a220920034180046a41086a29030037030020032003290380043703a80141f2cbc700ad4280808080b0028410012202290000210a200341e8006a41086a200241086a2900003703002003200a3703682002102f41f2dec700ad4280808080e0008410012202290000210a200341f8006a41086a200241086a2900003703002003200a3703782002102f4120102d2202450d04200220032903a801370000200241186a2004290300370000200241106a2008290300370000200241086a20092903003700002002ad428080808080048410032204290000210a200441086a290000210d200441106a290000211b200341c8006a41186a200441186a290000370300200341c8006a41106a201b370300200341c8006a41086a200d3703002003200a3703482004102f2002102f41c000102d2202450d0420022003290368370000200241086a200341e8006a41086a29030037000020022003290378370010200241186a200341f8006a41086a29030037000020022003290348370020200241286a200341c8006a41086a290300370000200241306a200341c8006a41106a290300370000200241386a200341c8006a41186a290300370000200341c0003602ac01200320023602a801200341d0016a200341a8016a10bd052002102f2006102f200341dd016a20034188016a41086a290300370000200341e5016a20034188016a41106a290300370000200341ed016a20034188016a41186a290300370000200341f5016a200329038004370000200341fd016a20034180046a41086a29030037000020034185026a20034180046a41106a2903003700002003418d026a20034180046a41186a2903003700002003419c026a200e36020020034198026a2005360200200341003a00d401200341073a00d00120032003290388013700d501200341d0016a21020c010b200341d0016a41186a22044200370300200341d0016a41106a22054200370300200341d0016a41086a22024200370300200342003703d00141f2cbc700ad4280808080b0028410012206290000210a2002200641086a2900003703002003200a3703d0012006102f41ebdec700ad4280808080f0008410012206290000210a200341c8006a41086a2209200641086a2900003703002003200a3703482006102f20082003290348370000200841086a2009290300370000200341a8016a41086a2002290300370300200341a8016a41106a2005290300370300200341a8016a41186a2004290300370300200320032903d0013703a801200341286a200341a8016a412010aa0202400240200328022822060d00410021020c010b200329022c220a422088a72102200aa7450d002006102f0b200341d0016a200741b00210e8061a200341b4016a2002360200200341a8016a41086a4101360200200341003a00ac01200341013a00a801200341c8006a200341d0016a200341a8016a108b0120032d00482102200341dd016a20034180046a41086a290300370000200341e5016a20034190046a290300370000200341ed016a20034198046a290300370000200341043a00d401200341f5016a20024104463a0000200341073a00d00120032003290380043700d501200341d0016a21020b4100210641c8e1ca0041002002108c01200041043a00002007102f0c0d0b200141216a2d0000210e200141246a280200211a20034188016a41186a200141196a29000037030020034188016a41106a200141116a29000037030020034188016a41086a200141096a29000037030020032001290001370388012002411a6a290100210a200241196a2d00002104200241186a2d00002105200241166a2f01002107200241156a2d00002108200241146a2d00002109200241126a2f0100210b200241116a2d0000210c200241106a2d0000210f2002410e6a2f010021102002410d6a2d000021112002410c6a2d000021122002410a6a2f01002113200241096a2d00002114200241086a2d00002115200241066a2f01002116200241056a2d00002117200241046a2d00002118200241026a2f0100211941012106024020022d00000d0020022d000141014721060b2003200a3701e801200320043a00e701200320053a00e601200320073b01e401200320083a00e301200320093a00e2012003200b3b01e0012003200c3a00df012003200f3a00de01200320103b01dc01200320113a00db01200320123a00da01200320133b01d801200320143a00d701200320153a00d601200320163b01d401200320173a00d301200320183a00d201200320193b01d00120060d0420034180046a41186a200341d0016a41186a220629010037030020034180046a41106a200341d0016a41106a220729010037030020034180046a41086a200341d0016a41086a2202290100370300200320032901d00137038004200642003703002007420037030020024200370300200342003703d00141f2cbc700ad4280808080b0028410012206290000210a2002200641086a2900003703002003200a3703d0012006102f41ebdec700ad4280808080f0008410012206290000210a200341c8006a41086a2204200641086a2900003703002003200a3703482006102f20072003290348220a370300200341a8016a41086a2002290300370300200341a8016a41106a200a370300200341a8016a41186a2004290300370300200320032903d0013703a801200341d0016a200341a8016a412010aa0220032902d401420020032802d00122021b220a422088a741057421062002410120021b2208210202400340024020060d00410021050c020b4101210520034180046a2002460d01200641606a2106200220034180046a412010ea062104200241206a210220040d000b0b0240200aa7450d002008102f0b024002402005450d00200341d0016a20034188016a10c605024020032802d8012209450d00200341e8016a280200210b200341e4016a280200211020032802dc01210c20032802d001201a460d02410a210241a7d5c7002106410321040c0c0b20004183163b0100200041086a410f360200200041046a41b1d5c700360200200041026a41023a00000c0c0b20004183163b0100200041086a4109360200200041046a41d1d5c700360200200041026a41003a00000c0b0b200341f0016a2802002114200341ec016a280200210f20032802d40121134100210641002104410021120240200341e0016a2802002211450d002011410574210541002104200921020240034020034180046a2002460d012004200220034180046a412010ea0622084100476a21042008450d01200241206a2102200541606a22050d000b410021120c010b410121120b410021020240200f450d00200f410574210541002106201021020240034020034180046a2002460d012006200220034180046a412010ea0622084100476a21062008450d01200241206a2102200541606a22050d000b410021020c010b410121020b024002400240200e41ff01710d002002450d010c0b0b20120d0a200341286a41186a220820034180046a41186a290300370300200341286a41106a221220034180046a41106a290300370300200341286a41086a221520034180046a41086a2903003703002003200329038004370328024002402011200c460d00200c21052011210c0c010b200c41016a2204200c490d09200c41017422052004200520044b1b220441ffffff3f712004470d09200441057422044100480d0902400240200c0d002004102d21090c010b2009200c4105742004103121090b2009450d04200441057621050b2009200c4105746a22042003290328370000200441186a2008290300370000200441106a2012290300370000200441086a2015290300370000201141016a21112002450d01200f20064d0d072010200f417f6a220f4105746a2202290000210a2002290008210d2002290010211b201020064105746a220641186a200241186a2900003700002006201b3700102006200d3700082006200a3700000c010b200341c8006a41186a220620034180046a41186a290300370300200341c8006a41106a220520034180046a41106a290300370300200341c8006a41086a220820034180046a41086a290300370300200320032903800437034802400240200f200b460d00200b2115200f210b0c010b200b41016a2202200b490d08200b41017422152002201520024b1b220241ffffff3f712002470d08200241057422024100480d0802400240200b0d002002102d21100c010b2010200b4105742002103121100b2010450d03200241057621150b2010200b4105746a22022003290348370000200241186a2006290300370000200241106a2005290300370000200241086a2008290300370000200f41016a210f02402012450d00201120044d0d0920092011417f6a22114105746a2202290000210a2002290008210d2002290010211b200920044105746a220641186a200241186a2900003700002006201b3700102006200d3700082006200a3700000b200c21052015210b0b200341f5016a200329038801370000200341dd016a20034180046a41086a290300370000200341e5016a20034180046a41106a290300370000200341ed016a20034180046a41186a290300370000200341fd016a20034188016a41086a29030037000020034185026a20034188016a41106a2903003700002003418d026a20034188016a41186a290300370000200341013a00d401200341073a00d00120032003290380043700d5012003419c026a200f36020020034198026a201136020020034195026a200e3a00004100210241c8e1ca004100200341d0016a108c01200341d0016a41186a22084200370300200341d0016a41106a220c4200370300200341d0016a41086a22064200370300200342003703d00141f2cbc700ad4280808080b0028410012204290000210a2006200441086a2900003703002003200a3703d0012004102f41ebdec700ad4280808080f0008410012204290000210a200341c8006a41086a2212200441086a2900003703002003200a3703482004102f20072003290348370000200741086a2012290300370000200341a8016a41086a2006290300370300200341a8016a41106a200c290300370300200341a8016a41186a2008290300370300200320032903d0013703a801200341286a200341a8016a412010aa02024020032802282206450d00200329022c220a422088a72102200aa7450d002006102f0b02400240201120134f22060d0041002002200f6b2204200420024b1b2013490d00200341ec016a200f360200200341d0016a41186a200b360200200341d0016a41106a2011360200200341dc016a2005360200200320143602f001200320103602e401200320093602d801200320133602d4012003201a3602d00141f2cbc700ad4280808080b0028410012202290000210a200341e8006a41086a200241086a2900003703002003200a3703682002102f41f2dec700ad4280808080e0008410012202290000210a200341f8006a41086a200241086a2900003703002003200a3703782002102f4120102d2202450d032002200329038801370000200241186a20034188016a41186a290300370000200241106a20034188016a41106a290300370000200241086a20034188016a41086a2903003700002002ad428080808080048410032206290000210a200641086a290000210d200641106a290000211b200341a8016a41186a200641186a290000370300200341a8016a41106a201b370300200341a8016a41086a200d3703002003200a3703a8012006102f2002102f41c000102d2202450d0320022003290368370000200241086a200341e8006a41086a29030037000020022003290378370010200241186a200341f8006a41086a290300370000200220032903a801370020200241286a200341a8016a41086a290300370000200241306a200341b8016a290300370000200241386a200341a8016a41186a290300370000200341c0003602ac01200320023602a801200341d0016a200341a8016a10bd052002102f02402005450d002009102f0b200b450d012010102f0c010b200341ec016a200f360200200341d0016a41186a200b360200200341d0016a41106a2011360200200341dc016a2005360200200320143602f001200320103602e401200320093602d8012003201a3602d001200320133602d401200341a8016a41186a20034188016a41186a290300370300200341a8016a41106a20034188016a41106a290300370300200341a8016a41086a20034188016a41086a29030037030020032003290388013703a80120062002200341d0016a200341a8016a10c7050b200041043a00000c0a0b200141246a280200210620034198046a200141196a29000037030020034190046a200141116a29000037030020034188046a200141096a2900003703002003200129000137038004024002400240024020022d00000d0020022d00014101470d00200341d0016a20034180046a10c605024020032802d8012207450d00200341d0016a41186a22022802002109200341e4016a280200210f20032802dc01210b20032802d0012006460d02410a210241a7d5c7002106410321040c030b20004183163b0100200041086a410f360200200041046a41b1d5c700360200200041026a41023a00000c0d0b200041023a00000c0c0b200341d0016a41206a2802002111200341ec016a2802002112200341d0016a41106a220c280200211020032802d401211320024200370300200c420037030041082102200341d0016a41086a22044200370300200342003703d001418de6c300ad4280808080e0008410012205290000210a2004200541086a2900003703002003200a3703d0012005102f419ce6c300ad4280808080e0008410012205290000210a200341c8006a41086a2208200541086a2900003703002003200a3703482005102f200c2003290348220a370300200341a8016a41086a2004290300370300200341a8016a41106a200a370300200341a8016a41186a2008290300370300200320032903d0013703a801200341206a200341a8016a41201095012003280224410020032802201b20114f0d014180d5c7002106410621040b20004183163b0100200041086a2002360200200041046a2006360200200041026a20043a00000240200b450d002007102f0b2009450d0a200f102f0c0a0b200341a8016a41186a22084200370300200341a8016a41106a22044200370300200341a8016a41086a22024200370300200342003703a80141f2cbc700ad4280808080b0028410012205290000210a200341e8006a41086a2214200541086a2900003703002003200a3703682005102f20022014290300370300200320032903683703a80141fbd4c700ad4280808080d0008410012205290000210a200341f8006a41086a2214200541086a2900003703002003200a3703782005102f20042003290378220a370300200341c8006a41086a2002290300370300200341c8006a41106a200a370300200341c8006a41186a2014290300370300200320032903a801370348200341d0016a200341c8006a412010ad0220032d00d00121052008200341e9016a2900003703002004200341e1016a2900003703002002200341d9016a290000370300200320032900d1013703a8010240024020054101460d00410021080c010b200341286a41186a2008290300220a370300200341286a41106a2004290300220d370300200341286a41086a2002290300221b370300200320032903a801221c370328200341d0016a41186a200a370300200341d0016a41106a200d370300200341d0016a41086a201b3703002003201c3703d00120104105742104200721020340024020040d00410021080c020b41012108200341d0016a2002460d01200441606a21042002200341d0016a412010ea062105200241206a210220050d000b0b200341d0016a41186a22054200370300200341d0016a41106a22144200370300200341d0016a41086a22024200370300200342003703d00141f2cbc700ad4280808080b0028410012204290000210a2002200441086a2900003703002003200a3703d0012004102f41ebdec700ad4280808080f0008410012204290000210a200341c8006a41086a2215200441086a2900003703002003200a3703482004102f200c2003290348370000200c41086a2015290300370000200341a8016a41086a2002290300370300200341a8016a41106a2014290300370300200341a8016a41186a2005290300370300200320032903d0013703a80120034188016a200341a8016a412010aa020240024020032802880122040d00410021020c010b200329028c01220a422088a72102200aa7450d002004102f0b200341dd016a20034180046a41086a2204290300370000200341e5016a20034180046a41106a2205290300370000200341ed016a20034180046a41186a220c290300370000200341fc016a41002002201220106a6b221420081b20126a360200200341f8016a2014410020081b20106a2208360200200341063a00d401200341073a00d00120032003290380043700d50141c8e1ca004100200341d0016a108c01200341ec016a2012360200200341d0016a41186a2009360200200341d0016a41106a2010360200200341dc016a200b360200200320113602f0012003200f3602e401200320073602d801200320063602d001200320133602d401200341a8016a41186a200c290300370300200341a8016a41106a2005290300370300200341a8016a41086a200429030037030020032003290380043703a801200820134f2002200341d0016a200341a8016a10c705200041043a00000c090b1036000b20004183163b0100200041086a4109360200200041046a41d1d5c700360200200041026a41003a00000c080b20004183163b0100200041086a4111360200200041046a41c0d5c700360200200041026a41013a00000c070b200041023a00000c050b419cc3ca002006200f103b000b1038000b419cc3ca0020042011103b000b410d2102419ad5c7002106410421040b20004183163b0100200041086a2002360200200041046a2006360200200041026a20043a00000240200c450d002009102f0b200b450d002010102f0b41012105410121040c030b2007108e012007102f410021060b41012105410121040c020b2007108e012007102f41002104410121050b410121060b024020012d0000417f6a220241024b0d0002400240024020020e03000102000b2005450d02200141286a280200450d02200141246a280200102f0c020b2004450d01200141046a2802002202108e012002102f0c010b2006450d00200141086a2802002202108e012002102f0b200341a0046a24000b8e6906097f017e017f017e0c7f027e230041a0046b2203240002400240024002400240024002400240024002400240024002400240024002400240024002400240024020012d00000e06000102030405000b200341e4016a4101360200200342013702d401200341b4d8c9003602d001200341043602ac01200341fcdbc9003602a8012003200341a8016a3602e001200341d0016a41e8d8c9001043000b2001412c6a2802002104200141286a2802002105200141246a280200210620012d0001210720034188016a41186a22082001411a6a29000037030020034188016a41106a2209200141126a29000037030020034188016a41086a220a2001410a6a2900003703002003200141026a290000370388010240024020022d000120022d0000410047720d0020062004108701200341d0016a41186a4200370300200341d0016a41106a220b4200370300200341d0016a41086a22024200370300200342003703d00141dfcbc700ad4280808080b00284220c1001220d290000210e2002200d41086a2900003703002003200e3703d001200d102f41ebdec700ad4280808080f000841001220d290000210e200341c8006a41086a220f200d41086a2900003703002003200e370348200d102f200b2003290348220e370300200341a8016a41086a2002290300370300200341a8016a41106a200e370300200341a8016a41186a200f290300370300200320032903d0013703a801200341d0016a200341a8016a412010aa022006200420032802d0012202410120021b220d20032902d401420020021b220e422088a7108a0320034180046a41186a200829030037030020034180046a41106a200929030037030020034180046a41086a200a29030037030020032003290388013703800402400240200741ff01710d00200341a8016a41186a4200370300200341a8016a41106a22074200370300200341a8016a41086a22024200370300200342003703a801200c10012204290000210c200341e8006a41086a2208200441086a2900003703002003200c3703682004102f20022008290300370300200320032903683703a80141fbd4c700ad4280808080d0008410012204290000210c200341f8006a41086a2208200441086a2900003703002003200c3703782004102f20072003290378220c370300200341286a41086a2002290300370300200341286a41106a200c370300200341286a41186a2008290300370300200320032903a801370328200341286aad428080808080048410050c010b200341a8016a41186a220820034180046a41186a290300370300200341a8016a41106a220920034180046a41106a290300370300200341a8016a41086a220a20034180046a41086a29030037030020032003290380043703a801200341c8006a41186a4200370300200341c8006a41106a220b4200370300200341c8006a41086a2204420037030020034200370348200c10012207290000210c200341286a41086a2202200741086a2900003703002003200c3703282007102f200420022903003703002003200329032837034841fbd4c700ad4280808080d0008410012207290000210c2002200741086a2900003703002003200c3703282007102f200b2003290328220c370300200341d0016a41086a2004290300370300200341d0016a41106a200c370300200341d0016a41186a2002290300370300200320032903483703d0014120102d2202450d07200220032903a801370000200241186a2008290300370000200241106a2009290300370000200241086a200a290300370000200341d0016aad42808080808004842002ad428080808080048410042002102f0b0240200ea7450d00200d102f0b02402005450d002006102f0b200041043a00000c010b200041023a00002005450d002006102f0b41012105410021040c110b200141046a280200210720032002411a6a2901003703c0012003200241026a2901003703a80120032002410a6a2901003703b0012003200241126a2901003703b8010240024020022d00014101470d0020022d000041ff01710d0020034188016a41186a200341a8016a41186a220529030037030020034188016a41106a200341a8016a41106a220429030037030020034188016a41086a200341a8016a41086a2208290300370300200320032903a80137038801200341d0016a41186a4200370300200341d0016a41106a22094200370300200341d0016a41086a22024200370300200342003703d00141dfcbc700ad4280808080b0028410012206290000210c2002200641086a2900003703002003200c3703d0012006102f41ebdec700ad4280808080f0008410012206290000210c200341c8006a41086a220a200641086a2900003703002003200c3703482006102f20092003290348220c370300200820022903003703002004200c3703002005200a290300370300200320032903d0013703a801200341d0016a200341a8016a412010aa0220032902d401420020032802d00122021b220c422088a741057421062002410120021b2208210202400340024020060d00410021040c020b4101210420034188016a2002460d01200641606a2106200220034188016a412010ea062105200241206a210220050d000b0b0240200ca7450d002008102f0b2004450d0141002105200341003602d801200342013703d0012007200341d0016a10910120032802d401210620034180046a41186a220820033502d80142208620032802d0012204ad841003220241186a29000037030020034180046a41106a2209200241106a29000037030020034180046a41086a220a200241086a29000037030020032002290000370380042002102f02402006450d002004102f0b200341d0016a200741b00210e8061a200341a8016a410d6a20034188016a41086a290300370000200341a8016a41156a20034188016a41106a290300370000200341a8016a411d6a20034188016a41186a29030037000041012104200341013a00ac0120032003290388013700ad01200341023a00a801200341c8006a200341d0016a200341a8016a108b0120032d00482102200341d0016a410d6a200a290300370000200341d0016a41156a2009290300370000200341d0016a411d6a2008290300370000200341f5016a20024104463a0000200341053a00d401200341083a00d00120032003290380043700d50141c8e1ca004100200341d0016a108c01200041043a00002007102f0c120b200041023a00000c100b20004183183b0100200041086a4109360200200041046a41d1d5c700360200200041026a41003a00000c0f0b200141086a2802002107200141046a28020021102002411a6a290100210c200241196a2d00002105200241186a2d00002104200241166a2f01002108200241156a2d00002109200241146a2d0000210a200241126a2f0100210d200241116a2d0000210b200241106a2d0000210f2002410e6a2f010021112002410d6a2d000021122002410c6a2d000021132002410a6a2f01002114200241096a2d00002115200241086a2d00002116200241066a2f01002117200241056a2d00002118200241046a2d00002119200241026a2f0100211a41012106024020022d00000d0020022d000141014721060b2003200c370340200320053a003f200320043a003e200320083b013c200320093a003b2003200a3a003a2003200d3b01382003200b3a00372003200f3a0036200320113b0134200320123a0033200320133a0032200320143b0130200320153a002f200320163a002e200320173b012c200320183a002b200320193a002a2003201a3b01280240024002400240024020060d0020034188016a41186a200341286a41186a29030037030020034188016a41106a200341286a41106a29030037030020034188016a41086a200341286a41086a2903003703002003200329032837038801200341d0016a41186a4200370300200341d0016a41106a22084200370300200341d0016a41086a22024200370300200342003703d00141dfcbc700ad4280808080b0028410012206290000210c2002200641086a2900003703002003200c3703d0012006102f41ebdec700ad4280808080f0008410012206290000210c200341c8006a41086a2205200641086a2900003703002003200c3703482006102f20082003290348220c370300200341a8016a41086a2002290300370300200341a8016a41106a200c370300200341a8016a41186a2005290300370300200320032903d0013703a801200341d0016a200341a8016a412010aa0220032902d401420020032802d00122021b220c422088a741057421062002410120021b2209210202400340024020060d00410021040c020b4101210420034188016a2002460d01200641606a2106200220034188016a412010ea062105200241206a210220050d000b0b0240200ca7450d002009102f0b2004450d08200341003602d801200342013703d0012007200341d0016a10910120032802d401210620034180046a41186a220520033502d80142208620032802d001220aad841003220241186a29000037030020034180046a41106a2204200241106a29000037030020034180046a41086a2209200241086a29000037030020032002290000370380042002102f02402006450d00200a102f0b200341d0016a41186a2005290300370300200341d0016a41106a2004290300370300200341d0016a41086a200929030037030020032003290380043703d00141dfcbc700ad4280808080b0028410012202290000210c200341e8006a41086a200241086a2900003703002003200c3703682002102f41f0abc800ad4280808080a0018410012202290000210c200341f8006a41086a200241086a2900003703002003200c3703782002102f4120102d2202450d07200220032903d001370000200241186a200341d0016a41186a290300370000200241106a200341d0016a41106a290300370000200241086a200341d0016a41086a2903003700002002ad428080808080048410032206290000210c200641086a290000210e200641106a290000211b200341c8006a41186a2205200641186a290000370300200341c8006a41106a2204201b370300200341c8006a41086a2209200e3703002003200c3703482006102f2002102f41c000102d2202450d0720022003290368370000200241086a200341e8006a41086a29030037000020022003290378370010200241186a200341f8006a41086a29030037000020022003290348370020200241286a2009290300370000200241306a2004290300370000200241386a2005290300370000200341186a200241c00041c8e1ca004100410010b501200328021821062002102f20064101460d0920104102490d034200210e200341c8006a41186a220b4200370300200341c8006a41106a22064200370300200341c8006a41086a220242003703002003420037034841dfcbc700ad4280808080b00284220c10012204290000211b200341e8006a41086a2205200441086a2900003703002003201b3703682004102f20022005290300370300200320032903683703484188a3ca00ad4280808080d00184221b10012209290000211c200341f8006a41086a2204200941086a2900003703002003201c3703782009102f20062003290378221c370300200341a8016a41086a22092002290300370300200341a8016a41106a220a201c370300200341a8016a41186a220d2004290300370300200320032903483703a801200341106a200341a8016a41201095012003280214211120032802102112200b4200370300200642003703002002420037030020034200370348200c1001220f290000211c2005200f41086a2900003703002003201c370368200f102f2002200529030037030020032003290368370348201b1001220f290000211c2004200f41086a2900003703002003201c370378200f102f20062003290378221c37030020092002290300370300200a201c370300200d2004290300370300200320032903483703a801200341086a200341a8016a41201095012003280208210f200328020c2113200b4200370300200642003703002002420037030020034200370348200c1001220b290000211c2005200b41086a2900003703002003201c370368200b102f2002200529030037030020032003290368370348201b10012205290000211b2004200541086a2900003703002003201b3703782005102f20062003290378221b37030020092002290300370300200a201b370300200d2004290300370300200320032903483703a801410121062003201341016a4101200f1b3602d001200341a8016aad4280808080800484200341d0016aad4280808080c000841004200341d0016a41186a220b4200370300200341d0016a41106a220f4200370300200341d0016a41086a22054200370300200342003703d001200c10012204290000210c2005200441086a2900003703002003200c3703d0012004102f41e2dec700ad428080808090018410012204290000210c2002200441086a2900003703002003200c3703482004102f20082003290348370000200841086a200229030037000020092005290300370300200a200f290300370300200d200b290300370300200320032903d0013703a801200341d0016a200341a8016a412010aa0220032802d00122040d0141002102410021050c020b200041023a00000c100b20032902d401220e422088a72105200ea72102200421060b200d20034180046a41186a290300370300200a20034180046a41106a290300370300200920034180046a41086a29030037030020032003290380043703a8010240024020052002460d002002210d0c010b02402002200ea7220d470d00200241016a22052002490d0b200241017422042005200420054b1b220541ffffff3f712005470d0b200541057422054100480d0b0240024020020d002005102d21060c010b200620024105742005103121060b2006450d06200e42808080807083210e2005410576210d0b200e422088a721050b200620054105746a220220032903a801370000200241186a200341a8016a41186a2209290300370000200241106a200341a8016a41106a2204290300370000200241086a200341a8016a41086a2202290300370000200942003703002004420037030020024200370300200342003703a80141dfcbc700ad4280808080b0028410012209290000210c200341e8006a41086a220a200941086a2900003703002003200c3703682009102f2002200a290300370300200320032903683703a80141e2dec700ad428080808090018410012209290000210c200341f8006a41086a220a200941086a2900003703002003200c3703782009102f20042003290378220c370300200341c8006a41086a2002290300370300200341c8006a41106a200c370300200341c8006a41186a200a290300370300200320032903a8013703480240024020060d00200341c8006aad428080808080048410050c010b200341203602d4012003200341c8006a3602d0012006200541016a200341d0016a108301200d450d002006102f0b200341d0016a200741b00210e8061a200341a8016a41186a220620034180046a41186a290300370300200341a8016a41106a220520034180046a41106a290300370300200341a8016a41086a220420034180046a41086a29030037030020032003290380043703a80141dfcbc700ad4280808080b0028410012202290000210c200341e8006a41086a200241086a2900003703002003200c3703682002102f41f0abc800ad4280808080a0018410012202290000210c200341f8006a41086a200241086a2900003703002003200c3703782002102f4120102d2202450d04200220032903a801370000200241186a2006290300370000200241106a2005290300370000200241086a20042903003700002002ad428080808080048410032206290000210c200641086a290000210e200641106a290000211b200341c8006a41186a200641186a290000370300200341c8006a41106a201b370300200341c8006a41086a200e3703002003200c3703482006102f2002102f41c000102d2202450d0420022003290368370000200241086a200341e8006a41086a29030037000020022003290378370010200241186a200341f8006a41086a29030037000020022003290348370020200241286a200341c8006a41086a2206290300370000200241306a200341c8006a41106a290300370000200241386a200341c8006a41186a290300370000200341003602b001200342013703a801200341d0016a200341a8016a10910120032802ac0121052002ad428080808080088420033502b00142208620032802a8012204ad84100402402005450d002004102f0b2002102f200341d0016a108e01200341d0016a41186a22044200370300200341d0016a41106a22094200370300200341d0016a41086a22024200370300200342003703d001418de6c300ad4280808080e0008410012205290000210c2002200541086a2900003703002003200c3703d0012005102f419ce6c300ad4280808080e0008410012205290000210c2006200541086a2900003703002003200c3703482005102f20082003290348370000200841086a2006290300370000200341a8016a41086a2002290300370300200341a8016a41106a2009290300370300200341a8016a41186a2004290300370300200320032903d0013703a8012003200341a8016a412010950120032802042102200328020021054120102d2206450d042006200329038801370000200641186a20034188016a41186a290300370000200641106a20034188016a41106a290300370000200641086a20034188016a41086a290300370000200341ec016a4100360200200341dc016a428180808010370200200320024180e5086a4180e50820051b3602f001200342013702e401200320063602d801200320103602d40120032011410020121b22043602d001200341a8016a41186a220520034180046a41186a290300370300200341a8016a41106a220820034180046a41106a290300370300200341a8016a41086a220920034180046a41086a29030037030020032003290380043703a80141dfcbc700ad4280808080b0028410012202290000210c200341e8006a41086a200241086a2900003703002003200c3703682002102f41f2dec700ad4280808080e0008410012202290000210c200341f8006a41086a200241086a2900003703002003200c3703782002102f4120102d2202450d04200220032903a801370000200241186a2005290300370000200241106a2008290300370000200241086a20092903003700002002ad428080808080048410032205290000210c200541086a290000210e200541106a290000211b200341c8006a41186a200541186a290000370300200341c8006a41106a201b370300200341c8006a41086a200e3703002003200c3703482005102f2002102f41c000102d2202450d0420022003290368370000200241086a200341e8006a41086a29030037000020022003290378370010200241186a200341f8006a41086a29030037000020022003290348370020200241286a200341c8006a41086a290300370000200241306a200341c8006a41106a290300370000200241386a200341c8006a41186a290300370000200341c0003602ac01200320023602a801200341d0016a200341a8016a10bd052002102f2006102f200341dd016a20034188016a41086a290300370000200341e5016a20034188016a41106a290300370000200341ed016a20034188016a41186a290300370000200341f5016a200329038004370000200341fd016a20034180046a41086a29030037000020034185026a20034180046a41106a2903003700002003418d026a20034180046a41186a2903003700002003419c026a201036020020034198026a2004360200200341003a00d401200341083a00d00120032003290388013700d501200341d0016a21020c010b200341d0016a41186a22054200370300200341d0016a41106a22044200370300200341d0016a41086a22024200370300200342003703d00141dfcbc700ad4280808080b0028410012206290000210c2002200641086a2900003703002003200c3703d0012006102f41ebdec700ad4280808080f0008410012206290000210c200341c8006a41086a2209200641086a2900003703002003200c3703482006102f20082003290348370000200841086a2009290300370000200341a8016a41086a2002290300370300200341a8016a41106a2004290300370300200341a8016a41186a2005290300370300200320032903d0013703a801200341286a200341a8016a412010aa0202400240200328022822060d00410021020c010b200329022c220c422088a72102200ca7450d002006102f0b200341d0016a200741b00210e8061a200341b4016a2002360200200341a8016a41086a4101360200200341003a00ac01200341023a00a801200341c8006a200341d0016a200341a8016a108b0120032d00482102200341dd016a20034180046a41086a290300370000200341e5016a20034190046a290300370000200341ed016a20034198046a290300370000200341043a00d401200341f5016a20024104463a0000200341083a00d00120032003290380043700d501200341d0016a21020b4100210641c8e1ca0041002002108c01200041043a00002007102f0c0d0b200141216a2d00002110200141246a280200211a20034188016a41186a200141196a29000037030020034188016a41106a200141116a29000037030020034188016a41086a200141096a29000037030020032001290001370388012002411a6a290100210c200241196a2d00002105200241186a2d00002104200241166a2f01002107200241156a2d00002108200241146a2d00002109200241126a2f0100210a200241116a2d0000210d200241106a2d0000210b2002410e6a2f0100210f2002410d6a2d000021112002410c6a2d000021122002410a6a2f01002113200241096a2d00002114200241086a2d00002115200241066a2f01002116200241056a2d00002117200241046a2d00002118200241026a2f0100211941012106024020022d00000d0020022d000141014721060b2003200c3701e801200320053a00e701200320043a00e601200320073b01e401200320083a00e301200320093a00e2012003200a3b01e0012003200d3a00df012003200b3a00de012003200f3b01dc01200320113a00db01200320123a00da01200320133b01d801200320143a00d701200320153a00d601200320163b01d401200320173a00d301200320183a00d201200320193b01d00120060d0420034180046a41186a200341d0016a41186a220629010037030020034180046a41106a200341d0016a41106a220729010037030020034180046a41086a200341d0016a41086a2202290100370300200320032901d00137038004200642003703002007420037030020024200370300200342003703d00141dfcbc700ad4280808080b0028410012206290000210c2002200641086a2900003703002003200c3703d0012006102f41ebdec700ad4280808080f0008410012206290000210c200341c8006a41086a2205200641086a2900003703002003200c3703482006102f20072003290348220c370300200341a8016a41086a2002290300370300200341a8016a41106a200c370300200341a8016a41186a2005290300370300200320032903d0013703a801200341d0016a200341a8016a412010aa0220032902d401420020032802d00122021b220c422088a741057421062002410120021b2208210202400340024020060d00410021040c020b4101210420034180046a2002460d01200641606a2106200220034180046a412010ea062105200241206a210220050d000b0b0240200ca7450d002008102f0b024002402004450d00200341d0016a20034188016a10c405024020032802d8012209450d00200341e8016a280200210a200341e4016a280200210f20032802dc01210d20032802d001201a460d02410a210241a7d5c7002106410321050c0c0b20004183183b0100200041086a410f360200200041046a41b1d5c700360200200041026a41023a00000c0c0b20004183183b0100200041086a4109360200200041046a41d1d5c700360200200041026a41003a00000c0b0b200341f0016a2802002114200341ec016a280200210b20032802d40121134100210641002105410021120240200341e0016a2802002211450d002011410574210441002105200921020240034020034180046a2002460d012005200220034180046a412010ea0622084100476a21052008450d01200241206a2102200441606a22040d000b410021120c010b410121120b410021020240200b450d00200b410574210441002106200f21020240034020034180046a2002460d012006200220034180046a412010ea0622084100476a21062008450d01200241206a2102200441606a22040d000b410021020c010b410121020b024002400240201041ff01710d002002450d010c0b0b20120d0a200341286a41186a220820034180046a41186a290300370300200341286a41106a221220034180046a41106a290300370300200341286a41086a221520034180046a41086a2903003703002003200329038004370328024002402011200d460d00200d21042011210d0c010b200d41016a2205200d490d09200d41017422042005200420054b1b220541ffffff3f712005470d09200541057422054100480d0902400240200d0d002005102d21090c010b2009200d4105742005103121090b2009450d04200541057621040b2009200d4105746a22052003290328370000200541186a2008290300370000200541106a2012290300370000200541086a2015290300370000201141016a21112002450d01200b20064d0d07200f200b417f6a220b4105746a2202290000210c2002290008210e2002290010211b200f20064105746a220641186a200241186a2900003700002006201b3700102006200e3700082006200c3700000c010b200341c8006a41186a220620034180046a41186a290300370300200341c8006a41106a220420034180046a41106a290300370300200341c8006a41086a220820034180046a41086a290300370300200320032903800437034802400240200b200a460d00200a2115200b210a0c010b200a41016a2202200a490d08200a41017422152002201520024b1b220241ffffff3f712002470d08200241057422024100480d0802400240200a0d002002102d210f0c010b200f200a41057420021031210f0b200f450d03200241057621150b200f200a4105746a22022003290348370000200241186a2006290300370000200241106a2004290300370000200241086a2008290300370000200b41016a210b02402012450d00201120054d0d0920092011417f6a22114105746a2202290000210c2002290008210e2002290010211b200920054105746a220641186a200241186a2900003700002006201b3700102006200e3700082006200c3700000b200d21042015210a0b200341f5016a200329038801370000200341e5016a20034180046a41106a290300370000200341ed016a20034180046a41186a29030037000020034185026a20034188016a41106a2903003700002003418d026a20034188016a41186a290300370000200341083a00d001200341dd016a20034180046a41086a290300370000200341fd016a20034188016a41086a290300370000200341013a00d40120032003290380043700d5012003419c026a200b36020020034198026a201136020020034195026a20103a00004100210241c8e1ca004100200341d0016a108c01200341d0016a41186a22084200370300200341d0016a41106a220d4200370300200341d0016a41086a22064200370300200342003703d00141dfcbc700ad4280808080b0028410012205290000210c2006200541086a2900003703002003200c3703d0012005102f41ebdec700ad4280808080f0008410012205290000210c200341c8006a41086a2212200541086a2900003703002003200c3703482005102f20072003290348370000200741086a2012290300370000200341a8016a41086a2006290300370300200341a8016a41106a200d290300370300200341a8016a41186a2008290300370300200320032903d0013703a801200341286a200341a8016a412010aa02024020032802282206450d00200329022c220c422088a72102200ca7450d002006102f0b02400240201120134f22060d0041002002200b6b2205200520024b1b2013490d00200341ec016a200b360200200341d0016a41186a200a360200200341d0016a41106a2011360200200341dc016a2004360200200320143602f0012003200f3602e401200320093602d801200320133602d4012003201a3602d00141dfcbc700ad4280808080b0028410012202290000210c200341e8006a41086a200241086a2900003703002003200c3703682002102f41f2dec700ad4280808080e0008410012202290000210c200341f8006a41086a200241086a2900003703002003200c3703782002102f4120102d2202450d032002200329038801370000200241186a20034188016a41186a290300370000200241106a20034188016a41106a290300370000200241086a20034188016a41086a2903003700002002ad428080808080048410032206290000210c200641086a290000210e200641106a290000211b200341a8016a41186a200641186a290000370300200341a8016a41106a201b370300200341a8016a41086a200e3703002003200c3703a8012006102f2002102f41c000102d2202450d0320022003290368370000200241086a200341e8006a41086a29030037000020022003290378370010200241186a200341f8006a41086a290300370000200220032903a801370020200241286a200341a8016a41086a290300370000200241306a200341b8016a290300370000200241386a200341a8016a41186a290300370000200341c0003602ac01200320023602a801200341d0016a200341a8016a10bd052002102f02402004450d002009102f0b200a450d01200f102f0c010b200341ec016a200b360200200341d0016a41186a200a360200200341d0016a41106a2011360200200341dc016a2004360200200320143602f0012003200f3602e401200320093602d8012003201a3602d001200320133602d401200341a8016a41186a20034188016a41186a290300370300200341a8016a41106a20034188016a41106a290300370300200341a8016a41086a20034188016a41086a29030037030020032003290388013703a80120062002200341d0016a200341a8016a10c5050b200041043a00000c0a0b200141246a280200210620034198046a200141196a29000037030020034190046a200141116a29000037030020034188046a200141096a2900003703002003200129000137038004024002400240024020022d00000d0020022d00014101470d00200341d0016a20034180046a10c405024020032802d8012207450d00200341d0016a41186a22022802002109200341e4016a280200210b20032802dc01210a20032802d0012006460d02410a210241a7d5c7002106410321050c030b20004183183b0100200041086a410f360200200041046a41b1d5c700360200200041026a41023a00000c0d0b200041023a00000c0c0b200341d0016a41206a2802002111200341ec016a2802002112200341d0016a41106a220d280200210f20032802d401211320024200370300200d420037030041082102200341d0016a41086a22054200370300200342003703d001418de6c300ad4280808080e0008410012204290000210c2005200441086a2900003703002003200c3703d0012004102f419ce6c300ad4280808080e0008410012204290000210c200341c8006a41086a2208200441086a2900003703002003200c3703482004102f200d2003290348220c370300200341a8016a41086a2005290300370300200341a8016a41106a200c370300200341a8016a41186a2008290300370300200320032903d0013703a801200341206a200341a8016a41201095012003280224410020032802201b20114f0d014180d5c7002106410621050b20004183183b0100200041086a2002360200200041046a2006360200200041026a20053a00000240200a450d002007102f0b2009450d0a200b102f0c0a0b200341a8016a41186a22084200370300200341a8016a41106a22054200370300200341a8016a41086a22024200370300200342003703a80141dfcbc700ad4280808080b0028410012204290000210c200341e8006a41086a2214200441086a2900003703002003200c3703682004102f20022014290300370300200320032903683703a80141fbd4c700ad4280808080d0008410012204290000210c200341f8006a41086a2214200441086a2900003703002003200c3703782004102f20052003290378220c370300200341c8006a41086a2002290300370300200341c8006a41106a200c370300200341c8006a41186a2014290300370300200320032903a801370348200341d0016a200341c8006a412010ad0220032d00d00121042008200341e9016a2900003703002005200341e1016a2900003703002002200341d9016a290000370300200320032900d1013703a8010240024020044101460d00410021080c010b200341286a41186a2008290300220c370300200341286a41106a2005290300220e370300200341286a41086a2002290300221b370300200320032903a801221c370328200341d0016a41186a200c370300200341d0016a41106a200e370300200341d0016a41086a201b3703002003201c3703d001200f4105742105200721020340024020050d00410021080c020b41012108200341d0016a2002460d01200541606a21052002200341d0016a412010ea062104200241206a210220040d000b0b200341d0016a41186a22044200370300200341d0016a41106a22144200370300200341d0016a41086a22024200370300200342003703d00141dfcbc700ad4280808080b0028410012205290000210c2002200541086a2900003703002003200c3703d0012005102f41ebdec700ad4280808080f0008410012205290000210c200341c8006a41086a2215200541086a2900003703002003200c3703482005102f200d2003290348370000200d41086a2015290300370000200341a8016a41086a2002290300370300200341a8016a41106a2014290300370300200341a8016a41186a2004290300370300200320032903d0013703a80120034188016a200341a8016a412010aa020240024020032802880122050d00410021020c010b200329028c01220c422088a72102200ca7450d002005102f0b200341e5016a20034180046a41106a2205290300370000200341ed016a20034180046a41186a2204290300370000200341083a00d001200341dd016a20034180046a41086a220d290300370000200341fc016a410020022012200f6a6b221420081b20126a360200200341f8016a2014410020081b200f6a2208360200200341063a00d40120032003290380043700d50141c8e1ca004100200341d0016a108c01200341ec016a2012360200200341d0016a41186a2009360200200341d0016a41106a200f360200200341dc016a200a360200200320113602f0012003200b3602e401200320073602d801200320063602d001200320133602d401200341a8016a41186a2004290300370300200341a8016a41106a2005290300370300200341a8016a41086a200d29030037030020032003290380043703a801200820134f2002200341d0016a200341a8016a10c505200041043a00000c090b1036000b20004183183b0100200041086a4109360200200041046a41d1d5c700360200200041026a41003a00000c080b20004183183b0100200041086a4111360200200041046a41c0d5c700360200200041026a41013a00000c070b200041023a00000c050b419cc3ca002006200b103b000b1038000b419cc3ca0020052011103b000b410d2102419ad5c7002106410421050b20004183183b0100200041086a2002360200200041046a2006360200200041026a20053a00000240200d450d002009102f0b200a450d00200f102f0b41012104410121050c030b2007108e012007102f410021060b41012104410121050c020b2007108e012007102f41002105410121040b410121060b024020012d0000417f6a220241024b0d0002400240024020020e03000102000b2004450d02200141286a280200450d02200141246a280200102f0c020b2005450d01200141046a2802002202108e012002102f0c010b2006450d00200141086a2802002202108e012002102f0b200341a0046a24000bef7405037f027e127f037e047f23004190046b220324000240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020012802000e0700010203040506000b200341e4016a4101360200200342013702d401200341b4d8c9003602d00120034104360244200341fcdbc9003602402003200341c0006a3602e001200341d0016a41e8d8c9001043000b200141086a2802002104200128020421050240024020022d00000d0020022d00014101470d00200141186a2903002106200141106a29030021072001410c6a2802002108200241196a2d00002101200241186a2d00002109200241166a2f0100210a200241156a2d0000210b200241146a2d0000210c200241126a2f0100210d200241116a2d0000210e200241106a2d0000210f2002410e6a2f010021102002410d6a2d000021112002410c6a2d000021122002410a6a2f01002113200241096a2d00002114200241086a2d00002115200241066a2f01002116200241056a2d00002117200241046a2d00002118200241026a2f0100211920032002411a6a290100370330200320013a002f200320093a002e2003200a3b012c2003200b3a002b2003200c3a002a2003200d3b01282003200e3a00272003200f3a0026200320103b0124200320113a0023200320123a0022200320133b0120200320143a001f200320153a001e200320163b011c200320173a001b200320183a001a200320193b011820034190016a41186a420037030020034190016a41106a2201420037030020034190016a41086a22024200370300200342003703900141bd98ca00ad428080808080028410012209290000211a200341c0006a41086a220a200941086a2900003703002003201a3703402009102f2002200a2903003703002003200329034037039001418c91c700ad4280808080a0018410012209290000211a200341d0016a41086a220b200941086a2900003703002003201a3703d0012009102f200120032903d001221a370300200341b0016a41086a2002290300370300200341b0016a41106a201a370300200341b0016a41186a200b29030037030020032003290390013703b001200341c0006a200341b0016aad4280808080800484221a10021073024002400240024020032802402202450d00200328024421092003200a2802003602d401200320023602d001200341106a200341d0016a10e6012003280210450d014100210d0c020b200342003702d401200341013602d001200341d0016a10f103210d0c020b2003280214210d0b2009450d002002102f0b20034190016a41186a220b420037030020034190016a41106a220c420037030020034190016a41086a22024200370300200342003703900141bd98ca00ad428080808080028410012209290000211b200341c0006a41086a220a200941086a2900003703002003201b3703402009102f2002200a290300370300200320032903403703900141ebdec700ad4280808080f0008410012209290000211b200341d0016a41086a220a200941086a2900003703002003201b3703d0012009102f200120032903d001370000200141086a200a290300370000200341b0016a41086a2002290300370300200341b0016a41106a200c290300370300200341b0016a41186a200b29030037030020032003290390013703b001200341d0016a201a100210734100210241002101024020032802d0012209450d0020032802d401210b2003200a28020036024420032009360240200341086a200341c0006a10e601024002402003280208450d00410021010c010b200328020c21010b200b450d002009102f0b410c21092001200d6a22010d0141f388c70021010c170b200041023a00000c170b0240200820014d0d0041e088c7002101410221020c160b0240200841104d0d004114210941cc88c7002101410321020c160b024020080d004107210941ec88c7002101410121020c160b02402007428180e983b1de165441002006501b450d00410a210941c288c7002101410421020c160b0240200341186a10b3050d00200342003703b8032003428080e983b1de163703b0032003200341186a360280032003200341186a3602d8022003200341d8026a3602d801200320034180036a3602d4012003200341b0036a3602d001200341c0006a200341186a200341d0016a109401024020032802404101470d0020032d00444104460d01410f210941b388c7002101410521020c170b200341c0006a41086a2903004201520d00200341c0006a41106a290300211a20032802d802210120034188026a200341c0006a41186a29030037030020034180026a201a370300200341d0016a41086a41003a0000200341d9016a2001290000370000200341e1016a200141086a290000370000200341e9016a200141106a290000370000200341f1016a200141186a290000370000200341033a00d00141c8e1ca004100200341d0016a108c010b200341d0016a200341186a108d02200342f0d0c9abc6add9b1f400370338200341386a200341186a427f20032903d001221a20032903e0017c221b201b201a542201200341d0016a41086a2202290300221a200341d0016a41186a2903007c2001ad7c221b201a54201b201a511b22011b221a2007201a200754427f201b20011b221a200654201a2006511b22011b221b201a200620011b221a411e10b00141bd98ca00ad4280808080800284100122012900002106200341c0006a41086a200141086a290000370300200320063703402001102f41ce89c700ad4280808080f000841001220129000021062002200141086a290000370300200320063703d0012001102f4120102d2201450d0f20012003290318370000200141186a200341186a41186a290300370000200141106a200341186a41106a290300370000200141086a200341186a41086a2903003700002001ad4280808080800484100322022900002106200241086a2900002107200241106a290000211c20034190016a41186a200241186a29000037030020034190016a41106a2209201c37030020034190016a41086a200737030020032006370390012002102f2001102f41c000102d2201450d0f20012003290340370000200141086a200341c0006a41086a2202290300370000200120032903d001370010200141186a200341d0016a41086a220a2903003700002001200329039001370020200141286a20034190016a41086a220b290300370000200141306a2009290300370000200141386a20034190016a41186a22092903003700002003201a3703d8012003201b3703d0012001ad4280808080800884200341d0016aad428080808080028410042001102f41bd98ca00ad428080808080028410012201290000211a2002200141086a2900003703002003201a3703402001102f41ae85c700ad4280808080f0008410012201290000211a200a200141086a2900003703002003201a3703d0012001102f4120102d2201450d0f20012003290318370000200141186a200341186a41186a290300370000200141106a200341186a41106a290300370000200141086a200341186a41086a2903003700002001ad428080808080048410032202290000211a200241086a290000211b200241106a29000021062009200241186a29000037030020034190016a41106a22092006370300200b201b3703002003201a370390012002102f2001102f41c000102d220a450d0f200a2003290340370000200a41086a200341c0006a41086a290300370000200a20032903d001370010200a41186a200341d0016a41086a290300370000200a200329039001370020200a41286a20034190016a41086a2202290300370000200a41306a2009290300370000200a41386a20034190016a41186a290300370000200341c0006a200a41c0001095040240024020032d004c22014102460d00200341b0036a41086a200341d5006a290000370300200341b0036a41106a200341dd006a290000370300200341b0036a41186a200341e5006a290000370300200341b0016a41086a200341f6006a290100370300200341b0016a41106a200341fe006a290100370300200341b0016a41186a20034186016a2901003703002003200341cd006a2900003703b0032003200341ee006a2901003703b001200341ed006a2d000021022003280244450d012003280240102f0c010b2003200341186a3602d40241bd98ca00ad428080808080028410012201290000211a2002200141086a2900003703002003201a370390012001102f41a185c700ad4280808080d0018410012201290000211a200341b0016a41086a2209200141086a2900003703002003201a3703b0012001102f200341b0036a41086a2002290300370300200341b0036a41186a200929030037030020032003290390013703b003200320032903b0013703c003200341d0016a200341b0036a108801200341d8026a20032802d001220120032802d80110ad02024020032802d401450d002001102f0b200341c0036a21100240024020032d00d8020d0041bd98ca00ad428080808080028410012201290000211a20034190016a41086a2202200141086a2900003703002003201a370390012001102f41a185c700ad4280808080d0018410012201290000211a200341b0016a41086a2209200141086a2900003703002003201a3703b0012001102f200341b0036a41086a2002290300370300201020032903b001370000201041086a200929030037000020032003290390013703b003200341d0016a200341b0036a10880120032802d001210220033502d801211a4120102d2201450d1220012003290318370000200141186a200341186a41186a290300370000200141106a200341186a41106a290300370000200141086a200341186a41086a290300370000201a4220862002ad842001ad428080808080048410042001102f024020032802d401450d002002102f0b410021020c010b20034198036a200341f1026a29000037030020034180036a41106a200341e9026a29000037030020034180036a41086a200341e1026a290000370300200320032900d90237038003200341a0036a20034180036a109404200341d0016a20032802a003221120032802a8032212109504024020032d00dc014102470d0020034100360298012003420137039001200341b0016a41146a4129360200200341b0016a410c6a410b360200200341103602fc03200341bd98ca003602f8032003410b3602b4012003410736028404200341ae85c700360280042003200341a0036a3602c001200320034180046a3602b8012003200341f8036a3602b001200320034190016a36028c04200341b0036a41146a4103360200200342033702b403200341cc90c4003602b0032003200341b0016a3602c0032003418c046a41d8dbc100200341b0036a103c1a2003350298014220862003350290018410080240200328029401450d00200328029001102f0b20032802d402210241bd98ca00ad428080808080028410012201290000211a20034190016a41086a2209200141086a2900003703002003201a370390012001102f41a185c700ad4280808080d0018410012201290000211a200341b0016a41086a220b200141086a2900003703002003201a3703b0012001102f200341b0036a41086a2009290300370300201020032903b001370000201041086a200b29030037000020032003290390013703b003200341b0016a200341b0036a10880120032802b001210920033502b801211a4120102d2201450d1220012002290000370000200141186a200241186a290000370000200141106a200241106a290000370000200141086a200241086a290000370000201a4220862009ad842001ad428080808080048410042001102f024020032802b401450d002009102f0b024020032802a403450d0020032802a003102f0b410021020c010b200341b0036a200341d0016a410c6a41c20010e8061a20032d00d1032102200341b0016a41086a200341d0016a41086a2802002201360200200341b0016a41106a200341d2036a410020024101461b360200200320032903d001221a3703b0012003200341d4026a3602bc012001410574220e4104722202417f4c0d082002102d2209450d11201aa72113200341003602980120032002360294012003200936029001200120034190016a106902402001450d00410020032802980122026b210b200328029001210d2003280294012109201321010340024002402009200b6a411f4d0d002009210c0c010b200241206a220c2002490d162009410174220f200c200f200c4b1b220c4100480d160240024020090d00200c102d210d0c010b200d2009200c1031210d0b200d450d140b200d20026a22092001290000370000200941186a200141186a290000370000200941106a200141106a290000370000200941086a200141086a290000370000200b41606a210b200241206a2102200c2109200141206a2101200e41606a220e0d000b2003200c3602940120032002360298012003200d360290010b200341b0016a410c6a20034190016a10cd0220032802940121012012ad4220862011ad842003350298014220862003280290012202ad84100402402001450d002002102f0b024020032802b401450d002013102f0b024020032802a403450d0020032802a003102f0b20032802d402210241bd98ca00ad428080808080028410012201290000211a20034190016a41086a2209200141086a2900003703002003201a370390012001102f41a185c700ad4280808080d0018410012201290000211a200341b0016a41086a220b200141086a2900003703002003201a3703b0012001102f200341b0036a41086a2009290300370300201020032903b001370000201041086a200b29030037000020032003290390013703b003200341d0016a200341b0036a10880120032802d001210920033502d801211a4120102d2201450d1120012002290000370000200141186a200241186a290000370000200141106a200241106a290000370000200141086a200241086a290000370000201a4220862009ad842001ad428080808080048410042001102f024020032802d401450d002009102f0b200341b0016a41086a20034180036a41086a290300370300200341b0016a41106a20034180036a41106a290300370300200341b0016a41186a20034180036a41186a29030037030020032003290380033703b001410121020b410021010b200341dd016a20032903b003370000200341fd016a20023a0000200341fe016a20032903b001370100200341e5016a200341b0036a41086a290300370000200341ed016a200341b0036a41106a290300370000200341f5016a200341b0036a41186a29030037000020034186026a200341b0016a41086a2903003701002003418e026a200341b0016a41106a29030037010020034196026a200341b0016a41186a290300370100200320013a00dc01200320083602d801200320043602d401200320053602d001200341c0003602442003200a360240200341d0016a200341c0006a10ef03200a102f02402004450d002005102f0b200041043a00000c170b20032002411a6a2901003703c8012003200241026a2901003703b00120032002410a6a2901003703b8012003200241126a2901003703c00120022d00014101470d0420022d000041ff01710d04200341d0016a41186a200341b0016a41186a290300370300200341d0016a41106a200341b0016a41106a290300370300200341d0016a41086a200341b0016a41086a290300370300200320032903b0013703d0010240200341d0016a10b305450d00200341d0016a410110b405200041043a00000c140b200041831a3b0100200041086a410b360200200041046a41a888c700360200200041026a41063a00000c130b200341d0036a200141246a280200360200200341b0036a41186a2001411c6a290200370300200341b0036a41106a200141146a290200370300200341b0036a41086a2001410c6a290200370300200320012902043703b00320022d00000d0520022d00014101470d05200241196a2d00002104200241186a2d00002105200241166a2f01002109200241156a2d0000210a200241146a2d00002108200241126a2f0100210b200241116a2d0000210c200241106a2d0000210d2002410e6a2f0100210e2002410d6a2d0000210f2002410c6a2d000021102002410a6a2f01002111200241096a2d00002112200241086a2d00002113200241066a2f01002114200241056a2d00002115200241046a2d00002116200241026a2f0100211720032002411a6a29010037039803200320043a009703200320053a009603200320093b0194032003200a3a009303200320083a0092032003200b3b0190032003200c3a008f032003200d3a008e032003200e3b018c032003200f3a008b03200320103a008a03200320113b018803200320123a008703200320133a008603200320143b018403200320153a008303200320163a008203200320173b018003200341d0016a41206a200341b0036a41206a280200360200200341d0016a41186a200341b0036a41186a290300370300200341d0016a41106a200341b0036a41106a290300370300200341d0016a41086a200341b0036a41086a290300370300200320032903b0033703d001200341c0006a200341d0016a10bb0120034190016a41086a2202200341c9006a29000037030020034190016a41106a2204200341d1006a29000037030020034190016a41186a2205200341d9006a290000370300200320032900413703900120032d00404101460d06200341d8026a41186a2005290300370300200341d8026a41106a2004290300370300200341d8026a41086a200229030037030020032003290390013703d80220034180036a200341d8026a412010ea06450d070240024020034180036a10b305450d0002400240200341d8026a10b305450d0041bd98ca00ad428080808080028410012202290000211a200341c0006a41086a200241086a2900003703002003201a3703402002102f41ae85c700ad4280808080f0008410012202290000211a200341d0016a41086a200241086a2900003703002003201a3703d0012002102f4120102d2202450d11200220032903d802370000200241186a200341d8026a41186a290300370000200241106a200341d8026a41106a290300370000200241086a200341d8026a41086a2903003700002002ad428080808080048410032204290000211a200441086a290000211b200441106a2900002106200341b0016a41186a2205200441186a290000370300200341b0016a41106a22092006370300200341b0016a41086a201b3703002003201a3703b0012004102f2002102f41c000102d2202450d1120022003290340370000200241086a200341c0006a41086a220e290300370000200220032903d001370010200241186a200341d0016a41086a220b290300370000200220032903b001370020200241286a200341b0016a41086a220d290300370000200241306a2009290300370000200241386a2005290300370000200341d0016a200241c00010aa022002102f20032802d0012202410120021b220f20032902d401420020021b221b422088a74105746a2110200341d0016a41106a2108200f2105034020052010460d020240200510e1040d00200541206a2112200341d0016a41186a220c420037030020084200370300200b4200370300200342003703d00141bd98ca00ad4280808080800284220610012202290000211a200b200241086a2900003703002003201a3703d0012002102f419691c700ad428080808090018410012202290000211a200d200241086a2900003703002003201a3703b0012002102f200820032903b001370000200841086a2213200d290300370000200e200b290300370300200341c0006a41106a22142008290300370300200341c0006a41186a2215200c290300370300200320032903d001370340200341d0016a200341c0006a10e40420032902d401420020032802d00122021b221a422088a741306c2104410021092002410820021b22112102024003402004450d01024020052002460d0020022005412010ea06210a200941016a2109200441506a2104200241306a2102200a0d010b0b201aa7450d012011102f0c010b0240201aa7450d002011102f0b200c420037030020084200370300200b4200370300200342003703d001200610012202290000211a200b200241086a2900003703002003201a3703d0012002102f418c91c700ad4280808080a0018410012202290000211a200d200241086a2900003703002003201a3703b0012002102f200820032903b0013700002013200d290300370000200e200b290300370300201420082903003703002015200c290300370300200320032903d001370340200341d0016a200341c0006a412010aa0220032802d0012204410120041b210c4100210202400240024020032902d401420020041b221a422088a7220441014b0d0020040e020201020b034020022004410176220920026a220a200c200a4105746a2005412010ea0641004a1b2102200420096b220441014b0d000b0b200c20024105746a2005412010ea064521020b0240201aa7450d00200c102f0b201221052002450d010b0b201ba7450d00200f102f0b200342003703b8012003428080e983b1de163703b001200320034180036a36029001200341c0006a20034180036a200341b0016a20034190016a10bd01200341e0006a290300211a2003290358211b024020032903404201520d002003290348210620034188026a200341c0006a41106a29030037030020034180026a2006370300200341d0016a41086a41003a0000200341d9016a200329038003370000200341e1016a20034180036a41086a290300370000200341e9016a20034180036a41106a290300370000200341f1016a20034198036a290300370000200341033a00d00141c8e1ca004100200341d0016a108c010b201b201a109a014100210220034180036a21040c140b0240201ba7450d00200f102f0b200341d0016a200341d8026a20034180036a428080e983b1de164200410010bc01200341c0006a41086a2204200341dc016a280200360200200320032902d4013703404101210220032802d0014101460d01200341d8026a21040c130b200041831a3b0100200041086a410b360200200041046a41a888c700360200200041026a41063a00000c130b20002003290340370200200041086a20042802003602000c120b024020022d00000d0020022d00014101470d00200241196a2d00002104200241186a2d00002105200241166a2f01002109200241156a2d0000210a200241146a2d00002108200241126a2f0100210b200241116a2d0000210c200241106a2d0000210d2002410e6a2f0100210e2002410d6a2d0000210f2002410c6a2d000021102002410a6a2f01002111200241096a2d00002112200241086a2d00002113200241066a2f01002114200241056a2d00002115200241046a2d00002116200241026a2f0100211720032002411a6a2901003703c803200320043a00c703200320053a00c603200320093b01c4032003200a3a00c303200320083a00c2032003200b3b01c0032003200c3a00bf032003200d3a00be032003200e3b01bc032003200f3a00bb03200320103a00ba03200320113b01b803200320123a00b703200320133a00b603200320143b01b403200320153a00b303200320163a00b203200320173b01b003200341d0016a41186a4200370300200341d0016a41106a22084200370300200341d0016a41086a22024200370300200342003703d00141bd98ca00ad428080808080028410012204290000211a2002200441086a2900003703002003201a3703d0012004102f418c91c700ad4280808080a0018410012204290000211a200341b0016a41086a2205200441086a2900003703002003201a3703b0012004102f200820032903b001221a370300200341c0006a41086a2002290300370300200341c0006a41106a201a370300200341c0006a41186a2005290300370300200320032903d001370340200341d0016a200341c0006a412010aa0220032802d0012202410120021b210a4100210b024020032902d401420020021b221a422088a7220441014b0d00410021024100210c20040e020d0c0d0b41002102034020022004410176220520026a2209200a20094105746a200341b0036a412010ea0641004a1b2102200420056b220441014b0d000c0c0b0b200041023a00000c110b20022d00000d0620022d00014101470d06200241196a2d00002104200241186a2d00002105200241166a2f01002109200241156a2d0000210a200241146a2d00002108200241126a2f0100210b200241116a2d0000210c200241106a2d0000210d2002410e6a2f0100210e2002410d6a2d0000210f2002410c6a2d000021102002410a6a2f01002111200241096a2d00002112200241086a2d00002113200241066a2f01002114200241056a2d00002115200241046a2d00002116200241026a2f0100211720032002411a6a2901003703c803200320043a00c703200320053a00c603200320093b01c4032003200a3a00c303200320083a00c2032003200b3b01c0032003200c3a00bf032003200d3a00be032003200e3b01bc032003200f3a00bb03200320103a00ba03200320113b01b803200320123a00b703200320133a00b603200320143b01b403200320153a00b303200320163a00b203200320173b01b00320034180036a200341b0036a10b5050240024020032d008003450d00200341d0016a41186a4200370300200341d0016a41106a220a4200370300200341d0016a41086a22024200370300200342003703d00141bd98ca00ad428080808080028410012204290000211a2002200441086a2900003703002003201a3703d0012004102f419691c700ad428080808090018410012204290000211a200341b0016a41086a2205200441086a2900003703002003201a3703b0012004102f200a20032903b001221a370300200341c0006a41086a2002290300370300200341c0006a41106a201a370300200341c0006a41186a2005290300370300200320032903d001370340200341d0016a200341c0006a10e40420032902d401420020032802d00122021b221a422088a7220b41306c2104410021052002410820021b22082102024003402004450d03200341b0036a2002460d01200541016a2105200441506a21042002200341b0036a412010ea062109200241306a210220090d000b20094541016a41017120056a417f6a21050b2008200541306c6a2202200241306a2005417f73200b6a41306c10e9061a200342003703e00220034280809aa6eaafe3013703d8022003200341b0036a36028003200341c0006a200341b0036a200341d8026a20034180036a109601024020032903404201520d002003290348211b20034188026a200341c0006a41106a290300370300200341d0016a41306a201b370300200341d0016a41086a41003a0000200341d9016a20032903b003370000200341e1016a200341b0036a41086a290300370000200341e9016a200341b0036a41106a290300370000200341f1016a200341c8036a290300370000200341033a00d00141c8e1ca004100200341d0016a108c010b200341b0016a41186a4200370300200341b0016a41106a22054200370300200341b0016a41086a22024200370300200342003703b00141bd98ca00ad428080808080028410012204290000211b200341c0006a41086a2209200441086a2900003703002003201b3703402004102f20022009290300370300200320032903403703b001419691c700ad428080808090018410012204290000211b200341d0016a41086a2209200441086a2900003703002003201b3703d0012004102f200520032903d001221b37030020034190016a41086a200229030037030020034190016a41106a201b37030020034190016a41186a2009290300370300200320032903b00137039001200341203602d401200320034190016a3602d0012008200b417f6a200341d0016a10ab010240201aa7450d002008102f0b200041043a00000c120b200342003703e00220034280809aa6eaafe3013703d8022003200341b0036a3602b001200341c0006a200341b0036a200341d8026a200341b0016a109601024020032903404201520d002003290348211a20034188026a200341c0006a41106a29030037030020034180026a201a370300200341d0016a41086a41003a0000200341d9016a20032903b003370000200341e1016a200341b0036a41086a290300370000200341e9016a200341b0036a41106a290300370000200341f1016a200341c8036a290300370000200341033a00d00141c8e1ca004100200341d0016a108c010b200341dd016a200341b8036a290300370000200341e5016a200341c0036a290300370000200341ed016a200341c8036a290300370000200341033a00d401200341093a00d001200320032903b0033700d50141c8e1ca004100200341d0016a108c01200041043a00000c110b200341d0016a41186a22054200370300200341d0016a41106a22094200370300200341d0016a41086a22024200370300200342003703d00141bd98ca00ad428080808080028410012204290000211b2002200441086a2900003703002003201b3703d0012004102f418c91c700ad4280808080a0018410012204290000211b200341b0016a41086a220b200441086a2900003703002003201b3703b0012004102f200a20032903b001370000200a41086a200b290300370000200341c0006a41086a2002290300370300200341c0006a41106a2009290300370300200341c0006a41186a2005290300370300200320032903d001370340200341d0016a200341c0006a412010aa0220032802d0012202410120021b210a02400240024020032902d401420020021b221b422088a7220b41014b0d0041002102200b0e020201020b200b210441002102034020022004410176220520026a2209200a20094105746a200341b0036a412010ea0641004a1b2102200420056b220441014b0d000b0b200a20024105746a200341b0036a412010ea060d002002200b4f0d08200a20024105746a2204200441206a2002417f73200b6a41057410e9061a200342003703e00220034280809aa6eaafe3013703d8022003200341b0036a36028003200341c0006a200341b0036a200341d8026a20034180036a109601024020032903404201520d002003290348210620034188026a200341c0006a41106a29030037030020034180026a2006370300200341d0016a41086a41003a0000200341d9016a20032903b003370000200341e1016a200341b0036a41086a290300370000200341e9016a200341b0036a41106a290300370000200341f1016a200341c8036a290300370000200341033a00d00141c8e1ca004100200341d0016a108c010b200341b0016a41186a4200370300200341b0016a41106a22054200370300200341b0016a41086a22024200370300200342003703b00141bd98ca00ad4280808080800284100122042900002106200341c0006a41086a2209200441086a290000370300200320063703402004102f20022009290300370300200320032903403703b001418c91c700ad4280808080a00184100122042900002106200341d0016a41086a2209200441086a290000370300200320063703d0012004102f200520032903d001220637030020034190016a41086a200229030037030020034190016a41106a200637030020034190016a41186a2009290300370300200320032903b00137039001200341203602d401200320034190016a3602d001200a200b417f6a200341d0016a10aa010240201ba7450d00200a102f0b200041043a0000201aa7450d112008102f0c110b200041831a3b0100200041086a410d360200200041046a41cc87c700360200200041026a410c3a00000240201ba7450d00200a102f0b201aa7450d102008102f0c100b200341b0036a41206a2204200141246a280200360200200341b0036a41186a22052001411c6a290200370300200341b0036a41106a2209200141146a290200370300200341b0036a41086a220a2001410c6a290200370300200320012902043703b00320022d000120022d0000410047720d07200341d0016a41206a2004280200360200200341d0016a41186a2005290300370300200341d0016a41106a2009290300370300200341d0016a41086a200a290300370300200320032903b0033703d001200341c0006a200341d0016a10bb01200341b0016a41086a200341c9006a290000370300200341b0016a41106a200341d1006a290000370300200341b0016a41186a200341d9006a290000370300200320032900413703b001024020032d00404101460d00200341d8026a41186a200341b0016a41186a290300370300200341d8026a41106a200341b0016a41106a290300370300200341d8026a41086a200341b0016a41086a290300370300200320032903b0013703d802200341b0016a200341d8026a10b505024020032d00b0014101470d00200020032902b401370200200041086a200341bc016a2802003602000c110b20032d00b1012102200342003703880320034280809aa6eaafe301370380032003200341d8026a36029001200341c0006a200341d8026a20034180036a20034190016a10bd01200341e0006a290300211a2003290358211b024020032903404201520d002003290348210620034188026a200341c0006a41106a29030037030020034180026a2006370300200341d0016a41086a41003a0000200341d9016a20032903d802370000200341e1016a200341d8026a41086a290300370000200341e9016a200341d8026a41106a290300370000200341f1016a200341f0026a290300370000200341033a00d00141c8e1ca004100200341d0016a108c010b201b201a109a01200341dd016a200341e0026a290300370000200341e5016a200341e8026a290300370000200341ed016a200341f0026a290300370000200341023a00d401200341093a00d001200320032903d8023700d50141c8e1ca004100200341d0016a108c010240200241ff01710d0010b6040b200041043a00000c100b200041013a00000c0f0b200041023a00000c0e0b103d000b200041023a00000c0c0b200041013a00000c0b0b200041831a3b0100200041086a410a360200200041046a419e88c700360200200041026a41073a00000c0a0b200041023a00000c090b41b8e3c300411d41f8b4ca001039000b200041023a00000c070b0240200a20024105746a200341b0036a412010ea0622040d004101210b2002210c0c010b2004411f7620026a210c0b0240201aa7450d00200a102f0b0240200b450d004113210a418b88c7002102410821040c040b410c210a0240200341b0036a10e104450d0041ff87c7002102410921040c040b200341d0016a41186a22054200370300200341d0016a41106a22094200370300200341d0016a41086a22024200370300200342003703d00141bd98ca00ad428080808080028410012204290000211a2002200441086a2900003703002003201a3703d0012004102f419691c700ad428080808090018410012204290000211a200341b0016a41086a220b200441086a2900003703002003201a3703b0012004102f200820032903b001370000200841086a200b290300370000200341c0006a41086a2002290300370300200341c0006a41106a2009290300370300200341c0006a41186a2005290300370300200320032903d001370340200341d0016a200341c0006a10e40420032902d401420020032802d00122021b221a422088a741306c2104410021052002410820021b220b2102024003402004450d010240200341b0036a2002460d00200541016a2105200441506a21042002200341b0036a412010ea062109200241306a210220090d010b0b41f387c7002102410a2104201aa7450d04200b102f0c040b0240201aa7450d00200b102f0b200342003703e00220034280809aa6eaafe3013703d8022003200341b0036a3602b0012003200341b0036a36028003200320034180036a3602d8012003200341b0016a3602d4012003200341d8026a3602d001200341c0006a200341b0036a200341d0016a1094010240024020032802404101470d0020032d00444104460d01411a210a41d987c7002102410b21040c050b200341c0006a41086a2903004201520d00200341c0006a41106a290300211a200328028003210220034188026a200341c0006a41186a29030037030020034180026a201a370300200341d0016a41086a41003a0000200341d9016a2002290000370000200341e1016a200241086a290000370000200341e9016a200241106a290000370000200341f1016a200241186a290000370000200341033a00d00141c8e1ca004100200341d0016a108c010b20032903c803211b20032d00c703210920032d00c603210a20032f01c403210b20032d00c303210d20032d00c203210e20032f01c003210f20032d00bf03211020032d00be03211120032f01bc03211220032d00bb03211320032d00ba03211420032f01b803211520032d00b703211620032d00b603211720032f01b403211820032d00b303211920032d00b203211d20032f01b003211e4200211a200341d0016a41186a22054200370300200341d0016a41106a221f4200370300200341d0016a41086a22024200370300200342003703d00141bd98ca00ad42808080808002841001220429000021062002200441086a290000370300200320063703d0012004102f418c91c700ad4280808080a00184100122042900002106200341b0016a41086a2220200441086a290000370300200320063703b0012004102f200820032903b001370000200841086a2020290300370000200341c0006a41086a2002290300370300200341c0006a41106a201f290300370300200341c0006a41186a2005290300370300200320032903d001370340200341d0016a200341c0006a412010aa020240024020032802d00122040d004100210241012104410021050c010b20032902d401221a422088a72105201aa721020b2005200c490d01024020052002470d002002201aa7470d00200241016a22082002490d032002410174221f2008201f20084b1b220841ffffff3f712008470d03200841057422084100480d030240024020020d002008102d21040c010b200420024105742008103121040b2004450d012008410576ad211a0b2004200c4105746a220241206a20022005200c6b41057410e9061a2002201b370018200220093a00172002200a3a00162002200b3b00142002200d3a00132002200e3a00122002200f3b0010200220103a000f200220113a000e200220123b000c200220133a000b200220143a000a200220153b0008200220163a0007200220173a0006200220183b0004200220193a00032002201d3a00022002201e3b0000200341b0016a41186a4200370300200341b0016a41106a220a4200370300200341b0016a41086a22024200370300200342003703b00141bd98ca00ad428080808080028410012209290000211b200341c0006a41086a2208200941086a2900003703002003201b3703402009102f20022008290300370300200320032903403703b001418c91c700ad4280808080a0018410012209290000211b200341d0016a41086a2208200941086a2900003703002003201b3703d0012009102f200a20032903d001221b37030020034190016a41086a200229030037030020034190016a41106a201b37030020034190016a41186a2008290300370300200320032903b001370390010240024020040d0020034190016aad428080808080048410050c010b200341203602d401200320034190016a3602d0012004200541016a200341d0016a10aa01201aa7450d002004102f0b200041043a00000c050b1036000b419ae3c300411e41f8b4ca001039000b1038000b200041831a3b0100200041086a200a360200200041046a2002360200200041026a20043a00000c010b2004410010b405200341dd016a200341d8026a41086a290300370000200341e5016a200341d8026a41106a290300370000200341ed016a200341d8026a41186a290300370000200341f5016a200329038003370000200341fd016a20034180036a41086a29030037000020034185026a20034180036a41106a2903003700002003418d026a20034180036a41186a29030037000020034195026a20023a0000200341043a00d401200341093a00d001200320032903d8023700d50141c8e1ca004100200341d0016a108c01200041043a00000b20012802004101470d02200141086a280200450d022001280204102f0c020b200041831a3b0100200041086a2009360200200041046a2001360200200041026a20023a00000b2004450d002005102f0b20034190046a24000bb512080a7f027e047f017e047f027e027f057e23002204210520044180016b416071220424000240024002400240024002400240200141ffffff3f712001470d0020014105742206417f4c0d00024020060d00200020014105746a210741012108200121090c030b2006102d2208450d05200020014105746a21072006410576220920014f0d02200941017422062001200620014b1b220641ffffff3f712006470d01200641057422064100480d010240024020090d002006102d21080c010b200820094105742006103121080b2008450d05200641057621090c030b103d000b1038000b20010d00410021060c010b200720006b210a410021060340200820066a2207200020066a220b290000370000200741186a200b41186a290000370000200741106a200b41106a290000370000200741086a200b41086a290000370000200a200641206a2206470d000b200020014105746a20006b41606a41057641016a21060b20042006360208200420093602042004200836020020082006410041202006676b10e003200441206a41186a220a4200370300200441206a41106a220c4200370300200441206a41086a220d42003703002004420037032041dfcbc700ad4280808080b00284220e10012206290000210f200d200641086a2900003703002004200f3703202006102f41e2dec700ad428080808090018410012206290000210f200441c8006a41086a2200200641086a2900003703002004200f3703482006102f200c2004290348220f370300200441e0006a41086a2210200d290300370300200441e0006a41106a2211200f370300200441e0006a41186a2212200029030037030020042004290320370360200441206a200441e0006a412010aa0220042802202206410120061b21132004290224420020061b2214422088a72206450d0120064105742115200441e0006a410c722116200441206a410c6a2101200441206a4114722117200441206a4108722118201321070340200a200741186a290000370300200c200741106a290000370300200d200741086a29000037030020042007290000370320200e10012206290000210f200441106a41086a2208200641086a2900003703002004200f3703102006102f41f2dec700ad4280808080e0008410012206290000210f2000200641086a2900003703002004200f3703482006102f4120102d2206450d0120062004290320370000200641186a200a290300370000200641106a200c290300370000200641086a200d2903003700002006ad42808080808004841003220b290000210f200b41086a2900002119200b41106a290000211a2012200b41186a2900003703002011201a370300201020193703002004200f370360200b102f2006102f41c000102d2206450d01200620042903103700002006200429034837001020062004290360370020200641086a2008290300370000200641186a2000290300370000200641286a2010290300370000200641306a2011290300370000200641386a2012290300370000200441206a200610a1052000200141086a290200370300200441c8006a41106a2209200141106a280200360200200420012902003703482004280240211b02402004280228220b450d002004290320210f20162004290348370200201641086a2000290300370200201641106a20092802003602002004200f370360201b211c0b2004200b360268200441003602282004290378211a20042004290338221d3703782004290370211e20042004290330221f370370200429036021202004200429032022193703602004290368210f2004200429032822213703682021a7210b02400240200fa722090d002021210f201f211e201d211a0c010b200420203703202004200f3703282004201e3703302004201a37033820042009201ea74105746a360254200420093602502004200f422088a736024c2004200936024820042004360258200441106a200441c8006a10f803201841086a2008280200360200201820042903103702002004201e422088a72209201a422088a74105746a360254200420093602502004201aa736024c2004200936024820042004360258200441106a200441c8006a10f803201741086a2008280200360200201720042903103702002004290328210f200429032021192004290338211a2004290330211e0240200b450d00201da7210802402021422088a7450d00200b102f0b2008450d00201f422088a7102f0b200420193703602004200f3703682004201e3703702004201a370378200fa7210b201b211c0b2004200f3703282004201e370330200a201a370300200420193703202004201c360240200fa7210802400240200b0d002006ad428080808080088410050c010b200441c00036024c20042006360248200441206a200441c8006a10b7050b02402008450d00201aa7210b0240200f422088a7450d002008102f0b200b450d00201e422088a7102f0b200741206a21072006102f201541606a22150d000c020b0b1036000b02402014a7450d002013102f0b200441e0006a41186a220a4200370300200441e0006a41106a22074200370300200441e0006a41086a220642003703002004420037036041dfcbc700ad4280808080b00284220f100122002900002119200441106a41086a220b200041086a290000370300200420193703102000102f2006200b2903003703002004200429031037036041ebdec700ad4280808080f00084100122082900002119200441c8006a41086a2200200841086a290000370300200420193703482008102f200720042903482219370300200441206a41086a22012006290300370300200441206a41106a22092019370300200441206a41186a221c200029030037030020042004290360370320200441203602642004200441206a36026020022003200441e0006a10ad01200a4200370300200742003703002006420037030020044200370360200f10012208290000210f200b200841086a2900003703002004200f3703102008102f2006200b2903003703002004200429031037036041fbd4c700ad4280808080d000841001220b290000210f2000200b41086a2900003703002004200f370348200b102f20072004290348220f370300200120062903003703002009200f370300201c200029030037030020042004290360370320200441206aad4280808080800484100502402004280204450d002004280200102f0b200524000bec0502057f017e23004190016b2201240020002d00002102200141186a2203200041196a290000370300200141106a2204200041116a290000370300200141086a2205200041096a2900003703002001200029000137030002400240024020020d00200141f0006a41186a4200370300200141f0006a41106a22034200370300200141f0006a41086a220042003703002001420037037041dfcbc700ad4280808080b002841001220229000021062000200241086a290000370300200120063703702002102f41fbd4c700ad4280808080d00084100122022900002106200141206a41086a2204200241086a290000370300200120063703202002102f200320012903202206370300200141c0006a41086a2000290300370300200141c0006a41106a2006370300200141c0006a41186a200429030037030020012001290370370340200141c0006aad428080808080048410050c010b200141206a41186a2003290300370300200141206a41106a2004290300370300200141206a41086a200529030037030020012001290300370320200141f0006a41186a4200370300200141f0006a41106a22034200370300200141f0006a41086a220042003703002001420037037041dfcbc700ad4280808080b002841001220229000021062000200241086a290000370300200120063703702002102f41fbd4c700ad4280808080d00084100122022900002106200141e0006a41086a2204200241086a290000370300200120063703602002102f200320012903602206370300200141c0006a41086a2000290300370300200141c0006a41106a2006370300200141c0006a41186a2004290300370300200120012903703703404120102d2200450d0120002001290320370000200041186a200141206a41186a290300370000200041106a200141206a41106a290300370000200041086a200141206a41086a290300370000200141c0006aad42808080808004842000ad428080808080048410042000102f0b20014190016a24000f0b1036000b8d0901177f230041206b220424002002410020031b21052000410020011b2106200241206a200220031b2107200041206a200020011b2108200020014105746a2109200220034105746a210a4100210b4100210c4101210d4100210e4100210f4101211002400340200b4101742111200b41057421120240024003402011211320122114200b2115200c2116200d2117200721032005210202400340024020020d00410021052006450d020c040b02402006450d000240024020022006460d0020022006412010ea0622180d010b2003200341206a2003200a4622021b210741002008200820094622141b21064100200320021b21052015210b2016210c2017210d2008200841206a20141b21080c070b02402018417f4c0d00200221050c050b200441186a2218200241186a290000370300200441106a2219200241106a290000370300200441086a221a200241086a29000037030020042002290000370300024020152016470d00201541016a22022015490d0820132002201320024b1b220241ffffff3f712002470d08200241057422024100480d080240024020150d002002102d21170c010b201720142002103121170b2017450d06200241057621160b201720146a22022004290300370000200241186a2018290300370000200241106a2019290300370000200241086a201a290300370000410020032003200a4622181b2102201341026a2113201441206a2114201541016a21152003200341206a20181b21030c010b0b200441186a2203200541186a290000370300200441106a2215200541106a290000370300200441086a2206200541086a290000370300200420052900003703000240200b200c470d00200b41016a2202200b490d06200b41017422142002201420024b1b220241ffffff3f712002470d06200241057422024100480d0602400240200b0d002002102d210d0c010b200d200b41057420021031210d0b200d450d042002410576210c0b200d200b4105746a22022004290300370000200241186a2003290300370000200241106a2015290300370000200241086a200629030037000041002106410020072007200a4622021b2105201141026a2111201241206a2112200b41016a210b2007200741206a20021b21070c010b0b201720152000200110880302402016450d002017102f0b0240200f450d002010102f0b200441206a24000f0b200441186a2214200641186a290000370300200441106a2213200641106a290000370300200441086a2218200641086a290000370300200420062900003703000240200e200f470d00200e41016a2202200e490d03200e41017422062002200620024b1b220241ffffff3f712002470d03200241057422024100480d0302400240200e0d002002102d21100c010b2010200e4105742002103121100b2010450d012002410576210f0b2010200e4105746a22022004290300370000200241186a2014290300370000200241106a2013290300370000200241086a201829030037000041002008200820094622021b2106200e41016a210e2015210b2016210c2017210d2008200841206a20021b2108200321070c010b0b1036000b1038000be2a50107017f027e137f017e057f057e087f23004180096b22032400024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020012d00000e09000102030405090a0f000b20034184076a4101360200200342013702f406200341b4d8c9003602f006200341043602b405200341fcdbc9003602b0052003200341b0056a36028007200341f0066a41e8d8c9001043000b200141306a2903002104200141286a2903002105200341d0056a200141246a280200360200200341b0056a41186a2001411c6a290200370300200341b0056a41106a200141146a290200370300200341b0056a41086a2001410c6a2902003703002003200141046a2902003703b00520022d00000d0420022d00014101470d04200241196a2d00002106200241186a2d00002107200241166a2f01002108200241156a2d00002109200241146a2d0000210a200241126a2f0100210b200241116a2d0000210c200241106a2d0000210d2002410e6a2f0100210e2002410d6a2d0000210f2002410c6a2d000021102002410a6a2f01002111200241096a2d00002112200241086a2d00002113200241066a2f01002114200241056a2d00002115200241046a2d00002116200241026a2f0100211720032002411a6a2901003703a003200320063a009f03200320073a009e03200320083b019c03200320093a009b032003200a3a009a032003200b3b0198032003200c3a0097032003200d3a0096032003200e3b0194032003200f3a009303200320103a009203200320113b019003200320123a008f03200320133a008e03200320143b018c03200320153a008b03200320163a008a03200320173b018803200341f0066a41206a200341b0056a41206a280200360200200341f0066a41186a200341b0056a41186a290300370300200341f0066a41106a200341b0056a41106a290300370300200341f0066a41086a200341b0056a41086a290300370300200320032903b0053703f00620034180086a200341f0066a10bb0120032d0080084101460d0c20034180086a41086a2d0000210c20034189086a2f0000210d2003418b086a2d0000210e2003418c086a2d0000210f2003418d086a2f000021102003418f086a2d0000211120034180086a41106a2d0000211220034191086a2f0000211320034193086a2d0000211420034194086a2d0000211520034195086a2f0000211620034197086a2d0000211720034180086a41186a2d0000211820034199086a290000211920032f008108211a20032d008308211b20032d008408211c20032f008508211d20032d008708211e200341286a2005200442c0843d420010ee06200341186a2003290328221f200341286a41086a290300222042c0fb42427f10ed06200341086a201f202042d08603420010ed062003200341086a41086a29030020032903082220200520032903187c221f42d086037e201f421480221f42c0fb427e7c42a0c21e56201fa76aad7c221f202054ad7c22204200201f428080e983b1de165620204200522020501b22021b22203703b0022003201f428080e983b1de1620021b22213703a802200320034188036a3602c006200320034188036a3602c8012003200341c8016a3602f8062003200341c0066a3602f4062003200341a8026a3602f00620034180086a20034188036a200341f0066a109401024002402003280280084101470d0020032d0084084104460d0120004183223b0100200041086a411c360200200041046a41d8c7c400360200200041026a41003a0000410121060c180b20034180086a41086a2903004201520d0020034180086a41106a290300211f20032802c8012102200341a8076a20034180086a41186a290300370300200341a0076a201f370300200341f0066a41086a41003a0000200341f9066a200229000037000020034181076a200241086a29000037000020034189076a200241106a29000037000020034191076a200241186a290000370000200341033a00f00641c8e1ca004100200341f0066a108c010b20034198046a41186a220a420037030020034198046a41106a2207420037030020034198046a41086a2202420037030020034200370398044180a3ca00ad4280808080800184221f100122062900002122200341e8036a41086a2208200641086a290000370300200320223703e8032006102f20022008290300370300200320032903e803370398044188a3ca00ad4280808080d001842222100122062900002123200341c0066a41086a2209200641086a290000370300200320233703c0062006102f200720032903c0062223370300200341c8046a41086a220b2002290300370300200341c8046a41106a22242023370300200341c8046a41186a2225200929030037030020032003290398043703c8042003200341c8046a41201095012003280204212620032802002127200a420037030020074200370300200242003703002003420037039804201f1001220629000021232008200641086a290000370300200320233703e8032006102f20022008290300370300200320032903e8033703980420221001220629000021222009200641086a290000370300200320223703c0062006102f200720032903c0062222370300200b2002290300370300202420223703002025200929030037030020032003290398043703c80420032026410020271b220b41016a3602f006200341c8046aad4280808080800484200341f0066aad4280808080c000841004200341f0066a41186a20034188036a41186a290300370300200341f0066a41106a20034188036a41106a290300370300200341f0066a41086a20034188036a41086a29030037030020032003290388033703f006201f10012206290000211f2008200641086a2900003703002003201f3703e8032006102f41e2dec700ad428080808090018410012206290000211f2009200641086a2900003703002003201f3703c0062006102f2003200b3602800820034180086aad4280808080c0008410032206290000211f200641086a2900002122200641106a2900002123200a200641186a29000037030020072023370300200220223703002003201f370398042006102f41c000102d2206450d0e200620032903e803370000200641086a2008290300370000200620032903c006370010200641186a20092903003700002006200329039804370020200641286a2002290300370000200641306a2007290300370000200641386a200a2903003700004120102d2202450d0e200220032903f006370000200241186a200341f0066a41186a290300370000200241106a200341f0066a41106a290300370000200241086a200341f0066a41086a2903003700002002412041c00010312202450d0e20022005370020200241286a2004370000200241c00041800110312202450d0e2002202137005020022019370048200220183a0047200220173a0046200220163b0044200220153a0043200220143a0042200220133b0040200220123a003f200220113a003e200220103b003c2002200f3a003b2002200e3a003a2002200d3b00382002200c3a00372002201e3a00362002201d3b00342002201c3a00332002201b3a00322002201a3b0030200241d8006a20203700002006ad42808080808008842002ad4280808080800c8410042002102f2006102f200341f8066a41003a00002003410c3a00f006200341f0066a410c6a200b36020041c8e1ca004100200341f0066a108c01200041043a0000410121060c160b41012106024020022d00004101470d00200241086a2802004102490d00200241046a28020041ff01710d00200141046a28020021074180a3ca00ad4280808080800184100122022900002105200341e8036a41086a2208200241086a290000370300200320053703e8032002102f41e2dec700ad4280808080900184100122022900002105200341c0066a41086a2209200241086a290000370300200320053703c0062002102f200320073602f006200341f0066aad4280808080c00084100322022900002105200241086a2900002104200241106a290000211f200341c8046a41186a220a200241186a290000370300200341c8046a41106a220b201f370300200341c8046a41086a220c2004370300200320053703c8042002102f41c000102d2202450d0e200220032903e803370000200241086a2008290300370000200220032903c006370010200241186a2009290300370000200220032903c804370020200241286a200c290300370000200241306a200b290300370000200241386a200a290300370000200341f0066a200210aa04024020032903f00642015222080d002002ad428080808080088410050b20034188036a200341f0066a41086a41e00010e8061a200341f0066a20034188036a41e00010e8061a024020080d00200341a8026a200341f0066a41e00010e8061a2002102f200341b0056a41066a200341a8026a41e00010e8061a20034180086a200341b0056a41e60010e8061a200341c8016a20034180086a41066a41e00010e8061a20032903d80121052003200341c8016a41186a290300220437038808200320053703800802400240200520048450450d004200211f420021200c010b2003200341c8016a41206a220236028803200341b0056a200220034180086a20034188036a10bd01200341b0056a41206a290300212020032903c805211f20032903b0054201520d0020032903b8052119200341a8076a200341b0056a41106a290300370300200341a0076a2019370300200341f0066a41086a41003a0000200341f9066a200229000037000020034181076a200241086a29000037000020034189076a200241106a29000037000020034191076a200241186a290000370000200341033a00f00641c8e1ca004100200341f0066a108c010b201f2020109a01200341f0066a41186a200437030020034180076a2005370300200341f8066a41033a00002003410c3a00f006200341f0066a410c6a200736020041c8e1ca004100200341f0066a108c01200041043a00000c170b2002102f200041086a4114360200200041046a41c4c7c40036020041012106200041026a41013a000020004183223b01000c160b200041023a00000c150b4101210620022d00004101470d09200241086a2802004104490d09200241046a28020041ff01710d09200141046a28020021094180a3ca00ad4280808080800184100122022900002105200341e8036a41086a2206200241086a290000370300200320053703e8032002102f41e2dec700ad4280808080900184100122022900002105200341c0066a41086a2207200241086a290000370300200320053703c0062002102f200320093602f006200341f0066aad4280808080c00084100322022900002105200241086a2900002104200241106a290000211f20034198046a41186a2208200241186a29000037030020034198046a41106a220a201f37030020034198046a41086a220b200437030020032005370398042002102f41c000102d2202450d0c200220032903e803370000200241086a2006290300370000200220032903c006370010200241186a20072903003700002002200329039804370020200241286a200b290300370000200241306a200a290300370000200241386a2008290300370000200341386a200241c00041c8e1ca004100410010b501200328023821072002102f41012106024020074101470d0020034198046a41186a220d420037030020034198046a41106a2202420037030020034198046a41086a2207420037030020034200370398044180a3ca00ad4280808080800184221f100122082900002105200341e8036a41086a220a200841086a290000370300200320053703e8032008102f2007200a290300370300200320032903e803370398044195a3ca00ad42808080809001842220100122082900002105200341c0066a41086a220b200841086a290000370300200320053703c0062008102f200220032903c0062205370300200341c8046a41086a220e2007290300370300200341c8046a41106a220f2005370300200341c8046a41186a2210200b29030037030020032003290398043703c804200341f0066a200341c8046a10fe0320032802f006220c4104200c1b2108024020032902f4064200200c1b22054220882204a7220c2005a7470d00200c41016a2211200c490d122004a722134101742212201120112012491b221141ffffffff03712011470d12201141027422114100480d1202400240200c0d002011102d21080c010b200820134102742011103121080b2008450d0e20054220882204a7210c2011410276ad21050b2008200c4102746a2009360200200d420037030020024200370300200742003703002003420037039804201f10012209290000211f200a200941086a2900003703002003201f3703e8032009102f2007200a290300370300200320032903e80337039804202010012209290000211f200b200941086a2900003703002003201f3703c0062009102f200220032903c006370000200241086a200b290300370000200e2007290300370300200f20022903003703002010200d29030037030020032003290398043703c8040240024020080d00200341c8046aad428080808080048410050c010b200341203602f4062003200341c8046a3602f00620082004a741016a200341f0066a10a3042005a7450d002008102f0b200041043a00000c150b20004183223b0100200041086a4114360200200041046a41c4c7c400360200200041026a41013a00000c140b2001412c6a2802002108200141286a2802002106200141246a2802002107200341c0066a41186a200141196a290000370300200341c0066a41106a200141116a290000370300200341c0066a41086a200141096a290000370300200320012900013703c006024002400240024020022d00000d0020022d00014101470d00200241196a2d00002109200241186a2d0000210a200241166a2f0100210b200241156a2d0000210c200241146a2d0000210d200241126a2f0100210e200241116a2d0000210f200241106a2d000021102002410e6a2f010021112002410d6a2d000021122002410c6a2d000021132002410a6a2f01002114200241096a2d00002115200241086a2d00002116200241066a2f01002117200241056a2d00002118200241046a2d0000211a200241026a2f0100211b20032002411a6a2901003703e001200320093a00df012003200a3a00de012003200b3b01dc012003200c3a00db012003200d3a00da012003200e3b01d8012003200f3a00d701200320103a00d601200320113b01d401200320123a00d301200320133a00d201200320143b01d001200320153a00cf01200320163a00ce01200320173b01cc01200320183a00cb012003201a3a00ca012003201b3b01c8012008418080014b0d012008ad22204220862007ad84100322022900002105200241086a2900002104200241106a290000211f200341a8026a41186a200241186a290000370300200341a8026a41106a201f370300200341a8026a41086a2004370300200320053703a8022002102f200341f0066a200341a8026a10de04200341d8006a20032802f006220920032802f80641c8e1ca004100410010b50120032802582102024020032802f406450d002009102f0b20024101460d022003200341c0066a3602f4062003200341a8026a3602f00620034180086a200341f0066a108001200341f0066a20034180086a10df04200341d0006a20032802f006220920032802f80641c8e1ca004100410010b50120032802502102024020032802f406450d002009102f0b20024101470d0320004183223b0100200041086a410c360200200041046a41acc7c400360200200041026a41033a000020060d180c190b200041023a000020060d170c180b20004183223b0100200041086a410c360200200041046a41b8c7c400360200200041026a41023a000020060d160c170b20004183223b0100200041086a410c360200200041046a41acc7c400360200200041026a41033a000020060d150c160b200341c0006a202042004280a094a58d1d420010ed06200320032903402204428080e983b1de167c2205370388032003200341c0006a41086a2903002005200454ad7c2204370390032003200341c8016a3602e8032003200341c8016a36029804200320034198046a3602f8062003200341e8036a3602f406200320034188036a3602f006200341b0056a200341c8016a200341f0066a1094010240024020032802b0054101470d00200320032900b5053703f0062003200341bc056a2800003600f70620032d00b40521020c010b41042102200341b0056a41086a2903004201520d00200341b0056a41106a290300211f2003280298042109200341a8076a200341b0056a41186a290300370300200341a0076a201f370300200341f0066a41086a41003a0000200341f9066a200929000037000020034181076a200941086a29000037000020034189076a200941106a29000037000020034191076a200941186a290000370000200341033a00f00641c8e1ca004100200341f0066a108c010b200320032903f0063703c804200320032800f7063600cf04200241ff01714104470d07200341f0066a200341a8026a10de0420032802f0062102200320032802f8063602b405200320023602b00520072008200341b0056a109d02024020032802f406450d002002102f0b200341c8046a41086a200341a8026a41086a2202290300370300200341c8046a41106a200341a8026a41106a2208290300370300200341c8046a41186a200341a8026a41186a220929030037030020034198046a41086a200341c0066a41086a220a29030037030020034198046a41106a200341c0066a41106a220b29030037030020034198046a41186a200341c0066a41186a220c290300370300200320032903a8023703c804200320032903c0063703980420034188036a41186a200341c8016a41186a220d29030037030020034188036a41106a200341c8016a41106a220e29030037030020034188036a41086a200341c8016a41086a220f290300370300200320032903c80137038803200341a0076a200437030020034198076a2005370300200341b8076a4100360200200342013703f006200341f0066a41106a200f290300370300200341f0066a41186a200e29030037030020034190076a200d290300370300200342083703b007200341003602a807200320032903c8013703f806200341c4076a2002290300370200200341cc076a2008290300370200200341d4076a2009290300370200200320032903a8023702bc07200341f4076a200c290300370200200341ec076a200b290300370200200341e4076a200a290300370200200320032903c0063702dc07200341b0056a20034180086a10df0420032802b0052102200320032802b8053602ec03200320023602e803200341f0066a200341e8036a10da04024020032802b405450d002002102f0b200341f0066a41086a41073a0000200341f9066a20032903800837000020034181076a20034180086a41086a29030037000020034189076a20034180086a41106a29030037000020034191076a20034180086a41186a2903003700002003410c3a00f00641c8e1ca004100200341f0066a108c01200041043a00002006450d150c140b200341a8016a41186a200141196a290000370300200341a8016a41106a200141116a290000370300200341a8016a41086a200141096a290000370300200320012900013703a8012002411a6a2901002105200241196a2d00002107200241186a2d00002108200241166a2f01002109200241156a2d0000210a200241146a2d0000210b200241126a2f0100210c200241116a2d0000210d200241106a2d0000210e2002410e6a2f0100210f2002410d6a2d000021102002410c6a2d000021112002410a6a2f01002112200241096a2d00002113200241086a2d00002114200241066a2f01002115200241056a2d00002116200241046a2d00002117200241026a2f0100211841012106024020022d00000d0020022d000141014721060b200320053703e004200320073a00df04200320083a00de04200320093b01dc042003200a3a00db042003200b3a00da042003200c3b01d8042003200d3a00d7042003200e3a00d6042003200f3b01d404200320103a00d304200320113a00d204200320123b01d004200320133a00cf04200320143a00ce04200320153b01cc04200320163a00cb04200320173a00ca04200320183b01c8040240024020060d00200341f8046a41186a200341c8046a41186a2202290300370300200341f8046a41106a200341c8046a41106a2206290300370300200341f8046a41086a200341c8046a41086a2207290300370300200320032903c8043703f804200341a0056a200341a8016a10df04200341f0066a20032802a005220a20032802a80510e0042007200341f0066a41106a2903003703002006200341f0066a41186a2903003703002002200341f0066a41206a290300370300200341c8046a41206a220b200341f0066a41286a290300370300200341c8046a41286a220c200341a0076a290300370300200320032903f8063703c804200341a8076a280200210d200341ac076a280200210e200341b0076a2802002109200341f0066a41c4006a2802002108200341b8076a280200210f20032903f006210520034188036a200341bc076a41c40010e8061a024020054202510d0020034198046a41286a200c29030037030020034198046a41206a200b29030037030020034198046a41186a200229030037030020034198046a41106a200629030037030020034198046a41086a2007290300370300200320032903c80437039804200341a8026a20034188036a41c40010e8061a024020032802a405450d00200a102f0b200341e8036a41086a220220034198046a41086a290300370300200341e8036a41106a220620034198046a41106a290300370300200341e8036a41186a220720034198046a41186a290300370300200341e8036a41206a220a20034198046a41206a290300370300200341e8036a41286a220b20034198046a41286a29030037030020032003290398043703e803200341c8016a200341a8026a41c40010e8061a200341c0066a41086a220c2002290300370300200341c0066a41106a22022006290300370300200341c0066a41186a22062007290300370300200341c0066a41206a2207200a290300370300200341c0066a41286a220a200b290300370300200320032903e8033703c00620034180086a200341c8016a41c40010e8061a200341f8056a200f360200200341b0056a41c4006a2008360200200341ec056a200e360200200341b0056a41106a220b200c290300370300200341b0056a41186a220c2002290300370300200341b0056a41206a22022006290300370300200341b0056a41286a220e2007290300370300200341e0056a220f200a290300370300200320093602f0052003200d3602e805200320032903c0063703b805200320053703b005200341fc056a20034180086a41c40010e8061a20034188036a41186a2206200229030037030020034188036a41106a2202200c29030037030020034188036a41086a2207200b290300370300200320032903b8053703880320054201520d02200f2903002104200e290300211f200341f0066a410e6a2007290300370100200341f0066a41166a2002290300370100200341f0066a411e6a2006290300220537010020034180086a411e6a220a200537010020032003290388033701f60620034180086a41086a200341f0066a41086a29010037030020034180086a41106a200341f0066a41106a29010037030020034180086a41186a200341f0066a41186a290100370300200320032901f006370380082006200a290100370300200220034180086a41166a290100370300200720034180086a410e6a29010037030020032003290186083703880320034188036a200341f8046a412010ea060d04200341f0066a200341fc056a10de0420033502f80642208620032802f0062202ad841005024020032802f406450d002002102f0b200341f0066a200341a8016a10df0420033502f80642208620032802f0062202ad841005024020032802f406450d002002102f0b2003201f3703a802200320043703b0020240201f200484500d002003200341f8046a3602c80120034180086a200341f8046a200341a8026a200341c8016a1096012003290380084201520d002003290388082105200341a8076a20034180086a41106a290300370300200341a0076a2005370300200341f0066a41086a41003a0000200341f9066a20032903f80437000020034181076a200341f8046a41086a29030037000020034189076a200341f8046a41106a29030037000020034191076a20034190056a290300370000200341033a00f00641c8e1ca004100200341f0066a108c010b200341f0066a41086a410a3a0000200341f9066a20032903a80137000020034181076a200341a8016a41086a29030037000020034189076a200341b8016a29030037000020034191076a200341c0016a2903003700002003410c3a00f00641c8e1ca004100200341f0066a108c0102402008450d002009102f0b200041043a0000410121060c150b024020032802a405450d00200a102f0b200041086a410a360200200041046a41a2c7c400360200200041026a41043a000020004183223b0100410121060c140b200041023a0000410121060c130b200041086a4109360200200041046a4199c7c400360200200041026a41053a000020004183223b01000c020b200041023a00000c100b20004183223b0100200041086a4109360200200041046a4199c7c400360200200041026a41053a00000b2008450d0e2009102f410121060c0f0b200141386a2903002105200141306a29030021042001412c6a2802002108200141286a2802002106200141246a2802002107200341c0026a200141196a290000370300200341b8026a200141116a290000370300200341b0026a200141096a290000370300200320012900013703a80220032002411a6a2901003703b0042003200241026a2901003703980420032002410a6a2901003703a0042003200241126a2901003703a8040240024020022d00014101470d0020022d000041ff01710d0020034188036a41186a20034198046a41186a29030037030020034188036a41106a20034198046a41106a29030037030020034188036a41086a20034198046a41086a29030037030020032003290398043703880320034188036a10e104450d012008ad4220862007ad8410032202290000211f200241086a2900002120200241106a290000211920034180086a41186a200241186a29000037030020034180086a41106a201937030020034180086a41086a20203703002003201f370380082002102f200341f0066a20034180086a10de04200341e0006a20032802f006220920032802f80641c8e1ca004100410010b50120032802602102024020032802f406450d002009102f0b20024101460d032003200341a8026a3602f406200320034180086a3602f006200341b0056a200341f0066a108001200341f0066a20034180086a10de0420032802f0062102200320032802f8063602cc01200320023602c80120072008200341c8016a109d02024020032802f406450d002002102f0b200341c8046a41186a200341b0056a41186a290300221f370300200341c8046a41106a200341b0056a41106a2903002220370300200341c8046a41086a200341b0056a41086a2903002219370300200320032903b00522213703c804200341f0066a41086a41073a0000200341f9066a202137000020034181076a201937000020034189076a202037000020034191076a201f3700002003410c3a00f00641c8e1ca004100200341f0066a108c014130102d2202450d08200220043703202002200329038803370000200241286a2005370300200241186a20034188036a41186a290300370000200241106a20034188036a41106a290300370000200241086a20034188036a41086a290300370000200341b4076a428180808010370200200341c4076a20034180086a41086a290300370200200341cc076a20034180086a41106a290300370200200341d4076a20034180086a41186a290300370200200320023602b007200341003602a807200342003703f00620032003290380083702bc07200341e4076a200341a8026a41086a290300370200200341ec076a200341a8026a41106a290300370200200341f4076a200341a8026a41186a290300370200200320032903a8023702dc07200341c8016a200341b0056a10df0420032802c8012108200320032802d0013602c406200320083602c006200341f0066a200341c0066a10da04024020032802cc01450d002008102f0b2002102f200041043a00002006450d0e0c0d0b200041023a000020060d0c0c0d0b200041023a000020060d0b0c0c0b200141306a2903002105200141286a2903002104200341a8016a41186a200141196a290000370300200341a8016a41106a200141116a290000370300200341a8016a41086a200141096a290000370300200320012900013703a801024020022d00000d0020022d00014101470d00200241196a2d00002106200241186a2d00002107200241166a2f01002108200241156a2d00002109200241146a2d0000210a200241126a2f0100210b200241116a2d0000210c200241106a2d0000210d2002410e6a2f0100210e2002410d6a2d0000210f2002410c6a2d000021102002410a6a2f01002111200241096a2d00002112200241086a2d00002113200241066a2f01002114200241056a2d00002115200241046a2d00002116200241026a2f0100211720032002411a6a29010037039005200320063a008f05200320073a008e05200320083b018c05200320093a008b052003200a3a008a052003200b3b0188052003200c3a0087052003200d3a0086052003200e3b0184052003200f3a008305200320103a008205200320113b018005200320123a00ff04200320133a00fe04200320143b01fc04200320153a00fb04200320163a00fa04200320173b01f80402400240024002400240024002400240200341f8046a10e104450d0020034180086a41186a200341a8016a41186a29030037030020034180086a41106a200341a8016a41106a29030037030020034180086a41086a200341a8016a41086a290300370300200320032903a80137038008200341a0056a20034180086a10e204200341f0066a20032802a005220220032802a80510e004200341c8046a41086a2206200341f0066a41106a290300370300200341c8046a41106a2207200341f0066a41186a290300370300200341c8046a41186a2208200341f0066a41206a290300370300200341c8046a41206a220a200341f0066a41286a290300370300200341c8046a41286a220b200341a0076a290300370300200320032903f8063703c804200341a8076a2802002126200341ac076a2802002125200341b0076a2802002109200341f0066a41c4006a280200211e200341b8076a280200210e20032903f006212120034188036a200341bc076a41c40010e8061a024020214202510d0020034198046a41286a200b29030037030020034198046a41206a200a29030037030020034198046a41186a200829030037030020034198046a41106a200729030037030020034198046a41086a2006290300370300200320032903c80437039804200341a8026a20034188036a41c40010e8061a024020032802a405450d002002102f0b200341e8036a41086a220220034198046a41086a290300370300200341e8036a41106a220620034198046a41106a290300370300200341e8036a41186a220720034198046a41186a290300370300200341e8036a41206a220820034198046a41206a290300370300200341e8036a41286a220a20034198046a41286a29030037030020032003290398043703e803200341c8016a200341a8026a41c40010e8061a200341c0066a41086a2002290300370300200341c0066a41106a2006290300370300200341c0066a41186a2007290300370300200341c0066a41206a2008290300370300200341c0066a41286a200a290300370300200320032903e8033703c006200341b0056a200341c8016a41c40010e8061a200320093602980520034188036a41186a200341f8046a41186a29030037030020034188036a41106a200341f8046a41106a29030037030020034188036a41086a200341f8046a41086a290300370300200320032903f8043703880341002102200e41014b0d020240200e0e020004000b200341f0066a41186a20034188036a41186a290300370300200341f0066a41106a20034188036a41106a290300370300200341f0066a41086a20034188036a41086a29030037030020032003290388033703f00641002107200341f0066a21060c040b024020032802a405450d002002102f0b200041086a410a360200200041046a41a2c7c400360200200041026a41043a000020004183223b0100410121060c160b200041023a0000410121060c150b200e210603402006410176220720026a220820022009200841306c6a20034188036a412010ea064101481b2102200620076b220641014b0d000b0b2009200241306c6a220620034188036a412010ea062207450d01200341f0066a41186a20034188036a41186a290300370300200341f0066a41106a20034188036a41106a290300370300200341f0066a41086a20034188036a41086a29030037030020032003290388033703f006200341f0066a2106200e2007411f7620026a2207490d040b0240200e201e470d00201e41016a2202201e490d0f201e41017422082002200820024b1bad42307e221f422088a70d0f201fa722024100480d0f02400240201e0d002002102d21090c010b2009201e41306c2002103121090b2009450d0b2003200936029805200241306e211e0b2009200741306c6a220241306a2002200e20076b41306c10e9061a200241286a200537030020022004370320200241186a200641186a290300370300200241106a200641106a290300370300200241086a200641086a29030037030020022006290300370300200e41016a210e0c010b200341c8046a41186a220720034188036a41186a290300370300200341c8046a41106a220820034188036a41106a290300370300200341c8046a41086a220a20034188036a41086a29030037030020032003290388033703c804200e20024d0d01200620032903c804370300200a290300211f20082903002120200729030021192009200241306c6a22022004370320200641186a2019370300200641106a2020370300200641086a201f370300200241286a20053703000b200341f0066a10e30420032802f0062124200328029805210f02400240200e0d00410021090c010b202420032802f80622024105746a210a2024410020021b2106202441206a202420021b21024100210d4100210b0340200b220c41016a210b200f200c41306c6a2109024002400340024020060d00410021060c020b20062009412010ea06220741004a0d01410020022002200a4622081b21062002200241206a20081b2208210220074100480d000b024002400240200d0d004100210d0c010b200c200d6b2202200e4f0d0120034180086a41286a2207200f200241306c6a220241286a220c29030037030020034180086a41206a2210200241206a221129030037030020034180086a41186a2212200241186a221329030037030020034180086a41106a2214200241106a221529030037030020034180086a41086a2216200241086a22172903003703002003200229030037038008200941086a22182903002105200941106a221a2903002104200941186a221b290300211f200941206a221c290300212020092903002119200c200941286a221d290300370300201120203703002013201f370300201520043703002017200537030020022019370300201d2007290300370300201c2010290300370300201b2012290300370300201a20142903003703002018201629030037030020092003290380083703000b200821020c020b4188bbca002002200e103b000b200d41016a210d0b200b200e470d000b200e200d4100200d417f6a200e491b6b21090b024020032802f406450d002024102f0b20034180086a41186a420037030020034180086a41106a2207420037030020034180086a41086a22024200370300200342003703800841bd98ca00ad42808080808002841001220629000021052002200641086a29000037030020032005370380082006102f41ebdec700ad4280808080f00084100122062900002105200341a8026a41086a2208200641086a290000370300200320053703a8022006102f200720032903a8022205370300200341f0066a41086a2002290300370300200341f0066a41106a2005370300200341f0066a41186a200829030037030020032003290380083703f00620034180086a200341f0066a10e4044100210602400240200329028408420020032802800822021b2205422088a7220741306c22080d004101210a4100210c0c010b200841306d220841ffffff3f712008470d0d200841057422084100480d0d2008102d220a450d092008410576210c0b2005a7210d2002410820021b210b02402007450d00200741306c210841012107200a2102200b21060340200641086a2900002105200641106a29000021042006290000211f200241186a200641186a290000370000200241106a2004370000200241086a20053700002002201f370000200741016a2107200241206a2102200641306a2106200841506a22080d000b200741017621060b0240200d450d00200b102f0b0240200c450d00200a102f0b02400240200920064f0d00202621020c010b4101210220264101460d00200341f0066a41186a4200370300200341f0066a41106a22084200370300200341f0066a41086a22064200370300200342003703f006418de6c300ad4280808080e000841001220729000021052006200741086a290000370300200320053703f0062007102f419ce6c300ad4280808080e00084100122072900002105200341a8026a41086a220a200741086a290000370300200320053703a8022007102f200820032903a802220537030020034180086a41086a200629030037030020034180086a41106a200537030020034180086a41186a200a290300370300200320032903f00637038008200341e8006a20034180086a412010950120032802682107200328026c210820034198046a41186a200341a8016a41186a290300220537030020034198046a41106a200341a8016a41106a290300220437030020034198046a41086a200341a8016a41086a290300221f370300200320032903a801222037039804200641083a0000200341f9066a202037000020034181076a201f37000020034189076a200437000020034191076a20053700002003410c3a00f00641c8e1ca004100200341f0066a108c0120084180e1016a4180e10120071b21250b200341f0066a41106a200341c8066a290300370300200341f0066a41186a200341c0066a41106a290300370300200341f0066a41206a200341c0066a41186a290300370300200341f0066a41286a200341c0066a41206a290300370300200341a0076a200341c0066a41286a290300370300200341b8076a2009360200200341f0066a41c4006a201e360200200341ac076a2025360200200320213703f006200320032903c0063703f8062003200f3602b007200320023602a807200341bc076a200341b0056a41c40010e8061a20034180086a200341a8016a10df042003280280082102200320032802880836028c032003200236028803200341f0066a20034188036a10da040240200328028408450d002002102f0b0240201e450d00200f102f0b200041043a0000410121060c100b419cc3ca002002200e103b000b419ae3c300411e41f8b4ca001039000b200041023a0000410121060c0d0b20004183223b0100200041086a410c360200200041046a41acc7c400360200200041026a41033a000020060d090c0a0b200020023a0000200020032903c804370001200041086a20032800cf0436000020060d0c0c0d0b200041023a00000c0a0b41012106200041013a00000c090b20034190056a200141196a29000037030020034188056a200141116a29000037030020034180056a200141096a290000370300200320012900013703f804024002400240024020022d00000d0020022d00014101470d0020034188036a41186a200341f8046a41186a29030037030020034188036a41106a200341f8046a41106a29030037030020034188036a41086a200341f8046a41086a290300370300200320032903f80437038803200341a8016a20034188036a10e204200341f0066a20032802a801220920032802b00110e004200341c8046a41086a220a200341f0066a41106a290300370300200341c8046a41106a220b200341f0066a41186a290300370300200341c8046a41186a220c200341f0066a41206a290300370300200341c8046a41206a220d200341f0066a41286a290300370300200341c8046a41286a220e200341a0076a290300370300200320032903f8063703c804200341a8076a2802002102200341ac076a2802002107200341b0076a2802002108200341f0066a41c4006a2802002106200341b8076a280200210f20032903f006210520034188036a200341bc076a41c40010e8061a024020054202510d0020034198046a41286a200e29030037030020034198046a41206a200d29030037030020034198046a41186a200c29030037030020034198046a41106a200b29030037030020034198046a41086a200a290300370300200320032903c80437039804200341a8026a20034188036a41c40010e8061a024020032802ac01450d002009102f0b200341e8036a41086a220920034198046a41086a290300370300200341e8036a41106a220a20034198046a41106a290300370300200341e8036a41186a220b20034198046a41186a290300370300200341e8036a41206a220c20034198046a41206a290300370300200341e8036a41286a220d20034198046a41286a29030037030020032003290398043703e803200341c8016a200341a8026a41c40010e8061a200341c0066a41086a220e2009290300370300200341c0066a41106a2209200a290300370300200341c0066a41186a220a200b290300370300200341c0066a41206a220b200c290300370300200341c0066a41286a220c200d290300370300200320032903e8033703c00620034180086a200341c8016a41c40010e8061a200341f8056a200f360200200341b0056a41c4006a2006360200200341ec056a2007360200200341b0056a41106a200e290300370300200341b0056a41186a2009290300370300200341b0056a41206a200a290300370300200341b0056a41286a200b290300370300200341e0056a200c290300370300200320053703b005200320083602f005200320032903c0063703b805200320023602e805200341fc056a20034180086a41c40010e8061a20024101460d024190c7c4002102410621070c030b024020032802ac01450d002009102f0b200041086a410a360200200041046a41a2c7c400360200200041026a41043a000020004183223b0100410121060c0c0b200041023a0000410121060c0b0b200341f0066a41186a4200370300200341f0066a41106a220a4200370300200341f0066a41086a22024200370300200342003703f006418de6c300ad4280808080e000841001220929000021052002200941086a290000370300200320053703f0062009102f419ce6c300ad4280808080e00084100122092900002105200341a8026a41086a220b200941086a290000370300200320053703a8022009102f200a20032903a802220537030020034180086a41086a200229030037030020034180086a41106a200537030020034180086a41186a200b290300370300200320032903f00637038008200341a0016a20034180086a412010950120032802a401410020032802a0011b20074f0d014187c7c4002102410721070b20004183223b0100200041086a4109360200200041046a2002360200200041026a20073a00002006450d082008102f410121060c090b200341f0066a200341fc056a10de0420033502f80642208620032802f0062202ad841005024020032802f406450d002002102f0b200341f0066a41186a200341f8046a41186a290300370300200341f0066a41106a200341f8046a41106a290300370300200341f0066a41086a200341f8046a41086a290300370300200320032903f8043703f00620034180086a200341f0066a10e2042003350288084220862003280280082202ad8410050240200328028408450d002002102f0b200341f0066a200341b0056a41900110e8061a200341b8076a280200211d200341b4076a280200212820032802b007211820034188036a10e304200328028803211e02400240201d0d004100211d0c010b201e20032802900322024105746a210a201e410020021b2106201e41206a201e20021b21024100210d4100210b0340200b220c41016a210b2018200c41306c6a2109024002400340024020060d00410021060c020b20062009412010ea06220741004a0d01410020022002200a4622081b21062002200241206a20081b2208210220074100480d000b024002400240200d0d004100210d0c010b200c200d6b2202201d4f0d0120034180086a41286a22072018200241306c6a220241286a220c29030037030020034180086a41206a220e200241206a220f29030037030020034180086a41186a2210200241186a221129030037030020034180086a41106a2212200241106a221329030037030020034180086a41086a2214200241086a22152903003703002003200229030037038008200941086a22162903002105200941106a22172903002104200941186a221a290300211f200941206a221b290300212020092903002119200c200941286a221c290300370300200f20203703002011201f370300201320043703002015200537030020022019370300201c2007290300370300201b200e290300370300201a2010290300370300201720122903003703002016201429030037030020092003290380083703000b200821020c020b4188bbca002002201d103b000b200d41016a210d0b200b201d470d000b200d450d00201d201d200d6b2202201d2002491b211d0b0240200328028c03450d00201e102f0b201d4115490d020240201d4101762229ad42307e2205422088a70d002005a72202417f4c0d004108212502402002450d002002102d2225450d02200241306e21290b201841506a212a201841907f6a212b4104211041002126410021164100210e201d2115034020152108410021154101210902402008417f6a2227450d000240024002400240024002402018202741306c6a220241206a290300200841306c220720186a41406a2206290300220454200241286a290300221f200641086a290300220554201f2005511b0d002008417e6a210b202b20076a2102410021154100210603400240200b2006470d00200821090c080b2004200229030022205a21072005200241086a290300221f5121092005201f5a210a200241506a2102200641016a210620202104201f21052007200a20091b0d000b200641016a21092006417f7320086a21070c010b202b200841066c410374220b6a21022027210702400340024020074101470d00410021070c020b2004200229030022205421062005200241086a290300221f5121092005201f54210a200241506a21022007417f6a210720202104201f21052006200a20091b0d000b0b20082007490d012008201d4b0d03200820076b2209410176220a450d00202a200b6a21022018200741306c6a2106034020034180086a41286a220b200641286a220c29030037030020034180086a41206a220d200641206a220f29030037030020034180086a41186a2211200641186a221229030037030020034180086a41106a2213200641106a221429030037030020034180086a41086a2215200641086a22172903003703002003200629030037038008200241086a221a2903002105200241106a221b2903002104200241186a221c290300211f200241206a221e2903002120200241286a2224290300211920062002290300370300200c2019370300200f20203703002012201f37030020142004370300201720053703002024200b290300370300201e200d290300370300201c2011290300370300201b2013290300370300201a20152903003703002002200329038008370300200241506a2102200641306a2106200a417f6a220a0d000b0b024020070d00200721150c050b0240200941094d0d00200721150c050b2008201d4b0d012018200741306c6a210c034020082007417f6a2215490d040240200820156b22094102490d002018200741306c6a220241206a220a2903002018201541306c6a220641206a220b290300221f5a200241286a220d2903002204200641286a220f29030022055a20042005511b0d00200629030021042006200229030037030020034180086a41186a2211200641186a221229030037030020034180086a41106a2213200641106a221429030037030020034180086a41086a2217200641086a221a290300370300201a200241086a2903003703002014200241106a2903003703002012200241186a290300370300200b200a290300370300200f200d2903003703002003200437038008024020094103490d002027210a200c210b20064180016a290300201f5a20064188016a290300220420055a20042005511b0d0002400340200b220241286a200241d8006a290300370300200241206a200241d0006a290300370300200241186a200241c8006a290300370300200241106a200241c0006a290300370300200241086a200241386a2903003703002002200241306a220b2903003703002007200a417f6a220a460d0120024180016a290300201f5a20024188016a290300220420055a20042005511b450d000b0b200241306a21020b2002201f3703202002200329038008370300200241286a2005370300200241186a2011290300370300200241106a2013290300370300200241086a20172903003703000b2015450d05200c41506a210c201521072009410a4f0d050c000b0b20072008104b000b20082007417f6a2215490d010b2008201d104a000b20152008104b000b0240200e2026470d00202641016a22022026490d07202641017422062002200620024b1b220241ffffffff01712002470d07200241037422024100480d070240024020260d002002102d21100c010b201020264103742002103121100b2010450d03200241037621262016210e0b2010200e4103746a2202200936020420022015360200201641016a220e21160240200e4102490d000240034002400240024002402010200e417f6a22164103746a2202280200450d00200e41037420106a220841746a2802002207200228020422064d0d000240200e41024b0d00200e21164102210e2015450d0b0c080b2010200e417d6a22114103746a2802042202200620076a4d0d010240200e41034b0d00200e21164103210e2015450d0b0c080b200841646a280200200220076a4d0d01200e21160c060b200e4103490d01200228020421062010200e417d6a22114103746a28020421020b20022006490d010b200e417e6a21110b024002400240024002400240200e201141016a22174b221a450d00200e20114b221b450d01201020114103746a2212280204221c20122802006a2202201020174103746a22132802002214490d022002201d4b0d032018201441306c6a220d2013280204220f41306c22066a2108200241306c2107200220146b220a200f6b2202200f4f0d0420252008200241306c220610e806220a20066a210902400240200f4101480d00200241014e0d010b20082102200a21060c060b202a20076a21072008210203402007200241506a220b200941506a220c200941706a2206290300200241706a220829030054200641086a2903002205200841086a29030022045420052004511b22081b2206290300370300200741086a200641086a290300370300200741106a200641106a290300370300200741186a200641186a290300370300200741206a200641206a290300370300200741286a200641286a2903003703002009200c20081b21090240200d200b200220081b2202490d00200a21060c070b200741506a2107200a2106200a2009490d000c060b0b41c4c2ca002017200e103b000b41c4c2ca002011200e103b000b20142002104b000b2002201d104a000b2025200d200610e806220c20066a210902400240200f4101480d00200a200f4a0d010b200d2102200c21060c010b201820076a210b200c2106200d21020340200220082006200841206a290300200641206a29030054200841286a2903002205200641286a29030022045420052004511b220a1b2207290300370300200241086a200741086a290300370300200241106a200741106a290300370300200241186a200741186a290300370300200241206a200741206a290300370300200241286a200741286a2903003703002006200641306a200a1b2106200241306a2102200841306a2008200a1b2208200b4f0d01200920064b0d000b0b20022006200920066b220720074130706b10e8061a0240201b450d0020122014360200201241046a201c200f6a360200201a450d022013201341086a200e2017417f736a41037410e9061a2016210e201641014d0d030c010b0b419cc3ca002011200e103b000b41b8e3c300411d41f8b4ca001039000b2015450d030c000b0b103d000b1036000b02402026450d002010102f0b2029450d012025102f0c010b201d4102490d00201d417f6a21072018201d41306c6a21094100210a0340024002400240201d20072202417f6a2207490d00201d20076b22084102490d022018200241306c6a220241206a220b2903002018200741306c6a220641206a220c290300221f5a200241286a220d2903002204200641286a220e29030022055a20042005511b0d02200629030021042006200229030037030020034180086a41186a220f200641186a221029030037030020034180086a41106a2211200641106a221229030037030020034180086a41086a2213200641086a22142903003703002014200241086a2903003703002012200241106a2903003703002010200241186a290300370300200c200b290300370300200e200d290300370300200320043703800820084103490d01200a21082009210b20064180016a290300201f5a20064188016a290300220420055a20042005511b0d010340200b220241506a22062002290300370300200641286a200241286a290300370300200641206a200241206a290300370300200641186a200241186a290300370300200641106a200241106a290300370300200641086a200241086a2903003703002008417f6a2208450d02200241306a210b200241d0006a290300201f5a200241d8006a290300220420055a20042005511b0d020c000b0b2007201d104b000b2002201f3703202002200329038008370300200241286a2005370300200241186a200f290300370300200241106a2011290300370300200241086a20132903003703000b200a41016a210a200941506a210920070d000b0b200341c8016a41f4c7c40010b40220034180086a200341c8016a108d020240201d201d41017622024d0d0020034188086a29030022052018200241306c6a220241286a29030022042002290320221f200329038008222056200420055620042005511b22021b21042020201f20021b2105024020032903f0064201520d00200341a8026a41186a200341f0066a41206a290300370300200341a8026a41106a200341f0066a41186a290300370300200341b0026a200341f0066a41106a290300370300200320032903f8063703a802200341f0066a41286a290300211f2003200341f0066a41306a29030022203703c8062003201f3703c0060240201f202084500d002003200341a8026a3602c80420034188036a200341a8026a200341c0066a200341c8046a1096012003290388034201520d00200329039003211f200341b8086a20034188036a41106a290300370300200341b0086a201f37030020034180086a41086a41003a000020034189086a20032903a80237000020034191086a200341a8026a41086a29030037000020034199086a200341a8026a41106a290300370000200341a1086a200341c0026a290300370000200341033a00800841c8e1ca00410020034180086a108c010b200341a8026a200341dc076a412010ea06450d0020034190016a2005200442e400420010ee0620034180016a200329039001221f20034190016a41086a2903002220429c7f427f10ed06200341f0006a201f20204214420010ed0620034180086a200341c8016a200341a8026a2003290370222020052003290380017ca741ff0071220241146c200241056e2202419c7f6c6a41fcff037141324b20026aad7c221f200341f0006a41086a290300201f202054ad7c2220410110f202200420207d2005201f54ad7d21042005201f7d21050b4101210620034180086a200341c8016a200341dc076a20052004410110f20202402028450d002018102f0b200041043a00000c050b41c4c2ca002002201d103b000b1038000b2007102f0b41002107410121060c040b410121060b410121070c020b2007102f0b41012107410021060b024020012d0000417c6a220241024b0d000240024020020e03010200010b2007450d01200141286a280200450d01200141246a280200102f0c010b2006450d00200141286a280200450d00200141246a280200102f0b20034180096a24000b8b0101017f41f2cbca00ad4280808080d001841008024002400240024020002d00000e0400010203000b200041046a29020010080f0b41e4cbca00ad4280808080e0018410080f0b41dacbca00ad4280808080a0018410080f0b20003100011019200041026a31000010190240200041046a2802002201450d00200041086a3502004220862001ad8410080b0b9c06010d7f23004180016b220224002002412036020c20022001360208200241106a2001ad42808080808004841002107302400240024002400240024020022802102203450d00200228021421042002200241186a280200360224200220033602202002200241206a10e60120022802000d0320022802042205200228022422014105762206200620054b1b22074105742206417f4c0d010240024020070d00410121080c010b2006102d2208450d030b02402005450d004100210903402001210a200241003a00782009220b41016a2109410021010240024002400340200a2001460d01200241d8006a20016a200228022022062d00003a00002002200641016a3602202002200141016a22063a00782006210120064120470d000b200241386a41186a220c200241d8006a41186a290300370300200241386a41106a220d200241d8006a41106a290300370300200241386a41086a220e200241d8006a41086a290300370300200220022903583703382007200b470d020240200b41017422012009200120094b1b220141ffffff3f712001470d002001410574220141004e0d020b1038000b200241003602240240200141ff0171450d00200241003a00780b2007450d072008102f0c070b02400240200b0d002001102d21080c010b2008200b4105742001103121080b2008450d05200141057621070b200a20066b21012008200b4105746a220b2002290338370000200b41186a200c290300370000200b41106a200d290300370000200b41086a200e29030037000020092005470d000b2002200a20066b3602240b2008450d032000200736020420002008360200200041086a20053602000c040b200041003602000c040b103d000b1036000b20024100360240200242013703382002410b36022c2002200241086a3602282002200241386a360234200241ec006a41013602002002420137025c200241b885c7003602582002200241286a360268200241346a41d8dbc100200241d8006a103c1a200235024042208620023502388410080240200228023c450d002002280238102f0b200041003602000b2004450d002003102f0b20024180016a24000ba07f05037f037e167f027e037f230041b0046b22032400024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020012d00000e0a0001020304050a0b0c0d000b2003419c016a41013602002003420137028c01200341b4d8c90036028801200341043602ec03200341fcdbc9003602e8032003200341e8036a3602980120034188016a41e8d8c9001043000b200141246a2802002104200341e0006a200141196a290000370300200341d8006a200141116a290000370300200341d0006a200141096a2900003703002003200129000137034820032002411a6a2901003703a0012003200241026a2901003703880120032002410a6a290100370390012003200241126a2901003703980102400240024020022d00014101470d0020022d000041ff01710d00200341e8006a41186a20034188016a41186a290300370300200341e8006a41106a20034188016a41106a290300370300200341e8006a41086a20034188016a41086a290300370300200320032903880137036820034188016a200341e8006a10bf0520032d0088014101470d01200341ff036a2202200341a1016a290000370000200341e8036a41106a220520034188016a41126a290100370300200341d1036a20034188016a410a6a290100370000200341d9036a2005290300370000200341c8036a41186a2002290000370000200320032d0089013a00c8032003200329018a013700c903200341c8036a200341c8006a412010ea060d0220034188016a200441b00210e8061a200341e8036a410a6a200341d0006a290300370100200341e8036a41126a200341d8006a29030037010020034182046a200341e0006a29030037010020034180023b01e803200320032903483701ea03200020034188016a200341e8036a108b010c240b200041023a00002004108e010c230b20004183343b0100200041086a410a360200200041046a41b7cdc700360200200041026a41003a00002004108e010c220b20004183343b0100200041086a410a360200200041046a41b7cdc700360200200041026a41003a00002004108e010c210b200341c8036a41186a200141196a290000370300200341c8036a41106a200141116a290000370300200341c8036a41086a200141096a290000370300200320012900013703c803200341e8036a41186a200141396a290000370300200341e8036a41106a200141316a290000370300200341e8036a41086a200141296a2900003703002003200141216a2900003703e80320022d000120022d0000410047720d0341e796c800ad4280808080800184100122022900002106200341b8036a41086a200241086a290000370300200320063703b8032002102f41d49ac800ad4280808080d00084100122022900002106200341c8006a41086a200241086a290000370300200320063703482002102f4120102d2202450d19200220032903e803370000200241186a200341e8036a41186a290300370000200241106a200341e8036a41106a290300370000200241086a200341e8036a41086a2903003700002002ad4280808080800484100322042900002106200441086a2900002107200441106a290000210820034188016a41186a2205200441186a29000037030020034188016a41106a2209200837030020034188016a41086a220a200737030020032006370388012004102f2002102f41c000102d2202450d19200220032903b803370000200241086a200341b8036a41086a29030037000020022003290348370010200241186a200341c8006a41086a2903003700002002200329038801370020200241286a200a290300370000200241306a2009290300370000200241386a20052903003700004120102d2204450d19200420032903c803370000200441186a200341c8036a41186a2205290300370000200441106a200341c8036a41106a2209290300370000200441086a200341c8036a41086a220a2903003700002002ad42808080808008842004ad428080808080048410042004102f2002102f20034192016a200a2903003701002003419a016a2009290300370100200341a2016a2005290300370100200341aa016a20032903e803370100200341b2016a200341e8036a41086a290300370100200341ba016a200341e8036a41106a290300370100200341c2016a200341e8036a41186a29030037010020034193083b018801200320032903c80337018a0141c8e1ca00410020034188016a108c01200041043a0000410121040c1e0b200141086a2802002109200141046a280200210a02400240024002400240024020022d00000d0020022d00014101470d002001410c6a280200210b200141106a280200210c200141026a2f0100210d200241196a2d00002104200241186a2d00002105200241166a2f0100210e200241156a2d0000210f200241146a2d00002110200241126a2f01002111200241116a2d00002112200241106a2d000021132002410e6a2f010021142002410d6a2d000021152002410c6a2d000021162002410a6a2f01002117200241096a2d00002118200241086a2d00002119200241066a2f0100211a200241056a2d0000211b200241046a2d0000211c200241026a2f0100211d20032002411a6a2901003703e003200320043a00df03200320053a00de032003200e3b01dc032003200f3a00db03200320103a00da03200320113b01d803200320123a00d703200320133a00d603200320143b01d403200320153a00d303200320163a00d203200320173b01d003200320183a00cf03200320193a00ce032003201a3b01cc032003201b3a00cb032003201c3a00ca032003201d3b01c80341e796c800ad4280808080800184100122022900002106200341e8036a41086a200241086a290000370300200320063703e8032002102f41f898c800ad4280808080b0018410012202290000210620034188016a41086a200241086a29000037030020032006370388012002102f4120102d2204450d1e200420032903c803370000200441186a200341c8036a41186a290300370000200441106a200341c8036a41106a290300370000200441086a200341c8036a41086a2903003700002004ad428080808080048410032202290018210620022d0017210520022d0016210e20022f0014210f20022d0013211020022d0012211120022f0010211220022d000f211320022d000e211420022f000c211520022d000b211620022d000a211720022f0008211820022d0007211920022d0006211a20022f0004211b20022d0003211c20022d0002211d20022f0000211e2002102f2004102f41c000102d2202450d1e200220032903e803370000200220032903880137001020022006370038200220053a00372002200e3a00362002200f3b0034200220103a0033200220113a0032200220123b0030200220133a002f200220143a002e200220153b002c200220163a002b200220173a002a200220183b0028200220193a00272002201a3a00262002201b3b00242002201c3a00232002201d3a00222002201e3b0020200241086a200341e8036a41086a290300370000200241186a20034188016a41086a290300370000200341186a200241c00041c8e1ca004100410010b501200328021821042002102f20044101460d01200d450d02200b450d03200b200d490d04200b41094b0d11200b41016a2104200a210203402004417f6a22044102490d062002200241206a2205412010ea06210e20052102200e4100480d000b20004183343b0100200041086a4109360200200041046a4187cdc700360200200041026a41043a00000c240b200041023a00000c230b20004183343b0100200041086a4112360200200041046a41e7ccc700360200200041026a41063a00000c220b20004183343b0100200041086a410d360200200041046a41aacdc700360200200041026a41013a00000c210b20004183343b0100200041086a4110360200200041046a419acdc700360200200041026a41023a00000c200b20004183343b0100200041086a4110360200200041046a419acdc700360200200041026a41023a00000c1f0b200341086a200bad42004280c0f4c198af0b420010ed062003200329030822074280808d93f5d7f1007c22063703682003200341086a41086a2903002006200754ad7c22073703702003200341c8036a360298042003200341c8036a3602482003200341c8006a36029001200320034198046a36028c012003200341e8006a36028801200341e8036a200341c8036a20034188016a1094010240024020032802e8034101470d00200320032900ed03370388012003200341f4036a28000036008f0120032d00ec0321020c010b41042102200341e8036a41086a2903004201520d00200341e8036a41106a290300210820032802482104200341c0016a200341e8036a41186a290300370300200341b8016a200837030020034188016a41086a41003a000020034191016a200429000037000020034199016a200441086a290000370000200341a1016a200441106a290000370000200341a9016a200441186a290000370000200341033a00880141c8e1ca00410020034188016a108c010b20032003290388013703b8032003200328008f013600bf030240200241ff01714104470d0041e796c800ad4280808080800184100122022900002108200341b8036a41086a200241086a290000370300200320083703b8032002102f41f898c800ad4280808080b00184100122022900002108200341c8006a41086a200241086a290000370300200320083703482002102f4120102d2202450d19200220032903c803370000200241186a200341c8036a41186a290300370000200241106a200341c8036a41106a290300370000200241086a200341c8036a41086a2903003700002002ad4280808080800484100322042900002108200441086a290000211f200441106a290000212020034188016a41186a2205200441186a29000037030020034188016a41106a220e202037030020034188016a41086a201f37030020032008370388012004102f2002102f41c000102d2214450d19201420032903b803370000201441086a200341b8036a41086a29030037000020142003290348370010201441186a200341c8006a41086a2903003700002014200329038801370020201441286a20034188016a41086a290300370000201441306a200e290300370000201441386a2005290300370000200341003602900120034201370388014104102d2202450d1920034284808080c00037028c0120032002360288012002200c36000020024104411410312202450d19200220063700042002410c6a200737000020034294808080c00237028c012003200236028801200b20034188016a1069200b4105742112410020032802900122116b2113200328028c0121104100210e410021020340201120026a210f02400240201320106a200e6a4120490d0020032802880121040c010b200f41206a2204200f490d1d201041017422052004200520044b1b22054100480d1d0240024020100d002005102d21040c010b20032802880120102005103121040b2004450d1b2003200536028c012003200436028801200521100b200420116a20026a220441086a200a20026a220541086a290000370000200441106a200541106a290000370000200441186a200541186a2900003700002003200f41206a3602900120042005290000370000200e41606a210e2012200241206a2202470d000b201120026a210502400240201020116b20026b4102490d0020032802880121040c010b200541026a22042005490d1c2010410174220e2004200e20044b1b220e4100480d1c0240024020100d00200e102d21040c010b2003280288012010200e103121040b2004450d1a2003200e36028c012003200436028801200e21100b200420116a20026a200d3b00002014ad4280808080800884200541026aad4220862004ad84100402402010450d002004102f0b2014102f02402009450d00200a102f0b20034192016a200341d0036a2903003701002003419a016a200341d8036a290300370100200341a2016a200341e0036a290300370100200341133b018801200320032903c80337018a014100210541c8e1ca00410020034188016a108c01200041043a0000410121040c210b200020023a0000200020032903b803370001200041086a20032800bf033600000c1e0b200341e8006a41186a200141196a290000370300200341e8006a41106a200141116a290000370300200341e8006a41086a200141096a2900003703002003200129000137036820022d00000d0b20022d00014101470d0b200241196a2d00002104200241186a2d00002105200241166a2f01002109200241156a2d0000210a200241146a2d0000210e200241126a2f0100210f200241116a2d00002110200241106a2d000021112002410e6a2f010021122002410d6a2d000021132002410c6a2d000021142002410a6a2f01002115200241096a2d00002116200241086a2d00002117200241066a2f01002118200241056a2d00002119200241046a2d0000211a200241026a2f0100211b20032002411a6a2901003703e003200320043a00df03200320053a00de03200320093b01dc032003200a3a00db032003200e3a00da032003200f3b01d803200320103a00d703200320113a00d603200320123b01d403200320133a00d303200320143a00d203200320153b01d003200320163a00cf03200320173a00ce03200320183b01cc03200320193a00cb032003201a3a00ca032003201b3b01c80341e796c800ad4280808080800184100122022900002106200341b8036a41086a200241086a290000370300200320063703b8032002102f41f898c800ad4280808080b00184100122022900002106200341c8006a41086a200241086a290000370300200320063703482002102f4120102d2202450d1720022003290368370000200241186a200341e8006a41186a290300370000200241106a200341e8006a41106a290300370000200241086a200341e8006a41086a2903003700002002ad4280808080800484100322042900002106200441086a2900002107200441106a290000210820034188016a41186a2205200441186a29000037030020034188016a41106a2209200837030020034188016a41086a200737030020032006370388012004102f2002102f41c000102d2202450d17200220032903b803370000200241086a200341b8036a41086a29030037000020022003290348370010200241186a200341c8006a41086a2903003700002002200329038801370020200241286a20034188016a41086a290300370000200241306a2009290300370000200241386a2005290300370000200341306a200241c00041c8e1ca004100410010b501200328023021052002102f4101210420054101470d09200341c8006a200341e8006a10c0054120102d2202450d17200220032903c803370000200241186a200341c8036a41186a290300370000200241106a200341c8036a41106a290300370000200241086a200341c8036a41086a29030037000020032002ad428080808080048410062204290000370390042004102f20034194016a200241206a360200200341003a0098012003200236029001200320034190046a41086a220f36028c01200320034190046a36028801200341e8036a20034188016a106c2002102f20032802e803210a02400240200328024c2205200328025022046b20032802f0032209490d00200328024821020c010b200420096a22022004490d1a2005410174220e2002200e20024b1b220e4100480d1a0240024020050d00200e102d21020c010b20032802482005200e103121020b2002450d182003200e36024c20032002360248200e21050b2003200420096a220e360250200220046a200a200910e8061a024020032802ec03450d00200a102f0b200341286a2002200e41c8e1ca004100410010b5012003280228210902402005450d002002102f0b4101210420094101460d0c2003420037035020034280808d93f5d7f1003703482003200341c8036a360290042003200341c8036a36029804200320034198046a36029001200320034190046a36028c012003200341c8006a36028801200341e8036a200341c8036a20034188016a1094010240024020032802e8034101470d00200320032900ed03370388012003200341f4036a28000036008f0120032d00ec0321020c010b41042102200341e8036a41086a2903004201520d00200341e8036a41106a29030021062003280298042104200341c0016a200341e8036a41186a290300370300200341b8016a200637030020034188016a41086a41003a000020034191016a200429000037000020034199016a200441086a290000370000200341a1016a200441106a290000370000200341a9016a200441186a290000370000200341033a00880141c8e1ca00410020034188016a108c010b20032003290388013703b8032003200328008f013600bf030240200241ff01714104470d0020034188016a41186a420037030020034188016a41106a2205420037030020034188016a41086a220242003703002003420037038801418de6c300ad4280808080e000841001220429000021062002200441086a29000037030020032006370388012004102f419ce6c300ad4280808080e00084100122042900002106200341c8006a41086a2209200441086a290000370300200320063703482004102f200520032903482206370300200341e8036a41086a2002290300370300200341e8036a41106a2006370300200341e8036a41186a200929030037030020032003290388013703e803200341206a200341e8036a41201095012003280224210220032802202104200341a4016a4100360200200342003703900120034280808d93f5d7f100370388012003420137029c0120032002410020041b36029801200341b8036a200341e8006a10c0054120102d2202450d18200220032903c803370000200241186a200341c8036a41186a290300370000200241106a200341c8036a41106a290300370000200241086a200341c8036a41086a29030037000020032002ad428080808080048410062204290000370390042004102f200341f4036a200241206a360200200341003a00f803200320023602f0032003200f3602ec03200320034190046a3602e803200341c8006a200341e8036a106c2002102f2003280248210a0240024020032802bc03220520032802c00322046b20032802502209490d0020032802b80321020c010b200420096a22022004490d1b2005410174220e2002200e20024b1b220e4100480d1b0240024020050d00200e102d21020c010b20032802b8032005200e103121020b2002450d192003200e3602bc03200320023602b803200e21050b2003200420096a220e3602c003200220046a200a200910e8061a0240200328024c450d00200a102f0b2003200e3602ec03200320023602e80320034188016a200341e8036a10be0502402005450d002002102f0b200341aa016a20032903c80337010020034192016a200341e8006a41086a2903003701002003419a016a200341e8006a41106a290300370100200341a2016a200341e8006a41186a290300370100200341b2016a200341c8036a41086a290300370100200341ba016a200341c8036a41106a290300370100200341c2016a200341c8036a41186a29030037010020034193023b0188012003200329036837018a0141c8e1ca00410020034188016a108c01200041043a0000410121040c1d0b200020023a0000200020032903b803370001200041086a20032800bf03360000410121040c1c0b200341e8006a41186a200141196a290000370300200341e8006a41106a200141116a290000370300200341e8006a41086a200141096a29000037030020032001290001370368200341c8036a41186a200141396a290000370300200341c8036a41106a200141316a290000370300200341c8036a41086a200141296a2900003703002003200141216a2900003703c8032002411a6a2901002106200241196a2d00002105200241186a2d00002109200241166a2f0100210a200241156a2d0000210e200241146a2d0000210f200241126a2f01002110200241116a2d00002111200241106a2d000021122002410e6a2f010021132002410d6a2d000021142002410c6a2d000021152002410a6a2f01002116200241096a2d00002117200241086a2d00002118200241066a2f01002119200241056a2d0000211a200241046a2d0000211b200241026a2f0100211c41012104024020022d00000d0020022d000141014721040b200320063703a001200320053a009f01200320093a009e012003200a3b019c012003200e3a009b012003200f3a009a01200320103b019801200320113a009701200320123a009601200320133b019401200320143a009301200320153a009201200320163b019001200320173a008f01200320183a008e01200320193b018c012003201a3a008b012003201b3a008a012003201c3b01880102400240024020040d00200341e8036a41186a20034188016a41186a290300370300200341e8036a41106a20034188016a41106a290300370300200341e8036a41086a20034188016a41086a29030037030020032003290388013703e80320034188016a200341e8006a10c1050240200328029c01220a450d00200341a4016a2204280200210220032802a001210f20034188016a200341e8006a200341c8036a10c205200328029c01220e450d0520034190016a290300210620042802002111200329038801210720032802a0012110200328029801211341c6ccc7002112200241014b0d0241002104410921054109210920020e021703170b20004183343b0100200041086a410e360200200041046a41f9ccc700360200200041026a41053a0000410121040c1e0b200041023a0000410121040c1d0b41002104034020042002410176220520046a2209200a20094105746a200341e8036a412010ea0641004a1b2104200220056b220241014b0d000b0b4109210541092109200a20044105746a200341e8036a412010ea060d13201141014b0d034100210220110e020212020b200041023a00000c190b20004183343b0100200041086a410a360200200041046a41cfccc700360200200041026a41083a00000c170b20034188016a41186a200341e8036a41186a29030037030020034188016a41106a200341e8036a41106a29030037030020034188016a41086a200341e8036a41086a290300370300200320032903e803370388014100210520034188016a21040c120b2011210441002102034020022004410176220520026a2209200e20094105746a200341e8036a412010ea0641004a1b2102200420056b220441014b0d000c0f0b0b200341e8006a41186a200141196a290000370300200341e8006a41106a200141116a290000370300200341e8006a41086a200141096a2900003703002003200129000137036820022d00000d0720022d00014101470d07200241196a2d00002104200241186a2d00002105200241166a2f01002109200241156a2d0000210a200241146a2d0000210e200241126a2f0100210f200241116a2d00002110200241106a2d000021112002410e6a2f010021122002410d6a2d000021132002410c6a2d000021142002410a6a2f01002115200241096a2d00002116200241086a2d00002117200241066a2f01002118200241056a2d00002119200241046a2d0000211a200241026a2f0100211b20032002411a6a2901003703e003200320043a00df03200320053a00de03200320093b01dc032003200a3a00db032003200e3a00da032003200f3b01d803200320103a00d703200320113a00d603200320123b01d403200320133a00d303200320143a00d203200320153b01d003200320163a00cf03200320173a00ce03200320183b01cc03200320193a00cb032003201a3a00ca032003201b3b01c80320034188016a200341e8006a10c105024002400240200328029c012205450d0020034188016a41206a280200212120032802a0012109200328029801210e20034188016a200341e8006a200341c8036a10c205200328029c01220a450d01200341a4016a280200212220032802a001210f200328029801211041e796c800ad4280808080800184100122022900002106200341e8036a41086a200241086a290000370300200320063703e8032002102f41d49ac800ad4280808080d0008410012202290000210620034188016a41086a200241086a29000037030020032006370388012002102f4120102d2204450d14200420032903c803370000200441186a200341c8036a41186a290300370000200441106a200341c8036a41106a290300370000200441086a200341c8036a41086a2903003700002004ad428080808080048410032202290018210620022d0017211120022d0016211220022f0014211320022d0013211420022d0012211520022f0010211620022d000f211720022d000e211820022f000c211920022d000b211a20022d000a211b20022f0008211c20022d0007211d20022d0006211e20022f0004210d20022d0003210b20022d0002210c20022f000021232002102f2004102f41c000102d2202450d14200220032903e803370000200220032903880137001020022006370038200220113a0037200220123a0036200220133b0034200220143a0033200220153a0032200220163b0030200220173a002f200220183a002e200220193b002c2002201a3a002b2002201b3a002a2002201c3b00282002201d3a00272002201e3a00262002200d3b00242002200b3a00232002200c3a0022200220233b0020200241086a200341e8036a41086a2212290300370000200241186a20034188016a41086a2204290300370000200341c0006a200241c00041c8e1ca004100410010b501200328024021112002102f20114101470d02410c21024185ccc7002104410f210e0c0e0b20004183343b0100200041086a410e360200200041046a41f9ccc700360200200041026a41053a0000410121040c180b20004183343b0100200041086a410a360200200041046a41cfccc700360200200041026a41083a00000c0d0b20034188016a41186a420037030020034188016a41106a22114200370300200442003703002003420037038801418de6c300ad4280808080e000841001220229000021062004200241086a29000037030020032006370388012002102f419ce6c300ad4280808080e00084100122022900002106200341c8006a41086a2213200241086a290000370300200320063703482002102f20112003290348220637030020122004290300370300200341e8036a41106a2006370300200341e8036a41186a201329030037030020032003290388013703e803200341386a200341e8036a412010950102402010200e6a220220104f0d004191ccc7002104410e210e410821020c0c0b02402002200328023c410020032802381b4d0d00410b210241bbccc7002104410a210e0c0c0b02402022202141ffff03714f0d004109210241a4ccc7002104410c210e0c0c0b41e796c800ad4280808080800184100122022900002106200341b8036a41086a200241086a290000370300200320063703b8032002102f41d49ac800ad4280808080d00084100122022900002106200341c8006a41086a200241086a290000370300200320063703482002102f4120102d2202450d11200220032903c803370000200241186a200341c8036a41186a290300370000200241106a200341c8036a41106a290300370000200241086a200341c8036a41086a2903003700002002ad4280808080800484100322042900002106200441086a2900002107200441106a290000210820034188016a41186a220e200441186a29000037030020034188016a41106a2210200837030020034188016a41086a200737030020032006370388012004102f2002102f41c000102d2202450d11200220032903b803370000200241086a200341b8036a41086a29030037000020022003290348370010200241186a200341c8006a41086a2903003700002002200329038801370020200241286a20034188016a41086a290300370000200241306a2010290300370000200241386a200e2903003700004120102d2204450d1120042003290368370000200441186a200341e8006a41186a220e290300370000200441106a200341e8006a41106a2210290300370000200441086a200341e8006a41086a22112903003700002002ad42808080808008842004ad428080808080048410042004102f2002102f200341c8036a10d00220034192016a20112903003701002003419a016a2010290300370100200341a2016a200e290300370100200341aa016a20032903c803370100200341b2016a200341c8036a41086a290300370100200341ba016a200341c8036a41106a290300370100200341c2016a200341c8036a41186a29030037010020034193083b0188012003200329036837018a0141c8e1ca00410020034188016a108c010240200f450d00200a102f0b02402009450d002005102f0b200041043a0000410121040c160b200341c8036a41186a200141196a290000370300200341c8036a41106a200141116a290000370300200341c8036a41086a200141096a290000370300200320012900013703c8032002411a6a2901002106200241196a2d00002105200241186a2d00002109200241166a2f0100210a200241156a2d0000210e200241146a2d0000210f200241126a2f01002110200241116a2d00002111200241106a2d000021122002410e6a2f010021132002410d6a2d000021142002410c6a2d000021152002410a6a2f01002116200241096a2d00002117200241086a2d00002118200241066a2f01002119200241056a2d0000211a200241046a2d0000211b200241026a2f0100211c41012104024020022d00000d0020022d000141014721040b200320063703a001200320053a009f01200320093a009e012003200a3b019c012003200e3a009b012003200f3a009a01200320103b019801200320113a009701200320123a009601200320133b019401200320143a009301200320153a009201200320163b019001200320173a008f01200320183a008e01200320193b018c012003201a3a008b012003201b3a008a012003201c3b018801024020040d00200341e8036a41186a20034188016a41186a290300370300200341e8036a41106a20034188016a41106a290300370300200341e8036a41086a20034188016a41086a29030037030020032003290388013703e803200341c8006a200341e8036a10c0054120102d2202450d11200220032903c803370000200241186a200341c8036a41186a290300370000200241106a200341c8036a41106a290300370000200241086a200341c8036a41086a29030037000020032002ad428080808080048410062204290000370390042004102f20034194016a200241206a360200200341003a0098012003200236029001200320034190046a41086a36028c01200320034190046a36028801200341e8006a20034188016a106c2002102f2003280268210a02400240200328024c2205200328025022046b20032802702209490d00200328024821020c010b200420096a22022004490d142005410174220e2002200e20024b1b220e4100480d140240024020050d00200e102d21020c010b20032802482005200e103121020b2002450d122003200e36024c20032002360248200e21050b2003200420096a220e360250200220046a200a200910e8061a0240200328026c450d00200a102f0b20034188016a2002200e109e050240200328029c012204450d00200ead4220862002ad84100520034188016a41086a2903002106200329038801210720032903a001210802402005450d002002102f0b20034188016a200341c8036a200341e8036a20072006410010bc0120034192016a200341e8036a41086a2903003701002003419a016a200341e8036a41106a290300370100200341a2016a200341e8036a41186a290300370100200341aa016a20032903c803370100200341b2016a200341c8036a41086a290300370100200341ba016a200341c8036a41106a290300370100200341c2016a200341c8036a41186a29030037010020034193063b018801200320032903e80337018a0141c8e1ca00410020034188016a108c0102402008a7450d002004102f0b200041043a0000410121040c170b02402005450d002002102f0b20004183343b0100200041086a410a360200200041046a41cfccc700360200200041026a41083a0000410121040c160b200041023a0000410121040c150b20022d00000d0720022d00014101470d07200241196a2d00002104200241186a2d00002105200241166a2f01002109200241156a2d0000210a200241146a2d0000210e200241126a2f0100210f200241116a2d00002110200241106a2d000021112002410e6a2f010021122002410d6a2d000021132002410c6a2d000021142002410a6a2f01002115200241096a2d00002116200241086a2d00002117200241066a2f01002118200241056a2d00002119200241046a2d0000211a200241026a2f0100211b20032002411a6a2901003703e003200320043a00df03200320053a00de03200320093b01dc032003200a3a00db032003200e3a00da032003200f3b01d803200320103a00d703200320113a00d603200320123b01d403200320133a00d303200320143a00d203200320153b01d003200320163a00cf03200320173a00ce03200320183b01cc03200320193a00cb032003201a3a00ca032003201b3b01c80320034188016a200341c8036a10c0052003280290012202417f4c0d0620032802880121040240024020020d00410121050c010b2002102d2205450d100b20052004200210e8062104200341fc006a20034190016a22092802002205360200200320023602702003200236026c200320043602682003200329038801220637027420034188016a2005ad422086200642ffffffff0f8384101810730240024002402003280288012202450d00200328028c012104024002402009280200220520032802702209490d002003280268220a2002460d01200a2002200910ea06450d010b2004450d012002102f0c010b200341f4006a2109200320053602a0042003200436029c04200320023602980420034188016a20022005109e050240200328029c01220a0d00200341003602c003200342013703b803200341d4006a412c360200200320093602a8042003412c36024c2003200341ac046a3602502003200341a8046a360248200320034198046a3602ac042003200341b8036a36029004200341fc036a4102360200200342023702ec03200341a8dcc9003602e8032003200341c8006a3602f80320034190046a41d8dbc100200341e8036a103c1a20033502c00342208620033502b80384100820032802bc03450d0020032802b803102f0b200341e8036a41086a220220034198046a41086a28020036020020032003290398043703e8030240200341f8006a280200450d002003280274102f0b200920032903e803370200200941086a2002280200360200200a0d010b41e796c800ad4280808080800184100122022900002106200341b8036a41086a200241086a290000370300200320063703b8032002102f41f898c800ad4280808080b00184100122022900002106200341c8006a41086a200241086a290000370300200320063703482002102f4120102d2202450d11200220032903c803370000200241186a200341c8036a41186a290300370000200241106a200341c8036a41106a290300370000200241086a200341c8036a41086a2903003700002002ad4280808080800484100322042900002106200441086a2900002107200441106a290000210820034188016a41186a2205200441186a29000037030020034188016a41106a2209200837030020034188016a41086a200737030020032006370388012004102f2002102f41c000102d2202450d11200220032903b803370000200241086a200341b8036a41086a29030037000020022003290348370010200241186a200341c8006a41086a2903003700002002200329038801370020200241286a20034188016a41086a220a290300370000200241306a2009290300370000200241386a200529030037000020034188016a2002109b050240200328029c012204450d002002ad428080808080088410050b200a2903002106200329038801210720032802a00121052002102f024020040d00410e210241f9ccc7002104410521050c020b200320073703482003200637035002402007200684500d002003200341c8036a3602b803200341e8036a200341c8036a200341c8006a200341b8036a10960120032903e8034201520d0020032903f0032106200341c0016a200341e8036a41106a290300370300200341b8016a200637030020034188016a41086a41003a000020034191016a20032903c80337000020034199016a200341c8036a41086a290300370000200341a1016a200341c8036a41106a290300370000200341a9016a200341e0036a290300370000200341033a00880141c8e1ca00410020034188016a108c010b20034192016a200341d0036a2903003701002003419a016a200341d8036a290300370100200341a2016a200341e0036a290300370100200341930a3b018801200320032903c80337018a0141c8e1ca00410020034188016a108c0102402005450d002004102f0b0240200328026c450d002003280268102f0b0240200341f8006a280200450d002003280274102f0b200041043a0000410121040c160b410b21024199ccc7002104410d210520032802a001450d00200a102f0b20004183343b0100200041086a2002360200200041046a2004360200200041026a20053a00000240200328026c450d002003280268102f0b200341f8006a280200450d132003280274102f410121040c140b20034180016a200141196a290000370300200341f8006a200141116a290000370300200341f0006a200141096a290000370300200320012900013703684101210420022d00014101470d0720022d000041ff01710d0720032002411a6a2901003703e0032003200241026a2901003703c80320032002410a6a2901003703d0032003200241126a2901003703d803200341e8036a200341c8036a10bf05200341a1016a20034180016a29030037000020034199016a200341f8006a29030037000020034191016a200341f0006a2903003700002003200329036837008901200341013a008801024020032d00e8034101470d00200341e8036a41017220034188016a410172412010ea060d0041e796c800ad4280808080800184100122022900002106200341b8036a41086a200241086a290000370300200320063703b8032002102f41d49ac800ad4280808080d00084100122022900002106200341c8006a41086a200241086a290000370300200320063703482002102f4120102d2202450d0f200220032903c803370000200241186a200341c8036a41186a290300370000200241106a200341c8036a41106a290300370000200241086a200341c8036a41086a2903003700002002ad4280808080800484100322042900002106200441086a2900002107200441106a290000210820034188016a41186a2205200441186a29000037030020034188016a41106a2209200837030020034188016a41086a200737030020032006370388012004102f2002102f41c000102d2202450d0f200220032903b803370000200241086a200341b8036a41086a29030037000020022003290348370010200241186a200341c8006a41086a2903003700002002200329038801370020200241286a20034188016a41086a290300370000200241306a2009290300370000200241386a20052903003700002002ad428080808080088410052002102f200341c8036a10ca02200041043a0000410121040c140b20004183343b0100200041086a410a360200200041046a41b7cdc700360200200041026a41003a0000410121040c130b20004183343b0100200041086a410e360200200041046a41f9ccc700360200200041026a41053a00000c120b20004183343b0100200041086a410a360200200041046a4190cdc700360200200041026a41033a00000c120b200041023a0000410121040c100b20004183343b0100200041086a410e360200200041046a41d9ccc700360200200041026a41073a00000c0f0b200041023a0000410121040c0e0b103d000b200041023a0000410121040c0c0b200041023a00000c0b0b20004183343b0100200041086a2002360200200041046a2004360200200041026a200e3a0000200f450d00200a102f0b2009450d082005102f410121040c090b200e20024105746a200341e8036a412010ea0622050d01410e210941adccc7002112410b21050b20004183343b0100200041086a2009360200200041046a2012360200200041026a20053a00002010450d05200e102f0c050b20034188016a41186a200341e8036a41186a29030037030020034188016a41106a200341e8036a41106a29030037030020034188016a41086a200341e8036a41086a290300370300200320032903e8033703880120034188016a210420112005411f7620026a2205490d020b024020112010470d00201041016a22022010490d03201041017422092002200920024b1b220241ffffff3f712002470d03200241057422024100480d030240024020100d002002102d210e0c010b200e201041057420021031210e0b200e450d01200241057621100b200e20054105746a220241206a2002201120056b41057410e9061a200241186a200441186a290000370000200241106a200441106a290000370000200241086a200441086a29000037000020022004290000370000200341a4016a201141016a36020020034188016a41186a2010360200200320063703900120032007370388012003200e36029c01200320133602980120034198046a200341e8006a10c0054120102d2202450d00200220032903c803370000200241186a200341c8036a41186a290300370000200241106a200341c8036a41106a290300370000200241086a200341c8036a41086a29030037000020032002ad428080808080048410062204290000370390042004102f200341d4006a200241206a360200200341003a005820032002360250200320034190046a41086a36024c200320034190046a360248200341b8036a200341c8006a106c2002102f20032802b803211102400240200328029c04220520032802a00422046b20032802c0032209490d0020032802980421020c010b200420096a22022004490d03200541017422122002201220024b1b22124100480d030240024020050d002012102d21020c010b20032802980420052012103121020b2002450d012003201236029c042003200236029804201221050b2003200420096a22123602a004200220046a2011200910e8061a024020032802bc03450d002011102f0b2003201236024c2003200236024820034188016a200341c8006a10be0502402005450d002002102f0b02402010450d00200e102f0b200341aa016a20032903c80337010020034192016a200341e8006a41086a2903003701002003419a016a200341e8006a41106a290300370100200341a2016a200341e8006a41186a290300370100200341b2016a200341c8036a41086a290300370100200341ba016a200341c8036a41106a290300370100200341c2016a200341c8036a41186a29030037010020034193043b0188012003200329036837018a01200341e2016a200341e8036a41186a290300370100200341da016a200341e8036a41106a290300370100200341d2016a200341e8036a41086a290300370100200341ca016a20032903e80337010041c8e1ca00410020034188016a108c010240200f450d00200a102f0b200041043a0000410121040c050b1036000b419ae3c300411e41f8b4ca001039000b1038000b200f450d00200a102f410121040c010b410121040b410121050c020b41002105410121042009450d01200a102f0c010b2004102f41012105410021040b024020012d0000417f6a220241024b0d000240024020020e03010200010b2005450d01200141086a280200450d01200141046a280200102f0c010b2004450d00200141246a2802002202108e012002102f0b200341b0046a24000bcb8a0208017f037e137f037e037f017e107f067e230041a0046b22032400024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020012d00000e0d000102030405060708090a0b0c000b200341b4036a4101360200200342013702a403200341b4d8c9003602a003200341043602d401200341fcdbc9003602d0012003200341d0016a3602b003200341a0036a41e8d8c9001043000b200141106a2903002104200141086a29030021052002411a6a2901002106200241196a2d00002107200241186a2d00002108200241166a2f01002109200241156a2d0000210a200241146a2d0000210b200241126a2f0100210c200241116a2d0000210d200241106a2d0000210e2002410e6a2f0100210f2002410d6a2d000021102002410c6a2d000021112002410a6a2f01002112200241096a2d00002113200241086a2d00002114200241066a2f01002115200241056a2d00002116200241046a2d00002117200241026a2f0100211841012119024020022d00000d0020022d000141014721190b200320063703b803200320073a00b703200320083a00b603200320093b01b4032003200a3a00b3032003200b3a00b2032003200c3b01b0032003200d3a00af032003200e3a00ae032003200f3b01ac03200320103a00ab03200320113a00aa03200320123b01a803200320133a00a703200320143a00a603200320153b01a403200320163a00a303200320173a00a203200320183b01a00320190d0b200341a8016a41186a2219200341a0036a41186a290300370300200341a8016a41106a2207200341a0036a41106a290300370300200341a8016a41086a2208200341a0036a41086a2209290300370300200320032903a0033703a80141c6b5c400ad4280808080f0008410012202290000210620034188016a41086a200241086a29000037030020032006370388012002102f419cccc500ad4280808080b002841001220229000021062009200241086a290000370300200320063703a0032002102f4120102d2202450d23200220032903a801370000200241186a2019290300370000200241106a2007290300370000200241086a20082903003700002002ad4280808080800484100322192900002106201941086a290000211a201941106a290000211b200341f8026a41186a201941186a290000370300200341f8026a41106a201b370300200341f8026a41086a201a370300200320063703f8022019102f2002102f41c000102d2202450d232002200329038801370000200241086a20034188016a41086a290300370000200220032903a003370010200241186a200341a0036a41086a290300370000200220032903f802370020200241286a200341f8026a41086a290300370000200241306a20034188036a290300370000200241386a200341f8026a41186a290300370000200341106a200241c00041c8e1ca004100410010b501200328021021192002102f20194101460d1c41c6b5c400ad4280808080f00084100122022900002106200341e8006a41086a200241086a290000370300200320063703682002102f41dfdbc400ad4280808080800284100122022900002106200341f8006a41086a200241086a290000370300200320063703782002102f4120102d2202450d23200220032903a801370000200241186a200341a8016a41186a290300370000200241106a200341a8016a41106a290300370000200241086a200341a8016a41086a2903003700002002ad4280808080800484100322192900002106201941086a290000211a201941106a290000211b20034188016a41186a2207201941186a29000037030020034188016a41106a2208201b37030020034188016a41086a2209201a37030020032006370388012019102f2002102f41c000102d2202450d2320022003290368370000200241086a200341e8006a41086a29030037000020022003290378370010200241186a200341f8006a41086a2903003700002002200329038801370020200241286a2009290300370000200241306a2008290300370000200241386a2007290300370000200341086a200241c00041c8e1ca004100410010b501200328020821192002102f0240024020194101460d00200341a0036a41186a4200370300200341a0036a41106a22084200370300200341a0036a41086a22024200370300200342003703a00341c6b5c400ad4280808080f000841001221929000021062002201941086a290000370300200320063703a0032019102f41b4dac400ad4280808080c0008410012219290000210620034188016a41086a2207201941086a29000037030020032006370388012019102f20082003290388012206370300200341f8026a41086a2002290300370300200341f8026a41106a2006370300200341f8026a41186a2007290300370300200320032903a0033703f802200341a0036a200341f8026a10ad0420032802a0032202410820021b220920032902a403420020021b2206422088a741e8006c6a210720092102034020022007460d020240200341a8016a200241c8006a2219460d00201941206a21022019200341a8016a412010ea060d010b0b20004183323b0100200041086a410a360200200041046a4189b6c400360200200041026a410c3a00000c2b0b20004183323b0100200041086a4109360200200041046a41e9b6c400360200200041026a41033a00000c2b0b200341a0036a41186a22074200370300200341a0036a41106a220a4200370300200341a0036a41086a22024200370300200342003703a00341c6b5c400ad4280808080f0008410012219290000211a2002201941086a2900003703002003201a3703a0032019102f418c91c700ad4280808080a0018410012219290000211a20034188016a41086a220b201941086a2900003703002003201a370388012019102f2008200329038801370000200841086a200b290300370000200341f8026a41086a2002290300370300200341f8026a41106a200a290300370300200341f8026a41186a2007290300370300200320032903a0033703f802200341a0036a200341f8026a10ad0420032802a0032202410820021b220b20032902a403420020021b221a422088a741e8006c6a2107200b21020240034020022007460d010240200341a8016a200241c8006a2219460d00201941206a21022019200341a8016a412010ea060d010b0b20004183323b0100200041086a4110360200200041046a41f9b5c400360200200041026a410d3a00000c290b200341a0036a41186a22074200370300200341a0036a41106a220a4200370300200341a0036a41086a22024200370300200342003703a00341c6b5c400ad4280808080f0008410012219290000211b2002201941086a2900003703002003201b3703a0032019102f41ebdec700ad4280808080f0008410012219290000211b20034188016a41086a220c201941086a2900003703002003201b370388012019102f2008200329038801370000200841086a200c290300370000200341f8026a41086a2002290300370300200341f8026a41106a200a290300370300200341f8026a41186a2007290300370300200320032903a0033703f802200341a0036a200341f8026a412010aa0220032802a0032202410120021b210a0240024002400240024020032902a403420020021b221b422088a7221941014b0d004100210220190e020201020b41002102034020022019410176220720026a2208200a20084105746a200341a8016a412010ea0641004a1b2102201920076b221941014b0d000b0b200a20024105746a200341a8016a412010ea06450d010b200342003703800320034280809aa6eaafe3013703f8022003200341a8016a360288012003200341a8016a3602c0022003200341c0026a3602a803200320034188016a3602a4032003200341f8026a3602a003200341d0016a200341a8016a200341a0036a1094010240024020032802d0014101470d00200341dc016a2802002119200341d8016a280200210720032d00d701210820032d00d601210c20032d00d501210d20032d00d40121020c010b410421020240200341d0016a41086a2903004201520d00200341d0016a41106a290300211c20032802c0022119200341d8036a200341d0016a41186a290300370300200341d0036a201c370300200341a0036a41086a41003a0000200341a9036a2019290000370000200341b1036a201941086a290000370000200341b9036a201941106a290000370000200341c1036a201941186a290000370000200341033a00a00341c8e1ca004100200341a0036a108c010b0b200241ff01714104470d01200320063702d401200320093602d001200341a0036a41106a4200370300200341a0036a41086a22024280809aa6eaafe301370300200341003a00a003200341d0016a200341a8016a20052004200341a0036a10e604200341d8036a2004370300200341d0036a2005370300200241013a0000200341a9036a20032903a801370000200341b1036a200341a8016a41086a290300370000200341b9036a200341a8016a41106a290300370000200341c1036a200341c0016a290300370000200341123a00a00341c8e1ca004100200341a0036a108c01200041043a00000240201ba7450d00200a102f0b201aa7450d2c200b102f0c2c0b20004183323b0100200041086a410d360200200041046a41f2b6c400360200200041026a41023a00000c280b2000200d3a0001200020023a0000200041086a2019360000200041046a2007360000200041036a20083a0000200041026a200c3a00000c270b200141046a2802002118200241026a2f01002119200241046a2d00002107200241056a2d00002108200241066a2f01002109200241086a2d0000210a200241096a2d0000210b2002410a6a2f0100210c2002410c6a2d0000210d2002410d6a2d0000210e2002410e6a2f0100210f200241106a2d00002110200241116a2d00002111200241126a2f01002112200241146a2d00002113200241156a2d00002114200241166a2f01002115200241186a2d00002116200241196a2d0000211720022d0000211d20022d0001211e20032002411a6a29010022063703b803200320173a00b703200320163a00b603200320153b01b403200320143a00b303200320133a00b203200320123b01b003200320113a00af03200320103a00ae032003200f3b01ac032003200e3a00ab032003200d3a00aa032003200c3b01a8032003200b3a00a7032003200a3a00a603200320093b01a403200320083a00a303200320073a00a203200320193b01a0030240201d410047201e410147720d00200320183602a002200341a0036a41186a4200370300200341a0036a41106a221e4200370300200341a0036a41086a22024200370300200342003703a00341c6b5c400ad4280808080f0008422041001221d29000021052002201d41086a290000370300200320053703a003201d102f41b4dac400ad4280808080c0008422051001221d290000211a20034188016a41086a221f201d41086a2900003703002003201a37038801201d102f201e200329038801221a370300200341f8026a41086a2002290300370300200341f8026a41106a201a370300200341f8026a41186a201f290300370300200320032903a0033703f802200341a0036a200341f8026a10ad0420032802a003210220032902a403211a200341c4016a2006370200200341c3016a20173a0000200341a8016a411a6a20163a0000200341a8016a41186a20153b0100200341bf016a20143a0000200341a8016a41166a20133a0000200341a8016a41146a20123b0100200341bb016a20113a0000200341a8016a41126a20103a0000200341a8016a41106a200f3b0100200341b7016a200e3a0000200341a8016a410e6a200d3a0000200341a8016a410c6a200c3b0100200341b3016a200b3a0000200341a8016a410a6a200a3a0000200341a8016a41086a20093b0100200320083a00af01200320073a00ae01200320193b01ac012002410820021b21192003200341a0026a3602a8014103210802402018201a420020021b2206422088a722094f0d0002402019201841e8006c6a220241c8006a220a200341a8016a4104722207460d00200a2007412010ea060d010b20022d0000210820032002280001360288012003200241046a28000036008b01200241106a290300211a200241086a290300211b200341d0016a200241186a41d00010e8061a2002200241e8006a2018417f7320096a41e8006c10e9061a0240024020084101470d00200341a0036a41086a200341d0016a41086a2d00003a000020032003280288013602c0022003200328008b013600c302200320032903d0013703a00341c6b5c400ad4280808080f0008410012202290000211c200341e8006a41086a200241086a2900003703002003201c3703682002102f41d8cdc500ad428080808080018410012202290000211c200341f8006a41086a200241086a2900003703002003201c3703782002102f4120102d2202450d262002201b370007200220032802c002360000200220032903a0033700172002410f6a201a370000200241036a20032800c3023600002002411f6a200341a0036a41086a2d00003a00002002ad428080808080048410032208290000211a200841086a290000211b200841106a290000211c200341f8026a41186a2209200841186a290000370300200341f8026a41106a220a201c370300200341f8026a41086a220b201b3703002003201a3703f8022008102f2002102f41c000102d2202450d2620022003290368370000200241086a200341e8006a41086a29030037000020022003290378370010200241186a200341f8006a41086a290300370000200220032903f802370020200241286a200b290300370000200241306a200a290300370000200241386a20092903003700002002ad428080808080088410052002102f0c010b2003201b3703c0022003201a3703c802201b201a84500d00200320073602b002200341f8026a2007200341c0026a200341b0026a10960120032903f8024201520d00200329038003211a200341d8036a200341f8026a41106a290300370300200341d0036a201a370300200341a0036a41086a41003a0000200341a9036a2007290000370000200341b1036a200741086a290000370000200341b9036a200741106a290000370000200341c1036a200741186a290000370000200341033a00a00341c8e1ca004100200341a0036a108c010b20064280808080707c210641042108200341a0036a41086a41043a0000200341a9036a2007290000370000200341b1036a200741086a290000370000200341b9036a200741106a290000370000200341c1036a200741186a290000370000200341123a00a00341c8e1ca004100200341a0036a108c010b200341f8026a41186a4200370300200341f8026a41106a22094200370300200341f8026a41086a22024200370300200342003703f8022004100122072900002104200341e8006a41086a220a200741086a290000370300200320043703682007102f2002200a290300370300200320032903683703f8022005100122072900002104200341f8006a41086a220a200741086a290000370300200320043703782007102f20092003290378220437030020034188016a41086a200229030037030020034188016a41106a200437030020034188016a41186a200a290300370300200320032903f802370388010240024020190d0020034188016aad428080808080048410050c010b200341a0036a20192006422088a710b10420034188016aad428080808080048420033502a80342208620032802a0032202ad841004024020032802a403450d002002102f0b2006a7450d002019102f0b200041193b0001200020083a0000200041086a410b360200200041046a41ffb6c4003602000c2a0b200041023a00000c290b200141c0006a290300211a200141386a290300211b200141306a2903002104200141286a2903002105200341a8016a41186a200141196a290000370300200341a8016a41106a200141116a290000370300200341a8016a41086a200141096a290000370300200320012900013703a8012002411a6a2901002106200241196a2d00002107200241186a2d00002108200241166a2f01002109200241156a2d0000210a200241146a2d0000210b200241126a2f0100210c200241116a2d0000210d200241106a2d0000210e2002410e6a2f0100210f2002410d6a2d000021102002410c6a2d000021112002410a6a2f01002112200241096a2d00002113200241086a2d00002114200241066a2f01002115200241056a2d00002116200241046a2d00002117200241026a2f0100211841012119024020022d00000d0020022d000141014721190b200320063703b803200320073a00b703200320083a00b603200320093b01b4032003200a3a00b3032003200b3a00b2032003200c3b01b0032003200d3a00af032003200e3a00ae032003200f3b01ac03200320103a00ab03200320113a00aa03200320123b01a803200320133a00a703200320143a00a603200320153b01a403200320163a00a303200320173a00a203200320183b01a00320190d0a200341d0016a41186a200341a0036a41186a2207290300370300200341d0016a41106a200341a0036a41106a2208290300370300200341d0016a41086a200341a0036a41086a2209290300370300200320032903a0033703d00141c6b5c400ad4280808080f00084100122022d000f210a20022d000e210b20022f000c210c20022d000b210d20022d000a210e20022f0008210f20022d0007211020022d0006211120022f0004211220022d0003211320022d0002211420022f000021152002102f419cccc500ad4280808080b00284100122022900002106200341f8026a41086a200241086a290000370300200320063703f8022002102f4120102d2202450d21200220032903a801370000200241186a200341a8016a41186a290300370000200241106a200341a8016a41106a290300370000200241086a200341a8016a41086a2903003700002002ad4280808080800484100322192900002106201941086a290000211c201941106a29000021202007201941186a290000370300200820203703002009201c370300200320063703a0032019102f2002102f41c000102d2202450d21200220103a0007200220113a0006200220123b0004200220133a0003200220143a0002200220153b00002002200a3a000f2002200b3a000e2002200c3b000c2002200d3a000b2002200e3a000a2002200f3b0008200220032903f802370010200241186a200341f8026a41086a290300370000200220032903a003370020200241286a200341a0036a41086a2207290300370000200241306a200341b0036a290300370000200241386a200341a0036a41186a290300370000200341286a200241c00041c8e1ca004100410010b501200328022821192002102f20194101460d0b41c6b5c400ad4280808080f0008410012202290000210620034188016a41086a200241086a29000037030020032006370388012002102f41dfdbc400ad42808080808002841001220229000021062007200241086a290000370300200320063703a0032002102f4120102d2202450d21200220032903a801370000200241186a200341a8016a41186a290300370000200241106a200341a8016a41106a290300370000200241086a200341a8016a41086a2903003700002002ad4280808080800484100322192900002106201941086a290000211c201941106a2900002120200341f8026a41186a2207201941186a290000370300200341f8026a41106a22082020370300200341f8026a41086a2209201c370300200320063703f8022019102f2002102f41c000102d2202450d212002200329038801370000200241086a20034188016a41086a290300370000200220032903a003370010200241186a200341a0036a41086a290300370000200220032903f802370020200241286a2009290300370000200241306a2008290300370000200241386a2007290300370000200341206a200241c00041c8e1ca004100410010b501200328022021192002102f0240024020194101460d00200341a0036a41186a4200370300200341a0036a41106a22084200370300200341a0036a41086a22024200370300200342003703a00341c6b5c400ad4280808080f000841001221929000021062002201941086a290000370300200320063703a0032019102f41b4dac400ad4280808080c0008410012219290000210620034188016a41086a2207201941086a29000037030020032006370388012019102f20082003290388012206370300200341f8026a41086a2002290300370300200341f8026a41106a2006370300200341f8026a41186a2007290300370300200320032903a0033703f802200341a0036a200341f8026a10ad0420032802a0032202410820021b220920032902a403420020021b2206422088a741e8006c6a210720092102034020022007460d020240200341a8016a200241c8006a2219460d00201941206a21022019200341a8016a412010ea060d010b0b20004183323b0100200041086a410a360200200041046a4189b6c400360200200041026a410c3a00000c260b20004183323b0100200041086a4109360200200041046a41e9b6c400360200200041026a41033a00000c290b200341a0036a41186a22074200370300200341a0036a41106a220a4200370300200341a0036a41086a22024200370300200342003703a00341c6b5c400ad4280808080f0008410012219290000211c2002201941086a2900003703002003201c3703a0032019102f418c91c700ad4280808080a0018410012219290000211c20034188016a41086a220b201941086a2900003703002003201c370388012019102f2008200329038801370000200841086a200b290300370000200341f8026a41086a2002290300370300200341f8026a41106a200a290300370300200341f8026a41186a2007290300370300200320032903a0033703f802200341a0036a200341f8026a10ad0420032802a0032202410820021b220c20032902a403420020021b221c422088a741e8006c6a2107200c21020240034020022007460d010240200341a8016a200241c8006a2219460d00201941206a21022019200341a8016a412010ea060d010b0b20004183323b0100200041086a4110360200200041046a41f9b5c400360200200041026a410d3a00000c240b200341a0036a41186a22074200370300200341a0036a41106a220a4200370300200341a0036a41086a22024200370300200342003703a00341c6b5c400ad4280808080f000841001221929000021202002201941086a290000370300200320203703a0032019102f41ebdec700ad4280808080f0008410012219290000212020034188016a41086a220b201941086a29000037030020032020370388012019102f2008200329038801370000200841086a200b290300370000200341f8026a41086a2002290300370300200341f8026a41106a200a290300370300200341f8026a41186a2007290300370300200320032903a0033703f802200341a0036a200341f8026a412010aa024101210820032802a0032202410120021b210a4109210d41d1d5c700210e024020032902a403420020021b2220422088a7220b41014b0d0041002102200b0e022321230b200b211941002102034020022019410176220720026a2208200a20084105746a200341a8016a412010ea0641004a1b2102201920076b221941014b0d000c210b0b200141046a280200210720032002411a6a2901003703b8032003200241026a2901003703a00320032002410a6a2901003703a8032003200241126a2901003703b00320022d000041004720022d0001410147720d0b200341d0016a41186a2219200341a0036a41186a290300370300200341d0016a41106a2208200341a0036a41106a290300370300200341d0016a41086a2209200341a0036a41086a290300370300200320032903a0033703d00141c6b5c400ad4280808080f00084100122022900002106200341e8006a41086a200241086a290000370300200320063703682002102f41d8cdc500ad4280808080800184100122022900002106200341f8006a41086a200241086a290000370300200320063703782002102f4120102d2202450d20200220032903d001370000200241186a2019290300370000200241106a2008290300370000200241086a20092903003700002002ad4280808080800484100322192900002106201941086a2900002104201941106a2900002105200341f8026a41186a201941186a290000370300200341f8026a41106a2005370300200341f8026a41086a2004370300200320063703f8022019102f2002102f41c000102d2202450d2020022003290368370000200241086a200341e8006a41086a29030037000020022003290378370010200241186a200341f8006a41086a290300370000200220032903f802370020200241286a200341f8026a41086a2208290300370000200241306a200341f8026a41106a2209290300370000200241386a200341f8026a41186a220a290300370000200210dd0421192002102f0240201941ff01710d00200341a0036a41186a4200370300200341a0036a41106a220b4200370300200341a0036a41086a22024200370300200342003703a00341c6b5c400ad4280808080f0008422041001221929000021062002201941086a290000370300200320063703a0032019102f41b4dac400ad4280808080c00084220510012219290000210620034188016a41086a220c201941086a29000037030020032006370388012019102f200b20032903880122063703002008200229030037030020092006370300200a200c290300370300200320032903a0033703f802200341a0036a200341f8026a10ad0420032802a0032219410820191b210202400240200720032902a403420020191b2206422088a72208490d00410b210841ffb6c40021094103210a0c010b02402002200741e8006c6a22192d00000d004192a5c6002109410b21084100210a0c010b0240200341d0016a201941016a2219460d002019200341d0016a412010ea06450d004180a5c6002109411221084100210a0c010b41c6b5c400ad4280808080f0008410012219290000211a200341e8006a41086a201941086a2900003703002003201a3703682019102f41d8cdc500ad428080808080018410012219290000211a200341f8006a41086a201941086a2900003703002003201a3703782019102f4120102d2219450d22201920032903d001370000201941186a200341d0016a41186a290300370000201941106a200341d0016a41106a290300370000201941086a200341d0016a41086a2903003700002019ad428080808080048410032209290000211a200941086a290000211b200941106a290000211c200341f8026a41186a220a200941186a290000370300200341f8026a41106a220b201c370300200341f8026a41086a201b3703002003201a3703f8022009102f2019102f41c000102d2219450d2220192003290368370000201941086a200341e8006a41086a29030037000020192003290378370010201941186a200341f8006a41086a290300370000201920032903f802370020201941286a200341f8026a41086a290300370000201941306a200b290300370000201941386a200a2903003700002019ad428080808080088410052019102f200341a0036a2002200741e8006c6a221941e80010e8061a2019201941e8006a20082007417f736a41e8006c10e9061a20034188016a41186a20034180046a290300221a37030020034188016a41106a200341f8036a290300221b37030020034188016a41086a200341f0036a290300221c370300200320032903e803222037038801200341a0036a41086a41053a0000200341a9036a2020370000200341b1036a201c370000200341b9036a201b370000200341c1036a201a370000200341123a00a00341c8e1ca004100200341a0036a108c0120064280808080707c21064104210a0b200341f8026a41186a4200370300200341f8026a41106a220b4200370300200341f8026a41086a22194200370300200342003703f8022004100122072900002104200341e8006a41086a220c200741086a290000370300200320043703682007102f2019200c290300370300200320032903683703f8022005100122072900002104200341f8006a41086a220c200741086a290000370300200320043703782007102f200b2003290378220437030020034188016a41086a201929030037030020034188016a41106a200437030020034188016a41186a200c290300370300200320032903f802370388010240024020020d0020034188016aad428080808080048410050c010b200341a0036a20022006422088a710b10420034188016aad428080808080048420033502a80342208620032802a0032219ad841004024020032802a403450d002019102f0b2006a7450d002002102f0b200041193b00012000200a3a0000200041086a2008360200200041046a20093602000c280b20004183323b0100200041086a410b360200200041046a419eb6c400360200200041026a41093a00000c270b20012d0001211d200341f0016a200141246a280200360200200341d0016a41186a2001411c6a290200370300200341d0016a41106a200141146a290200370300200341d0016a41086a2001410c6a2902003703002003200141046a2902003703d0012002411a6a2901002106200241196a2d00002107200241186a2d00002108200241166a2f01002109200241156a2d0000210a200241146a2d0000210b200241126a2f0100210c200241116a2d0000210d200241106a2d0000210e2002410e6a2f0100210f2002410d6a2d000021102002410c6a2d000021112002410a6a2f01002112200241096a2d00002113200241086a2d00002114200241066a2f01002115200241056a2d00002116200241046a2d00002117200241026a2f0100211841012119024020022d00000d0020022d000141014721190b2003200637039003200320073a008f03200320083a008e03200320093b018c032003200a3a008b032003200b3a008a032003200c3b0188032003200d3a0087032003200e3a0086032003200f3b018403200320103a008303200320113a008203200320123b018003200320133a00ff02200320143a00fe02200320153b01fc02200320163a00fb02200320173a00fa02200320183b01f80220190d0b200341c0026a41186a200341f8026a41186a2207290300370300200341c0026a41106a200341f8026a41106a2209290300370300200341c0026a41086a200341f8026a41086a220a290300370300200320032903f8023703c002200341a0036a41206a200341d0016a41206a280200360200200341a0036a41186a220b200341d0016a41186a290300370300200341a0036a41106a2208200341d0016a41106a290300370300200341a0036a41086a2202200341d0016a41086a290300370300200320032903d0013703a003200341f8026a200341a0036a10bb0120034188016a41086a221920034181036a29000037030020034188016a41106a220c20034189036a29000037030020034188016a41186a220d20034191036a290000370300200320032900f90237038801024002400240024002400240024020032d00f8024101460d00200341a8016a41186a200d290300370300200341a8016a41106a200c290300370300200341a8016a41086a201929030037030020032003290388013703a801200b42003703002008420037030020024200370300200342003703a00341c6b5c400ad4280808080f000841001220b29000021062002200b41086a290000370300200320063703a003200b102f418c91c700ad4280808080a001841001220b29000021062019200b41086a2900003703002003200637038801200b102f20082003290388012206370300200a20022903003703002009200637030020072019290300370300200320032903a0033703f802200341a0036a200341f8026a10ad0420032802a0032202410820021b220a20032902a403420020021b2206422088a741e8006c6a2107200a2102034020022007460d040240200341a8016a200241c8006a2219460d00201941206a21022019200341a8016a412010ea060d010b0b200341a0036a41186a22074200370300200341a0036a41106a22094200370300200341a0036a41086a22024200370300200342003703a00341c6b5c400ad4280808080f000841001221929000021042002201941086a290000370300200320043703a0032019102f41ebdec700ad4280808080f0008410012219290000210420034188016a41086a220b201941086a29000037030020032004370388012019102f2008200329038801370000200841086a200b290300370000200341f8026a41086a2002290300370300200341f8026a41106a2009290300370300200341f8026a41186a2007290300370300200320032903a0033703f802200341a0036a200341f8026a412010aa0220032802a0032202410120021b210920032902a403420020021b2204422088a7220241014b0d014100211920020e020402040b200041013a00000c2c0b41002119034020192002410176220720196a2208200920084105746a200341c0026a412010ea0641004a1b2119200220076b220241014b0d000b0b200920194105746a200341c0026a412010ea060d01201d41ff01710d02200341013a00f802200341a0036a200341a8016a200341c0026a10b20420033502a803210520032802a00321194101102d2202450d23200241013a000020054220862019ad842002ad4280808080108410042002102f20032802a403450d032019102f0c030b20004183323b0100200041086a410c360200200041046a41edb5c400360200200041026a410e3a00000c200b20004183323b0100200041086a4109360200200041046a41d1d5c700360200200041026a41013a00002004a7450d1f2009102f0c1f0b200341023a00f802200341a0036a200341a8016a200341c0026a10b20420033502a803210520032802a00321194101102d2202450d20200241023a000020054220862019ad842002ad4280808080108410042002102f20032802a403450d002019102f0b200341a0036a41086a410b3a0000200341a9036a20032903a801370000200341b1036a200341a8016a41086a290300370000200341b9036a200341a8016a41106a290300370000200341c1036a200341a8016a41186a290300370000200341c9036a20032903c002370000200341d1036a200341c0026a41086a290300370000200341d9036a200341c0026a41106a290300370000200341e1036a200341c0026a41186a290300370000200341123a00a003200341e9036a201d3a000041c8e1ca004100200341a0036a108c0102402004a7450d002009102f0b02402006a7450d00200a102f0b200041043a00000c260b20012d0001210a20032002411a6a2901003703a0012003200241026a2901003703880120032002410a6a290100370390012003200241126a2901003703980120022d00014101470d0b20022d000041ff01710d0b200341d0016a41186a20034188016a41186a290300370300200341d0016a41106a20034188016a41106a290300370300200341d0016a41086a20034188016a41086a220229030037030020032003290388013703d001200341a0036a41186a4200370300200341a0036a41106a22084200370300200341a0036a41086a22194200370300200342003703a00341c6b5c400ad4280808080f000841001220729000021062019200741086a290000370300200320063703a0032007102f41ebdec700ad4280808080f000841001220729000021062002200741086a29000037030020032006370388012007102f20082003290388012206370300200341f8026a41086a2019290300370300200341f8026a41106a2006370300200341f8026a41186a2002290300370300200320032903a0033703f802200341a0036a200341f8026a412010aa0220032802a0032202410120021b21090240024002400240024020032902a403420020021b2206422088a7220241014b0d004100211920020e020201020b41002119034020192002410176220720196a2208200920084105746a200341d0016a412010ea0641004a1b2119200220076b220241014b0d000b0b200920194105746a200341d0016a412010ea060d00200a41ff01710d01200341013a00f802200341a0036a200341d0016a10b30420033502a803210420032802a00321194101102d2202450d21200241013a000020044220862019ad842002ad4280808080108410042002102f20032802a403450d022019102f0c020b20004183323b0100200041086a4109360200200041046a41d1d5c700360200200041026a41013a00002006a7450d272009102f0c270b200341023a00f802200341a0036a200341d0016a10b30420033502a803210420032802a00321194101102d2202450d1f200241023a000020044220862019ad842002ad4280808080108410042002102f20032802a403450d002019102f0b200341a0036a41086a410c3a0000200341a9036a20032903d001370000200341b1036a200341d0016a41086a290300370000200341b9036a200341e0016a290300370000200341c1036a200341e8016a290300370000200341c9036a200a3a0000200341123a00a00341c8e1ca004100200341a0036a108c0102402006a7450d002009102f0b200041043a00000c250b20022d00000d0b20022d00014101470d0b200241196a2d00002119200241186a2d00002107200241166a2f01002108200241156a2d00002109200241146a2d0000210a200241126a2f0100210b200241116a2d0000210c200241106a2d0000210d2002410e6a2f0100210e2002410d6a2d0000210f2002410c6a2d000021102002410a6a2f01002111200241096a2d00002112200241086a2d00002113200241066a2f01002114200241056a2d00002115200241046a2d00002116200241026a2f0100211720032002411a6a2901003703e801200320193a00e701200320073a00e601200320083b01e401200320093a00e3012003200a3a00e2012003200b3b01e0012003200c3a00df012003200d3a00de012003200e3b01dc012003200f3a00db01200320103a00da01200320113b01d801200320123a00d701200320133a00d601200320143b01d401200320153a00d301200320163a00d201200320173b01d001200341a0036a41186a4200370300200341a0036a41106a220a4200370300200341a0036a41086a22024200370300200342003703a00341c6b5c400ad4280808080f000841001221929000021062002201941086a290000370300200320063703a0032019102f41ebdec700ad4280808080f0008410012219290000210620034188016a41086a2207201941086a29000037030020032006370388012019102f200a2003290388012206370300200341f8026a41086a2002290300370300200341f8026a41106a2006370300200341f8026a41186a2007290300370300200320032903a0033703f802200341a0036a200341f8026a412010aa0220032802a0032202410120021b2109024002400240024020032902a403420020021b2206422088a7220241014b0d004100211920020e020201020b41002119034020192002410176220720196a2208200920084105746a200341d0016a412010ea0641004a1b2119200220076b220241014b0d000b0b200920194105746a200341d0016a412010ea060d0041c6b5c400ad4280808080f0008410012202290000210420034188016a41086a200241086a29000037030020032004370388012002102f41f6dbc400ad4280808080f00084100122022900002104200341a0036a41086a200241086a290000370300200320043703a0032002102f4120102d2202450d1f200220032903d001370000200241186a200341d0016a41186a290300370000200241106a200341d0016a41106a290300370000200241086a200341d0016a41086a2903003700002002ad4280808080800484100322192900002104201941086a2900002105201941106a290000211a200341f8026a41186a2207201941186a290000370300200341f8026a41106a2208201a370300200341f8026a41086a2005370300200320043703f8022019102f2002102f41c000102d2202450d1f2002200329038801370000200241086a20034188016a41086a290300370000200220032903a003370010200241186a200341a0036a41086a290300370000200220032903f802370020200241286a200341f8026a41086a290300370000200241306a2008290300370000200241386a2007290300370000200341a0036a200210b70420032902a403210420032802a00321192002102f2004420020191b210402402019410820191b2202450d002004422088a7220d450d00200341a0036a41186a22084200370300200341a0036a41106a220b4200370300200341a0036a41086a22194200370300200342003703a003418de6c300ad4280808080e000841001220729000021052019200741086a290000370300200320053703a0032007102f419ce6c300ad4280808080e0008410012207290000210520034188016a41086a220c200741086a29000037030020032005370388012007102f200a200329038801370000200a41086a200c290300370000200341f8026a41086a22072019290300370300200341f8026a41106a200b290300370300200341f8026a41186a2008290300370300200320032903a0033703f802200341306a200341f8026a412010950120022802002003280234410020032802301b4d0d020b20004183323b0100200041086a4108360200200041046a41d5b6c400360200200041026a41053a000002402004a7450d002002102f0b2006a7450d262009102f0c260b20004183323b0100200041086a4109360200200041046a41d1d5c700360200200041026a41013a00000c1b0b200341a0036a10e803200341f8026a200341a0036a200341d0016a2002290308200241106a290300410110f2020240024020032d00f80222194104460d002007280200210720032802fc02210820032d00fb02210a20032d00fa02210b200020032d00f9023a0001200020193a0000200041086a2007360200200041046a2008360200200041036a200a3a0000200041026a200b3a00000c010b2002200241186a200d417f6a220741186c10e906210802402007450d0041c6b5c400ad4280808080f00084100122022d000f210a20022d000e210b20022f000c210c20022d000b210d20022d000a210e20022f0008210f20022d0007211020022d0006211120022f0004211220022d0003211320022d0002211420022f000021152002102f41f6dbc400ad4280808080f00084100122022900002105200341f8026a41086a200241086a290000370300200320053703f8022002102f4120102d2202450d1f200220032903d001370000200241186a200341d0016a41186a290300370000200241106a200341d0016a41106a290300370000200241086a200341d0016a41086a2903003700002002ad4280808080800484100322192900002105201941086a290000211a201941106a290000211b200341a0036a41186a2216201941186a290000370300200341a0036a41106a2217201b370300200341a0036a41086a201a370300200320053703a0032019102f2002102f41c000102d2202450d1f200220103a0007200220113a0006200220123b0004200220133a0003200220143a0002200220153b00002002200a3a000f2002200b3a000e2002200c3b000c2002200d3a000b2002200e3a000a2002200f3b0008200220032903f802370010200241186a200341f8026a41086a290300370000200220032903a003370020200241286a200341a0036a41086a290300370000200241306a2017290300370000200241386a2016290300370000200341c0003602a403200320023602a00320082007200341a0036a10b8042002102f02402004a7450d002008102f0b200041043a00000c1c0b41c6b5c400ad4280808080f00084100122192900002105200341e8006a41086a201941086a290000370300200320053703682019102f41f6dbc400ad4280808080f00084100122192900002105200341f8006a41086a201941086a290000370300200320053703782019102f4120102d2219450d1e201920032903d001370000201941186a200341d0016a41186a290300370000201941106a200341d0016a41106a290300370000201941086a200341d0016a41086a2903003700002019ad4280808080800484100322072900002105200741086a290000211a200741106a290000211b20034188016a41186a2208200741186a29000037030020034188016a41106a220a201b37030020034188016a41086a201a37030020032005370388012007102f2019102f41c000102d2219450d1e200442ffffffff0f83210420192003290368370000201941086a200341e8006a41086a29030037000020192003290378370010201941186a200341f8006a41086a2903003700002019200329038801370020201941286a20034188016a41086a290300370000201941306a200a290300370000201941386a20082903003700002019ad428080808080088410052019102f200041043a00000b2004a7450d1a2002102f0c1a0b200141246a2802002109200341e8016a200141196a290000370300200341e0016a200141116a290000370300200341d8016a200141096a290000370300200320012900013703d0012001412c6a2802002119200141286a28020021080240024020022d0000417f6a220741024b0d00200141306a3502002104024020070e03000102000b200241086a2802004101742002410c6a2802004d0d00200241046a28020041ff0171450d010b200041023a00000c190b20034188016a41186a420037030020034188016a41106a2202420037030020034188016a41086a22014200370300200342003703880141c6b5c400ad4280808080f00084100122072900002106200341e8006a41086a220a200741086a290000370300200320063703682007102f2001200a2903003703002003200329036837038801419ab6c400ad4280808080c00084100122072900002106200341f8006a41086a220a200741086a290000370300200320063703782007102f200220032903782206370300200341f8026a41086a2001290300370300200341f8026a41106a2006370300200341f8026a41186a200a29030037030020032003290388013703f802200341386a200341f8026a412041c8e1ca004100410010b50120032802384101460d0b20094102490d0c20034188016a41186a2207420037030020034188016a41106a220a420037030020034188016a41086a22014200370300200342003703880141c6b5c400ad4280808080f0008422051001220b2900002106200341e8006a41086a220c200b41086a29000037030020032006370368200b102f2001200c290300370300200320032903683703880141cdb5c400ad4280808080a001841001220b2900002106200341f8006a41086a220d200b41086a29000037030020032006370378200b102f20022003290378370000200241086a220b200d290300370000200341f8026a41086a220e2001290300370300200341f8026a41106a220f200a290300370300200341f8026a41186a2210200729030037030020032003290388013703f802200320093602a003200341f8026aad42808080808004842206200341a0036aad4280808080c000841004200341a0036a200341d0016a10e70420032d00a00322094104470d0d20074200370300200a42003703002001420037030020034200370388012005100122092900002105200c200941086a290000370300200320053703682009102f2001200c2903003703002003200329036837038801419ab6c400ad4280808080c00084100122092900002105200d200941086a290000370300200320053703782009102f20022003290378370000200b200d290300370000200e2001290300370300200f200a2903003703002010200729030037030020032003290388013703f8024120102d2201450d1c200120032903d001370000200141186a200341d0016a41186a220d290300370000200141106a200341d0016a41106a220e290300370000200141086a200341d0016a41086a220f29030037000020062001ad428080808080048410042001102f20034188016a41186a2209420037030020034188016a41106a220a420037030020034188016a41086a22074200370300200342003703880141c6b5c400ad4280808080f00084220510012201290000211a200341e8006a41086a220b200141086a2900003703002003201a3703682001102f2007200b29030037030020032003290368370388014193b6c400ad4280808080f0008410012201290000211a200341f8006a41086a220c200141086a2900003703002003201a3703782001102f20022003290378370000200241086a2210200c290300370000200341f8026a41086a22112007290300370300200341f8026a41106a2212200a290300370300200341f8026a41186a2213200929030037030020032003290388013703f8024120102d2201450d1c200120032903d001370000200141186a200d290300370000200141106a200e290300370000200141086a200f29030037000020062001ad428080808080048410042001102f200341a0036a41186a20044220862008ad841003220141186a290000370300200341a0036a41106a200141106a290000370300200341a0036a41086a200141086a290000370300200320012900003703a0032001102f20094200370300200a42003703002007420037030020034200370388012005100122012900002104200b200141086a290000370300200320043703682001102f2007200b290300370300200320032903683703880141c4cbc500ad4280808080d00084100122012900002104200c200141086a290000370300200320043703782001102f200220032903783700002010200c290300370000201120072903003703002012200a2903003703002013200929030037030020032003290388013703f8024120102d2202450d1c200220032903a003370000200241186a200341a0036a41186a290300370000200241106a200341a0036a41106a290300370000200241086a200341a0036a41086a220129030037000020062002ad428080808080048410042002102f200141003a0000200341a9036a20032903d001370000200341b1036a200341d0016a41086a290300370000200341b9036a200341d0016a41106a290300370000200341c1036a200341d0016a41186a290300370000200341123a00a00341c8e1ca004100200341a0036a108c01200041043a00002019450d242008102f0c240b200241026a2f01002119200241046a2d00002107200241056a2d00002108200241066a2f01002109200241086a2d0000210a200241096a2d0000210b2002410a6a2f0100210c2002410c6a2d0000210d2002410d6a2d0000210e2002410e6a2f0100210f200241106a2d00002110200241116a2d00002111200241126a2f01002112200241146a2d00002113200241156a2d00002114200241166a2f01002115200241186a2d00002116200241196a2d0000211720022d0000211d20022d0001211820032002411a6a29010022063703b803200320173a00b703200320163a00b603200320153b01b403200320143a00b303200320133a00b203200320123b01b003200320113a00af03200320103a00ae032003200f3b01ac032003200e3a00ab032003200d3a00aa032003200c3b01a8032003200b3a00a7032003200a3a00a603200320093b01a403200320083a00a303200320073a00a203200320193b01a00320184101470d0d201d41ff01710d0d20034188016a41186a221e420037030020034188016a41106a2218420037030020034188016a41086a22024200370300200342003703880141c6b5c400ad4280808080f000841001221d2900002104200341e8006a41086a221f201d41086a29000037030020032004370368201d102f2002201f29030037030020032003290368370388014193b6c400ad4280808080f000841001221d2900002104200341f8006a41086a221f201d41086a29000037030020032004370378201d102f201820032903782204370300200341f8026a41086a2002290300370300200341f8026a41106a2004370300200341f8026a41186a201f29030037030020032003290388013703f802200341a0036a200341f8026a412010ad0220032d00a003211f201e200341a0036a41196a2900003703002018200341a0036a41116a2900003703002002200341a0036a41096a290000370300200320032900a103370388014101211d02400240201f4101460d004100211d200341003a00d0010c010b200341d0016a41096a2002290300370000200341d0016a41116a2018290300370000200341d0016a41196a201e290300370000200341013a00d00120032003290388013700d1010b200341b9036a2006370000200341b8036a20173a0000200341b7036a20163a0000200341b5036a20153b0000200341b4036a20143a0000200341b3036a20133a0000200341b1036a20123b000041102102200341a0036a41106a20113a0000200341af036a20103a0000200341ad036a200f3b0000200341ac036a200e3a0000200341ab036a200d3a0000200341a9036a200c3b0000200341a8036a200b3a00002003200a3a00a703200320093b00a503200320083a00a403200320073a00a303200320193b00a103200341013a00a003201d450d15200341d0016a410172200341a0036a410172412010ea060d1520034188016a41186a221d420037030020034188016a41106a221e420037030020034188016a41086a22024200370300200342003703880141c6b5c400ad4280808080f000841001221f2900002104200341e8006a41086a2221201f41086a29000037030020032004370368201f102f200220212903003703002003200329036837038801419ab6c400ad4280808080c000841001221f2900002104200341f8006a41086a2221201f41086a29000037030020032004370378201f102f20182003290378370000201841086a2021290300370000200341f8026a41086a2002290300370300200341f8026a41106a201e290300370300200341f8026a41186a201d29030037030020032003290388013703f802200341a0036a200341f8026a412010ad0220032d00a0032121201d200341a0036a41196a290000370300201e200341a0036a41116a2900003703002002200341a0036a41096a290000370300200320032900a103370388014101211f0240024020214101460d004100211f200341003a00d0010c010b200341d0016a41096a2002290300370000200341d0016a41116a201e290300370000200341d0016a41196a201d290300370000200341013a00d00120032003290388013700d1010b200341b9036a2006370000200341b8036a20173a0000200341b7036a20163a0000200341b5036a20153b0000200341b4036a20143a0000200341b3036a20133a000041112102200341a0036a41116a20123b0000200341b0036a20113a0000200341af036a20103a0000200341ad036a200f3b0000200341ac036a200e3a0000200341ab036a200d3a0000200341a9036a200c3b0000200341a8036a200b3a00002003200a3a00a703200320093b00a503200320083a00a403200320073a00a303200320193b00a103200341013a00a00302400240201f450d00200341d0016a410172200341a0036a410172412010ea06450d010b4107211941dcb5c40021070c170b20034188016a41186a221d420037030020034188016a41106a221e420037030020034188016a41086a22024200370300200342003703880141c6b5c400ad4280808080f000842204100122212900002105200341e8006a41086a221f202141086a290000370300200320053703682021102f2002201f290300370300200320032903683703880141ebdec700ad4280808080f00084100122222900002105200341f8006a41086a2221202241086a290000370300200320053703782022102f20182003290378370000201841086a22222021290300370000200341f8026a41086a22232002290300370300200341f8026a41106a2224201e290300370300200341f8026a41186a2225201d29030037030020032003290388013703f802200341f8026aad428080808080048422051005201d4200370300201e4200370300200242003703002003420037038801200410012226290000211a201f202641086a2900003703002003201a3703682026102f2002201f2903003703002003200329036837038801419ab6c400ad4280808080c0008410012226290000211a2021202641086a2900003703002003201a3703782026102f2018200329037837000020222021290300370000202320022903003703002024201e2903003703002025201d29030037030020032003290388013703f80220051005201d4200370300201e4200370300200242003703002003420037038801200410012226290000211a201f202641086a2900003703002003201a3703682026102f2002201f29030037030020032003290368370388014193b6c400ad4280808080f0008410012226290000211a2021202641086a2900003703002003201a3703782026102f2018200329037837000020222021290300370000202320022903003703002024201e2903003703002025201d29030037030020032003290388013703f80220051005201d4200370300201e4200370300200242003703002003420037038801200410012226290000211a201f202641086a2900003703002003201a3703682026102f2002201f290300370300200320032903683703880141c4cbc500ad4280808080d0008410012226290000211a2021202641086a2900003703002003201a3703782026102f2018200329037837000020222021290300370000202320022903003703002024201e2903003703002025201d29030037030020032003290388013703f80220051005201d4200370300201e4200370300200242003703002003420037038801200410012226290000211a201f202641086a2900003703002003201a3703682026102f2002201f2903003703002003200329036837038801418c91c700ad4280808080a0018410012226290000211a2021202641086a2900003703002003201a3703782026102f2018200329037837000020222021290300370000202320022903003703002024201e2903003703002025201d29030037030020032003290388013703f80220051005201d4200370300201e42003703002002420037030020034200370388012004100122262900002104201f202641086a290000370300200320043703682026102f2002201f2903003703002003200329036837038801419cccc500ad4280808080b002841001221f29000021042021201f41086a29000037030020032004370378201f102f2018200329037837000020222021290300370000202320022903003703002024201e2903003703002025201d29030037030020032003290388013703f80220051013200341c1036a2006370000200341a0036a41206a20173a0000200341bf036a20163a0000200341bd036a20153b0000200341bc036a20143a0000200341bb036a20133a0000200341b9036a20123b0000200341a0036a41186a20113a0000200341b7036a20103a0000200341b5036a200f3b0000200341b4036a200e3a0000200341b3036a200d3a0000200341b1036a200c3b0000200341a0036a41106a200b3a0000200341af036a200a3a0000200341ad036a20093b0000200341ac036a20083a0000200341ab036a20073a0000200341a9036a20193b0000200341a0036a41086a410e3a0000200341123a00a00341c8e1ca004100200341a0036a108c01200041043a00000c220b200141216a2d00002107200341a8016a41186a200141196a290000370300200341a8016a41106a200141116a290000370300200341a8016a41086a200141096a290000370300200320012900013703a801200341a0036a41206a200241206a290200370300200341a0036a41186a200241186a290200370300200341a0036a41106a200241106a290200370300200341a0036a41086a200241086a290200370300200320022902003703a003200341d0016a200341a0036a10e80420032d00d0014101460d0d41c6b5c400ad4280808080f00084100122022900002106200341a0026a41086a200241086a290000370300200320063703a0022002102f41dfdbc400ad4280808080800284100122022900002106200341b0026a41086a200241086a290000370300200320063703b0022002102f4120102d2219450d1a201920032903a801370000201941186a200341a8016a41186a290300370000201941106a200341a8016a41106a290300370000201941086a200341a8016a41086a2903003700002019ad428080808080048410032202290018210620022d0017210820022d0016210920022f0014210a20022d0013210b20022d0012210c20022f0010210d20022d000f210e20022d000e210f20022f000c211020022d000b211120022d000a211220022f0008211320022d0007211420022d0006211520022f0004211620022d0003211720022d0002211820022f0000211d2002102f2019102f41c000102d2202450d1a200220032903a002370000200220032903b00237001020022006370038200220083a0037200220093a00362002200a3b00342002200b3a00332002200c3a00322002200d3b00302002200e3a002f2002200f3a002e200220103b002c200220113a002b200220123a002a200220133b0028200220143a0027200220153a0026200220163b0024200220173a0023200220183a00222002201d3b0020200241086a200341a0026a41086a290300370000200241186a200341b0026a41086a290300370000200341c0006a200241c00041c8e1ca004100410010b501200328024021192002102f20194101470d0e024002400240200741ff01710d0041c6b5c400ad4280808080f00084100122022d000f210820022d000e210920022f000c210a20022d000b210b20022d000a210c20022f0008210d20022d0007210e20022d0006210f20022f0004211020022d0003211120022d0002211220022f000021132002102f41f6dbc400ad4280808080f00084100122022900002106200341f8026a41086a200241086a290000370300200320063703f8022002102f4120102d2202450d1d200220032903a801370000200241186a200341a8016a41186a290300370000200241106a200341a8016a41106a290300370000200241086a200341a8016a41086a2903003700002002ad4280808080800484100322192900002106201941086a2900002104201941106a2900002105200341a0036a41186a2214201941186a290000370300200341a0036a41106a22152005370300200341a0036a41086a2004370300200320063703a0032019102f2002102f41c000102d2202450d1d2002200e3a00072002200f3a0006200220103b0004200220113a0003200220123a0002200220133b0000200220083a000f200220093a000e2002200a3b000c2002200b3a000b2002200c3a000a2002200d3b0008200220032903f802370010200241186a200341f8026a41086a2208290300370000200220032903a003370020200241286a200341a0036a41086a2219290300370000200241306a2015290300370000200241386a20142903003700002002ad428080808080088410052002102f41c6b5c400ad4280808080f0008410012202290000210620034188016a41086a200241086a29000037030020032006370388012002102f41efdbc400ad4280808080f000841001220229000021062019200241086a290000370300200320063703a0032002102f4120102d2202450d1d200220032903a801370000200241186a200341a8016a41186a290300370000200241106a200341a8016a41106a290300370000200241086a200341a8016a41086a2903003700002002ad4280808080800484100322192900002106201941086a2900002104201941106a2900002105200341f8026a41186a2209201941186a290000370300200341f8026a41106a220a200537030020082004370300200320063703f8022019102f2002102f41c000102d2202450d1d2002200329038801370000200241086a20034188016a41086a2208290300370000200220032903a003370010200241186a200341a0036a41086a290300370000200220032903f802370020200241286a200341f8026a41086a290300370000200241306a200a290300370000200241386a20092903003700002002ad428080808080088410052002102f41c6b5c400ad4280808080f00084100122022900002106200341e8006a41086a200241086a290000370300200320063703682002102f41d8cdc500ad4280808080800184100122022900002106200341f8006a41086a200241086a290000370300200320063703782002102f4120102d2202450d1d200220032903a801370000200241186a200341a8016a41186a290300370000200241106a200341a8016a41106a290300370000200241086a200341a8016a41086a2903003700002002ad4280808080800484100322192900002106201941086a2900002104201941106a290000210520034188016a41186a2209201941186a29000037030020034188016a41106a220a20053703002008200437030020032006370388012019102f2002102f41c000102d2202450d1d20022003290368370000200241086a200341e8006a41086a29030037000020022003290378370010200241186a200341f8006a41086a2903003700002002200329038801370020200241286a20034188016a41086a290300370000200241306a200a290300370000200241386a2009290300370000200210dd0441ff017122194102470d012002102f0c020b200341a0036a200341a8016a10e70420032d00a00322024104460d01200341a0036a41086a280200211920032802a403210720032d00a303210820032d00a2032109200020032d00a1033a0001200020023a0000200041086a2019360200200041046a2007360200200041036a20083a0000200041026a20093a00000c230b2002ad428080808080088410052002102f20190d00200341a0036a41186a220f4200370300200341a0036a41106a220d4200370300200341a0036a41086a220c4200370300200342003703a00341c6b5c400ad4280808080f000842204100122022900002106200c200241086a290000370300200320063703a0032002102f41b4dac400ad4280808080c00084220510012202290000210620034188016a41086a2219200241086a29000037030020032006370388012002102f200d2003290388012206370300200341f8026a41086a220e200c290300370300200341f8026a41106a2006370300200341f8026a41186a2019290300370300200320032903a0033703f802200341a0036a200341f8026a10ad0420032802a0032202410820021b2109024020032902a403420020021b2206422088a72210450d00201041037441786a41037641016a210a2009417f73200341a8016a6a210b4100210241002119024003400240200920026a22082d0000450d00200b2002460d02200841016a200341a8016a412010ea06450d020b200241e8006a2102200a201941016a2219470d000c020b0b200341a0036a200841e80010e8061a2008200841e8006a201041e8006c20026b41987f6a10e9061a200341e8016a20034180046a290300221a370300200341e0016a200341f8036a290300221b370300200341d0016a41086a200341f0036a290300221c370300200320032903e80322203703d001200341a0036a41086a41053a0000200341a9036a2020370000200341b1036a201c370000200341b9036a201b370000200341c1036a201a370000200341123a00a00341c8e1ca004100200341a0036a108c0120064280808080707c21060b200341d0016a41186a4200370300200341d0016a41106a22084200370300200341d0016a41086a22024200370300200342003703d0012004100122192900002104200e201941086a290000370300200320043703f8022019102f2002200e290300370300200320032903f8023703d0012005100122192900002104200341c0026a41086a220a201941086a290000370300200320043703c0022019102f200820032903c0022204370300200c2002290300370300200d2004370300200f200a290300370300200320032903d0013703a003024020090d00200341a0036aad428080808080048410050c010b200341d0016a20092006422088a710b104200341a0036aad428080808080048420033502d80142208620032802d0012202ad841004024020032802d401450d002002102f0b2006a7450d002009102f0b41c6b5c400ad4280808080f00084100122022900002106200341f8026a41086a200241086a290000370300200320063703f8022002102f41dfdbc400ad4280808080800284100122022900002106200341c0026a41086a200241086a290000370300200320063703c0022002102f4120102d2202450d1a200220032903a801370000200241186a200341a8016a41186a2208290300370000200241106a200341a8016a41106a2209290300370000200241086a200341a8016a41086a2903003700002002ad4280808080800484100322192900002106201941086a2900002104201941106a2900002105200341a0036a41186a220a201941186a290000370300200341a0036a41106a220b2005370300200341a0036a41086a2004370300200320063703a0032019102f2002102f41c000102d2202450d1a200220032903f802370000200241086a200341f8026a41086a290300370000200220032903c002370010200241186a200341c0026a41086a290300370000200220032903a003370020200241286a200341a0036a41086a2219290300370000200241306a200b290300370000200241386a200a2903003700002002ad428080808080088410052002102f201941073a0000200341a9036a20032903a801370000200341b1036a200341a8016a41086a290300370000200341b9036a2009290300370000200341c1036a2008290300370000200341c9036a20073a0000200341123a00a00341c8e1ca004100200341a0036a108c01200041043a00000c210b200141216a2d00002108200341a8016a41186a200141196a290000370300200341a8016a41106a200141116a290000370300200341a8016a41086a200141096a290000370300200320012900013703a801200341a0036a41206a200241206a290200370300200341a0036a41186a200241186a290200370300200341a0036a41106a200241106a290200370300200341a0036a41086a200241086a290200370300200320022902003703a003200341d0016a200341a0036a10e80420032d00d0014101460d0e41c6b5c400ad4280808080f00084100122022d000f210720022d000e210920022f000c210a20022d000b210b20022d000a210c20022f0008210d20022d0007210e20022d0006210f20022f0004211020022d0003211120022d0002211220022f000021132002102f419cccc500ad4280808080b0028410012202290008210620022d0007211420022d0006211520022f0004211620022d0003211720022d0002211820022f0000211d2002102f4120102d2219450d19201920032903a801370000201941186a200341a8016a41186a290300370000201941106a200341a8016a41106a290300370000201941086a200341a8016a41086a2903003700002019ad428080808080048410032202290018210420022d0017211e20022d0016211f20022f0014212120022d0013212220022d0012212320022f0010212420022d000f212520022d000e212620022f000c212720022d000b212820022d000a212920022f0008212a20022d0007212b20022d0006212c20022f0004212d20022d0003212e20022d0002212f20022f000021302002102f2019102f41c000102d2202450d19200220043700382002201e3a00372002201f3a0036200220213b0034200220223a0033200220233a0032200220243b0030200220253a002f200220263a002e200220273b002c200220283a002b200220293a002a2002202a3b00282002202b3a00272002202c3a00262002202d3b00242002202e3a00232002202f3a0022200220303b002020022006370018200220143a0017200220153a0016200220163b0014200220173a0013200220183a00122002201d3b0010200220073a000f200220093a000e2002200a3b000c2002200b3a000b2002200c3a000a2002200d3b00082002200e3a00072002200f3a0006200220103b0004200220113a0003200220123a0002200220133b0000200341c0003602a402200320023602a002200341f8026a2002ad4280808080800884100210730240024020032802f80222070d00410221190c010b20032802fc02210f2003200341f8026a41086a28020022193602b402200320073602b00202400240024020194110490d002003201941706a3602b4022003200741106a3602b002200741086a290000210620072900002104200341a0036a200341b0026a10c30420032d00a00322194102470d010b200341003602d801200342013703d0012003410b36028c012003200341a0026a360288012003200341d0016a360278200341b4036a4101360200200342013702a403200341b885c7003602a003200320034188016a3602b003200341f8006a41d8dbc100200341a0036a103c1a20033502d80142208620033502d001841008024020032802d401450d0020032802d001102f0b410221190c010b200341d0016a41086a200341c0036a290300370300200320032800a40336008b01200320032800a103360288012003200341b8036a2903003703d0012004423888200642088684a721092004423088200642108684a7210a2004422088a7210b2004421888a7210c2004421088a7210d200341b0036a290300211a200341a0036a41086a2903002105200341d0036a290300211b200341c8036a290300211c2004a7210e0b200f450d002007102f0b200341f8026a41086a2207200341d0016a41086a29030037030020032003280288013602a0032003200328008b013600a303200320032903d0013703f8020240024020194102470d000c010b200341c0026a41086a2007290300370300200320032800a3033600e302200320032802a0033602e002200320032903f8023703c0022009ad423886200aad42ff018342308684200bad42ffff038342208684200cad42ff018342188684200dad42ff018342108684200ead42ffff03838421040b2002102f02400240024020194102460d00200341a0026a41086a2202200341c0026a41086a290300370300200320032802e0023602e802200320032800e3023600eb02200320032903c0023703a0020240024020084103710e03030100030b41c6b5c400ad4280808080f00084100122022900002120200229000821312002102f41e4d8c400ad42808080803084100122022900002132200229000821332002102f200320333701b803200320323701b003200320313701a803200320203701a003200341d0006a200341a0036a4120109c0120032903584200200328025022021b22312004542207200341e0006a290300420020021b222020065420202006511b0d13200341a0036a200341a8016a10e704200341a0036a41086a2102024020032d00a00322084104470d0041c6b5c400ad4280808080f000842232100122082900002133200829000821342008102f41e4d8c400ad42808080803084100122082900002135200829000821362008102f200320363701b803200320353701b003200320343701a803200320333701a0032003202020067d2007ad7d3703d8012003203120047d3703d001200341a0036aad4280808080800484200341d0016aad42808080808002841004200341a0036a41186a220a4200370300200341a0036a41106a2207420037030020024200370300200342003703a003418de6c300ad4280808080e000841001220829000021202002200841086a290000370300200320203703a0032008102f419ce6c300ad4280808080e0008410012209290000212020034188016a41086a2208200941086a29000037030020032020370388012009102f20072003290388012220370300200341f8026a41086a220b2002290300370300200341f8026a41106a220c2020370300200341f8026a41186a220d2008290300370300200320032903a0033703f802200341c8006a200341f8026a4120109501200328024c210e2003280248210f200a42003703002007420037030020024200370300200342003703a00320321001220929000021202002200941086a290000370300200320203703a0032009102f41ebdec700ad4280808080f000841001220929000021202008200941086a29000037030020032020370388012009102f20072003290388012220370300200b2002290300370300200c2020370300200d2008290300370300200320032903a0033703f802200341a0036a200341f8026a412010aa0220032902a403420020032802a00322021b2220422088a741f4036a2207450d15200341e4003a00a103200341e40041d0860320076e22076b3a00a003200e4100200f1b2108200341a0036a200741ff017141e4004b6a2d00004180fe126c210702402020a7450d002002410120021b102f0b200720086a2107200341b0026a41086a2202200341a0026a41086a290300370300200320032802e8023602f002200320032800eb023600f302200320032903a0023703b0020240024020194101470d00200341af036a201a370000200341bf036a20022d00003a0000200320053700a703200320032800f3023600a303200320032802f0023602a003200320032903b0023700b70341c6b5c400ad4280808080f00084100122022900002105200341e8006a41086a200241086a290000370300200320053703682002102f41d8cdc500ad4280808080800184100122022900002105200341f8006a41086a200241086a290000370300200320053703782002102f4120102d2202450d20200220032903a003370000200241186a200341a0036a41186a290300370000200241106a200341a0036a41106a290300370000200241086a200341a0036a41086a2903003700002002ad4280808080800484100322192900002105201941086a290000211a201941106a290000212020034188016a41186a2208201941186a29000037030020034188016a41106a2209202037030020034188016a41086a220a201a37030020032005370388012019102f2002102f41c000102d2202450d2020022003290368370000200241086a200341e8006a41086a29030037000020022003290378370010200241186a200341f8006a41086a2903003700002002200329038801370020200241286a200a290300370000200241306a2009290300370000200241386a20082903003700000240200210dd0441ff017122194102470d002002102f0c020b2002ad428080808080088410052002102f20190d01200341a0036a20072004201c2004201c5422022006201b542006201b511b22191b2006201b20191b10b00442002006201b7d2002ad7d22052004201c7d221a200456200520065620052006511b22021b21064200201a20021b21040c010b200320053703f8022003201a370380032005201a84500d002003200341a8016a36028801200341d0016a200341a8016a200341f8026a20034188016a10960120032903d0014201520d0020032903d8012105200341d8036a200341d0016a41106a290300370300200341d0036a2005370300200341a0036a41086a41003a0000200341a9036a20032903a801370000200341b1036a200341a8016a41086a290300370000200341b9036a200341a8016a41106a290300370000200341c1036a200341c0016a290300370000200341033a00a00341c8e1ca004100200341a0036a108c010b200341a8016a20072004200610b0040c040b2002280200210220032802a403211920032d00a303210720032d00a2032109200020032d00a1033a0001200020083a0000200041086a2002360200200041046a2019360200200041036a20073a0000200041026a20093a00000c240b02402019410171450d00200341d0016a41086a2219200341a0026a41086a2d00003a0000200320032802e8023602b002200320032800eb023600b302200320032903a0023703d00141c6b5c400ad4280808080f0008410012202290000210620034188016a41086a200241086a29000037030020032006370388012002102f41d8cdc500ad4280808080800184100122022900002106200341a0036a41086a200241086a290000370300200320063703a0032002102f4120102d2202450d1d20022005370007200220032802b002360000200220032903d0013700172002410f6a201a370000200241036a20032800b3023600002002411f6a20192d00003a00002002ad4280808080800484100322192900002106201941086a2900002104201941106a2900002105200341f8026a41186a2207201941186a290000370300200341f8026a41106a22082005370300200341f8026a41086a2004370300200320063703f8022019102f2002102f41c000102d2202450d1d2002200329038801370000200241086a20034188016a41086a290300370000200220032903a003370010200241186a200341a0036a41086a290300370000200220032903f802370020200241286a200341f8026a41086a290300370000200241306a2008290300370000200241386a20072903003700004101102d2219450d1d201941013a00002002ad42808080808008842019ad4280808080108410042019102f2002102f0c030b200341a0036a41bcd9c40010b402200341d0016a200341a8016a200341a0036a2005201a410010bc010c020b20004183323b0100200041086a410c360200200041046a41ddb6c400360200200041026a41043a00000c220b200341a0036a41186a220a4200370300200341a0036a41106a22084200370300200341a0036a41086a22074200370300200342003703a00341c6b5c400ad4280808080f000841001220929000021202007200941086a290000370300200320203703a0032009102f41b4dac400ad4280808080c0008410012209290000212020034188016a41086a220b200941086a29000037030020032020370388012009102f20082003290388012220370300200341f8026a41086a2007290300370300200341f8026a41106a2020370300200341f8026a41186a200b290300370300200320032903a0033703f802200341a0036a200341f8026a10ad04200320032902a403420020032802a00322091b3702d40120032009410820091b3602d0012008201a37030020072005370300200341d0036a201b370300200341c8036a201c370300200a20032903a002370300200341c0036a2002290300370300200320193a00a003200320032802e8023600a103200320032800eb023600a403200341d0016a200341a8016a20042006200341a0036a10e6040b200341a0036a41186a2207200341a8016a41186a290300370300200341a0036a41106a2208200341a8016a41106a290300370300200341a0036a41086a2209200341a8016a41086a290300370300200320032903a8013703a00341c6b5c400ad4280808080f00084100122022d000f210a20022d000e210b20022f000c210c20022d000b210d20022d000a210e20022f0008210f20022d0007211020022d0006211120022f0004211220022d0003211320022d0002211420022f000021152002102f419cccc500ad4280808080b0028410012202290008210620022d0007211620022d0006211720022f0004211820022d0003211d20022d0002211e20022f0000211f2002102f4120102d2219450d19201920032903a003370000201941186a2007290300370000201941106a2008290300370000201941086a20092903003700002019ad428080808080048410032202290018210420022d0017210720022d0016210820022f0014210920022d0013212120022d0012212220022f0010212320022d000f212420022d000e212520022f000c212620022d000b212720022d000a212820022f0008212920022d0007212a20022d0006212b20022f0004212c20022d0003212d20022d0002212e20022f0000212f2002102f2019102f41c000102d2202450d1920022004370038200220073a0037200220083a0036200220093b0034200220213a0033200220223a0032200220233b0030200220243a002f200220253a002e200220263b002c200220273a002b200220283a002a200220293b00282002202a3a00272002202b3a00262002202c3b00242002202d3a00232002202e3a00222002202f3b002020022006370018200220163a0017200220173a0016200220183b00142002201d3a00132002201e3a00122002201f3b00102002200a3a000f2002200b3a000e2002200c3b000c2002200d3a000b2002200e3a000a2002200f3b0008200220103a0007200220113a0006200220123b0004200220133a0003200220143a0002200220153b00002002ad428080808080088410052002102f200041043a00000c200b20022d000120022d0000410047720d100240200141046a28020022024102490d0020034188016a41186a420037030020034188016a41106a2208420037030020034188016a41086a22194200370300200342003703880141c6b5c400ad4280808080f00084100122072900002106200341e8006a41086a2209200741086a290000370300200320063703682007102f20192009290300370300200320032903683703880141cdb5c400ad4280808080a00184100122072900002106200341f8006a41086a2209200741086a290000370300200320063703782007102f200820032903782206370300200341f8026a41086a2019290300370300200341f8026a41106a2006370300200341f8026a41186a200929030037030020032003290388013703f802200320023602a003200341f8026aad4280808080800484200341a0036aad4280808080c000841004200341ac036a2002360200200341a0036a41086a410d3a0000200341123a00a00341c8e1ca004100200341a0036a108c01200041043a00000c200b20004183323b0100200041086a410a360200200041046a41cdb5c400360200200041026a410f3a00000c1f0b200041023a00000c1e0b200041023a00000c1d0b20004183323b0100200041086a4109360200200041046a41e9b6c400360200200041026a41033a00000c1c0b200041023a00000c1b0b200041023a00000c1a0b200041023a00000c190b200041023a00000c180b20004183323b0100200041086a410e360200200041046a41c7b6c400360200200041026a41063a00000c0c0b20004183323b0100200041086a410a360200200041046a41cdb5c400360200200041026a410f3a00000c0b0b200341a0036a41086a280200210220032802a403210120032d00a303210720032d00a203210a200020032d00a1033a0001200020093a0000200041086a2002360200200041046a2001360200200041036a20073a0000200041026a200a3a00000c0a0b200041023a00000c140b200041023a00000c130b20004183323b0100200041086a410c360200200041046a41ddb6c400360200200041026a41043a00000c120b200041023a00000c110b20004183323b0100200041086a410f360200200041046a41b8b6c400360200200041026a41073a00000c100b4180d9c4004119419cd9c4001039000b200041023a00000c0e0b20004183323b0100200041086a4109360200200041046a41e9b6c400360200200041026a41033a00000c0d0b410a211941e3b5c40021070b20004183323b0100200041086a2019360200200041046a2007360200200041026a20023a00000c0b0b2019450d0b2008102f0c0b0b2006a7450d092009102f0c090b2006a7450d08200a102f0c080b0240200a20024105746a200341a8016a412010ea060d00410d210d41f2b6c400210e410221080c020b4101210802400240200b41014b0d0041002102200b0e020301030b4100210203402002200b410176221920026a2207200a20074105746a200341d0016a412010ea0641004a1b2102200b20196b220b41014b0d000b0b200a20024105746a200341d0016a412010ea060d0141c6b5c400ad4280808080f00084100122022900002131200341a0026a41086a200241086a290000370300200320313703a0022002102f41d8cdc500ad4280808080800184100122022900002131200341b0026a41086a200241086a290000370300200320313703b0022002102f4120102d2219450d00201920032903d001370000201941186a200341d0016a41186a290300370000201941106a200341d0016a41106a290300370000201941086a200341d0016a41086a2903003700002019ad428080808080048410032202290018213120022d0017210720022d0016210820022f0014210b20022d0013210d20022d0012210e20022f0010210f20022d000f211020022d000e211120022f000c211220022d000b211320022d000a211420022f0008211520022d0007211620022d0006211720022f0004211820022d0003211d20022d0002211e20022f0000211f2002102f2019102f41c000102d2202450d00200220032903a002370000200220032903b00237001020022031370038200220073a0037200220083a00362002200b3b00342002200d3a00332002200e3a00322002200f3b0030200220103a002f200220113a002e200220123b002c200220133a002b200220143a002a200220153b0028200220163a0027200220173a0026200220183b00242002201d3a00232002201e3a00222002201f3b002041082108200241086a200341a0026a41086a290300370000200241186a200341b0026a41086a290300370000200341186a200241c00041c8e1ca004100410010b501200328021821192002102f024020194101470d00410f210d41a9b6c400210e0c020b41c6b5c400ad4280808080f00084100122022900002131200341e8006a41086a200241086a290000370300200320313703682002102f41d8cdc500ad4280808080800184100122022900002131200341f8006a41086a200241086a290000370300200320313703782002102f4120102d2202450d00200220032903d001370000200241186a200341d0016a41186a290300370000200241106a200341d0016a41106a290300370000200241086a200341d0016a41086a2903003700002002ad4280808080800484100322192900002131201941086a2900002132201941106a290000213320034188016a41186a2207201941186a29000037030020034188016a41106a2208203337030020034188016a41086a203237030020032031370388012019102f2002102f41c000102d2202450d0020022003290368370000200241086a200341e8006a41086a29030037000020022003290378370010200241186a200341f8006a41086a2903003700002002200329038801370020200241286a20034188016a41086a290300370000200241306a2008290300370000200241386a20072903003700004101102d2219450d00201941003a00002002ad42808080808008842019ad4280808080108410042019102f2002102f200320063702fc02200320093602f802200341a0036a41306a201a370300200341b9036a2202200341d0016a41186a2219290300370000200341b1036a2207200341d0016a41106a2208290300370000200341a9036a2209200341d0016a41086a220b2903003700002003201b3703c803200320032903d0013700a103200341013a00a003200341f8026a200341a8016a20052004200341a0036a10e604200341f8036a2004370300200341f0036a2005370300200341a0036a41086a41023a0000200920032903a8013700002007200341a8016a41086a2903003700002002200341a8016a41106a290300370000200341c1036a200341a8016a41186a290300370000200341c9036a20032903d001370000200341d1036a200b290300370000200341d9036a2008290300370000200341e1036a2019290300370000200341123a00a00341c8e1ca004100200341a0036a108c01200041043a000002402020a7450d00200a102f0b201ca7450d07200c102f0c070b1036000b20004183323b0100200041086a200d360200200041046a200e360200200041026a20083a00002020a7450d00200a102f0b201ca7450d00200c102f0b2006a7450d032009102f0c030b201ba7450d00200a102f0b201aa7450d00200b102f0b2006a7450d002009102f0b20012d00004108470d002001412c6a280200450d00200141286a280200102f0b200341a0046a24000bfd0102027f027e2000280240210202404104102d2203450d002003200236000020002d0044210220034104410810312203450d00200320023a0004200041086a29030021042000290300210520034108411510312203450d00200320053700052003410d6a2004370000200041186a29030021042000290310210520034115412a10312203450d00200320053700152003411d6a2004370000200041286a2903002104200029032021052003412a41d40010312203450d00200320053700252003412d6a2004370000200320002903303700352003413d6a200041386a29030037000020012902002003ad4280808080d0088410042003102f0f0b1036000b830301037f230041206b2203240002400240200241c4006c41046a2204417f4c0d000240024020040d00410121050c010b2004102d2205450d020b20034100360208200320043602042003200536020020022003106902402002450d00200241c4006c210203400240024020012d00004101460d00200341003a00102003200341106a41011082012003200141046a2802003602102003200341106a41041082010c010b200341013a00102003200341106a41011082014120102d2204450d042003422037021420032004360210200341106a200141016a412010820120032802142104200320032802102205200328021810820102402004450d002005102f0b0240200141216a2d00004101460d00200341003a00102003200341106a41011082010c010b200341013a00102003200341106a41011082012003200141226a41201082010b200141c4006a2101200241bc7f6a22020d000b0b20002003290300370200200041086a200341086a280200360200200341206a24000f0b103d000b1036000bc00801027f02402000280200220141194b0d0002400240024002400240024002400240024002400240024002400240024002400240024020010e1a0001121202121203040506070809120a0b0c0d0e1212120f1011000b200041086a1096030f0b200041046a1095030f0b02402000410c6a2802002201450d00200141f0006c2102200028020441046a2101034020011097010240200141046a280200450d002001280200102f0b200141f0006a2101200241907f6a22020d000b0b200041086a280200450d0f2000280204102f0f0b200041086a1094030f0b20002802042201450d0d200041086a280200450d0d2001102f0f0b200041086a2d0000416d6a220141014b0d0c0240024020010e020001000b200041106a280200450d0d2000410c6a280200102f0f0b200041106a280200450d0c2000410c6a280200102f0f0b20002d0004417f6a220141024b0d0b02400240024020010e03000102000b2000412c6a280200450d0d200041286a280200102f0f0b200041086a22012802001092032001280200102f0f0b2000410c6a22012802001092032001280200102f0f0b20002d0004417f6a220141024b0d0a02400240024020010e03000102000b2000412c6a280200450d0c200041286a280200102f0f0b200041086a22012802001092032001280200102f0f0b2000410c6a22012802001092032001280200102f0f0b200041086a2802004101470d09200041106a280200450d092000410c6a280200102f0f0b20002d00044104470d082000410c6a280200450d08200041086a280200102f0f0b200041086a280200450d072000280204102f0f0b200041086a2d0000417c6a220141024b0d060240024020010e03000801000b200041306a280200450d072000412c6a280200102f0f0b200041306a280200450d062000412c6a280200102f0f0b200041086a2d0000417e6a220141024b0d0502400240024020010e03000102000b200041106a280200450d072000410c6a280200102f0c070b200041346a280200450d06200041306a280200102f0f0b200041306a280200450d052000412c6a280200102f0f0b02402000280204220141024b0d00024020010e03060006060b200041086a22012802001092032001280200102f0f0b2000412c6a22012802001092032001280200102f0f0b02402000410c6a280200450d00200041086a280200102f0b02402000411c6a2802002202450d00200041146a28020021012002410c6c210203400240200141046a280200450d002001280200102f0b2001410c6a2101200241746a22020d000b0b200041186a280200450d032000280214102f0f0b200041086a1093030f0b200041086a2d00004108470d01200041346a280200450d01200041306a280200102f0f0b20002d0004417f6a220141024b0d000240024020010e03000201000b200041286a22012802001092032001280200102f0f0b2000410c6a280200450d00200041086a280200102f0f0b0bb20401027f024020002d0000417e6a220141014b0d000240024020010e020001000b02402000410c6a2802002202450d00200041046a2802002201200241c8006c6a21020340024020012d00004101470d00200141086a280200450d00200141046a280200102f0b0240200141246a2d00004101470d002001412c6a280200450d00200141286a280200102f0b200141c8006a22012002470d000b0b0240200041086a280200450d002000280204102f0b0240200041106a2d00004101470d00200041186a280200450d00200041146a280200102f0b0240200041346a2d00004101470d002000413c6a280200450d00200041386a280200102f0b0240200041d8006a2d00004101470d00200041e0006a280200450d00200041dc006a280200102f0b0240200041fc006a2d00004101470d0020004184016a280200450d0020004180016a280200102f0b0240200041a0016a2d00004101470d00200041a8016a280200450d00200041a4016a280200102f0b0240200041c4016a2d00004101470d00200041cc016a280200450d00200041c8016a280200102f0b200041e8016a2d00004101470d01200041f0016a280200450d01200041ec016a280200102f0c010b02402000410c6a2802002201450d00200141c4006c2102200041046a28020041286a210103400240200141786a2d00004101470d002001280200450d002001417c6a280200102f0b200141c4006a2101200241bc7f6a22020d000b0b200041086a280200450d002000280204102f0f0b0b8c0101017f024020002d0000417a6a2201410b4b0d00024002400240024020010e0c000404040404040104040203000b200041086a280200450d03200041046a280200102f0c030b200041086a280200450d02200041046a280200102f0f0b2000410c6a280200450d01200041086a280200102f0f0b2000410c6a280200450d00200041086a280200102f0f0b0bea0101027f0240024020002d0000220141044b0d00024002400240024020010e050500010203050b02402000410c6a2802002202450d00200041046a2802002101200241b0026c210203402001108d01200141b0026a2101200241d07d6a22020d000b0b200041086a280200450d042000280204102f0f0b200041046a22012802001092032001280200102f0f0b0240200041086a280200450d00200041046a280200102f0b2000411c6a22012802001092032001280200102f0f0b200041286a280200450d01200041246a280200102f0c010b200041286a280200450d00200041246a280200102f0f0b0bcc0201027f02402000280200417e6a220141074b0d0002400240024002400240024020010e080006010206030405000b200041086a280200450d052000280204102f0f0b200041086a280200450d042000280204102f0f0b200041086a280200450d032000280204102f0c030b02402000410c6a2802002202450d0020002802042101200241186c210203400240200141046a280200450d002001280200102f0b0240200141106a280200450d002001410c6a280200102f0b200141186a2101200241686a22020d000b0b200041086a280200450d022000280204102f0f0b02402000410c6a2802002202450d00200028020421012002410c6c210203400240200141046a280200450d002001280200102f0b2001410c6a2101200241746a22020d000b0b200041086a280200450d012000280204102f0f0b200041086a280200450d002000280204102f0f0b0bb80303047f017e047f230041f0046b22022400200241086a200110e601024002400240024002402002280208450d00200041003602000c010b200228020c2203200128020441b0026e2204200420034b1b2205ad42b0027e2206422088a70d012006a72204417f4c0d010240024020040d00410821070c010b2004102d2207450d03200441b0026e21050b024002402003450d004100210841002104410021090340200241c0026a200110b30220022802c002411b460d02200941016a210a200241106a200241c0026a41b00210e8061a024020092005470d002008200a2008200a4b1bad42b0027e2206422088a70d072006a722054100480d070240024020090d002005102d21070c010b200720042005103121070b2007450d06200541b0026e21050b200720046a200241106a41b00210e8061a200841026a2108200441b0026a2104200a21092003200a470d000b0b2000200536020420002007360200200041086a20033602000c010b2000410036020002402009450d002007210a0340200a108d01200a41b0026a210a200441d07d6a22040d000b0b2005450d002007102f0b200241f0046a24000f0b103d000b1036000b1038000bb004010a7f230041d0006b220224002002200110e60102400240024002402002280200450d00200041003602000c010b2002280204220320012802044105762204200420034b1b22054105742204417f4c0d010240024020050d00410121060c010b2004102d2206450d030b02402003450d00410021070340200241003a00482007220841016a21072001280204417f6a21044100210902400240024003402004417f460d01200241286a20096a2001280200220a2d00003a0000200120043602042001200a41016a3602002002200941016a220a3a00482004417f6a2104200a2109200a4120470d000b200241086a41186a2209200241286a41186a290300370300200241086a41106a220a200241286a41106a290300370300200241086a41086a220b200241286a41086a2903003703002002200229032837030820052008470d020240200841017422042007200420074b1b220441ffffff3f712004470d002004410574220441004e0d020b1038000b0240200941ff0171450d00200241003a00480b200041003602002005450d042006102f0c040b0240024020080d002004102d21060c010b200620084105742004103121060b2006450d05200441057621050b200620084105746a22042002290308370000200441186a2009290300370000200441106a200a290300370000200441086a200b29030037000020072003470d000b0b2000200536020420002006360200200041086a20033602000b200241d0006a24000f0b103d000b1036000bb50404057f017e017f017e0240024020012802042202450d00200128020022032d0000210420012002417f6a22053602042001200341016a3602000240200441037122064103460d00024002400240024020060e03000102000b2004410276ad21070c020b41012106024020050d000c050b20032d0001210520012002417e6a3602042001200341026a3602002005410874200472220141ffff0371418002490d04200141fcff0371410276ad21070c010b410121060240200541034f0d000c040b200341036a2d0000210520032f0001210820012002417c6a3602042001200341046a3602002008200541107472410874200472220141808004490d032001410276ad21070b410021060c020b02402004410276220841044b0d000240024020080e050002020201000b20054104490d022003350001210720012002417b6a3602042001200341056a36020020074280808080045421060c030b20054108490d01200329000121072001200241776a3602042001200341096a3602002007428080808080808080015421060c020b200841046a220541084b0d002002417e6a2102200341026a2103410021044200210741012106034002402002417f470d000c030b2003417f6a310000210920012002360204200120033602002002417f6a2102200341016a210320092004410374413871ad862007842107200441016a220441ff01712005490d000b2007427f412820084103746b413871ad885821060c010b410121060b2000200737030820002006ad3703000bce0303047f017e047f230041f0016b22022400200241086a200110e601024002400240024002402002280208450d00200041003602000c010b200228020c2203200128020441f0006e2204200420034b1b2205ad42f0007e2206422088a70d012006a72204417f4c0d010240024020040d00410421070c010b2004102d2207450d03200441f0006e21050b024002402003450d00410021084100210441002109034020024180016a200110f603200228028401450d02200941016a210a200241106a20024180016a41f00010e8061a024020092005470d002008200a2008200a4b1bad42f0007e2206422088a70d072006a722054100480d070240024020090d002005102d21070c010b200720042005103121070b2007450d06200541f0006e21050b200720046a200241106a41f00010e8061a200841026a2108200441f0006a2104200a21092003200a470d000b0b2000200536020420002007360200200041086a20033602000c010b2000410036020002402009450d00200741046a210a0340200a1097010240200a41046a280200450d00200a280200102f0b200a41f0006a210a200441907f6a22040d000b0b2005450d002007102f0b200241f0016a24000f0b103d000b1036000b1038000bf30601067f230041f0006b2102024002400240024002400240024002400240024020012802042203450d00200128020022042d0000210520012003417f6a2206360204410121072001200441016a360200200541f001490d06200541847e6a220541034b0d0120050e0402030405020b200041023a00000f0b200041023a00000f0b20064102490d0420042f0001210520012003417d6a3602042001200441036a3602000240200541ef014d0d00410121070c040b200041023a00000f0b20064104490d042004280001210520012003417b6a3602042001200441056a36020041012107200541ffff034b0d02200041023a00000f0b024020064104490d00200041023a000020012003417b6a3602042001200441056a3602000f0b200041023a00000f0b41002105200241003a00682003417f6a21062003417e6a210302400240034020062005460d01200241c8006a20056a200420056a220741016a2d00003a0000200120033602042001200741026a3602002002200541016a22073a00682003417f6a21032007210520074120470d000b200241c6006a20022d004a3a0000200241306a200241d7006a290000370300200241386a200241df006a290000370300200241c0006a200241e7006a2d00003a0000200220022f01483b01442002200229004f370328200228004b2105410021010c010b0240200541ff0171450d00200241003a00680b410121010b200241246a41026a2203200241c4006a41026a2d00003a0000200241086a41086a2207200241286a41086a290300370300200241086a41106a2204200241286a41106a290300370300200241086a41186a2206200241286a41186a2d00003a0000200220022f01443b01242002200229032837030820010d03200241286a41026a20032d00003a0000200241c8006a41086a2007290300370300200241c8006a41106a2004290300370300200241c8006a41186a20062d00003a0000200220022f01243b012820022002290308370348410021070b200020073a0000200020022f01283b0001200041046a2005360200200041086a2002290348370200200041036a2002412a6a2d00003a0000200041106a200241c8006a41086a290300370200200041186a200241c8006a41106a290300370200200041206a200241c8006a41186a2802003602000f0b200041023a00000f0b200041023a00000f0b200041023a00000bde0506067f017e017f017e017f017e230041206b220224000240024020012802042203450d00200128020022042d0000210520012003417f6a22063602042001200441016a360200024002400240200541037122074103460d0002400240024020070e03000102000b2005410276ad21080c040b410121072006450d0220042d0001210620012003417e6a3602042001200441026a3602002006410874200572220141ffff0371418002490d02200141fcff0371410276ad21080c030b4101210720064103490d01200441036a2d0000210620042f0001210920012003417c6a3602042001200441046a3602002009200641107472410874200572220141808004490d012001410276ad21080c020b024020054102762209410c4b0d0002400240024020090e0d00030303010303030303030302000b20064104490d052004350001210820012003417b6a3602042001200441056a36020020084280808080045421074200210a0c060b20064108490d04200429000121082001200341776a3602042001200441096a3602002008428080808080808080015421074200210a0c050b20064110490d03200441096a290000210a2004290001210820012003416f6a3602042001200441116a360200200a428080808080808080015421070c040b200941046a220641104b0d022003417e6a2103200441026a21044100210541012107200241186a210b420021084200210a03402003417f460d01200241106a2004417f6a3100004200200541037441f8007110eb0620012003360204200120043602002003417f6a2103200441016a2104200b290300200a84210a20022903102008842108200541016a220541ff01712006490d000b2002427f427f41e80020094103746b41f8007110ec062008200229030058200a200241086a290300220c58200a200c511b21070c030b0c020b4200210a410021070c010b410121070b20002008370308200041106a200a37030020002007ad370300200241206a24000bd10f02097f047e230041d0056b220224000240024002400240024002400240024002400240024020012802042203450d00200128020022042d0000210520012003417f6a3602042001200441016a360200200541044b0d0620050e050102030405010b200041063a00000c090b200241a0036a2001109803024020022802a0032206450d0020022802a4032107024020012802042203450d00200241a8036a2802002108200128020022042d0000210520012003417f6a3602042001200441016a360200200541014b0d004100210902400240024020050e020100010b41002105200241003a00c0032003417f6a210a2003417e6a21030340200a2005460d02200241a0036a20056a200420056a220941016a2d00003a0000200120033602042001200941026a3602002002200541016a22093a00c0032003417f6a21032009210520094120470d000b200241f0006a41186a200241a0036a41186a290300370300200241f0006a41106a200241a0036a41106a290300370300200241f0006a41086a200241a0036a41086a290300370300200220022903a003370370410121090b200241206a41186a200241f0006a41186a290300220b370300200241206a41106a200241f0006a41106a290300220c370300200241206a41086a200241f0006a41086a290300220d37030020022002290370220e370320200020093a0001200041013a0000200041026a200e3700002000410a6a200d370000200041126a200c3700002000411a6a200b3700002000412c6a2008360100200041286a2007360100200041246a20063601000c0b0b200541ff0171450d00200241003a00c0030b200041063a00002007450d092006102f0c090b200041063a00000c080b200241f0006a200110b302024002402002280270411b460d00200241a0036a200241f0006a41b00210e8061a41b002102d22010d010c080b200041063a00000c080b2001200241a0036a41b00210e8062101200041023a0000200020022f00503b0001200041036a200241d0006a41026a2d00003a0000200041046a2001360200200041086a2002290220370200200041106a200241206a41086a290200370200200041186a200241206a41106a290200370200200041206a200241206a41186a290200370200200041286a200241206a41206a2902003702000c070b200241086a200110e601024020022802080d00200228020c2105200241f0006a200110b3022002280270411b460d00200241a0036a200241f0006a41b00210e8061a41b002102d2201450d062001200241a0036a41b00210e8062101200041033a0000200020022f00503b0001200041036a200241d2006a2d00003a0000200041086a2001360200200041046a20053602002000410c6a2002290220370200200041146a200241206a41086a2902003702002000411c6a200241306a290200370200200041246a200241386a2902003702002000412c6a200241c0006a2802003602000c070b200041063a00000c060b41002105200241003a00c0032003417f6a210a2003417e6a210302400240024002400340200a2005460d01200241a0036a20056a200420056a220941016a2d00003a0000200120033602042001200941026a3602002002200541016a22093a00c0032003417f6a21032009210520094120470d000b200241206a41086a200241a0036a41086a290300370300200241206a41106a200241a0036a41106a290300370300200241206a41186a200241a0036a41186a290300370300200220022903a003370320200241106a200110e60120022802100d0120012802042203450d0120022802142104200128020022092d0000210520012003417f6a3602042001200941016a360200200541014b0d014100210120050e020302030b200541ff0171450d00200241003a00c0030b200041063a00000c070b410121010b200241d0006a41186a200241206a41186a290300220b370300200241d0006a41106a200241206a41106a290300220c370300200241d0006a41086a200241206a41086a290300220d37030020022002290320220e370350200041043a00002000200e370001200041096a200d370000200041116a200c370000200041196a200b370000200041246a2004360200200041216a20013a00000c050b41002105200241003a00c0032003417f6a210a2003417e6a210302400340200a2005460d01200241a0036a20056a200420056a220941016a2d00003a0000200120033602042001200941026a3602002002200541016a22093a00c0032003417f6a21032009210520094120470d000b200241206a41086a2205200241a0036a41086a290300370300200241206a41106a2203200241a0036a41106a290300370300200241206a41186a2209200241a0036a41186a290300370300200220022903a003370320200241186a200110e6012002280218450d020c030b200541ff0171450d02200241003a00c0030c020b200041063a00000c030b200228021c2101200241d0006a41186a2009290300220b370300200241d0006a41106a2003290300220c370300200241d0006a41086a2005290300220d37030020022002290320220e370350200041053a00002000200e370001200041096a200d370000200041116a200c370000200041196a200b370000200041216a20022f004d3b0000200041236a200241cf006a2d00003a0000200041246a20013602000c020b200041063a00000c010b1036000b200241d0056a24000bfa0602047f047e230041b0056b22022400024002400240024002400240024020012802042203450d00200128020022042d0000210520012003417f6a3602042001200441016a360200200541024b0d0320050e03010204010b200041043602000c050b200241d0006a200110b302024002402002280250411b460d0020024180036a200241d0006a41b00210e8061a41b002102d22010d010c050b200041043602000c050b2000200120024180036a41b00210e80636020420004101360200200041086a2002290228370200200041106a200241286a41086a290200370200200041186a200241286a41106a290200370200200041206a200241286a41186a290200370200200041286a200241286a41206a2802003602000c040b20024180036a2001109b03024020022d0080034102460d00200241d0006a41206a20024180036a41206a2802002201360200200241d0006a41186a20024180036a41186a2903002206370300200241d0006a41106a20024180036a41106a2903002207370300200241d0006a41086a20024180036a41086a29030022083703002002200229038003220937035020004102360200200020093702042000410c6a2008370200200041146a20073702002000411c6a2006370200200041246a20013602000c040b200041043602000c030b200041043602000c020b20024180036a2001109b03024020022d0080034102470d00200041043602000c020b200241286a41206a20024180036a41206a280200360200200241286a41186a20024180036a41186a290300370300200241286a41106a20024180036a41106a290300370300200241286a41086a20024180036a41086a2903003703002002200229038003370328200241d0006a200110b30202402002280250411b460d0020024180036a200241d0006a41b00210e8061a41b002102d2201450d01200120024180036a41b00210e8062101200241206a200241286a41206a2802002205360200200241186a200241286a41186a2903002206370300200241106a200241286a41106a2903002207370300200241086a200241286a41086a290300220837030020022002290328220937030020004103360200200020093702042000410c6a2008370200200041146a20073702002000411c6a2006370200200041246a2005360200200041286a20013602000c020b200041043602000c010b1036000b200241b0056a24000b8d1e03077f047e017f230041e0056b2202240002400240024002400240024002400240024002400240024020012802042203450d00200128020022042d0000210520012003417f6a3602042001200441016a360200200541084b0d0a20050e09010203040506070809010b2000410a3a00000c0a0b41002105200241003a00d0032003417f6a21062003417e6a2107024002400240034020062005460d01200241b0036a20056a200420056a220841016a2d00003a0000200120073602042001200841026a3602002002200541016a22083a00d0032007417f6a21072008210520084120470d000b200241c0006a41086a200241b0036a41086a290300370300200241c0006a41106a200241b0036a41106a290300370300200241c0006a41186a200241b0036a41186a290300370300200220022903b00337034020024180016a200110b302200228028001411b460d01200241b0036a20024180016a41b00210e8061a41b002102d22010d021036000b200541ff0171450d00200241003a00d0030b2000410a3a00000c0a0b2001200241b0036a41b00210e8062101200241206a41186a200241c0006a41186a2903002209370300200241206a41106a200241c0006a41106a290300220a370300200241206a41086a200241c0006a41086a290300220b37030020022002290340220c370320200041013a00002000200c370001200041096a200b370000200041116a200a370000200041196a2009370000200041216a20022f001d3b0000200041236a2002411f6a2d00003a0000200041246a2001360200200041286a2002290200370200200041306a200241086a290200370200200041386a200241106a290200370200200041c0006a200241186a2802003602000c090b41002105200241003a00d003410120036b21062003417e6a21070240024002400340200620056a450d01200241b0036a20056a200420056a220841016a2d00003a0000200120073602042001200841026a3602002002200541016a22083a00d0032007417f6a21072008210520084120470d000b20024180016a41086a200241b0036a41086a29030037030020024180016a41106a200241b0036a41106a29030037030020024180016a41186a200241b0036a41186a290300370300200220022903b0033703800141002105200241003a00d003200420086a2106200820036b41016a21080340200820056a450d02200241b0036a20056a200620056a220441016a2d00003a0000200120073602042001200441026a3602002002200541016a22043a00d0032007417f6a21072004210520044120470d000b200241206a41086a2201200241b0036a41086a290300370300200241206a41106a2204200241b0036a41106a290300370300200241206a41186a2205200241b0036a41186a290300370300200241c0006a41086a220720024180016a41086a290300370300200241c0006a41106a220820024180016a41106a290300370300200241c0006a41186a220320024180016a41186a290300370300200220022903b0033703202002200229038001370340200041023a000020002002290340370001200041096a2007290300370000200041116a2008290300370000200041196a2003290300370000200041216a2002290320370000200041296a2001290300370000200041316a2004290300370000200041396a2005290300370000200041c1006a20022f00003b0000200041c3006a200241026a2d00003a00000c0b0b200541ff0171450d01200241003a00d0030c010b200541ff0171450d00200241003a00d0030b2000410a3a00000c080b20024180016a20011098030240024002402002280280012204450d002002280284012105200128020422074102490d0120024188016a2802002106200128020022082f0000210d20012007417e6a22033602042001200841026a36020020034104490d022008280002210320012007417a6a3602042001200841066a360200200041106a20033602002000410c6a2006360200200041086a2005360200200041046a2004360200200041026a200d3b0100200041033a0000200041146a20022902b0033702002000411c6a200241b0036a41086a290200370200200041246a200241b0036a41106a2902003702002000412c6a200241c8036a290200370200200041346a200241d0036a2902003702002000413c6a200241d8036a2902003702000c0a0b2000410a3a00000c090b2000410a3a00002005450d082004102f0c080b2000410a3a00002005450d072004102f0c070b41002105200241003a00a0012003417f6a21062003417e6a21070240034020062005460d0120024180016a20056a200420056a220841016a2d00003a0000200120073602042001200841026a3602002002200541016a22083a00a0012007417f6a21072008210520084120470d000b200241c0006a41086a20024180016a41086a2903002209370300200241c0006a41106a20024180016a41106a290300220a370300200241c0006a41186a20024180016a41186a290300220b3703002002200229038001220c370340200041043a00002000200c370001200041096a2009370000200041116a200a370000200041196a200b370000200041216a20022900b003370000200041296a200241b0036a41086a290000370000200041316a200241b0036a41106a290000370000200041396a200241b0036a41186a290000370000200041c0006a200241cf036a2800003600000c070b0240200541ff0171450d00200241003a00a0010b2000410a3a00000c060b41002105200241003a00d003410120036b21062003417e6a21070240024002400340200620056a450d01200241b0036a20056a200420056a220841016a2d00003a0000200120073602042001200841026a3602002002200541016a22083a00d0032007417f6a21072008210520084120470d000b20024180016a41086a200241b0036a41086a29030037030020024180016a41106a200241b0036a41106a29030037030020024180016a41186a200241b0036a41186a290300370300200220022903b0033703800141002105200241003a00d003200420086a2106200820036b41016a21080340200820056a450d02200241b0036a20056a200620056a220441016a2d00003a0000200120073602042001200441026a3602002002200541016a22043a00d0032007417f6a21072004210520044120470d000b200241206a41086a2201200241b0036a41086a290300370300200241206a41106a2204200241b0036a41106a290300370300200241206a41186a2205200241b0036a41186a290300370300200241c0006a41086a220720024180016a41086a290300370300200241c0006a41106a220820024180016a41106a290300370300200241c0006a41186a220320024180016a41186a290300370300200220022903b0033703202002200229038001370340200041053a000020002002290340370001200041096a2007290300370000200041116a2008290300370000200041196a2003290300370000200041216a2002290320370000200041296a2001290300370000200041316a2004290300370000200041396a2005290300370000200041c1006a20022f00003b0000200041c3006a200241026a2d00003a00000c080b200541ff0171450d01200241003a00d0030c010b200541ff0171450d00200241003a00d0030b2000410a3a00000c050b41002105200241003a00a0012003417f6a21062003417e6a21070240034020062005460d0120024180016a20056a200420056a220841016a2d00003a0000200120073602042001200841026a3602002002200541016a22083a00a0012007417f6a21072008210520084120470d000b200241c0006a41086a20024180016a41086a2903002209370300200241c0006a41106a20024180016a41106a290300220a370300200241c0006a41186a20024180016a41186a290300220b3703002002200229038001220c370340200041063a00002000200c370001200041096a2009370000200041116a200a370000200041196a200b370000200041216a20022900b003370000200041296a200241b0036a41086a290000370000200041316a200241b0036a41106a290000370000200041396a200241b0036a41186a290000370000200041c0006a200241cf036a2800003600000c050b0240200541ff0171450d00200241003a00a0010b2000410a3a00000c040b41002105200241003a00a0012003417f6a21062003417e6a21070240034020062005460d0120024180016a20056a200420056a220841016a2d00003a0000200120073602042001200841026a3602002002200541016a22083a00a0012007417f6a21072008210520084120470d000b200241c0006a41086a20024180016a41086a2903002209370300200241c0006a41106a20024180016a41106a290300220a370300200241c0006a41186a20024180016a41186a290300220b3703002002200229038001220c370340200041073a00002000200c370001200041096a2009370000200041116a200a370000200041196a200b370000200041216a20022900b003370000200041296a200241b0036a41086a290000370000200041316a200241b0036a41106a290000370000200041396a200241b0036a41186a290000370000200041c0006a200241cf036a2800003600000c040b0240200541ff0171450d00200241003a00a0010b2000410a3a00000c030b200041083a00000c020b41002105200241003a00a0012003417f6a21062003417e6a21070240034020062005460d0120024180016a20056a200420056a220841016a2d00003a0000200120073602042001200841026a3602002002200541016a22083a00a0012007417f6a21072008210520084120470d000b200241c0006a41086a20024180016a41086a2903002209370300200241c0006a41106a20024180016a41106a290300220a370300200241c0006a41186a20024180016a41186a290300220b3703002002200229038001220c370340200041093a00002000200c370001200041096a2009370000200041116a200a370000200041196a200b370000200041216a20022900b003370000200041296a200241b0036a41086a290000370000200041316a200241b0036a41106a290000370000200041396a200241b0036a41186a290000370000200041c0006a200241cf036a2800003600000c020b0240200541ff0171450d00200241003a00a0010b2000410a3a00000c010b2000410a3a00000b200241e0056a24000b892f010e7f230041d0006b22012400024002404108102d2202450d002002410c3602042002418aa9c4003602004108102d2203450d00200320022902003702002002102f4108102d2202450d002002410c36020420024196a9c40036020020034108411010312203450d00200320022902003702082002102f4108102d2202450d0020024108360204200241a2a9c40036020020034110412010312204450d00200420022902003702102002102f4108102d2202450d002002410a360204200241aaa9c400360200200420022902003702182002102f4108102d2203450d002003410b360204200341b4a9c4003602002004412041c00010312202450d00200220032902003702202003102f4108102d2203450d0020034118360204200341f2b3c600360200200220032902003702282003102f4108102d2203450d002003411236020420034189cdc100360200200220032902003702302003102f41d400102d2205450d0041002106024020022802002203450d002005200228020436020820052003360204200541003602000240200228020822030d00410121060c010b2005200228020c360214200520033602102005410036020c0240200228021022030d00410221060c010b200520022802143602202005200336021c200541003602180240200228021822030d00410321060c010b2005200228021c36022c20052003360228200541003602240240200228022022030d00410421060c010b2005200228022436023820052003360234200541003602300240200228022822030d00410521060c010b2005200228022c360244200520033602402005410036023c0240200228023022030d00410621060c010b200520022802343602502005200336024c20054100360248410721060b2002102f20014100360228200142013703204104102d2202450d0020014284808080c00037022420012002360220200241edcad18b0636000002400240200128022420012802282202460d00200128022021030c010b200241016a22032002490d02200241017422042003200420034b1b22044100480d020240024020020d002004102d21030c010b200128022020022004103121030b2003450d0120012004360224200120033602200b2001200241016a360228200320026a410b3a0000411c200141206a106941e8acc300210703402007280204210820072802082204200141206a10690240024020012802242202200128022822096b2004490d00200128022021030c010b200920046a22032009490d032002410174220a2003200a20034b1b220a4100480d030240024020020d00200a102d21030c010b20012802202002200a103121030b2003450d022001200a36022420012003360220200a21020b2001200920046a220a360228200320096a2008200410e8061a02400240200728020c4102470d0002402002200a470d00200241016a22042002490d05200241017422092004200920044b1b22044100480d050240024020020d002004102d21030c010b200320022004103121030b2003450d0420012004360224200120033602200b2001200a41016a3602282003200a6a41003a00000c010b02402002200a470d00200241016a22042002490d04200241017422092004200920044b1b22044100480d040240024020020d002004102d21030c010b200320022004103121030b2003450d0320012004360224200120033602200b2001200a41016a3602282003200a6a41013a00000240200728020c4101470d002007280214210920072802182202200141206a10690240024020012802242204200128022822036b2002490d00200128022021040c010b200320026a220a2003490d0520044101742208200a2008200a4b1b220a4100480d050240024020040d00200a102d21040c010b20012802202004200a103121040b2004450d042001200a360224200120043602200b2001200320026a360228200420036a2009200210e8061a200728022021020240200728021c4101470d0020022007280228200141206a106b0c020b2002200741246a280200200141206a106b0c010b200141306a20072802101105002001280234210920012802382202200141206a10690240024020012802242204200128022822036b2002490d00200128022021040c010b200320026a220a2003490d0420044101742208200a2008200a4b1b220a4100480d040240024020040d00200a102d21040c010b20012802202004200a103121040b2004450d032001200a360224200120043602200b2001200320026a360228200420036a2009200210e8061a200128024021040240200128023c4101460d0020042001280244200141206a106b0c010b200420012802482202200141206a106b02402002450d00200241d8006c21094100210303400240200420036a220241346a280200450d002002413c6a280200450d00200241386a280200102f0b0240200241c4006a280200450d00200241cc006a280200450d00200241c8006a280200102f0b2009200341d8006a2203470d000b0b2001280244450d002004102f0b200128022421032001280228210202400240200728022c4102470d000240024020032002460d00200128022021030c010b200241016a22032002490d05200241017422042003200420034b1b22044100480d050240024020020d002004102d21030c010b200128022020022004103121030b2003450d0420012004360224200120033602200b2001200241016a360228200320026a41003a00000c010b0240024020032002460d00200128022021030c010b200241016a22032002490d04200241017422042003200420034b1b22044100480d040240024020020d002004102d21030c010b200128022020022004103121030b2003450d0320012004360224200120033602200b2001200241016a360228200320026a41013a00000240200728022c4101470d002007280230210320072802382202200141206a10692002450d012002412c6c210a2003411c6a21020340200241686a28020021082002416c6a2802002203200141206a10690240024020012802242209200128022822046b2003490d00200128022021090c010b200420036a220b2004490d062009410174220c200b200c200b4b1b220b4100480d060240024020090d00200b102d21090c010b20012802202009200b103121090b2009450d052001200b360224200120093602200b2001200420036a360228200920046a2008200310e8061a200241706a200141206a106a2002200141206a10682002412c6a2102200a41546a220a0d000c020b0b200141186a200728023011050020012802182103200128021c2202200141206a10692002450d002002412c6c210a2003411c6a21020340200241686a28020021082002416c6a2802002203200141206a10690240024020012802242209200128022822046b2003490d00200128022021090c010b200420036a220b2004490d052009410174220c200b200c200b4b1b220b4100480d050240024020090d00200b102d21090c010b20012802202009200b103121090b2009450d042001200b360224200120093602200b2001200420036a360228200920046a2008200310e8061a200241706a200141206a106a2002200141206a10682002412c6a2102200a41546a220a0d000b0b200128022421032001280228210202400240200728023c4102470d000240024020032002460d00200128022021030c010b200241016a22032002490d05200241017422042003200420034b1b22044100480d050240024020020d002004102d21030c010b200128022020022004103121030b2003450d0420012004360224200120033602200b2001200241016a360228200320026a41003a00000c010b0240024020032002460d00200128022021030c010b200241016a22032002490d04200241017422042003200420034b1b22044100480d040240024020020d002004102d21030c010b200128022020022004103121030b2003450d0320012004360224200120033602200b2001200241016a360228200320026a41013a00000240200728023c4101470d002007280240210320072802482202200141206a10692002450d012002412c6c210a2003411c6a21020340200241686a28020021082002416c6a2802002203200141206a10690240024020012802242209200128022822046b2003490d00200128022021090c010b200420036a220b2004490d062009410174220c200b200c200b4b1b220b4100480d060240024020090d00200b102d21090c010b20012802202009200b103121090b2009450d052001200b360224200120093602200b2001200420036a360228200920046a2008200310e8061a200241706a200141206a10682002200141206a10682002412c6a2102200a41546a220a0d000c020b0b200141106a20072802401105002001280210210320012802142202200141206a10692002450d002002412c6c210a2003411c6a21020340200241686a28020021082002416c6a2802002203200141206a10690240024020012802242209200128022822046b2003490d00200128022021090c010b200420036a220b2004490d052009410174220c200b200c200b4b1b220b4100480d050240024020090d00200b102d21090c010b20012802202009200b103121090b2009450d042001200b360224200120093602200b2001200420036a360228200920046a2008200310e8061a200241706a200141206a10682002200141206a10682002412c6a2102200a41546a220a0d000b0b02400240200728024c4101470d002007280250210c20072802582202200141206a10692002450d01200241386c210d410021090340200c20096a220241046a2802002108200241086a2802002203200141206a1069024002402001280224220a200128022822046b2003490d002001280220210a0c010b200420036a220b2004490d06200a410174220e200b200e200b4b1b220b4100480d0602400240200a0d00200b102d210a0c010b2001280220200a200b1031210a0b200a450d052001200b3602242001200a3602200b2001200420036a360228200a20046a2008200310e8061a200241106a2802002108200241146a2802002203200141206a1069024002402001280224220a200128022822046b2003490d002001280220210a0c010b200420036a220b2004490d06200a410174220e200b200e200b4b1b220b4100480d0602400240200a0d00200b102d210a0c010b2001280220200a200b1031210a0b200a450d052001200b3602242001200a3602200b2001200420036a360228200a20046a2008200310e8061a02400240200241186a2802004101470d002002411c6a2802002108200241246a2802002203200141206a1069024002402001280224220a200128022822046b2003490d002001280220210a0c010b200420036a220b2004490d08200a410174220e200b200e200b4b1b220b4100480d0802400240200a0d00200b102d210a0c010b2001280220200a200b1031210a0b200a450d072001200b3602242001200a3602200b2001200420036a360228200a20046a2008200310e8061a0c010b200141306a2002411c6a280200200241206a28020028020c1102002001280230210820012802382203200141206a1069024002402001280224220a200128022822046b2003490d002001280220210a0c010b200420036a220b2004490d07200a410174220e200b200e200b4b1b220b4100480d0702400240200a0d00200b102d210a0c010b2001280220200a200b1031210a0b200a450d062001200b3602242001200a3602200b2001200420036a360228200a20046a2008200310e8061a2001280234450d002008102f0b200241286a200141206a1068200d200941386a2209470d000c020b0b200141086a20072802501105002001280208210c200128020c2202200141206a10692002450d00200241386c210d410021090340200c20096a220241046a2802002108200241086a2802002203200141206a1069024002402001280224220a200128022822046b2003490d002001280220210a0c010b200420036a220b2004490d05200a410174220e200b200e200b4b1b220b4100480d0502400240200a0d00200b102d210a0c010b2001280220200a200b1031210a0b200a450d042001200b3602242001200a3602200b2001200420036a360228200a20046a2008200310e8061a200241106a2802002108200241146a2802002203200141206a1069024002402001280224220a200128022822046b2003490d002001280220210a0c010b200420036a220b2004490d05200a410174220e200b200e200b4b1b220b4100480d0502400240200a0d00200b102d210a0c010b2001280220200a200b1031210a0b200a450d042001200b3602242001200a3602200b2001200420036a360228200a20046a2008200310e8061a02400240200241186a2802004101470d002002411c6a2802002108200241246a2802002203200141206a1069024002402001280224220a200128022822046b2003490d002001280220210a0c010b200420036a220b2004490d07200a410174220e200b200e200b4b1b220b4100480d0702400240200a0d00200b102d210a0c010b2001280220200a200b1031210a0b200a450d062001200b3602242001200a3602200b2001200420036a360228200a20046a2008200310e8061a0c010b200141306a2002411c6a280200200241206a28020028020c1102002001280230210820012802382203200141206a1069024002402001280224220a200128022822046b2003490d002001280220210a0c010b200420036a220b2004490d06200a410174220e200b200e200b4b1b220b4100480d0602400240200a0d00200b102d210a0c010b2001280220200a200b1031210a0b200a450d052001200b3602242001200a3602200b2001200420036a360228200a20046a2008200310e8061a2001280234450d002008102f0b200241286a200141206a1068200d200941386a2209470d000b0b02400240200728025c4101470d002007280260210320072802682202200141206a10692002450d012002411c6c210a2003410c6a21020340200241786a28020021082002417c6a2802002203200141206a10690240024020012802242209200128022822046b2003490d00200128022021090c010b200420036a220b2004490d062009410174220c200b200c200b4b1b220b4100480d060240024020090d00200b102d21090c010b20012802202009200b103121090b2009450d052001200b360224200120093602200b2001200420036a360228200920046a2008200310e8061a2002200141206a10682002411c6a2102200a41646a220a0d000c020b0b200120072802601105002001280200210320012802042202200141206a10692002450d002002411c6c210a2003410c6a21020340200241786a28020021082002417c6a2802002203200141206a10690240024020012802242209200128022822046b2003490d00200128022021090c010b200420036a220b2004490d052009410174220c200b200c200b4b1b220b4100480d050240024020090d00200b102d21090c010b20012802202009200b103121090b2009450d042001200b360224200120093602200b2001200420036a360228200920046a2008200310e8061a2002200141206a10682002411c6a2102200a41646a220a0d000b0b200741ec006a220741b8c4c300470d000b02400240200128022420012802282202460d00200128022021030c010b200241016a22032002490d02200241017422042003200420034b1b22044100480d020240024020020d002004102d21030c010b200128022020022004103121030b2003450d0120012004360224200120033602200b2001200241016a360228200320026a41043a00002006200141206a106902402006450d002006410c6c210a200541086a210303402003417c6a280200210820032802002202200141206a10690240024020012802242209200128022822046b2002490d00200128022021090c010b200420026a22072004490d042009410174220b2007200b20074b1b22074100480d040240024020090d002007102d21090c010b200128022020092007103121090b2009450d0320012007360224200120093602200b2001200420026a360228200920046a2008200210e8061a2003410c6a2103200a41746a220a0d000b0b20002001290320370200200041086a200141206a41086a2802003602002005102f200141d0006a24000f0b1036000b1038000ba00b01057f230041106b22022400200141046a2802002103200141086a2802002104024002400240024020002d00004101460d000240024020032004460d00200128020021050c010b200441016a22032004490d04200441017422052003200520034b1b22034100480d040240024020040d002003102d21050c010b200128020020042003103121050b2005450d0320012005360200200141046a2003360200200141086a28020021040b200141086a2206200441016a36020041002103200520046a41003a000002400240024002400240024002400240024020002d00010e080700010203040506070b200241013a000f410121030c070b410221030c050b410321030c040b410421030c030b410521030c020b410621030c010b200241073a000f02400240200141046a28020020062802002204460d00200128020021030c010b200441016a22032004490d06200441017422052003200520034b1b22054100480d060240024020040d002005102d21030c010b200128020020042005103121030b2003450d0520012003360200200141046a2005360200200141086a28020021040b200141086a200441016a360200200320046a41073a000020002d000221030b200220033a000f0b02400240200141046a280200200141086a2802002204460d00200128020021000c010b200441016a22002004490d04200441017422052000200520004b1b22054100480d040240024020040d002005102d21000c010b200128020020042005103121000b2000450d0320012000360200200141046a2005360200200141086a28020021040b200141086a200441016a360200200020046a20033a00000c010b0240024020032004460d00200128020021030c010b200441016a22032004490d03200441017422052003200520034b1b22054100480d030240024020040d002005102d21030c010b200128020020042005103121030b2003450d0220012003360200200141046a2005360200200141086a28020021040b200141086a200441016a360200200320046a41013a000020002d0001220441024b0d0002400240024020040e03000102000b02400240200141046a280200200141086a2802002204460d00200128020021000c010b200441016a22002004490d05200441017422032000200320004b1b22034100480d050240024020040d002003102d21000c010b200128020020042003103121000b2000450d0420012000360200200141046a2003360200200141086a28020021040b200141086a200441016a360200200020046a41003a00000c020b02400240200141046a280200200141086a2802002204460d00200128020021000c010b200441016a22002004490d04200441017422032000200320004b1b22034100480d040240024020040d002003102d21000c010b200128020020042003103121000b2000450d0320012000360200200141046a2003360200200141086a28020021040b200141086a200441016a360200200020046a41013a00000c010b02400240200141046a280200200141086a2802002204460d00200128020021030c010b200441016a22032004490d03200441017422052003200520034b1b22054100480d030240024020040d002005102d21030c010b200128020020042005103121030b2003450d0220012003360200200141046a2005360200200141086a28020021040b200141086a2205200441016a360200200320046a41023a000020002d0002210302400240200141046a28020020052802002204460d00200128020021000c010b200441016a22002004490d03200441017422052000200520004b1b22054100480d030240024020040d002005102d21000c010b200128020020042005103121000b2000450d0220012000360200200141046a2005360200200141086a28020021040b200141086a200441016a360200200020046a20033a00000b200241106a24000f0b1036000b1038000beb0f03057f017e077f230041e0006b2202240020012802202103200241306a41186a4200370300200241306a41106a22044200370300200241306a41086a2205420037030020024200370330419c9eca00ad4280808080f000841001220629000021072005200641086a290000370300200220073703302006102f41a5c6c800ad4280808080a00184100122062900002107200241d0006a41086a2208200641086a290000370300200220073703502006102f200420022903502207370300200241106a41086a2005290300370300200241106a41106a2007370300200241106a41186a200829030037030020022002290330370310200241306a200241106a412010aa0220022802302205410120051b2106024002400240024002400240024002400240024020032002290234420020051b2207422088a7490d002007a7450d012006102f0c010b2003200620034105746a10a303210302402007a7450d002006102f0b20030d010b200241306a41186a22054200370300200241306a41106a22064200370300200241306a41086a2203420037030020024200370330419c9eca00ad4280808080f000841001220829000021072003200841086a290000370300200220073703302008102f41a39eca00ad4280808080c00184100122082900002107200241d0006a41086a2209200841086a290000370300200220073703502008102f20042002290350370000200441086a22082009290300370000200241106a41086a220a2003290300370300200241106a41106a220b2006290300370300200241106a41186a220c200529030037030020022002290330370310200241086a200241106a4120109501200128021c200228020c410020022802081b220d470d012005420037030020064200370300200342003703002002420037033041d39bca00ad42808080808001841001220e29000021072003200e41086a29000037030020022007370330200e102f419087ca00ad4280808080c000841001220e29000021072009200e41086a29000037030020022007370350200e102f2004200229035037000020082009290300370000200a2003290300370300200b2006290300370300200c200529030037030020022002290330370310200241306a200241106a108d0320022802302204410120041b210c200128022022052002290234420020041b2207422088a74f0d03200c20054105746a220e450d032002410036023820024201370330200128020021034104102d22040d020c070b20004180063b0001200041013a0000200041036a41003a00000c050b20004180063b0001200041013a0000200041036a41003a00000c040b20024284808080c0003702342002200436023020042003360000200128020421082001410c6a2802002204200241306a10690240024020022802342206200228023822036b2004490d00200228023021060c010b200320046a22092003490d032006410174220a2009200a20094b1b22094100480d030240024020060d002009102d21060c010b200228023020062009103121060b2006450d0520022009360234200220063602300b2002200320046a360238200620036a2008200410e8061a200141106a2802002103200141186a2802002204200241306a10690240024020040d002002280234210620022802382109200d21080c010b20032004410c6c6a210b03402003280200210a200341086a2802002204200241306a10690240024020022802342206200228023822056b2004490d00200228023021080c010b200520046a22082005490d05200641017422092008200920084b1b22094100480d050240024020060d002009102d21080c010b200228023020062009103121080b2008450d072002200936023420022008360230200921060b2002200520046a2209360238200820056a200a200410e8061a2003410c6a2203200b470d000b20012802202105200128021c21080b02400240200620096b4104490d00200941046a2103200228023021040c010b200941046a22032009490d03200641017422042003200420034b1b220a4100480d030240024020060d00200a102d21040c010b20022802302006200a103121040b2004450d052002200a36023420022004360230200a21060b20022003360238200420096a200836000002400240200620036b41034d0d00200621080c010b200341046a22082003490d03200641017422092008200920084b1b22084100480d030240024020060d002008102d21040c010b200420062008103121040b2004450d0520022008360234200220043602300b200420036a2005360000200141246a200341046aad4220862004ad84200e1014210302402008450d002004102f0b20034101460d010b20004180083b0001200041013a0000200041036a41003a00002007a7450d02200c102f0c020b410c102d2203450d024104102d2204450d022004200d36000020044104412410312204450d022004200e2900003700042004411c6a200e41186a290000370000200441146a200e41106a2900003700002004410c6a200e41086a290000370000200041306a41013a0000200041286a428180808010370200200041246a2003360200200041206a4100360200200041186a4204370300200041106a42e400370300200041086a427f370300200342a4808080c00437020420032004360200200041316a2002280030360000200041346a200241336a280000360000200041003a00002007a7450d01200c102f0c010b1038000b200241e0006a24000f0b1036000b870b04057f017e047f037e230041f0006b22022400200241386a41186a22034200370300200241386a41106a22044200370300200241386a41086a2205420037030020024200370338419c9eca00ad4280808080f000841001220629000021072005200641086a290000370300200220073703382006102f41a39eca00ad4280808080c00184100122062900002107200241d8006a41086a2208200641086a290000370300200220073703582006102f200420022903582207370300200241186a41086a22092005290300370300200241186a41106a2007370300200241186a41186a200829030037030020022002290338370318200241106a200241186a41201095012002280214210a2002280210210b41d39bca00ad42808080808001841001220629000021072009200641086a290000370300200220073703182006102f41db9bca00ad4280808080a002841001220629000021072008200641086a290000370300200220073703582006102f2002200a4100200b1b220a36026c200241ec006aad220c4280808080c00084100322062900002107200641086a290000210d200641106a290000210e2003200641186a2900003703002004200e3703002005200d370300200220073703382006102f024041c000102d2206450d00200620022903183700002006200229035837001020062002290338370020200641086a2009290300370000200641186a2008290300370000200641286a2005290300370000200641306a2004290300370000200641386a200329030037000020022000360218200241186aad4280808080c00084100322082900002107200841086a290000210d200841106a290000210e2003200841186a2900003703002004200e3703002005200d370300200220073703382008102f200641c00041800110312206450d0020062002290338370040200641d8006a200241386a41186a2204290300370000200641d0006a200241386a41106a2208290300370000200641c8006a200241386a41086a2203290300370000200241086a200641e00041c8e1ca004100410010b501200228020821052006102f41012106024020054101460d0041d39bca00ad4280808080800184100122062900002107200241d8006a41086a200641086a290000370300200220073703582006102f4194c9c300ad4280808080e00184100122062900002107200241186a41086a200641086a290000370300200220073703182006102f2002200a36026c200c4280808080c00084100322062900002107200641086a290000210d200641106a290000210e2004200641186a2900003703002008200e3703002003200d370300200220073703382006102f41c000102d2206450d01200620022903583700002006200229031837001020062002290338370020200641086a200241d8006a41086a290300370000200641186a200241186a41086a290300370000200641286a200241386a41086a2208290300370000200641306a200241386a41106a2203290300370000200641386a200241386a41186a22092903003700004120102d2205450d0120052001290000370000200541186a200141186a290000370000200541106a200141106a290000370000200541086a200141086a2900003700002005ad4280808080800484100322042900002107200441086a290000210d200441106a290000210e2009200441186a2900003703002003200e3703002008200d370300200220073703382004102f2005102f200641c00041800110312206450d0120062002290338370040200641d8006a200241d0006a290300370000200641d0006a200241c8006a290300370000200641c8006a200241c0006a2903003700002002200641e00010950120022802042105200228020021042006102f200541004720044100477121060b200241f0006a240020060f0b1036000bfb20030b7f047e097f230041c0066b2202240002400240024020012802082203200128020c2204460d002001200341206a220536020820012802102106200241f8026a41186a200341186a290000370300200241f8026a41106a200341106a290000370300200241f8026a41086a200341086a290000370300200220032900003703f802200128021421074100210802400240024002402001411c6a280200220941014b0d0020090e020201020b2009210a0340200a410176220b20086a220c20082007200c4105746a200241f8026a412010ea064101481b2108200a200b6b220a41014b0d000b0b200720084105746a200241f8026a412010ea060d002006210c0c010b2001200641016a220c3602104108210820052004460d020240200941014d0d0003402001200541206a2203360208200241f8026a41186a200541186a290000370300200241f8026a41106a200541106a290000370300200241f8026a41086a200541086a290000370300200220052900003703f802410021082009210a0340200a410176220520086a220b20082007200b4105746a200241f8026a412010ea064101481b2108200a20056b220a41014b0d000b200720084105746a200241f8026a412010ea06450d022001200c41016a220c3602102003210520032004460d030c000b0b0240024020090e020100010b03402001200541206a2208360208200241f8026a41186a200541186a290000370300200241f8026a41106a200541106a290000370300200241f8026a41086a200541086a290000370300200220052900003703f80202402007200241f8026a412010ea060d00410021080c030b2001200c41016a220c3602102008210520042008460d030c000b0b2001200436020820012006200420036b41406a4105766a41026a3602100c020b0240024002400240024002400240200920084d0d00200241186a200720084105746a220841186a290000220d370300200241106a200841106a290000220e370300200241086a200841086a290000220f3703002002200829000022103703002001200c41016a360210200141206a2802002108200141246a280200210a200241206a41186a200d370300200241206a41106a200e370300200241206a41086a200f370300200220103703202002200a36024c200220083602482002200c360244200241f8026a41186a4200370300200241f8026a41106a22054200370300200241f8026a41086a22084200370300200242003703f802419c9eca00ad4280808080f000841001220a290000210d2008200a41086a2900003703002002200d3703f802200a102f41a5c6c800ad4280808080a001841001220a290000210d200241b8026a41086a220b200a41086a2900003703002002200d3703b802200a102f200520022903b802220d370300200241d0006a41086a2008290300370300200241d0006a41106a200d370300200241d0006a41186a200b290300370300200220022903f802370350200241f8026a200241d0006a412010aa0220022802f8022208410120081b210a02400240200c20022902fc02420020081b220d422088a7490d00200da7450d01200a102f2002280244210c0c010b200c200a200c4105746a10a30321050240200da7450d00200a102f0b410221082002280244210c20050d0a0b200228024c210620022802482111411b102d2208450d06200841176a41002800bacf43360000200841106a41002900b3cf43370000200841086a41002900abcf43370000200841002900a3cf433700004104102d220a450d06200a200c3600002008411b413610312209450d062009200a28000036001b200a102f200241b8026a41002009ad4280808080f00384220d10151073024002400240024020022802b8022208450d00200241c0026a280200220a4104490d00200a417c714104460d0041000d0020082800002011470d002008280004220a41036a20064b0d010b4104102d2208450d092008201136000020084104410810312208450d0920082006360004200241d0006a41086a200241b8026a41086a280200360200200220022903b802370350200241f8026a200241d0006a10f40120022802fc02210a4100200d20023502800342208620022802f802220bad842008ad4280808080800184101621050240200a450d00200b102f0b02402002280250220a450d002002280254450d00200a102f0b2008102f4104210820054101460d022006210a0c010b024020022802bc02450d002008102f0b410121080b2009102f200a210c0c0a0b200241f8026a10a503024020022802f8022212450d002002418c036a280200211320024188036a280200211420024184036a280200211520024180036a280200211620022802fc0221172002410036028003200242013703f8024104102d2208450d0720024284808080c0003702fc02200220083602f802200820063600002016200241f8026a10690240024020022802fc02220a20022802800322086b2016490d0020022802f802210a0c010b200820166a22052008490d05200a410174220b2005200b20054b1b22054100480d0502400240200a0d002005102d210a0c010b20022802f802200a20051031210a0b200a450d08200220053602fc022002200a3602f8020b2002200820166a36028003200a20086a2012201610e8061a2013200241f8026a10692013450d0220152013410c6c6a21032015210a0340200a2802002101200a41086a2802002208200241f8026a10690240024020022802fc02220b20022802800322056b2008490d0020022802f80221070c010b200520086a22072005490d06200b41017422042007200420074b1b22044100480d0602400240200b0d002004102d21070c010b20022802f802200b2004103121070b2007450d09200220043602fc02200220073602f8022004210b0b2002200520086a220436028003200720056a2001200810e8061a200a410c6a220a2003470d000c040b0b41012108410521060c050b41c4c2ca0020082009103b000b20022802fc02210b20022802800321040b02400240200b20046b4104490d0020022802f80221080c010b200441046a22082004490d01200b410174220a2008200a20084b1b220a4100480d0102400240200b0d00200a102d21080c010b20022802f802200b200a103121080b2008450d042002200a3602fc02200220083602f802200a210b0b2002200441046a220a36028003200820046a20113600004103210502400240200b200a6b41034d0d00200b21070c010b200a41046a2207200a490d01200b41017422012007200120074b1b22074100480d0102400240200b0d002007102d21080c010b2008200b2007103121080b2008450d04200220073602fc02200220083602f8020b2008200a6a200c360000200241f8026a41e9dabdf306200241206a2008200441086a10a6034101210a024020022d00f8024101470d00200241f6026a20022d00fb023a0000200241b8026a41086a2002418c036a290200370300200241c8026a20024194036a290200370300200241d0026a2002419c036a290200370300200241d8026a200241a4036a290200370300200241e0026a200241ac036a290200370300200241e5026a200241b1036a290000370000200220022f00f9023b01f402200220024184036a2902003703b802200241f8026a41086a280200210b4100210a20022802fc0221050b200241b4026a41026a2201200241f4026a41026a2d00003a0000200241f8016a41086a200241b8026a41086a290300370300200241f8016a41106a2204200241b8026a41106a290300370300200241f8016a41186a2203200241b8026a41186a290300370300200241f8016a41206a2218200241b8026a41206a290300370300200241f8016a41286a2219200241b8026a41286a290300370300200241f8016a41306a200241b8026a41306a290300370300200220022f01f4023b01b402200220022903b8023703f8010240200a0d00200241f4016a41026a20012d00003a0000200241f8026a41086a200241f8016a41086a290300370300200241f8026a41106a2004290300370300200241f8026a41186a2003290300370300200241f8026a41206a2018290300370300200241f8026a41286a2019290300370300200241f8026a412d6a200241f8016a412d6a290000370000200220022f01b4023b01f401200220022903f8013703f80202402007450d002008102f0b200220022f01f4013b01b8022002200241f6016a2d00003a00ba02410021080c030b02402007450d002008102f0b02402017450d002012102f0b02402013450d002013410c6c210a2015210803400240200841046a280200450d002008280200102f0b2008410c6a2108200a41746a220a0d000b0b410121082014450d012015102f0c010b1038000b200b2112200521060b200241b8016a41086a220a200241f8026a41086a290300370300200241b8016a41106a2207200241f8026a41106a290300370300200241b8016a41186a2201200241f8026a41186a290300370300200241b8016a41206a2204200241f8026a41206a290300370300200241b8016a41286a2203200241f8026a41286a290300370300200241b8016a412d6a2218200241f8026a412d6a290000370000200220022d00ba023a00f201200220022f01b8023b01f001200220022903f8023703b80102400240024020080d00200241d0006a41186a2013360200200241d0006a41146a2014360200200241d0006a41106a2015360200200241d0006a410c6a2016360200200241d0006a41086a2017360200200241f6006a20022d00f2013a0000200241fb006a200b360000200241f7006a2005360000200241ff006a20022903b80137000020024187016a200a2903003700002002418f016a200729030037000020024197016a20012903003700002002419f016a2004290300370000200241a7016a2003290300370000200241ac016a20182900003700002002200c3602702002201136026c2002201236025420022006360250200220022f01f0013b0174024041002802a4e24a4103490d00200241b8026a411c6a412d360200200241b8026a41146a412e360200200241b8026a410c6a412e3602002002412e3602bc022002200241d0006a3602d0022002200241c8006a3602c8022002200241cc006a3602c0022002200241c4006a3602b80241002802b0e24a210841002802ace24a210a41002802a8e24a2105200241b8036a41da03360200200241b0036a42c580808010370300200241ac036a4188ccc300360200200241a4036a4210370200200241a0036a41f8cbc30036020020024198036a420437030020024188036a4204370300200241f8026a41086a4108360200200241f8026a411c6a200241b8026a360200200241c0cfc30036028403200241f0cbc3003602fc02200241033602f802200a41cca5c000200541024622051b200241f8026a200841e4a5c00020051b2802101102000b2002411336029004200242023703e00320024194046a200241d0006a41e40010e8061a2002200241f8026a3602f801200241b8026a200241f8016a10a90320022802b80220022802bc0220022802c00210aa03210a20024190046a108e014107210841062106200a0d010c020b4107210820064107460d010b4104102d2208450d012008201136000020084104410810312208450d01200841003600044100200d2008ad428080808080018410172008102f200621080b2009102f2012210c0c030b1036000b410821080b0b2000200c36020420002008360200200241c0066a24000ba70603017f017e0e7f230041306b220124000240024010262202422088a722030d00410121040c010b2002a721040b20012003360224200120043602200240024002400240024002402003450d0020042d0000210520012003417f6a3602242001200441016a360220200541014b0d00024020050e020002000b200141186a200141206a10e60120012802180d0020012802242205200128021c2206490d002006417f4c0d030240024020060d00410121070c010b200610332207450d05200720012802202208200610e8061a2001200520066b3602242001200820066a3602200b2007450d00200141106a200141206a10e601024020012802100d00200128021422092001280224410c6e2205200520094b1b220aad420c7e2202422088a70d042002a72205417f4c0d040240024020050d004104210b0c010b2005102d220b450d062005410c6e210a0b024002402009450d004100210c410021084100210d0340200141086a200141206a10e60120012802080d022001280224220e200128020c2205490d022005417f4c0d070240024020050d004101210f0c010b20051033220f450d09200f20012802202210200510e8061a2001200e20056b3602242001201020056a3602200b200d41016a210e0240200d200a470d00200c200e200c200e4b1bad420c7e2202422088a70d0a2002a7220a4100480d0a02400240200d0d00200a102d210b0c010b200b2008200a1031210b0b200b450d09200a410c6e210a0b200b20086a220d200f360200200d41046a2005ad2202422086200284370200200c41026a210c2008410c6a2108200e210d2009200e470d000b0b200b450d012007450d020c040b0240200d450d00200b210503400240200541046a280200450d002005280200102f0b2005410c6a2105200841746a22080d000b0b200a450d00200b102f0b2006450d002007102f0b41f4c8ca00412e200141286a418ccaca0041a4c9ca00103e000b410021070b2000200636020420002007360200200041146a2009360200200041106a200a3602002000410c6a200b360200200041086a200636020002402003450d002004102f0b200141306a24000f0b103d000b1036000b1038000b970403017f017e017f23004190016b22052400200520013602040240200541046a20022004ad4220862003ad84102b2206422088a72201450d002006a722072d0000220341014b0d004100210202400240024020030e020100010b41002102200541003a008801200741016a21042001417f6a2101034020012002460d02200541c8006a20026a200420026a2d00003a00002005200241016a22033a00880120032102200341c000470d000b200541086a41386a200541c8006a41386a290300370300200541086a41306a200541c8006a41306a290300370300200541086a41286a200541c8006a41286a290300370300200541086a41206a200541c8006a41206a290300370300200541086a41186a200541c8006a41186a290300370300200541086a41106a200541c8006a41106a290300370300200541086a41086a200541c8006a41086a29030037030020052005290348370308410121020b200020023a000020002005290308370001200041096a200541106a290300370000200041116a200541186a290300370000200041196a200541206a290300370000200041216a200541286a290300370000200041296a200541306a290300370000200041316a200541386a290300370000200041396a200541c0006a2903003700002007102f20054190016a24000f0b200241ff0171450d00200541003a0088010b41f4c8ca00412e200541c8006a418ccaca0041a4c9ca00103e000bec0603067f017e097f23004190016b2202240002400240024002402000410c6a2802002203417f4c0d0020002802042104200028020021050240024020030d00410121060c010b2003102d2206450d040b20062004200310e8062107200041186a2802002204ad420c7e2208422088a70d002008a72209417f4c0d002000280210210a02400240024020090d00200a2004410c6c6a210b4104210c200421060c010b2009102d220c450d05200a2004410c6c6a210b2009410c6e220620044f0d0002402006410174220d2004200d20044b1b220e410c6c22044100480d00024002402009410b4b0d002004102d210c0c010b200c2006410c6c20041031210c0b200c0d020c060b1038000b2004450d022006210e0b410021064100210f0340200a20066a220941086a2802002204417f4c0d01200928020021100240024020040d00410121110c010b2004102d2211450d050b200c20066a220d20112010200410e806360200200d41086a2004360200200d41046a20043602002006410c6a2106200f41016a210f2009410c6a200b470d000b200e21060c020b103d000b4100210f0b200241286a200f360200200241106a41146a2006360200200241206a200c360200200241106a410c6a2003360200200241186a22042003360200200241106a412c6a2000412c6a290200370200200241106a41346a200041346a290200370200200241106a413c6a2000413c6a290200370200200241106a41c4006a200041c4006a290200370200200241106a41cc006a200041cc006a290200370200200241106a41d4006a200041d4006a290200370200200241106a41dc006a200041dc006a29020037020020022007360214200220053602102002200029021c37022c200220002902243702342002410c6a412f360200200241043602042002418cc9c3003602002001411c6a28020021062002200241106a36020820012802182109200241f8006a41146a41023602002002420237027c20024194d0c300360278200220023602880120092006200241f8006a103c210902402004280200450d002002280214102f0b024020022802282206450d00200228022021042006410c6c210603400240200441046a280200450d002004280200102f0b2004410c6a2104200641746a22060d000b0b02402002280224450d002002280220102f0b20024190016a240020090f0b1036000baf0201037f23004180016b2202240002400240024002400240200128020022034110710d002000280200210420034120710d012004ad41012001104521000c020b20002802002104410021000340200220006a41ff006a2004410f712203413072200341d7006a2003410a491b3a00002000417f6a2100200441047622040d000b20004180016a22044181014f0d022001410141bc8ac0004102200220006a4180016a410020006b104821000c010b410021000340200220006a41ff006a2004410f712203413072200341376a2003410a491b3a00002000417f6a2100200441047622040d000b20004180016a22044181014f0d022001410141bc8ac0004102200220006a4180016a410020006b104821000b20024180016a240020000f0b2004418001104b000b2004418001104b000b8d1203067f027e067f230041206b2202240002400240024041ca03102d2203450d00200242ca03370204200220033602002002410210f20302400240200128020022012903684202520d0002400240200228020420022802082203460d00200228020021040c010b200341016a22042003490d05200341017422052004200520044b1b22054100480d050240024020030d002005102d21040c010b200228020020032005103121040b2004450d0320022005360204200220043602000b200420036a41043a00002002200228020841016a3602080c010b02400240200228020420022802082203460d00200228020021040c010b200341016a22042003490d04200341017422052004200520044b1b22054100480d040240024020030d002005102d21040c010b200228020020032005103121040b2004450d0220022005360204200220043602000b200420036a4184013a00002002200228020841016a3602082001200210eb02024020012d0024220341024b0d000240024002400240024020030e03000102000b410021060c020b410121060c010b41022106200241023a001041c10021040c010b200220063a001041c00021040b02400240200228020420022802082203460d00200228020021050c010b200341016a22052003490d05200341017422072005200720054b1b22074100480d050240024020030d002007102d21050c010b200228020020032007103121050b2005450d0320022007360204200220053602000b2002200341016a360208200520036a20063a00000240024020022802042205200228020822036b2004490d00200228020021050c010b200320046a22062003490d05200541017422072006200720064b1b22064100480d050240024020050d002006102d21050c010b200228020020052006103121050b2005450d0320022006360204200220053602000b2002200320046a360208200520036a200141256a200410e8061a0b0240024020012903684201520d00200141f8006a29030020012903702208420c882209420120094201561b8021090240024020022802042204200228020822036b4102490d00200228020021040c010b200341026a22052003490d06200441017422062005200620054b1b22054100480d060240024020040d002005102d21040c010b200228020020042005103121040b2004450d0420022005360204200220043602000b2002200341026a360208200420036a2009a741047420087aa7417f6a22034101200341014b1b2203410f2003410f491b723b00000c010b02400240200228020420022802082203460d00200228020021040c010b200341016a22042003490d05200341017422052004200520044b1b22054100480d050240024020030d002005102d21040c010b200228020020032005103121040b2004450d0320022005360204200220043602000b2002200341016a360208200420036a41003a00000b20014190016a2002109502200220014180016a360210200241106a200210c2020b20014198016a2002109101200228020821014104102d2203450d0020024204370214200220033602102001417e6a200241106a10692002280208220341014d0d01200228021821052002280214210a2002280210210620024100360208200228020021010240024002400240024002402003417e6a2207450d004102210b2005450d04200120062d00003a00004101210c2002200228020841016a36020820054101460d04200620056a210d200120062d00013a00012002200228020841016a3602084102210b200641026a21042005417e6a220e0d014100210e0c020b0240024002402002280204220320054f0d00200341017422042005200420054b1b22044100480d0a0240024020030d002004102d21010c010b200120032004103121010b2001450d0820022004360204200220013602002002280208210b0c010b4100210b2005450d010b2001200b6a220320062d00003a0000024020054101470d00200b41016a210b0c010b2005417f6a2104200641016a2101200341016a21030340200320012d00003a0000200341016a2103200141016a21012004417f6a22040d000b200b20056a210b0b2002200b3602084102210b0c020b024002402002280204220120036b200e490d00200228020021010c010b2003200e6a220b2003490d0720014101742203200b2003200b4b1b22034100480d070240024020010d002003102d21010c010b200228020020012003103121010b2001450d0520022003360204200220013602000b200120056a200141026a200710e9061a0240200520022802082201460d00200520016b210b2005417e6a2103200228020020016a210c410021010340024020032001470d002005210b0c040b200c20016a20042d00003a00002002200228020841016a360208200441016a2104200b200141016a2201470d000b200d20046b220e0d004100210e4101210c2005210b0c010b200e4100480d062005210b200e102d220c450d040b0240200d2004460d00200c20042d00003a00004101210f02400240200441016a2201200d470d00200c41016a21050c010b200c41016a21032006200520046b6a21040340200320012d00003a0000200341016a2103200d200141016a2201470d000b2004450d01200c20046a21052004210f0b02400240200228020422012007200b6a22036b200f490d00200228020021010c010b2003200f6a22042003490d07200141017422032004200320044b1b22034100480d070240024020010d002003102d21010c010b200228020020012003103121010b2001450d0520022003360204200220013602000b2001200b200f6a220d6a2001200b6a200710e9061a0240200d20022802082201460d00200228020020016a2103200b200f6a20016b2104200c2101034020052001460d01200320012d00003a00002002200228020841016a360208200141016a2101200341016a21032004417f6a22040d000b0b200d210b0b200e450d00200c102f0b2007450d010b0240200b20022802082201460d002002280200220320016a2003200b6a200710e9061a0b2002200720016a3602080b0240200a450d002006102f0b20002002290300370200200041086a200241086a280200360200200241206a24000f0b1036000b41a6b5ca00411c41f8b4ca001039000b1038000b810103017f017e027f230041106b220324000240024002402002ad4220862000ad8410252204428080808010540d00410121022004a722052d0000220641014b0d0020060e020102010b41f4c8ca00412e200341086a418ccaca0041a4c9ca00103e000b410021020b2005102f02402001450d002000102f0b200341106a240020020bef0401017f230041306b220224000240024002400240024002400240024020002802000e0701020304050600010b2001411c6a2802002100200128021821012002412c6a4100360200200241c8e1ca003602282002420137021c200241f8ccc30036021820012000200241186a103c21010c060b2002200041046a36020c2002410a3602142001411c6a280200210020022002410c6a360210200128021821012002412c6a41013602002002420137021c20024180cdc3003602182002200241106a36022820012000200241186a103c21010c050b2002200041046a36020c2002410a3602142001411c6a280200210020022002410c6a360210200128021821012002412c6a41013602002002420237021c20024188cdc3003602182002200241106a36022820012000200241186a103c21010c040b2002200028020436020c200241013602142001411c6a280200210020022002410c6a360210200128021821012002412c6a41013602002002420237021c20024198cdc3003602182002200241106a36022820012000200241186a103c21010c030b2001411c6a2802002100200128021821012002412c6a4100360200200241c8e1ca003602282002420137021c200241a8cdc30036021820012000200241186a103c21010c020b2001411c6a2802002100200128021821012002412c6a4100360200200241c8e1ca003602282002420137021c200241b0cdc30036021820012000200241186a103c21010c010b2001411c6a2802002100200128021821012002412c6a4100360200200241c8e1ca003602282002420137021c200241b8cdc30036021820012000200241186a103c21010b200241306a240020010b980201027f230041206b220224002002200128021841c8e1ca0041002001411c6a28020028020c1100003a00102002200136020841012101200241013a00112002410036020c200220003602182002200041246a36021c200241086a200241186a41a4d0c30010612002411c6a41b4d0c30010611a20022d0010210002400240200228020c22030d00200021010c010b0240200041ff01710d00024020034101470d0020022d001141ff0171450d00200228020822002d00004104710d004101210120002802184196a5c00041012000411c6a28020028020c1100000d010b2002280208220128021841e4d3ca0041012001411c6a28020028020c11000021010b200220013a00100b200241206a2400200141ff01714100470b1c00200128021841ffcbca00410f2001411c6a28020028020c1100000b88810109057f017e017f017e077f017e207f057e057f23004180066b2200240020004180056a41186a2201420037030020004180056a41106a220242003703004108210320004180056a41086a220442003703002000420037038005419c9eca00ad4280808080f0008422051001220629000021072004200641086a29000037030020002007370380052006102f41a39eca00ad4280808080c00184100122062900002107200041e0036a41086a2208200641086a290000370300200020073703e0032006102f200220002903e0032207370300200041b0046a41086a22092004290300370300200041b0046a41106a220a2007370300200041b0046a41186a220b200829030037030020002000290380053703b004200041286a200041b0046a4120109501200028022c210c2000280228210d200142003703002002420037030020044200370300200042003703800541d39bca00ad42808080808001841001220629000021072004200641086a29000037030020002007370380052006102f419087ca00ad4280808080c000841001220629000021072008200641086a290000370300200020073703e0032006102f200220002903e003220737030020092004290300370300200a2007370300200b200829030037030020002000290380053703b00420004180056a200041b0046a108d03200028028005210e200029028405210f200142003703002002420037030020044200370300200042003703800520051001220629000021052004200641086a29000037030020002005370380052006102f41a5c6c800ad4280808080a001841001220629000021052008200641086a290000370300200020053703e0032006102f200220002903e003220537030020092004290300370300200a2005370300200b200829030037030020002000290380053703b00420004180056a200041b0046a412010aa022000280280052206410120061b2110200029028405420020061b2205a721110240024002400240024002400240024002402005422088a72206450d002010200641057422126a2113200041c4036a211420004180056a41206a2115200041f8026a4104722116200041d0026a410472211741022106410021180340200041e0016a41186a201020186a221941186a221a290000370300200041e0016a41106a201941106a221b290000370300200041e0016a41086a201941086a221c290000370300200020192900003703e00120172019290000370000201741086a201c290000370000201741106a201b290000370000201741186a201a29000037000020002006417e6a221b3602d0024100211a0240201b201710a3030d00200041f8026a41206a200041d0026a41206a280200360200200041f8026a41186a200041d0026a41186a290300370300200041f8026a41106a200041d0026a41106a290300370300200041f8026a41086a200041d0026a41086a290300370300200020002903d0023703f80220004190026a41186a221a201641186a221b29000037030020004190026a41106a221c201641106a221d29000037030020004190026a41086a221e201641086a221f29000037030020002016290000370390022001201b2900003703002002201d2900003703002004201f2900003703002000201629000037038005200041a0036a20004180056a10af03200041b0026a41186a221b201a290300370300200041b0026a41106a221d201c290300370300200041b0026a41086a221c201e29030037030020002000290390023703b00220002802c003221a450d00201520002903a003370300201541186a200041a0036a41186a290300370300201541106a200041a0036a41106a290300370300201541086a200041a0036a41086a2903003703002001201b2903003703002002201d2903003703002004201c29030037030020004180026a41086a221b201441086a280200360200200020002903b002370380052000201429020037038002200041b0046a41386a221c20004180056a41386a290300370300200041b0046a41306a221d20004180056a41306a290300370300200041b0046a41286a221e20004180056a41286a290300370300200041b0046a41206a221f2015290300370300200b2001290300370300200a20022903003703002009200429030037030020002000290380053703b004200041e0036a41386a201c290300370300200041e0036a41306a201d290300370300200041e0036a41286a201e290300370300200041e0036a41206a201f290300370300200041e0036a41186a200b290300370300200041e0036a41106a200a29030037030020082009290300370300200020002903b0043703e003200041d0036a41086a201b28020036020020002000290380023703d0030b200041a0016a41086a2008290300370300200041a0016a41106a200041e0036a41106a290300370300200041a0016a41186a200041e0036a41186a290300370300200041a0016a41206a200041e0036a41206a290300370300200041a0016a41286a200041e0036a41286a290300370300200041a0016a41306a200041e0036a41306a290300370300200041a0016a41386a200041e0036a41386a29030037030020004190016a41086a200041d0036a41086a280200360200200020002903e0033703a001200020002903d00337039001201a0d02200641016a21062012201841206a2218470d000b0b410021202000410036029801200042083703900102402011450d002010102f0b4100211a0c010b200041c0006a41386a2217200041a0016a41386a290300370300200041c0006a41306a2216200041a0016a41306a290300370300200041c0006a41286a2204200041a0016a41286a290300370300200041c0006a41206a221b200041a0016a41206a290300370300200041c0006a41186a221c200041a0016a41186a290300370300200041c0006a41106a2208200041a0016a41106a290300370300200041c0006a41086a2201200041a0016a41086a29030037030020004180016a41086a221d20004190016a41086a280200360200200020002903a001370340200020002903900137038001200041306a41086a221e201d280200360200200020002903800137033020004180056a41086a221d200129030037030020004180056a41106a2201200829030037030020004180056a41186a2208201c29030037030020004180056a41206a221c201b29030037030020004180056a41286a221b200429030037030020004180056a41306a2204201629030037030020004180056a41386a221620172903003703002000200029034037038005200041b0046a41086a2217201e280200360200200020002903303703b00441d000102d2203450d0120032000290380053703002003201a360240200320002903b004370244200341386a2016290300370300200341306a2004290300370300200341286a201b290300370300200341206a201c290300370300200341186a2008290300370300200341106a2001290300370300200341086a201d290300370300200341cc006a201728020036020002400240201241606a2018470d004101211a410121200c010b201941206a2117201220186b41606a211b200041c4036a211e200041f8026a4104722116200041d0026a410472211902400340200041e0016a41186a201741186a2218290000370300200041e0016a41106a201741106a221a290000370300200041e0016a41086a201741086a2204290000370300200020172900003703e00120172900002105201941186a201829000037000020192005370000201941086a2004290000370000201941106a201a29000037000020002006417f6a221a3602d002410021180240201a201910a3030d00200041f8026a41206a200041d0026a41206a280200360200200041f8026a41186a200041d0026a41186a290300370300200041f8026a41106a200041d0026a41106a290300370300200041f8026a41086a200041d0026a41086a290300370300200020002903d0023703f80220004190026a41186a2218201641186a220429000037030020004190026a41106a2208201641106a221c29000037030020004190026a41086a2201201641086a2212290000370300200020162900003703900220004180056a41186a221a200429000037030020004180056a41106a2204201c29000037030020004180056a41086a221c20122900003703002000201629000037038005200041a0036a20004180056a10af03200041b0026a41186a22122018290300370300200041b0026a41106a221d2008290300370300200041b0026a41086a2208200129030037030020002000290390023703b00220002802c0032218450d00201520002903a003370300201541186a200041a0036a41186a290300370300201541106a200041a0036a41106a290300370300201541086a200041a0036a41086a290300370300201a20122903003703002004201d290300370300201c200829030037030020004180026a41086a2208201e41086a280200360200200020002903b002370380052000201e29020037038002200041b0046a41386a220120004180056a41386a290300370300200041b0046a41306a221220004180056a41306a290300370300200041b0046a41286a221d20004180056a41286a290300370300200041b0046a41206a221f20004180056a41206a290300370300200041b0046a41186a2209201a290300370300200041b0046a41106a221a2004290300370300200041b0046a41086a2204201c29030037030020002000290380053703b004200041e0036a41386a2001290300370300200041e0036a41306a2012290300370300200041e0036a41286a201d290300370300200041e0036a41206a201f290300370300200041e0036a41186a2009290300370300200041e0036a41106a201a290300370300200041e0036a41086a2004290300370300200020002903b0043703e003200041d0036a41086a200828020036020020002000290380023703d0030b200041a0016a41086a200041e0036a41086a290300370300200041a0016a41106a200041e0036a41106a290300370300200041a0016a41186a200041e0036a41186a290300370300200041a0016a41206a200041e0036a41206a290300370300200041a0016a41286a200041e0036a41286a290300370300200041a0016a41306a200041e0036a41306a290300370300200041a0016a41386a200041e0036a41386a29030037030020004190016a41086a200041d0036a41086a280200360200200020002903e0033703a001200020002903d0033703900120180d01201741206a21174101211a200641016a2106201b41606a221b0d000b410121200c010b200041c0006a41386a2221200041a0016a41386a2212290300370300200041c0006a41306a2222200041a0016a41306a221d290300370300200041c0006a41286a2223200041a0016a41286a221e290300370300200041c0006a41206a2224200041a0016a41206a221f290300370300200041c0006a41186a2225200041a0016a41186a2209290300370300200041c0006a41106a2226200041a0016a41106a220a290300370300200041c0006a41086a2227200041a0016a41086a220b29030037030020004180016a41086a222820004190016a41086a2214280200360200200020002903a001370340200020002903900137038001200041306a41086a222920282802003602002000200029038001370330201741206a2117200041c4036a212a200041f8026a4104722116200041d0026a41047221194101211a41012120034020004180056a41086a221c202729030037030020004180056a41106a2208202629030037030020004180056a41186a2201202529030037030020004180056a41206a222b202429030037030020004180056a41286a222c202329030037030020004180056a41306a222d202229030037030020004180056a41386a222e20212903003703002000200029034037038005200041b0046a41086a222f2029280200360200200020002903303703b00402402020201a470d00201a41016a2204201a490d09201a410174221b2004201b20044b1bad42d0007e2205422088a70d092005a722044100480d0902400240201a0d002004102d21030c010b2003201a41d0006c2004103121030b2003450d04200441d0006e21200b2003201a41d0006c6a22042000290380053703002008290300210520012903002107202b2903002130202c2903002131202d2903002132202e2903002133201c290300213420042018360240200441086a2034370300200441386a2033370300200441306a2032370300200441286a2031370300200441206a2030370300200441186a2007370300200441106a2005370300200420002903b004370244200441cc006a202f280200360200201a41016a211a20172013460d010340200041e0016a41186a201741186a2218290000370300200041e0016a41106a201741106a2204290000370300200041e0016a41086a201741086a221b290000370300200020172900003703e001200020063602d002201b29000021052004290000210720172900002130201941186a2018290000370000201941106a2007370000201941086a2005370000201920303700004100211802402006201910a3030d00200041f8026a41206a200041d0026a41206a280200360200200041f8026a41186a200041d0026a41186a290300370300200041f8026a41106a200041d0026a41106a290300370300200041f8026a41086a200041d0026a41086a290300370300200020002903d0023703f80220004190026a41186a2218201641186a220429000037030020004190026a41106a221b201641106a223529000037030020004190026a41086a2236201641086a223729000037030020002016290000370390022001200429000037030020082035290000370300201c20372900003703002000201629000037038005200041a0036a20004180056a10af03200041b0026a41186a22042018290300370300200041b0026a41106a2235201b290300370300200041b0026a41086a221b203629030037030020002000290390023703b00220002802c0032218450d00201520002903a003370300201541186a200041a0036a41186a290300370300201541106a200041a0036a41106a290300370300201541086a200041a0036a41086a2903003703002001200429030037030020082035290300370300201c201b29030037030020004180026a41086a2204202a41086a280200360200200020002903b002370380052000202a29020037038002200041b0046a41386a221b202e290300370300200041b0046a41306a2235202d290300370300200041b0046a41286a2236202c290300370300200041b0046a41206a2237202b290300370300200041b0046a41186a22382001290300370300200041b0046a41106a22392008290300370300202f201c29030037030020002000290380053703b004200041e0036a41386a201b290300370300200041e0036a41306a2035290300370300200041e0036a41286a2036290300370300200041e0036a41206a2037290300370300200041e0036a41186a2038290300370300200041e0036a41106a2039290300370300200041e0036a41086a202f290300370300200020002903b0043703e003200041d0036a41086a200428020036020020002000290380023703d0030b200b200041e0036a41086a290300370300200a200041e0036a41106a2903003703002009200041e0036a41186a290300370300201f200041e0036a41206a290300370300201e200041e0036a41286a290300370300201d200041e0036a41306a2903003703002012200041e0036a41386a2903003703002014200041d0036a41086a280200360200200020002903e0033703a001200020002903d00337039001024020180d00200641016a21062013201741206a2217470d010c030b0b202120122903003703002022201d2903003703002023201e2903003703002024201f290300370300202520092903003703002026200a2903003703002027200b29030037030020282014280200360200200020002903a001370340200020002903900137038001202920282802003602002000200029038001370330201741206a2117200641016a21060c000b0b02402011450d002010102f0b2000201a36029801200020203602940120002003360290010b20004180056a41186a2219420037030020004180056a41106a2218420037030020004180056a41086a221742003703002000420037038005419c9eca00ad4280808080f0008422051001220629000021072017200641086a29000037030020002007370380052006102f41a39eca00ad4280808080c001842207100122062900002130200041e0036a41086a2216200641086a290000370300200020303703e0032006102f200220002903e003370000200241086a22042016290300370000200041b0046a41086a22152017290300370300200041b0046a41106a221b2018290300370300200041b0046a41186a221c201929030037030020002000290380053703b004200041206a200041b0046a4120109501200028022421082000280220210141d39bca00ad428080808080018422301001220629000021312015200641086a290000370300200020313703b0042006102f41db9bca00ad4280808080a002841001220629000021312016200641086a290000370300200020313703e0032006102f20002008410020011b3602a001200041a0016aad4280808080c000842231100322062900002132200641086a2900002133200641106a29000021342019200641186a290000370300201820343703002017203337030020002032370380052006102f41c000102d2206450d00200620002903b004370000200620002903e0033700102006200029038005370020200641086a2015290300370000200641186a2016290300370000200641286a2017290300370000200641306a2018290300370000200641386a20192903003700002006ad428080808080088410132006102f201942003703002018420037030020174200370300200042003703800520051001220629000021052017200641086a29000037030020002005370380052006102f20071001220629000021052016200641086a290000370300200020053703e0032006102f200220002903e0033700002004201629030037000020152017290300370300201b2018290300370300201c201929030037030020002000290380053703b004200041186a200041b0046a4120109501200028021c21022000280218210420301001220629000021052016200641086a290000370300200020053703e0032006102f4194c9c300ad4280808080e001841001220629000021052015200641086a290000370300200020053703b0042006102f20002002410020041b3602a0012031100322062900002105200641086a2900002107200641106a29000021302019200641186a290000370300201820303703002017200737030020002005370380052006102f41c000102d2206450d00200f4200200e1b2132200620002903e003370000200620002903b0043700102006200029038005370020200641086a200041e0036a41086a290300370000200641186a200041b0046a41086a290300370000200641286a20004180056a41086a2217290300370000200641306a20004180056a41106a290300370000200641386a20004180056a41186a2903003700002006ad428080808080088410132006102f02400240024002400240024002400240201a450d0020004180056a20004190016a10b003200041bb046a201728020036000020002000290380053700b3042000418c056a200041b7046a290000370000200041023a0084052000410f3a008005200020002900b0043700850541c8e1ca00410020004180056a108c01200041f8026a41106a20004190016a41086a28020036020020002032422088a7222b3602fc022000200c4100200d1b22043602f802200020002903900137038003200041d0036a200041f8026a41086a10b00320002802d803210220002802d403210d20002802d003210c4104102d2239450d082039200436000020004284808080c0003702a401200020393602a00141ed9bca00ad4280808080800184100122062900002105200041e0036a41086a200641086a290000370300200020053703e0032006102f41f59bca00ad4280808080a00284100122062900002105200041b0046a41086a200641086a290000370300200020053703b0042006102f4110102d2206450d0841002116200641086a41002902b8f646370000200641002902b0f6463700002006ad4280808080800284100322172900002105201741086a2900002107201741106a290000213020004190026a41186a2219201741186a29000037030020004190026a41106a203037030020004190026a41086a200737030020002005370390022017102f2006102f41c000102d2206450d08200620002903e003370000200620002903b0043700102006200029039002370020200641086a200041e0036a41086a290300370000200641186a200041b0046a41086a290300370000200641286a20004190026a41086a290300370000200641306a200041a0026a290300370000200641386a201929030037000020004180056a200641c000109302200029028405210520002802800521172006102f20002005420020171b22074220883e02b40420002017410120171b221b3602b004200041106a200041b0046a10e60120002802142115024020002802100d00201520002802b404220641246e2217201720154b1b221aad42247e2205422088a70d0a2005a72217417f4c0d0a0240024020170d00410421160c010b2017102d2216450d0a201741246e211a0b2015450d004100211c034002400240024020064104490d00201c41016a210820002006417c6a22193602b404200020002802b004221841046a3602b0042018280000210141002106200041003a00a0050240034020192006460d0120004180056a20066a201820066a221741046a2d00003a00002000201741056a3602b0042000200641016a22173a00a0052017210620174120470d000b200041b0026a41086a221820004180056a41086a290300370300200041b0026a41106a221020004180056a41106a290300370300200041b0026a41186a221220004180056a41186a29030037030020002000290380053703b0022000201920176b22063602b404201a201c470d03201c41017422172008201720084b1bad42247e2205422088a70d132005a7221741004e0d020c130b200041003602b404200641ff0171450d00200041003a00a0050b0240201a450d002016102f0b410021160c030b02400240201c0d002017102d21160c010b2016201c41246c2017103121160b2016450d0b201741246e211a0b2016201c41246c6a22172001360200201720002903b0023702042017410c6a2018290300370200201741146a20102903003702002017411c6a20122903003702002008211c20082015470d000b0b20004180056a200041a0016a10b103200041b0046a200028028005221720002802880510aa0220002802b004210620002902b40421050240200028028405450d002017102f0b2005420020061b210502402007a7450d00201b102f0b201a410020161b21112016410420161b211b2006410120061b212a2005a721202002450d012015410020161b21082005422088a72109200c200241d0006c6a213520004180056a41306a210320004180056a41206a2113200041e0036a41306a2136200041e0036a41206a2137200041e0036a41c4006a212f41002138200c2102034020004180056a41386a22172002220641386a2903003703002003200641306a29030037030020004180056a41286a2219200641286a2903003703002013200641206a29030037030020004180056a41186a2201200641186a29030037030020004180056a41106a2210200641106a29030037030020004180056a41086a2212200641086a29030037030020004180026a41086a2218200641cc006a28020036020020002006290300370380052000200641c4006a29020037038002200641d0006a2102200641c0006a2802002206450d03200041c0006a41386a22162017290300370300200041c0006a41306a22172003290300370300200041c0006a41286a221a2019290300370300200041c0006a41206a22192013290300370300200041c0006a41186a22152001290300370300200041c0006a41106a221c2010290300370300200041c0006a41086a221d201229030037030020004180016a41086a221e20182802003602002000200029038005370340200020002903800237038001200041e0036a41386a201629030037030020362017290300370300200041e0036a41286a201a29030037030020372019290300370300200041e0036a41186a22162015290300370300200041e0036a41106a221a201c290300370300200041e0036a41086a221c201d290300370300200020002903403703e003200020063602a004202f200029038001370200202f41086a201e2802003602004104102d2215450d09201520043600004118102d2206450d09200641086a41002902b8f646370000200042988080808002370284052000200636028005200641002902b0f646370000410420004180056a106902400240200028028405221720002802880522196b4104490d0020002802800521060c010b201941046a22062019490d0f201741017422182006201820064b1b22184100480d0f0240024020170d002018102d21060c010b20002802800520172018103121060b2006450d0a20002018360284052000200636028005201821170b2000201941046a221836028805200620196a20152800003600000240201720186b411f4b0d00201841206a221d2018490d0f2017410174221e201d201e201d4b1b221d4100480d0f0240024020170d00201d102d21060c010b20062017201d103121060b2006450d0a2000201d3602840520002006360280050b200620186a220641086a201c290300370000200641106a201a290300370000200641186a20162903003700002000201941246a36028805200620002903e003370000200020373602b004200041b0046a20004180056a10c202200020363602b004200041b0046a20004180056a10c20220002802a004210620002802a804221720004180056a106902402017450d00201741306c2118034002400240200028028405221920002802880522176b4120490d0020002802800521190c010b201741206a22162017490d112019410174221a2016201a20164b1b22164100480d110240024020190d002016102d21190c010b20002802800520192016103121190b2019450d0c200020163602840520002019360280050b201920176a221941086a200641186a290000370000201941106a200641206a290000370000201941186a200641286a2900003700002000201741206a360288052019200641106a290000370000200020063602b004200041b0046a20004180056a10c202200641306a2106201841506a22180d000b0b2000280284052117200041a0016a41186a220a2000350288054220862000280280052219ad841003220641186a290000370300200041a0016a41106a220b200641106a290000370300200041a0016a41086a2214200641086a290000370300200020062900003703a0012006102f02402017450d002019102f0b2015102f41ed9bca00ad4280808080800184220f100122062900002105200041d0026a41086a2219200641086a290000370300200020053703d0022006102f4194bbc600ad4280808080f000842231100122062900002105200041a0036a41086a2218200641086a290000370300200020053703a0032006102f4120102d2206450d09200620002903a001370000200641186a200a290300370000200641106a200b290300370000200641086a20142903003700002006ad4280808080800484100322172900002105201741086a2900002107201741106a2900002130200041b0046a41186a221d201741186a290000370300200041b0046a41106a221e2030370300200041b0046a41086a221f2007370300200020053703b0042017102f2006102f41c000102d2206450d09200620002903d002370000200620002903a003370010200620002903b004370020200641086a2019290300370000200641186a2018290300370000200641286a201f290300370000200641306a201e290300370000200641386a201d290300370000200041086a200641c00041c8e1ca004100410010b501200028020821172006102f024002400240024020174101460d00200041b0046a200041e0036a41d00010e8061a20004180056a200041b0046a41d00010e8061a200041003602d805200042013703d005200f1001220629000021052019200641086a290000370300200020053703d0022006102f20311001220629000021052018200641086a290000370300200020053703a0032006102f4120102d2206450d0d200620002903a001370000200641186a200a290300370000200641106a200b290300370000200641086a20142903003700002006ad4280808080800484100322172900002105201741086a2900002107201741106a2900002130201d201741186a290000370300201e2030370300201f2007370300200020053703b0042017102f2006102f41c000102d221c450d0d201c20002903d002370000201c20002903a003370010201c20002903b004370020201c41086a2019290300370000201c41186a2018290300370000201c41286a201f290300370000201c41306a201e290300370000201c41386a201d290300370000200041003602b804200042013703b0044120102d2206450d0d200042a080808080043702b404200020063602b0042006200029038005370000200641086a2012290300370000200641106a2010290300370000200641186a2001290300370000200020133602a003200041a0036a200041b0046a10c202200020033602a003200041a0036a200041b0046a10c20220002802c005210620002802c8052217200041b0046a106902402017450d00201741306c211803400240024020002802b404221920002802b80422176b4120490d0020002802b00421190c010b201741206a22162017490d152019410174221a2016201a20164b1b22164100480d150240024020190d002016102d21190c010b20002802b00420192016103121190b2019450d10200020163602b404200020193602b0040b201920176a221941086a200641186a290000370000201941106a200641206a290000370000201941186a200641286a2900003700002000201741206a3602b8042019200641106a290000370000200020063602a003200041a0036a200041b0046a10c202200641306a2106201841506a22180d000b0b20002802d005210620002802d8052217200041b0046a10690240024020170d0020002802b804211720002802b404211a20002802b00421180c010b20174105742115410020002802b80422176b211620002802b404211a034002400240201a20166a4120490d0020002802b00421180c010b201741206a22192017490d15201a41017422182019201820194b1b22194100480d1502400240201a0d002019102d21180c010b20002802b004201a2019103121180b2018450d10200020193602b404200020183602b0042019211a0b201820176a221941086a200641086a290000370000201941106a200641106a290000370000201941186a200641186a2900003700002000201741206a22173602b80420192006290000370000201641606a2116200641206a2106201541606a22150d000b0b201cad42808080808008842017ad4220862018ad8410040240201a450d002018102f0b201c102f024020002802c405450d0020002802c005102f0b024020002802d405450d0020002802d005102f0b2001200a2903003703002010200b29030037030020122014290300370300200020002903a00137038005410021060240200841014b0d00024020080e020003000b200041e0016a41186a2001290300370300200041e0016a41106a2010290300370300200041e0016a41086a201229030037030020002000290380053703e001410021060c030b20082117034020062017410176221920066a2218201b201841246c6a28020020044b1b2106201720196b221741014b0d000c020b0b20002802a404450d0220002802a004102f0c020b0240201b200641246c6a28020022172004460d00200620172004496a21060b200041e0016a41186a2001290300370300200041e0016a41106a2010290300370300200041e0016a41086a201229030037030020002000290380053703e001200820064f0d00419ae3c300411e41f8b4ca001039000b024020082011470d00200841016a22172008490d10200841017422192017201920174b1bad42247e2205422088a70d102005a722174100480d100240024020080d002017102d211b0c010b201b200841246c20171031211b0b201b450d0b201741246e21110b201b200641246c6a221741246a2017200820066b41246c10e9061a201720043602002017411c6a200041e0016a41186a290300370200201741146a200041e0016a41106a2903003702002017410c6a200041e0016a41086a290300370200201720002903e001370204201d2001290300370300201e2010290300370300201f201229030037030020002000290380053703b004024020092020470d00200941016a22062009490d10200941017422172006201720064b1b220641ffffff3f712006470d10200641057422064100480d100240024020090d002006102d212a0c010b202a200941057420061031212a0b202a450d0b200641057621200b200841016a2108202a20094105746a220620002903b004370000200641186a201d290300370000200641106a201e290300370000200641086a201f29030037000041012138200941016a21090b20022035470d000b203521020c020b200041013a0084052000410f3a00800541c8e1ca00410020004180056a108c012020450d0b2003102f0c0b0b200d450d01200c102f0c010b024020352002460d000340200241d0006a21060240200241c4006a280200450d00200241c0006a280200102f0b2006210220352006470d000b0b0240200d450d00200c102f0b2038410171450d0002402009450d0020094105742117202a2106034020004180056a200610b20320002802c00522190d03200641206a2106201741606a22170d000b0b410821124100211d4100211e0c020b2039102f02402020450d00202a102f0b2011450d02201b102f0c020b200041e0036a41386a221220004180056a41386a2218290300370300200041e0036a41306a221d20004180056a41306a221a290300370300200041e0036a41286a221e20004180056a41286a2215290300370300200041e0036a41206a221f20004180056a41206a2202290300370300200041e0036a41186a220a20004180056a41186a221c290300370300200041e0036a41106a220b20004180056a41106a2201290300370300200041e0036a41086a221420004180056a41086a2210290300370300200041a0036a41086a220320004180056a41cc006a290200370300200041a0036a41106a221320004180056a41d4006a290200370300200041a0036a41186a223520004180056a41dc006a28020036020020002000290380053703e0032000200041c4056a22162902003703a003200041c0006a41086a22362014290300370300200041c0006a41106a2214200b290300370300200041c0006a41186a220b200a290300370300200041c0006a41206a220a201f290300370300200041c0006a41286a221f201e290300370300200041c0006a41306a221e201d290300370300200041c0006a41386a221d2012290300370300200041a0016a41086a22122003290300370300200041a0016a41106a22032013290300370300200041a0016a41186a22132035280200360200200020002903e003370340200020002903a0033703a0012010203629030037030020012014290300370300201c200b2903003703002002200a2903003703002015201f290300370300201a201e2903003703002018201d2903003703002000200029034037038005200041b0046a41086a221d2012290300370300200041b0046a41106a221e2003290300370300200041b0046a41186a221f2013280200360200200020002903a0013703b00441e000102d2212450d03201220002903800537030020122019360240201220002903b004370244201241386a2018290300370300201241306a201a290300370300201241286a2015290300370300201241206a2002290300370300201241186a201c290300370300201241106a2001290300370300201241086a2010290300370300201241cc006a201d290300370200201241d4006a201e290300370200201241dc006a201f280200360200024020174120470d004101211d4101211e0c010b200641206a211c202a20094105746a221941606a21134101211d4101211e0340201c21060240034020004180056a200610b20320002802c00522170d012019200641206a2206470d000c030b0b200041e0036a41386a221820004180056a41386a2201290300370300200041e0036a41306a221c20004180056a41306a2210290300370300200041e0036a41286a223520004180056a41286a221f290300370300200041e0036a41206a223620004180056a41206a220a290300370300200041e0036a41186a221a20004180056a41186a220b290300370300200041e0036a41106a221520004180056a41106a2214290300370300200041e0036a41086a220220004180056a41086a2203290300370300200041a0036a41086a2237201641086a290200370300200041a0036a41106a222f201641106a290200370300200041a0036a41186a2238201641186a28020036020020002000290380053703e003200020162902003703a003200041b0046a41086a220c2002290300370300200041b0046a41106a220d2015290300370300200041b0046a41186a222c201a290300370300200041b0046a41206a222d2036290300370300200041b0046a41286a22362035290300370300200041b0046a41306a2235201c290300370300200041b0046a41386a221c2018290300370300200041a0016a41086a22182037290300370300200041a0016a41106a2237202f290300370300200041a0016a41186a222f2038280200360200200020002903e0033703b004200020002903a0033703a0012003200c2903003703002014200d290300370300200b202c290300370300200a202d290300370300201f2036290300370300201020352903003703002001201c290300370300200020002903b004370380052002201829030037030020152037290300370300201a202f280200360200200020002903a0013703e0030240201e201d470d00201d41016a2218201d490d0a201d410174221c2018201c20184b1bad42e0007e2205422088a70d0a2005a722184100480d0a02400240201d0d002018102d21120c010b2012201d41e0006c2018103121120b2012450d05201841e0006e211e0b200641206a211c2012201d41e0006c6a2218200029038005370300201841106a2014290300370300201841086a20032903003703002010290300210520012903002107201f2903002130200a290300210f200b2903002131201841c0006a2017360200201841186a2031370300201841206a200f370300201841286a2030370300201841386a2007370300201841306a2005370300201841c4006a20002903e003370200201841cc006a2002290300370200201841d4006a2015290300370200201841dc006a201a280200360200201d41016a211d20132006470d000b0b200041a0056a20083602002000419c056a201136020020004190056a2009ad4220862020ad843703002000201b360298052000202a36028c0520004284808080c000370284052000203936028005200841246c41046a2206417f4c0d030240024020060d00410121170c010b2006102d2217450d030b200041003602b804200020063602b404200020173602b0042008200041b0046a10690240024020080d0020002802b804211920002802b404211620002802b00421180c010b201b200841246c6a2110410020002802b80422196b211a20002802b4042116201b2106034020062802002117024002402016201a6a4104490d0020002802b00421180c010b201941046a22182019490d0a201641017422152018201520184b1b22154100480d0a0240024020160d002015102d21180c010b20002802b00420162015103121180b2018450d05200020153602b404200020183602b004201521160b2000201941046a22153602b804201820196a20173600004120102d2217450d04201741186a22022006411c6a290000370000201741106a221c200641146a290000370000201741086a22082006410c6a2900003700002017200641046a29000037000002402016201a6a417c6a411f4b0d00201541206a22012015490d0a201641017422152001201520014b1b22154100480d0a0240024020160d002015102d21180c010b201820162015103121180b2018450d05200020153602b404200020183602b004201521160b201820196a2215410c6a2008290000370000201541146a201c2900003700002015411c6a20022900003700002000201941246a22193602b804201541046a20172900003700002017102f201a415c6a211a200641246a22062010470d000b0b41ed9bca00ad4280808080800184100122062900002105200041e0036a41086a200641086a290000370300200020053703e0032006102f41f59bca00ad4280808080a00284100122062900002105200041b0046a41086a200641086a290000370300200020053703b0042006102f4110102d2206450d02200641086a41002902b8f646370000200641002902b0f6463700002006ad4280808080800284100322172900002105201741086a2900002107201741106a290000213020004190026a41186a221a201741186a29000037030020004190026a41106a203037030020004190026a41086a200737030020002005370390022017102f2006102f41c000102d2206450d02200620002903e003370000200620002903b0043700102006200029039002370020200641086a200041e0036a41086a290300370000200641186a200041b0046a41086a290300370000200641286a20004190026a41086a290300370000200641306a200041a0026a290300370000200641386a201a290300370000200041c0003602b404200020063602b00420182019200041b0046a109d022006102f02402016450d002018102f0b200041b0046a20004180056a10b10320002802b0042106200020002802b8043602e403200020063602e003202a2009200041e0036a108301024020002802b404450d002006102f0b2039102f02402020450d00202a102f0b02402011450d00201b102f0b20120d010b2000280280032119024020004188036a2802002206450d00200641d0006c2117201941c0006a210603400240200641046a280200450d002006280200102f0b200641d0006a2106201741b07f6a22170d000b0b024020004184036a280200450d002019102f0b4183d1ca00ad4280808080c00184100841f4d0ca00ad4280808080f0018410080c050b4104102d2206450d002006200436000020004188056a4284808080c0003703004100211920004198056a41002902b8f646370300200041103a00800520004180056a41106a41002902b0f646370300200020063602840541c8e1ca00410020004180056a108c010240202b410a6e417f73201d6a2217201d4b0d002000418094ebdc03360284052000202b4101202b41014b1b2206201741036c221720062017491b2006418094ebdc036e22174101201741014b1b22176ead428094ebdc037e200620176ead8042ffffffff0f834280bbb0217e428094ebdc0380a722063602800520004180056a2006418094ebdc034b4102746a28020021190b201d450d02201d41ffffffff0371201d470d05201d41027422064100480d052006102d2218450d0020064102762116201d211720182106034020062019360200200641046a21062017417f6a22170d000b2012201d2018201d200410b30302402016450d002018102f0b201d450d03201d41e0006c2117201241d4006a210603400240200641706a280200450d002006416c6a280200102f0b02402006280200450d002006417c6a280200102f0b200641e0006a2106201741a07f6a22170d000c040b0b1036000b103d000b2012410041044100200410b3030b0240201e450d002012102f0b2000280280032119024020004188036a2802002206450d00200641d0006c2117201941c0006a210603400240200641046a280200450d002006280200102f0b200641d0006a2106201741b07f6a22170d000b0b20004184036a280200450d002019102f0b02402032a7450d00200e4101200e1b102f0b20004180066a24000f0b1038000be70703047f017e037f23004180016b22022400200241286a41186a4200370300200241286a41106a22034200370300200241286a41086a220442003703002002420037032841eba1ca00ad4280808080f000841001220529000021062004200541086a290000370300200220063703282005102f41adcac800ad4280808080900184100122052900002106200241086a41086a2207200541086a290000370300200220063703082005102f200320022903082206370300200241d8006a41086a2004290300370300200241d8006a41106a2006370300200241d8006a41186a200729030037030020022002290328370358200241286a200241d8006a10fd03024002400240024020022903284202520d00200041003602200c010b200241086a200328020010bd034120102d2204450d0120042001290000370000200441186a200141186a290000370000200441106a200141106a290000370000200441086a200141086a29000037000020022004ad4280808080800484100622012900003703782001102f200241346a200441206a360200200241003a0038200220043602302002200241f8006a41086a36022c2002200241f8006a360228200241d8006a200241286a106c2004102f2002280258210702400240200228020c2205200228021022016b20022802602203490d00200228020821040c010b200120036a22042001490d03200541017422082004200820044b1b22084100480d030240024020050d002008102d21040c010b200228020820052008103121040b2004450d022002200836020c20022004360208200821050b2002200120036a2208360210200420016a2007200310e8061a0240200228025c450d002007102f0b200241286a2004200810bc03200241d8006a41186a2207200241286a41186a290300370300200241d8006a41106a2208200241286a41106a290300370300200241d8006a41086a2209200241286a41086a29030037030020022002290328370358200241d4006a28020021030240024020022802482201450d00200241086a41086a2009290300370300200241086a41106a2008290300370300200241086a41186a200729030037030020022002290358370308200229024c21060c010b42002106200241086a41186a4200370300200241086a41106a4200370300200241086a41086a420037030020024200370308410821010b02402005450d002004102f0b2000200229030837030020002006370224200020013602202000412c6a2003360200200041186a200241086a41186a290300370300200041106a200241086a41106a290300370300200041086a200241086a41086a2903003703000b20024180016a24000f0b1036000b1038000be50607027f017e0b7f027e017f017e037f230041206b2202240002400240024020012802082203ad42d0007e2204422088a70d002004a72205417f4c0d0020012802002106024002400240024020050d002006200341d0006c6a210741082108200321090c010b2005102d2208450d052006200341d0006c6a21070240200541d0006e22012003490d00200121090c010b2001410174220a2003200a20034b1b220941d0006c220a4100480d0402400240200541cf004b0d00200a102d21080c010b2008200141d0006c200a103121080b2008450d050c010b20030d00410021030c010b200341047441706a410476210b2008210c0340200241186a220d200641186a290300370300200241106a220e200641106a290300370300200241086a220f200641086a29030037030020022006290300370300200641c8006a2802002203ad42307e2204422088a70d022004a72201417f4c0d02200641386a2903002104200641306a2903002110200641286a2903002111200641c0006a2802002112200629032021130240024002400240024020010d002012200341306c6a211441082115200321050c010b2001102d2215450d082012200341306c6a2114200141306e220520034f0d002005410174220a2003200a20034b1b221641306c22034100480d07024002402001412f4b0d002003102d21150c010b2015200541306c2003103121150b20150d010c080b2003450d01200521160b410021014100210a0340201520016a2205201220016a22032903003703002005200341086a290300370308200541106a200341106a290300370300200541186a200341186a290300370300200541206a200341206a290300370300200541286a200341286a290300370300200141306a2101200a41016a210a200341306a2014470d000b201621050c010b4100210a0b200c2013370320200c2002290300370300200c41386a2004370300200c41306a2010370300200c41286a2011370300200c41c8006a200a360200200c41c4006a2005360200200c41c0006a2015360200200c41186a200d290300370300200c41106a200e290300370300200c41086a200f290300370300200c41d0006a210c200641d0006a22062007470d000b200b41016a21030b200020033602082000200936020420002008360200200241206a24000f0b103d000b1038000b1036000bc20605027f017e017f027e047f230041c0006b2202240041ed9bca00ad4280808080800184100122032900002104200241086a200341086a290000370300200220043703002003102f4198f1c600ad4280808080e00284100122032900002104200241106a41086a200341086a290000370300200220043703102003102f02400240024002404110102d2203450d00200341086a41002902b8f646370000200341002902b0f6463700002003ad4280808080800284100322052900002104200541086a2900002106200541106a2900002107200241206a41186a2208200541186a290000370300200241206a41106a2007370300200241206a41086a2006370300200220043703202005102f2003102f41c000102d2203450d00200320022903003700002003200229031037001020032002290320370020200341086a200241086a290300370000200341186a200241106a41086a290300370000200341286a200241206a41086a290300370000200341306a200241306a290300370000200341386a20082903003700002001280208220541046a2208417f4c0d01200128020021090240024020080d00410121010c010b2008102d2201450d010b2002410036022820022008360224200220013602202005200241206a1069024002402002280224220a200228022822016b2005490d00200228022021080c010b200120056a22082001490d03200a410174220b2008200b20084b1b220b4100480d0302400240200a0d00200b102d21080c010b2002280220200a200b103121080b2008450d012002200b36022420022008360220200b210a0b200820016a2009200510e8061a200120056aad4220862008ad84100322052900002104200541086a2900002106200541106a2900002107200241206a41186a200541186a290000370300200241206a41106a2007370300200241206a41086a2006370300200220043703202005102f0240200a450d002008102f0b200341c000418001103122030d030b1036000b103d000b1038000b20032002290320370040200341d8006a200241386a290300370000200341d0006a200241306a290300370000200341c8006a200241286a29030037000020004280818080800c37020420002003360200200241c0006a24000bab0f03027f037e0f7f230041d0026b2202240041ed9bca00ad4280808080800184100122032900002104200241e8006a41086a200341086a290000370300200220043703682003102f4194bbc600ad4280808080f00084100122032900002104200241b0016a41086a200341086a290000370300200220043703b0012003102f02400240024002404120102d2203450d0020032001290000370000200341186a200141186a290000370000200341106a200141106a290000370000200341086a200141086a2900003700002003ad4280808080800484100322012900002104200141086a2900002105200141106a2900002106200241f0016a41186a2207200141186a290000370300200241f0016a41106a22082006370300200241f0016a41086a2005370300200220043703f0012001102f2003102f41c000102d2209450d0020092002290368370000200920022903b001370010200920022903f001370020200941086a200241e8006a41086a290300370000200941186a200241b0016a41086a220a290300370000200941286a200241f0016a41086a220b290300370000200941306a2008290300370000200941386a2007290300370000200241c00036024420022009360240200241c8006a2009ad4280808080800884100210730240200228024822070d00410021030c040b200228024c210c2002200241c8006a41086a28020022083602ac01200220073602a80141002103200241003a002002400240034020082003460d01200220036a200720036a22012d00003a00002002200141016a3602a8012002200341016a22013a00202001210320014120470d000b200241b0026a41086a220d200241086a220e290300370300200241b0026a41106a220f200241106a2210290300370300200241b0026a41186a2211200241186a2212290300370300200220022903003703b0022002200820016b3602ac012002200241a8016a108a0520022802202203450d01200241f0016a41186a22082011290300370300200241f0016a41106a2211200f290300370300200241f0016a41086a220f200d290300370300200241f0016a41286a220d200e290300370300200241f0016a41306a220e2010290300370300200241f0016a41386a22102012290300370300200220022903b0023703f0012002200229030037039002200241246a2802002101200241286a22122903002104200241b0016a41086a200f290300370300200241b0016a41106a2011290300370300200241b0016a41186a2008290300370300200241b0016a41206a2208200229039002370300200241b0016a41286a220f200d290300370300200241b0016a41306a220d200e290300370300200241b0016a41386a220e2010290300370300200220022903f0013703b001200241f0016a200241a8016a10980320022802f0010d032001450d012003102f0c010b200241003602ac01200341ff0171450d00200241003a00200b41002103200241003602b801200242013703b0012002410b36026c2002200241c0006a3602682002200241b0016a36020020024184026a4101360200200242013702f401200241b885c7003602f0012002200241e8006a36028002200241d8dbc100200241f0016a103c1a20023502b80142208620023502b001841008024020022802b401450d0020022802b001102f0b0c020b1036000b200241d8006a41086a2210200241f0016a41086a280200360200200241e8006a41086a2211200241b0016a41086a290300370300200241e8006a41106a2213200241b0016a41106a290300370300200241e8006a41186a2214200241b0016a41186a290300370300200241e8006a41206a22152008290300370300200241e8006a41286a2208200f290300370300200241e8006a41306a220f200d290300370300200241e8006a41386a220d200e290300370300200220022903f001370358200220022903b001370368200241386a200d290300370300200241306a200f29030037030020122008290300370300200241206a2015290300370300200241186a2014290300370300200241106a2013290300370300200241086a2011290300370300200241b0026a41086a201028020036020020022002290368370300200220022903583703b0020b200c450d002007102f0b200b200241086a290300370300200241f0016a41106a2207200241106a290300370300200241f0016a41186a2208200241186a290300370300200241f0016a41206a220b200241206a290300370300200241f0016a41286a200241286a290300370300200241f0016a41306a200241306a290300370300200241f0016a41386a200241386a290300370300200220022903003703f001200a200241b0026a41086a280200360200200220022903b0023703b00102402003450d00200020022903f00137030020002001360244200041c8006a2004370200200041386a200241f0016a41386a290300370300200041306a200241f0016a41306a290300370300200041286a200241f0016a41286a290300370300200041206a200b290300370300200041186a2008290300370300200041106a2007290300370300200041086a200241f0016a41086a290300370300200041d8006a200241b0016a41086a280200360200200041d0006a20022903b0013702000b200020033602402009102f200241d0026a24000bc94312047f017e017f017e077f027e047f017e087f027e027f027e017f017e057f017e027f027e230041d0036b22052400200541f8026a41186a22064200370300200541f8026a41106a22074200370300200541f8026a41086a22084200370300200542003703f80241eba1ca00ad4280808080f0008422091001220a290000210b200541d8026a41086a220c200a41086a2900003703002005200b3703d802200a102f2008200c290300370300200520052903d8023703f80241f9a0ca00ad4280808080b002841001220a290000210b200541e8026a41086a220c200a41086a2900003703002005200b3703e802200a102f200720052903e802220b370300200541a8036a41086a220d2008290300370300200541a8036a41106a220e200b370300200541a8036a41186a220f200c290300370300200520052903f8023703a803200541203602ec022005200541a8036a3602e802200541d8016a200541a8036aad4280808080800484220b100210730240024020052802d801220a0d004100210c0c010b20052802dc01211002400240200541d8016a41086a2802004104490d00200a28000021114101210c0c010b4100210c2005410036028002200542013703f8012005410b3602dc022005200541e8026a3602d8022005200541f8016a3602a8022005418c036a4101360200200542013702fc02200541b885c7003602f8022005200541d8026a36028803200541a8026a41d8dbc100200541f8026a103c1a20053502800242208620053502f801841008024020052802fc01450d0020052802f801102f0b0b2010450d00200a102f0b200642003703002007420037030020084200370300200542003703f80220091001220a29000021092008200a41086a290000370300200520093703f802200a102f41adcac800ad42808080809001841001220a2900002109200541f8016a41086a2206200a41086a290000370300200520093703f801200a102f200720052903f8012209370300200d2008290300370300200e2009370300200f2006290300370300200520052903f8023703a803200541f8026a200541a8036a10fd03024020052903f8024202510d002007280200211241eba1ca00ad4280808080f00084100122082900002109200541f8016a41086a220a200841086a290000370300200520093703f8012008102f41dca0ca00ad4280808080d00284100122082900002109200541a8036a41086a2206200841086a290000370300200520093703a8032008102f200520123602d801200541d8016aad4280808080c00084100322082900002109200841086a2900002113200841106a2900002114200541f8026a41186a220d200841186a290000370300200541f8026a41106a220e2014370300200541f8026a41086a220f2013370300200520093703f8022008102f02400240024041c000102d2208450d00200820052903f801370000200820052903a803370010200820052903f802370020200841086a200a290300370000200841186a2006290300370000200841286a200f290300370000200841306a200e290300370000200841386a200d290300370000200541d0016a200841c00010950120052802d401210620052802d001210a2008102f02400240200a0d0041aacfc800ad4280808080e0068410084100201241e07a6a2208200820124b1b2115201221160c010b4100201241e07a6a2208200820124b1b21150240200620044b0d00201221160c010b200541f8026a41186a22064200370300200541f8026a41106a220d4200370300200541f8026a41086a22084200370300200542003703f80241eba1ca00ad4280808080f000841001220a2900002109200541d8026a41086a220e200a41086a290000370300200520093703d802200a102f2008200e290300370300200520052903d8023703f802418ca1ca00ad4280808080a001841001220a2900002109200541e8026a41086a220e200a41086a290000370300200520093703e802200a102f200720052903e802370000200741086a200e290300370000200541a8036a41086a2008290300370300200541a8036a41106a200d290300370300200541a8036a41186a2006290300370300200520052903f8023703a803200541f8026a200541a8036a109d0520052802f8022208410420081b220d20052902fc02420020081b2209422088a741037422086a210a03402008450d04200841786a2108200a417c6a2106200a41786a210a200628020020044b0d000b200d20086a28020021162009a7450d00200d102f0b200541f8026a41186a22174200370300200541f8026a41106a22184200370300200541f8026a41086a22104200370300200542003703f80241eba1ca00ad4280808080f000842219100122082900002109200541d8026a41086a221a200841086a290000370300200520093703d8022008102f2010201a290300370300200520052903d8023703f8024196a1ca00ad4280808080e002842209100122082900002113200541e8026a41086a221b200841086a290000370300200520133703e8022008102f200720052903e802370000200741086a221c201b290300370000200541a8036a41086a221d2010290300370300200541a8036a41106a221e2018290300370300200541a8036a41186a221f2017290300370300200520052903f8023703a803200541c8016a200541a8036a412010950120052802cc01210a20052802c8012106201742003703002018420037030020104200370300200542003703f8022019100122082900002113201a200841086a290000370300200520133703d8022008102f2010201a290300370300200520052903d8023703f8022009100122082900002109201b200841086a290000370300200520093703e8022008102f200720052903e802370000201c201b290300370000201d2010290300370300201e2018290300370300201f2017290300370300200520052903f8023703a8032005200a201220064101461b3602f802200b200541f8026aad22094280808080c00084100420032001200120034b1b2220450d0320114100200c1b2121200541a8026aad4280808080c000842122200942808080808002842123201241016a21242000210f410021250340201742003703002018420037030020104200370300200542003703f8022019100122082900002109201a200841086a290000370300200520093703d8022008102f2010201a290300370300200520052903d8023703f80241c4aac900ad4280808080d00184100122082900002109201b200841086a290000370300200520093703e8022008102f200720052903e802370000201c201b290300370000201d2010290300370300201e2018290300370300201f2017290300370300200520052903f8023703a803200541f8026a200541a8036a412010aa0220052902fc02420020052802f80222081b2209422088a7410574210a2025220641016a2125200220064102746a210e2000200641e0006c6a210c2008410120081b220d2108024003400240200a0d00410021040c020b41012104200f2008460d012008200c412010ea062106200a41606a210a200841206a210820060d000b0b02402009a7450d00200d102f0b024020040d00200e2802002108200542003703a0022005420037039802200541b8016a200c2903202209200c41286a290300428094ebdc03420010ee0620054198016a200c290330220b200c41386a290300428094ebdc03420010ee06200541a8016a20052903b8012214200541b8016a41086a29030022264280ec94a37c427f10ed06200541e8006a201420262008ad2213420010ed0620054188016a200529039801221420054198016a41086a29030022264280ec94a37c427f10ed06200541f8006a201420262013420010ed06200542003703b002200542003703a802200b2005290388017c20137e2214428094ebdc0380210b02400240024020052903684200200920052903a8017c20137e22092009428094ebdc038022094280ec94a37c7e7c4280cab5ee01562009a76a220aad7d85200541e8006a41086a2903004200200a410047ad7d8584500d0020052903782126200541f8006a41086a2903002127200541d8016a2016200c10e60520052802d801210a200520052802e00122063602ec022005200a3602e802200541f8016a2006ad422086200aad84100210730240024020052802f80122060d00420021090c010b20052802fc01210402400240200528028002220d4104490d00200d417c6a410f4d0d0020062800002128420121090c010b200541003602b003200542013703a8032005410b3602dc022005200541e8026a3602d8022005200541a8036a3602cc032005410136028c03200542013702fc02200541b885c7003602f8022005200541d8026a36028803200541cc036a41d8dbc100200541f8026a103c1a20053502b00342208620053502a803841008024020052802ac03450d0020052802a803102f0b420021090b2004450d002006102f0b024020052802dc01450d00200a102f0b20082028410020094200521b22034d0d03200541f8026a2016200c10e605200535028003212920052802f80221064110102d220a450d05200a2008360000200a4110412010312208450d05200820262014200b4280ec94a37c7e7c4280cab5ee0156200ba76aad7c22093700042008410c6a20272009202654ad7c220b37000020294220862006ad842008ad4280808080c0028410042008102f024020052802fc02450d002006102f0b200541f8016a200c10eb05200528028402450d01200541d8016a41106a200541f8016a41106a290300370300200541d8016a41086a200541f8016a41086a290300370300200520052903f8013703d8010c020b200542003703e002200542003703d802200542003703f002200542003703e802200541f8016a200c10eb0502400240200528028402450d00200541d8016a41106a200541f8016a41106a290300370300200541d8016a41086a200541f8016a41086a290300370300200520052903f8013703d8010c010b200542003703b80320054280808080c0003703b003200520153602ac03200541003602a803200c200541a8036a10ec05200541d8016a41106a20052903b803370300200541d8016a41086a20052903b003370300200520052903a8033703d8010b201020052903d801370200201041086a200541d8016a41086a290300370200201041106a200541d8016a41106a290300370200200541003a00a4032005200c3602fc02200520153602f802200520213602a0032005200541e8026a36029c032005200541d8026a36029803200541a8036a200541f8026a201610b703024020052802b0034102460d0020052802a803220d200528028003470d00410021080240202420052802840322064d0d000240200528029403220a200528029003470d00200a41016a2208200a490d08200a41017422042008200420084b1b220841ffffffff03712008470d08200841027422084100480d0802400240200a0d002008102d21040c010b200528028c03200a4102742008103121040b2004450d072005200436028c0320052008410276360290030b200528028c03220841046a2008200a41027410e9061a2008202420066b3602002005202436028403410121082005200a41016a360294032005200d41016a220d360280030b200520083a00a403200c10e805200c10e9050240200c10a20441ff0171220a4102460d00200a410171450d0010f5050b2008450d00200528028403210e0240024002402005280294032201450d00200528028c03210a2001410274210441002106200e210802400340200820154d0d01200641016a21062008200a2802006b2108200a41046a210a2004417c6a22040d000c020b0b200120064f0d010b2005200e2015200e20154b1b360284030c010b2005200e2015200e20154b1b36028403200520063602940341000d00200d20016b200d20066b4f0d00410020016b21080340201d200c41086a290200370300201e200c41106a290200370300201f200c41186a2902003703002005200c2902003703a8032005200d20086a3602c803200541a8036a10ed052006200841016a22086a0d000b0b200c201010ec050b200528029003450d02200528028c03102f0c020b200542003703b80320054280808080c0003703b003200520153602ac03200541003602a803200c200541a8036a10ec05200541d8016a41106a20052903b803370300200541d8016a41086a20052903b003370300200520052903a8033703d8010b201020052903d801370200201041086a222a200541d8016a41086a222b290300370200201041106a222c200541d8016a41106a222d290300370200200541003a00a4032005200c3602fc02200520153602f802200520213602a0032005200541a8026a36029c03200520054198026a36029803200541e0006a200541f8026a20162009200b10b803200528028003210e02400240024020052802604101470d002005280264220a200e460d010b20052d00a40321080c010b02400240202420052802840322084d0d0002402005280294032206200528029003470d00200641016a22042006490d072006410174220d2004200d20044b1b220441ffffffff03712004470d07200441027422044100480d070240024020060d002004102d210d0c010b200528028c03200641027420041031210d0b200d450d062005200d36028c0320052004410276360290030b200528028c03220441046a2004200641027410e9061a2004202420086b3602002005202436028403410121082005200641016a360294032005200a41016a220a360280030c010b20052d00a40321080b200520083a00a403200c10e805200c10e9050240200c10a20441ff017122064102460d002006410171450d0010f5050b200a210e0b0240200841ff0171450d00200528028403210120052802f802210d0240024002402005280294032211450d00200528028c03210a201141027421044100210620012108024003402008200d4d0d01200641016a21062008200a2802006b2108200a41046a210a2004417c6a22040d000c020b0b201120064f0d010b20052001200d2001200d4b1b360284030c010b20052001200d2001200d4b1b36028403200520063602940341000d00200e20116b200e20066b4f0d00410020116b210a20052802fc0221080340201f200841186a290000370300201e200841106a290000370300201d200841086a290000370300200520082900003703a8032005200e200a6a3602c803200541a8036a10ed052006200a41016a220a6a0d000b0b20052802fc02201010ec050b0240200528029003450d00200528028c03102f0b42002109200542003703e002200542003703d8020240024002400240200c41c8006a220a28020022080d00410821110c010b2008ad42307e2209422088a70d062009a722084100480d062008102d2211450d05200841306ead2109200a28020022080d010b42002114420021260c010b200c41c0006a2802002201200841306c6a212e2003ad21290340200542003703f002200542003703e802200541386a20012903002226200141086a290300428094ebdc03420010ee06200541286a2005290338220b200541386a41086a29030022144280ec94a37c427f10ed06200541186a200b20142029420010ed06200541086a200b20142013420010ed06200541f8026a2016200141106a220d10e705200541c8006a20052802f802220a200528028003109c014200200541086a41086a29030020052903082214202620052903287c222620137e220b200b428094ebdc0380220b4280ec94a37c7e7c4280cab5ee0156200ba76aad7c220b201454ad7c2214200541186a41086a29030020052903182227202620297e22262026428094ebdc038022264280ec94a37c7e7c4280cab5ee01562026a76aad7c2226202754ad7c7d200b202654ad7d2227200b20267d2226200b56202720145620272014511b22081b21144200202620081b210b200541c8006a41106a29030021262005290350212720052802482108024020052802fc02450d00200a102f0b200541a8036a2016200d10e70520052802a803210a20053502b003212f20052027420020081b2227200b7c220b3703f80220052026420020081b20147c200b202754ad7c221437038003202f422086200aad8420231004024020052802ac03450d00200a102f0b200541f8016a200d10eb0502400240200528028402450d00202d200541f8016a41106a290300370300202b200541f8016a41086a290300370300200520052903f8013703d8010c010b200542003703b80320054280808080c0003703b003200520153602ac03200541003602a803200d200541a8036a10ec05202d20052903b803370300202b20052903b003370300200520052903a8033703d8010b201020052903d801370200202a202b290300370200202c202d290300370200200541003a00a4032005200d3602fc02200520153602f802200520213602a0032005200541e8026a36029c032005200541d8026a360298032005200541f8026a2016200b201410b803200528028003210302400240024020052802004101470d00200528020422062003470d00202420052802840322084d0d010240200528029403220a200528029003470d00200a41016a2204200a490d09200a410174220e2004200e20044b1b220441ffffffff03712004470d09200441027422044100480d0902400240200a0d002004102d210e0c010b200528028c03200a41027420041031210e0b200e450d082005200e36028c0320052004410276360290030b200528028c03220441046a2004200a41027410e9061a2004202420086b3602002005202436028403410121082005200a41016a360294032005200641016a220336028003200541013a00a4030c020b20052d00a40321080c010b200520052d00a40322083a00a403200621030b0240200841ff0171450d00200528028403213020052802f802210e0240024002402005280294032231450d00200528028c03210a203141027421044100210620302108024003402008200e4d0d01200641016a21062008200a2802006b2108200a41046a210a2004417c6a22040d000c020b0b203120064f0d010b20052030200e2030200e4b1b360284030c010b20052030200e2030200e4b1b36028403200520063602940341000d00200320316b200320066b4f0d00410020316b210a20052802fc0221080340201f200841186a290000370300201e200841106a290000370300201d200841086a290000370300200520082900003703a80320052003200a6a3602c803200541a8036a10ed052006200a41016a220a6a0d000b0b20052802fc02201010ec050b0240200528029003450d00200528028c03102f0b200d41086a290000210b200d29000021142017200d41186a2900003703002018200d41106a2900003703002010200b370300200520143703f802201b290300210b20052903e80221140240024020094220882226a722082009a7460d002008210a0c010b200841016a22062008490d062026a7220a4101742204200620062004491bad42307e2209422088a70d062009a722064100480d060240024020080d002006102d21110c010b2011200841306c2006103121110b2011450d05200641306ead21090b20102903002126201829030021272017290300212f20052903f80221322011200a41306c6a2208201437032020082032370300200841286a200b370300200841186a202f370300200841106a2027370300200841086a2026370300200942ffffffff0f83200a41016aad422086842109200141306a2201202e470d000b201a290300212620052903d80221140b20054198026a41086a29030021272005290398022113202b200c41086a290300370300202d200c41106a290300370300200541d8016a41186a2208200c41186a2903003703002005200c2903003703d8012011450d00200541a8026a41086a290300212920052903a802212f200541f8016a41186a22012008290300370300200541f8016a41106a2203202d290300370300200541f8016a41086a2230202b290300370300200520052903d8013703f8010240024002400240200c280258220841ffffff3f712008470d0020084105742204417f4c0d00200c280250210c024020040d00200c20046a21064101210d2008210e0c020b2004102d220d450d06200c20046a21062004410576220e20084f0d01200e410174220a2008200a20084b1b220841ffffff3f712008470d07200841057422084100480d0702400240200e0d002008102d210d0c010b200d200e41057420081031210d0b200d450d062008410576210e0c020b103d000b20080d004100210c0c010b200d2108200c210a03402008200a290000370000200841186a200a41186a290000370000200841106a200a41106a290000370000200841086a200a41086a290000370000200841206a21082006200a41206a220a470d000b200c20046a200c6b41606a41057641016a210c0b201f2001290300370300201e2003290300370300201d2030290300370300200520052903f8013703a803201910012208290000210b201a200841086a2900003703002005200b3703d8022008102f41e0cfc800ad428080808080028410012208290000210b201b200841086a2900003703002005200b3703e8022008102f200520123602a80220221003220841086a290000210b200841106a2900002132200829000021332017200841186a290000370300201820323703002010200b370300200520333703f8022008102f41c000102d2206450d02200620052903d802370000200620052903e802370010200620052903f80237002041082104200641086a200541d8026a41086a290300370000200641186a200541e8026a41086a290300370000200641286a200541f8026a41086a290300370000200641306a2018290300370000200641386a2017290300370000200541f8026a2006109a050240024020052802f80222010d004100210a4200210b410021080c010b20052902fc02220b422088a7210a200ba72108200121040b2017201f2903003703002018201e2903003703002010201d290300370300200520052903a8033703f8020240200a2008470d000240200a200ba7470d00200a41016a2208200a490d05200a41017422012008200120084b1bad42d8007e2232422088a70d052032a722084100480d0502400240200a0d002008102d21040c010b2004200a41d8006c2008103121040b2004450d04200b42808080807083200841d8006ead84210b0b200b422088a7210a0b2004200a41d8006c22016a2208201320147c2214370310200820293703082008202f3703002008200d36022c20082011360220200841186a202720267c2014201354ad7c370300200841346a200c360200200841306a200e360200200841246a2009370200200820052903f802370338200841c0006a2010290300370300200841c8006a2018290300370300200841d0006a20172903003703000240024020040d002006ad428080808080088410050c010b200541f8026a2004200a41016a220810f9052006ad428080808080088420053502800342208620052802f802220aad841004024020052802fc02450d00200a102f0b200ba7210c02402008450d00200441306a2108200141d8006a210a03400240200841746a280200450d00200841706a280200102f0b02402008280200450d002008417c6a280200102f0b200841d8006a2108200a41a87f6a220a0d000b0b200c450d002004102f0b2006102f0b200f41e0006a210f20252020490d000c040b0b1036000b1038000b2009a7450d00200d102f0b200541d0036a24000bfb1808017f047e017f057e047f057e057f047e230041c0056b22052400200541c0046a200010b50302400240024020052d00c0044101470d00200541086a41186a200541d9046a290000370300200541186a200541d1046a290000370300200541086a41086a200541c9046a290000370300200520052900c104370308200541c0046a200541086a10810320052802ec044102460d00200541286a200541c0046a41d80010e8061a200541286a41086a290300210620052903282107024002402005290338220820012008200154200541286a41186a290300220920025420092002511b220a1b220b20092002200a1b220c8450450d002007210d2006210e0c010b200541c0006a220a2009200c7d2008200b54ad7d220f37030020052008200b7d220d37033802400240200d428080e983b1de1656200f420052200f501b450d00200b2108200c21090c010b200a420037030020054200370338200f20027c200d20017c2201200d54ad7c21020b20054200200620097d2007200854ad7d220b200720087d220f200756200b200656200b2006511b220a1b220e37033020054200200f200a1b220d370328200220097d2001200854ad7d2102200120087d21010b02400240200541d0006a28020022100d004100210a410021100c010b2005280248210a201041186c21114100211003400240200a2903002208200120012008562002200a41086a221229030022095620022009511b22131b220b2009200220131b220c84500d00200a2008200b7d220d370300200a2009200c7d2008200b54ad7d220f37030802400240200d428080e983b1de1656200f420052200f501b450d002001210f200b2108200c21090c010b200a4200370308200a42003703002002200f7c2001200d7c220f200154ad7c21020b200541286a41086a221342002013290300220120097d2005290328220b200854ad7d220c200b20087d220d200b56200c200156200c2001511b22131b220e37030020054200200d20131b220d370328200220097d200f200854ad7d2102200f20087d210120122903002109200a29030021080b024020082009844200520d00200a41186a210a201041016a2110201141686a22110d010b0b2005280250220a2010490d020b200541003602500240200a20106b220a450d0002402010450d00200528024822132013201041186c6a200a41186c10e9061a0b2005200a3602500b024042002007200d7d220820082007562006200e7d2007200d54ad7d220820065620082006511b220a1b220242002008200a1b220184500d00418de6c300ad4280808080e000841001220a290000210820054188026a41086a200a41086a2900003703002005200837038802200a102f41f0e8c600ad4280808080f000841001220a290000210820054180016a41086a200a41086a2900003703002005200837038001200a102f4120102d220a450d03200a2000290000370000200a41186a200041186a290000370000200a41106a200041106a290000370000200a41086a200041086a290000370000200aad4280808080800484100322102900002108201041086a2900002109201041106a290000210b200541c0046a41186a2213201041186a290000370300200541c0046a41106a2211200b370300200541c0046a41086a2009370300200520083703c0042010102f200a102f41c000102d220a450d03200a200529038802370000200a200529038001370010200a20052903c004370020200a41086a20054188026a41086a290300370000200a41186a20054180016a41086a290300370000200a41286a200541c0046a41086a290300370000200a41306a2011290300370000200a41386a201329030037000020054180016a200a10f602200529038001210e4200210b2005420037038001200541c8016a280200211320052d00cc01211102400240200e4201510d00200541d0016a41306a4200370300200541d0016a41286a4200370300200541d0016a41206a4200370300200541e8016a4200370300200541e0016a4200370300200541d0016a41086a4200370300200542003703d0014200210c4200210942002108420021140c010b20054180016a41386a290300210f20054180016a41306a290300210d20054180016a41206a290300210c20054180016a41186a290300210b20054180016a41c0006a290300211420052903900121082005290388012109200541d0016a41206a20054180016a41286a290300370300200541d0016a41286a200d370300200541d0016a41306a200f370300200541e0016a200b3703002005200c3703e801200520093703d001200520083703d8010b20052009200220092009200256200820015620082001511b22101b220d7d22063703d001200520082001200820101b22157d2009200d54ad7d220f3703d8012008200c7c2009200b7c22162009542212ad7c2109200541d0016a41106a2110024002402002200d7d2207200120157d2002200d54ad7d22178450450d004200210b4200211720022115200121180c010b200541e8016a200c2017200c200b200756200c201756200c2017511b22191b22187d200b2007200b20191b220c54ad7d3703002005200b200c7d3703e001201720187d2007200c54ad7d2117201820157c200c200d7c2215200c54ad7c21182007200c7d210b0b200920085121192009200854211a20054188026a41186a201041086a290300220837030020054188026a41206a221b201041106a290300370300200541b0026a221c201041186a290300370300200541b8026a221d201041206a29030037030020052010290300220c3703980220052006370388022005200f3703900202400240427f2006200c7c220c200c2006542210200f20087c2010ad7c2208200f542008200f511b22101b220c428080e983b1de16544100427f200820101b220d501b0d0020054198026a290300210c201d290300210d201c2903002107201b290300211e200529039002211f20052903880221204201210820052903a00221210c010b420021080240200c200d84500d00200c200d109a01200541f8046a200d370300200541f0046a200c370300200541c0046a41086a41013a0000200541c9046a2000290000370000200541d1046a200041086a290000370000200541d9046a200041106a290000370000200541e1046a200041186a290000370000200541033a00c00441c8e1ca004100200541c0046a108c010b0b2012201a20191b2110200541a8016a201e370300200541b0016a200737030020054190016a201f370300200541b8016a200d37030020054198016a200c370300200520213703a001200520143703c0012005202037038801200520114100200e42015122121b3a00cc0120052013410020121b3602c801200520084201512213ad370380010240024020130d00200aad428080808080088410050c010b200541c0003602c4042005200a3602c00420054188016a200541c0046a1090030b427f200920101b2109427f201620101b210c200a102f2008420152210a024002400240200e4201510d00200a0d0041032110200541c0036a210a0c010b200e420152200a410173720d0141042110200541c0026a210a0b200a41046a20103a0000200a41003a0000200a41056a2000290000370000200a410d6a200041086a290000370000200a41156a200041106a290000370000200a411d6a200041186a29000037000041c8e1ca004100200a108c010b0240200c2009844200520d00200541f8046a200f370300200541f0046a2006370300200541c0046a41086a41003a0000200541c9046a2000290000370000200541d1046a200041086a290000370000200541d9046a200041106a290000370000200541e1046a200041186a290000370000200541033a00c00441c8e1ca004100200541c0046a108c010b2004427f2004290300220820157c22092009200854220a200441086a2210290300220820187c200aad7c220920085420092008511b220a1b3703002010427f2009200a1b3703000240200b201784500d002003420020032903002208200b7d22092009200856200341086a220a290300220920177d2008200b54ad7d220820095620082009511b22101b370300200a4200200820101b3703000b200541086a200541286a10b603200541f8046a2001370300200541f0046a2002370300200541c0046a41086a41013a0000200541c9046a2000290000370000200541d1046a200041086a290000370000200541d9046a200041106a290000370000200541e1046a200041186a290000370000200541043a00c00441c8e1ca004100200541c0046a108c010b200541cc006a280200450d002005280248102f0b200541c0056a24000f0b41a6b5ca00411c41f8b4ca001039000b1036000bdb0403027f037e027f230041e0006b2202240041eba1ca00ad4280808080f00084100122032900002104200241306a41086a200341086a290000370300200220043703302003102f41a1cac800ad4280808080e00084100122032900002104200241086a41086a200341086a290000370300200220043703082003102f02404120102d2203450d0020032001290000370000200341186a200141186a290000370000200341106a200141106a290000370000200341086a200141086a2900003700002003ad4280808080800484100322012900002104200141086a2900002105200141106a2900002106200241c0006a41186a2207200141186a290000370300200241c0006a41106a22082006370300200241c0006a41086a2005370300200220043703402001102f2003102f41c000102d2203450d00200320022903303700002003200229030837001020032002290340370020200341086a200241306a41086a290300370000200341186a200241086a41086a290300370000200341286a200241c0006a41086a2201290300370000200341306a2008290300370000200341386a2007290300370000200241086a200341c00010ad022001200241086a41096a2900003703002008200241086a41116a2900003703002007200241086a41196a290000370300200220022900093703400240024020022d00084101460d00200041003a00000c010b200041013a000020002002290340370001200041096a2001290300370000200041116a200241d0006a290300370000200041196a200241d8006a2903003700000b2003102f200241e0006a24000f0b1036000bf90303027f037e027f230041d0006b22022400200242f3e885db96cddbb320370308200241086a200141346a2001290300200141086a290300411f10b00141eba1ca00ad4280808080f00084100122032900002104200241106a41086a200341086a290000370300200220043703102003102f41a7cac800ad4280808080e00084100122032900002104200241206a41086a200341086a290000370300200220043703202003102f02404120102d2203450d0020032000290000370000200341186a200041186a290000370000200341106a200041106a290000370000200341086a200041086a2900003700002003ad4280808080800484100322002900002104200041086a2900002105200041106a2900002106200241306a41186a2207200041186a290000370300200241306a41106a22082006370300200241306a41086a2005370300200220043703302000102f2003102f41c000102d2203450d00200320022903103700002003200229032037001020032002290330370020200341086a200241106a41086a290300370000200341186a200241206a41086a290300370000200341286a200241306a41086a290300370000200341306a2008290300370000200341386a2007290300370000200241c000360234200220033602302001200241306a10f3052003102f200241d0006a24000f0b1036000bbd0101057f2001280208210302402001410c6a280200220420024b0d002000410036020820002004ad4220862003ad843702000f0b024002402001411c6a2802002205450d00200141146a2802002101200541027421062003417f6a2103034002402004200128020022076b220520024b0d00200420024b0d030b200141046a21012003417f6a2103200521042006417c6a22060d000b0b200041023602080f0b2000200736020c2000410136020820002005ad4220862003ad843702000ba51308037f017e017f027e017f017e017f037e230041c0026b22052400200541c0016a2001200210b70302400240024002400240024020052802c8014102460d0020052802c0012106200541c0016a41086a2001280204220741086a290000370300200541c0016a41106a200741106a290000370300200541c0016a41186a200741186a290000370300200520063602e001200520072900003703c00141eba1ca00ad4280808080f00084100122072900002108200541e8016a41086a200741086a290000370300200520083703e8012007102f41b6cbc800ad4280808080900184100122072900002108200541f8016a41086a200741086a290000370300200520083703f8012007102f4104102d2207450d0420074104412010312207450d04200720052903c001370000200741186a200541c0016a41186a290300370000200741106a200541c0016a41106a290300370000200741086a200541c0016a41086a2903003700002007412041c00010312209450d04200920063600202009ad4280808080c00484100322072900002108200741086a290000210a200741106a290000210b20054188026a41186a200741186a29000037030020054188026a41106a200b37030020054188026a41086a200a37030020052008370388022007102f2009102f41c000102d2207450d04200720052903e801370000200720052903f8013700102007200529038802370020200741086a200541e8016a41086a220c290300370000200741186a200541f8016a41086a290300370000200741286a20054188026a41086a290300370000200741306a20054188026a41106a290300370000200741386a20054188026a41186a290300370000200541c0003602ac02200520073602a802200541e8016a2007ad4280808080800884100210730240024020052802e80122090d004200210d0c010b20052802ec01210e024002400240200c280200220c4110490d00200c4170714110470d010b2005410036028002200542013703f8012005410b3602b4022005200541a8026a3602b0022005200541f8016a3602bc022005419c026a41013602002005420137028c02200541b885c700360288022005200541b0026a36029802200541bc026a41d8dbc10020054188026a103c1a20053502800242208620053502f801841008024020052802fc01450d0020052802f801102f0b4200210d0c010b200941186a290000210a200941086a290000210f200929001021082009290000210b4201210d0b200e450d002009102f0b2007102f200a4200200d42005222071b210a2008420020071b2108200b420020071b220d200354200f420020071b220b200454200b2004511b0d01200d200385200b2004858450450d03200541b0016a20032004428094ebdc03420010ee06200541a0016a20052903b001220b200541b0016a41086a290300220d4280ec94a37c427f10ed0620054190016a200b200d2001350228220f420010ed0620054180016a4200200529039001220d200f20052903a00120037c7e220b200b428094ebdc0380220b4280ec94a37c7e7c4280cab5ee0156200ba76aad7c220b20087d220f200f200b5620054190016a41086a290300200b200d54ad7c220d200a7d200b200854ad7d220b200d56200b200d511b22071b220d4200200b20071b428094ebdc03420010ee06200541f0006a200529038001220b20054180016a41086a290300220f4280ec94a37c427f10ed06200541e0006a200b200f4280cab5ee01420010ed06200541e0006a41086a2903002005290360220f200d20052903707c220b4280cab5ee017e428094ebdc03824280cab5ee0156200b420188a76aad7c220b200f54ad7c210d410021070c020b410021070c040b200541c0006a20032004428094ebdc03420010ee06200541d0006a20032004428094ebdc03420010ef06200541306a2005290340200541c0006a41086a2903002001350228220f420010ed06200541206a420020052903302210200f20052903507e220f200f428094ebdc0380220f4280ec94a37c7e7c4280cab5ee0156200fa76aad7c220f20087d22112011200f56200541306a41086a290300200f201054ad7c2210200a7d200f200854ad7d220f201056200f2010511b22071b22104200200f20071b428094ebdc03420010ee06200541106a2005290320220f200541206a41086a29030022114280ec94a37c427f10ed062005200f20114280cab5ee01420010ed06200128022422072003200d7d220f20072903007c2211370300200741086a22072004200b7d2003200d54ad7d20072903007c2011200f54ad7c370300200141106a2207200728020022072002200720024b1b360200200541086a2903002005290300220d201020052903107c220b4280cab5ee017e428094ebdc03824280cab5ee0156200b420188a76aad7c220b200d54ad7c210d410121070b02400240200b200d84500d00200128022022072007290300220f200b7c2210370300200741086a22072007290300200d7c2010200f54ad7c370300200a200d7c2008200b7c220b200854ad7c210a200b21080c010b2007450d010b200141013a002c41eba1ca00ad4280808080f0008410012207290000210b200541e8016a41086a200741086a2900003703002005200b3703e8012007102f41b6cbc800ad428080808090018410012207290000210b200541f8016a41086a200741086a2900003703002005200b3703f8012007102f4104102d2207450d0120074104412010312207450d01200720052903c001370000200741186a200541c0016a41186a290300370000200741106a200541c0016a41106a290300370000200741086a200541c0016a41086a2903003700002007412041c00010312201450d01200120063600202001ad4280808080c0048410032207290000210b200741086a290000210d200741106a290000210f20054188026a41186a200741186a29000037030020054188026a41106a200f37030020054188026a41086a200d3703002005200b370388022007102f2001102f41c000102d2207450d01200720052903e801370000200720052903f8013700102007200529038802370020200741086a200541e8016a41086a290300370000200741186a200541f8016a41086a290300370000200741286a20054188026a41086a290300370000200741306a20054188026a41106a290300370000200741386a20054188026a41186a2903003700004110102d2201450d01200120033700002001200437000820014110412010312201450d0120012008370010200141186a200a3700002007ad42808080808008842001ad428080808080048410042001102f2007102f0b410121070c010b1036000b2000200636020420002007360200200541c0026a24000bd58e010e047f017e017f027e017f027e017f027e097f027e037f037e0c7f057e230041d0036b22012400200141f8006a200010ba03200141d0026a41186a4200370300200141d0026a41106a22024200370300200141d0026a41086a22034200370300200142003703d002418de6c300ad4280808080e000841001220429000021052003200441086a290000370300200120053703d0022004102f41f883c400ad4280808080f0018410012204290000210520014188016a41086a2206200441086a29000037030020012005370388012004102f20022001290388012205370300200141e0016a41086a2003290300370300200141e0016a41106a2005370300200141e0016a41186a2006290300370300200120012903d0023703e0010240024002400240024002400240200141e0016a10f702220341ff01714102460d00200141e0016aad22074280808080800484220810052003410171450d00200141f0026a41186a4200370300200141f0026a41106a22094200370300200141f0026a41086a22034200370300200142003703f00241eba1ca00ad4280808080f000841001220429000021052003200441086a290000370300200120053703f0022004102f41aca1ca00ad4280808080e0018410012204290000210520014190036a41086a2206200441086a29000037030020012005370390032004102f20092001290390032205370300200141d0026a41086a2003290300370300200141d0026a41106a2005370300200141d0026a41186a2006290300370300200120012903f0023703d002200141203602c4012001200141d0026a3602c001200141f0026a200141d0026aad220a4280808080800484220b1002107341022104024020012802f0022206450d0020012802f402210c024002402003280200450d0020062d0000220341014b0d0041002104024020030e020200020b410121040c010b200141003602980320014201370390032001410b36029c012001200141c0016a36029801200120014190036a3602a001200141f4016a4101360200200142013702e401200141b885c7003602e001200120014198016a3602f001200141a0016a41d8dbc100200141e0016a103c1a2001350298034220862001350290038410080240200128029403450d00200128029003102f0b410221040b200c450d002006102f0b0240024020044102460d0020044101710d010b42002105200141f0026a41186a22044200370300200141f0026a41106a22064200370300200141f0026a41086a22034200370300200142003703f00241eba1ca00ad4280808080f00084220d1001220c290000210e2003200c41086a2900003703002001200e3703f002200c102f41f2a1ca00ad4280808080a001841001220f290000210e20014190036a41086a220c200f41086a2900003703002001200e37039003200f102f2009200129039003370000200941086a2210200c290300370000200141d0026a41086a22112003290300370300200141d0026a41106a22122006290300370300200141d0026a41186a22132004290300370300200120012903f0023703d002200b1005200442003703002006420037030020034200370300200142003703f002200d1001220f290000210e2003200f41086a2900003703002001200e3703f002200f102f41baa1ca00ad4280808080b003841001220f290000210e200c200f41086a2900003703002001200e37039003200f102f20092001290390033700002010200c290300370000201120032903003703002012200629030037030020132004290300370300200120012903f0023703d002200141f0006a200141d0026a41201095012001280274211420012802702115200442003703002006420037030020034200370300200142003703f002200d1001220f290000210e2003200f41086a2900003703002001200e3703f002200f102f41d2a0ca00ad4280808080a001841001220f290000210e200c200f41086a2900003703002001200e37039003200f102f20092001290390033700002010200c290300370000201120032903003703002012200629030037030020132004290300370300200120012903f0023703d002200141e8006a200141d0026a4120109501200128026c211620012802682117200442003703002006420037030020034200370300200142003703f002200d1001220f290000210e2003200f41086a2900003703002001200e3703f002200f102f4180b1c000ad4280808080f001841001220f290000210e200c200f41086a2900003703002001200e37039003200f102f20092001290390033700002010200c290300370000201120032903003703002012200629030037030020132004290300370300200120012903f0023703d002200141d8006a200141d0026a10e3012001290360210e20012903582118200d1001220f2900002119200141c0016a41086a221a200f41086a290000370300200120193703c001200f102f41dca0ca00ad4280808080d002841001220f290000211920014188016a41086a221b200f41086a2900003703002001201937038801200f102f20012016410020171b221c3602e00120074280808080c0008422191003220f290000211d200f41086a290000211e200f41106a290000211f200141a0016a41186a2216200f41186a290000370300200141a0016a41106a2217201f370300200141a0016a41086a2220201e3703002001201d3703a001200f102f41c000102d220f450d02200f20012903c001370000200f41086a201a290300370000200f200129038801370010200f41186a201b290300370000200f20012903a001370020200f41286a2020290300370000200f41306a2017290300370000200f41386a201629030037000020012014410020151b3602e001200fad428080808080088420191004200f102f2001200e42002018a71b3703e801200142013703e0012001201c3602f001200442003703002006420037030020034200370300200142003703f002200d1001220f290000210e2003200f41086a2900003703002001200e3703f002200f102f41adcac800ad42808080809001841001220f290000210e200c200f41086a2900003703002001200e37039003200f102f20092001290390033700002010200c290300370000201120032903003703002012200629030037030020132004290300370300200120012903f0023703d00220014120360294032001200141d0026a36029003200141e0016a20014190036a10bb03200442003703002006420037030020034200370300200142003703f002200d1001220f290000210d2003200f41086a2900003703002001200d3703f002200f102f41f2b0c000ad4280808080e001841001220f290000210d200c200f41086a2900003703002001200d37039003200f102f20092001290390033700002010200c290300370000201120032903003703002012200629030037030020132004290300370300200120012903f0023703d002200141e0016a200141d0026a412010aa0220012802e0012203410120031b21210240024020012902e401420020031b221f422088a722220d004200210e0c010b2022410574212320014188016a41086a2106200141e0016a41246a212420014190036a41246a2125420021054200210e20212104034041eba1ca00ad4280808080f00084221810012203290000210d200141c0016a41086a2212200341086a2900003703002001200d3703c0012003102f4198b1c000ad4280808080f0008410012203290000210d2006200341086a2900003703002001200d370388012003102f4120102d2203450d0420032004290000370000200341186a200441186a220c290000370000200341106a200441106a220f290000370000200341086a200441086a22102900003700002003ad428080808080048410032211290000210d201141086a2900002119201141106a290000211d200141a0016a41186a2213201141186a290000370300200141a0016a41106a2214201d370300200141a0016a41086a221520193703002001200d3703a0012011102f2003102f41c000102d2203450d04200320012903c001370000200341086a20122903003700002003200129038801370010200341186a2006290300370000200320012903a001370020200341286a2015290300370000200341306a2014290300370000200341386a2013290300370000200141e0016a200341c00010bc03200141f0026a41086a2217200141e0016a41086a2226290300370300200141f0026a41106a221a200141e0016a41106a2227290300370300200141f0026a41186a221b200141e0016a41186a2228290300370300200141d0026a41086a2211202441086a280200360200200120012903e0013703f002200120242902003703d002024002402001280280022216450d00202520012903d00237020020014190036a41186a201b29030037030020014190036a41106a201a29030037030020014190036a41086a2017290300370300202541086a2011280200360200200120012903f00237039003200120163602b0030c010b20014190036a41186a420037030020014190036a41106a420037030020014190036a41086a42003703002001420037039003200141003602b803200142083703b0030b2003102f20014190036a41086a22292903002119200129039003210d200141d0026a201c10bd034120102d2203450d0420032004290000370000200341186a200c290000370000200341106a200f290000370000200341086a201029000037000020012003ad428080808080048410062211290000370388012011102f200141003a00f0012001200341206a3602ec01200120033602e801200120063602e401200120014188016a3602e001200141f0026a200141e0016a106c2003102f20012802f002212a0240024020012802d402221620012802d80222116b20012802f8022220490d0020012802d00221030c010b201120206a22032011490d072016410174222b2003202b20034b1b222b4100480d070240024020160d00202b102d21030c010b20012802d0022016202b103121030b2003450d052001202b3602d402200120033602d002202b21160b2001201120206a222b3602d802200320116a202a202010e8061a024020012802f402450d00202a102f0b2001202b3602e401200120033602e00120014190036a200141e0016a10be0302402016450d002003102f0b201b20014190036a41186a290300370300201a20014190036a41106a2903003703002017202929030037030020012001290390033703f00220012802bc03211620012802b403212020012802b0032111024020012802b803220341c100490d0020112003410041202003676b10bf0341c00021030b2028201b2903003703002027201a29030037030020262017290300370300200120012903f0023703e0012001201636028c02200120033602880220012020360284022001201136028002200141a0016a201c10c0034120102d2203450d0420032004290000370000200341186a200c290000370000200341106a200f290000370000200341086a201029000037000020012003ad428080808080048410062211290000370388012011102f200141003a00e0022001200341206a3602dc02200120033602d802200120063602d402200120014188016a3602d002200141c0016a200141d0026a106c2003102f20012802c001211a0240024020012802a401221620012802a80122116b20012802c8012217490d0020012802a00121030c010b201120176a22032011490d072016410174221b2003201b20034b1b221b4100480d070240024020160d00201b102d21030c010b20012802a0012016201b103121030b2003450d052001201b3602a401200120033602a001201b21160b2001201120176a221b3602a801200320116a201a201710e8061a024020012802c401450d00201a102f0b2001201b3602d402200120033602d002200141e0016a200141d0026a10be0302402016450d002003102f0b0240200128028402450d00200128028002102f0b20181001220329000021182012200341086a290000370300200120183703c0012003102f41a5c6c800ad4280808080a001841001220329000021182006200341086a29000037030020012018370388012003102f4120102d2203450d0420032004290000370000200341186a200c290000370000200341106a200f290000370000200341086a20102900003700002003ad4280808080800484100322112900002118201141086a290000211d201141106a290000211e2013201141186a2900003703002014201e3703002015201d370300200120183703a0012011102f2003102f41c000102d2203450d04200320012903c001370000200341086a20122903003700002003200129038801370010200341186a2006290300370000200320012903a001370020200341286a2015290300370000200341306a2014290300370000200341386a2013290300370000200141d0006a200341c00010c10320012802542113200128025021142003102f200141c0016a201c10c2034120102d2203450d0420032004290000370000200341186a200c290000370000200341106a200f290000370000200341086a201029000037000020012003ad42808080808004841006220c29000037038801200c102f200141003a00f0012001200341206a3602ec01200120033602e801200120063602e401200120014188016a3602e001200141d0026a200141e0016a106c2003102f20012802d00221120240024020012802c401220f20012802c801220c6b20012802d8022211490d0020012802c00121030c010b200c20116a2203200c490d07200f41017422102003201020034b1b22104100480d0702400240200f0d002010102d21030c010b20012802c001200f2010103121030b2003450d05200120103602c401200120033602c0012010210f0b2013410020141b21102001200c20116a22133602c8012003200c6a2012201110e8061a024020012802d402450d002012102f0b200d20057c2105200141003a00e5010240024002400240201041c000490d00201041808001490d012010418080808004490d02200141053a00e501200141033a00e001200120103600e1014280808080d00021180c030b200141013a00e501200120104102743a00e00142808080801021180c020b200141023a00e501200120104102744101723b01e00142808080802021180c010b200141043a00e501200120104102744102723602e0014280808080c00021180b2005200d54210c2013ad4220862003ad8420182007841004024020012d00e501450d00200141003a00e5010b2019200e7c210d200cad210e0240200f450d002003102f0b200441206a2104200d200e7c210e202341606a22230d000b0b41eba1ca00ad4280808080f00084220d100122032900002118200141c0016a41086a2204200341086a290000370300200120183703c0012003102f41f5cac800ad4280808080e0018410012203290000211820014188016a41086a2206200341086a29000037030020012018370388012003102f2001201c3602e00120074280808080c00084100322032900002118200341086a2900002119200341106a290000211d200141a0016a41186a220c200341186a290000370300200141a0016a41106a220f201d370300200141a0016a41086a22102019370300200120183703a0012003102f41c000102d2203450d02200320012903c001370000200341086a20042903003700002003200129038801370010200341186a2006290300370000200320012903a001370020200341286a2010290300370000200341306a200f290300370000200341386a200c2903003700002001200e3703e801200120053703e0012003ad42808080808008842007428080808080028410042003102f200141f0026a41186a22064200370300200141f0026a41106a220c4200370300200141f0026a41086a22034200370300200142003703f002200d1001220429000021052003200441086a290000370300200120053703f0022004102f41d5a1ca00ad4280808080e0028410012204290000210520014190036a41086a220f200441086a29000037030020012005370390032004102f2009200129039003370000200941086a200f290300370000200141d0026a41086a2003290300370300200141d0026a41106a200c290300370300200141d0026a41186a2006290300370300200120012903f0023703d002200141203602a4012001200141d0026a3602a001200141f0026a200b100210730240024020012802f00222030d004100210f0c010b20012802f40221062001200141f8026a28020022043602c401200120033602c0010240024020044104490d0020012004417c6a3602c4012001200341046a3602c00120032800002111200141c8006a200141c0016a10e60120012802480d0020012802c401220c200128024c22104102742204490d002004417f4c0d060240024020040d004101210f0c010b20041033220f450d06200f20012802c0012212200410e8061a2001200c20046b3602c4012001201220046a3602c0010b200f450d000240024002402004450d00200f4103710d02201041ffffffff037122040d01200f102f0b410021044104210f0b41000d01200f450d012004ad220542208620058421050c020b200f102f0b4100210f200141003602980320014201370390032001410b36029c012001200141a0016a36029801200120014190036a36028801200141f4016a4101360200200142013702e401200141b885c7003602e001200120014198016a3602f00120014188016a41d8dbc100200141e0016a103c1a2001350298034220862001350290038410080240200128029403450d00200128029003102f0b0b2006450d002003102f0b4190bdc600210420014190bdc6003602f002200142003702f402200f4104200f1b211b4100210c41002110024020054200200f1b222c422088a72203202241ffffff3f712206200620034b1b2206450d0020212103201b2104034020014190036a41186a200341186a290000220537030020014190036a41106a200341106a290000220d37030020014190036a41086a200341086a290000220e370300200120032900002218370390032004280200210c200141e0016a41186a2005370300200141e0016a41106a200d370300200141e0016a41086a200e370300200120183703e001200141f0026a200141e0016a200c10ed01200341206a2103200441046a21042006417f6a22060d000b20012802f802210c20012802f402211020012802f00221040b41eba1ca00ad4280808080f00084100122032900002105200141c0016a41086a2206200341086a290000370300200120053703c0012003102f41e5cac800ad428080808080028410012203290000210520014188016a41086a2212200341086a29000037030020012005370388012003102f2001201c3602e00120074280808080c00084100322032900002105200341086a290000210d200341106a290000210e200141a0016a41186a2213200341186a290000370300200141a0016a41106a2214200e370300200141a0016a41086a2215200d370300200120053703a0012003102f41c000102d2203450d02200320012903c001370000200341086a20062903003700002003200129038801370010200341186a2012290300370000200320012903a001370020200341286a2015290300370000200341306a2014290300370000200341386a2013290300370000200141003602e801200142013703e0014104102d2206450d02200620114100200f1b36000020014284808080c0003702e401200120063602e00120042010200c200141e0016a10e50120012802e40121062003ad428080808080088420013502e80142208620012802e001220fad84100402402006450d00200f102f0b2003102f20042010200c10a302200141e0016a41186a4200370300200141e0016a41106a22064200370300200141e0016a41086a22034200370300200142003703e00141eba1ca00ad4280808080f000841001220429000021052003200441086a290000370300200120053703e0012004102f41a7cac800ad4280808080e0008410012204290000210520014188016a41086a220c200441086a29000037030020012005370388012004102f20062001290388012205370300200141c0016a41086a22042003290300370300200141c0016a41106a22032005370300200141c0016a41186a2206200c290300370300200120012903e0013703c0014120102d2210450d02201020012903c001370000201041186a2006290300370000201041106a2003290300370000201041086a2004290300370000200141e0016a2010ad42808080808004841018107302400240024020012802e001220f0d0041002103410021140c010b20014194026a21134100211441202112024003400240024020012902e4012205422088a722114120490d00200141c0016a200f460d01200141c0016a200f412010ea06450d010b2005a7450d02200f102f0c020b200120113602c4032001200f3602c00320014188016a200542808080807083200fad84220d10021073024002402001280288012206450d00200128028c0121152001200128029001220c3602c402200120063602c00241002103200141003a00800202400240024002400340200c2003460d01200141e0016a20036a200620036a22042d00003a00002001200441016a3602c0022001200341016a22043a0080022004210320044120470d000b200141a0016a41086a2216200141e0016a41086a290300370300200141a0016a41106a2217200141e0016a41106a290300370300200141a0016a41186a221a200141e0016a41186a290300370300200120012903e0013703a0012001200c20046b3602c402200141306a200141c0026a109c032001290330a70d02200141306a41106a290300212d2001290338212e200141186a200141c0026a109c032001290318a7450d010c020b200141003602c402200341ff0171450d01200141003a0080020c010b200141186a41106a290300212f20012903202130200141e0016a200141c0026a10c30320012802e0012203450d00200141f0026a41086a2016290300370300200141f0026a41106a2017290300370300200141f0026a41186a201a290300370300200120012903a001220e370390032001200e3703f00220012902e401210e20302118202f2119202e211d202d211e0c010b200141003602980320014201370390032001410b36029c012001200141c0036a36029801200120014190036a3602f002200141013602f401200142013702e401200141b885c7003602e001200120014198016a3602f001200141f0026a41d8dbc100200141e0016a103c1a2001350298034220862001350290038410080240200128029403450d00200128029003102f0b410021030b02402015450d002006102f0b2003450d00201320012903f002370200200141e0016a41186a2019370300201341186a200141f0026a41186a290300370200201341106a200141f0026a41106a290300370200201341086a200141f0026a41086a290300370200200120183703f0012001201d3703e0012001410036028c022001200e3702840220012003360280022001201e3703e80120012011360294032001200f36029003200141e0016a20014190036a10c403200128028402450d01200128028002102f0c010b200d1005201441016a21140b02402012450d002010102f0b200141e0016a200d101810732005a72112200f211020012802e001220f0d000b0b201441004721032012450d010b2010102f0b02402003450d0041d0fcc000ad4280808080e0068410084186fdc000ad4280808080b0048410082014ad10190b200141f0026a41186a22044200370300200141f0026a41106a22064200370300200141f0026a41086a22034200370300200142003703f00241eba1ca00ad4280808080f0008422051001220c290000210d2003200c41086a2900003703002001200d3703f002200c102f4198b1c000ad4280808080f000841001220f290000210d20014190036a41086a220c200f41086a2900003703002001200d37039003200f102f2009200129039003370000200941086a2212200c290300370000200141d0026a41086a220f2003290300370300200141d0026a41106a22102006290300370300200141d0026a41186a22112004290300370300200120012903f0023703d002200b1013200442003703002006420037030020034200370300200142003703f002200510012213290000210d2003201341086a2900003703002001200d3703f0022013102f418fb1c000ad428080808090018410012213290000210d200c201341086a2900003703002001200d370390032013102f20092001290390033700002012200c290300370000200f20032903003703002010200629030037030020112004290300370300200120012903f0023703d002200b1005200442003703002006420037030020034200370300200142003703f002200510012213290000210d2003201341086a2900003703002001200d3703f0022013102f41f2b0c000ad4280808080e0018410012213290000210d200c201341086a2900003703002001200d370390032013102f20092001290390033700002012200c290300370000200f20032903003703002010200629030037030020112004290300370300200120012903f0023703d002200b1005200442003703002006420037030020034200370300200142003703f002200510012213290000210d2003201341086a2900003703002001200d3703f0022013102f4180b1c000ad4280808080f0018410012213290000210d200c201341086a2900003703002001200d370390032013102f20092001290390033700002012200c290300370000200f20032903003703002010200629030037030020112004290300370300200120012903f0023703d002200b1005200442003703002006420037030020034200370300200142003703f002200510012213290000210d2003201341086a2900003703002001200d3703f0022013102f41baa1ca00ad4280808080b0038410012213290000210d200c201341086a2900003703002001200d370390032013102f20092001290390033700002012200c290300370000200f20032903003703002010200629030037030020112004290300370300200120012903f0023703d002200b1005200442003703002006420037030020034200370300200142003703f002200510012213290000210d2003201341086a2900003703002001200d3703f0022013102f41d5a1ca00ad4280808080e0028410012213290000210d200c201341086a2900003703002001200d370390032013102f20092001290390033700002012200c290300370000200f20032903003703002010200629030037030020112004290300370300200120012903f0023703d002200b1005200141a0016a41186a4200370300200141a0016a41106a22064200370300200141a0016a41086a22034200370300200142003703a00120051001220429000021052003200441086a290000370300200120053703a0012004102f41aca1ca00ad4280808080e0018410012204290000210520014188016a41086a220c200441086a29000037030020012005370388012004102f20062001290388012205370300200f2003290300370300201020053703002011200c290300370300200120012903a0013703d0024101102d2203450d02200341013a0000200a42808080808004842003ad4280808080108410042003102f0240202ca7450d00201b102f0b201fa7450d002021102f0b200141c0016a41186a4200370300200141c0016a41106a22064200370300200141c0016a41086a22034200370300200142003703c00141e7a2ca00ad42808080808001841001220429000021052003200441086a290000370300200120053703c0012004102f41aca1ca00ad4280808080e0018410012204290000210520014190036a41086a220c200441086a29000037030020012005370390032004102f20062001290390032205370300200141a0016a41086a2003290300370300200141a0016a41106a2005370300200141a0016a41186a200c290300370300200120012903c0013703a001200141203602d4022001200141a0016a3602d002200141f0026a200141a0016aad42808080808004841002107341022103024020012802f0022204450d0020012802f402210602400240200141f0026a41086a280200450d0020042d0000220c41014b0d00410021030240200c0e020200020b410121030c010b200141003602980320014201370390032001410b36029c012001200141d0026a36029801200120014190036a3602c001200141f4016a4101360200200142013702e401200141b885c7003602e001200120014198016a3602f001200141c0016a41d8dbc100200141e0016a103c1a2001350298034220862001350290038410080240200128029403450d00200128029003102f0b410221030b2006450d002004102f0b0240024020034102460d0020034101710d010b41b1dac000ad4280808080d003841008200141a0016a41186a22064200370300200141a0016a41106a22294200370300200141a0016a41086a22044200370300200142003703a00141e7a2ca00ad42808080808001841001220329000021052004200341086a290000370300200120053703a0012003102f41cedac000ad4280808080b0018410012203290000210520014190036a41086a220c200341086a29000037030020012005370390032003102f2006200c29030022053703002029200129039003220d370300200141c0016a41186a220c2005370300200141c0016a41106a220f200d370300200141c0016a41086a22102004290300370300200120012903a0013703c0014120102d2203450d02200320012903a001370000200341186a2006290300370000200341106a2029290300370000200341086a2004290300370000200141f0026a41086a22042010290300370300200141f0026a41106a2206200f290300370300200141f0026a41186a220f200c290300370300200120012903c0013703f002200141bc026a41026a220c200141e0016a41026a2d00003a0000200120012f00e0013b01bc02200142a0808080800437029403200120033602900320014190036a41146a200429030037020020014190036a411c6a2006290300370200200141b4036a200f290300370200200141013a00bc03200120012903f00237029c03200141bf036a200c2d00003a0000200120012f01bc023b00bd03200141e0016a20014190036a10c503024020012802e001450d0020074280808080c00084211e200141e0016a41186a211c20014198026a212720014188026a2128200141e3016a211a0340200141d0026a41086a200141e0016a41086a290300220d370300200120012903e00122053703d002201c290300210720012903f001210b200141c0026a41086a200da72206360200200120053703c002200641206a2204417f4c0d05024002400240024002400240024002402004450d00200410332203450d0c2004410f4d0d0141e7a2ca00ad42808080808001841001220c290000210d200141c0016a41086a2213200c41086a2900003703002001200d3703c001200c102f200341086a2013290300370000200320012903c0013700002004411f4d0d0241f9b5c600ad4280808080d0008422191001220c290000210d20014188016a41086a2214200c41086a2900003703002001200d37038801200c102f200341186a20142903003700002003200129038801370010200341206a2005a7200610e8061a200120033602c003200120043602c403200141a0016a2004ad4220862003ad84100210730240024020012802a00122160d004100211b0c010b20012802a4012126200120012802a80136028c012001201636028801200141106a20014188016a10e6010240024020012802100d0020012802142215200128028c014105762204200420154b1b22104105742204417f4c0d100240024020100d004108211b0c010b2004102d221b450d100b024002402015450d0041002112410021114100210f0340200141e0016a20014188016a10f30220012d00e0014101460d02200128028c0122064110490d0220012900e10121052001200128028801220441106a360288012001200641706a220c36028c01200c4104490d02200441086a290000210d2004290000210e20012006416c6a220c36028c012001200441146a36028801200c450d02200f41016a210c20042800102117200141c8036a41026a200141c0016a41026a2d0000222a3a0000200141cc036a41026a2224202a3a000020012006416b6a36028c012001200441156a36028801200120012f00c00122063b01c803200120063b01cc0320042d001421060240200f2010470d002012200c2012200c4b1b220441ffffff3f712004470d15200441057422044100480d1502400240200f0d002004102d211b0c010b201b201120041031211b0b201b450d13200441057621100b201b20116a2204411c6a20063a00002004200d3703082004200e370300200441146a2005370200200441106a20173602002004411d6a20012f01cc033b00002004411f6a20242d00003a0000201241026a2112201141206a2111200c210f2015200c470d000b0b201b450d010c020b2010450d00201b102f0b200141003602c801200142013703c0012001410b36029c012001200141c0036a360298012001200141c0016a3602c803200141013602f401200142013702e401200141b885c7003602e001200120014198016a3602f001200141c8036a41d8dbc100200141e0016a103c1a20013502c80142208620013502c001841008024020012802c401450d0020012802c001102f0b4100211b20232110202021150b02402026450d002016102f0b20102123201521200b2003102f0240201b0d004200211d4200210e420021194200210d0c080b20204105742103410021110240024020200d004108212a410021240c010b2003410575220441ffffff3f712004470d0f20034100480d0f2003102d222a450d0d200341057621240b0240201b20036a2217201b460d0041002111202a2103201b21040340200441086a2903002105200441146a290200210d200441106a280200210f2004290300210e4100211002402004411c6a2d000022064101460d004102410120064101711b21100b0240200f417f460d0020012802c802221541206a220c417f4c0d10200c450d0620012802c0022116200c10332206450d0f200c410f4d0d07419298ca00ad42808080809001841001221229000021182013201241086a290000370300200120183703c0012012102f200641086a2013290300370000200620012903c001370000200c411f4d0d0820191001221229000021182014201241086a29000037030020012018370388012012102f200641186a20142903003700002006200129038801370010200641206a2016201510e8061a2001200f3602e001200cad4220862006ad84201e10042006102f0b200120012800e0013602c0012001201a2800003600c301200341186a20103a0000200320053703082003200e370300200341106a200d370300200341196a20012802c0013600002003411c6a20012800c301360000200341206a2103201141016a2111200441206a22042017470d000b0b02402023450d00201b102f0b024020110d004200211d4200210e420021194200210d0c070b20114105742104420021194200210d4200211d4200210e202a210303400240200341186a2d0000220641024b0d00024002400240024020060e03020100020b200e200341086a2903002205201d2003290300221856200e200556200e2005511b22061b210e201d201820061b211d0c020b200e200341086a2903002205201d2003290300221856200e200556200e2005511b22061b210e201d201820061b211d0c020b200341086a2903002105200329030021180b200d20052019201856200d200556200d2005511b22061b210d2019201820061b21190b200341206a2103200441606a2204450d070c000b0b41104100104a000b41102004104a000b41202004104a000b41104100104a000b4110200c104a000b4120200c104a000b20012802c802210320012802c0022104200120113602e801200120243602e4012001202a3602e00120042003200141e0016a10c6030b20012802c802210320012802c00221042027200d3703002028200e370300201c420037030020012019370390022001201d37038002200142003703f001200120073703e8012001200b3703e00120042003200141e0016a10c703024020012802c402450d0020012802c002102f0b200141e0016a20014190036a10c50320012802e0010d000b0b0240200128029403450d00200128029003102f0b200141a0016a41186a22064200370300200141a0016a41106a220c4200370300200141a0016a41086a22044200370300200142003703a00141e7a2ca00ad42808080808001841001220329000021052004200341086a290000370300200120053703a0012003102f41d9dac000ad4280808080f0018410012203290000210520014190036a41086a220f200341086a29000037030020012005370390032003102f202941086a200f2903003700002029200129039003370000200141c0016a41186a220f2006290300370300200141c0016a41106a2210200c290300370300200141c0016a41086a22112004290300370300200120012903a0013703c0014120102d2203450d02200320012903a001370000200341186a2006290300370000200341106a200c290300370000200341086a2004290300370000200141d0026a41086a22042011290300370300200141d0026a41106a22062010290300370300200141d0026a41186a220c200f290300370300200120012903c0013703d002200141c0016a41026a220f200141e0016a41026a2d00003a0000200120012f00e0013b01c001200142a08080808004370294032001200336029003200141a4036a2004290300370200200141ac036a2006290300370200200141b4036a200c290300370200200141013a00bc03200120012903d00237029c03200141bf036a200f2d00003a0000200120012f01c0013b00bd03200141e0016a20014190036a10c503024020012802e0012204450d0020014180026a210320014188026a2106200141e0016a41186a210c0340200c290300210520012903f001210d20012802e401210f200141e0016a200420012802e801221010c8030240024020012903e0014201510d004200210e200141f0026a41186a4200370300200141f0026a41106a4200370300200141f0026a41086a4200370300200142003703f002420021180c010b200141f0026a41086a200641086a290300370300200141f0026a41106a200641106a290300370300200141f0026a41186a200641186a290300370300200120062903003703f002200141e0016a41106a290300211820012903e801210e0b200c2005370300200320012903f002370300200341086a200141f0026a41086a290300370300200341106a200141f0026a41106a290300370300200341186a200141f0026a41186a2903003703002001200d3703f001200120183703e8012001200e3703e00120042010200141e0016a10c7030240200f450d002004102f0b200141e0016a20014190036a10c50320012802e00122040d000b0b0240200128029403450d00200128029003102f0b200141a0016a41186a22064200370300200141a0016a41106a220c4200370300200141a0016a41086a22044200370300200142003703a00141e7a2ca00ad42808080808001841001220329000021052004200341086a290000370300200120053703a0012003102f41adc5c300ad4280808080f0008410012203290000210520014190036a41086a220f200341086a29000037030020012005370390032003102f202941086a200f2903003700002029200129039003370000200141c0016a41186a220f2006290300370300200141c0016a41106a2210200c290300370300200141c0016a41086a22112004290300370300200120012903a0013703c0014120102d2203450d02200320012903a001370000200341186a2006290300370000200341106a200c290300370000200341086a2004290300370000200141d0026a41086a22042011290300370300200141d0026a41106a22062010290300370300200141d0026a41186a220c200f290300370300200120012903c0013703d002200141a0016a41026a220f200141e0016a41026a2d00003a0000200120012f00e0013b01a001200142a08080808004370294032001200336029003200141a4036a200429030037020020014190036a411c6a200629030037020020014190036a41246a200c290300370200200141013a00bc03200120012903d00237029c03200141bf036a200f2d00003a0000200120012f01a0013b00bd03200141e0016a20014190036a10c903024020012802e001220c450d00200141e0016a41086a211320014188026a2116200141e0016a41186a2117200141a0026a212a20014190026a2123200141e3016a212020014198026a211c0240024003402016290300211920172903002105200129038002211d20012903f001210d200128029002211a20012802e401211b200141e0016a200c20012802e801220f10c8030240024020012903e0014201510d004200211e200141f0026a41186a4200370300200141f0026a41106a4200370300200141f0026a41086a4200370300200142003703f00242002107420021184200210e0c010b200141f0026a41186a201341186a290300370300200141f0026a41106a201341106a290300370300200141f0026a41086a201341086a290300370300200120132903003703f002202a29030021072023290300210e200129039802211e20012903880221180b200f41206a2203417f4c0d0702402003450d00200310332204450d072003410f4d0d0241e7a2ca00ad428080808080018410012210290000210b200141c0016a41086a2206201041086a2900003703002001200b3703c0012010102f200441086a2006290300370000200420012903c0013700002003411f4d0d0341f9b5c600ad4280808080d0008410012210290000210b20014188016a41086a2211201041086a2900003703002001200b370388012010102f200441186a20112903003700002004200129038801370010200441206a200c200f10e8061a200141e0016a2004200310ca032004102f02400240024020012802e00122100d0041002104410821100c010b20012802e4012204211520012802e80122122004470d010b200441016a22122004490d0a200441017422142012201420124b1b221241ffffff3f712012470d0a201241057422124100480d0a0240024020040d002012102d21100c010b201020044105742012103121100b2010450d0820124105762115200421120b201020124105746a220441013a0018200420053703082004200d370300200442f6cacda397cddbb320370310200420012800e0013600192004411c6a2020280000360000200310332204450d0741adc5c300ad4280808080f00084220b10012214290000210a2006201441086a2900003703002001200a3703c0012014102f200441086a2006290300370000200420012903c001370000200b10012206290000210b2011200641086a2900003703002001200b370388012006102f200441186a20112903003700002004200129038801370010200441206a200c200f10e8061a4124102d2206450d072006201d3700102006200d3700002006201a360020200641186a2019370000200620053700082003ad4220862004ad842006ad4280808080c0048410042006102f2004102f2001201241016a3602e801200120153602e401200120103602e001200c200f200141e0016a10c603201c20073703002016200e20052018200d56200e200556200e2005511b22031b3703002017200141f0026a41186a290300370300200141e0016a41106a200141f0026a41106a2903003703002013200141f0026a41086a2903003703002001201e3703900220012018200d20031b37038002200120012903f0023703e001200c200f200141e0016a10c7030240201b450d00200c102f0b200141e0016a20014190036a10c90320012802e001220c0d010c040b0b41104100104a000b41102003104a000b41202003104a000b0240200128029403450d00200128029003102f0b200141a0016a41186a22064200370300200141a0016a41106a220c4200370300200141a0016a41086a22044200370300200142003703a00141e7a2ca00ad42808080808001841001220329000021052004200341086a290000370300200120053703a0012003102f41f0e8c600ad4280808080f0008410012203290000210520014190036a41086a220f200341086a29000037030020012005370390032003102f202941086a200f2903003700002029200129039003370000200141c0016a41186a220f2006290300370300200141c0016a41106a2210200c290300370300200141c0016a41086a22112004290300370300200120012903a0013703c0014120102d2203450d02200320012903a001370000200341186a2006290300370000200341106a200c290300370000200341086a2004290300370000200141f0026a41086a22042011290300370300200141f0026a41106a22062010290300370300200141f0026a41186a220c200f290300370300200120012903c0013703f002200141d0026a41026a220f200141e0016a41026a2d00003a0000200120012f00e0013b01d002200142a08080808004370294032001200336029003200141a4036a2004290300370200200141ac036a2006290300370200200141b4036a200c290300370200200141013a00bc03200120012903f00237029c03200141bf036a200f2d00003a0000200120012f01d0023b00bd03200141e0016a20014190036a10cb03024020012802e001220c450d00200141a8026a211a20014198026a211b20014188026a2120200141e0016a41186a211c41e7eac300ad4280808080d00184210a0340201a2903002105201b290300210d2020290300210e201c290300211820012903a0022119200129039002211d200129038002211e20012903f001210720012802e4012112200141086a418de6c300410641e8dac000410c200c20012802e801220310cc03200128020c211320012802082114419298ca00410941d49ac8004105200c200310722110200a10062204290000210b2004102f4108102d2204450d042004200b37000020044108411510312206450d042006410d6a41002900ecea43370000200641002900e7ea433700080240024020030d00411521040c010b200341156a22042003490d072004412a2004412a4b1b220f4100480d0720064115200f10312206450d050b200641156a200c200310e8061a419c9eca0041074186ebc3004108200620041072211541eba1ca00410741a1cac8004106200c200310722116200341206a220f417f4c0d05200f450d07200f10332204450d04200f410f4d0d08418de6c300ad4280808080e0008410012211290000210b200141c0016a41086a2217201141086a2900003703002001200b3703c0012011102f200441086a2017290300370000200420012903c001370000200f411f4d0d0941f0e8c600ad4280808080f0008410012211290000210b20014188016a41086a2217201141086a2900003703002001200b370388012011102f200441186a20172903003700002004200129038801370010200441206a200c200310e8061a4105102d2203450d0420034102410120101b201020151b20166a3a000420032013410020141b36000020034105411510312203450d04200320073700052003410d6a201837000020034115412a10312203450d042003201e3700152003411d6a200e3700002003412a41d40010312203450d04200320193700352003201d3700252003413d6a20053700002003412d6a200d370000200fad4220862004ad842003ad4280808080d0088410042003102f2004102f2006102f02402012450d00200c102f0b200141e0016a20014190036a10cb0320012802e001220c0d000b0b0240200128029403450d00200128029003102f0b200141e7a2ca00410841f2a1ca00410a41c8e1ca00410010cc03200141d0026a41186a22064200370300200141d0026a41106a220c4200370300200141d0026a41086a22034200370300200142003703d00241e7a2ca00ad42808080808001841001220429000021052003200441086a290000370300200120053703d0022004102f41aca1ca00ad4280808080e0018410012204290000210520014188016a41086a220f200441086a29000037030020012005370388012004102f2002200129038801370000200241086a200f290300370000200141e0016a41086a2003290300370300200141e0016a41106a200c290300370300200141e0016a41186a2006290300370300200120012903d0023703e0014101102d2203450d02200341013a000020082003ad4280808080108410042003102f0b10cd030b2000280200200041106a200041d0006a200141f8006a410110ce03200028020010cf0310cd0310cd032001280278210c02402001280280012203450d00200341246c2104200c210303400240024020032d0000220641044b0d0002400240024020060e050400010204040b2003410c6a280200450d03200341086a280200102f0c030b2003410c6a280200450d02200341086a280200102f0c020b2003410c6a280200450d01200341086a280200102f0c010b200341086a280200450d00200341046a280200102f0b200341246a21032004415c6a22040d000b0b0240200128027c450d00200c102f0b200141d0036a24000f0b1036000b103d000b1038000b41104100104a000b4110200f104a000b4120200f104a000bf103030d7f017e017f230041306b2202240041042103200241086a200141046a10d60302400240024002400240200228020c41246c22040d0041002105410021060c010b200228020821014100210541002106410421030340024020012d00004101470d00200141106a2802002207417f4c0d03200141036a2d00002108200141016a2f00002109200141086a280200210a200141046a2d0000210b0240024020070d004101210c0c010b2007102d220c450d050b200c200a200710e806210c200241206a41086a220d200241106a41086a29020037030020022002290210370320024020052006470d00200641016a220a2006490d062006410174220e200a200e200a4b1bad42247e220f422088a70d06200fa7220a4100480d060240024020060d00200a102d21030c010b2003200641246c200a103121030b2003450d05200a41246e21060b2003200541246c6a220a2007360210200a200736020c200a200c360208200a201041807e71200b722210360204200a200920084110747222073b0001200a41013a0000200a41036a20074110763a0000200a2002290320370214200a411c6a200d290300370200200541016a21050b200141246a21012004415c6a22040d000b0b200020053602082000200636020420002003360200200241306a24000f0b103d000b1036000b1038000b9a0102027f017e2000280210210202404104102d2203450d002003200236000020002903002104200341044108103121030240024020044201510d002003450d02200341003a00044280808080d00021040c010b2003450d01200341013a00042000290308210420034108411010312203450d01200320043700054280808080d00121040b200129020020042003ad8410042003102f0f0b1036000b870301017f230041f0006b220324002003200236020420032001360200200341086a2002ad4220862001ad84100210730240024020032802082201450d00200328020c21022003200341086a41086a28020036024c20032001360248200341186a200341c8006a108a05024002402003280238450d0020002003290318370300200041286a200341186a41286a290300370300200041206a200341186a41206a290300370300200041186a200341186a41186a290300370300200041106a200341186a41106a290300370300200041086a200341186a41086a2903003703000c010b20034100360258200342013703502003410b360264200320033602602003200341d0006a36026c2003412c6a41013602002003420137021c200341b885c7003602182003200341e0006a360228200341ec006a41d8dbc100200341186a103c1a2003350258422086200335025084100802402003280254450d002003280250102f0b200041003602200b2002450d012001102f0c010b200041003602200b200341f0006a24000bd10403027f017e047f230041d0006b2202240041eba1ca00ad4280808080f00084100122032900002104200241086a200341086a290000370300200220043703002003102f41b6cac800ad4280808080b00184100122032900002104200241106a41086a200341086a290000370300200220043703102003102f2002200136022c20022002412c6aad4280808080c00084100622032900003703302003102f200241c4006a200241306a360200200241003a00482002200241306a41086a36023c20022002412c6a3602402002200241306a360238200241206a200241386a106c0240024002400240024002402002280228220541206a2201417f4c0d0020022802202106024002402001450d002001102d2203450d062001410f4d0d01200121070c050b411021074110102d21030c030b200141017422084110200841104b1b220741004e0d010c050b103d000b200320012007103121030b2003450d010b20032002290300370000200341086a200241086a2903003700000240024020074170714110460d00200721080c010b200741017422084120200841204b1b22084100480d0220032007200810312203450d010b20032002290310370010200341186a200241106a41086a29030037000002400240200841606a2005490d00200821070c010b2005415f4b0d02200841017422072001200720014b1b22074100480d0220032008200710312203450d010b200341206a2006200510e8061a20002001360208200020073602042000200336020002402002280224450d002006102f0b200241d0006a24000f0b1036000b1038000b8e0301067f230041106b2202240020024100360208200242013703002002200036020c2002410c6a200210c2022002200041106a36020c2002410c6a200210c20220002802202103200041286a2802002200200210690240024002402000450d00200041306c210403400240024020022802042205200228020822006b4120490d00200041206a2106200228020021050c010b200041206a22062000490d04200541017422072006200720064b1b22074100480d040240024020050d002007102d21050c010b200228020020052007103121050b2005450d0320022007360204200220053602000b200520006a220041086a200341186a290000370000200041106a200341206a290000370000200041186a200341286a290000370000200220063602082000200341106a2900003700002002200336020c2002410c6a200210c202200341306a2103200441506a22040d000b0b200228020421032001290200200235020842208620022802002200ad84100402402003450d002000102f0b200241106a24000f0b1036000b1038000be22c080a7f017e017f047e147f017e017f017e230041d0026b220424000240024020014115490d0041012105410121060240024002400340200121072000210820052006714101732109024002400240024002400240034002400240024002402003450d00024020054101710d002000200110dd032003417f6a21030b2001410276220a41036c210b200a410174210c4100210d024020014132490d00410241012000200a41306c6a220d290300220e200d41506a220f290300221056200d41086a2903002211200f41086a29030022125620112012511b220f1b200f200d41306a29030022132010200e200f1b221056200d41386a290300220e20122011200f1b221156200e2011511b22141b2013201020141b2000200a200a417f6a2215200f1b221641306c6a220d29030056200e201120141b2211200d41086a29030022125620112012511b22176a2000200c41306c6a220d290300220e200d41506a2218290300221056200d41086a2903002211201841086a29030022125620112012511b22186a2000200c410172221941306c6a220d29030022132010200e20181b221056200d41086a290300220e2012201120181b221156200e2011511b221a6a20132010201a1b2000200c200c417f6a221b20181b221c41306c6a220d29030056200e2011201a1b2211200d41086a29030022125620112012511b221d6a2000200b41306c6a220d290300220e200d41506a221e290300221056200d41086a2903002211201e41086a29030022125620112012511b221e6a200d41306a29030022132010200e201e1b221056200d41386a290300220e20122011201e1b221156200e2011511b221f6a20132010201f1b2000200b200b417f6a2220201e1b222141306c6a220d29030056200e2011201f1b2211200d41086a29030022125620112012511b22066a210d2021200b41016a2020200b201e1b201f1b20061b210b201c2019201b200c20181b201a1b201d1b210c2016200a41016a2015200a200f1b20141b20171b210a0b200d2000200c41306c6a220f290300220e2000200a41306c6a2218290300221056200f41086a2903002211201841086a29030022125620112012511b220f6a2000200b41306c6a220d29030022132010200e200f1b221056200d41086a290300220e20122011200f1b221156200e2011511b220d6a211820132010200d1b2000200c200a200f1b222141306c6a221e29030058200e2011200d1b2211201e41086a29030022125820112012511b450d01200b200a200c200f1b200d1b21210c020b2000200110de030c0f0b201841016a2218410c490d0002402001410176220b450d002000200141306c6a41506a210a2000210c0340200441a0026a41286a220f200c41286a220d290300370300200441a0026a41206a2218200c41206a221e290300370300200441a0026a41186a2214200c41186a221a290300370300200441a0026a41106a221f200c41106a2215290300370300200441a0026a41086a2216200c41086a22172903003703002004200c2903003703a002200a41086a22192903002111200a41106a221b2903002112200a41186a221c290300210e200a41206a221d2903002110200a41286a22202903002113200c200a290300370300200d2013370300201e2010370300201a200e37030020152012370300201720113703002020200f290300370300201d2018290300370300201c2014290300370300201b201f29030037030020192016290300370300200a20042903a002370300200c41306a210c200a41506a210a200b417f6a220b0d000b0b20012021417f736a21214101210a0c010b201845210a0b0240200a452009724101710d002000200110df030d0d0b2002450d02202120014f0d01024020022903002000202141306c6a220a29030056200241086a2903002211200a41086a220c29030022125620112012511b450d0020002108200121070c040b200441a0026a41286a221a200041286a2218290300370300200441a0026a41206a221f200041206a221e290300370300200441a0026a41186a2215200041186a2214290300370300200441a0026a41106a2216200041106a220b290300370300200441a0026a41086a2217200041086a220f290300370300200420002903003703a002200c2903002111200a41106a220d2903002112200a41186a2219290300210e200a41206a221b2903002110200a41286a221c29030021132000200a29030037030020182013370300201e20103703002014200e370300200b2012370300200f2011370300201c201a290300370300201b201f29030037030020192015290300370300200d2016290300370300200c2017290300370300200a20042903a002370300200f29030021112000290300210e200441186a221c2018290300370300200441106a221d201e290300370300200441086a222020142903003703002004200b290300370300200041506a2119200041306a211b4100210c2001210b03400240200c200b417f6a220f4f0d00201b200c41306c6a210a0340200e200a290300582011200a41086a29030022125820112012511b450d01200a41306a210a200f200c41016a220c470d000b200f210c0b2019200b41306c6a210a02400340200c200b417f6a220b4f0d01200a2903002112200a41086a210f200a41506a220d210a200e2012562011200f29030022125620112012511b0d000b201a201b200c41306c6a220a41286a220f290300370300201f200a41206a22212903003703002015200a41186a22062903003703002016200a41106a22222903003703002017200a41086a22232903003703002004200a2903003703a002200d41386a22242903002112200d41c0006a22252903002110200d41c8006a22262903002113200d41d0006a22272903002128200d41d8006a2229290300212a200a200d41306a220d290300370300200f202a370300202120283703002006201337030020222010370300202320123703002029201a2903003703002027201f290300370300202620152903003703002025201629030037030020242017290300370300200d20042903a002370300200c41016a210c0c010b0b2000200e370300200020113703082000200429030037031020142020290300370300201e201d2903003703002018201c29030037030002402001200c41016a220a490d002000200a41306c6a21002001200a6b220141154f0d010c0c0b0b200a2001104b000b41d4bbca0020212001103b000b2007450d010b202120074f0d01200441a0026a41286a2217200841286a2222290300370300200441a0026a41206a2219200841206a2223290300370300200441a0026a41186a221b200841186a2224290300370300200441a0026a41106a221c200841106a2225290300370300200441a0026a41086a221d200841086a2226290300370300200420082903003703a0022008202141306c6a220a41086a220c2903002111200a41106a220b2903002112200a41186a220f290300210e200a41206a220d2903002110200a41286a220029030021132008200a29030037030020222013370300202320103703002024200e370300202520123703002026201137030020002017290300370300200d2019290300370300200f201b290300370300200b201c290300370300200c201d290300370300200a20042903a0023703002026290300211120082903002112200441186a22272022290300370300200441106a22292023290300370300200441086a2205202429030037030020042025290300370300200841306a2101410021212007417f6a220f450d022001210a0340200a290300201256200a41086a290300220e201156200e2011511b450d03200a41306a210a200f202141016a2221470d000b200f21210c020b4188bbca0041004100103b000b4198bbca0020212007103b000b2008200741306c6a210a200f210b02400340200a2100200b220c20214d22060d01200c417f6a210b200041506a220a290300201258200a41086a290300220e201158200e2011511b0d000b0b0240200c2021490d00200f200c490d0241800121154100210d4100211a4100210f4100211441800121162001202141306c6a220921010340200020016b220a41306e210c0240200a41afe0004b22200d00200c41807f6a200c201a200d492014200f49220b7222181b210a02402018450d002016200a200b1b2116200a2015200b1b21150c010b200a200a41017622166b21150b02402014200f470d00024020160d00200441206a220f21140c010b4100210c200441206a2214210f2001210a0340200f200c3a0000200f410041014102200a2903002210201285200a41086a290300220e20118584501b2010201254200e201154200e2011511b1b41027441b8e0c3006a2802006a210f200a41306a210a2016200c41016a220c470d000b0b0240201a200d470d00024020150d00200441a0016a220d211a0c010b200041506a210a4100210c200441a0016a221a210d0340200d200c3a0000200d410041014102200a2903002210201285200a41086a290300220e20118584501b2010201254200e201154200e2011511b1b41027441c4e0c3006a2802006a210d200a41506a210a2015200c41016a220c470d000b0b0240200d201a6b220a200f20146b220c200c200a4b1b221f450d002017200120142d000041306c6a220a41286a2903003703002019200a41206a290300370300201b200a41186a290300370300201c200a41106a290300370300201d200a41086a2903003703002004200a2903003703a002200120142d000041306c6a220a2000201a2d0000417f7341306c6a220c290300370300200a41286a200c41286a290300370300200a41206a200c41206a290300370300200a41186a200c41186a290300370300200a41106a200c41106a290300370300200a41086a200c41086a2903003703000240201f4101460d004100210b03402000201a200b6a22182d0000417f7341306c6a220a20012014200b6a41016a221e2d000041306c6a220c290300370300200a41286a200c41286a290300370300200a41206a200c41206a290300370300200a41186a200c41186a290300370300200a41106a200c41106a290300370300200a41086a200c41086a2903003703002001201e2d000041306c6a220a2000201841016a2d0000417f7341306c6a220c290300370300200a41286a200c41286a290300370300200a41206a200c41206a290300370300200a41186a200c41186a290300370300200a41106a200c41106a290300370300200a41086a200c41086a290300370300200b41026a210a200b41016a220c210b200a201f490d000b201a200c6a211a2014200c6a21140b2000201a2d0000417f7341306c6a220a20042903a002370300200a41286a2017290300370300200a41206a2019290300370300200a41186a201b290300370300200a41106a201c290300370300200a41086a201d290300370300201a41016a211a201441016a21140b2001201641306c6a20012014200f461b21012000410020156b41306c6a2000201a200d461b210020200d000b024002402014200f4f0d002000210a034020172001200f417f6a220f2d000041306c6a220c41286a220b2903003703002019200c41206a220d290300370300201b200c41186a2200290300370300201c200c41106a2218290300370300201d200c41086a221e2903003703002004200c2903003703a002200a41506a220a41086a221a290300210e200a41106a221f2903002110200a41186a22152903002113200a41206a22162903002128200a41286a2220290300212a200c200a290300370300200b202a370300200d20283703002000201337030020182010370300201e200e37030020202017290300370300201620192903003703002015201b290300370300201f201c290300370300201a201d290300370300200a20042903a0023703002014200f490d000c020b0b2001210a201a200d4f0d000340200d417f6a220d2d0000210c2017200a41286a220b2903003703002019200a41206a220f290300370300201b200a41186a2201290300370300201c200a41106a2218290300370300201d200a41086a221e2903003703002004200a2903003703a0022000200c417f7341306c6a220c41086a2214290300210e200c41106a221f2903002110200c41186a22152903002113200c41206a22162903002128200c41286a2220290300212a200a200c290300370300200b202a370300200f20283703002001201337030020182010370300201e200e37030020202017290300370300201620192903003703002015201b290300370300201f201c2903003703002014201d290300370300200c20042903a002370300200a41306a210a201a200d490d000b0b2008201137030820082012370300200820042903003703102024200529030037030020232029290300370300202220272903003703002007200a20096b41306e20216a22014d0d032017202229030037030020192023290300370300201b2024290300370300201c2025290300370300201d2026290300370300200420082903003703a0022008200141306c6a220a41086a220c2903002111200a41106a220b2903002112200a41186a220f290300210e200a41206a220d2903002110200a41286a220029030021132008200a29030037030020222013370300202320103703002024200e370300202520123703002026201137030020002017290300370300200d2019290300370300200f201b290300370300200b201c290300370300200c201d290300370300200a20042903a002370300200720016b220c450d04200c20012001200c4b1b210b2007410376210f200a41306a2100024002402001200c417f6a220c490d002000200c200a200310bf03200821000c010b200820012002200310bf03200a2102200c21010b200b200f4f2105200141154f0d010c050b0b2021200c104b000b200c200f104a000b4198bbca0020012007103b000b41a8bbca00411c41c4bbca001039000b20014102490d00200041a07f6a210d410021184101210c0340200c41016a210f02402000200c41306c6a220b290300220e200b41506a220a29030058200b41086a221e2903002211200a41086a221429030022125820112012511b0d00200441186a221a200b41286a221f290300370300200441106a2215200b41206a2216290300370300200441086a2217200b41186a22192903003703002004200b290310370300200b200a290300370300201e2014290300370300200b41106a200a41106a2903003703002019200a41186a2903003703002016200a41206a290300370300201f200a41286a2903003703002000200c417f6a221e41306c6a211402400240201e0d004100211e0c010b2018210c200d210a200e200b41a07f6a220b290300582011200b41086a29030022125820112012511b0d00024002400340200a4188016a200a41d8006a290300370300200a4180016a200a41d0006a290300370300200a41f8006a200a41c8006a290300370300200a41f0006a200a41c0006a290300370300200a41e8006a200a41386a290300370300200a41e0006a200a41306a290300370300200c4101460d01200a2903002112200a41086a210b200c417f6a210c200a41506a210a200e2012562011200b29030022125620112012511b0d000c020b0b4100210c0b2000200c41306c6a2114200c211e0b2014200e370300201420113703082000201e41306c6a220a41286a201a290300370300200a41206a2015290300370300200a41186a2017290300370300200a20042903003703100b201841016a2118200d41306a210d200f210c200f2001470d000b0b200441d0026a24000bd10403027f017e047f230041d0006b2202240041eba1ca00ad4280808080f00084100122032900002104200241086a200341086a290000370300200220043703002003102f41c1cac800ad4280808080a00284100122032900002104200241106a41086a200341086a290000370300200220043703102003102f2002200136022c20022002412c6aad4280808080c00084100622032900003703302003102f200241c4006a200241306a360200200241003a00482002200241306a41086a36023c20022002412c6a3602402002200241306a360238200241206a200241386a106c0240024002400240024002402002280228220541206a2201417f4c0d0020022802202106024002402001450d002001102d2203450d062001410f4d0d01200121070c050b411021074110102d21030c030b200141017422084110200841104b1b220741004e0d010c050b103d000b200320012007103121030b2003450d010b20032002290300370000200341086a200241086a2903003700000240024020074170714110460d00200721080c010b200741017422084120200841204b1b22084100480d0220032007200810312203450d010b20032002290310370010200341186a200241106a41086a29030037000002400240200841606a2005490d00200821070c010b2005415f4b0d02200841017422072001200720014b1b22074100480d0220032008200710312203450d010b200341206a2006200510e8061a20002001360208200020073602042000200336020002402002280224450d002006102f0b200241d0006a24000f0b1036000b1038000bab0201037f230041e0006b220324002003200236020c20032001360208200341106a2002ad4220862001ad841002107302400240200328021022010d00410021020c010b200328021421042003200341186a280200360224200320013602202003200341206a10e6010240024020032802000d0020032802042105410121020c010b4100210220034100360230200342013703282003410b36023c2003200341086a3602382003200341286a360244200341dc006a41013602002003420137024c200341b885c7003602482003200341386a360258200341c4006a41d8dbc100200341c8006a103c1a200335023042208620033502288410080240200328022c450d002003280228102f0b0b2004450d002001102f0b2000200536020420002002360200200341e0006a24000bd10403027f017e047f230041d0006b2202240041eba1ca00ad4280808080f00084100122032900002104200241086a200341086a290000370300200220043703002003102f41d3cac800ad4280808080a00284100122032900002104200241106a41086a200341086a290000370300200220043703102003102f2002200136022c20022002412c6aad4280808080c00084100622032900003703302003102f200241c4006a200241306a360200200241003a00482002200241306a41086a36023c20022002412c6a3602402002200241306a360238200241206a200241386a106c0240024002400240024002402002280228220541206a2201417f4c0d0020022802202106024002402001450d002001102d2203450d062001410f4d0d01200121070c050b411021074110102d21030c030b200141017422084110200841104b1b220741004e0d010c050b103d000b200320012007103121030b2003450d010b20032002290300370000200341086a200241086a2903003700000240024020074170714110460d00200721080c010b200741017422084120200841204b1b22084100480d0220032007200810312203450d010b20032002290310370010200341186a200241106a41086a29030037000002400240200841606a2005490d00200821070c010b2005415f4b0d02200841017422072001200720014b1b22074100480d0220032008200710312203450d010b200341206a2006200510e8061a20002001360208200020073602042000200336020002402002280224450d002006102f0b200241d0006a24000f0b1036000b1038000bb60306047f017e057f017e017f017e230041306b22022400200241286a200110e601024002400240024002402002280228450d00200041003602000c010b200228022c2203200128020441186e2204200420034b1b2205ad42187e2206422088a70d012006a72204417f4c0d010240024020040d00410821070c010b2004102d2207450d03200441186e21050b024002402003450d00200241106a41106a2108410021094100210a4100210b0340200241106a2001109c032002290310a70d02200829030021062002290318210c200241086a200110e60120022802080d02200b41016a2104200228020c210d0240200b2005470d0020092004200920044b1bad42187e220e422088a70d07200ea722054100480d0702400240200b0d002005102d21070c010b2007200a2005103121070b2007450d06200541186e21050b2007200a6a220b2006370308200b200c370300200b41106a200d360200200941026a2109200a41186a210a2004210b20032004470d000b0b2000200536020420002007360200200041086a20033602000c010b200041003602002005450d002007102f0b200241306a24000f0b103d000b1036000b1038000bc60501067f230041106b220224002002410036020820024201370300024002404120102d2203450d00200242a080808080043702042002200336020020032000290034370000200341086a2000413c6a290000370000200341106a200041c4006a290000370000200341186a200041cc006a2900003700002002200036020c2002410c6a200210c2022002200041106a36020c2002410c6a200210c20220002802202103200041286a28020022042002106902402004450d002003200441186c6a210403402002200336020c2002410c6a200210c202200341106a20021095022004200341186a2203470d000b0b02400240200028022c4101460d00024002402002280204220420022802082205460d00200228020021030c010b200541016a22032005490d04200541017422042003200420034b1b22044100480d040240024020050d002004102d21030c010b200228020020052004103121030b2003450d0320022004360204200220033602000b2002200541016a2200360208200320056a41003a00000c010b024002402002280204220420022802082205460d00200228020021030c010b200541016a22032005490d03200541017422042003200420034b1b22044100480d030240024020050d002004102d21030c010b200228020020052004103121030b2003450d0220022004360204200220033602000b2002200541016a2206360208200320056a41013a00002000280230210702400240200420066b4104490d00200541056a21000c010b200641046a22002006490d03200441017422052000200520004b1b22054100480d030240024020040d002005102d21030c010b200320042005103121030b2003450d022002200536020420022003360200200521040b20022000360208200320066a20073600000b20012902002000ad4220862003ad84100402402004450d002003102f0b200241106a24000f0b1036000b1038000bdc0304057f017e027f027e230041306b22022400200241206a2001350208422086200135020084101810730240024020022802202203450d002001410c6a2104200141046a2105200241186a21060240024003400240024020022902242207422088a722084120490d0020042003460d0120042003412010ea06450d010b2007a7450d042003102f0c040b02402008417f4c0d002008102d2209450d0220092003200810e806210902402005280200450d002001280200102f0b200120083602082001200936020020052008360200200241086a20032008109c0102402002290308a7450d002006290300210a2002290310210b024020012d002c450d002007428080808070832003ad8410050b20012802082208411f4d0d04200841606a2208417f4c0d01200128020021010240024020080d00410121050c010b2008102d2205450d040b2005200141206a200810e8062101200041186a200a370300200041106a200b370300200041086a200836020020002008360204200020013602002007a7450d062003102f0c060b02402007a7450d002003102f0b200241206a200135020842208620013502008410181073200228022022030d010c040b0b103d000b1036000b41202008104b000b200041003602000b200241306a24000bdc0203047f017e017f230041106b2203240002400240024002400240200141206a2204417f4c0d002004450d01200410332205450d022004410f4d0d0341e7a2ca00ad4280808080800184100122062900002107200341086a2208200641086a290000370300200320073703002006102f200541086a2008290300370000200520032903003700002004411f4d0d0441f9b5c600ad4280808080d000841001220629000021072008200641086a290000370300200320073703002006102f200541186a200829030037000020052003290300370010200541206a2000200110e8061a2003200228020022082002280208109d042004ad4220862005ad84200335020842208620032802002204ad84100402402003280204450d002004102f0b2005102f0240200241046a280200450d002008102f0b200341106a24000f0b103d000b41104100104a000b1036000b41102004104a000b41202004104a000bcb0304047f017e017f017e230041106b2203240002400240024002400240200141206a2204417f4c0d002004450d01200410332205450d022004410f4d0d0341e7a2ca00ad4280808080800184100122062900002107200341086a2208200641086a290000370300200320073703002006102f200541086a2008290300370000200520032903003700002004411f4d0d0441f0e8c600ad4280808080f000841001220629000021072008200641086a290000370300200320073703002006102f200541186a200829030037000020052003290300370010200541206a2000200110e8061a200241086a2903002107200229030021094110102d2208450d022008200937000020082007370008200241186a29030021072002290310210920084110412010312208450d0220082009370010200841186a2007370000200241286a2903002107200229032021092008412041c00010312208450d0220082009370020200841286a200737000020082002290330370030200841386a200241386a2903003700002004ad4220862005ad842008ad428080808080088410042008102f2005102f200341106a24000f0b103d000b41104100104a000b1036000b41102004104a000b41202004104a000b960203047f017e017f230041106b2203240002400240024002400240200241206a2204417f4c0d002004450d01200410332205450d022004410f4d0d0341e7a2ca00ad4280808080800184100122062900002107200341086a2208200641086a290000370300200320073703002006102f200541086a2008290300370000200520032903003700002004411f4d0d0441f0e8c600ad4280808080f000841001220629000021072008200641086a290000370300200320073703002006102f200541186a200829030037000020052003290300370010200541206a2001200210e8061a2000200520041089042005102f200341106a24000f0b103d000b41104100104a000b1036000b41102004104a000b41202004104a000bed0507047f017e027f017e017f057e017f230041d0006b22022400200241386a2001350208422086200135020084101810730240024020022802382203450d002001410c6a2104200141046a210502400240034002400240200229023c2206422088a722074120490d0020042003460d0120042003412010ea06450d010b2006a7450d042003102f0c040b02402007417f4c0d002007102d2208450d0220082003200710e806210802402005280200450d002001280200102f0b2001200736020820012008360200200520073602002002200736020420022003360200200241086a2006428080808070832003ad84220910021073024020022802082207450d00200228020c21080240024002402002280210220a4110490d00200a4170714110460d00200a417c714120470d010b20024100360220200242013703182002410b36022c200220023602282002200241186a3602342002410136024c2002420137023c200241b885c7003602382002200241286a360248200241346a41d8dbc100200241386a103c1a200235022042208620023502188410080240200228021c450d002002280218102f0b4200210b0c010b200741086a290000210c2007290000210d200741186a290000210e2007290010210f200728002021104201210b0b02402008450d002007102f0b200b500d00024020012d002c450d00200910050b20012802082207411f4d0d04200741606a2207417f4c0d01200128020021010240024020070d00410121050c010b2007102d2205450d040b2005200141206a200710e8062101200041286a200e370200200041206a200f370200200041186a200c370200200041106a200d370200200041306a2010360200200041086a200736020020002007360204200020013602002006a7450d062003102f0c060b02402006a7450d002003102f0b200241386a200135020842208620013502008410181073200228023822030d010c040b0b103d000b1036000b41202007104b000b200041003602000b200241d0006a24000bcd0604097f017e027f057e230041e0006b220324002003200236020c20032001360208200341106a2002ad4220862001ad84100210730240024020032802102204450d00200328021421052003200341186a280200360224200320043602202003200341206a10e6010240024002400240024020032802000d002003280204220620032802244105762201200120064b1b22074105742201417f4c0d040240024020070d00410821080c010b2001102d2208450d030b024002402006450d00410021094100210a410021010340200341c0006a200341206a10f3020240024020032d00404101460d004103210b200328022422024110490d012003290041210c2003200241706a220d36022420032003280220220e41106a360220200d450d01200e41086a290000210f200e290000211020032002416f6a3602242003200e41116a3602204103210b200e2d0010220241034f0d01200320032800403602282003200341c0006a41036a28000036002b200c211120102112200f21132002210b0c010b4103210b0b200320032802283602382003200328002b36003b200b4103460d02200141016a21022003200328003b36005b20032003280238360258024020012007470d0020092002200920024b1b220741ffffff3f712007470d07200741057422074100480d070240024020010d002007102d21080c010b2008200a2007103121080b2008450d06200741057621070b2008200a6a220141186a200b3a00002001201337030820012012370300200141106a2011370300200141196a20032802583600002001411c6a200328005b360000200941026a2109200a41206a210a2002210120062002470d000b0b2008450d012000200736020420002008360200200041086a20063602000c020b2007450d002008102f0b20034100360230200342013703282003410b36023c2003200341086a3602382003200341286a360258200341d4006a410136020020034201370244200341b885c7003602402003200341386a360250200341d8006a41d8dbc100200341c0006a103c1a200335023042208620033502288410080240200328022c450d002003280228102f0b200041003602000b2005450d042004102f0c040b1036000b1038000b103d000b200041003602000b200341e0006a24000be00503047f017e027f230041d0016b2202240020022001350208422086200135020084101810730240024020022802002203450d002001410c6a2104200141046a21050240024003400240024020022902042206422088a722074120490d0020042003460d0120042003412010ea06450d010b2006a7450d042003102f0c040b02402007417f4c0d002007102d2208450d0220082003200710e806210802402005280200450d002001280200102f0b200120073602082001200836020020052007360200200220032007108904024020022903004201520d00200241c8006a41386a200241c0006a290300370300200241c8006a41306a200241386a290300370300200241c8006a41286a200241306a290300370300200241c8006a41206a200241286a290300370300200241c8006a41186a200241206a290300370300200241c8006a41106a200241186a290300370300200241d0006a200241106a29030037030020022002290308370348024020012d002c450d002006428080808070832003ad8410050b20012802082207411f4d0d04200741606a2207417f4c0d01200128020021010240024020070d00410121050c010b2007102d2205450d040b2005200141206a200710e8062101200041086a20073602002000200736020420002001360200200241c8016a20024180016a290300370200200241c0016a200241f8006a290300370200200241b8016a200241f0006a290300370200200241b0016a200241e8006a290300370200200241a8016a200241e0006a290300370200200241a0016a200241d8006a2903003702002002418c016a410c6a200241c8006a41086a29030037020020022002290348370290012000410c6a2002418c016a41c40010e8061a2006a7450d062003102f0c060b02402006a7450d002003102f0b2002200135020842208620013502008410181073200228020022030d010c040b0b103d000b1036000b41202007104b000b200041003602000b200241d0016a24000bc20202037f017e230041206b2207240002400240024002400240200641206a2208417f4c0d002008450d01200810332209450d022008410f4d0d032002ad4220862001ad8410012202290000210a200741106a41086a2201200241086a2900003703002007200a3703102002102f200941086a2001290300370000200920072903103700002008411f4d0d042004ad4220862003ad8410012202290000210a2001200241086a2900003703002007200a3703102002102f200941186a200129030037000020092007290310370010200941206a2005200610e8061a200741086a20092008109501200728020c21010240200728020822064101470d002008ad4220862009ad8410050b2009102f2000200136020420002006360200200741206a24000f0b103d000b41104100104a000b1036000b41102008104a000b41202008104a000b9e0407047f017e017f017e017f017e057f230041e0006b22002400200041306a41186a22014200370300200041306a41106a22024200370300200041306a41086a2203420037030020004200370330418de6c300ad4280808080e000842204100122052900002106200041d0006a41086a2207200541086a290000370300200020063703502005102f200320072903003703002000200029035037033041d480c400ad4280808080b0028422061001220529000021082007200541086a290000370300200020083703502005102f200220002903502208370300200041106a41086a22092003290300370300200041106a41106a220a2008370300200041106a41186a220b200729030037030020002000290330370310200041086a200041106a4120109501200028020c210c2000280208210d2001420037030020024200370300200342003703002000420037033020041001220529000021042007200541086a290000370300200020043703502005102f200320072903003703002000200029035037033020061001220529000021042007200541086a290000370300200020043703502005102f20022000290350220437030020092003290300370300200a2004370300200b2007290300370300200020002903303703102000200c4100200d1b2207418094ebdc032007418094ebdc03491b360230200041106aad4280808080800484200041306aad4280808080c000841004200041e0006a24000ba91109017f017e037f017e017f017e047f017e017f230041e0006b22052400200541003602204180e5c300ad4280808080800284200541206aad4280808080c0008422061004200541206a41186a22074200370300200541206a41106a22084200370300200541206a41086a2209420037030020054200370320418de6c300ad4280808080e00084220a1001220b290000210c200541c0006a41086a220d200b41086a2900003703002005200c370340200b102f2009200d29030037030020052005290340370320419ce6c300ad4280808080e000841001220e290000210c200541d0006a41086a220b200e41086a2900003703002005200c370350200e102f20082005290350220c370300200541086a220e2009290300370300200541106a220f200c370300200541186a2210200b29030037030020052005290320370300200520003602202005ad22114280808080800484220c2006100420074200370300200842003703002009420037030020054200370320200a100122122900002106200d201241086a290000370300200520063703402012102f2009200d2903003703002005200529034037032041bae6c300ad4280808080e00084100122122900002106200b201241086a290000370300200520063703502012102f200820052903502206370300200e2009290300370300200f20063703002010200b29030037030020052005290320370300200520053602202005412036022420032802002003280208200541206a10f50220074200370300200842003703002009420037030020054200370320200a100122032900002106200d200341086a290000370300200520063703402003102f2009200d2903003703002005200529034037032041a2e6c300ad4280808080a00184100122032900002106200b200341086a290000370300200520063703502003102f200820052903502206370300200e2009290300370300200f20063703002010200b2903003703002005200529032037030002404120102d2203450d0020032001290000370000200341186a200141186a290000370000200341106a200141106a290000370000200341086a200141086a290000370000200c2003ad428080808080048410042003102f200a10012203290000210a200d200341086a2900003703002005200a3703402003102f4193e6c300ad42808080809001841001220d290000210a200b200d41086a2900003703002005200a370350200d102f20052000417f6a36020020114280808080c000841003220d290000210a200d41086a2900002106200d41106a29000021112007200d41186a29000037030020082011370300200920063703002005200a370320200d102f41c000102d2209450d00200920052903403700002009200529035037001020092005290320370020200941086a200541c0006a41086a2203290300370000200941186a200541d0006a41086a2207290300370000200941286a200541206a41086a220b290300370000200941306a200541206a41106a2200290300370000200941386a200541206a41186a220e2903003700004120102d220d450d00200d2001290000370000200d41186a200141186a290000370000200d41106a200141106a290000370000200d41086a200141086a2900003700002009ad4280808080800884200dad42808080808004841004200d102f2009102f200e420037030020004200370300200b420037030020054200370320418de6c300ad4280808080e0008410012209290000210a2003200941086a2900003703002005200a3703402009102f200b20032903003703002005200529034037032041ace6c300ad4280808080e0018410012209290000210a2007200941086a2900003703002005200a3703502009102f20082005290350370000200841086a2007290300370000200541086a200b290300370300200541106a2000290300370300200541186a200e290300370300200520052903203703004120102d2209450d0020092002290000370000200941186a200241186a290000370000200941106a200241106a290000370000200941086a200241086a290000370000200c2009ad428080808080048410042009102f02402004450d00200541206a41186a22014200370300200541206a41106a220d4200370300200541206a41086a2209420037030020054200370320418de6c300ad4280808080e00084220a100122032900002106200541c0006a41086a220b200341086a290000370300200520063703402003102f2009200b2903003703002005200529034037032041baebc300ad4280808080e00084100122022900002106200541d0006a41086a2203200241086a290000370300200520063703502002102f20082005290350370000200841086a22022003290300370000200541086a22072009290300370300200541106a2200200d290300370300200541186a220e200129030037030020052005290320370300200c100520014200370300200d42003703002009420037030020054200370320200a1001220f2900002106200b200f41086a29000037030020052006370340200f102f2009200b2903003703002005200529034037032041d882c400ad4280808080a001841001220f29000021062003200f41086a29000037030020052006370350200f102f2008200529035037000020022003290300370000200720092903003703002000200d290300370300200e200129030037030020052005290320370300200c100520014200370300200d42003703002009420037030020054200370320200a1001220f290000210a200b200f41086a2900003703002005200a370340200f102f2009200b2903003703002005200529034037032041c0ebc300ad4280808080b001841001220b290000210a2003200b41086a2900003703002005200a370350200b102f2008200529035037000020022003290300370000200720092903003703002000200d290300370300200e200129030037030020052005290320370300200c10130b200541e0006a24000f0b1036000b90a2010c017f017e017f047e037f027e0e7f067e117f027e027f047e230041f00a6b22012400200141003602d803200142013703d00302400240024002400240024020004180ee05700d0041c6b5c400ad4280808080f000842202100122032900002104200329000821052003102f41ebdec700ad4280808080f00084100122032900002106200329000821072003102f200120073702a807200120063702a00720012005370298072001200437029007200141d8046a20014190076a412010aa0220012902dc04420020012802d80422031b21042003410120031b2103024020012802d403450d0020012802d003102f0b200120043702d403200120033602d0032001200141d0036a3602dc032002100122032900002102200329000821042003102f41e4d8c400ad42808080803084100122032900002105200329000821062003102f200120063702a807200120053702a00720012004370298072001200237029007200141b8036a20014190076a4120109c01200141b8036a41106a290300210220012903c003210420012802b8032103200141e0036a41e7d8c400411010ac04200141003a00f8042002420020031b21062004420020031b2107200141e0036a21084120210341002109024002400240024002400340200141003a00900720014190076a20082003410047220a10e8061a024020030d00200141003a0090070b2003200a490d01200141d8046a20096a20012d0090073a00002001200941016a22093a00f8042003200a6b21032008200a6a210820094120470d000b20012903d804210420012903e004210520012903e804210b20012903f004210c4100210d200141d8046a410041800210e7061a4200210220014188076a420037030020014180076a4200370300200141f8066a200c370300200141f0066a200b370300200141e8066a2005370300200120043703e006200141c0003602d8064108210e024020012802dc0341086a2802000d00410021090c050b41c6b5c400ad4280808080f00084100122032900002104200329000821052003102f418c91c700ad4280808080a0018410012203290000210b2003290008210c2003102f2001200c3702a8072001200b3702a0072001200537029807200120043702900720014180096a20014190076a10ad040240024020012802800922030d00410021090c010b20014190076aad428080808080048410052001290284092202422088a721092003210e0b024020012802dc03220341046a280200220a200328020822086b20094f0d00200820096a22092008490d08200a41017422082009200820094b1b220941ffffff3f712009470d08200941057422094100480d0802400240200a0d002009102d210a0c010b2003280200200a41057420091031210a0b200a450d072003200a360200200341046a20094105763602000b418de6c300ad4280808080e00084100122032900002104200329000821052003102f419ce6c300ad4280808080e0008410012203290000210b2003290008210c2003102f2001200c3702a8072001200b3702a00720012005370298072001200437029007200141b0036a20014190076a412010950120012802dc0341086a28020041f4036a2203450d0120012802b403210920012802b003210a200141e4003a009107200141e40041d0860320036e22036b3a0090074100210f200120014190076a200341ff017141e4004b6a2d00004180fe126c20094100200a1b6a36028404200141003602900420014201370388042001410036029404200142003703a0042001420037039804200142003703e80a200142003703e00a200141d0046a20014184046a360200200141cc046a200141e00a6a360200200141a8046a41206a20014194046a360200200141c4046a20014198046a360200200141c0046a20014188046a360200200141bc046a200141d8046a3602002001200e2002422088a7220341e8006c220a6a3602b4042001200e3602b00420012002a722103602ac042001200e3602a8042001200141dc036a3602b8040240024002402003450d0020014190076a4101722111200141b8046a2112200e210303402001200341e8006a22083602b00420032d0000210920014180096a200341016a41e70010e8061a20094102460d01200120093a009007201120014180096a41e70010e8061a200141a00a6a201220014190076a10ae0420012903a00a4201510d0220082103200a41987f6a220a0d000b0b4108211102402010450d00200e102f0b410021100c010b200141e8096a41306a200141a00a6a41386a2903002202370300200141e8096a41286a200141a00a6a41306a2903002204370300200141e8096a41206a200141a00a6a41286a2903002205370300200141c8086a41086a2211200141a00a6a41106a290300370300200141c8086a41106a2212200141a00a6a41186a290300370300200141c8086a41186a2208200141a00a6a41206a290300370300200141c8086a41206a220a2005370300200141c8086a41286a22092004370300200141c8086a41306a22032002370300200120012903a80a3703c80820014190086a41306a220e200329030037030020014190086a41286a2203200929030037030020014190086a41206a2209200a29030037030020014190086a41186a220a200829030037030020014190086a41106a2208201229030037030020014190086a41086a22122011290300370300200120012903c808370390084138102d2211450d072011200129039008370300201141306a200e290300370300201141286a2003290300370300201141206a2009290300370300201141186a200a290300370300201141106a2008290300370300201141086a20122903003703002012200141a8046a41086a29030022023703002003200141a8046a41286a2802003602002009200141a8046a41206a290300370300200a200141a8046a41186a2903003703002008200141a8046a41106a290300370300200120012903a80437039008024002402002a72209200128029c082208470d004101210f410121100c010b200841987f6a2113200141a00a6a41086a211420014190076a410172211220014190086a41106a210e4101210f4101211003402009210303402001200341e8006a220a3602980820032d0000210920014180096a200341016a41e70010e8061a20094102460d02200120093a009007201220014180096a41e70010e8061a200141a00a6a200e20014190076a10ae04024020012903a00a4201510d00200a21032008200a470d010c030b0b200141e8096a41306a201441306a2903002202370300200141e8096a41286a201441286a2903002204370300200141e8096a41206a201441206a2903002205370300200141c8086a41086a2209201441086a290300370300200141c8086a41106a220a201441106a290300370300200141c8086a41186a2215201441186a290300370300200141c8086a41206a22162005370300200141c8086a41286a22172004370300200141c8086a41306a22182002370300200120142903003703c80820014190076a41306a2219201829030037030020014190076a41286a2218201729030037030020014190076a41206a2217201629030037030020014190076a41186a2216201529030037030020014190076a41106a2215200a29030037030020014190076a41086a221a2009290300370300200120012903c8083703900702402010200f470d00200f41016a2209200f490d0b200f410174220a2009200a20094b1bad42387e2202422088a70d0b2002a722094100480d0b02400240200f0d002009102d21110c010b2011200f41386c2009103121110b2011450d0a200941386e21100b200341e8006a21092011200f41386c6a220a200129039007370300200a41306a2019290300370300200a41286a2018290300370300200a41206a2017290300370300200a41186a2016290300370300200a41106a2015290300370300200a41086a201a290300370300200f41016a210f20132003470d000b0b200128029408450d00200128029008102f0b41c6b5c400ad4280808080f00084100122032900002102200329000821042003102f41d7b5c400ad4280808080d000841001220329000021052003290008210b2003102f2001200b3702a807200120053702a0072001200437029807200120023702900720014190076aad4280808080800484220b1013024020012903980420014198046a41086a29030084500d00024002402001280290042203450d002001280288042109200141d8046a2003417f6a10af04220a2003490d0141acd9c400200a2003103b000b20014180096a10e80320014190076a41bcd9c40010b402200141a00a6a20014180096a20014190076a200129039804200141a0046a290300410110f2020c010b2009200a4105746a200128028404200129039804200141a0046a29030010b0040b024020012903e00a2202200141e00a6a41086a290300220484500d0020014180096a41bcd9c40010b40220014190076a10e803200141a00a6a20014180096a20014190076a20012903e00a200141e80a6a290300410110f2024200200620047d2007200254ad7d2204200720027d2202200756200420065620042006511b22031b21064200200220031b21070b410021090240200f450d00200f41386c2109201141046a2108200141d8046a200128029404417f6a10af04210e2011210303402008210a2009450d0402402003290328200341306a29030084500d00200941486a2109200a41386a210820032802002112200341386a21032012200e4d0d010b0b20014180096a41186a200a41186a29000037030020014180096a41106a200a41106a29000037030020014180096a41086a200a41086a2900003703002001200a290000370380094100210a410021144101210e0240200f41386c2212450d00201241386d220341ffffff3f712003470d09200341057422034100480d092003102d220e450d08200341057621140b41002108200e210303402011200a6a220941046a29020021022009410c6a2902002104200941146a2902002105200341186a2009411c6a290200370000200341106a2005370000200341086a200437000020032002370000200341206a2103200841016a21082012200a41386a220a470d000b02402010450d002011102f0b20012802dc032203280200200328020810870120012802dc03220328020821092003280200210a41c6b5c400ad4280808080f000842202100122032900002104200329000821052003102f41ebdec700ad4280808080f0008410012203290000210c2003290008211b2003102f2001201b3702a8072001200c3702a00720012005370298072001200437029007200120014190076a3602a00a200141203602a40a200a2009200141a00a6a10ad012002100122032900002102200329000821042003102f419ab6c400ad4280808080c000841001220329000021052003290008210c2003102f2001200c3702a807200120053702a007200120043702980720012002370290074120102d2203450d072003200129038009370000200341186a20014180096a41186a2209290300370000200341106a20014180096a41106a220a290300370000200341086a20014180096a41086a2212290300370000200b2003ad428080808080048410042003102f20014190076a41086a41063a000020014199076a200129038009370000200141a1076a2012290300370000200141a9076a200a290300370000200141b1076a2009290300370000200141c4076a2008360200200141c0076a2014360200200141bc076a200e360200200141123a00900741c8e1ca00410020014190076a108c01410121090b20014180096a41bcd9c40010b40220014190076a20014180096a108d0220014198076a2903002102200129039007210441c6b5c400ad4280808080f000841001220329000021052003290008210c2003102f41e4d8c400ad4280808080308410012203290000211b2003290008211c2003102f2001201c3702a8072001201b3702a0072001200c37029807200120053702900720014200200420077d22052005200456200220067d2004200754ad7d220420025620042002511b22031b4201884200200420031b2202423f8684220442808094f6c2d7e8d800200442808094f6c2d7e8d80054410020024201882202501b22031b220420077c22073703800920012002420020031b20067c2007200454ad7c220637038809200b20014180096aad4280808080800284100420090d032010450d032011102f0c030b200a2003104b000b4180d9c4004119419cd9c4001039000b41cbd9c40041d70041a4dac4001055000b0240200128028c04450d00200128028804102f0b20012802dc0341086a28020021090b41c6b5c400ad4280808080f00084221b100122032900002102200329000821042003102f41cdb5c400ad4280808080a001841001220329000021052003290008210b2003102f2001200b3702a807200120053702a00720012004370298072001200237029007200141a8036a20014190076a41201095014108211002400240410020012802ac03410020012802a8031b220320096b2209200920034b1b2203410a2003410a491b22090d00410021140c010b201b100122032900002102200329000821042003102f41b4dac400ad4280808080c000841001220329000021052003290008210b2003102f2001200b3702a807200120053702a0072001200437029807200120023702900720014180096a20014190076a10ad04024020012802800922190d00410021140c010b024002400240200129028409221d422088a722110d00201da72103410821104100210d410021140c010b0240024020110d0041002114410821104100210d0c010b20112009200920114b1b210e201941286a2103410021184100210d4100211441082110420021024200210441002112410021094100210a024002400340024002402012200e4f0d00024002400240200341106a2903002205200341186a290300220b84500d00200220057c220c2007562004200b7c200c200254ad7c220420065620042006511b450d01200c21020c030b201841ff01710d0220014180096a41186a2208200341386a29000037030020014180096a41106a220f200341306a29000037030020014180096a41086a2213200341286a2900003703002001200341206a2900003703800902400240200341586a2d00004101470d002001200341596a221541036a28000036009307200341086a2903002105200341606a2216290000210b201641086a290000210c201528000021152003290300211c200141a8046a41086a200341706a221641086a2d00003a00002001201536029007200120162900003703a804410121150c010b200341606a2215290300210b201541086a290300210c410021150b20014190086a41186a2216200829030037030020014190086a41106a2217200f29030037030020014190086a41086a220f2013290300370300200141e00a6a41086a2213200141a8046a41086a29030037030020012001290380093703900820012001280290073602a00a20012001280093073600a30a200120012903a8043703e00a0240200d2014470d00200d41016a2208200d490d0e200d41017422142008201420084b1bad42e8007e221e422088a70d0e201ea722084100480d0e02400240200d0d002008102d21100c010b2010200d41e8006c2008103121100b2010450d0d200841e8006e21140b2010200d41e8006c6a220820153a0000200841106a200c370300200841086a200b370300200820012802a00a360001200841046a20012800a30a3600002013290300210b20012903e00a210c200841c0006a420037030020084200370338200841306a2005370300200841286a201c370300200841186a200c370300200841206a200b3703002008200129039008370348200841d0006a200f290300370300200841d8006a2017290300370300200841e0006a2016290300370300410121180c010b20014180096a41186a2208200341386a29000037030020014180096a41106a220f200341306a29000037030020014180096a41086a2213200341286a2900003703002001200341206a2900003703800902400240200341586a2d00004101470d002001200341596a221541036a28000036009307200341086a2903002102200341606a2216290000211c201641086a290000211e201528000021152003290300211f200141a8046a41086a200341706a221641086a2d00003a00002001201536029007200120162900003703a804410121150c010b200341606a2215290300211c201541086a290300211e410021150b200141a00a6a41186a22162008290300370300200141a00a6a41106a2217200f290300370300200141a00a6a41086a220f201329030037030020014190086a41086a2213200141a8046a41086a29030037030020012001290380093703a00a20012001280290073602e80920012001280093073600eb09200120012903a804370390080240200d2014470d00200d41016a2208200d490d0d200d41017422142008201420084b1bad42e8007e2220422088a70d0d2020a722084100480d0d02400240200d0d002008102d21100c010b2010200d41e8006c2008103121100b2010450d0c200841e8006e21140b2010200d41e8006c6a220820153a0000200841106a201e370300200841086a201c370300200820012802e809360001200841046a20012800eb093600002013290300211c200129039008211e200841c0006a200b37030020082005370338200841306a2002370300200841286a201f370300200841186a201e370300200841206a201c370300200820012903a00a370348200841d0006a200f290300370300200841d8006a2017290300370300200841e0006a2016290300370300200c21020b200941016a2109201241016a2112200d41016a210d0c010b024020090d00410021090c010b200a20096b220820114f0d0220014190076a2003200941987f6c6a41586a220841e80010e8061a2008200341586a220f41e80010e9061a200f20014190076a41e80010e8061a0b200341e8006a21032011200a41016a220a460d020c000b0b4188bbca0020082011103b000b02402009417f6a20114f0d00201d42ffffffff0f83201120096bad42208684211d0b2012450d0041c6b5c400ad4280808080f00084100122032900002102200329000821042003102f41b4dac400ad4280808080c00084100122032900002105200329000821062003102f200120063702a807200120053702a0072001200437029807200120023702900720014180096a2019201d422088a710b10420014190076aad42808080808004842001350288094220862001280280092209ad841004201da721030240200128028409450d002009102f0b20030d020c030b201da721030b2003450d010b2019102f0b201b100122032900002102200329000821042003102f418c91c700ad4280808080a00184100122032900002105200329000821062003102f200120063702a807200120053702a0072001200437029807200120023702900720014180096a2010200d10b10420014190076aad42808080808004842001350288094220862001280280092203ad8410040240200128028409450d002003102f0b41002103024020012802dc03221141086a2802002209410276220a450d0041002103200a2009460d004100210a0340200a41026a21032009200a41046a411e71762208450d012003210a20082009470d000b0b410021120340024020124101742212410172220aad220220027e2202422088a70d002012200a2002a720092003411f71764b1b21120b02402003450d0041002003417e6a220a200a20034b1b21030c010b0b02402012450d0002400240200d41e8006c220e450d00201041c8006a210f4100210d0c010b2012417f6a210a03402009450d07200141d8046a2009417f6a10af04220320094f0d08200a450d02200a417f6a210a20012802dc0328020821090c000b0b03402009450d062011280200210a200141d8046a2009417f6a10af04220320094f0d07200d41016a210d200a20034105746a2111200e2108200f2109034020014190076a2009201110b2042001350298072102200128029007210a4101102d2203450d04200341003a00002002422086200aad842003ad4280808080108410042003102f0240200128029407450d00200a102f0b200941e8006a2109200841987f6a22080d000b200d2012460d0120012802dc03221128020821090c000b0b2014450d002010102f0b0240024002400240024002400240024020004180a70c70220d0d00024020012802d8030d0041c6b5c400ad4280808080f00084100122032900002102200329000821042003102f41ebdec700ad4280808080f00084100122032900002105200329000821062003102f200120063702a807200120053702a00720012004370298072001200237029007200141d8046a20014190076a412010aa0220012902dc04420020012802d80422031b21022003410120031b2103024020012802d403450d0020012802d003102f0b200120033602d003200120023702d4032002428080808010540d010b41c6b5c400ad4280808080f00084100122032900002102200329000821042003102f41e4dac400ad4280808080800184100122032900002105200329000821062003102f200120063702a807200120053702a00720012004370298072001200237029007200141d8046a20014190076a412010ad02024020012d00d8044101470d00200141e1046a2800002103200141e5046a2800002109200141e9046a280000210a200141ed046a2800002108200141f1046a280000211120012800d904211220012800dd04210e2001200141f5046a2800003602f404200120113602f004200120083602ec042001200a3602e804200120093602e404200120033602e0042001200e3602dc04200120123602d8040240024020012802d8032209450d0020012802d0032103200941057421094100211141002112034020014190076a200310b304200128029007220820012802980710b40441ff0171210a0240200128029407450d002008102f0b024002400240200a417e6a220a41014b0d00200a0e020102010b201141016a21110c010b201241016a21120b200341206a2103200941606a22090d000b201220114a0d010b200141d8046a10b50441c6b5c400ad4280808080f00084100122032900002102200329000821042003102f41ebdec700ad4280808080f00084100122032900002105200329000821062003102f200120063702a807200120053702a0072001200437029807200120023702900720014180096a20014190076a412010aa02200129028409420020012802800922031b21022003410120031b2103024020012802d403450d0020012802d003102f0b200120023702d403200120033602d0030b41c6b5c400ad4280808080f00084100122032900002102200329000821042003102f41ecdac400ad4280808080d00184100122032900002105200329000821062003102f200120063702a807200120053702a0072001200437029807200120023702900720014190076aad428080808080048410130b024020012802d80341024d0d0020014180096a41f9dac400411110ac04200141003a00f80420014180096a210841202103410021090340200141003a00900720014190076a20082003410047220a10e8061a024020030d00200141003a0090070b2003200a490d03200141d8046a20096a20012d0090073a00002001200941016a22093a00f8042003200a6b21032008200a6a210820094120470d000b20012903d804210220012903e004210420012903e804210520012903f0042106200141d8046a410041800210e7061a20014188076a420037030020014180076a4200370300200141f8066a2006370300200141f0066a2005370300200141e8066a2004370300200120023703e006200141c0003602d80620012802d8032203417f6a2209450d032003450d04024002402003417e6a2209450d0020012802d003210a200141d8046a2003417d6a10af0422082009490d0141acd9c40020082009103b000b41b8dac400411c418cdbc4001055000b41c6b5c400ad4280808080f00084100122032900002102200329000821042003102f41e4dac400ad4280808080800184100122032900002105200329000821062003102f200120063702a807200120053702a007200120043702980720012002370290074120102d2203450d092003200a41206a20084105746a2209290000370000200341186a200941186a220a290000370000200341106a200941106a2208290000370000200341086a200941086a221129000037000020014190076aad42808080808004842003ad428080808080048410042003102f20014190076a41086a410a3a000020014199076a2009290000370000200141a1076a2011290000370000200141a9076a2008290000370000200141b1076a200a290000370000200141123a00900741c8e1ca00410020014190076a108c010c010b41c6b5c400ad4280808080f00084100122032900002102200329000821042003102f41e4dac400ad4280808080800184100122032900002105200329000821062003102f200120063702a807200120053702a0072001200437029807200120023702900720014190076aad428080808080048410050b024020012802d403450d0020012802d003102f0b20014190076a41186a2208420037030020014190076a41106a2203420037030020014190076a41086a220942003703002001420037039007418de6c300ad4280808080e000841001220a29000021022009200a41086a2900003703002001200237039007200a102f41a2e6c300ad4280808080a001841001220a2900002102200141d8046a41086a2211200a41086a290000370300200120023703d804200a102f200320012903d804220237030020014180096a41086a200929030037030020014180096a41106a200237030020014180096a41186a2011290300370300200120012903900737038009200141d8046a20014180096a412010ad0220012d00d804210a2008200141f1046a2900003703002003200141e9046a2900003703002009200141e1046a290000370300200120012900d9043703900702400240200a4101460d00200141a00a6a41186a4200370300200141a00a6a41106a4200370300200141a00a6a41086a4200370300200142003703a00a0c010b200141a00a6a41186a2008290300370300200141a00a6a41106a2003290300370300200141a00a6a41086a200929030037030020012001290390073703a00a0b20014190076a41186a2208420037030020014190076a41106a2211420037030020014190076a41086a22094200370300200142003703900741dcbec600ad42808080808003841001220a29000021022009200a41086a2900003703002001200237039007200a102f41f4bec600ad4280808080e001841001220a2900002102200141d8046a41086a2212200a41086a290000370300200120023703d804200a102f200320012903d804370000200341086a201229030037000020014180096a41086a200929030037030020014180096a41106a201129030037030020014180096a41186a2008290300370300200120012903900737038009200141e8096a20014180096a412010aa02024002400240024020012802e80922030d002008200141a00a6a41186a2903003703002011200141a00a6a41106a2903003703002009200141a00a6a41086a290300370300200120012903a00a37039007410121034100210920014190076a210a410021120c010b20012902ec092202a7210802402002422088a7221141d100490d00200141d8046a41186a220a200141a00a6a41186a290300370300200141d8046a41106a2212200141a00a6a41106a290300370300200141d8046a41086a220e200141a00a6a41086a290300370300200120012903a00a3703d8042000417f6a41d10070220920114f0d07200320094105746a220920012903d804370000200941186a200a290300370000200941106a2012290300370000200941086a200e290300370000200821090c030b200141e8096a41086a280200211220012802ec09210920014190076a41186a200141a00a6a41186a29030037030020014190076a41106a200141a00a6a41106a29030037030020014190076a41086a200141a00a6a41086a290300370300200120012903a00a37039007024020112008460d0020014190076a210a20082109201121120c020b20014190076a210a20092011470d010b200941016a22082009490d0a200941017422112008201120084b1b220841ffffff3f712008470d0a200841057422084100480d0a0240024020090d002008102d21030c010b200320094105742008103121030b2003450d09200841057621090b200320124105746a2208200a290000370000200841186a200a41186a290000370000200841106a200a41106a290000370000200841086a200a41086a290000370000201241016a21110b200141d8046a41186a4200370300200141d8046a41106a22124200370300200141d8046a41086a220a4200370300200142003703d80441dcbec600ad4280808080800384100122082900002102200a200841086a290000370300200120023703d8042008102f41f4bec600ad4280808080e0018410012208290000210220014180096a41086a220e200841086a29000037030020012002370380092008102f2012200129038009220237030020014190076a41086a200a29030037030020014190076a41106a200237030020014190076a41186a200e290300370300200120012903d804370390070240024020030d0020014190076aad428080808080048410050c010b200141203602dc04200120014190076a3602d80420032011200141d8046a1083012009450d002003102f0b0240200d0d0010b6040b0240200041809c3170450d00200141a00a6a21210c070b20014180096a41186a420037030020014180096a41106a220a420037030020014180096a41086a220342003703002001420037038009419298ca00ad4280808080900184100122092900002102200141a8046a41086a2208200941086a290000370300200120023703a8042009102f20032008290300370300200120012903a8043703800941a898ca00ad4280808080d0028410012209290000210220014190086a41086a2208200941086a29000037030020012002370390082009102f200a2001290390082202370300200141a00a6a41086a2003290300370300200141a00a6a41106a2002370300200141a00a6a41186a200829030037030020012001290380093703a00a02400240200141a00a6a10f702220341ff01714102460d00200141a00a6aad4280808080800484100520034101710d010b200141d8046a200010a40220012d00d8044104460d0520014190076a200010a7020c060b200141d8046a200010a70220012d00d8044104460d0420014190076a200010a4020c050b200a2003104b000b41014100104b000b20094100104a000b419cc3ca0020092011103b000b200141043a0090070b200141a00a6a21210b20014180096a41186a2217420037030020014180096a41106a2222420037030020014180096a41086a220f42003703002001420037038009419298ca00ad42808080809001842202100122092900002104200141a8046a41086a2203200941086a290000370300200120043703a8042009102f200f2003290300370300200120012903a80437038009419b98ca00ad4280808080d001841001220a290000210420014190086a41086a2209200a41086a2900003703002001200437039008200a102f20222001290390082204370300200141a00a6a41086a2208200f290300370300200141a00a6a41106a22112004370300200141a00a6a41186a2212200929030037030020012001290380093703a00a200141a0036a2021412010950120012802a403210d20012802a003210e2017420037030020224200370300200f4200370300200142003703800920021001220a29000021022003200a41086a290000370300200120023703a804200a102f200f2003290300370300200120012903a80437038009418398ca00ad4280808080f001841001220329000021022009200341086a29000037030020012002370390082003102f202220012903900822023703002008200f290300370300201120023703002012200929030037030020012001290380093703a00a20014198036a2021412010950141002123024002400240200d4100200e1b2203200128029c0341002001280298031b220a4f0d00200141d8046a410472210920014181056a21120340200141d8046a200310b802024020012d00800522114103460d0020014190076a41086a200941086a290200220237030020014190076a41106a200941106a290200220437030020014190076a41186a200941186a290200220537030020014190076a41206a200941206a280200220836020020014190086a41026a220d201241026a2d00003a000020012009290200220637039007200120122f00003b01900820012802d804210e200141d8046a41086a22102002370300200141d8046a41106a22142004370300200141d8046a41186a22132005370300200141d8046a41206a22152008360200200120063703d804200141c8086a41026a2216200d2d00003a0000200120012f0190083b01c808410321080240200e2000470d0020014180096a41206a20152802003602002017201329030037030020222014290300370300200f2010290300370300200141a8046a41026a20162d00003a0000200120012903d80437038009200120012f01c8083b01a80420032118201121080b20084103470d030b200a200341016a2203470d000b0b41042124410021090c010b200141a00a6a41206a20014180096a41206a2802002209360200200141a00a6a41186a20014180096a41186a2903002202370300200141a00a6a41106a20014180096a41106a2903002204370300200141a00a6a41086a20014180096a41086a2903002205370300200141e0036a41026a2211200141a8046a41026a2d00003a0000200141e8096a41086a22122005370300200141e8096a41106a220d2004370300200141e8096a41186a220e2002370300200141e8096a41206a220f2009360200200120012903800922023703a00a200120012f01a8043b01e003200120023703e809200141e00a6a41026a221020112d00003a0000200120012f01e0033b01e00a4130102d2224450d01410121092024200036020420242018360200202420012903e809370208202420083a002c202420012f01e00a3b002d202441106a2012290300370200202441186a200d290300370200202441206a200e290300370200202441286a200f2802003602002024412f6a20102d00003a000041012123200341016a2203200a4f0d00200141d8046a410472210920014181056a211202400340200141d8046a200310b802024020012d00800522114103460d0020014190076a41086a200941086a290200220237030020014190076a41106a200941106a290200220437030020014190076a41186a200941186a290200220537030020014190076a41206a200941206a280200220836020020014190086a41026a220d201241026a2d00003a000020012009290200220637039007200120122f00003b01900820012802d804210e200141d8046a41086a220f2002370300200141d8046a41106a22102004370300200141d8046a41186a22142005370300200141d8046a41206a22132008360200200120063703d804200141c8086a41026a2215200d2d00003a0000200120012f0190083b01c808410321080240200e2000470d0020014180096a41206a201328020036020020014180096a41186a201429030037030020014180096a41106a201029030037030020014180096a41086a200f290300370300200141a8046a41026a20152d00003a0000200120012903d80437038009200120012f01c8083b01a80420032116201121080b20084103470d020b200a200341016a2203470d000b41012109410121230c010b200141a00a6a41206a222520014180096a41206a22182802002209360200200141a00a6a41186a222620014180096a41186a22192903002202370300200141a00a6a41106a222720014180096a41106a221a2903002204370300200141a00a6a41086a222820014180096a41086a22292903002205370300200141e0036a41026a222a200141a8046a41026a222b2d00003a0000200141e8096a41086a222c2005370300200141e8096a41106a222d2004370300200141e8096a41186a222e2002370300200141e8096a41206a222f2009360200200120012903800922023703a00a200120012f01a8043b01e003200120023703e809200141e00a6a41026a2230202a2d00003a0000200120012f01e0033b01e00a200341016a2103200141d8046a410472211120014181056a210d41012109410121230340200141d8046a41086a2210202c290300370300200141d8046a41106a2214202d290300370300200141d8046a41186a2213202e290300370300200141d8046a41206a2215202f28020036020020014190076a41026a220e20302d00003a0000200120012903e8093703d804200120012f01e00a3b019007024020232009470d00200941016a22122009490d042009410174220f2012200f20124b1bad42307e2202422088a70d042002a722124100480d040240024020090d002012102d21240c010b2024200941306c2012103121240b2024450d03201241306e21230b2024200941306c6a22122000360204201220163602002015280200210f20132903002102201429030021042010290300210520012903d80421062012412c6a20083a0000201241086a2006370200201241106a2005370200201241186a2004370200201241206a2002370200201241286a200f3602002012412d6a20012f0190073b00002012412f6a200e2d00003a0000200941016a21092003200a4f0d0102400340200141d8046a200310b802024020012d00800522124103460d0020014190076a41086a201141086a290200220237030020014190076a41106a201141106a290200220437030020014190076a41186a201141186a290200220537030020014190076a41206a201141206a280200220836020020014190086a41026a220e200d41026a2d00003a0000200120112902002206370390072001200d2f00003b01900820012802d804210f20102002370300201420043703002013200537030020152008360200200120063703d804200141c8086a41026a2217200e2d00003a0000200120012f0190083b01c808410321080240200f2000470d002018201528020036020020192013290300370300201a201429030037030020292010290300370300202b20172d00003a0000200120012903d80437038009200120012f01c8083b01a80420032116201221080b20084103470d020b200a200341016a2203470d000c030b0b2025201828020022123602002026201929030022023703002027201a2903002204370300202820292903002205370300202a202b2d00003a0000202c2005370300202d2004370300202e2002370300202f2012360200200120012903800922023703a00a200120012f01a8043b01e003200120023703e8092030202a2d00003a0000200120012f01e0033b01e00a200341016a21030c000b0b2009450d022024200941306c6a2131200141d8046aad4280808080800484213220014180096aad4280808080c000842133200141d8046a4104722103200141a00a6a41106a212c200141d8046a41186a21112024212a0340202a41086a2802002126202a28020021082011202a41246a290200370300200141d8046a41106a2213202a411c6a290200370300200141d8046a41086a2212202a41146a2902003703002001202a410c6a2902003703d804202a412c6a2d000022164103460d03200141c8086a41186a20112903002202370300200141c8086a41106a20132903002204370300200141c8086a41086a20122903002205370300200120012903d80422063703c808200141e8096a41186a22282002370300200141e8096a41106a22342004370300200141e8096a41086a22352005370300200120063703e80920014190076a200810a902200128029007210f0240024020012802980722090d00420021074200210b4200210c4200211b4200211c4200211e0c010b2009410574210d4200211c200f21094200211e4200210c4200211b420021074200210b0340200141d8046a2009108d02201129030021052012290300210220012903e804210620012903d804210420032009290000370000200341086a200941086a290000370000200341106a200941106a290000370000200341186a200941186a290000370000200120083602d804427f200220057c200420067c2205200454220aad7c2204200a200420025420042002511b220a1b2104427f2005200a1b210220014190036a200141d8046a10ab0220012d009003410171210a0240024020012d009103220e450d00200141f0026a20044200200ead2205420010ed0620014180036a200242002005420010ed06200141e0026a420042002002420010ed06427f20014180036a41086a290300220520012903f00220012903e0027c7c220620012903f80220012903e80284420052200620055472220e1b2105427f200129038003200e1b21060c010b200141d0026a20022004420a420010ee0620012903d00222062102200141d0026a41086a290300220521040b200941206a210942002005200a1b201b7c42002006200a1b221b200c7c220c201b54ad7c211b20054200200a1b200b7c20064200200a1b220520077c2207200554ad7c210b2004201e7c2002201c7c221c200254ad7c211e200d41606a220d0d000b0b0240200128029407450d00200f102f0b20014190076a200810a90220012802900721150240024020012802980722090d004200210242002106420021044200211f420021054200211d0c010b2009410574210d42002105201521094200211d420021044200211f4200210242002106034020032009290000370000200341086a200941086a220a290000370000200341106a200941106a220e290000370000200341186a200941186a220f290000370000200120083602d804200141c8026a200141d8046a10ab0220012d00c802211020012d00c90221142011200f2900003703002013200e2900003703002012200a290000370300200120092900003703d804200141a8026a2008200141d8046a2014411010ac02200141a8026a41186a290300201d7c20012903b802221d20057c2205201d54ad7c211d4200200141a8026a41086a29030022202010410171220a1b201f7c420020012903a8022236200a1b221f20047c2204201f54ad7c211f20204200200a1b20067c20364200200a1b220620027c2202200654ad7c2106200941206a2109200d41606a220d0d000b0b0240200128029407450d002015102f0b200141a00a6a41186a222f4200370300202c4200370300200141a00a6a41086a222d4200370300200142003703a00a41e7a2ca00ad4280808080800184100122092900002120202d200941086a290000370300200120203703a00a2009102f41ecb5c600ad4280808080d00184100122092900002120200141a8046a41086a222e200941086a290000370300200120203703a8042009102f202c20012903a804370300202c41086a2227202e29030037030020014190086a41086a2210202d29030037030020014190086a41106a2214202c29030037030020014190086a41186a2215202f290300370300200120012903a00a3703900820014190026a20014190086a4120109c0120014190026a41106a2903002136200128029002210a2001290398022137201f201b7c21382004200c7c2220200454ad21392006200b7c2106200220077c221f200254ad21074100210902402005201c7c220b420288201d201e7c200b200554ad7c220c423e86842202200c420288220484500d002002200b852004200c8584500d0041002109034020014180026a200b200c200941046a41fe007110ec06200941026a2109200129038002220220014180026a41086a290300220484500d012002200b852004200c85844200520d000b0b202a41306a212a20364200200a1b211b20374200200a1b211c203820397c211d200620077c211e42002106420021040340200141e0016a20044201862006423f888422044200200642018622064201842202420010ed06200141f0016a200242002002420010ed060240200420012903e801220584200584420052200141f0016a41086a290300220520012903e001220720077c7c2207200554720d0020012903f0012105200141d0016a200b200c200941ff007110ec0620042004200520012903d001562007200141d0016a41086a29030022055620072005511b220a1b210420062002200a1b21060b02402009450d0041002009417e6a220a200a20094b1b21090c010b0b410021090240201c420288201b423e86842202201b420288220584500d002002201c852005201b8584500d00410021090340200141c0016a201c201b200941046a41fe007110ec06200941026a210920012903c0012202200141c0016a41086a290300220584500d012002201c852005201b85844200520d000b0b42002105420021020340200141a0016a20024201862005423f888422024200200542018622054201842207420010ed06200141b0016a200742002007420010ed060240200220012903a801220b84200b84420052200141b0016a41086a290300220b20012903a001220c200c7c7c220c200b54720d0020012903b001210b20014190016a201c201b200941ff007110ec0620022002200b20012903900156200c20014190016a41086a290300220b56200c200b511b220a1b210220052007200a1b21050b02402009450d0041002009417e6a220a200a20094b1b21090c010b0b02400240024002400240200620048450450d004100210f0c010b02400240024020160e03010200010b201f202056201e201d56201e201d511b210f0c020b0340200141c0006a2020201d2006200410ee062005220b2002220c844200510d04200141c0006a41086a290300210220012903402105200141306a201f201e200b200c10ee064101210f20052001290330221b542002200141306a41086a290300220754200220075122091b0d020240201b200554200720025420091b450d004100210f0c030b200141206a200520022006200410ed06200141106a201b2007200b200c10ed060240201f200129031022027d2207201e200141106a41086a2903007d201f200254ad7d220284500d00201d200141206a41086a2903007d211b202020012903202205542109202020057d21052006211f2004211e2007210620022104200b2120200c211d2005201b2009ad7d220284500d030c010b0b4100210f0c010b0340200421072006210b20052002844200510d02200141f0006a201f201e200b200710ee0620014180016a2020201d2005200210ee064101210f200129038001220c2001290370221b5420014180016a41086a2903002204200141f0006a41086a290300220654200420065122091b0d010240201b200c54200620045420091b450d004100210f0c020b200141e0006a200c20042005200210ed06200141d0006a201b2006200b200710ed060240201f200129035022047d220c201e200141d0006a41086a2903007d201f200454ad7d22048450450d004100210f0c020b201d200141e0006a41086a2903007d211b202020012903602206542109202020067d21062005211f2002211e200c210520042102200b21202007211d2006201b2009ad7d2204844200520d000b0b200141d8046a200810a90220012802d804213020012802dc04212520012802e0042209450d022030200941057422196a212b203021090240034020014180096a41186a220a200941186a221629000037030020014180096a41106a220d200941106a221729000037030020014180096a41086a220e200941086a2218290000370300200120092900003703800920092900002102200341186a221a201629000037000020032002370000200341086a22162018290000370000200341106a22182017290000370000200120083602d804200141086a200141d8046a10ab022010200e2903003703002014200d2903003703002015200a2903003703002001200129038009370390080240200f20012d000841017145734101470d0020012d00092129200941206a21090c020b200941206a2109201941606a22190d000c040b0b034020014190076a41186a2015290300220237030020014190076a41106a2014290300220437030020014190076a41086a201029030022053703002001200129039008220637039007201120023703002013200437030020122005370300200120063703d804419298ca00ad4280808080900184100122172900002102202e201741086a290000370300200120023703a8042017102f41f9b5c600ad4280808080d000841001221729000021022010201741086a29000037030020012002370390082017102f4120102d2217450d05201720012903d804370000201741186a2011290300370000201741106a2013290300370000201741086a20122903003700002017ad4280808080800484100322192900002102201941086a2900002104201941106a2900002105200a201941186a290000370300200d2005370300200e200437030020012002370380092019102f2017102f41c000102d2217450d05201720012903a80437000020172001290390083700102017200129038009370020201741086a202e290300370000201741186a2010290300370000201741286a200e290300370000201741306a200d290300370000201741386a200a2903003700002001202941187441187541027441d897ca006a2802004180de346c20006a360280092017ad4280808080800884203310042017102f200142e4cab5fbb6ccdcb0e3003703e003200141e0036a200141d8046a10d2022009202b460d0302400340200a200941186a2217290000370300200d200941106a2219290000370300200e200941086a22292900003703002001200929000037038009200120083602d804202929000021022019290000210420092900002105201a20172900003700002018200437000020162002370000200320053700002001200141d8046a10ab022010200e2903003703002014200d2903003703002015200a290300370300200120012903800937039008200f20012d000041017145730d01202b200941206a2209470d000c050b0b20012d00012129200941206a21090c000b0b4180b2c000411941a0b1c0001039000b4180b2c000411941a0b1c0001039000b02402025450d002030102f0b200810af0202400240200f0d00200120083602e404200141053a00e004200141063a00d80441c8e1ca004100200141d8046a108c010c010b200120083602e404200141043a00e004200141063a00d80441c8e1ca004100200141d8046a108c0102400240024002402026450d0020014190076a41186a2216202829030037030020014190076a41106a2217203429030037030020014190076a41086a22182035290300370300200120012903e80937039007202f4200370300202c4200370300202d4200370300200142003703a00a419298ca00ad42808080809001842204100122092900002102202d200941086a290000370300200120023703a00a2009102f418ca8c200ad4280808080d001842205100122092900002102202e200941086a290000370300200120023703a8042009102f202c20012903a8043703002027202e2903003703002010202d2903003703002014202c2903003703002015202f290300370300200120012903a00a37039008202620006a2114200141d8046a20014190086a10c902024020012802d804220f0d004104210f41002119420021020c030b20012902dc042202a721194100210902402002422088a7221541014b0d0020150e020302030b2015210a03402009200a410176220d20096a220e2014200f200e41286c6a280200491b2109200a200d6b220a41014b0d000c020b0b201120282903003703002013203429030037030020122035290300370300200120012903e8093703d80420014190076a200141d8046a200810b1020c030b02402014200f200941286c6a280200220a460d0020092014200a4b6a21090b20112016290300370300201320172903003703002012201829030037030020012001290390073703d804200920154d0d01419ae3c300411e41f8b4ca001039000b20112016290300370300201320172903003703002012201829030037030020012001290390073703d80441002115410021090b024020152019470d0020152002a7470d00201541016a220a2015490d042015410174220d200a200d200a4b1bad42287e2202422088a70d042002a7220a4100480d040240024020150d00200a102d210f0c010b200f201541286c200a1031210f0b200f450d03200a41286ead21020b200f200941286c6a220a41286a200a201520096b41286c10e9061a200a2014360200200a20012903d804370204200a410c6a2012290300370200200a41146a2013290300370200200a411c6a2011290300370200200a2008360224202f4200370300202c4200370300202d4200370300200142003703a00a2004100122092900002104200141e00a6a41086a220a200941086a290000370300200120043703e00a2009102f202141086a200a290300370000202120012903e00a37000020051001220929000021042010200941086a29000037030020012004370390082009102f202c200129039008370000202720102903003700002012202d2903003703002013202c2903003703002011202f290300370300200120012903a00a3703d8040240200f0d00203210050c010b2002a7210920014180096a200f201541016a1081012032200135028809422086200128028009220aad8410040240200128028409450d00200a102f0b2009450d00200f102f0b202a2031470d000c030b0b1036000b1038000b02402023450d002024102f0b200141a00a6a41186a4200370300200141a00a6a41106a220a4200370300200141a00a6a41086a22034200370300200142003703a00a419298ca00ad42808080809001841001220929000021022003200941086a290000370300200120023703a00a2009102f418ca8c200ad4280808080d00184100122092900002102200141a8046a41086a2208200941086a290000370300200120023703a8042009102f200a20012903a804220237030020014190086a41086a200329030037030020014190086a41106a200237030020014190086a41186a2008290300370300200120012903a00a37039008200141d8046a20014190086a10c90220012802d8042203410420031b210e0240024020012902dc04420020031b2206422088a7220f450d00200e200f41286c6a210841002109200141d8046a41186a2111200141d8046a41106a2112200141d8046a41086a210d200e210302400340024020032802002000460d0020090d020c030b200341246a280200210a200341046a29000021022003410c6a2900002104200341146a290000210520112003411c6a29000037030020122005370300200d2004370300200120023703d80420014190076a200141d8046a200a10b102200941016a21092008200341286a2203470d000b0b2009200f4b0d0120014180096a41186a2208420037030020014180096a41106a2211420037030020014180096a41086a220342003703002001420037038009419298ca00ad42808080809001841001220a2900002102200141a8046a41086a2212200a41086a290000370300200120023703a804200a102f20032012290300370300200120012903a80437038009418ca8c200ad4280808080d001841001220a290000210220014190086a41086a2212200a41086a2900003703002001200237039008200a102f2022200129039008370000202241086a2012290300370000200141a00a6a41086a2003290300370300200141a00a6a41106a2011290300370300200141a00a6a41186a200829030037030020012001290380093703a00a200141d8046a200e200941286c6a200f20096b1081012021ad428080808080048420013502e00442208620012802d8042203ad84100420012802dc04450d002003102f0b02402006a7450d00200e102f0b200010fa03200141f00a6a24000f0b2009200f104b000b41b8dac400411c41d4dac4001055000b41acd9c40020032009103b000bca1e05057f027e047f0c7e017f230041c00b6b22042400200441a8066a200141c80310e8061a200441a0036a200441a8066a10d10341012105024002400240024002400240024002400240024020042d00a0034101460d00200441206a200441a0036a41086a41800310e8061a024020032802002206450d00200341086a280200210720032802042108200441186a4180e5c300411010950141002105200441a8066a200428021c410020042802181b10d20320042802a8062101200420042802b0063602a403200420013602a00320062007200441a0036a109d02024020042802ac06450d002001102f0b2008450d002006102f0b200441f0096a200441206a41d0006a10f102200441a8066a200441206a41800310e8061a20042903f00921090240024020042903c806220a4202520d00200420093703a0030240200441a0036a200210d303220141ff017141024622020d002002450d080b4100210b20042802f8064113470d0a200441a0036a200441fc066a10a20320042d00a0034101460d01200441cc036a2802002107200441c8036a280200210c200441c4036a2802002108200441bc036a280200210d200441b8036a280200210e0240200441c0036a2802002201450d002001410c6c2102200e210103400240200141046a280200450d002001280200102f0b2001410c6a2101200241746a22020d000b0b0240200d450d00200e102f0b02402007450d002007410c6c21022008210103400240200141046a280200450d002001280200102f0b2001410c6a2101200241746a22020d000b0b200c450d0a2008102f0c0a0b200441900b6a41186a200441a8066a41186a290300370300200441900b6a41106a200441a8066a41106a290300370300200441900b6a41086a200441a8066a41086a290300370300200420042903a8063703900b200441e8066a290300210f200441e0066a2903002110200441f0066a280200210820042903d0062111200441a0036a41186a4200370300200441a0036a41106a220c4200370300200441a0036a41086a22014200370300200442003703a003418de6c300ad4280808080e000842212100122072900002113200441b00b6a41086a220e200741086a290000370300200420133703b00b2007102f2001200e290300370300200420042903b00b3703a003419ce6c300ad4280808080e00084100122072900002113200441a80a6a41086a220b200741086a290000370300200420133703a80a2007102f200c20042903a80a2213370300200441c80a6a41086a2001290300370300200441c80a6a41106a2013370300200441c80a6a41186a200b290300370300200420042903a0033703c80a200441106a200441c80a6a41201095010240200a4201520d0020114200510d030b201210012201290000210a200e200141086a2900003703002004200a3703b00b2001102f41f0e8c600ad4280808080f0008410012201290000210a200b200141086a2900003703002004200a3703a80a2001102f4120102d2201450d03200120042903900b370000200141186a200441900b6a41186a290300370000200141106a200441900b6a41106a290300370000200141086a200441900b6a41086a2903003700002001ad428080808080048410032207290000210a200741086a2900002112200741106a2900002113200441a0036a41186a220e200741186a290000370300200441a0036a41106a220b2013370300200441a0036a41086a220c20123703002004200a3703a0032007102f2001102f41c000102d2201450d03200120042903b00b370000200120042903a80a370010200120042903a003370020200141086a200441b00b6a41086a290300370000200141186a200441a80a6a41086a290300370000200141286a200c290300370000200141306a200b290300370000200141386a200e290300370000200441a0036a200110f6020240024020042903a0034201510d004200210a41002107420021124200211342002111420021144200211542002116420021174100210e0c010b200441b0036a2903002117200441c0036a2903002115200441b8036a2903002114200441a0036a41306a2903002111200441a0036a41286a2903002113200441e0036a2903002112200441a0036a41386a290300210a200441e8036a280200210720042903a803211620042802ec03210e0b2001102f024020072008470d00418de6c300ad4280808080e00084100122012900002118200441a80a6a41086a200141086a290000370300200420183703a80a2001102f41f0e8c600ad4280808080f00084100122012900002118200441a0036a41086a200141086a290000370300200420183703a0032001102f4120102d2201450d04200120042903900b370000200141186a200441900b6a41186a290300370000200141106a200441900b6a41106a290300370000200141086a200441900b6a41086a2903003700002001ad4280808080800484100322072900002118200741086a2900002119200741106a290000211a200441c80a6a41186a220b200741186a290000370300200441c80a6a41106a220c201a370300200441c80a6a41086a2019370300200420183703c80a2007102f2001102f41c000102d2201450d04200120042903a80a370000200141086a200441a80a6a41086a290300370000200120042903a003370010200141186a200441a0036a41086a290300370000200120042903c80a370020200141286a200441c80a6a41086a290300370000200141306a200c290300370000200141386a200b2903003700004104102d2207450d042007200841016a36000020074104410810312207450d042007200e3a000420074108411510312207450d04200720163700052007410d6a201737000020074115412a10312207450d04200720143700152007411d6a20153700002007412a41d40010312207450d042007200a370035200720133700252007413d6a20123700002007412d6a20113700002001ad42808080808008842007ad4280808080d0088410042007102f2001102f200420093703a0030240200441a0036a200210d303220141ff01714102470d00200420093703c80a200441a0036a2010200f200441900b6a200441c80a6a200210d403024020042d00a0034101460d00200441cc036a2802002107200441c8036a280200210b200441c4036a2802002108200441bc036a280200210c200441b8036a280200210e0240200441c0036a2802002201450d002001410c6c2102200e210103400240200141046a280200450d002001280200102f0b2001410c6a2101200241746a22020d000b0b0240200c450d00200e102f0b02402007450d002007410c6c21022008210103400240200141046a280200450d002001280200102f0b2001410c6a2101200241746a22020d000b0b200b450d072008102f0c070b20042d00a10322014102460d0620042f01a20321020c070b20014180feff077141087621020c060b41034102200720084b1b2102410021010c050b20042d00a10322014102460d0820042f01a20341087420017221010c050b200020042f00a1033b0001200041013a0000200041036a20042d00a3033a000020032802002106410021000c050b41d0caca00411941eccaca001039000b1036000b200441a0036a200441a8066a41d0006a10e201024020042d00a0034101460d00200441cc036a2802002107200441c8036a280200210b200441c4036a2802002108200441bc036a280200210c200441b8036a280200210e0240200441c0036a2802002201450d002001410c6c2102200e210103400240200141046a280200450d002001280200102f0b2001410c6a2101200241746a22020d000b0b0240200c450d00200e102f0b02402007450d002007410c6c21022008210103400240200141046a280200450d002001280200102f0b2001410c6a2101200241746a22020d000b0b200b450d042008102f0c040b20042d00a10322014102460d0320042f01a20321020b2002410874200141ff01717221010b200441f8066a108e01200420042900980a3703880a20042004419f0a6a28000036008f0a200041036a20014110763a0000200020013b0001200041013a000020054521000b20000d022006450d02200341046a280200450d022006102f0c020b200441f00a6a41186a200441900b6a41186a290300370300200441f00a6a41106a200441900b6a41106a290300370300200441f00a6a41086a200441900b6a41086a290300370300200420042903900b3703f00a4101210b0b200441a80a6a41186a2208200441f00a6a41186a2201290300370300200441a80a6a41106a220e200441f00a6a41106a2202290300370300200441a80a6a41086a220c200441f00a6a41086a2207290300370300200420042903f00a3703a80a200441a0036a200441f8066a41b00210e8061a200441900b6a41186a220d2008290300370300200441900b6a41106a221b200e290300370300200441900b6a41086a2208200c290300370300200420042903a80a3703900b4102210e0240200b450d002001200d2903003703002002201b29030037030020072008290300370300200420042903900b3703f00a4101210e0b200441d20a6a2007290300370100200441da0a6a2002290300370100200441e20a6a20012903003701002004200e3a00c90a200420042903f00a3701ca0a41002101200441003a00c80a200441900b6a200441a0036a200441c80a6a108b01200420042900910b3703a003200420082800003600a703024020042d00900b220741044622080d00200420042800a7033600cf0a200420042903a0033703c80a0b200420042800cf0a36009f0a200420042903c80a3703980a2004200428009f0a36008f0a200420042903980a3703880a200441f8096a41086a2202200428008f0a360000200420042903880a3700f909200420073a00f8092009210a024020080d00200441f8096a108c03200228020021074101210120042903f809210a0b200441bc066a2009370200200441a8066a41106a2007360200200441a8066a41086a200a370300200441c4066a20042902a003370200200441cc066a200441a0036a41086a280200360200200420013a00ac06200420042f00c80a3b00ad06200441003a00a8062004200441ca0a6a2d00003a00af0641c8e1ca004100200441a8066a108c01200441086a4180e5c30041101095012004200428020c41016a410120042802081b3602a8064180e5c300ad4280808080800284200441a8066aad4280808080c0008410042000410c6a2002280200360200200041046a20042903f809370200200041003a00002006450d002005450d00200341046a280200450d002006102f0b200441c00b6a24000be22007017f027e027f017e057f037e037f23004190116b2202240042022103024002400240024002400240024002400240200129036822044202520d00200241186a20014198016a41b00210e8061a0c010b20024196036a200141246a41c20010e8061a200241d8036a41086a220520014188016a290300370300200241d8036a41106a220620014190016a290300370300200220014180016a2903003703d803200141f8006a29030021032001290370210720024190046a41206a200141206a28020036020020024190046a41186a200141186a29020037030020024190046a41106a200141106a29020037030020024190046a41086a200141086a2902003703002002200129020037039004200241c80a6a20024190046a10bb0120024190086a41086a2208200241d10a6a29000037030020024190086a41106a2209200241d90a6a29000037030020024190086a41186a220a200241e10a6a290000370300200220022900c90a3703900820022d00c80a4101460d02200241f0036a41186a200a290300370300200241f0036a41106a2009290300370300200241f0036a41086a200829030037030020022002290390083703f003200241800d6a20014198016a41b00210e8061a200241b00f6a41106a2006290300370300200241b00f6a41086a2005290300370300200220022903d8033703b00f41002105200241e8106a410010fa02200241a8106a41086a200241f3106a290000370300200241a8106a41106a200241fb106a290000370300200241bd106a200241e8106a41186a2201290000370000200220022900eb103703a81020022f01e810210b20022d00ea10210c20014200370300200241e8106a41106a22094200370300200241e8106a41086a22014200370300200242003703e810418de6c300ad4280808080e0008410012206290000210d200241c8106a41086a2208200641086a2900003703002002200d3703c8102006102f20012008290300370300200220022903c8103703e810419ce6c300ad4280808080e0008410012206290000210d20024188106a41086a220a200641086a2900003703002002200d370388102006102f2009200229038810220d37030020082001290300370300200241c8106a41106a200d370300200241c8106a41186a200a290300370300200220022903e8103703c810200241106a200241c8106a4120109501024020044201520d0020074200510d052002280214410020022802101b2101417f21052001ad220d20032003200d541b220d200d20037d2007827d220d42ffffffff0f560d00200da721050b418de6c300ad4280808080e0008410012201290000210d200241c8106a41086a2206200141086a2900003703002002200d3703c8102001102f4193e6c300ad428080808090018410012201290000210d20024188106a41086a2208200141086a2900003703002002200d370388102001102f2002200536028c112002418c116aad4280808080c0008410032201290000210d200141086a290000210e200141106a290000210f200241e8106a41186a2209200141186a290000370300200241e8106a41106a220a200f370300200241e8106a41086a2210200e3703002002200d3703e8102001102f41c000102d2201450d05200120022903c8103700002001200229038810370010200120022903e810370020200141086a2006290300370000200141186a2008290300370000200141286a2010290300370000200141306a200a290300370000200141386a2009290300370000200241086a200141c00041c8e1ca004100410010b501200228020821082001102f41012101024020084101470d00200241e8106a200510fa0220024188106a41086a200241f3106a29000037030020024188106a41106a200241fb106a29000037030020024188106a41156a20024180116a290000370000200241c8106a41086a200241a8106a41086a290300370300200241c8106a41106a200241a8106a41106a290300370300200241c8106a41156a200241a8106a41156a290000370000200220022900eb1037038810200220022903a8103703c81020022f01e81020022d00ea10411074722106410021010b200241e80f6a41086a2205200241c8106a41086a290300370300200241e80f6a41106a2208200241c8106a41106a290300370300200241e80f6a41156a2209200241c8106a41156a290000370000200241c80f6a41086a220a20024188106a41086a290300370300200241c80f6a41106a221020024188106a41106a290300370300200241c80f6a41156a221120024188106a41156a290000370000200220022903c8103703e80f20022002290388103703c80f20010d01200241d8076a41156a22012009290000370000200241d8076a41106a22092008290300370300200241d8076a41086a22082005290300370300200241b8076a41086a2205200a290300370300200241b8076a41106a220a2010290300370300200241b8076a41156a22102011290000370000200220022903e80f3703d807200220022903c80f3703b807200241f8076a41106a2211200241b00f6a41106a290300370300200241f8076a41086a2212200241b00f6a41086a290300370300200220022903b00f3703f807200241c80a6a41046a200241800d6a41b00210e8061a20024190086a200241c80a6a41b40210e8061a20024190046a20024190086a41046a41b00210e8061a200241f6066a200b200c41107472220b4110763a0000200241f4066a200b3b0100200241d0066a2003370300200241c8066a2007370300200241d8066a220b20022903f807370300200241e0066a2012290300370300200241e8066a220c2011290300370300200241f7066a20022903d807370000200241ff066a200829030037000020024187076a20092903003700002002418c076a2001290000370000200220043703c006200241e7013602f00620024196076a20064110763a000020024194076a20063b010020024197076a20022903b8073700002002419f076a2005290300370000200241a7076a200a290300370000200241ac076a20102900003700004104102d2201450d05200242043702cc0a200220013602c80a20024190046a200241c80a6a1091010240024020022903c0064201520d0020022903d00620022903c8062203420c882204420120044201561b8021040240024020022802cc0a220520022802d00a22016b4102490d0020022802c80a21050c010b200141026a22062001490d09200541017422012006200120064b1b22014100480d090240024020050d002001102d21050c010b20022802c80a20052001103121050b2005450d08200220013602cc0a200220053602c80a20022802d00a21010b2002200141026a3602d00a200520016a2004a741047420037aa7417f6a22014101200141014b1b2201410f2001410f491b723b00000c010b0240024020022802cc0a20022802d00a2201460d0020022802c80a21050c010b200141016a22052001490d08200141017422062005200620054b1b22064100480d080240024020010d002006102d21050c010b20022802c80a20012006103121050b2005450d07200220063602cc0a200220053602c80a20022802d00a21010b2002200141016a3602d00a200520016a41003a00000b200c200241c80a6a1095022002200b3602900820024190086a200241c80a6a10c20220022802f00621060240024020022802cc0a220520022802d00a22016b4104490d0020022802c80a21050c010b200141046a22082001490d07200541017422012008200120084b1b22014100480d070240024020050d002001102d21050c010b20022802c80a20052001103121050b2005450d06200220013602cc0a200220053602c80a20022802d00a21010b2002200141046a3602d00a200520016a20063600004120102d2201450d052001200241f4066a290200370000200141186a2002418c076a290200370000200141106a20024184076a290200370000200141086a200241fc066a2902003700000240024020022802cc0a220620022802d00a22056b4120490d0020022802c80a21060c010b200541206a22082005490d07200641017422052008200520084b1b22054100480d070240024020060d002005102d21060c010b20022802c80a20062005103121060b2006450d06200220053602cc0a200220063602c80a20022802d00a21050b200620056a220641086a200141086a290000370000200641106a200141106a290000370000200641186a200141186a2900003700002002200541206a3602d00a200620012900003700002001102f4120102d2201450d05200120024194076a290200370000200141186a200241ac076a290200370000200141106a200241a4076a290200370000200141086a2002419c076a2902003700000240024020022802cc0a220620022802d00a22056b4120490d0020022802c80a21060c010b200541206a22082005490d07200641017422052008200520084b1b22054100480d070240024020060d002005102d21060c010b20022802c80a20062005103121060b2006450d06200220053602cc0a200220063602c80a20022802d00a21050b200620056a220641086a200141086a290000370000200641106a200141106a290000370000200641186a200141186a2900003700002002200541206a3602d00a200620012900003700002001102f20022802cc0a210620022802c80a21010240024020022802d00a22054180024b0d0020024196036a20012005200241f0036a10e90321050c010b2005ad4220862001ad84100322052900002103200541086a2900002104200541106a2900002107200241c80a6a41186a200541186a290000370300200241c80a6a41106a2007370300200241c80a6a41086a2004370300200220033703c80a2005102f20024196036a200241c80a6a4120200241f0036a10e90321050b02402006450d002001102f0b2005450d03200241f0026a41086a200241f0036a41086a290300370300200241f0026a41106a200241f0036a41106a290300370300200241f0026a41186a200241f0036a41186a290300370300200241c8026a41086a200241d0066a290300370300200241c8026a41106a200241d8066a290300370300200241c8026a41186a200241e0066a290300370300200241e8026a200241e8066a290300370300200220022903f0033703f0022002200241c8066a2903003703c80220022903c0062103200241186a20024190046a41b00210e8061a0b200041086a20022903f002370300200041286a2003370300200041306a20022903c802370300200041206a200241f0026a41186a290300370300200041186a200241f0026a41106a290300370300200041106a200241f0026a41086a290300370300200041386a200241c8026a41086a290300370300200041c0006a200241c8026a41106a290300370300200041c8006a200241c8026a41186a290300370300200041d0006a200241c8026a41206a290300370300200041d8006a200241186a41b00210e8061a200041003a000020024190116a24000f0b200241800d6a108e01200041036a41003a0000200041800a3b0001200041013a00000c050b200041013b0001200041013a0000200041036a41003a000020014198016a108e010c040b20004180083b0001200041013a0000200041036a41003a000020024190046a108e010c030b41d0caca00411941eccaca001039000b1036000b1038000b20024190116a24000bd10403027f017e047f230041d0006b22022400418de6c300ad4280808080e00084100122032900002104200241086a200341086a290000370300200220043703002003102f41a881c400ad4280808080d00184100122032900002104200241106a41086a200341086a290000370300200220043703102003102f2002200136022c20022002412c6aad4280808080c00084100622032900003703302003102f200241c4006a200241306a360200200241003a00482002200241306a41086a36023c20022002412c6a3602402002200241306a360238200241206a200241386a106c0240024002400240024002402002280228220541206a2201417f4c0d0020022802202106024002402001450d002001102d2203450d062001410f4d0d01200121070c050b411021074110102d21030c030b200141017422084110200841104b1b220741004e0d010c050b103d000b200320012007103121030b2003450d010b20032002290300370000200341086a200241086a2903003700000240024020074170714110460d00200721080c010b200741017422084120200841204b1b22084100480d0220032007200810312203450d010b20032002290310370010200341186a200241106a41086a29030037000002400240200841606a2005490d00200821070c010b2005415f4b0d02200841017422072001200720014b1b22074100480d0220032008200710312203450d010b200341206a2006200510e8061a20002001360208200020073602042000200336020002402002280224450d002006102f0b200241d0006a24000f0b1036000b1038000bdf0808017f017e027f017e017f017e067f017e230041e0006b2202240020002902002103200241306a41186a22044200370300200241306a41106a22054200370300200241306a41086a2200420037030020024200370330418de6c300ad4280808080e0008422061001220729000021082000200741086a290000370300200220083703302007102f41f880c400ad4280808080800284100122072900002108200241d0006a41086a2209200741086a290000370300200220083703502007102f200520022903502208370300200241106a41086a220a2000290300370300200241106a41106a220b2008370300200241106a41186a220c200929030037030020022002290330370310200241086a200241106a41201095014100210741800c210d0240417f200228020c410020022802081b220e20016a22012001200e491b220e42808080c0f588fe064280808080f28ba80920034280808080f01f835022011b22082008428094ebdc038022084280ec94a37c7e7c4280cab5ee01562008a76a4b0d002004420037030020054200370300200042003703002002420037033020061001220729000021082000200741086a290000370300200220083703302007102f41d480c400ad4280808080b0028422061001220729000021082009200741086a290000370300200220083703502007102f200520022903502208370300200a2000290300370300200b2008370300200c2009290300370300200220022903303703102002200241106a412010950141002107417f2002280204410020022802001b22054180afd0e502418094ebdc0320011b22002003a7220920002009491b6a220920092005491b220920004b0d00200241306a41186a22014200370300200241306a41106a22074200370300200241306a41086a2205420037030020024200370330418de6c300ad4280808080e0008422031001220d2900002108200241d0006a41086a2200200d41086a29000037030020022008370350200d102f200520002903003703002002200229035037033041f880c400ad42808080808002841001220d29000021082000200d41086a29000037030020022008370350200d102f200720022903502208370300200241106a41086a22042005290300370300200241106a41106a220a2008370300200241106a41186a220b2000290300370300200220022903303703102002200e360230200241106aad42808080808004842208200241306aad4280808080c00084220f10042001420037030020074200370300200542003703002002420037033020031001220d29000021032000200d41086a29000037030020022003370350200d102f200520002903003703002002200229035037033020061001220d29000021032000200d41086a29000037030020022003370350200d102f20072002290350220337030020042005290300370300200a2003370300200b200029030037030020022002290330370310200220093602302008200f1004410221074100210d0b200241e0006a2400200d2007720b851006017f047e027f017e037f017e230041f0026b2206240020064190016a200520042902002207a72007422888a72001200210f00402400240200629039001220720064190016a41086a290300220884500d00200641003a00ab01200620083703e802200620073703e002200620033602a4012006410141112001200284501b3a00aa01200620033602ac012006200641ac016a3602f0012006200641aa016a3602ec012006200641a4016a3602e8012006200641ab016a3602e4012006200641e0026a3602e001200641b0016a2003200641e0016a10a504024020062802b0014101470d00200041036a41003a000020004180023b0001200041013a00000c020b200641d8016a2903002101200641d0016a29030021020240200641b0016a41086a2903004201520d00200641b0016a41106a290300210920062802ac01210320064198026a200641b0016a41186a29030037030020064190026a2009370300200641e0016a41086a41003a0000200641e9016a2003290000370000200641f1016a200341086a290000370000200641f9016a200341106a29000037000020064181026a200341186a290000370000200641033a00e00141c8e1ca004100200641e0016a108c010b200641f8006a20022001109b01200641f8006a41106a29030021012006290380012102024020062903782209a7450d00200641c0006a200242004204420010ed06200641306a420042002002420010ed06200641d0006a2006290340200641c0006a41086a2903002209200142028620062903307c7c220a4205420010ee0642b3e6cc99b3e6cc99332006290350200142ffffffffffffffff3f83200152200629033842005272200a2009547222031b220920022002200956200142b3e6cc99b3e6cc9933200641d0006a41086a29030020031b22095620012009511b22031b220a2009200120031b220910be01200641e0006a2002200a7d200120097d2002200a54ad7d109b01200641e0006a41106a290300210220062903682101024020062903602209a7450d00200641e0016a10fb02200641e0016a2001200210b5020c020b2009500d01200641e0016a41186a220b4200370300200641e0016a41106a22044200370300200641e0016a41086a22054200370300200642003703e00141e7a2ca00ad428080808080018422091001220c290000210a200641e0026a41086a2203200c41086a2900003703002006200a3703e002200c102f20052003290300370300200620062903e0023703e00141ecb5c600ad4280808080d00184220a1001220c290000210d2003200c41086a2900003703002006200d3703e002200c102f200420062903e002220d370300200641b0016a41086a220e2005290300370300200641b0016a41106a220f200d370300200641b0016a41186a22102003290300370300200620062903e0013703b001200641186a200641b0016a4120109c01200641186a41106a290300210d200629032021112006280218210c200b42003703002004420037030020054200370300200642003703e00120091001220b29000021092003200b41086a290000370300200620093703e002200b102f20052003290300370300200620062903e0023703e001200a1001220b29000021092003200b41086a290000370300200620093703e002200b102f200420062903e0022209370300200e2005290300370300200f200937030020102003290300370300200620062903e0013703b00120064200200d4200200c1b220920027d20114200200c1b2202200154ad7d220a200220017d2201200256200a200956200a2009511b22031b3703e80120064200200120031b3703e001200641b0016aad4280808080800484200641e0016aad428080808080028410040c010b2009500d00200641e0016a41186a220b4200370300200641e0016a41106a22044200370300200641e0016a41086a22054200370300200642003703e00141e7a2ca00ad428080808080018422091001220c290000210a200641e0026a41086a2203200c41086a2900003703002006200a3703e002200c102f20052003290300370300200620062903e0023703e00141ecb5c600ad4280808080d00184220a1001220c290000210d2003200c41086a2900003703002006200d3703e002200c102f200420062903e002220d370300200641b0016a41086a220e2005290300370300200641b0016a41106a220f200d370300200641b0016a41186a22102003290300370300200620062903e0013703b0012006200641b0016a4120109c01200641106a290300210d200629030821112006280200210c200b42003703002004420037030020054200370300200642003703e00120091001220b29000021092003200b41086a290000370300200620093703e002200b102f20052003290300370300200620062903e0023703e001200a1001220b29000021092003200b41086a290000370300200620093703e002200b102f200420062903e0022209370300200e2005290300370300200f200937030020102003290300370300200620062903e0013703b00120064200200d4200200c1b220920017d20114200200c1b2201200254ad7d220a200120027d2202200156200a200956200a2009511b22031b3703e80120064200200220031b3703e001200641b0016aad4280808080800484200641e0016aad428080808080028410040b200041003a0000200041306a41013a0000200041286a4200370300200041206a4280808080c000370300200041186a4204370300200041106a427f370300200041086a2007427f2008501b3703000b200641f0026a24000bec0101027f20014180feff07714108762102024002402001410171450d00411f210341b6cfca00210102400240200241ff01710e03000103000b41c100210341f5ceca0021010c020b41c100210341b4ceca0021010c010b411f21034195ceca0021010240024002400240024002400240200241ff01710e080006010203040507000b4120210341f5cdca0021010c060b412721034195cdca0021010c050b4117210341feccca0021010c040b41dfccca0021010c030b4126210341b9ccca0021010c020b412b2103418eccca0021010c010b4139210341bccdca0021010b20002003360204200020013602000b160020002001280208360204200020012802003602000b13002000410136020420004190d2c3003602000b3400200041d39bca0036020420004100360200200041146a4104360200200041106a41c0d3c300360200200041086a42083702000b130020004101360204200041a4dcc3003602000b130020004102360204200041ecddc3003602000b2d01017f02404104102d22020d001036000b20004284808080c00037020420002002360200200241e8073600000b2d01017f02404104102d22020d001036000b20004284808080c00037020420002002360200200241e5003600000b88090b107f017e017f017e017f017e017f017e017f017e017f230041306b2202240002400240024020014108490d00200141017641feffffff07712203417f6a220420014f0d022001410d74200173220541117620057322054105742005732206417f2001417f6a677622077122054100200120052001491b6b220520014f0d01200241286a22082000200441306c6a220441286a2209290300370300200241206a220a200441206a220b290300370300200241186a220c200441186a220d290300370300200241106a220e200441106a220f290300370300200241086a2210200441086a2211290300370300200220042903003703002000200541306c6a22052903002112200541086a22132903002114200541106a22152903002116200541186a22172903002118200541206a2219290300211a2009200541286a221b290300370300200b201a370300200d2018370300200f20163703002011201437030020042012370300201b20082903003703002019200a2903003703002017200c2903003703002015200e2903003703002013201029030037030020052002290300370300024020032001490d00200321040c030b2006410d7420067322044111762004732204410574200473220620077122044100200120042001491b6b220520014f0d01200241286a22082000200341306c6a220441286a2209290300370300200241206a220a200441206a220b290300370300200241186a220c200441186a220d290300370300200241106a220e200441106a220f290300370300200241086a2210200441086a2211290300370300200220042903003703002000200541306c6a22052903002112200541086a22132903002114200541106a22152903002116200541186a22172903002118200541206a2219290300211a2009200541286a221b290300370300200b201a370300200d2018370300200f20163703002011201437030020042012370300201b20082903003703002019200a2903003703002017200c2903003703002015200e29030037030020132010290300370300200520022903003703002003410172220420014f0d022006410d742006732205411176200573220541057420057320077122054100200120052001491b6b220520014f0d01200241286a22032000200441306c6a220141286a2204290300370300200241206a2206200141206a2207290300370300200241186a2208200141186a2209290300370300200241106a220a200141106a220b290300370300200241086a220c200141086a220d290300370300200220012903003703002000200541306c6a22002903002112200041086a22052903002114200041106a220e2903002116200041186a220f2903002118200041206a2210290300211a2004200041286a22112903003703002007201a37030020092018370300200b2016370300200d2014370300200120123703002011200329030037030020102006290300370300200f2008290300370300200e200a2903003703002005200c290300370300200020022903003703000b200241306a24000f0b4198bbca0020052001103b000b4188bbca0020042001103b000bf20907077f027e0b7f017e017f027e017f230041306b22022400024020014101762203450d0003402003417f6a2203210402400240024003402004410174220541017221060240200541026a220520014f0d00200620014f0d02200520062000200641306c6a22072903002000200541306c6a220829030056200741086a2903002209200841086a290300220a562009200a511b1b21060b200620014f0d03200420014f0d022000200441306c6a22042903002000200641306c6a220529030056200441086a22072903002209200541086a2208290300220a562009200a511b450d03200241286a220b200441286a220c290300370300200241206a220d200441206a220e290300370300200241186a220f200441186a2210290300370300200241106a2211200441106a2212290300370300200241086a221320072903003703002002200429030037030020082903002109200541106a2214290300210a200541186a22152903002116200541206a2217290300211820052903002119200c200541286a221a290300370300200e2018370300201020163703002012200a3703002007200937030020042019370300201a200b2903003703002017200d2903003703002015200f290300370300201420112903003703002008201329030037030020052002290300370300200621040c000b0b41b0bcca0020062001103b000b41c0bcca0020042001103b000b20030d000b0b0240024020014102490d002001210703402007417f6a220720014f0d02200241286a220b200041286a2205290300370300200241206a220c200041206a2206290300370300200241186a220d200041186a2208290300370300200241106a220e200041106a2210290300370300200241086a220f200041086a2211290300370300200220002903003703002000200741306c6a22042903002109200441086a290300210a200441106a2903002116200441186a2903002118200441206a29030021192005200441286a2903003703002006201937030020082018370300201020163703002011200a3703002000200937030041002105024002400240034020042002290300370300200441286a200b290300370300200441206a200c290300370300200441186a200d290300370300200441106a200e290300370300200441086a200f2903003703002005410174220441017221060240200441026a220420074f0d00200620074f0d02200420062000200641306c6a22082903002000200441306c6a221029030056200841086a2903002209201041086a290300220a562009200a511b1b21060b200620074f0d03200520074f0d022000200541306c6a22052903002000200641306c6a220429030056200541086a22082903002209200441086a2210290300220a562009200a511b450d03200b200541286a2211290300370300200c200541206a2212290300370300200d200541186a2213290300370300200e200541106a2214290300370300200f20082903003703002002200529030037030020102903002109200441106a290300210a200441186a2903002116200441206a2903002118200429030021192011200441286a29030037030020122018370300201320163703002014200a3703002008200937030020052019370300200621050c000b0b41b0bcca0020062007103b000b41c0bcca0020052007103b000b200741014b0d000b0b200241306a24000f0b4198bbca0020072001103b000bb80c050a7f017e017f037e0f7f230041306b22022400200041c07e6a21032001417f6a2104200041306a2105410021062001413249210741012108024003400240024020082001490d00410021090c010b410121092000200841306c220a6a220b290300220c200b41506a220d29030056200b41086a290300220e200d41086a290300220f56200e200f511b0d002005200a6a210903404101210b20042008460d03200841016a210820092903002210200c58210b200941086a290300220f200e51210d200f200e58210a200941306a21092010210c200f210e200b200a200d1b0d000b200820014921090b2008200146210b20070d0120082001460d010240024002400240024002402008417f6a220b20014f0d002009450d012000200b41306c6a2209290300210e20092000200841306c22116a220b290300370300200241286a220a200941286a2212290300370300200241206a2213200941206a2214290300370300200241186a2215200941186a2216290300370300200241106a2217200941106a2218290300370300200241086a2219200941086a220d290300370300200d200b41086a221a2903003703002018200b41106a221b2903003703002016200b41186a221c2903003703002014200b41206a221d2903003703002012200b41286a221e2903003703002002200e370300200b2002290300370300201e200a290300370300201d2013290300370300201c2015290300370300201b2017290300370300201a201929030037030020084102490d052009290300220c20002008417e6a221341306c6a220a29030058200d290300220e200a41086a221f290300220f58200e200f511b0d052009200a290300370300200d201f2903003703002009290310210f2018200a41106a2903003703002015201229030037030020172014290300370300201920162903003703002016200a41186a2903003703002014200a41206a2903003703002012200a41286a2903003703002002200f370300024020130d00410021130c050b200c20002008417d6a220d41306c6a220929030058200e200941086a290300220f58200e200f511b0d04200320116a2109034020094188016a200941d8006a29030037030020094180016a200941d0006a290300370300200941f8006a200941c8006a290300370300200941f0006a200941c0006a290300370300200941e8006a200941386a290300370300200941e0006a200941306a290300370300200d450d032009290300210f200941086a210a200941506a2109200d417f6a210d200c200f56200e200a290300220f56200e200f511b0d000b200d41016a21130c030b4188bbca00200b2001103b000b4198bbca0020082001103b000b410021130b2000201341306c6a210a0b200a200c370300200a200e3703082000201341306c6a22092002290300370310200941286a2015290300370300200941206a2017290300370300200941186a20192903003703000b200641016a21060240200120086b22144102490d00200b290330200b290300220c58200b41386a290300220f201a290300220e58200f200e511b0d00200b200b41306a2212290300370300201a201241086a290300370300200b290310210f201b201241106a2903003703002015201e2903003703002017201d2903003703002019201c290300370300201c201241186a290300370300201d201241206a290300370300201e201241286a2903003703002002200f3703004101211a024020144103490d00200b290360200c58200b41e8006a290300220f200e58200f200e511b0d00200b41e0006a21094103210a4102210d0340200d221a41306c200b6a221241506a220d2009290300370300200d41286a200941286a290300370300200d41206a200941206a290300370300200d41186a200941186a290300370300200d41106a200941106a290300370300200d41086a200941086a290300370300200a20144f0d01200a41306c2109200a210d200a41016a210a200b20096a2209290300200c56200941086a290300220f200e56200f200e511b0d000b0b2012200c3703002012200e370308200b201a41306c6a22092002290300370310200941286a2015290300370300200941206a2017290300370300200941186a20192903003703000b20064105470d000b4100210b0b200241306a2400200b0be52003167f037e067f230041c0026b220424000240024020014115490d0041012105410121060240024002400340200121072000210820052006714101732109024002400240024002400240034002400240024002402003450d00024020054101710d002000200110e1032003417f6a21030b2001410276220a41036c210b200a410174210c4100210d024020014132490d00200a200a417f6a220d2000200a4105746a2000200d4105746a412010ea06220e410048220f1b2210200a41016a2211200d200a200f1b220a200020114105746a2000200a4105746a412010ea0641004822111b220a2000200a4105746a200020104105746a412010ea0622104100481b210a200c200c417f6a220d2000200c4105746a2000200d4105746a412010ea06221241004822131b2214200c4101722215200d200c20131b220c200020154105746a2000200c4105746a412010ea0622134100481b220c2000200c4105746a200020144105746a412010ea0622144100481b210c200b200b417f6a220d2000200b4105746a2000200d4105746a412010ea06221541004822161b2217200b41016a2218200d200b20161b220b200020184105746a2000200b4105746a412010ea06220d4100481b220b2000200b4105746a200020174105746a412010ea0622164100481b210b41024101200f1b200e411f7620111b2010411f766a2012411f766a2013411f766a2014411f766a2015411f766a200d411f766a2016411f766a210d0b2000200c4105746a2000200a4105746a412010ea06220f411f76200d6a2000200b4105746a2000200a200c200f410048220f1b220e4105746a412010ea062210411f766a210d2000200b200e20104100481b220b4105746a2000200c200a200f1b22194105746a412010ea06417f4c0d01200b21190c020b2000200110e2030c0f0b200d41016a220d410c490d0002402001410176220b450d00200020014105746a41606a210a2000210c0340200441206a41186a220d200c41186a220f290000370300200441206a41106a220e200c41106a2210290000370300200441206a41086a2211200c41086a22122900003703002004200c290000370320200a41086a2213290000211a200a41106a2214290000211b200a41186a2215290000211c200c200a290000370000200f201c3700002010201b3700002012201a3700002015200d2903003700002014200e29030037000020132011290300370000200a2004290320370000200a41606a210a200c41206a210c200b417f6a220b0d000b0b20012019417f736a21194101210a0c010b200d45210a0b0240200a452009724101710d002000200110e3030d0d0b2002450d02201920014f0d0102402002200020194105746a220a412010ea0641004e0d0020002108200121070c040b200441206a41186a2212200041186a220e290000370300200441206a41106a2213200041106a2210290000370300200441206a41086a2214200041086a221129000037030020042000290000370320200a41086a220c290000211a200a41106a220b290000211b200a41186a220d290000211c2000200a290000370000200e201c3700002010201b3700002011201a370000200d2012290300370000200b2013290300370000200c2014290300370000200a2004290320370000200441c0016a41186a2217200e290000370300200441c0016a41106a22182010290000370300200441c0016a41086a22192011290000370300200420002900003703c001200041606a2115200041206a21164100210c2001210b03400240200c200b417f6a220d4f0d002016200c4105746a210a0340200441c0016a200a412010ea06417f4c0d01200a41206a210a200d200c41016a220c470d000b200d210c0b2015200b4105746a210a02400340200c200b417f6a220b4f0d01200441c0016a200a412010ea06210d200a41606a220f210a200d4100480d000b20122016200c4105746a220a41186a220d2900003703002013200a41106a221d2900003703002014200a41086a22062900003703002004200a290000370320200f41286a221e290000211a200f41306a221f290000211b200f41386a2220290000211c200a200f41206a220f290000370000200d201c370000201d201b3700002006201a37000020202012290300370000201f2013290300370000201e2014290300370000200f2004290320370000200c41016a210c0c010b0b200020042903c001370000200e2017290300370000201020182903003700002011201929030037000002402001200c41016a220a490d002000200a4105746a21002001200a6b220141154f0d010c0c0b0b200a2001104b000b41d4bbca0020192001103b000b2007450d010b201920074f0d01200441206a41186a2216200841186a221e290000370300200441206a41106a2217200841106a221f290000370300200441206a41086a2218200841086a222029000037030020042008290000370320200820194105746a220a41086a220c290000211a200a41106a220b290000211b200a41186a220d290000211c2008200a290000370000201e201c370000201f201b3700002020201a370000200d2016290300370000200b2017290300370000200c2018290300370000200a2004290320370000200441186a2205201e290000370300200441106a2209201f290000370300200441086a2221202029000037030020042008290000370300200841206a21014100211d2007417f6a220d450d022001210a0340200a2004412010ea0641004e0d03200a41206a210a200d201d41016a221d470d000b200d211d0c020b4188bbca0041004100103b000b4198bbca0020192007103b000b200820074105746a210c200d210b02400340200c2100200b220a201d4d22060d01200a417f6a210b200041606a220c2004412010ea06417f4a0d000b0b0240200a201d490d00200d200a490d0241800121144100210f410021124100210d4100211141800121152001201d4105746a2222210103400240200020016b220a419fc0004b22190d00200a410576220a41807f6a200a2012200f492011200d49220c72220b1b210a0240200b450d002015200a200c1b2115200a2014200c1b21140c010b200a200a41017622156b21140b02402011200d470d00024020150d00200441c0006a220d21110c010b4100210a200441c0006a2211210d2001210c0340200d200a3a0000200d200c2004412010ea06417f73411f766a210d200c41206a210c2015200a41016a220a470d000b0b02402012200f470d00024020140d00200441c0016a220f21120c010b200041606a210a4100210c200441c0016a2212210f0340200f200c3a0000200f200a2004412010ea06411f766a210f200a41606a210a2014200c41016a220c470d000b0b0240200f20126b220a200d20116b220c200c200a4b1b2213450d002016200120112d00004105746a220a41186a2900003703002017200a41106a2900003703002018200a41086a2900003703002004200a290000370320200120112d00004105746a220a200020122d0000417f734105746a220c290000370000200a41186a200c41186a290000370000200a41106a200c41106a290000370000200a41086a200c41086a290000370000024020134101460d004100210a034020002012200a6a220e2d0000417f734105746a220c20012011200a6a41016a22102d00004105746a220b290000370000200c41186a200b41186a290000370000200c41106a200b41106a290000370000200c41086a200b41086a290000370000200120102d00004105746a220c2000200e41016a2d0000417f734105746a220b290000370000200c41186a200b41186a290000370000200c41106a200b41106a290000370000200c41086a200b41086a290000370000200a41026a210c200a41016a220b210a200c2013490d000b2012200b6a21122011200b6a21110b200020122d0000417f734105746a220a2004290320370000200a41186a2016290300370000200a41106a2017290300370000200a41086a2018290300370000201241016a2112201141016a21110b200020144105746b20002012200f461b2100200120154105746a20012011200d461b210120190d000b024002402011200d4f0d002000210a034020162001200d417f6a220d2d00004105746a220c41186a220b2900003703002017200c41106a220f2900003703002018200c41086a22002900003703002004200c290000370320200a41606a220a41086a220e290000211a200a41106a2210290000211b200a41186a2212290000211c200c200a290000370000200b201c370000200f201b3700002000201a3700002012201629030037000020102017290300370000200e2018290300370000200a20042903203700002011200d490d000c020b0b2001210a2012200f4f0d000340200f417f6a220f2d0000210c2016200a41186a220b2900003703002017200a41106a220d2900003703002018200a41086a22012900003703002004200a2900003703202000200c417f734105746a220c41086a220e290000211a200c41106a2210290000211b200c41186a2211290000211c200a200c290000370000200b201c370000200d201b3700002001201a3700002011201629030037000020102017290300370000200e2018290300370000200c2004290320370000200a41206a210a2012200f490d000b0b20082004290300370000201e2005290300370000201f2009290300370000202020212903003700002007200a20226b410576201d6a22014d0d032016201e2900003703002017201f2900003703002018202029000037030020042008290000370320200820014105746a220a41086a220c290000211a200a41106a220b290000211b200a41186a220d290000211c2008200a290000370000201e201c370000201f201b3700002020201a370000200d2016290300370000200b2017290300370000200c2018290300370000200a2004290320370000200720016b220c450d04200c20012001200c4b1b210b2007410376210d200a41206a2100024002402001200c417f6a220c490d002000200c200a200310e003200821000c010b200820012002200310e003200a2102200c21010b200b200d4f2105200141154f0d010c050b0b201d200a104b000b200a200d104a000b4198bbca0020012007103b000b41a8bbca00411c41c4bbca001039000b20014102490d00200041606a210f4101210b0340200b410574210a200b417f6a210c200b41016a210b02402000200a6a220a2000200c4105746a220d412010ea06417f4a0d00200441c0016a41186a220e200a41186a2210290000370300200441c0016a41106a2211200a41106a2212290000370300200441c0016a41086a2213200a41086a22142900003703002004200a2900003703c001200a200d2900003700002014200d41086a2900003700002012200d41106a2900003700002010200d41186a2900003700004100210d0240200c450d00200f210a03400240200441c0016a200a412010ea064100480d00200c210d0c020b200a41206a200a290000370000200a41386a200a41186a290000370000200a41306a200a41106a290000370000200a41286a200a41086a290000370000200a41606a210a200c417f6a220c0d000b0b2000200d4105746a220a20042903c001370000200a41186a200e290300370000200a41106a2011290300370000200a41086a20132903003700000b200f41206a210f200b2001470d000b0b200441c0026a24000beb050a067f017e017f017e017f017e017f017e017f017e230041206b2202240002400240024020014108490d00200141017641feffffff07712203417f6a220420014f0d022001410d74200173220541117620057322054105742005732206417f2001417f6a677622077122054100200120052001491b6b220520014f0d01200020044105746a22042900002108200020054105746a220541086a2209290000210a200541106a220b290000210c200541186a220d290000210e20042005290000370000200441186a220f2900002110200f200e370000200441106a220f290000210e200f200c370000200441086a2204290000210c2004200a370000200d2010370000200b200e3700002009200c37000020052008370000024020032001490d00200321040c030b2006410d7420067322054111762005732205410574200573220620077122054100200120052001491b6b220520014f0d01200020034105746a22042900002108200020054105746a220541086a2209290000210a200541106a220b290000210c200541186a220d290000210e20042005290000370000200441186a220f2900002110200f200e370000200441106a220f290000210e200f200c370000200441086a2204290000210c2004200a370000200d2010370000200b200e3700002009200c370000200520083700002003410172220420014f0d022006410d742006732205411176200573220541057420057320077122054100200120052001491b6b220520014f0d01200020044105746a22012900002108200020054105746a220041086a2205290000210a200041106a2204290000210c200041186a2203290000210e20012000290000370000200141186a220629000021102006200e370000200141106a2206290000210e2006200c370000200141086a2201290000210c2001200a370000200320103700002004200e3700002005200c370000200020083700000b200241206a24000f0b4198bbca0020052001103b000b4188bbca0020042001103b000be90609067f017e017f017e017f027e017f017e027f230041206b22022400024020014101762203450d0003402003417f6a2203210402400240024003402004410174220541017221060240200541026a220520014f0d00200620014f0d0220052006200020064105746a200020054105746a412010ea064100481b21060b200620014f0d03200420014f0d02200020044105746a2204200020064105746a2205412010ea0641004e0d03200541086a22072900002108200541106a2209290000210a200541186a220b290000210c2004290000210d20042005290000370000200441186a220e290000210f200e200c370000200441106a220e290000210c200e200a370000200441086a2204290000210a20042008370000200b200f3700002009200c3700002007200a3700002005200d370000200621040c000b0b41b0bcca0020062001103b000b41c0bcca0020042001103b000b20030d000b0b0240024020014102490d002001210703402007417f6a220720014f0d02200241186a2209200041186a2204290000370300200241106a220b200041106a2205290000370300200241086a220e200041086a2203290000370300200020074105746a220641086a2900002108200641106a290000210a200641186a290000210c2000290000210d200020062900003700002004200c3700002005200a370000200320083700002002200d37030041002105024002400240034020062002290300370000200641186a2009290300370000200641106a200b290300370000200641086a200e2903003700002005410174220641017221040240200641026a220620074f0d00200420074f0d0220062004200020044105746a200020064105746a412010ea064100481b21040b200420074f0d03200520074f0d02200020054105746a2205200020044105746a2206412010ea0641004e0d032009200541186a2203290000370300200b200541106a2210290000370300200e200541086a2211290000370300200641086a2900002108200641106a290000210a200641186a290000210c2005290000210d200520062900003700002003200c3700002010200a370000201120083700002002200d370300200421050c000b0b41b0bcca0020042007103b000b41c0bcca0020052007103b000b200741014b0d000b0b200241206a24000f0b4198bbca0020072001103b000bdb08030a7f017e0a7f230041c0006b22022400200041a07f6a21032001417f6a2104200141324921054101210641002107024003400240024020062001490d00410021080c010b41012108200020064105746a2209200941606a412010ea064100480d0003404101210a20042006460d03200641016a2106200941206a220a2009412010ea062108200a21092008417f4a0d000b200620014921080b2006200146210a20050d0120062001460d0102400240024002402006417f6a220920014f0d002008450d0120002006410574220b6a220a290000210c200a200020094105746a22092900003700002009200c370000200a41086a220d290000210c200d200941086a220e290000370000200e200c370000200a41106a220f290000210c200f200941106a22102900003700002010200c370000200a41186a2211290000210c2011200941186a22122900003700002012200c37000020064102490d03200920002006417e6a22084105746a2213412010ea06417f4a0d032009290000210c20092013290000370000200241206a41186a22142012290000370300200241206a41106a22152010290000370300200241206a41086a2216200e290000370300200e201341086a2900003700002010201341106a2900003700002012201341186a2900003700002002200c3703204100210e2008450d022003200b6a210903400240200241206a2009412010ea064100480d002008210e0c040b200941206a2009290000370000200941386a200941186a290000370000200941306a200941106a290000370000200941286a200941086a290000370000200941606a21092008417f6a22080d000c030b0b4188bbca0020092001103b000b4198bbca0020062001103b000b2000200e4105746a22092002290320370000200941186a2014290300370000200941106a2015290300370000200941086a20162903003700000b200741016a21070240200120066b22104102490d00200a41206a2209200a412010ea06417f4a0d00200a290000210c200a2009290000370000200241206a41186a22122011290000370300200241206a41106a2213200f290000370300200241206a41086a220b200d290000370300200d200941086a290000370000200f200941106a2900003700002011200941186a2900003700002002200c3703204101210d024020104103490d00200a41c0006a200241206a412010ea06417f4a0d00410321084102210e0340200a200e4105746a220941606a220d2009290000370000200d41186a200941186a290000370000200d41106a200941106a290000370000200d41086a200941086a290000370000024020082010490d00200e210d0c020b20084105742109200e210d2008210e200841016a2108200a20096a200241206a412010ea064100480d000b0b200a200d4105746a22092002290320370000200941186a2012290300370000200941106a2013290300370000200941086a200b2903003700000b20074105470d000b4100210a0b200241c0006a2400200a0bc21301147f23004180026b220424000240024020014115490d0041012105410121060240024002400340200121072000210820052006714101732109024002400240024002400240034002400240024002402003450d00024020054101710d002000200110e5032003417f6a21030b2001410276220a41036c210b200a410174210c4100210d024020014132490d00200b200b417f6a220e2000200b4102746a280200220f2000200e4102746a280200221049220d1b2211200b41016a2212200e200b200d1b200020124102746a280200220b2010200f200d1b220e4922101b200b200e20101b200020114102746a2802004922131b210b200c200c417f6a220e2000200c4102746a28020022112000200e4102746a280200221249220f1b2214200c4101722215200e200c200f1b200020154102746a280200220c20122011200f1b220e4922111b200c200e20111b200020144102746a2802004922141b210c200a200a417f6a22122000200a4102746a2802002215200020124102746a280200220649220e1b2216200a41016a22172012200a200e1b200020174102746a280200220a20062015200e1b22154922121b200a201520121b200020164102746a2802004922151b210a41024101200e1b200e20121b20156a200f6a20116a20146a200d6a20106a20136a210d0b200d2000200c4102746a280200220f2000200a4102746a280200221049220e6a2000200b4102746a280200220d2010200f200e1b22114922106a210f200d201120101b2000200c200a200e1b220d4102746a280200490d01200b200a200c200e1b20101b210d0c020b2000200110e6030c0f0b200f41016a220f410c490d0002402001410176220b450d00200020014102746a417c6a210a2000210c0340200c280200210e200c200a280200360200200a200e360200200c41046a210c200a417c6a210a200b417f6a220b0d000b0b2001200d417f736a210d4101210a0c010b200f45210a0b0240200a452009724101710d002000200110e7030d0d0b2002450d02200d20014f0d01024020022802002000200d4102746a220a280200220c4f0d0020002108200121070c040b2000280200210b2000200c360200200a200b3602002000417c6a2110200041046a21112000280200210d4100210c2001210b03400240200c200b417f6a220e4f0d002011200c4102746a210a0340200d200a280200490d01200a41046a210a200e200c41016a220c470d000b200e210c0b2010200b4102746a210a02400340200c200b417f6a220b4f0d01200a280200210e200a417c6a220f210a200d200e490d000b2011200c4102746a220a2802002112200a200e360200200f41046a2012360200200c41016a210c0c010b0b2000200d36020002402001200c41016a220a490d002000200a4102746a21002001200a6b220141154f0d010c0c0b0b200a2001104b000b41d4bbca00200d2001103b000b2007450d010b200d20074f0d012008280200210a20082008200d4102746a220c280200360200200c200a360200200841046a210f20082802002111410021142007417f6a220d450d02200f210a0340200a28020020114f0d03200a41046a210a200d201441016a2214470d000b200d21140c020b4188bbca0041004100103b000b4198bbca00200d2007103b000b200820074102746a210c200d210b02400340200c210e200b220a20144d22060d01200a417f6a210b200e417c6a220c28020020114f0d000b0b0240200a2014490d00200d200a490d0241800121054100210b410021014100210c410021104180012109200f20144102746a2216210d03400240200e200d6b220a4183084b22130d00200a410276220a41807f6a200a2001200b492010200c49220f7222001b210a02402000450d002009200a200f1b2109200a2005200f1b21050c010b200a200a41017622096b21050b02402010200c470d00024020090d002004220c21100c010b4100210a20042210210c200d210f0340200c200a3a0000200c200f28020020114f6a210c200f41046a210f2009200a41016a220a470d000b0b02402001200b470d00024020050d0020044180016a220b21010c010b200e417c6a210a4100210f20044180016a2201210b0340200b200f3a0000200b200a2802002011496a210b200a417c6a210a2005200f41016a220f470d000b0b0240200b20016b220a200c20106b220f200f200a4b1b2212450d00200d20102d00004102746a220a2802002115200a200e20012d0000417f734102746a280200360200024020124101460d004100210a0340200e2001200a6a220f2d0000417f734102746a200d2010200a6a41016a22002d00004102746a280200360200200d20002d00004102746a200e200f41016a2d0000417f734102746a280200360200200a41026a210f200a41016a2200210a200f2012490d000b200120006a2101201020006a21100b200e20012d0000417f734102746a2015360200200141016a2101201041016a21100b200e20054102746b200e2001200b461b210e200d20094102746a200d2010200c461b210d20130d000b024002402010200c4f0d00200e210a0340200d200c417f6a220c2d00004102746a220b280200210e200b200a417c6a220a280200360200200a200e3602002010200c490d000c020b0b200d210a2001200b4f0d000340200a280200210c200a200e200b417f6a220b2d0000417f734102746a220d280200360200200d200c360200200a41046a210a2001200b490d000b0b200820113602002007200a20166b41027620146a22014d0d032008200820014102746a220a280200360200200a2011360200200720016b220c450d04200c20012001200c4b1b210b2007410376210e200a41046a2100024002402001200c417f6a220c490d002000200c200a200310e403200821000c010b200820012002200310e403200a2102200c21010b200b200e4f2105200141154f0d010c050b0b2014200a104b000b200a200d104a000b4198bbca0020012007103b000b41a8bbca00411c41c4bbca001039000b20014102490d00200041746a210e4102210d4101210a0340200a41016a210c02402000200a4102746a2210280200220b2000200a417f6a22114102746a220f28020022124f0d002010201236020002402011450d00200b2000200a417e6a22104102746a221128020022124f0d00200f2012360200024020100d002011210f0c010b0240200b2000200a417d6a220a4102746a220f2802002210490d002011210f0c010b20112010360200200a450d00200d210f200e210a02400340200b200a28020022104f0d01200a41046a2010360200200a417c6a210a200f41016a2210200f4921112010210f2011450d000b0b200a41046a210f0b200f200b3602000b200d417f6a210d200e41046a210e200c210a200c2001470d000b0b20044180026a24000bf30201067f02400240024020014108490d00200141017641feffffff07712202417f6a220320014f0d022001410d74200173220441117620047322044105742004732205417f2001417f6a677622067122044100200120042001491b6b220420014f0d01200020034102746a220328020021072003200020044102746a220428020036020020042007360200024020022001490d00200221030c030b2005410d7420057322044111762004732204410574200473220520067122044100200120042001491b6b220420014f0d01200020024102746a220328020021072003200020044102746a2204280200360200200420073602002002410172220320014f0d022005410d742005732204411176200473220441057420047320067122044100200120042001491b6b220420014f0d01200020034102746a220128020021022001200020044102746a2200280200360200200020023602000b0f0b4198bbca0020042001103b000b4188bbca0020032001103b000bc70301067f024020014101762202450d0003402002417f6a2202210302400240024003402003410174220441017221050240200441026a220420014f0d00200520014f0d0220042005200020054102746a280200200020044102746a280200491b21050b200520014f0d03200320014f0d02200020034102746a22032802002204200020054102746a220628020022074f0d032003200736020020062004360200200521030c000b0b41b0bcca0020052001103b000b41c0bcca0020032001103b000b20020d000b0b0240024020014102490d002001210403402004417f6a220420014f0d02200028020021052000200020044102746a2203280200360200200320053602004100210302400240024003402003410174220641017221050240200641026a220620044f0d00200520044f0d0220062005200020054102746a280200200020064102746a280200491b21050b200520044f0d03200320044f0d02200020034102746a22032802002206200020054102746a220728020022024f0d032003200236020020072006360200200521030c000b0b41b0bcca0020052004103b000b41c0bcca0020032004103b000b200441014b0d000b0b0f0b4198bbca0020042001103b000b8a05010f7f2001417d6a2102200041086a21032000416c6a21042001417f6a2105200041046a2106410021072001413249210841012109024003400240024020092001490d004100210a0c010b4101210a20002009410274220b6a220c280200220d200c417c6a280200490d002006200b6a210a03404101210c20052009460d03200941016a2109200a280200220c200d4f210b200a41046a210a200c210d200b0d000b2009200149210a0b2009200146210c20080d0120092001460d0102400240024002402009417f6a220d20014f0d00200a450d012000200d4102746a220c280200210b200c20002009410274220e6a220a280200220d360200200a200b360200024020094102490d00200d20002009417e6a220b4102746a220f28020022104f0d00200c201036020002400240200b0d00200f210c0c010b0240200d20002009417d6a220b4102746a220c2802002210490d00200f210c0c010b200f2010360200200b450d00200d200a41706a280200220f4f0d002004200e6a2110024003402010220c41086a200f360200200b417f6a220b450d01200c417c6a2110200d200c280200220f490d000b0b200c41046a210c0b200c200d3602000b200741016a2107200120096b220b4102490d03200a280204220f200a280200220c4f0d03200a41046a210d200a200f360200200b4103490d02200a280208220f200c4f0d02200d200f3602000240200b41044f0d00200a41086a210d0c030b200220096b210a2003200e6a210d0340200d41046a220b280200220e200c4f0d03200d200e360200200b210d200a417f6a220a0d000b200b210d0c020b4188bbca00200d2001103b000b4198bbca0020092001103b000b200d200c3602000b20074105470d000b4100210c0b200c0bef0201067f230041d0006b2201240002400240410b102d2202450d00200241edde91e3063600002002410b411610312203450d00200342f0f2bd99f7edd8b4e500370004200341002800c4d94436000c2003410f6a41002800c7d944360000200141003a00484113210220032104410021050340200141003a0008200141086a20042002410047220610e8061a024020020d00200141003a00080b20022006490d02200141286a20056a20012d00083a00002001200541016a22053a0048200220066b2102200420066a210420054120470d000b200141086a41186a2202200141286a41186a290300370300200141086a41106a2205200141286a41106a290300370300200141086a41086a2206200141286a41086a290300370300200120012903283703082003102f200041186a2002290300370000200041106a2005290300370000200041086a200629030037000020002001290308370000200141d0006a24000f0b1036000b20062002104b000bc90402017f037e23004190016b22042400024002400240024020002d00000e03000102000b200441206a41186a200341186a290000370300200441206a41106a200341106a290000370300200441206a41086a200341086a29000037030020042003290000370320200041016a2002ad4220862001ad84200441206a101a41014621000c020b200441206a41186a200341186a290000370300200441206a41106a200341106a290000370300200441206a41086a200341086a29000037030020042003290000370320200041016a2002ad4220862001ad84200441206a101441014621000c010b2002ad4220862001ad84100322012900002105200141086a2900002106200141106a2900002107200441186a200141186a290000370300200441106a2007370300200441086a2006370300200420053703002001102f41012101200441206a200041016a200410ea034100210020042d00200d00200441c8006a41206a200441c1006a2d00003a0000200441c8006a41186a200441396a290000370300200441c8006a41106a200441316a290000370300200441c8006a41086a200441296a29000037030020042004290021370348200441c8006aad4280808080900484100322002900002105200041086a2900002106200041106a2900002107200441f0006a41186a200041186a290000370300200441f0006a41106a2007370300200441f0006a41086a2006370300200420053703702000102f0240200441f0006a2003460d00200441f0006a2003412010ea064521010b200121000b20044190016a240020000bcf0303017f017e037f230041d0006b22032400024020012002102c2204422088a72201450d002004a722052d0000220241014b0d002001417f6a210602400240024020020e020001000b41002101200341003a0049200541016a21070240034020062001460d01200341286a20016a200720016a2d00003a00002003200141016a22023a00492002210120024121470d000b200341106a200341316a290000370300200341186a200341396a290000370300200341206a200341c1006a2900003703002003200329002937030820032d0028210241002106200341086a21010c020b200141ff0171450d02200341003a00490c020b2006450d0120052d0001220241034f0d01200341086a41186a200341286a41186a290000370300200341086a41106a200341286a41106a290000370300200341086a41086a200341286a41086a2900003703002003200329002837030841012106200341086a21010b200020023a0001200020063a0000200041026a20012900003700002000410a6a200141086a290000370000200041126a200141106a2900003700002000411a6a200141186a2900003700002005102f200341d0006a24000f0b41f4c8ca00412e200341286a418ccaca0041a4c9ca00103e000b130020004102360204200041f0e0c3003602000b130020004102360204200041fce1c3003602000b910302087f017e230041106b2202240002400240024020012802042203450d00200128020022042d0000210520012003417f6a22063602042001200441016a3602002006450d0020042d0001210720012003417e6a22063602042001200441026a3602002006450d0020042d0002210820012003417d6a22063602042001200441036a36020020060d010b200041003602040c010b20042d0003210620012003417c6a3602042001200441046a360200200241086a200110e60102400240024020022802080d002001280204200228020c2204490d002004417f4c0d01024002400240024020040d00410121030c010b200410332203450d0120012802042004490d0220032001280200200410e8061a200128020422092004490d052001200920046b3602042001200128020020046a3602000b2003450d0220002004ad220a422086200a8437020820002003360204200020074108742005722008411074722006411874723602000c050b1036000b2003102f0b200041003602040c020b103d000b20042009104b000b200241106a24000bc80504047f017e087f037e230041f0006b220224002002200110e60102400240024002402002280200450d00200041003602000c010b20022802042203200128020441286e2204200420034b1b2205ad42287e2206422088a70d012006a72204417f4c0d010240024020040d00410821070c010b2004102d2207450d03200441286e21050b02402003450d00410021080340200241003a00682008220941016a21082001280204210a417f210b4100210402400240024002400340200a2004460d01200241c8006a20046a2001280200220c2d00003a00002001200a200b6a3602042001200c41016a3602002002200441016a220d3a0068200b417f6a210b200d2104200d4120470d000b200241286a41186a2204200241c8006a41186a290300370300200241286a41106a220b200241c8006a41106a290300370300200241286a41086a220e200241c8006a41086a29030037030020022002290348370328200a200d6b220d4108490d01200c29000121062001200c41096a3602002001200d41786a360204200241086a41086a220d200e290300370300200241086a41106a220a200b290300370300200241086a41186a220b20042903003703002002200229032837030820052009470d030240200941017422042008200420084b1bad42287e220f422088a70d00200fa7220441004e0d030b1038000b200441ff0171450d00200241003a00680b200041003602002005450d042007102f0c040b0240024020090d002004102d21070c010b2007200941286c2004103121070b2007450d05200441286e21050b2007200941286c6a22042002290308370300200d290300210f200a2903002110200b290300211120042006370320200441186a2011370300200441106a2010370300200441086a200f37030020082003470d000b0b2000200536020420002007360200200041086a20033602000b200241f0006a24000f0b103d000b1036000b8e0301087f230041106b22022400024002400240200028020822034105744104722204417f4c0d00200028020021052004102d2206450d0120024100360208200220043602042002200636020020032002106902402003450d0020034105742107200228020021082002280204210420022802082103034002400240200420036b4120490d00200341206a2106200421090c010b200341206a22062003490d05200441017422092006200920064b1b22094100480d050240024020040d002009102d21080c010b200820042009103121080b2008450d040b200820036a22032005290000370000200341186a200541186a290000370000200341106a200541106a290000370000200341086a200541086a2900003700002009210420062103200541206a2105200741606a22070d000b2002200936020420022006360208200220083602000b2000410c6a200210ce02200228020421052001290200200235020842208620022802002203ad84100402402005450d002003102f0b200241106a24000f0b103d000b1036000b1038000bc20101047f230041106b22022400200028020022002802082103200028020021004101210420012802184199a5c00041012001411c6a28020028020c1100002105200241003a0005200220053a00042002200136020002402003450d0003402002200036020c20022002410c6a4190ebc30010621a200041016a21002003417f6a22030d000b20022d000421050b0240200541ff01710d00200228020022002802184198a5c00041012000411c6a28020028020c11000021040b200241106a240020040bd90201077f0240024002400240024002402000280208220141ffffff3f712001470d0020014105742202417f4c0d0020002802002103024020020d00200320014105746a210041012104200121050c040b2002102d2204450d01200320014105746a21002002410576220520014f0d03200541017422022001200220014b1b220241ffffff3f712002470d02200241057422024100480d020240024020050d002002102d21040c010b200420054105742002103121040b2004450d01200241057621050c040b103d000b1036000b1038000b20010d00410021020c010b200020036b2106410021020340200420026a2200200320026a2207290000370000200041186a200741186a290000370000200041106a200741106a290000370000200041086a200741086a2900003700002006200241206a2202470d000b200320014105746a20036b41057521020b02402005450d002004102f0b20020b8c0201067f0240200041086a220228020022032001490d00200220013602000f0b0240024002400240200041046a280200220420036b200120036b2205490d0020002802002104200321000c010b200320056a22062003490d02200441017422072006200720064b1b22064100480d020240024020040d002006102d21040c010b200028020020042006103121040b2004450d0120002004360200200041046a2006360200200041086a28020021000b200420006a210602400240024020054102490d00200641002003417f73220320016a10e7061a2004200020016a20036a22006a21060c010b2005450d010b200641003a0000200041016a21000b200220003602000f0b1036000b1038000bf80204017f017e067f037e0240024002400240024020012802082202ad42287e2203422088a70d002003a72204417f4c0d0020012802002105024020040d002005200241286c6a210641082107200221010c020b024002402004102d2207450d002005200241286c6a2106200441286e220120024f0d03200141017422082002200820024b1b220941286c22024100480d0102400240200441274b0d002002102d21070c010b2007200141286c2002103121070b20070d040b1036000b1038000b103d000b2002450d01200121090b200620056b210841002104410021060340200520046a22022903002103200241086a290300210a200241106a290300210b200241186a290300210c200720046a220141206a200241206a290300370300200141186a200c370300200141106a200b370300200141086a200a37030020012003370300200641016a21062008200441286a2204470d000b200921010c010b410021060b2000200636020820002001360204200020073602000bbb0301037f024020002802082201450d002000280200220020014198016c6a21020340024020002d0000417a6a2201410c4b0d00024002400240024002400240024020010e0d00070701070207030704050706000b200041086a2d00004101470d06200041146a280200450d06200041106a280200102f0c060b200041046a2d00000d052000410c6a280200450d05200041086a280200102f0c050b200041046a2802000d042000410c6a280200450d04200041086a280200102f0c040b200041086a2d00004107470d03200041306a280200450d032000412c6a280200102f0c030b200041046a2d00004102490d020240200041106a2802002201450d00200141d0006c2103200041086a28020041c0006a210103400240200141046a280200450d002001280200102f0b200141d0006a2101200341b07f6a22030d000b0b2000410c6a280200450d022000280208102f0c020b200041086a280200450d01200041046a280200102f0c010b200041086a2d00004106470d00200041306a280200450d002000412c6a280200102f0b20004198016a210102402000418c016a280200450d00200028028801102f0b2001210020012002470d000b0b0bbd0c05047f017e0b7f027e027f230041e0006b22022400200241086a200110e601024002402002280208450d00200041003602000c010b02400240024002400240200228020c2203200128020441246e2204200420034b1b2205ad42247e2206422088a70d002006a72204417f4c0d000240024020040d00410421070c010b2004102d2207450d02200441246e21050b024020030d00410021040c050b2002412d6a2108200241cb006a220941056a210a4100210b4100210c03402001280204220d450d042001280200220e2d000021042001200d417f6a220f3602042001200e41016a360200200441074b0d040240024002400240024002400240024002400240024020040e08000f010f03040205000b2002200110e60120022802000d0e200128020420022802042204490d0e2004417f4c0d0b0240024020040d00410121100c010b200410332210450d0d20012802042004490d0820102001280200200410e8061a2001280204220d2004490d0e2001200d20046b3602042001200128020020046a3602000b2010450d0e2004ad22064220862006842106200241206a41086a200241386a41086a29020037030020022002290238370320201041807e71210f410521110c050b41002104200241003a0058200d417e6a210d02400340200f2004460d01200241386a20046a200e20046a221041016a2d00003a00002001200d3602042001201041026a3602002002200441016a22103a0058200d417f6a210d2010210420104120470d000b200220092900003703202002200a2900003700252002280047210e200229003f210620022f0138210420022d003a210d200228003b2110200841026a200241356a41026a2d00003a0000200820022f00353b0000201041807e71210f2004200d41107472210d410021110c060b200441ff0171450d0d200241003a00580c0d0b200241386a200110ed03200228023c450d0c20022f013820022d003a41107472210d2002280244210e200229023c210620022d003b2110410121114100210f0c040b200241386a200110ed03200228023c450d0b20022f013820022d003a41107472210d2002280244210e200229023c210620022d003b2110410221114100210f0c030b200241386a200110ed03200228023c450d0a20022f013820022d003a41107472210d2002280244210e200229023c210620022d003b2110410321114100210f0c020b200f450d09200e2d000121042001200d417e6a22103602042001200e41026a36020020040d092010450d09200e2d000221042001200d417d6a220f3602042001200e41036a360200200441014b0d09410021100240024020040e020100010b200f4104490d0a200e35000321062001200d41796a22043602042001200e41076a36020020044104490d0a200e35000721122001200d41756a3602042001200e410b6a36020020124220862006842113410121100b200241206a41086a200241386a41086a29020037030020022002290238370320410421114100210f201321060b0b200241106a41086a2214200241206a41086a29030037030020022002290320370310200c2005470d020240200541016a22042005490d00200541017422152004201520044b1bad42247e2212422088a70d002012a7220441004e0d020b1038000b2010102f0c060b0240024020050d002004102d21070c010b2007200541246c2004103121070b2007450d03200441246e21050b2007200c41246c6a2204200e360210200420063702082004200f201041ff0171723602042004200d3b0001200420113a0000200441036a200d4110763a0000200420022903103702142004411c6a2014290300370200200b41246a210b200c41016a2204210c20042003460d050c000b0b103d000b1036000b2004200d104b000b200041003602000240200c450d002007210103400240024020012d0000220441044b0d0002400240024020040e050400010204040b2001410c6a280200450d03200141086a280200102f0c030b2001410c6a280200450d02200141086a280200102f0c020b2001410c6a280200450d01200141086a280200102f0c010b200141086a280200450d00200141046a280200102f0b200141246a2101200b415c6a220b0d000b0b2005450d012007102f0c010b2000200536020420002007360200200041086a20043602000b200241e0006a24000ba00a03077f037e057f230041d0026b2202240041002103200241003a00c8022001280204417f6a210402400240024002400240024003402004417f460d01200241a8026a20036a200128020022052d00003a0000200120043602042001200541016a3602002002200341016a22053a00c8022004417f6a21042005210320054120470d000b200241e8006a41086a200241a8026a41086a290300370300200241e8006a41106a200241a8026a41106a290300370300200241e8006a41186a200241a8026a41186a290300370300200220022903a8023703682002200110e60120022802000d022002280204210641002104200241003a00c80220012802042107417f2103034020072004460d02200241a8026a20046a200128020022082d00003a00002001200720036a3602042001200841016a3602002002200441016a22053a00c8022003417f6a21032005210420054120470d000b200241a8016a41086a200241a8026a41086a2903002209370300200241a8016a41106a200241a8026a41106a290300220a370300200241a8016a41186a200241a8026a41186a290300220b37030020024188016a41086a200937030020024188016a41106a200a37030020024188016a41186a200b370300200220022903a80222093703a801200220093703880141002104200241003a00c802200720056b210c200720036a21030340200c2004460d04200241a8026a20046a200820046a220541016a2d00003a0000200120033602042001200541026a3602002002200441016a22053a00c8022003417f6a21032005210420054120470d000b200241e8016a41086a200241a8026a41086a2903002209370300200241e8016a41106a200241a8026a41106a290300220a370300200241e8016a41186a200241a8026a41186a290300220b370300200241c8016a41086a22042009370300200241c8016a41106a2203200a370300200241c8016a41186a2205200b370300200220022903a80222093703e801200220093703c801200241a8026a200110f50320022802a8022201450d04200241c8006a41086a2208200241e8006a41086a290300370300200241c8006a41106a2207200241e8006a41106a290300370300200241c8006a41186a220c200241e8006a41186a290300370300200241286a41086a220d20024188016a41086a290300370300200241286a41106a220e20024188016a41106a290300370300200241286a41186a220f20024188016a41186a29030037030020022002290368370348200220022903880137032820022902ac022109200241086a41186a22102005290300370300200241086a41106a22052003290300370300200241086a41086a22032004290300370300200220022903c801370308200020093702082000200136020420002006360200200041106a2002290348370200200041186a2008290300370200200041206a2007290300370200200041286a200c290300370200200041306a2002290328370200200041386a200d290300370200200041c0006a200e290300370200200041c8006a200f290300370200200041e8006a2010290300370200200041e0006a2005290300370200200041d8006a2003290300370200200041d0006a20022903083702000c050b0240200341ff0171450d00200241003a00c8020b200041003602040c040b0240200441ff0171450d00200241003a00c8020b200041003602040c030b200041003602040c020b0240200441ff0171450d00200241003a00c8020b200041003602040c010b200041003602040b200241d0026a24000be00504047f017e087f057e230041f0006b220224002002200110e60102400240024002402002280200450d00200041003602000c010b20022802042203200128020441306e2204200420034b1b2205ad42307e2206422088a70d012006a72204417f4c0d010240024020040d00410821070c010b2004102d2207450d03200441306e21050b02402003450d00410021080340200241003a00682008220941016a21082001280204210a417f210b4100210402400240024002400340200a2004460d01200241c8006a20046a2001280200220c2d00003a00002001200a200b6a3602042001200c41016a3602002002200441016a220d3a0068200b417f6a210b200d2104200d4120470d000b200241286a41186a2204200241c8006a41186a290300370300200241286a41106a220b200241c8006a41106a290300370300200241286a41086a220e200241c8006a41086a29030037030020022002290348370328200a200d6b220d4110490d01200c41096a2900002106200c290001210f2001200d41706a3602042001200c41116a360200200241086a41086a220d200e290300370300200241086a41106a220a200b290300370300200241086a41186a220b20042903003703002002200229032837030820052009470d030240200941017422042008200420084b1bad42307e2210422088a70d002010a7220441004e0d030b1038000b200441ff0171450d00200241003a00680b200041003602002005450d042007102f0c040b0240024020090d002004102d21070c010b2007200941306c2004103121070b2007450d05200441306e21050b200d2903002110200a2903002111200b2903002112200229030821132007200941306c6a2204200f37032020042013370300200441286a2006370300200441186a2012370300200441106a2011370300200441086a201037030020082003470d000b0b2000200536020420002007360200200041086a20033602000b200241f0006a24000f0b103d000b1036000ba908040c7f017e057f037e23004180016b2202240002400240024002400240200141086a220328020022042001410c6a2802002205460d002001280210220628020021072006280208220841014b210903402003200441206a220a360200200241e0006a41186a200441186a290000370300200241e0006a41106a200441106a290000370300200241e0006a41086a200441086a29000037030020022004290000370360410021040240024020090d0020080e020401040b2008210b03402004200b410176220c20046a220d2007200d4105746a200241e0006a412010ea0641004a1b2104200b200c6b220b41014b0d000b0b200720044105746a200241e0006a412010ea060d02200a2104200a2005470d000b0b20004100360208200042013702002001280204450d012001280200102f0c010b200241c0006a41086a2204200241e0006a41086a290300370300200241c0006a41106a220b200241e0006a41106a290300370300200241c0006a41186a220c200241e0006a41186a29030037030020022002290360220e3703002002200e3703404120102d220f450d01200f2002290340370000200f41186a200c290300370000200f41106a200b290300370000200f41086a2004290300370000200128020421102001280200211102400240200a2005470d0041012112410121130c010b41012112410121130340200628020821032006280200210702400340200241e0006a41186a2208200a41186a290000370300200241e0006a41106a2209200a41106a290000370300200241e0006a41086a2201200a41086a2900003703002002200a290000370360200a41206a210a4100210402400240200341014b0d0020030e020301030b2003210b03402004200b410176220c20046a220d2007200d4105746a200241e0006a412010ea0641004a1b2104200b200c6b220b41014b0d000b0b200720044105746a200241e0006a412010ea060d01200a2005470d000c030b0b200241c0006a41086a2001290300220e370300200241c0006a41106a20092903002214370300200241c0006a41186a20082903002215370300200220022903602216370340200241186a220b2015370300200241106a220c2014370300200241086a220d200e37030020022016370300024020132012470d00201241016a22042012490d05201241017422072004200720044b1b220441ffffff3f712004470d05200441057422044100480d050240024020120d002004102d210f0c010b200f201241057420041031210f0b200f450d04200441057621130b200f20124105746a22042002290300370000200441186a200b290300370000200441106a200c290300370000200441086a200d290300370000201241016a2112200a2005470d000b0b02402010450d002011102f0b20002012360208200020133602042000200f3602000b20024180016a24000f0b1036000b1038000bd70704067f017e097f027e230041f0006b22032400200341206a2001200228020c2204110200024002400240024002402003280220450d00200341c8006a41106a200341206a41106a290300370300200341c8006a41086a200341206a41086a290300370300200341c8006a41186a200341206a41186a290300370300200341c8006a41206a200341206a41206a280200360200200341086a200341d4006a290200370300200341106a200341dc006a290200370300200341186a200341e4006a290200370300200320032903203703482003200329024c370300200341c8006a200120022802102205110200417f2003280248220641016a220720072006491b2208ad42287e2209422088a70d022009a72206417f4c0d024108210a02402006450d002006102d220a450d04200641286e21080b200a2003290300370300200a4201370320200a41186a200341186a220b290300370300200a41106a200341106a220c290300370300200a41086a200341086a290300370300200341206a200120041102000240024020032802200d004101210d0c010b200341c8006a410472210641c800210e4101210d0340200341c8006a41206a200341206a41206a280200360200200341c8006a41186a220f200341206a41186a290300370300200341c8006a41106a2210200341206a41106a290300370300200341c8006a41086a2211200341206a41086a29030037030020032003290320370348200341086a2207200641086a290200370300200c200641106a290200370300200b200641186a29020037030020032006290200370300200f200b2903003703002010200c29030037030020112007290300370300200320032903003703480240200d2008470d00200341206a200120051102002008417f2003280220220741016a221220122007491b6a22072008490d07200841017422122007201220074b1bad42287e2209422088a70d072009a722074100480d070240024020080d002007102d210a0c010b200a200841286c20071031210a0b200a450d06200741286e21080b200a200e6a221241606a220720032903483703002011290300210920102903002113200f290300211420124201370300200741186a2014370300200741106a2013370300200741086a2009370300200341206a20012004110200200e41286a210e200d41016a210d20032802200d000b0b2001200228020011050002402002280204450d002001102f0b2000200d360208200020083602042000200a3602000c010b2000410036020820004208370200200120022802001105002002280204450d002001102f0b200341f0006a24000f0b103d000b1036000b1038000bb8cc010d057f017e027f017e027f017e067f047e017f017e037f047e0b7f230041b00a6b2201240010fb030240024002400240024002400240024020004101460d00200141c0066a41186a22024200370300200141c0066a41106a22034200370300200141c0066a41086a22044200370300200142003703c00641aa87ca00ad4280808080c000841001220529000021062004200541086a290000370300200120063703c0062005102f41ce87ca00ad4280808080b00184100122052900002106200141d8036a41086a2207200541086a290000370300200120063703d8032005102f200320012903d8032206370300200141b8056a41086a22082004290300370300200141b8056a41106a2006370300200141b8056a41186a2007290300370300200120012903c0063703b805200141b8036a200141b8056a10e301420020012903c003420020012802b8031b220610fc037d220920092006561b42c801540d00200141e0086a41186a220a4200370300200141e0086a41106a220b4200370300200141e0086a41086a22074200370300200142003703e008419c9eca00ad4280808080f00084220c1001220d290000210620014198046a41086a2205200d41086a2900003703002001200637039804200d102f2007200529030037030020012001290398043703e00841a39eca00ad4280808080c001841001220d29000021062005200d41086a2900003703002001200637039804200d102f200b2001290398042206370300200141e0076a41086a220e2007290300370300200141e0076a41106a220f2006370300200141e0076a41186a22102005290300370300200120012903e0083703e007200141b0036a200141e0076a412010950120012802b403211120012802b0032112200a4200370300200b420037030020074200370300200142003703e008200c1001220d29000021062005200d41086a2900003703002001200637039804200d102f2007200529030037030020012001290398043703e00841af9eca00ad4280808080d001841001220d29000021062005200d41086a2900003703002001200637039804200d102f200b2001290398042206370300200e2007290300370300200f200637030020102005290300370300200120012903e0083703e007200141e0076a10f702210a10ae03200242003703002003420037030020044200370300200142003703c00641eba1ca00ad4280808080f0008422091001220529000021062004200541086a290000370300200120063703c0062005102f41adcac800ad42808080809001841001220529000021062008200541086a290000370300200120063703b8052005102f200320012903b8052206370300200141e8036a41086a2004290300370300200141e8036a41106a2006370300200141e8036a41186a2008290300370300200120012903c0063703e803410021082011410020121b210d200141e0086a200141e8036a10fd03024002400240024020012903e00822064202510d00200b280200210220012903e8082113200910012204290000210920014188046a41086a2205200441086a29000037030020012009370388042004102f41dca0ca00ad4280808080d00284100122042900002109200141d8036a41086a2207200441086a290000370300200120093703d8032004102f2001200241016a3602e008200141e0086aad22144280808080c00084100322042900002109200441086a2900002115200441106a2900002116200141c0066a41186a220e200441186a290000370300200141c0066a41106a220f2016370300200141c0066a41086a22102015370300200120093703c0062004102f41c000102d2204450d052004200129038804370000200441086a2005290300370000200420012903d803370010200441186a2007290300370000200420012903c006370020200441286a2010290300370000200441306a200f290300370000200441386a200e290300370000200141a8036a200441c00010950120012802ac03210720012802a80321052004102f20054101470d0020064201520d002007200d41016a470d00200141b8056a41186a220f4200370300200141b8056a41106a22074200370300200141b8056a41086a22054200370300200142003703b80541d5a2ca00ad42808080809001841001220429000021062005200441086a290000370300200120063703b8052004102f41ecb0c000ad4280808080308410012204290000210620014188046a41086a220e200441086a29000037030020012006370388042004102f2007200129038804220637030020014198046a41086a2211200529030037030020014198046a41106a2212200637030020014198046a41186a2217200e290300370300200120012903b8053703980420014198036a20014198046a10e30120012903a0032118200128029803211941eba1ca00ad4280808080f000841001220429000021062005200441086a290000370300200120063703b8052004102f41f5cac800ad4280808080e00184100122042900002106200e200441086a29000037030020012006370388042004102f200120023602e00820144280808080c00084100322042900002106200441086a2900002109200441106a2900002115200141e0066a41186a2210200441186a290000370300200141e0066a41106a221a2015370300200141e0066a41086a221b2009370300200120063703e0062004102f41c000102d2204450d05200420012903b8053700002004200129038804370010200420012903e006370020200441086a2005290300370000200441186a200e290300370000200441286a201b290300370000200441306a201a290300370000200441386a201029030037000020014180036a200441c000109c0120014180036a41106a2903002115200129038803211620012802800321102004102f200f42003703002007420037030020054200370300200142003703b80541e7a2ca00ad42808080808001841001220429000021062005200441086a290000370300200120063703b8052004102f41ecb5c600ad4280808080d00184100122042900002106200e200441086a29000037030020012006370388042004102f2007200129038804370000200741086a200e29030037000020112005290300370300201220072903003703002017200f290300370300200120012903b80537039804200141e8026a20014198046a4120109c01200141d8026a20012903f002420020012802e80222041b2209200141e8026a41106a290300420020041b2206428094ebdc03420010ee06200141c8026a20012903d802221c200141d8026a41086a290300221d4280ec94a37c427f10ed0620062015420020101b22152016420020101b2216200956201520065620152006511b22041b21062009201620041b211620012903c80220097c211e2018420020191b20137d2209428086ebc7f5002009428086ebc7f500541b421f8042ffffffff0f83428094ebdc037e429880b5e5038021134100210541d87d2104024002400340200141b8026a201c201d200441e8acc3006a3502002209420010ed062005201620012903b80222152009201e7e22092009428094ebdc038022094280ec94a37c7e7c4280cab5ee01562009a76aad7c22095a2006200141b8026a41086a2903002009201554ad7c22155a200620155122071b6a21052016200954200620155420071b0d01200441086a22040d000b200141a8026a201c201d42e8aafa0b420010ed06200141b0026a29030020012903a8022209201e42e8aafa0b7e22062006428094ebdc038022064280ec94a37c7e7c4280cab5ee01562006a76aad7c2206200954ad7c21090c010b02402005417f6a220420054d0d00200141a8016a201c201d42c0f0f50b420010ed06200141b0016a29030020012903a8012209201e42c0f0f50b7e201e42288022064280ec94a37c7e7c4280cab5ee01562006a76aad7c2206200954ad7c21090c010b200441244b0d0220014198026a201c201d2004410374220741c0aac3006a280200220ead2209420010ed06200141f8016a201620012903980222152009201e7e22092009428094ebdc038022094280ec94a37c7e7c4280cab5ee01562009a76aad7c22092016200956200620014198026a41086a2903002009201554ad7c22155620062015511b22041b22182009201620041b22097d221f2006201520041b2015200620041b7d2018200954ad7d41002005410374220f41c0aac3006a2802002205200e6b220e200e20054b1b22054101200541014b1bad2215420010ee06200141e8016a20012903f8012206200141f8016a41086a29030022092015420010ed0620014188026a201c201d200741c4aac3006a2802002205ad2218420010ed06200141b8016a20094200200f41c4aac3006a28020022072005200720054b220e1b20052007200e1b6bad2216420010ed06200141d8016a200642002016420010ed06200141c8016a420042002006420010ed06427f20014188026a41086a29030020012903880222092018201e7e22062006428094ebdc038022064280ec94a37c7e7c4280cab5ee01562006a76aad7c2206200954ad7c2209427f427f200141d8016a41086a290300221e20012903b80120012903c8017c7c221c20012903c00120012903d00184420052201c201e5472220e1b221c427f20012903d801200e1b221e201f20012903e8017d20167e2015807c2215201e54220ead7c2216200e2016201c542015201e5a1b220e1b221e7c2006427f2015200e1b22157c221c200654220ead7c2216200e201620095420162009511b220e1b42002009201e7d2006201554ad7d2216200620157d2215200656201620095620162009511b220f1b2004200720054d7322041b2109427f201c200e1b42002015200f1b20041b21060b20014198016a20062009428094ebdc03420010ee0620014188016a200129039801220920014198016a41086a29030022154280ec94a37c427f10ed0641eba1ca00ad4280808080f00084100122042900002116200141b8056a41086a2205200441086a290000370300200120163703b8052004102f4197cfc800ad4280808080b0028410012204290000211620014188046a41086a2207200441086a29000037030020012016370388042004102f200120023602e00820144280808080c00084100322042900002116200441086a290000211e200441106a290000211c200141e0066a41186a2202200441186a290000370300200141e0066a41106a220e201c370300200141e0066a41086a220f201e370300200120163703e0062004102f200129038801211641c000102d2204450d05200141f8006a200920152013420010ed06200420012903b8053700002004200129038804370010200420012903e006370020200441086a2005290300370000200441186a2007290300370000200441286a200f290300370000200441306a200e290300370000200441386a20022903003700002001200129037822092013200620167c7e22062006428094ebdc038022064280ec94a37c7e7c4280cab5ee01562006a76aad7c22063703e0082001200141f8006a41086a2903002006200954ad7c3703e8082004ad42808080808008842014428080808080028410042004102f0b200141e0086a41186a22024200370300200141e0086a41106a220e4200370300200141e0086a41086a22054200370300200142003703e008200c10012207290000210620014198046a41086a2204200741086a29000037030020012006370398042007102f2005200429030037030020012001290398043703e00841b0ebc300ad4280808080a001841001220729000021062004200741086a29000037030020012006370398042007102f200b200129039804370000200b41086a2004290300370000200141e0076a41086a2005290300370300200141e0076a41106a200e290300370300200141e0076a41186a2002290300370300200120012903e0083703e0072001412036028c042001200141e0076a36028804200141e0066a200141e0076aad42808080808004842216100210730240024020012802e00622020d000c010b20012802e406210e2001200141e0066a41086a2802003602ec03200120023602e803200141f0006a200141e8036a10e6010240024020012802700d002001280274221020012802ec03220741a0016e2204200420104b1b2211ad42a0017e2206422088a70d082006a72204417f4c0d080240024020040d00410121080c010b2004102d2208450d08200441a0016e21110b02402010450d00200141e0086a41206a2117200141b8056a41017221194100210f0340200141003a00d805200f41016a2112410021040240024002400240024002400340200141003a00d80320072004460d01200141b8056a20046a20012802e80322052d00003a00002001200541016a3602e8032001200441016a22053a00d8052005210420054120470d000b200141c0066a41086a2204200141b8056a41086a290300370300200141c0066a41106a221a200141b8056a41106a290300370300200141c0066a41186a221b200141b8056a41186a290300370300200120012903b8053703c0062001200720056b3602ec03200141b8056a200141e8036a10ee0220012d00b8054101460d01200141e0086a41186a201b290300370300200141e0086a41106a201a290300370300200141e0086a41086a2004290300370300200120012903c0063703e0082017201941800110e8061a20014198046a200141e0086a41a00110e8061a2011200f470d04200f41017422042012200420124b1bad42a0017e2206422088a70d132006a722044100480d13200f0d022004102d21080c030b200141003602ec03200441ff0171450d00200141003a00d8050b20110d030c060b2008200f41a0016c2004103121080b2008450d0b200441a0016e21110b2008200f41a0016c6a20014198046a41a00110e8061a20122010460d0220012802ec0321072012210f0c010b0b2008102f0c010b2010ad4220862011ad84210620080d010b41002108200141003602a00420014201370398042001410b3602bc05200120014188046a3602b805200120014198046a3602c006200141f4086a4101360200200142013702e408200141b885c7003602e0082001200141b8056a3602f008200141c0066a41d8dbc100200141e0086a103c1a20013502a004422086200135029804841008200128029c04450d00200128029804102f0b200e450d002002102f0b41002107410021204101212102402006420020081b221c422088a7221a41a0016c220e450d00200e41a0016e2220410574102d2221450d050b200a200a41ff01714102477121222008410120081b21230240201a450d00201a41a0016c2108410021072021210420232105034020042005290000370000200441186a200541186a290000370000200441106a200541106a290000370000200441086a200541086a290000370000200741016a2107200441206a2104200541a0016a2105200841e07e6a22080d000b0b200141e0086a41186a22024200370300200141e0086a41106a22084200370300200141e0086a41086a22054200370300200142003703e008419c9eca00ad4280808080f0008422061001220a290000210920014198046a41086a2204200a41086a2900003703002001200937039804200a102f2005200429030037030020012001290398043703e00841a5c6c800ad4280808080a001841001220a29000021092004200a41086a2900003703002001200937039804200a102f200b200129039804370000200b41086a220a2004290300370000200141e0076a41086a220f2005290300370300200141e0076a41106a22102008290300370300200141e0076a41186a22112002290300370300200120012903e0083703e007200141203602e4082001200141e0076a3602e00820212007200141e0086a10aa0102402022450d00200242003703002008420037030020054200370300200142003703e00820061001220729000021092004200741086a29000037030020012009370398042007102f2005200429030037030020012001290398043703e00841bc9eca00ad4280808080a002841001220729000021092004200741086a29000037030020012009370398042007102f200b200129039804370000200a2004290300370000200f20052903003703002010200829030037030020112002290300370300200120012903e0083703e007200141e0086a200141e0076a10fe0320012802e0082207450d002016100520012802e408450d002007102f0b200242003703002008420037030020054200370300200142003703e00820061001220729000021062004200741086a29000037030020012006370398042007102f2005200429030037030020012001290398043703e00841a39eca00ad4280808080c001841001220729000021062004200741086a29000037030020012006370398042007102f200b200129039804370000200a2004290300370000200f20052903003703002010200829030037030020112002290300370300200120012903e0083703e0072001200d41016a221b3602e0082016200141e0086aad220c4280808080c0008422061004200141b8056a41186a4200370300200141b8056a41106a22054200370300200141b8056a41086a22074200370300200142003703b80541eba1ca00ad4280808080f0008422091001220229000021152007200241086a290000370300200120153703b8052002102f41adcac800ad428080808090018410012202290000211520014188046a41086a220a200241086a29000037030020012015370388042002102f200520012903880422153703002004200729030037030020014198046a41106a201537030020014198046a41186a200a290300370300200120012903b80537039804200141e0086a20014198046a10fd032008280200210720012903e00821152009100122042900002109200a200441086a29000037030020012009370388042004102f41dca0ca00ad4280808080d00284100122042900002109200141d8036a41086a200441086a290000370300200120093703d8032004102f20014100200741016a20154202511b3602e0082006100322042900002106200441086a2900002109200441106a2900002115200141c0066a41186a200441186a290000370300200141c0066a41106a2015370300200141c0066a41086a2009370300200120063703c0062004102f41c000102d2204450d042004200129038804370000200441086a20014188046a41086a2207290300370000200420012903d803370010200441186a200141d8036a41086a290300370000200420012903c006370020200441286a200141c0066a41086a290300370000200441306a200141c0066a41106a290300370000200441386a200141c0066a41186a290300370000200141e8006a200441c000109501200128026c2102200128026821082004102f024020084101470d0002402002201b460d002002201b4f0d0141ebc7c800ad428080808080068410080b201b10ff030b200141b8056a41186a22024200370300200141b8056a41106a220a4200370300200141b8056a41086a22044200370300200142003703b80541eba1ca00ad4280808080f0008422091001220829000021062007200841086a29000037030020012006370388042008102f2004200729030037030020012001290388043703b80541d2a0ca00ad4280808080a001841001220829000021062007200841086a29000037030020012006370388042008102f2005200129038804370000200541086a200729030037000020014198046a41086a200429030037030020014198046a41106a200a29030037030020014198046a41186a2002290300370300200120012903b80537039804200141e0006a20014198046a4120109501200d41026a2107024020012802604101460d00200141c8036a20071080040c030b20012802642108200910012204290000210620014188046a41086a2202200441086a29000037030020012006370388042004102f41dca0ca00ad4280808080d00284100122042900002106200141d8036a41086a220d200441086a290000370300200120063703d8032004102f200120083602e008200c4280808080c00084100322042900002106200441086a2900002109200441106a2900002115200141c0066a41186a2208200441186a290000370300200141c0066a41106a220a2015370300200141c0066a41086a220f2009370300200120063703c0062004102f41c000102d2204450d042004200129038804370000200441086a2002290300370000200420012903d803370010200441186a200d290300370000200420012903c006370020200441286a200f290300370000200441306a200a290300370000200441386a2008290300370000200141d8006a200441c000109501200128025c210f200128025821082004102f024020080d0041aacfc800ad4280808080e0068410084100210f0b200141b8056a41186a220d4200370300200141b8056a41106a220a4200370300200141b8056a41086a22084200370300200142003703b80541eba1ca00ad4280808080f0008410012202290000210620014188046a41086a2204200241086a29000037030020012006370388042002102f2008200429030037030020012001290388043703b80541f1a0ca00ad42808080808001841001220229000021062004200241086a29000037030020012006370388042002102f2005200129038804370000200541086a200429030037000020014198046a41086a200829030037030020014198046a41106a200a29030037030020014198046a41186a200d290300370300200120012903b80537039804410020014198046a1081042204200441ff01714104461b41ff0171220441034b0d0102400240024020040e0401000402010b200141b8056a41186a220d4200370300200141b8056a41106a220a4200370300200141b8056a41086a22084200370300200142003703b80541eba1ca00ad4280808080f0008410012202290000210620014188046a41086a2204200241086a29000037030020012006370388042002102f2008200429030037030020012001290388043703b80541f1a0ca00ad42808080808001841001220229000021062004200241086a29000037030020012006370388042002102f2005200129038804370000200541086a200429030037000020014198046a41086a200829030037030020014198046a41106a200a29030037030020014198046a41186a200d290300370300200120012903b8053703980420014198046aad428080808080048410050c010b2007200f6b220420074b0d0220044106490d020b200141c8036a20071080040c020b41f0bdc60020044125103b000b200141003602c8030b2023200e6a21240240024020012802c80322250d00200141e0086a41186a4200370300200141e0086a41106a22074200370300200141e0086a41086a22044200370300200142003703e008419c9eca00ad4280808080f000841001220529000021062004200541086a290000370300200120063703e0082005102f41a5c6c800ad4280808080a00184100122052900002106200141b8056a41086a2208200541086a290000370300200120063703b8052005102f200720012903b805220637030020014198046a41086a200429030037030020014198046a41106a200637030020014198046a41186a2008290300370300200120012903e00837039804200141e0086a20014198046a412010aa0220012902e408420020012802e00822041b21062004410120041b2125410021260c010b4101212620012902cc0321060b200120263a00a00a200120243602dc03200120233602d8032001200141d8036a36028c042001200141a00a6a3602880441002117024002402006422088a7220441057422050d0041012111410021270c010b2005410575ad42a0017e2209422088a70d062009a722054100480d062005102d2211450d02200541a0016e21270b2006a7212802402004450d002004410574220741606a410576212920014198046a4101722110200141e0086a41206a2112200141e0066a41e0006a212a200141e0066a41c0006a2119200141e0066a41206a211720112108202521040340200441086a2900002106200441106a290000210920042900002115200141c0066a41186a2202200441186a290000370300200141c0066a41106a220d2009370300200141c0066a41086a220a2006370300200120153703c006200141e8036a200141c0066a10820320014198046a20012802e803220f20012802f00310830320012d009804210e200141b8056a201041800110e8061a410021050240200e4101470d00200141e0076a200141b8056a41800110e8061a410121050b024020012802ec03450d00200f102f0b0240024020050d00200141e0066a410041800110e7061a0c010b200141e0066a200141e0076a41800110e8061a0b02402001280288042d00000d00200128028c04220e2802002205200e280204460d00200e200541a0016a36020002400240200141e0066a200541206a220e460d00200e200141e0066a412010ea060d010b02402017200541c0006a220e460d00200e2017412010ea060d010b02402019200541e0006a220e460d00200e2019412010ea060d010b202a20054180016a2205460d012005202a412010ea06450d010b20012802880441013a00000b200441206a2104200141e0086a41186a2002290300370300200141e0086a41106a200d290300370300200141e0086a41086a200a290300370300200120012903c0063703e0082012200141e0066a41800110e8061a2008200141e0086a41a00110e80641a0016a2108200741606a22070d000b202941016a21170b02402028450d002025102f0b2017ad42a0017e2206422088a70d022006a72204417f4c0d0220012d00a00a21250240024002400240024020040d002011201741a0016c6a210e4101210f201721190c010b2004102d220f450d052011201741a0016c6a210e200441a0016e221920174f0d00201941017422052017200520174b1b221041a0016c22054100480d09024002402004419f014b0d002005102d210f0c010b200f201941a0016c20051031210f0b200f450d050c010b2017450d01201921100b200141e0086a4180016a2105200141e0086a41e0006a2107200141e0086a41c0006a2108200141e0086a41206a21024100210d4100210a0340200141e0086a41186a2011200d6a220441186a290000370300200141e0086a41106a200441106a290000370300200141e0086a41086a200441086a290000370300200120042900003703e008200241186a200441386a290000370000200241106a200441306a290000370000200241086a200441286a2900003700002002200441206a2900003700002008200441c0006a290000370000200841086a200441c8006a290000370000200841106a200441d0006a290000370000200841186a200441d8006a2900003700002007200441e0006a290000370000200741086a200441e8006a290000370000200741106a200441f0006a290000370000200741186a200441f8006a290000370000200520044180016a290000370000200541086a20044188016a290000370000200541106a20044190016a290000370000200541186a20044198016a290000370000200f200d6a200141e0086a41a00110e8061a200d41a0016a210d200a41016a210a200441a0016a200e470d000b201021190c010b4100210a0b200141e0086a41186a22084200370300200141e0086a41106a22024200370300200141e0086a41086a22054200370300200142003703e008419c9eca00ad4280808080f0008410012207290000210620014198046a41086a2204200741086a29000037030020012006370398042007102f2005200429030037030020012001290398043703e00841b0ebc300ad4280808080a001841001220729000021062004200741086a29000037030020012006370398042007102f200b200129039804370000200b41086a2004290300370000200141e0076a41086a2005290300370300200141e0076a41106a2002290300370300200141e0076a41186a2008290300370300200120012903e0083703e007200a41a0016c4104722204417f4c0d022004102d2205450d01200141003602e808200120043602e408200120053602e008200a200141e0086a106902400240200a0d0020012802e808210420012802e408210820012802e00821050c010b200f200a41a0016c6a2112410020012802e808220a6b210220012802e4082108410021070340200a20076a210d02400240200820026a4120490d0020012802e00821050c010b200d41206a2204200d490d08200841017422052004200520044b1b22044100480d080240024020080d002004102d21050c010b20012802e00820082004103121050b2005450d04200120043602e408200120053602e008200421080b2005200a6a20076a220e41086a200f20076a220441086a290000370000200e41106a200441106a290000370000200e41186a200441186a2900003700002001200d41206a22103602e808200e200429000037000002400240200820026a41606a411f4d0d002008210e0c010b201041206a220e2010490d0820084101742210200e2010200e4b1b220e4100480d080240024020080d00200e102d21050c010b20052008200e103121050b2005450d042001200e3602e408200120053602e0080b2005200a6a20076a220841286a200441286a290000370000200841306a200441306a290000370000200841386a200441386a2900003700002001200d41c0006a22103602e808200841206a200441206a29000037000002400240200e20026a41406a411f4d0d00200e21080c010b201041206a22082010490d08200e41017422102008201020084b1b22084100480d0802400240200e0d002008102d21050c010b2005200e2008103121050b2005450d04200120083602e408200120053602e0080b2005200a6a20076a220e41c8006a200441c8006a290000370000200e41d0006a200441d0006a290000370000200e41d8006a200441d8006a2900003700002001200d41e0006a22103602e808200e41c0006a200441c0006a29000037000002400240200820026a41a07f6a411f4d0d002008210e0c010b201041206a220e2010490d0820084101742210200e2010200e4b1b220e4100480d080240024020080d00200e102d21050c010b20052008200e103121050b2005450d042001200e3602e408200120053602e0080b2005200a6a20076a220841e8006a200441e8006a290000370000200841f0006a200441f0006a290000370000200841f8006a200441f8006a2900003700002001200d4180016a22103602e808200841e0006a200441e0006a29000037000002400240200e20026a41807f6a411f4d0d00200e21080c010b201041206a22082010490d08200e41017422102008201020084b1b22084100480d0802400240200e0d002008102d21050c010b2005200e2008103121050b2005450d04200120083602e408200120053602e0080b2005200a6a20076a220e4188016a20044188016a290000370000200e4190016a20044190016a290000370000200e4198016a20044198016a2900003700002001200d41a0016a3602e808200e4180016a20044180016a290000370000200241e07e6a2102200741a0016a2107200441a0016a2012470d000b200a20076a21040b20162004ad4220862005ad84100402402008450d002005102f0b02402019450d00200f102f0b200141e0086a41186a22084200370300200141e0086a41106a22024200370300200141e0086a41086a22054200370300200142003703e008419c9eca00ad4280808080f0008410012207290000210620014198046a41086a2204200741086a29000037030020012006370398042007102f2005200429030037030020012001290398043703e00841af9eca00ad4280808080d001841001220729000021062004200741086a29000037030020012006370398042007102f200b200129039804370000200b41086a2004290300370000200141e0076a41086a2005290300370300200141e0076a41106a2002290300370300200141e0076a41186a2008290300370300200120012903e0083703e007200120253a00e0082016200c4280808080108410042001201b3602e408200141053a00e00841c8e1ca004100200141e0086a108c014108102d2207450d0120072024360204200720233602000240024020220d00200141e0086a41186a220d4200370300200141e0086a41106a22084200370300200141e0086a41086a22044200370300200142003703e00841b89bca00ad4280808080f00184100122022900002106200141b8056a41086a2205200241086a290000370300200120063703b8052002102f20042005290300370300200120012903b8053703e00841ac9bca00ad4280808080c001841001220229000021062005200241086a290000370300200120063703b8052002102f200820012903b805220637030020014198046a41086a220a200429030037030020014198046a41106a220e200637030020014198046a41186a220f2005290300370300200120012903e00837039804200141c8006a20014198046a10e3012001290350210620012802482110200d42003703002008420037030020044200370300200142003703e008419c9eca00ad4280808080f000841001220229000021092004200241086a290000370300200120093703e0082002102f41a39eca00ad4280808080c001841001220229000021092005200241086a290000370300200120093703b8052002102f200820012903b8052209370300200a2004290300370300200e2009370300200f2005290300370300200120012903e00837039804200141c0006a20014198046a41201095012006420020101b2001280244410020012802401b1082042007102f0c010b024002400240201a450d002007202341a0016a360200200141003a008009202341206a2105410021040340200141003a00d803200141e0086a20046a200520046a2d00003a00002001200441016a22043a00800920044120470d000b20014198046a41086a2204200141e0086a41086a29030037030020014198046a41106a2205200141e0086a41106a29030037030020014198046a41186a2208200141e0086a41186a290300370300200120012903e008370398042023450d00200141b8056a41186a2008290300370300200141b8056a41106a2005290300370300200141b8056a41086a200429030037030020012001290398043703b805200728020420072802006b41a0016e41016a220241286c2204417f4c0d062004102d220d450d05200d20012903b805370300200d4201370320200d41186a200141b8056a41186a290300370300200d41106a200141b8056a41106a290300370300200d41086a200141b8056a41086a2903003703000240200728020022042007280204470d00410121080c020b2007200441a0016a360200200141003a008009200441206a2105410021040340200141003a00d803200141e0086a20046a200520046a2d00003a00002001200441016a22043a00800920044120470d000b200141c0066a41186a220b200141e0086a41186a2219290300220637030020014198046a41086a220a200141e0086a41086a221a29030037030020014198046a41106a220e200141e0086a41106a221b29030037030020014198046a41186a220f2006370300200120012903e00837039804410121080340200141b8056a41186a200f2903002206370300200141b8056a41106a200e2903002209370300200141b8056a41086a200a2903002215370300200120012903980422163703b805200141e8036a41186a22052006370300200141e8036a41106a22102009370300200141e8036a41086a22122015370300200120163703e803024020022008470d00200728020420072802006b41a0016e20026a41016a22042002490d0b200241017422252004202520044b1bad42287e2206422088a70d0b2006a722044100480d0b0240024020020d002004102d210d0c010b200d200241286c20041031210d0b200d450d07200441286e21020b200d200841286c6a220420012903e80337030020122903002106201029030021092005290300211520044201370320200441186a2015370300200441106a2009370300200441086a2006370300200841016a2108200728020022052007280204460d022007200541a0016a36020041002104200141003a008009200541206a21050340200141003a00d803200141e0086a20046a200520046a2d00003a00002001200441016a22043a00800920044120470d000b200b20192903002206370300200a201a290300370300200e201b290300370300200f2006370300200120012903e008370398040c000b0b2007102f4108210d41002108410021020c010b2007102f0b200141e0086a41186a4200370300200141e0086a41106a220a4200370300200141e0086a41086a22054200370300200142003703e00841b89bca00ad4280808080f00184100122072900002106200141b8056a41086a2204200741086a290000370300200120063703b8052007102f20052004290300370300200120012903b8053703e00841ddc3c600ad4280808080f000841001220729000021062004200741086a290000370300200120063703b8052007102f200a20012903b805220637030020014198046a41086a200529030037030020014198046a41106a200637030020014198046a41186a2004290300370300200120012903e00837039804200141e0086a20014198046a1083040240024020012802e0084101460d00200120083602e808200120023602e4082001200d3602e00820014198046a200141e0086a41004100200110840420014198046aad428080808080048421060c010b20014198046aad42808080808004842206100520012902e4082109200120083602e808200120023602e4082001200d3602e00820014198046a200141e0086a2009a741012009422088a71084040b200141e0086a41186a22084200370300200141e0086a41106a22074200370300200141e0086a41086a22054200370300200142003703e00841b89bca00ad4280808080f001842209100122022900002115200141b8056a41086a2204200241086a290000370300200120153703b8052002102f20052004290300370300200120012903b8053703e00841ac9bca00ad4280808080c0018422151001220229000021162004200241086a290000370300200120163703b8052002102f200a20012903b805370000200a41086a2210200429030037000020014198046a41086a2202200529030037030020014198046a41106a220d200729030037030020014198046a41186a220e2008290300370300200120012903e00837039804200141306a20014198046a10e3012001280230211220012903382116200842003703002007420037030020054200370300200142003703e00820091001220f29000021092004200f41086a290000370300200120093703b805200f102f20052004290300370300200120012903b8053703e00820151001220f29000021092004200f41086a290000370300200120093703b805200f102f200a20012903b8053700002010200429030037000020022005290300370300200d2007290300370300200e2008290300370300200120012903e008370398042001201642017c420120121b22093703e0082006200c42808080808001841004200842003703002007420037030020054200370300200142003703e008419c9eca00ad4280808080f000841001220829000021062005200841086a290000370300200120063703e0082008102f41a39eca00ad4280808080c001841001220829000021062004200841086a290000370300200120063703b8052008102f200720012903b805220637030020022005290300370300200d2006370300200e2004290300370300200120012903e00837039804200141286a20014198046a41201095012009200128022c410020012802281b1082040b4108102d2204450d0120042024360204200420233602004108102d2205450d0120052011201741a0016c6a222a36020420052011360200200141800a6a200441e4c3c60010f903200141900a6a200541e4c3c60010f90320012802880a210820012802840a211020012802800a210f200141a00a6a41086a200141900a6a41086a280200360200200120012903900a3703a00a200141e0086a41186a22074200370300200141e0086a41106a220b4200370300200141e0086a41086a22054200370300200142003703e00841aa87ca00ad4280808080c00084220610012202290000210920014188046a41086a2204200241086a29000037030020012009370388042002102f2005200429030037030020012001290388043703e00841ae87ca00ad4280808080a0018422151001220229000021092004200241086a29000037030020012009370388042002102f200b2001290388042209370300200141c0066a41086a22022005290300370300200141c0066a41106a220d2009370300200141c0066a41186a220a2004290300370300200120012903e0083703c006200141186a200141c0066a10e3012001290320420020012802181b221642017c22092016540d0320074200370300200b420037030020054200370300200142003703e00820061001220e29000021162004200e41086a2900003703002001201637038804200e102f2005200429030037030020012001290388043703e00820151001220e29000021152004200e41086a2900003703002001201537038804200e102f200b200129038804370000200b41086a2212200429030037000020022005290300370300200d200b290300370300200a2007290300370300200120012903e0083703c006200120093703e008200141c0066aad4280808080800484221e200c4280808080800184100420074200370300200b420037030020054200370300200142003703e00820061001220e29000021062004200e41086a2900003703002001200637038804200e102f2005200429030037030020012001290388043703e00841b887ca00ad4280808080b001841001220e29000021062004200e41086a2900003703002001200637038804200e102f200b2001290388043700002012200429030037000020022005290300370300200d200b290300370300200a2007290300370300200120012903e0083703c006200841286c4104722204417f4c0d022004102d2205450d01200141003602e808200120043602e408200120053602e0082008200141e0086a10690240024020080d0020012802e808210420012802e408210820012802e00821070c010b200f200841286c6a210a20012802e408210820012802e8082104200f2105034002400240200820046b4120490d0020012802e00821070c010b200441206a22072004490d08200841017422022007200220074b1b22024100480d080240024020080d002002102d21070c010b20012802e00820082002103121070b2007450d04200120023602e408200120073602e008200221080b200720046a220241186a200541186a290000370000200241106a200541106a290000370000200241086a200541086a2900003700002001200441206a220d3602e80820022005290000370000200541206a2903002106024002402008200d6b4108490d00200441286a21040c010b200d41086a2204200d490d08200841017422022004200220044b1b22024100480d080240024020080d002002102d21070c010b200720082002103121070b2007450d04200120023602e408200120073602e008200221080b200120043602e8082007200d6a2006370000200a200541286a2205470d000b0b201e2004ad4220862007ad84100402402008450d002007102f0b02402010450d00200f102f0b200942017c22062009540d04200141c0066a41186a22074200370300200141c0066a41106a22084200370300200141c0066a41086a22044200370300200142003703c00641aa87ca00ad4280808080c0008410012202290000210920014188046a41086a2205200241086a29000037030020012009370388042002102f2004200529030037030020012001290388043703c00641e387ca00ad4280808080e001841001220229000021092005200241086a29000037030020012009370388042002102f2003200129038804370000200341086a2005290300370000200141e8036a41086a2004290300370300200141e8036a41106a2008290300370300200141e8036a41186a2007290300370300200120012903c0063703e803200141e0086a200141e8036a10850420012d00e00821052007200141f9086a2900003703002008200141f1086a2900003703002004200141e9086a290000370300200120012900e1083703c0060240024020054101460d0020014198046a41186a420037030020014198046a41106a420037030020014198046a41086a420037030020014200370398040c010b20014198046a41186a200729030037030020014198046a41106a200829030037030020014198046a41086a2004290300370300200120012903c006370398040b200141c0066a41186a22074200370300200141c0066a41106a22084200370300200141c0066a41086a22054200370300200142003703c00641aa87ca00ad4280808080c00084220910012202290000211520014188046a41086a2204200241086a29000037030020012015370388042002102f2005200429030037030020012001290388043703c00641f187ca00ad4280808080c0018422151001220229000021162004200241086a29000037030020012016370388042002102f2003200129038804370000200341086a220d2004290300370000200141e8036a41086a220a2005290300370300200141e8036a41106a220e2008290300370300200141e8036a41186a220f2007290300370300200120012903c0063703e803200141106a200141e8036a41201095012001280214211020012802102112200742003703002008420037030020054200370300200142003703c00620091001220229000021092004200241086a29000037030020012009370388042002102f2005200429030037030020012001290388043703c00620151001220229000021092004200241086a29000037030020012009370388042002102f2003200129038804370000200d2004290300370000200a2005290300370300200e2008290300370300200f2007290300370300200120012903c0063703e803200141003602e008200141e8036aad4280808080800484221d200c4280808080c000841004200141b8056a41186a20014198046a41186a290300370300200141b8056a41106a20014198046a41106a290300370300200141b8056a41086a20014198046a41086a29030037030020012001290398043703b805417f2010410020121b221041016a220420042010491b410d744128722219417f4c0d022019102d2212450d01201220012903b80537000020122006370020201241186a200141b8056a41186a290300370000201241106a200141b8056a41106a290300370000201241086a200141b8056a41086a290300370000200141ac0a6aad4280808080c000842116412821174100210541002104024002400340024002400240024002402007200d460d0020040d010b034020042108200520104f0d0241aa87ca00ad4280808080c00084100122042900002106200141d8036a41086a2207200441086a290000370300200120063703d8032004102f41fd87ca00ad428080808090028410012204290000210620014188046a41086a2202200441086a29000037030020012006370388042004102f200120053602ac0a20161003220441086a2900002106200441106a290000210920042900002115200141c0066a41186a220d200441186a290000370300200141c0066a41106a220a2009370300200141c0066a41086a220e2006370300200120153703c0062004102f41c000102d2204450d09200420012903d803370000200441086a20072903003700002004200129038804370010200441186a2002290300370000200420012903c006370020200441286a200e290300370000200441306a200a290300370000200441386a200d290300370000200141c0066a200441c000108604024020012802c0062207450d002004ad428080808080088410050b20012902c40621062004102f2007410120071b2204450d022006420020071b2206422088a7210702402008450d00200f450d002008102f0b200541016a21052006a7210f2007450d000b200420074105746a210d200421070b200141e8036a41186a200741186a2208290000370300200141e8036a41106a200741106a2202290000370300200141e8036a41086a200741086a220a290000370300200120072900003703e803200a29000021062002290000210920072900002115200141e0086a41186a22022008290000370300200141e0086a41106a22082009370300200141e0086a41086a220a2006370300200120153703e008200141c0066a41186a220e2002290300370300200141c0066a41106a221a2008290300370300200141c0066a41086a221b200a290300370300200120012903e0083703c006201920176b411f4d0d01201921020c020b02402008450d00200f450d002008102f0b2017ad4220862012ad84100322042900002106200441086a2900002109200441106a2900002115200141e0076a41186a200441186a290000370300200141e0076a41106a2015370300200141e0076a41086a2009370300200120063703e0072004102f02402019450d002012102f0b200141c0066a41186a22084200370300200141c0066a41106a22024200370300200141c0066a41086a22054200370300200142003703c00641aa87ca00ad4280808080c00084220610012207290000210920014188046a41086a2204200741086a29000037030020012009370388042007102f2005200429030037030020012001290388043703c00641e387ca00ad4280808080e001841001220729000021092004200741086a29000037030020012009370388042007102f2003200129038804370000200341086a2004290300370000200141e8036a41086a2005290300370300200141e8036a41106a2002290300370300200141e8036a41186a2008290300370300200120012903c0063703e8034120102d2204450d06200420012903e007370000200441186a200141e0076a41186a290300370000200441106a200141e0076a41106a290300370000200441086a200141e0076a41086a290300370000201d2004ad428080808080048410042004102f200141e0066a41186a20014198046a41186a220d2903002209370300200141e0066a41106a20014198046a41106a220a2903002215370300200141e0066a41086a20014198046a41086a220e29030022163703002001200129039804221d3703e006200d2009370300200a2015370300200e20163703002001201d37039804200141e0086a41186a22084200370300200141e0086a41106a22024200370300200141e0086a41086a22074200370300200142003703e008200610012205290000210620014188046a41086a2204200541086a29000037030020012006370388042005102f2007200429030037030020012001290388043703e00841d987ca00ad4280808080a001841001220529000021062004200541086a29000037030020012006370388042005102f200b200129038804370000200b41086a22172004290300370000200141c0066a41086a220f2007290300370300200141c0066a41106a22102002290300370300200141c0066a41186a22122008290300370300200120012903e0083703c0064120102d2205450d062005200129039804370000200541186a200d290300370000200541106a200a290300370000200541086a200e290300370000201e2005ad428080808080048410042005102f200842003703002002420037030020074200370300200142003703e00841aa87ca00ad4280808080c000841001220529000021062004200541086a29000037030020012006370388042005102f2007200429030037030020012001290388043703e00841e387ca00ad4280808080e001841001220529000021062004200541086a29000037030020012006370388042005102f200b20012903880437000020172004290300370000200f20072903003703002010200229030037030020122008290300370300200120012903e0083703c006200141e0086a200141c0066a10850420012d00e00821042012200141f9086a2900003703002010200141f1086a290000370300200f200141e9086a290000370300200120012900e1083703c00620044101460d03200141d0056a4200370300200141c8056a4200370300200141c0056a4200370300200142003703b8050c040b201741206a22082017490d09201941017422022008200220084b1b22024100480d090240024020190d002002102d21120c010b201220192002103121120b2012450d050b200741206a2107201220176a220820012903c006370000200841186a200e290300370000200841106a201a290300370000200841086a201b290300370000201741206a2117200221190c000b0b200141b8056a41186a200141c0066a41186a290300370300200141b8056a41106a200141c0066a41106a290300370300200141b8056a41086a200141c0066a41086a290300370300200120012903c0063703b8050b20014198046a41086a2204200141a00a6a41086a28020036020020014198046a41246a200141b8056a41186a29030037020020014198046a411c6a200141b8056a41106a29030037020020014198046a41146a200141b8056a41086a290300370200200120012903a00a220637039804200120012903b8053702a4042001418c096a200141c0046a280200360200200141e0086a41246a200141b8046a290300370200200141e0086a411c6a20014198046a41186a290300370200200141e0086a41146a20014198046a41106a290300370200200141ec086a2004290300370200200120063702e408200141003602e008200141e0086a1087044108102d2207450d0120072024360204200720233602004108102d2225450d012025202a3602042025201136020020014198046a41186a420037030020014198046a41106a2228420037030020014198046a41086a220542003703002001420037039804418de6c300ad4280808080e000841001220429000021062005200441086a29000037030020012006370398042004102f419ce6c300ad4280808080e0008410012208290000210620014188046a41086a2204200841086a29000037030020012006370388042008102f20282001290388042206370300200141e0086a41086a2005290300370300200141e0086a41106a2006370300200141e0086a41186a200429030037030020012001290398043703e008200141086a200141e0086a412010950120012802082102200128020c210d200141c0066a41186a220a4200370300200141c0066a41106a220e4200370300200141c0066a41086a22054200370300200142003703c00641d39bca00ad42808080808001841001220829000021062004200841086a29000037030020012006370388042008102f2005200429030037030020012001290388043703c00641bdc5c300ad4280808080e00184100122042900002106200141d8036a41086a2208200441086a290000370300200120063703d8032004102f200320012903d803370000200341086a2008290300370000200141b8056a41086a2005290300370300200141b8056a41106a200e290300370300200141b8056a41186a200a290300370300200120012903c0063703b8052001200d41e4006a41e40020021b3602e008200141b8056aad4280808080800484221e200c4280808080c00084100402400240200728020022042007280204460d002007200441a0016a360200200141003a008009200441e0006a2105410021040340200141003a00d803200141e0086a20046a200520046a2d00003a00002001200441016a22043a00800920044120470d000b200141e0076a41086a2204200141e0086a41086a290300370300200141e0076a41106a2205200141e0086a41106a290300370300200141e0076a41186a2202200141e0086a41186a290300370300200120012903e008220637039804200120063703e00741012108200728020420072802006b41a0016e41016a220d410574102d220f450d03200f20012903e007370000200f41186a2002290300370000200f41106a2005290300370000200f41086a20042903003700000240200728020022042007280204460d002007200441a0016a360200200141003a008009200441e0006a2105410021040340200141003a00d803200141e0086a20046a200520046a2d00003a00002001200441016a22043a00800920044120470d000b200141c0066a41186a220b200141e0086a41186a2217290300220637030020014198046a41086a2202200141e0086a41086a221929030037030020014198046a41106a220a200141e0086a41106a221a29030037030020014198046a41186a220e2006370300200120012903e00837039804410121080340200141b8056a41186a200e2903002206370300200141b8056a41106a200a2903002209370300200141b8056a41086a20022903002215370300200120012903980422163703b805200141e8036a41186a22052006370300200141e8036a41106a22102009370300200141e8036a41086a22122015370300200120163703e8030240200d2008470d00200728020420072802006b41a0016e200d6a41016a2204200d490d0a200d410174221b2004201b20044b1b220441ffffff3f712004470d0a200441057422044100480d0a02400240200d0d002004102d210f0c010b200f200d41057420041031210f0b200f450d062004410576210d0b200f20084105746a220420012903e803370000200441186a2005290300370000200441106a2010290300370000200441086a2012290300370000200841016a2108200728020022052007280204460d012007200541a0016a36020041002104200141003a008009200541e0006a21050340200141003a00d803200141e0086a20046a200520046a2d00003a00002001200441016a22043a00800920044120470d000b200b2017290300220637030020022019290300370300200a201a290300370300200e2006370300200120012903e008370398040c000b0b2007102f0c010b2007102f4100210d4101210f410021080b200141c0066a41186a22074200370300200141c0066a41106a22024200370300200141c0066a41086a22044200370300200142003703c00641d39bca00ad428080808080018410012205290000210620014188046a41086a220a200541086a29000037030020012006370388042005102f2004200a29030037030020012001290388043703c006419087ca00ad4280808080c00084100122052900002106200141d8036a41086a220a200541086a290000370300200120063703d8032005102f200320012903d803370000200341086a200a290300370000200141b8056a41086a2004290300370300200141b8056a41106a2002290300370300200141b8056a41186a2007290300370300200120012903c0063703b8052008410574220e4104722204417f4c0d022004102d2205450d01200141003602e808200120043602e408200120053602e0082008200141e0086a10690240024020080d0020012802e808210520012802e408210220012802e008210a0c010b410020012802e80822056b210820012802e008210a20012802e4082107200f2104034002400240200720086a411f4d0d00200721020c010b200541206a22022005490d08200741017422102002201020024b1b22024100480d080240024020070d002002102d210a0c010b200a200720021031210a0b200a450d040b200a20056a22072004290000370000200741186a200441186a290000370000200741106a200441106a290000370000200741086a200441086a290000370000200841606a2108200541206a210520022107200441206a2104200e41606a220e0d000b200120023602e408200120053602e8082001200a3602e0080b201e2005ad422086200aad84100402402002450d00200a102f0b0240200d450d00200f102f0b2025102f4108102d2207450d0120072024360204200720233602004108102d221b450d01201b202a360204201b2011360200024002402022450d0002400240200728020022042007280204460d002007200441a0016a360200200141003a00800920044180016a2105410021040340200141003a00d803200141e0086a20046a200520046a2d00003a00002001200441016a22043a00800920044120470d000b200141e0076a41086a2204200141e0086a41086a290300370300200141e0076a41106a2205200141e0086a41106a290300370300200141e0076a41186a2202200141e0086a41186a290300370300200120012903e008220637039804200120063703e00741012108200728020420072802006b41a0016e41016a220d410574102d220f450d05200f20012903e007370000200f41186a2002290300370000200f41106a2005290300370000200f41086a20042903003700000240200728020022042007280204460d002007200441a0016a360200200141003a00800920044180016a2105410021040340200141003a00d803200141e0086a20046a200520046a2d00003a00002001200441016a22043a00800920044120470d000b200141c0066a41186a2203200141e0086a41186a220b290300220637030020014198046a41086a2202200141e0086a41086a221729030037030020014198046a41106a220a200141e0086a41106a221929030037030020014198046a41186a220e2006370300200120012903e00837039804410121080340200141b8056a41186a200e2903002206370300200141b8056a41106a200a2903002209370300200141b8056a41086a20022903002215370300200120012903980422163703b805200141e8036a41186a22052006370300200141e8036a41106a22102009370300200141e8036a41086a22122015370300200120163703e8030240200d2008470d00200728020420072802006b41a0016e200d6a41016a2204200d490d0c200d410174221a2004201a20044b1b220441ffffff3f712004470d0c200441057422044100480d0c02400240200d0d002004102d210f0c010b200f200d41057420041031210f0b200f450d082004410576210d0b200f20084105746a220420012903e803370000200441186a2005290300370000200441106a2010290300370000200441086a2012290300370000200841016a2108200728020022052007280204460d012007200541a0016a36020041002104200141003a00800920054180016a21050340200141003a00d803200141e0086a20046a200520046a2d00003a00002001200441016a22043a00800920044120470d000b2003200b290300220637030020022017290300370300200a2019290300370300200e2006370300200120012903e008370398040c000b0b2007102f0c010b2007102f4101210f410021084100210d0b20014198046a41186a2207420037030020014198046a41106a2202420037030020014198046a41086a22044200370300200142003703980441fe86ca00ad4280808080a002841001220529000021062004200541086a29000037030020012006370398042005102f419087ca00ad4280808080c0008410012205290000210620014188046a41086a220a200541086a29000037030020012006370388042005102f2028200129038804370000202841086a200a290300370000200141e0086a41086a2004290300370300200141e0086a41106a2002290300370300200141e0086a41186a200729030037030020012001290398043703e0082008410574220e4104722204417f4c0d042004102d2205450d03200141003602a0042001200436029c042001200536029804200820014198046a10690240024020080d0020012802a0042105200128029c042102200128029804210a0c010b410020012802a00422056b2108200128029804210a200128029c042107200f2104034002400240200720086a411f4d0d00200721020c010b200541206a22022005490d0a200741017422102002201020024b1b22024100480d0a0240024020070d002002102d210a0c010b200a200720021031210a0b200a450d060b200a20056a22072004290000370000200741186a200441186a290000370000200741106a200441106a290000370000200741086a200441086a290000370000200841606a2108200541206a210520022107200441206a2104200e41606a220e0d000b2001200236029c04200120053602a0042001200a360298040b200c42808080808004842005ad422086200aad84100402402002450d00200a102f0b0240200d450d00200f102f0b201b102f0c010b201b102f2007102f0b02402027450d002011102f0b0240202620012802c803220445720d0020012802cc03450d002004102f0b02402020450d002021102f0b201ca7450d002023102f0b2001419bd9c900410741f3dcc900410b41c8e1ca00410010cc03024020012802004101470d0020012802042217450d0020014198046aad4280808080c00084211541002103419bd9c900ad4280808080f0008421164100211203402001201236029804200141e0086a41186a220220151003220441186a290000370300200141e0086a41106a2210200441106a290000370300200141e0086a41086a220d200441086a290000370300200120042900003703e0082004102f41c00010332204450d02201610012205290000210620014188046a41086a2207200541086a29000037030020012006370388042005102f200441086a2007290300370000200420012903880437000041fedcc900ad4280808080f00084100122052900002106200141d8036a41086a2207200541086a290000370300200120063703d8032005102f200441186a2007290300370000200420012903d803370010200441386a2002290300370000200441306a2010290300370000200441286a200d290300370000200420012903e00837002020014198046a200441c00010aa0202402001280298042211450d002004ad428080808080088410050b20012802a0042105200128029c04210b2004102f2011450d0102402005450d002005410574210820032105201121040340200141b8056a41186a2207200441186a290000370300200141b8056a41106a220a200441106a290000370300200141b8056a41086a220e200441086a290000370300200120042900003703b80520014198046a41186a420037030020014198046a41106a420037030020014198046a41086a420037030020014200370398040240200141b8056a20014198046a412010ea06450d00200141e0086a200141b8056a108d02427f20012903e008220620012903f0087c22092009200654220f200d290300220620022903007c200fad7c220920065420092006511b220f1b427f2009200f1b84500d00200220072903003703002010200a290300370300200d200e290300370300200120012903b8053703e00820014198046a200510fe0220013502a0042106200128029804210a4110102d2207450d0520074110412010312207450d05200720012903e008370000200741186a2002290300370000200741106a2010290300370000200741086a200d2903003700002007412041c00010312207450d0520074200370020200741286a42003700002006422086200aad842007ad428080808080068410042007102f200128029c04450d00200a102f0b200441206a2104200541016a2105200841606a22080d000b0b0240200b450d002011102f0b200341c0006a2103201241016a22122017470d000b0b02400240200041044b0d0020014198046aad428080808080048421060c010b200141e0076a10f8024100210520012802e007210241002107024020012802e807220a450d002000417b6a210d200a41c4006c2108410021072002210402400340024020042d00004101460d00200441046a280200200d4f0d020b200441c4006a2104200741016a2107200841bc7f6a22080d000b0b200a2007490d070b200141003602e807200a20076b210e2002200741c4006c220d6a210402400340200d2005460d01200220056a2108200541c4006a220a210520082d00004102470d000b2002200a6a21040b2002200741c4006c6a21080240034020082004460d0120042d00002105200441c4006a210420054102470d000b0b0240200e450d0002402007450d0020022002200741c4006c6a200e41c4006c10e9061a0b2001200e3602e8070b20012802e4072107200141b8056a41186a4200370300200141b8056a41106a22084200370300200141b8056a41086a22044200370300200142003703b805419487ca00ad4280808080a0018410012205290000210620014188046a41086a220d200541086a29000037030020012006370388042005102f2004200d29030037030020012001290388043703b805418691c700ad4280808080e00084100122052900002106200141d8036a41086a220d200541086a290000370300200120063703d8032005102f200820012903d803220637030020014198046a41086a200429030037030020014198046a41106a200637030020014198046a41186a200d290300370300200120012903b80537039804200141e0086a2002200e10910320014198046aad4280808080800484220620013502e80842208620012802e0082204ad841004024020012802e408450d002004102f0b2007450d002002102f0b200141b8056a41186a4200370300200141b8056a41106a22074200370300200141b8056a41086a22044200370300200142003703b805419487ca00ad4280808080a0018410012205290000210920014188046a41086a2208200541086a29000037030020012009370388042005102f2004200829030037030020012001290388043703b805419e87ca00ad4280808080c00184100122052900002109200141d8036a41086a2202200541086a290000370300200120093703d8032005102f200720012903d803220937030020014198046a41086a2205200429030037030020014198046a41106a2207200937030020014198046a41186a22082002290300370300200120012903b80537039804200141003a00d8032006200141d8036aad42808080801084100420014198046a10fb02200141c0066a41186a22022008290300370300200141c0066a41106a220d2007290300370300200141c0066a41086a220a200529030037030020012001290398043703c0064124102d22040d060b1036000b103d000b419ef4c90041c90041e8f4c9001055000b419ef4c90041c90041f8f4c9001055000b1038000b41a6b5ca00411c41f8b4ca001039000b200420012903c00637000020044114360220200441186a2002290300370000200441106a200d290300370000200441086a200a29030037000020014281808080103702e408200120043602e008200141e0086a10fc02200141e0086a41186a2008290300370300200141e0086a41106a2007290300370300200141e0086a41086a200529030037030020012001290398043703e008200141e0086a10fd0210fb03200141b00a6a24000ba71b0c017f017e037f017e037f017e017f017e047f017e017f027e230041f0036b2200240042002101200041a0036a41186a4200370300200041a0036a41106a22024200370300200041a0036a41086a22034200370300200042003703a00341aa87ca00ad4280808080c00084100122042900002105200041e0026a41086a2206200441086a290000370300200020053703e0022004102f20032006290300370300200020002903e0023703a00341db98ca00ad4280808080b001841001220429000021052006200441086a290000370300200020053703e0022004102f200220002903e0022205370300200041d0036a41086a2003290300370300200041d0036a41106a2005370300200041d0036a41186a2006290300370300200020002903a0033703d003200041d8016a200041d0036a10f3040240024020002d00d8014102470d00200041d8016a41186a4200370300200041d8016a41106a22044200370300200041d8016a41086a22064200370300200042003703d801418de6c300ad4280808080e000841001220329000021052006200341086a290000370300200020053703d8012003102f41bae6c300ad4280808080e00084100122032900002105200041106a41086a2207200341086a290000370300200020053703102003102f200420002903102205370300200041f8006a41086a2006290300370300200041f8006a41106a2005370300200041f8006a41186a2007290300370300200020002903d801370378200041d8016a200041f8006a10f4020240024020002802d80122080d0041042108410021060c010b20002902dc012201422088a721060b02400240200641246c2203450d002008210602400340024020062d00004101470d00200641016a2800002104200641086a28020021072000200641106a28020036027c20002007360278200441c28289aa04470d00200041d8016a200041f8006a10920520002d00d80122074102470d020b200641246a21062003415c6a2203450d020c000b0b200020002800dc0136006b200020002800d901360268200041e0016a2903002105200041106a200041e8016a41d80010e8061a200041c0026a29030021090c010b410221070b02402001422088a72206450d00200641246c21032008210603400240024020062d0000220441044b0d0002400240024020040e050400010204040b2006410c6a280200450d03200641086a280200102f0c030b2006410c6a280200450d02200641086a280200102f0c020b2006410c6a280200450d01200641086a280200102f0c010b200641086a280200450d00200641046a280200102f0b200641246a21062003415c6a22030d000b0b02402001a7450d002008102f0b200020002802683602d0012000200028006b3600d301200041f8006a200041106a41d80010e8061a0240024020074102470d0041002103200041d0036a21080c010b200020002802d0013602d802200020002800d3013600db02200020053703d002200041d8016a200041f8006a41d80010e8061a200020093703c802200041a0036a41186a22044200370300200041a0036a41106a22084200370300200041a0036a41086a22034200370300200042003703a00341aa87ca00ad4280808080c0008422011001220a2900002109200041e0026a41086a2206200a41086a290000370300200020093703e002200a102f20032006290300370300200020002903e0023703a00341c387ca00ad4280808080b00184220b1001220a29000021092006200a41086a290000370300200020093703e002200a102f200220002903e002370000200241086a220c2006290300370000200041d0036a41086a220a2003290300370300200041d0036a41106a220d2008290300370300200041d0036a41186a220e2004290300370300200020002903a0033703d0032000200041d0036a10e301024002402000280200450d002000290308500d00200041d0036aad42808080808004842109200041d0036a21080c010b200041d0026a200041c8026a20074101461b2903002109200442003703002008420037030020034200370300200042003703a00320011001220f29000021102006200f41086a290000370300200020103703e002200f102f20032006290300370300200020002903e0023703a003200b1001220f290000210b2006200f41086a2900003703002000200b3703e002200f102f200220002903e002370000200c2006290300370000200a2003290300370300200d2008290300370300200e2004290300370300200020002903a0033703d003200020093703a003200041d0036aad42808080808004842209200041a0036aad42808080808001841004200442003703002008420037030020034200370300200042003703a00320011001220f290000210b2006200f41086a2900003703002000200b3703e002200f102f20032006290300370300200020002903e0023703a00341b887ca00ad4280808080b001841001220f290000210b2006200f41086a2900003703002000200b3703e002200f102f200220002903e002370000200c2006290300370000200a2003290300370300200d2008290300370300200e2004290300370300200020002903a0033703d003200041a0036a200041d0036a10990520002902a403210b20002802a003210f200442003703002008420037030020034200370300200042003703a00320011001221129000021012006201141086a290000370300200020013703e0022011102f20032006290300370300200020002903e0023703a00341d987ca00ad4280808080a001841001221129000021012006201141086a290000370300200020013703e0022011102f200220002903e002370000200c2006290300370000200a2003290300370300200d2008290300370300200e2004290300370300200020002903a0033703d003200041a0036a200041d0036a10850420002d00a0032106200e200041b9036a290000370300200d200041b1036a290000370300200a200041a9036a290000370300200020002900a1033703d003200f4108200f1b21030240024020064101460d0020004198036a420037030020004190036a420037030020004188036a420037030020004200370380030c010b20004180036a41186a200041d0036a41186a29030037030020004180036a41106a200041d0036a41106a29030037030020004180036a41086a200041d0036a41086a290300370300200020002903d003370380030b200041e0026a41086a20004180036a41086a2903002201370300200041e0026a41106a20004180036a41106a2903002210370300200041e0026a41186a20004180036a41186a2903002212370300200020002903800322133703e002200041a0036a41086a200b4200200f1b370300200041a0036a41106a2013370300200041a0036a41186a2001370300200041c0036a2010370300200041c8036a2012370300200020033602a403200041003602a003200041a0036a108704200041d0036a21080b200041d0026a200041c8026a20074101461b2903002101200041a0036a41186a220a4200370300200041a0036a41106a220d4200370300200041a0036a41086a22034200370300200042003703a00341aa87ca00ad4280808080c0008410012204290000210b200041e0026a41086a2206200441086a2900003703002000200b3703e0022004102f20032006290300370300200020002903e0023703a00341ce87ca00ad4280808080b0018410012204290000210b2006200441086a2900003703002000200b3703e0022004102f200220002903e002370000200241086a2006290300370000200041d0036a41086a2003290300370300200041d0036a41106a200d290300370300200041d0036a41186a200a290300370300200020002903a0033703d003200020013703a0032009200041a0036aad428080808080018410044100210320070d0020004180036a41086a200041d8016a41086a29030037030020004180036a41106a200041d8016a41106a2d00003a0000200020002800db02360073200020002802d802360270200020002903d80137038003410121030b200041d8016a41086a20004180036a41086a290300370300200041d8016a41106a20004180036a41106a2d00003a0000200020002802703602782000200028007336007b20002000290380033703d801200041a0036a41186a220a4200370300200041a0036a41106a220d4200370300200041a0036a41086a22044200370300200042003703a00341aa87ca00ad4280808080c00084100122072900002101200041e0026a41086a2206200741086a290000370300200020013703e0022007102f20042006290300370300200020002903e0023703a00341db98ca00ad4280808080b001841001220729000021012006200741086a290000370300200020013703e0022007102f200220002903e002370000200241086a2006290300370000200041d0036a41086a2004290300370300200041d0036a41106a200d290300370300200041d0036a41186a200a290300370300200020002903a0033703d0034121410120031b102d2206450d010240024020030d00200641003a000042808080801021010c010b200641013a00002006200028027836000120062005370008200620002903d801370010200641046a200028007b360000200641186a200041e0016a290300370000200641206a200041e8016a2d00003a00004280808080900421010b2008ad428080808080048420012006ad8410042006102f0b200041f0036a24000f0b1036000b940405047f017e017f017e057f230041f0006b22002400200041c0006a41186a22014200370300200041c0006a41106a22024200370300200041c0006a41086a220342003703002000420037034041aa87ca00ad4280808080c000842204100122052900002106200041e0006a41086a2207200541086a290000370300200020063703602005102f200320072903003703002000200029036037034041ae87ca00ad4280808080a001841001220529000021062007200541086a290000370300200020063703602005102f200220002903602206370300200041206a41086a22082003290300370300200041206a41106a22092006370300200041206a41186a220a200729030037030020002000290340370320200041106a200041206a10e3012000280210210b200029031821062001420037030020024200370300200342003703002000420037034020041001220529000021042007200541086a290000370300200020043703602005102f200320072903003703002000200029036037034041c387ca00ad4280808080b001841001220529000021042007200541086a290000370300200020043703602005102f2002200029036022043703002008200329030037030020092004370300200a2007290300370300200020002903403703202000200041206a10e3012000280200210720002903082104200041f0006a24002004420020071b200642c8017e4200200b1b7c0bd60202057f027e230041d0006b220224002002412036020420022001360200200241086a2001ad4280808080800484100210730240024020022802082201450d00200228020c210302400240200241106a28020022044104490d0020044104460d0020012d0004220541014b0d0020012800002106420021070240024020050e020100010b2004417b6a4108490d0120012900052108420121070b20002008370308200041106a20063602000c010b20024100360220200242013703182002410b36022c200220023602282002200241186a360234200241cc006a41013602002002420137023c200241b885c7003602382002200241286a360248200241346a41d8dbc100200241386a103c1a200235022042208620023502188410080240200228021c450d002002280218102f0b420221070b200020073703002003450d012001102f0c010b200042023703000b200241d0006a24000bd80301077f230041e0006b220224002002412036020c20022001360208200241106a2001ad428080808080048410021073024002400240024020022802102201450d00200228021421032002200241186a280200360224200220013602202002200241206a10e6010240024020022802000d0020022802242204200228020422054102742206490d002006417f4c0d040240024020060d00410121070c010b200610332207450d06200720022802202208200610e8061a2002200420066b3602242002200820066a3602200b2007450d000240024002402006450d0020074103710d02200541ffffffff037122060d012007102f0b41042107410021060b41000d012007450d012000200636020420002007360200200041086a20063602000c020b2007102f0b20024100360230200242013703282002410b36023c2002200241086a3602382002200241286a360244200241dc006a41013602002002420137024c200241b885c7003602482002200241386a360258200241c4006a41d8dbc100200241c8006a103c1a200235023042208620023502288410080240200228022c450d002002280228102f0b200041003602000b2003450d012001102f0c010b200041003602000b200241e0006a24000f0b103d000b1036000bf93819047f017e017f017e027f017e057f027e017f017e017f027e037f027e047f017e047f017e017f017e087f037e037f017e017f230041e0036b22012400200141e0026a41186a22024200370300200141e0026a41106a22034200370300200141e0026a41086a22044200370300200142003703e00241eba1ca00ad4280808080f000842205100122062900002107200141a0026a41086a2208200641086a290000370300200120073703a0022006102f20042008290300370300200120012903a0023703e00241adcac800ad4280808080900184220710012209290000210a200141d0006a41086a2206200941086a2900003703002001200a3703502009102f20032001290350220a370300200141a8016a41086a220b2004290300370300200141a8016a41106a220c200a370300200141a8016a41186a220d2006290300370300200120012903e0023703a801200141e0026a200141a8016a10fd032003280200210e20012903e002210a200242003703002003420037030020044200370300200142003703e00220051001220929000021052008200941086a290000370300200120053703a0022009102f20042008290300370300200120012903a0023703e00220071001220829000021052006200841086a290000370300200120053703502008102f200320012903502205370300200b2004290300370300200c2005370300200d2006290300370300200120012903e0023703a80102404104102d2204450d0020044100200e41016a200a4202511b220f36000020044104410810312204450d00200441003a0004200141a8016aad2210428080808080048422112004ad4280808080d0008410042004102f200141e0026a41186a22064200370300200141e0026a41106a22094200370300200141e0026a41086a22044200370300200142003703e00241eba1ca00ad4280808080f00084100122082900002105200141a0026a41086a2202200841086a290000370300200120053703a0022008102f20042002290300370300200120012903a0023703e002418ca1ca00ad4280808080a00184100122082900002105200141d0006a41086a2202200841086a290000370300200120053703502008102f20032001290350370000200341086a2002290300370000200141a8016a41086a2004290300370300200141a8016a41106a2009290300370300200141a8016a41186a2006290300370300200120012903e0023703a801200141e0026a200141a8016a109d0520012802e0022204410420041b2112024002400240024020012902e402420020041b22054220882207a722042005a7470d00200441016a22082004490d012007a722094101742206200820082006491b220841ffffffff01712008470d01200841037422084100480d010240024020040d002008102d21120c010b201220094103742008103121120b2012450d042005422088a721042008410376ad21050b201220044103746a220820003602042008200f360200200542ffffffff0f832113200441016a211402400240200f41a1054f0d0020132014ad4220868421130c010b2014450d00200f41e07a6a2108200441ffffffff017141016a21064100210e2012210402400340200428020020084f0d01200441086a21042006200e41016a220e470d000b0b2014200e490d030240200e450d00200e410374210d200141e0026aad4280808080c0008421052012210b0340200b280200210c41eba1ca00ad4280808080f00084220710012204290000210a20014180026a41086a2208200441086a2900003703002001200a370380022004102f4183cbc800ad4280808080b0028410012204290000210a20014190026a41086a2206200441086a2900003703002001200a370390022004102f2001200c3602e00220051003220441086a290000210a200441106a290000211520042900002116200141a0026a41186a2209200441186a290000370300200141a0026a41106a22002015370300200141a0026a41086a2202200a370300200120163703a0022004102f41c000102d2204450d0620042001290380023700002004200129039002370010200420012903a002370020200441086a2008290300370000200441186a2006290300370000200441286a2002290300370000200441306a2000290300370000200441386a20092903003700002004ad428080808080088410132004102f20071001220429000021072008200441086a29000037030020012007370380022004102f4196cbc800ad4280808080b002841001220429000021072006200441086a29000037030020012007370390022004102f2001200c3602e00220051003220441086a2900002107200441106a290000210a200429000021152009200441186a2900003703002000200a37030020022007370300200120153703a0022004102f41c000102d2204450d06200b41086a210b20042001290380023700002004200129039002370010200420012903a002370020200441086a2008290300370000200441186a2006290300370000200441286a2002290300370000200441306a2000290300370000200441386a20092903003700002004ad428080808080088410132004102f200d41786a220d0d000b0b2014200e6b2217450d000240200e450d0020122012200e4103746a201741037410e9061a0b20122802042118200141a0026a41186a22194200370300200141a0026a41106a220c4200370300200141a0026a41086a220d4200370300200142003703a002419c9eca00ad4280808080f00084221a10012204290000210520014180026a41086a2214200441086a29000037030020012005370380022004102f200d201429030037030020012001290380023703a00241919eca00ad4280808080b00184221b10012204290000210520014190026a41086a221c200441086a29000037030020012005370390022004102f200c2001290390022205370300200141e0026a41086a221d200d290300370300200141e0026a41106a221e2005370300200141e0026a41186a221f201c290300370300200120012903a0023703e002200141a8016a200141e0026a1083044101210620012902ac0121200240024020012802a80122044101460d00200441014621060c010b2020422088a722212018201820214b1b220e2020a72208490d000240200e20084d0d00200141e0026aad4280808080c000842115419c9eca00ad4280808080f0008421160340201610012204290000210520014180026a41086a2206200441086a29000037030020012005370380022004102f41f8dec700ad4280808080a0028410012204290000210520014190026a41086a2209200441086a29000037030020012005370390022004102f200120083602e00220151003220441086a2900002105200441106a29000021072004290000210a200141a0026a41186a2200200441186a290000370300200141a0026a41106a22022007370300200141a0026a41086a220b20053703002001200a3703a0022004102f41c000102d2204450d0720042001290380023700002004200129039002370010200420012903a002370020200441086a2006290300370000200441186a2009290300370000200441286a200b290300370000200441306a2002290300370000200441386a20002903003700002004ad428080808080088410052004102f200e200841016a2208470d000b0b20182021492106202042808080807083200ead8421200b20132017ad42208684211320194200370300200c4200370300200d4200370300200142003703a002201a1001220429000021052014200441086a29000037030020012005370380022004102f200d201429030037030020012001290380023703a002201b100122042900002105201c200441086a29000037030020012005370390022004102f200c200129039002370000200c41086a201c290300370000201d200d290300370300201e200c290300370300201f2019290300370300200120012903a0023703e002024020060d00200141e0026aad428080808080048410050c010b4108102d2204450d04200420203e0000200420204220883e0004200141e0026aad42808080808004842004ad428080808080018410042004102f0b200141e0026a41186a22064200370300200141e0026a41106a22094200370300200141e0026a41086a22044200370300200142003703e00241eba1ca00ad4280808080f00084100122082900002105200141a0026a41086a2200200841086a290000370300200120053703a0022008102f20042000290300370300200120012903a0023703e002418ca1ca00ad4280808080a00184100122082900002105200141d0006a41086a2200200841086a290000370300200120053703502008102f20032001290350370000200341086a2000290300370000200141a8016a41086a2004290300370300200141a8016a41106a2009290300370300200141a8016a41186a2006290300370300200120012903e0023703a8010240024020120d00201110050c010b2013422088a722044103744104722208417f4c0d022008102d2206450d04200141003602e802200120083602e402200120063602e0022004200141e0026a10690240024020040d0020012802e802210420012802e402210620012802e00221080c010b201220044103746a2114410020012802e80222026b210920012802e4022106410021040340200220046a2100201220046a220b280200210c02400240200620096a4104490d0020012802e00221080c010b200041046a22082000490d042006410174220d2008200d20084b1b220d4100480d040240024020060d00200d102d21080c010b20012802e0022006200d103121080b2008450d072001200d3602e402200120083602e002200d21060b2001200041046a220d3602e802200820026a20046a200c360000200b41046a280200210c0240200620096a417c6a41034b0d00200d41046a220e200d490d042006410174220d200e200d200e4b1b220d4100480d040240024020060d00200d102d21080c010b20082006200d103121080b2008450d072001200d3602e402200120083602e002200d21060b2001200041086a3602e802200820026a20046a41046a200c360000200941786a2109200441086a2104200b41086a2014470d000b200220046a21040b2013a7210920112004ad4220862008ad84100402402006450d002008102f0b2009450d002012102f0b200141e0026a41186a22224200370300200141e0026a41106a22234200370300200141e0026a41086a22244200370300200142003703e00241eba1ca00ad4280808080f000842225100122042900002105200141a0026a41086a2226200441086a290000370300200120053703a0022004102f20242026290300370300200120012903a0023703e0024196a1ca00ad4280808080e002842227100122042900002105200141d0006a41086a2228200441086a290000370300200120053703502004102f20032001290350370000200341086a22292028290300370000200141a8016a41086a222a2024290300370300200141a8016a41106a222b2023290300370300200141a8016a41186a222c2022290300370300200120012903e0023703a801200141c8006a200141a8016a4120109501200128024c212d02402001280248222e4101470d000240202d4100200f41d87e6a22042004200f4b1b222f4f0d00200141a0026aad42808080808002842130200141e0026aad4280808080800484213120104280808080c000842132200141a0026a41106a2112200141a8016a41386a2133200141a8016a41246a2100202d2134034041eba1ca00ad4280808080f00084100122042900002105200141a0026a41086a2214200441086a290000370300200120053703a0022004102f41e0cfc800ad4280808080800284100122042900002105200141d0006a41086a220f200441086a290000370300200120053703502004102f200120343602a80120321003220441086a2900002105200441106a29000021072004290000210a200141e0026a41186a220b200441186a290000370300200141e0026a41106a220d2007370300200141e0026a41086a220e20053703002001200a3703e0022004102f41c000102d2204450d06200420012903a00237000020042001290350370010200420012903e002370020200441086a2014290300370000200441186a200f290300370000200441286a200e290300370000200441306a200d290300370000200441386a200b290300370000200141e0026a2004109a050240024020012802e0022235450d002004ad4280808080800884100520012902e40221360c010b42002136410821350b2004102f20352036422088a7220441d8006c6a210c2035210902402004450d000340200141a8016a41186a2204200941186a290300370300200141a8016a41106a2208200941106a290300370300200141a8016a41086a2206200941086a2903003703002009280220210220092903002105200141e0026a41206a221c200941c4006a290200370300200141e0026a41286a2217200941cc006a290200370300200141e0026a41306a2219200941d4006a280200360200200e2009412c6a290200370300200d200941346a290200370300200b2009413c6a290200370300200120053703a8012001200941246a2902003703e002200941d8006a21092002450d0120014188016a41186a2218200429030037030020014188016a41106a221d200829030037030020014188016a41086a221e2006290300370300200f200e290300370300200141d0006a41106a221f200d290300370300200141d0006a41186a2221200b290300370300200141d0006a41206a2237201c290300370300200141d0006a41286a221c2017290300370300200141d0006a41306a22172019280200360200200120012903a80137038801200120012903e002370350200420182903003703002008201d2903003703002006201e29030037030020002001290350370200200041086a200f290300370200200041106a201f290300370200200041186a2021290300370200200041206a2037290300370200200041286a201c290300370200200041306a201728020036020020012001290388013703a801200120023602c801200142003703c802200142003703c002200120042903003703d802200120082903003703d002203320012903a8012006290300200141d0026a200141c0026a10b403024020012802d0012204450d00200441306c21082002210403402004200441206a290300200441286a290300200141d0026a200141c0026a10b403200441306a2104200841506a22080d000b0b200141c0026a41086a290300211020012903c002212020012802d401211c024002400240024020012903d0022207200141d0026a41086a290300220584500d0020012802dc012204450d00200141386a202020072020200754201020055420102005511b22081b221a2010200520081b221b2004ad420010ee0620044105742108200141386a41086a290300210a20012903382116201a2105201b2107201c2104034020042016200520052016562007200a562007200a511b22061b2215200a200720061b221310b502200720137d2005201554ad7d2107200520157d2105200441206a2104200841606a22080d000b427f2020201a7d220a20057c22052005200a5422042010201b7d2020201a54ad7d220520077c2004ad7c220720055420072005511b22041b2205427f200720041b2207844200520d01200141a0026a41186a220442003703002012420037030020144200370300200142003703a00241e7a2ca00ad4280808080800184220510012206290000210720014180026a41086a2208200641086a29000037030020012007370380022006102f2014200829030037030020012001290380023703a00241ecb5c600ad4280808080d00184220710012217290000210a20014190026a41086a2206201741086a2900003703002001200a370390022017102f2012200129039002370000201241086a22182006290300370000200e2014290300370300200d2012290300370300200b2004290300370300200120012903a0023703e002200141206a200141e0026a4120109c01200141206a41106a290300210a2001290328211520012802202117200442003703002012420037030020144200370300200142003703a00220051001221929000021052008201941086a29000037030020012005370380022019102f2014200829030037030020012001290380023703a00220071001220829000021052006200841086a29000037030020012005370390022008102f201220012903900237000020182006290300370000200e2014290300370300200d2012290300370300200b2004290300370300200120012903a0023703e0022001200a420020171b3703a80220012015420020171b3703a0022031203010040c030b20202010844200520d01200141a0026a41186a220442003703002012420037030020144200370300200142003703a00241e7a2ca00ad4280808080800184220510012206290000210720014180026a41086a2208200641086a29000037030020012007370380022006102f2014200829030037030020012001290380023703a00241ecb5c600ad4280808080d00184220710012217290000210a20014190026a41086a2206201741086a2900003703002001200a370390022017102f2012200129039002370000201241086a22182006290300370000200e2014290300370300200d2012290300370300200b2004290300370300200120012903a0023703e002200141086a200141e0026a4120109c01200141086a41106a290300210a2001290310211520012802082117200442003703002012420037030020144200370300200142003703a00220051001221929000021052008201941086a29000037030020012005370380022019102f2014200829030037030020012001290380023703a00220071001220829000021052006200841086a29000037030020012005370390022008102f201220012903900237000020182006290300370000200e2014290300370300200d2012290300370300200b2004290300370300200120012903a0023703e0022001200a420020171b3703a80220012015420020171b3703a0022031203010040c020b200141e0026a41f4c7c40010b402200141e0026a2005200710b502200b2007370300200120053703f002200141063a00e8022001410c3a00e00241c8e1ca004100200141e0026a108c010c010b200141e0026a41f4c7c40010b402200141e0026a2020201010b502200b2010370300200120203703f002200141063a00e8022001410c3a00e00241c8e1ca004100200141e0026a108c010b024020012802cc01450d002002102f0b024020012802d801450d00201c102f0b2009200c470d000b200c21090b2036a721080240200c2009460d0003400240200941246a280200450d00200941206a280200102f0b200941d8006a21040240200941306a280200450d002009412c6a280200102f0b20042109200c2004470d000b0b203441016a213402402008450d002035102f0b2034202f470d000b0b202d202f202d202f4b1b212d0b202242003703002023420037030020244200370300200142003703e00220251001220429000021052026200441086a290000370300200120053703a0022004102f20242026290300370300200120012903a0023703e00220271001220429000021052028200441086a290000370300200120053703502004102f2003200129035037000020292028290300370000202a2024290300370300202b2023290300370300202c2022290300370300200120012903e0023703a80102400240202e0d00201110050c010b2001202d3602e0022011200141e0026aad4280808080c0008410040b200141e0036a24000f0b1038000b103d000b41a6b5ca00411c41f8b4ca001039000b1036000bf68b010a047f017e017f017e017f017e077f047e167f067e230041f0086b22022400200241f0046a41186a22034200370300200241f0046a41106a22044200370300200241f0046a41086a22054200370300200242003703f00441eba1ca00ad4280808080f000842206100122072900002108200241d0086a41086a2209200741086a290000370300200220083703d0082007102f20052009290300370300200220022903d0083703f00441d2a0ca00ad4280808080a00184220810012207290000210a200241b8036a41086a220b200741086a2900003703002002200a3703b8032007102f200420022903b803220a37030020024180046a41086a220c200529030037030020024180046a41106a220d200a37030020024180046a41186a220e200b290300370300200220022903f00437038004200241b8026a20024180046a412010950120022802b802210f20022802bc022110200342003703002004420037030020054200370300200242003703f004200610012207290000210a2009200741086a2900003703002002200a3703d0082007102f20052009290300370300200220022903d0083703f0042008100122072900002108200b200741086a290000370300200220083703b8032007102f200420022903b8032208370300200c2005290300370300200d2008370300200e200b290300370300200220022903f004370380042002201041016a4100200f1b22113602f00420024180046aad22124280808080800484200241f0046aad22134280808080c0008422081004200610012207290000210a2009200741086a2900003703002002200a3703d0082007102f41dca0ca00ad4280808080d0028410012207290000210a200b200741086a2900003703002002200a3703b8032007102f200220113602800420124280808080c0008410032207290000210a200741086a2900002114200741106a29000021152003200741186a29000037030020042015370300200520143703002002200a3703f0042007102f024002400240024041c000102d2207450d00200720022903d008370000200720022903b803370010200720022903f004370020200741086a2009290300370000200741186a200b290300370000200741286a2005290300370000200741306a2004290300370000200741386a2003290300370000200220013602f0042007ad4280808080800884200810042007102f200342003703002004420037030020054200370300200242003703f00420061001220729000021062009200741086a290000370300200220063703d0082007102f20052009290300370300200220022903d0083703f00441a3a0ca00ad4280808080c00184100122072900002106200b200741086a290000370300200220063703b8032007102f200420022903b803370000200441086a200b290300370000200c2005290300370300200d2004290300370300200e2003290300370300200220022903f00437038004200241b0026a20024180046a41201095010240201120022802b40241016a41d50020022802b0021b6b220520114b0d00200510ee050b200242003702c40220024190bdc6003602c00241eba1ca00ad4280808080f00084100122052900002106200241b8036a41086a2207200541086a290000370300200220063703b8032005102f4195c6c800ad428080808080028410012205290000210620024180046a41086a2209200541086a29000037030020022006370380042005102f200241f0046a41086a22052007290300370300200241f0046a41186a220b2009290300370300200220022903b8033703f00420022002290380043703800520024180046a200241f0046a108801200241f0046a200228028004220920022802880410ad02200241f0046a41106a21160240200228028404450d002009102f0b20024190036a41086a2005290300220637030020024190036a41106a2016290300220837030020024190036a41186a200b290300220a37030020024190036a41206a200241f0046a41206a2d000022053a0000200220022903f004221437039003200241b8036a41206a20053a0000200241b8036a41186a200a370300200241b8036a41106a200837030020072006370300200220143703b803200241f0046a200241b8036a109904410121170240024002400240024002400240024020022802f0044101460d0041042118410021194100211a4100211b0c010b200241f0046a410272211c200241f0046a410172211d200241f0046a410472211e200241a8046a211f4100210d4100211a410121174100211b410421180340200241d0026a41086a201e41086a2902002206370300200241d0026a41106a201e41106a2902002208370300200241d0026a41186a201e41186a290200220a3703002002201e29020022143703d0022002280294052120200241f0026a41186a2221200a370300200241f0026a41106a22222008370300200241f0026a41086a22232006370300200220143703f002200241f0046a41186a2201200a370300200241f0046a41106a220f2008370300200241f0046a41086a22102006370300200220143703f0044120102d2205450d08200520022903f002370000200541186a2021290300370000200541106a2022290300370000200541086a2023290300370000200241e0036a41086a20102903002206370300200241e0036a41106a200f2903002208370300200241e0036a41186a2001290300220a370300200220022903f00422143703e0032001200a370300200f200837030020102006370300200220143703f0040240200d201b470d00200d41016a2207200d490d0c200d41017422092007200920074b1bad422c7e2206422088a70d0c2006a722074100480d0c02400240200d0d002007102d21180c010b2018200d412c6c2007103121180b2018450d092007412c6e211b0b2018200d412c6c6a220720022903f00437020020102903002106200f29030021082001290300210a200742818080801037022420072005360220200741186a200a370200200741106a2008370200200741086a2006370200200241d0086a41186a22242021290300370300200241d0086a41106a22252022290300370300200241d0086a41086a22262023290300370300200220022903f0023703d0080240024020022802c00222034190bdc600460d0020022802c402210c0c010b200241f0046a410041e00210e7061a201f410036020020024180046a41206a2205420037030020024180046a41186a2207420037030020024180046a41106a2209420037030020024180046a41086a220b42003703002002420037038004419403102d2203450d094100210c200341003b010620034100360200200341086a200241f0046a41e00210e8061a20034190036a201f28020036020020034188036a200529030037020020034180036a2007290300370200200341f8026a2009290300370200200341f0026a200b29030037020020032002290380043702e802200241003602c402200220033602c0020b200d41016a211902400240024003400240024020032f0106220e0d00410021090c010b200e4105742105200341086a2107417f21090340024020050d00200e21090c020b200941016a2109200241d0086a2007412010ea06220b450d03200541606a2105200741206a2107200b417f4a0d000b0b0240200c450d00200c417f6a210c200320094102746a4194036a28020021030c010b0b200241b0046a41186a22052024290300370300200241b0046a41106a22072025290300370300200241b0046a41086a220b2026290300370300200220022903d0083703b004200220022802c80241016a3602c802200220093602dc08200220033602d408200241003602d0082002200241c0026a3602d80820024180046a41186a2226200529030037030020024180046a41106a2227200729030037030020024180046a41086a2228200b290300370300200220022903b00437038004200241f0046a200241d0086a20024180046a2020107720022d00f0044101470d02200241d0046a41186a2209201d41186a2229290000370300200241d0046a41106a220b201d41106a222a290000370300200241d0046a41086a2203201d41086a222b2900003703002002201d2900003703d004200228029c05210520022802a805210c20022802a405210720022802a005210e20022802980522242802002220450d0120242f01042124034020022802940521252002202441ffff03713602dc08200220053602d808200220203602d4082002202541016a3602d008202620092903003703002027200b29030037030020282003290300370300200220022903d00437038004200241f0046a200241d0086a20024180046a200e2007200c107820022d00f0044101470d0320092029290000370300200b202a2900003703002003202b2900003703002002201d2900003703d004200228029c05210520022802a805210c20022802a405210720022802a005210e20022802980522242802002220450d0220242f010421240c000b0b200320094102746a41e8026a20203602000c010b201c410041be0310e7061a41c403102d2220450d0920204100360200202041046a200241f0046a41c00310e8061a202020052802002224360294032005202036020020052005280204222541016a360204202441003b010420242020360200200241b0086a41186a22242009290300370300200241b0086a41106a2226200b290300370300200241b0086a41086a220b2003290300370300200220022903d0043703b0082025200c470d0420202f01062205410a4b0d03202020054105746a220941206a2024290300370000200941186a2026290300370000200941106a200b290300370000200941086a20022903b008370000202020054102746a41e8026a200e3602002020200541016a22054102746a4194036a2007360200202020053b0106200720053b0104200720203602000b20012021290300370300200f202229030037030020102023290300370300200220022903f0023703f0040240200d201a470d00200d41016a2205200d490d0c200d41017422072005200720054b1b220541ffffff3f712005470d0c200541057422054100480d0c02400240200d0d002005102d21170c010b2017200d4105742005103121170b2017450d092005410576211a0b2017200d4105746a220520022903f004370000200541186a2001290300370000200541106a200f290300370000200541086a2010290300370000200241f0046a200241b8036a1099042019210d20022802f0044101460d000b0b41eba1ca00ad4280808080f00084100122052900002106200241b8036a41086a2207200541086a290000370300200220063703b8032005102f41fbc5c800ad428080808080028410012205290000210620024180046a41086a2209200541086a29000037030020022006370380042005102f200241f0046a41086a220520072903003703002016200229038004370000201641086a2009290300370000200220022903b8033703f00420024180046a200241f0046a108801200241f0046a200228028004220920022802880410ad020240200228028404450d002009102f0b20024190036a41086a2005290300220637030020024190036a41106a200241f0046a41106a2227290300220837030020024190036a41186a200241f0046a41186a2228290300220a37030020024190036a41206a200241f0046a41206a22252d000022053a0000200220022903f004221437039003200241b8036a41206a20053a0000200241b8036a41186a200a370300200241b8036a41106a200837030020072006370300200220143703b803200241f0046a200241b8036a1096040240024020022d00a0054102470d00201921200c010b20192120034020024180046a41286a200241f0046a41286a28020036020020024180046a41206a202529030037030020024180046a41186a2226202829030037030020024180046a41106a221f202729030037030020024180046a41086a221d200241f0046a41086a290300370300200220022903f004370380042025280200212402402002290294052214422088a72222450d00200228029c05212341002103202421074100210c0240034041eba1ca00ad4280808080f00084100122052900002106200241d0046a41086a220b200541086a290000370300200220063703d0042005102f41a9cbc800ad4280808080d00184100122052900002106200241f0026a41086a220d200541086a290000370300200220063703f0022005102f4120102d2205450d0b20052007290000370000200541186a200741186a2210290000370000200541106a200741106a221e290000370000200541086a200741086a22212900003700002005ad4280808080800484100322092900002106200941086a2900002108200941106a290000210a200241b0086a41186a220e200941186a290000370300200241b0086a41106a2201200a370300200241b0086a41086a220f2008370300200220063703b0082009102f2005102f41c000102d2205450d0b200520022903d004370000200520022903f002370010200520022903b008370020200541086a200b290300370000200541186a200d290300370000200541286a200f290300370000200541306a2001290300370000200541386a200e290300370000200241d0086a2005109c0502400240024002400240024020022802dc0822090d002005102f0c010b20022802d808210d20022903e00821062005102f02402006a7450d002009102f0b200d20234b0d010b20030d01410021030c020b200341016a21030c010b200c20036b220520224f0d01200241d0046a41186a2209200720034105746b220541186a220d290000370300200241d0046a41106a220e200541106a2201290000370300200b200541086a220f290000370300200220052900003703d00420212900002106201e29000021082010290000210a20052007290000370000200d200a37000020012008370000200f200637000020102009290300370000201e200e2903003700002021200b290300370000200720022903d0043700000b200741206a21072022200c41016a220c460d020c010b0b4188bbca0020052022103b000b2003417f6a20224f0d00201442ffffffff0f83202220036bad4220868421140b200241b0046a41186a22052026290300370300200241b0046a41106a2207201f290300370300200241b0046a41086a2209201d29030037030020022002290380043703b0042024450d01200241b0086a41186a220b2005290300370300200241b0086a41106a22032007290300370300200241b0086a41086a22072009290300370300200220022903b0043703b00802402020201b470d00202041016a22052020490d0c202041017422092005200920054b1bad422c7e2206422088a70d0c2006a722054100480d0c0240024020200d002005102d21180c010b20182020412c6c2005103121180b2018450d092005412c6e211b0b20182020412c6c6a220520022903b0083702002007290300210620032903002108200b290300210a2005201437022420052024360220200541186a200a370200200541106a2008370200200541086a2006370200202041016a2120200241f0046a200241b8036a10960420022d00a0054102470d000b0b200241f0046a41186a22074200370300200241f0046a41106a22094200370300200241f0046a41086a22054200370300200242003703f00441eba1ca00ad4280808080f000842206100122032900002108200241d0086a41086a220b200341086a290000370300200220083703d0082003102f2005200b290300370300200220022903d0083703f00441afa0ca00ad4280808080e001841001220c2900002108200241b8036a41086a2203200c41086a290000370300200220083703b803200c102f200420022903b803370000200441086a220d200329030037000020024180046a41086a220e200529030037030020024180046a41106a2201200929030037030020024180046a41186a220f2007290300370300200220022903f00437038004200241a8026a20024180046a412010950120022802ac02211620022802a802211c200742003703002009420037030020054200370300200242003703f00420061001220c2900002106200b200c41086a290000370300200220063703d008200c102f2005200b290300370300200220022903d0083703f00441bda0ca00ad4280808080d002841001220b29000021062003200b41086a290000370300200220063703b803200b102f200420022903b803370000200d2003290300370000200e200529030037030020012009290300370300200f2007290300370300200220022903f00437038004200241a0026a20024180046a412010950120022802a402210720022802a0022109200242003702e40320024190bdc6003602e003202020196a222aad42e0007e2206422088a70d042006a72205417f4c0d04410821104108212902402005450d002005102d2229450d07200541e0006e212a0b4100210f4100212b02402019410574220b450d00200b410575ad42d8007e2206422088a70d0a2006a722054100480d0a2005102d2210450d07200541d8006e212b0b2007410420091b222241014b212302402019450d00200b41606a2119200241a0056a210720024198056a21212010210341002109201721050340200241b8036a41186a220c200541186a220d290000370300200241b8036a41106a220e200541106a2201290000370300200241b8036a41086a220f200541086a221e290000370300200220052900003703b80320024180046a41186a200d29000037030020024180046a41106a200129000037030020024180046a41086a201e2900003703002002200529000037038004200241e0036a20024180046a2009109a02200241f0046a41086a4200370300200241f0046a41106a4200370300200241f0046a41186a4200370300200241f0046a41206a420037030020214200370300200741186a200c290300370000200741106a200e290300370000200741086a200f290300370000200720022903b803370000200242003703f0042003200241f0046a41d00010e806220341d0006a41003a0000200341d8006a2103200541206a2105200941016a2109200b41606a220b0d000b201941057641016a210f0b2022410120231b21050240201a450d002017102f0b024002400240200f2005490d000240202a2020412c6c2205412c6d22074f0d00202a41017422092007200920074b1bad42e0007e2206422088a70d0d2006a722074100480d0d02400240202a0d002007102d21290c010b2029202a41e0006c2007103121290b2029450d0a200741e0006e212a0b201820056a211f024020200d00410021262018211a0c060b200241b0086a41106a21012018210520292124410021260340200241b0046a41186a2209200541186a290200370300200241b0046a41106a220b200541106a290200370300200241b0046a41086a2203200541086a290200370300200220052902003703b0042005412c6a211a20052802202225450d06200541286a2802002107200541246a280200211d20024180046a41186a2204200929030037030020024180046a41106a2227200b29030037030020024180046a41086a22282003290300370300200220022903b0043703800420024190026a20024180046a10ef052007ad42c8007e2206422088a70d082006a72205417f4c0d0820024190026a41086a2903002115200229039002212c0240024020050d00410821222007211e0c010b2005102d2222450d0b200541c8006e211e0b0240024020070d00410021210c010b202520074105746a2119410021212025210e0340200e41086a2900002106200e41106a2900002108200e290000210a200241f0046a41186a2223200e41186a290000370300200241f0046a41106a22202008370300200241f0046a41086a221720063703002002200a3703f004200e41206a210e200241e0036a210520022802e403210c02400240034002400240200528020022032f0106220d0d00410021090c010b200d4105742105200341086a2107417f21090340024020050d00200d21090c020b200941016a2109200241f0046a2007412010ea06220b450d03200541606a2105200741206a2107200b417f4a0d000b0b200c450d02200c417f6a210c200320094102746a4194036a21050c000b0b200f200320094102746a41e8026a220528020022074d0d052010200741d8006c6a22072903202106200741286a2903002108200241b0086a41186a2209420037030020014200370300200241b0086a41086a22074200370300200242003703b00841e7a2ca00ad42808080808001841001220b290000210a2007200b41086a2900003703002002200a3703b008200b102f41ecb5c600ad4280808080d001841001220b290000210a200241f0026a41086a2203200b41086a2900003703002002200a3703f002200b102f200120022903f002370000200141086a2003290300370000200241d0046a41086a2007290300370300200241d0046a41106a2001290300370300200241d0046a41186a2009290300370300200220022903b0083703d004200241f8016a200241d0046a4120109c01200241e8016a200229038002200241f8016a41106a290300427f420010ee06200f2005280200220b4d0d06200241d8016a202c201520022903e801420020022802f80122031b220a4201200a420156200241e8016a41086a290300420020031b220a420052200a501b22031b200a420020031b10ee062010200b41d8006c6a220b41286a427f2008200620022903d8017c220a2006542203ad7c221420032014200854200a20065a1b22031b370300200b427f200a20031b370320200920232903003703002001202029030037030020072017290300370300200220022903f0043703b0082005280200210b024002402021201e460d00202121050c010b201e41016a2205201e490d11201e41017422032005200320054b1bad42c8007e2206422088a70d112006a722034100480d1102400240201e0d002003102d21220c010b2022201e41c8006c2003103121220b2022450d0e201e2105200341c8006e211e0b2022200541c8006c6a220542003703002005200b360220200541186a4200370300200541106a4200370300200541086a4200370300200520022903b0083702242005412c6a2007290300370200200541346a20012903003702002005413c6a2009290300370200202141016a21210b200e2019470d000b0b0240201d450d002025102f0b200241d0086a41186a22092004290300370300200241d0086a41106a220b2027290300370300200241d0086a41086a2203202829030037030020022002290380043703d008200241b0086a41186a220c420037030020014200370300200241b0086a41086a22054200370300200242003703b00841e7a2ca00ad42808080808001841001220729000021062005200741086a290000370300200220063703b0082007102f41ecb5c600ad4280808080d00184100122072900002106200241f0026a41086a220d200741086a290000370300200220063703f0022007102f200120022903f002370000200141086a200d290300370000200241d0046a41086a2005290300370300200241d0046a41106a2001290300370300200241d0046a41186a200c290300370300200220022903b0083703d004200241c0016a200241d0046a4120109c01200241b0016a20022903c801200241c0016a41106a290300427f420010ee06200241a0016a202c201520022903b001420020022802c00122051b220642012006420156200241b0016a41086a290300420020051b22064200522006501b22051b2006420020051b10ee0620244200370308202420022903a00137030020244200370310202441186a4200370300202441286a420037030020244201370320202420213602382024201e36023420242022360230202420022903d00837023c202441c4006a2003290300370200202441cc006a200b290300370200202441d4006a2009290300370200202641016a2126202441e0006a2124201a2105201a201f470d000c070b0b0240202b450d002010102f0b0240202a450d002029102f0b20022802e00320022802e40320022802e80310a30202402020450d002020412c6c2107201841206a210503400240200541046a280200450d002005280200102f0b2005412c6a2105200741546a22070d000b0b410021250240201b450d002018102f0b0c0a0b41c4c2ca002007200f103b000b419cc3ca00200b200f103b000b41c6b3ca00412741f8b4ca001039000b4196b3ca00413041f8b4ca001039000b201f201a460d000340201a412c6a21050240201a41246a280200450d00201a41206a280200102f0b2005211a201f2005470d000b0b20164100201c1b21170240201b450d002018102f0b2017ad42307e2206422088a70d002006a72205417f4c0d000240024020050d0041082123201721180c010b2005102d2223450d03200541306e21180b2017412c6c2205417f4c0d000240024020050d004104211b0c010b2005102d221b450d030b410021190240200f2017200f2017491b22160d002018211d4100211f0c020b201041a87f6a2104200f41d8006c21252029202641e0006c6a2120200241f0046a41186a2127200241f0046a41106a2122200241f0046a41086a21284100211f4100211a03400240200f450d00202521072010210503400240200541d0006a2d00000d0002400240200541206a2903002208200541286a290300220a8450450d0042002106427f2108427f210a0c010b427f210620024190016a427f427f2008200a10ee0620024190016a41086a290300210a20022903900121080b200520083703002005200a370308200541106a2006370300200541186a20063703000b200541d8006a2105200741a87f6a22070d000b0b2029210b02402026450d00024003400240200b2802382205450d00200541c8006c2109200b28023041206a21050340200f200528020022074d0d0302402010200741d8006c6a22072d00500d0020072903202206200741286a290300220884500d00200241f0046a200b290310200b41186a290300200b290300200b41086a29030020062008109405200720072903002206427f2006427f20022903f80420022802f00441014622031b220a7c22082008200654220c200741086a220d2903002206427f202229030020031b22147c200cad7c220820065420082006511b22031b200a20148450220c1b370300200d2006427f200820031b200c1b3703000b200541c8006a2105200941b87f6a22090d000b0b200b41e0006a220b2020460d020c000b0b419cc3ca002007200f103b000b201a41016a211a2025210520042107201021090340024020050d002018211d0c040b200541a87f6a2105200741d8006a2107200941d0006a210b200941d8006a22032109200b2d00000d000b02402005450d00200741086a2903002106200741186a2903002108200741106a290300210a200729030021144100210903400240200320096a220b41d0006a2d00000d00200b41086a2903002215200620142006200a2008200b290300222c2015200b41106a290300222d200b41186a290300222e10950541ff0171410146220c1b2106202c2014200c1b2114202e2008200c1b2108202d200a200c1b210a200b2007200c1b21070b2005200941d8006a2209470d000b20070d002018211d0c030b200741013a005002402026450d002007410c6a211e200741306a2121202921090340200941e0006a212402402009280238220b450d0020092802302105200b41c8006c210b034002400240201e2005460d00200541246a2021412010ea060d010b200941186a22032903002114200741086a220c29030021062009290310210a2007290300210820072903102115200541186a200741186a220d290300370300200541106a2015370300200520064200200620147d2008200a54ad7d22152008200a7d222c200856201520065620152006511b220e1b200a2014845022011b370308200520084200202c200e1b20011b370300200c2903002106200d29030021082007290300210a20092007290310370320200941286a20083703002009200a370310200320063703000b200541c8006a2105200b41b87f6a220b0d000b0b2024210920242020470d000b0b2027200741c8006a2900003703002022200741c0006a2900003703002028200741386a290000370300200220072900303703f004200741286a29030021062007290320210802400240201f2018460d002018211d0c010b201841016a22052018490d07201841017422072005200720054b1bad42307e220a422088a70d07200aa722054100480d070240024020180d002005102d21230c010b2023201841306c2005103121230b2023450d042018211f200541306e221d21180b2028290300210a202229030021142027290300211520022903f004212c2023201f41306c6a220520083703202005202c370300200541286a2006370300200541186a2015370300200541106a2014370300200541086a200a370300201f41016a211f201a20164f0d020c000b0b103d000b02402026450d002029202641e0006c6a2125201f41306c212020024180046a41186a212420024180046a41106a211820024180046a41086a211a410021192029211e03402024201e41d4006a2900003703002018201e41cc006a290000370300201a201e41c4006a2900003703002002201e29003c370380040240201e2802382205450d00201e280230220e200541c8006c6a2121201e41106a2122410021014104210f4100210d0340200e220c41246a2109200c41c8006a210e4100210b2020210720232105024003402007450d01024020092005460d0020052009412010ea062103200b41016a210b200741506a2107200541306a210520030d010b0b418094ebdc03210502402022200c1096050d0041002105200c290310201e29032085200c41186a290300201e41286a29030085844200520d00200241f0046a428094ebdc034200200c290300200c41086a2903002022290300202241086a290300109405427f20022903f80420022802f00441014622051b2206a7417f2006428080808010544100427f200241f0046a41106a29030020051b501b1b21050b200220053602f0042002418094ebdc033602f404200241f0046a2005418094ebdc034b4102746a2802002107200241f0046a41186a2209200c413c6a290000370300200241f0046a41106a220b200c41346a290000370300200241f0046a41086a2203200c412c6a2900003703002002200c2900243703f00402400240200d2001460d00200d21050c010b200141016a22052001490d092001410174220c2005200c20054b1bad42247e2206422088a70d092006a7220c4100480d090240024020010d00200c102d210f0c010b200f200141246c200c1031210f0b200f450d0620012105200c41246e21010b200f200541246c6a220520022903f00437020020032903002106200b29030021082009290300210a20052007360220200541186a200a370200200541106a2008370200200541086a2006370200200d41016a210d0b200e2021470d000b024002400240200d450d0002400240200d41246c22090d00410021050c010b200f41206a2107410021050340417f200520072802006a220b200b2005491b2105200741246a21072009415c6a22090d000b0b02404100418094ebdc0320056b22052005418094ebdc034b1b220c200d6e2205418094ebdc032005418094ebdc03491b2203450d00200f41206a2105410021070340200d2007460d032002417f2005280200220920036a220b200b2009491b22093602f0042002418094ebdc033602f4042005200241f0046a2009418094ebdc034b4102746a280200360200200541246a2105200d200741016a2207470d000b0b0240200c2003200d6c6b2203450d00410021050340200d2005200d7022074d0d042002417f200f200741246c6a2207280220220941016a220b200b2009491b22093602f0042002418094ebdc033602f4042007200241f0046a2009418094ebdc034b4102746a280200360220200541016a22052003490d000b0b200241f0046a41186a22072024290300370300200241f0046a41106a22092018290300370300200241f0046a41086a220b201a29030037030020022002290380043703f004024020192017470d00201741016a22052017490d0a201741017422032005200320054b1bad422c7e2206422088a70d0a2006a722054100480d0a0240024020170d002005102d211b0c010b201b2017412c6c20051031211b0b201b450d07201721192005412c6e21170b201b2019412c6c6a220520022903f004370200200b2903002106200929030021082007290300210a2005200d360228200520013602242005200f360220200541186a200a370200200541106a2008370200200541086a2006370200201941016a21190c030b2001450d02200f102f0c020b41c4c2ca002007200d103b000b41c4c2ca002007200d103b000b201e41e0006a221e2025470d000b0b0240202b450d002010102f0b02402026450d00202641e0006c2107202941306a210503400240200541046a280200450d002005280200102f0b200541e0006a2105200741a07f6a22070d000b0b0240202a450d002029102f0b20022802e00320022802e40320022802e80310a302024020230d00410021250c030b02400240201f41306c22050d004200212f410121250c010b200541306d220541ffffff3f712005470d04200541057422054100480d042005102d2225450d012005410576ad212f0b02400240201f0d00410021240c010b201f41306c21094100212420252105202321070340200741086a2900002106200741106a29000021082007290000210a200541186a200741186a290000370000200541106a2008370000200541086a20063700002005200a370000202441016a2124200541206a2105200741306a2107200941506a22090d000b0b0240201d450d002023102f0b200242003702d40820024190bdc6003602d00802402024450d002024410574210720252105034020024180046a41186a200541186a29000037030020024180046a41106a200541106a29000037030020024180046a41086a200541086a2900003703002002200529000037038004200242003703f804200242003703f00420024100360288052002420837038005200241b8036a200241d0086a20024180046a200241f0046a109902024020022802c8032209450d0020022802cc03450d002009102f0b200541206a2105200741606a22070d000b0b02402019412c6c2205450d00201b20056a2123200241b0086a41106a210141e7a2ca00ad42808080808001842115201b211003400240201028022841246c2205450d002010280220222120056a2122034020024180016a201010ef0520024180016a41086a2903002108200229038001210a200241b0086a41186a221e420037030020014200370300200241b0086a41086a220f4200370300200242003703b0082015100122052900002106200f200541086a290000370300200220063703b0082005102f41ecb5c600ad4280808080d00184100122052900002106200241f0026a41086a2207200541086a290000370300200220063703f0022005102f200120022903f002370000200141086a2007290300370000200241d0046a41086a200f290300370300200241d0046a41106a2001290300370300200241d0046a41186a201e290300370300200220022903b0083703d004200241e8006a200241d0046a4120109c01200241d8006a2002290370200241e8006a41106a290300427f420010ee06200241c8006a200a200820022903584200200228026822051b220642012006420156200241d8006a41086a290300420020051b22064200522006501b22051b2006420020051b10ee06200241386a20022903482206428094ebdc03802208420020212203350220220a420010ed06200241386a41086a29030020022903382214200a200620084280ec94a37c7e7c7e22062006428094ebdc038022064280ec94a37c7e7c4280cab5ee01562006a76aad7c2206201454ad7c2108200341246a2121200241d0086a210520022802d408210d024002400340024002402005280200220c2f0106220e0d00410021090c010b200e4105742105200c41086a2107417f21090340024020050d00200e21090c020b200941016a210920032007412010ea06220b450d03200541606a2105200741206a2107200b417f4a0d000b0b200d450d02200d417f6a210d200c20094102746a41c8056a21050c000b0b201e201041186a2900003703002001201041106a290000370300200f201041086a290000370300200220102900003703b008200c20094105746a220741f8026a210b024020074180036a22092802002205200741fc026a280200470d00200541016a22032005490d092005410174220c2003200c20034b1bad42307e220a422088a70d09200aa722034100480d090240024020050d002003102d21050c010b200b280200200541306c2003103121050b2005450d06200b2005360200200b41046a200341306e360200200928020021050b200b280200200541306c6a220520022903b00837030020052006370320200541186a201e290300370300200541106a2001290300370300200541086a200f290300370300200541286a20083703002009200928020041016a360200200741e8026a2205427f2005290300220a20067c22062006200a542207200541086a2205290300220620087c2007ad7c220820065420082006511b22071b3703002005427f200820071b3703000b20212022470d000b0b2010412c6a22102023470d000b0b20022802d808210c20022802d00821070240024020022802d40822090d00200721050c010b2009210b20072105034020052802c8052105200b417f6a220b0d000b0340200720072f01064102746a41c8056a28020021072009417f6a22090d000b0b200241d4036a20072f010636020041002103200241b8036a41186a4100360200200241cc036a20073602002002200c3602d803200241003602c80342002130200242003703c003200220053602bc03200241003602b803024002400240200c450d002002200c417f6a3602d8030240024020052f0106450d004100210b20052107410021090c010b4100210b41002109034002400240024020054190bdc600460d00200528020022070d012009ad2106410021070c020b41edb3ca00412841f8b4ca001039000b200b41016a210b20053301044220862009ad8421060b2005102f2006a72109200721052006422088a7220320072f01064f0d000b0b200241b0086a41186a220c200720034105746a220541206a290000370300200241b0086a41106a220e200541186a290000370300200241b0086a41086a2201200541106a2900003703002002200541086a2900003703b008200341016a210320054180036a280200210d200541fc026a280200211a200541f8026a28020021180240200b450d00200720034102746a41c8056a280200210741002103200b417f6a2205450d00034020072802c80521072005417f6a22050d000b0b200241f0046a41186a200c290300370300200241f0046a41106a200e290300370300200241f0046a41086a2001290300370300200220022903b0083703f004200220033602c403200220093602c003200220073602bc03200241003602b80320180d01420021300b420021310c010b200241b0086a41106a210742002130420021310340200241e0036a41186a200241f0046a41186a221e2903002206370300200241e0036a41106a200241f0046a41106a22212903002208370300200241e0036a41086a200241f0046a41086a2222290300220a370300200220022903f00422143703e003200241b0046a41186a2006370300200241b0046a41106a2008370300200241b0046a41086a200a370300200220143703b00402400240200d41306c220d0d004100210b4200212d4200212c410021204108212342002108420021060c010b4200212d410821234100210b4200212c410021204200210842002106201821050340200541286a2903002114200541206a2903002115200241d0086a41186a220e200541186a290300370300200241d0086a41106a2201200541106a290300370300200241d0086a41086a220f200541086a290300370300200220052903003703d008200241b0086a41186a220c420037030020074200370300200241b0086a41086a22094200370300200242003703b00841e7a2ca00ad428080808080018410012203290000210a2009200341086a2900003703002002200a3703b0082003102f41ecb5c600ad4280808080d0018410012203290000210a200241f0026a41086a2210200341086a2900003703002002200a3703f0022003102f200720022903f002370000200741086a2010290300370000200241d0046a41086a2009290300370300200241d0046a41106a2007290300370300200241d0046a41186a200c290300370300200220022903b0083703d004200241206a200241d0046a4120109c01200241106a2002290328200241206a41106a290300427f420010ee06200220022903104200200228022022031b220a4201200a420156200241106a41086a290300420020031b220a420052200a501b22031b200a420020031b2015201410ed06201e200e290300370300202120012903003703002022200f290300370300200220022903d0083703f004200241086a290300210a2002290300211402400240200241f0046a200241b0046a412010ea06450d00200c201e2903003703002007202129030037030020092022290300370300200220022903f0043703b0080240200b2020470d00200b41016a2203200b490d0a200b410174220e2003200e20034b1bad42307e2215422088a70d0a2015a722034100480d0a02400240200b0d002003102d21230c010b2023200b41306c2003103121230b2023450d07200341306e21200b2023200b41306c6a2203200a37030820032014370300200320022903b008370310200341186a2009290300370300200341206a2007290300370300200341286a200c290300370300200b41016a210b0c010b427f202c200a7c202d20147c222e202d542209ad7c221520092015202c542015202c511b22091b212c427f202e20091b212d0b200541306a2105427f2006200a7c200820147c220a2008542209ad7c22082009200820065420082006511b22091b2106427f200a20091b2108200d41506a220d0d000b0b0240201a450d002018102f0b20024180046a41186a2209202c3703002002202d370390042002200b3602a804200220203602a404200220233602a00420022008370380042002200637038804200241f0046a2011200241b0046a10f00520022802f0042105200220022802f8043602d408200220053602d008203120067c2106203020087c2208203054220bad210a20024180046a200241d0086a10be03024020022802f404450d002005102f0b2006200a7c2106200241d0086a41186a22032009290300370300200241d0086a41106a220c20024180046a41106a290300370300200241d0086a41086a220d20024180046a41086a29030037030020022002290380043703d00820022802ac04210e20022802a404210120022802a0042109024020022802a804220541c100490d0020092005410041202005676b10bf0341c00021050b2006203151210f20062031542110201e20032903003703002021200c2903003703002022200d290300370300200220022903d0083703f0042002200e36029c05200220053602980520022001360294052002200936029005200241b0086a2011200241b0046a10f10520022802b0082105200220022802b8083602d404200220053602d004200241f0046a200241d0046a10be03024020022802b408450d002005102f0b200b2010200f1b21050240200228029405450d00200228029005102f0b427f200620051b2131427f200820051b213020022802d8032205450d0120022005417f6a3602d80320022802c003210b20022802b80321030240024020022802c403220c20022802bc0322092f01064f0d00200921050c010b034002400240024020094190bdc600460d00200928020022050d01200bad2106410021050c020b41edb3ca00412841f8b4ca001039000b200341016a21032009330104422086200bad8421060b2009102f2006a7210b200521092006422088a7220c20052f01064f0d000b0b200241b0086a41186a220e2005200c4105746a220941206a2900003703002007200941186a290000370300200241b0086a41086a2201200941106a2900003703002002200941086a2900003703b008200c41016a210c20094180036a280200210d200941fc026a280200211a200941f8026a280200211802402003450d002005200c4102746a41c8056a28020021054100210c2003417f6a2209450d00034020052802c80521052009417f6a22090d000b0b201e200e2903003703002021200729030037030020222001290300370300200220022903b0083703f0042002200c3602c4032002200b3602c003200220053602bc03200241003602b80320180d000b0b200241b8036a10a20241eba1ca00ad4280808080f00084100122052900002106200241d0086a41086a2207200541086a290000370300200220063703d0082005102f41f5cac800ad4280808080e00184100122052900002106200241b8036a41086a2209200541086a290000370300200220063703b8032005102f200220113602800420124280808080c00084100322052900002106200541086a2900002108200541106a290000210a200241f0046a41186a200541186a290000370300200241f0046a41106a220b200a370300200241f0046a41086a22032008370300200220063703f0042005102f41c000102d2205450d002024ad210a200520022903d008370000200520022903b803370010200520022903f004370020200541086a2007290300370000200541186a2009290300370000200541286a2003290300370000200541306a200b290300370000200541386a200241f0046a41186a290300370000200220313703f804200220303703f0042005ad42808080808008842013428080808080028410042005102f200241003602b8032024450d01202520244105746a210f2025210103402001220341206a2101200241c0026a210520022802c402210d024002400340024002402005280200220c2f0106220e0d00410021090c010b200e4105742105200c41086a2107417f21090340024020050d00200e21090c020b200941016a210920032007412010ea06220b450d03200541606a2105200741206a2107200b417f4a0d000b0b0240200d0d00200241b8036a21090c030b200d417f6a210d200c20094102746a4194036a21050c000b0b200c20094102746a41e8026a21090b200241f0046a2011200310f20520023502f804210620022802f0042105200241003a00850402400240024002402009280200220741c000490d00200741808001490d012007418080808004490d02200241033a008004200241053a00850420022009280200360081044280808080d00021080c030b200241013a008504200220074102743a00800442808080801021080c020b200241023a008504200220074102744101723b01800442808080802021080c010b200241043a00850420022007410274410272360280044280808080c00021080b20064220862005ad8420082012841004024020022d008504450d00200241003a0085040b024020022802f404450d002005102f0b2001200f470d000c020b0b1036000b200a422086210602402019450d002019412c6c2107201b41206a210503400240200541046a280200450d002005280200102f0b2005412c6a2105200741546a22070d000b0b202f20068421062017450d00201b102f0b20022802c802210320022802c0022105024020022802c4022207450d00034020052802940321052007417f6a22070d000b0b02402003450d0041002109034002400240200920052f0106490d004100210b034002400240024020054190bdc600460d00200528020022070d0141002109410021070c020b41edb3ca00412841f8b4ca001039000b200b41016a210b20052f010421090b2005102f20072105200920072f01064f0d000b200941016a21090240200b0d00200721050c020b200720094102746a4194036a280200210541002109200b417f6a2207450d01034020052802940321052007417f6a22070d000c020b0b200941016a21090b2003417f6a22030d000b0b0240024020054190bdc600460d00200528020021072005102f2007450d00034020074190bdc600460d02200728020021052007102f2005210720050d000b0b2000200637020420002025360200200241f0086a24000f0b41edb3ca00412841f8b4ca001039000b1038000b800201037f230041d0006b220124002001412036020420012000360200200141086a2000ad42808080808004841002107302400240200128020822020d00410421000c010b200128020c210302400240200141106a280200450d0020022d000022004104490d010b20014100360220200142013703182001410b36022c200120013602282001200141186a360234200141cc006a41013602002001420137023c200141b885c7003602382001200141286a360248200141346a41d8dbc100200141386a103c1a200135022042208620013502188410080240200128021c450d002001280218102f0b410421000b2003450d002002102f0b200141d0006a240020000b910305027f017e027f017e037f230041d0006b2202240041b89bca00ad4280808080f00184100122032900002104200241086a41086a2205200341086a290000370300200220043703082003102f41c79bca00ad4280808080c00184100122032900002104200241186a41086a2206200341086a290000370300200220043703182003102f20022000370348200241c8006aad4280808080800184100322032900002100200341086a2900002104200341106a2900002107200241286a41186a2208200341186a290000370300200241286a41106a22092007370300200241286a41086a220a2004370300200220003703282003102f024041c000102d22030d001036000b200320022903083700002003200229031837001020032002290328370020200341086a2005290300370000200341186a2006290300370000200341286a200a290300370000200341306a2009290300370000200341386a2008290300370000200220013602282003ad4280808080800884200241286aad4280808080c0008410042003102f200241d0006a24000bbc0201047f230041d0006b220224002002412036020420022001360200200241086a2001ad4280808080800484100210730240024020022802082201450d00200241106a2802002103200228020c2104200241003602380240024020034104490d0020012800002105200241003602382003417c714104460d00200041086a200128000436020020002005360204410121030c010b20024100360220200242013703182002410b36022c200220023602282002200241186a360234200241cc006a41013602002002420137023c200241b885c7003602382002200241286a360248200241346a41d8dbc100200241386a103c1a200235022042208620023502188410080240200228021c450d002002280218102f0b410021030b200020033602002004450d012001102f0c010b200041003602000b200241d0006a24000be11205057f017e037f027e047f230041f0006b22052400200541c0006a41186a22064200370300200541c0006a41106a22074200370300200541c0006a41086a220842003703002005420037034041b89bca00ad4280808080f0018410012209290000210a200541e0006a41086a220b200941086a2900003703002005200a3703602009102f2008200b2903003703002005200529036037034041cabec600ad4280808080d0018410012209290000210a200b200941086a2900003703002005200a3703602009102f20072005290360220a370300200541206a41086a22092008290300370300200541206a41106a220c200a370300200541206a41186a220d200b29030037030020052005290340370320200541186a200541206a412041c8e1ca004100410010b501024002400240024002400240024020052802184101470d00410d210b4191b4c6002108410221070c010b20064200370300200742003703002008420037030020054200370340418de6c300ad4280808080e0008410012206290000210a2008200641086a2900003703002005200a3703402006102f419ce6c300ad4280808080e0008410012206290000210a200b200641086a2900003703002005200a3703602006102f20072005290360220a37030020092008290300370300200c200a370300200d200b29030037030020052005290340370320200541106a200541206a41201095012005280214410020052802101b2109024020034101460d00200541206a210d0c030b200541c0006a41186a22064200370300200541c0006a41106a220c4200370300200541c0006a41086a220842003703002005420037034041b89bca00ad4280808080f00184220e1001220d290000210a200541e0006a41086a220b200d41086a2900003703002005200a370360200d102f2008200b2903003703002005200529036037034041f8c5c600ad4280808080a00184220f1001220d290000210a200b200d41086a2900003703002005200a370360200d102f20072005290360370000200741086a220d200b290300370000200541206a41086a22102008290300370300200541206a41106a2211200c290300370300200541206a41186a2212200629030037030020052005290340370320200541086a200541206a41201095012005280208450d01200528020c20094d0d014107210b418ab4c6002108410321070b20004183203b0100200041086a200b360200200041046a2008360200200041026a20073a0000200141046a280200450d022001280200102f0c020b20064200370300200c42003703002008420037030020054200370340200e10012213290000210a200b201341086a2900003703002005200a3703602013102f2008200b29030037030020052005290360370340200f10012213290000210a200b201341086a2900003703002005200a3703602013102f20072005290360370000200d200b290300370000201020082903003703002011200c29030037030020122006290300370300200520052903403703202005200920024101746a360240200541206aad4280808080800484200541c0006aad4280808080c000841004200541206a210d0b20012802082108200128020421102001280200210c200541c0006a41186a22114200370300200541c0006a41106a22124200370300200541c0006a41086a220142003703002005420037034041b89bca00ad4280808080f0018410012206290000210a200541e0006a41086a220b200641086a2900003703002005200a3703602006102f2001200b2903003703002005200529036037034041cabec600ad4280808080d0018410012206290000210a200b200641086a2900003703002005200a3703602006102f20072005290360370000200741086a200b290300370000200541206a41086a2001290300370300200541206a41106a2012290300370300200541206a41186a20112903003703002005200529034037032020054100360248200542013703404104102d220b450d0120054284808080c0003702442005200b360240200b2009360000200b410441081031220b450d01200542888080808001370244200b20023600042005200b3602402008200541c0006a106902402008450d00200c200841286c6a21062005280244210920052802482108200c210b034002400240200920086b4120490d00200841206a2107200528024021010c010b200841206a22072008490d05200941017422012007200120074b1b22024100480d050240024020090d002002102d21010c010b200528024020092002103121010b2001450d042005200236024420052001360240200221090b200120086a220841186a200b41186a290000370000200841106a200b41106a290000370000200841086a200b41086a290000370000200520073602482008200b290000370000200b41206a290300210a02400240200920076b4108490d00200741086a21080c010b200741086a22082007490d05200941017422022008200220084b1b22024100480d050240024020090d002002102d21010c010b200120092002103121010b2001450d042005200236024420052001360240200221090b20052008360248200120076a200a3700002006200b41286a220b470d000b0b200528024421072005280248210b0240024020034101460d00024002402007200b460d00200528024021080c010b200b41016a2208200b490d05200b41017422072008200720084b1b22074100480d0502400240200b0d002007102d21080c010b2005280240200b2007103121080b2008450d0420052007360244200520083602400b2005200b41016a22013602482008200b6a41003a00000c010b024002402007200b460d00200528024021080c010b200b41016a2208200b490d04200b41017422072008200720084b1b22074100480d0402400240200b0d002007102d21080c010b2005280240200b2007103121080b2008450d0320052007360244200520083602400b2005200b41016a22093602482008200b6a41013a00000240200720096b41034b0d00200941046a22012009490d04200741017422022001200220014b1b22014100480d040240024020070d002001102d21080c010b200820072001103121080b2008450d032005200136024420052008360240200121070b2005200b41056a2201360248200820096a20043600000b200dad42808080808004842001ad4220862008ad84100402402007450d002008102f0b02402010450d00200c102f0b200041043a00000b200541f0006a24000f0b1036000b1038000bd60302057f047e230041f0006b220224002002412036020c20022001360208200241106a2001ad4280808080800484100210730240024020022802102203450d00200241186a28020021042002280214210541002101200241003a006802400240034020042001460d01200241c8006a20016a200320016a2d00003a00002002200141016a22063a00682006210120064120470d000b200241206a41186a200241c8006a41186a2903002207370300200241206a41106a200241c8006a41106a2903002208370300200241206a41086a200241c8006a41086a290300220937030020022002290348220a370320200041196a2007370000200041116a2008370000200041096a20093700002000200a370001410121010c010b0240200141ff0171450d00200241003a00680b4100210120024100360228200242013703202002410b3602442002200241086a3602402002200241206a36026c200241dc006a41013602002002420137024c200241b885c7003602482002200241c0006a360258200241ec006a41d8dbc100200241c8006a103c1a200235022842208620023502208410082002280224450d002002280220102f0b200020013a00002005450d012003102f0c010b200041003a00000b200241f0006a24000b9b06010c7f23004180016b220324002003200236020c20032001360208200341106a2002ad4220862001ad841002107302400240024002400240024020032802102204450d00200328021421052003200341186a280200360224200320043602202003200341206a10e60120032802000d0320032802042206200328022422014105762202200220064b1b22074105742202417f4c0d010240024020070d00410121080c010b2002102d2208450d030b02402006450d004100210903402001210a200341003a00782009220b41016a2109410021010240024002400340200a2001460d01200341d8006a20016a200328022022022d00003a00002003200241016a3602202003200141016a22023a00782002210120024120470d000b200341386a41186a220c200341d8006a41186a290300370300200341386a41106a220d200341d8006a41106a290300370300200341386a41086a220e200341d8006a41086a290300370300200320032903583703382007200b470d020240200b41017422012009200120094b1b220141ffffff3f712001470d002001410574220141004e0d020b1038000b200341003602240240200141ff0171450d00200341003a00780b2007450d072008102f0c070b02400240200b0d002001102d21080c010b2008200b4105742001103121080b2008450d05200141057621070b200a20026b21012008200b4105746a220b2003290338370000200b41186a200c290300370000200b41106a200d290300370000200b41086a200e29030037000020092006470d000b2003200a20026b3602240b2008450d032000200736020420002008360200200041086a20063602000c040b200041003602000c040b103d000b1036000b20034100360240200342013703382003410b36022c2003200341086a3602282003200341386a360234200341ec006a41013602002003420137025c200341b885c7003602582003200341286a360268200341346a41d8dbc100200341d8006a103c1a200335024042208620033502388410080240200328023c450d002003280238102f0b200041003602000b2005450d002004102f0b20034180016a24000ba207020a7f017e230041e0006b220124002001410036024020014201370338200028020021024101102d2103024002400240024020024101460d002003450d02200142818080801037023c20012003360238200341013a0000200028020421042000410c6a2802002203200141386a10690240024020030d0020012802402105200128023c21060c010b2004200341286c6a2107200128023c21062001280240210520042103034002400240200620056b4120490d00200541206a2108200128023821090c010b200541206a22082005490d06200641017422092008200920084b1b220a4100480d060240024020060d00200a102d21090c010b20012802382006200a103121090b2009450d052001200a36023c20012009360238200a21060b200920056a220541186a200341186a290000370000200541106a200341106a290000370000200541086a200341086a2900003700002001200836024020052003290000370000200341206a290300210b02400240200620086b4108490d00200841086a21050c010b200841086a22052008490d062006410174220a2005200a20054b1b220a4100480d060240024020060d00200a102d21090c010b20092006200a103121090b2009450d052001200a36023c20012009360238200a21060b20012005360240200920086a200b3700002007200341286a2203470d000b0b02400240200620056b4120490d00200128023821030c010b200541206a22032005490d04200641017422082003200820034b1b22084100480d040240024020060d002008102d21030c010b200128023820062008103121030b2003450d032001200836023c200120033602380b200320056a220341086a200041106a220841086a290000370000200341106a200841106a290000370000200341186a200841186a2900003700002001200541206a360240200320082900003700000c010b2003450d01200142818080801037023c20012003360238200341023a00002000280204210420034101410510312203450d0120014285808080d00037023c20012003360238200320043600010b200141246a200141386a41086a2802003600002001200129033837001c200141c4006a200141206a290000370000200141cc006a2001290208370200200141d4006a200141086a41086a290200370200200141c28289aa04360039200141023a00382001200129001937003d200141386a108a04024020020d00200041086a280200450d002004102f0b200141e0006a24000f0b1036000b1038000b880301027f024020002d0000417a6a2201410c4b0d00024002400240024002400240024020010e0d00070701070207030704050706000b200041086a2d00004101470d06200041146a280200450d06200041106a280200102f0c060b200041046a2d00000d052000410c6a280200450d05200041086a280200102f0c050b200041046a2802000d042000410c6a280200450d04200041086a280200102f0c040b200041086a2d00004107470d03200041306a280200450d032000412c6a280200102f0c030b200041046a2d00004102490d020240200041106a2802002201450d00200141d0006c2102200041086a28020041c0006a210103400240200141046a280200450d002001280200102f0b200141d0006a2101200241b07f6a22020d000b0b2000410c6a280200450d022000280208102f0c020b200041086a280200450d01200041046a280200102f0c010b200041086a2d00004106470d00200041306a280200450d002000412c6a280200102f0b02402000418c016a280200450d00200028028801102f0b0bbe0402017f097e230041c0016b220324002003200236020c20032001360208200341106a2002ad4220862001ad84100210730240024020032802102201450d00200328021421022003200341106a41086a2802003602ac01200320013602a801200341e0006a200341a8016a108505420121040240024020032903604201520d0020034100360228200342013703202003410b3602b4012003200341086a3602b0012003200341206a3602bc01200341f4006a410136020020034201370264200341b885c7003602602003200341b0016a360270200341bc016a41d8dbc100200341e0006a103c1a2003350228422086200335022084100802402003280224450d002003280220102f0b420021040c010b200341206a41386a200341e0006a41c0006a2903002205370300200341206a41306a200341e0006a41386a2903002206370300200341206a41286a200341e0006a41306a2903002207370300200341206a41206a200341e0006a41286a2903002208370300200341206a41186a200341e0006a41206a2903002209370300200341206a41106a200341e0006a41186a290300220a370300200341206a41086a200341e0006a41106a290300220b37030020032003290368220c370320200041c0006a2005370300200041386a2006370300200041306a2007370300200041286a2008370300200041206a2009370300200041186a200a370300200041106a200b3703002000200c3703080b200020043703002002450d012001102f0c010b200042003703000b200341c0016a24000b910805017f017e047f017e027f230041e0006b2201240042002102200141386a41186a22034200370300200141386a41106a22044200370300200141386a41086a2205420037030020014200370338418de6c300ad4280808080e000841001220629000021072005200641086a290000370300200120073703382006102f41bae6c300ad4280808080e00084100122062900002107200141286a41086a2208200641086a290000370300200120073703282006102f200420012903282207370300200141086a41086a2005290300370300200141086a41106a2007370300200141086a41186a200829030037030020012001290338370308200141386a200141086a10f40202400240200128023822080d004104210841002106410021090c010b200129023c2202422088a721062002a721090b200141386a41206a200041206a2802003602002003200041186a2902003703002004200041106a2902003703002005200041086a2902003703002001200029020037033802400240024020062009470d00024020062002a7470d00200641016a22002006490d03200641017422052000200520004b1bad42247e2207422088a70d032007a722004100480d030240024020060d002000102d21080c010b2008200641246c2000103121080b2008450d02200242808080807083200041246ead8421020b2002422088a721060b2008200641246c22096a22002001290338370200200041206a200141386a41206a280200360200200041186a200141386a41186a2204290300370200200041106a200141386a41106a2205290300370200200041086a200141386a41086a220029030037020020044200370300200542003703002000420037030020014200370338418de6c300ad4280808080e000841001220429000021072000200441086a290000370300200120073703382004102f41bae6c300ad4280808080e00084100122042900002107200141286a41086a2203200441086a290000370300200120073703282004102f200520012903282207370300200141086a41086a2000290300370300200141086a41106a2007370300200141086a41186a2003290300370300200120012903383703082001412036023c2001200141086a3602382008200641016a2200200141386a10f502024020002006490d00200941246a21002008210603400240024020062d0000220541044b0d0002400240024020050e050400010204040b2006410c6a280200450d03200641086a280200102f0c030b2006410c6a280200450d02200641086a280200102f0c020b2006410c6a280200450d01200641086a280200102f0c010b200641086a280200450d00200641046a280200102f0b200641246a21062000415c6a22000d000b0b02402002a7450d002008102f0b200141e0006a24000f0b1036000b1038000b13002000410a360204200041ccebc3003602000b34002000418de6c30036020420004100360200200041146a410e360200200041106a41acf6c300360200200041086a42063702000b2c01017f02404104102d22020d001036000b20004284808080c00037020420002002360200200241003600000b6301027f230041206b22022400200241003602082002420837030002404104102d22030d001036000b20024204370214200220033602104100200241106a1069200041086a200228021836020020002002290310370200200210f403200241206a24000bda0101057f230041206b22022400200241186a22034200370300200241106a22044200370300200241086a220542003703002002420037030002404120102d2206450d0020062002290300370000200641186a2003290300370000200641106a2004290300370000200641086a20052903003700004120102d2203450d0020032006290000370000200341186a200641186a290000370000200341106a200641106a290000370000200341086a200641086a2900003700002006102f200042a0808080800437020420002003360200200241206a24000f0b1036000b2b01017f02404101102d22020d001036000b200042818080801037020420002002360200200241003a00000bae0101017f02404104102d2202450d002002410036000020024104410810312202450d00200241003a000420024108411510312202450d00200242003700052002410d6a420037000020024115412a10312202450d00200242003700152002411d6a42003700002002412a41d40010312202450d002002420037003520024200370025200042d4808080d008370204200020023602002002413d6a42003700002002412d6a42003700000f0b1036000b8c1e0a047f017e017f017e047f017e017f017e067f017e230041e0016b2201240020014198016a41186a2202420037030020014198016a41106a2203420037030020014198016a41086a220442003703002001420037039801418de6c300ad4280808080e000842205100122062900002107200141c8006a41086a2208200641086a290000370300200120073703482006102f20042008290300370300200120012903483703980141bc80c400ad4280808080e00184100122092900002107200141b8016a41086a2206200941086a290000370300200120073703b8012009102f200320012903b8012207370300200141f8006a41086a22092004290300370300200141f8006a41106a220a2007370300200141f8006a41186a220b20062903003703002001200129039801370378200141f8006aad220c428080808080048422071005200242003703002003420037030020044200370300200142003703980120051001220d290000210e2008200d41086a2900003703002001200e370348200d102f20042008290300370300200120012903483703980141d480c400ad4280808080b002841001220d290000210e2006200d41086a2900003703002001200e3703b801200d102f200320012903b801220e37030020092004290300370300200a200e370300200b2006290300370300200120012903980137037820071005200242003703002003420037030020044200370300200142003703980120051001220d290000210e2008200d41086a2900003703002001200e370348200d102f20042008290300370300200120012903483703980141f880c400ad42808080808002841001220d290000210e2006200d41086a2900003703002001200e3703b801200d102f200320012903b801220e37030020092004290300370300200a200e370300200b2006290300370300200120012903980137037820071005200242003703002003420037030020044200370300200142003703980120051001220d290000210e2008200d41086a2900003703002001200e370348200d102f200420082903003703002001200129034837039801419ce6c300ad4280808080e000841001220d290000210e2006200d41086a2900003703002001200e3703b801200d102f200320012903b801220e37030020092004290300370300200a200e370300200b200629030037030020012001290398013703782001200141f8006a41201095012001280204210f0240200128020022104101470d00200710050b200242003703002003420037030020044200370300200142003703980120051001220d29000021052008200d41086a29000037030020012005370348200d102f20042008290300370300200120012903483703980141a2e6c300ad4280808080a001841001220829000021052006200841086a290000370300200120053703b8012008102f200320012903b801370000200341086a200629030037000020092004290300370300200a2003290300370300200b20022903003703002001200129039801370378200141b8016a200141f8006a412010ad02024002400240024020012d00b80122040d00200141b0016a200141d1016a290000370300200141a8016a200141c9016a290000370300200141a0016a200141c1016a290000370300200120012900b901370398010c010b2007100520014198016a41186a2208200141d1016a29000037030020014198016a41106a2206200141c9016a29000037030020014198016a41086a2202200141c1016a290000370300200120012900b9013703980120044101460d010b200141206a4200370300200141186a4200370300200141106a4200370300200142003703080c010b200141086a41186a2008290300370300200141086a41106a2006290300370300200141086a41086a200229030037030020012001290398013703080b20014198016a41186a2208420037030020014198016a41106a2206420037030020014198016a41086a220442003703002001420037039801418de6c300ad4280808080e00084220e100122092900002105200141c8006a41086a2202200941086a290000370300200120053703482009102f20042002290300370300200120012903483703980141bae6c300ad4280808080e000841001220a2900002105200141b8016a41086a2209200a41086a290000370300200120053703b801200a102f200320012903b801370000200341086a22112009290300370000200141f8006a41086a22122004290300370300200141f8006a41106a22132006290300370300200141f8006a41186a221420082903003703002001200129039801370378200141b8016a200141f8006a10f4020240024020012802b801220a0d004104210a420021050c010b2007100520012902bc0121050b200f410020101b210b2008420037030020064200370300200442003703002001420037039801200e1001220d290000210e2002200d41086a2900003703002001200e370348200d102f20042002290300370300200120012903483703980141ace6c300ad4280808080e0018410012202290000210e2009200241086a2900003703002001200e3703b8012002102f200320012903b801370000201120092903003700002012200429030037030020132006290300370300201420082903003703002001200129039801370378200141b8016a200141f8006a412010ad02024002400240024020012d00b80122030d00200141b0016a200141d1016a290000370300200141a8016a200141c9016a290000370300200141a0016a200141c1016a290000370300200120012900b901370398010c010b2007100520014198016a41186a2204200141d1016a29000037030020014198016a41106a2208200141c9016a29000037030020014198016a41086a2206200141c1016a290000370300200120012900b9013703980120034101460d010b200141c0006a4200370300200141386a4200370300200141306a4200370300200142003703280c010b200141286a41186a2004290300370300200141286a41106a2008290300370300200141286a41086a200629030037030020012001290398013703280b02400240200b41fb01490d00200b41857e6a2204450d00418de6c300ad4280808080e00084100122032900002107200141c8006a41086a2208200341086a290000370300200120073703482003102f4193e6c300ad4280808080900184100122032900002107200141b8016a41086a2206200341086a290000370300200120073703b8012003102f20012004360278200c4280808080c00084100322032900002107200341086a290000210e200341106a290000210c20014198016a41186a2204200341186a29000037030020014198016a41106a2202200c37030020014198016a41086a2209200e37030020012007370398012003102f41c000102d2203450d0120032001290348370000200320012903b8013700102003200129039801370020200341086a2008290300370000200341186a2006290300370000200341286a2009290300370000200341306a2002290300370000200341386a20042903003700002003ad428080808080088410052003102f0b410121020240101b2207422088a72206450d002007a721020b41002103200141003a00d8012002210402400240024002400240034020062003460d01200141b8016a20036a20042d00003a00002001200341016a22083a00d801200441016a21042008210320084120470d000b200141c8006a41086a200141b8016a41086a290300370300200141c8006a41106a200141b8016a41106a290300370300200141c8006a41186a200141b8016a41186a290300370300200120012903b80137034802402006450d002002102f0b4120102d2203450d0520032001290308370000200341186a2208200141086a41186a290300370000200341106a2206200141086a41106a290300370000200341086a2202200141086a41086a2903003700004120102d2204450d0520042003290000370000200441186a2008290000370000200441106a2006290000370000200441086a20022900003700002003102f200141e8006a2004ad4280808080800484101c10732004102f20012802682208450d04200141f0006a2802002106200128026c210941002103200141003a00d801034020062003460d02200141b8016a20036a200820036a2d00003a00002001200341016a22043a00d8012004210320044120470d000b200141f8006a41086a200141b8016a41086a22042903002207370300200141f8006a41106a200141b8016a41106a2206290300220e370300200141f8006a41186a200141b8016a41186a2202290300220c370300200120012903b8012215370378200420073703002006200e3703002002200c370300200120153703b80120014198016a41026a220d200141f5006a41026a2d00003a0000200120012f00753b01980120054220882207a722032005a7470d030240200341016a220f2003490d002007a74101742210200f200f2010491bad42247e2207422088a70d002007a7220f41004e0d030b1038000b0240200341ff0171450d00200141003a00d8010b41a18ec400412c200141b8016a41a0ebc30041d08ec400103e000b0240200341ff0171450d00200141003a00d8010b41a18ec400412c200141b8016a41a0ebc30041e08ec400103e000b0240024020030d00200f102d210a0c010b200a200341246c200f1031210a0b200a450d0220054220882207a72103200f41246ead21050b200a200341246c6a220341003a0000200320012903b801370001200341096a2004290300370000200341116a2006290300370000200341196a2002290300370000200320012f0198013b0021200341236a200d2d00003a00002007422086200542ffffffff0f83844280808080107c21052009450d002008102f0b200020012903083700102000200b36020020002001290348370030200041286a200141086a41186a290300370000200041206a200141086a41106a290300370000200041186a200141086a41086a290300370000200041386a200141c8006a41086a290300370000200041c0006a200141c8006a41106a290300370000200041c8006a200141c8006a41186a290300370000200041086a20053702002000200a360204200041e8006a200141286a41186a290300370000200041e0006a200141286a41106a290300370000200041d8006a200141286a41086a29030037000020002001290328370050200141e0016a24000f0b1036000bbc0703037f047e037f23002202210320024180036b41607122022400200141186a22042900002105200420022903f80137000020012900102106200120022903f00137001020012900082107200120022903e801370008200241003a00e00120012900002108200120022903e0013700002002200537039801200220063703900120022007370388012002200837038001200141206a2d00002104200241e0016a41176a22092005370000200241e0016a41106a220a200229009101370300200241e0016a41086a220b20022900890137030020022002290081013703e0010240024002402008a741ff01714101470d00200241186a41176a2009290000370000200241186a41106a200a290300370300200241186a41086a200b290300370300200220022903e001370318200220043a0037200241d0016a200241186a109404200241e0016a20022802d001220420022802d80110950420022d00ec014102470d02200241003602c802200242013703c002200241d0026a41146a4129360200200241dc026a410b360200200241103602ec02200241bd98ca003602e8022002410b3602d402200241073602f402200241ae85c7003602f0022002200241d0016a3602e0022002200241f0026a3602d8022002200241e8026a3602d0022002200241c0026a3602fc02200241386a41146a41033602002002420337023c200241b48fc4003602382002200241d0026a360248200241fc026a41d8dbc100200241386a103c1a20023502c80242208620023502c002841008024020022802c402450d0020022802c002102f0b2000410036022020022802d401450d0120022802d001102f200324000f0b200041003602200b200324000f0b20024180016a200241e0016a41d00010e8061a024020022802d401450d002004102f0b200241d0026a41086a220420024180016a41086a28020036020020022002290380013703d002200241386a2002418c016a41c20010e8061a200141206a200241f9006a2d00003a0000200141186a200241f1006a290000370000200141106a200241e9006a290000370000200141086a200241e1006a29000037000020012002290059370000200241e0016a41186a200241186a41186a2903002205370300200241e0016a41106a200241186a41106a2903002208370300200241e0016a41086a200241186a41086a2903002206370300200020022903182207370200200041086a2006370200200041106a2008370200200041186a2005370200200220073703e001200041206a20022903d002370200200041286a2004280200360200200324000bbe0303027f037e027f230041c0006b2202240041bd98ca00ad4280808080800284100122032900002104200241086a200341086a290000370300200220043703002003102f41ae85c700ad4280808080f00084100122032900002104200241106a41086a200341086a290000370300200220043703102003102f02404120102d2203450d0020032001290000370000200341186a200141186a290000370000200341106a200141106a290000370000200341086a200141086a2900003700002003ad4280808080800484100322012900002104200141086a2900002105200141106a2900002106200241206a41186a2207200141186a290000370300200241206a41106a22082006370300200241206a41086a2005370300200220043703202001102f2003102f41c000102d2203450d00200320022903003700002003200229031037001020032002290320370020200042c0808080800837020420002003360200200341086a200241086a290300370000200341186a200241106a41086a290300370000200341286a200241206a41086a290300370000200341306a2008290300370000200341386a2007290300370000200241c0006a24000f0b1036000be60b030a7f017e027f230041a0026b220324002003200236020c20032001360208200341106a2002ad4220862001ad84100210730240024020032802102204450d00200328021421052003200341106a41086a28020036026420032004360260200341e8006a200341e0006a10980302400240024020032802682206450d00200328026c2107024020032802642201450d00200341e8006a41086a280200210820032001417f6a220936026420032003280260220a41016a220b360260200a2d0000220141014b0d004100210c02400240024002400240024020010e020100010b41002101200341003a009802034020092001460d02200341f8016a20016a200a20016a220241016a2d00003a00002003200241026a3602602003200141016a22023a0098022002210120024120470d000b200341b8016a41086a200341f8016a41086a290300220d37030020034198016a41186a200341f8016a41186a29030037030020034198016a41106a200341f8016a41106a29030037030020034198016a41086a200d3703002003200920026b2209360264200320032903f801220d3703b8012003200d370398014101210c200a20026a41016a210b0b200341f8006a41186a20034198016a41186a290300370300200341f8006a41106a20034198016a41106a290300370300200341f8006a41086a20034198016a41086a29030037030020032003290398013703782009450d0420032009417f6a22093602642003200b41016a360260200b2d0000220141014b0d044100210220010e020201020b20034100360264200141ff0171450d03200341003a0098020c030b41002101200341003a009802034020092001460d02200341f8016a20016a200b20016a220241016a2d00003a00002003200241026a3602602003200141016a22023a0098022002210120024120470d000b200341b8016a41086a200341f8016a41086a290300220d37030020034198016a41186a200341f8016a41186a29030037030020034198016a41106a200341f8016a41106a29030037030020034198016a41086a200d3703002003200920026b360264200320032903f801220d3703b8012003200d37039801410121020b200341206a41186a220120034198016a41186a290300370300200341206a41106a220920034198016a41106a290300370300200341206a41086a220a20034198016a41086a290300370300200341c0006a41086a220b200341f8006a41086a290300370300200341c0006a41106a220e200341f8006a41106a290300370300200341c0006a41186a220f200341f8006a41186a290300370300200320032903980137032020032003290378370340200c4102460d03200020083602082000200736020420002006360200200341f8016a41086a2206200b290300370300200341f8016a41106a220b200e290300370300200341f8016a41186a2207200f290300370300200341d8016a41086a2208200a290300370300200341d8016a41106a220a2009290300370300200341d8016a41186a22092001290300370300200320032903403703f801200320032903203703d801200320032f011e3b01b801200041256a20072903003700002000411d6a200b290300370000200041156a2006290300370000200020032903f80137000d2000412d6a20023a00002000412e6a20032903d801370000200041366a20082903003700002000413e6a200a290300370000200041c6006a2009290300370000200041ce006a20032f01b8013b00000c040b20034100360264200141ff0171450d00200341003a0098020b2007450d002006102f0b4102210c0b200341003602e001200342013703d8012003410b3602bc012003200341086a3602b8012003200341d8016a360298012003418c026a4101360200200342013702fc01200341b885c7003602f8012003200341b8016a3602880220034198016a41d8dbc100200341f8016a103c1a20033502e00142208620033502d80184100820032802dc01450d0020032802d801102f0b2000200c3a000c2005450d012004102f0c010b200041023a000c0b200341a0026a24000be30703037f047e037f230022022103200241a0036b41607122022400200141186a220429000021052004200229039802370000200129001021062001200229039002370010200129000821072001200229038802370008200241003a0080022001290000210820012002290380023700002002200537039801200220063703900120022007370388012002200837038001200141206a2d0000210420024180026a41176a2209200537000020024180026a41106a220a20022900910137030020024180026a41086a220b2002290089013703002002200229008101370380020240024002402008a741ff01714101470d00200241186a41176a2009290000370000200241186a41106a200a290300370300200241186a41086a200b2903003703002002200229038002370318200220043a0037200241f0016a200241186a10970420024180026a20022802f001220420022802f80110980420022d0090024102470d02200241003602e802200242013703e002200241f0026a41146a4129360200200241fc026a410b3602002002410736028c03200241eba1ca00360288032002410b3602f4022002410a360294032002418bc6c800360290032002200241f0016a36028003200220024190036a3602f802200220024188036a3602f0022002200241e0026a36029c03200241386a41146a41033602002002420337023c200241b48fc4003602382002200241f0026a3602482002419c036a41d8dbc100200241386a103c1a20023502e80242208620023502e002841008024020022802e402450d0020022802e002102f0b200041023a003020022802f401450d0120022802f001102f200324000f0b200041023a00300b200324000f0b20024180016a20024180026a41d80010e8061a024020022802f401450d002004102f0b200241f0026a41106a220420024180016a41106a280200360200200241f0026a41086a220920024180016a41086a29030037030020022002290380013703f002200241386a20024194016a41c20010e8061a200141206a200241f9006a2d00003a0000200141186a200241f1006a290000370000200141106a200241e9006a290000370000200141086a200241e1006a2900003700002001200229005937000020024180026a41186a200241186a41186a290300220537030020024180026a41106a200241186a41106a290300220837030020024180026a41086a200241186a41086a2903002206370300200020022903182207370200200041086a2006370200200041106a2008370200200041186a20053702002002200737038002200041206a20022903f002370200200041286a2009290300370200200041306a2004280200360200200324000bbe0303027f037e027f230041c0006b2202240041eba1ca00ad4280808080f00084100122032900002104200241086a200341086a290000370300200220043703002003102f418bc6c800ad4280808080a00184100122032900002104200241106a41086a200341086a290000370300200220043703102003102f02404120102d2203450d0020032001290000370000200341186a200141186a290000370000200341106a200141106a290000370000200341086a200141086a2900003700002003ad4280808080800484100322012900002104200141086a2900002105200141106a2900002106200241206a41186a2207200141186a290000370300200241206a41106a22082006370300200241206a41086a2005370300200220043703202001102f2003102f41c000102d2203450d00200320022903003700002003200229031037001020032002290320370020200042c0808080800837020420002003360200200341086a200241086a290300370000200341186a200241106a41086a290300370000200341286a200241206a41086a290300370000200341306a2008290300370000200341386a2007290300370000200241c0006a24000f0b1036000b840e030c7f017e037f230041a0026b220324002003200236020c20032001360208200341106a2002ad4220862001ad84100210730240024020032802102201450d00200328021421042003200341106a41086a28020036026c20032001360268200341f8016a200341e8006a10980302400240024020032802f8012205450d0020032802fc0121060240024002400240200328026c22074104490d00200341f8016a41086a280200210820032007417c6a220236026c20032003280268220941046a220a3602682002450d002009280000210b20032007417b6a220c36026c2003200a41016a360268200a2d0000220d41014b0d0041002102200d0e020201020b20060d020c030b410121020b200341f4006a41026a200341d8016a41026a2d00003a0000200320032f00d8013b01740240200c450d0020032007417a6a220c36026c2003200a41026a220d360268200a2d0001220a41014b0d004100210e024002400240024002400240200a0e020100010b4100210a200341003a0098022007417a6a210e4179210c0340200e200a460d02200341f8016a200a6a2009200a6a220d41066a2d00003a000020032007200c6a36026c2003200d41076a3602682003200a41016a220d3a009802200c417f6a210c200d210a200d4120470d000b200341b8016a41086a200341f8016a41086a290300220f37030020034198016a41186a200341f8016a41186a29030037030020034198016a41106a200341f8016a41106a29030037030020034198016a41086a200f370300200320032903f801220f3703b8012003200f370398012007200d6b417a6a210c2009200d6a41066a210d4101210e0b200341f8006a41186a20034198016a41186a290300370300200341f8006a41106a20034198016a41106a290300370300200341f8006a41086a20034198016a41086a2903003703002003200329039801370378200c450d042003200c417f6a36026c2003200d41016a360268200d2d0000220a41014b0d0441002107200a0e020201020b200a41ff0171450d03200341003a0098020c030b4100210a200341003a009802200c417f6a2109200c417e6a210703402009200a460d02200341f8016a200a6a200d200a6a220c41016a2d00003a00002003200c41026a3602682003200a41016a220c3a0098022003200736026c2007417f6a2107200c210a200c4120470d000b200341b8016a41086a200341f8016a41086a290300220f37030020034198016a41186a200341f8016a41186a29030037030020034198016a41106a200341f8016a41106a29030037030020034198016a41086a200f370300200320032903f801220f3703b8012003200f37039801410121070b200341206a41186a220a20034198016a41186a290300370300200341206a41106a220c20034198016a41106a290300370300200341206a41086a220d20034198016a41086a290300370300200341c0006a41086a2209200341f8006a41086a290300370300200341c0006a41106a2210200341f8006a41106a290300370300200341c0006a41186a2211200341f8006a41186a290300370300200320032903980137032020032003290378370340200341e4006a41026a2212200341f4006a41026a2d00003a0000200320032f01743b016420024102460d042000200b36020c200020083602082000200636020420002005360200200341b8016a41026a220520122d00003a0000200341f8016a41086a22062009290300370300200341f8016a41106a22092010290300370300200341f8016a41186a22082011290300370300200341d8016a41086a220b200d290300370300200341d8016a41106a220d200c290300370300200341d8016a41186a220c200a290300370300200320032f01643b01b801200320032903403703f801200320032903203703d801200320032f011e3b019801200041136a20052d00003a0000200020032f01b8013b0011200041146a200e3a0000200041156a20032903f8013700002000411d6a2006290300370000200041256a20092903003700002000412d6a2008290300370000200041356a20073a0000200041366a20032903d8013700002000413e6a200b290300370000200041c6006a200d290300370000200041ce006a200c290300370000200041d6006a20032f0198013b00000c050b200a41ff0171450d00200341003a0098020b2006450d010b2005102f0b410221020b200341003602e001200342013703d8012003410b3602bc012003200341086a3602b8012003200341d8016a360298012003418c026a4101360200200342013702fc01200341b885c7003602f8012003200341b8016a3602880220034198016a41d8dbc100200341f8016a103c1a20033502e00142208620033502d80184100820032802dc01450d0020032802d801102f0b200020023a00102004450d012001102f0c010b200041023a00100b200341a0026a24000bad0603037f047e037f230022022103200241a0026b41607122022400200141186a220429000021052004200229039801370000200129001021062001200229039001370010200129000821072001200229038801370008200241003a00800120012900002108200120022903800137000020022005370338200220063703302002200737032820022008370320200141206a2d0000210420024180016a41176a2209200537000020024180016a41106a220a200229003137030020024180016a41086a220b200229002937030020022002290021370380010240024002402008a741ff01714101470d00200241176a2009290000370000200241106a200a290300370300200241086a200b2903003703002002200229038001370300200220043a001f200241f0006a2002109a0420024180016a200228027022042002280278109b0420022d0084014102470d02200241003602e801200242013703e001200241f0016a41146a4129360200200241fc016a410b3602002002410736028c02200241eba1ca00360288022002410b3602f4012002410a36029402200241a5c6c800360290022002200241f0006a36028002200220024190026a3602f801200220024188026a3602f0012002200241e0016a36029c02200241206a41146a410336020020024203370224200241b48fc4003602202002200241f0016a3602302002419c026a41d8dbc100200241206a103c1a20023502e80142208620023502e001841008024020022802e401450d0020022802e001102f0b200041003602002002280274450d012002280270102f200324000f0b200041003602000b200324000f0b20024180016a4104722109200228028001210a02402002280274450d002004102f0b200241206a200941c20010e8061a200141206a200241e1006a2d00003a0000200141186a200241d9006a290000370000200141106a200241d1006a290000370000200141086a200241c9006a29000037000020012002290041370000200020022903003700042000410c6a200241086a290300370000200041146a200241106a2903003700002000411c6a200241186a29030037000020004101360200200041246a200a360200200324000bbe0303027f037e027f230041c0006b2202240041eba1ca00ad4280808080f00084100122032900002104200241086a200341086a290000370300200220043703002003102f41a5c6c800ad4280808080a00184100122032900002104200241106a41086a200341086a290000370300200220043703102003102f02404120102d2203450d0020032001290000370000200341186a200141186a290000370000200341106a200141106a290000370000200341086a200141086a2900003700002003ad4280808080800484100322012900002104200141086a2900002105200141106a2900002106200241206a41186a2207200141186a290000370300200241206a41106a22082006370300200241206a41086a2005370300200220043703202001102f2003102f41c000102d2203450d00200320022903003700002003200229031037001020032002290320370020200042c0808080800837020420002003360200200341086a200241086a290300370000200341186a200241106a41086a290300370000200341286a200241206a41086a290300370000200341306a2008290300370000200341386a2007290300370000200241c0006a24000f0b1036000bbd0b03097f017e027f23004190026b220324002003200236020c20032001360208200341106a2002ad4220862001ad84100210730240024020032802102204450d00200328021421052003200341186a280200360264200320043602602003200341e0006a10e6014102210602400240024020032802000d0020032802642201450d002003280204210720032001417f6a220836026420032003280260220941016a220a36026020092d0000220141014b0d004100210b02400240024002400240024020010e020100010b41002101200341003a008802034020082001460d02200341e8016a20016a200920016a220241016a2d00003a00002003200241026a3602602003200141016a22023a0088022002210120024120470d000b200341a8016a41086a200341e8016a41086a290300220c37030020034188016a41186a200341e8016a41186a29030037030020034188016a41106a200341e8016a41106a29030037030020034188016a41086a200c3703002003200820026b2208360264200320032903e801220c3703a8012003200c370388014101210b200920026a41016a210a0b200341e8006a41186a20034188016a41186a290300370300200341e8006a41106a20034188016a41106a290300370300200341e8006a41086a20034188016a41086a29030037030020032003290388013703682008450d0420032008417f6a22083602642003200a41016a360260200a2d0000220141014b0d044100210220010e020201020b20034100360264200141ff0171450d03200341003a0088020c030b41002101200341003a008802034020082001460d02200341e8016a20016a200a20016a220241016a2d00003a00002003200241026a3602602003200141016a22023a0088022002210120024120470d000b200341a8016a41086a200341e8016a41086a290300220c37030020034188016a41186a200341e8016a41186a29030037030020034188016a41106a200341e8016a41106a29030037030020034188016a41086a200c3703002003200820026b360264200320032903e801220c3703a8012003200c37038801410121020b200341206a41186a220120034188016a41186a290300370300200341206a41106a220620034188016a41106a290300370300200341206a41086a220820034188016a41086a290300370300200341c0006a41086a2209200341e8006a41086a290300370300200341c0006a41106a220a200341e8006a41106a290300370300200341c0006a41186a220d200341e8006a41186a290300370300200320032903880137032020032003290368370340200b4102470d02200b21060c010b20034100360264200141ff0171450d00200341003a0088020b200341003602d001200342013703c8012003410b3602ac012003200341086a3602a8012003200341c8016a36028801200341fc016a4101360200200342013702ec01200341b885c7003602e8012003200341a8016a3602f80120034188016a41d8dbc100200341e8016a103c1a20033502d00142208620033502c80184100820032802cc01450d0120032802c801102f0c010b200341e8016a41186a220e200d290300370300200341e8016a41106a220d200a290300370300200341e8016a41086a220a2009290300370300200341c8016a41086a22092008290300370300200341c8016a41106a22082006290300370300200341c8016a41186a22062001290300370300200320032903403703e801200320032903203703c801200320032f011e3b01a80120002007360200200020032903e8013700052000410d6a200a290300370000200041156a200d2903003700002000411d6a200e290300370000200041256a20023a0000200041266a20032903c8013700002000412e6a2009290300370000200041366a20082903003700002000413e6a2006290300370000200041c6006a20032f01a8013b0000200b21060b200020063a00042005450d012004102f0c010b200041023a00040b20034190026a24000bd20201057f230041206b22032400024002400240200241046a2204417f4c0d000240024020040d00410121050c010b2004102d2205450d020b200341003602102003200436020c200320053602082002200341086a106902400240200328020c2206200328021022056b2002490d00200328020821040c010b200520026a22042005490d03200641017422072004200720044b1b22074100480d030240024020060d002007102d21040c010b200328020820062007103121040b2004450d022003200736020c20032004360208200721060b200420056a2001200210e8061a2003200520026a2202ad4220862004ad84100622052900003703002005102f200341146a200420026a360200200341003a0018200320043602102003200341086a36020c200320033602082000200341086a106c02402006450d002004102f0b200341206a24000f0b103d000b1036000b1038000bde0102037f017e230041206b220324000240024020024105744104722204417f4c0d002004102d2205450d0120034100360208200320043602042003200536020020022003106902402002450d002002410574210203402003200141106a4108108201200129030021062003200141086a290300370318200320063703102003200341106a41101082012003200141186a2d00003a00102003200341106a4101108201200141206a2101200241606a22020d000b0b20002003290300370200200041086a200341086a280200360200200341206a24000f0b103d000b1036000b1300200041023602042000418491c4003602000b34002000419c9eca0036020420004100360200200041146a4107360200200041106a41b898c400360200200041086a42073702000b130020004101360204200041c0a5c4003602000bfa0101057f230041106b22022400024002404111102d2203450d002002421137020420022003360200410d200210690240024020022802042204200228020822036b410d490d002003410d6a2105200228020021040c010b2003410d6a22052003490d02200441017422062005200620054b1b22064100480d020240024020040d002006102d21040c010b200228020020042006103121040b2004450d0120022006360204200220043602000b20022005360208200420036a220341002900e7ea43370000200341056a41002900ecea4337000020002002290300370200200041086a2002280208360200200241106a24000f0b1036000b1038000ba30f07047f017e047f017e037f027e017f230041f0006b22012400200141c0006a41186a4200370300200141c0006a41106a22024200370300200141c0006a41086a2203420037030020014200370340419c9eca00ad4280808080f000841001220429000021052003200441086a290000370300200120053703402004102f41a5c6c800ad4280808080a00184100122042900002105200141306a41086a2206200441086a290000370300200120053703302004102f200220012903302205370300200141106a41086a2003290300370300200141106a41106a2005370300200141106a41186a200629030037030020012001290340370310200141c0006a200141106a412010aa0220012802402203410120031b21074102210802400240024002402001290244420020031b2205422088a72203450d002003410574210241002104200721030240034020002003460d01200420032000412010ea0622064100476a21042006450d01200341206a2103200241606a22020d000c020b0b200141c0006a41186a4200370300200141c0006a41106a22094200370300200141c0006a41086a2200420037030020014200370340419c9eca00ad4280808080f0008410012202290000210a200141306a41086a2203200241086a2900003703002001200a3703302002102f200020032903003703002001200129033037034041bc9eca00ad4280808080a0028410012202290000210a2003200241086a2900003703002001200a3703302002102f20092001290330220a370300200141106a41086a2000290300370300200141106a41106a200a370300200141106a41186a200329030037030020012001290340370310200141c0006a200141106a10fe0320012802402200410420001b210b4100210302400240024002402001290244420020001b220a422088a7220c41014b0d00200c0e020201020b200c2100034020032000410176220220036a22062004200b20064102746a280200491b2103200020026b220041014b0d000b0b4100210802402004200b20034102746a2802002200470d00410021060c020b2003200420004b6a21030b200141c0006a41186a22084200370300200141c0006a41106a220d4200370300200141c0006a41086a2202420037030020014200370340419c9eca00ad4280808080f0008410012206290000210e200141306a41086a2200200641086a2900003703002001200e3703302006102f200220002903003703002001200129033037034041a5c6c800ad4280808080a0018410012206290000210e2000200641086a2900003703002001200e3703302006102f20092001290330370000200941086a2000290300370000200141106a41086a2002290300370300200141106a41106a200d290300370300200141106a41186a200829030037030020012001290340370310200141306a200141106aad428080808080048410021073024002400240024020012802302202450d00200128023421062001200028020036024420012002360240200141086a200141c0006a10e6012001280208450d01410021000c020b2001420037024420014101360240200141c0006a10f10321000c020b200128020c21000b2006450d002002102f0b20002000418094ebdc036e22024180ec94a37c6c6aad4280fd87d1007e220f428094ebdc0380210e2003200c4b0d020240200c200aa7470d00200c41016a2200200c490d05200c4101742206200020002006491b220041ffffffff03712000470d05200041027422004100480d0502400240200c0d002000102d210b0c010b200b200c41027420001031210b0b200b450d042000410276ad210a0b200b20034102746a220041046a2000200c20036b41027410e9061a20002004360200200a42ffffffff0f83210a41012106200c41016a220c20024180fd87d1006c200ea76a200f200e4280ec94a37c7e7c4280cab5ee01566a4b21080b200141c0006a41186a220d4200370300200141c0006a41106a22104200370300200141c0006a41086a2200420037030020014200370340419c9eca00ad4280808080f0008410012202290000210e200141306a41086a2203200241086a2900003703002001200e3703302002102f200020032903003703002001200129033037034041bc9eca00ad4280808080a0028410012202290000210e2003200241086a2900003703002001200e3703302002102f20092001290330370000200941086a2003290300370000200141106a41086a2000290300370300200141106a41106a2010290300370300200141106a41186a200d2903003703002001200129034037031002400240200b0d00200141106aad428080808080048410050c010b200141203602442001200141106a360240200b200c200141c0006a10a304200aa7450d00200b102f0b2006450d00200141106a41086a2004ad37030020014102360210200141c0006a200141106a1096022001413b6a200141c0006a41086a28020036000020012001290340370033200141cc006a200141376a290000370000200141c6a4b9da04360041200141023a004020012001290030370045200141c0006a108a042001410136024020012004360244200141c0006a1087040b02402005a7450d002007102f0b200141f0006a240020080f0b419ae3c300411e41f8b4ca001039000b1036000b1038000b940201057f230041106b220324000240024002402001410274220441046a2205417f4c0d000240024020050d00410121060c010b2005102d2206450d020b2003410036020820032005360204200320063602002001200310690240024020032802042206200328020822016b2004490d00200328020021050c010b200120046a22052001490d03200641017422072005200720054b1b22074100480d030240024020060d002007102d21050c010b200328020020062007103121050b2005450d022003200736020420032005360200200721060b200520016a2000200410e8061a2002290200200120046aad4220862005ad84100402402006450d002005102f0b200341106a24000f0b103d000b1036000b1038000bb50f04047f017e037f047e230041f0056b22022400200241286a200110e6010240024002400240024020022802280d0020012802042203450d02200128020022042d0000210520012003417f6a3602042001200441016a360200024002400240200541ff00714104470d0020054118744118754100480d01420221060c020b200042033703680c060b20024180046a2001109b0320022d0080044102460d04200241d8036a41206a20024180046a41206a280200360200200241d8036a41186a20024180046a41186a290300370300200241d8036a41106a20024180046a41106a290300370300200241d8036a41086a20024180046a41086a29030037030020022002290380043703d80320012802042205450d04200128020022042d0000210320012005417f6a3602042001200441016a360200200341024b0d04024002400240024002400240024020030e03000102000b41002103200241003a00e0012005417f6a2107417e21080240034020072003460d01200241a0016a20036a200420036a220941016a2d00003a00002001200520086a3602042001200941026a3602002002200341016a22093a00e0012008417f6a210820092103200941c000470d000b200241b0056a41386a200241a0016a41386a290300220a370300200241b0056a41306a200241a0016a41306a2903002206370300200241b0056a41286a200241a0016a41286a290300220b370300200241b0056a41206a200241a0016a41206a290300220c370300200241b0056a41186a200241a0016a41186a290300220d370300200241e8046a41086a200241a0016a41086a290300370300200241e8046a41106a200241a0016a41106a290300370300200241e8046a41186a200d370300200241e8046a41206a200c370300200241e8046a41286a200b370300200241e8046a41306a2006370300200241e8046a41386a200a370300200220022903a0013703e8042009417f7320056a2105200420096a41016a2104410021030c030b200341ff0171450d0a200241003a00e0010c0a0b41002103200241003a00e0012005417f6a2107417e21080240034020072003460d01200241a0016a20036a200420036a220941016a2d00003a00002001200520086a3602042001200941026a3602002002200341016a22093a00e0012008417f6a210820092103200941c000470d000b200241b0056a41386a200241a0016a41386a290300220a370300200241b0056a41306a200241a0016a41306a2903002206370300200241b0056a41286a200241a0016a41286a290300220b370300200241b0056a41206a200241a0016a41206a290300220c370300200241b0056a41186a200241a0016a41186a290300220d370300200241e8046a41086a200241a0016a41086a290300370300200241e8046a41106a200241a0016a41106a290300370300200241e8046a41186a200d370300200241e8046a41206a200c370300200241e8046a41286a200b370300200241e8046a41306a2006370300200241e8046a41386a200a370300200220022903a0013703e8042009417f7320056a210541012103200420096a41016a21040c020b200341ff0171450d09200241003a00e0010c090b41002103200241003a00e1012005417f6a2107417e2108034020072003460d02200241a0016a20036a200420036a220941016a2d00003a00002001200520086a3602042001200941026a3602002002200341016a22093a00e1012008417f6a210820092103200941c100470d000b200241e8046a200241a0016a41c10010e8061a2009417f7320056a2105200420096a41016a2104410221030b200241a7046a200241e8046a41c10010e8061a2005450d072004310000210b20012005417f6a22083602042001200441016a360200200b50450d01420021060c020b200341ff0171450d06200241003a00e1010c060b2008450d052004310001210c20012005417e6a3602042001200441026a3602004202200b420f8386220a4204540d0542012106200c420886200b84420488200a420c88220b4201200b4201561b7e220b200a5a0d050b200241206a200110e60120022802200d0420022802242105200241086a2001109c032002290308a70d04200241086a41106a290300210d2002290310210c200241f8006a41206a200241d8036a41206a280200360200200241f8006a41186a200241d8036a41186a290300370300200241f8006a41106a200241d8036a41106a290300370300200241f8006a41086a200241d8036a41086a290300370300200220022903d803370378200241376a200241a7046a41c10010e8061a200220022f01d6033b01340b200241a0016a200110b30220022802a001411b460d0120002002290378370300200020033a0024200041206a200241f8006a41206a280200360200200041186a200241f8006a41186a290300370300200041106a200241f8006a41106a290300370300200041086a200241f8006a41086a290300370300200041256a200241376a41c10010e8061a200020022f01343b016620004188016a200d37030020004180016a200c37030020004190016a2005360200200041f8006a200b3703002000200a3703702000200637036820004198016a200241a0016a41b00210e8061a0c040b200042033703680c030b200042033703680c020b200042033703680c010b200042033703680b200241f0056a24000ba71006067f017e017f027e027f0c7e230041f0026b2203240020022802102104200228020c2105200228020821062002280204210720022802002108418de6c300ad4280808080e00084100122022900002109200341386a41086a200241086a290000370300200320093703382002102f41f0e8c600ad4280808080f00084100122022900002109200341f0006a41086a200241086a290000370300200320093703702002102f0240024002404120102d2202450d0020022001290000370000200241186a200141186a290000370000200241106a200141106a290000370000200241086a200141086a2900003700002002ad42808080808004841003220a2900002109200a41086a290000210b200a41106a290000210c200341f0016a41186a220d200a41186a290000370300200341f0016a41106a220e200c370300200341f0016a41086a200b370300200320093703f001200a102f2002102f41c000102d2202450d002002200329033837000020022003290370370010200220032903f001370020200241086a200341386a41086a290300370000200241186a200341f0006a41086a290300370000200241286a200341f0016a41086a290300370000200241306a200e290300370000200241386a200d290300370000200341f0006a200210f6022003290370210f4200211020034200370370200341b8016a280200210d20032d00bc01210e02400240200f4201510d00200341306a4200370300200341286a4200370300200341206a4200370300200341186a4200370300200341106a4200370300200341086a420037030020034200370300420021114200210b42002109420021120c010b200341f0006a41386a290300210c200341f0006a41306a2903002113200341f0006a41206a2903002111200341f0006a41186a2903002110200341f0006a41c0006a290300211220032903800121092003290378210b200341206a200341f0006a41286a290300370300200341286a2013370300200341306a200c370300200341106a2010370300200320113703182003200b370300200320093703080b0240200b200829030022147d2213200b562009200841086a29030022157d200b201454ad7d220c200956200c2009511b450d004198b5c600ad4280808080b00284210941838c0c21010c020b0240200b20107c2216428080e983b1de16544100200920117c22172016201054ad7c501b0d00201320107c221042ffffe883b1de1656200c20117c2010201354ad7c22104200522010501b0d0020072d00004101460d0041fdb4c600ad4280808080900184210941838c1421010c020b02400240201420158450450d0042002110420021110c010b20052d0000210a200341f0016a2006280200108d0202400240200a4101470d00200341a8026a290300211020032903a00221110c010b20034198026a29030021102003290390022111200a410171450d002010200341a8026a2903002214201120032903a002221556201020145620102014511b220a1b211020112015200a1b21110b024020112013562010200c562010200c511b450d0041abb5c600ad4280808080d00284210941838c0421010c030b200841086a2903002111200829030021100b200320133703002003200c37030820042802002108200341386a41186a200341106a220a41086a2903002214370300200341386a41206a2204200a41106a290300370300200341e0006a2207200a41186a290300370300200341e8006a2205200a41206a2903003703002003200c370340200320133703382003200a2903002215370348427f20162016200b54220a2017200aad7c220b200954200b2009511b220a1b427f200b200a1b84211602400240427f201320157c22092009201354220a200c20147c200aad7c2209200c542009200c511b220a1b220b428080e983b1de16544100427f2009200a1b2209501b0d00200341386a41106a29030021092005290300210b20072903002114200429030021152003290340211720032903382118420121192003290350211a0c010b420021190240200b200984500d00200b2009109a01200341a8026a2009370300200341a0026a200b370300200341f0016a41086a41013a0000200341f9016a200829000037000020034181026a200841086a29000037000020034189026a200841106a29000037000020034191026a200841186a290000370000200341033a00f00141c8e1ca004100200341f0016a108c010b0b201650210820034198016a2015370300200341a0016a201437030020034180016a2017370300200341a8016a200b37030020034188016a20093703002003201a37039001200320123703b001200320183703784100210a2003200e4100200f42015122041b3a00bc012003200d410020041b3602b80120032019420151220dad37037002400240200d0d002002ad428080808080088410054101210a0c010b200341c0003602f401200320023602f001200341f8006a200341f0016a1090030b2008ad21092002102f024002400240200f4201510d00200a0d004103210a200341f0016a21020c010b200f420152200a410173720d014104210a200341f0006a21020b200241046a200a3a0000200241003a0000200241056a20012900003700002002410d6a200141086a290000370000200241156a200141106a2900003700002002411d6a200141186a29000037000041c8e1ca0041002002108c010b200041286a2011370300200041206a2010370300200041186a200c370300200041106a2013370300200041086a2009370300410021020c020b1036000b2002102f200041086a200937020020002001360204410121020b20002002360200200341f0026a24000bfe0507017f017e027f017e017f017e057f230041e0006b2203240020012902002104200341306a41186a22054200370300200341306a41106a22064200370300200341306a41086a2201420037030020034200370330418de6c300ad4280808080e0008422071001220829000021092001200841086a290000370300200320093703302008102f41f880c400ad4280808080800284100122082900002109200341d0006a41086a220a200841086a290000370300200320093703502008102f200620032903502209370300200341106a41086a220b2001290300370300200341106a41106a220c2009370300200341106a41186a220d200a29030037030020032003290330370310200341086a200341106a4120109501024002400240417f200328020c410020032802081b220820026a220220022008491b4280808080f28ba80942808080c0f588fe062004422088a7220e41ff017122081b22092009428094ebdc038022094280ec94a37c7e7c4280cab5ee01562009a76a4b0d002005420037030020064200370300200142003703002003420037033020071001220229000021092001200241086a290000370300200320093703302002102f41d480c400ad4280808080b00284100122022900002109200a200241086a290000370300200320093703502002102f200620032903502209370300200b2001290300370300200c2009370300200d200a290300370300200320032903303703102003200341106a4120109501417f2003280204410020032802001b2206418094ebdc034180afd0e50220081b22012004a7220820012008491b6a220820082006491b20014b0d01200041003a0000200041306a41013a0000200041286a4200370200200041206a4280808080c000370300200041186a4204370300200041106a427f370300200041086a427f200442ffffffff0f83200e41ff01714101461b3703000c020b200041800c3b0001200041013a0000200041036a41003a00000c010b200041800c3b0001200041013a0000200041036a41003a00000b200341e0006a24000b130020004107360204200041dca9c4003602000b13002000410436020420004184b1c4003602000bed2b0c027f047e047f017e047f017e017f027e087f017e047f017e230041c0046b220124000240024020004180e101700d00200141d8026a41f4c7c40010b402200141c0036a200141d8026a108d0220014200200141c0036a41086a2202290300220320012903c0032204428080e983b1de1654ad7d2205200442808097fccea1697c22062004562005200356200442ffffe883b1de16561b22071b22043703880120014200200620071b220337038001200141c0036a41186a22082004370300200141c0036a41106a22092003370300200241013a00002001410c3a00c00341c8e1ca004100200141c0036a108c01200141003a009701200142003703a0012001420037039801200842003703002009420037030020024200370300200142003703c0034180a3ca00ad42808080808001842206100122072900002104200141a8016a41086a220a200741086a290000370300200120043703a8012007102f2002200a290300370300200120012903a8013703c0034195a3ca00ad4280808080900184220b100122072900002104200a200741086a290000370300200120043703a8012007102f200920012903a8012204370300200141d8026a41086a220c2002290300370300200141d8026a41106a220d2004370300200141d8026a41186a220e200a290300370300200120012903c0033703d802200141c0036a200141d8026a10fe0320012802c0032207410420071b210f024020012902c403420020071b2210422088a72211450d00200141c0036aad4280808080c000842112200141d8026aad4280808080c000842113200141c9036a2114200141d8026a41c0006a2115200141f8026a2116200f21174100211841002119024003402017280200211a2006100122072900002104200141b8026a41086a221b200741086a290000370300200120043703b8022007102f41e2dec700ad4280808080900184221c100122072900002104200141c8026a41086a221d200741086a290000370300200120043703c8022007102f2001201a3602d80220131003220741086a2900002104200741106a29000021032007290000210520014188026a41186a221e200741186a29000037030020014188026a41106a221f200337030020014188026a41086a2220200437030020012005370388022007102f41c000102d2207450d04200720012903b802370000200720012903c8023700102007200129038802370020200741086a201b290300370000200741186a201d290300370000200741286a2020290300370000200741306a201f290300370000200741386a201e290300370000200141c0036a200710aa0420012903c0032104200141d8026a200241e00010e8061a024002400240024020044201520d00200141a8016a200141d8026a41e00010e8061a2007102f200141d8026a200141a8016a41e00010e8061a0240200129038001220520012903d802222154220720014180016a41086a2903002204200c29030022035420042003511b0d002001200520217d370380012001200420037d2007ad7d370388012006100122072900002104201b200741086a290000370300200120043703b8022007102f201c100122072900002104201d200741086a290000370300200120043703c8022007102f2001201a3602c00320121003220741086a2900002104200741106a290000210320072900002105201e200741186a290000370300201f20033703002020200437030020012005370388022007102f41c000102d2207450d09200720012903b802370000200720012903c8023700102007200129038802370020200741086a201b290300370000200741186a201d290300370000200741286a2020290300370000200741306a201f290300370000200741386a201e2903003700002007ad428080808080088410052007102f20012903e80221042001200e29030022033703d002200120043703c80202402004200384500d00200120163602b80220014188026a2016200141c8026a200141b8026a1096012001290388024201520d002001290390022104200141c0036a41386a201f29030037030020142016290000370000201441086a201641086a290000370000201441106a201641106a290000370000201441186a201641186a290000370000200120043703f003200141003a00c803200141033a00c00341c8e1ca004100200141c0036a108c010b20012903d80221042001200c29030022033703d002200120043703c80202400240200420038450450d004200211c4200212142002105420021030c010b200120153602b80220014188026a2015200141c8026a200141b8026a108f02024002402001290388024201510d0020014188026a41286a290300210320012903a80221052001290390024201520d012001290398022104200141c0036a41386a201e29030037030020142015290000370000201441086a201541086a290000370000201441106a201541106a290000370000201441186a201541186a290000370000200120043703f003200141003a00c803200141033a00c00341c8e1ca004100200141c0036a108c010c010b201f290300210320012903900221050b200c290300212120012903d802211c0b20014198016a41086a2207427f2007290300220420037c200129039801220320057c22052003542207ad7c22032007200320045420032004511b22071b3703002001427f200520071b37039801200141c0036a41386a202137030020142015290000370000201441086a201541086a290000370000201441106a201541106a290000370000201441186a201541186a2900003700002001201c3703f003200141023a00c8032001410c3a00c0032001201a3602ec0341c8e1ca004100200141c0036a108c01201841016a21180c030b200141013a00970120180d01410021180c020b2007102f201841016a21180c010b201920186b220720114f0d01201720184102746b2207280200211f200720172802003602002017201f3602000b201741046a21172011201941016a2219460d020c010b0b4188bbca0020072011103b000b2018417f6a20114f0d00201042ffffffff0f832110201120186b21110b200842003703002009420037030020024200370300200142003703c0032006100122072900002104200a200741086a290000370300200120043703a8012007102f2002200a290300370300200120012903a8013703c003200b100122072900002104200a200741086a290000370300200120043703a8012007102f200920012903a801370000200941086a200a290300370000200c2002290300370300200d2009290300370300200e2008290300370300200120012903c0033703d80202400240200f0d00200141d8026aad428080808080048410050c010b200141203602c4032001200141d8026a3602c003200f2011200141c0036a10a3042010a7450d00200f102f0b024020012d0097010d004200211c200141f0006a200129038001220420014180016a41086a2207290300220342c0843d420010ee06200141e0006a20012903702205200141f0006a41086a290300220642c0fb42427f10ed06200141d0006a2005200642a0c21e420010ed06200720032003200141d0006a41086a29030020012903502205200420012903607c220642a0c21e7e2006420188220642c0fb427e7c42a0c21e562006a76aad7c2206200554ad7c22052006200456200520035620052003511b22171b22057d20042004200620171b220354ad7d3703002001200420037d3703800102400240200320058450450d00420021130c010b20014188026a41186a221b420037030020014188026a41106a2217420037030020014188026a41086a22074200370300200142003703880241e7a2ca00ad428080808080018422041001221e2900002106200141b8026a41086a221f201e41086a290000370300200120063703b802201e102f2007201f290300370300200120012903b8023703880241ecb5c600ad4280808080d0018422061001221a290000211c200141c8026a41086a221e201a41086a2900003703002001201c3703c802201a102f201720012903c802221c370300200141c0036a41086a221d2007290300370300200141c0036a41106a2220201c370300200141c0036a41186a2218201e29030037030020012001290388023703c003200141386a200141c0036a4120109c01200141386a41106a290300211c200129034021132001280238211a201b42003703002017420037030020074200370300200142003703880220041001221b2900002104201f201b41086a290000370300200120043703b802201b102f2007201f290300370300200120012903b8023703880220061001221f2900002104201e201f41086a290000370300200120043703c802201f102f201720012903c8022204370300201d2007290300370300202020043703002018201e29030037030020012001290388023703c00320014200201c4200201a1b220420057d20134200201a1b2206200354ad7d221c200620037d2213200656201c200456201c2004511b22071b3703e00220014200201320071b3703d802200141c0036aad4280808080800484200141d8026aad428080808080028410042004200520071b21132006200320071b211c0b20014198016a41086a2207427f2007290300220420137c2001290398012206201c7c221c2006542207ad7c22062007200620045420062004511b22071b3703002001427f201c20071b37039801200141d8036a2005370300200141d0036a2003370300200141c0036a41086a41043a00002001410c3a00c00341c8e1ca004100200141c0036a108c010b200141a8016a41f4c7c40010b402200141a0016a2903002103200129039801210441002107200141003a00bf03200141023a00be03200120033703900220012004370388022001200141a8016a3602b80202400240200420038450450d0042002105420021060c010b2001200141a8016a3602c8022001200141c8026a3602d0032001200141be036a3602cc032001200141b8026a3602c8032001200141bf036a3602c403200120014188026a3602c003200141d8026a200141a8016a200141c0036a10a50441012107024020012802d8024101470d004200210620012903e00221050c010b20014180036a2903002106200141f8026a29030021054100210720012903e0024201520d00200141d8026a41106a290300211c20012802c8022117200141f8036a200141d8026a41186a290300370300200141f0036a201c37030041002107200141c0036a41086a41003a0000200141c9036a2017290000370000200141d1036a201741086a290000370000200141d9036a201741106a290000370000200141e1036a201741186a290000370000200141033a00c00341c8e1ca004100200141c0036a108c010b0240024020070d0020014188026a41186a221a420037030020014188026a41106a2207420037030020014188026a41086a22174200370300200142003703880241e7a2ca00ad428080808080018422121001221e290000211c200141b8026a41086a221f201e41086a2900003703002001201c3703b802201e102f2017201f290300370300200120012903b8023703880241ecb5c600ad4280808080d0018422101001221b290000211c200141c8026a41086a221e201b41086a2900003703002001201c3703c802201b102f200720012903c802221c370300200141c0036a41086a221b2017290300370300200141c0036a41106a221d201c370300200141c0036a41186a2220201e29030037030020012001290388023703c003200141086a200141c0036a4120109c01200320067d2004200554ad7d200620037d2005200454ad7d20052004582006200358200620035122181b22191b210b200420057d200520047d20191b2121200141086a41106a2903004200200128020822191b211c2001290310420020191b2113024002402005200456200620035620181b0d00201a4200370300200742003703002017420037030020014200370388022012100122182900002104201f201841086a290000370300200120043703b8022018102f2017201f290300370300200120012903b8023703880220101001221f2900002104201e201f41086a290000370300200120043703c802201f102f200720012903c802370000200741086a201e290300370000201b2017290300370300201d20072903003703002020201a29030037030020012001290388023703c0032001427f201c200b7c201320217c22032013542207ad7c220420072004201c542004201c511b22071b3703e0022001427f200320071b3703d802200141d8026a21070c010b201a4200370300200742003703002017420037030020014200370388022012100122182900002104201f201841086a290000370300200120043703b8022018102f2017201f290300370300200120012903b8023703880220101001221f2900002104201e201f41086a290000370300200120043703c802201f102f200720012903c802370000200741086a201e290300370000201b2017290300370300201d20072903003703002020201a29030037030020012001290388023703c00320014200201c200b7d2013202154ad7d2204201320217d22032013562004201c562004201c511b22071b3703e00220014200200320071b3703d802200141d8026a21070b200141c0036aad42808080808004842007ad428080808080028410040c010b419ad8c400ad4280808080a009841008200141c0036a41186a221a4200370300200141c0036a41106a221f4200370300200141c0036a41086a22174200370300200142003703c00341e7a2ca00ad428080808080018422051001221e290000210620014188026a41086a2207201e41086a2900003703002001200637038802201e102f2017200729030037030020012001290388023703c00341ecb5c600ad4280808080d0018422061001221e290000211c2007201e41086a2900003703002001201c37038802201e102f201f200129038802221c370300200141d8026a41086a221b2017290300370300200141d8026a41106a221d201c370300200141d8026a41186a22202007290300370300200120012903c0033703d802200141206a200141d8026a4120109c01200141206a41106a290300211c200129032821132001280220211e201a4200370300201f420037030020174200370300200142003703c00320051001221a29000021052007201a41086a2900003703002001200537038802201a102f2017200729030037030020012001290388023703c00320061001221a29000021052007201a41086a2900003703002001200537038802201a102f201f2001290388022205370300201b2017290300370300201d200537030020202007290300370300200120012903c0033703d8022001427f201c4200201e1b220520037c20134200201e1b220320047c22062003542207ad7c22042007200420055420042005511b22071b3703c8032001427f200620071b3703c003200141d8026aad4280808080800484200141c0036aad428080808080028410040b2001290380012104200141d8036a20014180016a41086a290300370300200141d0036a2004370300200141c0036a41086a41053a00002001410c3a00c00341c8e1ca004100200141c0036a108c010b200010ab04200141c0046a24000f0b1036000be90804077f027e077f027e230041e0016b22022400200241c00036020420022001360200200241086a2001ad4280808080800884100210730240024020022802082203450d00200241106a2802002104200228020c210541002101200241003a00d801200441706a21060240024002400240034020042001460d01200241b8016a20016a200320016a2d00003a00002002200141016a22073a00d8012006417f6a21062007210120074120470d000b200241d8006a41086a200241b8016a41086a290300370300200241d8006a41106a200241b8016a41106a290300370300200241d8006a41186a200241b8016a41186a290300370300200220022903b801370358200420076b22084110490d02200320076a22042900002109200441086a290000210a41002101200241003a00d801200841706a2108034020082001460d02200241b8016a20016a200420016a41106a2d00003a00002002200141016a22073a00d8012007210120074120470d000b200241f8006a41086a220b200241b8016a41086a2201290300370300200241f8006a41106a220c200241b8016a41106a2208290300370300200241f8006a41186a220d200241b8016a41186a220e290300370300200220022903b801370378200620076b410f4d0d02200241386a41086a2206200241d8006a41086a290300370300200241386a41106a220f200241d8006a41106a290300370300200241386a41186a2210200241d8006a41186a290300370300200241186a41086a2211200b290300370300200241186a41106a220b200c290300370300200241186a41186a220c200d2903003703002002200229035837033820022002290378370318200420076a220741106a2900002112200741186a2900002113200120062903003703002008200f290300370300200e201029030037030020024198016a41086a2207201129030037030020024198016a41106a2206200b29030037030020024198016a41186a2204200c290300370300200220022903383703b8012002200229031837039801200041206a2013370300200041186a2012370300200041106a200a37030020002009370308200041286a20022903b801370300200041306a2001290300370300200041386a2008290300370300200041c0006a200e290300370300200041c8006a200229039801370300200041d0006a2007290300370300200041d8006a2006290300370300200041e0006a2004290300370300420121090c030b200141ff0171450d01200241003a00d8010c010b200141ff0171450d00200241003a00d8010b200241003602a00120024201370398012002410b36027c20022002360278200220024198016a360258200241cc016a4101360200200242013702bc01200241b885c7003602b8012002200241f8006a3602c801200241d8006a41d8dbc100200241b8016a103c1a20023502a0014220862002350298018410080240200228029c01450d00200228029801102f0b420021090b200020093703002005450d012003102f0c010b200042003703000b200241e0016a24000bb5670a047f017e017f027e077f017e037f017e017f027e230041f0026b22012400200141d0006a41186a4200370300200141d0006a41106a22024200370300200141d0006a41086a220342003703002001420037035041b89bca00ad4280808080f00184100122042900002105200141f0016a41086a2206200441086a290000370300200120053703f0012004102f20032006290300370300200120012903f00137035041cabec600ad4280808080d001841001220429000021052006200441086a290000370300200120053703f0012004102f200220012903f0012205370300200141d0026a41086a2003290300370300200141d0026a41106a2005370300200141d0026a41186a2006290300370300200120012903503703d002200141203602d4012001200141d0026a3602d001200141f0016a200141d0026aad220742808080808004842208100210730240024020012802f0012203450d0020012802f40121092001200628020022063602dc01200120033602d8010240024020064104490d002001200341046a3602d80120012006417c6a22043602dc0120044104490d002003280000210a2001200641786a3602dc012001200341086a3602d8012003280004210b200141d0006a200141d8016a10ee032001280250220c450d002001290254210541002106200141003a00e00102400240024020012802dc01220d450d002001200d417f6a220e3602dc01200120012802d801220f41016a3602d801200f2d00004101460d010b0c010b200e4104490d002001200d417b6a3602dc012001200f41056a3602d801200f2800012104410121060b200120043602c802200120053702bc022001200c3602b8022001200b3602b4022001200a3602b0020c010b200141003602980220014201370390022001410b3602e4012001200141d0016a3602e001200120014190026a3602ec01200141e4006a410136020020014201370254200141b885c7003602502001200141e0016a360260200141ec016a41d8dbc100200141d0006a103c1a2001350298024220862001350290028410080240200128029402450d00200128029002102f0b410221060b200120063602c4022009450d012003102f0c010b41022106200141023602c4020b200141d0006a41106a2203200141b0026a41106a2209280200360200200141d0006a41086a220a200141b0026a41086a220b290300370300200120012903b002370350024002400240024002400240024002400240024020064102460d0020014190026a41106a2003280200220336020020014190026a41086a200a29030022103703002001200129035022053703900220092003360200200b2010370300200141c8026a2004360200200120053703b002200120063602c40202402005a722032000470d000240024020064101460d0020012802b4022106200141d0006a200141b0026a41086a10f303200141e0026a2006360200200141d0026a410c6a200141d0006a41086a2206280200360200200141003602d002200120012903503702d402200141d0006a200141d0026a109602200141fb016a2006280200360000200120012903503700f301200141d0006a410c6a200141f7016a290000370000200141c6a4b9da04360051200141023a0050200120012900f001370055200141d0006a108a04200141d0026a41086a280200450d0120012802d402102f0c010b20012802b4022106200141d0006a200141b0026a41086a10f303200141e4026a2006360200200141d0026a41086a2001290350370300200141e0026a200141d0006a41086a2206280200360200200120043602d402200141013602d002200141d0006a200141d0026a109602200141fb016a2006280200360000200120012903503700f301200141d0006a410c6a200141f7016a290000370000200141c6a4b9da04360051200141023a0050200120012900f001370055200141d0006a108a04200141d0026a410c6a280200450d0020012802d802102f0b20012802b00221030b024020012802b40220036a2000470d00200141c0026a28020041286c4105722206417f4c0d022006102d2203450d06200141003602582001200636025420012003360250200141013a00e001200341013a00002001410136025820012802b802210620012802c0022203200141d0006a10690240024020030d00200128025821032001280254210a200128025021090c010b2006200341286c6a210c2001280254210a20012802582103034002400240200a20036b4120490d00200341206a2104200128025021090c010b200341206a22042003490d0d200a41017422092004200920044b1b220b4100480d0d02400240200a0d00200b102d21090c010b2001280250200a200b103121090b2009450d092001200b36025420012009360250200b210a0b200920036a220341186a200641186a290000370000200341106a200641106a290000370000200341086a200641086a2900003700002001200436025820032006290000370000200641206a290300210502400240200a20046b4108490d00200441086a21030c010b200441086a22032004490d0d200a410174220b2003200b20034b1b220b4100480d0d02400240200a0d00200b102d21090c010b2009200a200b103121090b2009450d092001200b36025420012009360250200b210a0b20012003360258200920046a2005370000200c200641286a2206470d000b0b200141b8026a210441c7b4c600ad4280808080c002842003ad4220862009ad8410040240200a450d002009102f0b200141d0006a41086a22062004290000370300200141d0006a41106a2209200441086a280000360200200141003602542001410b3a005041c8e1ca004100200141d0006a108c01200141d0006a41186a220a420037030020094200370300200642003703002001420037035041b89bca00ad4280808080f00184100122042900002105200141f0016a41086a2203200441086a290000370300200120053703f0012004102f20062003290300370300200120012903f00137035041cabec600ad4280808080d001841001220429000021052003200441086a290000370300200120053703f0012004102f200220012903f001370000200241086a2003290300370000200141d0026a41086a2006290300370300200141d0026a41106a2009290300370300200141d0026a41186a200a290300370300200120012903503703d002200810050c010b200141bc026a280200450d0020012802b802102f0b200141d0006a41186a22094200370300200141d0006a41106a220a4200370300200141d0006a41086a220342003703002001420037035041b89bca00ad4280808080f00184100122042900002105200141f0016a41086a2206200441086a290000370300200120053703f0012004102f20032006290300370300200120012903f00137035041d7bec600ad4280808080d000841001220429000021052006200441086a290000370300200120053703f0012004102f200220012903f001370000200241086a2006290300370000200141d0026a41086a2003290300370300200141d0026a41106a200a290300370300200141d0026a41186a2009290300370300200120012903503703d002200141203602f4012001200141d0026a3602f00120014190026a2008100210732001280290022206450d0320014190026a41086a2802002104200128029402210941002103200141003a00e0010240024002402004450d0020062d0000220a41034b0d00024002400240200a0e0405000102050b2004417f6a4108490d0220062900012105410121030c040b410221030c020b2004417f6a4108490d0020062900012105410321030c020b200141003602b802200142013703b0022001410b3602e4012001200141f0016a3602e0012001200141b0026a3602d801200141e4006a410136020020014201370254200141b885c7003602502001200141e0016a360260200141d8016a41d8dbc100200141d0006a103c1a20013502b80242208620013502b002841008024020012802b402450d0020012802b002102f0b410421030b0b02402009450d002006102f0b2003417f6a220641024b0d0320060e03020301020b103d000b2005422088a7210602402005a722032000470d00200141043602d002200120063602d402200141d0006a200141d0026a109602200141fb016a200141d8006a280200360000200120012903503700f301200141dc006a200141f7016a290000370000200141c6a4b9da04360051200141023a0050200120012900f001370055200141d0006a108a040b200620036a2000470d01200141003602b002200141d0006a41186a22094200370300200141d0006a41106a220a4200370300200141d0006a41086a220342003703002001420037035041b89bca00ad4280808080f00184100122042900002105200141f0016a41086a2206200441086a290000370300200120053703f0012004102f20032006290300370300200120012903f00137035041d7bec600ad4280808080d000841001220429000021052006200441086a290000370300200120053703f0012004102f200220012903f001370000200241086a2006290300370000200141d0026a41086a2003290300370300200141d0026a41106a200a290300370300200141d0026a41186a2009290300370300200120012903503703d002200141d0006a200141b0026a10f2042008200135025842208620012802502206ad84100402402001280254450d002006102f0b200141023602542001410b3a005041c8e1ca004100200141d0006a108c010c010b2005422088a7210602402005a722032000470d00200141033602d002200120063602d402200141d0006a200141d0026a109602200141fb016a200141d8006a280200360000200120012903503700f301200141dc006a200141f7016a290000370000200141c6a4b9da04360051200141023a0050200120012900f001370055200141d0006a108a040b200620036a2000470d00200141023602b002200141d0006a41186a22094200370300200141d0006a41106a220a4200370300200141d0006a41086a220342003703002001420037035041b89bca00ad4280808080f00184100122042900002105200141f0016a41086a2206200441086a290000370300200120053703f0012004102f20032006290300370300200120012903f00137035041d7bec600ad4280808080d000841001220429000021052006200441086a290000370300200120053703f0012004102f200220012903f001370000200241086a2006290300370000200141d0026a41086a2003290300370300200141d0026a41106a200a290300370300200141d0026a41186a2009290300370300200120012903503703d002200141d0006a200141b0026a10f2042008200135025842208620012802502206ad84100402402001280254450d002006102f0b200141013602542001410b3a005041c8e1ca004100200141d0006a108c010b200141d0006a41186a22044200370300200141d0006a41106a220d4200370300200141d0006a41086a220342003703002001420037035041d5a2ca00ad42808080809001842205100122092900002108200141b0026a41086a2206200941086a290000370300200120083703b0022009102f20032006290300370300200120012903b00237035041a2c9c300ad4280808080e000841001220929000021082006200941086a290000370300200120083703b0022009102f200d20012903b0022208370300200141d0026a41086a220a2003290300370300200141d0026a41106a220b2008370300200141d0026a41186a220c2006290300370300200120012903503703d002200141c8006a200141d0026a4120109501200128024c210f0240200128024822024101470d002007428080808080048410050b20044200370300200d4200370300200342003703002001420037035020051001220929000021052006200941086a290000370300200120053703b0022009102f20032006290300370300200120012903b00237035041db98ca00ad4280808080b001841001220929000021052006200941086a290000370300200120053703b0022009102f200d20012903b002370000200d41086a2006290300370000200a2003290300370300200b200d290300370300200c2004290300370300200120012903503703d00202400240200141d0026a10f702220641ff01714102460d0020064101710d010b4104102d220a450d01200a4100360200200141d0006a41186a22044200370300200141d0006a41106a22094200370300200141d0006a41086a220342003703002001420037035041d5a2ca00ad428080808090018422051001220b2900002108200141b0026a41086a2206200b41086a290000370300200120083703b002200b102f20032006290300370300200120012903b00237035041f4c8c300ad4280808080b001841001220b29000021082006200b41086a290000370300200120083703b002200b102f200d20012903b002370000200d41086a220b2006290300370000200141d0026a41086a220c2003290300370300200141d0026a41106a22002009290300370300200141d0026a41186a220e2004290300370300200120012903503703d002200141203602542001200141d0026a360250200a4101200141d0006a10a304200a102f4104102d220a450d01200a41003602002004420037030020094200370300200342003703002001420037035020051001221129000021082006201141086a290000370300200120083703b0022011102f20032006290300370300200120012903b00237035041a8c9c300ad4280808080c001841001221129000021082006201141086a290000370300200120083703b0022011102f200d20012903b002370000200b2006290300370000200c200329030037030020002009290300370300200e2004290300370300200120012903503703d002200141203602542001200141d0026a360250200a4101200141d0006a10a304200a102f2004420037030020094200370300200342003703002001420037035020051001220a29000021082006200a41086a290000370300200120083703b002200a102f20032006290300370300200120012903b00237035041b4c9c300ad4280808080e000841001220a29000021082006200a41086a290000370300200120083703b002200a102f200d20012903b002370000200b2006290300370000200c200329030037030020002009290300370300200e2004290300370300200120012903503703d00220014100360250200742808080808004842208200141d0006aad4280808080c0008410042004420037030020094200370300200342003703002001420037035020051001220a29000021052006200a41086a290000370300200120053703b002200a102f20032006290300370300200120012903b00237035041db98ca00ad4280808080b001841001220a29000021052006200a41086a290000370300200120053703b002200a102f200d20012903b002370000200b2006290300370000200c200329030037030020002009290300370300200e2004290300370300200120012903503703d002200141013a00e0012008200141e0016aad4280808080108410040b200141d0006a41186a22044200370300200141d0006a41106a22124200370300200141d0006a41086a220642003703002001420037035041d5a2ca00ad428080808090018422051001220329000021082006200341086a290000370300200120083703502003102f41f4c8c300ad4280808080b00184100122092900002108200141b0026a41086a2203200941086a290000370300200120083703b0022009102f201220012903b0022208370300200141d0026a41086a220a2006290300370300200141d0026a41106a220b2008370300200141d0026a41186a220c2003290300370300200120012903503703d002200141d0006a200141d0026a10fe03024002402001280250220e0d004104210e41002111420021100c010b20012902542210422088a721110b2004420037030020124200370300200642003703002001420037035020051001220929000021052003200941086a290000370300200120053703b0022009102f20062003290300370300200120012903b00237035041a8c9c300ad4280808080c001841001220929000021052003200941086a290000370300200120053703b0022009102f200d20012903b002370000200d41086a2003290300370000200a2006290300370300200b2012290300370300200c2004290300370300200120012903503703d002200141d0006a200141d0026a10fe03024002402001280250220a450d002001200a3602900220012902542208422088a721040c010b4104210a200141043602900241002104420021080b0240024002400240024020020d002011417f6a220620114f0d01200620114b0d01200e20064102746a280200210f0b201141002011419c7f6a22062006201141016a4b1b2213490d012013450d03200e20134102746a21002004ad2105200e210203402002280200210b024002400240024002402005a7220c41014b0d0041002106200c0e020201020b41002106200c2103034020062003410176220420066a2209200b200a20094102746a280200491b2106200320046b220341014b0d000b0b200b200a200641027422036a2802002204460d022006200b20044b6a21060c010b410021060b2001200636025041f0c9c300412e200141d0006a41a0cac30041b0cac300103e000b20052006ad580d03200a20036a2203200341046a2006417f73200c6a41027410e9061a200842ffffffff0f83200c417f6a2204ad422086842108200241046a22022000460d042005427f7c2105200128029002210a0c000b0b41bac9c300412641e0c9c3001055000b41a6b5ca00411c41f8b4ca001039000b41b8e3c300411d41f8b4ca001039000b201042ffffffff0f8321050240201120136b2206450d0002402013450d00200e200e20134102746a200641027410e9061a2008422088a721040b20052006ad4220868421050b200128029002210b41002106024002400240024002400240200441014b0d0020040e020201020b20042103034020062003410176220920066a220a200f200b200a4102746a280200491b2106200320096b220341014b0d000b0b0240200f200b20064102746a2802002203460d002006200f20034b6a21060b20042006490d010b20042008a7470d02200441016a22032004490d07200441017422092003200920034b1b220341ffffffff03712003470d072003410274220341004e0d010c070b419ae3c300411e41f8b4ca001039000b0240024020040d002003102d210b0c010b200b200441027420031031210b0b200b450d012001200b360290022003410276ad21080b200b20064102746a220341046a2003200420066b41027410e9061a2003200f360200024020054220882210a722092005a7470d00200941016a22062009490d052010a7220a4101742203200620062003491b220641ffffffff03712006470d05200641027422064100480d050240024020090d002006102d210e0c010b200e200a41027420061031210e0b200e450d012005422088a721092006410276ad21050b200e20094102746a200f3602000240200441016a22040d0041c0cac30041c30041f8b4ca001039000b2004200441017622064d0d01200128029002220320064102746a280200210c024020044101710d0020042006417f6a22064d0d03200320064102746a280200200c6a410176210c0b200141d0006a41186a220a4200370300200141d0006a41106a220b4200370300200141d0006a41086a220342003703002001420037035041d5a2ca00ad42808080809001842210100122022900002114200141b0026a41086a2206200241086a290000370300200120143703b0022002102f20032006290300370300200120012903b00237035041f4c8c300ad4280808080b001841001220229000021142006200241086a290000370300200120143703b0022002102f200d20012903b002370000200d41086a22002006290300370000200141d0026a41086a220f2003290300370300200141d0026a41106a2211200b290300370300200141d0026a41186a2213200a290300370300200120012903503703d002200141203602542001200141d0026a360250200e200941016a2215200141d0006a10a30402402005a7450d00200e102f0b2001280290022102200a4200370300200b4200370300200342003703002001420037035020101001220929000021052006200941086a290000370300200120053703b0022009102f20032006290300370300200120012903b00237035041a8c9c300ad4280808080c001841001220929000021052006200941086a290000370300200120053703b0022009102f200d20012903b00237000020002006290300370000200f20032903003703002011200b2903003703002013200a290300370300200120012903503703d002200141203602542001200141d0026a36025020022004200141d0006a10a30402402008a7450d002002102f0b200141d0006a41186a22094200370300200141d0006a41106a22044200370300200141d0006a41086a220642003703002001420037035041d5a2ca00ad42808080809001841001220a2900002105200141b0026a41086a2203200a41086a290000370300200120053703b002200a102f20062003290300370300200120012903b00237035041b4c9c300ad4280808080e000841001220a29000021052003200a41086a290000370300200120053703b002200a102f200d20012903b002370000200d41086a2003290300370000200141d0026a41086a220a2006290300370300200141d0026a41106a220b2004290300370300200141d0026a41186a22022009290300370300200120012903503703d0022001200c36025020074280808080800484200141d0006aad22084280808080c0008410040240201541e500470d0020094200370300200442003703002006420037030020014200370350418de6c300ad4280808080e000841001220c29000021052006200c41086a29000037030020012005370350200c102f419ce6c300ad4280808080e000841001220c29000021052003200c41086a290000370300200120053703b002200c102f201220012903b002370000201241086a2003290300370000200a2006290300370300200b200429030037030020022009290300370300200120012903503703d002200141c0006a200141d0026a41201095010b2009420037030020044200370300200642003703002001420037035041eba1ca00ad4280808080f0008422101001220929000021052006200941086a290000370300200120053703502009102f41adcac800ad221442808080809001841001220929000021052003200941086a290000370300200120053703b0022009102f200420012903b0022205370300200a2006290300370300200b200537030020022003290300370300200120012903503703d002200141d0006a200141d0026a10fd0302402001290350427f7c4202540d0020042903002105200141d0006a41186a22094200370300200141d0006a41106a22034200370300200141d0006a41086a220642003703002001420037035041d5a2ca00ad42808080809001841001220429000021162006200441086a290000370300200120163703502004102f41ecb0c000ad42808080803084100122042900002116200141b0026a41086a220a200441086a290000370300200120163703b0022004102f200320012903b0022216370300200141d0026a41086a220b2006290300370300200141d0026a41106a220c2016370300200141d0026a41186a2202200a290300370300200120012903503703d002200141306a200141d0026a10e3012001290338211620012802302104200120053703c00220012016420020041b3703b802200142013703b0022009420037030020034200370300200642003703002001420037035020101001220429000021052006200441086a290000370300200120053703502004102f2014428080808090018410012204290000210520014190026a41086a2209200441086a29000037030020012005370390022004102f20032001290390022205370300200b2006290300370300200c200537030020022009290300370300200120012903503703d002200141203602542001200141d0026a360250200141b0026a200141d0006a10bb030b200141d0006a41186a220b4200370300200141d0006a41106a22094200370300200141d0006a41086a220642003703002001420037035041e7a2ca00ad4280808080800184100122042900002105200141b0026a41086a2203200441086a290000370300200120053703b0022004102f20062003290300370300200120012903b00237035041efa2ca00ad42808080809002841001220429000021052003200441086a290000370300200120053703b0022004102f200920012903b0022205370300200141d0026a41086a22042006290300370300200141d0026a41106a2005370300200141d0026a41186a2003290300370300200120012903503703d002200141206a200141d0026a10e301200129032821102001280220210c200141f0016a41186a4200370300200141f0016a41106a22024200370300200141f0016a41086a22034200370300200142003703f001418de6c300ad4280808080e000841001220a29000021052003200a41086a290000370300200120053703f001200a102f41d480c400ad4280808080b002841001220a29000021052004200a41086a290000370300200120053703d002200a102f200220012903d00222053703002006200329030037030020092005370300200b2004290300370300200120012903f001370350200141186a200141d0006a4120109501200141086a200128021c410020012802181b22064180e59af70020064180e59af7004b22031b4180e59af700200620031b6bad220542002005420010ed06200542a8c30180211420104200200c1b210542092001290308221042808090bbbad6adf00d7f20012903102010423f87521b211002400240200641ffe49af7004b0d0042ffffffffffffffffff00428080808080808080807f2005201420107d22147d22104200531b20102005427f5522062014427f554720062010427f5547711b22054280ec94a37c20054280ec94a37c551b21050c010b42ffffffffffffffffff00428080808080808080807f2005201420107c22147c22104200531b20102005427f5522062014427f554620062010427f5547711b21050b200141d0006a41186a220a4200370300200141d0006a41106a22044200370300200141d0006a41086a220342003703002001420037035041e7a2ca00ad42808080808001841001220b2900002110200141b0026a41086a2206200b41086a290000370300200120103703b002200b102f20032006290300370300200120012903b00237035041efa2ca00ad42808080809002841001220b29000021102006200b41086a290000370300200120103703b002200b102f200920012903b002370000200941086a2006290300370000200141d0026a41086a22092003290300370300200141d0026a41106a220b2004290300370300200141d0026a41186a220c200a290300370300200120012903503703d00220012005370350200742808080808004842205200842808080808001841004200a4200370300200442003703002003420037030020014200370350419487ca00ad4280808080a0018422101001220229000021142006200241086a290000370300200120143703b0022002102f20032006290300370300200120012903b00237035041da85c700ad4280808080e000841001220229000021142006200241086a290000370300200120143703b0022002102f200420012903b002221437030020092003290300370300200b2014370300200c2006290300370300200120012903503703d00220051005200a420037030020044200370300200342003703002001420037035020101001220229000021102006200241086a290000370300200120103703b0022002102f20032006290300370300200120012903b002370350419e87ca00ad4280808080c001841001220229000021102006200241086a290000370300200120103703b0022002102f200420012903b002221037030020092003290300370300200b2010370300200c2006290300370300200120012903503703d00220051005200a420037030020044200370300200342003703002001420037035041d5a2ca00ad42808080809001841001220a29000021102003200a41086a29000037030020012010370350200a102f41dea2ca00ad42808080809001841001220a29000021102006200a41086a290000370300200120103703b002200a102f200420012903b002221037030020092003290300370300200b2010370300200c2006290300370300200120012903503703d002200141d0026a10f702220641ff01714102460d03200510052006410171450d03200141d0006a41186a4200370300200141d0006a41106a22094200370300200141d0006a41086a220342003703002001420037035041aa87ca00ad4280808080c00084100122042900002105200141f0016a41086a2206200441086a290000370300200120053703f0012004102f20032006290300370300200120012903f00137035041db98ca00ad4280808080b001841001220429000021052006200441086a290000370300200120053703f0012004102f200920012903f0012205370300200141d0026a41086a2003290300370300200141d0026a41106a2005370300200141d0026a41186a2006290300370300200120012903503703d002200141d0006a200141d0026a10f304024020012d005022064102460d0020074280808080800484100520014190026a41086a200141d9006a29000037030020014190026a41106a200141e1006a29000037030020014190026a41186a200141e9006a29000037030020012001290051370390020240200641037122064103460d0020060e03010001010b200141b0026a41186a20014190026a41186a290300370300200141b0026a41106a20014190026a41106a290300370300200141b0026a41086a20014190026a41086a29030037030020012001290390023703b002200141d0006a41186a220b4200370300200141d0006a41106a220c4200370300200141d0006a41086a220442003703002001420037035041aa87ca00ad4280808080c000842205100122062900002110200141f0016a41086a2203200641086a290000370300200120103703f0012006102f20042003290300370300200120012903f00137035041f187ca00ad4280808080c001841001220629000021102003200641086a290000370300200120103703f0012006102f200920012903f001370000200941086a2003290300370000200141d0026a41086a220a2004290300370300200141d0026a41106a200c290300370300200141d0026a41186a200b290300370300200120012903503703d0022001200141d0026a41201095012001280204210b2001280200210c20051001220629000021052004200641086a290000370300200120053703502006102f41fd87ca00ad4280808080900284100122062900002105200a200641086a290000370300200120053703d0022006102f2001200b4100200c1b220c3602e001200141e0016aad22104280808080c00084100322062900002105200641086a2900002114200641106a2900002116200141f0016a41186a220b200641186a290000370300200141f0016a41106a2202201637030020032014370300200120053703f0012006102f41c000102d2206450d0120062001290350370000200620012903d002370010200620012903f001370020200641086a2004290300370000200641186a200a290300370000200641286a2003290300370000200641306a2002290300370000200641386a200b290300370000200141d0006a200641c00010860420012902542105200128025021032006102f2003410120031b2104024002402005420020031b22054220882214a72203418002490d004120102d2203450d03200320012903b002370000200341186a200141b0026a41186a290300370000200341106a200141b0026a41106a290300370000200341086a200141b0026a41086a29030037000041aa87ca00ad4280808080c000842214100122062900002116200141d0006a41086a220b200641086a290000370300200120163703502006102f41fd87ca00ad4280808080900284100122062900002116200141d0026a41086a2202200641086a290000370300200120163703d0022006102f2001200c41016a220c3602e00120104280808080c00084100322062900002110200641086a2900002116200641106a2900002117200141f0016a41186a2200200641186a290000370300200141f0016a41106a220d2017370300200141f0016a41086a220a2016370300200120103703f0012006102f41c000102d2206450d0320062001290350370000200620012903d002370010200620012903f001370020200641086a200b290300370000200641186a2002290300370000200641286a200a290300370000200641306a200d290300370000200641386a2000290300370000200141c0003602542001200636025020034101200141d0006a10f4042006102f2003102f200141d0006a41186a22034200370300200141d0006a41106a22004200370300200b4200370300200142003703502014100122062900002110200a200641086a290000370300200120103703f0012006102f200b200a290300370300200120012903f00137035041f187ca00ad4280808080c00184100122062900002110200a200641086a290000370300200120103703f0012006102f200920012903f001370000200941086a200a2903003700002002200b290300370300200141d0026a41106a2000290300370300200141d0026a41186a2003290300370300200120012903503703d0022001200c3602502007428080808080048420084280808080c0008410040c010b200141d0006a41186a220a200141b0026a41186a290300370300200141d0006a41106a220b200141b0026a41106a290300370300200141d0006a41086a2209200141b0026a41086a290300370300200120012903b002370350024020032005a7470d00200341016a22062003490d072014a722004101742202200620062002491b220641ffffff3f712006470d07200641057422064100480d070240024020030d002006102d21040c010b200420004105742006103121040b2004450d032005422088a721032006410576ad21050b200420034105746a22062001290350370000200641186a200a290300370000200641106a200b290300370000200641086a200929030037000041aa87ca00ad4280808080c000841001220629000021082009200641086a290000370300200120083703502006102f41fd87ca00ad4280808080900284100122062900002108200141d0026a41086a200641086a290000370300200120083703d0022006102f2001200c3602e00120104280808080c00084100322062900002108200641086a2900002107200641106a2900002110200141f0016a41186a200641186a290000370300200141f0016a41106a2010370300200141f0016a41086a2007370300200120083703f0012006102f41c000102d2206450d0220062001290350370000200620012903d002370010200620012903f001370020200641086a200141d0006a41086a290300370000200641186a200141d0026a41086a290300370000200641286a200141f0016a41086a290300370000200641306a20014180026a290300370000200641386a200141f0016a41186a290300370000200141c000360254200120063602502004200341016a200141d0006a10f4042006102f200542ffffffff0f8321050b2005a7450d002004102f0b200141f0026a24000f0b1036000b41c4c2ca0020062004103b000b41c4c2ca0020062004103b000b41fca5c000412b41f8b4ca001039000b1038000bb61b06057f017e077f017e287f027e230041a00d6b22032400200341106a41186a22044200370300200341106a41106a22054200370300200341106a41086a2206420037030020034200370310418de6c300ad4280808080e000841001220729000021082006200741086a290000370300200320083703102007102f419ce6c300ad4280808080e00084100122092900002108200341900d6a41086a2207200941086a290000370300200320083703900d2009102f200520032903900d2208370300200341f00c6a41086a220a2006290300370300200341f00c6a41106a220b2008370300200341f00c6a41186a220c2007290300370300200320032903103703f00c200341086a200341f00c6a4120109501200328020c210d2003280208210e2004420037030020054200370300200642003703002003420037031041dcbec600ad42808080808003841001220929000021082006200941086a290000370300200320083703102009102f41f4bec600ad4280808080e001841001220929000021082007200941086a290000370300200320083703900d2009102f200520032903900d2208370300200a2006290300370300200b2008370300200c2007290300370300200320032903103703f00c200341106a200341f00c6a412010aa0220032802102206410120061b210f024002402003290214420020061b2210422088a722050d0020004200370000200041186a4200370000200041106a4200370000200041086a42003700000c010b200341106a410041e00c10e7061a200d417f6a41d100704130200e1b2106200241056a2111200f41206a2112200f20054105746a21134100210d4100211441002115410021164100211741002118410021194100211a4100211b4100211c4100211d4100211e4100211f410021204100212141002122410021234100212441002125410021264100212741002128410021294100212a4100212b4100212c4100212d4100212e4100212f410021304100213141002132200f21054100213341d10021340240034020332109024002402006450d00200641016a210603400240024020052013460d0020052107200541206a21050c010b20122105200f21070b2006417f6a22060d000b20070d010c030b024020052013460d0020052107200541206a21050c010b20122105200f21070b02400240024002402011417f4c0d00024002402011450d002011102d2206450d03200341003602980d200320113602940d0c010b200341003602980d200320113602940d200341013602900d4101102d2206450d02200341013602940d0b200320063602900d200341013602980d200620093a00002002200341900d6a10690240024020032802940d220e20032802980d22046b2002490d0020032802900d21060c010b200420026a22062004490d03200e41017422332006203320064b1b22334100480d0302400240200e0d002033102d21060c010b20032802900d200e2033103121060b2006450d02200320333602940d200320063602900d2033210e0b2003200420026a22333602980d200620046a2001200210e8061a4120102d2204450d0120042007290000370000200441186a2235200741186a290000370000200441106a2236200741106a290000370000200441086a2237200741086a29000037000002400240200e20336b411f4d0d00200e21380c010b203341206a22072033490d03200e41017422382007203820074b1b22384100480d0302400240200e0d002038102d21060c010b2006200e2038103121060b2006450d02200320383602940d200320063602900d0b200620336a220741086a2037290000370000200741106a2036290000370000200741186a20352900003700002003203341206a220e3602980d200720042900003700002004102f200ead4220862006ad84100322072900002108200741086a2900002139200741106a290000213a200c200741186a290000370300200b203a370300200a2039370300200320083703f00c2007102f02402038450d002006102f0b2034417f6a2134200941016a2133200341106a20094103704105746a220620032903f00c370000200641186a200c290300370000200641106a200b290300370000200641086a200a2903003700004100210703402009200941036e2204417d6c6a4102470d04200341106a20076a220641df006a2d0000220d2006411f6a2d0000220e71200d200e722006413f6a2d000071722132200641de006a2d0000220d2006411e6a2d0000220e71200d200e722006413e6a2d000071722131200641dd006a2d0000220d2006411d6a2d0000220e71200d200e722006413d6a2d000071722130200641dc006a2d0000220d2006411c6a2d0000220e71200d200e722006413c6a2d00007172212f200641db006a2d0000220d2006411b6a2d0000220e71200d200e722006413b6a2d00007172212e200641da006a2d0000220d2006411a6a2d0000220e71200d200e722006413a6a2d00007172212d200641d9006a2d0000220d200641196a2d0000220e71200d200e72200641396a2d00007172212c200641d8006a2d0000220d200641186a2d0000220e71200d200e72200641386a2d00007172212b200641d7006a2d0000220d200641176a2d0000220e71200d200e72200641376a2d00007172212a200641d6006a2d0000220d200641166a2d0000220e71200d200e72200641366a2d000071722129200641d5006a2d0000220d200641156a2d0000220e71200d200e72200641356a2d000071722128200641d4006a2d0000220d200641146a2d0000220e71200d200e72200641346a2d000071722127200641d3006a2d0000220d200641136a2d0000220e71200d200e72200641336a2d000071722126200641d2006a2d0000220d200641126a2d0000220e71200d200e72200641326a2d000071722125200641d1006a2d0000220d200641116a2d0000220e71200d200e72200641316a2d000071722124200641d0006a2d0000220d200641106a2d0000220e71200d200e72200641306a2d000071722123200641cf006a2d0000220d2006410f6a2d0000220e71200d200e722006412f6a2d000071722122200641ce006a2d0000220d2006410e6a2d0000220e71200d200e722006412e6a2d000071722121200641cd006a2d0000220d2006410d6a2d0000220e71200d200e722006412d6a2d000071722120200641cc006a2d0000220d2006410c6a2d0000220e71200d200e722006412c6a2d00007172211f200641cb006a2d0000220d2006410b6a2d0000220e71200d200e722006412b6a2d00007172211e200641ca006a2d0000220d2006410a6a2d0000220e71200d200e722006412a6a2d00007172211d200641c9006a2d0000220d200641096a2d0000220e71200d200e72200641296a2d00007172211c200641c8006a2d0000220d200641086a2d0000220e71200d200e72200641286a2d00007172211b200641c7006a2d0000220d200641076a2d0000220e71200d200e72200641276a2d00007172211a200641c6006a2d0000220d200641066a2d0000220e71200d200e72200641266a2d000071722119200641c5006a2d0000220d200641056a2d0000220e71200d200e72200641256a2d000071722118200641c4006a2d0000220d200641046a2d0000220e71200d200e72200641246a2d000071722117200641c3006a2d0000220d200641036a2d0000220e71200d200e72200641236a2d000071722116200641c2006a2d0000220d200641026a2d0000220e71200d200e72200641226a2d000071722115200641c1006a2d0000220d200641016a2d0000220e71200d200e72200641216a2d000071722114200641c0006a2d0000220d20062d0000220e71200d200e72200641206a2d00007172210d200741800c460d04200341106a20072004410574200941096e41e0006c6b6a6a220641ff006a20323a0000200641fe006a20313a0000200641fd006a20303a0000200641fc006a202f3a0000200641fb006a202e3a0000200641fa006a202d3a0000200641f9006a202c3a0000200641f8006a202b3a0000200641f7006a202a3a0000200641f6006a20293a0000200641f5006a20283a0000200641f4006a20273a0000200641f3006a20263a0000200641f2006a20253a0000200641f1006a20243a0000200641f0006a20233a0000200641ef006a20223a0000200641ee006a20213a0000200641ed006a20203a0000200641ec006a201f3a0000200641eb006a201e3a0000200641ea006a201d3a0000200641e9006a201c3a0000200641e8006a201b3a0000200641e7006a201a3a0000200641e6006a20193a0000200641e5006a20183a0000200641e4006a20173a0000200641e3006a20163a0000200641e2006a20153a0000200641e1006a20143a0000200641e0006a200d3a000020042109200741e0006a220741e00c470d000c040b0b103d000b1036000b1038000b4100210620340d000b0b200020323a001f200020313a001e200020303a001d2000202f3a001c2000202e3a001b2000202d3a001a2000202c3a00192000202b3a00182000202a3a0017200020293a0016200020283a0015200020273a0014200020263a0013200020253a0012200020243a0011200020233a0010200020223a000f200020213a000e200020203a000d2000201f3a000c2000201e3a000b2000201d3a000a2000201c3a00092000201b3a00082000201a3a0007200020193a0006200020183a0005200020173a0004200020163a0003200020153a0002200020143a00012000200d3a00000b02402010a7450d00200f102f0b200341a00d6a24000bc10e04067f017e107f047e23004190036b220224002002412036021420022001360210200241186a2001ad428080808080048410021073024002400240024020022802182203450d00200228021c21042002200241206a28020036022c20022003360228200241086a200241286a10e60120022802080d010240200228020c2205200228022c220641e8006e2201200120054b1b2207ad42e8007e2208422088a70d002008a72201417f4c0d00024002400240024020010d00410821090c010b2001102d2209450d01200141e8006e21070b02402005450d00200241d8026a410172210a4100210b0340200241003a00f802200b41016a210c410021010240024002400240034020062001460d01200241d8026a20016a2002280228220d2d00003a00002002200d41016a3602282002200141016a220d3a00f802200d2101200d4120470d000b20024180026a41086a2201200241d8026a41086a220e29030037030020024180026a41106a220f200241d8026a41106a221029030037030020024180026a41186a2211200241d8026a41186a2212290300370300200220022903d8023703800220022006200d6b36022c200241d8026a200241286a10c30420022d00d802220d4102470d010c020b2002410036022c200141ff0171450d01200241003a00f8024102210d0c020b200241a0026a412f6a2206200a412f6a290000370000200241a0026a41286a2213200a41286a290000370300200241a0026a41206a2214200a41206a290000370300200241a0026a41186a2215200a41186a290000370300200241a0026a41106a2216200a41106a290000370300200241a0026a41086a2217200a41086a2900003703002002200a2900003703a002200228022c22184110490d00200241e0016a41086a2001290300370300200241e0016a41106a200f290300370300200241e0016a41186a2011290300370300200e20172903003703002010201629030037030020122015290300370300200241d8026a41206a2014290300370300200241d8026a41286a2013290300370300200241d8026a412f6a200629000037000020022002290380023703e001200220022903a0023703d8022002201841706a36022c20022002280228220141106a360228200141086a29000021192001290000211a0c010b4102210d0b200241a8016a412f6a2201200241d8026a412f6a290000370000200241a8016a41286a2206200241d8026a41286a290300370300200241a8016a41206a220e200241d8026a41206a290300370300200241a8016a41186a220f200241d8026a41186a290300370300200241a8016a41106a2210200241d8026a41106a290300370300200241a8016a41086a2211200241d8026a41086a29030037030020024188016a41086a2212200241e0016a41086a29030037030020024188016a41106a2213200241e0016a41106a29030037030020024188016a41186a2214200241e0016a41186a290300370300200220022903d8023703a801200220022903e001370388010240200d4102460d00200241d0006a412f6a22152001290000370000200241d0006a41286a22162006290300370300200241d0006a41206a2206200e290300370300200241d0006a41186a220e200f290300370300200241d0006a41106a220f2010290300370300200241d0006a41086a22102011290300370300200241306a41086a22112012290300370300200241306a41106a22122013290300370300200241306a41186a22132014290300370300200220022903a801370350200220022903880137033002402007200b470d00200b4101742201200c2001200c4b1bad42e8007e2208422088a70d052008a722014100480d0502400240200b0d002001102d21090c010b2009200b41e8006c2001103121090b2009450d04200141e8006e21070b2009200b41e8006c6a2201200d3a0000200141196a200e290300370000200141116a200f290300370000200141096a201029030037000020012002290350370001201529000021082016290300211b2006290300211c200141c0006a2019370000200141386a201a370000200141216a201c370000200141296a201b370000200141306a2008370000200141c8006a2002290330370000200141d0006a2011290300370000200141d8006a2012290300370000200141e0006a2013290300370000200c2005460d02200228022c2106200c210b0c010b0b2007450d052009102f0c050b2009450d042000200736020420002009360200200041086a20053602000c050b1036000b1038000b103d000b200041003602000c020b200241003602a802200242013703a0022002410b3602ac012002200241106a3602a8012002200241a0026a360250200241ec026a4101360200200242013702dc02200241b885c7003602d8022002200241a8016a3602e802200241d0006a41d8dbc100200241d8026a103c1a20023502a80242208620023502a002841008024020022802a402450d0020022802a002102f0b200041003602000b2004450d002003102f0b20024190036a24000bae1e04017f067e0f7f037e230041d0026b22032400200241c0006a2903002104200241306a2903002105200241286a2903002106200241106a2903002107200241086a29030021082002290338210920022d0000210a200341186a200241e0006a290000370300200341106a200241d8006a290000370300200341086a200241d0006a29000037030020032002290048370300200341206a41086a200241206a290300370300200320022800013602304104210b2003200241046a2800003600332003200241186a29030037032020012802002802002202280200210c0240024002402002280208220d0d004103210e200c21020c010b200d410574210f200c210202400340200341a8016a20032002221010b20420032802a801220220032802b00110b40441ff0171210e024020032802ac01450d002002102f0b0240200e4103470d00201041206a2102200f41606a220f450d020c010b0b201041206a21020c020b201041206a21024103210e0b0b4101211102400240024002400240024002400240200e41ff0171417e6a220f41014b0d00410021124100211341002114200f0e020102010b410021110b4108102d220b450d03200b2010360204200b200e3a0000200c200d4105746a210f4101211241012113034002400240200f2002470d004103210e0c010b200341a8016a2003200210b20420032802a801221020032802b00110b40441ff0171210e024020032802ac01450d002010102f0b200241206a2102200e4103460d01200241606a21100b024002400240200e41ff0171220c4102470d00201141016a21110c010b200c4103460d010b024020132012470d00201241016a220c2012490d0820124101742213200c2013200c4b1b220c41ffffffff0171200c470d08200c410374220c4100480d080240024020120d00200c102d210b0c010b200b2012410374200c1031210b0b200b450d06200c41037621130b200b20124103746a220c2010360204200c200e3a0000201241016a21120c010b0b02402012450d0020012802042012417f6a10af04220220124f0d05200b20024103746a2d000022024103470d020b201121140b410121024100210c0c010b410241012002410246220c1b2102201121140b200320023a00372001280208210f200341c0026a200128020c360200200341bc026a200341c8026a3602002003200b20124103746a22023602b4022003200b3602b002200320133602ac022003200b3602a8022003200341376a3602b8022003200341b8026a220e3602a80102400340200b2002460d012003200b41086a3602b002200b280200220241ff01714103460d010240200e2002200b28020410dc0422020d0020032802b402210220032802b002210b0c010b0b20034180016a41086a220b200241086a29000037030020034180016a41106a2213200241106a29000037030020034180016a41186a2211200241186a2900003703002003200229000037038001200f41046a21120340200341a8016a41186a220d2011290300370300200341a8016a41106a22152013290300370300200341a8016a41086a2216200b29030037030020032003290380013703a80102400240200f41086a221728020022022012280200460d00200f28020021100c010b200241016a22102002490d05200241017422182010201820104b1b221041ffffff3f712010470d05201041057422184100480d050240024020020d002018102d21100c010b200f28020020024105742018103121100b2010450d03200f2010360200201220184105763602000b201020024105746a221020032903a801370000201041186a200d290300370000201041106a2015290300370000201041086a20162903003700002017200241016a3602002003200e3602a801034020032802b002220220032802b402460d022003200241086a3602b0022002280200221041ff01714103460d02200e2010200228020410dc042202450d000b200b200241086a2900003703002013200241106a2900003703002011200241186a29000037030020032002290000370380010c000b0b024020032802ac02450d0020032802a802102f0b02400240200c0d00200341f0006a41086a200341206a41086a290300370300200320032802303602382003200328003336003b2003200329032037037041c6b5c400ad4280808080f00084100122022900002119200341a8026a41086a200241086a290000370300200320193703a8022002102f419cccc500ad4280808080b0028410012202290000211920034180016a41086a200241086a29000037030020032019370380012002102f4120102d2202450d0220022003290300370000200241186a200341186a290300370000200241106a200341106a290300370000200241086a200341086a2903003700002002ad42808080808004841003220e2900002119200e41086a290000211a200e41106a290000211b200341a8016a41186a2210200e41186a290000370300200341a8016a41106a220f201b370300200341a8016a41086a201a370300200320193703a801200e102f2002102f41c000102d2202450d02200220032903a8023700002002200329038001370010200220032903a801370020200241086a200341a8026a41086a290300370000200241186a20034180016a41086a290300370000200241286a200341a8016a41086a290300370000200241306a200f290300370000200241386a20102903003700004110102d220e450d02200e2009370000200e2004370008200e411041201031210e02400240200a41ff01714101460d00200e450d04200e41003a0010200320073703b001200320083703a801200341a8016a210f41112110412021120c010b200e450d03200e41013a001041c0002112200e412041c0001031220e450d03200e2008370018200e2003280238360011200e2003290370370028200e41206a2007370000200e41146a200328003b360000200e41306a200341f8006a2d00003a0000200320053703b001200320063703a801200341a8016a210f413121100b0240201220106b410f470d00200e20122012410174220b201041106a220c200b200c4b1b1031220e450d030b200e20106a2212200f290000370000201241086a200f41086a2900003700002002ad4280808080800884201041106aad422086200ead841004200e102f2002102f200341a8016a41086a41083a0000200341b1016a2003290300370000200341b9016a200341086a290300370000200341c1016a200341106a290300370000200341c9016a200341186a290300370000200341123a00a80141c8e1ca004100200341a8016a108c01200042003703000c010b20012802102202200228020020146a360200200128021422022002290300221920097c221a370300200241086a2202200229030020047c201a201954ad7c37030020012802002802002102200341a8016a41186a2210200341186a290300370300200341a8016a41106a220f200341106a290300370300200341a8016a41086a2212200341086a290300370300200320032903003703a80102402002280208220e200241046a280200470d00200e41016a220b200e490d04200e410174220c200b200c200b4b1b220b41ffffff3f71200b470d04200b410574220b4100480d0402400240200e0d00200b102d210e0c010b2002280200200e410574200b1031210e0b200e450d022002200e360200200241046a200b4105763602002002280208210e0b2002280200200e4105746a220e20032903a801370000200e41186a2010290300370000200e41106a200f290300370000200e41086a20122903003700002002200228020841016a360208200320032802303602482003200328003336004b200341386a41086a200341206a41086a29030037030020032003290320370338200128021828020021100240024002400240200a41ff01714101470d002003418f016a20073700002003419f016a200341386a41086a2d00003a000020032008370087012003200328004b360083012003200328024836028001200320032903383700970141c6b5c400ad4280808080f00084100122022900002107200341f0006a41086a200241086a290000370300200320073703702002102f41d8cdc500ad4280808080800184100122022900002107200341a8026a41086a200241086a290000370300200320073703a8022002102f4120102d2202450d052002200329038001370000200241186a20034180016a41186a290300370000200241106a20034180016a41106a290300370000200241086a20034180016a41086a2903003700002002ad42808080808004841003220e2900002107200e41086a2900002108200e41106a2900002119200341a8016a41186a220f200e41186a290000370300200341a8016a41106a22122019370300200341a8016a41086a2008370300200320073703a801200e102f2002102f41c000102d2202450d0520022003290370370000200220032903a802370010200220032903a801370020200241086a200341f0006a41086a290300370000200241186a200341a8026a41086a290300370000200241286a200341a8016a41086a290300370000200241306a2012290300370000200241386a200f290300370000200210dd0441ff0171220e4102470d022002102f0c010b200320083703a802200320073703b0022008200784500d002003200336027020034180016a2003200341a8026a200341f0006a1096012003290380014201520d002003290388012107200341e0016a20034180016a41106a290300370300200341d8016a2007370300200341a8016a41086a41003a0000200341b1016a2003290300370000200341b9016a200341086a290300370000200341c1016a200341106a290300370000200341c9016a200341186a290300370000200341033a00a80141c8e1ca004100200341a8016a108c010b20092107200421080c010b2002ad428080808080088410052002102f2009210720042108200e0d0020034180016a20102009200620092006542202200420055420042005511b220e1b20042005200e1b10b0044200200420057d2002ad7d2207200920067d2205200956200720045620072004511b22021b21084200200520021b21070b200320102007200810b004200041386a2004370300200041306a20093703002000410c6a2003290300370200200041146a200341086a2903003702002000411c6a200341106a290300370200200041246a200341186a29030037020020004201370300200020012802102802003602080b200341d0026a24000f0b1036000b41acd9c40020022012103b000b1038000b992209027f017e027f017e2f7f017e1e7f077e017f0240200028028002220241c000490d00200041a0026a22032903002204a7210520004198026a22062903002207a721082004422088a721092007422088a7210a41e5f0c18b06210b41eec8819903210c41b2da88cb07210d41f4ca81d906210e410a21022006280200220f21102000419c026a28020022112112200328020022132114200041a4026a28020022152116200f211720112118201321192015211a200f211b2011211c2013211d2015211e20004194026a280200221f210320004190026a280200222021062000418c026a2802002221212220002802880222232124201f2125202021262021212720232128201f21292020212a2021212b2023212c201f212d2020212e2021212f20232130200041b0026a2903002204422088a7223121322004a722332134200041ac026a2802002235ad422086200041a8026a2802002236ad84223742037c2204422088a7223821392004a7223a213b2031213c2033213d203742027c2204422088a7223e213f2004a7224021412031214220332143203742017c2204422088a7224421452004a722462147203121482033214941f4ca81d906214a41b2da88cb07214b41eec8819903214c41e5f0c18b06214d41f4ca81d906214e41b2da88cb07214f41eec8819903215041e5f0c18b06215141f4ca81d906215241e5f0c18b06215341eec8819903215441b2da88cb0721550340200c20226a220cad422086200b20246a220bad842039ad422086203bad84852204a74110772239201b6a221bad2004422088a7411077223b201c6a221cad422086842022ad4220862024ad84852204a7410c772222200b6a2224ad2004422088a7410c77220b200c6a220cad422086842039ad203bad42208684852204a7410877223b201b6a221bad2004422088a74108772239201c6a221cad422086842022ad200bad42208684852204a74107772222200d20066a220bad200e20036a220dad422086842034ad2032ad42208684852207a7411077220e201d6a221dad2007422088a74110772232201e6a221ead422086842006ad2003ad42208684852207422088a7410c772203200d6a22066a2234ad4220862007a7410c77220d200b6a220bad2006ad42208684200ead2032ad42208684852207a74108772206201d6a221dad2007422088a74108772232201e6a221ead42208684200dad2003ad42208684852207422088a74107772203200b6a220bad842039ad2006ad42208684852256a74110772206201b6a221bad2056422088a74110772239201c6a221cad422086842022ad4220862003ad84852256a7410c772203200b6a220dad2056422088a7410c77222220346a220ead422086842006ad2039ad42208684852256a74108772239201b6a221bad2056422088a74108772234201c6a221cad422086842003ad2022ad42208684852256a741077721032004422088a7410777220620246a2222ad2007a74107772224200c6a220cad42208684203bad4220862032ad84852204a74110772232201d6a221dad2004422088a7411077223b201e6a221ead422086842006ad2024ad42208684852204a7410c77220620226a220bad2004422088a7410c772222200c6a220cad422086842032ad203bad42208684852204a74108772232201d6a221dad2004422088a7410877223b201e6a221ead422086842006ad2022ad42208684852204a74107772122204c20276a2206ad422086204d20286a2224ad84203fad4220862041ad84852207a7411077223f20176a2217ad2007422088a7411077224120186a2218ad422086842027ad4220862028ad84852207a7410c77222720246a2224ad2007422088a7410c77222820066a2206ad42208684203fad2041ad42208684852207a7410877224120176a2217ad2007422088a7410877223f20186a2218ad422086842027ad2028ad42208684852207a74107772227204b20266a2228ad204a20256a224aad42208684203dad203cad42208684852257a7411077223c20196a2219ad2057422088a7411077223d201a6a221aad422086842026ad2025ad42208684852257422088a7410c772225204a6a22266a224aad4220862057a7410c77224b20286a2228ad2026ad42208684203cad203dad42208684852257a7410877222620196a2219ad2057422088a7410877223c201a6a221aad42208684204bad2025ad42208684852257422088a7410777222520286a2228ad84203fad2026ad42208684852258a7411077222620176a2217ad2058422088a7411077223d20186a2218ad422086842027ad4220862025ad84852258a7410c77222520286a224bad2058422088a7410c772227204a6a224aad422086842026ad203dad42208684852258a7410877223f20176a2217ad2058422088a7410877223d20186a2218ad422086842025ad2027ad42208684852258a741077721252007422088a7410777222620246a2224ad2057a7410777222720066a2206ad422086842041ad422086203cad84852207a7411077222820196a2219ad2007422088a7411077223c201a6a221aad422086842026ad2027ad42208684852207a7410c77222620246a224dad2007422088a7410c77222420066a224cad422086842028ad203cad42208684852207a7410877223c20196a2219ad2007422088a74108772241201a6a221aad422086842026ad2024ad42208684852207a741077721272050202b6a2206ad4220862051202c6a2224ad842045ad4220862047ad84852257a7411077222620106a2228ad2057422088a7411077221020126a2212ad42208684202bad422086202cad84852257a7410c77222b20246a2224ad2057422088a7410c77222c20066a2206ad422086842026ad2010ad42208684852257a7410877222620286a2228ad2057422088a7410877221020126a2212ad42208684202bad202cad42208684852257a7410777222b204f202a6a222cad204e20296a2245ad422086842043ad2042ad42208684852259a7411077224220146a2214ad2059422088a7411077224320166a2216ad42208684202aad2029ad42208684852259422088a7410c77222920456a222a6a2245ad4220862059a7410c772247202c6a222cad202aad422086842042ad2043ad42208684852259a7410877222a20146a2214ad2059422088a7410877224220166a2216ad422086842047ad2029ad42208684852259422088a74107772229202c6a222cad842010ad202aad4220868485225aa7411077222a20286a2228ad205a422088a7411077221020126a2212ad42208684202bad4220862029ad8485225aa7410c772229202c6a224fad205a422088a7410c77222b20456a224ead42208684202aad2010ad4220868485225aa7410877224520286a2210ad205a422088a7410877224320126a2212ad422086842029ad202bad4220868485225aa741077721292057422088a7410777222820246a2224ad2059a7410777222a20066a2206ad422086842026ad4220862042ad84852257a7411077222620146a222bad2057422088a7411077222c20166a2216ad422086842028ad202aad42208684852257a7410c77222820246a2251ad2057422088a7410c77222420066a2250ad422086842026ad202cad42208684852257a74108772242202b6a2214ad2057422088a7410877224720166a2216ad422086842028ad2024ad42208684852257a7410777212b205320306a2206ad2054202f6a2224ad422086842035ad4220862036ad84852259a7411077222620086a2228ad2059422088a7411077222a200a6a222cad42208684202fad4220862030ad84852259a7410c77222f20066a2206ad2059422088a7410c77223020246a2224ad422086842026ad202aad42208684852259a7410877222620286a2228ad2059422088a7410877222a202c6a222cad42208684202fad2030ad42208684852259a7410777222f2052202d6a2230ad4220862055202e6a2208ad842049ad2048ad4220868485225ba7411077220a20056a2205ad205b422088a7411077223520096a2209ad42208684202ead202dad4220868485225b422088a7410c77222d20306a222e6a2230ad422086205ba7410c77223620086a2208ad202ead42208684200aad2035ad4220868485225ba7410877222e20056a2205ad205b422088a7410877224820096a2209ad422086842036ad202dad4220868485225b422088a7410777222d20086a2208ad84202aad202ead4220868485225ca7411077222a20286a2228ad205c422088a7411077222e202c6a222cad42208684202fad422086202dad8485225ca7410c77222d20086a2255ad205c422088a7410c77222f20306a2252ad42208684202aad202ead4220868485225ca7410877223520286a2208ad205c422088a74108772249202c6a220aad42208684202dad202fad4220868485225ca7410777212d2059422088a7410777222820066a2206ad205ba7410777222a20246a2224ad422086842026ad4220862048ad84852259a7411077222620056a222cad2059422088a7411077222e20096a222fad422086842028ad202aad42208684852259a7410c77222820066a2253ad2059422088a7410c77220620246a2254ad422086842026ad202ead42208684852259a74108772248202c6a2205ad2059422088a74108772236202f6a2209ad422086842028ad2006ad42208684852259a7410777212f2056422088a741077721242004422088a741077721062058422088a741077721282007422088a74107772126205a422088a7410777212c2057422088a7410777212a205c422088a741077721302059422088a7410777212e2002417f6a22020d000b41002102200041003602800220002802a802215d2000203742047c22043e02a8022000203220316a3602fc012000203420336a3602f8012000203920386a3602f4012000203b203a6a3602f0012000201e20156a3602ec012000201d20136a3602e8012000201c20116a3602e4012000201b200f6a3602e00120002003201f6a3602dc012000200620206a3602d8012000202220216a3602d4012000202420236a3602d0012000200e41f4ca81d9066a3602cc012000200d41b2da88cb076a3602c8012000200c41eec88199036a3602c4012000200b41e5f0c18b066a3602c0012000203c20316a3602bc012000203d20336a3602b8012000203f203e6a3602b4012000204120406a3602b0012000201a20156a3602ac012000201920136a3602a8012000201820116a3602a40120002017200f6a3602a00120002025201f6a36029c012000202620206a360298012000202720216a360294012000202820236a360290012000204a41f4ca81d9066a36028c012000204b41b2da88cb076a360288012000204c41eec88199036a360284012000204d41e5f0c18b066a360280012000204220316a36027c2000204320336a3602782000204520446a3602742000204720466a3602702000201620156a36026c2000201420136a3602682000201220116a36026420002010200f6a36026020002029201f6a36025c2000202a20206a3602582000202b20216a3602542000202c20236a3602502000204e41f4ca81d9066a36024c2000204f41b2da88cb076a3602482000205041eec88199036a3602442000205141e5f0c18b066a3602402000200920156a36022c2000200520136a3602282000200a20116a36022420002008200f6a3602202000202d201f6a36021c2000202e20206a3602182000202f20216a3602142000203020236a3602102000205241f4ca81d9066a36020c2000205541b2da88cb076a3602082000205441eec88199036a3602042000205341e5f0c18b066a36020020002802ac022103200020044220883e02ac02200020002802b40220486a36023c200020002802b00220496a3602382000200320356a3602342000205d20366a3602300b200020024102746a28020021032000200241016a360280020240200141016a220620014f0d004180dcc400413941bcdcc4001039000b20032006700bcc0703027f037e077f230041c0006b2204240002402002200384500d0041c6b5c400ad4280808080f00084100122052900002106200441086a200541086a290000370300200420063703002005102f41f6dbc400ad4280808080f00084100122052900002106200441106a41086a200541086a290000370300200420063703102005102f0240024002400240024002404120102d2205450d0020052000290000370000200541186a200041186a290000370000200541106a200041106a290000370000200541086a200041086a2900003700002005ad4280808080800484100322002900002106200041086a2900002107200041106a2900002108200441206a41186a2209200041186a290000370300200441206a41106a220a2008370300200441206a41086a2007370300200420063703202000102f2005102f41c000102d220b450d00200b2004290300370000200b2004290310370010200b2004290320370020200b41086a200441086a290300370000200b41186a200441106a41086a290300370000200b41286a200441206a41086a290300370000200b41306a200a290300370000200b41386a2009290300370000200441206a200b10b704024002400240024002402004280220220c0d004100210d20044100360210410021054108210c4100210e0c010b20042004280224220e36021020042902242206a7210f410021050240024002402006422088a7220d41014b0d00200d0e020201020b200d2100034020052000410176220920056a220a200c200a41186c6a28020020014b1b2105200020096b220041014b0d000b0b200c200541186c6a28020022002001460d03200520002001496a2205200d4b0d060b200d200f470d01200e200d470d010b200e41016a2200200e490d05200e41017422092000200920004b1bad42187e2206422088a70d052006a722004100480d0502400240200e0d002000102d210c0c010b200c200e41186c20001031210c0b200c450d032004200041186e3602100b200c200541186c6a220041186a2000200d20056b41186c10e9061a200041106a20033703002000200237030820002001360200200c450d06200d41016a210d2004280210210f0c010b2005200d4f0d04200c200541186c6a22052005290308220620027c2202370308200541106a2205200529030020037c2002200654ad7c3703000b200441c0003602242004200b360220200c200d200441206a10b804200f450d05200c102f0c050b1036000b419ae3c300411e41f8b4ca001039000b1038000b419cc3ca002005200d103b000b200bad428080808080088410050b200b102f0b200441c0006a24000be90202047f017e230041206b2203240002400240200241e8006c4104722204417f4c0d002004102d2205450d0120034100360208200320043602042003200536020020022003106902402002450d00200241e8006c21064100210403402003200120046a220241c8006a41201082010240024020022d00004101460d00200341003a00102003200341106a4101108201200241086a29030021072003200241106a29030037031820032007370310200341106a21050c010b200341013a00102003200341106a41011082012003200241016a4120108201200241286a29030021072003200241306a29030037031820032007370310200341106a21050b200320054110108201200241386a29030021072003200241c0006a290300370318200320073703102003200341106a41101082012006200441e8006a2204470d000b0b20002003290300370200200041086a200341086a280200360200200341206a24000f0b103d000b1036000b9c0703027f017e057f230041d0006b2203240041c6b5c400ad4280808080f00084100122042900002105200341086a200441086a290000370300200320053703002004102f41d7b5c400ad4280808080d00084100122042900002105200341106a41086a200441086a290000370300200320053703102004102f024002404120102d2204450d0020042001290000370000200441186a200141186a290000370000200441106a200141106a290000370000200441086a200141086a29000037000020032004ad4280808080800484100622012900003703302001102f200341c4006a200441206a360200200341003a0048200320043602402003200341306a41086a220636023c2003200341306a360238200341206a200341386a106c2004102f02400240024002402003280228220741206a2208417f4c0d0020032802202109024002402008450d002008102d2204450d062008410f4d0d012008210a0c050b4110210a4110102d21040c030b200841017422014110200141104b1b220a41004e0d010c050b103d000b20042008200a103121040b2004450d010b20042003290300370000200441086a200341086a29030037000002400240200a4170714110460d00200a21010c010b200a41017422014120200141204b1b22014100480d022004200a200110312204450d010b20042003290310370010200441186a200341106a41086a29030037000002400240200141606a2007490d002001210a0c010b2007415f4b0d022001410174220a2008200a20084b1b220a4100480d0220042001200a10312204450d010b200441206a2009200710e8061a02402003280224450d002009102f0b4120102d2201450d0020012002290000370000200141186a200241186a290000370000200141106a200241106a290000370000200141086a200241086a29000037000020032001ad4280808080800484100622022900003703302002102f200341c4006a200141206a360200200341003a0048200320013602402003200636023c2003200341306a360238200341106a200341386a106c2001102f2003280210210702400240200a20086b20032802182201490d00200120086a2102200a21090c010b200820016a22022008490d02200a41017422092002200920024b1b22094100480d022004200a200910312204450d010b200420086a2007200110e8061a02402003280214450d002007102f0b200020023602082000200936020420002004360200200341d0006a24000f0b1036000b1038000b8b0503027f017e047f230041d0006b2202240041c6b5c400ad4280808080f00084100122032900002104200241086a200341086a290000370300200220043703002003102f41ecdac400ad4280808080d00184100122032900002104200241106a41086a200341086a290000370300200220043703102003102f024002404120102d2203450d0020032001290000370000200341186a200141186a290000370000200341106a200141106a290000370000200341086a200141086a29000037000020022003ad4280808080800484100622012900003703302001102f200241c4006a200341206a360200200241003a0048200220033602402002200241306a41086a36023c2002200241306a360238200241206a200241386a106c2003102f02400240024002402002280228220541206a2201417f4c0d0020022802202106024002402001450d002001102d2203450d062001410f4d0d01200121070c050b411021074110102d21030c030b200141017422084110200841104b1b220741004e0d010c050b103d000b200320012007103121030b2003450d010b20032002290300370000200341086a200241086a2903003700000240024020074170714110460d00200721080c010b200741017422084120200841204b1b22084100480d0220032007200810312203450d010b20032002290310370010200341186a200241106a41086a29030037000002400240200841606a2005490d00200821070c010b2005415f4b0d02200841017422072001200720014b1b22074100480d0220032008200710312203450d010b200341206a2006200510e8061a20002001360208200020073602042000200336020002402002280224450d002006102f0b200241d0006a24000f0b1036000b1038000b9a0203017f017e017f230041d0006b220224002002200136020420022000360200200241086a2001ad4220862000ad8422031002107302400240200228020822010d00410321000c010b200228020c210402400240200241106a280200450d0020012d000022004103490d010b20024100360220200242013703182002410b36022c200220023602282002200241186a360234200241cc006a41013602002002420137023c200241b885c7003602382002200241286a360248200241346a41d8dbc100200241386a103c1a200235022042208620023502188410080240200228021c450d002002280218102f0b02402004450d002001102f0b410321000c010b02402004450d002001102f0b200310050b200241d0006a240020000b8a1604057f017e057f027e23004180026b22012400200141d0006a41186a22024200370300200141d0006a41106a22034200370300200141d0006a41086a220442003703002001420037035041c6b5c400ad4280808080f00084100122052900002106200141f0006a41086a2207200541086a290000370300200120063703702005102f2004200729030037030020012001290370370350419ab6c400ad4280808080c0008410012205290000210620014180016a41086a2207200541086a29000037030020012006370380012005102f20032001290380012206370300200141306a41086a2004290300370300200141306a41106a2006370300200141306a41186a20072903003703002001200129035037033020014180016a200141306a412010ad0220012d0080012107200220014180016a41196a290000370300200320014180016a41116a290000370300200420014180016a41096a2900003703002001200129008101370350410121050240024020074101460d0041002105200141003a00080c010b200141086a41096a2004290300370000200141086a41116a2003290300370000200141086a41196a2002290300370000200141013a0008200120012903503700090b20014199016a200041186a29000037000020014191016a200041106a29000037000020014189016a200041086a2900003700002001200029000037008101200141013a00800102400240024002402005450d00200141086a41017220014180016a410172412010ea06450d010b200141d0006a41186a22054200370300200141d0006a41106a22024200370300200141d0006a41086a220442003703002001420037035041c6b5c400ad4280808080f00084100122072900002106200141f0006a41086a2208200741086a290000370300200120063703702007102f20042008290300370300200120012903703703504193b6c400ad4280808080f0008410012207290000210620014180016a41086a2208200741086a29000037030020012006370380012007102f2003200129038001370000200341086a2008290300370000200141306a41086a2004290300370300200141306a41106a2002290300370300200141306a41186a20052903003703002001200129035037033020014180016a200141306a412010ad0220012d0080012108200520014180016a41196a290000370300200220014180016a41116a290000370300200420014180016a41096a2900003703002001200129008101370350410121070240024020084101460d0041002107200141003a00080c010b200141086a41096a2004290300370000200141086a41116a2002290300370000200141086a41196a2005290300370000200141013a0008200120012903503700090b20014199016a200041186a29000037000020014191016a200041106a29000037000020014189016a200041086a2900003700002001200029000037008101200141013a00800102402007450d00200141086a41017220014180016a410172412010ea06450d010b20014180016a41186a420037030020014180016a41106a2202420037030020014180016a41086a22044200370300200142003703800141c6b5c400ad4280808080f000841001220529000021062004200541086a29000037030020012006370380012005102f41ebdec700ad4280808080f00084100122052900002106200141d0006a41086a2207200541086a290000370300200120063703502005102f200220012903502206370300200141086a41086a2004290300370300200141086a41106a2006370300200141086a41186a2007290300370300200120012903800137030820014180016a200141086a412010aa022001280280012204410120041b21080240024002400240200129028401420020041b2206422088a7220941014b0d004100210420090e020201020b2009210541002104034020042005410176220220046a2207200820074105746a2000412010ea0641004a1b2104200520026b220541014b0d000b0b200820044105746a2000412010ea06450d010b2006a7450d012008102f0c010b200420094f0d01200820044105746a2205200541206a2004417f7320096a41057410e9061a200141d0006a41186a220a4200370300200141d0006a41106a220b4200370300200141d0006a41086a220442003703002001420037035041c6b5c400ad4280808080f00084220c10012205290000210d200141f0006a41086a2202200541086a2900003703002001200d3703702005102f200420022903003703002001200129037037035041ebdec700ad4280808080f0008410012205290000210d20014180016a41086a2207200541086a2900003703002001200d370380012005102f2003200129038001370000200341086a2007290300370000200141306a41086a2004290300370300200141306a41106a200b290300370300200141306a41186a200a2903003703002001200129035037033020014120360284012001200141306a3602800120082009417f6a20014180016a10aa0102402006a7450d002008102f0b200c1001220429000021062002200441086a290000370300200120063703702004102f41dfdbc400ad42808080808002841001220429000021062007200441086a29000037030020012006370380012004102f4120102d2204450d0220042000290000370000200441186a200041186a290000370000200441106a200041106a290000370000200441086a200041086a2900003700002004ad4280808080800484100322052900002106200541086a290000210c200541106a290000210d200141d0006a41186a2207200541186a290000370300200141d0006a41106a2208200d370300200141d0006a41086a2202200c370300200120063703502005102f2004102f41c000102d2204450d0220042001290370370000200420012903800137001020042001290350370020200441086a200141f0006a41086a290300370000200441186a20014180016a41086a290300370000200441286a2002290300370000200441306a2008290300370000200441386a2007290300370000200141013a0080012004ad428080808080088420014180016aad4280808080108410042004102f41c6b5c400ad4280808080f000841001220429000021062002200441086a290000370300200120063703502004102f41efdbc400ad4280808080f00084100122042900002106200141086a41086a200441086a290000370300200120063703082004102f4120102d2204450d0220042000290000370000200441186a200041186a2207290000370000200441106a200041106a2208290000370000200441086a200041086a22032900003700002004ad4280808080800484100322052900002106200541086a290000210c200541106a290000210d20014180016a41186a2209200541186a29000037030020014180016a41106a220a200d37030020014180016a41086a2202200c37030020012006370380012005102f2004102f41c000102d2204450d0220042001290350370000200420012903083700102004200129038001370020200441086a200141d0006a41086a290300370000200441186a200141086a41086a290300370000200441286a2002290300370000200441306a200a290300370000200441386a20092903003700002004ad428080808080088410052004102f200241093a000020014180016a41096a200029000037000020014191016a200329000037000020014199016a2008290000370000200141a1016a2007290000370000200141123a00800141c8e1ca00410020014180016a108c010b20014180026a24000f0b41b8e3c300411d41f8b4ca001039000b1036000bcab4010d017f017e037f017e0a7f027e027f017e027f017e147f027e0d7f230041b0056b2200240042002101200041b0036a41186a4200370300200041b0036a41106a22024200370300200041b0036a41086a22034200370300200042003703b00341bd98ca00ad42808080808002841001220429000021052003200441086a290000370300200020053703b0032004102f418c91c700ad4280808080a00184100122042900002105200041d0026a41086a2206200441086a290000370300200020053703d0022004102f200220002903d0022205370300200041f8026a41086a2003290300370300200041f8026a41106a2005370300200041f8026a41186a2006290300370300200020002903b0033703f802200041b0036a200041f8026a412010aa020240024020002802b00322070d0041012107410021080c010b20002902b4032201422088a721080b0240024002400240200841ffffff3f712008470d0020084105742203417f4c0d00024002400240024020030d00200720084105746a2104410121092008210a0c010b2003102d2209450d04200720084105746a21042003410576220a20084f0d00200a41017422032008200320084b1b220341ffffff3f712003470d06200341057422034100480d0602400240200a0d002003102d21090c010b2009200a4105742003103121090b2009450d042003410576210a0c010b20080d004100210b0c010b200420076b210c410021030340200920036a2204200720036a2206290000370000200441186a200641186a290000370000200441106a200641106a290000370000200441086a200641086a290000370000200c200341206a2203470d000b200720084105746a20076b41606a41057641016a210b0b200041b0036a41186a22064200370300200041b0036a41106a220c4200370300200041b0036a41086a22034200370300200042003703b00341bd98ca00ad42808080808002841001220429000021052003200441086a290000370300200020053703b0032004102f41ebdec700ad4280808080f00084100122042900002105200041d0026a41086a2208200441086a290000370300200020053703d0022004102f200220002903d002370000200241086a2008290300370000200041f8026a41086a2003290300370300200041f8026a41106a200c290300370300200041f8026a41186a2006290300370300200020002903b0033703f802200041b0036a200041f8026a10e404410021060240024020002902b403420020002802b00322031b2205422088a7220441306c220c0d00410121084100210d0c010b200c41306d220c41ffffff3f71200c470d04200c410574220c4100480d04200c102d2208450d02200c410576210d0b2005a7210e2003410820031b210f02402004450d00200441306c210c4100210620082103200f21040340200441086a2900002105200441106a290000211020042900002111200341186a200441186a290000370000200341106a2010370000200341086a200537000020032011370000200641016a2106200341206a2103200441306a2104200c41506a220c0d000b0b0240200e450d00200f102f0b02402001a722032001422088a7220f6b20064f0d00200f20066a2204200f490d042003410174220c2004200c20044b1b220441ffffff3f712004470d04200441057422044100480d040240024020030d002004102d21070c010b200720034105742004103121070b2007450d022001422088a7210f2004410576ad21010b2007200f4105746a2008200641057410e8061a0240200d450d002008102f0b200041b0036a41186a220c4200370300200041b0036a41106a22084200370300200041b0036a41086a22034200370300200042003703b00341bd98ca00ad42808080808002841001220429000021052003200441086a290000370300200020053703b0032004102f419691c700ad4280808080900184100122042900002105200041d0026a41086a220d200441086a290000370300200020053703d0022004102f200220002903d002370000200241086a200d290300370000200041f8026a41086a2003290300370300200041f8026a41106a2008290300370300200041f8026a41186a200c290300370300200020002903b0033703f802200041b0036a200041f8026a10e404410021080240024020002902b403420020002802b00322031b2205422088a7220441306c220c0d00410121024100210e0c010b200c41306d220c41ffffff3f71200c470d04200c410574220c4100480d04200c102d2202450d02200c410576210e0b2005a721122003410820031b210d02402004450d00200441306c210c4100210820022103200d21040340200441086a2900002105200441106a290000211020042900002111200341186a200441186a290000370000200341106a2010370000200341086a200537000020032011370000200841016a2108200341206a2103200441306a2104200c41506a220c0d000b0b200f20066a211302402012450d00200d102f0b024002402001a7220320136b2008490d00200142ffffffff0f8321140c010b201320086a22042013490d04200341017422062004200620044b1b220441ffffff3f712004470d04200441057422044100480d040240024020030d002004102d21070c010b200720034105742004103121070b2007450d022004410576ad21140b200720134105746a2002200841057410e8061a0240200e450d002002102f0b41bd98ca00ad4280808080800284100122032900002105200041f8026a41086a2206200341086a290000370300200020053703f8022003102f41a185c700ad4280808080d00184100122032900002105200041d0026a41086a2204200341086a290000370300200020053703d0022003102f200041b0036a41086a22032006290300370300200041b0036a41186a22062004290300370300200020002903f8023703b003200020002903d0023703c003200041f8026a200041b0036a108801200041b0036a20002802f802220c20002802800310ad02024020002802fc02450d00200c102f0b200041a8026a41086a20032903002205370300200041a8026a41106a200041b0036a41106a220c2903002210370300200041a8026a41186a20062903002211370300200041a8026a41206a200041b0036a41206a2d000022033a0000200020002903b00322013703a802200041d0026a41206a20033a0000200041d0026a41186a2011370300200041d0026a41106a201037030020042005370300200020013703d002200041b0036a200041d0026a1093040240024020002802d0032206450d00200041f8026a41186a2203200041b0036a41186a290300370300200041f8026a41106a200c290300370300200041f8026a41086a2204200041b0036a41086a290300370300200020002903b0033703f80220002902d4032105412c102d2215450d03201520002903f8023702002015200537022420152006360220201541186a2003290300370200201541106a200041f8026a41106a2206290300370200201541086a2004290300370200200041f8026a41206a200041d0026a41206a2d00003a00002003200041d0026a41186a2903003703002006200041d0026a41106a2903003703002004200041d0026a41086a290300370300200020002903d0023703f802200041b0036a200041f8026a109304024020002802d00322020d004101210c410121160c020b41022106412c21044101210c410121160340200041b0046a41186a200041b0036a41186a2903002205370300200041b0046a41106a200041b0036a41106a2903002210370300200041b0046a41086a200041b0036a41086a2903002211370300200020002903b00322013703b00420002902d4032117200041d0046a41186a220f2005370300200041d0046a41106a220d2010370300200041d0046a41086a220e2011370300200020013703d0040240200c2016470d00200c41016a2203200c490d0720062003200620034b1bad422c7e2205422088a70d072005a722034100480d0702400240200c0d002003102d21150c010b201520042003103121150b2015450d052003412c6e21160b201520046a220320002903d004370200200341186a200f290300370200200341106a200d290300370200200341086a200e290300370200200341246a2017370200200341206a2002360200200641026a21062004412c6a2104200c41016a210c200041b0036a200041f8026a10930420002802d00322020d000c020b0b410421154100210c410021160b200042003702f40420004190bdc6003602f004200c201320086a22046a2218ad42e0007e2205422088a70d002005a72203417f4c0d00410821134108211902402003450d002003102d2219450d02200341e0006e21180b4100210e4100211a024020044105742208450d002008410575ad42d8007e2205422088a70d042005a722034100480d042003102d2213450d02200341d8006e211a0b02402004450d00200841606a211b200041e0036a2104200041d8036a211c2013210241002106200721030340200041a8026a41186a220f200341186a220d290000370300200041a8026a41106a220e200341106a2212290000370300200041a8026a41086a221d200341086a221e290000370300200020032900003703a802200041f8026a41186a200d290000370300200041f8026a41106a2012290000370300200041f8026a41086a201e290000370300200020032900003703f802200041f0046a200041f8026a2006109a02200041b0036a41086a4200370300200041b0036a41106a4200370300200041b0036a41186a4200370300200041b0036a41206a4200370300201c4200370300200441186a200f290300370000200441106a200e290300370000200441086a201d290300370000200420002903a802370000200042003703b0032002200041b0036a41d00010e806220241d0006a41003a0000200241d8006a2102200341206a2103200641016a2106200841606a22080d000b201b41057641016a210e0b02402014500d002007102f0b02402018200c412c6c2203412c6d22044f0d00201841017422062004200620044b1bad42e0007e2205422088a70d042005a722044100480d040240024020180d002004102d21190c010b2019201841e0006c2004103121190b2019450d02200441e0006e21180b201520036a211f024002400240200c0d0041002120201521210c010b200041d0046a41106a211d20152103201921224100212002400340200041b0046a41186a2206200341186a290200370300200041b0046a41106a220c200341106a290200370300200041b0046a41086a2208200341086a290200370300200020032902003703b0042003412c6a212120032802202223450d02200341286a2802002104200341246a2802002124200041a8026a41186a22252006290300370300200041a8026a41106a2226200c290300370300200041a8026a41086a22272008290300370300200020002903b0043703a80220004198026a200041a8026a1093052004ad42c8007e2205422088a70d042005a72203417f4c0d0420004198026a41086a290300211720002903980221140240024020030d0041082107200421120c010b2003102d2207450d06200341c8006e21120b02400240024020040d004100211e0c010b202320044105746a21284100211e2023210d0340200d41086a2900002105200d41106a2900002110200d2900002111200041b0036a41186a221c200d41186a290000370300200041b0036a41106a221b2010370300200041b0036a41086a22292005370300200020113703b003200d41206a210d200041f0046a210320002802f404210202400240034002400240200328020022082f0106220f0d00410021060c010b200f4105742103200841086a2104417f21060340024020030d00200f21060c020b200641016a2106200041b0036a2004412010ea06220c450d03200341606a2103200441206a2104200c417f4a0d000b0b2002450d022002417f6a2102200820064102746a4194036a21030c000b0b200e200820064102746a41e8026a220328020022044d0d032013200441d8006c6a22042903202105200441286a2903002110200041d0046a41186a220c4200370300201d4200370300200041d0046a41086a22044200370300200042003703d00441e7a2ca00ad42808080808001841001220629000021112004200641086a290000370300200020113703d0042006102f41ecb5c600ad4280808080d00184100122062900002111200041a0056a41086a2208200641086a290000370300200020113703a0052006102f201d20002903a005370000201d41086a2008290300370000200041f8026a41086a2004290300370300200041f8026a41106a201d290300370300200041f8026a41186a200c290300370300200020002903d0043703f80220004180026a200041f8026a4120109c01200041f0016a20002903880220004180026a41106a290300427f420010ee06200e200328020022044d0d05200041e0016a2014201720002903f001420020002802800222061b221142012011420156200041f0016a41086a290300420020061b22114200522011501b22061b2011420020061b10ee062013200441d8006c6a220441286a427f2010200520002903e0017c22112005542206ad7c220120062001201054201120055a1b22061b3703002004427f201120061b370320200041d0026a41186a2204201c290300370300200041d0026a41106a2206201b290300370300200041d0026a41086a220c2029290300370300200020002903b0033703d0022003280200210802400240201e2012460d00201e21030c010b201241016a22032012490d0c201241017422022003200220034b1bad42c8007e2205422088a70d0c2005a722024100480d0c0240024020120d002002102d21070c010b2007201241c8006c2002103121070b2007450d0a20122103200241c8006e21120b2007200341c8006c6a2203420037030020032008360220200341186a4200370300200341106a4200370300200341086a4200370300200320002903d0023702242003412c6a200c290300370200200341346a20062903003702002003413c6a2004290300370200201e41016a211e0b200d2028470d000b0b02402024450d002023102f0b20004180056a41186a2206202529030037030020004180056a41106a220c202629030037030020004180056a41086a22082027290300370300200020002903a80237038005200041d0046a41186a22024200370300201d4200370300200041d0046a41086a22034200370300200042003703d00441e7a2ca00ad42808080808001841001220429000021052003200441086a290000370300200020053703d0042004102f41ecb5c600ad4280808080d00184100122042900002105200041a0056a41086a220f200441086a290000370300200020053703a0052004102f201d20002903a005370000201d41086a200f290300370000200041f8026a41086a2003290300370300200041f8026a41106a201d290300370300200041f8026a41186a2002290300370300200020002903d0043703f802200041c8016a200041f8026a4120109c01200041b8016a20002903d001200041c8016a41106a290300427f420010ee06200041a8016a2014201720002903b801420020002802c80122031b220542012005420156200041b8016a41086a290300420020031b22054200522005501b22031b2005420020031b10ee0620224200370308202220002903a80137030020224200370310202241186a4200370300202241286a4200370300202242013703202022201e3602382022201236023420222007360230202220002903800537023c202241c4006a2008290300370200202241cc006a200c290300370200202241d4006a2006290300370200202041016a2120202241e0006a2122202121032021201f470d010c040b0b41c4c2ca002004200e103b000b419cc3ca002004200e103b000b201f2021460d0003402021412c6a21030240202141246a280200450d00202141206a280200102f0b20032121201f2003470d000b0b02402016450d002015102f0b41c007102d221c450d0141f006102d222a450d01410021244114212502400240200e4114200e4114491b22260d004114212b410021150c010b201341a87f6a2123200e41d8006c21212019202041e0006c6a211b41142128200041b0036a41186a211f200041b0036a41106a2107200041b0036a41086a2116410021154100212203400240200e450d00202121042013210303400240200341d0006a2d00000d0002400240200341206a2903002210200341286a29030022118450450d0042002105427f2110427f21110c010b427f210520004198016a427f427f2010201110ee0620004198016a41086a290300211120002903980121100b2003201037030020032011370308200341106a2005370300200341186a20053703000b200341d8006a2103200441a87f6a22040d000b0b2019210c02402020450d00024003400240200c2802382203450d00200341c8006c2106200c28023041206a21030340200e200328020022044d0d0302402013200441d8006c6a22042d00500d0020042903202205200441286a290300221084500d00200041b0036a200c290310200c41186a290300200c290300200c41086a29030020052010109405200420042903002205427f2005427f20002903b80320002802b00341014622081b22117c221020102005542202200441086a220f2903002205427f200729030020081b22017c2002ad7c221020055420102005511b22081b20112001845022021b370300200f2005427f201020081b20021b3703000b200341c8006a2103200641b87f6a22060d000b0b200c41e0006a220c201b460d020c000b0b419cc3ca002004200e103b000b202241016a21222021210320232104201321060340024020030d002028212b0c030b200341a87f6a2103200441d8006a2104200641d0006a210c200641d8006a22082106200c2d00000d000b02402003450d00200441086a2903002105200441186a2903002110200441106a2903002111200429030021014100210603400240200820066a220c41d0006a2d00000d00200c41086a290300221720052001200520112010200c29030022142017200c41106a290300222c200c41186a290300222d10950541ff017141014622021b21052014200120021b2101202d201020021b2110202c201120021b2111200c200420021b21040b2003200641d8006a2206470d000b20040d002028212b0c020b200441013a005002402020450d002004410c6a211d200441306a211e201921060340200641e0006a212902402006280238220c450d0020062802302103200c41c8006c210c034002400240201d2003460d00200341246a201e412010ea060d010b200641186a22082903002101200441086a22022903002105200629031021112004290300211020042903102117200341186a200441186a220f290300370300200341106a2017370300200320054200200520017d2010201154ad7d2217201020117d2214201056201720055620172005511b220d1b20112001845022121b3703082003201042002014200d1b20121b37030020022903002105200f29030021102004290300211120062004290310370320200641286a201037030020062011370310200820053703000b200341c8006a2103200c41b87f6a220c0d000b0b202921062029201b470d000b0b201f200441c8006a2900003703002007200441c0006a2900003703002016200441386a290000370300200020042900303703b003200441286a2903002105200429032021100240024020152028460d002028212b0c010b202841016a22032028490d06202841017422042003200420034b1bad42307e2211422088a70d062011a722034100480d060240024020280d002003102d211c0c010b201c202841306c20031031211c0b201c450d0420282115200341306e222b21280b2016290300211120072903002101201f290300211720002903b0032114201c201541306c6a2203201037032020032014370300200341286a2005370300200341186a2017370300200341106a2001370300200341086a2011370300201541016a211520222026490d000b0b02402020450d002019202041e0006c6a2121201541306c211b41142125200041f8026a41186a2129200041f8026a41106a2128200041f8026a41086a2122410021242019211d03402029201d41d4006a2900003703002028201d41cc006a2900003703002022201d41c4006a2900003703002000201d29003c3703f8020240201d2802382203450d00201d280230220d200341c8006c6a211e201d41106a21074100210e410421124100210f0340200d220241246a2106200241c8006a210d4100210c201b2104201c2103024003402004450d01024020062003460d0020032006412010ea062108200c41016a210c200441506a2104200341306a210320080d010b0b418094ebdc0321030240200720021096050d00410021032002290310201d29032085200241186a290300201d41286a29030085844200520d00200041b0036a428094ebdc0342002002290300200241086a2903002007290300200741086a290300109405427f20002903b80320002802b00341014622031b2205a7417f2005428080808010544100427f200041b0036a41106a29030020031b501b1b21030b200020033602b0032000418094ebdc033602b403200041b0036a2003418094ebdc034b4102746a2802002104200041b0036a41186a22062002413c6a290000370300200041b0036a41106a220c200241346a290000370300200041b0036a41086a22082002412c6a290000370300200020022900243703b00302400240200f200e460d00200f21030c010b200e41016a2203200e490d09200e41017422022003200220034b1bad42247e2205422088a70d092005a722024100480d0902400240200e0d002002102d21120c010b2012200e41246c2002103121120b2012450d07200e2103200241246e210e0b2012200341246c6a220320002903b00337020020082903002105200c29030021102006290300211120032004360220200341186a2011370200200341106a2010370200200341086a2005370200200f41016a210f0b200d201e470d000b024002400240200f450d0002400240200f41246c22060d00410021030c010b201241206a2104410021030340417f200320042802006a220c200c2003491b2103200441246a21042006415c6a22060d000b0b02404100418094ebdc0320036b22032003418094ebdc034b1b2202200f6e2203418094ebdc032003418094ebdc03491b2208450d00201241206a2103410021040340200f2004460d032000417f2003280200220620086a220c200c2006491b22063602b0032000418094ebdc033602b4032003200041b0036a2006418094ebdc034b4102746a280200360200200341246a2103200f200441016a2204470d000b0b024020022008200f6c6b2208450d00410021030340200f2003200f7022044d0d042000417f2012200441246c6a2204280220220641016a220c200c2006491b22063602b0032000418094ebdc033602b4032004200041b0036a2006418094ebdc034b4102746a280200360220200341016a22032008490d000b0b200041b0036a41186a22042029290300370300200041b0036a41106a22062028290300370300200041b0036a41086a220c2022290300370300200020002903f8023703b003024020242025470d00202541016a22032025490d0a202541017422082003200820034b1bad422c7e2205422088a70d0a2005a722034100480d0a0240024020250d002003102d212a0c010b202a2025412c6c20031031212a0b202a450d08202521242003412c6e21250b202a2024412c6c6a220320002903b003370200200c290300210520062903002110200429030021112003200f3602282003200e36022420032012360220200341186a2011370200200341106a2010370200200341086a2005370200202441016a21240c030b200e450d022012102f0c020b41c4c2ca002004200f103b000b41c4c2ca002004200f103b000b201d41e0006a221d2021470d000b0b0240201a450d002013102f0b02402020450d00202041e0006c2104201941306a210303400240200341046a280200450d002003280200102f0b200341e0006a2103200441a07f6a22040d000b0b02402018450d002019102f0b20002802f00420002802f40420002802f80410a30202400240201c0d0041012112200041013a00b403200041093a00b00341c8e1ca004100200041b0036a108c01200041f8026a210c0c010b42002105200041b0036a41186a4200370300200041b0036a41106a222e42003703004108210c200041b0036a41086a22044200370300200042003703b00341bd98ca00ad4280808080800284100122062900002110200041d0026a41086a2203200641086a290000370300200020103703d0022006102f20042003290300370300200020002903d0023703b00341ebdec700ad4280808080f000841001220629000021102003200641086a290000370300200020103703d0022006102f202e20002903d0022210370300200041f8026a41086a2004290300370300200041f8026a41106a2010370300200041f8026a41186a2003290300370300200020002903b0033703f802200041b0036a200041f8026a10e404024020002802b0032203450d00200041f8026aad4280808080800484100520002902b40321052003210c0b41002127024002402005422088a7220341306c22040d004101212f410021300c010b200441306d220441ffffff3f712004470d05200441057422044100480d052004102d222f450d03200441057621300b2005a7210802402003450d00200341306c210641002127202f2103200c21040340200441086a2900002105200441106a290000211020042900002111200341186a200441186a290000370000200341106a2010370000200341086a200537000020032011370000202741016a2127200341206a2103200441306a2104200641506a22060d000b0b02402008450d00200c102f0b42002105200041b0036a41186a22084200370300200041b0036a41106a220242003703004108210c200041b0036a41086a22044200370300200042003703b00341bd98ca00ad4280808080800284100122062900002110200041d0026a41086a2203200641086a290000370300200020103703d0022006102f20042003290300370300200020002903d0023703b003419691c700ad42808080809001841001220629000021102003200641086a290000370300200020103703d0022006102f202e20002903d002370000202e41086a2003290300370000200041f8026a41086a2004290300370300200041f8026a41106a2002290300370300200041f8026a41186a2008290300370300200020002903b0033703f802200041b0036a200041f8026a10e404024020002802b0032203450d00200041f8026aad4280808080800484100520002902b40321052003210c0b41002119024002402005422088a7220341306c22040d0041012131410021320c010b200441306d220441ffffff3f712004470d05200441057422044100480d052004102d2231450d03200441057621320b2005a7210802402003450d00200341306c21064100211920312103200c21040340200441086a2900002105200441106a290000211020042900002111200341186a200441186a290000370000200341106a2010370000200341086a200537000020032011370000201941016a2119200341206a2103200441306a2104200641506a22060d000b0b02402008450d00200c102f0b024002400240201541306c2204450d00201c21030340200341286a2903002105200341206a2903002110200041d0046a41186a200341186a290200370300200041d0046a41106a200341106a290200370300200041d0046a41086a200341086a290200370300200020032902003703d00420102005844200520d02200341306a2103200441506a22040d000b0b410121294100211b0240202b450d00201c102f0b410021280c010b200041a8026a41086a2206200041d0046a41086a290300370300200041a8026a41106a220c200041d0046a41106a290300370300200041a8026a41186a2208200041d0046a41186a290300370300200020002903d004220537038005200020053703a8024120102d2229450d03202920002903a802370000202941186a2008290300370000202941106a200c290300370000202941086a20062903003700000240024020044130470d004101211b410121280c010b200341306a2106201c201541306c6a220841506a21024101211b4101212803402006210302400340200341286a2903002105200341206a2903002110200041d0046a41186a2204200341186a290200370300200041d0046a41106a2206200341106a290200370300200041d0046a41086a220c200341086a290200370300200020032902003703d00420102005844200520d012008200341306a2203470d000c030b0b200041f8026a41086a200c2903002205370300200041f8026a41106a20062903002210370300200041f8026a41186a20042903002211370300200020002903d00422013703f80220004180056a41186a220c201137030020004180056a41106a220f201037030020004180056a41086a220d2005370300200020013703800502402028201b470d00201b41016a2204201b490d08201b41017422062004200620044b1b220441ffffff3f712004470d08200441057422044100480d0802400240201b0d002004102d21290c010b2029201b4105742004103121290b2029450d06200441057621280b200341306a21062029201b4105746a2204200029038005370000200441186a200c290300370000200441106a200f290300370000200441086a200d290300370000201b41016a211b20022003470d000b0b202b450d00201c102f0b200042003702ac0220004190bdc6003602a8020240201b450d00201b4105742104202921030340200041f8026a41186a200341186a290000370300200041f8026a41106a200341106a290000370300200041f8026a41086a200341086a290000370300200020032900003703f802200042003703b803200042003703b003200041003602c803200042083703c003200041d0026a200041a8026a200041f8026a200041b0036a109902024020002802e0022206450d0020002802e402450d002006102f0b200341206a2103200441606a22040d000b0b02402024412c6c2203450d00202a20036a2107200041d0046a41106a211341e7a2ca00ad4280808080800184212c202a210e03400240200e28022841246c2203450d00200e280220221220036a211d034020004188016a200e10930520004188016a41086a29030021102000290388012111200041d0046a41186a2206420037030020134200370300200041d0046a41086a22034200370300200042003703d004202c1001220429000021052003200441086a290000370300200020053703d0042004102f41ecb5c600ad4280808080d00184100122042900002105200041a0056a41086a220c200441086a290000370300200020053703a0052004102f201320002903a005370000201341086a200c290300370000200041f8026a41086a2003290300370300200041f8026a41106a2013290300370300200041f8026a41186a2006290300370300200020002903d0043703f802200041f0006a200041f8026a4120109c01200041e0006a2000290378200041f0006a41106a290300427f420010ee06200041d0006a2011201020002903604200200028027022031b220542012005420156200041e0006a41086a290300420020031b22054200522005501b22031b2005420020031b10ee06200041c0006a20002903502205428094ebdc038022104200201222083502202211420010ed06200041c0006a41086a290300200029034022012011200520104280ec94a37c7e7c7e22052005428094ebdc038022054280ec94a37c7e7c4280cab5ee01562005a76aad7c2205200154ad7c2110200841246a2112200041a8026a210320002802ac02210f02400240034002400240200328020022022f0106220d0d00410021060c010b200d4105742103200241086a2104417f21060340024020030d00200d21060c020b200641016a210620082004412010ea06220c450d03200341606a2103200441206a2104200c417f4a0d000b0b200f450d02200f417f6a210f200220064102746a41c8056a21030c000b0b200041d0026a41186a2208200e41186a290000370300200041d0026a41106a220f200e41106a290000370300200041d0026a41086a220d200e41086a2900003703002000200e2900003703d002200220064105746a220441f8026a210c024020044180036a22062802002203200441fc026a280200470d00200341016a22022003490d0a2003410174221e2002201e20024b1bad42307e2211422088a70d0a2011a722024100480d0a0240024020030d002002102d21030c010b200c280200200341306c2002103121030b2003450d08200c2003360200200c41046a200241306e360200200628020021030b200d2903002111200f29030021012008290300211720002903d0022114200c280200200341306c6a2203200537032020032014370300200341286a2010370300200341186a2017370300200341106a2001370300200341086a20113703002006200628020041016a360200200441e8026a2203427f2003290300221120057c220520052011542204200341086a2203290300220520107c2004ad7c221020055420102005511b22041b3703002003427f201020041b3703000b2012201d470d000b0b200e412c6a220e2007470d000b0b41082133200041f0046a41086a200041a8026a41086a280200360200200020002903a8023703f00402400240201b0d0041002134410021260c010b201b4105742204410575ad42307e2205422088a70d052005a722034100480d052003102d2233450d03202920046a2107200341306e2134200041d0046a41106a21134100212641e7a2ca00ad428080808080018421012033210d2029210e0340200e41086a2900002105200e41106a2900002110200e2900002111200041b0036a41186a2212200e41186a290000370300200041b0036a41106a221d2010370300200041b0036a41086a221e2005370300200020113703b003200e41206a210e200041f0046a210320002802f40421020240034002400240200328020022082f0106220f0d00410021060c010b200f4105742103200841086a2104417f21060340024020030d00200f21060c020b200641016a2106200041b0036a2004412010ea06220c450d03200341606a2103200441206a2104200c417f4a0d000b0b02402002450d002002417f6a2102200820064102746a41c8056a21030c010b0b419bbbc60041da0041f8bbc6001055000b200041d0026a41186a220c2012290300370300200041d0026a41106a2202201d290300370300200041d0026a41086a220f201e290300370300200020002903b0033703d002200820064105746a220341f0026a2903002110200341e8026a2903002111200041d0046a41186a2206420037030020134200370300200041d0046a41086a22034200370300200042003703d00420011001220429000021052003200441086a290000370300200020053703d0042004102f41ecb5c600ad4280808080d00184100122042900002105200041a0056a41086a2208200441086a290000370300200020053703a0052004102f201320002903a005370000201341086a2008290300370000200041f8026a41086a2003290300370300200041f8026a41106a2013290300370300200041f8026a41186a2006290300370300200020002903d0043703f802200041286a200041f8026a4120109c01200041186a2000290330200041286a41106a290300427f420010ee06200041086a20002903184200200028022822031b220542012005420156200041186a41086a290300420020031b22054200522005501b22031b2005420020031b2011201010ed06200d41186a200c290300370300200d41106a2002290300370300200d41086a200f290300370300200d20002903d002370300200d41286a200041086a41086a290300370300200d2000290308370320202641016a2126200d41306a210d200e2007470d000b0b02402028450d002029102f0b410021230240024002402026410d2026410d491b22350d0041082112410021180c010b203541306c2203102d2212450d04024020030d00203521180c010b2033203541306c6a21064100212320122103203321040340200441086a2903002105200441106a2903002110200441186a290300211120042903002101200341286a200441286a290300370300200341206a200441206a290300370300200341186a2011370300200341106a2010370300200341086a200537030020032001370300200341306a2103202341016a21232006200441306a2204470d000b200041b0046a41186a201241186a290000370300200041b0046a41106a201241106a290000370300200041b0046a41086a201241086a290000370300200020122900003703b004024020234115490d0020234101762236ad42307e2205422088a70d042005a72203417f4c0d044108213702402003450d002003102d2237450d06200341306e21360b201241506a2138201241f07e6a21394104211e4100213a410021214100211320232122034020222102410021224101210802402002417f6a2206450d000240024002400240024002402012200641306c6a200241306c220f20126a41a07f6a412010ea064100480d002002417e6a210c2039200f6a2103410021224100210403400240200c2004470d00200221080c080b200441016a2104200341306a2003412010ea062106200341506a21032006417f4a0d000b200441016a21082004417f7320026a21060c010b2039200f6a210302400340024020064101470d00410021060c020b2006417f6a2106200341306a2003412010ea062104200341506a210320044100480d000b0b20022006490d01200220234b0d03200220066b2208410176220c450d002038200f6a21032012200641306c6a21040340200041b0036a41286a220f200441286a220d290300370300200041b0036a41206a220e200441206a221d290300370300200041b0036a41186a2207200441186a221b290300370300200041b0036a41106a2229200441106a2228290300370300200041b0036a41086a2222200441086a2215290300370300200020042903003703b003200341086a22202903002105200341106a221f2903002110200341186a22162903002111200341206a22182903002101200341286a221a290300211720042003290300370300200d2017370300201d2001370300201b20113703002028201037030020152005370300201a200f2903003703002018200e29030037030020162007290300370300201f202929030037030020202022290300370300200320002903b003370300200341506a2103200441306a2104200c417f6a220c0d000b0b024020060d00200621220c050b0240200841094d0d00200621220c050b200220234b0d01200220066b210c2012200641306c6a210f034020022006417f6a2222490d040240200220226b22084102490d002012200641306c6a22032012202241306c6a2206412010ea06417f4a0d002006290300210520062003290300370300200041b0036a41286a2207200641286a2204290300370300200041b0036a41206a221b200641206a220d290300370300200041b0036a41186a2229200641186a220e290300370300200041b0036a41106a2228200641106a221d290300370300200041b0036a41086a2215200641086a22202903003703002020200341086a290300370300201d200341106a290300370300200e200341186a290300370300200d200341206a2903003703002004200341286a290300370300200020053703b0034101211d024020084103490d00200641e0006a200041b0036a412010ea06417f4a0d0041022104200f210302400340200341286a200341d8006a290300370300200341206a200341d0006a290300370300200341186a200341c8006a290300370300200341106a200341c0006a290300370300200341086a200341386a2903003703002003200341306a220d290300370300200c2004460d01200341e0006a210e2004211d200d2103200441016a2104200e200041b0036a412010ea06417f4a0d020c000b0b2004211d0b2006201d41306c6a220320002903b003370300200341286a2007290300370300200341206a201b290300370300200341186a2029290300370300200341106a2028290300370300200341086a20152903003703000b2022450d05200f41506a210f200c41016a210c202221062008410a4f0d050c000b0b20062002104b000b20022006417f6a2222490d010b20022023104a000b20222002104b000b02402013203a470d00203a41016a2203203a490d09203a41017422042003200420034b1b220341ffffffff01712003470d09200341037422034100480d0902400240203a0d002003102d211e0c010b201e203a41037420031031211e0b201e450d072003410376213a202121130b201e20134103746a2203200836020420032022360200202141016a221321210240024020134102490d00024003400240024002400240201e2013417f6a22214103746a2203280200450d002013410374201e6a220c41746a2802002206200328020422044d0d000240201341024b0d0020132121410221132022450d080c090b201e2013417d6a22074103746a2802042203200420066a4d0d010240201341034b0d0020132121410321132022450d080c090b200c41646a280200200320066a4d0d01201321210c060b20134103490d0120032802042104201e2013417d6a22074103746a28020421030b20032004490d010b2013417e6a21070b0240024002400240024002402013200741016a22154b2220450d00201320074b221f450d01201e20074103746a221b2802042216201b2802006a2203201e20154103746a22292802002228490d02200320234b0d032012202841306c6a220e2029280204221d41306c22046a210c200341306c2106200320286b2202201d6b2203201d4f0d042037200c200341306c220410e806220d20046a210802400240201d4101480d00200341014e0d010b200c2103200d21060c060b203820066a2104200c210303402004200341506a220c200841506a22022002200c412010ea06410048220f1b2206290300370300200441286a200641286a290300370300200441206a200641206a290300370300200441186a200641186a290300370300200441106a200641106a290300370300200441086a200641086a29030037030020082002200f1b21080240200e200c2003200f1b2203490d00200d21060c070b200441506a2104200d2106200d2008490d000c060b0b41c4c2ca0020152013103b000b41c4c2ca0020072013103b000b20282003104b000b20032023104a000b2037200e200410e806220d20046a210802400240201d4101480d002002201d4a0d010b200e2103200d21060c010b201220066a210f200d2106200e210303402003200c2006200c2006412010ea0641004822021b2204290300370300200341286a200441286a290300370300200341206a200441206a290300370300200341186a200441186a290300370300200341106a200441106a290300370300200341086a200441086a2903003703002006200641306a20021b2106200341306a2103200c41306a200c20021b220c200f4f0d01200820064b0d000b0b20032006200820066b220420044130706b10e8061a0240201f450d00201b2028360200201b41046a2016201d6a3602002020450d022029202941086a20132015417f736a41037410e9061a20212113202141014d0d030c010b0b419cc3ca0020072013103b000b41b8e3c300411d41f8b4ca001039000b20220d010b0b0240203a450d00201e102f0b4101211b41002129200041b0046a211e02402036450d002037102f0b203521180c020b41002129200041b0046a211e024020234102490d002023417f6a2104202341306c20126a41506a21084101210603400240024002400240202320042203417f6a2204490d00202320046b22024102490d032012200341306c6a22032012200441306c6a220c412010ea06417f4a0d03200c2903002105200c2003290300370300200041b0036a41286a2213200c41286a220f290300370300200041b0036a41206a221d200c41206a220d290300370300200041b0036a41186a2207200c41186a220e290300370300200041b0036a41106a221b200c41106a2228290300370300200041b0036a41086a2222200c41086a22212903003703002021200341086a2903003703002028200341106a290300370300200e200341186a290300370300200d200341206a290300370300200f200341286a290300370300200020053703b0034101210320024103490d02200c41e0006a200041b0036a412010ea06417f4a0d0241002102200821030340200341286a200341d8006a290300370300200341206a200341d0006a290300370300200341186a200341c8006a290300370300200341106a200341c0006a290300370300200341086a200341386a2903003703002003200341306a220d29030037030020062002220f460d02200f417f6a2102200341e0006a210e200d2103200e200041b0036a412010ea06417f4a0d020c000b0b20042023104b000b4102200f6b21030b200c200341306c6a220320002903b003370300200341286a2013290300370300200341206a201d290300370300200341186a2007290300370300200341106a201b290300370300200341086a20222903003703000b200841506a21082006417f6a210620040d000b0b4101211b203521180c010b41012129200041b0046a211e4100211b0b024002402012202341306c6a221620126b22030d004100211a410121150c010b200341306e221a41057422034100480d052003102d2215450d030b0240024020122016470d00410021060c010b2012202341306c6a210c410021062015210320122104034020032004290000370000200341186a200441186a290000370000200341106a200441106a290000370000200341086a200441086a290000370000200641016a2106200341206a2103200c200441306a2204470d000b0b024002402033202641306c6a2033203541306c6a6b22030d0041082108410021370c010b20034100480d052003102d2208450d03200341306e21370b024002402026410d4b0d00410121134100210f20082120410021260c010b203541306c202641306c22036b210c200320336a41506a21034100210f200821040340200341086a2903002105200341106a2903002110200341186a290300211120032903002101200441286a200341286a290300370300200441206a200341206a290300370300200441186a2011370300200441106a2010370300200441086a200537030020042001370300200441306a2104200341506a2103200f41016a210f200c41306a220c0d000b200f41ffffff3f71200f470d05200f41057422034100480d052003102d2213450d0320034105762126200821202008200f41306c6a21080b0240024020202008470d004100210c0c010b4100210c2013210320202104034020032004290000370000200341186a200441186a290000370000200341106a200441106a290000370000200341086a200441086a290000370000200c41016a210c200341206a21032008200441306a2204470d000b0b200041b0036a20152006202f2027109705200041c4036a280200220241ffffff3f712002470d012002410574221d417f4c0d01200041c0036a280200212720002802bc03210d20002802b403213a20002802b00321380240024002400240201d0d00200d20024105746a21084101210e200221070c010b201d102d220e450d05200d20024105746a2108201d410576220720024f0d00200741017422032002200320024b1b220341ffffff3f712003470d07200341057422034100480d070240024020070d002003102d210e0c010b200e200741057420031031210e0b200e450d05200341057621070c010b20020d00410021030c010b200e2103200d2104034020032004290000370000200341186a200441186a290000370000200341106a200441106a290000370000200341086a200441086a290000370000200341206a21032008200441206a2204470d000b200d20024105746a200d6b41606a41057641016a21030b200e20032015200610980502402007450d00200e102f0b200041a8026a41186a2203201e41186a290000370300200041a8026a41106a2204201e41106a290000370300200041a8026a41086a2206201e41086a2900003703002000201e2900003703a80202400240201b0d00200041d0046a41186a4200370300200041d0046a41106a22064200370300200041d0046a41086a22034200370300200042003703d00441f2cbc700ad4280808080b002841001220429000021052003200441086a290000370300200020053703d0042004102f41fbd4c700ad4280808080d00084100122042900002105200041a0056a41086a220e200441086a290000370300200020053703a0052004102f200620002903a0052205370300200041d0026a41086a2003290300370300200041d0026a41106a2005370300200041d0026a41186a200e290300370300200020002903d0043703d002200041d0026aad428080808080048410050c010b200041b0036a41186a2003290300370300200041b0036a41106a2004290300370300200041b0036a41086a2006290300370300200020002903a8023703b003200041f8026a41186a4200370300200041f8026a41106a22064200370300200041f8026a41086a22034200370300200042003703f80241f2cbc700ad4280808080b002841001220429000021052003200441086a290000370300200020053703f8022004102f41fbd4c700ad4280808080d00084100122042900002105200041d0026a41086a220e200441086a290000370300200020053703d0022004102f200620002903d002220537030020004180056a41086a200329030037030020004180056a41106a200537030020004180056a41186a200e290300370300200020002903f802370380054120102d2203450d03200320002903b003370000200341186a200041b0036a41186a290300370000200341106a200041b0036a41106a290300370000200341086a200041b0036a41086a29030037000020004180056aad42808080808004842003ad428080808080048410042003102f0b0240024002400240201d0d004101210e200221210c010b201d102d220e450d05201d410576222120024f0d00202141017422032002200320024b1b220341ffffff3f712003470d07200341057422034100480d070240024020210d002003102d210e0c010b200e202141057420031031210e0b200e450d05200341057621210c010b20020d00410021030c010b2008200d6b2108410021030340200e20036a2204200d20036a2206290000370000200441186a200641186a290000370000200441106a200641106a290000370000200441086a200641086a2900003700002008200341206a2203470d000b200d20024105746a200d6b41606a41057641016a21030b200041b0036a2013200c20312019109705200041c4036a2802002106200041c0036a280200210820002802bc032104024020002802b403450d0020002802b003102f0b02400240202120036b200641057422064105752202490d00200320026a211f0c010b200320026a221f2003490d0520214101742202201f2002201f4b1b220241ffffff3f712002470d05200241057422024100480d050240024020210d002002102d210e0c010b200e202141057420021031210e0b200e450d03200241057621210b200e20034105746a2004200610e8061a02402008450d002004102f0b0240200b450d002009200b4105746a211d200041b9036a211e02402029450d00200c410574211b200041e8036a21292009210c0340200c41086a2900002105200c41106a2900002110200c2900002111200041d0026a41186a2208200c41186a290000370300200041d0026a41106a22022010370300200041d0026a41086a22072005370300200020113703d002200c41206a210c201b2104201321030240024003402004450d01200041d0026a2003460d02200441606a21042003200041d0026a412010ea062106200341206a210320060d000c020b0b200042003703b00220004280809aa6eaafe3013703a8022000200041d0026a36028005200041f8026a200041d0026a200041a8026a20004180056a10bd01200041f8026a41206a29030021052000290390032110024020002903f8024201520d0020002903800321112029200041f8026a41106a290300370300201e20002903d002370000201e41086a2007290300370000201e41106a2002290300370000201e41186a2008290300370000200020113703e003200041003a00b803200041033a00b00341c8e1ca004100200041b0036a108c010b20102005109a010b200c201d470d000c020b0b200c410574212820234101462122200041e8036a2119200921020340200241086a2900002105200241106a290000211020022900002111200041d0026a41186a2207200241186a290000370300200041d0026a41106a221b2010370300200041d0026a41086a22292005370300200020113703d00241002104024020220d0041002104202321060340200041b0036a41186a20122006410176220c20046a220841306c6a220341186a290000370300200041b0036a41106a200341106a290000370300200041b0036a41086a200341086a290000370300200020032900003703b00320082004200041b0036a200041d0026a412010ea064101481b21042006200c6b220641014b0d000b0b200241206a2102200041b0036a41186a2012200441306c6a220341186a290000370300200041b0036a41106a200341106a290000370300200041b0036a41086a200341086a290000370300200020032900003703b00320282104201321030240200041b0036a200041d0026a412010ea06450d00024003402004450d01200041d0026a2003460d02200441606a21042003200041d0026a412010ea062106200341206a210320060d000c020b0b200042003703b00220004280809aa6eaafe3013703a8022000200041d0026a36028005200041f8026a200041d0026a200041a8026a20004180056a10bd01200041f8026a41206a29030021052000290390032110024020002903f8024201520d0020002903800321112019200041f8026a41106a290300370300201e20002903d002370000201e41086a2029290300370000201e41106a201b290300370000201e41186a2007290300370000200020113703e003200041003a00b803200041033a00b00341c8e1ca004100200041b0036a108c010b20102005109a010b2002201d470d000b0b0240200a450d002009102f0b0240201f450d00201f4105742104200041b9036a2106200041e8036a211d200e21030340200341086a2900002105200341106a290000211020032900002111200041d0026a41186a220c200341186a290000370300200041d0026a41106a22082010370300200041d0026a41086a22022005370300200020113703d002200042003703b00220004280809aa6eaafe3013703a8022000200041d0026a36028005200041f8026a200041d0026a200041a8026a20004180056a10bd01200041f8026a41206a29030021052000290390032110024020002903f8024201520d002000290380032111201d200041f8026a41106a290300370300200620002903d002370000200641086a2002290300370000200641106a2008290300370000200641186a200c290300370000200020113703e003200041003a00b803200041033a00b00341c8e1ca004100200041b0036a108c010b200341206a210320102005109a01200441606a22040d000b0b02402021450d00200e102f0b200041b0036a41186a22064200370300200041b0036a41106a220c4200370300200041b0036a41086a22044200370300200042003703b00341bd98ca00ad42808080808002842205100122082900002110200041d0026a41086a2203200841086a290000370300200020103703d0022008102f20042003290300370300200020002903d0023703b00341ebdec700ad4280808080f000841001220829000021102003200841086a290000370300200020103703d0022008102f202e20002903d002370000202e41086a22022003290300370000200041f8026a41086a220e2004290300370300200041f8026a41106a221d200c290300370300200041f8026a41186a221e2006290300370300200020002903b0033703f802200041203602b4032000200041f8026a3602b00320122023200041b0036a10ab0120064200370300200c420037030020044200370300200042003703b00320051001220829000021052003200841086a290000370300200020053703d0022008102f20042003290300370300200020002903d0023703b003419691c700ad42808080809001841001220829000021052003200841086a290000370300200020053703d0022008102f202e20002903d00237000020022003290300370000200e2004290300370300201d200c290300370300201e2006290300370300200020002903b0033703f802200041203602b4032000200041f8026a3602b0032020200f200041b0036a10ab012023ad42307e2205422088a70d012005a72203417f4c0d010240024020030d00410821022023210e0c010b2003102d2202450d03200341306e220e20234f0d00200e41017422032023200320234b1bad42307e2205422088a70d052005a722034100480d0502400240200e0d002003102d21020c010b2002200e41306c2003103121020b2002450d03200341306e210e0b0240024020162012470d00410021060c010b2012202341306c6a210c4100210620022103201221040340200441086a2903002105200441106a2903002110200441186a290300211120042903002101200341286a200441286a290300370300200341206a200441206a290300370300200341186a2011370300200341106a2010370300200341086a200537030020032001370300200341306a2103200641016a2106200c200441306a2204470d000b0b2006ad42307e2205422088a70d012005a72203417f4c0d010240024020030d002002200641306c6a21084108210f0c010b2003102d220f450d032002200641306c6a21080240200341306e22032006490d00200321060c010b200341017422042006200420064b1bad42307e2205422088a70d052005a722044100480d050240024020030d002004102d210f0c010b200f200341306c20041031210f0b200f450d03200441306e21060b4100210c024020082002460d004100210c200f2103200221040340200441086a2903002105200441106a2903002110200441186a290300211120042903002101200341286a200441286a290300370300200341206a200441206a290300370300200341186a2011370300200341106a2010370300200341086a200537030020032001370300200341306a2103200c41016a210c2008200441306a2204470d000b0b200041c0036a200c360200200041bc036a2006360200200041b8036a200f360200200041003a00b403200041093a00b003200020002f00f8023b00b5032000200041fa026a2d00003a00b70341c8e1ca004100200041b0036a108c010240200e450d002002102f0b02402027450d00200d102f0b0240203a450d002038102f0b02402026450d002013102f0b02402037450d002020102f0b0240201a450d002015102f0b02402018450d002012102f0b02402034450d002033102f0b20002802f804210820002802f00421030240024020002802f40422060d00200321040c010b2006210c20032104034020042802c8052104200c417f6a220c0d000b0340200320032f01064102746a41c8056a28020021032006417f6a22060d000b0b200041cc036a20032f0106360200200041c8036a4100360200200041c4036a2003360200200020083602d003200041003602c003200042003703b803200020043602b403200041003602b003200041b0036a10a20202402032450d002031102f0b02402030450d00202f102f0b02402024450d002024412c6c2104202a41206a210303400240200341046a280200450d002003280200102f0b2003412c6a2103200441546a22040d000b0b41002112200041f8026a210c2025450d00202a102f0b200041b0036a41186a22084200370300200041b0036a41106a22064200370300200041b0036a41086a22044200370300200042003703b00341bd98ca00ad42808080808002842205100122022900002110200041d0026a41086a2203200241086a290000370300200020103703d0022002102f20042003290300370300200020002903d0023703b003418c91c700ad4280808080a001841001220229000021102003200241086a290000370300200020103703d0022002102f200620002903d0022210370300200041f8026a41086a22022004290300370300200041f8026a41106a220f2010370300200041f8026a41186a220d2003290300370300200020002903b0033703f802200cad42808080808004841005200842003703002006420037030020044200370300200042003703b00320051001220e29000021102003200e41086a290000370300200020103703d002200e102f20042003290300370300200020002903d0023703b00341cd98ca00ad4280808080e0018422101001220e29000021112003200e41086a290000370300200020113703d002200e102f200620002903d002221137030020022004290300370300200f2011370300200d2003290300370300200020002903b0033703f8022000200c41201095012000280200210e20002802042113200842003703002006420037030020044200370300200042003703b00320051001220c29000021052003200c41086a290000370300200020053703d002200c102f20042003290300370300200020002903d0023703b00320101001220c29000021052003200c41086a290000370300200020053703d002200c102f200620002903d002220537030020022004290300370300200f2005370300200d2003290300370300200020002903b0033703f8022000201341016a4101200e1b3602b003200041f8026aad4280808080800484200041b0036aad4280808080c00084100402400240201c0d00200a450d042012410173450d010c040b2012450d030240202b450d00201c102f0b02402024450d002024412c6c2104202a41206a210303400240200341046a280200450d002003280200102f0b2003412c6a2103200441546a22040d000b0b02402025450d00202a102f0b200a450d030b2009102f0c020b103d000b1036000b200041b0056a24000f0b1038000bae0504067f017e067f027e230041e0006b22022400200241c00036020c20022001360208200241106a2001ad4280808080800884100210730240024002400240024020022802102203450d00200228021421042002200241186a280200360224200220033602202002200241206a10e6010240024020022802000d00200228020422052002280224220641186e2201200120054b1b2207ad42187e2208422088a70d042008a72201417f4c0d040240024020010d00410821090c010b2001102d2209450d06200141186e21070b024002402005450d004100210a4100210b4100210c034020064104490d0220022006417c6a220636022420022002280220220141046a36022020064110490d02200c41016a210d2001280000210e2002200641706a22063602242002200141146a3602202001410c6a29000021082001290004210f0240200c2007470d00200a200d200a200d4b1bad42187e2210422088a70d0a2010a722014100480d0a02400240200c0d002001102d21090c010b2009200b2001103121090b2009450d09200141186e21070b2009200b6a2201200e360200200141106a2008370300200141086a200f370300200a41026a210a200b41186a210b200d210c2005200d470d000b0b2009450d012000200736020420002009360200200041086a20053602000c020b2007450d002009102f0b20024100360230200242013703282002410b36023c2002200241086a3602382002200241286a360244200241dc006a41013602002002420137024c200241b885c7003602482002200241386a360258200241c4006a41d8dbc100200241c8006a103c1a200235023042208620023502288410080240200228022c450d002002280228102f0b200041003602000b2004450d012003102f0c010b200041003602000b200241e0006a24000f0b103d000b1036000b1038000bed0302067f027e230041106b22032400024002400240200141186c4104722204417f4c0d002004102d2205450d0120034100360208200320043602042003200536020020012003106902400240200141186c22010d002003280208210120032802042105200328020021040c010b200020016a2106200328020421052003280208210103402000280200210702400240200520016b4104490d00200328020021040c010b200141046a22042001490d05200541017422082004200820044b1b22084100480d050240024020050d002008102d21040c010b200328020020052008103121040b2004450d042003200836020420032004360200200821050b2003200141046a2208360208200420016a2007360000200041106a2903002109200041086a290300210a02400240200520086b4110490d00200141146a21010c010b200841106a22012008490d05200541017422072001200720014b1b22074100480d050240024020050d002007102d21040c010b200420052007103121040b2004450d042003200736020420032004360200200721050b200420086a220820093700082008200a37000020032001360208200041186a22002006470d000b0b20022902002001ad4220862004ad84100402402005450d002004102f0b200341106a24000f0b103d000b1036000b1038000b130020004103360204200041ccdcc4003602000b3400200041a4e3c40036020420004100360200200041146a4101360200200041106a41a8e3c400360200200041086a42043702000b910101057f230041206b22022400200241186a22034200370300200241106a22044200370300200241086a220542003703002002420037030002404120102d22060d001036000b20062002290300370000200042a0808080800437020420002006360200200641186a2003290300370000200641106a2004290300370000200641086a2005290300370000200241206a24000b13002000410c360204200041c0e4c4003602000b3400200041c6b5c40036020420004100360200200041146a4110360200200041106a41bcc0c500360200200041086a42073702000b130020004106360204200041f4d5c5003602000b2e01017f02404104102d22020d001036000b20004284808080c0003702042000200236020020024180ee053600000b3b01017f02404110102d22020d001036000b20024200370008200242808094f6c2d7e8d800370000200042908080808002370204200020023602000b2c01017f02404104102d22020d001036000b20004284808080c000370204200020023602002002410a3600000b3901017f02404110102d22020d001036000b200242003700082002428080d287e2bc2d370000200042908080808002370204200020023602000bcc0502077f067e230041f0006b2102024002400240024020012802042203450d00200128020022042d0000210520012003417f6a22063602042001200441016a360200200541014b0d0320050e020102010b200041023a00000f0b024020064110490d00200041003a000020002002280028360001200041086a2004290001370300200041186a2002290348370300200041106a200441096a29000037030020012003416f6a3602042001200441116a360200200041046a2002412b6a280000360000200041206a200241c8006a41086a290300370300200041286a200241c8006a41106a290300370300200041306a200241c8006a41186a2903003703000f0b200041023a00000f0b41002105200241003a00682003417f6a2107417e210602400240034020072005460d01200241c8006a20056a200420056a220841016a2d00003a00002001200320066a3602042001200841026a3602002002200541016a22083a00682006417f6a21062008210520084120470d000b200241286a41186a2205200241c8006a41186a290300370300200241286a41106a2206200241c8006a41106a290300370300200241286a41086a2207200241c8006a41086a290300370300200220022903483703282008417f7320036a4110490d01200241086a41086a20072903002209370300200241086a41106a2006290300220a370300200241086a41186a2005290300220b370300200420086a220541016a290000210c200541096a290000210d2001200320086b416f6a3602042001200541116a36020020022002290328220e370308200041013a00002000200e370001200041096a2009370000200041116a200a370000200041196a200b370000200041306a200d370300200041286a200c370300200041216a2002280001360000200041246a200241046a2800003600000f0b200541ff0171450d00200241003a00680b200041023a00000f0b200041023a00000b130020004108360204200041c4dec5003602000b340020004180a3ca0036020420004100360200200041146a4105360200200041106a4190ffc500360200200041086a42083702000b130020004108360204200041c088c6003602000b2b01017f02404101102d22020d001036000b200042818080801037020420002002360200200241143a00000b2e01017f02404104102d22020d001036000b20004284808080c0003702042000200236020020024180e1013600000b2e01017f02404104102d22020d001036000b20004284808080c00037020420002002360200200241a0c21e3600000b2e01017f02404104102d22020d001036000b20004284808080c00037020420002002360200200241d086033600000bd30101017f230041106b22022400024002400240024020002d00000e03010200010b2002200128021841c7afca00410b2001411c6a28020028020c11000022003a000820022001360200200241003a0009200241003602040c020b2002200128021841d2afca00410c2001411c6a28020028020c11000022003a000820022001360200200241003a0009200241003602040c010b2002200128021841deafca00410d2001411c6a28020028020c11000022003a000820022001360200200241003a0009200241003602040b200241106a240020000ba3cb01040a7f027e0d7f027e2300418081046b220224000240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002402001280204220320012802082204460d00200441016a22052004490d0720032005490d06200128020020046a2d00002104200120053602082004410c4b0d0220040e0d010319181716151409100f0e08010b200241013a0030200241ec006a41013602002002420137025c200241b4afca003602582002412836021c2002200241186a3602682002200241306a360218200241e880046a200241d8006a103a20022802e88004210420022802ec8004210120004101360200200041003a00042001450d312004102f0c310b200241d8006a2001109d0641012106200228025c210720022802584101460d08200241d8006a41004180800110e7061a41002108410021052007450d2341012106410021084100210341002109024003402001280204220a200128020822056b200720096b220441808001200441808001491b2204490d01200520046a220b2005490d05200a200b490d04200241d8006a200128020020056a200410e8061a2001200b36020802400240200820036b2004490d00200420036a21050c010b200320046a22052003490d272008410174220b2005200b20054b1b220b4100480d270240024020080d00200b102d21060c010b20062008200b103121060b2006450d30200b21080b200620036a200241d8006a200410e8061a200521032007200420096a22094b0d000c250b0b200241013a00d88004200241fc80046a4101360200200242013702ec8004200241b4afca003602e880042002412836021c2002200241186a3602f880042002200241d880046a360218200241306a200241e880046a103a2002290330210c2002280238210441052107024020080d000c2d0b2006102f0c2c0b200041123a000420004101360200200041056a20043a00000c2f0b200241d8006a200110a306024020022802584101470d00200228025c22044108762105200241d8006a41086a290300220c422088210d200241e8006a28020021030c210b200241ec006a280200210a200241e8006a2802002101200241e4006a2802002103200241e0006a280200210b200228025c2108410021044100210502400240024002400240034002402004411f4d0d00410f21040c030b20032001460d012001417f460d052003200141016a2207490d04200820016a2d0000220941ff00712004411f71742005722105200441076a2104200721012009418001710d000b024020044120490d00410d21042009410f4b0d020b200241003602382002420437033020050d02410421010c230b200241013a0030200241ec006a41013602002002420137025c200241b4afca003602582002412836021c2002200241186a3602682002200241306a360218200241206a200241d8006a103a410521040b200241e880046a41086a200241206a41086a280200220336020020022002290320220c3703e88004200c422088a72107200ca721090c220b410120036b21064100210e0240034002400240024002400240024002400240024020032007460d00200741016a22012007490d0120032001490d020240200820076a2d0000220f41e000460d00411821100c2b0b200e41016a210e200741026a21014100210441002109024002400240034002402004411f4d0d00410f21104100210f0c2e0b200620016a4102460d012001450d0720032001490d0b200820016a417f6a2d0000220741ff00712004411f71742009722109200141016a2101200441076a21042007418001710d000b024020044120490d002007410f4d0d00410d21104100210f0c2d0b2001417f6a2104410021114101211220090d01410021130c020b200241013a00482002410136026c2002420137025c200241b4afca003602582002412836021c2002200241186a3602682002200241c8006a360218200241e880046a200241d8006a103a20022802e88004210920022802ec8004210720022802f080042101410521104100210f0c2b0b410021144100210741002113034020032004460d28200120076a220f450d062003200f490d070240200820046a2c0000220f41004e0d00411921100c2b0b41062110200f41c00071450d29200f41807f72220f41ff017141fc01490d29200741016a2110024020072013470d0020142010201420104b1b22134100480d320240024020070d002013102d21120c010b201220072013103121120b2012450d3b0b200441016a2104201220076a200f417f733a0000201441026a21142010210720092010470d000b0b20124110764110742215201241087641ff0171410874221672201241ff017122127221144100210103404100210f02402011411f4d0d00410f21100c270b0240024020032004460d002004417f460d092003200441016a22074f0d01200441016a2003104a000b200241013a00d880042002410136026c2002420137025c200241b4afca003602582002412836021c2002200241186a3602682002200241d880046a360218200241e880046a200241d8006a103a20022802e88004210920022802ec8004210720022d00f08004210120022d00f18004210320022f01f280042104410521100c270b200820046a2d0000221041ff00712011411f71742001722101201141076a2111200721042010418001710d000b20114120490d082010410f4d0d08410d21100c250b200241013a00d880042002410136026c2002420137025c200241b4afca003602582002412836021c2002200241186a3602682002200241d880046a360218200241e880046a200241d8006a103a20022802e88004210920022802ec8004210720022d00f08004210120022d00f18004210320022f01f280042104410521100c290b417f2001104b000b20012003104a000b417f2001104b000b417f200f104b000b200f2003104a000b417f200441016a104b000b20012003104a000b0240200141014d0d004104211041be8eca002109412421070c1c0b024002400240024020010e020100010b0240024020032007460d00200741016a22012007490d0420032001490d06200820076a2c0000220f41004e0d01411921100c210b200241013a00d880042002410136026c2002420137025c200241b4afca003602582002412836021c2002200241186a3602682002200241d880046a360218200241e880046a200241d8006a103a20022802e88004210920022802ec8004210720022d00f08004210120022d00f18004210320022f01f280042104410521100c1f0b41062110200f41c00071450d1d200f41807f72220f41ff017141fb014d0d1d200f417f732111200121070c010b410421110b0240200228023822042002280234470d00200441016a22012004490d282004410174220f2001200f20014b1b220141ffffffff00712001470d28200141047422014100480d280240024020040d002001102d210f0c010b2002280230200441047420011031210f0b200f450d312002200f360230200220014104763602340b2002280230220120044104746a220f20174180807c71201141ff01714108747241e00072221736020c200f2009360208200f2013360204200f20162012722015723602002002200441016a360238200e2005460d230c010b0b417f200741016a104b000b200741016a2003104a000b200141016a2003104a000b417f200141016a104b000b200b200a104a000b2005200b104b000b20052003104a000b417f2005104b000b200241d8006a200110a306024020022802584101470d00200041013602002000200241d8006a41047222012902003702042000410c6a200141086a2902003702000c2a0b200241ec006a2802002106200241e8006a2802002104200241e4006a2802002105200241e0006a280200210b200228025c2108410021034100210102400240034002402003411f4d0d00410f21040c070b20052004460d052004417f460d012005200441016a2209490d02200820046a2d0000220741ff00712003411f71742001722101200341076a2103200921042007418001710d000b20034120490d06410d21042007410f4d0d060c050b417f200441016a104b000b200441016a2005104a000b200241d8006a200110a306024020022802584101470d00200041013602002000200241d8006a41047222012902003702042000410c6a200141086a2902003702000c290b200241ec006a2802002106200241e8006a2802002104200241e4006a2802002105200241e0006a280200210b200228025c2108410021034100210102400240034002402003411f4d0d00410f21040c0c0b20052004460d0a2004417f460d012005200441016a2209490d02200820046a2d0000220741ff00712003411f71742001722101200341076a2103200921042007418001710d000b20034120490d0b410d21042007410f4d0d0b0c0a0b417f200441016a104b000b200441016a2005104a000b20074108762101200241e8006a2802002104200241d8006a41086a290300210c0c230b200241013a0030200241ec006a41013602002002420137025c200241b4afca003602582002412836021c2002200241186a3602682002200241306a360218200241e880046a200241d8006a103a410521040b2000200436020420004101360200200041086a20022903e88004370200200041106a200241e880046a41086a280200360200200b450d252008102f0c250b200620094621040240200b450d002008102f0b02402004450d00410b21030c200b20024103410220041b3a00d88004200241ec006a41013602002002420137025c200241b4afca003602582002412836021c2002200241186a3602682002200241d880046a360218200241306a200241d8006a103a200241f380046a200241386a280200360000200220022903303700eb8004200041053a0004200020022900e880043700052000410c6a200241ef80046a290000370000200041013602000c240b200241d8006a200110a3060240024020022802584101470d00200228025c22014108762109200241d8006a41086a290300220c422088210d200241e8006a28020021080c010b200241c0006a200241ec006a280200360200200241386a200241e4006a2902003703002002200229025c370330410021014100210502400240024002400240024002400240034002402001411f4d0d00410f21060c030b20022802382207200228023c2204460d01200441016a22032004490d0620072003490d05200228023020046a2d000021042002200336023c200441ff00712001411f71742005722105200141076a21012004418001710d000b024020014120490d00410d21062004410f4b0d020b200241003602502002420437034820050d02410421010c030b200241013a00d88004200241ec006a41013602002002420137025c200241b4afca003602582002412836021c2002200241186a3602682002200241d880046a360218200241206a200241d8006a103a410521060b200241e880046a41086a200241206a41086a280200220836020020022002290320220c3703e88004200c422088a7210a200ca7210f410021090c040b410021060340200641016a21064100210141002107024002400240024002400240024002400240024002400240034002402001411f4d0d00410f21060c030b20022802382209200228023c2204460d01200441016a22032004490d0420092003490d06200228023020046a2d000021042002200336023c200441ff00712001411f71742007722107200141076a21012004418001710d000b20014120490d022004410f4d0d02410d21060c010b200241013a00202002410136026c2002420137025c200241b4afca003602582002412836021c2002200241186a3602682002200241206a360218200241e880046a200241d8006a103a200241d880046a41086a200241e880046a41086a280200360200200220022903e88004220c3703d88004200ca7210f410521060b20022802e08004210820022802dc8004210a410021090c080b200241d8006a200241306a109506024020022802584101470d00200228025c22064108762109200228026821082002280264210a2002280260210f0c080b200228026421142002280260210e200228025c21124100210441002108034002402004411f4d0d00410f21060c080b20022802382209200228023c2203460d05200341016a22012003490d0220092001490d042002280230220b20036a2d000021032002200136023c200341ff00712004411f71742008722108200441076a21042003418001710d000b20044120490d052003410f4d0d05410d21060c060b417f2003104b000b417f2001104b000b20032009104a000b20012009104a000b200241013a00d880042002410136026c2002420137025c200241b4afca003602582002412836021c2002200241186a3602682002200241d880046a360218200241e880046a200241d8006a103a20022802e88004210f20022802ec8004210a20022802f080042108410521060c010b41002111200241d8006a41004180800410e7061a024020080d00410121104100210f0c030b4100211141012110410021034100210a0240024002400340200920016b2008200a6b220441808004200441808004491b2204490d01200120046a220f2001490d022009200f490d03200241d8006a200b20016a200410e8061a2002200f36023c02400240201120036b2004490d00200420036a210f0c010b200320046a220f2003490d2620114101742201200f2001200f4b1b22014100480d260240024020110d002001102d21100c010b201020112001103121100b2010450d2f200121110b201020036a200241d8006a200410e8061a20082004200a6a220a4d0d06200228023c2101200228023821092002280230210b200f21030c000b0b200241013a0020200241013602fc8004200242013702ec8004200241b4afca003602e880042002412836021c2002200241186a3602f880042002200241206a360218200241d880046a200241e880046a103a20022802d88004210f20022802dc8004210a20022802e080042108410521062011450d022010102f0c020b2001200f104b000b200f2009104a000b02402014450d0020144104742104201221010340024020012d00004109470d000240200141046a2205280200220328020441ffffffff0371450d002003280200102f200528020021030b2003102f0b200141106a2101200441706a22040d000b0b41002109200e450d002012102f0b20022802482111024020022802502201450d0020112001411c6c6a210b201121070340024020072802042201450d0002402007410c6a2802002204450d00200441047421040340024020012d00004109470d000240200141046a2205280200220328020441ffffffff0371450d002003280200102f200528020021030b2003102f0b200141106a2101200441706a22040d000b0b200741086a280200450d002007280204102f0b2007411c6a21010240200741146a280200450d002007280210102f0b200121072001200b470d000b0b200228024c450d052011102f0c050b024020022802502203200228024c470d00200341016a22012003490d1f200341017422042001200420014b1bad421c7e220c422088a70d1f200ca722014100480d1f0240024020030d002001102d21040c010b20022802482003411c6c2001103121040b2004450d282002200436024820022001411c6e36024c0b200228024822012003411c6c6a2204200741087622093b00012004201036021020042012360204200420073a0000200441036a20094110763a0000200441186a200f360200200441146a20113602002004410c6a2014360200200441086a200e3602002002200341016a36025020062005470d000b0b200228023c2002280240462104200229024c220c422088210d02402002280234450d002002280230102f0b20014108762105200da72103200ca7210b2004450d032005410874200141ff01717221012003ad422086200bad84210c410d21030c230b20032007104a000b417f2003104b000b2009410874200641ff0171722101200aad220d422086200fad84210c2002280234450d012002280230102f0c010b2005410874200141ff017172210620024103410220041b3a00d88004200241d8006a41146a41013602002002420137025c200241b4afca003602582002412836021c2002200241186a3602682002200241d880046a360218200241e880046a200241d8006a103a20022903e88004210c20022802f08004210802402003450d0020062003411c6c6a2109200621070340024020072802042201450d0002402007410c6a2802002204450d00200441047421040340024020012d00004109470d000240200141046a2205280200220328020441ffffffff0371450d002003280200102f200528020021030b2003102f0b200141106a2101200441706a22040d000b0b200741086a280200450d002007280204102f0b2007411c6a21010240200741146a280200450d002007280210102f0b2001210720012009470d000b0b200c422088210d4105210141002109200b450d002006102f0b20004101360200200041106a2008360200200041086a200d422086200c42ffffffff0f838437020020002009410874200141ff0171723602040c230b200241d8006a200110a3060240024020022802584101470d00200228025c220b4108762104200241d8006a41086a290300220c422088210d200241e8006a28020021060c010b200241ec006a2802002111200241e8006a2802002101200241e4006a2802002105200241e0006a280200210a200228025c2108410021044100210702400240024002400240024002400240024002400240024002400240034002402004411f4d0d00410f210b0c030b20052001460d012001417f460d062005200141016a2203490d05200820016a2d0000220941ff00712004411f71742007722107200441076a2104200321012009418001710d000b024020044120490d00410d210b2009410f4b0d020b200241003602502002420437034820070d02410421010c030b200241013a00d88004200241ec006a41013602002002420137025c200241b4afca003602582002412836021c2002200241186a3602682002200241d880046a360218200241e880046a200241d8006a103a4105210b0b200241306a41086a200241e880046a41086a2802002206360200200220022903e88004220c370330200c422088a7210f200ca721110c0a0b200241e1006a21134100210e0340200e41016a210e4100210141002109024002400240024002400240024002400240024002400240024002400240024002400240034002402001411f4d0d00410f210b0c030b20052003460d012003417f460d052005200341016a2204490d0c200820036a2d0000220b41ff00712001411f71742009722109200141076a210120042103200b418001710d000b024020014120490d00200b410f4d0d00410d210b0c020b4100210f200241d8006a41004180800110e7061a20090d024101211020042103410021124100210b0c030b200241013a00e880042002410136026c2002420137025c200241b4afca003602582002412836021c2002200241186a3602682002200241e880046a360218200241206a200241d8006a103a4105210b200228022021110b200228022821062002280224210f0c190b410021124101211041002106410021140340200520046b200920146b220141808001200141808001491b2201490d18200420016a22032004490d0320052003490d04200241d8006a200820046a200110e8061a02400240201220066b2001490d00200120066a210b0c010b200620016a220b2006490d3420124101742204200b2004200b4b1b22044100480d340240024020120d002004102d21100c010b201020122004103121100b2010450d3d200421120b201020066a200241d8006a200110e8061a20032104200b21062009200120146a22144b0d000b0b2002200b3602402002410036023c2002200b3602382002201236023420022010360230410021014100210602400240024002400240034002402001411f4d0d00410f210b0c030b200b200f460d01200f417f460d09200b200f41016a2209490d0e2010200f6a2d000021042002200936023c200441ff00712001411f71742006722106200141076a21012009210f2004418001710d000b024020014120490d002004410f4d0d00410d210b0c020b4100210f200241003602e08004200242043703d8800420060d024104211841002119410021150c030b200241013a00202002410136026c2002420137025c200241b4afca003602582002412836021c2002200241186a3602682002200241206a360218200241e880046a200241d8006a103a20022802e88004211120022802ec8004210f20022802f0800421064105210b0b200220063602e080042002200f3602dc8004200220113602d880040c180b4100211941042118410021150340201921162015221a41016a211541002101410021100240024002400240034002402001411f4d0d00410f21040c030b20022802382214200228023c2204460d01200441016a22092004490d0c20142009490d112002280230221220046a2d0000210b2002200936023c200b41ff00712001411f71742010722110200141076a2101200b418001710d000b024020014120490d00200b410f4d0d00410d21040c020b20142009460d06200441026a21042009417f460d0c20142004490d0d201220096a2c000021012002200436023c0240200141004e0d00411921040c130b41062104200141c00071450d11200141807f72220141ff017141fb014d0d11201a2016460d0220162119201a21160c030b200241013a00e880042002410136026c2002420137025c200241b4afca003602582002412836021c2002200241186a3602682002200241e880046a360218200241206a200241d8006a103a41052104200228022021110b200228022821062002280224210f410021010c100b201641016a22042016490d35201641017422092004200920044b1b220441ffffffff01712004470d35200441037422044100480d350240024020160d002004102d21180c010b201820164103742004103121180b2018450d3e200220183602d88004200441037621190b201820164103746a2204201741807e712001417f7341ff01717222173a00042004201036020020152006470d000b200220193602dc8004200220153602e080040b201820154103746a210b201821010340200b2001460d0f200f20012802006a2204200f492109200141086a21012004210f20090d0e0c000b0b200241013a00202002410136026c2002420137025c200241b4afca003602582002412836021c2002200241186a3602682002200241206a360218200241e880046a200241d8006a103a20022802e88004211120022802ec8004210f20022802f080042106410521040c0b0b417f200341016a104b000b20042003104b000b20032005104a000b417f200f41016a104b000b417f2009104b000b417f2004104b000b20042014104a000b200341016a2005104a000b200f41016a200b104a000b20092014104a000b0b200220163602dc80042002201a3602e08004200141ff0171410874200472210b2016450d090c080b20022802f08004210620022802ec8004210f411c210b0c060b4101210b4100210441082110410021090340200241d8006a200241306a109606024020022802584101470d00200228026821062002280264210f20022802602111200228025c210b0c060b200241e880046a41026a2201201341026a2d00003a0000200220132f00003b01e88004200228026421142002290368210c0240024020022d006022064106470d00200b417f6a210b0c010b2006417e6a41034f0d00200b41016a220f200b4f2112200f210b20120d004115210f418e88ca0021114104210b024020064109460d000c070b0240201428020441ffffffff0371450d002014280200102f0b2014102f0c060b200241d8006a41026a220f20012d00003a0000200220022f01e880043b01580240024020092004460d00200421120c010b200441016a22012004490d25200441017422092001200920014b1b220141ffffffff00712001470d25200141047422014100480d250240024020040d002001102d21100c010b201020044104742001103121100b2010450d2e200421092001410476221221040b201020094104746a220120063a00002001200c37030820012014360204200120022f01583b0001200141036a200f2d00003a0000200941016a2109200b0d000b20022802402101200228023c210402402002280234450d002002280230102f0b024002400240024020042001470d002002280250220b200228024c470d03200b41016a2201200b490d27200b41017422042001200420014b1bad42187e220c422088a70d27200ca722014100480d27200b0d012001102d21040c020b20024103410220042001461b3a00d880042002410136026c2002420137025c200241b4afca003602582002412836021c2002200241186a3602682002200241d880046a360218200241e880046a200241d8006a103a20022802e88004211120022802ec8004210f20022802f08004210602402009450d0020094104742104201021010340024020012d00004109470d000240200141046a2205280200220328020441ffffffff0371450d002003280200102f200528020021030b2003102f0b200141106a2101200441706a22040d000b0b02402012450d002010102f0b4105210b2019450d0c2018102f0c0c0b2002280248200b41186c2001103121040b2004450d2d200220043602482002200141186e36024c0b20022802482201200b41186c6a2204201036020c200420153602082004201936020420042018360200200441146a2009360200200441106a20123602002002200b41016a360250200e2007470d000b0b20032011462104200229024c220c422088210d0240200a450d002008102f0b200da72103200ca7210a2004450d092003ad422086200aad84210c410c21030c280b200141016a2005104a000b417f200141016a104b000b02402009450d0020094104742103201021010340024020012d00004109470d000240200141046a2207280200220528020441ffffffff0371450d002005280200102f200728020021050b2005102f0b200141106a2101200341706a22030d000b0b2004450d002010102f20190d010c020b2019450d010b2018102f0b2002280234450d012002280230102f0c010b200241013a0020200241013602fc8004200242013702ec8004200241b4afca003602e880042002412836021c2002200241186a3602f880042002200241206a360218200241d880046a200241e880046a103a20022802d88004211120022802dc8004210f20022802e0800421064105210b2012450d002010102f0b20022802482110024020022802502201450d002010200141186c6a21092010210703400240200741046a280200450d002007280200102f0b0240200741146a2802002204450d00200728020c2101200441047421040340024020012d00004109470d000240200141046a2205280200220328020441ffffffff0371450d002003280200102f200528020021030b2003102f0b200141106a2101200441706a22040d000b0b200741186a21010240200741106a280200450d00200728020c102f0b2001210720012009470d000b0b200228024c450d002010102f0b200b4108762104200fad220d4220862011ad84210c200a450d012008102f0c010b20024103410220041b3a0030200241d8006a41146a41013602002002420137025c200241b4afca003602582002412836021c2002200241186a3602682002200241306a360218200241e880046a200241d8006a103a20022903e88004210c20022802f08004210602402003450d002001200341186c6a21082001210903400240200941046a280200450d002009280200102f0b0240200941146a2802002203450d00200928020c2104200341047421030340024020042d00004109470d000240200441046a2207280200220528020441ffffffff0371450d002005280200102f200728020021050b2005102f0b200441106a2104200341706a22030d000b0b200941186a21040240200941106a280200450d00200928020c102f0b2004210920042008470d000b0b200c422088210d4105210b41002104200a450d002001102f0b20004101360200200041106a2006360200200041086a200d422086200c42ffffffff0f838437020020002004410874200b41ff0171723602040c220b200241d8006a200110a3060240024020022802584101470d00200228025c22014108762109200241d8006a41086a290300220c422088210d200241e8006a28020021080c010b200241f880046a200241ec006a280200360200200241f080046a200241e4006a2902003703002002200229025c3703e880044100210141002105024002400240024002400240024002400240024002400240034002402001411f4d0d00410f21060c030b20022802f08004220720022802f480042204460d01200441016a22032004490d0820072003490d0a20022802e8800420046a2d00002104200220033602f48004200441ff00712001411f71742005722105200141076a21012004418001710d000b024020014120490d00410d21062004410f4b0d020b200241003602e08004200242043703d8800420050d02410421040c030b200241013a0048200241ec006a41013602002002420137025c200241b4afca003602582002412836021c2002200241186a3602682002200241c8006a360218200241306a200241d8006a103a200241d880046a41086a200241306a41086a280200360200200220022903303703d88004410521060b200241206a41086a200241d880046a41086a2802002208360200200220022903d88004220c370320200c422088a7210a200ca7210f410021090c040b4100210b0340200b41016a210b410021094100210141002107034002402001411f4d0d00410f21060c050b20022802f08004220820022802f480042204460d03200441016a22032004490d0720082003490d0920022802e8800420046a2d00002104200220033602f48004200441ff00712001411f71742007722107200141076a21012004418001710d000b024020014120490d002004410f4d0d00410d21060c040b200241d8006a200241e880046a109506024020022802584101470d00200228025c22064108762109200228026821082002280264210a2002280260210f0c040b2002280264211120022802602114200228025c2110200241d8006a200241e880046a109706024020022802584101470d00200228025c2106200228026821082002280264210a2002280260210f02402011450d0020114104742104201021010340024020012d00004109470d000240200141046a2205280200220328020441ffffffff0371450d002003280200102f200528020021030b2003102f0b200141106a2101200441706a22040d000b0b200641087621092014450d042010102f0c040b410021092002280260210a200228025c2106024002402002280264220141027422030d00410421084100210f0c010b2003410275220441ffffffff03712004470d2120034100480d212003102d2208450d2a2003410276210f0b02402001450d002003417c6a21092008210120062104034020012004280200360200200141046a2101200441046a21042003417c6a22030d000b200941027641016a21090b0240200a450d002006102f0b024020022802e08004220320022802dc8004470d00200341016a22012003490d21200341017422042001200420014b1bad421c7e220c422088a70d21200ca722014100480d210240024020030d002001102d21040c010b20022802d880042003411c6c2001103121040b2004450d2a200220043602d8800420022001411c6e3602dc80040b20022802d8800422042003411c6c6a2201200741087622063b00012001200836021020012010360204200120073a0000200141036a20064110763a0000200141186a2009360200200141146a200f3602002001410c6a2011360200200141086a20143602002002200341016a3602e08004200b2005470d000b0b20022802f4800420022802f8800446210120022902dc8004220c422088210d024020022802ec8004450d0020022802e88004102f0b20044108762105200da72103200ca7210b2001450d072005410874200441ff01717221012003ad422086200bad84210c410a21030c250b200241013a00482002410136026c2002420137025c200241b4afca003602582002412836021c2002200241186a3602682002200241c8006a360218200241306a200241d8006a103a2002280230210f2002280234210a20022802382108410521060b20022802d880042111024020022802e080042201450d0020112001411c6c6a210b201121070340024020072802042201450d0002402007410c6a2802002204450d00200441047421040340024020012d00004109470d000240200141046a2205280200220328020441ffffffff0371450d002003280200102f200528020021030b2003102f0b200141106a2101200441706a22040d000b0b200741086a280200450d002007280204102f0b2007411c6a21010240200741146a280200450d002007280210102f0b200121072001200b470d000b0b20022802dc8004450d002011102f0b2009410874200641ff0171722101200aad220d422086200fad84210c20022802ec8004450d0520022802e88004102f0c050b417f2003104b000b417f2003104b000b20032007104a000b20032008104a000b2005410874200441ff017172210620024103410220011b3a00d88004200241d8006a41146a41013602002002420137025c200241b4afca003602582002412836021c2002200241186a3602682002200241d880046a360218200241306a200241d8006a103a2002290330210c2002280238210802402003450d0020062003411c6c6a2109200621070340024020072802042201450d0002402007410c6a2802002204450d00200441047421040340024020012d00004109470d000240200141046a2205280200220328020441ffffffff0371450d002003280200102f200528020021030b2003102f0b200141106a2101200441706a22040d000b0b200741086a280200450d002007280204102f0b2007411c6a21010240200741146a280200450d002007280210102f0b2001210720012009470d000b0b200c422088210d4105210141002109200b450d002006102f0b20004101360200200041106a2008360200200041086a200d422086200c42ffffffff0f838437020020002009410874200141ff0171723602040c210b200241013a0030200241ec006a41013602002002420137025c200241b4afca003602582002412836021c2002200241186a3602682002200241306a360218200241e880046a200241d8006a103a410521040b2000200436020420004101360200200041086a20022903e88004370200200041106a200241e880046a41086a280200360200200b450d1f2008102f0c1f0b200620094621040240200b450d002008102f0b02402004450d00410921030c1a0b20024103410220041b3a00d88004200241ec006a41013602002002420137025c200241b4afca003602582002412836021c2002200241186a3602682002200241d880046a360218200241306a200241d8006a103a200241f380046a200241386a280200360000200220022903303700eb8004200041053a0004200020022900e880043700052000410c6a200241ef80046a290000370000200041013602000c1e0b200241d8006a200110a3060240024020022802584101470d00200228025c22034108762104200241d8006a41086a290300220c422088210d200241e8006a28020021050c010b200241f880046a200241ec006a280200360200200241f080046a200241e4006a2902003703002002200229025c3703e8800441002101410021050240024002400240024002400240024002400240024002400240024002400240024002400240034002402001411f4d0d00410f21030c120b20022802f08004220720022802f480042204460d10200441016a22032004490d0120072003490d0820022802e8800420046a2d00002104200220033602f48004200441ff00712001411f71742005722105200141076a21012004418001710d000b024020014120490d002004410f4d0d00410d21030c110b20024100360250200242043703484104210102402005450d00410021114100210f410021120340200241d8006a200241e880046a109906024020022802584101470d0020022002290264220c3703d8800420022802602108200228025c2103200ca721090c110b20022802602110200228025c211402400240024002400240024020022802f08004220320022802f480042207460d00200741016a22042007490d0920032004490d0a2002280264210e20022802e88004220920076a2d0000210a200220043602f480040240200a41034d0d00410a21040c160b200a0e0401020304010b200241013a00202002410136026c2002420137025c200241b4afca003602582002412836021c2002200241186a3602682002200241206a360218200241306a200241d8006a103a0c120b4100210a4100210841002107034002402008411f4d0d00410f21040c150b20032004460d132004417f460d0a2003200441016a2206490d0f200920046a2d0000210b200220063602f48004200b41ff00712008411f71742007722107200841076a210820062104200b418001710d000b4100210a20084120490d03200b410f4d0d03410d21040c130b410021084100210703402008411f4b0d100240024020032004460d002004417f460d0c2003200441016a22064f0d01200441016a2003104a000b200241013a00202002410136026c2002420137025c200241b4afca003602582002412836021c2002200241186a3602682002200241206a360218200241306a200241d8006a103a0c120b200920046a2d0000210b200220063602f48004200b41ff00712008411f71742007722107200841076a210820062104200b418001710d000b4101210a20084120490d02200b410f4d0d020c0e0b410021084100210703402008411f4b0d0f0240024020032004460d002004417f460d0c2003200441016a22064f0d01200441016a2003104a000b200241013a00202002410136026c2002420137025c200241b4afca003602582002412836021c2002200241186a3602682002200241206a360218200241306a200241d8006a103a0c110b200920046a2d0000210b200220063602f48004200b41ff00712008411f71742007722107200841076a210820062104200b418001710d000b4102210a20084120490d01200b410f4b0d0d0c010b410021084100210703402008411f4b0d0e0240024020032004460d002004417f460d0c2003200441016a22064f0d01200441016a2003104a000b200241013a00202002410136026c2002420137025c200241b4afca003602582002412836021c2002200241186a3602682002200241206a360218200241306a200241d8006a103a0c100b200920046a2d0000210b200220063602f48004200b41ff00712008411f71742007722107200841076a210820062104200b418001710d000b4103210a20084120490d00200b410f4b0d0c0b200220073602e080042002200a3602dc800420022902dc8004210c02400240200f2011460d00201121030c010b201141016a22042011490d28201141017422032004200320044b1bad42147e220d422088a70d28200da722044100480d280240024020110d002004102d21010c010b2001201141146c2004103121010b2001450d31200220013602482011210f200441146e220321110b2001200f41146c6a2204200c37020c2004200e3602082004201036020420042014360200200f41016a210f201241016a22122005470d000b2002200336024c2002200f3602500b20022802f4800420022802f88004462104200229024c220c422088210d024020022802ec8004450d0020022802e88004102f0b200da72103200ca721072004450d112003ad4220862007ad84210c410821030c2c0b417f2003104b000b417f2004104b000b20042003104a000b417f200441016a104b000b417f200441016a104b000b417f200441016a104b000b417f200441016a104b000b20032007104a000b200441016a2003104a000b410d21044100210a0c030b410f21044100210a0c020b200228023021082002290234210c410521044100210a0c010b200241013a00202002410136026c2002420137025c200241b4afca003602582002412836021c2002200241186a3602682002200241206a360218200241306a200241d8006a103a200228023021082002290234210c410521040b200a41087420047221032002200c3703d88004200ca721092010450d002014102f0b2002200f3602502002201136024c20022802dc800421050240200f450d00200f41146c21072001210403400240200441046a280200450d002004280200102f0b200441146a21042007416c6a22070d000b0b2011450d032001102f0c030b200241013a0048200241ec006a41013602002002420137025c200241b4afca003602582002412836021c2002200241186a3602682002200241c8006a360218200241306a200241d8006a103a200228023021012002280234210420022802382105410521030b200220043602dc8004200220013602d88004200220053602e0800420022903d88004220c422088a72109200ca721080c010b20024103410220041b3a00d88004200241d8006a41146a41013602002002420137025c200241b4afca003602582002412836021c2002200241186a3602682002200241d880046a360218200241306a200241d8006a103a2002290330210c2002280238210502402003450d00200341146c21032001210403400240200441046a280200450d002004280200102f0b200441146a21042003416c6a22030d000b0b200c422088210d41052103410021042007450d012001102f0c010b200341087621042009ad220d4220862008ad84210c20022802ec8004450d0020022802e88004102f0b20004101360200200041106a2005360200200041086a200d422086200c42ffffffff0f838437020020002004410874200341ff0171723602040c1d0b200241d8006a200110a3060240024020022802584101470d00200228025c22094108762104200241d8006a41086a290300220c422088210d200241e8006a28020021080c010b200241c0006a200241ec006a280200360200200241386a200241e4006a2902003703002002200229025c3703304100210141002107024002400240024002400240024002400240024002400240024002400240024002400240034002402001411f4d0d00410f21090c030b20022802382205200228023c2204460d01200441016a22032004490d0520052003490d0c2002280230220920046a2d000021042002200336023c200441ff00712001411f71742007722107200141076a21012004418001710d000b024020014120490d002004410f4d0d00410d21090c020b200241003602502002420437034820070d02410421010c030b200241013a0048200241ec006a41013602002002420137025c200241b4afca003602582002412836021c2002200241186a3602682002200241c8006a360218200241e880046a200241d8006a103a20022802e88004210120022802ec8004210420022802f080042108410521090b200220043602dc8004200220013602d88004200220083602e0800420022903d88004220c422088a7210a200ca721060c0f0b2007417f6a2111410421014104211241042107410421144100210b4100210f034020052003460d05200341016a22082003490d0320052008490d04200920036a2c000021042002200836023c20044100480d0602400240024002400240200441c00071450d00200441807f72220441ff017141fb014d0d00024020052008460d00200341026a21062008417f460d0d20052006490d0e200920086a2d000021032002200636023c200341014b0d024100210520030e020504050b2002200b36024c2002200f360250200241013a0020200241ec006a41013602002002420137025c200241b4afca003602582002412836021c2002200241186a3602682002200241206a360218200241d880046a200241d8006a103a20022802d88004210620022802dc8004210a20022802e080042108410521010c020b2002200b36024c2002200f360250410621010c0e0b2002200b36024c2002200f360250410c21010b200241f880046a2008360200200241f480046a200a360200200241f080046a2006360200200220033a00ed8004200220013a00ec80040c0e0b41800221050b200241d8006a200241306a1095062002280264210a20022802602106200228025c2109024020022802584101470d002002200b36024c2002200f360250200241e8006a28020021080c0e0b02400240200f200b460d00200b2108200f210b0c010b200b41016a2201200b490d22200b41017422032001200320014b1b220141ffffffff00712001470d22200141047422034100480d2202400240200b0d002003102d21010c010b2014200b4104742003103121010b2001450d2b20022001360248200341047621082001211220012107200121140b2014200b4104746a220320104180807c712004417f7341ff017172200572221036020c2003200a3602082003200636020420032009360200200b41016a210f02402011450d002011417f6a2111200228023c210320022802382105200228023021092008210b0c010b0b2002200836024c2002200f3602500b200228023c2002280240462104200229024c220c422088210d02402002280234450d002002280230102f0b200da72103200ca721062004450d0c2003ad4220862006ad84210c410721030c260b417f2003104b000b417f2008104b000b20082005104a000b2002200b36024c2002200f360250200241013a0020200241ec006a41013602002002420137025c200241b4afca003602582002412836021c2002200241186a3602682002200241206a360218200241d880046a200241d8006a103a20022802d88004210620022802dc8004210a20022802e080042108410521010c050b2002200b36024c2002200f360250411921010c030b417f2006104b000b20062005104a000b20032005104a000b0b200241f880046a2008360200200241f480046a200a360200200241f080046a2006360200200220043a00ed8004200220013a00ec80040b200241013a00e8800420022802ec800421090b0240200f450d002007200f4104746a210f0340024020072802082204450d0020072802002101200441047421040340024020012d00004109470d000240200141046a2205280200220328020441ffffffff0371450d002003280200102f200528020021030b2003102f0b200141106a2101200441706a22040d000b0b200741106a21010240200741046a280200450d002007280200102f0b200121072001200f470d000b0b200b450d012012102f0c010b20024103410220041b3a00d88004200241ec006a41013602002002420137025c200241b4afca003602582002412836021c2002200241186a3602682002200241d880046a360218200241e880046a200241d8006a103a20022903e88004210c20022802f08004210802402003450d00200120034104746a210b200121090340024020092802082203450d0020092802002104200341047421030340024020042d00004109470d000240200441046a2207280200220528020441ffffffff0371450d002005280200102f200728020021050b2005102f0b200441106a2104200341706a22030d000b0b200941106a21040240200941046a280200450d002009280200102f0b200421092004200b470d000b0b200c422088210d41052109410021042006450d012001102f0c010b20094108762104200aad220d4220862006ad84210c2002280234450d002002280230102f0b20004101360200200041106a2008360200200041086a200d422086200c42ffffffff0f838437020020002004410874200941ff0171723602040c1c0b200241d8006a200110a3060240024020022802584101470d00200228025c22034108762105200241d8006a41086a290300220c422088210d200241e8006a28020021040c010b200241f880046a200241ec006a280200360200200241f080046a200241e4006a290200220c3703002002200229025c220d3703e88004200da72108200ca721054100210420022802f4800421014100210302400240024002400240024003402004411f4b0d020240024020052001460d002001417f460d032005200141016a22074f0d01200141016a2005104a000b200220053602f48004200241013a0048200241ec006a41013602002002420137025c200241b4afca003602582002412836021c2002200241186a3602682002200241c8006a360218200241306a200241d8006a103a200228023021012002280234210320022802382104410521080c050b200820016a2d0000220941ff00712004411f71742003722103200441076a2104200721012009418001710d000b200220073602f48004024020044120490d002009410f4d0d00410d21080c030b200241003602382002420437033041042101024002402003450d0041002105410021090340200241d8006a200241e880046a109c0620022f005d20022d005f4110747221072002280264210b2002280260210620022d005c210820022802584101460d020240024020092005460d002005210a200921040c010b200541016a22042005490d1a2005410174220a2004200a20044b1bad420c7e220c422088a70d1a200ca7220a4100480d1a0240024020050d00200a102d21010c010b20012005410c6c200a103121010b2001450d232002200136023020052104200a410c6e220a21050b20012004410c6c6a220420073b000120042006360204200420083a0000200441036a20074110763a0000200441086a200b3602002003200941016a2209470d000b2002200a360234200220093602380b20022802f4800420022802f880044621042002290234210c024020022802ec8004450d0020022802e88004102f0b200ca721072004450d06200c422088a7ad4220862007ad84210c410621030c1e0b2002200536023420022009360238200241e8006a28020021042005450d042001102f0c040b417f200141016a104b000b200220013602f48004410f21080b0b200220033602dc8004200220013602d88004200220043602e0800420022903d88004220c422088a7210b200ca72106410021070b200741ffffff07712205410874200841ff0171722103200bad220d4220862006ad84210c20022802ec8004450d0120022802e88004102f0c010b20024103410220041b3a00d88004200241ec006a41013602002002420137025c200241b4afca003602582002412836021c2002200241186a3602682002200241d880046a360218200241306a200241d8006a103a2002290330220c422088210d2002280238210441052103410021052007450d002001102f0b20004101360200200041106a2004360200200041086a200d422086200c42ffffffff0f838437020020002005410874200341ff0171723602040c1b0b200241d8006a200110a3060240024020022802584101470d00200228025c22034108762105200241d8006a41086a290300220c422088210d200241e8006a28020021040c010b200241f880046a200241ec006a280200360200200241f080046a200241e4006a290200220c3703002002200229025c220d3703e88004200da72108200ca721034100210420022802f480042101410021070240024002400240024002400240024002400240024003402004411f4b0d010240024020032001460d002001417f460d0a2003200141016a22054f0d01200141016a2003104a000b200220033602f48004200241013a0048200241ec006a41013602002002420137025c200241b4afca003602582002412836021c2002200241186a3602682002200241c8006a360218200241306a200241d8006a103a2002280230210b2002280234210620022802382104410521080c040b200820016a2d0000220941ff00712004411f71742007722107200441076a2104200521012009418001710d000b200220053602f48004024020044120490d002009410f4d0d00410d21080c020b4100210a200241003602e08004200242043703d8800420070d03410421014100210b0c060b200220013602f48004410f21080b0b200220043602e08004200220063602dc80042002200b3602d88004410021030c010b410421014101210a41002109024002400240034020032005460d01200541016a22042005490d0820032004490d09200820056a2c00002103200220043602f480040240200341004e0d00411921080c030b410721080240200341c000710d000c030b200341807f7222034170470d03200241d8006a200241e880046a109c0620022f005d20022d005f41107472210320022d005c2108024020022802584101470d0020034180feff0771410876210520022802682104200228026421062002280260210b0c040b200228026421052002280260210602400240200a417f6a22042009460d002009210b200421090c010b200941016a22042009490d1b2009410174220b2004200b20044b1bad420c7e220c422088a70d1b200ca722044100480d1b0240024020090d002004102d21010c010b20012009410c6c2004103121010b2001450d24200220013602d880042004410c6e210b0b20012009410c6c6a220420033b00012004200536020820042006360204200420083a0000200441036a20034110763a00002007200a460d05200a41016a210a20022802f48004210520022802f08004210320022802e880042108200b21090c000b0b200241013a00482002410136026c2002420137025c200241b4afca003602582002412836021c2002200241186a3602682002200241c8006a360218200241306a200241d8006a103a2002280230210b2002280234210620022802382104410521080b0b200220093602dc80042002200a417f6a3602e080042005410874200341ff01717221032009450d002001102f0b200341ffffff07712205410874200841ff01717221032006ad220d422086200bad84210c20022802ec8004450d0620022802e88004102f0c060b2002200b3602dc80042002200a3602e080040b20022802f4800420022802f88004462104024020022802ec8004450d0020022802e88004102f0b2004450d03200aad422086200bad84210c410521030c1a0b417f200141016a104b000b417f2004104b000b20042003104a000b20024103410220041b3a00d88004200241ec006a41013602002002420137025c200241b4afca003602582002412836021c2002200241186a3602682002200241d880046a360218200241306a200241d8006a103a2002290330220c422088210d200228023821044105210341002105200b450d002001102f0b20004101360200200041106a2004360200200041086a200d422086200c42ffffffff0f838437020020002005410874200341ff0171723602040c1a0b200241d8006a200110a3060240024020022802584101470d00200228025c22034108762105200241d8006a41086a290300220c422088210d200241e8006a28020021040c010b200241ec006a280200210f200241e8006a2802002101200241e4006a2802002103200241e0006a280200210a200228025c210841002104410021070240024002400240024002400240024002400240024002400240034002402004411f4d0d00410f21030c030b20032001460d012001417f460d0a2003200141016a2205490d0c200820016a2d0000220941ff00712004411f71742007722107200441076a2104200521012009418001710d000b024020044120490d002009410f4d0d00410d21030c020b41002111200241003602382002420437033020070d0241042101410021090c030b200241013a0030200241ec006a41013602002002420137025c200241b4afca003602582002412836021c2002200241186a3602682002200241306a360218200241e880046a200241d8006a103a20022802e88004210520022802ec8004210720022802f080042104410521030b200220043602e08004200220073602dc8004200220053602d880040c060b4104210141002109410021110340200921102011221441016a211120052104410021094100210b03402009411f4b0d030240024020032004460d002004417f460d0b2003200441016a22054f0d01200441016a2003104a000b2002201036023420022014360238200241013a00d88004200241ec006a41013602002002420137025c200241b4afca003602582002412836021c2002200241186a3602682002200241d880046a360218200241e880046a200241d8006a103a20022802e88004210520022802ec8004210720022802f080042104410521030c070b200820046a2d0000220641ff00712009411f7174200b72210b200941076a2109200521042006418001710d000b024020094120490d002006410f4b0d040b0240024020142010460d0020102109201421100c010b201041016a22042010490d1a201041017422092004200920044b1b220441ffffffff03712004470d1a200441027422044100480d1a0240024020100d002004102d21010c010b200120104102742004103121010b2001450d2320022001360230200441027621090b200120104102746a200b36020020112007470d000b20022009360234200220113602380b2005200f4621040240200a450d002008102f0b2004450d082011ad4220862009ad84210c410421030c1e0b2002201036023420022014360238410f21030c010b2002201036023420022014360238410d21030b0b2010450d002001102f0b2007ad220d4220862005ad84210c41002105200a450d042008102f0c040b417f200141016a104b000b417f200441016a104b000b200141016a2003104a000b20024103410220041b3a0030200241ec006a41013602002002420137025c200241b4afca003602582002412836021c2002200241186a3602682002200241306a360218200241e880046a200241d8006a103a20022903e88004220c422088210d20022802f08004210441052103410021052009450d002001102f0b20004101360200200041106a2004360200200041086a200d422086200c42ffffffff0f838437020020002005410874200341ff0171723602040c190b200241d8006a200110a3060240024020022802584101470d00200228025c22044108762105200241d8006a41086a290300220c422088210d200241e8006a28020021030c010b200241f880046a200241ec006a280200360200200241f080046a200241e4006a2902003703002002200229025c3703e8800441002101410021050240024002400240024002400240024002400240024002400240034002402001411f4d0d00410f21040c030b20022802f08004220720022802f480042204460d01200441016a22032004490d0620072003490d0520022802e8800420046a2d00002104200220033602f48004200441ff00712001411f71742005722105200141076a21012004418001710d000b024020014120490d002004410f4d0d00410d21040c020b200241003602e08004200242043703d8800420050d02410421010c030b200241013a0048200241ec006a41013602002002420137025c200241b4afca003602582002412836021c2002200241186a3602682002200241c8006a360218200241306a200241d8006a103a200228023021012002280234210520022802382103410521040b200220053602dc8004200220013602d88004200220033602e0800420022903d88004220c422088a72107200ca721090c0a0b20022802dc8004210a20022802e080042106410021130340200241d8006a200241e880046a1099062002280264210720022802602110200228025c2112024020022802584101470d002002280268210320102109201221040c090b200241d8006a200241e880046a1099062002280264211720022802602114200228025c210e024020022802584101470d00200228026821032014210920172107200e21040c080b02400240024002400240024002400240024002400240024002400240024002400240024002400240024020022802f08004220320022802f480042209460d00200941016a22012009490d0520032001490d0620022802e88004220f20096a2d00002104200220013602f48004410021110240200441034d0d004109210b410021030c1c0b20040e0401020304010b200241013a00482002410136026c2002420137025c200241b4afca003602582002412836021c2002200241186a3602682002200241c8006a360218200241306a200241d8006a103a200228023021092002290234210d4105210b41002111410021030c1a0b41002111410021044100210b034002402004411f4d0d00410f210b0c190b0240024020032001460d002001417f460d082003200141016a22084f0d01200141016a2003104a000b200241013a00482002410136026c2002420137025c200241b4afca003602582002412836021c2002200241186a3602682002200241c8006a360218200241306a200241d8006a103a200228023021092002290234210d4105210b410021110c1a0b200f20016a2d00002109200220083602f48004200941ff00712004411f7174200b72210b200441076a2104200821012009418001710d000b4100211120044120490d112009410f4d0d11410d210b0c170b0240024020032001460d00200941026a21042001417f460d0720032004490d08200f20016a2c00002101200220043602f4800402402001417f4a0d00411921030c100b200141c00071450d0e200141807f7222014170470d0e200241d8006a200241e880046a109c062002290360210c200228025c210b20022802584101470d01200228026821040c100b200241013a00482002410136026c2002420137025c200241b4afca003602582002412836021c2002200241186a3602682002200241c8006a360218200241306a200241d8006a103a2002290330210c20022802382104410521030c0e0b410121110c110b200241d8006a200241e880046a109c062002290360210c200228025c210b024020022802584101460d00410221110c110b20022002280268360260200b4180808078712111200b4180807c712103200b41087621040c0e0b0240024020032001460d00200941026a21082001417f460d0720032008490d08200f20016a2c00002104200220083602f480040240200441004e0d004119210b410021030c190b200441c000710d010c0b0b200241013a00482002410136026c2002420137025c200241b4afca003602582002412836021c2002200241186a3602682002200241c8006a360218200241306a200241d8006a103a4105210b2002290234210d20022802302109410021030c170b200441807f72220441ff017141fb014d0d090240024020032008460d00200941036a21012008417f460d0920032001490d0a200f20086a2d00002108200220013602f48004410021030240200841014d0d00410c210b41002111200821040c190b2004417f7321094103211120080e021101110b200241013a00482002410136026c2002420137025c200241b4afca003602582002412836021c2002200241186a3602682002200241c8006a360218200241306a200241d8006a103a200228023021092002290234210d4105210b410021030c170b410121030c0f0b417f2001104b000b20012003104a000b417f200141016a104b000b417f2004104b000b20042003104a000b417f2008104b000b20082003104a000b417f2001104b000b20012003104a000b4106210b410021030c0c0b410721030b200141ff0171410874200372210b0b20022004360260200b4180808078712111200b4180807c712103200b41087621040b2002200c370358200229025c210d200ca721090c080b0b024002402006200a460d00200a21080c010b200a41016a2201200a490d19200a41017422042001200420014b1bad42287e220d422088a70d19200da722014100480d1902400240200a0d002001102d21040c010b20022802d88004200a41286c2001103121040b2004450d22200220043602d88004200a2106200141286e2208210a0b20022802d880042201200641286c6a2204200e36020c200420073602082004201036020420042012360200200441206a200c3702002004411c6a200b3602002004411a6a20033a0000200441196a20093a0000200441186a20113a0000200441146a2017360200200441106a2014360200200641016a2106201341016a22132005470d000b200220083602dc8004200220063602e080040b20022802f4800420022802f8800446210420022902dc8004220c422088210d024020022802ec8004450d0020022802e88004102f0b200da72105200ca721072004450d072005ad4220862007ad84210c410321030c1d0b20032007104a000b417f2003104b000b0b41002103410021040b200b41ff0171200441ff0171410874722003418080fc0771722011722104200d422088a72103200da721072014450d00200e102f0b2010450d002012102f0b2002200a3602dc8004200220063602e0800420022802d88004210802402006450d00200641286c21052008210103400240200141046a280200450d002001280200102f0b0240200141106a280200450d002001410c6a280200102f0b200141286a2101200541586a22050d000b0b200a450d012008102f0c010b20024103410220041b3a00d88004200241ec006a41013602002002420137025c200241b4afca003602582002412836021c2002200241186a3602682002200241d880046a360218200241306a200241d8006a103a2002290330210c2002280238210302402005450d00200541286c21052001210403400240200441046a280200450d002004280200102f0b0240200441106a280200450d002004410c6a280200102f0b200441286a2104200541586a22050d000b0b200c422088210d41052104410021052007450d012001102f0c010b200441087621052007ad220d4220862009ad84210c20022802ec8004450d0020022802e88004102f0b20004101360200200041106a2003360200200041086a200d422086200c42ffffffff0f838437020020002005410874200441ff0171723602040c180b0c010b0b2013450d042014102f0c040b200241013a00d880042002410136026c2002420137025c200241b4afca003602582002412836021c2002200241186a3602682002200241d880046a360218200241e880046a200241d8006a103a20022802e88004210920022802ec8004210720022802f080042101410521100c010b0b2013450d002012102f0b20014110762104200141087621030b200341ff0171410874200141ff017172210320044110742106200f41ff0171410874210a20022802302105024020022802382201450d00200141047421042005210103400240200141046a280200450d002001280200102f0b200141106a2101200441706a22040d000b0b20032006722103200a20107221042002280234450d012005102f0c010b2007200a4621042002290234220c422088210d0240200b450d002008102f0b200da72105200ca7210702402004450d002005ad4220862007ad84210c410221030c0b0b20024103410220041b3a0030200241ec006a41013602002002420137025c200241b4afca003602582002412836021c2002200241186a3602682002200241306a360218200241e880046a200241d8006a103a20022903e88004210c20022802f08004210302402005450d00200541047421052001210403400240200441046a280200450d002004280200102f0b200441106a2104200541706a22050d000b0b200c422088210d41052104410021052007450d012001102f0c010b200441087621052007ad220d4220862009ad84210c200b450d002008102f0b20004101360200200041106a2003360200200041086a200d422086200c42ffffffff0f838437020020002005410874200441ff0171723602040c0d0b200241003602e08004200220053602dc8004200220063602d88004200241d8006a200241d880046a109d064101210f200228025c2107024020022802584101460d00024020070d004100210b41002103410021090c080b200241d8006a410041800810e7061a4101210f41002109410021044100210b0240034020022802dc8004221120022802e0800422036b2007200b6b22014180082001418008491b2201490d01200320016a220a2003490d042011200a490d05200241d8006a20022802d8800420036a200110e8061a2002200a3602e0800402400240200920046b2001490d00200120046a21030c010b200420016a22032004490d042009410174220a2003200a20034b1b220a4100480d040240024020090d00200a102d210f0c010b200f2009200a1031210f0b200f450d0d200a21090b200f20046a200241d8006a200110e8061a2003210420072001200b6a220b4d0d060c000b0b200241013a0048200241fc80046a4101360200200242013702ec8004200241b4afca003602e880042002412836021c2002200241186a3602f880042002200241c8006a360218200241306a200241e880046a103a2002290330220c422088a7210320022802382104200ca721054105210741002101024020090d00200521090c060b200f102f200521090c050b20074108762101200241d8006a41086a290300220c422088a72103200241e8006a2802002104200ca721090c040b1038000b2003200a104b000b200a2011104a000b200241d8006a200f2003106620022802584101470d0141082107024020090d000c010b200f102f0b2003ad4220862009ad84210c2008450d032006102f0c030b200f410876210b0b200520022802e080042207490d03200520076b2201417f4c0d040240024020010d00410121040c010b2001102d2204450d032004200620076a200110e8061a0b2003ad422086210c2009ad210d2001ad221b422086211c02402008450d002006102f0b200c200d84210c201c201b84210d200b410874200f41ff0171722101410121030b200020033a000420004100360200200041056a20022f00153b0000200041186a200d370200200041146a20043602002000410c6a200c370200200041086a2001360200200041206a2002290200370200200041076a200241176a2d00003a0000200041286a200241086a290200370200200041306a200241106a2802003602000c040b20004101360200200041106a2004360200200041086a200c37020020002001410874200741ff0171723602040c030b1036000b20072005104b000b103d000b2002418081046a24000ba80e01077f02402001450d002000200141306c6a210203402000220341306a21000240024020032d00002201410e4b0d00024002400240024002400240024002400240024002400240024020010e0f0001020304050607080e090e0a0b0c000b200341086a280200450d0d200341046a280200102f0c0d0b0240200341086a280200450d00200341046a280200102f0b200341146a280200450d0c200341106a280200102f0c0c0b02402003410c6a2802002204450d00200341046a28020021012004410474210403400240200141046a280200450d002001280200102f0b200141106a2101200441706a22040d000b0b200341086a280200450d0b2003280204102f0c0b0b02402003410c6a2802002204450d00200341046a2802002101200441286c210403400240200141046a280200450d002001280200102f0b0240200141106a280200450d002001410c6a280200102f0b200141286a2101200441586a22040d000b0b200341086a280200450d0a2003280204102f0c0a0b200341086a280200450d09200341046a280200102f0c090b200341086a280200450d08200341046a280200102f0c080b200341086a280200450d07200341046a280200102f0c070b02402003410c6a2802002201450d00200341046a280200220520014104746a21060340024020052802082204450d0020052802002101200441047421040340024020012d00004109470d000240200141046a2207280200220828020441ffffffff0371450d002008280200102f200728020021080b2008102f0b200141106a2101200441706a22040d000b0b200541106a21010240200541046a280200450d002005280200102f0b2001210520012006470d000b0b200341086a280200450d062003280204102f0c060b02402003410c6a2802002204450d00200341046a2802002101200441146c210403400240200141046a280200450d002001280200102f0b200141146a21012004416c6a22040d000b0b200341086a280200450d052003280204102f0c050b02402003410c6a2802002201450d00200341046a28020022052001411c6c6a21060340024020052802042201450d0002402005410c6a2802002204450d00200441047421040340024020012d00004109470d000240200141046a2207280200220828020441ffffffff0371450d002008280200102f200728020021080b2008102f0b200141106a2101200441706a22040d000b0b200541086a280200450d002005280204102f0b2005411c6a21010240200541146a280200450d002005280210102f0b2001210520012006470d000b0b200341086a280200450d042003280204102f0c040b02402003410c6a2802002201450d00200341046a2802002205200141186c6a210603400240200541046a280200450d002005280200102f0b0240200541146a2802002204450d00200528020c2101200441047421040340024020012d00004109470d000240200141046a2207280200220828020441ffffffff0371450d002008280200102f200728020021080b2008102f0b200141106a2101200441706a22040d000b0b200541186a21010240200541106a280200450d00200528020c102f0b2001210520012006470d000b0b200341086a280200450d032003280204102f0c030b02402003410c6a2802002201450d00200341046a28020022052001411c6c6a21060340024020052802042201450d0002402005410c6a2802002204450d00200441047421040340024020012d00004109470d000240200141046a2207280200220828020441ffffffff0371450d002008280200102f200728020021080b2008102f0b200141106a2101200441706a22040d000b0b200541086a280200450d002005280204102f0b2005411c6a21010240200541146a280200450d002005280210102f0b2001210520012006470d000b0b200341086a280200450d022003280204102f0c020b0240200341046a2802002201450d00200341086a280200450d002001102f0b0240200341146a2802002201450d0002402003411c6a2802002204450d002004410c6c21040340024020012802002208450d00200141046a280200450d002008102f0b2001410c6a2101200441746a22040d000b0b200341186a280200450d002003280214102f0b200341246a2802002205450d0102402003412c6a2802002201450d00200520014104746a210603402005220741106a2105024020072802042201450d0002402007410c6a2802002204450d002004410c6c21040340024020012802002208450d00200141046a280200450d002008102f0b2001410c6a2101200441746a22040d000b0b200741086a280200450d002007280204102f0b20052006470d000b0b200341286a280200450d012003280224102f0c010b0240200341086a280200450d00200341046a280200102f0b0240200341146a2802002201450d00200341186a280200450d002001102f0b200341246a280200450d00200341206a280200102f0b20002002470d000b0b0b994d021b7f027e230041e0026b22022400200128020841546a2103200141106a28020041306c210402400240024002400240024002400240024002400240024003402004450d01200441506a21042003412c6a2105200341306a2206210320052d00004102470d000b200241e8006a200610d60341042107200228026c2208450d01200841047422044100480d0b200228026821032004102d2207450d052008410474210641002109200721040340200341086a2802002205417f4c0d042003410c6a2d0000210a2003280200210b0240024020050d004101210c0c010b2005102d220c450d070b200c200b200510e806210b2004410d6a2003410d6a2d00003a00002004410c6a200a3a0000200441086a2005360200200441046a20053602002004200b360200200441106a2104200941016a2109200341106a2103200641706a22060d000b20070d020b410421070b41002109410021080b200128021041306c2104200128020841546a2103024003404100210b41c8e1ca002106024020040d00410021040c020b200441506a21042003412c6a2105200341306a220a210320052d00004103470d000b200241e0006a200a10d6034100210420022802602203450d0020022802642104200321060b024020040d004101210d4100210e410021034100210f410421104100210a41002111410121124100210541002113410421144100210641002115410421160c020b200441286c210c2006411c6a2104410421104100210b4100210e4101210d410021034100210f4100210a41002111410121124100210541002113410421144100210641002115410421160340024002400240024002402004417c6a2d00000e0401020300010b2004417e6a22172d000021182004417d6a22192d0000211a0240200a2011470d00200a41016a221b200a490d0e200a410174221c201b201c201b4b1b221120116a221b2011490d0e201b4100480d0e02400240200a0d00201b102d21120c010b2012201c201b103121120b2012450d08201b41017621110b2012200a4101746a221b20184101713a0001201b201a3a000020172d0000211720192d000021180240200b200e470d00200b41016a221b200b490d0e200b410174221a201b201a201b4b1b221920196a221b2019490d0e201b4100480d0e02400240200b0d00201b102d210d0c010b200d201a201b1031210d0b200d450d08201b410176210e0b200a41016a210a200d200b4101746a221b20174101713a0001201b20183a0000200b41016a210b0c030b2004280200211b02402003200f470d00200341016a220f2003490d0d20034101742217200f2017200f4b1b220f41ffffffff0371200f470d0d200f410274220f4100480d0d0240024020030d00200f102d21100c010b20102003410274200f103121100b2010450d07200f410276210f0b201020034102746a201b360200200341016a21030c020b200241b8016a41086a221b200441086a280200360200200220042902003703b801024020052013470d00200541016a22132005490d0c200541017422172013201720134b1bad420c7e221d422088a70d0c201da722134100480d0c0240024020050d002013102d21140c010b20142005410c6c2013103121140b2014450d062013410c6e21130b20142005410c6c6a221720022903b801370200201741086a201b280200360200200541016a21050c010b200241b8016a41086a221b200441086a280200360200200220042902003703b801024020062015470d00200641016a22172006490d0b200641017422182017201820174b1bad420c7e221d422088a70d0b201da722174100480d0b0240024020060d002017102d21160c010b20162006410c6c2017103121160b2016450d052017410c6e21150b20162006410c6c6a221720022903b801370200201741086a201b280200360200200641016a21060b200441286a2104200c41586a220c450d020c000b0b103d000b2001280210221941306c21172001280208210c410021040240034020172004460d01200c20046a211b200441306a22182104201b2d00004104470d000b200241d8006a200c20186a41546a10d603200228025c2204450d002002280258210c200441027421172003410174211b200341027421040340200c280200211802402003200f470d00200341016a220f2003490d09201b200f201b200f4b1b220f41ffffffff0371200f470d09200f410274220f4100480d090240024020030d00200f102d21100c010b20102004200f103121100b2010450d03200f410276210f0b200c41046a210c201020046a2018360200201b41026a211b200441046a2104200341016a21032017417c6a22170d000b2001280208210c200128021021190b200c201941306c6a2117200c21040240034020172004460d0120042d0000211b200441306a22182104201b4105470d000b200241d0006a201841546a10d6032002280254410c6c2218450d00200228025021042005410174211b2005410c6c210c0340200441086a2117024002400240200441046a2802004101470d002002201728020022193602a0022004280200221a20194b0d010b200241003602700c010b200241023602cc01200242023702bc01200241e4d7ca003602b801200241013602d402200241013602cc022002201a3602b0022002200241c8026a3602c8012002200241b0026a3602d0022002200241a0026a3602c802200241f0006a200241b8016a103a2002280270450d00200241f0006a21040c070b2004290200211d200241b8016a41086a221920172802003602002002201d3703b801024020052013470d00200541016a22132005490d09201b2013201b20134b1bad420c7e221d422088a70d09201da722134100480d090240024020050d002013102d21140c010b2014200c2013103121140b2014450d032013410c6e21130b2004410c6a21042014200c6a221720022903b801370200201741086a2019280200360200201b41026a211b200c410c6a210c200541016a2105201841746a22180d000b2001280208210c200128021021190b200c201941306c6a2117200c21040240034020172004460d0120042d0000211b200441306a22182104201b4106470d000b200241c8006a201841546a10d603200228024c221b450d0020022802482104201b410c6c21172006410174211b2006410c6c210c0340200241b8016a200410a906024020022802b801450d00200241b8016a21040c070b2004290200211d200241b8016a41086a2218200441086a2802003602002002201d3703b801024020062015470d00200641016a22152006490d09201b2015201b20154b1bad420c7e221d422088a70d09201da722154100480d090240024020060d002015102d21160c010b2016200c2015103121160b2016450d032015410c6e21150b2004410c6a21042016200c6a221920022903b801370200201941086a2018280200360200201b41026a211b200c410c6a210c200641016a2106201741746a22170d000b2001280208210c200128021021190b200c201941306c6a2117200c21040240034020172004460d0120042d0000211b200441306a22182104201b4107470d000b200241c0006a201841546a10d6032002280244221b450d0020022802402204201b4104746a211a200a410174210c200241b8016a41047221190340200241b8016a2004200d200b10aa0602400240024020022d00b8014101460d00200220022d00b901221b3a00a0020240201b2004410c6a2d00002217470d00200241003602700c030b200241023602cc01200242023702bc01200241f8d8ca003602b801200241303602d402200241303602cc02200220173a00b0022002200241c8026a3602c8012002200241a0026a3602d0022002200241b0026a3602c802200241f0006a200241b8016a103a0c010b200241f0006a41086a201941086a280200360200200220192902003703700b02402002280270450d00200241f0006a21040c080b2004410c6a2d0000211b0b2004410d6a2d000021170240200a2011470d00200a41016a2218200a490d09200c2018200c20184b1b221120116a22182011490d0920184100480d0902400240200a0d002018102d21120c010b2012200c2018103121120b2012450d03201841017621110b2012200c6a2218201b3a0000201841016a20174101713a0000200c41026a210c200a41016a210a200441106a2204201a470d000b2001280208210c200128021021190b200241a8016a2003360200200241a4016a200f3602002002419c016a200936020020024198016a200836020020024190016a200a3602002002418c016a201136020020024184016a200536020020024180016a2013360200200220103602a001200220073602940120022012360288012002201436027c200220063602782002201536027420022016360270200c201941306c6a2105200c210402400340024020052004470d004100210a0c020b20042d00002103200441306a2206210420034104470d000b200241386a200641546a10d603200228023c210a0b2002200a3602ac01200c201941306c6a2105200c210402400340024020052004470d00410021040c020b20042d00002103200441306a220621042003410c470d000b2006415c6a28020021040b200220043602b001200a2004470d0102400240024002400240024002400240200a450d00200c201941306c6a2105200c2104034020052004460d0320042d00002103200441306a2206210420034104470d000b200c201941306c6a210a200c21040340200a2004460d0220042d00002103200441306a220521042003410c470d000b200241306a200641546a10d60320022802342204450d002002280230220c20044102746a211b2005415c6a2110200541546a2114200241f1016a21184100210b03402002200b3602b4012010280200210420142802002105200242013702bc01200241fc8fca003602b801200241013602b402200241013602cc012002200241b0026a3602c8012002200241b4016a3602b002200241c8026a200241b8016a103a20022802c802210320022902cc02211d024002402004200b4d0d000240201da7450d002003102f0b2002200c28020022043602a002024002400240200228029c0120044d0d0002400240024002402005200b41186c6a22032802142213450d0020022802940120044104746a22052d000d210f20052802002117200328020c2104200328020021162005280208221221060240024020032802082209450d002009410374210a20122103201621050340200320052802006a22062003490d02200541086a210520062103200a41786a220a0d000b0b4108102d2203450d132003200fad42ff0183422886370200200241b0026a41026a2205200241c8026a41026a2d00003a0000200220022f00c8023b01b0022002200f3a00f0012002418080013602ec0120024281808080103702e401200220033602e001200242808080808080103703d801200242013703d001200220063602cc01200220093602c801200220163602c401200220123602c001200220173602bc012002200241f0006a3602b801201820022f01b0023b0000201841026a20052d00003a000020134104742105410021030340200220033602f801200220043602fc0120024180026a200241b8016a200410ac060240200228028002450d00200241a0026a41086a20024180026a41086a28020036020020022002290380023703a002200241033602c402200242033702b402200241c488ca003602b002200241313602dc02200241013602d402200241323602cc022002200241c8026a3602c0022002200241a0026a3602d8022002200241f8016a3602d0022002200241fc016a3602c80220024190026a200241b0026a103a024020022802a402450d0020022802a002102f0b20022802900222060d050b200441106a2104200341016a2103200541706a22050d000b20022802e8010d04024020022802d401450d0020022802d001102f0b20022802e401450d0920022802e001102f0c090b4120102d2206450d12200641186a41002900d4df4a370000200641106a41002900ccdf4a370000200641086a41002900c4df4a370000200641002900bcdf4a3700000c010b4120102d2206450d11200641186a41002900bb884a370000200641106a41002900b3884a370000200641086a41002900ab884a370000200641002900a3884a3700000b41202104412021030c030b200229029402211d024020022802d401450d0020022802d001102f0b201d422088211e024020022802e401450d0020022802e001102f0b201ea72103201da721040c030b41dc88ca00413041f8b4ca001039000b200241013602cc01200242023702bc0120024184dcca003602b801200241013602b4022002200241b0026a3602c8012002200241a0026a3602b002200241c8026a200241b8016a103a20022902cc02221d422088a7210320022802c8022106201da721040b2006450d020b200220063602b00220022003ad4220862004ad843702b4022002200241b0026a36029002200241023602cc01200242023702bc012002418490ca003602b801200241333602d402200241013602cc022002200241c8026a3602c801200220024190026a3602d0022002200241b4016a3602c802200241a0026a200241b8016a103a024020022802b402450d0020022802b002102f0b20022802a0022204450d0120022902a402211d200020043602002000201d3702040c0e0b200020033602002000201d3702040c0d0b200b41016a210b200c41046a220c201b470d000b2001280208210c200128021021190b200c201941306c6a2105200c21040240034020052004460d0120042d00002103200441306a2206210420034109470d000b2002200641546a2802002204360290020240024020022802a80120044d0d00200220022802a00120044102746a28020022043602a002200228029c0120044b0d01200241cc016a4101360200200242023702bc0120024184dcca003602b801200241013602b4022002200241b0026a3602c8012002200241a0026a3602b002200241c8026a200241b8016a103a0c0c0b200241cc016a4101360200200242023702bc01200241e0dbca003602b801200241013602b4022002200241b0026a3602c801200220024190026a3602b002200241c8026a200241b8016a103a0c0b0b20022802940120044104746a220431000d4220862004350208844280808080c000520d070b200c201941306c6a210303402003200c460d04200c2d00002104200c41306a2205210c20044108470d000b200241286a200541546a221410d6030240200228022c2203450d00200341ffffffff01712003470d0e2003410374220a4100480d0e20022802282104200a102d220c450d082004200341146c6a21062003410274417c6a210b200c2103034020042802002105200341046a200441086a28020036020020032005360200200341086a2103200441146a22042006470d000b200a4103762110200b41027641016a21040c030b4104210c41002110410021040c020b41a48fca0041c80041ec8fca001055000b41f48eca00411e41948fca001055000b200c2004200241b8016a410041202004676b10a406024020044103742204450d00200c20046a210641012105200c2104200c21030340024002402005450d00200620046b41037620054d0d03200420054103746a21040c010b20062004460d020b200220033602a0020240200341046a2802002205200441046a280200470d002003280200220a2004280200220b460d04200a200b200510ea06450d040b200441086a210441002105200341086a22032006470d000b0b200241206a201410d603024020022802242204450d00200441146c2103200228022041106a2104024003400240024002400240024002402004417c6a2802000e0400030201000b20022004280200220536029002024020022802a80120054d0d00200220022802a00120054102746a28020022053602a002200228029c0120054b0d04200241013602cc01200242023702bc0120024184dcca003602b801200241013602b4022002200241b0026a3602c8012002200241a0026a3602b002200241c8026a200241b8016a103a0c070b200241cc016a4101360200200242023702bc01200241e0dbca003602b801200241013602b4022002200241b0026a3602c801200220024190026a3602b002200241c8026a200241b8016a103a0c060b2002200428020022053602a0020240024020022802900120054d0d0020022802880120054101746a2d0001450d05200241cc016a4101360200200242023702bc01200241c4dcca003602b801200241013602b4022002200241b0026a3602c8012002200241a0026a3602b002200241c8026a200241b8016a103a0c010b200241cc016a4101360200200242023702bc01200241a4dcca003602b801200241013602b4022002200241b0026a3602c8012002200241a0026a3602b002200241c8026a200241b8016a103a0b20022802c8022104200020022902cc02370204200020043602000c090b2002200428020022053602a002200228027820054b0d02200241013602cc01200242023702bc0120024190dbca003602b801200241013602b4022002200241b0026a3602c8012002200241a0026a3602b002200241c8026a200241b8016a103a20022802c8022205450d02200020022902cc02370204200020053602000c080b2002200428020022053602a00220022802840120054b0d01200241cc016a4101360200200242023702bc01200241c0dbca003602b801200241013602b4022002200241b0026a3602c8012002200241a0026a3602b002200241c8026a200241b8016a103a20022802c8022104200020022902cc02370204200020043602000c070b201d428080808080608320022802940120054104746a220535020884200531000d42208684211d0b200441146a21042003416c6a22030d000c020b0b20022802c8022104200020022902cc02370204200020043602000c030b2010450d00200c102f0b2001280210220b41306c21042001280208220c41546a2103024003402004450d01200441506a21042003412c6a2105200341306a2206210320052d00004103470d000b200241186a200610d603200228021c2204450d0020022802182105200441286c210641002104034002400240024002400240200520046a220341186a2d00000e0401000302010b200341206a2802004101470d032003411c6a280200210a2002200341246a280200220336029002200a20034d0d03200241023602cc01200242023702bc01200241e4d7ca003602b801200241013602d402200241013602cc022002200a3602a0022002200241c8026a3602c8012002200241a0026a3602d002200220024190026a3602c802200241b0026a200241b8016a103a20022802b0022203450d03200020022902b402370204200020033602000c0c0b20022003411c6a28020022033602a002200228029c0120034b0d02200241cc016a4101360200200242023702bc0120024184dcca003602b801200241013602b4022002200241b0026a3602c8012002200241a0026a3602b002200241c8026a200241b8016a103a20022802c8022104200020022902cc02370204200020043602000c0b0b2003411a6a2d0000450d012003410c6a2802002104200341146a2802002103200241b8016a41146a4101360200200220033602b402200220043602b002200241043602a402200242013702bc01200241cc90ca003602b8012002200241b0026a3602a0022002200241a0026a3602c801200241c8026a200241b8016a103a200041086a200241c8026a41086a280200360200200020022903c8023702000c0a0b200241b8016a2003411c6a10a90620022802b801450d00200020022903b801370200200041086a200241b8016a41086a2802003602000c090b2006200441286a2204470d000b0b02400240024002400240200228028401220441014b0d002002280278220441014b0d01200b41306c2104200c41546a2103024003402004450d01200441506a21042003412c6a2105200341306a2206210320052d0000410d470d000b200241106a200610d603200228021022042002280214411c6c6a210502400240034020042005460d032002200428020022033602a0020240200228027820034b0d00200241013602cc01200242023702bc0120024190dbca003602b801200241013602b4022002200241b0026a3602c8012002200241a0026a3602b002200241c8026a200241b8016a103a20022802c80222030d070b200441046a2204280200450d01200241b8016a200420022802880120022802900110aa0620022d00b8014101460d02200441186a210420022d00b901450d000b4120102d2204450d0b200441186a41002900a5914a370000200441106a410029009d914a370000200441086a4100290095914a3700002004410029008d914a370000200042a08080808004370204200020043602000c0e0b4129102d2204450d0a200441286a41002d008c914a3a0000200441206a4100290084914a370000200441186a41002900fc904a370000200441106a41002900f4904a370000200441086a41002900ec904a370000200441002900e4904a370000200042a98080809005370204200020043602000c0d0b200020022902bc01370200200041086a200241c4016a2802003602000c0c0b200b41306c2104200c41546a2103024003402004450d01200441506a21042003412c6a2105200341306a2206210320052d0000410a470d000b200241086a200610d603200228020c2204450d002002280208220a2004411c6c6a210b02400240024002400340200a450d052002200a28020022043602a00220022802840120044d0d09200a280204450d01200241b8016a200a41046a20022802880120022802900110aa0620022d00b8014101460d0220022d00b9010d032002200a10af060240024020022802042204450d00200228020021032004410274210520022802a8012106034020022003280200220436029002200620044d0d07200220022802a00120044102746a28020022043602a002200228029c0120044d0d02201d428080808080608320022802940120044104746a220435020884200431000d42208684211d200341046a21032005417c6a22050d000b0b200a411c6a220a200b460d060c010b0b200241013602cc01200242023702bc0120024184dcca003602b801200241013602b4022002200241b0026a3602c8012002200241a0026a3602b002200241c8026a200241b8016a103a0c090b412a102d2204450d0c200441286a41002f00d5914a3b0000200441206a41002900cd914a370000200441186a41002900c5914a370000200441106a41002900bd914a370000200441086a41002900b5914a370000200441002900ad914a370000200042aa808080a005370204200020043602000c0f0b200020022902bc01370200200041086a200241c4016a2802003602000c0e0b4120102d2204450d0a200441186a41002900a5914a370000200441106a410029009d914a370000200441086a4100290095914a3700002004410029008d914a370000200042a08080808004370204200020043602000c0d0b200241cc016a4101360200200242023702bc01200241e0dbca003602b801200241013602b4022002200241b0026a3602c801200220024190026a3602b002200241c8026a200241b8016a103a0c050b2000410036020002402002280274450d002002280270102f0b0240200228028001450d00200228027c102f0b0240200228028c01450d00200228028801102f0b0240200228029c012203450d0020022802940121042003410474210303400240200441046a280200450d002004280200102f0b200441106a2104200341706a22030d000b0b0240200228029801450d00200228029401102f0b024020022802a401450d0020022802a001102f0b200e450d0d200d102f0c0d0b200241cc016a4101360200200242013702bc01200241d490ca003602b801200241013602b402200220043602a0022002200241b0026a3602c8012002200241a0026a3602b002200241c8026a200241b8016a103a200041086a200241c8026a41086a280200360200200020022903c8023702000c0a0b200241cc016a4101360200200242013702bc01200241dc90ca003602b801200241013602b402200220043602a0022002200241b0026a3602c8012002200241a0026a3602b002200241c8026a200241b8016a103a200041086a200241c8026a41086a280200360200200020022903c8023702000c090b200020022902cc02370204200020033602000c080b200241cc016a4101360200200242023702bc01200241c0dbca003602b801200241013602b4022002200241b0026a3602c8012002200241a0026a3602b002200241c8026a200241b8016a103a20022802c8022104200020022902cc02370204200020043602000c070b20022802c8022104200020022902cc02370204200020043602000c060b200241cc016a4101360200200242013702bc01200241c490ca003602b801200241343602b4022002200241b0026a3602c8012002200241a0026a3602b002200241c8026a200241b8016a103a200041086a200241c8026a41086a280200360200200020022903c8023702000b2010450d04200c102f0c040b412d102d2204450d00200441256a41002900b9904a370000200441206a41002900b4904a370000200441186a41002900ac904a370000200441106a41002900a4904a370000200441086a410029009c904a37000020044100290094904a370000200042ad808080d005370204200020043602000c030b1036000b200241cc016a4102360200200241d4026a4101360200200242023702bc01200241e48eca003602b801200241013602cc022002200241c8026a3602c8012002200241b0016a3602d0022002200241ac016a3602c802200241b0026a200241b8016a103a200041086a200241b0026a41086a280200360200200020022903b0023702000c010b20022802c8022104200020022902cc02370204200020043602000b02402002280274450d002002280270102f0b0240200228028001450d00200228027c102f0b0240200228028c01450d00200228028801102f0b0240200228029c012203450d0020022802940121042003410474210303400240200441046a280200450d002004280200102f0b200441106a2104200341706a22030d000b0b0240200228029801450d00200228029401102f0b024020022802a401450d0020022802a001102f0b200e450d01200d102f0c010b20002004290200370200200041086a200441086a2802003602000240200e450d00200d102f0b02402015450d002016102f0b02402013450d002014102f0b02402011450d002012102f0b02402009450d00200941047421032007210403400240200441046a280200450d002004280200102f0b200441106a2104200341706a22030d000b0b02402008450d002007102f0b200f450d002010102f0b200241e0026a24000f0b1038000b971401187f23004190026b2202240002400240024002400240200028020022034190bdc600460d00200028020421040c010b41002104200241286a410041d80010e7061a2002410f6a220542003700002002420037010a41ec00102d2203450d0120034100360200200320022902083702042003410b6a2005290000370000200341136a200241276a41d90010e8061a20004100360204200020033602000b200141ff017121060240024002400240034041002105024020032f01062207450d0041002105410c21080340024020072005470d00200721050c020b200320056a2109200841086a2108200541016a210502404100417f4101200941086a2d0000220920064b1b20092006461b41016a0e03000401000b0b2005417f6a21050b02402004450d002004417f6a2104200320054102746a41ec006a28020021030c010b0b2000200028020841016a360208024002400240200341066a22082f01002204410b490d0020034190bdc600460d04200241286a410041d80010e7061a200241003a001941ec00102d220a450d07200a4100360200200a410036000f200a4200370007200a20022f01183b0005200a41136a200241276a41d90010e8061a2003410e6a2d0000210b2003280248210c2003280244210d200a41086a2003410f6a20032f010641796a220410e8062106200a41146a200341cc006a200441037410e8062107200341063b0106200a20043b010620054107490d0120062005417a6a22086a2006200541796a22056a2206200441ffff037120056b10e9061a200620013a0000200720084103746a200720054103746a2204200a41066a22082f010020056b41037410e9061a200441013602000c020b200341086a2208200541016a22066a200820056a2208200420056b10e9061a200820013a0000200341146a220820064103746a200820054103746a220820032f010620056b41037410e9061a20084101360200200320032f010641016a3b01060c050b200341086a2204200541016a22066a200420056a220420082f010020056b10e9061a200420013a0000200341146a220420064103746a200420054103746a220420082f010020056b41037410e9061a200441013602000b200820082f010041016a3b01000240200328020022070d004100210e0c030b200341046a2103200241276a41016a210f200241a8016a2110200241a0016a211120024198016a211220024190016a211320024180016a41086a21144100210e034020032f0100210602400240024020072f01062203410b490d00200f410041d80010e7061a200241003a0019200220022f01183b0108200241b7016a200241276a41d90010e8061a20104200370300201142003703002012420037030020134200370300201442003703002002420037038001419c01102d2208450d08200841003602002008410036000f20084200370007200820022f01083b0005200841136a200241b7016a41d90010e8061a20084194016a20102903003702002008418c016a201129030037020020084184016a2012290300370200200841fc006a2013290300370200200841f4006a2014290300370200200820022903800137026c200741c8006a2802002115200741c4006a28020021162007410e6a2d00002117200841086a2007410f6a20072f0106220541796a220310e8062118200841146a200741cc006a200341037410e8062119200841ec006a20074188016a2005417a6a220941027410e8062101200741063b0106200820033b010602402009450d00410021032001210503402005280200220420033b010420042008360200200541046a21052009200341016a2203470d000b0b20064107490d0120182006417a6a22056a2018200641796a22036a220420082f010620036b10e9061a2004200b3a0000201920054103746a201920034103746a220420082f010620036b41037410e9061a2004200d3602002004200c360204200820082f010641016a22043b01062006410274220b20016a416c6a200120054102746a2209200441ffff0371220620056b41027410e9061a2009200a36020020062005490d022008200b6a41d4006a2105034020052802002204200341016a22033b010420042008360200200541046a210520032006490d000c030b0b200741086a2208200641016a22056a200820066a2208200320066b220410e9061a2008200b3a0000200741146a220820054103746a200820064103746a2208200441037410e9061a2008200d3602002008200c3602042007200341016a22033b01062006410274200741ec006a22086a41086a200820054102746a2208200341ffff0371220420056b41027410e9061a2008200a360200200620044f0d0620072005417f6a22034102746a41f0006a2105034020052802002208200341016a22033b010420082007360200200541046a210520032004490d000c070b0b200741086a2205200641016a22036a200520066a220520072f0106220420066b220910e9061a2005200b3a0000200741146a220520034103746a200520064103746a2205200941037410e9061a2005200d3602002005200c3602042007200441016a22053b010620064102742201200741ec006a22046a41086a200420034102746a2209200541ffff0371220420036b41027410e9061a2009200a360200200620044f0d00200720016a41f0006a2103034020032802002205200641016a22063b010420052007360200200341046a210320042006470d000b0b200e41016a210e0240200728020022050d002008210a2015210c2016210d2017210b0c040b200741046a2103200521072017210b2016210d2015210c2008210a0c000b0b200320086a42013702000c020b4195b4ca00412d41f8b4ca001039000b200241276a41016a410041d80010e7061a2002410f6a220342003700002002420037010a200220022902083703182002200329000037001f200241b7016a200241276a41d90010e8061a200241a8016a22054200370300200241a0016a2208420037030020024198016a2204420037030020024190016a2206420037030020024188016a220742003703002002420037038001419c01102d2203450d0120034100360200200320022903183702042003410b6a200229001f370000200341136a200241b7016a41d90010e8061a20034194016a20052903003702002003418c016a200829030037020020034184016a2004290300370200200341fc006a2006290300370200200341f4006a2007290300370200200320022903800137026c20032000280200220536026c2000200336020020002000280204220841016a360204200541003b0104200520033602002008200e470d0220032f01062205410a4b0d03200320054103746a220841186a200c360200200841146a200d360200200320056a41086a200b3a00002003200541016a22054102746a41ec006a200a360200200320053b0106200a20053b0104200a20033602000b20024190026a24000f0b1036000b4196b3ca00413041f8b4ca001039000b41c6b3ca00412741f8b4ca001039000bb02711067f017e017f017e017f017e027f017e017f017e017f017e017f017e157f067e027f2001410c6a28020021022001280208210302400240200141106a28020022040d0041002105410021064100210742002108410421094200210a4104210b4200210c4104210d41002101410021044104210e4200210f4104211042002111410421124200211341042114420021150c010b410021074100210641002105410021164100211741002118410021194100211a4100211b4100211c4100210102400340201d21142001211e024020032004417f6a220441306c6a22012d000022124110470d002014211d201e21010c020b200128002c211f200128002821202001280024212120012800202122200128001c2123200128001821242001280014212520012800102126200129000821082001280004210e4101210102400240024002400240024002402012417e6a2210410b4b2227450d00410121280c010b200e211d41012128410121294101212a4101210d410121094101210b0240024002400240024002400240024002400240024002400240024002400240024020100e0c000102030405061607150809000b0240201c0d00201e21012014211d200e211c2008212b0c160b0240202b422088a72201450d002001410474211d201c210103400240200141046a280200450d002001280200102f0b200141106a2101201d41706a221d0d000b0b4100210b41012101202ba7450d0f201c102f0c0f0b0240201b0d00201e21012014211d200e211b2008210f0c150b0240200f422088a72201450d00200141286c211d201b210103400240200141046a280200450d002001280200102f0b0240200141106a280200450d002001410c6a280200102f0b200141286a2101201d41586a221d0d000b0b4100210941012101200fa7450d0d201b102f0c0d0b201a450d0b202ca7450d0b201a102f0c0b0b2019450d09202da7450d092019102f0c090b2018450d072011a7450d072018102f0c070b024020170d00201e21012014211d200e21172008210c0c110b0240200c422088a72201450d00201720014104746a21292017210d03400240200d280208221d450d00200d2802002101201d410474211d0340024020012d00004109470d000240200141046a220b280200220928020441ffffffff0371450d002009280200102f200b28020021090b2009102f0b200141106a2101201d41706a221d0d000b0b200d41106a21010240200d41046a280200450d00200d280200102f0b2001210d20012029470d000b0b4101212841002101200ca7450d052017102f0c050b024020160d00201e21012014211d200e21162008210a0c100b0240200a422088a72201450d00200141146c211d2016210103400240200141046a280200450d002001280200102f0b200141146a2101201d416c6a221d0d000b0b4100212841012101200aa7450d032016102f0c030b02402007450d000240202e422088a72201450d0020072001411c6c6a21292007210d03400240200d2802042201450d000240200d410c6a280200221d450d00201d410474211d0340024020012d00004109470d000240200141046a220b280200220928020441ffffffff0371450d002009280200102f200b28020021090b2009102f0b200141106a2101201d41706a221d0d000b0b200d41086a280200450d00200d280204102f0b200d411c6a21010240200d41146a280200450d00200d280210102f0b2001210d20012029470d000b0b202ea7450d002007102f0b4100212941012101200e21072008212e410121280c0a0b02402006450d000240202f422088a72201450d002006200141186c6a21292006210d03400240200d41046a280200450d00200d280200102f0b0240200d41146a280200221d450d00200d28020c2101201d410474211d0340024020012d00004109470d000240200141046a220b280200220928020441ffffffff0371450d002009280200102f200b28020021090b2009102f0b200141106a2101201d41706a221d0d000b0b200d41186a21010240200d41106a280200450d00200d28020c102f0b2001210d20012029470d000b0b202fa7450d002006102f0b4100212a41012101200e21062008212f41012128410121290c0a0b02402005450d0002402030422088a72201450d0020052001411c6c6a21292005210d03400240200d2802042201450d000240200d410c6a280200221d450d00201d410474211d0340024020012d00004109470d000240200141046a220b280200220928020441ffffffff0371450d002009280200102f200b28020021090b2009102f0b200141106a2101201d41706a221d0d000b0b200d41086a280200450d00200d280204102f0b200d411c6a21010240200d41146a280200450d00200d280210102f0b2001210d20012029470d000b0b2030a7450d002005102f0b4100210d41012101200e21052008213041012128410121294101212a0c0a0b2008210a200e21160c060b2008210c200e21170c050b201e21012014211d200e2118200821110c090b201e21012014211d200e21192008212d0c080b201e21012014211d200e211a2008212c0c070b2008210f200e211b41012128410121294101212a4101210d4101210b0c050b2008212b200e211c41012128410121294101212a4101210d410121090c040b410121290b4101212a0b4101210d0b410121094101210b0b2008422088a721312008a7213202400240024020270d00024002400240024002400240024002400240024020100e0c000102030405060a070a0809000b200b450d0b02402031450d002031410474211d200e210103400240200141046a280200450d002001280200102f0b200141106a2101201d41706a221d0d000b0b2032450d0b0c0a0b2009450d0a02402031450d00203141286c211d200e210103400240200141046a280200450d002001280200102f0b0240200141106a280200450d002001410c6a280200102f0b200141286a2101201d41586a221d0d000b0b20320d090c0a0b41000d0920320d080c090b41000d0820320d070c080b41000d0720320d060c070b2001450d0602402031450d00200e20314104746a2110200e210d03400240200d280208221d450d00200d2802002101201d410474211d0340024020012d00004109470d000240200141046a220b280200220928020441ffffffff0371450d002009280200102f200b28020021090b2009102f0b200141106a2101201d41706a221d0d000b0b200d41106a21010240200d41046a280200450d00200d280200102f0b2001210d20012010470d000b0b20320d050c060b2028450d0502402031450d00203141146c211d200e210103400240200141046a280200450d002001280200102f0b200141146a2101201d416c6a221d0d000b0b20320d040c050b2029450d0402402031450d00200e2031411c6c6a2110200e210d03400240200d2802042201450d000240200d410c6a280200221d450d00201d410474211d0340024020012d00004109470d000240200141046a220b280200220928020441ffffffff0371450d002009280200102f200b28020021090b2009102f0b200141106a2101201d41706a221d0d000b0b200d41086a280200450d00200d280204102f0b200d411c6a21010240200d41146a280200450d00200d280210102f0b2001210d20012010470d000b0b20320d030c040b202a450d0302402031450d00200e203141186c6a2110200e210d03400240200d41046a280200450d00200d280200102f0b0240200d41146a280200221d450d00200d28020c2101201d410474211d0340024020012d00004109470d000240200141046a220b280200220928020441ffffffff0371450d002009280200102f200b28020021090b2009102f0b200141106a2101201d41706a221d0d000b0b200d41186a21010240200d41106a280200450d00200d28020c102f0b2001210d20012010470d000b0b20320d020c030b200d450d0202402031450d00200e2031411c6c6a2110200e210d03400240200d2802042201450d000240200d410c6a280200221d450d00201d410474211d0340024020012d00004109470d000240200141046a220b280200220928020441ffffffff0371450d002009280200102f200b28020021090b2009102f0b200141106a2101201d41706a221d0d000b0b200d41086a280200450d00200d280204102f0b200d411c6a21010240200d41146a280200450d00200d280210102f0b2001210d20012010470d000b0b20320d010c020b02402012410e4b0d00201e21012014211d0240024002400240024002400240024002400240024020120e0f0001020304040405060e070e08090a000b20320d0b0c0c0b02402032450d00200e102f0b2025450d0b2026102f0c0b0b02402031450d002031410474211d200e210103400240200141046a280200450d002001280200102f0b200141106a2101201d41706a221d0d000b0b20320d090c0a0b2031450d00203141286c211d200e210103400240200141046a280200450d002001280200102f0b0240200141106a280200450d002001410c6a280200102f0b200141286a2101201d41586a221d0d000b0b20320d070c080b02402031450d00200e20314104746a2110200e210d03400240200d280208221d450d00200d2802002101201d410474211d0340024020012d00004109470d000240200141046a220b280200220928020441ffffffff0371450d002009280200102f200b28020021090b2009102f0b200141106a2101201d41706a221d0d000b0b200d41106a21010240200d41046a280200450d00200d280200102f0b2001210d20012010470d000b0b20320d060c070b02402031450d00203141146c211d200e210103400240200141046a280200450d002001280200102f0b200141146a2101201d416c6a221d0d000b0b20320d050c060b02402031450d00200e2031411c6c6a2110200e210d03400240200d2802042201450d000240200d410c6a280200221d450d00201d410474211d0340024020012d00004109470d000240200141046a220b280200220928020441ffffffff0371450d002009280200102f200b28020021090b2009102f0b200141106a2101201d41706a221d0d000b0b200d41086a280200450d00200d280204102f0b200d411c6a21010240200d41146a280200450d00200d280210102f0b2001210d20012010470d000b0b20320d040c050b02402031450d00200e203141186c6a2110200e210d03400240200d41046a280200450d00200d280200102f0b0240200d41146a280200221d450d00200d28020c2101201d410474211d0340024020012d00004109470d000240200141046a220b280200220928020441ffffffff0371450d002009280200102f200b28020021090b2009102f0b200141106a2101201d41706a221d0d000b0b200d41186a21010240200d41106a280200450d00200d28020c102f0b2001210d20012010470d000b0b20320d030c040b02402031450d00200e2031411c6c6a2110200e210d03400240200d2802042201450d000240200d410c6a280200221d450d00201d410474211d0340024020012d00004109470d000240200141046a220b280200220928020441ffffffff0371450d002009280200102f200b28020021090b2009102f0b200141106a2101201d41706a221d0d000b0b200d41086a280200450d00200d280204102f0b200d411c6a21010240200d41146a280200450d00200d280210102f0b2001210d20012010470d000b0b20320d020c030b0240200e450d002032450d00200e102f0b02402025450d0002402023450d002023410c6c211d202521010340024020012802002209450d00200141046a280200450d002009102f0b2001410c6a2101201d41746a221d0d000b0b2024450d002025102f0b2021450d020240201f450d002021201f4104746a210e2021210d0340200d220b41106a210d0240200b2802042201450d000240200b410c6a280200221d450d00201d410c6c211d0340024020012802002209450d00200141046a280200450d002009102f0b2001410c6a2101201d41746a221d0d000b0b200b41086a280200450d00200b280204102f0b200d200e470d000b0b2020450d022021102f0c020b02402032450d00200e102f0b02402025450d002024450d002025102f0b2021450d012022102f0c010b200e102f0b201e21012014211d0b20040d000b410021040b200a420020161b2115200c420020171b21082011420020181b2113202d420020191b210a202c4200201a1b2111200f4200201b1b210c202b4200201c1b210f2016410420161b21142017410420171b21092018410420181b21122019410420191b210b201a4104201a1b2110201b4104201b1b210d201c4104201c1b210e0b4104410010cd0420004188016a200436020020004184016a20023602002000200336028001200041f8006a2030420020051b22303e020020002005410420051b360274200041ec006a202f420020061b222f3e020020002006410420061b360268200041e0006a202e420020071b222e3e020020002007410420071b36025c200041d8006a201d36020020002001360254200041d0006a20154220883e0200200041cc006a20153e020020002014360248200041c4006a20084220883e0200200041c0006a20083e02002000200936023c200041386a20134220883e0200200041346a20133e0200200020123602302000412c6a200a4220883e0200200041286a200a3e02002000200b360224200041206a20114220883e02002000411c6a20113e020020002010360218200041146a200c4220883e0200200041106a200c3e02002000200d36020c2000200f4220883e02082000200f3e02042000200e360200200041fc006a20304220883e0200200041f0006a202f4220883e0200200041e4006a202e4220883e02000bbb05010e7f230041106b22022400024002400240024020012802004101470d00200141106a2d000021032001410c6a2802002104200141086a280200210520012f0112210620012d0011210720012802042108200241086a200010d60302400240200228020c2209450d0020022802082101200941047441706a410476210a0240200741ff0171220b4104460d004100210c200341ff0171210d0340200c2109024020012d000c200d470d0020012802082004470d0002402001280200220c2008460d002004450d002004210e2008210f0340200c2d0000200f2d0000470d02200c41016a210c200f41016a210f200e417f6a220e0d000b0b20012d000d220c200b470d00200c4104470d040b200141106a2101200941016a210c2009200a470d000c020b0b4100210c200341ff0171210d0340200c2109024020012d000c200d470d0020012802082004470d0002402001280200220c2008460d002004450d002004210e2008210f0340200c2d0000200f2d0000470d02200c41016a210c200f41016a210f200e417f6a220e0d000b0b20012d000d4104460d030b200141106a2101200941016a210c2009200a470d000b0b024020002802082201200041046a280200470d00200141016a22092001490d042001410174220c2009200c20094b1b220941ffffffff00712009470d04200941047422094100480d040240024020010d002009102d21010c010b200028020020014104742009103121010b2001450d0320002001360200200041046a2009410476360200200028020821010b200028020020014104746a220120063b010e200120073a000d200120033a000c2001200436020820012005360204200120083602002000200028020841016a3602082002200010d6032002280204417f6a21090c040b2005450d032008102f0c030b200128020421090c020b1036000b1038000b200241106a240020090bec2103137f017e1a7f230041306b220224002002410436020020012802042103200128020021044101210502400240024002400240200128020822060d0041002107410121080c010b4130102d2207450d012007200636000c200720033600082007200436000420022007360200200741023a000041002108410121070b200141106a2802002109200128020c210a02400240200141146a280200220b0d002007210c0c010b2007410174220c200741016a220d200c200d4b1b220c41306c210d0240024020070d00200d102d210d0c010b2002280200200741306c200d1031210d0b200d450d012002200d360200200d200741306c6a220d41033a0000200d20022f002d3b0001200d200b36000c200d2009360008200d200a360004200d2002290204370210200d41036a2002412f6a2d00003a0000200d41186a2002410c6a290200370200200d41206a200241146a290200370200200d41286a200241046a41186a290200370200200741016a2107410021050b2001411c6a280200210e2001280218210f4100211002400240200141206a28020022110d00410021120c010b02402007200c470d0041000d0341000d03200c410174220d200c41016a2213200d20134b1bad42307ea7220d4100480d0302400240200c0d00200d102d210c0c010b2002280200200c41306c200d1031210c0b200c450d022002200c360200200d41306e210c0b2002280200200741306c6a220d41043a0000200d20022f002d3b0001200d201136000c200d200e360008200d200f360004200d2002290204370210200d41036a2002412f6a2d00003a0000200d41186a2002410c6a290200370200200d41206a200241146a290200370200200d41286a200241046a41186a29020037020041012112200741016a21070b200141286a28020021132001280224211402402001412c6a2802002211450d0002402007200c470d0041000d03200c410174220d200c41016a2210200d20104b1bad42307e2215422088a70d032015a7220d4100480d0302400240200c0d00200d102d210c0c010b2002280200200c41306c200d1031210c0b200c450d022002200c360200200d41306e210c0b2002280200200741306c6a220d41053a0000200d20022f002d3b0001200d201136000c200d2013360008200d2014360004200d2002290204370210200d41036a2002412f6a2d00003a0000200d41186a2002410c6a290200370200200d41206a200241146a290200370200200d41286a200241046a41186a29020037020041012110200741016a21070b200141346a28020021162001280230211702400240200141386a28020022110d00410021180c010b02402007200c470d0041000d03200c410174220d200c41016a2219200d20194b1bad42307e2215422088a70d032015a7220d4100480d0302400240200c0d00200d102d210c0c010b2002280200200c41306c200d1031210c0b200c450d022002200c360200200d41306e210c0b2002280200200741306c6a220d41063a0000200d20022f002d3b0001200d201136000c200d2016360008200d2017360004200d2002290204370210200d41036a2002412f6a2d00003a0000200d41186a2002410c6a290200370200200d41206a200241146a290200370200200d41286a200241046a41186a29020037020041012118200741016a21070b200141c0006a280200211a200128023c211b4101211902400240200141c4006a280200221c0d004101211d0c010b02402007200c470d0041000d03200c410174220d200c41016a2211200d20114b1bad42307e2215422088a70d032015a7220d4100480d0302400240200c0d00200d102d210c0c010b2002280200200c41306c200d1031210c0b200c450d022002200c360200200d41306e210c0b2002280200200741306c6a220d41073a0000200d20022f002d3b0001200d201c36000c200d201a360008200d201b360004200d2002290204370210200d41036a2002412f6a2d00003a0000200d41186a2002410c6a290200370200200d41206a200241146a290200370200200d41286a200241046a41186a290200370200200741016a21074100211d0b200141cc006a280200211e2001280248211f0240200141d0006a2802002220450d0002402007200c470d0041000d03200c410174220d200c41016a2211200d20114b1bad42307e2215422088a70d032015a7220d4100480d0302400240200c0d00200d102d210c0c010b2002280200200c41306c200d1031210c0b200c450d022002200c360200200d41306e210c0b2002280200200741306c6a220d41083a0000200d20022f002d3b0001200d202036000c200d201e360008200d201f360004200d2002290204370210200d41036a2002412f6a2d00003a0000200d41186a200241046a41086a290200370200200d41206a200241146a290200370200200d41286a200241046a41186a290200370200200741016a2107410021190b41012121024020012802544101470d00200141d8006a280200211102402007200c470d0041000d03200c410174220d200c41016a2222200d20224b1bad42307e2215422088a70d032015a7220d4100480d0302400240200c0d00200d102d210c0c010b2002280200200c41306c200d1031210c0b200c450d022002200c360200200d41306e210c0b2002280200200741306c6a220d41093a0000200d20022f002d3b0001200d2011360204200d2002290204370208200d41036a2002412f6a2d00003a0000200d41106a2002410c6a290200370200200d41186a200241046a41106a290200370200200d41206a200241046a41186a290200370200200d41286a200241046a41206a290200370200200741016a21070b200141e0006a2802002123200128025c21220240200141e4006a2802002224450d0002402007200c470d0041000d03200c410174220d200c41016a2211200d20114b1bad42307e2215422088a70d032015a7220d4100480d0302400240200c0d00200d102d210c0c010b2002280200200c41306c200d1031210c0b200c450d022002200c360200200d41306e210c0b2002280200200741306c6a220d410a3a0000200d20022f002d3b0001200d202436000c200d2023360008200d2022360004200d2002290204370210200d41036a2002412f6a2d00003a0000200d41186a2002410c6a290200370200200d41206a200241146a290200370200200d41286a200241046a41186a290200370200200741016a2107410021210b200141ec006a2802002125200128026821264101211102400240200141f0006a28020022270d00410121280c010b02402007200c470d0041000d03200c410174220d200c41016a2229200d20294b1bad42307e2215422088a70d032015a7220d4100480d0302400240200c0d00200d102d210c0c010b2002280200200c41306c200d1031210c0b200c450d022002200c360200200d41306e210c0b2002280200200741306c6a220d410c3a0000200d20022f002d3b0001200d202736000c200d2025360008200d2026360004200d2002290204370210200d41036a2002412f6a2d00003a0000200d41186a2002410c6a290200370200200d41206a200241146a290200370200200d41286a200241046a41186a290200370200200741016a2107410021280b200141f8006a280200212a200128027421290240200141fc006a280200222b450d0002402007200c470d0041000d03200c410174220d200c41016a2211200d20114b1bad42307e2215422088a70d032015a7220d4100480d0302400240200c0d00200d102d210c0c010b2002280200200c41306c200d1031210c0b200c450d022002200c360200200d41306e210c0b2002280200200741306c6a220d410d3a0000200d20022f002d3b0001200d202b36000c200d202a360008200d2029360004200d2002290204370210200d41036a2002412f6a2d00003a0000200d41186a2002410c6a290200370200200d41206a200241146a290200370200200d41286a200241046a41186a290200370200200741016a2107410021110b20014184016a280200212c200128028001210d02400240200c20076b20014188016a28020041306c222d41306d222e490d00200228020021010c010b2007202e6a22012007490d02200c410174222f2001202f20014b1bad42307e2215422088a70d022015a7222f4100480d0202400240200c0d00202f102d21010c010b2002280200200c41306c202f103121010b2001450d0120022001360200202f41306e210c0b2001200741306c6a200d202d10e8061a0240202c450d00200d102f0b418006102d220d450d002000200136020820004280c2cdeb16370200200041106a2007202e6a3602002000410c6a200c360200200d102f2011450d020240202b450d002029202b411c6c6a2111202921000340024020002802042201450d0002402000410c6a2802002207450d00200741047421070340024020012d00004109470d000240200141046a220d280200220c28020441ffffffff0371450d00200c280200102f200d280200210c0b200c102f0b200141106a2101200741706a22070d000b0b200041086a280200450d002000280204102f0b2000411c6a21010240200041146a280200450d002000280210102f0b2001210020012011470d000b0b202a450d022029102f0c020b1036000b1038000b02402028450d0002402027450d002026202741186c6a21112026210003400240200041046a280200450d002000280200102f0b0240200041146a2802002207450d00200028020c2101200741047421070340024020012d00004109470d000240200141046a220d280200220c28020441ffffffff0371450d00200c280200102f200d280200210c0b200c102f0b200141106a2101200741706a22070d000b0b200041186a21010240200041106a280200450d00200028020c102f0b2001210020012011470d000b0b2025450d002026102f0b02402021450d0002402024450d0020222024411c6c6a2111202221000340024020002802042201450d0002402000410c6a2802002207450d00200741047421070340024020012d00004109470d000240200141046a220d280200220c28020441ffffffff0371450d00200c280200102f200d280200210c0b200c102f0b200141106a2101200741706a22070d000b0b200041086a280200450d002000280204102f0b2000411c6a21010240200041146a280200450d002000280210102f0b2001210020012011470d000b0b2023450d002022102f0b02402019450d0002402020450d00202041146c2107201f210103400240200141046a280200450d002001280200102f0b200141146a21012007416c6a22070d000b0b201e450d00201f102f0b0240201d450d000240201c450d00201b201c4104746a2111201b21000340024020002802082207450d0020002802002101200741047421070340024020012d00004109470d000240200141046a220d280200220c28020441ffffffff0371450d00200c280200102f200d280200210c0b200c102f0b200141106a2101200741706a22070d000b0b200041106a21010240200041046a280200450d002000280200102f0b2001210020012011470d000b0b201a450d00201b102f0b02402016410047201841017371450d002017102f0b02402013410047201041017371450d002014102f0b0240200e410047201241017371450d00200f102f0b02402005450d000240200b450d00200b41286c2107200a210103400240200141046a280200450d002001280200102f0b0240200141106a280200450d002001410c6a280200102f0b200141286a2101200741586a22070d000b0b2009450d00200a102f0b02402008450d0002402006450d00200641047421072004210103400240200141046a280200450d002001280200102f0b200141106a2101200741706a22070d000b0b2003450d002004102f0b200241306a24000bf70203037f017e017f410121020240200041086a2802002203417f6a220420034f0d00200420034b0d00200028020020044104746a220329020421052003200141016aad3702042005a721042005422088a721030240024002400240200041086a28020022024101460d002002450d0120002802002002417e6a4104746a22022802042004470d002002200228020820036a360208410021020c040b410021022003450d030240200041146a2802002202200041106a280200470d00200241016a22012002490d03200241017422062001200620014b1b220141ffffffff01712001470d03200141037422014100480d030240024020020d002001102d21020c010b200028020c20024103742001103121020b2002450d022000200236020c200041106a2001410376360200200028021421020b200028020c20024103746a22022003360204200220043602002000200028021441016a36021441000f0b41c5bdca00413f4184beca001055000b1036000b1038000b20020b911302147f027e23004180026b220424000240024020014115490d0041012105410121060240024002400340200121072000210820052006714101732109024002400240024002400240034002400240024002402003450d00024020054101710d002000200110a5062003417f6a21030b2001410276220a41036c210b200a410174210c4100210d024020014132490d00200b200b417f6a220d2000200b4103746a280200220e2000200d4103746a280200220f4922101b2211200b41016a2212200d200b20101b200020124103746a280200220b200f200e20101b220d49220f1b200b200d200f1b200020114103746a2802004922131b210b200c200c417f6a220d2000200c4103746a28020022112000200d4103746a280200221249220e1b2214200c4101722206200d200c200e1b200020064103746a280200220c20122011200e1b220d4922111b200c200d20111b200020144103746a2802004922141b210c200a200a417f6a22122000200a4103746a2802002206200020124103746a280200221549220d1b2216200a41016a22172012200a200d1b200020174103746a280200220a20152006200d1b22064922121b200a200620121b200020164103746a2802004922061b210a41024101200d1b200d20121b20066a200e6a20116a20146a20106a200f6a20136a210d0b200d2000200c4103746a280200220e2000200a4103746a280200220f4922106a2000200b4103746a280200220d200f200e20101b221149220f6a210e200d2011200f1b2000200c200a20101b220d4103746a280200490d01200b200a200c20101b200f1b210d0c020b2000200110c5060c0f0b200e41016a220e410c490d0002402001410176220b450d00200020014103746a41786a210a2000210c0340200c2902002118200c200a290200370200200a2018370200200c41086a210c200a41786a210a200b417f6a220b0d000b0b2001200d417f736a210d4101210a0c010b200e45210a0b0240200a452009724101710d002000200110c6060d0d0b2002450d02200d20014f0d01024020022802002000200d4103746a220a2802004f0d0020002108200121070c040b200029020021182000200a290200370200200a2018370200200041786a210f200041086a211120002902002218a721104100210c2001210b03400240200c200b417f6a220d4f0d002011200c4103746a210a0340200a28020020104b0d01200a41086a210a200d200c41016a220c470d000b200d210c0b200f200b4103746a210a02400340200c200b417f6a220b4f0d01200a280200210d200a41786a220e210a200d20104b0d000b2011200c4103746a220a2902002119200a200e41086a220d290200370200200d2019370200200c41016a210c0c010b0b2000201837020002402001200c41016a220a490d002000200a4103746a21002001200a6b220141154f0d010c0c0b0b200a2001104b000b41d4bbca00200d2001103b000b2007450d010b200d20074f0d012008290200211820082008200d4103746a220a290200370200200a2018370200200841086a210e20082902002219a72111410021142007417f6a2210450d02200e210a0340200a28020020114f0d03200a41086a210a2010201441016a2214470d000b201021140c020b4188bbca0041004100103b000b4198bbca00200d2007103b000b200820074103746a210c2010210b02400340200c210d200b220a20144d22060d01200a417f6a210b200d41786a220c28020020114f0d000b0b0240200a2014490d002010200a490d0241800121054100210b410021014100210c4100210f4180012109200e20144103746a2215211003400240200d20106b220a4187104b22130d00200a410376220a41807f6a200a2001200b49200f200c49220e7222001b210a02402000450d002009200a200e1b2109200a2005200e1b21050c010b200a200a41017622096b21050b0240200f200c470d00024020090d002004220c210f0c010b4100210a2004220f210c2010210e0340200c200a3a0000200c200e28020020114f6a210c200e41086a210e2009200a41016a220a470d000b0b02402001200b470d00024020050d0020044180016a220b21010c010b200d41786a210a4100210e20044180016a2201210b0340200b200e3a0000200b200a2802002011496a210b200a41786a210a2005200e41016a220e470d000b0b0240200b20016b220a200c200f6b220e200e200a4b1b2212450d002010200f2d00004103746a220a2902002118200a200d20012d0000417f734103746a290200370200024020124101460d004100210a0340200d2001200a6a220e2d0000417f734103746a2010200f200a6a41016a22002d00004103746a290200370200201020002d00004103746a200d200e41016a2d0000417f734103746a290200370200200a41026a210e200a41016a2200210a200e2012490d000b200120006a2101200f20006a210f0b200d20012d0000417f734103746a2018370200200141016a2101200f41016a210f0b200d20054103746b200d2001200b461b210d201020094103746a2010200f200c461b211020130d000b02400240200f200c4f0d00200d210a03402010200c417f6a220c2d00004103746a220b2902002118200b200a41786a220a290200370200200a2018370200200f200c490d000c020b0b2010210a2001200b4f0d000340200a2902002118200a200d200b417f6a220b2d0000417f734103746a220c290200370200200c2018370200200a41086a210a2001200b490d000b0b200820193702002007200a20156b41037620146a22014d0d032008200820014103746a220a290200370200200a2019370200200720016b220c450d04200c20012001200c4b1b210b2007410376210d200a41086a2100024002402001200c417f6a220c490d002000200c200a200310d404200821000c010b200820012002200310d404200a2102200c21010b200b200d4f2105200141154f0d010c050b0b2014200a104b000b200a2010104a000b4198bbca0020012007103b000b41a8bbca00411c41c4bbca001039000b20014102490d00200041786a21104100210e4101210b0340200b410374210c200b417f6a210a200b41016a210b02402000200c6a220d2802002000200a4103746a220f2802004f0d00200d2902002118200d200f2902003702000240200a450d00200e210c2010210a200d41706a2802002018a7220d4d0d00024002400340200a41086a200a290200370200200c4101460d01200c417f6a210c200a41786a220a280200200d4b0d000c020b0b4100210c0b2000200c4103746a210f0b200f20183702000b200e41016a210e201041086a2110200b2001470d000b0b20044180026a24000bd60402097f017e230041306b22022400200241106a2203200141246a290200370300200241086a22042001411c6a29020037030020022001290214370300200241186a41106a2205200141106a280200360200200241186a41086a2206200141086a290200370300200220012902003703182000200241186a10d1042107024002400240200041206a28020022082000411c6a280200470d00200841016a22092008490d022008410174220a2009200a20094b1b220941ffffffff03712009470d02200941027422094100480d020240024020080d002009102d21080c010b200028021820084102742009103121080b2008450d01200020083602182000411c6a2009410276360200200028022021080b200028021820084102746a20073602002000200028022041016a3602202005200329030037030020062004290300370300200220022903003703180240200041f0006a22032802002208200041ec006a280200470d00200841016a22042008490d02200841017422052004200520044b1bad42187e220b422088a70d02200ba722044100480d020240024020080d002004102d21080c010b2000280268200841186c2004103121080b2008450d0120002008360268200041ec006a200441186e360200200041f0006a28020021080b2000280268200841186c6a22082002290318370200200841106a200241186a41106a290300370200200841086a200241186a41086a29030037020020032003280200220841016a360200024020012d002c450d0020004101360254200041d8006a20083602000b200241306a24000f0b1036000b1038000b927a05077f017e217f037e147f23002203210420034180096b416071220324000240024002404110102d2205450d00200541063a00004120102d2206450d00200641063a001020064100360204200620032f00f0053b00012006412d3a0000200641036a200341f2056a2d00003a0000024020052d00004109470d0002402005280204220728020441ffffffff0371450d002007280200102f200528020421070b2007102f0b2005102f200141106a28020041306c2105200128020841546a210702400340024020050d004110102d2207450d0320074180023b010c200742828080802037020420072006360200200720032f01d0033b010e0240200128021022052001410c6a280200470d00200541016a22082005490d06200541017422092008200920084b1bad42307e220a422088a70d06200aa722084100480d060240024020050d002008102d21050c010b2001280208200541306c2008103121050b2005450d04200120053602082001410c6a200841306e360200200128021021050b2001280208200541306c6a220520032f00e0043b0001200541073a0000200542818080801037000820052007360004200520032902f005370210200541036a200341e2046a2d00003a0000200541186a200341f8056a290200370200200541206a20034180066a290200370200200541286a200341f0056a41186a2902003702002001200128021041016a220b3602104100210c0c020b200541506a21052007412c6a2108200741306a2209210720082d00004107470d000b200320032f01d0033b01f0050240200941086a22072802002205200941046a280200470d00200541016a22082005490d042005410174220d2008200d20084b1b220841ffffffff00712008470d04200841047422084100480d040240024020050d002008102d21050c010b200928020020054104742008103121050b2005450d0220092005360200200941046a2008410476360200200941086a28020021050b200928020020054104746a22054180023b010c200542828080802037020420052006360200200520032f01f0053b010e2007200728020041016a360200200341c8006a200910d603200328024c417f6a210c2001280210210b0b200b41306c21052001280208220e41546a210702400340410021082005450d01200541506a21052007412c6a2109200741306a2206210720092d00004103470d000b200641086a2802002205450d00200541286c2107200628020041186a2105410021080340200820052d0000456a2108200541286a2105200741586a22070d000b0b200b41306c2105200e41546a210702400340410021092005450d01200541506a21052007412c6a2106200741306a220d210720062d00004103470d000b200d41086a2802002205450d00200541286c2107200d28020041186a2105410021090340200920052d0000456a2109200541286a2105200741586a22070d000b0b200b41306c2105200e415c6a2107024003404100210f024020050d00410021050c020b200541506a2105200741246a2106200741306a220d210720062d00004104470d000b200d28020021050b200341003602e0040240024002400240200520096a220e0d0041042110410021110c010b0240024002402008450d00200342003703f005410021050c010b200341f0056a4100200110c80620032802f405210520032802f0054101470d00200341f8056a290300210a024020032802e0042207450d0020032802e404450d002007102f0b2003200a3702e404200320053602e00441002111410421104100210f0c010b4104102d2210450d042010200536020002400240200e4102490d000240024020084102490d00200342003703f0054100210d0c010b200341f0056a4101200110c80620032802f405210d20032802f0054101470d00200341f8056a290300210a024020032802e004450d0020032802e404450d0020032802e004102f0b2003200a3702e4042003200d3602e0040c010b410221064104210741012109410121110340200941016a2105024020092011470d0020062005200620054b1b220b41ffffffff0371200b470d0a200b410274220b4100480d0a20102007200b10312210450d08200b41027621110b201020076a200d360200024002402005200e4f0d000240200820054d0d00200342003703f0054100210d0c020b200341f0056a2005200110c80620032802f405210d20032802f0054101470d0120032903f805210a024020032802e004450d0020032802e404450d0020032802e004102f0b200941016a210f2003200a3702e4042003200d3602e0040c040b200941016a210f0c030b200641026a2106200741046a2107200521090c000b0b4101210f410121110b20032802e00421050b2005450d0020032902e404210a02402011450d002010102f0b2000200536020420004101360200200041086a200a3702000c010b20012802102205450d0120012802082212200541306c6a2113200341e0046a41146a2114200341e0076a211520034194066a2116200341a4066a2117200341b4066a2118200341c4066a2119200341d4066a211a200341e4066a211b200341f4066a211c20034184076a211d20034194076a211e200341a4076a211f200341b4076a2120200341c4076a2121200341d4076a212202400340024020122d0000410c470d00201228020c2205450d002012280204220d200541186c6a212303400240200d41146a220e2802002205450d00200d410c6a212441002109034002400240024002400240200920054f0d00410121052024280200200941047422256a22072d0000410b470d042003200741046a22073602c00220072802002207200f4f0d01201020074102746a2802002208450d042003200c3602d407200341133a00d007200341d7003a00c007200320083602b4072003412d3a00b0072003200c3602a407200341123a00a00720032007360294072003410b3a009007200341063a008007200341003a00f00620034184083b01e006200341373a00d006200320023602c4062003412d3a00c0062003200c3602b406200341123a00b0062003200c3602a406200341133a00a006200341d6003a00900620032008360284062003412d3a0080062003200c3602f405200341123a00f005200e280200222620094d0d02200e2009360200200d28020c2105200320153602f804200320243602f0042003200520256a220b41106a22063602e8042003200941016a22273602e0042003202620276b22283602e40420032005202741047422296a222a3602ec042003200341f0056a3602f404200621050240200b2d0000220841ac01460d004100210502400340200b20056a21070240200841ff01714109470d000240200741046a280200220828020441ffffffff0371450d002008280200102f0b2008102f0b2005450d012003200741206a3602e804200541106a2105200741106a2d0000220841ac01470d000b200b20056a41106a21050c010b200741106a21050b02402005202a460d0003402003200541106a22073602e80420052d0000220841ac01460d01024020084109470d000240200541046a280200220528020441ffffffff0371450d002005280200102f0b2005102f0b2007210520062007470d000b0b02400240024002402028450d0002402027200d2802142205470d00200341f0056a21052015210b0c030b2025200541047422056b2108200d28020c20056a2107200341f0056a21052015210603400240024020052006470d00410021050c010b2003200541106a3602f4040b200341d0036a200510b90620032d00d00341ac01460d04200720032903d003370300200741086a200341d0036a41086a290300370300200d200d28021441016a3602142008450d02200741106a2107200841706a210820032802f804210620032802f40421050c000b0b2024201410be060c020b20032802f804210b20032802f40421050b0240200b20056b2207450d000240024020032802f004220641046a222a280200222520266b20074104762208490d00200628020021070c010b202620086a22072026490d12202541017422262007202620074b1b220741ffffffff00712007470d12200741047422264100480d120240024020250d002026102d21070c010b200628020020254104742026103121070b2007450d1020062007360200202a20264104763602000b2007202720086a22254104746a200720296a202841047410e9061a200320253602e004202520062802082207460d00200920086a410474200741047422076b2108200628020020076a21070340024002402005200b470d00410021050c010b2003200541106a3602f4040b200341d0036a200510b90620032d00d00341ac01460d02200720032903d003370300200741086a200341d0036a41086a2903003703002006200628020841016a3602082008450d01200741106a2107200841706a210820032802f804210b20032802f40421050c000b0b200341003602d803200342083703d003200341d0036a201410be0620032802d003222820032802d8032207410474220b6a210620032802d40321292028210502402007450d000240024020032802f004222541046a222a280200220520032802e404222720032802e00422076a22266b200b4104752208490d00202528020021050c010b202620086a222b2026490d1220054101742226202b2026202b4b1b222641ffffffff00712026470d12202641047422264100480d120240024020050d002026102d21050c010b202528020020054104742026103121050b2005450d1020252005360200202a20264104763602000b2005200720086a220841047422266a200520074104746a202741047410e9061a200320083602e00420282105200820252802082207460d002025280200220520266a212a200520074104746a21082028210703400240200b0d00200621050c020b200341d0036a41026a2205200741036a2d00003a0000200320072f00013b01d003024020072d0000222741ac01470d00200741106a21050c020b200741046a2802002126200741086a290300210a200820273a0000200841086a200a370300200841046a202636020020032f01d0032127200841036a20052d00003a0000200841016a20273b00002025202528020841016a360208200b41706a210b200741106a22052107200841106a2208202a470d000b0b024020062005460d000340200541106a2107024020052d00004109470d000240200541046a2208280200220528020441ffffffff0371450d002005280200102f200828020021050b2005102f0b2007210520062007470d000b0b2029450d002028102f0b20032802e804220520032802ec042206460d0303402003200541106a22073602e8040240024020052d000022084109460d00200841ac01470d01200641706a2005460d06200541106a210503402003200541106a22073602e80420052d0000220841ac01460d07024020084109470d000240200541046a280200220528020441ffffffff0371450d002005280200102f0b2005102f0b2007210520062007470d000c070b0b0240200541046a280200220528020441ffffffff0371450d002005280200102f0b2005102f0b2007210520062007470d000c040b0b4194beca0020092005103b000b2003410136028406200342013702f405200341a4beca003602f005200341353602d4032003200341d0036a360280062003200341c0026a3602d003200341e0046a200341f0056a103a20032802e00422050d080c040b41a6b5ca00411c41f8b4ca001039000b024020032802e4042205450d00024020032802e004220620032802f004220b41086a22082802002207460d00200b280200220b20074104746a200b20064104746a200541047410e9061a0b2008200520076a3602000b024020032d00f0054109470d00024020032802f405220528020441ffffffff0371450d002005280200102f20032802f40521050b2005102f0b024020032d0080064109470d000240200341f0056a41146a280200220528020441ffffffff0371450d002005280200102f20032802840621050b2005102f0b024020032d0090064109470d0002402016280200220528020441ffffffff0371450d002005280200102f20032802940621050b2005102f0b024020032d00a0064109470d0002402017280200220528020441ffffffff0371450d002005280200102f20032802a40621050b2005102f0b024020032d00b0064109470d0002402018280200220528020441ffffffff0371450d002005280200102f20032802b40621050b2005102f0b024020032d00c0064109470d0002402019280200220528020441ffffffff0371450d002005280200102f20032802c40621050b2005102f0b024020032d00d0064109470d000240201a280200220528020441ffffffff0371450d002005280200102f20032802d40621050b2005102f0b024020032d00e0064109470d000240201b280200220528020441ffffffff0371450d002005280200102f20032802e40621050b2005102f0b024020032d00f0064109470d000240201c280200220528020441ffffffff0371450d002005280200102f20032802f40621050b2005102f0b024020032d0080074109470d000240201d280200220528020441ffffffff0371450d002005280200102f20032802840721050b2005102f0b024020032d0090074109470d000240201e280200220528020441ffffffff0371450d002005280200102f20032802940721050b2005102f0b024020032d00a0074109470d000240201f280200220528020441ffffffff0371450d002005280200102f20032802a40721050b2005102f0b024020032d00b0074109470d0002402020280200220528020441ffffffff0371450d002005280200102f20032802b40721050b2005102f0b024020032d00c0074109470d0002402021280200220528020441ffffffff0371450d002005280200102f20032802c40721050b2005102f0b024020032d00d0074109470d0002402022280200220528020441ffffffff0371450d002005280200102f20032802d40721050b2005102f0b410f21050b200520096a2209200e2802002205490d000b0b200d41186a220d2023470d000b0b201241306a22122013470d000c030b0b20032902e404210a2000200536020420004101360200200041086a200a3702002011450d002010102f0b2001280208200128021010cd042001410c6a280200450d022001280208102f0c020b200341d0006a41106a200141106a280200221e360200200341d0006a41086a200141086a290200220a37030020032001290200370350201e41306c2108200aa721094100210d4100210502400340024020082005470d000c020b200920056a2107200541306a2206210520072d00004108470d000b200341c0006a200920066a41546a10d6032003280240210d200328024421050b4100210b20054100200d1b2124201e41306c2106200d41c8e1ca00200d1b21054100210702400340024020062007470d000c020b200920076a2108200741306a220d210720082d0000410a470d000b200341386a2009200d6a41546a10d6032003280238210b200328023c21070b4100210e20074100200b1b2125201e41306c210d200b41c8e1ca00200b1b210641002107024003400240200d2007470d000c020b200920076a2108200741306a220b210720082d00004109470d000b2009200b6a41546a28020021074101210e0b2003420037026c20034190bdc600360268200341003602782003410036027420062025411c6c6a21292005202441146c6a210d200341e0046a410272221941266a2121201941206a2122201941186a2123201941106a2112201941086a2101200341e0046a41286a21134104212b41002115410021144100211b4100211a0240024002400240410041ff01710e03000102000b410021080c020b410221080c010b410121080b034002400240024002400240024002400240024002400240024002400240024002400240024002400240024020080e03000104040b0240201b41ff01710e03020300020b02400240024020032802782208450d0020182008460d002003200841046a3602780c010b034020292006460d15200341206a200610af0620032802202208450d022006411c6a21062003280224210b200320083602782008200b4102746a2118200b450d000b2003200841046a3602782008450d140b200e211620072117200828020021070c050b2006411c6a21060c120b4100211641002117200e0d030c050b02400340200d2005460d012005410c6a2108200541146a220b210520082802000d000b200b2105200e211620072117200b417c6a28020021070c030b024002400240024020032802782208450d0020182008460d002003200841046a3602780c010b034020292006460d03200341186a200610af0620032802182208450d022006411c6a2106200328021c210b200320083602782008200b4102746a2118200b450d000b2003200841046a3602782008450d020b4102211b200e211620072117200828020021070c040b2006411c6a21060b4102211b0c100b0340200d2005460d102005410c6a2108200541146a220b210520082802000d000b200b2105200e211620072117200b417c6a28020021070c010b024002400240201b41ff01710e03010200010b024002402003280278220b450d002018200b460d002003200b41046a3602780c010b034020292006460d05200341306a200610af0620032802302208450d052006411c6a21062008210b20032802342224450d000b2003200841046a3602782008450d05200820244102746a21182008210b0b200e211620072117200b28020021070c020b02400340200d2005460d012005410c6a2108200541146a220b210520082802000d000b200b2105200e211620072117200b417c6a28020021070c020b0240024020032802782208450d0020182008460d002003200841046a3602780c010b034020292006460d05200341286a200610af0620032802282208450d052006411c6a2106200328022c210b20032008360278200b450d000b2003200841046a3602782008450d042008200b4102746a21180b4102211b200e211620072117200828020021070c010b03402005200d460d032005410c6a2108200541146a220b210520082802000d000b200b2105200e211620072117200b417c6a28020021070b2003200736027c0240024002402007200f4f0d00201020074102746a2802002208450d0720142015460d012015211c201421150c020b2003410136028406200342023702f405200341a8b0ca003602f005200341013602d4032003200341d0036a360280062003200341fc006a3602d003200341e0046a200341f0056a103a20032902e404220a422088a7210520032802e0042128200aa7211d0c0b0b201541016a220b2015490d132015410174220e200b200e200b4b1b220b41ffffffff0371200b470d13200b410274220b4100480d130240024020150d00200b102d212b0c010b202b2015410274200b1031212b0b202b450d11200b410276211c0b202b20154102746a2007360200200341f0056a200328027c2226200341d0006a10c40620032802f805211d20032802f4052128024020032802f00522154101460d0020282802082207417f4c0d0c20282d000c210e0240024020070d004101210b0c010b202828020021242007102d220b450d12200b2024200710e8061a0b2003200e3a008c01200320073602880120032007360284012003200b3602800120282d000d21072003200836029c012003200328027c360298012003410036029001200320073a008d0102400240200328026822074190bdc600460d00200328026c21270c010b202142003701002022420037010020234200370100201242003701002001420037010020194200370100200341f0056a410041e00210e7061a419403102d2207450d124100212720074100360200200720032903e0043702042007410c6a200341e0046a41086a290300370200200741146a200341e0046a41106a2903003702002007411c6a200341e0046a41186a290300370200200741246a200341e0046a41206a2903003702002007412c6a2013290300370200200741346a200341f0056a41e00210e8061a2003410036026c200320073602680b201441016a211403400240024020072f0106222a0d004100210b0c010b200741146a2108202a410274210e200741086a2124417f210b03400240200e0d00202a210b0c020b20242802002125200841206a2108200b41016a210b200e417c6a210e202441046a21240240417f2025202647202520264b1b41016a0e03020001020b0b2008290200210a2008200329038001370200200841186a200329039801370200200841106a2207290200212c2007200329039001370200200841086a200329038801370200202c42ffffffff0f83420285500d06200a42808080807083500d06200aa7102f0c060b02402027450d002027417f6a21272007200b4102746a4194036a28020021070c010b0b2003200328027041016a360270200329039801210a200329039001212c200329038801212d200329038001212e0240024020072f01062208410b490d0020074190bdc600460d01202142003701002022420037010020234200370100201242003701002001420037010020194200370100200341f0056a410041e00210e7061a419403102d2208450d1320084100360200200820032903e0043702042008410c6a200341e0046a41086a222f290300370200200841146a200341e0046a41106a22302903003702002008411c6a200341e0046a41186a2231290300370200200841246a200341e0046a41206a22322903003702002008412c6a2013290300370200200841346a200341f0056a41e00210e8062124200341f0056a41086a222a200741fc016a290200370300200341f0056a41106a221f20074184026a290200370300200341f0056a41186a22202007418c026a290200370300200320072902f4013703f00520072802202133200841086a200741246a20072f010641796a220e41027410e8062125202420074194026a200e41057410e8062124200741063b01062008200e3b0106203120202903003703002030201f290300370300202f202a290300370300200320032903f0053703e00402400240200b4107490d002025200b417a6a22344102746a2025200b41796a22274102746a220b200e41ffff037120276b41027410e9061a200b2026360200202420344105746a202420274105746a220b200841066a220e2f010020276b41057410e9061a200b41186a200a370200200b202c370210200b202d370208200b202e3702000c010b200741086a220e200b41016a22244102746a200e200b4102746a2225200741066a220e2f0100200b6b41027410e9061a20252026360200200741346a222520244105746a2025200b4105746a2224200e2f0100200b6b41057410e9061a202441186a200a3702002024202c3702102024202d3702082024202e3702000b200e200e2f010041016a3b0100200341d0036a41186a22352031290300220a370300200341d0036a41106a22362030290300222c370300200341d0036a41086a2237202f290300222d370300200341b0016a41186a2238200a370300200341b0016a41106a2239202c370300200341b0016a41086a223a202d370300200320032903e004220a3703d0032003200a3703b0010240200728020022250d004100213b2008210b0c060b20072f010421264100213b2008213c0340200341c0026a41186a223d2038290300370300200341c0026a41106a223e2039290300370300200341c0026a41086a223f203a290300370300200320032903b0013703c002202641ffff0371212402400240024020252f01062207410b490d002021420037010020224200370100202342003701002012420037010020014200370100201942003701002037202f2903003703002036203029030037030020352031290300370300200341d0036a41206a22072032290300370300200341d0036a41286a22082013290300370300200320032903e0043703d003200341f0056a410041900310e7061a41c403102d220b450d17200b4100360200200b20032903d003370204200b410c6a2037290300370200200b41146a2036290300370200200b411c6a2035290300370200200b41246a2007290300370200200b412c6a2008290300370200200b41346a200341f0056a41900310e8062108202541206a280200214020202025418c026a290200370300201f20254184026a290200370300202a202541fc016a2902003703002003202541f4016a2902003703f005200b41086a202541246a20252f0106220e41796a220741027410e8062141200820254194026a200741057410e8062142200b4194036a202541b0036a200e417a6a222741027410e8062134202541063b0106200b20073b010602402027450d00410021072034210803402008280200220e20073b0104200e200b360200200841046a21082027200741016a2207470d000b0b20312020290300220a3703002030201f290300222c370300202f202a290300222d370300200320032903f005222e3703e0042020200a370300201f202c370300202a202d3703002003202e3703f005202641ffff037122084107490d0120412024417a6a220e41027422276a2041202441796a22074102746a2208200b2f010620076b41027410e9061a200820333602002042200e4105746a204220074105746a2208200b2f010620076b41057410e9061a200841186a203d290300370200200841106a203e290300370200200841086a203f290300370200200820032903c002370200200b200b2f010641016a22083b01062024410274222620346a416c6a203420276a2227200841ffff03712224200e6b41027410e9061a2027203c3602002024200e490d02200b20266a41fc026a210803402008280200220e200741016a22073b0104200e200b360200200841046a210820072024490d000c030b0b202541086a2208202441016a220b410274220e6a2008202441027422276a2208200720246b222641027410e9061a20082033360200202541346a2208200b4105746a200820244105746a2208202641057410e9061a200841186a203d290300370200200841106a203e290300370200200841086a203f290300370200200820032903c0023702002025200741016a22073b0106202720254194036a22086a41086a2008200e6a2208200741ffff0371220e200b6b41027410e9061a2008203c3602002024200e4f0d092025200b417f6a22074102746a4198036a210803402008280200220b200741016a22073b0104200b2025360200200841046a21082007200e490d000c0a0b0b202541086a2207202441016a2227410274220e6a2007202441027422266a220720252f0106223420246b224141027410e9061a20072033360200202541346a220720274105746a200720244105746a2207204141057410e9061a200741186a203d290300370200200741106a203e290300370200200741086a203f290300370200200720032903c0023702002025203441016a22073b0106202620254194036a22346a41086a2034200e6a2234200741ffff0371220e20276b41027410e9061a2034203c3602002008200e4f0d00202520266a4198036a2107034020072802002208202441016a22243b010420082025360200200741046a2107200e2024470d000b0b203b41016a213b203820202903003703002039201f290300370300203a202a290300370300200320032903f0053703b0010240202528020022070d00204021330c070b20252f010421262007212520402133200b213c0c000b0b200741086a220e200b41016a22244102746a200e200b4102746a220e2008200b6b41027410e9061a200e2026360200200741346a220820244105746a2008200b4105746a220820072f0106200b6b41057410e9061a200841186a200a3702002008202c3702102008202d3702082008202e370200200720072f010641016a3b01060c050b4195b4ca00412d41f8b4ca001039000b20032802fc052105201c21150c090b2003200b3602780b2003280260220d41306c21052003280258220b41546a210720032802682127200328026c21262003280270213802400340410021082005450d01200541506a21052007412c6a2109200741306a2206210720092d00004103470d000b200641086a2802002205450d00200541286c2107200628020041186a2105410021080340200820052d0000456a2108200541286a2105200741586a22070d000b0b200d41306c2105200b415c6a2107024003402005450d01200541506a2105200741246a2109200741306a2206210720092d00004104470d000b200628020021050c090b410021050c080b2021420037010020224200370100202342003701002012420037010020014200370100201942003701002037202f2903003703002036203029030037030020352031290300370300200341d0036a41206a22082032290300370300200341d0036a41286a220e2013290300370300200320032903e0043703d003200341f0056a410041900310e7061a41c403102d2207450d0d20074100360200200720032903d0033702042007410c6a2037290300370200200741146a20362903003702002007411c6a2035290300370200200741246a20082903003702002007412c6a200e290300370200200741346a200341f0056a41900310e806210e200720032802682208360294032003200328026c222441016a36026c200841003b0104200320073602682008200736020020202038290300370300201f2039290300370300202a203a290300370300200320032903b0013703f0052024203b470d0220072f01062208410a4b0d03200e20084105746a220e20032903f005370200200e41086a202a290300370200200e41106a201f290300370200200e41186a2020290300370200200720084102746a41086a20333602002007200841016a22084102746a4194036a200b360200200720083b0106200b20083b0104200b20073602000b02402015450d00201d450d002028102f0b201c21150b2016210e20172107201a41ff01710e03020309020b4196b3ca00413041f8b4ca001039000b41c6b3ca00412741f8b4ca001039000b410021080c070b410221080c060b2003280268200328026c200328027010bc0602402015450d00202b102f0b2009201e10cd040240200341dc006a280200450d002009102f0b2000202836020420004101360200200041086a2005ad422086201dad843702002011450d072010102f200424000f0b200341f0056a41106a220f200341d0006a41106a280200360200200341f0056a41086a200341d0006a41086a290300370300200320032903503703f005200341b0016a200341f0056a10d0042014450d01202b20144102746a2129200520086a2128200341f0056a41e0016a2114200341f0056a41d0016a2116200341f0056a41c0016a2117200341f0056a41b0016a2118200341f0056a41a0016a2119200341f0056a4190016a211a200341f0056a4180016a211b200341f0056a41f0006a211c200341f0056a41e0006a211d200341f0056a41d0006a211e200341f0056a41c0006a211f200341f0056a41306a2120200341f0056a41206a2121200341e7046a2122200341a4066a2123200341b4066a2112200341c4066a2101200341d4066a2113200341e4066a2134200341f4066a212f20034184076a213020034194076a2131200341a4076a2135200341b4076a2136200341c4076a2137200341d4076a2133202b212503402025220541046a21252005280200210d202721072026210603400240024020072f0106220e0d00410021080c010b200e4102742124417f210841002109410021050340024020242005470d00200e21080c020b200720056a210b200941206a2109200841016a2108200541046a21050240417f200b41086a280200220b200d47200b200d4b1b41016a0e03020001020b0b200720096a220e412c6a2802002107200e41306a28020021052003200c3602d407200341133a00d007200341d7003a00c007200320053602b4072003412d3a00b0072003200c3602a407200341123a00a00720032007360294072003410b3a009007200341063a008007200341003a00f00620034184083b01e006200341373a00d006200320023602c4062003412d3a00c0062003200c3602b406200341123a00b0062003200c3602a406200341133a00a006200341d6003a00900620032005360284062003412d3a0080062003200c3602f405200341123a00f005200e411c6a2224280200220d41106a220541ffffffff00712005470d0320054104742207417f4c0d030240024020070d00410821060c010b2007102d2206450d09200741047621052024280200210d0b02400240200d0d00410021080c010b41002109410021070340024020072005470d00200541016a22082005490d0d2005410174220b2008200b20084b1b220841ffffffff00712008470d0d200841047422084100480d0d0240024020050d002008102d21060c010b200620054104742008103121060b2006450d0b200841047621050b200620096a2208410f3a0000200841046a2007360200200841016a20032f01d0033b0000200841036a200341d0036a41026a2d00003a0000200941106a2109200741016a22082107200d2008470d000b0b0240200520086b410e4b0d002008410f6a22072008490d0b200541017422092007200920074b1b220741ffffffff00712007470d0b200741047422074100480d0b0240024020050d002007102d21060c010b200620054104742007103121060b2006450d09200741047621050b200341e0046a200341f0056a10bd06200620084104746a220720032903e004370300200741086a200341e0046a41086a2209290300370300200341e0046a200f10bd06200741186a2009290300370300200720032903e004370310200341e0046a202110bd06200741286a2009290300370300200741206a20032903e004370300200341e0046a202010bd06200741386a2009290300370300200741306a20032903e004370300200341e0046a201f10bd06200741c8006a2009290300370300200741c0006a20032903e004370300200341e0046a201e10bd06200741d8006a2009290300370300200741d0006a20032903e004370300200341e0046a201d10bd06200741e8006a2009290300370300200741e0006a20032903e004370300200341e0046a201c10bd06200741f8006a2009290300370300200741f0006a20032903e004370300200341e0046a201b10bd0620074188016a200929030037030020074180016a20032903e004370300200341e0046a201a10bd0620074198016a200929030037030020074190016a20032903e004370300200341e0046a201910bd06200741a8016a2009290300370300200741a0016a20032903e004370300200341e0046a201810bd06200741b8016a2009290300370300200741b0016a20032903e004370300200341e0046a201710bd06200741c8016a2009290300370300200741c0016a20032903e004370300200341e0046a201610bd06200741d8016a2009290300370300200741d0016a20032903e004370300200341e0046a201410bd06200741e8016a2009290300370300200741e0016a20032903e004370300024002402008410f6a22072005460d002005210b200721050c010b200541016a22072005490d0b200541017422092007200920074b1b220741ffffffff00712007470d0b200741047422074100480d0b0240024020050d002007102d21060c010b200620054104742007103121060b2006450d092007410476210b0b200620054104746a220541063a0000200520032900e004370001200541086a2022290000370000200341e0046a200341b0016a418c0110e8061a4110102d2207450d08200741063a0000200341d0036a200341e0046a418c0110e8061a20242802002205417f4c0d030240024020050d004101210d41014101200510e8061a2005ad212c410021050c010b200e41146a28020021092005102d220d450d09200d2009200510e80621092005102d220d450d09200d2009200510e8061a2009102f2005ad212c0b200341e0046a200341d0036a418c0110e8061a200e41216a310000212d200341d0036a200341e0046a418c0110e8061a200341e0046a200341d0036a418c0110e8061a200341c0026a200341e0046a418c0110e8061a4110102d2209450d08200841106a2108202a41807e71212a200a428080808080804083220a202c84202d422886844280808080800c84212c200941063a00002009102f200341d0036a200341c0026a418c0110e8061a200341e0046a200341d0036a418c0110e8061a024020072d00004109470d0002402007280204220928020441ffffffff0371450d002009280200102f200728020421090b2009102f0b2007102f200341c0026a200341e0046a418c0110e8061a200341e0046a200341c0026a418c0110e8061a2003202a3602fc03200320083602f8032003200b3602f403200320063602f003200341003602ec03200342043702e4032003202c3702dc03200320053602d8032003200d3602d403200341013602d003200341e0046a200341d0036a10d504200341b0016a200341e0046a418c0110e8061a200e41286a2028360200200e41246a4101360200024020032d00f0054109470d00024020032802f405220528020441ffffffff0371450d002005280200102f20032802f40521050b2005102f0b024020032d0080064109470d000240200341f0056a41146a280200220528020441ffffffff0371450d002005280200102f20032802840621050b2005102f0b024020032d0090064109470d000240200341f0056a41246a280200220528020441ffffffff0371450d002005280200102f20032802940621050b2005102f0b024020032d00a0064109470d0002402023280200220528020441ffffffff0371450d002005280200102f20032802a40621050b2005102f0b024020032d00b0064109470d0002402012280200220528020441ffffffff0371450d002005280200102f20032802b40621050b2005102f0b024020032d00c0064109470d0002402001280200220528020441ffffffff0371450d002005280200102f20032802c40621050b2005102f0b024020032d00d0064109470d0002402013280200220528020441ffffffff0371450d002005280200102f20032802d40621050b2005102f0b024020032d00e0064109470d0002402034280200220528020441ffffffff0371450d002005280200102f20032802e40621050b2005102f0b024020032d00f0064109470d000240202f280200220528020441ffffffff0371450d002005280200102f20032802f40621050b2005102f0b024020032d0080074109470d0002402030280200220528020441ffffffff0371450d002005280200102f20032802840721050b2005102f0b024020032d0090074109470d0002402031280200220528020441ffffffff0371450d002005280200102f20032802940721050b2005102f0b024020032d00a0074109470d0002402035280200220528020441ffffffff0371450d002005280200102f20032802a40721050b2005102f0b024020032d00b0074109470d0002402036280200220528020441ffffffff0371450d002005280200102f20032802b40721050b2005102f0b024020032d00c0074109470d0002402037280200220528020441ffffffff0371450d002005280200102f20032802c40721050b2005102f0b024020032d00d0074109470d0002402033280200220528020441ffffffff0371450d002005280200102f20032802d40721050b2005102f0b200a4280808080808c0184210a202841016a212820252029470d020c040b02402006450d002006417f6a2106200720084102746a4194036a28020021070c010b0b0b41b8b0ca0041800141b8b1ca001055000b103d000b02402015450d00202b102f0b200341f0056a200341b0016a418c0110e8061a200341e0046a200341f0056a10d2040240200341e0046a41106a2802002205450d0020032802e8042215200541306c6a21290340024020152d000041786a220541024b0d0002400240024020050e03000102000b201528020c2205450d0220152802042206200541146c6a212503400240200628020c0d002006280210210c202721052026210e03400240024020052f010622240d00410021070c010b200541286a210d20244102742108200541086a2109417f21070340024020080d00202421070c020b2009280200210b200d41206a210d200741016a21072008417c6a2108200941046a21090240417f200b200c47200b200c4b1b41016a0e03020001020b0b0240200d417c6a280200450d002006200d2802003602100c030b41c8b1ca0041354180b2ca001055000b200e450d01200e417f6a210e200520074102746a4194036a28020021050c000b0b200641146a22062025470d000c030b0b2015280204210e202721052026210b03400240024020052f0106220c0d00410021070c010b200541286a2106200c4102742108200541086a2109417f21070340024020080d00200c21070c020b2009280200210d200641206a2106200741016a21072008417c6a2108200941046a21090240417f200d200e47200d200e4b1b41016a0e03020001020b0b02402006417c6a280200450d00201520062802003602040c040b41c8b1ca0041354180b2ca001055000b200b450d02200b417f6a210b200520074102746a4194036a28020021050c000b0b201528020c2205450d002015280204222a2005411c6c6a210f03400240202a2802182205450d00202a280210222420054102746a212803402024222541046a21242025280200210e202721052026210b024003400240024020052f0106220c0d00410021070c010b200541286a2106200c4102742108200541086a2109417f21070340024020080d00200c21070c020b2009280200210d200641206a2106200741016a21072008417c6a2108200941046a21090240417f200d200e47200d200e4b1b41016a0e03020001020b0b02402006417c6a280200450d00202520062802003602000c030b41c8b1ca0041354180b2ca001055000b200b450d01200b417f6a210b200520074102746a4194036a28020021050c000b0b20242028470d000b0b202a411c6a222a200f470d000b0b201541306a22152029470d000b0b200341ec046a290200210a20032802e004210520032902e404212c20272026203810bc06200041106a200a370200200041086a202c37020020002005360204200041003602002011450d042010102f200424000f0b4102211a0b410121080c000b0b1036000b200424000f0b1038000b91fa0104077f017e157f017e230041e0006b220324000240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020012d00000e10020103100f0e0d0c0b09070806050400020b200141286a2802002104200141246a2802002105200141206a28020021062001411c6a2802002107200141186a2802002108200141146a28020021092001410c6a290200210a200141086a280200210b200141046a280200210c0240200241046a280200200241086a280200220d460d002002280200210e0c160b200d41016a220e200d490d13200d410174220f200e200f200e4b1b220f4100480d1302400240200d0d00200f102d210e0c010b2002280200200d200f1031210e0b200e450d122002200e360200200241046a200f360200200241086a280200210d0c150b200141186a2802002110200141146a2802002111200141106a28020021122001410c6a2802002107200141086a2802002109200141046a280200210402400240200241046a280200200241086a280200220d460d002002280200210e0c010b200d41016a220e200d490d13200d410174220f200e200f200e4b1b220f4100480d1302400240200d0d00200f102d210e0c010b2002280200200d200f1031210e0b200e450d122002200e360200200241046a200f360200200241086a280200210d0b4101210f200241086a200d41016a36020041002113200e200d6a41003a0000200341146a2010360200200341106a20113602002003201236020c200320073602082003200936020420032004360200200341d0006a20032002109e06200320032900513703382003200341d0006a41086a29000037003f024020032d0050220d411f470d0041002112410121070c170b2000200d3a000020002003290338370001200041086a200329003f3700000c240b2001410c6a280200210e200141086a2802002110200141046a280200211320012d0001211102400240200241046a280200200241086a280200220d460d002002280200210f0c010b200d41016a220f200d490d12200d4101742212200f2012200f4b1b22124100480d1202400240200d0d002012102d210f0c010b2002280200200d20121031210f0b200f450d112002200f360200200241046a2012360200200241086a280200210d0b200241086a2212200d41016a360200200f200d6a20113a000002400240200241046a280200220f2012280200220d6b200e490d002002280200210f0c010b200d200e6a2211200d490d12200f410174220d2011200d20114b1b220d4100480d1202400240200f0d00200d102d210f0c010b2002280200200f200d1031210f0b200f450d112002200f360200200241046a200d360200200241086a280200210d0b200241086a200d200e6a360200200f200d6a2013200e10e8061a4100210241012107024020100d00410121120c170b2013102f410121120c160b2001410c6a2802002112200141086a2802002114200141046a280200210502400240200241046a280200200241086a280200220d460d002002280200210e0c010b200d41016a220e200d490d11200d410174220f200e200f200e4b1b220f4100480d1102400240200d0d00200f102d210e0c010b2002280200200d200f1031210e0b200e450d102002200e360200200241046a200f360200200241086a280200210d0b200241086a200d41016a360200200e200d6a41013a0000200520124104746a210c4100210f4100210e41002111410121102012210d03400240200e2011470d00200f200e41016a2213200f20134b1b22114100480d1202400240200f0d002011102d21100c010b2010200e2011103121100b2010450d110b2010200e6a200d41807f72200d41ff0071200d41077622131b3a0000200f41026a210f200e41016a210e2013210d20130d000b024020120d00200521090c0e0b2005210d0340200d41106a2109200d2d000d22084105460d0e200d2d000c210f200d2802082104200d280204210b200d280200210602402011200e470d00200e41016a220d200e490d12200e4101742213200d2013200d4b1b22114100480d1202400240200e0d002011102d21100c010b2010200e2011103121100b2010450d110b2010200e6a200f3a0000200e41016a210d200e410174220e41046a2107200e41026a210f2004210e0340200721120240200d2011470d00200d41016a2213200d490d13200f2013200f20134b1b22114100480d1302400240200d0d002011102d21100c010b2010200d2011103121100b2010450d120b2010200d6a200e41807f72200e41ff0071200e41077622131b3a0000201241026a2107200f41026a210f200d41016a210d2013210e20130d000b0240024020040d00200d210e0c010b4100210f0340200d200f6a210e41fc00211302400240024002402006200f6a2d00000e050200010305020b41fe0021130c020b41fd0021130c010b41ff0021130b0240200e2011470d00200e41016a2211200e490d1420122011201220114b1b22114100480d1402400240200e0d002011102d21100c010b2010200e2011103121100b2010450d130b2010200d6a200f6a20133a0000201241026a21122004200f41016a220f470d000b200d200f6a210e0b0240200b450d002006102f0b4100210d024020084104460d0002402011200e470d00200e41016a220d200e490d13200e410174220f200d200f200d4b1b22114100480d1302400240200e0d002011102d21100c010b2010200e2011103121100b2010450d120b2010200e6a41013a0000200e41016a210e200841077141ff0073210d0b02402011200e470d00200e41016a220f200e490d12200e4101742213200f2013200f4b1b22114100480d1202400240200e0d002011102d21100c010b2010200e2011103121100b2010450d110b2010200e6a200d3a0000200e41016a210e2009210d2009200c470d000c0f0b0b2001412c6a2802002114200141286a2802002115200141246a280200210c200141206a28020021162001411c6a2802002117200141186a2802002118200141146a280200210b2001410c6a290200210a200141086a2802002119200141046a280200210802400240200241046a280200200241086a280200220d460d002002280200210e0c010b200d41016a220e200d490d13200d410174220f200e200f200e4b1b220f4100480d1302400240200d0d00200f102d210e0c010b2002280200200d200f1031210e0b200e450d212002200e360200200241046a200f360200200241086a280200210d0b41012113200241086a200d41016a36020041002110200e200d6a41003a00004104102d2205450d20200541eec2b5ab063600000240024020080d00410021064100211a0c010b410121124100210d41002110200aa72211210e034002400240200d2010460d00200d21132010210d0c010b200d41016a220f200d490d15200d4101742213200f2013200f4b1b22134100480d1502400240200d0d002013102d21120c010b2012200d2013103121120b2012450d230b2012200d6a200e41807f72200e41ff0071200e410776220f1b3a0000200d41016a21102013210d200f210e200f0d000b02400240201320106b2011490d00201321090c010b201020116a220d2010490d142013410174220e200d200e200d4b1b22094100480d14024020130d002009102d22120d010c230b20122013200910312212450d220b201220106a2008201110e8061a02402019450d002008102f0b4101102d2213450d21201341003a00004101210d4101210e201020116a2207210f034002400240200d200e460d00200d21100c010b200d41016a220e200d490d15200d4101742210200e2010200e4b1b22104100480d1502400240200d0d002010102d21130c010b2013200d2010103121130b2013450d23200d210e2010210d0b2013200e6a200f41807f72200f41ff0071200f41077622111b3a0000200e41016a210e2011210f20110d000b02402010200e6b20074f0d00200e20076a220d200e490d142010410174220f200d200f200d4b1b220d4100480d140240024020100d00200d102d21130c010b20132010200d103121130b2013450d22200d21100b2013200e6a2012200710e8061a200e20076a21064101211a2009450d002012102f0b0240024002400240024002400240200b0d004101211b0c010b4100211b20034100360240200342013703382003410c6a2017360200200341086a20183602002003200b3602042003200a4220883e0200200341d0006a2003200341386a109f0620032d00502204411f470d010240024020102006460d002010210d0c010b201041016a220d2010490d192010410174220e200d200e200d4b1b220d4100480d190240024020100d00200d102d21130c010b20132010200d103121130b2013450d27201021060b201320066a41013a0000200641016a210e20032802402212210f034002400240200d200e460d00200d21100c010b200d41016a220e200d490d1a200d4101742210200e2010200e4b1b22104100480d1a02400240200d0d002010102d21130c010b2013200d2010103121130b2013450d28200d210e2010210d0b2013200e6a200f41807f72200f41ff0071200f41077622111b3a0000200e41016a210e2011210f20110d000b2003280238210d02402010200e6b20124f0d00200e20126a220f200e490d1920104101742211200f2011200f4b1b220f4100480d190240024020100d00200f102d21130c010b20132010200f103121130b2013450d27200f21100b2013200e6a200d201210e8061a0240200328023c450d00200d102f0b200e20126a21064100211b0b02400240200c0d00410021110c010b2003410036024020034201370338410121124100210f4100210d2016210e03400240200d200f470d00200f41016a2211200f490d1a200f41017422072011200720114b1b22114100480d1a02400240200f0d002011102d21120c010b2012200f2011103121120b2012450d282003201136023c200320123602382011210f0b2003200d41016a22073602402012200d6a200e41807f72200e41ff0071200e41077622111b3a00002007210d2011210e20110d000b200c20144104746a210902400240024020160d00200c21120c010b200c21122014450d00200941706a211c4100210d200c211d02400340201d211102400340201141046a28020022040d01200d41016a210d2009201141106a2211470d000c050b0b201141106a211d200d41016a211e2016417f6a2116201141086a290200210a2011280200211f200328023c210f2003280240210e034002400240200e200f460d00200328023821120c010b200f41016a2212200f490d1e200f41017422072012200720124b1b22074100480d1e02400240200f0d002007102d21120c010b2003280238200f2007103121120b2012450d2c2003200736023c200320123602382007210f0b2003200e41016a22073602402012200e6a200d41807f72200d41ff0071200d41077622121b3a00002007210e2012210d20120d000b2003200a370308200320043602042003201f360200200341d0006a2003200341386a109f06024020032d00502204411f470d002016450d02201e210d201c2011470d010c020b0b20032d0053210720032f0051211d200328025421162003290358210a0240200941706a2011460d00201141106a211203402012221141106a211202402011280204220d450d0002402011410c6a280200220e450d00200e410c6c210e03400240200d280200220f450d00200d41046a280200450d00200f102f0b200d410c6a210d200e41746a220e0d000b0b201141086a280200450d002011280204102f0b20122009470d000b0b2007411074210d02402015450d00200c102f0b201d200d72210941012111200328023c450d052003280238102f0c050b201141106a21120b20092012460d0003402012221141106a211202402011280204220d450d0002402011410c6a280200220e450d00200e410c6c210e03400240200d280200220f450d00200d41046a280200450d00200f102f0b200d410c6a210d200e41746a220e0d000b0b201141086a280200450d002011280204102f0b20122009470d000b0b02402015450d00200c102f0b0240024020102006460d002010210d0c010b201041016a220d2010490d192010410174220e200d200e200d4b1b220d4100480d190240024020100d00200d102d21130c010b20132010200d103121130b2013450d27201021060b201320066a41023a0000200641016a210e20032802402212210f034002400240200d200e460d00200d21100c010b200d41016a220e200d490d1a200d4101742210200e2010200e4b1b22104100480d1a02400240200d0d002010102d21130c010b2013200d2010103121130b2013450d28200d210e2010210d0b2013200e6a200f41807f72200f41ff0071200f41077622111b3a0000200e41016a210e2011210f20110d000b2003280238210d02402010200e6b20124f0d00200e20126a220f200e490d1920104101742211200f2011200f4b1b220f4100480d190240024020100d00200f102d21130c010b20132010200f103121130b2013450d27200f21100b2013200e6a200d201210e8061a0240200328023c450d00200d102f0b200e20126a2106410121110b0240201a200845720d002019450d002008102f0b0240200b450d00201b4101730d0002402017450d002017410c6c210e200b210d03400240200d280200220f450d00200d41046a280200450d00200f102f0b200d410c6a210d200e41746a220e0d000b0b2018450d00200b102f0b2011200c45720d0202402014450d00200c20144104746a2107200c211203402012221141106a211202402011280204220d450d0002402011410c6a280200220e450d00200e410c6c210e03400240200d280200220f450d00200d41046a280200450d00200f102f0b200d410c6a210d200e41746a220e0d000b0b201141086a280200450d002011280204102f0b20122007470d000b0b2015450d02200c102f0c020b20032f005120032d0053411074722109200341d0006a41086a290300210a200328025421160240200328023c450d002003280238102f0b410021110b0240201a200845720d002019450d002008102f0b0240200b450d00201b4101730d0002402017450d002017410c6c210e200b210d03400240200d280200220f450d00200d41046a280200450d00200f102f0b200d410c6a210d200e41746a220e0d000b0b2018450d00200b102f0b0240200c452011720d0002402014450d00200c20144104746a2107200c211203402012221141106a211202402011280204220d450d0002402011410c6a280200220e450d00200e410c6c210e03400240200d280200220f450d00200d41046a280200450d00200f102f0b200d410c6a210d200e41746a220e0d000b0b201141086a280200450d002011280204102f0b20122007470d000b0b2015450d00200c102f0b2004411f460d002009410874200472210d02402010450d002013102f0b2000200d360200200041086a200a370200200041046a20163602002005102f0c010b200341146a2006360200200341106a20103602002003201336020c20034284808080c00037020420032005360200200341d0006a20032002109e06200320032900513703382003200341d0006a41086a29000037003f20032d0050220d411f460d012000200d3a000020002003290338370001200041086a200329003f3700000b410021124101210f41012113410121074101210241012109410121044101210e41012110410121110c290b41002111410121074101211241012102410121084101210b4101210941012104410121064101210c410121134101210e4101210f410121100c1e0b2001410c6a2802002111200141086a2802002107200141046a280200211202400240200241046a280200200241086a280200220d460d002002280200210e0c010b200d41016a220e200d490d12200d410174220f200e200f200e4b1b220f4100480d1202400240200d0d00200f102d210e0c010b2002280200200d200f1031210e0b200e450d202002200e360200200241046a200f360200200241086a280200210d0b200241086a200d41016a360200200e200d6a410b3a0000200341c4006a41003602002003420137023c2003200236023820122011411c6c6a210c4100210d4100210e2011210f034002400240200d200e460d00200328023c210d0c010b200d41016a2213200d490d13200d41017422102013201020134b1b22134100480d1302400240200d0d002013102d210d0c010b200328023c200d20131031210d0b200d450d21200320133602402003200d36023c0b2003200e41016a360244200d200e6a200f41807f72200f41ff0071200f410776220f1b3a00000240200f450d002003280240210d2003280244210e200f210f0c010b0b2003200c36025c20032012360258200320073602542003201236025002402011450d000240024003402012220d411c6a2112200d2802102207450d02200d410c6a2802002102200d41086a2802002109200d2802042111200d41146a290200210a200d280200210e03400240024020032802402003280244220d460d00200328023c210f0c010b200d41016a220f200d490d17200d4101742213200f2013200f4b1b22134100480d1702400240200d0d002013102d210f0c010b200328023c200d20131031210f0b200f450d25200320133602402003200f36023c2003280244210d0b2003200d41016a360244200f200d6a200e41807f72200e41ff0071200e410776220d1b3a0000200d210e200d0d000b0240024020110d00410121040c010b200320023602302003200936022c200320113602282003200341286a200341386a10900620032d0000220d411f470d02410021040b200aa72106200a422088a72210210e03400240024020032802402003280244220d460d00200328023c210f0c010b200d41016a220f200d490d17200d4101742213200f2013200f4b1b22134100480d1702400240200d0d002013102d210f0c010b200328023c200d20131031210f0b200f450d25200320133602402003200f36023c2003280244210d0b2003200d41016a360244200f200d6a200e41807f72200e41ff0071200e410776220d1b3a0000200d210e200d0d000b024002402003280240220e2003280244220d6b2010490d00200328023c210e0c010b200d20106a220f200d490d16200e410174220d200f200d200f4b1b220d4100480d1602400240200e0d00200d102d210e0c010b200328023c200e200d1031210e0b200e450d242003200d3602402003200e36023c2003280244210d0b2003200d20106a360244200e200d6a2007201010e8061a02402006450d002007102f0b02402004450d002011450d0002402002450d002002410474210e2011210d03400240200d2d00004109470d000240200d41046a2213280200220f28020441ffffffff0371450d00200f280200102f2013280200210f0b200f102f0b200d41106a210d200e41706a220e0d000b0b2009450d002011102f0b2012200c470d000b200c21120c010b20032d0003411074210e20032f0001210f20032903082120200328020421130240200aa7450d002007102f0b200f200e72210e20032012360258200341d0006a10a00602402003280240450d00200328023c102f0b2000200e3b00012000200d3a0000200041036a200e4110763a0000200041086a2020370000200041046a2013360000410021114101210f41012113410121074101210241012109410121044101210e41012110410121120c290b200320123602580b200341d0006a10a00620032802402109200328023c21022003280238221041086a2113201041046a211120032802442207210e03400240024020112802002013280200220d460d002010280200210f0c010b200d41016a220f200d490d13200d4101742212200f2012200f4b1b22124100480d1302400240200d0d002012102d210f0c010b2010280200200d20121031210f0b200f450d212010200f360200201120123602002013280200210d0b2013200d41016a360200200f200d6a200e41807f72200e41ff0071200e410776220d1b3a0000200d210e200d0d000b02400240201041046a280200220e201041086a280200220d6b2007490d002010280200210e0c010b200d20076a220f200d490d12200e410174220d200f200d200f4b1b220d4100480d1202400240200e0d00200d102d210e0c010b2010280200200e200d1031210e0b200e450d202010200e360200201041046a200d360200201041086a280200210d0b201041086a200d20076a360200200e200d6a2002200710e8061a02402009450d002002102f0b41002110410121074101211241012102410121084101210b4101210941012104410121064101210c410121134101210e4101210f410121110c1d0b2001410c6a2802002112200141086a2802002107200141046a280200211302400240200241046a280200200241086a280200220d460d002002280200210e0c010b200d41016a220e200d490d0e200d410174220f200e200f200e4b1b220f4100480d0e02400240200d0d00200f102d210e0c010b2002280200200d200f1031210e0b200e450d0d2002200e360200200241046a200f360200200241086a280200210d0b200241086a200d41016a360200200e200d6a410a3a0000200341246a41003602002003420137021c200320023602182013201241186c6a21054100210d4100210e2012210f034002400240200d200e460d00200328021c210d0c010b200d41016a2210200d490d0f200d41017422112010201120104b1b22104100480d0f02400240200d0d002010102d210d0c010b200328021c200d20101031210d0b200d450d0e200320103602202003200d36021c0b2003200e41016a360224200d200e6a200f41807f72200f41ff0071200f410776220f1b3a00000240200f450d002003280220210d2003280224210e200f210f0c010b0b20032005360234200320133602302003200736022c2003201336022802402012450d0020034101722102200341026a210702400340201341186a210620132802002209450d01201341146a280200210c201341106a2802002108201328020c21042013280208210f2013280204210b4100210e200341003602442003420137023c2009200f4103746a21122003200341186a3602384100210d034002400240200e200d460d00200328023c210e0c010b200e41016a220d200e490d15200e4101742213200d2013200d4b1b220d4100480d1502400240200e0d00200d102d210e0c010b200328023c200e200d1031210e0b200e450d112003200d3602402003200e36023c2003280244210d0b2003200d41016a360244200e200d6a200f41807f72200f41ff0071200f410776220f1b3a00000240200f450d002003280240210e2003280244210d200f210f0c010b0b024020122009460d002009211003402010290200220a422088a7220d41ff01714104460d01201041086a2110200d4118744118752111200aa7210e03400240024020032802402003280244220d460d00200328023c210f0c010b200d41016a220f200d490d17200d4101742213200f2013200f4b1b22134100480d1702400240200d0d002013102d210f0c010b200328023c200d20131031210f0b200f450d25200320133602402003200f36023c2003280244210d0b2003200d41016a360244200f200d6a200e41807f72200e41ff0071200e410776220d1b3a0000200d210e200d0d000b0240024020032802402003280244220d460d00200328023c210e0c010b200d41016a220e200d490d16200d410174220f200e200f200e4b1b220f4100480d1602400240200d0d00200f102d210e0c010b200328023c200d200f1031210e0b200e450d242003200f3602402003200e36023c2003280244210d0b2003200d41016a360244200e200d6a2011417f73220d413f7141c00072200d2011417f4a1b3a000020102012470d000b0b0240200b450d002009102f0b2004200c410474220e6a210f2004210d024002400240200c450d00200e41706a21132004210d0340200d2d0000210e2007200d41036a2d00003a00002003200d41016a2f00003b01000240200e41ac01470d00200d41106a210d0c020b200341cc006a41026a20072d000022103a0000200320032f010022113b014c200d41046a2802002112200d41086a290300210a200220113b0000200241026a20103a00002003200e3a00002003200a37030820032012360204200341d0006a2003200341386a109806024020032d00502211411f4722100d00201341706a2113200d41106a220d200f470d010c030b0b20032d0053210920032f0051210c2003280254210b2003290358210a02402013450d004100210e03400240200d200e6a220f41106a2d00004109470d000240200f41146a2212280200220f28020441ffffffff0371450d00200f280200102f2012280200210f0b200f102f0b2013200e41106a220e470d000b0b02402008450d002004102f0b02402003280240450d00200328023c102f0b2010450d02200c200941107472210d20032006360230200341286a10a10602402003280220450d00200328021c102f0b2000200d3b0001200020113a0000200041036a200d4110763a0000200041086a200a370000200041046a200b360000410021104101210f41012113410121074101210241012109410121044101210e0c2b0b200f200d460d000340200d41106a210e0240200d2d00004109470d000240200d41046a2213280200220d28020441ffffffff0371450d00200d280200102f2013280200210d0b200d102f0b200e210d200f200e470d000b0b02402008450d002004102f0b2003280240210c200328023c21042003280238210f20032802442209210e034002400240200f41086a2211280200200f410c6a2210280200220d460d00200f28020421130c010b200d41016a2213200d490d16200d41017422122013201220134b1b22124100480d1602400240200d0d002012102d21130c010b200f280204200d2012103121130b2013450d24200f2013360204201120123602002010280200210d0b2010200d41016a3602002013200d6a200e41807f72200e41ff0071200e410776220d1b3a0000200d210e200d0d000b024002402011280200220e2010280200220d6b2009490d00200f280204210e0c010b200d20096a2213200d490d15200e410174220d2013200d20134b1b220d4100480d1502400240200e0d00200d102d210e0c010b200f280204200e200d1031210e0b200e450d23200f200e3602042011200d3602002010280200210d0b2010200d20096a360200200e200d6a2004200910e8061a200c450d002004102f0b2006211320062005470d000b200521060b200320063602300b200341286a10a10620032802202109200328021c21022003280218221041086a2113201041046a211120032802242207210e03400240024020112802002013280200220d460d002010280200210f0c010b200d41016a220f200d490d12200d4101742212200f2012200f4b1b22124100480d1202400240200d0d002012102d210f0c010b2010280200200d20121031210f0b200f450d202010200f360200201120123602002013280200210d0b2013200d41016a360200200f200d6a200e41807f72200e41ff0071200e410776220d1b3a0000200d210e200d0d000b02400240201041046a280200220e201041086a280200220d6b2007490d002010280200210e0c010b200d20076a220f200d490d11200e410174220d200f200d200f4b1b220d4100480d1102400240200e0d00200d102d210e0c010b2010280200200e200d1031210e0b200e450d1f2010200e360200201041046a200d360200201041086a280200210d0b201041086a200d20076a360200200e200d6a2002200710e8061a02402009450d002002102f0b4100210f410121074101211241012102410121084101210b4101210941012104410121064101210c410121134101210e0c1b0b2001410c6a2802002111200141086a2802002112200141046a280200210902400240200241046a280200200241086a280200220d460d002002280200210e0c010b200d41016a220e200d490d0d200d410174220f200e200f200e4b1b220f4100480d0d02400240200d0d00200f102d210e0c010b2002280200200d200f1031210e0b200e450d0c2002200e360200200241046a200f360200200241086a280200210d0b200241086a200d41016a360200200e200d6a41093a0000200341c4006a41003602002003420137023c2003200236023820092011411c6c6a21084100210d4100210e2011210f034002400240200d200e460d00200328023c210d0c010b200d41016a2213200d490d0e200d41017422102013201020134b1b22134100480d0e02400240200d0d002013102d210d0c010b200328023c200d20131031210d0b200d450d0d200320133602402003200d36023c0b2003200e41016a360244200d200e6a200f41807f72200f41ff0071200f410776220f1b3a00000240200f450d002003280240210d2003280244210e200f210f0c010b0b2003200836025c20032009360258200320123602542003200936025002402011450d000240024003402009220d411c6a2109200d2802102212450d02200d410c6a2802002102200d41086a2802002104200d2802042107200d41146a290200210a200d280200210e03400240024020032802402003280244220d460d00200328023c210f0c010b200d41016a220f200d490d12200d4101742213200f2013200f4b1b22134100480d1202400240200d0d002013102d210f0c010b200328023c200d20131031210f0b200f450d11200320133602402003200f36023c2003280244210d0b2003200d41016a360244200f200d6a200e41807f72200e41ff0071200e410776220d1b3a0000200d210e200d0d000b0240024020070d004101210c0c010b200320023602302003200436022c200320073602282003200341286a200341386a10900620032d0000220d411f470d024100210c0b2012200a422088a7220e4102746a2111200aa7210603400240024020032802402003280244220d460d00200328023c210f0c010b200d41016a220f200d490d12200d4101742213200f2013200f4b1b22134100480d1202400240200d0d002013102d210f0c010b200328023c200d20131031210f0b200f450d11200320133602402003200f36023c2003280244210d0b2003200d41016a360244200f200d6a200e41807f72200e41ff0071200e410776220d1b3a0000200d210e200d0d000b024020112012460d002012211003402010280200210e03400240024020032802402003280244220d460d00200328023c210f0c010b200d41016a220f200d490d14200d4101742213200f2013200f4b1b22134100480d1402400240200d0d002013102d210f0c010b200328023c200d20131031210f0b200f450d13200320133602402003200f36023c2003280244210d0b2003200d41016a360244200f200d6a200e41807f72200e41ff0071200e410776220d1b3a0000200d210e200d0d000b201041046a22102011470d000b0b02402006450d002012102f0b02402007450d00200c450d0002402002450d002002410474210e2007210d03400240200d2d00004109470d000240200d41046a2213280200220f28020441ffffffff0371450d00200f280200102f2013280200210f0b200f102f0b200d41106a210d200e41706a220e0d000b0b2004450d002007102f0b20092008470d000b200821090c010b20032d0003411074210e20032f0001210f20032903082120200328020421130240200aa7450d002012102f0b200f200e72210e20032009360258200341d0006a10a00602402003280240450d00200328023c102f0b2000200e3b00012000200d3a0000200041036a200e4110763a0000200041086a2020370000200041046a20133600004100210e4101210f41012113410121074101210241012109410121040c250b200320093602580b200341d0006a10a00620032802402109200328023c21022003280238221041086a2113201041046a211120032802442207210e03400240024020112802002013280200220d460d002010280200210f0c010b200d41016a220f200d490d0e200d4101742212200f2012200f4b1b22124100480d0e02400240200d0d002012102d210f0c010b2010280200200d20121031210f0b200f450d0d2010200f360200201120123602002013280200210d0b2013200d41016a360200200f200d6a200e41807f72200e41ff0071200e410776220d1b3a0000200d210e200d0d000b02400240201041046a280200220e201041086a280200220d6b2007490d002010280200210e0c010b200d20076a220f200d490d0d200e410174220d200f200d200f4b1b220d4100480d0d02400240200e0d00200d102d210e0c010b2010280200200e200d1031210e0b200e450d0c2010200e360200201041046a200d360200201041086a280200210d0b201041086a200d20076a360200200e200d6a2002200710e8061a02402009450d002002102f0b4100210e410121074101211241012102410121084101210b4101210941012104410121064101210c410121130c190b200141046a280200210d02400240200241046a280200200241086a280200220e460d002002280200210f0c010b200e41016a220f200e490d0c200e4101742213200f2013200f4b1b22134100480d0c02400240200e0d002013102d210f0c010b2002280200200e20131031210f0b200f450d0b2002200f360200200241046a2013360200200241086a280200210e0b200241086a200e41016a360200200f200e6a410c3a000041012112410021134100210e03400240200e2013470d002013410174220f201341016a2210200f20104b1b220f4100480d0d0240024020130d00200f102d21120c010b20122013200f103121120b2012450d0c200f21130b2012200e6a200d41807f72200d41ff0071200d410776220f1b3a0000200e41016a210e200f210d200f0d000b200e417f6a2104200241086a2111200241046a2107200e210f03400240024020072802002011280200220d460d00200228020021100c010b200d41016a2210200d490d0d200d41017422092010200920104b1b22094100480d0d02400240200d0d002009102d21100c010b2002280200200d2009103121100b2010450d0c20022010360200200720093602002011280200210d0b2011200d41016a3602002010200d6a200f41807f72200f41ff0071200f410776220d1b3a0000200d210f200d0d000b02400240200241046a280200220f200241086a280200220d6b20044d0d002002280200210f0c010b200d200e6a2210200d490d0c200f410174220d2010200d20104b1b220d4100480d0c02400240200f0d00200d102d210f0c010b2002280200200f200d1031210f0b200f450d0b2002200f360200200241046a200d360200200241086a280200210d0b200241086a200d200e6a360200200f200d6a2012200e10e8061a410121072013450d012012102f410121120c0f0b200141046a280200210d02400240200241046a280200200241086a280200220e460d002002280200210f0c010b200e41016a220f200e490d0b200e4101742213200f2013200f4b1b22134100480d0b02400240200e0d002013102d210f0c010b2002280200200e20131031210f0b200f450d0a2002200f360200200241046a2013360200200241086a280200210e0b200241086a200e41016a360200200f200e6a41083a000041012112410021134100210e03400240200e2013470d002013410174220f201341016a2210200f20104b1b220f4100480d0c0240024020130d00200f102d21120c010b20122013200f103121120b2012450d0b200f21130b2012200e6a200d41807f72200d41ff0071200d410776220f1b3a0000200e41016a210e200f210d200f0d000b200e417f6a2104200241086a2111200241046a2107200e210f03400240024020072802002011280200220d460d00200228020021100c010b200d41016a2210200d490d0c200d41017422092010200920104b1b22094100480d0c02400240200d0d002009102d21100c010b2002280200200d2009103121100b2010450d0b20022010360200200720093602002011280200210d0b2011200d41016a3602002010200d6a200f41807f72200f41ff0071200f410776220d1b3a0000200d210f200d0d000b02400240200241046a280200220f200241086a280200220d6b20044d0d002002280200210f0c010b200d200e6a2210200d490d0b200f410174220d2010200d20104b1b220d4100480d0b02400240200f0d00200d102d210f0c010b2002280200200f200d1031210f0b200f450d0a2002200f360200200241046a200d360200200241086a280200210d0b200241086a200d200e6a360200200f200d6a2012200e10e8061a410121072013450d002012102f410121120c0e0b410121120c0d0b2001410c6a2802002112200141086a2802002105200141046a280200210b02400240200241046a280200200241086a280200220d460d002002280200210e0c010b200d41016a220e200d490d09200d410174220f200e200f200e4b1b220f4100480d0902400240200d0d00200f102d210e0c010b2002280200200d200f1031210e0b200e450d082002200e360200200241046a200f360200200241086a280200210d0b200241086a200d41016a360200200e200d6a41073a0000200b201241146c6a2106410021104100210d4100210f4101210e2012211303400240200d200f470d002010200d41016a220f2010200f4b1b220f4100480d0a0240024020100d00200f102d210e0c010b200e200d200f1031210e0b200e450d090b200e200d6a201341807f72201341ff0071201341077622111b3a0000201041026a2110200d41016a210d2011211320110d000b02400240024020120d00200b21070c010b200b21100340201041146a2107201028020c220c4104460d012010280204210820102802002104200d4101742111201041106a280200211320102802082209211003400240200d200f470d00200d41016a220f200d490d0d2011200f2011200f4b1b220f4100480d0d02400240200d0d00200f102d210e0c010b200e200d200f1031210e0b200e450d0c0b200e200d6a201041807f72201041ff0071201041077622121b3a0000201141026a2111200d41016a210d2012211020120d000b0240200f200d6b20094f0d00200d20096a2210200d490d0c200f41017422112010201120104b1b22104100480d0c02400240200f0d002010102d210e0c010b200e200f20101031210e0b200e450d0b2010210f0b200e200d6a2004200910e8061a2009200f6b200d6a211002402008450d002004102f0b024020100d00200f41016a2210200f490d0c200f41017422112010201120104b1b22104100480d0c02400240200f0d002010102d210e0c010b200e200f20101031210e0b200e450d0b2010210f0b200e20096a200d6a200c3a00002009200d6a41016a210d03400240200d200f470d00200d41016a220f200d490d0d200d4101742210200f2010200f4b1b220f4100480d0d02400240200d0d00200f102d210e0c010b200e200d200f1031210e0b200e450d0c0b200e200d6a201341807f72201341ff0071201341077622101b3a0000200d41016a210d2010211320100d000b2007211020072006470d000c020b0b20062007460d000340200741146a21130240200741046a280200450d002007280200102f0b2013210720062013470d000b0b02402005450d00200b102f0b200241086a2112200241046a2107200d2110034002400240200728020020122802002213460d00200228020021110c010b201341016a22112013490d0a201341017422092011200920114b1b22094100480d0a0240024020130d002009102d21110c010b200228020020132009103121110b2011450d092002201136020020072009360200201228020021130b2012201341016a360200201120136a201041807f72201041ff0071201041077622131b3a00002013211020130d000b02400240200241046a2802002210200241086a28020022136b200d490d00200228020021100c010b2013200d6a22112013490d09201041017422132011201320114b1b22134100480d090240024020100d002013102d21100c010b200228020020102013103121100b2010450d0820022010360200200241046a2013360200200241086a28020021130b200241086a2013200d6a360200201020136a200e200d10e8061a41002113410121070240200f450d00200e102f0b4101211241012102410121084101210b4101210941012104410121064101210c0c140b2001410c6a2802002104200141086a2802002106200141046a280200210902400240200241046a280200200241086a280200220d460d002002280200210e0c010b200d41016a220e200d490d08200d410174220f200e200f200e4b1b220f4100480d0802400240200d0d00200f102d210e0c010b2002280200200d200f1031210e0b200e450d072002200e360200200241046a200f360200200241086a280200210d0b200241086a200d41016a360200200e200d6a41063a0000200341dc006a41003602002003420137025420032002360250200920044104746a21114100210d4100210e2004210f034002400240200d200e460d002003280254210d0c010b200d41016a2213200d490d09200d41017422102013201020134b1b22134100480d0902400240200d0d002013102d210d0c010b2003280254200d20131031210d0b200d450d08200320133602582003200d3602540b2003200e41016a36025c200d200e6a200f41807f72200f41ff0071200f410776220f1b3a00000240200f450d002003280258210d200328025c210e200f210f0c010b0b20092110024002402004450d004100210f0340200341086a220d2009200f6a220e41086a2802003602002003200e2902003703000240200e410d6a2d000022104102470d00200e41106a21100c020b200341186a41086a200d280200220d36020020032003290300220a370318200e410c6a2d00002112200341286a41086a2207200d3602002003200a370328024002402003280258200328025c220d460d00200328025421130c010b200d41016a2213200d490d0b200d41017422022013200220134b1b22024100480d0b02400240200d0d002002102d21130c010b2003280254200d2002103121130b2013450d0a2003200236025820032013360254200328025c210d0b2003200d41016a36025c2013200d6a41fdf9ff77201241037441187141107376413f7141c000723a0000024002402003280258200328025c220d460d00200328025421130c010b200d41016a2213200d490d0b200d41017422122013201220134b1b22124100480d0b02400240200d0d002012102d21130c010b2003280254200d2012103121130b2013450d0a2003201236025820032013360254200328025c210d0b2003200d41016a36025c2013200d6a20104100473a0000200341386a41086a2007280200360200200320032903283703382003200341386a200341d0006a109006024020032d00002212411f470d00200f41106a210f200e41106a2011470d010c030b0b20032d0003210720032f000121022003280204210c2003290308210a0240200441047441706a200f460d00200e41106a2110034002402010280208220e450d002010280200210d200e410474210e03400240200d2d00004109470d000240200d41046a2213280200220f28020441ffffffff0371450d00200f280200102f2013280200210f0b200f102f0b200d41106a210d200e41706a220e0d000b0b201041106a210d0240201041046a280200450d002010280200102f0b200d2110200d2011470d000b0b2007411074210d02402006450d002009102f0b2002200d72210d02402003280258450d002003280254102f0b2000200d3b0001200020123a0000200041036a200d4110763a0000200041086a200a370000200041046a200c360000410021044101210f410121134101210741012102410121090c1f0b20112010460d00034002402010280208220e450d002010280200210d200e410474210e03400240200d2d00004109470d000240200d41046a2213280200220f28020441ffffffff0371450d00200f280200102f2013280200210f0b200f102f0b200d41106a210d200e41706a220e0d000b0b201041106a210d0240201041046a280200450d002010280200102f0b200d2110200d2011470d000b0b02402006450d002009102f0b20032802582109200328025421022003280250221041086a2113201041046a2111200328025c2207210e03400240024020112802002013280200220d460d002010280200210f0c010b200d41016a220f200d490d09200d4101742212200f2012200f4b1b22124100480d0902400240200d0d002012102d210f0c010b2010280200200d20121031210f0b200f450d082010200f360200201120123602002013280200210d0b2013200d41016a360200200f200d6a200e41807f72200e41ff0071200e410776220d1b3a0000200d210e200d0d000b02400240201041046a280200220e201041086a280200220d6b2007490d002010280200210e0c010b200d20076a220f200d490d08200e410174220d200f200d200f4b1b220d4100480d0802400240200e0d00200d102d210e0c010b2010280200200e200d1031210e0b200e450d072010200e360200201041046a200d360200201041086a280200210d0b201041086a200d20076a360200200e200d6a2002200710e8061a02402009450d002002102f0b4100210c410121074101211241012102410121084101210b4101210941012104410121060c120b2001410c6a2802002107200141086a2802002109200141046a280200211202400240200241046a280200200241086a280200220d460d002002280200210e0c010b200d41016a220e200d490d07200d410174220f200e200f200e4b1b220f4100480d0702400240200d0d00200f102d210e0c010b2002280200200d200f1031210e0b200e450d062002200e360200200241046a200f360200200241086a280200210d0b200241086a200d41016a360200200e200d6a41053a0000200341dc006a41003602002003420137025420032002360250410121104100210f4100210d2007210e03400240200d200f470d00200f41016a2213200f490d08200f41017422112013201120134b1b22134100480d0802400240200f0d002013102d21100c010b2010200f2013103121100b2010450d0720032013360258200320103602542013210f0b2003200d41016a221136025c2010200d6a200e41807f72200e41ff0071200e41077622131b3a00002011210d2013210e20130d000b024002402007450d002007410c6c21134100210d03402012200d6a220e41046a280200220f4102460d012003200e280200200f200e41086a280200200341d0006a109b0620032d0000220e411f470d022013200d410c6a220d470d000b0b02402009450d002012102f0b20032802582109200328025421022003280250221041086a2113201041046a2111200328025c2207210e03400240024020112802002013280200220d460d002010280200210f0c010b200d41016a220f200d490d09200d4101742212200f2012200f4b1b22124100480d0902400240200d0d002012102d210f0c010b2010280200200d20121031210f0b200f450d082010200f360200201120123602002013280200210d0b2013200d41016a360200200f200d6a200e41807f72200e41ff0071200e410776220d1b3a0000200d210e200d0d000b02400240201041046a280200220e201041086a280200220d6b2007490d002010280200210e0c010b200d20076a220f200d490d08200e410174220d200f200d200f4b1b220d4100480d0802400240200e0d00200d102d210e0c010b2010280200200e200d1031210e0b200e450d072010200e360200201041046a200d360200201041086a280200210d0b201041086a200d20076a360200200e200d6a2002200710e8061a02402009450d002002102f0b41002106410121074101211241012102410121084101210b41012109410121040c110b20032d0003411074210d20032f0001210f2003290308210a2003280204211302402009450d002012102f0b200f200d72210d02402003280258450d002003280254102f0b2000200d3b00012000200e3a0000200041036a200d4110763a0000200041086a200a370000200041046a2013360000410021094101210f4101211341012107410121020c1b0b2001410c6a2802002112200141086a2802002109200141046a280200210702400240200241046a280200200241086a280200220d460d002002280200210e0c010b200d41016a220e200d490d06200d410174220f200e200f200e4b1b220f4100480d0602400240200d0d00200f102d210e0c010b2002280200200d200f1031210e0b200e450d052002200e360200200241046a200f360200200241086a280200210d0b200241086a200d41016a360200200e200d6a41043a0000200341dc006a41003602002003420137025420032002360250410121104100210f4100210d2012210e03400240200d200f470d00200f41016a2213200f490d07200f41017422112013201120134b1b22134100480d0702400240200f0d002013102d21100c010b2010200f2013103121100b2010450d0620032013360258200320103602542013210f0b2003200d41016a221136025c2010200d6a200e41807f72200e41ff0071200e41077622131b3a00002011210d2013210e20130d000b024002402012450d002012410c6c21024100210e03402007200e6a220d41046a28020022134102460d01200d2802002110200d41086a2802002111024002402003280258200328025c220d460d002003280254210f0c010b200d41016a220f200d490d09200d4101742212200f2012200f4b1b22124100480d0902400240200d0d002012102d210f0c010b2003280254200d20121031210f0b200f450d08200320123602582003200f3602540b2003200d41016a36025c200f200d6a41f0003a00002003201020132011200341d0006a109b0620032d0000220d411f470d022002200e410c6a220e470d000b0b02402009450d002007102f0b20032802582109200328025421022003280250221041086a2113201041046a2111200328025c2207210e03400240024020112802002013280200220d460d002010280200210f0c010b200d41016a220f200d490d08200d4101742212200f2012200f4b1b22124100480d0802400240200d0d002012102d210f0c010b2010280200200d20121031210f0b200f450d072010200f360200201120123602002013280200210d0b2013200d41016a360200200f200d6a200e41807f72200e41ff0071200e410776220d1b3a0000200d210e200d0d000b02400240201041046a280200220e201041086a280200220d6b2007490d002010280200210e0c010b200d20076a220f200d490d07200e410174220d200f200d200f4b1b220d4100480d0702400240200e0d00200d102d210e0c010b2010280200200e200d1031210e0b200e450d062010200e360200201041046a200d360200201041086a280200210d0b201041086a200d20076a360200200e200d6a2002200710e8061a02402009450d002002102f0b41002104410121074101211241012102410121084101210b410121090c0f0b20032d0003411074210e20032f0001210f2003290308210a2003280204211302402009450d002007102f0b200f200e72210e02402003280258450d002003280254102f0b2000200e3b00012000200d3a0000200041036a200e4110763a0000200041086a200a370000200041046a2013360000410021024101210f41012113410121070c190b2001410c6a2802002112200141086a2802002104200141046a280200210902400240200241046a280200200241086a280200220d460d002002280200210e0c010b200d41016a220e200d490d05200d410174220f200e200f200e4b1b220f4100480d0502400240200d0d00200f102d210e0c010b2002280200200d200f1031210e0b200e450d042002200e360200200241046a200f360200200241086a280200210d0b200241086a200d41016a360200200e200d6a41033a0000200920124102746a21074100210f4100210d41002111410121102012210e03400240200d2011470d00200f200d41016a2213200f20134b1b22114100480d0602400240200f0d002011102d21100c010b2010200d2011103121100b2010450d050b2010200d6a200e41807f72200e41ff0071200e41077622131b3a0000200f41026a210f200d41016a210d2013210e20130d000b02402012450d00200921120340200d410174210f2012280200210e03400240200d2011470d00200d41016a2213200d490d08200f2013200f20134b1b22114100480d0802400240200d0d002011102d21100c010b2010200d2011103121100b2010450d070b2010200d6a200e41807f72200e41ff0071200e41077622131b3a0000200f41026a210f200d41016a210d2013210e20130d000b201241046a22122007470d000b0b02402004450d002009102f0b200241086a2112200241046a2107200d210f03400240024020072802002012280200220e460d00200228020021130c010b200e41016a2213200e490d06200e41017422092013200920134b1b22094100480d0602400240200e0d002009102d21130c010b2002280200200e2009103121130b2013450d0520022013360200200720093602002012280200210e0b2012200e41016a3602002013200e6a200f41807f72200f41ff0071200f410776220e1b3a0000200e210f200e0d000b02400240200241046a280200220f200241086a280200220e6b200d490d002002280200210f0c010b200e200d6a2213200e490d05200f410174220e2013200e20134b1b220e4100480d0502400240200f0d00200e102d210f0c010b2002280200200f200e1031210f0b200f450d042002200f360200200241046a200e360200200241086a280200210e0b200241086a200e200d6a360200200f200e6a2010200d10e8061a410021094101210702402011450d002010102f0b4101211241012102410121084101210b0c0c0b2001410c6a2802002111200141086a2802002116200141046a280200211402400240200241046a280200200241086a280200220d460d002002280200210e0c010b200d41016a220e200d490d04200d410174220f200e200f200e4b1b220f4100480d0402400240200d0d00200f102d210e0c010b2002280200200d200f1031210e0b200e450d032002200e360200200241046a200f360200200241086a280200210d0b200241086a200d41016a360200200e200d6a41023a0000200341dc006a410036020020034201370254200320023602502014201141286c6a21024100210d4100210e2011210f034002400240200d200e460d002003280254210d0c010b200d41016a2213200d490d05200d41017422102013201020134b1b22134100480d0502400240200d0d002013102d210d0c010b2003280254200d20131031210d0b200d450d04200320133602582003200d3602540b2003200e41016a36025c200d200e6a200f41807f72200f41ff0071200f410776220f1b3a00000240200f450d002003280258210d200328025c210e200f210f0c010b0b20142112024002402011450d00201141286c41586a21092014211203402012220d41286a2112200d2d0018220c4104460d01200d41196a2f0000200d411b6a2d0000411074722105200d41206a290000210a200d411c6a2800002110200d41146a2802002107200d41106a2802002108200d28020c2104200d280204210b200d2802002106200d2802082211210e0340024002402003280258200328025c220d460d002003280254210f0c010b200d41016a220f200d490d08200d4101742213200f2013200f4b1b22134100480d0802400240200d0d002013102d210f0c010b2003280254200d20131031210f0b200f450d07200320133602582003200f3602540b2003200d41016a36025c200f200d6a200e41807f72200e41ff0071200e410776220d1b3a0000200d210e200d0d000b024002402003280258220d200328025c220f6b2011490d00200328025421130c010b200f20116a220e200f490d07200d4101742213200e2013200e4b1b220e4100480d0702400240200d0d00200e102d21130c010b2003280254200d200e103121130b2013450d062003200e36025820032013360254200e210d0b2003200f20116a220e36025c2013200f6a2006201110e8061a0240200b450d002006102f0b2007210f034002400240200d200e460d002003280254210d0c010b200d41016a2213200d490d08200d41017422112013201120134b1b22134100480d0802400240200d0d002013102d210d0c010b2003280254200d20131031210d0b200d450d07200320133602582003200d3602540b2003200e41016a36025c200d200e6a200f41807f72200f41ff0071200f410776220f1b3a00000240200f450d002003280258210d200328025c210e200f210f0c010b0b024002402003280258220d200328025c220f6b2007490d002003280254210e0c010b200f20076a220e200f490d07200d4101742213200e2013200e4b1b22134100480d0702400240200d0d002013102d210e0c010b2003280254200d20131031210e0b200e450d06200320133602582003200e3602542013210d0b2003200f20076a221336025c200e200f6a2004200710e8061a02402008450d002004102f0b024002400240024002400240200c0e0400010203000b0240200d2013470d00200d41016a220f200d490d0c200d4101742211200f2011200f4b1b220f4100480d0c02400240200d0d00200f102d210e0c010b200e200d200f1031210e0b200e450d0b2003200f3602582003200e3602540b2003201341016a36025c200e20136a41003a00000340024002402003280258200328025c220d460d002003280254210e0c010b200d41016a220e200d490d0d200d410174220f200e200f200e4b1b220f4100480d0d02400240200d0d00200f102d210e0c010b2003280254200d200f1031210e0b200e450d0c2003200f3602582003200e3602540b2003200d41016a36025c200e200d6a201041807f72201041ff00712010410776220d1b3a0000200d2110200d0d000c040b0b0240200d2013470d00200d41016a220f200d490d0b200d4101742211200f2011200f4b1b220f4100480d0b02400240200d0d00200f102d210e0c010b200e200d200f1031210e0b200e450d0a2003200f3602582003200e3602540b2003201341016a36025c200e20136a41013a0000024002402003280258200328025c220d460d002003280254210e0c010b200d41016a220e200d490d0b200d410174220f200e200f200e4b1b220f4100480d0b02400240200d0d00200f102d210e0c010b2003280254200d200f1031210e0b200e450d0a2003200f3602582003200e3602540b2003200d41016a36025c200e200d6a41f0003a000020032010200aa7200a422088a7200341d0006a109b0620032d0000220d411f460d0220032f000120032d000341107472210e0c030b0240200d2013470d00200d41016a220f200d490d0a200d4101742211200f2011200f4b1b220f4100480d0a02400240200d0d00200f102d210e0c010b200e200d200f1031210e0b200e450d092003200f3602582003200e3602540b2003201341016a36025c200e20136a41023a000020032010200aa7200a422088a7200341d0006a109b0620032d0000220d411f460d0120032f000120032d000341107472210e0c020b0240200d2013470d00200d41016a220f200d490d09200d4101742210200f2010200f4b1b220f4100480d0902400240200d0d00200f102d210e0c010b200e200d200f1031210e0b200e450d082003200f3602582003200e3602540b2003201341016a36025c200e20136a41033a0000024002402003280258200328025c220d460d002003280254210e0c010b200d41016a220e200d490d09200d410174220f200e200f200e4b1b220f4100480d0902400240200d0d00200f102d210e0c010b2003280254200d200f1031210e0b200e450d082003200f3602582003200e3602540b2003200d41016a36025c200e200d6a2005417f73220d413f7141c00072200d2005411874411875417f4a1b3a0000024002402003280258200328025c220d460d002003280254210e0c010b200d41016a220e200d490d09200d410174220f200e200f200e4b1b220f4100480d0902400240200d0d00200f102d210e0c010b2003280254200d200f1031210e0b200e450d082003200f3602582003200e3602540b2003200d41016a36025c200e200d6a20054180fe03714100473a00000b200941586a210920122002470d010c030b0b2003290308210a2003280204210f024020022012460d0003400240201241046a280200450d002012280200102f0b0240201241106a280200450d002012410c6a280200102f0b201241286a2112200941586a22090d000b0b02402016450d002014102f0b02402003280258450d002003280254102f0b2000200e3b00012000200d3a0000200041036a200e4110763a0000200041086a200a370000200041046a200f360000410021074101210f410121130c180b20022012460d0003400240201241046a280200450d002012280200102f0b201241286a210d0240201241106a280200450d002012410c6a280200102f0b200d21122002200d470d000b0b02402016450d002014102f0b20032802582109200328025421022003280250221041086a2113201041046a2111200328025c2207210e03400240024020112802002013280200220d460d002010280200210f0c010b200d41016a220f200d490d05200d4101742212200f2012200f4b1b22124100480d0502400240200d0d002012102d210f0c010b2010280200200d20121031210f0b200f450d042010200f360200201120123602002013280200210d0b2013200d41016a360200200f200d6a200e41807f72200e41ff0071200e410776220d1b3a0000200d210e200d0d000b02400240201041046a280200220e201041086a280200220d6b2007490d002010280200210e0c010b200d20076a220f200d490d04200e410174220d200f200d200f4b1b220d4100480d0402400240200e0d00200d102d210e0c010b2010280200200e200d1031210e0b200e450d032010200e360200201041046a200d360200201041086a280200210d0b201041086a200d20076a360200200e200d6a2002200710e8061a02402009450d002002102f0b4100210b410121074101211241012102410121080c0a0b200c2009460d000340200941106a210d0240200941046a280200450d002009280200102f0b200d2109200c200d470d000b0b02402014450d002005102f0b200241086a2112200241046a2107200e210f03400240024020072802002012280200220d460d00200228020021130c010b200d41016a2213200d490d03200d41017422092013200920134b1b22094100480d0302400240200d0d002009102d21130c010b2002280200200d2009103121130b2013450d0220022013360200200720093602002012280200210d0b2012200d41016a3602002013200d6a200f41807f72200f41ff0071200f410776220d1b3a0000200d210f200d0d000b02400240200241046a280200220f200241086a280200220d6b200e490d002002280200210f0c010b200d200e6a2213200d490d02200f410174220d2013200d20134b1b220d4100480d0202400240200f0d00200d102d210f0c010b2002280200200f200d1031210f0b200f450d012002200f360200200241046a200d360200200241086a280200210d0b200241086a200d200e6a360200200f200d6a2010200e10e8061a41002108410121072011450d022010102f0c020b1036000b1038000b41012112410121020c040b200241086a200d41016a360200200e200d6a41003a0000200341dc006a41003602002003420137025420032002360250200a422088a721134100210d4100210e200aa72212210f034002400240200d200e460d002003280254210d0c010b200d41016a2210200d490d02200d41017422112010201120104b1b22104100480d0202400240200d0d002010102d210d0c010b2003280254200d20101031210d0b200d450d10200320103602582003200d3602540b2003200e41016a36025c200d200e6a200f41807f72200f41ff0071200f41077622101b3a00002003280258210d200328025c210e2010210f20100d000b02400240200d200e6b2012490d00200328025421100c010b200e20126a220f200e490d01200d4101742210200f2010200f4b1b220f4100480d0102400240200d0d00200f102d21100c010b2003280254200d200f103121100b2010450d0f2003200f36025820032010360254200f210d0b2003200e20126a220f36025c2010200e6a200c201210e8061a0240200b450d00200c102f0b034002400240200d200f460d002003280254210d0c010b200d41016a220e200d490d02200d4101742210200e2010200e4b1b220e4100480d0202400240200d0d00200e102d210d0c010b2003280254200d200e1031210d0b200d450d102003200e3602582003200d3602540b2003200f41016a36025c200d200f6a201341807f72201341ff00712013410776220e1b3a00000240200e450d002003280258210d200328025c210f200e21130c010b0b4101210202402009450d002007210e0340024002402003280258200328025c220d460d002003280254210f0c010b200d41016a220f200d490d03200d4101742213200f2013200f4b1b22134100480d0302400240200d0d002013102d210f0c010b2003280254200d20131031210f0b200f450d11200320133602582003200f3602540b2003200d41016a36025c200f200d6a200e41807f72200e41ff0071200e410776220d1b3a0000200d210e200d0d000b024002402003280258220e200328025c220d6b2007490d002003280254210e0c010b200d20076a220f200d490d02200e4101742213200f2013200f4b1b220f4100480d0202400240200e0d00200f102d210e0c010b2003280254200e200f1031210e0b200e450d102003200f3602582003200e3602540b2003200d20076a36025c200e200d6a2009200710e8061a410021022008450d002009102f0b200620044104746a21072004210e0340024002402003280258200328025c220d460d002003280254210f0c010b200d41016a220f200d490d02200d4101742213200f2013200f4b1b22134100480d0202400240200d0d002013102d210f0c010b2003280254200d20131031210f0b200f450d10200320133602582003200f3602540b2003200d41016a36025c200f200d6a200e41807f72200e41ff0071200e410776220d1b3a0000200d210e200d0d000b02402004450d002006211003402010280200220f4108460d012010410c6a2802002112201041086a280200210d2010280204210e024002400240024002400240024002400240024002400240200f0e080102030405060700010b02402003280258200328025c220f460d00200328025421130c090b200f41016a2213200f490d0d200f41017422112013201120134b1b22114100480d0d02400240200f0d002011102d21130c010b2003280254200f2011103121130b2013450d1b20032011360258200320133602540c080b024002402003280258200328025c220f460d00200328025421130c010b200f41016a2213200f490d0d200f41017422112013201120134b1b22114100480d0d02400240200f0d002011102d21130c010b2003280254200f2011103121130b2013450d1b20032011360258200320133602540b2003200f41016a36025c2013200f6a41003a00000340024002402003280258200328025c220f460d00200328025421130c010b200f41016a2213200f490d0e200f41017422112013201120134b1b22114100480d0e02400240200f0d002011102d21130c010b2003280254200f2011103121130b2013450d1c20032011360258200320133602540b2003200f41016a36025c2013200f6a200e41807f72200e41ff0071200e410776220f1b3a0000200f210e200f0d000b0340024002402003280258200328025c220e460d002003280254210f0c010b200e41016a220f200e490d0e200e4101742213200f2013200f4b1b22134100480d0e02400240200e0d002013102d210f0c010b2003280254200e20131031210f0b200f450d1c200320133602582003200f3602540b2003200e41016a36025c200f200e6a200d41807f72200d41ff0071200d410776220e1b3a0000200e210d200e0d000c090b0b024002402003280258200328025c220f460d00200328025421130c010b200f41016a2213200f490d0c200f41017422112013201120134b1b22114100480d0c02400240200f0d002011102d21130c010b2003280254200f2011103121130b2013450d1a20032011360258200320133602540b2003200f41016a36025c2013200f6a41013a00000340024002402003280258200328025c220f460d00200328025421130c010b200f41016a2213200f490d0d200f41017422112013201120134b1b22114100480d0d02400240200f0d002011102d21130c010b2003280254200f2011103121130b2013450d1b20032011360258200320133602540b2003200f41016a36025c2013200f6a200e41807f72200e41ff0071200e410776220f1b3a0000200f210e200f0d000b0340024002402003280258200328025c220e460d002003280254210f0c010b200e41016a220f200e490d0d200e4101742213200f2013200f4b1b22134100480d0d02400240200e0d002013102d210f0c010b2003280254200e20131031210f0b200f450d1b200320133602582003200f3602540b2003200e41016a36025c200f200e6a200d41807f72200d41ff0071200d410776220e1b3a0000200e210d200e0d000c080b0b024002402003280258200328025c220f460d00200328025421130c010b200f41016a2213200f490d0b200f41017422112013201120134b1b22114100480d0b02400240200f0d002011102d21130c010b2003280254200f2011103121130b2013450d1920032011360258200320133602540b2003200f41016a36025c2013200f6a41023a00000340024002402003280258200328025c220f460d00200328025421130c010b200f41016a2213200f490d0c200f41017422112013201120134b1b22114100480d0c02400240200f0d002011102d21130c010b2003280254200f2011103121130b2013450d1a20032011360258200320133602540b2003200f41016a36025c2013200f6a200e41807f72200e41ff0071200e410776220f1b3a0000200f210e200f0d000b0340024002402003280258200328025c220e460d002003280254210f0c010b200e41016a220f200e490d0c200e4101742213200f2013200f4b1b22134100480d0c02400240200e0d002013102d210f0c010b2003280254200e20131031210f0b200f450d1a200320133602582003200f3602540b2003200e41016a36025c200f200e6a200d41807f72200d41ff0071200d410776220e1b3a0000200e210d200e0d000c070b0b024002402003280258200328025c220f460d00200328025421130c010b200f41016a2213200f490d0a200f41017422112013201120134b1b22114100480d0a02400240200f0d002011102d21130c010b2003280254200f2011103121130b2013450d1820032011360258200320133602540b2003200f41016a36025c2013200f6a41033a00000340024002402003280258200328025c220f460d00200328025421130c010b200f41016a2213200f490d0b200f41017422112013201120134b1b22114100480d0b02400240200f0d002011102d21130c010b2003280254200f2011103121130b2013450d1920032011360258200320133602540b2003200f41016a36025c2013200f6a200e41807f72200e41ff0071200e410776220f1b3a0000200f210e200f0d000b0340024002402003280258200328025c220e460d002003280254210f0c010b200e41016a220f200e490d0b200e4101742213200f2013200f4b1b22134100480d0b02400240200e0d002013102d210f0c010b2003280254200e20131031210f0b200f450d19200320133602582003200f3602540b2003200e41016a36025c200f200e6a200d41807f72200d41ff0071200d410776220e1b3a0000200e210d200e0d000b20032012200341d0006a10930620032d0000220d411f460d0620032f000120032d000341107472210e0c030b024002402003280258200328025c220f460d00200328025421130c010b200f41016a2213200f490d09200f41017422112013201120134b1b22114100480d0902400240200f0d002011102d21130c010b2003280254200f2011103121130b2013450d1720032011360258200320133602540b2003200f41016a36025c2013200f6a41043a00000340024002402003280258200328025c220f460d00200328025421130c010b200f41016a2213200f490d0a200f41017422112013201120134b1b22114100480d0a02400240200f0d002011102d21130c010b2003280254200f2011103121130b2013450d1820032011360258200320133602540b2003200f41016a36025c2013200f6a200e41807f72200e41ff0071200e410776220f1b3a0000200f210e200f0d000b0340024002402003280258200328025c220e460d002003280254210f0c010b200e41016a220f200e490d0a200e4101742213200f2013200f4b1b22134100480d0a02400240200e0d002013102d210f0c010b2003280254200e20131031210f0b200f450d18200320133602582003200f3602540b2003200e41016a36025c200f200e6a200d41807f72200d41ff0071200d410776220e1b3a0000200e210d200e0d000b20032012200341d0006a10930620032d0000220d411f460d0520032f000120032d000341107472210e0c020b024002402003280258200328025c220f460d00200328025421130c010b200f41016a2213200f490d08200f41017422112013201120134b1b22114100480d0802400240200f0d002011102d21130c010b2003280254200f2011103121130b2013450d1620032011360258200320133602540b2003200f41016a36025c2013200f6a41053a00000340024002402003280258200328025c220f460d00200328025421130c010b200f41016a2213200f490d09200f41017422112013201120134b1b22114100480d0902400240200f0d002011102d21130c010b2003280254200f2011103121130b2013450d1720032011360258200320133602540b2003200f41016a36025c2013200f6a200e41807f72200e41ff0071200e410776220f1b3a0000200f210e200f0d000b0340024002402003280258200328025c220e460d002003280254210f0c010b200e41016a220f200e490d09200e4101742213200f2013200f4b1b22134100480d0902400240200e0d002013102d210f0c010b2003280254200e20131031210f0b200f450d17200320133602582003200f3602540b2003200e41016a36025c200f200e6a200d41807f72200d41ff0071200d410776220e1b3a0000200e210d200e0d000b20032012200341d0006a10930620032d0000220d411f460d0420032f000120032d000341107472210e0c010b024002402003280258200328025c220f460d00200328025421130c010b200f41016a2213200f490d07200f41017422112013201120134b1b22114100480d0702400240200f0d002011102d21130c010b2003280254200f2011103121130b2013450d1520032011360258200320133602540b2003200f41016a36025c2013200f6a41063a00000340024002402003280258200328025c220f460d00200328025421130c010b200f41016a2213200f490d08200f41017422112013201120134b1b22114100480d0802400240200f0d002011102d21130c010b2003280254200f2011103121130b2013450d1620032011360258200320133602540b2003200f41016a36025c2013200f6a200e41807f72200e41ff0071200e410776220f1b3a0000200f210e200f0d000b0340024002402003280258200328025c220e460d002003280254210f0c010b200e41016a220f200e490d08200e4101742213200f2013200f4b1b22134100480d0802400240200e0d002013102d210f0c010b2003280254200e20131031210f0b200f450d16200320133602582003200f3602540b2003200e41016a36025c200f200e6a200d41807f72200d41ff0071200d410776220e1b3a0000200e210d200e0d000c030b0b2003290308210a2003280204210f02402005450d002006102f0b2003280258450d122003280254102f0c120b2003200f41016a36025c2013200f6a41073a00000340024002402003280258200328025c220f460d00200328025421130c010b200f41016a2213200f490d06200f41017422112013201120134b1b22114100480d0602400240200f0d002011102d21130c010b2003280254200f2011103121130b2013450d1420032011360258200320133602540b2003200f41016a36025c2013200f6a200e41807f72200e41ff0071200e410776220f1b3a0000200f210e200f0d000b0340024002402003280258200328025c220e460d002003280254210f0c010b200e41016a220f200e490d06200e4101742213200f2013200f4b1b22134100480d0602400240200e0d002013102d210f0c010b2003280254200e20131031210f0b200f450d14200320133602582003200f3602540b2003200e41016a36025c200f200e6a200d41807f72200d41ff0071200d410776220e1b3a0000200e210d200e0d000b0b2003411f3a00000b201041106a22102007470d000b0b02402005450d002006102f0b20032802582106200328025421042003280250221041086a2113201041046a2111200328025c2207210e03400240024020112802002013280200220d460d002010280200210f0c010b200d41016a220f200d490d02200d4101742212200f2012200f4b1b22124100480d0202400240200d0d002012102d210f0c010b2010280200200d20121031210f0b200f450d102010200f360200201120123602002013280200210d0b2013200d41016a360200200f200d6a200e41807f72200e41ff0071200e410776220d1b3a0000200d210e200d0d000b02400240201041046a280200220e201041086a280200220d6b2007490d002010280200210e0c010b200d20076a220f200d490d01200e410174220d200f200d200f4b1b220d4100480d0102400240200e0d00200d102d210e0c010b2010280200200e200d1031210e0b200e450d0f2010200e360200201041046a200d360200201041086a280200210d0b201041086a200d20076a360200200e200d6a2004200710e8061a02402006450d002004102f0b41012112410021072009450d012002450d012008450d012009102f0c010b1038000b410121020b410121080b4101210b0b410121090b410121040b410121060b4101210c0b410121130b4101210e0b4101210f0b41012110410121110b2000411f3a000020012d0000220d410f4b0d0a02400240024002400240024002400240024002400240024002400240200d0e100001020304050607081809180a0b0c0d000b2002450d17200141086a280200450d17200141046a280200102f0c170b2012450d160240200141086a280200450d00200141046a280200102f0b200141146a280200450d16200141106a280200102f0c160b2008450d1502402001410c6a280200220e450d00200141046a280200210d200e410474210e03400240200d41046a280200450d00200d280200102f0b200d41106a210d200e41706a220e0d000b0b200141086a280200450d152001280204102f0c150b200b450d1402402001410c6a280200220e450d00200141046a280200210d200e41286c210e03400240200d41046a280200450d00200d280200102f0b0240200d41106a280200450d00200d410c6a280200102f0b200d41286a210d200e41586a220e0d000b0b200141086a280200450d142001280204102f0c140b2009450d13200141086a280200450d13200141046a280200102f0c130b2004450d12200141086a280200450d12200141046a280200102f0c120b2006450d11200141086a280200450d11200141046a280200102f0c110b200c450d1002402001410c6a280200220d450d00200141046a2802002210200d4104746a2111034002402010280208220e450d002010280200210d200e410474210e03400240200d2d00004109470d000240200d41046a2213280200220f28020441ffffffff0371450d00200f280200102f2013280200210f0b200f102f0b200d41106a210d200e41706a220e0d000b0b201041106a210d0240201041046a280200450d002010280200102f0b200d2110200d2011470d000b0b200141086a280200450d102001280204102f0c100b2013450d0f02402001410c6a280200220e450d00200141046a280200210d200e41146c210e03400240200d41046a280200450d00200d280200102f0b200d41146a210d200e416c6a220e0d000b0b200141086a280200450d0f2001280204102f0c0f0b200e450d0e200141046a220d10a206200141086a280200450d0e200d280200102f0c0e0b200f450d0d02402001410c6a280200220d450d00200141046a2802002210200d41186c6a211103400240201041046a280200450d002010280200102f0b0240201041146a280200220e450d00201028020c210d200e410474210e03400240200d2d00004109470d000240200d41046a2213280200220f28020441ffffffff0371450d00200f280200102f2013280200210f0b200f102f0b200d41106a210d200e41706a220e0d000b0b201041186a210d0240201041106a280200450d00201028020c102f0b200d2110200d2011470d000b0b200141086a280200450d0d2001280204102f0c0d0b2010450d0c200141046a220d10a206200141086a280200450d0c200d280200102f0c0c0b2011450d0b0240200141046a280200220d450d00200141086a280200450d00200d102f0b0240200141146a280200220d450d0002402001411c6a280200220e450d00200e410c6c210e03400240200d280200220f450d00200d41046a280200450d00200f102f0b200d410c6a210d200e41746a220e0d000b0b200141186a280200450d002001280214102f0b200141246a2802002210450d0b02402001412c6a280200220d450d002010200d4104746a211103402010221341106a211002402013280204220d450d0002402013410c6a280200220e450d00200e410c6c210e03400240200d280200220f450d00200d41046a280200450d00200f102f0b200d410c6a210d200e41746a220e0d000b0b201341086a280200450d002013280204102f0b20102011470d000b0b200141286a280200450d0b2001280224102f0c0b0b2007450d0a0240200141086a280200450d00200141046a280200102f0b0240200141146a280200220d450d00200141186a280200450d00200d102f0b200141246a280200450d0a200141206a280200102f0c0a0b02402009450d002002450d002008450d002009102f0b2000200e3b00012000200d3a0000200041036a200e4110763a0000200041086a200a370000200041046a200f360000410121134100210f0c010b1036000b410121070b410121020b410121090b410121040b4101210e0b410121100b41012111410121120b20012d0000220d410f4b0d0002400240024002400240024002400240024002400240024002400240200d0e100001020304050607080e090e0a0b0c0d000b200141086a280200450d0d200141046a280200102f0c0d0b2013450d0c0240200141086a280200450d00200141046a280200102f0b200141146a280200450d0c200141106a280200102f0c0c0b02402001410c6a280200220e450d00200141046a280200210d200e410474210e03400240200d41046a280200450d00200d280200102f0b200d41106a210d200e41706a220e0d000b0b200141086a280200450d0b2001280204102f0c0b0b2007450d0a02402001410c6a280200220e450d00200141046a280200210d200e41286c210e03400240200d41046a280200450d00200d280200102f0b0240200d41106a280200450d00200d410c6a280200102f0b200d41286a210d200e41586a220e0d000b0b200141086a280200450d0a2001280204102f0c0a0b200141086a280200450d09200141046a280200102f0c090b2002450d08200141086a280200450d08200141046a280200102f0c080b2009450d07200141086a280200450d07200141046a280200102f0c070b2004450d0602402001410c6a280200220d450d00200141046a2802002210200d4104746a2111034002402010280208220e450d002010280200210d200e410474210e03400240200d2d00004109470d000240200d41046a2213280200220f28020441ffffffff0371450d00200f280200102f2013280200210f0b200f102f0b200d41106a210d200e41706a220e0d000b0b201041106a210d0240201041046a280200450d002010280200102f0b200d2110200d2011470d000b0b200141086a280200450d062001280204102f0c060b02402001410c6a280200220e450d00200141046a280200210d200e41146c210e03400240200d41046a280200450d00200d280200102f0b200d41146a210d200e416c6a220e0d000b0b200141086a280200450d052001280204102f0c050b200e450d04200141046a220d10a206200141086a280200450d04200d280200102f0c040b2010450d0302402001410c6a280200220d450d00200141046a2802002210200d41186c6a211103400240201041046a280200450d002010280200102f0b0240201041146a280200220e450d00201028020c210d200e410474210e03400240200d2d00004109470d000240200d41046a2213280200220f28020441ffffffff0371450d00200f280200102f2013280200210f0b200f102f0b200d41106a210d200e41706a220e0d000b0b201041186a210d0240201041106a280200450d00201028020c102f0b200d2110200d2011470d000b0b200141086a280200450d032001280204102f0c030b2011450d02200141046a220d10a206200141086a280200450d02200d280200102f0c020b2012450d010240200141046a280200220d450d00200141086a280200450d00200d102f0b0240200141146a280200220d450d0002402001411c6a280200220e450d00200e410c6c210e03400240200d280200220f450d00200d41046a280200450d00200f102f0b200d410c6a210d200e41746a220e0d000b0b200141186a280200450d002001280214102f0b200141246a2802002210450d0102402001412c6a280200220d450d002010200d4104746a211103402010221341106a211002402013280204220d450d0002402013410c6a280200220e450d00200e410c6c210e03400240200d280200220f450d00200d41046a280200450d00200f102f0b200d410c6a210d200e41746a220e0d000b0b201341086a280200450d002013280204102f0b20102011470d000b0b200141286a280200450d012001280224102f0c010b200f450d000240200141086a280200450d00200141046a280200102f0b0240200141146a280200220d450d00200141186a280200450d00200d102f0b200141246a280200450d00200141206a280200102f0b200341e0006a24000b1300200041073602042000418c97c6003602000b3400200041eba1c60036020420004100360200200041146a4102360200200041106a4180a2c600360200200041086a42133702000bca09020b7f027e230041106b220224002002410036020820024201370300024002404120102d2203450d002003200029004c370000200341186a2204200041e4006a290000370000200341106a2205200041dc006a290000370000200341086a2206200041d4006a2900003700004120102d2207450d00200242a080808080043702042002200736020020072003290000370000200741086a2006290000370000200741106a2005290000370000200741186a20042900003700002003102f2007412041c00010312203450d002003200029006c370020200341286a200041f4006a290000370000200341306a200041fc006a290000370000200341386a20004184016a290000370000200242c08080808008370204200220033602000240024020002903004201510d00200341c00041800110312203450d02200341003a00402002428081808090083702042002200336020041c10021070c010b200341c00041800110312203450d01200341013a00402003200041086a2207290000370041200341e9006a200041306a2903003700002003200041286a290300370061200341c9006a200741086a290000370000200341d1006a200741106a290000370000200341d9006a200741186a29000037000020024280818080900e3702042002200336020041f10021070b0240024020002802384101460d002002200741016a360208200320076a41003a00000c010b2002200741016a360208200320076a41013a00002000413c6a28020021040240024020022802042207200228020822036b4104490d00200228020021070c010b200341046a22052003490d03200741017422062005200620054b1b22054100480d030240024020070d002005102d21070c010b200228020020072005103121070b2007450d0220022005360204200220073602000b2002200341046a360208200720036a20043600000b20002802402108200041c8006a2802002200200210690240024020000d002002280208210020022802042104200228020021070c010b2008200041306c6a210941002002280208220a6b210520022802042104410021030340200a20036a210602400240200420056a4120490d00200228020021070c010b200641206a22002006490d04200441017422072000200720004b1b22004100480d040240024020040d002000102d21070c010b200228020020042000103121070b2007450d032002200036020420022007360200200021040b2007200a6a20036a220b41186a200820036a220041186a290000370000200b41106a200041106a290000370000200b41086a200041086a2900003700002002200641206a220c360208200b2000290000370000200041286a290300210d200041206a290300210e0240200420056a41606a410f4b0d00200c41106a220b200c490d042004410174220c200b200c200b4b1b220b4100480d040240024020040d00200b102d21070c010b20072004200b103121070b2007450d032002200b36020420022007360200200b21040b2007200a6a20036a220b41286a200d370000200b41206a200e3700002002200641306a360208200541506a2105200341306a21032009200041306a470d000b200a20036a21000b20012902002000ad4220862007ad84100402402004450d002007102f0b200241106a24000f0b1036000b1038000bbd0101037f230041206b2203240002400240200241286c4104722204417f4c0d002004102d2205450d01200341003602102003200436020c200320053602082002200341086a106902402002450d002001200241286c6a21020340200341086a200141201082012003200141206a290300370318200341086a200341186a41081082012002200141286a2201470d000b0b20002003290308370200200041086a200341086a41086a280200360200200341206a24000f0b103d000b1036000bb91107027f037e037f027e017f027e047f230041d0006b220324000240024002400240024020002802002d0000200141ff0171460d002000280208210441c6b5c400ad4280808080f00084100122002900002105200341106a41086a200041086a290000370300200320053703102000102f41f6dbc400ad4280808080f00084100122002900002105200341206a41086a200041086a290000370300200320053703202000102f4120102d2200450d0120002002290000370000200041186a200241186a290000370000200041106a200241106a290000370000200041086a200241086a2900003700002000ad4280808080800484100322012900002105200141086a2900002106200141106a2900002107200341306a41186a2208200141186a290000370300200341306a41106a22092007370300200341306a41086a2006370300200320053703302001102f2000102f41c000102d2200450d01200020032903103700002000200329032037001020002003290330370020200041086a200341106a41086a290300370000200041186a200341206a41086a290300370000200041286a200341306a41086a290300370000200041306a2009290300370000200041386a2008290300370000200341306a200010b70420032902342105200328023021012000102f2001410820011b210a428080d287e2bc2d210b4200210702402005420020011b220c422088a7220d450d0002400240200d41186c22000d0042002107428080d287e2bc2d210b410021010c010b200a20006a210842002106428080d287e2bc2d210541002101200a21000240034002402005200041086a290300220e7d220b2005562006200041106a290300220f7d2005200e54ad7d220720065620072006511b450d00200041086a200e20057d370300200041106a200f20067d200e200554ad7d3703004200210b420021070c020b200141016a2101200b2105200721062008200041186a2200470d000b0b2001200d4b0d040b41c6b5c400ad4280808080f00084100122002900002105200341106a41086a200041086a290000370300200320053703102000102f41f6dbc400ad4280808080f00084100122002900002105200341206a41086a200041086a290000370300200320053703202000102f4120102d2200450d0220002002290000370000200041186a200241186a290000370000200041106a200241106a290000370000200041086a200241086a2900003700002000ad4280808080800484100322082900002105200841086a2900002106200841106a290000210e200341306a41186a2209200841186a290000370300200341306a41106a2210200e370300200341306a41086a2006370300200320053703302008102f2000102f41c000102d2211450d02201120032903103700002011200329032037001020112003290330370020201141086a200341106a41086a290300370000201141186a200341206a41086a290300370000201141286a200341306a41086a290300370000201141306a2010290300370000201141386a2009290300370000200d20016b220841186c4104722200417f4c0d042000102d2209450d022003410036023820032000360234200320093602302008200341306a1069024002402001200d470d002003280238210020032802342108200328023021010c010b200a200141186c6a2109200a200d41186c6a21124100200328023822006b210d20032802342108034020092802002110024002402008200d6a4104490d00200328023021010c010b200041046a22012000490d08200841017422132001201320014b1b22134100480d080240024020080d002013102d21010c010b200328023020082013103121010b2001450d052003201336023420032001360230201321080b2003200041046a2213360238200120006a2010360000200941106a2903002105200941086a290300210602402008200d6a417c6a410f4b0d00201341106a22102013490d08200841017422132010201320104b1b22104100480d080240024020080d002010102d21010c010b200120082010103121010b2001450d052003201036023420032001360230201021080b200120006a2210410c6a2005370000201041046a20063700002003200041146a2200360238200d416c6a210d200941186a22092012470d000b0b2011ad42808080808008842000ad4220862001ad84100402402008450d002001102f0b2011102f0b0240200ca7450d00200a102f0b41c6b5c400ad4280808080f00084100122002900002105200341106a41086a200041086a290000370300200320053703102000102f41efdbc400ad4280808080f00084100122002900002105200341206a41086a200041086a290000370300200320053703202000102f4120102d2200450d0120002002290000370000200041186a200241186a290000370000200041106a200241106a290000370000200041086a200241086a2900003700002000ad4280808080800484100322012900002105200141086a2900002106200141106a290000210e200341306a41186a2208200141186a290000370300200341306a41106a2209200e370300200341306a41086a2006370300200320053703302001102f2000102f41c000102d2200450d01428080d287e2bc2d200b7d210542002007200b428080d287e2bc2d56ad7c7d2106200020032903103700002000200329032037001020002003290330370020200041086a200341106a41086a290300370000200041186a200341206a41086a290300370000200041286a200341306a41086a290300370000200041306a2009290300370000200041386a2008290300370000200341086a200041c0001095012003200328020c41016a410120032802081b22013602302000ad4280808080800884200341306aad4280808080c0008410042000102f02402001410a490d00200210b5040b2004200520042903007c2207370300200441086a2200200620002903007c2007200554ad7c370300410021020b200341d0006a240020020f0b1036000b2001200d104b000b103d000b1038000b950201047f230041d0006b22012400200141c00036020420012000360200200141086a2000ad42808080808008841002107302400240200128020822020d00410221000c010b200128020c210302400240200141106a280200450d0020022d0000220441014b0d0041002100024020040e020200020b410121000c010b20014100360220200142013703182001410b36022c200120013602282001200141186a360234200141cc006a41013602002001420137023c200141b885c7003602382001200141286a360248200141346a41d8dbc100200141386a103c1a200135022042208620013502188410080240200128021c450d002001280218102f0b410221000b2003450d002002102f0b200141d0006a240020000b8b0503027f017e047f230041d0006b220224004180a3ca00ad4280808080800184100122032900002104200241086a200341086a290000370300200220043703002003102f41a084c600ad4280808080f00084100122032900002104200241106a41086a200341086a290000370300200220043703102003102f024002404120102d2203450d0020032001290000370000200341186a200141186a290000370000200341106a200141106a290000370000200341086a200141086a29000037000020022003ad4280808080800484100622012900003703302001102f200241c4006a200341206a360200200241003a0048200220033602402002200241306a41086a36023c2002200241306a360238200241206a200241386a106c2003102f02400240024002402002280228220541206a2201417f4c0d0020022802202106024002402001450d002001102d2203450d062001410f4d0d01200121070c050b411021074110102d21030c030b200141017422084110200841104b1b220741004e0d010c050b103d000b200320012007103121030b2003450d010b20032002290300370000200341086a200241086a2903003700000240024020074170714110460d00200721080c010b200741017422084120200841204b1b22084100480d0220032007200810312203450d010b20032002290310370010200341186a200241106a41086a29030037000002400240200841606a2005490d00200821070c010b2005415f4b0d02200841017422072001200720014b1b22074100480d0220032008200710312203450d010b200341206a2006200510e8061a20002001360208200020073602042000200336020002402002280224450d002006102f0b200241d0006a24000f0b1036000b1038000b8b0503027f017e047f230041d0006b220224004180a3ca00ad4280808080800184100122032900002104200241086a200341086a290000370300200220043703002003102f41c883c600ad4280808080c00084100122032900002104200241106a41086a200341086a290000370300200220043703102003102f024002404120102d2203450d0020032001290000370000200341186a200141186a290000370000200341106a200141106a290000370000200341086a200141086a29000037000020022003ad4280808080800484100622012900003703302001102f200241c4006a200341206a360200200241003a0048200220033602402002200241306a41086a36023c2002200241306a360238200241206a200241386a106c2003102f02400240024002402002280228220541206a2201417f4c0d0020022802202106024002402001450d002001102d2203450d062001410f4d0d01200121070c050b411021074110102d21030c030b200141017422084110200841104b1b220741004e0d010c050b103d000b200320012007103121030b2003450d010b20032002290300370000200341086a200241086a2903003700000240024020074170714110460d00200721080c010b200741017422084120200841204b1b22084100480d0220032007200810312203450d010b20032002290310370010200341186a200241106a41086a29030037000002400240200841606a2005490d00200821070c010b2005415f4b0d02200841017422072001200720014b1b22074100480d0220032008200710312203450d010b200341206a2006200510e8061a20002001360208200020073602042000200336020002402002280224450d002006102f0b200241d0006a24000f0b1036000b1038000b9f1005097f037e027f037e037f230041f0026b220324002003200236020c20032001360208200341106a2002ad4220862001ad8410021073024002400240024020032802102204450d00200328021421052003200341186a28020022063602a401200320043602a00141002107200341003a00e8022004210220062101024002400240024002400340200721082001450d01200341c8026a20086a20022d00003a000020032001417f6a22013602a4012003200241016a22023602a0012003200841016a22073a00e80220074120470d000b200341a8016a41086a200341c8026a41086a290300370300200341a8016a41106a200341c8026a41106a290300370300200341a8016a41186a200341c8026a41186a290300370300200320032903c8023703a80141002107200341003a00e802200620086b417e6a2108034020012007460d02200341c8026a20076a200220076a22062d00003a00002003200641016a3602a0012003200741016a22063a00e802200320083602a4012008417f6a21082006210720064120470d000b200341c8016a41086a200341c8026a41086a290300370300200341c8016a41106a200341c8026a41106a290300370300200341c8016a41186a200341c8026a41186a290300370300200320032903c8023703c80120012006460d06200220066a22092d00002102200320083602a4012003200941016a22073602a001200241014b0d0620020e020302030b200841ff0171450d05200341003a00e8020c050b200741ff0171450d04200341003a00e8020c040b200941116a210741002102200341003a00e802200120066b416f6a21010240034020082002460d01200341c8026a20026a200920026a41016a2d00003a000020032001410f6a3602a4012003200741716a3602a0012003200241016a22063a00e8022001417f6a2101200741016a21072006210220064120470d000b200341a8026a41186a2202200341c8026a41186a290300370300200341a8026a41106a220a200341c8026a41106a290300370300200341a8026a41086a220b200341c8026a41086a290300370300200320032903c8023703a802200820066b4110490d04200920066a220841096a290000210c200841016a290000210d20034188026a41086a200b29030037030020034188026a41106a200a29030037030020034188026a41186a2002290300370300200320013602a401200320073602a001200320032903a802370388024201210e200121080c020b200241ff0171450d03200341003a00e8020c030b4200210e0b200341e8016a41186a20034188026a41186a290300370300200341e8016a41106a20034188026a41106a290300370300200341e8016a41086a20034188026a41086a29030037030020032003290388023703e8012008450d0120072d0000210120032008417f6a22023602a4012003200741016a3602a001200141014b0d01410021060240024020010e020100010b20024104490d022007280001210920032008417b6a3602a4012003200741056a3602a001410121060b200341c8026a200341a0016a10f70320032802c802450d01200341f0006a41086a2202200341c8026a41086a2201280200360200200341d0006a41086a2207200341a8016a41086a290300370300200341d0006a41106a2208200341a8016a41106a290300370300200341d0006a41186a220a200341a8016a41186a290300370300200341306a41086a220b200341c8016a41086a290300370300200341306a41106a220f200341c8016a41106a290300370300200341306a41186a2210200341c8016a41186a290300370300200320032903c802370370200320032903a801370350200320032903c80137033020034180016a41186a200341e8016a41186a290300221137030020034180016a41106a200341e8016a41106a290300221237030020034180016a41086a200341e8016a41086a290300221337030020012013370300200341c8026a41106a22142012370300200341c8026a41186a22152011370300200341206a41086a22162002280200360200200320032903e801221137038001200320113703c80220032003290370370320200341a8026a41186a2202200a290300370300200341a8026a41106a220a2008290300370300200341a8026a41086a22082007290300370300200320032903503703a80220034188026a41186a2207201029030037030020034188026a41106a2210200f29030037030020034188026a41086a220f200b2903003703002003200329033037038802200041306a200c370300200041286a200d3703002000413c6a2009360200200041386a2006360200200041206a2015290300370300200041186a2014290300370300200041106a2001290300370300200020032903c802370308200041c0006a2003290320370300200041c8006a2016280200360200200020032903a80237024c200041d4006a2008290300370200200041dc006a200a290300370200200041e4006a200229030037020020004184016a2007290300370200200041fc006a2010290300370200200041f4006a200f290300370200200020032903880237026c0c020b200042023703000c020b200341003602b002200342013703a8022003410b36028c022003200341086a360288022003200341a8026a3602e801200341dc026a4101360200200342013702cc02200341b885c7003602c802200320034188026a3602d802200341e8016a41d8dbc100200341c8026a103c1a20033502b00242208620033502a802841008024020032802ac02450d0020032802a802102f0b4202210e0b2000200e3703002005450d002004102f0b200341f0026a24000b830303047f017e027f230041d0006b22012400200141206a41186a4200370300200141206a41106a22024200370300200141206a41086a220342003703002001420037032041bd98ca00ad42808080808002841001220429000021052003200441086a290000370300200120053703202004102f41ebdec700ad4280808080f00084100122042900002105200141c0006a41086a2206200441086a290000370300200120053703402004102f200220012903402205370300200141086a2003290300370300200141106a2005370300200141186a200629030037030020012001290320370300200141206a200110e40420012802202204410820041b2107410021030240024002402001290224420020041b2205422088a7220441014b0d0020040e020201020b03402004410176220220036a220620032007200641306c6a2000412010ea064101481b2103200420026b220441014b0d000b0b2007200341306c6a2000412010ea064521030b02402005a7450d002007102f0b200141d0006a240020030b8b0503027f017e047f230041d0006b220224004180a3ca00ad4280808080800184100122032900002104200241086a200341086a290000370300200220043703002003102f41c883c600ad4280808080c00084100122032900002104200241106a41086a200341086a290000370300200220043703102003102f024002404120102d2203450d0020032001290000370000200341186a200141186a290000370000200341106a200141106a290000370000200341086a200141086a29000037000020022003ad4280808080800484100622012900003703302001102f200241c4006a200341206a360200200241003a0048200220033602402002200241306a41086a36023c2002200241306a360238200241206a200241386a106c2003102f02400240024002402002280228220541206a2201417f4c0d0020022802202106024002402001450d002001102d2203450d062001410f4d0d01200121070c050b411021074110102d21030c030b200141017422084110200841104b1b220741004e0d010c050b103d000b200320012007103121030b2003450d010b20032002290300370000200341086a200241086a2903003700000240024020074170714110460d00200721080c010b200741017422084120200841204b1b22084100480d0220032007200810312203450d010b20032002290310370010200341186a200241106a41086a29030037000002400240200841606a2005490d00200821070c010b2005415f4b0d02200841017422072001200720014b1b22074100480d0220032008200710312203450d010b200341206a2006200510e8061a20002001360208200020073602042000200336020002402002280224450d002006102f0b200241d0006a24000f0b1036000b1038000b970404047f017e057f027e230041d0006b22012400200141206a41186a4200370300200141206a41106a22024200370300200141206a41086a220342003703002001420037032041bd98ca00ad42808080808002841001220429000021052003200441086a290000370300200120053703202004102f41ebdec700ad4280808080f00084100122042900002105200141c0006a41086a2206200441086a290000370300200120053703402004102f200220012903402205370300200141086a2003290300370300200141106a2005370300200141186a200629030037030020012001290320370300200141206a200110e40441002102024002400240024020012902244200200128022022031b2205422088a7220441306c22060d0041012107410021080c010b200641306d220641ffffff3f712006470d02200641057422064100480d022006102d2207450d01200641057621080b2005a721092003410820031b210a02402004450d00200441306c21064100210220072103200a21040340200441086a2900002105200441106a290000210b2004290000210c200341186a200441186a290000370000200341106a200b370000200341086a20053700002003200c370000200241016a2102200341206a2103200441306a2104200641506a22060d000b0b02402009450d00200a102f0b200020023602082000200836020420002007360200200141d0006a24000f0b1036000b1038000bc00201027f230041e0006b220224002002412036020c20022001360208200241106a2001ad4280808080800484100210730240024020022802102201450d00200228021421032002200241106a41086a28020036022420022001360220200241c8006a200241206a10f703024002402002280248450d0020002002290348370200200041086a200241c8006a41086a2802003602000c010b20024100360230200242013703282002410b36023c2002200241086a3602382002200241286a360244200241dc006a41013602002002420137024c200241b885c7003602482002200241386a360258200241c4006a41d8dbc100200241c8006a103c1a200235023042208620023502288410080240200228022c450d002002280228102f0b200041003602000b2003450d012001102f0c010b200041003602000b200241e0006a24000b130020004101360204200041bca4c6003602000bd71e03077f027e077f230041b0026b22052400200028020021064100210702400240024002400240024002400240024002400240200041086a280200220841014b0d0020080e020201020b20082109034020072009410176220a20076a220b2006200b41e8006c6a220b41386a290300200256200b41c0006a290300220c200356200c2003511b1b21072009200a6b220941014b0d000b0b2006200741e8006c6a220941386a290300220d200285200941c0006a290300220c20038584500d012007200d200254200c200354200c2003511b6a21070b200541b0016a41086a200441086a290300370300200541b0016a41106a200441106a290300370300200541b0016a41186a200441186a290300370300200541b0016a41206a200441206a290300370300200541b0016a41286a200441286a290300370300200541b0016a41306a200441306a290300370300200541286a41086a200141086a290000370300200541286a41106a200141106a290000370300200541286a41186a200141186a290000370300200520042903003703b0012005200129000037032820082007490d0202402008200041046a280200220b470d00200841016a22092008490d072008410174220a2009200a20094b1bad42e8007e220c422088a70d07200ca722094100480d070240024020080d002009102d21060c010b2006200841e8006c2009103121060b2006450d0420002006360200200041046a200941e8006e220b3602000b2006200741e8006c6a220941e8006a2009200820076b41e8006c10e9061a200941c0006a200337030020092002370338200941306a200541b0016a41306a290300370300200941286a200541b0016a41286a290300370300200941206a200541b0016a41206a290300370300200941186a200541b0016a41186a290300370300200941106a200541b0016a41106a290300370300200941086a200541b0016a41086a290300370300200920052903b00137030020092005290328370348200941d0006a200541286a41086a290300370300200941d8006a200541286a41106a290300370300200941e0006a200541286a41186a290300370300200041086a200841016a22093602000c010b0240024002400240024020070d002006210a0c010b20082007417f6a22094d0d012006200941e8006c6a41e8006a210a0b200a2006200841e8006c6a460d00200820074d0d06200a290338200256200a41c0006a290300220c200356200c2003511b0d01200a41e8006a2109200841e8006c20066a200a6b41987f6a210a0340200a450d01200741016a21072009290338210c200941c0006a210b200a41987f6a210a200941e8006a2109200c200256200b290300220c200356200c2003511b0d020c000b0b200541286a41186a2209200141186a290000370300200541286a41106a220a200141106a290000370300200541286a41086a220e200141086a290000370300200541b0016a41086a220f200441086a290300370300200541b0016a41106a2210200441106a290300370300200541b0016a41186a2211200441186a290300370300200541b0016a41206a2212200441206a290300370300200541b0016a41286a2213200441286a290300370300200541b0016a41306a2214200441306a29030037030020052001290000370328200520042903003703b00102402008200041046a280200220b470d00200841016a22072008490d082008410174220b2007200b20074b1bad42e8007e220c422088a70d08200ca722074100480d080240024020080d002007102d21060c010b2006200841e8006c2007103121060b2006450d0520002006360200200041046a200741e8006e220b3602000b2006200841e8006c6a22072002370338200720052903b00137030020072005290328370348200741c0006a2003370300200741306a2014290300370300200741286a2013290300370300200741206a2012290300370300200741186a2011290300370300200741106a2010290300370300200741086a200f290300370300200741d0006a200e290300370300200741d8006a200a290300370300200741e0006a20092903003703000c010b200541b0016a41086a200441086a290300370300200541b0016a41106a200441106a290300370300200541b0016a41186a200441186a290300370300200541b0016a41206a200441206a290300370300200541b0016a41286a200441286a290300370300200541b0016a41306a200441306a290300370300200541286a41086a200141086a290000370300200541286a41106a200141106a290000370300200541286a41186a200141186a290000370300200520042903003703b0012005200129000037032820082007490d0502402008200041046a280200220b470d00200841016a22092008490d072008410174220a2009200a20094b1bad42e8007e220c422088a70d07200ca722094100480d070240024020080d002009102d21060c010b2006200841e8006c2009103121060b2006450d0420002006360200200041046a200941e8006e220b3602000b2006200741e8006c6a220941e8006a2009200820076b41e8006c10e9061a200941c0006a200337030020092002370338200941306a200541b0016a41306a290300370300200941286a200541b0016a41286a290300370300200941206a200541b0016a41206a290300370300200941186a200541b0016a41186a290300370300200941106a200541b0016a41106a290300370300200941086a200541b0016a41086a290300370300200920052903b00137030020092005290328370348200941d0006a200541286a41086a290300370300200941d8006a200541286a41106a290300370300200941e0006a200541286a41186a2903003703000b200041086a200841016a22093602000b0240200941e907490d00200041086a2009417f6a22093602002006200941e8006c6a220741106a2903002103200741086a290300210c20072d0000210a20072800012101200741046a280000210e200541f8006a41186a2208200741306a290300370300200541f8006a41106a2204200741286a290300370300200541f8006a41086a2200200741206a290300370300200741186a2903002102200541b0016a41286a220f200741e0006a290300370300200541b0016a41206a2210200741d8006a29030037030020052002370378200541b0016a41186a2211200741d0006a290300370300200541b0016a41106a2212200741c8006a290300370300200541b0016a41086a2213200741c0006a2903003703002005200e36000320052001360200200520072903383703b001200a4102460d06200541d8006a41086a22072000290300370300200541d8006a41106a22012004290300370300200541d8006a41186a220e2008290300370300200541286a41086a2013290300370300200541286a41106a22132012290300370300200541286a41186a22122011290300370300200541286a41206a22112010290300370300200541286a41286a2210200f2903003703002005200528000336009b01200520052802003602980120052005290378370358200520052903b001370328200541186a2010290300370300200541106a2011290300370300200541086a20122903003703002005201329030037030020052005280298013602202005200528009b0136002320002007290300370300200420012903003703002008200e2903003703002005200529035837037802400240200a410171450d0020054198016a41086a220a200541f8006a41086a2d00003a0000200520052802203602a801200520052800233600ab01200520052903783703980141c6b5c400ad4280808080f00084100122072900002102200541d8006a41086a200741086a290000370300200520023703582007102f41d8cdc500ad4280808080800184100122072900002102200541286a41086a200741086a290000370300200520023703282007102f4120102d2207450d042007200c370007200720052802a80136000020072005290398013700172007410f6a2003370000200741036a20052800ab013600002007411f6a200a2d00003a00002007ad42808080808004841003220a2900002103200a41086a290000210c200a41106a2900002102200541b0016a41186a2208200a41186a290000370300200541b0016a41106a22042002370300200541b0016a41086a200c370300200520033703b001200a102f2007102f41c000102d2207450d042007200529035837000020072005290328370010200720052903b001370020200741086a200541d8006a41086a290300370000200741186a200541286a41086a290300370000200741286a200541b0016a41086a290300370000200741306a2004290300370000200741386a20082903003700002007ad428080808080088410052007102f0c010b2005200c37035820052003370360200c200384500d002005200536029801200541286a2005200541d8006a20054198016a10960120052903284201520d0020052903302103200541e8016a200541286a41106a290300370300200541e0016a2003370300200541b0016a41086a41003a0000200541b9016a2005290300370000200541c1016a200541086a290300370000200541c9016a200541106a290300370000200541d1016a200541186a290300370000200541033a00b00141c8e1ca004100200541b0016a108c010b200541b0016a41086a41033a0000200541b9016a2005290300370000200541c1016a200541086a290300370000200541c9016a200541106a290300370000200541d1016a200541186a290300370000200541123a00b00141c8e1ca004100200541b0016a108c010b200541b0016a41186a4200370300200541b0016a41106a22084200370300200541b0016a41086a22074200370300200542003703b00141c6b5c400ad4280808080f000841001220a29000021032007200a41086a290000370300200520033703b001200a102f41b4dac400ad4280808080c000841001220a2900002103200541f8006a41086a2204200a41086a29000037030020052003370378200a102f200820052903782203370300200541286a41086a2007290300370300200541286a41106a2003370300200541286a41186a2004290300370300200520052903b001370328200541b0016a2006200910b104200541286aad428080808080048420053502b80142208620052802b0012207ad841004024020052802b401450d002007102f0b0240200b450d002006102f0b200541b0026a24000f0b419ae3c300411e41f8b4ca001039000b1036000b41c4c2ca0020072008103b000b419ae3c300411e41f8b4ca001039000b1038000b419da5c600411341b0a5c6001055000bb00a05047f017e017f017e077f230041e0006b22022400200241306a41186a22034200370300200241306a41106a22044200370300200241306a41086a220542003703002002420037033041c6b5c400ad4280808080f0008422061001220729000021082005200741086a290000370300200220083703302007102f41ebdec700ad4280808080f00084100122092900002108200241d0006a41086a2207200941086a290000370300200220083703502009102f200420022903502208370300200241106a41086a220a2005290300370300200241106a41106a220b2008370300200241106a41186a220c200729030037030020022002290330370310200241306a200241106a412010aa02024002402002280230220d0d004101210d420021084100210e4100210f0c010b20022902342208422088a7210f2008a7210e0b2003420037030020044200370300200542003703002002420037033020061001220929000021062007200941086a290000370300200220063703502009102f200520072903003703002002200229035037033041cdb5c400ad4280808080a001841001220929000021062007200941086a290000370300200220063703502009102f200420022903502206370300200a2005290300370300200b2006370300200c200729030037030020022002290330370310200241086a200241106a412010950102400240024002400240024002400240024002400240200f200228020c410020022802081b4f0d00024002400240200f41014b0d0041002105200f0e020201020b200f210741002105034020052007410176220920056a2203200d20034105746a2001412010ea0641004a1b2105200720096b220741014b0d000b0b200d20054105746a2001412010ea062207450d022007411f7620056a21050b200241306a41186a200141186a290000370300200241306a41106a200141106a290000370300200241306a41086a200141086a29000037030020022001290000370330200f2005490d07200f200e470d04200e2008a7470d04200e41016a2207200e490d09200e41017422092007200920074b1b220741ffffff3f712007470d09200741057422074100480d09200e0d022007102d210d0c030b20004183323b0100200041086a410a360200200041046a41cdb5c400360200200041026a410f3a00002008a7450d09200d102f0c090b200e0d030c040b200d200e41057420071031210d0b200d450d042007410576ad21080b200d20054105746a220741206a2007200f20056b41057410e9061a200741186a200241306a41186a2209290300370000200741106a200241306a41106a2203290300370000200741086a200241306a41086a2205290300370000200720022903303700002009420037030020034200370300200542003703002002420037033041c6b5c400ad4280808080f00084100122012900002106200241d0006a41086a2207200141086a290000370300200220063703502001102f200520072903003703002002200229035037033041ebdec700ad4280808080f000841001220129000021062007200141086a290000370300200220063703502001102f20042002290350370000200441086a2007290300370000200241106a41086a2005290300370300200241106a41106a2003290300370300200241106a41186a200929030037030020022002290330370310200241203602342002200241106a360230200d200f41016a200241306a10aa012008a7450d010b200d102f0b200041043a00000c030b419ae3c300411e41f8b4ca001039000b1036000b1038000b200241e0006a24000b810b031d7f017e017f230041b0016b2202240041012103024020012d00000d002001411d6a2d000021042001411c6a2d000021052001411a6a2f00002106200141196a2d00002107200141186a2d00002108200141166a2f00002109200141156a2d0000210a200141146a2d0000210b200141126a2f0000210c200141116a2d0000210d200141106a2d0000210e2001410e6a2f0000210f2001410d6a2d000021102001410c6a2d000021112001410a6a2f00002112200141096a2d00002113200141086a2d00002114200141066a2f00002115200141056a2d00002116200141046a2d00002117200141026a2f0000211820012d00012103200141206a2d00002119200141216a2d0000211a2001411e6a2f0000211b20024190016a41186a221c420037030020024190016a41106a221d420037030020024190016a41086a22014200370300200242003703900141c6b5c400ad4280808080f000841001221e290000211f2001201e41086a2900003703002002201f37039001201e102f4193b6c400ad4280808080f000841001221e290000211f200241c8006a41086a2220201e41086a2900003703002002201f370348201e102f201d2002290348221f370300200241f0006a41086a2001290300370300200241f0006a41106a201f370300200241f0006a41186a20202903003703002002200229039001370370200241c8006a200241f0006a412010ad0220022d0048211e201c200241c8006a41196a290000370300201d200241c8006a41116a2900003703002001200241c8006a41096a2900003703002002200229004937039001410021010240201e4101470d00200241f0006a41186a20024190016a41186a290300370300200241f0006a41106a20024190016a41106a290300370300200241f0006a41086a20024190016a41086a2903003703002002200229039001370370410121010b200241206a201a3a00002002411f6a20193a00002002411d6a201b3b00002002411c6a20043a00002002411b6a20053a0000200241196a20063b0000200241186a20073a0000200241176a20083a0000200241156a20093b0000200241146a200a3a0000200241136a200b3a0000200241116a200c3b0000200241106a200d3a00002002410f6a200e3a00002002410d6a200f3b00002002410c6a20103a00002002410b6a20113a0000200241096a20123b0000200241086a20133a0000200220013a0021200220143a0007200220153b0005200220163a0004200220173a0003200220183b0001200220033a00002002413a6a200241f0006a41186a290300370100200241326a200241f0006a41106a2903003701002002412a6a200241f0006a41086a290300370100200241226a221d20022903703701000240200341ff01714101470d002001450d0020024101722201201d412010ea060d00200241c8006a41026a200141026a2d000022033a0000200220012f000022013b01482002410a6a2f0100211d2002410e6a2f0100211e200241126a2f01002105200241166a2f010021082002411a6a2f0100210b2002411e6a2f0100210e20022f01062111200041036a20033a0000200020013b0001200041206a201a3a00002000411e6a200e3b00002000411d6a201b3a00002000411c6a20043a00002000411a6a200b3b0000200041196a20063a0000200041186a20073a0000200041166a20083b0000200041156a20093a0000200041146a200a3a0000200041126a20053b0000200041116a200c3a0000200041106a200d3a00002000410e6a201e3b00002000410d6a200f3a00002000410c6a20103a00002000410a6a201d3b0000200041096a20123a0000200041086a20133a0000200041066a20113b0000200041056a20153a0000200041046a20163a0000410021030c010b410121030b200020033a0000200241b0016a24000b130020004108360204200041c0a5c6003602000b130020004112360204200041d8aac6003602000bd40401057f230041106b22022400200241003a000502400240024002400240024020012802002203280204220420044100472205490d00200241056a20032802002206200510e8061a2003200420056b3602042003200620056a360200024020040d00410021040c050b024020022d0005220441037122034103460d000240024020030e03070001070b200241003b0106200220043a00064101210420012802002201280204220320034100472205490d04200241066a41017220012802002204200510e80621062001200320056b3602042001200420056a360200024020030d00200620056a22044100200241066a20046b41026a10e7061a0b20022f0106220441ff014d0d0220044102762103410021040c070b20024100360208200220043a0008200241086a4101722001280200220428020020042802042205410320054103491b220310e8062106200428020422012003490d042004200120036b3602042004200428020020036a3602000240200541024b0d00200620036a22044100200241086a20046b41046a10e7061a0b2002280208220341808004492104200341027621030c060b200441034d0d010b410121040c040b2002410036020c2002410c6a20012802002204280200220120042802042203410420034104491b220510e8061a2004200320056b3602042004200120056a3602000240200341034b0d002002410c6a20056a4100410420056b10e7061a0b200228020c22034180808080044921040c030b0c020b20032001104b000b20044102762103410021040b2000200336020420002004360200200241106a24000b130020004100360204200041c8e1ca003602000bbf0202027f017e23004180016b220224002000280200210002400240024002400240200128020022034110710d002000290300210420034120710d01200441012001104521000c020b20002903002104410021000340200220006a41ff006a2004a7410f712203413072200341d7006a2003410a491b3a00002000417f6a2100200442048822044200520d000b20004180016a22034181014f0d022001410141bc8ac0004102200220006a4180016a410020006b104821000c010b410021000340200220006a41ff006a2004a7410f712203413072200341376a2003410a491b3a00002000417f6a2100200442048822044200520d000b20004180016a22034181014f0d022001410141bc8ac0004102200220006a4180016a410020006b104821000b20024180016a240020000f0b2003418001104b000b2003418001104b000bd50505067f017e047f017e027f23004180026b2202240002400240024002402000280200220320002802044f0d00200028020c2104200141086a2105200241a0016a4102722106024003402000200341016a360200200241186a2000280208280200220710f30220022d00184101460d0120022900192108200241086a200710e60120022802080d012007280204200228020c2203490d012003417f4c0d0302400240024020030d00410121090c010b200310332209450d0720072802042003490d0120092007280200200310e8061a2007280204220a2003490d062007200a20036b3602042007200728020020036a3602000b20022008370310024002402001280200220b4190bdc600460d002001280204210c0c010b2006410041da0010e7061a200241186a410041840110e7061a41e401102d220b450d074100210c200b4100360200200b41046a200241a0016a41dc0010e8061a200b41e0006a200241186a41840110e8061a200141003602042001200b3602000b2003ad220d422086200d84210d02400240034002400240200b2f0106220e0d004100210a0c010b200e4103742103200b41086a2107417f210a0340024020030d00200e210a0c020b200a41016a210a200241106a2007410810ea06220f450d03200341786a2103200741086a2107200f417f4a0d000b0b0240200c450d00200c417f6a210c200b200a4102746a41e4016a280200210b0c010b0b2002200837022c200220053602282002200a360224200220013602202002200b36021c200241003602182002200d3702a401200220093602a001200241186a200241a0016a109b020c010b200b200a410c6c6a220341e4006a2207280200210a2007200d370200200341e0006a22072802002103200720093602002003450d00200a450d002003102f0b200028020022032000280204490d010c030b0b2009102f0b200441013a00000b20024180026a24000f0b103d000b2003200a104b000b1036000b810605027f027e017f027e027f230041a0016b220224002000280200210002400240024002400240024002400240200128020022034110710d00200041086a29030021042000290300210520034120710d0220054290ce005441002004501b450d012005a72103412721000c060b200041086a2903002105200029030021044180012100024003402000450d01200241206a20006a417f6a2004a7410f712203413072200341d7006a2003410a491b3a00002000417f6a210020044204882005423c8684220420054204882205844200520d000b0b20004181014f0d022001410141bc8ac0004102200241206a20006a41800120006b104821000c060b41272100200241186a21060340200241106a200520044290ce00420010ee062002200229031022072006290300220842f0b17f427f10ed06200241206a20006a2203417c6a200520022903007ca7220941ffff037141e4006e220a41017441e684c0006a2f00003b00002003417e6a200a419c7f6c20096a41ffff037141017441e684c0006a2f00003b0000200542ffc1d72f56210320044200522109200450210a2000417c6a2100200721052008210420032009200a1b0d000c040b0b4180012100024003402000450d01200241206a20006a417f6a2005a7410f712203413072200341376a2003410a491b3a00002000417f6a210020054204882004423c8684220520044204882204844200520d000b0b20004181014f0d012001410141bc8ac0004102200241206a20006a41800120006b104821000c040b2000418001104b000b2000418001104b000b2007a721030b02400240200341e3004a0d00200321090c010b200241206a2000417e6a22006a2003200341ffff037141e4006e2209419c7f6c6a41ffff037141017441e684c0006a2f00003b00000b024002402009410a480d00200241206a2000417e6a22006a200941017441e684c0006a2f00003b00000c010b200241206a2000417f6a22006a200941306a3a00000b2001410141c8e1ca004100200241206a20006a412720006b104821000b200241a0016a240020000bdd0604017f017e017f057e230041c0016b220624000240200341ff0171450d00200641d0006a2001ad42004280c8afa025420010ed06200641c0006a2002418094ebdc032002418094ebdc03491bad420042e807420010ed0620064190016a41186a420037030020064190016a41106a2201420037030020064190016a41086a22024200370300200642003703900141e7a2ca00ad42808080808001841001220329000021072002200341086a29000037030020062007370390012003102f41efa2ca00ad4280808080900284100122032900002107200641b0016a41086a2208200341086a290000370300200620073703b0012003102f200120062903b0012207370300200641f0006a41086a2002290300370300200641f0006a41106a2007370300200641f0006a41186a20082903003703002006200629039001370370200641c0006a41086a290300200641d0006a41086a2903007c2006290340220920062903507c2207200954ad7c2109200641e0006a200641f0006a10e3010240024020062802600d00410021024200210a0c010b2006290368220a4200552102200a427f550d00428080808080808080807f4200200a7d200a428080808080808080807f511b210a0b200641206a20072009428094ebdc03420010ee06200641106a2006290320220b200641206a41086a290300220c4280ec94a37c427f10ed06200641306a20072009200a428094ebdc0380220d420010ed062006200a200d4280ec94a37c7e7ca72203360290012006418094ebdc03360294012006200b200c20064190016a2003418094ebdc034b4102746a350200220a420010ed06427f200641306a41086a290300200641086a2903007c2006290330220c20062903007c220b200c54ad7c200b200a200720062903107c7e220a200a428094ebdc0380220a4280ec94a37c7e7c4280cab5ee0156200aa76aad7c220a200b54ad7c220b20097c200a20077c220c200a54ad7c42002009200b7d2007200a54ad7d220b2007200a7d220a200756200b200956200b2009511b22031b20021b200c4200200a20031b20021b22094280a094a58d1d7c2207200954ad7c220920057c200720047c22042007542202ad7c22072002200720095420072009511b22021b2105427f200420021b21040b2000200437030020002005370308200641c0016a24000b810603087f017e047f23004180086b22022400200241b8046a200110f6030240024020022802bc042203450d00200241c4046a280200210420022802c004210520022802b8042106200241106a200241c8046a41e00010e8061a200241086a200110e601024002400240024020022802080d00200228020c2207200128020441c8036e2208200820074b1b2209ad42c8037e220a422088a70d01200aa72208417f4c0d010240024020080d004108210b0c010b2008102d220b450d03200841c8036e21090b024002402007450d004100210c410021084100210d0340200241b8046a200110a40420022903a0054203510d02200d41016a210e200241f0006a200241b8046a41c80310e8061a0240200d2009470d00200c200e200c200e4b1bad42c8037e220a422088a70d07200aa722094100480d0702400240200d0d002009102d210b0c010b200b200820091031210b0b200b450d06200941c8036e21090b200b20086a200241f0006a41c80310e8061a200c41026a210c200841c8036a2108200e210d2007200e470d000b0b200b450d01200241b8046a200241106a41e00010e8061a2000410c6a2004360200200020053602082000200336020420002006360200200041106a200241b8046a41e00010e8061a200041f8006a2007360200200041f4006a2009360200200041f0006a200b3602000c060b0240200d450d00200b4198016a210e0340200e108d01200e41c8036a210e200841b87c6a22080d000b0b2009450d00200b102f0b2000410036020402402004450d00200441246c210e2003210803400240024020082d0000220d41044b0d00024002400240200d0e050400010204040b2008410c6a280200450d03200841086a280200102f0c030b2008410c6a280200450d02200841086a280200102f0c020b2008410c6a280200450d01200841086a280200102f0c010b200841086a280200450d00200841046a280200102f0b200841246a2108200e415c6a220e0d000b0b2005450d042003102f0c040b103d000b1036000b1038000b200041003602040b20024180086a24000b8c0201037f024002400240024002400240024020012802000e0400010203000b410121024101102d2201450d05200141003a0000410121030c040b4101102d2202450d04200241013a00002001280204210320024101410510312202450d042002200336000120012802082104410a210320024105410a10312201450d04200120043600050c020b410121024101102d2201450d03200141023a0000410121030c020b4101102d2202450d02200241033a00002001280204210320024101410510312202450d022002200336000120012802082104410a210320024105410a10312201450d02200120043600050b410921020b2000200236020820002003360204200020013602000f0b1036000bd60402067f047e230041f0006b220224002002412036020c20022001360208200241106a2001ad4280808080800484100210730240024020022802102203450d002002280214210402400240200241186a2802002205450d0020032d0000220641014b0d004100210102400240024020060e020100010b41002101200241003a0068200341016a21072005417f6a2106034020062001460d02200241c8006a20016a200720016a2d00003a00002002200141016a22053a00682005210120054120470d000b200241206a41186a200241c8006a41186a290300370300200241206a41106a200241c8006a41106a290300370300200241206a41086a200241c8006a41086a29030037030020022002290348370320410121010b200241c8006a41186a200241206a41186a2903002208370300200241c8006a41106a200241206a41106a2903002209370300200241c8006a41086a200241206a41086a290300220a37030020022002290320220b370348200041196a2008370000200041116a2009370000200041096a200a3700002000200b3700010c020b200141ff0171450d00200241003a00680b20024100360228200242013703202002410b3602442002200241086a3602402002200241206a36026c200241dc006a41013602002002420137024c200241b885c7003602482002200241c0006a360258200241ec006a41d8dbc100200241c8006a103c1a2002350228422086200235022084100802402002280224450d002002280220102f0b410221010b200020013a00002004450d012003102f0c010b200041023a00000b200241f0006a24000b830301067f230041106b2203240002400240024020014105744104722204417f4c0d002004102d2205450d012003410036020820032004360204200320053602002001200310690240024020010d002003280208210520032802042106200328020021070c010b20014105742108200328020021072003280204210420032802082101034002400240200420016b4120490d00200141206a2105200421060c010b200141206a22052001490d05200441017422062005200620054b1b22064100480d050240024020040d002006102d21070c010b200720042006103121070b2007450d040b200720016a22012000290000370000200141186a200041186a290000370000200141106a200041106a290000370000200141086a200041086a2900003700002006210420052101200041206a2100200841606a22080d000b2003200636020420032005360208200320073602000b20022902002005ad4220862007ad84100402402006450d002007102f0b200341106a24000f0b103d000b1036000b1038000b9b0304017f017e017f027e230041d0006b22042400200341086a290300210520032802042106024002400240024002400240024020032802000e06000102030504000b2006ad21050c040b2004200129034842002006ad420010ed06427f210720042903084200520d04200429030021050c030b200441106a200129035042002006ad420010ed06427f210720042903184200520d03200429031021050c020b200441206a200129031842002006ad420010ed06427f210720042903284200520d02200429032021050c010b200441306a200129032842002006ad420010ed06200441c0006a20012903204200200542ffffffff0f83420010ed06427f210720042903484200520d0120042903384200520d012004290340220520042903307c22082005540d01200820012903307c22052008540d010b200521070b200042002000290308220520077d220720072005561b37030841002103024020072005580d0002402002280200450d0020022802042203450d00200241086a280200450d002003102f0b20024201370200410121030b200441d0006a240020030be304020b7f017e230041106b22052400024002400240200128020041016a220641004c0d0020012006360200200141046a2106200141086a2802002107024002400240034002400240200628020022082f010622090d004100210a0c010b2009410574210620084198036a210b200841086a210c417f210a0340024020060d002009210a0c020b2002200c412010ea06220d450d03200641606a2106200b41e0006a210b200a41016a210a200c41206a210c200d417f4a0d000b0b2007450d022007417f6a21072008200a4102746a41880b6a21060c000b0b200b41046a2802002109200b21060240024003404100210e4100210a0240200628020022072f0106220f450d00200f4105742106200741f0026a210d200741086a210c417f210a0340024020060d00200f210a0c020b2004200c412010ea062208450d03200641606a2106200d410c6a210d200a41016a210a200c41206a210c2008417f4a0d000b0b2009450d022009417f6a21092007200a4102746a41ec036a21060c000b0b02400240200d41786a280200220a0d0041002106420021100c010b200d280200220c417f4c0d0502400240200c0d00410121060c010b200c102d2206450d070b2006200a200c10e8061a200cad21100b201042208620108421104101210e0b02400240200b412d6a2d0000450d0020064100200e1b21060c010b200e450d010b20002010370204200020063602000c010b20002001280210200220032004200141146a28020028020c1106000b20012001280200417f6a360200200541106a24000f0b41c6c4ca004118200541086a41cc90c70041f0c4ca00103e000b103d000b1036000b9203020a7f037e230041206b220324000240200128020041016a220441004c0d0020012004360200200141046a2105200141086a2802002106024002400240034002400240200528020022072f010622080d00410021090c010b20084105742105200741c5036a210a200741086a210b417f21090340024020050d00200821090c020b2002200b412010ea06220c450d03200541606a2105200a41e0006a210a200941016a2109200b41206a210b200c417f4a0d000b0b2006450d022006417f6a2106200720094102746a41880b6a21050c000b0b200a41436a2205290300210d200a41bb7f6a290300210e200541086a290300210f0240200a2d00000d00200ea721054201210e2005450d010c020b200e4202520d010b200320012802102002200141146a280200280214110300200341106a290300210f200128020021042003290308210d2003290300210e0b20012004417f6a360200200041106a200f3703002000200d3703082000200e370300200341206a24000f0b41c6c4ca004118200341186a41cc90c70041f0c4ca00103e000b290020004101360204200041086a200128020420012802006b41a0016e2201360200200020013602000bf40101047f230041d0006b21020240200128020022032001280204470d00200041003602000f0b2001200341a0016a3602002002200341c2006a29000037012a2002200341ca006a290000370132200241106a220120022903303703002002200341d2006a29000037013a200241186a220420022903383703002002200341da006a2800003601422002200341de006a2f00003b0146200241206a220520022903403703002002200341c0006a2f00003b01282002200229032837030820002003360200200020022903083700042000410c6a2001290300370000200041146a20042903003700002000411c6a20052903003700000bf30801087f230041f0006b2103024002402001280200220420012802042205460d00200241016a210603402001200441a0016a2202360200200341003a0068200441c0006a2d00002107200341013a0068200320073a0048200441c1006a2d00002107200341023a0068200320073a0049200441c2006a2d00002107200341033a0068200320073a004a200441c3006a2d00002107200341043a0068200320073a004b200441c4006a2d00002107200341053a0068200320073a004c200441c5006a2d00002107200341063a0068200320073a004d200441c6006a2d00002107200341073a0068200320073a004e2003200441c7006a2d00003a004f200341083a0068200441c8006a2d00002107200341093a0068200320073a0050200441c9006a2d000021072003410a3a0068200320073a0051200441ca006a2d000021072003410b3a0068200320073a0052200441cb006a2d000021072003410c3a0068200320073a0053200441cc006a2d000021072003410d3a0068200320073a0054200441cd006a2d000021072003410e3a0068200320073a0055200441ce006a2d000021072003410f3a0068200320073a00562003200441cf006a2d00003a0057200341103a0068200441d0006a2d00002107200341113a0068200320073a0058200441d1006a2d00002107200341123a0068200320073a0059200441d2006a2d00002107200341133a0068200320073a005a200441d3006a2d00002107200341143a0068200320073a005b200441d4006a2d00002107200341153a0068200320073a005c200441d5006a2d00002107200341163a0068200320073a005d200441d6006a2d00002107200341173a0068200320073a005e2003200441d7006a2d00003a005f200341183a0068200441d8006a2d00002107200341193a0068200320073a0060200441d9006a2d000021072003411a3a0068200320073a0061200441da006a2d000021072003411b3a0068200320073a0062200441db006a2d000021072003411c3a0068200320073a0063200441dc006a2d000021072003411d3a0068200320073a0064200441dd006a2d000021072003411e3a0068200320073a0065200441de006a2d000021072003411f3a0068200320073a0066200441df006a2d00002107200341203a0068200320073a0067200341286a41086a22072003290350370300200341286a41106a22082003290358370300200341286a41186a2209200329036037030020032003290348370328200341086a41086a220a2007290300370300200341086a41106a22072008290300370300200341086a41186a2208200929030037030020032003290328370308200341c8006a41186a2008290300370300200341c8006a41106a2007290300370300200341c8006a41086a200a290300370300200320032903083703482006417f6a2206450d022002210420052002470d000b0b200041003602000f0b20002004360200200020032903483702042000410c6a200341d0006a290300370200200041146a200341d8006a2903003702002000411c6a200341e0006a2903003702000b13002000410136020420004184c6c6003602000b3400200041b89bca0036020420004100360200200041146a4107360200200041106a41f8c6c600360200200041086a420f3702000b2c01017f02404108102d22020d001036000b20004288808080800137020420002002360200200242003700000b2201017f230041106b22022400200241003602002000200210f204200241106a24000bed0303027f037e027f230041c0006b2202240041e7a2ca00ad4280808080800184100122032900002104200241086a200341086a290000370300200220043703002003102f41f9b5c600ad4280808080d00084100122032900002104200241106a41086a200341086a290000370300200220043703102003102f02404120102d2203450d0020032001290000370000200341186a200141186a290000370000200341106a200141106a290000370000200341086a200141086a2900003700002003ad4280808080800484100322012900002104200141086a2900002105200141106a2900002106200241206a41186a2207200141186a290000370300200241206a41106a22082006370300200241206a41086a2005370300200220043703202001102f2003102f41c000102d2203450d00200320022903003700002003200229031037001020032002290320370020200341086a200241086a290300370000200341186a200241106a41086a290300370000200341286a200241206a41086a290300370000200341306a2008290300370000200341386a2007290300370000200241206a200341c00010ca030240024020022802202201450d0020002002290224370204200020013602000c010b20004100360208200042083702000b2003102f200241c0006a24000f0b1036000bd2190e027f017e017f027e037f017e027f047e027f017e017f017e017f047e230041d0046b22032400418de6c300ad4280808080e00084100122042900002105200341d8006a41086a200441086a290000370300200320053703582004102f41f0e8c600ad4280808080f00084100122042900002105200341086a41086a200441086a290000370300200320053703082004102f02404120102d2204450d0020042000290000370000200441186a200041186a290000370000200441106a200041106a290000370000200441086a200041086a2900003700002004ad4280808080800484100322062900002105200641086a2900002107200641106a2900002108200341d0036a41186a2209200641186a290000370300200341d0036a41106a220a2008370300200341d0036a41086a2007370300200320053703d0032006102f2004102f41c000102d220b450d00200b2003290358370000200b2003290308370010200b20032903d003370020200b41086a200341d8006a41086a2204290300370000200b41186a200341086a41086a290300370000200b41286a200341d0036a41086a290300370000200b41306a200a290300370000200b41386a2009290300370000200341086a200b10f6022003290308210c4200210520034200370308200341d0006a280200210d20032d0054210e02400240200c4201510d00200341d8006a41386a4200370300200341d8006a41306a4200370300200341d8006a41286a4200370300200341d8006a41206a4200370300200341f0006a4200370300200341e8006a42003703002004420037030020034200370358420021074200210f420021100c010b200341086a41386a2903002108200341086a41306a2903002111200341086a41206a2903002107200341086a41186a2903002105200341086a41c0006a2903002112200329031821102003290310210f200341d8006a41206a200341086a41286a290300370300200341d8006a41286a2011370300200341d8006a41306a2008370300200341e8006a20053703002003200737037020032012370390012003200f370358200320103703600b4200210820034190016a22134200370300200341d8006a41306a4200370300200341d8006a41286a2214420037030020034200370378201020077c200f20057c2215200f542216ad7c2117200341d8006a41106a211802402002450d002002410574210942002108420021124200211942002111200121040340024002400240200441186a220a2d00002206417f6a41ff017141014b0d0020142011200441086a290300220520192004290300220756201120055620112005511b22061b221137030020032019200720061b2219370378200a2d000022064102460d010b200641ff01710d01200441086a2903002105200429030021070b2013200820052012200756200820055620082005511b22061b220837030020032012200720061b2212370388010b200441206a2104200941606a22090d000b0b201720105121042017201054210620034198016a41186a201841086a290300220537030020034198016a41206a220a201841106a29030037030020034198016a41286a201841186a29030037030020034198016a41306a201841206a2903003703002003201829030022073703a8012003200f37039801200320103703a00102400240427f200f20077c22072007200f542209201020057c2009ad7c220520105420052010511b22091b2207428080e983b1de16544100427f200520091b2211501b0d00200341a8016a2903002107200341c8016a2903002111200341c0016a2903002112200a290300211920032903a001211a200329039801211b4201210520032903b001211c0c010b4200210502402007201184500d0020072011109a0120034188046a201137030020034180046a2007370300200341d0036a41086a41013a0000200341d9036a2000290000370000200341e1036a200041086a290000370000200341e9036a200041106a290000370000200341f1036a200041186a290000370000200341033a00d00341c8e1ca004100200341d0036a108c010b0b2016200620041b2104200341306a2019370300200341386a2012370300200341186a201a370300200341c0006a2011370300200341206a20073703002003201c370328200320083703482003201b3703102003200e4100200c42015122061b3a00542003200d410020061b360250200320054201512206ad3703080240024020060d00200bad428080808080088410050c010b200341c0003602d4032003200b3602d003200341106a200341d0036a1090030b427f201720041b2107427f201520041b2108200b102f20054201522104024002400240200c4201510d0020040d0041032106200341d0026a21040c010b200c4201522004410173720d0141042106200341d0016a21040b200441046a20063a0000200441003a0000200441056a20002900003700002004410d6a200041086a290000370000200441156a200041106a2900003700002004411d6a200041186a29000037000041c8e1ca0041002004108c010b024020082007844200520d0020034188046a201037030020034180046a200f370300200341d0036a41086a41003a0000200341d9036a2000290000370000200341e1036a200041086a290000370000200341e9036a200041106a290000370000200341f1036a200041186a290000370000200341033a00d00341c8e1ca004100200341d0036a108c010b41e7a2ca00ad4280808080800184100122042900002105200341d0016a41086a200441086a290000370300200320053703d0012004102f41f9b5c600ad4280808080d00084100122042900002105200341d0026a41086a200441086a290000370300200320053703d0022004102f4120102d2204450d0020042000290000370000200441186a200041186a290000370000200441106a200041106a290000370000200441086a200041086a2900003700002004ad4280808080800484100322062900002105200641086a2900002107200641106a2900002108200341d0036a41186a2209200641186a290000370300200341d0036a41106a220a2008370300200341d0036a41086a2007370300200320053703d0032006102f2004102f41c000102d2204450d00200420032903d001370000200420032903d002370010200420032903d003370020200441086a200341d0016a41086a2206290300370000200441186a200341d0026a41086a220b290300370000200441286a200341d0036a41086a290300370000200441306a200a290300370000200441386a20092903003700002003200441c00041c8e1ca004100410010b501200328020021092004102f41e7a2ca00ad42808080808001841001220429000021052006200441086a290000370300200320053703d0012004102f41f9b5c600ad4280808080d00084100122042900002105200b200441086a290000370300200320053703d0022004102f4120102d2104024002402002450d002004450d0220042000290000370000200441186a200041186a290000370000200441106a200041106a290000370000200441086a200041086a2900003700002004ad4280808080800484100322062900002105200641086a2900002107200641106a2900002108200341d0036a41186a220a200641186a290000370300200341d0036a41106a220b2008370300200341d0036a41086a22132007370300200320053703d0032006102f2004102f41c000102d2204450d02200420032903d001370000200420032903d002370010200420032903d003370020200441086a200341d0016a41086a290300370000200441186a200341d0026a41086a290300370000200441286a2013290300370000200441306a200b290300370000200441386a200a290300370000200341d0036a20012002109d042004ad428080808080088420033502d80342208620032802d0032206ad841004024020032802d403450d002006102f0b2004102f20094101460d01200010d0020c010b2004450d0120042000290000370000200441186a200041186a290000370000200441106a200041106a290000370000200441086a200041086a2900003700002004ad4280808080800484100322062900002105200641086a2900002107200641106a2900002108200341d0036a41186a220a200641186a290000370300200341d0036a41106a220b2008370300200341d0036a41086a22132007370300200320053703d0032006102f2004102f41c000102d2204450d01200420032903d001370000200420032903d002370010200420032903d003370020200441086a200341d0016a41086a290300370000200441186a200341d0026a41086a290300370000200441286a2013290300370000200441306a200b290300370000200441386a200a2903003700002004ad428080808080088410052004102f20094101470d00200010ca020b200341d0046a24000f0b1036000b1300200041043602042000419cd2c6003602000b3400200041e7a2ca0036020420004100360200200041146a4104360200200041106a41ece5c600360200200041086a42083702000b830101017f02404110102d2202450d00200242003700082002420037000020024110412010312202450d0020024200370010200241186a42003700002002412041c00010312202450d002002420037003020024200370020200042c0808080800837020420002002360200200241386a4200370000200241286a42003700000f0b1036000b130020004101360204200041acedc6003602000ba50205017e027f027e017f047e420121020240200128020422034110490d002001280200220441086a2900002105200429000021062001200441106a3602002001200341706a220736020420074110490d00200441186a2900002108200429001021092001200341606a22073602042001200441206a36020020074110490d00200441286a290000210a2004290020210b2001200341506a22073602042001200441306a3602002007410f4d0d0020002006370308200041386a2004290030370300200041306a200a370300200041286a200b370300200041206a2008370300200041186a2009370300200041106a2005370300200041c0006a200441386a2900003703002001200341406a3602042001200441c0006a360200420021020b200020023703000b3400200041ed9bca0036020420004100360200200041146a4103360200200041106a41b4eec600360200200041086a42083702000b3400200041e7a2ca0036020420004100360200200041146a4101360200200041106a41c0f6c600360200200041086a42083702000b130020004102360204200041b4f7c6003602000b3400200041dcbec60036020420004100360200200041146a4101360200200041106a41f8f9c600360200200041086a42183702000bac0707017f047e037f017e057f047e017f23004180026b22022400200241c0006a2001109c030240024002400240024002402002290340a70d00200241c0006a41106a290300210320022903482104200241286a2001109c032002290328a70d02200241286a41106a290300210520022903302106200241206a200110e60120022802200d0320022802242207200128020441306e2208200820074b1b2209ad42307e220a422088a7450d010c050b200041003602200c030b200aa72208417f4c0d0302400240024020080d004108210b0c010b2008102d220b450d01200841306e21090b02402007450d004100210c0340200241003a00f801200c220d41016a210c2001280204417f6a21084100210e024002400240024003402008417f460d01200241d8016a200e6a2001280200220f2d00003a0000200120083602042001200f41016a3602002002200e41016a220f3a00f8012008417f6a2108200f210e200f4120470d000b200241b8016a41186a2208200241d8016a41186a290300370300200241b8016a41106a220e200241d8016a41106a290300370300200241b8016a41086a220f200241d8016a41086a290300370300200220022903d8013703b801200241086a2001109c032002290308a70d01200241086a41106a290300210a20022903102110200241f8006a41086a200f2903002211370300200241f8006a41106a200e2903002212370300200241f8006a41186a20082903002213370300200241d8006a41086a220e2011370300200241d8006a41106a220f2012370300200241d8006a41186a22142013370300200220022903b8012211370378200220113703582009200d470d030240200d4101742208200c2008200c4b1bad42307e2211422088a70d002011a7220841004e0d030b1038000b200e41ff0171450d00200241003a00f8010b200241f8006a41086a20024198016a41086a2903003703002009450d06200b102f0c060b02400240200d0d002008102d210b0c010b200b200d41306c20081031210b0b200b450d03200841306e21090b200b200d41306c6a2208200a3703082008201037030020082002290358370310200841186a200e290300370300200841206a200f290300370300200841286a2014290300370300200c2007470d000b0b200b450d0220002004370300200020093602242000200b3602202000200637031020002003370308200041286a2007360200200041186a20053703000c030b1036000b200041003602200c010b200041003602200b20024180026a24000f0b103d000b130020004104360204200041bcfcc6003602000b130020004108360204200041a480c7003602000bcb0102037f037e230041206b2205240002400240024020030d00200041003602000c010b2003280208220641164d0d01200328020021072004ad4280808080800484100322032900002108200341086a2900002109200341106a290000210a200541186a200341186a290000370300200541106a200a370300200541086a2009370300200520083703002003102f20002006ad4220862007ad84200641696aad422086200741176aad8441012005ad4280808080800484101010730b200541206a24000f0b41172006104b000baf0201027f23004190016b220324002003200210e8010240024020032d000022024102460d00200341e0006a200341286a290300370300200341e8006a200341306a290300370300200341d8006a41186a200341386a290300370300200341d8006a41206a200341c0006a290300370300200341d8006a41286a200341c8006a290300370300200341d8006a41306a200341d0006a2802003602002003200341206a29030037035802402002450d00200041003a00000c020b2003411c6a2802002102200341186a28020021042000200329026c370001200041013a0000200041196a20034184016a290200370000200041116a200341fc006a290200370000200041096a200341d8006a411c6a2902003700002002450d012004102f0c010b200041003a00000b20034190016a24000b870102017f037e230041e0006b22032400200341086a200210e8010240024020032d000822024102470d00420021040c010b2002410173ad2104200341186a2903002105200341106a290300210620020d00200341246a280200450d00200341206a280200102f0b2000200637030820002004370300200041106a2005370300200341e0006a24000bd70303027f037e027f230041d0006b2202240041aa97ca00ad4280808080800184100122032900002104200241106a41086a200341086a290000370300200220043703102003102f41cbcec100ad4280808080e00184100122032900002104200241206a41086a200341086a290000370300200220043703202003102f02404120102d2203450d0020032001290000370000200341186a200141186a290000370000200341106a200141106a290000370000200341086a200141086a2900003700002003ad4280808080800484100322012900002104200141086a2900002105200141106a2900002106200241306a41186a2207200141186a290000370300200241306a41106a22082006370300200241306a41086a2005370300200220043703302001102f2003102f41c000102d2203450d00200320022903103700002003200229032037001020032002290330370020200341086a200241106a41086a290300370000200341186a200241206a41086a290300370000200341286a200241306a41086a290300370000200341306a2008290300370000200341386a2007290300370000200241086a200341c00041c8e1ca004100410010b501200228020821012003102f200241d0006a240020014101460f0b1036000b3a02017f017e230041c0006b2203240020032002108d02200329030021042000200341086a29030037030820002004370300200341c0006a24000bd10903067f017e057f230041f0016b220224000240024002400240024020012802042203450d00200128020022042d0000210520012003417f6a22063602042001200441016a3602002005417f6a220541014b0d0320050e020102010b200041023a00000c030b0240024020064104490d002004280001210720012003417b6a22053602042001200441056a360200024020054108490d00200429000521082001200341736a36020420012004410d6a36020041002105200241003a00b001410d20036b2109200341726a210602400340200920056a450d0120024190016a20056a200420056a220a410d6a2d00003a0000200120063602042001200a410e6a3602002002200541016a220a3a00b0012006417f6a2106200a2105200a4120470d000b200241f0006a41186a20024190016a41186a290300370300200241f0006a41106a20024190016a41106a290300370300200241f0006a41086a20024190016a41086a290300370300200220022903900137037041002105200241003a00d0012004200a6a2109200a20036b410d6a210a0340200a20056a450d0420024190016a20056a200920056a2204410d6a2d00003a00002001200636020420012004410e6a3602002002200541016a22043a00d0012006417f6a210620042105200441c000470d000b200241106a41386a220120024190016a41386a290300370300200241106a41306a220520024190016a41306a290300370300200241106a41286a220620024190016a41286a290300370300200241106a41206a220420024190016a41206a290300370300200241106a41186a220a20024190016a41186a290300370300200241106a41106a220320024190016a41106a290300370300200241106a41086a220920024190016a41086a290300370300200241d0006a41086a220b200241f0006a41086a290300370300200241d0006a41106a220c200241f0006a41106a290300370300200241d0006a41186a220d200241f0006a41186a290300370300200220022903900137031020022002290370370350200041003a000020002002290350370001200041096a200b290300370000200041116a200c290300370000200041196a200d290300370000200041216a2002290310370000200041296a2009290300370000200041316a2003290300370000200041396a200a290300370000200041c1006a2004290300370000200041c9006a2006290300370000200041d1006a2005290300370000200041d9006a2001290300370000200041e3006a2002410f6a2d00003a0000200041e1006a20022f000d3b0000200041e8006a2008370300200041e4006a20073602000c060b0240200541ff0171450d00200241003a00b0010b200041023a00000c050b200041023a00000c040b200041023a00000c030b0240200541ff0171450d00200241003a00d0010b200041023a00000c020b024020064104490d002004280001210620012003417b6a22053602042001200441056a36020020054108490d00200041013a0000200020022f00103b0001200429000521082001200341736a36020420012004410d6a360200200041086a2008370300200041046a2006360200200041036a200241126a2d00003a0000200041106a20024190016a41e00010e8061a0c020b200041023a00000c010b200041023a00000b200241f0016a24000bf90303027f037e027f230041e0006b2202240041bd98ca00ad4280808080800284100122032900002104200241206a41086a200341086a290000370300200220043703202003102f41ce89c700ad4280808080f00084100122032900002104200241306a41086a200341086a290000370300200220043703302003102f02404120102d2203450d0020032001290000370000200341186a200141186a290000370000200341106a200141106a290000370000200341086a200141086a2900003700002003ad4280808080800484100322012900002104200141086a2900002105200141106a2900002106200241c0006a41186a2207200141186a290000370300200241c0006a41106a22082006370300200241c0006a41086a2005370300200220043703402001102f2003102f41c000102d2203450d00200320022903203700002003200229033037001020032002290340370020200341086a200241206a41086a290300370000200341186a200241306a41086a290300370000200341286a200241c0006a41086a290300370000200341306a2008290300370000200341386a2007290300370000200241086a200341c000109c01200241086a41106a290300210420022903102105200228020821012003102f20002004420020011b37030820002005420020011b370300200241e0006a24000f0b1036000ba62c07017f017e017f027e017f027e197f23004190036b2207240002400240024002402001200284500d002003200484500d004201210820074198016a200320012003200156200420025620042002511b22091b220a2004200220091b220b20054201200542015620064200522006501b220c1b220520064200200c1b220610ee0620074188016a200729039801220d20074198016a41086a290300220e2005200610ed062002200420091b21022001200320091b2104200a20072903880185200b20074188016a41086a290300858450450d01200d210a200e210b420021060c020b20004100360200200041106a4200370300200041086a42003703000c020b200741f8006a200420022005200610ee06200741e8006a20072903782201200741f8006a41086a29030022032005200610ed064200200620042007290368852002200741e8006a41086a29030085845022091b21064201200520091b21082003200220091b21022001200420091b21040b200741386a200b42002004420010ed06200741c8006a20024200200a420010ed06200741d8006a200a42002004420010ed06024002400240024002400240024002400240024002400240024002400240200b420052200242005271200729034042005272200729035042005272200741d8006a41086a2903002201200729033820072903487c7c2203200154724101470d004110102d2209450d0d2009200a3e020c2009200a4220883e02082009200b3e02042009200b4220883e020020074284808080c0003702ac02200720093602a802200741a8026a10ca06200741a8016a41086a20072802b002360200200720072903a8023703a8014110102d2209450d0d200920043e020c200920044220883e0208200920023e0204200920024220883e020020074284808080c0003702ac02200720093602a802200741a8026a10ca06200741b8016a41086a20072802b002360200200720072903a8023703b8014110102d2209450d0d20092008a7220f36020c200920084220883e0208200920063e0204200920064220883e020020074284808080c0003702ac02200720093602a802200741a8026a10ca06200741c8016a41086a20072802b002360200200720072903a8023703c80120074180036a41086a200741b8016a41086a280200360200200720072903b80137038003200741a8026a41086a200741a8016a41086a280200360200200720072903a8013703a802200741d8016a200741a8026a20074180036a10cc060240200728028403450d00200728028003102f0b200741d8016a10ca0620072802d00122104101460d0120072802dc01211120072802d80121122010450d0a20072802c801220c280200450d0a024020072802e0012213450d002012280200450d0b201320104d0d0b200720103602e401201320106b221441016a22154101201541014b1b221641ffffffff03712016470d0320164102742209417f4c0d030240024020090d0041042117201621180c010b200910332217450d0f200941027621180b201041ffffffff03712010470d0320104102742209417f4c0d030240024020090d00410421192010211a0c010b200910332219450d0f2009410276211a0b410221094101210f200c280200220c67221b211c0240200c41ffffffff034b0d0041022109201b210c4101210f034020094101200c4101711b200f6c210f200c41034b211d200920096c2109200c410176221c210c201d0d000b0b2007201336028803200720113602840320072012360280034104102d220c450d0e200c20094101201c4101461b200f6c220f36020020074281808080103702ac022007200c3602a802200741e8016a20074180036a200741a8026a10cc06200c102f20074180036a200741c8016a10cf064104102d2209450d0e2009200f36020020074281808080103702ac02200720093602a802200741f8016a20074180036a200741a8026a10cc062009102f0240024020072802e40120156a220920072802f001220c4d0d00024002402009200c6b22090d004104210f4100211d410021090c010b200941ffffffff03712009470d022009410274221d4100480d02201d102d220f450d11200f4100200941027410e7061a201d410276211d0b20072802e801211c0240201d20096b200c4f0d002009200c6a22122009490d02201d41017422112012201120124b1b221241ffffffff03712012470d02201241027422124100480d0202400240201d0d002012102d210f0c010b200f201d41027420121031210f0b200f450d112012410276211d0b200f20094102746a201c200c41027410e8061a2009200c6a2109024020072802ec01450d00201c102f0b200720093602f0012007201d3602ec012007200f3602e8010b200741f8016a10ca060240024002400240024002400240024002400240034020072014221e36028402024020072802f001220920072802e401220c201e6a220f417f736a221d2009490d0041c4c2ca00201d2009103b000b0240024002400240024002400240024002400240024002400240024020092009200f6b220f4d0d0020072802800222092009200c6b220c4d0d0120072802f801200c4102746a35020022024200510d02201e201e4100476b211420072802e8012209201d4102746a35020021012009200f4102746a3502002104200741003602880220072004200142208684200280220137039002200741003602980220072004200120027e7d42ffffffff0f833703a002200720074184026a3602bc022007200741e8016a3602b8022007200741e4016a3602b4022007200741f8016a3602b002200720074198026a3602ac02200720074188026a3602a802200741a8026a10cd061a034020072802980241016a41004c0d04024020072903a00242ffffffff0f560d00200741a8026a10cd060d010b0b2007290390022102200728028402210920072802e401210c200741003a0088032007200c20096a3602840320072009360280032007200741e8016a36028c03200741c0026a20074180036a10d006200741f0026a200741f8016a10cf064108102d2209450d2820092002a7221f360204200920024220883e02002007428280808020370284032007200936028003200741d0026a200741f0026a20074180036a10cc062009102f20072802c802222020072802d8022221202020214b1b22124101201241014b1b220c41ffffffff0371200c470d1d200c410274220f417f4c0d1d20072802c402212220072802c002212302400240200f0d0041042124200c21250c010b200f10332224450d29200f41027621250b2012450d062021417f6a221520214b211320072802d00221262020417f6a222720204b0d04200c417f6a21092024200f6a417c6a211c4100210f4200210203404100211d024020202027200f6b22114d0d004100211d201120274b0d00202320114102746a280200211d0b201dad21044100211d024020130d0020212015200f6b22114d0d00201120154b0d00202620114102746a280200211d0b024002402004201dad22037d22012004560d00200120027d220a2001560d00200a42ffffffff0f832104420021020c010b20044280808080108420027d20037d2104420121020b200c20094d0d09201c20043e0200201c417c6a211c2009417f6a2109200f41016a220f2012490d000c060b0b41c4c2ca00200f2009103b000b41c4c2ca00200c2009103b000b4190c4ca00411941acc3ca001039000b41c6c4ca00411820074180036a41e0c4ca0041f0c4ca00103e000b200c417f6a21092024200f6a417c6a211d4100211c4200210203404100210f024020130d004100210f20212015201c6b22114d0d004100210f201120154b0d00202620114102746a280200210f0b024002404200200fad22017d22044200520d00200420027d22032004560d00200342ffffffff0f832104420021020c010b428080808010200220017c7d2104420121020b200c20094d0d04201d20043e0200201d417c6a211d2009417f6a2109201c41016a221c2012490d000b0b41012111200250450d010b410021110b02402022450d002023102f0b20072802e401221d200728028402220f6a2213201d490d05200f20134f0d01200f417f7321090340200c200c200f6a20096a221c4d0d03200920072802f00122126a220f20094f0d0420072802e801200f4102746a2024201c4102746a2802003602002009417f6a2109200728028402210f201d417f6a221d0d000c050b0b419cc3ca002009200c103b000b201d450d020c030b41c4c2ca0020212020202120204b1b22074101200741014b1b200f6a20096a200c103b000b419cc3ca00200f2012103b000b200c200c2013417f7322096a200f6a220f4d0d0220072802f001220c20096a2209200c4f0d0320072802e80120094102746a2024200f4102746a280200360200200728028402210f0b2016200f417f736a220920164f0d03201720094102746a201f36020002402011450d002016200728028402417f736a220920164f0d05201720094102746a22092009280200417f6a360200200728028402210920072802e401210c200741003a0088032007200c20096a3602840320072009360280032007200741e8016a36028c03200741e0026a20074180036a10d00620074180036a200741f8016a10cf06200741f0026a20074180036a200741e0026a10cb06024020072802e401220920072802840222126a220c2009490d00024002402012200c4f0d00200c417f73210920072802f002211120072802f802210f2012211d0340200f200f201d6a20096a221d4d0d0a200920072802f00122136a221c20094f0d0b20072802e801201c4102746a2011201d4102746a280200360200200941016a2109200728028402211d2012200c417f6a220c490d000c020b0b20090d0120072802f802210f2012211d0b201d2012417f7322096a220c200f6a221d200c4f0d0920072802f001220c20096a2209200c4f0d0a20072802e80120094102746a20072802f002201d4102746a2802003602000b024020072802f402450d0020072802f002102f0b20072802e402450d0020072802e002102f0b02402025450d002024102f0b024020072802d402450d0020072802d002102f0b201e0d000b0240201b450d004101210920072802e401220c4101460d134100200c6b2112201b411f7121114100201b6b411f712113201041027420196a417c6a210c417f210903400240200920072802f001221d6a220f2009490d0041c4c2ca00200f201d103b000b201d200f417f6a221c4d0d0a201020096a221d20104f0d0b200c20072802e801221d201c4102746a280200201374201d200f4102746a28020020117672360200200c417c6a210c20122009417f6a2209460d130c000b0b4100210920072802f001211020072802ec01210f20072802e801211d201a450d132019102f0c130b41c4c2ca00200f200c103b000b419cc3ca002009200c103b000b419cc3ca0020092016103b000b41c4c2ca0020092016103b000b41c4c2ca00201d200f103b000b419cc3ca00201c2013103b000b41c4c2ca00201d200f103b000b419cc3ca002009200c103b000b41c4c2ca00200f417f6a201d103b000b419cc3ca00201d2010103b000b1038000b41c4c2ca0041004100103b000b200741286a200729035820032008200610ee0620004100360200200041106a200741286a41086a290300370300200041086a20072903283703000c0e0b200741a8026a41086a200741d8016a41086a280200221c360200200720072903d8013703a802201c4101201c41014b1b221d41ffffffff0371201d470d00201d4102742209417f4c0d000240024020090d0041042115201d21270c010b200910332215450d0c200941027621270b201c450d02201c417f6a21122015201d201c6b22114102746a210c200f4101200f41014b1bad2102420021044100210920072802a802210f0340201d201120096a22134d0d02200c2004422086200f35020084220420028022013e020020122009460d03200c41046a210c200f41046a210f2004200120027e7d2104201c200941016a22094b0d000b41c4c2ca002009201c103b000b103d000b419cc3ca002013201d103b000b2007201d360288032007202736028403200720153602800320072802ac02450d0720072802a802102f0c070b20072802e40121090b20072802f001220c200c20096b220f4d0d012010201020096b22094d0d02201920094102746a20072802e801200f4102746a280200201b411f717636020041012109201a210f2019211d0b024020072802fc01450d0020072802f801102f0b2009450d0320072802ec01450d0320072802e801102f0c030b41c4c2ca00200f200c103b000b419cc3ca0020092010103b000b4100211702402011450d002012102f0b0b4104102d2209450d01200941003602004104102d220c450d01200c41003602004101211c0240024020170d00200921174101211841012116200c211d4101210f410121100c010b2009102f200c102f0b20072016360290022007201836028c022007201736028802200720103602b0022007200f3602ac022007201d3602a802200741a8026a10ca06420021020240024020072802b00222094105744180014d0d00421d21040c010b4100211c024020090d00420021040c010b20072802a802220c200941027422096a417c6a220f280200211d0240200c200f470d00201dad21040c010b200c41786a210f201dad2104200741206a211d4120210c420021020340200741186a200f20096a3502004200200c41e0007110eb06201d29030020027c2007290318220220047c2204200254ad7c2102200c41206a210c2009417c6a22094104470d000b0b024020072802ac02450d0020072802a802102f0b201c0d020240200420084201882006423f8684562002200642018822045620022004511b450d0020074198026a41086a20074188026a41086a2802003602002007200729038802370398024110102d2209450d0220094280808080103702082009420037020020074284808080c0003702ac02200720093602a802200741a8026a10ca0620074180036a41086a20072802b002360200200720072903a8023703800320074188026a20074198026a20074180036a10cb06200728028403450d00200728028003102f0b20074180036a41086a20074188026a41086a2802003602002007200729038802370380030b20074180036a10ca06200741a8026a41086a220920074180036a41086a28020036020020072007290380033703a802200741a8026a10ca064200210202400240200928020022094105744180014d0d00421d21044101211c0c010b4100211c024020090d00420021040c010b20072802a802220c200941027422096a417c6a220f280200211d0240200c200f470d00201dad21040c010b200c41786a210f201dad2104200741106a211d4120210c420021020340200741086a200f20096a3502004200200c41e0007110eb06201d29030020027c2007290308220220047c2204200254ad7c2102200c41206a210c2009417c6a22094104470d000b0b024020072802ac02450d0020072802a802102f0b02400240201c450d00200041c4c6ca00360204200041086a4119360200410121090c010b200041106a2002370300200041086a2004370300410021090b2000200936020020072802cc01450d0220072802c801102f0c020b1036000b200720043e02ac02200741a9c4ca003602a80241f4c5ca00412f200741a8026a41a4c6ca0041b4c6ca00103e000b20074190036a24000bd30201037f230041d0006b220824000240024002402002200685200320078584500d00200220038450450d01410121090c020b417f20002004852001200585844200522000200454200120055420012005511b1b21090c010b0240200620078450450d0041ff0121090c010b200841206a2000200110d106200841306a2006200710d106200841c0006a41086a2209200841206a41086a220a280200360200200820082903203703402008200841c0006a200841306a10cc0602402008280234450d002008280230102f0b200841206a2004200510d106200841306a2002200310d1062009200a28020036020020082008290320370340200841106a200841c0006a200841306a10cc0602402008280234450d002008280230102f0b2008200841106a10ce06210902402008280214450d002008280210102f0b2008280204450d002008280200102f0b200841d0006a240020090beb0203017f047e017f230041d0006b2202240002400240200029031022032001290310220485200041186a2903002205200141186a29030022068584500d00200241206a2000290300200041086a29030010d106200241306a2004200610d106200241c0006a41086a2200200241206a41086a2207280200360200200220022903203703402002200241c0006a200241306a10cc0602402002280234450d002002280230102f0b200241206a2001290300200141086a29030010d106200241306a2003200510d1062000200728020036020020022002290320370340200241106a200241c0006a200241306a10cc0602402002280234450d002002280230102f0b2002200241106a10ce06210002402002280214450d002002280210102f0b200041ff0171210002402002280204450d002002280200102f0b20004521000c010b2000290300200129030085200041086a290300200141086a29030085845021000b200241d0006a240020000b930901157f230041206b220524002003410020041b21062001410020021b2107200341206a200320041b2108200141206a200120021b2109200120024105746a210a200320044105746a210b4100210c4100210d4101210e4100210f410021104101211102400340200c4101742112200c4105742113024003402012211420132104200c2102200d2115200e2116200821032006210102400340024020010d004100210620070d022000201636020c2000200f3602082000201036020420002011360200200041146a2002360200200041106a2015360200200541206a24000f0b024020070d00200541186a2203200641186a290000370300200541106a2202200641106a290000370300200541086a2207200641086a290000370300200520062900003703000240200c200d470d00200c41016a2201200c490d07200c41017422042001200420014b1b220141ffffff3f712001470d07200141057422014100480d0702400240200c0d002001102d210e0c010b200e200c41057420011031210e0b200e450d052001410576210d0b200e200c4105746a22012005290300370000200141186a2003290300370000200141106a2002290300370000200141086a200729030037000041002107410020082008200b4622011b2106201241026a2112201341206a2113200c41016a210c2008200841206a20011b21080c030b0240024020012007460d0020012007412010ea0622170d010b2003200341206a2003200b4622011b2108410020092009200a4622041b21074100200320011b21062002210c2015210d2016210e2009200941206a20041b21090c050b02402017417f4c0d00200121060c020b200541186a2217200141186a290000370300200541106a2218200141106a290000370300200541086a2219200141086a29000037030020052001290000370300024020022015470d00200241016a22012002490d0620142001201420014b1b220141ffffff3f712001470d06200141057422014100480d060240024020020d002001102d21160c010b201620042001103121160b2016450d04200141057621150b201620046a22012005290300370000200141186a2017290300370000200141106a2018290300370000200141086a2019290300370000410020032003200b4622171b2101201441026a2114200441206a2104200241016a21022003200341206a20171b21030c000b0b0b200541186a2204200741186a290000370300200541106a2214200741106a290000370300200541086a2217200741086a290000370300200520072900003703000240200f2010470d00200f41016a2201200f490d03200f41017422072001200720014b1b220141ffffff3f712001470d03200141057422014100480d0302400240200f0d002001102d21110c010b2011200f4105742001103121110b2011450d01200141057621100b2011200f4105746a22012005290300370000200141186a2004290300370000200141106a2014290300370000200141086a2017290300370000410020092009200a4622011b2107200f41016a210f2002210c2015210d2016210e2009200941206a20011b2109200321080c010b0b1036000b1038000bb512080a7f027e047f017e047f027e027f057e23002204210520044180016b416071220424000240024002400240024002400240200141ffffff3f712001470d0020014105742206417f4c0d00024020060d00200020014105746a210741012108200121090c030b2006102d2208450d05200020014105746a21072006410576220920014f0d02200941017422062001200620014b1b220641ffffff3f712006470d01200641057422064100480d010240024020090d002006102d21080c010b200820094105742006103121080b2008450d05200641057621090c030b103d000b1038000b20010d00410021060c010b200720006b210a410021060340200820066a2207200020066a220b290000370000200741186a200b41186a290000370000200741106a200b41106a290000370000200741086a200b41086a290000370000200a200641206a2206470d000b200020014105746a20006b41606a41057641016a21060b20042006360208200420093602042004200836020020082006410041202006676b10e003200441206a41186a220a4200370300200441206a41106a220c4200370300200441206a41086a220d42003703002004420037032041f2cbc700ad4280808080b00284220e10012206290000210f200d200641086a2900003703002004200f3703202006102f41e2dec700ad428080808090018410012206290000210f200441c8006a41086a2200200641086a2900003703002004200f3703482006102f200c2004290348220f370300200441e0006a41086a2210200d290300370300200441e0006a41106a2211200f370300200441e0006a41186a2212200029030037030020042004290320370360200441206a200441e0006a412010aa0220042802202206410120061b21132004290224420020061b2214422088a72206450d0120064105742115200441e0006a410c722116200441206a410c6a2101200441206a4114722117200441206a4108722118201321070340200a200741186a290000370300200c200741106a290000370300200d200741086a29000037030020042007290000370320200e10012206290000210f200441106a41086a2208200641086a2900003703002004200f3703102006102f41f2dec700ad4280808080e0008410012206290000210f2000200641086a2900003703002004200f3703482006102f4120102d2206450d0120062004290320370000200641186a200a290300370000200641106a200c290300370000200641086a200d2903003700002006ad42808080808004841003220b290000210f200b41086a2900002119200b41106a290000211a2012200b41186a2900003703002011201a370300201020193703002004200f370360200b102f2006102f41c000102d2206450d01200620042903103700002006200429034837001020062004290360370020200641086a2008290300370000200641186a2000290300370000200641286a2010290300370000200641306a2011290300370000200641386a2012290300370000200441206a200610a1052000200141086a290200370300200441c8006a41106a2209200141106a280200360200200420012902003703482004280240211b02402004280228220b450d002004290320210f20162004290348370200201641086a2000290300370200201641106a20092802003602002004200f370360201b211c0b2004200b360268200441003602282004290378211a20042004290338221d3703782004290370211e20042004290330221f370370200429036021202004200429032022193703602004290368210f2004200429032822213703682021a7210b02400240200fa722090d002021210f201f211e201d211a0c010b200420203703202004200f3703282004201e3703302004201a37033820042009201ea74105746a360254200420093602502004200f422088a736024c2004200936024820042004360258200441106a200441c8006a10f803201841086a2008280200360200201820042903103702002004201e422088a72209201a422088a74105746a360254200420093602502004201aa736024c2004200936024820042004360258200441106a200441c8006a10f803201741086a2008280200360200201720042903103702002004290328210f200429032021192004290338211a2004290330211e0240200b450d00201da7210802402021422088a7450d00200b102f0b2008450d00201f422088a7102f0b200420193703602004200f3703682004201e3703702004201a370378200fa7210b201b211c0b2004200f3703282004201e370330200a201a370300200420193703202004201c360240200fa7210802400240200b0d002006ad428080808080088410050c010b200441c00036024c20042006360248200441206a200441c8006a10b7050b02402008450d00201aa7210b0240200f422088a7450d002008102f0b200b450d00201e422088a7102f0b200741206a21072006102f201541606a22150d000c020b0b1036000b02402014a7450d002013102f0b200441e0006a41186a220a4200370300200441e0006a41106a22074200370300200441e0006a41086a220642003703002004420037036041f2cbc700ad4280808080b00284220f100122002900002119200441106a41086a220b200041086a290000370300200420193703102000102f2006200b2903003703002004200429031037036041ebdec700ad4280808080f00084100122082900002119200441c8006a41086a2200200841086a290000370300200420193703482008102f200720042903482219370300200441206a41086a22012006290300370300200441206a41106a22092019370300200441206a41186a221c200029030037030020042004290360370320200441203602642004200441206a36026020022003200441e0006a10ad01200a4200370300200742003703002006420037030020044200370360200f10012208290000210f200b200841086a2900003703002004200f3703102008102f2006200b2903003703002004200429031037036041fbd4c700ad4280808080d000841001220b290000210f2000200b41086a2900003703002004200f370348200b102f20072004290348220f370300200120062903003703002009200f370300201c200029030037030020042004290360370320200441206aad4280808080800484100502402004280204450d002004280200102f0b200524000bab0704067f017e087f037e230041a0016b220224002002412036021420022001360210200241186a2001ad42808080808004841002107302400240024002400240024020022802182203450d00200228021c21042002200241206a28020036022c20022003360228200241086a200241286a10e60120022802080d03200228020c2205200228022c220641286e2201200120054b1b2207ad42287e2208422088a70d012008a72201417f4c0d010240024020010d00410821090c010b2001102d2209450d03200141286e21070b02402005450d004100210a0340200241003a009801200a220b41016a210a410021010240024002400240034020062001460d01200241f8006a20016a2002280228220c2d00003a00002002200c41016a3602282002200141016a220d3a009801200d2101200d4120470d000b200241d8006a41086a220e200241f8006a41086a290300370300200241d8006a41106a220f200241f8006a41106a290300370300200241d8006a41186a2210200241f8006a41186a2903003703002002200229037837035820022006200d6b220136022c20014108490d01200241386a41086a220d200e290300370300200241386a41106a220e200f290300370300200241386a41186a220f2010290300370300200220022903583703382002200c41096a3602282002200141786a220636022c200c29000121082007200b470d030240200b4101742201200a2001200a4b1bad42287e2211422088a70d002011a7220141004e0d030b1038000b2002410036022c200141ff0171450d00200241003a0098010b2007450d072009102f0c070b02400240200b0d002001102d21090c010b2009200b41286c2001103121090b2009450d05200141286e21070b2009200b41286c6a22012002290338370300200d2903002111200e2903002112200f290300211320012008370320200141186a2013370300200141106a2012370300200141086a2011370300200a2005470d000b0b2009450d032000200736020420002009360200200041086a20053602000c040b200041003602000c040b103d000b1036000b20024100360260200242013703582002410b36023c2002200241106a3602382002200241d8006a3602342002418c016a41013602002002420137027c200241b885c7003602782002200241386a36028801200241346a41d8dbc100200241f8006a103c1a200235026042208620023502588410080240200228025c450d002002280258102f0b200041003602000b2004450d002003102f0b200241a0016a24000bd00a06067f017e097f017e037f037e230041b0016b22022400200241c00036020c20022001360208200241106a2001ad428080808080088410021073024002400240024002400240024020022802102203450d00200228021421042002200241186a280200360224200220033602202002200241206a10e60120022802000d04200228020422052002280224220641d8006e2201200120054b1b2207ad42d8007e2208422088a70d012008a72201417f4c0d010240024020010d00410821090c010b2001102d2209450d03200141d8006e21070b02402005450d004100210a4100210b0340200241003a00a801200b41016a210c4100210102400240024002400240034020062001460d0120024188016a20016a2002280220220d2d00003a00002002200d41016a3602202002200141016a220e3a00a801200e2101200e4120470d000b200241e8006a41086a220f20024188016a41086a290300370300200241e8006a41106a221020024188016a41106a290300370300200241e8006a41186a221120024188016a41186a290300370300200220022903880137036820022006200e6b220136022420014110490d032002200d41116a3602202002200141706a360224200d41096a2900002108200d290001211220024188016a200241206a10f703200228028801220e450d032002280290012113200228028c01210d20024188016a200241206a10980320022802880122060d01200d0d020c030b20024100360224200141ff0171450d02200241003a00a8010c020b200228028c01211420022802242201410f4b0d0202402014450d002006102f0b200d450d010b200e102f0b0240200b450d00200941306a210103400240200141746a280200450d00200141706a280200102f0b02402001280200450d002001417c6a280200102f0b200141d8006a2101200a41a87f6a220a0d000b0b2007450d072009102f0c070b2002280290012115200241c8006a41086a200f2903002216370300200241c8006a41106a20102903002217370300200241c8006a41186a20112903002218370300200241286a41086a220f2016370300200241286a41106a22102017370300200241286a41186a221120183703002002200229036822163703482002200141706a36022420022002280220220141106a36022020022016370328200141086a29000021162001290000211702402007200b470d00200b4101742201200c2001200c4b1bad42d8007e2218422088a70d062018a722014100480d0602400240200b0d002001102d21090c010b2009200b41d8006c2001103121090b2009450d05200141d8006e21070b2009200b41d8006c6a2201201737031020012008370308200120123703002001200636022c2001200e360220200141186a2016370300200141346a2015360200200141306a2014360200200141286a2013360200200141246a200d36020020012002290328370338200141c0006a200f290300370300200141c8006a2010290300370300200141d0006a2011290300370300200c2005460d01200a41d8006a210a20022802242106200c210b0c000b0b2009450d042000200736020420002009360200200041086a20053602000c050b200041003602000c050b103d000b1036000b1038000b20024100360270200242013703682002410b36024c2002200241086a3602482002200241e8006a3602282002419c016a41013602002002420137028c01200241b885c700360288012002200241c8006a36029801200241286a41d8dbc10020024188016a103c1a200235027042208620023502688410080240200228026c450d002002280268102f0b200041003602000b2004450d002003102f0b200241b0016a24000bae0403047f027e057f230041e0006b22022400200241c00036020c20022001360208200241106a2001ad428080808080088410021073024002400240024020022802102201450d00200228021421032002200241186a280200220436022420022001360220024020044104490d002002200141046a36022020022004417c6a220536022420054110490d002001280000210520022004416c6a3602242002200141146a3602202001410c6a290000210620012900042107200241c8006a200241206a10980320022802482204450d00200228024c21082002280224220941024f0d022008450d002004102f0b20024100360230200242013703282002410b36023c2002200241086a3602382002200241286a360244200241dc006a41013602002002420137024c200241b885c7003602482002200241386a360258200241c4006a41d8dbc100200241c8006a103c1a200235023042208620023502288410080240200228022c450d002002280228102f0b200041003602140c020b200041003602140c020b200241d0006a280200210a200241386a41046a200241286a41046a2f0100220b3b010020022002280128220c36023820022009417e6a36022420022002280220220941026a36022020092f000021092000200637030820002007370300200041206a20093b01002000411c6a200a3602002000200836021820002004360214200020053602102000200c360122200041266a200b3b01000b2003450d002001102f0b200241e0006a24000bda04010a7f230041e0006b22022400200241c00036020c20022001360208200241106a2001ad428080808080088410021073024002400240024020022802102201450d00200228021421032002200241186a2802002204360224200220013602200240024020044104490d002002200141046a36022020022004417c6a220536022420054104490d00200128000021062002200141086a3602202002200441786a220536022420054104490d00200128000421052002200441746a36022420022001410c6a360220200128000821072002200241206a10e60120022802000d0020022802242208200228020422094102742204490d002004417f4c0d040240024020040d004101210a0c010b20041033220a450d06200a2002280220220b200410e8061a2002200820046b3602242002200b20046a3602200b200a450d000240024002402004450d00200a4103710d02200941ffffffff037122040d01200a102f0b4104210a410021040b41000d01200a450d01200020043602102000200a36020c200020073602082000200536020420002006360200200041146a20043602000c020b200a102f0b20024100360230200242013703282002410b36023c2002200241086a3602382002200241286a360244200241dc006a41013602002002420137024c200241b885c7003602482002200241386a360258200241c4006a41d8dbc100200241c8006a103c1a200235023042208620023502288410080240200228022c450d002002280228102f0b2000410036020c0b2003450d012001102f0c010b2000410036020c0b200241e0006a24000f0b103d000b1036000b9205010c7f230041e0006b220224002002412036020c20022001360208200241106a2001ad4280808080800484100210730240024002400240024020022802102203450d00200228021421042002200241186a280200360224200220033602202002200241206a10e6010240024020022802000d0020022802042205200228022422064103762201200120054b1b22074103742201417f4c0d040240024020070d00410421080c010b2001102d2208450d060b024002402005450d00410021094100210a4100210b03402002410036024820064104490d0220022006417c6a220636022420022002280220220141046a3602202001280000210c2002410036024820064104490d02200b41016a210d20022006417c6a22063602242002200141086a360220200128000421010240200b2007470d002009200d2009200d4b1b220741ffffffff01712007470d0a200741037422074100480d0a02400240200b0d002007102d21080c010b2008200a2007103121080b2008450d09200741037621070b2008200a6a220b200c360200200b41046a2001360200200941026a2109200a41086a210a200d210b2005200d470d000b0b2008450d012000200736020420002008360200200041086a20053602000c020b2007450d002008102f0b20024100360230200242013703282002410b36023c2002200241086a3602382002200241286a360244200241dc006a41013602002002420137024c200241b885c7003602482002200241386a360258200241c4006a41d8dbc100200241c8006a103c1a200235023042208620023502288410080240200228022c450d002002280228102f0b200041003602000b2004450d012003102f0c010b200041003602000b200241e0006a24000f0b103d000b1036000b1038000b9e0302037f037e230041e0006b220324002003200236020c20032001360208200341106a2002ad4220862001ad84100210730240024020032802102201450d00200328021421042003200341186a2802002202360224200320013602200240024020024104490d002003200141046a36022020032002417c6a220536022420054110490d002001280000210520032002416c6a3602242003200141146a3602202001410c6a290000210620012900042107200341c8006a200341206a10980320032802482202450d00200329024c210820002006370308200020073703002000200837031820002002360214200020053602100c010b20034100360230200342013703282003410b36023c2003200341086a3602382003200341286a360244200341dc006a41013602002003420137024c200341b885c7003602482003200341386a360258200341c4006a41d8dbc100200341c8006a103c1a200335023042208620033502288410080240200328022c450d002003280228102f0b200041003602140b2004450d012001102f0c010b200041003602140b200341e0006a24000baa06020f7f047e230041a0016b22022400200241c00036020c20022001360208200241106a2001ad428080808080088410021073024002400240024020022802102203450d00200228021421042002200241186a28020022013602242002200336022020014104490d0120022001417c6a3602242002200341046a360220200328000021052002200241206a10e60120022802000d01200228020421062002420037022c20024190bdc60036022802402006450d0020022802242107410021080340200241003a009801200841016a210841002101024002400240034020072001460d01200241f8006a20016a200228022022092d00003a00002002200941016a3602202002200141016a220a3a009801200a2101200a4120470d000b200241d8006a41186a220b200241f8006a41186a220c290300370300200241d8006a41106a220d200241f8006a41106a220e290300370300200241d8006a41086a220f200241f8006a41086a2210290300370300200220022903783703582007200a6b220141034b0d02200220013602240c010b20024100360224200141ff0171450d00200241003a0098010b2002280228200229022c2211a72011422088a710a3020c040b200241386a41086a200f2903002211370300200241386a41106a200d2903002212370300200241386a41186a200b29030022133703002002200229035822143703382002200941056a3602202009280001210a200c2013370300200e20123703002010201137030020022014370378200241286a200241f8006a200a10ed012001417c6a210720082006470d000b20022001417c6a3602240b20022802282201450d012000200229022c37020820002001360204200020053602000c020b200041003602040c020b20024100360260200242013703582002410b36023c2002200241086a3602382002200241d8006a3602282002418c016a41013602002002420137027c200241b885c7003602782002200241386a36028801200241286a41d8dbc100200241f8006a103c1a200235026042208620023502588410080240200228025c450d002002280258102f0b200041003602040b2004450d002003102f0b200241a0016a24000bd90704057f047e067f037e230041c0016b22022400200241c00036023420022001360230200241386a2001ad4280808080800884100210730240024020022802382203450d00200228023c21042002200241c0006a280200220536026c2002200336026841002101200241003a00b801024002400240024002400240034020052001460d0120024198016a20016a200320016a22062d00003a00002002200641016a3602682002200141016a22063a00b8012006210120064120470d000b200241f8006a41086a20024198016a41086a290300370300200241f8006a41106a20024198016a41106a290300370300200241f8006a41186a20024198016a41186a29030037030020022002290398013703782002200520066b36026c200241186a200241e8006a109c032002290318a70d04200241186a41106a2903002107200229032021082002200241e8006a109c032002290300a70d04200241106a29030021092002290308210a20024198016a200241e8006a10c3032002280298012206450d04200228029c012105200228026c220b450d03200241a0016a280200210c2002200b417f6a220d36026c20022002280268220e41016a360268200e2d0000220f41014b0d0341002101200f0e020201020b2002410036026c200141ff0171450d03200241003a00b8010c030b200d4104490d012002200b417b6a36026c2002200e41056a360268200e2800012110410121010b200241c8006a41186a200241f8006a41186a2903002211370300200241c8006a41106a200241f8006a41106a2903002212370300200241c8006a41086a200241f8006a41086a290300221337030020024198016a41086a220b201337030020024198016a41106a220e201237030020024198016a41186a220f2011370300200220022903782211370348200041186a20093703002000200a37031020002007370308200020083703002000200c3602282000200536022420002006360220200220113703980120002010360230200041346a2002290398013702002000413c6a200b290300370200200041c4006a200e290300370200200041cc006a200f2903003702000c020b2005450d002006102f0b2002410036028001200242013703782002410b36024c2002200241306a3602482002200241f8006a360274200241ac016a41013602002002420137029c01200241b885c700360298012002200241c8006a3602a801200241f4006a41d8dbc10020024198016a103c1a20023502800142208620023502788410080240200228027c450d002002280278102f0b410221010b2000200136022c2004450d012003102f0c010b2000410236022c0b200241c0016a24000bb704010b7f230041e0006b22022400200241c00036020c20022001360208200241106a2001ad428080808080088410021073024002400240024020022802102201450d00200228021421032002200241186a280200220436022420022001360220024020044104490d002002200141046a36022020022004417c6a220536022420054104490d00200128000021062002200441786a3602242002200141086a36022020012800042107200241c8006a200241206a10980320022802482204450d00200241c8006a41086a2802002108200228024c2105200241c8006a200241206a109803024020022802482209450d00200228024c210a2002280224220b41044f0d03200a450d002009102f0b2005450d002004102f0b20024100360230200242013703282002410b36023c2002200241086a3602382002200241286a360244200241dc006a41013602002002420137024c200241b885c7003602482002200241386a360258200241c4006a41d8dbc100200241c8006a103c1a200235023042208620023502288410080240200228022c450d002002280228102f0b200041003602080c020b200041003602080c020b200241d0006a280200210c2000200536020c200020043602082000200736020420002006360200200041206a200228022022042800003602002000411c6a200c360200200041186a200a360200200041146a2009360200200041106a20083602002002200b417c6a3602242002200441046a3602200b2003450d002001102f0b200241e0006a24000be80203017f017e027f23004190056b22022400200241c0003602b402200220013602b002200241b8026a2001ad42808080808008842203100210730240024020022802b80222010d00411b21010c010b20022802bc0221042002200241c0026a2802003602fc04200220013602f804200241c8026a200241f8046a10b3020240024020022802c8022205411b460d002002200241c8026a41047241ac0210e8061a0c010b20024100360208200242013703002002410b360284052002200241b0026a360280052002200236028c05200241dc026a4101360200200242013702cc02200241b885c7003602c802200220024180056a3602d8022002418c056a41d8dbc100200241c8026a103c1a200235020842208620023502008410082002280204450d002002280200102f0b02402004450d002001102f0b411b21012005411b460d0020031005200521010b20002001360200200041046a200241ac0210e8061a20024190056a24000bf11a04027f027e087f067e230041800c6b22082400200728024021090240024020020d00200941d8006a290300210a0c010b02402001290310220b200141186a290300220a8450450d004200210a0c010b200841206a200941a0016a290300200941a8016a290300200b200a10ee062008290320427f200841286a290300501b210a0b200142002001290308220b200a7d220a200a200b561b37030802400240200a200b580d00200041003a0000200041086a4122360200200041046a41ea93c7003602000c010b0240024002400240024002400240200728021841016a220c41004c0d002007200c360218200741206a280200210d2007411c6a220e21010240024002400340024002402001280200220f2f010622100d00410021020c010b20104105742101200f41c5036a2111200f41086a2109417f21020340024020010d00201021020c020b20032009412010ea062212450d03200141606a2101201141e0006a2111200241016a2102200941206a21092012417f4a0d000b0b200d450d02200d417f6a210d200f20024102746a41880b6a21010c000b0b2011310000201141a37f6a290300220b200b5022011ba7450d004200201141ab7f6a220941086a29030020011b210b4200200929030020011b210a0c010b200841106a200741286a28020020032007412c6a28020028021c110300200841186a290300210b2007280218210c2008290310210a0b2007200c417f6a22133602180240200a20057d2214200a56200b20067d200a200554ad7d220a200b56200a200b511b4101470d00200041003a0000200041086a411d360200200041046a418c94c7003602000c080b200c41004c0d012007200c3602182007280220210d200e21010240024002400340024002402001280200220f2f010622100d00410021020c010b20104105742101200f41c5036a2111200f41086a2109417f21020340024020010d00201021020c020b20042009412010ea062212450d03200141606a2101201141e0006a2111200241016a2102200941206a21092012417f4a0d000b0b200d450d02200d417f6a210d200f20024102746a41880b6a21010c000b0b2011310000201141a37f6a290300220b200b5022011ba7450d004200201141ab7f6a220941086a29030020011b210b4200200929030020011b21150c010b2008200741286a28020020042007412c6a28020028021c1103002007280218417f6a2113200841086a290300210b200829030021150b2007201336021802402015200b844200520d00200728024022012903800120055820014188016a290300221620065820162006511b0d00200041003a0000200041086a411f360200200041046a41a994c7003602000c080b02402005200684500d0020084180016a2003108d0220082903a001201456200841a8016a2903002216200a562016200a511b0d030b0240201520057c22162015542201200b20067c2001ad7c2215200b542015200b511b450d00200041003a0000200041086a412d360200200041046a41c894c7003602000c080b024020032004460d0020032004412010ea06450d0020072802180d042007417f360218200841e0006a41186a200341186a290000370300200841e0006a41106a200341106a290000370300200841e0006a41086a200341086a2900003703002008200329000037036002400240200728021c220f4190bdc600460d002007280220210d0c010b4100210d200841a0096a410041e00210e7061a20084180016a410041a00810e7061a41880b102d220f450d06200f41003b0106200f4100360200200f41086a200841a0096a41e00210e8061a200f41e8026a20084180016a41a00810e8061a200741003602202007200f36021c0b02400240034002400240200f2f010622100d00410021020c010b20104105742101200f41e8026a2111200f41086a2109417f21020340024020010d00201021020c020b200841e0006a2009412010ea062212450d03200141606a2101201141e0006a2111200241016a2102200941206a21092012417f4a0d000b0b0240200d450d00200d417f6a210d200f20024102746a41880b6a280200210f0c010b0b200841c0006a41186a200841e0006a41186a290300220b370300200841c0006a41106a200841e0006a41106a2903002217370300200841c0006a41086a200841e0006a41086a2903002218370300200820082903602219370340200841bc096a2018370200200841a0096a41246a2017370200200841cc096a200b3702002008200741246a3602b009200820023602ac092008200e3602a8092008200f3602a409200841003602a009200820193702b409200841b4016a4200370200200841bc016a41003a000020084190bdc6003602b00120084200370398012008420037038001200841003a00dd01200841a0096a20084180016a10970221110c010b20084198016a420037030020084194016a4190bdc600360200200841003602a0012008410036029001200842003703880120084190bdc60036028401200841003602800120084180016a1090020b201141106a200a370300201120143703082011420137030020072007280218220141016a2209360218200920014f0d062007417f360218200841e0006a41186a200441186a290000370300200841e0006a41106a200441106a290000370300200841e0006a41086a200441086a2900003703002008200429000037036002400240200728021c220f4190bdc600460d002007280220210d0c010b4100210d200841a0096a410041e00210e7061a20084180016a410041a00810e7061a41880b102d220f450d06200f41003b0106200f4100360200200f41086a200841a0096a41e00210e8061a200f41e8026a20084180016a41a00810e8061a200741003602202007200f36021c0b02400240034002400240200f2f010622100d00410021020c010b20104105742101200f41e8026a2111200f41086a2109417f21020340024020010d00201021020c020b200841e0006a2009412010ea062212450d03200141606a2101201141e0006a2111200241016a2102200941206a21092012417f4a0d000b0b0240200d450d00200d417f6a210d200f20024102746a41880b6a280200210f0c010b0b200841c0006a41186a200841e0006a41186a290300220b370300200841c0006a41106a200841e0006a41106a290300220a370300200841c0006a41086a200841e0006a41086a2903002214370300200820082903602217370340200841bc096a2014370200200841a0096a41246a200a370200200841cc096a200b3702002008200741246a3602b009200820023602ac092008200e3602a8092008200f3602a409200841003602a009200820173702b409200841b4016a4200370200200841bc016a41003a000020084190bdc6003602b00120084200370398012008420037038001200841003a00dd01200841a0096a20084180016a10970221110c010b20084198016a420037030020084194016a4190bdc600360200200841003602a0012008410036029001200842003703880120084190bdc60036028401200841003602800120084180016a1090020b201141106a201537030020112016370308201142013703002007200728021841016a360218200841a0096a41086a2209200341086a290000370300200841a0096a41106a2202200341106a290000370300200841a0096a41186a2211200341186a290000370300200841e0006a41086a2212200441086a290000370300200841e0006a41106a220f200441106a290000370300200841e0006a41186a220d200441186a290000370300200820032900003703a0092008200429000037036002402007413c6a2802002201200741386a280200470d00200141016a22032001490d08200141017422042003200420034b1bad42d8027e220b422088a70d08200ba722034100480d080240024020010d002003102d21010c010b2007280234200141d8026c2003103121010b2001450d0620072001360234200741386a200341d8026e360200200728023c21010b2007280234200141d8026c6a220141003a0000200120082f003d3b00012001420037000820014101360004200120082903a00937001120012008290360370031200141036a2008413f6a2d00003a0000200141106a41003a0000200141196a2009290300370000200141216a2002290300370000200141296a2011290300370000200141396a2012290300370000200141c1006a200f290300370000200141c9006a200d29030037000020012005370358200141e0006a2006370300200141d4006a200841366a41036a2800003600002001200828003636005120012008290340370368200141f0006a200841c0006a41086a290300370300200141f8006a200841c0006a41106a29030037030020014180016a200841c0006a41186a29030037030020014188016a20084180016a41d00110e8061a2007200728023c41016a36023c0b200041043a00000c070b41c6c4ca00411820084180016a41cc90c70041f0c4ca00103e000b41c6c4ca00411820084180016a41cc90c70041f0c4ca00103e000b200041830c3b0100200041086a4115360200200041046a41abb5c600360200200041026a41013a00000c040b41c3c5ca00411020084180016a41dc90c70041e4c5ca00103e000b1036000b41c3c5ca00411020084180016a41dc90c70041e4c5ca00103e000b1038000b200841800c6a24000b9f2107087f017e057f057e147f047e017f230041f00c6b220224000240024020002802000d002000417f360200200128020821032001280200210402400240200128020422050d00200421010c010b2005210620042101034020012802880b21012006417f6a22060d000b0340200420042f01064102746a41880b6a28020021042005417f6a22050d000b0b2002411c6a20042f010636020041002105200241186a4100360200200241146a2004360200200220033602202002410036021020024200370308200220013602042002410036020002402003450d0020022003417f6a22073602200240024020012f0106450d004100210420012108410021090c010b4100210441002109034002400240024020014190bdc600460d00200128020022080d012009ad210a410021080c020b41edb3ca00412841f8b4ca001039000b200441016a210420013301044220862009ad84210a0b2001102f200aa7210920082101200a422088a7220520082f01064f0d000b0b200241d00c6a41186a2206200820054105746a220141206a290000370300200241d00c6a41106a2203200141186a290000370300200241d00c6a41086a220b200141106a2900003703002002200141086a2900003703d00c2008200541e0006c6a220141a4036a2d0000210c200141a0036a280200210d2001419c036a280200210e20014198036a280200210f20014190036a290300211020014188036a290300211120014180036a2903002112200141f8026a2903002113200141f0026a2903002114200141e8026a290300210a200241d0016a41186a2215200141bd036a290000370300200241d0016a41106a2216200141b5036a290000370300200241d0016a41086a2217200141ad036a2900003703002002200141a5036a2900003703d001200541016a2118200141c6036a2f01002119200141c5036a2d0000211a02402004450d00200820184102746a41880b6a2802002108410021182004417f6a2201450d00034020082802880b21082001417f6a22010d000b0b200241f0096a41186a2006290300370300200241f0096a41106a2003290300370300200241f0096a41086a200b29030037030020024188016a41086a201729030037030020024188016a41106a201629030037030020024188016a41186a2015290300370300200220022903d00c3703f009200220022903d001370388012002201836020c200220093602082002200836020420024100360200200a4202510d002000410c6a211b200041046a211c200241d0016a41206a210b200241840a6a211d2002418d026a211e200241d0016a41286a211f0340200241c8006a41186a2201200241f0096a41186a2216290300370300200241c8006a41106a2204200241f0096a41106a2217290300370300200241c8006a41086a2205200241f0096a41086a2220290300370300200241286a41086a220620024188016a41086a2221290300370300200241286a41106a220320024188016a41106a2222290300370300200241286a41186a221520024188016a41186a2223290300370300200220022903f0093703482002200229038801370328200241e8006a41186a22242015290300370300200241e8006a41106a22252003290300370300200241e8006a41086a2226200629030037030020022002290328370368202320012903003703002022200429030037030020212005290300370300200220022903483703880102400240201c28020022034190bdc600460d00200028020821270c010b200241f0096a410041e00210e7061a200241d0016a410041a00810e7061a41880b102d2203450d0441002127200341003b010620034100360200200341086a200241f0096a41e00210e8061a200341e8026a200241d0016a41a00810e8061a20004100360208200020033602040b0240024003400240024020032f010622280d00410021040c010b20284105742115417f210441002101410021050340024020152001470d00202821040c020b20024188016a200320016a41086a412010ea062206450d03200141206a2101200541e0006a2105200441016a21042006417f4a0d000b0b02402027450d002027417f6a2127200320044102746a41880b6a28020021030c010b0b200241d00c6a41186a20232903002229370300200241d00c6a41106a2022290300222a370300200241d00c6a41086a2021290300222b3703002002200229038801222c3703d00c201d202c370200201d41086a202b370200201d41106a202a370200201d41186a20293702002002201b3602800a200220043602fc092002201c3602f809200220033602f409200241003602f009201f2010370300200241d0016a41106a2013370300200220113703f001200220143703d8012002200c3a008c022002200d360288022002200e360284022002200f36028002200220123703e8012002200a3703d001201e2002290368370000201e41086a2026290300370000201e41106a2025290300370000201e41186a2024290300370000200220193b01ae022002201a3a00ad02200241f0096a200241d0016a1097021a0c010b200320056a21030240201a4101710d00200341e8026a22012001290300200a200a5022011b370300200341f0026a22042004290300201420011b370300200341f8026a22042004290300201320011b370300201620242903003703002017202529030037030020202026290300370300200220022903683703f009200341a4036a22042d00002105200241d0016a41186a2228200341bd036a2206290000370300200241d0016a41106a221a200341b5036a2215290000370300200241d0016a41086a2224200341ad036a22272900003703002002200341a5036a22252900003703d0012021200241f0096a200241d0016a200c41ff0171410146220c1b220141086a2900003703002022200141106a2900003703002023200141186a2900003703002002200129000037038801200441012005200c1b3a0000202520022903880137000020272021290300370000201520222903003700002006202329030037000020034188036a2201201120012903002012a722011b37030020034190036a22042010200429030020011b37030020034180036a22042012200429030020011b37030002400240200e0d00200f21010c010b200e2104200f2101034020012802ec0321012004417f6a22040d000b0340200f200f2f01064102746a41ec036a280200210f200e417f6a220e0d000b0b200f2f010621042002200d3602a801200220043602a401200241003602a0012002200f36029c01200241003602980120024200370390012002200136028c0120024100360288010240200d450d0020034198036a210c410021064100210503402002200d417f6a220d3602a80102400240200620012f01064f0d0041002103200121040c010b41002103034002400240024020014190bdc600460d00200128020022040d012005ad210a410021040c020b41edb3ca00412841f8b4ca001039000b200341016a210320013301044220862005ad84210a0b2001102f200aa7210520042101200a422088a7220620042f01064f0d000b0b200241d00c6a41186a2215200420064105746a220141206a290000370300200241d00c6a41106a220f200141186a290000370300200241d00c6a41086a220e200141106a2900003703002002200141086a2900003703d00c200241b0016a41086a222720042006410c6c6a220141f0026a2802003602002002200141e8026a2902003703b001200641016a21060240024020030d00200421010c010b200420064102746a41ec036a2802002101410021062003417f6a2204450d00034020012802ec0321012004417f6a22040d000b0b200b20022903b001370200200b41086a220420272802003602002020200e2903003703002017200f29030037030020162015290300370300200241f0096a41206a2203200b290300370300200241f0096a41286a2227201f280200360200200220022903d00c3703f009200220063602940120022005360290012002200136028c012002410036028801201f2027280200360200200b200329030037030020282016290300370300201a201729030037030020242020290300370300200220022903f0093703d00120152016290300370300200f2017290300370300200e2020290300370300200220022903f0093703d00c200241c0016a41086a20042802003602002002200b2902003703c001200241b0016a200c200241d00c6a200241c0016a109802024020022802b001450d0020022802b4012204450d0020022802b801450d002004102f0b200d0d000b0b20024188016a1090020c010b200341a0036a2215280200212720034198036a22282802002101024002402003419c036a222d28020022050d00200121040c010b2005210620012104034020042802ec0321042006417f6a22060d000b0340200120012f01064102746a41ec036a28020021012005417f6a22050d000b0b200220273602f001200241003602e801200241003602e001200242003703d801200220043602d401200241003602d001200220013602e401200220012f01063602ec01200241d0016a109002200341e8026a200a37030020034190036a201037030020034188036a2011370300200341f8026a2013370300200341f0026a201437030020034180036a2012370300200341a4036a200c3a00002015200d3602002028200f360200202d200e360200200341a5036a2002290368370000200341ad036a2026290300370000200341b5036a2025290300370000200341bd036a2024290300370000200341c6036a20193b0100200341c5036a201a3a00000b2007450d0120022007417f6a22073602204100210402400240201820082f01064f0d00200821010c010b41002104034002400240024020084190bdc600460d00200828020022010d012009ad210a410021010c020b41edb3ca00412841f8b4ca001039000b200441016a210420083301044220862009ad84210a0b2008102f200aa7210920012108200a422088a7221820012f01064f0d000b0b200241d00c6a41186a2206200120184105746a220541206a290000370300200241d00c6a41106a2203200541186a290000370300200241d00c6a41086a2215200541106a2900003703002002200541086a2900003703d00c2001201841e0006c6a220541a4036a2d0000210c200541a0036a280200210d2005419c036a280200210e20054198036a280200210f20054190036a290300211020054188036a290300211120054180036a2903002112200541f8026a2903002113200541f0026a2903002114200541e8026a290300210a200241d0016a41186a2227200541bd036a290000370300200241d0016a41106a2228200541b5036a290000370300200241d0016a41086a2224200541ad036a2900003703002002200541a5036a2900003703d001201841016a2118200541c6036a2f01002119200541c5036a2d0000211a0240024020040d00200121080c010b200120184102746a41880b6a2802002108410021182004417f6a2201450d00034020082802880b21082001417f6a22010d000b0b201620062903003703002017200329030037030020202015290300370300202120242903003703002022202829030037030020232027290300370300200220022903d00c3703f009200220022903d001370388012002201836020c200220093602082002200836020420024100360200200a4202520d000b0b2002108a022000200028020041016a360200200241f00c6a24000f0b41c3c5ca004110200241d0016a41dc90c70041e4c5ca00103e000b1036000bc50101057f230041306b220124002000410c6a28020021022000280204210302400240200041086a28020022040d00200321000c010b2004210520032100034020002802880b21002005417f6a22050d000b0340200320032f01064102746a41880b6a28020021032004417f6a22040d000b0b200141246a20032f0106360200200141206a41003602002001411c6a20033602002001200236022820014100360218200142003703102001200036020c20014100360208200141086a108a02200141306a24000be104010a7f230041c0006b220324000240200128020041016a220441004c0d0020012004360200200141046a2105200141086a28020021060240024002400240034002400240200528020022072f010622080d00410021090c010b20084105742105200741c5036a210a200741086a210b417f21090340024020050d00200821090c020b2002200b412010ea06220c450d03200541606a2105200a41e0006a210a200941016a2109200b41206a210b200c417f4a0d000b0b2006450d022006417f6a2106200720094102746a41880b6a21050c000b0b02400240200a2d00000d00200a415f6a2d0000210b200341206a41186a2209200a41606a220541186a290000370300200341206a41106a220a200541106a290000370300200341206a41086a220c200541086a2900003703002003200529000037032041022105200b4101470d01200341186a2009290300370300200341106a200a290300370300200341086a200c29030037030020032003290320370300410121050c010b200a415f6a2d00002105200341186a200a41606a220b41186a290000370300200341106a200b41106a290000370300200341086a200b41086a2900003703002003200b2900003703000b200541ff01714102470d010b200020012802102002200141146a280200280210110300200128020021040c010b200020053a000020002003290300370001200041096a200341086a290300370000200041116a200341106a290300370000200041196a200341186a2903003700000b20012004417f6a360200200341c0006a24000f0b41c6c4ca004118200341206a41cc90c70041f0c4ca00103e000bcd02010a7f230041106b220224000240200028020041016a220341004c0d0020002003360200200041046a2104200041086a28020021050240024002400240034002400240200428020022062f010622070d00410021080c010b20074105742104200641a4036a2109200641086a210a417f21080340024020040d00200721080c020b2001200a412010ea06220b450d03200441606a2104200941e0006a2109200841016a2108200a41206a210a200b417f4a0d000b0b2005450d022005417f6a2105200620084102746a41880b6a21040c000b0b20092d000022044101410220044101461b200941216a2d00001b22044102470d010b20002802102001200041146a2802002802181101002104200028020021030c010b200441004721040b20002003417f6a360200200241106a240020040f0b41c6c4ca004118200241086a41cc90c70041f0c4ca00103e000bff02020a7f027e230041206b220324000240200128020041016a220441004c0d0020012004360200200141046a2105200141086a2802002106024002400240034002400240200528020022072f010622080d00410021090c010b20084105742105200741c5036a210a200741086a210b417f21090340024020050d00200821090c020b2002200b412010ea06220c450d03200541606a2105200a41e0006a210a200941016a2109200b41206a210b200c417f4a0d000b0b2006450d022006417f6a2106200720094102746a41880b6a21050c000b0b200a310000200a41a37f6a290300220d200d5022051ba7450d004200200a41ab7f6a220b41086a29030020051b210d4200200b29030020051b210e0c010b200341086a20012802102002200141146a28020028021c110300200341106a290300210d200128020021042003290308210e0b20012004417f6a3602002000200d3703082000200e370300200341206a24000f0b41c6c4ca004118200341186a41cc90c70041f0c4ca00103e000b1300200041013602042000419096c7003602000b34002000419487ca0036020420004100360200200041146a4103360200200041106a419097c700360200200041086a420a3702000b130020004106360204200041ec9ac7003602000b3400200041bd98ca0036020420004100360200200041146a4106360200200041106a41f8b3c700360200200041086a42103702000b13002000410536020420004180bdc7003602000b2e01017f02404104102d22020d001036000b20004284808080c0003702042000200236020020024180a70c3600000b2c01017f02404104102d22020d001036000b20004284808080c00037020420002002360200200241073600000b2c01017f02404104102d22020d001036000b20004284808080c000370204200020023602002002410d3600000b3a01017f02404110102d22020d001036000b2002420037000820024280809aa6eaafe301370000200042908080808002370204200020023602000b130020004107360204200041b0c0c7003602000bd70303027f037e027f230041d0006b2201240041bd98ca00ad4280808080800284100122022900002103200141106a41086a200241086a290000370300200120033703102002102f41ce89c700ad4280808080f00084100122022900002103200141206a41086a200241086a290000370300200120033703202002102f02404120102d2202450d0020022000290000370000200241186a200041186a290000370000200241106a200041106a290000370000200241086a200041086a2900003700002002ad4280808080800484100322002900002103200041086a2900002104200041106a2900002105200141306a41186a2206200041186a290000370300200141306a41106a22072005370300200141306a41086a2004370300200120033703302000102f2002102f41c000102d2202450d00200220012903103700002002200129032037001020022001290330370020200241086a200141106a41086a290300370000200241186a200141206a41086a290300370000200241286a200141306a41086a290300370000200241306a2007290300370000200241386a2006290300370000200141086a200241c00041c8e1ca004100410010b501200128020821002002102f200141d0006a240020004101460f0b1036000b9f1705027f017e017f027e047f230041a0046b2202240041bd98ca00ad4280808080800284100122032900002104200241d0006a41086a200341086a290000370300200220043703502003102f41ae85c700ad4280808080f0008410012203290000210420024190036a41086a200341086a29000037030020022004370390032003102f02404120102d2203450d0020032000290000370000200341186a200041186a290000370000200341106a200041106a290000370000200341086a200041086a2900003700002003ad4280808080800484100322052900002104200541086a2900002106200541106a2900002107200241e0016a41186a2208200541186a290000370300200241e0016a41106a22092007370300200241e0016a41086a2006370300200220043703e0012005102f2003102f41c000102d2203450d00200320022903503700002003200229039003370010200320022903e001370020200341086a200241d0006a41086a290300370000200341186a20024190036a41086a290300370000200341286a200241e0016a41086a290300370000200341306a2009290300370000200341386a2008290300370000200241e0016a200341c000109504024020022d00ec0122054102460d002003ad428080808080088410050b20022902e401210420022802e00121082002410c6a200241ed016a41c30010e8061a200241d0006a2002410c6a41c30010e8061a0240024020054102470d002003102f0c010b200220053a00980120024198016a410172200241d0006a41c10010e806210a200241ba016a21090240024020022d00b901220b4101460d00200241003602e0020c010b200241e0026a20091094040b0240024002400240024020054101460d00200241003602f0020c010b200241f0026a200a10940420022802f0020d010b0240200b4101460d0041bd98ca00ad4280808080800284100122052900002106200241f0036a41086a2209200541086a290000370300200220063703f0032005102f41a185c700ad4280808080d0018410012205290000210620024190036a41086a220b200541086a29000037030020022006370390032005102f200241e0016a41086a2009290300370300200241f8016a200b290300370300200220022903f0033703e00120022002290390033703f00120024190036a200241e0016a1088012002350298034220862002280290032205ad841005200228029403450d022005102f0c020b41bd98ca00ad4280808080800284100122052900002106200241f0036a41086a220b200541086a290000370300200220063703f0032005102f41a185c700ad4280808080d0018410012205290000210620024190036a41086a220a200541086a29000037030020022006370390032005102f200241e0016a41086a200b290300370300200241e0016a41186a200a290300370300200220022903f0033703e00120022002290390033703f00120024190036a200241e0016a108801200228029003210b20023502980321064120102d2205450d0420052009290000370000200541186a200941186a290000370000200541106a200941106a290000370000200541086a200941086a2900003700002006422086200bad842005ad428080808080048410042005102f200228029403450d01200b102f0c010b20024180036a41086a200241f0026a41086a2802002205360200200220022903f00222063703800320024190036a2006a7220b20051095040240024020022d009c034102460d00200241e0016a20024190036a41d00010e8061a200241ad026a200241b9016a220941206a2d00003a0000200241a5026a200941186a2900003700002002419d026a200941106a29000037000020024195026a200941086a2900003700002002418d026a2009290000370000200220053602f4032002200b3602f003200241e0016a200241f0036a10ef0320022802e401450d0120022802e001102f0c010b200241003602e803200242013703e003200241f0036a41146a4129360200200241fc036a410b3602002002411036028c04200241bd98ca00360288042002410b3602f4032002410736029404200241ae85c70036029004200220024180036a36028004200220024190046a3602f803200220024188046a3602f0032002200241e0036a36029c04200241e0016a41146a4103360200200242033702e4012002419090c4003602e0012002200241f0036a3602f0012002419c046a41d8dbc100200241e0016a103c1a20023502e80342208620023502e00384100820022802e403450d0020022802e003102f0b0240200228028403450d00200228028003102f0b410121090c010b410021090b0240024020022802e00222050d004100210b0c010b20024180036a41086a200241e0026a41086a280200220b360200200220022903e00222063703800320024190036a2006a7220a200b1095040240024020022d009c034102460d00200241e0016a20024190036a41d00010e8061a2002418c026a200241b8016a2d00003a000020024184026a200241b0016a290300370200200241fc016a200241a8016a290300370200200241f4016a20024198016a41086a29030037020020022002290398013702ec012002200b3602f4032002200a3602f003200241e0016a200241f0036a10ef0320022802e401450d0120022802e001102f0c010b200241003602e803200242013703e003200241f0036a41146a4129360200200241fc036a410b3602002002411036028c04200241bd98ca00360288042002410b3602f4032002410736029404200241ae85c70036029004200220024180036a36028004200220024190046a3602f803200220024188046a3602f0032002200241e0036a36029c04200241e0016a41146a4103360200200242033702e401200241b48fc4003602e0012002200241f0036a3602f0012002419c046a41d8dbc100200241e0016a103c1a20023502e80342208620023502e00384100820022802e403450d0020022802e003102f0b0240200228028403450d00200228028003102f0b4101210b0b0240200920022802f002220a45720d0020022802f402450d00200a102f0b0240200b200545720d0020022802e402450d002005102f0b2003102f2008450d002004a7450d002008102f0b41bd98ca00ad4280808080800284100122032900002104200241d0006a41086a200341086a290000370300200220043703502003102f41ce89c700ad4280808080f0008410012203290000210420024190036a41086a200341086a29000037030020022004370390032003102f4120102d2203450d0020032000290000370000200341186a200041186a290000370000200341106a200041106a290000370000200341086a200041086a2900003700002003ad4280808080800484100322052900002104200541086a2900002106200541106a2900002107200241e0016a41186a2208200541186a290000370300200241e0016a41106a22092007370300200241e0016a41086a2006370300200220043703e0012005102f2003102f41c000102d2203450d00200320022903503700002003200229039003370010200320022903e001370020200341086a200241d0006a41086a290300370000200341186a20024190036a41086a290300370000200341286a200241e0016a41086a290300370000200341306a2009290300370000200341386a20082903003700002003ad428080808080088410052003102f200242f0d0c9abc6add9b1f4003703002002200010b10102402001450d00200242003703582002428080e983b1de163703502002200036020c20024190036a2000200241d0006a2002410c6a1096012002290390034201520d00200229039803210420024198026a20024190036a41106a29030037030020024190026a2004370300200241e0016a41086a41003a0000200241e9016a2000290000370000200241f1016a200041086a290000370000200241f9016a200041106a29000037000020024181026a200041186a290000370000200241033a00e00141c8e1ca004100200241e0016a108c010b200241a0046a24000f0b1036000b9d1606017f017e037f017e067f097e230041c0016b2202240042002103200241a0016a41186a4200370300200241a0016a41106a22044200370300200241a0016a41086a22054200370300200242003703a00141bd98ca00ad42808080808002841001220629000021072005200641086a290000370300200220073703a0012006102f41ebdec700ad4280808080f00084100122062900002107200241e0006a41086a2208200641086a290000370300200220073703602006102f20042002290360220737030020024180016a41086a200529030037030020024180016a41106a200737030020024180016a41186a2008290300370300200220022903a00137038001200241c0006a20024180016a10e404024002400240200228024022090d00410821090c010b4100210502400240200229024422034220882207a7220a41014b0d00200a0e020201020b200a210603402006410176220820056a220b20052009200b41306c6a2001412010ea064101481b2105200620086b220641014b0d000b0b2009200541306c6a2001412010ea060d000240024002400240024002402005200a4f0d002009200541306c6a2206200641306a200a2005417f736a41306c10e9061a200241a0016a41186a220c4200370300200241a0016a41106a220d4200370300200241a0016a41086a220a4200370300200242003703a00141bd98ca00ad4280808080800284220e10012205290000210f200a200541086a2900003703002002200f3703a0012005102f419691c700ad4280808080900184221010012206290000210f200241e0006a41086a2205200641086a2900003703002002200f3703602006102f20042002290360370000200441086a200529030037000020024180016a41086a2206200a29030037030020024180016a41106a200d29030037030020024180016a41186a200c290300370300200220022903a00137038001200742ffffffff0f7c210f200241a0016a20024180016a10e40420022802a0012208410820081b210b0240024020022902a401420020081b2207422088221150450d00420021120c010b200c200b201142ffffffff0f7c2211a741306c6a220841186a290300370300200d200841106a290300370300200a200841086a290300370300200220082903003703a0012011422086200742ffffffff0f83842107200841286a290300211320082903202114420121120b200342ffffffff0f832115200f4220862111200241e0006a41186a4200370300200241e0006a41106a220442003703002005420037030020024200370360200e10012208290000210e2006200841086a2900003703002002200e370380012008102f200520062903003703002002200229038001370360201010012208290000210e2006200841086a2900003703002002200e370380012008102f2004200229038001220e370300200241c0006a41086a2005290300370300200241c0006a41106a200e370300200241c0006a41186a20062903003703002002200229036037034002400240200b0d00200241c0006aad428080808080048410050c010b20024120360284012002200241c0006a36028001200b2007422088a720024180016a10ab012007a7450d00200b102f0b20152011842107200241186a200241a0016a41186a290300220e370300200241106a200241a0016a41106a2903002210370300200241086a200241a0016a41086a2903002215370300200220022903a0012216370300200241206a41186a2205200e370300200241206a41106a22062010370300200241206a41086a22082015370300200220163703204100210c0240201250450d004100210a0c040b20024180016a41186a200529030037030020024180016a41106a200629030037030020024180016a41086a2008290300370300200220022903203703800141002105024002400240200fa7220a41014b0d00200a0e020201020b200a210603402006410176220820056a220b20052009200b41306c6a20024180016a412010ea064101481b2105200620086b220641014b0d000b0b2009200541306c6a20024180016a412010ea062206450d022006411f7620056a21050b200241c0006a41186a20024180016a41186a290300220f370300200241c0006a41106a20024180016a41106a290300220e370300200241c0006a41086a20024180016a41086a290300221037030020022002290380012212370340200241e0006a41186a200f370300200241e0006a41106a200e370300200241e0006a41086a201037030020022012370360200241a0016a41186a200f370300200241a0016a41106a200e370300200241a0016a41086a2010370300200220123703a0012005200a4b0d020240200a2003a7470d00200a41016a2206200a490d06200a41017422082006200820064b1bad42307e2207422088a70d062007a722064100480d0602400240200a0d002006102d21090c010b2009200a41306c2006103121090b2009450d052011200641306ead8421070b2009200541306c6a220641306a2006200a20056b41306c10e9061a200641286a201337030020062014370320200641186a200241a0016a41186a290300370300200641106a200241a0016a41106a290300370300200641086a200241a0016a41086a290300370300200620022903a001370300200742ffffffff0f832003428080808070838421074101210a0c030b41b8e3c300411d41f8b4ca001039000b200241c0006a41186a20024180016a41186a290300370300200241c0006a41106a20024180016a41106a290300370300200241c0006a41086a20024180016a41086a29030037030020022002290380013703404100210a0c010b419ae3c300411e41f8b4ca001039000b200241e0006a41186a220b4200370300200241e0006a41106a220d4200370300200241e0006a41086a220642003703002002420037036041bd98ca00ad428080808080028410012208290000210320024180016a41086a2205200841086a29000037030020022003370380012008102f20062005290300370300200220022903800137036041ebdec700ad4280808080f000841001220829000021032005200841086a29000037030020022003370380012008102f2004200229038001370000200441086a2005290300370000200241c0006a41086a2006290300370300200241c0006a41106a200d290300370300200241c0006a41186a200b29030037030020022002290360370340200241203602a4012002200241c0006a3602a00120092007422088a72205200241a0016a10ab0102400240200541306c22060d00410121040c010b200641306d220641ffffff3f712006470d02200641057422064100480d022006102d2204450d012006410576210c0b2007a7210d0240024020050d00410021080c010b200541306c210b4100210820042105200921060340200641086a2900002103200641106a29000021072006290000210f200541186a200641186a290000370000200541106a2007370000200541086a20033700002005200f370000200841016a2108200541206a2105200641306a2106200b41506a220b0d000b0b0240200d450d002009102f0b200241a0016a41186a200141186a290000370300200241a0016a41106a200141106a290000370300200241a0016a41086a200141086a290000370300200220012900003703a001200241a0016a4101200420081098052000200a3a0001200041003a0000200041026a200229018001370100200041086a20024186016a290100370100200c450d032004102f0c030b1036000b1038000b200041013a00002000410c6a4109360200200041086a41d1d5c700360200200041066a410d3a0000200041046a41831a3b01002003a7450d002009102f0b200241c0016a24000b13002000410e36020420004184c4c7003602000bcf0601087f230041106b22022400200241003602082002420137030020002802002103024002404104102d2204450d0020024284808080c00037020420022004360200200420033600002000280204210320044104410810312204450d00200242888080808001370204200420033600042002200436020020002802082104200041106a28020022032002106902402003450d00200341057421052002280204210620022802082103034002400240200620036b4120490d00200341206a2107200228020021080c010b200341206a22072003490d04200641017422082007200820074b1b22094100480d040240024020060d002009102d21080c010b200228020020062009103121080b2008450d032002200936020420022008360200200921060b200820036a220341086a200441086a290000370000200341106a200441106a290000370000200341186a200441186a290000370000200220073602082003200429000037000020072103200441206a2104200541606a22050d000b0b200028021421042000411c6a2802002203200210690240024020030d0020022802042108200228020821030c010b200341057421054100200228020822036b210620022802042108034002400240200820066a4120490d00200228020021070c010b200341206a22072003490d04200841017422092007200920074b1b22094100480d040240024020080d002009102d21070c010b200228020020082009103121070b2007450d032002200936020420022007360200200921080b200720036a220741086a200441086a290000370000200741106a200441106a290000370000200741186a200441186a2900003700002002200341206a220336020820072004290000370000200641606a2106200441206a2104200541606a22050d000b0b2000280220210702400240200820036b4104490d00200228020021040c010b200341046a22042003490d02200841017422062004200620044b1b22064100480d020240024020080d002006102d21040c010b200228020020082006103121040b2004450d012002200636020420022004360200200621080b200420036a20073600002001290200200341046aad4220862004ad84100402402008450d002004102f0b200241106a24000f0b1036000b1038000b1300200041093602042000418cdfc7003602000b3400200041e796c80036020420004100360200200041146a4103360200200041106a41f096c800360200200041086a42083702000b130020004105360204200041a49dc8003602000b3400200041dfcbc70036020420004100360200200041146a4106360200200041106a41dcafc800360200200041086a42133702000b3400200041f2cbc70036020420004100360200200041146a4106360200200041106a41dcafc800360200200041086a42133702000bcf0601087f230041106b22022400200241003602082002420137030020002802002103024002404104102d2204450d0020024284808080c00037020420022004360200200420033600002000280204210320044104410810312204450d00200242888080808001370204200420033600042002200436020020002802082104200041106a28020022032002106902402003450d00200341057421052002280204210620022802082103034002400240200620036b4120490d00200341206a2107200228020021080c010b200341206a22072003490d04200641017422082007200820074b1b22094100480d040240024020060d002009102d21080c010b200228020020062009103121080b2008450d032002200936020420022008360200200921060b200820036a220341086a200441086a290000370000200341106a200441106a290000370000200341186a200441186a290000370000200220073602082003200429000037000020072103200441206a2104200541606a22050d000b0b200028021421042000411c6a2802002203200210690240024020030d0020022802042108200228020821030c010b200341057421054100200228020822036b210620022802042108034002400240200820066a4120490d00200228020021070c010b200341206a22072003490d04200841017422092007200920074b1b22094100480d040240024020080d002009102d21070c010b200228020020082009103121070b2007450d032002200936020420022007360200200921080b200720036a220741086a200441086a290000370000200741106a200441106a290000370000200741186a200441186a2900003700002002200341206a220336020820072004290000370000200641606a2106200441206a2104200541606a22050d000b0b2000280220210702400240200820036b4104490d00200228020021040c010b200341046a22042003490d02200841017422062004200620044b1b22064100480d020240024020080d002006102d21040c010b200228020020082006103121040b2004450d012002200636020420022004360200200621080b200420036a20073600002001290200200341046aad4220862004ad84100402402008450d002004102f0b200241106a24000f0b1036000b1038000bdd0303037f027e047f230041106b22022400200241003602082002420137030020002802102103024002404104102d2204450d0020024284808080c0003702042002200436020020042003360000200041086a29030021052000290300210620044104411410312204450d00200420063700042004410c6a200537000020024294808080c00237020420022004360200200028021421042000411c6a2802002200200210690240024020000d002002280208210720022802042108200228020021090c010b2000410574210a200228020021092002280204210320022802082100034002400240200320006b4120490d00200041206a2107200321080c010b200041206a22072000490d04200341017422082007200820074b1b22084100480d040240024020030d002008102d21090c010b200920032008103121090b2009450d030b200920006a22002004290000370000200041186a200441186a290000370000200041106a200441106a290000370000200041086a200441086a2900003700002008210320072100200441206a2104200a41606a220a0d000b2002200836020420022007360208200220093602000b20012902002007ad4220862009ad84100402402008450d002009102f0b200241106a24000f0b1036000b1038000bdb0403027f037e027f230041e0006b2202240041e796c800ad4280808080800184100122032900002104200241306a41086a200341086a290000370300200220043703302003102f41d49ac800ad4280808080d00084100122032900002104200241086a41086a200341086a290000370300200220043703082003102f02404120102d2203450d0020032001290000370000200341186a200141186a290000370000200341106a200141106a290000370000200341086a200141086a2900003700002003ad4280808080800484100322012900002104200141086a2900002105200141106a2900002106200241c0006a41186a2207200141186a290000370300200241c0006a41106a22082006370300200241c0006a41086a2005370300200220043703402001102f2003102f41c000102d2203450d00200320022903303700002003200229030837001020032002290340370020200341086a200241306a41086a290300370000200341186a200241086a41086a290300370000200341286a200241c0006a41086a2201290300370000200341306a2008290300370000200341386a2007290300370000200241086a200341c00010ad022001200241086a41096a2900003703002008200241086a41116a2900003703002007200241086a41196a290000370300200220022900093703400240024020022d00084101460d00200041003a00000c010b200041013a000020002002290340370001200041096a2001290300370000200041116a200241d0006a290300370000200041196a200241d8006a2903003700000b2003102f200241e0006a24000f0b1036000b8b0503027f017e047f230041d0006b2202240041e796c800ad4280808080800184100122032900002104200241086a200341086a290000370300200220043703002003102f41d899c800ad4280808080800284100122032900002104200241106a41086a200341086a290000370300200220043703102003102f024002404120102d2203450d0020032001290000370000200341186a200141186a290000370000200341106a200141106a290000370000200341086a200141086a29000037000020022003ad4280808080800484100622012900003703302001102f200241c4006a200341206a360200200241003a0048200220033602402002200241306a41086a36023c2002200241306a360238200241206a200241386a106c2003102f02400240024002402002280228220541206a2201417f4c0d0020022802202106024002402001450d002001102d2203450d062001410f4d0d01200121070c050b411021074110102d21030c030b200141017422084110200841104b1b220741004e0d010c050b103d000b200320012007103121030b2003450d010b20032002290300370000200341086a200241086a2903003700000240024020074170714110460d00200721080c010b200741017422084120200841204b1b22084100480d0220032007200810312203450d010b20032002290310370010200341186a200241106a41086a29030037000002400240200841606a2005490d00200821070c010b2005415f4b0d02200841017422072001200720014b1b22074100480d0220032008200710312203450d010b200341206a2006200510e8061a20002001360208200020073602042000200336020002402002280224450d002006102f0b200241d0006a24000f0b1036000b1038000bc60403027f037e047f230041d0006b2202240041e796c800ad4280808080800184100122032900002104200241286a41086a200341086a290000370300200220043703282003102f41f898c800ad4280808080b00184100122032900002104200241386a41086a200341086a290000370300200220043703382003102f02404120102d2203450d0020032001290000370000200341186a200141186a290000370000200341106a200141106a290000370000200341086a200141086a2900003700002003ad4280808080800484100322012900002104200141086a2900002105200141106a2900002106200241186a2207200141186a290000370300200241106a22082006370300200241086a2005370300200220043703002001102f2003102f41c000102d2203450d00200320022903283700002003200229033837001020032002290300370020200341086a200241286a41086a2201290300370000200341186a200241386a41086a2209290300370000200341286a200241086a220a290300370000200341306a2008290300370000200341386a200729030037000020022003109b052009200a290300370300200241386a41106a20082802003602002001200241206a2903003703002002200229030037033820022002290318370328024020022802142208450d002000200229033837030020002002290328370318200041106a200241386a41106a280200360200200041086a2009290300370300200041206a20012903003703000b200020083602142003102f200241d0006a24000f0b1036000b860401057f230041d0006b22032400200341206a200110c005024002404120102d2201450d0020012002290000370000200141186a200241186a290000370000200141106a200241106a290000370000200141086a200241086a29000037000020032001ad4280808080800484100622022900003703482002102f2003410c6a200141206a360200200341003a0010200320013602082003200341c8006a41086a3602042003200341c8006a360200200341306a2003106c2001102f200328023021040240024020032802242205200328022822026b20032802382206490d00200328022021010c010b200220066a22012002490d02200541017422072001200720014b1b22074100480d020240024020050d002007102d21010c010b200328022020052007103121010b2001450d012003200736022420032001360220200721050b2003200220066a2207360228200120026a2004200610e8061a02402003280234450d002004102f0b200320012007109e05200341306a41106a2206200341106a280200360200200341306a41086a2204200341086a29030037030020032003290300370330024020032802142202450d002000200329033037030020002003290318370318200041086a2004290300370300200041106a20062802003602000b2000200236021402402005450d002001102f0b200341d0006a24000f0b1036000b1038000b130020004110360204200041acb4c8003602000ba20403027f037e027f230041d0006b2202240041dfcbc700ad4280808080b00284100122032900002104200241286a41086a200341086a290000370300200220043703282003102f41f2dec700ad4280808080e00084100122032900002104200241386a41086a200341086a290000370300200220043703382003102f02404120102d2203450d0020032001290000370000200341186a200141186a290000370000200341106a200141106a290000370000200341086a200141086a2900003700002003ad4280808080800484100322012900002104200141086a2900002105200141106a2900002106200241186a2207200141186a290000370300200241106a22082006370300200241086a2005370300200220043703002001102f2003102f41c000102d2203450d00200320022903283700002003200229033837001020032002290300370020200341086a200241286a41086a290300370000200341186a200241386a41086a2201290300370000200341286a200241086a290300370000200341306a2008290300370000200341386a20072903003700002002200310a1052001200241146a290200370300200241386a41106a2002411c6a2902003703002002200229020c370338024020022802082207450d00200020022903003702002000200229033837020c200041146a20012903003702002000411c6a200241c8006a2903003702000b200020073602082003102f200241d0006a24000f0b1036000ba81509017f017e027f027e057f027e017f017e087f230041b0076b2204240002400240024002400240024020000d0041dfcbc700ad4280808080b00284100122002900002105200441b0026a41086a200041086a290000370300200420053703b0022000102f41f0abc800ad4280808080a00184100122002900002105200441c0026a41086a200041086a290000370300200420053703c0022000102f4120102d2200450d0220002003290000370000200041186a200341186a2201290000370000200041106a200341106a2206290000370000200041086a200341086a2900003700002000ad4280808080800484100322072900002105200741086a2900002108200741106a290000210920044180056a41186a220a200741186a29000037030020044180056a41106a220b200937030020044180056a41086a200837030020042005370380052007102f2000102f41c000102d2200450d02200020042903b002370000200020042903c0023700102000200429038005370020200041086a200441b0026a41086a290300370000200041186a200441c0026a41086a290300370000200041286a20044180056a41086a290300370000200041306a200b290300370000200041386a200a2903003700002000ad428080808080088410052000102f200441dd026a200341086a290000370000200441e5026a2006290000370000200441ed026a2001290000370000200441033a00d402200441083a00d002200420032900003700d50241c8e1ca004100200441d0026a108c010c010b200441e5026a200341106a2207290000370000200441ed026a200341186a2206290000370000200441083a00d002200441dd026a200341086a220a290000370000200441023a00d402200420032900003700d50241c8e1ca004100200441d0026a108c0141dfcbc700ad4280808080b00284100122002900002105200441b0026a41086a200041086a290000370300200420053703b0022000102f41f0abc800ad4280808080a00184100122002900002105200441c0026a41086a200041086a290000370300200420053703c0022000102f4120102d2200450d0120002003290000370000200041186a2006290000370000200041106a2007290000370000200041086a200a2900003700002000ad4280808080800484100322072900002105200741086a2900002108200741106a290000210920044180056a41186a200741186a29000037030020044180056a41106a200937030020044180056a41086a200837030020042005370380052007102f2000102f41c000102d2200450d01200020042903b002370000200020042903c0023700102000200429038005370020200041086a200441b0026a41086a290300370000200041186a200441c0026a41086a290300370000200041286a20044180056a41086a220a290300370000200041306a20044180056a41106a290300370000200041386a20044180056a41186a290300370000200441d0026a200010a20520042802d002210620044180056a200441d0026a410472220b41ac0210e8061a02402006411b470d002000102f0c010b200420044180056a41ac0210e80621072000102f20022802042100200720063602d002200b200741ac0210e8061a2007418c056a2001360200200a2000360200200741003a008405200741023a008005200741c0026a200741d0026a20074180056a108b01200741f5026a20072d00c0024104463a0000200741dd026a200341086a290000370000200741e5026a200341106a290000370000200741ed026a200341186a290000370000200741043a00d402200741083a00d002200720032900003700d50241c8e1ca004100200741d0026a108c010b41dfcbc700ad4280808080b00284100122002900002105200441b0026a41086a200041086a290000370300200420053703b0022000102f41f2dec700ad4280808080e00084100122002900002105200441c0026a41086a200041086a290000370300200420053703c0022000102f4120102d2200450d0020002003290000370000200041186a200341186a290000370000200041106a200341106a290000370000200041086a200341086a2900003700002000ad4280808080800484100322072900002105200741086a2900002108200741106a290000210920044180056a41186a2201200741186a29000037030020044180056a41106a2206200937030020044180056a41086a200837030020042005370380052007102f2000102f41c000102d2200450d00200020042903b002370000200020042903c0023700102000200429038005370020200041086a200441b0026a41086a220c290300370000200041186a200441c0026a41086a220d290300370000200041286a20044180056a41086a220e290300370000200041306a2006290300370000200041386a20012903003700002000ad428080808080088410052000102f200441d0026a41186a4200370300200441d0026a41106a22074200370300200441d0026a41086a220b4200370300200442003703d00241dfcbc700ad4280808080b00284220f100122002900002105200b200041086a290000370300200420053703d0022000102f41e2dec700ad42808080809001842210100122002900002105200441086a220a200041086a290000370300200420053703002000102f200720042903002205370300200e200b290300370300200620053703002001200a290300370300200420042903d00237038005200441d0026a20044180056a412010aa0220042802d0022200410120001b211120042902d402420020001b2212422088a72206450d03410021072011210041002101034002400240024020032000460d0020002003412010ea06450d0020070d01410021070c020b200741016a21070c010b200120076b220a20064f0d03200441d0026a41186a2213200020074105746b220a41186a2214290000370300200441d0026a41106a2215200a41106a2216290000370300200b200a41086a22172900003703002004200a2900003703d002200041086a22182900002105200041106a22192900002108200041186a221a2900002109200a2000290000370000201420093700002016200837000020172005370000201a2013290300370000201920152903003700002018200b290300370000200020042903d0023700000b200041206a21002006200141016a2201460d030c000b0b1036000b4188bbca00200a2006103b000b2007417f6a20064f0d00200620076bad422086201242ffffffff0f838421120b20044180056a41186a420037030020044180056a41106a22074200370300200e42003703002004420037038005200f100122002900002105200c200041086a290000370300200420053703b0022000102f200e200c290300370300200420042903b002370380052010100122002900002105200d200041086a290000370300200420053703c0022000102f200720042903c0022205370300200b200e290300370300200441d0026a41106a2005370300200441d0026a41186a200d29030037030020042004290380053703d0020240024020110d00200441d0026aad428080808080048410050c010b20044120360284052004200441d0026a3602800520112012422088a720044180056a1083012012a7450d002011102f0b02402002410c6a280200450d002002280208102f0b0240200241186a280200450d002002280214102f0b200441b0076a24000ba20403027f037e027f230041d0006b2202240041f2cbc700ad4280808080b00284100122032900002104200241286a41086a200341086a290000370300200220043703282003102f41f2dec700ad4280808080e00084100122032900002104200241386a41086a200341086a290000370300200220043703382003102f02404120102d2203450d0020032001290000370000200341186a200141186a290000370000200341106a200141106a290000370000200341086a200141086a2900003700002003ad4280808080800484100322012900002104200141086a2900002105200141106a2900002106200241186a2207200141186a290000370300200241106a22082006370300200241086a2005370300200220043703002001102f2003102f41c000102d2203450d00200320022903283700002003200229033837001020032002290300370020200341086a200241286a41086a290300370000200341186a200241386a41086a2201290300370000200341286a200241086a290300370000200341306a2008290300370000200341386a20072903003700002002200310a1052001200241146a290200370300200241386a41106a2002411c6a2902003703002002200229020c370338024020022802082207450d00200020022903003702002000200229033837020c200041146a20012903003702002000411c6a200241c8006a2903003702000b200020073602082003102f200241d0006a24000f0b1036000ba81509017f017e027f027e057f027e017f017e087f230041b0076b2204240002400240024002400240024020000d0041f2cbc700ad4280808080b00284100122002900002105200441b0026a41086a200041086a290000370300200420053703b0022000102f41f0abc800ad4280808080a00184100122002900002105200441c0026a41086a200041086a290000370300200420053703c0022000102f4120102d2200450d0220002003290000370000200041186a200341186a2201290000370000200041106a200341106a2206290000370000200041086a200341086a2900003700002000ad4280808080800484100322072900002105200741086a2900002108200741106a290000210920044180056a41186a220a200741186a29000037030020044180056a41106a220b200937030020044180056a41086a200837030020042005370380052007102f2000102f41c000102d2200450d02200020042903b002370000200020042903c0023700102000200429038005370020200041086a200441b0026a41086a290300370000200041186a200441c0026a41086a290300370000200041286a20044180056a41086a290300370000200041306a200b290300370000200041386a200a2903003700002000ad428080808080088410052000102f200441dd026a200341086a290000370000200441e5026a2006290000370000200441ed026a2001290000370000200441033a00d402200441073a00d002200420032900003700d50241c8e1ca004100200441d0026a108c010c010b200441dd026a200341086a2207290000370000200441e5026a200341106a2206290000370000200441ed026a200341186a220a290000370000200441023a00d402200441073a00d002200420032900003700d50241c8e1ca004100200441d0026a108c0141f2cbc700ad4280808080b00284100122002900002105200441b0026a41086a200041086a290000370300200420053703b0022000102f41f0abc800ad4280808080a00184100122002900002105200441c0026a41086a200041086a290000370300200420053703c0022000102f4120102d2200450d0120002003290000370000200041186a200a290000370000200041106a2006290000370000200041086a20072900003700002000ad4280808080800484100322072900002105200741086a2900002108200741106a290000210920044180056a41186a200741186a29000037030020044180056a41106a200937030020044180056a41086a200837030020042005370380052007102f2000102f41c000102d2200450d01200020042903b002370000200020042903c0023700102000200429038005370020200041086a200441b0026a41086a290300370000200041186a200441c0026a41086a290300370000200041286a20044180056a41086a220a290300370000200041306a20044180056a41106a290300370000200041386a20044180056a41186a290300370000200441d0026a200010a20520042802d002210620044180056a200441d0026a410472220b41ac0210e8061a02402006411b470d002000102f0c010b200420044180056a41ac0210e80621072000102f20022802042100200720063602d002200b200741ac0210e8061a2007418c056a2001360200200a2000360200200741003a008405200741013a008005200741c0026a200741d0026a20074180056a108b01200741f5026a20072d00c0024104463a0000200741dd026a200341086a290000370000200741e5026a200341106a290000370000200741ed026a200341186a290000370000200741043a00d402200741073a00d002200720032900003700d50241c8e1ca004100200741d0026a108c010b41f2cbc700ad4280808080b00284100122002900002105200441b0026a41086a200041086a290000370300200420053703b0022000102f41f2dec700ad4280808080e00084100122002900002105200441c0026a41086a200041086a290000370300200420053703c0022000102f4120102d2200450d0020002003290000370000200041186a200341186a290000370000200041106a200341106a290000370000200041086a200341086a2900003700002000ad4280808080800484100322072900002105200741086a2900002108200741106a290000210920044180056a41186a2201200741186a29000037030020044180056a41106a2206200937030020044180056a41086a200837030020042005370380052007102f2000102f41c000102d2200450d00200020042903b002370000200020042903c0023700102000200429038005370020200041086a200441b0026a41086a220c290300370000200041186a200441c0026a41086a220d290300370000200041286a20044180056a41086a220e290300370000200041306a2006290300370000200041386a20012903003700002000ad428080808080088410052000102f200441d0026a41186a4200370300200441d0026a41106a22074200370300200441d0026a41086a220b4200370300200442003703d00241f2cbc700ad4280808080b00284220f100122002900002105200b200041086a290000370300200420053703d0022000102f41e2dec700ad42808080809001842210100122002900002105200441086a220a200041086a290000370300200420053703002000102f200720042903002205370300200e200b290300370300200620053703002001200a290300370300200420042903d00237038005200441d0026a20044180056a412010aa0220042802d0022200410120001b211120042902d402420020001b2212422088a72206450d03410021072011210041002101034002400240024020032000460d0020002003412010ea06450d0020070d01410021070c020b200741016a21070c010b200120076b220a20064f0d03200441d0026a41186a2213200020074105746b220a41186a2214290000370300200441d0026a41106a2215200a41106a2216290000370300200b200a41086a22172900003703002004200a2900003703d002200041086a22182900002105200041106a22192900002108200041186a221a2900002109200a2000290000370000201420093700002016200837000020172005370000201a2013290300370000201920152903003700002018200b290300370000200020042903d0023700000b200041206a21002006200141016a2201460d030c000b0b1036000b4188bbca00200a2006103b000b2007417f6a20064f0d00200620076bad422086201242ffffffff0f838421120b20044180056a41186a420037030020044180056a41106a22074200370300200e42003703002004420037038005200f100122002900002105200c200041086a290000370300200420053703b0022000102f200e200c290300370300200420042903b002370380052010100122002900002105200d200041086a290000370300200420053703c0022000102f200720042903c0022205370300200b200e290300370300200441d0026a41106a2005370300200441d0026a41186a200d29030037030020042004290380053703d0020240024020110d00200441d0026aad428080808080048410050c010b20044120360284052004200441d0026a3602800520112012422088a720044180056a1083012012a7450d002011102f0b02402002410c6a280200450d002002280208102f0b0240200241186a280200450d002002280214102f0b200441b0076a24000b130020004107360204200041dcbec8003602000bdb0901097f230041e0006b22022400200241386a4100280288a943360200200241306a4100290280a943370300200241286a41002902f8a843370300200241206a41002902f0a843370300200241186a41002902e8a843370300200241106a41002902e0a843370300200241086a41002902d8a843370300200241002902d0a8433703002002410036024820024201370340200241d0006a200210ca0520022802502103024002400240024020022802442204200228024822056b20022802582206490d00410121040c010b200520066a22072005490d02200441017422082007200820074b1b22074100480d020240024020040d002007102d21040c010b410120042007103121040b2004450d0120022007360244200220043602400b2002200520066a360248200420056a2003200610e8061a02402002280254450d002003102f0b200241d0006a200241106a10ca05200228025021080240024020022802442205200228024822036b20022802582207490d00200521060c010b200320076a22062003490d02200541017422092006200920064b1b22064100480d020240024020050d002006102d21040c010b200420052006103121040b2004450d0120022006360244200220043602400b2002200320076a2205360248200420036a2008200710e8061a02402002280254450d002008102f0b02400240200620056b4104490d00200541046a21030c010b200541046a22032005490d02200641017422072003200720034b1b22074100480d020240024020060d002007102d21040c010b200420062007103121040b2004450d0120022007360244200220043602400b20022003360248200420056a410a3600000240024020022802442204200228024822056b4104490d00200228024021040c010b200541046a22062005490d02200441017422032006200320064b1b22064100480d020240024020040d002006102d21040c010b200228024020042006103121040b2004450d0120022006360244200220043602400b2002200541046a360248200420056a41e701360000024020022802442206200228024822056b41034b0d00200541046a22032005490d02200641017422072003200720034b1b22034100480d020240024020060d002003102d21040c010b200420062003103121040b2004450d0120022003360244200220043602400b2002200541046a360248200420056a4100360000200241306a2802002107410c200241c0006a106920074190016a21092002280244210620022802482103034002400240200620036b4108490d00200341086a2104200228024021050c010b200341086a22042003490d03200641017422052004200520044b1b22084100480d030240024020060d002008102d21050c010b200228024020062008103121050b2005450d022002200836024420022005360240200821060b20022004360248200520036a2007290000370000200741086a28020021080240200620046b41034b0d00200441046a22032004490d032006410174220a2003200a20034b1b22034100480d030240024020060d002003102d21050c010b200520062003103121050b2005450d022002200336024420022005360240200321060b2002200441046a2203360248200520046a20083600002007410c6a22072009470d000b200241e0006a24002003ad4220862005ad840f0b1036000b1038000bf90301067f20012802042102024002400240024020012802004101470d002001410c6a280200220141046a2203417f4c0d01024002400240024002400240024002402003450d002003102d2204450d0a200141c000490d04200141808001490d052001418080808004490d06200441033a00002003417f6a41034d0d01200321050c030b410121034101102d2204450d09200441033a0000410521050c010b200341017422064105200641054b1b22054100480d090b20042003200510312204450d070b20042001360001410521060c030b200420014102743a000041012106200321050c020b02400240200341014d0d00200321050c010b20042003200341017422064102200641024b1b220510312204450d050b41022106200420014102744101723b00000c010b02400240200341034d0d00200321050c010b200341017422064104200641044b1b22054100480d0520042003200510312204450d040b20042001410274410272360000410421060b02400240200520066b2001490d00200521030c010b200620016a22032006490d04200541017422072003200720034b1b22034100480d0420042005200310312204450d030b200420066a2002200110e8061a2000200620016a36020820002003360204200020043602000f0b20002002200141086a28020010d4050f0b103d000b1036000b1038000be11b04027f017e087f017e230041a00e6b22022400024002402001450d00200220003602300c010b200241c8e1ca003602300b20022001360234200241c00a6a200241306a10f10402400240024020022802c40a450d00200241386a200241c00a6a41fc0010e8061a200241b8016a200241386a41fc0010e8061a200241b8016a10b903024020022802b8012201450d00200241c00a6a2001417f6a10fa02200241c00a6a200241c8016a412010ea060d0002400240200241b0026a28020022010d004104210341002101410021000c010b024002402001ad420c7e2204422088a70d002004a722054100480d0020022802a80221002005102d22030d011036000b1038000b200141c8036c210620014103742107200321010340200220003602e806200241c00a6a200241e8066a10a903200141086a200241c00a6a41086a280200360200200120022903c00a3702002001410c6a2101200041c8036a2100200641b87c6a22060d000b2005410c6e2101200741786a41037641016a21000b200220003602f006200220013602ec06200220033602e806200241c00a6a200241e8066a10cc05024020024188026a2201200241c00a6a412010ea06450d0041cccbca00ad4280808080e0018410082001ad42808080808004841020200241c00a6aad428080808080048410200b02402001200241c00a6a412010ea060d00200241ac026a280200210720022802a802210520022802b0022106200241b8026a200241b8016a41f00010e8061a2005200641c8036c6a210020022802b8022108200521010240024002402006450d00200241e8066a41f0006a2103200521010240034020024180066a200141e80010e8061a200141e8006a2903002104200241a8036a200141f0006a41d80210e8061a20044203510d01200241e8066a20024180066a41e80010e8061a200220043703d0072003200241a8036a41d80210e8061a2002200241e8066a3602b00a200241c00a6a200241b00a6a10a90320022802c80a2106024020022802c40a450d0020022802c00a102f0b200241c00a6a200241e8066a41c80310e8061a200241003602880e200241b00a6a200241c00a6a2006200241880e6a10d00320022d00b00a4101460d04200141c8036a22012000470d000c030b0b200141c8036a21010b20002001460d00034020014198016a108d012000200141c8036a2201470d000b0b02402007450d002005102f0b200241206a4180e5c3004110109501200228022421050240200228022022074101470d004180e5c300ad428080808080028410050b200241c00a6a41186a22094200370300200241c00a6a41106a22004200370300200241c00a6a41086a22014200370300200242003703c00a418de6c300ad4280808080e000841001220629000021042001200641086a290000370300200220043703c00a2006102f41bc80c400ad4280808080e00184100122032900002104200241a8036a41086a2206200341086a290000370300200220043703a8032003102f200020022903a8032204370300200241e8066a41086a220a2001290300370300200241e8066a41106a220b2004370300200241e8066a41186a220c2006290300370300200220022903c00a3703e80620022005410020071b3602c00a200241e8066aad42808080808004842204200241c00a6aad4280808080c000841004200942003703002000420037030020014200370300200242003703c00a41aa97ca00ad428080808080018410012203290000210d2001200341086a2900003703002002200d3703c00a2003102f41b297ca00ad428080808080018410012203290000210d2006200341086a2900003703002002200d3703a8032003102f200020022903a803220d370300200a2001290300370300200b200d370300200c2006290300370300200220022903c00a3703e80620041005200810a904200241c00a6a109204200241186a200241b8026a410472220110d6032002200228021c22003602980e200241106a200241c00a6a410472220610d60320022002280214220336029c0e20002003470d05200241086a200110d603200228020821052002200610d60320022802042201200228020c2200200020014b1b2209450d042002280200210741002106418d85c700ad4280808080c002842104410021030340024002400240024002400240024002400240200520066a22012d00002208200720066a22002d0000470d0002400240024002400240024020080e06000102030405000b20052007460d0d200141016a200041016a412010ea060d050c060b024020052007460d00200141016a280000200041016a280000470d050b200141106a2802002208200041106a280200470d04200141086a280200220a200041086a280200220b460d0a200a200b200810ea060d040c0a0b024020052007460d00200141016a280000200041016a280000470d040b200141106a2802002208200041106a280200470d03200141086a280200220a200041086a280200220b460d08200a200b200810ea060d030c080b024020052007460d00200141016a280000200041016a280000470d030b200141106a2802002208200041106a280200470d02200141086a280200220a200041086a280200220b460d06200a200b200810ea060d020c060b200141046a2802002208200041046a280200470d012008450d04200141086a280200200041086a280200470d012001410c6a2802002000410c6a280200470d010c040b2001410c6a28020022082000410c6a280200470d00200141046a280200220a200041046a280200220b460d02200a200b200810ea06450d020b20041008200241e8066a200110ea0220023502f00642208620022802e8062208ad841020024020022802ec06450d002008102f0b200241e8066a200010ea0220023502f00642208620022802e8062208ad841020024020022802ec06450d002008102f0b20012d000020002d00002208470d06024020080e06000605040302000b20052007460d070b200141016a200041016a412010ea060d050c060b2001410c6a28020022082000410c6a280200470d04200141046a2802002201200041046a2802002200460d0520012000200810ea060d040c050b200141046a2802002208200041046a280200470d032008450d04200141086a280200200041086a280200470d032001410c6a2802002000410c6a280200460d040c030b024020052007460d00200141016a280000200041016a280000470d030b200141106a2802002208200041106a280200470d02200141086a2802002201200041086a2802002200460d0320012000200810ea060d020c030b024020052007460d00200141016a280000200041016a280000470d020b200141106a2802002208200041106a280200470d01200141086a2802002201200041086a2802002200460d0220012000200810ea060d010c020b024020052007460d00200141016a280000200041016a280000470d010b200141106a2802002208200041106a280200470d00200141086a2802002201200041086a2802002200460d0120012000200810ea06450d010b418cd1c300412741f8b4ca001039000b200641246a2106200341016a22032009490d000c050b0b200241286a20022f00b10a20022d00b30a4110747210d5032002280228200228022c41f8b4ca001039000b41e0d0c300412441f8b4ca001039000b41c4d0c300411c41f8b4ca001039000b200241b4036a4104360200200241fc066a4102360200200242023702ec06200241b8c2c8003602e806200241043602ac03200241b0c2c8003602a803200241003602bc01200241c8e1ca003602b8012002200241a8036a3602f8062002200241b8016a3602b003200241e8066a41c8c2c8001043000b0240200241b8026a41306a2201200241c00a6a41306a2200412010ea06450d0041cccbca00ad4280808080e0018410082001ad428080808080048410202000ad428080808080048410200b024020012000412010ea06450d0041b3d1c300412841f8b4ca001039000b0240200241c00a6a410c6a2802002200450d0020022802c40a2101200041246c210003400240024020012d0000220641044b0d0002400240024020060e050400010204040b2001410c6a280200450d03200141086a280200102f0c030b2001410c6a280200450d02200141086a280200102f0c020b2001410c6a280200450d01200141086a280200102f0c010b200141086a280200450d00200141046a280200102f0b200141246a21012000415c6a22000d000b0b0240200241c80a6a280200450d0020022802c40a102f0b0240200241b8026a410c6a2802002200450d0020022802bc022101200041246c210003400240024020012d0000220641044b0d0002400240024020060e050400010204040b2001410c6a280200450d03200141086a280200102f0c030b2001410c6a280200450d02200141086a280200102f0c020b2001410c6a280200450d01200141086a280200102f0c010b200141086a280200450d00200141046a280200102f0b200141246a21012000415c6a22000d000b0b0240200241c0026a280200450d0020022802bc02102f0b200241a00e6a240042010f0b200241a8036a41146a4109360200200241b4036a410a36020020024180066a41146a41033602002002200241980e6a3602880e20022002419c0e6a3602b00a200241e8066a41146a41003602002002420337028406200241b4e0ca00360280062002410a3602ac03200241c8e1ca003602f806200242013702ec0620024184d1c3003602e8062002200241a8036a360290062002200241e8066a3602b8032002200241b00a6a3602b0032002200241880e6a3602a80320024180066a41e8d8c9001043000bc504020b7f037e230041206b2202240002400240024020012802082203410c6c41046a2204417f4c0d00200128020021050240024020040d00410121060c010b2004102d2206450d020b2002410036020820022004360204200220063602002003200210690240024020030d002002280208210720022802042108200228020021090c010b20052003410c6c6a210a2005210603402006280200210b200641086a28020022042002106902400240200228020422082002280208220c6b2004490d00200228020021090c010b200c20046a2209200c490d05200841017422072009200720094b1b22074100480d050240024020080d002007102d21090c010b200228020020082007103121090b2009450d042002200736020420022009360200200721080b2002200c20046a22073602082009200c6a200b200410e8061a2006410c6a2206200a470d000b0b2007ad4220862009ad8410242204290000210d200441086a290000210e200441106a290000210f200241186a2206200441186a290000370300200241106a220c200f370300200241086a220b200e3703002002200d3703002004102f200041186a2006290300370000200041106a200c290300370000200041086a200b2903003700002000200229030037000002402008450d002009102f0b02402003450d002003410c6c21062005210403400240200441046a280200450d002004280200102f0b2004410c6a2104200641746a22060d000b0b0240200141046a280200450d002005102f0b200241206a24000f0b103d000b1036000b1038000ba60301027f23004180026b22022400024002402001450d00200220003602000c010b200241c8e1ca003602000b20022001360204200241f8006a200210f6030240200228027c450d00200241086a200241f8006a41f00010e8061a200241086a10b9030240200241086a410c6a2802002200450d00200228020c2101200041246c210003400240024020012d0000220341044b0d0002400240024020030e050400010204040b2001410c6a280200450d03200141086a280200102f0c030b2001410c6a280200450d02200141086a280200102f0c020b2001410c6a280200450d01200141086a280200102f0c010b200141086a280200450d00200141046a280200102f0b200141246a21012000415c6a22000d000b0b0240200241106a280200450d00200228020c102f0b20024180026a240042010f0b200241f4016a41043602002002411c6a41023602002002420237020c200241b8c2c800360208200241043602ec01200241c8c3c8003602e801200241003602fc01200241c8e1ca003602f8012002200241e8016a3602182002200241f8016a3602f001200241086a41c8c2c8001043000ba10202077f017e230041206b22022400200210a0030240024002402002280208220341046a2204417f4c0d00200228020021050240024020040d00410121060c010b2004102d2206450d020b2002410036021820022004360214200220063602102003200241106a10690240024020022802142206200228021822046b2003490d00200228021021060c010b200420036a22072004490d03200641017422082007200820074b1b22074100480d030240024020060d002007102d21060c010b200228021020062007103121060b2006450d0220022007360214200220063602100b200620046a2005200310e8061a200420036aad4220862006ad84210902402002280204450d002005102f0b200241206a240020090f0b103d000b1036000b1038000beb0602057f027e230041900b6b22022400024002402001450d00200220003602000c010b200241c8e1ca003602000b20022001360204200241b8076a200210a40402400240024020022903a0084203510d00200241186a200241b8076a41c80310e8061a200241e0036a200241186a41c80310e8061a2002200241e0036a3602b807200241a8076a200241b8076a10a90320022802b0072101200241b8076a200241e0036a41c80310e8061a200241880b6a20022802b007360200200220022903a8073703800b200241086a200241b8076a2001200241800b6a10d0034101410220022d000822034101461b2200102d2201450d01200241003602c007200220003602bc07200220013602b8070240024020034101470d00200141013a0000200241013602c007200241086a410172200241b8076a10a1030c010b200141003a0000200241023602c007024020022d000c22034104460d0041012104200141013a00010240024002400240024020030e0400010203000b410021040b200220043a00e003410221030c020b41022103200241023a00e003410221040c010b200241033a00e0034104210020014102410410312201450d04200141033a000220024284808080303702bc07200220013602b807200220022d000d22043a00e003024041010d0041000d0641034101742200410341016a2203200020034b1b22004100480d060240024041030d002000102d21010c010b200141032000103121010b2001450d05200220003602bc07200220013602b8070b2002410341016a22033602c007200141036a20043a0000200220022d000e22043a00e0030b024020002003470d0041000d0520004101742205200041016a2206200520064b1b22054100480d050240024020000d002005102d21010c010b200120002005103121010b2001450d04200220053602bc07200220013602b8070b2002200341016a3602c007200120036a20043a00000c010b200141003a00010b20023502c007210720023502b8072108200241900b6a240020082007422086840f0b200241246a4104360200200241f4036a4102360200200242023702e403200241b8c2c8003602e0032002410436021c200241e0c3c8003602182002410036020c200241c8e1ca003602082002200241186a3602f0032002200241086a360220200241e0036a41c8c2c8001043000b1036000b1038000ba21607067f017e017f027e067f017e067f23004180026b22022400200241186a4180e5c3004110109501200228021c21030240200228021822044101470d004180e5c300ad428080808080028410050b200241b0016a41186a22054200370300200241b0016a41106a22064200370300200241b0016a41086a22074200370300200242003703b001418de6c300ad4280808080e00084220810012209290000210a2007200941086a2900003703002002200a3703b0012009102f41bc80c400ad4280808080e00184220a10012209290000210b200241f0016a41086a220c200941086a2900003703002002200b3703f0012009102f200620022903f001220b37030020024190016a41086a220d200729030037030020024190016a41106a2209200b37030020024190016a41186a220e200c290300370300200220022903b001370390014100210f20022003410020041b36022020024190016aad4280808080800484220b200241206aad4280808080c000841004200241206a41186a22104200370300200241206a41106a22044200370300200241206a41086a221142003703002002420037032020081001220329000021122011200341086a290000370300200220123703202003102f419ce6c300ad4280808080e000841001220329000021122007200341086a290000370300200220123703b0012003102f200420022903b0012212370300200241d0016a41086a22132011290300370300200241d0016a41106a2012370300200241d0016a41186a22142007290300370300200220022903203703d001200241106a200241d0016a41201095012002280214210420022802102115200542003703002006420037030020074200370300200242003703b00141aa97ca00ad42808080808001841001220329000021122007200341086a290000370300200220123703b0012003102f41b297ca00ad4280808080800184100122032900002112200c200341086a290000370300200220123703f0012003102f200620022903f0012212370300200d200729030037030020092012370300200e200c290300370300200220022903b00137039001200b10052004410020151b10a904200542003703002006420037030020074200370300200242003703b0012008100122032900002112200c200341086a290000370300200220123703f0012003102f2007200c290300370300200220022903f0013703b001200a10012203290000210a200c200341086a2900003703002002200a3703f0012003102f200620022903f001220a370300200d20072903003703002009200a370300200e200c290300370300200220022903b00137039001200241086a20024190016a41201095010240024002400240200228020c410020022802081b22160d0041042117410021160c010b2016ad420c7e220a422088a70d01200aa722094100480d012009102d2217450d022009410c6e210f41002109201721030340200241d0016a200910d203200241206a20022802d001221520022802d8012218109302024020022802202204450d002018ad4220862015ad8410050b200941016a21092002290224420020041b210a2004410120041b2104024020022802d401450d002015102f0b20032004360200200341046a200a3702002003410c6a210320162009470d000b0b200220163602282002200f36022420022017360220200241d0016a200241206a10cc0520102014290300370300200241206a41106a2203200241d0016a41106a29030037030020112013290300370300200220022903d00137032020054200370300200241b0016a41106a2204420037030020074200370300200242003703b001200810012209290000210a200c200941086a2900003703002002200a3703f0012009102f2007200c290300370300200220022903f0013703b00141ace6c300ad4280808080e0018410012209290000210a200c200941086a2900003703002002200a3703f0012009102f200620022903f001370000200641086a200c290300370000200d200729030037030020024190016a41106a2004290300370300200e2005290300370300200220022903b001370390014120102d2209450d0120092002290320370000200941186a200241206a41186a2204290300370000200941106a2003290300370000200941086a200241206a41086a290300370000200b2009ad428080808080048410042009102f200241206a109204200241003602b801200242013703b0014120102d2209450d0120092002290330370000200941186a200241c8006a290300370000200941106a2215200241206a41206a290300370000200941086a20042903003700004120102d2203450d01200242a080808080043702b401200220033602b00120032009290000370000200341086a200941086a290000370000200341106a2015290000370000200341186a200941186a2900003700002009102f200241206a200241b0016a1095024120102d2209450d0120092002290350370000200941186a200241e8006a290300370000200941106a200241e0006a290300370000200941086a200241d8006a2903003700000240024020022802b401221520022802b80122186b4120490d00201841206a210320022802b00121040c010b201841206a22032018490d01201541017422042003200420034b1b22164100480d010240024020150d002016102d21040c010b20022802b00120152016103121040b2004450d02200220163602b401200220043602b001201621150b200420186a221841086a200941086a290000370000201841106a200941106a290000370000201841186a200941186a290000370000200220033602b801201820092900003700002009102f4120102d2209450d0120092002290370370000200941186a20024188016a290300370000200941106a20024180016a290300370000200941086a200241f8006a2903003700000240201520036b411f4b0d00200341206a22182003490d01201541017422162018201620184b1b22184100480d010240024020150d002018102d21040c010b200420152018103121040b2004450d02200220183602b401200220043602b0010b200420036a220441086a200941086a290000370000200441106a200941106a290000370000200441186a200941186a2900003700002002200341206a3602b801200420092900003700002009102f2002280224210d2002412c6a2802002205200241b0016a10690240024020050d0020022802b801210320022802b00121040c010b200541246c210c20022802b401211620022802b8012109200d21150340200241d0016a201510ea0220022802d001210702400240201620096b20022802d8012218490d00200920186a210320022802b00121040c010b200920186a22032009490d03201641017422042003200420034b1b22064100480d030240024020160d002006102d21040c010b20022802b00120162006103121040b2004450d04200220063602b401200220043602b001200621160b200220033602b801200420096a2007201810e8061a024020022802d401450d002007102f0b201541246a211520032109200c415c6a220c0d000b0b2003ad422086210a2004ad210802402005450d00200541246c2103200d210903400240024020092d0000220441044b0d0002400240024020040e050400010204040b2009410c6a280200450d03200941086a280200102f0c030b2009410c6a280200450d02200941086a280200102f0c020b2009410c6a280200450d01200941086a280200102f0c010b200941086a280200450d00200941046a280200102f0b200941246a21092003415c6a22030d000b0b200a200884210a0240200241286a280200450d00200d102f0b20024180026a2400200a0f0b1038000b1036000bcc2507017f017e017f017e0e7f027e087f23004180056b22022400024002402001450d00200220003602200c010b200241c8e1ca003602200b20022001360224200241186a200241206a10e601024020022802180d00200228021c21012002200241206a3602e802200241003a00e004200242003702d40320024190bdc6003602d0032002200136023c200241003602382002200241e0046a3602442002200241e8026a360240200241386a200241d0036a10ee0420022802d003210120022902d4032103024020022d00e004450d0020012003a72003422088a710e4010c010b2001450d002002200337022c20022001360228200241386a200241286a10d205024002400240024002400240024020022802384101460d00200241386a41086a22012903002103200241386a41186a4200370300200241386a41106a22044200370300200142003703002002420037033841d5a2ca00ad42808080809001841001220029000021052001200041086a290000370300200220053703382000102f41ecb0c000ad42808080803084100122002900002105200241e8026a41086a2206200041086a290000370300200220053703e8022000102f200420022903e8022205370300200241d0036a41086a2001290300370300200241d0036a41106a2005370300200241d0036a41186a2006290300370300200220022903383703d003200241086a200241d0036a10e301200229031021052002280208210141c803102d2207450d042007200241d0036a41e80010e806220842023703682008410336029801200820022903e802370370200841f8006a200629030037030020084180016a200241e8026a41106a29030037030020084188016a200241e8026a41186a29030037030020084190016a20024188036a29030037030020082003200542dc0b7c42dc0b20011b220520032005561b3703a001200841a8016a200241386a41a00210e8061a200241286a2101200228022c21090240024003404100210a4100210602402001280200220b2f0106220c450d00200c4103742101200b41e8006a2104200b41086a2100417f21060340024020010d00200c21060c020b41feb2c0002000410810ea06220d450d03200141786a21012004410c6a2104200641016a2106200041086a2100200d417f4a0d000b0b024020090d0042002103420021050c030b2009417f6a2109200b20064102746a41e4016a21010c000b0b200441786a2802002101200220042802003602d403200220013602d003200241386a200241d0036a109a032002280238220a450d03200241c0006a3502004220862103200235023c21050b200a4104200a1b210e20052003844200200a1b2203a7210f02402003422088a7220b450d00200241d8026a10f80220022802d802210d20022802dc02211002400240024020022802e002220c450d00200d200c41c4006c22016a2104200141bc7f6a2106200d2101034020012d00002100200241386a200141016a41c30010e8061a20004102460d01200241d0036a41186a200241386a41186a290000370300200241d0036a41106a200241386a41106a290000370300200241d0036a41086a200241386a41086a290000370300200220022900383703d00320004101460d02200641bc7f6a2106200141c4006a22012004470d000b0b410021114101210902402010450d00200d102f0b410021120c010b200241e8026a41086a2200200241d0036a41086a290300370300200241e8026a41106a220a200241d0036a41106a290300370300200241e8026a41186a2213200241d0036a41186a290300370300200220022903d00322033703c004200220033703e8024120102d2209450d06200920022903e802370000200941186a2013290300370000200941106a200a290300370000200941086a20002903003700000240024020060d0041012112410121110c010b200141c4006a2100200c41c4006c200d6a41bc7f6a21134101211241012111034020002101034020012d00002100200241386a200141016a41c30010e8061a20004102460d02200241d0036a41186a2206200241386a41186a290000370300200241d0036a41106a220c200241386a41106a290000370300200241d0036a41086a220a200241386a41086a290000370300200220022900383703d003024020004101460d00200141c4006a22012004470d010c030b0b200241e8026a41086a200a2903002203370300200241e8026a41106a200c2903002205370300200241e8026a41186a20062903002214370300200220022903d00322153703e802200241c0046a41186a220c2014370300200241c0046a41106a220a2005370300200241c0046a41086a22162003370300200220153703c004024020112012470d00201241016a22002012490d0b201241017422062000200620004b1b220041ffffff3f712000470d0b200041057422004100480d0b0240024020120d002000102d21090c010b200920124105742000103121090b2009450d09200041057621110b200141c4006a2100200920124105746a220620022903c004370000200641186a200c290300370000200641106a200a290300370000200641086a2016290300370000201241016a211220132001470d000b0b2010450d00200d102f0b200e200b41f0006c6a2116200241d0036a41106a2117200241386a41106a210d200241d0036a41086a21184200210541042119200e210403402004280204210b20042802002106200241386a200441086a41e80010e8061a200441f0006a21040240200b0d00201121060c040b200241e8026a200241386a41e80010e8061a2002200b3602d403200220063602d0032018200241e8026a41e80010e8061a200241386a41186a221a4200370300200d4200370300200241386a41086a220c420037030020024200370338418de6c300ad4280808080e00084100122012900002103200c200141086a290000370300200220033703382001102f419ce6c300ad4280808080e00084100122012900002103200241c0046a41086a2200200141086a290000370300200220033703c0042001102f200d20022903c004370000200d41086a2000290300370000200241e0046a41086a221b200c290300370300200241e0046a41106a221c200d290300370300200241e0046a41186a221d201a290300370300200220022903383703e0042002200241e0046a41201095012002280200210120022802042100200241e0046a200241d0036a10f902024002402006417f6a220a2000410020011b22014f0d00200241386a200a10fa02200241386a2017412010ea060d00200641002001417b6a2200200020014b1b490d0020124105742110200241e0046a20096b21134100210102400340024020102001470d004100210a0c020b4101210a20132001460d01200920016a2100200141206a21012000200241e0046a412010ea060d000b0b200241386a200610fa02200241386a200241e0046a412010ea062101200a0d002001450d00200241e0046a200241d0036a10f902200241386a200241d0036a41f00010e8061a0240024020054220882203a722012005a7460d00200121000c010b200141016a22062001490d0b2003a72200410174220b20062006200b491bad42f0007e2203422088a70d0b2003a722064100480d0b0240024020010d002006102d21190c010b2019200141f0006c2006103121190b2019450d09200641f0006ead21050b2019200041f0006c6a200241386a41f00010e8061a201a201d290300370300200d201c290300370300200c201b290300370300200220022903e0043703380240024020122011460d0020112106201221110c010b201141016a22012011490d0b201141017422062001200620014b1b220141ffffff3f712001470d0b200141057422014100480d0b0240024020110d002001102d21090c010b200920114105742001103121090b2009450d09200141057621060b200542ffffffff0f83200041016a2200ad422086842105200920114105746a22012002290338370000200141186a201a290300370000200141106a200d290300370000200141086a200c2903003700002000410a460d05201141016a2112200621110c010b024020022802dc032201450d00200141246c2100200b210103400240024020012d0000220641044b0d0002400240024020060e050400010204040b2001410c6a280200450d03200141086a280200102f0c030b2001410c6a280200450d02200141086a280200102f0c020b2001410c6a280200450d01200141086a280200102f0c010b200141086a280200450d00200141046a280200102f0b200141246a21012000415c6a22000d000b0b20022802d803450d00200b102f0b20042016470d000b20112106201621040c020b4101210c200f450d03200e102f0c030b200241d8036a200241c4006a2902003703002002200229023c3703d003418aeec0004128200241d0036a41b4eec00041c4eec000103e000b024020162004460d000340200441046a2200109701200441f0006a21010240200441086a280200450d002000280200102f0b2001210420162001470d000b0b0240200f450d00200e102f0b02402006450d002009102f0b0240200542ffffffff0f560d004101210c2005a7450d022019102f0c020b2019450d00200841c80341900710312207450d02200741c8036a200241d0036a41e80010e8061a200742023703b004200720053703e804200720193602e404200741043602e004200720022903e8023703b804200741c0046a200241f0026a290300370300200741c8046a200241f8026a290300370300200741d0046a20024180036a290300370300200741d8046a20024188036a290300370300200741f0046a200241386a41a00210e8061a4102210c0c010b4101210c0b200241286a2101200228022c210b02400240024002400340024002402001280200220d2f010622090d00410021060c010b20094103742101200d41086a2100417f21060340024020010d00200921060c020b200641016a210641a9b4c0002000410810ea062204450d03200141786a2101200041086a21002004417f4a0d000b0b200b450d02200b417f6a210b200d20064102746a41e4016a21010c000b0b200d41e0006a2006410c6c6a22012802084104490d002001280200280000210d200241d0036a41186a4200370300200241d0036a41106a22064200370300200241d0036a41086a22014200370300200242003703d00341d5a2ca00ad42808080809001841001220029000021032001200041086a290000370300200220033703d0032000102f41f4c8c300ad4280808080b00184100122002900002103200241c0046a41086a2204200041086a290000370300200220033703c0042000102f200620022903c0042203370300200241e8026a41086a2001290300370300200241e8026a41106a2003370300200241e8026a41186a2004290300370300200220022903d0033703e802200241386a200241e8026a10fe0320022802382201410420011b2106410021000240200229023c420020011b2203422088a72201417f6a220420014b0d00200420014f0d00200620044102746a2201450d002001280200200d4721000b02402003a7450d002006102f0b20000d010b200c21100c010b2007200c41c8036c2201200c4101742200200c41016a2210200020104b1b41c8036c10312207450d01200720016a200241d0036a41e80010e80622014202370368200120022903e802370370200141f8006a200241f0026a29030037030020014180016a200241f8026a29030037030020014188016a20024180036a29030037030020014190016a20024188036a2903003703002001419c016a200d3602002001410e36029801200141a8016a200241386a41a00210e8061a0b2002280228200228022c200228023010e401201041c8036c220c4104722201417f4c0d012001102d2200450d00200241003602d803200220013602d403200220003602d0032010200241d0036a106920022802d403210b20022802d8032101200721060340200220063602e802200241386a200241e8026a10a9032002280238210902400240200b20016b2002280240220d490d002001200d6a210020022802d00321040c010b2001200d6a22002001490d04200b41017422042000200420004b1b220a4100480d0402400240200b0d00200a102d21040c010b20022802d003200b200a103121040b2004450d022002200a3602d403200220043602d003200a210b0b200220003602d803200420016a2009200d10e8061a0240200228023c450d002009102f0b200641c8036a210620002101200c41b87c6a220c0d000b201041c8036c210620074198016a21012000ad4220862004ad84210303402001108d01200141c8036a2101200641b87c6a22060d000b2007102f20024180056a240020030f0b1036000b103d000b1038000b200241dc036a4104360200200241cc006a41023602002002420237023c200241b8c2c800360238200241043602d403200241f8c3c8003602d003200241003602ec02200241c8e1ca003602e8022002200241d0036a3602482002200241e8026a3602d803200241386a41c8c2c8001043000b920201067f200128020421020240024002400240034002400240200128020022032f010622040d00410021050c010b20044103742101200341086a2106417f21050340024020010d00200421050c020b200541016a210541fca1ca002006410810ea062207450d03200141786a2101200641086a21062007417f4a0d000b0b2002450d022002417f6a2102200320054102746a41e4016a21010c000b0b200341e0006a2005410c6c6a22012802084108490d01200041086a2001280200290000370300200041003602000f0b200041003602042000410c6a4128360200200041086a4184a2ca003602000c010b200041003602042000410c6a4129360200200041086a41aca2ca003602000b200041013602000beb2107077f017e0d7f047e017f017e027f230041d0026b22022400024002402001450d00200220003602180c010b200241c8e1ca003602180b2002200136021c200241e8006a200241186a10f104024002400240024002400240024002400240200228026c2203450d00200241e0016a2802002104200241dc016a2802002105200241d8016a2802002106200241e8006a410c6a280200210720022802702108200241106a200241186a10e60120022802100d08200228021421012002200241186a360240200241003a0030200242003702f40120024190bdc6003602f0012002200136026c200241003602682002200241306a3602742002200241c0006a360270200241e8006a200241f0016a10ee0420022802f001210120022902f4012109024020022d0030450d0020012009a72009422088a710e4010c090b2001450d0820022009370224200220013602204101210a200241013b013c200242003702344190bdc600210b20024190bdc600360230024020040d004100210c4100210d4100210e0c040b2006200441c8036c6a210b200241306a41086a210f200241c0006a4104722110200241f0016a4102722111200241e8006a41106a210e200621120340201241e8006a2903004202520d0202400240024002400240201228029801220c410347220d0d0020122903a0012109200241206a21012002280224211302400240024002400240034002400240200128020022142f010622150d00410021160c010b20154103742101201441086a2100417f21160340024020010d00201521160c020b201641016a211641b3c7ca002000410810ea06220a450d03200141786a2101200041086a2100200a417f4a0d000b0b2013450d022013417f6a2113201420164102746a41e4016a21010c000b0b0240201441e0006a2016410c6c6a220128020841074b0d00201742808080807083422984210941bbc7ca0021130c020b200942b8178020012802002900002217510d034131211541cbdbc90021130c020b201742808080807083421c84210941e4c7ca0021130b2009a721150b0240024020022d003d450d004131210141c6efc00021000c010b20022802302002280234200228023810e4012002420037023420024190bdc600360230200242e2c289abb68edbb7f40037034041002116200241f0016a410272410041da0010e7061a200241e8006a410041840110e7061a41e401102d2214450d0c20144100360200201441046a200241f0016a41dc0010e8061a201441e0006a200241e8006a41840110e8061a20024100360234200220143602300240024020142f01062212450d0020124103742101201441086a2100417f21160340024020010d00201221160c020b200241c0006a2000410810ea06220a450d02200141786a2101201641016a2116200041086a2100200a417f4a0d000b0b200242e2c289abb68edbb7f40037027c2002200f360278200220163602742002201436026c4100210a200241003602682002200241306a360270200241f0016a2013201510d405200241e8006a200241f0016a109b0220024180023b013c4101210c0c0b0b412d21014199efc00021000b2002200136026c2002200036026841f7efc0004122200241e8006a419cf0c00041acf0c000103e000b200d0d0020122903a0012118200241e8006a200241206a10d20502400240024020022802684101460d0020022903702109200241e8006a41186a22164200370300200e4200370300200241e8006a41086a220142003703002002420037036841d5a2ca00ad42808080809001841001220029000021192001200041086a290000370300200220193703682000102f41ecb0c000ad42808080803084100122002900002119200241c0006a41086a220a200041086a290000370300200220193703402000102f200e2002290340370000200e41086a200a290300370000200241f0016a41086a2001290300370300200241f0016a41106a200e290300370300200241f0016a41186a2016290300370300200220022903683703f0012002200241f0016a10e30102402018200942b0ea017c560d004100210c2018200229030842dc0b7c42dc0b20022802001b2209540d020c030b201a42808080807083211a41bcf0c000ad4280808080d0048421094101210c4100211b0c010b20022903702109200228026c211b4101210c201c42808080807083200235027884221c211a0b2002201a3703502002201b3602442002200c3602402002200937034802400240024020022d003d450d004131210141c6efc00021000c010b024002400240200c450d0020022802302002280234200228023810e4012002420037023420024190bdc600360230200242f4d2b59bc7ae98b8303703580c010b20022802302114200242f4d2b59bc7ae98b83037035820144190bdc600460d00200228023421130c010b2011410041da0010e7061a200241e8006a410041840110e7061a41e401102d2214450d0e4100211320144100360200201441046a200241f0016a41dc0010e8061a201441e0006a200241e8006a41840110e8061a20024100360234200220143602300b2009422088a7211d2009a7211e024003400240024020142f010622150d00410021160c010b20154103742101201441086a2100417f21160340024020010d00201521160c020b200241d8006a2000410810ea06220a450d03200141786a2101201641016a2116200041086a2100200a417f4a0d000b0b02402013450d002013417f6a2113201420164102746a41e4016a28020021140c010b0b200242f4d2b59bc7ae98b83037027c2002200f360278200220163602742002201436026c200241003602682002200241306a3602704101102d210102400240200c0d002001450d10200141003a000020014101410910312201450d102001200937000141092116410921000c010b2001450d0f200141013a0000200241f0016a201010ca0520022802f00121140240024020022802f801220a0d0041012116200a41016a21000c010b200a41016a2200200a490d1120004102200041024b1b22164100480d1120014101201610312201450d100b200141016a2014200a10e8061a20022802f401450d002014102f0b200220003602f801200220163602f401200220013602f001200241e8006a200241f0016a109b022002200c3a003d200241003a003c200c0d02200c450d03201b450d03201d450d03201e102f0c030b412d21014199efc00021000b200220003602682002200136026c41f7efc0004122200241e8006a419cf0c00041acf0c000103e000b2002280238210d2002280234210e2002280230210b201b450d02201d450d02201e102f0c020b201228029801210c0b200c4104470d03201241a4016a280200410b490d032002410d3602482002419387c70036024420024100360240024020022d003d450d004131210141c6efc00021000c030b20022802302002280234200228023810e4012002420037023420024190bdc600360230200242f5dc8de3d6ec9c9830370358200241f0016a410272410041da0010e7061a200241e8006a410041840110e7061a41e401102d2214450d0920144100360200201441046a200241f0016a41dc0010e8061a201441e0006a200241e8006a41840110e8061a200241003602342002201436023041002116024020142f01062213450d0020134103742101201441086a2100417f21160340024020010d00201321160c020b200241d8006a2000410810ea06220a450d03200141786a2101201641016a2116200041086a2100200a417f4a0d000b0b200242f5dc8de3d6ec9c983037027c2002200f360278200220163602742002201436026c200241003602682002200241306a3602704101102d2201450d09200141003a0000200241f0016a200241c0006a10ca0520022802f001210a0240024020022802f80122000d0041012114200041016a21160c010b200041016a22162000490d0b20164102201641024b1b22144100480d0b20014101201410312201450d0a0b4101210c200141016a200a200010e8061a024020022802f401450d00200a102f0b200220163602602002201436025c20022001360258200241e8006a200241d8006a109b0220024180023b013c2002280230210b2002280234210e2002280238210d0b4100210a0c070b412d21014199efc00021000b200220003602682002200136026c41f7efc0004122200241e8006a419cf0c00041acf0c000103e000b201241c8036a2212200b470d000c020b0b200241cc006a410436020020024184026a4102360200200242023702f401200241b8c2c8003602f0012002410436024420024194c4c80036024020024100360234200241c8e1ca003602302002200241c0006a360280022002200241306a360248200241f0016a41c8c2c8001043000b20022d003d210c20022d003c210a0b2002280238210d2002280234210e2002280230210b0b20022802202002280224200228022810e40102402007450d00200741246c21002003210103400240024020012d0000221641044b0d0002400240024020160e050400010204040b2001410c6a280200450d03200141086a280200102f0c030b2001410c6a280200450d02200141086a280200102f0c020b2001410c6a280200450d01200141086a280200102f0c010b200141086a280200450d00200141046a280200102f0b200141246a21012000415c6a22000d000b0b02402008450d002003102f0b02402004450d00200441c8036c210020064198016a210103402001108d01200141c8036a2101200041b87c6a22000d000b0b02402005450d002006102f0b20024100360270200242013703684101102d2201450d00200242818080801037026c200220013602682001200a3a000020014101410210312201450d00200242828080802037026c200220013602682001200c3a0001200d200241e8006a1069200b21010240200e450d00200e2100200b2101034020012802e40121012000417f6a22000d000b0b200d450d0241002114200d2115034002400240201420012f0106490d004100210a024003400240200128020022000d0041002116410021000c020b200a41016a210a20012f0104211620002101201620002f01064f0d000b0b201641016a21140240200a0d00200021010c020b200020144102746a41e4016a280200210141002114200a417f6a220a450d01034020012802e4012101200a417f6a220a0d000c020b0b2001210020142116201441016a21140b02400240200228026c22132002280270220a6b4108490d00200228026821130c010b200a41086a2212200a490d032013410174220c2012200c20124b1b22124100480d030240024020130d002012102d21130c010b200228026820132012103121130b2013450d022002201236026c200220133602680b2002200a41086a3602702013200a6a200020164103746a41086a290000370000200041e0006a2016410c6c6a2200280200211320002802082200200241e8006a106902400240200228026c220a200228027022166b2000490d002002280268210a0c010b201620006a22122016490d03200a410174220c2012200c20124b1b22124100480d0302400240200a0d002012102d210a0c010b2002280268200a20121031210a0b200a450d022002201236026c2002200a3602680b2002201620006a2212360270200a20166a2013200010e8061a2015417f6a22150d000c040b0b1036000b1038000b200228027021122002280268210a0b200b200e200d10e401200241d0026a24002012ad422086200aad840f0b200241f0016a410c6a4104360200200241fc006a41023602002002420237026c200241b8c2c800360268200241043602f40120024194c4c8003602f00120024100360244200241c8e1ca003602402002200241f0016a3602782002200241c0006a3602f801200241e8006a41c8c2c8001043000bcd0301057f024002400240200241046a2203417f4c0d00024002400240024002400240024002402003450d002003102d2204450d09200241c000490d04200241808001490d052002418080808004490d06200441033a00002003417f6a41034d0d01200321050c030b410121034101102d2204450d08200441033a0000410521050c010b200341017422064105200641054b1b22054100480d080b20042003200510312204450d060b20042002360001410521060c030b200420024102743a000041012106200321050c020b02400240200341014d0d00200321050c010b20042003200341017422064102200641024b1b220510312204450d040b41022106200420024102744101723b00000c010b02400240200341034d0d00200321050c010b200341017422064104200641044b1b22054100480d0420042003200510312204450d030b20042002410274410272360000410421060b02400240200520066b2002490d00200521030c010b200620026a22032006490d03200541017422072003200720034b1b22034100480d0320042005200310312204450d020b200420066a2001200210e8061a2000200620026a36020820002003360204200020043602000f0b103d000b1036000b1038000bb90101067f230041206b22022400200241c8e1ca00410010ac0402404120102d2203450d0020032002290300370000200341186a2204200241186a290300370000200341106a2205200241106a290300370000200341086a2206200241086a2903003700004120102d2207450d0020072003290000370000200741186a2004290000370000200741106a2005290000370000200741086a20062900003700002003102f200241206a24002007ad42808080808004840f0b1036000b8f3e05037f017e067f057e067f230041f0116b22022400024002402001450d00200220003602100c010b200241c8e1ca003602100b20022001360214200241e80a6a200241106a10a4040240024002400240024002400240024020022903d00b4203510d00200241d0006a200241e80a6a41c80310e8061a20024198046a200241d0006a41c80310e8061a200220024198046a3602e007200241e80a6a200241e0076a10a90320022802f00a2103024020022802ec0a450d0020022802e80a102f0b200241e80a6a20024198046a41c80310e8061a200241e0076a200241e80a6a10d10341012100024020022d00e0074101460d00200241e80a6a200241e0076a41086a220141800310e8061a200241b00e6a200241b80b6a220410f10220022903b00e210502400240024020022903880b4202520d00200241186a41206a22014200370300200241186a41186a22004280808080c000370300200241013a0040200242043703282002427f37032020024200370318200241e0076a41206a22064200370300200241e0076a41186a22074280808080c000370300200241013a008808200242043703f0072002427f3703e807200242003703e007200241a00f6a200241186a200241e0076a10d705200241186a41286a2208200241a00f6a41286a2903003703002001200241a00f6a41206a2903003703002000200241a00f6a41186a290300370300200241186a41106a2209200241a00f6a41106a290300370300200241186a41086a220a200241a00f6a41086a290300370300200220022903a00f3703182006420037030020074280808080c000370300200241013a008808200242043703f0072002427f3703e807200242003703e007200241d00f6a200241186a200241e0076a10d7052008200241d00f6a41286a2903003703002001200241d00f6a41206a2903003703002000200241d00f6a41186a2903003703002009200241d00f6a41106a290300370300200a200241d00f6a41086a290300370300200220022903d00f3703182006420037030020074280808080c000370300200241013a008808200242043703f0072002427f3703e807200242003703e00720024180106a200241186a200241e0076a10d705200820024180106a41286a290300370300200120024180106a41206a290300370300200020024180106a41186a290300370300200920024180106a41106a290300370300200a20024180106a41086a29030037030020022002290380103703182006420037030020074280808080c000370300200241013a008808200242043703f0072002427f3703e807200242003703e007200241b0106a200241186a200241e0076a10d705200241c0116a41286a200241b0106a41286a290300370300200241c0116a41206a220b200241b0106a41206a290300370300200241c0116a41186a220a200241b0106a41186a290300370300200241c0116a41106a200241b0106a41106a290300370300200241c0116a41086a200241b0106a41086a290300370300200220022903b0103703c0112002200537039011200241e0076a20024190116a200310a604024020022d00e0074101470d0020022d00e307210620022f00e107210720022802d01121030240200a2802002201450d002001410c6c21002003210103400240200141046a280200450d002001280200102f0b2001410c6a2101200041746a22000d000b0b0240200241d4116a280200450d002003102f0b20022802dc1121030240200241e4116a2802002201450d002001410c6c21002003210103400240200141046a280200450d002001280200102f0b2001410c6a2101200041746a22000d000b0b0240200241e0116a280200450d002003102f0b4101450d02200720064110747221010c080b200820024190086a2903003703002001200241e0076a41286a2903003703002000200629030037030020092007290300370300200241186a41086a2203200241e0076a41106a290300370300200220022903e807370318200241e0106a200241c0116a200241186a10d7052008200241e0106a41286a2903003703002001200241e0106a41206a2903003703002000200241e0106a41186a2903003703002009200241e0106a41106a2903003703002003200241e0106a41086a290300370300200220022903e0103703182006420037030020074280808080c000370300200241013a008808200242043703f0072002427f3703e807200242003703e00720024190116a200241186a200241e0076a10d705200820024190116a41286a290300370300200120024190116a41206a290300370300200020024190116a41186a290300370300200920024190116a41106a290300370300200320024190116a41086a29030037030020022002290390113703182006420037030020074280808080c000370300200241013a008808200242043703f0072002427f3703e807200242003703e007200241c0116a200241186a200241e0076a10d705200241fc0e6a200241c0116a41086a290300370200200220022903c0113702f40e41000d07200241d4116a2802002108200a2802002101200b2802002109200241e4116a280200210320022802d011210620022802dc11210720022903e81121050c020b200241186a41206a22064200370300200241186a41186a22074280808080c000370300200241013a004020024204370328427f210c2002427f37032020024200370318200241e0076a41206a22084200370300200241e0076a41186a22004280808080c000370300200241013a008808200242043703f0072002427f3703e807200242003703e007200241c00e6a200241186a200241e0076a10d705200241186a41286a2209200241c00e6a41286a2903003703002006200241c00e6a41206a2903003703002007200241c00e6a41186a290300370300200241186a41106a220a200241c00e6a41106a290300370300200241186a41086a220b200241c00e6a41086a290300370300200220022903c00e3703182008420037030020004280808080c000370300200241013a008808200242043703f0072002427f3703e807200242003703e007200241f00e6a200241186a200241e0076a10d7052009200241f00e6a41286a2903003703002006200241f00e6a41206a2903003703002007200241f00e6a41186a290300370300200a200241f00e6a41106a290300370300200b200241f00e6a41086a290300370300200220022903f00e37031820004200370300200241e0076a41106a2207420037030020014200370300200242003703e007418de6c300ad4280808080e00084220d10012206290000210e2001200641086a2900003703002002200e3703e0072006102f419ce6c300ad4280808080e0008410012206290000210e20024190116a41086a2209200641086a2900003703002002200e370390112006102f2007200229039011220e370300200241c0116a41086a2001290300370300200241c0116a41106a200e370300200241c0116a41186a2009290300370300200220022903e0073703c011200241086a200241c0116a4120109501200228020c410020022802081bad210e024020022903880b4201520d0020022903900b220c4200510d05200e200241980b6a290300220f200f200e541b2210200c7c2010200f7d200c827d210c0b2008420037030020004280808080c000370300200241013a008808200242043703f007200242003703e00720024200200c200e7d220e200e200c561b3703e807200241a00f6a200241186a200241e0076a10d70520024190116a41286a200241a00f6a41286a29030037030020024190116a41206a200241a00f6a41206a29030037030020024190116a41186a200241a00f6a41186a29030037030020024190116a41106a200241a00f6a41106a29030037030020024190116a41086a200241a00f6a41086a290300370300200220022903a00f3703901120022802b00b2106200d10012201290000210c200241e0106a41086a200141086a2900003703002002200c3703e0102001102f41f0e8c600ad4280808080f0008410012201290000210c200241186a41086a200141086a2900003703002002200c3703182001102f4120102d2201450d09200120022903e80a370000200141186a200241e80a6a41186a290300370000200141106a200241e80a6a41106a290300370000200141086a200241e80a6a41086a2903003700002001ad428080808080048410032200290000210c200041086a290000210e200041106a290000210d200241e0076a41186a2207200041186a290000370300200241e0076a41106a2208200d370300200241e0076a41086a200e3703002002200c3703e0072000102f2001102f41c000102d2201450d09200120022903e01037000020012002290318370010200120022903e007370020200141086a200241e0106a41086a290300370000200141186a200241186a41086a290300370000200141286a200241e0076a41086a290300370000200141306a2008290300370000200141386a2007290300370000200241e0076a200110f602200241a8086a280200210020022903e007210c2001102f024002400240024020004100200c4201511b220720064b0d00410c102d2200450d0d4104102d2201450d0d20014104412010312201450d0d200120022903e80a370000200141186a200241e80a6a41186a290300370000200141106a200241e80a6a41106a290300370000200141086a200241e80a6a41086a2903003700002001412041c00010312201450d0d20012006360020200042c0808080c004370204200020013602000240024020072006490d0041002101410421070c010b410c102d2207450d0e4104102d2201450d0e20014104412010312201450d0e200120022903e80a370000200141186a200241e80a6a41186a290300370000200141106a200241e80a6a41106a290300370000200141086a200241e80a6a41086a2903003700002001412041c00010312201450d0e20012006417f6a360020200742c0808080c00437020420072001360200410121010b200241c0116a41206a2206428180808010370300200241c0116a41186a22082001360200200241d4116a2001360200200220022800b0103602b80e2002200241b3106a2800003600bb0e200241ec116a20022800bb0e360000200220003602dc11200220073602d0112002427f3703c8112002200542ffffffff0f833703c011200220022802b80e3600e911200241013a00e811200241d00f6a20024190116a200241c0116a10d70520024190116a41286a2200200241d00f6a41286a29030037030020024190116a41206a2207200241d00f6a41206a29030037030020024190116a41186a2201200241d00f6a41186a29030037030020024190116a41106a2209200241d00f6a41106a29030037030020024190116a41086a220a200241d00f6a41086a290300370300200220022903d00f3703901120022005370318200241e0076a200241186a200310a60420022d00e0074101460d01200241c0116a41286a20024190086a220b2903003703002006200241e0076a41286a2903003703002008200241e0076a41206a290300370300200241c0116a41106a200241e0076a41186a290300370300200241c0116a41086a200241e0076a41106a290300370300200220022903e8073703c01120024180106a20024190116a200241c0116a10d705200020024180106a41286a290300370300200720024180106a41206a290300370300200120024180106a41186a290300370300200920024180106a41106a290300370300200a20024180106a41086a29030037030020022002290380103703901120022005370318200241e0076a20022903a00b200241a80b6a290300200241e80a6a200241186a200310d40320022d00e0074101460d02200241c0116a41286a2201200b290300370300200241c0116a41206a2200200241e0076a41286a2203290300370300200241c0116a41186a2206200241e0076a41206a2207290300370300200241c0116a41106a2208200241e0076a41186a2209290300370300200241c0116a41086a220a200241e0076a41106a220b290300370300200220022903e8073703c011200241b0106a20024190116a200241c0116a10d70520024190116a41286a200241b0106a41286a29030037030020024190116a41206a200241b0106a41206a29030037030020024190116a41186a2211200241b0106a41186a29030037030020024190116a41106a200241b0106a41106a29030037030020024190116a41086a200241b0106a41086a290300370300200220022903b01037039011200241e0076a200410e20120022d00e0074101460d032001200241e0076a41306a290300370300200020032903003703002006200729030037030020082009290300370300200a200b290300370300200220022903e8073703c011200241e0106a20024190116a200241c0116a10d705200241186a41086a20022903e010370300200241186a41106a200241e0106a41086a290300370300200241186a41186a200241e0106a41106a290300370300200241186a41206a200241e0106a41186a290300370300200241186a41286a200241e0106a41206a290300370300200241186a41306a200241e0106a41286a290300370300200241003a00180c0b0b200220022800b0103602b80e2002200241b3106a2800003600bb0e200241003a001b20024180063b0019200241013a001820022802a01121030240200241a8116a2802002201450d002001410c6c21002003210103400240200141046a280200450d002001280200102f0b2001410c6a2101200041746a22000d000b0b0240200241a4116a280200450d002003102f0b20022802ac1121030240200241b4116a2802002201450d002001410c6c21002003210103400240200141046a280200450d002001280200102f0b2001410c6a2101200041746a22000d000b0b200241b0116a280200450d0a2003102f0c0a0b200220022d00e3073a001b200220022f00e1073b0019200241013a001820022802a0112103024020012802002201450d002001410c6c21002003210103400240200141046a280200450d002001280200102f0b2001410c6a2101200041746a22000d000b0b0240200241a4116a280200450d002003102f0b20022802ac1121030240200241b4116a2802002201450d002001410c6c21002003210103400240200141046a280200450d002001280200102f0b2001410c6a2101200041746a22000d000b0b200241b0116a280200450d092003102f0c090b200220022d00e3073a001b200220022f00e1073b0019200241013a001820022802a01121030240200241a8116a2802002201450d002001410c6c21002003210103400240200141046a280200450d002001280200102f0b2001410c6a2101200041746a22000d000b0b0240200241a4116a280200450d002003102f0b20022802ac1121030240200241b4116a2802002201450d002001410c6c21002003210103400240200141046a280200450d002001280200102f0b2001410c6a2101200041746a22000d000b0b200241b0116a280200450d082003102f0c080b200220022d00e3073a001b200220022f00e1073b0019200241013a001820022802a0112103024020112802002201450d002001410c6c21002003210103400240200141046a280200450d002001280200102f0b2001410c6a2101200041746a22000d000b0b0240200241a4116a280200450d002003102f0b20022802ac1121030240200241b4116a2802002201450d002001410c6c21002003210103400240200141046a280200450d002001280200102f0b2001410c6a2101200041746a22000d000b0b200241b0116a280200450d072003102f0c070b0b200241c80e6a200241fc0e6a290200370300200220022902f40e3703c00e0240024020022802b80b4113460d00200241003a00e307418102210020024181023b00e107200241013a00e0070c010b200241e0076a200241bc0b6a10a20320022d00e0074101470d0420022f00e10720022d00e3074110747221000b200241013a0018200220003b0019200220004110763a001b02402001450d002001410c6c21002006210103400240200141046a280200450d002001280200102f0b2001410c6a2101200041746a22000d000b0b02402008450d002006102f0b02402003450d002003410c6c21002007210103400240200141046a280200450d002001280200102f0b2001410c6a2101200041746a22000d000b0b2009450d052007102f0c050b200220022d00e3073a001b200220022f00e1073b0019200241013a00180c050b200241dc006a4104360200200241ac046a41023602002002420237029c04200241b8c2c8003602980420024104360254200241acc4c800360250200241003602e407200241c8e1ca003602e0072002200241d0006a3602a8042002200241e0076a36025820024198046a41c8c2c8001043000b41d0caca00411941eccaca001039000b200241e0106a41286a2200200241e0076a41306a290300370300200241e0106a41206a220a200241e0076a41286a220b290300370300200241e0106a41186a2211200241e0076a41206a2212290300370300200241e0106a41106a2213200241e0076a41186a2214290300370300200241e0106a41086a2215200241e0076a41106a2216290300370300200220022903e8073703e010200241c0116a41086a200241c00e6a41086a290300370300200241e4116a2003360200200241c0116a41206a2009360200200241c0116a41186a2001360200200241d4116a2008360200200220022903c00e3703c011200220053703e811200220073602dc11200220063602d011200b20002903003703002012200a2903003703002014201129030037030020162013290300370300200241e0076a41086a2015290300370300200220022903e0103703e00720024190116a200241c0116a200241e0076a10d705200241186a41086a200229039011370300200241186a41106a20024190116a41086a290300370300200241186a41186a20024190116a41106a290300370300200241186a41206a20024190116a41186a290300370300200241186a41286a20024190116a41206a290300370300200241186a41306a20024190116a41286a290300370300200241003a00180c010b200241013a0018200220013b0019200220014110763a001b0b2004108e0120022d001821000b4101102d2201450d00200242013702ec0a200220013602e80a02400240200041ff01714101470d00200241013602f00a200141013a0000200241186a410172200241e80a6a10a10320022802f00a210020022802e80a21010c010b200241013602f00a200141003a0000200241206a2903002105024020022802ec0a2200417f6a41074b0d00200041017422034109200341094b1b22034100480d0320012000200310312201450d02200220033602ec0a200220013602e80a0b200241093602f00a20012005370001200241306a2802002100200241386a2802002201200241e80a6a106902402001450d0020002001410c6c6a2109034020002802002107200041086a2802002201200241e80a6a10690240024020022802ec0a220620022802f00a22036b2001490d0020022802e80a21060c010b200320016a22082003490d05200641017422042008200420084b1b22084100480d050240024020060d002008102d21060c010b20022802e80a20062008103121060b2006450d04200220083602ec0a200220063602e80a0b2002200320016a3602f00a200620036a2007200110e8061a2000410c6a22002009470d000b0b2002413c6a2802002100200241c4006a2802002201200241e80a6a10690240024020010d0020022802ec0a210620022802f00a21090c010b20002001410c6c6a2104034020002802002108200041086a2802002201200241e80a6a10690240024020022802ec0a220620022802f00a22036b2001490d0020022802e80a21070c010b200320016a22072003490d05200641017422092007200920074b1b22094100480d050240024020060d002009102d21070c010b20022802e80a20062009103121070b2007450d04200220093602ec0a200220073602e80a200921060b2002200320016a22093602f00a200720036a2008200110e8061a2000410c6a22002004470d000b0b200241286a290300210502400240200620096b4108490d0020022802e80a21010c010b200941086a22012009490d03200641017422002001200020014b1b22004100480d030240024020060d002000102d21010c010b20022802e80a20062000103121010b2001450d02200220003602ec0a200220013602e80a200021060b2002200941086a3602f00a200120096a2005370000200241c8006a2d000021070240200620022802f00a2203470d00200641016a22002006490d03200641017422082000200820004b1b22004100480d030240024020060d002000102d21010c010b200120062000103121010b2001450d02200220003602ec0a200220013602e80a0b2002200341016a22003602f00a200120036a20073a00000b2000ad4220862001ad842105024020022d00180d000240200241386a2802002200450d00200241306a28020021012000410c6c210003400240200141046a280200450d002001280200102f0b2001410c6a2101200041746a22000d000b0b0240200241346a280200450d002002280230102f0b0240200241c4006a2802002200450d002002413c6a28020021012000410c6c210003400240200141046a280200450d002001280200102f0b2001410c6a2101200041746a22000d000b0b200241c0006a280200450d00200228023c102f0b200241f0116a240020050f0b1036000b1038000bc80505017f027e077f017e017f230041206b220324002002290300210420012903002105200141106a210620022802102107024002400240024002400240200141146a2802002208200141186a28020022096b200241186a280200220a490d00200628020021080c010b2009200a6a220b2009490d022008410174220c200b200c200b4b1bad420c7e220d422088a70d02200da7220b4100480d020240024020080d00200b102d21080c010b20062802002008410c6c200b103121080b2008450d0120012008360210200141146a200b410c6e3602000b20082009410c6c6a2007200a410c6c10e8061a200141186a2009200a6a36020020024100360218200341086a200641086a280200360200200320062902003703002001411c6a2106200228021c210b02400240200141206a2802002208200141246a28020022096b200241246a280200220a490d00200628020021080c010b2009200a6a220c2009490d022008410174220e200c200e200c4b1bad420c7e220d422088a70d02200da7220c4100480d020240024020080d00200c102d21080c010b20062802002008410c6c200c103121080b2008450d012001200836021c200141206a200c410c6e3602000b427f200520047c220420042005541b210520082009410c6c6a200b200a410c6c10e8061a200141246a2009200a6a36020020024100360224200341106a41086a200641086a28020036020020032006290200370310200229030822042001290308220d200d2004561b210420012d0028450d024101210120022d0028450d020c030b1036000b1038000b410021010b20002005370300200020032903003702102000200329031037021c200020013a002820002004370308200041186a200341086a280200360200200041246a200341106a41086a2802003602000240200241146a280200450d002007102f0b0240200241206a280200450d00200b102f0b200341206a24000b9d3008057f027e077f017e037f017e137f017e230022022103200241a0046b41607122042400024002402001450d00200420003602380c010b200441c8e1ca003602380b2004200136023c200441b0026a200441386a10f6030240024002400240024002400240024020042802b402450d00200441c0006a200441b0026a41f00010e8061a200441b0016a200441c0006a10ba032004280240200441d0006a20044190016a200441b0016a410010ce03410041002802a8e24a2201410120011b3602a8e24a0240200141014b0d000240024020010e020001000b410041b4a5c0003602b0e24a410041c8e1ca003602ace24a410041023602a8e24a0c010b034041002802a8e24a4101460d000b0b2004410020042802402201417f6a2202200220014b1b22053602bc0110214101470d01200441b0026a41186a22064200370300200441b0026a41106a22024200370300200441b0026a41086a22014200370300200442003703b00241d39bca00ad428080808080018422071001220029000021082001200041086a290000370300200420083703b0022000102f41bdc5c300ad4280808080e00184100122092900002108200441e8016a41086a2200200941086a290000370300200420083703e8012009102f200220042903e8012208370300200441c0036a41086a220a2001290300370300200441c0036a41106a220b2008370300200441c0036a41186a220c2000290300370300200420042903b0023703c003200441306a200441c0036a412010950102402004280234410020042802301b220920054d0d0041002100200441c0036a21010c060b200642003703002002420037030020014200370300200442003703b002419c9eca00ad4280808080f000841001220929000021082001200941086a290000370300200420083703b0022009102f41a39eca00ad4280808080c001841001220929000021082000200941086a290000370300200420083703e8012009102f200220042903e8012208370300200a2001290300370300200b2008370300200c2000290300370300200420042903b0023703c003200441286a200441c0036a4120109501200428022c210d2004280228210e200642003703002002420037030020014200370300200442003703b00220071001220929000021082001200941086a290000370300200420083703b0022009102f419087ca00ad4280808080c000841001220929000021082000200941086a290000370300200420083703e8012009102f200220042903e8012208370300200a2001290300370300200b2008370300200c2000290300370300200420042903b0023703c003200441b0026a200441c0036a108d0320042802b002210f20042902b4022110200441b0026a41e9dabdf30610d90520042802b002210920042802b402210b024002400240024020042802b80222010d004101211141002112410021130c010b2001410574220a410575220241ffffff3f712002470d0a200a4100480d0a200a102d2211450d012009200a6a210c20014105742106410021010340200920016a22022900002108200241086a2900002107200241106a2900002114201120016a220041186a200241186a290000370000200041106a2014370000200041086a2007370000200020083700002006200141206a2201470d000b200a4105762112200c20096b41606a41057641016a21130b0240200b450d002009102f0b20134115490d054101450d0120134104744160712201417f4c0d012001102d2215450d00201141606a2116201141a07f6a211720014105762118410421194100211a4100211b4100211c2013211d0340201d210a4100211d410121060240200a417f6a2200450d00024002400240024002400240201120004105746a200a410574220b20116a41406a412010ea064100480d00200a417e6a21092017200b6a21014100211d410021020340024020092002470d00200a21060c080b200241016a2102200141206a2001412010ea062100200141606a21012000417f4a0d000b200241016a21062002417f73200a6a21000c010b2017200b6a210102400340024020004101470d00410021000c020b2000417f6a2100200141206a2001412010ea062102200141606a210120024100480d000b0b200a2000490d01200a20134b0d03200a20006b22064101762209450d002016200b6a2101201120004105746a21020340200441b0026a41186a220b200241186a220c290000370300200441b0026a41106a221e200241106a221f290000370300200441b0026a41086a2220200241086a2221290000370300200420022900003703b002200141086a22222900002108200141106a22232900002107200141186a221d290000211420022001290000370000200c2014370000201f200737000020212008370000201d200b2903003700002023201e29030037000020222020290300370000200120042903b002370000200141606a2101200241206a21022009417f6a22090d000b0b024020000d002000211d0c050b0240200641094d0d002000211d0c050b200a20134b0d01200a20006b2109201120004105746a210b0340200a2000417f6a221d490d040240200a201d6b22064102490d00201120004105746a22012011201d4105746a2200412010ea06417f4a0d00200441b0026a41186a2220200041186a2202290000370300200441b0026a41106a2221200041106a220c290000370300200441b0026a41086a2222200041086a221e290000370300200420002900003703b00220002001290000370000201e200141086a290000370000200c200141106a2900003700002002200141186a2900003700004101211f024020064103490d00200041c0006a200441b0026a412010ea06417f4a0d0041022102200b210102400340200141186a200141386a290000370000200141106a200141306a290000370000200141086a200141286a2900003700002001200141206a220c29000037000020092002460d01200141c0006a211e2002211f200c2101200241016a2102201e200441b0026a412010ea06417f4a0d020c000b0b2002211f0b2000201f4105746a220120042903b002370000200141186a2020290300370000200141106a2021290300370000200141086a20222903003700000b201d450d05200b41606a210b200941016a2109201d21002006410a4f0d050c000b0b2000200a104b000b200a2000417f6a221d490d010b200a2013104a000b201d200a104b000b0240201c201a470d00201a41016a2201201a490d0b201a41017422022001200220014b1b220141ffffffff01712001470d0b200141037422014100480d0b02400240201a0d002001102d21190c010b2019201a4103742001103121190b2019450d022001410376211a201b211c0b2019201c4103746a220120063602042001201d360200201b41016a221c211b0240201c4102490d000240034002400240024002402019201c417f6a221b4103746a2201280200450d00201c41037420196a220941746a2802002200200128020422024d0d000240201c41024b0d00201c211b4102211c201d450d0d0c080b2019201c417d6a22204103746a2802042201200220006a4d0d010240201c41034b0d00201c211b4103211c201d450d0d0c080b200941646a280200200120006a4d0d01201c211b0c060b201c4103490d01200128020421022019201c417d6a22204103746a28020421010b20012002490d010b201c417e6a21200b024002400240024002400240201c202041016a22244b2225450d00201c20204b2226450d01201920204103746a2221280204222720212802006a2201201920244103746a22222802002223490d02200120134b0d03201120234105746a221e2022280204221f41057422026a210920014105742100200120236b220a201f6b2201201f4f0d04201520092001410574220210e806220c20026a210602400240201f4101480d00200141014e0d010b20092101200c21020c060b201620006a21002009210103402000200141606a2209200641606a220a200a2009412010ea06410048220b1b2202290000370000200041186a200241186a290000370000200041106a200241106a290000370000200041086a200241086a2900003700002006200a200b1b21060240201e20092001200b1b2201490d00200c21020c070b200041606a2100200c2102200c2006490d000c060b0b41c4c2ca002024201c103b000b41c4c2ca002020201c103b000b20232001104b000b20012013104a000b2015201e200210e806220c20026a210602400240201f4101480d00200a201f4a0d010b201e2101200c21020c010b201120006a210b200c2102201e2101034020012009200220092002412010ea06410048220a1b2200290000370000200141186a200041186a290000370000200141106a200041106a290000370000200141086a200041086a2900003700002002200241206a200a1b2102200141206a2101200941206a2009200a1b2209200b4f0d01200620024b0d000b0b20012002200620026b41607110e8061a02402026450d0020212023360200202141046a2027201f6a3602002025450d022022202241086a201c2024417f736a41037410e9061a201b211c201b41014d0d030c010b0b419cc3ca002020201c103b000b41b8e3c300411d41f8b4ca001039000b201d450d050c000b0b1036000b103d000b200441cc036a4104360200200441d4006a410236020020044202370244200441b8c2c800360240200441043602c403200441c8c4c8003602c003200441003602ec01200441c8e1ca003602e8012004200441c0036a3602502004200441e8016a3602c803200441c0006a41c8c2c8001043000b41002802a4e24a4105490d042004412e3602c4032004200441bc016a3602c00341002802b0e24a210141002802ace24a210241002802a8e24a2100200441f0026a41e502360200200441e8026a42c580808010370300200441e4026a4188ccc300360200200441dc026a4210370200200441d8026a41f8cbc300360200200441d0026a4201370300200441c0026a4202370300200441b0026a41086a4108360200200441cc026a200441c0036a360200200441e0cbc3003602bc02200441f0cbc3003602b402200441053602b002200241cca5c000200041024622001b200441b0026a200141e4a5c00020001b2802101102000c040b0240201a450d002019102f0b2018450d012015102f0c010b20134102490d0020112013417f6a22024105746a21064101210003400240024002400240201320022201417f6a2202490d00201320026b220a4102490d03201120014105746a2201201120024105746a2209412010ea06417f4a0d03200441b0026a41186a221c200941186a220b290000370300200441b0026a41106a221f200941106a220c290000370300200441b0026a41086a2219200941086a221e290000370300200420092900003703b00220092001290000370000201e200141086a290000370000200c200141106a290000370000200b200141186a29000037000041012101200a4103490d02200941c0006a200441b0026a412010ea06417f4a0d024100210a200621010340200141186a200141386a290000370000200141106a200141306a290000370000200141086a200141286a2900003700002001200141206a220c2900003700002000200a220b460d02200b417f6a210a200141c0006a211e200c2101201e200441b0026a412010ea06417f4a0d020c000b0b20022013104b000b4102200b6b21010b200920014105746a220120042903b002370000200141186a201c290300370000200141106a201f290300370000200141086a20192903003700000b200641606a21062000417f6a210020020d000b0b200420053602dc032004200d4100200e1b22013602d803200420133602d403200420123602d003200420113602cc03200441003602c803200420053602cc02200420013602c802200420133602c402200420123602c002200420113602bc02200441003602b8022004200f4101200f1b22003602b002200420003602c0032004200020104200200f1b2208422088a74105746a22013602b402200420013602c4032008a72109200441c0036a21010b20044190026a41086a2206200141086a29020037030020044190026a41106a220a200141106a29020037030020044190026a41186a220b200141186a290200370300200441e8016a41086a220c200441b0026a41086a221e290200370300200441e8016a41106a221c200441b0026a41106a221f290200370300200441e8016a41186a2219200441b0026a41186a2202290200370300200441e8016a41206a2220200441b0026a41206a22212802003602002004200129020037039002200420042902b0023703e801200441c0016a41206a2201200441c0036a41206a280200360200200441c0016a41186a2222200441c0036a41186a290200370300200441c0016a41106a2223200441c0036a41106a290200370300200441c0016a41086a221d200441c0036a41086a290200370300200420042902c0033703c001200420093602b402200420003602b002201e200429039002370300201f20062903003703002002200a2903003703002021200b290300370300200441003602d802200441dc026a20042903e801370200200441e4026a200c290300370200200441ec026a201c290300370200200441f4026a2019290300370200200441fc026a20202802003602002004410036028003200441a4036a20012802003602002004419c036a202229030037020020044194036a20232903003702002004418c036a201d29030037020020044184036a20042903c00137020020044180036a211e200441d8026a2106200441e0026a210a200441e8026a210b200441f0026a210c4100210103400240024002400240024002402001450d00200441206a200610a403200428022022014108460d00200428022421090c010b20022903002107200220042903d803370300200441003602c00320042903c0022114200420042903d0033703c00220042903b8022110200420042903c8033703b80220042903b0022108200420042903c00322283703b00202402008a72201450d0020042903d0022128024020042802d8022200450d00024020042802dc02450d002000102f0b20042802f002450d0020042802ec02102f0b200a2010370300200b2014370300200c2007370300200420083703d802200420283703f8020c060b200428028003450d01200441186a201e10a403200428021c2109200428021821010b200141796a220041014b0d02024020000e020400040b20042802b00221010c010b2028a721010b02402001450d00024020042802b402450d002001102f0b200441c8026a280200450d00200441c4026a280200102f0b024020042802d8022201450d00024020042802dc02450d002001102f0b20042802f002450d0020042802ec02102f0b2004280280032201450d03024020044184036a280200450d002001102f0b20044198036a280200450d0320044194036a280200102f0c030b200420013602a803200420093602ac0341002802a4e24a4104490d00200441363602bc032004412e3602b4032004200441a8036a3602b8032004200441bc016a3602b00341002802b0e24a210141002802ace24a210041002802a8e24a2109200441dc0236028004200442c5808080103703f80320044188ccc3003602f403200442103702ec03200441f8cbc3003602e803200442023703e003200442023703d003200441d0cbc3003602cc03200441083602c803200441f0cbc3003602c403200441043602c003200141e4a5c000200941024622091b28021021012004200441b0036a3602dc03200041cca5c00020091b200441c0036a20011102000b20042802d80221010c000b0b20042802b0012109024020042802b8012201450d00200141246c21022009210103400240024020012d0000220041044b0d0002400240024020000e050400010204040b2001410c6a280200450d03200141086a280200102f0c030b2001410c6a280200450d02200141086a280200102f0c020b2001410c6a280200450d01200141086a280200102f0c010b200141086a280200450d00200141046a280200102f0b200141246a21012002415c6a22020d000b0b024020042802b401450d002009102f0b0240200441c0006a410c6a2802002202450d0020042802442101200241246c210203400240024020012d0000220041044b0d0002400240024020000e050400010204040b2001410c6a280200450d03200141086a280200102f0c030b2001410c6a280200450d02200141086a280200102f0c020b2001410c6a280200450d01200141086a280200102f0c010b200141086a280200450d00200141046a280200102f0b200141246a21012002415c6a22020d000b0b0240200441c8006a280200450d002004280244102f0b2003240042010f0b1038000bb20503017f017e0b7f230041e0006b220224002002200136020c024002400240024002402002410c6a102a2203422088a722010d0020004100360208200042013702000c010b2002200136021420022003a722043602102002200241106a10e60120022802000d0320022802042205200228021422064105762201200120054b1b22014105742207417f4c0d010240024020010d00410121080c010b2007102d2208450d030b2001ad2103024002402005450d004100210903402006210a200241003a0058200941016a2109410021010240024002400340200a2001460d01200241386a20016a200228021022072d00003a00002002200741016a3602102002200141016a22073a00582007210120074120470d000b200241186a41186a220b200241386a41186a290300370300200241186a41106a220c200241386a41106a290300370300200241186a41086a220d200241386a41086a290300370300200220022903383703182003a72003422088a72201470d020240200141016a22062001490d002001410174220e20062006200e491b220641ffffff3f712006470d002006410574220641004e0d020b1038000b200241003602140240200141ff0171450d00200241003a00580b2003a7450d082008102f0c080b0240024020010d002006102d21080c010b200820014105742006103121080b2008450d062003428080808070832006410576ad8421030b200a20076b2106200820014105746a22012002290318370000200141186a200b290300370000200141106a200c290300370000200141086a200d29030037000020034280808080107c210320092005470d000b2002200a20076b3602140c010b2008450d040b20002003370204200020083602002004102f0b200241e0006a24000f0b103d000b1036000b41f4c8ca00412e200241386a41e4c8ca004180c8ca00103e000bac0604067f017e027f047e230041e0006b220224002002411436020c200241c7b4c600360208200241106a41c7b4c600ad4280808080c00284100210730240024020022802102203450d00200228021421042002200241186a2802002205360224200220033602200240024002402005450d0020022005417f6a3602242002200341016a36022020032d00002105200241c8006a200241206a10ee0320022802482206450d00200228024c2107200541ff01714101460d012007450d002006102f0b20024100360230200242013703282002410b36023c2002200241086a3602382002200241286a36024441012105200241dc006a41013602002002420137024c200241b885c7003602482002200241386a360258200241c4006a41d8dbc100200241c8006a103c1a200235023042208620023502288410080240200228022c450d002002280228102f0b410221070c010b200241d0006a3502004220862007ad84210841012107410021050b02402004450d002003102f0b20050d0020074101460d010240024002400240024020062802082203ad42287e2208422088a70d002008a72204417f4c0d0020062802002107024020040d002007200341286c6a210941082106200321050c020b024002402004102d2206450d002007200341286c6a2109200441286e220520034f0d032005410174220a2003200a20034b1b220a41286c22034100480d0102400240200441274b0d002003102d21060c010b2006200541286c2003103121060b20060d040b1036000b1038000b103d000b2003450d012005210a0b200920076b210942002108410021040340200720046a2203290300210b200341086a290300210c200341106a290300210d200341186a290300210e200620046a220541206a200341206a290300370300200541186a200e370300200541106a200d370300200541086a200c3703002005200b37030020084280808080107c21082009200441286a2204470d000b200a21050c010b420021080b20082005ad8421080c010b42002108410821060b200241c8006a20062008422088a710db042002350250422086200235024884210b02402008a7450d002006102f0b200241e0006a2400200b0ba30e05047f017e017f017e047f23004190016b22022400200241c8006a41186a22034200370300200241c8006a41106a22044200370300200241c8006a41086a220542003703002002420037034841aa87ca00ad4280808080c000842206100122072900002108200241286a41086a2209200741086a290000370300200220083703282007102f200520092903003703002002200229032837034841b887ca00ad4280808080b001841001220729000021082009200741086a290000370300200220083703282007102f200420022903282208370300200241f0006a41086a220a2005290300370300200241f0006a41106a220b2008370300200241f0006a41186a220c200929030037030020022002290348370370200241c8006a200241f0006a10990520022802482107200229024c21082003420037030020044200370300200542003703002002420037034820061001220329000021062009200341086a290000370300200220063703282003102f200520092903003703002002200229032837034841d987ca00ad4280808080a001841001220329000021062009200341086a290000370300200220063703282003102f200420022903282206370300200a2005290300370300200b2006370300200c200929030037030020022002290348370370200241c8006a200241f0006a10850420022d00482105200c200241e1006a290000370300200b200241d9006a290000370300200a200241d1006a290000370300200220022900493703700240024020054101460d00200241286a41186a4200370300200241286a41106a420037030020094200370300200242003703280c010b200241286a41186a200c290300370300200241286a41106a200b2903003703002009200a290300370300200220022903703703280b200241086a41086a200241286a41086a290300370300200241086a41106a200241286a41106a290300370300200241086a41186a200241286a41186a290300370300200220022903283703082002410036025020024201370348024002404108102d2209450d0020024288808080800137024c20022009360248200942b81737000020094108411010312209450d0020024290808080800237024c200942c8013700082002200936024802404110200228025022056b41074b0d00200541086a22042005490d024110410174220a2004200a20044b1b22044100480d020240024041100d002004102d21090c010b200941102004103121090b2009450d012002200436024c200220093602480b2002200541086a360250200920056a42013700000240200228024c2204200228025022056b41074b0d00200541086a220a2005490d022004410174220b200a200b200a4b1b220a4100480d020240024020040d00200a102d21090c010b20092004200a103121090b2009450d012002200a36024c200220093602480b2007410820071b21032002200541086a360250200920056a42043700002008420020071b2208422088a72209200241c8006a1069200228024c21042002280250210a02402009450d002003200941286c6a210c200321090340024002402004200a6b4120490d00200a41206a2105200228024821070c010b200a41206a2205200a490d04200441017422072005200720054b1b220b4100480d040240024020040d00200b102d21070c010b20022802482004200b103121070b2007450d032002200b36024c20022007360248200b21040b2007200a6a220a41186a200941186a290000370000200a41106a200941106a290000370000200a41086a200941086a29000037000020022005360250200a2009290000370000200941206a29030021060240200420056b41074b0d00200541086a220a2005490d042004410174220b200a200b200a4b1b220a4100480d040240024020040d00200a102d21070c010b20072004200a103121070b2007450d032002200a36024c20022007360248200a21040b2002200541086a220a360250200720056a2006370000200c200941286a2209470d000b0b024002402004200a6b4120490d00200228024821090c010b200a41206a2209200a490d02200441017422052009200520094b1b22054100480d020240024020040d002005102d21090c010b200228024820042005103121090b2009450d012002200536024c20022009360248200521040b2009200a6a220541086a200241086a41086a290300370000200541106a200241086a41106a290300370000200541186a200241086a41186a2903003700002002200a41206a220736025020052002290308370000024020042007470d00200441016a22052004490d022004410174220b2005200b20054b1b22054100480d020240024020040d002005102d21090c010b200920042005103121090b2009450d012002200536024c200220093602480b200920076a41013a0000200a41216aad4220862009ad84210602402008a7450d002003102f0b20024190016a240020060f0b1036000b1038000b2b02017e017f10fc03210202404108102d22030d001036000b200320023700002003ad42808080808001840bfb0a04047f017e0a7f017e230041a0016b22022400200241f8006a41186a4200370300200241f8006a41106a22034200370300200241f8006a41086a220442003703002002420037037841fe86ca00ad4280808080a002841001220529000021062004200541086a290000370300200220063703782005102f419087ca00ad4280808080c00084100122052900002106200241d8006a41086a2207200541086a290000370300200220063703582005102f200320022903582206370300200241086a41086a2004290300370300200241086a41106a2006370300200241086a41186a2007290300370300200220022903783703082002412036022c2002200241086a360228200241306a200241086aad42808080808004841002107302400240024002400240200228023022080d00410021070c010b200228023421092002200241306a41086a280200360244200220083602402002200241c0006a10e6010240024020022802000d002002280204220a2002280244220441057622052005200a4b1b220b4105742205417f4c0d0302400240200b0d00410121070c010b2005102d2207450d050b02400240200a450d004100210c034020042103200241003a009801200c220d41016a210c41002104024002400240034020032004460d01200241f8006a20046a200228024022052d00003a00002002200541016a3602402002200441016a22053a0098012005210420054120470d000b200241d8006a41186a220e200241f8006a41186a290300370300200241d8006a41106a220f200241f8006a41106a290300370300200241d8006a41086a2210200241f8006a41086a29030037030020022002290378370358200b200d470d02200d4101742204200c2004200c4b1b220441ffffff3f712004470d0b2004410574220441004e0d010c0b0b200241003602440240200441ff0171450d00200241003a0098010b200b0d040c050b02400240200d0d002004102d21070c010b2007200d4105742004103121070b2007450d082004410576210b0b200320056b21042007200d4105746a220d2002290358370000200d41186a200e290300370000200d41106a200f290300370000200d41086a2010290300370000200c200a470d000b2002200320056b3602440b200aad422086200bad84210620070d020c010b2007102f0b4100210720024100360260200242013703582002410b36024c2002200241286a3602482002200241d8006a3602542002418c016a41013602002002420137027c200241b885c7003602782002200241c8006a36028801200241d4006a41d8dbc100200241f8006a103c1a20023502604220862002350258841008200228025c450d002002280258102f0b2009450d002008102f0b2006420020071b2206422088a72204410574220c4104722205417f4c0d002005102d2203450d012007410120071b210b20024100360280012002200536027c200220033602782004200241f8006a10690240024020040d002002280280012105200228027821090c010b410020022802800122056b210720022802782109200228027c2103200b2104034002400240200320076a411f4d0d00200321080c010b200541206a22082005490d052003410174220a2008200a20084b1b22084100480d050240024020030d002008102d21090c010b200920032008103121090b2009450d040b200920056a22032004290000370000200341186a200441186a290000370000200341106a200441106a290000370000200341086a200441086a290000370000200741606a2107200541206a210520082103200441206a2104200c41606a220c0d000b2002200836027c2002200536028001200220093602780b2005ad4220862009ad84211102402006a7450d00200b102f0b200241a0016a240020110f0b103d000b1036000b1038000bbe0605037f027e017f027e027f230041b0016b2202240041002103200241003a0040200041c8e1ca0020011b2104024002400240034020012003460d01200241206a20036a200420036a2d00003a00002002200341016a22003a00402000210320004120470d000b200241186a200241206a41186a22012903002205370300200241106a200241206a41106a22042903002206370300200241086a200241206a41086a22072903002208370300200220022903202209370300200241f0006a41186a22002005370300200241f0006a41106a220a2006370300200241f0006a41086a220b200837030020022009370370418de6c300ad4280808080e0008410012203290000210520024190016a41086a200341086a29000037030020022005370390012003102f41f0e8c600ad4280808080f00084100122032900002105200241a0016a41086a200341086a290000370300200220053703a0012003102f4120102d22030d010c020b0240200341ff0171450d00200241003a00400b200241346a4102360200200241fc006a410436020020024202370224200241b8c2c80036022020024104360274200241e0c4c80036027020024100360204200241c8e1ca003602002002200241f0006a36023020022002360278200241206a41c8c2c8001043000b20032002290370370000200341186a2000290300370000200341106a200a290300370000200341086a200b2903003700002003ad4280808080800484100322002900002105200041086a2900002106200041106a29000021082001200041186a2900003703002004200837030020072006370300200220053703202000102f2003102f41c000102d2203450d002003200229039001370000200320022903a00137001020032002290320370020200341086a20024190016a41086a290300370000200341186a200241a0016a41086a290300370000200341286a200241206a41086a290300370000200341306a200241306a290300370000200341386a200241206a41186a290300370000200241206a200310f602200241e8006a2802002100200229032021052003102f4104102d2203450d0020032000410020054201511b360000200241b0016a24002003ad4280808080c000840f0b1036000bf30e03057f047e017f230041d0016b22022400024020010d0041c8e1ca0021000b200220003602102002200136021441002103200241003a00782001417f6a2104024002400240024002400240034020012003460d01200241d8006a20036a200020036a22052d00003a00002002200541016a3602102002200341016a22053a0078200220043602142004417f6a21042005210320054120470d000b200241186a41086a200241d8006a41086a290300370300200241186a41106a200241d8006a41106a290300370300200241186a41186a200241d8006a41186a2903003703002002200229035837031841002103200241003a0078200120056b2106200020056a2100417f2101034020062003460d02200241d8006a20036a200020036a22052d00003a00002002200420036b3602142002200541016a3602102002200341016a22053a00782001417f6a21012005210320054120470d000b200241386a41086a200241d8006a41086a290300370300200241386a41106a200241d8006a41106a290300370300200241386a41186a200241d8006a41186a29030037030020022002290358370338200420056b220441016a4110490d022002200020056a220341106a3602102002200441716a220536021420054108490d0320032900002107200341086a29000021082002200441696a3602142002200341186a360210200341106a2900002109200241086a200241106a10e60120022802080d0520022802142205200228020c22034f0d040c050b0240200341ff0171450d00200241003a00780b200241ec006a4102360200200241ac016a41043602002002420237025c200241b8c2c800360258200241043602a401200241f8c4c8003602a0012002410036023c200241c8e1ca003602382002200241a0016a3602682002200241386a3602a801200241d8006a41c8c2c8001043000b0240200341ff0171450d00200241003a00780b200241ec006a4102360200200241ac016a41043602002002420237025c200241b8c2c800360258200241043602a401200241f8c4c8003602a0012002410036023c200241c8e1ca003602382002200241a0016a3602682002200241386a3602a801200241d8006a41c8c2c8001043000b200241ac016a4104360200200241ec006a41023602002002420237025c200241b8c2c800360258200241043602a401200241f8c4c8003602a0012002410036028401200241c8e1ca00360280012002200241a0016a360268200220024180016a3602a801200241d8006a41c8c2c8001043000b200241ac016a4104360200200241ec006a41023602002002420237025c200241b8c2c800360258200241043602a401200241f8c4c8003602a0012002410036028401200241c8e1ca00360280012002200241a0016a360268200220024180016a3602a801200241d8006a41c8c2c8001043000b0240024002402003417f4c0d000240024020030d00410121040c010b200310332204450d03200420022802102201200310e8061a2002200520036b3602142002200120036a3602100b2004450d03200241a0016a41186a200241186a41186a290300370300200241a0016a41106a200241186a41106a290300370300200241a0016a41086a200241186a41086a290300370300200220022903183703a001200241d8006a41186a200241386a41186a290300370300200241d8006a41106a200241386a41106a290300370300200241d8006a41086a200241386a41086a2903003703002002200229033837035820022003ad220a422086200a843702c401200220043602c00120024180016a200241a0016a200241d8006a200720082009200241c0016a108302024002402002280280014101460d002002418c016a280200210520024180016a41086a280200210020024180016a41106a2d0000210120022802840121040c010b41002104024020024194016a280200450d0020024190016a280200102f0b0b20024100360260200242013703584101102d2103024002402004450d002003450d04200341003a0000200242818080801037025c2002200336025820034101410210312203450d04200320013a0001200242828080802037025c200220033602582005200241d8006a106902400240200228025c2203200228026022016b2005490d00200228025821030c010b200120056a22062001490d042003410174220b2006200b20064b1b22064100480d040240024020030d002006102d21030c010b200228025820032006103121030b2003450d052002200636025c200220033602580b2002200120056a2206360260200320016a2004200510e8061a2006ad42208621070c010b2003450d03200341013a0000200242818080801037025c2002200336025842808080801021070b20072003ad84210702402000450d002004450d002004102f0b200241d0016a240020070f0b103d000b1038000b1036000b200241ac016a4104360200200241ec006a41023602002002420237025c200241b8c2c800360258200241043602a401200241f8c4c8003602a0012002410036028401200241c8e1ca00360280012002200241a0016a360268200220024180016a3602a801200241d8006a41c8c2c8001043000bb51003067f037e017f230041f0016b2202240041002103200241003a00a801200041c8e1ca0020011b2104024002400240024002400240024002400240034020012003460d0120024188016a20036a200420036a2d00003a00002002200341016a22003a00a8012000210320004120470d000b200241086a41086a20024188016a41086a290300370300200241086a41106a20024188016a41106a290300370300200241086a41186a20024188016a41186a290300370300200220022903880137030841002103200241003a00a801200420006a2104200120006b2101034020012003460d0220024188016a20036a200420036a2d00003a00002002200341016a22003a00a8012000210320004120470d000b200241286a41086a220320024188016a41086a290300370300200241286a41106a220020024188016a41106a290300370300200241286a41186a220120024188016a41186a22052903003703002002200229038801370328200241e8006a41186a200241086a41186a290300370300200241e8006a41106a200241086a41106a290300370300200241e8006a41086a200241086a41086a29030037030020022002290308370368200241c8006a41186a2001290300370300200241c8006a41106a2000290300370300200241c8006a41086a20032903003703002002200229032837034820024188016a200241e8006a10e80120022d00880122034102460d03410121062003450d02410121030c040b0240200341ff0171450d00200241003a00a8010b2002419c016a4102360200200241f4006a41043602002002420237028c01200241b8c2c800360288012002410436026c20024180c5c8003602682002410036024c200241c8e1ca003602482002200241e8006a360298012002200241c8006a36027020024188016a41c8c2c8001043000b0240200341ff0171450d00200241003a00a8010b2002419c016a4102360200200241f4006a41043602002002420237028c01200241b8c2c800360288012002410436026c20024180c5c8003602682002410036024c200241c8e1ca003602482002200241e8006a360298012002200241c8006a36027020024188016a41c8c2c8001043000b41012103200241b4016a2802004102460d01200241a8016a280200220141164d0d02200241a4016a280200210720052802002100200241c8006aad4280808080800484100322032900002108200341086a2900002109200341106a290000210a20024188016a41186a200341186a29000037030020024188016a41106a200a37030020024188016a41086a200937030020022008370388012003102f200241e0016a2001ad4220862000ad84200141696aad422086200041176aad84410120024188016aad428080808080048410101073200241e0016a41086a280200210120022802e001210420022802e401210b41002103024020070d000c020b2000102f0c010b41012103410021060b41012100024002400240024020030d00200141066a410220041b2200417f4c0d052000450d010b2000102d2205450d054100210720024100360290012002200036028c0120022005360288012003450d012002410136029001200541013a0000200228028c01210120022802900121000240200641ff01714101460d000240024020012000460d0020022802880121010c010b200041016a22012000490d08200041017422052001200520014b1b22054100480d080240024020000d002005102d21010c010b20022802880120002005103121010b2001450d072002200536028c01200220013602880120022802900121000b2002200041016a36029001200120006a41003a00000c030b0240024020012000460d0020022802880121010c010b200041016a22012000490d07200041017422052001200520014b1b22054100480d070240024020000d002005102d21010c010b20022802880120002005103121010b2001450d062002200536028c01200220013602880120022802900121000b2002200041016a36029001200120006a41013a00000c020b200241003602900120024201370388014101102d2205450d042002410136028c01200220053602880120022802900121070b2002200741016a36029001200520076a41003a0000200228028c0121052002280290012100024020040d000240024020052000460d0020022802880121010c010b200041016a22012000490d06200041017422052001200520014b1b22054100480d060240024020000d002005102d21010c010b20022802880120002005103121010b2001450d052002200536028c01200220013602880120022802900121000b2002200041016a36029001200120006a41003a00000c010b0240024020052000460d0020022802880121050c010b200041016a22052000490d05200041017422072005200720054b1b22074100480d050240024020000d002007102d21050c010b20022802880120002007103121050b2005450d042002200736028c01200220053602880120022802900121000b2002200041016a36029001200520006a41013a0000200120024188016a106902400240200228028c01220520022802900122006b2001490d0020022802880121050c010b200020016a22072000490d05200541017422002007200020074b1b22004100480d050240024020050d002000102d21050c010b20022802880120052000103121050b2005450d042002200036028c01200220053602880120022802900121000b2002200020016a36029001200520006a2004200110e8061a0b200235029001422086200235028801842108024020030d002004450d00200b450d002004102f0b200241f0016a240020080f0b41172001104b000b103d000b1036000b1038000ba00f04047f057e027f037e230041e0036b2202240041002103200241003a00b802200041c8e1ca0020011b2104024002400240024002400240034020012003460d0120024198026a20036a200420036a2d00003a00002002200341016a22003a00b8022000210320004120470d000b200241e8006a41186a20024198026a41186a22052903002206370300200241e8006a41106a20024198026a41106a22042903002207370300200241e8006a41086a20024198026a41086a220329030022083703002002200229039802220937036820024188016a41186a200637030020024188016a41106a200737030020024188016a41086a20083703002002200937038801200241a8016a20024188016a10e8014101210020022d00a801417f6a41ff01714102490d05200241a8016a41106a2903002109200241a8016a41086a2201290300210a200241cc016a280200210b200241d0016a280200210c420021062005420037030020044200370300200342003703002002420037039802418de6c300ad4280808080e000841001220029000021072003200041086a29000037030020022007370398022000102f419ce6c300ad4280808080e00084100122002900002107200241c0036a41086a2205200041086a290000370300200220073703c0032000102f200420022903c0032207370300200241f0026a41086a2003290300370300200241f0026a41106a2007370300200241f0026a41186a200529030037030020022002290398023703f002200241e0006a200241f0026a412010950141002002280264410020022802601b2203200c6b2200200020034b1b2204450d0420024198026a20024188016a108d0242002106200241d0006a200229039802220820024198026a41086a290300220d428080a8ec85afd1b101420010ee064200200bad22072002290350220e7d220f200f2007564200200241d0006a41086a2903002007200e54ad7c7d22074200522007501b22001b220e4200200720001b220784500d04420121062008428080d287e2bc2d544100200d501b0d04200241c0006a2004ad4200200e200710ed06200241306a2002290340200241c0006a41086a290300428080e983b1de16420010ed062008428080aef89dc3527c2206200a200a2006562009200d2006200854ad7c427f7c22065620092006511b22001b22072002290330220a2007200a542006200920001b2207200241306a41086a29030022095420072009511b22001b22062007200920001b220784500d0120024198026a20024188016a108d0220022903b802220a4200200820067d22092009200856200d20077d2008200654ad7d2208200d562008200d511b22041b220e58200241c0026a29030022094200200820041b220858200920085122041bad210d200a200e56200920085620041b0d032000450d020c030b0240200341ff0171450d00200241003a00b8020b200241ac026a4102360200200241b4016a41043602002002420237029c02200241b8c2c80036029802200241043602ac0120024194c5c8003602a801200241003602f402200241c8e1ca003602f0022002200241a8016a3602a8022002200241f0026a3602b00120024198026a41c8c2c8001043000b4201210d20000d010b20022006370380022002200737038802420321060c010b20024190026a200737030020022006370388022002200d37038002420221060b200241f0026a200141d00010e8061a200241c0036a41106a20024180026a41086a290300370300200241c0036a41186a20024180026a41106a290300370300200220063703c00320022002290380023703c80320024198026a20024188016a200241f0026a2003200241c0036a109f024101210141012100024020022d009802417f6a41ff01714102490d0020024198026a41106a290300210720024198026a41086a2903002109200241b4026a280200210420024198026a41186a280200210c200241bc026a3502002106200241f0026a20024188016a108d02200241206a20022903f0022208200241f0026a41086a290300220d428080a8ec85afd1b101420010ee06200241106a420020062002290320220a7d220e200e2006564200200241206a41086a2903002006200a54ad7c7d22064200522006501b22001b220a4200200620001b2206428080e983b1de16420010ed060240200a200684500d0002402008428080d287e2bc2d544100200d501b0d0020022008428080aef89dc3527c2206200920092006562007200d2006200854ad7c427f7c22065620072006511b22001b2006200720001b2002290310200241106a41086a29030010ee0620022903002206a7417f2006428080808010544100200241086a290300501b1b210002402004450d00200c102f0b200020036a210c41002101410021000c030b4196a7c400419b0141b4a8c4001055000b410021002004450d00200c102f0b0b02404101102d2203450d000240024002402000450d00200341013a000020034101410210312203450d03200341013a00010c010b200341003a000020034101410210312103024020014101460d002003450d03200341003a000120034102410610312203450d032003200c3600024280808080e00021060c020b2003450d02200341013a00010b42808080802021060b200241e0036a240020062003ad840f0b1036000bb00402027f027e230041c0076b22022400024002402001450d00200220003602100c010b200241c8e1ca003602100b20022001360214200241f8036a200241106a10a40402400240024020022903e0044203510d00200241186a200241f8036a41c80310e8061a200228021422014104490d0120022802102200280000210320022001417c6a3602142002200041046a360210200241f8036a200241186a41c80310e8061a200241e0036a20024190056a220110f1022002200320022903e0032204a722002004422888a74200420010f004200241086a29030021042002290300210520022d00e40321032001108e014104102d2201450d022001200036000020014104410810312201450d02200120033a000420014108411510312201450d02200120053700052001410d6a2004370000200241c0076a24002001ad4280808080d002840f0b200241ec036a41043602002002412c6a41023602002002420237021c200241b8c2c800360218200241043602e403200241acc5c8003602e003200241003602f403200241c8e1ca003602f0032002200241e0036a3602282002200241f0036a3602e803200241186a41c8c2c8001043000b200241ec036a41043602002002418c046a4102360200200242023702fc03200241b8c2c8003602f803200241043602e403200241acc5c8003602e003200241003602f403200241c8e1ca003602f0032002200241e0036a360288042002200241f0036a3602e803200241f8036a41c8c2c8001043000b1036000bb11305037f017e027f037e037f230041a0026b220224000240024020010d002002200136020c200241c8e1ca003602080c010b20022001417f6a36020c2002200041016a36020820002d0000220041014b0d00410021010240024002400240024020000e020100010b2002200241086a10e60120022802000d04200228020c220320022802042200490d042000417f4c0d010240024020000d00410121010c010b200010332201450d03200120022802082204200010e8061a2002200320006b36020c2002200420006a3602080b2001450d042000ad220542208620058421050b0240024020010d00410021040c010b2005422088a72200417f4c0d01024020000d00410121040c010b2000102d2204450d0220042001200010e8061a0b200241f0016a41086a2000360200200220003602f401200220043602f001200241e7e485f3063602d001200241106a200241f0016a10f40120022802142106200241d0016a200235021842208620022802102207ad84102222032900002108200341086a2900002109200341106a290000210a200241106a41186a220b200341186a290000370300200241106a41106a220c200a370300200241106a41086a220d2009370300200220083703102003102f20024190016a41186a200b29030037030020024190016a41106a200c29030037030020024190016a41086a200d290300370300200220022903103703900102402006450d002007102f0b02402004450d002000450d002004102f0b0240024020010d00410021040c010b2005422088a72200417f4c0d01024020000d00410121040c010b2000102d2204450d0220042001200010e8061a0b200241f0016a41086a2000360200200220003602f401200220043602f001200241e2c289ab063602d001200241106a200241f0016a10f40120022802142106200241d0016a200235021842208620022802102207ad84102322032900002108200341086a2900002109200341106a290000210a200241106a41186a220b200341186a290000370300200241106a41106a220c200a370300200241106a41086a220d2009370300200220083703102003102f200241b0016a41186a200b290300370300200241b0016a41106a200c290300370300200241b0016a41086a200d290300370300200220022903103703b00102402006450d002007102f0b02402004450d002000450d002004102f0b0240024020010d00410021040c010b2005422088a72200417f4c0d01024020000d00410121040c010b2000102d2204450d0220042001200010e8061a0b200241f0016a41086a2000360200200220003602f401200220043602f001200241e9dabdf30636029002200241106a200241f0016a10f4012002280214210620024190026a200235021842208620022802102207ad84102322032900002108200341086a2900002109200341106a290000210a200241106a41186a220b200341186a290000370300200241106a41106a220c200a370300200241106a41086a220d2009370300200220083703102003102f200241d0016a41186a200b290300370300200241d0016a41106a200c290300370300200241d0016a41086a200d290300370300200220022903103703d00102402006450d002007102f0b02402004450d002000450d002004102f0b0240024020010d00410021040c010b2005422088a72200417f4c0d01024020000d00410121040c010b2000102d2204450d0220042001200010e8061a0b20024190026a41086a200036020020022000360294022002200436029002200241e1ea91cb0636029c02200241106a20024190026a10f401200228021421062002419c026a200235021842208620022802102207ad84102322032900002108200341086a2900002109200341106a290000210a200241106a41186a220b200341186a290000370300200241106a41106a220c200a370300200241106a41086a220d2009370300200220083703102003102f200241f0016a41186a200b290300370300200241f0016a41106a200c290300370300200241f0016a41086a200d290300370300200220022903103703f00102402006450d002007102f0b02402004450d002000450d002004102f0b200241106a41086a220320024190016a41086a290300370300200241106a41106a220420024190016a41106a290300370300200241106a41186a220620024190016a41186a290300370300200241386a200241b0016a41086a290300370300200241c0006a200241b0016a41106a290300370300200241c8006a200241b0016a41186a2903003703002002200229039001370310200220022903b001370330200241e8006a200241d0016a41186a290300370300200241e0006a200241d0016a41106a290300370300200241d8006a200241d0016a41086a290300370300200241f8006a200241f0016a41086a29030037030020024180016a200241f0016a41106a29030037030020024188016a200241f0016a41186a290300370300200220022903d001370350200220022903f0013703704120102d2200450d0120002002290310370000200041186a2006290300370000200041106a2004290300370000200041086a20032903003700002000412041c00010312200450d012000200241106a41206a2203290000370020200041386a200341186a290000370000200041306a200341106a290000370000200041286a200341086a290000370000200041c00041800110312200450d012000200241106a41c0006a22032900003700402000200241f0006a2204290000370060200041d8006a200341186a290000370000200041d0006a200341106a290000370000200041c8006a200341086a290000370000200041e8006a200441086a290000370000200041f0006a200441106a290000370000200041f8006a200441186a29000037000002402001450d002005a7450d002001102f0b418401102d2201450d01200242840137021420022001360210418001200241106a10690240024020022802142201200228021822036b418001490d0020034180016a2104200228021021010c010b20034180016a22042003490d03200141017422062004200620044b1b22064100480d030240024020010d002006102d21010c010b200228021020012006103121010b2001450d0220022006360214200220013602100b200120036a200041800110e8061a2000102f200241a0026a24002004ad4220862001ad840f0b103d000b1036000b1038000b200241fc016a4104360200200241246a410236020020024202370214200241b8c2c800360210200241043602f401200241c0c5c8003602f001200241003602d401200241c8e1ca003602d0012002200241f0016a3602202002200241d0016a3602f801200241106a41c8c2c8001043000b890803037f017e057f230041b0026b22022400024002402001450d00200220003602080c010b200241c8e1ca003602080b2002200136020c2002200241086a10e60102400240024020022802000d00200228020c220320022802042201490d0002402001417f4c0d000240024020010d00410121000c010b200110332200450d03200020022802082204200110e8061a2002200320016b36020c2002200420016a3602080b2000450d0120022001ad220542208620058422054220883e02ac02200220003602a802200241a0016a200241a8026a10ee020240024020022d00a0014101470d00200241003602100c010b200241206a200241a0016a41017241800110e8061a200241a0016a200241206a41800110e8061a200241106a200241a0016a10ed020b02402005a7450d002000102f0b02400240200228021022060d00410121000c010b200241186a2802004104744105722200417f4c0d010b2000102d2201450d02200241013602a801200220003602a401200220013602a0010240024020060d00200141003a00002001ad4280808080108421050c010b200141013a0000200241106a41086a2802002201200241a0016a10690240024020010d0020023502a80142208620023502a0018421050c010b200620014104746a210720062103034020032802002108200341086a2802002209200241a0016a10690240024020022802a401220020022802a801220a6b2009490d0020022802a00121010c010b200a20096a2201200a490d07200041017422042001200420014b1b22044100480d070240024020000d002004102d21010c010b20022802a00120002004103121010b2001450d06200220043602a401200220013602a001200421000b2002200a20096a22043602a8012001200a6a2008200910e8061a0240200020046b41034b0d00200441046a22092004490d072000410174220a2009200a20094b1b22094100480d070240024020000d002009102d21010c010b200120002009103121010b2001450d06200220093602a401200220013602a0010b2002200441046a22003602a801200120046a2003410c6a280000360000200341106a22032007470d000b2000ad4220862001ad8421052006450d010b0240200241186a2802002201450d00200141047421002006210103400240200141046a280200450d002001280200102f0b200141106a2101200041706a22000d000b0b2002280214450d002006102f0b200241b0026a240020050f0b103d000b2002412c6a4104360200200241b4016a4102360200200242023702a401200241b8c2c8003602a00120024104360224200241e0c5c80036022020024100360214200241c8e1ca003602102002200241206a3602b0012002200241106a360228200241a0016a41c8c2c8001043000b1036000b1038000b02000ba20405027f017e027f027e027f230041d0006b2203240041eba1ca00ad4280808080f00084100122042900002105200341086a41086a2206200441086a290000370300200320053703082004102f4183cbc800ad4280808080b00284100122042900002105200341186a41086a2207200441086a290000370300200320053703182004102f2003200136024c200341cc006aad4280808080c00084100322042900002105200441086a2900002108200441106a2900002109200341286a41186a2201200441186a290000370300200341286a41106a220a2009370300200341286a41086a220b2008370300200320053703282004102f024041c000102d2204450d00200420032903083700002004200329031837001020042003290328370020200441086a2006290300370000200441186a2007290300370000200441286a200b290300370000200441306a200a290300370000200441386a20012903003700004120102d2201450d0020012002290000370000200141186a200241186a290000370000200141106a200241106a290000370000200141086a200241086a2900003700002001ad4280808080800484100122022900002105200341286a41086a2206200241086a290000370300200320053703282002102f2001102f200441c00041800110312204450d0020042003290328370040200441c8006a200629030037000020004280818080800a37020420002004360200200341d0006a24000f0b1036000ba20405027f017e027f027e027f230041d0006b2203240041eba1ca00ad4280808080f00084100122042900002105200341086a41086a2206200441086a290000370300200320053703082004102f4196cbc800ad4280808080b00284100122042900002105200341186a41086a2207200441086a290000370300200320053703182004102f2003200136024c200341cc006aad4280808080c00084100322042900002105200441086a2900002108200441106a2900002109200341286a41186a2201200441186a290000370300200341286a41106a220a2009370300200341286a41086a220b2008370300200320053703282004102f024041c000102d2204450d00200420032903083700002004200329031837001020042003290328370020200441086a2006290300370000200441186a2007290300370000200441286a200b290300370000200441306a200a290300370000200441386a20012903003700004120102d2201450d0020012002290000370000200141186a200241186a290000370000200141106a200241106a290000370000200141086a200241086a2900003700002001ad4280808080800484100122022900002105200341286a41086a2206200241086a290000370300200320053703282002102f2001102f200441c00041800110312204450d0020042003290328370040200441c8006a200629030037000020004280818080800a37020420002004360200200341d0006a24000f0b1036000bbe1203027f037e047f230041e0036b2201240041eba1ca00ad4280808080f00084100122022900002103200141d0006a41086a200241086a290000370300200120033703502002102f41a5c6c800ad4280808080a0018410012202290000210320014190026a41086a200241086a29000037030020012003370390022002102f024002400240024002404120102d2202450d0020022000290000370000200241186a200041186a290000370000200241106a200041106a290000370000200241086a200041086a2900003700002002ad4280808080800484100322002900002103200041086a2900002104200041106a2900002105200141d8026a41186a2206200041186a290000370300200141d8026a41106a22072005370300200141d8026a41086a2004370300200120033703d8022000102f2002102f41c000102d2202450d00200220012903503700002002200129039002370010200220012903d802370020200241086a200141d0006a41086a290300370000200241186a20014190026a41086a290300370000200241286a200141d8026a41086a290300370000200241306a2007290300370000200241386a2006290300370000200141d8026a200241c000109b04024020012d00dc02220041024622060d002002ad428080808080088410050b2001410d6a200141d8026a41057241c30010e8061a200141d0006a2001410d6a41c30010e8061a20060d04200120003a00980120014198016a410172200141d0006a41c10010e8062108200141ba016a21060240024020012d00b90122074101460d00200141003602e0010c010b200141e0016a2006109a040b02400240024020004101460d00200141003602f0010c010b200141f0016a2008109a0420012802f0010d010b024020074101460d0041eba1ca00ad4280808080f00084100122002900002103200141b0036a41086a2206200041086a290000370300200120033703b0032000102f4195c6c800ad428080808080028410012200290000210320014190026a41086a2207200041086a29000037030020012003370390022000102f200141d8026a41086a2006290300370300200141f0026a2007290300370300200120012903b0033703d80220012001290390023703e80220014190026a200141d8026a1088012001350298024220862001280290022200ad841005200128029402450d042000102f0c040b41eba1ca00ad4280808080f00084100122002900002103200141b0036a41086a2207200041086a290000370300200120033703b0032000102f4195c6c800ad428080808080028410012200290000210320014190026a41086a2208200041086a29000037030020012003370390022000102f200141d8026a41086a2007290300370300200141d8026a41186a2008290300370300200120012903b0033703d80220012001290390023703e80220014190026a200141d8026a108801200128029002210720013502980221034120102d2200450d0120002006290000370000200041186a200641186a290000370000200041106a200641106a290000370000200041086a200641086a29000037000020034220862007ad842000ad428080808080048410042000102f200128029402450d032007102f0c030b20014180026a41086a200141f0016a41086a2802002200360200200120012903f00122033703800220014190026a2003a722072000109b04024020012d0094024102470d00200141003602a803200142013703a003200141b0036a41146a4129360200200141bc036a410b360200200141073602cc03200141eba1ca003602c8032001410b3602b4032001410a3602d403200141a5c6c8003602d003200120014180026a3602c0032001200141d0036a3602b8032001200141c8036a3602b0032001200141a0036a3602dc03200141d8026a41146a4103360200200142033702dc022001419090c4003602d8022001200141b0036a3602e802200141dc036a41d8dbc100200141d8026a103c1a20013502a80342208620013502a00384100820012802a403450d0220012802a003102f0c020b200141d8026a20014190026a41c80010e8061a2001419d036a200141b9016a220641206a2d00003a000020014195036a200641186a2900003700002001418d036a200641106a29000037000020014185036a200641086a290000370000200141fd026a2006290000370000200141003602b803200142013703b003200141d8026a200141b0036a109502200141d8026a410472200141b0036a10ce0220012802b40321062000ad4220862007ad8420013502b80342208620012802b0032200ad8410042006450d012000102f0c010b1036000b0240200128028402450d00200128028002102f0b410121060c010b410021060b0240024020012802e00122000d00410021070c010b20014180026a41086a200141e0016a41086a2802002207360200200120012903e00122033703800220014190026a2003a722082007109b040240024020012d0094024102470d00200141003602a803200142013703a003200141b0036a41146a4129360200200141bc036a410b360200200141073602cc03200141eba1ca003602c8032001410b3602b4032001410a3602d403200141a5c6c8003602d003200120014180026a3602c0032001200141d0036a3602b8032001200141c8036a3602b0032001200141a0036a3602dc03200141d8026a41146a4103360200200142033702dc02200141b48fc4003602d8022001200141b0036a3602e802200141dc036a41d8dbc100200141d8026a103c1a20013502a80342208620013502a00384100820012802a403450d0120012802a003102f0c010b200141d8026a20014190026a41c80010e8061a200141fc026a200141b8016a2d00003a0000200141f4026a200141b0016a290300370200200141ec026a200141a8016a290300370200200141e4026a20014198016a41086a29030037020020012001290398013702dc02200141003602b803200142013703b003200141d8026a200141b0036a109502200141d8026a410472200141b0036a10ce0220012802b40321092007ad4220862008ad8420013502b80342208620012802b0032207ad8410042009450d002007102f0b0240200128028402450d00200128028002102f0b410121070b0240200620012802f001220845720d0020012802f401450d002008102f0b2007200045720d0020012802e401450d002000102f0b2002102f200141e0036a24000bf11105027f017e027f037e047f230041f0036b2201240041eba1ca00ad4280808080f0008410012202290000210320014180026a41086a200241086a29000037030020012003370380022002102f418bc6c800ad4280808080a0018410012202290008210320022800042104200228000021052002102f024002400240024002404120102d2202450d0020022000290000370000200241186a200041186a290000370000200241106a200041106a290000370000200241086a200041086a2900003700002002ad4280808080800484100322002900002106200041086a2900002107200041106a2900002108200141d8026a41186a2209200041186a290000370300200141d8026a41106a220a2008370300200141d8026a41086a2007370300200120063703d8022000102f2002102f41c000102d2202450d002002200129038002370000200220033700182002200436001420022005360010200220012903d802370020200241086a20014180026a41086a290300370000200241286a200141d8026a41086a290300370000200241306a200a290300370000200241386a2009290300370000200141d8026a200241c000109804024020012d00e802220041024622040d002002ad428080808080088410050b20012802dc02210520012802d80221092001200141ec026a41c40010e806220141c4006a200141c40010e8061a024020040d0020014188016a200141c4006a41c20010e8061a200141aa016a21040240024020012d00a901220a4101460d00200141003602d0010c010b200141d0016a20041097040b02400240024020012d0088014101460d00200141003602e0010c010b200141e0016a20014188016a41017210970420012802e0010d010b0240200a4101460d0041eba1ca00ad4280808080f00084100122042900002103200141c0036a41086a220a200441086a290000370300200120033703c0032004102f41fbc5c800ad428080808080028410012204290000210320014180026a41086a220b200441086a29000037030020012003370380022004102f200141d8026a41086a200a290300370300200141f0026a200b290300370300200120012903c0033703d80220012001290380023703e80220014180026a200141d8026a1088012001350288024220862001280280022204ad841005200128028402450d052004102f0c050b41eba1ca00ad4280808080f000841001220a2900002103200141c0036a41086a220b200a41086a290000370300200120033703c003200a102f41fbc5c800ad42808080808002841001220a290000210320014180026a41086a220c200a41086a2900003703002001200337038002200a102f200141d8026a41086a200b290300370300200141d8026a41186a200c290300370300200120012903c0033703d80220012001290380023703e80220014180026a200141d8026a108801200128028002210b20013502880221034120102d220a450d02200a2004290000370000200a41186a200441186a290000370000200a41106a200441106a290000370000200a41086a200441086a2900003700002003422086200bad84200aad42808080808004841004200a102f200128028402450d04200b102f0c040b200141f0016a41086a200141e0016a41086a2802002204360200200120012903e00122033703f00120014180026a2003a7220b2004109804024020012d0090024102460d00200141d8026a20014180026a41d80010e8061a200141ad036a200141a9016a220a41206a2d00003a0000200141a5036a200a41186a2900003700002001419d036a200a41106a29000037000020014195036a200a41086a2900003700002001418d036a200a290000370000200120043602c4032001200b3602c003200141d8026a200141c0036a10ea0520012802dc02450d0320012802d802102f0c030b200141003602b803200142013703b003200141c0036a41146a4129360200200141cc036a410b360200200141073602dc03200141eba1ca003602d8032001410b3602c4032001410a3602e4032001418bc6c8003602e0032001200141f0016a3602d0032001200141e0036a3602c8032001200141d8036a3602c0032001200141b0036a3602ec03200141d8026a41146a4103360200200142033702dc022001419090c4003602d8022001200141c0036a3602e802200141ec036a41d8dbc100200141d8026a103c1a20013502b80342208620013502b00384100820012802b403450d0220012802b003102f0c020b0c040b1036000b024020012802f401450d0020012802f001102f0b4101210a0c010b4100210a0b0240024020012802d00122040d004100210b0c010b200141f0016a41086a200141d0016a41086a280200220b360200200120012903d00122033703f00120014180026a2003a7220c200b1098040240024020012d0090024102460d00200141d8026a20014180026a41d80010e8061a2001418c036a200141a8016a2d00003a000020014184036a200141a0016a290300370200200141fc026a20014198016a290300370200200141f4026a20014188016a41086a29030037020020012001290388013702ec022001200b3602c4032001200c3602c003200141d8026a200141c0036a10ea0520012802dc02450d0120012802d802102f0c010b200141003602b803200142013703b003200141c0036a41146a4129360200200141cc036a410b360200200141073602dc03200141eba1ca003602d8032001410b3602c4032001410a3602e4032001418bc6c8003602e0032001200141f0016a3602d0032001200141e0036a3602c8032001200141d8036a3602c0032001200141b0036a3602ec03200141d8026a41146a4103360200200142033702dc02200141b48fc4003602d8022001200141c0036a3602e802200141ec036a41d8dbc100200141d8026a103c1a20013502b80342208620013502b00384100820012802b403450d0020012802b003102f0b024020012802f401450d0020012802f001102f0b4101210b0b0240200a20012802e001220c45720d0020012802e401450d00200c102f0b0240200b200445720d0020012802d401450d002004102f0b20054521040b2002102f024020004102460d0020044101710d002009102f0b200141f0036a24000b800501087f230041106b220224002002410036020820024201370300200028020021032000280208220420021069024002400240024020040d0020022802042105200228020821060c010b200441057421072002280204210520022802082104034002400240200520046b4120490d00200441206a2106200228020021080c010b200441206a22062004490d04200541017422082006200820064b1b22094100480d040240024020050d002009102d21080c010b200228020020052009103121080b2008450d032002200936020420022008360200200921050b200820046a220441086a200341086a290000370000200441106a200341106a290000370000200441186a200341186a290000370000200220063602082004200329000037000020062104200341206a2103200741606a22070d000b0b200028020c210702400240200520066b4104490d00200641046a2103200228020021040c010b200641046a22032006490d02200541017422042003200420034b1b22084100480d020240024020050d002008102d21040c010b200228020020052008103121040b2004450d012002200836020420022004360200200821050b20022003360208200420066a200736000020002d00102106024020052003470d00200341016a22052003490d02200341017422082005200820054b1b22054100480d020240024020030d002005102d21040c010b200420032005103121040b2004450d0120022005360204200220043602000b2002200341016a360208200420036a20063a0000200041146a200210ce02200228020421032001290200200235020842208620022802002204ad84100402402003450d002004102f0b200241106a24000f0b1036000b1038000b860403027f037e037f230041c0006b2202240041eba1ca00ad4280808080f00084100122032900002104200241086a200341086a290000370300200220043703002003102f41a9cbc800ad4280808080d00184100122032900002104200241106a41086a200341086a290000370300200220043703102003102f02404120102d2203450d0020032001290000370000200341186a200141186a290000370000200341106a200141106a290000370000200341086a200141086a2900003700002003ad4280808080800484100322012900002104200141086a2900002105200141106a2900002106200241206a41186a2207200141186a290000370300200241206a41106a22082006370300200241206a41086a2005370300200220043703202001102f2003102f41c000102d2203450d00200320022903003700002003200229031037001020032002290320370020200341086a200241086a290300370000200341186a200241106a41086a2201290300370000200341286a200241206a41086a2209290300370000200341306a2008290300370000200341386a2007290300370000200241206a2003109c0520012009280200360200200220022903203703100240200228022c2207450d002000200229031037020020002002290330370210200041086a20012802003602000b2000200736020c2003102f200241c0006a24000f0b1036000b960603027f037e047f230041c0006b2202240041eba1ca00ad4280808080f00084100122032900002104200241086a200341086a290000370300200220043703002003102f41a9cbc800ad4280808080d00184100122032900002104200241106a41086a200341086a290000370300200220043703102003102f024002404120102d2203450d0020032000290000370000200341186a200041186a290000370000200341106a200041106a290000370000200341086a200041086a2900003700002003ad4280808080800484100322002900002104200041086a2900002105200041106a2900002106200241206a41186a2207200041186a290000370300200241206a41106a22082006370300200241206a41086a2005370300200220043703202000102f2003102f41c000102d2203450d00200320022903003700002003200229031037001020032002290320370020200341086a200241086a290300370000200341186a200241106a41086a290300370000200341286a200241206a41086a290300370000200341306a2008290300370000200341386a20072903003700002002410036022820024201370320200128020021074104102d2200450d002000200736000020024284808080c000370224200220003602202001280204210720004104410810312200450d0020002007360004200242888080808001370224200220003602202001280208210720004108411010312200450d00200020073600082002410c3602282002411036022420022000360220200128020c2109200141146a2802002201200241206a10690240024020022802242207200228022822006b20014102742208490d00200228022021010c010b200020086a22012000490d022007410174220a2001200a20014b1b220a4100480d020240024020070d00200a102d21010c010b20022802202007200a103121010b2001450d012002200a36022420022001360220200a21070b200120006a2009200810e8061a2003ad4280808080800884200020086aad4220862001ad84100402402007450d002001102f0b2003102f200241c0006a24000f0b1036000b1038000be80302027f037e230041c0006b2201240041eba1ca00ad4280808080f00084100122022900002103200141086a200241086a290000370300200120033703002002102f41b6cbc800ad4280808080900184100122022900002103200141106a41086a200241086a290000370300200120033703102002102f02404104102d2202450d0020024104412010312202450d0020022000290000370000200241186a200041186a290000370000200241106a200041106a290000370000200241086a200041086a290000370000200028022021002002412041c00010312202450d00200220003600202002ad4280808080c00484100322002900002103200041086a2900002104200041106a2900002105200141206a41186a200041186a290000370300200141206a41106a2005370300200141206a41086a2004370300200120033703202000102f2002102f41c000102d2200450d00200020012903003700002000200129031037001020002001290320370020200041086a200141086a290300370000200041186a200141106a41086a290300370000200041286a200141206a41086a290300370000200041306a200141306a290300370000200041386a200141206a41186a2903003700002000ad428080808080088410052000102f200141c0006a24000f0b1036000bab0b05027f027e027f047e037f230041d0006b22012400200141286a200010bd03200135023042208620012802282202ad8410130240200128022c450d002002102f0b200141286a200010c003200135023042208620012802282202ad8410130240200128022c450d002002102f0b200141286a200010c203200135023042208620012802282202ad8410130240200128022c450d002002102f0b41eba1ca00ad4280808080f000842203100122022900002104200141086a41086a2205200241086a290000370300200120043703082002102f4197cfc800ad4280808080b00284100122022900002104200141186a41086a2206200241086a290000370300200120043703182002102f2001200036024c200141cc006aad22044280808080c000842207100322022900002108200241086a2900002109200241106a290000210a200141286a41186a220b200241186a290000370300200141286a41106a220c200a370300200141286a41086a220d2009370300200120083703282002102f024041c000102d2202450d00200220012903083700002002200129031837001020022001290328370020200241086a2005290300370000200241186a2006290300370000200241286a200d290300370000200241306a200c290300370000200241386a200b2903003700002002ad428080808080088410052002102f20031001220229000021032005200241086a290000370300200120033703082002102f41e5cac800ad42808080808002841001220229000021032006200241086a290000370300200120033703182002102f2001200036024c2007100322022900002103200241086a2900002107200241106a2900002108200b200241186a290000370300200c2008370300200d2007370300200120033703282002102f41c000102d2202450d00200220012903083700002002200129031837001020022001290328370020200241086a200141086a41086a2205290300370000200241186a200141186a41086a2206290300370000200241286a200141286a41086a220b290300370000200241306a200141286a41106a220c290300370000200241386a200141286a41186a220d2903003700002002ad428080808080088410052002102f41eba1ca00ad4280808080f0008422031001220229000021072005200241086a290000370300200120073703082002102f41f5cac800ad4280808080e001841001220229000021072006200241086a290000370300200120073703182002102f2001200036024c20044280808080c000842204100322022900002107200241086a2900002108200241106a2900002109200d200241186a290000370300200c2009370300200b2008370300200120073703282002102f41c000102d2202450d00200220012903083700002002200129031837001020022001290328370020200241086a2005290300370000200241186a2006290300370000200241286a200b290300370000200241306a200c290300370000200241386a200d2903003700002002ad428080808080088410052002102f20031001220229000021032005200241086a290000370300200120033703082002102f41dca0ca00ad4280808080d002841001220229000021032006200241086a290000370300200120033703182002102f2001200036024c2004100322022900002103200241086a2900002104200241106a2900002107200d200241186a290000370300200c2007370300200b2004370300200120033703282002102f41c000102d2202450d00200220012903083700002002200129031837001020022001290328370020200241086a200141086a41086a290300370000200241186a200141186a41086a290300370000200241286a200141286a41086a290300370000200241306a200141386a290300370000200241386a200141286a41186a2903003700002002ad428080808080088410052002102f200141d0006a24000f0b1036000b8a0504017f027e037f027e230041c0016b220224002002200110b50302400240024020022d00004101460d0042002103420021040c010b20024180016a41186a2205200241196a29000037030020024180016a41106a2206200241116a29000037030020024180016a41086a2207200241096a290000370300200220022900013703800141eba1ca00ad4280808080f00084100122012900002103200241a0016a41086a200141086a290000370300200220033703a0012001102f41a7cac800ad4280808080e00084100122012900002103200241b0016a41086a200141086a290000370300200220033703b0012001102f4120102d2201450d012001200229038001370000200141186a2005290300370000200141106a2006290300370000200141086a20072903003700002001ad4280808080800484100322052900002103200541086a2900002104200541106a2900002108200241286a41186a200541186a290000370300200241286a41106a2008370300200241286a41086a2004370300200220033703282005102f2001102f41c000102d2201450d01200120022903a001370000200120022903b00137001020012002290328370020200141086a200241a0016a41086a290300370000200141186a200241b0016a41086a290300370000200141286a200241286a41086a290300370000200141306a200241386a290300370000200141386a200241286a41186a2205290300370000200241286a200110a0052005290300210820022903382109200228024c210620022802482107200228025421052001102f420021034200210420054102460d0002402006450d002007102f0b20092103200821040b2000200337030020002004370308200241c0016a24000f0b1036000be20603027f017e057f230041d0006b2203240041eba1ca00ad4280808080f00084100122042900002105200341086a200441086a290000370300200320053703002004102f41b6cac800ad4280808080b00184100122042900002105200341106a41086a200441086a290000370300200320053703102004102f2003200136022c20032003412c6aad4280808080c00084100622042900003703302004102f200341c4006a200341306a360200200341003a00482003200341306a41086a220636023c20032003412c6a3602402003200341306a360238200341206a200341386a106c0240024002400240024002402003280228220741206a2208417f4c0d0020032802202109024002402008450d002008102d2204450d062008410f4d0d012008210a0c050b4110210a4110102d21040c030b200841017422014110200141104b1b220a41004e0d010c050b103d000b20042008200a103121040b2004450d010b20042003290300370000200441086a200341086a29030037000002400240200a4170714110460d00200a21010c010b200a41017422014120200141204b1b22014100480d022004200a200110312204450d010b20042003290310370010200441186a200341106a41086a29030037000002400240200141606a2007490d002001210a0c010b2007415f4b0d022001410174220a2008200a20084b1b220a4100480d0220042001200a10312204450d010b200441206a2009200710e8061a02402003280224450d002009102f0b4120102d2201450d0020012002290000370000200141186a200241186a290000370000200141106a200241106a290000370000200141086a200241086a29000037000020032001ad4280808080800484100622022900003703302002102f200341c4006a200141206a360200200341003a0048200320013602402003200636023c2003200341306a360238200341106a200341386a106c2001102f2003280210210702400240200a20086b20032802182201490d00200120086a2102200a21090c010b200820016a22022008490d02200a41017422092002200920024b1b22094100480d022004200a200910312204450d010b200420086a2007200110e8061a02402003280214450d002007102f0b200020023602082000200936020420002004360200200341d0006a24000f0b1036000b1038000be20603027f017e057f230041d0006b2203240041eba1ca00ad4280808080f00084100122042900002105200341086a200441086a290000370300200320053703002004102f41c1cac800ad4280808080a00284100122042900002105200341106a41086a200441086a290000370300200320053703102004102f2003200136022c20032003412c6aad4280808080c00084100622042900003703302004102f200341c4006a200341306a360200200341003a00482003200341306a41086a220636023c20032003412c6a3602402003200341306a360238200341206a200341386a106c0240024002400240024002402003280228220741206a2208417f4c0d0020032802202109024002402008450d002008102d2204450d062008410f4d0d012008210a0c050b4110210a4110102d21040c030b200841017422014110200141104b1b220a41004e0d010c050b103d000b20042008200a103121040b2004450d010b20042003290300370000200441086a200341086a29030037000002400240200a4170714110460d00200a21010c010b200a41017422014120200141204b1b22014100480d022004200a200110312204450d010b20042003290310370010200441186a200341106a41086a29030037000002400240200141606a2007490d002001210a0c010b2007415f4b0d022001410174220a2008200a20084b1b220a4100480d0220042001200a10312204450d010b200441206a2009200710e8061a02402003280224450d002009102f0b4120102d2201450d0020012002290000370000200141186a200241186a290000370000200141106a200241106a290000370000200141086a200241086a29000037000020032001ad4280808080800484100622022900003703302002102f200341c4006a200141206a360200200341003a0048200320013602402003200636023c2003200341306a360238200341106a200341386a106c2001102f2003280210210702400240200a20086b20032802182201490d00200120086a2102200a21090c010b200820016a22022008490d02200a41017422092002200920024b1b22094100480d022004200a200910312204450d010b200420086a2007200110e8061a02402003280214450d002007102f0b200020023602082000200936020420002004360200200341d0006a24000f0b1036000b1038000be20603027f017e057f230041d0006b2203240041eba1ca00ad4280808080f00084100122042900002105200341086a200441086a290000370300200320053703002004102f41d3cac800ad4280808080a00284100122042900002105200341106a41086a200441086a290000370300200320053703102004102f2003200136022c20032003412c6aad4280808080c00084100622042900003703302004102f200341c4006a200341306a360200200341003a00482003200341306a41086a220636023c20032003412c6a3602402003200341306a360238200341206a200341386a106c0240024002400240024002402003280228220741206a2208417f4c0d0020032802202109024002402008450d002008102d2204450d062008410f4d0d012008210a0c050b4110210a4110102d21040c030b200841017422014110200141104b1b220a41004e0d010c050b103d000b20042008200a103121040b2004450d010b20042003290300370000200441086a200341086a29030037000002400240200a4170714110460d00200a21010c010b200a41017422014120200141204b1b22014100480d022004200a200110312204450d010b20042003290310370010200441186a200341106a41086a29030037000002400240200141606a2007490d002001210a0c010b2007415f4b0d022001410174220a2008200a20084b1b220a4100480d0220042001200a10312204450d010b200441206a2009200710e8061a02402003280224450d002009102f0b4120102d2201450d0020012002290000370000200141186a200241186a290000370000200141106a200241106a290000370000200141086a200241086a29000037000020032001ad4280808080800484100622022900003703302002102f200341c4006a200141206a360200200341003a0048200320013602402003200636023c2003200341306a360238200341106a200341386a106c2001102f2003280210210702400240200a20086b20032802182201490d00200120086a2102200a21090c010b200820016a22022008490d02200a41017422092002200920024b1b22094100480d022004200a200910312204450d010b200420086a2007200110e8061a02402003280214450d002007102f0b200020023602082000200936020420002004360200200341d0006a24000f0b1036000b1038000bc60501067f230041106b220224002002410036020820024201370300024002404120102d2203450d00200242a080808080043702042002200336020020032000290034370000200341086a2000413c6a290000370000200341106a200041c4006a290000370000200341186a200041cc006a2900003700002002200036020c2002410c6a200210c2022002200041106a36020c2002410c6a200210c20220002802202103200041286a28020022042002106902402004450d002003200441186c6a210403402002200336020c2002410c6a200210c202200341106a20021095022004200341186a2203470d000b0b02400240200028022c4101460d00024002402002280204220420022802082205460d00200228020021030c010b200541016a22032005490d04200541017422042003200420034b1b22044100480d040240024020050d002004102d21030c010b200228020020052004103121030b2003450d0320022004360204200220033602000b2002200541016a2200360208200320056a41003a00000c010b024002402002280204220420022802082205460d00200228020021030c010b200541016a22032005490d03200541017422042003200420034b1b22044100480d030240024020050d002004102d21030c010b200228020020052004103121030b2003450d0220022004360204200220033602000b2002200541016a2206360208200320056a41013a00002000280230210702400240200420066b4104490d00200541056a21000c010b200641046a22002006490d03200441017422052000200520004b1b22054100480d030240024020040d002005102d21030c010b200320042005103121030b2003450d022002200536020420022003360200200521040b20022000360208200320066a20073600000b20012902002000ad4220862003ad84100402402004450d002003102f0b200241106a24000f0b1036000b1038000b130020004115360204200041f0cfc8003602000bab0407047f017e017f017e017f017e037f230041d0006b22002400200041206a41186a22014200370300200041206a41106a22024200370300200041206a41086a220342003703002000420037032041eba1ca00ad4280808080f000842204100122052900002106200041c0006a41086a2207200541086a290000370300200020063703402005102f200320072903003703002000200029034037032041f1a0ca00ad428080808080018422081001220529000021062007200541086a290000370300200020063703402005102f200220002903402206370300200041086a22092003290300370300200041106a220a2006370300200041186a220b200729030037030020002000290320370300024002400240410020001081042205200541ff01714104461b41ff0171417f6a220541024b0d0020050e03010001010b2001420037030020024200370300200342003703002000420037032020041001220529000021062007200541086a290000370300200020063703402005102f200320072903003703002000200029034037032020081001220529000021062007200541086a290000370300200020063703402005102f20022000290340370000200241086a200729030037000020092003290300370300200a2002290300370300200b2001290300370300200020002903203703004101102d2207450d01200741013a00002000ad42808080808004842007ad4280808080108410042007102f0b200041d0006a24000f0b1036000b3400200041eba1ca0036020420004100360200200041146a411d360200200041106a41d495c900360200200041086a42073702000b5301017f02404110102d2202450d00200242003700082002420037000020024110412010312202450d0020024200370010200042a0808080800437020420002002360200200241186a42003700000f0b1036000b4b01027f230041106b2202240002404101102d22030d001036000b200341003a0000200041086a4101360200200241013602042002200336020020002002290300370200200241106a24000b9a0302047f017e230041206b2203240002400240200241d8006c4104722204417f4c0d002004102d2205450d0120034100360208200320043602042003200536020020022003106902402002450d002001200241d8006c6a210603402003200141386a4120108201200129030021072003200141086a290300370318200320073703102003200341106a411010820120012802202102200128022822042003106902402004450d002002200441306c6a21040340200320024120108201200241206a29030021072003200241286a290300370318200320073703102003200341106a41101082012004200241306a2202470d000b0b200141d8006a2105200128022c2102200141346a28020022042003106902402004450d00200441057421040340200320024120108201200241206a2102200441606a22040d000b0b200129031021072003200141186a290300370318200320073703102003200341106a41101082012005210120052006470d000b0b20002003290300370200200041086a200341086a280200360200200341206a24000f0b103d000b1036000b3301017f02404110102d22020d001036000b2002420037000820024200370000200042908080808002370204200020023602000b7b01027f230041106b22022400200241003602082002420137030002404104102d22030d001036000b2003410036000020024284808080c000370204200220033602004190bdc60041004100200210e501200041086a2002280208360200200020022903003702004190bdc6004100410010a302200241106a24000be30101047f230041106b220224002002410036020c02404101102d2203450d000240024002400240200228020c220441c000490d00200441808001490d012004418080808004490d02200341033a0000200228020c21044105210520034101410510312203450d04200320043600010c030b200320044102743a0000410121050c020b4102210520034101410210312203450d02200320044102744101723b00000c010b4104210520034101410410312203450d01200320044102744102723600000b200020053602082000200536020420002003360200200241106a24000f0b1036000bd40301077f230041c0006b22022400200241186a4200370300200241106a22034200370300200241086a4200370300200241286a22044100360200200242003703002002420837032020024100360238200242013703302002200236023c2002413c6a200241306a10c2022002200336023c2002413c6a200241306a10c2022002280220210320042802002204200241306a10690240024002402004450d00200441306c210503400240024020022802342206200228023822046b4120490d00200441206a2107200228023021060c010b200441206a22072004490d04200641017422082007200820074b1b22084100480d040240024020060d002008102d21060c010b200228023020062008103121060b2006450d0320022008360234200220063602300b200620046a220441086a200341186a290000370000200441106a200341206a290000370000200441186a200341286a290000370000200220073602382004200341106a2900003700002002200336023c2002413c6a200241306a10c202200341306a2103200541506a22050d000b0b20002002290330370200200041086a200241306a41086a28020036020002402002280224450d002002280220102f0b200241c0006a24000f0b1036000b1038000b2c01017f02404104102d22020d001036000b20004284808080c00037020420002002360200200241043600000b2d01017f02404104102d22020d001036000b20004284808080c00037020420002002360200200241d4003600000b130020004102360204200041accfc9003602000b2d01017f02404104102d22020d001036000b20004284808080c00037020420002002360200200241a0053600000b2c01017f02404104102d22020d001036000b20004284808080c00037020420002002360200200241063600000bb21307027f017e057f017e027f017e027f23004190016b2202240041eba1ca00ad4280808080f00084100122032900002104200241c8006a41086a200341086a290000370300200220043703482003102f41a1cac800ad4280808080e0008410012203290000210420024180016a41086a200341086a29000037030020022004370380012003102f02400240024002400240024002404120102d2203450d0020032001290000370000200341186a200141186a290000370000200341106a200141106a290000370000200341086a200141086a2900003700002003ad4280808080800484100322052d00002106200241ef006a2207200541186a290000370000200241d8006a41106a2208200541116a290000370300200241d8006a41086a200541096a290000370300200220052900013703582005102f2003102f41c000102d2203450d00200320022903483700002003200229038001370010200320063a002020032002290358370021200341086a200241c8006a41086a290300370000200341186a20024180016a41086a290300370000200341296a200241d8006a41086a2209290300370000200341316a2008290300370000200341386a2007290000370000200241d8006a200341c00010ad02024020022d00582207450d002003ad428080808080088410050b200241286a41176a2205200241f1006a290000370000200241286a41106a2206200241ea006a290100370300200241286a41086a200241e2006a29010022043703002002200229015a220a37032820022d00592108200241d8006a41176a220b2005290000370000200241d8006a41106a220c2006290300370300200920043703002002200a37035820074101470d01200241086a41176a2207200b290000370000200241086a41106a2209200c290300370300200241086a41086a220b200241d8006a41086a220c290300370300200220022903583703082003102f2005200729000037000020062009290300370300200241286a41086a2205200b2903003703002002200229030837032841eba1ca00ad4280808080f00084100122032900002104200241c8006a41086a200341086a290000370300200220043703482003102f41a7cac800ad4280808080e0008410012203290000210420024180016a41086a200341086a29000037030020022004370380012003102f4120102d2203450d00200320083a000020032002290328370001200341096a2005290300370000200341116a200241286a41106a290300370000200341186a200241286a41176a2900003700002003ad4280808080800484100322052d00002106200241d8006a41176a2207200541186a290000370000200241d8006a41106a2208200541116a290000370300200c200541096a290000370300200220052900013703582005102f2003102f41c000102d2203450d00200320022903483700002003200229038001370010200320063a002020032002290358370021200341086a200241c8006a41086a2205290300370000200341186a20024180016a41086a2206290300370000200341296a200241d8006a41086a2209290300370000200341316a2008290300370000200341386a20072900003700002003ad428080808080088410052003102f41eba1ca00ad4280808080f000841001220329000021042005200341086a290000370300200220043703482003102f41c8abc900ad4280808080d000841001220329000021042006200341086a29000037030020022004370380012003102f4120102d2203450d0020032001290000370000200341186a200141186a290000370000200341106a200141106a290000370000200341086a200141086a2900003700002003ad4280808080800484100322052d00002106200241ef006a2207200541186a290000370000200241d8006a41106a2208200541116a2900003703002009200541096a290000370300200220052900013703582005102f2003102f41c000102d2203450d00200320022903483700002003200229038001370010200320063a002020032002290358370021200341086a200241c8006a41086a290300370000200341186a20024180016a41086a2205290300370000200341296a200241d8006a41086a2206290300370000200341316a2008290300370000200341386a20072900003700002003ad428080808080088410052003102f200110e805200110e90541eba1ca00ad4280808080f000841001220329000021042005200341086a29000037030020022004370380012003102f41a9cbc800ad4280808080d00184100122032900002104200241086a41086a200341086a290000370300200220043703082003102f4120102d2203450d0020032001290000370000200341186a200141186a290000370000200341106a200141106a290000370000200341086a200141086a2900003700002003ad4280808080800484100322052900002104200541086a290000210a200541106a290000210d200241d8006a41186a2207200541186a290000370300200241d8006a41106a2208200d3703002006200a370300200220043703582005102f2003102f41c000102d2203450d0020032002290380013700002003200229030837001020032002290358370020200341086a20024180016a41086a290300370000200341186a200241086a41086a290300370000200341286a200241d8006a41086a290300370000200341306a2008290300370000200341386a2007290300370000200241d8006a2003109c0502402002280264220e450d002003ad428080808080088410050b200229036821042002280258210b2003102f200e450d05200e2004422088a74102746a210c2004a7210f200b2108200e2106410021070240410041ff01710e03030400030b410021030c040b1036000b2003102f200041086a4108360200200041046a41d6c7c800360200200041026a41013a000020004183103b01000c040b410121030c010b410221030b0340024002400240024002400240024020030e03000102020b2006200c460d03200641046a2106410221032008417f6a220521080c020b41002103024020074102460d0041022107200b21050c020b2006200c460d02200641046a2106410221072008417f6a22052108410221030c010b200741024721094101210341022107200b21052009450d010b200241d8006a41186a200141186a290000370300200241d8006a41106a200141106a290000370300200241d8006a41086a200141086a2900003703002002200536027820022001290000370358200241d8006a10ed050240200341ff01710e03000203000b410121030c030b200f450d03200e102f0c030b410221030c010b410021030c000b0b200110ca02200041043a00000b20024190016a24000baf0305027f017e027f027e027f230041e0006b2202240041eba1ca00ad4280808080f00084100122032900002104200241186a41086a2205200341086a290000370300200220043703182003102f4197cfc800ad4280808080b00284100122032900002104200241286a41086a2206200341086a290000370300200220043703282003102f2002200136025c200241dc006aad4280808080c00084100322032900002104200341086a2900002107200341106a2900002108200241386a41186a2201200341186a290000370300200241386a41106a22092008370300200241386a41086a220a2007370300200220043703382003102f024041c000102d22030d001036000b200320022903183700002003200229032837001020032002290338370020200341086a2005290300370000200341186a2006290300370000200341286a200a290300370000200341306a2009290300370000200341386a20012903003700002002200341c000109c01200241106a290300210720022903002104200229030821082003102f200041106a2007370300200020083703082000200442002004a71b370300200241e0006a24000bc70305027f017e027f027e027f230041d0006b2202240041eba1ca00ad4280808080f00084100122032900002104200241086a41086a2205200341086a290000370300200220043703082003102f41e5cac800ad4280808080800284100122032900002104200241186a41086a2206200341086a290000370300200220043703182003102f2002200136024c200241cc006aad4280808080c00084100322032900002104200341086a2900002107200341106a2900002108200241286a41186a2201200341186a290000370300200241286a41106a22092008370300200241286a41086a220a2007370300200220043703282003102f024041c000102d2203450d00200320022903083700002003200229031837001020032002290328370020200341086a2005290300370000200341186a2006290300370000200341286a200a290300370000200341306a2009290300370000200341386a2001290300370000200241286a2003109f0502400240200228022c2201450d0020002001360204200041086a2002290330370200200228022821010c010b20004190bdc600360204200041086a4200370200410021010b200020013602002003102f200241d0006a24000f0b1036000b871505027f017e017f027e0e7f23004190046b2204240041eba1ca00ad4280808080f00084100122052900002106200441f0016a41086a200541086a290000370300200420063703f0012005102f41c8abc900ad4280808080d0008410012205290000210620044190036a41086a200541086a29000037030020042006370390032005102f024002400240024002404120102d2205450d0020052001290000370000200541186a200141186a290000370000200541106a200141106a290000370000200541086a200141086a2900003700002005ad4280808080800484100322072900002106200741086a2900002108200741106a2900002109200441d0016a41186a220a200741186a290000370300200441d0016a41106a220b2009370300200441d0016a41086a2008370300200420063703d0012007102f2005102f41c000102d2205450d00200520042903f0013700002005200429039003370010200520042903d001370020200541086a200441f0016a41086a290300370000200541186a20044190036a41086a290300370000200541286a200441d0016a41086a290300370000200541306a200b290300370000200541386a200a290300370000200441c0003602e402200420053602e00220044180016a2005ad42808080808008841002107302402004280280012207450d00200428028401210b0240024020044180016a41086a280200450d0020072d0000220a4103490d010b200441003602f801200442013703f0012004410b3602342004200441e0026a3602302004200441f0016a360208200441a4036a41013602002004420137029403200441b885c700360290032004200441306a3602a003200441086a41d8dbc10020044190036a103c1a20043502f80142208620043502f001841008024020042802f401450d0020042802f001102f0b4103210a0b0240200b450d002007102f0b200a4103470d020b2005102f0c020b1036000b2005102f02400240200a0e03020001020b2004200237038001200420033703880102400240200220038450450d004200210342002106420021020c010b20042001360230200441f0016a200120044180016a200441306a10a002024020042802f0014101470d004200210620042903f8012103420121020c010b20044198026a290300210620044190026a29030021034200210220042903f8014201520d00200441f0016a41106a2903002108200441c8036a200441f0016a41186a290300370300200441c0036a200837030020044190036a41086a41003a000020044199036a2001290000370000200441a1036a200141086a290000370000200441a9036a200141106a290000370000200441b1036a200141186a290000370000200441033a00900341c8e1ca00410020044190036a108c010b200242018521020c030b20044180016a200110b50320042d0080014101470d01200441c8006a20044199016a290000370300200441c0006a20044191016a290000370300200441386a20044189016a2900003703002004200429008101370330200420023703e002200420033703e80202400240200220038450450d004200210242002103420021060c010b2004200441306a360208200441f0016a200441306a200441e0026a200441086a10a002024020042802f0014101470d004200210620042903f8012103420121020c010b20044198026a290300210620044190026a29030021034200210220042903f8014201520d00200441f0016a41106a2903002108200441c8036a200441f0016a41186a290300370300200441c0036a200837030020044190036a41086a41003a000020044199036a2004290330370000200441a1036a200441306a41086a290300370000200441a9036a200441306a41106a290300370000200441b1036a200441306a41186a290300370000200441033a00900341c8e1ca00410020044190036a108c010b200242018521020c020b20044180016a200110b50320042d0080014101470d00200441e0026a41186a20044199016a2205290000370300200441e0026a41106a20044191016a2207290000370300200441e0026a41086a20044189016a220a29000037030020042004290081013703e00220044190036a200441e0026a108103200441d0016a41186a220b2005290000370300200441d0016a41106a22052007290000370300200441d0016a41086a2207200a29000037030020042004290081013703d00120042802bc03220c4102460d00200441f0016a41186a220a200b290300370300200441f0016a41106a220d2005290300370300200441f0016a41086a220e2007290300370300200441f0016a41286a220f20044190036a41086a290300370300200441f0016a41306a221020044190036a41106a290300370300200441f0016a41386a221120044190036a41186a290300370300200441f0016a41c0006a221220044190036a41206a290300370300200441f0016a41c8006a221320044190036a41286a280200360200200420042903d0013703f001200420042903900337039002200441086a41206a221420044190036a41d0006a290300370300200441086a41186a221520044190036a41c8006a290300370300200441086a41106a221620044190036a41c0006a290300370300200441086a41086a221720044190036a41386a290300370300200420042903c003370308200441306a200441f0016a41cc0010e8061a20044180016a200441306a41cc0010e8061a200b200441306a41186a2903003703002005200441306a41106a2903003703002007200441306a41086a290300370300200420042903303703d001200f20044180016a41c8006a280200360200200441f0016a41206a20044180016a41c0006a290300370300200a20044180016a41386a290300370300200d20044180016a41306a290300370300200e20044180016a41286a290300370300200420042903a0013703f0012004200c36029c0220102004290308370300201120172903003703002012201629030037030020132015290300370300200441f0016a41d0006a2014290300370300200a2903002106200d200d290300220820027c2209370300200a200620037c2009200854ad7c370300200e2903002106200420042903f001220820027c22093703f001200e200620037c2009200854ad7c370300200420033703d002200420023703c80202400240200220038450450d004200210242002103420021060c010b200420013602dc02200441e0026a2001200441c8026a200441dc026a10a002024020042802e0024101470d004200210620042903e8022103420121020c010b20044188036a290300210620044180036a29030021034200210220042903e8024201520d00200441e0026a41106a2903002108200441c8036a200441e0026a41186a290300370300200441c0036a200837030020044190036a41086a41003a000020044199036a2001290000370000200441a1036a200141086a290000370000200441a9036a200141106a290000370000200441b1036a200141186a290000370000200441033a00900341c8e1ca00410020044190036a108c010b200441d0016a200441f0016a10b603024020044194026a280200450d00200428029002102f0b200242018521020c010b420021020b2000200337030820002002370300200041106a200637030020044190046a24000b13002000410d360204200041c4d1c9003602000b3400200041aa87ca0036020420004100360200200041146a4109360200200041106a4188ddc900360200200041086a42043702000b910101057f230041206b22022400200241186a22034200370300200241106a22044200370300200241086a220542003703002002420037030002404120102d22060d001036000b20062002290300370000200042a0808080800437020420002006360200200641186a2003290300370000200641106a2004290300370000200641086a2005290300370000200241206a24000b130020004102360204200041f8eec9003602000b2d01017f02404108102d22020d001036000b20004288808080800137020420002002360200200242b8173700000b2d01017f02404108102d22020d001036000b20004288808080800137020420002002360200200242c8013700000b130020004104360204200041c8f5c9003602000b34002000419bd9c90036020420004100360200200041146a4101360200200041106a41d085ca00360200200041086a42073702000b100020002802002000280204200110640bbe04020d7f017e230041c0006b22032400200128020822044104742105200128020421062001280200220721010240024002402004450d00200341306a410172210841002104200341306a41026a2109200341206a410172220a41076a210b03402009200720046a220141036a2d00003a00002003200141016a2f00003b0130024020012d0000220c41ac01470d00200141106a21010c020b2003410c6a41026a20092d0000220d3a0000200320032f0130220e3b010c200141046a280200210f200141086a29030021102008200e3b0000200841026a200d3a00002003200c3a0030200320103703382003200f360234200341206a200341306a20021091062003200a2900003703102003200b290000370017024020032d0020220c411f470d002005200441106a2204470d010c030b0b2000200c3a000020002003290310370001200041086a20032900173700000240200541706a2004460d00200141146a2101200520046b41706a2104034002402001417c6a2d00004109470d0002402001280200220928020441ffffffff0371450d002009280200102f200128020021090b2009102f0b200141106a2101200441706a22040d000b0b2006450d022007102f0c020b200720056a22092001460d000340200141106a2104024020012d00004109470d000240200141046a2208280200220128020441ffffffff0371450d002001280200102f200828020021010b2001102f0b2004210120092004470d000b0b02402006450d002007102f0b2000411f3a00000b200341c0006a24000bb4c10202097f017e230041106b2203240002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020012d00000eac01000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f80018101820183018401850186018701880189018a018b018c018d018e018f0190019101920193019401950196019701980199019a019b019c019d019e019f01a001a101a201a301a401a501a601a701a801a901aa01ab01000b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490dae01200441017422062005200620054b1b22064100480dae010240024020040d002006102d21050c010b200228020420042006103121050b2005450dad0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41003a00000cab010b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490dad01200441017422062005200620054b1b22064100480dad010240024020040d002006102d21050c010b200228020420042006103121050b2005450dac0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41013a00000caa010b200241046a210620012d0001210702400240200241086a2802002002410c6a2802002204460d00200628020021050c010b200441016a22052004490dac01200441017422082005200820054b1b22084100480dac010240024020040d002008102d21050c010b200628020020042008103121050b2005450dab0120022005360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200520046a41023a000002400240200241086a28020020082802002204460d00200628020021050c010b200441016a22052004490dac01200441017422082005200820054b1b22084100480dac010240024020040d002008102d21050c010b200628020020042008103121050b2005450dab0120022005360204200241086a20083602002002410c6a28020021040b2002410c6a200441016a360200200520046a42c0818386fcdffffe7c2007410473ad42078342038688a7413f7141c000723a00000ca9010b200241046a210620012d0001210702400240200241086a2802002002410c6a2802002204460d00200628020021050c010b200441016a22052004490dab01200441017422082005200820054b1b22084100480dab010240024020040d002008102d21050c010b200628020020042008103121050b2005450daa0120022005360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200520046a41033a000002400240200241086a28020020082802002204460d00200628020021050c010b200441016a22052004490dab01200441017422082005200820054b1b22084100480dab010240024020040d002008102d21050c010b200628020020042008103121050b2005450daa0120022005360204200241086a20083602002002410c6a28020021040b2002410c6a200441016a360200200520046a42c0818386fcdffffe7c2007410473ad42078342038688a7413f7141c000723a00000ca8010b200241046a210620012d0001210702400240200241086a2802002002410c6a2802002204460d00200628020021050c010b200441016a22052004490daa01200441017422082005200820054b1b22084100480daa010240024020040d002008102d21050c010b200628020020042008103121050b2005450da90120022005360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200520046a41043a000002400240200241086a28020020082802002204460d00200628020021050c010b200441016a22052004490daa01200441017422082005200820054b1b22084100480daa010240024020040d002008102d21050c010b200628020020042008103121050b2005450da90120022005360204200241086a20083602002002410c6a28020021040b2002410c6a200441016a360200200520046a42c0818386fcdffffe7c2007410473ad42078342038688a7413f7141c000723a00000ca7010b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490da901200441017422062005200620054b1b22064100480da9010240024020040d002006102d21050c010b200228020420042006103121050b2005450da80120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41053a00000ca6010b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490da801200441017422062005200620054b1b22064100480da8010240024020040d002006102d21050c010b200228020420042006103121050b2005450da70120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a410b3a00000ca5010b200241046a2109200141046a280200210502400240200241086a2802002002410c6a2802002204460d00200928020021060c010b200441016a22062004490da701200441017422072006200720064b1b22074100480da7010240024020040d002007102d21060c010b200928020020042007103121060b2006450da60120022006360204200241086a20073602002002410c6a28020021040b2002410c6a2207200441016a360200200620046a410c3a0000200241086a2108034002400240200828020020072802002204460d00200928020021060c010b200441016a22062004490da8012004410174220a2006200a20064b1b220a4100480da8010240024020040d00200a102d21060c010b20092802002004200a103121060b2006450da701200220063602042008200a360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000ca5010b0b200241046a2109200141046a280200210502400240200241086a2802002002410c6a2802002204460d00200928020021060c010b200441016a22062004490da601200441017422072006200720064b1b22074100480da6010240024020040d002007102d21060c010b200928020020042007103121060b2006450da50120022006360204200241086a20073602002002410c6a28020021040b2002410c6a2207200441016a360200200620046a410d3a0000200241086a2108034002400240200828020020072802002204460d00200928020021060c010b200441016a22062004490da7012004410174220a2006200a20064b1b220a4100480da7010240024020040d00200a102d21060c010b20092802002004200a103121060b2006450da601200220063602042008200a360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000ca4010b0b200241046a210902400240200241086a2802002002410c6a2802002204460d00200928020021050c010b200441016a22052004490da501200441017422062005200620054b1b22064100480da5010240024020040d002006102d21050c010b200928020020042006103121050b2005450da40120022005360204200241086a20063602002002410c6a28020021040b2002410c6a2207200441016a360200200520046a410e3a0000200320012802042204280204220520042802002204200420054102746a20021092062003210420032d0000411f470dab0120012802042802082105200241086a2108034002400240200828020020072802002204460d00200928020021060c010b200441016a22062004490da6012004410174220a2006200a20064b1b220a4100480da6010240024020040d00200a102d21060c010b20092802002004200a103121060b2006450da501200220063602042008200a360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000ca3010b0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490da401200441017422062005200620054b1b22064100480da4010240024020040d002006102d21050c010b200228020420042006103121050b2005450da30120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a410f3a00000ca1010b200241046a2109200141046a280200210502400240200241086a2802002002410c6a2802002204460d00200928020021060c010b200441016a22062004490da301200441017422072006200720064b1b22074100480da3010240024020040d002007102d21060c010b200928020020042007103121060b2006450da20120022006360204200241086a20073602002002410c6a28020021040b2002410c6a2207200441016a360200200620046a41103a0000200241086a2108034002400240200828020020072802002204460d00200928020021060c010b200441016a22062004490da4012004410174220a2006200a20064b1b220a4100480da4010240024020040d00200a102d21060c010b20092802002004200a103121060b2006450da301200220063602042008200a360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000ca1010b0b200241046a2109200141046a280200210520012d0001210b02400240200241086a2802002002410c6a2802002204460d00200928020021060c010b200441016a22062004490da201200441017422072006200720064b1b22074100480da2010240024020040d002007102d21060c010b200928020020042007103121060b2006450da10120022006360204200241086a20073602002002410c6a28020021040b2002410c6a2207200441016a360200200620046a41113a0000200241086a2108034002400240200828020020072802002204460d00200928020021060c010b200441016a22062004490da3012004410174220a2006200a20064b1b220a4100480da3010240024020040d00200a102d21060c010b20092802002004200a103121060b2006450da201200220063602042008200a360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000b02400240200241086a2802002002410c6a2802002204460d00200928020021050c010b200441016a22052004490da201200441017422062005200620054b1b22064100480da2010240024020040d002006102d21050c010b200928020020042006103121050b2005450da10120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a200b3a00000c9f010b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490da101200441017422062005200620054b1b22064100480da1010240024020040d002006102d21050c010b200228020420042006103121050b2005450da00120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a411a3a00000c9e010b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490da001200441017422062005200620054b1b22064100480da0010240024020040d002006102d21050c010b200228020420042006103121050b2005450d9f0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a411b3a00000c9d010b200241046a2109200141046a280200210502400240200241086a2802002002410c6a2802002204460d00200928020021060c010b200441016a22062004490d9f01200441017422072006200720064b1b22074100480d9f010240024020040d002007102d21060c010b200928020020042007103121060b2006450d9e0120022006360204200241086a20073602002002410c6a28020021040b2002410c6a2207200441016a360200200620046a41203a0000200241086a2108034002400240200828020020072802002204460d00200928020021060c010b200441016a22062004490da0012004410174220a2006200a20064b1b220a4100480da0010240024020040d00200a102d21060c010b20092802002004200a103121060b2006450d9f01200220063602042008200a360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000c9d010b0b200241046a2109200141046a280200210502400240200241086a2802002002410c6a2802002204460d00200928020021060c010b200441016a22062004490d9e01200441017422072006200720064b1b22074100480d9e010240024020040d002007102d21060c010b200928020020042007103121060b2006450d9d0120022006360204200241086a20073602002002410c6a28020021040b2002410c6a2207200441016a360200200620046a41213a0000200241086a2108034002400240200828020020072802002204460d00200928020021060c010b200441016a22062004490d9f012004410174220a2006200a20064b1b220a4100480d9f010240024020040d00200a102d21060c010b20092802002004200a103121060b2006450d9e01200220063602042008200a360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000c9c010b0b200241046a2109200141046a280200210502400240200241086a2802002002410c6a2802002204460d00200928020021060c010b200441016a22062004490d9d01200441017422072006200720064b1b22074100480d9d010240024020040d002007102d21060c010b200928020020042007103121060b2006450d9c0120022006360204200241086a20073602002002410c6a28020021040b2002410c6a2207200441016a360200200620046a41223a0000200241086a2108034002400240200828020020072802002204460d00200928020021060c010b200441016a22062004490d9e012004410174220a2006200a20064b1b220a4100480d9e010240024020040d00200a102d21060c010b20092802002004200a103121060b2006450d9d01200220063602042008200a360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000c9b010b0b200241046a2109200141046a280200210502400240200241086a2802002002410c6a2802002204460d00200928020021060c010b200441016a22062004490d9c01200441017422072006200720064b1b22074100480d9c010240024020040d002007102d21060c010b200928020020042007103121060b2006450d9b0120022006360204200241086a20073602002002410c6a28020021040b2002410c6a2207200441016a360200200620046a41233a0000200241086a2108034002400240200828020020072802002204460d00200928020021060c010b200441016a22062004490d9d012004410174220a2006200a20064b1b220a4100480d9d010240024020040d00200a102d21060c010b20092802002004200a103121060b2006450d9c01200220063602042008200a360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000c9a010b0b200241046a2109200141046a280200210502400240200241086a2802002002410c6a2802002204460d00200928020021060c010b200441016a22062004490d9b01200441017422072006200720064b1b22074100480d9b010240024020040d002007102d21060c010b200928020020042007103121060b2006450d9a0120022006360204200241086a20073602002002410c6a28020021040b2002410c6a2207200441016a360200200620046a41243a0000200241086a2108034002400240200828020020072802002204460d00200928020021060c010b200441016a22062004490d9c012004410174220a2006200a20064b1b220a4100480d9c010240024020040d00200a102d21060c010b20092802002004200a103121060b2006450d9b01200220063602042008200a360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000c99010b0b200241046a210a200141086a2802002105200141046a280200210602400240200241086a2802002002410c6a2802002204460d00200a28020021070c010b200441016a22072004490d9a01200441017422082007200820074b1b22084100480d9a010240024020040d002008102d21070c010b200a28020020042008103121070b2007450d990120022007360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200720046a41283a0000200241086a2109034002400240200928020020082802002204460d00200a28020021070c010b200441016a22072004490d9b012004410174220b2007200b20074b1b220b4100480d9b010240024020040d00200b102d21070c010b200a2802002004200b103121070b2007450d9a01200220073602042009200b360200200828020021040b2008200441016a360200200720046a200641807f72200641ff0071200641077622041b3a00002004210620040d000b2002410c6a2107200241086a2108034002400240200828020020072802002204460d00200a28020021060c010b200441016a22062004490d9b01200441017422092006200920064b1b22094100480d9b010240024020040d002009102d21060c010b200a28020020042009103121060b2006450d9a012002200636020420082009360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000c98010b0b200241046a210a200141086a2802002105200141046a280200210602400240200241086a2802002002410c6a2802002204460d00200a28020021070c010b200441016a22072004490d9901200441017422082007200820074b1b22084100480d99010240024020040d002008102d21070c010b200a28020020042008103121070b2007450d980120022007360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200720046a41293a0000200241086a2109034002400240200928020020082802002204460d00200a28020021070c010b200441016a22072004490d9a012004410174220b2007200b20074b1b220b4100480d9a010240024020040d00200b102d21070c010b200a2802002004200b103121070b2007450d9901200220073602042009200b360200200828020021040b2008200441016a360200200720046a200641807f72200641ff0071200641077622041b3a00002004210620040d000b2002410c6a2107200241086a2108034002400240200828020020072802002204460d00200a28020021060c010b200441016a22062004490d9a01200441017422092006200920064b1b22094100480d9a010240024020040d002009102d21060c010b200a28020020042009103121060b2006450d99012002200636020420082009360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000c97010b0b200241046a210a200141086a2802002105200141046a280200210602400240200241086a2802002002410c6a2802002204460d00200a28020021070c010b200441016a22072004490d9801200441017422082007200820074b1b22084100480d98010240024020040d002008102d21070c010b200a28020020042008103121070b2007450d970120022007360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200720046a412a3a0000200241086a2109034002400240200928020020082802002204460d00200a28020021070c010b200441016a22072004490d99012004410174220b2007200b20074b1b220b4100480d99010240024020040d00200b102d21070c010b200a2802002004200b103121070b2007450d9801200220073602042009200b360200200828020021040b2008200441016a360200200720046a200641807f72200641ff0071200641077622041b3a00002004210620040d000b2002410c6a2107200241086a2108034002400240200828020020072802002204460d00200a28020021060c010b200441016a22062004490d9901200441017422092006200920064b1b22094100480d99010240024020040d002009102d21060c010b200a28020020042009103121060b2006450d98012002200636020420082009360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000c96010b0b200241046a210a200141086a2802002105200141046a280200210602400240200241086a2802002002410c6a2802002204460d00200a28020021070c010b200441016a22072004490d9701200441017422082007200820074b1b22084100480d97010240024020040d002008102d21070c010b200a28020020042008103121070b2007450d960120022007360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200720046a412b3a0000200241086a2109034002400240200928020020082802002204460d00200a28020021070c010b200441016a22072004490d98012004410174220b2007200b20074b1b220b4100480d98010240024020040d00200b102d21070c010b200a2802002004200b103121070b2007450d9701200220073602042009200b360200200828020021040b2008200441016a360200200720046a200641807f72200641ff0071200641077622041b3a00002004210620040d000b2002410c6a2107200241086a2108034002400240200828020020072802002204460d00200a28020021060c010b200441016a22062004490d9801200441017422092006200920064b1b22094100480d98010240024020040d002009102d21060c010b200a28020020042009103121060b2006450d97012002200636020420082009360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000c95010b0b200241046a210a200141086a2802002105200141046a280200210602400240200241086a2802002002410c6a2802002204460d00200a28020021070c010b200441016a22072004490d9601200441017422082007200820074b1b22084100480d96010240024020040d002008102d21070c010b200a28020020042008103121070b2007450d950120022007360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200720046a412c3a0000200241086a2109034002400240200928020020082802002204460d00200a28020021070c010b200441016a22072004490d97012004410174220b2007200b20074b1b220b4100480d97010240024020040d00200b102d21070c010b200a2802002004200b103121070b2007450d9601200220073602042009200b360200200828020021040b2008200441016a360200200720046a200641807f72200641ff0071200641077622041b3a00002004210620040d000b2002410c6a2107200241086a2108034002400240200828020020072802002204460d00200a28020021060c010b200441016a22062004490d9701200441017422092006200920064b1b22094100480d97010240024020040d002009102d21060c010b200a28020020042009103121060b2006450d96012002200636020420082009360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000c94010b0b200241046a210a200141086a2802002106200141046a280200210502400240200241086a2802002002410c6a2802002204460d00200a28020021070c010b200441016a22072004490d9501200441017422082007200820074b1b22084100480d95010240024020040d002008102d21070c010b200a28020020042008103121070b2007450d940120022007360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200720046a412d3a0000200241086a2109034002400240200928020020082802002204460d00200a28020021070c010b200441016a22072004490d96012004410174220b2007200b20074b1b220b4100480d96010240024020040d00200b102d21070c010b200a2802002004200b103121070b2007450d9501200220073602042009200b360200200828020021040b2008200441016a360200200720046a200541807f72200541ff0071200541077622041b3a00002004210520040d000b2002410c6a2107200241086a2108034002400240200828020020072802002204460d00200a28020021050c010b200441016a22052004490d9601200441017422092005200920054b1b22094100480d96010240024020040d002009102d21050c010b200a28020020042009103121050b2005450d95012002200536020420082009360200200728020021040b2007200441016a360200200520046a200641807f72200641ff0071200641077622041b3a00002004210620040d000c93010b0b200241046a210a200141086a2802002106200141046a280200210502400240200241086a2802002002410c6a2802002204460d00200a28020021070c010b200441016a22072004490d9401200441017422082007200820074b1b22084100480d94010240024020040d002008102d21070c010b200a28020020042008103121070b2007450d930120022007360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200720046a412e3a0000200241086a2109034002400240200928020020082802002204460d00200a28020021070c010b200441016a22072004490d95012004410174220b2007200b20074b1b220b4100480d95010240024020040d00200b102d21070c010b200a2802002004200b103121070b2007450d9401200220073602042009200b360200200828020021040b2008200441016a360200200720046a200541807f72200541ff0071200541077622041b3a00002004210520040d000b2002410c6a2107200241086a2108034002400240200828020020072802002204460d00200a28020021050c010b200441016a22052004490d9501200441017422092005200920054b1b22094100480d95010240024020040d002009102d21050c010b200a28020020042009103121050b2005450d94012002200536020420082009360200200728020021040b2007200441016a360200200520046a200641807f72200641ff0071200641077622041b3a00002004210620040d000c92010b0b200241046a210a200141086a2802002105200141046a280200210602400240200241086a2802002002410c6a2802002204460d00200a28020021070c010b200441016a22072004490d9301200441017422082007200820074b1b22084100480d93010240024020040d002008102d21070c010b200a28020020042008103121070b2007450d920120022007360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200720046a412f3a0000200241086a2109034002400240200928020020082802002204460d00200a28020021070c010b200441016a22072004490d94012004410174220b2007200b20074b1b220b4100480d94010240024020040d00200b102d21070c010b200a2802002004200b103121070b2007450d9301200220073602042009200b360200200828020021040b2008200441016a360200200720046a200641807f72200641ff0071200641077622041b3a00002004210620040d000b2002410c6a2107200241086a2108034002400240200828020020072802002204460d00200a28020021060c010b200441016a22062004490d9401200441017422092006200920064b1b22094100480d94010240024020040d002009102d21060c010b200a28020020042009103121060b2006450d93012002200636020420082009360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000c91010b0b200241046a210a200141086a2802002105200141046a280200210602400240200241086a2802002002410c6a2802002204460d00200a28020021070c010b200441016a22072004490d9201200441017422082007200820074b1b22084100480d92010240024020040d002008102d21070c010b200a28020020042008103121070b2007450d910120022007360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200720046a41303a0000200241086a2109034002400240200928020020082802002204460d00200a28020021070c010b200441016a22072004490d93012004410174220b2007200b20074b1b220b4100480d93010240024020040d00200b102d21070c010b200a2802002004200b103121070b2007450d9201200220073602042009200b360200200828020021040b2008200441016a360200200720046a200641807f72200641ff0071200641077622041b3a00002004210620040d000b2002410c6a2107200241086a2108034002400240200828020020072802002204460d00200a28020021060c010b200441016a22062004490d9301200441017422092006200920064b1b22094100480d93010240024020040d002009102d21060c010b200a28020020042009103121060b2006450d92012002200636020420082009360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000c90010b0b200241046a210a200141086a2802002106200141046a280200210502400240200241086a2802002002410c6a2802002204460d00200a28020021070c010b200441016a22072004490d9101200441017422082007200820074b1b22084100480d91010240024020040d002008102d21070c010b200a28020020042008103121070b2007450d900120022007360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200720046a41313a0000200241086a2109034002400240200928020020082802002204460d00200a28020021070c010b200441016a22072004490d92012004410174220b2007200b20074b1b220b4100480d92010240024020040d00200b102d21070c010b200a2802002004200b103121070b2007450d9101200220073602042009200b360200200828020021040b2008200441016a360200200720046a200541807f72200541ff0071200541077622041b3a00002004210520040d000b2002410c6a2107200241086a2108034002400240200828020020072802002204460d00200a28020021050c010b200441016a22052004490d9201200441017422092005200920054b1b22094100480d92010240024020040d002009102d21050c010b200a28020020042009103121050b2005450d91012002200536020420082009360200200728020021040b2007200441016a360200200520046a200641807f72200641ff0071200641077622041b3a00002004210620040d000c8f010b0b200241046a210a200141086a2802002106200141046a280200210502400240200241086a2802002002410c6a2802002204460d00200a28020021070c010b200441016a22072004490d9001200441017422082007200820074b1b22084100480d90010240024020040d002008102d21070c010b200a28020020042008103121070b2007450d8f0120022007360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200720046a41323a0000200241086a2109034002400240200928020020082802002204460d00200a28020021070c010b200441016a22072004490d91012004410174220b2007200b20074b1b220b4100480d91010240024020040d00200b102d21070c010b200a2802002004200b103121070b2007450d9001200220073602042009200b360200200828020021040b2008200441016a360200200720046a200541807f72200541ff0071200541077622041b3a00002004210520040d000b2002410c6a2107200241086a2108034002400240200828020020072802002204460d00200a28020021050c010b200441016a22052004490d9101200441017422092005200920054b1b22094100480d91010240024020040d002009102d21050c010b200a28020020042009103121050b2005450d90012002200536020420082009360200200728020021040b2007200441016a360200200520046a200641807f72200641ff0071200641077622041b3a00002004210620040d000c8e010b0b200241046a210a200141086a2802002105200141046a280200210602400240200241086a2802002002410c6a2802002204460d00200a28020021070c010b200441016a22072004490d8f01200441017422082007200820074b1b22084100480d8f010240024020040d002008102d21070c010b200a28020020042008103121070b2007450d8e0120022007360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200720046a41333a0000200241086a2109034002400240200928020020082802002204460d00200a28020021070c010b200441016a22072004490d90012004410174220b2007200b20074b1b220b4100480d90010240024020040d00200b102d21070c010b200a2802002004200b103121070b2007450d8f01200220073602042009200b360200200828020021040b2008200441016a360200200720046a200641807f72200641ff0071200641077622041b3a00002004210620040d000b2002410c6a2107200241086a2108034002400240200828020020072802002204460d00200a28020021060c010b200441016a22062004490d9001200441017422092006200920064b1b22094100480d90010240024020040d002009102d21060c010b200a28020020042009103121060b2006450d8f012002200636020420082009360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000c8d010b0b200241046a210a200141086a2802002105200141046a280200210602400240200241086a2802002002410c6a2802002204460d00200a28020021070c010b200441016a22072004490d8e01200441017422082007200820074b1b22084100480d8e010240024020040d002008102d21070c010b200a28020020042008103121070b2007450d8d0120022007360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200720046a41343a0000200241086a2109034002400240200928020020082802002204460d00200a28020021070c010b200441016a22072004490d8f012004410174220b2007200b20074b1b220b4100480d8f010240024020040d00200b102d21070c010b200a2802002004200b103121070b2007450d8e01200220073602042009200b360200200828020021040b2008200441016a360200200720046a200641807f72200641ff0071200641077622041b3a00002004210620040d000b2002410c6a2107200241086a2108034002400240200828020020072802002204460d00200a28020021060c010b200441016a22062004490d8f01200441017422092006200920064b1b22094100480d8f010240024020040d002009102d21060c010b200a28020020042009103121060b2006450d8e012002200636020420082009360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000c8c010b0b200241046a210a200141086a2802002105200141046a280200210602400240200241086a2802002002410c6a2802002204460d00200a28020021070c010b200441016a22072004490d8d01200441017422082007200820074b1b22084100480d8d010240024020040d002008102d21070c010b200a28020020042008103121070b2007450d8c0120022007360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200720046a41353a0000200241086a2109034002400240200928020020082802002204460d00200a28020021070c010b200441016a22072004490d8f012004410174220b2007200b20074b1b220b4100480d8f010240024020040d00200b102d21070c010b200a2802002004200b103121070b2007450d8d01200220073602042009200b360200200828020021040b2008200441016a360200200720046a200641807f72200641ff0071200641077622041b3a00002004210620040d000b2002410c6a2107200241086a2108034002400240200828020020072802002204460d00200a28020021060c010b200441016a22062004490d8f01200441017422092006200920064b1b22094100480d8f010240024020040d002009102d21060c010b200a28020020042009103121060b2006450d90012002200636020420082009360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000c8b010b0b200241046a210a200141086a2802002105200141046a280200210602400240200241086a2802002002410c6a2802002204460d00200a28020021070c010b200441016a22072004490d8d01200441017422082007200820074b1b22084100480d8d010240024020040d002008102d21070c010b200a28020020042008103121070b2007450d8e0120022007360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200720046a41363a0000200241086a2109034002400240200928020020082802002204460d00200a28020021070c010b200441016a22072004490d8e012004410174220b2007200b20074b1b220b4100480d8e010240024020040d00200b102d21070c010b200a2802002004200b103121070b2007450d8f01200220073602042009200b360200200828020021040b2008200441016a360200200720046a200641807f72200641ff0071200641077622041b3a00002004210620040d000b2002410c6a2107200241086a2108034002400240200828020020072802002204460d00200a28020021060c010b200441016a22062004490d8e01200441017422092006200920064b1b22094100480d8e010240024020040d002009102d21060c010b200a28020020042009103121060b2006450d8f012002200636020420082009360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000c8a010b0b200241046a210a200141086a2802002106200141046a280200210502400240200241086a2802002002410c6a2802002204460d00200a28020021070c010b200441016a22072004490d8c01200441017422082007200820074b1b22084100480d8c010240024020040d002008102d21070c010b200a28020020042008103121070b2007450d8d0120022007360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200720046a41373a0000200241086a2109034002400240200928020020082802002204460d00200a28020021070c010b200441016a22072004490d8d012004410174220b2007200b20074b1b220b4100480d8d010240024020040d00200b102d21070c010b200a2802002004200b103121070b2007450d8e01200220073602042009200b360200200828020021040b2008200441016a360200200720046a200541807f72200541ff0071200541077622041b3a00002004210520040d000b2002410c6a2107200241086a2108034002400240200828020020072802002204460d00200a28020021050c010b200441016a22052004490d8d01200441017422092005200920054b1b22094100480d8d010240024020040d002009102d21050c010b200a28020020042009103121050b2005450d8e012002200536020420082009360200200728020021040b2007200441016a360200200520046a200641807f72200641ff0071200641077622041b3a00002004210620040d000c89010b0b200241046a210a200141086a2802002105200141046a280200210602400240200241086a2802002002410c6a2802002204460d00200a28020021070c010b200441016a22072004490d8b01200441017422082007200820074b1b22084100480d8b010240024020040d002008102d21070c010b200a28020020042008103121070b2007450d8c0120022007360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200720046a41383a0000200241086a2109034002400240200928020020082802002204460d00200a28020021070c010b200441016a22072004490d8c012004410174220b2007200b20074b1b220b4100480d8c010240024020040d00200b102d21070c010b200a2802002004200b103121070b2007450d8d01200220073602042009200b360200200828020021040b2008200441016a360200200720046a200641807f72200641ff0071200641077622041b3a00002004210620040d000b2002410c6a2107200241086a2108034002400240200828020020072802002204460d00200a28020021060c010b200441016a22062004490d8c01200441017422092006200920064b1b22094100480d8c010240024020040d002009102d21060c010b200a28020020042009103121060b2006450d8d012002200636020420082009360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000c88010b0b200241046a210a200141086a2802002106200141046a280200210502400240200241086a2802002002410c6a2802002204460d00200a28020021070c010b200441016a22072004490d8a01200441017422082007200820074b1b22084100480d8a010240024020040d002008102d21070c010b200a28020020042008103121070b2007450d8b0120022007360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200720046a41393a0000200241086a2109034002400240200928020020082802002204460d00200a28020021070c010b200441016a22072004490d8b012004410174220b2007200b20074b1b220b4100480d8b010240024020040d00200b102d21070c010b200a2802002004200b103121070b2007450d8c01200220073602042009200b360200200828020021040b2008200441016a360200200720046a200541807f72200541ff0071200541077622041b3a00002004210520040d000b2002410c6a2107200241086a2108034002400240200828020020072802002204460d00200a28020021050c010b200441016a22052004490d8b01200441017422092005200920054b1b22094100480d8b010240024020040d002009102d21050c010b200a28020020042009103121050b2005450d8c012002200536020420082009360200200728020021040b2007200441016a360200200520046a200641807f72200641ff0071200641077622041b3a00002004210620040d000c87010b0b200241046a210a200141086a2802002106200141046a280200210502400240200241086a2802002002410c6a2802002204460d00200a28020021070c010b200441016a22072004490d8901200441017422082007200820074b1b22084100480d89010240024020040d002008102d21070c010b200a28020020042008103121070b2007450d8a0120022007360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200720046a413a3a0000200241086a2109034002400240200928020020082802002204460d00200a28020021070c010b200441016a22072004490d8a012004410174220b2007200b20074b1b220b4100480d8a010240024020040d00200b102d21070c010b200a2802002004200b103121070b2007450d8b01200220073602042009200b360200200828020021040b2008200441016a360200200720046a200541807f72200541ff0071200541077622041b3a00002004210520040d000b2002410c6a2107200241086a2108034002400240200828020020072802002204460d00200a28020021050c010b200441016a22052004490d8a01200441017422092005200920054b1b22094100480d8a010240024020040d002009102d21050c010b200a28020020042009103121050b2005450d8b012002200536020420082009360200200728020021040b2007200441016a360200200520046a200641807f72200641ff0071200641077622041b3a00002004210620040d000c86010b0b200241046a210a200141086a2802002105200141046a280200210602400240200241086a2802002002410c6a2802002204460d00200a28020021070c010b200441016a22072004490d8801200441017422082007200820074b1b22084100480d88010240024020040d002008102d21070c010b200a28020020042008103121070b2007450d890120022007360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200720046a413b3a0000200241086a2109034002400240200928020020082802002204460d00200a28020021070c010b200441016a22072004490d89012004410174220b2007200b20074b1b220b4100480d89010240024020040d00200b102d21070c010b200a2802002004200b103121070b2007450d8a01200220073602042009200b360200200828020021040b2008200441016a360200200720046a200641807f72200641ff0071200641077622041b3a00002004210620040d000b2002410c6a2107200241086a2108034002400240200828020020072802002204460d00200a28020021060c010b200441016a22062004490d8901200441017422092006200920064b1b22094100480d89010240024020040d002009102d21060c010b200a28020020042009103121060b2006450d8a012002200636020420082009360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000c85010b0b200241046a210a200141086a2802002105200141046a280200210602400240200241086a2802002002410c6a2802002204460d00200a28020021070c010b200441016a22072004490d8701200441017422082007200820074b1b22084100480d87010240024020040d002008102d21070c010b200a28020020042008103121070b2007450d880120022007360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200720046a413c3a0000200241086a2109034002400240200928020020082802002204460d00200a28020021070c010b200441016a22072004490d88012004410174220b2007200b20074b1b220b4100480d88010240024020040d00200b102d21070c010b200a2802002004200b103121070b2007450d8901200220073602042009200b360200200828020021040b2008200441016a360200200720046a200641807f72200641ff0071200641077622041b3a00002004210620040d000b2002410c6a2107200241086a2108034002400240200828020020072802002204460d00200a28020021060c010b200441016a22062004490d8801200441017422092006200920064b1b22094100480d88010240024020040d002009102d21060c010b200a28020020042009103121060b2006450d89012002200636020420082009360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000c84010b0b200241046a210a200141086a2802002105200141046a280200210602400240200241086a2802002002410c6a2802002204460d00200a28020021070c010b200441016a22072004490d8601200441017422082007200820074b1b22084100480d86010240024020040d002008102d21070c010b200a28020020042008103121070b2007450d870120022007360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200720046a413d3a0000200241086a2109034002400240200928020020082802002204460d00200a28020021070c010b200441016a22072004490d87012004410174220b2007200b20074b1b220b4100480d87010240024020040d00200b102d21070c010b200a2802002004200b103121070b2007450d8801200220073602042009200b360200200828020021040b2008200441016a360200200720046a200641807f72200641ff0071200641077622041b3a00002004210620040d000b2002410c6a2107200241086a2108034002400240200828020020072802002204460d00200a28020021060c010b200441016a22062004490d8701200441017422092006200920064b1b22094100480d87010240024020040d002009102d21060c010b200a28020020042009103121060b2006450d88012002200636020420082009360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000c83010b0b200241046a210a200141086a2802002105200141046a280200210602400240200241086a2802002002410c6a2802002204460d00200a28020021070c010b200441016a22072004490d8501200441017422082007200820074b1b22084100480d85010240024020040d002008102d21070c010b200a28020020042008103121070b2007450d860120022007360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200720046a413e3a0000200241086a2109034002400240200928020020082802002204460d00200a28020021070c010b200441016a22072004490d86012004410174220b2007200b20074b1b220b4100480d86010240024020040d00200b102d21070c010b200a2802002004200b103121070b2007450d8701200220073602042009200b360200200828020021040b2008200441016a360200200720046a200641807f72200641ff0071200641077622041b3a00002004210620040d000b2002410c6a2107200241086a2108034002400240200828020020072802002204460d00200a28020021060c010b200441016a22062004490d8601200441017422092006200920064b1b22094100480d86010240024020040d002009102d21060c010b200a28020020042009103121060b2006450d87012002200636020420082009360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000c82010b0b200241046a210620012d0001210702400240200241086a2802002002410c6a2802002204460d00200628020021050c010b200441016a22052004490d8401200441017422082005200820054b1b22084100480d84010240024020040d002008102d21050c010b200628020020042008103121050b2005450d850120022005360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200520046a413f3a000002400240200241086a28020020082802002204460d00200628020021050c010b200441016a22052004490d8401200441017422082005200820054b1b22084100480d84010240024020040d002008102d21050c010b200628020020042008103121050b2005450d850120022005360204200241086a20083602002002410c6a28020021040b2002410c6a200441016a360200200520046a20073a00000c80010b200241046a210620012d0001210702400240200241086a2802002002410c6a2802002204460d00200628020021050c010b200441016a22052004490d8301200441017422082005200820054b1b22084100480d83010240024020040d002008102d21050c010b200628020020042008103121050b2005450d840120022005360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200520046a41c0003a000002400240200241086a28020020082802002204460d00200628020021050c010b200441016a22052004490d8301200441017422082005200820054b1b22084100480d83010240024020040d002008102d21050c010b200628020020042008103121050b2005450d840120022005360204200241086a20083602002002410c6a28020021040b2002410c6a200441016a360200200520046a20073a00000c7f0b200141046a280200210602400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d8201200441017422072005200720054b1b22074100480d82010240024020040d002007102d21050c010b200228020420042007103121050b2005450d830120022005360204200241086a20073602002002410c6a28020021040b2002410c6a200441016a360200200520046a41c1003a00002003200620021093062003210420032d0000411f470d87010c7e0b200141086a290300210c02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d8101200441017422062005200620054b1b22064100480d81010240024020040d002006102d21050c010b200228020420042006103121050b2005450d820120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41c2003a00002003200c20021094062003210420032d0000411f470d86010c7d0b200241046a2106200141046a280200210702400240200241086a2802002002410c6a2802002204460d00200628020021050c010b200441016a22052004490d8001200441017422082005200820054b1b22084100480d80010240024020040d002008102d21050c010b200628020020042008103121050b2005450d810120022005360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200520046a41c3003a000002400240200241086a2802002205200828020022046b4104490d00200628020021050c010b200441046a22082004490d8001200541017422042008200420084b1b22044100480d80010240024020050d002004102d21050c010b200628020020052004103121050b2005450d810120022005360204200241086a20043602002002410c6a28020021040b2002410c6a200441046a360200200520046a20073600000c7c0b200241046a2106200141086a290300210c02400240200241086a2802002002410c6a2802002204460d00200628020021050c010b200441016a22052004490d7f200441017422072005200720054b1b22074100480d7f0240024020040d002007102d21050c010b200628020020042007103121050b2005450d800120022005360204200241086a20073602002002410c6a28020021040b2002410c6a2207200441016a360200200520046a41c4003a000002400240200241086a2802002205200728020022046b4108490d00200628020021050c010b200441086a22072004490d7f200541017422042007200420074b1b22044100480d7f0240024020050d002004102d21050c010b200628020020052004103121050b2005450d800120022005360204200241086a20043602002002410c6a28020021040b2002410c6a200441086a360200200520046a200c3700000c7b0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d7e200441017422062005200620054b1b22064100480d7e0240024020040d002006102d21050c010b200228020420042006103121050b2005450d7f20022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41c5003a00000c7a0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d7d200441017422062005200620054b1b22064100480d7d0240024020040d002006102d21050c010b200228020420042006103121050b2005450d7e20022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41c6003a00000c790b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d7c200441017422062005200620054b1b22064100480d7c0240024020040d002006102d21050c010b200228020420042006103121050b2005450d7d20022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41c7003a00000c780b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d7b200441017422062005200620054b1b22064100480d7b0240024020040d002006102d21050c010b200228020420042006103121050b2005450d7c20022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41c8003a00000c770b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d7a200441017422062005200620054b1b22064100480d7a0240024020040d002006102d21050c010b200228020420042006103121050b2005450d7b20022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41c9003a00000c760b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d79200441017422062005200620054b1b22064100480d790240024020040d002006102d21050c010b200228020420042006103121050b2005450d7a20022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41ca003a00000c750b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d78200441017422062005200620054b1b22064100480d780240024020040d002006102d21050c010b200228020420042006103121050b2005450d7920022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41cb003a00000c740b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d77200441017422062005200620054b1b22064100480d770240024020040d002006102d21050c010b200228020420042006103121050b2005450d7820022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41cc003a00000c730b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d76200441017422062005200620054b1b22064100480d760240024020040d002006102d21050c010b200228020420042006103121050b2005450d7720022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41cd003a00000c720b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d75200441017422062005200620054b1b22064100480d750240024020040d002006102d21050c010b200228020420042006103121050b2005450d7620022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41ce003a00000c710b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d74200441017422062005200620054b1b22064100480d740240024020040d002006102d21050c010b200228020420042006103121050b2005450d7520022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41cf003a00000c700b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d73200441017422062005200620054b1b22064100480d730240024020040d002006102d21050c010b200228020420042006103121050b2005450d7420022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41d0003a00000c6f0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d72200441017422062005200620054b1b22064100480d720240024020040d002006102d21050c010b200228020420042006103121050b2005450d7320022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41d1003a00000c6e0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d71200441017422062005200620054b1b22064100480d710240024020040d002006102d21050c010b200228020420042006103121050b2005450d7220022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41d2003a00000c6d0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d70200441017422062005200620054b1b22064100480d700240024020040d002006102d21050c010b200228020420042006103121050b2005450d7120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41d3003a00000c6c0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d6f200441017422062005200620054b1b22064100480d6f0240024020040d002006102d21050c010b200228020420042006103121050b2005450d7020022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41d4003a00000c6b0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d6e200441017422062005200620054b1b22064100480d6e0240024020040d002006102d21050c010b200228020420042006103121050b2005450d6f20022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41d5003a00000c6a0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d6d200441017422062005200620054b1b22064100480d6d0240024020040d002006102d21050c010b200228020420042006103121050b2005450d6e20022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41d6003a00000c690b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d6c200441017422062005200620054b1b22064100480d6c0240024020040d002006102d21050c010b200228020420042006103121050b2005450d6d20022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41d7003a00000c680b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d6b200441017422062005200620054b1b22064100480d6b0240024020040d002006102d21050c010b200228020420042006103121050b2005450d6c20022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41d8003a00000c670b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d6a200441017422062005200620054b1b22064100480d6a0240024020040d002006102d21050c010b200228020420042006103121050b2005450d6b20022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41d9003a00000c660b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d69200441017422062005200620054b1b22064100480d690240024020040d002006102d21050c010b200228020420042006103121050b2005450d6a20022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41da003a00000c650b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d68200441017422062005200620054b1b22064100480d680240024020040d002006102d21050c010b200228020420042006103121050b2005450d6920022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41db003a00000c640b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d67200441017422062005200620054b1b22064100480d670240024020040d002006102d21050c010b200228020420042006103121050b2005450d6820022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41dc003a00000c630b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d66200441017422062005200620054b1b22064100480d660240024020040d002006102d21050c010b200228020420042006103121050b2005450d6720022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41dd003a00000c620b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d65200441017422062005200620054b1b22064100480d650240024020040d002006102d21050c010b200228020420042006103121050b2005450d6620022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41de003a00000c610b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d64200441017422062005200620054b1b22064100480d640240024020040d002006102d21050c010b200228020420042006103121050b2005450d6520022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41df003a00000c600b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d63200441017422062005200620054b1b22064100480d630240024020040d002006102d21050c010b200228020420042006103121050b2005450d6420022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41e0003a00000c5f0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d62200441017422062005200620054b1b22064100480d620240024020040d002006102d21050c010b200228020420042006103121050b2005450d6320022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41e1003a00000c5e0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d61200441017422062005200620054b1b22064100480d610240024020040d002006102d21050c010b200228020420042006103121050b2005450d6220022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41e2003a00000c5d0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d60200441017422062005200620054b1b22064100480d600240024020040d002006102d21050c010b200228020420042006103121050b2005450d6120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41e3003a00000c5c0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d5f200441017422062005200620054b1b22064100480d5f0240024020040d002006102d21050c010b200228020420042006103121050b2005450d6020022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41e4003a00000c5b0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d5e200441017422062005200620054b1b22064100480d5e0240024020040d002006102d21050c010b200228020420042006103121050b2005450d5f20022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41e5003a00000c5a0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d5d200441017422062005200620054b1b22064100480d5d0240024020040d002006102d21050c010b200228020420042006103121050b2005450d5e20022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41e6003a00000c590b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d5c200441017422062005200620054b1b22064100480d5c0240024020040d002006102d21050c010b200228020420042006103121050b2005450d5d20022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41e7003a00000c580b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d5b200441017422062005200620054b1b22064100480d5b0240024020040d002006102d21050c010b200228020420042006103121050b2005450d5c20022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41e8003a00000c570b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d5c200441017422062005200620054b1b22064100480d5c0240024020040d002006102d21050c010b200228020420042006103121050b2005450d5b20022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41e9003a00000c560b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d5b200441017422062005200620054b1b22064100480d5b0240024020040d002006102d21050c010b200228020420042006103121050b2005450d5c20022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41ea003a00000c550b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d5a200441017422062005200620054b1b22064100480d5a0240024020040d002006102d21050c010b200228020420042006103121050b2005450d5b20022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41eb003a00000c540b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d59200441017422062005200620054b1b22064100480d590240024020040d002006102d21050c010b200228020420042006103121050b2005450d5a20022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41ec003a00000c530b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d58200441017422062005200620054b1b22064100480d580240024020040d002006102d21050c010b200228020420042006103121050b2005450d5920022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41ed003a00000c520b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d57200441017422062005200620054b1b22064100480d570240024020040d002006102d21050c010b200228020420042006103121050b2005450d5820022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41ee003a00000c510b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d56200441017422062005200620054b1b22064100480d560240024020040d002006102d21050c010b200228020420042006103121050b2005450d5720022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41ef003a00000c500b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d55200441017422062005200620054b1b22064100480d550240024020040d002006102d21050c010b200228020420042006103121050b2005450d5620022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41f0003a00000c4f0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d54200441017422062005200620054b1b22064100480d540240024020040d002006102d21050c010b200228020420042006103121050b2005450d5520022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41f1003a00000c4e0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d53200441017422062005200620054b1b22064100480d530240024020040d002006102d21050c010b200228020420042006103121050b2005450d5420022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41f2003a00000c4d0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d52200441017422062005200620054b1b22064100480d520240024020040d002006102d21050c010b200228020420042006103121050b2005450d5320022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41f3003a00000c4c0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d51200441017422062005200620054b1b22064100480d510240024020040d002006102d21050c010b200228020420042006103121050b2005450d5220022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41f4003a00000c4b0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d50200441017422062005200620054b1b22064100480d500240024020040d002006102d21050c010b200228020420042006103121050b2005450d5120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41f5003a00000c4a0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d4f200441017422062005200620054b1b22064100480d4f0240024020040d002006102d21050c010b200228020420042006103121050b2005450d5020022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41f6003a00000c490b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d4e200441017422062005200620054b1b22064100480d4e0240024020040d002006102d21050c010b200228020420042006103121050b2005450d4f20022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41f7003a00000c480b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d4d200441017422062005200620054b1b22064100480d4d0240024020040d002006102d21050c010b200228020420042006103121050b2005450d4e20022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41f8003a00000c470b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d4c200441017422062005200620054b1b22064100480d4c0240024020040d002006102d21050c010b200228020420042006103121050b2005450d4d20022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41f9003a00000c460b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d4b200441017422062005200620054b1b22064100480d4b0240024020040d002006102d21050c010b200228020420042006103121050b2005450d4c20022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41fa003a00000c450b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d4a200441017422062005200620054b1b22064100480d4a0240024020040d002006102d21050c010b200228020420042006103121050b2005450d4b20022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41fb003a00000c440b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d49200441017422062005200620054b1b22064100480d490240024020040d002006102d21050c010b200228020420042006103121050b2005450d4a20022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41fc003a00000c430b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d48200441017422062005200620054b1b22064100480d480240024020040d002006102d21050c010b200228020420042006103121050b2005450d4920022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41fd003a00000c420b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d47200441017422062005200620054b1b22064100480d470240024020040d002006102d21050c010b200228020420042006103121050b2005450d4820022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41fe003a00000c410b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d46200441017422062005200620054b1b22064100480d460240024020040d002006102d21050c010b200228020420042006103121050b2005450d4720022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41ff003a00000c400b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d45200441017422062005200620054b1b22064100480d450240024020040d002006102d21050c010b200228020420042006103121050b2005450d4620022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a4180013a00000c3f0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d44200441017422062005200620054b1b22064100480d440240024020040d002006102d21050c010b200228020420042006103121050b2005450d4520022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a4181013a00000c3e0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d43200441017422062005200620054b1b22064100480d430240024020040d002006102d21050c010b200228020420042006103121050b2005450d4420022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a4182013a00000c3d0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d42200441017422062005200620054b1b22064100480d420240024020040d002006102d21050c010b200228020420042006103121050b2005450d4320022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a4183013a00000c3c0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d41200441017422062005200620054b1b22064100480d410240024020040d002006102d21050c010b200228020420042006103121050b2005450d4220022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a4184013a00000c3b0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d40200441017422062005200620054b1b22064100480d400240024020040d002006102d21050c010b200228020420042006103121050b2005450d4120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a4185013a00000c3a0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d3f200441017422062005200620054b1b22064100480d3f0240024020040d002006102d21050c010b200228020420042006103121050b2005450d4020022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a4186013a00000c390b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d3e200441017422062005200620054b1b22064100480d3e0240024020040d002006102d21050c010b200228020420042006103121050b2005450d3f20022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a4187013a00000c380b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d3d200441017422062005200620054b1b22064100480d3d0240024020040d002006102d21050c010b200228020420042006103121050b2005450d3e20022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a4188013a00000c370b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d3c200441017422062005200620054b1b22064100480d3c0240024020040d002006102d21050c010b200228020420042006103121050b2005450d3d20022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a4189013a00000c360b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d3b200441017422062005200620054b1b22064100480d3b0240024020040d002006102d21050c010b200228020420042006103121050b2005450d3c20022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a418a013a00000c350b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d3a200441017422062005200620054b1b22064100480d3a0240024020040d002006102d21050c010b200228020420042006103121050b2005450d3b20022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a418b013a00000c340b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d39200441017422062005200620054b1b22064100480d390240024020040d002006102d21050c010b200228020420042006103121050b2005450d3a20022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a418c013a00000c330b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d38200441017422062005200620054b1b22064100480d380240024020040d002006102d21050c010b200228020420042006103121050b2005450d3920022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a418d013a00000c320b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d37200441017422062005200620054b1b22064100480d370240024020040d002006102d21050c010b200228020420042006103121050b2005450d3820022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a418e013a00000c310b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d36200441017422062005200620054b1b22064100480d360240024020040d002006102d21050c010b200228020420042006103121050b2005450d3720022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a418f013a00000c300b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d35200441017422062005200620054b1b22064100480d350240024020040d002006102d21050c010b200228020420042006103121050b2005450d3620022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a4190013a00000c2f0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d34200441017422062005200620054b1b22064100480d340240024020040d002006102d21050c010b200228020420042006103121050b2005450d3520022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a4191013a00000c2e0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d33200441017422062005200620054b1b22064100480d330240024020040d002006102d21050c010b200228020420042006103121050b2005450d3420022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a4192013a00000c2d0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d32200441017422062005200620054b1b22064100480d320240024020040d002006102d21050c010b200228020420042006103121050b2005450d3320022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a4193013a00000c2c0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d31200441017422062005200620054b1b22064100480d310240024020040d002006102d21050c010b200228020420042006103121050b2005450d3220022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a4194013a00000c2b0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d30200441017422062005200620054b1b22064100480d300240024020040d002006102d21050c010b200228020420042006103121050b2005450d3120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a4195013a00000c2a0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d2f200441017422062005200620054b1b22064100480d2f0240024020040d002006102d21050c010b200228020420042006103121050b2005450d3020022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a4196013a00000c290b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d2e200441017422062005200620054b1b22064100480d2e0240024020040d002006102d21050c010b200228020420042006103121050b2005450d2f20022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a4197013a00000c280b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d2d200441017422062005200620054b1b22064100480d2d0240024020040d002006102d21050c010b200228020420042006103121050b2005450d2e20022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a4198013a00000c270b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d2c200441017422062005200620054b1b22064100480d2c0240024020040d002006102d21050c010b200228020420042006103121050b2005450d2d20022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a4199013a00000c260b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d2b200441017422062005200620054b1b22064100480d2b0240024020040d002006102d21050c010b200228020420042006103121050b2005450d2c20022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a419a013a00000c250b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d2a200441017422062005200620054b1b22064100480d2a0240024020040d002006102d21050c010b200228020420042006103121050b2005450d2b20022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a419b013a00000c240b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d29200441017422062005200620054b1b22064100480d290240024020040d002006102d21050c010b200228020420042006103121050b2005450d2a20022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a419c013a00000c230b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d28200441017422062005200620054b1b22064100480d280240024020040d002006102d21050c010b200228020420042006103121050b2005450d2920022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a419d013a00000c220b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d27200441017422062005200620054b1b22064100480d270240024020040d002006102d21050c010b200228020420042006103121050b2005450d2820022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a419e013a00000c210b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d26200441017422062005200620054b1b22064100480d260240024020040d002006102d21050c010b200228020420042006103121050b2005450d2720022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a419f013a00000c200b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d25200441017422062005200620054b1b22064100480d250240024020040d002006102d21050c010b200228020420042006103121050b2005450d2620022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41a0013a00000c1f0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d24200441017422062005200620054b1b22064100480d240240024020040d002006102d21050c010b200228020420042006103121050b2005450d2520022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41a1013a00000c1e0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d23200441017422062005200620054b1b22064100480d230240024020040d002006102d21050c010b200228020420042006103121050b2005450d2420022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41a2013a00000c1d0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d22200441017422062005200620054b1b22064100480d220240024020040d002006102d21050c010b200228020420042006103121050b2005450d2320022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41a3013a00000c1c0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d21200441017422062005200620054b1b22064100480d210240024020040d002006102d21050c010b200228020420042006103121050b2005450d2220022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41a4013a00000c1b0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d20200441017422062005200620054b1b22064100480d200240024020040d002006102d21050c010b200228020420042006103121050b2005450d2120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41a5013a00000c1a0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d1f200441017422062005200620054b1b22064100480d1f0240024020040d002006102d21050c010b200228020420042006103121050b2005450d2020022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41a6013a00000c190b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d1e200441017422062005200620054b1b22064100480d1e0240024020040d002006102d21050c010b200228020420042006103121050b2005450d1f20022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41a7013a00000c180b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d1d200441017422062005200620054b1b22064100480d1d0240024020040d002006102d21050c010b200228020420042006103121050b2005450d1e20022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41a8013a00000c170b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d1c200441017422062005200620054b1b22064100480d1c0240024020040d002006102d21050c010b200228020420042006103121050b2005450d1d20022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41a9013a00000c160b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d1b200441017422062005200620054b1b22064100480d1b0240024020040d002006102d21050c010b200228020420042006103121050b2005450d1c20022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41aa013a00000c150b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d1a200441017422062005200620054b1b22064100480d1a0240024020040d002006102d21050c010b200228020420042006103121050b2005450d1b20022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41ab013a00000c140b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d19200441017422062005200620054b1b22064100480d190240024020040d002006102d21050c010b200228020420042006103121050b2005450d1a20022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41ac013a00000c130b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d18200441017422062005200620054b1b22064100480d180240024020040d002006102d21050c010b200228020420042006103121050b2005450d1920022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41ad013a00000c120b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d17200441017422062005200620054b1b22064100480d170240024020040d002006102d21050c010b200228020420042006103121050b2005450d1820022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41ae013a00000c110b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d16200441017422062005200620054b1b22064100480d160240024020040d002006102d21050c010b200228020420042006103121050b2005450d1720022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41af013a00000c100b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d15200441017422062005200620054b1b22064100480d150240024020040d002006102d21050c010b200228020420042006103121050b2005450d1620022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41b0013a00000c0f0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d14200441017422062005200620054b1b22064100480d140240024020040d002006102d21050c010b200228020420042006103121050b2005450d1520022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41b1013a00000c0e0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d13200441017422062005200620054b1b22064100480d130240024020040d002006102d21050c010b200228020420042006103121050b2005450d1420022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41b2013a00000c0d0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d12200441017422062005200620054b1b22064100480d120240024020040d002006102d21050c010b200228020420042006103121050b2005450d1320022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41b3013a00000c0c0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d14200441017422062005200620054b1b22064100480d140240024020040d002006102d21050c010b200228020420042006103121050b2005450d1220022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41b4013a00000c0b0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d13200441017422062005200620054b1b22064100480d130240024020040d002006102d21050c010b200228020420042006103121050b2005450d1220022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41b5013a00000c0a0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d12200441017422062005200620054b1b22064100480d120240024020040d002006102d21050c010b200228020420042006103121050b2005450d1120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41b6013a00000c090b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d11200441017422062005200620054b1b22064100480d110240024020040d002006102d21050c010b200228020420042006103121050b2005450d1020022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41b7013a00000c080b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d10200441017422062005200620054b1b22064100480d100240024020040d002006102d21050c010b200228020420042006103121050b2005450d0f20022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41b8013a00000c070b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d0f200441017422062005200620054b1b22064100480d0f0240024020040d002006102d21050c010b200228020420042006103121050b2005450d0e20022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41b9013a00000c060b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d0e200441017422062005200620054b1b22064100480d0e0240024020040d002006102d21050c010b200228020420042006103121050b2005450d0d20022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41ba013a00000c050b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d0d200441017422062005200620054b1b22064100480d0d0240024020040d002006102d21050c010b200228020420042006103121050b2005450d0c20022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41bb013a00000c040b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d0c200441017422062005200620054b1b22064100480d0c0240024020040d002006102d21050c010b200228020420042006103121050b2005450d0b20022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41bc013a00000c030b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d0b200441017422062005200620054b1b22064100480d0b0240024020040d002006102d21050c010b200228020420042006103121050b2005450d0a20022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41bd013a00000c020b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d0a200441017422062005200620054b1b22064100480d0a0240024020040d002006102d21050c010b200228020420042006103121050b2005450d0920022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41be013a00000c010b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d09200441017422062005200620054b1b22064100480d090240024020040d002006102d21050c010b200228020420042006103121050b2005450d0820022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41bf013a00000b2000411f3a000020012d00004109470d090240200141046a280200220228020441ffffffff0371450d002002280200102f200128020421020b2002102f0c090b1036000b1038000b1038000b1036000b1038000b1036000b1036000b1038000b20002004290200370200200041086a200441086a29020037020020012d00004109470d000240200141046a280200220228020441ffffffff0371450d002002280200102f200128020421020b2002102f0b200341106a24000ba80301057f2004410c6a2105200441086a210602400240034002400240200628020020052802002207460d00200428020421080c010b200741016a22082007490d03200741017422092008200920084b1b22094100480d030240024020070d002009102d21080c010b200428020420072009103121080b2008450d022004200836020420062009360200200528020021070b2005200741016a360200200820076a200141807f72200141ff0071200141077622071b3a00002007210120070d000b024020022003460d002004410c6a2105200441086a2106034020022802002101034002400240200628020020052802002207460d00200428020421080c010b200741016a22082007490d05200741017422092008200920084b1b22094100480d050240024020070d002009102d21080c010b200428020420072009103121080b2008450d042004200836020420062009360200200528020021070b2005200741016a360200200820076a200141807f72200141ff0071200141077622071b3a00002007210120070d000b200241046a22022003470d000b0b2000411f3a00000f0b1036000b1038000ba40301067f02400240024020014107752203200141c00071220472452003417f4720044572734101470d002002410c6a2105200241086a2106034002400240200628020020052802002204460d00200228020421070c010b200441016a22072004490d04200441017422082007200820074b1b22084100480d040240024020040d002008102d21070c010b200228020420042008103121070b2007450d032002200736020420062008360200200528020021040b2005200441016a360200200720046a200141807f723a0000200341c000712104200321012003410775220721032007200472452007417f4720044572470d000b0b02400240200241086a2802002002410c6a2802002204460d00200228020421030c010b200441016a22032004490d02200441017422072003200720034b1b22074100480d020240024020040d002007102d21030c010b200228020420042007103121030b2003450d0120022003360204200241086a20073602002002410c6a28020021040b2002410c6a200441016a360200200320046a200141ff00713a00002000411f3a00000f0b1036000b1038000ba80302017e067f02400240024020014207872203502001a7220441c00071452205712003427f52200572734101470d002002410c6a2106200241086a2107034002400240200728020020062802002205460d00200228020421080c010b200541016a22082005490d04200541017422092008200920084b1b22094100480d040240024020050d002009102d21080c010b200228020420052009103121080b2008450d032002200836020420072009360200200628020021050b2006200541016a360200200820056a200441807f723a00002003a72104200342078722012103200150200441c00071452205712001427f52200572470d000b0b02400240200241086a2802002002410c6a2802002205460d00200228020421080c010b200541016a22082005490d02200541017422062008200620084b1b22064100480d020240024020050d002006102d21080c010b200228020420052006103121080b2008450d0120022008360204200241086a20063602002002410c6a28020021050b2002410c6a200541016a360200200820056a200441ff00713a00002000411f3a00000f0b1036000b1038000be403010a7f230041306b22022400200241216a220341076a210441002105410021064100210741002108410821090240024002400340200241186a2001109606024020022802184101470d002000200229021c370204200041013602002000410c6a200241186a410c6a29020037020002402007450d00200921070340024020072d00004109470d000240200741046a220a280200220528020441ffffffff0371450d002005280200102f200a28020021050b2005102f0b200741106a2107200641706a22060d000b0b2008450d042009102f0c040b200220032900003703082002200429000037000f20022d0020210a2002200229000f37001f200220022903083703180240024020072008470d00200741016a220b2007490d032005200b2005200b4b1b220b41ffffffff0071200b470d03200b410474220b4100480d030240024020070d00200b102d21090c010b20092006200b103121090b2009450d01200b41047621080b200920066a220b200a3a0000200b41016a2002290318370000200b41086a200229001f370000200541026a2105200641106a2106200741016a2107200a41ff01714106460d030c010b0b1036000b1038000b20002009360204200041003602002000410c6a2007360200200041086a20083602000b200241306a24000ba8b501020b7f017e230041f0006b2202240002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020012802082203200128020c2204460d00200441016a22052004490dad0120032005490dae012001280200220620046a2d000021072001410c6a22082005360200200741bf014b0d0120070ec001b502b502020304b502010101010105060708090a0b01010101010101010c0d010101010e0f101112010101131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f80018101820183018401850186018701880189018a018b018c018d018e018f0190019101920193019401950196019701980199019a019b019c019d019e019f01a001a101a201a301a401a501a601a701a801a901aa01b5020b200241013a0048200241ec006a41013602002002420137025c200241b4afca003602582002412836023c2002200241386a3602682002200241c8006a360238200241086a200241d8006a103a200241336a200241106a2802003600002002200229030837002b2002200229002837031820022002412f6a29000037001f200041053a0004200020022903183700052000410c6a200229001f370000200041013602000cb6020b2000410b3a000420004101360200200041056a20073a00000cb5020b024002400240024002400240024020032005460d00200441026a21092005417f460db30120032009490db401200620056a2c00002101200820093602004100210a0240200141004e0d00411921090c020b0240200141017441807f71200172220141ff0171220541847e6a220941034d0d0041062109200541c001470d034104210a410221070cba020b20090e0405040306050b200241013a0047200241ec006a41013602002002420137025c200241b4afca003602582002412836023c2002200241386a3602682002200241c7006a360238200241c8006a200241d8006a103a200241326a200241d0006a2802003601002002200229034837012a2002200229012837031820022002412e6a29010037011e410521090b2002200229011e37010e200220022903183703080b200020013a0005200020093a000420002002290308370106200041013602002000410c6a200229010e3701000cb8020b4101210a410221070cb5020b4102210a410221070cb4020b4103210a0b410221070cb2020b024002400240024002400240024020032005460d00200441026a21092005417f460db40120032009490db501200620056a2c00002101200820093602004100210a0240200141004e0d00411921090c020b0240200141017441807f71200172220141ff0171220541847e6a220941034d0d0041062109200541c001470d034104210a410321070cb9020b20090e0405040306050b200241013a0047200241ec006a41013602002002420137025c200241b4afca003602582002412836023c2002200241386a3602682002200241c7006a360238200241c8006a200241d8006a103a200241326a200241d0006a2802003601002002200229034837012a2002200229012837031820022002412e6a29010037011e410521090b2002200229011e37010e200220022903183703080b200020013a0005200020093a000420002002290308370106200041013602002000410c6a200229010e3701000cb7020b4101210a410321070cb4020b4102210a410321070cb3020b4103210a0b410321070cb1020b024002400240024002400240024020032005460d00200441026a21092005417f460db50120032009490db601200620056a2c00002101200820093602004100210a0240200141004e0d00411921090c020b0240200141017441807f71200172220141ff0171220541847e6a220941034d0d0041062109200541c001470d034104210a410421070cb8020b20090e0405040306050b200241013a0047200241ec006a41013602002002420137025c200241b4afca003602582002412836023c2002200241386a3602682002200241c7006a360238200241c8006a200241d8006a103a200241326a200241d0006a2802003601002002200229034837012a2002200229012837031820022002412e6a29010037011e410521090b2002200229011e37010e200220022903183703080b200020013a0005200020093a000420002002290308370106200041013602002000410c6a200229010e3701000cb6020b4101210a410421070cb3020b4102210a410421070cb2020b4103210a0b410421070cb0020b410621070caf020b410021014100210902400240034002402001411f4d0d00410f21010c030b20032005460d012005417f460db1012003200541016a2207490df601200620056a2d0000210420082007360200200441ff00712001411f71742009722109200141076a2101200721052004418001710d000b024020014120490d00410d21012004410f4b0d020b410721070cb0020b200241013a0018200241ec006a41013602002002420137025c200241b4afca003602582002412836023c2002200241386a3602682002200241186a360238200241286a200241d8006a103a410521010b2000200136020420004101360200200041086a2002290328370200200041106a200241286a41086a2802003602000cb0020b410021014100210902400240034002402001411f4d0d00410f21010c030b20032005460d012005417f460db1012003200541016a2207490df601200620056a2d0000210420082007360200200441ff00712001411f71742009722109200141076a2101200721052004418001710d000b024020014120490d00410d21012004410f4b0d020b410821070caf020b200241013a0018200241ec006a41013602002002420137025c200241b4afca003602582002412836023c2002200241386a3602682002200241186a360238200241286a200241d8006a103a410521010b2000200136020420004101360200200041086a2002290328370200200041106a200241286a41086a2802003602000caf020b200241d8006a2001109706410421042002280258220a4101460da201200241e0006a280200210b41002106200228025c210c410021070240200241e4006a28020022054102742209450d002009410275220341ffffffff03712003470daf0120094100480daf012009102d2204450dae02200941027621070b02402005450d00200541027421032009417c6a210620042109200c2105034020092005280200360200200941046a2109200541046a21052003417c6a22030d000b200641027641016a21060b0240200b450d00200c102f0b20022d005c4105470dab02200a450dab0220022802640da3010cab020b410a21070cab020b410021014100210902400240034002402001411f4d0d00410f21010c030b20032005460d012005417f460db0012003200541016a2207490df401200620056a2d0000210420082007360200200441ff00712001411f71742009722109200141076a2101200721052004418001710d000b024020014120490d00410d21012004410f4b0d020b410b21070cac020b200241013a0018200241ec006a41013602002002420137025c200241b4afca003602582002412836023c2002200241386a3602682002200241186a360238200241286a200241d8006a103a410521010b2000200136020420004101360200200041086a2002290328370200200041106a200241286a41086a2802003602000cac020b410021014100210902400240024002400240034002402001411f4d0d00410f21010c030b20032005460d012005417f460db3012003200541016a2204490df701200620056a2d0000210720082004360200200741ff00712001411f71742009722109200141076a2101200421052007418001710d000b024020014120490d00410d21012007410f4b0d020b20032004460d03200441016a22012004490db301200320014f0d0220012003104a000b200241013a0018200241ec006a41013602002002420137025c200241b4afca003602582002412836023c2002200241386a3602682002200241186a360238200241286a200241d8006a103a410521010b2000200136020420004101360200200041086a2002290328370200200041106a200241286a41086a2802003602000cae020b200620046a2d000021052008200136020020050d01410c21074100210a0cab020b200241013a0048200241ec006a41013602002002420137025c200241b4afca003602582002412836023c2002200241386a3602682002200241c8006a360238200241086a200241d8006a103a200241336a200241106a2802003600002002200229030837002b2002200229002837031820022002412f6a29000037001f200041053a0004200020022903183700052000410c6a200229001f370000200041013602000cac020b200041163a000420004101360200200041056a20053a00000cab020b410d21070ca8020b410e21070ca7020b410021014100210902400240034002402001411f4d0d00410f21010c030b20032005460d012005417f460daf012003200541016a2207490df201200620056a2d0000210420082007360200200441ff00712001411f71742009722109200141076a2101200721052004418001710d000b024020014120490d00410d21012004410f4b0d020b410f21070ca8020b200241013a0018200241ec006a41013602002002420137025c200241b4afca003602582002412836023c2002200241386a3602682002200241186a360238200241286a200241d8006a103a410521010b2000200136020420004101360200200041086a2002290328370200200041106a200241286a41086a2802003602000ca8020b410021014100210902400240034002402001411f4d0d00410f21010c030b20032005460d012005417f460daf012003200541016a2207490df201200620056a2d0000210420082007360200200441ff00712001411f71742009722109200141076a2101200721052004418001710d000b024020014120490d00410d21012004410f4b0d020b411021070ca7020b200241013a0018200241ec006a41013602002002420137025c200241b4afca003602582002412836023c2002200241386a3602682002200241186a360238200241286a200241d8006a103a410521010b2000200136020420004101360200200041086a2002290328370200200041106a200241286a41086a2802003602000ca7020b410021014100210902400240034002402001411f4d0d00410f21010c030b20032005460d012005417f460daf012003200541016a2207490df201200620056a2d0000210420082007360200200441ff00712001411f71742009722109200141076a2101200721052004418001710d000b024020014120490d00410d21012004410f4b0d020b411121070ca6020b200241013a0018200241ec006a41013602002002420137025c200241b4afca003602582002412836023c2002200241386a3602682002200241186a360238200241286a200241d8006a103a410521010b2000200136020420004101360200200041086a2002290328370200200041106a200241286a41086a2802003602000ca6020b410021014100210902400240034002402001411f4d0d00410f21010c030b20032005460d012005417f460daf012003200541016a2207490df201200620056a2d0000210420082007360200200441ff00712001411f71742009722109200141076a2101200721052004418001710d000b024020014120490d00410d21012004410f4b0d020b411221070ca5020b200241013a0018200241ec006a41013602002002420137025c200241b4afca003602582002412836023c2002200241386a3602682002200241186a360238200241286a200241d8006a103a410521010b2000200136020420004101360200200041086a2002290328370200200041106a200241286a41086a2802003602000ca5020b410021014100210902400240034002402001411f4d0d00410f21010c030b20032005460d012005417f460daf012003200541016a2207490df201200620056a2d0000210420082007360200200441ff00712001411f71742009722109200141076a2101200721052004418001710d000b024020014120490d00410d21012004410f4b0d020b411321070ca4020b200241013a0018200241ec006a41013602002002420137025c200241b4afca003602582002412836023c2002200241386a3602682002200241186a360238200241286a200241d8006a103a410521010b2000200136020420004101360200200041086a2002290328370200200041106a200241286a41086a2802003602000ca4020b410120036b2107200441026a210141002105410021090240024002400240034002402005411f4d0d00410f21010c030b200720016a4102460d012001450db10120032001490df401200620016a417f6a2d0000210420082001360200200441ff00712005411f71742009722109200141016a2101200541076a21052004418001710d000b024020054120490d002004410f4d0d00410d21010c020b2001417f6a2101410021054100210a034002402005411f4d0d00410f21010c050b20032001460d032001417f460db2012003200141016a2207490df501200620016a2d0000210420082007360200200441ff00712005411f7174200a72210a200541076a2105200721012004418001710d000b024020054120490d00410d21012004410f4b0d040b200aad210d411421070ca5020b200241013a0018200241ec006a41013602002002420137025c200241b4afca003602582002412836023c2002200241386a3602682002200241186a360238200241286a200241d8006a103a20022802282103200228022c210520022802302109410521010b2000200136020420004101360200200041106a20093602002000410c6a2005360200200041086a20033602000ca5020b200241013a0018200241ec006a41013602002002420137025c200241b4afca003602582002412836023c2002200241386a3602682002200241186a360238200241286a200241d8006a103a410521010b2000200136020420004101360200200041086a2002290328370200200041106a200241286a41086a2802003602000ca3020b410120036b2107200441026a210141002105410021090240024002400240034002402005411f4d0d00410f21010c030b200720016a4102460d012001450db20120032001490df501200620016a417f6a2d0000210420082001360200200441ff00712005411f71742009722109200141016a2101200541076a21052004418001710d000b024020054120490d002004410f4d0d00410d21010c020b2001417f6a2101410021054100210a034002402005411f4d0d00410f21010c050b20032001460d032001417f460db3012003200141016a2207490df601200620016a2d0000210420082007360200200441ff00712005411f7174200a72210a200541076a2105200721012004418001710d000b024020054120490d00410d21012004410f4b0d040b200aad210d411521070ca4020b200241013a0018200241ec006a41013602002002420137025c200241b4afca003602582002412836023c2002200241386a3602682002200241186a360238200241286a200241d8006a103a20022802282103200228022c210520022802302109410521010b2000200136020420004101360200200041106a20093602002000410c6a2005360200200041086a20033602000ca4020b200241013a0018200241ec006a41013602002002420137025c200241b4afca003602582002412836023c2002200241386a3602682002200241186a360238200241286a200241d8006a103a410521010b2000200136020420004101360200200041086a2002290328370200200041106a200241286a41086a2802003602000ca2020b410120036b2107200441026a210141002105410021090240024002400240034002402005411f4d0d00410f21010c030b200720016a4102460d012001450db30120032001490df601200620016a417f6a2d0000210420082001360200200441ff00712005411f71742009722109200141016a2101200541076a21052004418001710d000b024020054120490d002004410f4d0d00410d21010c020b2001417f6a2101410021054100210a034002402005411f4d0d00410f21010c050b20032001460d032001417f460db4012003200141016a2207490df701200620016a2d0000210420082007360200200441ff00712005411f7174200a72210a200541076a2105200721012004418001710d000b024020054120490d00410d21012004410f4b0d040b200aad210d411621070ca3020b200241013a0018200241ec006a41013602002002420137025c200241b4afca003602582002412836023c2002200241386a3602682002200241186a360238200241286a200241d8006a103a20022802282103200228022c210520022802302109410521010b2000200136020420004101360200200041106a20093602002000410c6a2005360200200041086a20033602000ca3020b200241013a0018200241ec006a41013602002002420137025c200241b4afca003602582002412836023c2002200241386a3602682002200241186a360238200241286a200241d8006a103a410521010b2000200136020420004101360200200041086a2002290328370200200041106a200241286a41086a2802003602000ca1020b410120036b2107200441026a210141002105410021090240024002400240034002402005411f4d0d00410f21010c030b200720016a4102460d012001450db40120032001490df701200620016a417f6a2d0000210420082001360200200441ff00712005411f71742009722109200141016a2101200541076a21052004418001710d000b024020054120490d002004410f4d0d00410d21010c020b2001417f6a2101410021054100210a034002402005411f4d0d00410f21010c050b20032001460d032001417f460db5012003200141016a2207490df801200620016a2d0000210420082007360200200441ff00712005411f7174200a72210a200541076a2105200721012004418001710d000b024020054120490d00410d21012004410f4b0d040b200aad210d411721070ca2020b200241013a0018200241ec006a41013602002002420137025c200241b4afca003602582002412836023c2002200241386a3602682002200241186a360238200241286a200241d8006a103a20022802282103200228022c210520022802302109410521010b2000200136020420004101360200200041106a20093602002000410c6a2005360200200041086a20033602000ca2020b200241013a0018200241ec006a41013602002002420137025c200241b4afca003602582002412836023c2002200241386a3602682002200241186a360238200241286a200241d8006a103a410521010b2000200136020420004101360200200041086a2002290328370200200041106a200241286a41086a2802003602000ca0020b410120036b2107200441026a210141002105410021090240024002400240034002402005411f4d0d00410f21010c030b200720016a4102460d012001450db50120032001490df801200620016a417f6a2d0000210420082001360200200441ff00712005411f71742009722109200141016a2101200541076a21052004418001710d000b024020054120490d002004410f4d0d00410d21010c020b2001417f6a2101410021054100210a034002402005411f4d0d00410f21010c050b20032001460d032001417f460db6012003200141016a2207490df901200620016a2d0000210420082007360200200441ff00712005411f7174200a72210a200541076a2105200721012004418001710d000b024020054120490d00410d21012004410f4b0d040b200aad210d411821070ca1020b200241013a0018200241ec006a41013602002002420137025c200241b4afca003602582002412836023c2002200241386a3602682002200241186a360238200241286a200241d8006a103a20022802282103200228022c210520022802302109410521010b2000200136020420004101360200200041106a20093602002000410c6a2005360200200041086a20033602000ca1020b200241013a0018200241ec006a41013602002002420137025c200241b4afca003602582002412836023c2002200241386a3602682002200241186a360238200241286a200241d8006a103a410521010b2000200136020420004101360200200041086a2002290328370200200041106a200241286a41086a2802003602000c9f020b410120036b2107200441026a210141002105410021090240024002400240034002402005411f4d0d00410f21010c030b200720016a4102460d012001450db60120032001490df901200620016a417f6a2d0000210420082001360200200441ff00712005411f71742009722109200141016a2101200541076a21052004418001710d000b024020054120490d002004410f4d0d00410d21010c020b2001417f6a2101410021054100210a034002402005411f4d0d00410f21010c050b20032001460d032001417f460db7012003200141016a2207490dfa01200620016a2d0000210420082007360200200441ff00712005411f7174200a72210a200541076a2105200721012004418001710d000b024020054120490d00410d21012004410f4b0d040b200aad210d411921070ca0020b200241013a0018200241ec006a41013602002002420137025c200241b4afca003602582002412836023c2002200241386a3602682002200241186a360238200241286a200241d8006a103a20022802282103200228022c210520022802302109410521010b2000200136020420004101360200200041106a20093602002000410c6a2005360200200041086a20033602000ca0020b200241013a0018200241ec006a41013602002002420137025c200241b4afca003602582002412836023c2002200241386a3602682002200241186a360238200241286a200241d8006a103a410521010b2000200136020420004101360200200041086a2002290328370200200041106a200241286a41086a2802003602000c9e020b410120036b2107200441026a210141002105410021090240024002400240034002402005411f4d0d00410f21010c030b200720016a4102460d012001450db70120032001490dfa01200620016a417f6a2d0000210420082001360200200441ff00712005411f71742009722109200141016a2101200541076a21052004418001710d000b024020054120490d002004410f4d0d00410d21010c020b2001417f6a2101410021054100210a034002402005411f4d0d00410f21010c050b20032001460d032001417f460db8012003200141016a2207490dfb01200620016a2d0000210420082007360200200441ff00712005411f7174200a72210a200541076a2105200721012004418001710d000b024020054120490d00410d21012004410f4b0d040b200aad210d411a21070c9f020b200241013a0018200241ec006a41013602002002420137025c200241b4afca003602582002412836023c2002200241386a3602682002200241186a360238200241286a200241d8006a103a20022802282103200228022c210520022802302109410521010b2000200136020420004101360200200041106a20093602002000410c6a2005360200200041086a20033602000c9f020b200241013a0018200241ec006a41013602002002420137025c200241b4afca003602582002412836023c2002200241386a3602682002200241186a360238200241286a200241d8006a103a410521010b2000200136020420004101360200200041086a2002290328370200200041106a200241286a41086a2802003602000c9d020b410120036b2107200441026a210141002105410021090240024002400240034002402005411f4d0d00410f21010c030b200720016a4102460d012001450db80120032001490dfb01200620016a417f6a2d0000210420082001360200200441ff00712005411f71742009722109200141016a2101200541076a21052004418001710d000b024020054120490d002004410f4d0d00410d21010c020b2001417f6a2101410021054100210a034002402005411f4d0d00410f21010c050b20032001460d032001417f460db9012003200141016a2207490dfc01200620016a2d0000210420082007360200200441ff00712005411f7174200a72210a200541076a2105200721012004418001710d000b024020054120490d00410d21012004410f4b0d040b200aad210d411b21070c9e020b200241013a0018200241ec006a41013602002002420137025c200241b4afca003602582002412836023c2002200241386a3602682002200241186a360238200241286a200241d8006a103a20022802282103200228022c210520022802302109410521010b2000200136020420004101360200200041106a20093602002000410c6a2005360200200041086a20033602000c9e020b200241013a0018200241ec006a41013602002002420137025c200241b4afca003602582002412836023c2002200241386a3602682002200241186a360238200241286a200241d8006a103a410521010b2000200136020420004101360200200041086a2002290328370200200041106a200241286a41086a2802003602000c9c020b410120036b2107200441026a210141002105410021090240024002400240034002402005411f4d0d00410f21010c030b200720016a4102460d012001450db90120032001490dfc01200620016a417f6a2d0000210420082001360200200441ff00712005411f71742009722109200141016a2101200541076a21052004418001710d000b024020054120490d002004410f4d0d00410d21010c020b2001417f6a2101410021054100210a034002402005411f4d0d00410f21010c050b20032001460d032001417f460dba012003200141016a2207490dfd01200620016a2d0000210420082007360200200441ff00712005411f7174200a72210a200541076a2105200721012004418001710d000b024020054120490d00410d21012004410f4b0d040b200aad210d411c21070c9d020b200241013a0018200241ec006a41013602002002420137025c200241b4afca003602582002412836023c2002200241386a3602682002200241186a360238200241286a200241d8006a103a20022802282103200228022c210520022802302109410521010b2000200136020420004101360200200041106a20093602002000410c6a2005360200200041086a20033602000c9d020b200241013a0018200241ec006a41013602002002420137025c200241b4afca003602582002412836023c2002200241386a3602682002200241186a360238200241286a200241d8006a103a410521010b2000200136020420004101360200200041086a2002290328370200200041106a200241286a41086a2802003602000c9b020b410120036b2107200441026a210141002105410021090240024002400240034002402005411f4d0d00410f21010c030b200720016a4102460d012001450dba0120032001490dfd01200620016a417f6a2d0000210420082001360200200441ff00712005411f71742009722109200141016a2101200541076a21052004418001710d000b024020054120490d002004410f4d0d00410d21010c020b2001417f6a2101410021054100210a034002402005411f4d0d00410f21010c050b20032001460d032001417f460dbb012003200141016a2207490dfe01200620016a2d0000210420082007360200200441ff00712005411f7174200a72210a200541076a2105200721012004418001710d000b024020054120490d00410d21012004410f4b0d040b200aad210d411d21070c9c020b200241013a0018200241ec006a41013602002002420137025c200241b4afca003602582002412836023c2002200241386a3602682002200241186a360238200241286a200241d8006a103a20022802282109200228022c210520022802302103410521010b2000200136020420004101360200200041106a20033602002000410c6a2005360200200041086a20093602000c9c020b200241013a0018200241ec006a41013602002002420137025c200241b4afca003602582002412836023c2002200241386a3602682002200241186a360238200241286a200241d8006a103a410521010b2000200136020420004101360200200041086a2002290328370200200041106a200241286a41086a2802003602000c9a020b410120036b2107200441026a210141002105410021090240024002400240034002402005411f4d0d00410f21010c030b200720016a4102460d012001450dbb0120032001490dfe01200620016a417f6a2d0000210420082001360200200441ff00712005411f71742009722109200141016a2101200541076a21052004418001710d000b024020054120490d002004410f4d0d00410d21010c020b2001417f6a2101410021054100210a034002402005411f4d0d00410f21010c050b20032001460d032001417f460dbc012003200141016a2207490dff01200620016a2d0000210420082007360200200441ff00712005411f7174200a72210a200541076a2105200721012004418001710d000b024020054120490d00410d21012004410f4b0d040b200aad210d411e21070c9b020b200241013a0018200241ec006a41013602002002420137025c200241b4afca003602582002412836023c2002200241386a3602682002200241186a360238200241286a200241d8006a103a20022802282109200228022c210520022802302103410521010b2000200136020420004101360200200041106a20033602002000410c6a2005360200200041086a20093602000c9b020b200241013a0018200241ec006a41013602002002420137025c200241b4afca003602582002412836023c2002200241386a3602682002200241186a360238200241286a200241d8006a103a410521010b2000200136020420004101360200200041086a2002290328370200200041106a200241286a41086a2802003602000c99020b410120036b2107200441026a210141002105410021090240024002400240034002402005411f4d0d00410f21010c030b200720016a4102460d012001450dbc0120032001490dff01200620016a417f6a2d0000210420082001360200200441ff00712005411f71742009722109200141016a2101200541076a21052004418001710d000b024020054120490d002004410f4d0d00410d21010c020b2001417f6a2101410021054100210a034002402005411f4d0d00410f21010c050b20032001460d032001417f460dbd012003200141016a2207490d8002200620016a2d0000210420082007360200200441ff00712005411f7174200a72210a200541076a2105200721012004418001710d000b024020054120490d00410d21012004410f4b0d040b200aad210d411f21070c9a020b200241013a0018200241ec006a41013602002002420137025c200241b4afca003602582002412836023c2002200241386a3602682002200241186a360238200241286a200241d8006a103a20022802282109200228022c210520022802302103410521010b2000200136020420004101360200200041106a20033602002000410c6a2005360200200041086a20093602000c9a020b200241013a0018200241ec006a41013602002002420137025c200241b4afca003602582002412836023c2002200241386a3602682002200241186a360238200241286a200241d8006a103a410521010b2000200136020420004101360200200041086a2002290328370200200041106a200241286a41086a2802003602000c98020b410120036b2107200441026a210141002105410021090240024002400240034002402005411f4d0d00410f21010c030b200720016a4102460d012001450dbd0120032001490d8002200620016a417f6a2d0000210420082001360200200441ff00712005411f71742009722109200141016a2101200541076a21052004418001710d000b024020054120490d002004410f4d0d00410d21010c020b2001417f6a2101410021054100210a034002402005411f4d0d00410f21010c050b20032001460d032001417f460dbe012003200141016a2207490d8102200620016a2d0000210420082007360200200441ff00712005411f7174200a72210a200541076a2105200721012004418001710d000b41202107024020054120490d00410d21012004410f4b0d040b200aad210d0c99020b200241013a0018200241ec006a41013602002002420137025c200241b4afca003602582002412836023c2002200241386a3602682002200241186a360238200241286a200241d8006a103a20022802282109200228022c210520022802302103410521010b2000200136020420004101360200200041106a20033602002000410c6a2005360200200041086a20093602000c99020b200241013a0018200241ec006a41013602002002420137025c200241b4afca003602582002412836023c2002200241386a3602682002200241186a360238200241286a200241d8006a103a410521010b2000200136020420004101360200200041086a2002290328370200200041106a200241286a41086a2802003602000c97020b410120036b2107200441026a210141002105410021090240024002400240034002402005411f4d0d00410f21010c030b200720016a4102460d012001450dbe0120032001490d8102200620016a417f6a2d0000210420082001360200200441ff00712005411f71742009722109200141016a2101200541076a21052004418001710d000b024020054120490d002004410f4d0d00410d21010c020b2001417f6a2101410021054100210a034002402005411f4d0d00410f21010c050b20032001460d032001417f460dbf012003200141016a2207490d8202200620016a2d0000210420082007360200200441ff00712005411f7174200a72210a200541076a2105200721012004418001710d000b024020054120490d00410d21012004410f4b0d040b200aad210d412121070c98020b200241013a0018200241ec006a41013602002002420137025c200241b4afca003602582002412836023c2002200241386a3602682002200241186a360238200241286a200241d8006a103a20022802282109200228022c210520022802302103410521010b2000200136020420004101360200200041106a20033602002000410c6a2005360200200041086a20093602000c98020b200241013a0018200241ec006a41013602002002420137025c200241b4afca003602582002412836023c2002200241386a3602682002200241186a360238200241286a200241d8006a103a410521010b2000200136020420004101360200200041086a2002290328370200200041106a200241286a41086a2802003602000c96020b410120036b2107200441026a210141002105410021090240024002400240034002402005411f4d0d00410f21010c030b200720016a4102460d012001450dbf0120032001490d8202200620016a417f6a2d0000210420082001360200200441ff00712005411f71742009722109200141016a2101200541076a21052004418001710d000b024020054120490d002004410f4d0d00410d21010c020b2001417f6a2101410021054100210a034002402005411f4d0d00410f21010c050b20032001460d032001417f460dc0012003200141016a2207490d8302200620016a2d0000210420082007360200200441ff00712005411f7174200a72210a200541076a2105200721012004418001710d000b024020054120490d00410d21012004410f4b0d040b200aad210d412221070c97020b200241013a0018200241ec006a41013602002002420137025c200241b4afca003602582002412836023c2002200241386a3602682002200241186a360238200241286a200241d8006a103a20022802282109200228022c210520022802302103410521010b2000200136020420004101360200200041106a20033602002000410c6a2005360200200041086a20093602000c97020b200241013a0018200241ec006a41013602002002420137025c200241b4afca003602582002412836023c2002200241386a3602682002200241186a360238200241286a200241d8006a103a410521010b2000200136020420004101360200200041086a2002290328370200200041106a200241286a41086a2802003602000c95020b410120036b2107200441026a210141002105410021090240024002400240034002402005411f4d0d00410f21010c030b200720016a4102460d012001450dc00120032001490d8302200620016a417f6a2d0000210420082001360200200441ff00712005411f71742009722109200141016a2101200541076a21052004418001710d000b024020054120490d002004410f4d0d00410d21010c020b2001417f6a2101410021054100210a034002402005411f4d0d00410f21010c050b20032001460d032001417f460dc1012003200141016a2207490d8402200620016a2d0000210420082007360200200441ff00712005411f7174200a72210a200541076a2105200721012004418001710d000b024020054120490d00410d21012004410f4b0d040b200aad210d412321070c96020b200241013a0018200241ec006a41013602002002420137025c200241b4afca003602582002412836023c2002200241386a3602682002200241186a360238200241286a200241d8006a103a20022802282109200228022c210520022802302103410521010b2000200136020420004101360200200041106a20033602002000410c6a2005360200200041086a20093602000c96020b200241013a0018200241ec006a41013602002002420137025c200241b4afca003602582002412836023c2002200241386a3602682002200241186a360238200241286a200241d8006a103a410521010b2000200136020420004101360200200041086a2002290328370200200041106a200241286a41086a2802003602000c94020b410120036b2107200441026a210141002105410021090240024002400240034002402005411f4d0d00410f21010c030b200720016a4102460d012001450dc10120032001490d8402200620016a417f6a2d0000210420082001360200200441ff00712005411f71742009722109200141016a2101200541076a21052004418001710d000b024020054120490d002004410f4d0d00410d21010c020b2001417f6a2101410021054100210a034002402005411f4d0d00410f21010c050b20032001460d032001417f460dc2012003200141016a2207490d8502200620016a2d0000210420082007360200200441ff00712005411f7174200a72210a200541076a2105200721012004418001710d000b024020054120490d00410d21012004410f4b0d040b200aad210d412421070c95020b200241013a0018200241ec006a41013602002002420137025c200241b4afca003602582002412836023c2002200241386a3602682002200241186a360238200241286a200241d8006a103a20022802282109200228022c210520022802302103410521010b2000200136020420004101360200200041106a20033602002000410c6a2005360200200041086a20093602000c95020b200241013a0018200241ec006a41013602002002420137025c200241b4afca003602582002412836023c2002200241386a3602682002200241186a360238200241286a200241d8006a103a410521010b2000200136020420004101360200200041086a2002290328370200200041106a200241286a41086a2802003602000c93020b410120036b2107200441026a210141002105410021090240024002400240034002402005411f4d0d00410f21010c030b200720016a4102460d012001450dc20120032001490d8502200620016a417f6a2d0000210420082001360200200441ff00712005411f71742009722109200141016a2101200541076a21052004418001710d000b024020054120490d002004410f4d0d00410d21010c020b2001417f6a2101410021054100210a034002402005411f4d0d00410f21010c050b20032001460d032001417f460dc3012003200141016a2207490d8602200620016a2d0000210420082007360200200441ff00712005411f7174200a72210a200541076a2105200721012004418001710d000b024020054120490d00410d21012004410f4b0d040b200aad210d412521070c94020b200241013a0018200241ec006a41013602002002420137025c200241b4afca003602582002412836023c2002200241386a3602682002200241186a360238200241286a200241d8006a103a20022802282109200228022c210520022802302103410521010b2000200136020420004101360200200041106a20033602002000410c6a2005360200200041086a20093602000c94020b200241013a0018200241ec006a41013602002002420137025c200241b4afca003602582002412836023c2002200241386a3602682002200241186a360238200241286a200241d8006a103a410521010b2000200136020420004101360200200041086a2002290328370200200041106a200241286a41086a2802003602000c92020b410120036b2107200441026a210141002105410021090240024002400240034002402005411f4d0d00410f21010c030b200720016a4102460d012001450dc30120032001490d8602200620016a417f6a2d0000210420082001360200200441ff00712005411f71742009722109200141016a2101200541076a21052004418001710d000b024020054120490d002004410f4d0d00410d21010c020b2001417f6a2101410021054100210a034002402005411f4d0d00410f21010c050b20032001460d032001417f460dc4012003200141016a2207490d8702200620016a2d0000210420082007360200200441ff00712005411f7174200a72210a200541076a2105200721012004418001710d000b024020054120490d00410d21012004410f4b0d040b200aad210d412621070c93020b200241013a0018200241ec006a41013602002002420137025c200241b4afca003602582002412836023c2002200241386a3602682002200241186a360238200241286a200241d8006a103a20022802282109200228022c210520022802302103410521010b2000200136020420004101360200200041106a20033602002000410c6a2005360200200041086a20093602000c93020b200241013a0018200241ec006a41013602002002420137025c200241b4afca003602582002412836023c2002200241386a3602682002200241186a360238200241286a200241d8006a103a410521010b2000200136020420004101360200200041086a2002290328370200200041106a200241286a41086a2802003602000c91020b410120036b2107200441026a210141002105410021090240024002400240034002402005411f4d0d00410f21010c030b200720016a4102460d012001450dc40120032001490d8702200620016a417f6a2d0000210420082001360200200441ff00712005411f71742009722109200141016a2101200541076a21052004418001710d000b024020054120490d002004410f4d0d00410d21010c020b2001417f6a2101410021054100210a034002402005411f4d0d00410f21010c050b20032001460d032001417f460dc5012003200141016a2207490d8802200620016a2d0000210420082007360200200441ff00712005411f7174200a72210a200541076a2105200721012004418001710d000b024020054120490d00410d21012004410f4b0d040b200aad210d412721070c92020b200241013a0018200241ec006a41013602002002420137025c200241b4afca003602582002412836023c2002200241386a3602682002200241186a360238200241286a200241d8006a103a20022802282109200228022c210520022802302103410521010b2000200136020420004101360200200041106a20033602002000410c6a2005360200200041086a20093602000c92020b200241013a0018200241ec006a41013602002002420137025c200241b4afca003602582002412836023c2002200241386a3602682002200241186a360238200241286a200241d8006a103a410521010b2000200136020420004101360200200041086a2002290328370200200041106a200241286a41086a2802003602000c90020b410120036b2107200441026a210141002105410021090240024002400240034002402005411f4d0d00410f21010c030b200720016a4102460d012001450dc50120032001490d8802200620016a417f6a2d0000210420082001360200200441ff00712005411f71742009722109200141016a2101200541076a21052004418001710d000b024020054120490d002004410f4d0d00410d21010c020b2001417f6a2101410021054100210a034002402005411f4d0d00410f21010c050b20032001460d032001417f460dc6012003200141016a2207490d8902200620016a2d0000210420082007360200200441ff00712005411f7174200a72210a200541076a2105200721012004418001710d000b024020054120490d00410d21012004410f4b0d040b200aad210d412821070c91020b200241013a0018200241ec006a41013602002002420137025c200241b4afca003602582002412836023c2002200241386a3602682002200241186a360238200241286a200241d8006a103a20022802282109200228022c210520022802302103410521010b2000200136020420004101360200200041106a20033602002000410c6a2005360200200041086a20093602000c91020b200241013a0018200241ec006a41013602002002420137025c200241b4afca003602582002412836023c2002200241386a3602682002200241186a360238200241286a200241d8006a103a410521010b2000200136020420004101360200200041086a2002290328370200200041106a200241286a41086a2802003602000c8f020b410120036b2107200441026a210141002105410021090240024002400240034002402005411f4d0d00410f21010c030b200720016a4102460d012001450dc60120032001490d8902200620016a417f6a2d0000210420082001360200200441ff00712005411f71742009722109200141016a2101200541076a21052004418001710d000b024020054120490d002004410f4d0d00410d21010c020b2001417f6a2101410021054100210a034002402005411f4d0d00410f21010c050b20032001460d032001417f460dc7012003200141016a2207490d8a02200620016a2d0000210420082007360200200441ff00712005411f7174200a72210a200541076a2105200721012004418001710d000b024020054120490d00410d21012004410f4b0d040b200aad210d412921070c90020b200241013a0018200241ec006a41013602002002420137025c200241b4afca003602582002412836023c2002200241386a3602682002200241186a360238200241286a200241d8006a103a20022802282109200228022c210520022802302103410521010b2000200136020420004101360200200041106a20033602002000410c6a2005360200200041086a20093602000c90020b200241013a0018200241ec006a41013602002002420137025c200241b4afca003602582002412836023c2002200241386a3602682002200241186a360238200241286a200241d8006a103a410521010b2000200136020420004101360200200041086a2002290328370200200041106a200241286a41086a2802003602000c8e020b410120036b2107200441026a210141002105410021090240024002400240034002402005411f4d0d00410f21010c030b200720016a4102460d012001450dc70120032001490d8a02200620016a417f6a2d0000210420082001360200200441ff00712005411f71742009722109200141016a2101200541076a21052004418001710d000b024020054120490d002004410f4d0d00410d21010c020b2001417f6a2101410021054100210a034002402005411f4d0d00410f21010c050b20032001460d032001417f460dc8012003200141016a2207490d8b02200620016a2d0000210420082007360200200441ff00712005411f7174200a72210a200541076a2105200721012004418001710d000b024020054120490d00410d21012004410f4b0d040b200aad210d412a21070c8f020b200241013a0018200241ec006a41013602002002420137025c200241b4afca003602582002412836023c2002200241386a3602682002200241186a360238200241286a200241d8006a103a20022802282109200228022c210520022802302103410521010b2000200136020420004101360200200041106a20033602002000410c6a2005360200200041086a20093602000c8f020b200241013a0018200241ec006a41013602002002420137025c200241b4afca003602582002412836023c2002200241386a3602682002200241186a360238200241286a200241d8006a103a410521010b2000200136020420004101360200200041086a2002290328370200200041106a200241286a41086a2802003602000c8d020b0240024020032005460d00200441026a21012005417f460dc50120032001490dc601200620056a2d000021092008200136020020090d01412b21074100210a0c8c020b200241013a0048200241ec006a41013602002002420137025c200241b4afca003602582002412836023c2002200241386a3602682002200241c8006a360238200241086a200241d8006a103a200241336a200241106a2802003600002002200229030837002b2002200229002837031820022002412f6a29000037001f200041053a0004200020022903183700052000410c6a200229001f370000200041013602000c8d020b200041153a000420004101360200200041056a20093a00000c8c020b0240024020032005460d00200441026a21012005417f460dc60120032001490dc701200620056a2d000021092008200136020020090d01412c21074100210a0c8b020b200241013a0048200241ec006a41013602002002420137025c200241b4afca003602582002412836023c2002200241386a3602682002200241c8006a360238200241086a200241d8006a103a200241336a200241106a2802003600002002200229030837002b2002200229002837031820022002412f6a29000037001f200041053a0004200020022903183700052000410c6a200229001f370000200041013602000c8c020b200041153a000420004101360200200041056a20093a00000c8b020b4100210141002109024002400340410d210a2001411f4b0d0220032005460d012005417f460dc8012003200541016a2207490d8702200620056a2c0000210420082007360200200441ff00712001411f71742009722109200141076a21012007210520044100480d000b200441c00071210502402001411f4b0d0020050dc9010b02400240024020014120490d0020050d010b200441ff01714108490d0120014120490d0120050d010c030b20044180017241ff017141f801490d020b412d21070c8a020b200241013a0018200241ec006a41013602002002420137025c200241b4afca003602582002412836023c2002200241386a3602682002200241186a360238200241286a200241d8006a103a4105210a0b2000200a36020420004101360200200041086a2002290328370200200041106a200241286a41086a2802003602000c8a020b4200210d4100210102400340410e21072001413f4b0d860220032005460d012005417f460dc8012003200541016a2209490dc901200620056a2d0000210420082009360200200441ff0071220aad2001413f71ad86200d84210d200141076a21012009210520044118744118752209417f4c0d000b200941c0007121050240024002402001413f4b0d0020050d010b02400240200141c000490d0020050d010b200141c000490d022009450d020c88020b200a41ff00470d87020c010b200d428080808080808080807f427f2001413f712201ad862001413f461b84210d0b412e21070c88020b200241013a0008200241ec006a41013602002002420137025c200241b4afca003602582002412836023c2002200241386a3602682002200241086a360238200241286a200241d8006a103a2002290328210d20022802302101410521070c85020b0240200320056b4104490d00200441056a21012005417b4b0dc80120032001490dc901200620056a280000210920082001360200412f21070c87020b200241013a0018200241ec006a41013602002002420137025c200241b4afca003602582002412836023c2002200241386a3602682002200241186a360238200241286a200241d8006a103a20004281808080d000370300200041086a2002290328370200200041106a200241286a41086a2802003602000c88020b0240200320056b4108490d00200441096a2101200541774b0dc90120032001490dca01200620056a290000210d20082001360200413021070c86020b200241013a0018200241ec006a41013602002002420137025c200241b4afca003602582002412836023c2002200241386a3602682002200241186a360238200241286a200241d8006a103a2002290328210d200041106a2002280230360200200041086a200d37020020004281808080d0003703000c87020b413121070c84020b413221070c83020b413321070c82020b413421070c81020b413521070c80020b413621070cff010b413721070cfe010b413821070cfd010b413921070cfc010b413a21070cfb010b413b21070cfa010b413c21070cf9010b413d21070cf8010b413e21070cf7010b413f21070cf6010b41c00021070cf5010b41c10021070cf4010b41c20021070cf3010b41c30021070cf2010b41c40021070cf1010b41c50021070cf0010b41c60021070cef010b41c70021070cee010b41c80021070ced010b41c90021070cec010b41ca0021070ceb010b41cb0021070cea010b41cc0021070ce9010b41cd0021070ce8010b41ce0021070ce7010b41cf0021070ce6010b41d00021070ce5010b41d10021070ce4010b41d20021070ce3010b41d30021070ce2010b41d40021070ce1010b41d50021070ce0010b41d60021070cdf010b41d70021070cde010b41d80021070cdd010b41d90021070cdc010b41da0021070cdb010b41db0021070cda010b41dc0021070cd9010b41dd0021070cd8010b41de0021070cd7010b41df0021070cd6010b41e00021070cd5010b41e10021070cd4010b41e20021070cd3010b41e30021070cd2010b41e40021070cd1010b41e50021070cd0010b41e60021070ccf010b41e70021070cce010b41e80021070ccd010b41e90021070ccc010b41ea0021070ccb010b41eb0021070cca010b41ec0021070cc9010b41ed0021070cc8010b41ee0021070cc7010b41ef0021070cc6010b41f00021070cc5010b41f10021070cc4010b41f20021070cc3010b41f30021070cc2010b41f40021070cc1010b41f50021070cc0010b41f60021070cbf010b41f70021070cbe010b41f80021070cbd010b41f90021070cbc010b41fa0021070cbb010b41fb0021070cba010b41fc0021070cb9010b41fd0021070cb8010b41fe0021070cb7010b41ff0021070cb6010b41800121070cb5010b41810121070cb4010b41820121070cb3010b41830121070cb2010b41840121070cb1010b41850121070cb0010b41860121070caf010b41870121070cae010b41880121070cad010b41890121070cac010b418a0121070cab010b418b0121070caa010b418c0121070ca9010b418d0121070ca8010b418e0121070ca7010b418f0121070ca6010b41900121070ca5010b41910121070ca4010b41920121070ca3010b41930121070ca2010b41940121070ca1010b41950121070ca0010b41960121070c9f010b41970121070c9e010b41980121070c9d010b41990121070c9c010b419a0121070c9b010b419b0121070c9a010b419c0121070c99010b419d0121070c98010b419e0121070c97010b419f0121070c96010b41a00121070c95010b41a10121070c94010b41a20121070c93010b41a30121070c92010b41a40121070c91010b41a50121070c90010b41a60121070c8f010b41a70121070c8e010b41a80121070c8d010b41a90121070c8c010b41aa0121070c8b010b41ab0121070c8a010b200041013602002000200241d8006a41047222012902003702042000410c6a200141086a2902003702000c8b010b2002280260102f0c87010b417f2005104b000b20052003104a000b417f2009104b000b20092003104a000b417f2009104b000b20092003104a000b417f2009104b000b20092003104a000b417f200541016a104b000b417f200541016a104b000b1038000b417f200541016a104b000b417f200541016a104b000b417f2001104b000b417f200541016a104b000b417f200541016a104b000b417f200541016a104b000b417f200541016a104b000b417f200541016a104b000b417f2001104b000b417f200141016a104b000b417f2001104b000b417f200141016a104b000b417f2001104b000b417f200141016a104b000b417f2001104b000b417f200141016a104b000b417f2001104b000b417f200141016a104b000b417f2001104b000b417f200141016a104b000b417f2001104b000b417f200141016a104b000b417f2001104b000b417f200141016a104b000b417f2001104b000b417f200141016a104b000b417f2001104b000b417f200141016a104b000b417f2001104b000b417f200141016a104b000b417f2001104b000b417f200141016a104b000b417f2001104b000b417f200141016a104b000b417f2001104b000b417f200141016a104b000b417f2001104b000b417f200141016a104b000b417f2001104b000b417f200141016a104b000b417f2001104b000b417f200141016a104b000b417f2001104b000b417f200141016a104b000b417f2001104b000b417f200141016a104b000b417f2001104b000b417f200141016a104b000b417f2001104b000b417f200141016a104b000b417f2001104b000b417f200141016a104b000b417f2001104b000b417f200141016a104b000b417f2001104b000b20012003104a000b417f2001104b000b20012003104a000b417f200541016a104b000b2009417f2001411f7174722109412d21070c410b417f200541016a104b000b200541016a2003104a000b20052001104b000b20012003104a000b20052001104b000b20012003104a000b200541016a2003104a000b200541016a2003104a000b200541016a2003104a000b200541016a2003104a000b200541016a2003104a000b200541016a2003104a000b200541016a2003104a000b200541016a2003104a000b200541016a2003104a000b20012003104a000b200141016a2003104a000b20012003104a000b200141016a2003104a000b20012003104a000b200141016a2003104a000b20012003104a000b200141016a2003104a000b20012003104a000b200141016a2003104a000b20012003104a000b200141016a2003104a000b20012003104a000b200141016a2003104a000b20012003104a000b200141016a2003104a000b20012003104a000b200141016a2003104a000b20012003104a000b200141016a2003104a000b20012003104a000b200141016a2003104a000b20012003104a000b200141016a2003104a000b20012003104a000b200141016a2003104a000b20012003104a000b200141016a2003104a000b20012003104a000b200141016a2003104a000b20012003104a000b200141016a2003104a000b20012003104a000b200141016a2003104a000b20012003104a000b200141016a2003104a000b20012003104a000b200141016a2003104a000b20012003104a000b200141016a2003104a000b20012003104a000b200141016a2003104a000b20012003104a000b200141016a2003104a000b20012003104a000b200141016a2003104a000b200541016a2003104a000b0b200020073a0004200020022f00183b000520004101360200200041106a2001360200200041086a200d370200200041076a2002411a6a2d00003a00000c030b0240024002400240024002400240024020072006470d002004210a0c010b20072006490d01024020060d004104210a2007450d012004102f0c010b2004200741027420064102741031220a450d080b4100210941002104034002402009411f4d0d00410f21010c060b20012802082207200128020c2205460d04200541016a22032005490d0220072003490d03200128020020056a2d0000210520082003360200200541ff00712009411f71742004722104200941076a21092005418001710d000b20094120490d05410d21012005410f4d0d050c040b41ebafca00412441f8b4ca001039000b417f2003104b000b20032007104a000b200241013a0018200241ec006a41013602002002420137025c200241b4afca003602582002412836023c2002200241386a3602682002200241186a360238200241286a200241d8006a103a410521010b2000200136020420004101360200200041086a2002290328370200200041106a200241286a41086a280200360200200641ffffffff0371450d03200a102f0c030b410c102d2209450d0120092004360208200920063602042009200a360200410921070b20004100360200200041106a200d3703002000410c6a2009360200200041096a200a3a0000200041086a20073a00000c010b1036000b200241f0006a24000bd607020c7f017e230041d0006b220224004100210341002104024002400240024002400240024002400240034002402003411f4d0d00410f21030c090b20012802082205200128020c2206460d07200641016a22072006490d0120052007490d04200128020020066a2d000021062001200736020c200641ff00712003411f71742004722104200341076a21032006418001710d000b024020034120490d00410d21032006410f4b0d080b20024100360210200242043703082004450d05410421084100210341002109024002400240024003402003210a2009220b41016a2109410021034100210503402003411f4b0d02024002402001280208220c200128020c2206460d00200641016a22072006490d09200c20074f0d012007200c104a000b2002200a36020c2002200b360210200241013a0027200241cc006a41013602002002420137023c200241b4afca003602382002412836021c2002200241186a3602482002200241276a360218200241286a200241386a103a20022802282103200228022c2106200228023021074100210d410521010c060b200128020020066a2d000021062001200736020c200641ff00712003411f71742005722105200341076a21032006418001710d000b024020034120490d002006410f4b0d030b024002400240200b200a460d00200a2103200b210a0c010b200a41016a2203200a490d01200a41017422062003200620034b1b220341ffffffff03712003470d01200341027422034100480d0102400240200a0d002003102d21080c010b2008200a4102742003103121080b2008450d0920022008360208200341027621030b2005410876210d2008200a4102746a200536020020092004460d0a0c010b0b1038000b2002200a36020c2002200b360210410f21010c010b2002200a36020c2002200b360210410d21010b0b20004101360200200041106a20073602002000410c6a2006360200200041086a20033602002000200d410874200172360204200a450d082008102f0c080b417f2007104b000b417f2007104b000b1036000b20072005104a000b2002200336020c200220093602100b20002002290308370204200041003602002000410c6a200241106a2802003602000c020b200241013a0027200241cc006a41013602002002420137023c200241b4afca003602382002412836021c2002200241186a3602482002200241276a360218200241286a200241386a103a410521030b200241086a41086a200241286a41086a280200220136020020022002290328220e37030820002003360204200041086a200e370200200041106a2001360200200041013602000b200241d0006a24000bb4c10202097f017e230041106b2203240002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020012d00000eac01000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f80018101820183018401850186018701880189018a018b018c018d018e018f0190019101920193019401950196019701980199019a019b019c019d019e019f01a001a101a201a301a401a501a601a701a801a901aa01ab01000b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490dae01200441017422062005200620054b1b22064100480dae010240024020040d002006102d21050c010b200228020420042006103121050b2005450dad0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41003a00000cab010b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490dad01200441017422062005200620054b1b22064100480dad010240024020040d002006102d21050c010b200228020420042006103121050b2005450dac0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41013a00000caa010b200241046a210620012d0001210702400240200241086a2802002002410c6a2802002204460d00200628020021050c010b200441016a22052004490dac01200441017422082005200820054b1b22084100480dac010240024020040d002008102d21050c010b200628020020042008103121050b2005450dab0120022005360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200520046a41023a000002400240200241086a28020020082802002204460d00200628020021050c010b200441016a22052004490dac01200441017422082005200820054b1b22084100480dac010240024020040d002008102d21050c010b200628020020042008103121050b2005450dab0120022005360204200241086a20083602002002410c6a28020021040b2002410c6a200441016a360200200520046a42c0818386fcdffffe7c2007410473ad42078342038688a7413f7141c000723a00000ca9010b200241046a210620012d0001210702400240200241086a2802002002410c6a2802002204460d00200628020021050c010b200441016a22052004490dab01200441017422082005200820054b1b22084100480dab010240024020040d002008102d21050c010b200628020020042008103121050b2005450daa0120022005360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200520046a41033a000002400240200241086a28020020082802002204460d00200628020021050c010b200441016a22052004490dab01200441017422082005200820054b1b22084100480dab010240024020040d002008102d21050c010b200628020020042008103121050b2005450daa0120022005360204200241086a20083602002002410c6a28020021040b2002410c6a200441016a360200200520046a42c0818386fcdffffe7c2007410473ad42078342038688a7413f7141c000723a00000ca8010b200241046a210620012d0001210702400240200241086a2802002002410c6a2802002204460d00200628020021050c010b200441016a22052004490daa01200441017422082005200820054b1b22084100480daa010240024020040d002008102d21050c010b200628020020042008103121050b2005450da90120022005360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200520046a41043a000002400240200241086a28020020082802002204460d00200628020021050c010b200441016a22052004490daa01200441017422082005200820054b1b22084100480daa010240024020040d002008102d21050c010b200628020020042008103121050b2005450da90120022005360204200241086a20083602002002410c6a28020021040b2002410c6a200441016a360200200520046a42c0818386fcdffffe7c2007410473ad42078342038688a7413f7141c000723a00000ca7010b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490da901200441017422062005200620054b1b22064100480da9010240024020040d002006102d21050c010b200228020420042006103121050b2005450da80120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41053a00000ca6010b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490da801200441017422062005200620054b1b22064100480da8010240024020040d002006102d21050c010b200228020420042006103121050b2005450da70120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a410b3a00000ca5010b200241046a2109200141046a280200210502400240200241086a2802002002410c6a2802002204460d00200928020021060c010b200441016a22062004490da701200441017422072006200720064b1b22074100480da7010240024020040d002007102d21060c010b200928020020042007103121060b2006450da60120022006360204200241086a20073602002002410c6a28020021040b2002410c6a2207200441016a360200200620046a410c3a0000200241086a2108034002400240200828020020072802002204460d00200928020021060c010b200441016a22062004490da8012004410174220a2006200a20064b1b220a4100480da8010240024020040d00200a102d21060c010b20092802002004200a103121060b2006450da701200220063602042008200a360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000ca5010b0b200241046a2109200141046a280200210502400240200241086a2802002002410c6a2802002204460d00200928020021060c010b200441016a22062004490da601200441017422072006200720064b1b22074100480da6010240024020040d002007102d21060c010b200928020020042007103121060b2006450da50120022006360204200241086a20073602002002410c6a28020021040b2002410c6a2207200441016a360200200620046a410d3a0000200241086a2108034002400240200828020020072802002204460d00200928020021060c010b200441016a22062004490da7012004410174220a2006200a20064b1b220a4100480da7010240024020040d00200a102d21060c010b20092802002004200a103121060b2006450da601200220063602042008200a360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000ca4010b0b200241046a210902400240200241086a2802002002410c6a2802002204460d00200928020021050c010b200441016a22052004490da501200441017422062005200620054b1b22064100480da5010240024020040d002006102d21050c010b200928020020042006103121050b2005450da40120022005360204200241086a20063602002002410c6a28020021040b2002410c6a2207200441016a360200200520046a410e3a0000200320012802042204280204220520042802002204200420054102746a20021092062003210420032d0000411f470dab0120012802042802082105200241086a2108034002400240200828020020072802002204460d00200928020021060c010b200441016a22062004490da6012004410174220a2006200a20064b1b220a4100480da6010240024020040d00200a102d21060c010b20092802002004200a103121060b2006450da501200220063602042008200a360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000ca3010b0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490da401200441017422062005200620054b1b22064100480da4010240024020040d002006102d21050c010b200228020420042006103121050b2005450da30120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a410f3a00000ca1010b200241046a2109200141046a280200210502400240200241086a2802002002410c6a2802002204460d00200928020021060c010b200441016a22062004490da301200441017422072006200720064b1b22074100480da3010240024020040d002007102d21060c010b200928020020042007103121060b2006450da20120022006360204200241086a20073602002002410c6a28020021040b2002410c6a2207200441016a360200200620046a41103a0000200241086a2108034002400240200828020020072802002204460d00200928020021060c010b200441016a22062004490da4012004410174220a2006200a20064b1b220a4100480da4010240024020040d00200a102d21060c010b20092802002004200a103121060b2006450da301200220063602042008200a360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000ca1010b0b200241046a2109200141046a280200210520012d0001210b02400240200241086a2802002002410c6a2802002204460d00200928020021060c010b200441016a22062004490da201200441017422072006200720064b1b22074100480da2010240024020040d002007102d21060c010b200928020020042007103121060b2006450da10120022006360204200241086a20073602002002410c6a28020021040b2002410c6a2207200441016a360200200620046a41113a0000200241086a2108034002400240200828020020072802002204460d00200928020021060c010b200441016a22062004490da3012004410174220a2006200a20064b1b220a4100480da3010240024020040d00200a102d21060c010b20092802002004200a103121060b2006450da201200220063602042008200a360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000b02400240200241086a2802002002410c6a2802002204460d00200928020021050c010b200441016a22052004490da201200441017422062005200620054b1b22064100480da2010240024020040d002006102d21050c010b200928020020042006103121050b2005450da10120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a200b3a00000c9f010b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490da101200441017422062005200620054b1b22064100480da1010240024020040d002006102d21050c010b200228020420042006103121050b2005450da00120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a411a3a00000c9e010b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490da001200441017422062005200620054b1b22064100480da0010240024020040d002006102d21050c010b200228020420042006103121050b2005450d9f0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a411b3a00000c9d010b200241046a2109200141046a280200210502400240200241086a2802002002410c6a2802002204460d00200928020021060c010b200441016a22062004490d9f01200441017422072006200720064b1b22074100480d9f010240024020040d002007102d21060c010b200928020020042007103121060b2006450d9e0120022006360204200241086a20073602002002410c6a28020021040b2002410c6a2207200441016a360200200620046a41203a0000200241086a2108034002400240200828020020072802002204460d00200928020021060c010b200441016a22062004490da0012004410174220a2006200a20064b1b220a4100480da0010240024020040d00200a102d21060c010b20092802002004200a103121060b2006450d9f01200220063602042008200a360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000c9d010b0b200241046a2109200141046a280200210502400240200241086a2802002002410c6a2802002204460d00200928020021060c010b200441016a22062004490d9e01200441017422072006200720064b1b22074100480d9e010240024020040d002007102d21060c010b200928020020042007103121060b2006450d9d0120022006360204200241086a20073602002002410c6a28020021040b2002410c6a2207200441016a360200200620046a41213a0000200241086a2108034002400240200828020020072802002204460d00200928020021060c010b200441016a22062004490d9f012004410174220a2006200a20064b1b220a4100480d9f010240024020040d00200a102d21060c010b20092802002004200a103121060b2006450d9e01200220063602042008200a360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000c9c010b0b200241046a2109200141046a280200210502400240200241086a2802002002410c6a2802002204460d00200928020021060c010b200441016a22062004490d9d01200441017422072006200720064b1b22074100480d9d010240024020040d002007102d21060c010b200928020020042007103121060b2006450d9c0120022006360204200241086a20073602002002410c6a28020021040b2002410c6a2207200441016a360200200620046a41223a0000200241086a2108034002400240200828020020072802002204460d00200928020021060c010b200441016a22062004490d9e012004410174220a2006200a20064b1b220a4100480d9e010240024020040d00200a102d21060c010b20092802002004200a103121060b2006450d9d01200220063602042008200a360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000c9b010b0b200241046a2109200141046a280200210502400240200241086a2802002002410c6a2802002204460d00200928020021060c010b200441016a22062004490d9c01200441017422072006200720064b1b22074100480d9c010240024020040d002007102d21060c010b200928020020042007103121060b2006450d9b0120022006360204200241086a20073602002002410c6a28020021040b2002410c6a2207200441016a360200200620046a41233a0000200241086a2108034002400240200828020020072802002204460d00200928020021060c010b200441016a22062004490d9d012004410174220a2006200a20064b1b220a4100480d9d010240024020040d00200a102d21060c010b20092802002004200a103121060b2006450d9c01200220063602042008200a360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000c9a010b0b200241046a2109200141046a280200210502400240200241086a2802002002410c6a2802002204460d00200928020021060c010b200441016a22062004490d9b01200441017422072006200720064b1b22074100480d9b010240024020040d002007102d21060c010b200928020020042007103121060b2006450d9a0120022006360204200241086a20073602002002410c6a28020021040b2002410c6a2207200441016a360200200620046a41243a0000200241086a2108034002400240200828020020072802002204460d00200928020021060c010b200441016a22062004490d9c012004410174220a2006200a20064b1b220a4100480d9c010240024020040d00200a102d21060c010b20092802002004200a103121060b2006450d9b01200220063602042008200a360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000c99010b0b200241046a210a200141086a2802002105200141046a280200210602400240200241086a2802002002410c6a2802002204460d00200a28020021070c010b200441016a22072004490d9a01200441017422082007200820074b1b22084100480d9a010240024020040d002008102d21070c010b200a28020020042008103121070b2007450d990120022007360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200720046a41283a0000200241086a2109034002400240200928020020082802002204460d00200a28020021070c010b200441016a22072004490d9b012004410174220b2007200b20074b1b220b4100480d9b010240024020040d00200b102d21070c010b200a2802002004200b103121070b2007450d9a01200220073602042009200b360200200828020021040b2008200441016a360200200720046a200641807f72200641ff0071200641077622041b3a00002004210620040d000b2002410c6a2107200241086a2108034002400240200828020020072802002204460d00200a28020021060c010b200441016a22062004490d9b01200441017422092006200920064b1b22094100480d9b010240024020040d002009102d21060c010b200a28020020042009103121060b2006450d9a012002200636020420082009360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000c98010b0b200241046a210a200141086a2802002105200141046a280200210602400240200241086a2802002002410c6a2802002204460d00200a28020021070c010b200441016a22072004490d9901200441017422082007200820074b1b22084100480d99010240024020040d002008102d21070c010b200a28020020042008103121070b2007450d980120022007360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200720046a41293a0000200241086a2109034002400240200928020020082802002204460d00200a28020021070c010b200441016a22072004490d9a012004410174220b2007200b20074b1b220b4100480d9a010240024020040d00200b102d21070c010b200a2802002004200b103121070b2007450d9901200220073602042009200b360200200828020021040b2008200441016a360200200720046a200641807f72200641ff0071200641077622041b3a00002004210620040d000b2002410c6a2107200241086a2108034002400240200828020020072802002204460d00200a28020021060c010b200441016a22062004490d9a01200441017422092006200920064b1b22094100480d9a010240024020040d002009102d21060c010b200a28020020042009103121060b2006450d99012002200636020420082009360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000c97010b0b200241046a210a200141086a2802002105200141046a280200210602400240200241086a2802002002410c6a2802002204460d00200a28020021070c010b200441016a22072004490d9801200441017422082007200820074b1b22084100480d98010240024020040d002008102d21070c010b200a28020020042008103121070b2007450d970120022007360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200720046a412a3a0000200241086a2109034002400240200928020020082802002204460d00200a28020021070c010b200441016a22072004490d99012004410174220b2007200b20074b1b220b4100480d99010240024020040d00200b102d21070c010b200a2802002004200b103121070b2007450d9801200220073602042009200b360200200828020021040b2008200441016a360200200720046a200641807f72200641ff0071200641077622041b3a00002004210620040d000b2002410c6a2107200241086a2108034002400240200828020020072802002204460d00200a28020021060c010b200441016a22062004490d9901200441017422092006200920064b1b22094100480d99010240024020040d002009102d21060c010b200a28020020042009103121060b2006450d98012002200636020420082009360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000c96010b0b200241046a210a200141086a2802002105200141046a280200210602400240200241086a2802002002410c6a2802002204460d00200a28020021070c010b200441016a22072004490d9701200441017422082007200820074b1b22084100480d97010240024020040d002008102d21070c010b200a28020020042008103121070b2007450d960120022007360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200720046a412b3a0000200241086a2109034002400240200928020020082802002204460d00200a28020021070c010b200441016a22072004490d98012004410174220b2007200b20074b1b220b4100480d98010240024020040d00200b102d21070c010b200a2802002004200b103121070b2007450d9701200220073602042009200b360200200828020021040b2008200441016a360200200720046a200641807f72200641ff0071200641077622041b3a00002004210620040d000b2002410c6a2107200241086a2108034002400240200828020020072802002204460d00200a28020021060c010b200441016a22062004490d9801200441017422092006200920064b1b22094100480d98010240024020040d002009102d21060c010b200a28020020042009103121060b2006450d97012002200636020420082009360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000c95010b0b200241046a210a200141086a2802002105200141046a280200210602400240200241086a2802002002410c6a2802002204460d00200a28020021070c010b200441016a22072004490d9601200441017422082007200820074b1b22084100480d96010240024020040d002008102d21070c010b200a28020020042008103121070b2007450d950120022007360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200720046a412c3a0000200241086a2109034002400240200928020020082802002204460d00200a28020021070c010b200441016a22072004490d97012004410174220b2007200b20074b1b220b4100480d97010240024020040d00200b102d21070c010b200a2802002004200b103121070b2007450d9601200220073602042009200b360200200828020021040b2008200441016a360200200720046a200641807f72200641ff0071200641077622041b3a00002004210620040d000b2002410c6a2107200241086a2108034002400240200828020020072802002204460d00200a28020021060c010b200441016a22062004490d9701200441017422092006200920064b1b22094100480d97010240024020040d002009102d21060c010b200a28020020042009103121060b2006450d96012002200636020420082009360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000c94010b0b200241046a210a200141086a2802002106200141046a280200210502400240200241086a2802002002410c6a2802002204460d00200a28020021070c010b200441016a22072004490d9501200441017422082007200820074b1b22084100480d95010240024020040d002008102d21070c010b200a28020020042008103121070b2007450d940120022007360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200720046a412d3a0000200241086a2109034002400240200928020020082802002204460d00200a28020021070c010b200441016a22072004490d96012004410174220b2007200b20074b1b220b4100480d96010240024020040d00200b102d21070c010b200a2802002004200b103121070b2007450d9501200220073602042009200b360200200828020021040b2008200441016a360200200720046a200541807f72200541ff0071200541077622041b3a00002004210520040d000b2002410c6a2107200241086a2108034002400240200828020020072802002204460d00200a28020021050c010b200441016a22052004490d9601200441017422092005200920054b1b22094100480d96010240024020040d002009102d21050c010b200a28020020042009103121050b2005450d95012002200536020420082009360200200728020021040b2007200441016a360200200520046a200641807f72200641ff0071200641077622041b3a00002004210620040d000c93010b0b200241046a210a200141086a2802002106200141046a280200210502400240200241086a2802002002410c6a2802002204460d00200a28020021070c010b200441016a22072004490d9401200441017422082007200820074b1b22084100480d94010240024020040d002008102d21070c010b200a28020020042008103121070b2007450d930120022007360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200720046a412e3a0000200241086a2109034002400240200928020020082802002204460d00200a28020021070c010b200441016a22072004490d95012004410174220b2007200b20074b1b220b4100480d95010240024020040d00200b102d21070c010b200a2802002004200b103121070b2007450d9401200220073602042009200b360200200828020021040b2008200441016a360200200720046a200541807f72200541ff0071200541077622041b3a00002004210520040d000b2002410c6a2107200241086a2108034002400240200828020020072802002204460d00200a28020021050c010b200441016a22052004490d9501200441017422092005200920054b1b22094100480d95010240024020040d002009102d21050c010b200a28020020042009103121050b2005450d94012002200536020420082009360200200728020021040b2007200441016a360200200520046a200641807f72200641ff0071200641077622041b3a00002004210620040d000c92010b0b200241046a210a200141086a2802002105200141046a280200210602400240200241086a2802002002410c6a2802002204460d00200a28020021070c010b200441016a22072004490d9301200441017422082007200820074b1b22084100480d93010240024020040d002008102d21070c010b200a28020020042008103121070b2007450d920120022007360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200720046a412f3a0000200241086a2109034002400240200928020020082802002204460d00200a28020021070c010b200441016a22072004490d94012004410174220b2007200b20074b1b220b4100480d94010240024020040d00200b102d21070c010b200a2802002004200b103121070b2007450d9301200220073602042009200b360200200828020021040b2008200441016a360200200720046a200641807f72200641ff0071200641077622041b3a00002004210620040d000b2002410c6a2107200241086a2108034002400240200828020020072802002204460d00200a28020021060c010b200441016a22062004490d9401200441017422092006200920064b1b22094100480d94010240024020040d002009102d21060c010b200a28020020042009103121060b2006450d93012002200636020420082009360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000c91010b0b200241046a210a200141086a2802002105200141046a280200210602400240200241086a2802002002410c6a2802002204460d00200a28020021070c010b200441016a22072004490d9201200441017422082007200820074b1b22084100480d92010240024020040d002008102d21070c010b200a28020020042008103121070b2007450d910120022007360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200720046a41303a0000200241086a2109034002400240200928020020082802002204460d00200a28020021070c010b200441016a22072004490d93012004410174220b2007200b20074b1b220b4100480d93010240024020040d00200b102d21070c010b200a2802002004200b103121070b2007450d9201200220073602042009200b360200200828020021040b2008200441016a360200200720046a200641807f72200641ff0071200641077622041b3a00002004210620040d000b2002410c6a2107200241086a2108034002400240200828020020072802002204460d00200a28020021060c010b200441016a22062004490d9301200441017422092006200920064b1b22094100480d93010240024020040d002009102d21060c010b200a28020020042009103121060b2006450d92012002200636020420082009360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000c90010b0b200241046a210a200141086a2802002106200141046a280200210502400240200241086a2802002002410c6a2802002204460d00200a28020021070c010b200441016a22072004490d9101200441017422082007200820074b1b22084100480d91010240024020040d002008102d21070c010b200a28020020042008103121070b2007450d900120022007360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200720046a41313a0000200241086a2109034002400240200928020020082802002204460d00200a28020021070c010b200441016a22072004490d92012004410174220b2007200b20074b1b220b4100480d92010240024020040d00200b102d21070c010b200a2802002004200b103121070b2007450d9101200220073602042009200b360200200828020021040b2008200441016a360200200720046a200541807f72200541ff0071200541077622041b3a00002004210520040d000b2002410c6a2107200241086a2108034002400240200828020020072802002204460d00200a28020021050c010b200441016a22052004490d9201200441017422092005200920054b1b22094100480d92010240024020040d002009102d21050c010b200a28020020042009103121050b2005450d91012002200536020420082009360200200728020021040b2007200441016a360200200520046a200641807f72200641ff0071200641077622041b3a00002004210620040d000c8f010b0b200241046a210a200141086a2802002106200141046a280200210502400240200241086a2802002002410c6a2802002204460d00200a28020021070c010b200441016a22072004490d9001200441017422082007200820074b1b22084100480d90010240024020040d002008102d21070c010b200a28020020042008103121070b2007450d8f0120022007360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200720046a41323a0000200241086a2109034002400240200928020020082802002204460d00200a28020021070c010b200441016a22072004490d91012004410174220b2007200b20074b1b220b4100480d91010240024020040d00200b102d21070c010b200a2802002004200b103121070b2007450d9001200220073602042009200b360200200828020021040b2008200441016a360200200720046a200541807f72200541ff0071200541077622041b3a00002004210520040d000b2002410c6a2107200241086a2108034002400240200828020020072802002204460d00200a28020021050c010b200441016a22052004490d9101200441017422092005200920054b1b22094100480d91010240024020040d002009102d21050c010b200a28020020042009103121050b2005450d90012002200536020420082009360200200728020021040b2007200441016a360200200520046a200641807f72200641ff0071200641077622041b3a00002004210620040d000c8e010b0b200241046a210a200141086a2802002105200141046a280200210602400240200241086a2802002002410c6a2802002204460d00200a28020021070c010b200441016a22072004490d8f01200441017422082007200820074b1b22084100480d8f010240024020040d002008102d21070c010b200a28020020042008103121070b2007450d8e0120022007360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200720046a41333a0000200241086a2109034002400240200928020020082802002204460d00200a28020021070c010b200441016a22072004490d90012004410174220b2007200b20074b1b220b4100480d90010240024020040d00200b102d21070c010b200a2802002004200b103121070b2007450d8f01200220073602042009200b360200200828020021040b2008200441016a360200200720046a200641807f72200641ff0071200641077622041b3a00002004210620040d000b2002410c6a2107200241086a2108034002400240200828020020072802002204460d00200a28020021060c010b200441016a22062004490d9001200441017422092006200920064b1b22094100480d90010240024020040d002009102d21060c010b200a28020020042009103121060b2006450d8f012002200636020420082009360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000c8d010b0b200241046a210a200141086a2802002105200141046a280200210602400240200241086a2802002002410c6a2802002204460d00200a28020021070c010b200441016a22072004490d8e01200441017422082007200820074b1b22084100480d8e010240024020040d002008102d21070c010b200a28020020042008103121070b2007450d8d0120022007360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200720046a41343a0000200241086a2109034002400240200928020020082802002204460d00200a28020021070c010b200441016a22072004490d8f012004410174220b2007200b20074b1b220b4100480d8f010240024020040d00200b102d21070c010b200a2802002004200b103121070b2007450d8e01200220073602042009200b360200200828020021040b2008200441016a360200200720046a200641807f72200641ff0071200641077622041b3a00002004210620040d000b2002410c6a2107200241086a2108034002400240200828020020072802002204460d00200a28020021060c010b200441016a22062004490d8f01200441017422092006200920064b1b22094100480d8f010240024020040d002009102d21060c010b200a28020020042009103121060b2006450d8e012002200636020420082009360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000c8c010b0b200241046a210a200141086a2802002105200141046a280200210602400240200241086a2802002002410c6a2802002204460d00200a28020021070c010b200441016a22072004490d8d01200441017422082007200820074b1b22084100480d8d010240024020040d002008102d21070c010b200a28020020042008103121070b2007450d8c0120022007360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200720046a41353a0000200241086a2109034002400240200928020020082802002204460d00200a28020021070c010b200441016a22072004490d8f012004410174220b2007200b20074b1b220b4100480d8f010240024020040d00200b102d21070c010b200a2802002004200b103121070b2007450d8d01200220073602042009200b360200200828020021040b2008200441016a360200200720046a200641807f72200641ff0071200641077622041b3a00002004210620040d000b2002410c6a2107200241086a2108034002400240200828020020072802002204460d00200a28020021060c010b200441016a22062004490d8f01200441017422092006200920064b1b22094100480d8f010240024020040d002009102d21060c010b200a28020020042009103121060b2006450d90012002200636020420082009360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000c8b010b0b200241046a210a200141086a2802002105200141046a280200210602400240200241086a2802002002410c6a2802002204460d00200a28020021070c010b200441016a22072004490d8d01200441017422082007200820074b1b22084100480d8d010240024020040d002008102d21070c010b200a28020020042008103121070b2007450d8e0120022007360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200720046a41363a0000200241086a2109034002400240200928020020082802002204460d00200a28020021070c010b200441016a22072004490d8e012004410174220b2007200b20074b1b220b4100480d8e010240024020040d00200b102d21070c010b200a2802002004200b103121070b2007450d8f01200220073602042009200b360200200828020021040b2008200441016a360200200720046a200641807f72200641ff0071200641077622041b3a00002004210620040d000b2002410c6a2107200241086a2108034002400240200828020020072802002204460d00200a28020021060c010b200441016a22062004490d8e01200441017422092006200920064b1b22094100480d8e010240024020040d002009102d21060c010b200a28020020042009103121060b2006450d8f012002200636020420082009360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000c8a010b0b200241046a210a200141086a2802002106200141046a280200210502400240200241086a2802002002410c6a2802002204460d00200a28020021070c010b200441016a22072004490d8c01200441017422082007200820074b1b22084100480d8c010240024020040d002008102d21070c010b200a28020020042008103121070b2007450d8d0120022007360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200720046a41373a0000200241086a2109034002400240200928020020082802002204460d00200a28020021070c010b200441016a22072004490d8d012004410174220b2007200b20074b1b220b4100480d8d010240024020040d00200b102d21070c010b200a2802002004200b103121070b2007450d8e01200220073602042009200b360200200828020021040b2008200441016a360200200720046a200541807f72200541ff0071200541077622041b3a00002004210520040d000b2002410c6a2107200241086a2108034002400240200828020020072802002204460d00200a28020021050c010b200441016a22052004490d8d01200441017422092005200920054b1b22094100480d8d010240024020040d002009102d21050c010b200a28020020042009103121050b2005450d8e012002200536020420082009360200200728020021040b2007200441016a360200200520046a200641807f72200641ff0071200641077622041b3a00002004210620040d000c89010b0b200241046a210a200141086a2802002105200141046a280200210602400240200241086a2802002002410c6a2802002204460d00200a28020021070c010b200441016a22072004490d8b01200441017422082007200820074b1b22084100480d8b010240024020040d002008102d21070c010b200a28020020042008103121070b2007450d8c0120022007360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200720046a41383a0000200241086a2109034002400240200928020020082802002204460d00200a28020021070c010b200441016a22072004490d8c012004410174220b2007200b20074b1b220b4100480d8c010240024020040d00200b102d21070c010b200a2802002004200b103121070b2007450d8d01200220073602042009200b360200200828020021040b2008200441016a360200200720046a200641807f72200641ff0071200641077622041b3a00002004210620040d000b2002410c6a2107200241086a2108034002400240200828020020072802002204460d00200a28020021060c010b200441016a22062004490d8c01200441017422092006200920064b1b22094100480d8c010240024020040d002009102d21060c010b200a28020020042009103121060b2006450d8d012002200636020420082009360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000c88010b0b200241046a210a200141086a2802002106200141046a280200210502400240200241086a2802002002410c6a2802002204460d00200a28020021070c010b200441016a22072004490d8a01200441017422082007200820074b1b22084100480d8a010240024020040d002008102d21070c010b200a28020020042008103121070b2007450d8b0120022007360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200720046a41393a0000200241086a2109034002400240200928020020082802002204460d00200a28020021070c010b200441016a22072004490d8b012004410174220b2007200b20074b1b220b4100480d8b010240024020040d00200b102d21070c010b200a2802002004200b103121070b2007450d8c01200220073602042009200b360200200828020021040b2008200441016a360200200720046a200541807f72200541ff0071200541077622041b3a00002004210520040d000b2002410c6a2107200241086a2108034002400240200828020020072802002204460d00200a28020021050c010b200441016a22052004490d8b01200441017422092005200920054b1b22094100480d8b010240024020040d002009102d21050c010b200a28020020042009103121050b2005450d8c012002200536020420082009360200200728020021040b2007200441016a360200200520046a200641807f72200641ff0071200641077622041b3a00002004210620040d000c87010b0b200241046a210a200141086a2802002106200141046a280200210502400240200241086a2802002002410c6a2802002204460d00200a28020021070c010b200441016a22072004490d8901200441017422082007200820074b1b22084100480d89010240024020040d002008102d21070c010b200a28020020042008103121070b2007450d8a0120022007360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200720046a413a3a0000200241086a2109034002400240200928020020082802002204460d00200a28020021070c010b200441016a22072004490d8a012004410174220b2007200b20074b1b220b4100480d8a010240024020040d00200b102d21070c010b200a2802002004200b103121070b2007450d8b01200220073602042009200b360200200828020021040b2008200441016a360200200720046a200541807f72200541ff0071200541077622041b3a00002004210520040d000b2002410c6a2107200241086a2108034002400240200828020020072802002204460d00200a28020021050c010b200441016a22052004490d8a01200441017422092005200920054b1b22094100480d8a010240024020040d002009102d21050c010b200a28020020042009103121050b2005450d8b012002200536020420082009360200200728020021040b2007200441016a360200200520046a200641807f72200641ff0071200641077622041b3a00002004210620040d000c86010b0b200241046a210a200141086a2802002105200141046a280200210602400240200241086a2802002002410c6a2802002204460d00200a28020021070c010b200441016a22072004490d8801200441017422082007200820074b1b22084100480d88010240024020040d002008102d21070c010b200a28020020042008103121070b2007450d890120022007360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200720046a413b3a0000200241086a2109034002400240200928020020082802002204460d00200a28020021070c010b200441016a22072004490d89012004410174220b2007200b20074b1b220b4100480d89010240024020040d00200b102d21070c010b200a2802002004200b103121070b2007450d8a01200220073602042009200b360200200828020021040b2008200441016a360200200720046a200641807f72200641ff0071200641077622041b3a00002004210620040d000b2002410c6a2107200241086a2108034002400240200828020020072802002204460d00200a28020021060c010b200441016a22062004490d8901200441017422092006200920064b1b22094100480d89010240024020040d002009102d21060c010b200a28020020042009103121060b2006450d8a012002200636020420082009360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000c85010b0b200241046a210a200141086a2802002105200141046a280200210602400240200241086a2802002002410c6a2802002204460d00200a28020021070c010b200441016a22072004490d8701200441017422082007200820074b1b22084100480d87010240024020040d002008102d21070c010b200a28020020042008103121070b2007450d880120022007360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200720046a413c3a0000200241086a2109034002400240200928020020082802002204460d00200a28020021070c010b200441016a22072004490d88012004410174220b2007200b20074b1b220b4100480d88010240024020040d00200b102d21070c010b200a2802002004200b103121070b2007450d8901200220073602042009200b360200200828020021040b2008200441016a360200200720046a200641807f72200641ff0071200641077622041b3a00002004210620040d000b2002410c6a2107200241086a2108034002400240200828020020072802002204460d00200a28020021060c010b200441016a22062004490d8801200441017422092006200920064b1b22094100480d88010240024020040d002009102d21060c010b200a28020020042009103121060b2006450d89012002200636020420082009360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000c84010b0b200241046a210a200141086a2802002105200141046a280200210602400240200241086a2802002002410c6a2802002204460d00200a28020021070c010b200441016a22072004490d8601200441017422082007200820074b1b22084100480d86010240024020040d002008102d21070c010b200a28020020042008103121070b2007450d870120022007360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200720046a413d3a0000200241086a2109034002400240200928020020082802002204460d00200a28020021070c010b200441016a22072004490d87012004410174220b2007200b20074b1b220b4100480d87010240024020040d00200b102d21070c010b200a2802002004200b103121070b2007450d8801200220073602042009200b360200200828020021040b2008200441016a360200200720046a200641807f72200641ff0071200641077622041b3a00002004210620040d000b2002410c6a2107200241086a2108034002400240200828020020072802002204460d00200a28020021060c010b200441016a22062004490d8701200441017422092006200920064b1b22094100480d87010240024020040d002009102d21060c010b200a28020020042009103121060b2006450d88012002200636020420082009360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000c83010b0b200241046a210a200141086a2802002105200141046a280200210602400240200241086a2802002002410c6a2802002204460d00200a28020021070c010b200441016a22072004490d8501200441017422082007200820074b1b22084100480d85010240024020040d002008102d21070c010b200a28020020042008103121070b2007450d860120022007360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200720046a413e3a0000200241086a2109034002400240200928020020082802002204460d00200a28020021070c010b200441016a22072004490d86012004410174220b2007200b20074b1b220b4100480d86010240024020040d00200b102d21070c010b200a2802002004200b103121070b2007450d8701200220073602042009200b360200200828020021040b2008200441016a360200200720046a200641807f72200641ff0071200641077622041b3a00002004210620040d000b2002410c6a2107200241086a2108034002400240200828020020072802002204460d00200a28020021060c010b200441016a22062004490d8601200441017422092006200920064b1b22094100480d86010240024020040d002009102d21060c010b200a28020020042009103121060b2006450d87012002200636020420082009360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000c82010b0b200241046a210620012d0001210702400240200241086a2802002002410c6a2802002204460d00200628020021050c010b200441016a22052004490d8401200441017422082005200820054b1b22084100480d84010240024020040d002008102d21050c010b200628020020042008103121050b2005450d850120022005360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200520046a413f3a000002400240200241086a28020020082802002204460d00200628020021050c010b200441016a22052004490d8401200441017422082005200820054b1b22084100480d84010240024020040d002008102d21050c010b200628020020042008103121050b2005450d850120022005360204200241086a20083602002002410c6a28020021040b2002410c6a200441016a360200200520046a20073a00000c80010b200241046a210620012d0001210702400240200241086a2802002002410c6a2802002204460d00200628020021050c010b200441016a22052004490d8301200441017422082005200820054b1b22084100480d83010240024020040d002008102d21050c010b200628020020042008103121050b2005450d840120022005360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200520046a41c0003a000002400240200241086a28020020082802002204460d00200628020021050c010b200441016a22052004490d8301200441017422082005200820054b1b22084100480d83010240024020040d002008102d21050c010b200628020020042008103121050b2005450d840120022005360204200241086a20083602002002410c6a28020021040b2002410c6a200441016a360200200520046a20073a00000c7f0b200141046a280200210602400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d8201200441017422072005200720054b1b22074100480d82010240024020040d002007102d21050c010b200228020420042007103121050b2005450d830120022005360204200241086a20073602002002410c6a28020021040b2002410c6a200441016a360200200520046a41c1003a00002003200620021093062003210420032d0000411f470d87010c7e0b200141086a290300210c02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d8101200441017422062005200620054b1b22064100480d81010240024020040d002006102d21050c010b200228020420042006103121050b2005450d820120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41c2003a00002003200c20021094062003210420032d0000411f470d86010c7d0b200241046a2106200141046a280200210702400240200241086a2802002002410c6a2802002204460d00200628020021050c010b200441016a22052004490d8001200441017422082005200820054b1b22084100480d80010240024020040d002008102d21050c010b200628020020042008103121050b2005450d810120022005360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200520046a41c3003a000002400240200241086a2802002205200828020022046b4104490d00200628020021050c010b200441046a22082004490d8001200541017422042008200420084b1b22044100480d80010240024020050d002004102d21050c010b200628020020052004103121050b2005450d810120022005360204200241086a20043602002002410c6a28020021040b2002410c6a200441046a360200200520046a20073600000c7c0b200241046a2106200141086a290300210c02400240200241086a2802002002410c6a2802002204460d00200628020021050c010b200441016a22052004490d7f200441017422072005200720054b1b22074100480d7f0240024020040d002007102d21050c010b200628020020042007103121050b2005450d800120022005360204200241086a20073602002002410c6a28020021040b2002410c6a2207200441016a360200200520046a41c4003a000002400240200241086a2802002205200728020022046b4108490d00200628020021050c010b200441086a22072004490d7f200541017422042007200420074b1b22044100480d7f0240024020050d002004102d21050c010b200628020020052004103121050b2005450d800120022005360204200241086a20043602002002410c6a28020021040b2002410c6a200441086a360200200520046a200c3700000c7b0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d7e200441017422062005200620054b1b22064100480d7e0240024020040d002006102d21050c010b200228020420042006103121050b2005450d7f20022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41c5003a00000c7a0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d7d200441017422062005200620054b1b22064100480d7d0240024020040d002006102d21050c010b200228020420042006103121050b2005450d7e20022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41c6003a00000c790b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d7c200441017422062005200620054b1b22064100480d7c0240024020040d002006102d21050c010b200228020420042006103121050b2005450d7d20022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41c7003a00000c780b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d7b200441017422062005200620054b1b22064100480d7b0240024020040d002006102d21050c010b200228020420042006103121050b2005450d7c20022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41c8003a00000c770b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d7a200441017422062005200620054b1b22064100480d7a0240024020040d002006102d21050c010b200228020420042006103121050b2005450d7b20022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41c9003a00000c760b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d79200441017422062005200620054b1b22064100480d790240024020040d002006102d21050c010b200228020420042006103121050b2005450d7a20022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41ca003a00000c750b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d78200441017422062005200620054b1b22064100480d780240024020040d002006102d21050c010b200228020420042006103121050b2005450d7920022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41cb003a00000c740b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d77200441017422062005200620054b1b22064100480d770240024020040d002006102d21050c010b200228020420042006103121050b2005450d7820022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41cc003a00000c730b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d76200441017422062005200620054b1b22064100480d760240024020040d002006102d21050c010b200228020420042006103121050b2005450d7720022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41cd003a00000c720b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d75200441017422062005200620054b1b22064100480d750240024020040d002006102d21050c010b200228020420042006103121050b2005450d7620022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41ce003a00000c710b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d74200441017422062005200620054b1b22064100480d740240024020040d002006102d21050c010b200228020420042006103121050b2005450d7520022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41cf003a00000c700b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d73200441017422062005200620054b1b22064100480d730240024020040d002006102d21050c010b200228020420042006103121050b2005450d7420022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41d0003a00000c6f0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d72200441017422062005200620054b1b22064100480d720240024020040d002006102d21050c010b200228020420042006103121050b2005450d7320022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41d1003a00000c6e0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d71200441017422062005200620054b1b22064100480d710240024020040d002006102d21050c010b200228020420042006103121050b2005450d7220022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41d2003a00000c6d0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d70200441017422062005200620054b1b22064100480d700240024020040d002006102d21050c010b200228020420042006103121050b2005450d7120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41d3003a00000c6c0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d6f200441017422062005200620054b1b22064100480d6f0240024020040d002006102d21050c010b200228020420042006103121050b2005450d7020022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41d4003a00000c6b0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d6e200441017422062005200620054b1b22064100480d6e0240024020040d002006102d21050c010b200228020420042006103121050b2005450d6f20022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41d5003a00000c6a0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d6d200441017422062005200620054b1b22064100480d6d0240024020040d002006102d21050c010b200228020420042006103121050b2005450d6e20022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41d6003a00000c690b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d6c200441017422062005200620054b1b22064100480d6c0240024020040d002006102d21050c010b200228020420042006103121050b2005450d6d20022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41d7003a00000c680b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d6b200441017422062005200620054b1b22064100480d6b0240024020040d002006102d21050c010b200228020420042006103121050b2005450d6c20022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41d8003a00000c670b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d6a200441017422062005200620054b1b22064100480d6a0240024020040d002006102d21050c010b200228020420042006103121050b2005450d6b20022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41d9003a00000c660b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d69200441017422062005200620054b1b22064100480d690240024020040d002006102d21050c010b200228020420042006103121050b2005450d6a20022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41da003a00000c650b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d68200441017422062005200620054b1b22064100480d680240024020040d002006102d21050c010b200228020420042006103121050b2005450d6920022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41db003a00000c640b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d67200441017422062005200620054b1b22064100480d670240024020040d002006102d21050c010b200228020420042006103121050b2005450d6820022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41dc003a00000c630b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d66200441017422062005200620054b1b22064100480d660240024020040d002006102d21050c010b200228020420042006103121050b2005450d6720022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41dd003a00000c620b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d65200441017422062005200620054b1b22064100480d650240024020040d002006102d21050c010b200228020420042006103121050b2005450d6620022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41de003a00000c610b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d64200441017422062005200620054b1b22064100480d640240024020040d002006102d21050c010b200228020420042006103121050b2005450d6520022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41df003a00000c600b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d63200441017422062005200620054b1b22064100480d630240024020040d002006102d21050c010b200228020420042006103121050b2005450d6420022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41e0003a00000c5f0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d62200441017422062005200620054b1b22064100480d620240024020040d002006102d21050c010b200228020420042006103121050b2005450d6320022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41e1003a00000c5e0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d61200441017422062005200620054b1b22064100480d610240024020040d002006102d21050c010b200228020420042006103121050b2005450d6220022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41e2003a00000c5d0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d60200441017422062005200620054b1b22064100480d600240024020040d002006102d21050c010b200228020420042006103121050b2005450d6120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41e3003a00000c5c0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d5f200441017422062005200620054b1b22064100480d5f0240024020040d002006102d21050c010b200228020420042006103121050b2005450d6020022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41e4003a00000c5b0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d5e200441017422062005200620054b1b22064100480d5e0240024020040d002006102d21050c010b200228020420042006103121050b2005450d5f20022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41e5003a00000c5a0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d5d200441017422062005200620054b1b22064100480d5d0240024020040d002006102d21050c010b200228020420042006103121050b2005450d5e20022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41e6003a00000c590b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d5c200441017422062005200620054b1b22064100480d5c0240024020040d002006102d21050c010b200228020420042006103121050b2005450d5d20022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41e7003a00000c580b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d5b200441017422062005200620054b1b22064100480d5b0240024020040d002006102d21050c010b200228020420042006103121050b2005450d5c20022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41e8003a00000c570b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d5c200441017422062005200620054b1b22064100480d5c0240024020040d002006102d21050c010b200228020420042006103121050b2005450d5b20022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41e9003a00000c560b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d5b200441017422062005200620054b1b22064100480d5b0240024020040d002006102d21050c010b200228020420042006103121050b2005450d5c20022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41ea003a00000c550b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d5a200441017422062005200620054b1b22064100480d5a0240024020040d002006102d21050c010b200228020420042006103121050b2005450d5b20022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41eb003a00000c540b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d59200441017422062005200620054b1b22064100480d590240024020040d002006102d21050c010b200228020420042006103121050b2005450d5a20022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41ec003a00000c530b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d58200441017422062005200620054b1b22064100480d580240024020040d002006102d21050c010b200228020420042006103121050b2005450d5920022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41ed003a00000c520b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d57200441017422062005200620054b1b22064100480d570240024020040d002006102d21050c010b200228020420042006103121050b2005450d5820022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41ee003a00000c510b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d56200441017422062005200620054b1b22064100480d560240024020040d002006102d21050c010b200228020420042006103121050b2005450d5720022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41ef003a00000c500b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d55200441017422062005200620054b1b22064100480d550240024020040d002006102d21050c010b200228020420042006103121050b2005450d5620022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41f0003a00000c4f0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d54200441017422062005200620054b1b22064100480d540240024020040d002006102d21050c010b200228020420042006103121050b2005450d5520022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41f1003a00000c4e0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d53200441017422062005200620054b1b22064100480d530240024020040d002006102d21050c010b200228020420042006103121050b2005450d5420022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41f2003a00000c4d0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d52200441017422062005200620054b1b22064100480d520240024020040d002006102d21050c010b200228020420042006103121050b2005450d5320022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41f3003a00000c4c0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d51200441017422062005200620054b1b22064100480d510240024020040d002006102d21050c010b200228020420042006103121050b2005450d5220022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41f4003a00000c4b0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d50200441017422062005200620054b1b22064100480d500240024020040d002006102d21050c010b200228020420042006103121050b2005450d5120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41f5003a00000c4a0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d4f200441017422062005200620054b1b22064100480d4f0240024020040d002006102d21050c010b200228020420042006103121050b2005450d5020022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41f6003a00000c490b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d4e200441017422062005200620054b1b22064100480d4e0240024020040d002006102d21050c010b200228020420042006103121050b2005450d4f20022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41f7003a00000c480b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d4d200441017422062005200620054b1b22064100480d4d0240024020040d002006102d21050c010b200228020420042006103121050b2005450d4e20022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41f8003a00000c470b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d4c200441017422062005200620054b1b22064100480d4c0240024020040d002006102d21050c010b200228020420042006103121050b2005450d4d20022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41f9003a00000c460b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d4b200441017422062005200620054b1b22064100480d4b0240024020040d002006102d21050c010b200228020420042006103121050b2005450d4c20022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41fa003a00000c450b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d4a200441017422062005200620054b1b22064100480d4a0240024020040d002006102d21050c010b200228020420042006103121050b2005450d4b20022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41fb003a00000c440b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d49200441017422062005200620054b1b22064100480d490240024020040d002006102d21050c010b200228020420042006103121050b2005450d4a20022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41fc003a00000c430b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d48200441017422062005200620054b1b22064100480d480240024020040d002006102d21050c010b200228020420042006103121050b2005450d4920022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41fd003a00000c420b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d47200441017422062005200620054b1b22064100480d470240024020040d002006102d21050c010b200228020420042006103121050b2005450d4820022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41fe003a00000c410b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d46200441017422062005200620054b1b22064100480d460240024020040d002006102d21050c010b200228020420042006103121050b2005450d4720022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41ff003a00000c400b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d45200441017422062005200620054b1b22064100480d450240024020040d002006102d21050c010b200228020420042006103121050b2005450d4620022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a4180013a00000c3f0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d44200441017422062005200620054b1b22064100480d440240024020040d002006102d21050c010b200228020420042006103121050b2005450d4520022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a4181013a00000c3e0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d43200441017422062005200620054b1b22064100480d430240024020040d002006102d21050c010b200228020420042006103121050b2005450d4420022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a4182013a00000c3d0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d42200441017422062005200620054b1b22064100480d420240024020040d002006102d21050c010b200228020420042006103121050b2005450d4320022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a4183013a00000c3c0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d41200441017422062005200620054b1b22064100480d410240024020040d002006102d21050c010b200228020420042006103121050b2005450d4220022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a4184013a00000c3b0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d40200441017422062005200620054b1b22064100480d400240024020040d002006102d21050c010b200228020420042006103121050b2005450d4120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a4185013a00000c3a0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d3f200441017422062005200620054b1b22064100480d3f0240024020040d002006102d21050c010b200228020420042006103121050b2005450d4020022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a4186013a00000c390b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d3e200441017422062005200620054b1b22064100480d3e0240024020040d002006102d21050c010b200228020420042006103121050b2005450d3f20022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a4187013a00000c380b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d3d200441017422062005200620054b1b22064100480d3d0240024020040d002006102d21050c010b200228020420042006103121050b2005450d3e20022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a4188013a00000c370b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d3c200441017422062005200620054b1b22064100480d3c0240024020040d002006102d21050c010b200228020420042006103121050b2005450d3d20022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a4189013a00000c360b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d3b200441017422062005200620054b1b22064100480d3b0240024020040d002006102d21050c010b200228020420042006103121050b2005450d3c20022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a418a013a00000c350b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d3a200441017422062005200620054b1b22064100480d3a0240024020040d002006102d21050c010b200228020420042006103121050b2005450d3b20022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a418b013a00000c340b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d39200441017422062005200620054b1b22064100480d390240024020040d002006102d21050c010b200228020420042006103121050b2005450d3a20022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a418c013a00000c330b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d38200441017422062005200620054b1b22064100480d380240024020040d002006102d21050c010b200228020420042006103121050b2005450d3920022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a418d013a00000c320b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d37200441017422062005200620054b1b22064100480d370240024020040d002006102d21050c010b200228020420042006103121050b2005450d3820022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a418e013a00000c310b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d36200441017422062005200620054b1b22064100480d360240024020040d002006102d21050c010b200228020420042006103121050b2005450d3720022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a418f013a00000c300b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d35200441017422062005200620054b1b22064100480d350240024020040d002006102d21050c010b200228020420042006103121050b2005450d3620022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a4190013a00000c2f0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d34200441017422062005200620054b1b22064100480d340240024020040d002006102d21050c010b200228020420042006103121050b2005450d3520022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a4191013a00000c2e0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d33200441017422062005200620054b1b22064100480d330240024020040d002006102d21050c010b200228020420042006103121050b2005450d3420022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a4192013a00000c2d0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d32200441017422062005200620054b1b22064100480d320240024020040d002006102d21050c010b200228020420042006103121050b2005450d3320022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a4193013a00000c2c0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d31200441017422062005200620054b1b22064100480d310240024020040d002006102d21050c010b200228020420042006103121050b2005450d3220022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a4194013a00000c2b0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d30200441017422062005200620054b1b22064100480d300240024020040d002006102d21050c010b200228020420042006103121050b2005450d3120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a4195013a00000c2a0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d2f200441017422062005200620054b1b22064100480d2f0240024020040d002006102d21050c010b200228020420042006103121050b2005450d3020022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a4196013a00000c290b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d2e200441017422062005200620054b1b22064100480d2e0240024020040d002006102d21050c010b200228020420042006103121050b2005450d2f20022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a4197013a00000c280b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d2d200441017422062005200620054b1b22064100480d2d0240024020040d002006102d21050c010b200228020420042006103121050b2005450d2e20022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a4198013a00000c270b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d2c200441017422062005200620054b1b22064100480d2c0240024020040d002006102d21050c010b200228020420042006103121050b2005450d2d20022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a4199013a00000c260b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d2b200441017422062005200620054b1b22064100480d2b0240024020040d002006102d21050c010b200228020420042006103121050b2005450d2c20022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a419a013a00000c250b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d2a200441017422062005200620054b1b22064100480d2a0240024020040d002006102d21050c010b200228020420042006103121050b2005450d2b20022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a419b013a00000c240b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d29200441017422062005200620054b1b22064100480d290240024020040d002006102d21050c010b200228020420042006103121050b2005450d2a20022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a419c013a00000c230b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d28200441017422062005200620054b1b22064100480d280240024020040d002006102d21050c010b200228020420042006103121050b2005450d2920022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a419d013a00000c220b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d27200441017422062005200620054b1b22064100480d270240024020040d002006102d21050c010b200228020420042006103121050b2005450d2820022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a419e013a00000c210b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d26200441017422062005200620054b1b22064100480d260240024020040d002006102d21050c010b200228020420042006103121050b2005450d2720022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a419f013a00000c200b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d25200441017422062005200620054b1b22064100480d250240024020040d002006102d21050c010b200228020420042006103121050b2005450d2620022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41a0013a00000c1f0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d24200441017422062005200620054b1b22064100480d240240024020040d002006102d21050c010b200228020420042006103121050b2005450d2520022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41a1013a00000c1e0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d23200441017422062005200620054b1b22064100480d230240024020040d002006102d21050c010b200228020420042006103121050b2005450d2420022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41a2013a00000c1d0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d22200441017422062005200620054b1b22064100480d220240024020040d002006102d21050c010b200228020420042006103121050b2005450d2320022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41a3013a00000c1c0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d21200441017422062005200620054b1b22064100480d210240024020040d002006102d21050c010b200228020420042006103121050b2005450d2220022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41a4013a00000c1b0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d20200441017422062005200620054b1b22064100480d200240024020040d002006102d21050c010b200228020420042006103121050b2005450d2120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41a5013a00000c1a0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d1f200441017422062005200620054b1b22064100480d1f0240024020040d002006102d21050c010b200228020420042006103121050b2005450d2020022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41a6013a00000c190b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d1e200441017422062005200620054b1b22064100480d1e0240024020040d002006102d21050c010b200228020420042006103121050b2005450d1f20022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41a7013a00000c180b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d1d200441017422062005200620054b1b22064100480d1d0240024020040d002006102d21050c010b200228020420042006103121050b2005450d1e20022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41a8013a00000c170b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d1c200441017422062005200620054b1b22064100480d1c0240024020040d002006102d21050c010b200228020420042006103121050b2005450d1d20022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41a9013a00000c160b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d1b200441017422062005200620054b1b22064100480d1b0240024020040d002006102d21050c010b200228020420042006103121050b2005450d1c20022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41aa013a00000c150b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d1a200441017422062005200620054b1b22064100480d1a0240024020040d002006102d21050c010b200228020420042006103121050b2005450d1b20022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41ab013a00000c140b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d19200441017422062005200620054b1b22064100480d190240024020040d002006102d21050c010b200228020420042006103121050b2005450d1a20022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41ac013a00000c130b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d18200441017422062005200620054b1b22064100480d180240024020040d002006102d21050c010b200228020420042006103121050b2005450d1920022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41ad013a00000c120b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d17200441017422062005200620054b1b22064100480d170240024020040d002006102d21050c010b200228020420042006103121050b2005450d1820022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41ae013a00000c110b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d16200441017422062005200620054b1b22064100480d160240024020040d002006102d21050c010b200228020420042006103121050b2005450d1720022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41af013a00000c100b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d15200441017422062005200620054b1b22064100480d150240024020040d002006102d21050c010b200228020420042006103121050b2005450d1620022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41b0013a00000c0f0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d14200441017422062005200620054b1b22064100480d140240024020040d002006102d21050c010b200228020420042006103121050b2005450d1520022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41b1013a00000c0e0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d13200441017422062005200620054b1b22064100480d130240024020040d002006102d21050c010b200228020420042006103121050b2005450d1420022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41b2013a00000c0d0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d12200441017422062005200620054b1b22064100480d120240024020040d002006102d21050c010b200228020420042006103121050b2005450d1320022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41b3013a00000c0c0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d14200441017422062005200620054b1b22064100480d140240024020040d002006102d21050c010b200228020420042006103121050b2005450d1220022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41b4013a00000c0b0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d13200441017422062005200620054b1b22064100480d130240024020040d002006102d21050c010b200228020420042006103121050b2005450d1220022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41b5013a00000c0a0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d12200441017422062005200620054b1b22064100480d120240024020040d002006102d21050c010b200228020420042006103121050b2005450d1120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41b6013a00000c090b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d11200441017422062005200620054b1b22064100480d110240024020040d002006102d21050c010b200228020420042006103121050b2005450d1020022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41b7013a00000c080b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d10200441017422062005200620054b1b22064100480d100240024020040d002006102d21050c010b200228020420042006103121050b2005450d0f20022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41b8013a00000c070b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d0f200441017422062005200620054b1b22064100480d0f0240024020040d002006102d21050c010b200228020420042006103121050b2005450d0e20022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41b9013a00000c060b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d0e200441017422062005200620054b1b22064100480d0e0240024020040d002006102d21050c010b200228020420042006103121050b2005450d0d20022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41ba013a00000c050b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d0d200441017422062005200620054b1b22064100480d0d0240024020040d002006102d21050c010b200228020420042006103121050b2005450d0c20022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41bb013a00000c040b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d0c200441017422062005200620054b1b22064100480d0c0240024020040d002006102d21050c010b200228020420042006103121050b2005450d0b20022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41bc013a00000c030b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d0b200441017422062005200620054b1b22064100480d0b0240024020040d002006102d21050c010b200228020420042006103121050b2005450d0a20022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41bd013a00000c020b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d0a200441017422062005200620054b1b22064100480d0a0240024020040d002006102d21050c010b200228020420042006103121050b2005450d0920022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41be013a00000c010b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d09200441017422062005200620054b1b22064100480d090240024020040d002006102d21050c010b200228020420042006103121050b2005450d0820022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41bf013a00000b2000411f3a000020012d00004109470d090240200141046a280200220228020441ffffffff0371450d002002280200102f200128020421020b2002102f0c090b1036000b1038000b1038000b1036000b1038000b1036000b1036000b1038000b20002004290200370200200041086a200441086a29020037020020012d00004109470d000240200141046a280200220228020441ffffffff0371450d002002280200102f200128020421020b2002102f0b200341106a24000b8007010b7f230041d0086b22022400410021034100210402400240024002400240024002400240024002400240034002402003411f4d0d00410f21030c030b20012802082205200128020c2206460d01200641016a22072006490d0420052007490d092001280200220820066a2d000021062001200736020c200641ff00712003411f71742004722104200341076a21032006418001710d000b024020034120490d00410d21032006410f4b0d020b20040d022000428080808010370200200041086a42003702000c0a0b200241013a0089082002411c6a41013602002002420137020c200241b4afca003602082002412836029c08200220024198086a360218200220024189086a36029808200241b8086a200241086a103a410521030b2000200336020420004101360200200041086a20022903b808370200200041106a200241b8086a41086a2802003602000c080b200241086a410041800810e7061a410121094100210a410021064100210b02400340200520076b2004200b6b22034180082003418008491b2203490d01200720036a220c2007490d032005200c490d04200241086a200820076a200310e8061a2001200c36020c02400240200a20066b2003490d00200320066a210c0c010b200620036a220c2006490d07200a4101742207200c2007200c4b1b22074100480d0702400240200a0d002007102d21090c010b2009200a2007103121090b2009450d062007210a0b200920066a200241086a200310e8061a20042003200b6a220b4d0d08200128020c21072001280208210520012802002108200c21060c000b0b200241013a00a708200241cc086a4101360200200242013702bc08200241b4afca003602b8082002412836029c08200220024198086a3602c8082002200241a7086a36029808200241a8086a200241b8086a103a20024194086a200241b0086a280200360000200220022903a80837008c08200041053a000420002002290089083700052000410c6a20024190086a29000037000020004101360200200a450d072009102f0c070b417f2007104b000b2007200c104b000b200c2005104a000b1036000b1038000b20072005104a000b200241086a2009200c1066024020022802084101470d000240200a450d002009102f0b200041083a0004200041013602000c010b200020093602042000410c6a200c360200200041086a200a360200200041003602000b200241d0086a24000b15002001200028020022002802002000280208104c0bb30401067f200441046a21050240024002400240200441086a2802002004410c6a2802002206460d00200528020021070c010b200641016a22072006490d02200641017422082007200820074b1b22084100480d020240024020060d002008102d21070c010b200528020020062008103121070b2007450d0120042007360204200441086a20083602002004410c6a28020021060b2004410c6a2208200641016a360200200720066a20024101463a0000200441086a2109034002400240200928020020082802002206460d00200528020021070c010b200641016a22072006490d032006410174220a2007200a20074b1b220a4100480d030240024020060d00200a102d21070c010b20052802002006200a103121070b2007450d02200420073602042009200a360200200828020021060b2008200641016a360200200720066a200141807f72200141ff0071200141077622061b3a00002006210120060d000b024020024101470d002004410c6a2107200441086a2108034002400240200828020020072802002206460d00200528020021010c010b200641016a22012006490d04200641017422092001200920014b1b22094100480d040240024020060d002009102d21010c010b200528020020062009103121010b2001450d032004200136020420082009360200200728020021060b2007200641016a360200200120066a200341807f72200341ff0071200341077622061b3a00002006210320060d000b0b2000411f3a00000f0b1036000b1038000baa07010a7f230041d0006b220224000240024002400240024002400240024002400240024020012802082203200128020c2204460d00200441016a22052004490d0220032005490d032001280200220620046a2d000021072001200536020c20074102490d01200041173a000420004101360200200041056a20073a00000c0a0b200241013a001f200241cc006a41013602002002420137023c200241b4afca00360238200241283602342002200241306a36024820022002411f6a360230200241206a200241386a103a2002411b6a200241286a28020036000020022002290320370013200220022900103703002002200241176a290000370007200041053a0004200020022903003700052000410c6a2002290007370000200041013602000c090b410120036b2108200441026a21044100210541002109034002402005411f4d0d00410f21050c090b200820046a4102460d072004450d0320032004490d05200620046a417f6a2d0000210a2001200436020c200a41ff00712005411f71742009722109200441016a2104200541076a2105200a418001710d000b024020054120490d00410d2105200a410f4b0d080b410021050240024002402007410171450d002004417f6a2104410021054100210b034002402005411f4d0d00410f21040c040b20032004460d022004417f460d072003200441016a2208490d09200620046a2d0000210a2001200836020c200a41ff00712005411f7174200b72210b200541076a210520082104200a418001710d000b024020054120490d00410d2104200a410f4b0d030b410121050b20002009360204200041003602002000410c6a200b360200200041086a20053602000c0a0b200241013a0000200241cc006a41013602002002420137023c200241b4afca00360238200241283602342002200241306a36024820022002360230200241106a200241386a103a410521040b2000200436020420004101360200200041086a2002290310370200200041106a200241106a41086a2802003602000c080b417f2005104b000b20052003104a000b417f2004104b000b417f200441016a104b000b20042003104a000b200441016a2003104a000b200241013a0000200241cc006a41013602002002420137023c200241b4afca00360238200241283602342002200241306a36024820022002360230200241106a200241386a103a410521050b2000200536020420004101360200200041086a2002290310370200200041106a200241106a41086a2802003602000b200241d0006a24000bee0201067f230041c0006b2202240041002103410021040240024003400240024002402003411f4b0d002001280204220520012802082206460d01200641016a22072006490d04200520074f0d0220072005104a000b200041013602002000410f3a00040c040b200241013a000f200241346a410136020020024201370224200241b4afca003602202002412836023c2002200241386a36023020022002410f6a360238200241106a200241206a103a2002410b6a200241186a28020036000020022002290310370003200041053a0004200020022900003700052000410c6a200241076a290000370000200041013602000c030b200128020020066a2d0000210620012007360208200641ff00712003411f71742004722104200341076a21032006418001710d000b0240024020034120490d002006410f4b0d010b20004100360200200020043602040c020b200041013602002000410d3a00040c010b417f2007104b000b200241c0006a24000ba806010a7f2001280204210320012802002104410021054101210641002107200128020822082109024002400340024020072005470d002005410174220a200541016a220b200a200b4b1b220a4100480d030240024020050d00200a102d21060c010b20062005200a103121060b2006450d02200a21050b200620076a200941807f72200941ff00712009410776220a1b3a0000200741016a2107200a2109200a0d000b0240200520076b20084f0d00200720086a22092007490d022005410174220a2009200a20094b1b22094100480d020240024020050d002009102d21060c010b200620052009103121060b2006450d01200921050b200620076a2004200810e8061a02402003450d002004102f0b200128020c210302400240200520086b20076b200141146a2802002209490d00200820096a20076a21042005210c0c010b200820076a220a20096a2204200a490d022005410174220a2004200a20044b1b220c4100480d020240024020050d00200c102d21060c010b20062005200c103121060b2006450d010b200620086a20076a2003200910e8061a200241086a210a200241046a210b20042109034002400240200b280200200a2802002207460d00200228020021050c010b200741016a22052007490d03200741017422082005200820054b1b22084100480d030240024020070d002008102d21050c010b200228020020072008103121050b2005450d0220022005360200200b2008360200200a28020021070b200a200741016a360200200520076a200941807f72200941ff0071200941077622071b3a00002007210920070d000b02400240200241046a2802002209200241086a28020022076b2004490d00200228020021090c010b200720046a22052007490d02200941017422072005200720054b1b22074100480d020240024020090d002007102d21090c010b200228020020092007103121090b2009450d0120022009360200200241046a2007360200200241086a28020021070b200241086a200720046a360200200920076a2006200410e8061a0240200c450d002006102f0b2000411f3a00000240200141106a280200450d002003102f0b0f0b1036000b1038000bd707030e7f017e017f200241086a2103200241046a210420012802002205210602400240024002400240034002400240200428020020032802002207460d00200228020021080c010b200741016a22082007490d03200741017422092008200920084b1b22094100480d030240024020070d002009102d21080c010b200228020020072009103121080b2008450d022002200836020020042009360200200328020021070b2003200741016a360200200820076a200641807f72200641ff0071200641077622071b3a00002007210620070d000b2001280204220a2001410c6a2802002206410c6c6a210b200141086a280200210c200a21072006450d03200a21072005450d03200b41746a210d200241086a210841002107200a210e0340200e2103024003402003280200220f0d01200741016a2107200b2003410c6a2203470d000c070b0b2003410c6a210e200741016a21102005417f6a2105200341046a2902002111034002400240200241046a220428020020082802002206460d00200228020021090c010b200641016a22092006490d04200641017422012009200120094b1b22014100480d040240024020060d002001102d21090c010b200228020020062001103121090b2009450d032002200936020020042001360200200828020021060b2008200641016a360200200920066a200741807f72200741ff0071200741077622061b3a00002006210720060d000b2011422088a722122106034002400240200428020020082802002207460d00200228020021090c010b200741016a22092007490d04200741017422012009200120094b1b22014100480d040240024020070d002001102d21090c010b200228020020072001103121090b2009450d032002200936020020042001360200200828020021070b2008200741016a360200200920076a200641807f72200641ff0071200641077622071b3a00002007210620070d000b0240024020042802002206200828020022076b2012490d00200228020021060c010b200720126a22092007490d03200641017422072009200720094b1b22074100480d030240024020060d002007102d21060c010b200228020020062007103121060b2006450d022002200636020020042007360200200828020021070b2008200720126a360200200620076a200f201210e8061a02402011a7450d00200f102f0b200d2003460d032010210720050d000c030b0b1036000b1038000b2003410c6a21070b200b2007460d00034020072206410c6a2107024020062802002202450d00200641046a280200450d002002102f0b200b2007470d000b0b0240200c450d00200a102f0b2000411f3a00000bed0101067f2000410c6a280200200028020822016b2202411c6d210302402002450d0020012003411c6c6a21040340024020012802042202450d0002402001410c6a2802002203450d00200341047421030340024020022d00004109470d000240200241046a2205280200220628020441ffffffff0371450d002006280200102f200528020021060b2006102f0b200241106a2102200341706a22030d000b0b200141086a280200450d002001280204102f0b2001411c6a21020240200141146a280200450d002001280210102f0b2002210120022004470d000b0b02402000280204450d002000280200102f0b0bea0101067f2000410c6a280200200028020822016b220241186d210302402002450d002001200341186c6a210403400240200141046a280200450d002001280200102f0b0240200141146a2802002203450d00200128020c2102200341047421030340024020022d00004109470d000240200241046a2205280200220628020441ffffffff0371450d002006280200102f200528020021060b2006102f0b200241106a2102200341706a22030d000b0b200141186a21020240200141106a280200450d00200128020c102f0b2002210120022004470d000b0b02402000280204450d002000280200102f0b0bce0101057f024020002802082201450d00200028020022022001411c6c6a21030340024020022802042200450d0002402002410c6a2802002201450d00200141047421010340024020002d00004109470d000240200041046a2204280200220528020441ffffffff0371450d002005280200102f200428020021050b2005102f0b200041106a2100200141706a22010d000b0b200241086a280200450d002002280204102f0b2002411c6a21000240200241146a280200450d002002280210102f0b2000210220002003470d000b0b0bed04010b7f230041c080016b2202240020022001109d06410121030240024020022802004101460d0020022802042104200241004180800110e706210541002106410021070240024002400240024002402004450d004100210841002106410121034100210903402001280204220a200128020822076b200420096b220b41808001200b41808001491b220b490d022007200b6a220c2007490d03200a200c490d042005200128020020076a200b10e806210a2001200c36020802400240200620086b200b490d00200b20086a21070c010b2008200b6a22072008490d072006410174220c2007200c20074b1b220c4100480d070240024020060d00200c102d21030c010b20032006200c103121030b2003450d06200c21060b200320086a200a200b10e8061a200721082004200b20096a22094b0d000b0b2000200336020420004100360200200041146a2007360200200041106a41003602002000410c6a2007360200200041086a20063602000c060b200541013a008f8001200541b480016a4101360200200542013702a48001200541b4afca003602a08001200541283602bc80012005200541b880016a3602b0800120052005418f80016a3602b880012005419080016a200541a080016a103a2005418b80016a2005419880016a2802003600002005200529039080013700838001200041053a00042000200529008080013700052000410c6a2005418780016a290000370000200041013602002006450d052003102f0c050b2007200c104b000b200c200a104a000b1036000b1038000b20002002290204370204200041013602002000410c6a2002410c6a2902003702000b200241c080016a24000b801f03127f017e037f23004180026b220524000240024020014115490d00410121064101210702400240034020012108200021092006200771410173210a024002400240034002400240024002402004450d00024020064101710d002000200110a5062004417f6a21040b2001410276220741036c210b2007410174210c4100210d20014132490d03200741016a210e200020074103746a220f28020020002007417f6a220d4103746a2210280200201041046a2802002210200f41046a280200220f200f20104b1b10ea062211450d01417f410120114100481b21100c020b2000200110a6060c0b0b417f200f201047200f2010491b21100b2007200d2010417f4622101b210f024002402000200e4103746a22112802002000200d200720101b22124103746a2207280200200741046a2802002207201141046a280200220d200d20074b1b10ea062211450d00417f410120114100481b21070c010b417f200d200747200d2007491b21070b4102410120101b20102007417f4622071b210d024002402000200e201220071b22114103746a22102802002000200f4103746a2207280200200741046a2802002207201041046a2802002210201020074b1b10ea06220e450d00417f4101200e4100481b21100c010b417f201020074720102007491b21100b200c4101722107200d2010417f4622126a2113024002402000200c4103746a220d2802002000200c417f6a22104103746a220e280200200e41046a280200220e200d41046a280200220d200d200e4b1b10ea062214450d00417f410120144100481b210e0c010b417f200d200e47200d200e491b210e0b200c2010200e417f46220e1b210d2013200e6a211302400240200020074103746a221428020020002010200c200e1b220e4103746a220c280200200c41046a280200220c201441046a28020022102010200c4b1b10ea062214450d00417f410120144100481b210c0c010b417f2010200c472010200c491b210c0b2013200c417f46220c6a21100240024020002007200e200c1b22134103746a220c2802002000200d4103746a2207280200200741046a2802002207200c41046a280200220c200c20074b1b10ea06220e450d00417f4101200e4100481b210c0c010b417f200c200747200c2007491b210c0b200b41016a21072010200c417f4622146a2115024002402000200b4103746a220e2802002000200b417f6a220c4103746a2210280200201041046a2802002210200e41046a280200220e200e20104b1b10ea062216450d00417f410120164100481b21100c010b417f200e201047200e2010491b21100b200b200c2010417f4622101b210e201520106a211502400240200020074103746a22162802002000200c200b20101b22104103746a220c280200200c41046a280200220c201641046a280200220b200b200c4b1b10ea062216450d00417f410120164100481b210c0c010b417f200b200c47200b200c491b210c0b2015200c417f46220c6a211502400240200020072010200c1b220b4103746a220c2802002000200e4103746a2207280200200741046a2802002207200c41046a280200220c200c20074b1b10ea062210450d00417f410120104100481b21100c010b417f200c200747200c2007491b21100b200f201120121b2107200d201320141b210c200e200b2010417f4622101b210b201520106a210d0b024002402000200c4103746a220e280200200020074103746a2210280200201041046a2802002210200e41046a280200220e200e20104b1b10ea06220f450d00417f4101200f4100481b21100c010b417f200e201047200e2010491b21100b200c20072010417f46220e1b2110200d200e6a210d024002402000200b4103746a220f28020020002007200c200e1b220e4103746a2207280200200741046a2802002207200f41046a280200220c200c20074b1b10ea06220f450d00417f4101200f4100481b21070c010b417f200c200747200c2007491b21070b200d2007417f46220c6a2107024002400240024002402000200b200e200c1b220d4103746a220b280200200020104103746a220c280200200c41046a280200220c200b41046a280200220b200b200c4b1b10ea06220e450d00200e4100480d010c020b200b200c4f0d010b200741016a2207410c490d0102402001410176220b450d00200020014103746a41786a21072000210c0340200c2902002117200c200729020037020020072017370200200c41086a210c200741786a2107200b417f6a220b0d000b0b20012010417f736a2110410121070c020b200d21100b20074521070b0240200745200a724101710d002000200110a7060d090b2003450d010240201020014f0d00024002402003280200200020104103746a2207280200200741046a280200220c200341046a280200220b200b200c4b1b10ea06220e450d00200e41004e0d010c050b200b200c490d040b200029020021172000200729020037020020072017370200200041786a21122000410c6a2113200041086a2114200028020421072000280200210d4100210b2001210e0340024002400240200b200e417f6a22114f0d002013200b4103746a210c034002400240200d200c417c6a280200200c28020022102007200720104b1b10ea06220f450d00200f4100480d030c010b20072010490d020b200c41086a210c2011200b41016a220b470d000c020b0b0240200b20114f0d002012200e4103746a210c2011210e034002400240200d200c280200200c41046a28020022102007200720104b1b10ea06220f450d00200f4100480d010c050b200720104f0d040b200c41786a210c200b200e417f6a220e490d000b0b200b21110b200020073602042000200d36020002402001201141016a2207490d00200020074103746a2100200120076b220141154f0d040c0b0b20072001104b000b2014200b4103746a221029020021172010200c290200370200200c2017370200200b41016a210b0c000b0b0b41d4bbca0020102001103b000b20080d014188bbca0041004100103b000b20002109200121080b201020084f0d02200929020021172009200920104103746a2207290200370200200720173702002009280204210c200928020021124100210e410021184100211902402008417f6a220d450d002009410c6a21074100211803400240024002402007417c6a2802002012200c2007280200220b200b200c4b1b10ea062210450d00201041004e0d010c020b200b200c490d010b200d21190240200d20184d0d00200920084103746a41786a2107200d211903400240024020072802002012200c200741046a280200220b200b200c4b1b10ea062210450d00201041004e0d010c030b200b200c490d020b200741786a21072019417f6a221920184b0d000b0b0240024020192018490d00200d2019490d010c040b20182019104b000b2019200d104a000b200741086a2107200d201841016a2218470d000b200d2118200d21190b200941086a220720194103746a210d41800121144100211141002110410021014180012106200720184103746a221a210003400240200d20006b22074187104b220a0d002007410376220741807f6a20072011200e492001201049220b72220f1b21070240200f450d0020062007200b1b210620072014200b1b21140c010b2007200741017622066b21140b024020012010470d00024020060d002005221021010c010b41002107200521102000210b0340201020073a0000200741016a210702400240200b2802002012200c200b41046a280200220f200f200c4b1b10ea062201450d00417f410120014100481b210f0c010b417f200f200c47200f200c491b210f0b200b41086a210b2010200f417f476a211020062007470d000b200521010b02402011200e470d00024020140d0020054180016a220e21110c010b200d41786a21074100210b20054180016a210e0340200e200b3a0000200b41016a210b0240024020072802002012200c200741046a280200220f200f200c4b1b10ea062211450d00417f410120114100481b210f0c010b417f200f200c47200f200c491b210f0b200741786a2107200e200f417f466a210e2014200b470d000b20054180016a21110b0240200e20116b2207201020016b220b200b20074b1b2213450d00200020012d00004103746a22072802042115200728020021162007200d20112d0000417f734103746a290200370200024020134101460d00410021070340200d201120076a220b2d0000417f734103746a2000200120076a41016a220f2d00004103746a2902003702002000200f2d00004103746a200d200b41016a2d0000417f734103746a290200370200200741026a210b200741016a220f2107200b2013490d000b2011200f6a21112001200f6a21010b200d20112d0000417f734103746a2207201536020420072016360200201141016a2111200141016a21010b200d20144103746b200d2011200e461b210d200020064103746a200020012010461b2100200a0d000b02400240200120104f0d00200d2107034020002010417f6a22102d00004103746a220b2902002117200b200741786a22072902003702002007201737020020012010490d000c020b0b200021072011200e4f0d000340200729020021172007200d200e417f6a220e2d0000417f734103746a220b290200370200200b2017370200200741086a21072011200e490d000b0b2009200c36020420092012360200024020082007201a6b41037620186a22014d0d00200929020021172009200920014103746a220729020037020020072017370200200820016b220c450d02200c20012001200c4b1b210b20084103762110200741086a2100024002402001200c417f6a220c490d002000200c20022007200410a406200921000c010b2009200120022003200410a40620072103200c21010b200b20104f2106201920184d2107200141154f0d010c040b0b4198bbca0020012008103b000b41a8bbca00411c41c4bbca001039000b4198bbca0020102008103b000b20014102490d00200041786a2111410021124101210f0340200f4103742107200f417f6a210c200f41016a210f024002400240200020076a2210280200220d2000200c4103746a2207280200200741046a280200220e201041046a280200220b200b200e4b1b10ea062213450d0020134100480d010c020b200b200e4f0d010b201020072902003702000240200c450d002012210c201121070240034002400240200d2007280200200741046a2802002210200b200b20104b1b10ea06220e450d00200e41004e0d030c010b200b20104f0d020b200741086a2007290200370200200741786a2107200c41016a2210200c49210e2010210c200e450d000b0b200741086a21070b2007200d3602002007200b3602040b2012417f6a2112201141086a2111200f2001470d000b0b20054180026a24000bf50202057f017e02400240024020014108490d00200141017641feffffff07712202417f6a220320014f0d022001410d74200173220441117620047322044105742004732205417f2001417f6a677622067122044100200120042001491b6b220420014f0d01200020034103746a220329020021072003200020044103746a220429020037020020042007370200024020022001490d00200221030c030b2005410d7420057322044111762004732204410574200473220520067122044100200120042001491b6b220420014f0d01200020024103746a220329020021072003200020044103746a2204290200370200200420073702002002410172220320014f0d022005410d742005732204411176200473220441057420047320067122044100200120042001491b6b220420014f0d01200020034103746a220129020021072001200020044103746a2200290200370200200020073702000b0f0b4198bbca0020042001103b000b4188bbca0020032001103b000bb20102037f017e024020014101762202450d00200020012002417f6a10a8062002417e6a210203402002417f460d0120002001200210a8062002417f6a21020c000b0b0240024020014102490d00200141037420006a41786a21022001210303402003417f6a220420014f0d0220002902002105200020022902003702002002200537020020002004410010a806200241786a210220042103200441014b0d000b0b0f0b4198bbca002003417f6a2001103b000b8f06050a7f017e017f017e037f200041686a2102200041786a210320014132492104410121054100210602400240024003400240024020052001490d00410021070c010b200320054103746a210841012107034002400240200841086a22092802002008280200200841046a280200220a2008410c6a28020022082008200a4b1b10ea06220b450d00200b4100480d030c010b2008200a490d020b4101210a200541016a220520014921072009210820012005470d000c030b0b2005200146210a20040d0120052001460d012005417f6a220820014f0d032007410171450d02200020084103746a2208290200210c200820002005410374220d6a2209290200220e3702002009200c370200024020054102490d0002400240200ea7220f20002005417e6a22074103746a220b280200200b41046a2802002210200841046a280200220a200a20104b1b10ea062211450d0020114100480d010c020b200a20104f0d010b2008200b29020037020002402007450d002002200d6a21080240034002400240200f2008280200200841046a280200220b200a200a200b4b1b10ea062210450d00201041004e0d030c010b200a200b4f0d020b200841086a2008290200370200200841786a21082007417f6a22070d000b0b200841086a210b0b200b200f360200200b200a3602040b200641016a21060240200120056b220f4102490d000240024020092802082009280200220d200941046a280200220b2009410c6a28020022082008200b4b1b10ea06220a450d00200a4100480d010c020b2008200b4f0d010b200941086a2111200920092902083702000240200f4103490d004103210a41022107034002400240200920074103746a2208280200200d200b200841046a28020022072007200b4b1b10ea062210450d00201041004e0d030c010b2007200b4f0d020b200841786a20082902003702000240200a200f4f0d00200a2107200a41016a210a200821110c010b0b200821110b2011200d3602002011200b3602040b20064105470d000b4100210a0b200a0f0b4198bbca0020052001103b000b4188bbca0020082001103b000bb60202057f017e03402002410174220341017221040240024002400240200341026a220320014f0d00200420014f0d0102400240200020044103746a2205280200200020034103746a2206280200200641046a2802002206200541046a2802002205200520064b1b10ea062207450d00417f410120074100481b21060c010b417f200520064720052006491b21060b200320042006417f461b21040b0240200420014f0d00200220014f0d020240200020024103746a2202280200200020044103746a2203280200200341046a2802002206200241046a2802002205200520064b1b10ea062207450d00200741004e0d010c040b20052006490d030b0f0b41b0bcca0020042001103b000b41c0bcca0020022001103b000b200229020021082002200329020037020020032008370200200421020c000b0b8d0302037f017e230041c0006b22022400200141086a28020021032001280204210420022001280200220136020002400240024002402001418080044b0d002004450d022002200336020402400240200120034b0d002003418080044d0d042002413c6a41013602002002420237022c200241f4d7ca003602282002410136020c200241d0d7ca003602082002200241086a360238200241186a200241286a103a200241186a21010c010b2002413c6a4102360200200241246a41013602002002420237022c200241e4d7ca003602282002410136021c2002200241186a360238200220023602202002200241046a360218200241086a200241286a103a200241086a21010b20012902042105200128020021010c010b2002413c6a41013602002002420237022c200241d4d7ca003602282002410136020c200241d0d7ca003602082002200241086a360238200241186a200241286a103a20022802182101200229021c21050b2001450d0020002005370204200020013602000c010b200041003602000b200241c0006a24000be00501037f230041f0006b2204240002400240024020012802084102460d00412e102d2201450d01200041013a0000200141266a41002900e8d94a370000200141206a41002900e2d94a370000200141186a41002900dad94a370000200141106a41002900d2d94a370000200141086a41002900cad94a370000200141002900c2d94a370000200041086a42ae808080e005370200200041046a20013602000c020b0240024002400240024002400240200128020022052d0000416e6a2201411e4b0d004100210620010e1f03000000000000000000000000000000000000000000000000000006040102030b4120102d2201450d06200041013a0000200141186a4100290088da4a370000200141106a4100290080da4a370000200141086a41002900f8d94a370000200141002900f0d94a370000200041086a42a08080808004370200200041046a20013602000c070b410221060c040b410321060c030b20042005280204220136020c0240024020012003490d004190daca002105200441e8006a2103200441d0006a2101200441c0006a21020c010b200220014101746a22012d0001450d0241a0daca002105200441386a2103200441206a2101200441106a21020b20034101360204200141146a410136020020012003360210200142023702042001200536020020032004410c6a36020020022001103a200041013a00002000410c6a200241086a280200360200200041046a20022902003702000c040b410121060c010b20012d000021060b0240200541106a2d00004106470d00200041003a0000200020063a00010c020b4129102d2201450d00200041013a0000200141286a41002d00d8da4a3a0000200141206a41002900d0da4a370000200141186a41002900c8da4a370000200141106a41002900c0da4a370000200141086a41002900b8da4a370000200141002900b0da4a370000200041086a42a98080809005370200200041046a20013602000c010b1036000b200441f0006a24000b8f0201017f230041106b220224000240024002400240024020002d00000e0401020300010b200220012802184198afca0041032001411c6a28020028020c11000022003a000820022001360200200241003a0009200241003602040c030b20022001280218419bafca0041032001411c6a28020028020c11000022003a000820022001360200200241003a0009200241003602040c020b20022001280218419eafca0041032001411c6a28020028020c11000022003a000820022001360200200241003a0009200241003602040c010b2002200128021841a1afca0041032001411c6a28020028020c11000022003a000820022001360200200241003a0009200241003602040b200241106a240020000be2bd0205047f017e047f017e017f230041f0006b2203240002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020022d00000eac0101ca0102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f80018101820183018401850186018701880189018a018b018c018d018e018f0190019101920193019401950196019701980199019a019b019c019d019e019f01a001a101a201a301a401a501a601a701a801a901aa0100010b200341d8006a200141186a2204200141286a410110d706024020032d00584101460d000240200141206a2802002202200141246a22052802004f0d00024020022001411c6a280200470d00200241016a22052002490dc801200241017422062005200620054b1b22054100480dc8010240024020020d002005102d21020c010b200428020020022005103121020b2002450dc701200120023602182001411c6a2005360200200141206a28020021020b200128021820026a41033a0000200141206a2201200128020041016a3602000ccb010b200341ec006a220141013602002003420137025c200341fcdeca003602582003410136023c200320053602382003200341386a360268200341106a200341d8006a103a20032802102202450dca012003200329021437023c20032002360238200141013602002003420137025c200341c0d7ca0036025820034131360204200320033602682003200341386a360200200341106a200341d8006a103a20032802102101200329021421070240200328023c450d002003280238102f0b2001450dca010cc9010b200328025c2201450dc901200341e0006a29030021070cc8010b02400240200141306a2802002202417f6a220420024f0d00200420024d0d010b4118102d2201450dc4012003421837025c20032001360258200341d8006a4100411810d80620032003280260220141186a3602602001200328025822006a41184192ddca00411810d9062003200329025c37025c20032000360258418fd1ca00413b200341d8006a41ccd1ca0041dcd1ca00103e000b02400240200128022820044103746a22052802002204200141206a220628020022024b0d00200421010c010b024002402001411c6a280200220820026b200420026b2209490d0020012802182108200221010c010b200220096a220a2002490dc6012008410174220b200a200b200a4b1b220a4100480dc6010240024020080d00200a102d21080c010b20012802182008200a103121080b2008450dc501200120083602182001411c6a200a360200200141206a28020021010b200820016a210a0240024020094102490d00200a410420042002417f736a220210e7061a2008200220016a22016a210a0c010b2009450d010b200a41043a0000200141016a21010b20062001360200200541013a00060cc8010b0240200141306a2802002204200141346a22052802004f0d0020023100012107200141206a350200210c024020042001412c6a280200470d00200441016a22022004490dc501200441017422052002200520024b1b220241ffffffff01712002470dc501200241037422024100480dc5010240024020040d002002102d21040c010b200128022820044103742002103121040b2004450dc401200120043602282001412c6a2002410376360200200141306a28020021040b200128022820044103746a2007422886200c84370200200141306a2201200128020041016a3602000cc8010b200341ec006a220141013602002003420137025c200341fcdeca00360258200341013602042003200536020020032003360268200341106a200341d8006a103a20032802102202450dc7012003200329021437023c20032002360238200141013602002003420137025c200341c0d7ca0036025820034131360204200320033602682003200341386a360200200341106a200341d8006a103a20032802102101200329021421070240200328023c450d002003280238102f0b2001450dc70120002007370204200020013602000cc8010b0240200141306a2802002204200141346a22052802004f0d0020023100012107200141206a350200210c024020042001412c6a280200470d00200441016a22022004490dc401200441017422052002200520024b1b220241ffffffff01712002470dc401200241037422024100480dc4010240024020040d002002102d21040c010b200128022820044103742002103121040b2004450dc301200120043602282001412c6a2002410376360200200141306a28020021040b200128022820044103746a2007422886200c8442808080803084370200200141306a2201200128020041016a3602000cc7010b200341ec006a220141013602002003420137025c200341fcdeca00360258200341013602042003200536020020032003360268200341106a200341d8006a103a20032802102202450dc6012003200329021437023c20032002360238200141013602002003420137025c200341c0d7ca0036025820034131360204200320033602682003200341386a360200200341106a200341d8006a103a20032802102101200329021421070240200328023c450d002003280238102f0b2001450dc60120002007370204200020013602000cc7010b20023100012107200341d8006a200141186a200141286a2204410010d70620032d00584101460da6010240200141306a2802002202200141346a22052802004f0d00200141206a350200210c024020022001412c6a280200470d00200241016a22052002490dc301200241017422062005200620054b1b220541ffffffff01712005470dc301200541037422054100480dc3010240024020020d002005102d21020c010b200428020020024103742005103121020b2002450dc201200120023602282001412c6a2005410376360200200141306a28020021020b200128022820024103746a2007422886200c8442808080801084370200200141306a2201200128020041016a3602000cc6010b200341ec006a220141013602002003420137025c200341fcdeca00360258200341013602042003200536020020032003360268200341106a200341d8006a103a20032802102202450dc5012003200329021437023c20032002360238200141013602002003420137025c200341c0d7ca0036025820034131360204200320033602682003200341386a360200200341106a200341d8006a103a20032802102101200329021421070240200328023c450d002003280238102f0b2001450dc50120002007370204200020013602000cc6010b02400240200141306a2802002202417f6a220420024f0d00200420024d0d010b4118102d2201450dc0012003421837025c20032001360258200341d8006a4100411810d80620032003280260220141186a3602602001200328025822006a41184192ddca00411810d9062003200329025c37025c2003200036025841ecd1ca004134200341d8006a41ccd1ca0041a0d2ca00103e000b02400240200141286a220228020020044103746a22042d00044101470d0020043100052107200341d8006a200141186a200210da062003280258450d0120002003290358370200200041086a200341d8006a41086a2802003602000cc7010b411a102d2201450dc001200141186a41002f00c8d24a3b0000200141106a41002900c0d24a370000200141086a41002900b8d24a370000200141002900b0d24a3700002000429a808080a003370204200020013602000cc6010b0240200141306a2802002204200141346a22052802004f0d00200141206a350200210c024020042001412c6a280200470d00200441016a22052004490dc201200441017422062005200620054b1b220541ffffffff01712005470dc201200541037422054100480dc2010240024020040d002005102d21020c010b200228020020044103742005103121020b2002450dc101200120023602282001412c6a2005410376360200200141306a28020021040b200128022820044103746a2007422886200c8442808080802084370200200141306a2201200128020041016a3602000cc5010b200341ec006a220141013602002003420137025c200341fcdeca00360258200341013602042003200536020020032003360268200341106a200341d8006a103a20032802102202450dc4012003200329021437023c20032002360238200141013602002003420137025c200341c0d7ca0036025820034131360204200320033602682003200341386a360200200341106a200341d8006a103a20032802102101200329021421070240200328023c450d002003280238102f0b2001450dc40120002007370204200020013602000cc5010b02400240200141306a2802002202417f6a220420024f0d00200420024d0d010b4118102d2201450dbf012003421837025c20032001360258200341d8006a4100411810d80620032003280260220141186a3602602001200328025822006a41184192ddca00411810d9062003200329025c37025c2003200036025841ecd1ca004134200341d8006a41ccd1ca0041a0d2ca00103e000b200141286a220628020020044103746a22042d00052105024020042d00044101470d00200541ff01714104470da6010b02400240024002400240024020024101460d00200341d8006a200141186a2202200610da0620032802580d01200541ff01714104460dc901200141206a2802002204200141246a22062802004f0d0520042001411c6a280200470d04200441016a22062004490dc501200441017422082006200820064b1b22064100480dc50120040d022006102d21020c030b024020012d003822024104460d00200341d8006a200141186a2006200210db062003280258450d0020002003290358370200200041086a200341d8006a41086a2802003602000cca010b200341d8006a200141186a200610da062003280258450dc80120002003290358370200200041086a200341d8006a41086a2802003602000cc9010b20002003290358370200200041086a200341d8006a41086a2802003602000cc8010b200228020020042006103121020b2002450dc001200120023602182001411c6a2006360200200141206a28020021040b200128021820046a20053a0000200141206a2201200128020041016a3602000cc4010b200341ec006a220141013602002003420137025c200341fcdeca00360258200341013602042003200636020020032003360268200341106a200341d8006a103a20032802102202450dc3012003200329021437023c20032002360238200141013602002003420137025c200341c0d7ca0036025820034131360204200320033602682003200341386a360200200341106a200341d8006a103a20032802102101200329021421070240200328023c450d002003280238102f0b2001450dc30120002007370204200020013602000cc4010b2003200241046a280200220236024802400240200141306a280200220420024d0d0020042002417f736a220220044f0da701200141286a220428020020024103746a22022d00044103460d0120022d0005220241ff01714104460d01200341d8006a200141186a2004200210db0620032802582202450d01200329025c21070cc2010b200341ec006a220241023602002003411c6a41013602002003420237025c200341acddca0036025820034101360214200320043602002003200341106a360268200320033602182003200341c8006a360210200341386a200341d8006a103a200328023821042003200329023c37023c20032004360238200241013602002003420137025c200341c0d7ca0036025820034131360204200320033602682003200341386a360200200341106a200341d8006a103a20032802102102200329021421070240200328023c450d002003280238102f0b20020dc1010b024002400240200141306a2802002202417f6a220420024f0d00200420024b0d00200128022820044103746a22052802002204200141206a220628020022024b0d01200421010c020b4118102d2201450dbf012003421837025c20032001360258200341d8006a4100411810d80620032003280260220141186a3602602001200328025822006a41184192ddca00411810d9062003200329025c37025c20032000360258418fd1ca00413b200341d8006a41ccd1ca0041dcd1ca00103e000b024002402001411c6a280200220820026b200420026b2209490d0020012802182108200221010c010b200220096a220a2002490dc0012008410174220b200a200b200a4b1b220a4100480dc0010240024020080d00200a102d21080c010b20012802182008200a103121080b2008450dbf01200120083602182001411c6a200a360200200141206a28020021010b200820016a210a0240024020094102490d00200a410420042002417f736a220210e7061a2008200220016a22016a210a0c010b2009450d010b200a41043a0000200141016a21010b20062001360200200541013a00060cc2010b200241046a2802002102200341d8006a200141186a2205200141286a2204410010d70602400240024020032d00584101460d00200141306a2802002101200320023602480240200120024d0d0020012002417f736a220220014f0db001200428020020024103746a22012d00044103460dc50120012d0005220141ff01714104460dc501200341d8006a20052004200110db0620032802582201450dc501200329025c21070c030b200341ec006a220241023602002003411c6a41013602002003420237025c200341acddca0036025820034101360214200320013602002003200341106a360268200320033602182003200341c8006a360210200341386a200341d8006a103a200328023821012003200329023c37023c20032001360238200241013602002003420137025c200341c0d7ca0036025820034131360204200320033602682003200341386a360200200341106a200341d8006a103a2003280210210120032902142107200328023c450d012003280238102f0c010b200341e0006a2903002107200328025c21010b2001450dc2010b20002007370204200020013602000cc2010b200241046a2802002202280204210620022802002104200320022802082205360248200141306a280200220220054d0db90120022005417f736a220520024f0da4014104210a0240200141286a220d280200220820054103746a22052d00044103460d0020052d0005210a0b2003200a3a00302006450db301200a41ff0171220b4104460db201200641027421060340200320042802002205360248200220054d0db50120022005417f736a220520024f0dbe01200820054103746a22052d00044103460db60120052d000522094104460db601200b2009470db601200441046a21042006417c6a22060d000cb4010b0b024020012d003822024104460d00200341d8006a200141186a200141286a200210db062003280258450d0020002003290358370200200041086a200341d8006a41086a2802003602000cc1010b02400240200141306a2802002202417f6a220420024f0d00200420024d0d010b4118102d2201450dbb012003421837025c20032001360258200341d8006a4100411810d80620032003280260220141186a3602602001200328025822006a41184192ddca00411810d9062003200329025c37025c20032000360258418fd1ca00413b200341d8006a41ccd1ca0041dcd1ca00103e000b02400240200128022820044103746a22052802002204200141206a220628020022024b0d00200421010c010b024002402001411c6a280200220820026b200420026b2209490d0020012802182108200221010c010b200220096a220a2002490dbd012008410174220b200a200b200a4b1b220a4100480dbd010240024020080d00200a102d21080c010b20012802182008200a103121080b2008450dbc01200120083602182001411c6a200a360200200141206a28020021010b200820016a210a0240024020094102490d00200a410420042002417f736a220210e7061a2008200220016a22016a210a0c010b2009450d010b200a41043a0000200141016a21010b20062001360200200541013a00060cbf010b200128020021042003200241046a2802002202360254024002400240024002400240024002400240200441386a28020020024d0d002003200428023020024102746a2802002202360200024002402004412c6a28020020024d0d002003411c6a200428022420024104746a22042d000d22083a0000200341186a2004280208220236020020042802002104410021050c010b41012105200341ec006a41013602002003420237025c20034184dcca003602582003410136024c2003200341c8006a36026820032003360248200341386a200341d8006a103a200341186a200329023c22073703002007422088a72108200328023821042007a721020b200320053602102003200436021420050d0102402002450d002004417f6a2104200141286a2105200141186a21060340200341d8006a20062005200420026a2d000010d70620032d00584101460d082002417f6a22020d000b0b200841ff01714104460dc701200141206a2802002202200141246a22042802004f0d0520022001411c6a280200470d04200241016a22042002490dc301200241017422052004200520044b1b22044100480dc30120020d022004102d21020c030b200341ec006a41013602002003420237025c200341e0dbca00360258200341013602342003200341306a3602682003200341d4006a360230200341386a200341d8006a103a200341186a200329023c370300200341013602102003200328023822043602140b200341186a21010c050b200128021820022004103121020b2002450dbe01200120023602182001411c6a2004360200200141206a28020021020b200128021820026a20083a0000200141206a2201200128020041016a3602000cc2010b200341ec006a220141013602002003420137025c200341fcdeca00360258200341013602042003200436020020032003360268200341106a200341d8006a103a20032802102202450dc1012003200329021437023c20032002360238200141013602002003420137025c200341c0d7ca0036025820034131360204200320033602682003200341386a360200200341106a200341d8006a103a20032802102104200329021421070240200328023c450d002003280238102f0b20040d020cc1010b200341e0006a2101200328025c21040b2004450dbf01200129020021070b20002007370204200020043602000cbf010b200241046a28020021062001280200210220034100360238200241146a280200450da201200341d8006a200141186a2204200141286a2205410010d70620032d00584101460da30120012802002208412c6a28020021022003200636023802400240024002400240200220064d0d00200828022420064104746a22062d000d2108024020062802082202450d002006280200417f6a21060340200341d8006a20042005200620026a2d000010d70620032d00584101460dab012002417f6a22020d000b0b200841ff01714104460dc201200141206a2802002202200141246a22052802004f0d0420022001411c6a280200470d03200241016a22052002490dbe01200241017422062005200620054b1b22054100480dbe0120020d012005102d21020c020b200341ec006a41013602002003420237025c20034184dcca0036025820034101360204200320033602682003200341386a360200200341106a200341d8006a103a0cb1010b200428020020022005103121020b2002450dba01200120023602182001411c6a2005360200200141206a28020021020b200128021820026a20083a0000200141206a2201200128020041016a3602000cbe010b200341ec006a220141013602002003420137025c200341fcdeca00360258200341013602042003200536020020032003360268200341106a200341d8006a103a20032802102202450dbd012003200329021437023c20032002360238200141013602002003420137025c200341c0d7ca0036025820034131360204200320033602682003200341386a360200200341106a200341d8006a103a2003280210210120032902142107200328023c450dae012003280238102f0cae010b200341d8006a200141186a200141286a410410d70620032d00584101470dbc01200328025c2201450dbc012000200341e0006a290300370204200020013602000cbd010b200341d8006a200141186a2204200141286a2205410010d706200341d8006a21020240024020032d00584101460d00200341d8006a20042005410410d706200341d8006a210220032d00584101460d00200341d8006a2004200520032d0059220610d706200341d8006a210220032d00584101460d000240200141206a2802002202200141246a22052802004f0d00024020022001411c6a280200470d00200241016a22052002490dbb01200241017422082005200820054b1b22054100480dbb010240024020020d002005102d21020c010b200428020020022005103121020b2002450dba01200120023602182001411c6a2005360200200141206a28020021020b200128021820026a20063a0000200141206a2201200128020041016a3602000cbe010b200341ec006a220141013602002003420137025c200341fcdeca00360258200341013602042003200536020020032003360268200341106a200341d8006a103a20032802102202450dbd012003200329021437023c20032002360238200141013602002003420137025c200341c0d7ca0036025820034131360204200320033602682003200341386a360200200341106a200341d8006a103a20032802102101200329021421070240200328023c450d002003280238102f0b20010d010cbd010b200241046a2802002201450dbc01200241086a29020021070b20002007370204200020013602000cbc010b200341d8006a200141046a200241046a28020010dc060240024020032d00584101460d000240200141206a2802002202200141246a22042802004f0d0020032d00592104024020022001411c6a280200470d00200241016a22052002490dba01200241017422062005200620054b1b22054100480dba010240024020020d002005102d21020c010b200128021820022005103121020b2002450db901200120023602182001411c6a2005360200200141206a28020021020b200128021820026a20043a0000200141206a2201200128020041016a3602000cbd010b200341ec006a220141013602002003420137025c200341fcdeca00360258200341013602042003200436020020032003360268200341106a200341d8006a103a20032802102202450dbc012003200329021437023c20032002360238200141013602002003420137025c200341c0d7ca0036025820034131360204200320033602682003200341386a360200200341106a200341d8006a103a20032802102101200329021421070240200328023c450d002003280238102f0b20010d010cbc010b200328025c2201450dbb01200341e0006a29030021070b20002007370204200020013602000cbb010b2003200241046a2802002202360200200341d8006a200141046a200210dc060240024020032d00584101460d00200320032d005922023a0030200341d8006a200141186a200141286a410410d7060240024020032d00584101460d00200320032d005922013a004820014104460dbd01200241ff01712001460dbd01200341106a41146a41373602002003411c6a4130360200200341d8006a41146a41033602002003420337025c200341ecd2ca00360258200341013602142003200341106a3602682003200341c8006a3602202003200341306a36021820032003360210200341386a200341d8006a103a0c010b200341c0006a200341e4006a2802003602002003200329025c3703380b200329023c2107200328023821010c010b2003200328025c22013602382003200341e0006a290300220737023c0b2001450db90120002007370204200020013602000cba010b200341d8006a200141046a200241046a28020010dc060240024020032d00584101460d00200341d8006a200141186a200141286a20032d005910db0620032802582201450dba01200329025c21070c010b200328025c2201450db901200341e0006a29030021070b20002007370204200020013602000cb9010b200128020021042003200241046a280200220236023802400240200441206a28020020024d0d000240200141206a2802002205200141246a22062802004f0d00200428021820024101746a2d00002102024020052001411c6a280200470d00200541016a22042005490db701200541017422062004200620044b1b22044100480db7010240024020050d002004102d21050c010b200128021820052004103121050b2005450db601200120053602182001411c6a2004360200200141206a28020021050b200128021820056a20023a0000200141206a2201200128020041016a3602000cba010b200341ec006a220141013602002003420137025c200341fcdeca00360258200341013602042003200636020020032003360268200341106a200341d8006a103a20032802102202450db9012003200329021437023c20032002360238200141013602002003420137025c200341c0d7ca0036025820034131360204200320033602682003200341386a360200200341106a200341d8006a103a20032802102101200329021421070240200328023c450d002003280238102f0b20010d010cb9010b200341ec006a41013602002003420237025c200341a4dcca003602582003410136024c2003200341c8006a3602682003200341386a360248200341106a200341d8006a103a20032802102201450db801200329021421070b20002007370204200020013602000cb8010b2003200241046a28020022023602282001280200210420032002360254200441206a28020020024d0d9e010240200428021820024101746a22022d00010d00200341ec006a41013602002003420237025c200341b4dcca0036025820034101360204200320033602682003200341d4006a360200200341106a200341d8006a103a0ca5010b200320022d000022023a002f200341d8006a200141186a200141286a410410d70620032d00584101470da201200341c0006a200341e4006a2802003602002003200329025c3703380ca3010b200341d8006a2001200241046a2802004104410010de062003280258450db50120002003290358370200200041086a200341d8006a41086a2802003602000cb6010b200341d8006a2001200241046a2802004108410110de062003280258450db40120002003290358370200200041086a200341d8006a41086a2802003602000cb5010b200341d8006a2001200241046a2802004104410210de062003280258450db30120002003290358370200200041086a200341d8006a41086a2802003602000cb4010b200341d8006a2001200241046a2802004108410310de062003280258450db20120002003290358370200200041086a200341d8006a41086a2802003602000cb3010b200341d8006a2001200241046a2802004101410010de062003280258450db10120002003290358370200200041086a200341d8006a41086a2802003602000cb2010b200341d8006a2001200241046a2802004101410010de062003280258450db00120002003290358370200200041086a200341d8006a41086a2802003602000cb1010b200341d8006a2001200241046a2802004102410010de062003280258450daf0120002003290358370200200041086a200341d8006a41086a2802003602000cb0010b200341d8006a2001200241046a2802004102410010de062003280258450dae0120002003290358370200200041086a200341d8006a41086a2802003602000caf010b200341d8006a2001200241046a2802004101410110de062003280258450dad0120002003290358370200200041086a200341d8006a41086a2802003602000cae010b200341d8006a2001200241046a2802004101410110de062003280258450dac0120002003290358370200200041086a200341d8006a41086a2802003602000cad010b200341d8006a2001200241046a2802004102410110de062003280258450dab0120002003290358370200200041086a200341d8006a41086a2802003602000cac010b200341d8006a2001200241046a2802004102410110de062003280258450daa0120002003290358370200200041086a200341d8006a41086a2802003602000cab010b200341d8006a2001200241046a2802004104410110de062003280258450da90120002003290358370200200041086a200341d8006a41086a2802003602000caa010b200341d8006a2001200241046a2802004104410110de062003280258450da80120002003290358370200200041086a200341d8006a41086a2802003602000ca9010b200341d8006a2001200241046a2802004104410010df062003280258450da70120002003290358370200200041086a200341d8006a41086a2802003602000ca8010b200341d8006a2001200241046a2802004108410110df062003280258450da60120002003290358370200200041086a200341d8006a41086a2802003602000ca7010b200341d8006a2001200241046a2802004104410210df062003280258450da50120002003290358370200200041086a200341d8006a41086a2802003602000ca6010b200341d8006a2001200241046a2802004108410310df062003280258450da40120002003290358370200200041086a200341d8006a41086a2802003602000ca5010b200341d8006a2001200241046a2802004101410010df062003280258450da30120002003290358370200200041086a200341d8006a41086a2802003602000ca4010b200341d8006a2001200241046a2802004102410010df062003280258450da20120002003290358370200200041086a200341d8006a41086a2802003602000ca3010b200341d8006a2001200241046a2802004101410110df062003280258450da10120002003290358370200200041086a200341d8006a41086a2802003602000ca2010b200341d8006a2001200241046a2802004102410110df062003280258450da00120002003290358370200200041086a200341d8006a41086a2802003602000ca1010b200341d8006a2001200241046a2802004104410110df062003280258450d9f0120002003290358370200200041086a200341d8006a41086a2802003602000ca0010b20012802002102200341003602380240024020022802080d00200341ec006a41013602002003420237025c20034190dbca0036025820034101360204200320033602682003200341386a360200200341106a200341d8006a103a20032802102202450d00200329021421070c010b0240200141206a2802002202200141246a22042802004f0d00024020022001411c6a280200470d00200241016a22042002490d9d01200241017422052004200520044b1b22044100480d9d010240024020020d002004102d21020c010b200128021820022004103121020b2002450d9c01200120023602182001411c6a2004360200200141206a28020021020b200128021820026a41003a0000200141206a2201200128020041016a3602000ca0010b200341ec006a220141013602002003420137025c200341fcdeca00360258200341013602042003200436020020032003360268200341106a200341d8006a103a20032802102202450d9f012003200329021437023c20032002360238200141013602002003420137025c200341c0d7ca0036025820034131360204200320033602682003200341386a360200200341106a200341d8006a103a20032802102102200329021421070240200328023c450d002003280238102f0b2002450d9f010b20002007370204200020023602000c9f010b20012802002102200341003602380240024020022802080d00200341ec006a41013602002003420237025c20034190dbca0036025820034101360204200320033602682003200341386a360200200341106a200341d8006a103a20032802102202450d00200329021421070c010b200341d8006a200141186a2204200141286a410010d706024020032d00584101460d000240200141206a2802002202200141246a22052802004f0d00024020022001411c6a280200470d00200241016a22052002490d9d01200241017422062005200620054b1b22054100480d9d010240024020020d002005102d21020c010b200428020020022005103121020b2002450d9c01200120023602182001411c6a2005360200200141206a28020021020b200128021820026a41003a0000200141206a2201200128020041016a3602000ca0010b200341ec006a220141013602002003420137025c200341fcdeca00360258200341013602042003200536020020032003360268200341106a200341d8006a103a20032802102202450d9f012003200329021437023c20032002360238200141013602002003420137025c200341c0d7ca0036025820034131360204200320033602682003200341386a360200200341106a200341d8006a103a20032802102102200329021421070240200328023c450d002003280238102f0b20020d010c9f010b200328025c2202450d9e01200341e0006a29030021070b20002007370204200020023602000c9e010b0240200141206a2802002202200141246a22042802004f0d00024020022001411c6a280200470d00200241016a22042002490d9a01200241017422052004200520044b1b22044100480d9a010240024020020d002004102d21020c010b200128021820022004103121020b2002450d9901200120023602182001411c6a2004360200200141206a28020021020b200128021820026a41003a0000200141206a2201200128020041016a3602000c9d010b200341ec006a220141013602002003420137025c200341fcdeca00360258200341013602042003200436020020032003360268200341106a200341d8006a103a20032802102202450d9c012003200329021437023c20032002360238200141013602002003420137025c200341c0d7ca0036025820034131360204200320033602682003200341386a360200200341106a200341d8006a103a20032802102101200329021421070240200328023c450d002003280238102f0b2001450d9c0120002007370204200020013602000c9d010b0240200141206a2802002202200141246a22042802004f0d00024020022001411c6a280200470d00200241016a22042002490d9901200241017422052004200520044b1b22044100480d99010240024020020d002004102d21020c010b200128021820022004103121020b2002450d9801200120023602182001411c6a2004360200200141206a28020021020b200128021820026a41013a0000200141206a2201200128020041016a3602000c9c010b200341ec006a220141013602002003420137025c200341fcdeca00360258200341013602042003200436020020032003360268200341106a200341d8006a103a20032802102202450d9b012003200329021437023c20032002360238200141013602002003420137025c200341c0d7ca0036025820034131360204200320033602682003200341386a360200200341106a200341d8006a103a20032802102101200329021421070240200328023c450d002003280238102f0b2001450d9b0120002007370204200020013602000c9c010b0240200141206a2802002202200141246a22042802004f0d00024020022001411c6a280200470d00200241016a22042002490d9801200241017422052004200520044b1b22044100480d98010240024020020d002004102d21020c010b200128021820022004103121020b2002450d9701200120023602182001411c6a2004360200200141206a28020021020b200128021820026a41023a0000200141206a2201200128020041016a3602000c9b010b200341ec006a220141013602002003420137025c200341fcdeca00360258200341013602042003200436020020032003360268200341106a200341d8006a103a20032802102202450d9a012003200329021437023c20032002360238200141013602002003420137025c200341c0d7ca0036025820034131360204200320033602682003200341386a360200200341106a200341d8006a103a20032802102101200329021421070240200328023c450d002003280238102f0b2001450d9a0120002007370204200020013602000c9b010b0240200141206a2802002202200141246a22042802004f0d00024020022001411c6a280200470d00200241016a22042002490d9701200241017422052004200520044b1b22044100480d97010240024020020d002004102d21020c010b200128021820022004103121020b2002450d9601200120023602182001411c6a2004360200200141206a28020021020b200128021820026a41033a0000200141206a2201200128020041016a3602000c9a010b200341ec006a220141013602002003420137025c200341fcdeca00360258200341013602042003200436020020032003360268200341106a200341d8006a103a20032802102202450d99012003200329021437023c20032002360238200141013602002003420137025c200341c0d7ca0036025820034131360204200320033602682003200341386a360200200341106a200341d8006a103a20032802102101200329021421070240200328023c450d002003280238102f0b2001450d990120002007370204200020013602000c9a010b200341d8006a200141186a2204200141286a410010d7060240024020032d00584101460d000240200141206a2802002202200141246a22052802004f0d00024020022001411c6a280200470d00200241016a22052002490d9801200241017422062005200620054b1b22054100480d98010240024020020d002005102d21020c010b200428020020022005103121020b2002450d9701200120023602182001411c6a2005360200200141206a28020021020b200128021820026a41003a0000200141206a2201200128020041016a3602000c9b010b200341ec006a220141013602002003420137025c200341fcdeca003602582003410136023c200320053602382003200341386a360268200341106a200341d8006a103a20032802102202450d9a012003200329021437023c20032002360238200141013602002003420137025c200341c0d7ca0036025820034131360204200320033602682003200341386a360200200341106a200341d8006a103a20032802102101200329021421070240200328023c450d002003280238102f0b20010d010c9a010b200328025c2201450d9901200341e0006a29030021070b20002007370204200020013602000c99010b200341d8006a2001410010e0062003280258450d970120002003290358370200200041086a200341d8006a41086a2802003602000c98010b200341d8006a2001410010e0062003280258450d960120002003290358370200200041086a200341d8006a41086a2802003602000c97010b200341d8006a2001410010e0062003280258450d950120002003290358370200200041086a200341d8006a41086a2802003602000c96010b200341d8006a2001410010e0062003280258450d940120002003290358370200200041086a200341d8006a41086a2802003602000c95010b200341d8006a2001410010e0062003280258450d930120002003290358370200200041086a200341d8006a41086a2802003602000c94010b200341d8006a2001410010e0062003280258450d920120002003290358370200200041086a200341d8006a41086a2802003602000c93010b200341d8006a2001410010e0062003280258450d910120002003290358370200200041086a200341d8006a41086a2802003602000c92010b200341d8006a2001410010e0062003280258450d900120002003290358370200200041086a200341d8006a41086a2802003602000c91010b200341d8006a2001410010e0062003280258450d8f0120002003290358370200200041086a200341d8006a41086a2802003602000c90010b200341d8006a2001410010e0062003280258450d8e0120002003290358370200200041086a200341d8006a41086a2802003602000c8f010b200341d8006a200141186a2204200141286a410110d7060240024020032d00584101460d000240200141206a2802002202200141246a22052802004f0d00024020022001411c6a280200470d00200241016a22052002490d8d01200241017422062005200620054b1b22054100480d8d010240024020020d002005102d21020c010b200428020020022005103121020b2002450d8c01200120023602182001411c6a2005360200200141206a28020021020b200128021820026a41003a0000200141206a2201200128020041016a3602000c90010b200341ec006a220141013602002003420137025c200341fcdeca003602582003410136023c200320053602382003200341386a360268200341106a200341d8006a103a20032802102202450d8f012003200329021437023c20032002360238200141013602002003420137025c200341c0d7ca0036025820034131360204200320033602682003200341386a360200200341106a200341d8006a103a20032802102101200329021421070240200328023c450d002003280238102f0b20010d010c8f010b200328025c2201450d8e01200341e0006a29030021070b20002007370204200020013602000c8e010b200341d8006a2001410110e0062003280258450d8c0120002003290358370200200041086a200341d8006a41086a2802003602000c8d010b200341d8006a2001410110e0062003280258450d8b0120002003290358370200200041086a200341d8006a41086a2802003602000c8c010b200341d8006a2001410110e0062003280258450d8a0120002003290358370200200041086a200341d8006a41086a2802003602000c8b010b200341d8006a2001410110e0062003280258450d890120002003290358370200200041086a200341d8006a41086a2802003602000c8a010b200341d8006a2001410110e0062003280258450d880120002003290358370200200041086a200341d8006a41086a2802003602000c89010b200341d8006a2001410110e0062003280258450d870120002003290358370200200041086a200341d8006a41086a2802003602000c88010b200341d8006a2001410110e0062003280258450d860120002003290358370200200041086a200341d8006a41086a2802003602000c87010b200341d8006a2001410110e0062003280258450d850120002003290358370200200041086a200341d8006a41086a2802003602000c86010b200341d8006a2001410110e0062003280258450d840120002003290358370200200041086a200341d8006a41086a2802003602000c85010b200341d8006a2001410110e0062003280258450d830120002003290358370200200041086a200341d8006a41086a2802003602000c84010b200341d8006a2001410210e0062003280258450d820120002003290358370200200041086a200341d8006a41086a2802003602000c83010b200341d8006a2001410210e0062003280258450d810120002003290358370200200041086a200341d8006a41086a2802003602000c82010b200341d8006a2001410210e0062003280258450d800120002003290358370200200041086a200341d8006a41086a2802003602000c81010b200341d8006a2001410210e0062003280258450d7f20002003290358370200200041086a200341d8006a41086a2802003602000c80010b200341d8006a2001410210e0062003280258450d7e20002003290358370200200041086a200341d8006a41086a2802003602000c7f0b200341d8006a2001410210e0062003280258450d7d20002003290358370200200041086a200341d8006a41086a2802003602000c7e0b200341d8006a2001410310e0062003280258450d7c20002003290358370200200041086a200341d8006a41086a2802003602000c7d0b200341d8006a2001410310e0062003280258450d7b20002003290358370200200041086a200341d8006a41086a2802003602000c7c0b200341d8006a2001410310e0062003280258450d7a20002003290358370200200041086a200341d8006a41086a2802003602000c7b0b200341d8006a2001410310e0062003280258450d7920002003290358370200200041086a200341d8006a41086a2802003602000c7a0b200341d8006a2001410310e0062003280258450d7820002003290358370200200041086a200341d8006a41086a2802003602000c790b200341d8006a2001410310e0062003280258450d7720002003290358370200200041086a200341d8006a41086a2802003602000c780b200341d8006a200141186a2204200141286a410010d7060240024020032d00584101460d000240200141206a2802002202200141246a22052802004f0d00024020022001411c6a280200470d00200241016a22052002490d76200241017422062005200620054b1b22054100480d760240024020020d002005102d21020c010b200428020020022005103121020b2002450d75200120023602182001411c6a2005360200200141206a28020021020b200128021820026a41003a0000200141206a2201200128020041016a3602000c790b200341ec006a220141013602002003420137025c200341fcdeca003602582003410136023c200320053602382003200341386a360268200341106a200341d8006a103a20032802102202450d782003200329021437023c20032002360238200141013602002003420137025c200341c0d7ca0036025820034131360204200320033602682003200341386a360200200341106a200341d8006a103a20032802102101200329021421070240200328023c450d002003280238102f0b20010d010c780b200328025c2201450d77200341e0006a29030021070b20002007370204200020013602000c770b200341d8006a200141186a2204200141286a410010d7060240024020032d00584101460d000240200141206a2802002202200141246a22052802004f0d00024020022001411c6a280200470d00200241016a22052002490d75200241017422062005200620054b1b22054100480d750240024020020d002005102d21020c010b200428020020022005103121020b2002450d74200120023602182001411c6a2005360200200141206a28020021020b200128021820026a41003a0000200141206a2201200128020041016a3602000c780b200341ec006a220141013602002003420137025c200341fcdeca003602582003410136023c200320053602382003200341386a360268200341106a200341d8006a103a20032802102202450d772003200329021437023c20032002360238200141013602002003420137025c200341c0d7ca0036025820034131360204200320033602682003200341386a360200200341106a200341d8006a103a20032802102101200329021421070240200328023c450d002003280238102f0b20010d010c770b200328025c2201450d76200341e0006a29030021070b20002007370204200020013602000c760b200341d8006a200141186a2204200141286a410010d7060240024020032d00584101460d000240200141206a2802002202200141246a22052802004f0d00024020022001411c6a280200470d00200241016a22052002490d74200241017422062005200620054b1b22054100480d740240024020020d002005102d21020c010b200428020020022005103121020b2002450d73200120023602182001411c6a2005360200200141206a28020021020b200128021820026a41003a0000200141206a2201200128020041016a3602000c770b200341ec006a220141013602002003420137025c200341fcdeca003602582003410136023c200320053602382003200341386a360268200341106a200341d8006a103a20032802102202450d762003200329021437023c20032002360238200141013602002003420137025c200341c0d7ca0036025820034131360204200320033602682003200341386a360200200341106a200341d8006a103a20032802102101200329021421070240200328023c450d002003280238102f0b20010d010c760b200328025c2201450d75200341e0006a29030021070b20002007370204200020013602000c750b200341d8006a2001410010e1062003280258450d7320002003290358370200200041086a200341d8006a41086a2802003602000c740b200341d8006a2001410010e1062003280258450d7220002003290358370200200041086a200341d8006a41086a2802003602000c730b200341d8006a2001410010e1062003280258450d7120002003290358370200200041086a200341d8006a41086a2802003602000c720b200341d8006a2001410010e1062003280258450d7020002003290358370200200041086a200341d8006a41086a2802003602000c710b200341d8006a2001410010e1062003280258450d6f20002003290358370200200041086a200341d8006a41086a2802003602000c700b200341d8006a2001410010e1062003280258450d6e20002003290358370200200041086a200341d8006a41086a2802003602000c6f0b200341d8006a2001410010e1062003280258450d6d20002003290358370200200041086a200341d8006a41086a2802003602000c6e0b200341d8006a2001410010e1062003280258450d6c20002003290358370200200041086a200341d8006a41086a2802003602000c6d0b200341d8006a2001410010e1062003280258450d6b20002003290358370200200041086a200341d8006a41086a2802003602000c6c0b200341d8006a2001410010e1062003280258450d6a20002003290358370200200041086a200341d8006a41086a2802003602000c6b0b200341d8006a2001410010e1062003280258450d6920002003290358370200200041086a200341d8006a41086a2802003602000c6a0b200341d8006a2001410010e1062003280258450d6820002003290358370200200041086a200341d8006a41086a2802003602000c690b200341d8006a2001410010e1062003280258450d6720002003290358370200200041086a200341d8006a41086a2802003602000c680b200341d8006a2001410010e1062003280258450d6620002003290358370200200041086a200341d8006a41086a2802003602000c670b200341d8006a2001410010e1062003280258450d6520002003290358370200200041086a200341d8006a41086a2802003602000c660b200341d8006a200141186a2204200141286a410110d7060240024020032d00584101460d000240200141206a2802002202200141246a22052802004f0d00024020022001411c6a280200470d00200241016a22052002490d64200241017422062005200620054b1b22054100480d640240024020020d002005102d21020c010b200428020020022005103121020b2002450d63200120023602182001411c6a2005360200200141206a28020021020b200128021820026a41013a0000200141206a2201200128020041016a3602000c670b200341ec006a220141013602002003420137025c200341fcdeca003602582003410136023c200320053602382003200341386a360268200341106a200341d8006a103a20032802102202450d662003200329021437023c20032002360238200141013602002003420137025c200341c0d7ca0036025820034131360204200320033602682003200341386a360200200341106a200341d8006a103a20032802102101200329021421070240200328023c450d002003280238102f0b20010d010c660b200328025c2201450d65200341e0006a29030021070b20002007370204200020013602000c650b200341d8006a200141186a2204200141286a410110d7060240024020032d00584101460d000240200141206a2802002202200141246a22052802004f0d00024020022001411c6a280200470d00200241016a22052002490d63200241017422062005200620054b1b22054100480d630240024020020d002005102d21020c010b200428020020022005103121020b2002450d62200120023602182001411c6a2005360200200141206a28020021020b200128021820026a41013a0000200141206a2201200128020041016a3602000c660b200341ec006a220141013602002003420137025c200341fcdeca003602582003410136023c200320053602382003200341386a360268200341106a200341d8006a103a20032802102202450d652003200329021437023c20032002360238200141013602002003420137025c200341c0d7ca0036025820034131360204200320033602682003200341386a360200200341106a200341d8006a103a20032802102101200329021421070240200328023c450d002003280238102f0b20010d010c650b200328025c2201450d64200341e0006a29030021070b20002007370204200020013602000c640b200341d8006a200141186a2204200141286a410110d7060240024020032d00584101460d000240200141206a2802002202200141246a22052802004f0d00024020022001411c6a280200470d00200241016a22052002490d62200241017422062005200620054b1b22054100480d620240024020020d002005102d21020c010b200428020020022005103121020b2002450d61200120023602182001411c6a2005360200200141206a28020021020b200128021820026a41013a0000200141206a2201200128020041016a3602000c650b200341ec006a220141013602002003420137025c200341fcdeca003602582003410136023c200320053602382003200341386a360268200341106a200341d8006a103a20032802102202450d642003200329021437023c20032002360238200141013602002003420137025c200341c0d7ca0036025820034131360204200320033602682003200341386a360200200341106a200341d8006a103a20032802102101200329021421070240200328023c450d002003280238102f0b20010d010c640b200328025c2201450d63200341e0006a29030021070b20002007370204200020013602000c630b200341d8006a2001410110e1062003280258450d6120002003290358370200200041086a200341d8006a41086a2802003602000c620b200341d8006a2001410110e1062003280258450d6020002003290358370200200041086a200341d8006a41086a2802003602000c610b200341d8006a2001410110e1062003280258450d5f20002003290358370200200041086a200341d8006a41086a2802003602000c600b200341d8006a2001410110e1062003280258450d5e20002003290358370200200041086a200341d8006a41086a2802003602000c5f0b200341d8006a2001410110e1062003280258450d5d20002003290358370200200041086a200341d8006a41086a2802003602000c5e0b200341d8006a2001410110e1062003280258450d5c20002003290358370200200041086a200341d8006a41086a2802003602000c5d0b200341d8006a2001410110e1062003280258450d5b20002003290358370200200041086a200341d8006a41086a2802003602000c5c0b200341d8006a2001410110e1062003280258450d5a20002003290358370200200041086a200341d8006a41086a2802003602000c5b0b200341d8006a2001410110e1062003280258450d5920002003290358370200200041086a200341d8006a41086a2802003602000c5a0b200341d8006a2001410110e1062003280258450d5820002003290358370200200041086a200341d8006a41086a2802003602000c590b200341d8006a2001410110e1062003280258450d5720002003290358370200200041086a200341d8006a41086a2802003602000c580b200341d8006a2001410110e1062003280258450d5620002003290358370200200041086a200341d8006a41086a2802003602000c570b200341d8006a2001410110e1062003280258450d5520002003290358370200200041086a200341d8006a41086a2802003602000c560b200341d8006a2001410110e1062003280258450d5420002003290358370200200041086a200341d8006a41086a2802003602000c550b200341d8006a2001410110e1062003280258450d5320002003290358370200200041086a200341d8006a41086a2802003602000c540b200341d8006a200141186a2204200141286a410210d7060240024020032d00584101460d000240200141206a2802002202200141246a22052802004f0d00024020022001411c6a280200470d00200241016a22052002490d52200241017422062005200620054b1b22054100480d520240024020020d002005102d21020c010b200428020020022005103121020b2002450d51200120023602182001411c6a2005360200200141206a28020021020b200128021820026a41023a0000200141206a2201200128020041016a3602000c550b200341ec006a220141013602002003420137025c200341fcdeca003602582003410136023c200320053602382003200341386a360268200341106a200341d8006a103a20032802102202450d542003200329021437023c20032002360238200141013602002003420137025c200341c0d7ca0036025820034131360204200320033602682003200341386a360200200341106a200341d8006a103a20032802102101200329021421070240200328023c450d002003280238102f0b20010d010c540b200328025c2201450d53200341e0006a29030021070b20002007370204200020013602000c530b200341d8006a200141186a2204200141286a410210d7060240024020032d00584101460d000240200141206a2802002202200141246a22052802004f0d00024020022001411c6a280200470d00200241016a22052002490d51200241017422062005200620054b1b22054100480d510240024020020d002005102d21020c010b200428020020022005103121020b2002450d50200120023602182001411c6a2005360200200141206a28020021020b200128021820026a41023a0000200141206a2201200128020041016a3602000c540b200341ec006a220141013602002003420137025c200341fcdeca003602582003410136023c200320053602382003200341386a360268200341106a200341d8006a103a20032802102202450d532003200329021437023c20032002360238200141013602002003420137025c200341c0d7ca0036025820034131360204200320033602682003200341386a360200200341106a200341d8006a103a20032802102101200329021421070240200328023c450d002003280238102f0b20010d010c530b200328025c2201450d52200341e0006a29030021070b20002007370204200020013602000c520b200341d8006a200141186a2204200141286a410210d7060240024020032d00584101460d000240200141206a2802002202200141246a22052802004f0d00024020022001411c6a280200470d00200241016a22052002490d50200241017422062005200620054b1b22054100480d500240024020020d002005102d21020c010b200428020020022005103121020b2002450d4f200120023602182001411c6a2005360200200141206a28020021020b200128021820026a41023a0000200141206a2201200128020041016a3602000c530b200341ec006a220141013602002003420137025c200341fcdeca003602582003410136023c200320053602382003200341386a360268200341106a200341d8006a103a20032802102202450d522003200329021437023c20032002360238200141013602002003420137025c200341c0d7ca0036025820034131360204200320033602682003200341386a360200200341106a200341d8006a103a20032802102101200329021421070240200328023c450d002003280238102f0b20010d010c520b200328025c2201450d51200341e0006a29030021070b20002007370204200020013602000c510b200341d8006a200141186a2204200141286a410210d7060240024020032d00584101460d000240200141206a2802002202200141246a22052802004f0d00024020022001411c6a280200470d00200241016a22052002490d4f200241017422062005200620054b1b22054100480d4f0240024020020d002005102d21020c010b200428020020022005103121020b2002450d4e200120023602182001411c6a2005360200200141206a28020021020b200128021820026a41023a0000200141206a2201200128020041016a3602000c520b200341ec006a220141013602002003420137025c200341fcdeca003602582003410136023c200320053602382003200341386a360268200341106a200341d8006a103a20032802102202450d512003200329021437023c20032002360238200141013602002003420137025c200341c0d7ca0036025820034131360204200320033602682003200341386a360200200341106a200341d8006a103a20032802102101200329021421070240200328023c450d002003280238102f0b20010d010c510b200328025c2201450d50200341e0006a29030021070b20002007370204200020013602000c500b200341d8006a200141186a2204200141286a410210d7060240024020032d00584101460d000240200141206a2802002202200141246a22052802004f0d00024020022001411c6a280200470d00200241016a22052002490d4e200241017422062005200620054b1b22054100480d4e0240024020020d002005102d21020c010b200428020020022005103121020b2002450d4d200120023602182001411c6a2005360200200141206a28020021020b200128021820026a41023a0000200141206a2201200128020041016a3602000c510b200341ec006a220141013602002003420137025c200341fcdeca003602582003410136023c200320053602382003200341386a360268200341106a200341d8006a103a20032802102202450d502003200329021437023c20032002360238200141013602002003420137025c200341c0d7ca0036025820034131360204200320033602682003200341386a360200200341106a200341d8006a103a20032802102101200329021421070240200328023c450d002003280238102f0b20010d010c500b200328025c2201450d4f200341e0006a29030021070b20002007370204200020013602000c4f0b200341d8006a200141186a2204200141286a410210d7060240024020032d00584101460d000240200141206a2802002202200141246a22052802004f0d00024020022001411c6a280200470d00200241016a22052002490d4d200241017422062005200620054b1b22054100480d4d0240024020020d002005102d21020c010b200428020020022005103121020b2002450d4c200120023602182001411c6a2005360200200141206a28020021020b200128021820026a41023a0000200141206a2201200128020041016a3602000c500b200341ec006a220141013602002003420137025c200341fcdeca003602582003410136023c200320053602382003200341386a360268200341106a200341d8006a103a20032802102202450d4f2003200329021437023c20032002360238200141013602002003420137025c200341c0d7ca0036025820034131360204200320033602682003200341386a360200200341106a200341d8006a103a20032802102101200329021421070240200328023c450d002003280238102f0b20010d010c4f0b200328025c2201450d4e200341e0006a29030021070b20002007370204200020013602000c4e0b200341d8006a200141186a2204200141286a410210d7060240024020032d00584101460d000240200141206a2802002202200141246a22052802004f0d00024020022001411c6a280200470d00200241016a22052002490d4c200241017422062005200620054b1b22054100480d4c0240024020020d002005102d21020c010b200428020020022005103121020b2002450d4b200120023602182001411c6a2005360200200141206a28020021020b200128021820026a41023a0000200141206a2201200128020041016a3602000c4f0b200341ec006a220141013602002003420137025c200341fcdeca003602582003410136023c200320053602382003200341386a360268200341106a200341d8006a103a20032802102202450d4e2003200329021437023c20032002360238200141013602002003420137025c200341c0d7ca0036025820034131360204200320033602682003200341386a360200200341106a200341d8006a103a20032802102101200329021421070240200328023c450d002003280238102f0b20010d010c4e0b200328025c2201450d4d200341e0006a29030021070b20002007370204200020013602000c4d0b200341d8006a2001410210e1062003280258450d4b20002003290358370200200041086a200341d8006a41086a2802003602000c4c0b200341d8006a2001410210e1062003280258450d4a20002003290358370200200041086a200341d8006a41086a2802003602000c4b0b200341d8006a2001410210e1062003280258450d4920002003290358370200200041086a200341d8006a41086a2802003602000c4a0b200341d8006a2001410210e1062003280258450d4820002003290358370200200041086a200341d8006a41086a2802003602000c490b200341d8006a2001410210e1062003280258450d4720002003290358370200200041086a200341d8006a41086a2802003602000c480b200341d8006a2001410210e1062003280258450d4620002003290358370200200041086a200341d8006a41086a2802003602000c470b200341d8006a2001410210e1062003280258450d4520002003290358370200200041086a200341d8006a41086a2802003602000c460b200341d8006a200141186a2204200141286a410310d7060240024020032d00584101460d000240200141206a2802002202200141246a22052802004f0d00024020022001411c6a280200470d00200241016a22052002490d44200241017422062005200620054b1b22054100480d440240024020020d002005102d21020c010b200428020020022005103121020b2002450d43200120023602182001411c6a2005360200200141206a28020021020b200128021820026a41033a0000200141206a2201200128020041016a3602000c470b200341ec006a220141013602002003420137025c200341fcdeca003602582003410136023c200320053602382003200341386a360268200341106a200341d8006a103a20032802102202450d462003200329021437023c20032002360238200141013602002003420137025c200341c0d7ca0036025820034131360204200320033602682003200341386a360200200341106a200341d8006a103a20032802102101200329021421070240200328023c450d002003280238102f0b20010d010c460b200328025c2201450d45200341e0006a29030021070b20002007370204200020013602000c450b200341d8006a200141186a2204200141286a410310d7060240024020032d00584101460d000240200141206a2802002202200141246a22052802004f0d00024020022001411c6a280200470d00200241016a22052002490d43200241017422062005200620054b1b22054100480d430240024020020d002005102d21020c010b200428020020022005103121020b2002450d42200120023602182001411c6a2005360200200141206a28020021020b200128021820026a41033a0000200141206a2201200128020041016a3602000c460b200341ec006a220141013602002003420137025c200341fcdeca003602582003410136023c200320053602382003200341386a360268200341106a200341d8006a103a20032802102202450d452003200329021437023c20032002360238200141013602002003420137025c200341c0d7ca0036025820034131360204200320033602682003200341386a360200200341106a200341d8006a103a20032802102101200329021421070240200328023c450d002003280238102f0b20010d010c450b200328025c2201450d44200341e0006a29030021070b20002007370204200020013602000c440b200341d8006a200141186a2204200141286a410310d7060240024020032d00584101460d000240200141206a2802002202200141246a22052802004f0d00024020022001411c6a280200470d00200241016a22052002490d42200241017422062005200620054b1b22054100480d420240024020020d002005102d21020c010b200428020020022005103121020b2002450d41200120023602182001411c6a2005360200200141206a28020021020b200128021820026a41033a0000200141206a2201200128020041016a3602000c450b200341ec006a220141013602002003420137025c200341fcdeca003602582003410136023c200320053602382003200341386a360268200341106a200341d8006a103a20032802102202450d442003200329021437023c20032002360238200141013602002003420137025c200341c0d7ca0036025820034131360204200320033602682003200341386a360200200341106a200341d8006a103a20032802102101200329021421070240200328023c450d002003280238102f0b20010d010c440b200328025c2201450d43200341e0006a29030021070b20002007370204200020013602000c430b200341d8006a200141186a2204200141286a410310d7060240024020032d00584101460d000240200141206a2802002202200141246a22052802004f0d00024020022001411c6a280200470d00200241016a22052002490d41200241017422062005200620054b1b22054100480d410240024020020d002005102d21020c010b200428020020022005103121020b2002450d40200120023602182001411c6a2005360200200141206a28020021020b200128021820026a41033a0000200141206a2201200128020041016a3602000c440b200341ec006a220141013602002003420137025c200341fcdeca003602582003410136023c200320053602382003200341386a360268200341106a200341d8006a103a20032802102202450d432003200329021437023c20032002360238200141013602002003420137025c200341c0d7ca0036025820034131360204200320033602682003200341386a360200200341106a200341d8006a103a20032802102101200329021421070240200328023c450d002003280238102f0b20010d010c430b200328025c2201450d42200341e0006a29030021070b20002007370204200020013602000c420b200341d8006a200141186a2204200141286a410310d7060240024020032d00584101460d000240200141206a2802002202200141246a22052802004f0d00024020022001411c6a280200470d00200241016a22052002490d40200241017422062005200620054b1b22054100480d400240024020020d002005102d21020c010b200428020020022005103121020b2002450d3f200120023602182001411c6a2005360200200141206a28020021020b200128021820026a41033a0000200141206a2201200128020041016a3602000c430b200341ec006a220141013602002003420137025c200341fcdeca003602582003410136023c200320053602382003200341386a360268200341106a200341d8006a103a20032802102202450d422003200329021437023c20032002360238200141013602002003420137025c200341c0d7ca0036025820034131360204200320033602682003200341386a360200200341106a200341d8006a103a20032802102101200329021421070240200328023c450d002003280238102f0b20010d010c420b200328025c2201450d41200341e0006a29030021070b20002007370204200020013602000c410b200341d8006a200141186a2204200141286a410310d7060240024020032d00584101460d000240200141206a2802002202200141246a22052802004f0d00024020022001411c6a280200470d00200241016a22052002490d3f200241017422062005200620054b1b22054100480d3f0240024020020d002005102d21020c010b200428020020022005103121020b2002450d3e200120023602182001411c6a2005360200200141206a28020021020b200128021820026a41033a0000200141206a2201200128020041016a3602000c420b200341ec006a220141013602002003420137025c200341fcdeca003602582003410136023c200320053602382003200341386a360268200341106a200341d8006a103a20032802102202450d412003200329021437023c20032002360238200141013602002003420137025c200341c0d7ca0036025820034131360204200320033602682003200341386a360200200341106a200341d8006a103a20032802102101200329021421070240200328023c450d002003280238102f0b20010d010c410b200328025c2201450d40200341e0006a29030021070b20002007370204200020013602000c400b200341d8006a200141186a2204200141286a410310d7060240024020032d00584101460d000240200141206a2802002202200141246a22052802004f0d00024020022001411c6a280200470d00200241016a22052002490d3e200241017422062005200620054b1b22054100480d3e0240024020020d002005102d21020c010b200428020020022005103121020b2002450d3d200120023602182001411c6a2005360200200141206a28020021020b200128021820026a41033a0000200141206a2201200128020041016a3602000c410b200341ec006a220141013602002003420137025c200341fcdeca003602582003410136023c200320053602382003200341386a360268200341106a200341d8006a103a20032802102202450d402003200329021437023c20032002360238200141013602002003420137025c200341c0d7ca0036025820034131360204200320033602682003200341386a360200200341106a200341d8006a103a20032802102101200329021421070240200328023c450d002003280238102f0b20010d010c400b200328025c2201450d3f200341e0006a29030021070b20002007370204200020013602000c3f0b200341d8006a2001410310e1062003280258450d3d20002003290358370200200041086a200341d8006a41086a2802003602000c3e0b200341d8006a2001410310e1062003280258450d3c20002003290358370200200041086a200341d8006a41086a2802003602000c3d0b200341d8006a2001410310e1062003280258450d3b20002003290358370200200041086a200341d8006a41086a2802003602000c3c0b200341d8006a2001410310e1062003280258450d3a20002003290358370200200041086a200341d8006a41086a2802003602000c3b0b200341d8006a2001410310e1062003280258450d3920002003290358370200200041086a200341d8006a41086a2802003602000c3a0b200341d8006a2001410310e1062003280258450d3820002003290358370200200041086a200341d8006a41086a2802003602000c390b200341d8006a2001410310e1062003280258450d3720002003290358370200200041086a200341d8006a41086a2802003602000c380b200341d8006a200141186a2204200141286a410110d7060240024020032d00584101460d000240200141206a2802002202200141246a22052802004f0d00024020022001411c6a280200470d00200241016a22052002490d36200241017422062005200620054b1b22054100480d360240024020020d002005102d21020c010b200428020020022005103121020b2002450d35200120023602182001411c6a2005360200200141206a28020021020b200128021820026a41003a0000200141206a2201200128020041016a3602000c390b200341ec006a220141013602002003420137025c200341fcdeca003602582003410136023c200320053602382003200341386a360268200341106a200341d8006a103a20032802102202450d382003200329021437023c20032002360238200141013602002003420137025c200341c0d7ca0036025820034131360204200320033602682003200341386a360200200341106a200341d8006a103a20032802102101200329021421070240200328023c450d002003280238102f0b20010d010c380b200328025c2201450d37200341e0006a29030021070b20002007370204200020013602000c370b200341d8006a200141186a2204200141286a410210d7060240024020032d00584101460d000240200141206a2802002202200141246a22052802004f0d00024020022001411c6a280200470d00200241016a22052002490d35200241017422062005200620054b1b22054100480d350240024020020d002005102d21020c010b200428020020022005103121020b2002450d34200120023602182001411c6a2005360200200141206a28020021020b200128021820026a41003a0000200141206a2201200128020041016a3602000c380b200341ec006a220141013602002003420137025c200341fcdeca003602582003410136023c200320053602382003200341386a360268200341106a200341d8006a103a20032802102202450d372003200329021437023c20032002360238200141013602002003420137025c200341c0d7ca0036025820034131360204200320033602682003200341386a360200200341106a200341d8006a103a20032802102101200329021421070240200328023c450d002003280238102f0b20010d010c370b200328025c2201450d36200341e0006a29030021070b20002007370204200020013602000c360b200341d8006a200141186a2204200141286a410210d7060240024020032d00584101460d000240200141206a2802002202200141246a22052802004f0d00024020022001411c6a280200470d00200241016a22052002490d34200241017422062005200620054b1b22054100480d340240024020020d002005102d21020c010b200428020020022005103121020b2002450d33200120023602182001411c6a2005360200200141206a28020021020b200128021820026a41003a0000200141206a2201200128020041016a3602000c370b200341ec006a220141013602002003420137025c200341fcdeca003602582003410136023c200320053602382003200341386a360268200341106a200341d8006a103a20032802102202450d362003200329021437023c20032002360238200141013602002003420137025c200341c0d7ca0036025820034131360204200320033602682003200341386a360200200341106a200341d8006a103a20032802102101200329021421070240200328023c450d002003280238102f0b20010d010c360b200328025c2201450d35200341e0006a29030021070b20002007370204200020013602000c350b200341d8006a200141186a2204200141286a410310d7060240024020032d00584101460d000240200141206a2802002202200141246a22052802004f0d00024020022001411c6a280200470d00200241016a22052002490d33200241017422062005200620054b1b22054100480d330240024020020d002005102d21020c010b200428020020022005103121020b2002450d32200120023602182001411c6a2005360200200141206a28020021020b200128021820026a41003a0000200141206a2201200128020041016a3602000c360b200341ec006a220141013602002003420137025c200341fcdeca003602582003410136023c200320053602382003200341386a360268200341106a200341d8006a103a20032802102202450d352003200329021437023c20032002360238200141013602002003420137025c200341c0d7ca0036025820034131360204200320033602682003200341386a360200200341106a200341d8006a103a20032802102101200329021421070240200328023c450d002003280238102f0b20010d010c350b200328025c2201450d34200341e0006a29030021070b20002007370204200020013602000c340b200341d8006a200141186a2204200141286a410310d7060240024020032d00584101460d000240200141206a2802002202200141246a22052802004f0d00024020022001411c6a280200470d00200241016a22052002490d32200241017422062005200620054b1b22054100480d320240024020020d002005102d21020c010b200428020020022005103121020b2002450d31200120023602182001411c6a2005360200200141206a28020021020b200128021820026a41003a0000200141206a2201200128020041016a3602000c350b200341ec006a220141013602002003420137025c200341fcdeca003602582003410136023c200320053602382003200341386a360268200341106a200341d8006a103a20032802102202450d342003200329021437023c20032002360238200141013602002003420137025c200341c0d7ca0036025820034131360204200320033602682003200341386a360200200341106a200341d8006a103a20032802102101200329021421070240200328023c450d002003280238102f0b20010d010c340b200328025c2201450d33200341e0006a29030021070b20002007370204200020013602000c330b200341d8006a200141186a2204200141286a410010d7060240024020032d00584101460d000240200141206a2802002202200141246a22052802004f0d00024020022001411c6a280200470d00200241016a22052002490d31200241017422062005200620054b1b22054100480d310240024020020d002005102d21020c010b200428020020022005103121020b2002450d30200120023602182001411c6a2005360200200141206a28020021020b200128021820026a41013a0000200141206a2201200128020041016a3602000c340b200341ec006a220141013602002003420137025c200341fcdeca003602582003410136023c200320053602382003200341386a360268200341106a200341d8006a103a20032802102202450d332003200329021437023c20032002360238200141013602002003420137025c200341c0d7ca0036025820034131360204200320033602682003200341386a360200200341106a200341d8006a103a20032802102101200329021421070240200328023c450d002003280238102f0b20010d010c330b200328025c2201450d32200341e0006a29030021070b20002007370204200020013602000c320b200341d8006a200141186a2204200141286a410010d7060240024020032d00584101460d000240200141206a2802002202200141246a22052802004f0d00024020022001411c6a280200470d00200241016a22052002490d30200241017422062005200620054b1b22054100480d300240024020020d002005102d21020c010b200428020020022005103121020b2002450d2f200120023602182001411c6a2005360200200141206a28020021020b200128021820026a41013a0000200141206a2201200128020041016a3602000c330b200341ec006a220141013602002003420137025c200341fcdeca003602582003410136023c200320053602382003200341386a360268200341106a200341d8006a103a20032802102202450d322003200329021437023c20032002360238200141013602002003420137025c200341c0d7ca0036025820034131360204200320033602682003200341386a360200200341106a200341d8006a103a20032802102101200329021421070240200328023c450d002003280238102f0b20010d010c320b200328025c2201450d31200341e0006a29030021070b20002007370204200020013602000c310b200341d8006a200141186a2204200141286a410210d7060240024020032d00584101460d000240200141206a2802002202200141246a22052802004f0d00024020022001411c6a280200470d00200241016a22052002490d2f200241017422062005200620054b1b22054100480d2f0240024020020d002005102d21020c010b200428020020022005103121020b2002450d2e200120023602182001411c6a2005360200200141206a28020021020b200128021820026a41013a0000200141206a2201200128020041016a3602000c320b200341ec006a220141013602002003420137025c200341fcdeca003602582003410136023c200320053602382003200341386a360268200341106a200341d8006a103a20032802102202450d312003200329021437023c20032002360238200141013602002003420137025c200341c0d7ca0036025820034131360204200320033602682003200341386a360200200341106a200341d8006a103a20032802102101200329021421070240200328023c450d002003280238102f0b20010d010c310b200328025c2201450d30200341e0006a29030021070b20002007370204200020013602000c300b200341d8006a200141186a2204200141286a410210d7060240024020032d00584101460d000240200141206a2802002202200141246a22052802004f0d00024020022001411c6a280200470d00200241016a22052002490d2e200241017422062005200620054b1b22054100480d2e0240024020020d002005102d21020c010b200428020020022005103121020b2002450d2d200120023602182001411c6a2005360200200141206a28020021020b200128021820026a41013a0000200141206a2201200128020041016a3602000c310b200341ec006a220141013602002003420137025c200341fcdeca003602582003410136023c200320053602382003200341386a360268200341106a200341d8006a103a20032802102202450d302003200329021437023c20032002360238200141013602002003420137025c200341c0d7ca0036025820034131360204200320033602682003200341386a360200200341106a200341d8006a103a20032802102101200329021421070240200328023c450d002003280238102f0b20010d010c300b200328025c2201450d2f200341e0006a29030021070b20002007370204200020013602000c2f0b200341d8006a200141186a2204200141286a410310d7060240024020032d00584101460d000240200141206a2802002202200141246a22052802004f0d00024020022001411c6a280200470d00200241016a22052002490d2d200241017422062005200620054b1b22054100480d2d0240024020020d002005102d21020c010b200428020020022005103121020b2002450d2c200120023602182001411c6a2005360200200141206a28020021020b200128021820026a41013a0000200141206a2201200128020041016a3602000c300b200341ec006a220141013602002003420137025c200341fcdeca003602582003410136023c200320053602382003200341386a360268200341106a200341d8006a103a20032802102202450d2f2003200329021437023c20032002360238200141013602002003420137025c200341c0d7ca0036025820034131360204200320033602682003200341386a360200200341106a200341d8006a103a20032802102101200329021421070240200328023c450d002003280238102f0b20010d010c2f0b200328025c2201450d2e200341e0006a29030021070b20002007370204200020013602000c2e0b200341d8006a200141186a2204200141286a410310d7060240024020032d00584101460d000240200141206a2802002202200141246a22052802004f0d00024020022001411c6a280200470d00200241016a22052002490d2c200241017422062005200620054b1b22054100480d2c0240024020020d002005102d21020c010b200428020020022005103121020b2002450d2b200120023602182001411c6a2005360200200141206a28020021020b200128021820026a41013a0000200141206a2201200128020041016a3602000c2f0b200341ec006a220141013602002003420137025c200341fcdeca003602582003410136023c200320053602382003200341386a360268200341106a200341d8006a103a20032802102202450d2e2003200329021437023c20032002360238200141013602002003420137025c200341c0d7ca0036025820034131360204200320033602682003200341386a360200200341106a200341d8006a103a20032802102101200329021421070240200328023c450d002003280238102f0b20010d010c2e0b200328025c2201450d2d200341e0006a29030021070b20002007370204200020013602000c2d0b200341d8006a200141186a2204200141286a410010d7060240024020032d00584101460d000240200141206a2802002202200141246a22052802004f0d00024020022001411c6a280200470d00200241016a22052002490d2b200241017422062005200620054b1b22054100480d2b0240024020020d002005102d21020c010b200428020020022005103121020b2002450d2a200120023602182001411c6a2005360200200141206a28020021020b200128021820026a41023a0000200141206a2201200128020041016a3602000c2e0b200341ec006a220141013602002003420137025c200341fcdeca003602582003410136023c200320053602382003200341386a360268200341106a200341d8006a103a20032802102202450d2d2003200329021437023c20032002360238200141013602002003420137025c200341c0d7ca0036025820034131360204200320033602682003200341386a360200200341106a200341d8006a103a20032802102101200329021421070240200328023c450d002003280238102f0b20010d010c2d0b200328025c2201450d2c200341e0006a29030021070b20002007370204200020013602000c2c0b200341d8006a200141186a2204200141286a410010d7060240024020032d00584101460d000240200141206a2802002202200141246a22052802004f0d00024020022001411c6a280200470d00200241016a22052002490d2a200241017422062005200620054b1b22054100480d2a0240024020020d002005102d21020c010b200428020020022005103121020b2002450d29200120023602182001411c6a2005360200200141206a28020021020b200128021820026a41023a0000200141206a2201200128020041016a3602000c2d0b200341ec006a220141013602002003420137025c200341fcdeca003602582003410136023c200320053602382003200341386a360268200341106a200341d8006a103a20032802102202450d2c2003200329021437023c20032002360238200141013602002003420137025c200341c0d7ca0036025820034131360204200320033602682003200341386a360200200341106a200341d8006a103a20032802102101200329021421070240200328023c450d002003280238102f0b20010d010c2c0b200328025c2201450d2b200341e0006a29030021070b20002007370204200020013602000c2b0b200341d8006a200141186a2204200141286a410110d7060240024020032d00584101460d000240200141206a2802002202200141246a22052802004f0d00024020022001411c6a280200470d00200241016a22052002490d29200241017422062005200620054b1b22054100480d290240024020020d002005102d21020c010b200428020020022005103121020b2002450d28200120023602182001411c6a2005360200200141206a28020021020b200128021820026a41023a0000200141206a2201200128020041016a3602000c2c0b200341ec006a220141013602002003420137025c200341fcdeca003602582003410136023c200320053602382003200341386a360268200341106a200341d8006a103a20032802102202450d2b2003200329021437023c20032002360238200141013602002003420137025c200341c0d7ca0036025820034131360204200320033602682003200341386a360200200341106a200341d8006a103a20032802102101200329021421070240200328023c450d002003280238102f0b20010d010c2b0b200328025c2201450d2a200341e0006a29030021070b20002007370204200020013602000c2a0b200341d8006a200141186a2204200141286a410110d7060240024020032d00584101460d000240200141206a2802002202200141246a22052802004f0d00024020022001411c6a280200470d00200241016a22052002490d28200241017422062005200620054b1b22054100480d280240024020020d002005102d21020c010b200428020020022005103121020b2002450d27200120023602182001411c6a2005360200200141206a28020021020b200128021820026a41023a0000200141206a2201200128020041016a3602000c2b0b200341ec006a220141013602002003420137025c200341fcdeca003602582003410136023c200320053602382003200341386a360268200341106a200341d8006a103a20032802102202450d2a2003200329021437023c20032002360238200141013602002003420137025c200341c0d7ca0036025820034131360204200320033602682003200341386a360200200341106a200341d8006a103a20032802102101200329021421070240200328023c450d002003280238102f0b20010d010c2a0b200328025c2201450d29200341e0006a29030021070b20002007370204200020013602000c290b200341d8006a200141186a2204200141286a410310d7060240024020032d00584101460d000240200141206a2802002202200141246a22052802004f0d00024020022001411c6a280200470d00200241016a22052002490d27200241017422062005200620054b1b22054100480d270240024020020d002005102d21020c010b200428020020022005103121020b2002450d26200120023602182001411c6a2005360200200141206a28020021020b200128021820026a41023a0000200141206a2201200128020041016a3602000c2a0b200341ec006a220141013602002003420137025c200341fcdeca003602582003410136023c200320053602382003200341386a360268200341106a200341d8006a103a20032802102202450d292003200329021437023c20032002360238200141013602002003420137025c200341c0d7ca0036025820034131360204200320033602682003200341386a360200200341106a200341d8006a103a20032802102101200329021421070240200328023c450d002003280238102f0b20010d010c290b200328025c2201450d28200341e0006a29030021070b20002007370204200020013602000c280b200341d8006a200141186a2204200141286a410010d7060240024020032d00584101460d000240200141206a2802002202200141246a22052802004f0d00024020022001411c6a280200470d00200241016a22052002490d26200241017422062005200620054b1b22054100480d260240024020020d002005102d21020c010b200428020020022005103121020b2002450d25200120023602182001411c6a2005360200200141206a28020021020b200128021820026a41033a0000200141206a2201200128020041016a3602000c290b200341ec006a220141013602002003420137025c200341fcdeca003602582003410136023c200320053602382003200341386a360268200341106a200341d8006a103a20032802102202450d282003200329021437023c20032002360238200141013602002003420137025c200341c0d7ca0036025820034131360204200320033602682003200341386a360200200341106a200341d8006a103a20032802102101200329021421070240200328023c450d002003280238102f0b20010d010c280b200328025c2201450d27200341e0006a29030021070b20002007370204200020013602000c270b200341d8006a200141186a2204200141286a410010d7060240024020032d00584101460d000240200141206a2802002202200141246a22052802004f0d00024020022001411c6a280200470d00200241016a22052002490d25200241017422062005200620054b1b22054100480d250240024020020d002005102d21020c010b200428020020022005103121020b2002450d24200120023602182001411c6a2005360200200141206a28020021020b200128021820026a41033a0000200141206a2201200128020041016a3602000c280b200341ec006a220141013602002003420137025c200341fcdeca003602582003410136023c200320053602382003200341386a360268200341106a200341d8006a103a20032802102202450d272003200329021437023c20032002360238200141013602002003420137025c200341c0d7ca0036025820034131360204200320033602682003200341386a360200200341106a200341d8006a103a20032802102101200329021421070240200328023c450d002003280238102f0b20010d010c270b200328025c2201450d26200341e0006a29030021070b20002007370204200020013602000c260b200341d8006a200141186a2204200141286a410110d7060240024020032d00584101460d000240200141206a2802002202200141246a22052802004f0d00024020022001411c6a280200470d00200241016a22052002490d24200241017422062005200620054b1b22054100480d240240024020020d002005102d21020c010b200428020020022005103121020b2002450d23200120023602182001411c6a2005360200200141206a28020021020b200128021820026a41033a0000200141206a2201200128020041016a3602000c270b200341ec006a220141013602002003420137025c200341fcdeca003602582003410136023c200320053602382003200341386a360268200341106a200341d8006a103a20032802102202450d262003200329021437023c20032002360238200141013602002003420137025c200341c0d7ca0036025820034131360204200320033602682003200341386a360200200341106a200341d8006a103a20032802102101200329021421070240200328023c450d002003280238102f0b20010d010c260b200328025c2201450d25200341e0006a29030021070b20002007370204200020013602000c250b200341d8006a200141186a2204200141286a410110d7060240024020032d00584101460d000240200141206a2802002202200141246a22052802004f0d00024020022001411c6a280200470d00200241016a22052002490d23200241017422062005200620054b1b22054100480d230240024020020d002005102d21020c010b200428020020022005103121020b2002450d22200120023602182001411c6a2005360200200141206a28020021020b200128021820026a41033a0000200141206a2201200128020041016a3602000c260b200341ec006a220141013602002003420137025c200341fcdeca003602582003410136023c200320053602382003200341386a360268200341106a200341d8006a103a20032802102202450d252003200329021437023c20032002360238200141013602002003420137025c200341c0d7ca0036025820034131360204200320033602682003200341386a360200200341106a200341d8006a103a20032802102101200329021421070240200328023c450d002003280238102f0b20010d010c250b200328025c2201450d24200341e0006a29030021070b20002007370204200020013602000c240b200341d8006a200141186a2204200141286a410210d7060240024020032d00584101460d000240200141206a2802002202200141246a22052802004f0d00024020022001411c6a280200470d00200241016a22052002490d22200241017422062005200620054b1b22054100480d220240024020020d002005102d21020c010b200428020020022005103121020b2002450d21200120023602182001411c6a2005360200200141206a28020021020b200128021820026a41033a0000200141206a2201200128020041016a3602000c250b200341ec006a220141013602002003420137025c200341fcdeca003602582003410136023c200320053602382003200341386a360268200341106a200341d8006a103a20032802102202450d242003200329021437023c20032002360238200141013602002003420137025c200341c0d7ca0036025820034131360204200320033602682003200341386a360200200341106a200341d8006a103a20032802102101200329021421070240200328023c450d002003280238102f0b20010d010c240b200328025c2201450d23200341e0006a29030021070b20002007370204200020013602000c230b200341d8006a200141186a2204200141286a410210d7060240024020032d00584101460d000240200141206a2802002202200141246a22052802004f0d00024020022001411c6a280200470d00200241016a22052002490d21200241017422062005200620054b1b22054100480d210240024020020d002005102d21020c010b200428020020022005103121020b2002450d20200120023602182001411c6a2005360200200141206a28020021020b200128021820026a41003a0000200141206a2201200128020041016a3602000c240b200341ec006a220141013602002003420137025c200341fcdeca003602582003410136023c200320053602382003200341386a360268200341106a200341d8006a103a20032802102202450d232003200329021437023c20032002360238200141013602002003420137025c200341c0d7ca0036025820034131360204200320033602682003200341386a360200200341106a200341d8006a103a20032802102101200329021421070240200328023c450d002003280238102f0b20010d010c230b200328025c2201450d22200341e0006a29030021070b20002007370204200020013602000c220b200341d8006a200141186a2204200141286a410310d7060240024020032d00584101460d000240200141206a2802002202200141246a22052802004f0d00024020022001411c6a280200470d00200241016a22052002490d20200241017422062005200620054b1b22054100480d200240024020020d002005102d21020c010b200428020020022005103121020b2002450d1f200120023602182001411c6a2005360200200141206a28020021020b200128021820026a41013a0000200141206a2201200128020041016a3602000c230b200341ec006a220141013602002003420137025c200341fcdeca003602582003410136023c200320053602382003200341386a360268200341106a200341d8006a103a20032802102202450d222003200329021437023c20032002360238200141013602002003420137025c200341c0d7ca0036025820034131360204200320033602682003200341386a360200200341106a200341d8006a103a20032802102101200329021421070240200328023c450d002003280238102f0b20010d010c220b200328025c2201450d21200341e0006a29030021070b20002007370204200020013602000c210b200341d8006a200141186a2204200141286a410010d7060240024020032d00584101460d000240200141206a2802002202200141246a22052802004f0d00024020022001411c6a280200470d00200241016a22052002490d0d200241017422062005200620054b1b22054100480d0d0240024020020d002005102d21020c010b200428020020022005103121020b2002450d0c200120023602182001411c6a2005360200200141206a28020021020b200128021820026a41023a0000200141206a2201200128020041016a3602000c220b200341ec006a220141013602002003420137025c200341fcdeca003602582003410136023c200320053602382003200341386a360268200341106a200341d8006a103a20032802102202450d212003200329021437023c20032002360238200141013602002003420137025c200341c0d7ca0036025820034131360204200320033602682003200341386a360200200341106a200341d8006a103a20032802102101200329021421070240200328023c450d002003280238102f0b20010d010c210b200328025c2201450d20200341e0006a29030021070b20002007370204200020013602000c200b2000200329025c370200200041086a200341e4006a2802003602000c1f0b200341ec006a41013602002003420237025c200341ccd2ca003602582003413836023c2003200441056a3602382003200341386a360268200341106a200341d8006a103a200041086a200341106a41086a280200360200200020032903103702000c1e0b41eeddca00411d418cdeca001055000b41eeddca00411d418cdeca001055000b200341d8006a41146a41013602002003420237025c200341c0dbca0036025820034101360204200320033602682003200341386a360200200341106a200341d8006a103a0c0a0b200341e0006a2903002107200328025c21010c0a0b200341e0006a2903002107200328025c21010c090b200341ec006a41013602002003420237025c200341a4dcca003602582003410136024c2003200341c8006a3602682003200341d4006a360248200341106a200341d8006a103a0c050b1036000b1038000b41eeddca00411d418cdeca001055000b200320032d005922013a00002001200241ff0171460d1320014104460d13200341106a41146a41373602002003411c6a4137360200200341d8006a41146a41033602002003420337025c20034184d3ca00360258200341013602142003200341106a3602682003200336022020032003412f6a3602182003200341286a360210200341386a200341d8006a103a0b200329023c2107200328023821010c010b2003280210210120032003290214220737023c200320013602380b2001450d1020002007370204200020013602000c110b20032802102101200329021421070b2001450d0e20002007370204200020013602000c0f0b200641027421060340200320042802002205360248200220054d0d0220022005417f736a220520024f0d0b0240200820054103746a22052d00044103460d0020052d00054104470d040b200441046a21042006417c6a22060d000b4104210a0b200341d8006a200141186a2202200d410010d70620032d00584101460d02200a41ff01714104470d030c040b200341ec006a220441023602002003411c6a41013602002003420237025c200341acddca0036025820034101360214200320023602002003200341106a360268200320033602182003200341c8006a360210200341386a200341d8006a103a200328023821022003200329023c37023c20032002360238200441013602002003420137025c200341c0d7ca0036025820034131360204200320033602682003200341386a360200200341106a200341d8006a103a20032802102102200329021421070240200328023c450d002003280238102f0b20032007370204200320023602000c050b2003411c6a4138360200200341ec006a41023602002003420237025c200341dcd2ca003602582003200541056a360218200341383602142003200341106a3602682003200341306a3602102003200341d8006a103a0c040b200341086a200341e4006a2802003602002003200329025c3703000c030b200341d8006a2002200d200a10db062003280258450d00200341086a200341d8006a41086a280200360200200320032903583703000c020b200341003602000c010b200341ec006a220441023602002003411c6a41013602002003420237025c200341acddca0036025820034101360214200320023602002003200341106a360268200320033602182003200341c8006a360210200341386a200341d8006a103a200328023821022003200329023c37023c20032002360238200441013602002003420137025c200341c0d7ca0036025820034131360204200320033602682003200341386a360200200341106a200341d8006a103a20032802102102200329021421070240200328023c450d002003280238102f0b20032007370204200320023602000b0240200328020022020d0002400240200141306a2802002202417f6a220420024f0d00200420024d0d010b4118102d2201450d022003421837025c20032001360258200341d8006a4100411810d80620032003280260220141186a3602602001200328025822006a41184192ddca00411810d9062003200329025c37025c20032000360258418fd1ca00413b200341d8006a41ccd1ca0041dcd1ca00103e000b02400240200128022820044103746a22052802002204200141206a220628020022024b0d00200421010c010b024002402001411c6a280200220820026b200420026b2209490d0020012802182108200221010c010b200220096a220a2002490d042008410174220b200a200b200a4b1b220a4100480d040240024020080d00200a102d21080c010b20012802182008200a103121080b2008450d03200120083602182001411c6a200a360200200141206a28020021010b200820016a210a0240024020094102490d00200a410420042002417f736a220210e7061a2008200220016a22016a210a0c010b2009450d010b200a41043a0000200141016a21010b20062001360200200541013a00060c060b20002003290204370204200020023602000c060b1036000b1038000b41eeddca00411d418cdeca001055000b20002007370204200020023602000c020b20002007370204200020013602000c010b200041003602000b200341f0006a24000b6401017f230041206b2202240020024139360204200220003602002001411c6a2802002100200128021821012002411c6a41013602002002420137020c2002419cdfca003602082002200236021820012000200241086a103c2101200241206a240020010b0c002000280200200110b1060b19002000200141186a280200360204200020012802103602000bcf05010a7f200141096a2d0000210220012d000821032001280204210420012802002105024002400240024002400240024002400240024020012d000a22060e03010002010b200341ff017141014621070c020b200341ff01714101462201200420056b6a220720014f0d01410021084100210141002107410121090240410041ff01710e03030400030b410021060c040b200420056b21070b0240024020070d00410121090c010b20074100480d042007102d2209450d050b4100210102400240200341ff01710d00200921080c010b20092108200641014b0d00200920023a0000200941016a2108410121010b200641024b0d05024020060e03000600000b20052004460d05200120056b21010340200820052d00003a0000200841016a21082004200541016a2205470d000b200420016a21010c050b410121060c010b410221060b0340024002400240024020060e03000102020b20052004460d0620052d0000210a41022106200541016a21052002210b200a21020c020b200341017121064100210302402006450d00410021064100210b0c020b20052004460d0520052d0000210241022106200541016a21054100210b0c010b410121062003410171210a410021034100210b200a450d040b024020012007470d00024002400240024020060e03010200010b200420056b21070c020b417f200341ff01714101462207200420056b6a220a200a2007491b21070c010b200341ff017141014621070b2001417f200741016a220a200a2007491b6a22072001490d0220082007200820074b1b22074100480d020240024020010d002007102d21090c010b200920012007103121090b2009450d030b200920016a20023a0000200841026a2108200141016a2101200b2102024002400240200641ff01710e03000102000b410121060c020b410221060c010b410021060c000b0b1038000b1036000b2000200136020820002007360204200020093602000bc76501037f230041206b220224000240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020002d00000eac010102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f80018101820183018401850186018701880189018a018b018c018d018e018f0190019101920193019401950196019701980199019a019b019c019d019e019f01a001a101a201a301a401a501a601a701a801a901aa01ab0100010b2002200128021841d7a3ca0041112001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000cab010b2002200128021841e8a3ca00410b2001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000caa010b2002200128021841f3a3ca0041032001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000ca9010b2002200128021841f6a3ca0041052001411c6a28020028020c1100003a001820022001360210200241003a0019200241003602142002200041016a36020c200241106a2002410c6a41fca3ca00106121000ca8010b20022001280218418ca4ca0041042001411c6a28020028020c1100003a001820022001360210200241003a0019200241003602142002200041016a36020c200241106a2002410c6a41fca3ca00106121000ca7010b200220012802184190a4ca0041022001411c6a28020028020c1100003a001820022001360210200241003a0019200241003602142002200041016a36020c200241106a2002410c6a41fca3ca00106121000ca6010b200220012802184192a4ca0041042001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000ca5010b200220012802184196a4ca0041032001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000ca4010b200220012802184199a4ca0041022001411c6a28020028020c1100003a001820022001360210200241003a0019200241003602142002200041046a36020c200241106a2002410c6a41a0a3ca00106121000ca3010b20022001280218419ba4ca0041042001411c6a28020028020c1100003a001820022001360210200241003a0019200241003602142002200041046a36020c200241106a2002410c6a41a0a3ca00106121000ca2010b20022001280218419fa4ca0041072001411c6a28020028020c1100003a001820022001360210200241003a0019200241003602142002200041046a36020c200241106a2002410c6a41a8a4ca00106121000ca1010b2002200128021841b8a4ca0041062001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000ca0010b2002200128021841bea4ca0041042001411c6a28020028020c1100003a001820022001360210200241003a0019200241003602142002200041046a36020c200241106a2002410c6a41a0a3ca00106121000c9f010b2002200128021841c2a4ca00410c2001411c6a28020028020c1100003a001820022001360210200241003a0019200241003602142002200041046a36020c200241106a2002410c6a41a0a3ca00106121012002200041016a36020c20012002410c6a41d0a4ca00106121000c9e010b2002200128021841e0a4ca0041042001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c9d010b2002200128021841e4a4ca0041062001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c9c010b2002200128021841eaa4ca0041082001411c6a28020028020c1100003a001820022001360210200241003a0019200241003602142002200041046a36020c200241106a2002410c6a41a0a3ca00106121000c9b010b2002200128021841f2a4ca0041082001411c6a28020028020c1100003a001820022001360210200241003a0019200241003602142002200041046a36020c200241106a2002410c6a41a0a3ca00106121000c9a010b2002200128021841faa4ca0041082001411c6a28020028020c1100003a001820022001360210200241003a0019200241003602142002200041046a36020c200241106a2002410c6a41a0a3ca00106121000c99010b200220012802184182a5ca0041092001411c6a28020028020c1100003a001820022001360210200241003a0019200241003602142002200041046a36020c200241106a2002410c6a41a0a3ca00106121000c98010b20022001280218418ba5ca0041092001411c6a28020028020c1100003a001820022001360210200241003a0019200241003602142002200041046a36020c200241106a2002410c6a41a0a3ca00106121000c97010b200220012802184194a5ca0041072001411c6a28020028020c1100003a001820022001360210200241003a0019200241003602142002200041046a36020c200241106a2002410c6a41a0a3ca00106121012002200041086a36020c20012002410c6a41a0a3ca00106121000c96010b20022001280218419ba5ca0041072001411c6a28020028020c1100003a001820022001360210200241003a0019200241003602142002200041046a36020c200241106a2002410c6a41a0a3ca00106121012002200041086a36020c20012002410c6a41a0a3ca00106121000c95010b2002200128021841a2a5ca0041072001411c6a28020028020c1100003a001820022001360210200241003a0019200241003602142002200041046a36020c200241106a2002410c6a41a0a3ca00106121012002200041086a36020c20012002410c6a41a0a3ca00106121000c94010b2002200128021841a9a5ca0041072001411c6a28020028020c1100003a001820022001360210200241003a0019200241003602142002200041046a36020c200241106a2002410c6a41a0a3ca00106121012002200041086a36020c20012002410c6a41a0a3ca00106121000c93010b2002200128021841b0a5ca0041092001411c6a28020028020c1100003a001820022001360210200241003a0019200241003602142002200041046a36020c200241106a2002410c6a41a0a3ca00106121012002200041086a36020c20012002410c6a41a0a3ca00106121000c92010b2002200128021841b9a5ca0041092001411c6a28020028020c1100003a001820022001360210200241003a0019200241003602142002200041046a36020c200241106a2002410c6a41a0a3ca00106121012002200041086a36020c20012002410c6a41a0a3ca00106121000c91010b2002200128021841c2a5ca00410a2001411c6a28020028020c1100003a001820022001360210200241003a0019200241003602142002200041046a36020c200241106a2002410c6a41a0a3ca00106121012002200041086a36020c20012002410c6a41a0a3ca00106121000c90010b2002200128021841cca5ca00410a2001411c6a28020028020c1100003a001820022001360210200241003a0019200241003602142002200041046a36020c200241106a2002410c6a41a0a3ca00106121012002200041086a36020c20012002410c6a41a0a3ca00106121000c8f010b2002200128021841d6a5ca0041092001411c6a28020028020c1100003a001820022001360210200241003a0019200241003602142002200041046a36020c200241106a2002410c6a41a0a3ca00106121012002200041086a36020c20012002410c6a41a0a3ca00106121000c8e010b2002200128021841dfa5ca0041092001411c6a28020028020c1100003a001820022001360210200241003a0019200241003602142002200041046a36020c200241106a2002410c6a41a0a3ca00106121012002200041086a36020c20012002410c6a41a0a3ca00106121000c8d010b2002200128021841e8a5ca00410a2001411c6a28020028020c1100003a001820022001360210200241003a0019200241003602142002200041046a36020c200241106a2002410c6a41a0a3ca00106121012002200041086a36020c20012002410c6a41a0a3ca00106121000c8c010b2002200128021841f2a5ca00410a2001411c6a28020028020c1100003a001820022001360210200241003a0019200241003602142002200041046a36020c200241106a2002410c6a41a0a3ca00106121012002200041086a36020c20012002410c6a41a0a3ca00106121000c8b010b2002200128021841fca5ca00410a2001411c6a28020028020c1100003a001820022001360210200241003a0019200241003602142002200041046a36020c200241106a2002410c6a41a0a3ca00106121012002200041086a36020c20012002410c6a41a0a3ca00106121000c8a010b200220012802184186a6ca00410a2001411c6a28020028020c1100003a001820022001360210200241003a0019200241003602142002200041046a36020c200241106a2002410c6a41a0a3ca00106121012002200041086a36020c20012002410c6a41a0a3ca00106121000c89010b200220012802184190a6ca0041082001411c6a28020028020c1100003a001820022001360210200241003a0019200241003602142002200041046a36020c200241106a2002410c6a41a0a3ca00106121012002200041086a36020c20012002410c6a41a0a3ca00106121000c88010b200220012802184198a6ca0041082001411c6a28020028020c1100003a001820022001360210200241003a0019200241003602142002200041046a36020c200241106a2002410c6a41a0a3ca00106121012002200041086a36020c20012002410c6a41a0a3ca00106121000c87010b2002200128021841a0a6ca0041082001411c6a28020028020c1100003a001820022001360210200241003a0019200241003602142002200041046a36020c200241106a2002410c6a41a0a3ca00106121012002200041086a36020c20012002410c6a41a0a3ca00106121000c86010b2002200128021841a8a6ca0041082001411c6a28020028020c1100003a001820022001360210200241003a0019200241003602142002200041046a36020c200241106a2002410c6a41a0a3ca00106121012002200041086a36020c20012002410c6a41a0a3ca00106121000c85010b2002200128021841b0a6ca0041092001411c6a28020028020c1100003a001820022001360210200241003a0019200241003602142002200041046a36020c200241106a2002410c6a41a0a3ca00106121012002200041086a36020c20012002410c6a41a0a3ca00106121000c84010b2002200128021841b9a6ca00410a2001411c6a28020028020c1100003a001820022001360210200241003a0019200241003602142002200041046a36020c200241106a2002410c6a41a0a3ca00106121012002200041086a36020c20012002410c6a41a0a3ca00106121000c83010b2002200128021841c3a6ca0041092001411c6a28020028020c1100003a001820022001360210200241003a0019200241003602142002200041046a36020c200241106a2002410c6a41a0a3ca00106121012002200041086a36020c20012002410c6a41a0a3ca00106121000c82010b2002200128021841cca6ca00410a2001411c6a28020028020c1100003a001820022001360210200241003a0019200241003602142002200041046a36020c200241106a2002410c6a41a0a3ca00106121012002200041086a36020c20012002410c6a41a0a3ca00106121000c81010b2002200128021841d6a6ca00410a2001411c6a28020028020c1100003a001820022001360210200241003a0019200241003602142002200041046a36020c200241106a2002410c6a41a0a3ca00106121012002200041086a36020c20012002410c6a41a0a3ca00106121000c80010b2002200128021841e0a6ca00410d2001411c6a28020028020c1100003a001820022001360210200241003a0019200241003602142002200041016a36020c200241106a2002410c6a41d0a4ca00106121000c7f0b2002200128021841eda6ca00410a2001411c6a28020028020c1100003a001820022001360210200241003a0019200241003602142002200041016a36020c200241106a2002410c6a41d0a4ca00106121000c7e0b2002200128021841f7a6ca0041082001411c6a28020028020c1100003a001820022001360210200241003a0019200241003602142002200041046a36020c200241106a2002410c6a4180a7ca00106121000c7d0b200220012802184190a7ca0041082001411c6a28020028020c1100003a001820022001360210200241003a0019200241003602142002200041086a36020c200241106a2002410c6a4198a7ca00106121000c7c0b2002200128021841a8a7ca0041082001411c6a28020028020c1100003a001820022001360210200241003a0019200241003602142002200041046a36020c200241106a2002410c6a41a0a3ca00106121000c7b0b2002200128021841b0a7ca0041082001411c6a28020028020c1100003a001820022001360210200241003a0019200241003602142002200041086a36020c200241106a2002410c6a41b8a7ca00106121000c7a0b2002200128021841c8a7ca0041062001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c790b2002200128021841cea7ca0041052001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c780b2002200128021841d3a7ca0041052001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c770b2002200128021841d8a7ca0041062001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c760b2002200128021841dea7ca0041062001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c750b2002200128021841e4a7ca0041062001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c740b2002200128021841eaa7ca0041062001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c730b2002200128021841f0a7ca0041062001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c720b2002200128021841f6a7ca0041062001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c710b2002200128021841fca7ca0041062001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c700b200220012802184182a8ca0041062001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c6f0b200220012802184188a8ca0041062001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c6e0b20022001280218418ea8ca0041052001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c6d0b200220012802184193a8ca0041052001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c6c0b200220012802184198a8ca0041062001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c6b0b20022001280218419ea8ca0041062001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c6a0b2002200128021841a4a8ca0041062001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c690b2002200128021841aaa8ca0041062001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c680b2002200128021841b0a8ca0041062001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c670b2002200128021841b6a8ca0041062001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c660b2002200128021841bca8ca0041062001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c650b2002200128021841c2a8ca0041062001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c640b2002200128021841c8a8ca0041052001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c630b2002200128021841cda8ca0041052001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c620b2002200128021841d2a8ca0041052001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c610b2002200128021841d7a8ca0041052001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c600b2002200128021841dca8ca0041052001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c5f0b2002200128021841e1a8ca0041052001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c5e0b2002200128021841e6a8ca0041052001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c5d0b2002200128021841eba8ca0041052001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c5c0b2002200128021841f0a8ca0041052001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c5b0b2002200128021841f5a8ca0041052001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c5a0b2002200128021841faa8ca0041052001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c590b2002200128021841ffa8ca0041052001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c580b200220012802184184a9ca0041062001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c570b20022001280218418aa9ca0041062001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c560b200220012802184190a9ca0041092001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c550b200220012802184199a9ca0041062001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c540b20022001280218419fa9ca0041062001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c530b2002200128021841a5a9ca0041062001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c520b2002200128021841aba9ca0041072001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c510b2002200128021841b2a9ca0041072001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c500b2002200128021841b9a9ca0041072001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c4f0b2002200128021841c0a9ca0041072001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c4e0b2002200128021841c7a9ca0041062001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c4d0b2002200128021841cda9ca0041052001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c4c0b2002200128021841d2a9ca0041062001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c4b0b2002200128021841d8a9ca0041062001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c4a0b2002200128021841dea9ca0041072001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c490b2002200128021841e5a9ca0041072001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c480b2002200128021841eca9ca0041072001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c470b2002200128021841f3a9ca0041072001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c460b2002200128021841faa9ca0041062001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c450b200220012802184180aaca0041062001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c440b200220012802184186aaca0041092001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c430b20022001280218418faaca0041062001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c420b200220012802184195aaca0041062001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c410b20022001280218419baaca0041062001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c400b2002200128021841a1aaca0041072001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c3f0b2002200128021841a8aaca0041072001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c3e0b2002200128021841afaaca0041072001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c3d0b2002200128021841b6aaca0041072001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c3c0b2002200128021841bdaaca0041062001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c3b0b2002200128021841c3aaca0041052001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c3a0b2002200128021841c8aaca0041062001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c390b2002200128021841ceaaca0041062001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c380b2002200128021841d4aaca0041072001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c370b2002200128021841dbaaca0041072001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c360b2002200128021841e2aaca0041072001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c350b2002200128021841e9aaca0041072001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c340b2002200128021841f0aaca0041062001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c330b2002200128021841f6aaca0041062001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c320b2002200128021841fcaaca0041072001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c310b200220012802184183abca0041082001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c300b20022001280218418babca0041082001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c2f0b200220012802184193abca00410a2001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c2e0b20022001280218419dabca0041072001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c2d0b2002200128021841a4abca0041062001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c2c0b2002200128021841aaabca0041062001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c2b0b2002200128021841b0abca0041062001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c2a0b2002200128021841b6abca0041062001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c290b2002200128021841bcabca0041062001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c280b2002200128021841c2abca0041062001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c270b2002200128021841c8abca00410b2001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c260b2002200128021841d3abca0041062001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c250b2002200128021841d9abca0041062001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c240b2002200128021841dfabca0041072001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c230b2002200128021841e6abca0041082001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c220b2002200128021841eeabca0041082001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c210b2002200128021841f6abca00410a2001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c200b200220012802184180acca0041072001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c1f0b200220012802184187acca0041062001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c1e0b20022001280218418dacca0041062001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c1d0b200220012802184193acca0041062001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c1c0b200220012802184199acca0041062001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c1b0b20022001280218419facca0041062001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c1a0b2002200128021841a5acca0041062001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c190b2002200128021841abacca00410b2001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c180b2002200128021841b6acca00410a2001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c170b2002200128021841c0acca00410c2001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c160b2002200128021841ccacca00410c2001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c150b2002200128021841d8acca00410c2001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c140b2002200128021841e4acca00410c2001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c130b2002200128021841f0acca00410d2001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c120b2002200128021841fdacca00410d2001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c110b20022001280218418aadca00410c2001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c100b200220012802184196adca00410c2001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c0f0b2002200128021841a2adca00410c2001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c0e0b2002200128021841aeadca00410c2001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c0d0b2002200128021841baadca00410e2001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c0c0b2002200128021841c8adca00410e2001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c0b0b2002200128021841d6adca00410e2001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c0a0b2002200128021841e4adca00410e2001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c090b2002200128021841f2adca00410c2001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c080b2002200128021841feadca00410e2001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c070b20022001280218418caeca00410e2001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c060b20022001280218419aaeca00410e2001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c050b2002200128021841a8aeca00410e2001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c040b2002200128021841b6aeca00410d2001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c030b2002200128021841c3aeca0041112001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c020b2002200128021841d4aeca0041112001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c010b2002200128021841e5aeca0041112001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000b20002d00082101024020002802042203450d00200141ff0171210441012101024020040d00024020034101470d0020002d0009450d00200028020022042d00004104710d004101210120042802184196a5c00041012004411c6a28020028020c1100000d010b2000280200220128021841e4d3ca0041012001411c6a28020028020c11000021010b200020013a00080b200241206a2400200141ff01714100470bc50201037f230041206b2202240002400240200028020022002d00004104470d002002200128021841a4afca0041082001411c6a28020028020c11000022003a001820022001360210200241003a0019200241003602140c010b2002200128021841acafca0041052001411c6a28020028020c1100003a001820022001360210200241003a0019200241003602142002200036020c200241106a2002410c6a4188afca001061210120022d0018210020022802142203450d00200041ff0171210441012100024020040d00024020034101470d0020012d0009450d00200128020022042d00004104710d004101210020042802184196a5c00041012004411c6a28020028020c1100000d010b2001280200220028021841e4d3ca0041012000411c6a28020028020c11000021000b200120003a00080b200241206a2400200041ff01714100470bc00201037f230041206b220224000240024020002d00004104470d002002200128021841a4afca0041082001411c6a28020028020c11000022003a001820022001360210200241003a0019200241003602140c010b2002200128021841acafca0041052001411c6a28020028020c1100003a001820022001360210200241003a0019200241003602142002200036020c200241106a2002410c6a4188afca001061210120022d0018210020022802142203450d00200041ff0171210441012100024020040d00024020034101470d0020012d0009450d00200128020022042d00004104710d004101210020042802184196a5c00041012004411c6a28020028020c1100000d010b2001280200220028021841e4d3ca0041012000411c6a28020028020c11000021000b200120003a00080b200241206a2400200041ff01714100470bc00201037f23004180016b220224002000280200210002400240024002400240200128020022034110710d0020002d0000210420034120710d012004ad42ff018341012001104521000c020b20002d00002104410021000340200220006a41ff006a2004410f712203413072200341d7006a2003410a491b3a00002000417f6a21002004410476410f7122040d000b20004180016a22044181014f0d022001410141bc8ac0004102200220006a4180016a410020006b104821000c010b410021000340200220006a41ff006a2004410f712203413072200341376a2003410a491b3a00002000417f6a21002004410476410f7122040d000b20004180016a22044181014f0d022001410141bc8ac0004102200220006a4180016a410020006b104821000b20024180016a240020000f0b2004418001104b000b2004418001104b000bcd0203027f017e017f23004180016b220224002000280200210002400240024002400240200128020022034110710d002000280200210020034120710d012000ac22042004423f8722047c2004852000417f73411f762001104521000c020b20002802002103410021000340200220006a41ff006a2003410f712205413072200541d7006a2005410a491b3a00002000417f6a2100200341047622030d000b20004180016a22034181014f0d022001410141bc8ac0004102200220006a4180016a410020006b104821000c010b410021030340200220036a41ff006a2000410f712205413072200541376a2005410a491b3a00002003417f6a2103200041047622000d000b20034180016a22004181014f0d022001410141bc8ac0004102200220036a4180016a410020036b104821000b20024180016a240020000f0b2003418001104b000b2000418001104b000bcd0202027f027e23004180016b220224002000280200210002400240024002400240200128020022034110710d002000290300210420034120710d0120042004423f8722057c2005852004427f552001104521000c020b20002903002104410021000340200220006a41ff006a2004a7410f712203413072200341d7006a2003410a491b3a00002000417f6a2100200442048822044200520d000b20004180016a22034181014f0d022001410141bc8ac0004102200220006a4180016a410020006b104821000c010b410021000340200220006a41ff006a2004a7410f712203413072200341376a2003410a491b3a00002000417f6a2100200442048822044200520d000b20004180016a22034181014f0d022001410141bc8ac0004102200220006a4180016a410020006b104821000b20024180016a240020000f0b2003418001104b000b2003418001104b000b8a0201027f230041106b2202240020002802002802002100200128021841b0a3ca00410b2001411c6a28020028020c1100002103200241003a0005200220033a0004200220013602002002200036020c200241bba3ca0041052002410c6a41c0a3ca00105b21012002200041086a36020c200141d0a3ca0041072002410c6a41a0a3ca00105b1a20022d00042101024020022d0005450d00200141ff0171210041012101024020000d0020022802002201411c6a28020028020c210020012802182103024020012d00004104710d0020034190a5c0004102200011000021010c010b20034192a5c0004101200011000021010b200220013a00040b200241106a2400200141ff01714100470bcc0101047f230041106b220224002000280200220041046a2802002103200028020021004101210420012802184199a5c00041012001411c6a28020028020c1100002105200241003a0005200220053a00042002200136020002402003450d002003410274210103402002200036020c20022002410c6a41f8aeca0010621a200041046a21002001417c6a22010d000b20022d000421050b0240200541ff01710d00200228020022002802184198a5c00041012000411c6a28020028020c11000021040b200241106a240020040b8c0902047f017e230041106b2202240002400240024020010d00200041ac013a00000c010b024002400240024020012d00002203414f6a41fb004f0d000c010b02400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020030e312c2c0001022c2c0304052c06072c2c08090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292c0b20012d00012104410221030c2b0b20012d00012104410321030c2a0b20012d00012104410421030c290b200141046a2802002105410721030c270b200141046a2802002105410821030c260b200141046a2802002101410c102d2205450d28200241086a2001280200200141046a28020010ba06200229030821062005200128020836020820052006370200410921030c250b200141046a2802002105410b21030c240b200141046a280200210520012d00012104410c21030c240b200141046a2802002105410f21030c220b200141046a2802002105411021030c210b200141046a2802002105411121030c200b200141046a2802002105411221030c1f0b200141046a2802002105411321030c1e0b200141046a280200210520013502082106411421030c1d0b200141046a280200210520013502082106411521030c1c0b200141046a280200210520013502082106411621030c1b0b200141046a280200210520013502082106411721030c1a0b200141046a280200210520013502082106411821030c190b200141046a280200210520013502082106411921030c180b200141046a280200210520013502082106411a21030c170b200141046a280200210520013502082106411b21030c160b200141046a280200210520013502082106411c21030c150b200141046a280200210520013502082106411d21030c140b200141046a280200210520013502082106411e21030c130b200141046a280200210520013502082106411f21030c120b200141046a280200210520013502082106412021030c110b200141046a280200210520013502082106412121030c100b200141046a280200210520013502082106412221030c0f0b200141046a280200210520013502082106412321030c0e0b200141046a280200210520013502082106412421030c0d0b200141046a280200210520013502082106412521030c0c0b200141046a280200210520013502082106412621030c0b0b200141046a280200210520013502082106412721030c0a0b200141046a280200210520013502082106412821030c090b200141046a280200210520013502082106412921030c080b200141046a280200210520013502082106412a21030c070b20012d00012104412b21030c070b20012d00012104412c21030c060b200141046a2802002105412d21030c040b20012903082106412e21030c020b200141046a2802002105412f21030c020b20012903082106413021030b0b0b200020043a0001200020033a0000200041086a2006370300200041046a20053602000b200241106a24000f0b1036000ba20201037f0240024002400240200241ffffffff03712002470d0020024102742203417f4c0d000240024020030d0041042104200221030c010b2003102d2204450d022003410276220320024f0d00200341017422052002200520024b1b220541ffffffff03712005470d03200541027422054100480d030240024020030d002005102d21040c010b200420034102742005103121040b2004450d02200541027621030b200420012002410274220510e80621010240024020032002470d00200121040c010b20032002490d04024020020d0041002102410421042003450d012001102f0c010b20012003410274200510312204450d020b20002002360204200020043602000f0b103d000b1036000b1038000b41ebafca00412441f8b4ca001039000bba0201037f230041106b220224000240024020002802000d00200220012802184193b0ca0041042001411c6a28020028020c11000022003a000820022001360200200241003a0009200241003602040c010b20022001280218418fb0ca0041042001411c6a28020028020c1100003a000820022001360200200241003a0009200241003602042002200036020c20022002410c6a4198b0ca001061210120022d0008210020022802042203450d00200041ff0171210441012100024020040d00024020034101470d0020012d0009450d00200128020022042d00004104710d004101210020042802184196a5c00041012004411c6a28020028020c1100000d010b2001280200220028021841e4d3ca0041012000411c6a28020028020c11000021000b200120003a00080b200241106a2400200041ff01714100470b880301067f02402001450d00034020002802940321002001417f6a22010d000b0b02402002450d0041002103034002400240200320002f01064f0d0041002104200021010c010b41002104034002400240024020004190bdc600460d00200028020022010d0141002103410021010c020b41edb3ca00412841f8b4ca001039000b200441016a210420002f010421030b2000102f20012100200320012f01064f0d000b0b200341016a2105200120034105746a220041c4006a2802002106200041386a2802002107200041346a28020021080240024020040d0020012100200521030c010b200120054102746a4194036a2802002100410021032004417f6a2201450d00034020002802940321002001417f6a22010d000b0b20064102460d012002417f6a210202402007450d002008102f0b20020d000b0b0240024020004190bdc600460d00200028020021012000102f2001450d00034020014190bdc600460d02200128020021002001102f2000210120000d000b0b0f0b41edb3ca00412841f8b4ca001039000bab0902027f017e230041106b220224000240024020012d00002203414f6a41fb00490d0002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020030e312a2a0001022a2a0304052a06072a2a08090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a0b200020012d00013a0001410221030c290b200020012d00013a0001410321030c280b200020012d00013a0001410421030c270b200041046a200141046a280200360200410721030c260b200041046a200141046a280200360200410821030c250b200141046a2802002103410c102d2201450d25200241086a2003280200200341046a28020010ba06200229030821042001200328020836020820012004370200200041046a2001360200410921030c240b200041046a200141046a280200360200410b21030c230b200020012d00013a0001200041046a200141046a280200360200410c21030c220b200041046a200141046a280200360200410f21030c210b200041046a200141046a280200360200411021030c200b200041046a200141046a280200360200411121030c1f0b200041046a200141046a280200360200411221030c1e0b200041046a200141046a280200360200411321030c1d0b200041046a200141046a290200370200411421030c1c0b200041046a200141046a290200370200411521030c1b0b200041046a200141046a290200370200411621030c1a0b200041046a200141046a290200370200411721030c190b200041046a200141046a290200370200411821030c180b200041046a200141046a290200370200411921030c170b200041046a200141046a290200370200411a21030c160b200041046a200141046a290200370200411b21030c150b200041046a200141046a290200370200411c21030c140b200041046a200141046a290200370200411d21030c130b200041046a200141046a290200370200411e21030c120b200041046a200141046a290200370200411f21030c110b200041046a200141046a290200370200412021030c100b200041046a200141046a290200370200412121030c0f0b200041046a200141046a290200370200412221030c0e0b200041046a200141046a290200370200412321030c0d0b200041046a200141046a290200370200412421030c0c0b200041046a200141046a290200370200412521030c0b0b200041046a200141046a290200370200412621030c0a0b200041046a200141046a290200370200412721030c090b200041046a200141046a290200370200412821030c080b200041046a200141046a290200370200412921030c070b200041046a200141046a290200370200412a21030c060b200020012d00013a0001412b21030c050b200020012d00013a0001412c21030c040b200041046a200141046a280200360200412d21030c030b200041086a200141086a290300370300412e21030c020b200041046a200141046a280200360200412f21030c010b200041086a200141086a290300370300413021030b200020033a0000200241106a24000f0b1036000b8c0301067f230041106b220224000240024002400240200041046a2802002203200041086a28020022046b20012802042205200128020022066b4104762207490d00200028020021030c010b200420076a22062004490d02200341017422052006200520064b1b220641ffffffff00712006470d02200641047422064100480d020240024020030d002006102d21030c010b200028020020034104742006103121030b2003450d0120002003360200200041046a2006410476360200200041086a280200210420012802042105200128020021060b0240024020062005470d00410021060c010b2001200641106a3602000b2002200610b906024020022d000041ac01460d00200320044104746a2106034020062002290300370300200641086a200241086a29030037030002400240200128020022052001280204470d00410021050c010b2001200541106a3602000b200441016a2104200641106a21062002200510b90620022d000041ac01470d000b0b200041086a2004360200200241106a24000f0b1036000b1038000bcc0201027f230041106b2202240020002802002802002100200128021841c2b5ca0041052001411c6a28020028020c1100002103200241003a0005200220033a00042002200136020020022000410c6a36020c200241c7b5ca00410e2002410c6a41d8b5ca00105b21012002200036020c200141e8b5ca0041092002410c6a41f4b5ca00105b21012002200041046a36020c20014184b6ca00410c2002410c6a41f4b5ca00105b21012002200041086a36020c20014190b6ca00410c2002410c6a41f4b5ca00105b1a20022d00042100024020022d0005450d00200041ff0171210141012100024020010d0020022802002200411c6a28020028020c210120002802182103024020002d00004104710d0020034190a5c0004102200111000021000c010b20034192a5c0004101200111000021000b200220003a00040b200241106a2400200041ff01714100470bdd60010c7f230041a0016b22032400200320013602242002280208220441546a2105200241106a280200220641306c21010240024002400240024002400240024003402001450d01200141506a21012005412c6a2107200541306a2208210520072d00004104470d000b200641306c2101200441546a210503402001450d02200141506a21012005412c6a2107200541306a2209210520072d0000410c470d000b200641306c2101200441546a210503402001450d04200141506a21012005412c6a2107200541306a2204210520072d00004102470d000b024041002802a4e24a4105490d00200341013602442003200341246a36024041002802b0e24a210141002802ace24a210541002802a8e24a210720034198016a41980136020020034190016a42ed808080103703002003418c016a41bcb8ca0036020020034184016a422537020020034180016a41b3b9ca00360200200341f8006a4201370300200341e8006a4201370300200341e0006a410a360200200341f4006a200341c0006a360200200341d0b6ca00360264200341a9b9ca0036025c20034105360258200541cca5c000200741024622071b200341d8006a200141e4a5c00020071b2802101102000b200341186a200810d603200328021c200328022422014d0d04200328021820014102746a2201450d04200341106a200410d60302402003280214200128020022014d0d00200328021020014104746a22010d060b4125102d2201450d072001411d6a41002900f5b64a370000200141186a41002900f0b64a370000200141106a41002900e8b64a370000200141086a41002900e0b64a370000200141002900d8b64a370000200041086a42a5808080d00437020020002001360204200041013602000c060b4113102d22010d010c060b410f102d2201450d05200141076a41002900b6b64a370000200141002900afb64a370000200041086a428f808080f00137020020002001360204200041013602000c040b2001410f6a41002800abb64a360000200141086a41002900a4b64a3700002001410029009cb64a370000200041086a4293808080b00237020020002001360204200041013602000c030b410f102d2201450d03200141076a41002900c5b64a370000200141002900beb64a370000200041086a428f808080f00137020020002001360204200041013602000c020b4125102d2201450d022001411d6a41002900f5b64a370000200141186a41002900f0b64a370000200141106a41002900e8b64a370000200141086a41002900e0b64a370000200141002900d8b64a370000200041086a42a5808080d00437020020002001360204200041013602000c010b0240200941086a280200200328022422054b0d004127102d2201450d022001411f6a41002900a7b74a370000200141186a41002900a0b74a370000200141106a4100290098b74a370000200141086a4100290090b74a37000020014100290088b74a370000200041086a42a7808080f00437020020002001360204200041013602000c010b20092802002109200341286a41086a420037030020034280808080c00037032820012d000d2107410021012003410036024820032007410447220a3602442003200a360240200341003a004c02400240024002400240024041002802a4e24a41044b0d00200341d8006a41086a200341c0006a41086a29030037030020032003290340370358200341286a410472210b200341d8006a21070c010b2003413a3602542003200341c0006a36025041002802b0e24a210141002802ace24a210741002802a8e24a210820034198016a41cb0036020020034190016a42ed808080103703002003418c016a41bcb8ca0036020020034184016a422537020020034180016a41b3b9ca00360200200341f8006a4201370300200341e8006a4201370300200341d8006a41086a2206410a360200200341f4006a200341d0006a36020020034180b7ca00360264200341a9b9ca0036025c20034105360258200741cca5c000200841024622081b200341d8006a200141e4a5c00020081b28021011020020032802342108200328023021012006200341c0006a41086a29030037030020032003290340370358200341286a410472210b200341d8006a210720082001470d010b200141016a22082001490d01200141017422062008200620084b1b220841ffffffff00712008470d01200841047422084100480d010240024020010d002008102d21010c010b200b28020020014104742008103121010b2001450d05200b200136020020032008410476360230200328023421080b200b28020020084104746a22012007290200370200200141086a200741086a2902003702002003200328023441016a360234410021072009200541186c6a2201280214450d022009200541186c6a410c6a2109200141146a2108200341d8006a410472210c410021074100210103400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240200328022820074d0d00200341d8006a200341286a410010c20620032802584101460d0120072003280228200328025c2d000c1b21070b2001200828020022054f0d1d2003200928020020014104746a220536023c024041002802a4e24a4105490d002003413236024420032003413c6a36024041002802b0e24a210541002802ace24a210641002802a8e24a210d200341c90136029801200342ed8080801037039001200341bcb8ca0036028c012003422537028401200341b3b9ca003602800120034201370378200342013703682003419cdfca003602642003410a360260200341a9b9ca0036025c20034105360258200541e4a5c000200d410246220d1b28021021052003200341c0006a360274200641cca5c000200d1b200341d8006a2005110200200328023c21050b20052d000022060eac01033201010132020405060708090a0b0c0d0e0f10111111111111111111111111111112121212121212121213141515151516171717171717171717171617171717171717171717171717171717171717171717181818191919191919191919191919191919181818191919191919191919191919191919181818181818181919191919191918181818181818191919191919191a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a030b200041013602002000200c2902003702042000410c6a200c41086a2802003602000c340b20052d000121052003200328022836024820032005410447220536024020032006410347200571360244200341003a004c024041002802a4e24a4105490d002003413a3602542003200341c0006a36025041002802b0e24a210541002802ace24a210641002802a8e24a210d200341cb0036029801200342ed8080801037039001200341bcb8ca0036028c012003422537028401200341b3b9ca0036028001200342013703782003420137036820034180b7ca003602642003410a360260200341a9b9ca0036025c20034105360258200541e4a5c000200d410246220d1b28021021052003200341d0006a360274200641cca5c000200d1b200341d8006a20051102000b200341d8006a41086a2206200341c0006a41086a290300370300200320032903403703580240200328023422052003280230470d00200541016a220d2005490d332005410174220e200d200e200d4b1b220d41ffffffff0071200d470d33200d410474220d4100480d330240024020050d00200d102d21050c010b200b2802002005410474200d103121050b2005450d37200b20053602002003200d410476360230200328023421050b200b28020020054104746a22052003290358370200200541086a20062903003702002003200328023441016a3602340c300b41002105024041002802a4e24a4105490d00024020032802342206417f6a220d20064b0d00200b280200200d4104746a4100200d2006491b21050b2003413b360254200320053602402003200341c0006a36025041002802b0e24a210541002802ace24a210641002802a8e24a210d200341d30036029801200342ed8080801037039001200341bcb8ca0036028c012003422537028401200341b3b9ca00360280012003420137037820034201370368200341b0b7ca003602642003410a360260200341a9b9ca0036025c20034105360258200541e4a5c000200d410246220d1b28021021052003200341d0006a360274200641cca5c000200d1b200341d8006a20051102000b024020032802342205450d0020032005417f6a2205360234200b28020020054104746a22052d000c4102470d1a0b4117102d2201450d352001410f6a41002900c7b74a370000200141086a41002900c0b74a370000200141002900b8b74a370000200041086a4297808080f00237020020002001360204200041013602000c320b024041002802a4e24a4105490d0041002802b0e24a210541002802ace24a210641002802a8e24a210d200341c10036029801200342ed8080801037039001200341bcb8ca0036028c012003422537028401200341b3b9ca003602800120034200370378200341c8e1ca0036027420034201370368200341d0b7ca003602642003410a360260200341a9b9ca0036025c20034105360258200641cca5c000200d410246220d1b200341d8006a200541e4a5c000200d1b2802101102000b024020032802342205417f6a220620054f0d00200620054d0d180b4117102d2201450d342001410f6a41002900c7b74a370000200141086a41002900c0b74a370000200141002900b8b74a370000200041086a4297808080f00237020020002001360204200041013602000c310b200341d8006a200341286a200541046a28020010c20620032802584101460d19200341d8006a200341286a200328025c28020410c306024020032802580d00024041002802a4e24a4105490d0041002802b0e24a210541002802ace24a210641002802a8e24a210d200341c10036029801200342ed8080801037039001200341bcb8ca0036028c012003422537028401200341b3b9ca003602800120034200370378200341c8e1ca0036027420034201370368200341d0b7ca003602642003410a360260200341a9b9ca0036025c20034105360258200641cca5c000200d410246220d1b200341d8006a200541e4a5c000200d1b2802101102000b0240024020032802342205417f6a220620054f0d00200620054d0d010b4117102d2201450d352001410f6a41002900c7b74a370000200141086a41002900c0b74a370000200141002900b8b74a370000200041086a4297808080f00237020020002001360204200041013602000c320b200b28020020064104746a41013a000c0c2e0b20002003290358370204200041013602002000410c6a200341e0006a2802003602000c300b200341d8006a200341286a200541046a28020010c20620032802584101460d19200341d8006a200341286a200328025c280204220510c30620032802580d1a200341d8006a200341286a410110c30620032802580d1b20032005360250024041002802a4e24a4105490d00200341013602442003200341d0006a36024041002802b0e24a210541002802ace24a210641002802a8e24a210d200341e30036029801200342ed8080801037039001200341bcb8ca0036028c012003422537028401200341b3b9ca00360280012003420137037820034201370368200341d8b7ca003602642003410a360260200341a9b9ca0036025c20034105360258200541e4a5c000200d410246220d1b28021021052003200341c0006a360274200641cca5c000200d1b200341d8006a2005110200200328025021050b02402003280228220620056a22052006490d00200320053602280c2d0b410e102d2201450d32200141066a41002900e6b74a370000200141002900e0b74a370000200041086a428e808080e00137020020002001360204200041013602000c2f0b200341d8006a200341286a200541046a28020028020810c20620032802584101460d1b200328025c280204210d2005280204220628020441027421052006280200210602400340024020050d00200341d8006a200341286a200d10c30620032802580d20024041002802a4e24a4105490d0041002802b0e24a210541002802ace24a210641002802a8e24a210d200341c10036029801200342ed8080801037039001200341bcb8ca0036028c012003422537028401200341b3b9ca003602800120034200370378200341c8e1ca0036027420034201370368200341d0b7ca003602642003410a360260200341a9b9ca0036025c20034105360258200641cca5c000200d410246220d1b200341d8006a200541e4a5c000200d1b2802101102000b20032802342205417f6a220620054f0d02200620054b0d02200b28020020064104746a41013a000c0c2e0b200341d8006a200341286a200628020010c20620032802584101460d1e2005417c6a2105200641046a2106200328025c280204200d460d000b4127102d2201450d322001411f6a410029008db84a370000200141186a4100290086b84a370000200141106a41002900feb74a370000200141086a41002900f6b74a370000200141002900eeb74a370000200041086a42a7808080f00437020020002001360204200041013602000c2f0b4117102d2201450d312001410f6a41002900c7b74a370000200141086a41002900c0b74a370000200141002900b8b74a370000200041086a4297808080f00237020020002001360204200041013602000c2e0b200341d8006a200341286a200a10c306024020032802580d00024041002802a4e24a4105490d0041002802b0e24a210541002802ace24a210641002802a8e24a210d200341c10036029801200342ed8080801037039001200341bcb8ca0036028c012003422537028401200341b3b9ca003602800120034200370378200341c8e1ca0036027420034201370368200341d0b7ca003602642003410a360260200341a9b9ca0036025c20034105360258200641cca5c000200d410246220d1b200341d8006a200541e4a5c000200d1b2802101102000b0240024020032802342205417f6a220620054f0d00200620054d0d010b4117102d2201450d322001410f6a41002900c7b74a370000200141086a41002900c0b74a370000200141002900b8b74a370000200041086a4297808080f00237020020002001360204200041013602000c2f0b200b28020020064104746a41013a000c0c2b0b20002003290358370204200041013602002000410c6a200341e0006a2802003602000c2d0b200341d8006a200541046a280200200210c40620032802584101460d1c200341d8006a200341286a200328025c220528020810c30620032802580d1d200320052d000d4104472205360250024041002802a4e24a4105490d00200341013602442003200341d0006a36024041002802b0e24a210541002802ace24a210641002802a8e24a210d200341e30036029801200342ed8080801037039001200341bcb8ca0036028c012003422537028401200341b3b9ca00360280012003420137037820034201370368200341d8b7ca003602642003410a360260200341a9b9ca0036025c20034105360258200541e4a5c000200d410246220d1b28021021052003200341c0006a360274200641cca5c000200d1b200341d8006a2005110200200328025021050b02402003280228220620056a22052006490d00200320053602280c2a0b410e102d2201450d2f200141066a41002900e6b74a370000200141002900e0b74a370000200041086a428e808080e00137020020002001360204200041013602000c2c0b200341086a200410d60302400240200328020c200541046a28020022054d0d002003280208220620054104746a220d450d00200341d8006a200341286a200620054104746a28020810c30620032802580d1f2003200d2d000d4104472205360250024041002802a4e24a4105490d00200341013602442003200341d0006a36024041002802b0e24a210541002802ace24a210641002802a8e24a210d200341e30036029801200342ed8080801037039001200341bcb8ca0036028c012003422537028401200341b3b9ca00360280012003420137037820034201370368200341d8b7ca003602642003410a360260200341a9b9ca0036025c20034105360258200541e4a5c000200d410246220d1b28021021052003200341c0006a360274200641cca5c000200d1b200341d8006a2005110200200328025021050b2003280228220620056a22052006490d01200320053602280c2a0b410e102d2201450d2f200141066a410029009bb84a37000020014100290095b84a370000200041086a428e808080e00137020020002001360204200041013602000c2c0b410e102d2201450d2e200141066a41002900e6b74a370000200141002900e0b74a370000200041086a428e808080e00137020020002001360204200041013602000c2b0b200341d8006a200341286a410110c3062003280258450d2720002003290358370204200041013602002000410c6a200341e0006a2802003602000c2a0b200341d8006a200341286a410210c30620032802580d1c41012105200341d8006a200341286a410110c30620032802580d1d20034101360250024041002802a4e24a4105490d00200341013602442003200341d0006a36024041002802b0e24a210541002802ace24a210641002802a8e24a210d200341e30036029801200342ed8080801037039001200341bcb8ca0036028c012003422537028401200341b3b9ca00360280012003420137037820034201370368200341d8b7ca003602642003410a360260200341a9b9ca0036025c20034105360258200541e4a5c000200d410246220d1b28021021052003200341c0006a360274200641cca5c000200d1b200341d8006a2005110200200328025021050b02402003280228220620056a22052006490d00200320053602280c270b410e102d2201450d2c200141066a41002900e6b74a370000200141002900e0b74a370000200041086a428e808080e00137020020002001360204200041013602000c290b4101210520034101360250024041002802a4e24a4105490d00200341013602442003200341d0006a36024041002802b0e24a210541002802ace24a210641002802a8e24a210d200341e30036029801200342ed8080801037039001200341bcb8ca0036028c012003422537028401200341b3b9ca00360280012003420137037820034201370368200341d8b7ca003602642003410a360260200341a9b9ca0036025c20034105360258200541e4a5c000200d410246220d1b28021021052003200341c0006a360274200641cca5c000200d1b200341d8006a2005110200200328025021050b02402003280228220620056a22052006490d00200320053602280c260b410e102d2201450d2b200141066a41002900e6b74a370000200141002900e0b74a370000200041086a428e808080e00137020020002001360204200041013602000c280b200341d8006a200341286a410110c3062003280258450d2420002003290358370204200041013602002000410c6a200341e0006a2802003602000c270b41012105200341d8006a200341286a410110c30620032802580d1b20034101360250024041002802a4e24a4105490d00200341013602442003200341d0006a36024041002802b0e24a210541002802ace24a210641002802a8e24a210d200341e30036029801200342ed8080801037039001200341bcb8ca0036028c012003422537028401200341b3b9ca00360280012003420137037820034201370368200341d8b7ca003602642003410a360260200341a9b9ca0036025c20034105360258200541e4a5c000200d410246220d1b28021021052003200341c0006a360274200641cca5c000200d1b200341d8006a2005110200200328025021050b02402003280228220620056a22052006490d00200320053602280c240b410e102d2201450d29200141066a41002900e6b74a370000200141002900e0b74a370000200041086a428e808080e00137020020002001360204200041013602000c260b4101210520034101360250024041002802a4e24a4105490d00200341013602442003200341d0006a36024041002802b0e24a210541002802ace24a210641002802a8e24a210d200341e30036029801200342ed8080801037039001200341bcb8ca0036028c012003422537028401200341b3b9ca00360280012003420137037820034201370368200341d8b7ca003602642003410a360260200341a9b9ca0036025c20034105360258200541e4a5c000200d410246220d1b28021021052003200341c0006a360274200641cca5c000200d1b200341d8006a2005110200200328025021050b02402003280228220620056a22052006490d00200320053602280c230b410e102d2201450d28200141066a41002900e6b74a370000200141002900e0b74a370000200041086a428e808080e00137020020002001360204200041013602000c250b200341d8006a200341286a410110c3062003280258450d2120002003290358370204200041013602002000410c6a200341e0006a2802003602000c240b41012105200341d8006a200341286a410110c30620032802580d1920034101360250024041002802a4e24a4105490d00200341013602442003200341d0006a36024041002802b0e24a210541002802ace24a210641002802a8e24a210d200341e30036029801200342ed8080801037039001200341bcb8ca0036028c012003422537028401200341b3b9ca00360280012003420137037820034201370368200341d8b7ca003602642003410a360260200341a9b9ca0036025c20034105360258200541e4a5c000200d410246220d1b28021021052003200341c0006a360274200641cca5c000200d1b200341d8006a2005110200200328025021050b02402003280228220620056a22052006490d00200320053602280c210b410e102d2201450d26200141066a41002900e6b74a370000200141002900e0b74a370000200041086a428e808080e00137020020002001360204200041013602000c230b200341d8006a200341286a410210c3062003280258450d1f20002003290358370204200041013602002000410c6a200341e0006a2802003602000c220b4101210520034101360250024041002802a4e24a4105490d00200341013602442003200341d0006a36024041002802b0e24a210541002802ace24a210641002802a8e24a210d200341e30036029801200342ed8080801037039001200341bcb8ca0036028c012003422537028401200341b3b9ca00360280012003420137037820034201370368200341d8b7ca003602642003410a360260200341a9b9ca0036025c20034105360258200541e4a5c000200d410246220d1b28021021052003200341c0006a360274200641cca5c000200d1b200341d8006a2005110200200328025021050b02402003280228220620056a22052006490d00200320053602280c1f0b410e102d2201450d24200141066a41002900e6b74a370000200141002900e0b74a370000200041086a428e808080e00137020020002001360204200041013602000c210b41012105200341d8006a200341286a410110c30620032802580d1720034101360250024041002802a4e24a4105490d00200341013602442003200341d0006a36024041002802b0e24a210541002802ace24a210641002802a8e24a210d200341e30036029801200342ed8080801037039001200341bcb8ca0036028c012003422537028401200341b3b9ca00360280012003420137037820034201370368200341d8b7ca003602642003410a360260200341a9b9ca0036025c20034105360258200541e4a5c000200d410246220d1b28021021052003200341c0006a360274200641cca5c000200d1b200341d8006a2005110200200328025021050b02402003280228220620056a22052006490d00200320053602280c1e0b410e102d2201450d23200141066a41002900e6b74a370000200141002900e0b74a370000200041086a428e808080e00137020020002001360204200041013602000c200b4101210520034101360250024041002802a4e24a4105490d00200341013602442003200341d0006a36024041002802b0e24a210541002802ace24a210641002802a8e24a210d200341e30036029801200342ed8080801037039001200341bcb8ca0036028c012003422537028401200341b3b9ca00360280012003420137037820034201370368200341d8b7ca003602642003410a360260200341a9b9ca0036025c20034105360258200541e4a5c000200d410246220d1b28021021052003200341c0006a360274200641cca5c000200d1b200341d8006a2005110200200328025021050b02402003280228220620056a22052006490d00200320053602280c1d0b410e102d2201450d22200141066a41002900e6b74a370000200141002900e0b74a370000200041086a428e808080e00137020020002001360204200041013602000c1f0b41012105200341d8006a200341286a410110c30620032802580d1620034101360250024041002802a4e24a4105490d00200341013602442003200341d0006a36024041002802b0e24a210541002802ace24a210641002802a8e24a210d200341e30036029801200342ed8080801037039001200341bcb8ca0036028c012003422537028401200341b3b9ca00360280012003420137037820034201370368200341d8b7ca003602642003410a360260200341a9b9ca0036025c20034105360258200541e4a5c000200d410246220d1b28021021052003200341c0006a360274200641cca5c000200d1b200341d8006a2005110200200328025021050b02402003280228220620056a22052006490d00200320053602280c1c0b410e102d2201450d21200141066a41002900e6b74a370000200141002900e0b74a370000200041086a428e808080e00137020020002001360204200041013602000c1e0b200341d8006a200341286a410210c30620032802580d164101210520034101360250024041002802a4e24a4105490d00200341013602442003200341d0006a36024041002802b0e24a210541002802ace24a210641002802a8e24a210d200341e30036029801200342ed8080801037039001200341bcb8ca0036028c012003422537028401200341b3b9ca00360280012003420137037820034201370368200341d8b7ca003602642003410a360260200341a9b9ca0036025c20034105360258200541e4a5c000200d410246220d1b28021021052003200341c0006a360274200641cca5c000200d1b200341d8006a2005110200200328025021050b02402003280228220620056a22052006490d00200320053602280c1b0b410e102d2201450d20200141066a41002900e6b74a370000200141002900e0b74a370000200041086a428e808080e00137020020002001360204200041013602000c1d0b41012105200341d8006a200341286a410110c30620032802580d1620034101360250024041002802a4e24a4105490d00200341013602442003200341d0006a36024041002802b0e24a210541002802ace24a210641002802a8e24a210d200341e30036029801200342ed8080801037039001200341bcb8ca0036028c012003422537028401200341b3b9ca00360280012003420137037820034201370368200341d8b7ca003602642003410a360260200341a9b9ca0036025c20034105360258200541e4a5c000200d410246220d1b28021021052003200341c0006a360274200641cca5c000200d1b200341d8006a2005110200200328025021050b02402003280228220620056a22052006490d00200320053602280c1a0b410e102d2201450d1f200141066a41002900e6b74a370000200141002900e0b74a370000200041086a428e808080e00137020020002001360204200041013602000c1c0b200341d8006a200341286a410210c30620032802580d164101210520034101360250024041002802a4e24a4105490d00200341013602442003200341d0006a36024041002802b0e24a210541002802ace24a210641002802a8e24a210d200341e30036029801200342ed8080801037039001200341bcb8ca0036028c012003422537028401200341b3b9ca00360280012003420137037820034201370368200341d8b7ca003602642003410a360260200341a9b9ca0036025c20034105360258200541e4a5c000200d410246220d1b28021021052003200341c0006a360274200641cca5c000200d1b200341d8006a2005110200200328025021050b02402003280228220620056a22052006490d00200320053602280c190b410e102d2201450d1e200141066a41002900e6b74a370000200141002900e0b74a370000200041086a428e808080e00137020020002001360204200041013602000c1b0b41012105200341d8006a200341286a410110c30620032802580d1620034101360250024041002802a4e24a4105490d00200341013602442003200341d0006a36024041002802b0e24a210541002802ace24a210641002802a8e24a210d200341e30036029801200342ed8080801037039001200341bcb8ca0036028c012003422537028401200341b3b9ca00360280012003420137037820034201370368200341d8b7ca003602642003410a360260200341a9b9ca0036025c20034105360258200541e4a5c000200d410246220d1b28021021052003200341c0006a360274200641cca5c000200d1b200341d8006a2005110200200328025021050b02402003280228220620056a22052006490d00200320053602280c180b410e102d2201450d1d200141066a41002900e6b74a370000200141002900e0b74a370000200041086a428e808080e00137020020002001360204200041013602000c1a0b200b28020020064104746a41013a000c0c160b20052802002106200320052802082205360240024041002802a4e24a4105490d00200341013602542003200341c0006a36025041002802b0e24a210541002802ace24a210d41002802a8e24a210e200341db0036029801200342ed8080801037039001200341bcb8ca0036028c012003422537028401200341b3b9ca00360280012003420137037820034201370368200341a4b8ca003602642003410a360260200341a9b9ca0036025c20034105360258200541e4a5c000200e410246220e1b28021021052003200341d0006a360274200d41cca5c000200e1b200341d8006a2005110200200328024021050b2003200536022820032006360250024041002802a4e24a4105490d00200341013602442003200341d0006a36024041002802b0e24a210541002802ace24a210641002802a8e24a210d200341e30036029801200342ed8080801037039001200341bcb8ca0036028c012003422537028401200341b3b9ca00360280012003420137037820034201370368200341d8b7ca003602642003410a360260200341a9b9ca0036025c20034105360258200541e4a5c000200d410246220d1b28021021052003200341c0006a360274200641cca5c000200d1b200341d8006a200511020020032802282105200328025021060b0240200520066a22062005490d00200320063602280c160b410e102d2201450d1b200141066a41002900e6b74a370000200141002900e0b74a370000200041086a428e808080e00137020020002001360204200041013602000c180b41acb8ca0020012005103b000b200041013602002000200c2902003702042000410c6a200c41086a2802003602000c160b200041013602002000200c2902003702042000410c6a200c41086a2802003602000c150b20002003290358370204200041013602002000410c6a200341e0006a2802003602000c140b20002003290358370204200041013602002000410c6a200341e0006a2802003602000c130b200041013602002000200c2902003702042000410c6a200c41086a2802003602000c120b200041013602002000200c2902003702042000410c6a200c41086a2802003602000c110b20002003290358370204200041013602002000410c6a200341e0006a2802003602000c100b200041013602002000200c2902003702042000410c6a200c41086a2802003602000c0f0b20002003290358370204200041013602002000410c6a200341e0006a2802003602000c0e0b20002003290358370204200041013602002000410c6a200341e0006a2802003602000c0d0b20002003290358370204200041013602002000410c6a200341e0006a2802003602000c0c0b20002003290358370204200041013602002000410c6a200341e0006a2802003602000c0b0b20002003290358370204200041013602002000410c6a200341e0006a2802003602000c0a0b20002003290358370204200041013602002000410c6a200341e0006a2802003602000c090b20002003290358370204200041013602002000410c6a200341e0006a2802003602000c080b20002003290358370204200041013602002000410c6a200341e0006a2802003602000c070b20002003290358370204200041013602002000410c6a200341e0006a2802003602000c060b20002003290358370204200041013602002000410c6a200341e0006a2802003602000c050b20002003290358370204200041013602002000410c6a200341e0006a2802003602000c040b20002003290358370204200041013602002000410c6a200341e0006a2802003602000c030b200141016a22012008280200490d000c030b0b1038000b2003280230450d01200b280200102f0c010b20004100360200200020073602042003280230450d00200b280200102f0b200341a0016a24000f0b1036000bc20201027f230041106b22022400200128021841c2b5ca0041052001411c6a28020028020c1100002103200241003a0005200220033a00042002200136020020022000410c6a36020c200241c7b5ca00410e2002410c6a41d8b5ca00105b21012002200036020c200141e8b5ca0041092002410c6a41f4b5ca00105b21012002200041046a36020c20014184b6ca00410c2002410c6a41f4b5ca00105b21012002200041086a36020c20014190b6ca00410c2002410c6a41f4b5ca00105b1a20022d00042100024020022d0005450d00200041ff0171210141012100024020010d0020022802002200411c6a28020028020c210120002802182103024020002d00004104710d0020034190a5c0004102200111000021000c010b20034192a5c0004101200111000021000b200220003a00040b200241106a2400200041ff01714100470b900201027f024002400240024002402001410c6a2802002203417f6a220420034d0d004116102d22010d010c040b200420026b220220044d0d02411b102d2201450d0320002001360204200141176a41002800ecba4a360000200141106a41002900e5ba4a370000200141086a41002900ddba4a370000200141002900d5ba4a370000200041086a429b808080b0033702000c010b200020013602042001410e6a41002900cdba4a370000200141086a41002900c7ba4a370000200141002900bfba4a370000200041086a4296808080e0023702000b200041013602000f0b0240200320024d0d002000200128020420024104746a360204200041003602000f0b41c4c2ca0020022003103b000b1036000bd00401037f230041e0006b220324002003200236020c024041002802a4e24a4105490d002003410136021420032003410c6a36021041002802b0e24a210241002802ace24a210441002802a8e24a2105200341d8006a41ef00360200200341d0006a42ed80808010370300200341cc006a41bcb8ca00360200200341c4006a4225370200200341c0006a41b3b9ca00360200200341386a4201370300200341286a4201370300200341206a410a360200200341346a200341106a360200200341e8b9ca00360224200341a9b9ca0036021c20034105360218200441cca5c000200541024622051b200341186a200241e4a5c00020051b280210110200200328020c21020b02400240024002400240024002402002450d00200341186a2001410010c20620032802184101460d0120012802002202200328021c2204280208460d022002200328020c6b220420024d0d03410f102d22020d040c060b200041003602000c040b2000200341186a4104722202290200370200200041086a200241086a2802003602000c030b024020042d000c0d004125102d2202450d04200042a5808080d004370204200020023602002002411d6a410029008dba4a370000200241186a4100290088ba4a370000200241106a4100290080ba4a370000200241086a41002900f8b94a370000200241002900f0b94a3700000c030b200041003602000c020b20004100360200200120043602000c010b2000428f808080f00137020420002002360200200241076a410029009cba4a37000020024100290095ba4a3700000b200341e0006a24000f0b1036000bb507010b7f230041e0006b22032400200320013602202002280208220441546a2105200241106a280200220641306c210202400340024020020d00410021070c020b200241506a21022005412c6a2107200541306a2208210520072d00004102470d000b200341186a200810d60320032802182107200328021c21020b2002410020071b2109200641306c2102200441546a2105200741c8e1ca0020071b210a02400340024020020d004100210b0c020b200241506a21022005412c6a2107200541306a2208210520072d00004104470d000b200341106a200810d6032003280210210b2003280214210c0b200641306c2102200441546a2105200b41c8e1ca00200b1b210d02400240024002400240024002400240024003402002450d01200241506a21022005412c6a2107200541306a2208210520072d00004103470d000b200841086a2802002202450d00200241286c2107200828020041186a2102410021050340200520022d0000456a2105200241286a2102200741586a22070d000b200520014d0d01200641306c2102200441546a210503402002450d07200241506a21022005412c6a2107200541306a2208210520072d00004103470d000b200341086a200810d603200328020c220b41286c210520032802082204210703402005450d08200541586a2105200741186a2108200741286a2202210720082d00000d000b20010d02200241586a21020c030b410021050b0240200c4100200b1b200120056b22024d0d00200d20024102746a22020d030b200341dc006a41013602002003420237024c200341e0c1ca003602482003410136022c2003200341286a3602582003200341206a360228200341386a200341c8006a103a200341386a21020c030b2004200b41286c6a210803402001417f6a2101034020082002460d06200241186a2105200241286a2207210220052d00000d000b2007210220010d000b200741586a21020b2002411c6a21020b2003200228020022023602240240200920024d0d00200a20024104746a2202450d0020002002360204410021020c040b200341dc006a4102360200200341c4006a41013602002003420337024c200341f0c1ca003602482003410136023c2003200341386a3602582003200341206a3602402003200341246a360238200341286a200341c8006a103a200341286a21020b20022802002105200041086a200229020437020020002005360204410121020c020b41adc0ca0041c20041f0c0ca001055000b4180c1ca0041dd0041f0c0ca001055000b20002002360200200341e0006a24000bd50302047f017e024020014101762202450d0003402002417f6a2202210302400240024003402003410174220441017221050240200441026a220420014f0d00200520014f0d0220042005200020054103746a280200200020044103746a280200491b21050b200520014f0d03200320014f0d02200020034103746a2203280200200020054103746a22042802004f0d03200329020021062003200429020037020020042006370200200521030c000b0b41b0bcca0020052001103b000b41c0bcca0020032001103b000b20020d000b0b0240024020014102490d002001210403402004417f6a220420014f0d02200029020021062000200020044103746a2205290200370200200520063702004100210302400240024003402003410174220241017221050240200241026a220220044f0d00200520044f0d0220022005200020054103746a280200200020024103746a280200491b21050b200520044f0d03200320044f0d02200020034103746a2203280200200020054103746a22022802004f0d03200329020021062003200229020037020020022006370200200521030c000b0b41b0bcca0020052004103b000b41c0bcca0020032004103b000b200441014b0d000b0b0f0b4198bbca0020042001103b000bea04050a7f017e017f017e027f200041686a21022001417f6a2103200041086a2104410021052001413249210641012107024003400240024020072001490d00410021080c010b410121082000200741037422096a220a280200220b200a41786a280200490d00200420096a210803404101210a20032007460d03200741016a21072008280200220a200b4f2109200841086a2108200a210b20090d000b200720014921080b2007200146210a20060d0120072001460d010240024002400240024002402007417f6a220b20014f0d002008450d012000200b4103746a220b290200210c200b20002007410374220d6a2208290200220e3702002008200c37020020074102490d0520002007417e6a220a4103746a220f280200200ea722094d0d05200b200f290200370200200a450d0420002007417d6a220a4103746a28020020094d0d042002200d6a210b0340200b41086a200b290200370200200a450d03200a417f6a210a200b41786a220b28020020094b0d000b200a41016a210b0c030b4188bbca00200b2001103b000b4198bbca0020072001103b000b4100210b0b2000200b4103746a210f0b200f200e3702000b200541016a21050240200120076b220a4102490d00200828020820082802004f0d002008290200210c20082008290208370200200841086a210f0240200a4103490d002008280210200ca722104f0d00200841106a21094103210b4102210d0340200d41037420086a220f41786a2009290200370200200b200a4f0d01200b4103742109200b210d200b41016a210b200820096a22092802002010490d000b0b200f200c3702000b20054105470d000b4100210a0b200a0b2600024020002802002d00000d00200141c5a4c0004105104c0f0b200141caa4c0004104104c0bc60501087f230041106b220324002002280208220441546a2105200241106a280200220641306c210702400340410021082007450d01200741506a21072005412c6a2109200541306a220a210520092d00004103470d000b200a41086a2802002207450d00200741286c2105200a28020041186a2107410021080340200820072d0000456a2108200741286a2107200541586a22050d000b0b024002400240024002400240200120086b220a20014b0d00200641306c2107200441546a210503402007450d02200741506a21072005412c6a2108200541306a2209210520082d0000410c470d000b200941086a280200200a4b0d03411e102d2207450d052000200736020420004101360200200741166a41002900a5c04a370000200741106a410029009fc04a370000200741086a4100290097c04a3700002007410029008fc04a370000200041086a429e808080e0033702000c040b412c102d22070d010c040b412c102d2207450d032000200736020420004101360200200741286a410028008bc04a360000200741206a4100290083c04a370000200741186a41002900fbbf4a370000200741106a41002900f3bf4a370000200741086a41002900ebbf4a370000200741002900e3bf4a370000200041086a42ac808080c0053702000c020b2000200736020420004101360200200741286a41002800dfbf4a360000200741206a41002900d7bf4a370000200741186a41002900cfbf4a370000200741106a41002900c7bf4a370000200741086a41002900bfbf4a370000200741002900b7bf4a370000200041086a42ac808080c0053702000c010b2009280200200a41186c6a28020821072003200a200210c006024020032802004101470d0020002003290204370204200041013602002000410c6a2003410c6a2802003602000c010b20032802042105200041003602002000200520076a3602040b200341106a24000f0b1036000b100020002802003502004101200110450b890301087f02400240024002400240200041086a2802002201450d00410020014102746b2102417f210320002802002204210503402002450d01200341016a2103200241046a210220052802002106200541046a21052006450d000b4100200641004741016a41017122056b2003460d002001200520036a2207490d012001200641004741016a4101716b20036b220541ffffffff03712005470d0220054102742208417f4c0d02200521034104210102402008450d002008102d2201450d042008410276220320054f0d00200341017422082005200820054b1b220841ffffffff03712008470d05200841027422084100480d050240024020030d002008102d21010c010b200120034102742008103121010b2001450d04200841027621030b2001200420074102746a4104200641004741016a41017141027420026a6b10e80621020240200041046a280200450d002000280200102f0b20002002360200200041086a2005360200200041046a20033602000b0f0b20072001104b000b103d000b1036000b1038000bc60403077f017e097f02400240024002400240200141086a2802002203200241086a2802002204200320044b1b220541016a22064101200641014b1b220741ffffffff03712007470d0020074102742206417f4c0d000240024020060d0041042108200721090c010b200610332208450d02200641027621090b024020050d004200210a0c040b2004417f6a220b20044b210c2002280200210d2003417f6a220e20034b0d022001280200210f20082007417f6a22064102746a2110410021024200210a03404100211102402003200e20026b22124d0d00410021112012200e4b0d00200f20124102746a28020021110b410021120240200c0d002004200b20026b22134d0d002013200b4b0d00200d20134102746a28020021120b200720064d0d052010200a2011ad7c2012ad7c220a3e02002010417c6a21102006417f6a2106200a422088210a200241016a22022005490d000c040b0b103d000b1036000b20082007417f6a22064102746a2111410021104200210a0340410021020240200c0d00410021022004200b20106b22124d0d00410021022012200b4b0d00200d20124102746a28020021020b200720064d0d022011200a2002ad7c220a3e02002011417c6a21112006417f6a2106200a422088210a201041016a22102005490d000b0b024020072005417f736a220620074f0d00200020073602082000200936020420002008360200200820064102746a200a3e02000240200141046a280200450d002001280200102f0b0f0b419cc3ca0020062007103b000b419cc3ca0020062007103b000bc604030e7f017e017f02400240200241086a2802002203200141086a28020022046a22054101200541014b1b220641ffffffff03712006470d0020064102742205417f4c0d0002400240024020050d0041042107200621080c010b200510332207450d01200541027621080b2004450d022001280200210902400240024020030d0020092004417f6a22054102746a210320072006417f6a22024102746a210a0340200420054d0d0302402003280200450d00200620024d0d03200a41003602000b2003417c6a2103200a417c6a210a2002417f6a21022005417f6a2205417f470d000c060b0b200641027420076a417c6a210b200341027420022802006a417c6a210c4100210d2006210e03402004200d417f736a220520044f0d020240200920054102746a220f2802002210450d0042002111417f2105200b2102200c210a024003402006200e20056a22124d0d012002200a3502002010ad7e20117c20023502007c22113e0200201142208821110240200320056a0d002006200d20036a417f736a220220064f0d05200720024102746a20113e02000c030b2002417c6a2102200a417c6a210a200f280200211020032005417f6a22056a22122003490d000b41c4c2ca0020122003103b000b41c4c2ca0020122006103b000b200b417c6a210b200e417f6a210e200d41016a220d2004460d050c000b0b419cc3ca0020022006103b000b41c4c2ca0020052004103b000b1036000b103d000b2000200636020820002008360204200020073602000240200141046a280200450d002001280200102f0b0bca0302097f017e230041106b2201240002400240024002400240024002402000280200220228020041016a41004c0d002000280204220328020041016a41004c0d012000280208220441086a28020022054101200028020c22062802006b22076a220820054f0d02200720002802142802006b22052000280210220741086a28020022006a220920054f0d03024002402002290308220a42ffffffff0f560d0041002100200a200428020020084102746a3502007e2003290308422086200728020020094102746a35020084580d010b20022802000d052002410036020020022002290308427f7c370308200441086a2802002200200020062802006b22024d0d0620032802000d07200428020020024102746a350200210a200341003602002003200a20032903087c370308410121000b200141106a240020000f0b41c6c4ca004118200141086a41e0c4ca0041f0c4ca00103e000b41c6c4ca004118200141086a41e0c4ca0041f0c4ca00103e000b41c4c2ca0020082005103b000b41c4c2ca0020092000103b000b41c3c5ca004110200141086a41d4c5ca0041e4c5ca00103e000b41c4c2ca0020022000103b000b41c3c5ca004110200141086a41d4c5ca0041e4c5ca00103e000b9e0301087f200028020822024102742103410021042000280200220521000240024003402003450d012004417f6a21042003417c6a210320002802002106200041046a21002006450d000b410121072004417f73200641004741016a4101716a21080c010b41002107410020046b21080b200128020822094102742103410021042001280200220121000240024003402003450d012004417f6a21042003417c6a210320002802002106200041046a21002006450d000b410021032004417f73200641004741016a4101716a21000c010b410020046b2100410121030b024020070d00410020034101736b0f0b4101210402400240024020030d0020022008490d0120092000490d02417f200220086b2203200920006b22064720032006491b22040d0020062003200320064b1b2107200120004102746a2103200520084102746a2100417f210103400240200141016a22012007490d0041000f0b2003280200210420002802002106200341046a2103200041046a2100417f200620044720062004491b2204450d000b0b20040f0b20082002104b000b20002009104b000bbc0101067f0240024002402001280208220241ffffffff03712002470d0020024102742203417f4c0d00200128020021040240024020030d002002410274210541042101200221060c010b2003102d2201450d02200241027421052003410276220620024f0d00200341017622062002200620024b1b220641027422074100480d0320012003200710312201450d020b20012004200510e80621032000200236020820002006360204200020033602000f0b103d000b1036000b1038000ba505010b7f024002400240024002400240024002402001280204220220012802002203490d0020012d000841ff01710d00200128000c210441002105024002404100200220036b2206200620024b1b220741016a220120074f0d00200441086a2106410021084100210741002101410021054104210903402006280200220a2002417f736a220b200a4f0d07200320024f210a200220032002496b21022004280200200b4102746a280200210b024020012005470d002001417f41004100417f4100200220036b2205200520024b1b220541016a220c200c2005491b200a1b20022003491b220541016a220c200c2005491b6a22052001490d0320082005200820054b1b220541ffffffff03712005470d03200541027422054100480d030240024020010d002005102d21090c010b200920072005103121090b2009450d09200541027621050b200920076a200b360200200841026a2108200741046a2107200141016a21012002200349200a72450d000c060b0b0240024020010d00410421090c010b200141ffffffff03712001470d01200141027422014100480d012001102d2209450d07200141027621050b200220034d0d022002417f732101200441086a210a2009210703402001200a280200220b6a220820014f0d082007200428020020084102746a280200360200200141016a2101200741046a210720032002417f6a2202490d000b200641016a21010c030b1038000b4104210941002101410021050c020b4100210120022003470d0141012101200921070b200441086a28020022022003417f736a220320024f0d042007200428020020034102746a2802003602000b2000200136020820002005360204200020093602000f0b41c4c2ca00200b200a103b000b1036000b41c4c2ca002008200b103b000b41c4c2ca0020032002103b000b7301027f230041106b2203240002404110102d22040d001036000b200420013e020c200420014220883e0208200420023e0204200420024220883e020020034284808080c00037020420032004360200200310ca06200041086a200328020836020020002003290300370200200341106a24000b1c00200128021841ffcbca00410f2001411c6a28020028020c1100000bb00301047f230041c0006b22022400200028020021034101210002402001280218418ca4c000410c2001411c6a28020028020c1100000d0002400240200328020822000d0020032802002200200328020428020c11070042e4aec285979ba58811520d012002200036020c2002413436021420022002410c6a36021020012802182104200128021c2105410121002002413c6a41013602002002420237022c20024198a4c0003602282002200241106a36023820042005200241286a103c0d020c010b2002200036020c2002410836021420022002410c6a36021020012802182104200128021c2105410121002002413c6a41013602002002420237022c20024198a4c0003602282002200241106a36023820042005200241286a103c0d010b200328020c2100200241106a41146a4101360200200241106a410c6a410136020020022000410c6a3602202002200041086a360218200241043602142002200036021020012802182100200128021c2101200241286a41146a41033602002002420337022c200241a8a4c0003602282002200241106a36023820002001200241286a103c21000b200241c0006a240020000b21002000417f6a41ff01712002ad4220862001ad842004ad4220862003ad8410000b1c00200128021841ffcbca00410f2001411c6a28020028020c1100000b1c00200128021841ffcbca00410f2001411c6a28020028020c1100000ba70601037f230041d0006b22042400200420033a000f024002400240024020022802082205417f6a220620054f0d00200620054d0d010b4118102d2202450d012004421837023420042002360230200441306a4100411810d80620042004280238220241186a3602382002200428023022056a41184192ddca00411810d906200420042902343702342004200536023041ecd1ca004134200441306a41ccd1ca0041a0d2ca00103e000b200141086a2802002105200228020020064103746a220628020021020240024020062d0006450d0020052002460d010b02400240200520024d0d00200141086a2005417f6a2202360200200128020020026a2d00002205417c6a220241014b0d01024020020e020300030b4118102d2202450d03200241106a41002900a2dd4a370000200241086a410029009add4a37000020024100290092dd4a37000020044298808080800337022420042002360220200441c4006a410136020020044201370234200441c0d7ca003602302004413136024c2004200441c8006a3602402004200441206a360248200441106a200441306a103a02402004280224450d002004280220102f0b200041013a0000200041046a20042903103702002000410c6a200441106a41086a2802003602000c040b412b102d2202450d02200041013a0000200241276a41002800fcd64a360000200241206a41002900f5d64a370000200241186a41002900edd64a370000200241106a41002900e5d64a370000200241086a41002900ddd64a370000200241002900d5d64a370000200041086a42ab808080b005370200200041046a20023602000c030b02400240200341ff017122024104460d0020052002470d010b200041003a0000200020053a00010c030b200420053a0048200441c4006a4102360200200441206a410c6a41373602002004420237023420044180d7ca00360230200441373602242004200441206a3602402004200441c8006a36022820042004410f6a360220200441106a200441306a103a2000410c6a200441186a280200360200200041046a2004290310370200200041013a00000c020b20004180083b01000c010b1036000b200441d0006a24000b7d01017f024002400240200041046a280200220320016b20024f0d00200120026a22022001490d01200341017422012002200120024b1b22014100480d010240024020030d002001102d21020c010b200028020020032001103121020b2002450d0220002002360200200041046a20013602000b0f0b1038000b1036000bea0101017f230041e0006b22042400200420013602082004200336020c024020012003470d0020002002200110e8061a200441e0006a24000f0b200441286a41146a4109360200200441346a410a360200200441106a41146a41033602002004200441086a36024020042004410c6a360244200441c8006a41146a410036020020044203370214200441b4e0ca003602102004410a36022c200441c8e1ca003602582004420137024c20044188e1ca003602482004200441286a3602202004200441c8006a3602382004200441c4006a3602302004200441c0006a360228200441106a41c8e1ca001043000bef0502047f017e230041d0006b2203240002400240024002400240200241086a2802002204417f6a220520044f0d00200520044d0d010b4118102d2202450d01200241106a41002900a2dd4a370000200241086a410029009add4a37000020024100290092dd4a37000020034298808080800337021420032002360210200341cc006a41013602002003420137023c200341c0d7ca00360238200341313602342003200341306a3602482003200341106a360230200341206a200341386a103a200041086a200341206a41086a280200360200200020032903203702002003280214450d032003280210102f0c030b0240024002402002280200220620054103746a2d000522054104460d00200341386a20012002200510d706024020032d00384101470d002000200329023c370200200041086a200341c4006a2802003602000c060b200241086a2802002204450d01200228020021060b200241086a2004417f6a2202360200200620024103746a290200220742808080808080c0ff0083428080808080808001520d010b4118102d2202450d01200241106a41002900a2dd4a370000200241086a410029009add4a37000020024100290092dd4a37000020034298808080800337021420032002360210200341cc006a41013602002003420137023c200341c0d7ca00360238200341313602342003200341306a3602482003200341106a360230200341206a200341386a103a200041086a200341206a41086a280200360200200020032903203702002003280214450d032003280210102f0c030b200141086a28020021022003200737030820022007a7470d01200041003602000c020b1036000b200341cc006a41023602002003412c6a41013602002003420237023c200341c4d5ca0036023820034101360224200320023602302003200341206a3602482003200341086a3602282003200341306a360220200341106a200341386a103a200041086a200341106a41086a280200360200200020032903103702000b200341d0006a24000be30302037f017e230041c0006b22042400200441286a20012002200310d7060240024002400240024020042d00284101460d0002400240200141086a2802002202200128020c4f0d0002402002200141046a280200470d00200241016a22052002490d06200241017422062005200620054b1b22054100480d060240024020020d002005102d21020c010b200128020020022005103121020b2002450d0520012002360200200141046a2005360200200141086a28020021020b200128020020026a20033a0000200141086a2201200128020041016a3602000c010b2004413c6a220341013602002004420137022c200441fcdeca003602282004410136021420042001410c6a3602102004200441106a360238200441186a200441286a103a20042802182201450d002004200429021c37020420042001360200200341013602002004420137022c200441c0d7ca00360228200441313602142004200441106a36023820042004360210200441186a200441286a103a20042802182101200429021c210702402004280204450d002004280200102f0b20010d020b200041003602000c040b2000200429022c370200200041086a200441346a2802003602000c030b20002007370204200020013602000c020b1036000b1038000b200441c0006a24000ba80301057f230041c0006b2203240020032002360200024002402001280204220420024b0d002001280208417c6a21052001410c6a280200410374210102400340024020010d00200320043602042003412c6a4102360200200341306a410c6a41013602002003420337021c200341dcdfca00360218200341013602342003200341306a3602282003200341046a36023820032003360230200341086a200341186a103a2000410c6a200341106a280200360200200041046a2003290308370200200041013a00000c040b2004200541046a2802006a22062004490d01200141786a2101200541086a2105200420024b21072006210420070d0020062104200620024d0d000b20052d00002104200041003a0000200020043a00010c020b02404120102d2204450d00200041013a0000200441186a41002900d4df4a370000200441106a41002900ccdf4a370000200441086a41002900c4df4a370000200441002900bcdf4a370000200041086a42a08080808004370200200041046a20043602000c020b1036000b200041003a00002000200128020020026a2d00003a00010b200341c0006a24000bbd0201037f230041106b220224000240024020002d00004104470d002002200128021841b8d4ca0041032001411c6a28020028020c11000022003a000820022001360200200241003a0009200241003602040c010b20022001280218419dd4ca0041082001411c6a28020028020c1100003a000820022001360200200241003a0009200241003602042002200036020c20022002410c6a41a8d4ca001061210120022d0008210020022802042203450d00200041ff0171210441012100024020040d00024020034101470d0020012d0009450d00200128020022042d00004104710d004101210020042802184196a5c00041012004411c6a28020028020c1100000d010b2001280200220028021841e4d3ca0041012000411c6a28020028020c11000021000b200120003a00080b200241106a2400200041ff01714100470b860602037f017e230041d0006b22052400200520023602082005200336020c024002400240417f41012002411f71742002411f4b1b20034b0d00200541386a200141186a2203200141286a410010d70620052d00384101470d012000200529023c370200200041086a200541c4006a2802003602000c020b200541cc006a41023602002005411c6a41013602002005420337023c2005419cd3ca00360238200541013602142005200541106a36024820052005410c6a3602182005200541086a360210200541206a200541386a103a200041086a200541206a41086a280200360200200020052903203702000c010b20012802002102200541003602200240024020022802080d00200541cc006a41013602002005420237023c20054190dbca00360238200541013602342005200541306a3602482005200541206a360230200541106a200541386a103a200528021022020d010b02400240024002400240200141206a2802002202200141246a22062802004f0d00024020022001411c6a280200470d00200241016a22062002490d05200241017422072006200720064b1b22064100480d050240024020020d002006102d21020c010b200328020020022006103121020b2002450d04200120023602182001411c6a2006360200200141206a28020021020b200128021820026a20043a0000200141206a2202200228020041016a3602000c010b200541cc006a220241013602002005420137023c200541fcdeca0036023820054101360234200520063602302005200541306a360248200541106a200541386a103a20052802102201450d002005200529021437022420052001360220200241013602002005420137023c200541c0d7ca00360238200541313602342005200541306a3602482005200541206a360230200541106a200541386a103a200528021021022005290214210802402005280224450d002005280220102f0b20020d010b200041003602000c040b20002008370204200020023602000c030b1036000b1038000b20002005290214370204200020023602000b200541d0006a24000bb00301017f230041d0006b22052400200520023602082005200336020c02400240024002400240417f41012002411f71742002411f4b1b20034b0d002001280200210220054100360234024020022802080d00200541cc006a41013602002005420237023c20054190dbca00360238200541013602142005200541106a3602482005200541346a360210200541206a200541386a103a200528022022020d020b200541386a200141186a2202200141286a2203200410d70620052d00384101460d02200541386a20022003410010d70620052d00384101460d03200041003602000c040b200541cc006a41023602002005412c6a41013602002005420337023c2005419cd3ca00360238200541013602242005200541206a36024820052005410c6a3602282005200541086a360220200541106a200541386a103a200041086a200541106a41086a280200360200200020052903103702000c030b20002005290224370204200020023602000c020b2000200529023c370200200041086a200541c4006a2802003602000c010b2000200529023c370200200041086a200541c4006a2802003602000b200541d0006a24000ba60402047f017e230041c0006b22032400200341286a200141186a2204200141286a2205200210d70602400240024020032d00284101460d00200341286a20042005200210d70620032d00284101470d012000200329022c370200200041086a200341346a2802003602000c020b2000200329022c370200200041086a200341346a2802003602000c010b02400240024002400240200141206a2802002202200141246a22052802004f0d00024020022001411c6a280200470d00200241016a22052002490d05200241017422062005200620054b1b22054100480d050240024020020d002005102d21020c010b200428020020022005103121020b2002450d04200120023602182001411c6a2005360200200141206a28020021020b200128021820026a41003a0000200141206a2201200128020041016a3602000c010b2003413c6a220141013602002003420137022c200341fcdeca0036022820034101360214200320053602102003200341106a360238200341186a200341286a103a20032802182202450d002003200329021c37020420032002360200200141013602002003420137022c200341c0d7ca00360228200341313602142003200341106a36023820032003360210200341186a200341286a103a20032802182101200329021c210702402003280204450d002003280200102f0b20010d010b200041003602000c030b20002007370204200020013602000c020b1036000b1038000b200341c0006a24000ba60402057f017e230041c0006b22032400200341286a200141186a2204200141286a2205200210d70602400240024020032d00284101460d00200341286a20042005200210d70620032d00284101470d012000200329022c370200200041086a200341346a2802003602000c020b2000200329022c370200200041086a200341346a2802003602000c010b02400240024002400240200141206a2802002205200141246a22062802004f0d00024020052001411c6a280200470d00200541016a22062005490d05200541017422072006200720064b1b22064100480d050240024020050d002006102d21040c010b200428020020052006103121040b2004450d04200120043602182001411c6a2006360200200141206a28020021050b200128021820056a20023a0000200141206a2201200128020041016a3602000c010b2003413c6a220141013602002003420137022c200341fcdeca0036022820034101360214200320063602102003200341106a360238200341186a200341286a103a20032802182202450d002003200329021c37020420032002360200200141013602002003420137022c200341c0d7ca00360228200341313602142003200341106a36023820032003360210200341186a200341286a103a20032802182101200329021c210802402003280204450d002003280200102f0b20010d010b200041003602000c030b20002008370204200020013602000c020b1036000b1038000b200341c0006a24000b17000240200041046a280200450d002000280200102f0b0b0c002000280200200110ab060b1500200028020022002802002000280208200110640b1000200120002802002000280208104c0bfb0101027f230041106b220224002002200128021841a4dfca0041052001411c6a28020028020c1100003a000820022001360200200241003a0009200241003602042002200036020c20022002410c6a41acdfca0010611a20022d00082101024020022802042203450d00200141ff0171210041012101024020000d00024020034101470d0020022d000941ff0171450d00200228020022002d00004104710d004101210120002802184196a5c00041012000411c6a28020028020c1100000d010b2002280200220128021841e4d3ca0041012001411c6a28020028020c11000021010b200220013a00080b200241106a2400200141ff01714100470b2c01017f02402002450d00200021030340200320013a0000200341016a21032002417f6a22020d000b0b20000b3601017f02402002450d00200021030340200320012d00003a0000200341016a2103200141016a21012002417f6a22020d000b0b20000b7101017f0240024020012000490d002002450d01200021030340200320012d00003a0000200141016a2101200341016a21032002417f6a22020d000c020b0b2002450d002001417f6a21012000417f6a21030340200320026a200120026a2d00003a00002002417f6a22020d000b0b20000b4a01037f4100210302402002450d000240034020002d0000220420012d00002205470d01200041016a2100200141016a21012002417f6a2202450d020c000b0b200420056b21030b20030b5701017e02400240200341c000710d002003450d012001410020036b413f71ad8820022003413f71ad220486842102200120048621010c010b20012003413f71ad862102420021010b20002001370300200020023703080b5701017e02400240200341c000710d002003450d0120012003413f71ad2204882002410020036b413f71ad86842101200220048821020c010b20022003413f71ad882101420021020b20002001370300200020023703080b7501027e200020034220882205200142208822067e200320027e7c200420017e7c200342ffffffff0f832203200142ffffffff0f8322017e2204422088200320067e7c22034220887c200342ffffffff0f83200520017e7c22034220887c37030820002003422086200442ffffffff0f83843703000b3e01017f230041106b2205240020052001200220032004410010f006200529030021012000200541086a29030037030820002001370300200541106a24000b4c01017f230041206b22052400200542003703182005420037031020052001200220032004200541106a10f006200529031021012000200529031837030820002001370300200541206a24000be20502037f067e230041306b2206240002400240024002400240024002400240024002402002500d002003500d012004500d02200479a7200279a76b2207413f4b0d0341ff0020076b2108200741016a21070c080b02402004500d0020050d040c060b024002402005450d0020034200510d0620054200370308200520012003823703000c010b20034200510d050b200120038021010c060b2004500d030240024002402001500d0020047b4201510d01200479a7200279a76b2207413e4b0d0241ff0020076b2108200741016a21070c090b02402005450d0020054200370300200520022004823703080b200220048021010c070b02402005450d002005200137030020052004427f7c2002833703080b200220047a423f838821010c060b2005450d040c020b024020037b4201510d0041bf7f200379a7200279a76b22076b2108200741c1006a21070c060b02402005450d002005420037030820052003427f7c2001833703000b20034201510d06200641206a2001200220037aa710ec06200641286a2903002102200629032021010c060b2005450d020b2005200137030020052002370308420021010c020b00000b420021010b420021020c010b200620012002200841ff007110eb06200641106a20012002200741ff007110ec06200641086a2903002102200641106a41086a2903002109200629030021012006290310210a0240024020070d004200210b4200210c0c010b4200210c4200210d03402009420186200a423f8884220b200b427f8520047c200a4201862002423f8884220a427f85220b20037c200b54ad7c423f87220b2004837d200a200b200383220e54ad7d2109200a200e7d210a420020024201862001423f8884842102200d2001420186842101200b420183220b210d2007417f6a22070d000b0b02402005450d002005200a370300200520093703080b200c20024201862001423f8884842102200b20014201868421010b2000200137030020002002370308200641306a24000b0bcce20a0300418080c0000ba1e20a6361706163697479206f766572666c6f770000002400100017000000f0020000050000007372632f6c6962616c6c6f632f7261775f7665632e727300cb0010004600000058010000130000003c00000004000000040000003d0000003e0000003f0000006120666f726d617474696e6720747261697420696d706c656d656e746174696f6e2072657475726e656420616e206572726f72003c000000000000000100000040000000b8001000130000003b020000050000007372632f6c6962616c6c6f632f666d742e72732f72757374632f373563663431616662343638313532363131323132323731626165303236393438636433626134362f7372632f6c6962636f72652f666d742f6d6f642e727301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000202020202020202020202020202020202020202020202020202020202020303030303030303030303030303030304040404040000000000000000000000000000340210002000000054021000120000003c000000000000000100000041000000696e646578206f7574206f6620626f756e64733a20746865206c656e20697320206275742074686520696e646578206973203030303130323033303430353036303730383039313031313132313331343135313631373138313932303231323232333234323532363237323832393330333133323333333433353336333733383339343034313432343334343435343634373438343935303531353235333534353535363537353835393630363136323633363436353636363736383639373037313732373337343735373637373738373938303831383238333834383538363837383838393930393139323933393439353936393739383939000068031000060000006e031000220000005003100018000000b30a0000050000007372632f6c6962636f72652f736c6963652f6d6f642e7273696e64657820206f7574206f662072616e676520666f7220736c696365206f66206c656e67746820b003100016000000c60310000d0000005003100018000000b90a000005000000736c69636520696e64657820737461727473206174202062757420656e6473206174205b2e2e2e5dba0410000b000000ca11100016000000f904100001000000a4041000160000009208000009000000a81110000e000000b611100004000000ba11100010000000f904100001000000a404100016000000960800000500000063616c6c656420604f7074696f6e3a3a756e77726170282960206f6e206120604e6f6e65602076616c756500a404100016000000a70800000e000000ba0410000b000000c504100026000000eb04100008000000f304100006000000f904100001000000a404100016000000a9080000050000007372632f6c6962636f72652f7374722f6d6f642e72736279746520696e64657820206973206e6f742061206368617220626f756e646172793b20697420697320696e7369646520202862797465732029206f6620606000003a051000020000002405100016000000460400002400000024051000160000003c040000110000007372632f6c6962636f72652f666d742f6d6f642e72732e2e3078040f151b190312171100000e160000000000000000000000000000000000000000000000000000000006130000000000000000000000000000000000000002070a00080c1d1c181a00000000000000000000000000000000000005010000000000000000000000000000000000000010000000000b00090014000d00000000000000000000000000000000000000000000000000000000000f12000000000000000000000000001f0000000000000000000000000000004946661d0000000000000000000000008a3e000000000000000000000000004b530000000000000000000000006723420000000000000000000000003d0000000000230000000000000000007500002d000000000000000000000000824e3c0000000000000000000000006300000025005a000000000000008136000003000000000000000000002f000000000000000010000000000013000800000000000000000000000000430072008900000000000000000000070000007d05183f003787094064000021000000000000000000000000000a0000410000000000000000000000000c0030005c00000019777100604735442e0000743911652c515e7f500000003431000000530000000000003a00000000381a00885f2b6b695d4f5d84802a68143b0017000000000000000000000000005500005700000083000000000000000059000000000000266e1b1600000000006d4a1c000000000000000000002400007c0052007b06150000000048000000007e2876276c2900225b0e610d567062048520780200007a1e7901540033000000867358004d456f0b6a0000326c4c0000898a00008a8a8a3e0000000000000000000000280c10001a000000380000000f000000280c10001a000000390000001000000000000000000000000000000001000000000000000d000000000000001c000000000000004000000000000000b600000000000000bf00000000000000f803000000000000f007000000000000ff070000000000000010000000000000001e0000000000000038000000000000003f000000000000807f0000000000000080000000000000c0ff01000000000080ff030000000000008007000000000000007f000000000001208000000000000000a3000000000000fc7f030000000000000006000000000000ff070000000000008009000000000000000e0000000080007e0e00000000642000200000000040fe0f2000000000010000300000000000000040000000005c00004000000000000000600000000000845c8000000000000000c000000000000000e00000000000000000010000000000f00c01000000443060000c000000c13d60000c0000001e2080000c0000001e20c0000c000000fe21fe000c00000000000000200000000000000060000000440800006000000000000000f000000060000000000200007ffffff9db07000000000080f8070000000000e0bc0f00000000000020210000030000003c3b0000e70f0000003c00000000c09f9f3d00000000c0fbef3e000000000000c03f00000000000000f000000000000000fc0000100000f8feff0000ffff0000ffff0000ffffffffffff000000f8ffff0000010000000000c0ff01000000ffffffff0100000000000000030000000000008003000000000040a30300000000000000080000000c0000000c000400000000f80f00000000000000180000001c0000001c00000000c301001e000000000000001f0001008000c01f1f000700000080ef1f00ffffffffff1f20008639020000002300020000000030400000000000007e66000000fcfffffc6d000000000000007f00000000000028bf000000000000f0cf00000000030000a0020000f7fffd2110030300000000007806000000000080ff06000000000000c007000000000000f207000000008701040e0600000000000010081000000000001007000000000000140f0000000000f017000000000000f21fdfe0fffeffffff1f00000000000000200000000000f80f20070000000000c833000000000000b03f000000000080f73f04000000000000401e2080000c000040000000000080d340020000000000005003000000000000580000000000e0fd66fe0700000000f879030000000000c07f000000000000fe7f000000000000ff7f00000000000000807f0000000000008030000000ffff03806ef000000000008702000000000000900000407fe51ff89f000000000000f9a5000000000000f8a70000000000803cb00000000000007eb40000000000007fbf0000feffffffffbf11000000000000c00000000000009dc102000000000000d000000000a0c307f8ffffffffffff7ff8fffffffffffffffbbe2100000c0000fc00000000000000ff02000000000000ff000002000000ffff0000f8fffbffffff00000000ffffffffffffffffffffffff7372632f6c6962636f72652f756e69636f64652f6d6f642e727300010305050606030706080809110a1c0b190c140d120e0d0f0410031212130916011705180219031a071c021d011f1620032b042c022d0b2e01300331023201a702a902aa04ab08fa02fb05fd04fe03ff09ad78798b8da23057588b8c901c1ddd0e0f4b4cfbfc2e2f3f5c5d5fb5e2848d8e9192a9b1babbc5c6c9cadee4e5ff00041112293134373a3b3d494a5d848e92a9b1b4babbc6cacecfe4e500040d0e11122931343a3b4546494a5e646584919b9dc9cecf0d112945495764658d91a9b4babbc5c9dfe4e5f0040d1145496465808184b2bcbebfd5d7f0f183858ba4a6bebfc5c7cecfdadb4898bdcdc6cecf494e4f57595e5f898e8fb1b6b7bfc1c6c7d71116175b5cf6f7feff800d6d71dedf0e0f1f6e6f1c1d5f7d7eaeafbbbcfa16171e1f46474e4f585a5c5e7e7fb5c5d4d5dcf0f1f572738f747596972f5f262e2fa7afb7bfc7cfd7df9a409798308f1fc0c1ceff4e4f5a5b07080f10272feeef6e6f373d3f42459091feff536775c8c9d0d1d8d9e7feff00205f2282df048244081b04061181ac0e80ab351e1580e003190801042f043404070301070607110a500f1207550802041c0a090308030703020303030c0405030b06010e15053a0311070605100757070207150d500443032d03010411060f0c3a041d255f206d046a2580c80582b0031a0682fd035907150b1709140c140c6a060a061a0659072b05460a2c040c040103310b2c041a060b0380ac060a061f414c042d0374083c030f033c0738082b0582ff1118082f112d032010210f808c048297190b158894052f053b07020e180980b030740c80d61a0c0580ff0580b605240c9bc60ad23010848d033709815c1480b80880c73035040a06380846080c06740b1e035a0459098083181c0a16094808808a06aba40c170431a10481da26070c050580a511816d1078282a064c04808d0480be031b030f0d0088111000200000001a000000280000000006010103010402080809020a050b02100111041205131114021502170219041c051d0824016a036b02bc02d102d40cd509d602d702da01e005e102e802ee20f004f906fa020c273b3e4e4f8f9e9e9f060709363d3e56f3d0d104141836375657bd35cecfe01287898e9e040d0e11122931343a4546494a4e4f64655a5cb6b71b1ca8a9d8d909379091a8070a3b3e66698f926f5feeef5a629a9b2728559da0a1a3a4a7a8adbabcc4060b0c151d3a3f4551a6a7cccda007191a22253e3fc5c604202325262833383a484a4c50535556585a5c5e606365666b73787d7f8aa4aaafb0c0d00c72a3a4cbcc6e6f5e227b0503042d036504012f2e80821d03310f1c0424091e052b0544040e2a80aa06240424042808340b018090813709160a088098390363080930160521031b05014038044b052f040a070907402027040c0936033a051a07040c07504937330d33072e080a81261f808128082a808617094e041e0f430e19070a0647092709750b3f412a063b050a0651060105100305808b602048080a80a65e22450b0a060d1339070a362c041080c03c64530c0180a0451b4808531d398107460a1d03474937030e080a0639070a81361980c7320d839b66750b80c48abc842f8fd18247a1b98239072a040260260a460a28051382b05b654b0439071140041c97f80882f3a50d811f3103110408818c89046b050d03090710936080f60a73086e1746809a140c570919808781470385420f1585502b80d52d031a040281703a0501850080d7294c040a04028311444c3d80c23c06010455051b3402810e2c04640c560a0d035d033d391d0d2c040907020e06809a83d60a0d030b05740c59070c140c0438080a0628081e527703310380a60c14040305030d06856a7372632f6c6962636f72652f756e69636f64652f7072696e7461626c652e7273626567696e203c3d20656e642028203c3d2029207768656e20736c6963696e672060206973206f7574206f6620626f756e6473206f662060426f72726f774572726f72426f72726f774d75744572726f72000000c8b0120000000000b92112000200000070616e69636b65642061742041121000010000004212100003000000c8b0120000000000401210000100000040121000010000003a27272c2066616c73657472756520202020207b202c20207b0a00003c0000000c000000040000004200000043000000440000002c0a00003c0000000400000004000000450000004600000047000000207d7d28280a2c0a5d5b00003c000000040000000400000048000000490000004a0000003c00000000000000010000004b0000004c0000004d0000003c00000000000000010000004e0000004f0000004d0000003c00000000000000010000004e0000004f0000004d00000054696d657374616d70206d7573742062652075706461746564206f6e636520696e2074686520626c6f636b556e657870656374656454696d65706f696e7457726f6e6754696d65706f696e744e6f54696d65706f696e7453656e646572496e5369676e61746f726965735369676e61746f726965734f75744f664f72646572546f6f4d616e795369676e61746f72696573546f6f4665775369676e61746f726965734e6f417070726f76616c734e6565646564416c7265616479417070726f766564626174636861735f73756261735f6d756c7469617070726f76655f61735f6d756c746963616e63656c5f61735f6d756c746900000000f814100010000000000000000815100002000000000000000000000018151000020000000000000000000000281510000e00000000000000c8b0120000000000000000000000000038151000010000000000000000000000401510000b0000000000000080e811000200000000000000000000004c1510000200000000000000000000005c15100010000000000000006c15100003000000000000000000000084151000020000000000000000000000941510001000000000000000a4151000040000000000000000000000c4151000020000000000000000000000d415100011000000000000006c151000030000000000000000000000e815100002000000000000004261746368496e7465727275707465648472120003000000f2a512000d000000031810005600000059181000130000004261746368436f6d706c657465640000d0171000330000004e65774d756c7469736967005e17100052000000b0171000200000004d756c7469736967417070726f76616cc26d120009000000e416100016000000c26d1200090000000817100056000000ba1610002a0000004d756c74697369674578656375746564c26d120009000000e416100016000000c26d120009000000fa1610000e0000006f1610004b000000ba1610002a0000004d756c746973696743616e63656c6c6564000000f81510004c000000441610002b0000002041206d756c7469736967206f7065726174696f6e20686173206265656e2063616e63656c6c65642e20466972737420706172616d20697320746865206163636f756e7420746861742069732063616e63656c6c696e672c20746869726420697320746865206d756c7469736967206163636f756e742e2041206d756c7469736967206f7065726174696f6e20686173206265656e2065786563757465642e20466972737420706172616d20697320746865206163636f756e74207468617420697320617070726f76696e672c20746869726420697320746865206d756c7469736967206163636f756e742e54696d65706f696e743c426c6f636b4e756d6265723e4469737061746368526573756c742041206d756c7469736967206f7065726174696f6e20686173206265656e20617070726f76656420627920736f6d656f6e652e20466972737420706172616d20697320746865206163636f756e7420746861742069732041206e6577206d756c7469736967206f7065726174696f6e2068617320626567756e2e20466972737420706172616d20697320746865206163636f756e74207468617420697320617070726f76696e672c207365636f6e6420697320746865206d756c7469736967206163636f756e742e204261746368206f66206469737061746368657320636f6d706c657465642066756c6c792077697468206e6f206572726f722e204261746368206f66206469737061746368657320646964206e6f7420636f6d706c6574652066756c6c792e20496e646578206f66206669727374206661696c696e6720646973706174636820676976656e2c2061732077656c6c20617320746865206572726f722e4e6f7773657443757272656e74456c656374656443757272656e744572615374617274536c6f745374616b655374616b65727300b018100048000000bb0100002d0000002f72757374632f373563663431616662343638313532363131323132323731626165303236393438636433626134362f7372632f6c6962636f72652f6f70732f61726974682e72730000000000000000617474656d707420746f20646976696465206279207a65726f0000003c0000000800000004000000500000002f686f6d652f616e6472652f576f726b62656e63682f706172697479746563682f7375627374726174652f7072696d6974697665732f61726974686d657469632f7372632f7065725f7468696e67732e7273756e636c6573303071202f2028712f246d617829203c202832202a20246d6178292e204d6163726f2070726576656e747320616e792074797065206265696e672063726561746564207468617420646f6573206e6f74207361746973667920746869733b2071656400002c19100052000000880000002d0000002c191000520000008f0000002d0000002c191000520000009a000000210000004661696c656420746f20636f6e7665727466696e616c6e756d00000000000000be1310000500000000000000101b1000010000000000000000000000281b1000120000000000000000000000c31310000600000000000000b81b1000020000000000000000000000e81b1000070000000000000000000000c91310000800000000000000201c1000040000000000000000000000801c1000290000000000000000000000d11310001000000000000000c81d1000040000000000000000000000281e1000200000000000000000000000e11310000f00000000000000281f1000040000000000000000000000881f1000160000000000000000000000402c10000500000000000000452c100017000000002a100020000000c8b0120000000000202a10003b000000c8b01200000000005b2a10001f000000c8b01200000000007a2a10003c000000c8b01200000000002a7f12000b000000b62a100029000000857f12000d000000927f12000c000000c8b0120000000000df2a100056000000352b10004d000000822b100056000000d82b1000540000002c2c100014000000000000001f8212000500000000000000e60812000300000000000000fb8512000400000000000000500b120017000000c829100038000000c8b01200000000007881120034000000c8b01200000000002a7f12000b000000e90a120025000000927f12000c00000000000000dd0812000900000000000000e608120003000000000000007d2310001100000000000000e03c120011000000000000005a2710000f00000000000000692710002100000000000000fb8512000400000000000000500b120017000000b9231000560000000f2410003f000000c8b01200000000008a2710002d000000c8b01200000000004e24100054000000a224100058000000fa2410000e000000c8b01200000000007881120034000000c8b0120000000000c0201000560000001621100051000000672110001c00000008251000570000005f25100055000000b425100036000000b727100023000000c8b0120000000000da271000480000002228100047000000c8b01200000000006928100057000000c0281000560000001629100038000000c8b01200000000002a7f12000b0000004e2910001500000038221000340000006c22100050000000bc2210005200000063291000490000000e2310003000000038261000360000006e2610003f000000857f12000d000000ac2910001c000000ad2610004c000000f9261000240000001d2710003d000000927f12000c00000000000000dd0812000900000000000000e608120003000000000000007d2310001100000000000000e03c120011000000000000005a2710000f00000000000000692710002100000000000000b023100009000000000000001472120008000000b9231000560000000f2410003f000000c8b01200000000004e24100054000000a224100058000000fa2410000e000000c8b01200000000007881120034000000c8b0120000000000c0201000560000001621100051000000672110001c00000008251000570000005f25100055000000b425100036000000fa21100034000000c8b0120000000000ea2510004e000000c8b01200000000002a7f12000b0000002e2210000a00000038221000340000006c22100050000000bc221000520000000e2310003000000038261000360000006e2610003f000000857f12000d000000ad2610004c000000f9261000240000001d2710003d000000927f12000c00000000000000dd0812000900000000000000e608120003000000000000007d2310001100000000000000e03c120011000000000000008e2310000900000000000000972310001900000000000000b02310000900000000000000147212000800000038201000560000008e20100032000000c8b01200000000007881120034000000c8b0120000000000c0201000560000001621100051000000672110001c0000008321100058000000db2110001f000000fa21100034000000c8b01200000000002a7f12000b0000002e2210000a00000038221000340000006c22100050000000bc221000520000000e23100030000000857f12000d0000003e23100022000000602310001d000000927f12000c0000002043616e63656c2061207072652d6578697374696e672c206f6e2d676f696e67206d756c7469736967207472616e73616374696f6e2e20416e79206465706f7369742072657365727665642070726576696f75736c7920666f722074686973206f7065726174696f6e2077696c6c20626520756e7265736572766564206f6e20737563636573732e202d20607468726573686f6c64603a2054686520746f74616c206e756d626572206f6620617070726f76616c7320666f722074686973206469737061746368206265666f72652069742069732065786563757465642e202d20606f746865725f7369676e61746f72696573603a20546865206163636f756e747320286f74686572207468616e207468652073656e646572292077686f2063616e20617070726f766520746869732064697370617463682e204d6179206e6f7420626520656d7074792e202d206074696d65706f696e74603a205468652074696d65706f696e742028626c6f636b206e756d62657220616e64207472616e73616374696f6e20696e64657829206f662074686520666972737420617070726f76616c207472616e73616374696f6e20666f7220746869732064697370617463682e202d206063616c6c5f68617368603a205468652068617368206f66207468652063616c6c20746f2062652065786563757465642e202d20604f285329602e202d20557020746f206f6e652062616c616e63652d72657365727665206f7220756e72657365727665206f7065726174696f6e2e202d204f6e6520706173737468726f756768206f7065726174696f6e2c206f6e6520696e736572742c20626f746820604f285329602077686572652060536020697320746865206e756d626572206f662020207369676e61746f726965732e206053602069732063617070656420627920604d61785369676e61746f72696573602c207769746820776569676874206265696e672070726f706f7274696f6e616c2e202d204f6e6520656e636f6465202620686173682c20626f7468206f6620636f6d706c657869747920604f285329602e202d20492f4f3a2031207265616420604f285329602c206f6e652072656d6f76652e202d2053746f726167653a2072656d6f766573206f6e65206974656d2e6f746865725f7369676e61746f7269657374696d65706f696e7454696d65706f696e743c543a3a426c6f636b4e756d6265723e63616c6c5f6861736820526567697374657220617070726f76616c20666f72206120646973706174636820746f206265206d6164652066726f6d20612064657465726d696e697374696320636f6d706f73697465206163636f756e7420696620617070726f766564206279206120746f74616c206f6620607468726573686f6c64202d203160206f6620606f746865725f7369676e61746f72696573602e205061796d656e743a20604d756c74697369674465706f73697442617365602077696c6c20626520726573657276656420696620746869732069732074686520666972737420617070726f76616c2c20706c757320607468726573686f6c64602074696d657320604d756c74697369674465706f736974466163746f72602e2049742069732072657475726e6564206f6e636520746869732064697370617463682068617070656e73206f722069732063616e63656c6c65642e202d20606d617962655f74696d65706f696e74603a20496620746869732069732074686520666972737420617070726f76616c2c207468656e2074686973206d75737420626520604e6f6e65602e204966206974206973206e6f742074686520666972737420617070726f76616c2c207468656e206974206d7573742062652060536f6d65602c2077697468207468652074696d65706f696e742028626c6f636b206e756d62657220616e64207472616e73616374696f6e20696e64657829206f662074686520666972737420617070726f76616c207472616e73616374696f6e2e204e4f54453a2049662074686973206973207468652066696e616c20617070726f76616c2c20796f752077696c6c2077616e7420746f20757365206061735f6d756c74696020696e73746561642e202d20557020746f206f6e652062696e6172792073656172636820616e6420696e736572742028604f286c6f6753202b20532960292e202d20492f4f3a2031207265616420604f285329602c20757020746f2031206d757461746520604f285329602e20557020746f206f6e652072656d6f76652e202d2053746f726167653a20696e7365727473206f6e65206974656d2c2076616c75652073697a6520626f756e64656420627920604d61785369676e61746f72696573602c207769746820612020206465706f7369742074616b656e20666f7220697473206c69666574696d65206f66202020604d756c74697369674465706f73697442617365202b207468726573686f6c64202a204d756c74697369674465706f736974466163746f72602e6d617962655f74696d65706f696e744f7074696f6e3c54696d65706f696e743c543a3a426c6f636b4e756d6265723e3e2049662074686572652061726520656e6f7567682c207468656e206469737061746368207468652063616c6c2e202d206063616c6c603a205468652063616c6c20746f2062652065786563757465642e204e4f54453a20556e6c6573732074686973206973207468652066696e616c20617070726f76616c2c20796f752077696c6c2067656e6572616c6c792077616e7420746f207573652060617070726f76655f61735f6d756c74696020696e73746561642c2073696e6365206974206f6e6c7920726571756972657320612068617368206f66207468652063616c6c2e20526573756c74206973206571756976616c656e7420746f20746865206469737061746368656420726573756c7420696620607468726573686f6c64602069732065786163746c79206031602e204f7468657277697365206f6e20737563636573732c20726573756c7420697320604f6b6020616e642074686520726573756c742066726f6d2074686520696e746572696f722063616c6c2c206966206974207761732065786563757465642c206d617920626520666f756e6420696e20746865206465706f736974656420604d756c7469736967457865637574656460206576656e742e202d20604f2853202b205a202b2043616c6c29602e202d204f6e652063616c6c20656e636f6465202620686173682c20626f7468206f6620636f6d706c657869747920604f285a296020776865726520605a602069732074782d6c656e2e202d2054686520776569676874206f6620746865206063616c6c602e2053656e6420612063616c6c207468726f75676820616e20696e64657865642070736575646f6e796d206f66207468652073656e6465722e2053656e642061206261746368206f662064697370617463682063616c6c732e20546869732077696c6c206578656375746520756e74696c20746865206669727374206f6e65206661696c7320616e64207468656e2073746f702e204d61792062652063616c6c65642066726f6d20616e79206f726967696e2e202d206063616c6c73603a205468652063616c6c7320746f20626520646973706174636865642066726f6d207468652073616d65206f726967696e2e202d205468652073756d206f66207468652077656967687473206f6620746865206063616c6c73602e20546869732077696c6c2072657475726e20604f6b6020696e20616c6c2063697263756d7374616e6365732e20546f2064657465726d696e65207468652073756363657373206f66207468652062617463682c20616e206576656e74206973206465706f73697465642e20496620612063616c6c206661696c656420616e64207468652062617463682077617320696e7465727275707465642c207468656e2074686520604261746368496e74657272757074656460206576656e74206973206465706f73697465642c20616c6f6e67207769746820746865206e756d626572206f66207375636365737366756c2063616c6c73206d61646520616e6420746865206572726f72206f6620746865206661696c65642063616c6c2e20496620616c6c2077657265207375636365737366756c2c207468656e2074686520604261746368436f6d706c6574656460206576656e74206973206465706f73697465642e63616c6c735665633c3c542061732054726169743e3a3a43616c6c3e00000000b42c1000090000000205020000000000138212000c00000000000000147212000800000000000000bd2c10003400000000000000c8b01200f42c10000000000000000000042d10000100000000000000000000004d756c7469736967734d756c74697369673c543a3a426c6f636b4e756d6265722c2042616c616e63654f663c543e2c20543a3a4163636f756e7449643e0000003c0000000000000001000000510000000c2d1000250000002054686520736574206f66206f70656e206d756c7469736967206f7065726174696f6e732e557067726164696e67206163636f756e742062616c616e6365732e2e2e4672656542616c616e6365526573657276656442616c616e63654163636f756e744e6f6e6365000000006f1810000300000000000000a02d1000010000000000000000000000b82d10000900000000000000000000003a2f100003000000000000003d2f100012000000002e100016000000c8b0120000000000162e1000560000006c2e100036000000c8b0120000000000a22e100051000000f32e100011000000c8b0120000000000042f10003600000020536574207468652063757272656e742074696d652e20546869732063616c6c2073686f756c6420626520696e766f6b65642065786163746c79206f6e63652070657220626c6f636b2e2049742077696c6c2070616e6963206174207468652066696e616c697a6174696f6e2070686173652c20696620746869732063616c6c206861736e2774206265656e20696e766f6b656420627920746861742074696d652e205468652074696d657374616d702073686f756c642062652067726561746572207468616e207468652070726576696f7573206f6e652062792074686520616d6f756e742073706563696669656420627920604d696e696d756d506572696f64602e20546865206469737061746368206f726967696e20666f7220746869732063616c6c206d7573742062652060496e686572656e74602e6e6f77436f6d706163743c543a3a4d6f6d656e743e00000000006c181000030000000000000000000000297812000900000000000000000000000000000000000000000000000000000000000000c8b0120000301000000000000000000010301000010000000000000001000000000000005e91120009000000000000000000000000ee11000400000000000000000000000000000000000000000000000000000000000000c8b01200183010000000000000000000283010000100000000000000010000003c0000000000000001000000520000005d301000240000003c000000000000000100000051000000303010002d00000020446964207468652074696d657374616d7020676574207570646174656420696e207468697320626c6f636b3f2043757272656e742074696d6520666f72207468652063757272656e7420626c6f636b2e00000000000000bc3010000d00000000000000297812000900000000000000c8b01200cc3010000000000000000000dc30100004000000000000004d696e696d756d506572696f640000003c000000000000000100000053000000fc3010005a000000563110005a000000b031100059000000093210001c00000020546865206d696e696d756d20706572696f64206265747765656e20626c6f636b732e204265776172652074686174207468697320697320646966666572656e7420746f20746865202a65787065637465642a20706572696f6420746861742074686520626c6f636b2070726f64756374696f6e206170706172617475732070726f76696465732e20596f75722063686f73656e20636f6e73656e7375732073797374656d2077696c6c2067656e6572616c6c7920776f726b2077697468207468697320746f2064657465726d696e6520612073656e7369626c6520626c6f636b2074696d652e20652e672e20466f7220417572612c2069742077696c6c20626520646f75626c65207468697320706572696f64206f6e2064656661756c742073657474696e67732e6d6f646c70792f7574696c697375626154696d657374616d70206d7573742062652075706461746564206f6e6c79206f6e636520696e2074686520626c6f636b54696d657374616d70206d75737420696e6372656d656e74206279206174206c65617374203c4d696e696d756d506572696f643e206265747765656e2073657175656e7469616c20626c6f636b730000000000aae611000d0000000000000004341000010000000000000000000000af1310000f000000000000000c3410000100000000000000000000009e1310001100000000000000143410000100000000000000000000008d13100011000000000000001c3410000100000000000000000000007b1310001200000000000000243410000100000000000000000000006613100015000000000000002c34100001000000000000000000000053131000130000000000000034341000010000000000000000000000843a100008000000000000003c341000010000000000000000000000886c1200080000000000000044341000010000000000000000000000481310000b000000000000004c3410000100000000000000000000003a1310000e00000000000000543410000100000000000000000000002713100013000000000000005c3410000100000000000000ed3610001d000000c13610002c00000099361000280000006e3610002b000000423610002c000000fe35100044000000ba351000440000008235100038000000363510004c000000ee34100048000000a23410004c000000643410003e00000020412074696d65706f696e742077617320676976656e2c20796574206e6f206d756c7469736967206f7065726174696f6e20697320756e6465727761792e204120646966666572656e742074696d65706f696e742077617320676976656e20746f20746865206d756c7469736967206f7065726174696f6e207468617420697320756e6465727761792e204e6f2074696d65706f696e742077617320676976656e2c2079657420746865206d756c7469736967206f7065726174696f6e20697320616c726561647920756e6465727761792e204f6e6c7920746865206163636f756e742074686174206f726967696e616c6c79206372656174656420746865206d756c74697369672069732061626c6520746f2063616e63656c2069742e204d756c7469736967206f7065726174696f6e206e6f7420666f756e64207768656e20617474656d7074696e6720746f2063616e63656c2e205468652073656e6465722077617320636f6e7461696e656420696e20746865206f74686572207369676e61746f726965733b2069742073686f756c646e27742062652e20546865207369676e61746f7269657320776572652070726f7669646564206f7574206f66206f726465723b20746865792073686f756c64206265206f7264657265642e2054686572652061726520746f6f206d616e79207369676e61746f7269657320696e20746865206c6973742e2054686572652061726520746f6f20666577207369676e61746f7269657320696e20746865206c6973742e2043616c6c20646f65736e2774206e65656420616e7920286d6f72652920617070726f76616c732e2043616c6c20697320616c726561647920617070726f7665642062792074686973207369676e61746f72792e205468726573686f6c6420697320746f6f206c6f7720287a65726f292e4765747320616e64206465636f6465732074696d657374616d7020696e686572656e7420646174610000540000001000000004000000550000005437100045000000cc0000001f0000002f686f6d652f616e6472652f576f726b62656e63682f706172697479746563682f7375627374726174652f6672616d652f74696d657374616d702f7372632f6c69622e7273496e686572656e7420776974682073616d65206964656e74696669657220616c726561647920657869737473214e6f206f74686572206572726f72732061726520616363657074656420616674657220616e2068617264206572726f72215468657265206973206f6e6c79206f6e6520666174616c206572726f723b207165640000003c0000000800000004000000560000005821120046000000670200000100000054696d657374616d7020746f6f2066617220696e2066757475726520746f20616363657074416d6f756e744c6f774e6f7456657374696e6776657374766573745f6f746865727665737465645f7472616e7366657200000000000000ec3810000e000000000000004c261200020000000000000000000000fc3810000200000000000000000000000c39100010000000000000005ce811000100000000000000000000001c391000010000000000000056657374696e675570646174656400006f39100056000000c53910004600000056657374696e67436f6d706c65746564243910004b00000020416e206163636f756e742028676976656e2920686173206265636f6d652066756c6c79207665737465642e204e6f20667572746865722076657374696e672063616e2068617070656e2e2054686520616d6f756e742076657374656420686173206265656e20757064617465642e205468697320636f756c6420696e646963617465206d6f72652066756e64732061726520617661696c61626c652e205468652062616c616e636520676976656e2069732074686520616d6f756e74207768696368206973206c65667420756e7665737465642028616e642074687573206c6f636b6564292e546f6f4d616e794669656c6473496e76616c6964546172676574496e76616c6964496e646578496e76616c69644a756467656d656e744a756467656d656e74476976656e537469636b794a756467656d656e744e6f4964656e746974794665654368616e676564456d707479496e6465784e6f744e616d65644e6f74466f756e64546f6f4d616e795375624163636f756e74736164645f7265676973747261727365745f6964656e746974797365745f73756273636c6561725f6964656e74697479726571756573745f6a756467656d656e7463616e63656c5f726571756573747365745f6665657365745f6163636f756e745f69647365745f6669656c647370726f766964655f6a756467656d656e746b696c6c5f6964656e7469747953757065724f6600000000643c10000b000000000000005ce81100010000000000000000000000703c1000010000000000000000000000783c10000f000000000000004c261200020000000000000000000000883c1000010000000000000000000000903c10000e000000000000004c261200020000000000000000000000a03c1000010000000000000000000000a83c10001200000000000000bc3c1000020000000000000000000000cc3c1000010000000000000000000000d43c10001400000000000000bc3c1000020000000000000000000000e83c1000010000000000000000000000413a10000e00000000000000bc3c1000020000000000000000000000f03c1000010000000000000000000000f83c10000e00000000000000083d1000010000000000000000000000103d100001000000000000004964656e7469747953657400143e10003c0000004964656e74697479436c656172656400e03d1000340000004964656e746974794b696c6c65640000ae3d1000320000004a756467656d656e745265717565737465640000c26d1200090000002f3d10000e000000863d1000280000004a756467656d656e74556e726571756573746564633d1000230000003d3d100026000000526567697374726172416464656400002f3d10000e000000183d100017000000204120726567697374726172207761732061646465642e526567697374726172496e6465782041206a756467656d656e742077617320676976656e2062792061207265676973747261722e2041206a756467656d656e74207265717565737420776173207265747261637465642e2041206a756467656d656e74207761732061736b65642066726f6d2061207265676973747261722e2041206e616d65207761732072656d6f76656420616e642074686520676976656e2062616c616e636520736c61736865642e2041206e616d652077617320636c65617265642c20616e642074686520676976656e2062616c616e63652072657475726e65642e2041206e616d652077617320736574206f72207265736574202877686963682077696c6c2072656d6f766520616c6c206a756467656d656e7473292e456e636f756e7465726564206572726f7220696e206d6967726174696f6e206f66205374616b696e673a3a4c6564676572206d61702e546865206e756d626572206f662072656d6f766564206b65792f76616c75652069733a00000000000000743810000400000000000000c8b01200000000000000000000000000303f10000d0000000000000000000000783810000a0000000000000054cf1100010000000000000000000000983f1000100000000000000000000000823810000f0000000000000018401000020000000000000000000000484010000e000000000000007f4310002f000000c8b0120000000000ae43100058000000bd4210001a000000c8b0120000000000d742100035000000c8b01200000000002a7f12000b000000357f12000a000000284310001e0000004643100039000000857f12000d000000927f12000c000000394210002f000000c8b01200000000007881120034000000c8b01200000000006842100055000000bd4210001a000000c8b0120000000000d742100035000000c8b01200000000002a7f12000b000000357f12000a0000000c4310001c000000284310001e0000004643100039000000857f12000d000000927f12000c00000000000000ffd711000600000000000000203f12002300000000000000a477100008000000000000001042100029000000b84010001b000000c8b01200000000007881120034000000c8b0120000000000d3401000450000001841100040000000584110003d000000c8b01200000000009541100018000000c8b01200000000002a7f12000b000000ad41100046000000f34110001d000000927f12000c00000020437265617465206120766573746564207472616e736665722e20202d2060746172676574603a20546865206163636f756e7420746861742073686f756c64206265207472616e7366657272656420746865207665737465642066756e64732e202d2060616d6f756e74603a2054686520616d6f756e74206f662066756e647320746f207472616e7366657220616e642077696c6c206265207665737465642e202d20607363686564756c65603a205468652076657374696e67207363686564756c6520617474616368656420746f20746865207472616e736665722e20456d697473206056657374696e6743726561746564602e202d20437265617465732061206e65772073746f7261676520656e7472792c206275742069732070726f7465637465642062792061206d696e696d756d207472616e7366657209202020616d6f756e74206e656564656420746f20737563636565642e56657374696e67496e666f3c42616c616e63654f663c543e2c20543a3a426c6f636b4e756d6265723e20556e6c6f636b20616e79207665737465642066756e6473206f662061206074617267657460206163636f756e742e202d2060746172676574603a20546865206163636f756e742077686f7365207665737465642066756e64732073686f756c6420626520756e6c6f636b65642e204d75737420686176652066756e6473207374696c6c206c6f636b656420756e6465722074686973206d6f64756c652e20456d69747320656974686572206056657374696e67436f6d706c6574656460206f72206056657374696e6755706461746564602e202d20557020746f206f6e65206163636f756e74206c6f6f6b75702e202d204f6e652062616c616e63652d6c6f636b206f7065726174696f6e2e202d204f6e652073746f7261676520726561642028636f64656320604f283129602920616e6420757020746f206f6e652072656d6f76616c2e20556e6c6f636b20616e79207665737465642066756e6473206f66207468652073656e646572206163636f756e742e20546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f20616e64207468652073656e646572206d75737420686176652066756e6473207374696c6c000000000000ade21000070000000101000000000000138212000c00000000000000104210002900000000000000000000000000000000000000c8b01200604410000000000000000000704410000100000000000000000000003c000000000000000100000051000000784410003600000020496e666f726d6174696f6e20726567617264696e67207468652076657374696e67206f66206120676976656e206163636f756e742e000000000000e84410001100000000000000845712000c00000000000000c8b01200fc44100000000000000000000c45100001000000000000004d696e5665737465645472616e736665720000003c000000000000000100000057000000144510004700000020546865206d696e696d756d20616d6f756e7420746f206265207472616e7366657272656420746f206372656174652061206e65772076657374696e67207363686564756c652e00000000009e3a10000d0000000000000068f31100010000000000000000000000404710000d0000000000000000000000ab3a10000c00000000000000a8471000010000000000000000000000c0471000120000000000000000000000b73a100008000000000000005048100001000000000000000000000068481000100000000000000000000000bf3a10000e00000000000000c8b01200000000000000000000000000e84810000f0000000000000000000000cd3a100011000000000000006049100002000000000000000000000090491000170000000000000000000000de3a10000e00000000000000484a1000010000000000000000000000604a1000110000000000000000000000ec3a10000700000000000000e84a1000020000000000000000000000184b10000c0000000000000000000000f33a10000e00000000000000784b1000020000000000000000000000a84b10000c0000000000000000000000013b10000a00000000000000084c1000020000000000000000000000384c10000c00000000000000000000000b3b10001100000000000000984c1000030000000000000000000000e04c10001300000000000000000000001c3b10000d0000000000000054cf1100010000000000000000000000784d10001300000000000000175c10001f000000c8b0120000000000365c100047000000c8b01200000000007d5c10002b000000c8b0120000000000a85c100026000000c8b01200000000002a7f12000b000000ce5c100039000000af7d110027000000857f12000d000000927f12000c00000000000000075c100004000000000000000b5c10000c0000006a5a10004b000000c8b0120000000000b55a1000560000000b5b100015000000c8b0120000000000f6571000590000004f5810000a000000c8b0120000000000205b100024000000c8b0120000000000445b100023000000c8b01200000000002a7f12000b000000675b100057000000c559100022000000be5b100049000000857f12000d000000927f12000c000000000000004d5a10000400000000000000515a1000190000009d58100024000000c8b0120000000000c158100056000000175910004c000000c8b0120000000000f6571000590000004f5810000a000000c8b01200000000006359100027000000c8b01200000000002a7f12000b0000008a5910003b000000c559100022000000e759100050000000375a100016000000927f12000c0000006c5710004e000000c8b0120000000000ba5710003c000000c8b0120000000000f6571000590000004f5810000a000000c8b01200000000005958100027000000c8b01200000000002a7f12000b00000013501000120000002550100021000000805810001d000000857f12000d000000927f12000c000000000000005c52100009000000000000006552100017000000000000006557100007000000000000008147120015000000b155100026000000c8b0120000000000d7551000560000002d56100007000000c8b0120000000000ad5410004e000000fb54100015000000c8b012000000000034561000480000007c56100056000000c8b0120000000000d25610000d000000df561000290000000857100004000000c8b01200000000000c5710002a000000c8b01200000000002a7f12000b000000d75110000e0000002550100021000000365710002f000000857f12000d000000927f12000c000000000000005c52100009000000000000002f3d10000e000000535410001b000000c8b01200000000006e5410003f000000c8b0120000000000ad5410004e000000fb54100015000000c8b01200000000001055100052000000c8b0120000000000625510002c000000c8b01200000000002a7f12000b000000d75110000e00000025501000210000008e55100023000000857f12000d000000927f12000c000000000000001f82120005000000000000006552100017000000000000005054100003000000000000008147120015000000f353100047000000c8b01200000000009250100056000000be52100029000000c8b0120000000000e75210003e0000003a54100016000000c8b01200000000002a7f12000b000000695310000a000000735310001f000000927f12000c000000000000001f8212000500000000000000655210001700000000000000108212000300000000000000138212000c000000a653100030000000c8b01200000000009250100056000000be52100029000000c8b0120000000000e75210003e000000d65310001d000000c8b01200000000002a7f12000b000000695310000a000000735310001f000000927f12000c000000000000001f8212000500000000000000655210001700000000000000925310000600000000000000985310000e000000935210002b000000c8b01200000000009250100056000000be52100029000000c8b0120000000000e75210003e0000002553100044000000c8b01200000000002a7f12000b000000695310000a000000735310001f000000927f12000c000000000000005c5210000900000000000000655210001700000000000000ffd711000600000000000000203f120023000000000000000e46110009000000000000007c52100017000000635010002f000000c8b01200000000009250100056000000e85010002d000000c8b01200000000001551100049000000794f100056000000cf4f10001e0000005e51100053000000c8b0120000000000b151100026000000c8b01200000000002a7f12000b000000d75110000e000000e55110002200000007521000260000002d5210002f000000857f12000d000000927f12000c000000104e100051000000c8b0120000000000614e100059000000ba4e1000520000000c4f100021000000c8b01200000000002d4f10004c000000c8b0120000000000794f100056000000cf4f10001e000000c8b0120000000000ed4f100026000000c8b01200000000002a7f12000b00000013501000120000002550100021000000465010001d000000857f12000d000000927f12000c0000002052656d6f766520616e206163636f756e742773206964656e7469747920616e64207375622d6163636f756e7420696e666f726d6174696f6e20616e6420736c61736820746865206465706f736974732e205061796d656e743a2052657365727665642062616c616e6365732066726f6d20607365745f737562736020616e6420607365745f6964656e74697479602061726520736c617368656420616e642068616e646c65642062792060536c617368602e20566572696669636174696f6e2072657175657374206465706f7369747320617265206e6f742072657475726e65643b20746865792073686f756c642062652063616e63656c6c6564206d616e75616c6c79207573696e67206063616e63656c5f72657175657374602e20546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f526f6f745f206f72206d617463682060543a3a466f7263654f726967696e602e202d2060746172676574603a20746865206163636f756e742077686f7365206964656e7469747920746865206a756467656d656e742069732075706f6e2e2054686973206d75737420626520616e206163636f756e742020207769746820612072656769737465726564206964656e746974792e20456d69747320604964656e746974794b696c6c656460206966207375636365737366756c2e202d20604f2852202b2053202b205829602e202d204f6e652062616c616e63652d72657365727665206f7065726174696f6e2e202d206053202b2032602073746f72616765206d75746174696f6e732e2050726f766964652061206a756467656d656e7420666f7220616e206163636f756e742773206964656e746974792e20546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f20616e64207468652073656e646572206d75737420626520746865206163636f756e74206f6620746865207265676973747261722077686f736520696e64657820697320607265675f696e646578602e202d20607265675f696e646578603a2074686520696e646578206f6620746865207265676973747261722077686f7365206a756467656d656e74206973206265696e67206d6164652e202d20606a756467656d656e74603a20746865206a756467656d656e74206f662074686520726567697374726172206f6620696e64657820607265675f696e646578602061626f75742060746172676574602e20456d69747320604a756467656d656e74476976656e60206966207375636365737366756c2e202d20604f2852202b205829602e202d204f6e652062616c616e63652d7472616e73666572206f7065726174696f6e2e202d20557020746f206f6e65206163636f756e742d6c6f6f6b7570206f7065726174696f6e2e202d2053746f726167653a2031207265616420604f285229602c2031206d757461746520604f2852202b205829602e7265675f696e646578436f6d706163743c526567697374726172496e6465783e4a756467656d656e743c42616c616e63654f663c543e3e2053657420746865206669656c6420696e666f726d6174696f6e20666f722061207265676973747261722e206f6620746865207265676973747261722077686f736520696e6465782069732060696e646578602e202d2060696e646578603a2074686520696e646578206f6620746865207265676973747261722077686f73652066656520697320746f206265207365742e202d20606669656c6473603a20746865206669656c64732074686174207468652072656769737472617220636f6e6365726e73207468656d73656c76657320776974682e202d20604f285229602e202d204f6e652073746f72616765206d75746174696f6e20604f285229602e6669656c64734964656e746974794669656c6473204368616e676520746865206163636f756e74206173736f63696174656420776974682061207265676973747261722e202d20606e6577603a20746865206e6577206163636f756e742049442e20536574207468652066656520726571756972656420666f722061206a756467656d656e7420746f206265207265717565737465642066726f6d2061207265676973747261722e202d2060666565603a20746865206e6577206665652e6665652043616e63656c20612070726576696f757320726571756573742e205061796d656e743a20412070726576696f75736c79207265736572766564206465706f7369742069732072657475726e6564206f6e20737563636573732e20546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f20616e64207468652073656e646572206d757374206861766520612072656769737465726564206964656e746974792e202d20607265675f696e646578603a2054686520696e646578206f6620746865207265676973747261722077686f7365206a756467656d656e74206973206e6f206c6f6e676572207265717565737465642e20456d69747320604a756467656d656e74556e72657175657374656460206966207375636365737366756c2e202d204f6e652073746f72616765206d75746174696f6e20604f2852202b205829602e20526571756573742061206a756467656d656e742066726f6d2061207265676973747261722e205061796d656e743a204174206d6f737420606d61785f666565602077696c6c20626520726573657276656420666f72207061796d656e7420746f2074686520726567697374726172206966206a756467656d656e7420676976656e2e202d20607265675f696e646578603a2054686520696e646578206f6620746865207265676973747261722077686f7365206a756467656d656e74206973207265717565737465642e202d20606d61785f666565603a20546865206d6178696d756d206665652074686174206d617920626520706169642e20546869732073686f756c64206a757374206265206175746f2d706f70756c617465642061733a206060606e6f636f6d70696c652053656c663a3a72656769737472617273287265675f696e646578292e756e7772617028292e6665652060606020456d69747320604a756467656d656e7452657175657374656460206966207375636365737366756c2e202d2053746f726167653a2031207265616420604f285229602c2031206d757461746520604f2858202b205229602e6d61785f66656520436c65617220616e206163636f756e742773206964656e7469747920696e666f20616e6420616c6c207375622d6163636f756e7420616e642072657475726e20616c6c206465706f736974732e205061796d656e743a20416c6c2072657365727665642062616c616e636573206f6e20746865206163636f756e74206172652072657475726e65642e20546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f20616e64207468652073656e646572206d757374206861766520612072656769737465726564206964656e746974792e20456d69747320604964656e74697479436c656172656460206966207375636365737366756c2e202d206053202b2032602073746f726167652064656c6574696f6e732e2053657420746865207375622d6163636f756e7473206f66207468652073656e6465722e205061796d656e743a20416e79206167677265676174652062616c616e63652072657365727665642062792070726576696f757320607365745f73756273602063616c6c732077696c6c2062652072657475726e656420616e6420616e20616d6f756e7420605375624163636f756e744465706f736974602077696c6c20626520726573657276656420666f722065616368206974656d20696e206073756273602e202d206073756273603a20546865206964656e746974792773207375622d6163636f756e74732e202d20604f285329602077686572652060536020737562732d636f756e742028686172642d20616e64206465706f7369742d626f756e646564292e202d204174206d6f73742074776f2062616c616e6365206f7065726174696f6e732e202d204174206d6f7374204f2832202a2053202b2031292073746f72616765206d75746174696f6e733b20636f64656320636f6d706c657869747920604f2831202a2053202b2053202a20312960293b2020206f6e652073746f726167652d6578697374732e737562735665633c28543a3a4163636f756e7449642c2044617461293e2053657420616e206163636f756e742773206964656e7469747920696e666f726d6174696f6e20616e6420726573657276652074686520617070726f707269617465206465706f7369742e20496620746865206163636f756e7420616c726561647920686173206964656e7469747920696e666f726d6174696f6e2c20746865206465706f7369742069732074616b656e2061732070617274207061796d656e7420666f7220746865206e6577206465706f7369742e202d2060696e666f603a20546865206964656e7469747920696e666f726d6174696f6e2e20456d69747320604964656e7469747953657460206966207375636365737366756c2e202d20604f2858202b205827202b2052296020776865726520605860206164646974696f6e616c2d6669656c642d636f756e7420286465706f7369742d626f756e64656420616e6420636f64652d626f756e646564292e202d204f6e652073746f72616765206d75746174696f6e2028636f6465632d7265616420604f285827202b205229602c20636f6465632d777269746520604f2858202b20522960292e696e666f4964656e74697479496e666f2041646420612072656769737472617220746f207468652073797374656d2e20546865206469737061746368206f726967696e20666f7220746869732063616c6c206d75737420626520605265676973747261724f726967696e60206f722060526f6f74602e202d20606163636f756e74603a20746865206163636f756e74206f6620746865207265676973747261722e20456d6974732060526567697374726172416464656460206966207375636365737366756c2e202d20604f2852296020776865726520605260207265676973747261722d636f756e742028676f7665726e616e63652d626f756e646564292e0000000000685e10000a0000000101000000000000138212000c00000000000000725e10001a00000000000000000000000000000000000000c8b012008c5e100000000000000000009c5e100001000000000000000000000000000000293b1000070000000101000000000000138212000c00000000000000a45e10001400000000000000000000000000000000000000c8b01200b85e10000000000000000000c85e100002000000000000000000000000000000d85e1000060000000101000000000000138212000c0000000000000008be10002100000000000000000000000000000000000000c8b01200e05e10000000000000000000f05e100003000000000000000100000000000000085f10000a0000000000000000000000125f10003600000000000000000000000000000000000000000000000000000000000000c8b01200485f10000000000000000000585f10000400000000000000010000004964656e746974794f66526567697374726174696f6e3c42616c616e63654f663c543e3e3c000000000000000100000051000000606110004800000028543a3a4163636f756e7449642c2044617461293c000000000000000100000051000000b4601000580000000c61100054000000537562734f6600003c0000000000000001000000580000003f6010002e000000c8b01200000000006d60100047000000526567697374726172735665633c4f7074696f6e3c526567697374726172496e666f3c42616c616e63654f663c543e2c20543a3a4163636f756e7449643e3e3e3c000000000000000100000059000000785f100053000000cb5f10002a000000c8b0120000000000f55f10004a0000002054686520736574206f6620726567697374726172732e204e6f7420657870656374656420746f206765742076657279206269672061732063616e206f6e6c79206265206164646564207468726f7567682061207370656369616c206f726967696e20286c696b656c79206120636f756e63696c206d6f74696f6e292e2054686520696e64657820696e746f20746869732063616e206265206361737420746f2060526567697374726172496e6465786020746f2067657420612076616c69642076616c75652e20416c7465726e6174697665202273756222206964656e746974696573206f662074686973206163636f756e742e20546865206669727374206974656d20697320746865206465706f7369742c20746865207365636f6e64206973206120766563746f72206f6620746865206163636f756e74732e205468652073757065722d6964656e74697479206f6620616e20616c7465726e6174697665202273756222206964656e7469747920746f676574686572207769746820697473206e616d652c2077697468696e207468617420636f6e746578742e20496620746865206163636f756e74206973206e6f7420736f6d65206f74686572206163636f756e742773207375622d6964656e746974792c207468656e206a75737420604e6f6e65602e20496e666f726d6174696f6e20746861742069732070657274696e656e7420746f206964656e746966792074686520656e7469747920626568696e6420616e206163636f756e742e7573657220646f6573206e6f74206861766520616e206578697374696e672076657374696e67207363686564756c653b20712e652e642e003c0000000c000000040000005a0000000062100043000000f80000000d0000002f686f6d652f616e6472652f576f726b62656e63682f706172697479746563682f7375627374726174652f6672616d652f76657374696e672f7372632f6c69622e7273657865632e7072656661625f6d6f64756c652e696e697469616c2063616e27742062652067726561746572207468616e20657865632e7072656661625f6d6f64756c652e6d6178696d756d3b0a09090909090974687573204d656d6f72793a3a6e6577206d757374206e6f74206661696c3b0a09090909090971656400000000006a3810000a0000000000000014631000010000000000000000000000669a110017000000000000001c631000010000000000000000000000613810000900000000000000246310000100000000000000c5631000220000006e631000570000002c6310004200000020416d6f756e74206265696e67207472616e7366657272656420697320746f6f206c6f7720746f2063726561746520612076657374696e67207363686564756c652e20416e206578697374696e672076657374696e67207363686564756c6520616c72656164792065786973747320666f722074686973206163636f756e7420746861742063616e6e6f7420626520636c6f6262657265642e20546865206163636f756e7420676976656e206973206e6f742076657374696e672e00000000008c3a1000120000000000000038651000010000000000000000000000843a10000800000000000000406510000100000000000000000000007c3a1000080000000000000048651000010000000000000000000000723a10000a0000000000000050651000010000000000000000000000683a10000a00000000000000586510000100000000000000000000005e3a10000a00000000000000606510000100000000000000000000004f3a10000f0000000000000068651000010000000000000000000000413a10000e0000000000000070651000010000000000000000000000313a1000100000000000000078651000010000000000000000000000253a10000c0000000000000080651000010000000000000000000000183a10000d00000000000000886510000100000000000000000000000b3a10000d0000000000000090651000010000000000000071661000180000005c6610001500000047661000150000003a6610000d0000002a6610001000000017661000130000000566100012000000f465100011000000e165100013000000cb65100016000000b465100017000000986510001c00000020546f6f206d616e79206164646974696f6e616c206669656c64732e205468652074617267657420697320696e76616c69642e2054686520696e64657820697320696e76616c69642e20496e76616c6964206a756467656d656e742e204a756467656d656e7420676976656e2e20537469636b79206a756467656d656e742e204e6f206964656e7469747920666f756e642e20466565206973206368616e6765642e20456d70747920696e6465782e204163636f756e742069736e2774206e616d65642e204163636f756e742069736e277420666f756e642e20546f6f206d616e7920737562732d6163636f756e74732e436865636b426c6f636b4761734c696d6974496e76616c6964436f6e74726163744f726967696e496e76616c6964546f6d6273746f6e65496e76616c696444657374696e6174696f6e436f6e7472616374496e76616c6964536f75726365436f6e7472616374496e76616c6964537572636861726765436c61696d496e76616c69645363686564756c6556657273696f6e7570646174655f7363686564756c657075745f636f6465696e7374616e7469617465636c61696d5f737572636861726765436f6e7472616374496e666f4f66476173507269636500000000000000049c110008000000000000000c9c1100030000000000000000000000c4681000010000000000000000000000cc6810000c0000000000000080e81100020000000000000000000000d8681000010000000000000000000000e068100007000000000000005c1f1100020000000000000000000000e86810000600000000000000000000001869100008000000000000002069100005000000000000000000000048691000090000000000000000000000906910000a00000000000000b0ec11000100000000000000000000009c691000010000000000000000000000a46910000f00000000000000ec1f1100010000000000000000000000b4691000010000000000000000000000bc6910000a000000000000005c1f1100020000000000000000000000c8691000020000000000000000000000d86910001100000000000000ec691000020000000000000000000000fc69100001000000000000007b6d10005a000000496e7374616e746961746564446d10003700000045766963746564007b6c100039000000c8b01200000000003e6b100009000000c8b0120000000000b46c100043000000f76c10004d000000526573746f726564c26d120009000000c26d12000900000065ed110004000000902712000700000000ee1100040000000f6b10002f000000c8b01200000000003e6b100009000000c8b0120000000000476b10003d000000846b10003b000000bf6b10003a000000f96b1000460000003f6c10003c000000436f646553746f7265640000e16a10002e0000005363686564756c655570646174656400b16a100030000000446973706174636865640000466a10004e000000946a10001d000000436f6e7472616374457865637574696f6e000000c26d12000900000070a3110007000000046a10004200000020416e206576656e74206465706f73697465642075706f6e20657865637574696f6e206f66206120636f6e74726163742066726f6d20746865206163636f756e742e20412063616c6c2077617320646973706174636865642066726f6d2074686520676976656e206163636f756e742e2054686520626f6f6c207369676e616c73207768657468657220697420776173207375636365737366756c20657865637574696f6e206f72206e6f742e20547269676765726564207768656e207468652063757272656e74207363686564756c6520697320757064617465642e20436f646520776974682074686520737065636966696564206861736820686173206265656e2073746f7265642e20526573746f726174696f6e20666f72206120636f6e747261637420686173206265656e20696e697469617465642e202320506172616d73202d2060646f6e6f72603a20604163636f756e744964603a204163636f756e74204944206f662074686520726573746f72696e6720636f6e7472616374202d206064657374603a20604163636f756e744964603a204163636f756e74204944206f662074686520726573746f72656420636f6e7472616374202d2060636f64655f68617368603a206048617368603a20436f64652068617368206f662074686520726573746f72656420636f6e7472616374202d206072656e745f616c6c6f77616e63653a206042616c616e6365603a2052656e7420616c6c6f77616e6365206f662074686520726573746f72656420636f6e7472616374202d206073756363657373603a2060626f6f6c603a20547275652069662074686520726573746f726174696f6e20776173207375636365737366756c20436f6e747261637420686173206265656e206576696374656420616e64206973206e6f7720696e20746f6d6273746f6e652073746174652e202d2060636f6e7472616374603a20604163636f756e744964603a20546865206163636f756e74204944206f6620746865206576696374656420636f6e74726163742e202d2060746f6d6273746f6e65603a2060626f6f6c603a205472756520696620746865206576696374656420636f6e7472616374206c65667420626568696e64206120746f6d6273746f6e652e20436f6e7472616374206465706c6f7965642062792061646472657373206174207468652073706563696669656420616464726573732e205472616e736665722068617070656e6564206066726f6d6020746f2060746f60207769746820676976656e206076616c7565602061732070617274206f662061206063616c6c60206f722060696e7374616e7469617465602e0000003c000000040000000400000048000000490000005b0000003c000000000000000100000040000000086e10001c00000056617269616e74206973206e6576657220636f6e737472756374656473657269616c697a656420617267732073686f756c642062652070726f7669646564206279207468652072756e74696d653b0a090909636f72726563746c792073657269616c697a656420646174612073686f756c6420626520646573657269616c697a61626c653b0a09090971656410a8120053000000ba0000001000000064656661756c743a000000001a6710000f00000000000000886f1000010000000000000000000000a06f1000030000000000000000000000296710000800000000000000b86f1000020000000000000000000000e86f1000020000000000000000000000fb8512000400000000000000f86f100004000000000000000000000058701000070000000000000000000000316710000b0000000000000090701000040000000000000000000000f07010000a00000000000000000000003c6710000f000000000000004071100002000000000000000000000070711000050000000000000000000000a47710000800000000000000ac77100008000000347710002d000000c8b0120000000000617710004300000000000000e67410000900000000000000ef7410000c0000000000000077fa1000040000000000000070a3110007000000a876100057000000ff76100035000000000000001dad11000400000000000000203f120023000000000000007c4712000500000000000000814712001500000000000000e67410000900000000000000ef7410000c000000000000000f751000040000000000000070a31100070000001375100042000000c8b0120000000000557510004a0000009f7510002c000000cb751000460000001176100052000000637610004500000000000000dd7410000900000000000000814712001500000000000000e67410000900000000000000ef7410000c00000000000000fb7410000900000000000000047510000b000000000000000f751000040000000000000070a3110007000000bc7210006f000000c8b01200000000002b73100026000000c8b01200000000005173100050000000a173100041000000e27310005b0000003d74100057000000947410002a000000be7410001f000000000000001dad11000400000000000000138212000c00000000000000b27210000a00000000000000c815120014000000987110005c000000f471100045000000c8b0120000000000397210004e000000877210002b00000020416c6c6f777320626c6f636b2070726f64756365727320746f20636c61696d206120736d616c6c2072657761726420666f72206576696374696e67206120636f6e74726163742e204966206120626c6f636b2070726f6475636572206661696c7320746f20646f20736f2c206120726567756c61722075736572732077696c6c20626520616c6c6f77656420746f20636c61696d20746865207265776172642e20496620636f6e7472616374206973206e6f742065766963746564206173206120726573756c74206f6620746869732063616c6c2c206e6f20616374696f6e73206172652074616b656e20616e64207468652073656e646572206973206e6f7420656c696769626c6520666f7220746865207265776172642e6175785f73656e64657220496e7374616e7469617465732061206e657720636f6e74726163742066726f6d207468652060636f646568617368602067656e65726174656420627920607075745f636f6465602c206f7074696f6e616c6c79207472616e7366657272696e6720736f6d652062616c616e63652e20496e7374616e74696174696f6e20697320657865637574656420617320666f6c6c6f77733a202d205468652064657374696e6174696f6e206164647265737320697320636f6d7075746564206261736564206f6e207468652073656e64657220616e642068617368206f662074686520636f64652e202d2054686520736d6172742d636f6e7472616374206163636f756e7420697320637265617465642061742074686520636f6d707574656420616464726573732e202d20546865206063746f725f636f64656020697320657865637574656420696e2074686520636f6e74657874206f6620746865206e65776c792d63726561746564206163636f756e742e204275666665722072657475726e656420202061667465722074686520657865637574696f6e206973207361766564206173207468652060636f646560206f6620746865206163636f756e742e205468617420636f64652077696c6c20626520696e766f6b656420202075706f6e20616e792063616c6c2072656365697665642062792074686973206163636f756e742e202d2054686520636f6e747261637420697320696e697469616c697a65642e656e646f776d656e746761735f6c696d6974436f6d706163743c4761733e636f64655f68617368436f6465486173683c543e64617461204d616b657320612063616c6c20746f20616e206163636f756e742c206f7074696f6e616c6c79207472616e7366657272696e6720736f6d652062616c616e63652e202a20496620746865206163636f756e74206973206120736d6172742d636f6e7472616374206163636f756e742c20746865206173736f63696174656420636f64652077696c6c20626520657865637574656420616e6420616e792076616c75652077696c6c206265207472616e736665727265642e202a20496620746865206163636f756e74206973206120726567756c6172206163636f756e742c20616e792076616c75652077696c6c206265207472616e736665727265642e202a204966206e6f206163636f756e742065786973747320616e64207468652063616c6c2076616c7565206973206e6f74206c657373207468616e20606578697374656e7469616c5f6465706f736974602c206120726567756c6172206163636f756e742077696c6c206265206372656174656420616e6420616e792076616c75652077696c6c206265207472616e736665727265642e2053746f7265732074686520676976656e2062696e617279205761736d20636f646520696e746f2074686520636861696e27732073746f7261676520616e642072657475726e73206974732060636f646568617368602e20596f752063616e20696e7374616e746961746520636f6e747261637473206f6e6c7920776974682073746f72656420636f64652e205570646174657320746865207363686564756c6520666f72206d65746572696e6720636f6e7472616374732e20546865207363686564756c65206d7573742068617665206120677265617465722076657273696f6e207468616e207468652073746f726564207363686564756c652e7363686564756c655363686564756c6500000000b28b12000800000000000000000000001c7a10000300000000000000000000000000000000000000000000000000000000000000c8b01200907a10000000000000000000207a100001000000000000000100000000000000ba8b12000f0000000000000000000000ac7710000800000000000000000000000000000000000000000000000000000000000000c8b01200287a10000000000000000000387a100001000000000000000100000000000000407a10000c0000000101000000000000047510000b0000000000000070a311000700000000000000000000000000000000000000c8b012004c7a100000000000000000005c7a100001000000000000000000000000000000647a10000b0000000101000000000000047510000b000000000000006f7a10001600000000000000000000000000000000000000c8b01200b87a10000000000000000000887a100001000000000000000000000000000000c98b12000e0000000000000000000000a07112000300000000000000000000000000000000000000000000000000000000000000c8b01200907a10000000000000000000a07a1000010000000000000001000000000000004b6710000e0000000101000000000000138212000c00000000000000a87a10000f00000000000000000000000000000000000000c8b01200b87a10000000000000000000c87a10000100000000000000000000000000000059671000080000000000000000000000845712000c00000000000000000000000000000000000000000000000000000000000000c8b01200d07a10000000000000000000e07a1000010000000000000001000000476173001c7c1000200000003c00000000000000010000005c000000f77b1000250000005072697374696e65436f64653c00000000000000010000005d0000009e7b100059000000436f646553746f726167657761736d3a3a5072656661625761736d4d6f64756c65000000457b1000590000003c000000000000000100000052000000307b100015000000436f6e7472616374496e666f3c543e003c000000000000000100000051000000067b10002a0000003c00000000000000010000005e000000e87a10001e00000020546865207072696365206f66206f6e6520756e6974206f66206761732e2054686520636f6465206173736f6369617465642077697468206120676976656e206163636f756e742e20546865207375627472696520636f756e7465722e2041206d617070696e67206265747765656e20616e206f726967696e616c20636f6465206861736820616e6420696e737472756d656e746564207761736d20636f64652c20726561647920666f7220657865637574696f6e2e2041206d617070696e672066726f6d20616e206f726967696e616c20636f6465206861736820746f20746865206f726967696e616c20636f64652c20756e746f756368656420627920696e737472756d656e746174696f6e2e2043757272656e7420636f7374207363686564756c6520666f7220636f6e7472616374732e20476173207370656e7420736f2066617220696e207468697320626c6f636b2e000000004c7f10001300000000000000f50812000e00000000000000c8b01200607f10000000000000000000707f1000040000000000000000000000907f10001000000000000000845712000c00000000000000c8b01200e87f10000000000000000000a07f1000010000000000000000000000a87f10001100000000000000847212000300000000000000c8b01200bc7f10000000000000000000cc7f1000020000000000000000000000dc7f10000b00000000000000845712000c00000000000000c8b01200e87f10000000000000000000f87f1000010000000000000000000000008010001100000000000000845712000c00000000000000c8b01200148010000000000000000000248010000700000000000000000000005c8010000f00000000000000845712000c00000000000000c8b012006c80100000000000000000007c80100002000000000000000000000024bc11001200000000000000845712000c00000000000000c8b01200a8801000000000000000000048bc110001000000000000000000000050bc11001200000000000000845712000c00000000000000c8b012008c801000000000000000000074bc11000100000000000000000000009c8010000b00000000000000845712000c00000000000000c8b01200a88010000000000000000000b8801000020000000000000000000000c88010000b000000000000001c7a10000300000000000000c8b01200f88010000000000000000000d4801000020000000000000000000000e480100012000000000000001c7a10000300000000000000c8b01200f8801000000000000000000008811000020000000000000000000000188110000800000000000000847212000300000000000000c8b0120020811000000000000000000030811000020000000000000000000000408110000c00000000000000847212000300000000000000c8b012004c81100000000000000000005c811000010000000000000000000000648110000d000000000000001c7a10000300000000000000c8b012007481100000000000000000008481100002000000000000005369676e6564436c61696d48616e6469636170003c00000000000000010000005f0000006f86100038000000c8b0120000000000a786100043000000ea8610001a000000546f6d6273746f6e654465706f7369743a8610003500000053746f7261676553697a654f66667365740000003c000000000000000100000060000000bc85100055000000118610002900000052656e7442797465466565003c0000000000000001000000610000006f8510004d00000052656e744465706f7369744f66667365740000003c000000000000000100000062000000f7831000410000003884100016000000c8b01200000000004e8410005a000000a884100056000000fe84100053000000518510001e000000537572636861726765526577617264003c000000000000000100000063000000a483100039000000dd8310001a0000003c000000000000000100000064000000436f6e7472616374466565003c0000000000000001000000650000004d831000500000009d8310000700000043616c6c4261736546656500f8821000470000003f8310000e000000496e7374616e74696174654261736546656500003c000000000000000100000066000000a28210004e000000f0821000080000004d617844657074683c000000000000000100000067000000488210004c000000948210000e0000004d617856616c756553697a653c000000000000000100000068000000fa8110004e000000426c6f636b4761734c696d69740000003c0000000000000001000000690000009481100049000000dd8110001d00000020546865206d6178696d756d20616d6f756e74206f6620676173207468617420636f756c6420626520657870656e6465642070657220626c6f636b2e204120726561736f6e61626c652064656661756c742076616c75652069732031305f3030305f3030302e20546865206d6178696d756d2073697a65206f6620612073746f726167652076616c756520696e2062797465732e204120726561736f6e61626c652064656661756c74206973203136204b69422e20546865206d6178696d756d206e657374696e67206c6576656c206f6620612063616c6c2f696e7374616e746961746520737461636b2e204120726561736f6e61626c652064656661756c742076616c7565206973203130302e20546865206261736520666565206368617267656420666f7220696e7374616e74696174696e67206120636f6e74726163742e204120726561736f6e61626c652064656661756c742076616c7565206973203137352e20546865206261736520666565206368617267656420666f722063616c6c696e6720696e746f206120636f6e74726163742e204120726561736f6e61626c652064656661756c742076616c7565206973203133352e205468652066656520726571756972656420746f20696e7374616e7469617465206120636f6e747261637420696e7374616e63652e204120726561736f6e61626c652064656661756c742076616c75652069732032312e205265776172642074686174206973207265636569766564206279207468652070617274792077686f736520746f75636820686173206c656420746f2072656d6f76616c206f66206120636f6e74726163742e2054686520616d6f756e74206f662066756e6473206120636f6e74726163742073686f756c64206465706f73697420696e206f7264657220746f206f66667365742074686520636f7374206f66206f6e6520627974652e204c6574277320737570706f736520746865206465706f73697420697320312c303030204255202862616c616e636520756e697473292f6279746520616e64207468652072656e7420697320312042552f627974652f6461792c207468656e206120636f6e7472616374207769746820312c3030302c3030302042552074686174207573657320312c303030206279746573206f662073746f7261676520776f756c6420706179206e6f2072656e742e20427574206966207468652062616c616e6365207265647563656420746f203530302c30303020425520616e64207468652073746f7261676520737461796564207468652073616d6520617420312c3030302c207468656e20697420776f756c6420706179203530302042552f6461792e205072696365206f6620612062797465206f662073746f7261676520706572206f6e6520626c6f636b20696e74657276616c2e2053686f756c642062652067726561746572207468616e20302e2053697a65206f66206120636f6e7472616374206174207468652074696d65206f6620696e7374616e74696174696f6e2e205468697320697320612073696d706c652077617920746f20656e73757265207468617420656d70747920636f6e747261637473206576656e7475616c6c7920676574732064656c657465642e20546865206d696e696d756d20616d6f756e7420726571756972656420746f2067656e6572617465206120746f6d6273746f6e652e204e756d626572206f6620626c6f636b2064656c617920616e2065787472696e73696320636c61696d20737572636861726765206861732e205768656e20636c61696d207375726368617267652069732063616c6c656420627920616e2065787472696e736963207468652072656e7420697320636865636b656420666f722063757272656e745f626c6f636b202d2064656c6179636f6465206973206e6f7420666f756e647072697374696e6520636f6465206973206e6f7420666f756e647468657265206973206e6f7420656e6f7567682067617320666f722073746f72696e672074686520636f6465000000000004671000160000000000000004881000010000000000000000000000ef66100015000000000000000c881000010000000000000000000000da661000150000000000000014881000010000000000000000000000c06610001a000000000000001c881000010000000000000000000000b06610001000000000000000248810000100000000000000000000009b66100015000000000000002c88100001000000000000003889100041000000e388100055000000ac881000370000007b881000310000006388100018000000348810002f00000020416e206f726967696e20547269654964207772697474656e20696e207468652063757272656e7420626c6f636b2e20546f6d6273746f6e657320646f6e2774206d617463682e2043616e6e6f7420726573746f726520746f206e6f6e6578697374696e67206f7220616c69766520636f6e74726163742e2043616e6e6f7420726573746f72652066726f6d206e6f6e6578697374696e67206f7220746f6d6273746f6e6520636f6e74726163742e20416e206f726967696e206d757374206265207369676e6564206f7220696e686572656e7420616e6420617578696c696172792073656e646572206f6e6c792070726f7669646564206f6e20696e686572656e742e2041206e6577207363686564756c65206d7573742068617665206120677265617465722076657273696f6e207468616e207468652063757272656e74206f6e652e486561644f6644656c65676174696f6e7344656c65676174696f6e734e6f7441637469766557726f6e674f70656e4e6f744f70656e4e6f74457870697265644e6f744c6f636b65644e6f6e6557616974696e67507265696d616765496e76616c69645265666572656e64756d496e76616c6964507265696d6167654d697373696e67496d6d696e656e744561726c794e6f74496d6d696e656e744475706c6963617465507265696d6167654e6f7444656c65676174656457726f6e6750726f7879416c72656164795665746f65644e6f50726f706f73616c496e76616c6964486173684e6f7453696d706c654d616a6f7269747950726f706f73616c426c61636b6c6973746564416c726561647943616e63656c6564426164496e6465784e6f7450726f787956616c75654c6f777365636f6e6470726f78795f766f7465656d657267656e63795f63616e63656c65787465726e616c5f70726f706f736565787465726e616c5f70726f706f73655f6d616a6f7269747965787465726e616c5f70726f706f73655f64656661756c74666173745f747261636b7665746f5f65787465726e616c63616e63656c5f7265666572656e64756d63616e63656c5f71756575656461637469766174655f70726f7879636c6f73655f70726f7879646561637469766174655f70726f787964656c6567617465756e64656c6567617465636c6561725f7075626c69635f70726f706f73616c736e6f74655f707265696d6167656e6f74655f696d6d696e656e745f707265696d616765726561705f707265696d616765756e6c6f636b6f70656e5f70726f78795265666572656e64756d496e666f4f66566f74654f660000000030ec11000800000000000000d08e1000020000000000000000000000e08e1000010000000000000000000000e88e10000600000000000000f08e1000030000000000000000000000088f1000010000000000000000000000108f10000e00000000000000c8b01200000000000000000000000000208f1000010000000000000000000000288f10000700000000000000308f1000020000000000000000000000408f1000010000000000000000000000488f10000600000000000000508f1000010000000000000000000000588f1000010000000000000000000000608f10000900000000000000508f10000100000000000000000000006c8f1000010000000000000000000000748f10000900000000000000508f1000010000000000000000000000808f1000010000000000000000000000d4ec11000800000000000000888f1000020000000000000000000000988f1000010000000000000000000000a08f1000090000000000000080e81100020000000000000000000000ac8f1000010000000000000000000000b48f10000b000000000000005ce81100010000000000000000000000c08f1000010000000000000000000000c88f10000600000000000000d08f1000030000000000000000000000e88f1000010000000000000000000000f08f10000d000000000000000027110003000000000000000000000000901000010000000000000000000000089010000c000000000000000027110003000000000000000000000014901000010000000000000000000000cc8910000f000000000000001c9010000200000000000000000000002c901000010000000000000000000000ec8910000f000000000000001c901000020000000000000000000000349010000100000000000000000000003c9010000e000000000000004c9010000400000000000000000000006c9010000100000000000000000000007490100008000000000000005ce811000100000000000000000000007c9010000100000000000000d3931000090000009027120007000000dc931000300000005461626c65640000d3931000090000009027120007000000a42111000e0000009c9310003700000045787465726e616c5461626c65640000769310002600000053746172746564008c9110000f000000699310000d000000519310001800000050617373656400008c9110000f000000259310002c0000004e6f74506173736564000000f99210002c00000043616e63656c6c6564000000d8921000210000008c9110000f00000000ee110004000000bb9210001d00000044656c6567617465640000008392100038000000556e64656c65676174656400499210003a0000005665746f65640000c26d12000900000065ed1100040000003e9210000b0000001892100026000000507265696d6167654e6f746564000000e091100038000000507265696d616765557365649b9110004500000065ed1100040000008c9110000f00000049911000430000000691100043000000507265696d616765526561706564000065ed110004000000c26d1200090000009027120007000000c26d120009000000af90100057000000556e6c6f636b6564849010002b00000020416e206163636f756e7420686173206265656e20756e6c6f636b6564207375636365737366756c6c792e2041207265676973746572656420707265696d616765207761732072656d6f76656420616e6420746865206465706f73697420636f6c6c6563746564206279207468652072656170657220286c617374206974656d292e20412070726f706f73616c20636f756c64206e6f7420626520657865637574656420626563617573652069747320707265696d61676520776173206d697373696e672e20412070726f706f73616c20636f756c64206e6f7420626520657865637574656420626563617573652069747320707265696d6167652077617320696e76616c69642e5265666572656e64756d496e64657820412070726f706f73616c20707265696d616765207761732072656d6f76656420616e6420757365642028746865206465706f736974207761732072657475726e6564292e20412070726f706f73616c277320707265696d61676520776173206e6f7465642c20616e6420746865206465706f7369742074616b656e2e20416e2065787465726e616c2070726f706f73616c20686173206265656e207665746f65642e426c6f636b4e756d62657220416e206163636f756e74206861732063616e63656c6c656420612070726576696f75732064656c65676174696f6e206f7065726174696f6e2e20416e206163636f756e74206861732064656c65676174656420746865697220766f746520746f20616e6f74686572206163636f756e742e20412070726f706f73616c20686173206265656e20656e61637465642e2041207265666572656e64756d20686173206265656e2063616e63656c6c65642e20412070726f706f73616c20686173206265656e2072656a6563746564206279207265666572656e64756d2e20412070726f706f73616c20686173206265656e20617070726f766564206279207265666572656e64756d2e2041207265666572656e64756d2068617320626567756e2e566f74655468726573686f6c6420416e2065787465726e616c2070726f706f73616c20686173206265656e207461626c65642e2041207075626c69632070726f706f73616c20686173206265656e207461626c656420666f72207265666572656e64756d20766f74652e50726f70496e6465782041206d6f74696f6e20686173206265656e2070726f706f7365642062792061207075626c6963206163636f756e742e44697370617463685175657565507265696d61676573566f74657273466f725075626c696350726f70734465706f7369744f664e65787445787465726e616c0000000000ecea1100070000000000000040981000020000000000000000000000709810000e0000000000000000000000a78a10000600000000000000e0981000010000000000000000000000f89810000b0000000000000000000000f3ea1100040000000000000050991000020000000000000000000000809910000c0000000000000000000000ad8a10000a0000000000000050991000020000000000000000000000e09910000c0000000000000000000000b78a10001000000000000000409a1000010000000000000000000000589a10000a0000000000000000000000c78a10001000000000000000a89a1000010000000000000000000000c09a10000b0000000000000000000000d78a10001900000000000000a89a1000010000000000000000000000189b10000e0000000000000000000000f08a10001800000000000000a89a1000010000000000000000000000889b10000e0000000000000000000000088b10000a00000000000000f89b1000030000000000000000000000409c1000130000000000000000000000128b10000d00000000000000a89a1000010000000000000000000000d89c10000e00000000000000000000001f8b10001100000000000000489d1000010000000000000000000000609d1000090000000000000000000000308b10000d00000000000000a89d1000010000000000000000000000c09d10000900000000000000000000003d8b10000e00000000000000089e1000010000000000000000000000209e10000b00000000000000000000004b8b10000b00000000000000c8b01200000000000000000000000000789e1000090000000000000000000000568b10001000000000000000089e1000010000000000000000000000c09e10000d0000000000000000000000668b10000800000000000000289f1000020000000000000000000000589f10000f00000000000000000000006e8b10000a00000000000000c8b01200000000000000000000000000d09f10000d0000000000000000000000788b10001600000000000000c8b0120000000000000000000000000038a010000800000000000000000000008e8b10000d0000000000000078a0100001000000000000000000000090a010000d00000000000000000000009b8b1000160000000000000078a01000010000000000000000000000f8a010000c0000000000000000000000b18b10000d00000000000000a89a100001000000000000000000000058a110000f0000000000000000000000be8b10000600000000000000d0a11000010000000000000000000000e8a110000b0000000000000000000000c48b10000a00000000000000d0a1100001000000000000000000000040a210000d0000000000000000000000d2af10000d000000000000008113120007000000000000007c4712000500000000000000814712001500000053b6100028000000c8b01200000000007bb6100046000000c1b6100021000000c8b0120000000000e2b610003600000018b7100046000000c8b01200000000005eb7100012000000c8b01200000000002a7f12000b000000357f12000a00000070b7100020000000927f12000c0000000000000079131200080000000000000041b61000120000005ab510002e000000c8b012000000000088b5100041000000c9b5100045000000c8b01200000000000eb6100033000000c8b01200000000002a7f12000b000000357f12000a0000006247120010000000927f12000c000000000000001bac1000090000000000000024ac10001800000000000000f3ea11000400000000000000bc1f110004000000a6b410004d000000f3b410002f000000c8b0120000000000aea3100033000000c8b012000000000022b510003800000065b4100022000000c8b01200000000002a7f12000b000000357f12000a00000087b410001f000000927f12000c00000096b3100054000000eab310003d000000c8b0120000000000aea3100033000000c8b012000000000027b410003e00000065b4100022000000c8b01200000000002a7f12000b000000357f12000a00000087b410001f000000927f12000c000000000000001bac100009000000000000008c9110000f0000008cb210005400000045b210000c000000c8b0120000000000e0b210003f000000c8b01200000000001fb3100035000000c8b01200000000002a7f12000b00000054b3100042000000927f12000c00000000000000d2af10000d000000000000008113120007000000f9b110004c00000045b210000c000000c8b012000000000051b210003b000000c8b01200000000009fb0100036000000c8b01200000000002a7f12000b000000357f12000a0000004531110011000000927f12000c0000004fb1100056000000a5b1100018000000c8b0120000000000bdb110003c000000a2ac1000010000009fb0100036000000c8b0120000000000d5b010005300000028b1100027000000c8b01200000000002a7f12000b000000357f12000a0000004531110011000000927f12000c000000f1af10005200000043b0100021000000c8b012000000000064b010003b000000c8b01200000000009fb0100036000000c8b0120000000000d5b010005300000028b1100027000000c8b01200000000002a7f12000b000000357f12000a0000004531110011000000927f12000c00000000000000d2af10000d00000000000000811312000700000000000000dfaf10000d00000000000000f50812000e00000000000000ecaf10000500000000000000f50812000e00000064ad100054000000b8ad10005900000011ae10003b000000c8b01200000000004cae100035000000c8b012000000000081ae10003e000000bfae10005800000017af1000260000003daf10005500000092af10002f000000c8b0120000000000c1af100011000000c8b01200000000002a7f12000b000000977e1100100000004531110011000000650b110016000000927f12000c0000003cac10002f000000c8b01200000000006bac100037000000a2ac100001000000a3ac10004c000000c8b0120000000000efac100010000000c8b01200000000002a7f12000b000000ffac100012000000977e11001000000011ad10004200000053ad100011000000927f12000c000000000000001bac1000090000000000000024ac100018000000d0ab100015000000c8b01200000000009ca7100031000000c8b0120000000000e5ab100036000000c8b01200000000002a7f12000b000000357f12000a000000927f12000c00000000000000cbab100005000000000000008c9110000f00000071ab100028000000c8b01200000000009ca7100031000000c8b012000000000099ab100032000000c8b01200000000002a7f12000b0000004531110011000000927f12000c000000000000006cab10000500000000000000138212000c000000ceaa100041000000c8b01200000000000fab100025000000c8b0120000000000aea3100033000000c8b012000000000034ab100038000000c8b01200000000002a7f12000b000000650b110016000000927f12000c00000080aa100026000000c8b0120000000000a6aa100028000000c8b0120000000000aea3100033000000c8b01200000000002a7f12000b000000977e110010000000927f12000c000000b1a910004b000000c8b0120000000000fca9100022000000c8b01200000000001eaa100028000000c8b0120000000000aea3100033000000c8b012000000000046aa10003a000000c8b01200000000002a7f12000b000000977e110010000000927f12000c000000000000009ba910000200000000000000138212000c000000000000009da910000a00000000000000a7a910000a000000b5a810000f000000c8b0120000000000c4a810003f000000c8b0120000000000aea3100033000000c8b012000000000003a910003600000039a91000460000007fa9100009000000c8b012000000000088a9100013000000c8b01200000000002a7f12000b000000650b110016000000927f12000c000000cda7100011000000c8b0120000000000dea710004200000020a810004200000062a810003e000000c8b0120000000000aea3100033000000c8b0120000000000a0a8100015000000c8b01200000000002a7f12000b000000bc48120008000000927f12000c0000007fa710001d000000c8b01200000000009ca7100031000000c8b01200000000002a7f12000b000000357f12000a000000977e110010000000927f12000c000000000000006fa71000100000000000000070a311000700000078a6100058000000d0a6100049000000c8b0120000000000aea3100033000000c8b012000000000000a6100032000000c8b012000000000032a6100017000000c8b01200000000002a7f12000b00000019a71000420000005ba7100014000000927f12000c00000082a5100051000000d3a510002d000000c8b0120000000000aea3100033000000c8b012000000000000a6100032000000c8b012000000000032a6100017000000c8b01200000000002a7f12000b00000049a610002f000000927f12000c00000022a410003d000000c8b0120000000000aea3100033000000c8b01200000000005fa4100034000000c8b012000000000093a4100054000000e7a41000570000003ea510002c000000c8b01200000000006aa5100018000000c8b01200000000002a7f12000b000000977e110010000000927f12000c00000000000000ffd711000600000000000000138212000c00000085a3100029000000c8b0120000000000aea3100033000000c8b0120000000000e1a310002f000000c8b012000000000010a4100012000000c8b01200000000002a7f12000b000000357f12000a000000927f12000c000000a8a2100010000000c8b0120000000000b8a2100037000000c8b0120000000000efa2100019000000c8b012000000000008a310003b000000c8b012000000000043a3100042000000c8b01200000000002a7f12000b000000650b110016000000927f12000c000000204265636f6d6520612070726f78792e2054686973206d7573742062652063616c6c6564207072696f7220746f2061206c61746572206061637469766174655f70726f7879602e204f726967696e206d7573742062652061205369676e65642e202d2060746172676574603a20546865206163636f756e742077686f736520766f7465732077696c6c206c617465722062652070726f786965642e2060636c6f73655f70726f787960206d7573742062652063616c6c6564206265666f726520746865206163636f756e742063616e2062652064657374726f7965642e20556e6c6f636b20746f6b656e732074686174206861766520616e2065787069726564206c6f636b2e20546865206469737061746368206f726967696e206f6620746869732063616c6c206d757374206265205f5369676e65645f2e202d2060746172676574603a20546865206163636f756e7420746f2072656d6f766520746865206c6f636b206f6e2e20456d6974732060556e6c6f636b6564602e2052656d6f766520616e20657870697265642070726f706f73616c20707265696d61676520616e6420636f6c6c65637420746865206465706f7369742e202d206070726f706f73616c5f68617368603a2054686520707265696d6167652068617368206f6620612070726f706f73616c2e20546869732077696c6c206f6e6c7920776f726b2061667465722060566f74696e67506572696f646020626c6f636b732066726f6d207468652074696d6520746861742074686520707265696d61676520776173206e6f7465642c2069662069742773207468652073616d65206163636f756e7420646f696e672069742e2049662069742773206120646966666572656e74206163636f756e742c207468656e206974276c6c206f6e6c7920776f726b20616e206164646974696f6e616c2060456e6163746d656e74506572696f6460206c617465722e20456d6974732060507265696d616765526561706564602e2052656769737465722074686520707265696d61676520666f7220616e207570636f6d696e672070726f706f73616c2e2054686973207265717569726573207468652070726f706f73616c20746f20626520696e207468652064697370617463682071756575652e204e6f206465706f736974206973206e65656465642e202d2060656e636f6465645f70726f706f73616c603a2054686520707265696d616765206f6620612070726f706f73616c2e20456d6974732060507265696d6167654e6f746564602e202d20446570656e64656e74206f6e207468652073697a65206f662060656e636f6465645f70726f706f73616c602e2052656769737465722074686520707265696d61676520666f7220616e207570636f6d696e672070726f706f73616c2e205468697320646f65736e27742072657175697265207468652070726f706f73616c20746f20626520696e207468652064697370617463682071756575652062757420646f657320726571756972652061206465706f7369742c2072657475726e6564206f6e636520656e61637465642e202d20446570656e64656e74206f6e207468652073697a65206f662060656e636f6465645f70726f706f73616c60206275742070726f7465637465642062792061202020207265717569726564206465706f7369742e656e636f6465645f70726f706f73616c20436c6561727320616c6c207075626c69632070726f706f73616c732e20546865206469737061746368206f726967696e206f6620746869732063616c6c206d757374206265205f526f6f745f2e20556e64656c656761746520766f74652e204d7573742062652073656e742066726f6d20616e206163636f756e742074686174206861732063616c6c65642064656c65676174652070726576696f75736c792e2054686520746f6b656e732077696c6c20626520726564756365642066726f6d20616e20696e646566696e697465206c6f636b20746f20746865206d6178696d756d20706f737369626c65206163636f7264696e6720746f2074686520636f6e76696374696f6e206f6620746865207072696f722064656c65676174696f6e2e20456d6974732060556e64656c656761746564602e2044656c656761746520766f74652e2043757272656e6379206973206c6f636b656420696e646566696e6974656c7920666f72206173206c6f6e6720617320697427732064656c6567617465642e202d2060746f603a20546865206163636f756e7420746f206d616b6520612064656c6567617465206f66207468652073656e6465722e202d2060636f6e76696374696f6e603a2054686520636f6e76696374696f6e20746861742077696c6c20626520617474616368656420746f207468652064656c656761746564202020766f7465732e20456d697473206044656c656761746564602e746f636f6e76696374696f6e436f6e76696374696f6e2044656163746976617465207468652070726f78792c20627574206c65617665206f70656e20746f2074686973206163636f756e742e2043616c6c6564206279207468652073746173682e205468652070726f7879206d75737420616c7265616479206265206163746976652e204e4f54453a205573656420746f2062652063616c6c6564206072656d6f76655f70726f7879602e202d206070726f7879603a20546865206163636f756e7420746861742077696c6c2062652064656163746976617465642061732070726f78792e20436c656172207468652070726f78792e2043616c6c6564206279207468652070726f78792e204e4f54453a205573656420746f2062652063616c6c6564206072657369676e5f70726f7879602e205370656369667920612070726f7879207468617420697320616c7265616479206f70656e20746f2075732e2043616c6c6564206279207468652073746173682e204e4f54453a205573656420746f2062652063616c6c656420607365745f70726f7879602e202d206070726f7879603a20546865206163636f756e7420746861742077696c6c206265206163746976617465642061732070726f78792e70726f78792043616e63656c20612070726f706f73616c2071756575656420666f7220656e6163746d656e742e202d20607768696368603a2054686520696e646578206f6620746865207265666572656e64756d20746f2063616e63656c2e77686963682052656d6f76652061207265666572656e64756d2e202d20607265665f696e646578603a2054686520696e646578206f6620746865207265666572656e64756d20746f2063616e63656c2e7265665f696e646578436f6d706163743c5265666572656e64756d496e6465783e205665746f20616e6420626c61636b6c697374207468652065787465726e616c2070726f706f73616c20686173682e20546865206469737061746368206f726967696e206f6620746869732063616c6c206d75737420626520605665746f4f726967696e602e20202d206070726f706f73616c5f68617368603a2054686520707265696d6167652068617368206f66207468652070726f706f73616c20746f207665746f20616e6420626c61636b6c6973742e20456d69747320605665746f6564602e202d2054776f20444220656e74726965732e202d20506572666f726d7320612062696e61727920736561726368206f6e20606578697374696e675f7665746f657273602077686963682073686f756c64206e6f7420202062652076657279206c617267652e205363686564756c65207468652063757272656e746c792065787465726e616c6c792d70726f706f736564206d616a6f726974792d63617272696573207265666572656e64756d20746f206265207461626c656420696d6d6564696174656c792e204966207468657265206973206e6f2065787465726e616c6c792d70726f706f736564207265666572656e64756d2063757272656e746c792c206f72206966207468657265206973206f6e6520627574206974206973206e6f742061206d616a6f726974792d63617272696573207265666572656e64756d207468656e206974206661696c732e20546865206469737061746368206f6620746869732063616c6c206d757374206265206046617374547261636b4f726967696e602e202d206070726f706f73616c5f68617368603a205468652068617368206f66207468652063757272656e742065787465726e616c2070726f706f73616c2e202d2060766f74696e675f706572696f64603a2054686520706572696f64207468617420697320616c6c6f77656420666f7220766f74696e67206f6e20746869732070726f706f73616c2e20496e6372656173656420746f20202060456d657267656e6379566f74696e67506572696f646020696620746f6f206c6f772e202d206064656c6179603a20546865206e756d626572206f6620626c6f636b20616674657220766f74696e672068617320656e64656420696e20617070726f76616c20616e6420746869732073686f756c64206265202020656e61637465642e205468697320646f65736e277420686176652061206d696e696d756d20616d6f756e742e20456d697473206053746172746564602e70726f706f73616c5f68617368766f74696e675f706572696f6464656c6179205363686564756c652061206e656761746976652d7475726e6f75742d62696173207265666572656e64756d20746f206265207461626c6564206e657874206f6e6365206974206973206c6567616c20746f207363686564756c6520616e2065787465726e616c207265666572656e64756d2e20546865206469737061746368206f6620746869732063616c6c206d757374206265206045787465726e616c44656661756c744f726967696e602e202d206070726f706f73616c5f68617368603a2054686520707265696d6167652068617368206f66207468652070726f706f73616c2e20556e6c696b65206065787465726e616c5f70726f706f7365602c20626c61636b6c697374696e6720686173206e6f20656666656374206f6e207468697320616e64206974206d6179207265706c6163652061207072652d7363686564756c6564206065787465726e616c5f70726f706f7365602063616c6c2e205363686564756c652061206d616a6f726974792d63617272696573207265666572656e64756d20746f206265207461626c6564206e657874206f6e6365206974206973206c6567616c20746f207363686564756c6520616e2065787465726e616c207265666572656e64756d2e20546865206469737061746368206f6620746869732063616c6c206d757374206265206045787465726e616c4d616a6f726974794f726967696e602e205363686564756c652061207265666572656e64756d20746f206265207461626c6564206f6e6365206974206973206c6567616c20746f207363686564756c6520616e2065787465726e616c207265666572656e64756d2e20546865206469737061746368206f726967696e206f6620746869732063616c6c206d757374206265206045787465726e616c4f726967696e602e205363686564756c6520616e20656d657267656e63792063616e63656c6c6174696f6e206f662061207265666572656e64756d2e2043616e6e6f742068617070656e20747769636520746f207468652073616d6520546865206469737061746368206f726967696e206f6620746869732063616c6c206d757374206265206043616e63656c6c6174696f6e4f726967696e602e202d607265665f696e646578603a2054686520696e646578206f6620746865207265666572656e64756d20746f2063616e63656c2e202d20446570656e6473206f6e2073697a65206f662073746f72616765207665632060566f74657273466f726020666f722074686973207265666572656e64756d2e20566f746520696e2061207265666572656e64756d206f6e20626568616c66206f6620612073746173682e2049662060766f74652e69735f6179652829602c2074686520766f746520697320746f20656e616374207468652070726f706f73616c3b206f7468657277697365206974206973206120766f746520746f206b65657020746865207374617475732071756f2e202d20607265665f696e646578603a2054686520696e646578206f6620746865207265666572656e64756d20746f2070726f787920766f746520666f722e202d2060766f7465603a2054686520766f746520636f6e66696775726174696f6e2e202d204f6e65204442206368616e67652c206f6e6520444220656e7472792e20566f746520696e2061207265666572656e64756d2e2049662060766f74652e69735f6179652829602c2074686520766f746520697320746f20656e616374207468652070726f706f73616c3b206f7468657277697365206974206973206120766f746520746f206b65657020746865207374617475732071756f2e202d20607265665f696e646578603a2054686520696e646578206f6620746865207265666572656e64756d20746f20766f746520666f722e205369676e616c732061677265656d656e742077697468206120706172746963756c61722070726f706f73616c2e20546865206469737061746368206f726967696e206f6620746869732063616c6c206d757374206265205f5369676e65645f20616e64207468652073656e646572206d75737420686176652066756e647320746f20636f76657220746865206465706f7369742c20657175616c20746f20746865206f726967696e616c206465706f7369742e202d206070726f706f73616c603a2054686520696e646578206f66207468652070726f706f73616c20746f207365636f6e642e436f6d706163743c50726f70496e6465783e2050726f706f736520612073656e73697469766520616374696f6e20746f2062652074616b656e2e20546865206469737061746368206f726967696e206f6620746869732063616c6c206d757374206265205f5369676e65645f20616e64207468652073656e646572206d75737420686176652066756e647320746f20636f76657220746865206465706f7369742e202d206070726f706f73616c5f68617368603a205468652068617368206f66207468652070726f706f73616c20707265696d6167652e202d206076616c7565603a2054686520616d6f756e74206f66206465706f73697420286d757374206265206174206c6561737420604d696e696d756d4465706f73697460292e20456d697473206050726f706f736564602e202d2054776f204442206368616e6765732c206f6e6520444220656e7472792e00000000f48b12000f0000000000000000000000d39310000900000000000000000000000000000000000000000000000000000000000000c8b012004cbe1000000000000000000068bd1000010000000000000001000000000000002b9410000b000000000000000000000070bd10002700000000000000000000000000000000000000000000000000000000000000c8b0120098bd10000000000000000000a8bd10000100000000000000010000000000000019941000090000000101000000000000811312000700000000000000b0bd10003500000000000000000000000000000000000000c8b01200e8bd10000000000000000000f8bd10000200000000000000000000000000000036941000090000000101000000000000d3931000090000000000000008be10002100000000000000000000000000000000000000c8b012002cbe100000000000000000003cbe100001000000000000000000000000000000038c12000f00000000000000000000008c9110000f00000000000000000000000000000000000000000000000000000000000000c8b012004cbe1000000000000000000044be1000010000000000000001000000000000001b8c12000d00000000000000000000008c9110000f00000000000000000000000000000000000000000000000000000000000000c8b012004cbe100000000000000000005cbe100002000000000000000100000000000000ce8b10001000000001010000000000008c9110000f000000000000006cbe10002700000000000000000000000000000000000000c8b0120000c01000000000000000000094be1000010000000000000000000000000000000c9410000d00000000000000000000009cbe10002f00000000000000000000000000000000000000000000000000000000000000c8b01200ccbe10000000000000000000dcbe100001000000000000000100000000000000229410000900000001010000000000008c9110000f00000000000000e03c12001100000000000000000000000000000000000000c8b01200e4be10000000000000000000f4be100001000000000000000100000000000000de8b1000060000000101000000000000fcbe10001f00000000000000bc1f11000400000000000000000000000000000000000000c8b012001cbf100000000000000000002cbf100004000000000000000100000000000000540d1200050000000101000000000000138212000c000000000000004cbf10001800000000000000000000000000000000000000c8b0120064bf1000000000000000000074bf1000020000000000000000000000000000008a8910000b0000000101010000000000138212000c0000000000000084bf10001a00000000000000000000000000000000000000c8b01200a0bf10000000000000000000b0bf100001000000000000000100000000000000f99a1100050000000101000000000000138212000c00000000000000f50812000e00000000000000000000000000000000000000c8b01200b8bf10000000000000000000c8bf100002000000000000000000000000000000288c120015000000000000000000000000ee11000400000000000000000000000000000000000000000000000000000000000000c8b012008cc010000000000000000000d8bf1000020000000000000001000000000000003f9410000c0000000000000000000000e8bf10001800000000000000000000000000000000000000000000000000000000000000c8b0120000c01000000000000000000010c010000400000000000000000000000000000030c0100009000000010100000000000081131200070000000000000039c010002300000000000000000000000000000000000000c8b012005cc0100000000000000000006cc01000020000000000000000000000000000007cc010000d000000010100000000000081131200070000000000000000ee11000400000000000000000000000000000000000000c8b012008cc0100000000000000000009cc01000010000000000000001000000e4c710003d0000005665633c2850726f70496e6465782c20543a3a486173682c20543a3a4163636f756e744964293e003c0000000000000001000000590000009cc7100048000000285665633c75383e2c20543a3a4163636f756e7449642c2042616c616e63654f663c543e2c20543a3a426c6f636b4e756d626572290000003c00000000000000010000006a0000000bc710005800000063c71000390000002842616c616e63654f663c543e2c205665633c543a3a4163636f756e7449643e290000003c00000000000000010000006a000000eac61000210000009ec610004c0000003c00000000000000010000006b0000001ec610004900000067c61000370000005265666572656e64756d496e666f3c543a3a426c6f636b4e756d6265722c20543a3a486173683e00f1c510002d0000005665633c28543a3a426c6f636b4e756d6265722c20543a3a486173682c205265666572656e64756d496e646578293e003c000000000000000100000059000000a1c51000500000003c00000000000000010000005900000078c5100029000000285265666572656e64756d496e6465782c20543a3a4163636f756e74496429003c00000000000000010000005100000033c41000580000008bc4100053000000dec410005700000035c510004300000050726f787953746174653c543a3a4163636f756e7449643e3c000000000000000100000051000000c5c310004c00000011c410002200000028543a3a4163636f756e7449642c20436f6e76696374696f6e2900003c00000000000000010000006c00000075c31000500000003c000000000000000100000051000000cac210005700000021c31000540000006ac2100056000000c0c210000a00000028543a3a486173682c20566f74655468726573686f6c64293c0000000000000001000000510000007cc1100056000000d2c110005500000027c210002900000050c210001a000000426c61636b6c69737428543a3a426c6f636b4e756d6265722c205665633c543a3a4163636f756e7449643e293c00000000000000010000006a000000eec010005400000042c110003a00000043616e63656c6c6174696f6e730000003c000000000000000100000051000000a4c010004a000000205265636f7264206f6620616c6c2070726f706f73616c7320746861742068617665206265656e207375626a65637420746f20656d657267656e63792063616e63656c6c6174696f6e2e2041207265636f7264206f662077686f207665746f656420776861742e204d6170732070726f706f73616c206861736820746f206120706f737369626c65206578697374656e7420626c6f636b206e756d6265722028756e74696c207768656e206974206d6179206e6f742062652072657375626d69747465642920616e642077686f207665746f65642069742e20546865207265666572656e64756d20746f206265207461626c6564207768656e6576657220697420776f756c642062652076616c696420746f207461626c6520616e2065787465726e616c2070726f706f73616c2e20546869732068617070656e73207768656e2061207265666572656e64756d206e6565647320746f206265207461626c656420616e64206f6e65206f662074776f20636f6e646974696f6e7320617265206d65743a202d20604c6173745461626c656457617345787465726e616c60206973206066616c7365603b206f72202d20605075626c696350726f70736020697320656d7074792e205472756520696620746865206c617374207265666572656e64756d207461626c656420776173207375626d69747465642065787465726e616c6c792e2046616c7365206966206974207761732061207075626c69632070726f706f73616c2e204163636f756e747320666f7220776869636820746865726520617265206c6f636b7320696e20616374696f6e207768696368206d61792062652072656d6f76656420617420736f6d6520706f696e7420696e20746865206675747572652e205468652076616c75652069732074686520626c6f636b206e756d62657220617420776869636820746865206c6f636b206578706972657320616e64206d61792062652072656d6f7665642e2047657420746865206163636f756e742028616e64206c6f636b20706572696f64732920746f20776869636820616e6f74686572206163636f756e742069732064656c65676174696e6720766f74652e2057686f2069732061626c6520746f20766f746520666f722077686f6d2e2056616c7565206973207468652066756e642d686f6c64696e67206163636f756e742c206b65792069732074686520766f74652d7472616e73616374696f6e2d73656e64696e67206163636f756e742e204765742074686520766f746520696e206120676976656e207265666572656e64756d206f66206120706172746963756c617220766f7465722e2054686520726573756c74206973206d65616e696e6766756c206f6e6c792069662060766f746572735f666f726020696e636c756465732074686520766f746572207768656e2063616c6c6564207769746820746865207265666572656e64756d2028796f75276c6c20676574207468652064656661756c742060566f7465602076616c7565206f7468657277697365292e20496620796f7520646f6e27742077616e7420746f20636865636b2060766f746572735f666f72602c207468656e20796f752063616e20616c736f20636865636b20666f722073696d706c65206578697374656e636520776974682060566f74654f663a3a636f6e7461696e735f6b6579602066697273742e204765742074686520766f7465727320666f72207468652063757272656e742070726f706f73616c2e205175657565206f66207375636365737366756c207265666572656e646120746f20626520646973706174636865642e2053746f726564206f72646572656420627920626c6f636b206e756d6265722e20496e666f726d6174696f6e20636f6e6365726e696e6720616e7920676976656e207265666572656e64756d2e20546865206c6f77657374207265666572656e64756d20696e64657820726570726573656e74696e6720616e20756e62616b6564207265666572656e64756d2e20457175616c20746f20605265666572656e64756d436f756e74602069662074686572652069736e2774206120756e62616b6564207265666572656e64756d2e20546865206e6578742066726565207265666572656e64756d20696e6465782c20616b6120746865206e756d626572206f66207265666572656e6461207374617274656420736f206661722e2054686f73652077686f2068617665206c6f636b65642061206465706f7369742e204d6170206f662068617368657320746f207468652070726f706f73616c20707265696d6167652c20616c6f6e6720776974682077686f207265676973746572656420697420616e64207468656972206465706f7369742e2054686520626c6f636b206e756d6265722069732074686520626c6f636b20617420776869636820697420776173206465706f73697465642e20546865207075626c69632070726f706f73616c732e20556e736f727465642e20546865207365636f6e64206974656d206973207468652070726f706f73616c277320686173682e20546865206e756d626572206f6620287075626c6963292070726f706f73616c7320746861742068617665206265656e206d61646520736f206661722e00000000000000acc910000f00000000000000f50812000e00000000000000c8b01200bcc910000000000000000000ccc91000050000000000000000000000f4c910000c00000000000000f50812000e00000000000000c8b0120084ca1000000000000000000000ca100001000000000000000000000008ca10000c00000000000000f50812000e00000000000000c8b0120084ca1000000000000000000014ca10000100000000000000000000001cca10000e00000000000000845712000c00000000000000c8b012002cca100000000000000000003cca100001000000000000000000000044ca10001500000000000000f50812000e00000000000000c8b012005cca100000000000000000006cca100001000000000000000000000074ca10000d00000000000000f50812000e00000000000000c8b0120084ca1000000000000000000094ca10000100000000000000000000009cca10001300000000000000845712000c00000000000000c8b01200b0ca10000000000000000000c0ca10000100000000000000456e6163746d656e74506572696f64003c00000000000000010000006d00000059cc10005c000000c8b0120000000000b5cc10004c00000001cd10005a0000005bcd1000270000004c61756e6368506572696f6420cc100039000000566f74696e67506572696f64f2cb10002e0000004d696e696d756d4465706f73697400003c000000000000000100000057000000a5cb10004d000000456d657267656e6379566f74696e67506572696f640000003c00000000000000010000006e0000006acb10003b000000436f6f6c6f6666506572696f640000003c00000000000000010000006f00000012cb100058000000507265696d616765427974654465706f736974003c000000000000000100000065000000c8ca10004a0000002054686520616d6f756e74206f662062616c616e63652074686174206d757374206265206465706f7369746564207065722062797465206f6620707265696d6167652073746f7265642e20506572696f6420696e20626c6f636b7320776865726520616e2065787465726e616c2070726f706f73616c206d6179206e6f742062652072652d7375626d6974746564206166746572206265696e67207665746f65642e204d696e696d756d20766f74696e6720706572696f6420616c6c6f77656420666f7220616e20656d657267656e6379207265666572656e64756d2e20546865206d696e696d756d20616d6f756e7420746f20626520757365642061732061206465706f73697420666f722061207075626c6963207265666572656e64756d2070726f706f73616c2e20486f77206f6674656e2028696e20626c6f636b732920746f20636865636b20666f72206e657720766f7465732e20486f77206f6674656e2028696e20626c6f636b7329206e6577207075626c6963207265666572656e646120617265206c61756e636865642e20546865206d696e696d756d20706572696f64206f66206c6f636b696e6720616e642074686520706572696f64206265747765656e20612070726f706f73616c206265696e6720617070726f76656420616e6420656e61637465642e2049742073686f756c642067656e6572616c6c792062652061206c6974746c65206d6f7265207468616e2074686520756e7374616b6520706572696f6420746f20656e73757265207468617420766f74696e67207374616b657273206861766520616e206f70706f7274756e69747920746f2072656d6f7665207468656d73656c7665732066726f6d207468652073797374656d20696e207468652063617365207768657265207468657920617265206f6e20746865206c6f73696e672073696465206f66206120766f74652e0000000000009f8a1000080000000000000078d01000010000000000000000000000b1ea11000f0000000000000080d01000010000000000000000000000978a1000080000000000000088d010000100000000000000000000008f8a1000080000000000000090d01000010000000000000000000000808a10000f0000000000000098d01000010000000000000000000000c0ea11001100000000000000a0d010000100000000000000000000006d8a10001300000000000000a8d010000100000000000000000000005c8a10001100000000000000b0d01000010000000000000000000000518a10000b00000000000000b8d01000010000000000000000000000478a10000a00000000000000c0d010000100000000000000000000003a8a10000d00000000000000c8d0100001000000000000000000000005e611000c00000000000000d0d01000010000000000000000000000308a10000a00000000000000d8d01000010000000000000000000000248a10000c00000000000000e0d01000010000000000000000000000138a10001100000000000000e8d01000010000000000000000000000088a10000b00000000000000f0d01000010000000000000000000000038a10000500000000000000f8d01000010000000000000000000000fb891000080000000000000000d11000010000000000000000000000ec8910000f0000000000000008d11000010000000000000000000000db891000110000000000000010d11000010000000000000000000000cc8910000f0000000000000018d11000010000000000000000000000c18910000b0000000000000020d11000010000000000000000000000b8891000090000000000000028d11000010000000000000000000000ae8910000a0000000000000030d11000010000000000000000000000a7891000070000000000000038d110000100000000000000000000009e891000090000000000000040d1100001000000000000000000000095891000090000000000000048d1100001000000000000003fd410000e00000027d41000180000001bd410000c0000000dd410000e000000e7d3100026000000d1d3100016000000b6d310001b0000008bd310002b0000007ed310000d00000069d310001500000042d310002700000032d310001000000026d310000c00000018d310000e00000001d3100017000000f4d210000d000000ead210000a000000e1d2100009000000ced2100013000000acd21000220000009bd210001100000086d21000150000005dd210002900000021d210003c000000e2d110003f00000094d110004e00000050d110004400000020412070726f78792d64652d70616972696e672077617320617474656d7074656420746f20616e206163636f756e74207468617420776173206e6f74206163746976652e20412070726f78792d70616972696e672077617320617474656d7074656420746f20616e206163636f756e74207468617420776173206f70656e20746f20616e6f74686572206163636f756e742e20412070726f78792d70616972696e672077617320617474656d7074656420746f20616e206163636f756e74207468617420776173206e6f74206f70656e2e20546865206c6f636b206f6e20746865206163636f756e7420746f20626520756e6c6f636b656420686173206e6f742079657420657870697265642e2054686520746172676574206163636f756e7420646f6573206e6f7420686176652061206c6f636b2e204e6f2070726f706f73616c732077616974696e6720496e76616c696420707265696d61676520566f746520676976656e20666f7220696e76616c6964207265666572656e64756d20507265696d616765206e6f7420666f756e6420496d6d696e656e7420546f6f206561726c79204e6f7420696d6d696e656e7420507265696d61676520616c7265616479206e6f746564204e6f742064656c6567617465642057726f6e672070726f787920416c726561647920612070726f7879204964656e74697479206d6179206e6f74207665746f20612070726f706f73616c207477696365204e6f2065787465726e616c2070726f706f73616c20496e76616c69642068617368204e6578742065787465726e616c2070726f706f73616c206e6f742073696d706c65206d616a6f726974792050726f706f73616c207374696c6c20626c61636b6c69737465642050726f706f73616c20616c7265616479206d6164652043616e6e6f742063616e63656c207468652073616d652070726f706f73616c20747769636520556e6b6e6f776e20696e646578204e6f7420612070726f78792050726f706f73616c20646f6573206e6f742065786973742056616c756520746f6f206c6f77000000000000008cd4100004000000000000000000000090d410000e000000000000000a000000e70000000000000000000000a0d410000c000000000000006e6f64657375627374726174652d6e6f64650000df6acb689907609b0200000037e397fc7c91f5e40100000040fe3ad401f8959a04000000d2bc9897eed08f1501000000f78b278be53f454c02000000ed99c5acb25eedf502000000cbca25e39f14238701000000687ad44ad37f03c201000000bc9d89904f5b923f0100000068b66ba122c93fa70100000037c8bb1350a9a2a801000000ab3c0572291feb8b010000006772616e62616265696d6f6e617564690000000040787d010065cd1d00e1f505d85aae1ec0542205b0508f1f38e4750488467020d853e903603c5121d0bf760338323222a8591903402013236039cd02480ef423a82a8f0268f8d42470955c02b8dab525c05a3302d8c4962648bd1102e0b27727a855f601e8a05828e8fedf0180773929c0cacd01586d1a2af8f1be019053fb2a50d8b201d00edc2be0fca80138edbc2c48f2a001e06d9d2d80669a01c80d7e2e500f9501c0575e2f08b6900140323f30e0278d0148202031b0418a0108a3ff3120e8870120bedf32f0fb85013856c03398698401f0fda03478218301b8d87f35d8178201d8c26036183d8101b8223e37508d800188d21c38c8fc7f0168b5f93898877f01a829d139d8297f0120d6ab3ab8db7e0168ae803b389d7e0100ca9a3b68957e01000000000df31000060000000000000070000000000000000000000000000000000000000000000000000000000000007100000000000000000000000000000072000000000000000000000000000000730000000000000000000000000000007400000000000000000000000000000038e210000700000000000000750000000000000000000000000000000000000000000000000000000000000076000000000000000000000000000000770000000000000000000000000000007300000000000000000000000000000078000000000000000000000000000000aa8312000400000000000000790000000000000000000000000000000000000000000000000000000000000073000000000000000000000002000000000000000000000000000000000000007a000000000000000000000000000000730000000000000000000000000000005591120009000000000000007b000000000000000000000000000000000000000000000000000000000000007c000000000000000000000002000000000000000000000000000000000000007d00000000000000000000000000000073000000000000000000000000000000948312000a000000000000007e000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000020000000000000000000000000000000000000073000000000000000000000000000000800000000000000000000000000000009b6c120007000000000000008100000000000000000000000000000000000000000000000000000000000000820000000000000000000000000000008300000000000000000000000000000073000000000000000000000000000000730000000000000000000000000000006791120008000000000000008400000000000000000000000000000000000000000000000000000000000000850000000000000000000000000000008600000000000000000000000000000087000000000000000000000000000000880000000000000000000000000000003fe210001200000000000000890000000000000000000000000000000000000000000000000000000200000000000000000000000000000002000000000000000000000000000000000000008a00000000000000000000000000000073000000000000000000000000000000eb90120007000000000000008b000000000000000000000000000000000000000000000000000000000000008c0000000000000000000000000000008d0000000000000000000000000000008e0000000000000000000000000000008f0000000000000000000000000000001c8f12000700000000000000900000000000000000000000000000000000000000000000000000000000000091000000000000000000000000000000920000000000000000000000000000009300000000000000000000000000000094000000000000000000000000000000128c1200090000000000000095000000000000000000000000000000000000000000000000000000000000009600000000000000000000000000000097000000000000000000000000000000980000000000000000000000000000009900000000000000000000000000000051e2100007000000000000009a000000000000000000000000000000000000000000000000000000000000009b0000000000000000000000000000009c000000000000000000000000000000730000000000000000000000000000009d00000000000000000000000000000058e2100012000000000000009e000000000000000000000000000000000000000000000000000000000000009b0000000000000000000000000000009c000000000000000000000000000000730000000000000000000000000000009d0000000000000000000000000000006ae2100009000000000000009f00000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000a1000000000000000000000000000000a2000000000000000000000000000000a300000000000000000000000000000073e210001300000000000000a400000000000000000000000000000000000000000000000000000000000000a5000000000000000000000000000000a6000000000000000000000000000000730000000000000000000000000000007300000000000000000000000000000086e210000f000000020000000000000000000000000000000000000000000000000000000000000000000000a700000000000000000000000200000000000000000000000000000000000000a8000000000000000000000000000000a900000000000000000000000000000095e210000700000000000000aa00000000000000000000000000000000000000000000000000000000000000ab000000000000000000000000000000ac00000000000000000000000000000073000000000000000000000000000000ad000000000000000000000000000000809112000800000000000000ae00000000000000000000000000000000000000000000000000000000000000af000000000000000000000000000000b0000000000000000000000000000000b1000000000000000000000000000000b20000000000000000000000000000009ce210000900000000000000b300000000000000000000000000000000000000000000000000000000000000b4000000000000000000000000000000b5000000000000000000000000000000b6000000000000000000000000000000b7000000000000000000000000000000a43111000400000000000000b800000000000000000000000000000000000000000000000000000000000000b9000000000000000000000000000000ba00000000000000000000000000000073000000000000000000000000000000bb000000000000000000000000000000d38d12000800000000000000bc00000000000000000000000000000000000000000000000000000000000000bd000000000000000000000000000000be00000000000000000000000000000073000000000000000000000000000000bf0000000000000000000000000000007e8312001200000002000000000000000000000000000000000000000000000000000000000000000000000073000000000000000000000002000000000000000000000000000000000000007300000000000000000000000000000073000000000000000000000000000000ed8d12000800000000000000c00000000000000000000000000000000000000000000000000000000000000073000000000000000000000000000000c100000000000000000000000000000073000000000000000000000000000000730000000000000000000000000000005c9f11001800000000000000c20000000000000000000000000000000000000000000000000000000000000073000000000000000000000002000000000000000000000000000000000000007300000000000000000000000000000073000000000000000000000000000000a5e210000800000000000000c300000000000000000000000000000000000000000000000000000000000000c4000000000000000000000000000000c500000000000000000000000000000073000000000000000000000000000000c6000000000000000000000000000000c61a11000700000000000000c700000000000000000000000000000000000000000000000000000000000000c8000000000000000000000000000000c9000000000000000000000000000000ca000000000000000000000000000000cb000000000000000000000000000000670b12000800000000000000cc00000000000000000000000000000000000000000000000000000000000000cd000000000000000000000000000000ce00000000000000000000000000000073000000000000000000000000000000cf000000000000000000000000000000ade210000700000000000000d000000000000000000000000000000000000000000000000000000000000000d1000000000000000000000000000000d2000000000000000000000000000000d3000000000000000000000000000000d400000000000000000000005574696c6974795472616e73616374696f6e5061796d656e74436f756e63696c546563686e6963616c436f6d6d6974746565456c656374696f6e73546563686e6963616c4d656d6265727368697046696e616c697479547261636b65724772616e647061436f6e7472616374734964656e7469747956657374696e676865617274626561744865617274626561744166746572000000000050e31000110000000000000064e310000100000000000000000000006ce3100001000000000000000000000074e310000700000000000000c8b012000000000000000000000000007ce3100001000000000000000000000084e310000b0000000000000090e3100001000000000000000000000098e310000100000000000000486561727462656174526563656976656400000069e410000b00000039e4100030000000416c6c476f6f640004e4100035000000536f6d654f66666c696e6500ece3100018000000a0e310004c0000002041742074686520656e64206f66207468652073657373696f6e2c206174206c65617374206f6e63652076616c696461746f722077617320666f756e6420746f206265206f66666c696e652e5665633c4964656e74696669636174696f6e5475706c653e2041742074686520656e64206f66207468652073657373696f6e2c206e6f206f6666656e63652077617320636f6d6d69747465642e2041206e657720686561727462656174207761732072656365697665642066726f6d2060417574686f72697479496460417574686f726974794964526563656e7448696e747366696e616c5f68696e74000000b4e2100009000000417574686f726564426c6f636b735570646174654f72646572656448696e74734d656469616e616c77617973206174206c65617374206f6e6520726563656e742073616d706c653b2071656483e510004c0000006d0000002b000000726563656e7420616e64206f72646572656420636f6e7461696e207468652073616d65206974656d733b2071656400003c00000004000000040000002e00000083e510004c000000780000001b0000007072756e696e672064696374617465642062792077696e646f775f73697a6520776869636820697320616c776179732073617475726174656420617420313b207165642f686f6d652f616e6472652f576f726b62656e63682f706172697479746563682f7375627374726174652f6672616d652f66696e616c6974792d747261636b65722f7372632f6c69622e7273004de6100016000000b9211200020000004de610001600000063e6100012000000696d6f6e6c696e6570616c6c65745f696d5f6f6e6c696e652f686f6d652f616e6472652f576f726b62656e63682f706172697479746563682f7375627374726174652f6672616d652f696d2d6f6e6c696e652f7372632f6c69622e7273536b697070696e6720686561727462656174206174202e204e6f7420612076616c696461746f722e00000087e710001c00000059e710002e00000027e710001a00000041e71000180000000be710000a00000015e7100012000000f3e6100018000000dde6100016000000c0e610001d0000004661696c656420746f206665746368206e6574776f726b2073746174654661696c656420746f2061637175697265206c6f636b4661696c656420746f207369676e20686561727462656174417574686f726974792020697320616c7265616479206f6e6c696e6548656172746265617420616c72656164792073656e74206174202e2057616974696e6720666f7220696e636c7573696f6e2e546f6f206561726c7920746f2073656e64206865617274626561742c206e657874206578706563746564206174204661696c656420746f207375626d6974207472616e73616374696f6e7061726974792f696d2d6f6e6c696e652d6865617274626561742f0000e0e7100008000000e8e710002000000008e810000b0000009d841200030000005b696e6465783a205d205265706f7274696e6720696d2d6f6e6c696e6520617420626c6f636b3a20202873657373696f6e3a2000c8b0120000000000c8b01200000000003c0000000400000004000000d50000003c0000000400000004000000d5000000506172656e7420686173682073686f756c642062652076616c69642e5472616e73616374696f6e207472696520726f6f74206d7573742062652076616c69642edbe8100032000000446967657374206974656d206d757374206d6174636820746861742063616c63756c617465642e53746f7261676520726f6f74206d757374206d6174636820746861742063616c63756c617465642e4e756d626572206f6620646967657374206974656d73206d757374206d6174636820746861742063616c63756c617465642e00000000000000b4e2100009000000000000003ce91000020000000000000000000000c8b01200000000000000000000000000b4e2100009000000000000006ce91000190000000000000085e910000a000000000000008fe910002f0000004865617274626561743c543a3a426c6f636b4e756d6265723e5f7369676e61747572653c543a3a417574686f7269747949642061732052756e74696d654170705075626c69633e3a3a5369676e6174757265000000000000bde210000e0000000000000000000000f50812000e00000000000000000000000000000000000000000000000000000000000000c8b01200a8eb1000000000000000000020eb1000060000000000000001000000000000009083120004000000000000000000000050eb10001300000000000000000000000000000000000000000000000000000000000000c8b0120064eb1000000000000000000074eb100001000000000000000100000000000000db8d1200120000000201010000000000179012000c000000000000007ceb1000090000000000000070a311000700000000000000c8b0120088eb1000000000000000000098eb10000200000000000000000000000000000094e410000e0000000201010000000000179012000c000000000000006c0f11000e00000000000000847212000300000000000000c8b01200a8eb10000000000000000000b8eb1000020000000000000001000000cfec10004c000000c8b01200000000001bed1000440000005fed10003400000093ed100040000000d3ed10004e0000005665633c543a3a417574686f7269747949643e003c0000000000000001000000590000009bec10003400000041757468496e6465780000003c0000000000000001000000510000003fec10003900000078ec1000230000003c00000000000000010000006b000000c8eb1000450000000dec10003200000020466f7220656163682073657373696f6e20696e6465782c207765206b6565702061206d617070696e67206f662060543a3a56616c696461746f7249646020746f20746865206e756d626572206f6620626c6f636b7320617574686f7265642062792074686520676976656e20617574686f726974792e20466f7220656163682073657373696f6e20696e6465782c207765206b6565702061206d617070696e67206f66206041757468496e6465786020746f20606f6666636861696e3a3a4f70617175654e6574776f726b5374617465602e205468652063757272656e7420736574206f66206b6579732074686174206d61792069737375652061206865617274626561742e2054686520626c6f636b206e756d6265722061667465722077686963682069742773206f6b20746f2073656e64206865617274626561747320696e2063757272656e742073657373696f6e2e2041742074686520626567696e6e696e67206f6620656163682073657373696f6e20776520736574207468697320746f20612076616c756520746861742073686f756c642066616c6c20726f7567686c7920696e20746865206d6964646c65206f66207468652073657373696f6e206475726174696f6e2e20546865206964656120697320746f206669727374207761697420666f72207468652076616c696461746f727320746f2070726f64756365206120626c6f636b20696e207468652063757272656e742073657373696f6e2c20736f20746861742074686520686561727462656174206c61746572206f6e2077696c6c206e6f74206265206e65636573736172792e000000000000007fe410000a0000000000000050ee100001000000000000000000000068ee1000020000000000000000000000d0ee10000400000000000000d4ee10001700000078ee10003d000000b5ee10001b0000002048696e7420746861742074686520617574686f72206f66207468697320626c6f636b207468696e6b732074686520626573742066696e616c697a656420626c6f636b2069732074686520676976656e206e756d6265722e68696e74436f6d706163743c543a3a426c6f636b4e756d6265723e00000000005cef10000a00000000000000f50812000e00000000000000c8b0120068ef1000000000000000000078ef100001000000000000000000000080ef10000d00000000000000f50812000e00000000000000c8b0120090ef10000000000000000000a0ef1000010000000000000057696e646f7753697a6500003c0000000000000001000000d6000000efef1000460000005265706f72744c6174656e63790000003c0000000000000001000000d7000000a8ef100047000000205468652064656c617920616674657220776869636820706f696e74207468696e6773206265636f6d6520737573706963696f75732e2044656661756c7420697320313030302e20546865206e756d626572206f6620726563656e742073616d706c657320746f206b6565702066726f6d207468697320636861696e2e2044656661756c74206973203130312e0000000100000001000000000000000000000000000000010000004475706c696361746564486561727462656174496e76616c69644b65790000000000000063f010000a00000000000000a8f0100001000000000000000000000050f010001300000000000000b0f010000100000000000000cef0100019000000b8f0100016000000204475706c696361746564206865617274626561742e204e6f6e206578697374656e74207075626c6963206b65792e416c72656164795570646174656442616448696e7400000000e7f010000e0000000000000034f11000010000000000000000000000f5f0100007000000000000003cf11000010000000000000068f110003200000044f11000240000002046696e616c697a6564206865696768742061626f766520626c6f636b206e756d6265722046696e616c2068696e74206d7573742062652075706461746564206f6e6c79206f6e636520696e2074686520626c6f636b617373657274696f6e206661696c65643a20696e646578203c3d206c656e617373657274696f6e206661696c65643a20696e646578203c206c656e4e6f6e5a65726f526566436f756e744e6f6e44656661756c74436f6d706f736974654661696c6564546f4578747261637452756e74696d6556657273696f6e537065634f72496d706c56657273696f6e4e656564546f496e637265617365496d706c56657273696f6e4e6f74416c6c6f776564546f44656372656173655370656356657273696f6e4e6f74416c6c6f776564546f4465637265617365496e76616c6964537065634e616d653a65787472696e7369635f696e64657866696c6c5f626c6f636b72656d61726b7365745f686561705f70616765737365745f636f64657365745f636f64655f776974686f75745f636865636b737365745f6368616e6765735f747269655f636f6e6669677365745f73746f726167656b696c6c5f73746f726167656b696c6c5f7072656669787375696369646553797374656d426c6f636b486173684e756d626572506172656e744861736845787472696e73696373526f6f74446967657374000000001cf4100010000000000000002cf4100001000000000000000000000034f410000100000000000000000000003cf410000f000000000000004cf410000200000000000000000000005cf4100001000000000000000000000064f410000b00000000000000c8b0120000000000000000000000000070f4100001000000000000000000000078f410000a000000000000005ce8110001000000000000000000000084f410000100000000000000000000008cf410000d000000000000005ce811000100000000000000000000009cf41000010000000000000045787472696e7369635375636365737300f510000c0000000cf510002500000045787472696e7369634661696c656400f2a512000d00000000f510000c000000ebf4100015000000436f64655570646174656400d6f41000150000004e65774163636f756e740000bbf410001b0000004b696c6c65644163636f756e74000000a4f410001700000020416e206163636f756e7420776173207265617065642e2041206e6577206163636f756e742077617320637265617465642e20603a636f6465602077617320757064617465642e20416e2065787472696e736963206661696c65642e4469737061746368496e666f20416e2065787472696e73696320636f6d706c65746564207375636365737366756c6c792e4e6f4b6579734475706c6963617465644b65794e6f4173736f63696174656456616c696461746f724964496e76616c696450726f6f663a73657373696f6e3a6b6579737365745f6b65797370757267655f6b6579734e6578744b65797300003c0000000400000004000000d80000003c0000000000000001000000400000005175657565644b6579734576656e74734576656e74546f70696373000000000090f210000a0000000000000084f710000100000000000000000000009cf710000100000000000000000000009af210000600000000000000a4f71000010000000000000000000000bcf71000010000000000000000000000a0f210000e00000000000000c4f71000010000000000000000000000dcf71000010000000000000000000000aef210000800000000000000e4f71000010000000000000000000000fcf71000010000000000000000000000b6f210001700000000000000e4f7100001000000000000000000000004f81000010000000000000000000000cdf2100017000000000000000cf8100001000000000000000000000024f81000010000000000000000000000e4f210000b000000000000002cf8100001000000000000000000000044f81000010000000000000000000000eff210000c000000000000004cf8100001000000000000000000000064f81000010000000000000000000000fbf210000b000000000000006cf8100001000000000000000000000084f8100001000000000000000000000006f310000700000000000000c8b012000000000000000000000000008cf8100002000000000000000000000023fb100006000000000000001858120007000000e1fa10004200000000000000dafa1000070000000000000070a3110007000000bffa10001b00000000000000bafa10000500000000000000a0711200030000007bfa10003f0000000000000077fa1000040000000000000070a31100070000005dfa10001a00000016fa10004700000000000000e3f910001300000000000000f6f9100020000000bbf910002800000000000000a9f910000500000000000000aef910000d0000008ef910001b0000000000000082f91000040000000000000086f910000800000064f910001e000000000000005ef910000600000000000000003211000300000019f91000450000009cf8100059000000f5f8100024000000204b696c6c207468652073656e64696e67206163636f756e742c20617373756d696e6720746865726520617265206e6f207265666572656e636573206f75747374616e64696e6720616e642074686520636f6d706f73697465206461746120697320657175616c20746f206974732064656661756c742076616c75652e204b696c6c20616c6c2073746f72616765206974656d7320776974682061206b657920746861742073746172747320776974682074686520676976656e207072656669782e707265666978204b696c6c20736f6d65206974656d732066726f6d2073746f726167652e6b6579735665633c4b65793e2053657420736f6d65206974656d73206f662073746f726167652e6974656d735665633c4b657956616c75653e2053657420746865206e6577206368616e676573207472696520636f6e66696775726174696f6e2e6368616e6765735f747269655f636f6e6669674f7074696f6e3c4368616e67657354726965436f6e66696775726174696f6e3e2053657420746865206e65772072756e74696d6520636f646520776974686f757420646f696e6720616e7920636865636b73206f662074686520676976656e2060636f6465602e2053657420746865206e65772072756e74696d6520636f64652e636f64652053657420746865206e756d626572206f6620706167657320696e2074686520576562417373656d626c7920656e7669726f6e6d656e74277320686561702e7061676573204d616b6520736f6d65206f6e2d636861696e2072656d61726b2e5f72656d61726b204120646973706174636820746861742077696c6c2066696c6c2074686520626c6f636b2077656967687420757020746f2074686520676976656e20726174696f2e5f726174696f0000000000000070b41100070000000101000000000000138212000c00000000000000fcff10002500000000000000000000000000000000000000c8b0120024001100000000000000000034001100010000000000000001000000000000003c0011000e0000000000000000000000847212000300000000000000000000000000000000000000000000000000000000000000c8b012008800110000000000000000004c0011000100000000000000000000000000000054001100130000000000000000000000670011000600000000000000000000000000000000000000000000000000000000000000c8b01200880011000000000000000000700011000100000000000000000000000000000078001100100000000000000000000000847212000300000000000000000000000000000000000000000000000000000000000000c8b01200880011000000000000000000980011000100000000000000000000000000000013f31000090000000101000000000000f50812000e00000000000000811312000700000000000000000000000000000000000000c8b01200e00011000000000000000000a000110001000000000000000100000000000000a80011000d000000010500000000000084721200030000000000000070a311000700000000000000000000000000000000000000c8b01200b80011000000000000000000c8001100010000000000000001000000000000001cf31000060000000000000000000000f50812000e00000000000000000000000000000000000000000000000000000000000000c8b01200cc0e11000000000000000000d00011000100000000000000010000000000000022f310000a0000000000000000000000811312000700000000000000000000000000000000000000000000000000000000000000c8b01200e00011000000000000000000d8001100010000000000000001000000000000002cf310000e0000000000000000000000811312000700000000000000000000000000000000000000000000000000000000000000c8b01200e00011000000000000000000f0001100010000000000000001000000000000003af31000060000000000000000000000f80011000b00000000000000000000000000000000000000000000000000000000000000c8b012000401110000000000000000001401110001000000000000000100000000000000baf510000600000000000000000000001c0111002300000000000000000000000000000000000000000000000000000000000000c8b012004001110000000000000000005001110001000000000000000100000000000000580111000a0000000000000000000000620111000a00000000000000000000000000000000000000000000000000000000000000c8b01200cc0e110000000000000000006c01110001000000000000000100000000000000c0f510000b0000000101000000000000811312000700000000000000740111002100000000000000000000000000000000000000c8b01200980111000000000000000000a80111000a000000000000000100000000000000f80111000f000000000000000000000000ee11000400000000000000000000000000000000000000000000000000000000000000c8b01200e40e11000000000000000000080211000100000000000000010000004163636f756e74496e666f3c543a3a496e6465782c20543a3a4163636f756e74446174613e0000003c0000000000000001000000d9000000e70611003a00000045787472696e736963436f756e740000b90611002e000000416c6c45787472696e736963735765696768745765696768740000007406110045000000416c6c45787472696e736963734c656e3c0000000000000001000000510000002406110050000000fe0511002600000045787472696e736963446174610000003c000000000000000100000059000000af0511004f0000006d05110042000000510511001c0000003c0000000000000001000000da0000000c051100450000004469676573744f663c543e003c000000000000000100000059000000d00411003c0000005665633c4576656e745265636f72643c543a3a4576656e742c20543a3a486173683e3e003c0000000000000001000000db000000a8041100280000004576656e74436f756e744576656e74496e6465787a0411002e0000005665633c28543a3a426c6f636b4e756d6265722c204576656e74496e646578293e0000003c00000000000000010000005900000048021100490000009102110025000000c8b0120000000000b6021100540000000a031100510000005b03110039000000c8b01200000000009403110053000000e7031100530000003a0411004000000052756e74696d655570677261646564001002110038000000204120626f6f6c20746f20747261636b206966207468652072756e74696d6520776173207570677261646564206c61737420626c6f636b2e204d617070696e67206265747765656e206120746f7069632028726570726573656e74656420627920543a3a486173682920616e64206120766563746f72206f6620696e6465786573206f66206576656e747320696e2074686520603c4576656e74733c543e3e60206c6973742e20416c6c20746f70696320766563746f727320686176652064657465726d696e69737469632073746f72616765206c6f636174696f6e7320646570656e64696e67206f6e2074686520746f7069632e205468697320616c6c6f7773206c696768742d636c69656e747320746f206c6576657261676520746865206368616e67657320747269652073746f7261676520747261636b696e67206d656368616e69736d20616e6420696e2063617365206f66206368616e67657320666574636820746865206c697374206f66206576656e7473206f6620696e7465726573742e205468652076616c756520686173207468652074797065206028543a3a426c6f636b4e756d6265722c204576656e74496e646578296020626563617573652069662077652075736564206f6e6c79206a7573742074686520604576656e74496e64657860207468656e20696e20636173652069662074686520746f70696320686173207468652073616d6520636f6e74656e7473206f6e20746865206e65787420626c6f636b206e6f206e6f74696669636174696f6e2077696c6c20626520747269676765726564207468757320746865206576656e74206d69676874206265206c6f73742e20546865206e756d626572206f66206576656e747320696e2074686520604576656e74733c543e60206c6973742e204576656e7473206465706f736974656420666f72207468652063757272656e7420626c6f636b2e20446967657374206f66207468652063757272656e7420626c6f636b2c20616c736f2070617274206f662074686520626c6f636b206865616465722e2045787472696e7369637320726f6f74206f66207468652063757272656e7420626c6f636b2c20616c736f2070617274206f662074686520626c6f636b206865616465722e2048617368206f66207468652070726576696f757320626c6f636b2e205468652063757272656e7420626c6f636b206e756d626572206265696e672070726f6365737365642e205365742062792060657865637574655f626c6f636b602e2045787472696e73696373206461746120666f72207468652063757272656e7420626c6f636b20286d61707320616e2065787472696e736963277320696e64657820746f206974732064617461292e204d6170206f6620626c6f636b206e756d6265727320746f20626c6f636b206861736865732e20546f74616c206c656e6774682028696e2062797465732920666f7220616c6c2065787472696e736963732070757420746f6765746865722c20666f72207468652063757272656e7420626c6f636b2e20546f74616c2077656967687420666f7220616c6c2065787472696e736963732070757420746f6765746865722c20666f72207468652063757272656e7420626c6f636b2e20546f74616c2065787472696e7369637320636f756e7420666f72207468652063757272656e7420626c6f636b2e205468652066756c6c206163636f756e7420696e666f726d6174696f6e20666f72206120706172746963756c6172206163636f756e742049442e4e6f646520697320636f6e6669677572656420746f20757365207468652073616d6520686173683b207165640000007007110042000000510300001c000000700711004200000059030000110000002f686f6d652f616e6472652f576f726b62656e63682f706172697479746563682f7375627374726174652f6672616d652f73797374656d2f7372632f6c69622e72730000cc07110023000000c8b0120000000000ef0711001e0000004552524f523a20436f727275707465642073746174653a206c696e6b6564206d6170203a206e6578742076616c756520646f65736e277420657869737420617420000000cc07110023000000c8b012000000000028081100220000003a2070726576696f75732076616c756520646f65736e2774206578697374206174200000cc07110023000000c8b0120000000000640811001e0000003a20686561642076616c756520646f65736e27742065786973742061742000000000000074f510000800000000000000dc0811000200000000000000000000000c0911000c00000000000000000000007cf510000a00000000000000c8b012000000000000000000000000006c0911000a000000000000000000000082f910000400000000000000290c11000700000000000000300c1100050000000000000070a3110007000000c10a11003a000000fb0a110048000000ef09110031000000c8b0120000000000200a110035000000c8b01200000000002a7f12000b000000430b110022000000650b1100160000007b0b110059000000d40b110055000000927f12000c000000bc09110033000000ef09110031000000c8b0120000000000200a110035000000c8b01200000000002a7f12000b000000550a11001f000000740a11001c000000900a110031000000927f12000c0000002052656d6f76657320616e792073657373696f6e206b6579287329206f66207468652066756e6374696f6e2063616c6c65722e205468697320646f65736e27742074616b652065666665637420756e74696c20746865206e6578742073657373696f6e2e20546865206469737061746368206f726967696e206f6620746869732066756e6374696f6e206d757374206265207369676e65642e202d204f284e2920696e206e756d626572206f66206b65792074797065732e202d2052656d6f766573204e202b203120444220656e74726965732e202d20526564756365732073797374656d206163636f756e742072656673206279206f6e65206f6e20737563636573732e2053657473207468652073657373696f6e206b6579287329206f66207468652066756e6374696f6e2063616c6c657220746f20606b657973602e20416c6c6f777320616e206163636f756e7420746f20736574206974732073657373696f6e206b6579207072696f7220746f206265636f6d696e6720612076616c696461746f722e202d204f286c6f67206e2920696e206e756d626572206f66206163636f756e74732e202d204f6e6520657874726120444220656e7472792e202d20496e637265617365732073797374656d206163636f756e742072656673206279206f6e65206f6e20737563636573732069666620746865726520776572652070726576696f75736c79206e6f206b657973207365742e202020496e207468697320636173652c2070757267655f6b6579732077696c6c206e65656420746f2062652063616c6c6564206265666f726520746865206163636f756e742063616e2062652072656d6f7665642e543a3a4b65797370726f6f6600000000000000252312000a0000000000000000000000a00e11001300000000000000000000000000000000000000000000000000000000000000c8b01200b40e11000000000000000000c40e110001000000000000000100000000000000238f12000c0000000000000000000000179012000c00000000000000000000000000000000000000000000000000000000000000c8b01200cc0e11000000000000000000dc0e1100010000000000000001000000000000002f8f12000d000000000000000000000000ee11000400000000000000000000000000000000000000000000000000000000000000c8b01200e40e11000000000000000000f40e110002000000000000000100000000000000b0f510000a0000000000000000000000040f11001e00000000000000000000000000000000000000000000000000000000000000c8b01200240f11000000000000000000340f1100020000000000000001000000000000003c8f1200120000000000000000000000083c12000800000000000000000000000000000000000000000000000000000000000000c8b01200440f11000000000000000000540f11000300000000000000010000000000000086f5100008000000020501000000000070a3110007000000000000006c0f11000e00000000000000290c11000700000000000000c8b012007c0f110000000000000000008c0f110004000000000000000000000000000000ac0f110008000000020501000000000070a311000700000000000000b40f110014000000000000006c0f11000e00000000000000c8b01200c80f11000000000000000000d80f11000400000000000000000000005665633c543a3a56616c696461746f7249643e003c0000000000000001000000590000009f1211001f0000003c00000000000000010000006b000000811211001e0000003c0000000000000001000000510000000a1211004e00000058121100290000005665633c28543a3a56616c696461746f7249642c20543a3a4b657973293e00003c000000000000000100000059000000831111004f000000d2111100380000003c0000000000000001000000590000001611110020000000c8b0120000000000361111004d000000543a3a56616c696461746f72496400003c000000000000000100000051000000ef10110027000000c8b0120000000000411011005600000097101100580000004b65794f776e6572284b65795479706549642c205665633c75383e293c000000000000000100000051000000f80f110049000000c8b01200000000004110110056000000971011005800000020546865206f776e6572206f662061206b65792e20546865207365636f6e64206b65792069732074686520604b657954797065496460202b2074686520656e636f646564206b65792e20546865206669727374206b657920697320616c77617973206044454455505f4b45595f5052454649586020746f206861766520616c6c20746865206461746120696e207468652073616d65206272616e6368206f662074686520747269652e20486176696e6720616c6c206461746120696e207468652073616d65206272616e63682073686f756c642070726576656e7420736c6f77696e6720646f776e206f7468657220717565726965732e20546865206e6578742073657373696f6e206b65797320666f7220612076616c696461746f722e20496e6469636573206f662064697361626c65642076616c696461746f72732e205468652073657420697320636c6561726564207768656e20606f6e5f73657373696f6e5f656e64696e67602072657475726e732061206e657720736574206f66206964656e7469746965732e2054686520717565756564206b65797320666f7220746865206e6578742073657373696f6e2e205768656e20746865206e6578742073657373696f6e20626567696e732c207468657365206b6579732077696c6c206265207573656420746f2064657465726d696e65207468652076616c696461746f7227732073657373696f6e206b6579732e20547275652069662074686520756e6465726c79696e672065636f6e6f6d6963206964656e746974696573206f7220776569676874696e6720626568696e64207468652076616c696461746f727320686173206368616e67656420696e20746865207175657565642076616c696461746f72207365742e2043757272656e7420696e646578206f66207468652073657373696f6e2e205468652063757272656e7420736574206f662076616c696461746f72732e000000000000f81211001000000000000000081311000500000000000000c8b0120010131100000000000000000020131100020000000000000044454455505f4b45595f505245464958265b75385d0000003c0000000000000001000000dc0000003013110059000000891311000d0000002055736564206173206669727374206b657920666f7220604e6578744b6579736020616e6420604b65794f776e65726020746f2070757420616c6c20746865206461746120696e746f207468652073616d65206272616e6368206f662074686520747269652e74686520636f6e74726163742065786973747320616e6420696e2074686520616c6976652073746174653b0a090974686520757064617465642062616c616e6365206d7573742062652067726561746572207468616e2073756273697374656e6365206465706f7369743b0a0909746869732066756e6374696f6e20646f65736e27742072657475726e20604e6f6e65603b0a09097165640a0909000000441411004600000074010000170000002f686f6d652f616e6472652f576f726b62656e63682f706172697479746563682f7375627374726174652f6672616d652f636f6e7472616374732f7372632f72656e742e7273436865636b56657273696f6e436865636b47656e65736973436865636b457261436865636b4e6f6e6365436865636b5765696768743a6865617070616765733a636f64653a6368616e6765735f74726965000000000071f210000f00000000000000a015110002000000000000000000000052f210001f00000000000000b015110002000000000000000000000033f210001f00000000000000c015110002000000000000000000000014f210001f00000000000000d0151100020000000000000000000000f7f110001d00000000000000e0151100030000000000000000000000e4f110001300000000000000f8151100010000000000000000000000d5f110000f000000000000000016110001000000000000003f18110045000000d917110015000000ee17110051000000d9171100150000008717110052000000d917110015000000151711004d0000006217110025000000961611003c000000c8b0120000000000d2161100430000005616110040000000081611004e0000002054686572652069732061206e6f6e2d7a65726f207265666572656e636520636f756e742070726576656e74696e6720746865206163636f756e742066726f6d206265696e67207075726765642e20537569636964652063616c6c6564207768656e20746865206163636f756e7420686173206e6f6e2d64656661756c7420636f6d706f7369746520646174612e204661696c656420746f2065787472616374207468652072756e74696d652076657273696f6e2066726f6d20746865206e65772072756e74696d652e204569746865722063616c6c696e672060436f72655f76657273696f6e60206f72206465636f64696e67206052756e74696d6556657273696f6e60206661696c65642e205468652073706563696669636174696f6e206f722074686520696d706c656d656e746174696f6e2076657273696f6e206e65656420746f20696e637265617365206265747765656e207468652063757272656e742072756e74696d6520616e6420746865206e65772072756e74696d652e2054686520696d706c656d656e746174696f6e2076657273696f6e206973206e6f7420616c6c6f77656420746f206465637265617365206265747765656e207468652063757272656e742072756e74696d6520616e6420746865206e65772072756e74696d652e205468652073706563696669636174696f6e2076657273696f6e206973206e6f7420616c6c6f77656420746f206465637265617365206265747765656e207468652063757272656e742072756e74696d6520546865206e616d65206f662073706563696669636174696f6e20646f6573206e6f74206d61746368206265747765656e207468652063757272656e742072756e74696d65000000005bf510000c00000000000000f418110001000000000000000000000044f510001700000000000000fc18110001000000000000000000000037f510000d000000000000000419110001000000000000000000000031f5100006000000000000000c1911000100000000000000801911001900000058191100280000003e1911001a000000141911002a000000204e6f206b65797320617265206173736f63696174656420776974682074686973206163636f756e742e2052656769737465726564206475706c6963617465206b65792e204e6f206173736f6369617465642076616c696461746f7220494420666f72206163636f756e742e20496e76616c6964206f776e6572736869702070726f6f662e526571756972655375646f7375646f7365745f6b65797375646f5f61730000000000003c1a11000500000000000000441a11000100000000000000000000004c1a1100010000000000000000000000541a11000a000000000000005ce81100010000000000000000000000601a1100010000000000000000000000681a11000a00000000000000441a11000100000000000000000000004c1a11000100000000000000537564696400000000ee110004000000ae1a1100180000004b65794368616e6765640000721a11003c0000005375646f4173446f6e6520546865207375646f6572206a757374207377697463686564206964656e746974793b20746865206f6c64206b657920697320737570706c6965642e2041207375646f206a75737420746f6f6b20706c6163652e536f63696574794d61784d656d62657273566f7465734e6f74486561644e6f74466f756e6465724e6f7443616e646964617465416c726561647943616e646964617465416c7265616479426964466f756e646572486561644e6f74566f756368696e67416c7265616479566f756368696e67496e73756666696369656e74506f74416c7265616479466f756e6465644e6f5061796f75744e6f7453757370656e64656453757370656e646564416c72656164794d656d626572426164506f736974696f6e626964756e626964766f756368746970756e766f756368646566656e6465725f766f74657061796f7574666f756e64756e666f756e646a756467655f73757370656e6465645f6d656d6265726a756467655f73757370656e6465645f63616e6469646174657365745f6d61785f6d656d62657273000000000000941e110007000000000000005ce811000100000000000000000000009c1e1100010000000000000000000000a41e110003000000000000004c261200020000000000000000000000a81e1100020000000000000000000000b81e11000500000000000000c01e1100030000000000000000000000d81e1100020000000000000000000000e81e110009000000000000005ce81100010000000000000000000000f41e1100010000000000000000000000fc1e110005000000000000005ce81100010000000000000000000000041f11000100000000000000000000000c1f110007000000000000005ce81100010000000000000000000000141f11000100000000000000000000001c1f11000800000000000000241f1100020000000000000000000000341f1100020000000000000000000000441f110018000000000000005c1f11000200000000000000000000006c1f1100010000000000000000000000741f110012000000000000005ce81100010000000000000000000000881f1100010000000000000000000000901f11000f000000000000005ce81100010000000000000000000000a01f1100010000000000000000000000a81f11000a000000000000005ce81100010000000000000000000000b41f1100010000000000000000000000bc1f110004000000000000002cc61100030000000000000000000000c01f1100010000000000000000000000c81f11000c000000000000005c1f1100020000000000000000000000d41f1100010000000000000000000000dc1f11000d00000000000000ec1f1100010000000000000000000000f41f1100010000000000000000000000fc1f110009000000000000005ce81100010000000000000000000000082011000100000000000000466f756e64656400592311002e00000042696400f2221100580000004a2311000f000000566f756368000000c26d1200090000009027120007000000c26d1200090000005e22110058000000b62211003c0000004175746f556e6269640000001c22110042000000556e626964000000f02111002c000000556e766f75636800b22111003e000000496e647563746564c26d120009000000a42111000e0000003121110056000000872111001d00000053757370656e6465644d656d6265724a756467656d656e74c26d12000900000000ee1100040000000e2111002300000043616e64696461746553757370656e6465640000ef2011001f0000004d656d62657253757370656e64656400d32011001c0000004368616c6c656e6765640000b62011001d000000566f74658620110030000000446566656e646572566f74654a2011003c0000004e65774d61784d656d6265727300000084721200030000002620110024000000556e666f756e646564000000102011001600000020536f636965747920697320756e666f756e6465642e2041206e6577206d6178206d656d62657220636f756e7420686173206265656e20736574204120766f746520686173206265656e20706c6163656420666f72206120646566656e64696e67206d656d6265722028766f7465722c20766f746529204120766f746520686173206265656e20706c61636564202863616e6469646174652c20766f7465722c20766f7465292041206d656d62657220686173206265656e206368616c6c656e6765642041206d656d62657220686173206265656e2073757370656e64656420412063616e64696461746520686173206265656e2073757370656e64656420412073757370656e646564206d656d62657220686173206265656e206a756467656420412067726f7570206f662063616e646964617465732068617665206265656e20696e6475637465642e205468652062617463682773207072696d617279206973207468652066697273742076616c75652c2074686520626174636820696e2066756c6c20697320746865207365636f6e642e5665633c4163636f756e7449643e20412063616e646964617465207761732064726f70706564202862792072657175657374206f662077686f20766f756368656420666f72207468656d292e20412063616e646964617465207761732064726f70706564202862792074686569722072657175657374292e20412063616e646964617465207761732064726f70706564202864756520746f20616e20657863657373206f66206269647320696e207468652073797374656d292e2041206d656d6265727368697020626964206a7573742068617070656e656420627920766f756368696e672e2054686520676976656e206163636f756e74206973207468652063616e646964617465277320494420616e64207468656972206f6666657220697320746865207365636f6e642e2054686520766f756368696e67207061727479206973207468652074686972642e2041206d656d6265727368697020626964206a7573742068617070656e65642e2054686520676976656e206163636f756e74206973207468652063616e646964617465277320494420616e64207468656972206f6666657220697320746865207365636f6e642e2054686520736f636965747920697320666f756e6465642062792074686520676976656e206964656e746974792e5072656d61747572655374696c6c4f70656e4e6f7446696e646572556e6b6e6f776e546970416c72656164794b6e6f776e526561736f6e546f6f426967496e76616c696450726f706f73616c496e646578496e73756666696369656e7450726f706f7365727342616c616e636570792f747273727970726f706f73655f7370656e6472656a6563745f70726f706f73616c617070726f76655f70726f706f73616c7265706f72745f617765736f6d65726574726163745f7469707469705f6e6577636c6f73655f7469700000000000000030ec1100080000000000000038261100010000000000000000000000402611000100000000000000000000004826110008000000000000005026110001000000000000000000000058261100010000000000000000000000602611000700000000000000682611000300000000000000000000008026110001000000000000000000000088261100080000000000000090261100020000000000000000000000a0261100010000000000000000000000a8261100050000000000000050261100010000000000000000000000b0261100010000000000000000000000b8261100080000000000000050261100010000000000000000000000c0261100010000000000000000000000589c1100070000000000000050261100010000000000000000000000c8261100010000000000000000000000d02611000600000000000000b0ec1100010000000000000000000000d8261100010000000000000000000000e02611000a00000000000000b0ec1100010000000000000000000000ec261100010000000000000000000000f426110009000000000000000027110003000000000000000000000018271100010000000000000000000000202711000c00000000000000b0ec11000100000000000000000000002c271100010000000000000055ef11000d000000ee2811000e0000005370656e64696e679027120007000000b42811003a000000417761726465640055ef11000d0000009027120007000000c26d120009000000942811002000000052656a656374656455ef11000d0000009027120007000000672811002d0000004275726e740000004428110023000000526f6c6c6f766572f82711004c000000d8271100200000004e65775469700000b227110026000000546970436c6f73696e6700007b27110037000000546970436c6f73656400000065ed110004000000c26d1200090000009027120007000000592711002200000054697052657472616374656434271100250000002041207469702073756767657374696f6e20686173206265656e207265747261637465642e2041207469702073756767657374696f6e20686173206265656e20636c6f7365642e2041207469702073756767657374696f6e206861732072656163686564207468726573686f6c6420616e6420697320636c6f73696e672e2041206e6577207469702073756767657374696f6e20686173206265656e206f70656e65642e20536f6d652066756e64732068617665206265656e206465706f73697465642e205370656e64696e67206861732066696e69736865643b20746869732069732074686520616d6f756e74207468617420726f6c6c73206f76657220756e74696c206e657874207370656e642e20536f6d65206f66206f75722066756e64732068617665206265656e206275726e742e20412070726f706f73616c207761732072656a65637465643b2066756e6473207765726520736c61736865642e20536f6d652066756e64732068617665206265656e20616c6c6f63617465642e205765206861766520656e6465642061207370656e6420706572696f6420616e642077696c6c206e6f7720616c6c6f636174652066756e64732e204e65772070726f706f73616c2e6164645f6d656d626572737761705f6d656d62657272657365745f6d656d626572736368616e67655f6b65797365745f7072696d65636c6561725f7072696d6500000000442a11000b00000000000000c8b01200000000000000000000000000502a1100010000000000000000000000582a11000d00000000000000c8b01200000000000000000000000000682a1100010000000000000000000000702a11000e00000000000000c8b01200000000000000000000000000802a1100010000000000000000000000882a11000c00000000000000c8b01200000000000000000000000000942a1100010000000000000000000000541a11000a00000000000000c8b012000000000000000000000000009c2a1100010000000000000000000000a42a11000500000000000000ac2a1100010000000000000000000000b42a110001000000000000004d656d626572416464656400e12b1100390000004d656d62657252656d6f766564000000a62b11003b0000004d656d626572735377617070656400006f2b1100370000004d656d626572735265736574292b110046000000072b11002200000044756d6d79000000d82a11002f000000bc2a11001c000000205068616e746f6d206d656d6265722c206e6576657220757365642e73705f7374643a3a6d61726b65723a3a5068616e746f6d446174613c284163636f756e7449642c204576656e74293e204f6e65206f6620746865206d656d6265727327206b657973206368616e6765642e20546865206d656d62657273686970207761732072657365743b2073656520746865207472616e73616374696f6e20666f722077686f20746865206e6577207365742069732e2054776f206d656d62657273207765726520737761707065643b2073656520746865207472616e73616374696f6e20666f722077686f2e2054686520676976656e206d656d626572207761732072656d6f7665643b2073656520746865207472616e73616374696f6e20666f722077686f2e2054686520676976656e206d656d626572207761732061646465643b2073656520746865207472616e73616374696f6e20666f722077686f2e496e636f6e73697374656e74207374617465202d20636f756c646e277420736574746c6520696d62616c616e636520666f722066756e6473207370656e74206279207472656173757279506f74736f63696574795f726f746174696f6e000000000000000000617474656d707420746f20646976696465206279207a65726f0000009c2d1100430000002d0600001d0000009c2d110043000000810400000f00000070792f736f6369657061796f757473652e31206f662066696e616c206974656d203d3d20746f74616c5f617070726f76616c733b20776f72737420636173652066696e642077696c6c20616c776179732072657475726e2074686174206974656d3b2071656400009c2d110043000000780500001f00000042696473657869746564206966206d656d6265727320656d7074793b207165649c2d110043000000970500001f000000446566656e646572446566656e646572566f746573736f63696574795f6368616c6c656e676500009c2d1100430000000e0600001e0000002f686f6d652f616e6472652f576f726b62656e63682f706172697479746563682f7375627374726174652f6672616d652f736f63696574792f7372632f6c69622e727353757370656e6465644d656d62657273537472696b65735061796f757473000000617474656d707420746f2063616c63756c617465207468652072656d61696e646572207769746820612064697669736f72206f66207a65726f0000009c2d110043000000880400000500000000000000a41911000400000000000000d02e1100010000000000000000000000e82e11000a0000000000000000000000a81911000700000000000000382f1100010000000000000000000000502f1100090000000000000000000000af1911000700000000000000982f1100020000000000000000000000c82f11000b0000000000000000000000fb8512000400000000000000500b120017000000563111004e000000c8b01200000000007881120034000000c8b01200000000002a7f12000b000000bc4812000800000085301100190000009e30110018000000b630110032000000927f12000c00000000000000108212000300000000000000203f120023000000e83011005d000000c8b01200000000007881120034000000c8b01200000000002a7f12000b000000bc4812000800000085301100190000004531110011000000927f12000c0000000000000097d211000300000000000000203f12002300000000000000fb8512000400000000000000500b12001700000020301100540000007430110011000000c8b01200000000007881120034000000c8b01200000000002a7f12000b000000bc4812000800000085301100190000009e30110018000000b630110032000000927f12000c0000002041757468656e7469636174657320746865207375646f206b657920616e64206469737061746368657320612066756e6374696f6e2063616c6c207769746820605369676e656460206f726967696e2066726f6d206120676976656e206163636f756e742e202d204c696d697465642073746f726167652072656164732e202d204f6e6520444220777269746520286576656e74292e202d20576569676874206f662064657269766174697665206063616c6c6020657865637574696f6e202b2031302c3030302e2041757468656e74696361746573207468652063757272656e74207375646f206b657920616e6420736574732074686520676976656e204163636f756e7449642028606e6577602920617320746865206e6577207375646f206b65792e202d204f6e65204442206368616e67652e2041757468656e7469636174657320746865207375646f206b657920616e64206469737061746368657320612066756e6374696f6e2063616c6c20776974682060526f6f7460206f726967696e2e5375646f0000000000321100030000000000000000000000138212000c00000000000000000000000000000000000000000000000000000000000000c8b01200043211000000000000000000143211000100000000000000010000004b6579003c0000000000000001000000dd0000001c321100210000002054686520604163636f756e74496460206f6620746865207375646f206b65792e000000000000008a1b1100030000000000000050341100010000000000000000000000683411002100000000000000000000008d1b110005000000000000007035110001000000000000000000000088351100130000000000000000000000921b1100050000000000000020361100030000000000000000000000683611002c00000000000000000000009a1b1100070000000000000070351100010000000000000000000000c8371100110000000000000000000000f3ea110004000000000000005038110002000000000000000000000080381100130000000000000000000000a11b11000d000000000000001839110001000000000000000000000030391100100000000000000000000000ae1b11000600000000000000c8b01200000000000000000000000000b0391100140000000000000000000000b41b11000500000000000000503a1100030000000000000000000000983a1100130000000000000000000000b91b11000700000000000000c8b01200000000000000000000000000303b11000d0000000000000000000000c01b11001600000000000000983b1100020000000000000000000000c83b11001b0000000000000000000000d61b11001900000000000000a03c1100020000000000000000000000d03c1100280000000000000000000000ef1b11000f00000000000000103e1100010000000000000000000000283e11000e00000000000000000000007c47120005000000000000006a5c11000f000000b45e110038000000c8b0120000000000ec5e11004e0000003a5f11003c000000c8b01200000000007881120034000000c8b012000000000007f811000c000000765f110056000000c8b01200000000002a7f12000b000000cc5f1100550000002758110011000000ac5811003b000000e7581100380000001f59110037000000565911003d00000038581100320000009359110012000000e859110060000000485a110040000000885a110017000000cf5a11004b0000001a5b1100310000004b5b11001e000000695b110027000000905b110048000000d85b11000a000000216011001a000000fa5b11003f000000c8b0120000000000395c110031000000927f12000c00000000000000b15e110003000000000000008472120003000000795c110036000000af5c110040000000ef5c110021000000c8b0120000000000105d11003f000000c8b01200000000004f5d110041000000c8b012000000000007f811000c000000905d110046000000c8b01200000000002a7f12000b000000d65d11002c000000025e110043000000455e110051000000857f12000d000000c8b0120000000000965e11001b000000927f12000c0000000000000097d211000300000000000000138212000c000000000000007c47120005000000000000006a5c11000f00000000000000971b110003000000000000006a5c11000f000000b954110051000000c8b01200000000000a551100550000005f55110057000000b655110050000000c8b012000000000006561100560000005c56110054000000c8b01200000000003b50110041000000c8b012000000000007f811000c000000b056110033000000e35611005400000037571100190000005057110052000000a257110045000000c8b01200000000002a7f12000b000000e757110040000000275811001100000038581100320000006a58110042000000ac5811003b000000e7581100380000001f59110037000000565911003d0000009359110012000000a559110043000000e859110060000000485a110040000000885a1100170000009f5a110030000000cf5a11004b0000001a5b1100310000004b5b11001e000000695b110027000000905b110048000000d85b11000a000000e25b110018000000fa5b11003f000000c8b0120000000000395c110031000000927f12000c000000e65211004b0000003153110025000000c8b0120000000000565311004a000000c8b012000000000007f811000c000000a05311004b000000c8b01200000000002a7f12000b000000eb531100150000000054110042000000425411003b0000007d54110025000000857f12000d000000c8b0120000000000a254110017000000927f12000c00000000000000dd5211000900000000000000203f1200230000000000000016141200070000000000000000ee1100040000009051110022000000c8b01200000000003b50110041000000c8b012000000000007f811000c000000b2511100430000007c5011003d000000f551110036000000c8b01200000000002a7f12000b0000002b5211002f000000fc501100470000005a52110016000000705211004b000000435111002f000000857f12000d000000c8b0120000000000bb52110022000000927f12000c0000000000000016141200070000000000000000ee1100040000001850110023000000c8b01200000000003b50110041000000c8b012000000000007f811000c0000007c5011003d000000b950110029000000c8b01200000000002a7f12000b000000e25011001a000000fc50110047000000435111002f000000857f12000d000000c8b0120000000000725111001e000000927f12000c000000204d110051000000c8b0120000000000714d11005a000000c8b0120000000000cb4d110048000000134e11001e000000c8b0120000000000314e110045000000764e110013000000c8b01200000000002a7f12000b000000894e110047000000d04e110049000000194f110039000000524f1100390000008b4f110023000000ae4f110044000000c8b0120000000000f24f110026000000927f12000c00000000000000094d11000700000000000000138212000c00000000000000104d11000b000000000000008472120003000000000000001b4d1100050000000000000070a3110007000000f04a110013000000c8b0120000000000034b11003c0000003f4b110046000000c8b0120000000000854b110047000000c8b012000000000007f811000c000000cc4b110046000000124c110045000000574c11003d000000c8b01200000000002a7f12000b000000944c110038000000cc4c11003d000000857f12000d000000c8b0120000000000a83f110017000000927f12000c000000e049110023000000c8b0120000000000034a1100570000005a4a110056000000b04a110008000000c8b01200000000002a7f12000b000000b84a11001a000000d24a11001e000000857f12000d000000c8b0120000000000a83f110017000000927f12000c0000000000000097d211000300000000000000138212000c00000000000000d9491100070000000000000000ee110004000000204611004b000000c8b01200000000006b46110056000000c146110033000000c8b0120000000000f4461100520000004647110040000000c8b01200000000009841110050000000c8b012000000000007f811000c000000864711002d000000b34711004d0000000048110049000000c8b01200000000002a7f12000b0000004948110029000000724811003e000000b04811005c0000000c4911003e0000004a491100510000007d451100350000009b4911001c000000c94511001f000000c8b0120000000000b749110022000000927f12000c0000000000000097d211000300000000000000138212000c000000000000000e46110009000000000000001746110009000000c23f11004d000000c8b01200000000000f40110057000000664011001d000000c8b01200000000008340110055000000d840110044000000c8b01200000000001c411100570000007341110025000000c8b01200000000009841110050000000c8b012000000000007f811000c000000e8411100300000001842110031000000c8b01200000000002a7f12000b000000494211003d000000864211003c000000c242110032000000f44211001000000004431100450000004943110037000000804311003a000000ba4311002d000000e7431100280000000f4411002c0000003b441100530000008e4411000f0000009d44110037000000d44411004b0000001f4511000e0000002d451100500000007d45110035000000b245110017000000c94511001f000000c8b0120000000000e845110026000000927f12000c00000000000000bf3f110003000000000000008472120003000000983e110047000000df3e11002d000000c8b01200000000000c3f110037000000c8b012000000000007f811000c000000433f110039000000c8b01200000000002a7f12000b0000007c3f11002c000000857f12000d000000c8b0120000000000a83f110017000000927f12000c00000020416c6c6f777320726f6f74206f726967696e20746f206368616e676520746865206d6178696d756d206e756d626572206f66206d656d6265727320696e20736f63696574792e204d6178206d656d6265727368697020636f756e74206d7573742062652067726561746572207468616e20312e20546865206469737061746368206f726967696e20666f7220746869732063616c6c206d7573742062652066726f6d205f524f4f545f2e202d20606d617860202d20546865206d6178696d756d206e756d626572206f66206d656d6265727320666f722074686520736f63696574792e202d204f6e652073746f7261676520777269746520746f2075706461746520746865206d61782e204f28312920546f74616c20436f6d706c65786974793a204f2831296d617820416c6c6f772073757370656e646564206a756467656d656e74206f726967696e20746f206d616b65206a756467656d656e74206f6e20612073757370656e6465642063616e6469646174652e20496620746865206a756467656d656e742069732060417070726f7665602c20776520616464207468656d20746f20736f63696574792061732061206d656d62657220776974682074686520617070726f707269617465207061796d656e7420666f72206a6f696e696e6720736f63696574792e20496620746865206a756467656d656e74206973206052656a656374602c2077652065697468657220736c61736820746865206465706f736974206f6620746865206269642c20676976696e67206974206261636b20746f2074686520736f63696574792074726561737572792c206f722077652062616e2074686520766f75636865722066726f6d20766f756368696e6720616761696e2e20496620746865206a756467656d656e7420697320605265626964602c20776520707574207468652063616e646964617465206261636b20696e207468652062696420706f6f6c20616e64206c6574207468656d20676f207468726f7567682074686520696e64756374696f6e2070726f6365737320616761696e2e20546865206469737061746368206f726967696e20666f7220746869732063616c6c206d7573742062652066726f6d20746865205f53757370656e73696f6e4a756467656d656e744f726967696e5f2e202d206077686f60202d205468652073757370656e6465642063616e64696461746520746f206265206a75646765642e202d20606a756467656d656e7460202d2060417070726f7665602c206052656a656374602c206f7220605265626964602e204b65793a204220286c656e206f662062696473292c204d20286c656e206f66206d656d62657273292c2058202862616c616e636520616374696f6e29202d204f6e652073746f72616765207265616420746f20636865636b206077686f6020697320612073757370656e6465642063616e6469646174652e202d204f6e652073746f726167652072656d6f76616c206f66207468652073757370656e6465642063616e6469646174652e202d20417070726f7665204c6f67696320092d204f6e652073746f72616765207265616420746f206765742074686520617661696c61626c6520706f7420746f2070617920757365727320776974682e204f28312920092d204f6e652073746f7261676520777269746520746f207570646174652074686520617661696c61626c6520706f742e204f28312920092d204f6e652073746f72616765207265616420746f20676574207468652063757272656e7420626c6f636b206e756d6265722e204f28312920092d204f6e652073746f72616765207265616420746f2067657420616c6c206d656d626572732e204f284d2920092d20557020746f206f6e6520756e726573657276652063757272656e637920616374696f6e2e20092d20557020746f2074776f206e65772073746f726167652077726974657320746f207061796f7574732e20092d20557020746f206f6e652073746f726167652077726974652077697468204f286c6f67204d292062696e6172792073656172636820746f206164642061206d656d62657220746f20736f63696574792e202d2052656a656374204c6f67696320092d20557020746f206f6e6520726570617472696174652072657365727665642063757272656e637920616374696f6e2e204f28582920092d20557020746f206f6e652073746f7261676520777269746520746f2062616e2074686520766f756368696e67206d656d6265722066726f6d20766f756368696e6720616761696e2e202d205265626964204c6f67696320092d2053746f72616765206d75746174652077697468204f286c6f672042292062696e6172792073656172636820746f20706c616365207468652075736572206261636b20696e746f20626964732e202d20557020746f206f6e65206164646974696f6e616c206576656e7420696620756e766f7563682074616b657320706c6163652e202d204f6e652073746f726167652072656d6f76616c2e202d204f6e65206576656e7420666f7220746865206a756467656d656e742e20546f74616c20436f6d706c65786974793a204f284d202b206c6f674d202b2042202b2058296a756467656d656e744a756467656d656e7420416c6c6f772073757370656e73696f6e206a756467656d656e74206f726967696e20746f206d616b65206a756467656d656e74206f6e20612073757370656e646564206d656d6265722e20496620612073757370656e646564206d656d62657220697320666f72676976656e2c2077652073696d706c7920616464207468656d206261636b2061732061206d656d6265722c206e6f7420616666656374696e6720616e79206f6620746865206578697374696e672073746f72616765206974656d7320666f722074686174206d656d6265722e20496620612073757370656e646564206d656d6265722069732072656a65637465642c2072656d6f766520616c6c206173736f6369617465642073746f72616765206974656d732c20696e636c7564696e67207468656972207061796f7574732c20616e642072656d6f766520616e7920766f7563686564206269647320746865792063757272656e746c7920686176652e202d206077686f60202d205468652073757370656e646564206d656d62657220746f206265206a75646765642e202d2060666f726769766560202d204120626f6f6c65616e20726570726573656e74696e672077686574686572207468652073757370656e73696f6e206a756467656d656e74206f726967696e202020202020202020202020202020666f726769766573202860747275656029206f722072656a6563747320286066616c7365602920612073757370656e646564206d656d6265722e204b65793a204220286c656e206f662062696473292c204d20286c656e206f66206d656d6265727329202d204f6e652073746f72616765207265616420746f20636865636b206077686f6020697320612073757370656e646564206d656d6265722e204f283129202d20557020746f206f6e652073746f72616765207772697465204f284d292077697468204f286c6f67204d292062696e6172792073656172636820746f206164642061206d656d626572206261636b20746f20736f63696574792e202d20557020746f20332073746f726167652072656d6f76616c73204f28312920746f20636c65616e20757020612072656d6f766564206d656d6265722e202d20557020746f206f6e652073746f72616765207772697465204f2842292077697468204f2842292073656172636820746f2072656d6f766520766f7563686564206269642066726f6d20626964732e202d204f6e652073746f726167652072656d6f76616c2e204f28312920546f74616c20436f6d706c65786974793a204f284d202b206c6f674d202b204229666f726769766520416e6e756c2074686520666f756e64696e67206f662074686520736f63696574792e20546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205369676e65642c20616e6420746865207369676e696e67206163636f756e74206d75737420626520626f7468207468652060466f756e6465726020616e6420746865206048656164602e205468697320696d706c6965732074686174206974206d6179206f6e6c7920626520646f6e65207768656e207468657265206973206f6e65206d656d6265722e202d2054776f2073746f72616765207265616473204f2831292e202d20466f75722073746f726167652072656d6f76616c73204f2831292e20466f756e642074686520736f63696574792e205468697320697320646f6e65206173206120646973637265746520616374696f6e20696e206f7264657220746f20616c6c6f7720666f7220746865206d6f64756c6520746f20626520696e636c7564656420696e746f20612072756e6e696e6720636861696e20616e642063616e206f6e6c7920626520646f6e65206f6e63652e20546865206469737061746368206f726967696e20666f7220746869732063616c6c206d7573742062652066726f6d20746865205f466f756e6465725365744f726967696e5f2e202d2060666f756e64657260202d20546865206669727374206d656d62657220616e642068656164206f6620746865206e65776c7920666f756e64656420736f63696574792e202d20606d61785f6d656d6265727360202d2054686520696e697469616c206d6178206e756d626572206f66206d656d6265727320666f722074686520736f63696574792e202d206072756c657360202d205468652072756c6573206f66207468697320736f636965747920636f6e6365726e696e67206d656d626572736869702e202d2054776f2073746f72616765206d75746174657320746f207365742060486561646020616e642060466f756e646572602e204f283129202d204f6e652073746f7261676520777269746520746f2061646420746865206669727374206d656d62657220746f20736f63696574792e204f283129666f756e6465726d61785f6d656d6265727372756c6573205472616e7366657220746865206669727374206d617475726564207061796f757420666f72207468652073656e64657220616e642072656d6f76652069742066726f6d20746865207265636f7264732e204e4f54453a20546869732065787472696e736963206e6565647320746f2062652063616c6c6564206d756c7469706c652074696d657320746f20636c61696d206d756c7469706c65206d617475726564207061796f7574732e205061796d656e743a20546865206d656d6265722077696c6c20726563656976652061207061796d656e7420657175616c20746f207468656972206669727374206d617475726564207061796f757420746f20746865697220667265652062616c616e63652e20546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f20616e642061206d656d6265722077697468207061796f7574732072656d61696e696e672e204b65793a204d20286c656e206f66206d656d62657273292c205020286e756d626572206f66207061796f75747320666f72206120706172746963756c6172206d656d62657229202d204f6e652073746f726167652072656164204f284d2920616e64204f286c6f67204d292073656172636820746f20636865636b207369676e65722069732061206d656d6265722e202d204f6e652073746f726167652072656164204f28502920746f2067657420616c6c207061796f75747320666f722061206d656d6265722e202d204f6e652073746f726167652072656164204f28312920746f20676574207468652063757272656e7420626c6f636b206e756d6265722e202d204f6e652063757272656e6379207472616e736665722063616c6c2e204f285829202d204f6e652073746f72616765207772697465206f722072656d6f76616c20746f2075706461746520746865206d656d6265722773207061796f7574732e204f28502920546f74616c20436f6d706c65786974793a204f284d202b206c6f674d202b2050202b2058292041732061206d656d6265722c20766f7465206f6e2074686520646566656e6465722e20546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f20616e642061206d656d6265722e202d2060617070726f7665603a204120626f6f6c65616e2077686963682073617973206966207468652063616e6469646174652073686f756c6420626520617070726f766564202860747275656029206f722072656a656374656420286066616c736560292e202d204b65793a204d20286c656e206f66206d656d6265727329202d204f6e652073746f726167652072656164204f284d2920616e64204f286c6f67204d292073656172636820746f20636865636b20757365722069732061206d656d6265722e202d204f6e652073746f7261676520777269746520746f2061646420766f746520746f20766f7465732e204f28312920546f74616c20436f6d706c65786974793a204f284d202b206c6f674d292041732061206d656d6265722c20766f7465206f6e20612063616e6469646174652e202d206063616e646964617465603a205468652063616e646964617465207468617420746865206d656d62657220776f756c64206c696b6520746f20626964206f6e2e2020202020202020202020202020617070726f766564202860747275656029206f722072656a656374656420286066616c736560292e204b65793a204320286c656e206f662063616e64696461746573292c204d20286c656e206f66206d656d6265727329202d204f6e65206163636f756e74206c6f6f6b75702e202d204f6e652073746f726167652072656164204f28432920616e64204f2843292073656172636820746f20636865636b2074686174207573657220697320612063616e6469646174652e20546f74616c20436f6d706c65786974793a204f284d202b206c6f674d202b20432963616e646964617465204173206120766f756368696e67206d656d6265722c20756e766f7563682061206269642e2054686973206f6e6c7920776f726b73207768696c6520766f75636865642075736572206973206f6e6c792061206269646465722028616e64206e6f7420612063616e646964617465292e20546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f20616e64206120766f756368696e67206d656d6265722e202d2060706f73603a20506f736974696f6e20696e207468652060426964736020766563746f72206f6620746865206269642077686f2073686f756c6420626520756e766f75636865642e204b65793a204220286c656e206f66206269647329202d204f6e652073746f726167652072656164204f28312920746f20636865636b20746865207369676e6572206973206120766f756368696e67206d656d6265722e202d204f6e652073746f72616765206d757461746520746f20726574726965766520616e64207570646174652074686520626964732e204f284229202d204f6e6520766f756368696e672073746f726167652072656d6f76616c2e204f28312920546f74616c20436f6d706c65786974793a204f2842292041732061206d656d6265722c20766f75636820666f7220736f6d656f6e6520746f206a6f696e20736f636965747920627920706c6163696e67206120626964206f6e20746865697220626568616c662e205468657265206973206e6f206465706f73697420726571756972656420746f20766f75636820666f722061206e6577206269642c206275742061206d656d6265722063616e206f6e6c7920766f75636820666f72206f6e652062696420617420612074696d652e2049662074686520626964206265636f6d657320612073757370656e6465642063616e64696461746520616e6420756c74696d6174656c792072656a6563746564206279207468652073757370656e73696f6e206a756467656d656e74206f726967696e2c20746865206d656d6265722077696c6c2062652062616e6e65642066726f6d20766f756368696e6720616761696e2e204173206120766f756368696e67206d656d6265722c20796f752063616e20636c61696d206120746970206966207468652063616e6469646174652069732061636365707465642e2054686973207469702077696c6c2062652070616964206173206120706f7274696f6e206f66207468652072657761726420746865206d656d6265722077696c6c207265636569766520666f72206a6f696e696e672074686520736f63696574792e202d206077686f603a2054686520757365722077686f20796f7520776f756c64206c696b6520746f20766f75636820666f722e202d206076616c7565603a2054686520746f74616c2072657761726420746f2062652070616964206265747765656e20796f7520616e64207468652063616e6469646174652069662074686579206265636f6d652061206d656d62657220696e2074686520736f63696574792e202d2060746970603a20596f757220637574206f662074686520746f74616c206076616c756560207061796f7574207768656e207468652063616e64696461746520697320696e64756374656420696e746f2074686520736f63696574792e2054697073206c6172676572207468616e206076616c7565602077696c6c206265207361747572617465642075706f6e207061796f75742e204b65793a204220286c656e206f662062696473292c204320286c656e206f662063616e64696461746573292c204d20286c656e206f66206d656d6265727329202d2053746f726167652052656164733a20092d204f6e652073746f72616765207265616420746f20726574726965766520616c6c206d656d626572732e204f284d2920092d204f6e652073746f72616765207265616420746f20636865636b206d656d626572206973206e6f7420616c726561647920766f756368696e672e204f28312920092d204f6e652073746f72616765207265616420746f20636865636b20666f722073757370656e6465642063616e6469646174652e204f28312920092d204f6e652073746f72616765207265616420746f20636865636b20666f722073757370656e646564206d656d6265722e204f28312920092d204f6e652073746f72616765207265616420746f20726574726965766520616c6c2063757272656e7420626964732e204f28422920092d204f6e652073746f72616765207265616420746f20726574726965766520616c6c2063757272656e742063616e646964617465732e204f284329202d2053746f72616765205772697465733a20092d204f6e652073746f7261676520777269746520746f20696e7365727420766f756368696e672073746174757320746f20746865206d656d6265722e204f28312920092d204f6e652073746f72616765206d757461746520746f206164642061206e65772062696420746f2074686520766563746f72204f2842292028544f444f3a20706f737369626c65206f7074696d697a6174696f6e20772f20726561642920092d20557020746f206f6e652073746f726167652072656d6f76616c206966206269642e6c656e2829203e204d41585f4249445f434f554e542e204f283129202d204e6f7461626c6520436f6d7075746174696f6e3a20092d204f286c6f67204d292073656172636820746f20636865636b2073656e6465722069732061206d656d6265722e20092d204f2842202b2043202b206c6f67204d292073656172636820746f20636865636b2075736572206973206e6f7420616c726561647920612070617274206f6620736f63696574792e20092d204f286c6f672042292073656172636820746f20696e7365727420746865206e65772062696420736f727465642e202d2045787465726e616c204d6f64756c65204f7065726174696f6e733a20092d204f6e652062616c616e63652072657365727665206f7065726174696f6e2e204f28582920092d20557020746f206f6e652062616c616e636520756e72657365727665206f7065726174696f6e20696620626964732e6c656e2829203e204d41585f4249445f434f554e542e202d204576656e74733a20092d204f6e65206576656e7420666f7220766f7563682e20092d20557020746f206f6e65206576656e7420666f72204175746f556e626964206966206269642e6c656e2829203e204d41585f4249445f434f554e542e20546f74616c20436f6d706c65786974793a204f284d202b2042202b2043202b206c6f674d202b206c6f6742202b20582942616c616e63654f663c542c20493e2041206269646465722063616e2072656d6f76652074686569722062696420666f7220656e74727920696e746f20736f63696574792e20427920646f696e6720736f2c20746865792077696c6c20686176652074686569722063616e646964617465206465706f7369742072657475726e6564206f7220746865792077696c6c20756e766f75636820746865697220766f75636865722e205061796d656e743a2054686520626964206465706f73697420697320756e7265736572766564206966207468652075736572206d6164652061206269642e20546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f20616e642061206269646465722e202d2060706f73603a20506f736974696f6e20696e207468652060426964736020766563746f72206f6620746865206269642077686f2077616e747320746f20756e6269642e204b65793a204220286c656e206f662062696473292c2058202862616c616e636520756e7265736572766529202d204f6e652073746f72616765207265616420616e6420777269746520746f20726574726965766520616e64207570646174652074686520626964732e204f284229202d20456974686572206f6e6520756e726573657276652062616c616e636520616374696f6e204f285829206f72206f6e6520766f756368696e672073746f726167652072656d6f76616c2e204f28312920546f74616c20436f6d706c65786974793a204f2842202b205829706f7320412075736572206f757473696465206f662074686520736f63696574792063616e206d616b6520612062696420666f7220656e7472792e205061796d656e743a206043616e6469646174654465706f736974602077696c6c20626520726573657276656420666f72206d616b696e672061206269642e2049742069732072657475726e6564207768656e2074686520626964206265636f6d65732061206d656d6265722c206f7220696620746865206269642063616c6c732060756e626964602e202d206076616c7565603a2041206f6e652074696d65207061796d656e74207468652062696420776f756c64206c696b6520746f2072656365697665207768656e206a6f696e696e672074686520736f63696574792e204b65793a204220286c656e206f662062696473292c204320286c656e206f662063616e64696461746573292c204d20286c656e206f66206d656d62657273292c2058202862616c616e636520726573657276652920092d204f6e65206576656e7420666f72206e6577206269642e0000000000131b1100070000000000000000000000138212000c00000000000000000000000000000000000000000000000000000000000000c8b01200c89111000000000000000000bc65110001000000000000000000000000000000c4651100050000000000000000000000811312000700000000000000000000000000000000000000000000000000000000000000c8b01200cc6511000000000000000000dc651100020000000000000000000000000000008cc811000a0000000000000000000000ec6511002700000000000000000000000000000000000000000000000000000000000000c8b01200c0661100000000000000000014661100010000000000000001000000000000001c661100130000000101000000000000138212000c000000000000002f6611003900000000000000000000000000000000000000c8b012006866110000000000000000007866110001000000000000000000000000000000642c11000300000000000000000000006a5c11000f00000000000000000000000000000000000000000000000000000000000000c8b0120080661100000000000000000090661100010000000000000001000000000000001a1b1100040000000000000000000000138212000c00000000000000000000000000000000000000000000000000000000000000c8b01200c8911100000000000000000098661100010000000000000000000000000000006bef1100070000000000000000000000e03c12001100000000000000000000000000000000000000000000000000000000000000c8b01200b09111000000000000000000a066110001000000000000000100000000000000df2d1100100000000101000000000000138212000c0000000000000000ee11000400000000000000000000000000000000000000c8b01200a86611000000000000000000b866110001000000000000000100000000000000342d1100040000000000000000000000ec6511002700000000000000000000000000000000000000000000000000000000000000c8b01200c06611000000000000000000d066110001000000000000000100000000000000d8661100080000000101000000000000138212000c00000000000000e06611000e00000000000000000000000000000000000000c8b01200f066110000000000000000000067110001000000000000000000000000000000f62d1100070000000101000000000000138212000c00000000000000086711002600000000000000000000000000000000000000c8b012003067110000000000000000004067110001000000000000000100000000000000ef2d1100070000000101000000000000138212000c00000000000000486711000b00000000000000000000000000000000000000c8b012004881110000000000000000005467110001000000000000000100000000000000d71a1100050000000205050000000000138212000c00000000000000138212000c00000000000000bc1f11000400000000000000c8b012006c67110000000000000000005c67110001000000000000000000000000000000642d1100080000000000000000000000138212000c00000000000000000000000000000000000000000000000000000000000000c8b01200c8911100000000000000000064671100010000000000000000000000000000006c2d11000d0000000105000000000000138212000c00000000000000bc1f11000400000000000000000000000000000000000000c8b012006c67110000000000000000007c67110001000000000000000000000000000000cd1a11000a0000000000000000000000847212000300000000000000000000000000000000000000000000000000000000000000c8b0120048811100000000000000000084671100010000000000000001000000e26a11001200000052756c65730000003c000000000000000100000051000000796a110054000000cd6a1100150000005665633c4269643c543a3a4163636f756e7449642c2042616c616e63654f663c542c20493e3e3e002b6a11004e00000053757370656e64656443616e646964617465732842616c616e63654f663c542c20493e2c204269644b696e643c543a3a4163636f756e7449642c2042616c616e63654f663c542c20493e3e293c0000000000000001000000510000000a6a1100210000003c0000000000000001000000de000000ba69110050000000806911003a0000005b691100250000003c0000000000000001000000510000003d6911001e0000003c000000000000000100000059000000036911003a000000566f756368696e67566f756368696e6753746174757300003c000000000000000100000051000000ca681100390000005665633c28543a3a426c6f636b4e756d6265722c2042616c616e63654f663c542c20493e293e00003c0000000000000001000000590000007768110053000000537472696b65436f756e740040681100370000000c68110034000000db671100310000003c000000000000000100000051000000c3671100180000008c6711003700000020546865206d6178206e756d626572206f66206d656d6265727320666f722074686520736f6369657479206174206f6e652074696d652e20566f74657320666f722074686520646566656e6465722e2054686520646566656e64696e67206d656d6265722063757272656e746c79206265696e67206368616c6c656e6765642e20446f75626c65206d61702066726f6d2043616e646964617465202d3e20566f746572202d3e20284d617962652920566f74652e20546865206f6e676f696e67206e756d626572206f66206c6f73696e6720766f746573206361737420627920746865206d656d6265722e2050656e64696e67207061796f7574733b206f72646572656420627920626c6f636b206e756d6265722c20776974682074686520616d6f756e7420746861742073686f756c642062652070616964206f75742e204d656d626572732063757272656e746c7920766f756368696e67206f722062616e6e65642066726f6d20766f756368696e6720616761696e205468652063757272656e7420626964732c2073746f726564206f726465726564206279207468652076616c7565206f6620746865206269642e2054686520736574206f662073757370656e646564206d656d626572732e205468652063757272656e7420736574206f66206d656d626572732c206f7264657265642e20546865206d6f7374207072696d6172792066726f6d20746865206d6f737420726563656e746c7920617070726f766564206d656d626572732e20416d6f756e74206f66206f7572206163636f756e742062616c616e63652074686174206973207370656369666963616c6c7920666f7220746865206e65787420726f756e642773206269642873292e2054686520736574206f662073757370656e6465642063616e646964617465732e205468652063757272656e7420736574206f662063616e646964617465733b206269646465727320746861742061726520617474656d7074696e6720746f206265636f6d65206d656d626572732e20412068617368206f66207468652072756c6573206f66207468697320736f636965747920636f6e6365726e696e67206d656d626572736869702e2043616e206f6e6c7920626520736574206f6e636520616e64206f6e6c792062792074686520666f756e6465722e20546865206669727374206d656d6265722e00000000446c110010000000000000006a5c11000f00000000000000c8b01200546c11000000000000000000646c11000100000000000000000000006c6c110012000000000000006a5c11000f00000000000000c8b01200806c11000000000000000000906c1100020000000000000000000000a06c11000a00000000000000847212000300000000000000c8b01200ac6c11000000000000000000bc6c1100020000000000000000000000cc6c11000b000000000000006a5c11000f00000000000000c8b01200d86c11000000000000000000e86c1100010000000000000000000000f06c11000e00000000000000f50812000e00000000000000c8b01200006d11000000000000000000106d1100010000000000000000000000186d11000f00000000000000f50812000e00000000000000c8b01200286d11000000000000000000386d1100010000000000000043616e6469646174654465706f7369743c0000000000000001000000df000000036f11003f00000057726f6e6753696465446564756374696f6e00003c0000000000000001000000e00000007e6e110055000000d36e1100300000004d6178537472696b657300003c0000000000000001000000e1000000036e11005d000000606e11001e000000506572696f645370656e64003c0000000000000001000000e2000000b86d11004b000000526f746174696f6e506572696f6400003c0000000000000001000000e3000000746d1100440000004368616c6c656e6765506572696f64003c0000000000000001000000e4000000406d11003400000020546865206e756d626572206f6620626c6f636b73206265747765656e206d656d62657273686970206368616c6c656e6765732e20546865206e756d626572206f6620626c6f636b73206265747765656e2063616e6469646174652f6d656d6265727368697020726f746174696f6e20706572696f64732e2054686520616d6f756e74206f6620696e63656e7469766520706169642077697468696e206561636820706572696f642e20446f65736e277420696e636c75646520566f7465725469702e20546865206e756d626572206f662074696d65732061206d656d626572206d617920766f7465207468652077726f6e672077617920286f72206e6f7420617420616c6c2c207768656e207468657920617265206120736b657074696329206265666f72652074686579206265636f6d652073757370656e6465642e2054686520616d6f756e74206f662074686520756e70616964207265776172642074686174206765747320646564756374656420696e207468652063617365207468617420656974686572206120736b657074696320646f65736e277420766f7465206f7220736f6d656f6e6520766f74657320696e207468652077726f6e67207761792e20546865206d696e696d756d20616d6f756e74206f662061206465706f73697420726571756972656420666f7220612062696420746f206265206d6164652e000000000000fc2311000d00000000000000a4701100020000000000000000000000d4701100090000000000000000000000092411000f000000000000001c711100010000000000000000000000347111000700000000000000000000001824110010000000000000001c7111000100000000000000000000006c711100080000000000000000000000282411000e00000000000000ac711100020000000000000000000000dc711100130000000000000000000000362411000b00000000000000747211000100000000000000000000008c721100130000000000000000000000412411000700000000000000247311000300000000000000000000006c731100130000000000000000000000971b11000300000000000000047411000200000000000000000000003474110013000000000000000000000048241100090000000000000074721100010000000000000000000000cc7411000e00000000000000000000007c4712000500000000000000814712001500000000000000847f11000b00000000000000203f120023000000b27e11004b000000fd7e11004d0000004a7f110015000000c8b01200000000002a7f12000b000000bc4812000800000085301100190000005f7f110025000000927f12000c00000000000000a77e11000b000000000000008813120016000000587e11003f000000c8b01200000000002a7f12000b000000bc481200080000008530110019000000977e110010000000927f12000c000000d67d1100570000002d7e11002b000000c8b01200000000002a7f12000b000000bc4812000800000085301100190000004531110011000000927f12000c00000000000000ed7a1100060000000000000070a31100070000000000000097d211000300000000000000138212000c000000a77c110057000000c8b01200000000007881120034000000c8b0120000000000fe7c110055000000537d110035000000c8b012000000000041791100580000009979110017000000b07911003b000000c8b0120000000000eb7911001e000000c8b01200000000002a7f12000b000000887d1100270000005d7c110019000000af7d110027000000857f12000d000000927f12000c00000000000000f778110004000000000000008113120007000000f37a110055000000c8b0120000000000487b110038000000c8b0120000000000807b110054000000d47b110051000000257c110014000000c8b01200000000009a75110059000000f375110058000000c8b0120000000000397c110024000000c8b01200000000002a7f12000b0000004b761100090000005d7c110019000000767c110031000000857f12000d000000927f12000c00000000000000ed7a1100060000000000000070a31100070000000000000097d211000300000000000000138212000c00000000000000fb7811000900000000000000845712000c000000047911003d000000c8b0120000000000dc76110055000000317711001d000000c8b012000000000041791100580000009979110017000000b07911003b000000b4771100540000000878110036000000c8b0120000000000eb7911001e000000c8b01200000000002a7f12000b000000097a110050000000597a110051000000aa7a110043000000857f12000d000000927f12000c00000000000000f77811000400000000000000811312000700000000000000fb7811000900000000000000845712000c000000af7611002d000000c8b0120000000000dc76110055000000317711001d000000c8b01200000000009a751100590000004e77110058000000a67711000e000000b4771100540000000878110036000000c8b01200000000003e78110059000000977811000d000000c8b01200000000002a7f12000b0000004b76110009000000a478110040000000e478110013000000927f12000c0000003c75110018000000c8b01200000000007881120034000000c8b01200000000005475110046000000c8b01200000000009a75110059000000f375110058000000c8b01200000000002a7f12000b0000004b7611000900000054761100390000008d76110022000000927f12000c00000020436c6f736520616e64207061796f75742061207469702e2054686520746970206964656e74696669656420627920606861736860206d75737420686176652066696e69736865642069747320636f756e74646f776e20706572696f642e202d206068617368603a20546865206964656e74697479206f6620746865206f70656e2074697020666f722077686963682061207469702076616c7565206973206465636c617265642e205468697320697320666f726d65642020206173207468652068617368206f6620746865207475706c65206f6620746865206f726967696e616c207469702060726561736f6e6020616e64207468652062656e6566696369617279206163636f756e742049442e202d20604f28542960202d204f6e652073746f726167652072657472696576616c2028636f64656320604f285429602920616e642074776f2072656d6f76616c732e202d20557020746f2074687265652062616c616e6365206f7065726174696f6e732e204465636c6172652061207469702076616c756520666f7220616e20616c72656164792d6f70656e207469702e20546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f20616e6420746865207369676e696e67206163636f756e74206d7573742062652061206d656d626572206f662074686520605469707065727360207365742e2020206173207468652068617368206f6620746865207475706c65206f66207468652068617368206f6620746865206f726967696e616c207469702060726561736f6e6020616e64207468652062656e65666963696172792020206163636f756e742049442e202d20607469705f76616c7565603a2054686520616d6f756e74206f66207469702074686174207468652073656e64657220776f756c64206c696b6520746f20676976652e20546865206d656469616e2074697020202076616c7565206f662061637469766520746970706572732077696c6c20626520676976656e20746f20746865206077686f602e20456d6974732060546970436c6f73696e676020696620746865207468726573686f6c64206f66207469707065727320686173206265656e207265616368656420616e642074686520636f756e74646f776e20706572696f642068617320737461727465642e202d204f6e652073746f72616765206d75746174696f6e2028636f64656320604f28542960292c206f6e652073746f72616765207265616420604f283129602e202d20557020746f206f6e65206576656e742e686173687469705f76616c7565204769766520612074697020666f7220736f6d657468696e67206e65773b206e6f2066696e6465722773206665652077696c6c2062652074616b656e2e202d2060726561736f6e603a2054686520726561736f6e20666f722c206f7220746865207468696e6720746861742064657365727665732c20746865207469703b2067656e6572616c6c7920746869732077696c6c20626520202061205554462d382d656e636f6465642055524c2e202d206077686f603a20546865206163636f756e742077686963682073686f756c6420626520637265646974656420666f7220746865207469702e20456d69747320604e657754697060206966207375636365737366756c2e202d20604f2852202b2054296020776865726520605260206c656e677468206f662060726561736f6e602c2060546020697320746865206e756d626572206f6620746970706572732e206054602069732020206e61747572616c6c79206361707065642061732061206d656d62657273686970207365742c20605260206973206c696d69746564207468726f756768207472616e73616374696f6e2d73697a652e202d2054776f2073746f7261676520696e73657274696f6e732028636f6465637320604f285229602c20604f28542960292c206f6e65207265616420604f283129602e726561736f6e20526574726163742061207072696f72207469702d7265706f72742066726f6d20607265706f72745f617765736f6d65602c20616e642063616e63656c207468652070726f63657373206f662074697070696e672e204966207375636365737366756c2c20746865206f726967696e616c206465706f7369742077696c6c20626520756e72657365727665642e20546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f20616e642074686520746970206964656e74696669656420627920606861736860206d7573742068617665206265656e207265706f7274656420627920746865207369676e696e67206163636f756e74207468726f75676820607265706f72745f617765736f6d65602028616e64206e6f74207468726f75676820607469705f6e657760292e20456d697473206054697052657472616374656460206966207375636365737366756c2e202d204f6e652062616c616e6365206f7065726174696f6e2e202d2054776f2073746f726167652072656d6f76616c7320286f6e6520726561642c20636f64656320604f28542960292e205265706f727420736f6d657468696e672060726561736f6e60207468617420646573657276657320612074697020616e6420636c61696d20616e79206576656e7475616c207468652066696e6465722773206665652e205061796d656e743a20605469705265706f72744465706f73697442617365602077696c6c2062652072657365727665642066726f6d20746865206f726967696e206163636f756e742c2061732077656c6c20617320605469705265706f72744465706f736974506572427974656020666f722065616368206279746520696e2060726561736f6e602e202d20604f2852296020776865726520605260206c656e677468206f662060726561736f6e602e202d204f6e652073746f72616765206d75746174696f6e2028636f64656320604f28522960292e20417070726f766520612070726f706f73616c2e2041742061206c617465722074696d652c207468652070726f706f73616c2077696c6c20626520616c6c6f636174656420746f207468652062656e656669636961727920616e6420746865206f726967696e616c206465706f7369742077696c6c2062652072657475726e65642e2052656a65637420612070726f706f736564207370656e642e20546865206f726967696e616c206465706f7369742077696c6c20626520736c61736865642e202d204f6e6520444220636c6561722e70726f706f73616c5f69642050757420666f727761726420612073756767657374696f6e20666f72207370656e64696e672e2041206465706f7369742070726f706f7274696f6e616c20746f207468652076616c756520697320726573657276656420616e6420736c6173686564206966207468652070726f706f73616c2069732072656a65637465642e2049742069732072657475726e6564206f6e6365207468652070726f706f73616c20697320617761726465642e202d204f6e65204442206368616e67652c206f6e6520657874726120444220656e7472792e62656e65666963696172790000000000889112000d000000000000000000000055ef11000d00000000000000000000000000000000000000000000000000000000000000c8b01200488111000000000000000000588111000100000000000000010000000000000062ef110009000000010100000000000055ef11000d00000000000000608111002400000000000000000000000000000000000000c8b012008481110000000000000000009481110001000000000000000000000000000000959112000900000000000000000000009c8111001200000000000000000000000000000000000000000000000000000000000000c8b01200b08111000000000000000000c081110001000000000000000100000000000000c8811100040000000105000000000000811312000700000000000000cc8111003c00000000000000000000000000000000000000c8b01200c8911100000000000000000008821100030000000000000000000000000000002082110007000000010500000000000081131200070000000000000070a311000700000000000000000000000000000000000000c8b01200288211000000000000000000388211000200000000000000000000003c00000000000000010000006b000000148411002900000050726f706f73616c3c543a3a4163636f756e7449642c2042616c616e63654f663c543e3e3c000000000000000100000051000000f58311001f0000005665633c50726f706f73616c496e6465783e00003c000000000000000100000059000000b78311003e000000546970734f70656e5469703c543a3a4163636f756e7449642c2042616c616e63654f663c543e2c20543a3a426c6f636b4e756d6265722c20543a3a486173683ef282110056000000488311004f0000009783110020000000526561736f6e73003c00000000000000010000005d00000048821100520000009a821100580000002053696d706c6520707265696d616765206c6f6f6b75702066726f6d2074686520726561736f6e2773206861736820746f20746865206f726967696e616c20646174612e20416761696e2c2068617320616e20696e73656375726520656e756d657261626c6520686173682073696e636520746865206b65792069732067756172616e7465656420746f2062652074686520726573756c74206f6620612073656375726520686173682e2054697073207468617420617265206e6f742079657420636f6d706c657465642e204b65796564206279207468652068617368206f66206028726561736f6e2c2077686f29602066726f6d207468652076616c75652e2054686973206861732074686520696e73656375726520656e756d657261626c6520686173682066756e6374696f6e2073696e636520746865206b657920697473656c6620697320616c72656164792067756172616e7465656420746f20626520612073656375726520686173682e2050726f706f73616c20696e646963657320746861742068617665206265656e20617070726f76656420627574206e6f742079657420617761726465642e2050726f706f73616c7320746861742068617665206265656e206d6164652e204e756d626572206f662070726f706f73616c7320746861742068617665206265656e206d6164652e00000000000000008611000c000000000000000c8611000700000000000000c8b0120014861100000000000000000024861100020000000000000000000000348611001300000000000000845712000c00000000000000c8b01200e4861100000000000000000048861100010000000000000000000000508611000b00000000000000f50812000e00000000000000c8b012008c86110000000000000000005c8611000100000000000000000000006486110004000000000000000c8611000700000000000000c8b0120068861100000000000000000078861100010000000000000000000000808611000c00000000000000f50812000e00000000000000c8b012008c86110000000000000000009c861100010000000000000000000000a48611000d00000000000000b18611000700000000000000c8b01200b88611000000000000000000c8861100010000000000000000000000d08611001400000000000000845712000c00000000000000c8b01200e48611000000000000000000f4861100010000000000000000000000fc8611001700000000000000845712000c00000000000000c8b0120014871100000000000000000024871100010000000000000050726f706f73616c426f6e645065726d696c6c003c0000000000000001000000e5000000f8881100550000004d8911004400000050726f706f73616c426f6e644d696e696d756d00a6881100520000005370656e64506572696f640084881100220000004275726e3c0000000000000001000000e60000004088110044000000546970436f756e74646f776e3c0000000000000001000000e7000000ef8711005100000054697046696e6465727346656550657263656e743c0000000000000001000000e8000000a38711004c0000005469705265706f72744465706f736974426173653c0000000000000001000000610000006e871100350000005469705265706f72744465706f73697450657242797465003c0000000000000001000000650000002c871100420000002054686520616d6f756e742068656c64206f6e206465706f7369742070657220627974652077697468696e2074686520746970207265706f727420726561736f6e2e2054686520616d6f756e742068656c64206f6e206465706f73697420666f7220706c6163696e67206120746970207265706f72742e2054686520616d6f756e74206f66207468652066696e616c2074697020776869636820676f657320746f20746865206f726967696e616c207265706f72746572206f6620746865207469702e2054686520706572696f6420666f722077686963682061207469702072656d61696e73206f70656e20616674657220697320686173206163686965766564207468726573686f6c6420746970706572732e2050657263656e74616765206f662073706172652066756e64732028696620616e7929207468617420617265206275726e7420706572207370656e6420706572696f642e20506572696f64206265747765656e2073756363657373697665207370656e64732e204d696e696d756d20616d6f756e74206f662066756e647320746861742073686f756c6420626520706c6163656420696e2061206465706f73697420666f72206d616b696e6720612070726f706f73616c2e204672616374696f6e206f6620612070726f706f73616c27732076616c756520746861742073686f756c6420626520626f6e64656420696e206f7264657220746f20706c616365207468652070726f706f73616c2e20416e2061636365707465642070726f706f73616c2067657473207468657365206261636b2e20412072656a65637465642070726f706f73616c20646f6573206e6f742e6d656d6f727976616c69646174696f6e3a20696d706f727420656e74727920706f696e747320746f2061206e6f6e2d6578697374656e74207479706543616e6e6f7420696d706f727420676c6f62616c736d6f64756c6520696d706f7274732061206e6f6e2d6578697374656e742066756e6374696f6e6d6f64756c6520696d706f72747320606578745f7072696e746c6e60206275742064656275672066656174757265732064697361626c656443616e6e6f7420696d706f7274207461626c65736d6f64756c652068617320696d706f7274732066726f6d2061206e6f6e2d27656e7627206e616d6573706163654d656d6f727920696d706f7274206d757374206861766520746865206669656c64206e616d6520276d656d6f7279274d756c7469706c65206d656d6f727920696d706f72747320646566696e65644d6178696d756d206e756d626572206f662070616765732073686f756c6420626520616c77617973206465636c617265642e52657175657374656420696e697469616c206e756d626572206f662070616765732073686f756c64206e6f74206578636565642074686520726571756573746564206d6178696d756d4d6178696d756d206e756d626572206f662070616765732073686f756c64206e6f74206578636565642074686520636f6e66696775726564206d6178696d756d2e0000000000fc2811000a00000000000000c08c1100010000000000000000000000d88c1100030000000000000000000000c1c411000d00000000000000c08c1100010000000000000000000000f08c1100030000000000000000000000062911000b00000000000000088d1100020000000000000000000000388d1100050000000000000000000000112911000d00000000000000608d1100010000000000000000000000788d11000400000000000000000000001e2911000a00000000000000988d1100010000000000000000000000b08d1100050000000000000000000000282911000900000000000000c08c1100010000000000000000000000d88d1100010000000000000000000000312911000b00000000000000c8b01200000000000000000000000000e08d110001000000000000000000000097d211000300000000000000138212000c0000009f9011001f000000c8b0120000000000be9011002d0000004b90110024000000c8b01200000000006f9011003000000000000000429011000600000000000000138212000c00000000000000489011000300000000000000138212000c000000a08f110030000000c8b0120000000000d08f11002e000000c8b0120000000000fe8f11004400000000000000998f11000700000000000000e03c120011000000f98e1100560000004f8f11001b000000c8b01200000000006a8f11002f00000000000000108212000300000000000000138212000c0000003e8e110036000000c8b0120000000000748e11003d000000c8b0120000000000b18e1100480000000e8e110030000000e88d1100260000002052656d6f766520746865207072696d65206d656d626572206966206974206578697374732e2053657420746865207072696d65206d656d6265722e204d75737420626520612063757272656e74206d656d6265722e2053776170206f7574207468652073656e64696e67206d656d62657220666f7220736f6d65206f74686572206b657920606e6577602e204d6179206f6e6c792062652063616c6c65642066726f6d20605369676e656460206f726967696e206f6620612063757272656e74206d656d6265722e205072696d65206d656d62657273686970206973207061737365642066726f6d20746865206f726967696e206163636f756e7420746f20606e6577602c20696620657874616e742e204368616e676520746865206d656d6265727368697020746f2061206e6577207365742c20646973726567617264696e6720746865206578697374696e67206d656d626572736869702e204265206e69636520616e64207061737320606d656d6265727360207072652d736f727465642e204d6179206f6e6c792062652063616c6c65642066726f6d206052657365744f726967696e60206f7220726f6f742e6d656d626572732053776170206f7574206f6e65206d656d626572206072656d6f76656020666f7220616e6f746865722060616464602e204d6179206f6e6c792062652063616c6c65642066726f6d2060537761704f726967696e60206f7220726f6f742e205072696d65206d656d62657273686970206973202a6e6f742a207061737365642066726f6d206072656d6f76656020746f2060616464602c20696620657874616e742e72656d6f76656164642052656d6f76652061206d656d626572206077686f602066726f6d20746865207365742e204d6179206f6e6c792062652063616c6c65642066726f6d206052656d6f76654f726967696e60206f7220726f6f742e204164642061206d656d626572206077686f6020746f20746865207365742e204d6179206f6e6c792062652063616c6c65642066726f6d20604164644f726967696e60206f7220726f6f742e496e7374616e6365314d656d626572736869700000000000006bef1100070000000000000000000000e03c12001100000000000000000000000000000000000000000000000000000000000000c8b01200b09111000000000000000000c0911100010000000000000001000000000000007bea1100050000000000000000000000138212000c00000000000000000000000000000000000000000000000000000000000000c8b01200c89111000000000000000000d89111000100000000000000000000003c00000000000000010000005900000009921100320000003c000000000000000100000051000000e091110029000000205468652063757272656e74207072696d65206d656d6265722c206966206f6e65206578697374732e205468652063757272656e74206d656d626572736869702c2073746f72656420617320616e206f726465726564205665632e0000000000991911000b0000000000000058921100010000000000000060921100200000002053656e646572206d75737420626520746865205375646f206163636f756e74696e636f7272656374206964656e746974796e6f7420766f7563686564622e6c656e2829203e20313030303b207165649c2d110043000000bc0400003100000000000000d82311001c00000000000000a0931100010000000000000000000000c42311001400000000000000a8931100010000000000000000000000b82311000c00000000000000b0931100010000000000000000000000ac2311000c00000000000000b8931100010000000000000000000000a22311000a00000000000000c0931100010000000000000000000000992311000900000000000000c8931100010000000000000000000000902311000900000000000000d0931100010000000000000000000000872311000900000000000000d89311000100000000000000399511001f0000001e9511001b000000fc94110022000000d994110023000000c09411001900000078941100480000002d9411004b000000e09311004d00000020546865207469702063616e6e6f7420626520636c61696d65642f636c6f73656420626563617573652069742773207374696c6c20696e2074686520636f756e74646f776e20706572696f642e20546865207469702063616e6e6f7420626520636c61696d65642f636c6f736564206265636175736520746865726520617265206e6f7420656e6f7567682074697070657273207965742e20546865206163636f756e7420617474656d7074696e6720746f20726574726163742074686520746970206973206e6f74207468652066696e646572206f6620746865207469702e2054686520746970206861736820697320756e6b6e6f776e2e20546865207469702077617320616c726561647920666f756e642f737461727465642e2054686520726561736f6e20676976656e206973206a75737420746f6f206269672e204e6f2070726f706f73616c206174207468617420696e6465782e2050726f706f73657227732062616c616e636520697320746f6f206c6f772e000000007f1b11000b0000000000000050971100010000000000000000000000d1ea1100090000000000000058971100010000000000000000000000721b11000d0000000000000060971100010000000000000000000000691b11000900000000000000689711000100000000000000000000005d1b11000c0000000000000070971100010000000000000000000000551b1100080000000000000078971100010000000000000000000000471b11000e0000000000000080971100010000000000000000000000381b11000f0000000000000088971100010000000000000000000000291b11000f00000000000000909711000100000000000000000000001e1b11000b00000000000000989711000100000000000000000000001a1b11000400000000000000a0971100010000000000000000000000131b11000700000000000000a8971100010000000000000000000000091b11000a00000000000000b0971100010000000000000000000000f91a11001000000000000000b8971100010000000000000000000000ed1a11000c00000000000000c0971100010000000000000000000000cd1a11000a00000000000000c8971100010000000000000000000000e31a11000a00000000000000d0971100010000000000000000000000dc1a11000700000000000000d89711000100000000000000ce99110024000000b8991100160000009e9911001a0000008b991100130000007499110017000000619911001300000048991100190000002199110027000000e79811003a000000cf98110018000000aa981100250000008f9811001b000000729811001d000000559811001d0000003c981100190000001b98110021000000fc9711001f000000e09711001c000000205468652063616c6c6572206973206e6f742074686520686561642e205468652063616c6c6572206973206e6f742074686520666f756e6465722e20546f6f206d616e79206d656d6265727320696e2074686520736f63696574792e2055736572206973206e6f7420612063616e6469646174652e205573657220697320616c726561647920612063616e6469646174652e20557365722068617320616c7265616479206d6164652061206269642e2043616e6e6f742072656d6f76652074686520666f756e6465722e2043616e6e6f742072656d6f7665207468652068656164206f662074686520636861696e2e204d656d626572206973206e6f7420766f756368696e672e204d656d62657220697320616c726561647920766f756368696e67206f722062616e6e65642066726f6d20766f756368696e6720616761696e2e204e6f7420656e6f75676820696e20706f7420746f206163636570742063616e6469646174652e20536f636965747920616c726561647920666f756e6465642e204e6f7468696e6720746f207061796f75742e2055736572206973206e6f742073757370656e6465642e20557365722069732073757370656e6465642e205573657220697320616c72656164792061206d656d6265722e2055736572206973206e6f742061206d656d6265722e20416e20696e636f727265637420706f736974696f6e207761732070726f76696465642e4368617267655472616e73616374696f6e5061796d656e74546f6f536f6f6e4368616e676550656e64696e67526573756d654661696c656450617573654661696c65647265706f72745f6d69736265686176696f723a6772616e6470615f617574686f726974696573446561644163636f756e744578697374696e6756657374696e675363686564756c654b656570416c6976654578697374656e7469616c4465706f736974496e73756666696369656e7442616c616e63654c69717569646974795265737472696374696f6e7356657374696e6742616c616e63657365745f62616c616e63657472616e736665725f6b6565705f616c697665546f74616c49737375616e63654c6f636b73000000000000dc9b110007000000000000004c261200020000000000000000000000e49b1100010000000000000000000000ec9b110008000000000000004c261200020000000000000000000000f49b1100020000000000000000000000049c110008000000000000000c9c1100030000000000000000000000249c11000100000000000000000000002c9c11000a00000000000000389c1100030000000000000000000000509c1100010000000000000000000000589c110007000000000000004c261200020000000000000000000000609c11000100000000000000456e646f77656400659d11002f000000447573744c6f7374f69c110050000000469d11001f0000005472616e73666572c26d120009000000c26d1200090000009027120007000000d09c11002600000042616c616e63655365740000c26d120009000000902712000700000090271200070000009f9c1100310000004465706f73697400689c11003700000020536f6d6520616d6f756e7420776173206465706f73697465642028652e672e20666f72207472616e73616374696f6e2066656573292e20412062616c616e6365207761732073657420627920726f6f74202877686f2c20667265652c207265736572766564292e205472616e7366657220737563636565646564202866726f6d2c20746f2c2076616c7565292e20416e206163636f756e74207761732072656d6f7665642077686f73652062616c616e636520776173206e6f6e2d7a65726f206275742062656c6f77204578697374656e7469616c4465706f7369742c20726573756c74696e6720696e20616e206f75747269676874206c6f73732e20416e206163636f756e74207761732063726561746564207769746820736f6d6520667265652062616c616e63652e5265706f727473656e74697265206e65775f7365742077617320676976656e20746f206275696c645f737570706f72745f6d61703b20656e20656e747279206d757374206265206372656174656420666f722065616368206974656d3b20716564000000089e11004e000000a9020000230000002f686f6d652f616e6472652f576f726b62656e63682f706172697479746563682f7375627374726174652f6672616d652f656c656374696f6e732d70687261676d656e2f7372632f6c69622e727350726576696f7573206d617463682061726d206d61746368657320616e7974696e67206c657373207468616e20325e33303b20716564000000000000000000000000a09e11003d000000736869667465642073756666696369656e74206269747320726967687420746f206c656164206f6e6c79206c656164696e67207a65726f733b2071656400000000000000000000000000000000000000009f11004a00000033000000120000002f686f6d652f616e6472652f576f726b62656e63682f706172697479746563682f7375627374726174652f7072696d6974697665732f72756e74696d652f7372632f63757276652e727350656e64696e674368616e6765537461746552616e646f6d6e657373436f6c6c656374697665466c697052616e646f6d4d6174657269616c707265636f6e646974696f6e3a20616c6c20696d706f7274732073686f756c6420626520636865636b656420616761696e737420746865207369676e617475726573206f6620636f72726573706f6e64696e670a09090909090966756e6374696f6e7320646566696e65642062792060646566696e655f656e762160206d6163726f206279207468652075736572206f6620746865206d6163726f3b0a0909090909097369676e617475726573206f662074686573652066756e6374696f6e7320646566696e6564206279206024706172616d73603b0a09090909090963616c6c7320616c77617973206d616465207769746820617267756d656e7473207479706573206f662077686963682061726520646566696e65642062792074686520636f72726573706f6e64696e6720696d706f7274733b0a09090909090974687573207479706573206f6620617267756d656e74732073686f756c6420626520657175616c20746f2074797065206c69737420696e206024706172616d736020616e640a0909090909096c656e677468206f6620617267756d656e74206c69737420616e642024706172616d732073686f756c6420626520657175616c3b0a0909090909097468757320746869732063616e206e6576657220626520604e6f6e65603b0a0909090909097165643b0a090909090909000088a111005500000046000000110000002f686f6d652f616e6472652f576f726b62656e63682f706172697479746563682f7375627374726174652f6672616d652f636f6e7472616374732f7372632f7761736d2f656e765f6465662f6d6163726f732e72735374616c6c65643c0000000800000004000000e9000000ea0000000000000000000000eb000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004e657874466f72636564000000000000359a1100120000000000000030a3110001000000000000000000000048a3110001000000000000000000000069a31100070000000000000070a311000700000050a3110019000000205265706f727420736f6d65206d69736265686176696f722e5f7265706f72745665633c75383e0000000000b88312000b00000000000000000000009f8d12000d00000000000000000000000000000000000000000000000000000000000000c8b01200e0a511000000000000000000f0a5110004000000000000000100000000000000579f110005000000000000000000000010a611001b00000000000000000000000000000000000000000000000000000000000000c8b012002ca6110000000000000000003ca61100010000000000000001000000000000004a9f11000d000000000000000000000044a611002300000000000000000000000000000000000000000000000000000000000000c8b0120080b81100000000000000000068a6110001000000000000000000000000000000f8a211000a0000000000000000000000f50812000e00000000000000000000000000000000000000000000000000000000000000c8b01200d8a61100000000000000000070a6110001000000000000000000000000000000dda1110007000000000000000000000078a611002000000000000000000000000000000000000000000000000000000000000000c8b0120098a611000000000000000000a8a6110001000000000000000000000000000000ac8d12000c0000000000000000000000b0a611000500000000000000000000000000000000000000000000000000000000000000c8b01200b8a611000000000000000000c8a6110002000000000000000100000000000000c78d12000c0000000101000000000000b0a611000500000000000000179012000c00000000000000000000000000000000000000c8b01200d8a611000000000000000000e8a611000100000000000000000000003c00000000000000010000005900000090a811000b000000c8b01200000000009ba8110058000000f3a811002600000053746f72656453746174653c543a3a426c6f636b4e756d6265723e003c0000000000000001000000ec0000006ca811002400000053746f72656450656e64696e674368616e67653c543a3a426c6f636b4e756d6265723e003ba81100310000000ca811002f00000028543a3a426c6f636b4e756d6265722c20543a3a426c6f636b4e756d626572293c000000000000000100000051000000e8a711002400000053657449640000003c00000000000000010000005200000060a7110057000000b7a71100310000003c000000000000000100000051000000f0a61100700000002041206d617070696e672066726f6d206772616e6470612073657420494420746f2074686520696e646578206f6620746865202a6d6f737420726563656e742a2073657373696f6e20666f7220776869636820697473206d656d62657273207765726520726573706f6e7369626c652e20546865206e756d626572206f66206368616e6765732028626f746820696e207465726d73206f66206b65797320616e6420756e6465726c79696e672065636f6e6f6d696320726573706f6e736962696c69746965732920696e20746865202273657422206f66204772616e6470612076616c696461746f72732066726f6d2067656e657369732e20607472756560206966207765206172652063757272656e746c79207374616c6c65642e206e65787420626c6f636b206e756d6265722077686572652077652063616e20666f7263652061206368616e67652e2050656e64696e67206368616e67653a20287369676e616c65642061742c207363686564756c6564206368616e6765292e205374617465206f66207468652063757272656e7420617574686f72697479207365742e20444550524543415445442054686973207573656420746f2073746f7265207468652063757272656e7420617574686f72697479207365742c20776869636820686173206265656e206d6967726174656420746f207468652077656c6c2d6b6e6f776e204752414e4450415f415554484f5249544945535f4b455920756e686173686564206b65792e00000000000000a76c12000800000000000000cca91100020000000000000000000000fca91100180000000000000000000000ce9a11000b00000000000000bcaa110003000000000000000000000004ab11000d0000000000000000000000b36c12000e000000000000006cab1100030000000000000000000000b4ab1100020000000000000000000000d99a11001300000000000000cca91100020000000000000000000000c4ab11000600000000000000000000001dad11000400000000000000203f120023000000000000007c471200050000000000000021ad110013000000caae110036000000c8b012000000000000af11004200000042af1100480000008aaf110045000000cfaf11002d000000c8b0120000000000fcaf110046000000c8b01200000000002a7f12000b00000042b011004c0000008eb0110033000000c1b011005a000000c8b01200000000001bb1110013000000c8b01200000000002eb111005400000082b111004b000000cdb111003500000002b21100580000005ab2110052000000acb211003e000000c8b0120000000000927f12000c0000000000000097d211000300000000000000203f12002300000000000000b6ae1100080000000000000021ad11001300000000000000beae11000c0000000000000021ad11001300000034ad110025000000c8b012000000000059ad110048000000a1ad110042000000e3ad11004600000029ae110040000000c8b012000000000069ae11002d000000c8b01200000000002a7f12000b00000096ae110020000000b337120031000000927f12000c0000000000000017ad11000600000000000000203f120023000000000000001dad11000400000000000000203f120023000000000000007c471200050000000000000021ad110013000000b8ac1100540000000cad11000b000000f4ab11005400000048ac110010000000c8b012000000000058ac11002f000000c8b012000000000087ac1100310000002053616d6520617320746865205b607472616e73666572605d2063616c6c2c206275742077697468206120636865636b207468617420746865207472616e736665722077696c6c206e6f74206b696c6c20746865206f726967696e206163636f756e742e20393925206f66207468652074696d6520796f752077616e74205b607472616e73666572605d20696e73746561642e205b607472616e73666572605d3a207374727563742e4d6f64756c652e68746d6c236d6574686f642e7472616e736665722045786163746c7920617320607472616e73666572602c2065786365707420746865206f726967696e206d75737420626520726f6f7420616e642074686520736f75726365206163636f756e74206d6179206265207370656369666965642e736f7572636564657374436f6d706163743c543a3a42616c616e63653e20536574207468652062616c616e636573206f66206120676976656e206163636f756e742e20546869732077696c6c20616c74657220604672656542616c616e63656020616e642060526573657276656442616c616e63656020696e2073746f726167652e2069742077696c6c20616c736f2064656372656173652074686520746f74616c2069737375616e6365206f66207468652073797374656d202860546f74616c49737375616e636560292e20496620746865206e65772066726565206f722072657365727665642062616c616e63652069732062656c6f7720746865206578697374656e7469616c206465706f7369742c2069742077696c6c20726573657420746865206163636f756e74206e6f6e63652028606672616d655f73797374656d3a3a4163636f756e744e6f6e636560292e20546865206469737061746368206f726967696e20666f7220746869732063616c6c2069732060726f6f74602e202d20496e646570656e64656e74206f662074686520617267756d656e74732e6e65775f667265656e65775f7265736572766564205472616e7366657220736f6d65206c697175696420667265652062616c616e636520746f20616e6f74686572206163636f756e742e20607472616e73666572602077696c6c207365742074686520604672656542616c616e636560206f66207468652073656e64657220616e642072656365697665722e2049742077696c6c2064656372656173652074686520746f74616c2069737375616e6365206f66207468652073797374656d2062792074686520605472616e73666572466565602e204966207468652073656e6465722773206163636f756e742069732062656c6f7720746865206578697374656e7469616c206465706f736974206173206120726573756c74206f6620746865207472616e736665722c20746865206163636f756e742077696c6c206265207265617065642e20546865206469737061746368206f726967696e20666f7220746869732063616c6c206d75737420626520605369676e65646020627920746865207472616e736163746f722e202d20446570656e64656e74206f6e20617267756d656e747320627574206e6f7420637269746963616c2c20676976656e2070726f70657220696d706c656d656e746174696f6e7320666f72202020696e70757420636f6e6669672074797065732e205365652072656c617465642066756e6374696f6e732062656c6f772e202d20497420636f6e7461696e732061206c696d69746564206e756d626572206f6620726561647320616e642077726974657320696e7465726e616c6c7920616e64206e6f20636f6d706c657820636f6d7075746174696f6e2e2052656c617465642066756e6374696f6e733a2020202d2060656e737572655f63616e5f77697468647261776020697320616c776179732063616c6c656420696e7465726e616c6c792062757420686173206120626f756e64656420636f6d706c65786974792e2020202d205472616e7366657272696e672062616c616e63657320746f206163636f756e7473207468617420646964206e6f74206578697374206265666f72652077696c6c20636175736520202020202060543a3a4f6e4e65774163636f756e743a3a6f6e5f6e65775f6163636f756e746020746f2062652063616c6c65642e2020202d2052656d6f76696e6720656e6f7567682066756e64732066726f6d20616e206163636f756e742077696c6c20747269676765722060543a3a4475737452656d6f76616c3a3a6f6e5f756e62616c616e636564602e2020202d20607472616e736665725f6b6565705f616c6976656020776f726b73207468652073616d652077617920617320607472616e73666572602c206275742068617320616e206164646974696f6e616c2020202020636865636b207468617420746865207472616e736665722077696c6c206e6f74206b696c6c20746865206f726967696e206163636f756e742e000000000000ec9a11000d00000000000000000000004cb411000a00000000000000000000000000000000000000000000000000000000000000c8b0120058b41100000000000000000068b411000100000000000000010000000000000070b41100070000000101000000000000138212000c0000000000000077b411001700000000000000000000000000000000000000c8b0120090b411000000000000000000a0b4110006000000000000000100000000000000f99a1100050000000101000000000000138212000c00000000000000d0b411001c00000000000000000000000000000000000000c8b01200ecb411000000000000000000fcb4110002000000000000000100000000000000ac9012000e0000000000000000000000145a12000800000000000000000000000000000000000000000000000000000000000000c8b012000cb5110000000000000000002c5a1200030000000000000001000000543a3a42616c616e636500003c0000000000000001000000de00000084b61100260000004163636f756e744163636f756e74446174613c543a3a42616c616e63653e00003c0000000000000001000000ed00000093b511001b000000c8b0120000000000aeb511005600000004b6110030000000c8b012000000000034b61100500000005665633c42616c616e63654c6f636b3c543a3a42616c616e63653e3e3c0000000000000001000000590000001cb511002e0000004ab51100490000003c00000000000000010000005100000020416e79206c6971756964697479206c6f636b73206f6e20736f6d65206163636f756e742062616c616e6365732e204e4f54453a2053686f756c64206f6e6c79206265206163636573736564207768656e2073657474696e672c206368616e67696e6720616e642066726565696e672061206c6f636b2e205468652062616c616e6365206f6620616e206163636f756e742e204e4f54453a2054484953204d4159204e4556455220424520494e204558495354454e434520414e4420594554204841564520412060746f74616c28292e69735f7a65726f2829602e2049662074686520746f74616c2069732065766572207a65726f2c207468656e2074686520656e747279202a4d5553542a2062652072656d6f7665642e204e4f54453a2054686973206973206f6e6c79207573656420696e20746865206361736520746861742074686973206d6f64756c65206973207573656420746f2073746f72652062616c616e6365732e2054686520746f74616c20756e6974732069737375656420696e207468652073797374656d2e000000000000869a110012000000000000004cb411000a00000000000000c8b01200e4b611000000000000000000f4b6110001000000000000003c000000000000000100000061000000fcb611003500000020546865206d696e696d756d20616d6f756e7420726571756972656420746f206b65657020616e206163636f756e74206f70656e2e00000000000000949d11000700000001010000000000003cb811000d0000000000000049b811003400000000000000000000000000000000000000c8b0120080b81100000000000000000090b811000100000000000000000000000000000098b81100160000000201010000000000ff8e12000400000000000000038f12000e00000000000000aeb811001200000000000000c8b0120050bd11000000000000000000c0b8110001000000000000000100000000000000f58d1200120000000101000000000000ff8e1200040000000000000070a311000700000000000000000000000000000000000000c8b01200c8b811000000000000000000d8b811000600000000000000010000005265706f727449644f663c543e4f6666656e636544657461696c733c543a3a4163636f756e7449642c20543a3a4964656e74696669636174696f6e5475706c653e0000003c00000000000000010000005100000071ba110052000000436f6e63757272656e745265706f727473496e6465785665633c5265706f727449644f663c543e3e27ba11004a0000003c00000000000000010000005900000008b9110044000000c8b01200000000004cb911002f000000c8b01200000000007bb9110052000000cdb911005a00000020456e756d65726174657320616c6c207265706f727473206f662061206b696e6420616c6f6e672077697468207468652074696d6520746865792068617070656e65642e20416c6c207265706f7274732061726520736f72746564206279207468652074696d65206f66206f6666656e63652e204e6f74652074686174207468652061637475616c2074797065206f662074686973206d617070696e6720697320605665633c75383e602c207468697320697320626563617573652076616c756573206f6620646966666572656e7420747970657320617265206e6f7420737570706f7274656420617420746865206d6f6d656e7420736f2077652061726520646f696e6720746865206d616e75616c2073657269616c697a6174696f6e2e204120766563746f72206f66207265706f727473206f66207468652073616d65206b696e6420746861742068617070656e6564206174207468652073616d652074696d6520736c6f742e20546865207072696d61727920737472756374757265207468617420686f6c647320616c6c206f6666656e6365207265636f726473206b65796564206279207265706f7274206964656e746966696572732e72616e206f7574206f662067617320647572696e6720636f6e747261637420657865637574696f6e72657475726e2074797065206572726f7276616c69646174696f6e206572726f72636f6e7472616374207472617070656420647572696e6720657865637574696f6e000000696d2d6f6e6c696e653a6f66666c696e000000006f91120011000000000000000000000098bb11000a00000000000000000000000000000000000000000000000000000000000000c8b01200a4bb11000000000000000000c8b012000000000000000000010000004d756c7469706c69657200003c0000000000000001000000520000000000000024bc11001200000000000000845712000c00000000000000c8b0120038bc1100000000000000000048bc110001000000000000000000000050bc11001200000000000000845712000c00000000000000c8b0120064bc1100000000000000000074bc110001000000000000005472616e73616374696f6e4261736546656500003c000000000000000100000065000000bfbc1100370000005472616e73616374696f6e4279746546656500003c0000000000000001000000640000007cbc110043000000205468652066656520746f206265207061696420666f72206d616b696e672061207472616e73616374696f6e3b20746865207065722d6279746520706f7274696f6e2e205468652066656520746f206265207061696420666f72206d616b696e672061207472616e73616374696f6e3b2074686520626173652e000000000000749f11000e0000000000000000000000dc1512000c00000000000000000000000000000000000000000000000000000000000000c8b0120050bd1100000000000000000060bd11000300000000000000010000003c00000000000000010000005900000078bd110058000000d0bd11005800000028be11001100000020536572696573206f6620626c6f636b20686561646572732066726f6d20746865206c61737420383120626c6f636b73207468617420616374732061732072616e646f6d2073656564206d6174657269616c2e205468697320697320617272616e67656420617320612072696e672062756666657220776974682060626c6f636b5f6e756d626572202520383160206265696e672074686520696e64657820696e746f20746865206056656360206f6620746865206f6c6465737420686173682e000000000000002a9a11000b00000000000000acbe11000200000000000000000000001e9a11000c00000000000000bcbe1100020000000000000000000000119a11000d00000000000000ccbe11000100000000000000000000000a9a11000700000000000000d4be11000100000000000000b5bf110042000000f7bf11002a00000047bf1100450000008cbf1100290000000cbf11003b000000dcbe1100300000002043616e6e6f74207369676e616c20666f72636564206368616e676520736f20736f6f6e206166746572206c6173742e20417474656d707420746f207369676e616c204752414e445041206368616e67652077697468206f6e6520616c72656164792070656e64696e672e20417474656d707420746f207369676e616c204752414e44504120726573756d65207768656e2074686520617574686f72697479207365742069736e2774207061757365642028656974686572206c697665206f7220616c72656164792070656e64696e6720726573756d65292e20417474656d707420746f207369676e616c204752414e445041207061757365207768656e2074686520617574686f72697479207365742069736e2774206c697665202865697468657220706175736564206f7220616c72656164792070656e64696e67207061757365292e00000000000000c09a11000e0000000000000004c11100010000000000000000000000ab9a110015000000000000000cc1110001000000000000000000000011e61100080000000000000014c11100010000000000000000000000989a110013000000000000001cc11100010000000000000000000000869a1100120000000000000024c111000100000000000000000000007d9a110009000000000000002cc11100010000000000000000000000669a1100170000000000000034c111000100000000000000000000005b9a11000b000000000000003cc11100010000000000000066c211002700000034c211003200000017c211001d000000f9c111001e000000bec111003b0000009ac111002400000067c111003300000044c11100230000002042656e6566696369617279206163636f756e74206d757374207072652d657869737420412076657374696e67207363686564756c6520616c72656164792065786973747320666f722074686973206163636f756e74205472616e736665722f7061796d656e7420776f756c64206b696c6c206163636f756e742056616c756520746f6f206c6f7720746f20637265617465206163636f756e742064756520746f206578697374656e7469616c206465706f7369742042616c616e636520746f6f206c6f7720746f2073656e642076616c756520476f7420616e206f766572666c6f7720616674657220616464696e67204163636f756e74206c6971756964697479207265737472696374696f6e732070726576656e74207769746864726177616c2056657374696e672062616c616e636520746f6f206869676820746f2073656e642076616c75654469676573744974656d206e6f7420657175616c486561644f66566f7465734f66566f7465734f66000000c0c211001a0000004552524f523a20436f7272757074656420737461746520617420417574686f726f766572666c6f77206d756c7469706c79696e6720676173206c696d6974206279207072696365003c0000000000000001000000ee000000ef000000f0000000f1000000f2000000f3000000636f6e74726163742073756273797374656d20726573756c74696e6720696e20706f73697469766520696d62616c616e6365214f6c64556e636c65556e636c65416c7265616479496e636c75646564546f6f48696768556e636c6547656e65736973556e636c65546f6f4d616e79556e636c6573556e636c6573416c7265616479536574496e76616c6964556e636c65506172656e747365745f756e636c6573496e76616c69644f726967696e496e73756666696369656e7443616e64696461746546756e647352756e6e65725375626d69744d656d6265725375626d69744475706c69636174656443616e6469646174655265706f727453656c664d7573744265566f746572556e61626c65546f506179426f6e644c6f7742616c616e63654d6178696d756d566f7465734578636565646564546f6f4d616e79566f7465734e6f566f746573556e61626c65546f566f746572656d6f76655f766f7465727265706f72745f646566756e63745f766f7465727375626d69745f63616e64696461637972656e6f756e63655f63616e64696461637972656d6f76655f6d656d6265725374616b654f6600000000000000b4c511000700000000000000bcc51100010000000000000000000000c4c51100020000000000000000000000d4c511000900000000000000c8b01200000000000000000000000000e0c51100010000000000000000000000e8c511000c000000000000005ce81100010000000000000000000000f4c5110002000000000000000000000004c611000f000000000000005ce8110001000000000000000000000014c611000100000000000000000000001cc611000d000000000000002cc6110003000000000000000000000044c6110002000000000000004e65775465726d0031c81100190000008bc7110055000000e0c7110051000000456d7074795465726d00000055c71100360000004d656d6265724b69636b6564f7c611005100000048c711000d0000004d656d62657252656e6f756e63656400cfc6110028000000566f7465725265706f72746564000000c26d120009000000c26d12000900000000ee11000400000054c6110058000000acc6110023000000204120766f7465722028666972737420656c656d656e742920776173207265706f72746564202862797420746865207365636f6e6420656c656d656e742920776974682074686520746865207265706f7274206265696e67207375636365737366756c206f72206e6f742028746869726420656c656d656e74292e2041206d656d626572206861732072656e6f756e6365642074686569722063616e6469646163792e2041206d656d62657220686173206265656e2072656d6f7665642e20546869732073686f756c6420616c7761797320626520666f6c6c6f7765642062792065697468657220604e65775465726d60206f742060456d7074795465726d602e204e6f20286f72206e6f7420656e6f756768292063616e64696461746573206578697374656420666f72207468697320726f756e642e2041206e6577207465726d2077697468206e6577206d656d626572732e205468697320696e64696361746573207468617420656e6f7567682063616e6469646174657320657869737465642c206e6f74207468617420656e6f756768206861766520686173206265656e20656c65637465642e2054686520696e6e65722076616c7565206d757374206265206578616d696e656420666f72207468697320707572706f73652e5665633c284163636f756e7449642c2042616c616e6365293e00003c0000000000000001000000f40000003c0000000000000001000000f500000076616c75652073697a652065786365656473206d6178696d756d556e636c657343616e6469646174657352756e6e657273557072656163686564206d6178696d756d2064657074682c2063616e6e6f74206d616b6520612063616c6c6e6f7420656e6f7567682067617320746f2070617920626173652063616c6c2066656500f60000001800000004000000f7000000f8000000f9000000fa000000fb000000fc00000061206e657374656420657865637574696f6e20636f6e74657874206d7573742068617665206120706172656e743b207165640000a4c91100460000009801000026000000636f6e74726163742063616e6e6f742062652064657374726f79656420647572696e672072656375727369766520657865637574696f6e636f6e747261637420686173206265656e20657669637465642f686f6d652f616e6472652f576f726b62656e63682f706172697479746563682f7375627374726174652f6672616d652f636f6e7472616374732f7372632f657865632e72736e6f7420656e6f7567682067617320746f20706179207472616e736665722066656562616c616e636520746f6f206c6f7720746f2073656e642076616c756576616c756520746f6f206c6f7720746f20637265617465206163636f756e7464657374696e6174696f6e2062616c616e636520746f6f206869676820746f20726563656976652076616c756572656163686564206d6178696d756d2064657074682c2063616e6e6f7420696e7374616e7469617465416c69766520636f6e7472616374206f7220746f6d6273746f6e6520616c726561647920657869737473696e73756666696369656e742072656d61696e696e672062616c616e63656e6f7420656e6f7567682067617320746f20706179206261736520696e7374616e74696174652066656500000000c2c311000a000000000000003ccb110001000000000000000000000054cb110001000000000000000000000075cb11000a000000000000007fcb11000e0000005ccb1100190000002050726f76696465206120736574206f6620756e636c65732e6e65775f756e636c65735665633c543a3a4865616465723e0000000000000086c8110006000000000000000000000098cc11003a00000000000000000000000000000000000000000000000000000000000000c8b01200d4cc11000000000000000000e4cc110001000000000000000100000000000000dac21100060000000000000000000000138212000c00000000000000000000000000000000000000000000000000000000000000c8b01200eccc11000000000000000000fccc1100010000000000000000000000000000009e8312000c000000000000000000000000ee11000400000000000000000000000000000000000000000000000000000000000000c8b0120004cd1100000000000000000014cd11000100000000000000010000005665633c556e636c65456e7472794974656d3c543a3a426c6f636b4e756d6265722c20543a3a486173682c20543a3a4163636f756e7449643e3e00003c00000000000000010000005900000064cd1100070000003c0000000000000001000000510000004bcd1100190000003c0000000000000001000000510000001ccd11002f000000205768657468657220756e636c6573207765726520616c72656164792073657420696e207468697320626c6f636b2e20417574686f72206f662063757272656e7420626c6f636b2e20556e636c65730000000000f3ea1100040000000000000074ce1100020000000000000000000000a4ce11000f00000000000000000000007fc411000c00000000000000c8b012000000000000000000000000001ccf11000700000000000000000000008bc41100140000000000000054cf11000100000000000000000000006ccf11000d00000000000000000000009fc411001000000000000000c8b01200000000000000000000000000d4cf11000d0000000000000000000000afc411001200000000000000c8b012000000000000000000000000003cd01100090000000000000000000000c1c411000d0000000000000084d011000100000000000000000000009cd011000d0000000000000000000000f3d911000500000000000000e03c120011000000000000007c4712000500000000000000814712001500000059d8110041000000c8b01200000000009ad8110014000000aed8110012000000c0d811002b000000c8b0120000000000ebd811005700000042d911005700000099d9110028000000c8b01200000000002a7f12000b0000005fd211000b0000004dd811000c000000c1d9110032000000927f12000c00000005d8110048000000c8b01200000000002a7f12000b0000005fd211000b0000004dd811000c00000046d611000d000000927f12000c00000000000000ffd711000600000000000000203f12002300000053d6110057000000aad611005700000001d7110017000000c8b012000000000018d71100220000003ad71100530000008dd711002d000000c8b01200000000002a7f12000b0000005fd211000b000000bad711004500000046d611000d000000927f12000c00000004d511001e000000c8b012000000000022d51100190000003bd511003b00000076d511004b000000c1d511005500000016d611000d000000c8b01200000000002a7f12000b0000005fd211000b00000023d611002300000046d611000d000000927f12000c0000009ad2110054000000eed2110010000000fed21100500000004ed311003d0000008bd3110056000000e1d311002100000002d411005300000055d4110056000000abd41100590000000000000097d211000300000000000000203f12002300000004d11100570000005bd1110020000000c8b01200000000007bd1110056000000d1d111003d000000c8b01200000000000ed2110051000000c8b01200000000002a7f12000b0000005fd211000b0000006ad211001600000080d2110017000000927f12000c0000002052656d6f7665206120706172746963756c6172206d656d6265722066726f6d20746865207365742e20546869732069732065666665637469766520696d6d6564696174656c7920616e642074686520626f6e64206f6620746865206f7574676f696e67206d656d62657220697320736c61736865642e20496620612072756e6e65722d757020697320617661696c61626c652c207468656e2074686520626573742072756e6e65722d75702077696c6c2062652072656d6f76656420616e64207265706c6163657320746865206f7574676f696e67206d656d6265722e204f74686572776973652c2061206e65772070687261676d656e20726f756e6420697320737461727465642e204e6f74652074686174207468697320646f6573206e6f7420616666656374207468652064657369676e6174656420626c6f636b206e756d626572206f6620746865206e65787420656c656374696f6e2e20232323232053746174652052656164733a204f28646f5f70687261676d656e29205772697465733a204f28646f5f70687261676d656e2977686f2052656e6f756e6365206f6e65277320696e74656e74696f6e20746f20626520612063616e64696461746520666f7220746865206e65787420656c656374696f6e20726f756e642e203320706f74656e7469616c206f7574636f6d65732065786973743a202d20606f726967696e6020697320612063616e64696461746520616e64206e6f7420656c656374656420696e20616e79207365742e20496e207468697320636173652c2074686520626f6e64206973202020756e72657365727665642c2072657475726e656420616e64206f726967696e2069732072656d6f76656420617320612063616e6469646174652e202d20606f726967696e6020697320612063757272656e742072756e6e65722075702e20496e207468697320636173652c2074686520626f6e6420697320756e72657365727665642c2072657475726e656420616e642020206f726967696e2069732072656d6f76656420617320612072756e6e65722e202d20606f726967696e6020697320612063757272656e74206d656d6265722e20496e207468697320636173652c2074686520626f6e6420697320756e726573657276656420616e64206f726967696e20697320202072656d6f7665642061732061206d656d6265722c20636f6e73657175656e746c79206e6f74206265696e6720612063616e64696461746520666f7220746865206e65787420726f756e6420616e796d6f72652e20202053696d696c617220746f205b6072656d6f76655f766f746572605d2c206966207265706c6163656d656e742072756e6e657273206578697374732c20746865792061726520696d6d6564696174656c7920757365642e205375626d6974206f6e6573656c6620666f722063616e6469646163792e20412063616e6469646174652077696c6c206569746865723a2020202d204c6f73652061742074686520656e64206f6620746865207465726d20616e6420666f7266656974207468656972206465706f7369742e2020202d2057696e20616e64206265636f6d652061206d656d6265722e204d656d626572732077696c6c206576656e7475616c6c7920676574207468656972207374617368206261636b2e2020202d204265636f6d6520612072756e6e65722d75702e2052756e6e6572732d75707320617265207265736572766564206d656d6265727320696e2063617365206f6e65206765747320666f72636566756c6c79202020202072656d6f7665642e2052656164733a204f284c6f674e2920476976656e204e2063616e646964617465732e205772697465733a204f283129205265706f727420607461726765746020666f72206265696e6720616e20646566756e637420766f7465722e20496e2063617365206f6620612076616c6964207265706f72742c20746865207265706f727465722069732072657761726465642062792074686520626f6e6420616d6f756e74206f662060746172676574602e204f74686572776973652c20746865207265706f7274657220697473656c662069732072656d6f76656420616e6420746865697220626f6e6420697320736c61736865642e204120646566756e637420766f74657220697320646566696e656420746f2062653a2020202d206120766f7465722077686f73652063757272656e74207375626d697474656420766f7465732061726520616c6c20696e76616c69642e20692e652e20616c6c206f66207468656d20617265206e6f20202020206c6f6e67657220612063616e646964617465206e6f7220616e20616374697665206d656d6265722e2052656164733a204f284e4c6f674d2920676976656e204d2063757272656e742063616e6469646174657320616e64204e20766f74657320666f722060746172676574602e7461726765742052656d6f766520606f726967696e60206173206120766f7465722e20546869732072656d6f76657320746865206c6f636b20616e642072657475726e732074686520626f6e642e2052656164733a204f28312920566f746520666f72206120736574206f662063616e6469646174657320666f7220746865207570636f6d696e6720726f756e64206f6620656c656374696f6e2e205468652060766f746573602073686f756c643a2020202d206e6f7420626520656d7074792e2020202d206265206c657373207468616e20746865206e756d626572206f662063616e646964617465732e2055706f6e20766f74696e672c206076616c75656020756e697473206f66206077686f6027732062616c616e6365206973206c6f636b656420616e64206120626f6e6420616d6f756e742069732072657365727665642e2049742069732074686520726573706f6e736962696c697479206f66207468652063616c6c657220746f206e6f7420706c61636520616c6c206f662074686569722062616c616e636520696e746f20746865206c6f636b20616e64206b65657020736f6d6520666f722066757274686572207472616e73616374696f6e732e205772697465733a204f28562920676976656e2060566020766f7465732e205620697320626f756e6465642062792031362e766f746573000000006bef110007000000000000000000000008dc11002100000000000000000000000000000000000000000000000000000000000000c8b0120034dc110000000000000000002cdc11000100000000000000010000000000000096c8110009000000000000000000000008dc11002100000000000000000000000000000000000000000000000000000000000000c8b0120034dc1100000000000000000044dc1100010000000000000001000000000000004d8c12000e0000000000000000000000847212000300000000000000000000000000000000000000000000000000000000000000c8b012004cdc110000000000000000005cdc110001000000000000000100000000000000aec21100070000000101010000000000138212000c00000000000000e03c12001100000000000000000000000000000000000000c8b0120084dc1100000000000000000064dc110001000000000000000100000000000000cec41100070000000101000000000000138212000c00000000000000845712000c00000000000000000000000000000000000000c8b012006cdc110000000000000000007cdc1100010000000000000001000000000000008cc811000a0000000000000000000000e03c12001100000000000000000000000000000000000000000000000000000000000000c8b0120084dc1100000000000000000094dc11000200000000000000010000005665633c28543a3a4163636f756e7449642c2042616c616e63654f663c543e293e00000044de11003c0000003c000000000000000100000059000000f2dd1100520000003c00000000000000010000006b000000a2dd11005000000062dd1100400000003c0000000000000001000000de00000049dd1100190000003c000000000000000100000059000000a4dc110059000000fddc11004c000000205468652070726573656e742063616e646964617465206c6973742e20536f72746564206261736564206f6e206163636f756e742d69642e20412063757272656e74206d656d626572206f7220612072756e6e65722063616e206e6576657220656e746572207468697320766563746f7220616e6420697320616c7761797320696d706c696369746c7920617373756d656420746f20626520612063616e6469646174652e204c6f636b6564207374616b65206f66206120766f7465722e20566f746573206f66206120706172746963756c617220766f7465722c20776974682074686520726f756e6420696e646578206f662074686520766f7465732e2054686520746f74616c206e756d626572206f6620766f746520726f756e6473207468617420686176652068617070656e65642c206578636c7564696e6720746865207570636f6d696e67206f6e652e205468652063757272656e742072756e6e6572735f75702e20536f72746564206261736564206f6e206c6f7720746f2068696768206d657269742028776f72736520746f20626573742072756e6e6572292e205468652063757272656e7420656c6563746564206d656d626572736869702e20536f72746564206261736564206f6e206163636f756e742069642e0000000098df11000d00000000000000845712000c00000000000000c8b01200a8df11000000000000000000c8b01200000000000000000000000000b8df11000a00000000000000845712000c00000000000000c8b01200c4df11000000000000000000c8b01200000000000000000000000000d4df11000e00000000000000847212000300000000000000c8b01200e4df11000000000000000000c8b01200000000000000000000000000f4df11001000000000000000847212000300000000000000c8b0120004e011000000000000000000c8b0120000000000000000000000000014e011000c00000000000000f50812000e00000000000000c8b0120020e011000000000000000000c8b01200000000000000000043616e646964616379426f6e640000003c0000000000000001000000df000000566f74696e67426f6e6400003c000000000000000100000061000000446573697265644d656d6265727300003c0000000000000001000000fd0000004465736972656452756e6e65727355703c0000000000000001000000fe0000005465726d4475726174696f6e3c0000000000000001000000e400000000000000b0c311001200000000000000f4e01100010000000000000000000000a0c311001000000000000000fce0110001000000000000000000000093c311000d0000000000000004e1110001000000000000000000000087c311000c000000000000000ce111000100000000000000000000007bc311000c0000000000000014e1110001000000000000000000000067c3110014000000000000001ce111000100000000000000000000005fc31100080000000000000024e111000100000000000000e1e1110023000000c0e1110021000000afe111001100000099e111001600000079e11100200000005ae111001f0000002ce111002e0000002054686520756e636c652069736e277420726563656e7420656e6f75676820746f20626520696e636c756465642e2054686520756e636c6520697320616c726561647920696e636c756465642e2054686520756e636c6520697320746f6f206869676820696e20636861696e2e2054686520756e636c652069732067656e657369732e20546f6f206d616e7920756e636c65732e20556e636c657320616c72656164792073657420696e2074686520626c6f636b2e2054686520756e636c6520706172656e74206e6f7420696e2074686520636861696e2e0000000073c411000c000000000000008ce311000100000000000000000000006cc41100070000000000000094e3110001000000000000000000000060c411000c000000000000009ce311000100000000000000000000004cc411001400000000000000a4e3110001000000000000000000000042c411000a00000000000000ace3110001000000000000000000000033c411000f00000000000000b4e3110001000000000000000000000028c411000b00000000000000bce311000100000000000000000000001ec411000a00000000000000c4e311000100000000000000000000000bc411001300000000000000cce31100010000000000000000000000ffc311000c00000000000000d4e31100010000000000000000000000f3c311000c00000000000000dce31100010000000000000000000000d9c311001a00000000000000e4e31100010000000000000000000000ccc311000d00000000000000ece31100010000000000000000000000d1ea11000900000000000000f4e311000100000000000000aee511003100000088e511002600000066e51100220000003fe51100270000000de5110032000000eee411001f000000dde4110011000000c9e4110014000000a8e411002100000085e411002300000062e41100230000003ce41100260000000ae4110032000000fce311000e000000204e6f742061206d656d6265722e204f726967696e206973206e6f7420612063616e6469646174652c206d656d626572206f7220612072756e6e65722075702e2043616e64696461746520646f6573206e6f74206861766520656e6f7567682066756e64732e2052756e6e65722063616e6e6f742072652d7375626d69742063616e6469646163792e204d656d6265722063616e6e6f742072652d7375626d69742063616e6469646163792e204475706c6963617465642063616e646964617465207375626d697373696f6e2e2043616e6e6f74207265706f72742073656c662e204d757374206265206120766f7465722e20566f7465722063616e206e6f742070617920766f74696e6720626f6e642e2043616e6e6f7420766f74652077697468207374616b65206c657373207468616e206d696e696d756d2062616c616e63652e2043616e6e6f7420766f7465206d6f7265207468616e206d6178696d756d20616c6c6f7765642e2043616e6e6f7420766f7465206d6f7265207468616e2063616e646964617465732e204d75737420766f746520666f72206174206c65617374206f6e652063616e6469646174652e2043616e6e6f7420766f7465207768656e206e6f2063616e64696461746573206f72206d656d626572732065786973742e496e7374616e636532436f6c6c656374697665496e7374616e636531436f6c6c656374697665416c726561647950726f78794f766572666c6f775374696c6c4163746976655468726573686f6c64416c7265616479566f756368656444656c6179506572696f644e6f74467269656e644e6f7453746172746564416c726561647953746172746564416c72656164795265636f76657261626c654e6f745265636f76657261626c654e6f74536f727465644d6178467269656e64734e6f74456e6f756768467269656e64735a65726f5468726573686f6c644e6f74416c6c6f77656461735f7265636f76657265647365745f7265636f76657265646372656174655f7265636f76657279696e6974696174655f7265636f76657279766f7563685f7265636f76657279636c61696d5f7265636f76657279636c6f73655f7265636f7665727972656d6f76655f7265636f7665727963616e63656c5f7265636f766572656400000000004ce811000f000000000000005ce8110001000000000000000000000064e811000100000000000000000000006ce81100110000000000000080e8110002000000000000000000000090e8110001000000000000000000000098e811000f00000000000000a8e81100030000000000000000000000c0e81100010000000000000000000000c8e811000e0000000000000080e81100020000000000000000000000d8e81100010000000000000000000000e0e81100100000000000000080e81100020000000000000000000000f0e81100010000000000000000000000f8e811000f000000000000005ce8110001000000000000000000000008e9110001000000000000005265636f766572794372656174656400c26d12000900000049ea1100320000005265636f76657279496e69746961746564000000c26d120009000000c26d12000900000008ea1100410000005265636f76657279566f756368656400c26d120009000000c26d120009000000c26d120009000000b8e91100500000005265636f76657279436c6f73656400007ae911003e0000004163636f756e745265636f766572656443e91100370000005265636f7665727952656d6f7665640010e91100330000002041207265636f766572792070726f6365737320686173206265656e2072656d6f76656420666f7220616e206163636f756e74204163636f756e745f3120686173206265656e207375636365737366756c6c79207265636f7665726564206279206163636f756e745f322041207265636f766572792070726f6365737320666f72206163636f756e745f31206279206163636f756e745f3220686173206265656e20636c6f7365642041207265636f766572792070726f6365737320666f72206163636f756e745f31206279206163636f756e745f3220686173206265656e20766f756368656420666f72206279206163636f756e745f332041207265636f766572792070726f6365737320686173206265656e20696e6974696174656420666f72206163636f756e745f31206279206163636f756e745f322041207265636f766572792070726f6365737320686173206265656e2073657420757020666f7220616e206163636f756e745072696d65546f6f4561726c79416c7265616479496e697469616c697a65644475706c6963617465566f746557726f6e67496e64657850726f706f73616c4d697373696e674475706c696361746550726f706f73616c4e6f744d656d6265727365745f6d656d626572736578656375746570726f706f7365766f7465636c6f73650000000030ec1100080000000000000038ec110004000000000000000000000058ec110002000000000000000000000068ec1100050000000000000070ec110005000000000000000000000098ec1100020000000000000000000000a8ec11000800000000000000b0ec1100010000000000000000000000b8ec1100010000000000000000000000c0ec11000b00000000000000b0ec1100010000000000000000000000ccec1100010000000000000000000000d4ec11000800000000000000dcec1100020000000000000000000000ecec1100010000000000000000000000f4ec11000e00000000000000dcec110002000000000000000000000004ed11000100000000000000000000000ced1100060000000000000014ed11000300000000000000000000002ced1100010000000000000050726f706f736564c26d12000900000055ef11000d00000065ed11000400000069ed11000b000000f2ee11005300000045ef110010000000566f746564000000c26d12000900000065ed11000400000000ee11000400000069ed11000b00000069ed11000b0000006aee110042000000acee110046000000417070726f76656465ed11000400000039ee110031000000446973617070726f7665640004ee110035000000457865637574656465ed11000400000000ee110004000000bfed1100410000004d656d6265724578656375746564000074ed11004b000000436c6f736564000065ed11000400000069ed11000b00000069ed11000b00000034ed11003100000020412070726f706f73616c2077617320636c6f73656420616674657220697473206475726174696f6e207761732075702e486173684d656d626572436f756e7420412073696e676c65206d656d6265722064696420736f6d6520616374696f6e3b2060626f6f6c6020697320747275652069662072657475726e656420776974686f7574206572726f722e2041206d6f74696f6e207761732065786563757465643b2060626f6f6c6020697320747275652069662072657475726e656420776974686f7574206572726f722e626f6f6c2041206d6f74696f6e20776173206e6f7420617070726f76656420627920746865207265717569726564207468726573686f6c642e2041206d6f74696f6e2077617320617070726f76656420627920746865207265717569726564207468726573686f6c642e2041206d6f74696f6e2028676976656e20686173682920686173206265656e20766f746564206f6e20627920676976656e206163636f756e742c206c656176696e6720612074616c6c79202879657320766f74657320616e64206e6f20766f74657320676976656e20726573706563746976656c7920617320604d656d626572436f756e7460292e2041206d6f74696f6e2028676976656e20686173682920686173206265656e2070726f706f7365642028627920676976656e206163636f756e742920776974682061207468726573686f6c642028676976656e20604d656d626572436f756e7460292e50726f706f73616c496e64657850726f706f73616c734d656d62657273566f74696e67486973746f726963616c53657373696f6e73000000000000c1e611000c0000000000000018f1110002000000000000000000000048f111000d0000000000000000000000cde611000d00000000000000b0f11100020000000000000000000000e0f111000d0000000000000000000000dae611000f0000000000000048f2110003000000000000000000000090f211001b0000000000000000000000e9e61100110000000000000068f3110001000000000000000000000080f31100160000000000000000000000fae611000e00000000000000b0f1110002000000000000000000000030f4110019000000000000000000000008e711000e0000000000000068f31100010000000000000000000000f8f4110014000000000000000000000016e711000e0000000000000098f51100010000000000000000000000b0f5110014000000000000000000000024e711000f00000000000000c8b0120000000000000000000000000050f6110015000000000000000000000033e71100100000000000000068f31100010000000000000000000000f8f611000b0000000000000000000000250512000700000000000000138212000c00000000000000fb8512000400000000000000500b120017000000370a120029000000c8b012000000000088f7110045000000cdf711003a000000c8b012000000000007f811000c000000600a120049000000a90a120040000000c8b01200000000002a7f12000b000000e90a1200250000000e0b120042000000927f12000c00000000000000330a12000400000000000000138212000c00000000000000b3fd11000700000000000000138212000c00000003091200470000004a0912001d000000c8b01200000000006709120032000000c8b012000000000007f811000c000000990912002e000000c709120047000000c8b01200000000002a7f12000b0000000e0a120019000000270a12000c000000927f12000c00000000000000d60812000700000000000000e03c12001100000000000000dd0812000900000000000000e60812000300000000000000e90812000c00000000000000f50812000e0000002c05120057000000c8b0120000000000830512004c000000cf05120052000000210612002f000000c8b01200000000007881120034000000c8b012000000000007f811000c00000050061200490000009906120035000000ce0612004c0000001a071200470000006107120025000000860712004f000000d50712003a000000c8b01200000000002a7f12000b0000000f0812001a000000290812004b000000740812003b000000e304120027000000af08120027000000857f12000d000000c8b012000000000078fb11001b000000927f12000c00000000000000250512000700000000000000138212000c000000d30212003b000000c8b01200000000000e0312004700000055031200490000009e0312002e000000c8b01200000000007881120034000000c8b012000000000007f811000c000000cc031200450000001104120040000000c8b01200000000002a7f12000b000000510412003e0000008f04120054000000e30412002700000002001200390000000a0512001b000000857f12000d000000c8b012000000000078fb11001b000000927f12000c0000007d0012004a000000c70012001a000000c8b0120000000000e10012004a0000002b0112001d000000c8b012000000000007f811000c00000048011200350000007d01120044000000c101120015000000c8b0120000000000d6011200490000001f02120009000000c8b01200000000002a7f12000b00000034ff11003f00000073ff110047000000baff110048000000280212003b00000063021200470000003b00120027000000857f12000d000000c8b0120000000000aa02120029000000927f12000c000000bafd11003d000000c8b0120000000000f7fd11004b00000042fe11004700000089fe11004c000000c8b012000000000007f811000c000000d5fe11004b00000020ff110014000000c8b01200000000002a7f12000b00000034ff11003f00000073ff110047000000baff11004800000002001200390000003b00120027000000857f12000d000000c8b0120000000000620012001b000000927f12000c00000000000000b3fd11000700000000000000138212000c00000093fb110045000000d8fb11001a000000c8b0120000000000f2fb1100480000003afc11003e000000c8b012000000000027fa11004100000078fc11003c000000c8b012000000000007f811000c000000b4fc110044000000c8b01200000000002a7f12000b000000f8fc11002100000019fd11004f00000068fd110030000000857f12000d000000c8b012000000000098fd11001b000000927f12000c0000009df8110057000000c8b0120000000000f4f811004500000039f9110042000000c8b01200000000007bf9110049000000c4f9110026000000eaf911003d000000c8b012000000000027fa11004100000068fa110039000000c8b01200000000002a7f12000b000000a1fa110018000000b9fa11004a00000003fb11004e00000051fb110027000000857f12000d000000c8b012000000000078fb11001b000000927f12000c00000050f7110038000000c8b012000000000088f7110045000000cdf711003a000000c8b012000000000007f811000c00000013f8110046000000c8b01200000000002a7f12000b00000059f8110044000000927f12000c0000002043616e63656c20746865206162696c69747920746f20757365206061735f7265636f76657265646020666f7220606163636f756e74602e20546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f20616e64207265676973746572656420746f2062652061626c6520746f206d616b652063616c6c73206f6e20626568616c66206f6620746865207265636f7665726564206163636f756e742e20506172616d65746572733a202d20606163636f756e74603a20546865207265636f7665726564206163636f756e7420796f75206172652061626c6520746f2063616c6c206f6e2d626568616c662d6f662e202d204f6e652073746f72616765206d75746174696f6e20746f20636865636b206163636f756e74206973207265636f7665726564206279206077686f602e204f2831292052656d6f766520746865207265636f766572792070726f6365737320666f7220796f7572206163636f756e742e205265636f7665726564206163636f756e747320617265207374696c6c2061636365737369626c652e204e4f54453a205468652075736572206d757374206d616b65207375726520746f2063616c6c2060636c6f73655f7265636f7665727960206f6e20616c6c20616374697665207265636f7665727920617474656d707473206265666f72652063616c6c696e6720746869732066756e6374696f6e20656c73652069742077696c6c206661696c2e205061796d656e743a2042792063616c6c696e6720746869732066756e6374696f6e20746865207265636f76657261626c65206163636f756e742077696c6c20756e72657365727665207468656972207265636f7665727920636f6e66696775726174696f6e206465706f7369742e202860436f6e6669674465706f7369744261736560202b2060467269656e644465706f736974466163746f7260202a20235f6f665f667269656e64732920546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f20616e64206d7573742062652061207265636f76657261626c65206163636f756e742028692e652e206861732061207265636f7665727920636f6e66696775726174696f6e292e204b65793a204620286c656e206f6620667269656e647329202d204f6e652073746f72616765207265616420746f206765742074686520707265666978206974657261746f7220666f7220616374697665207265636f7665726965732e204f283129202d204f6e652073746f7261676520726561642f72656d6f766520746f2067657420746865207265636f7665727920636f6e66696775726174696f6e2e204f2831292c20436f646563204f284629202d204f6e652062616c616e63652063616c6c20746f20756e72657365727665642e204f28582920546f74616c20436f6d706c65786974793a204f2846202b2058292041732074686520636f6e74726f6c6c6572206f662061207265636f76657261626c65206163636f756e742c20636c6f736520616e20616374697665207265636f766572792070726f6365737320666f7220796f7572206163636f756e742e205061796d656e743a2042792063616c6c696e6720746869732066756e6374696f6e2c20746865207265636f76657261626c65206163636f756e742077696c6c207265636569766520746865207265636f76657279206465706f73697420605265636f766572794465706f7369746020706c616365642062792074686520726573637565722e207265636f76657261626c65206163636f756e74207769746820616e20616374697665207265636f766572792070726f6365737320666f722069742e202d206072657363756572603a20546865206163636f756e7420747279696e6720746f207265736375652074686973207265636f76657261626c65206163636f756e742e204b65793a205620286c656e206f6620766f756368696e6720667269656e647329202d204f6e652073746f7261676520726561642f72656d6f766520746f206765742074686520616374697665207265636f766572792070726f636573732e204f2831292c20436f646563204f285629202d204f6e652062616c616e63652063616c6c20746f20726570617472696174652072657365727665642e204f28582920546f74616c20436f6d706c65786974793a204f2856202b2058297265736375657220416c6c6f772061207375636365737366756c207265736375657220746f20636c61696d207468656972207265636f7665726564206163636f756e742e20546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f20616e64206d7573742062652061202272657363756572222077686f20686173207375636365737366756c6c7920636f6d706c6574656420746865206163636f756e74207265636f766572792070726f636573733a20636f6c6c656374656420607468726573686f6c6460206f72206d6f726520766f75636865732c20776169746564206064656c61795f706572696f646020626c6f636b732073696e636520696e6974696174696f6e2e202d20606163636f756e74603a20546865206c6f7374206163636f756e74207468617420796f752077616e7420746f20636c61696d20686173206265656e207375636365737366756c6c792020207265636f766572656420627920796f752e204b65793a204620286c656e206f6620667269656e647320696e20636f6e666967292c205620286c656e206f6620766f756368696e6720667269656e647329202d204f6e652073746f72616765207265616420746f2067657420746865207265636f7665727920636f6e66696775726174696f6e2e204f2831292c20436f646563204f284629202d204f6e652073746f72616765207265616420746f206765742074686520616374697665207265636f766572792070726f636573732e204f2831292c20436f646563204f285629202d204f6e652073746f72616765207265616420746f20676574207468652063757272656e7420626c6f636b206e756d6265722e204f283129202d204f6e652073746f726167652077726974652e204f2831292c20436f646563204f2856292e20546f74616c20436f6d706c65786974793a204f2846202b20562920416c6c6f7720612022667269656e6422206f662061207265636f76657261626c65206163636f756e7420746f20766f75636820666f7220616e20616374697665207265636f766572792070726f6365737320666f722074686174206163636f756e742e20546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f20616e64206d75737420626520612022667269656e642220666f7220746865207265636f76657261626c65206163636f756e742e202d20606c6f7374603a20546865206c6f7374206163636f756e74207468617420796f752077616e7420746f207265636f7665722e202d206072657363756572603a20546865206163636f756e7420747279696e6720746f2072657363756520746865206c6f7374206163636f756e74207468617420796f7520202077616e7420746f20766f75636820666f722e2054686520636f6d62696e6174696f6e206f662074686573652074776f20706172616d6574657273206d75737420706f696e7420746f20616e20616374697665207265636f766572792070726f636573732e202d204f6e652062696e6172792073656172636820746f20636f6e6669726d2063616c6c6572206973206120667269656e642e204f286c6f674629202d204f6e652062696e6172792073656172636820746f20636f6e6669726d2063616c6c657220686173206e6f7420616c726561647920766f75636865642e204f286c6f67562920546f74616c20436f6d706c65786974793a204f2846202b206c6f6746202b2056202b206c6f67562920496e697469617465207468652070726f6365737320666f72207265636f766572696e672061207265636f76657261626c65206163636f756e742e205061796d656e743a20605265636f766572794465706f736974602062616c616e63652077696c6c20626520726573657276656420666f7220696e6974696174696e6720746865207265636f766572792070726f636573732e2054686973206465706f7369742077696c6c20616c7761797320626520726570617472696174656420746f20746865206163636f756e7420747279696e6720746f206265207265636f76657265642e205365652060636c6f73655f7265636f76657279602e202d20606163636f756e74603a20546865206c6f7374206163636f756e74207468617420796f752077616e7420746f207265636f7665722e2054686973206163636f756e742020206e6565647320746f206265207265636f76657261626c652028692e652e20686176652061207265636f7665727920636f6e66696775726174696f6e292e202d204f6e652073746f72616765207265616420746f20636865636b2074686174206163636f756e74206973207265636f76657261626c652e204f284629202d204f6e652073746f72616765207265616420746f20636865636b20746861742074686973207265636f766572792070726f63657373206861736e277420616c726561647920737461727465642e204f283129202d204f6e652063757272656e63792072657365727665206f7065726174696f6e2e204f285829202d204f6e652073746f726167652077726974652e204f2831292e6163636f756e74204372656174652061207265636f7665727920636f6e66696775726174696f6e20666f7220796f7572206163636f756e742e2054686973206d616b657320796f7572206163636f756e74207265636f76657261626c652e205061796d656e743a2060436f6e6669674465706f7369744261736560202b2060467269656e644465706f736974466163746f7260202a20235f6f665f667269656e64732062616c616e63652077696c6c20626520726573657276656420666f722073746f72696e6720746865207265636f7665727920636f6e66696775726174696f6e2e2054686973206465706f7369742069732072657475726e656420696e2066756c6c207768656e2074686520757365722063616c6c73206072656d6f76655f7265636f76657279602e202d2060667269656e6473603a2041206c697374206f6620667269656e647320796f7520747275737420746f20766f75636820666f72207265636f7665727920617474656d7074732e20202053686f756c64206265206f72646572656420616e6420636f6e7461696e206e6f206475706c69636174652076616c7565732e202d20607468726573686f6c64603a20546865206e756d626572206f6620667269656e64732074686174206d75737420766f75636820666f722061207265636f7665727920617474656d70742020206265666f726520746865206163636f756e742063616e206265207265636f76657265642e2053686f756c64206265206c657373207468616e206f7220657175616c20746f202020746865206c656e677468206f6620746865206c697374206f6620667269656e64732e202d206064656c61795f706572696f64603a20546865206e756d626572206f6620626c6f636b732061667465722061207265636f7665727920617474656d707420697320696e697469616c697a656420202074686174206e6565647320746f2070617373206265666f726520746865206163636f756e742063616e206265207265636f76657265642e202d204b65793a204620286c656e206f6620667269656e647329202d204f6e652073746f72616765207265616420746f20636865636b2074686174206163636f756e74206973206e6f7420616c7265616479207265636f76657261626c652e204f2831292e202d204120636865636b20746861742074686520667269656e6473206c69737420697320736f7274656420616e6420756e697175652e204f284629202d204f6e652073746f726167652077726974652e204f2831292e20436f646563204f2846292e667269656e64737468726573686f6c6475313664656c61795f706572696f64543a3a426c6f636b4e756d62657220416c6c6f7720524f4f5420746f2062797061737320746865207265636f766572792070726f6365737320616e642073657420616e20612072657363756572206163636f756e7420666f722061206c6f7374206163636f756e74206469726563746c792e20546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f524f4f545f2e202d20606c6f7374603a2054686520226c6f7374206163636f756e742220746f206265207265636f76657265642e202d206072657363756572603a20546865202272657363756572206163636f756e74222077686963682063616e2063616c6c20617320746865206c6f7374206163636f756e742e202d204f6e652073746f72616765207772697465204f283129202d204f6e65206576656e746c6f73742053656e6420612063616c6c207468726f7567682061207265636f7665726564206163636f756e742e202d20606163636f756e74603a20546865207265636f7665726564206163636f756e7420796f752077616e7420746f206d616b6520612063616c6c206f6e2d626568616c662d6f662e202d206063616c6c603a205468652063616c6c20796f752077616e7420746f206d616b65207769746820746865207265636f7665726564206163636f756e742e202d2054686520776569676874206f6620746865206063616c6c60202b2031302c3030302e202d204f6e652073746f72616765206c6f6f6b757020746f20636865636b206163636f756e74206973207265636f7665726564206279206077686f602e204f283129426f783c3c542061732054726169743e3a3a43616c6c3e5265636f766572790000000000780c12000b0000000101000000000000138212000c00000000000000830c12003a00000000000000000000000000000000000000c8b01200c00c12000000000000000000d00c120001000000000000000000000000000000d80c1200100000000205050000000000138212000c00000000000000138212000c00000000000000e80c12003a00000000000000c8b01200240d12000000000000000000340d120004000000000000000000000000000000540d1200050000000101000000000000138212000c00000000000000138212000c00000000000000000000000000000000000000c8b012001c1a120000000000000000005c0d12000300000000000000000000005265636f76657261626c655265636f76657279436f6e6669673c543a3a426c6f636b4e756d6265722c2042616c616e63654f663c543e2c20543a3a4163636f756e7449643e0000003c000000000000000100000051000000600e1200420000004163746976655265636f7665726965734163746976655265636f766572793c543a3a426c6f636b4e756d6265722c2042616c616e63654f663c543e2c20543a3a4163636f756e7449643e00003c000000000000000100000051000000d60d12001a000000c8b0120000000000f00d120045000000350e12002b00000050726f7879000000740d120024000000c8b0120000000000980d12003e00000020546865206c697374206f6620616c6c6f7765642070726f7879206163636f756e74732e204d61702066726f6d2074686520757365722077686f2063616e2061636365737320697420746f20746865207265636f7665726564206163636f756e742e20416374697665207265636f7665727920617474656d7074732e204669727374206163636f756e7420697320746865206163636f756e7420746f206265207265636f76657265642c20616e6420746865207365636f6e64206163636f756e7420697320746865207573657220747279696e6720746f207265636f76657220746865206163636f756e742e2054686520736574206f66207265636f76657261626c65206163636f756e747320616e64207468656972207265636f7665727920636f6e66696775726174696f6e2e000000000000daea11000b00000000000000800f1200020000000000000000000000b00f1200060000000000000000000000e5ea11000700000000000000e00f1200010000000000000000000000f80f1200030000000000000000000000ecea110007000000000000001010120002000000000000000000000040101200040000000000000000000000f3ea1100040000000000000060101200030000000000000000000000a8101200040000000000000000000000f7ea11000500000000000000c8101200020000000000000000000000f81012000d0000000000000000000000b81512000b00000000000000e03c12001100000000000000c31512000500000000000000c8151200140000000915120021000000c8b01200000000002a1512003f0000006915120039000000c8b0120000000000a21512001600000000000000791312000800000000000000831412001e000000a11412003d000000c8b0120000000000de1412002b00000000000000dd08120009000000000000006f1412001400000000000000791312000800000000000000831412001e0000002a7f12000b0000001d14120024000000411412002e000000927f12000c000000000000007913120008000000000000008113120007000000000000001f821200050000000000000088131200160000000000000016141200070000000000000000ee1100040000002a7f12000b0000009e13120023000000c113120055000000927f12000c000000000000007913120008000000000000008113120007000000000000001f821200050000000000000088131200160000006011120054000000b411120026000000c8b0120000000000da111200570000003112120019000000c8b01200000000004a121200250000006f121200200000008f12120043000000d21212002c000000fe1212001e0000001c131200270000004313120036000000204d61792062652063616c6c656420627920616e79207369676e6564206163636f756e742061667465722074686520766f74696e67206475726174696f6e2068617320656e64656420696e206f7264657220746f2066696e69736820766f74696e6720616e6420636c6f7365207468652070726f706f73616c2e2041627374656e74696f6e732061726520636f756e7465642061732072656a656374696f6e7320756e6c6573732074686572652069732061207072696d65206d656d6265722073657420616e6420746865207072696d65206d656d626572206361737420616e20617070726f76616c2e202d2074686520776569676874206f66206070726f706f73616c6020707265696d6167652e202d20757020746f207468726565206576656e7473206465706f73697465642e202d206f6e6520726561642c2074776f2072656d6f76616c732c206f6e65206d75746174696f6e2e2028706c7573207468726565207374617469632072656164732e29202d20636f6d7075746174696f6e20616e6420692f6f20604f2850202b204c202b204d29602077686572653a2020202d20604d60206973206e756d626572206f66206d656d626572732c2020202d20605060206973206e756d626572206f66206163746976652070726f706f73616c732c2020202d20604c602069732074686520656e636f646564206c656e677468206f66206070726f706f73616c6020707265696d6167652e70726f706f73616c543a3a48617368436f6d706163743c50726f706f73616c496e6465783e202d20426f756e6465642073746f72616765207265616420616e64207772697465732e202d2057696c6c20626520736c696768746c792068656176696572206966207468652070726f706f73616c20697320617070726f766564202f20646973617070726f7665642061667465722074686520766f74652e617070726f7665202d20426f756e6465642073746f7261676520726561647320616e64207772697465732e202d20417267756d656e7420607468726573686f6c6460206861732062656172696e67206f6e207765696768742e436f6d706163743c4d656d626572436f756e743e426f783c3c542061732054726169743c493e3e3a3a50726f706f73616c3e20446973706174636820612070726f706f73616c2066726f6d2061206d656d626572207573696e672074686520604d656d62657260206f726967696e2e204f726967696e206d7573742062652061206d656d626572206f662074686520636f6c6c6563746976652e205365742074686520636f6c6c6563746976652773206d656d626572736869702e202d20606e65775f6d656d62657273603a20546865206e6577206d656d626572206c6973742e204265206e69636520746f2074686520636861696e20616e64202d20607072696d65603a20546865207072696d65206d656d6265722077686f736520766f74652073657473207468652064656661756c742e20526571756972657320726f6f74206f726967696e2e6e65775f6d656d626572737072696d654f7074696f6e3c543a3a4163636f756e7449643e5665633c543a3a486173683eb81712002400000050726f706f73616c4f663c542061732054726169743c493e3e3a3a50726f706f73616c008517120033000000566f7465733c543a3a4163636f756e7449642c20543a3a426c6f636b4e756d6265723e00581712002d0000004617120012000000f81612004e0000006816120057000000bf1612003900000020546865206d656d6265722077686f2070726f7669646573207468652064656661756c7420766f746520666f7220616e79206f74686572206d656d62657273207468617420646f206e6f7420766f7465206265666f7265207468652074696d656f75742e204966204e6f6e652c207468656e206e6f206d656d6265722068617320746861742070726976696c6567652e205468652063757272656e74206d656d62657273206f662074686520636f6c6c6563746976652e20546869732069732073746f72656420736f7274656420286a7573742062792076616c7565292e2050726f706f73616c7320736f206661722e20566f746573206f6e206120676976656e2070726f706f73616c2c206966206974206973206f6e676f696e672e2041637475616c2070726f706f73616c20666f72206120676976656e20686173682c20696620697427732063757272656e742e2054686520686173686573206f6620746865206163746976652070726f706f73616c732e0000000062ef1100090000000000000000000000dc1512000c00000000000000000000000000000000000000000000000000000000000000c8b01200ec1912000000000000000000e815120001000000000000000100000000000000f01512000a0000000101000000000000811312000700000000000000fa1512001900000000000000000000000000000000000000c8b012001c1a12000000000000000000141612000100000000000000000000000000000072ef11000600000001010000000000008113120007000000000000001c1612002300000000000000000000000000000000000000c8b012001c1a120000000000000000004016120001000000000000000000000000000000889112000d0000000000000000000000847212000300000000000000000000000000000000000000000000000000000000000000c8b01200fc191200000000000000000048161200010000000000000001000000000000006bef1100070000000000000000000000e03c12001100000000000000000000000000000000000000000000000000000000000000c8b012000c1a1200000000000000000050161200010000000000000001000000000000007bea1100050000000000000000000000138212000c00000000000000000000000000000000000000000000000000000000000000c8b012001c1a12000000000000000000581612000200000000000000000000003c0000000000000001000000590000003c00000000000000010000006b0000003c0000000000000001000000590000003c00000000000000010000005100000000000000b7e611000a00000000000000ec1b1200010000000000000000000000aae611000d00000000000000f41b12000100000000000000000000009ae611001000000000000000fc1b120001000000000000000000000090e611000a00000000000000041c120001000000000000000000000087e6110009000000000000000c1c120001000000000000000000000079e611000e00000000000000141c120001000000000000000000000067e6110012000000000000001c1c120001000000000000000000000059e611000e00000000000000241c12000100000000000000000000004fe611000a000000000000002c1c120001000000000000000000000046e611000900000000000000341c12000100000000000000000000003be611000b000000000000003c1c12000100000000000000000000002de611000e00000000000000441c120001000000000000000000000024e6110009000000000000004c1c120001000000000000000000000019e611000b00000000000000541c120001000000000000000000000011e6110008000000000000005c1c120001000000000000000000000005e611000c000000000000001c1c120001000000000000001f1f12003d000000fb1e120024000000c61e1200350000009b1e12002b000000681e120033000000401e120028000000141e12002c000000dc1d120038000000a81d1200340000007d1d12002b000000361d120047000000061d120030000000cb1c12003b0000008b1c120040000000641c1200270000002054686572652077617320616e206f766572666c6f7720696e20612063616c63756c6174696f6e20546865726520617265207374696c6c20616374697665207265636f7665727920617474656d7074732074686174206e65656420746f20626520636c6f73656420546865207468726573686f6c6420666f72207265636f766572696e672074686973206163636f756e7420686173206e6f74206265656e206d6574205468697320757365722068617320616c726561647920766f756368656420666f722074686973207265636f766572792054686520667269656e64206d757374207761697420756e74696c207468652064656c617920706572696f6420746f20766f75636820666f722074686973207265636f766572792054686973206163636f756e74206973206e6f74206120667269656e642077686f2063616e20766f7563682041207265636f766572792070726f6365737320686173206e6f74207374617274656420666f72207468697320726573637565722041207265636f766572792070726f636573732068617320616c7265616479207374617274656420666f722074686973206163636f756e742054686973206163636f756e7420697320616c72656164792073657420757020666f72207265636f766572792054686973206163636f756e74206973206e6f742073657420757020666f72207265636f7665727920467269656e6473206c697374206d75737420626520736f7274656420616e642066726565206f66206475706c69636174657320467269656e6473206c697374206d757374206265206c657373207468616e206d617820667269656e647320467269656e6473206c697374206d7573742062652067726561746572207468616e207a65726f20616e64207468726573686f6c64205468726573686f6c64206d7573742062652067726561746572207468616e207a65726f2055736572206973206e6f7420616c6c6f77656420746f206d616b6520612063616c6c206f6e20626568616c66206f662074686973206163636f756e7400000000d1ea1100090000000000000020201200010000000000000000000000c0ea1100110000000000000028201200010000000000000000000000b1ea11000f0000000000000030201200010000000000000000000000a7ea11000a00000000000000382012000100000000000000000000009aea11000d000000000000004020120001000000000000000000000088ea110012000000000000004820120001000000000000000000000080ea110008000000000000005020120001000000000000001521120018000000f520120020000000e120120014000000d020120011000000b920120017000000982012002100000058201200400000002054686520636c6f73652063616c6c206973206d61646520746f6f206561726c792c206265666f72652074686520656e64206f662074686520766f74696e672e204d656d626572732061726520616c726561647920696e697469616c697a656421204475706c696361746520766f74652069676e6f726564204d69736d61746368656420696e6465782050726f706f73616c206d757374206578697374204475706c69636174652070726f706f73616c73206e6f7420616c6c6f776564204163636f756e74206973206e6f742061206d656d626572000000bb2112000d0000009e2112001b000000b9211200020000005821120046000000a9020000010000002f686f6d652f616e6472652f576f726b62656e63682f706172697479746563682f7375627374726174652f62696e2f6e6f64652f72756e74696d652f7372632f6c69622e727342616420696e70757420646174612070726f766964656420746f203a20657865637574655f626c6f636bd021120010000000696e697469616c697a655f626c6f636be82112000f0000006170706c795f65787472696e736963000022120013000000696e686572656e745f65787472696e73696373001c2212000f000000636865636b5f696e686572656e747300342212001400000076616c69646174655f7472616e73616374696f6e502212000f0000006f6666636861696e5f776f726b657200682212000d0000006163636f756e745f6e6f6e6365000000fb85120004000000882212000b0000006765745f73746f72616765009c2212000f00000072656e745f70726f6a656374696f6e00b42212000a00000071756572795f696e666f0000c82212001500000067656e65726174655f73657373696f6e5f6b657973000000e8221200130000006465636f64655f73657373696f6e5f6b657973486561644f664e6f6d696e61746f72734e6f6d696e61746f7273486561644f6656616c696461746f727356616c696461746f7273496e76616c69644e756d6265724f664e6f6d696e6174696f6e73496e76616c6964457261546f52657761726446756e6465645461726765744e6f556e6c6f636b4368756e6b4e6f4d6f72654368756e6b73496e73756666696369656e7456616c7565496e76616c6964536c617368496e6465784475706c6963617465496e646578456d70747954617267657473416c7265616479506169726564416c7265616479426f6e6465644e6f7453746173684e6f74436f6e74726f6c6c65725761726e696e673a20412073657373696f6e206170706561727320746f2068617665206265656e20736b69707065642e626f6e64626f6e645f6578747261756e626f6e6477697468647261775f756e626f6e64656476616c69646174656e6f6d696e6174656368696c6c7365745f70617965657365745f636f6e74726f6c6c65727365745f76616c696461746f725f636f756e74666f7263655f6e6f5f65726173666f7263655f6e65775f6572617365745f696e76756c6e657261626c6573666f7263655f756e7374616b65666f7263655f6e65775f6572615f616c7761797363616e63656c5f64656665727265645f736c6173687061796f75745f6e6f6d696e61746f727061796f75745f76616c696461746f727265626f6e647365745f686973746f72795f6465707468726561705f7374617368426f6e6465644c6564676572416374697665457261457261735374616b657273457261735374616b657273436c69707065644572617356616c696461746f72507265667345726173526577617264506f696e747345726173546f74616c5374616b6556616c696461746f72536c617368496e4572614e6f6d696e61746f72536c617368496e457261536c617368696e675370616e735370616e536c61736800000000004426120006000000000000004c2612000200000000000000000000005c2612000100000000000000000000006426120005000000000000004c2612000200000000000000000000006c261200010000000000000000000000742612001a00000000000000888f12000100000000000000000000009026120002000000000000005265776172640000c26d1200090000009027120007000000422712004e000000536c617368000000f9261200490000004f6c64536c617368696e675265706f72744469736361726465640000a026120047000000e72612001200000020416e206f6c6420736c617368696e67207265706f72742066726f6d2061207072696f72206572612077617320646973636172646564206265636175736520697420636f756c64206e6f742062652070726f6365737365642e204f6e652076616c696461746f722028616e6420697473206e6f6d696e61746f72732920686173206265656e20736c61736865642062792074686520676976656e20616d6f756e742e20546865207374616b657220686173206265656e207265776172646564206279207468697320616d6f756e742e204163636f756e74496420697320636f6e74726f6c6c6572206163636f756e742e42616c616e63654572617356616c696461746f725265776172644572726f723a2073746172745f73657373696f6e5f696e646578206d7573742062652073657420666f722063757272656e745f657261556e6170706c696564536c6173686573000000001b24120004000000000000008c2b1200030000000000000000000000d42b12000f00000000000000000000001f2412000a000000000000004c2c1200010000000000000000000000642c12000e0000000000000000000000292412000600000000000000d42c1200010000000000000000000000ec2c12001800000000000000000000002f2412001100000000000000c8b01200000000000000000000000000ac2d12001000000000000000000000004024120008000000000000002c2e1200010000000000000000000000442e12000b00000000000000000000004824120008000000000000009c2e1200010000000000000000000000b42e12000b0000000000000000000000502412000500000000000000c8b012000000000000000000000000000c2f12000b0000000000000000000000552412000900000000000000642f12000100000000000000000000007c2f12000b00000000000000000000005e2412000e00000000000000d42f1200010000000000000000000000ec2f12000b00000000000000000000006c2412001300000000000000443012000100000000000000000000005c3012000100000000000000000000007f2412000d00000000000000c8b01200000000000000000000000000643012000500000000000000000000008c2412000d00000000000000c8b012000000000000000000000000008c301200060000000000000000000000992412001100000000000000bc301200010000000000000000000000d4301200010000000000000000000000aa2412000d00000000000000dc301200010000000000000000000000f4301200010000000000000000000000b72412001400000000000000c8b01200000000000000000000000000fc301200050000000000000000000000cb24120015000000000000002431120002000000000000000000000054311200070000000000000000000000e024120010000000000000008c311200020000000000000000000000bc311200170000000000000000000000f02412001000000000000000743212000100000000000000000000008c3212000f0000000000000000000000002512000600000000000000d42c120001000000000000000000000004331200060000000000000000000000062512001100000000000000343312000100000000000000000000004c331200030000000000000000000000172512000a00000000000000dc30120001000000000000000000000064331200070000000000000000000000163f12000a00000000000000203f120023000000000000007c4712000500000000000000814712001500000000000000c63f12000500000000000000cb3f120011000000d2481200590000002b49120021000000c8b01200000000004c4912004c000000c8b01200000000009849120049000000c8b01200000000002a7f12000b000000e149120035000000bc48120008000000164a12001a000000c8b0120000000000304a12005b0000008b4a120049000000927f12000c00000000000000c44812000e0000000000000081471200150000009647120059000000ef4712000d000000c8b0120000000000fc471200540000005048120059000000a948120013000000c8b01200000000002f3e120055000000c8b01200000000002a7f12000b000000843e12003a000000bc481200080000006247120010000000927f12000c000000000000007c471200050000000000000081471200150000008f43120055000000e4431200400000002444120049000000c8b01200000000006d44120052000000bf44120030000000c8b0120000000000ef4412004f0000003e4512004f0000008d4512003f000000c8b0120000000000713f120055000000c8b0120000000000cc45120026000000c8b01200000000002a7f12000b000000f245120050000000be3e12002600000042461200590000009b4612005c000000f7461200540000004b471200170000006247120010000000724712000a000000884112004b000000c8b0120000000000d34112004d0000002042120013000000c8b0120000000000713f120055000000c8b0120000000000334212001b000000c8b01200000000002a7f12000b0000004e42120055000000a342120051000000f44212003d000000314312005e000000e43e120032000000927f12000c000000000000007541120005000000000000007a4112000e0000003b4112003a000000c8b0120000000000f83d120037000000c8b0120000000000713f120055000000c8b01200000000002a7f12000b000000843e12003a000000be3e120026000000e43e120032000000927f12000c000000000000000c411200070000000000000013411200280000002340120044000000c8b0120000000000f83d120037000000c8b0120000000000713f120055000000c8b01200000000002a7f12000b0000006740120049000000b040120026000000d640120036000000927f12000c000000dc3f120032000000c8b0120000000000f83d120037000000c8b0120000000000713f120055000000c8b01200000000002a7f12000b000000843e12003a0000000e40120015000000e43e120032000000927f12000c00000000000000c63f12000500000000000000cb3f120011000000433f12002e000000c8b0120000000000f83d120037000000c8b0120000000000713f120055000000c8b01200000000002a7f12000b000000843e12003a000000be3e120026000000e43e120032000000927f12000c00000000000000163f12000a00000000000000203f120023000000d43d120024000000c8b0120000000000f83d120037000000c8b01200000000002f3e120055000000c8b01200000000002a7f12000b000000843e12003a000000be3e120026000000e43e120032000000927f12000c00000000000000108212000300000000000000c83d12000c000000a83d1200200000007c3d12002c000000c8b01200000000002a7f12000b0000006c3d120010000000927f12000c000000f13c120053000000443d120028000000c8b01200000000002a7f12000b0000006c3d120010000000927f12000c00000000000000163b12000a00000000000000e03c120011000000ad3c12003300000000000000a83c12000500000000000000138212000c000000653c120043000000103c120041000000c8b01200000000002a7f12000b000000513c120014000000927f12000c00000000000000e43712000300000000000000e73712000800000000000000fb3b12000d00000000000000083c120008000000383b120051000000893b12001c000000a53b120041000000c8b01200000000002a7f12000b000000e63b120015000000927f12000c00000000000000e43712000300000000000000e73712000800000000000000163b12000a00000000000000203b120018000000ef37120029000000c8b0120000000000183812003f0000003f36120059000000983612004c0000005738120056000000ad38120048000000f538120028000000c8b0120000000000e4361200570000003b3712000e000000c8b01200000000004937120051000000c8b01200000000002a7f12000b0000001d3912005700000074391200270000009b3912004e000000e939120037000000203a120050000000703a120052000000c23a120054000000927f12000c00000000000000e43712000300000000000000e737120008000000d735120029000000c8b0120000000000003612003f0000003f36120059000000983612004c000000c8b0120000000000e4361200570000003b3712000e000000c8b01200000000004937120051000000c8b01200000000002a7f12000b0000009a37120019000000b337120031000000927f12000c0000002635120038000000c8b01200000000002a7f12000b0000005e3512003c0000009a3512003d000000927f12000c000000000000000435120011000000000000001535120011000000d634120019000000c8b0120000000000ef341200150000009c3312004e000000ea331200580000004234120030000000c8b01200000000007234120024000000c8b012000000000096341200400000002052656d6f766520616c6c20646174612073747275637475726520636f6e6365726e696e672061207374616b65722f7374617368206f6e6365206974732062616c616e6365206973207a65726f2e205468697320697320657373656e7469616c6c79206571756976616c656e7420746f206077697468647261775f756e626f6e64656460206578636570742069742063616e2062652063616c6c656420627920616e796f6e6520616e6420746865207461726765742060737461736860206d7573742068617665206e6f2066756e6473206c6566742e20546869732063616e2062652063616c6c65642066726f6d20616e79206f726967696e2e202d20607374617368603a20546865207374617368206163636f756e7420746f20726561702e204974732062616c616e6365206d757374206265207a65726f2e2053657420686973746f72795f64657074682076616c75652e204f726967696e206d75737420626520726f6f742e6e65775f686973746f72795f6465707468436f6d706163743c457261496e6465783e205265626f6e64206120706f7274696f6e206f6620746865207374617368207363686564756c656420746f20626520756e6c6f636b65642e202d2054696d6520636f6d706c65786974793a204f2831292e20426f756e64656420627920604d41585f554e4c4f434b494e475f4348554e4b53602e202d2053746f72616765206368616e6765733a2043616e277420696e6372656173652073746f726167652c206f6e6c792064656372656173652069742e204d616b65206f6e652076616c696461746f722773207061796f757420666f72206f6e65206572612e202d206077686f602069732074686520636f6e74726f6c6c6572206163636f756e74206f66207468652076616c696461746f7220746f20706179206f75742e202d206065726160206d6179206e6f74206265206c6f776572207468616e206f6e6520666f6c6c6f77696e6720746865206d6f737420726563656e746c792070616964206572612e204966206974206973206869676865722c2020207468656e20697420696e6469636174657320616e20696e737472756374696f6e20746f20736b697020746865207061796f7574206f6620616c6c2070726576696f757320657261732e205741524e494e473a206f6e636520616e2065726120697320706179656420666f7220612076616c696461746f7220737563682076616c696461746f722063616e277420636c61696d20746865207061796f7574206f662070726576696f7573206572612e205741524e494e473a20496e636f727265637420617267756d656e747320686572652063616e20726573756c7420696e206c6f7373206f66207061796f75742e2042652076657279206361726566756c2e202d2054696d6520636f6d706c65786974793a204f2831292e202d20436f6e7461696e732061206c696d69746564206e756d626572206f6620726561647320616e64207772697465732e657261457261496e646578204d616b65206f6e65206e6f6d696e61746f722773207061796f757420666f72206f6e65206572612e202d206077686f602069732074686520636f6e74726f6c6c6572206163636f756e74206f6620746865206e6f6d696e61746f7220746f20706179206f75742e202d206076616c696461746f72736020697320746865206c697374206f6620616c6c2076616c696461746f72732074686174206077686f6020686164206578706f7375726520746f20647572696e672060657261602e202020496620697420697320696e636f6d706c6574652c207468656e206c657373207468616e207468652066756c6c207265776172642077696c6c2062652070616964206f75742e2020204974206d757374206e6f742065786365656420604d41585f4e4f4d494e4154494f4e53602e202d204e756d626572206f662073746f726167652072656164206f6620604f2876616c696461746f727329603b206076616c696461746f7273602069732074686520617267756d656e74206f66207468652063616c6c2c202020616e6420697320626f756e64656420627920604d41585f4e4f4d494e4154494f4e53602e202d20456163682073746f72616765207265616420697320604f284e29602073697a6520616e64206465636f646520636f6d706c65786974793b20604e602069732074686520206d6178696d756d2020206e6f6d696e6174696f6e7320746861742063616e20626520676976656e20746f20612073696e676c652076616c696461746f722e202d20436f6d7075746174696f6e20636f6d706c65786974793a20604f284d41585f4e4f4d494e4154494f4e53202a206c6f674e29603b20604d41585f4e4f4d494e4154494f4e5360206973207468652020206d6178696d756d206e756d626572206f662076616c696461746f72732074686174206d6179206265206e6f6d696e6174656420627920612073696e676c65206e6f6d696e61746f722c206974206973202020626f756e646564206f6e6c792065636f6e6f6d6963616c6c792028616c6c206e6f6d696e61746f72732061726520726571756972656420746f20706c6163652061206d696e696d756d207374616b65292e76616c696461746f72735665633c28543a3a4163636f756e7449642c20753332293e2043616e63656c20656e6163746d656e74206f66206120646566657272656420736c6173682e2043616e2062652063616c6c6564206279206569746865722074686520726f6f74206f726967696e206f72207468652060543a3a536c61736843616e63656c4f726967696e602e2070617373696e67207468652065726120616e6420696e6469636573206f662074686520736c617368657320666f7220746861742065726120746f206b696c6c2e202d204f6e652073746f726167652077726974652e736c6173685f696e64696365735665633c7533323e20466f72636520746865726520746f2062652061206e6577206572612061742074686520656e64206f662073657373696f6e7320696e646566696e6974656c792e202d204f6e652073746f7261676520777269746520466f72636520612063757272656e74207374616b657220746f206265636f6d6520636f6d706c6574656c7920756e7374616b65642c20696d6d6564696174656c792e737461736820536574207468652076616c696461746f72732077686f2063616e6e6f7420626520736c61736865642028696620616e79292e5665633c543a3a4163636f756e7449643e20466f72636520746865726520746f2062652061206e6577206572612061742074686520656e64206f6620746865206e6578742073657373696f6e2e20416674657220746869732c2069742077696c6c20626520726573657420746f206e6f726d616c20286e6f6e2d666f7263656429206265686176696f75722e202d204e6f20617267756d656e74732e20466f72636520746865726520746f206265206e6f206e6577206572617320696e646566696e6974656c792e2054686520696465616c206e756d626572206f662076616c696461746f72732e436f6d706163743c7533323e202852652d297365742074686520636f6e74726f6c6c6572206f6620612073746173682e20456666656374732077696c6c2062652066656c742061742074686520626567696e6e696e67206f6620746865206e657874206572612e20546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f206279207468652073746173682c206e6f742074686520636f6e74726f6c6c65722e202d20496e646570656e64656e74206f662074686520617267756d656e74732e20496e7369676e69666963616e7420636f6d706c65786974792e202d20436f6e7461696e732061206c696d69746564206e756d626572206f662072656164732e202d2057726974657320617265206c696d6974656420746f2074686520606f726967696e60206163636f756e74206b65792e636f6e74726f6c6c65723c543a3a4c6f6f6b7570206173205374617469634c6f6f6b75703e3a3a536f75726365202852652d2973657420746865207061796d656e742074617267657420666f72206120636f6e74726f6c6c65722e20546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2062792074686520636f6e74726f6c6c65722c206e6f74207468652073746173682e706179656552657761726444657374696e6174696f6e204465636c617265206e6f2064657369726520746f206569746865722076616c6964617465206f72206e6f6d696e6174652e202d20436f6e7461696e73206f6e6520726561642e204465636c617265207468652064657369726520746f206e6f6d696e6174652060746172676574736020666f7220746865206f726967696e20636f6e74726f6c6c65722e202d20546865207472616e73616374696f6e277320636f6d706c65786974792069732070726f706f7274696f6e616c20746f207468652073697a65206f66206074617267657473602c2077686963682069732063617070656420617420604d41585f4e4f4d494e4154494f4e53602e202d20426f74682074686520726561647320616e642077726974657320666f6c6c6f7720612073696d696c6172207061747465726e2e746172676574735665633c3c543a3a4c6f6f6b7570206173205374617469634c6f6f6b75703e3a3a536f757263653e204465636c617265207468652064657369726520746f2076616c696461746520666f7220746865206f726967696e20636f6e74726f6c6c65722e707265667356616c696461746f7250726566732052656d6f766520616e7920756e6c6f636b6564206368756e6b732066726f6d207468652060756e6c6f636b696e67602071756575652066726f6d206f7572206d616e6167656d656e742e205468697320657373656e7469616c6c7920667265657320757020746861742062616c616e636520746f206265207573656420627920746865207374617368206163636f756e7420746f20646f2077686174657665722069742077616e74732e2053656520616c736f205b6043616c6c3a3a756e626f6e64605d2e202d20436f756c6420626520646570656e64656e74206f6e2074686520606f726967696e6020617267756d656e7420616e6420686f77206d7563682060756e6c6f636b696e6760206368756e6b732065786973742e2020497420696d706c6965732060636f6e736f6c69646174655f756e6c6f636b656460207768696368206c6f6f7073206f76657220604c65646765722e756e6c6f636b696e67602c2077686963682069732020696e6469726563746c7920757365722d636f6e74726f6c6c65642e20536565205b60756e626f6e64605d20666f72206d6f72652064657461696c2e202d20436f6e7461696e732061206c696d69746564206e756d626572206f662072656164732c20796574207468652073697a65206f6620776869636820636f756c64206265206c61726765206261736564206f6e20606c6564676572602e205363686564756c65206120706f7274696f6e206f662074686520737461736820746f20626520756e6c6f636b656420726561647920666f72207472616e73666572206f75742061667465722074686520626f6e6420706572696f6420656e64732e2049662074686973206c656176657320616e20616d6f756e74206163746976656c7920626f6e646564206c657373207468616e20543a3a43757272656e63793a3a6d696e696d756d5f62616c616e636528292c207468656e20697420697320696e6372656173656420746f207468652066756c6c20616d6f756e742e204f6e63652074686520756e6c6f636b20706572696f6420697320646f6e652c20796f752063616e2063616c6c206077697468647261775f756e626f6e6465646020746f2061637475616c6c79206d6f7665207468652066756e6473206f7574206f66206d616e6167656d656e7420726561647920666f72207472616e736665722e204e6f206d6f7265207468616e2061206c696d69746564206e756d626572206f6620756e6c6f636b696e67206368756e6b73202873656520604d41585f554e4c4f434b494e475f4348554e4b5360292063616e20636f2d657869737473206174207468652073616d652074696d652e20496e207468617420636173652c205b6043616c6c3a3a77697468647261775f756e626f6e646564605d206e65656420746f2062652063616c6c656420666972737420746f2072656d6f766520736f6d65206f6620746865206368756e6b732028696620706f737369626c65292e2053656520616c736f205b6043616c6c3a3a77697468647261775f756e626f6e646564605d2e202d20496e646570656e64656e74206f662074686520617267756d656e74732e204c696d697465642062757420706f74656e7469616c6c79206578706c6f697461626c6520636f6d706c65786974792e202d20456163682063616c6c20287265717569726573207468652072656d61696e646572206f662074686520626f6e6465642062616c616e636520746f2062652061626f766520606d696e696d756d5f62616c616e6365602920202077696c6c2063617573652061206e657720656e74727920746f20626520696e73657274656420696e746f206120766563746f722028604c65646765722e756e6c6f636b696e676029206b65707420696e2073746f726167652e202020546865206f6e6c792077617920746f20636c65616e207468652061666f72656d656e74696f6e65642073746f72616765206974656d20697320616c736f20757365722d636f6e74726f6c6c6564207669612020206077697468647261775f756e626f6e646564602e202d204f6e6520444220656e7472792e203c2f7765696768743e76616c7565436f6d706163743c42616c616e63654f663c543e3e2041646420736f6d6520657874726120616d6f756e742074686174206861766520617070656172656420696e207468652073746173682060667265655f62616c616e63656020696e746f207468652062616c616e636520757020666f72207374616b696e672e20557365207468697320696620746865726520617265206164646974696f6e616c2066756e647320696e20796f7572207374617368206163636f756e74207468617420796f75207769736820746f20626f6e642e20556e6c696b65205b60626f6e64605d206f72205b60756e626f6e64605d20746869732066756e6374696f6e20646f6573206e6f7420696d706f736520616e79206c696d69746174696f6e206f6e2074686520616d6f756e7420746861742063616e2062652061646465642e202d204f2831292e6d61785f6164646974696f6e616c2054616b6520746865206f726967696e206163636f756e74206173206120737461736820616e64206c6f636b207570206076616c756560206f66206974732062616c616e63652e2060636f6e74726f6c6c6572602077696c6c20626520746865206163636f756e74207468617420636f6e74726f6c732069742e206076616c756560206d757374206265206d6f7265207468616e2074686520606d696e696d756d5f62616c616e636560207370656369666965642062792060543a3a43757272656e6379602e20546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f20627920746865207374617368206163636f756e742e202d20496e646570656e64656e74206f662074686520617267756d656e74732e204d6f64657261746520636f6d706c65786974792e202d20546872656520657874726120444220656e74726965732e204e4f54453a2054776f206f66207468652073746f726167652077726974657320286053656c663a3a626f6e646564602c206053656c663a3a7061796565602920617265205f6e657665725f20636c65616e656420756e6c6573732074686520606f726967696e602066616c6c732062656c6f77205f6578697374656e7469616c206465706f7369745f20616e6420676574732072656d6f76656420617320647573742e00000000239012000c0000000000000000000000847212000300000000000000000000000000000000000000000000000000000000000000c8b01200cc5412000000000000000000dc541200070000000000000001000000000000002f9012000e0000000000000000000000847212000300000000000000000000000000000000000000000000000000000000000000c8b0120014551200000000000000000024551200010000000000000001000000000000003d901200150000000000000000000000847212000300000000000000000000000000000000000000000000000000000000000000c8b012002c55120000000000000000003c55120001000000000000000100000000000000445512000d0000000000000000000000e03c12001100000000000000000000000000000000000000000000000000000000000000c8b01200545512000000000000000000645512000300000000000000010000000000000021251200060000000101000000000000138212000c00000000000000138212000c00000000000000000000000000000000000000c8b01200b055120000000000000000007c5512000100000000000000000000000000000027251200060000000101000000000000138212000c00000000000000845512002900000000000000000000000000000000000000c8b01200b05512000000000000000000c055120001000000000000000000000000000000c8551200050000000101000000000000138212000c00000000000000cb3f12001100000000000000000000000000000000000000c8b01200d05512000000000000000000e055120001000000000000000100000000000000252312000a0000000101010000000000138212000c000000000000007a4112000e00000000000000000000000000000000000000c8b012004c5712000000000000000000e8551200010000000000000001000000000000000b2312000a0000000101010000000000138212000c00000000000000f05512001900000000000000000000000000000000000000c8b012000c56120000000000000000001c56120001000000000000000000000000000000529012000a0000000000000000000000e73712000800000000000000000000000000000000000000000000000000000000000000c8b01200fc591200000000000000000024561200040000000000000000000000000000002d251200090000000000000000000000445612001a00000000000000000000000000000000000000000000000000000000000000c8b0120060561200000000000000000070561200040000000000000000000000000000005c901200150000000101000000000000e73712000800000000000000179012000c00000000000000000000000000000000000000c8b01200fc59120000000000000000009056120001000000000000000000000000000000362512000b0000000205050000000000e73712000800000000000000138212000c00000000000000985612002400000000000000c8b01200ec5612000000000000000000bc5612000600000000000000010000000000000041251200120000000205050000000000e73712000800000000000000138212000c00000000000000985612002400000000000000c8b01200ec5612000000000000000000fc5612000a00000000000000010000000000000053251200120000000205050000000000e73712000800000000000000138212000c000000000000007a4112000e00000000000000c8b012004c57120000000000000000005c5712000500000000000000010000000000000097271200130000000101000000000000e73712000800000000000000845712000c00000000000000000000000000000000000000c8b012004c5912000000000000000000905712000300000000000000000000000000000065251200100000000101000000000000e73712000800000000000000a85712001d00000000000000000000000000000000000000c8b01200c85712000000000000000000d857120002000000000000000100000000000000752512000e0000000101000000000000e73712000800000000000000845712000c00000000000000000000000000000000000000c8b012005c5812000000000000000000e85712000200000000000000010000000000000071901200080000000000000000000000f85712000700000000000000000000000000000000000000000000000000000000000000c8b01200005812000000000000000000105812000100000000000000010000000000000079901200130000000000000000000000185812000700000000000000000000000000000000000000000000000000000000000000c8b01200205812000000000000000000305812000300000000000000010000000000000048581200130000000000000000000000845712000c00000000000000000000000000000000000000000000000000000000000000c8b012005c58120000000000000000006c58120002000000000000000100000000000000e0271200100000000101000000000000e737120008000000000000007c5812002f00000000000000000000000000000000000000c8b01200ac5812000000000000000000bc581200010000000000000001000000000000008c9012000a0000000000000000000000c45812001d00000000000000000000000000000000000000000000000000000000000000c8b01200e45812000000000000000000f45812000400000000000000010000000000000083251200130000000201030000000000e73712000800000000000000138212000c00000000000000145912001700000000000000c8b012002c59120000000000000000003c5912000200000000000000000000000000000096251200130000000201030000000000e73712000800000000000000138212000c00000000000000845712000c00000000000000c8b012004c59120000000000000000005c59120001000000000000000000000000000000a92512000d0000000101000000000000138212000c00000000000000645912001700000000000000000000000000000000000000c8b012007c59120000000000000000008c59120001000000000000000000000000000000b6251200090000000101000000000000945912002300000000000000b75912002200000000000000000000000000000000000000c8b01200dc5912000000000000000000ec5912000200000000000000010000000000000096901200160000000000000000000000e73712000800000000000000000000000000000000000000000000000000000000000000c8b01200fc59120000000000000000000c5a120001000000000000000000000000000000ac9012000e0000000000000000000000145a12000800000000000000000000000000000000000000000000000000000000000000c8b012001c5a120000000000000000002c5a12000300000000000000010000003c0000000000000001000000ff0000008b66120022000000c8b0120000000000ad6612004c000000c8b0120000000000f9661200420000003b6712002b00000066671200440000003c00000000000000010000006b000000616612002a0000003c0000000000000001000000000100001166120050000000496e76756c6e657261626c65730000003c0000000000000001000000590000003d651200560000009365120053000000e66512002b000000fd641200400000005374616b696e674c65646765723c543a3a4163636f756e7449642c2042616c616e63654f663c543e3e0000003c000000000000000100000051000000ac6412005100000050617965650000003c000000000000000100000051000000736412003900000022641200510000004e6f6d696e6174696f6e733c543a3a4163636f756e7449643e0000003c000000000000000100000051000000c9631200590000003d63120017000000c8b01200000000005463120055000000a963120020000000416374697665457261496e666f3c4d6f6d656e744f663c543e3e00003c0000000000000001000000510000008e62120036000000c8b0120000000000c46212002e000000f26212004b000000436212004b0000004578706f737572653c543a3a4163636f756e7449642c2042616c616e63654f663c543e3ecd6112001e000000c8b0120000000000eb61120058000000c8b0120000000000646012002a0000007d611200500000003c0000000000000001000000010100008e60120026000000c8b0120000000000b4601200550000000961120037000000406112003d000000c8b01200000000000d60120057000000c8b0120000000000646012002a0000007d611200500000003c000000000000000100000002010000c85f120045000000c8b01200000000000d60120057000000c8b0120000000000646012002a00000042616c616e63654f663c543e3e5f120042000000c8b0120000000000805f120048000000457261526577617264506f696e74733c543a3a4163636f756e7449643e0000003c000000000000000100000003010000ca5e12002b000000f55e120049000000485e12003b000000835e120047000000466f7263696e67003c000000000000000100000051000000015e12004700000050657262696c6c003c00000000000000010000006b0000008a5d12003e000000c8b0120000000000c85d12003900000043616e63656c6564536c6173685061796f7574003c0000000000000001000000de0000000a5d1200450000004f5d12003b0000005665633c556e6170706c696564536c6173683c543a3a4163636f756e7449642c2042616c616e63654f663c543e3e3e003c000000000000000100000059000000d95c1200310000005665633c28457261496e6465782c2053657373696f6e496e646578293e0000003c0000000000000001000000590000002f5c120049000000c8b0120000000000785c120032000000aa5c12002f0000002850657262696c6c2c2042616c616e63654f663c543e29003c000000000000000100000051000000c25b120051000000135c12001c0000003c0000000000000001000000510000006a5b120058000000736c617368696e673a3a536c617368696e675370616e73003c00000000000000010000006a000000475b12002300000028543a3a4163636f756e7449642c20736c617368696e673a3a5370616e496e64657829736c617368696e673a3a5370616e5265636f72643c42616c616e63654f663c543e3e0000003c000000000000000100000004010000ca5a12004f000000195b12002e0000003c0000000000000001000000510000008b5a12003f00000052656c65617365733c000000000000000100000051000000445a12001f000000c8b0120000000000635a1200280000002053746f726167652076657273696f6e206f66207468652070616c6c65742e20546869732069732073657420746f2076322e302e3020666f72206e6577206e6574776f726b732e20546865206561726c696573742065726120666f72207768696368207765206861766520612070656e64696e672c20756e6170706c69656420736c6173682e205265636f72647320696e666f726d6174696f6e2061626f757420746865206d6178696d756d20736c617368206f6620612073746173682077697468696e206120736c617368696e67207370616e2c2061732077656c6c20617320686f77206d7563682072657761726420686173206265656e2070616964206f75742e20536c617368696e67207370616e7320666f72207374617368206163636f756e74732e20416c6c20736c617368696e67206576656e7473206f6e206e6f6d696e61746f72732c206d61707065642062792065726120746f20746865206869676865737420736c6173682076616c7565206f6620746865206572612e20416c6c20736c617368696e67206576656e7473206f6e2076616c696461746f72732c206d61707065642062792065726120746f20746865206869676865737420736c6173682070726f706f7274696f6e20616e6420736c6173682076616c7565206f6620746865206572612e2041206d617070696e672066726f6d207374696c6c2d626f6e646564206572617320746f207468652066697273742073657373696f6e20696e646578206f662074686174206572612e204d75737420636f6e7461696e7320696e666f726d6174696f6e20666f72206572617320666f72207468652072616e67653a20605b6163746976655f657261202d20626f756e64696e675f6475726174696f6e3b206163746976655f6572615d6020416c6c20756e6170706c69656420736c61736865732074686174206172652071756575656420666f72206c617465722e2054686520616d6f756e74206f662063757272656e637920676976656e20746f207265706f7274657273206f66206120736c617368206576656e74207768696368207761732063616e63656c65642062792065787472616f7264696e6172792063697263756d7374616e6365732028652e672e20676f7665726e616e6365292e205468652070657263656e74616765206f662074686520736c617368207468617420697320646973747269627574656420746f207265706f72746572732e205468652072657374206f662074686520736c61736865642076616c75652069732068616e646c6564206279207468652060536c617368602e205472756520696620746865206e6578742073657373696f6e206368616e67652077696c6c2062652061206e657720657261207265676172646c657373206f6620696e6465782e2054686520746f74616c20616d6f756e74207374616b656420666f7220746865206c6173742060484953544f52595f44455054486020657261732e20496620746f74616c206861736e2774206265656e20736574206f7220686173206265656e2072656d6f766564207468656e2030207374616b652069732072657475726e65642e205265776172647320666f7220746865206c6173742060484953544f52595f44455054486020657261732e20496620726577617264206861736e2774206265656e20736574206f7220686173206265656e2072656d6f766564207468656e2030207265776172642069732072657475726e65642e2054686520746f74616c2076616c696461746f7220657261207061796f757420666f7220746865206c6173742060484953544f52595f44455054486020657261732e2045726173207468617420686176656e27742066696e697368656420796574206f7220686173206265656e2072656d6f76656420646f65736e27742068617665207265776172642e2053696d696c61726c7920746f2060457261735374616b65727360207468697320686f6c64732074686520707265666572656e636573206f662076616c696461746f72732e2054686973206973206b657965642066697374206279207468652065726120696e64657820746f20616c6c6f772062756c6b2064656c6574696f6e20616e64207468656e20746865207374617368206163636f756e742e2049732069742072656d6f7665642061667465722060484953544f52595f44455054486020657261732e20436c6970706564204578706f73757265206f662076616c696461746f72206174206572612e20546869732069732073696d696c617220746f205b60457261735374616b657273605d20627574206e756d626572206f66206e6f6d696e61746f7273206578706f7365642069732072656475636520746f207468652060543a3a4d61784e6f6d696e61746f72526577617264656450657256616c696461746f72602062696767657374207374616b6572732e2054686973206973207573656420746f206c696d69742074686520692f6f20636f737420666f7220746865206e6f6d696e61746f72207061796f75742e204966207374616b657273206861736e2774206265656e20736574206f7220686173206265656e2072656d6f766564207468656e20656d707479206578706f737572652069732072657475726e65642e204578706f73757265206f662076616c696461746f72206174206572612e2054686973206973206b65796564206669727374206279207468652065726120696e64657820746f20616c6c6f772062756c6b2064656c6574696f6e20616e64207468656e20746865207374617368206163636f756e742e205468652073657373696f6e20696e646578206174207768696368207468652065726120737461727420666f7220746865206c6173742060484953544f52595f444550544860206572617320546865206163746976652065726120696e666f726d6174696f6e2c20697420686f6c647320696e64657820616e642073746172742e20546865206163746976652065726120697320746865206572612063757272656e746c792072657761726465642e2056616c696461746f7220736574206f66207468697320657261206d75737420626520657175616c20746f206053657373696f6e496e746572666163653a3a76616c696461746f7273602e205468652063757272656e742065726120696e6465782e205468697320697320746865206c617465737420706c616e6e6564206572612c20646570656e64696e67206f6e20686f772073657373696f6e206d6f64756c6520717565756573207468652076616c696461746f72207365742c206974206d6967687420626520616374697665206f72206e6f742e20546865206d61702066726f6d206e6f6d696e61746f72207374617368206b657920746f2074686520736574206f66207374617368206b657973206f6620616c6c2076616c696461746f727320746f206e6f6d696e6174652e20546865206d61702066726f6d202877616e6e616265292076616c696461746f72207374617368206b657920746f2074686520707265666572656e636573206f6620746861742076616c696461746f722e2057686572652074686520726577617264207061796d656e742073686f756c64206265206d6164652e204b657965642062792073746173682e204d61702066726f6d20616c6c2028756e6c6f636b6564292022636f6e74726f6c6c657222206163636f756e747320746f2074686520696e666f20726567617264696e6720746865207374616b696e672e204d61702066726f6d20616c6c206c6f636b65642022737461736822206163636f756e747320746f2074686520636f6e74726f6c6c6572206163636f756e742e20416e792076616c696461746f72732074686174206d6179206e6576657220626520736c6173686564206f7220666f726369626c79206b69636b65642e20497427732061205665632073696e63652074686579277265206561737920746f20696e697469616c697a6520616e642074686520706572666f726d616e636520686974206973206d696e696d616c2028776520657870656374206e6f206d6f7265207468616e20666f757220696e76756c6e657261626c65732920616e64207265737472696374656420746f20746573746e6574732e204d696e696d756d206e756d626572206f66207374616b696e67207061727469636970616e7473206265666f726520656d657267656e637920636f6e646974696f6e732061726520696d706f7365642e2054686520696465616c206e756d626572206f66207374616b696e67207061727469636970616e74732e204e756d626572206f662065726120746f206b65657020696e20686973746f72792e20496e666f726d6174696f6e206973206b65707420666f72206572617320696e20605b63757272656e745f657261202d20686973746f72795f64657074683b2063757272656e745f6572615d204d757374206265206d6f7265207468616e20746865206e756d626572206f66206572612064656c617965642062792073657373696f6e206f74686572776973652e20692e652e2061637469766520657261206d75737420616c7761797320626520696e20686973746f72792e20692e652e20606163746976655f657261203e2063757272656e745f657261202d20686973746f72795f646570746860206d7573742062652067756172616e746565642e0000000000001c6812000e00000000000000179012000c00000000000000c8b012002c68120000000000000000003c681200010000000000000000000000446812000f00000000000000e73712000800000000000000c8b0120054681200000000000000000064681200010000000000000053657373696f6e7350657245726100003c000000000000000100000005010000a56812001c000000426f6e64696e674475726174696f6e003c0000000000000001000000060100006c68120039000000204e756d626572206f6620657261732074686174207374616b65642066756e6473206d7573742072656d61696e20626f6e64656420666f722e204e756d626572206f662073657373696f6e7320706572206572612e00000000000000de2312000d00000000000000306a1200010000000000000000000000d62312000800000000000000386a1200010000000000000000000000c92312000d00000000000000406a1200010000000000000000000000bc2312000d00000000000000486a1200010000000000000000000000b02312000c00000000000000506a1200010000000000000000000000a22312000e00000000000000586a1200010000000000000000000000912312001100000000000000606a1200010000000000000000000000802312001100000000000000686a1200010000000000000000000000742312000c00000000000000706a1200010000000000000000000000672312000d00000000000000786a12000100000000000000000000005b2312000c00000000000000806a1200010000000000000000000000492312001200000000000000886a12000100000000000000000000002f2312001a00000000000000906a120001000000000000001a6c12001a000000056c120015000000ec6b120019000000ce6b12001e000000b56b120019000000a46b120011000000826b1200220000004f6b1200330000002a6b120025000000016b120029000000ce6a120033000000b76a120017000000986a12001f00000020496e76616c6964206e756d626572206f66206e6f6d696e6174696f6e732e20496e76616c69642065726120746f207265776172642e20417474656d7074696e6720746f2074617267657420612073746173682074686174207374696c6c206861732066756e64732e2043616e206e6f74207265626f6e6420776974686f757420756e6c6f636b696e67206368756e6b732e2043616e206e6f74207363686564756c65206d6f726520756e6c6f636b206368756e6b732e2043616e206e6f7420626f6e6420776974682076616c7565206c657373207468616e206d696e696d756d2062616c616e63652e20536c617368207265636f726420696e646578206f7574206f6620626f756e64732e204475706c696361746520696e6465782e20546172676574732063616e6e6f7420626520656d7074792e20436f6e74726f6c6c657220697320616c7265616479207061697265642e20537461736820697320616c726561647920626f6e6465642e204e6f742061207374617368206163636f756e742e204e6f74206120636f6e74726f6c6c6572206163636f756e742e3c6c12002a000000696e7465726e616c206572726f723a20656e746572656420756e726561636861626c6520636f64653a200000889a12001e00000005000000320000004e6f745472616e73666572496e5573654e6f744f776e65724e6f7441737369676e6564496e6469636573636c61696d7472616e7366657266726565666f7263655f7472616e736665724163636f756e747300000000000000246d12000d00000000000000346d1200020000000000000000000000446d12000100000000000000000000004c6d12000a00000000000000586d1200010000000000000000000000606d12000100000000000000496e64657841737369676e6564000000c26d120009000000986d12000c000000a46d12001e000000496e64657846726565640000986d12000c000000686d1200300000002041206163636f756e7420696e64657820686173206265656e2066726565642075702028756e61737369676e6564292e4163636f756e74496e6465782041206163636f756e7420696e646578207761732061737369676e65642e4163636f756e74496474696d657374616d702073657420696e20626c6f636b20646f65736e2774206d6174636820736c6f7420696e207365616c046e1200230000005f5f5068616e746f6d4974656d2073686f756c64206e6576657220626520757365642e00386e12002e000000666e12000d0000004552524f523a2072657475726e6564206e6578745f6b657920686173206e6f2076616c75653a0a6b6579206973200a6e6578745f6b6579206973204e657874456e756d536574456e756d53657400000000000000ae8312000a0000000000000000000000a07112000300000000000000000000000000000000000000000000000000000000000000c8b01200fc7112000000000000000000a471120001000000000000000100000000000000b88312000b0000000000000000000000ac7112002700000000000000000000000000000000000000000000000000000000000000c8b01200d47112000000000000000000e471120001000000000000000100000000000000c38312000b0000000000000000000000a07112000300000000000000000000000000000000000000000000000000000000000000c8b01200fc7112000000000000000000ec71120002000000000000000100000000000000ce8312000b0000000000000000000000a07112000300000000000000000000000000000000000000000000000000000000000000c8b01200fc71120000000000000000000c72120001000000000000000100000000000000d98312000a0000000000000000000000147212000800000000000000000000000000000000000000000000000000000000000000c8b012006c72120000000000000000001c7212000a000000000000000100000000000000e38312000e0000000000000000000000147212000800000000000000000000000000000000000000000000000000000000000000c8b012006c72120000000000000000007c72120001000000000000000100000000000000f18312000c0000000000000000000000847212000300000000000000000000000000000000000000000000000000000000000000c8b012008872120000000000000000009872120009000000000000000100000000000000fd831200110000000101000000000000847212000300000000000000e07212000d00000000000000000000000000000000000000c8b01200f07212000000000000000000c8b01200000000000000000001000000000000005b8c12000b0000000000000000000000007312000800000000000000000000000000000000000000000000000000000000000000c8b01200087312000000000000000000187312000200000000000000000000007536340063771200150000005665633c28417574686f7269747949642c2042616265417574686f72697479576569676874293e003c000000000000000100000059000000487712001b000000e67612003e00000024771200240000003c000000000000000100000052000000d1761200150000005b75383b2033325d0b7512002e000000c8b0120000000000397512000b000000c8b01200000000004475120041000000857512003e000000c37512004500000008761200450000004d761200410000008e761200430000003c000000000000000100000007010000f474120017000000753332003c00000000000000010000006b000000af7312001f000000c8b0120000000000ce7312003d0000000b741200400000004b74120025000000c8b0120000000000707412003b000000ab74120042000000ed741200070000005665633c5b75383b2033325d3e0000003c0000000000000001000000590000004d617962655672663c000000000000000100000051000000287312004000000068731200470000002054656d706f726172792076616c75652028636c656172656420617420626c6f636b2066696e616c697a6174696f6e292077686963682069732060536f6d6560206966207065722d626c6f636b20696e697469616c697a6174696f6e2068617320616c7265616479206265656e2063616c6c656420666f722063757272656e7420626c6f636b2e2052616e646f6d6e65737320756e64657220636f6e737472756374696f6e2e205765206d616b6520612074726164656f6666206265747765656e2073746f7261676520616363657373657320616e64206c697374206c656e6774682e2057652073746f72652074686520756e6465722d636f6e737472756374696f6e2072616e646f6d6e65737320696e207365676d656e7473206f6620757020746f2060554e4445525f434f4e535452554354494f4e5f5345474d454e545f4c454e475448602e204f6e63652061207365676d656e7420726561636865732074686973206c656e6774682c20776520626567696e20746865206e657874206f6e652e20576520726573657420616c6c207365676d656e747320616e642072657475726e20746f206030602061742074686520626567696e6e696e67206f662065766572792065706f63682e204e6578742065706f63682072616e646f6d6e6573732e205468652065706f63682072616e646f6d6e65737320666f7220746865202a63757272656e742a2065706f63682e20232053656375726974792054686973204d555354204e4f54206265207573656420666f722067616d626c696e672c2061732069742063616e20626520696e666c75656e6365642062792061206d616c6963696f75732076616c696461746f7220696e207468652073686f7274207465726d2e204974204d4159206265207573656420696e206d616e792063727970746f677261706869632070726f746f636f6c732c20686f77657665722c20736f206c6f6e67206173206f6e652072656d656d626572732074686174207468697320286c696b652065766572797468696e6720656c7365206f6e2d636861696e29206974206973207075626c69632e20466f72206578616d706c652c2069742063616e20626520757365642077686572652061206e756d626572206973206e656564656420746861742063616e6e6f742068617665206265656e2063686f73656e20627920616e206164766572736172792c20666f7220707572706f7365732073756368206173207075626c69632d636f696e207a65726f2d6b6e6f776c656467652070726f6f66732e2043757272656e7420736c6f74206e756d6265722e2054686520736c6f74206174207768696368207468652066697273742065706f63682061637475616c6c7920737461727465642e2054686973206973203020756e74696c2074686520666972737420626c6f636b206f662074686520636861696e2e2043757272656e742065706f636820617574686f7269746965732e2043757272656e742065706f636820696e6465782e00000000e87712000d00000000000000a07112000300000000000000c8b01200f8771200000000000000000008781200020000000000000000000000187812001100000000000000297812000900000000000000c8b0120034781200000000000000000044781200050000000000000045706f63684475726174696f6e0000003c0000000000000001000000080100009c79120043000000df7912003f0000004578706563746564426c6f636b54696d65543a3a4d6f6d656e7400003c0000000000000001000000090100006c78120041000000ad78120044000000f1781200410000003279120042000000747912002800000020546865206578706563746564206176657261676520626c6f636b2074696d6520617420776869636820424142452073686f756c64206265206372656174696e6720626c6f636b732e2053696e636520424142452069732070726f626162696c6973746963206974206973206e6f74207472697669616c20746f20666967757265206f7574207768617420746865206578706563746564206176657261676520626c6f636b2074696d652073686f756c64206265206261736564206f6e2074686520736c6f74206475726174696f6e20616e642074686520736563757269747920706172616d657465722060636020287768657265206031202d20636020726570726573656e7473207468652070726f626162696c697479206f66206120736c6f74206265696e6720656d707479292e20546865206e756d626572206f66202a2a736c6f74732a2a207468617420616e2065706f63682074616b65732e20576520636f75706c652073657373696f6e7320746f2065706f6368732c20692e652e2077652073746172742061206e65772073657373696f6e206f6e636520746865206e65772065706f636820626567696e732e65706f636820696e64696365732077696c6c206e6576657220726561636820325e3634206265666f726520746865206465617468206f662074686520756e6976657273653b2071656400887a1200400000004f0100001b000000887a12004000000057010000200000002f686f6d652f616e6472652f576f726b62656e63682f706172697479746563682f7375627374726174652f6672616d652f626162652f7372632f6c69622e727300000000a26c12000500000000000000787b1200010000000000000000000000907b1200100000000000000000000000a76c12000800000000000000107c1200020000000000000000000000407c1200100000000000000000000000af6c12000400000000000000787b1200010000000000000000000000c07c1200100000000000000000000000b36c12000e00000000000000107c1200020000000000000000000000407d12001000000000000000000000001f8212000500000000000000248212000f0000003382120027000000c8b01200000000005a82120038000000c8b01200000000007881120034000000c8b0120000000000928212003d000000c8b0120000000000057f120025000000c8b01200000000002a7f12000b000000357f12000a0000003f7f120027000000d880120019000000857f12000d000000927f12000c00000000000000108212000300000000000000138212000c000000000000001f8212000500000000000000248212000f000000f180120058000000498112002f000000c8b01200000000007881120034000000c8b0120000000000ac8112004a000000ad7e120058000000c8b0120000000000057f120025000000c8b01200000000002a7f12000b000000357f12000a0000003f7f120027000000f68112001a000000857f12000d000000927f12000c0000009e7f120026000000c8b0120000000000c47f120058000000c8b01200000000001c80120056000000c8b01200000000007280120044000000c8b0120000000000b680120022000000c8b01200000000002a7f12000b000000357f12000a0000003f7f120027000000d880120019000000857f12000d000000927f12000c000000c07d120056000000167e12003b000000c8b0120000000000517e120032000000c8b0120000000000837e12002a000000ad7e120058000000c8b0120000000000057f120025000000c8b01200000000002a7f12000b000000357f12000a0000003f7f120027000000667f12001f000000857f12000d000000927f12000c00000020466f72636520616e20696e64657820746f20616e206163636f756e742e205468697320646f65736e277420726571756972652061206465706f7369742e2049662074686520696e64657820697320616c72656164792068656c642c207468656e20616e79206465706f736974206973207265696d62757273656420746f206974732063757272656e74206f776e65722e20546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f526f6f745f2e202d2060696e646578603a2074686520696e64657820746f206265202872652d2961737369676e65642e202d20606e6577603a20746865206e6577206f776e6572206f662074686520696e6465782e20546869732066756e6374696f6e2069732061206e6f2d6f7020696620697420697320657175616c20746f2073656e6465722e20456d6974732060496e64657841737369676e656460206966207375636365737366756c2e2023203c7765696768743e202d20604f283129602e202d204f6e652073746f72616765206d75746174696f6e2028636f64656320604f28312960292e202d20557020746f206f6e652072657365727665206f7065726174696f6e2e202d204f6e65206576656e742e2023203c2f7765696768743e204672656520757020616e20696e646578206f776e6564206279207468652073656e6465722e205061796d656e743a20416e792070726576696f7573206465706f73697420706c6163656420666f722074686520696e64657820697320756e726573657276656420696e207468652073656e646572206163636f756e742e20546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f20616e64207468652073656e646572206d757374206f776e2074686520696e6465782e202d2060696e646578603a2074686520696e64657820746f2062652066726565642e2054686973206d757374206265206f776e6564206279207468652073656e6465722e20456d6974732060496e646578467265656460206966207375636365737366756c2e202d204f6e652072657365727665206f7065726174696f6e2e2041737369676e20616e20696e64657820616c7265616479206f776e6564206279207468652073656e64657220746f20616e6f74686572206163636f756e742e205468652062616c616e6365207265736572766174696f6e206973206566666563746976656c79207472616e7366657272656420746f20746865206e6577206163636f756e742e20546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2e202d2060696e646578603a2074686520696e64657820746f2062652072652d61737369676e65642e2054686973206d757374206265206f776e6564206279207468652073656e6465722e202d204f6e65207472616e73666572206f7065726174696f6e2e6e6577543a3a4163636f756e744964696e646578543a3a4163636f756e74496e6465782041737369676e20616e2070726576696f75736c7920756e61737369676e656420696e6465782e205061796d656e743a20604465706f736974602069732072657365727665642066726f6d207468652073656e646572206163636f756e742e202d2060696e646578603a2074686520696e64657820746f20626520636c61696d65642e2054686973206d757374206e6f7420626520696e207573652e0000000000c16c1200080000000102000000000000248212000f00000000000000288312001c00000000000000000000000000000000000000c8b012004483120000000000000000005483120001000000000000000000000028543a3a4163636f756e7449642c2042616c616e63654f663c543e293c0000000000000001000000510000005c8312002200000020546865206c6f6f6b75702066726f6d20696e64657820746f206163636f756e742e417574686f72697479446973636f766572794b657973417574686f7273686970446964536574556e636c65734261626545706f6368496e646578417574686f72697469657347656e65736973536c6f7443757272656e74536c6f7452616e646f6d6e6573734e65787452616e646f6d6e6573735365676d656e74496e646578556e646572436f6e737472756374696f6e746f6f206d616e7920696e737472756374696f6e734e6f6e2d656d7074792066756e6374696f6e20626f6479206578706563746564008c8412000f0000009b841200020000009d84120003000000617373657274696f6e206661696c65643a20636f6e746578742e6672616d655f737461636b2e69735f656d7074792829417420696e737472756374696f6e202840293a2043616e2774206465636f6465207761736d20636f64654d6f64756c65206973206e6f742076616c69646d6f64756c65206465636c6172657320696e7465726e616c206d656d6f72796d756c7469706c65207461626c6573206465636c617265647461626c652065786365656473206d6178696d756d2073697a6520616c6c6f776564757365206f6620666c6f6174696e6720706f696e74207479706520696e2066756e6374696f6e20747970657320697320666f7262696464656e757365206f6620666c6f6174696e6720706f696e74207479706520696e206c6f63616c7320697320666f7262696464656e757365206f6620666c6f6174696e6720706f696e74207479706520696e20676c6f62616c7320697320666f7262696464656e67617320696e737472756d656e746174696f6e206661696c6564737461636b2068656967687420696e737472756d656e746174696f6e206661696c656463616c6c6465706c6f796465706c6f792066756e6374696f6e2069736e2774206578706f72746564756e6b6e6f776e206578706f72743a20657870656374696e67206f6e6c79206465706c6f7920616e642063616c6c2066756e6374696f6e7366756e6374696f6e206861732061206e6f6e2d6578697374656e7420747970656578706f72742072656665727320746f206e6f6e2d6578697374656e742066756e6374696f6e657870656374656420612066756e6374696f6e656e74727920706f696e7420706f696e747320746f20616e20696d706f727465642066756e6374696f6e656e74727920706f696e74206861732077726f6e67207369676e617475726563616c6c2066756e6374696f6e2069736e2774206578706f727465646572726f722073657269616c697a696e6720696e737472756d656e746564206d6f64756c6552657475726e207479706573206c656e6774682073686f756c642062652030206f7220310000ec8912001e0000000a8a12001f00000066756e6374696f6e5f73656374696f6e5f6c656e20213d20303b2071656400008f8912005d000000d10000002000000066756e6374696f6e5f73656374696f6e5f6c656e20213d20303b2066756e6374696f6e5f73656374696f6e5f6c656e203d3d20636f64655f73656374696f6e5f6c656e3b207165648f8912005d000000d40000001c000000758912001a000000508912000a0000005a8912001b00000073746172742066756e6374696f6e20657870656374656420746f20686176652074797065205b5d202d3e205b5d0000003f891200110000001f89120020000000ff88120020000000d78812002800000070617373697665206d656d6f7279207365676d656e747320617265206e6f7420737570706f727465647365676d656e74206f66667365742073686f756c642072657475726e204933327061737369766520656c656d656e74207365676d656e747320617265206e6f7420737570706f72746564746f6f206d616e79206d656d6f727920726567696f6e7320696e20696e6465782073706163653a20746f6f206d616e79207461626c657320696e20696e6465782073706163653a20747279696e6720746f20696d706f7274206d757461626c6520676c6f62616c206475706c6963617465206578706f72742046756e6374696f6e20232072656164696e672f76616c69646174696f6e206572726f723a204d697373696e6720626f647920666f722066756e6374696f6e202f686f6d652f616e6472652f2e636172676f2f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f7761736d692d76616c69646174696f6e2d302e332e302f7372632f6c69622e72736c656e677468206f662066756e6374696f6e2073656374696f6e206973202c207768696c65206c656e206f6620636f64652073656374696f6e206973206578745f7365745f73746f726167656578745f6765745f73746f726167656578745f63616c6c6578745f696e7374616e74696174656578745f72657475726e6578745f63616c6c65726578745f616464726573736578745f6761735f70726963656578745f6761735f6c6566746578745f62616c616e63656578745f76616c75655f7472616e736665727265646578745f72616e646f6d6578745f6e6f776578745f6d696e696d756d5f62616c616e63656578745f746f6d6273746f6e655f6465706f7369746578745f64697370617463685f63616c6c6578745f726573746f72655f746f6578745f736372617463685f73697a656578745f736372617463685f726561646578745f736372617463685f77726974656578745f6465706f7369745f6576656e746578745f7365745f72656e745f616c6c6f77616e63656578745f72656e745f616c6c6f77616e63656578745f7072696e746c6e6578745f626c6f636b5f6e756d6265726578745f6765745f72756e74696d655f73746f72616765436f6e74726163744761735370656e7443757272656e745363686564756c654163636f756e74436f756e74657200000000000100000002000000040000000800000010000000200000005075626c696350726f70436f756e745265666572656e64756d436f756e7444656d6f63726163794c6f77657374556e62616b65644c6173745461626c656457617345787465726e616c50687261676d656e456c656374696f6e456c656374696f6e526f756e6473496e697469616c697a6564000000000000ec8c12000e00000000000000fc8c1200010000000000000000000000048d12000100000000000000000000000c8d12000600000000000000c8b01200000000000000000000000000148d12000100000000000000000000001c8d12000700000000000000c8b01200000000000000000000000000248d120001000000000000004e6577417574686f72697469657300009f8d12000d0000007b8d1200240000005061757365640000548d120027000000526573756d6564002c8d1200280000002043757272656e7420617574686f726974792073657420686173206265656e20726573756d65642e2043757272656e7420617574686f726974792073657420686173206265656e207061757365642e204e657720617574686f726974792073657420686173206265656e206170706c6965642e417574686f726974794c69737443757272656e7453657449644772616e64706146696e616c697479536574496453657373696f6e496d4f6e6c696e655265636569766564486561727462656174734f6666656e6365735265706f72747342794b696e64496e6465780000000000348e120007000000000000003c8e12000200000000000000000000004c8e120002000000000000004f6666656e636500ff8e120004000000038f12000e0000005c8e120055000000b18e12004e00000020546865726520697320616e206f6666656e6365207265706f72746564206f662074686520676976656e20606b696e64602068617070656e656420617420746865206073657373696f6e5f696e6465786020616e6420286b696e642d7370656369666963292074696d6520736c6f742e2054686973206576656e74206973206e6f74206465706f736974656420666f72206475706c696361746520736c61736865732e4b696e644f706171756554696d65536c6f7453746f72656452616e676553657373696f6e43757272656e74496e6465785175657565644368616e67656444697361626c656456616c696461746f72730000000000007c8f12000a00000000000000888f1200010000000000000000000000908f120002000000000000004e657753657373696f6e0000179012000c000000a08f120055000000f58f120022000000204e65772073657373696f6e206861732068617070656e65642e204e6f746520746861742074686520617267756d656e74206973207468652073657373696f6e20696e6465782c206e6f742074686520626c6f636b206e756d626572206173207468652074797065206d6967687420737567676573742e53657373696f6e496e646578486973746f7279446570746856616c696461746f72436f756e744d696e696d756d56616c696461746f72436f756e7443757272656e7445726145726173537461727453657373696f6e496e646578466f726365457261536c6173685265776172644672616374696f6e426f6e646564457261734561726c69657374556e6170706c696564536c61736853746f7261676556657273696f6e43757272656e74457261537461727453657373696f6e496e64657843757272656e74457261506f696e74734561726e65645374616b696e674973557067726164656474696d737461703054696d657374616d7020696e686572656e742064617461206973206e6f742070726f76696465642e496e76616c69642074696d657374616d7020696e686572656e74206461746120656e636f64696e672e54696d657374616d7044696455706461746542616c616e6365734e6578744665654d756c7469706c696572547265617375727950726f706f73616c436f756e74417070726f76616c7300003c00000004000000040000000a00000042725461626c65446174617461626c653c00000004000000040000000a01000064656661756c744636345265696e74657270726574493634556e726561636861626c654e6f70426c6f636b003c00000004000000040000000b0100004c6f6f704966456c7365456e6442724272496642725461626c6500003c00000004000000040000000c01000052657475726e43616c6c43616c6c496e64697265637400003c0000000400000004000000d800000044726f7053656c6563744765744c6f63616c5365744c6f63616c5465654c6f63616c476574476c6f62616c536574476c6f62616c4933324c6f61644936344c6f61644633324c6f61644636344c6f61644933324c6f616438534933324c6f616438554933324c6f61643136534933324c6f61643136554936344c6f616438534936344c6f616438554936344c6f61643136534936344c6f61643136554936344c6f61643332534936344c6f616433325549333253746f726549363453746f726546333253746f726546363453746f726549333253746f72653849333253746f7265313649363453746f72653849363453746f7265313649363453746f7265333243757272656e744d656d6f727947726f774d656d6f7279493332436f6e7374003c00000004000000040000000d010000493634436f6e73743c00000004000000040000000e010000463332436f6e7374463634436f6e73743c00000004000000040000002b00000049333245717a49333245714933324e654933324c74534933324c74554933324774534933324774554933324c65534933324c655549333247655349333247655549363445717a49363445714936344e654936344c74534936344c74554936344774534936344774554936344c65534936344c655549363447655349363447655546333245714633324e654633324c7446333247744633324c65463332476546363445714636344e654636344c7446363447744636344c654636344765493332436c7a49333243747a493332506f70636e744933324164644933325375624933324d756c493332446976534933324469765549333252656d5349333252656d55493332416e644933324f72493332586f7249333253686c4933325368725349333253687255493332526f746c493332526f7472493634436c7a49363443747a493634506f70636e744936344164644936345375624936344d756c493634446976534936344469765549363452656d5349363452656d55493634416e644936344f72493634586f7249363453686c4936345368725349363453687255493634526f746c493634526f74724633324162734633324e65674633324365696c463332466c6f6f724633325472756e634633324e656172657374463332537172744633324164644633325375624633324d756c4633324469764633324d696e4633324d6178463332436f70797369676e4636344162734636344e65674636344365696c463634466c6f6f724636345472756e634636344e656172657374463634537172744636344164644636345375624636344d756c4636344469764636344d696e4636344d6178463634436f70797369676e493332577261704936344933325472756e63534633324933325472756e63554633324933325472756e63534636344933325472756e6355463634493634457874656e6453493332493634457874656e64554933324936345472756e63534633324936345472756e63554633324936345472756e63534636344936345472756e6355463634463332436f6e7665727453493332463332436f6e7665727455493332463332436f6e7665727453493634463332436f6e766572745549363446333244656d6f7465463634463634436f6e7665727453493332463634436f6e7665727455493332463634436f6e7665727453493634463634436f6e766572745549363446363450726f6d6f74654633324933325265696e746572707265744633324936345265696e746572707265744636344633325265696e7465727072657449333200003c00000004000000040000000a0000003c00000004000000040000000f0100004636344933324936344633324e6f526573756c7456616c7565000000bc9712000b000000492f4f204572726f723a20496e76616c696444617461547261696c696e6744617461556e6578706563746564456f66547269656420746f20736872696e6b20746f2061206c6172676572206361706163697479536f6d654e6f6e65003c00000004000000040000001001000078991200120000008a9912000c0000006066756e635f696478602073686f756c6420636f6d652066726f6d20606e6565645f7468756e6b73603b0a09090909606e6565645f7468756e6b736020697320706f70756c617465642077697468207468652073616d65206974656d73207468617420696e20607265706c6163656d656e745f6d6170603b0a09090909716564109912006800000050000000190000004174207468697320706f696e7420616e20696e646578206d7573742062652061737369676e656420746f2065616368207468756e6b0000001099120068000000890000001d0000002f686f6d652f616e6472652f2e636172676f2f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f707761736d2d7574696c732d302e31322e302f7372632f737461636b5f6865696768742f7468756e6b2e727366756e6374696f6e207769746820696478202069736e277420666f756e64617373657274696f6e206661696c65643a20656467652e686569676874203d3d2073656c662e686569676874202d2031617373657274696f6e206661696c65643a2073656c662e6c656e2829203c204341504143495459617373657274696f6e206661696c65643a202173656c662e69735f7368617265645f726f6f742829617373657274696f6e206661696c65643a202173656c662e6e6f64652e69735f7368617265645f726f6f742829617373657274696f6e206661696c65643a20656467652e686569676874203d3d2073656c662e6e6f64652e686569676874202d203100889a12001e00000002000000020000003c3a3a636f72653a3a6d6163726f733a3a70616e6963206d6163726f733e617373657274696f6e206661696c65643a20656e64203c3d206c656e4672616d6569735f706f6c796d6f72706869630000003c000000040000000400000011010000656e645f61726974790000003c00000004000000040000000a0000006272616e63685f617269747973746172745f6865696768744e6f2066756e6374696f6e2073656374696f6e4e6f20636f64652073656374696f6e4e6f20747970652073656374696f6e0000007c9d12000a00000046756e6374696f6e206973206e6f7420666f756e6420696e2066756e632073656374696f6e000000709d12000c00000046756e6374696f6e20626f647920666f722074686520696e6465782069736e277420666f756e6400349d12000b000000737461636b206d757374206265206e6f6e2d656d70747900299d12000b000000df9c120006000000737461636b206f766572666c6f774172697479206f6620616c6c206a756d702d74617267657473206d75737420626520657175616c54797065206e6f7420666f756e6400d89c1200070000003c9c12006d000000c8000000170000002f686f6d652f616e6472652f2e636172676f2f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f707761736d2d7574696c732d302e31322e302f7372632f737461636b5f6865696768742f6d61785f6865696768742e72736d61785f686569676874707761736d5f7574696c733a3a737461636b5f6865696768743a3a6d61785f6865696768747472756e633a20707573683a20000000249d120005000000747279696e6720746f20706f70206d6f72652076616c756573207468616e20707573686564737461636b20756e646572666c6f77706f703a20756e726561636861626c65706f705f6672616d653a20636f6e74726f6c20737461636b20697320656d707479636f6e74726f6c20737461636b206f75742d6f662d626f756e6473707573685f6672616d653a2066756e635f6964783a20000054a11200480000000e0200002300000054a11200480000000f02000023000000617373657274696f6e206661696c65643a206d6964203c3d206c656ed8b01200490000000a00000009000000e49d1200490000008e0200001d0000002f72757374632f373563663431616662343638313532363131323132323731626165303236393438636433626134362f7372632f6c6962636f72652f736c6963652f736f72742e7273000000e49d120049000000a100000030000000e49d120049000000a400000030000000656e766761730000689e12005d000000120100001c0000002f686f6d652f616e6472652f2e636172676f2f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f707761736d2d7574696c732d302e31322e302f7372632f6761732f6d6f642e72736c6173745f696e6465782069732067726561746572207468616e20303b206c6173745f696e64657820697320737461636b2073697a65202d20313b20716564689e12005d000000a600000026000000519f12006600000010010000200000002c9f12002500000043616c6c20746f2066756e6374696f6e2074686174206f75742d6f662d626f756e64733a202f686f6d652f616e6472652f2e636172676f2f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f707761736d2d7574696c732d302e31322e302f7372632f737461636b5f6865696768742f6d6f642e7273546869732073686f756c64206265206120696e646578206f66206120646566696e65642066756e6374696f6e44756520746f2076616c69646174696f6e20636f64652073656374696f6e2073686f756c642065786973747346756e6374696f6e20626f6479206973206f7574206f6620626f756e647366756e6374696f6e20696d706f727420636f756e74206973206e6f74207a65726f3b20696d706f72742073656374696f6e206d757374206578697374733b2071656400519f120066000000590100000900000066756e635f696478206973206c657373207468616e2066756e6374696f6e20696d706f72747320636f756e743b0a090909096e74682066756e6374696f6e20696d706f7274206d7573742062652060536f6d65603b0a09090909716564000000f0ad12001200000035a112000f00000008a112000a00000012a112001400000026a112000f0000005369676e61747572652020287370656369666965642062792066756e6320292069736e277420646566696e6564206973206e6f7420646566696e656454a1120048000000280b00000a0000002f72757374632f373563663431616662343638313532363131323132323731626165303236393438636433626134362f7372632f6c6962636f72652f736c6963652f6d6f642e727354a11200480000002e0b00000e000000bca112004f000000440000000d0000002f686f6d652f616e6472652f576f726b62656e63682f706172697479746563682f7375627374726174652f7072696d6974697665732f61726974686d657469632f7372632f62696775696e742e72730000000000617474656d707420746f20646976696465206279207a65726f63616e6e6f74206669742061206e756d62657220696e746f2075313238616c7265616479206d757461626c7920626f72726f77656400003c0000000000000001000000f400000080a21200430000001e030000090000002f72757374632f373563663431616662343638313532363131323132323731626165303236393438636433626134362f7372632f6c6962636f72652f63656c6c2e7273616c726561647920626f72726f776564003c0000000000000001000000f500000080a21200430000006e0300000900000072656d696e646572206f6620646976206279206320697320616c77617973206c657373207468616e20633b20716564003c0000000800000004000000500000005da3120056000000680000001b000000726573756c742063616e6e6f742066697420696e20753132382f686f6d652f616e6472652f576f726b62656e63682f706172697479746563682f7375627374726174652f7072696d6974697665732f61726974686d657469632f7372632f68656c706572735f3132386269742e727362616265736c6f74436f756c64206e6f74206465636f64652072657175657374656420696e686572656e742074797065214241424520696e686572656e742064617461206e6f7420666f756e6410a4120054000000cd0000000d0000002f686f6d652f616e6472652f576f726b62656e63682f706172697479746563682f7375627374726174652f7072696d6974697665732f72756e74696d652d696e746572666163652f7372632f696d706c732e72733c000000000000000100000040000000486f737420746f207761736d2076616c7565732061726520656e636f64656420636f72726563746c793b207165640000b4a412005600000008010000090000002f686f6d652f616e6472652f576f726b62656e63682f706172697479746563682f7375627374726174652f7072696d6974697665732f72756e74696d652d696e746572666163652f7372632f706173735f62792e727300003c00000000000000010000004000000072756e74696d6552756e74696d65206d656d6f7279206578686175737465642e2041626f7274696e670000000000000000000000617474656d707420746f20646976696465206279207a65726f0000007ca51200500000005f0000002b0000002f686f6d652f616e6472652f576f726b62656e63682f706172697479746563682f7375627374726174652f7072696d6974697665732f72756e74696d652f7372632f67656e657269632f6572612e727348617368206e6f7420657175616c426164206f726967696e43616e206e6f74206c6f6f6b757044697370617463684572726f723c7761736d3a73747269707065643e5472616e73616374696f6e20776f756c642065786861757374732074686520626c6f636b206c696d6974735472616e73616374696f6e2068617320616e20616e6369656e7420626972746820626c6f636b5472616e73616374696f6e20686173206120626164207369676e61747572655472616e73616374696f6e206973206f757464617465645472616e73616374696f6e2077696c6c2062652076616c696420696e2074686520667574757265496e6162696c69747920746f2070617920736f6d6520666565732028652e672e206163636f756e742062616c616e636520746f6f206c6f77295472616e73616374696f6e2063616c6c206973206e6f74206578706563746564496e76616c69645472616e73616374696f6e20637573746f6d206572726f72436f756c64206e6f742066696e6420616e20756e7369676e65642076616c696461746f7220666f722074686520756e7369676e6564207472616e73616374696f6e436f756c64206e6f74206c6f6f6b757020696e666f726d6174696f6e20726571756972656420746f2076616c696461746520746865207472616e73616374696f6e556e6b6e6f776e5472616e73616374696f6e20637573746f6d206572726f72696e7465726e616c206572726f723a20656e746572656420756e726561636861626c6520636f646500000010a81200530000005a000000120000002f686f6d652f616e6472652f576f726b62656e63682f706172697479746563682f7375627374726174652f7072696d6974697665732f73616e64626f782f7372632f2e2e2f776974686f75745f7374642e72730010a812005300000068000000120000004475706c69636174655265706f72744f6666656e63654572726f726d616b655f746f705f6672616d655f706f6c796d6f72706869632069732063616c6c6564207769746820656d707479206672616d6520737461636b0000120100000c0000000400000013010000f7aa12005e0000004204000011000000746869732066756e6374696f6e2063616e27742062652063616c6c6564207769746820656d707479206672616d6520737461636bf7aa12005e000000b2040000050000004d6973706c6163656420656c736520696e737472756374696f6e000077aa120047000000beaa1200050000003baa12003700000072aa12000500000006aa120017000000fda9120009000000aeac120014000000e5a9120018000000fda9120009000000aeac120014000000b4a912001d000000d1a9120013000000e4a9120001000000546f6f206c61726765206d656d6f727920616c69676e6d656e7420325e20286578706563746564206174206d6f73742029547279696e6720746f2075706461746520676c6f62616c20206f66207479706520547279696e6720746f20757064617465206c6f63616c2053706563696669630000003c00000004000000040000000f010000416e794c6162656c7320696e2062725f7461626c6520706f696e747320746f20626c6f636b206f6620646966666572656e742074797065733a2020616e6420496620626c6f636b20776974686f757420656c736520726571756972656420746f2068617665204e6f526573756c7420626c6f636b20747970652e204275742069742068617320207479706500d4aa120018000000ecaa12000b000000556e657870656374656420737461636b20686569676874202c206578706563746564202f686f6d652f616e6472652f2e636172676f2f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f7761736d692d76616c69646174696f6e2d302e332e302f7372632f66756e632e7273547279696e6720746f2061636365737320706172656e74206672616d6520737461636b2076616c7565732e90ab120017000000a7ab12001600000045787065637465642076616c7565206f66207479706520206f6e20746f70206f6620737461636b2e20476f7420000000c8ab120007000000537461636b3a20000000010052ac12002400000028ac1200060000002eac12000e0000003cac12001600000004ac12002400000028ac1200060000006d6178696d756d206d656d6f72792073697a65206d757374206265206174206d6f7374202070616765736d6178696d756d206c696d697420206973206c657373207468616e206d696e696d756d20696e697469616c206d656d6f72792073697a65206d757374206265206174206d6f737420000088ac120026000000aeac120014000000547279696e6720746f20696e697469616c697a65207661726961626c65206f6620747970652020776974682076616c7565206f66207479706520496e69742065787072657373696f6e2073686f756c6420616c776179732062652077697468206c656e67746820324e6f6e20636f6e7374616e74206f70636f646520696e20696e6974206578707259ad1200070000006bad12002200000059ad12000700000060ad12000b00000045787072657373696f6e20646f65736e277420656e647320776974682060656e6460206f70636f6465476c6f62616c20206973206d757461626c6520646f65736e277420657869737473206f72206e6f742079657420646566696e6564000000a0ad120010000000b0ad12000f0000004d656d6f727920617420696e6465782020646f65736e27742065786973747300d0ad12000f000000b0ad12000f0000005461626c6520617420696e6465782000f0ad120012000000b0ad12000f00000046756e6374696f6e20617420696e64657820000014ae12000e000000b0ad12000f0000005479706520617420696e64657820000082ae120010000000b0ad12000f00000054ae12001000000074ae12000e00000054ae12001000000064ae120010000000457870656374656420676c6f62616c2020746f20626520696d6d757461626c6520746f206265206d757461626c65476c6f62616c20617420696e646578206e6f6e2d656d70747920737461636b2065787065637465640000bcae120020000000dcae120012000000747279696e6720746f206765742076616c756520617420706f736974696f6e20206f6e20737461636b206f662073697a6520636865636b656420636f75706c65206f66206c696e65732061626f7665001caf12005f0000004b0000000c0000002f686f6d652f616e6472652f2e636172676f2f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f7761736d692d76616c69646174696f6e2d302e332e302f7372632f737461636b2e72730084af120015000000657863656564656420737461636b206c696d697420000000c8b01200000000004572726f720000003c0000000400000004000000140100004c6f63616c732072616e6765206e6f7420696e2033322d6269742072616e6765f4af12002200000016b01200150000002bb0120007000000547279696e6720746f20616363657373206c6f63616c207769746820696e64657820207768656e20746865726520617265206f6e6c7920206c6f63616c7300004cb012002d00000079b012000c00000085b0120003000000617373657274696f6e206661696c65643a2060286c656674203d3d20726967687429600a20206c6566743a2060602c0a2072696768743a2060603a2090b012003400000064657374696e6174696f6e20616e6420736f7572636520736c69636573206861766520646966666572656e74206c656e6774687300000000d8b0120049000000120000000d0000002f72757374632f373563663431616662343638313532363131323132323731626165303236393438636433626134362f7372632f6c6962636f72652f6d6163726f732f6d6f642e72730041a4e2ca000b0800000000000000000041ace2ca000b08cc121000cc12100000f2c404046e616d6501e9c404f10600196578745f6c6f6767696e675f6c6f675f76657273696f6e5f31011e6578745f68617368696e675f74776f785f3132385f76657273696f6e5f3102196578745f73746f726167655f6765745f76657273696f6e5f3103206578745f68617368696e675f626c616b65325f3235365f76657273696f6e5f3104196578745f73746f726167655f7365745f76657273696f6e5f31051b6578745f73746f726167655f636c6561725f76657273696f6e5f31061d6578745f68617368696e675f74776f785f36345f76657273696f6e5f3107206578745f68617368696e675f626c616b65325f3132385f76657273696f6e5f31081d6578745f6d6973635f7072696e745f757466385f76657273696f6e5f3109206578745f73616e64626f785f6d656d6f72795f6e65775f76657273696f6e5f310a256578745f73616e64626f785f6d656d6f72795f74656172646f776e5f76657273696f6e5f310b216578745f73616e64626f785f696e7374616e74696174655f76657273696f6e5f310c1c6578745f73616e64626f785f696e766f6b655f76657273696f6e5f310d276578745f73616e64626f785f696e7374616e63655f74656172646f776e5f76657273696f6e5f310e206578745f73746f726167655f6368696c645f726f6f745f76657273696f6e5f310f1f6578745f73746f726167655f6368696c645f7365745f76657273696f6e5f31101f6578745f73746f726167655f6368696c645f6765745f76657273696f6e5f3111216578745f73746f726167655f6368696c645f636c6561725f76657273696f6e5f3112226578745f6d6973635f72756e74696d655f76657273696f6e5f76657273696f6e5f3113226578745f73746f726167655f636c6561725f7072656669785f76657273696f6e5f3114236578745f63727970746f5f737232353531395f7665726966795f76657273696f6e5f3115286578745f6f6666636861696e5f6c6f63616c5f73746f726167655f6765745f76657273696f6e5f3116346578745f6f6666636861696e5f6c6f63616c5f73746f726167655f636f6d706172655f616e645f7365745f76657273696f6e5f3117286578745f6f6666636861696e5f6c6f63616c5f73746f726167655f7365745f76657273696f6e5f31181e6578745f73746f726167655f6e6578745f6b65795f76657273696f6e5f31191c6578745f6d6973635f7072696e745f6e756d5f76657273696f6e5f311a236578745f63727970746f5f656432353531395f7665726966795f76657273696f6e5f311b1a6578745f73746f726167655f726f6f745f76657273696f6e5f311c226578745f73746f726167655f6368616e6765735f726f6f745f76657273696f6e5f311d286578745f73746f726167655f6368696c645f73746f726167655f6b696c6c5f76657273696f6e5f311e206578745f73616e64626f785f6d656d6f72795f6765745f76657273696f6e5f311f206578745f73616e64626f785f6d656d6f72795f7365745f76657273696f6e5f31201c6578745f6d6973635f7072696e745f6865785f76657273696f6e5f3121236578745f6f6666636861696e5f69735f76616c696461746f725f76657273696f6e5f3122256578745f63727970746f5f656432353531395f67656e65726174655f76657273696f6e5f3123256578745f63727970746f5f737232353531395f67656e65726174655f76657273696f6e5f31242a6578745f747269655f626c616b65325f3235365f6f7264657265645f726f6f745f76657273696f6e5f3125296578745f6f6666636861696e5f7375626d69745f7472616e73616374696f6e5f76657273696f6e5f3126246578745f6f6666636861696e5f6e6574776f726b5f73746174655f76657273696f6e5f31271e6578745f616c6c6f6361746f725f6d616c6c6f635f76657273696f6e5f31281c6578745f616c6c6f6361746f725f667265655f76657273696f6e5f31291a6578745f73746f726167655f726561645f76657273696f6e5f312a286578745f63727970746f5f737232353531395f7075626c69635f6b6579735f76657273696f6e5f312b216578745f63727970746f5f737232353531395f7369676e5f76657273696f6e5f312c376578745f63727970746f5f736563703235366b315f65636473615f7265636f7665725f636f6d707265737365645f76657273696f6e5f312d0c5f5f727573745f616c6c6f632e0a5f5f72675f616c6c6f632f0e5f5f727573745f6465616c6c6f63300c5f5f72675f6465616c6c6f63310e5f5f727573745f7265616c6c6f63320c5f5f72675f7265616c6c6f6333135f5f727573745f616c6c6f635f7a65726f656434115f5f72675f616c6c6f635f7a65726f65643509686173685f746573743633616c6c6f633a3a616c6c6f633a3a68616e646c655f616c6c6f635f6572726f723a3a68393863633632326233333565336231383708727573745f6f6f6d3834616c6c6f633a3a7261775f7665633a3a63617061636974795f6f766572666c6f773a3a68393266393538663031366165396534303929636f72653a3a70616e69636b696e673a3a70616e69633a3a68373766616436613063346238343866633a25616c6c6f633a3a666d743a3a666f726d61743a3a68363732663232663234366533383334373b36636f72653a3a70616e69636b696e673a3a70616e69635f626f756e64735f636865636b3a3a68636431353737666636356361353266333c23636f72653a3a666d743a3a77726974653a3a68633335393734306635326363326164363d48616c6c6f633a3a7261775f7665633a3a5261775665633c542c413e3a3a616c6c6f636174655f696e3a3a7b7b636c6f737572657d7d3a3a68303233313133306636316466393435303e33636f72653a3a6f7074696f6e3a3a6578706563745f6e6f6e655f6661696c65643a3a68333630623065356662623963666665633f3a3c266d7574205720617320636f72653a3a666d743a3a57726974653e3a3a77726974655f7374723a3a6836663863346338626263383935333233403b3c266d7574205720617320636f72653a3a666d743a3a57726974653e3a3a77726974655f636861723a3a6839653438653033343234353036333435413a3c266d7574205720617320636f72653a3a666d743a3a57726974653e3a3a77726974655f666d743a3a68653030326533356637393162303633354239636f72653a3a6f70733a3a66756e6374696f6e3a3a466e4f6e63653a3a63616c6c5f6f6e63653a3a6864643862366261353261353436373866432d636f72653a3a70616e69636b696e673a3a70616e69635f666d743a3a6831333338646430613363363164376664444e636f72653a3a666d743a3a6e756d3a3a696d703a3a3c696d706c20636f72653a3a666d743a3a446973706c617920666f72207533323e3a3a666d743a3a6861313066393132373130663165326561452f636f72653a3a666d743a3a6e756d3a3a696d703a3a666d745f7536343a3a68353639313534323039373433303839314611727573745f626567696e5f756e77696e6447313c5420617320636f72653a3a616e793a3a416e793e3a3a747970655f69643a3a68343037333235646131643963636165624835636f72653a3a666d743a3a466f726d61747465723a3a7061645f696e74656772616c3a3a68323834343736336162386631306563654943636f72653a3a666d743a3a466f726d61747465723a3a7061645f696e74656772616c3a3a77726974655f7072656669783a3a68383763663261376232366534656335384a34636f72653a3a736c6963653a3a736c6963655f696e6465785f6c656e5f6661696c3a3a68653436373831333337323763623431374b36636f72653a3a736c6963653a3a736c6963655f696e6465785f6f726465725f6661696c3a3a68643861366261623162346633313438384c2c636f72653a3a666d743a3a466f726d61747465723a3a7061643a3a68333361366338623734343139326330314d2e636f72653a3a7374723a3a736c6963655f6572726f725f6661696c3a3a68623839616531653339656361343530354e323c265420617320636f72653a3a666d743a3a446973706c61793e3a3a666d743a3a68623939393638303239646133613138344f4a3c636f72653a3a6f70733a3a72616e67653a3a52616e67653c4964783e20617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a683561393164656261646135386437353550323c6368617220617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a68366563306131623562303730333438635145636f72653a3a636861723a3a6d6574686f64733a3a3c696d706c20636861723e3a3a6573636170655f64656275675f6578743a3a68383034383633316465336536373833665249636f72653a3a666d743a3a6e756d3a3a3c696d706c20636f72653a3a666d743a3a446562756720666f72207573697a653e3a3a666d743a3a683166353865633261653138373133376453453c636f72653a3a63656c6c3a3a426f72726f774572726f7220617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a683137376363363338653065323863623354483c636f72653a3a63656c6c3a3a426f72726f774d75744572726f7220617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6838326437643263323466373735373638552e636f72653a3a6f7074696f6e3a3a6578706563745f6661696c65643a3a683738353666646133626263333636383456303c265420617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a686639303533386264313738613763376357323c265420617320636f72653a3a666d743a3a446973706c61793e3a3a666d743a3a683439623434633834353630373163363358323c265420617320636f72653a3a666d743a3a446973706c61793e3a3a666d743a3a683231336530316139336632343132356459533c636f72653a3a666d743a3a6275696c646572733a3a5061644164617074657220617320636f72653a3a666d743a3a57726974653e3a3a77726974655f7374723a3a68646237313735633237633365313235655a2e636f72653a3a736c6963653a3a6d656d6368723a3a6d656d6368723a3a68373066373266326162393430373865325b3a636f72653a3a666d743a3a6275696c646572733a3a44656275675374727563743a3a6669656c643a3a68306435376133613939323933306233615c2f636f72653a3a666d743a3a57726974653a3a77726974655f636861723a3a68333432366263386131623034653464615d2e636f72653a3a666d743a3a57726974653a3a77726974655f666d743a3a68343936633231613562393662333161325e3a3c266d7574205720617320636f72653a3a666d743a3a57726974653e3a3a77726974655f7374723a3a68303039303634333334616237343464665f3b3c266d7574205720617320636f72653a3a666d743a3a57726974653e3a3a77726974655f636861723a3a6833343638386131613664333462326163603a3c266d7574205720617320636f72653a3a666d743a3a57726974653e3a3a77726974655f666d743a3a68613132306366623537383439663936346139636f72653a3a666d743a3a6275696c646572733a3a44656275675475706c653a3a6669656c643a3a68393439613634303135356633373735646237636f72653a3a666d743a3a6275696c646572733a3a44656275675365743a3a656e7472793a3a683166643632636337623839363433373463443c636f72653a3a666d743a3a417267756d656e747320617320636f72653a3a666d743a3a446973706c61793e3a3a666d743a3a683238303438363465333036346131306664313c73747220617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6863643237666231643033333034356361658001636f72653a3a7374723a3a7472616974733a3a3c696d706c20636f72653a3a736c6963653a3a536c696365496e6465783c7374723e20666f7220636f72653a3a6f70733a3a72616e67653a3a52616e67653c7573697a653e3e3a3a696e6465783a3a7b7b636c6f737572657d7d3a3a68303433663863393439626236353431616627636f72653a3a7374723a3a66726f6d5f757466383a3a6834646334653364346237656265386433673e3c636f72653a3a666d743a3a4572726f7220617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a683130386535373466383838353564316468693c6672616d655f6d657461646174613a3a4465636f6465446966666572656e743c422c4f3e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a656e636f64655f746f3a3a6834316562646630616533643333366637696c3c7061726974795f7363616c655f636f6465633a3a636f6d706163743a3a436f6d706163743c543e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a656e636f64655f746f3a3a68336663333934616335346230356234356a693c6672616d655f6d657461646174613a3a4465636f6465446966666572656e743c422c4f3e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a656e636f64655f746f3a3a68316337346263393630653733653136636b483c5b545d206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a656e636f64655f746f3a3a68343931613463666566343639623533396c513c616c6c6f633a3a7665633a3a5665633c543e20617320616c6c6f633a3a7665633a3a53706563457874656e643c542c493e3e3a3a66726f6d5f697465723a3a68306364313866656265353166303365646d3a3c266d7574205720617320636f72653a3a666d743a3a57726974653e3a3a77726974655f7374723a3a68343737316336343830343137363934316e3b3c266d7574205720617320636f72653a3a666d743a3a57726974653e3a3a77726974655f636861723a3a68333534343436653634396539323631666f3a3c266d7574205720617320636f72653a3a666d743a3a57726974653e3a3a77726974655f666d743a3a6833393233353063636566316536346564704d3c6672616d655f737570706f72743a3a64656275673a3a52756e74696d654c6f67676572206173206c6f673a3a4c6f673e3a3a656e61626c65643a3a683564623261396535313563343135303671493c6672616d655f737570706f72743a3a64656275673a3a52756e74696d654c6f67676572206173206c6f673a3a4c6f673e3a3a6c6f673a3a686138653037336533326438323339333872486672616d655f737570706f72743a3a73746f726167653a3a6d6967726174696f6e3a3a686176655f73746f726167655f76616c75653a3a6833366531343164663733373465636366737c3c73705f72756e74696d655f696e746572666163653a3a706173735f62793a3a436f6465633c543e2061732073705f72756e74696d655f696e746572666163653a3a706173735f62793a3a506173734279496d706c3c543e3e3a3a66726f6d5f6666695f76616c75653a3a686134373561363161363032613162653174383c6c6f673a3a4e6f704c6f67676572206173206c6f673a3a4c6f673e3a3a656e61626c65643a3a683966343464666637613833316338383975343c6c6f673a3a4e6f704c6f67676572206173206c6f673a3a4c6f673e3a3a6c6f673a3a683865363439313661383933393933353476363c6c6f673a3a4e6f704c6f67676572206173206c6f673a3a4c6f673e3a3a666c7573683a3a686162393438313737346264643530633377fa01616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6e6f64653a3a48616e646c653c616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6e6f64653a3a4e6f64655265663c616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6e6f64653a3a6d61726b65723a3a4d75742c4b2c562c616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6e6f64653a3a6d61726b65723a3a4c6561663e2c616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6e6f64653a3a6d61726b65723a3a456467653e3a3a696e736572743a3a683263336231373539363764303637366678fe01616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6e6f64653a3a48616e646c653c616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6e6f64653a3a4e6f64655265663c616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6e6f64653a3a6d61726b65723a3a4d75742c4b2c562c616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6e6f64653a3a6d61726b65723a3a496e7465726e616c3e2c616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6e6f64653a3a6d61726b65723a3a456467653e3a3a696e736572743a3a6830383638633039313065353563356334793c70616c6c65745f7574696c6974793a3a4d6f64756c653c543e3a3a63616c6c5f66756e6374696f6e733a3a68383733376431643362656334333562387a3e70616c6c65745f7574696c6974793a3a4d6f64756c653c543e3a3a73746f726167655f6d657461646174613a3a68303765653961626364383630366163317b3e70616c6c65745f74696d657374616d703a3a4d6f64756c653c543e3a3a63616c6c5f66756e6374696f6e733a3a68363637636631366136643734363830637c4070616c6c65745f74696d657374616d703a3a4d6f64756c653c543e3a3a73746f726167655f6d657461646174613a3a68386661363063306661343163633362617d4970616c6c65745f74696d657374616d703a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a68383961353433353831363936353865367e9b013c70616c6c65745f74696d657374616d703a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a4d696e696d756d506572696f6444656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a68646163393737393237643333613666367f84017061726974795f7363616c655f636f6465633a3a636f6465633a3a696e6e65725f7475706c655f696d706c3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f646520666f72202850302c2051302c205230293e3a3a656e636f64655f746f3a3a68333461383963663132343165623365358001437061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653a3a7573696e675f656e636f6465643a3a683235393634646337663630303237376481013c7061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653a3a656e636f64653a3a68303139373762303532373164626634308201543c616c6c6f633a3a7665633a3a5665633c75383e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4f75747075743e3a3a77726974653a3a68363739653065373035366365356366658301437061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653a3a7573696e675f656e636f6465643a3a68363834626235623635363163663064318401437061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653a3a7573696e675f656e636f6465643a3a683862393339613337343030663964393985013c7061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653a3a656e636f64653a3a686336356132393564363835663262616386014a3c58206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a7573696e675f656e636f6465643a3a683065333563363139633931303433333387012b616c6c6f633a3a736c6963653a3a6d657267655f736f72743a3a6832313534326138626135366265366434880133616c6c6f633a3a736c6963653a3a3c696d706c205b545d3e3a3a636f6e6361743a3a68313933313032346664316364636637628901483c5b545d206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a656e636f64655f746f3a3a68313733383833323765613463636431658a015a3c70616c6c65745f7574696c6974793a3a43616c6c3c543e2061732073705f72756e74696d653a3a7472616974733a3a446973706174636861626c653e3a3a64697370617463683a3a68666535393232353336363265616638658b01553c6e6f64655f72756e74696d653a3a43616c6c2061732073705f72756e74696d653a3a7472616974733a3a446973706174636861626c653e3a3a64697370617463683a3a68643536616431303261373838643238308c01416672616d655f73797374656d3a3a4d6f64756c653c543e3a3a6465706f7369745f6576656e745f696e64657865643a3a68613965313735633163316362313863668d012b636f72653a3a7074723a3a64726f705f696e5f706c6163653a3a68613464643335613231313331613565348e012b636f72653a3a7074723a3a64726f705f696e5f706c6163653a3a68613464643335613231313331613565348f014670616c6c65745f7574696c6974793a3a4d6f64756c653c543e3a3a656e737572655f736f727465645f616e645f696e736572743a3a68633065356663353064303262346463399001437061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653a3a7573696e675f656e636f6465643a3a686561393132663633623339303266343391016e6e6f64655f72756e74696d653a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f646520666f72206e6f64655f72756e74696d653a3a43616c6c3e3a3a656e636f64655f746f3a3a68336138663861356164613466383134359201706672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a646f75626c655f6d61703a3a53746f72616765446f75626c654d61703a3a73746f726167655f646f75626c655f6d61705f66696e616c5f6b65793a3a68376161666364616433613232636436379301386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a68616463353738383431373232323436639401b2013c6672616d655f73797374656d3a3a4d6f64756c653c543e206173206672616d655f737570706f72743a3a7472616974733a3a53746f7265644d61703c3c54206173206672616d655f73797374656d3a3a54726169743e3a3a4163636f756e7449642c3c54206173206672616d655f73797374656d3a3a54726169743e3a3a4163636f756e74446174613e3e3a3a7472795f6d75746174655f6578697374733a3a68666364303961373765366364336237669501386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a68666536363833666630313930656235389601b2013c6672616d655f73797374656d3a3a4d6f64756c653c543e206173206672616d655f737570706f72743a3a7472616974733a3a53746f7265644d61703c3c54206173206672616d655f73797374656d3a3a54726169743e3a3a4163636f756e7449642c3c54206173206672616d655f73797374656d3a3a54726169743e3a3a4163636f756e74446174613e3e3a3a7472795f6d75746174655f6578697374733a3a68363330633432313765646234363636339701463c616c6c6f633a3a7665633a3a5665633c543e20617320636f72653a3a6f70733a3a64726f703a3a44726f703e3a3a64726f703a3a683466623865363364393563646466666698015f3c70616c6c65745f7574696c6974793a3a4d6f64756c653c543e206173206672616d655f6d657461646174613a3a4d6f64756c654572726f724d657461646174613e3a3a6d657461646174613a3a686466613364366631353063346536303499012b636f72653a3a7074723a3a64726f705f696e5f706c6163653a3a68366235346132656262326639353864659a01456672616d655f737570706f72743a3a7472616974733a3a4f6e556e62616c616e6365643a3a6f6e5f756e62616c616e6365643a3a68623532313131643833326533396266389b01743c70616c6c65745f62616c616e6365733a3a696d62616c616e6365733a3a4e65676174697665496d62616c616e63653c542c493e206173206672616d655f737570706f72743a3a7472616974733a3a54727944726f703e3a3a7472795f64726f703a3a68383737356336383865653434396134639c01386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a68306634356636333266666437643063349d01456672616d655f737570706f72743a3a7472616974733a3a5369676e6564496d62616c616e63653c422c503e3a3a6d657267653a3a68393662623738383763616438333232619e013c70616c6c65745f76657374696e673a3a4d6f64756c653c543e3a3a63616c6c5f66756e6374696f6e733a3a68313132303839386430396431623861389f013e70616c6c65745f76657374696e673a3a4d6f64756c653c543e3a3a73746f726167655f6d657461646174613a3a6832653235316535656332656263376634a0014770616c6c65745f76657374696e673a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a6836363239396433636663663135363163a1013d70616c6c65745f6964656e746974793a3a4d6f64756c653c543e3a3a63616c6c5f66756e6374696f6e733a3a6839383738623733653563336336636136a2013f70616c6c65745f6964656e746974793a3a4d6f64756c653c543e3a3a73746f726167655f6d657461646174613a3a6835316465343034333663323630303530a3016b3c70616c6c65745f6964656e746974793a3a5f5f47657442797465537472756374537562734f663c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6865393530656566386363623564353037a4012b636f72653a3a7074723a3a64726f705f696e5f706c6163653a3a6839353738373230303738626262323435a501820170616c6c65745f6964656e746974793a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f646520666f722070616c6c65745f6964656e746974793a3a4a756467656d656e743c42616c616e63653e3e3a3a656e636f64655f746f3a3a6830343064616363386165313530303933a6017c70616c6c65745f6964656e746974793a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f646520666f722070616c6c65745f6964656e746974793a3a4964656e74697479496e666f3e3a3a656e636f64655f746f3a3a6836666635353535373339306331376563a701573c70616c6c65745f6964656e746974793a3a44617461206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a656e636f64653a3a6863393165613464303563316365653461a801573c70616c6c65745f6964656e746974793a3a44617461206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a6831326333353561613466613863353634a901573c70616c6c65745f6964656e746974793a3a44617461206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a6837636133383066353032393432656232aa01437061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653a3a7573696e675f656e636f6465643a3a6834343765376131653638326162346635ab01437061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653a3a7573696e675f656e636f6465643a3a6834373339663661376137643761383736ac01437061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653a3a7573696e675f656e636f6465643a3a6837396366366664396334383433623737ad014a3c58206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a7573696e675f656e636f6465643a3a6831333131353531323962323761626339ae013970616c6c65745f76657374696e673a3a4d6f64756c653c543e3a3a7570646174655f6c6f636b3a3a6862616433633764356566626538333837af01303c265420617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6833626532653661366430373033386663b0018d013c70616c6c65745f62616c616e6365733a3a4d6f64756c653c542c493e206173206672616d655f737570706f72743a3a7472616974733a3a4c6f636b61626c6543757272656e63793c3c54206173206672616d655f73797374656d3a3a54726169743e3a3a4163636f756e7449643e3e3a3a7365745f6c6f636b3a3a6864323937343037326339613966383632b10190013c70616c6c65745f62616c616e6365733a3a4d6f64756c653c542c493e206173206672616d655f737570706f72743a3a7472616974733a3a4c6f636b61626c6543757272656e63793c3c54206173206672616d655f73797374656d3a3a54726169743e3a3a4163636f756e7449643e3e3a3a72656d6f76655f6c6f636b3a3a6838656161316666663131333030376336b2015b3c70616c6c65745f6964656e746974793a3a43616c6c3c543e2061732073705f72756e74696d653a3a7472616974733a3a446973706174636861626c653e3a3a64697370617463683a3a6861323235323539636461353338626634b301386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6839626231376662613334616432383034b401386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6839333431653764653064373838343462b5014373705f696f3a3a73746f726167653a3a65787465726e5f686f73745f66756e6374696f6e5f696d706c733a3a726561643a3a6862313536376130356164373062636539b601386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6836656165383638396261623039636436b701776672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a3c696d706c206672616d655f737570706f72743a3a73746f726167653a3a53746f726167654d61703c4b2c563e20666f7220473e3a3a72656d6f76653a3a6864613336353438356637663663623735b801437061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653a3a7573696e675f656e636f6465643a3a6830656637383365646363343165646235b901756672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a3c696d706c206672616d655f737570706f72743a3a73746f726167653a3a53746f726167654d61703c4b2c563e20666f7220473e3a3a74616b653a3a6832313031613265643539323864366135ba013c7061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653a3a656e636f64653a3a6864616166396438626630616361623862bb015a3c70616c6c65745f696e64696365733a3a4d6f64756c653c543e2061732073705f72756e74696d653a3a7472616974733a3a5374617469634c6f6f6b75703e3a3a6c6f6f6b75703a3a6837313364343638613163643335353866bc019a013c70616c6c65745f62616c616e6365733a3a4d6f64756c653c542c493e206173206672616d655f737570706f72743a3a7472616974733a3a52657365727661626c6543757272656e63793c3c54206173206672616d655f73797374656d3a3a54726169743e3a3a4163636f756e7449643e3e3a3a726570617472696174655f72657365727665643a3a6830356366666465303732373331396430bd01b2013c6672616d655f73797374656d3a3a4d6f64756c653c543e206173206672616d655f737570706f72743a3a7472616974733a3a53746f7265644d61703c3c54206173206672616d655f73797374656d3a3a54726169743e3a3a4163636f756e7449642c3c54206173206672616d655f73797374656d3a3a54726169743e3a3a4163636f756e74446174613e3e3a3a7472795f6d75746174655f6578697374733a3a6830626634393562316139623631363136be01456672616d655f737570706f72743a3a7472616974733a3a4f6e556e62616c616e6365643a3a6f6e5f756e62616c616e6365643a3a6839336464313066356239626436316532bf015d3c70616c6c65745f636f6e7472616374733a3a7761736d3a3a5761736d566d2061732070616c6c65745f636f6e7472616374733a3a657865633a3a566d3c543e3e3a3a657865637574653a3a6830616231303436396539613265633436c0016a3c70616c6c65745f636f6e7472616374733a3a7761736d3a3a5761736d566d2061732070616c6c65745f636f6e7472616374733a3a657865633a3a566d3c543e3e3a3a657865637574653a3a7b7b636c6f737572657d7d3a3a6834366233336639333361666331623763c10181013c70616c6c65745f636f6e7472616374733a3a7761736d3a3a72756e74696d653a3a456e762061732070616c6c65745f636f6e7472616374733a3a7761736d3a3a656e765f6465663a3a46756e6374696f6e496d706c50726f76696465723c453e3e3a3a696d706c733a3a6761733a3a6837386632636636346164646431343361c2018d013c70616c6c65745f636f6e7472616374733a3a7761736d3a3a72756e74696d653a3a456e762061732070616c6c65745f636f6e7472616374733a3a7761736d3a3a656e765f6465663a3a46756e6374696f6e496d706c50726f76696465723c453e3e3a3a696d706c733a3a6578745f7365745f73746f726167653a3a6865636636323032383332323662373832c3018d013c70616c6c65745f636f6e7472616374733a3a7761736d3a3a72756e74696d653a3a456e762061732070616c6c65745f636f6e7472616374733a3a7761736d3a3a656e765f6465663a3a46756e6374696f6e496d706c50726f76696465723c453e3e3a3a696d706c733a3a6578745f6765745f73746f726167653a3a6861316636323737613331313130393663c40186013c70616c6c65745f636f6e7472616374733a3a7761736d3a3a72756e74696d653a3a456e762061732070616c6c65745f636f6e7472616374733a3a7761736d3a3a656e765f6465663a3a46756e6374696f6e496d706c50726f76696465723c453e3e3a3a696d706c733a3a6578745f63616c6c3a3a6835663230636636663165333839393563c5018d013c70616c6c65745f636f6e7472616374733a3a7761736d3a3a72756e74696d653a3a456e762061732070616c6c65745f636f6e7472616374733a3a7761736d3a3a656e765f6465663a3a46756e6374696f6e496d706c50726f76696465723c453e3e3a3a696d706c733a3a6578745f696e7374616e74696174653a3a6864326532663539636465306138353130c60188013c70616c6c65745f636f6e7472616374733a3a7761736d3a3a72756e74696d653a3a456e762061732070616c6c65745f636f6e7472616374733a3a7761736d3a3a656e765f6465663a3a46756e6374696f6e496d706c50726f76696465723c453e3e3a3a696d706c733a3a6578745f72657475726e3a3a6832396461353161396162646234303561c70188013c70616c6c65745f636f6e7472616374733a3a7761736d3a3a72756e74696d653a3a456e762061732070616c6c65745f636f6e7472616374733a3a7761736d3a3a656e765f6465663a3a46756e6374696f6e496d706c50726f76696465723c453e3e3a3a696d706c733a3a6578745f63616c6c65723a3a6864656633663032383134636361353231c80189013c70616c6c65745f636f6e7472616374733a3a7761736d3a3a72756e74696d653a3a456e762061732070616c6c65745f636f6e7472616374733a3a7761736d3a3a656e765f6465663a3a46756e6374696f6e496d706c50726f76696465723c453e3e3a3a696d706c733a3a6578745f616464726573733a3a6838363865653237653462343861353831c9018b013c70616c6c65745f636f6e7472616374733a3a7761736d3a3a72756e74696d653a3a456e762061732070616c6c65745f636f6e7472616374733a3a7761736d3a3a656e765f6465663a3a46756e6374696f6e496d706c50726f76696465723c453e3e3a3a696d706c733a3a6578745f6761735f70726963653a3a6838316537663035313265643362373466ca018a013c70616c6c65745f636f6e7472616374733a3a7761736d3a3a72756e74696d653a3a456e762061732070616c6c65745f636f6e7472616374733a3a7761736d3a3a656e765f6465663a3a46756e6374696f6e496d706c50726f76696465723c453e3e3a3a696d706c733a3a6578745f6761735f6c6566743a3a6830323362363536383233336135643562cb0189013c70616c6c65745f636f6e7472616374733a3a7761736d3a3a72756e74696d653a3a456e762061732070616c6c65745f636f6e7472616374733a3a7761736d3a3a656e765f6465663a3a46756e6374696f6e496d706c50726f76696465723c453e3e3a3a696d706c733a3a6578745f62616c616e63653a3a6833373533346361366335393763656365cc0193013c70616c6c65745f636f6e7472616374733a3a7761736d3a3a72756e74696d653a3a456e762061732070616c6c65745f636f6e7472616374733a3a7761736d3a3a656e765f6465663a3a46756e6374696f6e496d706c50726f76696465723c453e3e3a3a696d706c733a3a6578745f76616c75655f7472616e736665727265643a3a6839643532393035373536616536656334cd0188013c70616c6c65745f636f6e7472616374733a3a7761736d3a3a72756e74696d653a3a456e762061732070616c6c65745f636f6e7472616374733a3a7761736d3a3a656e765f6465663a3a46756e6374696f6e496d706c50726f76696465723c453e3e3a3a696d706c733a3a6578745f72616e646f6d3a3a6835323963343639616539633636613265ce0185013c70616c6c65745f636f6e7472616374733a3a7761736d3a3a72756e74696d653a3a456e762061732070616c6c65745f636f6e7472616374733a3a7761736d3a3a656e765f6465663a3a46756e6374696f6e496d706c50726f76696465723c453e3e3a3a696d706c733a3a6578745f6e6f773a3a6864303339646232663361373133333062cf0191013c70616c6c65745f636f6e7472616374733a3a7761736d3a3a72756e74696d653a3a456e762061732070616c6c65745f636f6e7472616374733a3a7761736d3a3a656e765f6465663a3a46756e6374696f6e496d706c50726f76696465723c453e3e3a3a696d706c733a3a6578745f6d696e696d756d5f62616c616e63653a3a6833383066663563313534633435326139d00193013c70616c6c65745f636f6e7472616374733a3a7761736d3a3a72756e74696d653a3a456e762061732070616c6c65745f636f6e7472616374733a3a7761736d3a3a656e765f6465663a3a46756e6374696f6e496d706c50726f76696465723c453e3e3a3a696d706c733a3a6578745f746f6d6273746f6e655f6465706f7369743a3a6831373233646136613864666162336265d1018f013c70616c6c65745f636f6e7472616374733a3a7761736d3a3a72756e74696d653a3a456e762061732070616c6c65745f636f6e7472616374733a3a7761736d3a3a656e765f6465663a3a46756e6374696f6e496d706c50726f76696465723c453e3e3a3a696d706c733a3a6578745f64697370617463685f63616c6c3a3a6864656237366538396137353465393239d2018c013c70616c6c65745f636f6e7472616374733a3a7761736d3a3a72756e74696d653a3a456e762061732070616c6c65745f636f6e7472616374733a3a7761736d3a3a656e765f6465663a3a46756e6374696f6e496d706c50726f76696465723c453e3e3a3a696d706c733a3a6578745f726573746f72655f746f3a3a6835333538653031613762356330323661d3018e013c70616c6c65745f636f6e7472616374733a3a7761736d3a3a72756e74696d653a3a456e762061732070616c6c65745f636f6e7472616374733a3a7761736d3a3a656e765f6465663a3a46756e6374696f6e496d706c50726f76696465723c453e3e3a3a696d706c733a3a6578745f736372617463685f73697a653a3a6832326366363133306331333139393665d4018e013c70616c6c65745f636f6e7472616374733a3a7761736d3a3a72756e74696d653a3a456e762061732070616c6c65745f636f6e7472616374733a3a7761736d3a3a656e765f6465663a3a46756e6374696f6e496d706c50726f76696465723c453e3e3a3a696d706c733a3a6578745f736372617463685f726561643a3a6864623333366664343434653230626561d5018f013c70616c6c65745f636f6e7472616374733a3a7761736d3a3a72756e74696d653a3a456e762061732070616c6c65745f636f6e7472616374733a3a7761736d3a3a656e765f6465663a3a46756e6374696f6e496d706c50726f76696465723c453e3e3a3a696d706c733a3a6578745f736372617463685f77726974653a3a6831393062363833343835346334613038d6018f013c70616c6c65745f636f6e7472616374733a3a7761736d3a3a72756e74696d653a3a456e762061732070616c6c65745f636f6e7472616374733a3a7761736d3a3a656e765f6465663a3a46756e6374696f6e496d706c50726f76696465723c453e3e3a3a696d706c733a3a6578745f6465706f7369745f6576656e743a3a6863626133613366323965316631636331d70194013c70616c6c65745f636f6e7472616374733a3a7761736d3a3a72756e74696d653a3a456e762061732070616c6c65745f636f6e7472616374733a3a7761736d3a3a656e765f6465663a3a46756e6374696f6e496d706c50726f76696465723c453e3e3a3a696d706c733a3a6578745f7365745f72656e745f616c6c6f77616e63653a3a6832373836383431393861646365373234d80190013c70616c6c65745f636f6e7472616374733a3a7761736d3a3a72756e74696d653a3a456e762061732070616c6c65745f636f6e7472616374733a3a7761736d3a3a656e765f6465663a3a46756e6374696f6e496d706c50726f76696465723c453e3e3a3a696d706c733a3a6578745f72656e745f616c6c6f77616e63653a3a6863306338613638333737383764643965d90189013c70616c6c65745f636f6e7472616374733a3a7761736d3a3a72756e74696d653a3a456e762061732070616c6c65745f636f6e7472616374733a3a7761736d3a3a656e765f6465663a3a46756e6374696f6e496d706c50726f76696465723c453e3e3a3a696d706c733a3a6578745f7072696e746c6e3a3a6837353265393162333164363565656363da018e013c70616c6c65745f636f6e7472616374733a3a7761736d3a3a72756e74696d653a3a456e762061732070616c6c65745f636f6e7472616374733a3a7761736d3a3a656e765f6465663a3a46756e6374696f6e496d706c50726f76696465723c453e3e3a3a696d706c733a3a6578745f626c6f636b5f6e756d6265723a3a6836616438613932323135336566613130db0195013c70616c6c65745f636f6e7472616374733a3a7761736d3a3a72756e74696d653a3a456e762061732070616c6c65745f636f6e7472616374733a3a7761736d3a3a656e765f6465663a3a46756e6374696f6e496d706c50726f76696465723c453e3e3a3a696d706c733a3a6578745f6765745f72756e74696d655f73746f726167653a3a6865356330316164393839303662636531dc013273705f73616e64626f783a3a696d703a3a64697370617463685f7468756e6b3a3a6832636535326261616330666564666539dd017673705f7761736d5f696e746572666163653a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f722073705f7761736d5f696e746572666163653a3a56616c75653e3a3a6465636f64653a3a6839313739656230363031656533383836de015f3c70616c6c65745f76657374696e673a3a4d6f64756c653c543e206173206672616d655f6d657461646174613a3a4d6f64756c654572726f724d657461646174613e3a3a6d657461646174613a3a6830646439393530393564373262353463df01603c70616c6c65745f6964656e746974793a3a4d6f64756c653c543e206173206672616d655f6d657461646174613a3a4d6f64756c654572726f724d657461646174613e3a3a6d657461646174613a3a6833663566636439386265313137303437e0013a3c266d7574205720617320636f72653a3a666d743a3a57726974653e3a3a77726974655f666d743a3a6833653531353264366636393366323138e101763c70616c6c65745f617574686f726974795f646973636f766572793a3a43616c6c3c543e206173206672616d655f737570706f72743a3a776569676874733a3a4765744469737061746368496e666f3e3a3a6765745f64697370617463685f696e666f3a3a6866393163313136663435613438343064e2016d3c70616c6c65745f636f6e7472616374733a3a436865636b426c6f636b4761734c696d69743c543e2061732073705f72756e74696d653a3a7472616974733a3a5369676e6564457874656e73696f6e3e3a3a76616c69646174653a3a6862663066343538646438323534633637e301386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6833353631386263323061643263613533e401613c616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6d61703a3a42547265654d61703c4b2c563e20617320636f72653a3a6f70733a3a64726f703a3a44726f703e3a3a64726f703a3a6864393066656662656632323737333362e501723c616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6d61703a3a42547265654d61703c4b2c563e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a656e636f64655f746f3a3a6863353262383862393764653164663663e6016b3c7061726974795f7363616c655f636f6465633a3a636f6d706163743a3a436f6d706163743c7533323e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a6833616161343464303637643966393839e7017973705f7761736d5f696e746572666163653a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f646520666f722073705f7761736d5f696e746572666163653a3a56616c75653e3a3a656e636f64655f746f3a3a6834643861343162616434623230643364e801746672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a3c696d706c206672616d655f737570706f72743a3a73746f726167653a3a53746f726167654d61703c4b2c563e20666f7220473e3a3a6765743a3a6835343864373232376232643037633430e901776672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a3c696d706c206672616d655f737570706f72743a3a73746f726167653a3a53746f726167654d61703c4b2c563e20666f7220473e3a3a696e736572743a3a6830303337653433303935393165346337ea01a40170616c6c65745f636f6e7472616374733a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f646520666f722070616c6c65745f636f6e7472616374733a3a526177416c697665436f6e7472616374496e666f3c436f6465486173682c42616c616e63652c426c6f636b4e756d6265723e3e3a3a656e636f64655f746f3a3a6861316130663965323139306439396462eb01776672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a3c696d706c206672616d655f737570706f72743a3a73746f726167653a3a53746f726167654d61703c4b2c563e20666f7220473e3a3a696e736572743a3a6862343962393235313735323264323630ec01776672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a3c696d706c206672616d655f737570706f72743a3a73746f726167653a3a53746f726167654d61703c4b2c563e20666f7220473e3a3a72656d6f76653a3a6836336536666330643963316533366634ed0148616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6d61703a3a42547265654d61703c4b2c563e3a3a696e736572743a3a6837363937636365653339363865616236ee014b616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6d61703a3a566163616e74456e7472793c4b2c563e3a3a696e736572743a3a6835613966376333393662653462643339ef0196013c70616c6c65745f636f6e7472616374733a3a54726965496446726f6d506172656e74436f756e7465723c543e2061732070616c6c65745f636f6e7472616374733a3a54726965496447656e657261746f723c3c54206173206672616d655f73797374656d3a3a54726169743e3a3a4163636f756e7449643e3e3a3a747269655f69643a3a6832636363666634323635323632633537f0013e70616c6c65745f636f6e7472616374733a3a4d6f64756c653c543e3a3a63616c6c5f66756e6374696f6e733a3a6831666364396535623831306162613631f1014070616c6c65745f636f6e7472616374733a3a4d6f64756c653c543e3a3a73746f726167655f6d657461646174613a3a6836396132326261376438663336313562f2016e3c70616c6c65745f636f6e7472616374733a3a5f5f4765744279746553747275637447617350726963653c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6832313933383630343736616536643161f301723c70616c6c65745f636f6e7472616374733a3a5f5f476574427974655374727563745072697374696e65436f64653c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6866303165636637666430633738653561f4013c7061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653a3a656e636f64653a3a6836326263326333363362626461396362f501753c70616c6c65745f636f6e7472616374733a3a5f5f4765744279746553747275637443757272656e745363686564756c653c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6861316162373937613336646662393538f6017a70616c6c65745f636f6e7472616374733a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f646520666f722070616c6c65745f636f6e7472616374733a3a5363686564756c653e3a3a656e636f64655f746f3a3a6839316533333465313534386462636435f7014970616c6c65745f636f6e7472616374733a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a6835356134613666383464343536393137f8019b013c70616c6c65745f636f6e7472616374733a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a426c6f636b4761734c696d697444656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6862306333613464356264316163336364f9019a013c70616c6c65745f636f6e7472616374733a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a4d617856616c756553697a6544656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6865353538393163646262356665653137fa0196013c70616c6c65745f636f6e7472616374733a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a4d6178446570746844656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6835646538346138626334653730653631fb0199013c70616c6c65745f636f6e7472616374733a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a43616c6c4261736546656544656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6862356364303861386132383430306465fc0199013c70616c6c65745f636f6e7472616374733a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a436f6e747261637446656544656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6839356632376435306234633563396539fd01a0013c70616c6c65745f636f6e7472616374733a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a5472616e73616374696f6e4279746546656544656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6834396539323330633263653965326439fe019d013c70616c6c65745f636f6e7472616374733a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a53757263686172676552657761726444656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6836346431373063663439663765613561ff019f013c70616c6c65745f636f6e7472616374733a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a52656e744465706f7369744f666673657444656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6837653566646530393834663365336436800299013c70616c6c65745f636f6e7472616374733a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a52656e744279746546656544656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a683539613039636661343265373338653181029f013c70616c6c65745f636f6e7472616374733a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a53746f7261676553697a654f666673657444656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a68313962353564306261353461323862388202a1013c70616c6c65745f636f6e7472616374733a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a5369676e6564436c61696d48616e646963617044656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a683361383937616664656433323233313283023970616c6c65745f636f6e7472616374733a3a4d6f64756c653c543e3a3a626172655f63616c6c3a3a686336636332643061363433326236653084023170616c6c65745f636f6e7472616374733a3a6761733a3a6275795f6761733a3a68653765383535386530336633616466638502386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a686434323039623536316261396662643586024870616c6c65745f636f6e7472616374733a3a657865633a3a457865637574696f6e436f6e746578743c542c562c4c3e3a3a63616c6c3a3a68303237613963386439393335653930378702783c70616c6c65745f636f6e7472616374733a3a6163636f756e745f64623a3a4469726563744163636f756e7444622061732070616c6c65745f636f6e7472616374733a3a6163636f756e745f64623a3a4163636f756e7444623c543e3e3a3a636f6d6d69743a3a683330303963313230356230303237323588023b70616c6c65745f636f6e7472616374733a3a6761733a3a726566756e645f756e757365645f6761733a3a686534666639326335613434343135343189023a70616c6c65745f636f6e7472616374733a3a4d6f64756c653c543e3a3a726573746f72655f746f3a3a68393833393634383630336662373065338a02613c616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6d61703a3a496e746f497465723c4b2c563e20617320636f72653a3a6f70733a3a64726f703a3a44726f703e3a3a64726f703a3a68613863343435373161346665336464338b0268636f72653a3a6f70733a3a66756e6374696f6e3a3a696d706c733a3a3c696d706c20636f72653a3a6f70733a3a66756e6374696f6e3a3a466e4d75743c413e20666f7220266d757420463e3a3a63616c6c5f6d75743a3a68343961363066366433323062313937668c02437061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653a3a7573696e675f656e636f6465643a3a68363363303464386163333238383865618d02a4013c6672616d655f73797374656d3a3a4d6f64756c653c543e206173206672616d655f737570706f72743a3a7472616974733a3a53746f7265644d61703c3c54206173206672616d655f73797374656d3a3a54726169743e3a3a4163636f756e7449642c3c54206173206672616d655f73797374656d3a3a54726169743e3a3a4163636f756e74446174613e3e3a3a6765743a3a68313135643639326232623562306536378e0291013c70616c6c65745f62616c616e6365733a3a4d6f64756c653c542c493e206173206672616d655f737570706f72743a3a7472616974733a3a43757272656e63793c3c54206173206672616d655f73797374656d3a3a54726169743e3a3a4163636f756e7449643e3e3a3a6d616b655f667265655f62616c616e63655f62653a3a68303036633065343463626462386335378f02b2013c6672616d655f73797374656d3a3a4d6f64756c653c543e206173206672616d655f737570706f72743a3a7472616974733a3a53746f7265644d61703c3c54206173206672616d655f73797374656d3a3a54726169743e3a3a4163636f756e7449642c3c54206173206672616d655f73797374656d3a3a54726169743e3a3a4163636f756e74446174613e3e3a3a7472795f6d75746174655f6578697374733a3a68373837313763663034356638646639379002613c616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6d61703a3a496e746f497465723c4b2c563e20617320636f72653a3a6f70733a3a64726f703a3a44726f703e3a3a64726f703a3a683161376130343432613333343435353791027770616c6c65745f636f6e7472616374733a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f722070616c6c65745f636f6e7472616374733a3a5363686564756c653e3a3a6465636f64653a3a686637373162646261633963646636356692023b70616c6c65745f636f6e7472616374733a3a7761736d3a3a636f64655f63616368653a3a6c6f61643a3a68386436643935613931356135356361669302386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a686131613839643738396639386366663994024470616c6c65745f636f6e7472616374733a3a7761736d3a3a707265706172653a3a707265706172655f636f6e74726163743a3a683963346466376637656264333336306595026f3c7061726974795f7363616c655f636f6465633a3a636f6d706163743a3a436f6d706163745265663c543e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a656e636f64655f746f3a3a686534306530336162653065363761633196023c7061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653a3a656e636f64653a3a683537373764663566376362613233326197024b616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6d61703a3a566163616e74456e7472793c4b2c563e3a3a696e736572743a3a6835356638373935633738353034613239980248616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6d61703a3a42547265654d61703c4b2c563e3a3a696e736572743a3a6830313365376231616330616238396664990248616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6d61703a3a42547265654d61703c4b2c563e3a3a696e736572743a3a68316538663462633234356236613936309a0248616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6d61703a3a42547265654d61703c4b2c563e3a3a696e736572743a3a68326666653366663463656230306334349b024b616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6d61703a3a566163616e74456e7472793c4b2c563e3a3a696e736572743a3a68353635363837323631353035383561619c025c3c70616c6c65745f636f6e7472616374733a3a43616c6c3c543e2061732073705f72756e74696d653a3a7472616974733a3a446973706174636861626c653e3a3a64697370617463683a3a68613531393237346630613339326339359d02437061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653a3a7573696e675f656e636f6465643a3a68353631376562306538303763376661619e024f70616c6c65745f636f6e7472616374733a3a657865633a3a457865637574696f6e436f6e746578743c542c562c4c3e3a3a696e7374616e74696174653a3a68663939323535613062626434333264369f023870616c6c65745f636f6e7472616374733a3a72656e743a3a656e6163745f766572646963743a3a6833663932353133653465303634383231a002b2013c6672616d655f73797374656d3a3a4d6f64756c653c543e206173206672616d655f737570706f72743a3a7472616974733a3a53746f7265644d61703c3c54206173206672616d655f73797374656d3a3a54726169743e3a3a4163636f756e7449642c3c54206173206672616d655f73797374656d3a3a54726169743e3a3a4163636f756e74446174613e3e3a3a7472795f6d75746174655f6578697374733a3a6837376362363235323563613138313361a102613c70616c6c65745f636f6e7472616374733a3a4d6f64756c653c543e206173206672616d655f6d657461646174613a3a4d6f64756c654572726f724d657461646174613e3a3a6d657461646174613a3a6866373932333238663439646534353835a202613c616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6d61703a3a496e746f497465723c4b2c563e20617320636f72653a3a6f70733a3a64726f703a3a44726f703e3a3a64726f703a3a6831373930336362376239393933666237a302613c616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6d61703a3a42547265654d61703c4b2c563e20617320636f72653a3a6f70733a3a64726f703a3a44726f703e3a3a64726f703a3a6834613032316234663762396331353035a4023f70616c6c65745f64656d6f63726163793a3a4d6f64756c653c543e3a3a6c61756e63685f65787465726e616c3a3a6864636435383264653630313266353739a502386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6836613264393532346438653338623938a6024170616c6c65745f64656d6f63726163793a3a4d6f64756c653c543e3a3a696e6a6563745f7265666572656e64756d3a3a6837656665363237353866636565663161a7023d70616c6c65745f64656d6f63726163793a3a4d6f64756c653c543e3a3a6c61756e63685f7075626c69633a3a6861653531363131363131663531343739a8023a70616c6c65745f64656d6f63726163793a3a4d6f64756c653c543e3a3a6465706f7369745f6f663a3a6864343737613236653738633964366530a9023a70616c6c65745f64656d6f63726163793a3a4d6f64756c653c543e3a3a766f746572735f666f723a3a6861313564373563666162636439623538aa02386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6832343333626537383965646237643264ab023770616c6c65745f64656d6f63726163793a3a4d6f64756c653c543e3a3a766f74655f6f663a3a6865313532363036346565353538313837ac023f70616c6c65745f64656d6f63726163793a3a4d6f64756c653c543e3a3a64656c6567617465645f766f7465733a3a6838663066383063616638376130373630ad02386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6834636163346139323662373065653130ae0285013c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6c696e6b65645f6d61703a3a456e756d657261746f723c4b2c562c463e20617320636f72653a3a697465723a3a7472616974733a3a6974657261746f723a3a4974657261746f723e3a3a6e6578743a3a6832663561306362623432353032326630af024070616c6c65745f64656d6f63726163793a3a4d6f64756c653c543e3a3a636c6561725f7265666572656e64756d3a3a6862353335303165396538633865373162b0024470616c6c65745f64656d6f63726163793a3a4d6f64756c653c543e3a3a69735f6163746976655f7265666572656e64756d3a3a6836393530613263613866663866366263b1023e70616c6c65745f64656d6f63726163793a3a4d6f64756c653c543e3a3a656e6163745f70726f706f73616c3a3a6830333739393831663836626535663631b202386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6831316664313364366633643966326666b3026b6e6f64655f72756e74696d653a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f72206e6f64655f72756e74696d653a3a43616c6c3e3a3a6465636f64653a3a6835623764626236663631316161646532b4024873705f72756e74696d653a3a7472616974733a3a4163636f756e744964436f6e76657273696f6e3a3a696e746f5f6163636f756e743a3a6863636231373236653862303264366236b502446672616d655f737570706f72743a3a7472616974733a3a43757272656e63793a3a7265736f6c76655f6372656174696e673a3a6861346566313663366462636431646335b602696672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6c696e6b65645f6d61703a3a4b6579466f726d61743a3a73746f726167655f6c696e6b65645f6d61705f66696e616c5f6b65793a3a6861383738393835613830353365383963b7023e70616c6c65745f64656d6f63726163793a3a4d6f64756c653c543e3a3a63616c6c5f66756e6374696f6e733a3a6837623835393735313135623264346164b8023f70616c6c65745f64656d6f63726163793a3a4d6f64756c653c543e3a3a7265666572656e64756d5f696e666f3a3a6839333538333539646364333663323833b9024070616c6c65745f64656d6f63726163793a3a4d6f64756c653c543e3a3a73746f726167655f6d657461646174613a3a6830396363356161386362633238366630ba02713c70616c6c65745f64656d6f63726163793a3a5f5f4765744279746553747275637444656c65676174696f6e733c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6833383038366163643261363561356466bb02713c70616c6c65745f64656d6f63726163793a3a5f5f476574427974655374727563745075626c696350726f70733c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6833663430353665376564636663623331bc024970616c6c65745f64656d6f63726163793a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a6831633066343861616332363266616361bd029a013c70616c6c65745f64656d6f63726163793a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a4c61756e6368506572696f6444656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6863396563396332356233636634626563be02a3013c70616c6c65745f64656d6f63726163793a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a456d657267656e6379566f74696e67506572696f6444656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6864613834666262353431366439313939bf029c013c70616c6c65745f64656d6f63726163793a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a4d696e696d756d4465706f73697444656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6864373463363933613134633834636266c0029d013c70616c6c65745f64656d6f63726163793a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a456e6163746d656e74506572696f6444656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6862313932333663386663313563663464c1027970616c6c65745f64656d6f63726163793a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f646520666f722070616c6c65745f64656d6f63726163793a3a43616c6c3c543e3e3a3a656e636f64655f746f3a3a6839316362646638646466653163326563c202723c7061726974795f7363616c655f636f6465633a3a636f6d706163743a3a436f6d706163745265663c753132383e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a656e636f64655f746f3a3a6830396337336132333262623137633637c3025c3c70616c6c65745f64656d6f63726163793a3a43616c6c3c543e2061732073705f72756e74696d653a3a7472616974733a3a446973706174636861626c653e3a3a64697370617463683a3a6836393037383137373764306533313833c402497061726974795f7363616c655f636f6465633a3a656e636f64655f617070656e643a3a657874726163745f6c656e6774685f646174613a3a6861323737633931663966633832343536c502703c7061726974795f7363616c655f636f6465633a3a636f6d706163743a3a436f6d706163743c543e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a7573696e675f656e636f6465643a3a6836373132303034303161363232316536c6023770616c6c65745f64656d6f63726163793a3a4d6f64756c653c543e3a3a646f5f766f74653a3a6838306564663337383637623230633734c702386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6861613032313139336661353466313466c802386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6864666563643863613434303466653366c902386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6831663364373439653865393736373433ca02336672616d655f73797374656d3a3a4d6f64756c653c543e3a3a6465635f7265663a3a6866623736663362613165303766633035cb02386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6866373062353963393134653466366664cc02403c616c6c6f633a3a7665633a3a5665633c543e20617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6835376438666264666661356536313336cd02cc016672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6c696e6b65645f6d61703a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f646520666f72206672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6c696e6b65645f6d61703a3a456e636f64654c696b654c696e6b6167653c504b65792c4e4b65792c4b65793e3e3a3a656e636f64655f746f3a3a6831623735616532313532353064303065ce02b8016672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6c696e6b65645f6d61703a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f646520666f72206672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6c696e6b65645f6d61703a3a4c696e6b6167653c4b65793e3e3a3a656e636f64655f746f3a3a6830663661353638316331663339346166cf02776672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a3c696d706c206672616d655f737570706f72743a3a73746f726167653a3a53746f726167654d61703c4b2c563e20666f7220473e3a3a696e736572743a3a6833653830653835353338653637393234d002336672616d655f73797374656d3a3a4d6f64756c653c543e3a3a696e635f7265663a3a6836646332373763313136386261333231d102303c265420617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6831323538623636633732623036643265d20290013c70616c6c65745f62616c616e6365733a3a4d6f64756c653c542c493e206173206672616d655f737570706f72743a3a7472616974733a3a4c6f636b61626c6543757272656e63793c3c54206173206672616d655f73797374656d3a3a54726169743e3a3a4163636f756e7449643e3e3a3a657874656e645f6c6f636b3a3a6833643665336338646436656636303639d302613c70616c6c65745f64656d6f63726163793a3a4d6f64756c653c543e206173206672616d655f6d657461646174613a3a4d6f64756c654572726f724d657461646174613e3a3a6d657461646174613a3a6837633139316333333337663637653031d402466e6f64655f72756e74696d653a3a52756e74696d653a3a5f5f6d6f64756c655f6576656e74735f6672616d655f73797374656d3a3a6865623931306334346537323036373461d502486e6f64655f72756e74696d653a3a52756e74696d653a3a5f5f6d6f64756c655f6576656e74735f70616c6c65745f7574696c6974793a3a6836363863623035333837373130383430d602486e6f64655f72756e74696d653a3a52756e74696d653a3a5f5f6d6f64756c655f6576656e74735f70616c6c65745f696e64696365733a3a6836643166363239306366636639393733d702496e6f64655f72756e74696d653a3a52756e74696d653a3a5f5f6d6f64756c655f6576656e74735f70616c6c65745f62616c616e6365733a3a6832616664353261663736316465366137d802486e6f64655f72756e74696d653a3a52756e74696d653a3a5f5f6d6f64756c655f6576656e74735f70616c6c65745f7374616b696e673a3a6833303138613065373830313333323064d902486e6f64655f72756e74696d653a3a52756e74696d653a3a5f5f6d6f64756c655f6576656e74735f70616c6c65745f73657373696f6e3a3a6864646437393836396561336166633536da024a6e6f64655f72756e74696d653a3a52756e74696d653a3a5f5f6d6f64756c655f6576656e74735f70616c6c65745f64656d6f63726163793a3a6838333037376431393062653939376239db02556e6f64655f72756e74696d653a3a52756e74696d653a3a5f5f6d6f64756c655f6576656e74735f70616c6c65745f636f6c6c6563746976655f496e7374616e6365313a3a6865313232383762356362376564343737dc02536e6f64655f72756e74696d653a3a52756e74696d653a3a5f5f6d6f64756c655f6576656e74735f70616c6c65745f656c656374696f6e735f70687261676d656e3a3a6863303834306631623039353333626464dd02556e6f64655f72756e74696d653a3a52756e74696d653a3a5f5f6d6f64756c655f6576656e74735f70616c6c65745f6d656d626572736869705f496e7374616e6365313a3a6839376663336538323662343138396665de02486e6f64655f72756e74696d653a3a52756e74696d653a3a5f5f6d6f64756c655f6576656e74735f70616c6c65745f6772616e6470613a3a6834656130353731613762343664373239df02496e6f64655f72756e74696d653a3a52756e74696d653a3a5f5f6d6f64756c655f6576656e74735f70616c6c65745f74726561737572793a3a6830373363306637653237663761663665e0024a6e6f64655f72756e74696d653a3a52756e74696d653a3a5f5f6d6f64756c655f6576656e74735f70616c6c65745f636f6e7472616374733a3a6839353032663465633532356235343834e102456e6f64655f72756e74696d653a3a52756e74696d653a3a5f5f6d6f64756c655f6576656e74735f70616c6c65745f7375646f3a3a6836663862323963636236643033656432e2024a6e6f64655f72756e74696d653a3a52756e74696d653a3a5f5f6d6f64756c655f6576656e74735f70616c6c65745f696d5f6f6e6c696e653a3a6837306461633661323161326663343233e302496e6f64655f72756e74696d653a3a52756e74696d653a3a5f5f6d6f64756c655f6576656e74735f70616c6c65745f6f6666656e6365733a3a6837653935663965313737343138396465e402496e6f64655f72756e74696d653a3a52756e74696d653a3a5f5f6d6f64756c655f6576656e74735f70616c6c65745f6964656e746974793a3a6864323566616461376531383665623030e502486e6f64655f72756e74696d653a3a52756e74696d653a3a5f5f6d6f64756c655f6576656e74735f70616c6c65745f736f63696574793a3a6864353132313661373839333164396230e602496e6f64655f72756e74696d653a3a52756e74696d653a3a5f5f6d6f64756c655f6576656e74735f70616c6c65745f7265636f766572793a3a6866626139646162636665633364396464e702486e6f64655f72756e74696d653a3a52756e74696d653a3a5f5f6d6f64756c655f6576656e74735f70616c6c65745f76657374696e673a3a6861363262353761313065343930346632e8023f7061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653a3a656e636f64655f746f3a3a6838343038363961353863306238633831e902713c7061726974795f7363616c655f636f6465633a3a636f6d706163743a3a436f6d706163745265663c7536343e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a656e636f64655f746f3a3a6865663737323932393138336431383266ea026f3c73705f72756e74696d653a3a67656e657269633a3a6469676573743a3a4469676573744974656d3c486173683e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a656e636f64653a3a6831313834343738393863386135316431eb027d3c70616c6c65745f696e64696365733a3a616464726573733a3a416464726573733c4163636f756e7449642c4163636f756e74496e6465783e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a656e636f64655f746f3a3a6866373564666366356336376563393039ec027d70616c6c65745f636f6c6c6563746976653a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f646520666f722070616c6c65745f636f6c6c6563746976653a3a43616c6c3c542c493e3e3a3a656e636f64655f746f3a3a6830336137386332646162616262353639ed02426e6f64655f72756e74696d653a3a53657373696f6e4b6579733a3a696e746f5f7261775f7075626c69635f6b6579733a3a6865363666373333336261333361656138ee02726e6f64655f72756e74696d653a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f72206e6f64655f72756e74696d653a3a53657373696f6e4b6579733e3a3a6465636f64653a3a6866383733633364623931393465663334ef026f6e6f64655f72756e74696d653a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f646520666f72206e6f64655f72756e74696d653a3a4576656e743e3a3a656e636f64655f746f3a3a6836626563363563353439336235386430f0028e0170616c6c65745f636f6c6c6563746976653a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f646520666f722070616c6c65745f636f6c6c6563746976653a3a5261774576656e743c486173682c4163636f756e7449642c493e3e3a3a656e636f64655f746f3a3a6865303133366466313030306239663335f102653c6e6f64655f72756e74696d653a3a43616c6c206173206672616d655f737570706f72743a3a776569676874733a3a4765744469737061746368496e666f3e3a3a6765745f64697370617463685f696e666f3a3a6834643231363136623235343830393733f20285013c70616c6c65745f62616c616e6365733a3a4d6f64756c653c542c493e206173206672616d655f737570706f72743a3a7472616974733a3a43757272656e63793c3c54206173206672616d655f73797374656d3a3a54726169743e3a3a4163636f756e7449643e3e3a3a7472616e736665723a3a6838613464363664643134303736633435f302483c5b543b20385d206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a6862313130666166363137363031643033f402386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6836363337366131376538323362356639f502437061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653a3a7573696e675f656e636f6465643a3a6838363233323763633465313534353935f602386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6839623530666537326538663164333134f702386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6835333763326636653234643430373466f802766672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a76616c75653a3a3c696d706c206672616d655f737570706f72743a3a73746f726167653a3a53746f7261676556616c75653c543e20666f7220473e3a3a6765743a3a6839363766366165353436323166386432f902437061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653a3a7573696e675f656e636f6465643a3a6834653330353461386138396466613831fa02366672616d655f73797374656d3a3a4d6f64756c653c543e3a3a626c6f636b5f686173683a3a6832343433373138633535643534383837fb023770616c6c65745f617574686f72736869703a3a4d6f64756c653c543e3a3a617574686f723a3a6830346631366664353137633465323134fc023b70616c6c65745f7374616b696e673a3a4d6f64756c653c543e3a3a7265776172645f62795f6964733a3a6833363239333634383232366539633037fd023f70616c6c65745f696d5f6f6e6c696e653a3a4d6f64756c653c543e3a3a6e6f74655f617574686f72736869703a3a6838373535346134356237343833666139fe025c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6831636464336665313164376232616363ff02386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a686464373839356134636236346362323380035a3c70616c6c65745f7374616b696e673a3a43616c6c3c543e2061732073705f72756e74696d653a3a7472616974733a3a446973706174636861626c653e3a3a64697370617463683a3a686539373436323161663739613036626581033470616c6c65745f7374616b696e673a3a4d6f64756c653c543e3a3a6c65646765723a3a68623765613233396435313531636631338203706672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a646f75626c655f6d61703a3a53746f72616765446f75626c654d61703a3a73746f726167655f646f75626c655f6d61705f66696e616c5f6b65793a3a68353538323037653965363563333261378303386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a68363332383862316439316339383966358403706672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a646f75626c655f6d61703a3a53746f72616765446f75626c654d61703a3a73746f726167655f646f75626c655f6d61705f66696e616c5f6b65793a3a683835376436303732653465333161626485035f3c70616c6c65745f636f6c6c6563746976653a3a43616c6c3c542c493e2061732073705f72756e74696d653a3a7472616974733a3a446973706174636861626c653e3a3a64697370617463683a3a686332656361626135373066333935643186035f3c70616c6c65745f636f6c6c6563746976653a3a43616c6c3c542c493e2061732073705f72756e74696d653a3a7472616974733a3a446973706174636861626c653e3a3a64697370617463683a3a68336364396433343333353132646130348703653c70616c6c65745f656c656374696f6e735f70687261676d656e3a3a43616c6c3c543e2061732073705f72756e74696d653a3a7472616974733a3a446973706174636861626c653e3a3a64697370617463683a3a6838613562626239613433653037616562880399013c70616c6c65745f636f6c6c6563746976653a3a4d6f64756c653c542c493e206173206672616d655f737570706f72743a3a7472616974733a3a4368616e67654d656d626572733c3c54206173206672616d655f73797374656d3a3a54726169743e3a3a4163636f756e7449643e3e3a3a6368616e67655f6d656d626572735f736f727465643a3a683334633463386337383039346134376189038d013c70616c6c65745f636f6c6c6563746976653a3a4d6f64756c653c542c493e206173206672616d655f737570706f72743a3a7472616974733a3a4368616e67654d656d626572733c3c54206173206672616d655f73797374656d3a3a54726169743e3a3a4163636f756e7449643e3e3a3a7365745f7072696d653a3a68663237303363366332376662323132358a034b6672616d655f737570706f72743a3a7472616974733a3a4368616e67654d656d626572733a3a7365745f6d656d626572735f736f727465643a3a68616163356163383434656339636335638b035b3c70616c6c65745f74726561737572793a3a43616c6c3c543e2061732073705f72756e74696d653a3a7472616974733a3a446973706174636861626c653e3a3a64697370617463683a3a68653062373261643462393733306435648c03563c73705f72756e74696d653a3a44697370617463684572726f722061732073705f72756e74696d653a3a7472616974733a3a5072696e7461626c653e3a3a7072696e743a3a68633066373138633935356130643634378d03386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a68303264623332613236646134313439648e035b3c70616c6c65745f7265636f766572793a3a43616c6c3c543e2061732073705f72756e74696d653a3a7472616974733a3a446973706174636861626c653e3a3a64697370617463683a3a68613935396666393732666665386434658f035c3c70616c6c65745f736f63696574793a3a43616c6c3c542c493e2061732073705f72756e74696d653a3a7472616974733a3a446973706174636861626c653e3a3a64697370617463683a3a683332353566313531643664303961346390034a3c58206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a7573696e675f656e636f6465643a3a683963333434653630633631653562336191033c7061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653a3a656e636f64653a3a683035353864643065373561356432613292032f636f72653a3a7074723a3a64726f705f696e5f706c6163653a3a68613464643335613231313331613565342e31393693032b636f72653a3a7074723a3a64726f705f696e5f706c6163653a3a686462303138343034393838663262343594032b636f72653a3a7074723a3a64726f705f696e5f706c6163653a3a686130623962343764626266346632373395032b636f72653a3a7074723a3a64726f705f696e5f706c6163653a3a683030366334333662383333643465313396032b636f72653a3a7074723a3a64726f705f696e5f706c6163653a3a68353434316663386636616165373266369703543c616c6c6f633a3a7665633a3a5665633c543e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a68366636323035663034376166636165629803543c616c6c6f633a3a7665633a3a5665633c543e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a683366323637663033373665616234663499036b3c7061726974795f7363616c655f636f6465633a3a636f6d706163743a3a436f6d706163743c7536343e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a68376362326332663830623762623961359a03543c616c6c6f633a3a7665633a3a5665633c543e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a68386165376366653737663163373662649b037a3c70616c6c65745f696e64696365733a3a616464726573733a3a416464726573733c4163636f756e7449642c4163636f756e74496e6465783e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a68613363643430363432386437373633329c036c3c7061726974795f7363616c655f636f6465633a3a636f6d706163743a3a436f6d706163743c753132383e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a68393066663333616465356538656439379d037a70616c6c65745f636f6c6c6563746976653a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f722070616c6c65745f636f6c6c6563746976653a3a43616c6c3c542c493e3e3a3a6465636f64653a3a68363861393935633264643030666335659e036c70616c6c65745f7375646f3a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f722070616c6c65745f7375646f3a3a43616c6c3c543e3e3a3a6465636f64653a3a68313635623762323539656631626237349f037470616c6c65745f7265636f766572793a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f722070616c6c65745f7265636f766572793a3a43616c6c3c543e3e3a3a6465636f64653a3a6862626431623264323936633537373263a0039b063c6e6f64655f72756e74696d653a3a52756e74696d652061732073705f6170693a3a72756e74696d655f6465636c5f666f725f4d657461646174613a3a4d657461646174613c73705f72756e74696d653a3a67656e657269633a3a626c6f636b3a3a426c6f636b3c73705f72756e74696d653a3a67656e657269633a3a6865616465723a3a4865616465723c7533322c73705f72756e74696d653a3a7472616974733a3a426c616b6554776f3235363e2c73705f72756e74696d653a3a67656e657269633a3a756e636865636b65645f65787472696e7369633a3a556e636865636b656445787472696e7369633c3c70616c6c65745f696e64696365733a3a4d6f64756c653c6e6f64655f72756e74696d653a3a52756e74696d653e2061732073705f72756e74696d653a3a7472616974733a3a5374617469634c6f6f6b75703e3a3a536f757263652c6e6f64655f72756e74696d653a3a43616c6c2c73705f72756e74696d653a3a4d756c74695369676e61747572652c286672616d655f73797374656d3a3a436865636b56657273696f6e3c6e6f64655f72756e74696d653a3a52756e74696d653e2c206672616d655f73797374656d3a3a436865636b47656e657369733c6e6f64655f72756e74696d653a3a52756e74696d653e2c206672616d655f73797374656d3a3a436865636b4572613c6e6f64655f72756e74696d653a3a52756e74696d653e2c206672616d655f73797374656d3a3a436865636b4e6f6e63653c6e6f64655f72756e74696d653a3a52756e74696d653e2c206672616d655f73797374656d3a3a436865636b5765696768743c6e6f64655f72756e74696d653a3a52756e74696d653e2c2070616c6c65745f7472616e73616374696f6e5f7061796d656e743a3a4368617267655472616e73616374696f6e5061796d656e743c6e6f64655f72756e74696d653a3a52756e74696d653e2c2070616c6c65745f636f6e7472616374733a3a436865636b426c6f636b4761734c696d69743c6e6f64655f72756e74696d653a3a52756e74696d653e293e3e3e3e3a3a6d657461646174613a3a6839316236333832656330386563373266a103aa0173705f72756e74696d653a3a7472616e73616374696f6e5f76616c69646974793a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f646520666f722073705f72756e74696d653a3a7472616e73616374696f6e5f76616c69646974793a3a5472616e73616374696f6e56616c69646974794572726f723e3a3a656e636f64655f746f3a3a6864373562303334313263386431613964a2036b3c70616c6c65745f696d5f6f6e6c696e653a3a4d6f64756c653c543e2061732073705f72756e74696d653a3a7472616974733a3a56616c6964617465556e7369676e65643e3a3a76616c69646174655f756e7369676e65643a3a6837623336343161326139316430653263a3033d70616c6c65745f696d5f6f6e6c696e653a3a4d6f64756c653c543e3a3a69735f6f6e6c696e655f6175783a3a6836356138323233393863633765333436a403633c636f72653a3a697465723a3a61646170746572733a3a4d61703c492c463e20617320636f72653a3a697465723a3a7472616974733a3a6974657261746f723a3a4974657261746f723e3a3a6e6578743a3a6863333836373734376630383533333761a5034d73705f696f3a3a6f6666636861696e3a3a65787465726e5f686f73745f66756e6374696f6e5f696d706c733a3a6e6574776f726b5f73746174653a3a6835386163656333386634646635653633a6034a73705f696f3a3a63727970746f3a3a65787465726e5f686f73745f66756e6374696f6e5f696d706c733a3a737232353531395f7369676e3a3a6862313662346664653430613036303833a703473c70616c6c65745f696d5f6f6e6c696e653a3a43616c6c3c543e20617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6831613936633561383337333835663638a80347636f72653a3a666d743a3a6e756d3a3a3c696d706c20636f72653a3a666d743a3a446562756720666f72207533323e3a3a666d743a3a6834383834303938396633316662393031a9033e73705f72756e74696d653a3a67656e657269633a3a656e636f64655f776974685f7665635f7072656669783a3a6861666233356534386630336131633465aa035273705f696f3a3a6f6666636861696e3a3a65787465726e5f686f73745f66756e6374696f6e5f696d706c733a3a7375626d69745f7472616e73616374696f6e3a3a6866643232643034323535663638396634ab03583c70616c6c65745f696d5f6f6e6c696e653a3a4f6666636861696e4572723c426c6f636b4e756d6265723e20617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6862353663383330653462646339643934ac03383c285431302c205431312920617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6862363365393836373462613837326431ad03303c265420617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6838343338373437393439393761346636ae0396013c70616c6c65745f696d5f6f6e6c696e653a3a4d6f64756c653c543e2061732070616c6c65745f73657373696f6e3a3a4f6e6553657373696f6e48616e646c65723c3c54206173206672616d655f73797374656d3a3a54726169743e3a3a4163636f756e7449643e3e3a3a6f6e5f6265666f72655f73657373696f6e5f656e64696e673a3a6835326264663665323061663230616233af03d3023c70616c6c65745f7374616b696e673a3a4578706f737572654f663c543e2061732073705f72756e74696d653a3a7472616974733a3a436f6e766572743c3c54206173206672616d655f73797374656d3a3a54726169743e3a3a4163636f756e7449642c636f72653a3a6f7074696f6e3a3a4f7074696f6e3c70616c6c65745f7374616b696e673a3a4578706f737572653c3c54206173206672616d655f73797374656d3a3a54726169743e3a3a4163636f756e7449642c3c3c542061732070616c6c65745f7374616b696e673a3a54726169743e3a3a43757272656e6379206173206672616d655f737570706f72743a3a7472616974733a3a43757272656e63793c3c54206173206672616d655f73797374656d3a3a54726169743e3a3a4163636f756e7449643e3e3a3a42616c616e63653e3e3e3e3a3a636f6e766572743a3a6864336563323230643131303961653731b003443c616c6c6f633a3a7665633a3a5665633c543e20617320636f72653a3a636c6f6e653a3a436c6f6e653e3a3a636c6f6e653a3a6837316233383732353337356534613433b103706672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a646f75626c655f6d61703a3a53746f72616765446f75626c654d61703a3a73746f726167655f646f75626c655f6d61705f66696e616c5f6b65793a3a6866313464336431333934636663663461b20368636f72653a3a6f70733a3a66756e6374696f6e3a3a696d706c733a3a3c696d706c20636f72653a3a6f70733a3a66756e6374696f6e3a3a466e4d75743c413e20666f7220266d757420463e3a3a63616c6c5f6d75743a3a6833613439393630306633646462633366b303f4013c70616c6c65745f7374616b696e673a3a4d6f64756c653c543e2061732073705f7374616b696e673a3a6f6666656e63653a3a4f6e4f6666656e636548616e646c65723c3c54206173206672616d655f73797374656d3a3a54726169743e3a3a4163636f756e7449642c283c542061732070616c6c65745f73657373696f6e3a3a54726169743e3a3a56616c696461746f7249642c203c542061732070616c6c65745f73657373696f6e3a3a686973746f726963616c3a3a54726169743e3a3a46756c6c4964656e74696669636174696f6e293e3e3a3a6f6e5f6f6666656e63653a3a6865323661336162313866616434366362b4033570616c6c65745f7374616b696e673a3a736c617368696e673a3a646f5f736c6173683a3a6835316433626631383463363062666264b5033470616c6c65745f7374616b696e673a3a4d6f64756c653c543e3a3a626f6e6465643a3a6836383731343534656366306135396566b6033b70616c6c65745f7374616b696e673a3a4d6f64756c653c543e3a3a7570646174655f6c65646765723a3a6836363232636237373934613763323731b7034970616c6c65745f7374616b696e673a3a736c617368696e673a3a496e7370656374696e675370616e733c543e3a3a6572615f7370616e3a3a6864333736336438623638363764626463b8035e70616c6c65745f7374616b696e673a3a736c617368696e673a3a496e7370656374696e675370616e733c543e3a3a636f6d706172655f616e645f7570646174655f7370616e5f736c6173683a3a6830383866303961623436356330353464b903726672616d655f6578656375746976653a3a4578656375746976653c53797374656d2c426c6f636b2c436f6e746578742c556e7369676e656456616c696461746f722c416c6c4d6f64756c65733e3a3a696e697469616c697a655f626c6f636b3a3a6838643534356164393831393863336636ba03746672616d655f6578656375746976653a3a4578656375746976653c53797374656d2c426c6f636b2c436f6e746578742c556e7369676e656456616c696461746f722c416c6c4d6f64756c65733e3a3a657874726163745f7072655f6469676573743a3a6865333534653561626234386137663365bb03437061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653a3a7573696e675f656e636f6465643a3a6830376536373730333530373833656436bc03386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6861326437366139663161623532383733bd03716672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a646f75626c655f6d61703a3a53746f72616765446f75626c654d61703a3a73746f726167655f646f75626c655f6d61705f66696e616c5f6b6579313a3a6865373436346265383633313432373532be034a3c58206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a7573696e675f656e636f6465643a3a6835346434363165306161633464373939bf032d636f72653a3a736c6963653a3a736f72743a3a726563757273653a3a6861613633323434613665653438656434c003716672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a646f75626c655f6d61703a3a53746f72616765446f75626c654d61703a3a73746f726167655f646f75626c655f6d61705f66696e616c5f6b6579313a3a6838383536616163313135363263636137c103386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6830656362303838376238633237393736c203716672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a646f75626c655f6d61703a3a53746f72616765446f75626c654d61703a3a73746f726167655f646f75626c655f6d61705f66696e616c5f6b6579313a3a6864636135303635303264633961666634c303543c616c6c6f633a3a7665633a3a5665633c543e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a6865396565343764623562313863356563c403437061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653a3a7573696e675f656e636f6465643a3a6839346666363633626539396531633266c5037a3c6672616d655f737570706f72743a3a73746f726167653a3a6d6967726174696f6e3a3a53746f726167654974657261746f723c543e20617320636f72653a3a697465723a3a7472616974733a3a6974657261746f723a3a4974657261746f723e3a3a6e6578743a3a6831373562343535613262623832323030c603476672616d655f737570706f72743a3a73746f726167653a3a6d6967726174696f6e3a3a7075745f73746f726167655f76616c75653a3a6833306138306533636233303166313264c703476672616d655f737570706f72743a3a73746f726167653a3a6d6967726174696f6e3a3a7075745f73746f726167655f76616c75653a3a6865373532383032313863616533303938c803476672616d655f737570706f72743a3a73746f726167653a3a6d6967726174696f6e3a3a6765745f73746f726167655f76616c75653a3a6833366530623033306631633562393836c9037a3c6672616d655f737570706f72743a3a73746f726167653a3a6d6967726174696f6e3a3a53746f726167654974657261746f723c543e20617320636f72653a3a697465723a3a7472616974733a3a6974657261746f723a3a4974657261746f723e3a3a6e6578743a3a6835383261616133646632616264346238ca03386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6833663862646362333164663162646663cb037a3c6672616d655f737570706f72743a3a73746f726167653a3a6d6967726174696f6e3a3a53746f726167654974657261746f723c543e20617320636f72653a3a697465723a3a7472616974733a3a6974657261746f723a3a4974657261746f723e3a3a6e6578743a3a6839376666626631653130386564646461cc03486672616d655f737570706f72743a3a73746f726167653a3a6d6967726174696f6e3a3a74616b655f73746f726167655f76616c75653a3a6861376363353162666564653361656135cd034b6672616d655f73797374656d3a3a4d6f64756c653c543e3a3a72656769737465725f65787472615f7765696768745f756e636865636b65643a3a6861373334663833333132613335386634ce03366672616d655f73797374656d3a3a4d6f64756c653c543e3a3a696e697469616c697a653a3a6861366633623938363765326336326339cf03733c285475706c65456c656d656e74302c205475706c65456c656d656e7431292061732073705f72756e74696d653a3a7472616974733a3a4f6e496e697469616c697a653c426c6f636b4e756d6265723e3e3a3a6f6e5f696e697469616c697a653a3a6830363934306464326139363764343331d0037a6672616d655f6578656375746976653a3a4578656375746976653c53797374656d2c426c6f636b2c436f6e746578742c556e7369676e656456616c696461746f722c416c6c4d6f64756c65733e3a3a6170706c795f65787472696e7369635f776974685f6c656e3a3a6861623933646434343165633861376231d1039f013c73705f72756e74696d653a3a67656e657269633a3a756e636865636b65645f65787472696e7369633a3a556e636865636b656445787472696e7369633c416464726573732c43616c6c2c5369676e61747572652c45787472613e2061732073705f72756e74696d653a3a7472616974733a3a436865636b61626c653c4c6f6f6b75703e3e3a3a636865636b3a3a6838356661333738313536613735323032d2035c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6865656334656163333836303065663964d303406672616d655f73797374656d3a3a436865636b5765696768743c543e3a3a646f5f7072655f64697370617463683a3a6835363737346566346462643931396133d4037d3c70616c6c65745f7472616e73616374696f6e5f7061796d656e743a3a4368617267655472616e73616374696f6e5061796d656e743c543e2061732073705f72756e74696d653a3a7472616974733a3a5369676e6564457874656e73696f6e3e3a3a76616c69646174653a3a6861613565313635386566313133336263d503363c5420617320636f72653a3a636f6e766572743a3a496e746f3c553e3e3a3a696e746f3a3a6861366631653164373332623438343138d603467061726974795f7761736d3a3a656c656d656e74733a3a73656374696f6e3a3a436f646553656374696f6e3a3a626f646965733a3a6830613263616439623032326331373162d7033e70616c6c65745f696d5f6f6e6c696e653a3a4d6f64756c653c543e3a3a63616c6c5f66756e6374696f6e733a3a6836353063333436636663323066366539d8034070616c6c65745f696d5f6f6e6c696e653a3a4d6f64756c653c543e3a3a73746f726167655f6d657461646174613a3a6863666562343031626262393331366338d9034570616c6c65745f66696e616c6974795f747261636b65723a3a4d6f64756c653c543e3a3a63616c6c5f66756e6374696f6e733a3a6863373533353930333435623035626436da035070616c6c65745f66696e616c6974795f747261636b65723a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a6862633538306330326534653434616137db03a2013c70616c6c65745f66696e616c6974795f747261636b65723a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a5265706f72744c6174656e637944656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6832323938306530353931623165643666dc039f013c70616c6c65745f66696e616c6974795f747261636b65723a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a57696e646f7753697a6544656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6831363063393361316436313534623165dd0334636f72653a3a736c6963653a3a736f72743a3a627265616b5f7061747465726e733a3a6831323438383566306438653036623037de032e636f72653a3a736c6963653a3a736f72743a3a68656170736f72743a3a6863663161613466313036646532353033df033c636f72653a3a736c6963653a3a736f72743a3a7061727469616c5f696e73657274696f6e5f736f72743a3a6836613661393737383033306439363061e0032d636f72653a3a736c6963653a3a736f72743a3a726563757273653a3a6862363037313061353363363061616630e10334636f72653a3a736c6963653a3a736f72743a3a627265616b5f7061747465726e733a3a6837646333626436363865626561376462e2032e636f72653a3a736c6963653a3a736f72743a3a68656170736f72743a3a6831373930643832323038393461373038e3033c636f72653a3a736c6963653a3a736f72743a3a7061727469616c5f696e73657274696f6e5f736f72743a3a6835323737626231363136323834363632e4032d636f72653a3a736c6963653a3a736f72743a3a726563757273653a3a6864303138386633353034386432333663e50334636f72653a3a736c6963653a3a736f72743a3a627265616b5f7061747465726e733a3a6838356538663638636139653863616532e6032e636f72653a3a736c6963653a3a736f72743a3a68656170736f72743a3a6839616630646135613731666561663835e7033c636f72653a3a736c6963653a3a736f72743a3a7061727469616c5f696e73657274696f6e5f736f72743a3a6866616464313535383135636538663934e803573c49642061732073705f72756e74696d653a3a7472616974733a3a4163636f756e744964436f6e76657273696f6e3c543e3e3a3a696e746f5f7375625f6163636f756e743a3a6831336533616531303362303733353130e903553c73705f72756e74696d653a3a4d756c74695369676e61747572652061732073705f72756e74696d653a3a7472616974733a3a5665726966793e3a3a7665726966793a3a6838343238646263656161303237353965ea036073705f696f3a3a63727970746f3a3a65787465726e5f686f73745f66756e6374696f6e5f696d706c733a3a736563703235366b315f65636473615f7265636f7665725f636f6d707265737365643a3a6832393038643332346433613331366539eb03613c70616c6c65745f696d5f6f6e6c696e653a3a4d6f64756c653c543e206173206672616d655f6d657461646174613a3a4d6f64756c654572726f724d657461646174613e3a3a6d657461646174613a3a6838313830643536343735383630663934ec03683c70616c6c65745f66696e616c6974795f747261636b65723a3a4d6f64756c653c543e206173206672616d655f6d657461646174613a3a4d6f64756c654572726f724d657461646174613e3a3a6d657461646174613a3a6866633135656635383130353232346135ed037d7061726974795f7363616c655f636f6465633a3a636f6465633a3a696e6e65725f7475706c655f696d706c3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f72202851302c205230293e3a3a6465636f64653a3a6861393832396435663965303637306637ee03543c616c6c6f633a3a7665633a3a5665633c543e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a6831643130383766386135353334333433ef03437061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653a3a7573696e675f656e636f6465643a3a6838633538323632396537656530386639f003303c265420617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6835343266353666663539323633666630f103393c54206173206672616d655f737570706f72743a3a7472616974733a3a4c656e3e3a3a6c656e3a3a6863343463386439663762623033383161f2032d616c6c6f633a3a7665633a3a5665633c543e3a3a726573697a653a3a6830336532313730326130343162613935f303443c616c6c6f633a3a7665633a3a5665633c543e20617320636f72653a3a636c6f6e653a3a436c6f6e653e3a3a636c6f6e653a3a6831636232396664353236653137643163f403463c616c6c6f633a3a7665633a3a5665633c543e20617320636f72653a3a6f70733a3a64726f703a3a44726f703e3a3a64726f703a3a6838343634333533643836646563633965f503543c616c6c6f633a3a7665633a3a5665633c543e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a6832653338333466336137313262363366f603723c73705f72756e74696d653a3a67656e657269633a3a6865616465723a3a4865616465723c4e756d6265722c486173683e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a6833383166383730333239313664353538f703543c616c6c6f633a3a7665633a3a5665633c543e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a6839383337376237656362663436333239f803513c616c6c6f633a3a7665633a3a5665633c543e20617320616c6c6f633a3a7665633a3a53706563457874656e643c542c493e3e3a3a66726f6d5f697465723a3a6836336236343538336535646333613337f903513c616c6c6f633a3a7665633a3a5665633c543e20617320616c6c6f633a3a7665633a3a53706563457874656e643c542c493e3e3a3a66726f6d5f697465723a3a6839306462366562313630333038353364fa03733c285475706c65456c656d656e74302c205475706c65456c656d656e7431292061732073705f72756e74696d653a3a7472616974733a3a4f6e496e697469616c697a653c426c6f636b4e756d6265723e3e3a3a6f6e5f696e697469616c697a653a3a6832363161613066376437646137356437fb033870616c6c65745f626162653a3a4d6f64756c653c543e3a3a646f5f696e697469616c697a653a3a6863613262366666333064623965643466fc033e70616c6c65745f626162653a3a4d6f64756c653c543e3a3a63757272656e745f65706f63685f73746172743a3a6866613161653966323663373761316164fd03386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6863613461346432316630373239303065fe03386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6836356537383964666166633936376462ff033770616c6c65745f7374616b696e673a3a4d6f64756c653c543e3a3a73746172745f6572613a3a686235313437356561346234313636313780043570616c6c65745f7374616b696e673a3a4d6f64756c653c543e3a3a6e65775f6572613a3a68346439386131373866643831353638648104386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a68356636323535626532306433353463328204776672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a3c696d706c206672616d655f737570706f72743a3a73746f726167653a3a53746f726167654d61703c4b2c563e20666f7220473e3a3a696e736572743a3a68343237323961343932343232653131398304386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a686562326636626634356364326134633884043d70616c6c65745f6772616e6470613a3a4d6f64756c653c543e3a3a7363686564756c655f6368616e67653a3a68353962323530333063386232366634648504386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a68393035386161303733373865386330328604386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a683665636135313764646237323539383987043c70616c6c65745f626162653a3a4d6f64756c653c543e3a3a6465706f7369745f636f6e73656e7375733a3a686339643233333135643832333236363888042b636f72653a3a7074723a3a64726f705f696e5f706c6163653a3a68633031303439663033633938346435378904386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a68333631636530366634366330633564628a04376672616d655f73797374656d3a3a4d6f64756c653c543e3a3a6465706f7369745f6c6f673a3a68396266343464313637373665613037338b043a6672616d655f73797374656d3a3a4d6f64756c653c543e3a3a63616c6c5f66756e6374696f6e733a3a68343638646531353062656435303435368c043c6672616d655f73797374656d3a3a4d6f64756c653c543e3a3a73746f726167655f6d657461646174613a3a68306636363562636531666639316539628d04703c70616c6c65745f73657373696f6e3a3a5f5f4765744279746553747275637443757272656e74496e6465783c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a68366438636264323339366535626135318e04683c6672616d655f73797374656d3a3a5f5f476574427974655374727563744576656e74733c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a68656439376363303933656438623464348f04703c6672616d655f73797374656d3a3a5f5f4765744279746553747275637445787472696e73696373526f6f743c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a68623663366163613935306233363138649004703c6672616d655f73797374656d3a3a5f5f4765744279746553747275637445787472696e736963436f756e743c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a68613438336337326433633963303161669104693c6672616d655f73797374656d3a3a5f5f476574427974655374727563744163636f756e743c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a68653130663639666536356336383931629204346672616d655f73797374656d3a3a4d6f64756c653c543e3a3a66696e616c697a653a3a6861333061323831663063363435393834930485013c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6c696e6b65645f6d61703a3a456e756d657261746f723c4b2c562c463e20617320636f72653a3a697465723a3a7472616974733a3a6974657261746f723a3a4974657261746f723e3a3a6e6578743a3a68306666316438326133653164336666669404696672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6c696e6b65645f6d61703a3a4b6579466f726d61743a3a73746f726167655f6c696e6b65645f6d61705f66696e616c5f6b65793a3a68313638333738373563336632353635329504386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6836366135613838613330376563316639960485013c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6c696e6b65645f6d61703a3a456e756d657261746f723c4b2c562c463e20617320636f72653a3a697465723a3a7472616974733a3a6974657261746f723a3a4974657261746f723e3a3a6e6578743a3a68316531666161306332363733663661649704696672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6c696e6b65645f6d61703a3a4b6579466f726d61743a3a73746f726167655f6c696e6b65645f6d61705f66696e616c5f6b65793a3a68646632333331346336336337356264649804386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6832616162306362303164613465313131990485013c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6c696e6b65645f6d61703a3a456e756d657261746f723c4b2c562c463e20617320636f72653a3a697465723a3a7472616974733a3a6974657261746f723a3a4974657261746f723e3a3a6e6578743a3a68353662643439663662646438316338629a04696672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6c696e6b65645f6d61703a3a4b6579466f726d61743a3a73746f726167655f6c696e6b65645f6d61705f66696e616c5f6b65793a3a68336665643063333931666639616463309b04386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a68623865633930613264313361366462389c044a3c58206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a7573696e675f656e636f6465643a3a68383033323135663636663530346563399d043c7061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653a3a656e636f64653a3a68636433653434303562366362373966619e043c70616c6c65745f73657373696f6e3a3a4d6f64756c653c543e3a3a63616c6c5f66756e6374696f6e733a3a68666539616263656334653932356361309f043e70616c6c65745f73657373696f6e3a3a4d6f64756c653c543e3a3a73746f726167655f6d657461646174613a3a6837353435313161666338396166353565a0044770616c6c65745f73657373696f6e3a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a6861386132383637626637343931323961a1049c013c70616c6c65745f73657373696f6e3a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a44454455505f4b45595f50524546495844656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6863303466636434366265346264653334a2043570616c6c65745f73657373696f6e3a3a4d6f64756c653c543e3a3a64697361626c653a3a6861393934323761663135663236636630a304437061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653a3a7573696e675f656e636f6465643a3a6836613966336232366434363130353439a4049c013c73705f72756e74696d653a3a67656e657269633a3a756e636865636b65645f65787472696e7369633a3a556e636865636b656445787472696e7369633c416464726573732c43616c6c2c5369676e61747572652c45787472613e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a6831623035623364306138373866306436a504b2013c6672616d655f73797374656d3a3a4d6f64756c653c543e206173206672616d655f737570706f72743a3a7472616974733a3a53746f7265644d61703c3c54206173206672616d655f73797374656d3a3a54726169743e3a3a4163636f756e7449642c3c54206173206672616d655f73797374656d3a3a54726169743e3a3a4163636f756e74446174613e3e3a3a7472795f6d75746174655f6578697374733a3a6834396135396639353464376461383039a6043c6672616d655f73797374656d3a3a436865636b5765696768743c543e3a3a646f5f76616c69646174653a3a6833376639363263363262376330636138a7045d3c6672616d655f73797374656d3a3a4d6f64756c653c543e206173206672616d655f6d657461646174613a3a4d6f64756c654572726f724d657461646174613e3a3a6d657461646174613a3a6865323231363936613636653762653964a8045f3c70616c6c65745f73657373696f6e3a3a4d6f64756c653c543e206173206672616d655f6d657461646174613a3a4d6f64756c654572726f724d657461646174613e3a3a6d657461646174613a3a6831376638636666393031313164333963a9046f3c285475706c65456c656d656e74302c205475706c65456c656d656e7431292061732073705f72756e74696d653a3a7472616974733a3a4f6e46696e616c697a653c426c6f636b4e756d6265723e3e3a3a6f6e5f66696e616c697a653a3a6863613639353039343261363066343466aa04386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6839316338643937666233323264316236ab046f3c285475706c65456c656d656e74302c205475706c65456c656d656e7431292061732073705f72756e74696d653a3a7472616974733a3a4f6e46696e616c697a653c426c6f636b4e756d6265723e3e3a3a6f6e5f66696e616c697a653a3a6864643264313938386262343036356462ac0490013c70616c6c65745f72616e646f6d6e6573735f636f6c6c6563746976655f666c69703a3a4d6f64756c653c543e206173206672616d655f737570706f72743a3a7472616974733a3a52616e646f6d6e6573733c3c54206173206672616d655f73797374656d3a3a54726169743e3a3a486173683e3e3a3a72616e646f6d3a3a6838623438303031316563393832363031ad04386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6837303666303832313061366661346232ae0468636f72653a3a6f70733a3a66756e6374696f6e3a3a696d706c733a3a3c696d706c20636f72653a3a6f70733a3a66756e6374696f6e3a3a466e4d75743c413e20666f7220266d757420463e3a3a63616c6c5f6d75743a3a6835643665346535376531643836336432af042d70616c6c65745f736f63696574793a3a7069636b5f7573697a653a3a6861313339316563613731346431383831b0043b70616c6c65745f736f63696574793a3a4d6f64756c653c542c493e3a3a62756d705f7061796f75743a3a6866633931313461663334373965353863b1043c7061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653a3a656e636f64653a3a6832393232356239643265636531343138b204706672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a646f75626c655f6d61703a3a53746f72616765446f75626c654d61703a3a73746f726167655f646f75626c655f6d61705f66696e616c5f6b65793a3a6838646365626133336331326432353035b3045c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6833303031616338376665366430373930b404396672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a74616b653a3a6861316631303063663633313131663031b5043e70616c6c65745f736f63696574793a3a4d6f64756c653c542c493e3a3a73757370656e645f6d656d6265723a3a6861643435633639366330383266376632b6044470616c6c65745f656c656374696f6e735f70687261676d656e3a3a4d6f64756c653c543e3a3a646f5f70687261676d656e3a3a6864326531616662306631333233323064b704386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6835303934643436346164333364663064b804437061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653a3a7573696e675f656e636f6465643a3a6831353630366539353939653834636139b9043970616c6c65745f7375646f3a3a4d6f64756c653c543e3a3a63616c6c5f66756e6374696f6e733a3a6838366131353032633764646633323136ba043b70616c6c65745f7375646f3a3a4d6f64756c653c543e3a3a73746f726167655f6d657461646174613a3a6834383830663966626337376666383039bb04643c70616c6c65745f7375646f3a3a5f5f476574427974655374727563744b65793c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6835343631316264623365356261313939bc043e70616c6c65745f736f63696574793a3a4d6f64756c653c542c493e3a3a63616c6c5f66756e6374696f6e733a3a6830653464393031396339343066613561bd044070616c6c65745f736f63696574793a3a4d6f64756c653c542c493e3a3a73746f726167655f6d657461646174613a3a6839306430626637386333373938383831be044970616c6c65745f736f63696574793a3a4d6f64756c653c542c493e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a6863316661323230366563336363666333bf049e013c70616c6c65745f736f63696574793a3a4d6f64756c653c542c493e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a526f746174696f6e506572696f6444656661756c74427974654765747465723c542c493e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6865653837383138393735633434396362c0049b013c70616c6c65745f736f63696574793a3a4d6f64756c653c542c493e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a506572696f645370656e6444656661756c74427974654765747465723c542c493e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6831643836656139396431643038663938c1049a013c70616c6c65745f736f63696574793a3a4d6f64756c653c542c493e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a4d6178537472696b657344656661756c74427974654765747465723c542c493e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6835613765373830373334383936646237c204a2013c70616c6c65745f736f63696574793a3a4d6f64756c653c542c493e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a57726f6e6753696465446564756374696f6e44656661756c74427974654765747465723c542c493e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6839636439633864373135623130643239c304850170616c6c65745f736f63696574793a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f722070616c6c65745f736f63696574793a3a4269644b696e643c4163636f756e7449642c42616c616e63653e3e3a3a6465636f64653a3a6865336265323830653333616261393437c4043d70616c6c65745f74726561737572793a3a4d6f64756c653c543e3a3a63616c6c5f66756e6374696f6e733a3a6864393733613163613237313631343730c5043f70616c6c65745f74726561737572793a3a4d6f64756c653c543e3a3a73746f726167655f6d657461646174613a3a6836386531663064643431333037653066c6044870616c6c65745f74726561737572793a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a6836336666666561313538363835353462c7049a013c70616c6c65745f74726561737572793a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a54697046696e6465727346656544656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6833653438623263353930393862646537c80498013c70616c6c65745f74726561737572793a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a5370656e64506572696f6444656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6865613434626261396639616231326631c90491013c70616c6c65745f74726561737572793a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a4275726e44656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6862613436613435363034653231323365ca0499013c70616c6c65745f74726561737572793a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a50726f706f73616c426f6e6444656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6834363330343133336437623531356461cb04443c7061726974795f7761736d3a3a696f3a3a4572726f7220617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6865386662346165393338366663353734cc046f3c7061726974795f7761736d3a3a656c656d656e74733a3a73656374696f6e3a3a53656374696f6e206173207061726974795f7761736d3a3a656c656d656e74733a3a446573657269616c697a653e3a3a646573657269616c697a653a3a6865613766356338653866623764383163cd042b636f72653a3a7074723a3a64726f705f696e5f706c6163653a3a6861323931376539633633386130386339ce04347761736d695f76616c69646174696f6e3a3a76616c69646174655f6d6f64756c653a3a6830346136386562343466626635623738cf0448616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6d61703a3a42547265654d61703c4b2c563e3a3a696e736572743a3a6836326231383837323861393963303830d0043c7061726974795f7761736d3a3a6275696c6465723a3a6d6f64756c653a3a66726f6d5f6d6f64756c653a3a6830363635613134666339343330393763d104537061726974795f7761736d3a3a6275696c6465723a3a6d6f64756c653a3a4d6f64756c654275696c6465723c463e3a3a7265736f6c76655f747970655f7265663a3a6831353837383863343566666539616566d204a9017061726974795f7761736d3a3a6275696c6465723a3a6d6f64756c653a3a3c696d706c20636f72653a3a636f6e766572743a3a46726f6d3c7061726974795f7761736d3a3a6275696c6465723a3a6d6f64756c653a3a4d6f64756c6553636166666f6c643e20666f72207061726974795f7761736d3a3a656c656d656e74733a3a6d6f64756c653a3a4d6f64756c653e3a3a66726f6d3a3a6866633639656565353635653932393835d30444707761736d5f7574696c733a3a6761733a3a436f756e7465723a3a66696e616c697a655f6d6574657265645f626c6f636b3a3a6864393833643833313031623561386535d4042d636f72653a3a736c6963653a3a736f72743a3a726563757273653a3a6836653865663132366235363563383365d504507061726974795f7761736d3a3a6275696c6465723a3a6d6f64756c653a3a4d6f64756c654275696c6465723c463e3a3a707573685f66756e6374696f6e3a3a6833613061326634636332643634366162d6043c707761736d5f7574696c733a3a737461636b5f6865696768743a3a696e6a6563745f6c696d697465723a3a6838376435353561613436373461636566d7046b3c7061726974795f7761736d3a3a656c656d656e74733a3a73656374696f6e3a3a53656374696f6e206173207061726974795f7761736d3a3a656c656d656e74733a3a53657269616c697a653e3a3a73657269616c697a653a3a6832666634636163653661323937613735d8044170616c6c65745f6d656d626572736869703a3a4d6f64756c653c542c493e3a3a63616c6c5f66756e6374696f6e733a3a6835396635303536356536363838363265d9044370616c6c65745f6d656d626572736869703a3a4d6f64756c653c542c493e3a3a73746f726167655f6d657461646174613a3a6866363434663835393434633133666264da04437061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653a3a7573696e675f656e636f6465643a3a6866613564656438353362333739643039db043c7061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653a3a656e636f64653a3a6866353161666334303938653136326266dc0468636f72653a3a6f70733a3a66756e6374696f6e3a3a696d706c733a3a3c696d706c20636f72653a3a6f70733a3a66756e6374696f6e3a3a466e4d75743c413e20666f7220266d757420463e3a3a63616c6c5f6d75743a3a6836363761326132656265393764626563dd04386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6839363136643362343035313534396432de045c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6838313730643033303963376132316231df045c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6863363432616562643938356665613835e004386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6865653036386531326530656662613531e1044270616c6c65745f656c656374696f6e735f70687261676d656e3a3a4d6f64756c653c543e3a3a69735f6d656d6265723a3a6862333265636133396534633833323662e2045c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6863643264376161656233653035393038e30493013c70616c6c65745f656c656374696f6e735f70687261676d656e3a3a4d6f64756c653c543e206173206672616d655f737570706f72743a3a7472616974733a3a436f6e7461696e733c3c54206173206672616d655f73797374656d3a3a54726169743e3a3a4163636f756e7449643e3e3a3a736f727465645f6d656d626572733a3a6833653137623636316633633638396637e404386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6830333630326465666238326134613937e5045c3c70616c6c65745f7375646f3a3a4d6f64756c653c543e206173206672616d655f6d657461646174613a3a4d6f64756c654572726f724d657461646174613e3a3a6d657461646174613a3a6861613566363966396431353163326334e6043770616c6c65745f736f63696574793a3a4d6f64756c653c542c493e3a3a7075745f6269643a3a6838646135313434343439393330333865e7043a70616c6c65745f736f63696574793a3a4d6f64756c653c542c493e3a3a6164645f6d656d6265723a3a6831643836363035623636326362333433e8044273705f72756e74696d653a3a7472616974733a3a456e737572654f726967696e3a3a656e737572655f6f726967696e3a3a6865336566396636393138336531666138e904603c70616c6c65745f74726561737572793a3a4d6f64756c653c543e206173206672616d655f6d657461646174613a3a4d6f64756c654572726f724d657461646174613e3a3a6d657461646174613a3a6830383030323039656462386234643037ea04613c70616c6c65745f736f63696574793a3a4d6f64756c653c542c493e206173206672616d655f6d657461646174613a3a4d6f64756c654572726f724d657461646174613e3a3a6d657461646174613a3a6834633234623361636236353433656330eb046b3c7061726974795f7363616c655f636f6465633a3a636f6d706163743a3a436f6d706163743c7533323e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a6863326231633262353665333432646565ec04753c70616c6c65745f72616e646f6d6e6573735f636f6c6c6563746976655f666c69703a3a43616c6c3c543e206173206672616d655f737570706f72743a3a7472616974733a3a47657443616c6c4e616d653e3a3a6765745f63616c6c5f6e616d65733a3a6830663033343935353264336430373266ed04303c265420617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6861363534353137616431643466366439ee046f3c636f72653a3a697465723a3a61646170746572733a3a526573756c745368756e743c492c453e20617320636f72653a3a697465723a3a7472616974733a3a6974657261746f723a3a4974657261746f723e3a3a7472795f666f6c643a3a6832303535373938336535363336666432ef04303c265420617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6837616433376333343363333139306132f0045770616c6c65745f7472616e73616374696f6e5f7061796d656e743a3a4368617267655472616e73616374696f6e5061796d656e743c543e3a3a636f6d707574655f6665653a3a6835353838323765623762393839306338f1049a0173705f72756e74696d653a3a67656e657269633a3a626c6f636b3a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f722073705f72756e74696d653a3a67656e657269633a3a626c6f636b3a3a426c6f636b3c4865616465722c45787472696e7369633e3e3a3a6465636f64653a3a6837666434643136643933633039303332f2043c7061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653a3a656e636f64653a3a6863633339343936333437353237626438f304386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6838666634303138633539633336363138f404437061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653a3a7573696e675f656e636f6465643a3a6837653635376634323630373866633838f5043e70616c6c65745f636f6e7472616374733a3a7761736d3a3a72756e74696d653a3a6368617267655f6761733a3a6835636235653339653134326336333430f60481013c70616c6c65745f636f6e7472616374733a3a6163636f756e745f64623a3a4f7665726c61794163636f756e7444623c543e2061732070616c6c65745f636f6e7472616374733a3a6163636f756e745f64623a3a4163636f756e7444623c543e3e3a3a6765745f73746f726167653a3a6864646637313161353264313466656634f70488013c70616c6c65745f636f6e7472616374733a3a6163636f756e745f64623a3a4f7665726c61794163636f756e7444623c543e2061732070616c6c65745f636f6e7472616374733a3a6163636f756e745f64623a3a4163636f756e7444623c543e3e3a3a6765745f72656e745f616c6c6f77616e63653a3a6834373866323737663365313565353562f804683c636f72653a3a697465723a3a61646170746572733a3a4d61703c492c463e20617320636f72653a3a697465723a3a7472616974733a3a6974657261746f723a3a4974657261746f723e3a3a73697a655f68696e743a3a6831393862383136373563353665363465f904633c636f72653a3a697465723a3a61646170746572733a3a4d61703c492c463e20617320636f72653a3a697465723a3a7472616974733a3a6974657261746f723a3a4974657261746f723e3a3a6e6578743a3a6831633565346165666436616430306532fa043e636f72653a3a697465723a3a7472616974733a3a6974657261746f723a3a4974657261746f723a3a6e74683a3a6835653166333639636633343632643666fb043c70616c6c65745f6772616e6470613a3a4d6f64756c653c543e3a3a63616c6c5f66756e6374696f6e733a3a6833386537396134666339616339633663fc043e70616c6c65745f6772616e6470613a3a4d6f64756c653c543e3a3a73746f726167655f6d657461646174613a3a6865623239663365613962333135363232fd04703c70616c6c65745f6772616e6470613a3a5f5f4765744279746553747275637443757272656e7453657449643c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6835343461383439373366353635336631fe04693c70616c6c65745f6772616e6470613a3a5f5f4765744279746553747275637453746174653c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6839303031613235613937653730346239ff043670616c6c65745f62616c616e6365733a3a4d6f64756c653c542c493e3a3a6c6f636b733a3a683661383831386135366164663734356180053d70616c6c65745f62616c616e6365733a3a4d6f64756c653c542c493e3a3a7570646174655f6c6f636b733a3a686661326236663361643636623031646181053f70616c6c65745f62616c616e6365733a3a4d6f64756c653c542c493e3a3a63616c6c5f66756e6374696f6e733a3a683763303365636264336266326636333382054170616c6c65745f62616c616e6365733a3a4d6f64756c653c542c493e3a3a73746f726167655f6d657461646174613a3a686137343937323234356435616263353483056e3c70616c6c65745f62616c616e6365733a3a5f5f476574427974655374727563744163636f756e743c542c493e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a683365373331643964366139633630383184054a70616c6c65745f62616c616e6365733a3a4d6f64756c653c542c493e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a68643164383438613237643638333834668505810170616c6c65745f62616c616e6365733a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f722070616c6c65745f62616c616e6365733a3a4163636f756e74446174613c42616c616e63653e3e3a3a6465636f64653a3a686433373830383365633664643432633286053f70616c6c65745f6f6666656e6365733a3a4d6f64756c653c543e3a3a73746f726167655f6d657461646174613a3a683463656635333165303731383437363287054a70616c6c65745f7472616e73616374696f6e5f7061796d656e743a3a4d6f64756c653c543e3a3a73746f726167655f6d657461646174613a3a683861613530356138396232616636303488055370616c6c65745f7472616e73616374696f6e5f7061796d656e743a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a683466343362653265353561363035303189055170616c6c65745f72616e646f6d6e6573735f636f6c6c6563746976655f666c69703a3a4d6f64756c653c543e3a3a73746f726167655f6d657461646174613a3a68653238363064396334396633323466328a05860170616c6c65745f7374616b696e673a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f722070616c6c65745f7374616b696e673a3a4578706f737572653c4163636f756e7449642c42616c616e63653e3e3a3a6465636f64653a3a68306563383736383235343234303034648b055f3c70616c6c65745f6772616e6470613a3a4d6f64756c653c543e206173206672616d655f6d657461646174613a3a4d6f64756c654572726f724d657461646174613e3a3a6d657461646174613a3a68313662616463373865643862303665638c05623c70616c6c65745f62616c616e6365733a3a4d6f64756c653c542c493e206173206672616d655f6d657461646174613a3a4d6f64756c654572726f724d657461646174613e3a3a6d657461646174613a3a68616436656630653262396237393434348d057d3c70616c6c65745f636f6e7472616374733a3a6163636f756e745f64623a3a4469726563744163636f756e7444622061732070616c6c65745f636f6e7472616374733a3a6163636f756e745f64623a3a4163636f756e7444623c543e3e3a3a6765745f73746f726167653a3a68386661623331356636396364613634628e057f3c70616c6c65745f636f6e7472616374733a3a6163636f756e745f64623a3a4469726563744163636f756e7444622061732070616c6c65745f636f6e7472616374733a3a6163636f756e745f64623a3a4163636f756e7444623c543e3e3a3a6765745f636f64655f686173683a3a68313866316333323538323034353836618f0584013c70616c6c65745f636f6e7472616374733a3a6163636f756e745f64623a3a4469726563744163636f756e7444622061732070616c6c65745f636f6e7472616374733a3a6163636f756e745f64623a3a4163636f756e7444623c543e3e3a3a6765745f72656e745f616c6c6f77616e63653a3a6836383561636664373462303935396561900581013c70616c6c65745f636f6e7472616374733a3a6163636f756e745f64623a3a4469726563744163636f756e7444622061732070616c6c65745f636f6e7472616374733a3a6163636f756e745f64623a3a4163636f756e7444623c543e3e3a3a636f6e74726163745f6578697374733a3a683130663464383939386565386261396391057d3c70616c6c65745f636f6e7472616374733a3a6163636f756e745f64623a3a4469726563744163636f756e7444622061732070616c6c65745f636f6e7472616374733a3a6163636f756e745f64623a3a4163636f756e7444623c543e3e3a3a6765745f62616c616e63653a3a686339353433303035303436396661363392058f0173705f636f6e73656e7375735f626162653a3a646967657374733a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f722073705f636f6e73656e7375735f626162653a3a646967657374733a3a5261775072654469676573743e3a3a6465636f64653a3a683433343637626438333338313430633293054870616c6c65745f656c656374696f6e735f70687261676d656e3a3a4d6f64756c653c543e3a3a6c6f636b65645f7374616b655f6f663a3a683934386136303064666263303835646694054673705f61726974686d657469633a3a68656c706572735f3132386269743a3a6d756c7469706c795f62795f726174696f6e616c3a3a68653631313936646137623839666437619505533c73705f61726974686d657469633a3a726174696f6e616c3132383a3a526174696f6e616c31323820617320636f72653a3a636d703a3a4f72643e3a3a636d703a3a68633963383932646362363831653661379605583c73705f61726974686d657469633a3a726174696f6e616c3132383a3a526174696f6e616c31323820617320636f72653a3a636d703a3a5061727469616c45713e3a3a65713a3a686639336562373839616435663637363897054d6672616d655f737570706f72743a3a7472616974733a3a4368616e67654d656d626572733a3a636f6d707574655f6d656d626572735f646966663a3a6837383561376662303830653366383434980599013c70616c6c65745f636f6c6c6563746976653a3a4d6f64756c653c542c493e206173206672616d655f737570706f72743a3a7472616974733a3a4368616e67654d656d626572733c3c54206173206672616d655f73797374656d3a3a54726169743e3a3a4163636f756e7449643e3e3a3a6368616e67655f6d656d626572735f736f727465643a3a68383765393962646332376666323464379905386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a68306633666161633962383864336137629a05386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a68336437663239373464306564653539619b05386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a68363830316233623632613032336261369c05386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a68363965366462386532663261343465369d05386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a68373637326165343964363764316230359e05386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a68393830373164366634353933363063309f05386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6861623239303139633132336163353831a005386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6863633436633435306364396335393665a105386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6865303165313338323063653961623664a205396672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a74616b653a3a6837313965363362643131366664613332a3053370616c6c65745f636f6e7472616374733a3a657865633a3a7472616e736665723a3a6837333832353661386633626335356637a4057c3c70616c6c65745f636f6e7472616374733a3a6163636f756e745f64623a3a4f7665726c61794163636f756e7444623c543e2061732070616c6c65745f636f6e7472616374733a3a6163636f756e745f64623a3a4163636f756e7444623c543e3e3a3a636f6d6d69743a3a6838353332666135353064323134323264a5052b636f72653a3a7074723a3a64726f705f696e5f706c6163653a3a6831623561373034363062313439316663a60583013c70616c6c65745f636f6e7472616374733a3a6163636f756e745f64623a3a4f7665726c61794163636f756e7444623c543e2061732070616c6c65745f636f6e7472616374733a3a6163636f756e745f64623a3a4163636f756e7444623c543e3e3a3a6765745f636f64655f686173683a3a6863613437396433636665613038376566a70585013c70616c6c65745f636f6e7472616374733a3a6163636f756e745f64623a3a4f7665726c61794163636f756e7444623c543e2061732070616c6c65745f636f6e7472616374733a3a6163636f756e745f64623a3a4163636f756e7444623c543e3e3a3a636f6e74726163745f6578697374733a3a6835313835613262393338336462626262a80581013c70616c6c65745f636f6e7472616374733a3a6163636f756e745f64623a3a4f7665726c61794163636f756e7444623c543e2061732070616c6c65745f636f6e7472616374733a3a6163636f756e745f64623a3a4163636f756e7444623c543e3e3a3a6765745f62616c616e63653a3a6837313563313464643635666162663062a9053f70616c6c65745f617574686f72736869703a3a4d6f64756c653c543e3a3a63616c6c5f66756e6374696f6e733a3a6835333336366266333631333437353565aa054170616c6c65745f617574686f72736869703a3a4d6f64756c653c543e3a3a73746f726167655f6d657461646174613a3a6834623930396261316464363765323731ab054770616c6c65745f656c656374696f6e735f70687261676d656e3a3a4d6f64756c653c543e3a3a63616c6c5f66756e6374696f6e733a3a6836646230323662366462303235303437ac054970616c6c65745f656c656374696f6e735f70687261676d656e3a3a4d6f64756c653c543e3a3a73746f726167655f6d657461646174613a3a6831656439613037336536333766343934ad055270616c6c65745f656c656374696f6e735f70687261676d656e3a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a6863623237333933363766346432313339ae05a3013c70616c6c65745f656c656374696f6e735f70687261676d656e3a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a5465726d4475726174696f6e44656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6835373462386439623034303230303162af05a7013c70616c6c65745f656c656374696f6e735f70687261676d656e3a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a4465736972656452756e6e657273557044656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6830373063623034333434623464636132b005a5013c70616c6c65745f656c656374696f6e735f70687261676d656e3a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a446573697265644d656d6265727344656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6834626366393965653732316437336666b105a4013c70616c6c65745f656c656374696f6e735f70687261676d656e3a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a43616e646964616379426f6e6444656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6837636230336665386231343330326264b205623c70616c6c65745f617574686f72736869703a3a4d6f64756c653c543e206173206672616d655f6d657461646174613a3a4d6f64756c654572726f724d657461646174613e3a3a6d657461646174613a3a6835343031623966656263393935626235b3054170616c6c65745f656c656374696f6e735f70687261676d656e3a3a4d6f64756c653c543e3a3a69735f766f7465723a3a6863333235343861353633636232383861b4054870616c6c65745f656c656374696f6e735f70687261676d656e3a3a4d6f64756c653c543e3a3a646f5f72656d6f76655f766f7465723a3a6862393334343233333065303163316563b5055270616c6c65745f656c656374696f6e735f70687261676d656e3a3a4d6f64756c653c543e3a3a72656d6f76655f616e645f7265706c6163655f6d656d6265723a3a6833373866363734663932633637613865b6056a3c70616c6c65745f656c656374696f6e735f70687261676d656e3a3a4d6f64756c653c543e206173206672616d655f6d657461646174613a3a4d6f64756c654572726f724d657461646174613e3a3a6d657461646174613a3a6862336262393462656635356661363835b7054a3c58206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a7573696e675f656e636f6465643a3a6861386637633236313234333339663137b8053d70616c6c65745f7265636f766572793a3a4d6f64756c653c543e3a3a63616c6c5f66756e6374696f6e733a3a6863396239353532393632323035623638b9053f70616c6c65745f7265636f766572793a3a4d6f64756c653c543e3a3a73746f726167655f6d657461646174613a3a6863333038366633656138393132333763ba054170616c6c65745f636f6c6c6563746976653a3a4d6f64756c653c542c493e3a3a63616c6c5f66756e6374696f6e733a3a6836613765336134386339386161623464bb054370616c6c65745f636f6c6c6563746976653a3a4d6f64756c653c542c493e3a3a73746f726167655f6d657461646174613a3a6831386266323565356163366262366334bc054370616c6c65745f636f6c6c6563746976653a3a4d6f64756c653c542c493e3a3a73746f726167655f6d657461646174613a3a6866656261383436646564666539623663bd05437061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653a3a7573696e675f656e636f6465643a3a6833633735346639393531303431613832be054a3c58206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a7573696e675f656e636f6465643a3a6834316336613465656363326665666637bf053470616c6c65745f7265636f766572793a3a4d6f64756c653c543e3a3a70726f78793a3a6861636536313331306431366664333862c005716672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a646f75626c655f6d61703a3a53746f72616765446f75626c654d61703a3a73746f726167655f646f75626c655f6d61705f66696e616c5f6b6579313a3a6865373030636435633866663261316130c1053e70616c6c65745f7265636f766572793a3a4d6f64756c653c543e3a3a7265636f766572795f636f6e6669673a3a6839373334336330666230326134393062c2053e70616c6c65745f7265636f766572793a3a4d6f64756c653c543e3a3a6163746976655f7265636f766572793a3a6834636635353038353536663431343433c305603c70616c6c65745f7265636f766572793a3a4d6f64756c653c543e206173206672616d655f6d657461646174613a3a4d6f64756c654572726f724d657461646174613e3a3a6d657461646174613a3a6861333866323563646363346264633333c4053970616c6c65745f636f6c6c6563746976653a3a4d6f64756c653c542c493e3a3a766f74696e673a3a6837626435393033386663633830356136c5054470616c6c65745f636f6c6c6563746976653a3a4d6f64756c653c542c493e3a3a66696e616c697a655f70726f706f73616c3a3a6835306531366361656334306335393065c6053970616c6c65745f636f6c6c6563746976653a3a4d6f64756c653c542c493e3a3a766f74696e673a3a6865656531616135306233306265366530c7054470616c6c65745f636f6c6c6563746976653a3a4d6f64756c653c542c493e3a3a66696e616c697a655f70726f706f73616c3a3a6833333632633934666533333763343831c805643c70616c6c65745f636f6c6c6563746976653a3a4d6f64756c653c542c493e206173206672616d655f6d657461646174613a3a4d6f64756c654572726f724d657461646174613e3a3a6d657461646174613a3a6833613764323036333266363938356466c9050c436f72655f76657273696f6eca056b3c73705f72756e74696d653a3a72756e74696d655f737472696e673a3a52756e74696d65537472696e67206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a656e636f64653a3a6864333032633964306561306431383862cb0512436f72655f657865637574655f626c6f636bcc055373705f696f3a3a747269653a3a65787465726e5f686f73745f66756e6374696f6e5f696d706c733a3a626c616b65325f3235365f6f7264657265645f726f6f743a3a6862643564616338353534313232356637cd0515436f72655f696e697469616c697a655f626c6f636bce05114d657461646174615f6d65746164617461cf051c426c6f636b4275696c6465725f6170706c795f65787472696e736963d0051b426c6f636b4275696c6465725f66696e616c697a655f626c6f636bd10520426c6f636b4275696c6465725f696e686572656e745f65787472696e73696373d2053a70616c6c65745f74696d657374616d703a3a657874726163745f696e686572656e745f646174613a3a6861396365383836326639306365343634d3051c426c6f636b4275696c6465725f636865636b5f696e686572656e7473d405453c737472206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a656e636f64653a3a6838313935666665383031663034386566d50518426c6f636b4275696c6465725f72616e646f6d5f73656564d6052b5461676765645472616e73616374696f6e51756575655f76616c69646174655f7472616e73616374696f6ed7055373705f72756e74696d653a3a7472616e73616374696f6e5f76616c69646974793a3a56616c69645472616e73616374696f6e3a3a636f6d62696e655f776974683a3a6832356238666565616136386534636161d805214f6666636861696e576f726b65724170695f6f6666636861696e5f776f726b6572d9055173705f696f3a3a63727970746f3a3a65787465726e5f686f73745f66756e6374696f6e5f696d706c733a3a737232353531395f7075626c69635f6b6579733a3a6834653530383333303662393361363064da051e4772616e6470614170695f6772616e6470615f617574686f726974696573db0515426162654170695f636f6e66696775726174696f6edc051b426162654170695f63757272656e745f65706f63685f7374617274dd0521417574686f72697479446973636f766572794170695f617574686f726974696573de051d4163636f756e744e6f6e63654170695f6163636f756e745f6e6f6e6365df0511436f6e7472616374734170695f63616c6ce00518436f6e7472616374734170695f6765745f73746f72616765e1051c436f6e7472616374734170695f72656e745f70726f6a656374696f6ee205205472616e73616374696f6e5061796d656e744170695f71756572795f696e666fe3052153657373696f6e4b6579735f67656e65726174655f73657373696f6e5f6b657973e4051f53657373696f6e4b6579735f6465636f64655f73657373696f6e5f6b657973e5052b636f72653a3a7074723a3a64726f705f696e5f706c6163653a3a6830313736373263396538616631356164e605706672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a646f75626c655f6d61703a3a53746f72616765446f75626c654d61703a3a73746f726167655f646f75626c655f6d61705f66696e616c5f6b65793a3a6830653132393735616562386233613132e705706672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a646f75626c655f6d61703a3a53746f72616765446f75626c654d61703a3a73746f726167655f646f75626c655f6d61705f66696e616c5f6b65793a3a6866626432336665616564303431636330e80584016672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6c696e6b65645f6d61703a3a3c696d706c206672616d655f737570706f72743a3a73746f726167653a3a53746f726167654c696e6b65644d61703c4b2c563e20666f7220473e3a3a72656d6f76653a3a6830643063663665343463396331323934e90584016672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6c696e6b65645f6d61703a3a3c696d706c206672616d655f737570706f72743a3a73746f726167653a3a53746f726167654c696e6b65644d61703c4b2c563e20666f7220473e3a3a72656d6f76653a3a6862653765396437613938373463303765ea05437061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653a3a7573696e675f656e636f6465643a3a6836343331333363393866626466616133eb05746672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a3c696d706c206672616d655f737570706f72743a3a73746f726167653a3a53746f726167654d61703c4b2c563e20666f7220473e3a3a6765743a3a6862633031353834653137653335363231ec05776672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a3c696d706c206672616d655f737570706f72743a3a73746f726167653a3a53746f726167654d61703c4b2c563e20666f7220473e3a3a696e736572743a3a6837306265643137393435353365346632ed05776672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a3c696d706c206672616d655f737570706f72743a3a73746f726167653a3a53746f726167654d61703c4b2c563e20666f7220473e3a3a72656d6f76653a3a6837393330383366626435303234323336ee054370616c6c65745f7374616b696e673a3a4d6f64756c653c543e3a3a636c6561725f6572615f696e666f726d6174696f6e3a3a6832373165376534656134623334663161ef054270616c6c65745f7374616b696e673a3a4d6f64756c653c543e3a3a736c61736861626c655f62616c616e63655f6f663a3a6864383730643031366234303234623564f005706672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a646f75626c655f6d61703a3a53746f72616765446f75626c654d61703a3a73746f726167655f646f75626c655f6d61705f66696e616c5f6b65793a3a6830333264616666373033653431373966f105706672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a646f75626c655f6d61703a3a53746f72616765446f75626c654d61703a3a73746f726167655f646f75626c655f6d61705f66696e616c5f6b65793a3a6837663966356432653339313661396431f205706672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a646f75626c655f6d61703a3a53746f72616765446f75626c654d61703a3a73746f726167655f646f75626c655f6d61705f66696e616c5f6b65793a3a6831653739663162303265643232346131f3054a3c58206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a7573696e675f656e636f6465643a3a6830393537366430316537343936653564f4053c70616c6c65745f7374616b696e673a3a4d6f64756c653c543e3a3a63616c6c5f66756e6374696f6e733a3a6839376664303633306330613561353961f5053c70616c6c65745f7374616b696e673a3a4d6f64756c653c543e3a3a656e737572655f6e65775f6572613a3a6862663338663335383132373464616163f6053e70616c6c65745f7374616b696e673a3a4d6f64756c653c543e3a3a73746f726167655f6d657461646174613a3a6863616232343063353334633838333334f7056d3c70616c6c65745f7374616b696e673a3a5f5f476574427974655374727563745370616e536c6173683c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6861653065386638373765396166653766f805713c70616c6c65745f7374616b696e673a3a5f5f47657442797465537472756374536c617368696e675370616e733c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6835373862663431393538656134313666f9053c7061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653a3a656e636f64653a3a6837333162653966323536663166393831fa05723c70616c6c65745f7374616b696e673a3a5f5f4765744279746553747275637445726173546f74616c5374616b653c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6838363065346631663034333330353966fb05743c70616c6c65745f7374616b696e673a3a5f5f4765744279746553747275637445726173526577617264506f696e74733c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6834376337396338306136616332323830fc05763c70616c6c65745f7374616b696e673a3a5f5f476574427974655374727563744572617356616c696461746f7250726566733c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6863666561396562663164313263613234fd05763c70616c6c65745f7374616b696e673a3a5f5f47657442797465537472756374457261735374616b657273436c69707065643c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6834313038373633376436333539353365fe05793c70616c6c65745f7374616b696e673a3a5f5f476574427974655374727563744d696e696d756d56616c696461746f72436f756e743c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6865653061666161633364656636643161ff05703c70616c6c65745f7374616b696e673a3a5f5f47657442797465537472756374486973746f727944657074683c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a683963323230623330353866306236326480064770616c6c65745f7374616b696e673a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a683933356163313261393466366635626581069b013c70616c6c65745f7374616b696e673a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a426f6e64696e674475726174696f6e44656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a686664663862663638346461313832353982069a013c70616c6c65745f7374616b696e673a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a53657373696f6e7350657245726144656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a686537376438613934366365353637333483063870616c6c65745f7374616b696e673a3a4d6f64756c653c543e3a3a6b696c6c5f73746173683a3a68663134376436346362313737346337358406746672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a3c696d706c206672616d655f737570706f72743a3a73746f726167653a3a53746f726167654d61703c4b2c563e20666f7220473e3a3a6765743a3a68656232383238353266663232626437358506746672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a3c696d706c206672616d655f737570706f72743a3a73746f726167653a3a53746f726167654d61703c4b2c563e20666f7220473e3a3a6765743a3a686434336266393732383535313235333486063970616c6c65745f7374616b696e673a3a4d6f64756c653c543e3a3a6d616b655f7061796f75743a3a683664383361333239383364303339653587065f3c70616c6c65745f7374616b696e673a3a4d6f64756c653c543e206173206672616d655f6d657461646174613a3a4d6f64756c654572726f724d657461646174613e3a3a6d657461646174613a3a686236346236623762623135383236643088063b70616c6c65745f626162653a3a4d6f64756c653c543e3a3a73746f726167655f6d657461646174613a3a683231646533646464303836356230396289066b3c70616c6c65745f626162653a3a5f5f4765744279746553747275637452616e646f6d6e6573733c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a68643539376235396262336430303031618a064470616c6c65745f626162653a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a68396333396137353465333966376165628b069a013c70616c6c65745f626162653a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a4578706563746564426c6f636b54696d6544656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a68336165316533626238626536303232368c0696013c70616c6c65745f626162653a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a45706f63684475726174696f6e44656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a68326166346134383338336436666435338d063c70616c6c65745f696e64696365733a3a4d6f64756c653c543e3a3a63616c6c5f66756e6374696f6e733a3a68303738613638343039386132633938308e063e70616c6c65745f696e64696365733a3a4d6f64756c653c543e3a3a73746f726167655f6d657461646174613a3a68633936386334626136376566383963648f06303c265420617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a68306462313537363964633162333434639006683c7061726974795f7761736d3a3a656c656d656e74733a3a6f70733a3a496e697445787072206173207061726974795f7761736d3a3a656c656d656e74733a3a53657269616c697a653e3a3a73657269616c697a653a3a683766326332376562356339363136653891066b3c7061726974795f7761736d3a3a656c656d656e74733a3a6f70733a3a496e737472756374696f6e206173207061726974795f7761736d3a3a656c656d656e74733a3a53657269616c697a653e3a3a73657269616c697a653a3a683964666665656538623835303261633092067d3c7061726974795f7761736d3a3a656c656d656e74733a3a7072696d6974697665733a3a436f756e7465644c6973745772697465723c492c543e206173207061726974795f7761736d3a3a656c656d656e74733a3a53657269616c697a653e3a3a73657269616c697a653a3a683238363963336233663636616637386693066f3c7061726974795f7761736d3a3a656c656d656e74733a3a7072696d6974697665733a3a566172496e743332206173207061726974795f7761736d3a3a656c656d656e74733a3a53657269616c697a653e3a3a73657269616c697a653a3a683336333666363435323464643363623794066f3c7061726974795f7761736d3a3a656c656d656e74733a3a7072696d6974697665733a3a566172496e743634206173207061726974795f7761736d3a3a656c656d656e74733a3a53657269616c697a653e3a3a73657269616c697a653a3a683931643330363634386361636464656195066c3c7061726974795f7761736d3a3a656c656d656e74733a3a6f70733a3a496e697445787072206173207061726974795f7761736d3a3a656c656d656e74733a3a446573657269616c697a653e3a3a646573657269616c697a653a3a683761336665623262333963346339353196066f3c7061726974795f7761736d3a3a656c656d656e74733a3a6f70733a3a496e737472756374696f6e206173207061726974795f7761736d3a3a656c656d656e74733a3a446573657269616c697a653e3a3a646573657269616c697a653a3a68333730323366313566643065386539399706793c7061726974795f7761736d3a3a656c656d656e74733a3a7072696d6974697665733a3a436f756e7465644c6973743c543e206173207061726974795f7761736d3a3a656c656d656e74733a3a446573657269616c697a653e3a3a646573657269616c697a653a3a683462303564393031366130333936643698066b3c7061726974795f7761736d3a3a656c656d656e74733a3a6f70733a3a496e737472756374696f6e206173207061726974795f7761736d3a3a656c656d656e74733a3a53657269616c697a653e3a3a73657269616c697a653a3a6862663262343837383763343234623366990686017061726974795f7761736d3a3a656c656d656e74733a3a7072696d6974697665733a3a3c696d706c207061726974795f7761736d3a3a656c656d656e74733a3a446573657269616c697a6520666f7220616c6c6f633a3a737472696e673a3a537472696e673e3a3a646573657269616c697a653a3a68366233313539396532313063633765659a06323c265420617320636f72653a3a666d743a3a446973706c61793e3a3a666d743a3a68383164393037643233303337353334389b06783c7061726974795f7761736d3a3a656c656d656e74733a3a696d706f72745f656e7472793a3a526573697a61626c654c696d697473206173207061726974795f7761736d3a3a656c656d656e74733a3a53657269616c697a653e3a3a73657269616c697a653a3a68316238623235616632643561306463339c067c3c7061726974795f7761736d3a3a656c656d656e74733a3a696d706f72745f656e7472793a3a526573697a61626c654c696d697473206173207061726974795f7761736d3a3a656c656d656e74733a3a446573657269616c697a653e3a3a646573657269616c697a653a3a68306631333864613330396264356565659d06743c7061726974795f7761736d3a3a656c656d656e74733a3a7072696d6974697665733a3a56617255696e743332206173207061726974795f7761736d3a3a656c656d656e74733a3a446573657269616c697a653e3a3a646573657269616c697a653a3a68623332323431376664353831393535639e06713c7061726974795f7761736d3a3a656c656d656e74733a3a73656374696f6e3a3a437573746f6d53656374696f6e206173207061726974795f7761736d3a3a656c656d656e74733a3a53657269616c697a653e3a3a73657269616c697a653a3a68626137353136313761393562653237349f06713c7061726974795f7761736d3a3a656c656d656e74733a3a696e6465785f6d61703a3a496e6465784d61703c543e206173207061726974795f7761736d3a3a656c656d656e74733a3a53657269616c697a653e3a3a73657269616c697a653a3a6838616530376530333537376366623832a0064b3c616c6c6f633a3a7665633a3a496e746f497465723c543e20617320636f72653a3a6f70733a3a64726f703a3a44726f703e3a3a64726f703a3a6835336665646534366339396461396333a1064b3c616c6c6f633a3a7665633a3a496e746f497465723c543e20617320636f72653a3a6f70733a3a64726f703a3a44726f703e3a3a64726f703a3a6836316334323261373262393666373061a206463c616c6c6f633a3a7665633a3a5665633c543e20617320636f72653a3a6f70733a3a64726f703a3a44726f703e3a3a64726f703a3a6863363736656361306662353932623131a306457061726974795f7761736d3a3a656c656d656e74733a3a73656374696f6e3a3a53656374696f6e5265616465723a3a6e65773a3a6864346431393633336631313935363965a4062d636f72653a3a736c6963653a3a736f72743a3a726563757273653a3a6837306231356566393130353565666630a50634636f72653a3a736c6963653a3a736f72743a3a627265616b5f7061747465726e733a3a6837653038393363343938343730373562a6062e636f72653a3a736c6963653a3a736f72743a3a68656170736f72743a3a6832303661383365613461653862316463a7063c636f72653a3a736c6963653a3a736f72743a3a7061727469616c5f696e73657274696f6e5f736f72743a3a6838303034393639663534353637316232a8063b636f72653a3a736c6963653a3a736f72743a3a68656170736f72743a3a7b7b636c6f737572657d7d3a3a6866633630353832303238353365323161a906397761736d695f76616c69646174696f6e3a3a76616c69646174655f6d656d6f72795f747970653a3a6865656437623930326631383838326332aa06347761736d695f76616c69646174696f6e3a3a657870725f636f6e73745f747970653a3a6832653838346361613933363839613732ab06553c7061726974795f7761736d3a3a656c656d656e74733a3a74797065733a3a56616c75655479706520617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6836633862656664316131653936643761ac064a7761736d695f76616c69646174696f6e3a3a66756e633a3a46756e6374696f6e56616c69646174696f6e436f6e746578743a3a737465703a3a6833643563366363393965343162303734ad06473c7761736d695f76616c69646174696f6e3a3a4572726f7220617320636f72653a3a666d743a3a446973706c61793e3a3a666d743a3a6862343038313364306532343233643935ae06303c265420617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6861373137636136333337356237313230af06457061726974795f7761736d3a3a656c656d656e74733a3a7365676d656e743a3a446174615365676d656e743a3a76616c75653a3a6837303734316631313732623664306539b006513c616c6c6f633a3a7665633a3a5665633c543e20617320616c6c6f633a3a7665633a3a53706563457874656e643c542c493e3e3a3a66726f6d5f697465723a3a6834323430623238313131303831303562b106553c7061726974795f7761736d3a3a656c656d656e74733a3a6f70733a3a496e737472756374696f6e20617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6836663133636237663332313730343139b206303c265420617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6832386465373265383333393463313632b306553c7061726974795f7761736d3a3a656c656d656e74733a3a74797065733a3a426c6f636b5479706520617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6865376235633238643737326432316461b406303c265420617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6832376436653531613936663361373939b506303c265420617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6861663033323733366163393232366563b606303c265420617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6862366466313239313134323638363564b706303c265420617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6835613131623766643365356531626535b806303c265420617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6862356135363864386435636465393938b90633636f72653a3a6f7074696f6e3a3a4f7074696f6e3c26543e3a3a636c6f6e65643a3a6863653437396230643866326537396430ba06483c616c6c6f633a3a626f7865643a3a426f783c5b545d3e20617320636f72653a3a636c6f6e653a3a436c6f6e653e3a3a636c6f6e653a3a6836373334656639343534303938643534bb06453c636f72653a3a6f7074696f6e3a3a4f7074696f6e3c543e20617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6838643430616163386465346337333231bc06613c616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6d61703a3a42547265654d61703c4b2c563e20617320636f72653a3a6f70733a3a64726f703a3a44726f703e3a3a64726f703a3a6837363264613865633632636634396237bd06593c7061726974795f7761736d3a3a656c656d656e74733a3a6f70733a3a496e737472756374696f6e20617320636f72653a3a636c6f6e653a3a436c6f6e653e3a3a636c6f6e653a3a6831663838643533646661373565306531be06533c616c6c6f633a3a7665633a3a5665633c543e20617320616c6c6f633a3a7665633a3a53706563457874656e643c542c493e3e3a3a737065635f657874656e643a3a6831343363643033623936373635396637bf06303c265420617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6836393630636132353635643063346434c00641707761736d5f7574696c733a3a737461636b5f6865696768743a3a6d61785f6865696768743a3a636f6d707574653a3a6834353063306263363138336434633535c1065a3c707761736d5f7574696c733a3a737461636b5f6865696768743a3a6d61785f6865696768743a3a4672616d6520617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6832363061336434303134326434333236c20646707761736d5f7574696c733a3a737461636b5f6865696768743a3a6d61785f6865696768743a3a537461636b3a3a6672616d653a3a6837653461643836656461383931373664c3064b707761736d5f7574696c733a3a737461636b5f6865696768743a3a6d61785f6865696768743a3a537461636b3a3a706f705f76616c7565733a3a6834326363656238383163373963613966c4063f707761736d5f7574696c733a3a737461636b5f6865696768743a3a7265736f6c76655f66756e635f747970653a3a6836353737303063373533333862326265c5062e636f72653a3a736c6963653a3a736f72743a3a68656170736f72743a3a6830306533646436316634396566376632c6063c636f72653a3a736c6963653a3a736f72743a3a7061727469616c5f696e73657274696f6e5f736f72743a3a6866333135633931666164376262663739c706303c265420617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6838353436633439376236623032643462c80640707761736d5f7574696c733a3a737461636b5f6865696768743a3a636f6d707574655f737461636b5f636f73743a3a6833303861666362393934343234306632c906323c265420617320636f72653a3a666d743a3a446973706c61793e3a3a666d743a3a6864623065393638333831373838343031ca063a73705f61726974686d657469633a3a62696775696e743a3a42696755696e743a3a6c73747269703a3a6863623664303365333064396432643464cb063773705f61726974686d657469633a3a62696775696e743a3a42696755696e743a3a6164643a3a6830373963386164613333633838613732cc063773705f61726974686d657469633a3a62696775696e743a3a42696755696e743a3a6d756c3a3a6836656162346130363334383336316265cd064473705f61726974686d657469633a3a62696775696e743a3a42696755696e743a3a6469763a3a7b7b636c6f737572657d7d3a3a6863353835623639343338346161386430ce064b3c73705f61726974686d657469633a3a62696775696e743a3a42696755696e7420617320636f72653a3a636d703a3a4f72643e3a3a636d703a3a6862343363313732333832366430336337cf06443c616c6c6f633a3a7665633a3a5665633c543e20617320636f72653a3a636c6f6e653a3a436c6f6e653e3a3a636c6f6e653a3a6833333533343866363161643932636139d006513c616c6c6f633a3a7665633a3a5665633c543e20617320616c6c6f633a3a7665633a3a53706563457874656e643c542c493e3e3a3a66726f6d5f697465723a3a6861316533393533646463643739643539d1063d73705f61726974686d657469633a3a68656c706572735f3132386269743a3a746f5f6269675f75696e743a3a6862636462613735396230373335663539d206413c73705f696e686572656e74733a3a4572726f7220617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6862313731333133313063636331623433d306323c265420617320636f72653a3a666d743a3a446973706c61793e3a3a666d743a3a6831303464643534316437356430326234d4064273705f696f3a3a6c6f6767696e673a3a65787465726e5f686f73745f66756e6374696f6e5f696d706c733a3a6c6f673a3a6865356430363361643834626138653534d506573c73705f72756e74696d653a3a72756e74696d655f737472696e673a3a52756e74696d65537472696e6720617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6839313334336531613631353464613961d606473c73705f72756e74696d653a3a44697370617463684572726f7220617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6834376166343262636666646462633835d706347761736d695f76616c69646174696f6e3a3a66756e633a3a706f705f76616c75653a3a6836303837393039376166613930353730d80637616c6c6f633a3a7261775f7665633a3a5261775665633c542c413e3a3a726573657276653a3a6862353162653534303338653337386263d9063b636f72653a3a736c6963653a3a3c696d706c205b545d3e3a3a636f70795f66726f6d5f736c6963653a3a6835363036313665666265393566353261da06347761736d695f76616c69646174696f6e3a3a66756e633a3a706f705f6c6162656c3a3a6864323165346265393364353964306466db06347761736d695f76616c69646174696f6e3a3a66756e633a3a7465655f76616c75653a3a6835383866623135353464623734363834dc06407761736d695f76616c69646174696f6e3a3a7574696c3a3a4c6f63616c733a3a747970655f6f665f6c6f63616c3a3a6866623763313263363733356663316532dd06543c7761736d695f76616c69646174696f6e3a3a66756e633a3a537461636b56616c75655479706520617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6834393861636561383235383936633437de06537761736d695f76616c69646174696f6e3a3a66756e633a3a46756e6374696f6e56616c69646174696f6e436f6e746578743a3a76616c69646174655f6c6f61643a3a6865623166653561353537616566316637df06547761736d695f76616c69646174696f6e3a3a66756e633a3a46756e6374696f6e56616c69646174696f6e436f6e746578743a3a76616c69646174655f73746f72653a3a6866343130303539353132313935323733e006547761736d695f76616c69646174696f6e3a3a66756e633a3a46756e6374696f6e56616c69646174696f6e436f6e746578743a3a76616c69646174655f72656c6f703a3a6835303633393733663730373930356533e106547761736d695f76616c69646174696f6e3a3a66756e633a3a46756e6374696f6e56616c69646174696f6e436f6e746578743a3a76616c69646174655f62696e6f703a3a6834356362613431303962333266363736e2062b636f72653a3a7074723a3a64726f705f696e5f706c6163653a3a6835323133323761366331623330333634e306303c265420617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6837313764633066383539633630303834e406303c265420617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6862306135333064326237356661633439e506453c616c6c6f633a3a737472696e673a3a537472696e6720617320636f72653a3a666d743a3a446973706c61793e3a3a666d743a3a6861646530363532663932613936653433e6064c3c7761736d695f76616c69646174696f6e3a3a737461636b3a3a4572726f7220617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6832333432363936303939633862393637e706066d656d736574e806066d656d637079e906076d656d6d6f7665ea060462636d70eb06095f5f6173686c746933ec06095f5f6c736872746933ed06085f5f6d756c746933ee06095f5f75646976746933ef06095f5f756d6f64746933f0060c5f5f756469766d6f6474693400550970726f64756365727302086c616e6775616765010452757374000c70726f6365737365642d62790105727573746325312e34332e302d6e696768746c79202837356366343161666220323032302d30332d303429", "0x492a52699edf49c972c21db794cfcf57ba7fb8745735dc3be2a2c61a72c39e78": "0x00", - "0x5f3e4907f716ac89b6347d15ececedca3ed14b45ed20d054f05e37e2542cfe7004615f785492f37abe2b14d3f286778c2c9752548ca2d011e952c455b2733bfe": "0xe410a5800082ee863e06344590e83ef0b60fb6ea2126086ea9bc5c579ff4b86c", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19509fe6329cc0b39e09343a73657373696f6e3a6b657973f301a28bea294f7ef32e6577fe7067ce573431f351098b6d032a3319ecfe571a": "0x2a009220d327910e8ffd89167b7d96eb8871a37c374ec0adfdf1b6c384b22761", - "0x5f3e4907f716ac89b6347d15ececedca9220e172bed316605f73f1ff7b4ade9866e551402e9db966f769da2a411eff2face196c91278147bbfcf405002e875ac": "0x00", + "0x5f3e4907f716ac89b6347d15ececedca42982b9d6c7acc99faa9094c912372c2b4def25cfda6ef3a0000000054352b71083d945a9c7a2ee14e565db0c69f78c7b4cd839fbf52b607d867e9e9c5a79042898a0d12": "0x0ff6ffc06ff286230ff6ffc06ff2862300", "0x5f3e4907f716ac89b6347d15ececedcaf7dad0317324aecae8744b87fc95f2f3": "0x00", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b404615f785492f37abe2b14d3f286778c2c9752548ca2d011e952c455b2733bfe": "0x0000c16ff28623000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b291b35b5a09b938edfd10fcbacc615abb0c": "0x00000000", - "0x5f3e4907f716ac89b6347d15ececedca88dcde934c658227ee1dfafcd6e1690366e551402e9db966f769da2a411eff2face196c91278147bbfcf405002e875ac": "0x000001f417395797ff444345d7c25355bbab14de5ca8857104a028d969147a4fbd6e29", - "0x11f3ba2e1cdd6d62f2ff9b5589e7ff81ba7fb8745735dc3be2a2c61a72c39e78": "0x046e51d621d637695a1c4214ff5b85fb0063fe3908f8b39c380c582011c3807078", - "0xc2261276cc9d1f8598ea4b6a74b15c2f218f26c73add634897550b4003b26bc6e4fe34f5c8499d222649809260ad8db63c739e091b73cda907a2df171176070a": "0x047374616b696e67200000c16ff28623000000000000000000ffffffff1f", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19509fe6329cc0b39e09343a73657373696f6e3a6b6579734d9b18cf80e6a057b2af8cf177dcae65db7aecaf46b2787909eb9f3bcdb662dc": "0xdc94ff7f625d9ef7824766f90a5eb8aa03f99b7b28664585950221d0d2358e3a", - "0x5f3e4907f716ac89b6347d15ececedca9220e172bed316605f73f1ff7b4ade9804615f785492f37abe2b14d3f286778c2c9752548ca2d011e952c455b2733bfe": "0x00", + "0x5f3e4907f716ac89b6347d15ececedca28dccb559b95c40168a1b2696581b5a7": "0x00000000000000000000000000000000", + "0x11f3ba2e1cdd6d62f2ff9b5589e7ff81ba7fb8745735dc3be2a2c61a72c39e78": "0x049ee5e5bdc0ec239eb164f865ecc345ce4c88e76ee002e0f7e318097347471809", + "0x34b9dcaacddd89d5a94929dccb7131534a9d2f70e9ee596bc867d128cd9ec759": "0x00ca9a3b000000000000000000000000", + "0x5f3e4907f716ac89b6347d15ececedca5579297f4dfb9609e7e4c2ebab9ce40a": "0x109c7a2ee14e565db0c69f78c7b4cd839fbf52b607d867e9e9c5a79042898a0d1268655684472b743e456907b398d3a44c113f189e56d1bbfd55e889e295dfde78547ff0ab649283a7ae01dbc2eb73932eba2fb09075e9485ff369082a2ff38d65f26cdb14b5aec7b2789fd5ca80f979cef3761897ae1f37ffb3e154cbcc1c2663", + "0x8985776095addd4789fccbce8ca77b23ba7fb8745735dc3be2a2c61a72c39e78": "0x049ee5e5bdc0ec239eb164f865ecc345ce4c88e76ee002e0f7e318097347471809", + "0xc2261276cc9d1f8598ea4b6a74b15c2f218f26c73add634897550b4003b26bc6711590f60a214f6f06502eb29dd14f55aa04e72e2fa12c098ba4fa5a00c57fa9": "0x047374616b696e67200000c16ff2862300000000000000000002", + "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da9895bb514540b8e8932c5863ecb0da1513485b5c2e55041c1ac3bc875e4338763": "0x00000000000000a0dec5adc9353600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19509fe6329cc0b39e09343a73657373696f6e3a6b6579731143fa96e07eb73af3db3a1b057d18899f864e6fc5d2f905f9296ca641565564": "0x9c7a2ee14e565db0c69f78c7b4cd839fbf52b607d867e9e9c5a79042898a0d12", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19509fe6329cc0b39e09343a73657373696f6e3a6b65797320733fcc641421fafd1fd2f3b4d938bf25bc3fe2f74d34c47239b2c2217446bb": "0x9c7a2ee14e565db0c69f78c7b4cd839fbf52b607d867e9e9c5a79042898a0d12", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19509fe6329cc0b39e09343a73657373696f6e3a6b6579732c1312343dce08149336968907c27cc602536aaf7a2b105d6fa07058a3803d31": "0xf26cdb14b5aec7b2789fd5ca80f979cef3761897ae1f37ffb3e154cbcc1c2663", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19509fe6329cc0b39e09343a73657373696f6e3a6b657973d1ae046d940202772415992434f839d8c546542e3055143c430f7eec87f7cb69": "0xf26cdb14b5aec7b2789fd5ca80f979cef3761897ae1f37ffb3e154cbcc1c2663", + "0x5f3e4907f716ac89b6347d15ececedca308ce9615de0775a82f8a94dc3d285a1": "0x01", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19509fe6329cc0b39e09343a73657373696f6e3a6b657973dc4036f96ca26a30da6d8637ca1431896c1069bf172c419e98dc08109e7b23b5": "0x68655684472b743e456907b398d3a44c113f189e56d1bbfd55e889e295dfde78", + "0x426e15054d267946093858132eb537f195999521c6c89cd80b677e53ce20f98c": "0x9ee5e5bdc0ec239eb164f865ecc345ce4c88e76ee002e0f7e318097347471809", + "0x5f3e4907f716ac89b6347d15ececedca3ed14b45ed20d054f05e37e2542cfe70711590f60a214f6f06502eb29dd14f55aa04e72e2fa12c098ba4fa5a00c57fa9": "0xc8dc79e36b29395413399edaec3e20fcca7205fb19776ed8ddb25d6f427ec40e", + "0x5f3e4907f716ac89b6347d15ececedca9220e172bed316605f73f1ff7b4ade9894f72a73893fbd00b11fcce65a014cc5b9ff5066ec15aa6be068b4cabfe67fdb": "0x00", + "0x5f3e4907f716ac89b6347d15ececedcac29a0310e1bb45d20cace77ccb62c97d": "0x00e1f505", + "0xf2794c22e353e9a839f12faab03a911b7f17cdfbfa73331856cca0acddd7842e": "0x00000000", + "0xc2261276cc9d1f8598ea4b6a74b15c2f218f26c73add634897550b4003b26bc67f325c981c2b001f5fe8c51cc7b89e50ebb1f60feb7ab3fa3bc79d6ab71d45cb": "0x047374616b696e67200000c16ff2862300000000000000000002", + "0x26aa394eea5630e07c48ae0c9558cef70a98fdbe9ce6c55837576c60c7af3850": "0x07000000", + "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da9e54094c2d5af8ae10b91e1288f4f59f2946d7738f2c509b7effd909e5e9ba0ad": "0x00000000030000c16ff28623000000000000000000000000000000000000000000000000000000c16ff286230000000000000000000000c16ff28623000000000000000000", + "0x5c0d1176a568c1f92944340dbfed9e9c530ebca703c85910e7164cb7d1c9e47b": "0x9ee5e5bdc0ec239eb164f865ecc345ce4c88e76ee002e0f7e318097347471809", + "0x5f3e4907f716ac89b6347d15ececedca682db92dde20a10d96d00ff0e9e221c0b4def25cfda6ef3a000000007441588f5c9a91b3f26cdb14b5aec7b2789fd5ca80f979cef3761897ae1f37ffb3e154cbcc1c2663": "0x00", + "0x5f3e4907f716ac89b6347d15ececedcaea07de2b8f010516dca3f7ef52f7ac5a": "0x040000000000000000", + "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da9711590f60a214f6f06502eb29dd14f55aa04e72e2fa12c098ba4fa5a00c57fa9": "0x00000000030000c16ff28623000000000000000000000000000000000000000000000000000000c16ff286230000000000000000000000c16ff28623000000000000000000", + "0x5f3e4907f716ac89b6347d15ececedca138e71612491192d68deab7e6f563fe1": "0x08000000", + "0xc2261276cc9d1f8598ea4b6a74b15c2f57c875e4cff74148e4628f264b974c80": "0x00401eae822458363600000000000000", + "0x5f3e4907f716ac89b6347d15ececedca88dcde934c658227ee1dfafcd6e169037f325c981c2b001f5fe8c51cc7b89e50ebb1f60feb7ab3fa3bc79d6ab71d45cb": "0x000168655684472b743e456907b398d3a44c113f189e56d1bbfd55e889e295dfde7800", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19509fe6329cc0b39e09343a73657373696f6e3a6b65797399a2fc4b1339e668345bac7e1aadd1a834b90939a4ea40b64f30433a1d475817": "0x9c7a2ee14e565db0c69f78c7b4cd839fbf52b607d867e9e9c5a79042898a0d12", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19509fe6329cc0b39e09343a73657373696f6e3a6b657973be035f25cd43adc80f1dcf505f5ffd158d1592ab3719f354a256a4c3b7571934": "0x547ff0ab649283a7ae01dbc2eb73932eba2fb09075e9485ff369082a2ff38d65", + "0xf2794c22e353e9a839f12faab03a911bbdcb0c5143a8617ed38ae3810dd45bc6": "0x00000000", + "0x1cb6f36e027abb2091cfb5110ab5087f5e0621c4869aa60c02be9adcc98a0d1d": "0x1000299981a2b92f878baaf5dbeba5c18d4e70f2a1fcd9c61b32ea18daf38f43780100000000000000482a3389a6cf42d8ed83888cfd920fec738ea30f97e44699ada7323f08c3380a0100000000000000482dbd7297a39fa145c570552249c2ca9dd47e281f0c500c971b59c9dcdcd82e01000000000000006e7e4eb42cbd2e0ab4cae8708ce5509580b8c04d11f6758dbf686d50fe9f91060100000000000000", + "0x5f3e4907f716ac89b6347d15ececedca487df464e44a534ba6b0cbb32407b587": "0x0000000000", + "0xc2261276cc9d1f8598ea4b6a74b15c2f218f26c73add634897550b4003b26bc694f72a73893fbd00b11fcce65a014cc5b9ff5066ec15aa6be068b4cabfe67fdb": "0x047374616b696e67200000c16ff2862300000000000000000002", + "0xc2261276cc9d1f8598ea4b6a74b15c2f218f26c73add634897550b4003b26bc6e54094c2d5af8ae10b91e1288f4f59f2946d7738f2c509b7effd909e5e9ba0ad": "0x047374616b696e67200000c16ff2862300000000000000000002", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19509fe6329cc0b39e09343a73657373696f6e3a6b65797301dd273832961ca94116fd224019ea1370c0e3d27bebb1041b35651146d17832": "0x68655684472b743e456907b398d3a44c113f189e56d1bbfd55e889e295dfde78", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19509fe6329cc0b39e09343a73657373696f6e3a6b65797397dddc7aba561f16ac00da4bae75ab812aa7b81418bebdab74425f0d6aa31cee": "0x547ff0ab649283a7ae01dbc2eb73932eba2fb09075e9485ff369082a2ff38d65", + "0xf2794c22e353e9a839f12faab03a911be2f6cb0456905c189bcb0458f9440f13": "0x00000000", + "0xcec5070d609dd3497f72bde07fc96ba04c014e6bf8b8c2c011e7290b85696bb39fe6329cc0b39e09343a73657373696f6e3a6b6579737f325c981c2b001f5fe8c51cc7b89e50ebb1f60feb7ab3fa3bc79d6ab71d45cb": "0x9becad03e6dcac03cee07edebca5475314861492cdfc96a2144a67bbe96993326e7e4eb42cbd2e0ab4cae8708ce5509580b8c04d11f6758dbf686d50fe9f91066e7e4eb42cbd2e0ab4cae8708ce5509580b8c04d11f6758dbf686d50fe9f91066e7e4eb42cbd2e0ab4cae8708ce5509580b8c04d11f6758dbf686d50fe9f9106", + "0x2371e21684d2fae99bcb4d579242f74a8a2d09463effcc78a22d75b9cb87dffc": "0x0000000000000000", + "0x5f3e4907f716ac89b6347d15ececedca8bde0a0ea8864605e3b68ed9cb2da01bb4def25cfda6ef3a0000000054352b71083d945a9c7a2ee14e565db0c69f78c7b4cd839fbf52b607d867e9e9c5a79042898a0d12": "0x0ff6ffc06ff286230ff6ffc06ff2862300", + "0x5f3e4907f716ac89b6347d15ececedca8bde0a0ea8864605e3b68ed9cb2da01bb4def25cfda6ef3a000000007441588f5c9a91b3f26cdb14b5aec7b2789fd5ca80f979cef3761897ae1f37ffb3e154cbcc1c2663": "0x0ff6ffc06ff286230ff6ffc06ff2862300", + "0x5f3e4907f716ac89b6347d15ececedcaa141c4fe67c2d11f4a10c6aca7a79a0411da6d1f761ddf9bdb4c9d6e5303ebd41f61858d0a5647a1a7bfe089bf921be9": "0xd8ff03bfc91b8e000000000000000000", + "0x2099d7f109d6e535fb000bba623fd4409f99a2ce711f3a31b2fc05604c93f179": "0x1000299981a2b92f878baaf5dbeba5c18d4e70f2a1fcd9c61b32ea18daf38f4378482a3389a6cf42d8ed83888cfd920fec738ea30f97e44699ada7323f08c3380a482dbd7297a39fa145c570552249c2ca9dd47e281f0c500c971b59c9dcdcd82e6e7e4eb42cbd2e0ab4cae8708ce5509580b8c04d11f6758dbf686d50fe9f9106", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19509fe6329cc0b39e09343a73657373696f6e3a6b657973890f14b1fcdd7ae841d324d5212f9d95f6c10c64f34dcb0b5f8b8687e6be854e": "0xf26cdb14b5aec7b2789fd5ca80f979cef3761897ae1f37ffb3e154cbcc1c2663", + "0x5f3e4907f716ac89b6347d15ececedca422adb579f1dbf4f3886c5cfa3bb8cc42e1b161d81ab54d65f3f57de68292fa3b62e6a3fa2a951dee23c0f8766303861": "0x9c7a2ee14e565db0c69f78c7b4cd839fbf52b607d867e9e9c5a79042898a0d120f0000c16ff286230f0000c16ff286230000", + "0x5f3e4907f716ac89b6347d15ececedca88dcde934c658227ee1dfafcd6e1690394f72a73893fbd00b11fcce65a014cc5b9ff5066ec15aa6be068b4cabfe67fdb": "0x000001547ff0ab649283a7ae01dbc2eb73932eba2fb09075e9485ff369082a2ff38d65", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19509fe6329cc0b39e09343a73657373696f6e3a6b6579739b9b11e996dcc26adf561753356c27f768521a8eced25b7311744e61cb1ebfbc": "0x68655684472b743e456907b398d3a44c113f189e56d1bbfd55e889e295dfde78", + "0x5f3e4907f716ac89b6347d15ececedca3ed14b45ed20d054f05e37e2542cfe7094f72a73893fbd00b11fcce65a014cc5b9ff5066ec15aa6be068b4cabfe67fdb": "0x66bc1e5d275da50b72b15de072a2468a5ad414919ca9054d2695767cf650012f", + "0x5f3e4907f716ac89b6347d15ececedcaac0a2cbf8e355f5ea6cb2de8727bfb0c": "0x54000000", + "0xcec5070d609dd3497f72bde07fc96ba04c014e6bf8b8c2c011e7290b85696bb39fe6329cc0b39e09343a73657373696f6e3a6b657973e54094c2d5af8ae10b91e1288f4f59f2946d7738f2c509b7effd909e5e9ba0ad": "0x5633b70b80a6c8bb16270f82cca6d56b27ed7b76c8fd5af2986a25a4788ce440482a3389a6cf42d8ed83888cfd920fec738ea30f97e44699ada7323f08c3380a482a3389a6cf42d8ed83888cfd920fec738ea30f97e44699ada7323f08c3380a482a3389a6cf42d8ed83888cfd920fec738ea30f97e44699ada7323f08c3380a", + "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da96b1ab1274bcbe3a4176e17eb2917654904f19b3261911ec3f7a30a473a04dcc8": "0x000000000000407a10f35a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "0x5f3e4907f716ac89b6347d15ececedca682db92dde20a10d96d00ff0e9e221c0b4def25cfda6ef3a0000000079091c57296b2634547ff0ab649283a7ae01dbc2eb73932eba2fb09075e9485ff369082a2ff38d65": "0x00", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19509fe6329cc0b39e09343a73657373696f6e3a6b65797340944475c781bbdc9726766a78b1964888e039600b1c865c62586ab8f98c171e": "0x547ff0ab649283a7ae01dbc2eb73932eba2fb09075e9485ff369082a2ff38d65", + "0xcec5070d609dd3497f72bde07fc96ba04c014e6bf8b8c2c011e7290b85696bb39fe6329cc0b39e09343a73657373696f6e3a6b657973711590f60a214f6f06502eb29dd14f55aa04e72e2fa12c098ba4fa5a00c57fa9": "0x7932cff431e748892fa48e10c63c17d30f80ca42e4de3921e641249cd7fa3c2f482dbd7297a39fa145c570552249c2ca9dd47e281f0c500c971b59c9dcdcd82e482dbd7297a39fa145c570552249c2ca9dd47e281f0c500c971b59c9dcdcd82e482dbd7297a39fa145c570552249c2ca9dd47e281f0c500c971b59c9dcdcd82e", + "0x1cb6f36e027abb2091cfb5110ab5087f66e8f035c8adbe7f1547b43c51e6f8a4": "0x00000000", "0x26aa394eea5630e07c48ae0c9558cef7a44704b568d21667356a5a050c11874611da6d1f761ddf9bdb4c9d6e5303ebd41f61858d0a5647a1a7bfe089bf921be9": "0x4545454545454545454545454545454545454545454545454545454545454545", - "0x3a6772616e6470615f617574686f726974696573": "0x0110e23578cbc267982cfc0bf7be54cd952fa3c07631850880ca88e395e25f4812c701000000000000007e8a1b8e637a062656eff12dc94bbbc3e254d9bb93bd44972f0a96c7fdde5b4d01000000000000005202d3e9c3bf075b44615f9ac4c28b8627079a219ff66e01655487c3bde52eb80100000000000000f6e62e9231c0424c1b747ffb5ccaedcb9fd6fddc2bfcb2db963c02db74c0c84d0100000000000000", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19509fe6329cc0b39e09343a73657373696f6e3a6b657973a1243cfbda382a96e2fffd4d8c847b04aa4ac7719037b42dc283987272fb6852": "0xdc94ff7f625d9ef7824766f90a5eb8aa03f99b7b28664585950221d0d2358e3a", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19509fe6329cc0b39e09343a73657373696f6e3a6b657973b84da33d6821a3ecdab06fb5517b5338b39edf649f3c0cdebf9a6322e2976a2f": "0xdc94ff7f625d9ef7824766f90a5eb8aa03f99b7b28664585950221d0d2358e3a", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19509fe6329cc0b39e09343a73657373696f6e3a6b657973caf51cb2812dec8599a1e85e56ec7627cced6492a6a60f1e70ddcd14e06ae799": "0xdc94ff7f625d9ef7824766f90a5eb8aa03f99b7b28664585950221d0d2358e3a", - "0x1a736d37504c2e3fb73dad160c55b2917ac6a308d645671864cda07d358e751211da6d1f761ddf9bdb4c9d6e5303ebd41f61858d0a5647a1a7bfe089bf921be9": "0x186e51d621d637695a1c4214ff5b85fb0063fe3908f8b39c380c582011c3807078dc94ff7f625d9ef7824766f90a5eb8aa03f99b7b28664585950221d0d2358e3a2a009220d327910e8ffd89167b7d96eb8871a37c374ec0adfdf1b6c384b22761f417395797ff444345d7c25355bbab14de5ca8857104a028d969147a4fbd6e29cafad6120836227e4660c07c046c2b56e8fba10cbf3fcfdcc566d774e14fd3676d6f646c70792f74727372790000000000000000000000000000000000000000", - "0x5f3e4907f716ac89b6347d15ececedca9220e172bed316605f73f1ff7b4ade9885268962a32b3f1cffce32ce1e5f6d6d3d633f7e21fd4e659402a2c62cab64ca": "0x00", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19509fe6329cc0b39e09343a73657373696f6e3a6b657973fdc59ca6b20d398f03a062a5e1bc32e350fe13cda745936e92daa3a75acb8853": "0xf417395797ff444345d7c25355bbab14de5ca8857104a028d969147a4fbd6e29" + "0x5f3e4907f716ac89b6347d15ececedcaad811cd65a470ddc5f1d628ff055098211da6d1f761ddf9bdb4c9d6e5303ebd41f61858d0a5647a1a7bfe089bf921be9": "0x00000000", + "0x5f3e4907f716ac89b6347d15ececedcab49a2738eeb30896aacb8b3fb46471bd": "0x04000000", + "0xcec5070d609dd3497f72bde07fc96ba088dcde934c658227ee1dfafcd6e16903": "0x10f26cdb14b5aec7b2789fd5ca80f979cef3761897ae1f37ffb3e154cbcc1c2663547ff0ab649283a7ae01dbc2eb73932eba2fb09075e9485ff369082a2ff38d6568655684472b743e456907b398d3a44c113f189e56d1bbfd55e889e295dfde789c7a2ee14e565db0c69f78c7b4cd839fbf52b607d867e9e9c5a79042898a0d12", + "0x5f3e4907f716ac89b6347d15ececedca8bde0a0ea8864605e3b68ed9cb2da01bb4def25cfda6ef3a0000000079091c57296b2634547ff0ab649283a7ae01dbc2eb73932eba2fb09075e9485ff369082a2ff38d65": "0x0ff6ffc06ff286230ff6ffc06ff2862300", + "0x5f3e4907f716ac89b6347d15ececedca422adb579f1dbf4f3886c5cfa3bb8cc401278c742b3436b1fdc6f422f6166f4cf5078209e15c31f4947506f71744409a": "0x547ff0ab649283a7ae01dbc2eb73932eba2fb09075e9485ff369082a2ff38d650f0000c16ff286230f0000c16ff286230000", + "0x5f3e4907f716ac89b6347d15ececedca42982b9d6c7acc99faa9094c912372c2b4def25cfda6ef3a00000000c90f9b6dd26886b468655684472b743e456907b398d3a44c113f189e56d1bbfd55e889e295dfde78": "0x0ff6ffc06ff286230ff6ffc06ff2862300", + "0x5f3e4907f716ac89b6347d15ececedca0b6a45321efae92aea15e0740ec7afe7": "0x00000000", + "0x5f3e4907f716ac89b6347d15ececedca9220e172bed316605f73f1ff7b4ade98e54094c2d5af8ae10b91e1288f4f59f2946d7738f2c509b7effd909e5e9ba0ad": "0x00" }, "children": {} } -- GitLab From a439a7aa5a9a3df2a42d9b25ea04288d3a0866e8 Mon Sep 17 00:00:00 2001 From: Gavin Wood Date: Fri, 6 Mar 2020 23:46:38 +0100 Subject: [PATCH 146/301] Second migration fix (#5178) * Second migration fix * Fix check-runtime script * Another fix to the CI * Revert changes. * Bump runtime --- bin/node/runtime/src/lib.rs | 2 +- frame/balances/src/migration.rs | 11 ++++++++--- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/bin/node/runtime/src/lib.rs b/bin/node/runtime/src/lib.rs index 7b203d2e93..064132e61c 100644 --- a/bin/node/runtime/src/lib.rs +++ b/bin/node/runtime/src/lib.rs @@ -82,7 +82,7 @@ pub const VERSION: RuntimeVersion = RuntimeVersion { // and set impl_version to 0. If only runtime // implementation changes and behavior does not, then leave spec_version as // is and increment impl_version. - spec_version: 232, + spec_version: 233, impl_version: 0, apis: RUNTIME_API_VERSIONS, }; diff --git a/frame/balances/src/migration.rs b/frame/balances/src/migration.rs index d50f916b31..4412a38ca1 100644 --- a/frame/balances/src/migration.rs +++ b/frame/balances/src/migration.rs @@ -68,15 +68,20 @@ fn upgrade_v1_to_v2, I: Instance>() { put_storage_value(b"Balances", b"Account", &hash, account); } + let prefix = { + let encoded_prefix_key_hash = b":session:keys".to_vec().encode(); + let mut h = twox_64(&encoded_prefix_key_hash[..]).to_vec(); + h.extend(&encoded_prefix_key_hash[..]); + h + }; + for (hash, balances) in StorageIterator::>::new(b"Balances", b"Account").drain() { let nonce = take_storage_value::(b"System", b"AccountNonce", &hash).unwrap_or_default(); let mut refs: system::RefCount = 0; // The items in Kusama that would result in a ref count being incremented. if have_storage_value(b"Democracy", b"Proxy", &hash) { refs += 1 } // We skip Recovered since it's being replaced anyway. - let k = b":session:keys".encode(); - let mut prefixed_hash = twox_64(&k[..]).to_vec(); - prefixed_hash.extend(&k[..]); + let mut prefixed_hash = prefix.clone(); prefixed_hash.extend(&hash[..]); if have_storage_value(b"Session", b"NextKeys", &prefixed_hash) { refs += 1 } if have_storage_value(b"Staking", b"Bonded", &hash) { refs += 1 } -- GitLab From eda82aef96654cc33b6fee681a3c7b118cb97a68 Mon Sep 17 00:00:00 2001 From: kianenigma Date: Mon, 9 Mar 2020 08:27:19 +0100 Subject: [PATCH 147/301] nits --- frame/staking/src/lib.rs | 6 +++--- primitives/phragmen/src/lib.rs | 7 ++++--- primitives/phragmen/src/reduce.rs | 2 +- 3 files changed, 8 insertions(+), 7 deletions(-) diff --git a/frame/staking/src/lib.rs b/frame/staking/src/lib.rs index 522a4e2bb9..6db4f8ebcf 100644 --- a/frame/staking/src/lib.rs +++ b/frame/staking/src/lib.rs @@ -261,7 +261,7 @@ pub mod slashing; pub mod offchain_election; pub mod inflation; -use sp_std::{prelude::*, result, collections::btree_map::BTreeMap, convert::{TryInto, From}}; +use sp_std::{prelude::*, result, collections::btree_map::BTreeMap, convert::{TryInto, From}, mem::size_of}; use codec::{HasCompact, Encode, Decode}; use frame_support::{ decl_module, decl_event, decl_storage, ensure, decl_error, debug, Parameter, @@ -312,8 +312,8 @@ pub type NominatorIndex = u32; pub type ValidatorIndex = u16; // Ensure the size of both ValidatorIndex and NominatorIndex -static_assertions::const_assert!(sp_std::mem::size_of::() <= sp_std::mem::size_of::()); -static_assertions::const_assert!(sp_std::mem::size_of::() <= sp_std::mem::size_of::()); +static_assertions::const_assert!(size_of::() <= size_of::()); +static_assertions::const_assert!(size_of::() <= size_of::()); /// Maximum number of stakers that can be stored in a snapshot. pub(crate) const MAX_VALIDATORS: usize = ValidatorIndex::max_value() as usize; diff --git a/primitives/phragmen/src/lib.rs b/primitives/phragmen/src/lib.rs index 4ec63a4b2e..eb360d718e 100644 --- a/primitives/phragmen/src/lib.rs +++ b/primitives/phragmen/src/lib.rs @@ -490,16 +490,17 @@ pub fn elect( } } - if assignment.distribution.len() > 0 { + let len = assignment.distribution.len(); + if len > 0 { // To ensure an assertion indicating: no stake from the voter going to waste, // we add a minimal post-processing to equally assign all of the leftover stake ratios. - let vote_count: R::Inner = assignment.distribution.len().saturated_into(); + let vote_count: R::Inner = len.saturated_into(); let accuracy = R::ACCURACY; - let len = assignment.distribution.len(); let mut sum: R::Inner = Zero::zero(); assignment.distribution.iter().for_each(|a| sum = sum.saturating_add(a.1.deconstruct())); let diff = accuracy.saturating_sub(sum); + dbg!(diff); let diff_per_vote = (diff / vote_count).min(accuracy); if !diff_per_vote.is_zero() { diff --git a/primitives/phragmen/src/reduce.rs b/primitives/phragmen/src/reduce.rs index fea2552f61..a3ad1c8be1 100644 --- a/primitives/phragmen/src/reduce.rs +++ b/primitives/phragmen/src/reduce.rs @@ -972,7 +972,7 @@ mod tests { #[test] #[should_panic] - fn should_deal_with_duplicates_voter() { + fn reduce_panics_on_duplicate_voter() { let mut assignments = vec![ StakedAssignment { who: 1, -- GitLab From 56d1f5e345035a8658adc1f74feaefc4fa419640 Mon Sep 17 00:00:00 2001 From: kianenigma Date: Mon, 9 Mar 2020 08:44:42 +0100 Subject: [PATCH 148/301] Remove dbg --- primitives/phragmen/src/lib.rs | 1 - 1 file changed, 1 deletion(-) diff --git a/primitives/phragmen/src/lib.rs b/primitives/phragmen/src/lib.rs index eb360d718e..3f7f0523bd 100644 --- a/primitives/phragmen/src/lib.rs +++ b/primitives/phragmen/src/lib.rs @@ -500,7 +500,6 @@ pub fn elect( assignment.distribution.iter().for_each(|a| sum = sum.saturating_add(a.1.deconstruct())); let diff = accuracy.saturating_sub(sum); - dbg!(diff); let diff_per_vote = (diff / vote_count).min(accuracy); if !diff_per_vote.is_zero() { -- GitLab From 1b80152d964809978be786fb89c735ec1a468f4d Mon Sep 17 00:00:00 2001 From: Marcio Diaz Date: Mon, 9 Mar 2020 10:12:20 +0100 Subject: [PATCH 149/301] Benchmark Vesting (#5048) * Init macro * Refactor function. * Add feature * vested transfer benchmark * Fix features * Forgot to push this fix * bump impl * Nits. Co-authored-by: Shawn Tabrizi --- Cargo.lock | 1 + bin/node/runtime/Cargo.toml | 1 + bin/node/runtime/src/lib.rs | 9 ++- frame/vesting/Cargo.toml | 2 + frame/vesting/src/benchmarking.rs | 111 ++++++++++++++++++++++++++++++ frame/vesting/src/lib.rs | 3 + 6 files changed, 126 insertions(+), 1 deletion(-) create mode 100644 frame/vesting/src/benchmarking.rs diff --git a/Cargo.lock b/Cargo.lock index 2bed3b2bb5..4b170d9082 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4545,6 +4545,7 @@ name = "pallet-vesting" version = "2.0.0-alpha.3" dependencies = [ "enumflags2", + "frame-benchmarking", "frame-support", "frame-system", "hex-literal", diff --git a/bin/node/runtime/Cargo.toml b/bin/node/runtime/Cargo.toml index 0d65cf5339..15672715a4 100644 --- a/bin/node/runtime/Cargo.toml +++ b/bin/node/runtime/Cargo.toml @@ -137,4 +137,5 @@ runtime-benchmarks = [ "pallet-timestamp/runtime-benchmarks", "pallet-identity/runtime-benchmarks", "pallet-balances/runtime-benchmarks", + "pallet-vesting/runtime-benchmarks", ] diff --git a/bin/node/runtime/src/lib.rs b/bin/node/runtime/src/lib.rs index 064132e61c..796782a102 100644 --- a/bin/node/runtime/src/lib.rs +++ b/bin/node/runtime/src/lib.rs @@ -83,7 +83,7 @@ pub const VERSION: RuntimeVersion = RuntimeVersion { // implementation changes and behavior does not, then leave spec_version as // is and increment impl_version. spec_version: 233, - impl_version: 0, + impl_version: 1, apis: RUNTIME_API_VERSIONS, }; @@ -864,6 +864,13 @@ impl_runtime_apis! { steps, repeat, ), + b"pallet-vesting" | b"vesting" => Vesting::run_benchmark( + extrinsic, + lowest_range_values, + highest_range_values, + steps, + repeat, + ), _ => Err("Benchmark not found for this pallet."), }; diff --git a/frame/vesting/Cargo.toml b/frame/vesting/Cargo.toml index f01a0f6bf2..882c062c43 100644 --- a/frame/vesting/Cargo.toml +++ b/frame/vesting/Cargo.toml @@ -17,6 +17,7 @@ sp-io = { version = "2.0.0-alpha.2", default-features = false, path = "../../pri sp-runtime = { version = "2.0.0-alpha.2", default-features = false, path = "../../primitives/runtime" } frame-support = { version = "2.0.0-alpha.2", default-features = false, path = "../support" } frame-system = { version = "2.0.0-alpha.2", default-features = false, path = "../system" } +frame-benchmarking = { version = "2.0.0-alpha.2", default-features = false, path = "../benchmarking", optional = true } [dev-dependencies] sp-core = { version = "2.0.0-alpha.2", path = "../../primitives/core" } @@ -35,3 +36,4 @@ std = [ "frame-support/std", "frame-system/std", ] +runtime-benchmarks = ["frame-benchmarking", "frame-system/runtime-benchmarks"] diff --git a/frame/vesting/src/benchmarking.rs b/frame/vesting/src/benchmarking.rs new file mode 100644 index 0000000000..79ab0cb6e3 --- /dev/null +++ b/frame/vesting/src/benchmarking.rs @@ -0,0 +1,111 @@ +// Copyright 2020 Parity Technologies (UK) Ltd. +// This file is part of Substrate. + +// Substrate is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Substrate is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Substrate. If not, see . + +//! Vesting pallet benchmarking. + +use super::*; + +use frame_system::{RawOrigin, Module as System}; +use sp_io::hashing::blake2_256; +use frame_benchmarking::{benchmarks, account}; + +use crate::Module as Vesting; + +const SEED: u32 = 0; +const MAX_LOCKS: u32 = 20; + +fn add_locks(l: u32) { + for id in 0..l { + let lock_id = <[u8; 8]>::decode(&mut &id.using_encoded(blake2_256)[..]) + .unwrap_or_default(); + let locker = account("locker", 0, SEED); + let locked = 1; + let reasons = WithdrawReason::Transfer | WithdrawReason::Reserve; + T::Currency::set_lock(lock_id, &locker, locked.into(), reasons); + } +} + +fn setup(b: u32) -> T::AccountId { + let locked = 1; + let per_block = 1; + let starting_block = 0; + + let caller = account("caller", 0, SEED); + + // Add schedule to avoid `NotVesting` error. + let _ = Vesting::::add_vesting_schedule( + &caller, + locked.into(), + per_block.into(), + starting_block.into(), + ); + + // Set lock and block number to take different code paths. + let reasons = WithdrawReason::Transfer | WithdrawReason::Reserve; + T::Currency::set_lock(VESTING_ID, &caller, locked.into(), reasons); + System::::set_block_number(b.into()); + + caller +} + +benchmarks! { + _ { + // Current block. It allows to hit different paths of `update_lock`. + // It doesn't seems to influence the timings which branch is taken. + let b in 0 .. 1 => (); + // Number of previous locks. + // It doesn't seems to influence the timings for lower values. + let l in 0 .. MAX_LOCKS => add_locks::(l); + } + + vest { + let b in ...; + let l in ...; + + let caller = setup::(b); + + }: _(RawOrigin::Signed(caller)) + + vest_other { + let b in ...; + let l in ...; + + let other: T::AccountId = setup::(b); + let other_lookup: ::Source = T::Lookup::unlookup(other.clone()); + + let caller = account("caller", 0, SEED); + + }: _(RawOrigin::Signed(caller), other_lookup) + + vested_transfer { + let u in 0 .. 1000; + + let from = account("from", u, SEED); + let to = account("to", u, SEED); + let to_lookup: ::Source = T::Lookup::unlookup(to); + + let transfer_amount = T::MinVestedTransfer::get(); + + let vesting_schedule = VestingInfo { + locked: transfer_amount, + per_block: 1.into(), + starting_block: 0.into(), + }; + + let _ = T::Currency::make_free_balance_be(&from, transfer_amount * 10.into()); + + }: _(RawOrigin::Signed(from), to_lookup, vesting_schedule) +} diff --git a/frame/vesting/src/lib.rs b/frame/vesting/src/lib.rs index 02d5bebfd2..223b840678 100644 --- a/frame/vesting/src/lib.rs +++ b/frame/vesting/src/lib.rs @@ -60,6 +60,9 @@ use frame_support::traits::{ use frame_support::weights::SimpleDispatchInfo; use frame_system::{self as system, ensure_signed}; +#[cfg(feature = "runtime-benchmarks")] +mod benchmarking; + type BalanceOf = <::Currency as Currency<::AccountId>>::Balance; pub trait Trait: frame_system::Trait { -- GitLab From 0a5bd0bc79eed723529f6b37dfa26d89bb242ff4 Mon Sep 17 00:00:00 2001 From: Shawn Tabrizi Date: Mon, 9 Mar 2020 13:39:05 +0200 Subject: [PATCH 150/301] Update logic to cancel_deferred_slash (#5186) * Update logic to cancel_deferred_slash * More idiomatic * bump spec Co-authored-by: Gavin Wood --- bin/node/runtime/src/lib.rs | 4 +-- frame/staking/src/lib.rs | 27 ++++++++++--------- frame/staking/src/tests.rs | 54 +++++++++++++++++++++++++++++++++---- 3 files changed, 65 insertions(+), 20 deletions(-) diff --git a/bin/node/runtime/src/lib.rs b/bin/node/runtime/src/lib.rs index 796782a102..34cb8eb749 100644 --- a/bin/node/runtime/src/lib.rs +++ b/bin/node/runtime/src/lib.rs @@ -82,8 +82,8 @@ pub const VERSION: RuntimeVersion = RuntimeVersion { // and set impl_version to 0. If only runtime // implementation changes and behavior does not, then leave spec_version as // is and increment impl_version. - spec_version: 233, - impl_version: 1, + spec_version: 234, + impl_version: 0, apis: RUNTIME_API_VERSIONS, }; diff --git a/frame/staking/src/lib.rs b/frame/staking/src/lib.rs index 627cd1c2a1..5226f5a3b3 100644 --- a/frame/staking/src/lib.rs +++ b/frame/staking/src/lib.rs @@ -928,6 +928,8 @@ decl_error! { InvalidEraToReward, /// Invalid number of nominations. InvalidNumberOfNominations, + /// Items are not sorted and unique. + NotSortedAndUnique, } } @@ -1327,21 +1329,15 @@ decl_module! { .map(|_| ()) .or_else(ensure_root)?; - let mut slash_indices = slash_indices; - slash_indices.sort_unstable(); + ensure!(!slash_indices.is_empty(), Error::::EmptyTargets); + ensure!(Self::is_sorted_and_unique(&slash_indices), Error::::NotSortedAndUnique); + let mut unapplied = ::UnappliedSlashes::get(&era); + let last_item = slash_indices[slash_indices.len() - 1]; + ensure!((last_item as usize) < unapplied.len(), Error::::InvalidSlashIndex); for (removed, index) in slash_indices.into_iter().enumerate() { - let index = index as usize; - - // if `index` is not duplicate, `removed` must be <= index. - ensure!(removed <= index, Error::::DuplicateIndex); - - // all prior removals were from before this index, since the - // list is sorted. - let index = index - removed; - ensure!(index < unapplied.len(), Error::::InvalidSlashIndex); - + let index = (index as usize) - removed; unapplied.remove(index); } @@ -1411,7 +1407,7 @@ decl_module! { let controller = ensure_signed(origin)?; let ledger = Self::ledger(&controller).ok_or(Error::::NotController)?; ensure!( - ledger.unlocking.len() > 0, + !ledger.unlocking.is_empty(), Error::::NoUnlockChunk, ); @@ -1460,6 +1456,11 @@ impl Module { Self::bonded(stash).and_then(Self::ledger).map(|l| l.active).unwrap_or_default() } + /// Check that list is sorted and has no duplicates. + fn is_sorted_and_unique(list: &Vec) -> bool { + list.windows(2).all(|w| w[0] < w[1]) + } + // MUTABLES (DANGEROUS) fn do_payout_nominator(who: T::AccountId, era: EraIndex, validators: Vec<(T::AccountId, u32)>) diff --git a/frame/staking/src/tests.rs b/frame/staking/src/tests.rs index 507b5591d5..00a8f854db 100644 --- a/frame/staking/src/tests.rs +++ b/frame/staking/src/tests.rs @@ -2616,7 +2616,13 @@ fn remove_deferred() { 1, ); - Staking::cancel_deferred_slash(Origin::ROOT, 1, vec![0]).unwrap(); + // fails if empty + assert_noop!( + Staking::cancel_deferred_slash(Origin::ROOT, 1, vec![]), + Error::::EmptyTargets + ); + + assert_ok!(Staking::cancel_deferred_slash(Origin::ROOT, 1, vec![0])); assert_eq!(Balances::free_balance(11), 1000); assert_eq!(Balances::free_balance(101), 2000); @@ -2689,12 +2695,51 @@ fn remove_multi_deferred() { &[Perbill::from_percent(25)], ); - assert_eq!(::UnappliedSlashes::get(&1).len(), 3); - Staking::cancel_deferred_slash(Origin::ROOT, 1, vec![0, 2]).unwrap(); + on_offence_now( + &[ + OffenceDetails { + offender: (42, exposure.clone()), + reporters: vec![], + }, + ], + &[Perbill::from_percent(25)], + ); + + on_offence_now( + &[ + OffenceDetails { + offender: (69, exposure.clone()), + reporters: vec![], + }, + ], + &[Perbill::from_percent(25)], + ); + + assert_eq!(::UnappliedSlashes::get(&1).len(), 5); + + // fails if list is not sorted + assert_noop!( + Staking::cancel_deferred_slash(Origin::ROOT, 1, vec![2, 0, 4]), + Error::::NotSortedAndUnique + ); + // fails if list is not unique + assert_noop!( + Staking::cancel_deferred_slash(Origin::ROOT, 1, vec![0, 2, 2]), + Error::::NotSortedAndUnique + ); + // fails if bad index + assert_noop!( + Staking::cancel_deferred_slash(Origin::ROOT, 1, vec![1, 2, 3, 4, 5]), + Error::::InvalidSlashIndex + ); + + assert_ok!(Staking::cancel_deferred_slash(Origin::ROOT, 1, vec![0, 2, 4])); let slashes = ::UnappliedSlashes::get(&1); - assert_eq!(slashes.len(), 1); + assert_eq!(slashes.len(), 2); + println!("Slashes: {:?}", slashes); assert_eq!(slashes[0].validator, 21); + assert_eq!(slashes[1].validator, 42); }) } @@ -2994,4 +3039,3 @@ fn set_history_depth_works() { assert!(!::ErasTotalStake::contains_key(10 - 5)); }); } - -- GitLab From 6b5a7adecf2c853b9c188ace500422056b858164 Mon Sep 17 00:00:00 2001 From: Jianping Deng Date: Mon, 9 Mar 2020 19:39:17 +0800 Subject: [PATCH 151/301] Add 6 as address type of ss58 for Bifrost Network (#5184) --- primitives/core/src/crypto.rs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/primitives/core/src/crypto.rs b/primitives/core/src/crypto.rs index 8fa7c7e7b4..50f5c94b08 100644 --- a/primitives/core/src/crypto.rs +++ b/primitives/core/src/crypto.rs @@ -438,6 +438,8 @@ ss58_address_format!( (2, "kusama", "Kusama Relay-chain, direct checksum, standard account (*25519).") PlasmAccountDirect => (5, "plasm", "Plasm Network, direct checksum, standard account (*25519).") + BifrostAccountDirect => + (6, "bifrost", "Bifrost mainnet, direct checksum, standard account (*25519).") EdgewareAccountDirect => (7, "edgeware", "Edgeware mainnet, direct checksum, standard account (*25519).") KaruraAccountDirect => -- GitLab From e896cf3da7a4d691789d874551fbbc850232e6f8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bastian=20K=C3=B6cher?= Date: Mon, 9 Mar 2020 12:39:49 +0100 Subject: [PATCH 152/301] Improve debug implementation of `CheckNonce` and `CheckEra` (#5156) --- frame/system/src/lib.rs | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/frame/system/src/lib.rs b/frame/system/src/lib.rs index f1286beac4..bd9e61b51a 100644 --- a/frame/system/src/lib.rs +++ b/frame/system/src/lib.rs @@ -1257,7 +1257,7 @@ impl CheckNonce { impl Debug for CheckNonce { #[cfg(feature = "std")] fn fmt(&self, f: &mut sp_std::fmt::Formatter) -> sp_std::fmt::Result { - self.0.fmt(f) + write!(f, "CheckNonce({})", self.0) } #[cfg(not(feature = "std"))] @@ -1336,19 +1336,19 @@ impl IsDeadAccount for Module { /// Check for transaction mortality. #[derive(Encode, Decode, Clone, Eq, PartialEq)] -pub struct CheckEra((Era, sp_std::marker::PhantomData)); +pub struct CheckEra(Era, sp_std::marker::PhantomData); impl CheckEra { /// utility constructor. Used only in client/factory code. pub fn from(era: Era) -> Self { - Self((era, sp_std::marker::PhantomData)) + Self(era, sp_std::marker::PhantomData) } } impl Debug for CheckEra { #[cfg(feature = "std")] fn fmt(&self, f: &mut sp_std::fmt::Formatter) -> sp_std::fmt::Result { - self.0.fmt(f) + write!(f, "CheckEra({:?})", self.0) } #[cfg(not(feature = "std"))] @@ -1373,7 +1373,7 @@ impl SignedExtension for CheckEra { _len: usize, ) -> TransactionValidity { let current_u64 = >::block_number().saturated_into::(); - let valid_till = (self.0).0.death(current_u64); + let valid_till = self.0.death(current_u64); Ok(ValidTransaction { longevity: valid_till.saturating_sub(current_u64), ..Default::default() @@ -1382,7 +1382,7 @@ impl SignedExtension for CheckEra { fn additional_signed(&self) -> Result { let current_u64 = >::block_number().saturated_into::(); - let n = (self.0).0.birth(current_u64).saturated_into::(); + let n = self.0.birth(current_u64).saturated_into::(); if !>::contains_key(n) { Err(InvalidTransaction::AncientBirthBlock.into()) } else { -- GitLab From 0c9c20fb91270347a671742c1cf74015d75fc94e Mon Sep 17 00:00:00 2001 From: kianenigma Date: Mon, 9 Mar 2020 14:12:16 +0100 Subject: [PATCH 153/301] Better fuzzing params --- frame/staking/fuzz/Cargo.lock | 1754 ++++++++--------- .../fuzz/fuzz_targets/submit_solution.rs | 6 +- frame/staking/src/testing_utils.rs | 2 - 3 files changed, 856 insertions(+), 906 deletions(-) diff --git a/frame/staking/fuzz/Cargo.lock b/frame/staking/fuzz/Cargo.lock index b24f525047..e8469483db 100644 --- a/frame/staking/fuzz/Cargo.lock +++ b/frame/staking/fuzz/Cargo.lock @@ -4,1620 +4,1740 @@ name = "Inflector" version = "0.11.4" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fe438c63458706e03479442743baae6c88256498e6431708f6dfc520a26515d3" dependencies = [ - "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "regex 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static", + "regex", ] [[package]] name = "ahash" version = "0.2.18" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f33b5018f120946c1dcf279194f238a9f146725593ead1c08fa47ff22b0b5d3" dependencies = [ - "const-random 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", + "const-random", ] [[package]] name = "aho-corasick" -version = "0.7.8" +version = "0.7.10" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8716408b8bc624ed7f65d223ddb9ac2d044c0547b6fa4b0d554f3a9540496ada" dependencies = [ - "memchr 2.3.2 (registry+https://github.com/rust-lang/crates.io-index)", + "memchr", ] -[[package]] -name = "anyhow" -version = "1.0.26" -source = "registry+https://github.com/rust-lang/crates.io-index" - [[package]] name = "arbitrary" version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "16971f2f0ce65c5cf2a1546cc6a0af102ecb11e265ddaa9433fb3e5bfdf676a4" [[package]] name = "arrayref" version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4c527152e37cf757a3f78aae5a06fbeefdb07ccc535c980a3208ee3060dd544" [[package]] name = "arrayvec" version = "0.4.12" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd9fd44efafa8690358b7408d253adf110036b88f55672a933f01d616ad9b1b9" dependencies = [ - "nodrop 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)", + "nodrop", ] [[package]] name = "arrayvec" version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cff77d8686867eceff3105329d4698d96c2391c176d5d03adc90c7389162b5b8" [[package]] name = "autocfg" version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d49d90015b3c36167a20fe2810c5cd875ad504b39cff3d4eae7977e6b7c1cb2" [[package]] name = "autocfg" version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8aac770f1885fd7e387acedd76065302551364496e46b3dd00860b2f8359b9d" [[package]] name = "backtrace" -version = "0.3.44" +version = "0.3.45" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad235dabf00f36301792cfe82499880ba54c6486be094d1047b02bacb67c14e8" dependencies = [ - "backtrace-sys 0.1.32 (registry+https://github.com/rust-lang/crates.io-index)", - "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", - "rustc-demangle 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)", + "backtrace-sys", + "cfg-if", + "libc", + "rustc-demangle", ] [[package]] name = "backtrace-sys" -version = "0.1.32" +version = "0.1.33" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e17b52e737c40a7d75abca20b29a19a0eb7ba9fc72c5a72dd282a0a3c2c0dc35" dependencies = [ - "cc 1.0.50 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", + "cc", + "libc", ] [[package]] name = "base58" version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5024ee8015f02155eee35c711107ddd9a9bf3cb689cf2a9089c97e79b6e1ae83" [[package]] name = "bitflags" version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf1de2fe8c75bc145a2f577add951f8134889b4795d47466a54a5c846d691693" [[package]] name = "bitmask" version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5da9b3d9f6f585199287a473f4f8dfab6566cf827d15c00c219f53c645687ead" [[package]] name = "bitvec" version = "0.15.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a993f74b4c99c1908d156b8d2e0fb6277736b0ecbd833982fd1241d39b2766a6" [[package]] name = "blake2-rfc" version = "0.2.18" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d6d530bdd2d52966a6d03b7a964add7ae1a288d25214066fd4b600f0f796400" dependencies = [ - "arrayvec 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", - "constant_time_eq 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "arrayvec 0.4.12", + "constant_time_eq", ] [[package]] name = "block-buffer" version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0940dc441f31689269e10ac70eb1002a3a1d3ad1390e030043662eb7fe4688b" dependencies = [ - "block-padding 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", - "byte-tools 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "byteorder 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "generic-array 0.12.3 (registry+https://github.com/rust-lang/crates.io-index)", + "block-padding", + "byte-tools", + "byteorder", + "generic-array", ] [[package]] name = "block-padding" version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa79dedbb091f449f1f39e53edf88d5dbe95f895dae6135a8d7b881fb5af73f5" dependencies = [ - "byte-tools 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "byte-tools", ] [[package]] name = "bumpalo" version = "3.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f359dc14ff8911330a51ef78022d376f25ed00248912803b58f00cb1c27f742" [[package]] name = "byte-slice-cast" version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0a5e3906bcbf133e33c1d4d95afc664ad37fbdb9f6568d8043e7ea8c27d93d3" [[package]] name = "byte-tools" version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3b5ca7a04898ad4bcd41c90c5285445ff5b791899bb1b0abdd2a2aa791211d7" [[package]] name = "byteorder" version = "1.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08c48aae112d48ed9f069b33538ea9e3e90aa263cfa3d1c24309612b1f7472de" [[package]] name = "c2-chacha" version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "214238caa1bf3a496ec3392968969cab8549f96ff30652c9e56885329315f6bb" dependencies = [ - "ppv-lite86 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", + "ppv-lite86", ] [[package]] name = "cc" version = "1.0.50" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95e28fa049fda1c330bcf9d723be7663a899c4679724b34c81e9f5a326aab8cd" [[package]] name = "cfg-if" version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822" [[package]] name = "clear_on_drop" version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97276801e127ffb46b66ce23f35cc96bd454fa311294bced4bbace7baa8b1d17" dependencies = [ - "cc 1.0.50 (registry+https://github.com/rust-lang/crates.io-index)", + "cc", ] [[package]] name = "cloudabi" version = "0.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ddfc5b9aa5d4507acaf872de71051dfd0e309860e88966e1051e462a077aac4f" dependencies = [ - "bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "bitflags", ] [[package]] name = "const-random" version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2f1af9ac737b2dd2d577701e59fd09ba34822f6f2ebdb30a7647405d9e55e16a" dependencies = [ - "const-random-macro 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", - "proc-macro-hack 0.5.11 (registry+https://github.com/rust-lang/crates.io-index)", + "const-random-macro", + "proc-macro-hack", ] [[package]] name = "const-random-macro" version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "25e4c606eb459dd29f7c57b2e0879f2b6f14ee130918c2b78ccb58a9624e6c7a" dependencies = [ - "getrandom 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)", - "proc-macro-hack 0.5.11 (registry+https://github.com/rust-lang/crates.io-index)", + "getrandom", + "proc-macro-hack", ] [[package]] name = "constant_time_eq" version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "245097e9a4535ee1e3e3931fcfcd55a796a44c643e8596ff6566d68f09b87bbc" [[package]] name = "crunchy" version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" [[package]] name = "crypto-mac" version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4434400df11d95d556bac068ddfedd482915eb18fe8bea89bc80b6e4b1c179e5" dependencies = [ - "generic-array 0.12.3 (registry+https://github.com/rust-lang/crates.io-index)", - "subtle 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "generic-array", + "subtle 1.0.0", ] [[package]] name = "curve25519-dalek" version = "1.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b7dcd30ba50cdf88b55b033456138b7c0ac4afdc436d82e1b79f370f24cc66d" dependencies = [ - "byteorder 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "clear_on_drop 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", - "digest 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "subtle 2.2.2 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder", + "clear_on_drop", + "digest", + "rand_core 0.3.1", + "subtle 2.2.2", ] [[package]] name = "curve25519-dalek" version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26778518a7f6cffa1d25a44b602b62b979bd88adb9e99ffec546998cf3404839" dependencies = [ - "byteorder 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "digest 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_core 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", - "subtle 2.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "zeroize 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder", + "digest", + "rand_core 0.5.1", + "subtle 2.2.2", + "zeroize 1.1.0", ] [[package]] name = "derive_more" version = "0.99.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a806e96c59a76a5ba6e18735b6cf833344671e61e7863f2edb5c518ea2cac95c" dependencies = [ - "proc-macro2 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 1.0.14 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2", + "quote", + "syn", ] [[package]] name = "digest" version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3d0c8c8752312f9713efd397ff63acb9f85585afbf179282e720e7704954dd5" dependencies = [ - "generic-array 0.12.3 (registry+https://github.com/rust-lang/crates.io-index)", + "generic-array", ] [[package]] name = "ed25519-dalek" version = "1.0.0-pre.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "978710b352437433c97b2bff193f2fb1dfd58a093f863dd95e225a19baa599a2" dependencies = [ - "clear_on_drop 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", - "curve25519-dalek 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)", - "sha2 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", + "clear_on_drop", + "curve25519-dalek 2.0.0", + "rand 0.7.3", + "sha2", ] [[package]] name = "environmental" version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "516aa8d7a71cb00a1c4146f0798549b93d083d4f189b3ced8f3de6b8f11ee6c4" [[package]] name = "failure" -version = "0.1.6" +version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8529c2421efa3066a5cbd8063d2244603824daccb6936b079010bb2aa89464b" dependencies = [ - "backtrace 0.3.44 (registry+https://github.com/rust-lang/crates.io-index)", - "failure_derive 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", + "backtrace", + "failure_derive", ] [[package]] name = "failure_derive" -version = "0.1.6" +version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "030a733c8287d6213886dd487564ff5c8f6aae10278b3588ed177f9d18f8d231" dependencies = [ - "proc-macro2 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 1.0.14 (registry+https://github.com/rust-lang/crates.io-index)", - "synstructure 0.12.3 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2", + "quote", + "syn", + "synstructure", ] [[package]] name = "fake-simd" version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e88a8acf291dafb59c2d96e8f59828f3838bb1a70398823ade51a84de6a6deed" [[package]] name = "fixed-hash" version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3367952ceb191f4ab95dd5685dc163ac539e36202f9fcfd0cb22f9f9c542fefc" dependencies = [ - "byteorder 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)", - "rustc-hex 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "static_assertions 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder", + "libc", + "rand 0.7.3", + "rustc-hex", + "static_assertions", ] [[package]] name = "frame-benchmarking" version = "2.0.0-alpha.3" dependencies = [ - "frame-support 2.0.0-alpha.3", - "frame-system 2.0.0-alpha.3", - "parity-scale-codec 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-api 2.0.0-alpha.3", - "sp-io 2.0.0-alpha.3", - "sp-runtime 2.0.0-alpha.3", - "sp-runtime-interface 2.0.0-alpha.3", - "sp-std 2.0.0-alpha.3", + "frame-support", + "frame-system", + "parity-scale-codec", + "sp-api", + "sp-io", + "sp-runtime", + "sp-runtime-interface", + "sp-std", ] [[package]] name = "frame-metadata" version = "11.0.0-alpha.3" dependencies = [ - "parity-scale-codec 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-core 2.0.0-alpha.3", - "sp-std 2.0.0-alpha.3", + "parity-scale-codec", + "serde", + "sp-core", + "sp-std", ] [[package]] name = "frame-support" version = "2.0.0-alpha.3" dependencies = [ - "bitmask 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", - "frame-metadata 11.0.0-alpha.3", - "frame-support-procedural 2.0.0-alpha.3", - "impl-trait-for-tuples 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "once_cell 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-scale-codec 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "paste 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-arithmetic 2.0.0-alpha.3", - "sp-core 2.0.0-alpha.3", - "sp-inherents 2.0.0-alpha.3", - "sp-io 2.0.0-alpha.3", - "sp-runtime 2.0.0-alpha.3", - "sp-state-machine 0.8.0-alpha.3", - "sp-std 2.0.0-alpha.3", - "tracing 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", + "bitmask", + "frame-metadata", + "frame-support-procedural", + "impl-trait-for-tuples", + "log", + "once_cell", + "parity-scale-codec", + "paste", + "serde", + "sp-arithmetic", + "sp-core", + "sp-inherents", + "sp-io", + "sp-runtime", + "sp-state-machine", + "sp-std", + "tracing", ] [[package]] name = "frame-support-procedural" version = "2.0.0-alpha.3" dependencies = [ - "frame-support-procedural-tools 2.0.0-alpha.3", - "proc-macro2 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 1.0.14 (registry+https://github.com/rust-lang/crates.io-index)", + "frame-support-procedural-tools", + "proc-macro2", + "quote", + "syn", ] [[package]] name = "frame-support-procedural-tools" version = "2.0.0-alpha.3" dependencies = [ - "frame-support-procedural-tools-derive 2.0.0-alpha.3", - "proc-macro-crate 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", - "proc-macro2 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 1.0.14 (registry+https://github.com/rust-lang/crates.io-index)", + "frame-support-procedural-tools-derive", + "proc-macro-crate", + "proc-macro2", + "quote", + "syn", ] [[package]] name = "frame-support-procedural-tools-derive" version = "2.0.0-alpha.3" dependencies = [ - "proc-macro2 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 1.0.14 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2", + "quote", + "syn", ] [[package]] name = "frame-system" version = "2.0.0-alpha.3" dependencies = [ - "frame-support 2.0.0-alpha.3", - "impl-trait-for-tuples 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-scale-codec 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-core 2.0.0-alpha.3", - "sp-io 2.0.0-alpha.3", - "sp-runtime 2.0.0-alpha.3", - "sp-std 2.0.0-alpha.3", - "sp-version 2.0.0-alpha.3", + "frame-support", + "impl-trait-for-tuples", + "parity-scale-codec", + "serde", + "sp-core", + "sp-io", + "sp-runtime", + "sp-std", + "sp-version", ] [[package]] name = "fuchsia-cprng" version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a06f77d526c1a601b7c4cdd98f54b5eaabffc14d5f2f0296febdc7f357c6d3ba" [[package]] name = "futures" version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c329ae8753502fb44ae4fc2b622fa2a94652c41e795143765ba0927f92ab780" dependencies = [ - "futures-channel 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-core 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-executor 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-io 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-sink 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-task 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-util 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-channel", + "futures-core", + "futures-executor", + "futures-io", + "futures-sink", + "futures-task", + "futures-util", ] [[package]] name = "futures-channel" version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0c77d04ce8edd9cb903932b608268b3fffec4163dc053b3b402bf47eac1f1a8" dependencies = [ - "futures-core 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-sink 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-core", + "futures-sink", ] [[package]] name = "futures-core" version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f25592f769825e89b92358db00d26f965761e094951ac44d3663ef25b7ac464a" [[package]] name = "futures-executor" version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f674f3e1bcb15b37284a90cedf55afdba482ab061c407a9c0ebbd0f3109741ba" dependencies = [ - "futures-core 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-task 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-util 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-core", + "futures-task", + "futures-util", ] [[package]] name = "futures-io" version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a638959aa96152c7a4cddf50fcb1e3fede0583b27157c26e67d6f99904090dc6" [[package]] name = "futures-macro" version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a5081aa3de1f7542a794a397cde100ed903b0630152d0973479018fd85423a7" dependencies = [ - "proc-macro-hack 0.5.11 (registry+https://github.com/rust-lang/crates.io-index)", - "proc-macro2 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 1.0.14 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro-hack", + "proc-macro2", + "quote", + "syn", ] [[package]] name = "futures-sink" version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3466821b4bc114d95b087b850a724c6f83115e929bc88f1fa98a3304a944c8a6" [[package]] name = "futures-task" version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b0a34e53cf6cdcd0178aa573aed466b646eb3db769570841fda0c7ede375a27" [[package]] name = "futures-util" version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22766cf25d64306bedf0384da004d05c9974ab104fcc4528f1236181c18004c5" dependencies = [ - "futures-channel 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-core 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-io 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-macro 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-sink 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-task 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "memchr 2.3.2 (registry+https://github.com/rust-lang/crates.io-index)", - "pin-utils 0.1.0-alpha.4 (registry+https://github.com/rust-lang/crates.io-index)", - "proc-macro-hack 0.5.11 (registry+https://github.com/rust-lang/crates.io-index)", - "proc-macro-nested 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", - "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-channel", + "futures-core", + "futures-io", + "futures-macro", + "futures-sink", + "futures-task", + "memchr", + "pin-utils", + "proc-macro-hack", + "proc-macro-nested", + "slab", ] [[package]] name = "generic-array" version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c68f0274ae0e023facc3c97b2e00f076be70e254bc851d972503b328db79b2ec" dependencies = [ - "typenum 1.11.2 (registry+https://github.com/rust-lang/crates.io-index)", + "typenum", ] [[package]] name = "getrandom" version = "0.1.14" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7abc8dd8451921606d809ba32e95b6111925cd2906060d2dcc29c070220503eb" dependencies = [ - "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", - "wasi 0.9.0+wasi-snapshot-preview1 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if", + "libc", + "wasi", ] [[package]] name = "hash-db" version = "0.15.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d23bd4e7b5eda0d0f3a307e8b381fdc8ba9000f26fbe912250c0a4cc3956364a" [[package]] name = "hash256-std-hasher" version = "0.15.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92c171d55b98633f4ed3860808f004099b36c1cc29c42cfc53aa8591b21efcf2" dependencies = [ - "crunchy 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", + "crunchy", ] [[package]] name = "hashbrown" version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e6073d0ca812575946eb5f35ff68dbe519907b25c42530389ff946dc84c6ead" dependencies = [ - "ahash 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)", - "autocfg 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", + "ahash", + "autocfg 0.1.7", ] [[package]] name = "heck" version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "20564e78d53d2bb135c343b3f47714a56af2061f1c928fdb541dc7b9fdd94205" dependencies = [ - "unicode-segmentation 1.6.0 (registry+https://github.com/rust-lang/crates.io-index)", + "unicode-segmentation", ] [[package]] name = "hex" version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "644f9158b2f133fd50f5fb3242878846d9eb792e445c893805ff0e3824006e35" [[package]] name = "hmac" version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5dcb5e64cda4c23119ab41ba960d1e170a774c8e4b9d9e6a9bc18aabf5e59695" dependencies = [ - "crypto-mac 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", - "digest 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", + "crypto-mac", + "digest", ] [[package]] name = "hmac-drbg" version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c6e570451493f10f6581b48cdd530413b63ea9e780f544bfd3bdcaa0d89d1a7b" dependencies = [ - "digest 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", - "generic-array 0.12.3 (registry+https://github.com/rust-lang/crates.io-index)", - "hmac 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", + "digest", + "generic-array", + "hmac", ] [[package]] name = "impl-codec" version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1be51a921b067b0eaca2fad532d9400041561aa922221cc65f95a85641c6bf53" dependencies = [ - "parity-scale-codec 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-scale-codec", ] [[package]] name = "impl-serde" version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "58e3cae7e99c7ff5a995da2cf78dd0a5383740eda71d98cf7b1910c301ac69b8" dependencies = [ - "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", + "serde", ] [[package]] name = "impl-serde" version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5bbe9ea9b182f0fb1cabbd61f4ff9b7b7b9197955e95a7e4c27de5055eb29ff8" dependencies = [ - "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", + "serde", ] [[package]] name = "impl-trait-for-tuples" version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ef5550a42e3740a0e71f909d4c861056a284060af885ae7aa6242820f920d9d" dependencies = [ - "proc-macro2 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 1.0.14 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2", + "quote", + "syn", ] [[package]] name = "integer-sqrt" version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f65877bf7d44897a473350b1046277941cee20b263397e90869c50b6e766088b" [[package]] name = "js-sys" -version = "0.3.35" +version = "0.3.36" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1cb931d43e71f560c81badb0191596562bafad2be06a3f9025b845c847c60df5" dependencies = [ - "wasm-bindgen 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", + "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.66" +version = "0.2.67" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eb147597cdf94ed43ab7a9038716637d2d1bf2bc571da995d0028dec06bd3018" [[package]] name = "libfuzzer-sys" -version = "0.3.0" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fb789afcc589a08928d1e466087445ab740a0f70a2ee23d9349a0e3723d65e1b" dependencies = [ - "arbitrary 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "cc 1.0.50 (registry+https://github.com/rust-lang/crates.io-index)", + "arbitrary", + "cc", ] [[package]] name = "libsecp256k1" version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fc1e2c808481a63dc6da2074752fdd4336a3c8fcc68b83db6f1fd5224ae7962" dependencies = [ - "arrayref 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", - "crunchy 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "digest 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", - "hmac-drbg 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)", - "sha2 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", - "subtle 2.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "typenum 1.11.2 (registry+https://github.com/rust-lang/crates.io-index)", + "arrayref", + "crunchy", + "digest", + "hmac-drbg", + "rand 0.7.3", + "sha2", + "subtle 2.2.2", + "typenum", ] [[package]] name = "lock_api" version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "79b2de95ecb4691949fea4716ca53cdbcfccb2c612e19644a8bad05edcf9f47b" dependencies = [ - "scopeguard 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "scopeguard", ] [[package]] name = "log" version = "0.4.8" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "14b6052be84e6b71ab17edffc2eeabf5c2c3ae1fdb464aae35ac50c67a44e1f7" dependencies = [ - "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if", ] [[package]] name = "maybe-uninit" version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "60302e4db3a61da70c0cb7991976248362f30319e88850c487b9b95bbf059e00" [[package]] name = "memchr" -version = "2.3.2" +version = "2.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3728d817d99e5ac407411fa471ff9800a778d88a24685968b36824eaf4bee400" [[package]] name = "memory-db" version = "0.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "198831fe8722331a395bc199a5d08efbc197497ef354cb4c77b969c02ffc0fc4" dependencies = [ - "ahash 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)", - "hash-db 0.15.2 (registry+https://github.com/rust-lang/crates.io-index)", - "hashbrown 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-util-mem 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", + "ahash", + "hash-db", + "hashbrown", + "parity-util-mem", ] [[package]] name = "memory_units" version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "71d96e3f3c0b6325d8ccd83c33b28acb183edcb6c67938ba104ec546854b0882" [[package]] name = "merlin" version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b0942b357c1b4d0dc43ba724674ec89c3218e6ca2b3e8269e7cb53bcecd2f6e" dependencies = [ - "byteorder 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "keccak 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", - "zeroize 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder", + "keccak", + "rand_core 0.4.2", + "zeroize 1.1.0", ] [[package]] name = "nodrop" version = "0.1.14" source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "nom" -version = "4.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "memchr 2.3.2 (registry+https://github.com/rust-lang/crates.io-index)", - "version_check 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", -] +checksum = "72ef4a56884ca558e5ddb05a1d1e7e1bfd9a68d9ed024c21704cc98872dae1bb" [[package]] name = "num-bigint" version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "090c7f9998ee0ff65aa5b723e4009f7b217707f1fb5ea551329cc4d6231fb304" dependencies = [ - "autocfg 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "num-integer 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)", - "num-traits 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", + "autocfg 1.0.0", + "num-integer", + "num-traits", ] [[package]] name = "num-integer" version = "0.1.42" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f6ea62e9d81a77cd3ee9a2a5b9b609447857f3d358704331e4ef39eb247fcba" dependencies = [ - "autocfg 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "num-traits 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", + "autocfg 1.0.0", + "num-traits", ] [[package]] name = "num-rational" version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da4dc79f9e6c81bef96148c8f6b8e72ad4541caa4a24373e900a36da07de03a3" dependencies = [ - "autocfg 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "num-bigint 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", - "num-integer 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)", - "num-traits 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", + "autocfg 1.0.0", + "num-bigint", + "num-integer", + "num-traits", ] [[package]] name = "num-traits" version = "0.2.11" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c62be47e61d1842b9170f0fdeec8eba98e60e90e5446449a0545e5152acd7096" dependencies = [ - "autocfg 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "autocfg 1.0.0", ] [[package]] name = "once_cell" version = "1.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1c601810575c99596d4afc46f78a678c80105117c379eb3650cf99b8a21ce5b" dependencies = [ - "parking_lot 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot 0.9.0", ] [[package]] name = "opaque-debug" version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2839e79665f131bdb5782e51f2c6c9599c133c6098982a54c794358bf432529c" [[package]] name = "pallet-authorship" version = "2.0.0-alpha.3" dependencies = [ - "frame-support 2.0.0-alpha.3", - "frame-system 2.0.0-alpha.3", - "impl-trait-for-tuples 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-scale-codec 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-authorship 2.0.0-alpha.3", - "sp-core 2.0.0-alpha.3", - "sp-inherents 2.0.0-alpha.3", - "sp-io 2.0.0-alpha.3", - "sp-runtime 2.0.0-alpha.3", - "sp-std 2.0.0-alpha.3", + "frame-support", + "frame-system", + "impl-trait-for-tuples", + "parity-scale-codec", + "sp-authorship", + "sp-core", + "sp-inherents", + "sp-io", + "sp-runtime", + "sp-std", ] [[package]] name = "pallet-balances" version = "2.0.0-alpha.3" dependencies = [ - "frame-benchmarking 2.0.0-alpha.3", - "frame-support 2.0.0-alpha.3", - "frame-system 2.0.0-alpha.3", - "parity-scale-codec 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-io 2.0.0-alpha.3", - "sp-runtime 2.0.0-alpha.3", - "sp-std 2.0.0-alpha.3", + "frame-benchmarking", + "frame-support", + "frame-system", + "parity-scale-codec", + "serde", + "sp-io", + "sp-runtime", + "sp-std", ] [[package]] name = "pallet-indices" version = "2.0.0-alpha.3" dependencies = [ - "frame-support 2.0.0-alpha.3", - "frame-system 2.0.0-alpha.3", - "parity-scale-codec 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-core 2.0.0-alpha.3", - "sp-io 2.0.0-alpha.3", - "sp-keyring 2.0.0-alpha.3", - "sp-runtime 2.0.0-alpha.3", - "sp-std 2.0.0-alpha.3", + "frame-support", + "frame-system", + "parity-scale-codec", + "serde", + "sp-core", + "sp-io", + "sp-keyring", + "sp-runtime", + "sp-std", ] [[package]] name = "pallet-session" version = "2.0.0-alpha.3" dependencies = [ - "frame-support 2.0.0-alpha.3", - "frame-system 2.0.0-alpha.3", - "impl-trait-for-tuples 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", - "pallet-timestamp 2.0.0-alpha.3", - "parity-scale-codec 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-io 2.0.0-alpha.3", - "sp-runtime 2.0.0-alpha.3", - "sp-staking 2.0.0-alpha.3", - "sp-std 2.0.0-alpha.3", - "sp-trie 2.0.0-alpha.3", + "frame-support", + "frame-system", + "impl-trait-for-tuples", + "pallet-timestamp", + "parity-scale-codec", + "serde", + "sp-io", + "sp-runtime", + "sp-staking", + "sp-std", + "sp-trie", ] [[package]] name = "pallet-staking" version = "2.0.0-alpha.3" dependencies = [ - "frame-support 2.0.0-alpha.3", - "frame-system 2.0.0-alpha.3", - "pallet-authorship 2.0.0-alpha.3", - "pallet-indices 2.0.0-alpha.3", - "pallet-session 2.0.0-alpha.3", - "parity-scale-codec 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-application-crypto 2.0.0-alpha.3", - "sp-core 2.0.0-alpha.3", - "sp-io 2.0.0-alpha.3", - "sp-phragmen 2.0.0-alpha.3", - "sp-runtime 2.0.0-alpha.3", - "sp-staking 2.0.0-alpha.3", - "sp-std 2.0.0-alpha.3", - "static_assertions 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "frame-support", + "frame-system", + "pallet-authorship", + "pallet-indices", + "pallet-session", + "parity-scale-codec", + "rand 0.7.3", + "serde", + "sp-application-crypto", + "sp-core", + "sp-io", + "sp-phragmen", + "sp-runtime", + "sp-staking", + "sp-std", + "static_assertions", ] [[package]] name = "pallet-staking-fuzz" version = "0.0.0" dependencies = [ - "frame-support 2.0.0-alpha.3", - "frame-system 2.0.0-alpha.3", - "libfuzzer-sys 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "pallet-balances 2.0.0-alpha.3", - "pallet-indices 2.0.0-alpha.3", - "pallet-session 2.0.0-alpha.3", - "pallet-staking 2.0.0-alpha.3", - "pallet-staking-reward-curve 2.0.0-alpha.3", - "pallet-timestamp 2.0.0-alpha.3", - "parity-scale-codec 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-core 2.0.0-alpha.3", - "sp-io 2.0.0-alpha.3", - "sp-phragmen 2.0.0-alpha.3", - "sp-runtime 2.0.0-alpha.3", - "sp-std 2.0.0-alpha.3", + "frame-support", + "frame-system", + "libfuzzer-sys", + "pallet-balances", + "pallet-indices", + "pallet-session", + "pallet-staking", + "pallet-staking-reward-curve", + "pallet-timestamp", + "parity-scale-codec", + "rand 0.7.3", + "sp-core", + "sp-io", + "sp-phragmen", + "sp-runtime", + "sp-std", ] [[package]] name = "pallet-staking-reward-curve" version = "2.0.0-alpha.3" dependencies = [ - "proc-macro-crate 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", - "proc-macro2 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 1.0.14 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro-crate", + "proc-macro2", + "quote", + "syn", ] [[package]] name = "pallet-timestamp" version = "2.0.0-alpha.3" dependencies = [ - "frame-benchmarking 2.0.0-alpha.3", - "frame-support 2.0.0-alpha.3", - "frame-system 2.0.0-alpha.3", - "impl-trait-for-tuples 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-scale-codec 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-inherents 2.0.0-alpha.3", - "sp-io 2.0.0-alpha.3", - "sp-runtime 2.0.0-alpha.3", - "sp-std 2.0.0-alpha.3", - "sp-timestamp 2.0.0-alpha.3", + "frame-benchmarking", + "frame-support", + "frame-system", + "impl-trait-for-tuples", + "parity-scale-codec", + "serde", + "sp-inherents", + "sp-runtime", + "sp-std", + "sp-timestamp", ] [[package]] name = "parity-scale-codec" version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f509c5e67ca0605ee17dcd3f91ef41cadd685c75a298fb6261b781a5acb3f910" dependencies = [ - "arrayvec 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", - "bitvec 0.15.2 (registry+https://github.com/rust-lang/crates.io-index)", - "byte-slice-cast 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-scale-codec-derive 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", + "arrayvec 0.5.1", + "bitvec", + "byte-slice-cast", + "parity-scale-codec-derive", + "serde", ] [[package]] name = "parity-scale-codec-derive" version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a0ec292e92e8ec7c58e576adacc1e3f399c597c8f263c42f18420abe58e7245" dependencies = [ - "proc-macro-crate 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", - "proc-macro2 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 1.0.14 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro-crate", + "proc-macro2", + "quote", + "syn", ] [[package]] name = "parity-util-mem" version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef1476e40bf8f5c6776e9600983435821ca86eb9819d74a6207cca69d091406a" dependencies = [ - "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", - "impl-trait-for-tuples 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-util-mem-derive 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "parking_lot 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", - "primitive-types 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if", + "impl-trait-for-tuples", + "parity-util-mem-derive", + "parking_lot 0.10.0", + "primitive-types", + "winapi", ] [[package]] name = "parity-util-mem-derive" version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f557c32c6d268a07c921471619c0295f5efad3a0e76d4f97a05c091a51d110b2" dependencies = [ - "proc-macro2 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 1.0.14 (registry+https://github.com/rust-lang/crates.io-index)", - "synstructure 0.12.3 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2", + "syn", + "synstructure", ] [[package]] name = "parity-wasm" version = "0.41.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ddfc878dac00da22f8f61e7af3157988424567ab01d9920b962ef7dcbd7cd865" [[package]] name = "parking_lot" version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f842b1982eb6c2fe34036a4fbfb06dd185a3f5c8edfaacdf7d1ea10b07de6252" dependencies = [ - "lock_api 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", - "parking_lot_core 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", - "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", + "lock_api", + "parking_lot_core 0.6.2", + "rustc_version", ] [[package]] name = "parking_lot" version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92e98c49ab0b7ce5b222f2cc9193fc4efe11c6d0bd4f648e374684a6857b1cfc" dependencies = [ - "lock_api 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", - "parking_lot_core 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", + "lock_api", + "parking_lot_core 0.7.0", ] [[package]] name = "parking_lot_core" version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b876b1b9e7ac6e1a74a6da34d25c42e17e8862aa409cbbbdcfc8d86c6f3bc62b" dependencies = [ - "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", - "cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", - "redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)", - "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", - "smallvec 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if", + "cloudabi", + "libc", + "redox_syscall", + "rustc_version", + "smallvec 0.6.13", + "winapi", ] [[package]] name = "parking_lot_core" version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7582838484df45743c8434fbff785e8edf260c28748353d44bc0da32e0ceabf1" dependencies = [ - "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", - "cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", - "redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)", - "smallvec 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if", + "cloudabi", + "libc", + "redox_syscall", + "smallvec 1.2.0", + "winapi", ] [[package]] name = "paste" -version = "0.1.6" +version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "63e1afe738d71b1ebab5f1207c055054015427dbfc7bbe9ee1266894156ec046" dependencies = [ - "paste-impl 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "proc-macro-hack 0.5.11 (registry+https://github.com/rust-lang/crates.io-index)", + "paste-impl", + "proc-macro-hack", ] [[package]] name = "paste-impl" -version = "0.1.6" +version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d4dc4a7f6f743211c5aab239640a65091535d97d43d92a52bca435a640892bb" dependencies = [ - "proc-macro-hack 0.5.11 (registry+https://github.com/rust-lang/crates.io-index)", - "proc-macro2 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 1.0.14 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro-hack", + "proc-macro2", + "quote", + "syn", ] [[package]] name = "pbkdf2" version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "006c038a43a45995a9670da19e67600114740e8511d4333bf97a56e66a7542d9" dependencies = [ - "byteorder 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "crypto-mac 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder", + "crypto-mac", ] [[package]] name = "pin-utils" version = "0.1.0-alpha.4" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5894c618ce612a3fa23881b152b608bafb8c56cfc22f434a3ba3120b40f7b587" [[package]] name = "ppv-lite86" version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74490b50b9fbe561ac330df47c08f3f33073d2d00c150f719147d7c54522fa1b" [[package]] name = "primitive-types" version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e4336f4f5d5524fa60bcbd6fe626f9223d8142a50e7053e979acdf0da41ab975" dependencies = [ - "fixed-hash 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)", - "impl-codec 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", - "impl-serde 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "uint 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)", + "fixed-hash", + "impl-codec", + "impl-serde 0.3.0", + "uint", ] [[package]] name = "proc-macro-crate" version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e10d4b51f154c8a7fb96fd6dad097cb74b863943ec010ac94b9fd1be8861fe1e" dependencies = [ - "toml 0.5.6 (registry+https://github.com/rust-lang/crates.io-index)", + "toml", ] [[package]] name = "proc-macro-hack" version = "0.5.11" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ecd45702f76d6d3c75a80564378ae228a85f0b59d2f3ed43c91b4a69eb2ebfc5" dependencies = [ - "proc-macro2 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 1.0.14 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2", + "quote", + "syn", ] [[package]] name = "proc-macro-nested" version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "369a6ed065f249a159e06c45752c780bda2fb53c995718f9e484d08daa9eb42e" [[package]] name = "proc-macro2" -version = "1.0.8" +version = "1.0.9" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c09721c6781493a2a492a96b5a5bf19b65917fe6728884e7c44dd0c60ca3435" dependencies = [ - "unicode-xid 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "unicode-xid", ] [[package]] name = "quote" -version = "1.0.2" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2bdc6c187c65bca4260c9011c9e3132efe4909da44726bad24cf7572ae338d7f" dependencies = [ - "proc-macro2 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2", ] [[package]] name = "rand" version = "0.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d71dacdc3c88c1fde3885a3be3fbab9f35724e6ce99467f7d9c5026132184ca" dependencies = [ - "autocfg 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_chacha 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_hc 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_isaac 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_jitter 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_os 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_pcg 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_xorshift 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", + "autocfg 0.1.7", + "libc", + "rand_chacha 0.1.1", + "rand_core 0.4.2", + "rand_hc 0.1.0", + "rand_isaac", + "rand_jitter", + "rand_os", + "rand_pcg", + "rand_xorshift", + "winapi", ] [[package]] name = "rand" version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03" dependencies = [ - "getrandom 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_chacha 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_core 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_hc 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "getrandom", + "libc", + "rand_chacha 0.2.1", + "rand_core 0.5.1", + "rand_hc 0.2.0", ] [[package]] name = "rand_chacha" version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "556d3a1ca6600bfcbab7c7c91ccb085ac7fbbcd70e008a98742e7847f4f7bcef" dependencies = [ - "autocfg 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "autocfg 0.1.7", + "rand_core 0.3.1", ] [[package]] name = "rand_chacha" version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03a2a90da8c7523f554344f921aa97283eadf6ac484a6d2a7d0212fa7f8d6853" dependencies = [ - "c2-chacha 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_core 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", + "c2-chacha", + "rand_core 0.5.1", ] [[package]] name = "rand_core" version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a6fdeb83b075e8266dcc8762c22776f6877a63111121f5f8c7411e5be7eed4b" dependencies = [ - "rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_core 0.4.2", ] [[package]] name = "rand_core" version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c33a3c44ca05fa6f1807d8e6743f3824e8509beca625669633be0acbdf509dc" [[package]] name = "rand_core" version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" dependencies = [ - "getrandom 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)", + "getrandom", ] [[package]] name = "rand_hc" version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b40677c7be09ae76218dc623efbf7b18e34bced3f38883af07bb75630a21bc4" dependencies = [ - "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_core 0.3.1", ] [[package]] name = "rand_hc" version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c" dependencies = [ - "rand_core 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_core 0.5.1", ] [[package]] name = "rand_isaac" version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ded997c9d5f13925be2a6fd7e66bf1872597f759fd9dd93513dd7e92e5a5ee08" dependencies = [ - "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_core 0.3.1", ] [[package]] name = "rand_jitter" version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1166d5c91dc97b88d1decc3285bb0a99ed84b05cfd0bc2341bdf2d43fc41e39b" dependencies = [ - "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", + "libc", + "rand_core 0.4.2", + "winapi", ] [[package]] name = "rand_os" version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b75f676a1e053fc562eafbb47838d67c84801e38fc1ba459e8f180deabd5071" dependencies = [ - "cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)", - "fuchsia-cprng 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", - "rdrand 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", + "cloudabi", + "fuchsia-cprng", + "libc", + "rand_core 0.4.2", + "rdrand", + "winapi", ] [[package]] name = "rand_pcg" version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "abf9b09b01790cfe0364f52bf32995ea3c39f4d2dd011eac241d2914146d0b44" dependencies = [ - "autocfg 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", + "autocfg 0.1.7", + "rand_core 0.4.2", ] [[package]] name = "rand_xorshift" version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cbf7e9e623549b0e21f6e97cf8ecf247c1a8fd2e8a992ae265314300b2455d5c" dependencies = [ - "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_core 0.3.1", ] [[package]] name = "rdrand" version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "678054eb77286b51581ba43620cc911abf02758c91f93f479767aed0f90458b2" dependencies = [ - "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_core 0.3.1", ] [[package]] name = "redox_syscall" version = "0.1.56" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2439c63f3f6139d1b57529d16bc3b8bb855230c8efcc5d3a896c8bea7c3b1e84" [[package]] name = "regex" version = "1.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "322cf97724bea3ee221b78fe25ac9c46114ebb51747ad5babd51a2fc6a8235a8" dependencies = [ - "aho-corasick 0.7.8 (registry+https://github.com/rust-lang/crates.io-index)", - "memchr 2.3.2 (registry+https://github.com/rust-lang/crates.io-index)", - "regex-syntax 0.6.14 (registry+https://github.com/rust-lang/crates.io-index)", - "thread_local 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", + "aho-corasick", + "memchr", + "regex-syntax", + "thread_local", ] [[package]] name = "regex-syntax" -version = "0.6.14" +version = "0.6.16" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1132f845907680735a84409c3bebc64d1364a5683ffbce899550cd09d5eaefc1" [[package]] name = "rustc-demangle" version = "0.1.16" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c691c0e608126e00913e33f0ccf3727d5fc84573623b8d65b2df340b5201783" [[package]] name = "rustc-hash" version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" [[package]] name = "rustc-hex" version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3e75f6a532d0fd9f7f13144f392b6ad56a32696bfcd9c78f797f16bbb6f072d6" [[package]] name = "rustc_version" version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030a" dependencies = [ - "semver 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", + "semver", ] [[package]] name = "schnorrkel" version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eacd8381b3c37840c9c9f40472af529e49975bdcbc24f83c31059fd6539023d3" dependencies = [ - "curve25519-dalek 1.2.3 (registry+https://github.com/rust-lang/crates.io-index)", - "failure 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "merlin 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_os 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", - "sha2 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", - "subtle 2.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "zeroize 0.9.3 (registry+https://github.com/rust-lang/crates.io-index)", + "curve25519-dalek 1.2.3", + "failure", + "merlin", + "rand 0.6.5", + "rand_core 0.4.2", + "rand_os", + "sha2", + "subtle 2.2.2", + "zeroize 0.9.3", ] [[package]] name = "scopeguard" version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" [[package]] name = "semver" version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403" dependencies = [ - "semver-parser 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", + "semver-parser", ] [[package]] name = "semver-parser" version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" [[package]] name = "send_wrapper" version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a0eddf2e8f50ced781f288c19f18621fa72a3779e3cb58dbf23b07469b0abeb4" [[package]] name = "serde" version = "1.0.104" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "414115f25f818d7dfccec8ee535d76949ae78584fc4f79a6f45a904bf8ab4449" dependencies = [ - "serde_derive 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive", ] [[package]] name = "serde_derive" version = "1.0.104" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "128f9e303a5a29922045a830221b8f78ec74a5f544944f3d5984f8ec3895ef64" dependencies = [ - "proc-macro2 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 1.0.14 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2", + "quote", + "syn", ] [[package]] name = "sha2" version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "27044adfd2e1f077f649f59deb9490d3941d674002f7d062870a60ebe9bd47a0" dependencies = [ - "block-buffer 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)", - "digest 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", - "fake-simd 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "opaque-debug 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", + "block-buffer", + "digest", + "fake-simd", + "opaque-debug", ] [[package]] name = "slab" version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c111b5bd5695e56cffe5129854aa230b39c93a305372fdbb2668ca2394eea9f8" [[package]] name = "smallvec" version = "0.6.13" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7b0758c52e15a8b5e3691eae6cc559f08eee9406e548a4477ba4e67770a82b6" dependencies = [ - "maybe-uninit 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "maybe-uninit", ] [[package]] name = "smallvec" version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "sourcefile" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c2fb2ec9bcd216a5b0d0ccf31ab17b5ed1d627960edff65bbe95d3ce221cefc" [[package]] name = "sp-api" version = "2.0.0-alpha.3" dependencies = [ - "hash-db 0.15.2 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-scale-codec 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-api-proc-macro 2.0.0-alpha.3", - "sp-core 2.0.0-alpha.3", - "sp-runtime 2.0.0-alpha.3", - "sp-state-machine 0.8.0-alpha.3", - "sp-std 2.0.0-alpha.3", - "sp-version 2.0.0-alpha.3", + "hash-db", + "parity-scale-codec", + "sp-api-proc-macro", + "sp-core", + "sp-runtime", + "sp-state-machine", + "sp-std", + "sp-version", ] [[package]] name = "sp-api-proc-macro" version = "2.0.0-alpha.3" dependencies = [ - "blake2-rfc 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)", - "proc-macro-crate 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", - "proc-macro2 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 1.0.14 (registry+https://github.com/rust-lang/crates.io-index)", + "blake2-rfc", + "proc-macro-crate", + "proc-macro2", + "quote", + "syn", ] [[package]] name = "sp-application-crypto" version = "2.0.0-alpha.3" dependencies = [ - "parity-scale-codec 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-core 2.0.0-alpha.3", - "sp-io 2.0.0-alpha.3", - "sp-std 2.0.0-alpha.3", + "parity-scale-codec", + "serde", + "sp-core", + "sp-io", + "sp-std", ] [[package]] name = "sp-arithmetic" version = "2.0.0-alpha.3" dependencies = [ - "integer-sqrt 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", - "num-traits 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-scale-codec 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-debug-derive 2.0.0-alpha.3", - "sp-std 2.0.0-alpha.3", + "integer-sqrt", + "num-traits", + "parity-scale-codec", + "serde", + "sp-debug-derive", + "sp-std", ] [[package]] name = "sp-authorship" version = "2.0.0-alpha.3" dependencies = [ - "parity-scale-codec 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-inherents 2.0.0-alpha.3", - "sp-runtime 2.0.0-alpha.3", - "sp-std 2.0.0-alpha.3", + "parity-scale-codec", + "sp-inherents", + "sp-runtime", + "sp-std", ] [[package]] name = "sp-core" version = "2.0.0-alpha.3" dependencies = [ - "base58 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "blake2-rfc 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)", - "byteorder 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "ed25519-dalek 1.0.0-pre.3 (registry+https://github.com/rust-lang/crates.io-index)", - "hash-db 0.15.2 (registry+https://github.com/rust-lang/crates.io-index)", - "hash256-std-hasher 0.15.2 (registry+https://github.com/rust-lang/crates.io-index)", - "hex 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", - "impl-serde 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "libsecp256k1 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "num-traits 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-scale-codec 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-util-mem 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", - "parking_lot 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", - "primitive-types 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)", - "regex 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "rustc-hex 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "schnorrkel 0.8.5 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", - "sha2 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-debug-derive 2.0.0-alpha.3", - "sp-externalities 0.8.0-alpha.3", - "sp-runtime-interface 2.0.0-alpha.3", - "sp-std 2.0.0-alpha.3", - "sp-storage 2.0.0-alpha.3", - "substrate-bip39 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "tiny-bip39 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", - "tiny-keccak 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)", - "twox-hash 1.5.0 (registry+https://github.com/rust-lang/crates.io-index)", - "wasmi 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", - "zeroize 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "base58", + "blake2-rfc", + "byteorder", + "ed25519-dalek", + "hash-db", + "hash256-std-hasher", + "hex", + "impl-serde 0.3.0", + "lazy_static", + "libsecp256k1", + "log", + "num-traits", + "parity-scale-codec", + "parity-util-mem", + "parking_lot 0.10.0", + "primitive-types", + "rand 0.7.3", + "regex", + "rustc-hex", + "schnorrkel", + "serde", + "sha2", + "sp-debug-derive", + "sp-externalities", + "sp-runtime-interface", + "sp-std", + "sp-storage", + "substrate-bip39", + "tiny-bip39", + "tiny-keccak", + "twox-hash", + "wasmi", + "zeroize 1.1.0", ] [[package]] name = "sp-debug-derive" version = "2.0.0-alpha.3" dependencies = [ - "proc-macro2 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 1.0.14 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2", + "quote", + "syn", ] [[package]] name = "sp-externalities" version = "0.8.0-alpha.3" dependencies = [ - "environmental 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-std 2.0.0-alpha.3", - "sp-storage 2.0.0-alpha.3", + "environmental", + "sp-std", + "sp-storage", ] [[package]] name = "sp-inherents" version = "2.0.0-alpha.3" dependencies = [ - "derive_more 0.99.3 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-scale-codec 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "parking_lot 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-core 2.0.0-alpha.3", - "sp-std 2.0.0-alpha.3", + "derive_more", + "parity-scale-codec", + "parking_lot 0.10.0", + "sp-core", + "sp-std", ] [[package]] name = "sp-io" version = "2.0.0-alpha.3" dependencies = [ - "hash-db 0.15.2 (registry+https://github.com/rust-lang/crates.io-index)", - "libsecp256k1 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-scale-codec 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-core 2.0.0-alpha.3", - "sp-externalities 0.8.0-alpha.3", - "sp-runtime-interface 2.0.0-alpha.3", - "sp-state-machine 0.8.0-alpha.3", - "sp-std 2.0.0-alpha.3", - "sp-trie 2.0.0-alpha.3", - "sp-wasm-interface 2.0.0-alpha.3", + "hash-db", + "libsecp256k1", + "log", + "parity-scale-codec", + "sp-core", + "sp-externalities", + "sp-runtime-interface", + "sp-state-machine", + "sp-std", + "sp-trie", + "sp-wasm-interface", ] [[package]] name = "sp-keyring" version = "2.0.0-alpha.3" dependencies = [ - "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-core 2.0.0-alpha.3", - "sp-runtime 2.0.0-alpha.3", - "strum 0.16.0 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static", + "sp-core", + "sp-runtime", + "strum", ] [[package]] name = "sp-panic-handler" version = "2.0.0-alpha.3" dependencies = [ - "backtrace 0.3.44 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "backtrace", + "log", ] [[package]] name = "sp-phragmen" version = "2.0.0-alpha.3" dependencies = [ - "parity-scale-codec 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-core 2.0.0-alpha.3", - "sp-phragmen-compact 2.0.0-dev", - "sp-runtime 2.0.0-alpha.3", - "sp-std 2.0.0-alpha.3", + "parity-scale-codec", + "serde", + "sp-core", + "sp-phragmen-compact", + "sp-runtime", + "sp-std", ] [[package]] name = "sp-phragmen-compact" version = "2.0.0-dev" dependencies = [ - "proc-macro-crate 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", - "proc-macro2 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 1.0.14 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro-crate", + "proc-macro2", + "quote", + "syn", ] [[package]] name = "sp-runtime" version = "2.0.0-alpha.3" dependencies = [ - "impl-trait-for-tuples 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-scale-codec 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-util-mem 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", - "paste 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-application-crypto 2.0.0-alpha.3", - "sp-arithmetic 2.0.0-alpha.3", - "sp-core 2.0.0-alpha.3", - "sp-inherents 2.0.0-alpha.3", - "sp-io 2.0.0-alpha.3", - "sp-std 2.0.0-alpha.3", + "hash256-std-hasher", + "impl-trait-for-tuples", + "log", + "parity-scale-codec", + "parity-util-mem", + "paste", + "rand 0.7.3", + "serde", + "sp-application-crypto", + "sp-arithmetic", + "sp-core", + "sp-inherents", + "sp-io", + "sp-std", ] [[package]] name = "sp-runtime-interface" version = "2.0.0-alpha.3" dependencies = [ - "parity-scale-codec 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "primitive-types 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-externalities 0.8.0-alpha.3", - "sp-runtime-interface-proc-macro 2.0.0-alpha.3", - "sp-std 2.0.0-alpha.3", - "sp-wasm-interface 2.0.0-alpha.3", - "static_assertions 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-scale-codec", + "primitive-types", + "sp-externalities", + "sp-runtime-interface-proc-macro", + "sp-std", + "sp-wasm-interface", + "static_assertions", ] [[package]] name = "sp-runtime-interface-proc-macro" version = "2.0.0-alpha.3" dependencies = [ - "Inflector 0.11.4 (registry+https://github.com/rust-lang/crates.io-index)", - "proc-macro-crate 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", - "proc-macro2 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 1.0.14 (registry+https://github.com/rust-lang/crates.io-index)", + "Inflector", + "proc-macro-crate", + "proc-macro2", + "quote", + "syn", ] [[package]] name = "sp-staking" version = "2.0.0-alpha.3" dependencies = [ - "parity-scale-codec 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-runtime 2.0.0-alpha.3", - "sp-std 2.0.0-alpha.3", + "parity-scale-codec", + "sp-runtime", + "sp-std", ] [[package]] name = "sp-state-machine" version = "0.8.0-alpha.3" dependencies = [ - "hash-db 0.15.2 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "num-traits 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-scale-codec 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "parking_lot 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-core 2.0.0-alpha.3", - "sp-externalities 0.8.0-alpha.3", - "sp-panic-handler 2.0.0-alpha.3", - "sp-trie 2.0.0-alpha.3", - "trie-db 0.20.0 (registry+https://github.com/rust-lang/crates.io-index)", - "trie-root 0.16.0 (registry+https://github.com/rust-lang/crates.io-index)", + "hash-db", + "log", + "num-traits", + "parity-scale-codec", + "parking_lot 0.10.0", + "rand 0.7.3", + "sp-core", + "sp-externalities", + "sp-panic-handler", + "sp-trie", + "trie-db", + "trie-root", ] [[package]] @@ -1628,610 +1748,442 @@ version = "2.0.0-alpha.3" name = "sp-storage" version = "2.0.0-alpha.3" dependencies = [ - "impl-serde 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-debug-derive 2.0.0-alpha.3", - "sp-std 2.0.0-alpha.3", + "impl-serde 0.2.3", + "serde", + "sp-debug-derive", + "sp-std", ] [[package]] name = "sp-timestamp" version = "2.0.0-alpha.3" dependencies = [ - "impl-trait-for-tuples 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-scale-codec 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-api 2.0.0-alpha.3", - "sp-inherents 2.0.0-alpha.3", - "sp-runtime 2.0.0-alpha.3", - "sp-std 2.0.0-alpha.3", - "wasm-timer 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", + "impl-trait-for-tuples", + "parity-scale-codec", + "sp-api", + "sp-inherents", + "sp-runtime", + "sp-std", + "wasm-timer", ] [[package]] name = "sp-trie" version = "2.0.0-alpha.3" dependencies = [ - "hash-db 0.15.2 (registry+https://github.com/rust-lang/crates.io-index)", - "memory-db 0.19.0 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-scale-codec 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-core 2.0.0-alpha.3", - "sp-std 2.0.0-alpha.3", - "trie-db 0.20.0 (registry+https://github.com/rust-lang/crates.io-index)", - "trie-root 0.16.0 (registry+https://github.com/rust-lang/crates.io-index)", + "hash-db", + "memory-db", + "parity-scale-codec", + "sp-core", + "sp-std", + "trie-db", + "trie-root", ] [[package]] name = "sp-version" version = "2.0.0-alpha.3" dependencies = [ - "impl-serde 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-scale-codec 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-runtime 2.0.0-alpha.3", - "sp-std 2.0.0-alpha.3", + "impl-serde 0.2.3", + "parity-scale-codec", + "serde", + "sp-runtime", + "sp-std", ] [[package]] name = "sp-wasm-interface" version = "2.0.0-alpha.3" dependencies = [ - "impl-trait-for-tuples 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-scale-codec 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-std 2.0.0-alpha.3", - "wasmi 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", + "impl-trait-for-tuples", + "parity-scale-codec", + "sp-std", + "wasmi", ] [[package]] name = "static_assertions" version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" [[package]] name = "strum" version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6138f8f88a16d90134763314e3fc76fa3ed6a7db4725d6acf9a3ef95a3188d22" dependencies = [ - "strum_macros 0.16.0 (registry+https://github.com/rust-lang/crates.io-index)", + "strum_macros", ] [[package]] name = "strum_macros" version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0054a7df764039a6cd8592b9de84be4bec368ff081d203a7d5371cbfa8e65c81" dependencies = [ - "heck 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "proc-macro2 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 1.0.14 (registry+https://github.com/rust-lang/crates.io-index)", + "heck", + "proc-macro2", + "quote", + "syn", ] [[package]] name = "substrate-bip39" version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3be511be555a3633e71739a79e4ddff6a6aaa6579fa6114182a51d72c3eb93c5" dependencies = [ - "hmac 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", - "pbkdf2 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "schnorrkel 0.8.5 (registry+https://github.com/rust-lang/crates.io-index)", - "sha2 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", + "hmac", + "pbkdf2", + "schnorrkel", + "sha2", ] [[package]] name = "subtle" version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d67a5a62ba6e01cb2192ff309324cb4875d0c451d55fe2319433abe7a05a8ee" [[package]] name = "subtle" version = "2.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c65d530b10ccaeac294f349038a597e435b18fb456aadd0840a623f83b9e941" [[package]] name = "syn" -version = "1.0.14" +version = "1.0.16" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "123bd9499cfb380418d509322d7a6d52e5315f064fe4b3ad18a53d6b92c07859" dependencies = [ - "proc-macro2 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "unicode-xid 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2", + "quote", + "unicode-xid", ] [[package]] name = "synstructure" version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67656ea1dc1b41b1451851562ea232ec2e5a80242139f7e679ceccfb5d61f545" dependencies = [ - "proc-macro2 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 1.0.14 (registry+https://github.com/rust-lang/crates.io-index)", - "unicode-xid 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2", + "quote", + "syn", + "unicode-xid", ] [[package]] name = "thread_local" version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d40c6d1b69745a6ec6fb1ca717914848da4b44ae29d9b3080cbee91d72a69b14" dependencies = [ - "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static", ] [[package]] name = "tiny-bip39" -version = "0.7.0" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a6848cd8f566953ce1e8faeba12ee23cbdbb0437754792cd857d44628b5685e3" dependencies = [ - "failure 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "hmac 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", - "once_cell 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "pbkdf2 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)", - "rustc-hash 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "sha2 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", + "failure", + "hmac", + "once_cell", + "pbkdf2", + "rand 0.7.3", + "rustc-hash", + "sha2", + "unicode-normalization", ] [[package]] name = "tiny-keccak" version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2953ca5148619bc99695c1274cb54c5275bbb913c6adad87e72eaf8db9787f69" dependencies = [ - "crunchy 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", + "crunchy", ] [[package]] name = "toml" version = "0.5.6" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ffc92d160b1eef40665be3a05630d003936a3bc7da7421277846c2613e92c71a" dependencies = [ - "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", + "serde", ] [[package]] name = "tracing" -version = "0.1.12" +version = "0.1.13" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1721cc8cf7d770cc4257872507180f35a4797272f5962f24c806af9e7faf52ab" dependencies = [ - "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", - "tracing-attributes 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "tracing-core 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if", + "tracing-attributes", + "tracing-core", ] [[package]] name = "tracing-attributes" -version = "0.1.6" +version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7fbad39da2f9af1cae3016339ad7f2c7a9e870f12e8fd04c4fd7ef35b30c0d2b" dependencies = [ - "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 1.0.14 (registry+https://github.com/rust-lang/crates.io-index)", + "quote", + "syn", ] [[package]] name = "tracing-core" -version = "0.1.9" +version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0aa83a9a47081cd522c09c81b31aec2c9273424976f922ad61c053b58350b715" dependencies = [ - "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static", ] [[package]] name = "trie-db" version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "de9222c50cc325855621271157c973da27a0dcd26fa06f8edf81020bd2333df0" dependencies = [ - "hash-db 0.15.2 (registry+https://github.com/rust-lang/crates.io-index)", - "hashbrown 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "rustc-hex 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "smallvec 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "hash-db", + "hashbrown", + "log", + "rustc-hex", + "smallvec 1.2.0", ] [[package]] name = "trie-root" version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "652931506d2c1244d7217a70b99f56718a7b4161b37f04e7cd868072a99f68cd" dependencies = [ - "hash-db 0.15.2 (registry+https://github.com/rust-lang/crates.io-index)", + "hash-db", ] [[package]] name = "twox-hash" version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3bfd5b7557925ce778ff9b9ef90e3ade34c524b5ff10e239c69a42d546d2af56" dependencies = [ - "rand 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.7.3", ] [[package]] name = "typenum" version = "1.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d2783fe2d6b8c1101136184eb41be8b1ad379e4657050b8aaff0c79ee7575f9" [[package]] name = "uint" version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e75a4cdd7b87b28840dba13c483b9a88ee6bbf16ba5c951ee1ecfcf723078e0d" dependencies = [ - "byteorder 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "crunchy 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "rustc-hex 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "static_assertions 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder", + "crunchy", + "rustc-hex", + "static_assertions", +] + +[[package]] +name = "unicode-normalization" +version = "0.1.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5479532badd04e128284890390c1e876ef7a993d0570b3597ae43dfa1d59afa4" +dependencies = [ + "smallvec 1.2.0", ] [[package]] name = "unicode-segmentation" version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e83e153d1053cbb5a118eeff7fd5be06ed99153f00dbcd8ae310c5fb2b22edc0" [[package]] name = "unicode-xid" version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "version_check" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "826e7639553986605ec5979c7dd957c7895e93eabed50ab2ffa7f6128a75097c" [[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.58" +version = "0.2.59" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3557c397ab5a8e347d434782bcd31fc1483d927a6826804cec05cc792ee2519d" dependencies = [ - "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", - "wasm-bindgen-macro 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if", + "wasm-bindgen-macro", ] [[package]] name = "wasm-bindgen-backend" -version = "0.2.58" +version = "0.2.59" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e0da9c9a19850d3af6df1cb9574970b566d617ecfaf36eb0b706b6f3ef9bd2f8" dependencies = [ - "bumpalo 3.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "proc-macro2 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 1.0.14 (registry+https://github.com/rust-lang/crates.io-index)", - "wasm-bindgen-shared 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", + "bumpalo", + "lazy_static", + "log", + "proc-macro2", + "quote", + "syn", + "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-futures" -version = "0.4.8" +version = "0.4.9" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "457414a91863c0ec00090dba537f88ab955d93ca6555862c29b6d860990b8a8a" dependencies = [ - "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", - "js-sys 0.3.35 (registry+https://github.com/rust-lang/crates.io-index)", - "wasm-bindgen 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", - "web-sys 0.3.35 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if", + "js-sys", + "wasm-bindgen", + "web-sys", ] [[package]] name = "wasm-bindgen-macro" -version = "0.2.58" +version = "0.2.59" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0f6fde1d36e75a714b5fe0cffbb78978f222ea6baebb726af13c78869fdb4205" dependencies = [ - "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "wasm-bindgen-macro-support 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", + "quote", + "wasm-bindgen-macro-support", ] [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.58" +version = "0.2.59" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "25bda4168030a6412ea8a047e27238cadf56f0e53516e1e83fec0a8b7c786f6d" dependencies = [ - "proc-macro2 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 1.0.14 (registry+https://github.com/rust-lang/crates.io-index)", - "wasm-bindgen-backend 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", - "wasm-bindgen-shared 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2", + "quote", + "syn", + "wasm-bindgen-backend", + "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.58" +version = "0.2.59" source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "wasm-bindgen-webidl" -version = "0.2.58" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "anyhow 1.0.26 (registry+https://github.com/rust-lang/crates.io-index)", - "heck 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "proc-macro2 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 1.0.14 (registry+https://github.com/rust-lang/crates.io-index)", - "wasm-bindgen-backend 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", - "weedle 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", -] +checksum = "fc9f36ad51f25b0219a3d4d13b90eb44cd075dff8b6280cca015775d7acaddd8" [[package]] name = "wasm-timer" version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "324c5e65a08699c9c4334ba136597ab22b85dccd4b65dd1e36ccf8f723a95b54" dependencies = [ - "futures 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "js-sys 0.3.35 (registry+https://github.com/rust-lang/crates.io-index)", - "parking_lot 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", - "pin-utils 0.1.0-alpha.4 (registry+https://github.com/rust-lang/crates.io-index)", - "send_wrapper 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "wasm-bindgen 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", - "wasm-bindgen-futures 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "web-sys 0.3.35 (registry+https://github.com/rust-lang/crates.io-index)", + "futures", + "js-sys", + "parking_lot 0.9.0", + "pin-utils", + "send_wrapper", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", ] [[package]] name = "wasmi" version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf617d864d25af3587aa745529f7aaa541066c876d57e050c0d0c85c61c92aff" dependencies = [ - "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", - "memory_units 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "num-rational 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", - "num-traits 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-wasm 0.41.0 (registry+https://github.com/rust-lang/crates.io-index)", - "wasmi-validation 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "libc", + "memory_units", + "num-rational", + "num-traits", + "parity-wasm", + "wasmi-validation", ] [[package]] name = "wasmi-validation" version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea78c597064ba73596099281e2f4cfc019075122a65cdda3205af94f0b264d93" dependencies = [ - "parity-wasm 0.41.0 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-wasm", ] [[package]] name = "web-sys" -version = "0.3.35" +version = "0.3.36" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "721c6263e2c66fd44501cc5efbfa2b7dfa775d13e4ea38c46299646ed1f9c70a" dependencies = [ - "anyhow 1.0.26 (registry+https://github.com/rust-lang/crates.io-index)", - "js-sys 0.3.35 (registry+https://github.com/rust-lang/crates.io-index)", - "sourcefile 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", - "wasm-bindgen 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", - "wasm-bindgen-webidl 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "weedle" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "nom 4.2.3 (registry+https://github.com/rust-lang/crates.io-index)", + "js-sys", + "wasm-bindgen", ] [[package]] name = "winapi" version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8093091eeb260906a183e6ae1abdba2ef5ef2257a21801128899c3fc699229c6" dependencies = [ - "winapi-i686-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi-x86_64-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "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-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 = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "45af6a010d13e4cf5b54c94ba5a2b2eba5596b9e46bf5875612d332a1f2b3f86" [[package]] name = "zeroize" version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3cbac2ed2ba24cc90f5e06485ac8c7c1e5449fe8911aef4d8877218af021a5b8" dependencies = [ - "zeroize_derive 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "zeroize_derive", ] [[package]] name = "zeroize_derive" version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "de251eec69fc7c1bc3923403d18ececb929380e016afe103da75f396704f8ca2" dependencies = [ - "proc-macro2 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 1.0.14 (registry+https://github.com/rust-lang/crates.io-index)", - "synstructure 0.12.3 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[metadata] -"checksum Inflector 0.11.4 (registry+https://github.com/rust-lang/crates.io-index)" = "fe438c63458706e03479442743baae6c88256498e6431708f6dfc520a26515d3" -"checksum ahash 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)" = "6f33b5018f120946c1dcf279194f238a9f146725593ead1c08fa47ff22b0b5d3" -"checksum aho-corasick 0.7.8 (registry+https://github.com/rust-lang/crates.io-index)" = "743ad5a418686aad3b87fd14c43badd828cf26e214a00f92a384291cf22e1811" -"checksum anyhow 1.0.26 (registry+https://github.com/rust-lang/crates.io-index)" = "7825f6833612eb2414095684fcf6c635becf3ce97fe48cf6421321e93bfbd53c" -"checksum arbitrary 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "16971f2f0ce65c5cf2a1546cc6a0af102ecb11e265ddaa9433fb3e5bfdf676a4" -"checksum arrayref 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)" = "a4c527152e37cf757a3f78aae5a06fbeefdb07ccc535c980a3208ee3060dd544" -"checksum arrayvec 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)" = "cd9fd44efafa8690358b7408d253adf110036b88f55672a933f01d616ad9b1b9" -"checksum arrayvec 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "cff77d8686867eceff3105329d4698d96c2391c176d5d03adc90c7389162b5b8" -"checksum autocfg 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)" = "1d49d90015b3c36167a20fe2810c5cd875ad504b39cff3d4eae7977e6b7c1cb2" -"checksum autocfg 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "f8aac770f1885fd7e387acedd76065302551364496e46b3dd00860b2f8359b9d" -"checksum backtrace 0.3.44 (registry+https://github.com/rust-lang/crates.io-index)" = "e4036b9bf40f3cf16aba72a3d65e8a520fc4bafcdc7079aea8f848c58c5b5536" -"checksum backtrace-sys 0.1.32 (registry+https://github.com/rust-lang/crates.io-index)" = "5d6575f128516de27e3ce99689419835fce9643a9b215a14d2b5b685be018491" -"checksum base58 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "5024ee8015f02155eee35c711107ddd9a9bf3cb689cf2a9089c97e79b6e1ae83" -"checksum bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "cf1de2fe8c75bc145a2f577add951f8134889b4795d47466a54a5c846d691693" -"checksum bitmask 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "5da9b3d9f6f585199287a473f4f8dfab6566cf827d15c00c219f53c645687ead" -"checksum bitvec 0.15.2 (registry+https://github.com/rust-lang/crates.io-index)" = "a993f74b4c99c1908d156b8d2e0fb6277736b0ecbd833982fd1241d39b2766a6" -"checksum blake2-rfc 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)" = "5d6d530bdd2d52966a6d03b7a964add7ae1a288d25214066fd4b600f0f796400" -"checksum block-buffer 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)" = "c0940dc441f31689269e10ac70eb1002a3a1d3ad1390e030043662eb7fe4688b" -"checksum block-padding 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "fa79dedbb091f449f1f39e53edf88d5dbe95f895dae6135a8d7b881fb5af73f5" -"checksum bumpalo 3.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1f359dc14ff8911330a51ef78022d376f25ed00248912803b58f00cb1c27f742" -"checksum byte-slice-cast 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)" = "b0a5e3906bcbf133e33c1d4d95afc664ad37fbdb9f6568d8043e7ea8c27d93d3" -"checksum byte-tools 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "e3b5ca7a04898ad4bcd41c90c5285445ff5b791899bb1b0abdd2a2aa791211d7" -"checksum byteorder 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "08c48aae112d48ed9f069b33538ea9e3e90aa263cfa3d1c24309612b1f7472de" -"checksum c2-chacha 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "214238caa1bf3a496ec3392968969cab8549f96ff30652c9e56885329315f6bb" -"checksum cc 1.0.50 (registry+https://github.com/rust-lang/crates.io-index)" = "95e28fa049fda1c330bcf9d723be7663a899c4679724b34c81e9f5a326aab8cd" -"checksum cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)" = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822" -"checksum clear_on_drop 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "97276801e127ffb46b66ce23f35cc96bd454fa311294bced4bbace7baa8b1d17" -"checksum cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "ddfc5b9aa5d4507acaf872de71051dfd0e309860e88966e1051e462a077aac4f" -"checksum const-random 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "2f1af9ac737b2dd2d577701e59fd09ba34822f6f2ebdb30a7647405d9e55e16a" -"checksum const-random-macro 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "25e4c606eb459dd29f7c57b2e0879f2b6f14ee130918c2b78ccb58a9624e6c7a" -"checksum constant_time_eq 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "245097e9a4535ee1e3e3931fcfcd55a796a44c643e8596ff6566d68f09b87bbc" -"checksum crunchy 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" -"checksum crypto-mac 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "4434400df11d95d556bac068ddfedd482915eb18fe8bea89bc80b6e4b1c179e5" -"checksum curve25519-dalek 1.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "8b7dcd30ba50cdf88b55b033456138b7c0ac4afdc436d82e1b79f370f24cc66d" -"checksum curve25519-dalek 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "26778518a7f6cffa1d25a44b602b62b979bd88adb9e99ffec546998cf3404839" -"checksum derive_more 0.99.3 (registry+https://github.com/rust-lang/crates.io-index)" = "a806e96c59a76a5ba6e18735b6cf833344671e61e7863f2edb5c518ea2cac95c" -"checksum digest 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)" = "f3d0c8c8752312f9713efd397ff63acb9f85585afbf179282e720e7704954dd5" -"checksum ed25519-dalek 1.0.0-pre.3 (registry+https://github.com/rust-lang/crates.io-index)" = "978710b352437433c97b2bff193f2fb1dfd58a093f863dd95e225a19baa599a2" -"checksum environmental 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "516aa8d7a71cb00a1c4146f0798549b93d083d4f189b3ced8f3de6b8f11ee6c4" -"checksum failure 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "f8273f13c977665c5db7eb2b99ae520952fe5ac831ae4cd09d80c4c7042b5ed9" -"checksum failure_derive 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "0bc225b78e0391e4b8683440bf2e63c2deeeb2ce5189eab46e2b68c6d3725d08" -"checksum fake-simd 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "e88a8acf291dafb59c2d96e8f59828f3838bb1a70398823ade51a84de6a6deed" -"checksum fixed-hash 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "3367952ceb191f4ab95dd5685dc163ac539e36202f9fcfd0cb22f9f9c542fefc" -"checksum fuchsia-cprng 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "a06f77d526c1a601b7c4cdd98f54b5eaabffc14d5f2f0296febdc7f357c6d3ba" -"checksum futures 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "5c329ae8753502fb44ae4fc2b622fa2a94652c41e795143765ba0927f92ab780" -"checksum futures-channel 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "f0c77d04ce8edd9cb903932b608268b3fffec4163dc053b3b402bf47eac1f1a8" -"checksum futures-core 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "f25592f769825e89b92358db00d26f965761e094951ac44d3663ef25b7ac464a" -"checksum futures-executor 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "f674f3e1bcb15b37284a90cedf55afdba482ab061c407a9c0ebbd0f3109741ba" -"checksum futures-io 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "a638959aa96152c7a4cddf50fcb1e3fede0583b27157c26e67d6f99904090dc6" -"checksum futures-macro 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "9a5081aa3de1f7542a794a397cde100ed903b0630152d0973479018fd85423a7" -"checksum futures-sink 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "3466821b4bc114d95b087b850a724c6f83115e929bc88f1fa98a3304a944c8a6" -"checksum futures-task 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "7b0a34e53cf6cdcd0178aa573aed466b646eb3db769570841fda0c7ede375a27" -"checksum futures-util 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "22766cf25d64306bedf0384da004d05c9974ab104fcc4528f1236181c18004c5" -"checksum generic-array 0.12.3 (registry+https://github.com/rust-lang/crates.io-index)" = "c68f0274ae0e023facc3c97b2e00f076be70e254bc851d972503b328db79b2ec" -"checksum getrandom 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)" = "7abc8dd8451921606d809ba32e95b6111925cd2906060d2dcc29c070220503eb" -"checksum hash-db 0.15.2 (registry+https://github.com/rust-lang/crates.io-index)" = "d23bd4e7b5eda0d0f3a307e8b381fdc8ba9000f26fbe912250c0a4cc3956364a" -"checksum hash256-std-hasher 0.15.2 (registry+https://github.com/rust-lang/crates.io-index)" = "92c171d55b98633f4ed3860808f004099b36c1cc29c42cfc53aa8591b21efcf2" -"checksum hashbrown 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)" = "8e6073d0ca812575946eb5f35ff68dbe519907b25c42530389ff946dc84c6ead" -"checksum heck 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "20564e78d53d2bb135c343b3f47714a56af2061f1c928fdb541dc7b9fdd94205" -"checksum hex 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "644f9158b2f133fd50f5fb3242878846d9eb792e445c893805ff0e3824006e35" -"checksum hmac 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)" = "5dcb5e64cda4c23119ab41ba960d1e170a774c8e4b9d9e6a9bc18aabf5e59695" -"checksum hmac-drbg 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "c6e570451493f10f6581b48cdd530413b63ea9e780f544bfd3bdcaa0d89d1a7b" -"checksum impl-codec 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "1be51a921b067b0eaca2fad532d9400041561aa922221cc65f95a85641c6bf53" -"checksum impl-serde 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "58e3cae7e99c7ff5a995da2cf78dd0a5383740eda71d98cf7b1910c301ac69b8" -"checksum impl-serde 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "5bbe9ea9b182f0fb1cabbd61f4ff9b7b7b9197955e95a7e4c27de5055eb29ff8" -"checksum impl-trait-for-tuples 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "7ef5550a42e3740a0e71f909d4c861056a284060af885ae7aa6242820f920d9d" -"checksum integer-sqrt 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "f65877bf7d44897a473350b1046277941cee20b263397e90869c50b6e766088b" -"checksum js-sys 0.3.35 (registry+https://github.com/rust-lang/crates.io-index)" = "7889c7c36282151f6bf465be4700359318aef36baa951462382eae49e9577cf9" -"checksum keccak 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "67c21572b4949434e4fc1e1978b99c5f77064153c59d998bf13ecd96fb5ecba7" -"checksum lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" -"checksum libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)" = "d515b1f41455adea1313a4a2ac8a8a477634fbae63cc6100e3aebb207ce61558" -"checksum libfuzzer-sys 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "c103ca347f75325d3d3ee31702bd6c09b7744e71883b7a8da9562b0c5dcdaead" -"checksum libsecp256k1 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)" = "1fc1e2c808481a63dc6da2074752fdd4336a3c8fcc68b83db6f1fd5224ae7962" -"checksum lock_api 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "79b2de95ecb4691949fea4716ca53cdbcfccb2c612e19644a8bad05edcf9f47b" -"checksum log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)" = "14b6052be84e6b71ab17edffc2eeabf5c2c3ae1fdb464aae35ac50c67a44e1f7" -"checksum maybe-uninit 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "60302e4db3a61da70c0cb7991976248362f30319e88850c487b9b95bbf059e00" -"checksum memchr 2.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "53445de381a1f436797497c61d851644d0e8e88e6140f22872ad33a704933978" -"checksum memory-db 0.19.0 (registry+https://github.com/rust-lang/crates.io-index)" = "198831fe8722331a395bc199a5d08efbc197497ef354cb4c77b969c02ffc0fc4" -"checksum memory_units 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "71d96e3f3c0b6325d8ccd83c33b28acb183edcb6c67938ba104ec546854b0882" -"checksum merlin 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "2b0942b357c1b4d0dc43ba724674ec89c3218e6ca2b3e8269e7cb53bcecd2f6e" -"checksum nodrop 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)" = "72ef4a56884ca558e5ddb05a1d1e7e1bfd9a68d9ed024c21704cc98872dae1bb" -"checksum nom 4.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "2ad2a91a8e869eeb30b9cb3119ae87773a8f4ae617f41b1eb9c154b2905f7bd6" -"checksum num-bigint 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)" = "090c7f9998ee0ff65aa5b723e4009f7b217707f1fb5ea551329cc4d6231fb304" -"checksum num-integer 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)" = "3f6ea62e9d81a77cd3ee9a2a5b9b609447857f3d358704331e4ef39eb247fcba" -"checksum num-rational 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "da4dc79f9e6c81bef96148c8f6b8e72ad4541caa4a24373e900a36da07de03a3" -"checksum num-traits 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)" = "c62be47e61d1842b9170f0fdeec8eba98e60e90e5446449a0545e5152acd7096" -"checksum once_cell 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b1c601810575c99596d4afc46f78a678c80105117c379eb3650cf99b8a21ce5b" -"checksum opaque-debug 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "2839e79665f131bdb5782e51f2c6c9599c133c6098982a54c794358bf432529c" -"checksum parity-scale-codec 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "f509c5e67ca0605ee17dcd3f91ef41cadd685c75a298fb6261b781a5acb3f910" -"checksum parity-scale-codec-derive 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "5a0ec292e92e8ec7c58e576adacc1e3f399c597c8f263c42f18420abe58e7245" -"checksum parity-util-mem 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ef1476e40bf8f5c6776e9600983435821ca86eb9819d74a6207cca69d091406a" -"checksum parity-util-mem-derive 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "f557c32c6d268a07c921471619c0295f5efad3a0e76d4f97a05c091a51d110b2" -"checksum parity-wasm 0.41.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ddfc878dac00da22f8f61e7af3157988424567ab01d9920b962ef7dcbd7cd865" -"checksum parking_lot 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)" = "92e98c49ab0b7ce5b222f2cc9193fc4efe11c6d0bd4f648e374684a6857b1cfc" -"checksum parking_lot 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "f842b1982eb6c2fe34036a4fbfb06dd185a3f5c8edfaacdf7d1ea10b07de6252" -"checksum parking_lot_core 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)" = "b876b1b9e7ac6e1a74a6da34d25c42e17e8862aa409cbbbdcfc8d86c6f3bc62b" -"checksum parking_lot_core 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7582838484df45743c8434fbff785e8edf260c28748353d44bc0da32e0ceabf1" -"checksum paste 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "423a519e1c6e828f1e73b720f9d9ed2fa643dce8a7737fb43235ce0b41eeaa49" -"checksum paste-impl 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "4214c9e912ef61bf42b81ba9a47e8aad1b2ffaf739ab162bf96d1e011f54e6c5" -"checksum pbkdf2 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "006c038a43a45995a9670da19e67600114740e8511d4333bf97a56e66a7542d9" -"checksum pin-utils 0.1.0-alpha.4 (registry+https://github.com/rust-lang/crates.io-index)" = "5894c618ce612a3fa23881b152b608bafb8c56cfc22f434a3ba3120b40f7b587" -"checksum ppv-lite86 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)" = "74490b50b9fbe561ac330df47c08f3f33073d2d00c150f719147d7c54522fa1b" -"checksum primitive-types 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)" = "e4336f4f5d5524fa60bcbd6fe626f9223d8142a50e7053e979acdf0da41ab975" -"checksum proc-macro-crate 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "e10d4b51f154c8a7fb96fd6dad097cb74b863943ec010ac94b9fd1be8861fe1e" -"checksum proc-macro-hack 0.5.11 (registry+https://github.com/rust-lang/crates.io-index)" = "ecd45702f76d6d3c75a80564378ae228a85f0b59d2f3ed43c91b4a69eb2ebfc5" -"checksum proc-macro-nested 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "369a6ed065f249a159e06c45752c780bda2fb53c995718f9e484d08daa9eb42e" -"checksum proc-macro2 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)" = "3acb317c6ff86a4e579dfa00fc5e6cca91ecbb4e7eb2df0468805b674eb88548" -"checksum quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "053a8c8bcc71fcce321828dc897a98ab9760bef03a4fc36693c231e5b3216cfe" -"checksum rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)" = "6d71dacdc3c88c1fde3885a3be3fbab9f35724e6ce99467f7d9c5026132184ca" -"checksum rand 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)" = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03" -"checksum rand_chacha 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "556d3a1ca6600bfcbab7c7c91ccb085ac7fbbcd70e008a98742e7847f4f7bcef" -"checksum rand_chacha 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "03a2a90da8c7523f554344f921aa97283eadf6ac484a6d2a7d0212fa7f8d6853" -"checksum rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "7a6fdeb83b075e8266dcc8762c22776f6877a63111121f5f8c7411e5be7eed4b" -"checksum rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "9c33a3c44ca05fa6f1807d8e6743f3824e8509beca625669633be0acbdf509dc" -"checksum rand_core 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" -"checksum rand_hc 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7b40677c7be09ae76218dc623efbf7b18e34bced3f38883af07bb75630a21bc4" -"checksum rand_hc 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c" -"checksum rand_isaac 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ded997c9d5f13925be2a6fd7e66bf1872597f759fd9dd93513dd7e92e5a5ee08" -"checksum rand_jitter 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "1166d5c91dc97b88d1decc3285bb0a99ed84b05cfd0bc2341bdf2d43fc41e39b" -"checksum rand_os 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "7b75f676a1e053fc562eafbb47838d67c84801e38fc1ba459e8f180deabd5071" -"checksum rand_pcg 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "abf9b09b01790cfe0364f52bf32995ea3c39f4d2dd011eac241d2914146d0b44" -"checksum rand_xorshift 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "cbf7e9e623549b0e21f6e97cf8ecf247c1a8fd2e8a992ae265314300b2455d5c" -"checksum rdrand 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "678054eb77286b51581ba43620cc911abf02758c91f93f479767aed0f90458b2" -"checksum redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)" = "2439c63f3f6139d1b57529d16bc3b8bb855230c8efcc5d3a896c8bea7c3b1e84" -"checksum regex 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "322cf97724bea3ee221b78fe25ac9c46114ebb51747ad5babd51a2fc6a8235a8" -"checksum regex-syntax 0.6.14 (registry+https://github.com/rust-lang/crates.io-index)" = "b28dfe3fe9badec5dbf0a79a9cccad2cfc2ab5484bdb3e44cbd1ae8b3ba2be06" -"checksum rustc-demangle 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)" = "4c691c0e608126e00913e33f0ccf3727d5fc84573623b8d65b2df340b5201783" -"checksum rustc-hash 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" -"checksum rustc-hex 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "3e75f6a532d0fd9f7f13144f392b6ad56a32696bfcd9c78f797f16bbb6f072d6" -"checksum rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030a" -"checksum schnorrkel 0.8.5 (registry+https://github.com/rust-lang/crates.io-index)" = "eacd8381b3c37840c9c9f40472af529e49975bdcbc24f83c31059fd6539023d3" -"checksum scopeguard 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" -"checksum semver 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403" -"checksum semver-parser 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" -"checksum send_wrapper 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "a0eddf2e8f50ced781f288c19f18621fa72a3779e3cb58dbf23b07469b0abeb4" -"checksum serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)" = "414115f25f818d7dfccec8ee535d76949ae78584fc4f79a6f45a904bf8ab4449" -"checksum serde_derive 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)" = "128f9e303a5a29922045a830221b8f78ec74a5f544944f3d5984f8ec3895ef64" -"checksum sha2 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)" = "27044adfd2e1f077f649f59deb9490d3941d674002f7d062870a60ebe9bd47a0" -"checksum slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "c111b5bd5695e56cffe5129854aa230b39c93a305372fdbb2668ca2394eea9f8" -"checksum smallvec 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)" = "f7b0758c52e15a8b5e3691eae6cc559f08eee9406e548a4477ba4e67770a82b6" -"checksum smallvec 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "5c2fb2ec9bcd216a5b0d0ccf31ab17b5ed1d627960edff65bbe95d3ce221cefc" -"checksum sourcefile 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "4bf77cb82ba8453b42b6ae1d692e4cdc92f9a47beaf89a847c8be83f4e328ad3" -"checksum static_assertions 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" -"checksum strum 0.16.0 (registry+https://github.com/rust-lang/crates.io-index)" = "6138f8f88a16d90134763314e3fc76fa3ed6a7db4725d6acf9a3ef95a3188d22" -"checksum strum_macros 0.16.0 (registry+https://github.com/rust-lang/crates.io-index)" = "0054a7df764039a6cd8592b9de84be4bec368ff081d203a7d5371cbfa8e65c81" -"checksum substrate-bip39 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "3be511be555a3633e71739a79e4ddff6a6aaa6579fa6114182a51d72c3eb93c5" -"checksum subtle 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "2d67a5a62ba6e01cb2192ff309324cb4875d0c451d55fe2319433abe7a05a8ee" -"checksum subtle 2.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7c65d530b10ccaeac294f349038a597e435b18fb456aadd0840a623f83b9e941" -"checksum syn 1.0.14 (registry+https://github.com/rust-lang/crates.io-index)" = "af6f3550d8dff9ef7dc34d384ac6f107e5d31c8f57d9f28e0081503f547ac8f5" -"checksum synstructure 0.12.3 (registry+https://github.com/rust-lang/crates.io-index)" = "67656ea1dc1b41b1451851562ea232ec2e5a80242139f7e679ceccfb5d61f545" -"checksum thread_local 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "d40c6d1b69745a6ec6fb1ca717914848da4b44ae29d9b3080cbee91d72a69b14" -"checksum tiny-bip39 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1cd1fb03fe8e07d17cd851a624a9fff74642a997b67fbd1ccd77533241640d92" -"checksum tiny-keccak 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "2953ca5148619bc99695c1274cb54c5275bbb913c6adad87e72eaf8db9787f69" -"checksum toml 0.5.6 (registry+https://github.com/rust-lang/crates.io-index)" = "ffc92d160b1eef40665be3a05630d003936a3bc7da7421277846c2613e92c71a" -"checksum tracing 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)" = "1e213bd24252abeb86a0b7060e02df677d367ce6cb772cef17e9214b8390a8d3" -"checksum tracing-attributes 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "04cfd395def5a60236e187e1ff905cb55668a59f29928dec05e6e1b1fd2ac1f3" -"checksum tracing-core 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)" = "13a46f11e372b8bd4b4398ea54353412fdd7fd42a8370c7e543e218cf7661978" -"checksum trie-db 0.20.0 (registry+https://github.com/rust-lang/crates.io-index)" = "de9222c50cc325855621271157c973da27a0dcd26fa06f8edf81020bd2333df0" -"checksum trie-root 0.16.0 (registry+https://github.com/rust-lang/crates.io-index)" = "652931506d2c1244d7217a70b99f56718a7b4161b37f04e7cd868072a99f68cd" -"checksum twox-hash 1.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "3bfd5b7557925ce778ff9b9ef90e3ade34c524b5ff10e239c69a42d546d2af56" -"checksum typenum 1.11.2 (registry+https://github.com/rust-lang/crates.io-index)" = "6d2783fe2d6b8c1101136184eb41be8b1ad379e4657050b8aaff0c79ee7575f9" -"checksum uint 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)" = "e75a4cdd7b87b28840dba13c483b9a88ee6bbf16ba5c951ee1ecfcf723078e0d" -"checksum unicode-segmentation 1.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e83e153d1053cbb5a118eeff7fd5be06ed99153f00dbcd8ae310c5fb2b22edc0" -"checksum unicode-xid 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "826e7639553986605ec5979c7dd957c7895e93eabed50ab2ffa7f6128a75097c" -"checksum version_check 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "914b1a6776c4c929a602fafd8bc742e06365d4bcbe48c30f9cca5824f70dc9dd" -"checksum wasi 0.9.0+wasi-snapshot-preview1 (registry+https://github.com/rust-lang/crates.io-index)" = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519" -"checksum wasm-bindgen 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)" = "5205e9afdf42282b192e2310a5b463a6d1c1d774e30dc3c791ac37ab42d2616c" -"checksum wasm-bindgen-backend 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)" = "11cdb95816290b525b32587d76419facd99662a07e59d3cdb560488a819d9a45" -"checksum wasm-bindgen-futures 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)" = "8bbdd49e3e28b40dec6a9ba8d17798245ce32b019513a845369c641b275135d9" -"checksum wasm-bindgen-macro 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)" = "574094772ce6921576fb6f2e3f7497b8a76273b6db092be18fc48a082de09dc3" -"checksum wasm-bindgen-macro-support 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)" = "e85031354f25eaebe78bb7db1c3d86140312a911a106b2e29f9cc440ce3e7668" -"checksum wasm-bindgen-shared 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)" = "f5e7e61fc929f4c0dddb748b102ebf9f632e2b8d739f2016542b4de2965a9601" -"checksum wasm-bindgen-webidl 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)" = "ef012a0d93fc0432df126a8eaf547b2dce25a8ce9212e1d3cbeef5c11157975d" -"checksum wasm-timer 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)" = "324c5e65a08699c9c4334ba136597ab22b85dccd4b65dd1e36ccf8f723a95b54" -"checksum wasmi 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)" = "bf617d864d25af3587aa745529f7aaa541066c876d57e050c0d0c85c61c92aff" -"checksum wasmi-validation 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ea78c597064ba73596099281e2f4cfc019075122a65cdda3205af94f0b264d93" -"checksum web-sys 0.3.35 (registry+https://github.com/rust-lang/crates.io-index)" = "aaf97caf6aa8c2b1dac90faf0db529d9d63c93846cca4911856f78a83cebf53b" -"checksum weedle 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)" = "3bb43f70885151e629e2a19ce9e50bd730fd436cfd4b666894c9ce4de9141164" -"checksum winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)" = "8093091eeb260906a183e6ae1abdba2ef5ef2257a21801128899c3fc699229c6" -"checksum winapi-i686-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" -"checksum winapi-x86_64-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" -"checksum zeroize 0.9.3 (registry+https://github.com/rust-lang/crates.io-index)" = "45af6a010d13e4cf5b54c94ba5a2b2eba5596b9e46bf5875612d332a1f2b3f86" -"checksum zeroize 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "3cbac2ed2ba24cc90f5e06485ac8c7c1e5449fe8911aef4d8877218af021a5b8" -"checksum zeroize_derive 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "de251eec69fc7c1bc3923403d18ececb929380e016afe103da75f396704f8ca2" + "proc-macro2", + "quote", + "syn", + "synstructure", +] diff --git a/frame/staking/fuzz/fuzz_targets/submit_solution.rs b/frame/staking/fuzz/fuzz_targets/submit_solution.rs index 5c9aa73bab..bbc480f116 100644 --- a/frame/staking/fuzz/fuzz_targets/submit_solution.rs +++ b/frame/staking/fuzz/fuzz_targets/submit_solution.rs @@ -47,10 +47,10 @@ pub fn new_test_ext() -> Result { fuzz_target!(|do_reduce: bool| { let ext = new_test_ext(); let mode: Mode = unsafe { std::mem::transmute(testing_utils::random(0, 2)) }; - let num_validators = testing_utils::random(200, 1000); - let num_nominators = testing_utils::random(500, 2000); + let num_validators = testing_utils::random(50, 500); + let num_nominators = testing_utils::random(200, 2000); let edge_per_voter = testing_utils::random(1, 16); - let to_elect = testing_utils::random(10, 200); + let to_elect = testing_utils::random(10, num_validators); println!("+++ instance with params {} / {} / {} / {:?} / {}", num_nominators, diff --git a/frame/staking/src/testing_utils.rs b/frame/staking/src/testing_utils.rs index 79a462335b..29a395b89d 100644 --- a/frame/staking/src/testing_utils.rs +++ b/frame/staking/src/testing_utils.rs @@ -117,7 +117,6 @@ where T::Lookup: StaticLookup>, { (0..num_validators).for_each(|i| { - // println!("bonding validator {}/{}", i, num_validators); bond_validator::( account::(i), i + CTRL_PREFIX, @@ -135,7 +134,6 @@ where let target = all_targets.remove(random(0, all_targets.len() as u32 - 1) as usize); targets.push(target); }); - // println!("bonding voter {}/{}", i, num_voters); bond_nominator::( account::(i + NOMINATOR_PREFIX), i + NOMINATOR_PREFIX + CTRL_PREFIX, -- GitLab From f014e2c6b899712456d2f4d847d94721439420e0 Mon Sep 17 00:00:00 2001 From: kianenigma Date: Mon, 9 Mar 2020 16:21:20 +0100 Subject: [PATCH 154/301] Remove unused pref map --- frame/staking/src/lib.rs | 32 ++++++++++---------------------- 1 file changed, 10 insertions(+), 22 deletions(-) diff --git a/frame/staking/src/lib.rs b/frame/staking/src/lib.rs index 05af4f6751..81b166ea8b 100644 --- a/frame/staking/src/lib.rs +++ b/frame/staking/src/lib.rs @@ -982,28 +982,28 @@ decl_storage! { /// Snapshot of validators at the beginning of the current election window. This should only /// have a value when [`EraElectionStatus`] == `ElectionStatus::Open(_)`. - SnapshotValidators get(fn snapshot_validators): Option>; + pub SnapshotValidators get(fn snapshot_validators): Option>; /// Snapshot of nominators at the beginning of the current election window. This should only /// have a value when [`EraElectionStatus`] == `ElectionStatus::Open(_)`. - SnapshotNominators get(fn snapshot_nominators): Option>; + pub SnapshotNominators get(fn snapshot_nominators): Option>; /// The current set of staking keys. - Keys get(fn keys): Vec; + pub Keys get(fn keys): Vec; /// The next validator set. At the end of an era, if this is available (potentially from the /// result of an offchain worker), it is immediately used. Otherwise, the on-chain election /// is executed. - QueuedElected get(fn queued_elected): Option>>; + pub QueuedElected get(fn queued_elected): Option>>; /// The score of the current [`QueuedElected`]. - QueuedScore get(fn queued_score): Option; + pub QueuedScore get(fn queued_score): Option; /// Flag to control the execution of the offchain election. - EraElectionStatus get(fn era_election_status): ElectionStatus; + pub EraElectionStatus get(fn era_election_status): ElectionStatus; /// True of the current planned session is final - IsCurrentSessionFinal get(fn is_current_session_final): bool = false; + pub IsCurrentSessionFinal get(fn is_current_session_final): bool = false; /// True if network has been upgraded to this version. /// Storage version of the pallet. @@ -2056,7 +2056,7 @@ impl Module { /// Checks a given solution and if correct and improved, writes it on chain as the queued result /// of the next round. This may be called by both a signed and an unsigned transaction. - fn check_and_replace_solution( + pub fn check_and_replace_solution( winners: Vec, compact_assignments: CompactAssignments, compute: ElectionCompute, @@ -2366,21 +2366,9 @@ impl Module { // Insert current era staking information >::insert(¤t_era, total_stake); - // -------- - // TODO: this snapshot need to be taken elsewhere... this is super inefficient now. - // The current abstraction is such that we do `>::enumerate()` down to line - // in `do_phragmen` and don't really update the values there. There are numerous ways to fix this. - // check @guillaume. - let mut all_validators_and_prefs = BTreeMap::new(); - for (validator, preference) in >::enumerate() { - all_validators_and_prefs.insert(validator.clone(), preference); - } - // --------- - - let default_pref = ValidatorPrefs::default(); + // collect the pref of all winners for stash in &elected_stashes { - let pref = all_validators_and_prefs.get(stash) - .unwrap_or(&default_pref); // Must never happen, but better to be safe. + let pref = Self::validators(stash); >::insert(¤t_era, stash, pref); } -- GitLab From 78cdd3bf9b50d6a4fdfe510b5174bb22e2863f25 Mon Sep 17 00:00:00 2001 From: Max Inden Date: Mon, 9 Mar 2020 16:31:29 +0100 Subject: [PATCH 155/301] client/network-gossip: Merge GossipEngine and GossipEngineInner (#5042) * client/network-gossip: Merge GossipEngine and GossipEngineInner Given that GossipEngine and GossipEngineInner are not shared between threads anyone (public interface + background tasks), neither depends on being Send or Sync. Thus one can merge the two as done in this patch. One only needs to wrap an `Arc>` around the whole structure when the owner (e.g. finality-grandpa) needs to share the gossip engine between threads. * client/finality-grandpa: Wrap GossipEngine in Arc Mutex & lock it on use GossipEngine in itself has no need to be Send and Sync, given that it does not rely on separately spawned background tasks anymore. Given that finality-grandpa shares the `NetworkBridge` potentially between threads its components need to be clonable, thus this patch wraps `GossipEngine` in an `Arc>`. --- Cargo.lock | 1 - .../finality-grandpa/src/communication/mod.rs | 52 ++++++------- client/network-gossip/Cargo.toml | 1 - client/network-gossip/src/bridge.rs | 73 +++++-------------- 4 files changed, 43 insertions(+), 84 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 4b170d9082..32b2d0dc0f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -6245,7 +6245,6 @@ dependencies = [ "libp2p", "log 0.4.8", "lru", - "parking_lot 0.10.0", "sc-network", "sp-runtime", "wasm-timer", diff --git a/client/finality-grandpa/src/communication/mod.rs b/client/finality-grandpa/src/communication/mod.rs index 1f4e223597..7525c44f15 100644 --- a/client/finality-grandpa/src/communication/mod.rs +++ b/client/finality-grandpa/src/communication/mod.rs @@ -142,7 +142,7 @@ pub(crate) fn global_topic(set_id: SetIdNumber) -> B::Hash { /// Bridge between the underlying network service, gossiping consensus messages and Grandpa pub(crate) struct NetworkBridge> { service: N, - gossip_engine: GossipEngine, + gossip_engine: Arc>>, validator: Arc>, /// Sender side of the neighbor packet channel. @@ -185,12 +185,12 @@ impl> NetworkBridge { ); let validator = Arc::new(validator); - let gossip_engine = GossipEngine::new( + let gossip_engine = Arc::new(Mutex::new(GossipEngine::new( service.clone(), GRANDPA_ENGINE_ID, GRANDPA_PROTOCOL_NAME, validator.clone() - ); + ))); { // register all previous votes with the gossip service so that they're @@ -214,7 +214,7 @@ impl> NetworkBridge { } ); - gossip_engine.register_gossip_message( + gossip_engine.lock().register_gossip_message( topic, message.encode(), ); @@ -293,7 +293,7 @@ impl> NetworkBridge { }); let topic = round_topic::(round.0, set_id.0); - let incoming = self.gossip_engine.messages_for(topic) + let incoming = self.gossip_engine.lock().messages_for(topic) .filter_map(move |notification| { let decoded = GossipMessage::::decode(&mut ¬ification.message[..]); @@ -422,11 +422,11 @@ impl> NetworkBridge { impl> Future for NetworkBridge { type Output = Result<(), Error>; - fn poll(mut self: Pin<&mut Self>, cx: &mut Context) -> Poll { + fn poll(self: Pin<&mut Self>, cx: &mut Context) -> Poll { loop { match self.neighbor_packet_worker.lock().poll_next_unpin(cx) { Poll::Ready(Some((to, packet))) => { - self.gossip_engine.send_message(to, packet.encode()); + self.gossip_engine.lock().send_message(to, packet.encode()); }, Poll::Ready(None) => return Poll::Ready( Err(Error::Network("Neighbor packet worker stream closed.".into())) @@ -438,7 +438,7 @@ impl> Future for NetworkBridge { loop { match self.gossip_validator_report_stream.lock().poll_next_unpin(cx) { Poll::Ready(Some(PeerReport { who, cost_benefit })) => { - self.gossip_engine.report(who, cost_benefit); + self.gossip_engine.lock().report(who, cost_benefit); }, Poll::Ready(None) => return Poll::Ready( Err(Error::Network("Gossip validator report stream closed.".into())) @@ -447,7 +447,7 @@ impl> Future for NetworkBridge { } } - match self.gossip_engine.poll_unpin(cx) { + match self.gossip_engine.lock().poll_unpin(cx) { // The gossip engine future finished. We should do the same. Poll::Ready(()) => return Poll::Ready(Ok(())), Poll::Pending => {}, @@ -458,7 +458,7 @@ impl> Future for NetworkBridge { } fn incoming_global( - mut gossip_engine: GossipEngine, + gossip_engine: Arc>>, topic: B::Hash, voters: Arc>, gossip_validator: Arc>, @@ -467,7 +467,7 @@ fn incoming_global( let process_commit = move | msg: FullCommitMessage, mut notification: sc_network_gossip::TopicNotification, - gossip_engine: &mut GossipEngine, + gossip_engine: &Arc>>, gossip_validator: &Arc>, voters: &VoterSet, | { @@ -491,7 +491,7 @@ fn incoming_global( msg.set_id, ) { if let Some(who) = notification.sender { - gossip_engine.report(who, cost); + gossip_engine.lock().report(who, cost); } return None; @@ -513,12 +513,12 @@ fn incoming_global( |to, neighbor| neighbor_sender.send(to, neighbor), ); - gossip_engine.gossip_message(topic, notification.message.clone(), false); + gossip_engine.lock().gossip_message(topic, notification.message.clone(), false); } voter::CommitProcessingOutcome::Bad(_) => { // report peer and do not gossip. if let Some(who) = notification.sender.take() { - gossip_engine.report(who, cost::INVALID_COMMIT); + gossip_engine.lock().report(who, cost::INVALID_COMMIT); } } }; @@ -531,7 +531,7 @@ fn incoming_global( let process_catch_up = move | msg: FullCatchUpMessage, mut notification: sc_network_gossip::TopicNotification, - gossip_engine: &mut GossipEngine, + gossip_engine: &Arc>>, gossip_validator: &Arc>, voters: &VoterSet, | { @@ -544,7 +544,7 @@ fn incoming_global( msg.set_id, ) { if let Some(who) = notification.sender { - gossip_engine.report(who, cost); + gossip_engine.lock().report(who, cost); } return None; @@ -554,7 +554,7 @@ fn incoming_global( if let voter::CatchUpProcessingOutcome::Bad(_) = outcome { // report peer if let Some(who) = notification.sender.take() { - gossip_engine.report(who, cost::INVALID_CATCH_UP); + gossip_engine.lock().report(who, cost::INVALID_CATCH_UP); } } @@ -566,7 +566,7 @@ fn incoming_global( Some(voter::CommunicationIn::CatchUp(msg.message, cb)) }; - gossip_engine.messages_for(topic) + gossip_engine.clone().lock().messages_for(topic) .filter_map(|notification| { // this could be optimized by decoding piecewise. let decoded = GossipMessage::::decode(&mut ¬ification.message[..]); @@ -578,9 +578,9 @@ fn incoming_global( .filter_map(move |(notification, msg)| { future::ready(match msg { GossipMessage::Commit(msg) => - process_commit(msg, notification, &mut gossip_engine, &gossip_validator, &*voters), + process_commit(msg, notification, &gossip_engine, &gossip_validator, &*voters), GossipMessage::CatchUp(msg) => - process_catch_up(msg, notification, &mut gossip_engine, &gossip_validator, &*voters), + process_catch_up(msg, notification, &gossip_engine, &gossip_validator, &*voters), _ => { debug!(target: "afg", "Skipping unknown message type"); None @@ -688,7 +688,7 @@ pub(crate) struct OutgoingMessages { set_id: SetIdNumber, locals: Option<(AuthorityPair, AuthorityId)>, sender: mpsc::Sender>, - network: GossipEngine, + network: Arc>>, has_voted: HasVoted, } @@ -754,11 +754,11 @@ impl Sink> for OutgoingMessages ); // announce the block we voted on to our peers. - self.network.announce(target_hash, Vec::new()); + self.network.lock().announce(target_hash, Vec::new()); // propagate the message to peers let topic = round_topic::(self.round, self.set_id); - self.network.gossip_message(topic, message.encode(), false); + self.network.lock().gossip_message(topic, message.encode(), false); // forward the message to the inner sender. return self.sender.start_send(signed).map_err(|e| { @@ -959,7 +959,7 @@ fn check_catch_up( /// An output sink for commit messages. struct CommitsOut { - network: GossipEngine, + network: Arc>>, set_id: SetId, is_voter: bool, gossip_validator: Arc>, @@ -969,7 +969,7 @@ struct CommitsOut { impl CommitsOut { /// Create a new commit output stream. pub(crate) fn new( - network: GossipEngine, + network: Arc>>, set_id: SetIdNumber, is_voter: bool, gossip_validator: Arc>, @@ -1028,7 +1028,7 @@ impl Sink<(RoundNumber, Commit)> for CommitsOut { commit.target_number, |to, neighbor| self.neighbor_sender.send(to, neighbor), ); - self.network.gossip_message(topic, message.encode(), false); + self.network.lock().gossip_message(topic, message.encode(), false); Ok(()) } diff --git a/client/network-gossip/Cargo.toml b/client/network-gossip/Cargo.toml index 08c304c6e0..955911f1f0 100644 --- a/client/network-gossip/Cargo.toml +++ b/client/network-gossip/Cargo.toml @@ -16,7 +16,6 @@ futures-timer = "3.0.1" libp2p = { version = "0.16.2", default-features = false, features = ["libp2p-websocket"] } log = "0.4.8" lru = "0.4.3" -parking_lot = "0.10.0" sc-network = { version = "0.8.0-alpha.2", path = "../network" } sp-runtime = { version = "2.0.0-alpha.2", path = "../../primitives/runtime" } wasm-timer = "0.2" diff --git a/client/network-gossip/src/bridge.rs b/client/network-gossip/src/bridge.rs index c911766aba..c06cb6268c 100644 --- a/client/network-gossip/src/bridge.rs +++ b/client/network-gossip/src/bridge.rs @@ -22,18 +22,12 @@ use sc_network::{Event, ReputationChange}; use futures::{prelude::*, channel::mpsc}; use libp2p::PeerId; -use parking_lot::Mutex; use sp_runtime::{traits::Block as BlockT, ConsensusEngineId}; use std::{borrow::Cow, pin::Pin, sync::Arc, task::{Context, Poll}}; /// Wraps around an implementation of the `Network` crate and provides gossiping capabilities on /// top of it. pub struct GossipEngine { - inner: Arc>>, - engine_id: ConsensusEngineId, -} - -struct GossipEngineInner { state_machine: ConsensusGossip, network: Box + Send>, periodic_maintenance_interval: futures_timer::Delay, @@ -41,7 +35,7 @@ struct GossipEngineInner { engine_id: ConsensusEngineId, } -impl Unpin for GossipEngineInner {} +impl Unpin for GossipEngine {} impl GossipEngine { /// Create a new instance. @@ -60,24 +54,17 @@ impl GossipEngine { network.register_notifications_protocol(engine_id, protocol_name.into()); state_machine.register_validator(&mut network, engine_id, validator); - let inner = Arc::new(Mutex::new(GossipEngineInner { + GossipEngine { state_machine, network: Box::new(network), periodic_maintenance_interval: futures_timer::Delay::new(PERIODIC_MAINTENANCE_INTERVAL), network_event_stream, engine_id, - })); - - let gossip_engine = GossipEngine { - inner: inner.clone(), - engine_id, - }; - - gossip_engine + } } pub fn report(&self, who: PeerId, reputation: ReputationChange) { - self.inner.lock().network.report_peer(who, reputation); + self.network.report_peer(who, reputation); } /// Registers a message without propagating it to any peers. The message @@ -86,7 +73,7 @@ impl GossipEngine { /// message is already expired it should be dropped on the next garbage /// collection. pub fn register_gossip_message( - &self, + &mut self, topic: B::Hash, message: Vec, ) { @@ -95,38 +82,34 @@ impl GossipEngine { data: message, }; - self.inner.lock().state_machine.register_message(topic, message); + self.state_machine.register_message(topic, message); } /// Broadcast all messages with given topic. - pub fn broadcast_topic(&self, topic: B::Hash, force: bool) { - let mut inner = self.inner.lock(); - let inner = &mut *inner; - inner.state_machine.broadcast_topic(&mut *inner.network, topic, force); + pub fn broadcast_topic(&mut self, topic: B::Hash, force: bool) { + self.state_machine.broadcast_topic(&mut *self.network, topic, force); } /// Get data of valid, incoming messages for a topic (but might have expired meanwhile). - pub fn messages_for(&self, topic: B::Hash) + pub fn messages_for(&mut self, topic: B::Hash) -> mpsc::UnboundedReceiver { - self.inner.lock().state_machine.messages_for(self.engine_id, topic) + self.state_machine.messages_for(self.engine_id, topic) } /// Send all messages with given topic to a peer. pub fn send_topic( - &self, + &mut self, who: &PeerId, topic: B::Hash, force: bool ) { - let mut inner = self.inner.lock(); - let inner = &mut *inner; - inner.state_machine.send_topic(&mut *inner.network, who, topic, self.engine_id, force) + self.state_machine.send_topic(&mut *self.network, who, topic, self.engine_id, force) } /// Multicast a message to all peers. pub fn gossip_message( - &self, + &mut self, topic: B::Hash, message: Vec, force: bool, @@ -136,19 +119,14 @@ impl GossipEngine { data: message, }; - let mut inner = self.inner.lock(); - let inner = &mut *inner; - inner.state_machine.multicast(&mut *inner.network, topic, message, force) + self.state_machine.multicast(&mut *self.network, topic, message, force) } /// Send addressed message to the given peers. The message is not kept or multicast /// later on. - pub fn send_message(&self, who: Vec, data: Vec) { - let mut inner = self.inner.lock(); - let inner = &mut *inner; - + pub fn send_message(&mut self, who: Vec, data: Vec) { for who in &who { - inner.state_machine.send_message(&mut *inner.network, who, ConsensusMessage { + self.state_machine.send_message(&mut *self.network, who, ConsensusMessage { engine_id: self.engine_id, data: data.clone(), }); @@ -160,21 +138,13 @@ impl GossipEngine { /// Note: this method isn't strictly related to gossiping and should eventually be moved /// somewhere else. pub fn announce(&self, block: B::Hash, associated_data: Vec) { - self.inner.lock().network.announce(block, associated_data); + self.network.announce(block, associated_data); } } impl Future for GossipEngine { type Output = (); - fn poll(self: Pin<&mut Self>, cx: &mut Context) -> Poll { - self.inner.lock().poll_unpin(cx) - } -} - -impl Future for GossipEngineInner { - type Output = (); - fn poll(mut self: Pin<&mut Self>, cx: &mut Context) -> Poll { let this = &mut *self; @@ -216,12 +186,3 @@ impl Future for GossipEngineInner { Poll::Pending } } - -impl Clone for GossipEngine { - fn clone(&self) -> Self { - GossipEngine { - inner: self.inner.clone(), - engine_id: self.engine_id.clone(), - } - } -} -- GitLab From 1c15f4f6cf187cce1f18279f10f8b926be440e3d Mon Sep 17 00:00:00 2001 From: thiolliere Date: Mon, 9 Mar 2020 16:32:24 +0100 Subject: [PATCH 156/301] Change space to tab (#5193) --- frame/staking/src/migration/deprecated.rs | 60 ++-- frame/staking/src/migration/tests.rs | 410 +++++++++++----------- 2 files changed, 235 insertions(+), 235 deletions(-) diff --git a/frame/staking/src/migration/deprecated.rs b/frame/staking/src/migration/deprecated.rs index 41cf665229..b5ec26d32f 100644 --- a/frame/staking/src/migration/deprecated.rs +++ b/frame/staking/src/migration/deprecated.rs @@ -24,50 +24,50 @@ use sp_std::prelude::*; /// Reward points of an era. Used to split era total payout between validators. #[derive(Encode, Decode, Default)] pub struct EraPoints { - /// Total number of points. Equals the sum of reward points for each validator. - pub total: u32, - /// The reward points earned by a given validator. The index of this vec corresponds to the - /// index into the current validator set. - pub individual: Vec, + /// Total number of points. Equals the sum of reward points for each validator. + pub total: u32, + /// The reward points earned by a given validator. The index of this vec corresponds to the + /// index into the current validator set. + pub individual: Vec, } #[derive(Encode, Decode)] pub struct OldStakingLedger { - pub stash: AccountId, - #[codec(compact)] - pub total: Balance, - #[codec(compact)] - pub active: Balance, - pub unlocking: Vec>, + pub stash: AccountId, + #[codec(compact)] + pub total: Balance, + #[codec(compact)] + pub active: Balance, + pub unlocking: Vec>, } decl_module! { - pub struct Module for enum Call where origin: T::Origin { } + pub struct Module for enum Call where origin: T::Origin { } } decl_storage! { - pub trait Store for Module as Staking { - pub SlotStake: BalanceOf; + pub trait Store for Module as Staking { + pub SlotStake: BalanceOf; - /// The currently elected validator set keyed by stash account ID. - pub CurrentElected: Vec; + /// The currently elected validator set keyed by stash account ID. + pub CurrentElected: Vec; - /// The start of the current era. - pub CurrentEraStart: MomentOf; + /// The start of the current era. + pub CurrentEraStart: MomentOf; - /// The session index at which the current era started. - pub CurrentEraStartSessionIndex: SessionIndex; + /// The session index at which the current era started. + pub CurrentEraStartSessionIndex: SessionIndex; - /// Rewards for the current era. Using indices of current elected set. - pub CurrentEraPointsEarned: EraPoints; + /// Rewards for the current era. Using indices of current elected set. + pub CurrentEraPointsEarned: EraPoints; - /// Nominators for a particular account that is in action right now. You can't iterate - /// through validators here, but you can find them in the Session module. - /// - /// This is keyed by the stash account. - pub Stakers: map hasher(blake2_256) T::AccountId => Exposure>; + /// Nominators for a particular account that is in action right now. You can't iterate + /// through validators here, but you can find them in the Session module. + /// + /// This is keyed by the stash account. + pub Stakers: map hasher(blake2_256) T::AccountId => Exposure>; - /// Old upgrade flag. - pub IsUpgraded: bool; - } + /// Old upgrade flag. + pub IsUpgraded: bool; + } } diff --git a/frame/staking/src/migration/tests.rs b/frame/staking/src/migration/tests.rs index d1ba35cadc..db437e08c1 100644 --- a/frame/staking/src/migration/tests.rs +++ b/frame/staking/src/migration/tests.rs @@ -7,214 +7,214 @@ use sp_runtime::traits::OnRuntimeUpgrade; #[test] fn upgrade_works() { - ExtBuilder::default().build().execute_with(|| { - start_era(3); - - assert_eq!(Session::validators(), vec![21, 11]); - - // Insert fake data to check the migration - put_storage_value::>(b"Staking", b"CurrentElected", b"", vec![21, 31]); - put_storage_value::(b"Staking", b"CurrentEraStartSessionIndex", b"", 5); - put_storage_value::>(b"Staking", b"CurrentEraStart", b"", 777); - put_storage_value( - b"Staking", b"Stakers", &blake2_256(&11u64.encode()), - Exposure:: { - total: 10, - own: 10, - others: vec![], - } - ); - put_storage_value( - b"Staking", b"Stakers", &blake2_256(&21u64.encode()), - Exposure:: { - total: 20, - own: 20, - others: vec![], - } - ); - put_storage_value( - b"Staking", b"Stakers", &blake2_256(&31u64.encode()), - Exposure:: { - total: 30, - own: 30, - others: vec![], - } - ); - put_storage_value::<(u32, Vec)>(b"Staking", b"CurrentEraPointsEarned", b"", (12, vec![2, 10])); - ::ErasStakers::remove_all(); - ::ErasStakersClipped::remove_all(); - - ::StorageVersion::put(Releases::V1_0_0); - - // Perform upgrade - Staking::on_runtime_upgrade(); - - assert_eq!(::StorageVersion::get(), Releases::V2_0_0); - - // Check migration - assert_eq!(::ErasStartSessionIndex::get(3).unwrap(), 5); - assert_eq!(::ErasRewardPoints::get(3), EraRewardPoints { - total: 12, - individual: vec![(21, 2), (31, 10)].into_iter().collect(), - }); - assert_eq!(::ActiveEra::get().unwrap().index, 3); - assert_eq!(::ActiveEra::get().unwrap().start, Some(777)); - assert_eq!(::CurrentEra::get().unwrap(), 3); - assert_eq!(::ErasStakers::get(3, 11), Exposure { - total: 0, - own: 0, - others: vec![], - }); - assert_eq!(::ErasStakers::get(3, 21), Exposure { - total: 20, - own: 20, - others: vec![], - }); - assert_eq!(::ErasStakers::get(3, 31), Exposure { - total: 30, - own: 30, - others: vec![], - }); - assert_eq!(::ErasStakersClipped::get(3, 11), Exposure { - total: 0, - own: 0, - others: vec![], - }); - assert_eq!(::ErasStakersClipped::get(3, 21), Exposure { - total: 20, - own: 20, - others: vec![], - }); - assert_eq!(::ErasStakersClipped::get(3, 31), Exposure { - total: 30, - own: 30, - others: vec![], - }); - assert_eq!(::ErasValidatorPrefs::get(3, 21), Staking::validators(21)); - assert_eq!(::ErasValidatorPrefs::get(3, 31), Staking::validators(31)); - assert_eq!(::ErasTotalStake::get(3), 50); - }) + ExtBuilder::default().build().execute_with(|| { + start_era(3); + + assert_eq!(Session::validators(), vec![21, 11]); + + // Insert fake data to check the migration + put_storage_value::>(b"Staking", b"CurrentElected", b"", vec![21, 31]); + put_storage_value::(b"Staking", b"CurrentEraStartSessionIndex", b"", 5); + put_storage_value::>(b"Staking", b"CurrentEraStart", b"", 777); + put_storage_value( + b"Staking", b"Stakers", &blake2_256(&11u64.encode()), + Exposure:: { + total: 10, + own: 10, + others: vec![], + } + ); + put_storage_value( + b"Staking", b"Stakers", &blake2_256(&21u64.encode()), + Exposure:: { + total: 20, + own: 20, + others: vec![], + } + ); + put_storage_value( + b"Staking", b"Stakers", &blake2_256(&31u64.encode()), + Exposure:: { + total: 30, + own: 30, + others: vec![], + } + ); + put_storage_value::<(u32, Vec)>(b"Staking", b"CurrentEraPointsEarned", b"", (12, vec![2, 10])); + ::ErasStakers::remove_all(); + ::ErasStakersClipped::remove_all(); + + ::StorageVersion::put(Releases::V1_0_0); + + // Perform upgrade + Staking::on_runtime_upgrade(); + + assert_eq!(::StorageVersion::get(), Releases::V2_0_0); + + // Check migration + assert_eq!(::ErasStartSessionIndex::get(3).unwrap(), 5); + assert_eq!(::ErasRewardPoints::get(3), EraRewardPoints { + total: 12, + individual: vec![(21, 2), (31, 10)].into_iter().collect(), + }); + assert_eq!(::ActiveEra::get().unwrap().index, 3); + assert_eq!(::ActiveEra::get().unwrap().start, Some(777)); + assert_eq!(::CurrentEra::get().unwrap(), 3); + assert_eq!(::ErasStakers::get(3, 11), Exposure { + total: 0, + own: 0, + others: vec![], + }); + assert_eq!(::ErasStakers::get(3, 21), Exposure { + total: 20, + own: 20, + others: vec![], + }); + assert_eq!(::ErasStakers::get(3, 31), Exposure { + total: 30, + own: 30, + others: vec![], + }); + assert_eq!(::ErasStakersClipped::get(3, 11), Exposure { + total: 0, + own: 0, + others: vec![], + }); + assert_eq!(::ErasStakersClipped::get(3, 21), Exposure { + total: 20, + own: 20, + others: vec![], + }); + assert_eq!(::ErasStakersClipped::get(3, 31), Exposure { + total: 30, + own: 30, + others: vec![], + }); + assert_eq!(::ErasValidatorPrefs::get(3, 21), Staking::validators(21)); + assert_eq!(::ErasValidatorPrefs::get(3, 31), Staking::validators(31)); + assert_eq!(::ErasTotalStake::get(3), 50); + }) } // Test that an upgrade from previous test environment works. #[test] fn test_upgrade_from_master_works() { - let data_sets = &[ - test_upgrade_from_master_dataset::_0, - test_upgrade_from_master_dataset::_1, - test_upgrade_from_master_dataset::_2, - test_upgrade_from_master_dataset::_3, - test_upgrade_from_master_dataset::_4, - test_upgrade_from_master_dataset::_5, - test_upgrade_from_master_dataset::_6, - test_upgrade_from_master_dataset::_7, - test_upgrade_from_master_dataset::_8, - ]; - for data_set in data_sets.iter() { - let mut storage = sp_runtime::Storage::default(); - for (key, value) in data_set.iter() { - storage.top.insert(key.to_vec(), value.to_vec()); - } - let mut ext = sp_io::TestExternalities::from(storage); - ext.execute_with(|| { - let old_stakers = - get_storage_value::>(b"Staking", b"CurrentElected", b"").unwrap(); - let old_staker_0 = old_stakers[0]; - let old_staker_1 = old_stakers[1]; - let old_current_era = - get_storage_value::(b"Staking", b"CurrentEra", b"").unwrap(); - let old_staker_0_exposure = get_storage_value::>( - b"Staking", b"Stakers", &blake2_256(&old_staker_0.encode()) - ).unwrap(); - let old_staker_1_exposure = get_storage_value::>( - b"Staking", b"Stakers", &blake2_256(&old_staker_1.encode()) - ).unwrap(); - let ( - old_era_points_earned_total, - old_era_points_earned_individual - ) = get_storage_value::<(u32, Vec)>(b"Staking", b"CurrentEraPointsEarned", b"") - .unwrap_or((0, vec![])); - - Staking::on_runtime_upgrade(); - assert!(::StorageVersion::get() == Releases::V2_0_0); - - // Check ActiveEra and CurrentEra - let active_era = Staking::active_era().unwrap().index; - let current_era = Staking::current_era().unwrap(); - assert!(current_era == active_era); - assert!(current_era == old_current_era); - - // Check ErasStartSessionIndex - let active_era_start = Staking::eras_start_session_index(active_era).unwrap(); - let current_era_start = Staking::eras_start_session_index(current_era).unwrap(); - let current_session_index = Session::current_index(); - assert!(current_era_start == active_era_start); - assert!(active_era_start <= current_session_index); - assert_eq!(::ErasStartSessionIndex::iter().count(), 1); - - // Check ErasStakers - assert_eq!(::ErasStakers::iter().count(), 2); - assert_eq!( - ::ErasStakers::get(current_era, old_staker_0), - old_staker_0_exposure - ); - assert_eq!( - ::ErasStakers::get(current_era, old_staker_1), - old_staker_1_exposure - ); - - // Check ErasStakersClipped - assert_eq!(::ErasStakersClipped::iter().count(), 2); - assert!(::ErasStakersClipped::iter().all(|exposure_clipped| { - let max = ::MaxNominatorRewardedPerValidator::get() as usize; - exposure_clipped.others.len() <= max - })); - assert_eq!( - ::ErasStakersClipped::get(current_era, old_staker_0), - old_staker_0_exposure - ); - assert_eq!( - ::ErasStakersClipped::get(current_era, old_staker_1), - old_staker_1_exposure - ); - - // Check ErasValidatorPrefs - assert_eq!(::ErasValidatorPrefs::iter().count(), 2); - assert_eq!( - ::ErasValidatorPrefs::get(current_era, old_staker_0), - Staking::validators(old_staker_0) - ); - assert_eq!( - ::ErasValidatorPrefs::get(current_era, old_staker_1), - Staking::validators(old_staker_1) - ); - - // Check ErasTotalStake - assert_eq!(::ErasTotalStake::iter().count(), 1); - assert_eq!( - ::ErasTotalStake::get(current_era), - old_staker_0_exposure.total + old_staker_1_exposure.total - ); - - // Check ErasRewardPoints - assert_eq!(::ErasRewardPoints::iter().count(), 1); - let mut individual = BTreeMap::new(); - if let Some(p) = old_era_points_earned_individual.get(0) { - individual.insert(old_staker_0, p.clone()); - } - if let Some(p) = old_era_points_earned_individual.get(1) { - individual.insert(old_staker_1, p.clone()); - } - assert_eq!( - ::ErasRewardPoints::get(current_era), - EraRewardPoints { - total: old_era_points_earned_total, - individual, - } - ); - - // Check ErasValidatorReward - assert_eq!(::ErasValidatorReward::iter().count(), 0); - }); - } + let data_sets = &[ + test_upgrade_from_master_dataset::_0, + test_upgrade_from_master_dataset::_1, + test_upgrade_from_master_dataset::_2, + test_upgrade_from_master_dataset::_3, + test_upgrade_from_master_dataset::_4, + test_upgrade_from_master_dataset::_5, + test_upgrade_from_master_dataset::_6, + test_upgrade_from_master_dataset::_7, + test_upgrade_from_master_dataset::_8, + ]; + for data_set in data_sets.iter() { + let mut storage = sp_runtime::Storage::default(); + for (key, value) in data_set.iter() { + storage.top.insert(key.to_vec(), value.to_vec()); + } + let mut ext = sp_io::TestExternalities::from(storage); + ext.execute_with(|| { + let old_stakers = + get_storage_value::>(b"Staking", b"CurrentElected", b"").unwrap(); + let old_staker_0 = old_stakers[0]; + let old_staker_1 = old_stakers[1]; + let old_current_era = + get_storage_value::(b"Staking", b"CurrentEra", b"").unwrap(); + let old_staker_0_exposure = get_storage_value::>( + b"Staking", b"Stakers", &blake2_256(&old_staker_0.encode()) + ).unwrap(); + let old_staker_1_exposure = get_storage_value::>( + b"Staking", b"Stakers", &blake2_256(&old_staker_1.encode()) + ).unwrap(); + let ( + old_era_points_earned_total, + old_era_points_earned_individual + ) = get_storage_value::<(u32, Vec)>(b"Staking", b"CurrentEraPointsEarned", b"") + .unwrap_or((0, vec![])); + + Staking::on_runtime_upgrade(); + assert!(::StorageVersion::get() == Releases::V2_0_0); + + // Check ActiveEra and CurrentEra + let active_era = Staking::active_era().unwrap().index; + let current_era = Staking::current_era().unwrap(); + assert!(current_era == active_era); + assert!(current_era == old_current_era); + + // Check ErasStartSessionIndex + let active_era_start = Staking::eras_start_session_index(active_era).unwrap(); + let current_era_start = Staking::eras_start_session_index(current_era).unwrap(); + let current_session_index = Session::current_index(); + assert!(current_era_start == active_era_start); + assert!(active_era_start <= current_session_index); + assert_eq!(::ErasStartSessionIndex::iter().count(), 1); + + // Check ErasStakers + assert_eq!(::ErasStakers::iter().count(), 2); + assert_eq!( + ::ErasStakers::get(current_era, old_staker_0), + old_staker_0_exposure + ); + assert_eq!( + ::ErasStakers::get(current_era, old_staker_1), + old_staker_1_exposure + ); + + // Check ErasStakersClipped + assert_eq!(::ErasStakersClipped::iter().count(), 2); + assert!(::ErasStakersClipped::iter().all(|exposure_clipped| { + let max = ::MaxNominatorRewardedPerValidator::get() as usize; + exposure_clipped.others.len() <= max + })); + assert_eq!( + ::ErasStakersClipped::get(current_era, old_staker_0), + old_staker_0_exposure + ); + assert_eq!( + ::ErasStakersClipped::get(current_era, old_staker_1), + old_staker_1_exposure + ); + + // Check ErasValidatorPrefs + assert_eq!(::ErasValidatorPrefs::iter().count(), 2); + assert_eq!( + ::ErasValidatorPrefs::get(current_era, old_staker_0), + Staking::validators(old_staker_0) + ); + assert_eq!( + ::ErasValidatorPrefs::get(current_era, old_staker_1), + Staking::validators(old_staker_1) + ); + + // Check ErasTotalStake + assert_eq!(::ErasTotalStake::iter().count(), 1); + assert_eq!( + ::ErasTotalStake::get(current_era), + old_staker_0_exposure.total + old_staker_1_exposure.total + ); + + // Check ErasRewardPoints + assert_eq!(::ErasRewardPoints::iter().count(), 1); + let mut individual = BTreeMap::new(); + if let Some(p) = old_era_points_earned_individual.get(0) { + individual.insert(old_staker_0, p.clone()); + } + if let Some(p) = old_era_points_earned_individual.get(1) { + individual.insert(old_staker_1, p.clone()); + } + assert_eq!( + ::ErasRewardPoints::get(current_era), + EraRewardPoints { + total: old_era_points_earned_total, + individual, + } + ); + + // Check ErasValidatorReward + assert_eq!(::ErasValidatorReward::iter().count(), 0); + }); + } } -- GitLab From 971cdc3e3b1050447205dd32f4e1fbf745ef5a0b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Silva?= Date: Mon, 9 Mar 2020 23:46:03 +0000 Subject: [PATCH 157/301] grandpa: improve handling of global gossip messages (#5133) * grandpa: only gossip commits to peers on the same set * grandpa: track commits uniquely by round and set * grandpa: fix communication test * grandpa: add tests for commit gossip handling * grandpa: add missing docs --- .../src/communication/gossip.rs | 238 +++++++++++++++--- .../finality-grandpa/src/communication/mod.rs | 11 +- .../src/communication/tests.rs | 22 +- 3 files changed, 237 insertions(+), 34 deletions(-) diff --git a/client/finality-grandpa/src/communication/gossip.rs b/client/finality-grandpa/src/communication/gossip.rs index 7fef47867f..77c3543aae 100644 --- a/client/finality-grandpa/src/communication/gossip.rs +++ b/client/finality-grandpa/src/communication/gossip.rs @@ -147,14 +147,6 @@ impl Default for View { } impl View { - /// Update the set ID. implies a reset to round 0. - fn update_set(&mut self, set_id: SetId) { - if set_id != self.set_id { - self.set_id = set_id; - self.round = Round(1); - } - } - /// Consider a round and set ID combination under a current view. fn consider_vote(&self, round: Round, set_id: SetId) -> Consider { // only from current set @@ -188,6 +180,39 @@ impl View { } } +/// A local view of protocol state. Only differs from `View` in that we also +/// track the round and set id at which the last commit was observed. +struct LocalView { + round: Round, + set_id: SetId, + last_commit: Option<(N, Round, SetId)>, +} + +impl LocalView { + /// Converts the local view to a `View` discarding round and set id + /// information about the last commit. + fn as_view(&self) -> View<&N> { + View { + round: self.round, + set_id: self.set_id, + last_commit: self.last_commit_height(), + } + } + + /// Update the set ID. implies a reset to round 1. + fn update_set(&mut self, set_id: SetId) { + if set_id != self.set_id { + self.set_id = set_id; + self.round = Round(1); + } + } + + /// Returns the height of the block that the last observed commit finalizes. + fn last_commit_height(&self) -> Option<&N> { + self.last_commit.as_ref().map(|(number, _, _)| number) + } +} + const KEEP_RECENT_ROUNDS: usize = 3; /// Tracks gossip topics that we are keeping messages for. We keep topics of: @@ -614,7 +639,7 @@ impl CatchUpConfig { } struct Inner { - local_view: Option>>, + local_view: Option>>, peers: Peers>, live_topics: KeepTopics, round_start: Instant, @@ -690,7 +715,7 @@ impl Inner { fn note_set(&mut self, set_id: SetId, authorities: Vec) -> MaybeMessage { { let local_view = match self.local_view { - ref mut x @ None => x.get_or_insert(View { + ref mut x @ None => x.get_or_insert(LocalView { round: Round(1), set_id, last_commit: None, @@ -710,12 +735,17 @@ impl Inner { } /// Note that we've imported a commit finalizing a given block. - fn note_commit_finalized(&mut self, finalized: NumberFor) -> MaybeMessage { + fn note_commit_finalized( + &mut self, + round: Round, + set_id: SetId, + finalized: NumberFor, + ) -> MaybeMessage { { match self.local_view { None => return None, - Some(ref mut v) => if v.last_commit.as_ref() < Some(&finalized) { - v.last_commit = Some(finalized); + Some(ref mut v) => if v.last_commit_height() < Some(&finalized) { + v.last_commit = Some((finalized, round, set_id)); } else { return None }, @@ -726,12 +756,16 @@ impl Inner { } fn consider_vote(&self, round: Round, set_id: SetId) -> Consider { - self.local_view.as_ref().map(|v| v.consider_vote(round, set_id)) + self.local_view.as_ref() + .map(LocalView::as_view) + .map(|v| v.consider_vote(round, set_id)) .unwrap_or(Consider::RejectOutOfScope) } fn consider_global(&self, set_id: SetId, number: NumberFor) -> Consider { - self.local_view.as_ref().map(|v| v.consider_global(set_id, number)) + self.local_view.as_ref() + .map(LocalView::as_view) + .map(|v| v.consider_global(set_id, &number)) .unwrap_or(Consider::RejectOutOfScope) } @@ -1012,7 +1046,7 @@ impl Inner { let packet = NeighborPacket { round: local_view.round, set_id: local_view.set_id, - commit_finalized_height: local_view.last_commit.unwrap_or(Zero::zero()), + commit_finalized_height: *local_view.last_commit_height().unwrap_or(&Zero::zero()), }; let peers = self.peers.inner.keys().cloned().collect(); @@ -1210,10 +1244,21 @@ impl GossipValidator { } /// Note that we've imported a commit finalizing a given block. - pub(super) fn note_commit_finalized(&self, finalized: NumberFor, send_neighbor: F) + pub(super) fn note_commit_finalized( + &self, + round: Round, + set_id: SetId, + finalized: NumberFor, + send_neighbor: F, + ) where F: FnOnce(Vec, NeighborPacket>) { - let maybe_msg = self.inner.write().note_commit_finalized(finalized); + let maybe_msg = self.inner.write().note_commit_finalized( + round, + set_id, + finalized, + ); + if let Some((to, msg)) = maybe_msg { send_neighbor(to, msg); } @@ -1289,7 +1334,7 @@ impl sc_network_gossip::Validator for GossipValidator sc_network_gossip::Validator for GossipValidator return false, // cannot evaluate until we have a local view. }; - let our_best_commit = local_view.last_commit; - let peer_best_commit = peer.view.last_commit; - match GossipMessage::::decode(&mut data) { Err(_) => false, Ok(GossipMessage::Commit(full)) => { - // we only broadcast our best commit and only if it's - // better than last received by peer. - Some(full.message.target_number) == our_best_commit && - Some(full.message.target_number) > peer_best_commit + // we only broadcast commit messages if they're for the same + // set the peer is in and if the commit is better than the + // last received by peer, additionally we make sure to only + // broadcast our best commit. + peer.view.consider_global(set_id, full.message.target_number) == Consider::Accept && + Some(&full.message.target_number) == local_view.last_commit_height() } Ok(GossipMessage::Neighbor(_)) => false, Ok(GossipMessage::CatchUpRequest(_)) => false, @@ -1432,12 +1476,17 @@ impl sc_network_gossip::Validator for GossipValidator::decode(&mut data) { Err(_) => true, - Ok(GossipMessage::Commit(full)) - => Some(full.message.target_number) != best_commit, + Ok(GossipMessage::Commit(full)) => match local_view.last_commit { + Some((number, round, set_id)) => + // we expire any commit message that doesn't target the same block + // as our best commit or isn't from the same round and set id + !(full.message.target_number == number && + full.round == round && + full.set_id == set_id), + None => true, + }, Ok(_) => true, } }) @@ -2306,4 +2355,133 @@ mod tests { } } } + + #[test] + fn only_gossip_commits_to_peers_on_same_set() { + let (val, _) = GossipValidator::::new(config(), voter_set_state()); + + // the validator start at set id 1 + val.note_set(SetId(1), Vec::new(), |_, _| {}); + + // add a new peer at set id 1 + let peer1 = PeerId::random(); + + val.inner + .write() + .peers + .new_peer(peer1.clone(), Roles::AUTHORITY); + + val.inner + .write() + .peers + .update_peer_state( + &peer1, + NeighborPacket { + round: Round(1), + set_id: SetId(1), + commit_finalized_height: 1, + }, + ) + .unwrap(); + + // peer2 will default to set id 0 + let peer2 = PeerId::random(); + val.inner + .write() + .peers + .new_peer(peer2.clone(), Roles::AUTHORITY); + + // create a commit for round 1 of set id 1 + // targeting a block at height 2 + let commit = { + let commit = finality_grandpa::CompactCommit { + target_hash: H256::random(), + target_number: 2, + precommits: Vec::new(), + auth_data: Vec::new(), + }; + + crate::communication::gossip::GossipMessage::::Commit( + crate::communication::gossip::FullCommitMessage { + round: Round(1), + set_id: SetId(1), + message: commit, + }, + ) + .encode() + }; + + // note the commit in the validator + val.note_commit_finalized(Round(1), SetId(1), 2, |_, _| {}); + + let mut message_allowed = val.message_allowed(); + + // the commit should be allowed to peer 1 + assert!(message_allowed( + &peer1, + MessageIntent::Broadcast, + &crate::communication::global_topic::(1), + &commit, + )); + + // but disallowed to peer 2 since the peer is on set id 0 + // the commit should be allowed to peer 1 + assert!(!message_allowed( + &peer2, + MessageIntent::Broadcast, + &crate::communication::global_topic::(1), + &commit, + )); + } + + #[test] + fn expire_commits_from_older_rounds() { + let (val, _) = GossipValidator::::new(config(), voter_set_state()); + + let commit = |round, set_id, target_number| { + let commit = finality_grandpa::CompactCommit { + target_hash: H256::random(), + target_number, + precommits: Vec::new(), + auth_data: Vec::new(), + }; + + crate::communication::gossip::GossipMessage::::Commit( + crate::communication::gossip::FullCommitMessage { + round: Round(round), + set_id: SetId(set_id), + message: commit, + }, + ) + .encode() + }; + + // note the beginning of a new set with id 1 + val.note_set(SetId(1), Vec::new(), |_, _| {}); + + // note a commit for round 1 in the validator + // finalizing a block at height 2 + val.note_commit_finalized(Round(1), SetId(1), 2, |_, _| {}); + + let mut message_expired = val.message_expired(); + + // a commit message for round 1 that finalizes the same height as we + // have observed previously should not be expired + assert!(!message_expired( + crate::communication::global_topic::(1), + &commit(1, 1, 2), + )); + + // it should be expired if it is for a lower block + assert!(message_expired( + crate::communication::global_topic::(1), + &commit(1, 1, 1), + )); + + // or the same block height but from the previous round + assert!(message_expired( + crate::communication::global_topic::(1), + &commit(0, 1, 2), + )); + } } diff --git a/client/finality-grandpa/src/communication/mod.rs b/client/finality-grandpa/src/communication/mod.rs index 7525c44f15..d496f305fc 100644 --- a/client/finality-grandpa/src/communication/mod.rs +++ b/client/finality-grandpa/src/communication/mod.rs @@ -497,7 +497,8 @@ fn incoming_global( return None; } - let round = msg.round.0; + let round = msg.round; + let set_id = msg.set_id; let commit = msg.message; let finalized_number = commit.target_number; let gossip_validator = gossip_validator.clone(); @@ -509,6 +510,8 @@ fn incoming_global( // any discrepancy between the actual ghost and the claimed // finalized number. gossip_validator.note_commit_finalized( + round, + set_id, finalized_number, |to, neighbor| neighbor_sender.send(to, neighbor), ); @@ -525,7 +528,7 @@ fn incoming_global( let cb = voter::Callback::Work(Box::new(cb)); - Some(voter::CommunicationIn::Commit(round, commit, cb)) + Some(voter::CommunicationIn::Commit(round.0, commit, cb)) }; let process_catch_up = move | @@ -1015,7 +1018,7 @@ impl Sink<(RoundNumber, Commit)> for CommitsOut { }; let message = GossipMessage::Commit(FullCommitMessage:: { - round: round, + round, set_id: self.set_id, message: compact_commit, }); @@ -1025,6 +1028,8 @@ impl Sink<(RoundNumber, Commit)> for CommitsOut { // the gossip validator needs to be made aware of the best commit-height we know of // before gossiping self.gossip_validator.note_commit_finalized( + round, + self.set_id, commit.target_number, |to, neighbor| self.neighbor_sender.send(to, neighbor), ); diff --git a/client/finality-grandpa/src/communication/tests.rs b/client/finality-grandpa/src/communication/tests.rs index 96761a2f3c..fb2c0f12f4 100644 --- a/client/finality-grandpa/src/communication/tests.rs +++ b/client/finality-grandpa/src/communication/tests.rs @@ -292,12 +292,32 @@ fn good_commit_leads_to_relay() { }); // Add a random peer which will be the recipient of this message + let receiver_id = sc_network::PeerId::random(); let _ = sender.unbounded_send(NetworkEvent::NotificationStreamOpened { - remote: sc_network::PeerId::random(), + remote: receiver_id.clone(), engine_id: GRANDPA_ENGINE_ID, roles: Roles::FULL, }); + // Announce its local set has being on the current set id through a neighbor + // packet, otherwise it won't be eligible to receive the commit + let _ = { + let update = gossip::VersionedNeighborPacket::V1( + gossip::NeighborPacket { + round: Round(round), + set_id: SetId(set_id), + commit_finalized_height: 1, + } + ); + + let msg = gossip::GossipMessage::::Neighbor(update); + + sender.unbounded_send(NetworkEvent::NotificationsReceived { + remote: receiver_id, + messages: vec![(GRANDPA_ENGINE_ID, msg.encode().into())], + }) + }; + true } _ => false, -- GitLab From 51ead38104df06ed1886dd348d18022dad40f5ab Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bastian=20K=C3=B6cher?= Date: Tue, 10 Mar 2020 10:44:56 +0100 Subject: [PATCH 158/301] Make sure to always run `wasm-builder` for the `HOST` architecture (#5199) --- utils/wasm-builder-runner/src/lib.rs | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/utils/wasm-builder-runner/src/lib.rs b/utils/wasm-builder-runner/src/lib.rs index 6366c1ce37..0e4b1421f8 100644 --- a/utils/wasm-builder-runner/src/lib.rs +++ b/utils/wasm-builder-runner/src/lib.rs @@ -428,6 +428,10 @@ fn run_project(project_folder: &Path) { cmd.arg("--release"); } + // Make sure we always run the `wasm-builder` project for the `HOST` architecture. + let host_triple = env::var("HOST").expect("`HOST` is always set when executing `build.rs`."); + cmd.arg(&format!("--target={}", host_triple)); + // Unset the `CARGO_TARGET_DIR` to prevent a cargo deadlock (cargo locks a target dir exclusive). // The runner project is created in `CARGO_TARGET_DIR` and executing it will create a sub target // directory inside of `CARGO_TARGET_DIR`. -- GitLab From 22f85eff6b025f954e42b23c06b9f01d4b2f3e7f Mon Sep 17 00:00:00 2001 From: Igor Matuszewski Date: Tue, 10 Mar 2020 10:45:10 +0100 Subject: [PATCH 159/301] Make sc-offchain tests more resilient on macOS (#5191) * offchain: Simplify bits of http code * offchain: Sort dev-dependencies * deps: Bump parity-multiaddr to 0.7.3 Fixes build failure when using: rustc 1.43.0-nightly (96bb8b31c 2020-03-05). * offchain: Raise FD limit for HTTP tests * offchain: Reword the comment on increasing the test fd limit --- Cargo.lock | 9 +++++---- client/offchain/Cargo.toml | 7 ++++--- client/offchain/src/api/http.rs | 12 ++++++++---- 3 files changed, 17 insertions(+), 11 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 32b2d0dc0f..6fb0b658b8 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2642,7 +2642,7 @@ dependencies = [ "libp2p-wasm-ext", "libp2p-websocket", "libp2p-yamux", - "parity-multiaddr 0.7.2", + "parity-multiaddr 0.7.3", "parity-multihash 0.2.3", "parking_lot 0.10.0", "pin-project", @@ -2666,7 +2666,7 @@ dependencies = [ "libsecp256k1", "log 0.4.8", "multistream-select", - "parity-multiaddr 0.7.2", + "parity-multiaddr 0.7.3", "parity-multihash 0.2.3", "parking_lot 0.10.0", "pin-project", @@ -4585,9 +4585,9 @@ dependencies = [ [[package]] name = "parity-multiaddr" -version = "0.7.2" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26df883298bc3f4e92528b4c5cc9f806b791955b136da3e5e939ed9de0fd958b" +checksum = "f77055f9e81921a8cc7bebeb6cded3d128931d51f1e3dd6251f0770a6d431477" dependencies = [ "arrayref", "bs58 0.3.0", @@ -6281,6 +6281,7 @@ version = "2.0.0-alpha.3" dependencies = [ "bytes 0.5.4", "env_logger 0.7.1", + "fdlimit", "fnv", "futures 0.3.4", "futures-timer 3.0.2", diff --git a/client/offchain/Cargo.toml b/client/offchain/Cargo.toml index 9ea0372969..e5c8e8228d 100644 --- a/client/offchain/Cargo.toml +++ b/client/offchain/Cargo.toml @@ -32,12 +32,13 @@ hyper = "0.13.2" hyper-rustls = "0.19" [dev-dependencies] -sc-client-db = { version = "0.8.0-alpha.2", default-features = true, path = "../db/" } env_logger = "0.7.0" -substrate-test-runtime-client = { version = "2.0.0-dev", path = "../../test-utils/runtime/client" } -tokio = "0.2" +fdlimit = "0.1" +sc-client-db = { version = "0.8.0-alpha.2", default-features = true, path = "../db/" } sc-transaction-pool = { version = "2.0.0-alpha.2", path = "../../client/transaction-pool" } sp-transaction-pool = { version = "2.0.0-alpha.2", path = "../../primitives/transaction-pool" } +substrate-test-runtime-client = { version = "2.0.0-dev", path = "../../test-utils/runtime/client" } +tokio = "0.2" [features] default = [] diff --git a/client/offchain/src/api/http.rs b/client/offchain/src/api/http.rs index 0483f84e2f..7923a767f1 100644 --- a/client/offchain/src/api/http.rs +++ b/client/offchain/src/api/http.rs @@ -304,7 +304,7 @@ impl HttpApi { let mut output = Vec::with_capacity(ids.len()); let mut must_wait_more = false; for id in ids { - output.push(match self.requests.get_mut(id) { + output.push(match self.requests.get(id) { None => HttpRequestStatus::Invalid, Some(HttpApiRequest::NotDispatched(_, _)) => unreachable!("we replaced all the NotDispatched with Dispatched earlier; qed"), @@ -322,10 +322,8 @@ impl HttpApi { // Are we ready to call `return`? let is_done = if let future::MaybeDone::Done(_) = deadline { true - } else if !must_wait_more { - true } else { - false + !must_wait_more }; if is_done { @@ -701,6 +699,12 @@ mod tests { let _ = tokio::runtime::Runtime::new().unwrap().block_on(future); } + // We spawn quite a bit of HTTP servers here due to how async API + // works for offchain workers, so be sure to raise the FD limit + // (particularly useful for macOS where the default soft limit may + // not be enough). + fdlimit::raise_fd_limit(); + let (api, worker) = http(); std::thread::spawn(move || tokio_run(worker)); -- GitLab From d771dfad511736bc3b6efbe8121dbe8bc05b5c76 Mon Sep 17 00:00:00 2001 From: Max Inden Date: Tue, 10 Mar 2020 11:12:32 +0100 Subject: [PATCH 160/301] client/service/src/builder.rs: Add build_info metric (#5192) * client/service/src/builder.rs: Add build_info metric Add static Prometheus metric exposing the chain name, the version and the commit. * client/service/src/builder.rs: Move node_role to static metrics The Prometheus metrics `node_role` is static and thus there is no need to keep a reference of it within `ServiceMetrics`. This follows the example of the `build_info` metric. * client/service/src/builder.rs: Adjust indentation --- client/service/src/builder.rs | 24 ++++++++++++++++++------ 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/client/service/src/builder.rs b/client/service/src/builder.rs index e49f568733..e4328a3403 100644 --- a/client/service/src/builder.rs +++ b/client/service/src/builder.rs @@ -61,7 +61,6 @@ struct ServiceMetrics { memory_usage_bytes: Gauge, cpu_usage_percentage: Gauge, network_per_sec_bytes: GaugeVec, - node_roles: Gauge, database_cache: Gauge, state_cache: Gauge, state_db: GaugeVec, @@ -87,9 +86,6 @@ impl ServiceMetrics { Opts::new("network_per_sec_bytes", "Networking bytes per second"), &["direction"] )?, registry)?, - node_roles: register(Gauge::new( - "node_roles", "The roles the node is running as", - )?, registry)?, database_cache: register(Gauge::new( "database_cache_bytes", "RocksDB cache size in bytes", )?, registry)?, @@ -1011,18 +1007,34 @@ ServiceBuilder< ); } - // Prometheus metrics + // Prometheus metrics. let metrics = if let Some(PrometheusConfig { port, registry }) = config.prometheus_config.clone() { + // Set static metrics. + register(Gauge::::with_opts( + Opts::new( + "build_info", + "A metric with a constant '1' value labeled by name, version, and commit." + ) + .const_label("name", config.impl_name) + .const_label("version", config.impl_version) + .const_label("commit", config.impl_commit), + )?, ®istry)?.set(1); + register(Gauge::::new( + "node_roles", "The roles the node is running as", + )?, ®istry)?.set(u64::from(config.roles.bits())); + let metrics = ServiceMetrics::register(®istry)?; - metrics.node_roles.set(u64::from(config.roles.bits())); + spawn_handle.spawn( "prometheus-endpoint", prometheus_endpoint::init_prometheus(port, registry).map(drop) ); + Some(metrics) } else { None }; + // Periodically notify the telemetry. let transaction_pool_ = transaction_pool.clone(); let client_ = client.clone(); -- GitLab From f1419b13faf90e14cc9ed85caf9054c4daa8c7cb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bastian=20K=C3=B6cher?= Date: Tue, 10 Mar 2020 11:13:20 +0100 Subject: [PATCH 161/301] Don't include `:code` by default in storage proofs (#5179) * Don't include `:code` by default in storage proofs (#5060) * Adds test to verify that the runtime currently is always contained in the proof * Start passing the runtime wasm code from the outside * Fix compilation * More build fixes * Make the test work as expected now :) * Last fixes * Fixes benchmarks * Review feedback * Apply suggestions from code review Co-Authored-By: Sergei Pepyakin * Review feedback * Fix compilation Co-authored-by: Sergei Pepyakin * Fix compilation and change the way `RuntimeCode` works * Fix tests * Switch to `Cow` Co-authored-by: Benjamin Kampmann Co-authored-by: Sergei Pepyakin --- Cargo.lock | 5 + bin/node/executor/Cargo.toml | 1 + bin/node/executor/benches/bench.rs | 21 +++- bin/node/executor/tests/common.rs | 13 ++- .../basic-authorship/src/basic_authorship.rs | 1 - client/block-builder/Cargo.toml | 4 + client/block-builder/src/lib.rs | 38 ++++++ client/executor/src/integration_tests/mod.rs | 2 + client/executor/src/lib.rs | 9 +- client/executor/src/native_executor.rs | 60 ++++++++-- client/executor/src/wasm_runtime.rs | 48 ++------ client/network/src/chain.rs | 7 +- .../src/protocol/light_client_handler.rs | 19 +-- client/network/src/protocol/light_dispatch.rs | 6 +- client/src/call_executor.rs | 85 ++++++++------ client/src/client.rs | 19 ++- client/src/genesis.rs | 14 +++ client/src/light/backend.rs | 4 +- client/src/light/call_executor.rs | 13 ++- client/src/light/fetcher.rs | 11 +- frame/system/benches/bench.rs | 2 +- frame/system/src/lib.rs | 1 + primitives/api/test/Cargo.toml | 1 + primitives/api/test/tests/runtime_calls.rs | 7 ++ primitives/core/src/traits.rs | 90 ++++++++++++++- primitives/externalities/src/lib.rs | 30 ----- primitives/io/src/lib.rs | 2 +- primitives/runtime-interface/test/src/lib.rs | 3 +- primitives/runtime/src/generic/block.rs | 11 +- primitives/state-machine/src/backend.rs | 43 ++++++- primitives/state-machine/src/basic.rs | 26 ----- primitives/state-machine/src/ext.rs | 68 ----------- primitives/state-machine/src/lib.rs | 65 +++++++++-- .../state-machine/src/proving_backend.rs | 100 +--------------- primitives/trie/src/lib.rs | 2 + primitives/trie/src/storage_proof.rs | 109 ++++++++++++++++++ test-utils/runtime/src/system.rs | 16 ++- utils/frame/benchmarking-cli/Cargo.toml | 1 + utils/frame/benchmarking-cli/src/lib.rs | 1 + 39 files changed, 596 insertions(+), 362 deletions(-) create mode 100644 primitives/trie/src/storage_proof.rs diff --git a/Cargo.lock b/Cargo.lock index 6fb0b658b8..5f6d9b41d0 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1470,6 +1470,7 @@ dependencies = [ "sc-executor", "sc-service", "sp-runtime", + "sp-state-machine", "structopt", ] @@ -3426,6 +3427,7 @@ dependencies = [ "sc-executor", "sp-application-crypto", "sp-core", + "sp-externalities", "sp-io", "sp-runtime", "sp-state-machine", @@ -5651,6 +5653,8 @@ dependencies = [ "sp-core", "sp-runtime", "sp-state-machine", + "sp-trie", + "substrate-test-runtime-client", ] [[package]] @@ -6964,6 +6968,7 @@ dependencies = [ "sp-api", "sp-blockchain", "sp-consensus", + "sp-core", "sp-runtime", "sp-state-machine", "sp-version", diff --git a/bin/node/executor/Cargo.toml b/bin/node/executor/Cargo.toml index c8ef75a5a2..a77efcf7f8 100644 --- a/bin/node/executor/Cargo.toml +++ b/bin/node/executor/Cargo.toml @@ -36,6 +36,7 @@ pallet-transaction-payment = { version = "2.0.0-alpha.2", path = "../../../frame pallet-treasury = { version = "2.0.0-alpha.2", path = "../../../frame/treasury" } sp-application-crypto = { version = "2.0.0-alpha.2", path = "../../../primitives/application-crypto" } sp-runtime = { version = "2.0.0-alpha.2", path = "../../../primitives/runtime" } +sp-externalities = { version = "0.8.0-alpha.3", path = "../../../primitives/externalities" } substrate-test-client = { version = "2.0.0-dev", path = "../../../test-utils/client" } wabt = "0.9.2" diff --git a/bin/node/executor/benches/bench.rs b/bin/node/executor/benches/bench.rs index ef0cdf445a..cb6b6a0916 100644 --- a/bin/node/executor/benches/bench.rs +++ b/bin/node/executor/benches/bench.rs @@ -25,8 +25,8 @@ use node_runtime::constants::currency::*; use node_testing::keyring::*; use sp_core::{NativeOrEncoded, NeverNativeValue}; use sp_core::storage::well_known_keys; -use sp_core::traits::CodeExecutor; -use frame_support::Hashable; +use sp_core::traits::{CodeExecutor, RuntimeCode}; +use frame_support::Hashable; use sp_state_machine::TestExternalities as CoreTestExternalities; use sc_executor::{NativeExecutor, RuntimeInfo, WasmExecutionMethod, Externalities}; use sp_runtime::traits::BlakeTwo256; @@ -90,9 +90,16 @@ fn construct_block( digest: Default::default(), }; + let runtime_code = RuntimeCode { + code_fetcher: &sp_core::traits::WrappedRuntimeCode(COMPACT_CODE.into()), + hash: vec![1, 2, 3], + heap_pages: None, + }; + // execute the block to get the real header. executor.call:: _>( ext, + &runtime_code, "Core_initialize_block", &header.encode(), true, @@ -102,6 +109,7 @@ fn construct_block( for i in extrinsics.iter() { executor.call:: _>( ext, + &runtime_code, "BlockBuilder_apply_extrinsic", &i.encode(), true, @@ -111,6 +119,7 @@ fn construct_block( let header = match executor.call:: _>( ext, + &runtime_code, "BlockBuilder_finalize_block", &[0u8;0], true, @@ -162,11 +171,16 @@ fn bench_execute_block(c: &mut Criterion) { ExecutionMethod::Wasm(wasm_method) => (false, *wasm_method), }; let executor = NativeExecutor::new(wasm_method, None); + let runtime_code = RuntimeCode { + code_fetcher: &sp_core::traits::WrappedRuntimeCode(COMPACT_CODE.into()), + hash: vec![1, 2, 3], + heap_pages: None, + }; // Get the runtime version to initialize the runtimes cache. { let mut test_ext = new_test_ext(&genesis_config); - executor.runtime_version(&mut test_ext.ext()).unwrap(); + executor.runtime_version(&mut test_ext.ext(), &runtime_code).unwrap(); } let blocks = test_blocks(&genesis_config, &executor); @@ -177,6 +191,7 @@ fn bench_execute_block(c: &mut Criterion) { for block in blocks.iter() { executor.call:: _>( &mut test_ext.ext(), + &runtime_code, "Core_execute_block", &block.0, use_native, diff --git a/bin/node/executor/tests/common.rs b/bin/node/executor/tests/common.rs index 34f3034208..d8ede1d7cd 100644 --- a/bin/node/executor/tests/common.rs +++ b/bin/node/executor/tests/common.rs @@ -17,7 +17,7 @@ use codec::{Encode, Decode}; use frame_support::Hashable; use sp_state_machine::TestExternalities as CoreTestExternalities; -use sp_core::{NeverNativeValue, NativeOrEncoded, traits::CodeExecutor}; +use sp_core::{NeverNativeValue, NativeOrEncoded, traits::{CodeExecutor, RuntimeCode}}; use sp_runtime::{ApplyExtrinsicResult, traits::{Header as HeaderT, BlakeTwo256}}; use sc_executor::{NativeExecutor, WasmExecutionMethod}; use sc_executor::error::Result; @@ -29,6 +29,7 @@ use node_runtime::{ }; use node_primitives::{Hash, BlockNumber}; use node_testing::keyring::*; +use sp_externalities::Externalities; /// The wasm runtime code. /// @@ -71,8 +72,18 @@ pub fn executor_call< native_call: Option, ) -> (Result>, bool) { let mut t = t.ext(); + + let code = t.storage(sp_core::storage::well_known_keys::CODE).unwrap(); + let heap_pages = t.storage(sp_core::storage::well_known_keys::HEAP_PAGES); + let runtime_code = RuntimeCode { + code_fetcher: &sp_core::traits::WrappedRuntimeCode(code.as_slice().into()), + hash: sp_core::blake2_256(&code).to_vec(), + heap_pages: heap_pages.and_then(|hp| Decode::decode(&mut &hp[..]).ok()), + }; + executor().call::( &mut t, + &runtime_code, method, data, use_native, diff --git a/client/basic-authorship/src/basic_authorship.rs b/client/basic-authorship/src/basic_authorship.rs index 9dfe1c33be..fc9a5dec06 100644 --- a/client/basic-authorship/src/basic_authorship.rs +++ b/client/basic-authorship/src/basic_authorship.rs @@ -471,4 +471,3 @@ mod tests { client.import(BlockOrigin::Own, block).unwrap(); } } - diff --git a/client/block-builder/Cargo.toml b/client/block-builder/Cargo.toml index 745669c033..dd4ebcb07f 100644 --- a/client/block-builder/Cargo.toml +++ b/client/block-builder/Cargo.toml @@ -19,3 +19,7 @@ sp-core = { version = "2.0.0-alpha.2", path = "../../primitives/core" } sp-block-builder = { version = "2.0.0-alpha.2", path = "../../primitives/block-builder" } sc-client-api = { version = "2.0.0-alpha.2", path = "../api" } codec = { package = "parity-scale-codec", version = "1.2.0", features = ["derive"] } + +[dev-dependencies] +substrate-test-runtime-client = { path = "../../test-utils/runtime/client" } +sp-trie = { version = "2.0.0-alpha.2", path = "../../primitives/trie" } diff --git a/client/block-builder/src/lib.rs b/client/block-builder/src/lib.rs index 6aaa8e9016..d0e9f85ff4 100644 --- a/client/block-builder/src/lib.rs +++ b/client/block-builder/src/lib.rs @@ -205,3 +205,41 @@ where }) } } + +#[cfg(test)] +mod tests { + use super::*; + use sp_blockchain::HeaderBackend; + use sp_core::Blake2Hasher; + use sp_state_machine::Backend; + use substrate_test_runtime_client::{DefaultTestClientBuilderExt, TestClientBuilderExt}; + + #[test] + fn block_building_storage_proof_does_not_include_runtime_by_default() { + let builder = substrate_test_runtime_client::TestClientBuilder::new(); + let backend = builder.backend(); + let client = builder.build(); + + let block = BlockBuilder::new( + &client, + client.info().best_hash, + client.info().best_number, + RecordProof::Yes, + Default::default(), + &*backend, + ).unwrap().build().unwrap(); + + let proof = block.proof.expect("Proof is build on request"); + + let backend = sp_state_machine::create_proof_check_backend::( + block.storage_changes.transaction_storage_root, + proof, + ).unwrap(); + + assert!( + backend.storage(&sp_core::storage::well_known_keys::CODE) + .unwrap_err() + .contains("Database missing expected key"), + ); + } +} diff --git a/client/executor/src/integration_tests/mod.rs b/client/executor/src/integration_tests/mod.rs index e787b229ec..28e18bdb00 100644 --- a/client/executor/src/integration_tests/mod.rs +++ b/client/executor/src/integration_tests/mod.rs @@ -49,6 +49,7 @@ fn call_in_wasm( ); executor.call_in_wasm( &WASM_BINARY[..], + None, function, call_data, ext, @@ -513,6 +514,7 @@ fn should_trap_when_heap_exhausted(wasm_method: WasmExecutionMethod) { ); executor.call_in_wasm( &WASM_BINARY[..], + None, "test_exhaust_heap", &[0], &mut ext.ext(), diff --git a/client/executor/src/lib.rs b/client/executor/src/lib.rs index 1c21026fd8..539c8e8203 100644 --- a/client/executor/src/lib.rs +++ b/client/executor/src/lib.rs @@ -52,8 +52,12 @@ pub trait RuntimeInfo { /// Native runtime information. fn native_version(&self) -> &NativeVersion; - /// Extract RuntimeVersion of given :code block - fn runtime_version(&self, ext: &mut dyn Externalities) -> error::Result; + /// Extract [`RuntimeVersion`](sp_version::RuntimeVersion) of the given `runtime_code`. + fn runtime_version( + &self, + ext: &mut dyn Externalities, + runtime_code: &sp_core::traits::RuntimeCode, + ) -> error::Result; } #[cfg(test)] @@ -77,6 +81,7 @@ mod tests { ); let res = executor.call_in_wasm( &WASM_BINARY[..], + None, "test_empty_return", &[], &mut ext, diff --git a/client/executor/src/native_executor.rs b/client/executor/src/native_executor.rs index dfc88d2ede..fb18528b60 100644 --- a/client/executor/src/native_executor.rs +++ b/client/executor/src/native_executor.rs @@ -16,11 +16,11 @@ use crate::{ RuntimeInfo, error::{Error, Result}, - wasm_runtime::{RuntimeCache, WasmExecutionMethod, CodeSource}, + wasm_runtime::{RuntimeCache, WasmExecutionMethod}, }; use sp_version::{NativeVersion, RuntimeVersion}; use codec::{Decode, Encode}; -use sp_core::{NativeOrEncoded, traits::{CodeExecutor, Externalities}}; +use sp_core::{NativeOrEncoded, traits::{CodeExecutor, Externalities, RuntimeCode}}; use log::trace; use std::{result, panic::{UnwindSafe, AssertUnwindSafe}, sync::Arc}; use sp_wasm_interface::{HostFunctions, Function}; @@ -111,7 +111,7 @@ impl WasmExecutor { } } - /// Execute the given closure `f` with the latest runtime (based on the `CODE` key in `ext`). + /// Execute the given closure `f` with the latest runtime (based on `runtime_code`). /// /// The closure `f` is expected to return `Err(_)` when there happened a `panic!` in native code /// while executing the runtime in Wasm. If a `panic!` occurred, the runtime is invalidated to @@ -124,9 +124,9 @@ impl WasmExecutor { /// runtime is invalidated on any `panic!` to prevent a poisoned state. `ext` is already /// implicitly handled as unwind safe, as we store it in a global variable while executing the /// native runtime. - fn with_instance<'c, R, F>( + fn with_instance( &self, - code: CodeSource<'c>, + runtime_code: &RuntimeCode, ext: &mut dyn Externalities, f: F, ) -> Result @@ -137,7 +137,7 @@ impl WasmExecutor { ) -> Result>, { match self.cache.with_instance( - code, + runtime_code, ext, self.method, self.default_heap_pages, @@ -158,17 +158,48 @@ impl WasmExecutor { impl sp_core::traits::CallInWasm for WasmExecutor { fn call_in_wasm( &self, - wasm_blob: &[u8], + wasm_code: &[u8], + code_hash: Option>, method: &str, call_data: &[u8], ext: &mut dyn Externalities, ) -> std::result::Result, String> { - self.with_instance(CodeSource::Custom(wasm_blob), ext, |instance, _, mut ext| { + if let Some(hash) = code_hash { + let code = RuntimeCode { + code_fetcher: &sp_core::traits::WrappedRuntimeCode(wasm_code.into()), + hash, + heap_pages: None, + }; + + self.with_instance(&code, ext, |instance, _, mut ext| { + with_externalities_safe( + &mut **ext, + move || instance.call(method, call_data), + ) + }).map_err(|e| e.to_string()) + } else { + let module = crate::wasm_runtime::create_wasm_runtime_with_code( + self.method, + self.default_heap_pages, + &wasm_code, + self.host_functions.to_vec(), + self.allow_missing_func_imports, + ) + .map_err(|e| format!("Failed to create module: {:?}", e))?; + + let instance = module.new_instance() + .map_err(|e| format!("Failed to create instance: {:?}", e))?; + + let instance = AssertUnwindSafe(instance); + let mut ext = AssertUnwindSafe(ext); + with_externalities_safe( &mut **ext, move || instance.call(method, call_data), ) - }).map_err(|e| e.to_string()) + .and_then(|r| r) + .map_err(|e| e.to_string()) + } } } @@ -220,8 +251,11 @@ impl RuntimeInfo for NativeExecutor { fn runtime_version( &self, ext: &mut dyn Externalities, + runtime_code: &RuntimeCode, ) -> Result { - self.wasm.with_instance(CodeSource::Externalities, ext, + self.wasm.with_instance( + runtime_code, + ext, |_instance, version, _ext| Ok(version.cloned().ok_or_else(|| Error::ApiError("Unknown version".into()))) ) @@ -237,6 +271,7 @@ impl CodeExecutor for NativeExecutor { >( &self, ext: &mut dyn Externalities, + runtime_code: &RuntimeCode, method: &str, data: &[u8], use_native: bool, @@ -244,7 +279,7 @@ impl CodeExecutor for NativeExecutor { ) -> (Result>, bool) { let mut used_native = false; let result = self.wasm.with_instance( - CodeSource::Externalities, + runtime_code, ext, |instance, onchain_version, mut ext| { let onchain_version = onchain_version.ok_or_else( @@ -324,11 +359,12 @@ impl sp_core::traits::CallInWasm for NativeExecutor< fn call_in_wasm( &self, wasm_blob: &[u8], + code_hash: Option>, method: &str, call_data: &[u8], ext: &mut dyn Externalities, ) -> std::result::Result, String> { - sp_core::traits::CallInWasm::call_in_wasm(&self.wasm, wasm_blob, method, call_data, ext) + self.wasm.call_in_wasm(wasm_blob, code_hash, method, call_data, ext) } } diff --git a/client/executor/src/wasm_runtime.rs b/client/executor/src/wasm_runtime.rs index 680bc4c458..09ed456e65 100644 --- a/client/executor/src/wasm_runtime.rs +++ b/client/executor/src/wasm_runtime.rs @@ -20,11 +20,10 @@ //! components of the runtime that are expensive to initialize. use std::sync::Arc; -use std::borrow::Cow; use crate::error::{Error, WasmError}; use parking_lot::{Mutex, RwLock}; use codec::Decode; -use sp_core::{storage::well_known_keys, traits::Externalities}; +use sp_core::traits::{Externalities, RuntimeCode, FetchRuntimeCode}; use sp_version::RuntimeVersion; use std::panic::AssertUnwindSafe; use sc_executor_common::wasm_runtime::{WasmModule, WasmInstance}; @@ -41,14 +40,6 @@ pub enum WasmExecutionMethod { Compiled, } -/// Executoed code origin. -pub enum CodeSource<'a> { - /// Take code from storage, - Externalities, - /// Use provided code, - Custom(&'a [u8]), -} - /// A Wasm runtime object along with its cached runtime version. struct VersionedRuntime { /// Runtime code hash. @@ -102,8 +93,7 @@ impl RuntimeCache { /// /// `code` - Provides external code or tells the executor to fetch it from storage. /// - /// `ext` - Externalities to use for the runtime. This is used for setting - /// up an initial runtime instance. + /// `runtime_code` - The runtime wasm code used setup the runtime. /// /// `default_heap_pages` - Number of 64KB pages to allocate for Wasm execution. /// @@ -124,7 +114,7 @@ impl RuntimeCache { /// identifier `memory` can be found in the runtime. pub fn with_instance<'c, R, F>( &self, - code: CodeSource<'c>, + runtime_code: &'c RuntimeCode<'c>, ext: &mut dyn Externalities, wasm_method: WasmExecutionMethod, default_heap_pages: u64, @@ -138,28 +128,14 @@ impl RuntimeCache { &mut dyn Externalities) -> Result, { - let (code_hash, heap_pages) = match &code { - CodeSource::Externalities => { - ( - ext - .original_storage_hash(well_known_keys::CODE) - .ok_or(Error::InvalidCode("`CODE` not found in storage.".into()))?, - ext - .storage(well_known_keys::HEAP_PAGES) - .and_then(|pages| u64::decode(&mut &pages[..]).ok()) - .unwrap_or(default_heap_pages), - ) - }, - CodeSource::Custom(code) => { - (sp_core::blake2_256(code).to_vec(), default_heap_pages) - } - }; + let code_hash = &runtime_code.hash; + let heap_pages = runtime_code.heap_pages.unwrap_or(default_heap_pages); let mut runtimes = self.runtimes.lock(); // this must be released prior to calling f let pos = runtimes.iter().position(|r| r.as_ref().map_or( false, |r| r.wasm_method == wasm_method && - r.code_hash == code_hash && + r.code_hash == *code_hash && r.heap_pages == heap_pages )); @@ -168,19 +144,11 @@ impl RuntimeCache { .clone() .expect("`position` only returns `Some` for entries that are `Some`"), None => { - let code = match code { - CodeSource::Externalities => { - Cow::Owned(ext.original_storage(well_known_keys::CODE) - .ok_or(WasmError::CodeNotFound)?) - } - CodeSource::Custom(code) => { - Cow::Borrowed(code) - } - }; + let code = runtime_code.fetch_runtime_code().ok_or(WasmError::CodeNotFound)?; let result = create_versioned_wasm_runtime( &code, - code_hash, + code_hash.clone(), ext, wasm_method, heap_pages, diff --git a/client/network/src/chain.rs b/client/network/src/chain.rs index 3c075ec881..12033e1d51 100644 --- a/client/network/src/chain.rs +++ b/client/network/src/chain.rs @@ -66,7 +66,12 @@ pub trait Client: Send + Sync { ) -> Result; /// Get method execution proof. - fn execution_proof(&self, block: &Block::Hash, method: &str, data: &[u8]) -> Result<(Vec, StorageProof), Error>; + fn execution_proof( + &self, + block: &Block::Hash, + method: &str, + data: &[u8], + ) -> Result<(Vec, StorageProof), Error>; /// Get key changes proof. fn key_changes_proof( diff --git a/client/network/src/protocol/light_client_handler.rs b/client/network/src/protocol/light_client_handler.rs index a141e134fc..af8fa89f51 100644 --- a/client/network/src/protocol/light_client_handler.rs +++ b/client/network/src/protocol/light_client_handler.rs @@ -254,13 +254,12 @@ where B: Block, { /// Construct a new light client handler. - pub fn new - ( cfg: Config - , chain: Arc> - , checker: Arc> - , peerset: sc_peerset::PeersetHandle - ) -> Self - { + pub fn new( + cfg: Config, + chain: Arc>, + checker: Arc>, + peerset: sc_peerset::PeersetHandle, + ) -> Self { LightClientHandler { config: cfg, chain, @@ -425,7 +424,8 @@ where log::trace!("remote call request from {} ({} at {:?})", peer, request.method, - request.block); + request.block, + ); let block = Decode::decode(&mut request.block.as_ref())?; @@ -436,7 +436,8 @@ where peer, request.method, request.block, - e); + e, + ); StorageProof::empty() } }; diff --git a/client/network/src/protocol/light_dispatch.rs b/client/network/src/protocol/light_dispatch.rs index b734fc91eb..8146172e15 100644 --- a/client/network/src/protocol/light_dispatch.rs +++ b/client/network/src/protocol/light_dispatch.rs @@ -750,7 +750,11 @@ pub mod tests { } } - fn check_execution_proof(&self, _: &RemoteCallRequest, _: StorageProof) -> ClientResult> { + fn check_execution_proof( + &self, + _: &RemoteCallRequest, + _: StorageProof, + ) -> ClientResult> { match self.ok { true => Ok(vec![42]), false => Err(ClientError::Backend("Test error".into())), diff --git a/client/src/call_executor.rs b/client/src/call_executor.rs index b5206d3c46..3fb6123640 100644 --- a/client/src/call_executor.rs +++ b/client/src/call_executor.rs @@ -81,6 +81,7 @@ where id, self.backend.changes_trie_storage() )?; let state = self.backend.state_at(*id)?; + let state_runtime_code = sp_state_machine::backend::BackendRuntimeCode::new(&state); let return_data = StateMachine::new( &state, changes_trie, @@ -89,6 +90,7 @@ where method, call_data, extensions.unwrap_or_default(), + &state_runtime_code.runtime_code()?, ).execute_using_consensus_failure_handler::<_, NeverNativeValue, fn() -> _>( strategy.get_manager(), None, @@ -135,42 +137,53 @@ where let mut storage_transaction_cache = storage_transaction_cache.map(|c| c.borrow_mut()); let mut state = self.backend.state_at(*at)?; + match recorder { - Some(recorder) => state.as_trie_backend() - .ok_or_else(|| - Box::new(sp_state_machine::ExecutionError::UnableToGenerateProof) - as Box + Some(recorder) => { + let trie_state = state.as_trie_backend() + .ok_or_else(|| + Box::new(sp_state_machine::ExecutionError::UnableToGenerateProof) as Box + )?; + + let state_runtime_code = sp_state_machine::backend::BackendRuntimeCode::new(&trie_state); + // It is important to extract the runtime code here before we create the proof + // recorder. + let runtime_code = state_runtime_code.runtime_code()?; + + let backend = sp_state_machine::ProvingBackend::new_with_recorder( + trie_state, + recorder.clone(), + ); + + StateMachine::new( + &backend, + changes_trie_state, + &mut *changes.borrow_mut(), + &self.executor, + method, + call_data, + extensions.unwrap_or_default(), + &runtime_code, + ) + // TODO: https://github.com/paritytech/substrate/issues/4455 + // .with_storage_transaction_cache(storage_transaction_cache.as_mut().map(|c| &mut **c)) + .execute_using_consensus_failure_handler(execution_manager, native_call) + }, + None => { + let state_runtime_code = sp_state_machine::backend::BackendRuntimeCode::new(&state); + StateMachine::new( + &state, + changes_trie_state, + &mut *changes.borrow_mut(), + &self.executor, + method, + call_data, + extensions.unwrap_or_default(), + &state_runtime_code.runtime_code()?, ) - .and_then(|trie_state| { - let backend = sp_state_machine::ProvingBackend::new_with_recorder( - trie_state, - recorder.clone(), - ); - - StateMachine::new( - &backend, - changes_trie_state, - &mut *changes.borrow_mut(), - &self.executor, - method, - call_data, - extensions.unwrap_or_default(), - ) - // TODO: https://github.com/paritytech/substrate/issues/4455 - // .with_storage_transaction_cache(storage_transaction_cache.as_mut().map(|c| &mut **c)) - .execute_using_consensus_failure_handler(execution_manager, native_call) - }), - None => StateMachine::new( - &state, - changes_trie_state, - &mut *changes.borrow_mut(), - &self.executor, - method, - call_data, - extensions.unwrap_or_default(), - ) - .with_storage_transaction_cache(storage_transaction_cache.as_mut().map(|c| &mut **c)) - .execute_using_consensus_failure_handler(execution_manager, native_call) + .with_storage_transaction_cache(storage_transaction_cache.as_mut().map(|c| &mut **c)) + .execute_using_consensus_failure_handler(execution_manager, native_call) + } }.map_err(Into::into) } @@ -189,7 +202,8 @@ where changes_trie_state, None, ); - self.executor.runtime_version(&mut ext) + let state_runtime_code = sp_state_machine::backend::BackendRuntimeCode::new(&state); + self.executor.runtime_version(&mut ext, &state_runtime_code.runtime_code()?) .map_err(|e| sp_blockchain::Error::VersionInvalid(format!("{:?}", e)).into()) } @@ -206,6 +220,7 @@ where &self.executor, method, call_data, + &sp_state_machine::backend::BackendRuntimeCode::new(trie_state).runtime_code()?, ) .map_err(Into::into) } diff --git a/client/src/client.rs b/client/src/client.rs index adfdfb4b63..ab5ea820ee 100644 --- a/client/src/client.rs +++ b/client/src/client.rs @@ -41,8 +41,7 @@ use sp_runtime::{ use sp_state_machine::{ DBValue, Backend as StateBackend, ChangesTrieAnchorBlockId, prove_read, prove_child_read, ChangesTrieRootsStorage, ChangesTrieStorage, - ChangesTrieConfigurationRange, key_changes, key_changes_proof, StorageProof, - merge_storage_proofs, + ChangesTrieConfigurationRange, key_changes, key_changes_proof, }; use sc_executor::{RuntimeVersion, RuntimeInfo}; use sp_consensus::{ @@ -55,6 +54,7 @@ use sp_blockchain::{self as blockchain, well_known_cache_keys::Id as CacheKeyId, HeaderMetadata, CachedHeaderMetadata, }; +use sp_trie::StorageProof; use sp_api::{ CallApiAt, ConstructRuntimeApi, Core as CoreApi, ApiExt, ApiRef, ProvideRuntimeApi, @@ -472,7 +472,7 @@ impl Client where Ok(()) }, ())?; - Ok(merge_storage_proofs(proofs)) + Ok(StorageProof::merge(proofs)) } /// Generates CHT-based proof for roots of changes tries at given blocks (that are part of single CHT). @@ -1140,9 +1140,20 @@ impl ProofProvider for Client where method: &str, call_data: &[u8] ) -> sp_blockchain::Result<(Vec, StorageProof)> { + // Make sure we include the `:code` and `:heap_pages` in the execution proof to be + // backwards compatible. + // + // TODO: Remove when solved: https://github.com/paritytech/substrate/issues/5047 + let code_proof = self.read_proof( + id, + &mut [well_known_keys::CODE, well_known_keys::HEAP_PAGES].iter().map(|v| *v), + )?; + let state = self.state_at(id)?; let header = self.prepare_environment_block(id)?; - prove_execution(state, header, &self.executor, method, call_data) + prove_execution(state, header, &self.executor, method, call_data).map(|(r, p)| { + (r, StorageProof::merge(vec![p, code_proof])) + }) } fn header_proof(&self, id: &BlockId) -> sp_blockchain::Result<(Block::Header, StorageProof)> { diff --git a/client/src/genesis.rs b/client/src/genesis.rs index 0eecc6cdae..6e55b5a42d 100644 --- a/client/src/genesis.rs +++ b/client/src/genesis.rs @@ -89,6 +89,8 @@ mod tests { }; let hash = header.hash(); let mut overlay = OverlayedChanges::default(); + let backend_runtime_code = sp_state_machine::backend::BackendRuntimeCode::new(&backend); + let runtime_code = backend_runtime_code.runtime_code().expect("Code is part of the backend"); StateMachine::new( backend, @@ -98,6 +100,7 @@ mod tests { "Core_initialize_block", &header.encode(), Default::default(), + &runtime_code, ).execute( ExecutionStrategy::NativeElseWasm, ).unwrap(); @@ -111,6 +114,7 @@ mod tests { "BlockBuilder_apply_extrinsic", &tx.encode(), Default::default(), + &runtime_code, ).execute( ExecutionStrategy::NativeElseWasm, ).unwrap(); @@ -124,6 +128,7 @@ mod tests { "BlockBuilder_finalize_block", &[], Default::default(), + &runtime_code, ).execute( ExecutionStrategy::NativeElseWasm, ).unwrap(); @@ -161,6 +166,8 @@ mod tests { let backend = InMemoryBackend::from(storage); let (b1data, _b1hash) = block1(genesis_hash, &backend); + let backend_runtime_code = sp_state_machine::backend::BackendRuntimeCode::new(&backend); + let runtime_code = backend_runtime_code.runtime_code().expect("Code is part of the backend"); let mut overlay = OverlayedChanges::default(); let _ = StateMachine::new( @@ -171,6 +178,7 @@ mod tests { "Core_execute_block", &b1data, Default::default(), + &runtime_code, ).execute( ExecutionStrategy::NativeElseWasm, ).unwrap(); @@ -189,6 +197,8 @@ mod tests { let backend = InMemoryBackend::from(storage); let (b1data, _b1hash) = block1(genesis_hash, &backend); + let backend_runtime_code = sp_state_machine::backend::BackendRuntimeCode::new(&backend); + let runtime_code = backend_runtime_code.runtime_code().expect("Code is part of the backend"); let mut overlay = OverlayedChanges::default(); let _ = StateMachine::new( @@ -199,6 +209,7 @@ mod tests { "Core_execute_block", &b1data, Default::default(), + &runtime_code, ).execute( ExecutionStrategy::AlwaysWasm, ).unwrap(); @@ -217,6 +228,8 @@ mod tests { let backend = InMemoryBackend::from(storage); let (b1data, _b1hash) = block1(genesis_hash, &backend); + let backend_runtime_code = sp_state_machine::backend::BackendRuntimeCode::new(&backend); + let runtime_code = backend_runtime_code.runtime_code().expect("Code is part of the backend"); let mut overlay = OverlayedChanges::default(); let r = StateMachine::new( @@ -227,6 +240,7 @@ mod tests { "Core_execute_block", &b1data, Default::default(), + &runtime_code, ).execute( ExecutionStrategy::NativeElseWasm, ); diff --git a/client/src/light/backend.rs b/client/src/light/backend.rs index 6b5f926300..749e24af04 100644 --- a/client/src/light/backend.rs +++ b/client/src/light/backend.rs @@ -172,9 +172,9 @@ impl ClientBackend for Backend> match maybe_val { Some(val) => self.blockchain.storage().insert_aux( &[(&key[..], &val[..])], - ::std::iter::empty(), + std::iter::empty(), )?, - None => self.blockchain.storage().insert_aux(::std::iter::empty(), &[&key[..]])?, + None => self.blockchain.storage().insert_aux(std::iter::empty(), &[&key[..]])?, } } } diff --git a/client/src/light/call_executor.rs b/client/src/light/call_executor.rs index cae5d5a0aa..2e1a820f7c 100644 --- a/client/src/light/call_executor.rs +++ b/client/src/light/call_executor.rs @@ -29,7 +29,6 @@ use sp_externalities::Extensions; use sp_state_machine::{ self, Backend as StateBackend, OverlayedChanges, ExecutionStrategy, create_proof_check_backend, execution_proof_check_on_trie_backend, ExecutionManager, StorageProof, - merge_storage_proofs, }; use hash_db::Hasher; @@ -206,7 +205,7 @@ pub fn prove_execution( method, call_data, )?; - let total_proof = merge_storage_proofs(vec![init_proof, exec_proof]); + let total_proof = StorageProof::merge(vec![init_proof, exec_proof]); Ok((result, total_proof)) } @@ -259,12 +258,18 @@ fn check_execution_proof_with_make_header( &trie_backend, &mut changes, executor, "Core_initialize_block", &next_header.encode(), + &runtime_code, )?; // execute method @@ -274,7 +279,9 @@ fn check_execution_proof_with_make_header> LightDataChecker { H::Out: Ord + codec::Codec, { // all the checks are sharing the same storage - let storage = create_proof_check_backend_storage(remote_roots_proof); + let storage = remote_roots_proof.into_memory_db(); // remote_roots.keys() are sorted => we can use this to group changes tries roots // that are belongs to the same CHT @@ -187,7 +187,8 @@ impl> LightDataChecker { local_cht_root, block, remote_changes_trie_root, - &proving_backend)?; + &proving_backend, + )?; // and return the storage to use in following checks storage = proving_backend.into_storage(); @@ -270,7 +271,7 @@ impl FetchChecker for LightDataChecker body: Vec ) -> ClientResult> { // TODO: #2621 - let extrinsics_root = HashFor::::ordered_trie_root( + let extrinsics_root = HashFor::::ordered_trie_root( body.iter().map(Encode::encode).collect(), ); if *request.header.extrinsics_root() == extrinsics_root { @@ -294,7 +295,7 @@ struct RootsStorage<'a, Number: AtLeast32Bit, Hash: 'a> { impl<'a, H, Number, Hash> ChangesTrieRootsStorage for RootsStorage<'a, Number, Hash> where H: Hasher, - Number: ::std::fmt::Display + ::std::hash::Hash + Clone + AtLeast32Bit + Encode + Decode + Send + Sync + 'static, + Number: std::fmt::Display + std::hash::Hash + Clone + AtLeast32Bit + Encode + Decode + Send + Sync + 'static, Hash: 'a + Send + Sync + Clone + AsRef<[u8]>, { fn build_anchor( diff --git a/frame/system/benches/bench.rs b/frame/system/benches/bench.rs index cfcaa6f64a..90a4ad1d34 100644 --- a/frame/system/benches/bench.rs +++ b/frame/system/benches/bench.rs @@ -18,7 +18,7 @@ use criterion::{Criterion, criterion_group, criterion_main, black_box}; use frame_system as system; use frame_support::{decl_module, decl_event, impl_outer_origin, impl_outer_event, weights::Weight}; use sp_core::H256; -use sp_runtime::{Perbill, PerThing, traits::{BlakeTwo256, IdentityLookup}, testing::Header}; +use sp_runtime::{Perbill, traits::{BlakeTwo256, IdentityLookup}, testing::Header}; mod module { use super::*; diff --git a/frame/system/src/lib.rs b/frame/system/src/lib.rs index bd9e61b51a..5f9928d78d 100644 --- a/frame/system/src/lib.rs +++ b/frame/system/src/lib.rs @@ -1925,6 +1925,7 @@ mod tests { fn call_in_wasm( &self, _: &[u8], + _: Option>, _: &str, _: &[u8], _: &mut dyn sp_externalities::Externalities, diff --git a/primitives/api/test/Cargo.toml b/primitives/api/test/Cargo.toml index 6d2207c178..3b41e28cf3 100644 --- a/primitives/api/test/Cargo.toml +++ b/primitives/api/test/Cargo.toml @@ -24,6 +24,7 @@ rustversion = "1.0.0" [dev-dependencies] criterion = "0.3.0" substrate-test-runtime-client = { version = "2.0.0-dev", path = "../../../test-utils/runtime/client" } +sp-core = { version = "2.0.0-alpha.1", path = "../../core" } [[bench]] name = "bench" diff --git a/primitives/api/test/tests/runtime_calls.rs b/primitives/api/test/tests/runtime_calls.rs index 18beaad917..7859202845 100644 --- a/primitives/api/test/tests/runtime_calls.rs +++ b/primitives/api/test/tests/runtime_calls.rs @@ -164,6 +164,12 @@ fn record_proof_works() { let block_id = BlockId::Number(client.chain_info().best_number); let storage_root = longest_chain.best_chain().unwrap().state_root().clone(); + let runtime_code = sp_core::traits::RuntimeCode { + code_fetcher: &sp_core::traits::WrappedRuntimeCode(client.code_at(&block_id).unwrap().into()), + hash: vec![1], + heap_pages: None, + }; + let transaction = Transfer { amount: 1000, nonce: 0, @@ -192,5 +198,6 @@ fn record_proof_works() { &executor, "Core_execute_block", &block.encode(), + &runtime_code, ).expect("Executes block while using the proof backend"); } diff --git a/primitives/core/src/traits.rs b/primitives/core/src/traits.rs index e86a0234bf..83cbebd7d6 100644 --- a/primitives/core/src/traits.rs +++ b/primitives/core/src/traits.rs @@ -19,9 +19,7 @@ use crate::{crypto::KeyTypeId, ed25519, sr25519}; use std::{ - fmt::{Debug, Display}, - panic::UnwindSafe, - sync::Arc, + fmt::{Debug, Display}, panic::UnwindSafe, sync::Arc, borrow::Cow, }; pub use sp_externalities::{Externalities, ExternalitiesExt}; @@ -97,6 +95,7 @@ pub trait CodeExecutor: Sized + Send + Sync + CallInWasm + Clone + 'static { >( &self, ext: &mut dyn Externalities, + runtime_code: &RuntimeCode, method: &str, data: &[u8], use_native: bool, @@ -104,15 +103,98 @@ pub trait CodeExecutor: Sized + Send + Sync + CallInWasm + Clone + 'static { ) -> (Result, Self::Error>, bool); } +/// Something that can fetch the runtime `:code`. +pub trait FetchRuntimeCode { + /// Fetch the runtime `:code`. + /// + /// If the `:code` could not be found/not available, `None` should be returned. + fn fetch_runtime_code<'a>(&'a self) -> Option>; +} + +/// Wrapper to use a `u8` slice or `Vec` as [`FetchRuntimeCode`]. +pub struct WrappedRuntimeCode<'a>(pub std::borrow::Cow<'a, [u8]>); + +impl<'a> FetchRuntimeCode for WrappedRuntimeCode<'a> { + fn fetch_runtime_code<'b>(&'b self) -> Option> { + Some(self.0.as_ref().into()) + } +} + +/// Type that implements [`FetchRuntimeCode`] and always returns `None`. +pub struct NoneFetchRuntimeCode; + +impl FetchRuntimeCode for NoneFetchRuntimeCode { + fn fetch_runtime_code<'a>(&'a self) -> Option> { + None + } +} + +/// The Wasm code of a Substrate runtime. +#[derive(Clone)] +pub struct RuntimeCode<'a> { + /// The code fetcher that can be used to lazily fetch the code. + pub code_fetcher: &'a dyn FetchRuntimeCode, + /// The optional heap pages this `code` should be executed with. + /// + /// If `None` are given, the default value of the executor will be used. + pub heap_pages: Option, + /// The SCALE encoded hash of `code`. + /// + /// The hashing algorithm isn't that important, as long as all runtime + /// code instances use the same. + pub hash: Vec, +} + +impl<'a> PartialEq for RuntimeCode<'a> { + fn eq(&self, other: &Self) -> bool { + self.hash == other.hash + } +} + +impl<'a> RuntimeCode<'a> { + /// Create an empty instance. + /// + /// This is only useful for tests that don't want to execute any code. + pub fn empty() -> Self { + Self { + code_fetcher: &NoneFetchRuntimeCode, + hash: Vec::new(), + heap_pages: None, + } + } +} + +impl<'a> FetchRuntimeCode for RuntimeCode<'a> { + fn fetch_runtime_code<'b>(&'b self) -> Option> { + self.code_fetcher.fetch_runtime_code() + } +} + +/// Could not find the `:code` in the externalities while initializing the [`RuntimeCode`]. +#[derive(Debug)] +pub struct CodeNotFound; + +impl std::fmt::Display for CodeNotFound { + fn fmt(&self, f: &mut std::fmt::Formatter) -> Result<(), std::fmt::Error> { + write!(f, "the storage entry `:code` doesn't have any code") + } +} + /// Something that can call a method in a WASM blob. pub trait CallInWasm: Send + Sync { /// Call the given `method` in the given `wasm_blob` using `call_data` (SCALE encoded arguments) /// to decode the arguments for the method. /// /// Returns the SCALE encoded return value of the method. + /// + /// # Note + /// + /// If `code_hash` is `Some(_)` the `wasm_code` module and instance will be cached internally, + /// otherwise it is thrown away after the call. fn call_in_wasm( &self, - wasm_blob: &[u8], + wasm_code: &[u8], + code_hash: Option>, method: &str, call_data: &[u8], ext: &mut dyn Externalities, diff --git a/primitives/externalities/src/lib.rs b/primitives/externalities/src/lib.rs index fa0f9e4454..6fbd239b89 100644 --- a/primitives/externalities/src/lib.rs +++ b/primitives/externalities/src/lib.rs @@ -52,36 +52,6 @@ pub trait Externalities: ExtensionStore { key: &[u8], ) -> Option>; - /// Read original runtime storage, ignoring any overlayed changes. - fn original_storage(&self, key: &[u8]) -> Option>; - - /// Read original runtime child storage, ignoring any overlayed changes. - /// - /// Returns an `Option` that holds the SCALE encoded hash. - fn original_child_storage( - &self, - storage_key: ChildStorageKey, - child_info: ChildInfo, - key: &[u8], - ) -> Option>; - - /// Get original storage value hash, ignoring any overlayed changes. - /// This may be optimized for large values. - /// - /// Returns an `Option` that holds the SCALE encoded hash. - fn original_storage_hash(&self, key: &[u8]) -> Option>; - - /// Get original child storage value hash, ignoring any overlayed changes. - /// This may be optimized for large values. - /// - /// Returns an `Option` that holds the SCALE encoded hash. - fn original_child_storage_hash( - &self, - storage_key: ChildStorageKey, - child_info: ChildInfo, - key: &[u8], - ) -> Option>; - /// Read child runtime storage. /// /// Returns an `Option` that holds the SCALE encoded hash. diff --git a/primitives/io/src/lib.rs b/primitives/io/src/lib.rs index 4b520a240a..2702be0207 100644 --- a/primitives/io/src/lib.rs +++ b/primitives/io/src/lib.rs @@ -366,7 +366,7 @@ pub trait Misc { self.extension::() .expect("No `CallInWasmExt` associated for the current context!") - .call_in_wasm(wasm, "Core_version", &[], &mut ext) + .call_in_wasm(wasm, None, "Core_version", &[], &mut ext) .ok() } } diff --git a/primitives/runtime-interface/test/src/lib.rs b/primitives/runtime-interface/test/src/lib.rs index 014a46e9d7..43eb9a80a6 100644 --- a/primitives/runtime-interface/test/src/lib.rs +++ b/primitives/runtime-interface/test/src/lib.rs @@ -40,6 +40,7 @@ fn call_wasm_method(method: &str) -> TestExternalities { ); executor.call_in_wasm( &WASM_BINARY[..], + None, method, &[], &mut ext_ext, @@ -88,7 +89,7 @@ fn test_return_input_public_key() { #[test] #[should_panic( - expected = "\"Instantiation: Export ext_test_api_return_input_version_1 not found\"" + expected = "Instantiation: Export ext_test_api_return_input_version_1 not found" )] fn host_function_not_found() { call_wasm_method::<()>("test_return_data"); diff --git a/primitives/runtime/src/generic/block.rs b/primitives/runtime/src/generic/block.rs index a46396dce0..fb07d6c215 100644 --- a/primitives/runtime/src/generic/block.rs +++ b/primitives/runtime/src/generic/block.rs @@ -25,7 +25,10 @@ use serde::{Deserialize, Serialize}; use sp_std::prelude::*; use sp_core::RuntimeDebug; use crate::codec::{Codec, Encode, Decode}; -use crate::traits::{self, Member, Block as BlockT, Header as HeaderT, MaybeSerialize, MaybeMallocSizeOf}; +use crate::traits::{ + self, Member, Block as BlockT, Header as HeaderT, MaybeSerialize, MaybeMallocSizeOf, + NumberFor, +}; use crate::Justification; /// Something to identify a block. @@ -35,9 +38,9 @@ use crate::Justification; #[cfg_attr(feature = "std", serde(deny_unknown_fields))] pub enum BlockId { /// Identify by block header hash. - Hash(<::Header as HeaderT>::Hash), + Hash(Block::Hash), /// Identify by block number. - Number(<::Header as HeaderT>::Number), + Number(NumberFor), } impl BlockId { @@ -47,7 +50,7 @@ impl BlockId { } /// Create a block ID from a number. - pub fn number(number: ::Number) -> Self { + pub fn number(number: NumberFor) -> Self { BlockId::Number(number) } } diff --git a/primitives/state-machine/src/backend.rs b/primitives/state-machine/src/backend.rs index ca6612a5e9..4fb59556e3 100644 --- a/primitives/state-machine/src/backend.rs +++ b/primitives/state-machine/src/backend.rs @@ -18,9 +18,9 @@ use log::warn; use hash_db::Hasher; -use codec::Encode; +use codec::{Decode, Encode}; -use sp_core::storage::{ChildInfo, OwnedChildInfo}; +use sp_core::{traits::RuntimeCode, storage::{ChildInfo, OwnedChildInfo, well_known_keys}}; use sp_trie::{TrieMut, MemoryDB, trie_types::TrieDBMut}; use crate::{ @@ -359,3 +359,42 @@ pub(crate) fn insert_into_memory_db(mdb: &mut MemoryDB, input: I) -> Op Some(root) } + +/// Wrapper to create a [`RuntimeCode`] from a type that implements [`Backend`]. +pub struct BackendRuntimeCode<'a, B, H> { + backend: &'a B, + _marker: std::marker::PhantomData, +} + +impl<'a, B: Backend, H: Hasher> sp_core::traits::FetchRuntimeCode for + BackendRuntimeCode<'a, B, H> +{ + fn fetch_runtime_code<'b>(&'b self) -> Option> { + self.backend.storage(well_known_keys::CODE).ok().flatten().map(Into::into) + } +} + +impl<'a, B: Backend, H: Hasher> BackendRuntimeCode<'a, B, H> where H::Out: Encode { + /// Create a new instance. + pub fn new(backend: &'a B) -> Self { + Self { + backend, + _marker: std::marker::PhantomData, + } + } + + /// Return the [`RuntimeCode`] build from the wrapped `backend`. + pub fn runtime_code(&self) -> Result { + let hash = self.backend.storage_hash(well_known_keys::CODE) + .ok() + .flatten() + .ok_or("`:code` hash not found")? + .encode(); + let heap_pages = self.backend.storage(well_known_keys::HEAP_PAGES) + .ok() + .flatten() + .and_then(|d| Decode::decode(&mut &d[..]).ok()); + + Ok(RuntimeCode { code_fetcher: self, hash, heap_pages }) + } +} diff --git a/primitives/state-machine/src/basic.rs b/primitives/state-machine/src/basic.rs index 7252ae10e9..819244050b 100644 --- a/primitives/state-machine/src/basic.rs +++ b/primitives/state-machine/src/basic.rs @@ -119,14 +119,6 @@ impl Externalities for BasicExternalities { self.storage(key).map(|v| Blake2Hasher::hash(&v).encode()) } - fn original_storage(&self, key: &[u8]) -> Option { - self.storage(key) - } - - fn original_storage_hash(&self, key: &[u8]) -> Option> { - self.storage_hash(key) - } - fn child_storage( &self, storage_key: ChildStorageKey, @@ -145,24 +137,6 @@ impl Externalities for BasicExternalities { self.child_storage(storage_key, child_info, key).map(|v| Blake2Hasher::hash(&v).encode()) } - fn original_child_storage_hash( - &self, - storage_key: ChildStorageKey, - child_info: ChildInfo, - key: &[u8], - ) -> Option> { - self.child_storage_hash(storage_key, child_info, key) - } - - fn original_child_storage( - &self, - storage_key: ChildStorageKey, - child_info: ChildInfo, - key: &[u8], - ) -> Option { - Externalities::child_storage(self, storage_key, child_info, key) - } - fn next_storage_key(&self, key: &[u8]) -> Option { let range = (Bound::Excluded(key), Bound::Unbounded); self.inner.top.range::<[u8], _>(range).next().map(|(k, _)| k).cloned() diff --git a/primitives/state-machine/src/ext.rs b/primitives/state-machine/src/ext.rs index 53156cb186..bbb25355a8 100644 --- a/primitives/state-machine/src/ext.rs +++ b/primitives/state-machine/src/ext.rs @@ -179,30 +179,6 @@ where result.map(|r| r.encode()) } - fn original_storage(&self, key: &[u8]) -> Option { - let _guard = sp_panic_handler::AbortGuard::force_abort(); - let result = self.backend.storage(key).expect(EXT_NOT_ALLOWED_TO_FAIL); - - trace!(target: "state-trace", "{:04x}: GetOriginal {}={:?}", - self.id, - HexDisplay::from(&key), - result.as_ref().map(HexDisplay::from) - ); - result - } - - fn original_storage_hash(&self, key: &[u8]) -> Option> { - let _guard = sp_panic_handler::AbortGuard::force_abort(); - let result = self.backend.storage_hash(key).expect(EXT_NOT_ALLOWED_TO_FAIL); - - trace!(target: "state-trace", "{:04x}: GetOriginalHash {}={:?}", - self.id, - HexDisplay::from(&key), - result, - ); - result.map(|r| r.encode()) - } - fn child_storage( &self, storage_key: ChildStorageKey, @@ -253,47 +229,6 @@ where result.map(|r| r.encode()) } - fn original_child_storage( - &self, - storage_key: ChildStorageKey, - child_info: ChildInfo, - key: &[u8], - ) -> Option { - let _guard = sp_panic_handler::AbortGuard::force_abort(); - let result = self.backend - .child_storage(storage_key.as_ref(), child_info, key) - .expect(EXT_NOT_ALLOWED_TO_FAIL); - - trace!(target: "state-trace", "{:04x}: ChildOriginal({}) {}={:?}", - self.id, - HexDisplay::from(&storage_key.as_ref()), - HexDisplay::from(&key), - result.as_ref().map(HexDisplay::from), - ); - - result - } - - fn original_child_storage_hash( - &self, - storage_key: ChildStorageKey, - child_info: ChildInfo, - key: &[u8], - ) -> Option> { - let _guard = sp_panic_handler::AbortGuard::force_abort(); - let result = self.backend - .child_storage_hash(storage_key.as_ref(), child_info, key) - .expect(EXT_NOT_ALLOWED_TO_FAIL); - - trace!(target: "state-trace", "{}: ChildHashOriginal({}) {}={:?}", - self.id, - HexDisplay::from(&storage_key.as_ref()), - HexDisplay::from(&key), - result, - ); - result.map(|r| r.encode()) - } - fn exists_storage(&self, key: &[u8]) -> bool { let _guard = sp_panic_handler::AbortGuard::force_abort(); let result = match self.overlay.storage(key) { @@ -820,21 +755,18 @@ mod tests { let ext = TestExt::new(&mut overlay, &mut cache, &backend, None, None); assert_eq!(ext.child_storage(child(), CHILD_INFO_1, &[10]), Some(vec![10])); - assert_eq!(ext.original_child_storage(child(), CHILD_INFO_1, &[10]), Some(vec![10])); assert_eq!( ext.child_storage_hash(child(), CHILD_INFO_1, &[10]), Some(Blake2Hasher::hash(&[10]).as_ref().to_vec()), ); assert_eq!(ext.child_storage(child(), CHILD_INFO_1, &[20]), None); - assert_eq!(ext.original_child_storage(child(), CHILD_INFO_1, &[20]), Some(vec![20])); assert_eq!( ext.child_storage_hash(child(), CHILD_INFO_1, &[20]), None, ); assert_eq!(ext.child_storage(child(), CHILD_INFO_1, &[30]), Some(vec![31])); - assert_eq!(ext.original_child_storage(child(), CHILD_INFO_1, &[30]), Some(vec![40])); assert_eq!( ext.child_storage_hash(child(), CHILD_INFO_1, &[30]), Some(Blake2Hasher::hash(&[31]).as_ref().to_vec()), diff --git a/primitives/state-machine/src/lib.rs b/primitives/state-machine/src/lib.rs index ff41237c83..4d80ee37c9 100644 --- a/primitives/state-machine/src/lib.rs +++ b/primitives/state-machine/src/lib.rs @@ -23,8 +23,8 @@ use log::{warn, trace}; use hash_db::Hasher; use codec::{Decode, Encode, Codec}; use sp_core::{ - storage::ChildInfo, NativeOrEncoded, NeverNativeValue, - traits::{CodeExecutor, CallInWasmExt}, hexdisplay::HexDisplay, + storage::ChildInfo, NativeOrEncoded, NeverNativeValue, hexdisplay::HexDisplay, + traits::{CodeExecutor, CallInWasmExt, RuntimeCode}, }; use overlayed_changes::OverlayedChangeSet; use sp_externalities::Extensions; @@ -42,7 +42,7 @@ mod trie_backend; mod trie_backend_essence; mod stats; -pub use sp_trie::{trie_types::{Layout, TrieDBMut}, TrieMut, DBValue, MemoryDB}; +pub use sp_trie::{trie_types::{Layout, TrieDBMut}, StorageProof, TrieMut, DBValue, MemoryDB}; pub use testing::TestExternalities; pub use basic::BasicExternalities; pub use ext::Ext; @@ -67,8 +67,7 @@ pub use overlayed_changes::{ StorageCollection, ChildStorageCollection, }; pub use proving_backend::{ - create_proof_check_backend, create_proof_check_backend_storage, merge_storage_proofs, - ProofRecorder, ProvingBackend, ProvingBackendRecorder, StorageProof, + create_proof_check_backend, ProofRecorder, ProvingBackend, ProvingBackendRecorder, }; pub use trie_backend_essence::{TrieBackendStorage, Storage}; pub use trie_backend::TrieBackend; @@ -191,6 +190,7 @@ pub struct StateMachine<'a, B, H, N, Exec> changes_trie_state: Option>, _marker: PhantomData<(H, N)>, storage_transaction_cache: Option<&'a mut StorageTransactionCache>, + runtime_code: &'a RuntimeCode<'a>, } impl<'a, B, H, N, Exec> StateMachine<'a, B, H, N, Exec> where @@ -209,6 +209,7 @@ impl<'a, B, H, N, Exec> StateMachine<'a, B, H, N, Exec> where method: &'a str, call_data: &'a [u8], mut extensions: Extensions, + runtime_code: &'a RuntimeCode, ) -> Self { extensions.register(CallInWasmExt::new(exec.clone())); @@ -222,6 +223,7 @@ impl<'a, B, H, N, Exec> StateMachine<'a, B, H, N, Exec> where changes_trie_state, _marker: PhantomData, storage_transaction_cache: None, + runtime_code, } } @@ -292,6 +294,7 @@ impl<'a, B, H, N, Exec> StateMachine<'a, B, H, N, Exec> where let (result, was_native) = self.exec.call( &mut ext, + self.runtime_code, self.method, self.call_data, use_native, @@ -436,6 +439,7 @@ pub fn prove_execution( exec: &Exec, method: &str, call_data: &[u8], + runtime_code: &RuntimeCode, ) -> Result<(Vec, StorageProof), Box> where B: Backend, @@ -446,7 +450,14 @@ where { let trie_backend = backend.as_trie_backend() .ok_or_else(|| Box::new(ExecutionError::UnableToGenerateProof) as Box)?; - prove_execution_on_trie_backend::<_, _, N, _>(trie_backend, overlay, exec, method, call_data) + prove_execution_on_trie_backend::<_, _, N, _>( + trie_backend, + overlay, + exec, + method, + call_data, + runtime_code, + ) } /// Prove execution using the given trie backend, overlayed changes, and call executor. @@ -464,6 +475,7 @@ pub fn prove_execution_on_trie_backend( exec: &Exec, method: &str, call_data: &[u8], + runtime_code: &RuntimeCode, ) -> Result<(Vec, StorageProof), Box> where S: trie_backend_essence::TrieBackendStorage, @@ -474,7 +486,14 @@ where { let proving_backend = proving_backend::ProvingBackend::new(trie_backend); let mut sm = StateMachine::<_, H, N, Exec>::new( - &proving_backend, None, overlay, exec, method, call_data, Extensions::default(), + &proving_backend, + None, + overlay, + exec, + method, + call_data, + Extensions::default(), + runtime_code, ); let result = sm.execute_using_consensus_failure_handler::<_, NeverNativeValue, fn() -> _>( @@ -493,6 +512,7 @@ pub fn execution_proof_check( exec: &Exec, method: &str, call_data: &[u8], + runtime_code: &RuntimeCode, ) -> Result, Box> where H: Hasher, @@ -501,7 +521,14 @@ where N: crate::changes_trie::BlockNumber, { let trie_backend = create_proof_check_backend::(root.into(), proof)?; - execution_proof_check_on_trie_backend::<_, N, _>(&trie_backend, overlay, exec, method, call_data) + execution_proof_check_on_trie_backend::<_, N, _>( + &trie_backend, + overlay, + exec, + method, + call_data, + runtime_code, + ) } /// Check execution proof on proving backend, generated by `prove_execution` call. @@ -511,6 +538,7 @@ pub fn execution_proof_check_on_trie_backend( exec: &Exec, method: &str, call_data: &[u8], + runtime_code: &RuntimeCode, ) -> Result, Box> where H: Hasher, @@ -519,7 +547,14 @@ where N: crate::changes_trie::BlockNumber, { let mut sm = StateMachine::<_, H, N, Exec>::new( - trie_backend, None, overlay, exec, method, call_data, Extensions::default(), + trie_backend, + None, + overlay, + exec, + method, + call_data, + Extensions::default(), + runtime_code, ); sm.execute_using_consensus_failure_handler::<_, NeverNativeValue, fn() -> _>( @@ -692,7 +727,7 @@ mod tests { use super::*; use super::ext::Ext; use super::changes_trie::Configuration as ChangesTrieConfig; - use sp_core::{map, traits::Externalities, storage::ChildStorageKey}; + use sp_core::{map, traits::{Externalities, RuntimeCode}, storage::ChildStorageKey}; use sp_runtime::traits::BlakeTwo256; #[derive(Clone)] @@ -714,6 +749,7 @@ mod tests { >( &self, ext: &mut dyn Externalities, + _: &RuntimeCode, _method: &str, _data: &[u8], use_native: bool, @@ -755,6 +791,7 @@ mod tests { fn call_in_wasm( &self, _: &[u8], + _: Option>, _: &str, _: &[u8], _: &mut dyn Externalities, @@ -767,6 +804,7 @@ mod tests { fn execute_works() { let backend = trie_backend::tests::test_trie(); let mut overlayed_changes = Default::default(); + let wasm_code = RuntimeCode::empty(); let mut state_machine = StateMachine::new( &backend, @@ -781,6 +819,7 @@ mod tests { "test", &[], Default::default(), + &wasm_code, ); assert_eq!( @@ -794,6 +833,7 @@ mod tests { fn execute_works_with_native_else_wasm() { let backend = trie_backend::tests::test_trie(); let mut overlayed_changes = Default::default(); + let wasm_code = RuntimeCode::empty(); let mut state_machine = StateMachine::new( &backend, @@ -808,6 +848,7 @@ mod tests { "test", &[], Default::default(), + &wasm_code, ); assert_eq!(state_machine.execute(ExecutionStrategy::NativeElseWasm).unwrap(), vec![66]); @@ -818,6 +859,7 @@ mod tests { let mut consensus_failed = false; let backend = trie_backend::tests::test_trie(); let mut overlayed_changes = Default::default(); + let wasm_code = RuntimeCode::empty(); let mut state_machine = StateMachine::new( &backend, @@ -832,6 +874,7 @@ mod tests { "test", &[], Default::default(), + &wasm_code, ); assert!( @@ -864,6 +907,7 @@ mod tests { &executor, "test", &[], + &RuntimeCode::empty(), ).unwrap(); // check proof locally @@ -874,6 +918,7 @@ mod tests { &executor, "test", &[], + &RuntimeCode::empty(), ).unwrap(); // check that both results are correct diff --git a/primitives/state-machine/src/proving_backend.rs b/primitives/state-machine/src/proving_backend.rs index 7b6e8e0e69..119fb59a72 100644 --- a/primitives/state-machine/src/proving_backend.rs +++ b/primitives/state-machine/src/proving_backend.rs @@ -18,19 +18,19 @@ use std::sync::Arc; use parking_lot::RwLock; -use codec::{Decode, Encode, Codec}; +use codec::{Decode, Codec}; use log::debug; use hash_db::{Hasher, HashDB, EMPTY_PREFIX, Prefix}; use sp_trie::{ MemoryDB, default_child_trie_root, read_trie_value_with, read_child_trie_value_with, - record_all_keys + record_all_keys, StorageProof, }; pub use sp_trie::Recorder; pub use sp_trie::trie_types::{Layout, TrieError}; use crate::trie_backend::TrieBackend; use crate::trie_backend_essence::{Ephemeral, TrieBackendEssence, TrieBackendStorage}; use crate::{Error, ExecutionError, Backend}; -use std::collections::{HashMap, HashSet}; +use std::collections::HashMap; use crate::DBValue; use sp_core::storage::ChildInfo; @@ -40,82 +40,6 @@ pub struct ProvingBackendRecorder<'a, S: 'a + TrieBackendStorage, H: 'a + Has pub(crate) proof_recorder: &'a mut Recorder, } -/// A proof that some set of key-value pairs are included in the storage trie. The proof contains -/// the storage values so that the partial storage backend can be reconstructed by a verifier that -/// does not already have access to the key-value pairs. -/// -/// The proof consists of the set of serialized nodes in the storage trie accessed when looking up -/// the keys covered by the proof. Verifying the proof requires constructing the partial trie from -/// the serialized nodes and performing the key lookups. -#[derive(Debug, PartialEq, Eq, Clone, Encode, Decode)] -pub struct StorageProof { - trie_nodes: Vec>, -} - -impl StorageProof { - /// Constructs a storage proof from a subset of encoded trie nodes in a storage backend. - pub fn new(trie_nodes: Vec>) -> Self { - StorageProof { trie_nodes } - } - - /// Returns a new empty proof. - /// - /// An empty proof is capable of only proving trivial statements (ie. that an empty set of - /// key-value pairs exist in storage). - pub fn empty() -> Self { - StorageProof { - trie_nodes: Vec::new(), - } - } - - /// Returns whether this is an empty proof. - pub fn is_empty(&self) -> bool { - self.trie_nodes.is_empty() - } - - /// Create an iterator over trie nodes constructed from the proof. The nodes are not guaranteed - /// to be traversed in any particular order. - pub fn iter_nodes(self) -> StorageProofNodeIterator { - StorageProofNodeIterator::new(self) - } -} - -/// An iterator over trie nodes constructed from a storage proof. The nodes are not guaranteed to -/// be traversed in any particular order. -pub struct StorageProofNodeIterator { - inner: > as IntoIterator>::IntoIter, -} - -impl StorageProofNodeIterator { - fn new(proof: StorageProof) -> Self { - StorageProofNodeIterator { - inner: proof.trie_nodes.into_iter(), - } - } -} - -impl Iterator for StorageProofNodeIterator { - type Item = Vec; - - fn next(&mut self) -> Option { - self.inner.next() - } -} - -/// Merges multiple storage proofs covering potentially different sets of keys into one proof -/// covering all keys. The merged proof output may be smaller than the aggregate size of the input -/// proofs due to deduplication of trie nodes. -pub fn merge_storage_proofs(proofs: I) -> StorageProof - where I: IntoIterator -{ - let trie_nodes = proofs.into_iter() - .flat_map(|proof| proof.iter_nodes()) - .collect::>() - .into_iter() - .collect(); - StorageProof { trie_nodes } -} - impl<'a, S, H> ProvingBackendRecorder<'a, S, H> where S: TrieBackendStorage, @@ -222,7 +146,7 @@ impl<'a, S: 'a + TrieBackendStorage, H: 'a + Hasher> ProvingBackend<'a, S, H> let root = essence.root().clone(); let recorder = ProofRecorderBackend { backend: essence.backend_storage(), - proof_recorder: proof_recorder, + proof_recorder, }; ProvingBackend(TrieBackend::new(recorder, root)) } @@ -370,7 +294,7 @@ where H: Hasher, H::Out: Codec, { - let db = create_proof_check_backend_storage(proof); + let db = proof.into_memory_db(); if db.contains(&root, EMPTY_PREFIX) { Ok(TrieBackend::new(db, root)) @@ -379,20 +303,6 @@ where } } -/// Create in-memory storage of proof check backend. -pub fn create_proof_check_backend_storage( - proof: StorageProof, -) -> MemoryDB -where - H: Hasher, -{ - let mut db = MemoryDB::default(); - for item in proof.iter_nodes() { - db.insert(EMPTY_PREFIX, &item); - } - db -} - #[cfg(test)] mod tests { use crate::InMemoryBackend; diff --git a/primitives/trie/src/lib.rs b/primitives/trie/src/lib.rs index f6131c8ed5..80570a9792 100644 --- a/primitives/trie/src/lib.rs +++ b/primitives/trie/src/lib.rs @@ -21,6 +21,7 @@ mod error; mod node_header; mod node_codec; +mod storage_proof; mod trie_stream; use sp_std::boxed::Box; @@ -35,6 +36,7 @@ pub use error::Error; pub use trie_stream::TrieStream; /// The Substrate format implementation of `NodeCodec`. pub use node_codec::NodeCodec; +pub use storage_proof::StorageProof; /// Various re-exports from the `trie-db` crate. pub use trie_db::{ Trie, TrieMut, DBValue, Recorder, CError, Query, TrieLayout, TrieConfiguration, nibble_ops, TrieDBIterator, diff --git a/primitives/trie/src/storage_proof.rs b/primitives/trie/src/storage_proof.rs new file mode 100644 index 0000000000..254adc2fcb --- /dev/null +++ b/primitives/trie/src/storage_proof.rs @@ -0,0 +1,109 @@ +// Copyright 2020 Parity Technologies (UK) Ltd. +// This file is part of Substrate. + +// Parity is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Parity is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Parity. If not, see . + +use sp_std::vec::Vec; +use codec::{Encode, Decode}; +use hash_db::{Hasher, HashDB}; + +/// A proof that some set of key-value pairs are included in the storage trie. The proof contains +/// the storage values so that the partial storage backend can be reconstructed by a verifier that +/// does not already have access to the key-value pairs. +/// +/// The proof consists of the set of serialized nodes in the storage trie accessed when looking up +/// the keys covered by the proof. Verifying the proof requires constructing the partial trie from +/// the serialized nodes and performing the key lookups. +#[derive(Debug, PartialEq, Eq, Clone, Encode, Decode)] +pub struct StorageProof { + trie_nodes: Vec>, +} + +impl StorageProof { + /// Constructs a storage proof from a subset of encoded trie nodes in a storage backend. + pub fn new(trie_nodes: Vec>) -> Self { + StorageProof { trie_nodes } + } + + /// Returns a new empty proof. + /// + /// An empty proof is capable of only proving trivial statements (ie. that an empty set of + /// key-value pairs exist in storage). + pub fn empty() -> Self { + StorageProof { + trie_nodes: Vec::new(), + } + } + + /// Returns whether this is an empty proof. + pub fn is_empty(&self) -> bool { + self.trie_nodes.is_empty() + } + + /// Create an iterator over trie nodes constructed from the proof. The nodes are not guaranteed + /// to be traversed in any particular order. + pub fn iter_nodes(self) -> StorageProofNodeIterator { + StorageProofNodeIterator::new(self) + } + + /// Creates a `MemoryDB` from `Self`. + pub fn into_memory_db(self) -> crate::MemoryDB { + self.into() + } + + /// Merges multiple storage proofs covering potentially different sets of keys into one proof + /// covering all keys. The merged proof output may be smaller than the aggregate size of the input + /// proofs due to deduplication of trie nodes. + pub fn merge(proofs: I) -> Self where I: IntoIterator { + let trie_nodes = proofs.into_iter() + .flat_map(|proof| proof.iter_nodes()) + .collect::>() + .into_iter() + .collect(); + + Self { trie_nodes } + } +} + +/// An iterator over trie nodes constructed from a storage proof. The nodes are not guaranteed to +/// be traversed in any particular order. +pub struct StorageProofNodeIterator { + inner: > as IntoIterator>::IntoIter, +} + +impl StorageProofNodeIterator { + fn new(proof: StorageProof) -> Self { + StorageProofNodeIterator { + inner: proof.trie_nodes.into_iter(), + } + } +} + +impl Iterator for StorageProofNodeIterator { + type Item = Vec; + + fn next(&mut self) -> Option { + self.inner.next() + } +} + +impl From for crate::MemoryDB { + fn from(proof: StorageProof) -> Self { + let mut db = crate::MemoryDB::default(); + for item in proof.iter_nodes() { + db.insert(crate::EMPTY_PREFIX, &item); + } + db + } +} diff --git a/test-utils/runtime/src/system.rs b/test-utils/runtime/src/system.rs index 1e29f789dc..296dd76480 100644 --- a/test-utils/runtime/src/system.rs +++ b/test-utils/runtime/src/system.rs @@ -342,7 +342,7 @@ mod tests { use sp_io::TestExternalities; use substrate_test_runtime_client::{AccountKeyring, Sr25519Keyring}; use crate::{Header, Transfer, WASM_BINARY}; - use sp_core::{NeverNativeValue, map, traits::CodeExecutor}; + use sp_core::{NeverNativeValue, map, traits::{CodeExecutor, RuntimeCode}}; use sc_executor::{NativeExecutor, WasmExecutionMethod, native_executor_instance}; use sp_io::hashing::twox_128; @@ -405,8 +405,15 @@ mod tests { fn block_import_works_wasm() { block_import_works(|b, ext| { let mut ext = ext.ext(); + let runtime_code = RuntimeCode { + code_fetcher: &sp_core::traits::WrappedRuntimeCode(WASM_BINARY.into()), + hash: Vec::new(), + heap_pages: None, + }; + executor().call:: _>( &mut ext, + &runtime_code, "Core_execute_block", &b.encode(), false, @@ -498,8 +505,15 @@ mod tests { fn block_import_with_transaction_works_wasm() { block_import_with_transaction_works(|b, ext| { let mut ext = ext.ext(); + let runtime_code = RuntimeCode { + code_fetcher: &sp_core::traits::WrappedRuntimeCode(WASM_BINARY.into()), + hash: Vec::new(), + heap_pages: None, + }; + executor().call:: _>( &mut ext, + &runtime_code, "Core_execute_block", &b.encode(), false, diff --git a/utils/frame/benchmarking-cli/Cargo.toml b/utils/frame/benchmarking-cli/Cargo.toml index 93c62c3f96..89143ee9fe 100644 --- a/utils/frame/benchmarking-cli/Cargo.toml +++ b/utils/frame/benchmarking-cli/Cargo.toml @@ -16,5 +16,6 @@ sc-client = { version = "0.8.0-alpha.2", path = "../../../client" } sc-client-db = { version = "0.8.0-alpha.2", path = "../../../client/db" } sc-executor = { version = "0.8.0-alpha.2", path = "../../../client/executor" } sp-runtime = { version = "2.0.0-alpha.2", path = "../../../primitives/runtime" } +sp-state-machine = { version = "0.8.0-alpha.2", path = "../../../primitives/state-machine" } structopt = "0.3.8" codec = { version = "1.2.0", package = "parity-scale-codec" } diff --git a/utils/frame/benchmarking-cli/src/lib.rs b/utils/frame/benchmarking-cli/src/lib.rs index 899419e5de..02c530abc1 100644 --- a/utils/frame/benchmarking-cli/src/lib.rs +++ b/utils/frame/benchmarking-cli/src/lib.rs @@ -121,6 +121,7 @@ impl BenchmarkCmd { self.repeat, ).encode(), Default::default(), + &sp_state_machine::backend::BackendRuntimeCode::new(&state).runtime_code()?, ) .execute(strategy.into()) .map_err(|e| format!("Error executing runtime benchmark: {:?}", e))?; -- GitLab From a184db4ed958a683efdc13c54a143b5c1607a045 Mon Sep 17 00:00:00 2001 From: Ashley Date: Tue, 10 Mar 2020 11:14:20 +0100 Subject: [PATCH 162/301] Use libp2p's implementation of a wasm websocket transport (#5089) * Update to libp2p 0.16.2 * Use libp2ps implementation of a wasm websocket transport * Remove explicit Configuration type in node-cli Co-authored-by: Pierre Krieger --- Cargo.lock | 2 +- bin/node/cli/browser-demo/index.html | 3 +- bin/node/cli/browser-demo/ws.js | 148 --------------------------- bin/node/cli/src/browser.rs | 11 +- utils/browser/Cargo.toml | 2 +- utils/browser/src/lib.rs | 12 +-- 6 files changed, 13 insertions(+), 165 deletions(-) delete mode 100644 bin/node/cli/browser-demo/ws.js diff --git a/Cargo.lock b/Cargo.lock index 5f6d9b41d0..59627e2cd7 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -7656,7 +7656,7 @@ dependencies = [ "futures-timer 3.0.2", "js-sys", "kvdb-web", - "libp2p", + "libp2p-wasm-ext", "log 0.4.8", "rand 0.6.5", "rand 0.7.3", diff --git a/bin/node/cli/browser-demo/index.html b/bin/node/cli/browser-demo/index.html index f40863c46e..60acfde39f 100644 --- a/bin/node/cli/browser-demo/index.html +++ b/bin/node/cli/browser-demo/index.html @@ -6,7 +6,6 @@